summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--FLOSSE (renamed from xsd/FLOSSE)0
-rw-r--r--GPLv2 (renamed from libxsd-frontend/GPLv2)0
-rw-r--r--LICENSE28
-rw-r--r--NEWS1271
-rw-r--r--PACKAGE-README.md66
-rw-r--r--README86
-rw-r--r--README.md12
-rw-r--r--build-0.3/abspath.make18
-rw-r--r--build-0.3/bootstrap.make385
-rw-r--r--build-0.3/c/c-d.make9
-rw-r--r--build-0.3/c/c-o.make10
-rw-r--r--build-0.3/c/configuration-rules.make18
-rw-r--r--build-0.3/c/configuration-static.make12
-rw-r--r--build-0.3/c/configuration.make43
-rwxr-xr-xbuild-0.3/c/configure165
-rw-r--r--build-0.3/c/cpp-options.make35
-rw-r--r--build-0.3/c/generic/c-d.make18
-rw-r--r--build-0.3/c/generic/c-o.make39
-rw-r--r--build-0.3/c/generic/configuration-rules.make14
-rw-r--r--build-0.3/c/generic/configuration-sl-rules.make14
-rw-r--r--build-0.3/c/generic/configuration-sl.make20
-rw-r--r--build-0.3/c/generic/configuration.make21
-rwxr-xr-xbuild-0.3/c/generic/configure27
-rwxr-xr-xbuild-0.3/c/generic/configure-sl36
-rw-r--r--build-0.3/c/generic/o-e.make27
-rw-r--r--build-0.3/c/generic/o-l.make63
-rw-r--r--build-0.3/c/gnu/c-d.make58
-rw-r--r--build-0.3/c/gnu/c-o.make41
-rw-r--r--build-0.3/c/gnu/configuration-rules.make15
-rw-r--r--build-0.3/c/gnu/configuration-static.make3
-rw-r--r--build-0.3/c/gnu/configuration.make33
-rwxr-xr-xbuild-0.3/c/gnu/configure85
-rwxr-xr-xbuild-0.3/c/gnu/dep57
-rw-r--r--build-0.3/c/gnu/o-e.make39
-rw-r--r--build-0.3/c/gnu/o-l.make92
-rw-r--r--build-0.3/c/intel/c-d.make58
-rw-r--r--build-0.3/c/intel/c-o.make40
-rw-r--r--build-0.3/c/intel/configuration-rules.make15
-rw-r--r--build-0.3/c/intel/configuration-static.make3
-rw-r--r--build-0.3/c/intel/configuration.make33
-rwxr-xr-xbuild-0.3/c/intel/configure57
-rwxr-xr-xbuild-0.3/c/intel/dep57
-rw-r--r--build-0.3/c/intel/o-e.make38
-rw-r--r--build-0.3/c/intel/o-l.make70
-rw-r--r--build-0.3/c/o-e.make9
-rw-r--r--build-0.3/c/o-l.make10
-rw-r--r--build-0.3/clean.make16
-rw-r--r--build-0.3/configuration-static.make8
-rw-r--r--build-0.3/cxx/configuration-rules.make18
-rw-r--r--build-0.3/cxx/configuration-static.make14
-rw-r--r--build-0.3/cxx/configuration.make44
-rwxr-xr-xbuild-0.3/cxx/configure166
-rw-r--r--build-0.3/cxx/cxx-d.make9
-rw-r--r--build-0.3/cxx/cxx-o.make9
-rw-r--r--build-0.3/cxx/generic/configuration-rules.make14
-rw-r--r--build-0.3/cxx/generic/configuration-sl-rules.make14
-rw-r--r--build-0.3/cxx/generic/configuration-sl.make20
-rw-r--r--build-0.3/cxx/generic/configuration.make21
-rwxr-xr-xbuild-0.3/cxx/generic/configure27
-rwxr-xr-xbuild-0.3/cxx/generic/configure-sl36
-rw-r--r--build-0.3/cxx/generic/cxx-d.make18
-rw-r--r--build-0.3/cxx/generic/cxx-o.make39
-rw-r--r--build-0.3/cxx/generic/o-e.make27
-rw-r--r--build-0.3/cxx/generic/o-l.make66
-rw-r--r--build-0.3/cxx/gnu/configuration-rules.make15
-rw-r--r--build-0.3/cxx/gnu/configuration-static.make3
-rw-r--r--build-0.3/cxx/gnu/configuration.make33
-rwxr-xr-xbuild-0.3/cxx/gnu/configure98
-rw-r--r--build-0.3/cxx/gnu/cxx-d.make58
-rw-r--r--build-0.3/cxx/gnu/cxx-o.make40
-rw-r--r--build-0.3/cxx/gnu/o-e.make38
-rw-r--r--build-0.3/cxx/gnu/o-l.make93
-rw-r--r--build-0.3/cxx/intel/configuration-rules.make15
-rw-r--r--build-0.3/cxx/intel/configuration-static.make3
-rw-r--r--build-0.3/cxx/intel/configuration.make33
-rwxr-xr-xbuild-0.3/cxx/intel/configure70
-rw-r--r--build-0.3/cxx/intel/cxx-d.make58
-rw-r--r--build-0.3/cxx/intel/cxx-o.make40
-rw-r--r--build-0.3/cxx/intel/o-e.make38
-rw-r--r--build-0.3/cxx/intel/o-l.make71
-rw-r--r--build-0.3/cxx/o-e.make9
-rw-r--r--build-0.3/cxx/o-l.make10
-rw-r--r--build-0.3/cxx/standard.make35
-rw-r--r--build-0.3/dialog.bash248
-rw-r--r--build-0.3/dir.make8
-rw-r--r--build-0.3/dist.make5
-rw-r--r--build-0.3/dist/functions.make75
-rw-r--r--build-0.3/frame.make103
-rw-r--r--build-0.3/generator90
-rwxr-xr-xbuild-0.3/git/gitignore12
-rw-r--r--build-0.3/git/gitignore.make10
-rw-r--r--build-0.3/import.make74
-rw-r--r--build-0.3/install.make6
-rw-r--r--build-0.3/install/configuration.make45
-rwxr-xr-xbuild-0.3/install/install21
-rw-r--r--build-0.3/install/install-functions.make37
-rwxr-xr-xbuild-0.3/install/install-sh519
-rw-r--r--build-0.3/ld/configuration-lib-rules.make15
-rw-r--r--build-0.3/ld/configuration-lib-static.make9
-rw-r--r--build-0.3/ld/configuration-lib.make41
-rwxr-xr-xbuild-0.3/ld/configure-lib50
-rw-r--r--build-0.3/literals.make13
-rw-r--r--build-0.3/m4/m4.make50
-rw-r--r--build-0.3/message.make31
-rwxr-xr-xbuild-0.3/meta/autoconf84
-rw-r--r--build-0.3/meta/autoconf-functions.make23
-rw-r--r--build-0.3/meta/autoconf.m421
-rw-r--r--build-0.3/meta/autoconf.make5
-rwxr-xr-xbuild-0.3/meta/automake64
-rw-r--r--build-0.3/meta/automake-functions.make23
-rw-r--r--build-0.3/meta/automake.m421
-rw-r--r--build-0.3/meta/automake.make5
-rw-r--r--build-0.3/meta/common.m4113
-rwxr-xr-xbuild-0.3/meta/vc10proj79
-rw-r--r--build-0.3/meta/vc10proj-functions.make27
-rw-r--r--build-0.3/meta/vc10proj.m4127
-rw-r--r--build-0.3/meta/vc10proj.make5
-rw-r--r--build-0.3/meta/vc10sln-functions.make29
-rw-r--r--build-0.3/meta/vc10sln.make5
-rw-r--r--build-0.3/meta/vc11proj-functions.make27
-rw-r--r--build-0.3/meta/vc11proj.make5
-rw-r--r--build-0.3/meta/vc11sln-functions.make29
-rw-r--r--build-0.3/meta/vc11sln.make5
-rw-r--r--build-0.3/meta/vc12proj-functions.make27
-rw-r--r--build-0.3/meta/vc12proj.make5
-rw-r--r--build-0.3/meta/vc12sln-functions.make29
-rw-r--r--build-0.3/meta/vc12sln.make5
-rw-r--r--build-0.3/meta/vc8proj-functions.make27
-rw-r--r--build-0.3/meta/vc8proj.make5
-rw-r--r--build-0.3/meta/vc8sln-functions.make29
-rw-r--r--build-0.3/meta/vc8sln.make5
-rwxr-xr-xbuild-0.3/meta/vc9proj75
-rw-r--r--build-0.3/meta/vc9proj-functions.make27
-rw-r--r--build-0.3/meta/vc9proj.m4103
-rw-r--r--build-0.3/meta/vc9proj.make5
-rw-r--r--build-0.3/meta/vc9sln-functions.make29
-rw-r--r--build-0.3/meta/vc9sln.make5
-rwxr-xr-xbuild-0.3/meta/vcsln181
-rw-r--r--build-0.3/meta/vcsln.m482
-rwxr-xr-xbuild-0.3/meta/vctest143
-rw-r--r--build-0.3/meta/vctest-functions.make28
-rw-r--r--build-0.3/meta/vctest.m417
-rw-r--r--build-0.3/meta/vctest.make5
-rw-r--r--build-0.3/meta/windows-common.m449
-rwxr-xr-xbuild-0.3/run-if-arg17
-rw-r--r--build-0.3/system.make13
-rwxr-xr-xbuild-0.3/system/config.guess1494
-rwxr-xr-xbuild-0.3/system/config.sub1700
-rw-r--r--build-0.3/system/configuration-rules.make23
-rwxr-xr-xbuild-0.3/system/configure137
-rw-r--r--build/bootstrap.build10
-rw-r--r--build/export.build9
-rw-r--r--build/root.build37
-rw-r--r--buildfile11
-rw-r--r--doc/buildfile293
-rw-r--r--doc/custom-literals.xsd (renamed from xsd/doc/custom-literals.xsd)0
-rw-r--r--doc/cxx/parser/guide/figure-1.png (renamed from xsd/doc/cxx/parser/guide/figure-1.png)bin34195 -> 34195 bytes
-rw-r--r--doc/cxx/parser/guide/figure-1.svg (renamed from xsd/doc/cxx/parser/guide/figure-1.svg)0
-rw-r--r--doc/cxx/parser/guide/guide.html2ps.in65
-rw-r--r--doc/cxx/parser/guide/index.xhtml4163
-rw-r--r--doc/cxx/parser/guide/index.xhtml.in4163
-rw-r--r--doc/cxx/tree/guide/guide.html2ps.in65
-rw-r--r--doc/cxx/tree/guide/index.xhtml2736
-rw-r--r--doc/cxx/tree/guide/index.xhtml.in2736
-rw-r--r--doc/cxx/tree/manual/index.xhtml6826
-rw-r--r--doc/cxx/tree/manual/index.xhtml.in6826
-rw-r--r--doc/cxx/tree/manual/manual.html2ps.in66
-rw-r--r--doc/default.css (renamed from xsd/doc/default.css)0
-rw-r--r--doc/pregenerated/cxx/parser/guide/cxx-parser-guide.pdfbin0 -> 191458 bytes
-rw-r--r--doc/pregenerated/cxx/parser/guide/cxx-parser-guide.ps20741
-rw-r--r--doc/pregenerated/cxx/tree/guide/cxx-tree-guide.pdfbin0 -> 128925 bytes
-rw-r--r--doc/pregenerated/cxx/tree/guide/cxx-tree-guide.ps3515
-rw-r--r--doc/pregenerated/cxx/tree/manual/cxx-tree-manual.pdfbin0 -> 261393 bytes
-rw-r--r--doc/pregenerated/cxx/tree/manual/cxx-tree-manual.ps7387
-rw-r--r--doc/pregenerated/xsd.11500
-rw-r--r--doc/pregenerated/xsd.xhtml1621
-rw-r--r--doc/xsd-epilogue.1576
-rw-r--r--doc/xsd-epilogue.xhtml429
-rw-r--r--doc/xsd-parser-header.1 (renamed from xsd/doc/xsd-parser-header.1)0
-rw-r--r--doc/xsd-parser-header.xhtml (renamed from xsd/doc/xsd-parser-header.xhtml)0
-rw-r--r--doc/xsd-prologue.1119
-rw-r--r--doc/xsd-prologue.xhtml123
-rw-r--r--doc/xsd-tree-header.1 (renamed from xsd/doc/xsd-tree-header.1)0
-rw-r--r--doc/xsd-tree-header.xhtml (renamed from xsd/doc/xsd-tree-header.xhtml)0
-rw-r--r--libcutl/INSTALL69
-rw-r--r--libcutl/INSTALL-GIT72
-rw-r--r--libcutl/LICENSE30
-rw-r--r--libcutl/Makefile.am11
-rw-r--r--libcutl/NEWS70
-rw-r--r--libcutl/README16
-rw-r--r--libcutl/TODO8
-rwxr-xr-xlibcutl/bootstrap17
-rw-r--r--libcutl/build/bootstrap.make73
-rw-r--r--libcutl/build/c/configuration-dynamic.make11
-rw-r--r--libcutl/build/c/generic/configuration-dynamic.make5
-rw-r--r--libcutl/build/cxx/configuration-dynamic.make11
-rw-r--r--libcutl/build/cxx/generic/configuration-dynamic.make5
-rw-r--r--libcutl/build/export/libcutl/stub.make9
l---------libcutl/build/import/libcutl/LICENSE1
-rw-r--r--libcutl/build/import/libcutl/configuration-rules.make14
-rwxr-xr-xlibcutl/build/import/libcutl/configure54
-rw-r--r--libcutl/build/import/libcutl/stub.make29
-rw-r--r--libcutl/build/ld/configuration-lib-dynamic.make13
-rw-r--r--libcutl/configure.ac121
-rw-r--r--libcutl/cutl/Makefile.am28
-rw-r--r--libcutl/cutl/compiler/code-stream.hxx154
-rw-r--r--libcutl/cutl/compiler/code-stream.txx95
-rw-r--r--libcutl/cutl/compiler/context.cxx54
-rw-r--r--libcutl/cutl/compiler/context.hxx137
-rw-r--r--libcutl/cutl/compiler/context.txx88
-rw-r--r--libcutl/cutl/compiler/cxx-indenter.cxx49
-rw-r--r--libcutl/cutl/compiler/cxx-indenter.hxx171
-rw-r--r--libcutl/cutl/compiler/cxx-indenter.ixx69
-rw-r--r--libcutl/cutl/compiler/cxx-indenter.txx817
-rw-r--r--libcutl/cutl/compiler/sloc-counter.hxx78
-rw-r--r--libcutl/cutl/compiler/sloc-counter.txx224
-rw-r--r--libcutl/cutl/compiler/traversal.hxx171
-rw-r--r--libcutl/cutl/compiler/traversal.txx144
-rw-r--r--libcutl/cutl/compiler/type-id.hxx48
-rw-r--r--libcutl/cutl/compiler/type-id.ixx44
-rw-r--r--libcutl/cutl/compiler/type-id.txx17
-rw-r--r--libcutl/cutl/compiler/type-info.cxx30
-rw-r--r--libcutl/cutl/compiler/type-info.hxx111
-rw-r--r--libcutl/cutl/compiler/type-info.ixx95
-rw-r--r--libcutl/cutl/container/any.hxx152
-rw-r--r--libcutl/cutl/container/graph.hxx217
-rw-r--r--libcutl/cutl/container/graph.txx349
-rw-r--r--libcutl/cutl/container/key.hxx71
-rw-r--r--libcutl/cutl/container/map-iterator.hxx69
-rw-r--r--libcutl/cutl/container/multi-index.hxx15
-rw-r--r--libcutl/cutl/container/pointer-iterator.hxx126
-rw-r--r--libcutl/cutl/details/boost/LICENSE23
-rw-r--r--libcutl/cutl/details/boost/README2
-rw-r--r--libcutl/cutl/details/boost/assert.hpp136
-rw-r--r--libcutl/cutl/details/boost/checked_delete.hpp69
-rw-r--r--libcutl/cutl/details/boost/config.hpp70
-rw-r--r--libcutl/cutl/details/boost/config/abi/msvc_prefix.hpp22
-rw-r--r--libcutl/cutl/details/boost/config/abi/msvc_suffix.hpp8
-rw-r--r--libcutl/cutl/details/boost/config/abi_prefix.hpp25
-rw-r--r--libcutl/cutl/details/boost/config/abi_suffix.hpp27
-rw-r--r--libcutl/cutl/details/boost/config/auto_link.hpp423
-rw-r--r--libcutl/cutl/details/boost/config/compiler/clang.hpp158
-rw-r--r--libcutl/cutl/details/boost/config/compiler/codegear.hpp180
-rw-r--r--libcutl/cutl/details/boost/config/compiler/comeau.hpp59
-rw-r--r--libcutl/cutl/details/boost/config/compiler/common_edg.hpp104
-rw-r--r--libcutl/cutl/details/boost/config/compiler/compaq_cxx.hpp19
-rw-r--r--libcutl/cutl/details/boost/config/compiler/cray.hpp64
-rw-r--r--libcutl/cutl/details/boost/config/compiler/digitalmars.hpp104
-rw-r--r--libcutl/cutl/details/boost/config/compiler/gcc.hpp280
-rw-r--r--libcutl/cutl/details/boost/config/compiler/gcc_xml.hpp61
-rw-r--r--libcutl/cutl/details/boost/config/compiler/greenhills.hpp28
-rw-r--r--libcutl/cutl/details/boost/config/compiler/hp_acc.hpp141
-rw-r--r--libcutl/cutl/details/boost/config/compiler/intel.hpp272
-rw-r--r--libcutl/cutl/details/boost/config/compiler/kai.hpp33
-rw-r--r--libcutl/cutl/details/boost/config/compiler/metrowerks.hpp145
-rw-r--r--libcutl/cutl/details/boost/config/compiler/mpw.hpp87
-rw-r--r--libcutl/cutl/details/boost/config/compiler/nvcc.hpp28
-rw-r--r--libcutl/cutl/details/boost/config/compiler/pathscale.hpp81
-rw-r--r--libcutl/cutl/details/boost/config/compiler/pgi.hpp119
-rw-r--r--libcutl/cutl/details/boost/config/compiler/sgi_mipspro.hpp29
-rw-r--r--libcutl/cutl/details/boost/config/compiler/sunpro_cc.hpp150
-rw-r--r--libcutl/cutl/details/boost/config/compiler/vacpp.hpp131
-rw-r--r--libcutl/cutl/details/boost/config/compiler/visualc.hpp324
-rw-r--r--libcutl/cutl/details/boost/config/no_tr1/cmath.hpp28
-rw-r--r--libcutl/cutl/details/boost/config/no_tr1/complex.hpp28
-rw-r--r--libcutl/cutl/details/boost/config/no_tr1/functional.hpp28
-rw-r--r--libcutl/cutl/details/boost/config/no_tr1/memory.hpp28
-rw-r--r--libcutl/cutl/details/boost/config/no_tr1/utility.hpp28
-rw-r--r--libcutl/cutl/details/boost/config/platform/aix.hpp33
-rw-r--r--libcutl/cutl/details/boost/config/platform/amigaos.hpp17
-rw-r--r--libcutl/cutl/details/boost/config/platform/beos.hpp26
-rw-r--r--libcutl/cutl/details/boost/config/platform/bsd.hpp86
-rw-r--r--libcutl/cutl/details/boost/config/platform/cray.hpp18
-rw-r--r--libcutl/cutl/details/boost/config/platform/cygwin.hpp58
-rw-r--r--libcutl/cutl/details/boost/config/platform/hpux.hpp89
-rw-r--r--libcutl/cutl/details/boost/config/platform/irix.hpp33
-rw-r--r--libcutl/cutl/details/boost/config/platform/linux.hpp103
-rw-r--r--libcutl/cutl/details/boost/config/platform/macos.hpp87
-rw-r--r--libcutl/cutl/details/boost/config/platform/qnxnto.hpp31
-rw-r--r--libcutl/cutl/details/boost/config/platform/solaris.hpp28
-rw-r--r--libcutl/cutl/details/boost/config/platform/symbian.hpp97
-rw-r--r--libcutl/cutl/details/boost/config/platform/vms.hpp25
-rw-r--r--libcutl/cutl/details/boost/config/platform/vxworks.hpp369
-rw-r--r--libcutl/cutl/details/boost/config/platform/win32.hpp73
-rw-r--r--libcutl/cutl/details/boost/config/posix_features.hpp95
-rw-r--r--libcutl/cutl/details/boost/config/requires_threads.hpp92
-rw-r--r--libcutl/cutl/details/boost/config/select_compiler_config.hpp112
-rw-r--r--libcutl/cutl/details/boost/config/select_platform_config.hpp105
-rw-r--r--libcutl/cutl/details/boost/config/select_stdlib_config.hpp85
-rw-r--r--libcutl/cutl/details/boost/config/stdlib/dinkumware.hpp155
-rw-r--r--libcutl/cutl/details/boost/config/stdlib/libcomo.hpp72
-rw-r--r--libcutl/cutl/details/boost/config/stdlib/libcpp.hpp37
-rw-r--r--libcutl/cutl/details/boost/config/stdlib/libstdcpp3.hpp170
-rw-r--r--libcutl/cutl/details/boost/config/stdlib/modena.hpp56
-rw-r--r--libcutl/cutl/details/boost/config/stdlib/msl.hpp84
-rw-r--r--libcutl/cutl/details/boost/config/stdlib/roguewave.hpp186
-rw-r--r--libcutl/cutl/details/boost/config/stdlib/sgi.hpp148
-rw-r--r--libcutl/cutl/details/boost/config/stdlib/stlport.hpp243
-rw-r--r--libcutl/cutl/details/boost/config/stdlib/vacpp.hpp54
-rw-r--r--libcutl/cutl/details/boost/config/suffix.hpp933
-rw-r--r--libcutl/cutl/details/boost/config/user.hpp136
-rw-r--r--libcutl/cutl/details/boost/config/warning_disable.hpp47
-rw-r--r--libcutl/cutl/details/boost/cregex.hpp39
-rw-r--r--libcutl/cutl/details/boost/cstdint.hpp508
-rw-r--r--libcutl/cutl/details/boost/current_function.hpp68
-rw-r--r--libcutl/cutl/details/boost/detail/container_fwd.hpp162
-rw-r--r--libcutl/cutl/details/boost/detail/indirect_traits.hpp487
-rw-r--r--libcutl/cutl/details/boost/detail/interlocked.hpp180
-rw-r--r--libcutl/cutl/details/boost/detail/is_function_ref_tester.hpp136
-rw-r--r--libcutl/cutl/details/boost/detail/iterator.hpp494
-rw-r--r--libcutl/cutl/details/boost/detail/lightweight_mutex.hpp22
-rw-r--r--libcutl/cutl/details/boost/detail/sp_typeinfo.hpp135
-rw-r--r--libcutl/cutl/details/boost/detail/workaround.hpp267
-rw-r--r--libcutl/cutl/details/boost/exception/detail/attribute_noreturn.hpp17
-rw-r--r--libcutl/cutl/details/boost/exception/exception.hpp483
-rw-r--r--libcutl/cutl/details/boost/functional/hash.hpp7
-rw-r--r--libcutl/cutl/details/boost/functional/hash/detail/float_functions.hpp336
-rw-r--r--libcutl/cutl/details/boost/functional/hash/detail/hash_float.hpp277
-rw-r--r--libcutl/cutl/details/boost/functional/hash/detail/limits.hpp61
-rw-r--r--libcutl/cutl/details/boost/functional/hash/extensions.hpp379
-rw-r--r--libcutl/cutl/details/boost/functional/hash/hash.hpp530
-rw-r--r--libcutl/cutl/details/boost/functional/hash/hash_fwd.hpp40
-rw-r--r--libcutl/cutl/details/boost/integer.hpp261
-rw-r--r--libcutl/cutl/details/boost/integer/static_log2.hpp127
-rw-r--r--libcutl/cutl/details/boost/integer_fwd.hpp164
-rw-r--r--libcutl/cutl/details/boost/integer_traits.hpp261
-rw-r--r--libcutl/cutl/details/boost/iterator.hpp59
-rw-r--r--libcutl/cutl/details/boost/iterator/detail/config_def.hpp137
-rw-r--r--libcutl/cutl/details/boost/iterator/detail/config_undef.hpp25
-rw-r--r--libcutl/cutl/details/boost/iterator/detail/enable_if.hpp86
-rw-r--r--libcutl/cutl/details/boost/iterator/detail/facade_iterator_category.hpp200
-rw-r--r--libcutl/cutl/details/boost/iterator/interoperable.hpp50
-rw-r--r--libcutl/cutl/details/boost/iterator/iterator_categories.hpp188
-rw-r--r--libcutl/cutl/details/boost/iterator/iterator_facade.hpp874
-rw-r--r--libcutl/cutl/details/boost/iterator/iterator_traits.hpp92
-rw-r--r--libcutl/cutl/details/boost/limits.hpp146
-rw-r--r--libcutl/cutl/details/boost/memory_order.hpp53
-rw-r--r--libcutl/cutl/details/boost/mpl/always.hpp39
-rw-r--r--libcutl/cutl/details/boost/mpl/and.hpp60
-rw-r--r--libcutl/cutl/details/boost/mpl/apply.hpp229
-rw-r--r--libcutl/cutl/details/boost/mpl/apply_fwd.hpp107
-rw-r--r--libcutl/cutl/details/boost/mpl/apply_wrap.hpp234
-rw-r--r--libcutl/cutl/details/boost/mpl/arg.hpp131
-rw-r--r--libcutl/cutl/details/boost/mpl/arg_fwd.hpp28
-rw-r--r--libcutl/cutl/details/boost/mpl/assert.hpp438
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/adl_barrier.hpp48
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/arg_typedef.hpp31
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/arity.hpp39
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/arity_spec.hpp67
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/common_name_wknd.hpp34
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/adl.hpp40
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/arrays.hpp30
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/bind.hpp33
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/compiler.hpp66
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/ctps.hpp30
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp27
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/dtp.hpp46
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/eti.hpp47
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/gcc.hpp23
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/has_apply.hpp32
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/has_xxx.hpp34
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/integral.hpp38
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/intel.hpp21
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/lambda.hpp32
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/msvc.hpp21
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/msvc_typename.hpp26
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/nttp.hpp41
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/overload_resolution.hpp29
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/pp_counter.hpp26
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/preprocessor.hpp39
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/static_constant.hpp25
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/ttp.hpp41
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp19
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/config/workaround.hpp19
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/count_args.hpp105
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/full_lambda.hpp354
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/has_apply.hpp32
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/has_rebind.hpp99
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/has_type.hpp23
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/include_preprocessed.hpp42
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/integral_wrapper.hpp93
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/lambda_arity_param.hpp25
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/lambda_no_ctps.hpp193
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/lambda_support.hpp169
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/logical_op.hpp165
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/msvc_dtw.hpp68
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/msvc_is_class.hpp58
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/msvc_never_true.hpp34
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/na.hpp95
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/na_assert.hpp34
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/na_fwd.hpp31
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/na_spec.hpp175
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/nested_type_wknd.hpp48
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/nttp_decl.hpp35
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/add.hpp65
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/def_params_tail.hpp105
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp67
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/enum.hpp62
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/ext_params.hpp78
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/filter_params.hpp28
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/params.hpp65
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/partial_spec_params.hpp32
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/range.hpp23
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/repeat.hpp51
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/sub.hpp65
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/preprocessor/tuple.hpp29
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/static_cast.hpp27
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/template_arity.hpp189
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/template_arity_fwd.hpp23
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/type_wrapper.hpp47
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/value_wknd.hpp89
-rw-r--r--libcutl/cutl/details/boost/mpl/aux_/yes_no.hpp58
-rw-r--r--libcutl/cutl/details/boost/mpl/bind.hpp551
-rw-r--r--libcutl/cutl/details/boost/mpl/bind_fwd.hpp99
-rw-r--r--libcutl/cutl/details/boost/mpl/bool.hpp39
-rw-r--r--libcutl/cutl/details/boost/mpl/bool_fwd.hpp33
-rw-r--r--libcutl/cutl/details/boost/mpl/eval_if.hpp71
-rw-r--r--libcutl/cutl/details/boost/mpl/has_xxx.hpp640
-rw-r--r--libcutl/cutl/details/boost/mpl/identity.hpp45
-rw-r--r--libcutl/cutl/details/boost/mpl/if.hpp135
-rw-r--r--libcutl/cutl/details/boost/mpl/int.hpp22
-rw-r--r--libcutl/cutl/details/boost/mpl/int_fwd.hpp27
-rw-r--r--libcutl/cutl/details/boost/mpl/integral_c.hpp51
-rw-r--r--libcutl/cutl/details/boost/mpl/integral_c_fwd.hpp32
-rw-r--r--libcutl/cutl/details/boost/mpl/integral_c_tag.hpp26
-rw-r--r--libcutl/cutl/details/boost/mpl/is_placeholder.hpp67
-rw-r--r--libcutl/cutl/details/boost/mpl/lambda.hpp29
-rw-r--r--libcutl/cutl/details/boost/mpl/lambda_fwd.hpp57
-rw-r--r--libcutl/cutl/details/boost/mpl/limits/arity.hpp21
-rw-r--r--libcutl/cutl/details/boost/mpl/next.hpp19
-rw-r--r--libcutl/cutl/details/boost/mpl/next_prior.hpp49
-rw-r--r--libcutl/cutl/details/boost/mpl/not.hpp51
-rw-r--r--libcutl/cutl/details/boost/mpl/or.hpp61
-rw-r--r--libcutl/cutl/details/boost/mpl/placeholders.hpp100
-rw-r--r--libcutl/cutl/details/boost/mpl/protect.hpp55
-rw-r--r--libcutl/cutl/details/boost/mpl/quote.hpp151
-rw-r--r--libcutl/cutl/details/boost/mpl/size_t.hpp25
-rw-r--r--libcutl/cutl/details/boost/mpl/size_t_fwd.hpp28
-rw-r--r--libcutl/cutl/details/boost/mpl/void.hpp76
-rw-r--r--libcutl/cutl/details/boost/mpl/void_fwd.hpp26
-rw-r--r--libcutl/cutl/details/boost/non_type.hpp27
-rw-r--r--libcutl/cutl/details/boost/preprocessor/arithmetic/add.hpp51
-rw-r--r--libcutl/cutl/details/boost/preprocessor/arithmetic/dec.hpp288
-rw-r--r--libcutl/cutl/details/boost/preprocessor/arithmetic/inc.hpp288
-rw-r--r--libcutl/cutl/details/boost/preprocessor/arithmetic/sub.hpp50
-rw-r--r--libcutl/cutl/details/boost/preprocessor/array/data.hpp28
-rw-r--r--libcutl/cutl/details/boost/preprocessor/array/elem.hpp29
-rw-r--r--libcutl/cutl/details/boost/preprocessor/array/size.hpp28
-rw-r--r--libcutl/cutl/details/boost/preprocessor/cat.hpp35
-rw-r--r--libcutl/cutl/details/boost/preprocessor/comma_if.hpp17
-rw-r--r--libcutl/cutl/details/boost/preprocessor/config/config.hpp105
-rw-r--r--libcutl/cutl/details/boost/preprocessor/control/detail/dmc/while.hpp536
-rw-r--r--libcutl/cutl/details/boost/preprocessor/control/detail/edg/while.hpp534
-rw-r--r--libcutl/cutl/details/boost/preprocessor/control/detail/msvc/while.hpp277
-rw-r--r--libcutl/cutl/details/boost/preprocessor/control/detail/while.hpp536
-rw-r--r--libcutl/cutl/details/boost/preprocessor/control/expr_if.hpp30
-rw-r--r--libcutl/cutl/details/boost/preprocessor/control/expr_iif.hpp31
-rw-r--r--libcutl/cutl/details/boost/preprocessor/control/if.hpp30
-rw-r--r--libcutl/cutl/details/boost/preprocessor/control/iif.hpp34
-rw-r--r--libcutl/cutl/details/boost/preprocessor/control/while.hpp312
-rw-r--r--libcutl/cutl/details/boost/preprocessor/debug/error.hpp33
-rw-r--r--libcutl/cutl/details/boost/preprocessor/dec.hpp17
-rw-r--r--libcutl/cutl/details/boost/preprocessor/detail/auto_rec.hpp293
-rw-r--r--libcutl/cutl/details/boost/preprocessor/detail/check.hpp48
-rw-r--r--libcutl/cutl/details/boost/preprocessor/detail/dmc/auto_rec.hpp286
-rw-r--r--libcutl/cutl/details/boost/preprocessor/detail/is_binary.hpp30
-rw-r--r--libcutl/cutl/details/boost/preprocessor/empty.hpp17
-rw-r--r--libcutl/cutl/details/boost/preprocessor/enum_params.hpp17
-rw-r--r--libcutl/cutl/details/boost/preprocessor/enum_shifted_params.hpp17
-rw-r--r--libcutl/cutl/details/boost/preprocessor/expr_if.hpp17
-rw-r--r--libcutl/cutl/details/boost/preprocessor/facilities/empty.hpp21
-rw-r--r--libcutl/cutl/details/boost/preprocessor/facilities/identity.hpp23
-rw-r--r--libcutl/cutl/details/boost/preprocessor/facilities/overload.hpp25
-rw-r--r--libcutl/cutl/details/boost/preprocessor/identity.hpp17
-rw-r--r--libcutl/cutl/details/boost/preprocessor/inc.hpp17
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iterate.hpp17
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower1.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower2.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower3.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower4.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower5.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper1.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper2.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper3.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper4.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper5.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/finish.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward1.hpp1342
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward2.hpp1338
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward3.hpp1338
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward4.hpp1338
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward5.hpp1338
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse1.hpp1296
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse2.hpp1296
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse3.hpp1296
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse4.hpp1296
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse5.hpp1296
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/local.hpp812
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/rlocal.hpp782
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/self.hpp21
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/detail/start.hpp99
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/iterate.hpp82
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/local.hpp26
-rw-r--r--libcutl/cutl/details/boost/preprocessor/iteration/self.hpp19
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/adt.hpp73
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/append.hpp40
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/detail/dmc/fold_left.hpp279
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/detail/edg/fold_left.hpp536
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/detail/edg/fold_right.hpp794
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/detail/fold_left.hpp279
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/detail/fold_right.hpp277
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/fold_left.hpp303
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/fold_right.hpp40
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/for_each_i.hpp65
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/reverse.hpp40
-rw-r--r--libcutl/cutl/details/boost/preprocessor/list/transform.hpp49
-rw-r--r--libcutl/cutl/details/boost/preprocessor/logical/and.hpp30
-rw-r--r--libcutl/cutl/details/boost/preprocessor/logical/bitand.hpp38
-rw-r--r--libcutl/cutl/details/boost/preprocessor/logical/bool.hpp288
-rw-r--r--libcutl/cutl/details/boost/preprocessor/logical/compl.hpp36
-rw-r--r--libcutl/cutl/details/boost/preprocessor/punctuation/comma.hpp21
-rw-r--r--libcutl/cutl/details/boost/preprocessor/punctuation/comma_if.hpp31
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repeat.hpp17
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repetition/detail/dmc/for.hpp536
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repetition/detail/edg/for.hpp534
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repetition/detail/for.hpp536
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repetition/detail/msvc/for.hpp277
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repetition/enum_params.hpp41
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repetition/enum_shifted_params.hpp44
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repetition/enum_trailing_params.hpp38
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repetition/for.hpp306
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repetition/repeat.hpp825
-rw-r--r--libcutl/cutl/details/boost/preprocessor/repetition/repeat_from_to.hpp87
-rw-r--r--libcutl/cutl/details/boost/preprocessor/seq/detail/split.hpp284
-rw-r--r--libcutl/cutl/details/boost/preprocessor/seq/elem.hpp304
-rw-r--r--libcutl/cutl/details/boost/preprocessor/seq/first_n.hpp30
-rw-r--r--libcutl/cutl/details/boost/preprocessor/seq/fold_left.hpp1070
-rw-r--r--libcutl/cutl/details/boost/preprocessor/seq/rest_n.hpp30
-rw-r--r--libcutl/cutl/details/boost/preprocessor/seq/seq.hpp44
-rw-r--r--libcutl/cutl/details/boost/preprocessor/seq/size.hpp547
-rw-r--r--libcutl/cutl/details/boost/preprocessor/seq/subseq.hpp28
-rw-r--r--libcutl/cutl/details/boost/preprocessor/slot/detail/counter.hpp269
-rw-r--r--libcutl/cutl/details/boost/preprocessor/slot/detail/def.hpp49
-rw-r--r--libcutl/cutl/details/boost/preprocessor/slot/detail/shared.hpp247
-rw-r--r--libcutl/cutl/details/boost/preprocessor/slot/detail/slot1.hpp267
-rw-r--r--libcutl/cutl/details/boost/preprocessor/slot/detail/slot2.hpp267
-rw-r--r--libcutl/cutl/details/boost/preprocessor/slot/detail/slot3.hpp267
-rw-r--r--libcutl/cutl/details/boost/preprocessor/slot/detail/slot4.hpp267
-rw-r--r--libcutl/cutl/details/boost/preprocessor/slot/detail/slot5.hpp267
-rw-r--r--libcutl/cutl/details/boost/preprocessor/slot/slot.hpp32
-rw-r--r--libcutl/cutl/details/boost/preprocessor/stringize.hpp33
-rw-r--r--libcutl/cutl/details/boost/preprocessor/tuple/eat.hpp106
-rw-r--r--libcutl/cutl/details/boost/preprocessor/tuple/elem.hpp191
-rw-r--r--libcutl/cutl/details/boost/preprocessor/tuple/rem.hpp134
-rw-r--r--libcutl/cutl/details/boost/preprocessor/tuple/to_list.hpp116
-rw-r--r--libcutl/cutl/details/boost/preprocessor/variadic/elem.hpp94
-rw-r--r--libcutl/cutl/details/boost/preprocessor/variadic/size.hpp30
-rw-r--r--libcutl/cutl/details/boost/ref.hpp189
-rw-r--r--libcutl/cutl/details/boost/regex.hpp37
-rw-r--r--libcutl/cutl/details/boost/regex/config.hpp435
-rw-r--r--libcutl/cutl/details/boost/regex/config/cwchar.hpp207
-rw-r--r--libcutl/cutl/details/boost/regex/icu.hpp1031
-rw-r--r--libcutl/cutl/details/boost/regex/pattern_except.hpp100
-rw-r--r--libcutl/cutl/details/boost/regex/pending/object_cache.hpp165
-rw-r--r--libcutl/cutl/details/boost/regex/pending/static_mutex.hpp179
-rw-r--r--libcutl/cutl/details/boost/regex/pending/unicode_iterator.hpp776
-rw-r--r--libcutl/cutl/details/boost/regex/regex_traits.hpp35
-rw-r--r--libcutl/cutl/details/boost/regex/src/c_regex_traits.cxx193
-rw-r--r--libcutl/cutl/details/boost/regex/src/cpp_regex_traits.cxx117
-rw-r--r--libcutl/cutl/details/boost/regex/src/cregex.cxx660
-rw-r--r--libcutl/cutl/details/boost/regex/src/fileiter.cxx927
-rw-r--r--libcutl/cutl/details/boost/regex/src/icu.cxx507
-rw-r--r--libcutl/cutl/details/boost/regex/src/instances.cxx32
-rw-r--r--libcutl/cutl/details/boost/regex/src/internals.hpp35
-rw-r--r--libcutl/cutl/details/boost/regex/src/posix_api.cxx296
-rw-r--r--libcutl/cutl/details/boost/regex/src/regex.cxx227
-rw-r--r--libcutl/cutl/details/boost/regex/src/regex_debug.cxx59
-rw-r--r--libcutl/cutl/details/boost/regex/src/regex_raw_buffer.cxx72
-rw-r--r--libcutl/cutl/details/boost/regex/src/regex_traits_defaults.cxx692
-rw-r--r--libcutl/cutl/details/boost/regex/src/static_mutex.cxx179
-rw-r--r--libcutl/cutl/details/boost/regex/src/usinstances.cxx81
-rw-r--r--libcutl/cutl/details/boost/regex/src/w32_regex_traits.cxx652
-rw-r--r--libcutl/cutl/details/boost/regex/src/wc_regex_traits.cxx301
-rw-r--r--libcutl/cutl/details/boost/regex/src/wide_posix_api.cxx315
-rw-r--r--libcutl/cutl/details/boost/regex/src/winstances.cxx35
-rw-r--r--libcutl/cutl/details/boost/regex/user.hpp93
-rw-r--r--libcutl/cutl/details/boost/regex/v4/basic_regex.hpp782
-rw-r--r--libcutl/cutl/details/boost/regex/v4/basic_regex_creator.hpp1571
-rw-r--r--libcutl/cutl/details/boost/regex/v4/basic_regex_parser.hpp2874
-rw-r--r--libcutl/cutl/details/boost/regex/v4/c_regex_traits.hpp211
-rw-r--r--libcutl/cutl/details/boost/regex/v4/char_regex_traits.hpp81
-rw-r--r--libcutl/cutl/details/boost/regex/v4/cpp_regex_traits.hpp1099
-rw-r--r--libcutl/cutl/details/boost/regex/v4/cregex.hpp330
-rw-r--r--libcutl/cutl/details/boost/regex/v4/error_type.hpp59
-rw-r--r--libcutl/cutl/details/boost/regex/v4/fileiter.hpp455
-rw-r--r--libcutl/cutl/details/boost/regex/v4/instances.hpp222
-rw-r--r--libcutl/cutl/details/boost/regex/v4/iterator_category.hpp91
-rw-r--r--libcutl/cutl/details/boost/regex/v4/iterator_traits.hpp135
-rw-r--r--libcutl/cutl/details/boost/regex/v4/match_flags.hpp138
-rw-r--r--libcutl/cutl/details/boost/regex/v4/match_results.hpp702
-rw-r--r--libcutl/cutl/details/boost/regex/v4/mem_block_cache.hpp99
-rw-r--r--libcutl/cutl/details/boost/regex/v4/perl_matcher.hpp587
-rw-r--r--libcutl/cutl/details/boost/regex/v4/perl_matcher_common.hpp996
-rw-r--r--libcutl/cutl/details/boost/regex/v4/perl_matcher_non_recursive.hpp1642
-rw-r--r--libcutl/cutl/details/boost/regex/v4/perl_matcher_recursive.hpp991
-rw-r--r--libcutl/cutl/details/boost/regex/v4/primary_transform.hpp146
-rw-r--r--libcutl/cutl/details/boost/regex/v4/protected_call.hpp81
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regbase.hpp180
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex.hpp202
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_format.hpp1156
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_fwd.hpp73
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_grep.hpp155
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_iterator.hpp201
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_match.hpp382
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_merge.hpp93
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_raw_buffer.hpp210
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_replace.hpp99
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_search.hpp217
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_split.hpp172
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_token_iterator.hpp342
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_traits.hpp189
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_traits_defaults.hpp371
-rw-r--r--libcutl/cutl/details/boost/regex/v4/regex_workaround.hpp232
-rw-r--r--libcutl/cutl/details/boost/regex/v4/states.hpp301
-rw-r--r--libcutl/cutl/details/boost/regex/v4/sub_match.hpp512
-rw-r--r--libcutl/cutl/details/boost/regex/v4/syntax_type.hpp105
-rw-r--r--libcutl/cutl/details/boost/regex/v4/u32regex_iterator.hpp193
-rw-r--r--libcutl/cutl/details/boost/regex/v4/u32regex_token_iterator.hpp377
-rw-r--r--libcutl/cutl/details/boost/regex/v4/w32_regex_traits.hpp741
-rw-r--r--libcutl/cutl/details/boost/regex_fwd.hpp33
-rw-r--r--libcutl/cutl/details/boost/scoped_array.hpp16
-rw-r--r--libcutl/cutl/details/boost/scoped_ptr.hpp16
-rw-r--r--libcutl/cutl/details/boost/shared_ptr.hpp19
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/bad_weak_ptr.hpp59
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/atomic_count.hpp119
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_gcc.hpp72
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp77
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_pthreads.hpp96
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_sync.hpp61
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_win32.hpp63
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/lightweight_mutex.hpp42
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/lwm_nop.hpp37
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/lwm_pthreads.hpp87
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/lwm_win32_cs.hpp108
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/operator_bool.hpp63
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/quick_allocator.hpp199
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/shared_count.hpp603
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/shared_ptr_nmt.hpp182
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_convertible.hpp91
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base.hpp79
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp151
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_aix.hpp143
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp171
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp158
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp182
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp182
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp167
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp174
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_nt.hpp108
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_pt.hpp136
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp162
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_spin.hpp132
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_sync.hpp156
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp151
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_w32.hpp131
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_impl.hpp254
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_has_sync.hpp69
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/sp_nullptr_t.hpp45
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/spinlock.hpp56
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/spinlock_gcc_arm.hpp120
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/spinlock_nt.hpp89
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/spinlock_pool.hpp91
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/spinlock_pt.hpp79
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/spinlock_sync.hpp87
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/spinlock_w32.hpp113
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/detail/yield_k.hpp149
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/scoped_array.hpp132
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/scoped_ptr.hpp157
-rw-r--r--libcutl/cutl/details/boost/smart_ptr/shared_ptr.hpp1035
-rw-r--r--libcutl/cutl/details/boost/static_assert.hpp195
-rw-r--r--libcutl/cutl/details/boost/throw_exception.hpp100
-rw-r--r--libcutl/cutl/details/boost/tr1/detail/config.hpp169
-rw-r--r--libcutl/cutl/details/boost/tr1/detail/config_all.hpp168
-rw-r--r--libcutl/cutl/details/boost/tr1/regex.hpp147
-rw-r--r--libcutl/cutl/details/boost/type.hpp18
-rw-r--r--libcutl/cutl/details/boost/type_traits/add_const.hpp47
-rw-r--r--libcutl/cutl/details/boost/type_traits/add_lvalue_reference.hpp26
-rw-r--r--libcutl/cutl/details/boost/type_traits/add_pointer.hpp72
-rw-r--r--libcutl/cutl/details/boost/type_traits/add_reference.hpp107
-rw-r--r--libcutl/cutl/details/boost/type_traits/add_rvalue_reference.hpp66
-rw-r--r--libcutl/cutl/details/boost/type_traits/alignment_of.hpp128
-rw-r--r--libcutl/cutl/details/boost/type_traits/broken_compiler_spec.hpp117
-rw-r--r--libcutl/cutl/details/boost/type_traits/config.hpp76
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/bool_trait_def.hpp196
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/bool_trait_undef.hpp28
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/cv_traits_impl.hpp97
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/false_result.hpp28
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/ice_and.hpp35
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/ice_eq.hpp36
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/ice_not.hpp31
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/ice_or.hpp34
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/is_function_ptr_helper.hpp220
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/is_function_ptr_tester.hpp654
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp817
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp2759
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/size_t_trait_def.hpp60
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/size_t_trait_undef.hpp16
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/template_arity_spec.hpp31
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/type_trait_def.hpp67
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/type_trait_undef.hpp19
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/wrap.hpp18
-rw-r--r--libcutl/cutl/details/boost/type_traits/detail/yes_no_type.hpp26
-rw-r--r--libcutl/cutl/details/boost/type_traits/ice.hpp20
-rw-r--r--libcutl/cutl/details/boost/type_traits/integral_constant.hpp53
-rw-r--r--libcutl/cutl/details/boost/type_traits/intrinsics.hpp305
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_abstract.hpp153
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_arithmetic.hpp51
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_array.hpp91
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_base_and_derived.hpp254
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_class.hpp140
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_const.hpp165
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_convertible.hpp492
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_enum.hpp189
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_float.hpp27
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_function.hpp111
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_integral.hpp83
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_lvalue_reference.hpp118
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_member_function_pointer.hpp136
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_member_pointer.hpp116
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_pod.hpp145
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_pointer.hpp162
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_polymorphic.hpp114
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_reference.hpp45
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_rvalue_reference.hpp29
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_same.hpp103
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_scalar.hpp55
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_union.hpp57
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_void.hpp38
-rw-r--r--libcutl/cutl/details/boost/type_traits/is_volatile.hpp152
-rw-r--r--libcutl/cutl/details/boost/type_traits/msvc/remove_bounds.hpp43
-rw-r--r--libcutl/cutl/details/boost/type_traits/msvc/remove_const.hpp143
-rw-r--r--libcutl/cutl/details/boost/type_traits/msvc/remove_cv.hpp190
-rw-r--r--libcutl/cutl/details/boost/type_traits/msvc/remove_pointer.hpp42
-rw-r--r--libcutl/cutl/details/boost/type_traits/msvc/remove_reference.hpp42
-rw-r--r--libcutl/cutl/details/boost/type_traits/msvc/typeof.hpp50
-rw-r--r--libcutl/cutl/details/boost/type_traits/remove_bounds.hpp48
-rw-r--r--libcutl/cutl/details/boost/type_traits/remove_const.hpp90
-rw-r--r--libcutl/cutl/details/boost/type_traits/remove_cv.hpp84
-rw-r--r--libcutl/cutl/details/boost/type_traits/remove_pointer.hpp92
-rw-r--r--libcutl/cutl/details/boost/type_traits/remove_reference.hpp70
-rw-r--r--libcutl/cutl/details/boost/type_traits/type_with_alignment.hpp399
-rw-r--r--libcutl/cutl/details/boost/utility/addressof.hpp102
-rw-r--r--libcutl/cutl/details/boost/utility/enable_if.hpp119
-rw-r--r--libcutl/cutl/details/boost/version.hpp32
-rw-r--r--libcutl/cutl/details/config-vc.h13
-rw-r--r--libcutl/cutl/details/config.h.in17
-rw-r--r--libcutl/cutl/details/config.hxx14
-rw-r--r--libcutl/cutl/details/expat/LICENSE22
-rw-r--r--libcutl/cutl/details/expat/README2
-rw-r--r--libcutl/cutl/details/expat/ascii.h92
-rw-r--r--libcutl/cutl/details/expat/asciitab.h36
-rw-r--r--libcutl/cutl/details/expat/config.h35
-rw-r--r--libcutl/cutl/details/expat/expat.h1047
-rw-r--r--libcutl/cutl/details/expat/expat_external.h119
-rw-r--r--libcutl/cutl/details/expat/iasciitab.h37
-rw-r--r--libcutl/cutl/details/expat/internal.h73
-rw-r--r--libcutl/cutl/details/expat/latin1tab.h36
-rw-r--r--libcutl/cutl/details/expat/nametab.h150
-rw-r--r--libcutl/cutl/details/expat/utf8tab.h37
-rw-r--r--libcutl/cutl/details/expat/xmlparse.c6397
-rw-r--r--libcutl/cutl/details/expat/xmlrole.c1470
-rw-r--r--libcutl/cutl/details/expat/xmlrole.h114
-rw-r--r--libcutl/cutl/details/expat/xmltok.c1681
-rw-r--r--libcutl/cutl/details/expat/xmltok.h316
-rw-r--r--libcutl/cutl/details/expat/xmltok_impl.c1796
-rw-r--r--libcutl/cutl/details/expat/xmltok_impl.h46
-rw-r--r--libcutl/cutl/details/expat/xmltok_ns.c115
-rw-r--r--libcutl/cutl/details/export.hxx36
-rw-r--r--libcutl/cutl/details/genx/LICENSE22
-rw-r--r--libcutl/cutl/details/genx/README2
-rw-r--r--libcutl/cutl/details/genx/char-props.c395
-rw-r--r--libcutl/cutl/details/genx/genx.c2324
-rw-r--r--libcutl/cutl/details/genx/genx.h341
-rw-r--r--libcutl/cutl/exception.cxx16
-rw-r--r--libcutl/cutl/exception.hxx23
-rw-r--r--libcutl/cutl/fs/auto-remove.cxx37
-rw-r--r--libcutl/cutl/fs/auto-remove.hxx83
-rw-r--r--libcutl/cutl/fs/exception.cxx17
-rw-r--r--libcutl/cutl/fs/exception.hxx35
-rw-r--r--libcutl/cutl/fs/path.cxx115
-rw-r--r--libcutl/cutl/fs/path.hxx311
-rw-r--r--libcutl/cutl/fs/path.ixx71
-rw-r--r--libcutl/cutl/fs/path.txx216
-rw-r--r--libcutl/cutl/libcutl-vc10.vcxproj175
-rw-r--r--libcutl/cutl/libcutl-vc10.vcxproj.filters24
-rw-r--r--libcutl/cutl/libcutl-vc9.vcproj360
-rw-r--r--libcutl/cutl/makefile175
-rw-r--r--libcutl/cutl/meta/answer.hxx24
-rw-r--r--libcutl/cutl/meta/class-p.hxx27
-rw-r--r--libcutl/cutl/meta/polymorphic-p.hxx50
-rw-r--r--libcutl/cutl/meta/remove-c.hxx26
-rw-r--r--libcutl/cutl/meta/remove-cv.hxx23
-rw-r--r--libcutl/cutl/meta/remove-p.hxx26
-rw-r--r--libcutl/cutl/meta/remove-v.hxx26
-rw-r--r--libcutl/cutl/re.hxx284
-rw-r--r--libcutl/cutl/re/re.cxx223
-rw-r--r--libcutl/cutl/re/re.txx69
-rw-r--r--libcutl/cutl/shared-ptr.hxx158
-rw-r--r--libcutl/cutl/shared-ptr/base.cxx62
-rw-r--r--libcutl/cutl/shared-ptr/base.hxx92
-rw-r--r--libcutl/cutl/shared-ptr/base.ixx78
-rw-r--r--libcutl/cutl/shared-ptr/base.txx199
-rw-r--r--libcutl/cutl/static-ptr.hxx74
-rw-r--r--libcutl/cutl/xml/exception.hxx19
-rw-r--r--libcutl/cutl/xml/parser.cxx827
-rw-r--r--libcutl/cutl/xml/parser.hxx419
-rw-r--r--libcutl/cutl/xml/parser.ixx74
-rw-r--r--libcutl/cutl/xml/parser.txx33
-rw-r--r--libcutl/cutl/xml/qname.cxx35
-rw-r--r--libcutl/cutl/xml/qname.hxx79
-rw-r--r--libcutl/cutl/xml/serializer.cxx258
-rw-r--r--libcutl/cutl/xml/serializer.hxx183
-rw-r--r--libcutl/cutl/xml/serializer.ixx75
-rw-r--r--libcutl/cutl/xml/value-traits.cxx25
-rw-r--r--libcutl/cutl/xml/value-traits.hxx53
-rw-r--r--libcutl/cutl/xml/value-traits.txx35
-rw-r--r--libcutl/doc/components.txt8
-rw-r--r--libcutl/libcutl-vc10.sln26
-rw-r--r--libcutl/libcutl-vc9.sln26
-rw-r--r--libcutl/libcutl.pc.in15
-rw-r--r--libcutl/m4/acx-pthread.m4259
-rw-r--r--libcutl/m4/disable-rpath.m425
-rw-r--r--libcutl/m4/libboost.m4143
-rw-r--r--libcutl/m4/libexpat.m439
-rw-r--r--libcutl/m4/libtool-link.m446
-rw-r--r--libcutl/m4/pkgconfig.m412
-rw-r--r--libcutl/m4/static-lib.m418
-rw-r--r--libcutl/m4/threads.m469
-rw-r--r--libcutl/makefile47
-rw-r--r--libcutl/tests/Makefile.am5
-rw-r--r--libcutl/tests/compiler/cxx-indenter/driver.cxx168
-rw-r--r--libcutl/tests/compiler/cxx-indenter/makefile70
-rw-r--r--libcutl/tests/compiler/cxx-indenter/output.std103
-rw-r--r--libcutl/tests/compiler/makefile17
-rw-r--r--libcutl/tests/compiler/sloc-counter/driver.cxx36
-rw-r--r--libcutl/tests/compiler/sloc-counter/makefile70
-rw-r--r--libcutl/tests/compiler/sloc-counter/test.cxx34
-rw-r--r--libcutl/tests/compiler/sloc-counter/test.std36
-rw-r--r--libcutl/tests/compiler/traversal/driver.cxx139
-rw-r--r--libcutl/tests/compiler/traversal/makefile70
-rw-r--r--libcutl/tests/compiler/traversal/output.std16
-rw-r--r--libcutl/tests/container/makefile17
-rw-r--r--libcutl/tests/container/multi-index/driver.cxx292
-rw-r--r--libcutl/tests/container/multi-index/makefile69
-rw-r--r--libcutl/tests/fs/makefile17
-rw-r--r--libcutl/tests/fs/path/driver.cxx144
-rw-r--r--libcutl/tests/fs/path/makefile69
-rw-r--r--libcutl/tests/makefile26
-rw-r--r--libcutl/tests/re/driver.cxx83
-rw-r--r--libcutl/tests/re/makefile69
-rw-r--r--libcutl/tests/shared-ptr/driver.cxx185
-rw-r--r--libcutl/tests/shared-ptr/makefile69
-rw-r--r--libcutl/tests/xml/makefile17
-rw-r--r--libcutl/tests/xml/parser/driver.cxx310
-rw-r--r--libcutl/tests/xml/parser/makefile69
-rw-r--r--libcutl/tests/xml/roundtrip/attribute.xml3
-rw-r--r--libcutl/tests/xml/roundtrip/characters.xml84
-rw-r--r--libcutl/tests/xml/roundtrip/driver.cxx127
-rw-r--r--libcutl/tests/xml/roundtrip/followup-1.xml8
-rw-r--r--libcutl/tests/xml/roundtrip/followup-2.xml1
-rw-r--r--libcutl/tests/xml/roundtrip/makefile74
-rw-r--r--libcutl/tests/xml/roundtrip/namespace.xml6
-rw-r--r--libcutl/tests/xml/serializer/driver.cxx63
-rw-r--r--libcutl/tests/xml/serializer/makefile69
-rw-r--r--libcutl/version1
-rw-r--r--libxsd-frontend/INSTALL25
-rw-r--r--libxsd-frontend/LICENSE22
-rw-r--r--libxsd-frontend/NEWS298
-rw-r--r--libxsd-frontend/README13
-rw-r--r--libxsd-frontend/build/bootstrap.make49
-rw-r--r--libxsd-frontend/build/configuration-dynamic.make1
-rw-r--r--libxsd-frontend/build/cxx/configuration-dynamic.make11
-rw-r--r--libxsd-frontend/build/cxx/generic/configuration-dynamic.make5
-rw-r--r--libxsd-frontend/build/export/libxsd-frontend/stub.make9
-rw-r--r--libxsd-frontend/build/import/libcutl/LICENSE24
-rw-r--r--libxsd-frontend/build/import/libcutl/configuration-dynamic.make8
-rw-r--r--libxsd-frontend/build/import/libcutl/configuration-rules.make14
-rwxr-xr-xlibxsd-frontend/build/import/libcutl/configure54
-rw-r--r--libxsd-frontend/build/import/libcutl/stub.make29
-rw-r--r--libxsd-frontend/build/import/libxerces-c/LICENSE340
-rw-r--r--libxsd-frontend/build/import/libxerces-c/configuration-dynamic.make1
-rw-r--r--libxsd-frontend/build/import/libxerces-c/configuration-rules.make14
-rwxr-xr-xlibxsd-frontend/build/import/libxerces-c/configure72
-rw-r--r--libxsd-frontend/build/import/libxerces-c/rules.make51
-rw-r--r--libxsd-frontend/build/import/libxerces-c/stub.make31
-rw-r--r--libxsd-frontend/build/import/libxerces-c/version1
l---------libxsd-frontend/build/import/libxsd-frontend/LICENSE1
-rw-r--r--libxsd-frontend/build/import/libxsd-frontend/configuration-rules.make14
-rwxr-xr-xlibxsd-frontend/build/import/libxsd-frontend/configure54
-rw-r--r--libxsd-frontend/build/import/libxsd-frontend/stub.make29
-rw-r--r--libxsd-frontend/build/ld/configuration-lib-dynamic.make13
-rw-r--r--libxsd-frontend/makefile16
-rw-r--r--libxsd-frontend/tests/dump/driver.cxx725
-rw-r--r--libxsd-frontend/tests/dump/makefile55
-rw-r--r--libxsd-frontend/tests/makefile16
-rw-r--r--libxsd-frontend/tests/schema/annotation/makefile34
-rw-r--r--libxsd-frontend/tests/schema/annotation/test-000.std67
-rw-r--r--libxsd-frontend/tests/schema/annotation/test-000.xsd120
-rw-r--r--libxsd-frontend/tests/schema/annotation/test-001.std36
-rw-r--r--libxsd-frontend/tests/schema/annotation/test-001.xsd53
-rw-r--r--libxsd-frontend/tests/schema/anonymous/makefile34
-rw-r--r--libxsd-frontend/tests/schema/anonymous/test-000.std30
-rw-r--r--libxsd-frontend/tests/schema/anonymous/test-000.xsd42
-rw-r--r--libxsd-frontend/tests/schema/anonymous/test-001.std38
-rw-r--r--libxsd-frontend/tests/schema/anonymous/test-001.xsd47
-rw-r--r--libxsd-frontend/tests/schema/attribute-group/makefile34
-rw-r--r--libxsd-frontend/tests/schema/attribute-group/test-000.std17
-rw-r--r--libxsd-frontend/tests/schema/attribute-group/test-000.xsd31
-rw-r--r--libxsd-frontend/tests/schema/attribute-group/test-001.std12
-rw-r--r--libxsd-frontend/tests/schema/attribute-group/test-001.xsd20
-rw-r--r--libxsd-frontend/tests/schema/default/makefile34
-rw-r--r--libxsd-frontend/tests/schema/default/test-000.std28
-rw-r--r--libxsd-frontend/tests/schema/default/test-000.xsd23
-rw-r--r--libxsd-frontend/tests/schema/default/test-001.std15
-rw-r--r--libxsd-frontend/tests/schema/default/test-001.xsd11
-rw-r--r--libxsd-frontend/tests/schema/element-group/makefile34
-rw-r--r--libxsd-frontend/tests/schema/element-group/test-000.std33
-rw-r--r--libxsd-frontend/tests/schema/element-group/test-000.xsd39
-rw-r--r--libxsd-frontend/tests/schema/element-group/test-001.std137
-rw-r--r--libxsd-frontend/tests/schema/element-group/test-001.xsd33
-rw-r--r--libxsd-frontend/tests/schema/element-group/test-002.std24
-rw-r--r--libxsd-frontend/tests/schema/element-group/test-002.xsd26
-rw-r--r--libxsd-frontend/tests/schema/enumeration/makefile34
-rw-r--r--libxsd-frontend/tests/schema/enumeration/test-000.std62
-rw-r--r--libxsd-frontend/tests/schema/enumeration/test-000.xsd72
-rw-r--r--libxsd-frontend/tests/schema/makefile24
-rw-r--r--libxsd-frontend/tests/schema/union/makefile34
-rw-r--r--libxsd-frontend/tests/schema/union/test-000.std37
-rw-r--r--libxsd-frontend/tests/schema/union/test-000.xsd40
-rw-r--r--libxsd-frontend/tests/schema/union/test-001.std15
-rw-r--r--libxsd-frontend/tests/schema/union/test-001.xsd21
-rw-r--r--libxsd-frontend/version1
-rw-r--r--libxsd-frontend/xsd-frontend/generators/dependencies.cxx70
-rw-r--r--libxsd-frontend/xsd-frontend/generators/dependencies.hxx32
-rw-r--r--libxsd-frontend/xsd-frontend/makefile117
-rw-r--r--libxsd-frontend/xsd-frontend/parser.cxx5164
-rw-r--r--libxsd-frontend/xsd-frontend/parser.hxx78
-rw-r--r--libxsd-frontend/xsd-frontend/schema-dom-parser.cxx173
-rw-r--r--libxsd-frontend/xsd-frontend/schema-dom-parser.hxx82
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph.hxx26
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/annotation.cxx45
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/annotation.hxx75
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/any-attribute.cxx111
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/any-attribute.hxx80
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/any.cxx122
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/any.hxx85
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/attribute-group.cxx34
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/attribute-group.hxx24
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/attribute.cxx41
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/attribute.hxx36
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/complex.cxx42
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/complex.hxx87
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/compositors.cxx100
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/compositors.hxx234
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/element-group.cxx34
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/element-group.hxx42
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/element.cxx53
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/element.hxx94
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/elements.cxx299
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/elements.hxx997
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/enumeration.cxx59
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/enumeration.hxx30
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/fundamental.cxx1143
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/fundamental.cxx.m4211
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/fundamental.hxx516
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/fundamental.hxx.m4155
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/fundamental.m417
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/list.cxx34
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/list.hxx22
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/namespace.cxx34
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/namespace.hxx27
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/particle.cxx54
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/particle.hxx140
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/schema.cxx130
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/schema.hxx237
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/union.cxx34
-rw-r--r--libxsd-frontend/xsd-frontend/semantic-graph/union.hxx22
-rw-r--r--libxsd-frontend/xsd-frontend/transformations/anonymous.cxx1016
-rw-r--r--libxsd-frontend/xsd-frontend/transformations/anonymous.hxx57
-rw-r--r--libxsd-frontend/xsd-frontend/transformations/enum-synthesis.cxx245
-rw-r--r--libxsd-frontend/xsd-frontend/transformations/enum-synthesis.hxx30
-rw-r--r--libxsd-frontend/xsd-frontend/transformations/restriction.cxx576
-rw-r--r--libxsd-frontend/xsd-frontend/transformations/restriction.hxx36
-rw-r--r--libxsd-frontend/xsd-frontend/transformations/schema-per-type.cxx469
-rw-r--r--libxsd-frontend/xsd-frontend/transformations/schema-per-type.hxx62
-rw-r--r--libxsd-frontend/xsd-frontend/transformations/simplifier.cxx162
-rw-r--r--libxsd-frontend/xsd-frontend/transformations/simplifier.hxx30
-rw-r--r--libxsd-frontend/xsd-frontend/traversal.hxx25
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/any-attribute.hxx21
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/any.hxx21
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/attribute-group.cxx29
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/attribute-group.hxx29
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/attribute.cxx47
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/attribute.hxx40
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/complex.cxx63
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/complex.hxx44
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/compositors.cxx164
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/compositors.hxx135
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/element-group.cxx42
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/element-group.hxx35
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/element.cxx47
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/element.hxx38
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/elements.cxx76
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/elements.hxx411
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/elements.txx10
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/enumeration.cxx90
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/enumeration.hxx59
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/fundamental.cxx12
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/fundamental.hxx233
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/list.cxx47
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/list.hxx38
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/namespace.cxx12
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/namespace.hxx44
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/particle.cxx30
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/particle.hxx29
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/schema.cxx12
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/schema.hxx149
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/union.cxx47
-rw-r--r--libxsd-frontend/xsd-frontend/traversal/union.hxx38
-rw-r--r--libxsd-frontend/xsd-frontend/types.cxx61
-rw-r--r--libxsd-frontend/xsd-frontend/types.hxx250
-rw-r--r--libxsd-frontend/xsd-frontend/version.hxx14
-rw-r--r--libxsd-frontend/xsd-frontend/xml.hxx559
-rw-r--r--makefile55
-rw-r--r--manifest164
-rw-r--r--tests/build/bootstrap.build8
-rw-r--r--tests/build/root.build16
-rw-r--r--tests/buildfile4
-rw-r--r--tests/testscript26
-rw-r--r--xsd/GPLv2340
-rw-r--r--xsd/INSTALL71
-rw-r--r--xsd/LICENSE26
-rw-r--r--xsd/NEWS1208
-rw-r--r--xsd/README27
-rw-r--r--xsd/build/bootstrap.make102
-rw-r--r--xsd/build/configuration-dynamic.make8
-rw-r--r--xsd/build/configuration-rules.make17
-rw-r--r--xsd/build/configuration.make31
-rwxr-xr-xxsd/build/configure70
-rw-r--r--xsd/build/cxx/configuration-dynamic.make11
-rw-r--r--xsd/build/cxx/generic/configuration-dynamic.make16
-rw-r--r--xsd/build/import/cli/LICENSE21
-rw-r--r--xsd/build/import/cli/cli-cxx.make48
-rw-r--r--xsd/build/import/cli/configuration-dynamic.make3
-rw-r--r--xsd/build/import/cli/configuration-rules.make14
-rwxr-xr-xxsd/build/import/cli/configure54
-rw-r--r--xsd/build/import/cli/stub.make29
-rw-r--r--xsd/build/import/libace/LICENSE340
-rw-r--r--xsd/build/import/libace/configuration-rules.make14
-rwxr-xr-xxsd/build/import/libace/configure57
-rw-r--r--xsd/build/import/libace/rules.make28
-rw-r--r--xsd/build/import/libace/stub.make31
-rw-r--r--xsd/build/import/libace/version1
-rw-r--r--xsd/build/import/libboost/LICENSE340
-rw-r--r--xsd/build/import/libboost/configuration-rules.make14
-rwxr-xr-xxsd/build/import/libboost/configure73
-rw-r--r--xsd/build/import/libboost/date-time/rules.make50
-rw-r--r--xsd/build/import/libboost/date-time/stub.make35
-rw-r--r--xsd/build/import/libboost/serialization/rules.make49
-rw-r--r--xsd/build/import/libboost/serialization/stub.make35
-rw-r--r--xsd/build/import/libboost/version1
-rw-r--r--xsd/build/import/libcutl/LICENSE24
-rw-r--r--xsd/build/import/libcutl/configuration-dynamic.make8
-rw-r--r--xsd/build/import/libcutl/configuration-rules.make14
-rwxr-xr-xxsd/build/import/libcutl/configure54
-rw-r--r--xsd/build/import/libcutl/stub.make29
-rw-r--r--xsd/build/import/libxerces-c/LICENSE340
-rw-r--r--xsd/build/import/libxerces-c/configuration-dynamic.make1
-rw-r--r--xsd/build/import/libxerces-c/configuration-rules.make14
-rwxr-xr-xxsd/build/import/libxerces-c/configure72
-rw-r--r--xsd/build/import/libxerces-c/rules.make51
-rw-r--r--xsd/build/import/libxerces-c/stub.make31
-rw-r--r--xsd/build/import/libxerces-c/version1
-rw-r--r--xsd/build/import/libxqilla/LICENSE340
-rw-r--r--xsd/build/import/libxqilla/configuration-rules.make14
-rwxr-xr-xxsd/build/import/libxqilla/configure56
-rw-r--r--xsd/build/import/libxqilla/rules.make29
-rw-r--r--xsd/build/import/libxqilla/stub.make31
-rw-r--r--xsd/build/import/libxqilla/version1
-rw-r--r--xsd/build/import/libxsd-frontend/LICENSE22
-rw-r--r--xsd/build/import/libxsd-frontend/configuration-dynamic.make4
-rw-r--r--xsd/build/import/libxsd-frontend/configuration-rules.make14
-rwxr-xr-xxsd/build/import/libxsd-frontend/configure54
-rw-r--r--xsd/build/import/libxsd-frontend/stub.make29
-rw-r--r--xsd/build/import/libz/LICENSE340
-rw-r--r--xsd/build/import/libz/configuration-rules.make14
-rwxr-xr-xxsd/build/import/libz/configure57
-rw-r--r--xsd/build/import/libz/rules.make28
-rw-r--r--xsd/build/import/libz/stub.make31
-rw-r--r--xsd/build/import/libz/version1
-rw-r--r--xsd/build/xsd/parser/xsd-cxx.make76
-rw-r--r--xsd/build/xsd/tree/xsd-cxx.make47
-rw-r--r--xsd/buildfile121
-rw-r--r--xsd/cxx/elements.cxx1365
-rw-r--r--xsd/cxx/elements.hxx626
-rw-r--r--xsd/cxx/literal-map.cxx261
-rw-r--r--xsd/cxx/literal-map.hxx19
-rw-r--r--xsd/cxx/option-types.cxx59
-rw-r--r--xsd/cxx/option-types.hxx38
-rw-r--r--xsd/cxx/options.cli560
-rw-r--r--xsd/cxx/parser/attribute-validation-source.cxx412
-rw-r--r--xsd/cxx/parser/attribute-validation-source.hxx18
-rw-r--r--xsd/cxx/parser/characters-validation-source.cxx73
-rw-r--r--xsd/cxx/parser/characters-validation-source.hxx18
-rw-r--r--xsd/cxx/parser/driver-source.cxx775
-rw-r--r--xsd/cxx/parser/driver-source.hxx18
-rw-r--r--xsd/cxx/parser/element-validation-source.cxx1600
-rw-r--r--xsd/cxx/parser/element-validation-source.hxx18
-rw-r--r--xsd/cxx/parser/elements.cxx247
-rw-r--r--xsd/cxx/parser/elements.hxx315
-rw-r--r--xsd/cxx/parser/generator.cxx1133
-rw-r--r--xsd/cxx/parser/generator.hxx45
-rw-r--r--xsd/cxx/parser/impl-header.cxx232
-rw-r--r--xsd/cxx/parser/impl-header.hxx18
-rw-r--r--xsd/cxx/parser/impl-source.cxx384
-rw-r--r--xsd/cxx/parser/impl-source.hxx18
-rw-r--r--xsd/cxx/parser/name-processor.cxx1175
-rw-r--r--xsd/cxx/parser/name-processor.hxx30
-rw-r--r--xsd/cxx/parser/options.cli147
-rw-r--r--xsd/cxx/parser/parser-forward.cxx110
-rw-r--r--xsd/cxx/parser/parser-forward.hxx18
-rw-r--r--xsd/cxx/parser/parser-header.cxx1440
-rw-r--r--xsd/cxx/parser/parser-header.hxx18
-rw-r--r--xsd/cxx/parser/parser-inline.cxx399
-rw-r--r--xsd/cxx/parser/parser-inline.hxx18
-rw-r--r--xsd/cxx/parser/parser-source.cxx957
-rw-r--r--xsd/cxx/parser/parser-source.hxx18
-rw-r--r--xsd/cxx/parser/print-impl-common.hxx641
-rw-r--r--xsd/cxx/parser/state-processor.cxx319
-rw-r--r--xsd/cxx/parser/state-processor.hxx25
-rw-r--r--xsd/cxx/parser/type-processor.cxx347
-rw-r--r--xsd/cxx/parser/type-processor.hxx31
-rw-r--r--xsd/cxx/parser/validator.cxx723
-rw-r--r--xsd/cxx/parser/validator.hxx30
-rw-r--r--xsd/cxx/tree/counter.cxx265
-rw-r--r--xsd/cxx/tree/counter.hxx25
-rw-r--r--xsd/cxx/tree/default-value.cxx1273
-rw-r--r--xsd/cxx/tree/default-value.hxx363
-rw-r--r--xsd/cxx/tree/elements.cxx1409
-rw-r--r--xsd/cxx/tree/elements.hxx2122
-rw-r--r--xsd/cxx/tree/fundamental-header.hxx1337
-rw-r--r--xsd/cxx/tree/generator.cxx1268
-rw-r--r--xsd/cxx/tree/generator.hxx44
-rw-r--r--xsd/cxx/tree/name-processor.cxx2427
-rw-r--r--xsd/cxx/tree/name-processor.hxx28
-rw-r--r--xsd/cxx/tree/options.cli479
-rw-r--r--xsd/cxx/tree/order-processor.cxx243
-rw-r--r--xsd/cxx/tree/order-processor.hxx29
-rw-r--r--xsd/cxx/tree/parser-header.cxx472
-rw-r--r--xsd/cxx/tree/parser-header.hxx19
-rw-r--r--xsd/cxx/tree/parser-source.cxx541
-rw-r--r--xsd/cxx/tree/parser-source.hxx18
-rw-r--r--xsd/cxx/tree/polymorphism-processor.cxx740
-rw-r--r--xsd/cxx/tree/polymorphism-processor.hxx30
-rw-r--r--xsd/cxx/tree/serialization-header.cxx579
-rw-r--r--xsd/cxx/tree/serialization-header.hxx18
-rw-r--r--xsd/cxx/tree/serialization-source.cxx1499
-rw-r--r--xsd/cxx/tree/serialization-source.hxx18
-rw-r--r--xsd/cxx/tree/stream-extraction-source.cxx864
-rw-r--r--xsd/cxx/tree/stream-extraction-source.hxx18
-rw-r--r--xsd/cxx/tree/stream-header.cxx181
-rw-r--r--xsd/cxx/tree/stream-header.hxx18
-rw-r--r--xsd/cxx/tree/stream-insertion-header.cxx178
-rw-r--r--xsd/cxx/tree/stream-insertion-header.hxx18
-rw-r--r--xsd/cxx/tree/stream-insertion-source.cxx623
-rw-r--r--xsd/cxx/tree/stream-insertion-source.hxx18
-rw-r--r--xsd/cxx/tree/stream-source.cxx496
-rw-r--r--xsd/cxx/tree/stream-source.hxx18
-rw-r--r--xsd/cxx/tree/tree-forward.cxx325
-rw-r--r--xsd/cxx/tree/tree-forward.hxx18
-rw-r--r--xsd/cxx/tree/tree-header.cxx4337
-rw-r--r--xsd/cxx/tree/tree-header.hxx18
-rw-r--r--xsd/cxx/tree/tree-inline.cxx1161
-rw-r--r--xsd/cxx/tree/tree-inline.hxx18
-rw-r--r--xsd/cxx/tree/tree-source.cxx3912
-rw-r--r--xsd/cxx/tree/tree-source.hxx18
-rw-r--r--xsd/cxx/tree/validator.cxx676
-rw-r--r--xsd/cxx/tree/validator.hxx29
-rw-r--r--xsd/dist/README-UNIX82
-rw-r--r--xsd/dist/README-WINDOWS192
-rw-r--r--xsd/dist/etc/vc-1x.0/xsd-cxx-parser.props33
-rw-r--r--xsd/dist/etc/vc-1x.0/xsd-cxx-parser.targets92
-rw-r--r--xsd/dist/etc/vc-1x.0/xsd-cxx-parser.xml284
-rw-r--r--xsd/dist/etc/vc-1x.0/xsd-cxx-tree.props47
-rw-r--r--xsd/dist/etc/vc-1x.0/xsd-cxx-tree.targets107
-rw-r--r--xsd/dist/etc/vc-1x.0/xsd-cxx-tree.xml411
-rw-r--r--xsd/dist/etc/vc-8.0/xsd-cxx-parser.rules206
-rw-r--r--xsd/dist/etc/vc-8.0/xsd-cxx-tree.rules320
-rw-r--r--xsd/dist/etc/vc-9.0/xsd-cxx-parser.rules206
-rw-r--r--xsd/dist/etc/vc-9.0/xsd-cxx-tree.rules319
-rw-r--r--xsd/dist/examples/build/cxx/compilers.make118
-rw-r--r--xsd/dist/examples/build/cxx/rules.make58
-rw-r--r--xsd/dist/examples/build/xsd/common.make10
-rw-r--r--xsd/dist/examples/build/xsd/parser-rules.make22
-rw-r--r--xsd/dist/examples/build/xsd/tree-rules.make14
-rw-r--r--xsd/dist/examples/cxx/makefile11
-rw-r--r--xsd/dist/examples/cxx/parser/generated/generated-vc10.vcxproj203
-rw-r--r--xsd/dist/examples/cxx/parser/generated/generated-vc10.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/generated/generated-vc11.vcxproj207
-rw-r--r--xsd/dist/examples/cxx/parser/generated/generated-vc11.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/generated/generated-vc12.vcxproj211
-rw-r--r--xsd/dist/examples/cxx/parser/generated/generated-vc12.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/generated/generated-vc8.vcproj427
-rw-r--r--xsd/dist/examples/cxx/parser/generated/generated-vc9.vcproj424
-rw-r--r--xsd/dist/examples/cxx/parser/generated/makefile49
-rw-r--r--xsd/dist/examples/cxx/parser/hello/hello-vc10.vcxproj201
-rw-r--r--xsd/dist/examples/cxx/parser/hello/hello-vc10.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/parser/hello/hello-vc11.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/parser/hello/hello-vc11.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/parser/hello/hello-vc12.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/parser/hello/hello-vc12.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/parser/hello/hello-vc8.vcproj419
-rw-r--r--xsd/dist/examples/cxx/parser/hello/hello-vc9.vcproj416
-rw-r--r--xsd/dist/examples/cxx/parser/hello/makefile28
-rw-r--r--xsd/dist/examples/cxx/parser/library/library-vc10.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/parser/library/library-vc10.vcxproj.filters54
-rw-r--r--xsd/dist/examples/cxx/parser/library/library-vc11.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/parser/library/library-vc11.vcxproj.filters54
-rw-r--r--xsd/dist/examples/cxx/parser/library/library-vc12.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/parser/library/library-vc12.vcxproj.filters54
-rw-r--r--xsd/dist/examples/cxx/parser/library/library-vc8.vcproj440
-rw-r--r--xsd/dist/examples/cxx/parser/library/library-vc9.vcproj437
-rw-r--r--xsd/dist/examples/cxx/parser/library/makefile30
-rw-r--r--xsd/dist/examples/cxx/parser/makefile12
-rw-r--r--xsd/dist/examples/cxx/parser/mixed/makefile30
-rw-r--r--xsd/dist/examples/cxx/parser/mixed/mixed-vc10.vcxproj202
-rw-r--r--xsd/dist/examples/cxx/parser/mixed/mixed-vc10.vcxproj.filters41
-rw-r--r--xsd/dist/examples/cxx/parser/mixed/mixed-vc11.vcxproj206
-rw-r--r--xsd/dist/examples/cxx/parser/mixed/mixed-vc11.vcxproj.filters41
-rw-r--r--xsd/dist/examples/cxx/parser/mixed/mixed-vc12.vcxproj210
-rw-r--r--xsd/dist/examples/cxx/parser/mixed/mixed-vc12.vcxproj.filters41
-rw-r--r--xsd/dist/examples/cxx/parser/mixed/mixed-vc8.vcproj423
-rw-r--r--xsd/dist/examples/cxx/parser/mixed/mixed-vc9.vcproj420
-rw-r--r--xsd/dist/examples/cxx/parser/mixin/makefile30
-rw-r--r--xsd/dist/examples/cxx/parser/mixin/mixin-vc10.vcxproj202
-rw-r--r--xsd/dist/examples/cxx/parser/mixin/mixin-vc10.vcxproj.filters41
-rw-r--r--xsd/dist/examples/cxx/parser/mixin/mixin-vc11.vcxproj206
-rw-r--r--xsd/dist/examples/cxx/parser/mixin/mixin-vc11.vcxproj.filters41
-rw-r--r--xsd/dist/examples/cxx/parser/mixin/mixin-vc12.vcxproj210
-rw-r--r--xsd/dist/examples/cxx/parser/mixin/mixin-vc12.vcxproj.filters41
-rw-r--r--xsd/dist/examples/cxx/parser/mixin/mixin-vc8.vcproj423
-rw-r--r--xsd/dist/examples/cxx/parser/mixin/mixin-vc9.vcproj420
-rw-r--r--xsd/dist/examples/cxx/parser/multiroot/makefile32
-rw-r--r--xsd/dist/examples/cxx/parser/multiroot/multiroot-vc10.vcxproj208
-rw-r--r--xsd/dist/examples/cxx/parser/multiroot/multiroot-vc10.vcxproj.filters47
-rw-r--r--xsd/dist/examples/cxx/parser/multiroot/multiroot-vc11.vcxproj212
-rw-r--r--xsd/dist/examples/cxx/parser/multiroot/multiroot-vc11.vcxproj.filters47
-rw-r--r--xsd/dist/examples/cxx/parser/multiroot/multiroot-vc12.vcxproj216
-rw-r--r--xsd/dist/examples/cxx/parser/multiroot/multiroot-vc12.vcxproj.filters47
-rw-r--r--xsd/dist/examples/cxx/parser/multiroot/multiroot-vc8.vcproj435
-rw-r--r--xsd/dist/examples/cxx/parser/multiroot/multiroot-vc9.vcproj432
-rw-r--r--xsd/dist/examples/cxx/parser/performance/makefile30
-rw-r--r--xsd/dist/examples/cxx/parser/performance/performance-vc10.vcxproj203
-rw-r--r--xsd/dist/examples/cxx/parser/performance/performance-vc10.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/performance/performance-vc11.vcxproj207
-rw-r--r--xsd/dist/examples/cxx/parser/performance/performance-vc11.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/performance/performance-vc12.vcxproj211
-rw-r--r--xsd/dist/examples/cxx/parser/performance/performance-vc12.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/performance/performance-vc8.vcproj427
-rw-r--r--xsd/dist/examples/cxx/parser/performance/performance-vc9.vcproj424
-rw-r--r--xsd/dist/examples/cxx/parser/polymorphism/makefile30
-rw-r--r--xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc10.vcxproj207
-rw-r--r--xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc10.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc11.vcxproj211
-rw-r--r--xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc11.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc12.vcxproj215
-rw-r--r--xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc12.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc8.vcproj431
-rw-r--r--xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc9.vcproj428
-rw-r--r--xsd/dist/examples/cxx/parser/polyroot/makefile31
-rw-r--r--xsd/dist/examples/cxx/parser/polyroot/polyroot-vc10.vcxproj207
-rw-r--r--xsd/dist/examples/cxx/parser/polyroot/polyroot-vc10.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/polyroot/polyroot-vc11.vcxproj211
-rw-r--r--xsd/dist/examples/cxx/parser/polyroot/polyroot-vc11.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/polyroot/polyroot-vc12.vcxproj215
-rw-r--r--xsd/dist/examples/cxx/parser/polyroot/polyroot-vc12.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/parser/polyroot/polyroot-vc8.vcproj431
-rw-r--r--xsd/dist/examples/cxx/parser/polyroot/polyroot-vc9.vcproj428
-rw-r--r--xsd/dist/examples/cxx/parser/wildcard/makefile28
-rw-r--r--xsd/dist/examples/cxx/parser/wildcard/wildcard-vc10.vcxproj201
-rw-r--r--xsd/dist/examples/cxx/parser/wildcard/wildcard-vc10.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/parser/wildcard/wildcard-vc11.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/parser/wildcard/wildcard-vc11.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/parser/wildcard/wildcard-vc12.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/parser/wildcard/wildcard-vc12.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/parser/wildcard/wildcard-vc8.vcproj419
-rw-r--r--xsd/dist/examples/cxx/parser/wildcard/wildcard-vc9.vcproj416
-rw-r--r--xsd/dist/examples/cxx/tree/binary/boost/boost-vc10.vcxproj208
-rw-r--r--xsd/dist/examples/cxx/tree/binary/boost/boost-vc10.vcxproj.filters47
-rw-r--r--xsd/dist/examples/cxx/tree/binary/boost/boost-vc11.vcxproj212
-rw-r--r--xsd/dist/examples/cxx/tree/binary/boost/boost-vc11.vcxproj.filters47
-rw-r--r--xsd/dist/examples/cxx/tree/binary/boost/boost-vc12.vcxproj216
-rw-r--r--xsd/dist/examples/cxx/tree/binary/boost/boost-vc12.vcxproj.filters47
-rw-r--r--xsd/dist/examples/cxx/tree/binary/boost/boost-vc8.vcproj435
-rw-r--r--xsd/dist/examples/cxx/tree/binary/boost/boost-vc9.vcproj432
-rw-r--r--xsd/dist/examples/cxx/tree/binary/boost/makefile37
-rw-r--r--xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc10.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc10.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc11.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc11.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc12.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc12.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc8.vcproj423
-rw-r--r--xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc9.vcproj420
-rw-r--r--xsd/dist/examples/cxx/tree/binary/cdr/makefile35
-rw-r--r--xsd/dist/examples/cxx/tree/binary/makefile25
-rw-r--r--xsd/dist/examples/cxx/tree/binary/xdr/makefile35
-rw-r--r--xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc10.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc10.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc11.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc11.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc12.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc12.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc8.vcproj423
-rw-r--r--xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc9.vcproj420
-rw-r--r--xsd/dist/examples/cxx/tree/caching/caching-vc10.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/tree/caching/caching-vc10.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/caching/caching-vc11.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/tree/caching/caching-vc11.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/caching/caching-vc12.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/tree/caching/caching-vc12.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/caching/caching-vc8.vcproj423
-rw-r--r--xsd/dist/examples/cxx/tree/caching/caching-vc9.vcproj420
-rw-r--r--xsd/dist/examples/cxx/tree/caching/makefile28
-rw-r--r--xsd/dist/examples/cxx/tree/compression/compression-vc10.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/tree/compression/compression-vc10.vcxproj.filters50
-rw-r--r--xsd/dist/examples/cxx/tree/compression/compression-vc11.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/tree/compression/compression-vc11.vcxproj.filters50
-rw-r--r--xsd/dist/examples/cxx/tree/compression/compression-vc12.vcxproj217
-rw-r--r--xsd/dist/examples/cxx/tree/compression/compression-vc12.vcxproj.filters50
-rw-r--r--xsd/dist/examples/cxx/tree/compression/compression-vc8.vcproj435
-rw-r--r--xsd/dist/examples/cxx/tree/compression/compression-vc9.vcproj432
-rw-r--r--xsd/dist/examples/cxx/tree/compression/makefile37
-rw-r--r--xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc10.vcxproj229
-rw-r--r--xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc10.vcxproj.filters54
-rw-r--r--xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc11.vcxproj233
-rw-r--r--xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc11.vcxproj.filters54
-rw-r--r--xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc12.vcxproj237
-rw-r--r--xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc12.vcxproj.filters54
-rw-r--r--xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc8.vcproj456
-rw-r--r--xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc9.vcproj453
-rw-r--r--xsd/dist/examples/cxx/tree/custom/calendar/makefile42
-rw-r--r--xsd/dist/examples/cxx/tree/custom/comments/comments-vc10.vcxproj231
-rw-r--r--xsd/dist/examples/cxx/tree/custom/comments/comments-vc10.vcxproj.filters60
-rw-r--r--xsd/dist/examples/cxx/tree/custom/comments/comments-vc11.vcxproj235
-rw-r--r--xsd/dist/examples/cxx/tree/custom/comments/comments-vc11.vcxproj.filters60
-rw-r--r--xsd/dist/examples/cxx/tree/custom/comments/comments-vc12.vcxproj239
-rw-r--r--xsd/dist/examples/cxx/tree/custom/comments/comments-vc12.vcxproj.filters60
-rw-r--r--xsd/dist/examples/cxx/tree/custom/comments/comments-vc8.vcproj464
-rw-r--r--xsd/dist/examples/cxx/tree/custom/comments/comments-vc9.vcproj461
-rw-r--r--xsd/dist/examples/cxx/tree/custom/comments/makefile49
-rw-r--r--xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc10.vcxproj208
-rw-r--r--xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc10.vcxproj.filters51
-rw-r--r--xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc11.vcxproj212
-rw-r--r--xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc11.vcxproj.filters51
-rw-r--r--xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc12.vcxproj216
-rw-r--r--xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc12.vcxproj.filters51
-rw-r--r--xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc8.vcproj440
-rw-r--r--xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc9.vcproj437
-rw-r--r--xsd/dist/examples/cxx/tree/custom/contacts/makefile39
-rw-r--r--xsd/dist/examples/cxx/tree/custom/double/double-vc10.vcxproj229
-rw-r--r--xsd/dist/examples/cxx/tree/custom/double/double-vc10.vcxproj.filters54
-rw-r--r--xsd/dist/examples/cxx/tree/custom/double/double-vc11.vcxproj233
-rw-r--r--xsd/dist/examples/cxx/tree/custom/double/double-vc11.vcxproj.filters54
-rw-r--r--xsd/dist/examples/cxx/tree/custom/double/double-vc12.vcxproj237
-rw-r--r--xsd/dist/examples/cxx/tree/custom/double/double-vc12.vcxproj.filters54
-rw-r--r--xsd/dist/examples/cxx/tree/custom/double/double-vc8.vcproj456
-rw-r--r--xsd/dist/examples/cxx/tree/custom/double/double-vc9.vcproj453
-rw-r--r--xsd/dist/examples/cxx/tree/custom/double/makefile42
-rw-r--r--xsd/dist/examples/cxx/tree/custom/makefile15
-rw-r--r--xsd/dist/examples/cxx/tree/custom/mixed/makefile40
-rw-r--r--xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc10.vcxproj208
-rw-r--r--xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc10.vcxproj.filters51
-rw-r--r--xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc11.vcxproj212
-rw-r--r--xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc11.vcxproj.filters51
-rw-r--r--xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc12.vcxproj216
-rw-r--r--xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc12.vcxproj.filters51
-rw-r--r--xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc8.vcproj440
-rw-r--r--xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc9.vcproj437
-rw-r--r--xsd/dist/examples/cxx/tree/custom/taxonomy/makefile39
-rw-r--r--xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc10.vcxproj210
-rw-r--r--xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc10.vcxproj.filters57
-rw-r--r--xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc11.vcxproj214
-rw-r--r--xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc11.vcxproj.filters57
-rw-r--r--xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc12.vcxproj218
-rw-r--r--xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc12.vcxproj.filters57
-rw-r--r--xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc8.vcproj448
-rw-r--r--xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc9.vcproj445
-rw-r--r--xsd/dist/examples/cxx/tree/custom/wildcard/makefile40
-rw-r--r--xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc10.vcxproj208
-rw-r--r--xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc10.vcxproj.filters51
-rw-r--r--xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc11.vcxproj212
-rw-r--r--xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc11.vcxproj.filters51
-rw-r--r--xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc12.vcxproj216
-rw-r--r--xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc12.vcxproj.filters51
-rw-r--r--xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc8.vcproj440
-rw-r--r--xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc9.vcproj437
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc10.sln38
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc10.vcxproj215
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc10.vcxproj.filters50
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc11.sln38
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc11.vcxproj219
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc11.vcxproj.filters50
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc12.sln40
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc12.vcxproj223
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc12.vcxproj.filters50
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc8.sln41
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc8.vcproj439
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc9.sln41
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/embedded-vc9.vcproj436
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/makefile36
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/xsdbin-vc10.vcxproj182
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/xsdbin-vc10.vcxproj.filters14
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/xsdbin-vc11.vcxproj186
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/xsdbin-vc11.vcxproj.filters14
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/xsdbin-vc12.vcxproj190
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/xsdbin-vc12.vcxproj.filters14
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/xsdbin-vc8.vcproj356
-rw-r--r--xsd/dist/examples/cxx/tree/embedded/xsdbin-vc9.vcproj353
-rw-r--r--xsd/dist/examples/cxx/tree/hello/hello-vc10.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/tree/hello/hello-vc10.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/hello/hello-vc11.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/tree/hello/hello-vc11.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/hello/hello-vc12.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/tree/hello/hello-vc12.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/hello/hello-vc8.vcproj423
-rw-r--r--xsd/dist/examples/cxx/tree/hello/hello-vc9.vcproj420
-rw-r--r--xsd/dist/examples/cxx/tree/hello/makefile29
-rw-r--r--xsd/dist/examples/cxx/tree/library/library-vc10.vcxproj206
-rw-r--r--xsd/dist/examples/cxx/tree/library/library-vc10.vcxproj.filters45
-rw-r--r--xsd/dist/examples/cxx/tree/library/library-vc11.vcxproj210
-rw-r--r--xsd/dist/examples/cxx/tree/library/library-vc11.vcxproj.filters45
-rw-r--r--xsd/dist/examples/cxx/tree/library/library-vc12.vcxproj214
-rw-r--r--xsd/dist/examples/cxx/tree/library/library-vc12.vcxproj.filters45
-rw-r--r--xsd/dist/examples/cxx/tree/library/library-vc8.vcproj432
-rw-r--r--xsd/dist/examples/cxx/tree/library/library-vc9.vcproj429
-rw-r--r--xsd/dist/examples/cxx/tree/library/makefile32
-rw-r--r--xsd/dist/examples/cxx/tree/makefile20
-rw-r--r--xsd/dist/examples/cxx/tree/messaging/makefile35
-rw-r--r--xsd/dist/examples/cxx/tree/messaging/messaging-vc10.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/tree/messaging/messaging-vc10.vcxproj.filters50
-rw-r--r--xsd/dist/examples/cxx/tree/messaging/messaging-vc11.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/tree/messaging/messaging-vc11.vcxproj.filters50
-rw-r--r--xsd/dist/examples/cxx/tree/messaging/messaging-vc12.vcxproj217
-rw-r--r--xsd/dist/examples/cxx/tree/messaging/messaging-vc12.vcxproj.filters50
-rw-r--r--xsd/dist/examples/cxx/tree/messaging/messaging-vc8.vcproj439
-rw-r--r--xsd/dist/examples/cxx/tree/messaging/messaging-vc9.vcproj436
-rw-r--r--xsd/dist/examples/cxx/tree/mixed/makefile28
-rw-r--r--xsd/dist/examples/cxx/tree/mixed/mixed-vc10.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/tree/mixed/mixed-vc10.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/mixed/mixed-vc11.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/tree/mixed/mixed-vc11.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/mixed/mixed-vc12.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/tree/mixed/mixed-vc12.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/mixed/mixed-vc8.vcproj423
-rw-r--r--xsd/dist/examples/cxx/tree/mixed/mixed-vc9.vcproj420
-rw-r--r--xsd/dist/examples/cxx/tree/multiroot/makefile33
-rw-r--r--xsd/dist/examples/cxx/tree/multiroot/multiroot-vc10.vcxproj207
-rw-r--r--xsd/dist/examples/cxx/tree/multiroot/multiroot-vc10.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/tree/multiroot/multiroot-vc11.vcxproj211
-rw-r--r--xsd/dist/examples/cxx/tree/multiroot/multiroot-vc11.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/tree/multiroot/multiroot-vc12.vcxproj215
-rw-r--r--xsd/dist/examples/cxx/tree/multiroot/multiroot-vc12.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/tree/multiroot/multiroot-vc8.vcproj431
-rw-r--r--xsd/dist/examples/cxx/tree/multiroot/multiroot-vc9.vcproj428
-rw-r--r--xsd/dist/examples/cxx/tree/order/element/makefile31
-rw-r--r--xsd/dist/examples/cxx/tree/order/element/order-element-vc10.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/tree/order/element/order-element-vc10.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/order/element/order-element-vc11.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/tree/order/element/order-element-vc11.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/order/element/order-element-vc12.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/tree/order/element/order-element-vc12.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/order/element/order-element-vc8.vcproj423
-rw-r--r--xsd/dist/examples/cxx/tree/order/element/order-element-vc9.vcproj420
-rw-r--r--xsd/dist/examples/cxx/tree/order/makefile11
-rw-r--r--xsd/dist/examples/cxx/tree/order/mixed/makefile32
-rw-r--r--xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc10.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc10.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc11.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc11.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc12.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc12.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc8.vcproj423
-rw-r--r--xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc9.vcproj420
-rw-r--r--xsd/dist/examples/cxx/tree/performance/makefile34
-rw-r--r--xsd/dist/examples/cxx/tree/performance/performance-vc10.vcxproj210
-rw-r--r--xsd/dist/examples/cxx/tree/performance/performance-vc10.vcxproj.filters57
-rw-r--r--xsd/dist/examples/cxx/tree/performance/performance-vc11.vcxproj214
-rw-r--r--xsd/dist/examples/cxx/tree/performance/performance-vc11.vcxproj.filters57
-rw-r--r--xsd/dist/examples/cxx/tree/performance/performance-vc12.vcxproj218
-rw-r--r--xsd/dist/examples/cxx/tree/performance/performance-vc12.vcxproj.filters57
-rw-r--r--xsd/dist/examples/cxx/tree/performance/performance-vc8.vcproj445
-rw-r--r--xsd/dist/examples/cxx/tree/performance/performance-vc9.vcproj442
-rw-r--r--xsd/dist/examples/cxx/tree/polymorphism/makefile30
-rw-r--r--xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc10.vcxproj205
-rw-r--r--xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc10.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc11.vcxproj209
-rw-r--r--xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc11.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc12.vcxproj213
-rw-r--r--xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc12.vcxproj.filters38
-rw-r--r--xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc8.vcproj423
-rw-r--r--xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc9.vcproj420
-rw-r--r--xsd/dist/examples/cxx/tree/streaming/makefile34
-rw-r--r--xsd/dist/examples/cxx/tree/streaming/streaming-vc10.vcxproj211
-rw-r--r--xsd/dist/examples/cxx/tree/streaming/streaming-vc10.vcxproj.filters56
-rw-r--r--xsd/dist/examples/cxx/tree/streaming/streaming-vc11.vcxproj215
-rw-r--r--xsd/dist/examples/cxx/tree/streaming/streaming-vc11.vcxproj.filters56
-rw-r--r--xsd/dist/examples/cxx/tree/streaming/streaming-vc12.vcxproj219
-rw-r--r--xsd/dist/examples/cxx/tree/streaming/streaming-vc12.vcxproj.filters56
-rw-r--r--xsd/dist/examples/cxx/tree/streaming/streaming-vc8.vcproj441
-rw-r--r--xsd/dist/examples/cxx/tree/streaming/streaming-vc9.vcproj438
-rw-r--r--xsd/dist/examples/cxx/tree/wildcard/makefile32
-rw-r--r--xsd/dist/examples/cxx/tree/wildcard/wildcard-vc10.vcxproj206
-rw-r--r--xsd/dist/examples/cxx/tree/wildcard/wildcard-vc10.vcxproj.filters45
-rw-r--r--xsd/dist/examples/cxx/tree/wildcard/wildcard-vc11.vcxproj210
-rw-r--r--xsd/dist/examples/cxx/tree/wildcard/wildcard-vc11.vcxproj.filters45
-rw-r--r--xsd/dist/examples/cxx/tree/wildcard/wildcard-vc12.vcxproj214
-rw-r--r--xsd/dist/examples/cxx/tree/wildcard/wildcard-vc12.vcxproj.filters45
-rw-r--r--xsd/dist/examples/cxx/tree/wildcard/wildcard-vc8.vcproj432
-rw-r--r--xsd/dist/examples/cxx/tree/wildcard/wildcard-vc9.vcproj429
-rw-r--r--xsd/dist/examples/cxx/tree/xpath/makefile30
-rw-r--r--xsd/dist/examples/cxx/tree/xpath/xpath-vc10.vcxproj207
-rw-r--r--xsd/dist/examples/cxx/tree/xpath/xpath-vc10.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/tree/xpath/xpath-vc11.vcxproj211
-rw-r--r--xsd/dist/examples/cxx/tree/xpath/xpath-vc11.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/tree/xpath/xpath-vc12.vcxproj215
-rw-r--r--xsd/dist/examples/cxx/tree/xpath/xpath-vc12.vcxproj.filters44
-rw-r--r--xsd/dist/examples/cxx/tree/xpath/xpath-vc8.vcproj431
-rw-r--r--xsd/dist/examples/cxx/tree/xpath/xpath-vc9.vcproj428
-rw-r--r--xsd/dist/examples/makefile11
-rw-r--r--xsd/dist/examples/test.bat74
-rw-r--r--xsd/dist/examples/tester.bat47
-rw-r--r--xsd/dist/template-vc10.sln15
-rw-r--r--xsd/dist/template-vc11.sln15
-rw-r--r--xsd/dist/template-vc12.sln17
-rw-r--r--xsd/dist/template-vc8.sln15
-rw-r--r--xsd/dist/template-vc9.sln15
-rw-r--r--xsd/doc/cxx/makefile21
-rw-r--r--xsd/doc/cxx/parser/guide/cxx-parser-guide.pdfbin151425 -> 0 bytes
-rw-r--r--xsd/doc/cxx/parser/guide/cxx-parser-guide.ps20731
-rw-r--r--xsd/doc/cxx/parser/guide/guide.html2ps65
-rw-r--r--xsd/doc/cxx/parser/guide/index.xhtml4158
-rw-r--r--xsd/doc/cxx/parser/guide/makefile56
-rw-r--r--xsd/doc/cxx/parser/makefile21
-rw-r--r--xsd/doc/cxx/tree/guide/cxx-tree-guide.pdfbin95081 -> 0 bytes
-rw-r--r--xsd/doc/cxx/tree/guide/cxx-tree-guide.ps3509
-rw-r--r--xsd/doc/cxx/tree/guide/guide.html2ps65
-rw-r--r--xsd/doc/cxx/tree/guide/index.xhtml2732
-rw-r--r--xsd/doc/cxx/tree/guide/makefile54
-rw-r--r--xsd/doc/cxx/tree/makefile41
-rw-r--r--xsd/doc/cxx/tree/manual/cxx-tree-manual.pdfbin221921 -> 0 bytes
-rw-r--r--xsd/doc/cxx/tree/manual/cxx-tree-manual.ps7382
-rw-r--r--xsd/doc/cxx/tree/manual/index.xhtml6822
-rw-r--r--xsd/doc/cxx/tree/manual/makefile54
-rw-r--r--xsd/doc/cxx/tree/manual/manual.html2ps66
-rw-r--r--xsd/doc/cxx/tree/reference/footer.html6
-rw-r--r--xsd/doc/cxx/tree/reference/libxsd.doxygen1322
-rw-r--r--xsd/doc/cxx/tree/reference/makefile18
-rw-r--r--xsd/doc/makefile143
-rw-r--r--xsd/doc/xsd-epilogue.1566
-rw-r--r--xsd/doc/xsd-epilogue.xhtml422
-rw-r--r--xsd/doc/xsd-prologue.1119
-rw-r--r--xsd/doc/xsd-prologue.xhtml120
-rw-r--r--xsd/doc/xsd.11648
-rw-r--r--xsd/doc/xsd.xhtml1555
-rw-r--r--xsd/elements.hxx125
-rw-r--r--xsd/examples/cxx/parser/README45
-rw-r--r--xsd/examples/cxx/parser/generated/README32
-rw-r--r--xsd/examples/cxx/parser/generated/library.xml52
-rw-r--r--xsd/examples/cxx/parser/generated/library.xsd78
-rw-r--r--xsd/examples/cxx/parser/generated/makefile110
-rw-r--r--xsd/examples/cxx/parser/hello/README28
-rw-r--r--xsd/examples/cxx/parser/hello/driver.cxx67
-rw-r--r--xsd/examples/cxx/parser/hello/hello.xml19
-rw-r--r--xsd/examples/cxx/parser/hello/hello.xsd21
-rw-r--r--xsd/examples/cxx/parser/hello/makefile101
-rw-r--r--xsd/examples/cxx/parser/library/README44
-rw-r--r--xsd/examples/cxx/parser/library/driver.cxx109
-rw-r--r--xsd/examples/cxx/parser/library/library-pimpl.cxx183
-rw-r--r--xsd/examples/cxx/parser/library/library-pimpl.hxx135
-rw-r--r--xsd/examples/cxx/parser/library/library.hxx241
-rw-r--r--xsd/examples/cxx/parser/library/library.map15
-rw-r--r--xsd/examples/cxx/parser/library/library.xml52
-rw-r--r--xsd/examples/cxx/parser/library/library.xsd78
-rw-r--r--xsd/examples/cxx/parser/library/makefile110
-rw-r--r--xsd/examples/cxx/parser/makefile56
-rw-r--r--xsd/examples/cxx/parser/mixed/README49
-rw-r--r--xsd/examples/cxx/parser/mixed/anchor.hxx33
-rw-r--r--xsd/examples/cxx/parser/mixed/driver.cxx100
-rw-r--r--xsd/examples/cxx/parser/mixed/makefile107
-rw-r--r--xsd/examples/cxx/parser/mixed/text.map6
-rw-r--r--xsd/examples/cxx/parser/mixed/text.xml17
-rw-r--r--xsd/examples/cxx/parser/mixed/text.xsd28
-rw-r--r--xsd/examples/cxx/parser/mixin/README34
-rw-r--r--xsd/examples/cxx/parser/mixin/driver.cxx103
-rw-r--r--xsd/examples/cxx/parser/mixin/instance.xml16
-rw-r--r--xsd/examples/cxx/parser/mixin/makefile107
-rw-r--r--xsd/examples/cxx/parser/mixin/schema.map7
-rw-r--r--xsd/examples/cxx/parser/mixin/schema.xsd30
-rw-r--r--xsd/examples/cxx/parser/mixin/types.hxx43
-rw-r--r--xsd/examples/cxx/parser/multiroot/README51
-rw-r--r--xsd/examples/cxx/parser/multiroot/balance.xml16
-rw-r--r--xsd/examples/cxx/parser/multiroot/deposit.xml17
-rw-r--r--xsd/examples/cxx/parser/multiroot/driver.cxx161
-rw-r--r--xsd/examples/cxx/parser/multiroot/makefile113
-rw-r--r--xsd/examples/cxx/parser/multiroot/protocol-pimpl.cxx46
-rw-r--r--xsd/examples/cxx/parser/multiroot/protocol-pimpl.hxx48
-rw-r--r--xsd/examples/cxx/parser/multiroot/protocol.hxx61
-rw-r--r--xsd/examples/cxx/parser/multiroot/protocol.map11
-rw-r--r--xsd/examples/cxx/parser/multiroot/protocol.xsd50
-rw-r--r--xsd/examples/cxx/parser/multiroot/withdraw.xml17
-rw-r--r--xsd/examples/cxx/parser/performance/README42
-rw-r--r--xsd/examples/cxx/parser/performance/driver.cxx341
-rw-r--r--xsd/examples/cxx/parser/performance/gen.cxx76
-rw-r--r--xsd/examples/cxx/parser/performance/makefile109
-rw-r--r--xsd/examples/cxx/parser/performance/test-50k.xml1
-rw-r--r--xsd/examples/cxx/parser/performance/test.xsd49
-rw-r--r--xsd/examples/cxx/parser/performance/time.cxx46
-rw-r--r--xsd/examples/cxx/parser/performance/time.hxx110
-rw-r--r--xsd/examples/cxx/parser/polymorphism/README30
-rw-r--r--xsd/examples/cxx/parser/polymorphism/driver.cxx70
-rw-r--r--xsd/examples/cxx/parser/polymorphism/makefile106
-rw-r--r--xsd/examples/cxx/parser/polymorphism/supermen-pimpl.cxx85
-rw-r--r--xsd/examples/cxx/parser/polymorphism/supermen-pimpl.hxx68
-rw-r--r--xsd/examples/cxx/parser/polymorphism/supermen.xml25
-rw-r--r--xsd/examples/cxx/parser/polymorphism/supermen.xsd48
-rw-r--r--xsd/examples/cxx/parser/polyroot/README36
-rw-r--r--xsd/examples/cxx/parser/polyroot/batman.xml16
-rw-r--r--xsd/examples/cxx/parser/polyroot/driver.cxx138
-rw-r--r--xsd/examples/cxx/parser/polyroot/makefile110
-rw-r--r--xsd/examples/cxx/parser/polyroot/person.xml15
-rw-r--r--xsd/examples/cxx/parser/polyroot/superman.xml16
-rw-r--r--xsd/examples/cxx/parser/polyroot/supermen-pimpl.cxx85
-rw-r--r--xsd/examples/cxx/parser/polyroot/supermen-pimpl.hxx64
-rw-r--r--xsd/examples/cxx/parser/polyroot/supermen.xsd36
-rw-r--r--xsd/examples/cxx/parser/wildcard/README27
-rw-r--r--xsd/examples/cxx/parser/wildcard/driver.cxx239
-rw-r--r--xsd/examples/cxx/parser/wildcard/email.xml31
-rw-r--r--xsd/examples/cxx/parser/wildcard/email.xsd50
-rw-r--r--xsd/examples/cxx/parser/wildcard/makefile102
-rw-r--r--xsd/examples/cxx/tree/README80
-rw-r--r--xsd/examples/cxx/tree/binary/README16
-rw-r--r--xsd/examples/cxx/tree/binary/boost/README49
-rw-r--r--xsd/examples/cxx/tree/binary/boost/boost-archive-extraction.hxx188
-rw-r--r--xsd/examples/cxx/tree/binary/boost/boost-archive-insertion.hxx177
-rw-r--r--xsd/examples/cxx/tree/binary/boost/driver.cxx72
-rw-r--r--xsd/examples/cxx/tree/binary/boost/library-prologue.hxx9
-rw-r--r--xsd/examples/cxx/tree/binary/boost/library.xml52
-rw-r--r--xsd/examples/cxx/tree/binary/boost/library.xsd75
-rw-r--r--xsd/examples/cxx/tree/binary/boost/makefile132
-rw-r--r--xsd/examples/cxx/tree/binary/cdr/README36
-rw-r--r--xsd/examples/cxx/tree/binary/cdr/driver.cxx87
-rw-r--r--xsd/examples/cxx/tree/binary/cdr/library.xml52
-rw-r--r--xsd/examples/cxx/tree/binary/cdr/library.xsd75
-rw-r--r--xsd/examples/cxx/tree/binary/cdr/makefile120
-rw-r--r--xsd/examples/cxx/tree/binary/makefile56
-rw-r--r--xsd/examples/cxx/tree/binary/xdr/README34
-rw-r--r--xsd/examples/cxx/tree/binary/xdr/driver.cxx148
-rw-r--r--xsd/examples/cxx/tree/binary/xdr/library.xml52
-rw-r--r--xsd/examples/cxx/tree/binary/xdr/library.xsd75
-rw-r--r--xsd/examples/cxx/tree/binary/xdr/makefile114
-rw-r--r--xsd/examples/cxx/tree/caching/README29
-rw-r--r--xsd/examples/cxx/tree/caching/driver.cxx165
-rw-r--r--xsd/examples/cxx/tree/caching/library.xml52
-rw-r--r--xsd/examples/cxx/tree/caching/library.xsd72
-rw-r--r--xsd/examples/cxx/tree/caching/makefile101
-rw-r--r--xsd/examples/cxx/tree/compression/README48
-rw-r--r--xsd/examples/cxx/tree/compression/compressed-format-target.cxx152
-rw-r--r--xsd/examples/cxx/tree/compression/compressed-format-target.hxx91
-rw-r--r--xsd/examples/cxx/tree/compression/compressed-input-source.cxx195
-rw-r--r--xsd/examples/cxx/tree/compression/compressed-input-source.hxx121
-rw-r--r--xsd/examples/cxx/tree/compression/driver.cxx124
-rw-r--r--xsd/examples/cxx/tree/compression/library.xml.gzbin486 -> 0 bytes
-rw-r--r--xsd/examples/cxx/tree/compression/library.xsd72
-rw-r--r--xsd/examples/cxx/tree/compression/makefile128
-rw-r--r--xsd/examples/cxx/tree/custom/README40
-rw-r--r--xsd/examples/cxx/tree/custom/calendar/README47
-rw-r--r--xsd/examples/cxx/tree/custom/calendar/calendar.xml22
-rw-r--r--xsd/examples/cxx/tree/custom/calendar/calendar.xsd31
-rw-r--r--xsd/examples/cxx/tree/custom/calendar/driver.cxx39
-rw-r--r--xsd/examples/cxx/tree/custom/calendar/makefile137
-rw-r--r--xsd/examples/cxx/tree/custom/calendar/xml-schema-custom.cxx56
-rw-r--r--xsd/examples/cxx/tree/custom/calendar/xml-schema-custom.hxx33
-rw-r--r--xsd/examples/cxx/tree/custom/comments/README57
-rw-r--r--xsd/examples/cxx/tree/custom/comments/dom-parse.cxx93
-rw-r--r--xsd/examples/cxx/tree/custom/comments/dom-parse.hxx22
-rw-r--r--xsd/examples/cxx/tree/custom/comments/driver.cxx90
-rw-r--r--xsd/examples/cxx/tree/custom/comments/makefile123
-rw-r--r--xsd/examples/cxx/tree/custom/comments/people.xml20
-rw-r--r--xsd/examples/cxx/tree/custom/comments/people.xsd29
-rw-r--r--xsd/examples/cxx/tree/custom/comments/xml-schema-custom.cxx117
-rw-r--r--xsd/examples/cxx/tree/custom/comments/xml-schema-custom.hxx57
-rw-r--r--xsd/examples/cxx/tree/custom/contacts/README40
-rw-r--r--xsd/examples/cxx/tree/custom/contacts/contacts-custom.cxx50
-rw-r--r--xsd/examples/cxx/tree/custom/contacts/contacts-custom.hxx43
-rw-r--r--xsd/examples/cxx/tree/custom/contacts/contacts.xml20
-rw-r--r--xsd/examples/cxx/tree/custom/contacts/contacts.xsd31
-rw-r--r--xsd/examples/cxx/tree/custom/contacts/driver.cxx38
-rw-r--r--xsd/examples/cxx/tree/custom/contacts/makefile113
-rw-r--r--xsd/examples/cxx/tree/custom/double/README62
-rw-r--r--xsd/examples/cxx/tree/custom/double/double-custom.cxx96
-rw-r--r--xsd/examples/cxx/tree/custom/double/double-custom.hxx67
-rw-r--r--xsd/examples/cxx/tree/custom/double/driver.cxx31
-rw-r--r--xsd/examples/cxx/tree/custom/double/makefile112
-rw-r--r--xsd/examples/cxx/tree/custom/double/order.xsd25
-rw-r--r--xsd/examples/cxx/tree/custom/makefile61
-rw-r--r--xsd/examples/cxx/tree/custom/mixed/README50
-rw-r--r--xsd/examples/cxx/tree/custom/mixed/driver.cxx123
-rw-r--r--xsd/examples/cxx/tree/custom/mixed/makefile115
-rw-r--r--xsd/examples/cxx/tree/custom/mixed/people-custom.cxx89
-rw-r--r--xsd/examples/cxx/tree/custom/mixed/people-custom.hxx83
-rw-r--r--xsd/examples/cxx/tree/custom/mixed/people.xml38
-rw-r--r--xsd/examples/cxx/tree/custom/mixed/people.xsd45
-rw-r--r--xsd/examples/cxx/tree/custom/taxonomy/README53
-rw-r--r--xsd/examples/cxx/tree/custom/taxonomy/driver.cxx38
-rw-r--r--xsd/examples/cxx/tree/custom/taxonomy/makefile122
-rw-r--r--xsd/examples/cxx/tree/custom/taxonomy/people-custom-fwd.hxx19
-rw-r--r--xsd/examples/cxx/tree/custom/taxonomy/people-custom.cxx156
-rw-r--r--xsd/examples/cxx/tree/custom/taxonomy/people-custom.hxx96
-rw-r--r--xsd/examples/cxx/tree/custom/taxonomy/people.xml26
-rw-r--r--xsd/examples/cxx/tree/custom/taxonomy/people.xsd44
-rw-r--r--xsd/examples/cxx/tree/custom/wildcard/README45
-rw-r--r--xsd/examples/cxx/tree/custom/wildcard/driver.cxx47
-rw-r--r--xsd/examples/cxx/tree/custom/wildcard/makefile116
-rw-r--r--xsd/examples/cxx/tree/custom/wildcard/wildcard-custom.cxx84
-rw-r--r--xsd/examples/cxx/tree/custom/wildcard/wildcard-custom.hxx66
-rw-r--r--xsd/examples/cxx/tree/custom/wildcard/wildcard.xml14
-rw-r--r--xsd/examples/cxx/tree/custom/wildcard/wildcard.xsd25
-rw-r--r--xsd/examples/cxx/tree/embedded/README48
-rw-r--r--xsd/examples/cxx/tree/embedded/driver.cxx183
-rw-r--r--xsd/examples/cxx/tree/embedded/grammar-input-stream.cxx95
-rw-r--r--xsd/examples/cxx/tree/embedded/grammar-input-stream.hxx40
-rw-r--r--xsd/examples/cxx/tree/embedded/library.xml52
-rw-r--r--xsd/examples/cxx/tree/embedded/library.xsd72
-rw-r--r--xsd/examples/cxx/tree/embedded/makefile123
-rw-r--r--xsd/examples/cxx/tree/embedded/xsdbin.cxx494
-rw-r--r--xsd/examples/cxx/tree/hello/README26
-rw-r--r--xsd/examples/cxx/tree/hello/driver.cxx36
-rw-r--r--xsd/examples/cxx/tree/hello/hello.xml19
-rw-r--r--xsd/examples/cxx/tree/hello/hello.xsd52
-rw-r--r--xsd/examples/cxx/tree/hello/makefile101
-rw-r--r--xsd/examples/cxx/tree/library/README32
-rw-r--r--xsd/examples/cxx/tree/library/driver.cxx130
-rw-r--r--xsd/examples/cxx/tree/library/library.xml52
-rw-r--r--xsd/examples/cxx/tree/library/library.xsd72
-rw-r--r--xsd/examples/cxx/tree/library/makefile102
-rw-r--r--xsd/examples/cxx/tree/makefile70
-rw-r--r--xsd/examples/cxx/tree/messaging/README58
-rw-r--r--xsd/examples/cxx/tree/messaging/balance.xml16
-rw-r--r--xsd/examples/cxx/tree/messaging/deposit.xml17
-rw-r--r--xsd/examples/cxx/tree/messaging/dom-parse.cxx93
-rw-r--r--xsd/examples/cxx/tree/messaging/dom-parse.hxx22
-rw-r--r--xsd/examples/cxx/tree/messaging/dom-serialize.cxx64
-rw-r--r--xsd/examples/cxx/tree/messaging/dom-serialize.hxx20
-rw-r--r--xsd/examples/cxx/tree/messaging/driver.cxx144
-rw-r--r--xsd/examples/cxx/tree/messaging/makefile117
-rw-r--r--xsd/examples/cxx/tree/messaging/protocol.xsd53
-rw-r--r--xsd/examples/cxx/tree/messaging/withdraw.xml17
-rw-r--r--xsd/examples/cxx/tree/mixed/README45
-rw-r--r--xsd/examples/cxx/tree/mixed/driver.cxx122
-rw-r--r--xsd/examples/cxx/tree/mixed/makefile102
-rw-r--r--xsd/examples/cxx/tree/mixed/text.xml17
-rw-r--r--xsd/examples/cxx/tree/mixed/text.xsd28
-rw-r--r--xsd/examples/cxx/tree/multiroot/README45
-rw-r--r--xsd/examples/cxx/tree/multiroot/balance.xml16
-rw-r--r--xsd/examples/cxx/tree/multiroot/deposit.xml17
-rw-r--r--xsd/examples/cxx/tree/multiroot/dom-parse.cxx93
-rw-r--r--xsd/examples/cxx/tree/multiroot/dom-parse.hxx22
-rw-r--r--xsd/examples/cxx/tree/multiroot/driver.cxx124
-rw-r--r--xsd/examples/cxx/tree/multiroot/makefile109
-rw-r--r--xsd/examples/cxx/tree/multiroot/protocol.xsd50
-rw-r--r--xsd/examples/cxx/tree/multiroot/withdraw.xml17
-rw-r--r--xsd/examples/cxx/tree/order/README11
-rw-r--r--xsd/examples/cxx/tree/order/element/README35
-rw-r--r--xsd/examples/cxx/tree/order/element/driver.cxx147
-rw-r--r--xsd/examples/cxx/tree/order/element/makefile100
-rw-r--r--xsd/examples/cxx/tree/order/element/transactions.xml32
-rw-r--r--xsd/examples/cxx/tree/order/element/transactions.xsd58
-rw-r--r--xsd/examples/cxx/tree/order/makefile44
-rw-r--r--xsd/examples/cxx/tree/order/mixed/README45
-rw-r--r--xsd/examples/cxx/tree/order/mixed/driver.cxx89
-rw-r--r--xsd/examples/cxx/tree/order/mixed/makefile99
-rw-r--r--xsd/examples/cxx/tree/order/mixed/text.xml17
-rw-r--r--xsd/examples/cxx/tree/order/mixed/text.xsd28
-rw-r--r--xsd/examples/cxx/tree/performance/README58
-rw-r--r--xsd/examples/cxx/tree/performance/driver.cxx90
-rw-r--r--xsd/examples/cxx/tree/performance/gen.cxx76
-rw-r--r--xsd/examples/cxx/tree/performance/makefile111
-rw-r--r--xsd/examples/cxx/tree/performance/parsing.cxx172
-rw-r--r--xsd/examples/cxx/tree/performance/serialization.cxx132
-rw-r--r--xsd/examples/cxx/tree/performance/test-50k.xml1
-rw-r--r--xsd/examples/cxx/tree/performance/test.xsd49
-rw-r--r--xsd/examples/cxx/tree/performance/time.cxx46
-rw-r--r--xsd/examples/cxx/tree/performance/time.hxx110
-rw-r--r--xsd/examples/cxx/tree/polymorphism/README32
-rw-r--r--xsd/examples/cxx/tree/polymorphism/driver.cxx59
-rw-r--r--xsd/examples/cxx/tree/polymorphism/makefile104
-rw-r--r--xsd/examples/cxx/tree/polymorphism/supermen.xml25
-rw-r--r--xsd/examples/cxx/tree/polymorphism/supermen.xsd48
-rw-r--r--xsd/examples/cxx/tree/streaming/README51
-rw-r--r--xsd/examples/cxx/tree/streaming/driver.cxx139
-rw-r--r--xsd/examples/cxx/tree/streaming/grammar-input-stream.cxx96
-rw-r--r--xsd/examples/cxx/tree/streaming/grammar-input-stream.hxx41
-rw-r--r--xsd/examples/cxx/tree/streaming/makefile115
-rw-r--r--xsd/examples/cxx/tree/streaming/parser.cxx372
-rw-r--r--xsd/examples/cxx/tree/streaming/parser.hxx67
-rw-r--r--xsd/examples/cxx/tree/streaming/position.xml29
-rw-r--r--xsd/examples/cxx/tree/streaming/position.xsd37
-rw-r--r--xsd/examples/cxx/tree/streaming/serializer.cxx607
-rw-r--r--xsd/examples/cxx/tree/streaming/serializer.hxx205
-rw-r--r--xsd/examples/cxx/tree/wildcard/README34
-rw-r--r--xsd/examples/cxx/tree/wildcard/driver.cxx159
-rw-r--r--xsd/examples/cxx/tree/wildcard/email.xml31
-rw-r--r--xsd/examples/cxx/tree/wildcard/email.xsd50
-rw-r--r--xsd/examples/cxx/tree/wildcard/makefile102
-rw-r--r--xsd/examples/cxx/tree/xpath/README43
-rw-r--r--xsd/examples/cxx/tree/xpath/dom-parse.cxx88
-rw-r--r--xsd/examples/cxx/tree/xpath/dom-parse.hxx25
-rw-r--r--xsd/examples/cxx/tree/xpath/driver.cxx136
-rw-r--r--xsd/examples/cxx/tree/xpath/makefile123
-rw-r--r--xsd/examples/cxx/tree/xpath/people.xml28
-rw-r--r--xsd/examples/cxx/tree/xpath/people.xsd38
-rw-r--r--xsd/examples/makefile20
-rw-r--r--xsd/libxsd/FLOSSE89
-rw-r--r--xsd/libxsd/GPLv2340
-rw-r--r--xsd/libxsd/INSTALL17
-rw-r--r--xsd/libxsd/LICENSE26
-rw-r--r--xsd/libxsd/README12
-rw-r--r--xsd/libxsd/makefile44
-rw-r--r--xsd/libxsd/xsd/cxx/auto-array.hxx119
-rw-r--r--xsd/libxsd/xsd/cxx/compilers/vc-8/post.hxx5
-rw-r--r--xsd/libxsd/xsd/cxx/compilers/vc-8/pre.hxx27
-rw-r--r--xsd/libxsd/xsd/cxx/config.hxx47
-rw-r--r--xsd/libxsd/xsd/cxx/exceptions.hxx20
-rw-r--r--xsd/libxsd/xsd/cxx/parser/document.hxx89
-rw-r--r--xsd/libxsd/xsd/cxx/parser/document.txx128
-rw-r--r--xsd/libxsd/xsd/cxx/parser/elements.hxx94
-rw-r--r--xsd/libxsd/xsd/cxx/parser/elements.txx59
-rw-r--r--xsd/libxsd/xsd/cxx/parser/error-handler.hxx56
-rw-r--r--xsd/libxsd/xsd/cxx/parser/error-handler.txx40
-rw-r--r--xsd/libxsd/xsd/cxx/parser/exceptions.hxx152
-rw-r--r--xsd/libxsd/xsd/cxx/parser/exceptions.ixx128
-rw-r--r--xsd/libxsd/xsd/cxx/parser/exceptions.txx58
-rw-r--r--xsd/libxsd/xsd/cxx/parser/expat/elements.hxx362
-rw-r--r--xsd/libxsd/xsd/cxx/parser/expat/elements.txx821
-rw-r--r--xsd/libxsd/xsd/cxx/parser/map.hxx78
-rw-r--r--xsd/libxsd/xsd/cxx/parser/map.ixx26
-rw-r--r--xsd/libxsd/xsd/cxx/parser/map.txx30
-rw-r--r--xsd/libxsd/xsd/cxx/parser/non-validating/parser.hxx247
-rw-r--r--xsd/libxsd/xsd/cxx/parser/non-validating/parser.txx463
-rw-r--r--xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx792
-rw-r--r--xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx128
-rw-r--r--xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.txx2067
-rw-r--r--xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.hxx648
-rw-r--r--xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.ixx1248
-rw-r--r--xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx68
-rw-r--r--xsd/libxsd/xsd/cxx/parser/schema-exceptions.hxx186
-rw-r--r--xsd/libxsd/xsd/cxx/parser/schema-exceptions.ixx144
-rw-r--r--xsd/libxsd/xsd/cxx/parser/schema-exceptions.txx74
-rw-r--r--xsd/libxsd/xsd/cxx/parser/substitution-map.hxx240
-rw-r--r--xsd/libxsd/xsd/cxx/parser/substitution-map.txx83
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/exceptions.hxx152
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/exceptions.ixx162
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/exceptions.txx96
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/inheritance-map.hxx100
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/inheritance-map.txx72
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/parser.hxx470
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/parser.txx666
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.hxx1122
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.ixx675
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx2757
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.hxx648
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.ixx1248
-rw-r--r--xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.txx68
-rw-r--r--xsd/libxsd/xsd/cxx/parser/xerces/elements.hxx464
-rw-r--r--xsd/libxsd/xsd/cxx/parser/xerces/elements.txx948
-rw-r--r--xsd/libxsd/xsd/cxx/parser/xml-schema.hxx571
-rw-r--r--xsd/libxsd/xsd/cxx/parser/xml-schema.ixx1021
-rw-r--r--xsd/libxsd/xsd/cxx/parser/xml-schema.txx33
-rw-r--r--xsd/libxsd/xsd/cxx/post.hxx9
-rw-r--r--xsd/libxsd/xsd/cxx/pre.hxx11
-rw-r--r--xsd/libxsd/xsd/cxx/ro-string.hxx429
-rw-r--r--xsd/libxsd/xsd/cxx/ro-string.txx132
-rw-r--r--xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-common.hxx25
-rw-r--r--xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-extraction.hxx347
-rw-r--r--xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-insertion.hxx248
-rw-r--r--xsd/libxsd/xsd/cxx/tree/bits/literals.hxx260
-rw-r--r--xsd/libxsd/xsd/cxx/tree/bits/literals.ixx875
-rw-r--r--xsd/libxsd/xsd/cxx/tree/buffer.hxx336
-rw-r--r--xsd/libxsd/xsd/cxx/tree/buffer.txx146
-rw-r--r--xsd/libxsd/xsd/cxx/tree/comparison-map.hxx112
-rw-r--r--xsd/libxsd/xsd/cxx/tree/comparison-map.txx299
-rw-r--r--xsd/libxsd/xsd/cxx/tree/containers-wildcard.hxx1334
-rw-r--r--xsd/libxsd/xsd/cxx/tree/containers.hxx1208
-rw-r--r--xsd/libxsd/xsd/cxx/tree/containers.txx296
-rw-r--r--xsd/libxsd/xsd/cxx/tree/date-time-extraction.txx156
-rw-r--r--xsd/libxsd/xsd/cxx/tree/date-time-insertion.txx187
-rw-r--r--xsd/libxsd/xsd/cxx/tree/date-time-ostream.txx323
-rw-r--r--xsd/libxsd/xsd/cxx/tree/date-time.hxx1950
-rw-r--r--xsd/libxsd/xsd/cxx/tree/date-time.ixx892
-rw-r--r--xsd/libxsd/xsd/cxx/tree/date-time.txx93
-rw-r--r--xsd/libxsd/xsd/cxx/tree/element-map.hxx147
-rw-r--r--xsd/libxsd/xsd/cxx/tree/element-map.txx70
-rw-r--r--xsd/libxsd/xsd/cxx/tree/elements.hxx1858
-rw-r--r--xsd/libxsd/xsd/cxx/tree/elements.ixx266
-rw-r--r--xsd/libxsd/xsd/cxx/tree/elements.txx56
-rw-r--r--xsd/libxsd/xsd/cxx/tree/error-handler.hxx61
-rw-r--r--xsd/libxsd/xsd/cxx/tree/error-handler.txx31
-rw-r--r--xsd/libxsd/xsd/cxx/tree/exceptions.hxx1033
-rw-r--r--xsd/libxsd/xsd/cxx/tree/exceptions.txx509
-rw-r--r--xsd/libxsd/xsd/cxx/tree/facet.hxx42
-rw-r--r--xsd/libxsd/xsd/cxx/tree/istream-fwd.hxx20
-rw-r--r--xsd/libxsd/xsd/cxx/tree/istream.hxx454
-rw-r--r--xsd/libxsd/xsd/cxx/tree/iterator-adapter.hxx270
-rw-r--r--xsd/libxsd/xsd/cxx/tree/list.hxx134
-rw-r--r--xsd/libxsd/xsd/cxx/tree/ostream.hxx291
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing.hxx11
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing.txx919
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/boolean.hxx75
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/byte.hxx79
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/date-time.txx701
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/decimal.hxx84
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/double.hxx93
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/element-map.txx41
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/float.hxx93
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/int.hxx79
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/long.hxx79
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/short.hxx79
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/unsigned-byte.hxx79
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/unsigned-int.hxx79
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/unsigned-long.hxx79
-rw-r--r--xsd/libxsd/xsd/cxx/tree/parsing/unsigned-short.hxx79
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization.hxx65
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization.txx790
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/boolean.hxx51
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/byte.hxx45
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/date-time.txx619
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/decimal.hxx125
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/double.hxx95
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/element-map.txx39
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/float.hxx93
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/int.hxx45
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/long.hxx45
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/short.hxx45
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/unsigned-byte.hxx45
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/unsigned-int.hxx45
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/unsigned-long.hxx45
-rw-r--r--xsd/libxsd/xsd/cxx/tree/serialization/unsigned-short.hxx45
-rw-r--r--xsd/libxsd/xsd/cxx/tree/std-ostream-map.hxx113
-rw-r--r--xsd/libxsd/xsd/cxx/tree/std-ostream-map.txx292
-rw-r--r--xsd/libxsd/xsd/cxx/tree/std-ostream-operators.hxx277
-rw-r--r--xsd/libxsd/xsd/cxx/tree/stream-extraction-map.hxx106
-rw-r--r--xsd/libxsd/xsd/cxx/tree/stream-extraction-map.txx332
-rw-r--r--xsd/libxsd/xsd/cxx/tree/stream-extraction.hxx305
-rw-r--r--xsd/libxsd/xsd/cxx/tree/stream-insertion-map.hxx153
-rw-r--r--xsd/libxsd/xsd/cxx/tree/stream-insertion-map.txx356
-rw-r--r--xsd/libxsd/xsd/cxx/tree/stream-insertion.hxx276
-rw-r--r--xsd/libxsd/xsd/cxx/tree/text.hxx29
-rw-r--r--xsd/libxsd/xsd/cxx/tree/text.txx62
-rw-r--r--xsd/libxsd/xsd/cxx/tree/type-factory-map.hxx174
-rw-r--r--xsd/libxsd/xsd/cxx/tree/type-factory-map.txx479
-rw-r--r--xsd/libxsd/xsd/cxx/tree/type-serializer-map.hxx235
-rw-r--r--xsd/libxsd/xsd/cxx/tree/type-serializer-map.txx573
-rw-r--r--xsd/libxsd/xsd/cxx/tree/types.hxx3943
-rw-r--r--xsd/libxsd/xsd/cxx/tree/types.txx524
-rw-r--r--xsd/libxsd/xsd/cxx/tree/xdr-stream-common.hxx25
-rw-r--r--xsd/libxsd/xsd/cxx/tree/xdr-stream-extraction.hxx307
-rw-r--r--xsd/libxsd/xsd/cxx/tree/xdr-stream-insertion.hxx271
-rw-r--r--xsd/libxsd/xsd/cxx/version.hxx28
-rw-r--r--xsd/libxsd/xsd/cxx/xml/bits/literals.hxx82
-rw-r--r--xsd/libxsd/xsd/cxx/xml/bits/literals.ixx260
-rw-r--r--xsd/libxsd/xsd/cxx/xml/char-iso8859-1.hxx71
-rw-r--r--xsd/libxsd/xsd/cxx/xml/char-iso8859-1.txx111
-rw-r--r--xsd/libxsd/xsd/cxx/xml/char-lcp.hxx55
-rw-r--r--xsd/libxsd/xsd/cxx/xml/char-lcp.txx74
-rw-r--r--xsd/libxsd/xsd/cxx/xml/char-utf8.hxx56
-rw-r--r--xsd/libxsd/xsd/cxx/xml/char-utf8.txx303
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/auto-ptr.hxx233
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/bits/error-handler-proxy.hxx60
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/bits/error-handler-proxy.txx67
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/elements.hxx35
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/elements.txx56
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/parsing-header.hxx23
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/parsing-source.hxx153
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/parsing-source.txx380
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/serialization-header.hxx80
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/serialization-header.txx181
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/serialization-source.hxx182
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/serialization-source.txx363
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/wildcard-source.hxx30
-rw-r--r--xsd/libxsd/xsd/cxx/xml/dom/wildcard-source.txx37
-rw-r--r--xsd/libxsd/xsd/cxx/xml/elements.hxx117
-rw-r--r--xsd/libxsd/xsd/cxx/xml/elements.txx72
-rw-r--r--xsd/libxsd/xsd/cxx/xml/error-handler.hxx58
-rw-r--r--xsd/libxsd/xsd/cxx/xml/exceptions.hxx19
-rw-r--r--xsd/libxsd/xsd/cxx/xml/qualified-name.hxx83
-rw-r--r--xsd/libxsd/xsd/cxx/xml/sax/bits/error-handler-proxy.hxx79
-rw-r--r--xsd/libxsd/xsd/cxx/xml/sax/bits/error-handler-proxy.txx77
-rw-r--r--xsd/libxsd/xsd/cxx/xml/sax/std-input-source.hxx152
-rw-r--r--xsd/libxsd/xsd/cxx/xml/std-memory-manager.hxx54
-rw-r--r--xsd/libxsd/xsd/cxx/xml/string.hxx90
-rw-r--r--xsd/libxsd/xsd/cxx/xml/string.ixx170
-rw-r--r--xsd/libxsd/xsd/cxx/xml/string.txx162
-rw-r--r--xsd/libxsd/xsd/cxx/zc-istream.hxx216
-rw-r--r--xsd/libxsd/xsd/cxx/zc-istream.txx93
-rw-r--r--xsd/makefile103
-rw-r--r--xsd/options-parser.hxx29
-rw-r--r--xsd/options.cli322
-rw-r--r--xsd/pregenerated/xsd/cxx/options.cxx739
-rw-r--r--xsd/pregenerated/xsd/cxx/options.hxx451
-rw-r--r--xsd/pregenerated/xsd/cxx/options.ixx615
-rw-r--r--xsd/pregenerated/xsd/cxx/parser/options.cxx776
-rw-r--r--xsd/pregenerated/xsd/cxx/parser/options.hxx186
-rw-r--r--xsd/pregenerated/xsd/cxx/parser/options.ixx162
-rw-r--r--xsd/pregenerated/xsd/cxx/tree/options.cxx1343
-rw-r--r--xsd/pregenerated/xsd/cxx/tree/options.hxx414
-rw-r--r--xsd/pregenerated/xsd/cxx/tree/options.ixx504
-rw-r--r--xsd/pregenerated/xsd/options.cxx1297
-rw-r--r--xsd/pregenerated/xsd/options.hxx702
-rw-r--r--xsd/pregenerated/xsd/options.ixx555
-rw-r--r--xsd/processing/cardinality/processor.cxx407
-rw-r--r--xsd/processing/cardinality/processor.hxx28
-rw-r--r--xsd/processing/inheritance/processor.cxx492
-rw-r--r--xsd/processing/inheritance/processor.hxx28
-rw-r--r--xsd/tests/clash/clash.xsd25
-rw-r--r--xsd/tests/clash/foo.xsd11
-rw-r--r--xsd/tests/code/name-conflict/test.xsd40
-rw-r--r--xsd/tests/code/name-escaping/test.xsd60
-rw-r--r--xsd/tests/cxx/makefile16
-rw-r--r--xsd/tests/cxx/parser/built-in/driver.cxx530
-rw-r--r--xsd/tests/cxx/parser/built-in/makefile83
-rw-r--r--xsd/tests/cxx/parser/built-in/output164
-rw-r--r--xsd/tests/cxx/parser/built-in/test.xml199
-rw-r--r--xsd/tests/cxx/parser/built-in/test.xsd63
-rw-r--r--xsd/tests/cxx/parser/enumeration/driver.cxx82
-rw-r--r--xsd/tests/cxx/parser/enumeration/gender.hxx14
-rw-r--r--xsd/tests/cxx/parser/enumeration/makefile84
-rw-r--r--xsd/tests/cxx/parser/enumeration/output3
-rw-r--r--xsd/tests/cxx/parser/enumeration/test.map7
-rw-r--r--xsd/tests/cxx/parser/enumeration/test.xml10
-rw-r--r--xsd/tests/cxx/parser/enumeration/test.xsd35
-rw-r--r--xsd/tests/cxx/parser/generated-impl/makefile94
-rw-r--r--xsd/tests/cxx/parser/generated-impl/output122
-rw-r--r--xsd/tests/cxx/parser/generated-impl/test.xml168
-rw-r--r--xsd/tests/cxx/parser/generated-impl/test.xsd142
-rw-r--r--xsd/tests/cxx/parser/list/driver.cxx106
-rw-r--r--xsd/tests/cxx/parser/list/makefile83
-rw-r--r--xsd/tests/cxx/parser/list/output26
-rw-r--r--xsd/tests/cxx/parser/list/test.xml25
-rw-r--r--xsd/tests/cxx/parser/list/test.xsd25
-rw-r--r--xsd/tests/cxx/parser/makefile19
-rw-r--r--xsd/tests/cxx/parser/name-clash/inheritance/driver.cxx63
-rw-r--r--xsd/tests/cxx/parser/name-clash/inheritance/makefile84
-rw-r--r--xsd/tests/cxx/parser/name-clash/inheritance/output2
-rw-r--r--xsd/tests/cxx/parser/name-clash/inheritance/test.xml8
-rw-r--r--xsd/tests/cxx/parser/name-clash/inheritance/test.xsd22
-rw-r--r--xsd/tests/cxx/parser/polymorphism/makefile17
-rw-r--r--xsd/tests/cxx/parser/polymorphism/recursive/driver.cxx69
-rw-r--r--xsd/tests/cxx/parser/polymorphism/recursive/makefile84
-rw-r--r--xsd/tests/cxx/parser/polymorphism/recursive/output22
-rw-r--r--xsd/tests/cxx/parser/polymorphism/recursive/test-pimpl.cxx148
-rw-r--r--xsd/tests/cxx/parser/polymorphism/recursive/test-pimpl.hxx95
-rw-r--r--xsd/tests/cxx/parser/polymorphism/recursive/test.xml15
-rw-r--r--xsd/tests/cxx/parser/polymorphism/recursive/test.xsd53
-rw-r--r--xsd/tests/cxx/parser/polymorphism/same-type/driver.cxx63
-rw-r--r--xsd/tests/cxx/parser/polymorphism/same-type/makefile84
-rw-r--r--xsd/tests/cxx/parser/polymorphism/same-type/output4
-rw-r--r--xsd/tests/cxx/parser/polymorphism/same-type/test.xml10
-rw-r--r--xsd/tests/cxx/parser/polymorphism/same-type/test.xsd21
-rw-r--r--xsd/tests/cxx/parser/recursive/driver.cxx140
-rw-r--r--xsd/tests/cxx/parser/recursive/makefile84
-rw-r--r--xsd/tests/cxx/parser/recursive/output22
-rw-r--r--xsd/tests/cxx/parser/recursive/test.xml11
-rw-r--r--xsd/tests/cxx/parser/recursive/test.xsd27
-rw-r--r--xsd/tests/cxx/parser/test-template/driver.cxx67
-rw-r--r--xsd/tests/cxx/parser/test-template/makefile83
-rw-r--r--xsd/tests/cxx/parser/test-template/output1
-rw-r--r--xsd/tests/cxx/parser/test-template/test.xml7
-rw-r--r--xsd/tests/cxx/parser/test-template/test.xsd12
-rw-r--r--xsd/tests/cxx/parser/union/driver.cxx61
-rw-r--r--xsd/tests/cxx/parser/union/makefile83
-rw-r--r--xsd/tests/cxx/parser/union/output2
-rw-r--r--xsd/tests/cxx/parser/union/test.xml10
-rw-r--r--xsd/tests/cxx/parser/union/test.xsd16
-rw-r--r--xsd/tests/cxx/parser/validation/all/driver.cxx99
-rw-r--r--xsd/tests/cxx/parser/validation/all/makefile93
-rw-r--r--xsd/tests/cxx/parser/validation/all/test-000.std46
-rw-r--r--xsd/tests/cxx/parser/validation/all/test-000.xml53
-rw-r--r--xsd/tests/cxx/parser/validation/all/test-001.std6
-rw-r--r--xsd/tests/cxx/parser/validation/all/test-001.xml11
-rw-r--r--xsd/tests/cxx/parser/validation/all/test-002.std4
-rw-r--r--xsd/tests/cxx/parser/validation/all/test-002.xml9
-rw-r--r--xsd/tests/cxx/parser/validation/all/test-003.std6
-rw-r--r--xsd/tests/cxx/parser/validation/all/test-003.xml12
-rw-r--r--xsd/tests/cxx/parser/validation/all/test.xsd20
-rw-r--r--xsd/tests/cxx/parser/validation/any/driver.cxx122
-rw-r--r--xsd/tests/cxx/parser/validation/any/makefile93
-rw-r--r--xsd/tests/cxx/parser/validation/any/test-000.std29
-rw-r--r--xsd/tests/cxx/parser/validation/any/test-000.xml21
-rw-r--r--xsd/tests/cxx/parser/validation/any/test.xsd20
-rw-r--r--xsd/tests/cxx/parser/validation/attribute/driver.cxx198
-rw-r--r--xsd/tests/cxx/parser/validation/attribute/makefile93
-rw-r--r--xsd/tests/cxx/parser/validation/attribute/test-000.std24
-rw-r--r--xsd/tests/cxx/parser/validation/attribute/test-000.xml10
-rw-r--r--xsd/tests/cxx/parser/validation/attribute/test.xsd71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/any-type/driver.cxx155
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/any-type/makefile93
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/any-type/test-000.std99
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/any-type/test-000.xml41
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/any-type/test.xsd31
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/binary/driver.cxx154
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/binary/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/boolean/driver.cxx146
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/boolean/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/byte/driver.cxx257
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/byte/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/date-time/driver.cxx1534
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/date-time/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/float/driver.cxx286
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/float/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/int/driver.cxx117
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/int/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/integer/driver.cxx304
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/integer/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/long/driver.cxx117
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/long/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/makefile18
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/qname/driver.cxx106
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/qname/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/short/driver.cxx117
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/short/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/string/driver.cxx513
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/string/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/uri/driver.cxx54
-rw-r--r--xsd/tests/cxx/parser/validation/built-in/uri/makefile71
-rw-r--r--xsd/tests/cxx/parser/validation/choice/driver.cxx127
-rw-r--r--xsd/tests/cxx/parser/validation/choice/makefile93
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test-000.std22
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test-000.xml30
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test-001.std4
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test-001.xml10
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test-002.std11
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test-002.xml17
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test-003.std5
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test-003.xml11
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test-004.std4
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test-004.xml11
-rw-r--r--xsd/tests/cxx/parser/validation/choice/test.xsd24
-rw-r--r--xsd/tests/cxx/parser/validation/makefile17
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/driver.cxx108
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/makefile93
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-000.std0
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-000.xml31
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-001.std1
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-001.xml11
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-002.std1
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-002.xml12
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-003.std1
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-003.xml16
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-004.std1
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-004.xml10
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-005.std1
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test-005.xml11
-rw-r--r--xsd/tests/cxx/parser/validation/restriction/test.xsd82
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/driver.cxx140
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/makefile93
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-000.std56
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-000.xml46
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-001.std4
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-001.xml10
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-002.std20
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-002.xml27
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-003.std5
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-003.xml17
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-004.std4
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-004.xml14
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-005.std6
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-005.xml15
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-006.std13
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test-006.xml17
-rw-r--r--xsd/tests/cxx/parser/validation/sequence/test.xsd28
-rw-r--r--xsd/tests/cxx/tree/any-type/driver.cxx145
-rw-r--r--xsd/tests/cxx/tree/any-type/makefile87
-rw-r--r--xsd/tests/cxx/tree/any-type/output73
-rw-r--r--xsd/tests/cxx/tree/any-type/test.xml26
-rw-r--r--xsd/tests/cxx/tree/any-type/test.xsd19
-rw-r--r--xsd/tests/cxx/tree/binary/cdr/driver.cxx144
-rw-r--r--xsd/tests/cxx/tree/binary/cdr/makefile90
-rw-r--r--xsd/tests/cxx/tree/binary/cdr/test.xml93
-rw-r--r--xsd/tests/cxx/tree/binary/cdr/test.xsd123
-rw-r--r--xsd/tests/cxx/tree/binary/makefile17
-rw-r--r--xsd/tests/cxx/tree/binary/polymorphic/driver.cxx165
-rw-r--r--xsd/tests/cxx/tree/binary/polymorphic/makefile91
-rw-r--r--xsd/tests/cxx/tree/binary/polymorphic/test.xml92
-rw-r--r--xsd/tests/cxx/tree/binary/polymorphic/test.xsd125
-rw-r--r--xsd/tests/cxx/tree/binary/xdr/driver.cxx188
-rw-r--r--xsd/tests/cxx/tree/binary/xdr/makefile86
-rw-r--r--xsd/tests/cxx/tree/binary/xdr/test.xml93
-rw-r--r--xsd/tests/cxx/tree/binary/xdr/test.xsd123
-rw-r--r--xsd/tests/cxx/tree/built-in/attributes.xml73
-rw-r--r--xsd/tests/cxx/tree/built-in/driver.cxx94
-rw-r--r--xsd/tests/cxx/tree/built-in/elements.xml84
-rw-r--r--xsd/tests/cxx/tree/built-in/inherited.xml84
-rw-r--r--xsd/tests/cxx/tree/built-in/makefile100
-rw-r--r--xsd/tests/cxx/tree/built-in/types.xsd460
-rw-r--r--xsd/tests/cxx/tree/chameleon/driver.cxx36
-rw-r--r--xsd/tests/cxx/tree/chameleon/includee.xsd13
-rw-r--r--xsd/tests/cxx/tree/chameleon/includer.xsd12
-rw-r--r--xsd/tests/cxx/tree/chameleon/makefile86
-rw-r--r--xsd/tests/cxx/tree/chameleon/output3
-rw-r--r--xsd/tests/cxx/tree/chameleon/test.xml8
-rw-r--r--xsd/tests/cxx/tree/comparison/driver.cxx39
-rw-r--r--xsd/tests/cxx/tree/comparison/makefile86
-rw-r--r--xsd/tests/cxx/tree/comparison/test.xml19
-rw-r--r--xsd/tests/cxx/tree/comparison/test.xsd30
-rw-r--r--xsd/tests/cxx/tree/compilation/driver.cxx117
-rw-r--r--xsd/tests/cxx/tree/compilation/makefile86
-rw-r--r--xsd/tests/cxx/tree/compilation/test.xsd12
-rw-r--r--xsd/tests/cxx/tree/complex/ctor/driver.cxx123
-rw-r--r--xsd/tests/cxx/tree/complex/ctor/makefile87
-rw-r--r--xsd/tests/cxx/tree/complex/ctor/test.xsd182
-rw-r--r--xsd/tests/cxx/tree/complex/makefile17
-rw-r--r--xsd/tests/cxx/tree/containment/driver.cxx119
-rw-r--r--xsd/tests/cxx/tree/containment/makefile86
-rw-r--r--xsd/tests/cxx/tree/containment/test.xsd59
-rw-r--r--xsd/tests/cxx/tree/default/general/driver.cxx38
-rw-r--r--xsd/tests/cxx/tree/default/general/makefile87
-rw-r--r--xsd/tests/cxx/tree/default/general/output15
-rw-r--r--xsd/tests/cxx/tree/default/general/test.xml16
-rw-r--r--xsd/tests/cxx/tree/default/general/test.xsd241
-rw-r--r--xsd/tests/cxx/tree/default/makefile17
-rw-r--r--xsd/tests/cxx/tree/default/omit/driver.cxx47
-rw-r--r--xsd/tests/cxx/tree/default/omit/makefile87
-rw-r--r--xsd/tests/cxx/tree/default/omit/output19
-rw-r--r--xsd/tests/cxx/tree/default/omit/test.xml9
-rw-r--r--xsd/tests/cxx/tree/default/omit/test.xsd30
-rw-r--r--xsd/tests/cxx/tree/detach/driver.cxx109
-rw-r--r--xsd/tests/cxx/tree/detach/makefile86
-rw-r--r--xsd/tests/cxx/tree/detach/test.xsd32
-rw-r--r--xsd/tests/cxx/tree/dom-association/dom-parse.cxx96
-rw-r--r--xsd/tests/cxx/tree/dom-association/dom-parse.hxx24
-rw-r--r--xsd/tests/cxx/tree/dom-association/driver.cxx72
-rw-r--r--xsd/tests/cxx/tree/dom-association/makefile92
-rw-r--r--xsd/tests/cxx/tree/dom-association/output0
-rw-r--r--xsd/tests/cxx/tree/dom-association/test.xml7
-rw-r--r--xsd/tests/cxx/tree/dom-association/test.xsd12
-rw-r--r--xsd/tests/cxx/tree/encoding/char/iso-8859-1/driver.cxx75
-rw-r--r--xsd/tests/cxx/tree/encoding/char/iso-8859-1/makefile87
-rw-r--r--xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.std10
-rw-r--r--xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.xml14
-rw-r--r--xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.xsd31
-rw-r--r--xsd/tests/cxx/tree/encoding/char/lcp/driver.cxx41
-rw-r--r--xsd/tests/cxx/tree/encoding/char/lcp/makefile86
-rw-r--r--xsd/tests/cxx/tree/encoding/char/lcp/test.std4
-rw-r--r--xsd/tests/cxx/tree/encoding/char/lcp/test.xml7
-rw-r--r--xsd/tests/cxx/tree/encoding/char/lcp/test.xsd12
-rw-r--r--xsd/tests/cxx/tree/encoding/char/makefile17
-rw-r--r--xsd/tests/cxx/tree/encoding/char/utf-8/driver.cxx66
-rw-r--r--xsd/tests/cxx/tree/encoding/char/utf-8/makefile86
-rw-r--r--xsd/tests/cxx/tree/encoding/char/utf-8/test.std11
-rw-r--r--xsd/tests/cxx/tree/encoding/char/utf-8/test.xml15
-rw-r--r--xsd/tests/cxx/tree/encoding/char/utf-8/test.xsd33
-rw-r--r--xsd/tests/cxx/tree/encoding/makefile17
-rw-r--r--xsd/tests/cxx/tree/encoding/wchar/driver.cxx56
-rw-r--r--xsd/tests/cxx/tree/encoding/wchar/makefile87
-rw-r--r--xsd/tests/cxx/tree/encoding/wchar/test.std10
-rw-r--r--xsd/tests/cxx/tree/encoding/wchar/test.xml14
-rw-r--r--xsd/tests/cxx/tree/encoding/wchar/test.xsd33
-rw-r--r--xsd/tests/cxx/tree/enumeration/ctor/driver.cxx31
-rw-r--r--xsd/tests/cxx/tree/enumeration/ctor/makefile87
-rw-r--r--xsd/tests/cxx/tree/enumeration/ctor/test.xsd41
-rw-r--r--xsd/tests/cxx/tree/enumeration/inheritance/driver.cxx54
-rw-r--r--xsd/tests/cxx/tree/enumeration/inheritance/makefile86
-rw-r--r--xsd/tests/cxx/tree/enumeration/inheritance/output1
-rw-r--r--xsd/tests/cxx/tree/enumeration/inheritance/test.xml3
-rw-r--r--xsd/tests/cxx/tree/enumeration/inheritance/test.xsd22
-rw-r--r--xsd/tests/cxx/tree/enumeration/makefile17
-rw-r--r--xsd/tests/cxx/tree/float/driver.cxx54
-rw-r--r--xsd/tests/cxx/tree/float/makefile86
-rw-r--r--xsd/tests/cxx/tree/float/test.std35
-rw-r--r--xsd/tests/cxx/tree/float/test.xml35
-rw-r--r--xsd/tests/cxx/tree/float/test.xsd74
-rw-r--r--xsd/tests/cxx/tree/list/ctor/driver.cxx51
-rw-r--r--xsd/tests/cxx/tree/list/ctor/makefile87
-rw-r--r--xsd/tests/cxx/tree/list/ctor/test.xsd18
-rw-r--r--xsd/tests/cxx/tree/list/makefile17
-rw-r--r--xsd/tests/cxx/tree/makefile44
-rw-r--r--xsd/tests/cxx/tree/name-clash/inheritance/driver.cxx36
-rw-r--r--xsd/tests/cxx/tree/name-clash/inheritance/makefile86
-rw-r--r--xsd/tests/cxx/tree/name-clash/inheritance/output3
-rw-r--r--xsd/tests/cxx/tree/name-clash/inheritance/test.xml8
-rw-r--r--xsd/tests/cxx/tree/name-clash/inheritance/test.xsd53
-rw-r--r--xsd/tests/cxx/tree/name-clash/makefile17
-rw-r--r--xsd/tests/cxx/tree/naming/camel/driver.cxx155
-rw-r--r--xsd/tests/cxx/tree/naming/camel/makefile94
-rw-r--r--xsd/tests/cxx/tree/naming/camel/test.xsd31
-rw-r--r--xsd/tests/cxx/tree/naming/java/driver.cxx154
-rw-r--r--xsd/tests/cxx/tree/naming/java/makefile94
-rw-r--r--xsd/tests/cxx/tree/naming/java/test.xsd31
-rw-r--r--xsd/tests/cxx/tree/naming/knr/driver.cxx155
-rw-r--r--xsd/tests/cxx/tree/naming/knr/makefile94
-rw-r--r--xsd/tests/cxx/tree/naming/knr/test.xsd31
-rw-r--r--xsd/tests/cxx/tree/naming/makefile17
-rw-r--r--xsd/tests/cxx/tree/order/driver.cxx65
-rw-r--r--xsd/tests/cxx/tree/order/makefile94
-rw-r--r--xsd/tests/cxx/tree/order/output92
-rw-r--r--xsd/tests/cxx/tree/order/test.xml71
-rw-r--r--xsd/tests/cxx/tree/order/test.xsd130
-rw-r--r--xsd/tests/cxx/tree/polymorphism/comparison/driver.cxx74
-rw-r--r--xsd/tests/cxx/tree/polymorphism/comparison/makefile87
-rw-r--r--xsd/tests/cxx/tree/polymorphism/comparison/test.xml7
-rw-r--r--xsd/tests/cxx/tree/polymorphism/comparison/test.xsd39
-rw-r--r--xsd/tests/cxx/tree/polymorphism/makefile17
-rw-r--r--xsd/tests/cxx/tree/polymorphism/ostream/driver.cxx35
-rw-r--r--xsd/tests/cxx/tree/polymorphism/ostream/makefile88
-rw-r--r--xsd/tests/cxx/tree/polymorphism/ostream/output18
-rw-r--r--xsd/tests/cxx/tree/polymorphism/ostream/test.xml10
-rw-r--r--xsd/tests/cxx/tree/polymorphism/ostream/test.xsd53
-rw-r--r--xsd/tests/cxx/tree/polymorphism/same-type/driver.cxx36
-rw-r--r--xsd/tests/cxx/tree/polymorphism/same-type/makefile87
-rw-r--r--xsd/tests/cxx/tree/polymorphism/same-type/output9
-rw-r--r--xsd/tests/cxx/tree/polymorphism/same-type/test.xml10
-rw-r--r--xsd/tests/cxx/tree/polymorphism/same-type/test.xsd21
-rw-r--r--xsd/tests/cxx/tree/prefix/bar.xsd34
-rw-r--r--xsd/tests/cxx/tree/prefix/driver.cxx35
-rw-r--r--xsd/tests/cxx/tree/prefix/foo.xsd16
-rw-r--r--xsd/tests/cxx/tree/prefix/makefile87
-rw-r--r--xsd/tests/cxx/tree/prefix/output18
-rw-r--r--xsd/tests/cxx/tree/prefix/test.xml19
-rw-r--r--xsd/tests/cxx/tree/prefix/test.xsd40
-rw-r--r--xsd/tests/cxx/tree/test-template/driver.cxx36
-rw-r--r--xsd/tests/cxx/tree/test-template/makefile86
-rw-r--r--xsd/tests/cxx/tree/test-template/output2
-rw-r--r--xsd/tests/cxx/tree/test-template/test.xml7
-rw-r--r--xsd/tests/cxx/tree/test-template/test.xsd12
-rw-r--r--xsd/tests/cxx/tree/types-only/driver.cxx31
-rw-r--r--xsd/tests/cxx/tree/types-only/makefile86
-rw-r--r--xsd/tests/cxx/tree/types-only/test.xsd52
-rw-r--r--xsd/tests/cxx/tree/union/ctor/driver.cxx31
-rw-r--r--xsd/tests/cxx/tree/union/ctor/makefile87
-rw-r--r--xsd/tests/cxx/tree/union/ctor/test.xsd14
-rw-r--r--xsd/tests/cxx/tree/union/makefile17
-rw-r--r--xsd/tests/cxx/tree/wildcard/driver.cxx204
-rw-r--r--xsd/tests/cxx/tree/wildcard/makefile87
-rw-r--r--xsd/tests/cxx/tree/wildcard/output24
-rw-r--r--xsd/tests/cxx/tree/wildcard/test.xml19
-rw-r--r--xsd/tests/cxx/tree/wildcard/test.xsd18
-rw-r--r--xsd/tests/failed/test-00.xsd12
-rw-r--r--xsd/tests/makefile15
-rw-r--r--xsd/tests/morphing/anonymous/attribute-group/test.xsd31
-rw-r--r--xsd/tests/morphing/anonymous/cyclic-inclusion/includee.xsd18
-rw-r--r--xsd/tests/morphing/anonymous/cyclic-inclusion/includer.xsd18
-rw-r--r--xsd/tests/morphing/anonymous/group/test.xsd29
-rw-r--r--xsd/tests/morphing/anonymous/test-000.xsd20
-rw-r--r--xsd/tests/morphing/anonymous/unstable/includee-1.xsd12
-rw-r--r--xsd/tests/morphing/anonymous/unstable/includee-2.xsd14
-rw-r--r--xsd/tests/morphing/anonymous/unstable/includer.xsd18
-rw-r--r--xsd/tests/processing/inheritance/test-000.xsd22
-rw-r--r--xsd/tests/processing/inheritance/test-001.xsd26
-rw-r--r--xsd/tests/schema/anonymous/test.xsd143
-rw-r--r--xsd/tests/schema/any-attribute/test.xsd22
-rw-r--r--xsd/tests/schema/any-type/test.xsd22
-rw-r--r--xsd/tests/schema/any/fail.xsd19
-rw-r--r--xsd/tests/schema/any/test.xsd19
-rw-r--r--xsd/tests/schema/attribute-group/global.xsd50
-rw-r--r--xsd/tests/schema/attribute/global.xsd21
-rw-r--r--xsd/tests/schema/attribute/local.xsd37
-rw-r--r--xsd/tests/schema/attribute/ref.xsd42
-rw-r--r--xsd/tests/schema/cardinality/test.xsd46
-rw-r--r--xsd/tests/schema/chameleon/includer.xsd17
-rw-r--r--xsd/tests/schema/chameleon/schemas/includee.xsd12
-rw-r--r--xsd/tests/schema/enumeration/test.xsd89
-rw-r--r--xsd/tests/schema/forward/test.xsd32
-rw-r--r--xsd/tests/schema/group/global.xsd39
-rw-r--r--xsd/tests/schema/group/test.xsd148
-rw-r--r--xsd/tests/schema/import/importer.xsd20
-rw-r--r--xsd/tests/schema/import/schemas/importee.xsd15
-rw-r--r--xsd/tests/schema/include/includer.xsd17
-rw-r--r--xsd/tests/schema/include/schemas/includee.xsd14
-rw-r--r--xsd/tests/schema/inheritance/cycle.xsd34
-rw-r--r--xsd/tests/schema/inheritance/sourced-forward/includee.xsd10
-rw-r--r--xsd/tests/schema/inheritance/sourced-forward/includer.xsd14
-rw-r--r--xsd/tests/schema/list/anonymous/test.xsd16
-rw-r--r--xsd/tests/schema/list/any-simple-type/test.xsd12
-rw-r--r--xsd/tests/schema/list/driver.cxx13
-rw-r--r--xsd/tests/schema/list/test.xsd72
-rw-r--r--xsd/tests/schema/no-namespace/test.xsd15
-rw-r--r--xsd/tests/schema/recursive/test.xsd43
-rw-r--r--xsd/tests/schema/ref-type/idref.xsd42
-rw-r--r--xsd/tests/schema/ref-type/idrefs.xsd43
-rw-r--r--xsd/tests/schema/ref-type/invalid-0.xsd17
-rw-r--r--xsd/tests/schema/ref-type/invalid-1.xsd11
-rw-r--r--xsd/tests/schema/restriction/test.xsd67
-rw-r--r--xsd/tests/schema/union/test.xsd65
-rw-r--r--xsd/type-map/lexer.cxx131
-rw-r--r--xsd/type-map/lexer.hxx74
-rw-r--r--xsd/type-map/parser.cxx279
-rw-r--r--xsd/type-map/parser.hxx41
-rw-r--r--xsd/type-map/type-map.hxx178
-rw-r--r--xsd/types.hxx19
-rw-r--r--xsd/version1
-rw-r--r--xsd/version.hxx.in55
-rw-r--r--xsd/xsd.cxx1157
-rw-r--r--xsd/xsd.hxx24
-rw-r--r--xsd/xsd/cxx/elements.cxx1320
-rw-r--r--xsd/xsd/cxx/elements.hxx627
-rw-r--r--xsd/xsd/cxx/literal-map.cxx262
-rw-r--r--xsd/xsd/cxx/literal-map.hxx20
-rw-r--r--xsd/xsd/cxx/option-types.cxx48
-rw-r--r--xsd/xsd/cxx/option-types.hxx35
-rw-r--r--xsd/xsd/cxx/options.cli551
-rw-r--r--xsd/xsd/cxx/options.cxx638
-rw-r--r--xsd/xsd/cxx/options.hxx440
-rw-r--r--xsd/xsd/cxx/options.ixx601
-rw-r--r--xsd/xsd/cxx/parser/attribute-validation-source.cxx413
-rw-r--r--xsd/xsd/cxx/parser/attribute-validation-source.hxx19
-rw-r--r--xsd/xsd/cxx/parser/characters-validation-source.cxx74
-rw-r--r--xsd/xsd/cxx/parser/characters-validation-source.hxx19
-rw-r--r--xsd/xsd/cxx/parser/driver-source.cxx776
-rw-r--r--xsd/xsd/cxx/parser/driver-source.hxx19
-rw-r--r--xsd/xsd/cxx/parser/element-validation-source.cxx1601
-rw-r--r--xsd/xsd/cxx/parser/element-validation-source.hxx19
-rw-r--r--xsd/xsd/cxx/parser/elements.cxx248
-rw-r--r--xsd/xsd/cxx/parser/elements.hxx316
-rw-r--r--xsd/xsd/cxx/parser/generator.cxx1100
-rw-r--r--xsd/xsd/cxx/parser/generator.hxx46
-rw-r--r--xsd/xsd/cxx/parser/impl-header.cxx233
-rw-r--r--xsd/xsd/cxx/parser/impl-header.hxx19
-rw-r--r--xsd/xsd/cxx/parser/impl-source.cxx385
-rw-r--r--xsd/xsd/cxx/parser/impl-source.hxx19
-rw-r--r--xsd/xsd/cxx/parser/name-processor.cxx1176
-rw-r--r--xsd/xsd/cxx/parser/name-processor.hxx31
-rw-r--r--xsd/xsd/cxx/parser/options.cli148
-rw-r--r--xsd/xsd/cxx/parser/options.cxx581
-rw-r--r--xsd/xsd/cxx/parser/options.hxx183
-rw-r--r--xsd/xsd/cxx/parser/options.ixx160
-rw-r--r--xsd/xsd/cxx/parser/parser-forward.cxx111
-rw-r--r--xsd/xsd/cxx/parser/parser-forward.hxx19
-rw-r--r--xsd/xsd/cxx/parser/parser-header.cxx1441
-rw-r--r--xsd/xsd/cxx/parser/parser-header.hxx19
-rw-r--r--xsd/xsd/cxx/parser/parser-inline.cxx400
-rw-r--r--xsd/xsd/cxx/parser/parser-inline.hxx19
-rw-r--r--xsd/xsd/cxx/parser/parser-source.cxx958
-rw-r--r--xsd/xsd/cxx/parser/parser-source.hxx19
-rw-r--r--xsd/xsd/cxx/parser/print-impl-common.hxx642
-rw-r--r--xsd/xsd/cxx/parser/state-processor.cxx320
-rw-r--r--xsd/xsd/cxx/parser/state-processor.hxx26
-rw-r--r--xsd/xsd/cxx/parser/type-processor.cxx348
-rw-r--r--xsd/xsd/cxx/parser/type-processor.hxx32
-rw-r--r--xsd/xsd/cxx/parser/validator.cxx719
-rw-r--r--xsd/xsd/cxx/parser/validator.hxx31
-rw-r--r--xsd/xsd/cxx/tree/counter.cxx261
-rw-r--r--xsd/xsd/cxx/tree/counter.hxx26
-rw-r--r--xsd/xsd/cxx/tree/default-value.cxx1274
-rw-r--r--xsd/xsd/cxx/tree/default-value.hxx356
-rw-r--r--xsd/xsd/cxx/tree/elements.cxx1379
-rw-r--r--xsd/xsd/cxx/tree/elements.hxx2119
-rw-r--r--xsd/xsd/cxx/tree/fundamental-header.hxx1336
-rw-r--r--xsd/xsd/cxx/tree/generator.cxx1228
-rw-r--r--xsd/xsd/cxx/tree/generator.hxx45
-rw-r--r--xsd/xsd/cxx/tree/name-processor.cxx2400
-rw-r--r--xsd/xsd/cxx/tree/name-processor.hxx29
-rw-r--r--xsd/xsd/cxx/tree/options.cli480
-rw-r--r--xsd/xsd/cxx/tree/options.cxx1149
-rw-r--r--xsd/xsd/cxx/tree/options.hxx411
-rw-r--r--xsd/xsd/cxx/tree/options.ixx502
-rw-r--r--xsd/xsd/cxx/tree/order-processor.cxx244
-rw-r--r--xsd/xsd/cxx/tree/order-processor.hxx30
-rw-r--r--xsd/xsd/cxx/tree/parser-header.cxx473
-rw-r--r--xsd/xsd/cxx/tree/parser-header.hxx20
-rw-r--r--xsd/xsd/cxx/tree/parser-source.cxx515
-rw-r--r--xsd/xsd/cxx/tree/parser-source.hxx19
-rw-r--r--xsd/xsd/cxx/tree/polymorphism-processor.cxx741
-rw-r--r--xsd/xsd/cxx/tree/polymorphism-processor.hxx31
-rw-r--r--xsd/xsd/cxx/tree/serialization-header.cxx580
-rw-r--r--xsd/xsd/cxx/tree/serialization-header.hxx19
-rw-r--r--xsd/xsd/cxx/tree/serialization-source.cxx1466
-rw-r--r--xsd/xsd/cxx/tree/serialization-source.hxx19
-rw-r--r--xsd/xsd/cxx/tree/stream-extraction-source.cxx808
-rw-r--r--xsd/xsd/cxx/tree/stream-extraction-source.hxx19
-rw-r--r--xsd/xsd/cxx/tree/stream-header.cxx182
-rw-r--r--xsd/xsd/cxx/tree/stream-header.hxx19
-rw-r--r--xsd/xsd/cxx/tree/stream-insertion-header.cxx179
-rw-r--r--xsd/xsd/cxx/tree/stream-insertion-header.hxx19
-rw-r--r--xsd/xsd/cxx/tree/stream-insertion-source.cxx577
-rw-r--r--xsd/xsd/cxx/tree/stream-insertion-source.hxx19
-rw-r--r--xsd/xsd/cxx/tree/stream-source.cxx496
-rw-r--r--xsd/xsd/cxx/tree/stream-source.hxx19
-rw-r--r--xsd/xsd/cxx/tree/tree-forward.cxx326
-rw-r--r--xsd/xsd/cxx/tree/tree-forward.hxx19
-rw-r--r--xsd/xsd/cxx/tree/tree-header.cxx4282
-rw-r--r--xsd/xsd/cxx/tree/tree-header.hxx19
-rw-r--r--xsd/xsd/cxx/tree/tree-inline.cxx1156
-rw-r--r--xsd/xsd/cxx/tree/tree-inline.hxx19
-rw-r--r--xsd/xsd/cxx/tree/tree-source.cxx3880
-rw-r--r--xsd/xsd/cxx/tree/tree-source.hxx19
-rw-r--r--xsd/xsd/cxx/tree/validator.cxx672
-rw-r--r--xsd/xsd/cxx/tree/validator.hxx30
-rw-r--r--xsd/xsd/elements.hxx126
-rw-r--r--xsd/xsd/makefile191
-rw-r--r--xsd/xsd/options-parser.hxx30
-rw-r--r--xsd/xsd/options.cli313
-rw-r--r--xsd/xsd/options.cxx976
-rw-r--r--xsd/xsd/options.hxx575
-rw-r--r--xsd/xsd/options.ixx462
-rw-r--r--xsd/xsd/processing/cardinality/processor.cxx408
-rw-r--r--xsd/xsd/processing/cardinality/processor.hxx29
-rw-r--r--xsd/xsd/processing/inheritance/processor.cxx493
-rw-r--r--xsd/xsd/processing/inheritance/processor.hxx29
-rw-r--r--xsd/xsd/type-map/lexer.cxx132
-rw-r--r--xsd/xsd/type-map/lexer.hxx75
-rw-r--r--xsd/xsd/type-map/parser.cxx280
-rw-r--r--xsd/xsd/type-map/parser.hxx42
-rw-r--r--xsd/xsd/type-map/type-map.hxx179
-rw-r--r--xsd/xsd/types.hxx20
-rw-r--r--xsd/xsd/xsd.cxx1127
-rw-r--r--xsd/xsd/xsd.hxx25
2528 files changed, 119754 insertions, 428201 deletions
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 37c7f74..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-.bzr
-.bzrignore
-.pc
diff --git a/xsd/FLOSSE b/FLOSSE
index cbf8b2c..cbf8b2c 100644
--- a/xsd/FLOSSE
+++ b/FLOSSE
diff --git a/libxsd-frontend/GPLv2 b/GPLv2
index 3912109..3912109 100644
--- a/libxsd-frontend/GPLv2
+++ b/GPLv2
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..ec7f72f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,28 @@
+Copyright (c) 2005-2023 Code Synthesis.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License version 2 as
+published by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+In addition, as a special exception, Code Synthesis gives permission to
+link this program with the Xerces-C++ library (or with modified versions
+of Xerces-C++ that use the same license as Xerces-C++), and distribute
+linked combinations including the two. You must obey the GNU General
+Public License version 2 in all respects for all of the code used other
+than Xerces-C++. If you modify this copy of the program, you may extend
+this exception to your version of the program, but you are not obligated
+to do so. If you do not wish to do so, delete this exception statement
+from your version.
+
+In addition, Code Synthesis makes a special exception for the Free/Libre
+and Open Source Software (FLOSS) which is described in the accompanying
+FLOSSE file.
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..cd4e0ce
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,1271 @@
+Version 4.2.0
+
+ * In this version we have switched to the build2 build system. For the
+ step-by-step instructions on how to build XSD from source on all the
+ major platforms, see:
+
+ https://codesynthesis.com/products/xsd/doc/install-build2.xhtml
+
+ * In this version we have changed the default C++ standard that is used
+ by the generated code from C++98 to C++11. While you can still request
+ C++98 with the --std=c++98 option, note that this is the last release
+ that supports the C++98 standard and the next release will require C++11
+ or later (in fact, building the XSD compiler itself already requires
+ C++11 or later). Note also that the --std option now recognizes the
+ c++14, c++17, c++20, and c++23 additional values.
+
+ * This version will be the last release that supports Xerces-C++ earlier
+ than 3.1.0 and the next release will require Xerces-C++ 3.1.0 or later.
+
+ * New --file-list-only option that allows only writing the list of C++
+ files that would be generated without actually generating them.
+
+ * The --file-list option now recognize the `-` value as a request to write
+ to stdout.
+
+ * New --dep-file option that allows specifying the dependency file name.
+ It also allows writing the dependency information to stdout by specifying
+ `-` as this option's value.
+
+ * This version contains a large number of bug fixes and minor improvements
+ that have accumulated over the years.
+
+C++/Tree
+
+ * Support for abstract XML Schema types. The corresponding C++ classes now
+ have the _clone() member function declared pure virtual which prevents
+ the construction of instances of such types.
+
+ Note that if after upgrading to this version you start getting C++
+ compile errors in the generated code with diagnostics saying that a
+ type cannot be instantiated because _clone() is pure virtual, then
+ it's a strong indication that this type (or its base) is polymorphic
+ and needs to be marked as such (see --polymorphic-type* options).
+
+ * New base_string() accessors in the xml_schema::{string,uri} types that
+ return the underlying string.
+
+ * Support for `ucc` (upper-camel-case) value in the --function-naming
+ option.
+
+ * New C++/Tree `secure` example (xsd-examples/cxx/tree/secure/) shows how
+ to perform more secure XML parsing by disabling the XML External Entity
+ (XXE) Processing. See the accompanying README file for details.
+
+Version 4.1.0
+
+ * This version was never released. It was skipped due to a minor versioning
+ scheme adjustment in the pre-release component when migrating to build2.
+
+Version 4.0.0
+
+ * Xerces-C++ 2-series (2.8.0 and earlier) is no longer supported.
+
+ * Visual Studio 2003 (7.1) is no longer supported.
+
+ * HP aCC3 (HP-UX/PA-RISC) is no longer supported.
+
+ * Oracle/Berkeley DB XML support has been removed since it no longer
+ supports the Xerces-C++-based document access.
+
+ * New option, --std, specifies the C++ standard that the generated code
+ should conform to. Valid values are c++98 (default) and c++11.
+
+ The C++ standard affects various aspects of the generated code that are
+ discussed in more detail in mapping-specific documentation (guides and
+ manuals). Overall, when C++11 is selected, the generated code relies on
+ the move semantics and uses std::unique_ptr instead of deprecated
+ std::auto_ptr. See also the documentation for the --std option in the
+ XSD compiler command line manual (man pages).
+
+ * New option, --fat-type-file, triggers the placement of code corresponding
+ to global elements into type files instead of schema files in the file-
+ per-type mode. This option is primarily useful when trying to minimize
+ the amount of object code that is linked to an executable by packaging
+ compiled generated code into a static (archive) library.
+
+C++/Tree
+
+ * Support for ordered types. C++/Tree flattens nested compositors which
+ sometimes can result in the loss of element ordering information that
+ could be significant to the application. Ordered types address this
+ problem. For more information, refer to Section 2.8.4, "Element Order"
+ in the C++/Tree Mapping User Manual.
+
+ * Support for mixed content in ordered types. For more information, refer
+ to Section 2.13, "Mapping for Mixed Content Models" in the C++/Tree
+ Mapping User Manual.
+
+ * xml_schema::type represents anyType content as a DOM fragment, similar
+ to wildcards. For more information, refer to Section 2.5.2, "Mapping
+ for anyType" in the C++/Tree Mapping User Manual.
+
+ * xml_schema::simple_type represents anySimpleType content as a text
+ string. For more information, refer to Section 2.5.3, "Mapping for
+ anySimpleType" in the C++/Tree Mapping User Manual.
+
+ * Improved streaming example that now provides better XML namespace
+ handling and supports streaming parsing and serialization at multiple
+ document levels.
+
+ * New option, --generate-dep, triggers the generation of the make
+ dependency files (.d) for the generated C++ files. Other options
+ controlling dependency generation are: --generate-dep-only,
+ --dep-phony, --dep-target, --dep-suffix, and --dep-regex. For
+ details on this functionality, refer to the XSD compiler command
+ line manual (man pages).
+
+ * New option, --suppress-assignment, suppresses the generation of copy
+ assignment operators for complex types. If this option is specified,
+ the copy assignment operators for such types are declared private and
+ left unimplemented.
+
+ * Binary representation now stores string-based enumerations as integer
+ values corresponding to C++ enumerators instead of string literals.
+
+ * Binary representation now pools polymorphic type-id strings in an
+ implicit string pool. The string pool support can also be used to
+ pool strings in other situations. For example, you can implement
+ string insertion/extraction operators for your stream to pool all
+ strings. This can be useful if your documents contain a large number
+ of repetitive strings.
+
+ * New option, --polymorphic-plate, allows the creation of multiple
+ polymorphic map plates in the same application. For details, refer
+ to the XSD compiler command line manual (man pages).
+
+ * To get the DOM association in the copy of an object model tree one
+ now needs to explicitly pass the xml_schema::flags::keep_dom flag as
+ the second argument to the copy constructor or clone() function.
+
+Version 3.3.0
+
+ * New option, --char-encoding, allows you to specify the character encoding
+ that should be used in the generated code. Valid values for the 'char'
+ character type are 'utf8' (default), 'iso8859-1' (new), 'lcp' (Xerces-C++
+ local code page), and 'custom' (provides support for custom encodings).
+ Note that if you use a non-default character encoding and include some
+ libxsd headers (e.g., xsd/cxx/xml/string.hxx) directly, then you will
+ need to first include the correct xsd/cxx/xml/char-<enc>.hxx header,
+ where <enc> is iso8859-1, lcp, etc. This mechanism replaces the
+ XSD_USE_LCP macro.
+
+ For the wchar_t character type the only valid value for this option is
+ 'auto' and the encoding is automatically selected between UTF-16 and
+ UTF-32, depending on the wchar_t type size.
+
+ * When the XSD compiler is built with Xerces-C++ 3.1.0 or later, the
+ handling of multiple imports for the same namespace is enabled. Before,
+ all subsequent imports for a namespace were ignored which caused errors
+ in some schemas. Note that if your application has XML Schema validation
+ enabled, then you will also need to build it with Xerces-C++ 3.1.0 or
+ later to take advantage of this feature.
+
+ * Automatic mapping for the urn-style XML namespaces. The last component
+ in the urn name is used to derive the C++ namespace name.
+
+ * New option, --schema-file-regex, in combination with the existing
+ --type-file-regex, can be used to place the generated files into
+ subdirectories or to resolve file name conflicts in the file-per-
+ type mode (--file-per-type).
+
+ * Warning id's have changed to start with a letter identifying the
+ component issuing the warning. F - compiler frontend, D - compiler
+ driver, P - C++/Parser mapping, T - C++/Tree mapping.
+
+ * Strings used to match regular expressions supplied with the
+ --namespace-regex and --anonymous-regex options now include the file
+ component for the schema being compiled.
+
+ * The XSD_NO_EXPORT macro can be used to omit code generated with the
+ --export/import-maps and, for C++/Tree, --generate-xml-schema options
+ during C++ compilation. This may be useful if you would like to use
+ the same generated code across multiple platforms.
+
+ C++/Tree
+
+ * New option, --generate-element-type, triggers the generation of types
+ instead of parsing/serialization functions for root elements. This
+ is primarily useful to distinguish object models with the same root
+ type but with different root elements. For more information, refer
+ to the messaging example and Section 2.9.1, "Element Types" in the
+ C++/Tree Mapping User Manual. To support the customization of the
+ element type naming the --element-type-regex option has been added.
+ See the NAMING CONVENTION section in the compiler command line manual
+ (man pages) for details.
+
+ * New option, --generate-element-map, triggers the generation of a root
+ element map. The element map allows uniform parsing and serialization
+ of multiple root elements. This option can only be used together with
+ --generate-element-type. For more information, refer to the messaging
+ example and Section 2.9.2, "Element Map" in the C++/Tree Mapping
+ User Manual.
+
+ * Prior to this version, if the --generate-polymorphic option is
+ specified, the compiler treats all types as potentially polymorphic.
+ Now by default only type hierarchies used in substitution groups and
+ those explicitly declared polymorphic with the new --polymorphic-type
+ option are treated as polymorphic. This results in smaller and faster
+ generated code. If you would like to continue using the old behavior,
+ you will need to specify --polymorphic-type-all. For more information,
+ on this change see Section 2.11, "Mapping for xsi:type and Substitution
+ Groups" in the C++/Tree Mapping User Manual.
+
+ * New option, --generate-detach, triggers the generation of detach
+ functions for required elements and attributes. For optional and
+ sequence cardinalities the detach functions are now provided by the
+ respective containers even without this option. These functions, for
+ example, allow one to move sub-trees in the object model either within
+ the same tree or between different trees without copying. For more
+ information, refer to Section 2.8 "Mapping for Local Elements and
+ Attributes" in the C++/Tree Mapping User Manual.
+
+ * New option, --export-xml-schema, causes the compiler to export/import
+ types in the XML Schema namespace using the export symbol provided
+ with the --export-symbol option.
+
+ * New example, embedded, shows how to embed the binary representation of
+ the schema grammar into an application and then use it to parse and
+ validate XML documents.
+
+ * New example, compression, shows how to compress an XML document during
+ serialization and decompress it during parsing using the zlib library.
+
+ * New example, custom/mixed, shows how to use type customization to parse
+ and serialize mixed content.
+
+ * The streaming example has been extended to show how to perform stream-
+ oriented, partially in-memory XML processing using the C++/Tree mapping.
+ With the partially in-memory parsing and serialization only a part of
+ the object model is in memory at any given time. With this approach one
+ can process parts of the document as they become available as well as
+ handle documents that are too large to fit into memory.
+
+ * New default/fixed value initialization code. Now the default/fixed values
+ are parsed by the XSD compiler at compile time instead of the standard
+ parsing code at runtime. This will allow the compilation of schemas that
+ use the default/fixed values without support for XML parsing
+ (--suppress-parsing option).
+
+ * Empty XML Schema enumeration values are now mapped to the 'empty' C++
+ enumerator name instead of 'cxx'.
+
+ * XML Schema union types with members that are enumeration types are
+ automatically converted to equivalent enumeration types with a union
+ of all the members' enumerators.
+
+Version 3.2.0
+
+ * New option, --disable-warning, disables printing of a warning with
+ the specified id. Specifying 'all' for the warning id disables all
+ warnings.
+
+ * New options, --export-maps and --import-maps, provide support for
+ splitting a polymorphic type hierarchy across several Win32 DLLs.
+ See the compiler command line manual (man pages) for details.
+
+ C++/Tree
+
+ * During serialization the generated code automatically assigns
+ generic prefixes (p1, p2, etc) to XML namespaces used in the
+ vocabulary and for which no custom prefix-namespace mapping
+ was provided via the xml_schema::namespace_infomap argument.
+ The xml_schema::namespace_infomap argument in the serialization
+ functions is now default-initialized to an empty map. The
+ xml_schema::no_namespace_mapping and xml_schema::xsi_already_in_use
+ exceptions have been removed.
+
+ * New example, performance, measures the performance of parsing and
+ serialization. This example also shows how to structure your code
+ to achieve the maximum performance for these two operations.
+
+ * New example, xpath, shows how to use the C++/Tree mapping together
+ with XPath.
+
+ * New options, --one-accessor-regex, --opt-accessor-regex,
+ --seq-accessor-regex, --one-modifier-regex, --opt-modifier-regex,
+ and --seq-modifier-regex, allow specification of transformations
+ for accessor and modifier function names for elements and attributes
+ with specific cardinalities. For more information see the NAMING
+ CONVENTION section in the compiler command line manual (man pages).
+
+ * Support for comparison (--generate-comparison) and printing
+ (--generate-ostream) of polymorphic object models.
+
+ * New serialization flag, xml_schema::flags::dont_pretty_print,
+ disables extra spaces and new lines that make the resulting XML
+ slightly bigger but easier to read.
+
+ * New example, custom/double, shows how to customize parsing and
+ serialization code for the xsd:double XML Schema built-in type.
+ It can be used as a guide on how to customize built-in XML Schema
+ types that are mapped to fundamental C++ types.
+
+ * Support for fractionDigits and totalDigits facets in serialization
+ of types derived from xsd:decimal.
+
+ * New set of compile-time macros that control how the xsd:float,
+ xsd:double, and xsd:decimal types are serialized. The following
+ macros control the format:
+
+ XSD_CXX_TREE_FLOAT_FIXED
+ XSD_CXX_TREE_FLOAT_SCIENTIFIC
+ XSD_CXX_TREE_DOUBLE_FIXED
+ XSD_CXX_TREE_DOUBLE_SCIENTIFIC
+
+ The following macros control the precision:
+
+ XSD_CXX_TREE_FLOAT_PRECISION_MAX
+ XSD_CXX_TREE_FLOAT_PRECISION
+ XSD_CXX_TREE_DOUBLE_PRECISION_MAX
+ XSD_CXX_TREE_DOUBLE_PRECISION
+ XSD_CXX_TREE_DECIMAL_PRECISION_MAX
+ XSD_CXX_TREE_DECIMAL_PRECISION
+
+ If the *_PRECISION_MAX macro is defined then the maximum number of
+ potentially significant decimal digits that the type can represent
+ is used. Otherwise, if the *_PRECISION macro is defined then its
+ value is used. By default the precision is set to the number of
+ decimal digits that the type can represent without change. For
+ more information on these options, refer to the following paper:
+
+ http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf
+
+ The old macro, XSD_FP_ALL_DIGITS, that was equivalent to defining
+ all three *_PRECISION_MAX macros has been removed.
+
+ An alternative to using these macros is to customize the floating
+ point type as shown in the custom/double example.
+
+ * An additional constructor is generated in situations where a type
+ contains one or more required element of complex type (that is,
+ it itself contains elements or attributes). In this constructor,
+ initializers for such elements are passed as std::auto_ptr and the
+ newly created instance is directly initialized with and assumes
+ ownership of the pointed to objects. This constructor is a logical
+ addition to the non-copying modifiers that were introduced in the
+ previous version.
+
+ * Extra conversion operators in the fundamental_base class template
+ which is used to emulate inheritance from fundamental types are now
+ disabled by default since they cause problems on several compilers.
+ To enable them compile your code with the XSD_TREE_EXTRA_FUND_CONV
+ macro defined.
+
+ C++/Parser
+
+ * New options, --generate-xml-schema and --extern-xml-schema, trigger
+ generation of the mapping for the XML Schema namespace to a separate
+ header file and inclusion of that header into other generated header
+ files instead of generating the necessary declarations inline,
+ respectively. See the compiler command line manual (man pages) for
+ details.
+
+ * New example, performance, measures the performance of XML parsing.
+ This example also shows how to structure your code to achieve the
+ maximum performance for this operation.
+
+ * Type map files can now include comments. A comment starts with #
+ and ends with a new line or end of file. To specify a name that
+ contains # enclose it in "".
+
+ * In type map files the optional argument type now defaults to the
+ return type if the return type ends with * or & (that is, it is
+ a pointer or a reference) and 'const return type&' otherwise.
+
+ * The interface for polymorphic parsing has been simplified. Calling the
+ *_parser() functions multiple times to specify several parsers is no
+ longer supported. Instead you need to pass the xml_schema::parser_map
+ object which contains the parsers. For more information refer to
+ Section 5.4, "Support for Polymorphism" in the C++/Parser Mapping
+ Getting Started Guide.
+
+ * The use of virtual inheritance has been reduced which results in a
+ much smaller object code size (more than factor of 2 on some tests)
+ and faster C++ compilation with less RAM used.
+
+ * The low-level Expat-specific parsing API (parse_begin() and parse_end())
+ has been extended to provide XML and XML Schema error translation to
+ exceptions or error handler calls. See Section 7.2, "Expat Document
+ Parser" in the C++/Parser Mapping Getting Started Guide for more
+ information.
+
+Version 3.1.0
+
+ * New option, --file-per-type, triggers generation of a separate set
+ of C++ files for each type defined in XML Schema. This compilation
+ mode is primarily useful when some of your schemas cannot be compiled
+ separately or have cyclic dependencies which involve inheritance.
+ Other new options that are useful in this compilation mode are
+ --type-file-regex, --type-file-regex-trace, and --file-list. See the
+ compiler command line manual (man pages) for more information.
+
+ * New option, --options-file, allows additional command line options
+ to be provided in files, with one option per line.
+
+ * New option, --reserved-name, allows insertion of additional names
+ with optional replacements to the list of names that should not be
+ used as identifiers. See the compiler command line manual (man pages)
+ for details.
+
+ * New options, --location-map, --location-regex, and
+ --location-regex-trace, allow re-mapping of schema locations
+ specified in the include and import elements without modifying the
+ schema files. See the compiler command line manual (man pages) for
+ more information.
+
+ * New option, --guard-prefix, allows specification of a prefix that
+ should be added to generated header inclusion guards.
+
+ * New option, --file-list, triggers creation of a file with a list of
+ generated C++ files. This option is primarily useful in the file-per-
+ type compilation mode (--file-per-type) to create a list of generated
+ C++ files, for example, as a makefile fragment. Other new options
+ that are useful with --file-list are --file-list-prologue,
+ --file-list-epilogue, and --file-list-delim. See the compiler command
+ line manual (man pages) for more information.
+
+ * Support for the upcoming Xerces-C++ 3.0.0 release.
+
+ C++/Tree
+
+ * New option, --generate-intellisense, triggers generation of workarounds
+ for IntelliSense bugs in Visual Studio 2005 (8.0). When this option is
+ used, the resulting code is slightly more verbose. IntelliSense in
+ Visual Studio 2008 (9.0) does not require these workarounds. Support
+ for IntelliSense in Visual Studio 2003 (7.1) is improved with this
+ option but is still incomplete.
+
+ * New options, --type-naming and --function-naming, allow specification
+ of the type and function naming conventions that should be used in the
+ generated code. Supported values for --type-naming are: knr (K&R), ucc
+ (upper-camel-case), and java. Supported values for --function-naming
+ are: knr (K&R), lcc (lower-camel-case), and java. For more information
+ see the NAMING CONVENTION section in the compiler command line manual
+ (man pages).
+
+ * New options, --type-regex, --accessor-regex, --modifier-regex,
+ --parser-regex, --serializer-regex, and --enumerator-regex, allow
+ specification of transformations for type, accessor function,
+ modifier function, parsing function, serialization function, and
+ enumerator names in order to produce the generated code using a
+ custom naming convention. For more information see the NAMING
+ CONVENTION section in the compiler command line manual (man pages).
+
+ * Generated list classes now provide a complete set of constructors and
+ conform to the standard C++ sequence interface.
+
+ * String-based types now provide two extra constructors that expect a
+ C string and std::string as their arguments. This allows direct
+ initialization of string-based types from string literals.
+
+ * New implementations of the XML Schema date/time types (date, dateTime,
+ duration, gDay, gMonth, gMonthDay, gYear, gYearMonth, and time) that
+ represent the information in the numerical form.
+
+ * New binary serialization examples: binary/boost, which shows how to
+ save/load the object model to/from a custom format using the Boost
+ serialization library as an example, and binary/xdr, which shows how to
+ save/load the object model to/from XDR (eXternal Data Representation)
+ binary format using the XDR API provided as part of Sun RPC.
+
+ * The non-copying modifier functions can now be used to assemble object
+ models from scratch. For more information see Section 4.4, "Creating
+ the Object Model from Scratch" in the C++/Tree Mapping Getting Started
+ Guide as well as Section 2.8, "Mapping for Local Elements and Attributes"
+ in the C++/Tree Mapping User Manual.
+
+ * Doxygen documentation was added to the XSD runtime for the built-in XML
+ Schema types, exceptions, etc. This allows linking of the generated
+ documentation to the XSD runtime documentation using the Doxygen tags
+ mechanism. The Doxygen configuration file for the XSD runtime is
+ provided in the documentation/cxx/tree/reference/ directory.
+
+ * Support for customization of anyType. Because anyType is a base type
+ for every generated type, customizing it allows one to implement custom
+ functionality that spans the entire type system. See the comments
+ example in the examples/cxx/tree/custom/ directory.
+
+ * New option, --omit-default-attributes, triggers generation of extra
+ checks that exclude attributes with default and fixed values from the
+ serialized XML documents.
+
+ * The parsing functions that used to read from DOMInputSource were changed
+ to use InputSource to ease support of Xerces-C++ 3 and 2 series in the
+ same code base.
+
+ * The parsing function that used to parse DOMDocument* was changed to
+ parse xml_schema::dom::auto_ptr<DOMDocument>& instead. If the keep_dom
+ and own_dom flags are specified then this parsing function resets the
+ passed automatic pointer and the returned object model assumes
+ ownership of the DOM document. xml_schema::dom::auto_ptr is a simple
+ automatic pointer for Xerces-C++ DOM with the same interface as
+ std::auto_ptr.
+
+ * The xml_schema::tree_node_key DOM user data key was moved to
+ xml_schema::dom::tree_node_key.
+
+ C++/Parser
+
+ * New option, --generate-polymorphic, triggers generation of polymorphism-
+ aware code. This option should be used on XML vocabularies which use
+ xsi:type and/or substitution groups. For more information see Section
+ 5.4, "Support for Polymorphism" in the C++/Parser Mapping Getting
+ Started Guide we well as the polymorphism and polyroot examples in the
+ examples/cxx/parser/ directory.
+
+ * The date/time types (date, dateTime, gDay, gMonth, gMonthDay, gYear,
+ gYearMonth, and time) now represent time zone in the numerical form.
+
+ * In order to support parsing of polymorphic XML documents, the signatures
+ of the start_* functions (_start_element, _start_any_element, and
+ start_root_element) have changed to include a third argument of type
+ const ro_string<C>*. This argument contains the resolved type name and
+ namespace in case the xsi:type attribute was specified.
+
+Version 3.0.0
+
+ * Anonymous type morphing (automatic type naming) is now performed by
+ default in both mappings. The --morph-anonymous option does not have
+ any effect but is preserved for backwards compatibility. A new option,
+ --preserve-anonymous, disables anonymous type morphing. This option is
+ useful together with --show-anonymous if you want to make sure your
+ schemas do not have any anonymous types.
+
+ * A number of bugs fixed in both C++/Tree and C++/Parser mappings.
+
+ C++/Tree
+
+ * The new C++/Tree Mapping Getting Started Guide is available in the
+ documentation/cxx/tree/guide/ directory.
+
+ * The type definitions for local elements and attributes in the form
+ name::type have been changed to name_type. For example, an element
+ bar in type foo with maxOccurs="unbounded" used to have its iterator
+ type defined as foo::bar::iterator. With this change it becomes
+ foo::bar_iterator. Furthermore, the container type name for sequence
+ elements has changed from foo::bar::container to foo::bar_sequence
+ and for optional elements and attributes from foo::bar::container
+ to foo::bar_optional. This is a backwards incompatible change and
+ may require application code adjustments (the C++ compiler will
+ pinpoint the affected places).
+
+ * New option, --generate-doxygen, triggers generation of documentation
+ comments suitable for extraction by the Doxygen documentation system.
+ Documentation from annotations is added to the comments if present in
+ the schema.
+
+ * New option, --generate-wildcard, triggers generation of the new
+ wildcard (any and anyAttribute) mapping. This mapping represents the
+ content matched by wildcards as DOM fragments. For more information on
+ the new mapping see Section 2.12, "Mapping for any and anyAttribute"
+ in the C++/Tree Mapping User Manual as well as the wildcard example in
+ the examples/cxx/tree/ directory.
+
+ * New option, --generate-comparison, triggers generation of comparison
+ operators (== and !=) for complex types. Comparison is performed
+ memberwise.
+
+ * Support for the RPC XDR binary stream in addition to ACE CDR.
+
+ * New constructor is generated for complex types with ultimate bases
+ that are simple types and can be default-initialized. This constructor
+ includes initializers for all required members but omits the initializer
+ for the base type. See Section 2.7, "Mapping for Complex Types" in the
+ C++/Tree Mapping User Manual for more information.
+
+ * Support for polymorphic binary serialization and extraction. Note that
+ the semantics of the --generate-insertion and --generate-extraction
+ options has changed. See the the compiler command line manual (man
+ pages) for details.
+
+ * New parsing function with the DOMDocument* argument and the own_dom
+ flag allow the tree to assume the ownership of the DOM document
+ being parsed when DOM association is requested (keep_dom flag).
+ See the C++/Tree Mapping User Manual for more information.
+
+ * New example, multiroot, shows how to handle XML vocabularies with
+ multiple root elements.
+
+ * New example, caching, shows how to parse several XML documents while
+ reusing the underlying XML parser and caching the schemas used for
+ validation.
+
+ * The mapping of built-in XML Schema type decimal has changed from
+ long double to double. The old mapping can be obtained by providing
+ a custom mapping for this type.
+
+ * The xml_schema::errors type which is used in the xml_schema::parsing
+ and xml_schema::serialization exceptions has been renamed to
+ xml_schema::diagnostics and extended to include warnings in addition
+ to errors.
+
+ * Serialization operators now clear the element being serialized to from
+ existing child nodes and attributes (except for special attributes such
+ as prefix-namespace mappings, etc.).
+
+ * Improved built-in type parsing, including support for normalization and
+ whitespace collapsing.
+
+ * Optimizations for the generated code size and compilation time,
+ including space optimizations for polymorphic parsing and
+ serialization. Optimizations for XML parsing speed.
+
+ C++/Parser
+
+ * The C++/Parser mapping have been significantly redesigned. See the new
+ Getting Started Guide in documentation/cxx/parser/guide/ for details.
+
+ * The new C++/Parser Mapping Getting Started Guide is available in the
+ documentation/cxx/parser/guide/ directory.
+
+ * The mapping now provides parser implementations for all built-in XML
+ Schema types. See Chapter 6, "Built-In XML Schema Type Parsers" in
+ the C++/Parser Mapping Getting Started Guide for more information.
+
+ * The mapping now supports automatic generation of sample parser
+ implementations and a test driver. The --generate-noop-impl option
+ triggers generation of a sample implementation with empty function
+ bodies. The --generate-print-impl option triggers generation of a
+ sample implementation that prints the data stored in XML to STDOUT.
+ The --generate-test-driver option trigger generation of a test driver.
+ For more information on this feature see the compiler command line
+ manual (man pages) and the generated example in the examples/cxx/parser/
+ directory. Other relevant options include: --force-overwrite,
+ --root-element-first, --root-element-last, and --root-element.
+
+ * New example, wildcard, shows how to parse the XML data matched by
+ XML Schema wildcards (any and anyAttribute).
+
+ * The xml_schema::document parser has been extended with overridable
+ virtual functions start_root_element and end_root_element to support
+ parsing of XML vocabularies with multiple document roots. See the
+ multiroot example in the examples/cxx/parser/ directory for more
+ information.
+
+ * The xml_schema::errors type which is used in the xml_schema::parsing
+ exception has been renamed to xml_schema::diagnostics and extended to
+ include warnings in addition to errors.
+
+Version 2.3.1
+
+ * The compiler is now capable of translating multiple schemas with
+ one invocation.
+
+ * New option, --sloc-limit, allows one to limit the amount of the
+ generated code.
+
+ * New option, --proprietary-license, instructs the compiler not to
+ include the GPL banner in each generated file. Instead a short
+ notice about a required proprietary license is generated. You
+ should not use this option unless you have obtained a proprietary
+ license from Code Synthesis.
+
+ * The default encoding for the 'char' character type is now UTF-8.
+ To get the previous behavior (local code page via the Xerces-C++
+ transcode functions) define the XSD_USE_LCP preprocessor macro
+ when compiling your source code.
+
+ C++/Tree
+
+ * The --parts option has been improved to split generated code more
+ evenly by analyzing the complexity of the generated schema constructs.
+
+ * Ability to customize serialization, std::ostream, and binary
+ insertion/extraction operators. See examples/cxx/tree/custom/wildcard
+ for an example on how to handle XML Schema wildcards (xsd:any and
+ xsd:anyAttribute) by customizing the parsing constructor and
+ serialization operators.
+
+ * Optimizations for the run-time memory consumption.
+
+ * Optimizations for space in the generated code.
+
+ * Number of bug fixes.
+
+ C++/Parser
+
+ * Proper handling of an xsd:any nested content. Nested elements,
+ attributes, and text are reported via _any_* hooks of the current
+ parser.
+
+ * Number of bug fixes, mostly in the generated validation code.
+
+
+Version 2.3.0
+
+ * Name conflicts across type inheritance hierarchies are now detected
+ and resolved via name escaping.
+
+ C++/Tree
+
+ * New option, --suppress-parsing, suppresses generation of the parsing
+ constructors and functions. This can be used to minimize the generated
+ code footprint when parsing from XML is not used.
+
+ * New option, --generate-forward, triggers generation of a forward
+ declaration header file for types defined in the schema. A set of
+ --fwd-* options that control the resulting file name as well as
+ prologue and epilogue code are available.
+
+ * New option, --generate-xml-schema, triggers generation of the mapping
+ for the XML Schema namespace to a separate header file. See the man
+ pages for details and examples/cxx/tree/custom/calendar for an example.
+
+ * New option, --extern-xml-schema, triggers inclusion of a header
+ file for the XML Schema namespace instead of generating the
+ necessary declarations inline. See the man pages for details and
+ examples/cxx/tree/custom/calendar for an example.
+
+ * New options, --custom-type and --custom-type-regex, instruct the
+ compiler to use custom C++ type for a type defined in the schema.
+ The standard mapping can still be generated (with a different name)
+ usually to be used as a base. Built-in XML Schema types can be
+ customized using this mechanism. See the man pages for details and
+ examples/cxx/tree/custom/* for examples.
+
+ * The generated parsing constructors and serialization operators have
+ been changed to use the Xerces-C++ DOM elements and attributes
+ instead of the internal wrapper types. This should provide easier
+ integration with other code and libraries that use the Xerces-C++
+ DOM types such as Berkeley DB XML.
+
+ * New example, examples/cxx/tree/dbxml, shows how to use the C++/Tree
+ mapping on top of the Berkeley DB XML database.
+
+ C++/Parser
+
+ * Validation of the attribute structure in the generated code.
+
+ * Validation of the character content models including mixed content in
+ the generated code.
+
+ * Validation of the built-in XML Schema types.
+
+ * Optimizations for space and time in the generated code. In particular
+ data coping during parsing and validation was significantly reduced.
+
+
+Version 2.2.0
+
+ * Detection of a version mismatch between the generated code and
+ the runtime.
+
+ C++/Tree
+
+ * Escaping of a global element name that conflicts with a global type
+ name. This is a backwards-incompatible change. Previous versions
+ map them to the same name.
+
+ * New options, --generate--insertion and --generate-extraction,
+ trigger generation of (binary) data representation stream
+ insertion and extraction operators, respectively. This allows
+ one to serialize/deserialize in-memory representation to/from
+ data representation streams such as XSD, CDR, etc. ACE CDR
+ streams are supported out of the box (see the binary example).
+ User-supplied streams can be used via an adaptation layer.
+
+ * New serialization flag, no_xml_declaration, instructs the XML
+ serialization functions to omit an XML declaration. This is useful
+ for streaming serialization (see the streaming example).
+
+ * Optimizations to reduce generated code size.
+
+
+ C++/Parser
+
+ * New options, --generate-validation and --suppress-validation,
+ trigger and suppress generation of the validation code,
+ respectively. The validation code is the implementation of the
+ XML Schema validation in the generated code (also known as
+ "perfect" parser). In this version validation of the element
+ structure has been implemented.
+
+ * New architecture for underlying XML parsers. This is a backwards-
+ incompatible change. Existing applications will have to be
+ modified. See examples for details.
+
+
+Version 2.1.1
+
+ C++/Tree
+
+ * New option, --namespace-map, allows direct mapping of XML Schema
+ namespaces to C++ namespaces without the use of regular expressions.
+
+ * Further optimizations in the container code and enum mapping to
+ reduce generated code size.
+
+ * Number of bug fixes in the generated code.
+
+
+ C++/Parser
+
+ * New option, --namespace-map, allows direct mapping of XML Schema
+ namespaces to C++ namespaces without the use of regular expressions.
+
+
+Version 2.1.0
+
+ * Automatic handling of forward inheritance. XML Schema allows
+ inheritance from yet undefined types while it is illegal to do
+ so in C++. Now the translator automatically handles forward
+ inheritance by re-arranging the schema during compilation.
+
+
+ C++/Tree
+
+ * New enum mapping with support for inheritance. Enumerators are
+ now parsed using binary search instead of linear search.
+
+ * Associated DOM nodes now retain "back" pointers to tree nodes.
+
+ * Optimizations to reduce generated code size.
+
+
+ C++/Parser
+
+ * Specialization for void. You can now use void as a hook argument
+ type if you don't want to pass any data between parsers.
+
+ * Support for re-use of implementations of base parsers in derived
+ parsers using the mixin C++ idiom. See the examples/cxx/parser/mixin
+ for more information.
+
+ * Support for uninitialized parser. If you don't provide a parser
+ for element/attribute, that element/attribute will be ignored
+ during parsing.
+
+
+Version 2.0.0
+
+ * New cardinality calculator. This improves support for schemas that
+ use complex structures with repeated elements, e.g.,
+
+ <complexType name="Type">
+ <choice>
+ <sequence>
+ <element name="a" type="string"/>
+ <element name="c" type="string"/>
+ </sequence>
+ <sequence>
+ <element name="b" type="string"/>
+ <element name="c" type="string"/>
+ </sequence>
+ </choice>
+ </complexType>
+
+
+ * New identifier escaping code. With this feature xsd generates proper
+ code for schemas that use the same name for an element and an attribute
+ in the same type or use several elements/attributes with different
+ qualified names but with the same local name, e.g.,
+
+ <!-- base.xsd -->
+ <schema xmlns="http://codesynthesis.com/xmlns/test/foo"
+ targetNamespace="http://codesynthesis.com/xmlns/test/foo">
+
+ <element name="foo" type="int"/>
+ </schema>
+
+ <schema xmlns="http://codesynthesis.com/xmlns/test/bar"
+ xmlns:f="http://codesynthesis.com/xmlns/test/foo"
+ targetNamespace="http://codesynthesis.com/xmlns/test/bar">
+
+ <import namespace="http://codesynthesis.com/xmlns/test/foo"
+ schemaLocation="base.xsd"/>
+
+ <element name="foo" type="string"/>
+
+ <complexType name="Foo">
+ <sequence>
+ <element ref="foo"/>
+ <element name="foo" type="long"/>
+ <element ref="f:foo"/>
+ <element ref="f:foo"/>
+ </sequence>
+ <attribute name="foo" type="string"/>
+ </complexType>
+ </schema>
+
+
+ C++/Tree
+
+ * New option, --generate-polymorphic, triggers generation of
+ polymorphism-aware code. Before this release xsd used to always
+ generate polymorphism-aware code. However, it appears to be quite
+ wasteful in terms of the generated code size (up to 40%). You will
+ now need to explicitly specify this option if you use substitution
+ groups or xsi:type. A warning is issued if this option is not
+ specified but the schema makes use of substitution groups.
+
+ * New options, --root-element-first, --root-element-last,
+ --root-element-all, --root-element-none, and --root-element, control
+ generation of parsing and serialization functions. With these options
+ you can avoid generating extra code for global elements that are not
+ document roots. See the man pages for details.
+
+ * New options, --parts and -parts-suffix, allows you to split generated
+ source code into a number of parts. This is useful when translating
+ large, monolithic schemas and a C++ compiler is not able to compile
+ the resulting source code at once (usually due to insufficient memory).
+
+ * New option, --generate-default-ctor, triggers generation of default
+ constructors even for types that have required members. Required
+ members of an instance constructed using such a constructor are not
+ initialized and accessing them results in undefined behavior. Thanks
+ to Jean-Francois Dube <jf at magnu.polymtl.ca> for suggesting this
+ feature.
+
+ * New option, --generate-from-base-ctor, triggers generation of
+ constructors that expect an instance of a base type followed by all
+ required members. Thanks to Jean-Francois Dube <jf at magnu.polymtl.ca>
+ for suggesting this feature.
+
+ * Information scopes for attributes and elements with default/fixed values
+ now define the public static default_value function which allows one to
+ obtain the default/fixed value for the element/attribute. Thanks to
+ Dave Moss <david.r.moss at selex-comm.com> for suggesting this feature.
+
+ * MSVC 7.1 has a limit on the length of the "if else if" chain. This
+ results in ICE when compiling generated code for enumerations with
+ a large number of values. This version addresses this issue. Thanks
+ to Cyrille Chépélov <cyrille at chepelov.org> for reporting this and
+ suggesting a fix.
+
+
+ C++/Parser
+
+ * The parser construction API has changed. Now, for element 'foo',
+ the name of the parser modifier function is 'foo_parser'. Likewise,
+ operator() for setting all parsers at once has been changed to the
+ 'parsers' function.
+
+
+Version 1.9.0
+
+ C++/Tree
+
+ * The size modifier function in the base64_binary and hex_binary
+ built-in types automatically adjusts capacity if needed.
+
+ * More internal names (names that start with _xsd_) were made
+ private or protected.
+
+ C++/Parser
+
+ * Typedef for the parser base in the xml_schema namespace.
+
+ C++/Parser-E
+
+ * C++/Parser mapping optimized for embedded systems. For now it
+ is equivalent to 'cxx-parser --xml-parser expat'.
+
+
+Version 1.8.0
+
+ * Moved to the build 0.2 series.
+
+ C++/Tree
+
+ * Support for default and fixed values in attributes. An optional
+ attribute with a default or fixed value is mapped to the One
+ cardinality class instead of the Optional cardinality class.
+
+ * Mapping for base64Binary and hexBinary has improved. Now these
+ types support a basic buffer abstraction and perform automatic
+ encoding and decoding.
+
+ * Internal names are protected. We've noticed (via bug reports) a
+ wide use of internal names (names that start with _xsd_) in user
+ code. This is not portable and instead you should use public
+ names. To prevent this from happening in the future we've made
+ all internal names protected.
+
+ C++/Parser
+
+ * Support for Expat as the underlying XML parser in addition to
+ Xerces-C++. This allows one to use the C++/Parser mapping in
+ memory-constrained environments such as embedded systems. To
+ select Expat instead of Xerces-C++ (default) add
+ '--xml-parser expat' to the command line. At the moment only
+ 'char' (UTF-8) is supported as the base character type when
+ Expat is selected.
+
+ * The invalid_instance exception has been renamed to parsing.
+
+ * Generic error_handler interface has been added in addition
+ to Xerces-C++-specific DOMErrorHandler. It allows you to
+ handle parsing errors and warnings without having to deal
+ with Xerces-C++ specifics.
+
+ * The default error handling behavior has changed in parsing
+ functions. Instead of printing errors and warnings to STDERR,
+ the errors are now collected and thrown as part of the parsing
+ exception.
+
+ * In parsing functions, the name, namespace arguments order has
+ been reversed to be consistent with the one used in parsing
+ hooks.
+
+Version 1.7.0
+
+ * Number of bug fixes in libxsd and the generated code.
+
+ C++/Tree
+
+ * Comprehensive XML Schema C++/Tree Mapping User Manual.
+
+ * Basic support for union. A simple type that is defined using
+ derivation by union is mapped to a C++ class that derives from
+ string.
+
+ * The _clone function has its arguments default-initialized.
+
+ * The invalid_instance exception has been renamed to parsing.
+
+ * Generic error_handler interface has been added in addition
+ to Xerces-C++-specific DOMErrorHandler. It allows you to
+ handle parsing/serialization errors and warnings without
+ having to deal with Xerces-C++ specifics. See the user
+ manual for more information.
+
+ * The default error handling behavior has changed in parsing
+ and serialization functions. Instead of printing errors and
+ warnings to STDERR, the errors are now collected and thrown
+ as part of the parsing/serialization exception. See the user
+ manual for more information.
+
+ * The optional and sequence containers now support operators ==,
+ !=, <, >, <=, and >=.
+
+ * Flags argument has been added to serialization functions. The
+ only flag that is currently supported is dont_initialize.
+
+ * Generated code cleanups.
+
+ C++/Parser
+
+ * Basic support for union. A simple type that is defined using
+ derivation by union is mapped to a C++ class template that
+ is just an alias for the generic parser. You are expected to
+ override the _characters function in your implementation.
+
+ * Properties argument to parsing functions which allows to
+ programmatically specify schemas for instance document
+ validation.
+
+ * Flags argument to parsing functions. The following flags
+ are supported:
+
+ dont_validate - do not validate instance documents
+ dont_initialize - do not initialize the Xerces-C++ runtime
+
+Version 1.6.0
+
+ * Number of bug fixes in libxsd and the generated code.
+
+ C++/Tree
+
+ * Support for xsi:type and substitution groups in parsing and
+ serialization. See examples/cxx/tree/polymorphism for a code
+ sample.
+
+ * Properties argument to parsing functions which allows to
+ programmatically specify schemas for instance document
+ validation.
+
+ * Extra checks in parsing code which prevents construction
+ of inconsistent in-memory representation from invalid
+ instance documents. Should be useful when validation is
+ disabled.
+
+ * Accessors and modifier were made normal member functions.
+ Before they were implemented via functors.
+
+ * Workaround for g++-3.3 bug# 16650:
+
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16650
+
+ C++/Parser
+
+ * All "service" functions were renamed to start with '_'.
+ This should prevent hiding of service functions by
+ elements/attributes with the same names.
+
+Version 1.5.0
+
+ * Number of bug fixes in libxsd and the generated code.
+
+ C++/Tree
+
+ * Basic support for inheritance-by-restriction in complex types.
+
+ * The following parsing flags have been introduced:
+
+ keep_dom - keep association with underlying DOM nodes
+ dont_validate - do not validate instance documents
+ dont_initialize - do not initialize the Xerces-C++ runtime
+
+ * "Type-less content" such as mixed content models, xsd:anyType/
+ xsd:anySimpleType, and xsd:any/xsd:anyAttribute is supported by
+ exposing corresponding DOM nodes (see the keep_dom parsing flag).
+ Note that only a subset of XML Schema xsd:any functionality is
+ supported. The compiler will issue diagnostics for unsupported
+ cases. See examples/cxx/tree/mixed for a code sample.
+
+ C++/Parser
+
+ * Support for inheritance-by-restriction in complex types.
+
+ * "Type-less content" such as mixed content models, xsd:anyType/
+ xsd:anySimpleType, and xsd:any/xsd:anyAttribute is supported
+ by forwarding parsing events to a set of "unexpected" hooks.
+ Note that only a subset of XML Schema xsd:any functionality is
+ supported. The compiler will issue diagnostics for unsupported
+ cases. See examples/cxx/parser/mixed for a code sample.
+
+Version 1.4.0
+
+ * Number of improvements and bug fixes in the diagnostics code.
+
+ * libxsd has been reorganized to provide a clean split of code with
+ regards to char/wchar_t use. It should be possible to use libxsd
+ and the xsd-generated code on platforms that lack wchar_t support,
+ such as mingw.
+
+ C++/Tree
+
+ * Work around for g++ bug# 23206.
+
+ * Support for xsd:list.
+
+ * Type/member name conflicts are auto-resolved. Such conflicts
+ occur when a type and an element or attribute withing this type
+ share the same name.
+
+ * XML Schema extension, the 'refType' attribute, allows one to
+ specify referenced type for xsd:IDREF and xsd:IDREFS data types.
+ See examples/cxx/tree/library for details.
+
+ * New option, --morph-anonymous, allows automatic morphing
+ of anonymous types to named ones. See the man pages for
+ details.
+
+ * New option, --namespace-regex-trace, allows one to trace the
+ namespace mapping process. See the man pages for details.
+
+ * Mapping for optional elements/attributes (cardinality 0..1)
+ has changed in a backwards-incompatible way. In the previous
+ version you would write:
+
+ Bar& bar = ...
+
+ if (bar.foo.present ()) // test
+ {
+ Foo& foo (bar.foo ()); // get
+
+ bar.foo (Foo (...)); // set
+
+ bar.foo.reset (); // reset
+ }
+
+ Now you would write it like this:
+
+ if (bar.foo ().present ()) // test
+ {
+ Foo& foo (bar.foo ().get ()); // get
+
+ bar.foo (Foo (...)); // set
+
+ bar.foo ().reset (); // reset
+ }
+
+ Or using the pointer notation:
+
+ if (bar.foo ()) // test
+ {
+ Foo& foo (*bar.foo ()); // get
+
+ bar.foo (Foo (...)); // set
+
+ bar.foo ().reset (); // reset
+ }
+
+ C++/Parser
+
+ * Support for xsd:list.
+
+ * Type/member name conflicts are auto-resolved. Such conflicts
+ occur when a type and an element or attribute withing this type
+ share the same name.
+
+ * New option, --namespace-regex-trace, allows one to trace the
+ namespace mapping process. See the man pages for details.
+
+Version 1.3.0
+
+ * Numerous bug fixes.
+
+ * The XML subsystem of libxsd has been reorganized to provide
+ a clean split of DOM and SAX functionalities.
+
+ C++/Parser
+
+ * New option, --morph-anonymous, allows automatic morphing
+ of anonymous types to named ones. See the man pages for
+ details.
+
+ C++/Tree
+
+ * Additional parser functions provide support for reading
+ from std::istream.
+
+Version 1.2.0
+
+ C++/Parser
+
+ * New backend that generates the C++/Parser mapping.
+
+Version 1.1.1
+
+ all backends
+
+ * Bug fixes in the filesystem path handling logic.
+
+Version 1.1.0
+
+ C++/Tree
+
+ * New option, --generate-serialization, triggers generation of
+ serialization functions. Serialization functions convert an in-memory
+ representation back to XML.
+
+ * xsd::cxx::tree::vector has been extended to closely follow std::vector
+ API. This allows you to access and modify element sequences as if they
+ were of type std::vector.
+
+ * Generated constructors from xml::attribute and xml::element are made
+ explicit.
+
+ * The library example was extended to showcase modification and
+ serialization of the in-memory representation.
+
+ * New "XML Schema C++/Tree Mapping Serialization Guide" has an in-depth
+ treatment of the serialization mechanisms provided by xsd.
+
+Version 1.0.1
+
+ all backends
+
+ * Improved diagnostics.
+
+ * Bug fixes in the schema inclusion/importing logic.
+
+ C++/Tree
+
+ * Two new options: --include-with-brackets and --include-prefix
+
+Version 1.0.0
+
+ * First public release.
diff --git a/PACKAGE-README.md b/PACKAGE-README.md
new file mode 100644
index 0000000..4a1ce70
--- /dev/null
+++ b/PACKAGE-README.md
@@ -0,0 +1,66 @@
+# XSD
+
+XSD is an open-source, cross-platform XML Schema to C++ data binding
+compiler. Provided with an XML document specification (XML Schema), it
+generates C++ classes that represent the given vocabulary as well as XML
+parsing and serialization code. You can then access the data stored in XML
+using types and functions that semantically correspond to your application
+domain rather than dealing with generic elements/attributes and raw strings.
+
+For further information, refer to the [XSD project
+page](https://codesynthesis.com/products/xsd/).
+
+## Usage
+
+XSD consists of several packages with the main ones being `xsd` (the XML
+Schema to C++ compiler) and `libxsd` (the runtime library). There are also
+several `*-tests` packages as well as `xsd-examples`.
+
+When specifying dependencies on XSD packages in your project, the `xsd`
+package should be a build-time dependency. The `libxsd` library is
+header-only and because it can be used either with Xerces-C++ or
+Expat as the underlying XML parser, it does not have a dependency on
+either, expecting your project to make the choice by depending on
+one or the other explicitly and then importing and linking the
+corresponding library.
+
+So, putting it all together, your project's `manifest` would normally
+have the following fragment if using Xerces-C++:
+
+```
+depends: * xsd ^4.2.0
+depends: libxsd ^4.2.0
+depends libxerces-c ^3.2.4
+```
+
+Or the following fragment if using Expat:
+
+```
+depends: * xsd ^4.2.0
+depends: libxsd ^4.2.0
+depends libexpat ^2.5.0
+```
+
+Then your `buildfile` would have something along these lines if using
+Xerces-C++:
+
+```
+import! [metadata] xsd = xsd%exe{xsd}
+
+import libs = libxsd%lib{xsd}
+import libs += libxerces-c%lib{xerces-c}
+```
+
+Or along these lines if using Expat:
+
+```
+import! [metadata] xsd = xsd%exe{xsd}
+
+import libs = libxsd%lib{xsd}
+import libs += libexpat%lib{expat}
+```
+
+Note that the `xsd` executable provides `build2` metadata.
+
+The compilation of XML Schema to C++ can be implemented using ad hoc recipes
+or rules. See the `xsd-examples` package for the complete examples.
diff --git a/README b/README
deleted file mode 100644
index 32c8904..0000000
--- a/README
+++ /dev/null
@@ -1,86 +0,0 @@
-This archive contains pre-configured CodeSynthesis XSD source code
-with all its dependencies (except Xerces-C++). It allows you to build
-the XSD compiler in non-interactive mode (that is, without answering
-any configuration questions).
-
-The following GNU tools are required to build XSD. Any fairly recent
-GNU/Linux distribution should have all of them already installed:
-
-GNU bash >= 2.00 (bash --version) http://www.gnu.org/software/bash/
-GNU make >= 3.81 (make --version) http://www.gnu.org/software/make/
-GNU g++ >= 4.2.0 (g++ --version) http://gcc.gnu.org/
-
-The build system expects you to have the Xerces-C++ library version
-3.0.0 or later built and installed in a location where the C++ compiler
-will find them by default (normally /usr/lib/ and /usr/local/lib/).
-Alternatively, you can provide include (-I) and library (-L) paths
-for this library via the CPPFLAGS and LDFLAGS variables, respectively.
-
-The build system supports the following variables:
-
-CC (defaults to gcc if not set)
-CXX (defaults to g++ if not set)
-AR (defaults to ar if not set)
-RANLIB (defaults to ranlib if not set)
-CPPFLAGS
-CFLAGS
-CXXFLAGS
-LDFLAGS
-LIBS
-EXTERNAL_LIBCUTL
-
-For example:
-
-$ make CC=gcc-4.8 CXX=g++-4.8 CFLAGS=-O3 CXXFLAGS=-O3 -j 4
-
-The EXTERNAL_LIBCUTL variable allows you to use an external build
-of libcutl, for example, if you already have this library installed.
-The valid values are 'n' (default) and 'y'.
-
-If you would like to see the full compiler/linker/etc., command lines,
-you can add verbose=1 to the make command line:
-
-$ make verbose=1
-
-After the build is complete, the XSD compiler can be found in the
-xsd/xsd/ sub-directory and the runtime headers in the xsd/libxsd/
-sub-directory. You can install the XSD compiler, runtime library,
-and documentation with the install target, for example:
-
-$ make install_prefix=/usr install
-
-You can fine-tune the installation locations with the following make
-variables:
-
-install_prefix default is /usr/local
-install_data_prefix default is install_prefix
-install_exec_prefix default is install_prefix
-
-install_bin_dir default is install_exec_prefix/bin
-install_sbin_dir default is install_exec_prefix/sbin
-install_lib_dir default is install_exec_prefix/lib
-
-install_data_dir default is install_data_prefix/share
-install_inc_dir default is install_data_prefix/include
-
-install_doc_dir default is install_data_dir/doc
-install_man_dir default is install_data_dir/man
-install_info_dir default is install_data_dir/info
-
-You can also create a distribution package with the XSD compiler binary,
-source code for the runtime library and examples, as well as the
-documentation using the dist and dist-win targets, for example:
-
-$ make dist_prefix=/tmp/xsd-x.y.z dist
-
-Or, for Windows:
-
-$ make dist_prefix=/tmp/xsd-x.y.z dist-win
-
-The build system also supports the test and clean targets, for example:
-
-$ make test
-$ make clean
-
-Send bug reports or any other feedback to the xsd-users@codesynthesis.com
-mailing list.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e2b2887
--- /dev/null
+++ b/README.md
@@ -0,0 +1,12 @@
+# xsd - XML Schema to C++ data binding compiler
+
+XSD is an open-source, cross-platform XML Schema to C++ data binding
+compiler. Provided with an XML document specification (XML Schema), it
+generates C++ classes that represent the given vocabulary as well as XML
+parsing and serialization code. You can then access the data stored in XML
+using types and functions that semantically correspond to your application
+domain rather than dealing with generic elements/attributes and raw strings.
+
+For further information, including licensing conditions, documentation, and
+binary packages, refer to the [XSD project
+page](https://codesynthesis.com/products/xsd/).
diff --git a/build-0.3/abspath.make b/build-0.3/abspath.make
deleted file mode 100644
index e1ef881..0000000
--- a/build-0.3/abspath.make
+++ /dev/null
@@ -1,18 +0,0 @@
-# file : build/abspath.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-.PHONY: FORCE
-
-%:: FORCE
- @echo $(abspath $@)
-
-$(MAKEFILE_LIST):: ;@:
-
-# Remove all default rules.
-#
-.SUFFIXES:
-
-ifeq ($(filter -r,$(MAKEFLAGS)),)
-MAKEFLAGS += -r
-endif
diff --git a/build-0.3/bootstrap.make b/build-0.3/bootstrap.make
deleted file mode 100644
index 44eb57e..0000000
--- a/build-0.3/bootstrap.make
+++ /dev/null
@@ -1,385 +0,0 @@
-# file : build/bootstrap.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# First time bootstrap.make is read
-#
-ifndef %makefile%
-
-# Configure make.
-#
-
-# Forces make to delete targets whos rebuild commands failed but
-# updated the target.
-#
-.DELETE_ON_ERROR:
-
-# Remove all built-in rules.
-#
-.SUFFIXES:
-
-ifeq ($(filter -r,$(MAKEFLAGS)),)
-MAKEFLAGS += -r
-endif
-
-
-# Disable implicit phony misfeature.
-#
-#ifeq ($(filter --no-implicit-phony,$(MAKEFLAGS)),)
-#MAKEFLAGS += --no-implicit-phony
-#endif
-
-# Enable second expansion.
-#
-.SECONDEXPANSION:
-
-# Force target. Used to force rule executions.
-#
-.PHONY: FORCE
-
-
-# Export variables that could be useful for configuration scripts.
-#
-export bld_root
-export MAKE
-
-%replica% :=
-%foreign% :=
-%interactive% := t
-
-# List of realpath'ed include-once files.
-#
-%included_files% :=
-
-#$(warning init %included_files%: $(%included_files%))
-
-# @@ maybe I should set makefile to bootstrap and restore it at the end.
-# This way I will be able to use %makefile% below (instead of _self) and
-# also it will be consistent.
-#
-
-# By convention, the makefile name is the second or third last word from
-# the end. If it is the third, then the second one should be end with
-# bootstrap.make
-#
-%makefile% := $(subst $(lastword $(MAKEFILE_LIST)),,$(MAKEFILE_LIST))
-ifneq ($(filter %bootstrap.make,$(lastword $(%makefile%))),)
-%makefile% := $(subst $(lastword $(%makefile%)),,$(%makefile%))
-endif
-%makefile% := $(abspath $(lastword $(%makefile%)))
-
-%makefile_realpath% := $(realpath $(%makefile%))
-
-
-#
-# include facility
-#
-
-# Execute makefile search algorithm. Return abspath of the makefile if found
-# and empty string otherwise.
-#
-%frame_exclude% += include-find-makefile
-define include-find-makefile
-$(if $(wildcard $1),\
-$(abspath $1),\
-$(if $(filter-out /%,$1),\
-$(call include-search-dirs,$1,$(.INCLUDE_DIRS))))
-endef
-
-# Search for $1 in the list of directoris $2
-#
-%frame_exclude% += include-search-dirs
-define include-search-dirs
-$(if $(strip $2),\
-$(if $(wildcard $(firstword $2)/$1),\
-$(abspath $(firstword $2)/$1),\
-$(call include-search-dirs,$1,$(wordlist 2,$(words $2),$2))))
-endef
-
-# Test if $1 is a 'foreign' makefile, i.e., does not reside in
-# src_root, out_root, or bld_root. Use shadows for src and out
-# roots to catch cases where these were reset before inclusion.
-# This happens in import stubs.
-#
-%frame_exclude% += include-test-foreign
-define include-test-foreign
-$(if $(%foreign%),t,$(if $(filter $(bld_root)/% $(src_root_shadow)/% $(out_root_shadow)/%,$1),,t))
-endef
-
-%frame_exclude% += include-body
-define include-body
-%interactive% :=
-%makefile% := $(call include-find-makefile,$2)
-%makefile_realpath% := $$(realpath $$(%makefile%))
-%foreign% := $$(call include-test-foreign,$$(%makefile%))
-
-$1 $$(if $$(%makefile%),$$(%makefile%),$2)
-
-%makefile_realpath% := $3
-%makefile% := $4
-%interactive% := $5
-%foreign% := $6
-endef
-
-%frame_exclude% += include
-define include
-$(eval $(foreach f,$1,\
- $(call include-body,\
- include,$f,$(%makefile_realpath%),$(%makefile%),$(%interactive%),$(%foreign%))))
-endef
-
-%frame_exclude% += -include
-define -include
-$(eval $(foreach f,$1,\
- $(call include-body,\
- -include,$f,$(%makefile_realpath%),$(%makefile%),$(%interactive%),$(%foreign%))))
-endef
-
-
-#
-# include-once
-#
-
-# This one simply delegates to the include directive to get the
-# error message.
-#
-# $1 : include/-include
-# $2 : file
-#
-%frame_exclude% += include-once-failed-body
-define include-once-failed-body
-$1 $2
-endef
-
-#
-# $1 : include/-include
-# $2 : file
-#
-%frame_exclude% += include-once-file-body
-define include-once-file-body
-%interactive% :=
-%makefile% := $2
-%makefile_realpath% := $(realpath $2)
-%foreign% := $$(call include-test-foreign,$$(%makefile%))
-
-%included_files% += $$(%makefile_realpath%)
-
-$1 $2
-
-%makefile_realpath% := $3
-%makefile% := $4
-%interactive% := $5
-%foreign% := $6
-endef
-
-
-%frame_exclude% += include-once-file-filter
-define include-once-file-filter
-$(if $(filter $(realpath $2),$(%included_files%)),,\
- $(call include-once-file-body,\
- $1,$2,$(%makefile_realpath%),$(%makefile%),$(%interactive%),$(%foreign%)))
-endef
-
-#
-# $1 : include/-include
-# $2 : file
-# $6 : value
-#
-
-%frame_exclude% += include-once-value-body
-define include-once-value-body
-%interactive% :=
-%makefile% := $2
-%makefile_realpath% := $(realpath $2)
-%foreign% := $$(call include-test-foreign,$$(%makefile%))
-
-%include_once_$$(%makefile_realpath%)% += $7
-
-$1 $2
-
-%makefile_realpath% := $3
-%makefile% := $4
-%interactive% := $5
-%foreign% := $6
-endef
-
-
-%frame_exclude% += include-once-value-filter
-define include-once-value-filter
-$(if $(filter $3,$(value %include_once_$(realpath $2)%)),,\
- $(call include-once-value-body,\
- $1,$2,$(%makefile_realpath%),$(%makefile%),$(%interactive%),$(%foreign%),$3))
-endef
-
-
-# $1 - include/-include
-# $2 - abspath or empty if not found
-# $3 - orginal path
-# $4 - value [optional]
-#
-%frame_exclude% += include-once-filter
-define include-once-filter
-$(if $2,\
-$(if $4,\
-$(call include-once-value-filter,$1,$2,$4),\
-$(call include-once-file-filter,$1,$2)),\
-$(call include-once-failed-body,$1,$3))
-endef
-
-%frame_exclude% += include-once
-define include-once
-$(eval $(call include-once-filter,\
-include,$(call include-find-makefile,$1),$1,$(strip $2)))
-endef
-
-%frame_exclude% += -include-once
-define -include-once
-$(eval $(call include-once-filter,\
--include,$(call include-find-makefile,$1),$1,$(strip $2)))
-endef
-
-
-#$(warning include facility is up)
-
-endif # %makefile%
-
-#
-#
-bld_root := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
-
-
-# initialize {src,out}_{root,base}
-#
-%frame_exclude% += find-bootstrap-base
-define find-bootstrap-base
-$(if $(findstring $(abspath $(lastword $1)),$(%makefile%)),$2,\
-$(call find-bootstrap-base,\
-$(wordlist 1,$(words $(wordlist 2,$(words $1),$1)),$1),\
-$(lastword $1)))
-endef
-
-src_root := $(abspath $(dir $(call find-bootstrap-base,$(MAKEFILE_LIST)))..)
-src_base := $(abspath $(dir $(%makefile%)))
-
-ifneq ($(src_root),$(src_base))
-
-# In recursive make invocation, out_root may come from the environment
-# in which case we need to override it.
-#
-ifneq ($(origin out_root),file)
- out_root := $(abspath $(patsubst \
- %$(subst $(src_root)/,,$(src_base)),%,$(CURDIR)))
-endif
-
-out_base := $(out_root)/$(subst $(src_root)/,,$(src_base))
-
-else
-
-# In recursive make invocation, out_root may come from the environment
-# in which case we need to override it.
-#
-ifneq ($(origin out_root),file)
- out_root := $(abspath $(CURDIR))
-endif
-
-out_base := $(out_root)
-
-endif
-
-scf_root := $(src_root)/build
-dcf_root := $(out_root)/build
-
-src_root_shadow := $(src_root)
-out_root_shadow := $(out_root)
-
-$(out_root)/%: export out_root := $(out_root)
-$(out_root)/%: export src_root := $(src_root)
-$(out_root)/%: export scf_root := $(scf_root)
-$(out_root)/%: export dcf_root := $(dcf_root)
-$(out_root)/%: export project_name := $(project_name)
-
-# @@ Why do I need out_root here?
-#
-$(out_base)/%: out_root := $(out_root)
-$(out_base)/%: export out_base := $(out_base)
-$(out_base)/%: export src_base := $(src_base)
-
-ifdef build_debug
-
-$(warning "bld root: $(bld_root)")
-$(warning "scf root: $(scf_root)")
-$(warning "dcf root: $(dcf_root)")
-$(warning "src root: $(src_root)")
-$(warning "src base: $(src_base)")
-$(warning "out root: $(out_root)")
-$(warning "out base: $(out_base)")
-
-endif
-
-#$(warning paths are set)
-
-# frame facility
-#
-$(call include-once,$(bld_root)/frame.make)
-
-# import facility
-#
-$(call include-once,$(bld_root)/import.make)
-
-# Load some common facilities.
-#
-$(call include-once,$(bld_root)/literals.make)
-$(call include-once,$(bld_root)/message.make)
-$(call include-once,$(bld_root)/dir.make)
-
-
-# Static configuration.
-#
-$(call include,$(bld_root)/configuration-static.make)
-
-ifneq ($(bld_root),$(scf_root))
-$(call -include,$(scf_root)/configuration-static.make)
-endif
-
-# `disfigure' target.
-#
-.PHONY: disfigure
-.PHONY: $(dcf_root)/.disfigure $(out_root)/.disfigure
-
-disfigure:: $(build_absolute_clean_target)
-disfigure:: $(dcf_root)/.disfigure
-disfigure:: $(out_root)/.disfigure
-
-ifneq ($(out_root),$(out_base))
-.PHONY: $(out_base)/.disfigure
-$(out_root)/.disfigure:: $(out_base)/.disfigure
-endif
-
-# Clean up generated makefiles.
-#
-ifndef %foreign%
-ifneq ($(out_root),$(src_root))
-$(out_base)/.disfigure::
- $(call message, rm $$1,rm -f $$1,$(out_base)/makefile)
-endif
-endif
-
-# Dynamic configuration (interactive check is to make sure we only do
-# this once).
-#
-ifdef %interactive%
-ifneq ($(out_root),$(src_root))
-
-$(call -include,$(dcf_root)/bootstrap-dynamic.make)
-
-$(dcf_root)/bootstrap-dynamic.make: | $(dcf_root)/.
- $(call message,,echo "src_root := $(src_root)" >$@)
-
-$(dcf_root)/.disfigure::
- $(call message, rm $$1,rm -f $$1,$(dcf_root)/bootstrap-dynamic.make)
-endif
-endif
-
-ifeq ($(.DEFAULT_GOAL),disfigure)
-.DEFAULT_GOAL :=
-endif
diff --git a/build-0.3/c/c-d.make b/build-0.3/c/c-d.make
deleted file mode 100644
index fdba684..0000000
--- a/build-0.3/c/c-d.make
+++ /dev/null
@@ -1,9 +0,0 @@
-# file : build/c/c-d.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/c/configuration.make)
-
-ifdef c_id
-$(call include-once,$(bld_root)/c/$(c_id)/c-d.make,$(out_base))
-endif
diff --git a/build-0.3/c/c-o.make b/build-0.3/c/c-o.make
deleted file mode 100644
index d389fdd..0000000
--- a/build-0.3/c/c-o.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# file : build/c/c-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/c/configuration.make)
-
-
-ifdef c_id
-$(call include-once,$(bld_root)/c/$(c_id)/c-o.make,$(out_base))
-endif
diff --git a/build-0.3/c/configuration-rules.make b/build-0.3/c/configuration-rules.make
deleted file mode 100644
index 5663065..0000000
--- a/build-0.3/c/configuration-rules.make
+++ /dev/null
@@ -1,18 +0,0 @@
-# file : build/c/configuration-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/c/configuration-dynamic.make: | $(dcf_root)/c/.
- $(call message,,$(bld_root)/c/configure $@ \
-"$(origin c_pp_options)" \
-"$(origin c_options)" \
-"$(origin c_ld_options)" \
-"$(origin c_libs)")
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/c/configuration-dynamic.make,\
-rm -f $(dcf_root)/c/configuration-dynamic.make)
-
-endif
diff --git a/build-0.3/c/configuration-static.make b/build-0.3/c/configuration-static.make
deleted file mode 100644
index c226a36..0000000
--- a/build-0.3/c/configuration-static.make
+++ /dev/null
@@ -1,12 +0,0 @@
-# file : build/c/configuration-static.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-c_h_suffix := h
-c_s_suffix := c
-
-# Get user-supplied static configuration if any.
-#
-ifneq ($(bld_root),$(scf_root))
-$(call -include,$(scf_root)/c/configuration-static.make)
-endif
diff --git a/build-0.3/c/configuration.make b/build-0.3/c/configuration.make
deleted file mode 100644
index e47731c..0000000
--- a/build-0.3/c/configuration.make
+++ /dev/null
@@ -1,43 +0,0 @@
-# file : build/c/configuration.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/configuration-rules.make,$(dcf_root))
-
-# Static configuration.
-#
-$(call include,$(bld_root)/c/configuration-static.make)
-
-# Dynamic configuration.
-#
-c_id :=
-c_optimize :=
-c_debug :=
-c_rpath :=
-
-c_pp_extra_options :=
-c_extra_options :=
-c_ld_extra_options :=
-c_extra_libs :=
-c_extra_lib_paths :=
-
-$(call -include,$(dcf_root)/c/configuration-dynamic.make)
-
-ifdef c_id
-
-$(out_root)/%: c_id := $(c_id)
-$(out_root)/%: c_optimize := $(c_optimize)
-$(out_root)/%: c_debug := $(c_debug)
-$(out_root)/%: c_rpath := $(c_rpath)
-
-$(out_root)/%: c_pp_extra_options := $(c_pp_extra_options) $(c_pp_cmd_options)
-$(out_root)/%: c_extra_options := $(c_extra_options) $(c_cmd_options)
-$(out_root)/%: c_ld_extra_options := $(c_ld_extra_options) $(c_ld_cmd_options)
-$(out_root)/%: c_extra_libs := $(c_extra_libs) $(c_cmd_libs)
-$(out_root)/%: c_extra_lib_paths := $(c_extra_lib_paths) $(c_cmd_lib_paths)
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/build-0.3/c/configure b/build-0.3/c/configure
deleted file mode 100755
index a294a0c..0000000
--- a/build-0.3/c/configure
+++ /dev/null
@@ -1,165 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/c/configure
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-# $2 origin of the c_pp_options make variable
-# $3 origin of the c_options make variable
-# $4 origin of the c_ld_options make variable
-# $5 origin of the c_libs make variable
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please select the C compiler you would like to use:"
-$echo
-$echo "(1) GNU C (gcc)"
-$echo "(2) Intel C (icc)"
-$echo "(3) Other C compiler"
-$echo
-
-id=`read_option "gnu intel generic" "gnu"`
-
-if [ "$id" != "generic" ]; then
-
- $echo
- $echo "Would you like the C compiler to optimize generated code?"
- $echo
-
- optimize=`read_y_n y`
-
-
- $echo
- $echo "Would you like the C compiler to generate debug information?"
- $echo
-
- debug=`read_y_n y`
-
- $echo
- $echo "Embed dynamic library paths into executables (rpath)?"
- $echo
-
- rpath=`read_y_n y`
-
-fi
-
-# pp_options
-#
-if [ "$2" != "undefined" ]; then
-
- pp_options=$c_pp_options
-
- if [ "$pp_options" ]; then
- $echo
- $echo "Extra C preprocessor options: $pp_options"
- $echo
- fi
-else
-
- $echo
- $echo "Please enter any extra C preprocessor options."
- $echo
-
- read -e -p "[]: " pp_options
-fi
-
-
-# options
-#
-if [ "$3" != "undefined" ]; then
-
- options=$c_options
-
- if [ "$options" ]; then
- $echo
- $echo "Extra C compiler options: $options"
- $echo
- fi
-else
-
- $echo
- $echo "Please enter any extra C compiler options."
- $echo
-
- read -p "[]: " options
-fi
-
-
-# ld_options
-#
-if [ "$4" != "undefined" ]; then
-
- ld_options=$c_ld_options
-
- if [ "$ld_options" ]; then
- $echo
- $echo "Extra C linker options: $ld_options"
- $echo
- fi
-else
-
- $echo
- $echo "Please enter any extra C linker options."
- $echo
-
- read -e -p "[]: " ld_options
-fi
-
-
-# libs
-#
-if [ "$5" != "undefined" ]; then
-
- libs=$c_libs
-
- if [ "$libs" ]; then
- $echo
- $echo "Extra C libraries: $libs"
- $echo
- fi
-else
-
- $echo
- $echo "Please enter any extra C libraries."
- $echo
-
- read -e -p "[]: " libs
-fi
-
-
-# Extract -L paths from the ld options.
-#
-paths=
-
-if [ "$ld_options" ]; then
- paths=`echo "$ld_options" | sed -e 's/-L *\([^ ]*\)/\\
--L\1\\
-/g' | sed -e 's/^-L\([^ ]*\)$/\1/' -e t -e d`
- paths=`echo $paths | sed -e 's/ /:/g'`
-fi
-
-echo "c_id := $id" >$1
-
-if [ "$id" != "generic" ]; then
- echo "c_optimize := $optimize" >>$1
- echo "c_debug := $debug" >>$1
- echo "c_rpath := $rpath" >>$1
-fi
-
-echo "c_pp_extra_options := $pp_options" >>$1
-echo "c_extra_options := $options" >>$1
-echo "c_ld_extra_options := $ld_options" >>$1
-echo "c_extra_libs := $libs" >>$1
-echo "c_extra_lib_paths := $paths" >>$1
diff --git a/build-0.3/c/cpp-options.make b/build-0.3/c/cpp-options.make
deleted file mode 100644
index d6246a3..0000000
--- a/build-0.3/c/cpp-options.make
+++ /dev/null
@@ -1,35 +0,0 @@
-# file : build/c/cpp-options.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(out_base)/%.cpp-options: c-cpp-options-expand-impl = $(if $1,cat $1 >>$2)
-$(out_base)/%.cpp-options: c-cpp-options-expand = \
-$(call c-cpp-options-expand-impl,$(filter %.cpp-options,$1),$2)
-
-
-#@@ Asymmetry: I hide creation commands but show removals.
-#
-$(out_base)/%.cpp-options: c-cpp-options-force-impl = \
-$(if $(subst $1,,$2)$(subst $2,,$1),FORCE)
-
-$(out_base)/%.cpp-options: c-cpp-options-force = \
-$(call c-cpp-options-force-impl,$(shell if test -f $1; then exec head -n 1 $1; fi),include: $2)
-
-
-# @@ Need to incroporate prefix: into force-check. Then it will probably
-# have to be non-optional.
-#
-
-ifeq ($(src_base),$(out_base))
-$(out_base)/%.cpp-options: $$(call c-cpp-options-force,$$@,$$(value))
-else
-$(out_base)/%.cpp-options: $$(call c-cpp-options-force,$$@,$$(value)) | $$(dir $$@).
-endif
- @echo "include: $(value)" >$@
- $(if $(strip $(prefix)),@echo "prefix: $(prefix)" >>$@)
- @$(call c-cpp-options-expand,$^,$@)
-
-# Clean.
-#
-$(out_base)/%.cpp-options.clean:
- $(call message,rm $(basename $@),rm -f $(basename $@))
diff --git a/build-0.3/c/generic/c-d.make b/build-0.3/c/generic/c-d.make
deleted file mode 100644
index 8933d7d..0000000
--- a/build-0.3/c/generic/c-d.make
+++ /dev/null
@@ -1,18 +0,0 @@
-# file : build/c/generic/c-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/c/generic/configuration.make)
-
-# Make will try to build dependecies (since they are ultimately included
-# files) during configuartion phase without c_generic being discovered
-# yet. This is also why dependecies should be included with -include.
-#
-ifdef c_generic
-
-.PHONY: $(out_base)/%.o.d.$(c_s_suffix).clean
-
-$(out_base)/%.o.d.$(c_s_suffix).clean:
- @:
-
-endif
diff --git a/build-0.3/c/generic/c-o.make b/build-0.3/c/generic/c-o.make
deleted file mode 100644
index d340837..0000000
--- a/build-0.3/c/generic/c-o.make
+++ /dev/null
@@ -1,39 +0,0 @@
-# file : build/c/generic/c-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base))
-$(call include,$(bld_root)/c/generic/configuration.make)
-
-$(out_base)/%.o: c := $(c_generic)
-
-#@@ wrong prefix
-#
-$(out_base)/%.o: expand-cpp-options-impl = \
-$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
-
-$(out_base)/%.o: expand-cpp-options = \
-$(call expand-cpp-options-impl,$(filter %.cpp-options,$1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.o: $(src_base)/%.$(c_s_suffix)
-else
-$(out_base)/%.o: $(src_base)/%.$(c_s_suffix) | $$(dir $$@).
-endif
- $(call message,c $<,$(c) \
-$(cpp_options) $(call expand-cpp-options,$^) $(c_pp_extra_options) \
-$(c_options) $(c_pic_options) $(c_extra_options) -o $@ -c $<)
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%.o: $(out_base)/%.$(c_s_suffix) | $$(dir $$@).
- $(call message,c $<,$(c) \
-$(cpp_options) $(call expand-cpp-options,$^) $(c_pp_extra_options) \
-$(c_options) $(c_pic_options) $(c_extra_options) -o $@ -c $<)
-
-endif
-
-.PHONY: $(out_base)/%.o.$(c_s_suffix).clean
-
-$(out_base)/%.o.$(c_s_suffix).clean:
- $(call message,rm $$1,rm -f $$1,$(basename $(basename $@)))
diff --git a/build-0.3/c/generic/configuration-rules.make b/build-0.3/c/generic/configuration-rules.make
deleted file mode 100644
index 05e7a42..0000000
--- a/build-0.3/c/generic/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/c/generic/configuration-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/c/generic/configuration-dynamic.make: | $(dcf_root)/c/generic/.
- $(call message,,$(bld_root)/c/generic/configure $@)
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/c/generic/configuration-dynamic.make,\
-rm -f $(dcf_root)/c/generic/configuration-dynamic.make)
-
-endif
diff --git a/build-0.3/c/generic/configuration-sl-rules.make b/build-0.3/c/generic/configuration-sl-rules.make
deleted file mode 100644
index 147cb1d..0000000
--- a/build-0.3/c/generic/configuration-sl-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/c/generic/configuration-sl-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/c/generic/configuration-sl-dynamic.make: | $(dcf_root)/c/generic/.
- $(call message,,$(bld_root)/c/generic/configure-sl $@)
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/c/generic/configuration-sl-dynamic.make,\
-rm -f $(dcf_root)/c/generic/configuration-sl-dynamic.make)
-
-endif
diff --git a/build-0.3/c/generic/configuration-sl.make b/build-0.3/c/generic/configuration-sl.make
deleted file mode 100644
index 136186f..0000000
--- a/build-0.3/c/generic/configuration-sl.make
+++ /dev/null
@@ -1,20 +0,0 @@
-# file : build/c/generic/configuration-sl.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/generic/configuration-sl-rules.make,$(dcf_root))
-
-# Dynamic configuration.
-#
-c_generic_pic_option :=
-
-$(call -include,$(dcf_root)/c/generic/configuration-sl-dynamic.make)
-
-ifdef c_generic_pic_option
-
-$(out_root)/%: c_generic_pic_option := $(c_generic_pic_option)
-$(out_root)/%: c_generic_shared_option := $(c_generic_shared_option)
-
-else
-.NOTPARALLEL:
-endif
diff --git a/build-0.3/c/generic/configuration.make b/build-0.3/c/generic/configuration.make
deleted file mode 100644
index 1881c5c..0000000
--- a/build-0.3/c/generic/configuration.make
+++ /dev/null
@@ -1,21 +0,0 @@
-# file : build/c/generic/configuration.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/generic/configuration-rules.make,$(dcf_root))
-
-# Static configuration.
-#
-ifneq ($(bld_root),$(scf_root))
-$(call -include,$(scf_root)/c/generic/configuration-static.make)
-endif
-
-# Dynamic configuration.
-#
-c_generic :=
-
-$(call -include,$(dcf_root)/c/generic/configuration-dynamic.make)
-
-ifndef c_generic
-.NOTPARALLEL:
-endif
diff --git a/build-0.3/c/generic/configure b/build-0.3/c/generic/configure
deleted file mode 100755
index dae8d72..0000000
--- a/build-0.3/c/generic/configure
+++ /dev/null
@@ -1,27 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/c/generic/configure
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please enter the C compiler executable you would like to use."
-$echo
-
-c_generic=`read_path --command`
-
-echo "c_generic := $c_generic" > $1
diff --git a/build-0.3/c/generic/configure-sl b/build-0.3/c/generic/configure-sl
deleted file mode 100755
index 10064cb..0000000
--- a/build-0.3/c/generic/configure-sl
+++ /dev/null
@@ -1,36 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/c/generic/configure-sl
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please enter C compiler option(s) used to build position-"
-$echo "independent code (e.g., -fPIC, -Kpic, etc)."
-$echo
-
-read -e -p "[]: " pic_option
-
-$echo
-$echo "Please enter C compiler option(s) used to build shared"
-$echo "libraries (e.g., -shared, -G, etc)."
-$echo
-
-read -e -p "[]: " shared_option
-
-echo "c_generic_pic_option := $pic_option" > $1
-echo "c_generic_shared_option := $shared_option" >> $1
diff --git a/build-0.3/c/generic/o-e.make b/build-0.3/c/generic/o-e.make
deleted file mode 100644
index a607239..0000000
--- a/build-0.3/c/generic/o-e.make
+++ /dev/null
@@ -1,27 +0,0 @@
-# file : build/c/generic/o-e.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/c/generic/configuration.make)
-
-ifneq ($(c_extra_lib_paths),)
-vpath %.so $(c_extra_lib_paths)
-vpath %.a $(c_extra_lib_paths)
-endif
-
-$(out_base)/%: ld := $(c_generic)
-$(out_base)/%: expand-l = $(shell sed -e 's%^rpath:\(.*\)%%' $1)
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%: $(out_base)/%.o
-else
-$(out_base)/%: $(out_base)/%.o | $$(dir $$@).
-endif
- $(call message,ld $@,$(ld) \
-$(c_extra_options) $(ld_options) $(c_ld_extra_options) -o $@ \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(c_extra_libs))
-
-.PHONY: $(out_base)/%.o.clean
-
-$(out_base)/%.o.clean:
- $(call message,rm $(basename $(basename $@)),rm -f $(basename $@) $(basename $(basename $@)))
diff --git a/build-0.3/c/generic/o-l.make b/build-0.3/c/generic/o-l.make
deleted file mode 100644
index bdae9fc..0000000
--- a/build-0.3/c/generic/o-l.make
+++ /dev/null
@@ -1,63 +0,0 @@
-# file : build/c/generic/o-l.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/c/generic/configuration.make)
-
-ifeq ($(ld_lib_type),shared)
-$(call include,$(bld_root)/c/generic/configuration-sl.make)
-endif
-
-ifneq ($(c_extra_lib_paths),)
-vpath %.so $(c_extra_lib_paths)
-vpath %.a $(c_extra_lib_paths)
-endif
-
-ifdef ld_lib_type
-
-.PHONY: $(out_base)/%.l.o.clean
-
-ifeq ($(ld_lib_type),archive)
-
-$(out_base)/%.l: ar := $(ld_lib_ar)
-$(out_base)/%.l: ar_options ?= -rc
-
-$(out_base)/%.l: ranlib := $(ld_lib_ranlib)
-$(out_base)/%.l: ranlib_options ?=
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
- $(call message,ar $@,$(ar) $(ar_options) $(@D)/lib$(basename $(@F)).a $(filter %.o,$^))
- $(call message,,$(ranlib) $(ranlib_options) $(@D)/lib$(basename $(@F)).a)
- $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-
-$(out_base)/%.l.o.clean:
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@)))
-
-else
-
-$(out_base)/%.l: ld := $(c_generic)
-$(out_base)/%.l: c_pic_options := $(c_generic_pic_option)
-$(out_base)/%.l: expand-l = $(shell sed -e 's%^rpath:\(.*\)%%' $1)
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
- $(call message,ld $@,$(ld) $(c_generic_shared_option) \
-$(c_extra_options) $(ld_options) $(c_ld_extra_options) -o $(@D)/lib$(basename $(@F)).so \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(c_extra_libs))
- $(call message,,echo "$(@D)/lib$(basename $(@F)).so" >$@)
- $(call message,,echo "rpath:$(@D)" >>$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-
-$(out_base)/%.l.o.clean:
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.so,$(@F)),$(basename $(basename $@)))
-
-endif
-endif
diff --git a/build-0.3/c/gnu/c-d.make b/build-0.3/c/gnu/c-d.make
deleted file mode 100644
index bc7411f..0000000
--- a/build-0.3/c/gnu/c-d.make
+++ /dev/null
@@ -1,58 +0,0 @@
-# file : build/c/gnu/c-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base))
-$(call include,$(bld_root)/c/gnu/configuration.make)
-
-# Make will try to build dependecies (since they are ultimately included
-# files) during configuartion phase without c_gnu being discovered yet.
-# This is also why dependecies should be included with -include.
-#
-ifdef c_gnu
-
-$(out_base)/%.o.d: c := $(c_gnu)
-$(out_base)/%.o.d: cpp_options ?=
-
-#@@ This needs to be shared with c-o.
-#
-#@@ wrong prefix
-#
-$(out_base)/%.o.d: expand-cpp-options-impl = \
-$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
-
-$(out_base)/%.o.d: expand-cpp-options = \
-$(call expand-cpp-options-impl,$(filter %.cpp-options,$1))
-
-.PRECIOUS: $(out_base)/%.o.d
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.o.d: $(src_base)/%.$(c_s_suffix)
-else
-$(out_base)/%.o.d: $(src_base)/%.$(c_s_suffix) | $$(dir $$@).
-endif
- $(call message,,if test -f $@; then mv $@ $@.old; fi && \
-$(c) $(cpp_options) $(call expand-cpp-options,$^) $(c_pp_extra_options) \
-$(c_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \
-$(bld_root)/c/gnu/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \
-if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \
-else rm -f $@.old && true; fi fi)
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%.o.d: $(out_base)/%.$(c_s_suffix) | $$(dir $$@).
- $(call message,,if test -f $@; then mv $@ $@.old; fi && \
-$(c) $(cpp_options) $(call expand-cpp-options,$^) $(c_pp_extra_options) \
-$(c_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \
-$(bld_root)/c/gnu/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \
-if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \
-else rm -f $@.old && true; fi fi)
-
-endif
-
-.PHONY: $(out_base)/%.o.d.$(c_s_suffix).clean
-
-$(out_base)/%.o.d.$(c_s_suffix).clean:
- $(call message,rm $$1,rm -f $$1,$(basename $(basename $@)))
-
-endif
diff --git a/build-0.3/c/gnu/c-o.make b/build-0.3/c/gnu/c-o.make
deleted file mode 100644
index 46eb1da..0000000
--- a/build-0.3/c/gnu/c-o.make
+++ /dev/null
@@ -1,41 +0,0 @@
-# file : build/c/gnu/c-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base))
-$(call include,$(bld_root)/c/gnu/configuration.make)
-
-$(out_base)/%.o: c := $(c_gnu)
-$(out_base)/%.o: c_options := $(c_gnu_optimization_options) $(c_gnu_debugging_options)
-
-#@@ wrong prefix
-#
-$(out_base)/%.o: expand-cpp-options-impl = \
-$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
-
-$(out_base)/%.o: expand-cpp-options = \
-$(call expand-cpp-options-impl,$(filter %.cpp-options,$1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.o: $(src_base)/%.$(c_s_suffix)
-else
-$(out_base)/%.o: $(src_base)/%.$(c_s_suffix) | $$(dir $$@).
-endif
- $(call message,c $<,$(c) \
-$(cpp_options) $(call expand-cpp-options,$^) $(c_pp_extra_options) $(c_options) \
-$(c_pic_options) $(subst y,-fexceptions,$(filter y,$(c_exceptions))) $(c_extra_options) -o $@ -c $<)
-
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%.o: $(out_base)/%.$(c_s_suffix) | $$(dir $$@).
- $(call message,c $<,$(c) \
-$(cpp_options) $(call expand-cpp-options,$^) $(c_pp_extra_options) $(c_options) \
-$(c_pic_options) $(subst y,-fexceptions,$(filter y,$(c_exceptions))) $(c_extra_options) -o $@ -c $<)
-
-endif
-
-.PHONY: $(out_base)/%.o.$(c_s_suffix).clean
-
-$(out_base)/%.o.$(c_s_suffix).clean:
- $(call message,rm $$1,rm -f $$1,$(basename $(basename $@)))
diff --git a/build-0.3/c/gnu/configuration-rules.make b/build-0.3/c/gnu/configuration-rules.make
deleted file mode 100644
index cb25dfe..0000000
--- a/build-0.3/c/gnu/configuration-rules.make
+++ /dev/null
@@ -1,15 +0,0 @@
-# file : build/c/gnu/configuration-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/c/gnu/configuration-dynamic.make: | $(dcf_root)/c/gnu/.
- $(call message,,$(bld_root)/c/gnu/configure $@ $(c_optimize) \
-"$(c_extra_options)" "$(c_ld_extra_options)")
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/c/gnu/configuration-dynamic.make,\
-rm -f $(dcf_root)/c/gnu/configuration-dynamic.make)
-
-endif
diff --git a/build-0.3/c/gnu/configuration-static.make b/build-0.3/c/gnu/configuration-static.make
deleted file mode 100644
index e9be2b9..0000000
--- a/build-0.3/c/gnu/configuration-static.make
+++ /dev/null
@@ -1,3 +0,0 @@
-# file : build/c/gnu/configuration-static.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
diff --git a/build-0.3/c/gnu/configuration.make b/build-0.3/c/gnu/configuration.make
deleted file mode 100644
index 32aaf97..0000000
--- a/build-0.3/c/gnu/configuration.make
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : build/c/gnu/configuration.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/gnu/configuration-rules.make,$(dcf_root))
-
-# Static configuration.
-#
-$(call include,$(bld_root)/c/gnu/configuration-static.make)
-
-ifneq ($(bld_root),$(scf_root))
-$(call -include,$(scf_root)/c/gnu/configuration-static.make)
-endif
-
-# Dynamic configuration.
-#
-c_gnu :=
-c_gnu_optimization_options :=
-
-$(call -include,$(dcf_root)/c/gnu/configuration-dynamic.make)
-
-ifdef c_gnu
-
-c_gnu_debugging_options := $(if $(findstring y,$(c_debug)),-g)
-
-$(out_root)/%: c_gnu_debugging_options := $(c_gnu_debugging_options)
-$(out_root)/%: c_gnu_optimization_options := $(c_gnu_optimization_options)
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/build-0.3/c/gnu/configure b/build-0.3/c/gnu/configure
deleted file mode 100755
index 713f091..0000000
--- a/build-0.3/c/gnu/configure
+++ /dev/null
@@ -1,85 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/c/gnu/configure
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-# $2 optimize (y/n)
-# $3 c_extra_options
-# $4 c_ld_extra_options
-#
-# bld_root - build root
-# project_name - project name
-#
-
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please enter the gcc binary you would like to use, for example 'gcc-3.4',"
-$echo "'/usr/local/bin/gcc' or 'distcc gcc'."
-$echo
-
-c_gnu=`read_path --command gcc`
-
-# Pass c_extra_options and c_ld_extra_options since those can affect the
-# search paths (e.g., -m32) and target.
-#
-c_gnu_libraries=`$c_gnu $3 $4 -print-search-dirs | sed -e 's/libraries: =//p' -e d`
-
-c_gnu_target=`$c_gnu $3 $4 -dumpmachine`
-c_gnu_target=`$bld_root/system/config.sub "$c_gnu_target"`
-
-if [ $? != 0 ]; then
- $echo "unable to canonicalize target system '$c_gnu_target'"
- exit 1
-fi
-
-c_gnu_target_cpu=`echo $c_gnu_target | cut -f 1 -d -`
-c_gnu_target_mf=`echo $c_gnu_target | cut -f 2 -d -`
-c_gnu_target_kernel=`echo $c_gnu_target | cut -f 3 -d -`
-c_gnu_target_os=`echo $c_gnu_target | cut -f 4 -d -`
-
-if [ -z "$c_gnu_target_os" ]; then
-
- # Old format: cpu-mf-os
- #
- c_gnu_target_os=$c_gnu_target_kernel
- c_gnu_target_kernel=
-fi
-
-optimization=
-
-if [ "$2" == "y" ]; then
-
- $echo
- $echo "Please select the optimization level you would like to use:"
- $echo
- $echo "(1) -O1 [Tries to reduce code size and execution time, without"
- $echo " performing any optimizations that take a great deal of"
- $echo " compilation time.]"
- $echo "(2) -O2 [Performs nearly all supported optimizations that do not"
- $echo " involve a space-speed tradeoff.]"
- $echo "(3) -O3 [Optimize even more.]"
- $echo "(4) -Os [Optimize for size.]"
- $echo
-
- optimization=`read_option "-O1 -O2 -O3 -Os" "-O2"`
-
-fi
-
-echo "c_gnu := $c_gnu" > $1
-echo "c_gnu_libraries := $c_gnu_libraries" >> $1
-echo "c_gnu_optimization_options := $optimization" >> $1
-echo "c_gnu_target := $c_gnu_target" >> $1
-echo "c_gnu_target_cpu := $c_gnu_target_cpu" >> $1
-echo "c_gnu_target_mf := $c_gnu_target_mf" >> $1
-echo "c_gnu_target_kernel := $c_gnu_target_kernel" >> $1
-echo "c_gnu_target_os := $c_gnu_target_os" >> $1
diff --git a/build-0.3/c/gnu/dep b/build-0.3/c/gnu/dep
deleted file mode 100755
index ecafcb1..0000000
--- a/build-0.3/c/gnu/dep
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/c/gnu/dep
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Post-process generated dependency information.
-#
-# $1 current project's $(out_base)
-# $2 - $N optional .cpp-options files
-
-out_base=$1
-shift
-
-files=$*
-
-#echo $out_base
-#echo $files
-
-script=
-
-function gen_script ()
-{
- while [ "$1" ]; do
- prefix=$1
- shift
-
- path=$1
- shift
-
- # Besides unresolved paths also replace default installation
- # targets (/usr/include and /usr/local/include).
- #
- script="$script"\
-"s \\ $prefix \\ $path$prefix g;"\
-"s \\ /usr/include/$prefix \\ $path$prefix g;"\
-"s \\ /usr/local/include/$prefix \\ $path$prefix g;"\
-"s ^$prefix $path$prefix ;"\
-"s ^/usr/include/$prefix $path$prefix ;"\
-"s ^/usr/local/include/$prefix $path$prefix ;"
- done
-}
-
-if [ "$files" ]; then
- prefixes=`sed -e 's%^prefix: \(.*\)$%\1%' -e t -e d $files`
- gen_script $prefixes
-fi
-
-# The last part of the script translates all file names that don't start
-# with / or . (that is, local generated files) to files in $out_base. Note
-# that it is assumed that such files are never installed and therefore there
-# is no way to get around the situation where this file is picket up from
-# some other place (e.g., /usr/include).
-#
-epilogue="s% \([^/. \\\\]\)% $out_base/\1%g;s%^\([^/. ].*:\)%$out_base/\1%"
-
-exec sed -e "$script$epilogue"
diff --git a/build-0.3/c/gnu/o-e.make b/build-0.3/c/gnu/o-e.make
deleted file mode 100644
index a54a9f3..0000000
--- a/build-0.3/c/gnu/o-e.make
+++ /dev/null
@@ -1,39 +0,0 @@
-# file : build/c/gnu/o-e.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/c/gnu/configuration.make)
-
-#@@ should it be lib%.so?
-#
-ifneq ($(c_extra_lib_paths),)
-vpath %.so $(c_extra_lib_paths)
-vpath %.a $(c_extra_lib_paths)
-endif
-
-ifneq ($(c_gnu_libraries),)
-vpath %.so $(c_gnu_libraries)
-vpath %.a $(c_gnu_libraries)
-endif
-
-$(out_base)/%: ld := $(c_gnu)
-$(out_base)/%: ld_options := $(c_gnu_optimization_options) $(c_gnu_debugging_options) $(c_ld_extra_options)
-
-$(out_base)/%: expand-l = $(if $(subst n,,$(c_rpath)),\
-$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\
-$(shell sed -e 's%^rpath:\(.*\)%%' $1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%: $(out_base)/%.o
-else
-$(out_base)/%: $(out_base)/%.o | $$(dir $$@).
-endif
- $(call message,ld $@,$(ld) \
-$(c_extra_options) $(ld_options) $(c_ld_extra_options) -o $@ \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(c_extra_libs))
-
-
-.PHONY: $(out_base)/%.o.clean
-
-$(out_base)/%.o.clean:
- $(call message,rm $(basename $(basename $@)),rm -f $(basename $@) $(basename $(basename $@)))
diff --git a/build-0.3/c/gnu/o-l.make b/build-0.3/c/gnu/o-l.make
deleted file mode 100644
index 5c93f0a..0000000
--- a/build-0.3/c/gnu/o-l.make
+++ /dev/null
@@ -1,92 +0,0 @@
-# file : build/c/gnu/o-l.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/c/gnu/configuration.make)
-
-ifneq ($(c_extra_lib_paths),)
-vpath %.so $(c_extra_lib_paths)
-vpath %.a $(c_extra_lib_paths)
-endif
-
-ifneq ($(c_gnu_libraries),)
-vpath %.so $(c_gnu_libraries)
-vpath %.a $(c_gnu_libraries)
-endif
-
-ifdef ld_lib_type
-
-.PHONY: $(out_base)/%.l.o.clean
-
-ifeq ($(ld_lib_type),archive)
-
-$(out_base)/%.l: ar := $(ld_lib_ar)
-$(out_base)/%.l: ar_options ?= -rc
-
-$(out_base)/%.l: ranlib := $(ld_lib_ranlib)
-$(out_base)/%.l: ranlib_options ?=
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
- $(call message,ar $@,$(ar) $(ar_options) $(@D)/lib$(basename $(@F)).a $(filter %.o,$^))
- $(call message,,$(ranlib) $(ranlib_options) $(@D)/lib$(basename $(@F)).a)
- $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-
-$(out_base)/%.l.o.clean:
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@)))
-
-else
-
-mingw := $(if $(filter $(c_gnu_target_os),mingw32 mingw64),y,n)
-
-$(out_base)/%.l: ld := $(c_gnu)
-$(out_base)/%.l: ld_options := $(c_gnu_optimization_options) $(c_gnu_debugging_options)
-ifeq ($(mingw),n)
-$(out_base)/%.l: c_pic_options := -fPIC
-endif
-$(out_base)/%.l: comma_ := ,
-
-$(out_base)/%.l: expand-l = $(if $(subst n,,$(c_rpath)),\
-$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\
-$(shell sed -e 's%^rpath:\(.*\)%%' $1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
-ifeq ($(mingw),n)
-# Standard version.
-#
- $(call message,ld $@,$(ld) -shared \
-$(c_extra_options) $(ld_options) $(c_ld_extra_options) \
--o $(@D)/lib$(basename $(@F)).so -Wl$(comma_)-soname=lib$(basename $(@F)).so \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(c_extra_libs))
- $(call message,,echo "$(@D)/lib$(basename $(@F)).so" >$@)
- $(call message,,echo "rpath:$(@D)" >>$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-else
-# MinGW version.
-#
- $(call message,ld $@,$(ld) -shared \
-$(c_extra_options) $(ld_options) $(c_ld_extra_options) \
--o $(@D)/$(basename $(@F)).dll -Wl$(comma_)--out-implib$(comma_)$(@D)/lib$(basename $(@F)).a \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(c_extra_libs))
- $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@)
- $(call message,,echo "rpath:$(@D)" >>$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.l,$^))" | xargs -n 1 echo >>$@)
-endif
-
-$(out_base)/%.l.o.clean:
-ifeq ($(mingw),n)
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.so,$(@F)),$(basename $(basename $@)))
-else
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,%.dll,$(@F)) $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@)))
-endif
-
-endif
-endif
diff --git a/build-0.3/c/intel/c-d.make b/build-0.3/c/intel/c-d.make
deleted file mode 100644
index b4d6c80..0000000
--- a/build-0.3/c/intel/c-d.make
+++ /dev/null
@@ -1,58 +0,0 @@
-# file : build/c/intel/c-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base))
-$(call include,$(bld_root)/c/intel/configuration.make)
-
-# Make will try to build dependecies (since they are ultimately included
-# files) during configuartion phase without c_intel being discovered yet.
-# This is also why dependecies should be included with -include.
-#
-ifdef c_intel
-
-$(out_base)/%.o.d: c := $(c_intel)
-$(out_base)/%.o.d: cpp_options ?=
-
-#@@ This needs to be shared with c-o.
-#
-#@@ wrong prefix
-#
-$(out_base)/%.o.d: expand-cpp-options-impl = \
-$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
-
-$(out_base)/%.o.d: expand-cpp-options = \
-$(call expand-cpp-options-impl,$(filter %.cpp-options,$1))
-
-.PRECIOUS: $(out_base)/%.o.d
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.o.d: $(src_base)/%.$(c_s_suffix)
-else
-$(out_base)/%.o.d: $(src_base)/%.$(c_s_suffix) | $$(dir $$@).
-endif
- $(call message,,if test -f $@; then mv $@ $@.old; fi && \
-$(c) $(cpp_options) $(call expand-cpp-options,$^) $(c_pp_extra_options) \
-$(c_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \
-$(bld_root)/c/intel/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \
-if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \
-else rm -f $@.old && true; fi fi)
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%.o.d: $(out_base)/%.$(c_s_suffix) | $$(dir $$@).
- $(call message,,if test -f $@; then mv $@ $@.old; fi && \
-$(c) $(cpp_options) $(call expand-cpp-options,$^) $(c_pp_extra_options) \
-$(c_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \
-$(bld_root)/c/intel/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \
-if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \
-else rm -f $@.old && true; fi fi)
-
-endif
-
-.PHONY: $(out_base)/%.o.d.$(c_s_suffix).clean
-
-$(out_base)/%.o.d.$(c_s_suffix).clean:
- $(call message,rm $$1,rm -f $$1,$(basename $(basename $@)))
-
-endif
diff --git a/build-0.3/c/intel/c-o.make b/build-0.3/c/intel/c-o.make
deleted file mode 100644
index e925b50..0000000
--- a/build-0.3/c/intel/c-o.make
+++ /dev/null
@@ -1,40 +0,0 @@
-# file : build/c/intel/c-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base))
-$(call include,$(bld_root)/c/intel/configuration.make)
-
-$(out_base)/%.o: c := $(c_intel)
-$(out_base)/%.o: c_options := $(c_intel_optimization_options) $(c_intel_debugging_options)
-
-#@@ wrong prefix
-#
-$(out_base)/%.o: expand-cpp-options-impl = \
-$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
-
-$(out_base)/%.o: expand-cpp-options = \
-$(call expand-cpp-options-impl,$(filter %.cpp-options,$1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.o: $(src_base)/%.$(c_s_suffix)
-else
-$(out_base)/%.o: $(src_base)/%.$(c_s_suffix) | $$(dir $$@).
-endif
- $(call message,c $<,$(c) \
-$(cpp_options) $(call expand-cpp-options,$^) $(c_pp_extra_options) $(c_options) \
-$(c_pic_options) $(subst y,-fexceptions,$(filter y,$(c_exceptions))) $(c_extra_options) -o $@ -c $<)
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%.o: $(out_base)/%.$(c_s_suffix) | $$(dir $$@).
- $(call message,c $<,$(c) \
-$(cpp_options) $(call expand-cpp-options,$^) $(c_pp_extra_options) $(c_options) \
-$(c_pic_options) $(subst y,-fexceptions,$(filter y,$(c_exceptions))) $(c_extra_options) -o $@ -c $<)
-
-endif
-
-.PHONY: $(out_base)/%.o.$(c_s_suffix).clean
-
-$(out_base)/%.o.$(c_s_suffix).clean:
- $(call message,rm $$1,rm -f $$1,$(basename $(basename $@)))
diff --git a/build-0.3/c/intel/configuration-rules.make b/build-0.3/c/intel/configuration-rules.make
deleted file mode 100644
index 0132981..0000000
--- a/build-0.3/c/intel/configuration-rules.make
+++ /dev/null
@@ -1,15 +0,0 @@
-# file : build/c/intel/configuration-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/c/intel/configuration-dynamic.make: | $(dcf_root)/c/intel/.
- $(call message,,$(bld_root)/c/intel/configure $@ $(c_optimize) \
-"$(c_extra_options)" "$(c_ld_extra_options)")
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/c/intel/configuration-dynamic.make,\
-rm -f $(dcf_root)/c/intel/configuration-dynamic.make)
-
-endif
diff --git a/build-0.3/c/intel/configuration-static.make b/build-0.3/c/intel/configuration-static.make
deleted file mode 100644
index c3e2d05..0000000
--- a/build-0.3/c/intel/configuration-static.make
+++ /dev/null
@@ -1,3 +0,0 @@
-# file : build/c/intel/configuration-static.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
diff --git a/build-0.3/c/intel/configuration.make b/build-0.3/c/intel/configuration.make
deleted file mode 100644
index 4e0ec1e..0000000
--- a/build-0.3/c/intel/configuration.make
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : build/c/intel/configuration.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/intel/configuration-rules.make,$(dcf_root))
-
-# Static configuration.
-#
-$(call include,$(bld_root)/c/intel/configuration-static.make)
-
-ifneq ($(bld_root),$(scf_root))
-$(call -include,$(scf_root)/c/intel/configuration-static.make)
-endif
-
-# Dynamic configuration.
-#
-c_intel :=
-c_intel_optimization_options :=
-
-$(call -include,$(dcf_root)/c/intel/configuration-dynamic.make)
-
-ifdef c_intel
-
-c_intel_debugging_options := $(if $(findstring y,$(c_debug)),-g)
-
-$(out_root)/%: c_intel_debugging_options := $(c_intel_debugging_options)
-$(out_root)/%: c_intel_optimization_options := $(c_intel_optimization_options)
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/build-0.3/c/intel/configure b/build-0.3/c/intel/configure
deleted file mode 100755
index e829cea..0000000
--- a/build-0.3/c/intel/configure
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/c/intel/configure
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-# $2 optimize (y/n)
-# $3 c_extra_options
-# $4 c_ld_extra_options
-#
-# bld_root - build root
-# project_name - project name
-#
-
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please enter the icc binary you would like to use, for example "
-$echo "'/opt/intel_cc_80/bin/icc'."
-$echo
-
-c_intel=`read_path --command icc`
-
-# Pass c_extra_options and c_ld_extra_options since those can affect the
-# search paths (e.g., -m32) and target.
-#
-c_intel_libraries=`$c_intel $3 $4 -print-search-dirs | sed -e 's/libraries: =//p' -e d`
-
-# Intel optimizes by default.
-#
-optimization=-O0
-
-if [ "$2" == "y" ]; then
-
- $echo
- $echo "Please select the optimization level you would like to use:"
- $echo
- $echo "(1) -O1 [Enable optimizations.]"
- $echo "(2) -O2 [Same as -O1.]"
- $echo "(3) -O3 [As -O2 plus more aggressive optimizations that may not"
- $echo " improve performance for all programs.]"
- $echo
-
- optimization=`read_option "-O1 -O2 -O3" "-O2"`
-fi
-
-echo "c_intel := $c_intel" > $1
-echo "c_intel_libraries := $c_intel_libraries" >> $1
-echo "c_intel_optimization_options := $optimization" >> $1
diff --git a/build-0.3/c/intel/dep b/build-0.3/c/intel/dep
deleted file mode 100755
index ead761f..0000000
--- a/build-0.3/c/intel/dep
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/c/intel/dep
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Post-process generated dependency information.
-#
-# $1 current project's $(out_base)
-# $2 - $N optional .cpp-options files
-
-out_base=$1
-shift
-
-files=$*
-
-#echo $out_base
-#echo $files
-
-script=
-
-function gen_script ()
-{
- while [ "$1" ]; do
- prefix=$1
- shift
-
- path=$1
- shift
-
- # Besides unresolved paths also replace default installation
- # targets (/usr/include and /usr/local/include).
- #
- script="$script"\
-"s \\ $prefix \\ $path$prefix g;"\
-"s \\ /usr/include/$prefix \\ $path$prefix g;"\
-"s \\ /usr/local/include/$prefix \\ $path$prefix g;"\
-"s ^$prefix $path$prefix ;"\
-"s ^/usr/include/$prefix $path$prefix ;"\
-"s ^/usr/local/include/$prefix $path$prefix ;"
- done
-}
-
-if [ "$files" ]; then
- prefixes=`sed -e 's%^prefix: \(.*\)$%\1%' -e t -e d $files`
- gen_script $prefixes
-fi
-
-# The last part of the script translates all file names that don't start
-# with / or . (that is, local generated files) to files in $out_base. Note
-# that it is assumed that such files are never installed and therefore there
-# is no way to get around the situation where this file is picket up from
-# some other place (e.g., /usr/include).
-#
-epilogue="s% \([^/. \\\\]\)% $out_base/\1%g;s%^\([^/. ].*:\)%$out_base/\1%"
-
-exec sed -e "$script$epilogue"
diff --git a/build-0.3/c/intel/o-e.make b/build-0.3/c/intel/o-e.make
deleted file mode 100644
index 0661ccc..0000000
--- a/build-0.3/c/intel/o-e.make
+++ /dev/null
@@ -1,38 +0,0 @@
-# file : build/c/intel/o-e.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/c/intel/configuration.make)
-
-#@@ should it be lib%.so?
-#
-ifneq ($(c_extra_lib_paths),)
-vpath %.so $(c_extra_lib_paths)
-vpath %.a $(c_extra_lib_paths)
-endif
-
-ifneq ($(c_intel_libraries),)
-vpath %.so $(c_intel_libraries)
-vpath %.a $(c_intel_libraries)
-endif
-
-$(out_base)/%: ld := $(c_intel)
-$(out_base)/%: ld_options := $(c_intel_optimization_options) $(c_intel_debugging_options) $(c_ld_extra_options)
-
-$(out_base)/%: expand-l = $(if $(subst n,,$(c_rpath)),\
-$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\
-$(shell sed -e 's%^rpath:\(.*\)%%' $1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%: $(out_base)/%.o
-else
-$(out_base)/%: $(out_base)/%.o | $$(dir $$@).
-endif
- $(call message,ld $@,$(ld) \
-$(c_extra_options) $(ld_options) $(c_ld_extra_options) -o $@ \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(c_extra_libs))
-
-.PHONY: $(out_base)/%.o.clean
-
-$(out_base)/%.o.clean:
- $(call message,rm $(basename $(basename $@)),rm -f $(basename $@) $(basename $(basename $@)))
diff --git a/build-0.3/c/intel/o-l.make b/build-0.3/c/intel/o-l.make
deleted file mode 100644
index 0ad3085..0000000
--- a/build-0.3/c/intel/o-l.make
+++ /dev/null
@@ -1,70 +0,0 @@
-# file : build/c/intel/o-l.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/c/intel/configuration.make)
-
-ifneq ($(c_extra_lib_paths),)
-vpath %.so $(c_extra_lib_paths)
-vpath %.a $(c_extra_lib_paths)
-endif
-
-ifneq ($(c_intel_libraries),)
-vpath %.so $(c_intel_libraries)
-vpath %.a $(c_intel_libraries)
-endif
-
-ifdef ld_lib_type
-
-.PHONY: $(out_base)/%.l.o.clean
-
-ifeq ($(ld_lib_type),archive)
-
-$(out_base)/%.l: ar := $(ld_lib_ar)
-$(out_base)/%.l: ar_options ?= -rc
-
-$(out_base)/%.l: ranlib := $(ld_lib_ranlib)
-$(out_base)/%.l: ranlib_options ?=
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
- $(call message,ar $@,$(ar) $(ar_options) $(@D)/lib$(basename $(@F)).a $(filter %.o,$^))
- $(call message,,$(ranlib) $(ranlib_options) $(@D)/lib$(basename $(@F)).a)
- $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-
-$(out_base)/%.l.o.clean:
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@)))
-
-else
-
-$(out_base)/%.l: ld := $(c_intel)
-$(out_base)/%.l: ld_options := $(c_intel_optimization_options) $(c_intel_debugging_options)
-$(out_base)/%.l: c_pic_options := -fPIC
-$(out_base)/%.l: comma_ := ,
-
-$(out_base)/%.l: expand-l = $(if $(subst n,,$(c_rpath)),\
-$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\
-$(shell sed -e 's%^rpath:\(.*\)%%' $1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
- $(call message,ld $@,$(ld) -shared \
-$(c_extra_options) $(ld_options) $(c_ld_extra_options) \
--o $(@D)/lib$(basename $(@F)).so -Wl$(comma_)-soname=lib$(basename $(@F)).so \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(c_extra_libs))
- $(call message,,echo "$(@D)/lib$(basename $(@F)).so" >$@)
- $(call message,,echo "rpath:$(@D)" >>$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-
-$(out_base)/%.l.o.clean:
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.so,$(@F)),$(basename $(basename $@)))
-
-endif
-endif
diff --git a/build-0.3/c/o-e.make b/build-0.3/c/o-e.make
deleted file mode 100644
index 95f0757..0000000
--- a/build-0.3/c/o-e.make
+++ /dev/null
@@ -1,9 +0,0 @@
-# file : build/c/o-e.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/c/configuration.make)
-
-ifdef c_id
-$(call include-once,$(bld_root)/c/$(c_id)/o-e.make,$(out_base))
-endif
diff --git a/build-0.3/c/o-l.make b/build-0.3/c/o-l.make
deleted file mode 100644
index 7f64067..0000000
--- a/build-0.3/c/o-l.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# file : build/c/o-l.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/ld/configuration-lib.make)
-$(call include,$(bld_root)/c/configuration.make)
-
-ifdef c_id
-$(call include-once,$(bld_root)/c/$(c_id)/o-l.make,$(out_base))
-endif
diff --git a/build-0.3/clean.make b/build-0.3/clean.make
deleted file mode 100644
index c410853..0000000
--- a/build-0.3/clean.make
+++ /dev/null
@@ -1,16 +0,0 @@
-# file : build/clean.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-#@@ Maybe create file aliases.make for standard aliases
-# plus check for interactivity? What if some targets
-# are not defined?
-#
-
-ifdef %interactive%
-
-.PHONY: clean
-
-clean: $(out_base)/.clean
-
-endif
diff --git a/build-0.3/configuration-static.make b/build-0.3/configuration-static.make
deleted file mode 100644
index 17d10f9..0000000
--- a/build-0.3/configuration-static.make
+++ /dev/null
@@ -1,8 +0,0 @@
-# file : build/configuration-static.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Name of the target that cleans absolutely everything. Used as
-# a prerequisite of `disfigure' target.
-#
-build_absolute_clean_target := clean
diff --git a/build-0.3/cxx/configuration-rules.make b/build-0.3/cxx/configuration-rules.make
deleted file mode 100644
index 70fce9d..0000000
--- a/build-0.3/cxx/configuration-rules.make
+++ /dev/null
@@ -1,18 +0,0 @@
-# file : build/cxx/configuration-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/cxx/configuration-dynamic.make: | $(dcf_root)/cxx/.
- $(call message,,$(bld_root)/cxx/configure $@ \
-"$(origin cxx_pp_options)" \
-"$(origin cxx_options)" \
-"$(origin cxx_ld_options)" \
-"$(origin cxx_libs)")
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/cxx/configuration-dynamic.make,\
-rm -f $(dcf_root)/cxx/configuration-dynamic.make)
-
-endif
diff --git a/build-0.3/cxx/configuration-static.make b/build-0.3/cxx/configuration-static.make
deleted file mode 100644
index d6c0731..0000000
--- a/build-0.3/cxx/configuration-static.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/cxx/configuration-static.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-cxx_h_suffix := hxx
-cxx_t_suffix := txx
-cxx_i_suffix := ixx
-cxx_s_suffix := cxx
-
-# Get user-supplied static configuration if any.
-#
-ifneq ($(bld_root),$(scf_root))
-$(call -include,$(scf_root)/cxx/configuration-static.make)
-endif \ No newline at end of file
diff --git a/build-0.3/cxx/configuration.make b/build-0.3/cxx/configuration.make
deleted file mode 100644
index 4529f62..0000000
--- a/build-0.3/cxx/configuration.make
+++ /dev/null
@@ -1,44 +0,0 @@
-# file : build/cxx/configuration.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/cxx/configuration-rules.make,$(dcf_root))
-
-# Static configuration.
-#
-$(call include,$(bld_root)/cxx/configuration-static.make)
-
-
-# Dynamic configuration.
-#
-cxx_id :=
-cxx_optimize :=
-cxx_debug :=
-cxx_rpath :=
-
-cxx_pp_extra_options :=
-cxx_extra_options :=
-cxx_ld_extra_options :=
-cxx_extra_libs :=
-cxx_extra_lib_paths :=
-
-$(call -include,$(dcf_root)/cxx/configuration-dynamic.make)
-
-ifdef cxx_id
-
-$(out_root)/%: cxx_id := $(cxx_id)
-$(out_root)/%: cxx_optimize := $(cxx_optimize)
-$(out_root)/%: cxx_debug := $(cxx_debug)
-$(out_root)/%: cxx_rpath := $(cxx_rpath)
-
-$(out_root)/%: cxx_pp_extra_options := $(cxx_pp_extra_options) $(cxx_pp_cmd_options)
-$(out_root)/%: cxx_extra_options := $(cxx_extra_options) $(cxx_cmd_options)
-$(out_root)/%: cxx_ld_extra_options := $(cxx_ld_extra_options) $(cxx_ld_cmd_options)
-$(out_root)/%: cxx_extra_libs := $(cxx_extra_libs) $(cxx_cmd_libs)
-$(out_root)/%: cxx_extra_lib_paths := $(cxx_extra_lib_paths) $(cxx_cmd_lib_paths)
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/build-0.3/cxx/configure b/build-0.3/cxx/configure
deleted file mode 100755
index f4607ad..0000000
--- a/build-0.3/cxx/configure
+++ /dev/null
@@ -1,166 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/cxx/configure
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-# $2 origin of the cxx_pp_options make variable
-# $3 origin of the cxx_options make variable
-# $4 origin of the cxx_ld_options make variable
-# $5 origin of the cxx_libs make variable
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please select the C++ compiler you would like to use:"
-$echo
-$echo "(1) GNU C++ (g++)"
-$echo "(2) Intel C++ (icc)"
-$echo "(3) Other C++ compiler"
-$echo
-
-id=`read_option "gnu intel generic" "gnu"`
-
-if [ "$id" != "generic" ]; then
-
- $echo
- $echo "Would you like the C++ compiler to optimize generated code?"
- $echo
-
- optimize=`read_y_n y`
-
-
- $echo
- $echo "Would you like the C++ compiler to generate debug information?"
- $echo
-
- debug=`read_y_n y`
-
- $echo
- $echo "Embed dynamic library paths into executables (rpath)?"
- $echo
-
- rpath=`read_y_n y`
-
-fi
-
-# pp_options
-#
-if [ "$2" != "undefined" ]; then
-
- pp_options=$cxx_pp_options
-
- if [ "$pp_options" ]; then
- $echo
- $echo "Extra C++ preprocessor options: $pp_options"
- $echo
- fi
-else
-
- $echo
- $echo "Please enter any extra C++ preprocessor options."
- $echo
-
- read -e -p "[]: " pp_options
-fi
-
-
-# options
-#
-if [ "$3" != "undefined" ]; then
-
- options=$cxx_options
-
- if [ "$options" ]; then
- $echo
- $echo "Extra C++ compiler options: $options"
- $echo
- fi
-else
-
- $echo
- $echo "Please enter any extra C++ compiler options."
- $echo
-
- read -p "[]: " options
-fi
-
-
-# ld_options
-#
-if [ "$4" != "undefined" ]; then
-
- ld_options=$cxx_ld_options
-
- if [ "$ld_options" ]; then
- $echo
- $echo "Extra C++ linker options: $ld_options"
- $echo
- fi
-else
-
- $echo
- $echo "Please enter any extra C++ linker options."
- $echo
-
- read -e -p "[]: " ld_options
-fi
-
-
-# libs
-#
-if [ "$5" != "undefined" ]; then
-
- libs=$cxx_libs
-
- if [ "$libs" ]; then
- $echo
- $echo "Extra C++ libraries: $libs"
- $echo
- fi
-else
-
- $echo
- $echo "Please enter any extra C++ libraries."
- $echo
-
- read -e -p "[]: " libs
-fi
-
-
-# Extract -L paths from the ld options.
-#
-paths=
-
-if [ "$ld_options" ]; then
- paths=`echo "$ld_options" | sed -e 's/-L *\([^ ]*\)/\\
--L\1\\
-/g' | sed -e 's/^-L\([^ ]*\)$/\1/' -e t -e d`
- paths=`echo $paths | sed -e 's/ /:/g'`
-fi
-
-echo "cxx_id := $id" >$1
-
-if [ "$id" != "generic" ]; then
- echo "cxx_optimize := $optimize" >>$1
- echo "cxx_debug := $debug" >>$1
- echo "cxx_rpath := $rpath" >>$1
-fi
-
-echo "cxx_pp_extra_options := $pp_options" >>$1
-echo "cxx_extra_options := $options" >>$1
-echo "cxx_ld_extra_options := $ld_options" >>$1
-echo "cxx_extra_libs := $libs" >>$1
-echo "cxx_extra_lib_paths := $paths" >>$1
diff --git a/build-0.3/cxx/cxx-d.make b/build-0.3/cxx/cxx-d.make
deleted file mode 100644
index 673b2d1..0000000
--- a/build-0.3/cxx/cxx-d.make
+++ /dev/null
@@ -1,9 +0,0 @@
-# file : build/cxx/cxx-d.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/cxx/configuration.make)
-
-ifdef cxx_id
-$(call include-once,$(bld_root)/cxx/$(cxx_id)/cxx-d.make,$(out_base))
-endif
diff --git a/build-0.3/cxx/cxx-o.make b/build-0.3/cxx/cxx-o.make
deleted file mode 100644
index a08b371..0000000
--- a/build-0.3/cxx/cxx-o.make
+++ /dev/null
@@ -1,9 +0,0 @@
-# file : build/cxx/cxx-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/cxx/configuration.make)
-
-ifdef cxx_id
-$(call include-once,$(bld_root)/cxx/$(cxx_id)/cxx-o.make,$(out_base))
-endif
diff --git a/build-0.3/cxx/generic/configuration-rules.make b/build-0.3/cxx/generic/configuration-rules.make
deleted file mode 100644
index 2025cfc..0000000
--- a/build-0.3/cxx/generic/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/cxx/generic/configuration-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/cxx/generic/configuration-dynamic.make: | $(dcf_root)/cxx/generic/.
- $(call message,,$(bld_root)/cxx/generic/configure $@)
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/cxx/generic/configuration-dynamic.make,\
-rm -f $(dcf_root)/cxx/generic/configuration-dynamic.make)
-
-endif
diff --git a/build-0.3/cxx/generic/configuration-sl-rules.make b/build-0.3/cxx/generic/configuration-sl-rules.make
deleted file mode 100644
index 3630d26..0000000
--- a/build-0.3/cxx/generic/configuration-sl-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/cxx/generic/configuration-sl-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/cxx/generic/configuration-sl-dynamic.make: | $(dcf_root)/cxx/generic/.
- $(call message,,$(bld_root)/cxx/generic/configure-sl $@)
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/cxx/generic/configuration-sl-dynamic.make,\
-rm -f $(dcf_root)/cxx/generic/configuration-sl-dynamic.make)
-
-endif
diff --git a/build-0.3/cxx/generic/configuration-sl.make b/build-0.3/cxx/generic/configuration-sl.make
deleted file mode 100644
index f1b75be..0000000
--- a/build-0.3/cxx/generic/configuration-sl.make
+++ /dev/null
@@ -1,20 +0,0 @@
-# file : build/cxx/generic/configuration-sl.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/cxx/generic/configuration-sl-rules.make,$(dcf_root))
-
-# Dynamic configuration.
-#
-cxx_generic_pic_option :=
-
-$(call -include,$(dcf_root)/cxx/generic/configuration-sl-dynamic.make)
-
-ifdef cxx_generic_pic_option
-
-$(out_root)/%: cxx_generic_pic_option := $(cxx_generic_pic_option)
-$(out_root)/%: cxx_generic_shared_option := $(cxx_generic_shared_option)
-
-else
-.NOTPARALLEL:
-endif
diff --git a/build-0.3/cxx/generic/configuration.make b/build-0.3/cxx/generic/configuration.make
deleted file mode 100644
index 1816913..0000000
--- a/build-0.3/cxx/generic/configuration.make
+++ /dev/null
@@ -1,21 +0,0 @@
-# file : build/cxx/generic/configuration.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/cxx/generic/configuration-rules.make,$(dcf_root))
-
-# Static configuration.
-#
-ifneq ($(bld_root),$(scf_root))
-$(call -include,$(scf_root)/cxx/generic/configuration-static.make)
-endif
-
-# Dynamic configuration.
-#
-cxx_generic :=
-
-$(call -include,$(dcf_root)/cxx/generic/configuration-dynamic.make)
-
-ifndef cxx_generic
-.NOTPARALLEL:
-endif
diff --git a/build-0.3/cxx/generic/configure b/build-0.3/cxx/generic/configure
deleted file mode 100755
index b590398..0000000
--- a/build-0.3/cxx/generic/configure
+++ /dev/null
@@ -1,27 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/cxx/generic/configure
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please enter the C++ compiler executable you would like to use."
-$echo
-
-cxx_generic=`read_path --command`
-
-echo "cxx_generic := $cxx_generic" > $1
diff --git a/build-0.3/cxx/generic/configure-sl b/build-0.3/cxx/generic/configure-sl
deleted file mode 100755
index 31df8ce..0000000
--- a/build-0.3/cxx/generic/configure-sl
+++ /dev/null
@@ -1,36 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/cxx/generic/configure-sl
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please enter C++ compiler option(s) used to build position-"
-$echo "independent code (e.g., -fPIC, -Kpic, etc)."
-$echo
-
-read -e -p "[]: " pic_option
-
-$echo
-$echo "Please enter C++ compiler option(s) used to build shared"
-$echo "libraries (e.g., -shared, -G, etc)."
-$echo
-
-read -e -p "[]: " shared_option
-
-echo "cxx_generic_pic_option := $pic_option" > $1
-echo "cxx_generic_shared_option := $shared_option" >> $1
diff --git a/build-0.3/cxx/generic/cxx-d.make b/build-0.3/cxx/generic/cxx-d.make
deleted file mode 100644
index 4a88451..0000000
--- a/build-0.3/cxx/generic/cxx-d.make
+++ /dev/null
@@ -1,18 +0,0 @@
-# file : build/cxx/generic/cxx-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/cxx/generic/configuration.make)
-
-# Make will try to build dependecies (since they are ultimately included
-# files) during configuartion phase without cxx_generic being discovered
-# yet. This is also why dependecies should be included with -include.
-#
-ifdef cxx_generic
-
-.PHONY: $(out_base)/%.o.d.$(cxx_s_suffix).clean
-
-$(out_base)/%.o.d.$(cxx_s_suffix).clean:
- @:
-
-endif
diff --git a/build-0.3/cxx/generic/cxx-o.make b/build-0.3/cxx/generic/cxx-o.make
deleted file mode 100644
index 3123dca..0000000
--- a/build-0.3/cxx/generic/cxx-o.make
+++ /dev/null
@@ -1,39 +0,0 @@
-# file : build/cxx/generic/cxx-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base))
-$(call include,$(bld_root)/cxx/generic/configuration.make)
-
-$(out_base)/%.o: cxx := $(cxx_generic)
-
-#@@ wrong prefix
-#
-$(out_base)/%.o: expand-cpp-options-impl = \
-$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
-
-$(out_base)/%.o: expand-cpp-options = \
-$(call expand-cpp-options-impl,$(filter %.cpp-options,$1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix)
-else
-$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@).
-endif
- $(call message,c++ $<,$(cxx) \
-$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \
-$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<)
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%.o: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@).
- $(call message,c++ $<,$(cxx) \
-$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \
-$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<)
-
-endif
-
-.PHONY: $(out_base)/%.o.$(cxx_s_suffix).clean
-
-$(out_base)/%.o.$(cxx_s_suffix).clean:
- $(call message,rm $$1,rm -f $$1,$(basename $(basename $@)))
diff --git a/build-0.3/cxx/generic/o-e.make b/build-0.3/cxx/generic/o-e.make
deleted file mode 100644
index 2f9f02e..0000000
--- a/build-0.3/cxx/generic/o-e.make
+++ /dev/null
@@ -1,27 +0,0 @@
-# file : build/cxx/generic/o-e.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/cxx/generic/configuration.make)
-
-ifneq ($(cxx_extra_lib_paths),)
-vpath %.so $(cxx_extra_lib_paths)
-vpath %.a $(cxx_extra_lib_paths)
-endif
-
-$(out_base)/%: ld := $(cxx_generic)
-$(out_base)/%: expand-l = $(shell sed -e 's%^rpath:\(.*\)%%' $1)
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%: $(out_base)/%.o
-else
-$(out_base)/%: $(out_base)/%.o | $$(dir $$@).
-endif
- $(call message,ld $@,$(ld) \
-$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) -o $@ \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs))
-
-.PHONY: $(out_base)/%.o.clean
-
-$(out_base)/%.o.clean:
- $(call message,rm $(basename $(basename $@)),rm -f $(basename $@) $(basename $(basename $@)))
diff --git a/build-0.3/cxx/generic/o-l.make b/build-0.3/cxx/generic/o-l.make
deleted file mode 100644
index 1e7dcff..0000000
--- a/build-0.3/cxx/generic/o-l.make
+++ /dev/null
@@ -1,66 +0,0 @@
-# file : build/cxx/generic/o-l.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/cxx/generic/configuration.make)
-
-ifeq ($(ld_lib_type),shared)
-$(call include,$(bld_root)/cxx/generic/configuration-sl.make)
-endif
-
-ifneq ($(cxx_extra_lib_paths),)
-vpath %.so $(cxx_extra_lib_paths)
-vpath %.a $(cxx_extra_lib_paths)
-endif
-
-ifdef ld_lib_type
-
-.PHONY: $(out_base)/%.l.o.clean
-
-ifeq ($(ld_lib_type),archive)
-
-$(out_base)/%.l: ar := $(ld_lib_ar)
-$(out_base)/%.l: ar_options ?= -rc
-
-$(out_base)/%.l: ranlib := $(ld_lib_ranlib)
-$(out_base)/%.l: ranlib_options ?=
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
- $(call message,ar $@,$(ar) $(ar_options) $(@D)/lib$(basename $(@F)).a $(filter %.o,$^))
- $(call message,,$(ranlib) $(ranlib_options) $(@D)/lib$(basename $(@F)).a)
- $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-
-$(out_base)/%.l.o.clean:
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@)))
-
-else
-
-$(out_base)/%.l: ld := $(cxx_generic)
-$(out_base)/%.l: c_pic_options := $(cxx_generic_pic_option)
-$(out_base)/%.l: cxx_pic_options := $(cxx_generic_pic_option)
-$(out_base)/%.l: comma_ := ,
-
-$(out_base)/%.l: expand-l = $(shell sed -e 's%^rpath:\(.*\)%%' $1)
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
- $(call message,ld $@,$(ld) $(cxx_generic_shared_option) \
-$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) -o $(@D)/lib$(basename $(@F)).so \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs))
- $(call message,,echo "$(@D)/lib$(basename $(@F)).so" >$@)
- $(call message,,echo "rpath:$(@D)" >>$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-
-$(out_base)/%.l.o.clean:
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.so,$(@F)),$(basename $(basename $@)))
-
-endif
-endif
diff --git a/build-0.3/cxx/gnu/configuration-rules.make b/build-0.3/cxx/gnu/configuration-rules.make
deleted file mode 100644
index 6d79582..0000000
--- a/build-0.3/cxx/gnu/configuration-rules.make
+++ /dev/null
@@ -1,15 +0,0 @@
-# file : build/cxx/gnu/configuration-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/cxx/gnu/configuration-dynamic.make: | $(dcf_root)/cxx/gnu/.
- $(call message,,$(bld_root)/cxx/gnu/configure $@ $(cxx_optimize) \
-"$(cxx_extra_options)" "$(cxx_ld_extra_options)")
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/cxx/gnu/configuration-dynamic.make,\
-rm -f $(dcf_root)/cxx/gnu/configuration-dynamic.make)
-
-endif
diff --git a/build-0.3/cxx/gnu/configuration-static.make b/build-0.3/cxx/gnu/configuration-static.make
deleted file mode 100644
index d0aee7d..0000000
--- a/build-0.3/cxx/gnu/configuration-static.make
+++ /dev/null
@@ -1,3 +0,0 @@
-# file : build/cxx/gnu/configuration-static.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
diff --git a/build-0.3/cxx/gnu/configuration.make b/build-0.3/cxx/gnu/configuration.make
deleted file mode 100644
index 2e55f8b..0000000
--- a/build-0.3/cxx/gnu/configuration.make
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : build/cxx/gnu/configuration.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/cxx/gnu/configuration-rules.make,$(dcf_root))
-
-# Static configuration.
-#
-$(call include,$(bld_root)/cxx/gnu/configuration-static.make)
-
-ifneq ($(bld_root),$(scf_root))
-$(call -include,$(scf_root)/cxx/gnu/configuration-static.make)
-endif
-
-# Dynamic configuration.
-#
-cxx_gnu :=
-cxx_gnu_optimization_options :=
-
-$(call -include,$(dcf_root)/cxx/gnu/configuration-dynamic.make)
-
-ifdef cxx_gnu
-
-cxx_gnu_debugging_options := $(if $(findstring y,$(cxx_debug)),-g)
-
-$(out_root)/%: cxx_gnu_debugging_options := $(cxx_gnu_debugging_options)
-$(out_root)/%: cxx_gnu_optimization_options := $(cxx_gnu_optimization_options)
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/build-0.3/cxx/gnu/configure b/build-0.3/cxx/gnu/configure
deleted file mode 100755
index c551713..0000000
--- a/build-0.3/cxx/gnu/configure
+++ /dev/null
@@ -1,98 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/cxx/gnu/configure
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-# $2 optimize (y/n)
-# $3 cxx_extra_options
-# $4 cxx_ld_extra_options
-#
-# bld_root - build root
-# project_name - project name
-#
-
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please enter the g++ binary you would like to use, for example 'g++-3.4',"
-$echo "'/usr/local/bin/g++' or 'distcc g++'."
-$echo
-
-cxx_gnu=`read_path --command g++`
-
-# Determine the C++ standard.
-#
-cxx_gnu_standard=`echo "$3" | sed -e 's/.*-std=\([^ ]*\).*/\1/' -e t -e d`
-
-if [ -z "$cxx_gnu_standard" ]; then
- cxx_gnu_standard="gnu++98"
-elif [ "$cxx_gnu_standard" = "c++0x" ]; then
- cxx_gnu_standard="c++11"
-elif [ "$cxx_gnu_standard" = "gnu++0x" ]; then
- cxx_gnu_standard="gnu++11"
-fi
-
-# Pass cxx_extra_options and cxx_ld_extra_options since those
-# can affect the search paths (e.g., -m32) and target.
-#
-cxx_gnu_libraries=`$cxx_gnu $3 $4 -print-search-dirs | sed -e 's/libraries: =//p' -e d`
-
-cxx_gnu_target=`$cxx_gnu $3 $4 -dumpmachine`
-cxx_gnu_target=`$bld_root/system/config.sub "$cxx_gnu_target"`
-
-if [ $? != 0 ]; then
- $echo "unable to canonicalize target system '$cxx_gnu_target'"
- exit 1
-fi
-
-cxx_gnu_target_cpu=`echo $cxx_gnu_target | cut -f 1 -d -`
-cxx_gnu_target_mf=`echo $cxx_gnu_target | cut -f 2 -d -`
-cxx_gnu_target_kernel=`echo $cxx_gnu_target | cut -f 3 -d -`
-cxx_gnu_target_os=`echo $cxx_gnu_target | cut -f 4 -d -`
-
-if [ -z "$cxx_gnu_target_os" ]; then
-
- # Old format: cpu-mf-os
- #
- cxx_gnu_target_os=$cxx_gnu_target_kernel
- cxx_gnu_target_kernel=
-fi
-
-optimization=
-
-if [ "$2" == "y" ]; then
-
- $echo
- $echo "Please select the optimization level you would like to use:"
- $echo
- $echo "(1) -O1 [Tries to reduce code size and execution time, without"
- $echo " performing any optimizations that take a great deal of"
- $echo " compilation time.]"
- $echo "(2) -O2 [Performs nearly all supported optimizations that do not"
- $echo " involve a space-speed tradeoff.]"
- $echo "(3) -O3 [Optimize even more.]"
- $echo "(4) -Os [Optimize for size.]"
- $echo
-
- optimization=`read_option "-O1 -O2 -O3 -Os" "-O2"`
-
-fi
-
-echo "cxx_gnu := $cxx_gnu" > $1
-echo "cxx_gnu_standard := $cxx_gnu_standard" >> $1
-echo "cxx_gnu_libraries := $cxx_gnu_libraries" >> $1
-echo "cxx_gnu_optimization_options := $optimization" >> $1
-echo "cxx_gnu_target := $cxx_gnu_target" >> $1
-echo "cxx_gnu_target_cpu := $cxx_gnu_target_cpu" >> $1
-echo "cxx_gnu_target_mf := $cxx_gnu_target_mf" >> $1
-echo "cxx_gnu_target_kernel := $cxx_gnu_target_kernel" >> $1
-echo "cxx_gnu_target_os := $cxx_gnu_target_os" >> $1
diff --git a/build-0.3/cxx/gnu/cxx-d.make b/build-0.3/cxx/gnu/cxx-d.make
deleted file mode 100644
index 6611e67..0000000
--- a/build-0.3/cxx/gnu/cxx-d.make
+++ /dev/null
@@ -1,58 +0,0 @@
-# file : build/cxx/gnu/cxx-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base))
-$(call include,$(bld_root)/cxx/gnu/configuration.make)
-
-# Make will try to build dependecies (since they are ultimately included
-# files) during configuartion phase without cxx_gnu being discovered yet.
-# This is also why dependecies should be included with -include.
-#
-ifdef cxx_gnu
-
-$(out_base)/%.o.d: cxx := $(cxx_gnu)
-$(out_base)/%.o.d: cpp_options ?=
-
-#@@ This needs to be shared with cxx-o.
-#
-#@@ wrong prefix
-#
-$(out_base)/%.o.d: expand-cpp-options-impl = \
-$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
-
-$(out_base)/%.o.d: expand-cpp-options = \
-$(call expand-cpp-options-impl,$(filter %.cpp-options,$1))
-
-.PRECIOUS: $(out_base)/%.o.d
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.o.d: $(src_base)/%.$(cxx_s_suffix)
-else
-$(out_base)/%.o.d: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@).
-endif
- $(call message,,if test -f $@; then mv $@ $@.old; fi && \
-$(cxx) $(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \
-$(cxx_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \
-$(bld_root)/c/gnu/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \
-if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \
-else rm -f $@.old && true; fi fi)
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%.o.d: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@).
- $(call message,,if test -f $@; then mv $@ $@.old; fi && \
-$(cxx) $(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \
-$(cxx_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \
-$(bld_root)/c/gnu/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \
-if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \
-else rm -f $@.old && true; fi fi)
-
-endif
-
-.PHONY: $(out_base)/%.o.d.$(cxx_s_suffix).clean
-
-$(out_base)/%.o.d.$(cxx_s_suffix).clean:
- $(call message,rm $$1,rm -f $$1,$(basename $(basename $@)))
-
-endif
diff --git a/build-0.3/cxx/gnu/cxx-o.make b/build-0.3/cxx/gnu/cxx-o.make
deleted file mode 100644
index 0b751ad..0000000
--- a/build-0.3/cxx/gnu/cxx-o.make
+++ /dev/null
@@ -1,40 +0,0 @@
-# file : build/cxx/gnu/cxx-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base))
-$(call include,$(bld_root)/cxx/gnu/configuration.make)
-
-$(out_base)/%.o: cxx := $(cxx_gnu)
-$(out_base)/%.o: cxx_options := $(cxx_gnu_optimization_options) $(cxx_gnu_debugging_options)
-
-#@@ wrong prefix
-#
-$(out_base)/%.o: expand-cpp-options-impl = \
-$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
-
-$(out_base)/%.o: expand-cpp-options = \
-$(call expand-cpp-options-impl,$(filter %.cpp-options,$1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix)
-else
-$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@).
-endif
- $(call message,c++ $<,$(cxx) \
-$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \
-$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<)
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%.o: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@).
- $(call message,c++ $<,$(cxx) \
-$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \
-$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<)
-
-endif
-
-.PHONY: $(out_base)/%.o.$(cxx_s_suffix).clean
-
-$(out_base)/%.o.$(cxx_s_suffix).clean:
- $(call message,rm $$1,rm -f $$1,$(basename $(basename $@)))
diff --git a/build-0.3/cxx/gnu/o-e.make b/build-0.3/cxx/gnu/o-e.make
deleted file mode 100644
index c19e177..0000000
--- a/build-0.3/cxx/gnu/o-e.make
+++ /dev/null
@@ -1,38 +0,0 @@
-# file : build/cxx/gnu/o-e.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/cxx/gnu/configuration.make)
-
-#@@ should it be lib%.so?
-#
-ifneq ($(cxx_extra_lib_paths),)
-vpath %.so $(cxx_extra_lib_paths)
-vpath %.a $(cxx_extra_lib_paths)
-endif
-
-ifneq ($(cxx_gnu_libraries),)
-vpath %.so $(cxx_gnu_libraries)
-vpath %.a $(cxx_gnu_libraries)
-endif
-
-$(out_base)/%: ld := $(cxx_gnu)
-$(out_base)/%: ld_options := $(cxx_gnu_optimization_options) $(cxx_gnu_debugging_options) $(cxx_ld_extra_options)
-
-$(out_base)/%: expand-l = $(if $(subst n,,$(cxx_rpath)),\
-$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\
-$(shell sed -e 's%^rpath:\(.*\)%%' $1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%: $(out_base)/%.o
-else
-$(out_base)/%: $(out_base)/%.o | $$(dir $$@).
-endif
- $(call message,ld $@,$(ld) \
-$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) -o $@ \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs))
-
-.PHONY: $(out_base)/%.o.clean
-
-$(out_base)/%.o.clean:
- $(call message,rm $(basename $(basename $@)),rm -f $(basename $@) $(basename $(basename $@)))
diff --git a/build-0.3/cxx/gnu/o-l.make b/build-0.3/cxx/gnu/o-l.make
deleted file mode 100644
index ea3e1d1..0000000
--- a/build-0.3/cxx/gnu/o-l.make
+++ /dev/null
@@ -1,93 +0,0 @@
-# file : build/cxx/gnu/o-l.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/cxx/gnu/configuration.make)
-
-ifneq ($(cxx_extra_lib_paths),)
-vpath %.so $(cxx_extra_lib_paths)
-vpath %.a $(cxx_extra_lib_paths)
-endif
-
-ifneq ($(cxx_gnu_libraries),)
-vpath %.so $(cxx_gnu_libraries)
-vpath %.a $(cxx_gnu_libraries)
-endif
-
-ifdef ld_lib_type
-
-.PHONY: $(out_base)/%.l.o.clean
-
-ifeq ($(ld_lib_type),archive)
-
-$(out_base)/%.l: ar := $(ld_lib_ar)
-$(out_base)/%.l: ar_options ?= -rc
-
-$(out_base)/%.l: ranlib := $(ld_lib_ranlib)
-$(out_base)/%.l: ranlib_options ?=
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
- $(call message,ar $@,$(ar) $(ar_options) $(@D)/lib$(basename $(@F)).a $(filter %.o,$^))
- $(call message,,$(ranlib) $(ranlib_options) $(@D)/lib$(basename $(@F)).a)
- $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-
-$(out_base)/%.l.o.clean:
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@)))
-
-else
-
-mingw := $(if $(filter $(cxx_gnu_target_os),mingw32 mingw64),y,n)
-
-$(out_base)/%.l: ld := $(cxx_gnu)
-$(out_base)/%.l: ld_options := $(cxx_gnu_optimization_options) $(cxx_gnu_debugging_options)
-ifeq ($(mingw),n)
-$(out_base)/%.l: c_pic_options := -fPIC
-$(out_base)/%.l: cxx_pic_options := -fPIC
-endif
-$(out_base)/%.l: comma_ := ,
-
-$(out_base)/%.l: expand-l = $(if $(subst n,,$(cxx_rpath)),\
-$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\
-$(shell sed -e 's%^rpath:\(.*\)%%' $1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
-ifeq ($(mingw),n)
-# Standard version.
-#
- $(call message,ld $@,$(ld) -shared \
-$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) \
--o $(@D)/lib$(basename $(@F)).so -Wl$(comma_)-soname=lib$(basename $(@F)).so \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs))
- $(call message,,echo "$(@D)/lib$(basename $(@F)).so" >$@)
- $(call message,,echo "rpath:$(@D)" >>$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-else
-# MinGW version.
-#
- $(call message,ld $@,$(ld) -shared \
-$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) \
--o $(@D)/$(basename $(@F)).dll -Wl$(comma_)--out-implib$(comma_)$(@D)/lib$(basename $(@F)).a \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs))
- $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@)
- $(call message,,echo "rpath:$(@D)" >>$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.l,$^))" | xargs -n 1 echo >>$@)
-endif
-
-$(out_base)/%.l.o.clean:
-ifeq ($(mingw),n)
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.so,$(@F)),$(basename $(basename $@)))
-else
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,%.dll,$(@F)) $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@)))
-endif
-
-endif
-endif
diff --git a/build-0.3/cxx/intel/configuration-rules.make b/build-0.3/cxx/intel/configuration-rules.make
deleted file mode 100644
index 873e08e..0000000
--- a/build-0.3/cxx/intel/configuration-rules.make
+++ /dev/null
@@ -1,15 +0,0 @@
-# file : build/cxx/intel/configuration-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/cxx/intel/configuration-dynamic.make: | $(dcf_root)/cxx/intel/.
- $(call message,,$(bld_root)/cxx/intel/configure $@ $(cxx_optimize) \
-"$(cxx_extra_options)" "$(cxx_ld_extra_options)")
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/cxx/intel/configuration-dynamic.make,\
-rm -f $(dcf_root)/cxx/intel/configuration-dynamic.make)
-
-endif
diff --git a/build-0.3/cxx/intel/configuration-static.make b/build-0.3/cxx/intel/configuration-static.make
deleted file mode 100644
index 1db64f0..0000000
--- a/build-0.3/cxx/intel/configuration-static.make
+++ /dev/null
@@ -1,3 +0,0 @@
-# file : build/cxx/intel/configuration-static.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
diff --git a/build-0.3/cxx/intel/configuration.make b/build-0.3/cxx/intel/configuration.make
deleted file mode 100644
index c6e6867..0000000
--- a/build-0.3/cxx/intel/configuration.make
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : build/cxx/intel/configuration.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/cxx/intel/configuration-rules.make,$(dcf_root))
-
-# Static configuration.
-#
-$(call include,$(bld_root)/cxx/intel/configuration-static.make)
-
-ifneq ($(bld_root),$(scf_root))
-$(call -include,$(scf_root)/cxx/intel/configuration-static.make)
-endif
-
-# Dynamic configuration.
-#
-cxx_intel :=
-cxx_intel_optimization_options :=
-
-$(call -include,$(dcf_root)/cxx/intel/configuration-dynamic.make)
-
-ifdef cxx_intel
-
-cxx_intel_debugging_options := $(if $(findstring y,$(cxx_debug)),-g)
-
-$(out_root)/%: cxx_intel_debugging_options := $(cxx_intel_debugging_options)
-$(out_root)/%: cxx_intel_optimization_options := $(cxx_intel_optimization_options)
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/build-0.3/cxx/intel/configure b/build-0.3/cxx/intel/configure
deleted file mode 100755
index 7f79dd8..0000000
--- a/build-0.3/cxx/intel/configure
+++ /dev/null
@@ -1,70 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/cxx/intel/configure
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-# $2 optimize (y/n)
-# $3 cxx_extra_options
-# $4 cxx_ld_extra_options
-#
-# bld_root - build root
-# project_name - project name
-#
-
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please enter the icc binary you would like to use, for example "
-$echo "'/opt/intel_cc_80/bin/icpc'."
-$echo
-
-cxx_intel=`read_path --command icpc`
-
-# Determine the C++ standard. Intel C++ on GNU/Linux appears to use the
-# same option and values as GCC.
-#
-cxx_intel_standard=`echo "$3" | sed -e 's/.*-std=\([^ ]*\).*/\1/' -e t -e d`
-
-if [ -z "$cxx_intel_standard" ]; then
- cxx_intel_standard="gnu++98"
-elif [ "$cxx_intel_standard" = "c++0x" ]; then
- cxx_intel_standard="c++11"
-elif [ "$cxx_intel_standard" = "gnu++0x" ]; then
- cxx_intel_standard="gnu++11"
-fi
-
-# Pass cxx_extra_options and cxx_ld_extra_options since those
-# can affect the search paths (e.g., -m32).
-#
-cxx_intel_libraries=`$cxx_intel $3 $4 -print-search-dirs | sed -e 's/libraries: =//p' -e d`
-
-# Intel optimizes by default.
-#
-optimization=-O0
-
-if [ "$2" == "y" ]; then
-
- $echo
- $echo "Please select the optimization level you would like to use:"
- $echo
- $echo "(1) -O1 [Enable optimizations.]"
- $echo "(2) -O2 [Same as -O1.]"
- $echo "(3) -O3 [As -O2 plus more aggressive optimizations that may not"
- $echo " improve performance for all programs.]"
- $echo
-
- optimization=`read_option "-O1 -O2 -O3" "-O2"`
-fi
-
-echo "cxx_intel := $cxx_intel" > $1
-echo "cxx_intel_libraries := $cxx_intel_libraries" >> $1
-echo "cxx_intel_optimization_options := $optimization" >> $1
diff --git a/build-0.3/cxx/intel/cxx-d.make b/build-0.3/cxx/intel/cxx-d.make
deleted file mode 100644
index 7c4bba2..0000000
--- a/build-0.3/cxx/intel/cxx-d.make
+++ /dev/null
@@ -1,58 +0,0 @@
-# file : build/cxx/intel/cxx-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base))
-$(call include,$(bld_root)/cxx/intel/configuration.make)
-
-# Make will try to build dependecies (since they are ultimately included
-# files) during configuartion phase without cxx_intel being discovered yet.
-# This is also why dependecies should be included with -include.
-#
-ifdef cxx_intel
-
-$(out_base)/%.o.d: cxx := $(cxx_intel)
-$(out_base)/%.o.d: cpp_options ?=
-
-#@@ This needs to be shared with cxx-o.
-#
-#@@ wrong prefix
-#
-$(out_base)/%.o.d: expand-cpp-options-impl = \
-$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
-
-$(out_base)/%.o.d: expand-cpp-options = \
-$(call expand-cpp-options-impl,$(filter %.cpp-options,$1))
-
-.PRECIOUS: $(out_base)/%.o.d
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.o.d: $(src_base)/%.$(cxx_s_suffix)
-else
-$(out_base)/%.o.d: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@).
-endif
- $(call message,,if test -f $@; then mv $@ $@.old; fi && \
-$(cxx) $(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \
-$(cxx_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \
-$(bld_root)/c/intel/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \
-if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \
-else rm -f $@.old && true; fi fi)
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%.o.d: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@).
- $(call message,,if test -f $@; then mv $@ $@.old; fi && \
-$(cxx) $(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \
-$(cxx_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \
-$(bld_root)/c/intel/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \
-if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \
-else rm -f $@.old && true; fi fi)
-
-endif
-
-.PHONY: $(out_base)/%.o.d.$(cxx_s_suffix).clean
-
-$(out_base)/%.o.d.$(cxx_s_suffix).clean:
- $(call message,rm $$1,rm -f $$1,$(basename $(basename $@)))
-
-endif
diff --git a/build-0.3/cxx/intel/cxx-o.make b/build-0.3/cxx/intel/cxx-o.make
deleted file mode 100644
index db34a85..0000000
--- a/build-0.3/cxx/intel/cxx-o.make
+++ /dev/null
@@ -1,40 +0,0 @@
-# file : build/cxx/intel/cxx-o.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base))
-$(call include,$(bld_root)/cxx/intel/configuration.make)
-
-$(out_base)/%.o: cxx := $(cxx_intel)
-$(out_base)/%.o: cxx_options := $(cxx_intel_optimization_options) $(cxx_intel_debugging_options)
-
-#@@ wrong prefix
-#
-$(out_base)/%.o: expand-cpp-options-impl = \
-$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
-
-$(out_base)/%.o: expand-cpp-options = \
-$(call expand-cpp-options-impl,$(filter %.cpp-options,$1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix)
-else
-$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@).
-endif
- $(call message,c++ $<,$(cxx) \
-$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \
-$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<)
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%.o: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@).
- $(call message,c++ $<,$(cxx) \
-$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \
-$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<)
-
-endif
-
-.PHONY: $(out_base)/%.o.$(cxx_s_suffix).clean
-
-$(out_base)/%.o.$(cxx_s_suffix).clean:
- $(call message,rm $$1,rm -f $$1,$(basename $(basename $@)))
diff --git a/build-0.3/cxx/intel/o-e.make b/build-0.3/cxx/intel/o-e.make
deleted file mode 100644
index 5c11854..0000000
--- a/build-0.3/cxx/intel/o-e.make
+++ /dev/null
@@ -1,38 +0,0 @@
-# file : build/cxx/intel/o-e.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/cxx/intel/configuration.make)
-
-#@@ should it be lib%.so?
-#
-ifneq ($(cxx_extra_lib_paths),)
-vpath %.so $(cxx_extra_lib_paths)
-vpath %.a $(cxx_extra_lib_paths)
-endif
-
-ifneq ($(cxx_intel_libraries),)
-vpath %.so $(cxx_intel_libraries)
-vpath %.a $(cxx_intel_libraries)
-endif
-
-$(out_base)/%: ld := $(cxx_intel)
-$(out_base)/%: ld_options := $(cxx_intel_optimization_options) $(cxx_intel_debugging_options) $(cxx_ld_extra_options)
-
-$(out_base)/%: expand-l = $(if $(subst n,,$(cxx_rpath)),\
-$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\
-$(shell sed -e 's%^rpath:\(.*\)%%' $1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%: $(out_base)/%.o
-else
-$(out_base)/%: $(out_base)/%.o | $$(dir $$@).
-endif
- $(call message,ld $@,$(ld) \
-$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) -o $@ \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs))
-
-.PHONY: $(out_base)/%.o.clean
-
-$(out_base)/%.o.clean:
- $(call message,rm $(basename $(basename $@)),rm -f $(basename $@) $(basename $(basename $@)))
diff --git a/build-0.3/cxx/intel/o-l.make b/build-0.3/cxx/intel/o-l.make
deleted file mode 100644
index 0123687..0000000
--- a/build-0.3/cxx/intel/o-l.make
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : build/cxx/intel/o-l.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/cxx/intel/configuration.make)
-
-ifneq ($(cxx_extra_lib_paths),)
-vpath %.so $(cxx_extra_lib_paths)
-vpath %.a $(cxx_extra_lib_paths)
-endif
-
-ifneq ($(cxx_intel_libraries),)
-vpath %.so $(cxx_intel_libraries)
-vpath %.a $(cxx_intel_libraries)
-endif
-
-ifdef ld_lib_type
-
-.PHONY: $(out_base)/%.l.o.clean
-
-ifeq ($(ld_lib_type),archive)
-
-$(out_base)/%.l: ar := $(ld_lib_ar)
-$(out_base)/%.l: ar_options ?= -rc
-
-$(out_base)/%.l: ranlib := $(ld_lib_ranlib)
-$(out_base)/%.l: ranlib_options ?=
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
- $(call message,ar $@,$(ar) $(ar_options) $(@D)/lib$(basename $(@F)).a $(filter %.o,$^))
- $(call message,,$(ranlib) $(ranlib_options) $(@D)/lib$(basename $(@F)).a)
- $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-
-$(out_base)/%.l.o.clean:
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@)))
-
-else
-
-$(out_base)/%.l: ld := $(cxx_intel)
-$(out_base)/%.l: ld_options := $(cxx_intel_optimization_options) $(cxx_intel_debugging_options)
-$(out_base)/%.l: c_pic_options := -fPIC
-$(out_base)/%.l: cxx_pic_options := -fPIC
-$(out_base)/%.l: comma_ := ,
-
-$(out_base)/%.l: expand-l = $(if $(subst n,,$(cxx_rpath)),\
-$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\
-$(shell sed -e 's%^rpath:\(.*\)%%' $1))
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%.l:
-else
-$(out_base)/%.l: | $$(dir $$@).
-endif
- $(call message,ld $@,$(ld) -shared \
-$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) \
--o $(@D)/lib$(basename $(@F)).so -Wl$(comma_)-soname=lib$(basename $(@F)).so \
-$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs))
- $(call message,,echo "$(@D)/lib$(basename $(@F)).so" >$@)
- $(call message,,echo "rpath:$(@D)" >>$@)
- $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@)
-
-$(out_base)/%.l.o.clean:
- $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.so,$(@F)),$(basename $(basename $@)))
-
-endif
-endif
diff --git a/build-0.3/cxx/o-e.make b/build-0.3/cxx/o-e.make
deleted file mode 100644
index 47a7048..0000000
--- a/build-0.3/cxx/o-e.make
+++ /dev/null
@@ -1,9 +0,0 @@
-# file : build/cxx/o-e.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/cxx/configuration.make)
-
-ifdef cxx_id
-$(call include-once,$(bld_root)/cxx/$(cxx_id)/o-e.make,$(out_base))
-endif
diff --git a/build-0.3/cxx/o-l.make b/build-0.3/cxx/o-l.make
deleted file mode 100644
index 999833b..0000000
--- a/build-0.3/cxx/o-l.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# file : build/cxx/o-l.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/ld/configuration-lib.make)
-$(call include,$(bld_root)/cxx/configuration.make)
-
-ifdef cxx_id
-$(call include-once,$(bld_root)/cxx/$(cxx_id)/o-l.make,$(out_base))
-endif
diff --git a/build-0.3/cxx/standard.make b/build-0.3/cxx/standard.make
deleted file mode 100644
index 64343d2..0000000
--- a/build-0.3/cxx/standard.make
+++ /dev/null
@@ -1,35 +0,0 @@
-# file : build/cxx/standard.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Set the cxx_standard variable to either c++98 or c++11.
-#
-$(call include,$(bld_root)/cxx/configuration.make) # cxx_id
-
-cxx_standard :=
-
-ifdef cxx_id
- $(call include,$(bld_root)/cxx/$(cxx_id)/configuration.make) # cxx_*_standard
- ifeq ($(cxx_id),gnu)
- ifdef cxx_gnu
- ifneq ($(filter $(cxx_gnu_standard),c++11 gnu++11),)
- cxx_standard := c++11
- else
- cxx_standard := c++98
- endif
- endif
- else ifeq ($(cxx_id),intel)
- ifdef cxx_intel
- ifneq ($(filter $(cxx_intel_standard),c++11 gnu++11),)
- cxx_standard := c++11
- else
- cxx_standard := c++98
- endif
- endif
- else ifeq ($(cxx_id),generic)
- cxx_standard := c++98
- else
- $(error unknown C++ compiler $(cxx_id))
- endif
- $(out_root)/%: cxx_standard := $(cxx_standard)
-endif
diff --git a/build-0.3/dialog.bash b/build-0.3/dialog.bash
deleted file mode 100644
index b6f1ed4..0000000
--- a/build-0.3/dialog.bash
+++ /dev/null
@@ -1,248 +0,0 @@
-# file : build/dialog.bash
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# bld_root - build root
-# MAKE - GNU make executable
-#
-
-#@@ can't I do exec 1>&2 or something?
-#
-function echo_error ()
-{
- echo "$*" 1>&2
-}
-
-echo=echo_error
-
-function abspath_old ()
-{
- local r=`eval echo $1` # for tilde-expansion
-
- if [ "`echo $r | sed -e 's%^/.*$%%'`" ]; then
-
- r=`pwd`/$r
- fi
-
- # remove trailing `/'
- #
- r=`echo $r | sed -e 's%^\(.\+\)/$%\1%'`
-
- echo $r
-}
-
-# Get rid of jobserver info. See GNU make bug #12229.
-#
-MAKEFLAGS=`echo $MAKEFLAGS | sed -e 's/--jobserver-fds=[^ ]* *//g'`
-MAKEFLAGS=`echo $MAKEFLAGS | sed -e 's/-j *//g'`
-
-
-function abspath ()
-{
- local r=`eval echo $1` # for tilde-expansion
-
- $MAKE --no-print-directory -f $bld_root/abspath.make $r
-}
-
-# $1 Default answer ('y' or 'n'). [optional]
-#
-function read_y_n ()
-{
- local r
-
- while [ -z "$r" ]; do
-
- read -p "[$1]: " r
-
- if [ -z "$r" ]; then
- r=$1
- fi
-
- case "$r" in
- y) ;;
- n) ;;
- *) r= ;;
- esac
- done
-
- echo $r
-}
-
-# $1 Default answer. [optional]
-#
-function read_value ()
-{
- local r
-
- read -e -p "[$1]: " r
-
- if [ -z "$r" ]; then
- r=$1
- fi
-
- echo $r
-}
-
-# $1 Space-separated list of options.
-# $2 Default answer from the list of options. [optional]
-#
-function read_option ()
-{
- local d o r i
-
- if [ "$2" ]; then
-
- d=1
-
- for o in $1; do
-
- if [ "$o" = "$2" ]; then break; fi
-
- d=$(($d + 1))
- done
- fi
-
- while [ -z "$r" ]; do
-
- read -p "[$d]: " r
-
- if [ -z "$r" ]; then
-
- r=$d
- fi
-
- i=1
-
- for o in $1; do
-
- if [ "$i" = "$r" ]; then
-
- echo $o
- return 0
- fi
-
- i=$(($i + 1))
- done
-
- # User must have entered some junk so let's ask her again.
- #
- r=
- done
-}
-
-
-# $1 Default answer. [optional]
-#
-# --command - path to be read is a command (implies --exist)
-#
-# --directory - path to be read is a directory
-#
-# --exist - path to be read should exist
-#
-#
-function read_path ()
-{
- local command=0
- local directory=0
- local exist=0
-
- # Parse options
- #
- while [ "$1" ]; do
- case $1 in
-
- --command)
-
- command=1
- exist=1
- shift
- ;;
-
- --directory)
-
- directory=1
- shift
- ;;
-
- --exist)
-
- exist=1
- shift
- ;;
-
- *)
-
- break
- ;;
-
- esac
- done
-
- local r tmp
-
- while [ -z "$r" ]; do
-
- read -e -p "[$1]: " r
-
- if [ -z "$r" ]; then
-
- r=$1
- fi
-
- if [ -z "$r" ]; then
-
- continue
- fi
-
-
- if [ $command == 1 ]; then
-
- # Do tilde expansion.
- #
- r=`eval echo $r`
-
- # Extract first word.
- #
- local cmd=`echo $r | cut -d " " -f 1`
-
- type -p $cmd 1>/dev/null 2>&1
-
- if [ $? != 0 ]; then
-
- $echo "$r: command not found"
- r=
-
- fi
-
- continue
- fi
-
- # abspath & checks
- #
- r=`abspath $r`
-
- if [ $exist == 1 ]; then
-
- if [ $directory == 1 ]; then
-
- if [ ! -d "$r" ]; then
-
- $echo "$r: no such directory"
- r=
- continue
- fi
-
- else # something else
-
- if [ ! -e "$r" ]; then
-
- $echo "$r: no such file or directory"
- r=
- continue
- fi
- fi
- fi
- done
-
- echo $r
-}
diff --git a/build-0.3/dir.make b/build-0.3/dir.make
deleted file mode 100644
index ca3eb4c..0000000
--- a/build-0.3/dir.make
+++ /dev/null
@@ -1,8 +0,0 @@
-# file : build/dir.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-.PRECIOUS: %/.
-
-%/. :
- $(call message,,mkdir -p $*)
diff --git a/build-0.3/dist.make b/build-0.3/dist.make
deleted file mode 100644
index b6b745a..0000000
--- a/build-0.3/dist.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/dist.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/dist/functions.make,$(out_base))
diff --git a/build-0.3/dist/functions.make b/build-0.3/dist/functions.make
deleted file mode 100644
index 009f020..0000000
--- a/build-0.3/dist/functions.make
+++ /dev/null
@@ -1,75 +0,0 @@
-# file : build/dist/functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-dist_cmd := $(bld_root)/install/install
-
-dist_dir := $(dist_cmd) -d -m 755
-dist_data := $(dist_cmd) -p -m 644
-dist_exec := $(dist_cmd) -p -m 755
-
-$(out_root)/%: dist_dir := $(dist_dir)
-$(out_root)/%: dist_data := $(dist_data)
-$(out_root)/%: dist_exec := $(dist_exec)
-
-# Arguments:
-#
-# $1 - files; if not an absolute path, assume relative to src_base
-# $2 - optional destination directory. If not specified,
-# $(dist_prefix)/<path> is used where path is computed as
-# difference between src_base and src_root.
-#
-$(out_base)/%: dist-data = \
-$(call dist-data-body,$1,$(if $2,$2,$(dist_prefix)$(subst \
-$(src_root),,$(src_base))))
-
-$(out_base)/%: dist-exec = \
-$(call dist-exec-body,$1,$(if $2,$2,$(dist_prefix)$(subst \
-$(src_root),,$(src_base))))
-
-# Arguments:
-#
-# $1 - directory
-# $2 - optional find predicates
-# $3 - optional destination directory. If not specified,
-# $(dist_prefix)/<path> is used where path is computed as
-# difference between src_base and src_root.
-#
-$(out_base)/%: dist-dir = \
-$(call dist-dir-body,$1,$2,$(if $3,$3,$(dist_prefix)$(subst \
-$(src_root),,$(src_base))))
-
-$(out_base)/%: dist-data-body = \
-$(call message,,$(dist_dir) $2)\
-$(foreach d,$(sort $(dir $(addprefix $2/,$(foreach f,$1,$(if \
-$(filter /%,$f), $(notdir $f), $f))))),$(literal_newline)\
-$(literal_tab)$(call message,,$(dist_dir) $d))\
-$(foreach f,$1,$(literal_newline)\
-$(literal_tab)$(call message,dist $2/$(if $(filter /%,$f),$(notdir \
-$f),$f),$(dist_data) $(if $(filter /%,$f),$f,$(src_base)/$f) $2/$(if \
-$(filter /%,$f),$(notdir $f),$f)))
-
-$(out_base)/%: dist-exec-body = \
-$(call message,,$(dist_dir) $2)\
-$(foreach d,$(sort $(dir $(addprefix $2/,$(foreach f,$1,$(if \
-$(filter /%,$f), $(notdir $f), $f))))),$(literal_newline)\
-$(literal_tab)$(call message,,$(dist_dir) $d))\
-$(foreach f,$1,$(literal_newline)\
-$(literal_tab)$(call message,dist $2/$(if $(filter /%,$f),$(notdir \
-$f),$f),$(dist_exec) $(if $(filter /%,$f),$f,$(src_base)/$f) $2/$(if \
-$(filter /%,$f),$(notdir $f),$f)))
-
-$(out_base)/%: dist-dir-body = \
-$(call message,dist $3/$1,find -L $(src_base)/$1 $2 -type f -print \
-| xargs -n 1 $(bld_root)/run-if-arg dirname \
-| sort -u \
-| sed -e 's%$(src_base)/$1\(.*\)%$3/$1\1%' \
-| xargs -n 1 $(bld_root)/run-if-arg "$(dist_dir)")$(literal_newline)\
-$(literal_tab)$(call message,,\
-find -L $(src_base)/$1 $2 -type f ! -perm -100 -print \
-| sed -e 's%$(src_base)/$1\(.*\)%$(src_base)/$1\1 $3/$1\1%' \
-| xargs -n 2 $(bld_root)/run-if-arg "$(dist_data)")$(literal_newline)\
-$(literal_tab)$(call message,,\
-find -L $(src_base)/$1 $2 -type f -perm -100 -print \
-| sed -e 's%$(src_base)/$1\(.*\)%$(src_base)/$1\1 $3/$1\1%' \
-| xargs -n 2 $(bld_root)/run-if-arg "$(dist_exec)")
diff --git a/build-0.3/frame.make b/build-0.3/frame.make
deleted file mode 100644
index 2b16a0a..0000000
--- a/build-0.3/frame.make
+++ /dev/null
@@ -1,103 +0,0 @@
-# file : build/frame.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-%frame_exclude% += CURDIR SHELL MAKEFILE_LIST MAKEFLAGS
-%frame_include% := #.DEFAULT_GOAL - for some reason it is already in the list
-
-
-# return only vars with 'file' origin
-#
-%frame_exclude% += frame-vars-stage
-define frame-vars-stage
-$(foreach v,$1,$(if $(findstring file,$(origin $v)),$v))
-endef
-
-
-# $1 holds exclusion list
-#
-%frame_exclude% += frame-vars
-define frame-vars
-$(call frame-vars-stage,$(filter-out \%% $(%frame_exclude%) $1,$(.VARIABLES))) \
-$(filter-out $1,$(%frame_include%))
-endef
-
-
-%frame% := frame%
-
-
-%frame_exclude% += frame-set-recursive
-define frame-set-recursive
-define $1
-$2
-endef
-endef
-
-%frame_exclude% += frame-undefine
-ifneq ($(filter undefine,$(.FEATURES)),)
-define frame-undefine
-$(eval undefine $$1)
-endef
-define frame-undefine-imm
-$(eval undefine $1)
-endef
-else
-define frame-undefine
-$(eval $$1 :=)
-endef
-define frame-undefine-imm
-$(eval $1 :=)
-endef
-endif
-
-%frame_exclude% += frame-save
-define frame-save
-$(eval $(if $(filter simple,$(flavor $1)),\
-%$1/$(%frame%) := $(value $1),\
-$(call frame-set-recursive,%$1/$(%frame%),$(value $1))))
-endef
-
-%frame_exclude% += frame-restore
-define frame-restore
-$(eval $(if $(filter simple,$(flavor %$1/$(%frame%))),\
-$1 := $(value %$1/$(%frame%)),\
-$(call frame-set-recursive,$1,$(value %$1/$(%frame%)))))\
-$(call frame-undefine-imm,%$1/$(%frame%))
-endef
-
-# Use debug messages to check for garbage being framed.
-#
-
-#$$(warning framing $$(value %vars_$(%frame%)))
-
-%frame_exclude% += frame-enter-body
-define frame-enter-body
-%vars_$(%frame%) := $(call frame-vars,$1)
-%excl_$(%frame%) := $1
-$$(foreach v,$$(value %vars_$(%frame%)),$$(call frame-save,$$v))
-%frame% := frame/$(%frame%)
-endef
-
-%frame_exclude% += frame-enter
-define frame-enter
-$(eval $(call frame-enter-body,$1))
-endef
-
-
-#$$(warning restoring $$(value %vars_$$(%frame%)))
-
-%frame_exclude% += frame-leave-body
-define frame-leave-body
-%frame% := $(patsubst frame/%,%,$(%frame%))
-$$(foreach v,$$(value %vars_$$(%frame%)),$$(call frame-restore,$$v))
-$$(foreach v,\
-$$(filter-out $$(value %vars_$$(%frame%)),$$(call frame-vars,$$(value %excl_$$(%frame%)))),\
-$$(call frame-undefine,$$v))
-$$(call frame-undefine,%vars_$$(%frame%))
-$$(call frame-undefine,%excl_$$(%frame%))
-endef
-
-%frame_exclude% += frame-leave
-define frame-leave
-$(eval $(call frame-leave-body))
-endef
diff --git a/build-0.3/generator b/build-0.3/generator
deleted file mode 100644
index 6ab29f2..0000000
--- a/build-0.3/generator
+++ /dev/null
@@ -1,90 +0,0 @@
-# file : build/generator
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# This makefile is an optional, transparent generator of "thunk" makefiles
-# for the build setups with separate src and out directories. Without the
-# generator, the make invocation for this setup has the following general
-# form:
-#
-# make -C out_root/subdir -f src_root/subdir/makefile
-#
-# With the generator enabled, the same can be achieved with the following
-# shorter command:
-#
-# make -C out_root/subdir
-#
-# Or, if the subdir directory may not yet exist, with this variant:
-#
-# make -C out_root dir=subdir
-#
-# To enable the generator, you will need to instruct make to pre-load it
-# for every invocation by adding it to the MAKEFILES environment variable:
-#
-# export MAKEFILES=build-X.Y/generator
-#
-# The thunk makefiles for individual sub-directories are generated as
-# needed and are automatically removed by the disfigure target.
-#
-
-ifdef dir
-
-.PHONY: _all
-_all:
- @mkdir -p $(dir)
- @$(MAKE) -C $(dir) dir= $(MAKECMDGOALS)
-
-ifneq ($(MAKECMDGOALS),)
-.PHONY: $(MAKECMDGOALS)
-$(MAKECMDGOALS): _all
-else
-.DEFAULT_GOAL := _all
-endif
-
-else
-ifeq ($(wildcard makefile Makefile GNUmakefile),)
-
-define literal_newline
-
-
-endef
-
-makefile: empty :=
-makefile: space := $(empty) #
-makefile: tab := $(empty) $(empty)
-makefile: newline := $(literal_newline)
-
-
-# Find the src_root directory.
-#
-# $1 - current directory
-#
-makefile: find = \
-$(if $1,$(if $(wildcard $1/build/bootstrap-dynamic.make),$1,$(call \
-find,$(patsubst %/,%,$(dir $1)))))
-
-# Convert /foo/bar to ../../.
-#
-# $1 - relative path from $(CURDIR)
-#
-makefile: path = $(subst $(space),,$(foreach d,$(subst /, ,$1/),../))
-
-# $1 - relative path from $(CURDIR)
-#
-makefile: command_body = \
-@echo '\# Automatically generated by build.' >$@$(newline)\
-$(tab)@echo 'ifndef dir' >>$@$(newline)\
-$(tab)@echo 'override dir :=' >>$@$(newline)\
-$(tab)@echo 'include $(if $1,$(call path,$1))build/bootstrap-dynamic.make' >>$@$(newline)\
-$(tab)@echo 'include $$(src_root)$1/makefile' >>$@$(newline)\
-$(tab)@echo 'endif' >>$@
-
-# $1 - output root directory or empty if none were found
-#
-makefile: command = $(if $1,$(call command_body,$(subst $1,,$(CURDIR))))
-
-makefile:
- $(call command,$(call find,$(CURDIR)))
-
-endif # makefile
-endif # dir
diff --git a/build-0.3/git/gitignore b/build-0.3/git/gitignore
deleted file mode 100755
index 6663e51..0000000
--- a/build-0.3/git/gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/git/gitignore
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-echo '# Generated .gitignore file; do not edit or version control.'
-echo '#'
-
-for f in "$@"; do
-echo $f
-done
diff --git a/build-0.3/git/gitignore.make b/build-0.3/git/gitignore.make
deleted file mode 100644
index 931d2cd..0000000
--- a/build-0.3/git/gitignore.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# file : build/git/gitignore.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(out_base)/.gitignore:
- @$(bld_root)/git/gitignore $(files) >$@
-
-.PHONY: $(out_base)/.gitignore.clean
-$(out_base)/.gitignore.clean:
- @rm -f $(basename $@)
diff --git a/build-0.3/import.make b/build-0.3/import.make
deleted file mode 100644
index 82a6763..0000000
--- a/build-0.3/import.make
+++ /dev/null
@@ -1,74 +0,0 @@
-# file : build/import.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-
-# This cannot be eliminated.
-#
-%frame_exclude% += import-set-value
-define import-set-value
-$(eval $$1 := $$2)
-endef
-
-%frame_exclude% += exported-names
-define exported-names
-$(foreach i,1 2 3 4 5 6 7,$(if $(value $i),$(lastword $(value $i))))
-endef
-
-%frame_exclude% += import-names
-define import-names
-$(foreach i,1 2 3 4 5 6 7,$(if $(lastword $(value $i)),\
-$(call import-set-value,$(lastword $(value $i)),$(value $(firstword $(value $i))))))
-endef
-
-%frame_exclude% += import-body
-define import-body
-$(call frame-enter,$(call exported-names,$2,$3,$4,$5,$6,$7,$8))
-
-$(call include,$1)
-
-$(call import-names,$2,$3,$4,$5,$6,$7,$8)
-
-$(call frame-leave)
-endef
-
-
-# Simple case where there are no names imported. Also note that we use
-# include-once here since there is no reason to do it more than once.
-# We key it onto out_root to make sure we don't process the same makefile
-# more than once since that's what export stubs do.
-#
-%frame_exclude% += import-body-simple
-define import-body-simple
-$(call frame-enter)
-
-$(call include-once,$1,$(out_root))
-
-$(call frame-leave)
-endef
-
-
-#
-#
-%frame_exclude% += import
-define import
-$(eval $(if $(strip $2),\
-$(call import-body,$1,$2,$3,$4,$5,$6,$7,$8),\
-$(call import-body-simple,$1)))
-endef
-
-
-#
-# export
-#
-%frame_exclude% += export-names
-define export-names
-$(foreach i,1 2 3 4 5 6 7,$(if $(value $i),\
-$(call import-set-value,$(firstword $(value $i)),$(wordlist 2,$(words $(value $i)),$(value $i)))))
-endef
-
-
-%frame_exclude% += export
-define export
-$(call export-names,$1,$2,$3,$4,$5,$6,$7)
-endef
diff --git a/build-0.3/install.make b/build-0.3/install.make
deleted file mode 100644
index c774788..0000000
--- a/build-0.3/install.make
+++ /dev/null
@@ -1,6 +0,0 @@
-# file : build/install.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include,$(bld_root)/install/configuration.make)
-$(call include-once,$(bld_root)/install/install-functions.make,$(out_base))
diff --git a/build-0.3/install/configuration.make b/build-0.3/install/configuration.make
deleted file mode 100644
index d7ece48..0000000
--- a/build-0.3/install/configuration.make
+++ /dev/null
@@ -1,45 +0,0 @@
-# file : build/install/configuration.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-install_prefix := /usr/local
-install_data_prefix := $(install_prefix)
-install_exec_prefix := $(install_prefix)
-
-install_bin_dir := $(install_exec_prefix)/bin
-install_sbin_dir := $(install_exec_prefix)/sbin
-install_lib_dir := $(install_exec_prefix)/lib
-
-install_data_dir := $(install_data_prefix)/share
-install_inc_dir := $(install_data_prefix)/include
-
-install_doc_dir := $(install_data_dir)/doc
-install_man_dir := $(install_data_dir)/man
-install_info_dir := $(install_data_dir)/info
-
-$(out_root)/%: install_bin_dir := $(install_bin_dir)
-$(out_root)/%: install_sbin_dir := $(install_sbin_dir)
-$(out_root)/%: install_lib_dir := $(install_lib_dir)
-
-$(out_root)/%: install_inc_dir := $(install_inc_dir)
-$(out_root)/%: install_data_dir := $(install_data_dir)
-
-$(out_root)/%: install_doc_dir := $(install_doc_dir)
-$(out_root)/%: install_man_dir := $(install_man_dir)
-$(out_root)/%: install_info_dir := $(install_info_dir)
-
-install_cmd := $(bld_root)/install/install
-
-install_dir := $(install_cmd) -d -m 755
-install_data := $(install_cmd) -p -m 644
-install_exec := $(install_cmd) -p -m 755
-
-$(out_root)/%: install_dir := $(install_dir)
-$(out_root)/%: install_data := $(install_data)
-$(out_root)/%: install_exec := $(install_exec)
-
-
-#@@ Installation process is very os-dependant. For example
-# on BSD there is libexec but there is no such thing on
-# GNU/Linux.
-#
diff --git a/build-0.3/install/install b/build-0.3/install/install
deleted file mode 100755
index 40fe037..0000000
--- a/build-0.3/install/install
+++ /dev/null
@@ -1,21 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/install/install
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Run native install command if available and install-sh otherwise.
-# Also strip the -p argument (should be first) if calling install-sh
-# which doesn't support it.
-#
-
-type install >/dev/null 2>&1
-
-if [ $? -eq 0 ]; then
- exec install $*
-else
- if [ "$1" = "-p" ]; then
- shift
- fi
- exec `dirname $0`/install-sh $*
-fi
diff --git a/build-0.3/install/install-functions.make b/build-0.3/install/install-functions.make
deleted file mode 100644
index 22f69a7..0000000
--- a/build-0.3/install/install-functions.make
+++ /dev/null
@@ -1,37 +0,0 @@
-# file : build/install/install-functions.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-#@@ could just call it functions.make
-#
-
-$(out_base)/%: install-exec = \
-$(call message,,$(install_dir) $(dir $2))$(literal_newline)\
-$(literal_tab)$(call message,install $2,$(install_exec) $1 $2)
-
-
-$(out_base)/%: install-lib = \
-$(call message,install $2,$(install_dir) $(dir $2))$(literal_newline)\
-$(literal_tab)$(call message,,$(value $(if $(patsubst %.so,,$(shell\
- sed -e '1q' <$1)),install_data,install_exec)) $(shell sed -e '1q' <$1) $2)
-
-
-$(out_base)/%: install-data = \
-$(call message,install $2,$(install_dir) $(dir $2))$(literal_newline)\
-$(literal_tab)$(call message,,$(install_data) $1 $2)
-
-
-$(out_base)/%: install-dir = \
-$(call message,install $2/,find -L $1 $3 -type f -print \
-| xargs -n 1 $(bld_root)/run-if-arg dirname \
-| sort -u \
-| sed -e 's%$1\(.*\)%$2/\1%' \
-| xargs -n 1 $(bld_root)/run-if-arg "$(install_dir)")$(literal_newline)\
-$(literal_tab)$(call message,,\
-find -L $1 $3 -type f ! -perm -100 -print \
-| sed -e 's%$1\(.*\)%$1/\1 $2/\1%' \
-| xargs -n 2 $(bld_root)/run-if-arg "$(install_data)")$(literal_newline)\
-$(literal_tab)$(call message,,\
-find -L $1 $3 -type f -perm -100 -print \
-| sed -e 's%$1\(.*\)%$1/\1 $2/\1%' \
-| xargs -n 2 $(bld_root)/run-if-arg "$(install_exec)")
diff --git a/build-0.3/install/install-sh b/build-0.3/install/install-sh
deleted file mode 100755
index a5897de..0000000
--- a/build-0.3/install/install-sh
+++ /dev/null
@@ -1,519 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2006-12-25.00
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" "" $nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
- or: $0 [OPTION]... SRCFILES... DIRECTORY
- or: $0 [OPTION]... -t DIRECTORY SRCFILES...
- or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
- --help display this help and exit.
- --version display version info and exit.
-
- -c (ignored)
- -C install only if different (preserve the last data modification time)
- -d create directories instead of installing files.
- -g GROUP $chgrpprog installed files to GROUP.
- -m MODE $chmodprog installed files to MODE.
- -o USER $chownprog installed files to USER.
- -s $stripprog installed files.
- -t DIRECTORY install into DIRECTORY.
- -T report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
- CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
- RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
- case $1 in
- -c) ;;
-
- -C) copy_on_change=true;;
-
- -d) dir_arg=true;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift;;
-
- --help) echo "$usage"; exit $?;;
-
- -m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
-
- -o) chowncmd="$chownprog $2"
- shift;;
-
- -s) stripcmd=$stripprog;;
-
- -t) dst_arg=$2
- shift;;
-
- -T) no_target_directory=true;;
-
- --version) echo "$0 $scriptversion"; exit $?;;
-
- --) shift
- break;;
-
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
-
- *) break;;
- esac
- shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
- # When -d is used, all remaining arguments are directories to create.
- # When -t is used, the destination is already specified.
- # Otherwise, the last argument is the destination. Remove it from $@.
- for arg
- do
- if test -n "$dst_arg"; then
- # $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dst_arg"
- shift # fnord
- fi
- shift # arg
- dst_arg=$arg
- done
-fi
-
-if test $# -eq 0; then
- if test -z "$dir_arg"; then
- echo "$0: no input file specified." >&2
- exit 1
- fi
- # It's OK to call `install-sh -d' without argument.
- # This can happen when creating conditional directories.
- exit 0
-fi
-
-if test -z "$dir_arg"; then
- trap '(exit $?); exit' 1 2 13 15
-
- # Set umask so as not to create temps with too-generous modes.
- # However, 'strip' requires both read and write access to temps.
- case $mode in
- # Optimize common cases.
- *644) cp_umask=133;;
- *755) cp_umask=22;;
-
- *[0-7])
- if test -z "$stripcmd"; then
- u_plus_rw=
- else
- u_plus_rw='% 200'
- fi
- cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
- *)
- if test -z "$stripcmd"; then
- u_plus_rw=
- else
- u_plus_rw=,u+rw
- fi
- cp_umask=$mode$u_plus_rw;;
- esac
-fi
-
-for src
-do
- # Protect names starting with `-'.
- case $src in
- -*) src=./$src;;
- esac
-
- if test -n "$dir_arg"; then
- dst=$src
- dstdir=$dst
- test -d "$dstdir"
- dstdir_status=$?
- else
-
- # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
- # might cause directories to be created, which would be especially bad
- # if $src (and thus $dsttmp) contains '*'.
- if test ! -f "$src" && test ! -d "$src"; then
- echo "$0: $src does not exist." >&2
- exit 1
- fi
-
- if test -z "$dst_arg"; then
- echo "$0: no destination specified." >&2
- exit 1
- fi
-
- dst=$dst_arg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst;;
- esac
-
- # If destination is a directory, append the input filename; won't work
- # if double slashes aren't ignored.
- if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
- fi
- dstdir=$dst
- dst=$dstdir/`basename "$src"`
- dstdir_status=0
- else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
- test -d "$dstdir"
- dstdir_status=$?
- fi
- fi
-
- obsolete_mkdir_used=false
-
- if test $dstdir_status != 0; then
- case $posix_mkdir in
- '')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
-
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
- esac
-
- if
- $posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
- )
- then :
- else
-
- # The umask is ridiculous, or mkdir does not conform to POSIX,
- # or it failed possibly due to a race condition. Create the
- # directory the slow way, step by step, checking for races as we go.
-
- case $dstdir in
- /*) prefix='/';;
- -*) prefix='./';;
- *) prefix='';;
- esac
-
- eval "$initialize_posix_glob"
-
- oIFS=$IFS
- IFS=/
- $posix_glob set -f
- set fnord $dstdir
- shift
- $posix_glob set +f
- IFS=$oIFS
-
- prefixes=
-
- for d
- do
- test -z "$d" && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
- done
-
- if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
- fi
- fi
- fi
-
- if test -n "$dir_arg"; then
- { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
- { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
- test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
- else
-
- # Make a couple of temp file names in the proper directory.
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
-
- # Trap to clean up those temp files at exit.
- trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
- # Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
- # and set any options; do chmod last to preserve setuid bits.
- #
- # If any of these fail, we abort the whole thing. If we want to
- # ignore errors from any of these, just make sure not to ignore
- # errors from the above "$doit $cpprog $src $dsttmp" command.
- #
- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
- { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
- { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
- # If -C, don't bother to copy if it wouldn't change the file.
- if $copy_on_change &&
- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
- eval "$initialize_posix_glob" &&
- $posix_glob set -f &&
- set X $old && old=:$2:$4:$5:$6 &&
- set X $new && new=:$2:$4:$5:$6 &&
- $posix_glob set +f &&
-
- test "$old" = "$new" &&
- $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
- then
- rm -f "$dsttmp"
- else
- # Rename the file to the real destination.
- $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
- # The rename failed, perhaps because mv can't rename something else
- # to itself, or perhaps because mv is so ancient that it does not
- # support -f.
- {
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
- } ||
- { echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
- }
- fi || exit 1
-
- trap '' 0
- fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/build-0.3/ld/configuration-lib-rules.make b/build-0.3/ld/configuration-lib-rules.make
deleted file mode 100644
index 0c1a8e9..0000000
--- a/build-0.3/ld/configuration-lib-rules.make
+++ /dev/null
@@ -1,15 +0,0 @@
-# file : build/ld/configuration-lib-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/ld/configuration-lib-dynamic.make: | $(dcf_root)/ld/.
- $(call message,,$(bld_root)/ld/configure-lib $@)
-
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/ld/configuration-lib-dynamic.make,\
-rm -f $(dcf_root)/ld/configuration-lib-dynamic.make)
-
-endif
diff --git a/build-0.3/ld/configuration-lib-static.make b/build-0.3/ld/configuration-lib-static.make
deleted file mode 100644
index 60eebd5..0000000
--- a/build-0.3/ld/configuration-lib-static.make
+++ /dev/null
@@ -1,9 +0,0 @@
-# file : build/ld/configuration-lib-static.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-#@@ Need to use these variables where I hardcoded those values.
-#
-ld_lib_prefix := lib
-ld_lib_archive_suffix := .a
-ld_lib_shared_suffix := .so
diff --git a/build-0.3/ld/configuration-lib.make b/build-0.3/ld/configuration-lib.make
deleted file mode 100644
index 5395d64..0000000
--- a/build-0.3/ld/configuration-lib.make
+++ /dev/null
@@ -1,41 +0,0 @@
-# file : build/ld/configuration-lib.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/ld/configuration-lib-rules.make,$(dcf_root))
-
-# Static configuration.
-#
-$(call include,$(bld_root)/ld/configuration-lib-static.make)
-
-ifneq ($(bld_root),$(scf_root))
-$(call -include,$(scf_root)/ld/configuration-lib-static.make)
-endif
-
-# Dynamic configuration.
-#
-ld_lib_type :=
-
-$(call -include,$(dcf_root)/ld/configuration-lib-dynamic.make)
-
-ifdef ld_lib_type
-
-ifeq ($(ld_lib_type),archive)
-
-ld_lib_suffix := $(ld_lib_archive_suffix)
-
-else
-
-ld_lib_suffix := $(ld_lib_shared_suffix)
-
-endif
-
-$(out_root)/%: ld_lib_type := $(ld_lib_type)
-$(out_root)/%: ld_lib_prefix := $(ld_lib_prefix)
-$(out_root)/%: ld_lib_suffix := $(ld_lib_suffix)
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/build-0.3/ld/configure-lib b/build-0.3/ld/configure-lib
deleted file mode 100755
index 5243357..0000000
--- a/build-0.3/ld/configure-lib
+++ /dev/null
@@ -1,50 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/ld/configure-lib
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Please select the default library type:"
-$echo
-$echo "(1) archive"
-$echo "(2) shared object"
-$echo
-
-type=`read_option "archive shared" "shared"`
-
-if [ "$type" == "archive" ]; then
-
- $echo
- $echo "Please enter the archiver (ar) binary you would like to use."
- $echo
-
- ar=`read_path --command ar`
-
- $echo
- $echo "Please enter the indexer (ranlib) binary you would like to use."
- $echo
-
- ranlib=`read_path --command ranlib`
-fi
-
-echo "ld_lib_type := $type" > $1
-
-if [ "$type" == "archive" ]; then
- echo "ld_lib_ar := $ar" >> $1
- echo "ld_lib_ranlib := $ranlib" >> $1
-fi
diff --git a/build-0.3/literals.make b/build-0.3/literals.make
deleted file mode 100644
index 2ae8cf7..0000000
--- a/build-0.3/literals.make
+++ /dev/null
@@ -1,13 +0,0 @@
-# file : build/literals.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-literal_empty :=
-
-define literal_newline
-
-
-endef
-
-literal_tab := $(literal_empty) $(literal_empty)
-literal_percent := %
diff --git a/build-0.3/m4/m4.make b/build-0.3/m4/m4.make
deleted file mode 100644
index ef5726b..0000000
--- a/build-0.3/m4/m4.make
+++ /dev/null
@@ -1,50 +0,0 @@
-# file : build/m4/m4.make
-# copyright : Copyright (c) 2005-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(out_base)/%: m4 := m4
-$(out_base)/%: m4_options +=
-
-ifeq ($(out_base),$(src_base))
-$(out_base)/%: $(src_base)/%.m4
-else
-$(out_base)/%: $(src_base)/%.m4 | $$(dir $$@).
-endif
- $(call message,m4 $<,$(m4) $(m4_options) $< >$@)
-
-ifneq ($(out_base),$(src_base))
-
-$(out_base)/%: $(out_base)/%.m4 | $$(dir $$@).
- $(call message,m4 $<,$(m4) $(m4_options) $< >$@)
-
-endif
-
-
-# @@
-# This is where things start breaking. Following standard logic I should
-# make a $(out_base)/%.clean rule, i.e., "will clean anything" rule. If
-# this rule happened to be before some other, more specialized rule, and
-# that rule happened to rm some additional stuff (like %.o tries to rm
-# .d file, which is also not quite correct...). In other word there
-# doesn't seem to be a way to properly match "build" and "clean" rules.
-# One idea is to make the "clean" rule depend on what "build" rule
-# depends (%.m4 in our case) hoping that this way the rule won't match.
-#
-# There are two problems with this approach:
-#
-# 1. It is if not iff. However, since the rules come in pairs and make
-# pick the first implicit rule that matches, it is certain that if
-# make picked this "clean" rule it also picked corresponding "build"
-# rule.
-#
-# 2. The prerequisite (%.m4) can be an intermidiate file which itself
-# may not exist. We don't want make to build it just to clean it
-# or, even worse, to leave it laying around. I guess the only way
-# to work around this is to provide special do-nothing rules during
-# cleanup.
-#
-#
-.PHONY: $(out_base)/%.m4.clean
-
-$(out_base)/%.m4.clean:
- $(call message,rm $(@:.m4.clean=),rm -f $(@:.m4.clean=))
diff --git a/build-0.3/message.make b/build-0.3/message.make
deleted file mode 100644
index d7d47c4..0000000
--- a/build-0.3/message.make
+++ /dev/null
@@ -1,31 +0,0 @@
-# file : build/message.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-%frame_exclude% += build-message-expand-body
-define build-message-expand-body
-$(eval _1 = $1)$(call _1,$2,$3,$4,$5,$6,$7,$8,$9)
-endef
-
-%frame_exclude% += build-message-expand
-define build-message-expand
-$(call build-message-expand-body,$(subst #,\#,$1),$2,$3,$4,$5,$6,$7,$8,$9)
-endef
-
-%frame_exclude% += message
-
-ifdef verbose
-
-define message
-$(call build-message-expand,$2,$3,$4,$5,$6,$7,$8,$9)
-endef
-
-else
-
-define message
-$(if $1,@echo $(call build-message-expand,$1,$3,$4,$5,$6,$7,$8,$9) && \
- $(call build-message-expand,$2,$3,$4,$5,$6,$7,$8,$9),\
- @$(call build-message-expand,$2,$3,$4,$5,$6,$7,$8,$9))
-endef
-
-endif
diff --git a/build-0.3/meta/autoconf b/build-0.3/meta/autoconf
deleted file mode 100755
index 2eb542f..0000000
--- a/build-0.3/meta/autoconf
+++ /dev/null
@@ -1,84 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/meta/autoconf
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process autconf configure.ac templates.
-#
-# Options:
-#
-# -b <base-dir>
-# -o <output-file>
-#
-# Arguments:
-#
-# <template-file>
-#
-trap 'exit 1' ERR
-
-function error ()
-{
- echo "$*" 1>&2
-}
-
-base=
-output=
-
-while [ $# -gt 0 ]; do
- case $1 in
- -b)
- base=$2
- shift 2
- ;;
- -o)
- output=$2
- shift 2
- ;;
- *)
- break
- ;;
- esac
-done
-
-input=$1
-
-if [ "$input" = "" ]; then
- error "no input file"
- exit 1
-fi
-
-if [ "$base" = "" ]; then
- error "no base directory"
- exit 1
-fi
-
-if [ "$output" = "" ]; then
- error "no output file"
- exit 1
-fi
-
-m4=m4
-
-# Assume this script is never found via PATH.
-#
-meta=`dirname $0`
-
-build="$meta/.."
-install=$build/install/install
-
-# Find all the configuration files.
-#
-files=`find $base -name 'Makefile.am' -o -name '*.in' -a ! -name '*.h.in' | \
-sed -e "s%^$base/%%" | \
-sed -e 's%\.\(am\|in\)$%%' | \
-sort -u`
-
-export config_files=$files
-
-# Make sure the output directory exist.
-#
-$install -d -m 755 `dirname $output`
-
-$m4 -P -D__meta_base__=$meta $meta/autoconf.m4 $input >$output
-chmod 644 $output
diff --git a/build-0.3/meta/autoconf-functions.make b/build-0.3/meta/autoconf-functions.make
deleted file mode 100644
index a2a1d76..0000000
--- a/build-0.3/meta/autoconf-functions.make
+++ /dev/null
@@ -1,23 +0,0 @@
-# file : build/meta/autoconf-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process autoconf template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - optional template path, if doesn't start with /, assume relative
-# to src_base default is $(src_base)/configure.ac
-#
-$(out_base)/%: meta-autoconf = \
-$(call meta-autoconf-body,$(if $1,$(if $(filter \
-/%,$1),$1,$(src_base)/$1),$(src_base)/configure.ac),$(subst \
-$(src_root),,$(src_base)))
-
-# $1 - template
-# $2 - difference between src_base and src_root with leading '\'
-#
-$(out_base)/%: meta-autoconf-body = \
-$(call message,meta $(dist_prefix)$2/$(notdir $1),$(bld_root)/meta/autoconf \
--b $(dist_prefix)$2 -o $(dist_prefix)$2/$(notdir $1) $1)
diff --git a/build-0.3/meta/autoconf.m4 b/build-0.3/meta/autoconf.m4
deleted file mode 100644
index 8ca5b93..0000000
--- a/build-0.3/meta/autoconf.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-m4_divert(-1)
-# file : build/meta/autoconf.m4
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-m4_changequote([, ])
-
-m4_include(__meta_base__[/common.m4])
-
-m4_define([__path_impl__], [__env_impl__([$1])])
-m4_define([__path__], [m4_equote()__path_impl__([$1])[]m4_dquote()])
-
-m4_define([__file_impl__], [__env_impl__([$1])])
-m4_define([__file__], [m4_equote()__file_impl__([$1])[]m4_dquote()])
-
-# Disable comments and quoting.
-#
-m4_changecom([])
-m4_changequote([])
-
-m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/autoconf.make b/build-0.3/meta/autoconf.make
deleted file mode 100644
index 984ed35..0000000
--- a/build-0.3/meta/autoconf.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/autoconf.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/autoconf-functions.make,$(out_base))
diff --git a/build-0.3/meta/automake b/build-0.3/meta/automake
deleted file mode 100755
index ede1958..0000000
--- a/build-0.3/meta/automake
+++ /dev/null
@@ -1,64 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/meta/automake
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process automake Makefile.am templates.
-#
-# Options:
-#
-# -o <output-file>
-#
-# Arguments:
-#
-# <template-file>
-#
-trap 'exit 1' ERR
-
-function error ()
-{
- echo "$*" 1>&2
-}
-
-output=
-
-while [ $# -gt 0 ]; do
- case $1 in
- -o)
- output=$2
- shift 2
- ;;
- *)
- break
- ;;
- esac
-done
-
-input=$1
-
-if [ "$input" = "" ]; then
- error "no input file"
- exit 1
-fi
-
-if [ "$output" = "" ]; then
- error "no output file"
- exit 1
-fi
-
-m4=m4
-
-# Assume this script is never found via PATH.
-#
-meta=`dirname $0`
-
-build="$meta/.."
-install=$build/install/install
-
-# Make sure the output directory exist.
-#
-$install -d -m 755 `dirname $output`
-
-$m4 -P -D__meta_base__=$meta $meta/automake.m4 $input >$output
-chmod 644 $output
diff --git a/build-0.3/meta/automake-functions.make b/build-0.3/meta/automake-functions.make
deleted file mode 100644
index 2f49237..0000000
--- a/build-0.3/meta/automake-functions.make
+++ /dev/null
@@ -1,23 +0,0 @@
-# file : build/meta/automake-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process automake template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - optional template path, if doesn't start with /, assume relative
-# to src_base default is $(src_base)/Makefile.am
-#
-$(out_base)/%: meta-automake = \
-$(call meta-automake-body,$(if $1,$(if $(filter \
-/%,$1),$1,$(src_base)/$1),$(src_base)/Makefile.am),$(subst \
-$(src_root),,$(src_base)))
-
-# $1 - template
-# $2 - difference between src_base and src_root with leading '\'
-#
-$(out_base)/%: meta-automake-body = \
-$(call message,meta $(dist_prefix)$2/$(notdir $1),$(bld_root)/meta/automake \
--o $(dist_prefix)$2/$(notdir $1) $1)
diff --git a/build-0.3/meta/automake.m4 b/build-0.3/meta/automake.m4
deleted file mode 100644
index 56aa319..0000000
--- a/build-0.3/meta/automake.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-m4_divert(-1)
-# file : build/meta/automake.m4
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-m4_changequote([, ])
-
-m4_include(__meta_base__[/common.m4])
-
-m4_define([__path_impl__], [__env_impl__([$1])])
-m4_define([__path__], [m4_equote()__path_impl__([$1])[]m4_dquote()])
-
-m4_define([__file_impl__], [__env_impl__([$1])])
-m4_define([__file__], [m4_equote()__file_impl__([$1])[]m4_dquote()])
-
-# Disable comments and quoting.
-#
-m4_changecom([])
-m4_changequote([])
-
-m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/automake.make b/build-0.3/meta/automake.make
deleted file mode 100644
index 67ae4ac..0000000
--- a/build-0.3/meta/automake.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/automake.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/automake-functions.make,$(out_base))
diff --git a/build-0.3/meta/common.m4 b/build-0.3/meta/common.m4
deleted file mode 100644
index 685a74a..0000000
--- a/build-0.3/meta/common.m4
+++ /dev/null
@@ -1,113 +0,0 @@
-# file : build/meta/common.m4
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# m4_strip(STRING)
-# ----------------
-# Expands into STRING with tabs and spaces singled out into a single
-# space, and removing leading and trailing spaces.
-#
-m4_define([m4_strip],
-[m4_patsubst(m4_patsubst([ $1 ], [[ ]+], [ ]), [^ \(.*\) $], [[[\1]]])])
-
-
-# m4_normalize(STRING)
-# --------------------
-# Apply m4_strip to STRING.
-#
-m4_define([m4_normalize], [m4_strip([$1])])
-
-# m4_split(STRING, [REGEXP])
-# --------------------------
-# Split STRING into an m4 list of quoted elements. The elements are
-# quoted with ] and ]. Beginning spaces and end spaces *are kept*.
-# Use m4_strip to remove them.
-#
-# REGEXP specifies where to split. Default is [\t ]+.
-#
-# If STRING is empty, the result is an empty list.
-#
-
-m4_define([m4_split],
-[m4_ifelse([$1], [], [],
- [$2], [ ], [m4_ifelse(m4_index([$1], [ ]), [-1], [[$1]],
- [_$0([$1], [$2], [, ])])],
- [$2], [], [_$0([$1], [[ ]+], [, ])],
- [_$0([$1], [$2], [, ])])])
-
-m4_define([_m4_split], [m4_patsubst([$1], [$2], [$3])])
-
-
-# Simple foreach implementation. The list elements are expected to
-# be fully expanded.
-#
-m4_define([m4_foreach], [m4_ifelse([$2], [], [],
- [m4_pushdef([$1])_$0([$1], [$3], [], $2)m4_popdef([$1])])])
-m4_define([_m4_foreach], [m4_ifelse([$#], [3], [],
- [m4_define([$1], [$4])$2[]$0([$1], [$2],
- m4_shift(m4_shift(m4_shift($@))))])])
-
-# m4_foreach_w(VARIABLE, LIST, EXPRESSION)
-# ----------------------------------------
-# Like m4_foreach, but the list is whitespace separated.
-#
-m4_define([m4_foreach_w],
-[m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])
-
-# m4_strip_nl(STRING)
-# ----------------------------------------
-# Remove newlines
-#
-m4_define([m4_strip_nl], [m4_patsubst([$1], [
-], [])])
-
-# Enable/disable quoting.
-#
-m4_define([m4_equote], [m4_changequote([,])])
-m4_define([m4_dquote], [m4_changequote([])])
-
-#
-#
-m4_define([__ifelse__],
- [m4_equote()m4_ifelse(
- [$1],
- [$2],
- [m4_dquote()$3m4_equote()],
- [m4_dquote()$4m4_equote()])[]m4_dquote()])
-
-m4_define([__foreach__],
- [m4_equote()m4_foreach(
- [$1],[$2],[m4_dquote()$3m4_equote()])[]m4_dquote()])
-
-m4_define([__foreach_w__],
- [m4_equote()m4_foreach_w(
- $1,$2,[m4_dquote()$3m4_equote()])[]m4_dquote()])
-
-#
-#
-m4_define([__env_impl__], [m4_esyscmd([/bin/echo -n $$1])])
-m4_define([__env__], [m4_equote()__env_impl__([$1])[]m4_dquote()])
-
-m4_define([__value_impl__], [__env_impl__([$1])])
-m4_define([__value__], [m4_equote()__value_impl__([$1])[]m4_dquote()])
-
-m4_define([__uuid_impl__],
- [m4_translit(m4_strip_nl(m4_esyscmd([uuidgen])), [a-z], [A-Z])])
-m4_define([__uuid__], [m4_equote()__uuid_impl__([$1])[]m4_dquote()])
-
-m4_define([__upcase_impl__], [m4_translit([$1], [a-z], [A-Z])])
-m4_define([__upcase__], [m4_equote()__upcase_impl__([$1])[]m4_dquote()])
-
-m4_define([__xml_impl__],
-[m4_patsubst(
- m4_patsubst(
- m4_patsubst(
- [$1],
- [&],
- [&amp;]),
- [<],
- [&lt;]),
- ["],
- [&quot;])])
-
-m4_define([__xml__], [m4_equote()__xml_impl__([$1])[]m4_dquote()])
diff --git a/build-0.3/meta/vc10proj b/build-0.3/meta/vc10proj
deleted file mode 100755
index cd6b5b3..0000000
--- a/build-0.3/meta/vc10proj
+++ /dev/null
@@ -1,79 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/meta/vc10proj
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ 10 project file templates.
-#
-# Options:
-#
-# -o <output-file>
-#
-# Arguments:
-#
-# <template-file>
-#
-trap 'exit 1' ERR
-
-function error ()
-{
- echo "$*" 1>&2
-}
-
-output=
-
-while [ $# -gt 0 ]; do
- case $1 in
- -o)
- output=$2
- shift 2
- ;;
- *)
- break
- ;;
- esac
-done
-
-input=$1
-
-if [ "$input" = "" ]; then
- error "no input file"
- exit 1
-fi
-
-if [ "$output" = "" ]; then
- error "no output file"
- exit 1
-fi
-
-m4=m4
-u2d=todos
-
-# Assume this script is never found via PATH.
-#
-meta=`dirname $0`
-
-build="$meta/.."
-install=$build/install/install
-
-
-# Determine available configurations.
-#
-conf=`sed -n -e \
-'s/^[ ]*<ProjectConfiguration Include="\([^"]*\)">$/"\1",/p;d' $input`
-conf=`echo $conf | sed -e 's/,$//'`
-
-export configurations=$conf
-
-# Make sure the output directory exist.
-#
-$install -d -m 755 `dirname $output`
-
-$m4 -P -D__meta_base__=$meta $meta/vc10proj.m4 $input >$output
-$u2d $output
-chmod 644 $output
-
-$m4 -P -D__meta_base__=$meta $meta/vc10proj.m4 $input.filters >$output.filters
-$u2d $output.filters
-chmod 644 $output.filters
diff --git a/build-0.3/meta/vc10proj-functions.make b/build-0.3/meta/vc10proj-functions.make
deleted file mode 100644
index 8625182..0000000
--- a/build-0.3/meta/vc10proj-functions.make
+++ /dev/null
@@ -1,27 +0,0 @@
-# file : build/meta/vc10proj-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ project file template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - template path, if doesn't start with /, assume relative to src_base
-# $2 - output name (optional)
-# $3-8 - optional pairs of additional varibales and values $3=$4, $5=$6, etc
-#
-#
-$(out_base)/%: meta-vc10proj = \
-$(call meta-vc10proj-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
-$2,$2,$(notdir $1)),$(subst $(src_root),,$(src_base)),$3,$4,$5,$6,$7,$8)
-
-# $1 - template
-# $2 - output name
-# $3 - difference between src_base and src_root with leading '\'
-# $4-9 - additional varibales
-#
-$(out_base)/%: meta-vc10proj-body = \
-$(call message,meta $(dist_prefix)$3/$2,$(if $4,$4='$5'; export $4; )$(if \
-$6,$6='$7'; export $6; )$(if $8,$8='$9'; export $8; )$(bld_root)/meta/vc10proj \
--o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc10proj.m4 b/build-0.3/meta/vc10proj.m4
deleted file mode 100644
index b151f78..0000000
--- a/build-0.3/meta/vc10proj.m4
+++ /dev/null
@@ -1,127 +0,0 @@
-m4_divert(-1)
-# file : build/meta/vc10proj.m4
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-m4_changequote([, ])
-
-m4_include(__meta_base__[/common.m4])
-m4_include(__meta_base__[/windows-common.m4])
-
-# header
-#
-m4_define([__header_entry_impl__],
-[ <ClInclude Include="[$1]" />])
-
-m4_define([__header_entry__],
-[m4_equote()__header_entry_impl__([$1])[]m4_dquote()])
-
-
-m4_define([__header_entries_impl__],
-[m4_foreach_w([__f], __path_impl__([$1]), [
-__header_entry_impl__(__f)])])
-
-m4_define([__header_entries__],
-[m4_equote()__header_entries_impl__([$1])[]m4_dquote()])
-
-# header_filter
-#
-m4_define([__header_filter_entry_impl__],
-[ <ClInclude Include="[$1]">
- <Filter>Header Files</Filter>
- </ClInclude>])
-
-m4_define([__header_filter_entry__],
-[m4_equote()__header_filter_entry_impl__([$1])[]m4_dquote()])
-
-
-m4_define([__header_filter_entries_impl__],
-[m4_foreach_w([__f], __path_impl__([$1]), [
-__header_filter_entry_impl__(__f)])])
-
-m4_define([__header_filter_entries__],
-[m4_equote()__header_filter_entries_impl__([$1])[]m4_dquote()])
-
-# source
-#
-
-# $1 - configuration
-# $2 - directory
-#
-m4_define([__source_config_entry_impl__],
-[ <ObjectFileName m4_dnl
-Condition="'$(Configuration)|$(Platform)'==m4_dnl
-'[]m4_patsubst([$1], ["], [])'">m4_dnl
-$(IntDir)\[$2]\</ObjectFileName>])
-
-m4_define([__source_entry_body__],
-[m4_ifelse([$1], [$2],
-[ <ClCompile Include="[$1]" />],
-[ <ClCompile Include="[$1]">m4_dnl
-m4_foreach([__c],
-[__value_impl__([configurations])],
-[
-__source_config_entry_impl__(__c, [$2])])
- </ClCompile>])])
-
-m4_define([__source_entry_impl__],
-[__source_entry_body__([$1],
-m4_patsubst([$1], [^\(.*\)\\\(.*\)$], [\1]))])
-
-m4_define([__source_entry__],
-[m4_equote()__source_entry_impl__([$1])[]m4_dquote()])
-
-m4_define([__source_entries_impl__],
-[m4_foreach_w([__f], __path_impl__([$1]), [
-__source_entry_impl__(__f)])])
-
-m4_define([__source_entries__],
-[m4_equote()__source_entries_impl__([$1])[]m4_dquote()])
-
-# source_filter
-#
-m4_define([__source_filter_entry_impl__],
-[ <ClCompile Include="[$1]">
- <Filter>Source Files</Filter>
- </ClCompile>])
-
-m4_define([__source_filter_entry__],
-[m4_equote()__source_filter_entry_impl__([$1])[]m4_dquote()])
-
-
-m4_define([__source_filter_entries_impl__],
-[m4_foreach_w([__f], __path_impl__([$1]), [
-__source_filter_entry_impl__(__f)])])
-
-m4_define([__source_filter_entries__],
-[m4_equote()__source_filter_entries_impl__([$1])[]m4_dquote()])
-
-# custom_build
-#
-m4_define([__custom_build_entry_tag_impl__],
-[ <[$1] Condition="'$(Configuration)|$(Platform)'==m4_dnl
-'[]m4_patsubst([$2], ["], [])'">[$3]</[$1]>])
-
-m4_define([__custom_build_entry_impl__],
-[ <CustomBuild Include="[$1]">m4_dnl
-m4_foreach([__c],
-[__value_impl__([configurations])],
-[
-__custom_build_entry_tag_impl__([Message], __c, [$2])
-__custom_build_entry_tag_impl__([Command], __c, [$3])
-__custom_build_entry_tag_impl__([Outputs], __c, [$4];%(Outputs))m4_ifelse([$5], [], [], [
-__custom_build_entry_tag_impl__([AdditionalInputs], __c, [$5])])])
- </CustomBuild>])
-
-# (file, cmd-description, cmd, output;output[, add-dep;add-dep])
-#
-m4_define([__custom_build_entry__],
-[m4_equote()__custom_build_entry_impl__([$1],
-[$2], [$3], [$4], [$5])[]m4_dquote()])
-
-# Disable comments and quoting.
-#
-m4_changecom([])
-m4_changequote([])
-
-m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/vc10proj.make b/build-0.3/meta/vc10proj.make
deleted file mode 100644
index 3532e6e..0000000
--- a/build-0.3/meta/vc10proj.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vc10proj.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vc10proj-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc10sln-functions.make b/build-0.3/meta/vc10sln-functions.make
deleted file mode 100644
index cb68d82..0000000
--- a/build-0.3/meta/vc10sln-functions.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/meta/vc10sln-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ solution template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - template path, if doesn't start with /, assume relative to src_base
-# $2 - output name (optional)
-# $3 - project suffix (-vc10.vcxproj by default)
-# $4-9 - optional pairs of additional varibales and values $4=$5, $6=$7, etc
-#
-$(out_base)/%: meta-vc10sln = \
-$(call meta-vc10sln-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
-$2,$2,$(notdir $1)),$(subst \
-$(src_root),,$(src_base)),$(if $3,$3,-vc10.vcxproj),$4,$5,$6,$7,$8,$9)
-
-# $1 - template
-# $2 - output name
-# $3 - difference between src_base and src_root with leading '\'
-# $4 - project suffix
-# $4-10 - additional varibales
-#
-$(out_base)/%: meta-vc10sln-body = \
-$(call message,meta $(dist_prefix)$3/$2,$(if $5,$5='$6'; export $5; )$(if \
-$7,$7='$8'; export $7; )$(if $9,$9='$(10)'; export $9; )$(bld_root)/meta/vcsln \
--v 10 -b $(dist_prefix)$3 -e '$4' -o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc10sln.make b/build-0.3/meta/vc10sln.make
deleted file mode 100644
index ac4abed..0000000
--- a/build-0.3/meta/vc10sln.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vc10sln.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vc10sln-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc11proj-functions.make b/build-0.3/meta/vc11proj-functions.make
deleted file mode 100644
index eff9091..0000000
--- a/build-0.3/meta/vc11proj-functions.make
+++ /dev/null
@@ -1,27 +0,0 @@
-# file : build/meta/vc11proj-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ project file template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - template path, if doesn't start with /, assume relative to src_base
-# $2 - output name (optional)
-# $3-8 - optional pairs of additional varibales and values $3=$4, $5=$6, etc
-#
-#
-$(out_base)/%: meta-vc11proj = \
-$(call meta-vc11proj-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
-$2,$2,$(notdir $1)),$(subst $(src_root),,$(src_base)),$3,$4,$5,$6,$7,$8)
-
-# $1 - template
-# $2 - output name
-# $3 - difference between src_base and src_root with leading '\'
-# $4-9 - additional varibales
-#
-$(out_base)/%: meta-vc11proj-body = \
-$(call message,meta $(dist_prefix)$3/$2,$(if $4,$4='$5'; export $4; )$(if \
-$6,$6='$7'; export $6; )$(if $8,$8='$9'; export $8; )$(bld_root)/meta/vc10proj \
--o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc11proj.make b/build-0.3/meta/vc11proj.make
deleted file mode 100644
index 4cf98ea..0000000
--- a/build-0.3/meta/vc11proj.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vc11proj.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vc11proj-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc11sln-functions.make b/build-0.3/meta/vc11sln-functions.make
deleted file mode 100644
index 83cae1f..0000000
--- a/build-0.3/meta/vc11sln-functions.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/meta/vc11sln-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ solution template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - template path, if doesn't start with /, assume relative to src_base
-# $2 - output name (optional)
-# $3 - project suffix (-vc11.vcxproj by default)
-# $4-9 - optional pairs of additional varibales and values $4=$5, $6=$7, etc
-#
-$(out_base)/%: meta-vc11sln = \
-$(call meta-vc11sln-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
-$2,$2,$(notdir $1)),$(subst \
-$(src_root),,$(src_base)),$(if $3,$3,-vc11.vcxproj),$4,$5,$6,$7,$8,$9)
-
-# $1 - template
-# $2 - output name
-# $3 - difference between src_base and src_root with leading '\'
-# $4 - project suffix
-# $4-10 - additional varibales
-#
-$(out_base)/%: meta-vc11sln-body = \
-$(call message,meta $(dist_prefix)$3/$2,$(if $5,$5='$6'; export $5; )$(if \
-$7,$7='$8'; export $7; )$(if $9,$9='$(10)'; export $9; )$(bld_root)/meta/vcsln \
--v 11 -b $(dist_prefix)$3 -e '$4' -o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc11sln.make b/build-0.3/meta/vc11sln.make
deleted file mode 100644
index 8a212fe..0000000
--- a/build-0.3/meta/vc11sln.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vc11sln.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vc11sln-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc12proj-functions.make b/build-0.3/meta/vc12proj-functions.make
deleted file mode 100644
index bee0cda..0000000
--- a/build-0.3/meta/vc12proj-functions.make
+++ /dev/null
@@ -1,27 +0,0 @@
-# file : build/meta/vc12proj-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ project file template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - template path, if doesn't start with /, assume relative to src_base
-# $2 - output name (optional)
-# $3-8 - optional pairs of additional varibales and values $3=$4, $5=$6, etc
-#
-#
-$(out_base)/%: meta-vc12proj = \
-$(call meta-vc12proj-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
-$2,$2,$(notdir $1)),$(subst $(src_root),,$(src_base)),$3,$4,$5,$6,$7,$8)
-
-# $1 - template
-# $2 - output name
-# $3 - difference between src_base and src_root with leading '\'
-# $4-9 - additional varibales
-#
-$(out_base)/%: meta-vc12proj-body = \
-$(call message,meta $(dist_prefix)$3/$2,$(if $4,$4='$5'; export $4; )$(if \
-$6,$6='$7'; export $6; )$(if $8,$8='$9'; export $8; )$(bld_root)/meta/vc10proj \
--o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc12proj.make b/build-0.3/meta/vc12proj.make
deleted file mode 100644
index 7ac3a9a..0000000
--- a/build-0.3/meta/vc12proj.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vc12proj.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vc12proj-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc12sln-functions.make b/build-0.3/meta/vc12sln-functions.make
deleted file mode 100644
index 3900c01..0000000
--- a/build-0.3/meta/vc12sln-functions.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/meta/vc12sln-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ solution template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - template path, if doesn't start with /, assume relative to src_base
-# $2 - output name (optional)
-# $3 - project suffix (-vc12.vcxproj by default)
-# $4-9 - optional pairs of additional varibales and values $4=$5, $6=$7, etc
-#
-$(out_base)/%: meta-vc12sln = \
-$(call meta-vc12sln-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
-$2,$2,$(notdir $1)),$(subst \
-$(src_root),,$(src_base)),$(if $3,$3,-vc12.vcxproj),$4,$5,$6,$7,$8,$9)
-
-# $1 - template
-# $2 - output name
-# $3 - difference between src_base and src_root with leading '\'
-# $4 - project suffix
-# $4-10 - additional varibales
-#
-$(out_base)/%: meta-vc12sln-body = \
-$(call message,meta $(dist_prefix)$3/$2,$(if $5,$5='$6'; export $5; )$(if \
-$7,$7='$8'; export $7; )$(if $9,$9='$(10)'; export $9; )$(bld_root)/meta/vcsln \
--v 12 -b $(dist_prefix)$3 -e '$4' -o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc12sln.make b/build-0.3/meta/vc12sln.make
deleted file mode 100644
index 9e61b93..0000000
--- a/build-0.3/meta/vc12sln.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vc12sln.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vc12sln-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc8proj-functions.make b/build-0.3/meta/vc8proj-functions.make
deleted file mode 100644
index 695405c..0000000
--- a/build-0.3/meta/vc8proj-functions.make
+++ /dev/null
@@ -1,27 +0,0 @@
-# file : build/meta/vc8proj-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ project file template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - template path, if doesn't start with /, assume relative to src_base
-# $2 - output name (optional)
-# $3-8 - optional pairs of additional varibales and values $3=$4, $5=$6, etc
-#
-#
-$(out_base)/%: meta-vc8proj = \
-$(call meta-vc8proj-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
-$2,$2,$(notdir $1)),$(subst $(src_root),,$(src_base)),$3,$4,$5,$6,$7,$8)
-
-# $1 - template
-# $2 - output name
-# $3 - difference between src_base and src_root with leading '\'
-# $4-9 - additional varibales
-#
-$(out_base)/%: meta-vc8proj-body = \
-$(call message,meta $(dist_prefix)$3/$2,$(if $4,$4='$5'; export $4; )$(if \
-$6,$6='$7'; export $6; )$(if $8,$8='$9'; export $8; )$(bld_root)/meta/vc9proj \
--o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc8proj.make b/build-0.3/meta/vc8proj.make
deleted file mode 100644
index 179db17..0000000
--- a/build-0.3/meta/vc8proj.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vc8proj.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vc8proj-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc8sln-functions.make b/build-0.3/meta/vc8sln-functions.make
deleted file mode 100644
index 0391a1c..0000000
--- a/build-0.3/meta/vc8sln-functions.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/meta/vc8sln-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ 8 solution template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - template path, if doesn't start with /, assume relative to src_base
-# $2 - output name (optional)
-# $3 - project suffix (-vc8.vcproj by default)
-# $4-9 - optional pairs of additional varibales and values $4=$5, $6=$7, etc
-#
-$(out_base)/%: meta-vc8sln = \
-$(call meta-vc8sln-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
-$2,$2,$(notdir $1)),$(subst \
-$(src_root),,$(src_base)),$(if $3,$3,-vc8.vcproj),$4,$5,$6,$7,$8,$9)
-
-# $1 - template
-# $2 - output name
-# $3 - difference between src_base and src_root with leading '\'
-# $4 - project suffix
-# $4-10 - additional varibales
-#
-$(out_base)/%: meta-vc8sln-body = \
-$(call message,meta $(dist_prefix)$3/$2,$(if $5,$5='$6'; export $5; )$(if \
-$7,$7='$8'; export $7; )$(if $9,$9='$(10)'; export $9; )$(bld_root)/meta/vcsln \
--v 8 -b $(dist_prefix)$3 -e '$4' -o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc8sln.make b/build-0.3/meta/vc8sln.make
deleted file mode 100644
index 70e0703..0000000
--- a/build-0.3/meta/vc8sln.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vc8sln.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vc8sln-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc9proj b/build-0.3/meta/vc9proj
deleted file mode 100755
index 03130b4..0000000
--- a/build-0.3/meta/vc9proj
+++ /dev/null
@@ -1,75 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/meta/vc9proj
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ 9 project file templates.
-#
-# Options:
-#
-# -o <output-file>
-#
-# Arguments:
-#
-# <template-file>
-#
-trap 'exit 1' ERR
-
-function error ()
-{
- echo "$*" 1>&2
-}
-
-output=
-
-while [ $# -gt 0 ]; do
- case $1 in
- -o)
- output=$2
- shift 2
- ;;
- *)
- break
- ;;
- esac
-done
-
-input=$1
-
-if [ "$input" = "" ]; then
- error "no input file"
- exit 1
-fi
-
-if [ "$output" = "" ]; then
- error "no output file"
- exit 1
-fi
-
-m4=m4
-u2d=todos
-
-# Assume this script is never found via PATH.
-#
-meta=`dirname $0`
-
-build="$meta/.."
-install=$build/install/install
-
-
-# Determine available configurations.
-#
-conf=`sed -n -e \
-'/^[ ]*<Configuration$/{n;s/[ ]*Name="\([^"]*\)"$/"\1",/p};d' $input`
-conf=`echo $conf | sed -e 's/,$//'`
-
-export configurations=$conf
-
-# Make sure the output directory exist.
-#
-$install -d -m 755 `dirname $output`
-
-$m4 -P -D__meta_base__=$meta $meta/vc9proj.m4 $input >$output
-$u2d $output
-chmod 644 $output
diff --git a/build-0.3/meta/vc9proj-functions.make b/build-0.3/meta/vc9proj-functions.make
deleted file mode 100644
index 987cff7..0000000
--- a/build-0.3/meta/vc9proj-functions.make
+++ /dev/null
@@ -1,27 +0,0 @@
-# file : build/meta/vc9proj-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ project file template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - template path, if doesn't start with /, assume relative to src_base
-# $2 - output name (optional)
-# $3-8 - optional pairs of additional varibales and values $3=$4, $5=$6, etc
-#
-#
-$(out_base)/%: meta-vc9proj = \
-$(call meta-vc9proj-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
-$2,$2,$(notdir $1)),$(subst $(src_root),,$(src_base)),$3,$4,$5,$6,$7,$8)
-
-# $1 - template
-# $2 - output name
-# $3 - difference between src_base and src_root with leading '\'
-# $4-9 - additional varibales
-#
-$(out_base)/%: meta-vc9proj-body = \
-$(call message,meta $(dist_prefix)$3/$2,$(if $4,$4='$5'; export $4; )$(if \
-$6,$6='$7'; export $6; )$(if $8,$8='$9'; export $8; )$(bld_root)/meta/vc9proj \
--o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc9proj.m4 b/build-0.3/meta/vc9proj.m4
deleted file mode 100644
index e8d56b4..0000000
--- a/build-0.3/meta/vc9proj.m4
+++ /dev/null
@@ -1,103 +0,0 @@
-m4_divert(-1)
-# file : build/meta/vc9proj.m4
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-m4_changequote([, ])
-
-m4_include(__meta_base__[/common.m4])
-m4_include(__meta_base__[/windows-common.m4])
-
-# file
-#
-m4_define([__file_entry_impl__],[
- <File
- RelativePath=".\[$1]"
- >
- </File>])
-
-m4_define([__file_entry__],
-[m4_equote()__file_entry_impl__([$1])[]m4_dquote()])
-
-
-m4_define([__file_entries_impl__],
-[m4_foreach_w([__f], __path_impl__([$1]), [__file_entry_impl__(__f)])])
-
-m4_define([__file_entries__],
-[m4_equote()__file_entries_impl__([$1])[]m4_dquote()])
-
-# file_custom_build
-#
-m4_define([__custom_build_entry_impl__],[
- <FileConfiguration
- Name=[$1]
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="[$2]"
- CommandLine="[$3]"m4_ifelse([$5], [], [], [
- AdditionalDependencies="$5"])
- Outputs="[$4]"
- />
- </FileConfiguration>])
-
-m4_define([__file_entry_custom_build_impl__],[
- <File
- RelativePath=".\[$1]"
- >m4_dnl
-m4_foreach([__c],
-[__value_impl__([configurations])],
-[__custom_build_entry_impl__(__c, [$2], [$3], [$4], [$5])])
- </File>])
-
-# (file, cmd-description, cmd, output;output[, add-dep;add-dep])
-#
-m4_define([__file_entry_custom_build__],
-[m4_equote()__file_entry_custom_build_impl__([$1],
-[$2], [$3], [$4], [$5])[]m4_dquote()])
-
-
-# source
-#
-
-# $1 - configuration
-# $2 - directory
-#
-m4_define([__source_config_entry_impl__],[
- <FileConfiguration
- Name=[$1]
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\[$2]\"
- />
- </FileConfiguration>])
-
-m4_define([__source_config_impl__],
-[m4_ifelse([$1], [$2], [],
-[m4_foreach([__c],
-[__value_impl__([configurations])],
-[__source_config_entry_impl__(__c, [$1])])])])
-
-m4_define([__source_entry_impl__],[
- <File
- RelativePath=".\[$1]"
- >m4_dnl
-__source_config_impl__(m4_patsubst([$1], [^\(.*\)\\\(.*\)$], [\1]), [$1])
- </File>])
-
-m4_define([__source_entry__],
-[m4_equote()__source_entry_impl__([$1])[]m4_dquote()])
-
-m4_define([__source_entries_impl__],
-[m4_foreach_w([__f], __path_impl__([$1]), [__source_entry_impl__(__f)])])
-
-m4_define([__source_entries__],
-[m4_equote()__source_entries_impl__([$1])[]m4_dquote()])
-
-# Disable comments and quoting.
-#
-m4_changecom([])
-m4_changequote([])
-
-m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/vc9proj.make b/build-0.3/meta/vc9proj.make
deleted file mode 100644
index 03eb2c5..0000000
--- a/build-0.3/meta/vc9proj.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vc9proj.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vc9proj-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc9sln-functions.make b/build-0.3/meta/vc9sln-functions.make
deleted file mode 100644
index 07b03c3..0000000
--- a/build-0.3/meta/vc9sln-functions.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/meta/vc9sln-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ 9 solution template and write output to $(dist_prefix)/<path>.
-# Where path is computed as difference between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - template path, if doesn't start with /, assume relative to src_base
-# $2 - output name (optional)
-# $3 - project suffix (-vc9.vcproj by default)
-# $4-9 - optional pairs of additional varibales and values $4=$5, $6=$7, etc
-#
-$(out_base)/%: meta-vc9sln = \
-$(call meta-vc9sln-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
-$2,$2,$(notdir $1)),$(subst \
-$(src_root),,$(src_base)),$(if $3,$3,-vc9.vcproj),$4,$5,$6,$7,$8,$9)
-
-# $1 - template
-# $2 - output name
-# $3 - difference between src_base and src_root with leading '\'
-# $4 - project suffix
-# $4-10 - additional varibales
-#
-$(out_base)/%: meta-vc9sln-body = \
-$(call message,meta $(dist_prefix)$3/$2,$(if $5,$5='$6'; export $5; )$(if \
-$7,$7='$8'; export $7; )$(if $9,$9='$(10)'; export $9; )$(bld_root)/meta/vcsln \
--v 9 -b $(dist_prefix)$3 -e '$4' -o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc9sln.make b/build-0.3/meta/vc9sln.make
deleted file mode 100644
index 50c6b7b..0000000
--- a/build-0.3/meta/vc9sln.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vc9sln.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vc9sln-functions.make,$(out_base))
diff --git a/build-0.3/meta/vcsln b/build-0.3/meta/vcsln
deleted file mode 100755
index 99aaf47..0000000
--- a/build-0.3/meta/vcsln
+++ /dev/null
@@ -1,181 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/meta/vcsln
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ solution templates.
-#
-# Options:
-#
-# -b <base-dir>
-# -o <output-file>
-# -e <project-ext>
-# -v <vc-version> {8, 9, 10, 11, 12}
-#
-# Arguments:
-#
-# <template-file>
-#
-trap 'exit 1' ERR
-
-function error ()
-{
- echo "$*" 1>&2
-}
-
-base=
-output=
-projext=
-vcver=
-
-while [ $# -gt 0 ]; do
- case $1 in
- -b)
- base=$2
- shift 2
- ;;
- -o)
- output=$2
- shift 2
- ;;
- -e)
- projext=$2
- shift 2
- ;;
- -v)
- vcver=$2
- shift 2
- ;;
- *)
- break
- ;;
- esac
-done
-
-input=$1
-
-if [ "$input" = "" ]; then
- error "no input file"
- exit 1
-fi
-
-if [ "$base" = "" ]; then
- error "no base directory"
- exit 1
-fi
-
-if [ "$output" = "" ]; then
- error "no output file"
- exit 1
-fi
-
-if [ "$projext" = "" ]; then
- error "no VC++ project file extension"
- exit 1
-fi
-
-if [ "$vcver" = "" ]; then
- error "no VC++ version"
- exit 1
-fi
-
-m4=m4
-u2d=todos
-
-# Assume this script is never found via PATH.
-#
-meta=`dirname $0`
-
-build="$meta/.."
-install=$build/install/install
-
-# Find all the project files.
-#
-all_proj_files=`find $base -name '*'$projext`
-
-# Filter out subdirectories which already have solution files.
-#
-proj_files=
-proj_names=
-for f in $all_proj_files; do
- n=`echo "$f" | sed -e "s%^$base/\(.*\)/.*$%\1%"`
-
- # If there is no sub-directory for this project, then use the
- # root directory name.
- #
- if [ "$n" = "$f" ]; then
- n=`basename $base`
- d="."
- else
- d=$n
- fi
-
- while [ "$d" != "." ]; do
- if ls $base/$d/*.sln >/dev/null 2>&1; then
- break
- fi
- d=`dirname $d`
- done
-
- # If we din't find any solutions, then add this file to the list.
- #
- if [ "$d" = "." ]; then
- proj_names="$proj_names $n"
- proj_files="$proj_files $f"
- fi
-done
-
-# Determine available configurations and project uuids.
-#
-conf=
-proj_uuids=
-for f in $proj_files; do
-
- if [ "$conf" = "" ]; then
- if [ "$vcver" = "8" -o "$vcver" = "9" ]; then
- conf=`cat $f | fromdos | sed -n -e \
- '/^[ ]*<Configuration$/{n;s/[ ]*Name="\([^"]*\)"$/"\1",/p};d' -`
- conf=`echo $conf | sed -e 's/,$//'`
- else
- conf=`cat $f | fromdos | sed -n -e \
- 's/^[ ]*<ProjectConfiguration Include="\([^"]*\)">$/"\1",/p;d' -`
- conf=`echo $conf | sed -e 's/,$//'`
- fi
- fi
-
- if [ "$vcver" = "8" -o "$vcver" = "9" ]; then
- uuid=`cat $f | fromdos | sed -n -e \
- 's/^[ ]*ProjectGUID="{\([^}]*\)}"$/\1/p;d'`
- else
- uuid=`cat $f | fromdos | sed -n -e \
- 's/^[ ]*<ProjectGuid>{\([^}]*\)}<\/ProjectGuid>$/\1/p;d'`
- fi
-
- if [ "$proj_uuids" = "" ]; then
- proj_uuids=$uuid
- else
- proj_uuids="$proj_uuids $uuid"
- fi
-done
-
-proj_files=`echo $proj_files | sed -e "s%$base/%%g"`
-proj_names=`echo $proj_names | sed -e "s%/%-%g"`
-
-#error $proj_files
-#error $proj_names
-#error $proj_uuids
-#error $conf
-
-export configurations=$conf
-export project_files=$proj_files
-export project_names=$proj_names
-export project_uuids=$proj_uuids
-
-# Make sure the output directory exist.
-#
-$install -d -m 755 `dirname $output`
-
-$m4 -P -D__meta_base__=$meta $meta/vcsln.m4 $input >$output
-$u2d $output
-chmod 644 $output
diff --git a/build-0.3/meta/vcsln.m4 b/build-0.3/meta/vcsln.m4
deleted file mode 100644
index 2299bac..0000000
--- a/build-0.3/meta/vcsln.m4
+++ /dev/null
@@ -1,82 +0,0 @@
-m4_divert(-1)
-# file : build/meta/vcsln.m4
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-m4_changequote([, ])
-
-m4_include(__meta_base__[/common.m4])
-m4_include(__meta_base__[/windows-common.m4])
-
-# solution_configuration
-#
-m4_define([__solution_configuration_entry_impl__], [ [$1] = [$1]])
-
-m4_define([__solution_configurations_impl__],
- [m4_foreach([__c],
- [__value_impl__([configurations])],
- [__solution_configuration_entry_impl__(m4_patsubst(__c, ["], []))
-])])
-
-m4_define([__solution_configurations__],
- [m4_equote()__solution_configurations_impl__()[]m4_dquote()])
-
-# project_configuration
-#
-m4_define([__project_configuration_entry_item_impl__],
-[ {[$1]}.[$2].ActiveCfg = [$2]
- {[$1]}.[$2].Build.0 = [$2]])
-
-m4_define([__project_configuration_entry_impl__],
- [m4_foreach(
- [__c],
- [__value_impl__([configurations])],
- [__project_configuration_entry_item_impl__([$1], m4_patsubst(__c, ["], []))
-])])
-
-m4_define([__project_configurations_impl__],
- [m4_foreach_w(
- [__u],
- [__value_impl__([project_uuids])],
- [__project_configuration_entry_impl__(__u)])])
-
-m4_define([__project_configurations__],
- [m4_equote()__project_configurations_impl__()[]m4_dquote()])
-
-# project_entry(name, file, uuid)
-#
-m4_define([__project_entry_impl__],
-[Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "[$1]", "[$2]", "{[$3]}"
-EndProject])
-
-m4_define([__project_entry__],
- [m4_equote()__project_entry_impl__([$1], [$2], [$3])[]m4_dquote()])
-
-# projects
-#
-m4_define([__project_step_impl__],
-[__project_entry_impl__(
- m4_substr([$1], 0, m4_ifelse(m4_index([$1], [ ]), [-1], [m4_len([$1])], [m4_index([$1], [ ])])),
- m4_substr([$2], 0, m4_ifelse(m4_index([$2], [ ]), [-1], [m4_len([$2])], [m4_index([$2], [ ])])),
- m4_substr([$3], 0, m4_ifelse(m4_index([$3], [ ]), [-1], [m4_len([$3])], [m4_index([$3], [ ])])))[]m4_dnl
-m4_ifelse(m4_index([$1], [ ]), [-1],, [
-__project_step_impl__(
- m4_substr([$1], m4_incr(m4_index([$1], [ ]))),
- m4_substr([$2], m4_incr(m4_index([$2], [ ]))),
- m4_substr([$3], m4_incr(m4_index([$3], [ ]))))])])
-
-m4_define([__projects_impl__],
-[__project_step_impl__(
- __value_impl__([project_names]),
- __path_impl__([project_files]),
- __value_impl__([project_uuids]))])
-
-m4_define([__projects__],
- [m4_equote()__projects_impl__()[]m4_dquote()])
-
-# Disable comments and quoting.
-#
-m4_changecom([])
-m4_changequote([])
-
-m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/vctest b/build-0.3/meta/vctest
deleted file mode 100755
index 0502364..0000000
--- a/build-0.3/meta/vctest
+++ /dev/null
@@ -1,143 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/meta/vctest
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ test templates.
-#
-# Options:
-#
-# -b <base-dir>
-# -r <root-dir>
-# -o <output-file>
-# -t <template-file>
-#
-# Arguments:
-#
-# <solution-files>
-#
-trap 'exit 1' ERR
-
-function error ()
-{
- echo "$*" 1>&2
-}
-
-base=
-root=
-output=
-sln=
-input=
-
-while [ $# -gt 0 ]; do
- case $1 in
- -b)
- base=$2
- shift 2
- ;;
- -r)
- root=$2
- shift 2
- ;;
- -o)
- output=$2
- shift 2
- ;;
- -t)
- input=$2
- shift 2
- ;;
- *)
- sln="$sln $1"
- shift
- ;;
- esac
-done
-
-
-if [ "$input" = "" ]; then
- error "no template file"
- exit 1
-fi
-
-if [ "$base" = "" ]; then
- error "no base directory"
- exit 1
-fi
-
-if [ "$root" = "" ]; then
- error "no root directory"
- exit 1
-fi
-
-if [ "$output" = "" ]; then
- error "no output file"
- exit 1
-fi
-
-if [ "$sln" = "" ]; then
- error "no solution file"
- exit 1
-fi
-
-
-m4=m4
-u2d=todos
-
-# Assume this script is never found via PATH.
-#
-meta=`dirname $0`
-
-build="$meta/.."
-install=$build/install/install
-
-# Figure out topdir
-#
-if [ "$base" = "$root" ]; then
- topdir=.
-else
- topdir=`echo $base | sed -e "s%^$root/%%" - | \
-sed -e 's%[^/][^/]*/%../%g;s%[^./][^./]*$%..%' -`
-fi
-
-#
-
-# Determine possible configurations.
-#
-for f in $sln; do
- sln_conf=`cat $f | fromdos | sed -n -e \
-'/^[ ]*GlobalSection(SolutionConfigurationPlatforms).*$/{\
-: loop;\
-n;\
-/^[ ]*EndGlobalSection$/q;\
-s/^[ ]*\([^=]*\) = \([^=]*\)$/\1/p;\
-b loop};\
-d' -`
- break
-done
-
-confs=
-plats=
-for c in $sln_conf; do
- conf=`echo $c | sed -e 's/^\(.*\)|.*$/\1/'`
- plat=`echo $c | sed -e 's/^.*|\(.*\)$/\1/'`
-
- confs="$confs $conf"
- plats="$plats $plat"
-done
-
-confs=`echo $confs | sed -e 's/ /\n/g' - | sort -u`
-plats=`echo $plats | sed -e 's/ /\n/g' - | sort -u`
-
-export topdir
-export configurations=$confs
-export platforms=$plats
-
-# Make sure the output directory exist.
-#
-$install -d -m 755 `dirname $output`
-
-$m4 -P -D__meta_base__=$meta $meta/vctest.m4 $input >$output
-$u2d $output
-chmod 644 $output
diff --git a/build-0.3/meta/vctest-functions.make b/build-0.3/meta/vctest-functions.make
deleted file mode 100644
index e67945b..0000000
--- a/build-0.3/meta/vctest-functions.make
+++ /dev/null
@@ -1,28 +0,0 @@
-# file : build/meta/vctest-functions.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Process VC++ solution and test template and write output to
-# $(dist_prefix)/<path>. Where path is computed as difference
-# between src_base and src_root.
-#
-# Arguments:
-#
-# $1 - solution path, if doens't start with /, assume relative to
-# dist_prefix/<path>
-# $2 - template path, if doesn't start with /, assume relative to src_base
-# $3 - output name (optional)
-#
-$(out_base)/%: meta-vctest = \
-$(call meta-vctest-body,$1,$(if $(filter /%,$2),$2,$(src_base)/$2),$(if \
-$3,$3,$(notdir $2)),$(subst $(src_root),,$(src_base)))
-
-# $1 - solution
-# $2 - template
-# $3 - output name
-# $4 - difference between src_base and src_root with leading '\'
-#
-$(out_base)/%: meta-vctest-body = \
-$(call message,meta $(dist_prefix)$4/$3,$(bld_root)/meta/vctest \
--r $(dist_prefix) -b $(dist_prefix)$4 -t $2 -o $(dist_prefix)$4/$3 \
-$(if $(filter /%,$1),$1,$(dist_prefix)$4/$1))
diff --git a/build-0.3/meta/vctest.m4 b/build-0.3/meta/vctest.m4
deleted file mode 100644
index 724a0fc..0000000
--- a/build-0.3/meta/vctest.m4
+++ /dev/null
@@ -1,17 +0,0 @@
-m4_divert(-1)
-# file : build/meta/vctest.m4
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-m4_changequote([, ])
-
-m4_include(__meta_base__[/common.m4])
-m4_include(__meta_base__[/windows-common.m4])
-
-
-# Disable comments and quoting.
-#
-m4_changecom([])
-m4_changequote([])
-
-m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/vctest.make b/build-0.3/meta/vctest.make
deleted file mode 100644
index 1cf336c..0000000
--- a/build-0.3/meta/vctest.make
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : build/meta/vctest.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/meta/vctest-functions.make,$(out_base))
diff --git a/build-0.3/meta/windows-common.m4 b/build-0.3/meta/windows-common.m4
deleted file mode 100644
index 700f8e8..0000000
--- a/build-0.3/meta/windows-common.m4
+++ /dev/null
@@ -1,49 +0,0 @@
-# file : build/meta/windows-common.m4
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-m4_define([__path_impl__], [m4_translit(__env_impl__([$1]),[/],[\])])
-m4_define([__path__], [m4_equote()__path_impl__([$1])[]m4_dquote()])
-
-m4_define([__file_impl__], [__env_impl__([$1])])
-m4_define([__file__], [m4_equote()__file_impl__([$1])[]m4_dquote()])
-
-# Convert POSIX shell quoting to Windows. Arguments that are in
-# single quotes (') are converted to double quotes ("). Double
-# quotes that are nested in single quotes are converted to \".
-# Quote escaping is not recognized. Single-quoted arguments
-# should be quoted as a whole, for example 'foo-bar' and not
-# foo-'bar'.
-#
-
-m4_define([__shell_quotes_convert_impl__], [m4_patsubst([$1], ["], [\\"])])
-
-# $1 string without the opening quote
-# $2 index of the closing quote
-#
-m4_define([__shell_quotes_in_quote_impl__],
-["__shell_quotes_convert_impl__(m4_substr([$1], [0], [$2]))"[]m4_dnl
- __shell_quotes_impl__(m4_substr([$1], m4_incr([$2])))])
-
-# $1 string without the leading space
-# $2 index of the next space or -1
-#
-m4_define([__shell_quotes_in_space_impl__],
-[m4_substr([$1], [0], m4_ifelse([$2], [-1], [m4_len([$1])], [$2]))[]m4_dnl
-m4_ifelse(
- [$2], [-1],
- [],
- [ __shell_quotes_impl__(m4_substr([$1], m4_incr([$2])))])])
-
-#
-#
-m4_define([__shell_quotes_impl__],
-[m4_ifelse(
- m4_index([$1], [']), [0],
- [__shell_quotes_in_quote_impl__(
- m4_substr([$1], [1]),
- m4_index(m4_substr([$1], [1]), [']))],
- [__shell_quotes_in_space_impl__([$1], m4_index([$1], [ ]))])])
-
-m4_define([__shell_quotes__],
-[m4_equote()__shell_quotes_impl__([$1])[]m4_dquote()])
diff --git a/build-0.3/run-if-arg b/build-0.3/run-if-arg
deleted file mode 100755
index 1076b46..0000000
--- a/build-0.3/run-if-arg
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/run-if-arg
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# Run command if there are any non-empty arguments.
-#
-# $1 command to execute
-# $2 argument to test
-
-cmd=$1
-shift
-
-if [ "$*" ]; then
- exec $cmd $*
-fi
diff --git a/build-0.3/system.make b/build-0.3/system.make
deleted file mode 100644
index 3a9c051..0000000
--- a/build-0.3/system.make
+++ /dev/null
@@ -1,13 +0,0 @@
-# file : build/system.make
-# copyright : Copyright (c) 2006-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(bld_root)/system/configuration-rules.make,$(dcf_root))
-
-$(call -include,$(dcf_root)/system/configuration-dynamic.make)
-
-ifndef system_configuration
-
-.NOTPARALLEL:
-
-endif
diff --git a/build-0.3/system/config.guess b/build-0.3/system/config.guess
deleted file mode 100755
index e792aac..0000000
--- a/build-0.3/system/config.guess
+++ /dev/null
@@ -1,1494 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-# Free Software Foundation, Inc.
-
-timestamp='2009-09-18'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner. Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- sh5el) machine=sh5le-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ELF__
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit ;;
- *:SolidBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
- exit ;;
- macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
- # OSF/1 and Tru64 systems produced since 1995. I hope that
- # covers most systems running today. This code pipes the CPU
- # types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
- "EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
- "EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
- "LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
- "EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
- "EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
- "EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
- "EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
- "EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
- "EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
- "EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
- "EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
- "EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
- *:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
- *:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
- DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
- s390x:SunOS:*:*)
- echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval $set_cc_for_build
- SUN_ARCH="i386"
- # If there is a compiler, see if it is configured for 64-bit objects.
- # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
- # This test works for both compilers.
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- SUN_ARCH="x86_64"
- fi
- fi
- echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
- exit ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
- Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
- then
- echo "$SYSTEM_NAME"
- else
- echo rs6000-ibm-aix3.2.5
- fi
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit ;;
- *:AIX:*:[456])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
- then
- eval $set_cc_for_build
-
- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
- # generating 64-bit code. GNU and HP use different nomenclature:
- #
- # $ CC_FOR_BUILD=cc ./config.guess
- # => hppa2.0w-hp-hpux11.23
- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
- # => hppa64-hp-hpux11.23
-
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep -q __LP64__
- then
- HP_ARCH="hppa2.0w"
- else
- HP_ARCH="hppa64"
- fi
- fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- *:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- amd64)
- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- *)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- esac
- exit ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
- *:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
- exit ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit ;;
- *:Interix*:[3456]*)
- case ${UNAME_MACHINE} in
- x86)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
- EM64T | authenticamd | genuineintel)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
- IA64)
- echo ia64-unknown-interix${UNAME_RELEASE}
- exit ;;
- esac ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- 8664:Windows_NT:*)
- echo x86_64-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit ;;
- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- *:GNU:*:*)
- # the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
- arm*:Linux:*:*)
- eval $set_cc_for_build
- if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_EABI__
- then
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
- fi
- exit ;;
- avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- cris:Linux:*:*)
- echo cris-axis-linux-gnu
- exit ;;
- crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
- exit ;;
- frv:Linux:*:*)
- echo frv-unknown-linux-gnu
- exit ;;
- i*86:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-gnu
- exit ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- mips:Linux:*:* | mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- or32:Linux:*:*)
- echo or32-unknown-linux-gnu
- exit ;;
- padre:Linux:*:*)
- echo sparc-unknown-linux-gnu
- exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit ;;
- sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
- exit ;;
- x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit ;;
- xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit ;;
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit ;;
- i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i586.
- # Note: whatever this is, it MUST be the same as what config.sub
- # prints for the "djgpp" host, or else GDB configury will decide that
- # this is a cross-build.
- echo i586-pc-msdosdjgpp
- exit ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
- M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
- M68*:*:R3V[5678]*:*)
- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
- NCR*:*:4.2:* | MPRAS*:*:4.2:*)
- OS_REL='.3'
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
- i*86:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
- exit ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
- BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux${UNAME_RELEASE}
- exit ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- i386)
- eval $set_cc_for_build
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- UNAME_PROCESSOR="x86_64"
- fi
- fi ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = "386"; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
- SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
- exit ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
- esac ;;
- *:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
- i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
- exit ;;
- i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
- exit ;;
- i*86:AROS:*:*)
- echo ${UNAME_MACHINE}-pc-aros
- exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/build-0.3/system/config.sub b/build-0.3/system/config.sub
deleted file mode 100755
index 5ecc18b..0000000
--- a/build-0.3/system/config.sub
+++ /dev/null
@@ -1,1700 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-# Free Software Foundation, Inc.
-
-timestamp='2009-10-07'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit ;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze)
- os=
- basic_machine=$1
- ;;
- -bluegene*)
- os=-cnk
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
- | bfin \
- | c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | fido | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64octeon | mips64octeonel \
- | mips64orion | mips64orionel \
- | mips64r5900 | mips64r5900el \
- | mips64vr | mips64vrel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | moxie \
- | mt \
- | msp430 \
- | nios | nios2 \
- | ns16k | ns32k \
- | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
- | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
- | v850 | v850e \
- | we32k \
- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
- | z8k | z80)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12 | picochip)
- # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
- ms1)
- basic_machine=mt-unknown
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64octeon-* | mips64octeonel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64r5900-* | mips64r5900el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nios-* | nios2-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* | rx-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
- | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa*-* \
- | ymp-* \
- | z8k-* | z80-*)
- ;;
- # Recognize the basic CPU types without company name, with glob match.
- xtensa*)
- basic_machine=$basic_machine-unknown
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aros)
- basic_machine=i386-pc
- os=-aros
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- os=-linux
- ;;
- blackfin-*)
- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- bluegene*)
- basic_machine=powerpc-ibm
- os=-cnk
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- cegcc)
- basic_machine=arm-unknown
- os=-cegcc
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16)
- basic_machine=cr16-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- os=-dicos
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- os=-linux
- ;;
- m68knommu-*)
- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- microblaze)
- basic_machine=microblaze-xilinx
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- os=-mingw32ce
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- os=-linux
- ;;
- parisc-*)
- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
- ;;
- pc98-*)
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rdos)
- basic_machine=i386-pc
- os=-rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
- sde)
- basic_machine=mipsisa32-sde
- os=-elf
- ;;
- sei)
- basic_machine=mips-sei
- os=-seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sh5el)
- basic_machine=sh5le-unknown
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
- tile*)
- basic_machine=tile-unknown
- os=-linux-gnu
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- z80-*-coff)
- basic_machine=z80-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -kopensolaris* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto-qnx*)
- ;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -os400*)
- os=-os400
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -syllable*)
- os=-syllable
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -tpf*)
- os=-tpf
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -aros*)
- os=-aros
- ;;
- -kaos*)
- os=-kaos
- ;;
- -zvmoe)
- os=-zvmoe
- ;;
- -dicos*)
- os=-dicos
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- score-*)
- os=-elf
- ;;
- spu-*)
- os=-elf
- ;;
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mep-*)
- os=-elf
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-haiku)
- os=-haiku
- ;;
- *-ibm)
- os=-aix
- ;;
- *-knuth)
- os=-mmixware
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -cnk*|-aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -tpf*)
- vendor=ibm
- ;;
- -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/build-0.3/system/configuration-rules.make b/build-0.3/system/configuration-rules.make
deleted file mode 100644
index 3af4514..0000000
--- a/build-0.3/system/configuration-rules.make
+++ /dev/null
@@ -1,23 +0,0 @@
-# file : build/system/configuration-rules.make
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-
-$(dcf_root)/system/configuration-dynamic.make: | $(dcf_root)/system/.
- $(call message,,$(bld_root)/system/configure $@)
-
-ifeq ($(.DEFAULT_GOAL),$(dcf_root)/system/configuration-dynamic.make)
-.DEFAULT_GOAL :=
-endif
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/system/configuration-dynamic.make,\
-rm -f $(dcf_root)/system/configuration-dynamic.make)
-
-ifeq ($(.DEFAULT_GOAL),$(dcf_root)/.disfigure)
-.DEFAULT_GOAL :=
-endif
-
-endif
diff --git a/build-0.3/system/configure b/build-0.3/system/configure
deleted file mode 100755
index 3c1b968..0000000
--- a/build-0.3/system/configure
+++ /dev/null
@@ -1,137 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/system/configure
-# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
-# license : GNU GPL v2; see accompanying LICENSE file
-
-# $1 out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-# Build system.
-#
-
-build=`$bld_root/system/config.guess`
-
-if [ $? != 0 ]; then
-
- $echo "unable to determine build system type"
- exit 1
-fi
-
-$echo "build system is $build"
-
-build_cpu=`echo $build | cut -f 1 -d -`
-build_mf=`echo $build | cut -f 2 -d -`
-build_kernel=`echo $build | cut -f 3 -d -`
-build_os=`echo $build | cut -f 4 -d -`
-
-if [ -z "$build_os" ]; then
-
- # Old format: cpu-mf-os
- #
- build_os=$build_kernel
- build_kernel=
-fi
-
-
-# Host system.
-#
-
-if [ -n "$host_system" ]; then
-
- host=`$bld_root/system/config.sub "$host_system"`
-
- if [ $? != 0 ]; then
-
- $echo "unable to canonicalize host system '$host_system'"
- exit 1
- fi
-else
- host=$build
-fi
-
-$echo "host system is $host"
-
-host_cpu=`echo $host | cut -f 1 -d -`
-host_mf=`echo $host | cut -f 2 -d -`
-host_kernel=`echo $host | cut -f 3 -d -`
-host_os=`echo $host | cut -f 4 -d -`
-
-if [ -z "$host_os" ]; then
-
- # Old format: cpu-mf-os
- #
- host_os=$host_kernel
- host_kernel=
-fi
-
-
-# Target system.
-#
-if [ -n "$target_system" ]; then
-
- target=`$bld_root/system/config.sub "$target_system"`
-
- if [ $? != 0 ]; then
-
- $echo "unable to canonicalize target system '$target_system'"
- exit 1
- fi
-
- $echo "target system is $target"
-
- target_cpu=`echo $target | cut -f 1 -d -`
- target_mf=`echo $target | cut -f 2 -d -`
- target_kernel=`echo $target | cut -f 3 -d -`
- target_os=`echo $target | cut -f 4 -d -`
-
- if [ -z "$target_os" ]; then
-
- # Old format: cpu-mf-os
- #
- target_os=$target_kernel
- target_kernel=
- fi
-
-else
-target=
-target_cpu=
-target_mf=
-target_kernel=
-target_os=
-fi
-
-
-
-# Write the configuration out.
-#
-echo "system_configuration := y" >$1
-echo >>$1
-echo "build_system := $build" >>$1
-echo "build_cpu := $build_cpu" >>$1
-echo "build_manufacturer := $build_mf" >>$1
-echo "build_os := $build_os" >>$1
-echo "build_kernel := $build_kernel" >>$1
-echo >>$1
-echo "host_system := $host" >>$1
-echo "host_cpu := $host_cpu" >>$1
-echo "host_manufacturer := $host_mf" >>$1
-echo "host_os := $host_os" >>$1
-echo "host_kernel := $host_kernel" >>$1
-echo >>$1
-echo "target_system := $target" >>$1
-echo "target_cpu := $target_cpu" >>$1
-echo "target_manufacturer := $target_mf" >>$1
-echo "target_os := $target_os" >>$1
-echo "target_kernel := $target_kernel" >>$1
diff --git a/build/bootstrap.build b/build/bootstrap.build
new file mode 100644
index 0000000..6c0d4ab
--- /dev/null
+++ b/build/bootstrap.build
@@ -0,0 +1,10 @@
+# file : build/bootstrap.build
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+project = xsd
+
+using version
+using config
+using test
+using dist
+using install
diff --git a/build/export.build b/build/export.build
new file mode 100644
index 0000000..68ffad0
--- /dev/null
+++ b/build/export.build
@@ -0,0 +1,9 @@
+# file : build/export.build
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+$out_root/
+{
+ include xsd/
+}
+
+export $out_root/xsd/exe{xsd}
diff --git a/build/root.build b/build/root.build
new file mode 100644
index 0000000..cf9d6a6
--- /dev/null
+++ b/build/root.build
@@ -0,0 +1,37 @@
+# file : build/root.build
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+config [bool] config.xsd.develop ?= false
+
+develop = $config.xsd.develop
+
+define cli: file
+cli{*}: extension = cli
+
+using in
+
+cxx.std = latest
+
+using cxx
+
+hxx{*}: extension = hxx
+ixx{*}: extension = ixx
+txx{*}: extension = txx
+cxx{*}: extension = cxx
+
+if ($cxx.target.system == 'win32-msvc')
+ cxx.poptions += -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS
+
+if ($cxx.class == 'msvc')
+ cxx.coptions += /wd4251 /wd4275 /wd4800
+
+cxx.poptions =+ "-I$out_root" "-I$src_root"
+
+# Extract the copyright notice from the LICENSE file.
+#
+# Note that cat is a builtin which means this is both portable and fast.
+#
+if ($build.mode != 'skeleton')
+ copyright = $process.run_regex(cat $src_root/LICENSE, \
+ 'Copyright \(c\) (.+)\.', \
+ '\1')
diff --git a/buildfile b/buildfile
new file mode 100644
index 0000000..b0121dd
--- /dev/null
+++ b/buildfile
@@ -0,0 +1,11 @@
+# file : buildfile
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+./: {*/ -build/} \
+ doc{README.md PACKAGE-README.md NEWS} \
+ legal{GPLv2 LICENSE FLOSSE} \
+ manifest
+
+# Don't install tests.
+#
+tests/: install = false
diff --git a/doc/buildfile b/doc/buildfile
new file mode 100644
index 0000000..3d2b949
--- /dev/null
+++ b/doc/buildfile
@@ -0,0 +1,293 @@
+# file : doc/buildfile
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+define css: doc
+css{*}: extension = css
+
+define xsd: doc
+xsd{*}: extension = xsd
+
+define xhtml: doc
+xhtml{*}: extension = xhtml
+
+define ps: doc
+ps{*}: extension = ps
+
+define pdf: doc
+pdf{*}: extension = pdf
+
+define html2ps: file
+html2ps{*}: extension = html2ps
+
+define png: doc
+png{*}: extension = png
+
+define svg: file
+svg{*}: extension = svg
+
+./: css{default} xsd{custom-literals} {png svg}{**}
+
+# Man pages.
+#
+
+## Consumption build ($develop == false).
+#
+
+# Use pregenerated versions in the consumption build.
+#
+./: pregenerated/{man1 xhtml}{*}: include = (!$develop)
+
+# Distribute pregenerated versions only in the consumption build.
+#
+pregenerated/{man1 xhtml}{*}: dist = (!$develop)
+
+#
+##
+
+## Development build ($develop == true).
+#
+
+./: {man1 xhtml}{xsd}: include = $develop
+
+if $develop
+{
+ doc_version = [string] "$version.major.$version.minor.$version.patch"
+ if $version.pre_release
+ doc_version += "-$version.pre_release_string"
+
+ # Let's take the last four-digit number to cover 2000-2021,2022.
+ #
+ doc_year = $regex.replace($copyright, '.+[-, ]([0-9][0-9][0-9][0-9]) .+', '\1')
+
+ man_options = -v project="XSD" \
+ -v version="$doc_version" \
+ -v copyright="$copyright" \
+ -I $src_root \
+ --stdout \
+ --suppress-undocumented \
+ --exclude-base
+
+ import! [metadata] cli = cli%exe{cli}
+}
+
+# In the development build distribute regenerated versions, remapping their
+# locations to the paths of the pregenerated versions (which are only
+# distributed in the consumption build; see above). This way we make sure that
+# the distributed files are always up-to-date.
+#
+{man1 xhtml}{xsd}: dist = ($develop ? pregenerated/ : false)
+
+ops = ../xsd/cli{options cxx/options cxx/tree/options cxx/parser/options}
+
+man1{xsd}: $ops \
+ file{xsd-prologue.1 \
+ xsd-tree-header.1 \
+ xsd-parser-header.1 \
+ xsd-epilogue.1} \
+ $cli
+%
+if $develop
+{{
+ o = $path($>)
+
+ # Use the copyright year to approximate the last authoring date.
+ #
+ $cli --generate-man $man_options \
+ -v date="January $doc_year" \
+ --class CXX::options \
+ --class options \
+ --man-prologue-file $path($<[4]) \
+ $path($<[1]) >$o
+
+ $cli --generate-man $man_options \
+ -v date="January $doc_year" \
+ --man-prologue-file $path($<[5]) \
+ $path($<[2]) >>$o
+
+ $cli --generate-man $man_options \
+ -v date="January $doc_year" \
+ --man-prologue-file $path($<[6]) \
+ --man-epilogue-file $path($<[7]) \
+ $path($<[3]) >>$o
+
+ # If the result differs from the pregenerated version, copy it over.
+ #
+ if! diff $src_base/pregenerated/xsd.1 $o >-
+ cp $o $src_base/pregenerated/xsd.1
+ end
+}}
+
+xhtml{xsd}: $ops \
+ file{xsd-prologue.xhtml \
+ xsd-tree-header.xhtml \
+ xsd-parser-header.xhtml \
+ xsd-epilogue.xhtml} \
+ $cli
+%
+if $develop
+{{
+ o = $path($>)
+
+ $cli --generate-html $man_options \
+ -v date="January $doc_year" \
+ --class CXX::options \
+ --class options \
+ --html-prologue-file $path($<[4]) \
+ $path($<[1]) >$o
+
+ $cli --generate-html $man_options \
+ -v date="January $doc_year" \
+ --html-prologue-file $path($<[5]) \
+ $path($<[2]) >>$o
+
+ $cli --generate-html $man_options \
+ -v date="January $doc_year" \
+ --html-prologue-file $path($<[6]) \
+ --html-epilogue-file $path($<[7]) \
+ $path($<[3]) >>$o
+
+ if! diff $src_base/pregenerated/xsd.xhtml $o >-
+ cp $o $src_base/pregenerated/xsd.xhtml
+ end
+}}
+
+#
+##
+
+# Manuals/guides.
+#
+# This case is slightly more involved because we make the generation of the
+# manuals/guides ps/pdf files optional and also don't keep the result in the
+# repository. Specifically:
+#
+# 1. In the consumption build we will install/redistribute ps/pdf if present.
+#
+# 2. In the development build we will generate ps/pdf if we are able to import
+# the needed tools, issuing a warning otherwise.
+#
+# 3. We generate manuals/guides xhtml files from the templates and distribute
+# them.
+
+manuals = cxx/parser/guide/index cxx/tree/guide/index cxx/tree/manual/index
+
+for m: $manuals
+{
+ ./: xhtml{$m}: in{$m}
+ {
+ in.symbol = '@'
+
+ dist = true
+ clean = ($src_root != $out_root)
+ }
+}
+
+## Consumption build ($develop == false).
+#
+
+# Use pregenerated versions, if exist, in the consumption build.
+#
+./: pregenerated/{ps pdf}{**}: include = (!$develop)
+
+# Distribute pregenerated versions only in the consumption build.
+#
+pregenerated/{ps pdf}{*}: dist = (!$develop)
+
+#
+##
+
+## Development build ($develop == true).
+#
+
+html2pdf = false
+
+if $develop
+{
+ # Import the html2ps and ps2pdf programs from the system, if available.
+ #
+ import? html2ps = html2ps%exe{html2ps}
+ import? ps2pdf = ps2pdf14%exe{ps2pdf14}
+
+ html2pdf = ($html2ps != [null] && $ps2pdf != [null])
+
+ if! $html2pdf
+ warn "html2ps and/or ps2pdf14 are not available, not generating .ps and .pdf documentation"
+}
+
+for m: $manuals
+{
+ d = $directory($m) # cxx/parser/guide/, etc
+ p = "$leaf($directory($d))" # parser, tree
+ l = "$leaf($d)" # guide, manual
+ f = "cxx-$p-$l" # cxx-parser-guide, etc
+
+ pf = $d/$f # cxx/parser/guide/cxx-parser-guide, etc
+ cf = $d/$l # cxx/parser/guide/guide, etc
+
+ ./: {ps pdf}{$pf}: include = $html2pdf
+
+ # In the development build distribute regenerated versions, remapping their
+ # locations to the paths of the pregenerated versions (which are only
+ # distributed in the consumption build; see above). This way we make sure
+ # that the distributed files are always up-to-date.
+ #
+ {ps pdf}{$pf}: \
+ dist = ($html2pdf ? $relative([dir_path] "pregenerated/$d", $d) : false)
+
+ pdf{$pf}: ps{$pf}: xhtml{$m} html2ps{$cf}
+
+ html2ps{$cf}: in{$cf}
+ {
+ in.symbol = '@'
+ }
+}
+
+# Note: the pregenerated file may not exist, thus --no-cleanup option is
+# required for the mkdir and cp builtin calls. Strictly speaking we don't
+# really need to copy them since they are not stored in the repository, but
+# let's do that for consistency with the distributed source tree.
+#
+ps{~'/cxx-.+-(.+)/'}: xhtml{~'/index/'} html2ps{~'/\1/'} $html2ps
+%
+if $html2pdf
+{{
+ # cxx/parser/guide/, etc
+ #
+ d = [dir_path] $leaf($directory($path($>[0])), $out_base)
+
+ # Note: --base must include trailing directory separator.
+ #
+ options = --base $src_base/$d
+
+ diag html2ps ($<[0]) -> $>
+ $html2ps $options -f $path($<[1]) -o $path($>) $path($<[0])
+
+ # Note: must include trailing directory separator (see cp for details).
+ #
+ d = $src_base/pregenerated/$d
+
+ mkdir -p --no-cleanup $d
+ cp --no-cleanup $path($>) $d
+}}
+
+pdf{~'/(cxx-.+-.+)/'}: ps{~'/\1/'} $ps2pdf
+%
+if $html2pdf
+{{
+ options = -dOptimize=true -dEmbedAllFonts=true
+
+ diag ps2pdf ($<[0]) -> $>
+ $ps2pdf $options $path($<[0]) $path($>)
+
+ # Note: must include trailing directory separator (see cp for details).
+ #
+ d = $src_base/pregenerated/$leaf($directory($path($>[0])), $out_base)
+
+ mkdir -p --no-cleanup $d
+ cp --no-cleanup $path($>) $d
+}}
+
+#
+##
+
+doc{*}: install.subdirs = true
+pregenerated/doc{*}: install.subdirs = true
diff --git a/xsd/doc/custom-literals.xsd b/doc/custom-literals.xsd
index c6f7613..c6f7613 100644
--- a/xsd/doc/custom-literals.xsd
+++ b/doc/custom-literals.xsd
diff --git a/xsd/doc/cxx/parser/guide/figure-1.png b/doc/cxx/parser/guide/figure-1.png
index 15d1723..15d1723 100644
--- a/xsd/doc/cxx/parser/guide/figure-1.png
+++ b/doc/cxx/parser/guide/figure-1.png
Binary files differ
diff --git a/xsd/doc/cxx/parser/guide/figure-1.svg b/doc/cxx/parser/guide/figure-1.svg
index d994a79..d994a79 100644
--- a/xsd/doc/cxx/parser/guide/figure-1.svg
+++ b/doc/cxx/parser/guide/figure-1.svg
diff --git a/doc/cxx/parser/guide/guide.html2ps.in b/doc/cxx/parser/guide/guide.html2ps.in
new file mode 100644
index 0000000..8131487
--- /dev/null
+++ b/doc/cxx/parser/guide/guide.html2ps.in
@@ -0,0 +1,65 @@
+@@html2ps {
+ option {
+ toc: hb;
+ colour: 1;
+ hyphenate: 1;
+ titlepage: 1;
+ }
+
+ datefmt: "%B %Y";
+
+ titlepage {
+ content: "
+<div align=center>
+ <h1><big>C++/Parser Mapping</big></h1>
+ <h1><big>Getting Started Guide</big></h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+</div>
+ <p>Copyright &#169; @copyright@.</p>
+
+ <p>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href='https://www.codesynthesis.com/licenses/fdl-1.2.txt'>GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href='https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/index.xhtml'>XHTML</a>,
+ <a href='https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.pdf'>PDF</a>, and
+ <a href='https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.ps'>PostScript</a>.</p>";
+ }
+
+ toc {
+ indent: 2em;
+ }
+
+ header {
+ odd-right: $H;
+ even-left: $H;
+ }
+
+ footer {
+ odd-left: $D;
+ odd-center: $T;
+ odd-right: $N;
+
+ even-left: $N;
+ even-center: $T;
+ even-right: $D;
+ }
+}
+
+body {
+ font-size: 12pt;
+ text-align: justify;
+}
+
+pre {
+ font-size: 10pt;
+}
diff --git a/doc/cxx/parser/guide/index.xhtml b/doc/cxx/parser/guide/index.xhtml
new file mode 100644
index 0000000..6964a14
--- /dev/null
+++ b/doc/cxx/parser/guide/index.xhtml
@@ -0,0 +1,4163 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+ <title>C++/Parser Mapping Getting Started Guide</title>
+
+ <meta name="copyright" content="&#169; 2005-2023 Code Synthesis"/>
+ <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,parser,validation"/>
+ <meta name="description" content="C++/Parser Mapping Getting Started Guide"/>
+
+ <link rel="stylesheet" type="text/css" href="../../../default.css" />
+
+<style type="text/css">
+ pre {
+ padding : 0 0 0 0em;
+ margin : 0em 0em 0em 0;
+
+ font-size : 102%
+ }
+
+ body {
+ min-width: 48em;
+ }
+
+ h1 {
+ font-weight: bold;
+ font-size: 200%;
+ line-height: 1.2em;
+ }
+
+ h2 {
+ font-weight : bold;
+ font-size : 150%;
+
+ padding-top : 0.8em;
+ }
+
+ h3 {
+ font-size : 140%;
+ padding-top : 0.8em;
+ }
+
+ /* Adjust indentation for three levels. */
+ #container {
+ max-width: 48em;
+ }
+
+ #content {
+ padding: 0 0.1em 0 4em;
+ /*background-color: red;*/
+ }
+
+ #content h1 {
+ margin-left: -2.06em;
+ }
+
+ #content h2 {
+ margin-left: -1.33em;
+ }
+
+ /* Title page */
+
+ #titlepage {
+ padding: 2em 0 1em 0;
+ border-bottom: 1px solid black;
+ }
+
+ #titlepage .title {
+ font-weight: bold;
+ font-size: 200%;
+ text-align: center;
+ }
+
+ #titlepage #first-title {
+ padding: 1em 0 0.4em 0;
+ }
+
+ #titlepage #second-title {
+ padding: 0.4em 0 2em 0;
+ }
+
+ /* Lists */
+ ul.list li {
+ padding-top : 0.3em;
+ padding-bottom : 0.3em;
+ }
+
+ ol.steps {
+ padding-left : 1.8em;
+ }
+
+ ol.steps li {
+ padding-top : 0.3em;
+ padding-bottom : 0.3em;
+ }
+
+
+ div.img {
+ text-align: center;
+ padding: 2em 0 2em 0;
+ }
+
+ /* */
+ dl dt {
+ padding : 0.8em 0 0 0;
+ }
+
+ /* Built-in table */
+ #builtin {
+ margin: 2em 0 2em 0;
+
+ border-collapse : collapse;
+ border : 1px solid;
+ border-color : #000000;
+
+ font-size : 11px;
+ line-height : 14px;
+ }
+
+ #builtin th, #builtin td {
+ border: 1px solid;
+ padding : 0.9em 0.9em 0.7em 0.9em;
+ }
+
+ #builtin th {
+ background : #cde8f6;
+ }
+
+ #builtin td {
+ text-align: left;
+ }
+
+ /* XML Schema features table. */
+ #features {
+ margin: 2em 0 2em 0;
+
+ border-collapse : collapse;
+ border : 1px solid;
+ border-color : #000000;
+
+ font-size : 11px;
+ line-height : 14px;
+ }
+
+ #features th, #features td {
+ border: 1px solid;
+ padding : 0.6em 0.6em 0.6em 0.6em;
+ }
+
+ #features th {
+ background : #cde8f6;
+ }
+
+ #features td {
+ text-align: left;
+ }
+
+
+ /* TOC */
+ table.toc {
+ border-style : none;
+ border-collapse : separate;
+ border-spacing : 0;
+
+ margin : 0.2em 0 0.2em 0;
+ padding : 0 0 0 0;
+ }
+
+ table.toc tr {
+ padding : 0 0 0 0;
+ margin : 0 0 0 0;
+ }
+
+ table.toc * td, table.toc * th {
+ border-style : none;
+ margin : 0 0 0 0;
+ vertical-align : top;
+ }
+
+ table.toc * th {
+ font-weight : normal;
+ padding : 0em 0.1em 0em 0;
+ text-align : left;
+ white-space : nowrap;
+ }
+
+ table.toc * table.toc th {
+ padding-left : 1em;
+ }
+
+ table.toc * td {
+ padding : 0em 0 0em 0.7em;
+ text-align : left;
+ }
+</style>
+
+
+</head>
+
+<body>
+<div id="container">
+ <div id="content">
+
+ <div class="noprint">
+
+ <div id="titlepage">
+ <div class="title" id="first-title">C++/Parser Mapping</div>
+ <div class="title" id="second-title">Getting Started Guide</div>
+
+ <p>Copyright &#169; 2005-2023 Code Synthesis.</p>
+
+ <p>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href="https://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/index.xhtml">XHTML</a>,
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.pdf">PDF</a>, and
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.ps">PostScript</a>.</p>
+
+ </div>
+
+ <h1>Table of Contents</h1>
+
+ <table class="toc">
+ <tr>
+ <th></th><td><a href="#0">Preface</a>
+ <table class="toc">
+ <tr><th></th><td><a href="#0.1">About This Document</a></td></tr>
+ <tr><th></th><td><a href="#0.2">More Information</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>1</th><td><a href="#1">Introduction</a>
+ <table class="toc">
+ <tr><th>1.1</th><td><a href="#1.1">Mapping Overview</a></td></tr>
+ <tr><th>1.2</th><td><a href="#1.2">Benefits</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>2</th><td><a href="#2">Hello World Example</a>
+ <table class="toc">
+ <tr><th>2.1</th><td><a href="#2.1">Writing XML Document and Schema</a></td></tr>
+ <tr><th>2.2</th><td><a href="#2.2">Translating Schema to C++</a></td></tr>
+ <tr><th>2.3</th><td><a href="#2.3">Implementing Application Logic</a></td></tr>
+ <tr><th>2.4</th><td><a href="#2.4">Compiling and Running</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>3</th><td><a href="#3">Parser Skeletons</a>
+ <table class="toc">
+ <tr><th>3.1</th><td><a href="#3.1">Implementing the Gender Parser</a></td></tr>
+ <tr><th>3.2</th><td><a href="#3.2">Implementing the Person Parser</a></td></tr>
+ <tr><th>3.3</th><td><a href="#3.3">Implementing the People Parser</a></td></tr>
+ <tr><th>3.4</th><td><a href="#3.4">Connecting the Parsers Together</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>4</th><td><a href="#4">Type Maps</a>
+ <table class="toc">
+ <tr><th>4.1</th><td><a href="#4.1">Object Model</a></td></tr>
+ <tr><th>4.2</th><td><a href="#4.2">Type Map File Format</a></td></tr>
+ <tr><th>4.3</th><td><a href="#4.3">Parser Implementations</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>5</th><td><a href="#5">Mapping Configuration</a>
+ <table class="toc">
+ <tr><th>5.1</th><td><a href="#5.1">C++ Standard</a></td></tr>
+ <tr><th>5.2</th><td><a href="#5.2">Character Type and Encoding</a></td></tr>
+ <tr><th>5.3</th><td><a href="#5.3">Underlying XML Parser</a></td></tr>
+ <tr><th>5.4</th><td><a href="#5.4">XML Schema Validation</a></td></tr>
+ <tr><th>5.5</th><td><a href="#5.5">Support for Polymorphism</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>6</th><td><a href="#6">Built-In XML Schema Type Parsers</a>
+ <table class="toc">
+ <tr><th>6.1</th><td><a href="#6.1"><code>QName</code> Parser</a></td></tr>
+ <tr><th>6.2</th><td><a href="#6.2"><code>NMTOKENS</code> and <code>IDREFS</code> Parsers</a></td></tr>
+ <tr><th>6.3</th><td><a href="#6.3"><code>base64Binary</code> and <code>hexBinary</code> Parsers</a></td></tr>
+ <tr><th>6.4</th><td><a href="#6.4">Time Zone Representation</a></td></tr>
+ <tr><th>6.5</th><td><a href="#6.5"><code>date</code> Parser</a></td></tr>
+ <tr><th>6.6</th><td><a href="#6.6"><code>dateTime</code> Parser</a></td></tr>
+ <tr><th>6.7</th><td><a href="#6.7"><code>duration</code> Parser</a></td></tr>
+ <tr><th>6.8</th><td><a href="#6.8"><code>gDay</code> Parser</a></td></tr>
+ <tr><th>6.9</th><td><a href="#6.9"><code>gMonth</code> Parser</a></td></tr>
+ <tr><th>6.10</th><td><a href="#6.10"><code>gMonthDay</code> Parser</a></td></tr>
+ <tr><th>6.11</th><td><a href="#6.11"><code>gYear</code> Parser</a></td></tr>
+ <tr><th>6.12</th><td><a href="#6.12"><code>gYearMonth</code> Parser</a></td></tr>
+ <tr><th>6.13</th><td><a href="#6.13"><code>time</code> Parser</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>7</th><td><a href="#7">Document Parser and Error Handling</a>
+ <table class="toc">
+ <tr><th>7.1</th><td><a href="#7.1">Xerces-C++ Document Parser</a></td></tr>
+ <tr><th>7.2</th><td><a href="#7.2">Expat Document Parser</a></td></tr>
+ <tr><th>7.3</th><td><a href="#7.3">Error Handling</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th></th><td><a href="#A">Appendix A &mdash; Supported XML Schema Constructs</a></td>
+ </tr>
+
+ </table>
+ </div>
+
+ <h1><a name="0">Preface</a></h1>
+
+ <h2><a name="0.1">About This Document</a></h2>
+
+ <p>The goal of this document is to provide you with an understanding of
+ the C++/Parser programming model and allow you to efficiently evaluate
+ XSD against your project's technical requirements. As such, this
+ document is intended for C++ developers and software architects
+ who are looking for an XML processing solution. Prior experience
+ with XML and C++ is required to understand this document. Basic
+ understanding of XML Schema is advantageous but not expected
+ or required.
+ </p>
+
+
+ <h2><a name="0.2">More Information</a></h2>
+
+ <p>Beyond this guide, you may also find the following sources of
+ information useful:</p>
+
+ <ul class="list">
+ <li><a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a></li>
+
+ <li>The <code>cxx/parser/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ contains a collection of examples and a README file with an overview
+ of each example.</li>
+
+ <li>The <code>README</code> file in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ explains how to build the examples.</li>
+
+ <li>The <a href="https://www.codesynthesis.com/mailman/listinfo/xsd-users">xsd-users</a>
+ mailing list is the place to ask technical questions about XSD and the C++/Parser mapping.
+ Furthermore, the <a href="https://www.codesynthesis.com/pipermail/xsd-users/">archives</a>
+ may already have answers to some of your questions.</li>
+
+ </ul>
+
+ <!-- Introduction -->
+
+ <h1><a name="1">1 Introduction</a></h1>
+
+ <p>Welcome to CodeSynthesis XSD and the C++/Parser mapping. XSD is a
+ cross-platform W3C XML Schema to C++ data binding compiler. C++/Parser
+ is a W3C XML Schema to C++ mapping that represents an XML vocabulary
+ as a set of parser skeletons which you can implement to perform XML
+ processing as required by your application logic.
+ </p>
+
+ <h2><a name="1.1">1.1 Mapping Overview</a></h2>
+
+ <p>The C++/Parser mapping provides event-driven, stream-oriented
+ XML parsing, XML Schema validation, and C++ data binding. It was
+ specifically designed and optimized for high performance and
+ small footprint. Based on the static analysis of the schemas, XSD
+ generates compact, highly-optimized hierarchical state machines
+ that combine data extraction, validation, and even dispatching
+ in a single step. As a result, the generated code is typically
+ 2-10 times faster than general-purpose validating XML parsers
+ while maintaining the lowest static and dynamic memory footprints.
+ </p>
+
+ <p>To speed up application development, the C++/Parser mapping
+ can be instructed to generate sample parser implementations
+ and a test driver which can then be filled with the application
+ logic code. The mapping also provides a wide range of
+ mechanisms for controlling and customizing the generated code.</p>
+
+ <p>The next chapter shows how to create a simple application that uses
+ the C++/Parser mapping to parse, validate, and extract data from a
+ simple XML document. The following chapters show how to
+ use the C++/Parser mapping in more detail.</p>
+
+ <h2><a name="1.2">1.2 Benefits</a></h2>
+
+ <p>Traditional XML access APIs such as Document Object Model (DOM)
+ or Simple API for XML (SAX) have a number of drawbacks that
+ make them less suitable for creating robust and maintainable
+ XML processing applications. These drawbacks include:
+ </p>
+
+ <ul class="list">
+ <li>Generic representation of XML in terms of elements, attributes,
+ and text forces an application developer to write a substantial
+ amount of bridging code that identifies and transforms pieces
+ of information encoded in XML to a representation more suitable
+ for consumption by the application logic.</li>
+
+ <li>String-based flow control defers error detection to runtime.
+ It also reduces code readability and maintainability.</li>
+
+ <li>Lack of type safety because the data is represented
+ as text.</li>
+
+ <li>Resulting applications are hard to debug, change, and
+ maintain.</li>
+ </ul>
+
+ <p>In contrast, statically-typed, vocabulary-specific parser
+ skeletons produced by the C++/Parser mapping allow you to
+ operate in your domain terms instead of the generic elements,
+ attributes, and text. Static typing helps catch errors at
+ compile-time rather than at run-time. Automatic code generation
+ frees you for more interesting tasks (such as doing something
+ useful with the information stored in the XML documents) and
+ minimizes the effort needed to adapt your applications to
+ changes in the document structure. To summarize, the C++/Parser
+ mapping has the following key advantages over generic XML
+ access APIs:</p>
+
+ <ul class="list">
+ <li><b>Ease of use.</b> The generated code hides all the complexity
+ associated with recreating the document structure, maintaining the
+ dispatch state, and converting the data from the text representation
+ to data types suitable for manipulation by the application logic.
+ Parser skeletons also provide a convenient mechanism for building
+ custom in-memory representations.</li>
+
+ <li><b>Natural representation.</b> The generated parser skeletons
+ implement parser callbacks as virtual functions with names
+ corresponding to elements and attributes in XML. As a result,
+ you process the XML data using your domain vocabulary instead
+ of generic elements, attributes, and text.
+ </li>
+
+ <li><b>Concise code.</b> With a separate parser skeleton for each
+ XML Schema type, the application implementation is
+ simpler and thus easier to read and understand.</li>
+
+ <li><b>Safety.</b> The XML data is delivered to parser callbacks as
+ statically typed objects. The parser callbacks themselves are virtual
+ functions. This helps catch programming errors at compile-time
+ rather than at runtime.</li>
+
+ <li><b>Maintainability.</b> Automatic code generation minimizes the
+ effort needed to adapt the application to changes in the
+ document structure. With static typing, the C++ compiler
+ can pin-point the places in the application code that need to be
+ changed.</li>
+
+ <li><b>Efficiency.</b> The generated parser skeletons combine
+ data extraction, validation, and even dispatching in a single
+ step. This makes them much more efficient than traditional
+ architectures with separate stages for validation and data
+ extraction/dispatch.</li>
+ </ul>
+
+ <!-- Hello World Parser -->
+
+
+ <h1><a name="2">2 Hello World Example</a></h1>
+
+ <p>In this chapter we will examine how to parse a very simple XML
+ document using the XSD-generated C++/Parser skeletons.
+ The code presented in this chapter is based on the <code>hello</code>
+ example which can be found in the <code>cxx/parser/</code> directory in
+ the <a href="https://cppget.org/xsd-examples">xsd-examples</a>
+ package.</p>
+
+ <h2><a name="2.1">2.1 Writing XML Document and Schema</a></h2>
+
+ <p>First, we need to get an idea about the structure
+ of the XML documents we are going to process. Our
+ <code>hello.xml</code>, for example, could look like this:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;hello>
+
+ &lt;greeting>Hello&lt;/greeting>
+
+ &lt;name>sun&lt;/name>
+ &lt;name>moon&lt;/name>
+ &lt;name>world&lt;/name>
+
+&lt;/hello>
+ </pre>
+
+ <p>Then we can write a description of the above XML in the
+ XML Schema language and save it into <code>hello.xsd</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:complexType name="hello">
+ &lt;xs:sequence>
+ &lt;xs:element name="greeting" type="xs:string"/>
+ &lt;xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="hello" type="hello"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>Even if you are not familiar with XML Schema, it
+ should be easy to connect declarations in <code>hello.xsd</code>
+ to elements in <code>hello.xml</code>. The <code>hello</code> type
+ is defined as a sequence of the nested <code>greeting</code> and
+ <code>name</code> elements. Note that the term sequence in XML
+ Schema means that elements should appear in a particular order
+ as opposed to appearing multiple times. The <code>name</code>
+ element has its <code>maxOccurs</code> property set to
+ <code>unbounded</code> which means it can appear multiple times
+ in an XML document. Finally, the globally-defined <code>hello</code>
+ element prescribes the root element for our vocabulary. For an
+ easily-approachable introduction to XML Schema refer to
+ <a href="http://www.w3.org/TR/xmlschema-0/">XML Schema Part 0:
+ Primer</a>.</p>
+
+ <p>The above schema is a specification of our XML vocabulary; it tells
+ everybody what valid documents of our XML-based language should look
+ like. The next step is to compile this schema to generate
+ the object model and parsing functions.</p>
+
+ <h2><a name="2.2">2.2 Translating Schema to C++</a></h2>
+
+ <p>Now we are ready to translate our <code>hello.xsd</code> to C++ parser
+ skeletons. To do this we invoke the XSD compiler from a terminal
+ (UNIX) or a command prompt (Windows):
+ </p>
+
+ <pre class="terminal">
+$ xsd cxx-parser --xml-parser expat hello.xsd
+ </pre>
+
+ <p>The <code>--xml-parser</code> option indicates that we want to
+ use Expat as the underlying XML parser (see <a href="#5.3">Section
+ 5.3, "Underlying XML Parser"</a>). The XSD compiler produces two
+ C++ files: <code>hello-pskel.hxx</code> and <code>hello-pskel.cxx</code>.
+ The following code fragment is taken from <code>hello-pskel.hxx</code>;
+ it should give you an idea about what gets generated:
+ </p>
+
+ <pre class="c++">
+class hello_pskel
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre ();
+
+ virtual void
+ greeting (const std::string&amp;);
+
+ virtual void
+ name (const std::string&amp;);
+
+ virtual void
+ post_hello ();
+
+ // Parser construction API.
+ //
+ void
+ greeting_parser (xml_schema::string_pskel&amp;);
+
+ void
+ name_parser (xml_schema::string_pskel&amp;);
+
+ void
+ parsers (xml_schema::string_pskel&amp; /* greeting */,
+ xml_schema::string_pskel&amp; /* name */);
+
+private:
+ ...
+};
+ </pre>
+
+ <p>The first four member functions shown above are called parser
+ callbacks. You would normally override them in your implementation
+ of the parser to do something useful. Let's go through all of
+ them one by one.</p>
+
+ <p>The <code>pre()</code> function is an initialization callback. It is
+ called when a new element of type <code>hello</code> is about
+ to be parsed. You would normally use this function to allocate a new
+ instance of the resulting type or clear accumulators that are used
+ to gather information during parsing. The default implementation
+ of this function does nothing.</p>
+
+ <p>The <code>post_hello()</code> function is a finalization callback. Its
+ name is constructed by adding the parser skeleton name to the
+ <code>post_</code> prefix. The finalization callback is called when
+ parsing of the element is complete and the result, if any, should
+ be returned. Note that in our case the return type of
+ <code>post_hello()</code> is <code>void</code> which means there
+ is nothing to return. More on parser return types later.
+ </p>
+
+ <p>You may be wondering why the finalization callback is called
+ <code>post_hello()</code> instead of <code>post()</code> just
+ like <code>pre()</code>. The reason for this is that
+ finalization callbacks can have different return types and
+ result in function signature clashes across inheritance
+ hierarchies. To prevent this the signatures of finalization
+ callbacks are made unique by adding the type name to their names.</p>
+
+ <p>The <code>greeting()</code> and <code>name()</code> functions are
+ called when the <code>greeting</code> and <code>name</code> elements
+ have been parsed, respectively. Their arguments are of type
+ <code>std::string</code> and contain the data extracted from XML.</p>
+
+ <p>The last three functions are for connecting parsers to each other.
+ For example, there is a predefined parser for built-in XML Schema type
+ <code>string</code> in the XSD runtime. We will be using
+ it to parse the contents of <code>greeting</code> and
+ <code>name</code> elements, as shown in the next section.</p>
+
+ <h2><a name="2.3">2.3 Implementing Application Logic</a></h2>
+
+ <p>At this point we have all the parts we need to do something useful
+ with the information stored in our XML document. The first step is
+ to implement the parser:
+ </p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "hello-pskel.hxx"
+
+class hello_pimpl: public hello_pskel
+{
+public:
+ virtual void
+ greeting (const std::string&amp; g)
+ {
+ greeting_ = g;
+ }
+
+ virtual void
+ name (const std::string&amp; n)
+ {
+ std::cout &lt;&lt; greeting_ &lt;&lt; ", " &lt;&lt; n &lt;&lt; "!" &lt;&lt; std::endl;
+ }
+
+private:
+ std::string greeting_;
+};
+ </pre>
+
+ <p>We left both <code>pre()</code> and <code>post_hello()</code> with the
+ default implementations; we don't have anything to initialize or
+ return. The rest is pretty straightforward: we store the greeting
+ in a member variable and later, when parsing names, use it to
+ say hello.</p>
+
+ <p>An observant reader my ask what happens if the <code>name</code>
+ element comes before <code>greeting</code>? Don't we need to
+ make sure <code>greeting_</code> was initialized and report
+ an error otherwise? The answer is no, we don't have to do
+ any of this. The <code>hello_pskel</code> parser skeleton
+ performs validation of XML according to the schema from which
+ it was generated. As a result, it will check the order
+ of the <code>greeting</code> and <code>name</code> elements
+ and report an error if it is violated.</p>
+
+ <p>Now it is time to put this parser implementation to work:</p>
+
+ <pre class="c++">
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ // Construct the parser.
+ //
+ xml_schema::string_pimpl string_p;
+ hello_pimpl hello_p;
+
+ hello_p.greeting_parser (string_p);
+ hello_p.name_parser (string_p);
+
+ // Parse the XML instance.
+ //
+ xml_schema::document doc_p (hello_p, "hello");
+
+ hello_p.pre ();
+ doc_p.parse (argv[1]);
+ hello_p.post_hello ();
+ }
+ catch (const xml_schema::exception&amp; e)
+ {
+ cerr &lt;&lt; e &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+ <p>The first part of this code snippet instantiates individual parsers
+ and assembles them into a complete vocabulary parser.
+ <code>xml_schema::string_pimpl</code> is an implementation of a parser
+ for built-in XML Schema type <code>string</code>. It is provided by
+ the XSD runtime along with parsers for other built-in types (for
+ more information on the built-in parsers see <a href="#6">Chapter 6,
+ "Built-In XML Schema Type Parsers"</a>). We use <code>string_pimpl</code>
+ to parse the <code>greeting</code> and <code>name</code> elements as
+ indicated by the calls to <code>greeting_parser()</code> and
+ <code>name_parser()</code>.
+ </p>
+
+ <p>Then we instantiate a document parser (<code>doc_p</code>). The
+ first argument to its constructor is the parser for
+ the root element (<code>hello_p</code> in our case). The
+ second argument is the root element name.
+ </p>
+
+ <p>The final piece is the calls to <code>pre()</code>, <code>parse()</code>,
+ and <code>post_hello()</code>. The call to <code>parse()</code>
+ perform the actual XML parsing while the calls to <code>pre()</code> and
+ <code>post_hello()</code> make sure that the parser for the root
+ element can perform proper initialization and cleanup.</p>
+
+ <p>While our parser implementation and test driver are pretty small and
+ easy to write by hand, for bigger XML vocabularies it can be a
+ substantial effort. To help with this task XSD can automatically
+ generate sample parser implementations and a test driver from your
+ schemas. You can request the generation of a sample implementation with
+ empty function bodies by specifying the <code>--generate-noop-impl</code>
+ option. Or you can generate a sample implementation that prints the
+ data store in XML by using the <code>--generate-print-impl</code>
+ option. To request the generation of a test driver you can use the
+ <code>--generate-test-driver</code> option. For more information
+ on these options refer to the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>. The <code>'generated'</code> example
+ in the <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ shows the sample implementation generation feature in action.</p>
+
+
+ <h2><a name="2.4">2.4 Compiling and Running</a></h2>
+
+ <p>After saving all the parts from the previous section in
+ <code>driver.cxx</code>, we are ready to compile our first
+ application and run it on the test XML document. On a UNIX
+ system this can be done with the following commands:
+ </p>
+
+ <pre class="terminal">
+$ c++ -std=c++11 -I.../libxsd -c driver.cxx hello-pskel.cxx
+$ c++ -std=c++11 -o driver driver.o hello-pskel.o -lexpat
+$ ./driver hello.xml
+Hello, sun!
+Hello, moon!
+Hello, world!
+ </pre>
+
+ <p>Here <code>.../libxsd</code> represents the path to the
+ <a href="https://cppget.org/libxsd">libxsd</a> package root
+ directory. We can also test the error handling. To test XML
+ well-formedness checking, we can try to parse
+ <code>hello-pskel.hxx</code>:</p>
+
+ <pre class="terminal">
+$ ./driver hello-pskel.hxx
+hello-pskel.hxx:1:0: not well-formed (invalid token)
+ </pre>
+
+ <p>We can also try to parse a valid XML but not from our
+ vocabulary, for example <code>hello.xsd</code>:</p>
+
+ <pre class="terminal">
+$ ./driver hello.xsd
+hello.xsd:2:0: expected element 'hello' instead of
+'http://www.w3.org/2001/XMLSchema#schema'
+ </pre>
+
+
+ <!-- Chapater 3 -->
+
+
+ <h1><a name="3">3 Parser Skeletons</a></h1>
+
+ <p>As we have seen in the previous chapter, the XSD compiler generates
+ a parser skeleton class for each type defined in XML Schema. In
+ this chapter we will take a closer look at different functions
+ that comprise a parser skeleton as well as the way to connect
+ our implementations of these parser skeletons to create a complete
+ parser.</p>
+
+ <p>In this and subsequent chapters we will use the following schema
+ that describes a collection of person records. We save it in
+ <code>people.xsd</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:simpleType name="gender">
+ &lt;xs:restriction base="xs:string">
+ &lt;xs:enumeration value="male"/>
+ &lt;xs:enumeration value="female"/>
+ &lt;/xs:restriction>
+ &lt;/xs:simpleType>
+
+ &lt;xs:complexType name="person">
+ &lt;xs:sequence>
+ &lt;xs:element name="first-name" type="xs:string"/>
+ &lt;xs:element name="last-name" type="xs:string"/>
+ &lt;xs:element name="gender" type="gender"/>
+ &lt;xs:element name="age" type="xs:short"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:complexType name="people">
+ &lt;xs:sequence>
+ &lt;xs:element name="person" type="person" maxOccurs="unbounded"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="people" type="people"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>A sample XML instance to go along with this schema is saved
+ in <code>people.xml</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;people>
+ &lt;person>
+ &lt;first-name>John&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>32&lt;/age>
+ &lt;/person>
+ &lt;person>
+ &lt;first-name>Jane&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>female&lt;/gender>
+ &lt;age>28&lt;/age>
+ &lt;/person>
+&lt;/people>
+ </pre>
+
+ <p>Compiling <code>people.xsd</code> with the XSD compiler results
+ in three parser skeletons being generated: <code>gender_pskel</code>,
+ <code>person_pskel</code>, and <code>people_pskel</code>. We are going
+ to examine and implement each of them in the subsequent sections.</p>
+
+ <h2><a name="3.1">3.1 Implementing the Gender Parser</a></h2>
+
+ <p>The generated <code>gender_pskel</code> parser skeleton looks like
+ this:</p>
+
+ <pre class="c++">
+class gender_pskel: public virtual xml_schema::string_pskel
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre ();
+
+ virtual void
+ post_gender ();
+};
+ </pre>
+
+ <p>Notice that <code>gender_pskel</code> inherits from
+ <code>xml_schema::string_skel</code> which is a parser skeleton
+ for built-in XML Schema type <code>string</code> and is
+ predefined in the XSD runtime library. This is an example
+ of the general rule that parser skeletons follow: if a type
+ in XML Schema inherits from another then there will be an
+ equivalent inheritance between the corresponding parser
+ skeleton classes.</p>
+
+ <p>The <code>pre()</code> and <code>post_gender()</code> callbacks
+ should look familiar from the previous chapter. Let's now
+ implement the parser. Our implementation will simply print
+ the gender to <code>cout</code>:</p>
+
+
+ <pre class="c++">
+class gender_pimpl: public gender_pskel,
+ public xml_schema::string_pimpl
+{
+public:
+ virtual void
+ post_gender ()
+ {
+ std::string s = post_string ();
+ cout &lt;&lt; "gender: " &lt;&lt; s &lt;&lt; endl;
+ }
+};
+ </pre>
+
+ <p>While the code is quite short, there is a lot going on. First,
+ notice that we are inheriting from <code>gender_pskel</code> <em>and</em>
+ from <code>xml_schema::string_pimpl</code>. We've encountered
+ <code>xml_schema::string_pimpl</code> already; it is an
+ implementation of the <code>xml_schema::string_pskel</code> parser
+ skeleton for built-in XML Schema type <code>string</code>.</p>
+
+ <p>This is another common theme in the C++/Parser programming model:
+ reusing implementations of the base parsers in the derived ones with
+ the C++ mixin idiom. In our case, <code>string_pimpl</code> will
+ do all the dirty work of extracting the data and we can just get
+ it at the end with the call to <code>post_string()</code>.</p>
+
+ <p>In case you are curious, here is what
+ <code>xml_schema::string_pskel</code> and
+ <code>xml_schema::string_pimpl</code> look like:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class string_pskel: public simple_content
+ {
+ public:
+ virtual std::string
+ post_string () = 0;
+ };
+
+ class string_pimpl: public virtual string_pskel
+ {
+ public:
+ virtual void
+ _pre ();
+
+ virtual void
+ _characters (const xml_schema::ro_string&amp;);
+
+ virtual std::string
+ post_string ();
+
+ protected:
+ std::string str_;
+ };
+}
+ </pre>
+
+ <p>There are three new pieces in this code that we haven't seen yet.
+ They are the <code>simple_content</code> class as well as
+ the <code>_pre()</code> and <code>_characters()</code> functions.
+ The <code>simple_content</code> class is defined in the XSD
+ runtime and is a base class for all parser skeletons that conform
+ to the simple content model in XML Schema. Types with the
+ simple content model cannot have nested elements&mdash;only text
+ and attributes. There is also the <code>complex_content</code>
+ class which corresponds to the complex content mode (types with
+ nested elements, for example, <code>person</code> from
+ <code>people.xsd</code>).</p>
+
+ <p>The <code>_pre()</code> function is a parser callback. Remember we
+ talked about the <code>pre()</code> and <code>post_*()</code> callbacks
+ in the previous chapter? There are actually two more callbacks
+ with similar roles: <code>_pre()</code> and <code>_post ()</code>.
+ As a result, each parser skeleton has four special callbacks:</p>
+
+ <pre class="c++">
+ virtual void
+ pre ();
+
+ virtual void
+ _pre ();
+
+ virtual void
+ _post ();
+
+ virtual void
+ post_name ();
+ </pre>
+
+ <p><code>pre()</code> and <code>_pre()</code> are initialization
+ callbacks. They get called in that order before a new instance of the type
+ is about to be parsed. The difference between <code>pre()</code> and
+ <code>_pre()</code> is conventional: <code>pre()</code> can
+ be completely overridden by a derived parser. The derived
+ parser can also override <code>_pre()</code> but has to always call
+ the original version. This allows you to partition initialization
+ into customizable and required parts.</p>
+
+ <p>Similarly, <code>_post()</code> and <code>post_name()</code> are
+ finalization callbacks with exactly the same semantics:
+ <code>post_name()</code> can be completely overridden by the derived
+ parser while the original <code>_post()</code> should always be called.
+ </p>
+
+ <p>The final bit we need to discuss in this section is the
+ <code>_characters()</code> function. As you might have guessed, it
+ is also a callback. A low-level one that delivers raw character content
+ for the type being parsed. You will seldom need to use this callback
+ directly. Using implementations for the built-in parsers provided by
+ the XSD runtime is usually a simpler and more convenient
+ alternative.</p>
+
+ <p>At this point you might be wondering why some <code>post_*()</code>
+ callbacks, for example <code>post_string()</code>, return some data
+ while others, for example <code>post_gender()</code>, have
+ <code>void</code> as a return type. This is a valid concern
+ and it will be addressed in the next chapter.</p>
+
+ <h2><a name="3.2">3.2 Implementing the Person Parser</a></h2>
+
+ <p>The generated <code>person_pskel</code> parser skeleton looks like
+ this:</p>
+
+ <pre class="c++">
+class person_pskel: public xml_schema::complex_content
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre ();
+
+ virtual void
+ first_name (const std::string&amp;);
+
+ virtual void
+ last_name (const std::string&amp;);
+
+ virtual void
+ gender ();
+
+ virtual void
+ age (short);
+
+ virtual void
+ post_person ();
+
+ // Parser construction API.
+ //
+ void
+ first_name_parser (xml_schema::string_pskel&amp;);
+
+ void
+ last_name_parser (xml_schema::string_pskel&amp;);
+
+ void
+ gender_parser (gender_pskel&amp;);
+
+ void
+ age_parser (xml_schema::short_pskel&amp;);
+
+ void
+ parsers (xml_schema::string_pskel&amp; /* first-name */,
+ xml_schema::string_pskel&amp; /* last-name */,
+ gender_pskel&amp; /* gender */,
+ xml_schema::short_pskel&amp; /* age */);
+};
+ </pre>
+
+
+ <p>As you can see, we have a parser callback for each of the nested
+ elements found in the <code>person</code> XML Schema type.
+ The implementation of this parser is straightforward:</p>
+
+ <pre class="c++">
+class person_pimpl: public person_pskel
+{
+public:
+ virtual void
+ first_name (const std::string&amp; n)
+ {
+ cout &lt;&lt; "first: " &lt;&lt; f &lt;&lt; endl;
+ }
+
+ virtual void
+ last_name (const std::string&amp; l)
+ {
+ cout &lt;&lt; "last: " &lt;&lt; l &lt;&lt; endl;
+ }
+
+ virtual void
+ age (short a)
+ {
+ cout &lt;&lt; "age: " &lt;&lt; a &lt;&lt; endl;
+ }
+};
+ </pre>
+
+ <p>Notice that we didn't override the <code>gender()</code> callback
+ because all the printing is done by <code>gender_pimpl</code>.</p>
+
+
+ <h2><a name="3.3">3.3 Implementing the People Parser</a></h2>
+
+ <p>The generated <code>people_pskel</code> parser skeleton looks like
+ this:</p>
+
+ <pre class="c++">
+class people_pskel: public xml_schema::complex_content
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre ();
+
+ virtual void
+ person ();
+
+ virtual void
+ post_people ();
+
+ // Parser construction API.
+ //
+ void
+ person_parser (person_pskel&amp;);
+
+ void
+ parsers (person_pskel&amp; /* person */);
+};
+ </pre>
+
+ <p>The <code>person()</code> callback will be called after parsing each
+ <code>person</code> element. While <code>person_pimpl</code> does
+ all the printing, one useful thing we can do in this callback is to
+ print an extra newline after each person record so that our
+ output is more readable:</p>
+
+ <pre class="c++">
+class people_pimpl: public people_pskel
+{
+public:
+ virtual void
+ person ()
+ {
+ cout &lt;&lt; endl;
+ }
+};
+ </pre>
+
+ <p>Now it is time to put everything together.</p>
+
+
+ <h2><a name="3.4">3.4 Connecting the Parsers Together</a></h2>
+
+ <p>At this point we have all the individual parsers implemented
+ and can proceed to assemble them into a complete parser
+ for our XML vocabulary. The first step is to instantiate
+ all the individual parsers that we will need:</p>
+
+ <pre class="c++">
+xml_schema::short_pimpl short_p;
+xml_schema::string_pimpl string_p;
+
+gender_pimpl gender_p;
+person_pimpl person_p;
+people_pimpl people_p;
+ </pre>
+
+ <p>Notice that our schema uses two built-in XML Schema types:
+ <code>string</code> for the <code>first-name</code> and
+ <code>last-name</code> elements as well as <code>short</code>
+ for <code>age</code>. We will use predefined parsers that
+ come with the XSD runtime to handle these types. The next
+ step is to connect all the individual parsers. We do this
+ with the help of functions defined in the parser
+ skeletons and marked with the "Parser Construction API"
+ comment. One way to do it is to connect each individual
+ parser by calling the <code>*_parser()</code> functions:</p>
+
+ <pre class="c++">
+person_p.first_name_parser (string_p);
+person_p.last_name_parser (string_p);
+person_p.gender_parser (gender_p);
+person_p.age_parser (short_p);
+
+people_p.person_parser (person_p);
+ </pre>
+
+ <p>You might be wondering what happens if you do not provide
+ a parser by not calling one of the <code>*_parser()</code> functions.
+ In that case the corresponding XML content will be skipped,
+ including validation. This is an efficient way to ignore parts
+ of the document that you are not interested in.</p>
+
+
+ <p>An alternative, shorter, way to connect the parsers is by using
+ the <code>parsers()</code> functions which connects all the parsers
+ for a given type at once:</p>
+
+ <pre class="c++">
+person_p.parsers (string_p, string_p, gender_p, short_p);
+people_p.parsers (person_p);
+ </pre>
+
+ <p>The following figure illustrates the resulting connections. Notice
+ the correspondence between return types of the <code>post_*()</code>
+ functions and argument types of element callbacks that are connected
+ by the arrows.</p>
+
+ <!-- align=center is needed for html2ps -->
+ <div class="img" align="center"><img src="figure-1.png"/></div>
+
+ <p>The last step is the construction of the document parser and
+ invocation of the complete parser on our sample XML instance:</p>
+
+ <pre class="c++">
+xml_schema::document doc_p (people_p, "people");
+
+people_p.pre ();
+doc_p.parse ("people.xml");
+people_p.post_people ();
+ </pre>
+
+ <p>Let's consider <code>xml_schema::document</code> in
+ more detail. While the exact definition of this class
+ varies depending on the underlying parser selected,
+ here is the common part:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class document
+ {
+ public:
+ document (xml_schema::parser_base&amp;,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ document (xml_schema::parser_base&amp;,
+ const std::string&amp; root_element_namespace,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ void
+ parse (const std::string&amp; file);
+
+ void
+ parse (std::istream&amp;);
+
+ ...
+
+ };
+}
+ </pre>
+
+ <p><code>xml_schema::document</code> is a root parser for
+ the vocabulary. The first argument to its constructors is the
+ parser for the type of the root element (<code>people_impl</code>
+ in our case). Because a type parser is only concerned with
+ the element's content and not with the element's name, we need
+ to specify the root element's name somewhere. That's
+ what is passed as the second and third arguments to the
+ <code>document</code>'s constructors.</p>
+
+ <p>There are also two overloaded <code>parse()</code> functions
+ defined in the <code>document</code> class (there are actually
+ more but the others are specific to the underlying XML parser).
+ The first version parses a local file identified by a name. The
+ second version reads the data from an input stream. For more
+ information on the <code>xml_schema::document</code> class
+ refer to <a href="#7">Chapter 7, "Document Parser and Error
+ Handling"</a>.</p>
+
+ <p>Let's now consider a step-by-step list of actions that happen
+ as we parse through <code>people.xml</code>. The content of
+ <code>people.xml</code> is repeated below for convenience.</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;people>
+ &lt;person>
+ &lt;first-name>John&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>32&lt;/age>
+ &lt;/person>
+ &lt;person>
+ &lt;first-name>Jane&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>female&lt;/gender>
+ &lt;age>28&lt;/age>
+ &lt;/person>
+&lt;/people>
+ </pre>
+
+
+ <ol class="steps">
+ <li><code>people_p.pre()</code> is called from
+ <code>main()</code>. We did not provide any implementation
+ for this callback so this call is a no-op.</li>
+
+ <li><code>doc_p.parse("people.xml")</code> is called from
+ <code>main()</code>. The parser opens the file and starts
+ parsing its content.</li>
+
+ <li>The parser encounters the root element. <code>doc_p</code>
+ verifies that the root element is correct and calls
+ <code>_pre()</code> on <code>people_p</code> which is also
+ a no-op. Parsing is now delegated to <code>people_p</code>.</li>
+
+ <li>The parser encounters the <code>person</code> element.
+ <code>people_p</code> determines that <code>person_p</code>
+ is responsible for parsing this element. <code>pre()</code>
+ and <code>_pre()</code> callbacks are called on <code>person_p</code>.
+ Parsing is now delegated to <code>person_p</code>.</li>
+
+ <li>The parser encounters the <code>first-name</code> element.
+ <code>person_p</code> determines that <code>string_p</code>
+ is responsible for parsing this element. <code>pre()</code>
+ and <code>_pre()</code> callbacks are called on <code>string_p</code>.
+ Parsing is now delegated to <code>string_p</code>.</li>
+
+ <li>The parser encounters character content consisting of
+ <code>"John"</code>. The <code>_characters()</code> callback is
+ called on <code>string_p</code>.</li>
+
+ <li>The parser encounters the end of <code>first-name</code>
+ element. The <code>_post()</code> and <code>post_string()</code>
+ callbacks are called on <code>string_p</code>. The
+ <code>first_name()</code> callback is called on <code>person_p</code>
+ with the return value of <code>post_string()</code>. The
+ <code>first_name()</code> implementation prints
+ <code>"first: John"</code> to <code>cout</code>.
+ Parsing is now returned to <code>person_p</code>.</li>
+
+ <li>Steps analogous to 5-7 are performed for the <code>last-name</code>,
+ <code>gender</code>, and <code>age</code> elements.</li>
+
+ <li>The parser encounters the end of <code>person</code>
+ element. The <code>_post()</code> and <code>post_person()</code>
+ callbacks are called on <code>person_p</code>. The
+ <code>person()</code> callback is called on <code>people_p</code>.
+ The <code>person()</code> implementation prints a new line
+ to <code>cout</code>. Parsing is now returned to
+ <code>people_p</code>.</li>
+
+ <li>Steps 4-9 are performed for the second <code>person</code>
+ element.</li>
+
+ <li>The parser encounters the end of <code>people</code>
+ element. The <code>_post()</code> callback is called on
+ <code>people_p</code>. The <code>doc_p.parse("people.xml")</code>
+ call returns to <code>main()</code>.</li>
+
+ <li><code>people_p.post_people()</code> is called from
+ <code>main()</code> which is a no-op.</li>
+
+ </ol>
+
+
+ <!-- Chpater 4 -->
+
+
+ <h1><a name="4">4 Type Maps</a></h1>
+
+ <p>There are many useful things you can do inside parser callbacks as they
+ are right now. There are, however, times when you want to propagate
+ some information from one parser to another or to the caller of the
+ parser. One common task that would greatly benefit from such a
+ possibility is building a tree-like in-memory object model of the
+ data stored in XML. During execution, each individual sub-parser
+ would create a sub-tree and return it to its <em>parent</em> parser
+ which can then incorporate this sub-tree into the whole tree.</p>
+
+ <p>In this chapter we will discuss the mechanisms offered by the
+ C++/Parser mapping for returning information from individual
+ parsers and see how to use them to build an object model
+ of our people vocabulary.</p>
+
+ <h2><a name="4.1">4.1 Object Model</a></h2>
+
+ <p>An object model for our person record example could
+ look like this (saved in the <code>people.hxx</code> file):</p>
+
+ <pre class="c++">
+#include &lt;string>
+#include &lt;vector>
+
+enum gender
+{
+ male,
+ female
+};
+
+class person
+{
+public:
+ person (const std::string&amp; first,
+ const std::string&amp; last,
+ ::gender gender,
+ short age)
+ : first_ (first), last_ (last),
+ gender_ (gender), age_ (age)
+ {
+ }
+
+ const std::string&amp;
+ first () const
+ {
+ return first_;
+ }
+
+ const std::string&amp;
+ last () const
+ {
+ return last_;
+ }
+
+ ::gender
+ gender () const
+ {
+ return gender_;
+ }
+
+ short
+ age () const
+ {
+ return age_;
+ }
+
+private:
+ std::string first_;
+ std::string last_;
+ ::gender gender_;
+ short age_;
+};
+
+typedef std::vector&lt;person> people;
+ </pre>
+
+ <p>While it is clear which parser is responsible for which part of
+ the object model, it is not exactly clear how, for
+ example, <code>gender_pimpl</code> will deliver <code>gender</code>
+ to <code>person_pimpl</code>. You might have noticed that
+ <code>string_pimpl</code> manages to deliver its value to the
+ <code>first_name()</code> callback of <code>person_pimpl</code>. Let's
+ see how we can utilize the same mechanism to propagate our
+ own data.</p>
+
+ <p>There is a way to tell the XSD compiler that you want to
+ exchange data between parsers. More precisely, for each
+ type defined in XML Schema, you can tell the compiler two things.
+ First, the return type of the <code>post_*()</code> callback
+ in the parser skeleton generated for this type. And, second,
+ the argument type for callbacks corresponding to elements and
+ attributes of this type. For example, for XML Schema type
+ <code>gender</code> we can specify the return type for
+ <code>post_gender()</code> in the <code>gender_pskel</code>
+ skeleton and the argument type for the <code>gender()</code> callback
+ in the <code>person_pskel</code> skeleton. As you might have guessed,
+ the generated code will then pass the return value from the
+ <code>post_*()</code> callback as an argument to the element or
+ attribute callback.</p>
+
+ <p>The way to tell the XSD compiler about these XML Schema to
+ C++ mappings is with type map files. Here is a simple type
+ map for the <code>gender</code> type from the previous paragraph:</p>
+
+ <pre class="type-map">
+include "people.hxx";
+gender ::gender ::gender;
+ </pre>
+
+ <p>The first line indicates that the generated code must include
+ <code>people.hxx</code> in order to get the definition for the
+ <code>gender</code> type. The second line specifies that both
+ argument and return types for the <code>gender</code>
+ XML Schema type should be the <code>::gender</code> C++ enum
+ (we use fully-qualified C++ names to avoid name clashes).
+ The next section will describe the type map format in detail.
+ We save this type map in <code>people.map</code> and
+ then translate our schemas with the <code>--type-map</code>
+ option to let the XSD compiler know about our type map:</p>
+
+ <pre class="terminal">
+$ xsd cxx-parser --type-map people.map people.xsd
+ </pre>
+
+ <p>If we now look at the generated <code>people-pskel.hxx</code>,
+ we will see the following changes in the <code>gender_pskel</code> and
+ <code>person_pskel</code> skeletons:</p>
+
+ <pre class="c++">
+#include "people.hxx"
+
+class gender_pskel: public virtual xml_schema::string_pskel
+{
+ virtual ::gender
+ post_gender () = 0;
+
+ ...
+};
+
+class person_pskel: public xml_schema::complex_content
+{
+ virtual void
+ gender (::gender);
+
+ ...
+};
+ </pre>
+
+ <p>Notice that <code>#include "people.hxx"</code> was added to
+ the generated header file from the type map to provide the
+ definition for the <code>gender</code> enum.</p>
+
+ <h2><a name="4.2">4.2 Type Map File Format</a></h2>
+
+ <p>Type map files are used to define a mapping between XML Schema
+ and C++ types. The compiler uses this information
+ to determine return types of <code>post_*()</code>
+ callbacks in parser skeletons corresponding to XML Schema
+ types as well as argument types for callbacks corresponding
+ to elements and attributes of these types.</p>
+
+ <p>The compiler has a set of predefined mapping rules that map
+ the built-in XML Schema types to suitable C++ types (discussed
+ below) and all other types to <code>void</code>.
+ By providing your own type maps you can override these predefined
+ rules. The format of the type map file is presented below:
+ </p>
+
+ <pre class="type-map">
+namespace &lt;schema-namespace> [&lt;cxx-namespace>]
+{
+ (include &lt;file-name>;)*
+ ([type] &lt;schema-type> &lt;cxx-ret-type> [&lt;cxx-arg-type>];)*
+}
+ </pre>
+
+ <p>Both <code><i>&lt;schema-namespace></i></code> and
+ <code><i>&lt;schema-type></i></code> are regex patterns while
+ <code><i>&lt;cxx-namespace></i></code>,
+ <code><i>&lt;cxx-ret-type></i></code>, and
+ <code><i>&lt;cxx-arg-type></i></code> are regex pattern
+ substitutions. All names can be optionally enclosed in
+ <code>" "</code>, for example, to include white-spaces.</p>
+
+ <p><code><i>&lt;schema-namespace></i></code> determines XML
+ Schema namespace. Optional <code><i>&lt;cxx-namespace></i></code>
+ is prefixed to every C++ type name in this namespace declaration.
+ <code><i>&lt;cxx-ret-type></i></code> is a C++ type name that is
+ used as a return type for the <code>post_*()</code> callback.
+ Optional <code><i>&lt;cxx-arg-type></i></code> is an argument
+ type for callbacks corresponding to elements and attributes
+ of this type. If <code><i>&lt;cxx-arg-type></i></code> is not
+ specified, it defaults to <code><i>&lt;cxx-ret-type></i></code>
+ if <code><i>&lt;cxx-ret-type></i></code> ends with <code>*</code> or
+ <code>&amp;</code> (that is, it is a pointer or a reference) and
+ <code>const&nbsp;<i>&lt;cxx-ret-type></i>&amp;</code>
+ otherwise.
+ <code><i>&lt;file-name></i></code> is a file name either in the
+ <code>" "</code> or <code>&lt; ></code> format
+ and is added with the <code>#include</code> directive to
+ the generated code.</p>
+
+ <p>The <code><b>#</b></code> character starts a comment that ends
+ with a new line or end of file. To specify a name that contains
+ <code><b>#</b></code> enclose it in <code><b>" "</b></code>.
+ For example:</p>
+
+ <pre>
+namespace http://www.example.com/xmlns/my my
+{
+ include "my.hxx";
+
+ # Pass apples by value.
+ #
+ apple apple;
+
+ # Pass oranges as pointers.
+ #
+ orange orange_t*;
+}
+ </pre>
+
+ <p>In the example above, for the
+ <code>http://www.example.com/xmlns/my#orange</code>
+ XML Schema type, the <code>my::orange_t*</code> C++ type will
+ be used as both return and argument types.</p>
+
+ <p>Several namespace declarations can be specified in a single
+ file. The namespace declaration can also be completely
+ omitted to map types in a schema without a namespace. For
+ instance:</p>
+
+ <pre class="type-map">
+include "my.hxx";
+apple apple;
+
+namespace http://www.example.com/xmlns/my
+{
+ orange "const orange_t*";
+}
+ </pre>
+
+ <p>The compiler has a number of predefined mapping rules for
+ the built-in XML Schema types which can be presented as the
+ following map files. The string-based XML Schema types are
+ mapped to either <code>std::string</code> or
+ <code>std::wstring</code> depending on the character type
+ selected (see <a href="#5.2"> Section 5.2, "Character Type and
+ Encoding"</a> for more information). The binary XML Schema
+ types are mapped to either <code>std::unique_ptr&lt;xml_schema::buffer></code>
+ or <code>std::auto_ptr&lt;xml_schema::buffer></code>
+ depending on the C++ standard selected (C++11 or C++98,
+ respectively; refer to the <code>--std</code> XSD compiler
+ command line option for details).</p>
+
+ <pre class="type-map">
+namespace http://www.w3.org/2001/XMLSchema
+{
+ boolean bool bool;
+
+ byte "signed char" "signed char";
+ unsignedByte "unsigned char" "unsigned char";
+
+ short short short;
+ unsignedShort "unsigned short" "unsigned short";
+
+ int int int;
+ unsignedInt "unsigned int" "unsigned int";
+
+ long "long long" "long long";
+ unsignedLong "unsigned long long" "unsigned long long";
+
+ integer "long long" "long long";
+
+ negativeInteger "long long" "long long";
+ nonPositiveInteger "long long" "long long";
+
+ positiveInteger "unsigned long long" "unsigned long long";
+ nonNegativeInteger "unsigned long long" "unsigned long long";
+
+ float float float;
+ double double double;
+ decimal double double;
+
+ string std::string;
+ normalizedString std::string;
+ token std::string;
+ Name std::string;
+ NMTOKEN std::string;
+ NCName std::string;
+ ID std::string;
+ IDREF std::string;
+ language std::string;
+ anyURI std::string;
+
+ NMTOKENS xml_schema::string_sequence;
+ IDREFS xml_schema::string_sequence;
+
+ QName xml_schema::qname;
+
+ base64Binary std::[unique|auto]_ptr&lt;xml_schema::buffer>
+ std::[unique|auto]_ptr&lt;xml_schema::buffer>;
+ hexBinary std::[unique|auto]_ptr&lt;xml_schema::buffer>
+ std::[unique|auto]_ptr&lt;xml_schema::buffer>;
+
+ date xml_schema::date;
+ dateTime xml_schema::date_time;
+ duration xml_schema::duration;
+ gDay xml_schema::gday;
+ gMonth xml_schema::gmonth;
+ gMonthDay xml_schema::gmonth_day;
+ gYear xml_schema::gyear;
+ gYearMonth xml_schema::gyear_month;
+ time xml_schema::time;
+}
+ </pre>
+
+ <p>For more information about the mapping of the built-in XML Schema types
+ to C++ types refer to <a href="#6">Chapter 6, "Built-In XML Schema Type
+ Parsers"</a>. The last predefined rule maps anything that wasn't
+ mapped by previous rules to <code>void</code>:</p>
+
+ <pre class="type-map">
+namespace .*
+{
+ .* void void;
+}
+ </pre>
+
+
+ <p>When you provide your own type maps with the
+ <code>--type-map</code> option, they are evaluated first. This
+ allows you to selectively override any of the predefined rules.
+ Note also that if you change the mapping
+ of a built-in XML Schema type then it becomes your responsibility
+ to provide the corresponding parser skeleton and implementation
+ in the <code>xml_schema</code> namespace. You can include the
+ custom definitions into the generated header file using the
+ <code>--hxx-prologue-*</code> options.</p>
+
+ <h2><a name="4.3">4.3 Parser Implementations</a></h2>
+
+ <p>With the knowledge from the previous section, we can proceed
+ with creating a type map that maps types in the <code>people.xsd</code>
+ schema to our object model classes in
+ <code>people.hxx</code>. In fact, we already have the beginning
+ of our type map file in <code>people.map</code>. Let's extend
+ it with the rest of the types:</p>
+
+ <pre class="type-map">
+include "people.hxx";
+
+gender ::gender ::gender;
+person ::person;
+people ::people;
+ </pre>
+
+ <p>There are a few things to note about this type map. We did not
+ provide the argument types for <code>person</code> and
+ <code>people</code> because the default constant reference is
+ exactly what we need. We also did not provide any mappings
+ for built-in XML Schema types <code>string</code> and
+ <code>short</code> because they are handled by the predefined
+ rules and we are happy with the result. Note also that
+ all C++ types are fully qualified. This is done to avoid
+ potential name conflicts in the generated code. Now we can
+ recompile our schema and move on to implementing the parsers:</p>
+
+ <pre class="terminal">
+$ xsd cxx-parser --xml-parser expat --type-map people.map people.xsd
+ </pre>
+
+ <p>Here is the implementation of our three parsers in full. One
+ way to save typing when implementing your own parsers is
+ to open the generated code and copy the signatures of parser
+ callbacks into your code. Or you could always auto generate the
+ sample implementations and fill them with your code.</p>
+
+
+ <pre class="c++">
+#include "people-pskel.hxx"
+
+class gender_pimpl: public gender_pskel,
+ public xml_schema::string_pimpl
+{
+public:
+ virtual ::gender
+ post_gender ()
+ {
+ return post_string () == "male" ? male : female;
+ }
+};
+
+class person_pimpl: public person_pskel
+{
+public:
+ virtual void
+ first_name (const std::string&amp; f)
+ {
+ first_ = f;
+ }
+
+ virtual void
+ last_name (const std::string&amp; l)
+ {
+ last_ = l;
+ }
+
+ virtual void
+ gender (::gender g)
+ {
+ gender_ = g;
+ }
+
+ virtual void
+ age (short a)
+ {
+ age_ = a;
+ }
+
+ virtual ::person
+ post_person ()
+ {
+ return ::person (first_, last_, gender_, age_);
+ }
+
+private:
+ std::string first_;
+ std::string last_;
+ ::gender gender_;
+ short age_;
+};
+
+class people_pimpl: public people_pskel
+{
+public:
+ virtual void
+ person (const ::person&amp; p)
+ {
+ people_.push_back (p);
+ }
+
+ virtual ::people
+ post_people ()
+ {
+ ::people r;
+ r.swap (people_);
+ return r;
+ }
+
+private:
+ ::people people_;
+};
+ </pre>
+
+ <p>This code fragment should look familiar by now. Just note that
+ all the <code>post_*()</code> callbacks now have return types instead
+ of <code>void</code>. Here is the implementation of the test
+ driver for this example:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ // Construct the parser.
+ //
+ xml_schema::short_pimpl short_p;
+ xml_schema::string_pimpl string_p;
+
+ gender_pimpl gender_p;
+ person_pimpl person_p;
+ people_pimpl people_p;
+
+ person_p.parsers (string_p, string_p, gender_p, short_p);
+ people_p.parsers (person_p);
+
+ // Parse the document to obtain the object model.
+ //
+ xml_schema::document doc_p (people_p, "people");
+
+ people_p.pre ();
+ doc_p.parse (argv[1]);
+ people ppl = people_p.post_people ();
+
+ // Print the object model.
+ //
+ for (people::iterator i (ppl.begin ()); i != ppl.end (); ++i)
+ {
+ cout &lt;&lt; "first: " &lt;&lt; i->first () &lt;&lt; endl
+ &lt;&lt; "last: " &lt;&lt; i->last () &lt;&lt; endl
+ &lt;&lt; "gender: " &lt;&lt; (i->gender () == male ? "male" : "female") &lt;&lt; endl
+ &lt;&lt; "age: " &lt;&lt; i->age () &lt;&lt; endl
+ &lt;&lt; endl;
+ }
+}
+ </pre>
+
+ <p>The parser creation and assembly part is exactly the same as in
+ the previous chapter. The parsing part is a bit different:
+ <code>post_people()</code> now has a return value which is the
+ complete object model. We store it in the
+ <code>ppl</code> variable. The last bit of the code simply iterates
+ over the <code>people</code> vector and prints the information
+ for each person. We save the last two code fragments to
+ <code>driver.cxx</code> and proceed to compile and test
+ our new application:</p>
+
+
+ <pre class="terminal">
+$ c++ -std=c++11 -I.../libxsd -c driver.cxx people-pskel.cxx
+$ c++ -std=c++11 -o driver driver.o people-pskel.o -lexpat
+$ ./driver people.xml
+first: John
+last: Doe
+gender: male
+age: 32
+
+first: Jane
+last: Doe
+gender: female
+age: 28
+ </pre>
+
+
+ <!-- Mapping Configuration -->
+
+
+ <h1><a name="5">5 Mapping Configuration</a></h1>
+
+ <p>The C++/Parser mapping has a number of configuration parameters that
+ determine the overall properties and behavior of the generated code.
+ Configuration parameters are specified with the XSD command line
+ options and include the C++ standard, the character type that is used
+ by the generated code, the underlying XML parser, whether the XML Schema
+ validation is performed in the generated code, and support for XML Schema
+ polymorphism. This chapter describes these configuration
+ parameters in more detail. For more ways to configure the generated
+ code refer to the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>.
+ </p>
+
+ <h2><a name="5.1">5.1 C++ Standard</a></h2>
+
+ <p>The C++/Parser mapping provides support for ISO/IEC C++ 2011 (C++11)
+ and ISO/IEC C++ 1998/2003 (C++98). To select the C++ standard for the
+ generated code we use the <code>--std</code> XSD compiler command
+ line option. While the majority of the examples in this guide use
+ C++11, the document explains the C++11/98 usage difference and so
+ they can easily be converted to C++98.</p>
+
+ <h2><a name="5.2">5.2 Character Type and Encoding</a></h2>
+
+ <p>The C++/Parser mapping has built-in support for two character types:
+ <code>char</code> and <code>wchar_t</code>. You can select the
+ character type with the <code>--char-type</code> command line
+ option. The default character type is <code>char</code>. The
+ string-based built-in XML Schema types are returned as either
+ <code>std::string</code> or <code>std::wstring</code> depending
+ on the character type selected.</p>
+
+ <p>Another aspect of the mapping that depends on the character type
+ is character encoding. For the <code>char</code> character type
+ the default encoding is UTF-8. Other supported encodings are
+ ISO-8859-1, Xerces-C++ Local Code Page (LPC), as well as
+ custom encodings. You can select which encoding should be used
+ in the object model with the <code>--char-encoding</code> command
+ line option.</p>
+
+ <p>For the <code>wchar_t</code> character type the encoding is
+ automatically selected between UTF-16 and UTF-32/UCS-4 depending
+ on the size of the <code>wchar_t</code> type. On some platforms
+ (for example, Windows with Visual C++ and AIX with IBM XL C++)
+ <code>wchar_t</code> is 2 bytes long. For these platforms the
+ encoding is UTF-16. On other platforms <code>wchar_t</code> is 4 bytes
+ long and UTF-32/UCS-4 is used.</p>
+
+ <p>Note also that the character encoding that is used in the object model
+ is independent of the encodings used in input and output XML. In fact,
+ all three (object mode, input XML, and output XML) can have different
+ encodings.</p>
+
+ <h2><a name="5.3">5.3 Underlying XML Parser</a></h2>
+
+ <p>The C++/Parser mapping can be used with either Xerces-C++ or Expat
+ as the underlying XML parser. You can select the XML parser with
+ the <code>--xml-parser</code> command line option. Valid values
+ for this option are <code>xerces</code> and <code>expat</code>.
+ The default XML parser is Xerces-C++.</p>
+
+ <p>The generated code is identical for both parsers except for the
+ <code>xml_schema::document</code> class in which some of the
+ <code>parse()</code> functions are parser-specific as described
+ in <a href="#7">Chapter 7, "Document Parser and Error Handling"</a>.</p>
+
+
+ <h2><a name="5.4">5.4 XML Schema Validation</a></h2>
+
+ <p>The C++/Parser mapping provides support for validating a
+ commonly-used subset of W3C XML Schema in the generated code.
+ For the list of supported XML Schema constructs refer to
+ <a href="#A">Appendix A, "Supported XML Schema Constructs"</a>.</p>
+
+ <p>By default validation in the generated code is disabled if
+ the underlying XML parser is validating (Xerces-C++) and
+ enabled otherwise (Expat). See <a href="#5.3">Section 5.3,
+ "Underlying XML Parser"</a> for more information about
+ the underlying XML parser. You can override the default
+ behavior with the <code>--generate-validation</code>
+ and <code>--suppress-validation</code> command line options.</p>
+
+
+ <h2><a name="5.5">5.5 Support for Polymorphism</a></h2>
+
+ <p>By default the XSD compiler generates non-polymorphic code. If your
+ vocabulary uses XML Schema polymorphism in the form of <code>xsi:type</code>
+ and/or substitution groups, then you will need to compile your schemas
+ with the <code>--generate-polymorphic</code> option to produce
+ polymorphism-aware code as well as pass <code>true</code> as the last
+ argument to the <code>xml_schema::document</code>'s constructors.</p>
+
+ <p>When using the polymorphism-aware generated code, you can specify
+ several parsers for a single element by passing a parser map
+ instead of an individual parser to the parser connection function
+ for the element. One of the parsers will then be looked up and used
+ depending on the <code>xsi:type</code> attribute value or an element
+ name from a substitution group. Consider the following schema as an
+ example:</p>
+
+ <pre class="xml">
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:complexType name="person">
+ &lt;xs:sequence>
+ &lt;xs:element name="name" type="xs:string"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;!-- substitution group root -->
+ &lt;xs:element name="person" type="person"/>
+
+ &lt;xs:complexType name="superman">
+ &lt;xs:complexContent>
+ &lt;xs:extension base="person">
+ &lt;xs:attribute name="can-fly" type="xs:boolean"/>
+ &lt;/xs:extension>
+ &lt;/xs:complexContent>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="superman"
+ type="superman"
+ substitutionGroup="person"/>
+
+ &lt;xs:complexType name="batman">
+ &lt;xs:complexContent>
+ &lt;xs:extension base="superman">
+ &lt;xs:attribute name="wing-span" type="xs:unsignedInt"/>
+ &lt;/xs:extension>
+ &lt;/xs:complexContent>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="batman"
+ type="batman"
+ substitutionGroup="superman"/>
+
+ &lt;xs:complexType name="supermen">
+ &lt;xs:sequence>
+ &lt;xs:element ref="person" maxOccurs="unbounded"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="supermen" type="supermen"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>Conforming XML documents can use the <code>superman</code>
+ and <code>batman</code> types in place of the <code>person</code>
+ type either by specifying the type with the <code>xsi:type</code>
+ attributes or by using the elements from the substitution
+ group, for instance:</p>
+
+
+ <pre class="xml">
+&lt;supermen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ &lt;person>
+ &lt;name>John Doe&lt;/name>
+ &lt;/person>
+
+ &lt;superman can-fly="false">
+ &lt;name>James "007" Bond&lt;/name>
+ &lt;/superman>
+
+ &lt;superman can-fly="true" wing-span="10" xsi:type="batman">
+ &lt;name>Bruce Wayne&lt;/name>
+ &lt;/superman>
+
+&lt;/supermen>
+ </pre>
+
+ <p>To print the data stored in such XML documents we can implement
+ the parsers as follows:</p>
+
+ <pre class="c++">
+class person_pimpl: public virtual person_pskel
+{
+public:
+ virtual void
+ pre ()
+ {
+ cout &lt;&lt; "starting to parse person" &lt;&lt; endl;
+ }
+
+ virtual void
+ name (const std::string&amp; v)
+ {
+ cout &lt;&lt; "name: " &lt;&lt; v &lt;&lt; endl;
+ }
+
+ virtual void
+ post_person ()
+ {
+ cout &lt;&lt; "finished parsing person" &lt;&lt; endl;
+ }
+};
+
+class superman_pimpl: public virtual superman_pskel,
+ public person_pimpl
+{
+public:
+ virtual void
+ pre ()
+ {
+ cout &lt;&lt; "starting to parse superman" &lt;&lt; endl;
+ }
+
+ virtual void
+ can_fly (bool v)
+ {
+ cout &lt;&lt; "can-fly: " &lt;&lt; v &lt;&lt; endl;
+ }
+
+ virtual void
+ post_person ()
+ {
+ post_superman ();
+ }
+
+ virtual void
+ post_superman ()
+ {
+ cout &lt;&lt; "finished parsing superman" &lt;&lt; endl
+ }
+};
+
+class batman_pimpl: public virtual batman_pskel,
+ public superman_pimpl
+{
+public:
+ virtual void
+ pre ()
+ {
+ cout &lt;&lt; "starting to parse batman" &lt;&lt; endl;
+ }
+
+ virtual void
+ wing_span (unsigned int v)
+ {
+ cout &lt;&lt; "wing-span: " &lt;&lt; v &lt;&lt; endl;
+ }
+
+ virtual void
+ post_superman ()
+ {
+ post_batman ();
+ }
+
+ virtual void
+ post_batman ()
+ {
+ cout &lt;&lt; "finished parsing batman" &lt;&lt; endl;
+ }
+};
+ </pre>
+
+ <p>Note that because the derived type parsers (<code>superman_pskel</code>
+ and <code>batman_pskel</code>) are called via the <code>person_pskel</code>
+ interface, we have to override the <code>post_person()</code>
+ virtual function in <code>superman_pimpl</code> to call
+ <code>post_superman()</code> and the <code>post_superman()</code>
+ virtual function in <code>batman_pimpl</code> to call
+ <code>post_batman()</code>.</p>
+
+ <p>The following code fragment shows how to connect the parsers together.
+ Notice that for the <code>person</code> element in the <code>supermen_p</code>
+ parser we specify a parser map instead of a specific parser and we pass
+ <code>true</code> as the last argument to the document parser constructor
+ to indicate that we are parsing potentially-polymorphic XML documents:</p>
+
+ <pre class="c++">
+int
+main (int argc, char* argv[])
+{
+ // Construct the parser.
+ //
+ xml_schema::string_pimpl string_p;
+ xml_schema::boolean_pimpl boolean_p;
+ xml_schema::unsigned_int_pimpl unsigned_int_p;
+
+ person_pimpl person_p;
+ superman_pimpl superman_p;
+ batman_pimpl batman_p;
+
+ xml_schema::parser_map_impl person_map;
+ supermen_pimpl supermen_p;
+
+ person_p.parsers (string_p);
+ superman_p.parsers (string_p, boolean_p);
+ batman_p.parsers (string_p, boolean_p, unsigned_int_p);
+
+ // Here we are specifying a parser map which containes several
+ // parsers that can be used to parse the person element.
+ //
+ person_map.insert (person_p);
+ person_map.insert (superman_p);
+ person_map.insert (batman_p);
+
+ supermen_p.person_parser (person_map);
+
+ // Parse the XML document. The last argument to the document's
+ // constructor indicates that we are parsing polymorphic XML
+ // documents.
+ //
+ xml_schema::document doc_p (supermen_p, "supermen", true);
+
+ supermen_p.pre ();
+ doc_p.parse (argv[1]);
+ supermen_p.post_supermen ();
+}
+ </pre>
+
+ <p>When polymorphism-aware code is generated, each element's
+ <code>*_parser()</code> function is overloaded to also accept
+ an object of the <code>xml_schema::parser_map</code> type.
+ For example, the <code>supermen_pskel</code> class from the
+ above example looks like this:</p>
+
+ <pre class="c++">
+class supermen_pskel: public xml_schema::parser_complex_content
+{
+public:
+
+ ...
+
+ // Parser construction API.
+ //
+ void
+ parsers (person_pskel&amp;);
+
+ // Individual element parsers.
+ //
+ void
+ person_parser (person_pskel&amp;);
+
+ void
+ person_parser (const xml_schema::parser_map&amp;);
+
+ ...
+};
+ </pre>
+
+ <p>Note that you can specify both the individual (static) parser and
+ the parser map. The individual parser will be used when the static
+ element type and the dynamic type of the object being parsed are
+ the same. This is the case, for example, when there is no
+ <code>xsi:type</code> attribute and the element hasn't been
+ substituted. Because the individual parser for an element is
+ cached and no map lookup is necessary, it makes sense to specify
+ both the individual parser and the parser map when most of the
+ objects being parsed are of the static type and optimal
+ performance is important. The following code fragment shows
+ how to change the above example to set both the individual
+ parser and the parser map:</p>
+
+ <pre class="c++">
+int
+main (int argc, char* argv[])
+{
+ ...
+
+ person_map.insert (superman_p);
+ person_map.insert (batman_p);
+
+ supermen_p.person_parser (person_p);
+ supermen_p.person_parser (person_map);
+
+ ...
+}
+ </pre>
+
+
+ <p>The <code>xml_schema::parser_map</code> interface and the
+ <code>xml_schema::parser_map_impl</code> default implementation
+ are presented below:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class parser_map
+ {
+ public:
+ virtual parser_base*
+ find (const ro_string* type) const = 0;
+ };
+
+ class parser_map_impl: public parser_map
+ {
+ public:
+ void
+ insert (parser_base&amp;);
+
+ virtual parser_base*
+ find (const ro_string* type) const;
+
+ private:
+ parser_map_impl (const parser_map_impl&amp;);
+
+ parser_map_impl&amp;
+ operator= (const parser_map_impl&amp;);
+
+ ...
+ };
+}
+ </pre>
+
+ <p>The <code>type</code> argument in the <code>find()</code> virtual
+ function is the type name and namespace from the xsi:type attribute
+ (the namespace prefix is resolved to the actual XML namespace)
+ or the type of an element from the substitution group in the form
+ <code>"&lt;name>&nbsp;&lt;namespace>"</code> with the space and the
+ namespace part absent if the type does not have a namespace.
+ You can obtain a parser's dynamic type in the same format
+ using the <code>_dynamic_type()</code> function. The static
+ type can be obtained by calling the static <code>_static_type()</code>
+ function, for example <code>person_pskel::_static_type()</code>.
+ Both functions return a C string (<code>const char*</code> or
+ <code>const wchar_t*</code>, depending on the character type
+ used) which is valid for as long as the application is running.
+ The following example shows how we can implement our own parser
+ map using <code>std::map</code>:</p>
+
+
+ <pre class="c++">
+#include &lt;map>
+#include &lt;string>
+
+class parser_map: public xml_schema::parser_map
+{
+public:
+ void
+ insert (xml_schema::parser_base&amp; p)
+ {
+ map_[p._dynamic_type ()] = &amp;p;
+ }
+
+ virtual xml_schema::parser_base*
+ find (const xml_schema::ro_string* type) const
+ {
+ map::const_iterator i = map_.find (type);
+ return i != map_.end () ? i->second : 0;
+ }
+
+private:
+ typedef std::map&lt;std::string, xml_schema::parser_base*> map;
+ map map_;
+};
+ </pre>
+
+ <p>Most of code presented in this section is taken from the
+ <code>polymorphism</code> example which can be found in the
+ <code>cxx/parser/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package.
+ Handling of <code>xsi:type</code> and substitution groups when used on
+ root elements requires a number of special actions as shown in
+ the <code>polyroot</code> example.</p>
+
+
+ <!-- Built-in XML Schema Type Parsers -->
+
+
+ <h1><a name="6">6 Built-In XML Schema Type Parsers</a></h1>
+
+ <p>The XSD runtime provides parser implementations for all built-in
+ XML Schema types as summarized in the following table. Declarations
+ for these types are automatically included into each generated
+ header file. As a result you don't need to include any headers
+ to gain access to these parser implementations. Note that some
+ parsers return either <code>std::string</code> or
+ <code>std::wstring</code> depending on the character type selected.</p>
+
+ <!-- border="1" is necessary for html2ps -->
+ <table id="builtin" border="1">
+ <tr>
+ <th>XML Schema type</th>
+ <th>Parser implementation in the <code>xml_schema</code> namespace</th>
+ <th>Parser return type</th>
+ </tr>
+
+ <tr>
+ <th colspan="3">anyType and anySimpleType types</th>
+ </tr>
+ <tr>
+ <td><code>anyType</code></td>
+ <td><code>any_type_pimpl</code></td>
+ <td><code>void</code></td>
+ </tr>
+ <tr>
+ <td><code>anySimpleType</code></td>
+ <td><code>any_simple_type_pimpl</code></td>
+ <td><code>void</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-length integral types</th>
+ </tr>
+ <!-- 8-bit -->
+ <tr>
+ <td><code>byte</code></td>
+ <td><code>byte_pimpl</code></td>
+ <td><code>signed&nbsp;char</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedByte</code></td>
+ <td><code>unsigned_byte_pimpl</code></td>
+ <td><code>unsigned&nbsp;char</code></td>
+ </tr>
+
+ <!-- 16-bit -->
+ <tr>
+ <td><code>short</code></td>
+ <td><code>short_pimpl</code></td>
+ <td><code>short</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedShort</code></td>
+ <td><code>unsigned_short_pimpl</code></td>
+ <td><code>unsigned&nbsp;short</code></td>
+ </tr>
+
+ <!-- 32-bit -->
+ <tr>
+ <td><code>int</code></td>
+ <td><code>int_pimpl</code></td>
+ <td><code>int</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedInt</code></td>
+ <td><code>unsigned_int_pimpl</code></td>
+ <td><code>unsigned&nbsp;int</code></td>
+ </tr>
+
+ <!-- 64-bit -->
+ <tr>
+ <td><code>long</code></td>
+ <td><code>long_pimpl</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedLong</code></td>
+ <td><code>unsigned_long_pimpl</code></td>
+ <td><code>unsigned&nbsp;long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-length integral types</th>
+ </tr>
+ <tr>
+ <td><code>integer</code></td>
+ <td><code>integer_pimpl</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonPositiveInteger</code></td>
+ <td><code>non_positive_integer_pimpl</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonNegativeInteger</code></td>
+ <td><code>non_negative_integer_pimpl</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>positiveInteger</code></td>
+ <td><code>positive_integer_pimpl</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>negativeInteger</code></td>
+ <td><code>negative_integer_pimpl</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">boolean types</th>
+ </tr>
+ <tr>
+ <td><code>boolean</code></td>
+ <td><code>boolean_pimpl</code></td>
+ <td><code>bool</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>float</code></td>
+ <td><code>float_pimpl</code></td>
+ <td><code>float</code></td>
+ </tr>
+ <tr>
+ <td><code>double</code></td>
+ <td><code>double_pimpl</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>decimal</code></td>
+ <td><code>decimal_pimpl</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">string-based types</th>
+ </tr>
+ <tr>
+ <td><code>string</code></td>
+ <td><code>string_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>normalizedString</code></td>
+ <td><code>normalized_string_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>token</code></td>
+ <td><code>token_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>Name</code></td>
+ <td><code>name_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>NMTOKEN</code></td>
+ <td><code>nmtoken_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>NCName</code></td>
+ <td><code>ncname_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+
+ <tr>
+ <td><code>language</code></td>
+ <td><code>language_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">qualified name</th>
+ </tr>
+ <tr>
+ <td><code>QName</code></td>
+ <td><code>qname_pimpl</code></td>
+ <td><code>xml_schema::qname</code><br/><a href="#6.1">Section 6.1,
+ "<code>QName</code> Parser"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">ID/IDREF types</th>
+ </tr>
+ <tr>
+ <td><code>ID</code></td>
+ <td><code>id_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>IDREF</code></td>
+ <td><code>idref_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">list types</th>
+ </tr>
+ <tr>
+ <td><code>NMTOKENS</code></td>
+ <td><code>nmtokens_pimpl</code></td>
+ <td><code>xml_schema::string_sequence</code><br/><a href="#6.2">Section
+ 6.2, "<code>NMTOKENS</code> and <code>IDREFS</code> Parsers"</a></td>
+ </tr>
+ <tr>
+ <td><code>IDREFS</code></td>
+ <td><code>idrefs_pimpl</code></td>
+ <td><code>xml_schema::string_sequence</code><br/><a href="#6.2">Section
+ 6.2, "<code>NMTOKENS</code> and <code>IDREFS</code> Parsers"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">URI types</th>
+ </tr>
+ <tr>
+ <td><code>anyURI</code></td>
+ <td><code>uri_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">binary types</th>
+ </tr>
+ <tr>
+ <td><code>base64Binary</code></td>
+ <td><code>base64_binary_pimpl</code></td>
+ <td><code>std::[unique|auto]_ptr&lt; xml_schema::buffer></code><br/>
+ <a href="#6.3">Section 6.3, "<code>base64Binary</code> and
+ <code>hexBinary</code> Parsers"</a></td>
+ </tr>
+ <tr>
+ <td><code>hexBinary</code></td>
+ <td><code>hex_binary_pimpl</code></td>
+ <td><code>std::[unique|auto]_ptr&lt; xml_schema::buffer></code><br/>
+ <a href="#6.3">Section 6.3, "<code>base64Binary</code> and
+ <code>hexBinary</code> Parsers"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">date/time types</th>
+ </tr>
+ <tr>
+ <td><code>date</code></td>
+ <td><code>date_pimpl</code></td>
+ <td><code>xml_schema::date</code><br/><a href="#6.5">Section 6.5,
+ "<code>date</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>dateTime</code></td>
+ <td><code>date_time_pimpl</code></td>
+ <td><code>xml_schema::date_time</code><br/><a href="#6.6">Section 6.6,
+ "<code>dateTime</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>duration</code></td>
+ <td><code>duration_pimpl</code></td>
+ <td><code>xml_schema::duration</code><br/><a href="#6.7">Section 6.7,
+ "<code>duration</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>gDay</code></td>
+ <td><code>gday_pimpl</code></td>
+ <td><code>xml_schema::gday</code><br/><a href="#6.8">Section 6.8,
+ "<code>gDay</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>gMonth</code></td>
+ <td><code>gmonth_pimpl</code></td>
+ <td><code>xml_schema::gmonth</code><br/><a href="#6.9">Section 6.9,
+ "<code>gMonth</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>gMonthDay</code></td>
+ <td><code>gmonth_day_pimpl</code></td>
+ <td><code>xml_schema::gmonth_day</code><br/><a href="#6.10">Section 6.10,
+ "<code>gMonthDay</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>gYear</code></td>
+ <td><code>gyear_pimpl</code></td>
+ <td><code>xml_schema::gyear</code><br/><a href="#6.11">Section 6.11,
+ "<code>gYear</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>gYearMonth</code></td>
+ <td><code>gyear_month_pimpl</code></td>
+ <td><code>xml_schema::gyear_month</code><br/><a href="#6.12">Section
+ 6.12, "<code>gYearMonth</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>time</code></td>
+ <td><code>time_pimpl</code></td>
+ <td><code>xml_schema::time</code><br/><a href="#6.13">Section 6.13,
+ "<code>time</code> Parser"</a></td>
+ </tr>
+
+ </table>
+
+ <h2><a name="6.1">6.1 <code>QName</code> Parser</a></h2>
+
+ <p>The return type of the <code>qname_pimpl</code> parser implementation
+ is <code>xml_schema::qname</code> which represents an XML qualified
+ name. Its interface is presented below.
+ Note that the <code>std::string</code> type in the interface becomes
+ <code>std::wstring</code> if the selected character type is
+ <code>wchar_t</code>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class qname
+ {
+ public:
+ explicit
+ qname (const std::string&amp; name);
+ qname (const std::string&amp; prefix, const std::string&amp; name);
+
+ const std::string&amp;
+ prefix () const;
+
+ void
+ prefix (const std::string&amp;);
+
+ const std::string&amp;
+ name () const;
+
+ void
+ name (const std::string&amp;);
+ };
+
+ bool
+ operator== (const qname&amp;, const qname&amp;);
+
+ bool
+ operator!= (const qname&amp;, const qname&amp;);
+}
+ </pre>
+
+
+ <h2><a name="6.2">6.2 <code>NMTOKENS</code> and <code>IDREFS</code> Parsers</a></h2>
+
+ <p>The return type of the <code>nmtokens_pimpl</code> and
+ <code>idrefs_pimpl</code> parser implementations is
+ <code>xml_schema::string_sequence</code> which represents a
+ sequence of strings. Its interface is presented below.
+ Note that the <code>std::string</code> type in the interface becomes
+ <code>std::wstring</code> if the selected character type is
+ <code>wchar_t</code>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class string_sequence: public std::vector&lt;std::string>
+ {
+ public:
+ string_sequence ();
+
+ explicit
+ string_sequence (std::vector&lt;std::string>::size_type n,
+ const std::string&amp; x = std::string ());
+
+ template &lt;typename I>
+ string_sequence (const I&amp; begin, const I&amp; end);
+ };
+
+ bool
+ operator== (const string_sequence&amp;, const string_sequence&amp;);
+
+ bool
+ operator!= (const string_sequence&amp;, const string_sequence&amp;);
+}
+ </pre>
+
+
+ <h2><a name="6.3">6.3 <code>base64Binary</code> and <code>hexBinary</code> Parsers</a></h2>
+
+ <p>The return type of the <code>base64_binary_pimpl</code> and
+ <code>hex_binary_pimpl</code> parser implementations is either
+ <code>std::unique_ptr&lt;xml_schema::buffer></code> (C++11) or
+ <code>std::auto_ptr&lt;xml_schema::buffer></code> (C++98),
+ depending on the C++ standard selected (<code>--std</code> XSD
+ compiler option). The <code>xml_schema::buffer</code> type
+ represents a binary buffer and its interface is presented below.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class buffer
+ {
+ public:
+ typedef std::size_t size_t;
+
+ class bounds {}; // Out of bounds exception.
+
+ public:
+ explicit
+ buffer (size_t size = 0);
+ buffer (size_t size, size_t capacity);
+ buffer (const void* data, size_t size);
+ buffer (const void* data, size_t size, size_t capacity);
+ buffer (void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership);
+
+ public:
+ buffer (const buffer&amp;);
+
+ buffer&amp;
+ operator= (const buffer&amp;);
+
+ void
+ swap (buffer&amp;);
+
+ public:
+ size_t
+ capacity () const;
+
+ bool
+ capacity (size_t);
+
+ public:
+ size_t
+ size () const;
+
+ bool
+ size (size_t);
+
+ public:
+ const char*
+ data () const;
+
+ char*
+ data ();
+
+ const char*
+ begin () const;
+
+ char*
+ begin ();
+
+ const char*
+ end () const;
+
+ char*
+ end ();
+ };
+
+ bool
+ operator== (const buffer&amp;, const buffer&amp;);
+
+ bool
+ operator!= (const buffer&amp;, const buffer&amp;);
+}
+ </pre>
+
+ <p>If the <code>assume_ownership</code> argument to the constructor
+ is <code>true</code>, the instance assumes the ownership of the
+ memory block pointed to by the <code>data</code> argument and will
+ eventually release it by calling <code>operator delete()</code>. The
+ <code>capacity()</code> and <code>size()</code> modifier functions
+ return <code>true</code> if the underlying buffer has moved.
+ </p>
+
+ <p>The <code>bounds</code> exception is thrown if the constructor
+ arguments violate the <code>(size&nbsp;&lt;=&nbsp;capacity)</code>
+ constraint.</p>
+
+
+ <h2><a name="6.4">6.4 Time Zone Representation</a></h2>
+
+ <p>The <code>date</code>, <code>dateTime</code>, <code>gDay</code>,
+ <code>gMonth</code>, <code>gMonthDay</code>, <code>gYear</code>,
+ <code>gYearMonth</code>, and <code>time</code> XML Schema built-in
+ types all include an optional time zone component. The following
+ <code>xml_schema::time_zone</code> base class is used to represent
+ this information:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class time_zone
+ {
+ public:
+ time_zone ();
+ time_zone (short hours, short minutes);
+
+ bool
+ zone_present () const;
+
+ void
+ zone_reset ();
+
+ short
+ zone_hours () const;
+
+ void
+ zone_hours (short);
+
+ short
+ zone_minutes () const;
+
+ void
+ zone_minutes (short);
+ };
+
+ bool
+ operator== (const time_zone&amp;, const time_zone&amp;);
+
+ bool
+ operator!= (const time_zone&amp;, const time_zone&amp;);
+}
+ </pre>
+
+ <p>The <code>zone_present()</code> accessor function returns <code>true</code>
+ if the time zone is specified. The <code>zone_reset()</code> modifier
+ function resets the time zone object to the <em>not specified</em>
+ state. If the time zone offset is negative then both hours and
+ minutes components are represented as negative integers.</p>
+
+
+ <h2><a name="6.5">6.5 <code>date</code> Parser</a></h2>
+
+ <p>The return type of the <code>date_pimpl</code> parser implementation
+ is <code>xml_schema::date</code> which represents a year, a day, and a month
+ with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class date
+ {
+ public:
+ date (int year, unsigned short month, unsigned short day);
+ date (int year, unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes);
+
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+ };
+
+ bool
+ operator== (const date&amp;, const date&amp;);
+
+ bool
+ operator!= (const date&amp;, const date&amp;);
+}
+ </pre>
+
+ <h2><a name="6.6">6.6 <code>dateTime</code> Parser</a></h2>
+
+ <p>The return type of the <code>date_time_pimpl</code> parser implementation
+ is <code>xml_schema::date_time</code> which represents a year, a month, a day,
+ hours, minutes, and seconds with an optional time zone. Its interface
+ is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class date_time
+ {
+ public:
+ date_time (int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds);
+
+ date_time (int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds, short zone_hours, short zone_minutes);
+
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+
+ unsigned short
+ hours () const;
+
+ void
+ hours (unsigned short);
+
+ unsigned short
+ minutes () const;
+
+ void
+ minutes (unsigned short);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+ };
+
+ bool
+ operator== (const date_time&amp;, const date_time&amp;);
+
+ bool
+ operator!= (const date_time&amp;, const date_time&amp;);
+}
+ </pre>
+
+ <h2><a name="6.7">6.7 <code>duration</code> Parser</a></h2>
+
+ <p>The return type of the <code>duration_pimpl</code> parser implementation
+ is <code>xml_schema::duration</code> which represents a potentially
+ negative duration in the form of years, months, days, hours, minutes,
+ and seconds. Its interface is presented below.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class duration
+ {
+ public:
+ duration (bool negative,
+ unsigned int years, unsigned int months, unsigned int days,
+ unsigned int hours, unsigned int minutes, double seconds);
+
+ bool
+ negative () const;
+
+ void
+ negative (bool);
+
+ unsigned int
+ years () const;
+
+ void
+ years (unsigned int);
+
+ unsigned int
+ months () const;
+
+ void
+ months (unsigned int);
+
+ unsigned int
+ days () const;
+
+ void
+ days (unsigned int);
+
+ unsigned int
+ hours () const;
+
+ void
+ hours (unsigned int);
+
+ unsigned int
+ minutes () const;
+
+ void
+ minutes (unsigned int);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+ };
+
+ bool
+ operator== (const duration&amp;, const duration&amp;);
+
+ bool
+ operator!= (const duration&amp;, const duration&amp;);
+}
+ </pre>
+
+
+ <h2><a name="6.8">6.8 <code>gDay</code> Parser</a></h2>
+
+ <p>The return type of the <code>gday_pimpl</code> parser implementation
+ is <code>xml_schema::gday</code> which represents a day of the month with
+ an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class gday
+ {
+ public:
+ explicit
+ gday (unsigned short day);
+ gday (unsigned short day, short zone_hours, short zone_minutes);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+ };
+
+ bool
+ operator== (const gday&amp;, const gday&amp;);
+
+ bool
+ operator!= (const gday&amp;, const gday&amp;);
+}
+ </pre>
+
+ <h2><a name="6.9">6.9 <code>gMonth</code> Parser</a></h2>
+
+ <p>The return type of the <code>gmonth_pimpl</code> parser implementation
+ is <code>xml_schema::gmonth</code> which represents a month of the year
+ with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class gmonth
+ {
+ public:
+ explicit
+ gmonth (unsigned short month);
+ gmonth (unsigned short month, short zone_hours, short zone_minutes);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+ };
+
+ bool
+ operator== (const gmonth&amp;, const gmonth&amp;);
+
+ bool
+ operator!= (const gmonth&amp;, const gmonth&amp;);
+}
+ </pre>
+
+ <h2><a name="6.10">6.10 <code>gMonthDay</code> Parser</a></h2>
+
+ <p>The return type of the <code>gmonth_day_pimpl</code> parser implementation
+ is <code>xml_schema::gmonth_day</code> which represents a day and a month
+ of the year with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class gmonth_day
+ {
+ public:
+ gmonth_day (unsigned short month, unsigned short day);
+ gmonth_day (unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+ };
+
+ bool
+ operator== (const gmonth_day&amp;, const gmonth_day&amp;);
+
+ bool
+ operator!= (const gmonth_day&amp;, const gmonth_day&amp;);
+}
+ </pre>
+
+ <h2><a name="6.11">6.11 <code>gYear</code> Parser</a></h2>
+
+ <p>The return type of the <code>gyear_pimpl</code> parser implementation
+ is <code>xml_schema::gyear</code> which represents a year with
+ an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class gyear
+ {
+ public:
+ explicit
+ gyear (int year);
+ gyear (int year, short zone_hours, short zone_minutes);
+
+ int
+ year () const;
+
+ void
+ year (int);
+ };
+
+ bool
+ operator== (const gyear&amp;, const gyear&amp;);
+
+ bool
+ operator!= (const gyear&amp;, const gyear&amp;);
+}
+ </pre>
+
+ <h2><a name="6.12">6.12 <code>gYearMonth</code> Parser</a></h2>
+
+ <p>The return type of the <code>gyear_month_pimpl</code> parser implementation
+ is <code>xml_schema::gyear_month</code> which represents a year and a month
+ with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class gyear_month
+ {
+ public:
+ gyear_month (int year, unsigned short month);
+ gyear_month (int year, unsigned short month,
+ short zone_hours, short zone_minutes);
+
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+ };
+
+ bool
+ operator== (const gyear_month&amp;, const gyear_month&amp;);
+
+ bool
+ operator!= (const gyear_month&amp;, const gyear_month&amp;);
+}
+ </pre>
+
+
+ <h2><a name="6.13">6.13 <code>time</code> Parser</a></h2>
+
+ <p>The return type of the <code>time_pimpl</code> parser implementation
+ is <code>xml_schema::time</code> which represents hours, minutes,
+ and seconds with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class time
+ {
+ public:
+ time (unsigned short hours, unsigned short minutes, double seconds);
+ time (unsigned short hours, unsigned short minutes, double seconds,
+ short zone_hours, short zone_minutes);
+
+ unsigned short
+ hours () const;
+
+ void
+ hours (unsigned short);
+
+ unsigned short
+ minutes () const;
+
+ void
+ minutes (unsigned short);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+ };
+
+ bool
+ operator== (const time&amp;, const time&amp;);
+
+ bool
+ operator!= (const time&amp;, const time&amp;);
+}
+ </pre>
+
+
+ <!-- Error Handling -->
+
+
+ <h1><a name="7">7 Document Parser and Error Handling</a></h1>
+
+ <p>In this chapter we will discuss the <code>xml_schema::document</code>
+ type as well as the error handling mechanisms provided by the mapping
+ in more detail. As mentioned in <a href="#3.4">Section 3.4,
+ "Connecting the Parsers Together"</a>, the interface of
+ <code>xml_schema::document</code> depends on the underlying XML
+ parser selected (<a href="#5.3">Section 5.3, "Underlying XML
+ Parser"</a>). The following sections describe the
+ <code>document</code> type interface for Xerces-C++ and
+ Expat as underlying parsers.</p>
+
+ <h2><a name="7.1">7.1 Xerces-C++ Document Parser</a></h2>
+
+ <p>When Xerces-C++ is used as the underlying XML parser, the
+ <code>document</code> type has the following interface. Note that
+ if the character type is <code>wchar_t</code>, then the string type
+ in the interface becomes <code>std::wstring</code>
+ (see <a href="#5.2">Section 5.2, "Character Type and Encoding"</a>).</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class parser_base;
+ class error_handler;
+
+ class flags
+ {
+ public:
+ // Do not validate XML documents with the Xerces-C++ validator.
+ //
+ static const unsigned long dont_validate;
+
+ // Do not initialize the Xerces-C++ runtime.
+ //
+ static const unsigned long dont_initialize;
+
+ // Disable handling of subsequent imports for the same namespace
+ // in Xerces-C++ 3.1.0 and later.
+ //
+ static const unsigned long no_multiple_imports;
+ };
+
+ class properties
+ {
+ public:
+ // Add a location for a schema with a target namespace.
+ //
+ void
+ schema_location (const std::string&amp; namespace_,
+ const std::string&amp; location);
+
+ // Add a location for a schema without a target namespace.
+ //
+ void
+ no_namespace_schema_location (const std::string&amp; location);
+ };
+
+ class document
+ {
+ public:
+ document (parser_base&amp; root,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ document (parser_base&amp; root,
+ const std::string&amp; root_element_namespace,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ public:
+ // Parse URI or a local file.
+ //
+ void
+ parse (const std::string&amp; uri,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse URI or a local file with a user-provided error_handler
+ // object.
+ //
+ void
+ parse (const std::string&amp; uri,
+ error_handler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse URI or a local file with a user-provided ErrorHandler
+ // object. Note that you must initialize the Xerces-C++ runtime
+ // before calling this function.
+ //
+ void
+ parse (const std::string&amp; uri,
+ xercesc::ErrorHandler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse URI or a local file using a user-provided SAX2XMLReader
+ // object. Note that you must initialize the Xerces-C++ runtime
+ // before calling this function.
+ //
+ void
+ parse (const std::string&amp; uri,
+ xercesc::SAX2XMLReader&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ public:
+ // Parse std::istream.
+ //
+ void
+ parse (std::istream&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with a user-provided error_handler object.
+ //
+ void
+ parse (std::istream&amp;,
+ error_handler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with a user-provided ErrorHandler object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ xercesc::ErrorHandler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream using a user-provided SAX2XMLReader object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ xercesc::SAX2XMLReader&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ public:
+ // Parse std::istream with a system id.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with a system id and a user-provided
+ // error_handler object.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ error_handler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with a system id and a user-provided
+ // ErrorHandler object. Note that you must initialize the
+ // Xerces-C++ runtime before calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ xercesc::ErrorHandler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with a system id using a user-provided
+ // SAX2XMLReader object. Note that you must initialize the
+ // Xerces-C++ runtime before calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ xercesc::SAX2XMLReader&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ public:
+ // Parse std::istream with system and public ids.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with system and public ids and a user-provided
+ // error_handler object.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ error_handler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with system and public ids and a user-provided
+ // ErrorHandler object. Note that you must initialize the Xerces-C++
+ // runtime before calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ xercesc::ErrorHandler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with system and public ids using a user-
+ // provided SAX2XMLReader object. Note that you must initialize
+ // the Xerces-C++ runtime before calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ xercesc::SAX2XMLReader&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ public:
+ // Parse InputSource. Note that you must initialize the Xerces-C++
+ // runtime before calling this function.
+ //
+ void
+ parse (const xercesc::InputSource&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse InputSource with a user-provided error_handler object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse (const xercesc::InputSource&amp;,
+ error_handler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse InputSource with a user-provided ErrorHandler object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse (const xercesc::InputSource&amp;,
+ xercesc::ErrorHandler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse InputSource using a user-provided SAX2XMLReader object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse (const xercesc::InputSource&amp;,
+ xercesc::SAX2XMLReader&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+ };
+}
+ </pre>
+
+ <p>The <code>document</code> class is a root parser for
+ the vocabulary. The first argument to its constructors is the
+ parser for the type of the root element. The <code>parser_base</code>
+ class is the base type for all parser skeletons. The second and
+ third arguments to the <code>document</code>'s constructors are
+ the root element's name and namespace. The last argument,
+ <code>polymorphic</code>, specifies whether the XML documents
+ being parsed use polymorphism. For more information on support
+ for XML Schema polymorphism in the C++/Parser mapping refer
+ to <a href="#5.5">Section 5.5, "Support for Polymorphism"</a>.</p>
+
+ <p>The rest of the <code>document</code> interface consists of overloaded
+ <code>parse()</code> functions. The last two arguments in each of these
+ functions are <code>flags</code> and <code>properties</code>. The
+ <code>flags</code> argument allows you to modify the default behavior
+ of the parsing functions. The <code>properties</code> argument allows
+ you to override the schema location attributes specified in XML
+ documents. Note that the schema location paths are relative to an
+ XML document unless they are complete URIs. For example if you want
+ to use a local schema file then you will need to use a URI in the
+ form <code>file:///absolute/path/to/your/schema</code>.</p>
+
+ <p>A number of overloaded <code>parse()</code> functions have the
+ <code>system_id</code> and <code>public_id</code> arguments. The
+ system id is a <em>system</em> identifier of the resources being
+ parsed (for example, URI or a full file path). The public id is a
+ <em>public</em> identifier of the resource (for example, an
+ application-specific name or a relative file path). The system id
+ is used to resolve relative paths (for example, schema paths). In
+ diagnostics messages the public id is used if it is available.
+ Otherwise the system id is used.</p>
+
+ <p>The error handling mechanisms employed by the <code>document</code>
+ parser are described in <a href="#7.3">Section 7.3, "Error
+ Handling"</a>.</p>
+
+ <h2><a name="7.2">7.2 Expat Document Parser</a></h2>
+
+ <p>When Expat is used as the underlying XML parser, the
+ <code>document</code> type has the following interface. Note that
+ if the character type is <code>wchar_t</code>, then the string type
+ in the interface becomes <code>std::wstring</code>
+ (see <a href="#5.2">Section 5.2, "Character Type and Encoding"</a>).</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class parser_base;
+ class error_handler;
+
+ class document
+ {
+ public:
+ document (parser_base&amp;,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ document (parser_base&amp;,
+ const std::string&amp; root_element_namespace,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ public:
+ // Parse a local file. The file is accessed with std::ifstream
+ // in binary mode. The std::ios_base::failure exception is used
+ // to report io errors (badbit and failbit).
+ void
+ parse (const std::string&amp; file);
+
+ // Parse a local file with a user-provided error_handler
+ // object. The file is accessed with std::ifstream in binary
+ // mode. The std::ios_base::failure exception is used to report
+ // io errors (badbit and failbit).
+ //
+ void
+ parse (const std::string&amp; file, error_handler&amp;);
+
+ public:
+ // Parse std::istream.
+ //
+ void
+ parse (std::istream&amp;);
+
+ // Parse std::istream with a user-provided error_handler object.
+ //
+ void
+ parse (std::istream&amp;, error_handler&amp;);
+
+ // Parse std::istream with a system id.
+ //
+ void
+ parse (std::istream&amp;, const std::string&amp; system_id);
+
+ // Parse std::istream with a system id and a user-provided
+ // error_handler object.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ error_handler&amp;);
+
+ // Parse std::istream with system and public ids.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id);
+
+ // Parse std::istream with system and public ids and a user-provided
+ // error_handler object.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ error_handler&amp;);
+
+ public:
+ // Parse a chunk of input. You can call these functions multiple
+ // times with the last call having the last argument true.
+ //
+ void
+ parse (const void* data, std::size_t size, bool last);
+
+ void
+ parse (const void* data, std::size_t size, bool last,
+ error_handler&amp;);
+
+ void
+ parse (const void* data, std::size_t size, bool last,
+ const std::string&amp; system_id);
+
+ void
+ parse (const void* data, std::size_t size, bool last,
+ const std::string&amp; system_id,
+ error_handler&amp;);
+
+ void
+ parse (const void* data, std::size_t size, bool last,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id);
+
+ void
+ parse (const void* data, std::size_t size, bool last,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ error_handler&amp;);
+
+ public:
+ // Low-level Expat-specific parsing API.
+ //
+ void
+ parse_begin (XML_Parser);
+
+ void
+ parse_begin (XML_Parser, const std::string&amp; public_id);
+
+ void
+ parse_begin (XML_Parser, error_handler&amp;);
+
+ void
+ parse_begin (XML_Parser,
+ const std::string&amp; public_id,
+ error_handler&amp;);
+ void
+ parse_end ();
+ };
+}
+ </pre>
+
+ <p>The <code>document</code> class is a root parser for
+ the vocabulary. The first argument to its constructors is the
+ parser for the type of the root element. The <code>parser_base</code>
+ class is the base type for all parser skeletons. The second and
+ third arguments to the <code>document</code>'s constructors are
+ the root element's name and namespace. The last argument,
+ <code>polymorphic</code>, specifies whether the XML documents
+ being parsed use polymorphism. For more information on support
+ for XML Schema polymorphism in the C++/Parser mapping refer
+ to <a href="#5.5">Section 5.5, "Support for Polymorphism"</a>.</p>
+
+ <p>A number of overloaded <code>parse()</code> functions have the
+ <code>system_id</code> and <code>public_id</code> arguments. The
+ system id is a <em>system</em> identifier of the resources being
+ parsed (for example, URI or a full file path). The public id is a
+ <em>public</em> identifier of the resource (for example, an
+ application-specific name or a relative file path). The system id
+ is used to resolve relative paths. In diagnostics messages the
+ public id is used if it is available. Otherwise the system id
+ is used.</p>
+
+ <p>The <code>parse_begin()</code> and <code>parse_end()</code> functions
+ present a low-level, Expat-specific parsing API for maximum control.
+ A typical use-case would look like this (pseudo-code):</p>
+
+ <pre class="c++">
+xxx_pimpl root_p;
+document doc_p (root_p, "root");
+
+root_p.pre ();
+doc_p.parse_begin (xml_parser, "file.xml");
+
+while (more_data_to_parse)
+{
+ // Call XML_Parse or XML_ParseBuffer.
+
+ if (status == XML_STATUS_ERROR)
+ break;
+}
+
+// Call parse_end even in case of an error to translate
+// XML and Schema errors to exceptions or error_handler
+// calls.
+//
+doc.parse_end ();
+result_type result (root_p.post_xxx ());
+ </pre>
+
+ <p>Note that if your vocabulary uses XML namespaces, the
+ <code>XML_ParserCreateNS()</code> functions should be used to create
+ the XML parser. Space (<code>XML_Char (' ')</code>) should be used
+ as a separator (the second argument to <code>XML_ParserCreateNS()</code>).
+ </p>
+
+ <p>The error handling mechanisms employed by the <code>document</code>
+ parser are described in <a href="#7.3">Section 7.3, "Error
+ Handling"</a>.</p>
+
+
+ <h2><a name="7.3">7.3 Error Handling</a></h2>
+
+ <p>There are three categories of errors that can result from running
+ a parser on an XML document: System, XML, and Application.
+ The System category contains memory allocation and file/stream
+ operation errors. The XML category covers XML parsing and
+ well-formedness checking as well as XML Schema validation errors.
+ Finally, the Application category is for application logic errors
+ that you may want to propagate from parser implementations to the
+ caller of the parser.
+ </p>
+
+ <p>The System errors are mapped to the standard exceptions. The
+ out of memory condition is indicated by throwing an instance
+ of <code>std::bad_alloc</code>. The stream operation errors
+ are reported either by throwing an instance of
+ <code>std::ios_base::failure</code> if exceptions are enabled
+ or by setting the stream state.</p>
+
+ <p>Note that if you are parsing <code>std::istream</code> on
+ which exceptions are not enabled, then you will need to
+ check the stream state before calling the <code>post()</code>
+ callback, as shown in the following example:</p>
+
+ <pre class="c++">
+int
+main (int argc, char* argv[])
+{
+ ...
+
+ std::ifstream ifs (argv[1]);
+
+ if (ifs.fail ())
+ {
+ cerr &lt;&lt; argv[1] &lt;&lt; ": unable to open" &lt;&lt; endl;
+ return 1;
+ }
+
+ root_p.pre ();
+ doc_p.parse (ifs);
+
+ if (ifs.fail ())
+ {
+ cerr &lt;&lt; argv[1] &lt;&lt; ": io failure" &lt;&lt; endl;
+ return 1;
+ }
+
+ result_type result (root_p.post_xxx ());
+}
+ </pre>
+
+ <p>The above example can be rewritten to use exceptions
+ as shown below:</p>
+
+ <pre class="c++">
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ ...
+
+ std::ifstream ifs;
+ ifs.exceptions (std::ifstream::badbit | std::ifstream::failbit);
+ ifs.open (argv[1]);
+
+ root_p.pre ();
+ doc_p.parse (ifs);
+ result_type result (root_p.post_xxx ());
+ }
+ catch (const std::ifstream::failure&amp;)
+ {
+ cerr &lt;&lt; argv[1] &lt;&lt; ": unable to open or io failure" &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+
+ <p>For reporting application errors from parsing callbacks, you
+ can throw any exceptions of your choice. They are propagated to
+ the caller of the parser without any alterations.</p>
+
+ <p>The XML errors can be reported either by throwing the
+ <code>xml_schema::parsing</code> exception or by a callback
+ to the <code>xml_schema::error_handler</code> object (and
+ <code>xercesc::ErrorHandler</code> object in case of Xerces-C++).</p>
+
+ <p>The <code>xml_schema::parsing</code> exception contains
+ a list of warnings and errors that were accumulated during
+ parsing. Note that this exception is thrown only if there
+ was an error. This makes it impossible to obtain warnings
+ from an otherwise successful parsing using this mechanism.
+ The following listing shows the definition of
+ <code>xml_schema::parsing</code> exception. Note that if the
+ character type is <code>wchar_t</code>, then the string type
+ and output stream type in the definition become
+ <code>std::wstring</code> and <code>std::wostream</code>,
+ respectively (see <a href="#5.2">Section 5.2, "Character Type
+ and Encoding"</a>).</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class exception: public std::exception
+ {
+ protected:
+ virtual void
+ print (std::ostream&amp;) const = 0;
+ };
+
+ inline std::ostream&amp;
+ operator&lt;&lt; (std::ostream&amp; os, const exception&amp; e)
+ {
+ e.print (os);
+ return os;
+ }
+
+
+ class severity
+ {
+ public:
+ enum value
+ {
+ warning,
+ error
+ };
+ };
+
+
+ class error
+ {
+ public:
+ error (xml_schema::severity,
+ const std::string&amp; id,
+ unsigned long line,
+ unsigned long column,
+ const std::string&amp; message);
+
+ xml_schema::severity
+ severity () const;
+
+ const std::string&amp;
+ id () const;
+
+ unsigned long
+ line () const;
+
+ unsigned long
+ column () const;
+
+ const std::string&amp;
+ message () const;
+ };
+
+ std::ostream&amp;
+ operator&lt;&lt; (std::ostream&amp;, const error&amp;);
+
+
+ class diagnostics: public std::vector&lt;error>
+ {
+ };
+
+ std::ostream&amp;
+ operator&lt;&lt; (std::ostream&amp;, const diagnostics&amp;);
+
+
+ class parsing: public exception
+ {
+ public:
+ parsing ();
+ parsing (const xml_schema::diagnostics&amp;);
+
+ const xml_schema::diagnostics&amp;
+ diagnostics () const;
+
+ virtual const char*
+ what () const throw ();
+
+ protected:
+ virtual void
+ print (std::ostream&amp;) const;
+ };
+}
+ </pre>
+
+ <p>The following example shows how we can catch and print this
+ exception. The code will print diagnostics messages one per line
+ in case of an error.</p>
+
+ <pre class="c++">
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ // Parse.
+ }
+ catch (const xml_schema::parsing&amp; e)
+ {
+ cerr &lt;&lt; e &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+ <p>With the <code>error_handler</code> approach the diagnostics
+ messages are delivered as parsing progresses. The following
+ listing presents the definition of the <code>error_handler</code>
+ interface. Note that if the character type is <code>wchar_t</code>,
+ then the string type in the interface becomes <code>std::wstring</code>
+ (see <a href="#5.2">Section 5.2, "Character Type and Encoding"</a>).</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class error_handler
+ {
+ public:
+ class severity
+ {
+ public:
+ enum value
+ {
+ warning,
+ error,
+ fatal
+ };
+ };
+
+ virtual bool
+ handle (const std::string&amp; id,
+ unsigned long line,
+ unsigned long column,
+ severity,
+ const std::string&amp; message) = 0;
+ };
+}
+ </pre>
+
+ <p>The return value of the <code>handle()</code> function indicates whether
+ parsing should continue if possible. The error with the fatal severity
+ level terminates the parsing process regardless of the returned value.
+ At the end of the parsing process with an error that was reported via
+ the <code>error_handler</code> object, an empty
+ <code>xml_schema::parsing</code> exception is thrown to indicate
+ the failure to the caller. You can alter this behavior by throwing
+ your own exception from the <code>handle()</code> function.</p>
+
+
+ <!-- Appendix A -->
+
+
+ <h1><a name="A">Appendix A &mdash; Supported XML Schema Constructs</a></h1>
+
+ <p>The C++/Parser mapping supports validation of the following W3C XML
+ Schema constructs in the generated code.</p>
+
+ <!-- border="1" is necessary for html2ps -->
+ <table id="features" border="1">
+ <tr><th>Construct</th><th>Notes</th></tr>
+ <tr><th colspan="2">Structure</th></tr>
+
+ <tr><td>element</td><td></td></tr>
+ <tr><td>attribute</td><td></td></tr>
+
+ <tr><td>any</td><td></td></tr>
+ <tr><td>anyAttribute</td><td></td></tr>
+
+ <tr><td>all</td><td></td></tr>
+ <tr><td>sequence</td><td></td></tr>
+ <tr><td>choice</td><td></td></tr>
+
+ <tr><td>complex type, empty content</td><td></td></tr>
+ <tr><td>complex type, mixed content</td><td></td></tr>
+ <tr><td>complex type, simple content extension</td><td></td></tr>
+ <tr><td>complex type, simple content restriction</td>
+ <td>Simple type facets are not validated.</td></tr>
+ <tr><td>complex type, complex content extension</td><td></td></tr>
+ <tr><td>complex type, complex content restriction</td><td></td></tr>
+
+ <tr><td>list</td><td></td></tr>
+
+ <tr><th colspan="2">Datatypes</th></tr>
+
+ <tr><td>byte</td><td></td></tr>
+ <tr><td>unsignedByte</td><td></td></tr>
+ <tr><td>short</td><td></td></tr>
+ <tr><td>unsignedShort</td><td></td></tr>
+ <tr><td>int</td><td></td></tr>
+ <tr><td>unsignedInt</td><td></td></tr>
+ <tr><td>long</td><td></td></tr>
+ <tr><td>unsignedLong</td><td></td></tr>
+ <tr><td>integer</td><td></td></tr>
+ <tr><td>nonPositiveInteger</td><td></td></tr>
+ <tr><td>nonNegativeInteger</td><td></td></tr>
+ <tr><td>positiveInteger</td><td></td></tr>
+ <tr><td>negativeInteger</td><td></td></tr>
+
+ <tr><td>boolean</td><td></td></tr>
+
+ <tr><td>float</td><td></td></tr>
+ <tr><td>double</td><td></td></tr>
+ <tr><td>decimal</td><td></td></tr>
+
+ <tr><td>string</td><td></td></tr>
+ <tr><td>normalizedString</td><td></td></tr>
+ <tr><td>token</td><td></td></tr>
+ <tr><td>Name</td><td></td></tr>
+ <tr><td>NMTOKEN</td><td></td></tr>
+ <tr><td>NCName</td><td></td></tr>
+ <tr><td>language</td><td></td></tr>
+ <tr><td>anyURI</td><td></td></tr>
+
+ <tr><td>ID</td><td>Identity constraint is not enforced.</td></tr>
+ <tr><td>IDREF</td><td>Identity constraint is not enforced.</td></tr>
+
+ <tr><td>NMTOKENS</td><td></td></tr>
+ <tr><td>IDREFS</td><td>Identity constraint is not enforced.</td></tr>
+
+ <tr><td>QName</td><td></td></tr>
+
+ <tr><td>base64Binary</td><td></td></tr>
+ <tr><td>hexBinary</td><td></td></tr>
+
+ <tr><td>date</td><td></td></tr>
+ <tr><td>dateTime</td><td></td></tr>
+ <tr><td>duration</td><td></td></tr>
+ <tr><td>gDay</td><td></td></tr>
+ <tr><td>gMonth</td><td></td></tr>
+ <tr><td>gMonthDay</td><td></td></tr>
+ <tr><td>gYear</td><td></td></tr>
+ <tr><td>gYearMonth</td><td></td></tr>
+ <tr><td>time</td><td></td></tr>
+ </table>
+
+
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/doc/cxx/parser/guide/index.xhtml.in b/doc/cxx/parser/guide/index.xhtml.in
new file mode 100644
index 0000000..119f421
--- /dev/null
+++ b/doc/cxx/parser/guide/index.xhtml.in
@@ -0,0 +1,4163 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+ <title>C++/Parser Mapping Getting Started Guide</title>
+
+ <meta name="copyright" content="&#169; @copyright@"/>
+ <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,parser,validation"/>
+ <meta name="description" content="C++/Parser Mapping Getting Started Guide"/>
+
+ <link rel="stylesheet" type="text/css" href="../../../default.css" />
+
+<style type="text/css">
+ pre {
+ padding : 0 0 0 0em;
+ margin : 0em 0em 0em 0;
+
+ font-size : 102%
+ }
+
+ body {
+ min-width: 48em;
+ }
+
+ h1 {
+ font-weight: bold;
+ font-size: 200%;
+ line-height: 1.2em;
+ }
+
+ h2 {
+ font-weight : bold;
+ font-size : 150%;
+
+ padding-top : 0.8em;
+ }
+
+ h3 {
+ font-size : 140%;
+ padding-top : 0.8em;
+ }
+
+ /* Adjust indentation for three levels. */
+ #container {
+ max-width: 48em;
+ }
+
+ #content {
+ padding: 0 0.1em 0 4em;
+ /*background-color: red;*/
+ }
+
+ #content h1 {
+ margin-left: -2.06em;
+ }
+
+ #content h2 {
+ margin-left: -1.33em;
+ }
+
+ /* Title page */
+
+ #titlepage {
+ padding: 2em 0 1em 0;
+ border-bottom: 1px solid black;
+ }
+
+ #titlepage .title {
+ font-weight: bold;
+ font-size: 200%;
+ text-align: center;
+ }
+
+ #titlepage #first-title {
+ padding: 1em 0 0.4em 0;
+ }
+
+ #titlepage #second-title {
+ padding: 0.4em 0 2em 0;
+ }
+
+ /* Lists */
+ ul.list li {
+ padding-top : 0.3em;
+ padding-bottom : 0.3em;
+ }
+
+ ol.steps {
+ padding-left : 1.8em;
+ }
+
+ ol.steps li {
+ padding-top : 0.3em;
+ padding-bottom : 0.3em;
+ }
+
+
+ div.img {
+ text-align: center;
+ padding: 2em 0 2em 0;
+ }
+
+ /* */
+ dl dt {
+ padding : 0.8em 0 0 0;
+ }
+
+ /* Built-in table */
+ #builtin {
+ margin: 2em 0 2em 0;
+
+ border-collapse : collapse;
+ border : 1px solid;
+ border-color : #000000;
+
+ font-size : 11px;
+ line-height : 14px;
+ }
+
+ #builtin th, #builtin td {
+ border: 1px solid;
+ padding : 0.9em 0.9em 0.7em 0.9em;
+ }
+
+ #builtin th {
+ background : #cde8f6;
+ }
+
+ #builtin td {
+ text-align: left;
+ }
+
+ /* XML Schema features table. */
+ #features {
+ margin: 2em 0 2em 0;
+
+ border-collapse : collapse;
+ border : 1px solid;
+ border-color : #000000;
+
+ font-size : 11px;
+ line-height : 14px;
+ }
+
+ #features th, #features td {
+ border: 1px solid;
+ padding : 0.6em 0.6em 0.6em 0.6em;
+ }
+
+ #features th {
+ background : #cde8f6;
+ }
+
+ #features td {
+ text-align: left;
+ }
+
+
+ /* TOC */
+ table.toc {
+ border-style : none;
+ border-collapse : separate;
+ border-spacing : 0;
+
+ margin : 0.2em 0 0.2em 0;
+ padding : 0 0 0 0;
+ }
+
+ table.toc tr {
+ padding : 0 0 0 0;
+ margin : 0 0 0 0;
+ }
+
+ table.toc * td, table.toc * th {
+ border-style : none;
+ margin : 0 0 0 0;
+ vertical-align : top;
+ }
+
+ table.toc * th {
+ font-weight : normal;
+ padding : 0em 0.1em 0em 0;
+ text-align : left;
+ white-space : nowrap;
+ }
+
+ table.toc * table.toc th {
+ padding-left : 1em;
+ }
+
+ table.toc * td {
+ padding : 0em 0 0em 0.7em;
+ text-align : left;
+ }
+</style>
+
+
+</head>
+
+<body>
+<div id="container">
+ <div id="content">
+
+ <div class="noprint">
+
+ <div id="titlepage">
+ <div class="title" id="first-title">C++/Parser Mapping</div>
+ <div class="title" id="second-title">Getting Started Guide</div>
+
+ <p>Copyright &#169; @copyright@.</p>
+
+ <p>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href="https://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/index.xhtml">XHTML</a>,
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.pdf">PDF</a>, and
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.ps">PostScript</a>.</p>
+
+ </div>
+
+ <h1>Table of Contents</h1>
+
+ <table class="toc">
+ <tr>
+ <th></th><td><a href="#0">Preface</a>
+ <table class="toc">
+ <tr><th></th><td><a href="#0.1">About This Document</a></td></tr>
+ <tr><th></th><td><a href="#0.2">More Information</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>1</th><td><a href="#1">Introduction</a>
+ <table class="toc">
+ <tr><th>1.1</th><td><a href="#1.1">Mapping Overview</a></td></tr>
+ <tr><th>1.2</th><td><a href="#1.2">Benefits</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>2</th><td><a href="#2">Hello World Example</a>
+ <table class="toc">
+ <tr><th>2.1</th><td><a href="#2.1">Writing XML Document and Schema</a></td></tr>
+ <tr><th>2.2</th><td><a href="#2.2">Translating Schema to C++</a></td></tr>
+ <tr><th>2.3</th><td><a href="#2.3">Implementing Application Logic</a></td></tr>
+ <tr><th>2.4</th><td><a href="#2.4">Compiling and Running</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>3</th><td><a href="#3">Parser Skeletons</a>
+ <table class="toc">
+ <tr><th>3.1</th><td><a href="#3.1">Implementing the Gender Parser</a></td></tr>
+ <tr><th>3.2</th><td><a href="#3.2">Implementing the Person Parser</a></td></tr>
+ <tr><th>3.3</th><td><a href="#3.3">Implementing the People Parser</a></td></tr>
+ <tr><th>3.4</th><td><a href="#3.4">Connecting the Parsers Together</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>4</th><td><a href="#4">Type Maps</a>
+ <table class="toc">
+ <tr><th>4.1</th><td><a href="#4.1">Object Model</a></td></tr>
+ <tr><th>4.2</th><td><a href="#4.2">Type Map File Format</a></td></tr>
+ <tr><th>4.3</th><td><a href="#4.3">Parser Implementations</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>5</th><td><a href="#5">Mapping Configuration</a>
+ <table class="toc">
+ <tr><th>5.1</th><td><a href="#5.1">C++ Standard</a></td></tr>
+ <tr><th>5.2</th><td><a href="#5.2">Character Type and Encoding</a></td></tr>
+ <tr><th>5.3</th><td><a href="#5.3">Underlying XML Parser</a></td></tr>
+ <tr><th>5.4</th><td><a href="#5.4">XML Schema Validation</a></td></tr>
+ <tr><th>5.5</th><td><a href="#5.5">Support for Polymorphism</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>6</th><td><a href="#6">Built-In XML Schema Type Parsers</a>
+ <table class="toc">
+ <tr><th>6.1</th><td><a href="#6.1"><code>QName</code> Parser</a></td></tr>
+ <tr><th>6.2</th><td><a href="#6.2"><code>NMTOKENS</code> and <code>IDREFS</code> Parsers</a></td></tr>
+ <tr><th>6.3</th><td><a href="#6.3"><code>base64Binary</code> and <code>hexBinary</code> Parsers</a></td></tr>
+ <tr><th>6.4</th><td><a href="#6.4">Time Zone Representation</a></td></tr>
+ <tr><th>6.5</th><td><a href="#6.5"><code>date</code> Parser</a></td></tr>
+ <tr><th>6.6</th><td><a href="#6.6"><code>dateTime</code> Parser</a></td></tr>
+ <tr><th>6.7</th><td><a href="#6.7"><code>duration</code> Parser</a></td></tr>
+ <tr><th>6.8</th><td><a href="#6.8"><code>gDay</code> Parser</a></td></tr>
+ <tr><th>6.9</th><td><a href="#6.9"><code>gMonth</code> Parser</a></td></tr>
+ <tr><th>6.10</th><td><a href="#6.10"><code>gMonthDay</code> Parser</a></td></tr>
+ <tr><th>6.11</th><td><a href="#6.11"><code>gYear</code> Parser</a></td></tr>
+ <tr><th>6.12</th><td><a href="#6.12"><code>gYearMonth</code> Parser</a></td></tr>
+ <tr><th>6.13</th><td><a href="#6.13"><code>time</code> Parser</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>7</th><td><a href="#7">Document Parser and Error Handling</a>
+ <table class="toc">
+ <tr><th>7.1</th><td><a href="#7.1">Xerces-C++ Document Parser</a></td></tr>
+ <tr><th>7.2</th><td><a href="#7.2">Expat Document Parser</a></td></tr>
+ <tr><th>7.3</th><td><a href="#7.3">Error Handling</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th></th><td><a href="#A">Appendix A &mdash; Supported XML Schema Constructs</a></td>
+ </tr>
+
+ </table>
+ </div>
+
+ <h1><a name="0">Preface</a></h1>
+
+ <h2><a name="0.1">About This Document</a></h2>
+
+ <p>The goal of this document is to provide you with an understanding of
+ the C++/Parser programming model and allow you to efficiently evaluate
+ XSD against your project's technical requirements. As such, this
+ document is intended for C++ developers and software architects
+ who are looking for an XML processing solution. Prior experience
+ with XML and C++ is required to understand this document. Basic
+ understanding of XML Schema is advantageous but not expected
+ or required.
+ </p>
+
+
+ <h2><a name="0.2">More Information</a></h2>
+
+ <p>Beyond this guide, you may also find the following sources of
+ information useful:</p>
+
+ <ul class="list">
+ <li><a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a></li>
+
+ <li>The <code>cxx/parser/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ contains a collection of examples and a README file with an overview
+ of each example.</li>
+
+ <li>The <code>README</code> file in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ explains how to build the examples.</li>
+
+ <li>The <a href="https://www.codesynthesis.com/mailman/listinfo/xsd-users">xsd-users</a>
+ mailing list is the place to ask technical questions about XSD and the C++/Parser mapping.
+ Furthermore, the <a href="https://www.codesynthesis.com/pipermail/xsd-users/">archives</a>
+ may already have answers to some of your questions.</li>
+
+ </ul>
+
+ <!-- Introduction -->
+
+ <h1><a name="1">1 Introduction</a></h1>
+
+ <p>Welcome to CodeSynthesis XSD and the C++/Parser mapping. XSD is a
+ cross-platform W3C XML Schema to C++ data binding compiler. C++/Parser
+ is a W3C XML Schema to C++ mapping that represents an XML vocabulary
+ as a set of parser skeletons which you can implement to perform XML
+ processing as required by your application logic.
+ </p>
+
+ <h2><a name="1.1">1.1 Mapping Overview</a></h2>
+
+ <p>The C++/Parser mapping provides event-driven, stream-oriented
+ XML parsing, XML Schema validation, and C++ data binding. It was
+ specifically designed and optimized for high performance and
+ small footprint. Based on the static analysis of the schemas, XSD
+ generates compact, highly-optimized hierarchical state machines
+ that combine data extraction, validation, and even dispatching
+ in a single step. As a result, the generated code is typically
+ 2-10 times faster than general-purpose validating XML parsers
+ while maintaining the lowest static and dynamic memory footprints.
+ </p>
+
+ <p>To speed up application development, the C++/Parser mapping
+ can be instructed to generate sample parser implementations
+ and a test driver which can then be filled with the application
+ logic code. The mapping also provides a wide range of
+ mechanisms for controlling and customizing the generated code.</p>
+
+ <p>The next chapter shows how to create a simple application that uses
+ the C++/Parser mapping to parse, validate, and extract data from a
+ simple XML document. The following chapters show how to
+ use the C++/Parser mapping in more detail.</p>
+
+ <h2><a name="1.2">1.2 Benefits</a></h2>
+
+ <p>Traditional XML access APIs such as Document Object Model (DOM)
+ or Simple API for XML (SAX) have a number of drawbacks that
+ make them less suitable for creating robust and maintainable
+ XML processing applications. These drawbacks include:
+ </p>
+
+ <ul class="list">
+ <li>Generic representation of XML in terms of elements, attributes,
+ and text forces an application developer to write a substantial
+ amount of bridging code that identifies and transforms pieces
+ of information encoded in XML to a representation more suitable
+ for consumption by the application logic.</li>
+
+ <li>String-based flow control defers error detection to runtime.
+ It also reduces code readability and maintainability.</li>
+
+ <li>Lack of type safety because the data is represented
+ as text.</li>
+
+ <li>Resulting applications are hard to debug, change, and
+ maintain.</li>
+ </ul>
+
+ <p>In contrast, statically-typed, vocabulary-specific parser
+ skeletons produced by the C++/Parser mapping allow you to
+ operate in your domain terms instead of the generic elements,
+ attributes, and text. Static typing helps catch errors at
+ compile-time rather than at run-time. Automatic code generation
+ frees you for more interesting tasks (such as doing something
+ useful with the information stored in the XML documents) and
+ minimizes the effort needed to adapt your applications to
+ changes in the document structure. To summarize, the C++/Parser
+ mapping has the following key advantages over generic XML
+ access APIs:</p>
+
+ <ul class="list">
+ <li><b>Ease of use.</b> The generated code hides all the complexity
+ associated with recreating the document structure, maintaining the
+ dispatch state, and converting the data from the text representation
+ to data types suitable for manipulation by the application logic.
+ Parser skeletons also provide a convenient mechanism for building
+ custom in-memory representations.</li>
+
+ <li><b>Natural representation.</b> The generated parser skeletons
+ implement parser callbacks as virtual functions with names
+ corresponding to elements and attributes in XML. As a result,
+ you process the XML data using your domain vocabulary instead
+ of generic elements, attributes, and text.
+ </li>
+
+ <li><b>Concise code.</b> With a separate parser skeleton for each
+ XML Schema type, the application implementation is
+ simpler and thus easier to read and understand.</li>
+
+ <li><b>Safety.</b> The XML data is delivered to parser callbacks as
+ statically typed objects. The parser callbacks themselves are virtual
+ functions. This helps catch programming errors at compile-time
+ rather than at runtime.</li>
+
+ <li><b>Maintainability.</b> Automatic code generation minimizes the
+ effort needed to adapt the application to changes in the
+ document structure. With static typing, the C++ compiler
+ can pin-point the places in the application code that need to be
+ changed.</li>
+
+ <li><b>Efficiency.</b> The generated parser skeletons combine
+ data extraction, validation, and even dispatching in a single
+ step. This makes them much more efficient than traditional
+ architectures with separate stages for validation and data
+ extraction/dispatch.</li>
+ </ul>
+
+ <!-- Hello World Parser -->
+
+
+ <h1><a name="2">2 Hello World Example</a></h1>
+
+ <p>In this chapter we will examine how to parse a very simple XML
+ document using the XSD-generated C++/Parser skeletons.
+ The code presented in this chapter is based on the <code>hello</code>
+ example which can be found in the <code>cxx/parser/</code> directory in
+ the <a href="https://cppget.org/xsd-examples">xsd-examples</a>
+ package.</p>
+
+ <h2><a name="2.1">2.1 Writing XML Document and Schema</a></h2>
+
+ <p>First, we need to get an idea about the structure
+ of the XML documents we are going to process. Our
+ <code>hello.xml</code>, for example, could look like this:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;hello>
+
+ &lt;greeting>Hello&lt;/greeting>
+
+ &lt;name>sun&lt;/name>
+ &lt;name>moon&lt;/name>
+ &lt;name>world&lt;/name>
+
+&lt;/hello>
+ </pre>
+
+ <p>Then we can write a description of the above XML in the
+ XML Schema language and save it into <code>hello.xsd</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:complexType name="hello">
+ &lt;xs:sequence>
+ &lt;xs:element name="greeting" type="xs:string"/>
+ &lt;xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="hello" type="hello"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>Even if you are not familiar with XML Schema, it
+ should be easy to connect declarations in <code>hello.xsd</code>
+ to elements in <code>hello.xml</code>. The <code>hello</code> type
+ is defined as a sequence of the nested <code>greeting</code> and
+ <code>name</code> elements. Note that the term sequence in XML
+ Schema means that elements should appear in a particular order
+ as opposed to appearing multiple times. The <code>name</code>
+ element has its <code>maxOccurs</code> property set to
+ <code>unbounded</code> which means it can appear multiple times
+ in an XML document. Finally, the globally-defined <code>hello</code>
+ element prescribes the root element for our vocabulary. For an
+ easily-approachable introduction to XML Schema refer to
+ <a href="http://www.w3.org/TR/xmlschema-0/">XML Schema Part 0:
+ Primer</a>.</p>
+
+ <p>The above schema is a specification of our XML vocabulary; it tells
+ everybody what valid documents of our XML-based language should look
+ like. The next step is to compile this schema to generate
+ the object model and parsing functions.</p>
+
+ <h2><a name="2.2">2.2 Translating Schema to C++</a></h2>
+
+ <p>Now we are ready to translate our <code>hello.xsd</code> to C++ parser
+ skeletons. To do this we invoke the XSD compiler from a terminal
+ (UNIX) or a command prompt (Windows):
+ </p>
+
+ <pre class="terminal">
+$ xsd cxx-parser --xml-parser expat hello.xsd
+ </pre>
+
+ <p>The <code>--xml-parser</code> option indicates that we want to
+ use Expat as the underlying XML parser (see <a href="#5.3">Section
+ 5.3, "Underlying XML Parser"</a>). The XSD compiler produces two
+ C++ files: <code>hello-pskel.hxx</code> and <code>hello-pskel.cxx</code>.
+ The following code fragment is taken from <code>hello-pskel.hxx</code>;
+ it should give you an idea about what gets generated:
+ </p>
+
+ <pre class="c++">
+class hello_pskel
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre ();
+
+ virtual void
+ greeting (const std::string&amp;);
+
+ virtual void
+ name (const std::string&amp;);
+
+ virtual void
+ post_hello ();
+
+ // Parser construction API.
+ //
+ void
+ greeting_parser (xml_schema::string_pskel&amp;);
+
+ void
+ name_parser (xml_schema::string_pskel&amp;);
+
+ void
+ parsers (xml_schema::string_pskel&amp; /* greeting */,
+ xml_schema::string_pskel&amp; /* name */);
+
+private:
+ ...
+};
+ </pre>
+
+ <p>The first four member functions shown above are called parser
+ callbacks. You would normally override them in your implementation
+ of the parser to do something useful. Let's go through all of
+ them one by one.</p>
+
+ <p>The <code>pre()</code> function is an initialization callback. It is
+ called when a new element of type <code>hello</code> is about
+ to be parsed. You would normally use this function to allocate a new
+ instance of the resulting type or clear accumulators that are used
+ to gather information during parsing. The default implementation
+ of this function does nothing.</p>
+
+ <p>The <code>post_hello()</code> function is a finalization callback. Its
+ name is constructed by adding the parser skeleton name to the
+ <code>post_</code> prefix. The finalization callback is called when
+ parsing of the element is complete and the result, if any, should
+ be returned. Note that in our case the return type of
+ <code>post_hello()</code> is <code>void</code> which means there
+ is nothing to return. More on parser return types later.
+ </p>
+
+ <p>You may be wondering why the finalization callback is called
+ <code>post_hello()</code> instead of <code>post()</code> just
+ like <code>pre()</code>. The reason for this is that
+ finalization callbacks can have different return types and
+ result in function signature clashes across inheritance
+ hierarchies. To prevent this the signatures of finalization
+ callbacks are made unique by adding the type name to their names.</p>
+
+ <p>The <code>greeting()</code> and <code>name()</code> functions are
+ called when the <code>greeting</code> and <code>name</code> elements
+ have been parsed, respectively. Their arguments are of type
+ <code>std::string</code> and contain the data extracted from XML.</p>
+
+ <p>The last three functions are for connecting parsers to each other.
+ For example, there is a predefined parser for built-in XML Schema type
+ <code>string</code> in the XSD runtime. We will be using
+ it to parse the contents of <code>greeting</code> and
+ <code>name</code> elements, as shown in the next section.</p>
+
+ <h2><a name="2.3">2.3 Implementing Application Logic</a></h2>
+
+ <p>At this point we have all the parts we need to do something useful
+ with the information stored in our XML document. The first step is
+ to implement the parser:
+ </p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "hello-pskel.hxx"
+
+class hello_pimpl: public hello_pskel
+{
+public:
+ virtual void
+ greeting (const std::string&amp; g)
+ {
+ greeting_ = g;
+ }
+
+ virtual void
+ name (const std::string&amp; n)
+ {
+ std::cout &lt;&lt; greeting_ &lt;&lt; ", " &lt;&lt; n &lt;&lt; "!" &lt;&lt; std::endl;
+ }
+
+private:
+ std::string greeting_;
+};
+ </pre>
+
+ <p>We left both <code>pre()</code> and <code>post_hello()</code> with the
+ default implementations; we don't have anything to initialize or
+ return. The rest is pretty straightforward: we store the greeting
+ in a member variable and later, when parsing names, use it to
+ say hello.</p>
+
+ <p>An observant reader my ask what happens if the <code>name</code>
+ element comes before <code>greeting</code>? Don't we need to
+ make sure <code>greeting_</code> was initialized and report
+ an error otherwise? The answer is no, we don't have to do
+ any of this. The <code>hello_pskel</code> parser skeleton
+ performs validation of XML according to the schema from which
+ it was generated. As a result, it will check the order
+ of the <code>greeting</code> and <code>name</code> elements
+ and report an error if it is violated.</p>
+
+ <p>Now it is time to put this parser implementation to work:</p>
+
+ <pre class="c++">
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ // Construct the parser.
+ //
+ xml_schema::string_pimpl string_p;
+ hello_pimpl hello_p;
+
+ hello_p.greeting_parser (string_p);
+ hello_p.name_parser (string_p);
+
+ // Parse the XML instance.
+ //
+ xml_schema::document doc_p (hello_p, "hello");
+
+ hello_p.pre ();
+ doc_p.parse (argv[1]);
+ hello_p.post_hello ();
+ }
+ catch (const xml_schema::exception&amp; e)
+ {
+ cerr &lt;&lt; e &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+ <p>The first part of this code snippet instantiates individual parsers
+ and assembles them into a complete vocabulary parser.
+ <code>xml_schema::string_pimpl</code> is an implementation of a parser
+ for built-in XML Schema type <code>string</code>. It is provided by
+ the XSD runtime along with parsers for other built-in types (for
+ more information on the built-in parsers see <a href="#6">Chapter 6,
+ "Built-In XML Schema Type Parsers"</a>). We use <code>string_pimpl</code>
+ to parse the <code>greeting</code> and <code>name</code> elements as
+ indicated by the calls to <code>greeting_parser()</code> and
+ <code>name_parser()</code>.
+ </p>
+
+ <p>Then we instantiate a document parser (<code>doc_p</code>). The
+ first argument to its constructor is the parser for
+ the root element (<code>hello_p</code> in our case). The
+ second argument is the root element name.
+ </p>
+
+ <p>The final piece is the calls to <code>pre()</code>, <code>parse()</code>,
+ and <code>post_hello()</code>. The call to <code>parse()</code>
+ perform the actual XML parsing while the calls to <code>pre()</code> and
+ <code>post_hello()</code> make sure that the parser for the root
+ element can perform proper initialization and cleanup.</p>
+
+ <p>While our parser implementation and test driver are pretty small and
+ easy to write by hand, for bigger XML vocabularies it can be a
+ substantial effort. To help with this task XSD can automatically
+ generate sample parser implementations and a test driver from your
+ schemas. You can request the generation of a sample implementation with
+ empty function bodies by specifying the <code>--generate-noop-impl</code>
+ option. Or you can generate a sample implementation that prints the
+ data store in XML by using the <code>--generate-print-impl</code>
+ option. To request the generation of a test driver you can use the
+ <code>--generate-test-driver</code> option. For more information
+ on these options refer to the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>. The <code>'generated'</code> example
+ in the <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ shows the sample implementation generation feature in action.</p>
+
+
+ <h2><a name="2.4">2.4 Compiling and Running</a></h2>
+
+ <p>After saving all the parts from the previous section in
+ <code>driver.cxx</code>, we are ready to compile our first
+ application and run it on the test XML document. On a UNIX
+ system this can be done with the following commands:
+ </p>
+
+ <pre class="terminal">
+$ c++ -std=c++11 -I.../libxsd -c driver.cxx hello-pskel.cxx
+$ c++ -std=c++11 -o driver driver.o hello-pskel.o -lexpat
+$ ./driver hello.xml
+Hello, sun!
+Hello, moon!
+Hello, world!
+ </pre>
+
+ <p>Here <code>.../libxsd</code> represents the path to the
+ <a href="https://cppget.org/libxsd">libxsd</a> package root
+ directory. We can also test the error handling. To test XML
+ well-formedness checking, we can try to parse
+ <code>hello-pskel.hxx</code>:</p>
+
+ <pre class="terminal">
+$ ./driver hello-pskel.hxx
+hello-pskel.hxx:1:0: not well-formed (invalid token)
+ </pre>
+
+ <p>We can also try to parse a valid XML but not from our
+ vocabulary, for example <code>hello.xsd</code>:</p>
+
+ <pre class="terminal">
+$ ./driver hello.xsd
+hello.xsd:2:0: expected element 'hello' instead of
+'http://www.w3.org/2001/XMLSchema#schema'
+ </pre>
+
+
+ <!-- Chapater 3 -->
+
+
+ <h1><a name="3">3 Parser Skeletons</a></h1>
+
+ <p>As we have seen in the previous chapter, the XSD compiler generates
+ a parser skeleton class for each type defined in XML Schema. In
+ this chapter we will take a closer look at different functions
+ that comprise a parser skeleton as well as the way to connect
+ our implementations of these parser skeletons to create a complete
+ parser.</p>
+
+ <p>In this and subsequent chapters we will use the following schema
+ that describes a collection of person records. We save it in
+ <code>people.xsd</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:simpleType name="gender">
+ &lt;xs:restriction base="xs:string">
+ &lt;xs:enumeration value="male"/>
+ &lt;xs:enumeration value="female"/>
+ &lt;/xs:restriction>
+ &lt;/xs:simpleType>
+
+ &lt;xs:complexType name="person">
+ &lt;xs:sequence>
+ &lt;xs:element name="first-name" type="xs:string"/>
+ &lt;xs:element name="last-name" type="xs:string"/>
+ &lt;xs:element name="gender" type="gender"/>
+ &lt;xs:element name="age" type="xs:short"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:complexType name="people">
+ &lt;xs:sequence>
+ &lt;xs:element name="person" type="person" maxOccurs="unbounded"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="people" type="people"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>A sample XML instance to go along with this schema is saved
+ in <code>people.xml</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;people>
+ &lt;person>
+ &lt;first-name>John&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>32&lt;/age>
+ &lt;/person>
+ &lt;person>
+ &lt;first-name>Jane&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>female&lt;/gender>
+ &lt;age>28&lt;/age>
+ &lt;/person>
+&lt;/people>
+ </pre>
+
+ <p>Compiling <code>people.xsd</code> with the XSD compiler results
+ in three parser skeletons being generated: <code>gender_pskel</code>,
+ <code>person_pskel</code>, and <code>people_pskel</code>. We are going
+ to examine and implement each of them in the subsequent sections.</p>
+
+ <h2><a name="3.1">3.1 Implementing the Gender Parser</a></h2>
+
+ <p>The generated <code>gender_pskel</code> parser skeleton looks like
+ this:</p>
+
+ <pre class="c++">
+class gender_pskel: public virtual xml_schema::string_pskel
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre ();
+
+ virtual void
+ post_gender ();
+};
+ </pre>
+
+ <p>Notice that <code>gender_pskel</code> inherits from
+ <code>xml_schema::string_skel</code> which is a parser skeleton
+ for built-in XML Schema type <code>string</code> and is
+ predefined in the XSD runtime library. This is an example
+ of the general rule that parser skeletons follow: if a type
+ in XML Schema inherits from another then there will be an
+ equivalent inheritance between the corresponding parser
+ skeleton classes.</p>
+
+ <p>The <code>pre()</code> and <code>post_gender()</code> callbacks
+ should look familiar from the previous chapter. Let's now
+ implement the parser. Our implementation will simply print
+ the gender to <code>cout</code>:</p>
+
+
+ <pre class="c++">
+class gender_pimpl: public gender_pskel,
+ public xml_schema::string_pimpl
+{
+public:
+ virtual void
+ post_gender ()
+ {
+ std::string s = post_string ();
+ cout &lt;&lt; "gender: " &lt;&lt; s &lt;&lt; endl;
+ }
+};
+ </pre>
+
+ <p>While the code is quite short, there is a lot going on. First,
+ notice that we are inheriting from <code>gender_pskel</code> <em>and</em>
+ from <code>xml_schema::string_pimpl</code>. We've encountered
+ <code>xml_schema::string_pimpl</code> already; it is an
+ implementation of the <code>xml_schema::string_pskel</code> parser
+ skeleton for built-in XML Schema type <code>string</code>.</p>
+
+ <p>This is another common theme in the C++/Parser programming model:
+ reusing implementations of the base parsers in the derived ones with
+ the C++ mixin idiom. In our case, <code>string_pimpl</code> will
+ do all the dirty work of extracting the data and we can just get
+ it at the end with the call to <code>post_string()</code>.</p>
+
+ <p>In case you are curious, here is what
+ <code>xml_schema::string_pskel</code> and
+ <code>xml_schema::string_pimpl</code> look like:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class string_pskel: public simple_content
+ {
+ public:
+ virtual std::string
+ post_string () = 0;
+ };
+
+ class string_pimpl: public virtual string_pskel
+ {
+ public:
+ virtual void
+ _pre ();
+
+ virtual void
+ _characters (const xml_schema::ro_string&amp;);
+
+ virtual std::string
+ post_string ();
+
+ protected:
+ std::string str_;
+ };
+}
+ </pre>
+
+ <p>There are three new pieces in this code that we haven't seen yet.
+ They are the <code>simple_content</code> class as well as
+ the <code>_pre()</code> and <code>_characters()</code> functions.
+ The <code>simple_content</code> class is defined in the XSD
+ runtime and is a base class for all parser skeletons that conform
+ to the simple content model in XML Schema. Types with the
+ simple content model cannot have nested elements&mdash;only text
+ and attributes. There is also the <code>complex_content</code>
+ class which corresponds to the complex content mode (types with
+ nested elements, for example, <code>person</code> from
+ <code>people.xsd</code>).</p>
+
+ <p>The <code>_pre()</code> function is a parser callback. Remember we
+ talked about the <code>pre()</code> and <code>post_*()</code> callbacks
+ in the previous chapter? There are actually two more callbacks
+ with similar roles: <code>_pre()</code> and <code>_post ()</code>.
+ As a result, each parser skeleton has four special callbacks:</p>
+
+ <pre class="c++">
+ virtual void
+ pre ();
+
+ virtual void
+ _pre ();
+
+ virtual void
+ _post ();
+
+ virtual void
+ post_name ();
+ </pre>
+
+ <p><code>pre()</code> and <code>_pre()</code> are initialization
+ callbacks. They get called in that order before a new instance of the type
+ is about to be parsed. The difference between <code>pre()</code> and
+ <code>_pre()</code> is conventional: <code>pre()</code> can
+ be completely overridden by a derived parser. The derived
+ parser can also override <code>_pre()</code> but has to always call
+ the original version. This allows you to partition initialization
+ into customizable and required parts.</p>
+
+ <p>Similarly, <code>_post()</code> and <code>post_name()</code> are
+ finalization callbacks with exactly the same semantics:
+ <code>post_name()</code> can be completely overridden by the derived
+ parser while the original <code>_post()</code> should always be called.
+ </p>
+
+ <p>The final bit we need to discuss in this section is the
+ <code>_characters()</code> function. As you might have guessed, it
+ is also a callback. A low-level one that delivers raw character content
+ for the type being parsed. You will seldom need to use this callback
+ directly. Using implementations for the built-in parsers provided by
+ the XSD runtime is usually a simpler and more convenient
+ alternative.</p>
+
+ <p>At this point you might be wondering why some <code>post_*()</code>
+ callbacks, for example <code>post_string()</code>, return some data
+ while others, for example <code>post_gender()</code>, have
+ <code>void</code> as a return type. This is a valid concern
+ and it will be addressed in the next chapter.</p>
+
+ <h2><a name="3.2">3.2 Implementing the Person Parser</a></h2>
+
+ <p>The generated <code>person_pskel</code> parser skeleton looks like
+ this:</p>
+
+ <pre class="c++">
+class person_pskel: public xml_schema::complex_content
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre ();
+
+ virtual void
+ first_name (const std::string&amp;);
+
+ virtual void
+ last_name (const std::string&amp;);
+
+ virtual void
+ gender ();
+
+ virtual void
+ age (short);
+
+ virtual void
+ post_person ();
+
+ // Parser construction API.
+ //
+ void
+ first_name_parser (xml_schema::string_pskel&amp;);
+
+ void
+ last_name_parser (xml_schema::string_pskel&amp;);
+
+ void
+ gender_parser (gender_pskel&amp;);
+
+ void
+ age_parser (xml_schema::short_pskel&amp;);
+
+ void
+ parsers (xml_schema::string_pskel&amp; /* first-name */,
+ xml_schema::string_pskel&amp; /* last-name */,
+ gender_pskel&amp; /* gender */,
+ xml_schema::short_pskel&amp; /* age */);
+};
+ </pre>
+
+
+ <p>As you can see, we have a parser callback for each of the nested
+ elements found in the <code>person</code> XML Schema type.
+ The implementation of this parser is straightforward:</p>
+
+ <pre class="c++">
+class person_pimpl: public person_pskel
+{
+public:
+ virtual void
+ first_name (const std::string&amp; n)
+ {
+ cout &lt;&lt; "first: " &lt;&lt; f &lt;&lt; endl;
+ }
+
+ virtual void
+ last_name (const std::string&amp; l)
+ {
+ cout &lt;&lt; "last: " &lt;&lt; l &lt;&lt; endl;
+ }
+
+ virtual void
+ age (short a)
+ {
+ cout &lt;&lt; "age: " &lt;&lt; a &lt;&lt; endl;
+ }
+};
+ </pre>
+
+ <p>Notice that we didn't override the <code>gender()</code> callback
+ because all the printing is done by <code>gender_pimpl</code>.</p>
+
+
+ <h2><a name="3.3">3.3 Implementing the People Parser</a></h2>
+
+ <p>The generated <code>people_pskel</code> parser skeleton looks like
+ this:</p>
+
+ <pre class="c++">
+class people_pskel: public xml_schema::complex_content
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre ();
+
+ virtual void
+ person ();
+
+ virtual void
+ post_people ();
+
+ // Parser construction API.
+ //
+ void
+ person_parser (person_pskel&amp;);
+
+ void
+ parsers (person_pskel&amp; /* person */);
+};
+ </pre>
+
+ <p>The <code>person()</code> callback will be called after parsing each
+ <code>person</code> element. While <code>person_pimpl</code> does
+ all the printing, one useful thing we can do in this callback is to
+ print an extra newline after each person record so that our
+ output is more readable:</p>
+
+ <pre class="c++">
+class people_pimpl: public people_pskel
+{
+public:
+ virtual void
+ person ()
+ {
+ cout &lt;&lt; endl;
+ }
+};
+ </pre>
+
+ <p>Now it is time to put everything together.</p>
+
+
+ <h2><a name="3.4">3.4 Connecting the Parsers Together</a></h2>
+
+ <p>At this point we have all the individual parsers implemented
+ and can proceed to assemble them into a complete parser
+ for our XML vocabulary. The first step is to instantiate
+ all the individual parsers that we will need:</p>
+
+ <pre class="c++">
+xml_schema::short_pimpl short_p;
+xml_schema::string_pimpl string_p;
+
+gender_pimpl gender_p;
+person_pimpl person_p;
+people_pimpl people_p;
+ </pre>
+
+ <p>Notice that our schema uses two built-in XML Schema types:
+ <code>string</code> for the <code>first-name</code> and
+ <code>last-name</code> elements as well as <code>short</code>
+ for <code>age</code>. We will use predefined parsers that
+ come with the XSD runtime to handle these types. The next
+ step is to connect all the individual parsers. We do this
+ with the help of functions defined in the parser
+ skeletons and marked with the "Parser Construction API"
+ comment. One way to do it is to connect each individual
+ parser by calling the <code>*_parser()</code> functions:</p>
+
+ <pre class="c++">
+person_p.first_name_parser (string_p);
+person_p.last_name_parser (string_p);
+person_p.gender_parser (gender_p);
+person_p.age_parser (short_p);
+
+people_p.person_parser (person_p);
+ </pre>
+
+ <p>You might be wondering what happens if you do not provide
+ a parser by not calling one of the <code>*_parser()</code> functions.
+ In that case the corresponding XML content will be skipped,
+ including validation. This is an efficient way to ignore parts
+ of the document that you are not interested in.</p>
+
+
+ <p>An alternative, shorter, way to connect the parsers is by using
+ the <code>parsers()</code> functions which connects all the parsers
+ for a given type at once:</p>
+
+ <pre class="c++">
+person_p.parsers (string_p, string_p, gender_p, short_p);
+people_p.parsers (person_p);
+ </pre>
+
+ <p>The following figure illustrates the resulting connections. Notice
+ the correspondence between return types of the <code>post_*()</code>
+ functions and argument types of element callbacks that are connected
+ by the arrows.</p>
+
+ <!-- align=center is needed for html2ps -->
+ <div class="img" align="center"><img src="figure-1.png"/></div>
+
+ <p>The last step is the construction of the document parser and
+ invocation of the complete parser on our sample XML instance:</p>
+
+ <pre class="c++">
+xml_schema::document doc_p (people_p, "people");
+
+people_p.pre ();
+doc_p.parse ("people.xml");
+people_p.post_people ();
+ </pre>
+
+ <p>Let's consider <code>xml_schema::document</code> in
+ more detail. While the exact definition of this class
+ varies depending on the underlying parser selected,
+ here is the common part:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class document
+ {
+ public:
+ document (xml_schema::parser_base&amp;,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ document (xml_schema::parser_base&amp;,
+ const std::string&amp; root_element_namespace,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ void
+ parse (const std::string&amp; file);
+
+ void
+ parse (std::istream&amp;);
+
+ ...
+
+ };
+}
+ </pre>
+
+ <p><code>xml_schema::document</code> is a root parser for
+ the vocabulary. The first argument to its constructors is the
+ parser for the type of the root element (<code>people_impl</code>
+ in our case). Because a type parser is only concerned with
+ the element's content and not with the element's name, we need
+ to specify the root element's name somewhere. That's
+ what is passed as the second and third arguments to the
+ <code>document</code>'s constructors.</p>
+
+ <p>There are also two overloaded <code>parse()</code> functions
+ defined in the <code>document</code> class (there are actually
+ more but the others are specific to the underlying XML parser).
+ The first version parses a local file identified by a name. The
+ second version reads the data from an input stream. For more
+ information on the <code>xml_schema::document</code> class
+ refer to <a href="#7">Chapter 7, "Document Parser and Error
+ Handling"</a>.</p>
+
+ <p>Let's now consider a step-by-step list of actions that happen
+ as we parse through <code>people.xml</code>. The content of
+ <code>people.xml</code> is repeated below for convenience.</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;people>
+ &lt;person>
+ &lt;first-name>John&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>32&lt;/age>
+ &lt;/person>
+ &lt;person>
+ &lt;first-name>Jane&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>female&lt;/gender>
+ &lt;age>28&lt;/age>
+ &lt;/person>
+&lt;/people>
+ </pre>
+
+
+ <ol class="steps">
+ <li><code>people_p.pre()</code> is called from
+ <code>main()</code>. We did not provide any implementation
+ for this callback so this call is a no-op.</li>
+
+ <li><code>doc_p.parse("people.xml")</code> is called from
+ <code>main()</code>. The parser opens the file and starts
+ parsing its content.</li>
+
+ <li>The parser encounters the root element. <code>doc_p</code>
+ verifies that the root element is correct and calls
+ <code>_pre()</code> on <code>people_p</code> which is also
+ a no-op. Parsing is now delegated to <code>people_p</code>.</li>
+
+ <li>The parser encounters the <code>person</code> element.
+ <code>people_p</code> determines that <code>person_p</code>
+ is responsible for parsing this element. <code>pre()</code>
+ and <code>_pre()</code> callbacks are called on <code>person_p</code>.
+ Parsing is now delegated to <code>person_p</code>.</li>
+
+ <li>The parser encounters the <code>first-name</code> element.
+ <code>person_p</code> determines that <code>string_p</code>
+ is responsible for parsing this element. <code>pre()</code>
+ and <code>_pre()</code> callbacks are called on <code>string_p</code>.
+ Parsing is now delegated to <code>string_p</code>.</li>
+
+ <li>The parser encounters character content consisting of
+ <code>"John"</code>. The <code>_characters()</code> callback is
+ called on <code>string_p</code>.</li>
+
+ <li>The parser encounters the end of <code>first-name</code>
+ element. The <code>_post()</code> and <code>post_string()</code>
+ callbacks are called on <code>string_p</code>. The
+ <code>first_name()</code> callback is called on <code>person_p</code>
+ with the return value of <code>post_string()</code>. The
+ <code>first_name()</code> implementation prints
+ <code>"first: John"</code> to <code>cout</code>.
+ Parsing is now returned to <code>person_p</code>.</li>
+
+ <li>Steps analogous to 5-7 are performed for the <code>last-name</code>,
+ <code>gender</code>, and <code>age</code> elements.</li>
+
+ <li>The parser encounters the end of <code>person</code>
+ element. The <code>_post()</code> and <code>post_person()</code>
+ callbacks are called on <code>person_p</code>. The
+ <code>person()</code> callback is called on <code>people_p</code>.
+ The <code>person()</code> implementation prints a new line
+ to <code>cout</code>. Parsing is now returned to
+ <code>people_p</code>.</li>
+
+ <li>Steps 4-9 are performed for the second <code>person</code>
+ element.</li>
+
+ <li>The parser encounters the end of <code>people</code>
+ element. The <code>_post()</code> callback is called on
+ <code>people_p</code>. The <code>doc_p.parse("people.xml")</code>
+ call returns to <code>main()</code>.</li>
+
+ <li><code>people_p.post_people()</code> is called from
+ <code>main()</code> which is a no-op.</li>
+
+ </ol>
+
+
+ <!-- Chpater 4 -->
+
+
+ <h1><a name="4">4 Type Maps</a></h1>
+
+ <p>There are many useful things you can do inside parser callbacks as they
+ are right now. There are, however, times when you want to propagate
+ some information from one parser to another or to the caller of the
+ parser. One common task that would greatly benefit from such a
+ possibility is building a tree-like in-memory object model of the
+ data stored in XML. During execution, each individual sub-parser
+ would create a sub-tree and return it to its <em>parent</em> parser
+ which can then incorporate this sub-tree into the whole tree.</p>
+
+ <p>In this chapter we will discuss the mechanisms offered by the
+ C++/Parser mapping for returning information from individual
+ parsers and see how to use them to build an object model
+ of our people vocabulary.</p>
+
+ <h2><a name="4.1">4.1 Object Model</a></h2>
+
+ <p>An object model for our person record example could
+ look like this (saved in the <code>people.hxx</code> file):</p>
+
+ <pre class="c++">
+#include &lt;string>
+#include &lt;vector>
+
+enum gender
+{
+ male,
+ female
+};
+
+class person
+{
+public:
+ person (const std::string&amp; first,
+ const std::string&amp; last,
+ ::gender gender,
+ short age)
+ : first_ (first), last_ (last),
+ gender_ (gender), age_ (age)
+ {
+ }
+
+ const std::string&amp;
+ first () const
+ {
+ return first_;
+ }
+
+ const std::string&amp;
+ last () const
+ {
+ return last_;
+ }
+
+ ::gender
+ gender () const
+ {
+ return gender_;
+ }
+
+ short
+ age () const
+ {
+ return age_;
+ }
+
+private:
+ std::string first_;
+ std::string last_;
+ ::gender gender_;
+ short age_;
+};
+
+typedef std::vector&lt;person> people;
+ </pre>
+
+ <p>While it is clear which parser is responsible for which part of
+ the object model, it is not exactly clear how, for
+ example, <code>gender_pimpl</code> will deliver <code>gender</code>
+ to <code>person_pimpl</code>. You might have noticed that
+ <code>string_pimpl</code> manages to deliver its value to the
+ <code>first_name()</code> callback of <code>person_pimpl</code>. Let's
+ see how we can utilize the same mechanism to propagate our
+ own data.</p>
+
+ <p>There is a way to tell the XSD compiler that you want to
+ exchange data between parsers. More precisely, for each
+ type defined in XML Schema, you can tell the compiler two things.
+ First, the return type of the <code>post_*()</code> callback
+ in the parser skeleton generated for this type. And, second,
+ the argument type for callbacks corresponding to elements and
+ attributes of this type. For example, for XML Schema type
+ <code>gender</code> we can specify the return type for
+ <code>post_gender()</code> in the <code>gender_pskel</code>
+ skeleton and the argument type for the <code>gender()</code> callback
+ in the <code>person_pskel</code> skeleton. As you might have guessed,
+ the generated code will then pass the return value from the
+ <code>post_*()</code> callback as an argument to the element or
+ attribute callback.</p>
+
+ <p>The way to tell the XSD compiler about these XML Schema to
+ C++ mappings is with type map files. Here is a simple type
+ map for the <code>gender</code> type from the previous paragraph:</p>
+
+ <pre class="type-map">
+include "people.hxx";
+gender ::gender ::gender;
+ </pre>
+
+ <p>The first line indicates that the generated code must include
+ <code>people.hxx</code> in order to get the definition for the
+ <code>gender</code> type. The second line specifies that both
+ argument and return types for the <code>gender</code>
+ XML Schema type should be the <code>::gender</code> C++ enum
+ (we use fully-qualified C++ names to avoid name clashes).
+ The next section will describe the type map format in detail.
+ We save this type map in <code>people.map</code> and
+ then translate our schemas with the <code>--type-map</code>
+ option to let the XSD compiler know about our type map:</p>
+
+ <pre class="terminal">
+$ xsd cxx-parser --type-map people.map people.xsd
+ </pre>
+
+ <p>If we now look at the generated <code>people-pskel.hxx</code>,
+ we will see the following changes in the <code>gender_pskel</code> and
+ <code>person_pskel</code> skeletons:</p>
+
+ <pre class="c++">
+#include "people.hxx"
+
+class gender_pskel: public virtual xml_schema::string_pskel
+{
+ virtual ::gender
+ post_gender () = 0;
+
+ ...
+};
+
+class person_pskel: public xml_schema::complex_content
+{
+ virtual void
+ gender (::gender);
+
+ ...
+};
+ </pre>
+
+ <p>Notice that <code>#include "people.hxx"</code> was added to
+ the generated header file from the type map to provide the
+ definition for the <code>gender</code> enum.</p>
+
+ <h2><a name="4.2">4.2 Type Map File Format</a></h2>
+
+ <p>Type map files are used to define a mapping between XML Schema
+ and C++ types. The compiler uses this information
+ to determine return types of <code>post_*()</code>
+ callbacks in parser skeletons corresponding to XML Schema
+ types as well as argument types for callbacks corresponding
+ to elements and attributes of these types.</p>
+
+ <p>The compiler has a set of predefined mapping rules that map
+ the built-in XML Schema types to suitable C++ types (discussed
+ below) and all other types to <code>void</code>.
+ By providing your own type maps you can override these predefined
+ rules. The format of the type map file is presented below:
+ </p>
+
+ <pre class="type-map">
+namespace &lt;schema-namespace> [&lt;cxx-namespace>]
+{
+ (include &lt;file-name>;)*
+ ([type] &lt;schema-type> &lt;cxx-ret-type> [&lt;cxx-arg-type>];)*
+}
+ </pre>
+
+ <p>Both <code><i>&lt;schema-namespace></i></code> and
+ <code><i>&lt;schema-type></i></code> are regex patterns while
+ <code><i>&lt;cxx-namespace></i></code>,
+ <code><i>&lt;cxx-ret-type></i></code>, and
+ <code><i>&lt;cxx-arg-type></i></code> are regex pattern
+ substitutions. All names can be optionally enclosed in
+ <code>" "</code>, for example, to include white-spaces.</p>
+
+ <p><code><i>&lt;schema-namespace></i></code> determines XML
+ Schema namespace. Optional <code><i>&lt;cxx-namespace></i></code>
+ is prefixed to every C++ type name in this namespace declaration.
+ <code><i>&lt;cxx-ret-type></i></code> is a C++ type name that is
+ used as a return type for the <code>post_*()</code> callback.
+ Optional <code><i>&lt;cxx-arg-type></i></code> is an argument
+ type for callbacks corresponding to elements and attributes
+ of this type. If <code><i>&lt;cxx-arg-type></i></code> is not
+ specified, it defaults to <code><i>&lt;cxx-ret-type></i></code>
+ if <code><i>&lt;cxx-ret-type></i></code> ends with <code>*</code> or
+ <code>&amp;</code> (that is, it is a pointer or a reference) and
+ <code>const&nbsp;<i>&lt;cxx-ret-type></i>&amp;</code>
+ otherwise.
+ <code><i>&lt;file-name></i></code> is a file name either in the
+ <code>" "</code> or <code>&lt; ></code> format
+ and is added with the <code>#include</code> directive to
+ the generated code.</p>
+
+ <p>The <code><b>#</b></code> character starts a comment that ends
+ with a new line or end of file. To specify a name that contains
+ <code><b>#</b></code> enclose it in <code><b>" "</b></code>.
+ For example:</p>
+
+ <pre>
+namespace http://www.example.com/xmlns/my my
+{
+ include "my.hxx";
+
+ # Pass apples by value.
+ #
+ apple apple;
+
+ # Pass oranges as pointers.
+ #
+ orange orange_t*;
+}
+ </pre>
+
+ <p>In the example above, for the
+ <code>http://www.example.com/xmlns/my#orange</code>
+ XML Schema type, the <code>my::orange_t*</code> C++ type will
+ be used as both return and argument types.</p>
+
+ <p>Several namespace declarations can be specified in a single
+ file. The namespace declaration can also be completely
+ omitted to map types in a schema without a namespace. For
+ instance:</p>
+
+ <pre class="type-map">
+include "my.hxx";
+apple apple;
+
+namespace http://www.example.com/xmlns/my
+{
+ orange "const orange_t*";
+}
+ </pre>
+
+ <p>The compiler has a number of predefined mapping rules for
+ the built-in XML Schema types which can be presented as the
+ following map files. The string-based XML Schema types are
+ mapped to either <code>std::string</code> or
+ <code>std::wstring</code> depending on the character type
+ selected (see <a href="#5.2"> Section 5.2, "Character Type and
+ Encoding"</a> for more information). The binary XML Schema
+ types are mapped to either <code>std::unique_ptr&lt;xml_schema::buffer></code>
+ or <code>std::auto_ptr&lt;xml_schema::buffer></code>
+ depending on the C++ standard selected (C++11 or C++98,
+ respectively; refer to the <code>--std</code> XSD compiler
+ command line option for details).</p>
+
+ <pre class="type-map">
+namespace http://www.w3.org/2001/XMLSchema
+{
+ boolean bool bool;
+
+ byte "signed char" "signed char";
+ unsignedByte "unsigned char" "unsigned char";
+
+ short short short;
+ unsignedShort "unsigned short" "unsigned short";
+
+ int int int;
+ unsignedInt "unsigned int" "unsigned int";
+
+ long "long long" "long long";
+ unsignedLong "unsigned long long" "unsigned long long";
+
+ integer "long long" "long long";
+
+ negativeInteger "long long" "long long";
+ nonPositiveInteger "long long" "long long";
+
+ positiveInteger "unsigned long long" "unsigned long long";
+ nonNegativeInteger "unsigned long long" "unsigned long long";
+
+ float float float;
+ double double double;
+ decimal double double;
+
+ string std::string;
+ normalizedString std::string;
+ token std::string;
+ Name std::string;
+ NMTOKEN std::string;
+ NCName std::string;
+ ID std::string;
+ IDREF std::string;
+ language std::string;
+ anyURI std::string;
+
+ NMTOKENS xml_schema::string_sequence;
+ IDREFS xml_schema::string_sequence;
+
+ QName xml_schema::qname;
+
+ base64Binary std::[unique|auto]_ptr&lt;xml_schema::buffer>
+ std::[unique|auto]_ptr&lt;xml_schema::buffer>;
+ hexBinary std::[unique|auto]_ptr&lt;xml_schema::buffer>
+ std::[unique|auto]_ptr&lt;xml_schema::buffer>;
+
+ date xml_schema::date;
+ dateTime xml_schema::date_time;
+ duration xml_schema::duration;
+ gDay xml_schema::gday;
+ gMonth xml_schema::gmonth;
+ gMonthDay xml_schema::gmonth_day;
+ gYear xml_schema::gyear;
+ gYearMonth xml_schema::gyear_month;
+ time xml_schema::time;
+}
+ </pre>
+
+ <p>For more information about the mapping of the built-in XML Schema types
+ to C++ types refer to <a href="#6">Chapter 6, "Built-In XML Schema Type
+ Parsers"</a>. The last predefined rule maps anything that wasn't
+ mapped by previous rules to <code>void</code>:</p>
+
+ <pre class="type-map">
+namespace .*
+{
+ .* void void;
+}
+ </pre>
+
+
+ <p>When you provide your own type maps with the
+ <code>--type-map</code> option, they are evaluated first. This
+ allows you to selectively override any of the predefined rules.
+ Note also that if you change the mapping
+ of a built-in XML Schema type then it becomes your responsibility
+ to provide the corresponding parser skeleton and implementation
+ in the <code>xml_schema</code> namespace. You can include the
+ custom definitions into the generated header file using the
+ <code>--hxx-prologue-*</code> options.</p>
+
+ <h2><a name="4.3">4.3 Parser Implementations</a></h2>
+
+ <p>With the knowledge from the previous section, we can proceed
+ with creating a type map that maps types in the <code>people.xsd</code>
+ schema to our object model classes in
+ <code>people.hxx</code>. In fact, we already have the beginning
+ of our type map file in <code>people.map</code>. Let's extend
+ it with the rest of the types:</p>
+
+ <pre class="type-map">
+include "people.hxx";
+
+gender ::gender ::gender;
+person ::person;
+people ::people;
+ </pre>
+
+ <p>There are a few things to note about this type map. We did not
+ provide the argument types for <code>person</code> and
+ <code>people</code> because the default constant reference is
+ exactly what we need. We also did not provide any mappings
+ for built-in XML Schema types <code>string</code> and
+ <code>short</code> because they are handled by the predefined
+ rules and we are happy with the result. Note also that
+ all C++ types are fully qualified. This is done to avoid
+ potential name conflicts in the generated code. Now we can
+ recompile our schema and move on to implementing the parsers:</p>
+
+ <pre class="terminal">
+$ xsd cxx-parser --xml-parser expat --type-map people.map people.xsd
+ </pre>
+
+ <p>Here is the implementation of our three parsers in full. One
+ way to save typing when implementing your own parsers is
+ to open the generated code and copy the signatures of parser
+ callbacks into your code. Or you could always auto generate the
+ sample implementations and fill them with your code.</p>
+
+
+ <pre class="c++">
+#include "people-pskel.hxx"
+
+class gender_pimpl: public gender_pskel,
+ public xml_schema::string_pimpl
+{
+public:
+ virtual ::gender
+ post_gender ()
+ {
+ return post_string () == "male" ? male : female;
+ }
+};
+
+class person_pimpl: public person_pskel
+{
+public:
+ virtual void
+ first_name (const std::string&amp; f)
+ {
+ first_ = f;
+ }
+
+ virtual void
+ last_name (const std::string&amp; l)
+ {
+ last_ = l;
+ }
+
+ virtual void
+ gender (::gender g)
+ {
+ gender_ = g;
+ }
+
+ virtual void
+ age (short a)
+ {
+ age_ = a;
+ }
+
+ virtual ::person
+ post_person ()
+ {
+ return ::person (first_, last_, gender_, age_);
+ }
+
+private:
+ std::string first_;
+ std::string last_;
+ ::gender gender_;
+ short age_;
+};
+
+class people_pimpl: public people_pskel
+{
+public:
+ virtual void
+ person (const ::person&amp; p)
+ {
+ people_.push_back (p);
+ }
+
+ virtual ::people
+ post_people ()
+ {
+ ::people r;
+ r.swap (people_);
+ return r;
+ }
+
+private:
+ ::people people_;
+};
+ </pre>
+
+ <p>This code fragment should look familiar by now. Just note that
+ all the <code>post_*()</code> callbacks now have return types instead
+ of <code>void</code>. Here is the implementation of the test
+ driver for this example:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ // Construct the parser.
+ //
+ xml_schema::short_pimpl short_p;
+ xml_schema::string_pimpl string_p;
+
+ gender_pimpl gender_p;
+ person_pimpl person_p;
+ people_pimpl people_p;
+
+ person_p.parsers (string_p, string_p, gender_p, short_p);
+ people_p.parsers (person_p);
+
+ // Parse the document to obtain the object model.
+ //
+ xml_schema::document doc_p (people_p, "people");
+
+ people_p.pre ();
+ doc_p.parse (argv[1]);
+ people ppl = people_p.post_people ();
+
+ // Print the object model.
+ //
+ for (people::iterator i (ppl.begin ()); i != ppl.end (); ++i)
+ {
+ cout &lt;&lt; "first: " &lt;&lt; i->first () &lt;&lt; endl
+ &lt;&lt; "last: " &lt;&lt; i->last () &lt;&lt; endl
+ &lt;&lt; "gender: " &lt;&lt; (i->gender () == male ? "male" : "female") &lt;&lt; endl
+ &lt;&lt; "age: " &lt;&lt; i->age () &lt;&lt; endl
+ &lt;&lt; endl;
+ }
+}
+ </pre>
+
+ <p>The parser creation and assembly part is exactly the same as in
+ the previous chapter. The parsing part is a bit different:
+ <code>post_people()</code> now has a return value which is the
+ complete object model. We store it in the
+ <code>ppl</code> variable. The last bit of the code simply iterates
+ over the <code>people</code> vector and prints the information
+ for each person. We save the last two code fragments to
+ <code>driver.cxx</code> and proceed to compile and test
+ our new application:</p>
+
+
+ <pre class="terminal">
+$ c++ -std=c++11 -I.../libxsd -c driver.cxx people-pskel.cxx
+$ c++ -std=c++11 -o driver driver.o people-pskel.o -lexpat
+$ ./driver people.xml
+first: John
+last: Doe
+gender: male
+age: 32
+
+first: Jane
+last: Doe
+gender: female
+age: 28
+ </pre>
+
+
+ <!-- Mapping Configuration -->
+
+
+ <h1><a name="5">5 Mapping Configuration</a></h1>
+
+ <p>The C++/Parser mapping has a number of configuration parameters that
+ determine the overall properties and behavior of the generated code.
+ Configuration parameters are specified with the XSD command line
+ options and include the C++ standard, the character type that is used
+ by the generated code, the underlying XML parser, whether the XML Schema
+ validation is performed in the generated code, and support for XML Schema
+ polymorphism. This chapter describes these configuration
+ parameters in more detail. For more ways to configure the generated
+ code refer to the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>.
+ </p>
+
+ <h2><a name="5.1">5.1 C++ Standard</a></h2>
+
+ <p>The C++/Parser mapping provides support for ISO/IEC C++ 2011 (C++11)
+ and ISO/IEC C++ 1998/2003 (C++98). To select the C++ standard for the
+ generated code we use the <code>--std</code> XSD compiler command
+ line option. While the majority of the examples in this guide use
+ C++11, the document explains the C++11/98 usage difference and so
+ they can easily be converted to C++98.</p>
+
+ <h2><a name="5.2">5.2 Character Type and Encoding</a></h2>
+
+ <p>The C++/Parser mapping has built-in support for two character types:
+ <code>char</code> and <code>wchar_t</code>. You can select the
+ character type with the <code>--char-type</code> command line
+ option. The default character type is <code>char</code>. The
+ string-based built-in XML Schema types are returned as either
+ <code>std::string</code> or <code>std::wstring</code> depending
+ on the character type selected.</p>
+
+ <p>Another aspect of the mapping that depends on the character type
+ is character encoding. For the <code>char</code> character type
+ the default encoding is UTF-8. Other supported encodings are
+ ISO-8859-1, Xerces-C++ Local Code Page (LPC), as well as
+ custom encodings. You can select which encoding should be used
+ in the object model with the <code>--char-encoding</code> command
+ line option.</p>
+
+ <p>For the <code>wchar_t</code> character type the encoding is
+ automatically selected between UTF-16 and UTF-32/UCS-4 depending
+ on the size of the <code>wchar_t</code> type. On some platforms
+ (for example, Windows with Visual C++ and AIX with IBM XL C++)
+ <code>wchar_t</code> is 2 bytes long. For these platforms the
+ encoding is UTF-16. On other platforms <code>wchar_t</code> is 4 bytes
+ long and UTF-32/UCS-4 is used.</p>
+
+ <p>Note also that the character encoding that is used in the object model
+ is independent of the encodings used in input and output XML. In fact,
+ all three (object mode, input XML, and output XML) can have different
+ encodings.</p>
+
+ <h2><a name="5.3">5.3 Underlying XML Parser</a></h2>
+
+ <p>The C++/Parser mapping can be used with either Xerces-C++ or Expat
+ as the underlying XML parser. You can select the XML parser with
+ the <code>--xml-parser</code> command line option. Valid values
+ for this option are <code>xerces</code> and <code>expat</code>.
+ The default XML parser is Xerces-C++.</p>
+
+ <p>The generated code is identical for both parsers except for the
+ <code>xml_schema::document</code> class in which some of the
+ <code>parse()</code> functions are parser-specific as described
+ in <a href="#7">Chapter 7, "Document Parser and Error Handling"</a>.</p>
+
+
+ <h2><a name="5.4">5.4 XML Schema Validation</a></h2>
+
+ <p>The C++/Parser mapping provides support for validating a
+ commonly-used subset of W3C XML Schema in the generated code.
+ For the list of supported XML Schema constructs refer to
+ <a href="#A">Appendix A, "Supported XML Schema Constructs"</a>.</p>
+
+ <p>By default validation in the generated code is disabled if
+ the underlying XML parser is validating (Xerces-C++) and
+ enabled otherwise (Expat). See <a href="#5.3">Section 5.3,
+ "Underlying XML Parser"</a> for more information about
+ the underlying XML parser. You can override the default
+ behavior with the <code>--generate-validation</code>
+ and <code>--suppress-validation</code> command line options.</p>
+
+
+ <h2><a name="5.5">5.5 Support for Polymorphism</a></h2>
+
+ <p>By default the XSD compiler generates non-polymorphic code. If your
+ vocabulary uses XML Schema polymorphism in the form of <code>xsi:type</code>
+ and/or substitution groups, then you will need to compile your schemas
+ with the <code>--generate-polymorphic</code> option to produce
+ polymorphism-aware code as well as pass <code>true</code> as the last
+ argument to the <code>xml_schema::document</code>'s constructors.</p>
+
+ <p>When using the polymorphism-aware generated code, you can specify
+ several parsers for a single element by passing a parser map
+ instead of an individual parser to the parser connection function
+ for the element. One of the parsers will then be looked up and used
+ depending on the <code>xsi:type</code> attribute value or an element
+ name from a substitution group. Consider the following schema as an
+ example:</p>
+
+ <pre class="xml">
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:complexType name="person">
+ &lt;xs:sequence>
+ &lt;xs:element name="name" type="xs:string"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;!-- substitution group root -->
+ &lt;xs:element name="person" type="person"/>
+
+ &lt;xs:complexType name="superman">
+ &lt;xs:complexContent>
+ &lt;xs:extension base="person">
+ &lt;xs:attribute name="can-fly" type="xs:boolean"/>
+ &lt;/xs:extension>
+ &lt;/xs:complexContent>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="superman"
+ type="superman"
+ substitutionGroup="person"/>
+
+ &lt;xs:complexType name="batman">
+ &lt;xs:complexContent>
+ &lt;xs:extension base="superman">
+ &lt;xs:attribute name="wing-span" type="xs:unsignedInt"/>
+ &lt;/xs:extension>
+ &lt;/xs:complexContent>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="batman"
+ type="batman"
+ substitutionGroup="superman"/>
+
+ &lt;xs:complexType name="supermen">
+ &lt;xs:sequence>
+ &lt;xs:element ref="person" maxOccurs="unbounded"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="supermen" type="supermen"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>Conforming XML documents can use the <code>superman</code>
+ and <code>batman</code> types in place of the <code>person</code>
+ type either by specifying the type with the <code>xsi:type</code>
+ attributes or by using the elements from the substitution
+ group, for instance:</p>
+
+
+ <pre class="xml">
+&lt;supermen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ &lt;person>
+ &lt;name>John Doe&lt;/name>
+ &lt;/person>
+
+ &lt;superman can-fly="false">
+ &lt;name>James "007" Bond&lt;/name>
+ &lt;/superman>
+
+ &lt;superman can-fly="true" wing-span="10" xsi:type="batman">
+ &lt;name>Bruce Wayne&lt;/name>
+ &lt;/superman>
+
+&lt;/supermen>
+ </pre>
+
+ <p>To print the data stored in such XML documents we can implement
+ the parsers as follows:</p>
+
+ <pre class="c++">
+class person_pimpl: public virtual person_pskel
+{
+public:
+ virtual void
+ pre ()
+ {
+ cout &lt;&lt; "starting to parse person" &lt;&lt; endl;
+ }
+
+ virtual void
+ name (const std::string&amp; v)
+ {
+ cout &lt;&lt; "name: " &lt;&lt; v &lt;&lt; endl;
+ }
+
+ virtual void
+ post_person ()
+ {
+ cout &lt;&lt; "finished parsing person" &lt;&lt; endl;
+ }
+};
+
+class superman_pimpl: public virtual superman_pskel,
+ public person_pimpl
+{
+public:
+ virtual void
+ pre ()
+ {
+ cout &lt;&lt; "starting to parse superman" &lt;&lt; endl;
+ }
+
+ virtual void
+ can_fly (bool v)
+ {
+ cout &lt;&lt; "can-fly: " &lt;&lt; v &lt;&lt; endl;
+ }
+
+ virtual void
+ post_person ()
+ {
+ post_superman ();
+ }
+
+ virtual void
+ post_superman ()
+ {
+ cout &lt;&lt; "finished parsing superman" &lt;&lt; endl
+ }
+};
+
+class batman_pimpl: public virtual batman_pskel,
+ public superman_pimpl
+{
+public:
+ virtual void
+ pre ()
+ {
+ cout &lt;&lt; "starting to parse batman" &lt;&lt; endl;
+ }
+
+ virtual void
+ wing_span (unsigned int v)
+ {
+ cout &lt;&lt; "wing-span: " &lt;&lt; v &lt;&lt; endl;
+ }
+
+ virtual void
+ post_superman ()
+ {
+ post_batman ();
+ }
+
+ virtual void
+ post_batman ()
+ {
+ cout &lt;&lt; "finished parsing batman" &lt;&lt; endl;
+ }
+};
+ </pre>
+
+ <p>Note that because the derived type parsers (<code>superman_pskel</code>
+ and <code>batman_pskel</code>) are called via the <code>person_pskel</code>
+ interface, we have to override the <code>post_person()</code>
+ virtual function in <code>superman_pimpl</code> to call
+ <code>post_superman()</code> and the <code>post_superman()</code>
+ virtual function in <code>batman_pimpl</code> to call
+ <code>post_batman()</code>.</p>
+
+ <p>The following code fragment shows how to connect the parsers together.
+ Notice that for the <code>person</code> element in the <code>supermen_p</code>
+ parser we specify a parser map instead of a specific parser and we pass
+ <code>true</code> as the last argument to the document parser constructor
+ to indicate that we are parsing potentially-polymorphic XML documents:</p>
+
+ <pre class="c++">
+int
+main (int argc, char* argv[])
+{
+ // Construct the parser.
+ //
+ xml_schema::string_pimpl string_p;
+ xml_schema::boolean_pimpl boolean_p;
+ xml_schema::unsigned_int_pimpl unsigned_int_p;
+
+ person_pimpl person_p;
+ superman_pimpl superman_p;
+ batman_pimpl batman_p;
+
+ xml_schema::parser_map_impl person_map;
+ supermen_pimpl supermen_p;
+
+ person_p.parsers (string_p);
+ superman_p.parsers (string_p, boolean_p);
+ batman_p.parsers (string_p, boolean_p, unsigned_int_p);
+
+ // Here we are specifying a parser map which containes several
+ // parsers that can be used to parse the person element.
+ //
+ person_map.insert (person_p);
+ person_map.insert (superman_p);
+ person_map.insert (batman_p);
+
+ supermen_p.person_parser (person_map);
+
+ // Parse the XML document. The last argument to the document's
+ // constructor indicates that we are parsing polymorphic XML
+ // documents.
+ //
+ xml_schema::document doc_p (supermen_p, "supermen", true);
+
+ supermen_p.pre ();
+ doc_p.parse (argv[1]);
+ supermen_p.post_supermen ();
+}
+ </pre>
+
+ <p>When polymorphism-aware code is generated, each element's
+ <code>*_parser()</code> function is overloaded to also accept
+ an object of the <code>xml_schema::parser_map</code> type.
+ For example, the <code>supermen_pskel</code> class from the
+ above example looks like this:</p>
+
+ <pre class="c++">
+class supermen_pskel: public xml_schema::parser_complex_content
+{
+public:
+
+ ...
+
+ // Parser construction API.
+ //
+ void
+ parsers (person_pskel&amp;);
+
+ // Individual element parsers.
+ //
+ void
+ person_parser (person_pskel&amp;);
+
+ void
+ person_parser (const xml_schema::parser_map&amp;);
+
+ ...
+};
+ </pre>
+
+ <p>Note that you can specify both the individual (static) parser and
+ the parser map. The individual parser will be used when the static
+ element type and the dynamic type of the object being parsed are
+ the same. This is the case, for example, when there is no
+ <code>xsi:type</code> attribute and the element hasn't been
+ substituted. Because the individual parser for an element is
+ cached and no map lookup is necessary, it makes sense to specify
+ both the individual parser and the parser map when most of the
+ objects being parsed are of the static type and optimal
+ performance is important. The following code fragment shows
+ how to change the above example to set both the individual
+ parser and the parser map:</p>
+
+ <pre class="c++">
+int
+main (int argc, char* argv[])
+{
+ ...
+
+ person_map.insert (superman_p);
+ person_map.insert (batman_p);
+
+ supermen_p.person_parser (person_p);
+ supermen_p.person_parser (person_map);
+
+ ...
+}
+ </pre>
+
+
+ <p>The <code>xml_schema::parser_map</code> interface and the
+ <code>xml_schema::parser_map_impl</code> default implementation
+ are presented below:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class parser_map
+ {
+ public:
+ virtual parser_base*
+ find (const ro_string* type) const = 0;
+ };
+
+ class parser_map_impl: public parser_map
+ {
+ public:
+ void
+ insert (parser_base&amp;);
+
+ virtual parser_base*
+ find (const ro_string* type) const;
+
+ private:
+ parser_map_impl (const parser_map_impl&amp;);
+
+ parser_map_impl&amp;
+ operator= (const parser_map_impl&amp;);
+
+ ...
+ };
+}
+ </pre>
+
+ <p>The <code>type</code> argument in the <code>find()</code> virtual
+ function is the type name and namespace from the xsi:type attribute
+ (the namespace prefix is resolved to the actual XML namespace)
+ or the type of an element from the substitution group in the form
+ <code>"&lt;name>&nbsp;&lt;namespace>"</code> with the space and the
+ namespace part absent if the type does not have a namespace.
+ You can obtain a parser's dynamic type in the same format
+ using the <code>_dynamic_type()</code> function. The static
+ type can be obtained by calling the static <code>_static_type()</code>
+ function, for example <code>person_pskel::_static_type()</code>.
+ Both functions return a C string (<code>const char*</code> or
+ <code>const wchar_t*</code>, depending on the character type
+ used) which is valid for as long as the application is running.
+ The following example shows how we can implement our own parser
+ map using <code>std::map</code>:</p>
+
+
+ <pre class="c++">
+#include &lt;map>
+#include &lt;string>
+
+class parser_map: public xml_schema::parser_map
+{
+public:
+ void
+ insert (xml_schema::parser_base&amp; p)
+ {
+ map_[p._dynamic_type ()] = &amp;p;
+ }
+
+ virtual xml_schema::parser_base*
+ find (const xml_schema::ro_string* type) const
+ {
+ map::const_iterator i = map_.find (type);
+ return i != map_.end () ? i->second : 0;
+ }
+
+private:
+ typedef std::map&lt;std::string, xml_schema::parser_base*> map;
+ map map_;
+};
+ </pre>
+
+ <p>Most of code presented in this section is taken from the
+ <code>polymorphism</code> example which can be found in the
+ <code>cxx/parser/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package.
+ Handling of <code>xsi:type</code> and substitution groups when used on
+ root elements requires a number of special actions as shown in
+ the <code>polyroot</code> example.</p>
+
+
+ <!-- Built-in XML Schema Type Parsers -->
+
+
+ <h1><a name="6">6 Built-In XML Schema Type Parsers</a></h1>
+
+ <p>The XSD runtime provides parser implementations for all built-in
+ XML Schema types as summarized in the following table. Declarations
+ for these types are automatically included into each generated
+ header file. As a result you don't need to include any headers
+ to gain access to these parser implementations. Note that some
+ parsers return either <code>std::string</code> or
+ <code>std::wstring</code> depending on the character type selected.</p>
+
+ <!-- border="1" is necessary for html2ps -->
+ <table id="builtin" border="1">
+ <tr>
+ <th>XML Schema type</th>
+ <th>Parser implementation in the <code>xml_schema</code> namespace</th>
+ <th>Parser return type</th>
+ </tr>
+
+ <tr>
+ <th colspan="3">anyType and anySimpleType types</th>
+ </tr>
+ <tr>
+ <td><code>anyType</code></td>
+ <td><code>any_type_pimpl</code></td>
+ <td><code>void</code></td>
+ </tr>
+ <tr>
+ <td><code>anySimpleType</code></td>
+ <td><code>any_simple_type_pimpl</code></td>
+ <td><code>void</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-length integral types</th>
+ </tr>
+ <!-- 8-bit -->
+ <tr>
+ <td><code>byte</code></td>
+ <td><code>byte_pimpl</code></td>
+ <td><code>signed&nbsp;char</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedByte</code></td>
+ <td><code>unsigned_byte_pimpl</code></td>
+ <td><code>unsigned&nbsp;char</code></td>
+ </tr>
+
+ <!-- 16-bit -->
+ <tr>
+ <td><code>short</code></td>
+ <td><code>short_pimpl</code></td>
+ <td><code>short</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedShort</code></td>
+ <td><code>unsigned_short_pimpl</code></td>
+ <td><code>unsigned&nbsp;short</code></td>
+ </tr>
+
+ <!-- 32-bit -->
+ <tr>
+ <td><code>int</code></td>
+ <td><code>int_pimpl</code></td>
+ <td><code>int</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedInt</code></td>
+ <td><code>unsigned_int_pimpl</code></td>
+ <td><code>unsigned&nbsp;int</code></td>
+ </tr>
+
+ <!-- 64-bit -->
+ <tr>
+ <td><code>long</code></td>
+ <td><code>long_pimpl</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedLong</code></td>
+ <td><code>unsigned_long_pimpl</code></td>
+ <td><code>unsigned&nbsp;long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-length integral types</th>
+ </tr>
+ <tr>
+ <td><code>integer</code></td>
+ <td><code>integer_pimpl</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonPositiveInteger</code></td>
+ <td><code>non_positive_integer_pimpl</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonNegativeInteger</code></td>
+ <td><code>non_negative_integer_pimpl</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>positiveInteger</code></td>
+ <td><code>positive_integer_pimpl</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>negativeInteger</code></td>
+ <td><code>negative_integer_pimpl</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">boolean types</th>
+ </tr>
+ <tr>
+ <td><code>boolean</code></td>
+ <td><code>boolean_pimpl</code></td>
+ <td><code>bool</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>float</code></td>
+ <td><code>float_pimpl</code></td>
+ <td><code>float</code></td>
+ </tr>
+ <tr>
+ <td><code>double</code></td>
+ <td><code>double_pimpl</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>decimal</code></td>
+ <td><code>decimal_pimpl</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">string-based types</th>
+ </tr>
+ <tr>
+ <td><code>string</code></td>
+ <td><code>string_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>normalizedString</code></td>
+ <td><code>normalized_string_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>token</code></td>
+ <td><code>token_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>Name</code></td>
+ <td><code>name_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>NMTOKEN</code></td>
+ <td><code>nmtoken_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>NCName</code></td>
+ <td><code>ncname_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+
+ <tr>
+ <td><code>language</code></td>
+ <td><code>language_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">qualified name</th>
+ </tr>
+ <tr>
+ <td><code>QName</code></td>
+ <td><code>qname_pimpl</code></td>
+ <td><code>xml_schema::qname</code><br/><a href="#6.1">Section 6.1,
+ "<code>QName</code> Parser"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">ID/IDREF types</th>
+ </tr>
+ <tr>
+ <td><code>ID</code></td>
+ <td><code>id_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+ <tr>
+ <td><code>IDREF</code></td>
+ <td><code>idref_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">list types</th>
+ </tr>
+ <tr>
+ <td><code>NMTOKENS</code></td>
+ <td><code>nmtokens_pimpl</code></td>
+ <td><code>xml_schema::string_sequence</code><br/><a href="#6.2">Section
+ 6.2, "<code>NMTOKENS</code> and <code>IDREFS</code> Parsers"</a></td>
+ </tr>
+ <tr>
+ <td><code>IDREFS</code></td>
+ <td><code>idrefs_pimpl</code></td>
+ <td><code>xml_schema::string_sequence</code><br/><a href="#6.2">Section
+ 6.2, "<code>NMTOKENS</code> and <code>IDREFS</code> Parsers"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">URI types</th>
+ </tr>
+ <tr>
+ <td><code>anyURI</code></td>
+ <td><code>uri_pimpl</code></td>
+ <td><code>std::string</code> or <code>std::wstring</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">binary types</th>
+ </tr>
+ <tr>
+ <td><code>base64Binary</code></td>
+ <td><code>base64_binary_pimpl</code></td>
+ <td><code>std::[unique|auto]_ptr&lt; xml_schema::buffer></code><br/>
+ <a href="#6.3">Section 6.3, "<code>base64Binary</code> and
+ <code>hexBinary</code> Parsers"</a></td>
+ </tr>
+ <tr>
+ <td><code>hexBinary</code></td>
+ <td><code>hex_binary_pimpl</code></td>
+ <td><code>std::[unique|auto]_ptr&lt; xml_schema::buffer></code><br/>
+ <a href="#6.3">Section 6.3, "<code>base64Binary</code> and
+ <code>hexBinary</code> Parsers"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">date/time types</th>
+ </tr>
+ <tr>
+ <td><code>date</code></td>
+ <td><code>date_pimpl</code></td>
+ <td><code>xml_schema::date</code><br/><a href="#6.5">Section 6.5,
+ "<code>date</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>dateTime</code></td>
+ <td><code>date_time_pimpl</code></td>
+ <td><code>xml_schema::date_time</code><br/><a href="#6.6">Section 6.6,
+ "<code>dateTime</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>duration</code></td>
+ <td><code>duration_pimpl</code></td>
+ <td><code>xml_schema::duration</code><br/><a href="#6.7">Section 6.7,
+ "<code>duration</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>gDay</code></td>
+ <td><code>gday_pimpl</code></td>
+ <td><code>xml_schema::gday</code><br/><a href="#6.8">Section 6.8,
+ "<code>gDay</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>gMonth</code></td>
+ <td><code>gmonth_pimpl</code></td>
+ <td><code>xml_schema::gmonth</code><br/><a href="#6.9">Section 6.9,
+ "<code>gMonth</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>gMonthDay</code></td>
+ <td><code>gmonth_day_pimpl</code></td>
+ <td><code>xml_schema::gmonth_day</code><br/><a href="#6.10">Section 6.10,
+ "<code>gMonthDay</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>gYear</code></td>
+ <td><code>gyear_pimpl</code></td>
+ <td><code>xml_schema::gyear</code><br/><a href="#6.11">Section 6.11,
+ "<code>gYear</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>gYearMonth</code></td>
+ <td><code>gyear_month_pimpl</code></td>
+ <td><code>xml_schema::gyear_month</code><br/><a href="#6.12">Section
+ 6.12, "<code>gYearMonth</code> Parser"</a></td>
+ </tr>
+ <tr>
+ <td><code>time</code></td>
+ <td><code>time_pimpl</code></td>
+ <td><code>xml_schema::time</code><br/><a href="#6.13">Section 6.13,
+ "<code>time</code> Parser"</a></td>
+ </tr>
+
+ </table>
+
+ <h2><a name="6.1">6.1 <code>QName</code> Parser</a></h2>
+
+ <p>The return type of the <code>qname_pimpl</code> parser implementation
+ is <code>xml_schema::qname</code> which represents an XML qualified
+ name. Its interface is presented below.
+ Note that the <code>std::string</code> type in the interface becomes
+ <code>std::wstring</code> if the selected character type is
+ <code>wchar_t</code>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class qname
+ {
+ public:
+ explicit
+ qname (const std::string&amp; name);
+ qname (const std::string&amp; prefix, const std::string&amp; name);
+
+ const std::string&amp;
+ prefix () const;
+
+ void
+ prefix (const std::string&amp;);
+
+ const std::string&amp;
+ name () const;
+
+ void
+ name (const std::string&amp;);
+ };
+
+ bool
+ operator== (const qname&amp;, const qname&amp;);
+
+ bool
+ operator!= (const qname&amp;, const qname&amp;);
+}
+ </pre>
+
+
+ <h2><a name="6.2">6.2 <code>NMTOKENS</code> and <code>IDREFS</code> Parsers</a></h2>
+
+ <p>The return type of the <code>nmtokens_pimpl</code> and
+ <code>idrefs_pimpl</code> parser implementations is
+ <code>xml_schema::string_sequence</code> which represents a
+ sequence of strings. Its interface is presented below.
+ Note that the <code>std::string</code> type in the interface becomes
+ <code>std::wstring</code> if the selected character type is
+ <code>wchar_t</code>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class string_sequence: public std::vector&lt;std::string>
+ {
+ public:
+ string_sequence ();
+
+ explicit
+ string_sequence (std::vector&lt;std::string>::size_type n,
+ const std::string&amp; x = std::string ());
+
+ template &lt;typename I>
+ string_sequence (const I&amp; begin, const I&amp; end);
+ };
+
+ bool
+ operator== (const string_sequence&amp;, const string_sequence&amp;);
+
+ bool
+ operator!= (const string_sequence&amp;, const string_sequence&amp;);
+}
+ </pre>
+
+
+ <h2><a name="6.3">6.3 <code>base64Binary</code> and <code>hexBinary</code> Parsers</a></h2>
+
+ <p>The return type of the <code>base64_binary_pimpl</code> and
+ <code>hex_binary_pimpl</code> parser implementations is either
+ <code>std::unique_ptr&lt;xml_schema::buffer></code> (C++11) or
+ <code>std::auto_ptr&lt;xml_schema::buffer></code> (C++98),
+ depending on the C++ standard selected (<code>--std</code> XSD
+ compiler option). The <code>xml_schema::buffer</code> type
+ represents a binary buffer and its interface is presented below.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class buffer
+ {
+ public:
+ typedef std::size_t size_t;
+
+ class bounds {}; // Out of bounds exception.
+
+ public:
+ explicit
+ buffer (size_t size = 0);
+ buffer (size_t size, size_t capacity);
+ buffer (const void* data, size_t size);
+ buffer (const void* data, size_t size, size_t capacity);
+ buffer (void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership);
+
+ public:
+ buffer (const buffer&amp;);
+
+ buffer&amp;
+ operator= (const buffer&amp;);
+
+ void
+ swap (buffer&amp;);
+
+ public:
+ size_t
+ capacity () const;
+
+ bool
+ capacity (size_t);
+
+ public:
+ size_t
+ size () const;
+
+ bool
+ size (size_t);
+
+ public:
+ const char*
+ data () const;
+
+ char*
+ data ();
+
+ const char*
+ begin () const;
+
+ char*
+ begin ();
+
+ const char*
+ end () const;
+
+ char*
+ end ();
+ };
+
+ bool
+ operator== (const buffer&amp;, const buffer&amp;);
+
+ bool
+ operator!= (const buffer&amp;, const buffer&amp;);
+}
+ </pre>
+
+ <p>If the <code>assume_ownership</code> argument to the constructor
+ is <code>true</code>, the instance assumes the ownership of the
+ memory block pointed to by the <code>data</code> argument and will
+ eventually release it by calling <code>operator delete()</code>. The
+ <code>capacity()</code> and <code>size()</code> modifier functions
+ return <code>true</code> if the underlying buffer has moved.
+ </p>
+
+ <p>The <code>bounds</code> exception is thrown if the constructor
+ arguments violate the <code>(size&nbsp;&lt;=&nbsp;capacity)</code>
+ constraint.</p>
+
+
+ <h2><a name="6.4">6.4 Time Zone Representation</a></h2>
+
+ <p>The <code>date</code>, <code>dateTime</code>, <code>gDay</code>,
+ <code>gMonth</code>, <code>gMonthDay</code>, <code>gYear</code>,
+ <code>gYearMonth</code>, and <code>time</code> XML Schema built-in
+ types all include an optional time zone component. The following
+ <code>xml_schema::time_zone</code> base class is used to represent
+ this information:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class time_zone
+ {
+ public:
+ time_zone ();
+ time_zone (short hours, short minutes);
+
+ bool
+ zone_present () const;
+
+ void
+ zone_reset ();
+
+ short
+ zone_hours () const;
+
+ void
+ zone_hours (short);
+
+ short
+ zone_minutes () const;
+
+ void
+ zone_minutes (short);
+ };
+
+ bool
+ operator== (const time_zone&amp;, const time_zone&amp;);
+
+ bool
+ operator!= (const time_zone&amp;, const time_zone&amp;);
+}
+ </pre>
+
+ <p>The <code>zone_present()</code> accessor function returns <code>true</code>
+ if the time zone is specified. The <code>zone_reset()</code> modifier
+ function resets the time zone object to the <em>not specified</em>
+ state. If the time zone offset is negative then both hours and
+ minutes components are represented as negative integers.</p>
+
+
+ <h2><a name="6.5">6.5 <code>date</code> Parser</a></h2>
+
+ <p>The return type of the <code>date_pimpl</code> parser implementation
+ is <code>xml_schema::date</code> which represents a year, a day, and a month
+ with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class date
+ {
+ public:
+ date (int year, unsigned short month, unsigned short day);
+ date (int year, unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes);
+
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+ };
+
+ bool
+ operator== (const date&amp;, const date&amp;);
+
+ bool
+ operator!= (const date&amp;, const date&amp;);
+}
+ </pre>
+
+ <h2><a name="6.6">6.6 <code>dateTime</code> Parser</a></h2>
+
+ <p>The return type of the <code>date_time_pimpl</code> parser implementation
+ is <code>xml_schema::date_time</code> which represents a year, a month, a day,
+ hours, minutes, and seconds with an optional time zone. Its interface
+ is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class date_time
+ {
+ public:
+ date_time (int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds);
+
+ date_time (int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds, short zone_hours, short zone_minutes);
+
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+
+ unsigned short
+ hours () const;
+
+ void
+ hours (unsigned short);
+
+ unsigned short
+ minutes () const;
+
+ void
+ minutes (unsigned short);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+ };
+
+ bool
+ operator== (const date_time&amp;, const date_time&amp;);
+
+ bool
+ operator!= (const date_time&amp;, const date_time&amp;);
+}
+ </pre>
+
+ <h2><a name="6.7">6.7 <code>duration</code> Parser</a></h2>
+
+ <p>The return type of the <code>duration_pimpl</code> parser implementation
+ is <code>xml_schema::duration</code> which represents a potentially
+ negative duration in the form of years, months, days, hours, minutes,
+ and seconds. Its interface is presented below.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class duration
+ {
+ public:
+ duration (bool negative,
+ unsigned int years, unsigned int months, unsigned int days,
+ unsigned int hours, unsigned int minutes, double seconds);
+
+ bool
+ negative () const;
+
+ void
+ negative (bool);
+
+ unsigned int
+ years () const;
+
+ void
+ years (unsigned int);
+
+ unsigned int
+ months () const;
+
+ void
+ months (unsigned int);
+
+ unsigned int
+ days () const;
+
+ void
+ days (unsigned int);
+
+ unsigned int
+ hours () const;
+
+ void
+ hours (unsigned int);
+
+ unsigned int
+ minutes () const;
+
+ void
+ minutes (unsigned int);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+ };
+
+ bool
+ operator== (const duration&amp;, const duration&amp;);
+
+ bool
+ operator!= (const duration&amp;, const duration&amp;);
+}
+ </pre>
+
+
+ <h2><a name="6.8">6.8 <code>gDay</code> Parser</a></h2>
+
+ <p>The return type of the <code>gday_pimpl</code> parser implementation
+ is <code>xml_schema::gday</code> which represents a day of the month with
+ an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class gday
+ {
+ public:
+ explicit
+ gday (unsigned short day);
+ gday (unsigned short day, short zone_hours, short zone_minutes);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+ };
+
+ bool
+ operator== (const gday&amp;, const gday&amp;);
+
+ bool
+ operator!= (const gday&amp;, const gday&amp;);
+}
+ </pre>
+
+ <h2><a name="6.9">6.9 <code>gMonth</code> Parser</a></h2>
+
+ <p>The return type of the <code>gmonth_pimpl</code> parser implementation
+ is <code>xml_schema::gmonth</code> which represents a month of the year
+ with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class gmonth
+ {
+ public:
+ explicit
+ gmonth (unsigned short month);
+ gmonth (unsigned short month, short zone_hours, short zone_minutes);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+ };
+
+ bool
+ operator== (const gmonth&amp;, const gmonth&amp;);
+
+ bool
+ operator!= (const gmonth&amp;, const gmonth&amp;);
+}
+ </pre>
+
+ <h2><a name="6.10">6.10 <code>gMonthDay</code> Parser</a></h2>
+
+ <p>The return type of the <code>gmonth_day_pimpl</code> parser implementation
+ is <code>xml_schema::gmonth_day</code> which represents a day and a month
+ of the year with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class gmonth_day
+ {
+ public:
+ gmonth_day (unsigned short month, unsigned short day);
+ gmonth_day (unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+ };
+
+ bool
+ operator== (const gmonth_day&amp;, const gmonth_day&amp;);
+
+ bool
+ operator!= (const gmonth_day&amp;, const gmonth_day&amp;);
+}
+ </pre>
+
+ <h2><a name="6.11">6.11 <code>gYear</code> Parser</a></h2>
+
+ <p>The return type of the <code>gyear_pimpl</code> parser implementation
+ is <code>xml_schema::gyear</code> which represents a year with
+ an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class gyear
+ {
+ public:
+ explicit
+ gyear (int year);
+ gyear (int year, short zone_hours, short zone_minutes);
+
+ int
+ year () const;
+
+ void
+ year (int);
+ };
+
+ bool
+ operator== (const gyear&amp;, const gyear&amp;);
+
+ bool
+ operator!= (const gyear&amp;, const gyear&amp;);
+}
+ </pre>
+
+ <h2><a name="6.12">6.12 <code>gYearMonth</code> Parser</a></h2>
+
+ <p>The return type of the <code>gyear_month_pimpl</code> parser implementation
+ is <code>xml_schema::gyear_month</code> which represents a year and a month
+ with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class gyear_month
+ {
+ public:
+ gyear_month (int year, unsigned short month);
+ gyear_month (int year, unsigned short month,
+ short zone_hours, short zone_minutes);
+
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+ };
+
+ bool
+ operator== (const gyear_month&amp;, const gyear_month&amp;);
+
+ bool
+ operator!= (const gyear_month&amp;, const gyear_month&amp;);
+}
+ </pre>
+
+
+ <h2><a name="6.13">6.13 <code>time</code> Parser</a></h2>
+
+ <p>The return type of the <code>time_pimpl</code> parser implementation
+ is <code>xml_schema::time</code> which represents hours, minutes,
+ and seconds with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#6.4">Section 6.4, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class time
+ {
+ public:
+ time (unsigned short hours, unsigned short minutes, double seconds);
+ time (unsigned short hours, unsigned short minutes, double seconds,
+ short zone_hours, short zone_minutes);
+
+ unsigned short
+ hours () const;
+
+ void
+ hours (unsigned short);
+
+ unsigned short
+ minutes () const;
+
+ void
+ minutes (unsigned short);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+ };
+
+ bool
+ operator== (const time&amp;, const time&amp;);
+
+ bool
+ operator!= (const time&amp;, const time&amp;);
+}
+ </pre>
+
+
+ <!-- Error Handling -->
+
+
+ <h1><a name="7">7 Document Parser and Error Handling</a></h1>
+
+ <p>In this chapter we will discuss the <code>xml_schema::document</code>
+ type as well as the error handling mechanisms provided by the mapping
+ in more detail. As mentioned in <a href="#3.4">Section 3.4,
+ "Connecting the Parsers Together"</a>, the interface of
+ <code>xml_schema::document</code> depends on the underlying XML
+ parser selected (<a href="#5.3">Section 5.3, "Underlying XML
+ Parser"</a>). The following sections describe the
+ <code>document</code> type interface for Xerces-C++ and
+ Expat as underlying parsers.</p>
+
+ <h2><a name="7.1">7.1 Xerces-C++ Document Parser</a></h2>
+
+ <p>When Xerces-C++ is used as the underlying XML parser, the
+ <code>document</code> type has the following interface. Note that
+ if the character type is <code>wchar_t</code>, then the string type
+ in the interface becomes <code>std::wstring</code>
+ (see <a href="#5.2">Section 5.2, "Character Type and Encoding"</a>).</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class parser_base;
+ class error_handler;
+
+ class flags
+ {
+ public:
+ // Do not validate XML documents with the Xerces-C++ validator.
+ //
+ static const unsigned long dont_validate;
+
+ // Do not initialize the Xerces-C++ runtime.
+ //
+ static const unsigned long dont_initialize;
+
+ // Disable handling of subsequent imports for the same namespace
+ // in Xerces-C++ 3.1.0 and later.
+ //
+ static const unsigned long no_multiple_imports;
+ };
+
+ class properties
+ {
+ public:
+ // Add a location for a schema with a target namespace.
+ //
+ void
+ schema_location (const std::string&amp; namespace_,
+ const std::string&amp; location);
+
+ // Add a location for a schema without a target namespace.
+ //
+ void
+ no_namespace_schema_location (const std::string&amp; location);
+ };
+
+ class document
+ {
+ public:
+ document (parser_base&amp; root,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ document (parser_base&amp; root,
+ const std::string&amp; root_element_namespace,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ public:
+ // Parse URI or a local file.
+ //
+ void
+ parse (const std::string&amp; uri,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse URI or a local file with a user-provided error_handler
+ // object.
+ //
+ void
+ parse (const std::string&amp; uri,
+ error_handler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse URI or a local file with a user-provided ErrorHandler
+ // object. Note that you must initialize the Xerces-C++ runtime
+ // before calling this function.
+ //
+ void
+ parse (const std::string&amp; uri,
+ xercesc::ErrorHandler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse URI or a local file using a user-provided SAX2XMLReader
+ // object. Note that you must initialize the Xerces-C++ runtime
+ // before calling this function.
+ //
+ void
+ parse (const std::string&amp; uri,
+ xercesc::SAX2XMLReader&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ public:
+ // Parse std::istream.
+ //
+ void
+ parse (std::istream&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with a user-provided error_handler object.
+ //
+ void
+ parse (std::istream&amp;,
+ error_handler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with a user-provided ErrorHandler object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ xercesc::ErrorHandler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream using a user-provided SAX2XMLReader object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ xercesc::SAX2XMLReader&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ public:
+ // Parse std::istream with a system id.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with a system id and a user-provided
+ // error_handler object.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ error_handler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with a system id and a user-provided
+ // ErrorHandler object. Note that you must initialize the
+ // Xerces-C++ runtime before calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ xercesc::ErrorHandler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with a system id using a user-provided
+ // SAX2XMLReader object. Note that you must initialize the
+ // Xerces-C++ runtime before calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ xercesc::SAX2XMLReader&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ public:
+ // Parse std::istream with system and public ids.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with system and public ids and a user-provided
+ // error_handler object.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ error_handler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with system and public ids and a user-provided
+ // ErrorHandler object. Note that you must initialize the Xerces-C++
+ // runtime before calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ xercesc::ErrorHandler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse std::istream with system and public ids using a user-
+ // provided SAX2XMLReader object. Note that you must initialize
+ // the Xerces-C++ runtime before calling this function.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ xercesc::SAX2XMLReader&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ public:
+ // Parse InputSource. Note that you must initialize the Xerces-C++
+ // runtime before calling this function.
+ //
+ void
+ parse (const xercesc::InputSource&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse InputSource with a user-provided error_handler object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse (const xercesc::InputSource&amp;,
+ error_handler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse InputSource with a user-provided ErrorHandler object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse (const xercesc::InputSource&amp;,
+ xercesc::ErrorHandler&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+
+ // Parse InputSource using a user-provided SAX2XMLReader object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse (const xercesc::InputSource&amp;,
+ xercesc::SAX2XMLReader&amp;,
+ flags = 0,
+ const properties&amp; = properties ());
+ };
+}
+ </pre>
+
+ <p>The <code>document</code> class is a root parser for
+ the vocabulary. The first argument to its constructors is the
+ parser for the type of the root element. The <code>parser_base</code>
+ class is the base type for all parser skeletons. The second and
+ third arguments to the <code>document</code>'s constructors are
+ the root element's name and namespace. The last argument,
+ <code>polymorphic</code>, specifies whether the XML documents
+ being parsed use polymorphism. For more information on support
+ for XML Schema polymorphism in the C++/Parser mapping refer
+ to <a href="#5.5">Section 5.5, "Support for Polymorphism"</a>.</p>
+
+ <p>The rest of the <code>document</code> interface consists of overloaded
+ <code>parse()</code> functions. The last two arguments in each of these
+ functions are <code>flags</code> and <code>properties</code>. The
+ <code>flags</code> argument allows you to modify the default behavior
+ of the parsing functions. The <code>properties</code> argument allows
+ you to override the schema location attributes specified in XML
+ documents. Note that the schema location paths are relative to an
+ XML document unless they are complete URIs. For example if you want
+ to use a local schema file then you will need to use a URI in the
+ form <code>file:///absolute/path/to/your/schema</code>.</p>
+
+ <p>A number of overloaded <code>parse()</code> functions have the
+ <code>system_id</code> and <code>public_id</code> arguments. The
+ system id is a <em>system</em> identifier of the resources being
+ parsed (for example, URI or a full file path). The public id is a
+ <em>public</em> identifier of the resource (for example, an
+ application-specific name or a relative file path). The system id
+ is used to resolve relative paths (for example, schema paths). In
+ diagnostics messages the public id is used if it is available.
+ Otherwise the system id is used.</p>
+
+ <p>The error handling mechanisms employed by the <code>document</code>
+ parser are described in <a href="#7.3">Section 7.3, "Error
+ Handling"</a>.</p>
+
+ <h2><a name="7.2">7.2 Expat Document Parser</a></h2>
+
+ <p>When Expat is used as the underlying XML parser, the
+ <code>document</code> type has the following interface. Note that
+ if the character type is <code>wchar_t</code>, then the string type
+ in the interface becomes <code>std::wstring</code>
+ (see <a href="#5.2">Section 5.2, "Character Type and Encoding"</a>).</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class parser_base;
+ class error_handler;
+
+ class document
+ {
+ public:
+ document (parser_base&amp;,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ document (parser_base&amp;,
+ const std::string&amp; root_element_namespace,
+ const std::string&amp; root_element_name,
+ bool polymorphic = false);
+
+ public:
+ // Parse a local file. The file is accessed with std::ifstream
+ // in binary mode. The std::ios_base::failure exception is used
+ // to report io errors (badbit and failbit).
+ void
+ parse (const std::string&amp; file);
+
+ // Parse a local file with a user-provided error_handler
+ // object. The file is accessed with std::ifstream in binary
+ // mode. The std::ios_base::failure exception is used to report
+ // io errors (badbit and failbit).
+ //
+ void
+ parse (const std::string&amp; file, error_handler&amp;);
+
+ public:
+ // Parse std::istream.
+ //
+ void
+ parse (std::istream&amp;);
+
+ // Parse std::istream with a user-provided error_handler object.
+ //
+ void
+ parse (std::istream&amp;, error_handler&amp;);
+
+ // Parse std::istream with a system id.
+ //
+ void
+ parse (std::istream&amp;, const std::string&amp; system_id);
+
+ // Parse std::istream with a system id and a user-provided
+ // error_handler object.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ error_handler&amp;);
+
+ // Parse std::istream with system and public ids.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id);
+
+ // Parse std::istream with system and public ids and a user-provided
+ // error_handler object.
+ //
+ void
+ parse (std::istream&amp;,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ error_handler&amp;);
+
+ public:
+ // Parse a chunk of input. You can call these functions multiple
+ // times with the last call having the last argument true.
+ //
+ void
+ parse (const void* data, std::size_t size, bool last);
+
+ void
+ parse (const void* data, std::size_t size, bool last,
+ error_handler&amp;);
+
+ void
+ parse (const void* data, std::size_t size, bool last,
+ const std::string&amp; system_id);
+
+ void
+ parse (const void* data, std::size_t size, bool last,
+ const std::string&amp; system_id,
+ error_handler&amp;);
+
+ void
+ parse (const void* data, std::size_t size, bool last,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id);
+
+ void
+ parse (const void* data, std::size_t size, bool last,
+ const std::string&amp; system_id,
+ const std::string&amp; public_id,
+ error_handler&amp;);
+
+ public:
+ // Low-level Expat-specific parsing API.
+ //
+ void
+ parse_begin (XML_Parser);
+
+ void
+ parse_begin (XML_Parser, const std::string&amp; public_id);
+
+ void
+ parse_begin (XML_Parser, error_handler&amp;);
+
+ void
+ parse_begin (XML_Parser,
+ const std::string&amp; public_id,
+ error_handler&amp;);
+ void
+ parse_end ();
+ };
+}
+ </pre>
+
+ <p>The <code>document</code> class is a root parser for
+ the vocabulary. The first argument to its constructors is the
+ parser for the type of the root element. The <code>parser_base</code>
+ class is the base type for all parser skeletons. The second and
+ third arguments to the <code>document</code>'s constructors are
+ the root element's name and namespace. The last argument,
+ <code>polymorphic</code>, specifies whether the XML documents
+ being parsed use polymorphism. For more information on support
+ for XML Schema polymorphism in the C++/Parser mapping refer
+ to <a href="#5.5">Section 5.5, "Support for Polymorphism"</a>.</p>
+
+ <p>A number of overloaded <code>parse()</code> functions have the
+ <code>system_id</code> and <code>public_id</code> arguments. The
+ system id is a <em>system</em> identifier of the resources being
+ parsed (for example, URI or a full file path). The public id is a
+ <em>public</em> identifier of the resource (for example, an
+ application-specific name or a relative file path). The system id
+ is used to resolve relative paths. In diagnostics messages the
+ public id is used if it is available. Otherwise the system id
+ is used.</p>
+
+ <p>The <code>parse_begin()</code> and <code>parse_end()</code> functions
+ present a low-level, Expat-specific parsing API for maximum control.
+ A typical use-case would look like this (pseudo-code):</p>
+
+ <pre class="c++">
+xxx_pimpl root_p;
+document doc_p (root_p, "root");
+
+root_p.pre ();
+doc_p.parse_begin (xml_parser, "file.xml");
+
+while (more_data_to_parse)
+{
+ // Call XML_Parse or XML_ParseBuffer.
+
+ if (status == XML_STATUS_ERROR)
+ break;
+}
+
+// Call parse_end even in case of an error to translate
+// XML and Schema errors to exceptions or error_handler
+// calls.
+//
+doc.parse_end ();
+result_type result (root_p.post_xxx ());
+ </pre>
+
+ <p>Note that if your vocabulary uses XML namespaces, the
+ <code>XML_ParserCreateNS()</code> functions should be used to create
+ the XML parser. Space (<code>XML_Char (' ')</code>) should be used
+ as a separator (the second argument to <code>XML_ParserCreateNS()</code>).
+ </p>
+
+ <p>The error handling mechanisms employed by the <code>document</code>
+ parser are described in <a href="#7.3">Section 7.3, "Error
+ Handling"</a>.</p>
+
+
+ <h2><a name="7.3">7.3 Error Handling</a></h2>
+
+ <p>There are three categories of errors that can result from running
+ a parser on an XML document: System, XML, and Application.
+ The System category contains memory allocation and file/stream
+ operation errors. The XML category covers XML parsing and
+ well-formedness checking as well as XML Schema validation errors.
+ Finally, the Application category is for application logic errors
+ that you may want to propagate from parser implementations to the
+ caller of the parser.
+ </p>
+
+ <p>The System errors are mapped to the standard exceptions. The
+ out of memory condition is indicated by throwing an instance
+ of <code>std::bad_alloc</code>. The stream operation errors
+ are reported either by throwing an instance of
+ <code>std::ios_base::failure</code> if exceptions are enabled
+ or by setting the stream state.</p>
+
+ <p>Note that if you are parsing <code>std::istream</code> on
+ which exceptions are not enabled, then you will need to
+ check the stream state before calling the <code>post()</code>
+ callback, as shown in the following example:</p>
+
+ <pre class="c++">
+int
+main (int argc, char* argv[])
+{
+ ...
+
+ std::ifstream ifs (argv[1]);
+
+ if (ifs.fail ())
+ {
+ cerr &lt;&lt; argv[1] &lt;&lt; ": unable to open" &lt;&lt; endl;
+ return 1;
+ }
+
+ root_p.pre ();
+ doc_p.parse (ifs);
+
+ if (ifs.fail ())
+ {
+ cerr &lt;&lt; argv[1] &lt;&lt; ": io failure" &lt;&lt; endl;
+ return 1;
+ }
+
+ result_type result (root_p.post_xxx ());
+}
+ </pre>
+
+ <p>The above example can be rewritten to use exceptions
+ as shown below:</p>
+
+ <pre class="c++">
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ ...
+
+ std::ifstream ifs;
+ ifs.exceptions (std::ifstream::badbit | std::ifstream::failbit);
+ ifs.open (argv[1]);
+
+ root_p.pre ();
+ doc_p.parse (ifs);
+ result_type result (root_p.post_xxx ());
+ }
+ catch (const std::ifstream::failure&amp;)
+ {
+ cerr &lt;&lt; argv[1] &lt;&lt; ": unable to open or io failure" &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+
+ <p>For reporting application errors from parsing callbacks, you
+ can throw any exceptions of your choice. They are propagated to
+ the caller of the parser without any alterations.</p>
+
+ <p>The XML errors can be reported either by throwing the
+ <code>xml_schema::parsing</code> exception or by a callback
+ to the <code>xml_schema::error_handler</code> object (and
+ <code>xercesc::ErrorHandler</code> object in case of Xerces-C++).</p>
+
+ <p>The <code>xml_schema::parsing</code> exception contains
+ a list of warnings and errors that were accumulated during
+ parsing. Note that this exception is thrown only if there
+ was an error. This makes it impossible to obtain warnings
+ from an otherwise successful parsing using this mechanism.
+ The following listing shows the definition of
+ <code>xml_schema::parsing</code> exception. Note that if the
+ character type is <code>wchar_t</code>, then the string type
+ and output stream type in the definition become
+ <code>std::wstring</code> and <code>std::wostream</code>,
+ respectively (see <a href="#5.2">Section 5.2, "Character Type
+ and Encoding"</a>).</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class exception: public std::exception
+ {
+ protected:
+ virtual void
+ print (std::ostream&amp;) const = 0;
+ };
+
+ inline std::ostream&amp;
+ operator&lt;&lt; (std::ostream&amp; os, const exception&amp; e)
+ {
+ e.print (os);
+ return os;
+ }
+
+
+ class severity
+ {
+ public:
+ enum value
+ {
+ warning,
+ error
+ };
+ };
+
+
+ class error
+ {
+ public:
+ error (xml_schema::severity,
+ const std::string&amp; id,
+ unsigned long line,
+ unsigned long column,
+ const std::string&amp; message);
+
+ xml_schema::severity
+ severity () const;
+
+ const std::string&amp;
+ id () const;
+
+ unsigned long
+ line () const;
+
+ unsigned long
+ column () const;
+
+ const std::string&amp;
+ message () const;
+ };
+
+ std::ostream&amp;
+ operator&lt;&lt; (std::ostream&amp;, const error&amp;);
+
+
+ class diagnostics: public std::vector&lt;error>
+ {
+ };
+
+ std::ostream&amp;
+ operator&lt;&lt; (std::ostream&amp;, const diagnostics&amp;);
+
+
+ class parsing: public exception
+ {
+ public:
+ parsing ();
+ parsing (const xml_schema::diagnostics&amp;);
+
+ const xml_schema::diagnostics&amp;
+ diagnostics () const;
+
+ virtual const char*
+ what () const throw ();
+
+ protected:
+ virtual void
+ print (std::ostream&amp;) const;
+ };
+}
+ </pre>
+
+ <p>The following example shows how we can catch and print this
+ exception. The code will print diagnostics messages one per line
+ in case of an error.</p>
+
+ <pre class="c++">
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ // Parse.
+ }
+ catch (const xml_schema::parsing&amp; e)
+ {
+ cerr &lt;&lt; e &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+ <p>With the <code>error_handler</code> approach the diagnostics
+ messages are delivered as parsing progresses. The following
+ listing presents the definition of the <code>error_handler</code>
+ interface. Note that if the character type is <code>wchar_t</code>,
+ then the string type in the interface becomes <code>std::wstring</code>
+ (see <a href="#5.2">Section 5.2, "Character Type and Encoding"</a>).</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class error_handler
+ {
+ public:
+ class severity
+ {
+ public:
+ enum value
+ {
+ warning,
+ error,
+ fatal
+ };
+ };
+
+ virtual bool
+ handle (const std::string&amp; id,
+ unsigned long line,
+ unsigned long column,
+ severity,
+ const std::string&amp; message) = 0;
+ };
+}
+ </pre>
+
+ <p>The return value of the <code>handle()</code> function indicates whether
+ parsing should continue if possible. The error with the fatal severity
+ level terminates the parsing process regardless of the returned value.
+ At the end of the parsing process with an error that was reported via
+ the <code>error_handler</code> object, an empty
+ <code>xml_schema::parsing</code> exception is thrown to indicate
+ the failure to the caller. You can alter this behavior by throwing
+ your own exception from the <code>handle()</code> function.</p>
+
+
+ <!-- Appendix A -->
+
+
+ <h1><a name="A">Appendix A &mdash; Supported XML Schema Constructs</a></h1>
+
+ <p>The C++/Parser mapping supports validation of the following W3C XML
+ Schema constructs in the generated code.</p>
+
+ <!-- border="1" is necessary for html2ps -->
+ <table id="features" border="1">
+ <tr><th>Construct</th><th>Notes</th></tr>
+ <tr><th colspan="2">Structure</th></tr>
+
+ <tr><td>element</td><td></td></tr>
+ <tr><td>attribute</td><td></td></tr>
+
+ <tr><td>any</td><td></td></tr>
+ <tr><td>anyAttribute</td><td></td></tr>
+
+ <tr><td>all</td><td></td></tr>
+ <tr><td>sequence</td><td></td></tr>
+ <tr><td>choice</td><td></td></tr>
+
+ <tr><td>complex type, empty content</td><td></td></tr>
+ <tr><td>complex type, mixed content</td><td></td></tr>
+ <tr><td>complex type, simple content extension</td><td></td></tr>
+ <tr><td>complex type, simple content restriction</td>
+ <td>Simple type facets are not validated.</td></tr>
+ <tr><td>complex type, complex content extension</td><td></td></tr>
+ <tr><td>complex type, complex content restriction</td><td></td></tr>
+
+ <tr><td>list</td><td></td></tr>
+
+ <tr><th colspan="2">Datatypes</th></tr>
+
+ <tr><td>byte</td><td></td></tr>
+ <tr><td>unsignedByte</td><td></td></tr>
+ <tr><td>short</td><td></td></tr>
+ <tr><td>unsignedShort</td><td></td></tr>
+ <tr><td>int</td><td></td></tr>
+ <tr><td>unsignedInt</td><td></td></tr>
+ <tr><td>long</td><td></td></tr>
+ <tr><td>unsignedLong</td><td></td></tr>
+ <tr><td>integer</td><td></td></tr>
+ <tr><td>nonPositiveInteger</td><td></td></tr>
+ <tr><td>nonNegativeInteger</td><td></td></tr>
+ <tr><td>positiveInteger</td><td></td></tr>
+ <tr><td>negativeInteger</td><td></td></tr>
+
+ <tr><td>boolean</td><td></td></tr>
+
+ <tr><td>float</td><td></td></tr>
+ <tr><td>double</td><td></td></tr>
+ <tr><td>decimal</td><td></td></tr>
+
+ <tr><td>string</td><td></td></tr>
+ <tr><td>normalizedString</td><td></td></tr>
+ <tr><td>token</td><td></td></tr>
+ <tr><td>Name</td><td></td></tr>
+ <tr><td>NMTOKEN</td><td></td></tr>
+ <tr><td>NCName</td><td></td></tr>
+ <tr><td>language</td><td></td></tr>
+ <tr><td>anyURI</td><td></td></tr>
+
+ <tr><td>ID</td><td>Identity constraint is not enforced.</td></tr>
+ <tr><td>IDREF</td><td>Identity constraint is not enforced.</td></tr>
+
+ <tr><td>NMTOKENS</td><td></td></tr>
+ <tr><td>IDREFS</td><td>Identity constraint is not enforced.</td></tr>
+
+ <tr><td>QName</td><td></td></tr>
+
+ <tr><td>base64Binary</td><td></td></tr>
+ <tr><td>hexBinary</td><td></td></tr>
+
+ <tr><td>date</td><td></td></tr>
+ <tr><td>dateTime</td><td></td></tr>
+ <tr><td>duration</td><td></td></tr>
+ <tr><td>gDay</td><td></td></tr>
+ <tr><td>gMonth</td><td></td></tr>
+ <tr><td>gMonthDay</td><td></td></tr>
+ <tr><td>gYear</td><td></td></tr>
+ <tr><td>gYearMonth</td><td></td></tr>
+ <tr><td>time</td><td></td></tr>
+ </table>
+
+
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/doc/cxx/tree/guide/guide.html2ps.in b/doc/cxx/tree/guide/guide.html2ps.in
new file mode 100644
index 0000000..461ffde
--- /dev/null
+++ b/doc/cxx/tree/guide/guide.html2ps.in
@@ -0,0 +1,65 @@
+@@html2ps {
+ option {
+ toc: hb;
+ colour: 1;
+ hyphenate: 1;
+ titlepage: 1;
+ }
+
+ datefmt: "%B %Y";
+
+ titlepage {
+ content: "
+<div align=center>
+ <h1><big>C++/Tree Mapping</big></h1>
+ <h1><big>Getting Started Guide</big></h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+</div>
+ <p>Copyright &#169; @copyright@.</p>
+
+ <p>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href='https://www.codesynthesis.com/licenses/fdl-1.2.txt'>GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href='https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/index.xhtml'>XHTML</a>,
+ <a href='https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-parser-guide.pdf'>PDF</a>, and
+ <a href='https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-parser-guide.ps'>PostScript</a>.</p>";
+ }
+
+ toc {
+ indent: 2em;
+ }
+
+ header {
+ odd-right: $H;
+ even-left: $H;
+ }
+
+ footer {
+ odd-left: $D;
+ odd-center: $T;
+ odd-right: $N;
+
+ even-left: $N;
+ even-center: $T;
+ even-right: $D;
+ }
+}
+
+body {
+ font-size: 12pt;
+ text-align: justify;
+}
+
+pre {
+ font-size: 10pt;
+}
diff --git a/doc/cxx/tree/guide/index.xhtml b/doc/cxx/tree/guide/index.xhtml
new file mode 100644
index 0000000..fdaaa45
--- /dev/null
+++ b/doc/cxx/tree/guide/index.xhtml
@@ -0,0 +1,2736 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+ <title>C++/Tree Mapping Getting Started Guide</title>
+
+ <meta name="copyright" content="&#169; 2005-2023 Code Synthesis"/>
+ <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,parsing,serialization,validation"/>
+ <meta name="description" content="C++/Tree Mapping Getting Started Guide"/>
+
+ <link rel="stylesheet" type="text/css" href="../../../default.css" />
+
+<style type="text/css">
+ pre {
+ padding : 0 0 0 0em;
+ margin : 0em 0em 0em 0;
+
+ font-size : 102%
+ }
+
+ body {
+ min-width: 48em;
+ }
+
+ h1 {
+ font-weight: bold;
+ font-size: 200%;
+ line-height: 1.2em;
+ }
+
+ h2 {
+ font-weight : bold;
+ font-size : 150%;
+
+ padding-top : 0.8em;
+ }
+
+ h3 {
+ font-size : 140%;
+ padding-top : 0.8em;
+ }
+
+ /* Adjust indentation for three levels. */
+ #container {
+ max-width: 48em;
+ }
+
+ #content {
+ padding: 0 0.1em 0 4em;
+ /*background-color: red;*/
+ }
+
+ #content h1 {
+ margin-left: -2.06em;
+ }
+
+ #content h2 {
+ margin-left: -1.33em;
+ }
+
+ /* Title page */
+
+ #titlepage {
+ padding: 2em 0 1em 0;
+ border-bottom: 1px solid black;
+ }
+
+ #titlepage .title {
+ font-weight: bold;
+ font-size: 200%;
+ text-align: center;
+ }
+
+ #titlepage #first-title {
+ padding: 1em 0 0.4em 0;
+ }
+
+ #titlepage #second-title {
+ padding: 0.4em 0 2em 0;
+ }
+
+ /* Lists */
+ ul.list li {
+ padding-top : 0.3em;
+ padding-bottom : 0.3em;
+ }
+
+ div.img {
+ text-align: center;
+ padding: 2em 0 2em 0;
+ }
+
+ /* */
+ dl dt {
+ padding : 0.8em 0 0 0;
+ }
+
+ /* Built-in table */
+ #builtin {
+ margin: 2em 0 2em 0;
+
+ border-collapse : collapse;
+ border : 1px solid;
+ border-color : #000000;
+
+ font-size : 11px;
+ line-height : 14px;
+ }
+
+ #builtin th, #builtin td {
+ border: 1px solid;
+ padding : 0.9em 0.9em 0.7em 0.9em;
+ }
+
+ #builtin th {
+ background : #cde8f6;
+ }
+
+ #builtin td {
+ text-align: left;
+ }
+
+ /* TOC */
+ table.toc {
+ border-style : none;
+ border-collapse : separate;
+ border-spacing : 0;
+
+ margin : 0.2em 0 0.2em 0;
+ padding : 0 0 0 0;
+ }
+
+ table.toc tr {
+ padding : 0 0 0 0;
+ margin : 0 0 0 0;
+ }
+
+ table.toc * td, table.toc * th {
+ border-style : none;
+ margin : 0 0 0 0;
+ vertical-align : top;
+ }
+
+ table.toc * th {
+ font-weight : normal;
+ padding : 0em 0.1em 0em 0;
+ text-align : left;
+ white-space : nowrap;
+ }
+
+ table.toc * table.toc th {
+ padding-left : 1em;
+ }
+
+ table.toc * td {
+ padding : 0em 0 0em 0.7em;
+ text-align : left;
+ }
+</style>
+
+
+</head>
+
+<body>
+<div id="container">
+ <div id="content">
+
+ <div class="noprint">
+
+ <div id="titlepage">
+ <div class="title" id="first-title">C++/Tree Mapping</div>
+ <div class="title" id="second-title">Getting Started Guide</div>
+
+ <p>Copyright &#169; 2005-2023 Code Synthesis.</p>
+
+ <p>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href="https://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/index.xhtml">XHTML</a>,
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-tree-guide.pdf">PDF</a>, and
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-tree-guide.ps">PostScript</a>.</p>
+
+ </div>
+
+ <h1>Table of Contents</h1>
+
+ <table class="toc">
+ <tr>
+ <th></th><td><a href="#0">Preface</a>
+ <table class="toc">
+ <tr><th></th><td><a href="#0.1">About This Document</a></td></tr>
+ <tr><th></th><td><a href="#0.2">More Information</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>1</th><td><a href="#1">Introduction</a>
+ <table class="toc">
+ <tr><th>1.1</th><td><a href="#1.1">Mapping Overview</a></td></tr>
+ <tr><th>1.2</th><td><a href="#1.2">Benefits</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>2</th><td><a href="#2">Hello World Example</a>
+ <table class="toc">
+ <tr><th>2.1</th><td><a href="#2.1">Writing XML Document and Schema</a></td></tr>
+ <tr><th>2.2</th><td><a href="#2.2">Translating Schema to C++</a></td></tr>
+ <tr><th>2.3</th><td><a href="#2.3">Implementing Application Logic</a></td></tr>
+ <tr><th>2.4</th><td><a href="#2.4">Compiling and Running</a></td></tr>
+ <tr><th>2.5</th><td><a href="#2.5">Adding Serialization</a></td></tr>
+ <tr><th>2.6</th><td><a href="#2.6">Selecting Naming Convention</a></td></tr>
+ <tr><th>2.7</th><td><a href="#2.7">Generating Documentation</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>3</th><td><a href="#3">Overall Mapping Configuration</a>
+ <table class="toc">
+ <tr><th>3.1</th><td><a href="#3.1">C++ Standard</a></td></tr>
+ <tr><th>3.2</th><td><a href="#3.2">Character Type and Encoding</a></td></tr>
+ <tr><th>3.3</th><td><a href="#3.3">Support for Polymorphism </a></td></tr>
+ <tr><th>3.4</th><td><a href="#3.4">Namespace Mapping</a></td></tr>
+ <tr><th>3.5</th><td><a href="#3.5">Thread Safety</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>4</th><td><a href="#4">Working with Object Models</a>
+ <table class="toc">
+ <tr><th>4.1</th><td><a href="#4.1">Attribute and Element Cardinalities</a></td></tr>
+ <tr><th>4.2</th><td><a href="#4.2">Accessing the Object Model</a></td></tr>
+ <tr><th>4.3</th><td><a href="#4.3">Modifying the Object Model</a></td></tr>
+ <tr><th>4.4</th><td><a href="#4.4">Creating the Object Model from Scratch</a></td></tr>
+ <tr><th>4.5</th><td><a href="#4.5">Mapping for the Built-in XML Schema Types</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>5</th><td><a href="#5">Parsing</a>
+ <table class="toc">
+ <tr><th>5.1</th><td><a href="#5.1">XML Schema Validation and Searching</a></td></tr>
+ <tr><th>5.2</th><td><a href="#5.2">Error Handling</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>6</th><td><a href="#6">Serialization</a>
+ <table class="toc">
+ <tr><th>6.1</th><td><a href="#6.1">Namespace and Schema Information</a></td></tr>
+ <tr><th>6.2</th><td><a href="#6.2">Error Handling</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ </table>
+ </div>
+
+ <h1><a name="0">Preface</a></h1>
+
+ <h2><a name="0.1">About This Document</a></h2>
+
+ <p>The goal of this document is to provide you with an understanding of
+ the C++/Tree programming model and allow you to efficiently evaluate
+ XSD against your project's technical requirements. As such, this
+ document is intended for C++ developers and software architects
+ who are looking for an XML processing solution. For a more in-depth
+ description of the C++/Tree mapping refer to the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/">C++/Tree
+ Mapping User Manual</a>.</p>
+
+ <p>Prior experience with XML and C++ is required to understand this
+ document. Basic understanding of XML Schema is advantageous but
+ not expected or required.
+ </p>
+
+
+ <h2><a name="0.2">More Information</a></h2>
+
+ <p>Beyond this guide, you may also find the following sources of
+ information useful:</p>
+
+ <ul class="list">
+ <li><a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/">C++/Tree
+ Mapping User Manual</a></li>
+
+ <li><a href="http://wiki.codesynthesis.com/Tree/Customization_guide">C++/Tree
+ Mapping Customization Guide</a></li>
+
+ <li><a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree
+ Mapping Frequently Asked Questions (FAQ)</a></li>
+
+ <li><a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a></li>
+
+ <li>The <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ contains a collection of examples and a README file with an overview
+ of each example.</li>
+
+ <li>The <code>README</code> file in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ explains how to build the examples.</li>
+
+ <li>The <a href="https://www.codesynthesis.com/mailman/listinfo/xsd-users">xsd-users</a>
+ mailing list is the place to ask technical questions about XSD and the C++/Parser mapping.
+ Furthermore, the <a href="https://www.codesynthesis.com/pipermail/xsd-users/">archives</a>
+ may already have answers to some of your questions.</li>
+ </ul>
+
+ <!-- Introduction -->
+
+ <h1><a name="1">1 Introduction</a></h1>
+
+ <p>Welcome to CodeSynthesis XSD and the C++/Tree mapping. XSD is a
+ cross-platform W3C XML Schema to C++ data binding compiler. C++/Tree
+ is a W3C XML Schema to C++ mapping that represents the data stored
+ in XML as a statically-typed, vocabulary-specific object model.
+ </p>
+
+ <h2><a name="1.1">1.1 Mapping Overview</a></h2>
+
+ <p>Based on a formal description of an XML vocabulary (schema), the
+ C++/Tree mapping produces a tree-like data structure suitable for
+ in-memory processing. The core of the mapping consists of C++
+ classes that constitute the object model and are derived from
+ types defined in XML Schema as well as XML parsing and
+ serialization code.</p>
+
+ <p>Besides the core features, C++/Tree provide a number of additional
+ mapping elements that can be useful in some applications. These
+ include serialization and extraction to/from formats others than
+ XML, such as unstructured text (useful for debugging) and binary
+ representations such as XDR and CDR for high-speed data processing
+ as well as automatic documentation generation. The C++/Tree mapping
+ also provides a wide range of mechanisms for controlling and
+ customizing the generated code.</p>
+
+ <p>A typical application that uses C++/Tree for XML processing usually
+ performs the following three steps: it first reads (parses) an XML
+ document to an in-memory object model, it then performs some useful
+ computations on that object model which may involve modification
+ of the model, and finally it may write (serialize) the modified
+ object model back to XML.</p>
+
+ <p>The next chapter presents a simple application that performs these
+ three steps. The following chapters show how to use the C++/Tree
+ mapping in more detail.</p>
+
+ <h2><a name="1.2">1.2 Benefits</a></h2>
+
+ <p>Traditional XML access APIs such as Document Object Model (DOM)
+ or Simple API for XML (SAX) have a number of drawbacks that
+ make them less suitable for creating robust and maintainable
+ XML processing applications. These drawbacks include:
+ </p>
+
+ <ul class="list">
+ <li>Generic representation of XML in terms of elements, attributes,
+ and text forces an application developer to write a substantial
+ amount of bridging code that identifies and transforms pieces
+ of information encoded in XML to a representation more suitable
+ for consumption by the application logic.</li>
+
+ <li>String-based flow control defers error detection to runtime.
+ It also reduces code readability and maintainability.</li>
+
+ <li>Lack of type safety because the data is represented as text.</li>
+
+ <li>Resulting applications are hard to debug, change, and
+ maintain.</li>
+ </ul>
+
+ <p>In contrast, statically-typed, vocabulary-specific object model
+ produced by the C++/Tree mapping allows you to operate in your
+ domain terms instead of the generic elements, attributes, and
+ text. Static typing helps catch errors at compile-time rather
+ than at run-time. Automatic code generation frees you for more
+ interesting tasks (such as doing something useful with the
+ information stored in the XML documents) and minimizes the
+ effort needed to adapt your applications to changes in the
+ document structure. To summarize, the C++/Tree object model has
+ the following key advantages over generic XML access APIs:</p>
+
+ <ul class="list">
+ <li><b>Ease of use.</b> The generated code hides all the complexity
+ associated with parsing and serializing XML. This includes navigating
+ the structure and converting between the text representation and
+ data types suitable for manipulation by the application
+ logic.</li>
+
+ <li><b>Natural representation.</b> The object representation allows
+ you to access the XML data using your domain vocabulary instead
+ of generic elements, attributes, and text.</li>
+
+ <li><b>Concise code.</b> With the object representation the
+ application implementation is simpler and thus easier
+ to read and understand.</li>
+
+ <li><b>Safety.</b> The generated object model is statically
+ typed and uses functions instead of strings to access the
+ information. This helps catch programming errors at compile-time
+ rather than at runtime.</li>
+
+ <li><b>Maintainability.</b> Automatic code generation minimizes the
+ effort needed to adapt the application to changes in the
+ document structure. With static typing, the C++ compiler
+ can pin-point the places in the client code that need to be
+ changed.</li>
+
+ <li><b>Compatibility.</b> Sequences of elements are represented in
+ the object model as containers conforming to the standard C++
+ sequence requirements. This makes it possible to use standard
+ C++ algorithms on the object representation and frees you from
+ learning yet another container interface, as is the case with
+ DOM.</li>
+
+ <li><b>Efficiency.</b> If the application makes repetitive use
+ of the data extracted from XML, then the C++/Tree object model
+ is more efficient because the navigation is performed using
+ function calls rather than string comparisons and the XML
+ data is extracted only once. Furthermore, the runtime memory
+ usage is reduced due to more efficient data storage
+ (for instance, storing numeric data as integers instead of
+ strings) as well as the static knowledge of cardinality
+ constraints.</li>
+ </ul>
+
+
+ <!-- Hello World Parser -->
+
+
+ <h1><a name="2">2 Hello World Example</a></h1>
+
+ <p>In this chapter we will examine how to parse, access, modify, and
+ serialize a very simple XML document using the XSD-generated
+ C++/Tree object model. The code presented in this chapter is
+ based on the <code>hello</code> example which can be found in
+ the <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package.</p>
+
+ <h2><a name="2.1">2.1 Writing XML Document and Schema</a></h2>
+
+ <p>First, we need to get an idea about the structure
+ of the XML documents we are going to process. Our
+ <code>hello.xml</code>, for example, could look like this:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;hello>
+
+ &lt;greeting>Hello&lt;/greeting>
+
+ &lt;name>sun&lt;/name>
+ &lt;name>moon&lt;/name>
+ &lt;name>world&lt;/name>
+
+&lt;/hello>
+ </pre>
+
+ <p>Then we can write a description of the above XML in the
+ XML Schema language and save it into <code>hello.xsd</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:complexType name="hello_t">
+ &lt;xs:sequence>
+ &lt;xs:element name="greeting" type="xs:string"/>
+ &lt;xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="hello" type="hello_t"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>Even if you are not familiar with XML Schema, it
+ should be easy to connect declarations in <code>hello.xsd</code>
+ to elements in <code>hello.xml</code>. The <code>hello_t</code> type
+ is defined as a sequence of the nested <code>greeting</code> and
+ <code>name</code> elements. Note that the term sequence in XML
+ Schema means that elements should appear in a particular order
+ as opposed to appearing multiple times. The <code>name</code>
+ element has its <code>maxOccurs</code> property set to
+ <code>unbounded</code> which means it can appear multiple times
+ in an XML document. Finally, the globally-defined <code>hello</code>
+ element prescribes the root element for our vocabulary. For an
+ easily-approachable introduction to XML Schema refer to
+ <a href="http://www.w3.org/TR/xmlschema-0/">XML Schema Part 0:
+ Primer</a>.</p>
+
+ <p>The above schema is a specification of our XML vocabulary; it tells
+ everybody what valid documents of our XML-based language should look
+ like. We can also update our <code>hello.xml</code> to include the
+ information about the schema so that XML parsers can validate
+ our document:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="hello.xsd">
+
+ &lt;greeting>Hello&lt;/greeting>
+
+ &lt;name>sun&lt;/name>
+ &lt;name>moon&lt;/name>
+ &lt;name>world&lt;/name>
+
+&lt;/hello>
+ </pre>
+
+
+ <p>The next step is to compile the schema to generate the object
+ model and parsing functions.</p>
+
+ <h2><a name="2.2">2.2 Translating Schema to C++</a></h2>
+
+ <p>Now we are ready to translate our <code>hello.xsd</code> to C++.
+ To do this we invoke the XSD compiler from a terminal (UNIX) or
+ a command prompt (Windows):
+ </p>
+
+ <pre class="terminal">
+$ xsd cxx-tree hello.xsd
+ </pre>
+
+ <p>The XSD compiler produces two C++ files: <code>hello.hxx</code> and
+ <code>hello.cxx</code>. The following code fragment is taken from
+ <code>hello.hxx</code>; it should give you an idea about what gets
+ generated:
+ </p>
+
+ <pre class="c++">
+class hello_t
+{
+public:
+ // greeting
+ //
+ typedef xml_schema::string greeting_type;
+
+ const greeting_type&amp;
+ greeting () const;
+
+ greeting_type&amp;
+ greeting ();
+
+ void
+ greeting (const greeting_type&amp; x);
+
+ // name
+ //
+ typedef xml_schema::string name_type;
+ typedef xsd::sequence&lt;name_type> name_sequence;
+ typedef name_sequence::iterator name_iterator;
+ typedef name_sequence::const_iterator name_const_iterator;
+
+ const name_sequence&amp;
+ name () const;
+
+ name_sequence&amp;
+ name ();
+
+ void
+ name (const name_sequence&amp; s);
+
+ // Constructor.
+ //
+ hello_t (const greeting_type&amp;);
+
+ ...
+
+};
+
+std::unique_ptr&lt;hello_t>
+hello (const std::string&amp; uri);
+
+std::unique_ptr&lt;hello_t>
+hello (std::istream&amp;);
+ </pre>
+
+ <p>The <code>hello_t</code> C++ class corresponds to the
+ <code>hello_t</code> XML Schema type. For each element
+ in this type a set of C++ type definitions as well as
+ accessor and modifier functions are generated inside the
+ <code>hello_t</code> class. Note that the type definitions
+ and member functions for the <code>greeting</code> and
+ <code>name</code> elements are different because of the
+ cardinality differences between these two elements
+ (<code>greeting</code> is a required single element and
+ <code>name</code> is a sequence of elements).</p>
+
+ <p>The <code>xml_schema::string</code> type used in the type
+ definitions is a C++ class provided by the XSD runtime
+ that corresponds to built-in XML Schema type
+ <code>string</code>. The <code>xml_schema::string</code>
+ is based on <code>std::string</code> and can be used as
+ such. Similarly, the <code>sequence</code> class template
+ that is used in the <code>name_sequence</code> type
+ definition is based on and has the same interface as
+ <code>std::vector</code>. The mapping between the built-in
+ XML Schema types and C++ types is described in more detail in
+ <a href="#4.5">Section 4.5, "Mapping for the Built-in XML Schema
+ Types"</a>. The <code>hello_t</code> class also includes a
+ constructor with an initializer for the required
+ <code>greeting</code> element as its argument.</p>
+
+ <p>The <code>hello</code> overloaded global functions correspond
+ to the <code>hello</code> global element in XML Schema. A
+ global element in XML Schema is a valid document root.
+ By default XSD generated a set of parsing functions for each
+ global element defined in XML Schema (this can be overridden
+ with the <code>--root-element-*</code> options). Parsing
+ functions return a dynamically allocated object model as an
+ automatic pointer. The actual pointer used depends on the
+ C++ standard selected. For C++11 it is <code>std::unique_ptr</code>
+ as shown above. For C++98 it is <code>std::auto_ptr</code>.
+ For example, if we modify our XSD compiler invocation to
+ select C++98:</p>
+
+ <pre class="terminal">
+$ xsd cxx-tree --std c++98 hello.xsd
+ </pre>
+
+ <p>Then the parsing function signatures will become:</p>
+
+ <pre class="c++">
+std::auto_ptr&lt;hello_t>
+hello (const std::string&amp; uri);
+
+std::auto_ptr&lt;hello_t>
+hello (std::istream&amp;);
+ </pre>
+
+ <p>For more information on parsing functions see <a href="#5">Chapter 5,
+ "Parsing"</a>.</p>
+
+ <h2><a name="2.3">2.3 Implementing Application Logic</a></h2>
+
+ <p>At this point we have all the parts we need to do something useful
+ with the information stored in our XML document:
+ </p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "hello.hxx"
+
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ unique_ptr&lt;hello_t> h (hello (argv[1]));
+
+ for (hello_t::name_const_iterator i (h->name ().begin ());
+ i != h->name ().end ();
+ ++i)
+ {
+ cerr &lt;&lt; h->greeting () &lt;&lt; ", " &lt;&lt; *i &lt;&lt; "!" &lt;&lt; endl;
+ }
+ }
+ catch (const xml_schema::exception&amp; e)
+ {
+ cerr &lt;&lt; e &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+ <p>The first part of our application calls one of the parsing
+ functions to parser an XML file specified in the command line.
+ We then use the returned object model to iterate over names
+ and print a greeting line for each of them. Finally, we
+ catch and print the <code>xml_schema::exception</code>
+ exception in case something goes wrong. This exception
+ is the root of the exception hierarchy used by the
+ XSD-generated code.
+ </p>
+
+
+ <h2><a name="2.4">2.4 Compiling and Running</a></h2>
+
+ <p>After saving our application from the previous section in
+ <code>driver.cxx</code>, we are ready to compile our first
+ program and run it on the test XML document. On a UNIX
+ system this can be done with the following commands:
+ </p>
+
+ <pre class="terminal">
+$ c++ -std=c++11 -I.../libxsd -c driver.cxx hello.cxx
+$ c++ -std=c++11 -o driver driver.o hello.o -lxerces-c
+$ ./driver hello.xml
+Hello, sun!
+Hello, moon!
+Hello, world!
+ </pre>
+
+ <p>Here <code>.../libxsd</code> represents the path to the
+ <a href="https://cppget.org/libxsd">libxsd</a> package root
+ directory. Note also that we are required to link our
+ application with the Xerces-C++ library because the generated
+ code uses it as the underlying XML parser.</p>
+
+ <h2><a name="2.5">2.5 Adding Serialization</a></h2>
+
+ <p>While parsing and accessing the XML data may be everything
+ you need, there are applications that require creating new
+ or modifying existing XML documents. By default XSD does
+ not produce serialization code. We will need to request
+ it with the <code>--generate-serialization</code> options:</p>
+
+ <pre class="terminal">
+$ xsd cxx-tree --generate-serialization hello.xsd
+ </pre>
+
+ <p>If we now examine the generated <code>hello.hxx</code> file,
+ we will find a set of overloaded serialization functions,
+ including the following version:</p>
+
+ <pre class="c++">
+void
+hello (std::ostream&amp;,
+ const hello_t&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap ());
+
+ </pre>
+
+ <p>Just like with parsing functions, XSD generates serialization
+ functions for each global element unless instructed otherwise
+ with one of the <code>--root-element-*</code> options. For more
+ information on serialization functions see <a href="#6">Chapter 6,
+ "Serialization"</a>.</p>
+
+ <p>We first examine an application that modifies an existing
+ object model and serializes it back to XML:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "hello.hxx"
+
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ unique_ptr&lt;hello_t> h (hello (argv[1]));
+
+ // Change the greeting phrase.
+ //
+ h->greeting ("Hi");
+
+ // Add another entry to the name sequence.
+ //
+ h->name ().push_back ("mars");
+
+ // Serialize the modified object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "hello.xsd";
+
+ hello (cout, *h, map);
+ }
+ catch (const xml_schema::exception&amp; e)
+ {
+ cerr &lt;&lt; e &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+ <p>First, our application parses an XML document and obtains its
+ object model as in the previous example. Then it changes the
+ greeting string and adds another entry to the list of names.
+ Finally, it serializes the object model back to XML by calling
+ the serialization function.</p>
+
+ <p>The first argument we pass to the serialization function is
+ <code>cout</code> which results in the XML being written to
+ the standard output for us to inspect. We could have also
+ written the result to a file or memory buffer by creating an
+ instance of <code>std::ofstream</code> or <code>std::ostringstream</code>
+ and passing it instead of <code>cout</code>. The second argument is the
+ object model we want to serialize. The final argument is an optional
+ namespace information map for our vocabulary. It captures information
+ such as namespaces, namespace prefixes to which they should be mapped,
+ and schemas associated with these namespaces. If we don't provide
+ this argument then generic namespace prefixes (<code>p1</code>,
+ <code>p2</code>, etc.) will be automatically assigned to XML namespaces
+ and no schema information will be added to the resulting document
+ (see <a href="#6">Chapter 6, "Serialization"</a> for details).
+ In our case, the prefix (map key) and namespace name are empty
+ because our vocabulary does not use XML namespaces.</p>
+
+ <p>If we now compile and run this application we will see the
+ output as shown in the following listing:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="hello.xsd">
+
+ &lt;greeting>Hi&lt;/greeting>
+
+ &lt;name>sun&lt;/name>
+ &lt;name>moon&lt;/name>
+ &lt;name>world&lt;/name>
+ &lt;name>mars&lt;/name>
+
+&lt;/hello>
+ </pre>
+
+ <p>We can also create and serialize an object model from scratch
+ as shown in the following example:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include &lt;fstream>
+#include "hello.hxx"
+
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ hello_t h ("Hi");
+
+ hello_t::name_sequence&amp; ns (h.name ());
+
+ ns.push_back ("Jane");
+ ns.push_back ("John");
+
+ // Serialize the object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "hello.xsd";
+
+ std::ofstream ofs (argv[1]);
+ hello (ofs, h, map);
+ }
+ catch (const xml_schema::exception&amp; e)
+ {
+ cerr &lt;&lt; e &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+ <p>In this example we used the generated constructor to create
+ an instance of type <code>hello_t</code>. To reduce typing,
+ we obtained a reference to the name sequence which we then
+ used to add a few names. The serialization part is identical
+ to the previous example except this time we are writing to
+ a file. If we compile and run this program, it produces the
+ following XML file:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="hello.xsd">
+
+ &lt;greeting>Hi&lt;/greeting>
+
+ &lt;name>Jane&lt;/name>
+ &lt;name>John&lt;/name>
+
+&lt;/hello>
+ </pre>
+
+ <h2><a name="2.6">2.6 Selecting Naming Convention</a></h2>
+
+ <p>By default XSD uses the so-called K&amp;R (Kernighan and Ritchie)
+ identifier naming convention in the generated code. In this
+ convention both type and function names are in lower case and
+ words are separated by underscores. If your application code or
+ schemas use a different notation, you may want to change the
+ naming convention used in the generated code for consistency.
+ XSD supports a set of widely-used naming conventions
+ that you can select with the <code>--type-naming</code> and
+ <code>--function-naming</code> options. You can also further
+ refine one of the predefined conventions or create a completely
+ custom naming scheme by using the <code>--*-regex</code> options.</p>
+
+ <p>As an example, let's assume that our "Hello World" application
+ uses the so-called upper-camel-case naming convention for types
+ (that is, each word in a type name is capitalized) and the K&amp;R
+ convention for function names. Since K&amp;R is the default
+ convention for both type and function names, we only need to
+ change the type naming scheme:</p>
+
+ <pre class="terminal">
+$ xsd cxx-tree --type-naming ucc hello.xsd
+ </pre>
+
+ <p>The <code>ucc</code> argument to the <code>--type-naming</code>
+ options stands for upper-camel-case. If we now examine the
+ generated <code>hello.hxx</code>, we will see the following
+ changes compared to the declarations shown in the previous
+ sections:</p>
+
+ <pre class="c++">
+class Hello_t
+{
+public:
+ // greeting
+ //
+ typedef xml_schema::String GreetingType;
+
+ const GreetingType&amp;
+ greeting () const;
+
+ GreetingType&amp;
+ greeting ();
+
+ void
+ greeting (const GreetingType&amp; x);
+
+ // name
+ //
+ typedef xml_schema::String NameType;
+ typedef xsd::sequence&lt;NameType> NameSequence;
+ typedef NameSequence::iterator NameIterator;
+ typedef NameSequence::const_iterator NameConstIterator;
+
+ const NameSequence&amp;
+ name () const;
+
+ NameSequence&amp;
+ name ();
+
+ void
+ name (const NameSequence&amp; s);
+
+ // Constructor.
+ //
+ Hello_t (const GreetingType&amp;);
+
+ ...
+
+};
+
+std::unique_ptr&lt;Hello_t>
+hello (const std::string&amp; uri);
+
+std::unique_ptr&lt;Hello_t>
+hello (std::istream&amp;);
+ </pre>
+
+ <p>Notice that the type names in the <code>xml_schema</code> namespace,
+ for example <code>xml_schema::String</code>, now also use the
+ upper-camel-case naming convention. The only thing that we may
+ be unhappy about in the above code is the <code>_t</code>
+ suffix in <code>Hello_t</code>. If we are not in a position
+ to change the schema, we can <em>touch-up</em> the <code>ucc</code>
+ convention with a custom translation rule using the
+ <code>--type-regex</code> option:</p>
+
+ <pre class="terminal">
+$ xsd cxx-tree --type-naming ucc --type-regex '/ (.+)_t/\u$1/' hello.xsd
+ </pre>
+
+ <p>This results in the following changes to the generated code:</p>
+
+ <pre class="c++">
+class Hello
+{
+public:
+ // greeting
+ //
+ typedef xml_schema::String GreetingType;
+
+ const GreetingType&amp;
+ greeting () const;
+
+ GreetingType&amp;
+ greeting ();
+
+ void
+ greeting (const GreetingType&amp; x);
+
+ // name
+ //
+ typedef xml_schema::String NameType;
+ typedef xsd::sequence&lt;NameType> NameSequence;
+ typedef NameSequence::iterator NameIterator;
+ typedef NameSequence::const_iterator NameConstIterator;
+
+ const NameSequence&amp;
+ name () const;
+
+ NameSequence&amp;
+ name ();
+
+ void
+ name (const NameSequence&amp; s);
+
+ // Constructor.
+ //
+ Hello (const GreetingType&amp;);
+
+ ...
+
+};
+
+std::unique_ptr&lt;Hello>
+hello (const std::string&amp; uri);
+
+std::unique_ptr&lt;Hello>
+hello (std::istream&amp;);
+ </pre>
+
+ <p>For more detailed information on the <code>--type-naming</code>,
+ <code>--function-naming</code>, <code>--type-regex</code>, and
+ other <code>--*-regex</code> options refer to the NAMING
+ CONVENTION section in the <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>.</p>
+
+ <h2><a name="2.7">2.7 Generating Documentation</a></h2>
+
+ <p>While our object model is quite simple, real-world vocabularies
+ can be quite complex with hundreds of types, elements, and
+ attributes. For such vocabularies figuring out which types
+ provide which member functions by studying the generated
+ source code or schemas can be a daunting task. To provide
+ application developers with a more accessible way of
+ understanding the generated object models, the XSD compiler
+ can be instructed to produce source code with documentation
+ comments in the Doxygen format. Then the source code can be
+ processed with the <a href="http://www.doxygen.org">Doxygen</a>
+ documentation system to extract this information and produce
+ documentation in various formats.
+ </p>
+
+ <p>In this section we will see how to generate documentation
+ for our "Hello World" vocabulary. To showcase the full power
+ of the XSD documentation facilities, we will first document
+ our schema. The XSD compiler will then transfer
+ this information from the schema to the generated code and
+ then to the object model documentation. Note that the
+ documentation in the schema is not required for XSD to
+ generate useful documentation. Below you will find
+ our <code>hello.xsd</code> with added documentation:</p>
+
+ <pre class="xml">
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:complexType name="hello_t">
+
+ &lt;xs:annotation>
+ &lt;xs:documentation>
+ The hello_t type consists of a greeting phrase and a
+ collection of names to which this greeting applies.
+ &lt;/xs:documentation>
+ &lt;/xs:annotation>
+
+ &lt;xs:sequence>
+
+ &lt;xs:element name="greeting" type="xs:string">
+ &lt;xs:annotation>
+ &lt;xs:documentation>
+ The greeting element contains the greeting phrase
+ for this hello object.
+ &lt;/xs:documentation>
+ &lt;/xs:annotation>
+ &lt;/xs:element>
+
+ &lt;xs:element name="name" type="xs:string" maxOccurs="unbounded">
+ &lt;xs:annotation>
+ &lt;xs:documentation>
+ The name elements contains names to be greeted.
+ &lt;/xs:documentation>
+ &lt;/xs:annotation>
+ &lt;/xs:element>
+
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="hello" type="hello_t">
+ &lt;xs:annotation>
+ &lt;xs:documentation>
+ The hello element is a root of the Hello XML vocabulary.
+ Every conforming document should start with this element.
+ &lt;/xs:documentation>
+ &lt;/xs:annotation>
+ &lt;/xs:element>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>The first step in obtaining the documentation is to recompile
+ our schema with the <code>--generate-doxygen</code> option:</p>
+
+ <pre class="terminal">
+$ xsd cxx-tree --generate-serialization --generate-doxygen hello.xsd
+ </pre>
+
+ <p>Now the generated <code>hello.hxx</code> file contains comments
+ in the Doxygen format. The next step is to process this file
+ with the Doxygen documentation system. If your project does
+ not use Doxygen then you first need to create a configuration
+ file for your project:</p>
+
+ <pre class="terminal">
+$ doxygen -g hello.doxygen
+ </pre>
+
+ <p>You only need to perform this step once. Now we can generate
+ the documentation by executing the following command in the
+ directory with the generated source code:</p>
+
+ <pre class="terminal">
+$ doxygen hello.doxygen
+ </pre>
+
+ <p>While the generated documentation can be useful as is, we can
+ go one step further and link (using the Doxygen tags mechanism)
+ the documentation for our object model with the documentation
+ for the XSD runtime library which defines C++ classes for the
+ built-in XML Schema types. This way we can seamlessly browse
+ between documentation for the <code>hello_t</code> class which
+ is generated by the XSD compiler and the <code>xml_schema::string</code>
+ class which is defined in the XSD runtime library. The Doxygen
+ configuration file for the XSD runtime is provided with the XSD
+ distribution.</p>
+
+ <p>You can view the result of the steps described in this section
+ on the <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/hello/html/annotated.html">Hello
+ Example Documentation</a> page.</p>
+
+ <!-- Chapater 3 -->
+
+
+ <h1><a name="3">3 Overall Mapping Configuration</a></h1>
+
+ <p>The C++/Tree mapping has a number of configuration parameters that
+ determine the overall properties and behavior of the generated code.
+ Configuration parameters are specified with the XSD command line
+ options. This chapter describes configuration aspects that are most
+ commonly encountered by application developers. These include: the
+ C++ standard, the character type that is used by the generated code,
+ handling of vocabularies that use XML Schema polymorphism, XML Schema
+ to C++ namespace mapping, and thread safety. For more ways to configure
+ the generated code refer to the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>.
+ </p>
+
+ <h2><a name="3.1">3.1 C++ Standard</a></h2>
+
+ <p>The C++/Tree mapping provides support for ISO/IEC C++ 2011 (C++11)
+ and ISO/IEC C++ 1998/2003 (C++98). To select the C++ standard for the
+ generated code we use the <code>--std</code> XSD compiler command
+ line option. While the majority of the examples in this guide use
+ C++11, the document explains the C++11/98 usage difference and so
+ they can easily be converted to C++98.</p>
+
+ <h2><a name="3.2">3.2 Character Type and Encoding</a></h2>
+
+ <p>The C++/Tree mapping has built-in support for two character types:
+ <code>char</code> and <code>wchar_t</code>. You can select the
+ character type with the <code>--char-type</code> command line
+ option. The default character type is <code>char</code>. The
+ character type affects all string and string-based types that
+ are used in the mapping. These include the string-based built-in
+ XML Schema types, exception types, stream types, etc.</p>
+
+ <p>Another aspect of the mapping that depends on the character type
+ is character encoding. For the <code>char</code> character type
+ the default encoding is UTF-8. Other supported encodings are
+ ISO-8859-1, Xerces-C++ Local Code Page (LPC), as well as
+ custom encodings. You can select which encoding should be used
+ in the object model with the <code>--char-encoding</code> command
+ line option.</p>
+
+ <p>For the <code>wchar_t</code> character type the encoding is
+ automatically selected between UTF-16 and UTF-32/UCS-4 depending
+ on the size of the <code>wchar_t</code> type. On some platforms
+ (for example, Windows with Visual C++ and AIX with IBM XL C++)
+ <code>wchar_t</code> is 2 bytes long. For these platforms the
+ encoding is UTF-16. On other platforms <code>wchar_t</code> is 4 bytes
+ long and UTF-32/UCS-4 is used.</p>
+
+ <p>Note also that the character encoding that is used in the object model
+ is independent of the encodings used in input and output XML. In fact,
+ all three (object mode, input XML, and output XML) can have different
+ encodings.</p>
+
+ <h2><a name="3.3">3.3 Support for Polymorphism</a></h2>
+
+ <p>By default XSD generates non-polymorphic code. If your vocabulary
+ uses XML Schema polymorphism in the form of <code>xsi:type</code>
+ and/or substitution groups, then you will need to compile
+ your schemas with the <code>--generate-polymorphic</code> option
+ to produce polymorphism-aware code. For more information on
+ working with polymorphic object models, refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.11">Section 2.11,
+ "Mapping for <code>xsi:type</code> and Substitution Groups"</a> in
+ the C++/Tree Mapping User Manual.</p>
+
+ <h2><a name="3.4">3.4 Namespace Mapping</a></h2>
+
+ <p>XSD maps XML namespaces specified in the <code>targetNamespace</code>
+ attribute in XML Schema to one or more nested C++ namespaces. By
+ default, a namespace URI is mapped to a sequence of C++ namespace
+ names by removing the protocol and host parts and splitting the
+ rest into a sequence of names with <code>'/'</code> as the name
+ separator.</p>
+
+ <p>The default mapping of namespace URIs to C++ namespaces
+ can be altered using the <code>--namespace-map</code> and
+ <code>--namespace-regex</code> compiler options. For example,
+ to map namespace URI <code>https://www.codesynthesis.com/my</code> to
+ C++ namespace <code>cs::my</code>, we can use the following option:</p>
+
+ <pre class="terminal">
+--namespace-map https://www.codesynthesis.com/my=cs::my
+ </pre>
+
+ <p>A vocabulary without a namespace is mapped to the global scope. This
+ also can be altered with the above options by using an empty name
+ for the XML namespace:</p>
+
+ <pre class="terminal">
+--namespace-map =cs
+ </pre>
+
+ <h2><a name="3.5">3.5 Thread Safety</a></h2>
+
+ <p>XSD-generated code is thread-safe in the sense that you can
+ use different instantiations of the object model in several
+ threads concurrently. This is possible due to the generated
+ code not relying on any writable global variables. If you need
+ to share the same object between several threads then you will
+ need to provide some form of synchronization. One approach would
+ be to use the generated code customization mechanisms to embed
+ synchronization primitives into the generated C++ classes. For more
+ information on generated code customization refer to the
+ <a href="http://wiki.codesynthesis.com/Tree/Customization_guide">C++/Tree
+ Mapping Customization Guide</a>.</p>
+
+ <p>If you also would like to call parsing and/or serialization
+ functions from several threads potentially concurrently, then
+ you will need to make sure the Xerces-C++ runtime is initialized
+ and terminated only once. The easiest way to do this is to
+ initialize/terminate Xerces-C++ from <code>main()</code> when
+ there are no threads yet/anymore:</p>
+
+ <pre class="c++">
+#include &lt;xercesc/util/PlatformUtils.hpp>
+
+int
+main ()
+{
+ xercesc::XMLPlatformUtils::Initialize ();
+
+ {
+ // Start/terminate threads and parse/serialize here.
+ }
+
+ xercesc::XMLPlatformUtils::Terminate ();
+}
+ </pre>
+
+ <p>Because you initialize the Xerces-C++ runtime yourself you should
+ also pass the <code>xml_schema::flags::dont_initialize</code> flag
+ to parsing and serialization functions. See <a href="#5">Chapter 5,
+ "Parsing"</a> and <a href="#6">Chapter 6, "Serialization"</a> for
+ more information.</p>
+
+
+ <!-- Chapater 4 -->
+
+
+ <h1><a name="4">4 Working with Object Models</a></h1>
+
+ <p>As we have seen in the previous chapters, the XSD compiler generates
+ a C++ class for each type defined in XML Schema. Together these classes
+ constitute an object model for an XML vocabulary. In this chapter we
+ will take a closer look at different elements that comprise an
+ object model class as well as how to create, access, and modify
+ object models.</p>
+
+ <p>In this and subsequent chapters we will use the following schema
+ that describes a collection of person records. We save it in
+ <code>people.xsd</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:simpleType name="gender_t">
+ &lt;xs:restriction base="xs:string">
+ &lt;xs:enumeration value="male"/>
+ &lt;xs:enumeration value="female"/>
+ &lt;/xs:restriction>
+ &lt;/xs:simpleType>
+
+ &lt;xs:complexType name="person_t">
+ &lt;xs:sequence>
+ &lt;xs:element name="first-name" type="xs:string"/>
+ &lt;xs:element name="middle-name" type="xs:string" minOccurs="0"/>
+ &lt;xs:element name="last-name" type="xs:string"/>
+ &lt;xs:element name="gender" type="gender_t"/>
+ &lt;xs:element name="age" type="xs:short"/>
+ &lt;/xs:sequence>
+ &lt;xs:attribute name="id" type="xs:unsignedInt" use="required"/>
+ &lt;/xs:complexType>
+
+ &lt;xs:complexType name="people_t">
+ &lt;xs:sequence>
+ &lt;xs:element name="person" type="person_t" maxOccurs="unbounded"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="people" type="people_t"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>A sample XML instance to go along with this schema is saved
+ in <code>people.xml</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd">
+
+ &lt;person id="1">
+ &lt;first-name>John&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>32&lt;/age>
+ &lt;/person>
+
+ &lt;person id="2">
+ &lt;first-name>Jane&lt;/first-name>
+ &lt;middle-name>Mary&lt;/middle-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>female&lt;/gender>
+ &lt;age>28&lt;/age>
+ &lt;/person>
+
+&lt;/people>
+ </pre>
+
+ <p>Compiling <code>people.xsd</code> with the XSD compiler results
+ in three generated C++ classes: <code>gender_t</code>,
+ <code>person_t</code>, and <code>people_t</code>.
+ The <code>gender_t</code> class is modelled after the C++
+ <code>enum</code> type. Its definition is presented below:</p>
+
+ <pre class="c++">
+class gender_t: public xml_schema::string
+{
+public:
+ enum value
+ {
+ male,
+ female
+ };
+
+ gender_t (value);
+ gender_t (const xml_schema::string&amp;);
+
+ gender_t&amp;
+ operator= (value);
+
+ operator value () const;
+};
+ </pre>
+
+ <p>The following listing shows how we can use this type:</p>
+
+ <pre class="c++">
+gender_t m (gender_t::male);
+gender_t f ("female");
+
+if (m == "female" || f == gender_t::male)
+{
+ ...
+}
+
+switch (m)
+{
+case gender_t::male:
+ {
+ ...
+ }
+case gender_t::female:
+ {
+ ...
+ }
+}
+ </pre>
+
+ <p>The other two classes will be examined in detail in the subsequent
+ sections.</p>
+
+ <h2><a name="4.1">4.1 Attribute and Element Cardinalities</a></h2>
+
+ <p>As we have seen in the previous chapters, XSD generates a different
+ set of type definitions and member functions for elements with
+ different cardinalities. The C++/Tree mapping divides all the possible
+ element and attribute cardinalities into three cardinality classes:
+ <em>one</em>, <em>optional</em>, and <em>sequence</em>.</p>
+
+ <p>The <em>one</em> cardinality class covers all elements that should
+ occur exactly once as well as required attributes. In our
+ example, the <code>first-name</code>, <code>last-name</code>,
+ <code>gender</code>, and <code>age</code> elements as well as
+ the <code>id</code> attribute belong to this cardinality class.
+ The following code fragment shows type definitions as well as the
+ accessor and modifier functions that are generated for the
+ <code>gender</code> element in the <code>person_t</code> class:</p>
+
+ <pre class="c++">
+class person_t
+{
+ // gender
+ //
+ typedef gender_t gender_type;
+
+ const gender_type&amp;
+ gender () const;
+
+ gender_type&amp;
+ gender ();
+
+ void
+ gender (const gender_type&amp;);
+};
+ </pre>
+
+ <p>The <code>gender_type</code> type is an alias for the element's type.
+ The first two accessor functions return read-only (constant) and
+ read-write references to the element's value, respectively. The
+ modifier function sets the new value for the element.</p>
+
+ <p>The <em>optional</em> cardinality class covers all elements that
+ can occur zero or one time as well as optional attributes. In our
+ example, the <code>middle-name</code> element belongs to this
+ cardinality class. The following code fragment shows the type
+ definitions as well as the accessor and modifier functions that
+ are generated for this element in the <code>person_t</code> class:</p>
+
+ <pre class="c++">
+class person_t
+{
+ // middle-name
+ //
+ typedef xml_schema::string middle_name_type;
+ typedef xsd::optional&lt;middle_name_type> middle_name_optional;
+
+ const middle_name_optional&amp;
+ middle_name () const;
+
+ middle_name_optional&amp;
+ middle_name ();
+
+ void
+ middle_name (const middle_name_type&amp;);
+
+ void
+ middle_name (const middle_name_optional&amp;);
+};
+ </pre>
+
+ <p>As with the <code>gender</code> element, <code>middle_name_type</code>
+ is an alias for the element's type. The <code>middle_name_optional</code>
+ type is a container for the element's optional value. It can be queried
+ for the presence of the value using the <code>present()</code> function.
+ The value itself can be retrieved using the <code>get()</code>
+ accessor and set using the <code>set()</code> modifier. The container
+ can be reverted to the value not present state with the call to the
+ <code>reset()</code> function. The following example shows how we
+ can use this container:</p>
+
+ <pre class="c++">
+person_t::middle_name_optional n ("John");
+
+if (n.present ())
+{
+ cout &lt;&lt; n.get () &lt;&lt; endl;
+}
+
+n.set ("Jane");
+n.reset ();
+ </pre>
+
+
+ <p>Unlike the <em>one</em> cardinality class, the accessor functions
+ for the <em>optional</em> class return read-only (constant) and
+ read-write references to the container instead of the element's
+ value directly. The modifier functions set the new value for the
+ element.</p>
+
+ <p>Finally, the <em>sequence</em> cardinality class covers all elements
+ that can occur more than once. In our example, the
+ <code>person</code> element in the <code>people_t</code> type
+ belongs to this cardinality class. The following code fragment shows
+ the type definitions as well as the accessor and modifier functions
+ that are generated for this element in the <code>people_t</code>
+ class:</p>
+
+ <pre class="c++">
+class people_t
+{
+ // person
+ //
+ typedef person_t person_type;
+ typedef xsd::sequence&lt;person_type> person_sequence;
+ typedef person_sequence::iterator person_iterator;
+ typedef person_sequence::const_iterator person_const_iterator;
+
+ const person_sequence&amp;
+ person () const;
+
+ person_sequence&amp;
+ person ();
+
+ void
+ person (const person_sequence&amp;);
+};
+ </pre>
+
+ <p>Identical to the other cardinality classes, <code>person_type</code>
+ is an alias for the element's type. The <code>person_sequence</code>
+ type is a sequence container for the element's values. It is based
+ on and has the same interface as <code>std::vector</code> and
+ therefore can be used in similar ways. The <code>person_iterator</code>
+ and <code>person_const_iterator</code> types are read-only
+ (constant) and read-write iterators for the <code>person_sequence</code>
+ container.</p>
+
+ <p>Similar to the <em>optional</em> cardinality class, the
+ accessor functions for the <em>sequence</em> class return
+ read-only (constant) and read-write references to the sequence
+ container. The modifier functions copies the entries from
+ the passed sequence.</p>
+
+ <p>C++/Tree is a "flattening" mapping in a sense that many levels of
+ nested compositors (<code>choice</code> and <code>sequence</code>),
+ all potentially with their own cardinalities, are in the end mapped
+ to a flat set of elements with one of the three cardinality classes
+ discussed above. While this results in a simple and easy to use API
+ for most types, in certain cases, the order of elements in the actual
+ XML documents is not preserved once parsed into the object model. To
+ overcome this limitation we can mark certain schema types, for which
+ content order is not sufficiently preserved, as ordered. For more
+ information on this functionality refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8.4">Section
+ 2.8.4, "Element Order"</a> in the C++/Tree Mapping User Manual.</p>
+
+ <p>For complex schemas with many levels of nested compositors
+ (<code>choice</code> and <code>sequence</code>) it can also
+ be hard to deduce the cardinality class of a particular element.
+ The generated Doxygen documentation can greatly help with
+ this task. For each element and attribute the documentation
+ clearly identifies its cardinality class. Alternatively, you
+ can study the generated header files to find out the cardinality
+ class of a particular attribute or element.</p>
+
+ <p>In the next sections we will examine how to access and modify
+ information stored in an object model using accessor and modifier
+ functions described in this section.</p>
+
+ <h2><a name="4.2">4.2 Accessing the Object Model</a></h2>
+
+ <p>In this section we will learn how to get to the information
+ stored in the object model for our person records vocabulary.
+ The following application accesses and prints the contents
+ of the <code>people.xml</code> file:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "people.hxx"
+
+using namespace std;
+
+int
+main ()
+{
+ unique_ptr&lt;people_t> ppl (people ("people.xml"));
+
+ // Iterate over individual person records.
+ //
+ people_t::person_sequence&amp; ps (ppl->person ());
+
+ for (people_t::person_iterator i (ps.begin ()); i != ps.end (); ++i)
+ {
+ person_t&amp; p (*i);
+
+ // Print names: first-name and last-name are required elements,
+ // middle-name is optional.
+ //
+ cout &lt;&lt; "name: " &lt;&lt; p.first_name () &lt;&lt; " ";
+
+ if (p.middle_name ().present ())
+ cout &lt;&lt; p.middle_name ().get () &lt;&lt; " ";
+
+ cout &lt;&lt; p.last_name () &lt;&lt; endl;
+
+ // Print gender, age, and id which are all required.
+ //
+ cout &lt;&lt; "gender: " &lt;&lt; p.gender () &lt;&lt; endl
+ &lt;&lt; "age: " &lt;&lt; p.age () &lt;&lt; endl
+ &lt;&lt; "id: " &lt;&lt; p.id () &lt;&lt; endl
+ &lt;&lt; endl;
+ }
+}
+ </pre>
+
+ <p>This code shows common patterns of accessing elements and attributes
+ with different cardinality classes. For the sequence element
+ (<code>person</code> in <code>people_t</code>) we first obtain a
+ reference to the container and then iterate over individual
+ records. The values of elements and attributes with the
+ <em>one</em> cardinality class (<code>first-name</code>,
+ <code>last-name</code>, <code>gender</code>, <code>age</code>,
+ and <code>id</code>) can be obtained directly by calling the
+ corresponding accessor functions. For the optional element
+ <code>middle-name</code> we first check if the value is present
+ and only then call <code>get()</code> to retrieve it.</p>
+
+ <p>Note that when we want to reduce typing by creating a variable
+ representing a fragment of the object model that we are currently
+ working with (<code>ps</code> and <code>p</code> above), we obtain
+ a reference to that fragment instead of making a potentially
+ expensive copy. This is generally a good rule to follow when
+ creating high-performance applications.</p>
+
+ <p>If we run the above application on our sample
+ <code>people.xml</code>, the output looks as follows:</p>
+
+ <pre class="terminal">
+name: John Doe
+gender: male
+age: 32
+id: 1
+
+name: Jane Mary Doe
+gender: female
+age: 28
+id: 2
+ </pre>
+
+
+ <h2><a name="4.3">4.3 Modifying the Object Model</a></h2>
+
+ <p>In this section we will learn how to modify the information
+ stored in the object model for our person records vocabulary.
+ The following application changes the contents of the
+ <code>people.xml</code> file:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "people.hxx"
+
+using namespace std;
+
+int
+main ()
+{
+ unique_ptr&lt;people_t> ppl (people ("people.xml"));
+
+ // Iterate over individual person records and increment
+ // the age.
+ //
+ people_t::person_sequence&amp; ps (ppl->person ());
+
+ for (people_t::person_iterator i (ps.begin ()); i != ps.end (); ++i)
+ {
+ // Alternative way: i->age ()++;
+ //
+ i->age (i->age () + 1);
+ }
+
+ // Add middle-name to the first record and remove it from
+ // the second.
+ //
+ person_t&amp; john (ps[0]);
+ person_t&amp; jane (ps[1]);
+
+ john.middle_name ("Mary");
+ jane.middle_name ().reset ();
+
+ // Add another John record.
+ //
+ ps.push_back (john);
+
+ // Serialize the modified object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "people.xsd";
+
+ people (cout, *ppl, map);
+}
+ </pre>
+
+ <p>The first modification the above application performs is iterating
+ over person records and incrementing the age value. This code
+ fragment shows how to modify the value of a required attribute
+ or element. The next modification shows how to set a new value
+ for the optional <code>middle-name</code> element as well
+ as clear its value. Finally the example adds a copy of the
+ John Doe record to the <code>person</code> element sequence.</p>
+
+ <p>Note that in this case using references for the <code>ps</code>,
+ <code>john</code>, and <code>jane</code> variables is no longer
+ a performance improvement but a requirement for the application
+ to function correctly. If we hadn't used references, all our changes
+ would have been made on copies without affecting the object model.</p>
+
+ <p>If we run the above application on our sample <code>people.xml</code>,
+ the output looks as follows:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd">
+
+ &lt;person id="1">
+ &lt;first-name>John&lt;/first-name>
+ &lt;middle-name>Mary&lt;/middle-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>33&lt;/age>
+ &lt;/person>
+
+ &lt;person id="2">
+ &lt;first-name>Jane&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>female&lt;/gender>
+ &lt;age>29&lt;/age>
+ &lt;/person>
+
+ &lt;person id="1">
+ &lt;first-name>John&lt;/first-name>
+ &lt;middle-name>Mary&lt;/middle-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>33&lt;/age>
+ &lt;/person>
+
+&lt;/people>
+ </pre>
+
+
+ <h2><a name="4.4">4.4 Creating the Object Model from Scratch</a></h2>
+
+ <p>In this section we will learn how to create a new object model
+ for our person records vocabulary. The following application
+ recreates the content of the original <code>people.xml</code>
+ file:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "people.hxx"
+
+using namespace std;
+
+int
+main ()
+{
+ people_t ppl;
+ people_t::person_sequence&amp; ps (ppl.person ());
+
+ // Add the John Doe record.
+ //
+ ps.push_back (
+ person_t ("John", // first-name
+ "Doe", // last-name
+ gender_t::male, // gender
+ 32, // age
+ 1));
+
+ // Add the Jane Doe record.
+ //
+ ps.push_back (
+ person_t ("Jane", // first-name
+ "Doe", // last-name
+ gender_t::female, // gender
+ 28, // age
+ 2)); // id
+
+ // Add middle name to the Jane Doe record.
+ //
+ person_t&amp; jane (ps.back ());
+ jane.middle_name ("Mary");
+
+ // Serialize the object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "people.xsd";
+
+ people (cout, ppl, map);
+}
+ </pre>
+
+ <p>The only new part in the above application is the calls
+ to the <code>people_t</code> and <code>person_t</code>
+ constructors. As a general rule, for each C++ class
+ XSD generates a constructor with initializers
+ for each element and attribute belonging to the <em>one</em>
+ cardinality class. For our vocabulary, the following
+ constructors are generated:</p>
+
+ <pre class="c++">
+class person_t
+{
+ person_t (const first_name_type&amp;,
+ const last_name_type&amp;,
+ const gender_type&amp;,
+ const age_type&amp;,
+ const id_type&amp;);
+};
+
+class people_t
+{
+ people_t ();
+};
+ </pre>
+
+ <p>Note also that we set the <code>middle-name</code> element
+ on the Jane Doe record by obtaining a reference to that record
+ in the object model and setting the <code>middle-name</code>
+ value on it. This is a general rule that should be followed
+ in order to obtain the best performance: if possible,
+ direct modifications to the object model should be preferred
+ to modifications on temporaries with subsequent copying. The
+ following code fragment shows a semantically equivalent but
+ slightly slower version:</p>
+
+ <pre class="c++">
+// Add the Jane Doe record.
+//
+person_t jane ("Jane", // first-name
+ "Doe", // last-name
+ gender_t::female, // gender
+ 28, // age
+ 2); // id
+
+jane.middle_name ("Mary");
+
+ps.push_back (jane);
+ </pre>
+
+ <p>We can also go one step further to reduce copying and improve
+ the performance of our application by using the non-copying
+ <code>push_back()</code> function which assumes ownership
+ of the passed objects:</p>
+
+ <pre class="c++">
+// Add the Jane Doe record. C++11 version
+//
+unique_ptr&lt;person_t> jane_p (
+ new person_t ("Jane", // first-name
+ "Doe", // last-name
+ gender_t::female, // gender
+ 28, // age
+ 2)); // id
+ps.push_back (std::move (jane_p)); // assumes ownership
+
+// Add the John Doe record. C++98 version.
+//
+auto_ptr&lt;person_t> john_p (
+ new person_t ("John", // first-name
+ "Doe", // last-name
+ gender_t::male, // gender
+ 32, // age
+ 1));
+ps.push_back (john_p); // assumes ownership
+ </pre>
+
+ <p>For more information on the non-copying modifier functions refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8">Section
+ 2.8, "Mapping for Local Elements and Attributes"</a> in the C++/Tree Mapping
+ User Manual. The above application produces the following output:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd">
+
+ &lt;person id="1">
+ &lt;first-name>John&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>32&lt;/age>
+ &lt;/person>
+
+ &lt;person id="2">
+ &lt;first-name>Jane&lt;/first-name>
+ &lt;middle-name>Mary&lt;/middle-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>female&lt;/gender>
+ &lt;age>28&lt;/age>
+ &lt;/person>
+
+&lt;/people>
+ </pre>
+
+ <h2><a name="4.5">4.5 Mapping for the Built-in XML Schema Types</a></h2>
+
+ <p>Our person record vocabulary uses several built-in XML Schema
+ types: <code>string</code>, <code>short</code>, and
+ <code>unsignedInt</code>. Until now we haven't talked about
+ the mapping of built-in XML Schema types to C++ types and how
+ to work with them. This section provides an overview
+ of the built-in types. For more detailed information refer
+ to <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.5">Section
+ 2.5, "Mapping for Built-in Data Types"</a> in the C++/Tree Mapping
+ User Manual.</p>
+
+ <p>In XML Schema, built-in types are defined in the XML Schema namespace.
+ By default, the C++/Tree mapping maps this namespace to C++
+ namespace <code>xml_schema</code> (this mapping can be altered
+ with the <code>--namespace-map</code> option). The following table
+ summarizes the mapping of XML Schema built-in types to C++ types:</p>
+
+ <!-- border="1" is necessary for html2ps -->
+ <table id="builtin" border="1">
+ <tr>
+ <th>XML Schema type</th>
+ <th>Alias in the <code>xml_schema</code> namespace</th>
+ <th>C++ type</th>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-length integral types</th>
+ </tr>
+ <!-- 8-bit -->
+ <tr>
+ <td><code>byte</code></td>
+ <td><code>byte</code></td>
+ <td><code>signed&nbsp;char</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedByte</code></td>
+ <td><code>unsigned_byte</code></td>
+ <td><code>unsigned&nbsp;char</code></td>
+ </tr>
+
+ <!-- 16-bit -->
+ <tr>
+ <td><code>short</code></td>
+ <td><code>short_</code></td>
+ <td><code>short</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedShort</code></td>
+ <td><code>unsigned_short</code></td>
+ <td><code>unsigned&nbsp;short</code></td>
+ </tr>
+
+ <!-- 32-bit -->
+ <tr>
+ <td><code>int</code></td>
+ <td><code>int_</code></td>
+ <td><code>int</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedInt</code></td>
+ <td><code>unsigned_int</code></td>
+ <td><code>unsigned&nbsp;int</code></td>
+ </tr>
+
+ <!-- 64-bit -->
+ <tr>
+ <td><code>long</code></td>
+ <td><code>long_</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedLong</code></td>
+ <td><code>unsigned_long</code></td>
+ <td><code>unsigned&nbsp;long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-length integral types</th>
+ </tr>
+ <tr>
+ <td><code>integer</code></td>
+ <td><code>integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonPositiveInteger</code></td>
+ <td><code>non_positive_integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonNegativeInteger</code></td>
+ <td><code>non_negative_integer</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>positiveInteger</code></td>
+ <td><code>positive_integer</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>negativeInteger</code></td>
+ <td><code>negative_integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">boolean types</th>
+ </tr>
+ <tr>
+ <td><code>boolean</code></td>
+ <td><code>boolean</code></td>
+ <td><code>bool</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>float</code></td>
+ <td><code>float_</code></td>
+ <td><code>float</code></td>
+ </tr>
+ <tr>
+ <td><code>double</code></td>
+ <td><code>double_</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>decimal</code></td>
+ <td><code>decimal</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">string types</th>
+ </tr>
+ <tr>
+ <td><code>string</code></td>
+ <td><code>string</code></td>
+ <td>type derived from <code>std::basic_string</code></td>
+ </tr>
+ <tr>
+ <td><code>normalizedString</code></td>
+ <td><code>normalized_string</code></td>
+ <td>type derived from <code>string</code></td>
+ </tr>
+ <tr>
+ <td><code>token</code></td>
+ <td><code>token</code></td>
+ <td>type&nbsp;derived&nbsp;from&nbsp;<code>normalized_string</code></td>
+ </tr>
+ <tr>
+ <td><code>Name</code></td>
+ <td><code>name</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+ <tr>
+ <td><code>NMTOKEN</code></td>
+ <td><code>nmtoken</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+ <tr>
+ <td><code>NMTOKENS</code></td>
+ <td><code>nmtokens</code></td>
+ <td>type derived from <code>sequence&lt;nmtoken></code></td>
+ </tr>
+ <tr>
+ <td><code>NCName</code></td>
+ <td><code>ncname</code></td>
+ <td>type derived from <code>name</code></td>
+ </tr>
+ <tr>
+ <td><code>language</code></td>
+ <td><code>language</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">qualified name</th>
+ </tr>
+ <tr>
+ <td><code>QName</code></td>
+ <td><code>qname</code></td>
+ <td><code>xml_schema::qname</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">ID/IDREF types</th>
+ </tr>
+ <tr>
+ <td><code>ID</code></td>
+ <td><code>id</code></td>
+ <td>type derived from <code>ncname</code></td>
+ </tr>
+ <tr>
+ <td><code>IDREF</code></td>
+ <td><code>idref</code></td>
+ <td>type derived from <code>ncname</code></td>
+ </tr>
+ <tr>
+ <td><code>IDREFS</code></td>
+ <td><code>idrefs</code></td>
+ <td>type derived from <code>sequence&lt;idref></code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">URI types</th>
+ </tr>
+ <tr>
+ <td><code>anyURI</code></td>
+ <td><code>uri</code></td>
+ <td>type derived from <code>std::basic_string</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">binary types</th>
+ </tr>
+ <tr>
+ <td><code>base64Binary</code></td>
+ <td><code>base64_binary</code></td>
+ <td><code>xml_schema::base64_binary</code></td>
+ </tr>
+ <tr>
+ <td><code>hexBinary</code></td>
+ <td><code>hex_binary</code></td>
+ <td><code>xml_schema::hex_binary</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">date/time types</th>
+ </tr>
+ <tr>
+ <td><code>date</code></td>
+ <td><code>date</code></td>
+ <td><code>xml_schema::date</code></td>
+ </tr>
+ <tr>
+ <td><code>dateTime</code></td>
+ <td><code>date_time</code></td>
+ <td><code>xml_schema::date_time</code></td>
+ </tr>
+ <tr>
+ <td><code>duration</code></td>
+ <td><code>duration</code></td>
+ <td><code>xml_schema::duration</code></td>
+ </tr>
+ <tr>
+ <td><code>gDay</code></td>
+ <td><code>gday</code></td>
+ <td><code>xml_schema::gday</code></td>
+ </tr>
+ <tr>
+ <td><code>gMonth</code></td>
+ <td><code>gmonth</code></td>
+ <td><code>xml_schema::gmonth</code></td>
+ </tr>
+ <tr>
+ <td><code>gMonthDay</code></td>
+ <td><code>gmonth_day</code></td>
+ <td><code>xml_schema::gmonth_day</code></td>
+ </tr>
+ <tr>
+ <td><code>gYear</code></td>
+ <td><code>gyear</code></td>
+ <td><code>xml_schema::gyear</code></td>
+ </tr>
+ <tr>
+ <td><code>gYearMonth</code></td>
+ <td><code>gyear_month</code></td>
+ <td><code>xml_schema::gyear_month</code></td>
+ </tr>
+ <tr>
+ <td><code>time</code></td>
+ <td><code>time</code></td>
+ <td><code>xml_schema::time</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">entity types</th>
+ </tr>
+ <tr>
+ <td><code>ENTITY</code></td>
+ <td><code>entity</code></td>
+ <td>type derived from <code>name</code></td>
+ </tr>
+ <tr>
+ <td><code>ENTITIES</code></td>
+ <td><code>entities</code></td>
+ <td>type derived from <code>sequence&lt;entity></code></td>
+ </tr>
+ </table>
+
+ <p>As you can see from the table above a number of built-in
+ XML Schema types are mapped to fundamental C++ types such
+ as <code>int</code> or <code>bool</code>. All string-based
+ XML Schema types are mapped to C++ types that are derived
+ from either <code>std::string</code> or
+ <code>std::wstring</code>, depending on the character
+ type selected. For access and modification purposes these
+ types can be treated as <code>std::string</code>. A number
+ of built-in types, such as <code>qname</code>, the binary
+ types, and the date/time types do not have suitable
+ fundamental or standard C++ types to map to. As a result,
+ these types are implemented from scratch in the XSD runtime.
+ For more information on their interfaces refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.5">Section
+ 2.5, "Mapping for Built-in Data Types"</a> in the C++/Tree Mapping
+ User Manual.</p>
+
+
+ <!-- Chapater 5 -->
+
+
+ <h1><a name="5">5 Parsing</a></h1>
+
+ <p>We have already seen how to parse XML to an object model in this guide
+ before. In this chapter we will discuss the parsing topic in more
+ detail.</p>
+
+ <p>By default, the C++/Tree mapping provides a total of 14 overloaded
+ parsing functions. They differ in the input methods used to
+ read XML as well as the error reporting mechanisms. It is also possible
+ to generate types for root elements instead of parsing and serialization
+ functions. This may be useful if your XML vocabulary has multiple
+ root elements. For more information on element types refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.9">Section
+ 2.9, "Mapping for Global Elements"</a> in the C++/Tree Mapping User
+ Manual.</p>
+
+
+ <p>In this section we will discuss the most commonly used versions of
+ the parsing functions. For a comprehensive description of parsing
+ refer to <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#3">Chapter
+ 3, "Parsing"</a> in the C++/Tree Mapping User Manual. For the <code>people</code>
+ global element from our person record vocabulary, we will concentrate
+ on the following three parsing functions:</p>
+
+ <pre class="c++">
+std::[unique|auto]_ptr&lt;people_t>
+people (const std::string&amp; uri,
+ xml_schema::flags f = 0,
+ const xml_schema::properties&amp; p = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;people_t>
+people (std::istream&amp; is,
+ xml_schema::flags f = 0,
+ const xml_schema::properties&amp; p = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;people_t>
+people (std::istream&amp; is,
+ const std::string&amp; resource_id,
+ xml_schema::flags f = 0,
+ const xml_schema::properties&amp; p = ::xml_schema::properties ());
+ </pre>
+
+ <p>The first function parses a local file or a URI. We have already
+ used this parsing function in the previous chapters. The second
+ and third functions read XML from a standard input stream. The
+ last function also requires a resource id. This id is used to
+ identify the XML document being parser in diagnostics messages
+ as well as to resolve relative paths to other documents (for example,
+ schemas) that might be referenced from the XML document.</p>
+
+ <p>The last two arguments to all three parsing functions are parsing
+ flags and properties. The flags argument provides a number of ways
+ to fine-tune the parsing process. The properties argument allows
+ to pass additional information to the parsing functions. We will
+ use these two arguments in <a href="#5.1">Section 5.1, "XML Schema
+ Validation and Searching"</a> below. All three functions return
+ the object model as either <code>std::unique_ptr</code> (C++11) or
+ <code>std::auto_ptr</code> (C++98), depending on the C++ standard
+ selected (<code>--std</code> XSD compiler option). The following
+ example shows how we can use the above parsing functions:</p>
+
+ <pre class="c++">
+using std::unique_ptr;
+
+// Parse a local file or URI.
+//
+unique_ptr&lt;people_t> p1 (people ("people.xml"));
+unique_ptr&lt;people_t> p2 (people ("http://example.com/people.xml"));
+
+// Parse a local file via ifstream.
+//
+std::ifstream ifs ("people.xml");
+unique_ptr&lt;people_t> p3 (people (ifs, "people.xml"));
+
+// Parse an XML string.
+//
+std::string str ("..."); // XML in a string.
+std::istringstream iss (str);
+unique_ptr&lt;people_t> p4 (people (iss));
+ </pre>
+
+
+ <h2><a name="5.1">5.1 XML Schema Validation and Searching</a></h2>
+
+ <p>The C++/Tree mapping relies on the underlying Xerces-C++ XML
+ parser for full XML document validation. The XML Schema
+ validation is enabled by default and can be disabled by
+ passing the <code>xml_schema::flags::dont_validate</code>
+ flag to the parsing functions, for example:</p>
+
+ <pre class="c++">
+unique_ptr&lt;people_t> p (
+ people ("people.xml", xml_schema::flags::dont_validate));
+ </pre>
+
+ <p>Even when XML Schema validation is disabled, the generated
+ code still performs a number of checks to prevent
+ construction of an inconsistent object model (for example, an
+ object model with missing required attributes or elements).</p>
+
+ <p>When XML Schema validation is enabled, the XML parser needs
+ to locate a schema to validate against. There are several
+ methods to provide the schema location information to the
+ parser. The easiest and most commonly used method is to
+ specify schema locations in the XML document itself
+ with the <code>schemaLocation</code> or
+ <code>noNamespaceSchemaLocation</code> attributes, for example:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd"
+ xsi:schemaLocation="http://www.w3.org/XML/1998/namespace xml.xsd">
+ </pre>
+
+ <p>As you might have noticed, we used this method in all the sample XML
+ documents presented in this guide up until now. Note that the
+ schema locations specified with these two attributes are relative
+ to the document's path unless they are absolute URIs (that is
+ start with <code>http://</code>, <code>file://</code>, etc.).
+ In particular, if you specify just file names as your schema
+ locations, as we did above, then the schemas should reside in
+ the same directory as the XML document itself.</p>
+
+ <p>Another method of providing the schema location information
+ is via the <code>xml_schema::properties</code> argument, as
+ shown in the following example:</p>
+
+ <pre class="c++">
+xml_schema::properties props;
+props.no_namespace_schema_location ("people.xsd");
+props.schema_location ("http://www.w3.org/XML/1998/namespace", "xml.xsd");
+
+unique_ptr&lt;people_t> p (people ("people.xml", 0, props));
+ </pre>
+
+ <p>The schema locations provided with this method overrides
+ those specified in the XML document. As with the previous
+ method, the schema locations specified this way are
+ relative to the document's path unless they are absolute URIs.
+ In particular, if you want to use local schemas that are
+ not related to the document being parsed, then you will
+ need to use the <code>file://</code> URI. The following
+ example shows how to use schemas that reside in the current
+ working directory:</p>
+
+ <pre class="c++">
+#include &lt;unistd.h> // getcwd
+#include &lt;limits.h> // PATH_MAX
+
+char cwd[PATH_MAX];
+if (getcwd (cwd, PATH_MAX) == 0)
+{
+ // Buffer too small?
+}
+
+xml_schema::properties props;
+
+props.no_namespace_schema_location (
+ "file:///" + std::string (cwd) + "/people.xsd");
+
+props.schema_location (
+ "http://www.w3.org/XML/1998/namespace",
+ "file:///" + std::string (cwd) + "/xml.xsd");
+
+unique_ptr&lt;people_t> p (people ("people.xml", 0, props));
+ </pre>
+
+ <p>A third method is the most useful if you are planning to parse
+ several XML documents of the same vocabulary. In that case
+ it may be beneficial to pre-parse and cache the schemas in
+ the XML parser which can then be used to parse all documents
+ without re-parsing the schemas. For more information on
+ this method refer to the <code>caching</code> example in the
+ <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package.
+ It is also possible to convert the schemas into a pre-compiled
+ binary representation and embed this representation directly into
+ the application executable. With this approach your application can
+ perform XML Schema validation without depending on any external
+ schema files. For more information on how to achieve this refer to
+ the <code>embedded</code> example in the <code>cxx/tree/</code>
+ directory in the <a href="https://cppget.org/xsd-examples">xsd-examples</a>
+ package.</p>
+
+ <p>When the XML parser cannot locate a schema for the
+ XML document, the validation fails and XML document
+ elements and attributes for which schema definitions could
+ not be located are reported in the diagnostics. For
+ example, if we remove the <code>noNamespaceSchemaLocation</code>
+ attribute in <code>people.xml</code> from the previous chapter,
+ then we will get the following diagnostics if we try to parse
+ this file with validation enabled:</p>
+
+ <pre class="terminal">
+people.xml:2:63 error: no declaration found for element 'people'
+people.xml:4:18 error: no declaration found for element 'person'
+people.xml:4:18 error: attribute 'id' is not declared for element 'person'
+people.xml:5:17 error: no declaration found for element 'first-name'
+people.xml:6:18 error: no declaration found for element 'middle-name'
+people.xml:7:16 error: no declaration found for element 'last-name'
+people.xml:8:13 error: no declaration found for element 'gender'
+people.xml:9:10 error: no declaration found for element 'age'
+ </pre>
+
+ <h2><a name="5.2">5.2 Error Handling</a></h2>
+
+ <p>The parsing functions offer a number of ways to handle error conditions
+ with the C++ exceptions being the most commonly used mechanism. All
+ C++/Tree exceptions derive from common base <code>xml_schema::exception</code>
+ which in turn derives from <code>std::exception</code>. The easiest
+ way to uniformly handle all possible C++/Tree exceptions and print
+ detailed information about the error is to catch and print
+ <code>xml_schema::exception</code>, as shown in the following
+ example:</p>
+
+ <pre class="c++">
+try
+{
+ unique_ptr&lt;people_t> p (people ("people.xml"));
+}
+catch (const xml_schema::exception&amp; e)
+{
+ cerr &lt;&lt; e &lt;&lt; endl;
+}
+ </pre>
+
+ <p>Each individual C++/Tree exception also allows you to obtain
+ error details programmatically. For example, the
+ <code>xml_schema::parsing</code> exception is thrown when
+ the XML parsing and validation in the underlying XML parser
+ fails. It encapsulates various diagnostics information
+ such as the file name, line and column numbers, as well as the
+ error or warning message for each entry. For more information
+ about this and other exceptions that can be thrown during
+ parsing, refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#3.3">Section
+ 3.3, "Error Handling"</a> in the C++/Tree Mapping
+ User Manual.</p>
+
+ <p>Note that if you are parsing <code>std::istream</code> on which
+ exceptions are not enabled, then you will need to check the
+ stream state after the call to the parsing function in order
+ to detect any possible stream failures, for example:</p>
+
+ <pre class="c++">
+std::ifstream ifs ("people.xml");
+
+if (ifs.fail ())
+{
+ cerr &lt;&lt; "people.xml: unable to open" &lt;&lt; endl;
+ return 1;
+}
+
+unique_ptr&lt;people_t> p (people (ifs, "people.xml"));
+
+if (ifs.fail ())
+{
+ cerr &lt;&lt; "people.xml: read error" &lt;&lt; endl;
+ return 1;
+}
+ </pre>
+
+ <p>The above example can be rewritten to use exceptions as
+ shown below:</p>
+
+ <pre class="c++">
+try
+{
+ std::ifstream ifs;
+ ifs.exceptions (std::ifstream::badbit | std::ifstream::failbit);
+ ifs.open ("people.xml");
+
+ unique_ptr&lt;people_t> p (people (ifs, "people.xml"));
+}
+catch (const std::ifstream::failure&amp;)
+{
+ cerr &lt;&lt; "people.xml: unable to open or read error" &lt;&lt; endl;
+ return 1;
+}
+ </pre>
+
+
+ <!-- Chapater 6 -->
+
+
+ <h1><a name="6">6 Serialization</a></h1>
+
+ <p>We have already seen how to serialize an object model back to XML
+ in this guide before. In this chapter we will discuss the
+ serialization topic in more detail.</p>
+
+ <p>By default, the C++/Tree mapping provides a total of 8 overloaded
+ serialization functions. They differ in the output methods used to write
+ XML as well as the error reporting mechanisms. It is also possible to
+ generate types for root elements instead of parsing and serialization
+ functions. This may be useful if your XML vocabulary has multiple
+ root elements. For more information on element types refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.9">Section
+ 2.9, "Mapping for Global Elements"</a> in the C++/Tree Mapping User
+ Manual.</p>
+
+
+ <p>In this section we will discuss the most commonly
+ used version of serialization functions. For a comprehensive description
+ of serialization refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#4">Chapter
+ 4, "Serialization"</a> in the C++/Tree Mapping User Manual. For the
+ <code>people</code> global element from our person record vocabulary,
+ we will concentrate on the following serialization function:</p>
+
+ <pre class="c++">
+void
+people (std::ostream&amp; os,
+ const people_t&amp; x,
+ const xml_schema::namespace_infomap&amp; map =
+ xml_schema::namespace_infomap (),
+ const std::string&amp; encoding = "UTF-8",
+ xml_schema::flags f = 0);
+ </pre>
+
+ <p>This function serializes the object model passed as the second
+ argument to the standard output stream passed as the first
+ argument. The third argument is a namespace information map
+ which we will discuss in more detail in the next section.
+ The fourth argument is a character encoding that the resulting
+ XML document should be in. Possible valid values for this
+ argument are "US-ASCII", "ISO8859-1", "UTF-8", "UTF-16BE",
+ "UTF-16LE", "UCS-4BE", and "UCS-4LE". Finally, the flags
+ argument allows fine-tuning of the serialization process.
+ The following example shows how we can use the above serialization
+ function:</p>
+
+ <pre class="c++">
+people_t&amp; p = ...
+
+xml_schema::namespace_infomap map;
+map[""].schema = "people.xsd";
+
+// Serialize to stdout.
+//
+people (std::cout, p, map);
+
+// Serialize to a file.
+//
+std::ofstream ofs ("people.xml");
+people (ofs, p, map);
+
+// Serialize to a string.
+//
+std::ostringstream oss;
+people (oss, p, map);
+std::string xml (oss.str ());
+ </pre>
+
+
+ <h2><a name="6.1">6.1 Namespace and Schema Information</a></h2>
+
+ <p>While XML serialization can be done just from the object
+ model alone, it is often desirable to assign meaningful
+ prefixes to XML namespaces used in the vocabulary as
+ well as to provide the schema location information.
+ This is accomplished by passing the namespace information
+ map to the serialization function. The key in this map is
+ a namespace prefix that should be assigned to an XML namespace
+ specified in the <code>name</code> variable of the
+ map value. You can also assign an optional schema location for
+ this namespace in the <code>schema</code> variable. Based
+ on each key-value entry in this map, the serialization
+ function adds two attributes to the resulting XML document:
+ the namespace-prefix mapping attribute and schema location
+ attribute. The empty prefix indicates that the namespace
+ should be mapped without a prefix. For example, the following
+ map:</p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map[""].name = "http://www.example.com/example";
+map[""].schema = "example.xsd";
+
+map["x"].name = "http://www.w3.org/XML/1998/namespace";
+map["x"].schema = "xml.xsd";
+ </pre>
+
+ <p>Results in the following XML document:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;example
+ xmlns="http://www.example.com/example"
+ xmlns:x="http://www.w3.org/XML/1998/namespace"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.example.com/example example.xsd
+ http://www.w3.org/XML/1998/namespace xml.xsd">
+ </pre>
+
+ <p>The empty namespace indicates that the vocabulary has no target
+ namespace. For example, the following map results in only the
+ <code>noNamespaceSchemaLocation</code> attribute being added:</p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map[""].name = "";
+map[""].schema = "example.xsd";
+ </pre>
+
+ <h2><a name="6.2">6.2 Error Handling</a></h2>
+
+ <p>Similar to the parsing functions, the serialization functions offer a
+ number of ways to handle error conditions with the C++ exceptions being
+ the most commonly used mechanisms. As with parsing, the easiest way to
+ uniformly handle all possible serialization exceptions and print
+ detailed information about the error is to catch and print
+ <code>xml_schema::exception</code>:</p>
+
+ <pre class="c++">
+try
+{
+ people_t&amp; p = ...
+
+ xml_schema::namespace_infomap map;
+ map[""].schema = "people.xsd";
+
+ people (std::cout, p, map));
+}
+catch (const xml_schema::exception&amp; e)
+{
+ cerr &lt;&lt; e &lt;&lt; endl;
+}
+ </pre>
+
+ <p>The most commonly encountered serialization exception is
+ <code>xml_schema::serialization</code>. It is thrown
+ when the XML serialization in the underlying XML writer
+ fails. It encapsulates various diagnostics information
+ such as the file name, line and column numbers, as well as the
+ error or warning message for each entry. For more information
+ about this and other exceptions that can be thrown during
+ serialization, refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#4.4">Section
+ 4.4, "Error Handling"</a> in the C++/Tree Mapping
+ User Manual.</p>
+
+ <p>Note that if you are serializing to <code>std::ostream</code> on
+ which exceptions are not enabled, then you will need to check the
+ stream state after the call to the serialization function in order
+ to detect any possible stream failures, for example:</p>
+
+ <pre class="c++">
+std::ofstream ofs ("people.xml");
+
+if (ofs.fail ())
+{
+ cerr &lt;&lt; "people.xml: unable to open" &lt;&lt; endl;
+ return 1;
+}
+
+people (ofs, p, map));
+
+if (ofs.fail ())
+{
+ cerr &lt;&lt; "people.xml: write error" &lt;&lt; endl;
+ return 1;
+}
+ </pre>
+
+ <p>The above example can be rewritten to use exceptions as
+ shown below:</p>
+
+ <pre class="c++">
+try
+{
+ std::ofstream ofs;
+ ofs.exceptions (std::ofstream::badbit | std::ofstream::failbit);
+ ofs.open ("people.xml");
+
+ people (ofs, p, map));
+}
+catch (const std::ofstream::failure&amp;)
+{
+ cerr &lt;&lt; "people.xml: unable to open or write error" &lt;&lt; endl;
+ return 1;
+}
+ </pre>
+
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/doc/cxx/tree/guide/index.xhtml.in b/doc/cxx/tree/guide/index.xhtml.in
new file mode 100644
index 0000000..2f7f1e2
--- /dev/null
+++ b/doc/cxx/tree/guide/index.xhtml.in
@@ -0,0 +1,2736 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+ <title>C++/Tree Mapping Getting Started Guide</title>
+
+ <meta name="copyright" content="&#169; @copyright@"/>
+ <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,parsing,serialization,validation"/>
+ <meta name="description" content="C++/Tree Mapping Getting Started Guide"/>
+
+ <link rel="stylesheet" type="text/css" href="../../../default.css" />
+
+<style type="text/css">
+ pre {
+ padding : 0 0 0 0em;
+ margin : 0em 0em 0em 0;
+
+ font-size : 102%
+ }
+
+ body {
+ min-width: 48em;
+ }
+
+ h1 {
+ font-weight: bold;
+ font-size: 200%;
+ line-height: 1.2em;
+ }
+
+ h2 {
+ font-weight : bold;
+ font-size : 150%;
+
+ padding-top : 0.8em;
+ }
+
+ h3 {
+ font-size : 140%;
+ padding-top : 0.8em;
+ }
+
+ /* Adjust indentation for three levels. */
+ #container {
+ max-width: 48em;
+ }
+
+ #content {
+ padding: 0 0.1em 0 4em;
+ /*background-color: red;*/
+ }
+
+ #content h1 {
+ margin-left: -2.06em;
+ }
+
+ #content h2 {
+ margin-left: -1.33em;
+ }
+
+ /* Title page */
+
+ #titlepage {
+ padding: 2em 0 1em 0;
+ border-bottom: 1px solid black;
+ }
+
+ #titlepage .title {
+ font-weight: bold;
+ font-size: 200%;
+ text-align: center;
+ }
+
+ #titlepage #first-title {
+ padding: 1em 0 0.4em 0;
+ }
+
+ #titlepage #second-title {
+ padding: 0.4em 0 2em 0;
+ }
+
+ /* Lists */
+ ul.list li {
+ padding-top : 0.3em;
+ padding-bottom : 0.3em;
+ }
+
+ div.img {
+ text-align: center;
+ padding: 2em 0 2em 0;
+ }
+
+ /* */
+ dl dt {
+ padding : 0.8em 0 0 0;
+ }
+
+ /* Built-in table */
+ #builtin {
+ margin: 2em 0 2em 0;
+
+ border-collapse : collapse;
+ border : 1px solid;
+ border-color : #000000;
+
+ font-size : 11px;
+ line-height : 14px;
+ }
+
+ #builtin th, #builtin td {
+ border: 1px solid;
+ padding : 0.9em 0.9em 0.7em 0.9em;
+ }
+
+ #builtin th {
+ background : #cde8f6;
+ }
+
+ #builtin td {
+ text-align: left;
+ }
+
+ /* TOC */
+ table.toc {
+ border-style : none;
+ border-collapse : separate;
+ border-spacing : 0;
+
+ margin : 0.2em 0 0.2em 0;
+ padding : 0 0 0 0;
+ }
+
+ table.toc tr {
+ padding : 0 0 0 0;
+ margin : 0 0 0 0;
+ }
+
+ table.toc * td, table.toc * th {
+ border-style : none;
+ margin : 0 0 0 0;
+ vertical-align : top;
+ }
+
+ table.toc * th {
+ font-weight : normal;
+ padding : 0em 0.1em 0em 0;
+ text-align : left;
+ white-space : nowrap;
+ }
+
+ table.toc * table.toc th {
+ padding-left : 1em;
+ }
+
+ table.toc * td {
+ padding : 0em 0 0em 0.7em;
+ text-align : left;
+ }
+</style>
+
+
+</head>
+
+<body>
+<div id="container">
+ <div id="content">
+
+ <div class="noprint">
+
+ <div id="titlepage">
+ <div class="title" id="first-title">C++/Tree Mapping</div>
+ <div class="title" id="second-title">Getting Started Guide</div>
+
+ <p>Copyright &#169; @copyright@.</p>
+
+ <p>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href="https://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/index.xhtml">XHTML</a>,
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-tree-guide.pdf">PDF</a>, and
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-tree-guide.ps">PostScript</a>.</p>
+
+ </div>
+
+ <h1>Table of Contents</h1>
+
+ <table class="toc">
+ <tr>
+ <th></th><td><a href="#0">Preface</a>
+ <table class="toc">
+ <tr><th></th><td><a href="#0.1">About This Document</a></td></tr>
+ <tr><th></th><td><a href="#0.2">More Information</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>1</th><td><a href="#1">Introduction</a>
+ <table class="toc">
+ <tr><th>1.1</th><td><a href="#1.1">Mapping Overview</a></td></tr>
+ <tr><th>1.2</th><td><a href="#1.2">Benefits</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>2</th><td><a href="#2">Hello World Example</a>
+ <table class="toc">
+ <tr><th>2.1</th><td><a href="#2.1">Writing XML Document and Schema</a></td></tr>
+ <tr><th>2.2</th><td><a href="#2.2">Translating Schema to C++</a></td></tr>
+ <tr><th>2.3</th><td><a href="#2.3">Implementing Application Logic</a></td></tr>
+ <tr><th>2.4</th><td><a href="#2.4">Compiling and Running</a></td></tr>
+ <tr><th>2.5</th><td><a href="#2.5">Adding Serialization</a></td></tr>
+ <tr><th>2.6</th><td><a href="#2.6">Selecting Naming Convention</a></td></tr>
+ <tr><th>2.7</th><td><a href="#2.7">Generating Documentation</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>3</th><td><a href="#3">Overall Mapping Configuration</a>
+ <table class="toc">
+ <tr><th>3.1</th><td><a href="#3.1">C++ Standard</a></td></tr>
+ <tr><th>3.2</th><td><a href="#3.2">Character Type and Encoding</a></td></tr>
+ <tr><th>3.3</th><td><a href="#3.3">Support for Polymorphism </a></td></tr>
+ <tr><th>3.4</th><td><a href="#3.4">Namespace Mapping</a></td></tr>
+ <tr><th>3.5</th><td><a href="#3.5">Thread Safety</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>4</th><td><a href="#4">Working with Object Models</a>
+ <table class="toc">
+ <tr><th>4.1</th><td><a href="#4.1">Attribute and Element Cardinalities</a></td></tr>
+ <tr><th>4.2</th><td><a href="#4.2">Accessing the Object Model</a></td></tr>
+ <tr><th>4.3</th><td><a href="#4.3">Modifying the Object Model</a></td></tr>
+ <tr><th>4.4</th><td><a href="#4.4">Creating the Object Model from Scratch</a></td></tr>
+ <tr><th>4.5</th><td><a href="#4.5">Mapping for the Built-in XML Schema Types</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>5</th><td><a href="#5">Parsing</a>
+ <table class="toc">
+ <tr><th>5.1</th><td><a href="#5.1">XML Schema Validation and Searching</a></td></tr>
+ <tr><th>5.2</th><td><a href="#5.2">Error Handling</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>6</th><td><a href="#6">Serialization</a>
+ <table class="toc">
+ <tr><th>6.1</th><td><a href="#6.1">Namespace and Schema Information</a></td></tr>
+ <tr><th>6.2</th><td><a href="#6.2">Error Handling</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ </table>
+ </div>
+
+ <h1><a name="0">Preface</a></h1>
+
+ <h2><a name="0.1">About This Document</a></h2>
+
+ <p>The goal of this document is to provide you with an understanding of
+ the C++/Tree programming model and allow you to efficiently evaluate
+ XSD against your project's technical requirements. As such, this
+ document is intended for C++ developers and software architects
+ who are looking for an XML processing solution. For a more in-depth
+ description of the C++/Tree mapping refer to the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/">C++/Tree
+ Mapping User Manual</a>.</p>
+
+ <p>Prior experience with XML and C++ is required to understand this
+ document. Basic understanding of XML Schema is advantageous but
+ not expected or required.
+ </p>
+
+
+ <h2><a name="0.2">More Information</a></h2>
+
+ <p>Beyond this guide, you may also find the following sources of
+ information useful:</p>
+
+ <ul class="list">
+ <li><a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/">C++/Tree
+ Mapping User Manual</a></li>
+
+ <li><a href="http://wiki.codesynthesis.com/Tree/Customization_guide">C++/Tree
+ Mapping Customization Guide</a></li>
+
+ <li><a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree
+ Mapping Frequently Asked Questions (FAQ)</a></li>
+
+ <li><a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a></li>
+
+ <li>The <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ contains a collection of examples and a README file with an overview
+ of each example.</li>
+
+ <li>The <code>README</code> file in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ explains how to build the examples.</li>
+
+ <li>The <a href="https://www.codesynthesis.com/mailman/listinfo/xsd-users">xsd-users</a>
+ mailing list is the place to ask technical questions about XSD and the C++/Parser mapping.
+ Furthermore, the <a href="https://www.codesynthesis.com/pipermail/xsd-users/">archives</a>
+ may already have answers to some of your questions.</li>
+ </ul>
+
+ <!-- Introduction -->
+
+ <h1><a name="1">1 Introduction</a></h1>
+
+ <p>Welcome to CodeSynthesis XSD and the C++/Tree mapping. XSD is a
+ cross-platform W3C XML Schema to C++ data binding compiler. C++/Tree
+ is a W3C XML Schema to C++ mapping that represents the data stored
+ in XML as a statically-typed, vocabulary-specific object model.
+ </p>
+
+ <h2><a name="1.1">1.1 Mapping Overview</a></h2>
+
+ <p>Based on a formal description of an XML vocabulary (schema), the
+ C++/Tree mapping produces a tree-like data structure suitable for
+ in-memory processing. The core of the mapping consists of C++
+ classes that constitute the object model and are derived from
+ types defined in XML Schema as well as XML parsing and
+ serialization code.</p>
+
+ <p>Besides the core features, C++/Tree provide a number of additional
+ mapping elements that can be useful in some applications. These
+ include serialization and extraction to/from formats others than
+ XML, such as unstructured text (useful for debugging) and binary
+ representations such as XDR and CDR for high-speed data processing
+ as well as automatic documentation generation. The C++/Tree mapping
+ also provides a wide range of mechanisms for controlling and
+ customizing the generated code.</p>
+
+ <p>A typical application that uses C++/Tree for XML processing usually
+ performs the following three steps: it first reads (parses) an XML
+ document to an in-memory object model, it then performs some useful
+ computations on that object model which may involve modification
+ of the model, and finally it may write (serialize) the modified
+ object model back to XML.</p>
+
+ <p>The next chapter presents a simple application that performs these
+ three steps. The following chapters show how to use the C++/Tree
+ mapping in more detail.</p>
+
+ <h2><a name="1.2">1.2 Benefits</a></h2>
+
+ <p>Traditional XML access APIs such as Document Object Model (DOM)
+ or Simple API for XML (SAX) have a number of drawbacks that
+ make them less suitable for creating robust and maintainable
+ XML processing applications. These drawbacks include:
+ </p>
+
+ <ul class="list">
+ <li>Generic representation of XML in terms of elements, attributes,
+ and text forces an application developer to write a substantial
+ amount of bridging code that identifies and transforms pieces
+ of information encoded in XML to a representation more suitable
+ for consumption by the application logic.</li>
+
+ <li>String-based flow control defers error detection to runtime.
+ It also reduces code readability and maintainability.</li>
+
+ <li>Lack of type safety because the data is represented as text.</li>
+
+ <li>Resulting applications are hard to debug, change, and
+ maintain.</li>
+ </ul>
+
+ <p>In contrast, statically-typed, vocabulary-specific object model
+ produced by the C++/Tree mapping allows you to operate in your
+ domain terms instead of the generic elements, attributes, and
+ text. Static typing helps catch errors at compile-time rather
+ than at run-time. Automatic code generation frees you for more
+ interesting tasks (such as doing something useful with the
+ information stored in the XML documents) and minimizes the
+ effort needed to adapt your applications to changes in the
+ document structure. To summarize, the C++/Tree object model has
+ the following key advantages over generic XML access APIs:</p>
+
+ <ul class="list">
+ <li><b>Ease of use.</b> The generated code hides all the complexity
+ associated with parsing and serializing XML. This includes navigating
+ the structure and converting between the text representation and
+ data types suitable for manipulation by the application
+ logic.</li>
+
+ <li><b>Natural representation.</b> The object representation allows
+ you to access the XML data using your domain vocabulary instead
+ of generic elements, attributes, and text.</li>
+
+ <li><b>Concise code.</b> With the object representation the
+ application implementation is simpler and thus easier
+ to read and understand.</li>
+
+ <li><b>Safety.</b> The generated object model is statically
+ typed and uses functions instead of strings to access the
+ information. This helps catch programming errors at compile-time
+ rather than at runtime.</li>
+
+ <li><b>Maintainability.</b> Automatic code generation minimizes the
+ effort needed to adapt the application to changes in the
+ document structure. With static typing, the C++ compiler
+ can pin-point the places in the client code that need to be
+ changed.</li>
+
+ <li><b>Compatibility.</b> Sequences of elements are represented in
+ the object model as containers conforming to the standard C++
+ sequence requirements. This makes it possible to use standard
+ C++ algorithms on the object representation and frees you from
+ learning yet another container interface, as is the case with
+ DOM.</li>
+
+ <li><b>Efficiency.</b> If the application makes repetitive use
+ of the data extracted from XML, then the C++/Tree object model
+ is more efficient because the navigation is performed using
+ function calls rather than string comparisons and the XML
+ data is extracted only once. Furthermore, the runtime memory
+ usage is reduced due to more efficient data storage
+ (for instance, storing numeric data as integers instead of
+ strings) as well as the static knowledge of cardinality
+ constraints.</li>
+ </ul>
+
+
+ <!-- Hello World Parser -->
+
+
+ <h1><a name="2">2 Hello World Example</a></h1>
+
+ <p>In this chapter we will examine how to parse, access, modify, and
+ serialize a very simple XML document using the XSD-generated
+ C++/Tree object model. The code presented in this chapter is
+ based on the <code>hello</code> example which can be found in
+ the <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package.</p>
+
+ <h2><a name="2.1">2.1 Writing XML Document and Schema</a></h2>
+
+ <p>First, we need to get an idea about the structure
+ of the XML documents we are going to process. Our
+ <code>hello.xml</code>, for example, could look like this:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;hello>
+
+ &lt;greeting>Hello&lt;/greeting>
+
+ &lt;name>sun&lt;/name>
+ &lt;name>moon&lt;/name>
+ &lt;name>world&lt;/name>
+
+&lt;/hello>
+ </pre>
+
+ <p>Then we can write a description of the above XML in the
+ XML Schema language and save it into <code>hello.xsd</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:complexType name="hello_t">
+ &lt;xs:sequence>
+ &lt;xs:element name="greeting" type="xs:string"/>
+ &lt;xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="hello" type="hello_t"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>Even if you are not familiar with XML Schema, it
+ should be easy to connect declarations in <code>hello.xsd</code>
+ to elements in <code>hello.xml</code>. The <code>hello_t</code> type
+ is defined as a sequence of the nested <code>greeting</code> and
+ <code>name</code> elements. Note that the term sequence in XML
+ Schema means that elements should appear in a particular order
+ as opposed to appearing multiple times. The <code>name</code>
+ element has its <code>maxOccurs</code> property set to
+ <code>unbounded</code> which means it can appear multiple times
+ in an XML document. Finally, the globally-defined <code>hello</code>
+ element prescribes the root element for our vocabulary. For an
+ easily-approachable introduction to XML Schema refer to
+ <a href="http://www.w3.org/TR/xmlschema-0/">XML Schema Part 0:
+ Primer</a>.</p>
+
+ <p>The above schema is a specification of our XML vocabulary; it tells
+ everybody what valid documents of our XML-based language should look
+ like. We can also update our <code>hello.xml</code> to include the
+ information about the schema so that XML parsers can validate
+ our document:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="hello.xsd">
+
+ &lt;greeting>Hello&lt;/greeting>
+
+ &lt;name>sun&lt;/name>
+ &lt;name>moon&lt;/name>
+ &lt;name>world&lt;/name>
+
+&lt;/hello>
+ </pre>
+
+
+ <p>The next step is to compile the schema to generate the object
+ model and parsing functions.</p>
+
+ <h2><a name="2.2">2.2 Translating Schema to C++</a></h2>
+
+ <p>Now we are ready to translate our <code>hello.xsd</code> to C++.
+ To do this we invoke the XSD compiler from a terminal (UNIX) or
+ a command prompt (Windows):
+ </p>
+
+ <pre class="terminal">
+$ xsd cxx-tree hello.xsd
+ </pre>
+
+ <p>The XSD compiler produces two C++ files: <code>hello.hxx</code> and
+ <code>hello.cxx</code>. The following code fragment is taken from
+ <code>hello.hxx</code>; it should give you an idea about what gets
+ generated:
+ </p>
+
+ <pre class="c++">
+class hello_t
+{
+public:
+ // greeting
+ //
+ typedef xml_schema::string greeting_type;
+
+ const greeting_type&amp;
+ greeting () const;
+
+ greeting_type&amp;
+ greeting ();
+
+ void
+ greeting (const greeting_type&amp; x);
+
+ // name
+ //
+ typedef xml_schema::string name_type;
+ typedef xsd::sequence&lt;name_type> name_sequence;
+ typedef name_sequence::iterator name_iterator;
+ typedef name_sequence::const_iterator name_const_iterator;
+
+ const name_sequence&amp;
+ name () const;
+
+ name_sequence&amp;
+ name ();
+
+ void
+ name (const name_sequence&amp; s);
+
+ // Constructor.
+ //
+ hello_t (const greeting_type&amp;);
+
+ ...
+
+};
+
+std::unique_ptr&lt;hello_t>
+hello (const std::string&amp; uri);
+
+std::unique_ptr&lt;hello_t>
+hello (std::istream&amp;);
+ </pre>
+
+ <p>The <code>hello_t</code> C++ class corresponds to the
+ <code>hello_t</code> XML Schema type. For each element
+ in this type a set of C++ type definitions as well as
+ accessor and modifier functions are generated inside the
+ <code>hello_t</code> class. Note that the type definitions
+ and member functions for the <code>greeting</code> and
+ <code>name</code> elements are different because of the
+ cardinality differences between these two elements
+ (<code>greeting</code> is a required single element and
+ <code>name</code> is a sequence of elements).</p>
+
+ <p>The <code>xml_schema::string</code> type used in the type
+ definitions is a C++ class provided by the XSD runtime
+ that corresponds to built-in XML Schema type
+ <code>string</code>. The <code>xml_schema::string</code>
+ is based on <code>std::string</code> and can be used as
+ such. Similarly, the <code>sequence</code> class template
+ that is used in the <code>name_sequence</code> type
+ definition is based on and has the same interface as
+ <code>std::vector</code>. The mapping between the built-in
+ XML Schema types and C++ types is described in more detail in
+ <a href="#4.5">Section 4.5, "Mapping for the Built-in XML Schema
+ Types"</a>. The <code>hello_t</code> class also includes a
+ constructor with an initializer for the required
+ <code>greeting</code> element as its argument.</p>
+
+ <p>The <code>hello</code> overloaded global functions correspond
+ to the <code>hello</code> global element in XML Schema. A
+ global element in XML Schema is a valid document root.
+ By default XSD generated a set of parsing functions for each
+ global element defined in XML Schema (this can be overridden
+ with the <code>--root-element-*</code> options). Parsing
+ functions return a dynamically allocated object model as an
+ automatic pointer. The actual pointer used depends on the
+ C++ standard selected. For C++11 it is <code>std::unique_ptr</code>
+ as shown above. For C++98 it is <code>std::auto_ptr</code>.
+ For example, if we modify our XSD compiler invocation to
+ select C++98:</p>
+
+ <pre class="terminal">
+$ xsd cxx-tree --std c++98 hello.xsd
+ </pre>
+
+ <p>Then the parsing function signatures will become:</p>
+
+ <pre class="c++">
+std::auto_ptr&lt;hello_t>
+hello (const std::string&amp; uri);
+
+std::auto_ptr&lt;hello_t>
+hello (std::istream&amp;);
+ </pre>
+
+ <p>For more information on parsing functions see <a href="#5">Chapter 5,
+ "Parsing"</a>.</p>
+
+ <h2><a name="2.3">2.3 Implementing Application Logic</a></h2>
+
+ <p>At this point we have all the parts we need to do something useful
+ with the information stored in our XML document:
+ </p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "hello.hxx"
+
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ unique_ptr&lt;hello_t> h (hello (argv[1]));
+
+ for (hello_t::name_const_iterator i (h->name ().begin ());
+ i != h->name ().end ();
+ ++i)
+ {
+ cerr &lt;&lt; h->greeting () &lt;&lt; ", " &lt;&lt; *i &lt;&lt; "!" &lt;&lt; endl;
+ }
+ }
+ catch (const xml_schema::exception&amp; e)
+ {
+ cerr &lt;&lt; e &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+ <p>The first part of our application calls one of the parsing
+ functions to parser an XML file specified in the command line.
+ We then use the returned object model to iterate over names
+ and print a greeting line for each of them. Finally, we
+ catch and print the <code>xml_schema::exception</code>
+ exception in case something goes wrong. This exception
+ is the root of the exception hierarchy used by the
+ XSD-generated code.
+ </p>
+
+
+ <h2><a name="2.4">2.4 Compiling and Running</a></h2>
+
+ <p>After saving our application from the previous section in
+ <code>driver.cxx</code>, we are ready to compile our first
+ program and run it on the test XML document. On a UNIX
+ system this can be done with the following commands:
+ </p>
+
+ <pre class="terminal">
+$ c++ -std=c++11 -I.../libxsd -c driver.cxx hello.cxx
+$ c++ -std=c++11 -o driver driver.o hello.o -lxerces-c
+$ ./driver hello.xml
+Hello, sun!
+Hello, moon!
+Hello, world!
+ </pre>
+
+ <p>Here <code>.../libxsd</code> represents the path to the
+ <a href="https://cppget.org/libxsd">libxsd</a> package root
+ directory. Note also that we are required to link our
+ application with the Xerces-C++ library because the generated
+ code uses it as the underlying XML parser.</p>
+
+ <h2><a name="2.5">2.5 Adding Serialization</a></h2>
+
+ <p>While parsing and accessing the XML data may be everything
+ you need, there are applications that require creating new
+ or modifying existing XML documents. By default XSD does
+ not produce serialization code. We will need to request
+ it with the <code>--generate-serialization</code> options:</p>
+
+ <pre class="terminal">
+$ xsd cxx-tree --generate-serialization hello.xsd
+ </pre>
+
+ <p>If we now examine the generated <code>hello.hxx</code> file,
+ we will find a set of overloaded serialization functions,
+ including the following version:</p>
+
+ <pre class="c++">
+void
+hello (std::ostream&amp;,
+ const hello_t&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap ());
+
+ </pre>
+
+ <p>Just like with parsing functions, XSD generates serialization
+ functions for each global element unless instructed otherwise
+ with one of the <code>--root-element-*</code> options. For more
+ information on serialization functions see <a href="#6">Chapter 6,
+ "Serialization"</a>.</p>
+
+ <p>We first examine an application that modifies an existing
+ object model and serializes it back to XML:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "hello.hxx"
+
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ unique_ptr&lt;hello_t> h (hello (argv[1]));
+
+ // Change the greeting phrase.
+ //
+ h->greeting ("Hi");
+
+ // Add another entry to the name sequence.
+ //
+ h->name ().push_back ("mars");
+
+ // Serialize the modified object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "hello.xsd";
+
+ hello (cout, *h, map);
+ }
+ catch (const xml_schema::exception&amp; e)
+ {
+ cerr &lt;&lt; e &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+ <p>First, our application parses an XML document and obtains its
+ object model as in the previous example. Then it changes the
+ greeting string and adds another entry to the list of names.
+ Finally, it serializes the object model back to XML by calling
+ the serialization function.</p>
+
+ <p>The first argument we pass to the serialization function is
+ <code>cout</code> which results in the XML being written to
+ the standard output for us to inspect. We could have also
+ written the result to a file or memory buffer by creating an
+ instance of <code>std::ofstream</code> or <code>std::ostringstream</code>
+ and passing it instead of <code>cout</code>. The second argument is the
+ object model we want to serialize. The final argument is an optional
+ namespace information map for our vocabulary. It captures information
+ such as namespaces, namespace prefixes to which they should be mapped,
+ and schemas associated with these namespaces. If we don't provide
+ this argument then generic namespace prefixes (<code>p1</code>,
+ <code>p2</code>, etc.) will be automatically assigned to XML namespaces
+ and no schema information will be added to the resulting document
+ (see <a href="#6">Chapter 6, "Serialization"</a> for details).
+ In our case, the prefix (map key) and namespace name are empty
+ because our vocabulary does not use XML namespaces.</p>
+
+ <p>If we now compile and run this application we will see the
+ output as shown in the following listing:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="hello.xsd">
+
+ &lt;greeting>Hi&lt;/greeting>
+
+ &lt;name>sun&lt;/name>
+ &lt;name>moon&lt;/name>
+ &lt;name>world&lt;/name>
+ &lt;name>mars&lt;/name>
+
+&lt;/hello>
+ </pre>
+
+ <p>We can also create and serialize an object model from scratch
+ as shown in the following example:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include &lt;fstream>
+#include "hello.hxx"
+
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ hello_t h ("Hi");
+
+ hello_t::name_sequence&amp; ns (h.name ());
+
+ ns.push_back ("Jane");
+ ns.push_back ("John");
+
+ // Serialize the object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "hello.xsd";
+
+ std::ofstream ofs (argv[1]);
+ hello (ofs, h, map);
+ }
+ catch (const xml_schema::exception&amp; e)
+ {
+ cerr &lt;&lt; e &lt;&lt; endl;
+ return 1;
+ }
+}
+ </pre>
+
+ <p>In this example we used the generated constructor to create
+ an instance of type <code>hello_t</code>. To reduce typing,
+ we obtained a reference to the name sequence which we then
+ used to add a few names. The serialization part is identical
+ to the previous example except this time we are writing to
+ a file. If we compile and run this program, it produces the
+ following XML file:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="hello.xsd">
+
+ &lt;greeting>Hi&lt;/greeting>
+
+ &lt;name>Jane&lt;/name>
+ &lt;name>John&lt;/name>
+
+&lt;/hello>
+ </pre>
+
+ <h2><a name="2.6">2.6 Selecting Naming Convention</a></h2>
+
+ <p>By default XSD uses the so-called K&amp;R (Kernighan and Ritchie)
+ identifier naming convention in the generated code. In this
+ convention both type and function names are in lower case and
+ words are separated by underscores. If your application code or
+ schemas use a different notation, you may want to change the
+ naming convention used in the generated code for consistency.
+ XSD supports a set of widely-used naming conventions
+ that you can select with the <code>--type-naming</code> and
+ <code>--function-naming</code> options. You can also further
+ refine one of the predefined conventions or create a completely
+ custom naming scheme by using the <code>--*-regex</code> options.</p>
+
+ <p>As an example, let's assume that our "Hello World" application
+ uses the so-called upper-camel-case naming convention for types
+ (that is, each word in a type name is capitalized) and the K&amp;R
+ convention for function names. Since K&amp;R is the default
+ convention for both type and function names, we only need to
+ change the type naming scheme:</p>
+
+ <pre class="terminal">
+$ xsd cxx-tree --type-naming ucc hello.xsd
+ </pre>
+
+ <p>The <code>ucc</code> argument to the <code>--type-naming</code>
+ options stands for upper-camel-case. If we now examine the
+ generated <code>hello.hxx</code>, we will see the following
+ changes compared to the declarations shown in the previous
+ sections:</p>
+
+ <pre class="c++">
+class Hello_t
+{
+public:
+ // greeting
+ //
+ typedef xml_schema::String GreetingType;
+
+ const GreetingType&amp;
+ greeting () const;
+
+ GreetingType&amp;
+ greeting ();
+
+ void
+ greeting (const GreetingType&amp; x);
+
+ // name
+ //
+ typedef xml_schema::String NameType;
+ typedef xsd::sequence&lt;NameType> NameSequence;
+ typedef NameSequence::iterator NameIterator;
+ typedef NameSequence::const_iterator NameConstIterator;
+
+ const NameSequence&amp;
+ name () const;
+
+ NameSequence&amp;
+ name ();
+
+ void
+ name (const NameSequence&amp; s);
+
+ // Constructor.
+ //
+ Hello_t (const GreetingType&amp;);
+
+ ...
+
+};
+
+std::unique_ptr&lt;Hello_t>
+hello (const std::string&amp; uri);
+
+std::unique_ptr&lt;Hello_t>
+hello (std::istream&amp;);
+ </pre>
+
+ <p>Notice that the type names in the <code>xml_schema</code> namespace,
+ for example <code>xml_schema::String</code>, now also use the
+ upper-camel-case naming convention. The only thing that we may
+ be unhappy about in the above code is the <code>_t</code>
+ suffix in <code>Hello_t</code>. If we are not in a position
+ to change the schema, we can <em>touch-up</em> the <code>ucc</code>
+ convention with a custom translation rule using the
+ <code>--type-regex</code> option:</p>
+
+ <pre class="terminal">
+$ xsd cxx-tree --type-naming ucc --type-regex '/ (.+)_t/\u$1/' hello.xsd
+ </pre>
+
+ <p>This results in the following changes to the generated code:</p>
+
+ <pre class="c++">
+class Hello
+{
+public:
+ // greeting
+ //
+ typedef xml_schema::String GreetingType;
+
+ const GreetingType&amp;
+ greeting () const;
+
+ GreetingType&amp;
+ greeting ();
+
+ void
+ greeting (const GreetingType&amp; x);
+
+ // name
+ //
+ typedef xml_schema::String NameType;
+ typedef xsd::sequence&lt;NameType> NameSequence;
+ typedef NameSequence::iterator NameIterator;
+ typedef NameSequence::const_iterator NameConstIterator;
+
+ const NameSequence&amp;
+ name () const;
+
+ NameSequence&amp;
+ name ();
+
+ void
+ name (const NameSequence&amp; s);
+
+ // Constructor.
+ //
+ Hello (const GreetingType&amp;);
+
+ ...
+
+};
+
+std::unique_ptr&lt;Hello>
+hello (const std::string&amp; uri);
+
+std::unique_ptr&lt;Hello>
+hello (std::istream&amp;);
+ </pre>
+
+ <p>For more detailed information on the <code>--type-naming</code>,
+ <code>--function-naming</code>, <code>--type-regex</code>, and
+ other <code>--*-regex</code> options refer to the NAMING
+ CONVENTION section in the <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>.</p>
+
+ <h2><a name="2.7">2.7 Generating Documentation</a></h2>
+
+ <p>While our object model is quite simple, real-world vocabularies
+ can be quite complex with hundreds of types, elements, and
+ attributes. For such vocabularies figuring out which types
+ provide which member functions by studying the generated
+ source code or schemas can be a daunting task. To provide
+ application developers with a more accessible way of
+ understanding the generated object models, the XSD compiler
+ can be instructed to produce source code with documentation
+ comments in the Doxygen format. Then the source code can be
+ processed with the <a href="http://www.doxygen.org">Doxygen</a>
+ documentation system to extract this information and produce
+ documentation in various formats.
+ </p>
+
+ <p>In this section we will see how to generate documentation
+ for our "Hello World" vocabulary. To showcase the full power
+ of the XSD documentation facilities, we will first document
+ our schema. The XSD compiler will then transfer
+ this information from the schema to the generated code and
+ then to the object model documentation. Note that the
+ documentation in the schema is not required for XSD to
+ generate useful documentation. Below you will find
+ our <code>hello.xsd</code> with added documentation:</p>
+
+ <pre class="xml">
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:complexType name="hello_t">
+
+ &lt;xs:annotation>
+ &lt;xs:documentation>
+ The hello_t type consists of a greeting phrase and a
+ collection of names to which this greeting applies.
+ &lt;/xs:documentation>
+ &lt;/xs:annotation>
+
+ &lt;xs:sequence>
+
+ &lt;xs:element name="greeting" type="xs:string">
+ &lt;xs:annotation>
+ &lt;xs:documentation>
+ The greeting element contains the greeting phrase
+ for this hello object.
+ &lt;/xs:documentation>
+ &lt;/xs:annotation>
+ &lt;/xs:element>
+
+ &lt;xs:element name="name" type="xs:string" maxOccurs="unbounded">
+ &lt;xs:annotation>
+ &lt;xs:documentation>
+ The name elements contains names to be greeted.
+ &lt;/xs:documentation>
+ &lt;/xs:annotation>
+ &lt;/xs:element>
+
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="hello" type="hello_t">
+ &lt;xs:annotation>
+ &lt;xs:documentation>
+ The hello element is a root of the Hello XML vocabulary.
+ Every conforming document should start with this element.
+ &lt;/xs:documentation>
+ &lt;/xs:annotation>
+ &lt;/xs:element>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>The first step in obtaining the documentation is to recompile
+ our schema with the <code>--generate-doxygen</code> option:</p>
+
+ <pre class="terminal">
+$ xsd cxx-tree --generate-serialization --generate-doxygen hello.xsd
+ </pre>
+
+ <p>Now the generated <code>hello.hxx</code> file contains comments
+ in the Doxygen format. The next step is to process this file
+ with the Doxygen documentation system. If your project does
+ not use Doxygen then you first need to create a configuration
+ file for your project:</p>
+
+ <pre class="terminal">
+$ doxygen -g hello.doxygen
+ </pre>
+
+ <p>You only need to perform this step once. Now we can generate
+ the documentation by executing the following command in the
+ directory with the generated source code:</p>
+
+ <pre class="terminal">
+$ doxygen hello.doxygen
+ </pre>
+
+ <p>While the generated documentation can be useful as is, we can
+ go one step further and link (using the Doxygen tags mechanism)
+ the documentation for our object model with the documentation
+ for the XSD runtime library which defines C++ classes for the
+ built-in XML Schema types. This way we can seamlessly browse
+ between documentation for the <code>hello_t</code> class which
+ is generated by the XSD compiler and the <code>xml_schema::string</code>
+ class which is defined in the XSD runtime library. The Doxygen
+ configuration file for the XSD runtime is provided with the XSD
+ distribution.</p>
+
+ <p>You can view the result of the steps described in this section
+ on the <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/hello/html/annotated.html">Hello
+ Example Documentation</a> page.</p>
+
+ <!-- Chapater 3 -->
+
+
+ <h1><a name="3">3 Overall Mapping Configuration</a></h1>
+
+ <p>The C++/Tree mapping has a number of configuration parameters that
+ determine the overall properties and behavior of the generated code.
+ Configuration parameters are specified with the XSD command line
+ options. This chapter describes configuration aspects that are most
+ commonly encountered by application developers. These include: the
+ C++ standard, the character type that is used by the generated code,
+ handling of vocabularies that use XML Schema polymorphism, XML Schema
+ to C++ namespace mapping, and thread safety. For more ways to configure
+ the generated code refer to the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>.
+ </p>
+
+ <h2><a name="3.1">3.1 C++ Standard</a></h2>
+
+ <p>The C++/Tree mapping provides support for ISO/IEC C++ 2011 (C++11)
+ and ISO/IEC C++ 1998/2003 (C++98). To select the C++ standard for the
+ generated code we use the <code>--std</code> XSD compiler command
+ line option. While the majority of the examples in this guide use
+ C++11, the document explains the C++11/98 usage difference and so
+ they can easily be converted to C++98.</p>
+
+ <h2><a name="3.2">3.2 Character Type and Encoding</a></h2>
+
+ <p>The C++/Tree mapping has built-in support for two character types:
+ <code>char</code> and <code>wchar_t</code>. You can select the
+ character type with the <code>--char-type</code> command line
+ option. The default character type is <code>char</code>. The
+ character type affects all string and string-based types that
+ are used in the mapping. These include the string-based built-in
+ XML Schema types, exception types, stream types, etc.</p>
+
+ <p>Another aspect of the mapping that depends on the character type
+ is character encoding. For the <code>char</code> character type
+ the default encoding is UTF-8. Other supported encodings are
+ ISO-8859-1, Xerces-C++ Local Code Page (LPC), as well as
+ custom encodings. You can select which encoding should be used
+ in the object model with the <code>--char-encoding</code> command
+ line option.</p>
+
+ <p>For the <code>wchar_t</code> character type the encoding is
+ automatically selected between UTF-16 and UTF-32/UCS-4 depending
+ on the size of the <code>wchar_t</code> type. On some platforms
+ (for example, Windows with Visual C++ and AIX with IBM XL C++)
+ <code>wchar_t</code> is 2 bytes long. For these platforms the
+ encoding is UTF-16. On other platforms <code>wchar_t</code> is 4 bytes
+ long and UTF-32/UCS-4 is used.</p>
+
+ <p>Note also that the character encoding that is used in the object model
+ is independent of the encodings used in input and output XML. In fact,
+ all three (object mode, input XML, and output XML) can have different
+ encodings.</p>
+
+ <h2><a name="3.3">3.3 Support for Polymorphism</a></h2>
+
+ <p>By default XSD generates non-polymorphic code. If your vocabulary
+ uses XML Schema polymorphism in the form of <code>xsi:type</code>
+ and/or substitution groups, then you will need to compile
+ your schemas with the <code>--generate-polymorphic</code> option
+ to produce polymorphism-aware code. For more information on
+ working with polymorphic object models, refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.11">Section 2.11,
+ "Mapping for <code>xsi:type</code> and Substitution Groups"</a> in
+ the C++/Tree Mapping User Manual.</p>
+
+ <h2><a name="3.4">3.4 Namespace Mapping</a></h2>
+
+ <p>XSD maps XML namespaces specified in the <code>targetNamespace</code>
+ attribute in XML Schema to one or more nested C++ namespaces. By
+ default, a namespace URI is mapped to a sequence of C++ namespace
+ names by removing the protocol and host parts and splitting the
+ rest into a sequence of names with <code>'/'</code> as the name
+ separator.</p>
+
+ <p>The default mapping of namespace URIs to C++ namespaces
+ can be altered using the <code>--namespace-map</code> and
+ <code>--namespace-regex</code> compiler options. For example,
+ to map namespace URI <code>https://www.codesynthesis.com/my</code> to
+ C++ namespace <code>cs::my</code>, we can use the following option:</p>
+
+ <pre class="terminal">
+--namespace-map https://www.codesynthesis.com/my=cs::my
+ </pre>
+
+ <p>A vocabulary without a namespace is mapped to the global scope. This
+ also can be altered with the above options by using an empty name
+ for the XML namespace:</p>
+
+ <pre class="terminal">
+--namespace-map =cs
+ </pre>
+
+ <h2><a name="3.5">3.5 Thread Safety</a></h2>
+
+ <p>XSD-generated code is thread-safe in the sense that you can
+ use different instantiations of the object model in several
+ threads concurrently. This is possible due to the generated
+ code not relying on any writable global variables. If you need
+ to share the same object between several threads then you will
+ need to provide some form of synchronization. One approach would
+ be to use the generated code customization mechanisms to embed
+ synchronization primitives into the generated C++ classes. For more
+ information on generated code customization refer to the
+ <a href="http://wiki.codesynthesis.com/Tree/Customization_guide">C++/Tree
+ Mapping Customization Guide</a>.</p>
+
+ <p>If you also would like to call parsing and/or serialization
+ functions from several threads potentially concurrently, then
+ you will need to make sure the Xerces-C++ runtime is initialized
+ and terminated only once. The easiest way to do this is to
+ initialize/terminate Xerces-C++ from <code>main()</code> when
+ there are no threads yet/anymore:</p>
+
+ <pre class="c++">
+#include &lt;xercesc/util/PlatformUtils.hpp>
+
+int
+main ()
+{
+ xercesc::XMLPlatformUtils::Initialize ();
+
+ {
+ // Start/terminate threads and parse/serialize here.
+ }
+
+ xercesc::XMLPlatformUtils::Terminate ();
+}
+ </pre>
+
+ <p>Because you initialize the Xerces-C++ runtime yourself you should
+ also pass the <code>xml_schema::flags::dont_initialize</code> flag
+ to parsing and serialization functions. See <a href="#5">Chapter 5,
+ "Parsing"</a> and <a href="#6">Chapter 6, "Serialization"</a> for
+ more information.</p>
+
+
+ <!-- Chapater 4 -->
+
+
+ <h1><a name="4">4 Working with Object Models</a></h1>
+
+ <p>As we have seen in the previous chapters, the XSD compiler generates
+ a C++ class for each type defined in XML Schema. Together these classes
+ constitute an object model for an XML vocabulary. In this chapter we
+ will take a closer look at different elements that comprise an
+ object model class as well as how to create, access, and modify
+ object models.</p>
+
+ <p>In this and subsequent chapters we will use the following schema
+ that describes a collection of person records. We save it in
+ <code>people.xsd</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:simpleType name="gender_t">
+ &lt;xs:restriction base="xs:string">
+ &lt;xs:enumeration value="male"/>
+ &lt;xs:enumeration value="female"/>
+ &lt;/xs:restriction>
+ &lt;/xs:simpleType>
+
+ &lt;xs:complexType name="person_t">
+ &lt;xs:sequence>
+ &lt;xs:element name="first-name" type="xs:string"/>
+ &lt;xs:element name="middle-name" type="xs:string" minOccurs="0"/>
+ &lt;xs:element name="last-name" type="xs:string"/>
+ &lt;xs:element name="gender" type="gender_t"/>
+ &lt;xs:element name="age" type="xs:short"/>
+ &lt;/xs:sequence>
+ &lt;xs:attribute name="id" type="xs:unsignedInt" use="required"/>
+ &lt;/xs:complexType>
+
+ &lt;xs:complexType name="people_t">
+ &lt;xs:sequence>
+ &lt;xs:element name="person" type="person_t" maxOccurs="unbounded"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="people" type="people_t"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>A sample XML instance to go along with this schema is saved
+ in <code>people.xml</code>:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd">
+
+ &lt;person id="1">
+ &lt;first-name>John&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>32&lt;/age>
+ &lt;/person>
+
+ &lt;person id="2">
+ &lt;first-name>Jane&lt;/first-name>
+ &lt;middle-name>Mary&lt;/middle-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>female&lt;/gender>
+ &lt;age>28&lt;/age>
+ &lt;/person>
+
+&lt;/people>
+ </pre>
+
+ <p>Compiling <code>people.xsd</code> with the XSD compiler results
+ in three generated C++ classes: <code>gender_t</code>,
+ <code>person_t</code>, and <code>people_t</code>.
+ The <code>gender_t</code> class is modelled after the C++
+ <code>enum</code> type. Its definition is presented below:</p>
+
+ <pre class="c++">
+class gender_t: public xml_schema::string
+{
+public:
+ enum value
+ {
+ male,
+ female
+ };
+
+ gender_t (value);
+ gender_t (const xml_schema::string&amp;);
+
+ gender_t&amp;
+ operator= (value);
+
+ operator value () const;
+};
+ </pre>
+
+ <p>The following listing shows how we can use this type:</p>
+
+ <pre class="c++">
+gender_t m (gender_t::male);
+gender_t f ("female");
+
+if (m == "female" || f == gender_t::male)
+{
+ ...
+}
+
+switch (m)
+{
+case gender_t::male:
+ {
+ ...
+ }
+case gender_t::female:
+ {
+ ...
+ }
+}
+ </pre>
+
+ <p>The other two classes will be examined in detail in the subsequent
+ sections.</p>
+
+ <h2><a name="4.1">4.1 Attribute and Element Cardinalities</a></h2>
+
+ <p>As we have seen in the previous chapters, XSD generates a different
+ set of type definitions and member functions for elements with
+ different cardinalities. The C++/Tree mapping divides all the possible
+ element and attribute cardinalities into three cardinality classes:
+ <em>one</em>, <em>optional</em>, and <em>sequence</em>.</p>
+
+ <p>The <em>one</em> cardinality class covers all elements that should
+ occur exactly once as well as required attributes. In our
+ example, the <code>first-name</code>, <code>last-name</code>,
+ <code>gender</code>, and <code>age</code> elements as well as
+ the <code>id</code> attribute belong to this cardinality class.
+ The following code fragment shows type definitions as well as the
+ accessor and modifier functions that are generated for the
+ <code>gender</code> element in the <code>person_t</code> class:</p>
+
+ <pre class="c++">
+class person_t
+{
+ // gender
+ //
+ typedef gender_t gender_type;
+
+ const gender_type&amp;
+ gender () const;
+
+ gender_type&amp;
+ gender ();
+
+ void
+ gender (const gender_type&amp;);
+};
+ </pre>
+
+ <p>The <code>gender_type</code> type is an alias for the element's type.
+ The first two accessor functions return read-only (constant) and
+ read-write references to the element's value, respectively. The
+ modifier function sets the new value for the element.</p>
+
+ <p>The <em>optional</em> cardinality class covers all elements that
+ can occur zero or one time as well as optional attributes. In our
+ example, the <code>middle-name</code> element belongs to this
+ cardinality class. The following code fragment shows the type
+ definitions as well as the accessor and modifier functions that
+ are generated for this element in the <code>person_t</code> class:</p>
+
+ <pre class="c++">
+class person_t
+{
+ // middle-name
+ //
+ typedef xml_schema::string middle_name_type;
+ typedef xsd::optional&lt;middle_name_type> middle_name_optional;
+
+ const middle_name_optional&amp;
+ middle_name () const;
+
+ middle_name_optional&amp;
+ middle_name ();
+
+ void
+ middle_name (const middle_name_type&amp;);
+
+ void
+ middle_name (const middle_name_optional&amp;);
+};
+ </pre>
+
+ <p>As with the <code>gender</code> element, <code>middle_name_type</code>
+ is an alias for the element's type. The <code>middle_name_optional</code>
+ type is a container for the element's optional value. It can be queried
+ for the presence of the value using the <code>present()</code> function.
+ The value itself can be retrieved using the <code>get()</code>
+ accessor and set using the <code>set()</code> modifier. The container
+ can be reverted to the value not present state with the call to the
+ <code>reset()</code> function. The following example shows how we
+ can use this container:</p>
+
+ <pre class="c++">
+person_t::middle_name_optional n ("John");
+
+if (n.present ())
+{
+ cout &lt;&lt; n.get () &lt;&lt; endl;
+}
+
+n.set ("Jane");
+n.reset ();
+ </pre>
+
+
+ <p>Unlike the <em>one</em> cardinality class, the accessor functions
+ for the <em>optional</em> class return read-only (constant) and
+ read-write references to the container instead of the element's
+ value directly. The modifier functions set the new value for the
+ element.</p>
+
+ <p>Finally, the <em>sequence</em> cardinality class covers all elements
+ that can occur more than once. In our example, the
+ <code>person</code> element in the <code>people_t</code> type
+ belongs to this cardinality class. The following code fragment shows
+ the type definitions as well as the accessor and modifier functions
+ that are generated for this element in the <code>people_t</code>
+ class:</p>
+
+ <pre class="c++">
+class people_t
+{
+ // person
+ //
+ typedef person_t person_type;
+ typedef xsd::sequence&lt;person_type> person_sequence;
+ typedef person_sequence::iterator person_iterator;
+ typedef person_sequence::const_iterator person_const_iterator;
+
+ const person_sequence&amp;
+ person () const;
+
+ person_sequence&amp;
+ person ();
+
+ void
+ person (const person_sequence&amp;);
+};
+ </pre>
+
+ <p>Identical to the other cardinality classes, <code>person_type</code>
+ is an alias for the element's type. The <code>person_sequence</code>
+ type is a sequence container for the element's values. It is based
+ on and has the same interface as <code>std::vector</code> and
+ therefore can be used in similar ways. The <code>person_iterator</code>
+ and <code>person_const_iterator</code> types are read-only
+ (constant) and read-write iterators for the <code>person_sequence</code>
+ container.</p>
+
+ <p>Similar to the <em>optional</em> cardinality class, the
+ accessor functions for the <em>sequence</em> class return
+ read-only (constant) and read-write references to the sequence
+ container. The modifier functions copies the entries from
+ the passed sequence.</p>
+
+ <p>C++/Tree is a "flattening" mapping in a sense that many levels of
+ nested compositors (<code>choice</code> and <code>sequence</code>),
+ all potentially with their own cardinalities, are in the end mapped
+ to a flat set of elements with one of the three cardinality classes
+ discussed above. While this results in a simple and easy to use API
+ for most types, in certain cases, the order of elements in the actual
+ XML documents is not preserved once parsed into the object model. To
+ overcome this limitation we can mark certain schema types, for which
+ content order is not sufficiently preserved, as ordered. For more
+ information on this functionality refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8.4">Section
+ 2.8.4, "Element Order"</a> in the C++/Tree Mapping User Manual.</p>
+
+ <p>For complex schemas with many levels of nested compositors
+ (<code>choice</code> and <code>sequence</code>) it can also
+ be hard to deduce the cardinality class of a particular element.
+ The generated Doxygen documentation can greatly help with
+ this task. For each element and attribute the documentation
+ clearly identifies its cardinality class. Alternatively, you
+ can study the generated header files to find out the cardinality
+ class of a particular attribute or element.</p>
+
+ <p>In the next sections we will examine how to access and modify
+ information stored in an object model using accessor and modifier
+ functions described in this section.</p>
+
+ <h2><a name="4.2">4.2 Accessing the Object Model</a></h2>
+
+ <p>In this section we will learn how to get to the information
+ stored in the object model for our person records vocabulary.
+ The following application accesses and prints the contents
+ of the <code>people.xml</code> file:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "people.hxx"
+
+using namespace std;
+
+int
+main ()
+{
+ unique_ptr&lt;people_t> ppl (people ("people.xml"));
+
+ // Iterate over individual person records.
+ //
+ people_t::person_sequence&amp; ps (ppl->person ());
+
+ for (people_t::person_iterator i (ps.begin ()); i != ps.end (); ++i)
+ {
+ person_t&amp; p (*i);
+
+ // Print names: first-name and last-name are required elements,
+ // middle-name is optional.
+ //
+ cout &lt;&lt; "name: " &lt;&lt; p.first_name () &lt;&lt; " ";
+
+ if (p.middle_name ().present ())
+ cout &lt;&lt; p.middle_name ().get () &lt;&lt; " ";
+
+ cout &lt;&lt; p.last_name () &lt;&lt; endl;
+
+ // Print gender, age, and id which are all required.
+ //
+ cout &lt;&lt; "gender: " &lt;&lt; p.gender () &lt;&lt; endl
+ &lt;&lt; "age: " &lt;&lt; p.age () &lt;&lt; endl
+ &lt;&lt; "id: " &lt;&lt; p.id () &lt;&lt; endl
+ &lt;&lt; endl;
+ }
+}
+ </pre>
+
+ <p>This code shows common patterns of accessing elements and attributes
+ with different cardinality classes. For the sequence element
+ (<code>person</code> in <code>people_t</code>) we first obtain a
+ reference to the container and then iterate over individual
+ records. The values of elements and attributes with the
+ <em>one</em> cardinality class (<code>first-name</code>,
+ <code>last-name</code>, <code>gender</code>, <code>age</code>,
+ and <code>id</code>) can be obtained directly by calling the
+ corresponding accessor functions. For the optional element
+ <code>middle-name</code> we first check if the value is present
+ and only then call <code>get()</code> to retrieve it.</p>
+
+ <p>Note that when we want to reduce typing by creating a variable
+ representing a fragment of the object model that we are currently
+ working with (<code>ps</code> and <code>p</code> above), we obtain
+ a reference to that fragment instead of making a potentially
+ expensive copy. This is generally a good rule to follow when
+ creating high-performance applications.</p>
+
+ <p>If we run the above application on our sample
+ <code>people.xml</code>, the output looks as follows:</p>
+
+ <pre class="terminal">
+name: John Doe
+gender: male
+age: 32
+id: 1
+
+name: Jane Mary Doe
+gender: female
+age: 28
+id: 2
+ </pre>
+
+
+ <h2><a name="4.3">4.3 Modifying the Object Model</a></h2>
+
+ <p>In this section we will learn how to modify the information
+ stored in the object model for our person records vocabulary.
+ The following application changes the contents of the
+ <code>people.xml</code> file:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "people.hxx"
+
+using namespace std;
+
+int
+main ()
+{
+ unique_ptr&lt;people_t> ppl (people ("people.xml"));
+
+ // Iterate over individual person records and increment
+ // the age.
+ //
+ people_t::person_sequence&amp; ps (ppl->person ());
+
+ for (people_t::person_iterator i (ps.begin ()); i != ps.end (); ++i)
+ {
+ // Alternative way: i->age ()++;
+ //
+ i->age (i->age () + 1);
+ }
+
+ // Add middle-name to the first record and remove it from
+ // the second.
+ //
+ person_t&amp; john (ps[0]);
+ person_t&amp; jane (ps[1]);
+
+ john.middle_name ("Mary");
+ jane.middle_name ().reset ();
+
+ // Add another John record.
+ //
+ ps.push_back (john);
+
+ // Serialize the modified object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "people.xsd";
+
+ people (cout, *ppl, map);
+}
+ </pre>
+
+ <p>The first modification the above application performs is iterating
+ over person records and incrementing the age value. This code
+ fragment shows how to modify the value of a required attribute
+ or element. The next modification shows how to set a new value
+ for the optional <code>middle-name</code> element as well
+ as clear its value. Finally the example adds a copy of the
+ John Doe record to the <code>person</code> element sequence.</p>
+
+ <p>Note that in this case using references for the <code>ps</code>,
+ <code>john</code>, and <code>jane</code> variables is no longer
+ a performance improvement but a requirement for the application
+ to function correctly. If we hadn't used references, all our changes
+ would have been made on copies without affecting the object model.</p>
+
+ <p>If we run the above application on our sample <code>people.xml</code>,
+ the output looks as follows:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0"?>
+&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd">
+
+ &lt;person id="1">
+ &lt;first-name>John&lt;/first-name>
+ &lt;middle-name>Mary&lt;/middle-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>33&lt;/age>
+ &lt;/person>
+
+ &lt;person id="2">
+ &lt;first-name>Jane&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>female&lt;/gender>
+ &lt;age>29&lt;/age>
+ &lt;/person>
+
+ &lt;person id="1">
+ &lt;first-name>John&lt;/first-name>
+ &lt;middle-name>Mary&lt;/middle-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>33&lt;/age>
+ &lt;/person>
+
+&lt;/people>
+ </pre>
+
+
+ <h2><a name="4.4">4.4 Creating the Object Model from Scratch</a></h2>
+
+ <p>In this section we will learn how to create a new object model
+ for our person records vocabulary. The following application
+ recreates the content of the original <code>people.xml</code>
+ file:</p>
+
+ <pre class="c++">
+#include &lt;iostream>
+#include "people.hxx"
+
+using namespace std;
+
+int
+main ()
+{
+ people_t ppl;
+ people_t::person_sequence&amp; ps (ppl.person ());
+
+ // Add the John Doe record.
+ //
+ ps.push_back (
+ person_t ("John", // first-name
+ "Doe", // last-name
+ gender_t::male, // gender
+ 32, // age
+ 1));
+
+ // Add the Jane Doe record.
+ //
+ ps.push_back (
+ person_t ("Jane", // first-name
+ "Doe", // last-name
+ gender_t::female, // gender
+ 28, // age
+ 2)); // id
+
+ // Add middle name to the Jane Doe record.
+ //
+ person_t&amp; jane (ps.back ());
+ jane.middle_name ("Mary");
+
+ // Serialize the object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "people.xsd";
+
+ people (cout, ppl, map);
+}
+ </pre>
+
+ <p>The only new part in the above application is the calls
+ to the <code>people_t</code> and <code>person_t</code>
+ constructors. As a general rule, for each C++ class
+ XSD generates a constructor with initializers
+ for each element and attribute belonging to the <em>one</em>
+ cardinality class. For our vocabulary, the following
+ constructors are generated:</p>
+
+ <pre class="c++">
+class person_t
+{
+ person_t (const first_name_type&amp;,
+ const last_name_type&amp;,
+ const gender_type&amp;,
+ const age_type&amp;,
+ const id_type&amp;);
+};
+
+class people_t
+{
+ people_t ();
+};
+ </pre>
+
+ <p>Note also that we set the <code>middle-name</code> element
+ on the Jane Doe record by obtaining a reference to that record
+ in the object model and setting the <code>middle-name</code>
+ value on it. This is a general rule that should be followed
+ in order to obtain the best performance: if possible,
+ direct modifications to the object model should be preferred
+ to modifications on temporaries with subsequent copying. The
+ following code fragment shows a semantically equivalent but
+ slightly slower version:</p>
+
+ <pre class="c++">
+// Add the Jane Doe record.
+//
+person_t jane ("Jane", // first-name
+ "Doe", // last-name
+ gender_t::female, // gender
+ 28, // age
+ 2); // id
+
+jane.middle_name ("Mary");
+
+ps.push_back (jane);
+ </pre>
+
+ <p>We can also go one step further to reduce copying and improve
+ the performance of our application by using the non-copying
+ <code>push_back()</code> function which assumes ownership
+ of the passed objects:</p>
+
+ <pre class="c++">
+// Add the Jane Doe record. C++11 version
+//
+unique_ptr&lt;person_t> jane_p (
+ new person_t ("Jane", // first-name
+ "Doe", // last-name
+ gender_t::female, // gender
+ 28, // age
+ 2)); // id
+ps.push_back (std::move (jane_p)); // assumes ownership
+
+// Add the John Doe record. C++98 version.
+//
+auto_ptr&lt;person_t> john_p (
+ new person_t ("John", // first-name
+ "Doe", // last-name
+ gender_t::male, // gender
+ 32, // age
+ 1));
+ps.push_back (john_p); // assumes ownership
+ </pre>
+
+ <p>For more information on the non-copying modifier functions refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8">Section
+ 2.8, "Mapping for Local Elements and Attributes"</a> in the C++/Tree Mapping
+ User Manual. The above application produces the following output:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd">
+
+ &lt;person id="1">
+ &lt;first-name>John&lt;/first-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>male&lt;/gender>
+ &lt;age>32&lt;/age>
+ &lt;/person>
+
+ &lt;person id="2">
+ &lt;first-name>Jane&lt;/first-name>
+ &lt;middle-name>Mary&lt;/middle-name>
+ &lt;last-name>Doe&lt;/last-name>
+ &lt;gender>female&lt;/gender>
+ &lt;age>28&lt;/age>
+ &lt;/person>
+
+&lt;/people>
+ </pre>
+
+ <h2><a name="4.5">4.5 Mapping for the Built-in XML Schema Types</a></h2>
+
+ <p>Our person record vocabulary uses several built-in XML Schema
+ types: <code>string</code>, <code>short</code>, and
+ <code>unsignedInt</code>. Until now we haven't talked about
+ the mapping of built-in XML Schema types to C++ types and how
+ to work with them. This section provides an overview
+ of the built-in types. For more detailed information refer
+ to <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.5">Section
+ 2.5, "Mapping for Built-in Data Types"</a> in the C++/Tree Mapping
+ User Manual.</p>
+
+ <p>In XML Schema, built-in types are defined in the XML Schema namespace.
+ By default, the C++/Tree mapping maps this namespace to C++
+ namespace <code>xml_schema</code> (this mapping can be altered
+ with the <code>--namespace-map</code> option). The following table
+ summarizes the mapping of XML Schema built-in types to C++ types:</p>
+
+ <!-- border="1" is necessary for html2ps -->
+ <table id="builtin" border="1">
+ <tr>
+ <th>XML Schema type</th>
+ <th>Alias in the <code>xml_schema</code> namespace</th>
+ <th>C++ type</th>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-length integral types</th>
+ </tr>
+ <!-- 8-bit -->
+ <tr>
+ <td><code>byte</code></td>
+ <td><code>byte</code></td>
+ <td><code>signed&nbsp;char</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedByte</code></td>
+ <td><code>unsigned_byte</code></td>
+ <td><code>unsigned&nbsp;char</code></td>
+ </tr>
+
+ <!-- 16-bit -->
+ <tr>
+ <td><code>short</code></td>
+ <td><code>short_</code></td>
+ <td><code>short</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedShort</code></td>
+ <td><code>unsigned_short</code></td>
+ <td><code>unsigned&nbsp;short</code></td>
+ </tr>
+
+ <!-- 32-bit -->
+ <tr>
+ <td><code>int</code></td>
+ <td><code>int_</code></td>
+ <td><code>int</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedInt</code></td>
+ <td><code>unsigned_int</code></td>
+ <td><code>unsigned&nbsp;int</code></td>
+ </tr>
+
+ <!-- 64-bit -->
+ <tr>
+ <td><code>long</code></td>
+ <td><code>long_</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedLong</code></td>
+ <td><code>unsigned_long</code></td>
+ <td><code>unsigned&nbsp;long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-length integral types</th>
+ </tr>
+ <tr>
+ <td><code>integer</code></td>
+ <td><code>integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonPositiveInteger</code></td>
+ <td><code>non_positive_integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonNegativeInteger</code></td>
+ <td><code>non_negative_integer</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>positiveInteger</code></td>
+ <td><code>positive_integer</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>negativeInteger</code></td>
+ <td><code>negative_integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">boolean types</th>
+ </tr>
+ <tr>
+ <td><code>boolean</code></td>
+ <td><code>boolean</code></td>
+ <td><code>bool</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>float</code></td>
+ <td><code>float_</code></td>
+ <td><code>float</code></td>
+ </tr>
+ <tr>
+ <td><code>double</code></td>
+ <td><code>double_</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>decimal</code></td>
+ <td><code>decimal</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">string types</th>
+ </tr>
+ <tr>
+ <td><code>string</code></td>
+ <td><code>string</code></td>
+ <td>type derived from <code>std::basic_string</code></td>
+ </tr>
+ <tr>
+ <td><code>normalizedString</code></td>
+ <td><code>normalized_string</code></td>
+ <td>type derived from <code>string</code></td>
+ </tr>
+ <tr>
+ <td><code>token</code></td>
+ <td><code>token</code></td>
+ <td>type&nbsp;derived&nbsp;from&nbsp;<code>normalized_string</code></td>
+ </tr>
+ <tr>
+ <td><code>Name</code></td>
+ <td><code>name</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+ <tr>
+ <td><code>NMTOKEN</code></td>
+ <td><code>nmtoken</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+ <tr>
+ <td><code>NMTOKENS</code></td>
+ <td><code>nmtokens</code></td>
+ <td>type derived from <code>sequence&lt;nmtoken></code></td>
+ </tr>
+ <tr>
+ <td><code>NCName</code></td>
+ <td><code>ncname</code></td>
+ <td>type derived from <code>name</code></td>
+ </tr>
+ <tr>
+ <td><code>language</code></td>
+ <td><code>language</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">qualified name</th>
+ </tr>
+ <tr>
+ <td><code>QName</code></td>
+ <td><code>qname</code></td>
+ <td><code>xml_schema::qname</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">ID/IDREF types</th>
+ </tr>
+ <tr>
+ <td><code>ID</code></td>
+ <td><code>id</code></td>
+ <td>type derived from <code>ncname</code></td>
+ </tr>
+ <tr>
+ <td><code>IDREF</code></td>
+ <td><code>idref</code></td>
+ <td>type derived from <code>ncname</code></td>
+ </tr>
+ <tr>
+ <td><code>IDREFS</code></td>
+ <td><code>idrefs</code></td>
+ <td>type derived from <code>sequence&lt;idref></code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">URI types</th>
+ </tr>
+ <tr>
+ <td><code>anyURI</code></td>
+ <td><code>uri</code></td>
+ <td>type derived from <code>std::basic_string</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">binary types</th>
+ </tr>
+ <tr>
+ <td><code>base64Binary</code></td>
+ <td><code>base64_binary</code></td>
+ <td><code>xml_schema::base64_binary</code></td>
+ </tr>
+ <tr>
+ <td><code>hexBinary</code></td>
+ <td><code>hex_binary</code></td>
+ <td><code>xml_schema::hex_binary</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">date/time types</th>
+ </tr>
+ <tr>
+ <td><code>date</code></td>
+ <td><code>date</code></td>
+ <td><code>xml_schema::date</code></td>
+ </tr>
+ <tr>
+ <td><code>dateTime</code></td>
+ <td><code>date_time</code></td>
+ <td><code>xml_schema::date_time</code></td>
+ </tr>
+ <tr>
+ <td><code>duration</code></td>
+ <td><code>duration</code></td>
+ <td><code>xml_schema::duration</code></td>
+ </tr>
+ <tr>
+ <td><code>gDay</code></td>
+ <td><code>gday</code></td>
+ <td><code>xml_schema::gday</code></td>
+ </tr>
+ <tr>
+ <td><code>gMonth</code></td>
+ <td><code>gmonth</code></td>
+ <td><code>xml_schema::gmonth</code></td>
+ </tr>
+ <tr>
+ <td><code>gMonthDay</code></td>
+ <td><code>gmonth_day</code></td>
+ <td><code>xml_schema::gmonth_day</code></td>
+ </tr>
+ <tr>
+ <td><code>gYear</code></td>
+ <td><code>gyear</code></td>
+ <td><code>xml_schema::gyear</code></td>
+ </tr>
+ <tr>
+ <td><code>gYearMonth</code></td>
+ <td><code>gyear_month</code></td>
+ <td><code>xml_schema::gyear_month</code></td>
+ </tr>
+ <tr>
+ <td><code>time</code></td>
+ <td><code>time</code></td>
+ <td><code>xml_schema::time</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">entity types</th>
+ </tr>
+ <tr>
+ <td><code>ENTITY</code></td>
+ <td><code>entity</code></td>
+ <td>type derived from <code>name</code></td>
+ </tr>
+ <tr>
+ <td><code>ENTITIES</code></td>
+ <td><code>entities</code></td>
+ <td>type derived from <code>sequence&lt;entity></code></td>
+ </tr>
+ </table>
+
+ <p>As you can see from the table above a number of built-in
+ XML Schema types are mapped to fundamental C++ types such
+ as <code>int</code> or <code>bool</code>. All string-based
+ XML Schema types are mapped to C++ types that are derived
+ from either <code>std::string</code> or
+ <code>std::wstring</code>, depending on the character
+ type selected. For access and modification purposes these
+ types can be treated as <code>std::string</code>. A number
+ of built-in types, such as <code>qname</code>, the binary
+ types, and the date/time types do not have suitable
+ fundamental or standard C++ types to map to. As a result,
+ these types are implemented from scratch in the XSD runtime.
+ For more information on their interfaces refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.5">Section
+ 2.5, "Mapping for Built-in Data Types"</a> in the C++/Tree Mapping
+ User Manual.</p>
+
+
+ <!-- Chapater 5 -->
+
+
+ <h1><a name="5">5 Parsing</a></h1>
+
+ <p>We have already seen how to parse XML to an object model in this guide
+ before. In this chapter we will discuss the parsing topic in more
+ detail.</p>
+
+ <p>By default, the C++/Tree mapping provides a total of 14 overloaded
+ parsing functions. They differ in the input methods used to
+ read XML as well as the error reporting mechanisms. It is also possible
+ to generate types for root elements instead of parsing and serialization
+ functions. This may be useful if your XML vocabulary has multiple
+ root elements. For more information on element types refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.9">Section
+ 2.9, "Mapping for Global Elements"</a> in the C++/Tree Mapping User
+ Manual.</p>
+
+
+ <p>In this section we will discuss the most commonly used versions of
+ the parsing functions. For a comprehensive description of parsing
+ refer to <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#3">Chapter
+ 3, "Parsing"</a> in the C++/Tree Mapping User Manual. For the <code>people</code>
+ global element from our person record vocabulary, we will concentrate
+ on the following three parsing functions:</p>
+
+ <pre class="c++">
+std::[unique|auto]_ptr&lt;people_t>
+people (const std::string&amp; uri,
+ xml_schema::flags f = 0,
+ const xml_schema::properties&amp; p = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;people_t>
+people (std::istream&amp; is,
+ xml_schema::flags f = 0,
+ const xml_schema::properties&amp; p = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;people_t>
+people (std::istream&amp; is,
+ const std::string&amp; resource_id,
+ xml_schema::flags f = 0,
+ const xml_schema::properties&amp; p = ::xml_schema::properties ());
+ </pre>
+
+ <p>The first function parses a local file or a URI. We have already
+ used this parsing function in the previous chapters. The second
+ and third functions read XML from a standard input stream. The
+ last function also requires a resource id. This id is used to
+ identify the XML document being parser in diagnostics messages
+ as well as to resolve relative paths to other documents (for example,
+ schemas) that might be referenced from the XML document.</p>
+
+ <p>The last two arguments to all three parsing functions are parsing
+ flags and properties. The flags argument provides a number of ways
+ to fine-tune the parsing process. The properties argument allows
+ to pass additional information to the parsing functions. We will
+ use these two arguments in <a href="#5.1">Section 5.1, "XML Schema
+ Validation and Searching"</a> below. All three functions return
+ the object model as either <code>std::unique_ptr</code> (C++11) or
+ <code>std::auto_ptr</code> (C++98), depending on the C++ standard
+ selected (<code>--std</code> XSD compiler option). The following
+ example shows how we can use the above parsing functions:</p>
+
+ <pre class="c++">
+using std::unique_ptr;
+
+// Parse a local file or URI.
+//
+unique_ptr&lt;people_t> p1 (people ("people.xml"));
+unique_ptr&lt;people_t> p2 (people ("http://example.com/people.xml"));
+
+// Parse a local file via ifstream.
+//
+std::ifstream ifs ("people.xml");
+unique_ptr&lt;people_t> p3 (people (ifs, "people.xml"));
+
+// Parse an XML string.
+//
+std::string str ("..."); // XML in a string.
+std::istringstream iss (str);
+unique_ptr&lt;people_t> p4 (people (iss));
+ </pre>
+
+
+ <h2><a name="5.1">5.1 XML Schema Validation and Searching</a></h2>
+
+ <p>The C++/Tree mapping relies on the underlying Xerces-C++ XML
+ parser for full XML document validation. The XML Schema
+ validation is enabled by default and can be disabled by
+ passing the <code>xml_schema::flags::dont_validate</code>
+ flag to the parsing functions, for example:</p>
+
+ <pre class="c++">
+unique_ptr&lt;people_t> p (
+ people ("people.xml", xml_schema::flags::dont_validate));
+ </pre>
+
+ <p>Even when XML Schema validation is disabled, the generated
+ code still performs a number of checks to prevent
+ construction of an inconsistent object model (for example, an
+ object model with missing required attributes or elements).</p>
+
+ <p>When XML Schema validation is enabled, the XML parser needs
+ to locate a schema to validate against. There are several
+ methods to provide the schema location information to the
+ parser. The easiest and most commonly used method is to
+ specify schema locations in the XML document itself
+ with the <code>schemaLocation</code> or
+ <code>noNamespaceSchemaLocation</code> attributes, for example:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd"
+ xsi:schemaLocation="http://www.w3.org/XML/1998/namespace xml.xsd">
+ </pre>
+
+ <p>As you might have noticed, we used this method in all the sample XML
+ documents presented in this guide up until now. Note that the
+ schema locations specified with these two attributes are relative
+ to the document's path unless they are absolute URIs (that is
+ start with <code>http://</code>, <code>file://</code>, etc.).
+ In particular, if you specify just file names as your schema
+ locations, as we did above, then the schemas should reside in
+ the same directory as the XML document itself.</p>
+
+ <p>Another method of providing the schema location information
+ is via the <code>xml_schema::properties</code> argument, as
+ shown in the following example:</p>
+
+ <pre class="c++">
+xml_schema::properties props;
+props.no_namespace_schema_location ("people.xsd");
+props.schema_location ("http://www.w3.org/XML/1998/namespace", "xml.xsd");
+
+unique_ptr&lt;people_t> p (people ("people.xml", 0, props));
+ </pre>
+
+ <p>The schema locations provided with this method overrides
+ those specified in the XML document. As with the previous
+ method, the schema locations specified this way are
+ relative to the document's path unless they are absolute URIs.
+ In particular, if you want to use local schemas that are
+ not related to the document being parsed, then you will
+ need to use the <code>file://</code> URI. The following
+ example shows how to use schemas that reside in the current
+ working directory:</p>
+
+ <pre class="c++">
+#include &lt;unistd.h> // getcwd
+#include &lt;limits.h> // PATH_MAX
+
+char cwd[PATH_MAX];
+if (getcwd (cwd, PATH_MAX) == 0)
+{
+ // Buffer too small?
+}
+
+xml_schema::properties props;
+
+props.no_namespace_schema_location (
+ "file:///" + std::string (cwd) + "/people.xsd");
+
+props.schema_location (
+ "http://www.w3.org/XML/1998/namespace",
+ "file:///" + std::string (cwd) + "/xml.xsd");
+
+unique_ptr&lt;people_t> p (people ("people.xml", 0, props));
+ </pre>
+
+ <p>A third method is the most useful if you are planning to parse
+ several XML documents of the same vocabulary. In that case
+ it may be beneficial to pre-parse and cache the schemas in
+ the XML parser which can then be used to parse all documents
+ without re-parsing the schemas. For more information on
+ this method refer to the <code>caching</code> example in the
+ <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package.
+ It is also possible to convert the schemas into a pre-compiled
+ binary representation and embed this representation directly into
+ the application executable. With this approach your application can
+ perform XML Schema validation without depending on any external
+ schema files. For more information on how to achieve this refer to
+ the <code>embedded</code> example in the <code>cxx/tree/</code>
+ directory in the <a href="https://cppget.org/xsd-examples">xsd-examples</a>
+ package.</p>
+
+ <p>When the XML parser cannot locate a schema for the
+ XML document, the validation fails and XML document
+ elements and attributes for which schema definitions could
+ not be located are reported in the diagnostics. For
+ example, if we remove the <code>noNamespaceSchemaLocation</code>
+ attribute in <code>people.xml</code> from the previous chapter,
+ then we will get the following diagnostics if we try to parse
+ this file with validation enabled:</p>
+
+ <pre class="terminal">
+people.xml:2:63 error: no declaration found for element 'people'
+people.xml:4:18 error: no declaration found for element 'person'
+people.xml:4:18 error: attribute 'id' is not declared for element 'person'
+people.xml:5:17 error: no declaration found for element 'first-name'
+people.xml:6:18 error: no declaration found for element 'middle-name'
+people.xml:7:16 error: no declaration found for element 'last-name'
+people.xml:8:13 error: no declaration found for element 'gender'
+people.xml:9:10 error: no declaration found for element 'age'
+ </pre>
+
+ <h2><a name="5.2">5.2 Error Handling</a></h2>
+
+ <p>The parsing functions offer a number of ways to handle error conditions
+ with the C++ exceptions being the most commonly used mechanism. All
+ C++/Tree exceptions derive from common base <code>xml_schema::exception</code>
+ which in turn derives from <code>std::exception</code>. The easiest
+ way to uniformly handle all possible C++/Tree exceptions and print
+ detailed information about the error is to catch and print
+ <code>xml_schema::exception</code>, as shown in the following
+ example:</p>
+
+ <pre class="c++">
+try
+{
+ unique_ptr&lt;people_t> p (people ("people.xml"));
+}
+catch (const xml_schema::exception&amp; e)
+{
+ cerr &lt;&lt; e &lt;&lt; endl;
+}
+ </pre>
+
+ <p>Each individual C++/Tree exception also allows you to obtain
+ error details programmatically. For example, the
+ <code>xml_schema::parsing</code> exception is thrown when
+ the XML parsing and validation in the underlying XML parser
+ fails. It encapsulates various diagnostics information
+ such as the file name, line and column numbers, as well as the
+ error or warning message for each entry. For more information
+ about this and other exceptions that can be thrown during
+ parsing, refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#3.3">Section
+ 3.3, "Error Handling"</a> in the C++/Tree Mapping
+ User Manual.</p>
+
+ <p>Note that if you are parsing <code>std::istream</code> on which
+ exceptions are not enabled, then you will need to check the
+ stream state after the call to the parsing function in order
+ to detect any possible stream failures, for example:</p>
+
+ <pre class="c++">
+std::ifstream ifs ("people.xml");
+
+if (ifs.fail ())
+{
+ cerr &lt;&lt; "people.xml: unable to open" &lt;&lt; endl;
+ return 1;
+}
+
+unique_ptr&lt;people_t> p (people (ifs, "people.xml"));
+
+if (ifs.fail ())
+{
+ cerr &lt;&lt; "people.xml: read error" &lt;&lt; endl;
+ return 1;
+}
+ </pre>
+
+ <p>The above example can be rewritten to use exceptions as
+ shown below:</p>
+
+ <pre class="c++">
+try
+{
+ std::ifstream ifs;
+ ifs.exceptions (std::ifstream::badbit | std::ifstream::failbit);
+ ifs.open ("people.xml");
+
+ unique_ptr&lt;people_t> p (people (ifs, "people.xml"));
+}
+catch (const std::ifstream::failure&amp;)
+{
+ cerr &lt;&lt; "people.xml: unable to open or read error" &lt;&lt; endl;
+ return 1;
+}
+ </pre>
+
+
+ <!-- Chapater 6 -->
+
+
+ <h1><a name="6">6 Serialization</a></h1>
+
+ <p>We have already seen how to serialize an object model back to XML
+ in this guide before. In this chapter we will discuss the
+ serialization topic in more detail.</p>
+
+ <p>By default, the C++/Tree mapping provides a total of 8 overloaded
+ serialization functions. They differ in the output methods used to write
+ XML as well as the error reporting mechanisms. It is also possible to
+ generate types for root elements instead of parsing and serialization
+ functions. This may be useful if your XML vocabulary has multiple
+ root elements. For more information on element types refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.9">Section
+ 2.9, "Mapping for Global Elements"</a> in the C++/Tree Mapping User
+ Manual.</p>
+
+
+ <p>In this section we will discuss the most commonly
+ used version of serialization functions. For a comprehensive description
+ of serialization refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#4">Chapter
+ 4, "Serialization"</a> in the C++/Tree Mapping User Manual. For the
+ <code>people</code> global element from our person record vocabulary,
+ we will concentrate on the following serialization function:</p>
+
+ <pre class="c++">
+void
+people (std::ostream&amp; os,
+ const people_t&amp; x,
+ const xml_schema::namespace_infomap&amp; map =
+ xml_schema::namespace_infomap (),
+ const std::string&amp; encoding = "UTF-8",
+ xml_schema::flags f = 0);
+ </pre>
+
+ <p>This function serializes the object model passed as the second
+ argument to the standard output stream passed as the first
+ argument. The third argument is a namespace information map
+ which we will discuss in more detail in the next section.
+ The fourth argument is a character encoding that the resulting
+ XML document should be in. Possible valid values for this
+ argument are "US-ASCII", "ISO8859-1", "UTF-8", "UTF-16BE",
+ "UTF-16LE", "UCS-4BE", and "UCS-4LE". Finally, the flags
+ argument allows fine-tuning of the serialization process.
+ The following example shows how we can use the above serialization
+ function:</p>
+
+ <pre class="c++">
+people_t&amp; p = ...
+
+xml_schema::namespace_infomap map;
+map[""].schema = "people.xsd";
+
+// Serialize to stdout.
+//
+people (std::cout, p, map);
+
+// Serialize to a file.
+//
+std::ofstream ofs ("people.xml");
+people (ofs, p, map);
+
+// Serialize to a string.
+//
+std::ostringstream oss;
+people (oss, p, map);
+std::string xml (oss.str ());
+ </pre>
+
+
+ <h2><a name="6.1">6.1 Namespace and Schema Information</a></h2>
+
+ <p>While XML serialization can be done just from the object
+ model alone, it is often desirable to assign meaningful
+ prefixes to XML namespaces used in the vocabulary as
+ well as to provide the schema location information.
+ This is accomplished by passing the namespace information
+ map to the serialization function. The key in this map is
+ a namespace prefix that should be assigned to an XML namespace
+ specified in the <code>name</code> variable of the
+ map value. You can also assign an optional schema location for
+ this namespace in the <code>schema</code> variable. Based
+ on each key-value entry in this map, the serialization
+ function adds two attributes to the resulting XML document:
+ the namespace-prefix mapping attribute and schema location
+ attribute. The empty prefix indicates that the namespace
+ should be mapped without a prefix. For example, the following
+ map:</p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map[""].name = "http://www.example.com/example";
+map[""].schema = "example.xsd";
+
+map["x"].name = "http://www.w3.org/XML/1998/namespace";
+map["x"].schema = "xml.xsd";
+ </pre>
+
+ <p>Results in the following XML document:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;example
+ xmlns="http://www.example.com/example"
+ xmlns:x="http://www.w3.org/XML/1998/namespace"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.example.com/example example.xsd
+ http://www.w3.org/XML/1998/namespace xml.xsd">
+ </pre>
+
+ <p>The empty namespace indicates that the vocabulary has no target
+ namespace. For example, the following map results in only the
+ <code>noNamespaceSchemaLocation</code> attribute being added:</p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map[""].name = "";
+map[""].schema = "example.xsd";
+ </pre>
+
+ <h2><a name="6.2">6.2 Error Handling</a></h2>
+
+ <p>Similar to the parsing functions, the serialization functions offer a
+ number of ways to handle error conditions with the C++ exceptions being
+ the most commonly used mechanisms. As with parsing, the easiest way to
+ uniformly handle all possible serialization exceptions and print
+ detailed information about the error is to catch and print
+ <code>xml_schema::exception</code>:</p>
+
+ <pre class="c++">
+try
+{
+ people_t&amp; p = ...
+
+ xml_schema::namespace_infomap map;
+ map[""].schema = "people.xsd";
+
+ people (std::cout, p, map));
+}
+catch (const xml_schema::exception&amp; e)
+{
+ cerr &lt;&lt; e &lt;&lt; endl;
+}
+ </pre>
+
+ <p>The most commonly encountered serialization exception is
+ <code>xml_schema::serialization</code>. It is thrown
+ when the XML serialization in the underlying XML writer
+ fails. It encapsulates various diagnostics information
+ such as the file name, line and column numbers, as well as the
+ error or warning message for each entry. For more information
+ about this and other exceptions that can be thrown during
+ serialization, refer to
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#4.4">Section
+ 4.4, "Error Handling"</a> in the C++/Tree Mapping
+ User Manual.</p>
+
+ <p>Note that if you are serializing to <code>std::ostream</code> on
+ which exceptions are not enabled, then you will need to check the
+ stream state after the call to the serialization function in order
+ to detect any possible stream failures, for example:</p>
+
+ <pre class="c++">
+std::ofstream ofs ("people.xml");
+
+if (ofs.fail ())
+{
+ cerr &lt;&lt; "people.xml: unable to open" &lt;&lt; endl;
+ return 1;
+}
+
+people (ofs, p, map));
+
+if (ofs.fail ())
+{
+ cerr &lt;&lt; "people.xml: write error" &lt;&lt; endl;
+ return 1;
+}
+ </pre>
+
+ <p>The above example can be rewritten to use exceptions as
+ shown below:</p>
+
+ <pre class="c++">
+try
+{
+ std::ofstream ofs;
+ ofs.exceptions (std::ofstream::badbit | std::ofstream::failbit);
+ ofs.open ("people.xml");
+
+ people (ofs, p, map));
+}
+catch (const std::ofstream::failure&amp;)
+{
+ cerr &lt;&lt; "people.xml: unable to open or write error" &lt;&lt; endl;
+ return 1;
+}
+ </pre>
+
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/doc/cxx/tree/manual/index.xhtml b/doc/cxx/tree/manual/index.xhtml
new file mode 100644
index 0000000..f455bff
--- /dev/null
+++ b/doc/cxx/tree/manual/index.xhtml
@@ -0,0 +1,6826 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+ <title>C++/Tree Mapping User Manual</title>
+
+ <meta name="copyright" content="&#169; 2005-2023 Code Synthesis"/>
+ <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,tree,serialization,guide,manual,examples"/>
+ <meta name="description" content="C++/Tree Mapping User Manual"/>
+ <meta name="revision" content="4.1.0"/>
+
+ <link rel="stylesheet" type="text/css" href="../../../default.css" />
+
+<style type="text/css">
+ pre {
+ padding : 0 0 0 0em;
+ margin : 0em 0em 0em 0;
+
+ font-size : 102%
+ }
+
+ body {
+ min-width: 48em;
+ }
+
+ h1 {
+ font-weight: bold;
+ font-size: 200%;
+ }
+
+ h2 {
+ font-weight : bold;
+ font-size : 150%;
+
+ padding-top : 0.8em;
+ }
+
+ h3 {
+ font-size : 130%;
+ padding-top : 0.8em;
+ }
+
+ /* Adjust indentation for three levels. */
+ #container {
+ max-width: 48em;
+ }
+
+ #content {
+ padding: 0 0.1em 0 4em;
+ /*background-color: red;*/
+ }
+
+ #content h1 {
+ margin-left: -2.06em;
+ }
+
+ #content h2 {
+ margin-left: -1.33em;
+ }
+
+ /* Title page */
+
+ #titlepage {
+ padding: 2em 0 1em 0;
+ border-bottom: 1px solid black;
+ }
+
+ #titlepage #title {
+ font-weight: bold;
+ font-size: 200%;
+ text-align: center;
+ padding: 1em 0 2em 0;
+ }
+
+ /* Lists */
+ ul.list li {
+ padding-top : 0.3em;
+ padding-bottom : 0.3em;
+ }
+
+
+ /* Built-in table */
+ #builtin {
+ margin: 2em 0 2em 0;
+
+ border-collapse : collapse;
+ border : 1px solid;
+ border-color : #000000;
+
+ font-size : 11px;
+ line-height : 14px;
+ }
+
+ #builtin th, #builtin td {
+ border: 1px solid;
+ padding : 0.9em 0.9em 0.7em 0.9em;
+ }
+
+ #builtin th {
+ background : #cde8f6;
+ }
+
+ #builtin td {
+ text-align: left;
+ }
+
+
+ /* default-fixed */
+ #default-fixed {
+ margin: 2em 0 2em 0;
+
+ border-collapse : collapse;
+ border : 1px solid;
+ border-color : #000000;
+
+ font-size : 11px;
+ line-height : 14px;
+ }
+
+ #default-fixed th, #default-fixed td {
+ border: 1px solid;
+ padding : 0.9em 0.9em 0.7em 0.9em;
+ }
+
+ #default-fixed th {
+ background : #cde8f6;
+ }
+
+ #default-fixed td {
+ text-align: center;
+ }
+
+
+ /* */
+ dl dt {
+ padding : 0.8em 0 0 0;
+ }
+
+
+ /* TOC */
+ table.toc {
+ border-style : none;
+ border-collapse : separate;
+ border-spacing : 0;
+
+ margin : 0.2em 0 0.2em 0;
+ padding : 0 0 0 0;
+ }
+
+ table.toc tr {
+ padding : 0 0 0 0;
+ margin : 0 0 0 0;
+ }
+
+ table.toc * td, table.toc * th {
+ border-style : none;
+ margin : 0 0 0 0;
+ vertical-align : top;
+ }
+
+ table.toc * th {
+ font-weight : normal;
+ padding : 0em 0.1em 0em 0;
+ text-align : left;
+ white-space : nowrap;
+ }
+
+ table.toc * table.toc th {
+ padding-left : 1em;
+ }
+
+ table.toc * td {
+ padding : 0em 0 0em 0.7em;
+ text-align : left;
+ }
+</style>
+
+
+</head>
+
+<body>
+<div id="container">
+ <div id="content">
+
+ <div class="noprint">
+
+ <div id="titlepage">
+ <div id="title">C++/Tree Mapping User Manual</div>
+
+ <p>Copyright &#169; 2005-2023 Code Synthesis.</p>
+
+ <p>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href="https://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml">XHTML</a>,
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf">PDF</a>, and
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps">PostScript</a>.</p>
+ </div>
+
+ <h1>Table of Contents</h1>
+
+ <table class="toc">
+ <tr>
+ <th></th><td><a href="#0">Preface</a>
+ <table class="toc">
+ <tr><th></th><td><a href="#0.1">About This Document</a></td></tr>
+ <tr><th></th><td><a href="#0.2">More Information</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>1</th><td><a href="#1">Introduction</a></td>
+ </tr>
+
+ <tr>
+ <th>2</th><td><a href="#2">C++/Tree Mapping</a>
+ <table class="toc">
+ <tr>
+ <th>2.1</th><td><a href="#2.1">Preliminary Information</a>
+ <table class="toc">
+ <tr><th>2.1.1</th><td><a href="#2.1.1">C++ Standard</a></td></tr>
+ <tr><th>2.1.2</th><td><a href="#2.1.2">Identifiers</a></td></tr>
+ <tr><th>2.1.3</th><td><a href="#2.1.3">Character Type and Encoding</a></td></tr>
+ <tr><th>2.1.4</th><td><a href="#2.1.4">XML Schema Namespace</a></td></tr>
+ <tr><th>2.1.5</th><td><a href="#2.1.5">Anonymous Types</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.2</th><td><a href="#2.2">Error Handling</a>
+ <table class="toc">
+ <tr><th>2.2.1</th><td><a href="#2.2.1"><code>xml_schema::duplicate_id</code></a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.3</th><td><a href="#2.3">Mapping for <code>import</code> and <code>include</code></a>
+ <table class="toc">
+ <tr><th>2.3.1</th><td><a href="#2.3.1">Import</a></td></tr>
+ <tr><th>2.3.2</th><td><a href="#2.3.2">Inclusion with Target Namespace</a></td></tr>
+ <tr><th>2.3.3</th><td><a href="#2.3.3">Inclusion without Target Namespace</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.4</th><td><a href="#2.4">Mapping for Namespaces</a></td>
+ </tr>
+ <tr>
+ <th>2.5</th><td><a href="#2.5">Mapping for Built-in Data Types</a>
+ <table class="toc">
+ <tr><th>2.5.1</th><td><a href="#2.5.1">Inheritance from Built-in Data Types</a></td></tr>
+ <tr><th>2.5.2</th><td><a href="#2.5.2">Mapping for <code>anyType</code></a></td></tr>
+ <tr><th>2.5.3</th><td><a href="#2.5.3">Mapping for <code>anySimpleType</code></a></td></tr>
+ <tr><th>2.5.4</th><td><a href="#2.5.4">Mapping for <code>QName</code></a></td></tr>
+ <tr><th>2.5.5</th><td><a href="#2.5.5">Mapping for <code>IDREF</code></a></td></tr>
+ <tr><th>2.5.6</th><td><a href="#2.5.6">Mapping for <code>base64Binary</code> and <code>hexBinary</code></a></td></tr>
+ <tr><th>2.5.7</th><td><a href="#2.5.7">Time Zone Representation</a></td></tr>
+ <tr><th>2.5.8</th><td><a href="#2.5.8">Mapping for <code>date</code></a></td></tr>
+ <tr><th>2.5.9</th><td><a href="#2.5.9">Mapping for <code>dateTime</code></a></td></tr>
+ <tr><th>2.5.10</th><td><a href="#2.5.10">Mapping for <code>duration</code></a></td></tr>
+ <tr><th>2.5.11</th><td><a href="#2.5.11">Mapping for <code>gDay</code></a></td></tr>
+ <tr><th>2.5.12</th><td><a href="#2.5.12">Mapping for <code>gMonth</code></a></td></tr>
+ <tr><th>2.5.13</th><td><a href="#2.5.13">Mapping for <code>gMonthDay</code></a></td></tr>
+ <tr><th>2.5.14</th><td><a href="#2.5.14">Mapping for <code>gYear</code></a></td></tr>
+ <tr><th>2.5.15</th><td><a href="#2.5.15">Mapping for <code>gYearMonth</code></a></td></tr>
+ <tr><th>2.5.16</th><td><a href="#2.5.16">Mapping for <code>time</code></a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.6</th><td><a href="#2.6">Mapping for Simple Types</a>
+ <table class="toc">
+ <tr><th>2.6.1</th><td><a href="#2.6.1">Mapping for Derivation by Restriction</a></td></tr>
+ <tr><th>2.6.2</th><td><a href="#2.6.2">Mapping for Enumerations</a></td></tr>
+ <tr><th>2.6.3</th><td><a href="#2.6.3">Mapping for Derivation by List</a></td></tr>
+ <tr><th>2.6.4</th><td><a href="#2.6.4">Mapping for Derivation by Union</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.7</th><td><a href="#2.7">Mapping for Complex Types</a>
+ <table class="toc">
+ <tr><th>2.7.1</th><td><a href="#2.7.1">Mapping for Derivation by Extension</a></td></tr>
+ <tr><th>2.7.2</th><td><a href="#2.7.2">Mapping for Derivation by Restriction</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.8</th><td><a href="#2.8">Mapping for Local Elements and Attributes</a>
+ <table class="toc">
+ <tr><th>2.8.1</th><td><a href="#2.8.1">Mapping for Members with the One Cardinality Class</a></td></tr>
+ <tr><th>2.8.2</th><td><a href="#2.8.2">Mapping for Members with the Optional Cardinality Class</a></td></tr>
+ <tr><th>2.8.3</th><td><a href="#2.8.3">Mapping for Members with the Sequence Cardinality Class</a></td></tr>
+ <tr><th>2.8.4</th><td><a href="#2.8.4">Element Order</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.9</th><td><a href="#2.9">Mapping for Global Elements</a>
+ <table class="toc">
+ <tr><th>2.9.1</th><td><a href="#2.9.1">Element Types</a></td></tr>
+ <tr><th>2.9.2</th><td><a href="#2.9.2">Element Map</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.10</th><td><a href="#2.10">Mapping for Global Attributes</a></td>
+ </tr>
+ <tr>
+ <th>2.11</th><td><a href="#2.11">Mapping for <code>xsi:type</code> and Substitution Groups</a></td>
+ </tr>
+ <tr>
+ <th>2.12</th><td><a href="#2.12">Mapping for <code>any</code> and <code>anyAttribute</code></a>
+ <table class="toc">
+ <tr><th>2.12.1</th><td><a href="#2.12.1">Mapping for <code>any</code> with the One Cardinality Class</a></td></tr>
+ <tr><th>2.12.2</th><td><a href="#2.12.2">Mapping for <code>any</code> with the Optional Cardinality Class</a></td></tr>
+ <tr><th>2.12.3</th><td><a href="#2.12.3">Mapping for <code>any</code> with the Sequence Cardinality Class</a></td></tr>
+ <tr><th>2.12.4</th><td><a href="#2.12.4">Element Wildcard Order</a></td></tr>
+ <tr><th>2.12.5</th><td><a href="#2.12.5">Mapping for <code>anyAttribute</code></a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.13</th><td><a href="#2.13">Mapping for Mixed Content Models</a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>3</th><td><a href="#3">Parsing</a>
+ <table class="toc">
+ <tr>
+ <th>3.1</th><td><a href="#3.1">Initializing the Xerces-C++ Runtime</a></td>
+ </tr>
+ <tr>
+ <th>3.2</th><td><a href="#3.2">Flags and Properties</a></td>
+ </tr>
+ <tr>
+ <th>3.3</th><td><a href="#3.3">Error Handling</a>
+ <table class="toc">
+ <tr><th>3.3.1</th><td><a href="#3.3.1"><code>xml_schema::parsing</code></a></td></tr>
+ <tr><th>3.3.2</th><td><a href="#3.3.2"><code>xml_schema::expected_element</code></a></td></tr>
+ <tr><th>3.3.3</th><td><a href="#3.3.3"><code>xml_schema::unexpected_element</code></a></td></tr>
+ <tr><th>3.3.4</th><td><a href="#3.3.4"><code>xml_schema::expected_attribute</code></a></td></tr>
+ <tr><th>3.3.5</th><td><a href="#3.3.5"><code>xml_schema::unexpected_enumerator</code></a></td></tr>
+ <tr><th>3.3.6</th><td><a href="#3.3.6"><code>xml_schema::expected_text_content</code></a></td></tr>
+ <tr><th>3.3.7</th><td><a href="#3.3.7"><code>xml_schema::no_type_info</code></a></td></tr>
+ <tr><th>3.3.8</th><td><a href="#3.3.8"><code>xml_schema::not_derived</code></a></td></tr>
+ <tr><th>3.3.9</th><td><a href="#3.3.9"><code>xml_schema::not_prefix_mapping</code></a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>3.4</th><td><a href="#3.4">Reading from a Local File or URI</a></td>
+ </tr>
+ <tr>
+ <th>3.5</th><td><a href="#3.5">Reading from <code>std::istream</code></a></td>
+ </tr>
+ <tr>
+ <th>3.6</th><td><a href="#3.6">Reading from <code>xercesc::InputSource</code></a></td>
+ </tr>
+ <tr>
+ <th>3.7</th><td><a href="#3.7">Reading from DOM</a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>4</th><td><a href="#4">Serialization</a>
+ <table class="toc">
+ <tr>
+ <th>4.1</th><td><a href="#4.1">Initializing the Xerces-C++ Runtime</a></td>
+ </tr>
+ <tr>
+ <th>4.2</th><td><a href="#4.2">Namespace Infomap and Character Encoding</a></td>
+ </tr>
+ <tr>
+ <th>4.3</th><td><a href="#4.3">Flags</a></td>
+ </tr>
+ <tr>
+ <th>4.4</th><td><a href="#4.4">Error Handling</a>
+ <table class="toc">
+ <tr><th>4.4.1</th><td><a href="#4.4.1"><code>xml_schema::serialization</code></a></td></tr>
+ <tr><th>4.4.2</th><td><a href="#4.4.2"><code>xml_schema::unexpected_element</code></a></td></tr>
+ <tr><th>4.4.3</th><td><a href="#4.4.3"><code>xml_schema::no_type_info</code></a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>4.5</th><td><a href="#4.5">Serializing to <code>std::ostream</code></a></td>
+ </tr>
+ <tr>
+ <th>4.6</th><td><a href="#4.6">Serializing to <code>xercesc::XMLFormatTarget</code></a></td>
+ </tr>
+ <tr>
+ <th>4.7</th><td><a href="#4.7">Serializing to DOM</a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>5</th><td><a href="#5">Additional Functionality</a>
+ <table class="toc">
+ <tr>
+ <th>5.1</th><td><a href="#5.1">DOM Association</a></td>
+ </tr>
+ <tr>
+ <th>5.2</th><td><a href="#5.2">Binary Serialization</a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th></th><td><a href="#A">Appendix A &mdash; Default and Fixed Values</a></td>
+ </tr>
+
+ </table>
+ </div>
+
+ <h1><a name="0">Preface</a></h1>
+
+ <h2><a name="0.1">About This Document</a></h2>
+
+ <p>This document describes the mapping of W3C XML Schema
+ to the C++ programming language as implemented by
+ <a href="https://www.codesynthesis.com/products/xsd">CodeSynthesis
+ XSD</a> - an XML Schema to C++ data binding compiler. The mapping
+ represents information stored in XML instance documents as a
+ statically-typed, tree-like in-memory data structure and is
+ called C++/Tree.
+ </p>
+
+ <p>Revision 4.1.0<br/> <!-- Remember to change revision in other places -->
+ This revision of the manual describes the C++/Tree
+ mapping as implemented by CodeSynthesis XSD version 4.1.0.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml">XHTML</a>,
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf">PDF</a>, and
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps">PostScript</a>.</p>
+
+ <h2><a name="0.2">More Information</a></h2>
+
+ <p>Beyond this manual, you may also find the following sources of
+ information useful:</p>
+
+ <ul class="list">
+ <li><a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/">C++/Tree
+ Mapping Getting Started Guide</a></li>
+
+ <li><a href="http://wiki.codesynthesis.com/Tree/Customization_guide">C++/Tree
+ Mapping Customization Guide</a></li>
+
+ <li><a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree
+ Mapping Frequently Asked Questions (FAQ)</a></li>
+
+ <li><a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a></li>
+
+ <li>The <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ contains a collection of examples and a README file with an overview
+ of each example.</li>
+
+ <li>The <code>README</code> file in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ explains how to build the examples.</li>
+
+ <li>The <a href="https://www.codesynthesis.com/mailman/listinfo/xsd-users">xsd-users</a>
+ mailing list is a place to ask questions. Furthermore the
+ <a href="https://www.codesynthesis.com/pipermail/xsd-users/">archives</a>
+ may already have answers to some of your questions.</li>
+ </ul>
+
+
+ <h1><a name="1">1 Introduction</a></h1>
+
+ <p>C++/Tree is a W3C XML Schema to C++ mapping that represents the
+ data stored in XML as a statically-typed, vocabulary-specific
+ object model. Based on a formal description of an XML vocabulary
+ (schema), the C++/Tree mapping produces a tree-like data structure
+ suitable for in-memory processing as well as XML parsing and
+ serialization code.</p>
+
+ <p>A typical application that processes XML documents usually
+ performs the following three steps: it first reads (parses) an XML
+ instance document to an object model, it then performs
+ some useful computations on that model which may involve
+ modification of the model, and finally it may write (serialize)
+ the modified object model back to XML.
+ </p>
+
+ <p>The C++/Tree mapping consists of C++ types that represent the
+ given vocabulary (<a href="#2">Chapter 2, "C++/Tree Mapping"</a>),
+ a set of parsing functions that convert XML documents to
+ a tree-like in-memory data structure (<a href="#3">Chapter 3,
+ "Parsing"</a>), and a set of serialization functions that convert
+ the object model back to XML (<a href="#4">Chapter 4,
+ "Serialization"</a>). Furthermore, the mapping provides a number
+ of additional features, such as DOM association and binary
+ serialization, that can be useful in some applications
+ (<a href="#5">Chapter 5, "Additional Functionality"</a>).
+ </p>
+
+
+ <!-- Chapter 2 -->
+
+
+ <h1><a name="2">2 C++/Tree Mapping</a></h1>
+
+ <h2><a name="2.1">2.1 Preliminary Information</a></h2>
+
+ <h3><a name="2.1.1">2.1.1 C++ Standard</a></h3>
+
+ <p>The C++/Tree mapping provides support for ISO/IEC C++ 2011 (C++11)
+ and ISO/IEC C++ 1998/2003 (C++98). To select the C++ standard for the
+ generated code we use the <code>--std</code> XSD compiler command
+ line option. While the majority of the examples in this guide use
+ C++11, the document explains the C++11/98 usage difference and so
+ they can easily be converted to C++98.</p>
+
+ <h3><a name="2.1.2">2.1.2 Identifiers</a></h3>
+
+ <p>XML Schema names may happen to be reserved C++ keywords or contain
+ characters that are illegal in C++ identifiers. To avoid C++ compilation
+ problems, such names are changed (escaped) when mapped to C++. If an
+ XML Schema name is a C++ keyword, the "_" suffix is added to it. All
+ character of an XML Schema name that are not allowed in C++ identifiers
+ are replaced with "_".
+ </p>
+
+ <p>For example, XML Schema name <code>try</code> will be mapped to
+ C++ identifier <code>try_</code>. Similarly, XML Schema name
+ <code>strange.na-me</code> will be mapped to C++ identifier
+ <code>strange_na_me</code>.
+ </p>
+
+ <p>Furthermore, conflicts between type names and function names in the
+ same scope are resolved using name escaping. Such conflicts include
+ both a global element (which is mapped to a set of parsing and/or
+ serialization functions or element types, see <a href="#2.9">Section
+ 2.9, "Mapping for Global Elements"</a>) and a global type sharing the
+ same name as well as a local element or attribute inside a type having
+ the same name as the type itself.</p>
+
+ <p>For example, if we had a global type <code>catalog</code>
+ and a global element with the same name then the type would be
+ mapped to a C++ class with name <code>catalog</code> while the
+ parsing functions corresponding to the global element would have
+ their names escaped as <code>catalog_</code>.
+ </p>
+
+ <p>By default the mapping uses the so-called K&amp;R (Kernighan and
+ Ritchie) identifier naming convention which is also used throughout
+ this manual. In this convention both type and function names are in
+ lower case and words are separated by underscores. If your application
+ code or schemas use a different notation, you may want to change the
+ naming convention used by the mapping for consistency.
+ The compiler supports a set of widely-used naming conventions
+ that you can select with the <code>--type-naming</code> and
+ <code>--function-naming</code> options. You can also further
+ refine one of the predefined conventions or create a completely
+ custom naming scheme by using the <code>--*-regex</code> options.
+ For more detailed information on these options refer to the NAMING
+ CONVENTION section in the <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>.</p>
+
+ <h3><a name="2.1.3">2.1.3 Character Type and Encoding</a></h3>
+
+ <p>The code that implements the mapping, depending on the
+ <code>--char-type</code> option, is generated using either
+ <code>char</code> or <code>wchar_t</code> as the character
+ type. In this document code samples use symbol <code>C</code>
+ to refer to the character type you have selected when translating
+ your schemas, for example <code>std::basic_string&lt;C></code>.
+ </p>
+
+ <p>Another aspect of the mapping that depends on the character type
+ is character encoding. For the <code>char</code> character type
+ the default encoding is UTF-8. Other supported encodings are
+ ISO-8859-1, Xerces-C++ Local Code Page (LPC), as well as
+ custom encodings and can be selected with the
+ <code>--char-encoding</code> command line option.</p>
+
+ <p>For the <code>wchar_t</code> character type the encoding is
+ automatically selected between UTF-16 and UTF-32/UCS-4 depending
+ on the size of the <code>wchar_t</code> type. On some platforms
+ (for example, Windows with Visual C++ and AIX with IBM XL C++)
+ <code>wchar_t</code> is 2 bytes long. For these platforms the
+ encoding is UTF-16. On other platforms <code>wchar_t</code> is 4 bytes
+ long and UTF-32/UCS-4 is used.</p>
+
+ <h3><a name="2.1.4">2.1.4 XML Schema Namespace</a></h3>
+
+ <p>The mapping relies on some predefined types, classes, and functions
+ that are logically defined in the XML Schema namespace reserved for
+ the XML Schema language (<code>http://www.w3.org/2001/XMLSchema</code>).
+ By default, this namespace is mapped to C++ namespace
+ <code>xml_schema</code>. It is automatically accessible
+ from a C++ compilation unit that includes a header file generated
+ from an XML Schema definition.
+ </p>
+
+ <p>Note that, if desired, the default mapping of this namespace can be
+ changed as described in <a href="#2.4">Section 2.4, "Mapping for
+ Namespaces"</a>.
+ </p>
+
+
+ <h3><a name="2.1.5">2.1.5 Anonymous Types</a></h3>
+
+ <p>For the purpose of code generation, anonymous types defined in
+ XML Schema are automatically assigned names that are derived
+ from enclosing attributes and elements. Otherwise, such types
+ follows standard mapping rules for simple and complex type
+ definitions (see <a href="#2.6">Section 2.6, "Mapping for Simple Types"</a>
+ and <a href="#2.7">Section 2.7, "Mapping for Complex Types"</a>).
+ For example, in the following schema fragment:
+ </p>
+
+ <pre class="xml">
+&lt;element name="object">
+ &lt;complexType>
+ ...
+ &lt;/complexType>
+&lt;/element>
+ </pre>
+
+ <p>The anonymous type defined inside element <code>object</code> will
+ be given name <code>object</code>. The compiler has a number of
+ options that control the process of anonymous type naming. For more
+ information refer to the <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>.</p>
+
+
+ <h2><a name="2.2">2.2 Error Handling</a></h2>
+
+ <p>The mapping uses the C++ exception handling mechanism as a primary way
+ of reporting error conditions. All exceptions that are specified in
+ this mapping derive from <code>xml_schema::exception</code> which
+ itself is derived from <code>std::exception</code>:
+ </p>
+
+ <pre class="c++">
+struct exception: virtual std::exception
+{
+ friend
+ std::basic_ostream&lt;C>&amp;
+ operator&lt;&lt; (std::basic_ostream&lt;C>&amp; os, const exception&amp; e)
+ {
+ e.print (os);
+ return os;
+ }
+
+protected:
+ virtual void
+ print (std::basic_ostream&lt;C>&amp;) const = 0;
+};
+ </pre>
+
+ <p>The exception hierarchy supports "virtual" <code>operator&lt;&lt;</code>
+ which allows you to obtain diagnostics corresponding to the thrown
+ exception using the base exception interface. For example:</p>
+
+ <pre class="c++">
+try
+{
+ ...
+}
+catch (const xml_schema::exception&amp; e)
+{
+ cerr &lt;&lt; e &lt;&lt; endl;
+}
+ </pre>
+
+ <p>The following sub-sections describe exceptions thrown by the
+ types that constitute the object model.
+ <a href="#3.3">Section 3.3, "Error Handling"</a> of
+ <a href="#3">Chapter 3, "Parsing"</a> describes exceptions
+ and error handling mechanisms specific to the parsing functions.
+ <a href="#4.4">Section 4.4, "Error Handling"</a> of
+ <a href="#4">Chapter 4, "Serialization"</a> describes exceptions
+ and error handling mechanisms specific to the serialization functions.
+ </p>
+
+
+ <h3><a name="2.2.1">2.2.1 <code>xml_schema::duplicate_id</code></a></h3>
+
+ <pre class="c++">
+struct duplicate_id: virtual exception
+{
+ duplicate_id (const std::basic_string&lt;C>&amp; id);
+
+ const std::basic_string&lt;C>&amp;
+ id () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::duplicate_id</code> is thrown when
+ a conflicting instance of <code>xml_schema::id</code> (see
+ <a href="#2.5">Section 2.5, "Mapping for Built-in Data Types"</a>)
+ is added to a tree. The offending ID value can be obtained using
+ the <code>id</code> function.
+ </p>
+
+ <h2><a name="2.3">2.3 Mapping for <code>import</code> and <code>include</code></a></h2>
+
+ <h3><a name="2.3.1">2.3.1 Import</a></h3>
+
+ <p>The XML Schema <code>import</code> element is mapped to the C++
+ Preprocessor <code>#include</code> directive. The value of
+ the <code>schemaLocation</code> attribute is used to derive
+ the name of the header file that appears in the <code>#include</code>
+ directive. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;import namespace="https://www.codesynthesis.com/test"
+ schemaLocation="test.xsd"/>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+#include "test.hxx"
+ </pre>
+
+ <p>Note that you will need to compile imported schemas separately
+ in order to produce corresponding header files.</p>
+
+ <h3><a name="2.3.2">2.3.2 Inclusion with Target Namespace</a></h3>
+
+ <p>The XML Schema <code>include</code> element which refers to a schema
+ with a target namespace or appears in a schema without a target namespace
+ follows the same mapping rules as the <code>import</code> element,
+ see <a href="#2.3.1">Section 2.3.1, "Import"</a>.
+ </p>
+
+ <h3><a name="2.3.3">2.3.3 Inclusion without Target Namespace</a></h3>
+
+ <p>For the XML Schema <code>include</code> element which refers to a schema
+ without a target namespace and appears in a schema with a target
+ namespace (such inclusion sometimes called "chameleon inclusion"),
+ declarations and definitions from the included schema are generated
+ in-line in the namespace of the including schema as if they were
+ declared and defined there verbatim. For example, consider the
+ following two schemas:
+ </p>
+
+ <pre class="xml">
+&lt;-- common.xsd -->
+&lt;schema>
+ &lt;complexType name="type">
+ ...
+ &lt;/complexType>
+&lt;/schema>
+
+&lt;-- test.xsd -->
+&lt;schema targetNamespace="https://www.codesynthesis.com/test">
+ &lt;include schemaLocation="common.xsd"/>
+&lt;/schema>
+ </pre>
+
+ <p>The fragment of interest from the generated header file for
+ <code>text.xsd</code> would look like this:</p>
+
+ <pre class="c++">
+// test.hxx
+namespace test
+{
+ class type
+ {
+ ...
+ };
+}
+ </pre>
+
+ <h2><a name="2.4">2.4 Mapping for Namespaces</a></h2>
+
+ <p>An XML Schema namespace is mapped to one or more nested C++
+ namespaces. XML Schema namespaces are identified by URIs.
+ By default, a namespace URI is mapped to a sequence of
+ C++ namespace names by removing the protocol and host parts
+ and splitting the rest into a sequence of names with '<code>/</code>'
+ as the name separator. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;schema targetNamespace="https://www.codesynthesis.com/system/test">
+ ...
+&lt;/schema>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+namespace system
+{
+ namespace test
+ {
+ ...
+ }
+}
+ </pre>
+
+ <p>The default mapping of namespace URIs to C++ namespace names can be
+ altered using the <code>--namespace-map</code> and
+ <code>--namespace-regex</code> options. See the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a> for more information.
+ </p>
+
+ <h2><a name="2.5">2.5 Mapping for Built-in Data Types</a></h2>
+
+ <p>The mapping of XML Schema built-in data types to C++ types is
+ summarized in the table below.</p>
+
+ <!-- border="1" is necessary for html2ps -->
+ <table id="builtin" border="1">
+ <tr>
+ <th>XML Schema type</th>
+ <th>Alias in the <code>xml_schema</code> namespace</th>
+ <th>C++ type</th>
+ </tr>
+
+ <tr>
+ <th colspan="3">anyType and anySimpleType types</th>
+ </tr>
+ <tr>
+ <td><code>anyType</code></td>
+ <td><code>type</code></td>
+ <td><a href="#2.5.2">Section 2.5.2, "Mapping for <code>anyType</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>anySimpleType</code></td>
+ <td><code>simple_type</code></td>
+ <td><a href="#2.5.3">Section 2.5.3, "Mapping for <code>anySimpleType</code>"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-length integral types</th>
+ </tr>
+ <!-- 8-bit -->
+ <tr>
+ <td><code>byte</code></td>
+ <td><code>byte</code></td>
+ <td><code>signed&nbsp;char</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedByte</code></td>
+ <td><code>unsigned_byte</code></td>
+ <td><code>unsigned&nbsp;char</code></td>
+ </tr>
+
+ <!-- 16-bit -->
+ <tr>
+ <td><code>short</code></td>
+ <td><code>short_</code></td>
+ <td><code>short</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedShort</code></td>
+ <td><code>unsigned_short</code></td>
+ <td><code>unsigned&nbsp;short</code></td>
+ </tr>
+
+ <!-- 32-bit -->
+ <tr>
+ <td><code>int</code></td>
+ <td><code>int_</code></td>
+ <td><code>int</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedInt</code></td>
+ <td><code>unsigned_int</code></td>
+ <td><code>unsigned&nbsp;int</code></td>
+ </tr>
+
+ <!-- 64-bit -->
+ <tr>
+ <td><code>long</code></td>
+ <td><code>long_</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedLong</code></td>
+ <td><code>unsigned_long</code></td>
+ <td><code>unsigned&nbsp;long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-length integral types</th>
+ </tr>
+ <tr>
+ <td><code>integer</code></td>
+ <td><code>integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonPositiveInteger</code></td>
+ <td><code>non_positive_integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonNegativeInteger</code></td>
+ <td><code>non_negative_integer</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>positiveInteger</code></td>
+ <td><code>positive_integer</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>negativeInteger</code></td>
+ <td><code>negative_integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">boolean types</th>
+ </tr>
+ <tr>
+ <td><code>boolean</code></td>
+ <td><code>boolean</code></td>
+ <td><code>bool</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>float</code></td>
+ <td><code>float_</code></td>
+ <td><code>float</code></td>
+ </tr>
+ <tr>
+ <td><code>double</code></td>
+ <td><code>double_</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>decimal</code></td>
+ <td><code>decimal</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">string types</th>
+ </tr>
+ <tr>
+ <td><code>string</code></td>
+ <td><code>string</code></td>
+ <td>type derived from <code>std::basic_string</code></td>
+ </tr>
+ <tr>
+ <td><code>normalizedString</code></td>
+ <td><code>normalized_string</code></td>
+ <td>type derived from <code>string</code></td>
+ </tr>
+ <tr>
+ <td><code>token</code></td>
+ <td><code>token</code></td>
+ <td>type&nbsp;derived&nbsp;from&nbsp;<code>normalized_string</code></td>
+ </tr>
+ <tr>
+ <td><code>Name</code></td>
+ <td><code>name</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+ <tr>
+ <td><code>NMTOKEN</code></td>
+ <td><code>nmtoken</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+ <tr>
+ <td><code>NMTOKENS</code></td>
+ <td><code>nmtokens</code></td>
+ <td>type derived from <code>sequence&lt;nmtoken></code></td>
+ </tr>
+ <tr>
+ <td><code>NCName</code></td>
+ <td><code>ncname</code></td>
+ <td>type derived from <code>name</code></td>
+ </tr>
+ <tr>
+ <td><code>language</code></td>
+ <td><code>language</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">qualified name</th>
+ </tr>
+ <tr>
+ <td><code>QName</code></td>
+ <td><code>qname</code></td>
+ <td><a href="#2.5.4">Section 2.5.4, "Mapping for <code>QName</code>"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">ID/IDREF types</th>
+ </tr>
+ <tr>
+ <td><code>ID</code></td>
+ <td><code>id</code></td>
+ <td>type derived from <code>ncname</code></td>
+ </tr>
+ <tr>
+ <td><code>IDREF</code></td>
+ <td><code>idref</code></td>
+ <td><a href="#2.5.5">Section 2.5.5, "Mapping for <code>IDREF</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>IDREFS</code></td>
+ <td><code>idrefs</code></td>
+ <td>type derived from <code>sequence&lt;idref></code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">URI types</th>
+ </tr>
+ <tr>
+ <td><code>anyURI</code></td>
+ <td><code>uri</code></td>
+ <td>type derived from <code>std::basic_string</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">binary types</th>
+ </tr>
+ <tr>
+ <td><code>base64Binary</code></td>
+ <td><code>base64_binary</code></td>
+ <td rowspan="2"><a href="#2.5.6">Section 2.5.6, "Mapping for
+ <code>base64Binary</code> and <code>hexBinary</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>hexBinary</code></td>
+ <td><code>hex_binary</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">date/time types</th>
+ </tr>
+ <tr>
+ <td><code>date</code></td>
+ <td><code>date</code></td>
+ <td><a href="#2.5.8">Section 2.5.8, "Mapping for
+ <code>date</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>dateTime</code></td>
+ <td><code>date_time</code></td>
+ <td><a href="#2.5.9">Section 2.5.9, "Mapping for
+ <code>dateTime</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>duration</code></td>
+ <td><code>duration</code></td>
+ <td><a href="#2.5.10">Section 2.5.10, "Mapping for
+ <code>duration</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>gDay</code></td>
+ <td><code>gday</code></td>
+ <td><a href="#2.5.11">Section 2.5.11, "Mapping for
+ <code>gDay</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>gMonth</code></td>
+ <td><code>gmonth</code></td>
+ <td><a href="#2.5.12">Section 2.5.12, "Mapping for
+ <code>gMonth</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>gMonthDay</code></td>
+ <td><code>gmonth_day</code></td>
+ <td><a href="#2.5.13">Section 2.5.13, "Mapping for
+ <code>gMonthDay</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>gYear</code></td>
+ <td><code>gyear</code></td>
+ <td><a href="#2.5.14">Section 2.5.14, "Mapping for
+ <code>gYear</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>gYearMonth</code></td>
+ <td><code>gyear_month</code></td>
+ <td><a href="#2.5.15">Section 2.5.15, "Mapping for
+ <code>gYearMonth</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>time</code></td>
+ <td><code>time</code></td>
+ <td><a href="#2.5.16">Section 2.5.16, "Mapping for
+ <code>time</code>"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">entity types</th>
+ </tr>
+ <tr>
+ <td><code>ENTITY</code></td>
+ <td><code>entity</code></td>
+ <td>type derived from <code>name</code></td>
+ </tr>
+ <tr>
+ <td><code>ENTITIES</code></td>
+ <td><code>entities</code></td>
+ <td>type derived from <code>sequence&lt;entity></code></td>
+ </tr>
+ </table>
+
+ <p>All XML Schema built-in types are mapped to C++ classes that are
+ derived from the <code>xml_schema::simple_type</code> class except
+ where the mapping is to a fundamental C++ type.</p>
+
+ <p>The <code>sequence</code> class template is defined in an
+ implementation-specific namespace. It conforms to the
+ sequence interface as defined by the ISO/ANSI Standard for
+ C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences").
+ Practically, this means that you can treat such a sequence
+ as if it was <code>std::vector</code>. One notable extension
+ to the standard interface that is available only for
+ sequences of non-fundamental C++ types is the addition of
+ the overloaded <code>push_back</code> and <code>insert</code>
+ member functions which instead of the constant reference
+ to the element type accept automatic pointer (<code>std::unique_ptr</code>
+ or <code>std::auto_ptr</code>, depending on the C++ standard
+ selected) to the element type. These functions assume ownership
+ of the pointed to object and reset the passed automatic pointer.
+ </p>
+
+ <h3><a name="2.5.1">2.5.1 Inheritance from Built-in Data Types</a></h3>
+
+ <p>In cases where the mapping calls for an inheritance from a built-in
+ type which is mapped to a fundamental C++ type, a proxy type is
+ used instead of the fundamental C++ type (C++ does not allow
+ inheritance from fundamental types). For instance:</p>
+
+ <pre class="xml">
+&lt;simpleType name="my_int">
+ &lt;restriction base="int"/>
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class my_int: public fundamental_base&lt;int>
+{
+ ...
+};
+ </pre>
+
+ <p>The <code>fundamental_base</code> class template provides a close
+ emulation (though not exact) of a fundamental C++ type.
+ It is defined in an implementation-specific namespace and has the
+ following interface:</p>
+
+ <pre class="c++">
+template &lt;typename X>
+class fundamental_base: public simple_type
+{
+public:
+ fundamental_base ();
+ fundamental_base (X)
+ fundamental_base (const fundamental_base&amp;)
+
+public:
+ fundamental_base&amp;
+ operator= (const X&amp;);
+
+public:
+ operator const X &amp; () const;
+ operator X&amp; ();
+
+ template &lt;typename Y>
+ operator Y () const;
+
+ template &lt;typename Y>
+ operator Y ();
+};
+ </pre>
+
+ <h3><a name="2.5.2">2.5.2 Mapping for <code>anyType</code></a></h3>
+
+ <p>The XML Schema <code>anyType</code> built-in data type is mapped to the
+ <code>xml_schema::type</code> C++ class:</p>
+
+ <pre class="c++">
+class type
+{
+public:
+ virtual
+ ~type ();
+
+ type ();
+ type (const type&amp;);
+
+ type&amp;
+ operator= (const type&amp;);
+
+ virtual type*
+ _clone () const;
+
+ // anyType DOM content.
+ //
+public:
+ typedef element_optional dom_content_optional;
+
+ const dom_content_optional&amp;
+ dom_content () const;
+
+ dom_content_optional&amp;
+ dom_content ();
+
+ void
+ dom_content (const xercesc::DOMElement&amp;);
+
+ void
+ dom_content (xercesc::DOMElement*);
+
+ void
+ dom_content (const dom_content_optional&amp;);
+
+ const xercesc::DOMDocument&amp;
+ dom_content_document () const;
+
+ xercesc::DOMDocument&amp;
+ dom_content_document ();
+
+ bool
+ null_content () const;
+
+ // DOM association.
+ //
+public:
+ const xercesc::DOMNode*
+ _node () const;
+
+ xercesc::DOMNode*
+ _node ();
+};
+ </pre>
+
+ <p>When <code>xml_schema::type</code> is used to create an instance
+ (as opposed to being a base of a derived type), it represents
+ the XML Schema <code>anyType</code> type. <code>anyType</code>
+ allows any attributes and any content in any order. In the
+ C++/Tree mapping this content can be represented as a DOM
+ fragment, similar to XML Schema wildcards (<a href="#2.12">Section
+ 2.12, "Mapping for <code>any</code> and
+ <code>anyAttribute</code>"</a>).</p>
+
+ <p>To enable automatic extraction of <code>anyType</code> content
+ during parsing, the <code>--generate-any-type</code> option must be
+ specified. Because the DOM API is used to access such content, the
+ Xerces-C++ runtime should be initialized by the application prior to
+ parsing and should remain initialized for the lifetime of objects
+ with the DOM content. For more information on the Xerces-C++ runtime
+ initialization see <a href="#3.1">Section 3.1, "Initializing the
+ Xerces-C++ Runtime"</a>.</p>
+
+ <p>The DOM content is stored as the optional DOM element container
+ and the DOM content accessors and modifiers presented above are
+ identical to those generated for an optional element wildcard.
+ Refer to <a href="#2.12.2">Section 2.12.2, "Mapping for <code>any</code>
+ with the Optional Cardinality Class"</a> for details on their
+ semantics.</p>
+
+ <p>The <code>dom_content_document()</code> function returns the
+ DOM document used to store the raw XML content corresponding
+ to the <code>anyType</code> instance. It is equivalent to the
+ <code>dom_document()</code> function generated for types
+ with wildcards.</p>
+
+ <p>The <code>null_content()</code> accessor is an optimization function
+ that allows us to check for the lack of content without actually
+ creating its empty representation, that is, empty DOM document for
+ <code>anyType</code> or empty string for <code>anySimpleType</code>
+ (see the following section for details on <code>anySimpleType</code>).</p>
+
+ <p>For more information on DOM association refer to
+ <a href="#5.1">Section 5.1, "DOM Association"</a>.</p>
+
+ <h3><a name="2.5.3">2.5.3 Mapping for <code>anySimpleType</code></a></h3>
+
+ <p>The XML Schema <code>anySimpleType</code> built-in data type is mapped
+ to the <code>xml_schema::simple_type</code> C++ class:</p>
+
+ <pre class="c++">
+class simple_type: public type
+{
+public:
+ simple_type ();
+ simple_type (const C*);
+ simple_type (const std::basic_string&lt;C>&amp;);
+
+ simple_type (const simple_type&amp;);
+
+ simple_type&amp;
+ operator= (const simple_type&amp;);
+
+ virtual simple_type*
+ _clone () const;
+
+ // anySimpleType text content.
+ //
+public:
+ const std::basic_string&lt;C>&amp;
+ text_content () const;
+
+ std::basic_string&lt;C>&amp;
+ text_content ();
+
+ void
+ text_content (const std::basic_string&lt;C>&amp;);
+};
+ </pre>
+
+ <p>When <code>xml_schema::simple_type</code> is used to create an instance
+ (as opposed to being a base of a derived type), it represents
+ the XML Schema <code>anySimpleType</code> type. <code>anySimpleType</code>
+ allows any simple content. In the C++/Tree mapping this content can
+ be represented as a string and accessed or modified with the
+ <code>text_content()</code> functions shown above.</p>
+
+ <h3><a name="2.5.4">2.5.4 Mapping for <code>QName</code></a></h3>
+
+ <p>The XML Schema <code>QName</code> built-in data type is mapped to the
+ <code>xml_schema::qname</code> C++ class:</p>
+
+ <pre class="c++">
+class qname: public simple_type
+{
+public:
+ qname (const ncname&amp;);
+ qname (const uri&amp;, const ncname&amp;);
+ qname (const qname&amp;);
+
+public:
+ qname&amp;
+ operator= (const qname&amp;);
+
+public:
+ virtual qname*
+ _clone () const;
+
+public:
+ bool
+ qualified () const;
+
+ const uri&amp;
+ namespace_ () const;
+
+ const ncname&amp;
+ name () const;
+};
+ </pre>
+
+ <p>The <code>qualified</code> accessor function can be used to determine
+ if the name is qualified.</p>
+
+ <h3><a name="2.5.5">2.5.5 Mapping for <code>IDREF</code></a></h3>
+
+ <p>The XML Schema <code>IDREF</code> built-in data type is mapped to the
+ <code>xml_schema::idref</code> C++ class. This class implements the
+ smart pointer C++ idiom:</p>
+
+ <pre class="c++">
+class idref: public ncname
+{
+public:
+ idref (const C* s);
+ idref (const C* s, std::size_t n);
+ idref (std::size_t n, C c);
+ idref (const std::basic_string&lt;C>&amp;);
+ idref (const std::basic_string&lt;C>&amp;,
+ std::size_t pos,
+ std::size_t n = npos);
+
+public:
+ idref (const idref&amp;);
+
+public:
+ virtual idref*
+ _clone () const;
+
+public:
+ idref&amp;
+ operator= (C c);
+
+ idref&amp;
+ operator= (const C* s);
+
+ idref&amp;
+ operator= (const std::basic_string&lt;C>&amp;)
+
+ idref&amp;
+ operator= (const idref&amp;);
+
+public:
+ const type*
+ operator-> () const;
+
+ type*
+ operator-> ();
+
+ const type&amp;
+ operator* () const;
+
+ type&amp;
+ operator* ();
+
+ const type*
+ get () const;
+
+ type*
+ get ();
+
+ // Conversion to bool.
+ //
+public:
+ typedef void (idref::*bool_convertible)();
+ operator bool_convertible () const;
+};
+ </pre>
+
+ <p>The object, <code>idref</code> instance refers to, is the immediate
+ container of the matching <code>id</code> instance. For example,
+ with the following instance document and schema:
+ </p>
+
+
+ <pre class="xml">
+&lt;!-- test.xml -->
+&lt;root>
+ &lt;object id="obj-1" text="hello"/>
+ &lt;reference>obj-1&lt;/reference>
+&lt;/root>
+
+&lt;!-- test.xsd -->
+&lt;schema>
+ &lt;complexType name="object_type">
+ &lt;attribute name="id" type="ID"/>
+ &lt;attribute name="text" type="string"/>
+ &lt;/complexType>
+
+ &lt;complexType name="root_type">
+ &lt;sequence>
+ &lt;element name="object" type="object_type"/>
+ &lt;element name="reference" type="IDREF"/>
+ &lt;/sequence>
+ &lt;/complexType>
+
+ &lt;element name="root" type="root_type"/>
+&lt;/schema>
+ </pre>
+
+ <p>The <code>ref</code> instance in the code below will refer to
+ an object of type <code>object_type</code>:</p>
+
+ <pre class="c++">
+root_type&amp; root = ...;
+xml_schema::idref&amp; ref (root.reference ());
+object_type&amp; obj (dynamic_cast&lt;object_type&amp;> (*ref));
+cout &lt;&lt; obj.text () &lt;&lt; endl;
+ </pre>
+
+ <p>The smart pointer interface of the <code>idref</code> class always
+ returns a pointer or reference to <code>xml_schema::type</code>.
+ This means that you will need to manually cast such pointer or
+ reference to its real (dynamic) type before you can use it (unless
+ all you need is the base interface provided by
+ <code>xml_schema::type</code>). As a special extension to the XML
+ Schema language, the mapping supports static typing of <code>idref</code>
+ references by employing the <code>refType</code> extension attribute.
+ The following example illustrates this mechanism:
+ </p>
+
+ <pre class="xml">
+&lt;!-- test.xsd -->
+&lt;schema
+ xmlns:xse="https://www.codesynthesis.com/xmlns/xml-schema-extension">
+
+ ...
+
+ &lt;element name="reference" type="IDREF" xse:refType="object_type"/>
+
+ ...
+
+&lt;/schema>
+ </pre>
+
+ <p>With this modification we do not need to do manual casting anymore:
+ </p>
+
+ <pre class="c++">
+root_type&amp; root = ...;
+root_type::reference_type&amp; ref (root.reference ());
+object_type&amp; obj (*ref);
+cout &lt;&lt; ref->text () &lt;&lt; endl;
+ </pre>
+
+
+ <h3><a name="2.5.6">2.5.6 Mapping for <code>base64Binary</code> and
+ <code>hexBinary</code></a></h3>
+
+ <p>The XML Schema <code>base64Binary</code> and <code>hexBinary</code>
+ built-in data types are mapped to the
+ <code>xml_schema::base64_binary</code> and
+ <code>xml_schema::hex_binary</code> C++ classes, respectively. The
+ <code>base64_binary</code> and <code>hex_binary</code> classes
+ support a simple buffer abstraction by inheriting from the
+ <code>xml_schema::buffer</code> class:
+ </p>
+
+ <pre class="c++">
+class bounds: public virtual exception
+{
+public:
+ virtual const char*
+ what () const throw ();
+};
+
+class buffer
+{
+public:
+ typedef std::size_t size_t;
+
+public:
+ buffer (size_t size = 0);
+ buffer (size_t size, size_t capacity);
+ buffer (const void* data, size_t size);
+ buffer (const void* data, size_t size, size_t capacity);
+ buffer (void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership);
+
+public:
+ buffer (const buffer&amp;);
+
+ buffer&amp;
+ operator= (const buffer&amp;);
+
+ void
+ swap (buffer&amp;);
+
+public:
+ size_t
+ capacity () const;
+
+ bool
+ capacity (size_t);
+
+public:
+ size_t
+ size () const;
+
+ bool
+ size (size_t);
+
+public:
+ const char*
+ data () const;
+
+ char*
+ data ();
+
+ const char*
+ begin () const;
+
+ char*
+ begin ();
+
+ const char*
+ end () const;
+
+ char*
+ end ();
+};
+ </pre>
+
+ <p>The last overloaded constructor reuses an existing data buffer instead
+ of making a copy. If the <code>assume_ownership</code> argument is
+ <code>true</code>, the instance assumes ownership of the
+ memory block pointed to by the <code>data</code> argument and will
+ eventually release it by calling <code>operator delete</code>. The
+ <code>capacity</code> and <code>size</code> modifier functions return
+ <code>true</code> if the underlying buffer has moved.
+ </p>
+
+ <p>The <code>bounds</code> exception is thrown if the constructor
+ arguments violate the <code>(size&nbsp;&lt;=&nbsp;capacity)</code>
+ constraint.</p>
+
+ <p>The <code>base64_binary</code> and <code>hex_binary</code> classes
+ support the <code>buffer</code> interface and perform automatic
+ decoding/encoding from/to the Base64 and Hex formats, respectively:
+ </p>
+
+ <pre class="c++">
+class base64_binary: public simple_type, public buffer
+{
+public:
+ base64_binary (size_t size = 0);
+ base64_binary (size_t size, size_t capacity);
+ base64_binary (const void* data, size_t size);
+ base64_binary (const void* data, size_t size, size_t capacity);
+ base64_binary (void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership);
+
+public:
+ base64_binary (const base64_binary&amp;);
+
+ base64_binary&amp;
+ operator= (const base64_binary&amp;);
+
+ virtual base64_binary*
+ _clone () const;
+
+public:
+ std::basic_string&lt;C>
+ encode () const;
+};
+ </pre>
+
+ <pre class="c++">
+class hex_binary: public simple_type, public buffer
+{
+public:
+ hex_binary (size_t size = 0);
+ hex_binary (size_t size, size_t capacity);
+ hex_binary (const void* data, size_t size);
+ hex_binary (const void* data, size_t size, size_t capacity);
+ hex_binary (void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership);
+
+public:
+ hex_binary (const hex_binary&amp;);
+
+ hex_binary&amp;
+ operator= (const hex_binary&amp;);
+
+ virtual hex_binary*
+ _clone () const;
+
+public:
+ std::basic_string&lt;C>
+ encode () const;
+};
+ </pre>
+
+
+ <h2><a name="2.5.7">2.5.7 Time Zone Representation</a></h2>
+
+ <p>The <code>date</code>, <code>dateTime</code>, <code>gDay</code>,
+ <code>gMonth</code>, <code>gMonthDay</code>, <code>gYear</code>,
+ <code>gYearMonth</code>, and <code>time</code> XML Schema built-in
+ types all include an optional time zone component. The following
+ <code>xml_schema::time_zone</code> base class is used to represent
+ this information:</p>
+
+ <pre class="c++">
+class time_zone
+{
+public:
+ time_zone ();
+ time_zone (short hours, short minutes);
+
+ bool
+ zone_present () const;
+
+ void
+ zone_reset ();
+
+ short
+ zone_hours () const;
+
+ void
+ zone_hours (short);
+
+ short
+ zone_minutes () const;
+
+ void
+ zone_minutes (short);
+};
+
+bool
+operator== (const time_zone&amp;, const time_zone&amp;);
+
+bool
+operator!= (const time_zone&amp;, const time_zone&amp;);
+ </pre>
+
+ <p>The <code>zone_present()</code> accessor function returns <code>true</code>
+ if the time zone is specified. The <code>zone_reset()</code> modifier
+ function resets the time zone object to the <em>not specified</em>
+ state. If the time zone offset is negative then both hours and
+ minutes components are represented as negative integers.</p>
+
+
+ <h2><a name="2.5.8">2.5.8 Mapping for <code>date</code></a></h2>
+
+ <p>The XML Schema <code>date</code> built-in data type is mapped to the
+ <code>xml_schema::date</code> C++ class which represents a year, a day,
+ and a month with an optional time zone. Its interface is presented
+ below. For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+class date: public simple_type, public time_zone
+{
+public:
+ date (int year, unsigned short month, unsigned short day);
+ date (int year, unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes);
+
+public:
+ date (const date&amp;);
+
+ date&amp;
+ operator= (const date&amp;);
+
+ virtual date*
+ _clone () const;
+
+public:
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+};
+
+bool
+operator== (const date&amp;, const date&amp;);
+
+bool
+operator!= (const date&amp;, const date&amp;);
+ </pre>
+
+ <h2><a name="2.5.9">2.5.9 Mapping for <code>dateTime</code></a></h2>
+
+ <p>The XML Schema <code>dateTime</code> built-in data type is mapped to the
+ <code>xml_schema::date_time</code> C++ class which represents a year, a month,
+ a day, hours, minutes, and seconds with an optional time zone. Its interface
+ is presented below. For more information on the base
+ <code>xml_schema::time_zone</code> class refer to <a href="#2.5.7">Section
+ 2.5.7, "Time Zone Representation"</a>.</p>
+
+ <pre class="c++">
+class date_time: public simple_type, public time_zone
+{
+public:
+ date_time (int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds);
+
+ date_time (int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds, short zone_hours, short zone_minutes);
+public:
+ date_time (const date_time&amp;);
+
+ date_time&amp;
+ operator= (const date_time&amp;);
+
+ virtual date_time*
+ _clone () const;
+
+public:
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+
+ unsigned short
+ hours () const;
+
+ void
+ hours (unsigned short);
+
+ unsigned short
+ minutes () const;
+
+ void
+ minutes (unsigned short);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+};
+
+bool
+operator== (const date_time&amp;, const date_time&amp;);
+
+bool
+operator!= (const date_time&amp;, const date_time&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.10">2.5.10 Mapping for <code>duration</code></a></h2>
+
+ <p>The XML Schema <code>duration</code> built-in data type is mapped to the
+ <code>xml_schema::duration</code> C++ class which represents a potentially
+ negative duration in the form of years, months, days, hours, minutes,
+ and seconds. Its interface is presented below.</p>
+
+ <pre class="c++">
+class duration: public simple_type
+{
+public:
+ duration (bool negative,
+ unsigned int years, unsigned int months, unsigned int days,
+ unsigned int hours, unsigned int minutes, double seconds);
+public:
+ duration (const duration&amp;);
+
+ duration&amp;
+ operator= (const duration&amp;);
+
+ virtual duration*
+ _clone () const;
+
+public:
+ bool
+ negative () const;
+
+ void
+ negative (bool);
+
+ unsigned int
+ years () const;
+
+ void
+ years (unsigned int);
+
+ unsigned int
+ months () const;
+
+ void
+ months (unsigned int);
+
+ unsigned int
+ days () const;
+
+ void
+ days (unsigned int);
+
+ unsigned int
+ hours () const;
+
+ void
+ hours (unsigned int);
+
+ unsigned int
+ minutes () const;
+
+ void
+ minutes (unsigned int);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+};
+
+bool
+operator== (const duration&amp;, const duration&amp;);
+
+bool
+operator!= (const duration&amp;, const duration&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.11">2.5.11 Mapping for <code>gDay</code></a></h2>
+
+ <p>The XML Schema <code>gDay</code> built-in data type is mapped to the
+ <code>xml_schema::gday</code> C++ class which represents a day of the
+ month with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+class gday: public simple_type, public time_zone
+{
+public:
+ explicit
+ gday (unsigned short day);
+ gday (unsigned short day, short zone_hours, short zone_minutes);
+
+public:
+ gday (const gday&amp;);
+
+ gday&amp;
+ operator= (const gday&amp;);
+
+ virtual gday*
+ _clone () const;
+
+public:
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+};
+
+bool
+operator== (const gday&amp;, const gday&amp;);
+
+bool
+operator!= (const gday&amp;, const gday&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.12">2.5.12 Mapping for <code>gMonth</code></a></h2>
+
+ <p>The XML Schema <code>gMonth</code> built-in data type is mapped to the
+ <code>xml_schema::gmonth</code> C++ class which represents a month of the
+ year with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+class gmonth: public simple_type, public time_zone
+{
+public:
+ explicit
+ gmonth (unsigned short month);
+ gmonth (unsigned short month,
+ short zone_hours, short zone_minutes);
+
+public:
+ gmonth (const gmonth&amp;);
+
+ gmonth&amp;
+ operator= (const gmonth&amp;);
+
+ virtual gmonth*
+ _clone () const;
+
+public:
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+};
+
+bool
+operator== (const gmonth&amp;, const gmonth&amp;);
+
+bool
+operator!= (const gmonth&amp;, const gmonth&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.13">2.5.13 Mapping for <code>gMonthDay</code></a></h2>
+
+ <p>The XML Schema <code>gMonthDay</code> built-in data type is mapped to the
+ <code>xml_schema::gmonth_day</code> C++ class which represents a day and
+ a month of the year with an optional time zone. Its interface is presented
+ below. For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+class gmonth_day: public simple_type, public time_zone
+{
+public:
+ gmonth_day (unsigned short month, unsigned short day);
+ gmonth_day (unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes);
+
+public:
+ gmonth_day (const gmonth_day&amp;);
+
+ gmonth_day&amp;
+ operator= (const gmonth_day&amp;);
+
+ virtual gmonth_day*
+ _clone () const;
+
+public:
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+};
+
+bool
+operator== (const gmonth_day&amp;, const gmonth_day&amp;);
+
+bool
+operator!= (const gmonth_day&amp;, const gmonth_day&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.14">2.5.14 Mapping for <code>gYear</code></a></h2>
+
+ <p>The XML Schema <code>gYear</code> built-in data type is mapped to the
+ <code>xml_schema::gyear</code> C++ class which represents a year with
+ an optional time zone. Its interface is presented below. For more
+ information on the base <code>xml_schema::time_zone</code> class refer
+ to <a href="#2.5.7">Section 2.5.7, "Time Zone Representation"</a>.</p>
+
+ <pre class="c++">
+class gyear: public simple_type, public time_zone
+{
+public:
+ explicit
+ gyear (int year);
+ gyear (int year, short zone_hours, short zone_minutes);
+
+public:
+ gyear (const gyear&amp;);
+
+ gyear&amp;
+ operator= (const gyear&amp;);
+
+ virtual gyear*
+ _clone () const;
+
+public:
+ int
+ year () const;
+
+ void
+ year (int);
+};
+
+bool
+operator== (const gyear&amp;, const gyear&amp;);
+
+bool
+operator!= (const gyear&amp;, const gyear&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.15">2.5.15 Mapping for <code>gYearMonth</code></a></h2>
+
+ <p>The XML Schema <code>gYearMonth</code> built-in data type is mapped to
+ the <code>xml_schema::gyear_month</code> C++ class which represents
+ a year and a month with an optional time zone. Its interface is presented
+ below. For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+class gyear_month: public simple_type, public time_zone
+{
+public:
+ gyear_month (int year, unsigned short month);
+ gyear_month (int year, unsigned short month,
+ short zone_hours, short zone_minutes);
+public:
+ gyear_month (const gyear_month&amp;);
+
+ gyear_month&amp;
+ operator= (const gyear_month&amp;);
+
+ virtual gyear_month*
+ _clone () const;
+
+public:
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+};
+
+bool
+operator== (const gyear_month&amp;, const gyear_month&amp;);
+
+bool
+operator!= (const gyear_month&amp;, const gyear_month&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.16">2.5.16 Mapping for <code>time</code></a></h2>
+
+ <p>The XML Schema <code>time</code> built-in data type is mapped to
+ the <code>xml_schema::time</code> C++ class which represents hours,
+ minutes, and seconds with an optional time zone. Its interface is
+ presented below. For more information on the base
+ <code>xml_schema::time_zone</code> class refer to
+ <a href="#2.5.7">Section 2.5.7, "Time Zone Representation"</a>.</p>
+
+ <pre class="c++">
+class time: public simple_type, public time_zone
+{
+public:
+ time (unsigned short hours, unsigned short minutes, double seconds);
+ time (unsigned short hours, unsigned short minutes, double seconds,
+ short zone_hours, short zone_minutes);
+
+public:
+ time (const time&amp;);
+
+ time&amp;
+ operator= (const time&amp;);
+
+ virtual time*
+ _clone () const;
+
+public:
+ unsigned short
+ hours () const;
+
+ void
+ hours (unsigned short);
+
+ unsigned short
+ minutes () const;
+
+ void
+ minutes (unsigned short);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+};
+
+bool
+operator== (const time&amp;, const time&amp;);
+
+bool
+operator!= (const time&amp;, const time&amp;);
+ </pre>
+
+
+ <!-- Mapping for Simple Types -->
+
+ <h2><a name="2.6">2.6 Mapping for Simple Types</a></h2>
+
+ <p>An XML Schema simple type is mapped to a C++ class with the same
+ name as the simple type. The class defines a public copy constructor,
+ a public copy assignment operator, and a public virtual
+ <code>_clone</code> function. The <code>_clone</code> function is
+ declared <code>const</code>, does not take any arguments, and returns
+ a pointer to a complete copy of the instance allocated in the free
+ store. The <code>_clone</code> function shall be used to make copies
+ when static type and dynamic type of the instance may differ (see
+ <a href="#2.11">Section 2.11, "Mapping for <code>xsi:type</code>
+ and Substitution Groups"</a>). For instance:</p>
+
+ <pre class="xml">
+&lt;simpleType name="object">
+ ...
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: ...
+{
+public:
+ object (const object&amp;);
+
+public:
+ object&amp;
+ operator= (const object&amp;);
+
+public:
+ virtual object*
+ _clone () const;
+
+ ...
+
+};
+ </pre>
+
+ <p>The base class specification and the rest of the class definition
+ depend on the type of derivation used to define the simple type. </p>
+
+
+ <h3><a name="2.6.1">2.6.1 Mapping for Derivation by Restriction</a></h3>
+
+ <p>XML Schema derivation by restriction is mapped to C++ public
+ inheritance. The base type of the restriction becomes the base
+ type for the resulting C++ class. In addition to the members described
+ in <a href="#2.6">Section 2.6, "Mapping for Simple Types"</a>, the
+ resulting C++ class defines a public constructor with the base type
+ as its single argument. For instance:</p>
+
+ <pre class="xml">
+&lt;simpleType name="object">
+ &lt;restriction base="base">
+ ...
+ &lt;/restriction>
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public base
+{
+public:
+ object (const base&amp;);
+ object (const object&amp;);
+
+public:
+ object&amp;
+ operator= (const object&amp;);
+
+public:
+ virtual object*
+ _clone () const;
+};
+ </pre>
+
+
+ <h3><a name="2.6.2">2.6.2 Mapping for Enumerations</a></h3>
+
+<p>XML Schema restriction by enumeration is mapped to a C++ class
+ with semantics similar to C++ <code>enum</code>. Each XML Schema
+ enumeration element is mapped to a C++ enumerator with the
+ name derived from the <code>value</code> attribute and defined
+ in the class scope. In addition to the members
+ described in <a href="#2.6">Section 2.6, "Mapping for Simple Types"</a>,
+ the resulting C++ class defines a public constructor that can be called
+ with one of the enumerators as its single argument, a public constructor
+ that can be called with enumeration's base value as its single
+ argument, a public assignment operator that can be used to assign the
+ value of one of the enumerators, and a public implicit conversion
+ operator to the underlying C++ enum type.</p>
+
+<p>Furthermore, for string-based enumeration types, the resulting C++
+ class defines a public constructor with a single argument of type
+ <code>const C*</code> and a public constructor with a single
+ argument of type <code>const std::basic_string&lt;C>&amp;</code>.
+ For instance:</p>
+
+ <pre class="xml">
+&lt;simpleType name="color">
+ &lt;restriction base="string">
+ &lt;enumeration value="red"/>
+ &lt;enumeration value="green"/>
+ &lt;enumeration value="blue"/>
+ &lt;/restriction>
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class color: public xml_schema::string
+{
+public:
+ enum value
+ {
+ red,
+ green,
+ blue
+ };
+
+public:
+ color (value);
+ color (const C*);
+ color (const std::basic_string&lt;C>&amp;);
+ color (const xml_schema::string&amp;);
+ color (const color&amp;);
+
+public:
+ color&amp;
+ operator= (value);
+
+ color&amp;
+ operator= (const color&amp;);
+
+public:
+ virtual color*
+ _clone () const;
+
+public:
+ operator value () const;
+};
+ </pre>
+
+ <h3><a name="2.6.3">2.6.3 Mapping for Derivation by List</a></h3>
+
+ <p>XML Schema derivation by list is mapped to C++ public
+ inheritance from <code>xml_schema::simple_type</code>
+ (<a href="#2.5.3">Section 2.5.3, "Mapping for
+ <code>anySimpleType</code>"</a>) and a suitable sequence type.
+ The list item type becomes the element type of the sequence.
+ In addition to the members described in <a href="#2.6">Section 2.6,
+ "Mapping for Simple Types"</a>, the resulting C++ class defines
+ a public default constructor, a public constructor
+ with the first argument of type <code>size_type</code> and
+ the second argument of list item type that creates
+ a list object with the specified number of copies of the specified
+ element value, and a public constructor with the two arguments
+ of an input iterator type that creates a list object from an
+ iterator range. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;simpleType name="int_list">
+ &lt;list itemType="int"/>
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class int_list: public simple_type,
+ public sequence&lt;int>
+{
+public:
+ int_list ();
+ int_list (size_type n, int x);
+
+ template &lt;typename I>
+ int_list (const I&amp; begin, const I&amp; end);
+ int_list (const int_list&amp;);
+
+public:
+ int_list&amp;
+ operator= (const int_list&amp;);
+
+public:
+ virtual int_list*
+ _clone () const;
+};
+ </pre>
+
+ <p>The <code>sequence</code> class template is defined in an
+ implementation-specific namespace. It conforms to the
+ sequence interface as defined by the ISO/ANSI Standard for
+ C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences").
+ Practically, this means that you can treat such a sequence
+ as if it was <code>std::vector</code>. One notable extension
+ to the standard interface that is available only for
+ sequences of non-fundamental C++ types is the addition of
+ the overloaded <code>push_back</code> and <code>insert</code>
+ member functions which instead of the constant reference
+ to the element type accept automatic pointer (<code>std::unique_ptr</code>
+ or <code>std::auto_ptr</code>, depending on the C++ standard
+ selected) to the element type. These functions assume ownership
+ of the pointed to object and reset the passed automatic pointer.
+ </p>
+
+ <h3><a name="2.6.4">2.6.4 Mapping for Derivation by Union</a></h3>
+
+ <p>XML Schema derivation by union is mapped to C++ public
+ inheritance from <code>xml_schema::simple_type</code>
+ (<a href="#2.5.3">Section 2.5.3, "Mapping for
+ <code>anySimpleType</code>"</a>) and <code>std::basic_string&lt;C></code>.
+ In addition to the members described in <a href="#2.6">Section 2.6,
+ "Mapping for Simple Types"</a>, the resulting C++ class defines a
+ public constructor with a single argument of type <code>const C*</code>
+ and a public constructor with a single argument of type
+ <code>const std::basic_string&lt;C>&amp;</code>. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;simpleType name="int_string_union">
+ &lt;xsd:union memberTypes="xsd:int xsd:string"/>
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class int_string_union: public simple_type,
+ public std::basic_string&lt;C>
+{
+public:
+ int_string_union (const C*);
+ int_string_union (const std::basic_string&lt;C>&amp;);
+ int_string_union (const int_string_union&amp;);
+
+public:
+ int_string_union&amp;
+ operator= (const int_string_union&amp;);
+
+public:
+ virtual int_string_union*
+ _clone () const;
+};
+ </pre>
+
+ <h2><a name="2.7">2.7 Mapping for Complex Types</a></h2>
+
+ <p>An XML Schema complex type is mapped to a C++ class with the same
+ name as the complex type. The class defines a public copy constructor,
+ a public copy assignment operator, and a public virtual
+ <code>_clone</code> function. The <code>_clone</code> function is
+ declared <code>const</code>, does not take any arguments, and returns
+ a pointer to a complete copy of the instance allocated in the free
+ store. The <code>_clone</code> function shall be used to make copies
+ when static type and dynamic type of the instance may differ (see
+ <a href="#2.11">Section 2.11, "Mapping for <code>xsi:type</code>
+ and Substitution Groups"</a>).</p>
+
+ <p>Additionally, the resulting C++ class
+ defines two public constructors that take an initializer for each
+ member of the complex type and all its base types that belongs to
+ the One cardinality class (see <a href="#2.8">Section 2.8, "Mapping
+ for Local Elements and Attributes"</a>). In the first constructor,
+ the arguments are passed as constant references and the newly created
+ instance is initialized with copies of the passed objects. In the
+ second constructor, arguments that are complex types (that is,
+ they themselves contain elements or attributes) are passed as
+ either <code>std::unique_ptr</code> (C++11) or <code>std::auto_ptr</code>
+ (C++98), depending on the C++ standard selected. In this case the newly
+ created instance is directly initialized with and assumes ownership
+ of the pointed to objects and the <code>std::[unique|auto]_ptr</code>
+ arguments are reset to <code>0</code>. For instance:</p>
+
+ <pre class="xml">
+&lt;complexType name="complex">
+ &lt;sequence>
+ &lt;element name="a" type="int"/>
+ &lt;element name="b" type="string"/>
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="s-one" type="boolean"/>
+ &lt;element name="c-one" type="complex"/>
+ &lt;element name="optional" type="int" minOccurs="0"/>
+ &lt;element name="sequence" type="string" maxOccurs="unbounded"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class complex: public xml_schema::type
+{
+public:
+ object (const int&amp; a, const xml_schema::string&amp; b);
+ object (const complex&amp;);
+
+public:
+ object&amp;
+ operator= (const complex&amp;);
+
+public:
+ virtual complex*
+ _clone () const;
+
+ ...
+
+};
+
+class object: public xml_schema::type
+{
+public:
+ object (const bool&amp; s_one, const complex&amp; c_one);
+ object (const bool&amp; s_one, std::[unique|auto]_ptr&lt;complex> c_one);
+ object (const object&amp;);
+
+public:
+ object&amp;
+ operator= (const object&amp;);
+
+public:
+ virtual object*
+ _clone () const;
+
+ ...
+
+};
+ </pre>
+
+ <p>Notice that the generated <code>complex</code> class does not
+ have the second (<code>std::[unique|auto]_ptr</code>) version of the
+ constructor since all its required members are of simple types.</p>
+
+ <p>If an XML Schema complex type has an ultimate base which is an XML
+ Schema simple type then the resulting C++ class also defines a public
+ constructor that takes an initializer for the base type as well as
+ for each member of the complex type and all its base types that
+ belongs to the One cardinality class. For instance:</p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;simpleContent>
+ &lt;extension base="date">
+ &lt;attribute name="lang" type="language" use="required"/>
+ &lt;/extension>
+ &lt;/simpleContent>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::string
+{
+public:
+ object (const xml_schema::language&amp; lang);
+
+ object (const xml_schema::date&amp; base,
+ const xml_schema::language&amp; lang);
+
+ ...
+
+};
+ </pre>
+
+ <p>Furthermore, for string-based XML Schema complex types, the resulting C++
+ class also defines two public constructors with the first arguments
+ of type <code>const C*</code> and <code>std::basic_string&lt;C>&amp;</code>,
+ respectively, followed by arguments for each member of the complex
+ type and all its base types that belongs to the One cardinality
+ class. For enumeration-based complex types the resulting C++
+ class also defines a public constructor with the first arguments
+ of the underlying enum type followed by arguments for each member
+ of the complex type and all its base types that belongs to the One
+ cardinality class. For instance:</p>
+
+ <pre class="xml">
+&lt;simpleType name="color">
+ &lt;restriction base="string">
+ &lt;enumeration value="red"/>
+ &lt;enumeration value="green"/>
+ &lt;enumeration value="blue"/>
+ &lt;/restriction>
+&lt;/simpleType>
+
+&lt;complexType name="object">
+ &lt;simpleContent>
+ &lt;extension base="color">
+ &lt;attribute name="lang" type="language" use="required"/>
+ &lt;/extension>
+ &lt;/simpleContent>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class color: public xml_schema::string
+{
+public:
+ enum value
+ {
+ red,
+ green,
+ blue
+ };
+
+public:
+ color (value);
+ color (const C*);
+ color (const std::basic_string&lt;C>&amp;);
+
+ ...
+
+};
+
+class object: color
+{
+public:
+ object (const color&amp; base,
+ const xml_schema::language&amp; lang);
+
+ object (const color::value&amp; base,
+ const xml_schema::language&amp; lang);
+
+ object (const C* base,
+ const xml_schema::language&amp; lang);
+
+ object (const std::basic_string&lt;C>&amp; base,
+ const xml_schema::language&amp; lang);
+
+ ...
+
+};
+ </pre>
+
+ <p>Additional constructors can be requested with the
+ <code>--generate-default-ctor</code> and
+ <code>--generate-from-base-ctor</code> options. See the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a> for details.</p>
+
+ <p>If an XML Schema complex type is not explicitly derived from any type,
+ the resulting C++ class is derived from <code>xml_schema::type</code>.
+ In cases where an XML Schema complex type is defined using derivation
+ by extension or restriction, the resulting C++ base class specification
+ depends on the type of derivation and is described in the subsequent
+ sections.
+ </p>
+
+ <p>The mapping for elements and attributes that are defined in a complex
+ type is described in <a href="#2.8">Section 2.8, "Mapping for Local
+ Elements and Attributes"</a>.
+ </p>
+
+ <h3><a name="2.7.1">2.7.1 Mapping for Derivation by Extension</a></h3>
+
+ <p>XML Schema derivation by extension is mapped to C++ public
+ inheritance. The base type of the extension becomes the base
+ type for the resulting C++ class.
+ </p>
+
+ <h3><a name="2.7.2">2.7.2 Mapping for Derivation by Restriction</a></h3>
+
+ <p>XML Schema derivation by restriction is mapped to C++ public
+ inheritance. The base type of the restriction becomes the base
+ type for the resulting C++ class. XML Schema elements and
+ attributes defined within restriction do not result in any
+ definitions in the resulting C++ class. Instead, corresponding
+ (unrestricted) definitions are inherited from the base class.
+ In the future versions of this mapping, such elements and
+ attributes may result in redefinitions of accessors and
+ modifiers to reflect their restricted semantics.
+ </p>
+
+ <!-- 2.8 Mapping for Local Elements and Attributes -->
+
+ <h2><a name="2.8">2.8 Mapping for Local Elements and Attributes</a></h2>
+
+ <p>XML Schema element and attribute definitions are called local
+ if they appear within a complex type definition, an element group
+ definition, or an attribute group definitions.
+ </p>
+
+ <p>Local XML Schema element and attribute definitions have the same
+ C++ mapping. Therefore, in this section, local elements and
+ attributes are collectively called members.
+ </p>
+
+ <p>While there are many different member cardinality combinations
+ (determined by the <code>use</code> attribute for attributes and
+ the <code>minOccurs</code> and <code>maxOccurs</code> attributes
+ for elements), the mapping divides all possible cardinality
+ combinations into three cardinality classes:
+ </p>
+
+ <dl>
+ <dt><i>one</i></dt>
+ <dd>attributes: <code>use == "required"</code></dd>
+ <dd>attributes: <code>use == "optional"</code> and has default or fixed value</dd>
+ <dd>elements: <code>minOccurs == "1"</code> and <code>maxOccurs == "1"</code></dd>
+
+ <dt><i>optional</i></dt>
+ <dd>attributes: <code>use == "optional"</code> and doesn't have default or fixed value</dd>
+ <dd>elements: <code>minOccurs == "0"</code> and <code>maxOccurs == "1"</code></dd>
+
+ <dt><i>sequence</i></dt>
+ <dd>elements: <code>maxOccurs > "1"</code></dd>
+ </dl>
+
+ <p>An optional attribute with a default or fixed value acquires this value
+ if the attribute hasn't been specified in an instance document (see
+ <a href="#A">Appendix A, "Default and Fixed Values"</a>). This
+ mapping places such optional attributes to the One cardinality
+ class.</p>
+
+ <p>A member is mapped to a set of public type definitions
+ (<code>typedef</code>s) and a set of public accessor and modifier
+ functions. Type definitions have names derived from the member's
+ name. The accessor and modifier functions have the same name as the
+ member. For example:
+ </p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="member" type="string"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ typedef xml_schema::string member_type;
+
+ const member_type&amp;
+ member () const;
+
+ ...
+
+};
+ </pre>
+
+ <p>In addition, if a member has a default or fixed value, a static
+ accessor function is generated that returns this value. For
+ example:</p>
+
+<pre class="xml">
+&lt;complexType name="object">
+ &lt;attribute name="data" type="string" default="test"/>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ typedef xml_schema::string data_type;
+
+ const data_type&amp;
+ data () const;
+
+ static const data_type&amp;
+ data_default_value ();
+
+ ...
+
+};
+ </pre>
+
+ <p>Names and semantics of type definitions for the member as well
+ as signatures of the accessor and modifier functions depend on
+ the member's cardinality class and are described in the following
+ sub-sections.
+ </p>
+
+
+ <h3><a name="2.8.1">2.8.1 Mapping for Members with the One Cardinality Class</a></h3>
+
+ <p>For the One cardinality class, the type definitions consist of
+ an alias for the member's type with the name created by appending
+ the <code>_type</code> suffix to the member's name.
+ </p>
+
+ <p>The accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to the
+ member and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the member and can
+ be used for read-write access.
+ </p>
+
+ <p>The first modifier function expects an argument of type reference to
+ constant of the member's type. It makes a deep copy of its argument.
+ Except for member's types that are mapped to fundamental C++ types,
+ the second modifier function is provided that expects an argument
+ of type automatic pointer (<code>std::unique_ptr</code> or
+ <code>std::auto_ptr</code>, depending on the C++ standard selected)
+ to the member's type. It assumes ownership of the pointed to object
+ and resets the passed automatic pointer. For instance:</p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="member" type="string"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef xml_schema::string member_type;
+
+ // Accessors.
+ //
+ const member_type&amp;
+ member () const;
+
+ member_type&amp;
+ member ();
+
+ // Modifiers.
+ //
+ void
+ member (const member_type&amp;);
+
+ void
+ member (std::[unique|auto]_ptr&lt;member_type>);
+ ...
+
+};
+ </pre>
+
+ <p>In addition, if requested by specifying the <code>--generate-detach</code>
+ option and only for members of non-fundamental C++ types, the mapping
+ provides a detach function that returns an automatic pointer to the
+ member's type, for example:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ ...
+
+ std::[unique|auto]_ptr&lt;member_type>
+ detach_member ();
+ ...
+
+};
+ </pre>
+
+ <p>This function detaches the value from the tree leaving the member
+ value uninitialized. Accessing such an uninitialized value prior to
+ re-initializing it results in undefined behavior.</p>
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o)
+{
+ using xml_schema::string;
+
+ string s (o.member ()); // get
+ object::member_type&amp; sr (o.member ()); // get
+
+ o.member ("hello"); // set, deep copy
+ o.member () = "hello"; // set, deep copy
+
+ // C++11 version.
+ //
+ std::unique_ptr&lt;string> p (new string ("hello"));
+ o.member (std::move (p)); // set, assumes ownership
+ p = o.detach_member (); // detach, member is uninitialized
+ o.member (std::move (p)); // re-attach
+
+ // C++98 version.
+ //
+ std::auto_ptr&lt;string> p (new string ("hello"));
+ o.member (p); // set, assumes ownership
+ p = o.detach_member (); // detach, member is uninitialized
+ o.member (p); // re-attach
+}
+ </pre>
+
+
+<h3><a name="2.8.2">2.8.2 Mapping for Members with the Optional Cardinality Class</a></h3>
+
+ <p>For the Optional cardinality class, the type definitions consist of
+ an alias for the member's type with the name created by appending
+ the <code>_type</code> suffix to the member's name and an alias for
+ the container type with the name created by appending the
+ <code>_optional</code> suffix to the member's name.
+ </p>
+
+ <p>Unlike accessor functions for the One cardinality class, accessor
+ functions for the Optional cardinality class return references to
+ corresponding containers rather than directly to members. The
+ accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to
+ the container and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the container
+ and can be used for read-write access.
+ </p>
+
+ <p>The modifier functions are overloaded for the member's
+ type and the container type. The first modifier function
+ expects an argument of type reference to constant of the
+ member's type. It makes a deep copy of its argument.
+ Except for member's types that are mapped to fundamental C++ types,
+ the second modifier function is provided that expects an argument
+ of type automatic pointer (<code>std::unique_ptr</code> or
+ <code>std::auto_ptr</code>, depending on the C++ standard selected)
+ to the member's type. It assumes ownership of the pointed to object
+ and resets the passed automatic pointer. The last modifier function
+ expects an argument of type reference to constant of the container
+ type. It makes a deep copy of its argument. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="member" type="string" minOccurs="0"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef xml_schema::string member_type;
+ typedef optional&lt;member_type> member_optional;
+
+ // Accessors.
+ //
+ const member_optional&amp;
+ member () const;
+
+ member_optional&amp;
+ member ();
+
+ // Modifiers.
+ //
+ void
+ member (const member_type&amp;);
+
+ void
+ member (std::[unique|auto]_ptr&lt;member_type>);
+
+ void
+ member (const member_optional&amp;);
+
+ ...
+
+};
+ </pre>
+
+
+ <p>The <code>optional</code> class template is defined in an
+ implementation-specific namespace and has the following
+ interface. The <code>[unique|auto]_ptr</code>-based constructor
+ and modifier function are only available if the template
+ argument is not a fundamental C++ type.
+ </p>
+
+ <pre class="c++">
+template &lt;typename X>
+class optional
+{
+public:
+ optional ();
+
+ // Makes a deep copy.
+ //
+ explicit
+ optional (const X&amp;);
+
+ // Assumes ownership.
+ //
+ explicit
+ optional (std::[unique|auto]_ptr&lt;X>);
+
+ optional (const optional&amp;);
+
+public:
+ optional&amp;
+ operator= (const X&amp;);
+
+ optional&amp;
+ operator= (const optional&amp;);
+
+ // Pointer-like interface.
+ //
+public:
+ const X*
+ operator-> () const;
+
+ X*
+ operator-> ();
+
+ const X&amp;
+ operator* () const;
+
+ X&amp;
+ operator* ();
+
+ typedef void (optional::*bool_convertible) ();
+ operator bool_convertible () const;
+
+ // Get/set interface.
+ //
+public:
+ bool
+ present () const;
+
+ const X&amp;
+ get () const;
+
+ X&amp;
+ get ();
+
+ // Makes a deep copy.
+ //
+ void
+ set (const X&amp;);
+
+ // Assumes ownership.
+ //
+ void
+ set (std::[unique|auto]_ptr&lt;X>);
+
+ // Detach and return the contained value.
+ //
+ std::[unique|auto]_ptr&lt;X>
+ detach ();
+
+ void
+ reset ();
+};
+
+template &lt;typename X>
+bool
+operator== (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+
+template &lt;typename X>
+bool
+operator!= (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+
+template &lt;typename X>
+bool
+operator&lt; (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+
+template &lt;typename X>
+bool
+operator> (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+
+template &lt;typename X>
+bool
+operator&lt;= (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+
+template &lt;typename X>
+bool
+operator>= (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+ </pre>
+
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o)
+{
+ using xml_schema::string;
+
+ if (o.member ().present ()) // test
+ {
+ string&amp; s (o.member ().get ()); // get
+ o.member ("hello"); // set, deep copy
+ o.member ().set ("hello"); // set, deep copy
+ o.member ().reset (); // reset
+ }
+
+ // Same as above but using pointer notation:
+ //
+ if (o.member ()) // test
+ {
+ string&amp; s (*o.member ()); // get
+ o.member ("hello"); // set, deep copy
+ *o.member () = "hello"; // set, deep copy
+ o.member ().reset (); // reset
+ }
+
+ // C++11 version.
+ //
+ std::unique_ptr&lt;string> p (new string ("hello"));
+ o.member (std::move (p)); // set, assumes ownership
+
+ p.reset (new string ("hello"));
+ o.member ().set (std::move (p)); // set, assumes ownership
+
+ p = o.member ().detach (); // detach, member is reset
+ o.member ().set (std::move (p)); // re-attach
+
+ // C++98 version.
+ //
+ std::auto_ptr&lt;string> p (new string ("hello"));
+ o.member (p); // set, assumes ownership
+
+ p = new string ("hello");
+ o.member ().set (p); // set, assumes ownership
+
+ p = o.member ().detach (); // detach, member is reset
+ o.member ().set (p); // re-attach
+}
+ </pre>
+
+
+ <h3><a name="2.8.3">2.8.3 Mapping for Members with the Sequence Cardinality Class</a></h3>
+
+ <p>For the Sequence cardinality class, the type definitions consist of an
+ alias for the member's type with the name created by appending
+ the <code>_type</code> suffix to the member's name, an alias of
+ the container type with the name created by appending the
+ <code>_sequence</code> suffix to the member's name, an alias of
+ the iterator type with the name created by appending the
+ <code>_iterator</code> suffix to the member's name, and an alias
+ of the constant iterator type with the name created by appending the
+ <code>_const_iterator</code> suffix to the member's name.
+ </p>
+
+ <p>The accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to the
+ container and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the container and can
+ be used for read-write access.
+ </p>
+
+ <p>The modifier function expects an argument of type reference to
+ constant of the container type. The modifier function
+ makes a deep copy of its argument. For instance:
+ </p>
+
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="member" type="string" minOccurs="unbounded"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef xml_schema::string member_type;
+ typedef sequence&lt;member_type> member_sequence;
+ typedef member_sequence::iterator member_iterator;
+ typedef member_sequence::const_iterator member_const_iterator;
+
+ // Accessors.
+ //
+ const member_sequence&amp;
+ member () const;
+
+ member_sequence&amp;
+ member ();
+
+ // Modifier.
+ //
+ void
+ member (const member_sequence&amp;);
+
+ ...
+
+};
+ </pre>
+
+ <p>The <code>sequence</code> class template is defined in an
+ implementation-specific namespace. It conforms to the
+ sequence interface as defined by the ISO/ANSI Standard for
+ C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences").
+ Practically, this means that you can treat such a sequence
+ as if it was <code>std::vector</code>. Two notable extensions
+ to the standard interface that are available only for
+ sequences of non-fundamental C++ types are the addition of
+ the overloaded <code>push_back</code> and <code>insert</code>
+ as well as the <code>detach_back</code> and <code>detach</code>
+ member functions. The additional <code>push_back</code> and
+ <code>insert</code> functions accept an automatic pointer
+ (<code>std::unique_ptr</code> or <code>std::auto_ptr</code>,
+ depending on the C++ standard selected) to the
+ element type instead of the constant reference. They assume
+ ownership of the pointed to object and reset the passed
+ automatic pointer. The <code>detach_back</code> and
+ <code>detach</code> functions detach the element
+ value from the sequence container and, by default, remove
+ the element from the sequence. These additional functions
+ have the following signatures:</p>
+
+ <pre class="c++">
+template &lt;typename X>
+class sequence
+{
+public:
+ ...
+
+ void
+ push_back (std::[unique|auto]_ptr&lt;X>)
+
+ iterator
+ insert (iterator position, std::[unique|auto]_ptr&lt;X>)
+
+ std::[unique|auto]_ptr&lt;X>
+ detach_back (bool pop = true);
+
+ iterator
+ detach (iterator position,
+ std::[unique|auto]_ptr&lt;X>&amp; result,
+ bool erase = true)
+
+ ...
+}
+ </pre>
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o)
+{
+ using xml_schema::string;
+
+ object::member_sequence&amp; s (o.member ());
+
+ // Iteration.
+ //
+ for (object::member_iterator i (s.begin ()); i != s.end (); ++i)
+ {
+ string&amp; value (*i);
+ }
+
+ // Modification.
+ //
+ s.push_back ("hello"); // deep copy
+
+ // C++11 version.
+ //
+ std::unique_ptr&lt;string> p (new string ("hello"));
+ s.push_back (std::move (p)); // assumes ownership
+ p = s.detach_back (); // detach and pop
+ s.push_back (std::move (p)); // re-append
+
+ // C++98 version.
+ //
+ std::auto_ptr&lt;string> p (new string ("hello"));
+ s.push_back (p); // assumes ownership
+ p = s.detach_back (); // detach and pop
+ s.push_back (p); // re-append
+
+ // Setting a new container.
+ //
+ object::member_sequence n;
+ n.push_back ("one");
+ n.push_back ("two");
+ o.member (n); // deep copy
+}
+ </pre>
+
+ <h3><a name="2.8.4">2.8.4 Element Order</a></h3>
+
+ <p>C++/Tree is a "flattening" mapping in a sense that many levels of
+ nested compositors (<code>choice</code> and <code>sequence</code>),
+ all potentially with their own cardinalities, are in the end mapped
+ to a flat set of elements with one of the three cardinality classes
+ discussed in the previous sections. While this results in a simple
+ and easy to use API for most types, in certain cases, the order of
+ elements in the actual XML documents is not preserved once parsed
+ into the object model. And sometimes such order has
+ application-specific significance. As an example, consider a schema
+ that defines a batch of bank transactions:</p>
+
+ <pre class="xml">
+&lt;complexType name="withdraw">
+ &lt;sequence>
+ &lt;element name="account" type="unsignedInt"/>
+ &lt;element name="amount" type="unsignedInt"/>
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;complexType name="deposit">
+ &lt;sequence>
+ &lt;element name="account" type="unsignedInt"/>
+ &lt;element name="amount" type="unsignedInt"/>
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;complexType name="batch">
+ &lt;choice minOccurs="0" maxOccurs="unbounded">
+ &lt;element name="withdraw" type="withdraw"/>
+ &lt;element name="deposit" type="deposit"/>
+ &lt;/choice>
+&lt;/complexType>
+ </pre>
+
+ <p>The batch can contain any number of transactions in any order
+ but the order of transactions in each actual batch is significant.
+ For instance, consider what could happen if we reorder the
+ transactions and apply all the withdrawals before deposits.</p>
+
+ <p>For the <code>batch</code> schema type defined above the default
+ C++/Tree mapping will produce a C++ class that contains a pair of
+ sequence containers, one for each of the two elements. While this
+ will capture the content (transactions), the order of this content
+ as it appears in XML will be lost. Also, if we try to serialize the
+ batch we just loaded back to XML, all the withdrawal transactions
+ will appear before deposits.</p>
+
+ <p>To overcome this limitation of a flattening mapping, C++/Tree
+ allows us to mark certain XML Schema types, for which content
+ order is important, as ordered.</p>
+
+ <p>There are several command line options that control which
+ schema types are treated as ordered. To make an individual
+ type ordered, we use the <code>--ordered-type</code> option,
+ for example:</p>
+
+ <pre class="term">
+--ordered-type batch
+ </pre>
+
+ <p>To automatically treat all the types that are derived from an ordered
+ type also ordered, we use the <code>--ordered-type-derived</code>
+ option. This is primarily useful if you would like to iterate
+ over the complete hierarchy's content using the content order
+ sequence (discussed below).</p>
+
+ <p>Ordered types are also useful for handling mixed content. To
+ automatically mark all the types with mixed content as ordered
+ we use the <code>--ordered-type-mixed</code> option. For more
+ information on handling mixed content see <a href="#2.13">Section
+ 2.13, "Mapping for Mixed Content Models"</a>.</p>
+
+ <p>Finally, we can mark all the types in the schema we are
+ compiling with the <code>--ordered-type-all</code> option.
+ You should only resort to this option if all the types in
+ your schema truly suffer from the loss of content
+ order since, as we will discuss shortly, ordered types
+ require extra effort to access and, especially, modify.
+ See the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a> for more information on
+ these options.</p>
+
+ <p>Once a type is marked ordered, C++/Tree alters its mapping
+ in several ways. Firstly, for each local element, element
+ wildcard (<a href="#2.12.4">Section 2.12.4, "Element Wildcard
+ Order"</a>), and mixed content text (<a href="#2.13">Section
+ 2.13, "Mapping for Mixed Content Models"</a>) in this type, a
+ content id constant is generated. Secondly, an addition sequence
+ is added to the class that captures the content order. Here
+ is how the mapping of our <code>batch</code> class changes
+ once we make it ordered:</p>
+
+ <pre class="c++">
+class batch: public xml_schema::type
+{
+public:
+ // withdraw
+ //
+ typedef withdraw withdraw_type;
+ typedef sequence&lt;withdraw_type> withdraw_sequence;
+ typedef withdraw_sequence::iterator withdraw_iterator;
+ typedef withdraw_sequence::const_iterator withdraw_const_iterator;
+
+ static const std::size_t withdraw_id = 1;
+
+ const withdraw_sequence&amp;
+ withdraw () const;
+
+ withdraw_sequence&amp;
+ withdraw ();
+
+ void
+ withdraw (const withdraw_sequence&amp;);
+
+ // deposit
+ //
+ typedef deposit deposit_type;
+ typedef sequence&lt;deposit_type> deposit_sequence;
+ typedef deposit_sequence::iterator deposit_iterator;
+ typedef deposit_sequence::const_iterator deposit_const_iterator;
+
+ static const std::size_t deposit_id = 2;
+
+ const deposit_sequence&amp;
+ deposit () const;
+
+ deposit_sequence&amp;
+ deposit ();
+
+ void
+ deposit (const deposit_sequence&amp;);
+
+ // content_order
+ //
+ typedef xml_schema::content_order content_order_type;
+ typedef std::vector&lt;content_order_type> content_order_sequence;
+ typedef content_order_sequence::iterator content_order_iterator;
+ typedef content_order_sequence::const_iterator content_order_const_iterator;
+
+ const content_order_sequence&amp;
+ content_order () const;
+
+ content_order_sequence&amp;
+ content_order ();
+
+ void
+ content_order (const content_order_sequence&amp;);
+
+ ...
+};
+ </pre>
+
+ <p>Notice the <code>withdraw_id</code> and <code>deposit_id</code>
+ content ids as well as the extra <code>content_order</code>
+ sequence that does not correspond to any element in the
+ schema definition. The other changes to the mapping for ordered
+ types has to do with XML parsing and serialization code. During
+ parsing the content order is captured in the <code>content_order</code>
+ sequence while during serialization this sequence is used to
+ determine the order in which content is serialized. The
+ <code>content_order</code> sequence is also copied during
+ copy construction and assigned during copy assignment. It is also
+ taken into account during comparison.</p>
+
+ <p>The entry type of the <code>content_order</code> sequence is the
+ <code>xml_schema::content_order</code> type that has the following
+ interface:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ struct content_order
+ {
+ content_order (std::size_t id, std::size_t index = 0);
+
+ std::size_t id;
+ std::size_t index;
+ };
+
+ bool
+ operator== (const content_order&amp;, const content_order&amp;);
+
+ bool
+ operator!= (const content_order&amp;, const content_order&amp;);
+
+ bool
+ operator&lt; (const content_order&amp;, const content_order&amp;);
+}
+ </pre>
+
+ <p>The <code>content_order</code> sequence describes the order of
+ content (elements, including wildcards, as well as mixed content
+ text). Each entry in this sequence consists of the content id
+ (for example, <code>withdraw_id</code> or <code>deposit_id</code>
+ in our case) as well as, for elements of the sequence cardinality
+ class, an index into the corresponding sequence container (the
+ index is unused for the one and optional cardinality classes).
+ For example, in our case, if the content id is <code>withdraw_id</code>,
+ then the index will point into the <code>withdraw</code> element
+ sequence.</p>
+
+ <p>With all this information we can now examine how to iterate over
+ transaction in the batch in content order:</p>
+
+ <pre class="c++">
+batch&amp; b = ...
+
+for (batch::content_order_const_iterator i (b.content_order ().begin ());
+ i != b.content_order ().end ();
+ ++i)
+{
+ switch (i->id)
+ {
+ case batch::withdraw_id:
+ {
+ const withdraw&amp; t (b.withdraw ()[i->index]);
+ cerr &lt;&lt; t.account () &lt;&lt; " withdraw " &lt;&lt; t.amount () &lt;&lt; endl;
+ break;
+ }
+ case batch::deposit_id:
+ {
+ const deposit&amp; t (b.deposit ()[i->index]);
+ cerr &lt;&lt; t.account () &lt;&lt; " deposit " &lt;&lt; t.amount () &lt;&lt; endl;
+ break;
+ }
+ default:
+ {
+ assert (false); // Unknown content id.
+ }
+ }
+}
+ </pre>
+
+ <p>If we serialized our batch back to XML, we would also see that the
+ order of transactions in the output is exactly the same as in the
+ input rather than all the withdrawals first followed by all the
+ deposits.</p>
+
+ <p>The most complex aspect of working with ordered types is
+ modifications. Now we not only need to change the content,
+ but also remember to update the order information corresponding
+ to this change. As a first example, we add a deposit transaction
+ to the batch:</p>
+
+ <pre class="c++">
+using xml_schema::content_order;
+
+batch::deposit_sequence&amp; d (b.deposit ());
+batch::withdraw_sequence&amp; w (b.withdraw ());
+batch::content_order_sequence&amp; co (b.content_order ());
+
+d.push_back (deposit (123456789, 100000));
+co.push_back (content_order (batch::deposit_id, d.size () - 1));
+ </pre>
+
+ <p>In the above example we first added the content (deposit
+ transaction) and then updated the content order information
+ by adding an entry with <code>deposit_id</code> content
+ id and the index of the just added deposit transaction.</p>
+
+ <p>Removing the last transaction can be easy if we know which
+ transaction (deposit or withdrawal) is last:</p>
+
+ <pre class="c++">
+d.pop_back ();
+co.pop_back ();
+ </pre>
+
+ <p>If, however, we do not know which transaction is last, then
+ things get a bit more complicated:</p>
+
+ <pre class="c++">
+switch (co.back ().id)
+{
+case batch::withdraw_id:
+ {
+ d.pop_back ();
+ break;
+ }
+case batch::deposit_id:
+ {
+ w.pop_back ();
+ break;
+ }
+}
+
+co.pop_back ();
+ </pre>
+
+ <p>The following example shows how to add a transaction at the
+ beginning of the batch:</p>
+
+ <pre class="c++">
+w.push_back (withdraw (123456789, 100000));
+co.insert (co.begin (),
+ content_order (batch::withdraw_id, w.size () - 1));
+ </pre>
+
+ <p>Note also that when we merely modify the content of one
+ of the elements in place, we do not need to update its
+ order since it doesn't change. For example, here is how
+ we can change the amount in the first withdrawal:</p>
+
+ <pre class="c++">
+w[0].amount (10000);
+ </pre>
+
+ <p>For the complete working code shown in this section refer to the
+ <code>order/element</code> example in the
+ <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a>
+ package.</p>
+
+ <p>If both the base and derived types are ordered, then the
+ content order sequence is only added to the base and the content
+ ids are unique within the whole hierarchy. In this case
+ the content order sequence for the derived type contains
+ ordering information for both base and derived content.</p>
+
+ <p>In some applications we may need to perform more complex
+ content processing. For example, in our case, we may need
+ to remove all the withdrawal transactions. The default
+ container, <code>std::vector</code>, is not particularly
+ suitable for such operations. What may be required by
+ some applications is a multi-index container that not
+ only allows us to iterate in content order similar to
+ <code>std::vector</code> but also search by the content
+ id as well as the content id and index pair.</p>
+
+ <p>While C++/Tree does not provide this functionality by
+ default, it allows us to specify a custom container
+ type for content order with the <code>--order-container</code>
+ command line option. The only requirement from the
+ generated code side for such a container is to provide
+ the <code>vector</code>-like <code>push_back()</code>,
+ <code>size()</code>, and const iteration interfaces.</p>
+
+ <p>As an example, here is how we can use the Boost Multi-Index
+ container for content order. First we create the
+ <code>content-order-container.hxx</code> header with the
+ following definition:</p>
+
+ <pre class="c++">
+#ifndef CONTENT_ORDER_CONTAINER
+#define CONTENT_ORDER_CONTAINER
+
+#include &lt;cstddef> // std::size_t
+
+#include &lt;boost/multi_index_container.hpp>
+#include &lt;boost/multi_index/member.hpp>
+#include &lt;boost/multi_index/identity.hpp>
+#include &lt;boost/multi_index/ordered_index.hpp>
+#include &lt;boost/multi_index/random_access_index.hpp>
+
+struct by_id {};
+struct by_id_index {};
+
+template &lt;typename T>
+using content_order_container =
+ boost::multi_index::multi_index_container&lt;
+ T,
+ boost::multi_index::indexed_by&lt;
+ boost::multi_index::random_access&lt;>,
+ boost::multi_index::ordered_unique&lt;
+ boost::multi_index::tag&lt;by_id_index>,
+ boost::multi_index::identity&lt;T>
+ >,
+ boost::multi_index::ordered_non_unique&lt;
+ boost::multi_index::tag&lt;by_id>,
+ boost::multi_index::member&lt;T, std::size_t, &amp;T::id>
+ >
+ >
+ >;
+
+#endif
+ </pre>
+
+ <p>Next we add the following two XSD compiler options to include
+ this header into every generated header file and to use the
+ custom container type (see the XSD compiler command line manual
+ for more information on shell quoting for the first option):</p>
+
+ <pre class="term">
+--hxx-prologue '#include "content-order-container.hxx"'
+--order-container content_order_container
+ </pre>
+
+ <p>With these changes we can now use the multi-index functionality,
+ for example, to search for a specific content id:</p>
+
+ <pre class="c++">
+typedef batch::content_order_sequence::index&lt;by_id>::type id_set;
+typedef id_set::iterator id_iterator;
+
+const id_set&amp; ids (b.content_order ().get&lt;by_id> ());
+
+std::pair&lt;id_iterator, id_iterator> r (
+ ids.equal_range (std::size_t (batch::deposit_id));
+
+for (id_iterator i (r.first); i != r.second; ++i)
+{
+ const deposit&amp; t (b.deposit ()[i->index]);
+ cerr &lt;&lt; t.account () &lt;&lt; " deposit " &lt;&lt; t.amount () &lt;&lt; endl;
+}
+ </pre>
+
+ <h2><a name="2.9">2.9 Mapping for Global Elements</a></h2>
+
+ <p>An XML Schema element definition is called global if it appears
+ directly under the <code>schema</code> element.
+ A global element is a valid root of an instance document. By
+ default, a global element is mapped to a set of overloaded
+ parsing and, optionally, serialization functions with the
+ same name as the element. It is also possible to generate types
+ for root elements instead of parsing and serialization functions.
+ This is primarily useful to distinguish object models with the
+ same root type but with different root elements. See
+ <a href="#2.9.1">Section 2.9.1, "Element Types"</a> for details.
+ It is also possible to request the generation of an element map
+ which allows uniform parsing and serialization of multiple root
+ elements. See <a href="#2.9.2">Section 2.9.2, "Element Map"</a>
+ for details.
+ </p>
+
+ <p>The parsing functions read XML instance documents and return
+ corresponding object models as an automatic pointer
+ (<code>std::unique_ptr</code> or <code>std::auto_ptr</code>,
+ depending on the C++ standard selected). Their signatures
+ have the following pattern (<code>type</code> denotes
+ element's type and <code>name</code> denotes element's
+ name):
+ </p>
+
+ <pre class="c++">
+std::[unique|auto]_ptr&lt;type>
+name (....);
+ </pre>
+
+ <p>The process of parsing, including the exact signatures of the parsing
+ functions, is the subject of <a href="#3">Chapter 3, "Parsing"</a>.
+ </p>
+
+ <p>The serialization functions write object models back to XML instance
+ documents. Their signatures have the following pattern:
+ </p>
+
+ <pre class="c++">
+void
+name (&lt;stream type>&amp;, const type&amp;, ....);
+ </pre>
+
+ <p>The process of serialization, including the exact signatures of the
+ serialization functions, is the subject of <a href="#4">Chapter 4,
+ "Serialization"</a>.
+ </p>
+
+
+ <h3><a name="2.9.1">2.9.1 Element Types</a></h3>
+
+ <p>The generation of element types is requested with the
+ <code>--generate-element-type</code> option. With this option
+ each global element is mapped to a C++ class with the
+ same name as the element. Such a class is derived from
+ <code>xml_schema::element_type</code> and contains the same set
+ of type definitions, constructors, and member function as would a
+ type containing a single element with the One cardinality class
+ named <code>"value"</code>. In addition, the element type also
+ contains a set of member functions for accessing the element
+ name and namespace as well as its value in a uniform manner.
+ For example:</p>
+
+ <pre class="xml">
+&lt;complexType name="type">
+ &lt;sequence>
+ ...
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;element name="root" type="type"/>
+ </pre>
+
+<p>is mapped to:</p>
+
+ <pre class="c++">
+class type
+{
+ ...
+};
+
+class root: public xml_schema::element_type
+{
+public:
+ // Element value.
+ //
+ typedef type value_type;
+
+ const value_type&amp;
+ value () const;
+
+ value_type&amp;
+ value ();
+
+ void
+ value (const value_type&amp;);
+
+ void
+ value (std::[unique|auto]_ptr&lt;value_type>);
+
+ // Constructors.
+ //
+ root (const value_type&amp;);
+
+ root (std::[unique|auto]_ptr&lt;value_type>);
+
+ root (const xercesc::DOMElement&amp;, xml_schema::flags = 0);
+
+ root (const root&amp;, xml_schema::flags = 0);
+
+ virtual root*
+ _clone (xml_schema::flags = 0) const;
+
+ // Element name and namespace.
+ //
+ static const std::string&amp;
+ name ();
+
+ static const std::string&amp;
+ namespace_ ();
+
+ virtual const std::string&amp;
+ _name () const;
+
+ virtual const std::string&amp;
+ _namespace () const;
+
+ // Element value as xml_schema::type.
+ //
+ virtual const xml_schema::type*
+ _value () const;
+
+ virtual xml_schema::type*
+ _value ();
+};
+
+void
+operator&lt;&lt; (xercesc::DOMElement&amp;, const root&amp;);
+ </pre>
+
+ <p>The <code>xml_schema::element_type</code> class is a common
+ base type for all element types and is defined as follows:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class element_type
+ {
+ public:
+ virtual
+ ~element_type ();
+
+ virtual element_type*
+ _clone (flags f = 0) const = 0;
+
+ virtual const std::basic_string&lt;C>&amp;
+ _name () const = 0;
+
+ virtual const std::basic_string&lt;C>&amp;
+ _namespace () const = 0;
+
+ virtual xml_schema::type*
+ _value () = 0;
+
+ virtual const xml_schema::type*
+ _value () const = 0;
+ };
+}
+ </pre>
+
+ <p>The <code>_value()</code> member function returns a pointer to
+ the element value or 0 if the element is of a fundamental C++
+ type and therefore is not derived from <code>xml_schema::type</code>.
+ </p>
+
+ <p>Unlike parsing and serialization functions, element types
+ are only capable of parsing and serializing from/to a
+ <code>DOMElement</code> object. This means that the application
+ will need to perform its own XML-to-DOM parsing and DOM-to-XML
+ serialization. The following section describes a mechanism
+ provided by the mapping to uniformly parse and serialize
+ multiple root elements.</p>
+
+
+ <h3><a name="2.9.2">2.9.2 Element Map</a></h3>
+
+ <p>When element types are generated for root elements it is also
+ possible to request the generation of an element map with the
+ <code>--generate-element-map</code> option. The element map
+ allows uniform parsing and serialization of multiple root
+ elements via the common <code>xml_schema::element_type</code>
+ base type. The <code>xml_schema::element_map</code> class is
+ defined as follows:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class element_map
+ {
+ public:
+ static std::[unique|auto]_ptr&lt;xml_schema::element_type>
+ parse (const xercesc::DOMElement&amp;, flags = 0);
+
+ static void
+ serialize (xercesc::DOMElement&amp;, const element_type&amp;);
+ };
+}
+ </pre>
+
+ <p>The <code>parse()</code> function creates the corresponding
+ element type object based on the element name and namespace
+ and returns it as an automatic pointer (<code>std::unique_ptr</code>
+ or <code>std::auto_ptr</code>, depending on the C++ standard
+ selected) to <code>xml_schema::element_type</code>.
+ The <code>serialize()</code> function serializes the passed element
+ object to <code>DOMElement</code>. Note that in case of
+ <code>serialize()</code>, the <code>DOMElement</code> object
+ should have the correct name and namespace. If no element type is
+ available for an element, both functions throw the
+ <code>xml_schema::no_element_info</code> exception:</p>
+
+ <pre class="c++">
+struct no_element_info: virtual exception
+{
+ no_element_info (const std::basic_string&lt;C>&amp; element_name,
+ const std::basic_string&lt;C>&amp; element_namespace);
+
+ const std::basic_string&lt;C>&amp;
+ element_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ element_namespace () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The application can discover the actual type of the element
+ object returned by <code>parse()</code> either using
+ <code>dynamic_cast</code> or by comparing element names and
+ namespaces. The following code fragments illustrate how the
+ element map can be used:</p>
+
+ <pre class="c++">
+// Parsing.
+//
+DOMElement&amp; e = ... // Parse XML to DOM.
+
+unique_ptr&lt;xml_schema::element_type> r (
+ xml_schema::element_map::parse (e));
+
+if (root1 r1 = dynamic_cast&lt;root1*> (r.get ()))
+{
+ ...
+}
+else if (r->_name == root2::name () &amp;&amp;
+ r->_namespace () == root2::namespace_ ())
+{
+ root2&amp; r2 (static_cast&lt;root2&amp;> (*r));
+
+ ...
+}
+ </pre>
+
+ <pre class="c++">
+// Serialization.
+//
+xml_schema::element_type&amp; r = ...
+
+string name (r._name ());
+string ns (r._namespace ());
+
+DOMDocument&amp; doc = ... // Create a new DOMDocument with name and ns.
+DOMElement&amp; e (*doc->getDocumentElement ());
+
+xml_schema::element_map::serialize (e, r);
+
+// Serialize DOMDocument to XML.
+ </pre>
+
+ <!-- -->
+
+ <h2><a name="2.10">2.10 Mapping for Global Attributes</a></h2>
+
+ <p>An XML Schema attribute definition is called global if it appears
+ directly under the <code>schema</code> element. A global
+ attribute does not have any mapping.
+ </p>
+
+ <!--
+ When it is referenced from
+ a local attribute definition (using the <code>ref</code> attribute)
+ it is treated as a local attribute (see Section 2.8, "Mapping for
+ Local Elements and Attributes").
+ -->
+
+ <h2><a name="2.11">2.11 Mapping for <code>xsi:type</code> and Substitution
+ Groups</a></h2>
+
+ <p>The mapping provides optional support for the XML Schema polymorphism
+ features (<code>xsi:type</code> and substitution groups) which can
+ be requested with the <code>--generate-polymorphic</code> option.
+ When used, the dynamic type of a member may be different from
+ its static type. Consider the following schema definition and
+ instance document:
+ </p>
+
+ <pre class="xml">
+&lt;!-- test.xsd -->
+&lt;schema>
+ &lt;complexType name="base">
+ &lt;attribute name="text" type="string"/>
+ &lt;/complexType>
+
+ &lt;complexType name="derived">
+ &lt;complexContent>
+ &lt;extension base="base">
+ &lt;attribute name="extra-text" type="string"/>
+ &lt;/extension>
+ &lt;/complexContent>
+ &lt;/complexType>
+
+ &lt;complexType name="root_type">
+ &lt;sequence>
+ &lt;element name="item" type="base" maxOccurs="unbounded"/>
+ &lt;/sequence>
+ &lt;/complexType>
+
+ &lt;element name="root" type="root_type"/>
+&lt;/schema>
+
+&lt;!-- test.xml -->
+&lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ &lt;item text="hello"/>
+ &lt;item text="hello" extra-text="world" xsi:type="derived"/>
+&lt;/root>
+ </pre>
+
+ <p>In the resulting object model, the container for
+ the <code>root::item</code> member will have two elements:
+ the first element's type will be <code>base</code> while
+ the second element's (dynamic) type will be
+ <code>derived</code>. This can be discovered using the
+ <code>dynamic_cast</code> operator as shown in the following
+ example:
+ </p>
+
+ <pre class="c++">
+void
+f (root&amp; r)
+{
+ for (root::item_const_iterator i (r.item ().begin ());
+ i != r.item ().end ()
+ ++i)
+ {
+ if (derived* d = dynamic_cast&lt;derived*> (&amp;(*i)))
+ {
+ // derived
+ }
+ else
+ {
+ // base
+ }
+ }
+}
+ </pre>
+
+ <p>The <code>_clone</code> virtual function should be used instead of
+ copy constructors to make copies of members that might use
+ polymorphism:
+ </p>
+
+ <pre class="c++">
+void
+f (root&amp; r)
+{
+ for (root::item_const_iterator i (r.item ().begin ());
+ i != r.item ().end ()
+ ++i)
+ {
+ std::unique_ptr&lt;base> c (i->_clone ());
+ }
+}
+ </pre>
+
+ <p>The mapping can often automatically determine which types are
+ polymorphic based on the substitution group declarations. However,
+ if your XML vocabulary is not using substitution groups or if
+ substitution groups are defined in a separate schema, then you will
+ need to use the <code>--polymorphic-type</code> option to specify
+ which types are polymorphic. When using this option you only need
+ to specify the root of a polymorphic type hierarchy and the mapping
+ will assume that all the derived types are also polymorphic.
+ Also note that you need to specify this option when compiling every
+ schema file that references the polymorphic type. Consider the following
+ two schemas as an example:</p>
+
+ <pre class="xml">
+&lt;!-- base.xsd -->
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:complexType name="base">
+ &lt;xs:sequence>
+ &lt;xs:element name="b" type="xs:int"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;!-- substitution group root -->
+ &lt;xs:element name="base" type="base"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <pre class="xml">
+&lt;!-- derived.xsd -->
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;include schemaLocation="base.xsd"/>
+
+ &lt;xs:complexType name="derived">
+ &lt;xs:complexContent>
+ &lt;xs:extension base="base">
+ &lt;xs:sequence>
+ &lt;xs:element name="d" type="xs:string"/>
+ &lt;/xs:sequence>
+ &lt;/xs:extension>
+ &lt;/xs:complexContent>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="derived" type="derived" substitutionGroup="base"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>In this example we need to specify "<code>--polymorphic-type base</code>"
+ when compiling both schemas because the substitution group is declared
+ in a schema other than the one defining type <code>base</code>.</p>
+
+ <p>You can also indicate that all types should be treated as polymorphic
+ with the <code>--polymorphic-type-all</code>. However, this may result
+ in slower generated code with a greater footprint.</p>
+
+
+ <!-- Mapping for any and anyAttribute -->
+
+
+ <h2><a name="2.12">2.12 Mapping for <code>any</code> and <code>anyAttribute</code></a></h2>
+
+ <p>For the XML Schema <code>any</code> and <code>anyAttribute</code>
+ wildcards an optional mapping can be requested with the
+ <code>--generate-wildcard</code> option. The mapping represents
+ the content matched by wildcards as DOM fragments. Because the
+ DOM API is used to access such content, the Xerces-C++ runtime
+ should be initialized by the application prior to parsing and
+ should remain initialized for the lifetime of objects with
+ the wildcard content. For more information on the Xerces-C++
+ runtime initialization see <a href="#3.1">Section 3.1,
+ "Initializing the Xerces-C++ Runtime"</a>.
+ </p>
+
+ <p>The mapping for <code>any</code> is similar to the mapping for
+ local elements (see <a href="#2.8">Section 2.8, "Mapping for Local
+ Elements and Attributes"</a>) except that the type used in the
+ wildcard mapping is <code>xercesc::DOMElement</code>. As with local
+ elements, the mapping divides all possible cardinality combinations
+ into three cardinality classes: <i>one</i>, <i>optional</i>, and
+ <i>sequence</i>.
+ </p>
+
+ <p>The mapping for <code>anyAttribute</code> represents the attributes
+ matched by this wildcard as a set of <code>xercesc::DOMAttr</code>
+ objects with a key being the attribute's name and namespace.</p>
+
+ <p>Similar to local elements and attributes, the <code>any</code> and
+ <code>anyAttribute</code> wildcards are mapped to a set of public type
+ definitions (typedefs) and a set of public accessor and modifier
+ functions. Type definitions have names derived from <code>"any"</code>
+ for the <code>any</code> wildcard and <code>"any_attribute"</code>
+ for the <code>anyAttribute</code> wildcard. The accessor and modifier
+ functions are named <code>"any"</code> for the <code>any</code> wildcard
+ and <code>"any_attribute"</code> for the <code>anyAttribute</code>
+ wildcard. Subsequent wildcards in the same type have escaped names
+ such as <code>"any1"</code> or <code>"any_attribute1"</code>.
+ </p>
+
+ <p>Because Xerces-C++ DOM nodes always belong to a <code>DOMDocument</code>,
+ each type with a wildcard has an associated <code>DOMDocument</code>
+ object. The reference to this object can be obtained using the accessor
+ function called <code>dom_document</code>. The access to the document
+ object from the application code may be necessary to create or modify
+ the wildcard content. For example:
+ </p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;any namespace="##other"/>
+ &lt;/sequence>
+ &lt;anyAttribute namespace="##other"/>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // any
+ //
+ const xercesc::DOMElement&amp;
+ any () const;
+
+ void
+ any (const xercesc::DOMElement&amp;);
+
+ ...
+
+ // any_attribute
+ //
+ typedef attribute_set any_attribute_set;
+ typedef any_attribute_set::iterator any_attribute_iterator;
+ typedef any_attribute_set::const_iterator any_attribute_const_iterator;
+
+ const any_attribute_set&amp;
+ any_attribute () const;
+
+ any_attribute_set&amp;
+ any_attribute ();
+
+ ...
+
+ // DOMDocument object for wildcard content.
+ //
+ const xercesc::DOMDocument&amp;
+ dom_document () const;
+
+ xercesc::DOMDocument&amp;
+ dom_document ();
+
+ ...
+};
+ </pre>
+
+
+ <p>Names and semantics of type definitions for the wildcards as well
+ as signatures of the accessor and modifier functions depend on the
+ wildcard type as well as the cardinality class for the <code>any</code>
+ wildcard. They are described in the following sub-sections.
+ </p>
+
+
+ <h3><a name="2.12.1">2.12.1 Mapping for <code>any</code> with the One Cardinality Class</a></h3>
+
+ <p>For <code>any</code> with the One cardinality class,
+ there are no type definitions. The accessor functions come in
+ constant and non-constant versions. The constant accessor function
+ returns a constant reference to <code>xercesc::DOMElement</code> and
+ can be used for read-only access. The non-constant version returns
+ an unrestricted reference to <code>xercesc::DOMElement</code> and can
+ be used for read-write access.
+ </p>
+
+ <p>The first modifier function expects an argument of type reference
+ to constant <code>xercesc::DOMElement</code> and makes a deep copy
+ of its argument. The second modifier function expects an argument of
+ type pointer to <code>xercesc::DOMElement</code>. This modifier
+ function assumes ownership of its argument and expects the element
+ object to be created using the DOM document associated with this
+ instance. For example:
+ </p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;any namespace="##other"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Accessors.
+ //
+ const xercesc::DOMElement&amp;
+ any () const;
+
+ xercesc::DOMElement&amp;
+ any ();
+
+ // Modifiers.
+ //
+ void
+ any (const xercesc::DOMElement&amp;);
+
+ void
+ any (xercesc::DOMElement*);
+
+ ...
+
+};
+ </pre>
+
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o, const xercesc::DOMElement&amp; e)
+{
+ using namespace xercesc;
+
+ DOMElement&amp; e1 (o.any ()); // get
+ o.any (e) // set, deep copy
+ DOMDocument&amp; doc (o.dom_document ());
+ o.any (doc.createElement (...)); // set, assumes ownership
+}
+ </pre>
+
+ <h3><a name="2.12.2">2.12.2 Mapping for <code>any</code> with the Optional Cardinality Class</a></h3>
+
+ <p>For <code>any</code> with the Optional cardinality class, the type
+ definitions consist of an alias for the container type with name
+ <code>any_optional</code> (or <code>any1_optional</code>, etc., for
+ subsequent wildcards in the type definition).
+ </p>
+
+ <p>Unlike accessor functions for the One cardinality class, accessor
+ functions for the Optional cardinality class return references to
+ corresponding containers rather than directly to <code>DOMElement</code>.
+ The accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to
+ the container and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the container
+ and can be used for read-write access.
+ </p>
+
+ <p>The modifier functions are overloaded for <code>xercesc::DOMElement</code>
+ and the container type. The first modifier function expects an argument of
+ type reference to constant <code>xercesc::DOMElement</code> and
+ makes a deep copy of its argument. The second modifier function
+ expects an argument of type pointer to <code>xercesc::DOMElement</code>.
+ This modifier function assumes ownership of its argument and expects
+ the element object to be created using the DOM document associated
+ with this instance. The third modifier function expects an argument
+ of type reference to constant of the container type and makes a
+ deep copy of its argument. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;any namespace="##other" minOccurs="0"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef element_optional any_optional;
+
+ // Accessors.
+ //
+ const any_optional&amp;
+ any () const;
+
+ any_optional&amp;
+ any ();
+
+ // Modifiers.
+ //
+ void
+ any (const xercesc::DOMElement&amp;);
+
+ void
+ any (xercesc::DOMElement*);
+
+ void
+ any (const any_optional&amp;);
+
+ ...
+
+};
+ </pre>
+
+
+ <p>The <code>element_optional</code> container is a
+ specialization of the <code>optional</code> class template described
+ in <a href="#2.8.2">Section 2.8.2, "Mapping for Members with the Optional
+ Cardinality Class"</a>. Its interface is presented below:
+ </p>
+
+ <pre class="c++">
+class element_optional
+{
+public:
+ explicit
+ element_optional (xercesc::DOMDocument&amp;);
+
+ // Makes a deep copy.
+ //
+ element_optional (const xercesc::DOMElement&amp;, xercesc::DOMDocument&amp;);
+
+ // Assumes ownership.
+ //
+ element_optional (xercesc::DOMElement*, xercesc::DOMDocument&amp;);
+
+ element_optional (const element_optional&amp;, xercesc::DOMDocument&amp;);
+
+public:
+ element_optional&amp;
+ operator= (const xercesc::DOMElement&amp;);
+
+ element_optional&amp;
+ operator= (const element_optional&amp;);
+
+ // Pointer-like interface.
+ //
+public:
+ const xercesc::DOMElement*
+ operator-> () const;
+
+ xercesc::DOMElement*
+ operator-> ();
+
+ const xercesc::DOMElement&amp;
+ operator* () const;
+
+ xercesc::DOMElement&amp;
+ operator* ();
+
+ typedef void (element_optional::*bool_convertible) ();
+ operator bool_convertible () const;
+
+ // Get/set interface.
+ //
+public:
+ bool
+ present () const;
+
+ const xercesc::DOMElement&amp;
+ get () const;
+
+ xercesc::DOMElement&amp;
+ get ();
+
+ // Makes a deep copy.
+ //
+ void
+ set (const xercesc::DOMElement&amp;);
+
+ // Assumes ownership.
+ //
+ void
+ set (xercesc::DOMElement*);
+
+ void
+ reset ();
+};
+
+bool
+operator== (const element_optional&amp;, const element_optional&amp;);
+
+bool
+operator!= (const element_optional&amp;, const element_optional&amp;);
+ </pre>
+
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o, const xercesc::DOMElement&amp; e)
+{
+ using namespace xercesc;
+
+ DOMDocument&amp; doc (o.dom_document ());
+
+ if (o.any ().present ()) // test
+ {
+ DOMElement&amp; e1 (o.any ().get ()); // get
+ o.any ().set (e); // set, deep copy
+ o.any ().set (doc.createElement (...)); // set, assumes ownership
+ o.any ().reset (); // reset
+ }
+
+ // Same as above but using pointer notation:
+ //
+ if (o.member ()) // test
+ {
+ DOMElement&amp; e1 (*o.any ()); // get
+ o.any (e); // set, deep copy
+ o.any (doc.createElement (...)); // set, assumes ownership
+ o.any ().reset (); // reset
+ }
+}
+ </pre>
+
+
+
+ <h3><a name="2.12.3">2.12.3 Mapping for <code>any</code> with the Sequence Cardinality Class</a></h3>
+
+ <p>For <code>any</code> with the Sequence cardinality class, the type
+ definitions consist of an alias of the container type with name
+ <code>any_sequence</code> (or <code>any1_sequence</code>, etc., for
+ subsequent wildcards in the type definition), an alias of the iterator
+ type with name <code>any_iterator</code> (or <code>any1_iterator</code>,
+ etc., for subsequent wildcards in the type definition), and an alias
+ of the constant iterator type with name <code>any_const_iterator</code>
+ (or <code>any1_const_iterator</code>, etc., for subsequent wildcards
+ in the type definition).
+ </p>
+
+ <p>The accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to the
+ container and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the container and can
+ be used for read-write access.
+ </p>
+
+ <p>The modifier function expects an argument of type reference to
+ constant of the container type. The modifier function makes
+ a deep copy of its argument. For instance:
+ </p>
+
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;any namespace="##other" minOccurs="unbounded"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef element_sequence any_sequence;
+ typedef any_sequence::iterator any_iterator;
+ typedef any_sequence::const_iterator any_const_iterator;
+
+ // Accessors.
+ //
+ const any_sequence&amp;
+ any () const;
+
+ any_sequence&amp;
+ any ();
+
+ // Modifier.
+ //
+ void
+ any (const any_sequence&amp;);
+
+ ...
+
+};
+ </pre>
+
+ <p>The <code>element_sequence</code> container is a
+ specialization of the <code>sequence</code> class template described
+ in <a href="#2.8.3">Section 2.8.3, "Mapping for Members with the
+ Sequence Cardinality Class"</a>. Its interface is similar to
+ the sequence interface as defined by the ISO/ANSI Standard for
+ C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences") and is
+ presented below:
+ </p>
+
+ <pre class="c++">
+class element_sequence
+{
+public:
+ typedef xercesc::DOMElement value_type;
+ typedef xercesc::DOMElement* pointer;
+ typedef const xercesc::DOMElement* const_pointer;
+ typedef xercesc::DOMElement&amp; reference;
+ typedef const xercesc::DOMElement&amp; const_reference;
+
+ typedef &lt;implementation-defined> iterator;
+ typedef &lt;implementation-defined> const_iterator;
+ typedef &lt;implementation-defined> reverse_iterator;
+ typedef &lt;implementation-defined> const_reverse_iterator;
+
+ typedef &lt;implementation-defined> size_type;
+ typedef &lt;implementation-defined> difference_type;
+ typedef &lt;implementation-defined> allocator_type;
+
+public:
+ explicit
+ element_sequence (xercesc::DOMDocument&amp;);
+
+ // DOMElement cannot be default-constructed.
+ //
+ // explicit
+ // element_sequence (size_type n);
+
+ element_sequence (size_type n,
+ const xercesc::DOMElement&amp;,
+ xercesc::DOMDocument&amp;);
+
+ template &lt;typename I>
+ element_sequence (const I&amp; begin,
+ const I&amp; end,
+ xercesc::DOMDocument&amp;);
+
+ element_sequence (const element_sequence&amp;, xercesc::DOMDocument&amp;);
+
+ element_sequence&amp;
+ operator= (const element_sequence&amp;);
+
+public:
+ void
+ assign (size_type n, const xercesc::DOMElement&amp;);
+
+ template &lt;typename I>
+ void
+ assign (const I&amp; begin, const I&amp; end);
+
+public:
+ // This version of resize can only be used to shrink the
+ // sequence because DOMElement cannot be default-constructed.
+ //
+ void
+ resize (size_type);
+
+ void
+ resize (size_type, const xercesc::DOMElement&amp;);
+
+public:
+ size_type
+ size () const;
+
+ size_type
+ max_size () const;
+
+ size_type
+ capacity () const;
+
+ bool
+ empty () const;
+
+ void
+ reserve (size_type);
+
+ void
+ clear ();
+
+public:
+ const_iterator
+ begin () const;
+
+ const_iterator
+ end () const;
+
+ iterator
+ begin ();
+
+ iterator
+ end ();
+
+ const_reverse_iterator
+ rbegin () const;
+
+ const_reverse_iterator
+ rend () const
+
+ reverse_iterator
+ rbegin ();
+
+ reverse_iterator
+ rend ();
+
+public:
+ xercesc::DOMElement&amp;
+ operator[] (size_type);
+
+ const xercesc::DOMElement&amp;
+ operator[] (size_type) const;
+
+ xercesc::DOMElement&amp;
+ at (size_type);
+
+ const xercesc::DOMElement&amp;
+ at (size_type) const;
+
+ xercesc::DOMElement&amp;
+ front ();
+
+ const xercesc::DOMElement&amp;
+ front () const;
+
+ xercesc::DOMElement&amp;
+ back ();
+
+ const xercesc::DOMElement&amp;
+ back () const;
+
+public:
+ // Makes a deep copy.
+ //
+ void
+ push_back (const xercesc::DOMElement&amp;);
+
+ // Assumes ownership.
+ //
+ void
+ push_back (xercesc::DOMElement*);
+
+ void
+ pop_back ();
+
+ // Makes a deep copy.
+ //
+ iterator
+ insert (iterator position, const xercesc::DOMElement&amp;);
+
+ // Assumes ownership.
+ //
+ iterator
+ insert (iterator position, xercesc::DOMElement*);
+
+ void
+ insert (iterator position, size_type n, const xercesc::DOMElement&amp;);
+
+ template &lt;typename I>
+ void
+ insert (iterator position, const I&amp; begin, const I&amp; end);
+
+ iterator
+ erase (iterator position);
+
+ iterator
+ erase (iterator begin, iterator end);
+
+public:
+ // Note that the DOMDocument object of the two sequences being
+ // swapped should be the same.
+ //
+ void
+ swap (sequence&amp; x);
+};
+
+inline bool
+operator== (const element_sequence&amp;, const element_sequence&amp;);
+
+inline bool
+operator!= (const element_sequence&amp;, const element_sequence&amp;);
+ </pre>
+
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o, const xercesc::DOMElement&amp; e)
+{
+ using namespace xercesc;
+
+ object::any_sequence&amp; s (o.any ());
+
+ // Iteration.
+ //
+ for (object::any_iterator i (s.begin ()); i != s.end (); ++i)
+ {
+ DOMElement&amp; e (*i);
+ }
+
+ // Modification.
+ //
+ s.push_back (e); // deep copy
+ DOMDocument&amp; doc (o.dom_document ());
+ s.push_back (doc.createElement (...)); // assumes ownership
+}
+ </pre>
+
+ <h3><a name="2.12.4">2.12.4 Element Wildcard Order</a></h3>
+
+ <p>Similar to elements, element wildcards in ordered types
+ (<a href="#2.8.4">Section 2.8.4, "Element Order"</a>) are assigned
+ content ids and are included in the content order sequence.
+ Continuing with the bank transactions example started in Section
+ 2.8.4, we can extend the batch by allowing custom transactions:</p>
+
+ <pre class="xml">
+&lt;complexType name="batch">
+ &lt;choice minOccurs="0" maxOccurs="unbounded">
+ &lt;element name="withdraw" type="withdraw"/>
+ &lt;element name="deposit" type="deposit"/>
+ &lt;any namespace="##other" processContents="lax"/>
+ &lt;/choice>
+&lt;/complexType>
+ </pre>
+
+ <p>This will lead to the following changes in the generated
+ <code>batch</code> C++ class:</p>
+
+ <pre class="c++">
+class batch: public xml_schema::type
+{
+public:
+ ...
+
+ // any
+ //
+ typedef element_sequence any_sequence;
+ typedef any_sequence::iterator any_iterator;
+ typedef any_sequence::const_iterator any_const_iterator;
+
+ static const std::size_t any_id = 3UL;
+
+ const any_sequence&amp;
+ any () const;
+
+ any_sequence&amp;
+ any ();
+
+ void
+ any (const any_sequence&amp;);
+
+ ...
+};
+ </pre>
+
+ <p>With this change we also need to update the iteration code to handle
+ the new content id:</p>
+
+ <pre class="c++">
+for (batch::content_order_const_iterator i (b.content_order ().begin ());
+ i != b.content_order ().end ();
+ ++i)
+{
+ switch (i->id)
+ {
+ ...
+
+ case batch::any_id:
+ {
+ const DOMElement&amp; e (b.any ()[i->index]);
+ ...
+ break;
+ }
+
+ ...
+ }
+}
+ </pre>
+
+ <p>For the complete working code that shows the use of wildcards in
+ ordered types refer to the <code>order/element</code> example in
+ the <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a>
+ package.</p>
+
+ <h3><a name="2.12.5">2.12.5 Mapping for <code>anyAttribute</code></a></h3>
+
+ <p>For <code>anyAttribute</code> the type definitions consist of an alias
+ of the container type with name <code>any_attribute_set</code>
+ (or <code>any1_attribute_set</code>, etc., for subsequent wildcards
+ in the type definition), an alias of the iterator type with name
+ <code>any_attribute_iterator</code> (or <code>any1_attribute_iterator</code>,
+ etc., for subsequent wildcards in the type definition), and an alias
+ of the constant iterator type with name <code>any_attribute_const_iterator</code>
+ (or <code>any1_attribute_const_iterator</code>, etc., for subsequent
+ wildcards in the type definition).
+ </p>
+
+ <p>The accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to the
+ container and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the container and can
+ be used for read-write access.
+ </p>
+
+ <p>The modifier function expects an argument of type reference to
+ constant of the container type. The modifier function makes
+ a deep copy of its argument. For instance:
+ </p>
+
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ ...
+ &lt;/sequence>
+ &lt;anyAttribute namespace="##other"/>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef attribute_set any_attribute_set;
+ typedef any_attribute_set::iterator any_attribute_iterator;
+ typedef any_attribute_set::const_iterator any_attribute_const_iterator;
+
+ // Accessors.
+ //
+ const any_attribute_set&amp;
+ any_attribute () const;
+
+ any_attribute_set&amp;
+ any_attribute ();
+
+ // Modifier.
+ //
+ void
+ any_attribute (const any_attribute_set&amp;);
+
+ ...
+
+};
+ </pre>
+
+ <p>The <code>attribute_set</code> class is an associative container
+ similar to the <code>std::set</code> class template as defined by
+ the ISO/ANSI Standard for C++ (ISO/IEC 14882:1998, Section 23.3.3,
+ "Class template set") with the key being the attribute's name
+ and namespace. Unlike <code>std::set</code>, <code>attribute_set</code>
+ allows searching using names and namespaces instead of
+ <code>xercesc::DOMAttr</code> objects. It is defined in an
+ implementation-specific namespace and its interface is presented
+ below:
+ </p>
+
+ <pre class="c++">
+class attribute_set
+{
+public:
+ typedef xercesc::DOMAttr key_type;
+ typedef xercesc::DOMAttr value_type;
+ typedef xercesc::DOMAttr* pointer;
+ typedef const xercesc::DOMAttr* const_pointer;
+ typedef xercesc::DOMAttr&amp; reference;
+ typedef const xercesc::DOMAttr&amp; const_reference;
+
+ typedef &lt;implementation-defined> iterator;
+ typedef &lt;implementation-defined> const_iterator;
+ typedef &lt;implementation-defined> reverse_iterator;
+ typedef &lt;implementation-defined> const_reverse_iterator;
+
+ typedef &lt;implementation-defined> size_type;
+ typedef &lt;implementation-defined> difference_type;
+ typedef &lt;implementation-defined> allocator_type;
+
+public:
+ attribute_set (xercesc::DOMDocument&amp;);
+
+ template &lt;typename I>
+ attribute_set (const I&amp; begin, const I&amp; end, xercesc::DOMDocument&amp;);
+
+ attribute_set (const attribute_set&amp;, xercesc::DOMDocument&amp;);
+
+ attribute_set&amp;
+ operator= (const attribute_set&amp;);
+
+public:
+ const_iterator
+ begin () const;
+
+ const_iterator
+ end () const;
+
+ iterator
+ begin ();
+
+ iterator
+ end ();
+
+ const_reverse_iterator
+ rbegin () const;
+
+ const_reverse_iterator
+ rend () const;
+
+ reverse_iterator
+ rbegin ();
+
+ reverse_iterator
+ rend ();
+
+public:
+ size_type
+ size () const;
+
+ size_type
+ max_size () const;
+
+ bool
+ empty () const;
+
+ void
+ clear ();
+
+public:
+ // Makes a deep copy.
+ //
+ std::pair&lt;iterator, bool>
+ insert (const xercesc::DOMAttr&amp;);
+
+ // Assumes ownership.
+ //
+ std::pair&lt;iterator, bool>
+ insert (xercesc::DOMAttr*);
+
+ // Makes a deep copy.
+ //
+ iterator
+ insert (iterator position, const xercesc::DOMAttr&amp;);
+
+ // Assumes ownership.
+ //
+ iterator
+ insert (iterator position, xercesc::DOMAttr*);
+
+ template &lt;typename I>
+ void
+ insert (const I&amp; begin, const I&amp; end);
+
+public:
+ void
+ erase (iterator position);
+
+ size_type
+ erase (const std::basic_string&lt;C>&amp; name);
+
+ size_type
+ erase (const std::basic_string&lt;C>&amp; namespace_,
+ const std::basic_string&lt;C>&amp; name);
+
+ size_type
+ erase (const XMLCh* name);
+
+ size_type
+ erase (const XMLCh* namespace_, const XMLCh* name);
+
+ void
+ erase (iterator begin, iterator end);
+
+public:
+ size_type
+ count (const std::basic_string&lt;C>&amp; name) const;
+
+ size_type
+ count (const std::basic_string&lt;C>&amp; namespace_,
+ const std::basic_string&lt;C>&amp; name) const;
+
+ size_type
+ count (const XMLCh* name) const;
+
+ size_type
+ count (const XMLCh* namespace_, const XMLCh* name) const;
+
+ iterator
+ find (const std::basic_string&lt;C>&amp; name);
+
+ iterator
+ find (const std::basic_string&lt;C>&amp; namespace_,
+ const std::basic_string&lt;C>&amp; name);
+
+ iterator
+ find (const XMLCh* name);
+
+ iterator
+ find (const XMLCh* namespace_, const XMLCh* name);
+
+ const_iterator
+ find (const std::basic_string&lt;C>&amp; name) const;
+
+ const_iterator
+ find (const std::basic_string&lt;C>&amp; namespace_,
+ const std::basic_string&lt;C>&amp; name) const;
+
+ const_iterator
+ find (const XMLCh* name) const;
+
+ const_iterator
+ find (const XMLCh* namespace_, const XMLCh* name) const;
+
+public:
+ // Note that the DOMDocument object of the two sets being
+ // swapped should be the same.
+ //
+ void
+ swap (attribute_set&amp;);
+};
+
+bool
+operator== (const attribute_set&amp;, const attribute_set&amp;);
+
+bool
+operator!= (const attribute_set&amp;, const attribute_set&amp;);
+ </pre>
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o, const xercesc::DOMAttr&amp; a)
+{
+ using namespace xercesc;
+
+ object::any_attribute_set&amp; s (o.any_attribute ());
+
+ // Iteration.
+ //
+ for (object::any_attribute_iterator i (s.begin ()); i != s.end (); ++i)
+ {
+ DOMAttr&amp; a (*i);
+ }
+
+ // Modification.
+ //
+ s.insert (a); // deep copy
+ DOMDocument&amp; doc (o.dom_document ());
+ s.insert (doc.createAttribute (...)); // assumes ownership
+
+ // Searching.
+ //
+ object::any_attribute_iterator i (s.find ("name"));
+ i = s.find ("http://www.w3.org/XML/1998/namespace", "lang");
+}
+ </pre>
+
+ <!-- Mapping for Mixed Content Models -->
+
+ <h2><a name="2.13">2.13 Mapping for Mixed Content Models</a></h2>
+
+ <p>For XML Schema types with mixed content models C++/Tree provides
+ mapping support only if the type is marked as ordered
+ (<a href="#2.8.4">Section 2.8.4, "Element Order"</a>). Use the
+ <code>--ordered-type-mixed</code> XSD compiler option to
+ automatically mark all types with mixed content as ordered.</p>
+
+ <p>For an ordered type with mixed content, C++/Tree adds an extra
+ text content sequence that is used to store the text fragments.
+ This text content sequence is also assigned the content id and
+ its entries are included in the content order sequence, just
+ like elements. As a result, it is possible to capture the order
+ between elements and text fragments.</p>
+
+ <p>As an example, consider the following schema that describes text
+ with embedded links:</p>
+
+ <pre class="xml">
+&lt;complexType name="anchor">
+ &lt;simpleContent>
+ &lt;extension base="string">
+ &lt;attribute name="href" type="anyURI" use="required"/>
+ &lt;/extension>
+ &lt;/simpleContent>
+&lt;/complexType>
+
+&lt;complexType name="text" mixed="true">
+ &lt;sequence>
+ &lt;element name="a" type="anchor" minOccurs="0" maxOccurs="unbounded"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>The generated <code>text</code> C++ class will provide the following
+ API (assuming it is marked as ordered):</p>
+
+ <pre class="c++">
+class text: public xml_schema::type
+{
+public:
+ // a
+ //
+ typedef anchor a_type;
+ typedef sequence&lt;a_type> a_sequence;
+ typedef a_sequence::iterator a_iterator;
+ typedef a_sequence::const_iterator a_const_iterator;
+
+ static const std::size_t a_id = 1UL;
+
+ const a_sequence&amp;
+ a () const;
+
+ a_sequence&amp;
+ a ();
+
+ void
+ a (const a_sequence&amp;);
+
+ // text_content
+ //
+ typedef xml_schema::string text_content_type;
+ typedef sequence&lt;text_content_type> text_content_sequence;
+ typedef text_content_sequence::iterator text_content_iterator;
+ typedef text_content_sequence::const_iterator text_content_const_iterator;
+
+ static const std::size_t text_content_id = 2UL;
+
+ const text_content_sequence&amp;
+ text_content () const;
+
+ text_content_sequence&amp;
+ text_content ();
+
+ void
+ text_content (const text_content_sequence&amp;);
+
+ // content_order
+ //
+ typedef xml_schema::content_order content_order_type;
+ typedef std::vector&lt;content_order_type> content_order_sequence;
+ typedef content_order_sequence::iterator content_order_iterator;
+ typedef content_order_sequence::const_iterator content_order_const_iterator;
+
+ const content_order_sequence&amp;
+ content_order () const;
+
+ content_order_sequence&amp;
+ content_order ();
+
+ void
+ content_order (const content_order_sequence&amp;);
+
+ ...
+};
+ </pre>
+
+ <p>Given this interface we can iterate over both link elements
+ and text in content order. The following code fragment converts
+ our format to plain text with references.</p>
+
+ <pre class="c++">
+const text&amp; t = ...
+
+for (text::content_order_const_iterator i (t.content_order ().begin ());
+ i != t.content_order ().end ();
+ ++i)
+{
+ switch (i->id)
+ {
+ case text::a_id:
+ {
+ const anchor&amp; a (t.a ()[i->index]);
+ cerr &lt;&lt; a &lt;&lt; "[" &lt;&lt; a.href () &lt;&lt; "]";
+ break;
+ }
+ case text::text_content_id:
+ {
+ const xml_schema::string&amp; s (t.text_content ()[i->index]);
+ cerr &lt;&lt; s;
+ break;
+ }
+ default:
+ {
+ assert (false); // Unknown content id.
+ }
+ }
+}
+ </pre>
+
+ <p>For the complete working code that shows the use of mixed content
+ in ordered types refer to the <code>order/mixed</code> example in
+ the <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a>
+ package.</p>
+
+ <!-- Parsing -->
+
+
+ <h1><a name="3">3 Parsing</a></h1>
+
+ <p>This chapter covers various aspects of parsing XML instance
+ documents in order to obtain corresponding tree-like object
+ model.
+ </p>
+
+ <p>Each global XML Schema element in the form:</p>
+
+ <pre class="xml">
+&lt;element name="name" type="type"/>
+ </pre>
+
+ <p>is mapped to 14 overloaded C++ functions in the form:</p>
+
+ <pre class="c++">
+// Read from a URI or a local file.
+//
+
+std::[unique|auto]_ptr&lt;type>
+name (const std::basic_string&lt;C>&amp; uri,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (const std::basic_string&lt;C>&amp; uri,
+ xml_schema::error_handler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (const std::basic_string&lt;C>&amp; uri,
+ xercesc::DOMErrorHandler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+
+// Read from std::istream.
+//
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ xml_schema::error_handler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ xercesc::DOMErrorHandler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ const std::basic_string&lt;C>&amp; id,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ const std::basic_string&lt;C>&amp; id,
+ xml_schema::error_handler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ const std::basic_string&lt;C>&amp; id,
+ xercesc::DOMErrorHandler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+
+// Read from InputSource.
+//
+
+std::[unique|auto]_ptr&lt;type>
+name (xercesc::InputSource&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (xercesc::InputSource&amp;,
+ xml_schema::error_handler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (xercesc::InputSource&amp;,
+ xercesc::DOMErrorHandler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+
+// Read from DOM.
+//
+
+std::[unique|auto]_ptr&lt;type>
+name (const xercesc::DOMDocument&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (xml_schema::dom::[unique|auto]_ptr&lt;xercesc::DOMDocument>,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+ </pre>
+
+ <p>You can choose between reading an XML instance from a local file,
+ URI, <code>std::istream</code>, <code>xercesc::InputSource</code>,
+ or a pre-parsed DOM instance in the form of
+ <code>xercesc::DOMDocument</code>. All the parsing functions
+ return a dynamically allocated object model as either
+ <code>std::unique_ptr</code> or <code>std::auto_ptr</code>,
+ depending on the C++ standard selected. Each of these parsing
+ functions is discussed in more detail in the following sections.
+ </p>
+
+ <h2><a name="3.1">3.1 Initializing the Xerces-C++ Runtime</a></h2>
+
+ <p>Some parsing functions expect you to initialize the Xerces-C++
+ runtime while others initialize and terminate it as part of their
+ work. The general rule is as follows: if a function has any arguments
+ or return a value that is an instance of a Xerces-C++ type, then
+ this function expects you to initialize the Xerces-C++ runtime.
+ Otherwise, the function initializes and terminates the runtime for
+ you. Note that it is legal to have nested calls to the Xerces-C++
+ initialize and terminate functions as long as the calls are balanced.
+ </p>
+
+ <p>You can instruct parsing functions that initialize and terminate
+ the runtime not to do so by passing the
+ <code>xml_schema::flags::dont_initialize</code> flag (see
+ <a href="#3.2">Section 3.2, "Flags and Properties"</a>).
+ </p>
+
+
+ <h2><a name="3.2">3.2 Flags and Properties</a></h2>
+
+ <p>Parsing flags and properties are the last two arguments of every
+ parsing function. They allow you to fine-tune the process of
+ instance validation and parsing. Both arguments are optional.
+ </p>
+
+
+ <p>The following flags are recognized by the parsing functions:</p>
+
+ <dl>
+ <dt><code>xml_schema::flags::keep_dom</code></dt>
+ <dd>Keep association between DOM nodes and the resulting
+ object model nodes. For more information about DOM association
+ refer to <a href="#5.1">Section 5.1, "DOM Association"</a>.</dd>
+
+ <dt><code>xml_schema::flags::own_dom</code></dt>
+ <dd>Assume ownership of the DOM document passed. This flag only
+ makes sense together with the <code>keep_dom</code> flag in
+ the call to the parsing function with the
+ <code>xml_schema::dom::[unique|auto]_ptr&lt;DOMDocument></code>
+ argument.</dd>
+
+ <dt><code>xml_schema::flags::dont_validate</code></dt>
+ <dd>Do not validate instance documents against schemas.</dd>
+
+ <dt><code>xml_schema::flags::dont_initialize</code></dt>
+ <dd>Do not initialize the Xerces-C++ runtime.</dd>
+ </dl>
+
+ <p>You can pass several flags by combining them using the bit-wise OR
+ operator. For example:</p>
+
+ <pre class="c++">
+using xml_schema::flags;
+
+std::unique_ptr&lt;type> r (
+ name ("test.xml", flags::keep_dom | flags::dont_validate));
+ </pre>
+
+ <p>By default, validation of instance documents is turned on even
+ though parsers generated by XSD do not assume instance
+ documents are valid. They include a number of checks that prevent
+ construction of inconsistent object models. This,
+ however, does not mean that an instance document that was
+ successfully parsed by the XSD-generated parsers is
+ valid per the corresponding schema. If an instance document is not
+ "valid enough" for the generated parsers to construct consistent
+ object model, one of the exceptions defined in
+ <code>xml_schema</code> namespace is thrown (see
+ <a href="#3.3">Section 3.3, "Error Handling"</a>).
+ </p>
+
+ <p>For more information on the Xerces-C++ runtime initialization
+ refer to <a href="#3.1">Section 3.1, "Initializing the Xerces-C++
+ Runtime"</a>.
+ </p>
+
+ <p>The <code>xml_schema::properties</code> class allows you to
+ programmatically specify schema locations to be used instead
+ of those specified with the <code>xsi::schemaLocation</code>
+ and <code>xsi::noNamespaceSchemaLocation</code> attributes
+ in instance documents. The interface of the <code>properties</code>
+ class is presented below:
+ </p>
+
+ <pre class="c++">
+class properties
+{
+public:
+ void
+ schema_location (const std::basic_string&lt;C>&amp; namespace_,
+ const std::basic_string&lt;C>&amp; location);
+ void
+ no_namespace_schema_location (const std::basic_string&lt;C>&amp; location);
+};
+ </pre>
+
+ <p>Note that all locations are relative to an instance document unless
+ they are URIs. For example, if you want to use a local file as your
+ schema, then you will need to pass
+ <code>file:///absolute/path/to/your/schema</code> as the location
+ argument.
+ </p>
+
+ <h2><a name="3.3">3.3 Error Handling</a></h2>
+
+ <p>As discussed in <a href="#2.2">Section 2.2, "Error Handling"</a>,
+ the mapping uses the C++ exception handling mechanism as its primary
+ way of reporting error conditions. However, to handle recoverable
+ parsing and validation errors and warnings, a callback interface maybe
+ preferred by the application.</p>
+
+ <p>To better understand error handling and reporting strategies employed
+ by the parsing functions, it is useful to know that the
+ transformation of an XML instance document to a statically-typed
+ tree happens in two stages. The first stage, performed by Xerces-C++,
+ consists of parsing an XML document into a DOM instance. For short,
+ we will call this stage the XML-DOM stage. Validation, if not disabled,
+ happens during this stage. The second stage,
+ performed by the generated parsers, consist of parsing the DOM
+ instance into the statically-typed tree. We will call this stage
+ the DOM-Tree stage. Additional checks are performed during this
+ stage in order to prevent construction of inconsistent tree which
+ could otherwise happen when validation is disabled, for example.</p>
+
+ <p>All parsing functions except the one that operates on a DOM instance
+ come in overloaded triples. The first function in such a triple
+ reports error conditions exclusively by throwing exceptions. It
+ accumulates all the parsing and validation errors of the XML-DOM
+ stage and throws them in a single instance of the
+ <code>xml_schema::parsing</code> exception (described below).
+ The second and the third functions in the triple use callback
+ interfaces to report parsing and validation errors and warnings.
+ The two callback interfaces are <code>xml_schema::error_handler</code>
+ and <code>xercesc::DOMErrorHandler</code>. For more information
+ on the <code>xercesc::DOMErrorHandler</code> interface refer to
+ the Xerces-C++ documentation. The <code>xml_schema::error_handler</code>
+ interface is presented below:
+ </p>
+
+ <pre class="c++">
+class error_handler
+{
+public:
+ struct severity
+ {
+ enum value
+ {
+ warning,
+ error,
+ fatal
+ };
+ };
+
+ virtual bool
+ handle (const std::basic_string&lt;C>&amp; id,
+ unsigned long line,
+ unsigned long column,
+ severity,
+ const std::basic_string&lt;C>&amp; message) = 0;
+
+ virtual
+ ~error_handler ();
+};
+ </pre>
+
+ <p>The <code>id</code> argument of the <code>error_handler::handle</code>
+ function identifies the resource being parsed (e.g., a file name or
+ URI).
+ </p>
+
+ <p>By returning <code>true</code> from the <code>handle</code> function
+ you instruct the parser to recover and continue parsing. Returning
+ <code>false</code> results in termination of the parsing process.
+ An error with the <code>fatal</code> severity level results in
+ termination of the parsing process no matter what is returned from
+ the <code>handle</code> function. It is safe to throw an exception
+ from the <code>handle</code> function.
+ </p>
+
+ <p>The DOM-Tree stage reports error conditions exclusively by throwing
+ exceptions. Individual exceptions thrown by the parsing functions
+ are described in the following sub-sections.
+ </p>
+
+
+ <h3><a name="3.3.1">3.3.1 <code>xml_schema::parsing</code></a></h3>
+
+ <pre class="c++">
+struct severity
+{
+ enum value
+ {
+ warning,
+ error
+ };
+
+ severity (value);
+ operator value () const;
+};
+
+struct error
+{
+ error (severity,
+ const std::basic_string&lt;C>&amp; id,
+ unsigned long line,
+ unsigned long column,
+ const std::basic_string&lt;C>&amp; message);
+
+ severity
+ severity () const;
+
+ const std::basic_string&lt;C>&amp;
+ id () const;
+
+ unsigned long
+ line () const;
+
+ unsigned long
+ column () const;
+
+ const std::basic_string&lt;C>&amp;
+ message () const;
+};
+
+std::basic_ostream&lt;C>&amp;
+operator&lt;&lt; (std::basic_ostream&lt;C>&amp;, const error&amp;);
+
+struct diagnostics: std::vector&lt;error>
+{
+};
+
+std::basic_ostream&lt;C>&amp;
+operator&lt;&lt; (std::basic_ostream&lt;C>&amp;, const diagnostics&amp;);
+
+struct parsing: virtual exception
+{
+ parsing ();
+ parsing (const diagnostics&amp;);
+
+ const diagnostics&amp;
+ diagnostics () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::parsing</code> exception is thrown if there
+ were parsing or validation errors reported during the XML-DOM stage.
+ If no callback interface was provided to the parsing function, the
+ exception contains a list of errors and warnings accessible using
+ the <code>diagnostics</code> function. The usual conditions when
+ this exception is thrown include malformed XML instances and, if
+ validation is turned on, invalid instance documents.
+ </p>
+
+ <h3><a name="3.3.2">3.3.2 <code>xml_schema::expected_element</code></a></h3>
+
+ <pre class="c++">
+struct expected_element: virtual exception
+{
+ expected_element (const std::basic_string&lt;C>&amp; name,
+ const std::basic_string&lt;C>&amp; namespace_);
+
+
+ const std::basic_string&lt;C>&amp;
+ name () const;
+
+ const std::basic_string&lt;C>&amp;
+ namespace_ () const;
+
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::expected_element</code> exception is thrown
+ when an expected element is not encountered by the DOM-Tree stage.
+ The name and namespace of the expected element can be obtained using
+ the <code>name</code> and <code>namespace_</code> functions respectively.
+ </p>
+
+
+ <h3><a name="3.3.3">3.3.3 <code>xml_schema::unexpected_element</code></a></h3>
+
+ <pre class="c++">
+struct unexpected_element: virtual exception
+{
+ unexpected_element (const std::basic_string&lt;C>&amp; encountered_name,
+ const std::basic_string&lt;C>&amp; encountered_namespace,
+ const std::basic_string&lt;C>&amp; expected_name,
+ const std::basic_string&lt;C>&amp; expected_namespace)
+
+
+ const std::basic_string&lt;C>&amp;
+ encountered_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ encountered_namespace () const;
+
+
+ const std::basic_string&lt;C>&amp;
+ expected_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ expected_namespace () const;
+
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::unexpected_element</code> exception is thrown
+ when an unexpected element is encountered by the DOM-Tree stage.
+ The name and namespace of the encountered element can be obtained
+ using the <code>encountered_name</code> and
+ <code>encountered_namespace</code> functions respectively. If an
+ element was expected instead of the encountered one, its name
+ and namespace can be obtained using the <code>expected_name</code> and
+ <code>expected_namespace</code> functions respectively. Otherwise
+ these functions return empty strings.
+ </p>
+
+ <h3><a name="3.3.4">3.3.4 <code>xml_schema::expected_attribute</code></a></h3>
+
+ <pre class="c++">
+struct expected_attribute: virtual exception
+{
+ expected_attribute (const std::basic_string&lt;C>&amp; name,
+ const std::basic_string&lt;C>&amp; namespace_);
+
+
+ const std::basic_string&lt;C>&amp;
+ name () const;
+
+ const std::basic_string&lt;C>&amp;
+ namespace_ () const;
+
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::expected_attribute</code> exception is thrown
+ when an expected attribute is not encountered by the DOM-Tree stage.
+ The name and namespace of the expected attribute can be obtained using
+ the <code>name</code> and <code>namespace_</code> functions respectively.
+ </p>
+
+
+ <h3><a name="3.3.5">3.3.5 <code>xml_schema::unexpected_enumerator</code></a></h3>
+
+ <pre class="c++">
+struct unexpected_enumerator: virtual exception
+{
+ unexpected_enumerator (const std::basic_string&lt;C>&amp; enumerator);
+
+ const std::basic_string&lt;C>&amp;
+ enumerator () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::unexpected_enumerator</code> exception is thrown
+ when an unexpected enumerator is encountered by the DOM-Tree stage.
+ The enumerator can be obtained using the <code>enumerator</code>
+ functions.
+ </p>
+
+ <h3><a name="3.3.6">3.3.6 <code>xml_schema::expected_text_content</code></a></h3>
+
+ <pre class="c++">
+struct expected_text_content: virtual exception
+{
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::expected_text_content</code> exception is thrown
+ when a content other than text is encountered and the text content was
+ expected by the DOM-Tree stage.
+ </p>
+
+ <h3><a name="3.3.7">3.3.7 <code>xml_schema::no_type_info</code></a></h3>
+
+ <pre class="c++">
+struct no_type_info: virtual exception
+{
+ no_type_info (const std::basic_string&lt;C>&amp; type_name,
+ const std::basic_string&lt;C>&amp; type_namespace);
+
+ const std::basic_string&lt;C>&amp;
+ type_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ type_namespace () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::no_type_info</code> exception is thrown
+ when there is no type information associated with a type specified
+ by the <code>xsi:type</code> attribute. This exception is thrown
+ by the DOM-Tree stage. The name and namespace of the type in question
+ can be obtained using the <code>type_name</code> and
+ <code>type_namespace</code> functions respectively. Usually, catching
+ this exception means that you haven't linked the code generated
+ from the schema defining the type in question with your application
+ or this schema has been compiled without the
+ <code>--generate-polymorphic</code> option.
+ </p>
+
+
+ <h3><a name="3.3.8">3.3.8 <code>xml_schema::not_derived</code></a></h3>
+
+ <pre class="c++">
+struct not_derived: virtual exception
+{
+ not_derived (const std::basic_string&lt;C>&amp; base_type_name,
+ const std::basic_string&lt;C>&amp; base_type_namespace,
+ const std::basic_string&lt;C>&amp; derived_type_name,
+ const std::basic_string&lt;C>&amp; derived_type_namespace);
+
+ const std::basic_string&lt;C>&amp;
+ base_type_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ base_type_namespace () const;
+
+
+ const std::basic_string&lt;C>&amp;
+ derived_type_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ derived_type_namespace () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::not_derived</code> exception is thrown
+ when a type specified by the <code>xsi:type</code> attribute is
+ not derived from the expected base type. This exception is thrown
+ by the DOM-Tree stage. The name and namespace of the expected
+ base type can be obtained using the <code>base_type_name</code> and
+ <code>base_type_namespace</code> functions respectively. The name
+ and namespace of the offending type can be obtained using the
+ <code>derived_type_name</code> and
+ <code>derived_type_namespace</code> functions respectively.
+ </p>
+
+ <h3><a name="3.3.9">3.3.9 <code>xml_schema::no_prefix_mapping</code></a></h3>
+
+ <pre class="c++">
+struct no_prefix_mapping: virtual exception
+{
+ no_prefix_mapping (const std::basic_string&lt;C>&amp; prefix);
+
+ const std::basic_string&lt;C>&amp;
+ prefix () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::no_prefix_mapping</code> exception is thrown
+ during the DOM-Tree stage if a namespace prefix is encountered for
+ which a prefix-namespace mapping hasn't been provided. The namespace
+ prefix in question can be obtained using the <code>prefix</code>
+ function.
+ </p>
+
+ <h2><a name="3.4">3.4 Reading from a Local File or URI</a></h2>
+
+ <p>Using a local file or URI is the simplest way to parse an XML instance.
+ For example:</p>
+
+ <pre class="c++">
+using std::unique_ptr;
+
+unique_ptr&lt;type> r1 (name ("test.xml"));
+unique_ptr&lt;type> r2 (name ("https://www.codesynthesis.com/test.xml"));
+ </pre>
+
+ <p>Or, in the C++98 mode:</p>
+
+ <pre class="c++">
+using std::auto_ptr;
+
+auto_ptr&lt;type> r1 (name ("test.xml"));
+auto_ptr&lt;type> r2 (name ("https://www.codesynthesis.com/test.xml"));
+ </pre>
+
+ <h2><a name="3.5">3.5 Reading from <code>std::istream</code></a></h2>
+
+ <p>When using an <code>std::istream</code> instance, you may also
+ pass an optional resource id. This id is used to identify the
+ resource (for example in error messages) as well as to resolve
+ relative paths. For instance:</p>
+
+ <pre class="c++">
+using std::unique_ptr;
+
+{
+ std::ifstream ifs ("test.xml");
+ unique_ptr&lt;type> r (name (ifs, "test.xml"));
+}
+
+{
+ std::string str ("..."); // Some XML fragment.
+ std::istringstream iss (str);
+ unique_ptr&lt;type> r (name (iss));
+}
+ </pre>
+
+ <h2><a name="3.6">3.6 Reading from <code>xercesc::InputSource</code></a></h2>
+
+ <p>Reading from a <code>xercesc::InputSource</code> instance
+ is similar to the <code>std::istream</code> case except
+ the resource id is maintained by the <code>InputSource</code>
+ object. For instance:</p>
+
+ <pre class="c++">
+xercesc::StdInInputSource is;
+std::unique_ptr&lt;type> r (name (is));
+ </pre>
+
+ <h2><a name="3.7">3.7 Reading from DOM</a></h2>
+
+ <p>Reading from a <code>xercesc::DOMDocument</code> instance allows
+ you to setup a custom XML-DOM stage. Things like DOM
+ parser reuse, schema pre-parsing, and schema caching can be achieved
+ with this approach. For more information on how to obtain DOM
+ representation from an XML instance refer to the Xerces-C++
+ documentation. In addition, the
+ <a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree Mapping
+ FAQ</a> shows how to parse an XML instance to a Xerces-C++
+ DOM document using the XSD runtime utilities.
+ </p>
+
+ <p>The last parsing function is useful when you would like to perform
+ your own XML-to-DOM parsing and associate the resulting DOM document
+ with the object model nodes. The automatic <code>DOMDocument</code>
+ pointer is reset and the resulting object model assumes ownership
+ of the DOM document passed. For example:</p>
+
+ <pre class="c++">
+// C++11 version.
+//
+xml_schema::dom::unique_ptr&lt;xercesc::DOMDocument> doc = ...
+
+std::unique_ptr&lt;type> r (
+ name (std::move (doc),
+ xml_schema::flags::keep_dom | xml_schema::flags::own_dom));
+
+// At this point doc is reset to 0.
+
+// C++98 version.
+//
+xml_schema::dom::auto_ptr&lt;xercesc::DOMDocument> doc = ...
+
+std::auto_ptr&lt;type> r (
+ name (doc, xml_schema::flags::keep_dom | xml_schema::flags::own_dom));
+
+// At this point doc is reset to 0.
+ </pre>
+
+ <h1><a name="4">4 Serialization</a></h1>
+
+ <p>This chapter covers various aspects of serializing a
+ tree-like object model to DOM or XML.
+ In this regard, serialization is complimentary to the reverse
+ process of parsing a DOM or XML instance into an object model
+ which is discussed in <a href="#3">Chapter 3,
+ "Parsing"</a>. Note that the generation of the serialization code
+ is optional and should be explicitly requested with the
+ <code>--generate-serialization</code> option. See the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a> for more information.
+ </p>
+
+ <p>Each global XML Schema element in the form:
+ </p>
+
+
+ <pre class="xml">
+&lt;xsd:element name="name" type="type"/>
+ </pre>
+
+ <p>is mapped to 8 overloaded C++ functions in the form:</p>
+
+ <pre class="c++">
+// Serialize to std::ostream.
+//
+void
+name (std::ostream&amp;,
+ const type&amp;,
+ const xml_schema::namespace_fomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+void
+name (std::ostream&amp;,
+ const type&amp;,
+ xml_schema::error_handler&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+void
+name (std::ostream&amp;,
+ const type&amp;,
+ xercesc::DOMErrorHandler&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+
+// Serialize to XMLFormatTarget.
+//
+void
+name (xercesc::XMLFormatTarget&amp;,
+ const type&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+void
+name (xercesc::XMLFormatTarget&amp;,
+ const type&amp;,
+ xml_schema::error_handler&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+void
+name (xercesc::XMLFormatTarget&amp;,
+ const type&amp;,
+ xercesc::DOMErrorHandler&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+
+// Serialize to DOM.
+//
+xml_schema::dom::[unique|auto]_ptr&lt;xercesc::DOMDocument>
+name (const type&amp;,
+ const xml_schema::namespace_infomap&amp;
+ xml_schema::namespace_infomap (),
+ xml_schema::flags = 0);
+
+void
+name (xercesc::DOMDocument&amp;,
+ const type&amp;,
+ xml_schema::flags = 0);
+ </pre>
+
+ <p>You can choose between writing XML to <code>std::ostream</code> or
+ <code>xercesc::XMLFormatTarget</code> and creating a DOM instance
+ in the form of <code>xercesc::DOMDocument</code>. Serialization
+ to <code>ostream</code> or <code>XMLFormatTarget</code> requires a
+ considerably less work while serialization to DOM provides
+ for greater flexibility. Each of these serialization functions
+ is discussed in more detail in the following sections.
+ </p>
+
+
+ <h2><a name="4.1">4.1 Initializing the Xerces-C++ Runtime</a></h2>
+
+ <p>Some serialization functions expect you to initialize the Xerces-C++
+ runtime while others initialize and terminate it as part of their
+ work. The general rule is as follows: if a function has any arguments
+ or return a value that is an instance of a Xerces-C++ type, then
+ this function expects you to initialize the Xerces-C++ runtime.
+ Otherwise, the function initializes and terminates the runtime for
+ you. Note that it is legal to have nested calls to the Xerces-C++
+ initialize and terminate functions as long as the calls are balanced.
+ </p>
+
+ <p>You can instruct serialization functions that initialize and terminate
+ the runtime not to do so by passing the
+ <code>xml_schema::flags::dont_initialize</code> flag (see
+ <a href="#4.3">Section 4.3, "Flags"</a>).
+ </p>
+
+ <h2><a name="4.2">4.2 Namespace Infomap and Character Encoding</a></h2>
+
+ <p>When a document being serialized uses XML namespaces, custom
+ prefix-namespace associations can to be established. If custom
+ prefix-namespace mapping is not provided then generic prefixes
+ (<code>p1</code>, <code>p2</code>, etc) are automatically assigned
+ to namespaces as needed. Also, if
+ you would like the resulting instance document to contain the
+ <code>schemaLocation</code> or <code>noNamespaceSchemaLocation</code>
+ attributes, you will need to provide namespace-schema associations.
+ The <code>xml_schema::namespace_infomap</code> class is used
+ to capture this information:</p>
+
+ <pre class="c++">
+struct namespace_info
+{
+ namespace_info ();
+ namespace_info (const std::basic_string&lt;C>&amp; name,
+ const std::basic_string&lt;C>&amp; schema);
+
+ std::basic_string&lt;C> name;
+ std::basic_string&lt;C> schema;
+};
+
+// Map of namespace prefix to namespace_info.
+//
+struct namespace_infomap: public std::map&lt;std::basic_string&lt;C>,
+ namespace_info>
+{
+};
+ </pre>
+
+ <p>Consider the following associations as an example:</p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";
+ </pre>
+
+ <p>This map, if passed to one of the serialization functions,
+ could result in the following XML fragment:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;t:name xmlns:t="https://www.codesynthesis.com/test"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://www.codesynthesis.com/test test.xsd">
+ </pre>
+
+ <p>As you can see, the serialization function automatically added namespace
+ mapping for the <code>xsi</code> prefix. You can change this by
+ providing your own prefix:</p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map["xsn"].name = "http://www.w3.org/2001/XMLSchema-instance";
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";
+ </pre>
+
+ <p>This could result in the following XML fragment:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;t:name xmlns:t="https://www.codesynthesis.com/test"
+ xmlns:xsn="http://www.w3.org/2001/XMLSchema-instance"
+ xsn:schemaLocation="https://www.codesynthesis.com/test test.xsd">
+ </pre>
+
+ <p>To specify the location of a schema without a namespace you can use
+ an empty prefix as in the example below: </p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map[""].schema = "test.xsd";
+ </pre>
+
+ <p>This would result in the following XML fragment:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="test.xsd">
+ </pre>
+
+ <p>To make a particular namespace default you can use an empty
+ prefix, for example:</p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map[""].name = "https://www.codesynthesis.com/test";
+map[""].schema = "test.xsd";
+ </pre>
+
+ <p>This could result in the following XML fragment:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;name xmlns="https://www.codesynthesis.com/test"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://www.codesynthesis.com/test test.xsd">
+ </pre>
+
+
+ <p>Another bit of information that you can pass to the serialization
+ functions is the character encoding method that you would like to use.
+ Common values for this argument are <code>"US-ASCII"</code>,
+ <code>"ISO8859-1"</code>, <code>"UTF-8"</code>,
+ <code>"UTF-16BE"</code>, <code>"UTF-16LE"</code>,
+ <code>"UCS-4BE"</code>, and <code>"UCS-4LE"</code>. The default
+ encoding is <code>"UTF-8"</code>. For more information on
+ encoding methods see the
+ "<a href="http://en.wikipedia.org/wiki/Character_code">Character
+ Encoding</a>" article from Wikipedia.
+ </p>
+
+ <h2><a name="4.3">4.3 Flags</a></h2>
+
+ <p>Serialization flags are the last argument of every serialization
+ function. They allow you to fine-tune the process of serialization.
+ The flags argument is optional.
+ </p>
+
+
+ <p>The following flags are recognized by the serialization
+ functions:</p>
+
+ <dl>
+ <dt><code>xml_schema::flags::dont_initialize</code></dt>
+ <dd>Do not initialize the Xerces-C++ runtime.</dd>
+
+ <dt><code>xml_schema::flags::dont_pretty_print</code></dt>
+ <dd>Do not add extra spaces or new lines that make the resulting XML
+ slightly bigger but easier to read.</dd>
+
+ <dt><code>xml_schema::flags::no_xml_declaration</code></dt>
+ <dd>Do not write XML declaration (&lt;?xml ... ?>).</dd>
+ </dl>
+
+ <p>You can pass several flags by combining them using the bit-wise OR
+ operator. For example:</p>
+
+ <pre class="c++">
+std::unique_ptr&lt;type> r = ...
+std::ofstream ofs ("test.xml");
+xml_schema::namespace_infomap map;
+name (ofs,
+ *r,
+ map,
+ "UTF-8",
+ xml_schema::flags::no_xml_declaration |
+ xml_schema::flags::dont_pretty_print);
+ </pre>
+
+ <p>For more information on the Xerces-C++ runtime initialization
+ refer to <a href="#4.1">Section 4.1, "Initializing the Xerces-C++
+ Runtime"</a>.
+ </p>
+
+ <h2><a name="4.4">4.4 Error Handling</a></h2>
+
+ <p>As with the parsing functions (see <a href="#3.3">Section 3.3,
+ "Error Handling"</a>), to better understand error handling and
+ reporting strategies employed by the serialization functions, it
+ is useful to know that the transformation of a statically-typed
+ tree to an XML instance document happens in two stages. The first
+ stage, performed by the generated code, consist of building a DOM
+ instance from the statically-typed tree . For short, we will call
+ this stage the Tree-DOM stage. The second stage, performed by
+ Xerces-C++, consists of serializing the DOM instance into the XML
+ document. We will call this stage the DOM-XML stage.
+ </p>
+
+ <p>All serialization functions except the two that serialize into
+ a DOM instance come in overloaded triples. The first function
+ in such a triple reports error conditions exclusively by throwing
+ exceptions. It accumulates all the serialization errors of the
+ DOM-XML stage and throws them in a single instance of the
+ <code>xml_schema::serialization</code> exception (described below).
+ The second and the third functions in the triple use callback
+ interfaces to report serialization errors and warnings. The two
+ callback interfaces are <code>xml_schema::error_handler</code> and
+ <code>xercesc::DOMErrorHandler</code>. The
+ <code>xml_schema::error_handler</code> interface is described in
+ <a href="#3.3">Section 3.3, "Error Handling"</a>. For more information
+ on the <code>xercesc::DOMErrorHandler</code> interface refer to the
+ Xerces-C++ documentation.
+ </p>
+
+ <p>The Tree-DOM stage reports error conditions exclusively by throwing
+ exceptions. Individual exceptions thrown by the serialization functions
+ are described in the following sub-sections.
+ </p>
+
+ <h3><a name="4.4.1">4.4.1 <code>xml_schema::serialization</code></a></h3>
+
+ <pre class="c++">
+struct serialization: virtual exception
+{
+ serialization ();
+ serialization (const diagnostics&amp;);
+
+ const diagnostics&amp;
+ diagnostics () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::diagnostics</code> class is described in
+ <a href="#3.3.1">Section 3.3.1, "<code>xml_schema::parsing</code>"</a>.
+ The <code>xml_schema::serialization</code> exception is thrown if
+ there were serialization errors reported during the DOM-XML stage.
+ If no callback interface was provided to the serialization function,
+ the exception contains a list of errors and warnings accessible using
+ the <code>diagnostics</code> function.
+ </p>
+
+
+ <h3><a name="4.4.2">4.4.2 <code>xml_schema::unexpected_element</code></a></h3>
+
+ <p>The <code>xml_schema::unexpected_element</code> exception is
+ described in <a href="#3.3.3">Section 3.3.3,
+ "<code>xml_schema::unexpected_element</code>"</a>. It is thrown
+ by the serialization functions during the Tree-DOM stage if the
+ root element name of the provided DOM instance does not match with
+ the name of the element this serialization function is for.
+ </p>
+
+ <h3><a name="4.4.3">4.4.3 <code>xml_schema::no_type_info</code></a></h3>
+
+ <p>The <code>xml_schema::no_type_info</code> exception is
+ described in <a href="#3.3.7">Section 3.3.7,
+ "<code>xml_schema::no_type_info</code>"</a>. It is thrown
+ by the serialization functions during the Tree-DOM stage when there
+ is no type information associated with a dynamic type of an
+ element. Usually, catching this exception means that you haven't
+ linked the code generated from the schema defining the type in
+ question with your application or this schema has been compiled
+ without the <code>--generate-polymorphic</code> option.
+ </p>
+
+ <h2><a name="4.5">4.5 Serializing to <code>std::ostream</code></a></h2>
+
+ <p>In order to serialize to <code>std::ostream</code> you will need
+ an object model, an output stream and, optionally, a namespace
+ infomap. For instance:</p>
+
+ <pre class="c++">
+// Obtain the object model.
+//
+std::unique_ptr&lt;type> r = ...
+
+// Prepare namespace mapping and schema location information.
+//
+xml_schema::namespace_infomap map;
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";
+
+// Write it out.
+//
+name (std::cout, *r, map);
+ </pre>
+
+ <p>Note that the output stream is treated as a binary stream. This
+ becomes important when you use a character encoding that is wider
+ than 8-bit <code>char</code>, for instance UTF-16 or UCS-4. For
+ example, things will most likely break if you try to serialize
+ to <code>std::ostringstream</code> with UTF-16 or UCS-4 as an
+ encoding. This is due to the special value,
+ <code>'\0'</code>, that will most likely occur as part of such
+ serialization and it won't have the special meaning assumed by
+ <code>std::ostringstream</code>.
+ </p>
+
+
+ <h2><a name="4.6">4.6 Serializing to <code>xercesc::XMLFormatTarget</code></a></h2>
+
+ <p>Serializing to an <code>xercesc::XMLFormatTarget</code> instance
+ is similar the <code>std::ostream</code> case. For instance:
+ </p>
+
+ <pre class="c++">
+using std::unique_ptr;
+
+// Obtain the object model.
+//
+unique_ptr&lt;type> r = ...
+
+// Prepare namespace mapping and schema location information.
+//
+xml_schema::namespace_infomap map;
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";
+
+using namespace xercesc;
+
+XMLPlatformUtils::Initialize ();
+
+{
+ // Choose a target.
+ //
+ unique_ptr&lt;XMLFormatTarget> ft;
+
+ if (argc != 2)
+ {
+ ft = unique_ptr&lt;XMLFormatTarget> (new StdOutFormatTarget ());
+ }
+ else
+ {
+ ft = unique_ptr&lt;XMLFormatTarget> (
+ new LocalFileFormatTarget (argv[1]));
+ }
+
+ // Write it out.
+ //
+ name (*ft, *r, map);
+}
+
+XMLPlatformUtils::Terminate ();
+ </pre>
+
+ <p>Note that we had to initialize the Xerces-C++ runtime before we
+ could call this serialization function.</p>
+
+ <h2><a name="4.7">4.7 Serializing to DOM</a></h2>
+
+ <p>The mapping provides two overloaded functions that implement
+ serialization to a DOM instance. The first creates a DOM instance
+ for you and the second serializes to an existing DOM instance.
+ While serializing to a new DOM instance is similar to serializing
+ to <code>std::ostream</code> or <code>xercesc::XMLFormatTarget</code>,
+ serializing to an existing DOM instance requires quite a bit of work
+ from your side. You will need to set all the custom namespace mapping
+ attributes as well as the <code>schemaLocation</code> and/or
+ <code>noNamespaceSchemaLocation</code> attributes. The following
+ listing should give you an idea about what needs to be done:
+ </p>
+
+ <pre class="c++">
+// Obtain the object model.
+//
+std::unique_ptr&lt;type> r = ...
+
+using namespace xercesc;
+
+XMLPlatformUtils::Initialize ();
+
+{
+ // Create a DOM instance. Set custom namespace mapping and schema
+ // location attributes.
+ //
+ DOMDocument&amp; doc = ...
+
+ // Serialize to DOM.
+ //
+ name (doc, *r);
+
+ // Serialize the DOM document to XML.
+ //
+ ...
+}
+
+XMLPlatformUtils::Terminate ();
+ </pre>
+
+ <p>For more information on how to create and serialize a DOM instance
+ refer to the Xerces-C++ documentation. In addition, the
+ <a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree Mapping
+ FAQ</a> shows how to implement these operations using the XSD
+ runtime utilities.
+ </p>
+
+ <h1><a name="5">5 Additional Functionality</a></h1>
+
+ <p>The C++/Tree mapping provides a number of optional features
+ that can be useful in certain situations. They are described
+ in the following sections.</p>
+
+ <h2><a name="5.1">5.1 DOM Association</a></h2>
+
+ <p>Normally, after parsing is complete, the DOM document which
+ was used to extract the data is discarded. However, the parsing
+ functions can be instructed to preserve the DOM document
+ and create an association between the DOM nodes and object model
+ nodes. When there is an association between the DOM and
+ object model nodes, you can obtain the corresponding DOM element
+ or attribute node from an object model node as well as perform
+ the reverse transition: obtain the corresponding object model
+ from a DOM element or attribute node.</p>
+
+ <p>Maintaining DOM association is normally useful when the application
+ needs access to XML constructs that are not preserved in the
+ object model, for example, XML comments.
+ Another useful aspect of DOM association is the ability of the
+ application to navigate the document tree using the generic DOM
+ interface (for example, with the help of an XPath processor)
+ and then move back to the statically-typed object model. Note
+ also that while you can change the underlying DOM document,
+ these changes are not reflected in the object model and will
+ be ignored during serialization. If you need to not only access
+ but also modify some aspects of XML that are not preserved in
+ the object model, then type customization with custom parsing
+ constructors and serialization operators should be used instead.</p>
+
+ <p>To request DOM association you will need to pass the
+ <code>xml_schema::flags::keep_dom</code> flag to one of the
+ parsing functions (see <a href="#3.2">Section 3.2,
+ "Flags and Properties"</a> for more information). In this case the
+ DOM document is retained and will be released when the object model
+ is deleted. Note that since DOM nodes "out-live" the parsing function
+ call, you need to initialize the Xerces-C++ runtime before calling
+ one of the parsing functions with the <code>keep_dom</code> flag and
+ terminate it after the object model is destroyed (see
+ <a href="#3.1">Section 3.1, "Initializing the Xerces-C++ Runtime"</a>).</p>
+
+ <p>If the <code>keep_dom</code> flag is passed
+ as the second argument to the copy constructor and the copy
+ being made is of a complete tree, then the DOM association
+ is also maintained in the copy by cloning the underlying
+ DOM document and reestablishing the associations. For example:</p>
+
+ <pre class="c++">
+using namespace xercesc;
+
+XMLPlatformUtils::Initialize ();
+
+{
+ // Parse XML to object model.
+ //
+ std::unique_ptr&lt;type> r (root (
+ "root.xml",
+ xml_schema::flags::keep_dom |
+ xml_schema::flags::dont_initialize));
+
+ // Copy without DOM association.
+ //
+ type copy1 (*r);
+
+ // Copy with DOM association.
+ //
+ type copy2 (*r, xml_schema::flags::keep_dom);
+}
+
+XMLPlatformUtils::Terminate ();
+ </pre>
+
+
+ <p>To obtain the corresponding DOM node from an object model node
+ you will need to call the <code>_node</code> accessor function
+ which returns a pointer to <code>DOMNode</code>. You can then query
+ this DOM node's type and cast it to either <code>DOMAttr*</code>
+ or <code>DOMElement*</code>. To obtain the corresponding object
+ model node from a DOM node, the DOM user data API is used. The
+ <code>xml_schema::dom::tree_node_key</code> variable contains
+ the key for object model nodes. The following schema and code
+ fragment show how to navigate from DOM to object model nodes
+ and in the opposite direction:</p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="a" type="string"/>
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;element name="root" type="object"/>
+ </pre>
+
+ <pre class="c++">
+using namespace xercesc;
+
+XMLPlatformUtils::Initialize ();
+
+{
+ // Parse XML to object model.
+ //
+ std::unique_ptr&lt;type> r (root (
+ "root.xml",
+ xml_schema::flags::keep_dom |
+ xml_schema::flags::dont_initialize));
+
+ DOMNode* n = r->_node ();
+ assert (n->getNodeType () == DOMNode::ELEMENT_NODE);
+ DOMElement* re = static_cast&lt;DOMElement*> (n);
+
+ // Get the 'a' element. Note that it is not necessarily the
+ // first child node of 'root' since there could be whitespace
+ // nodes before it.
+ //
+ DOMElement* ae;
+
+ for (n = re->getFirstChild (); n != 0; n = n->getNextSibling ())
+ {
+ if (n->getNodeType () == DOMNode::ELEMENT_NODE)
+ {
+ ae = static_cast&lt;DOMElement*> (n);
+ break;
+ }
+ }
+
+ // Get from the 'a' DOM element to xml_schema::string object model
+ // node.
+ //
+ xml_schema::type&amp; t (
+ *reinterpret_cast&lt;xml_schema::type*> (
+ ae->getUserData (xml_schema::dom::tree_node_key)));
+
+ xml_schema::string&amp; a (dynamic_cast&lt;xml_schema::string&amp;> (t));
+}
+
+XMLPlatformUtils::Terminate ();
+ </pre>
+
+ <p>The 'mixed' example which can be found in the XSD distribution
+ shows how to handle the mixed content using DOM association.</p>
+
+ <h2><a name="5.2">5.2 Binary Serialization</a></h2>
+
+ <p>Besides reading from and writing to XML, the C++/Tree mapping
+ also allows you to save the object model to and load it from a
+ number of predefined as well as custom data representation
+ formats. The predefined binary formats are CDR (Common Data
+ Representation) and XDR (eXternal Data Representation). A
+ custom format can easily be supported by providing
+ insertion and extraction operators for basic types.</p>
+
+ <p>Binary serialization saves only the data without any meta
+ information or markup. As a result, saving to and loading
+ from a binary representation can be an order of magnitude
+ faster than parsing and serializing the same data in XML.
+ Furthermore, the resulting representation is normally several
+ times smaller than the equivalent XML representation. These
+ properties make binary serialization ideal for internal data
+ exchange and storage. A typical application that uses this
+ facility stores the data and communicates within the
+ system using a binary format and reads/writes the data
+ in XML when communicating with the outside world.</p>
+
+ <p>In order to request the generation of insertion operators and
+ extraction constructors for a specific predefined or custom
+ data representation stream, you will need to use the
+ <code>--generate-insertion</code> and <code>--generate-extraction</code>
+ compiler options. See the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a> for more information.</p>
+
+ <p>Once the insertion operators and extraction constructors are
+ generated, you can use the <code>xml_schema::istream</code>
+ and <code>xml_schema::ostream</code> wrapper stream templates
+ to save the object model to and load it from a specific format.
+ The following code fragment shows how to do this using ACE
+ (Adaptive Communication Environment) CDR streams as an example:</p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="a" type="string"/>
+ &lt;element name="b" type="int"/>
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;element name="root" type="object"/>
+ </pre>
+
+ <pre class="c++">
+// Parse XML to object model.
+//
+std::unique_ptr&lt;type> r (root ("root.xml"));
+
+// Save to a CDR stream.
+//
+ACE_OutputCDR ace_ocdr;
+xml_schema::ostream&lt;ACE_OutputCDR> ocdr (ace_ocdr);
+
+ocdr &lt;&lt; *r;
+
+// Load from a CDR stream.
+//
+ACE_InputCDR ace_icdr (buf, size);
+xml_schema::istream&lt;ACE_InputCDR> icdr (ace_icdr);
+
+std::unique_ptr&lt;object> copy (new object (icdr));
+
+// Serialize to XML.
+//
+root (std::cout, *copy);
+ </pre>
+
+ <p>The XSD distribution contains a number of examples that
+ show how to save the object model to and load it from
+ CDR, XDR, and a custom format.</p>
+
+ <!-- Appendix A -->
+
+
+ <h1><a name="A">Appendix A &mdash; Default and Fixed Values</a></h1>
+
+ <p>The following table summarizes the effect of default and fixed
+ values (specified with the <code>default</code> and <code>fixed</code>
+ attributes, respectively) on attribute and element values. The
+ <code>default</code> and <code>fixed</code> attributes are mutually
+ exclusive. It is also worthwhile to note that the fixed value semantics
+ is a superset of the default value semantics.
+ </p>
+
+ <!-- border="1" is necessary for html2ps -->
+ <table id="default-fixed" border="1">
+ <tr>
+ <th></th>
+ <th></th>
+ <th colspan="2">default</th>
+ <th colspan="2">fixed</th>
+ </tr>
+
+ <!-- element -->
+
+ <tr>
+ <th rowspan="4">element</th>
+ <th rowspan="2">not present</th>
+ <th>optional</th>
+ <th>required</th>
+ <th>optional</th>
+ <th>required</th>
+ </tr>
+ <tr>
+ <td>not present</td>
+ <td>invalid instance</td>
+ <td>not present</td>
+ <td>invalid instance</td>
+ </tr>
+
+
+ <tr>
+ <th>empty</th>
+ <td colspan="2">default value is used</td>
+ <td colspan="2">fixed value is used</td>
+ </tr>
+
+ <tr>
+ <th>value</th>
+ <td colspan="2">value is used</td>
+ <td colspan="2">value is used provided it's the same as fixed</td>
+ </tr>
+
+ <!-- attribute -->
+
+ <!-- element -->
+
+ <tr>
+ <th rowspan="4">attribute</th>
+ <th rowspan="2">not present</th>
+ <th>optional</th>
+ <th>required</th>
+ <th>optional</th>
+ <th>required</th>
+ </tr>
+ <tr>
+ <td>default value is used</td>
+ <td>invalid schema</td>
+ <td>fixed value is used</td>
+ <td>invalid instance</td>
+ </tr>
+
+
+ <tr>
+ <th>empty</th>
+ <td colspan="2">empty value is used</td>
+ <td colspan="2">empty value is used provided it's the same as fixed</td>
+ </tr>
+
+ <tr>
+ <th>value</th>
+ <td colspan="2">value is used</td>
+ <td colspan="2">value is used provided it's the same as fixed</td>
+ </tr>
+
+ </table>
+
+ </div>
+</div>
+
+
+</body>
+</html>
diff --git a/doc/cxx/tree/manual/index.xhtml.in b/doc/cxx/tree/manual/index.xhtml.in
new file mode 100644
index 0000000..5a7240a
--- /dev/null
+++ b/doc/cxx/tree/manual/index.xhtml.in
@@ -0,0 +1,6826 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+ <title>C++/Tree Mapping User Manual</title>
+
+ <meta name="copyright" content="&#169; @copyright@"/>
+ <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,tree,serialization,guide,manual,examples"/>
+ <meta name="description" content="C++/Tree Mapping User Manual"/>
+ <meta name="revision" content="4.1.0"/>
+
+ <link rel="stylesheet" type="text/css" href="../../../default.css" />
+
+<style type="text/css">
+ pre {
+ padding : 0 0 0 0em;
+ margin : 0em 0em 0em 0;
+
+ font-size : 102%
+ }
+
+ body {
+ min-width: 48em;
+ }
+
+ h1 {
+ font-weight: bold;
+ font-size: 200%;
+ }
+
+ h2 {
+ font-weight : bold;
+ font-size : 150%;
+
+ padding-top : 0.8em;
+ }
+
+ h3 {
+ font-size : 130%;
+ padding-top : 0.8em;
+ }
+
+ /* Adjust indentation for three levels. */
+ #container {
+ max-width: 48em;
+ }
+
+ #content {
+ padding: 0 0.1em 0 4em;
+ /*background-color: red;*/
+ }
+
+ #content h1 {
+ margin-left: -2.06em;
+ }
+
+ #content h2 {
+ margin-left: -1.33em;
+ }
+
+ /* Title page */
+
+ #titlepage {
+ padding: 2em 0 1em 0;
+ border-bottom: 1px solid black;
+ }
+
+ #titlepage #title {
+ font-weight: bold;
+ font-size: 200%;
+ text-align: center;
+ padding: 1em 0 2em 0;
+ }
+
+ /* Lists */
+ ul.list li {
+ padding-top : 0.3em;
+ padding-bottom : 0.3em;
+ }
+
+
+ /* Built-in table */
+ #builtin {
+ margin: 2em 0 2em 0;
+
+ border-collapse : collapse;
+ border : 1px solid;
+ border-color : #000000;
+
+ font-size : 11px;
+ line-height : 14px;
+ }
+
+ #builtin th, #builtin td {
+ border: 1px solid;
+ padding : 0.9em 0.9em 0.7em 0.9em;
+ }
+
+ #builtin th {
+ background : #cde8f6;
+ }
+
+ #builtin td {
+ text-align: left;
+ }
+
+
+ /* default-fixed */
+ #default-fixed {
+ margin: 2em 0 2em 0;
+
+ border-collapse : collapse;
+ border : 1px solid;
+ border-color : #000000;
+
+ font-size : 11px;
+ line-height : 14px;
+ }
+
+ #default-fixed th, #default-fixed td {
+ border: 1px solid;
+ padding : 0.9em 0.9em 0.7em 0.9em;
+ }
+
+ #default-fixed th {
+ background : #cde8f6;
+ }
+
+ #default-fixed td {
+ text-align: center;
+ }
+
+
+ /* */
+ dl dt {
+ padding : 0.8em 0 0 0;
+ }
+
+
+ /* TOC */
+ table.toc {
+ border-style : none;
+ border-collapse : separate;
+ border-spacing : 0;
+
+ margin : 0.2em 0 0.2em 0;
+ padding : 0 0 0 0;
+ }
+
+ table.toc tr {
+ padding : 0 0 0 0;
+ margin : 0 0 0 0;
+ }
+
+ table.toc * td, table.toc * th {
+ border-style : none;
+ margin : 0 0 0 0;
+ vertical-align : top;
+ }
+
+ table.toc * th {
+ font-weight : normal;
+ padding : 0em 0.1em 0em 0;
+ text-align : left;
+ white-space : nowrap;
+ }
+
+ table.toc * table.toc th {
+ padding-left : 1em;
+ }
+
+ table.toc * td {
+ padding : 0em 0 0em 0.7em;
+ text-align : left;
+ }
+</style>
+
+
+</head>
+
+<body>
+<div id="container">
+ <div id="content">
+
+ <div class="noprint">
+
+ <div id="titlepage">
+ <div id="title">C++/Tree Mapping User Manual</div>
+
+ <p>Copyright &#169; @copyright@.</p>
+
+ <p>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href="https://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml">XHTML</a>,
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf">PDF</a>, and
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps">PostScript</a>.</p>
+ </div>
+
+ <h1>Table of Contents</h1>
+
+ <table class="toc">
+ <tr>
+ <th></th><td><a href="#0">Preface</a>
+ <table class="toc">
+ <tr><th></th><td><a href="#0.1">About This Document</a></td></tr>
+ <tr><th></th><td><a href="#0.2">More Information</a></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>1</th><td><a href="#1">Introduction</a></td>
+ </tr>
+
+ <tr>
+ <th>2</th><td><a href="#2">C++/Tree Mapping</a>
+ <table class="toc">
+ <tr>
+ <th>2.1</th><td><a href="#2.1">Preliminary Information</a>
+ <table class="toc">
+ <tr><th>2.1.1</th><td><a href="#2.1.1">C++ Standard</a></td></tr>
+ <tr><th>2.1.2</th><td><a href="#2.1.2">Identifiers</a></td></tr>
+ <tr><th>2.1.3</th><td><a href="#2.1.3">Character Type and Encoding</a></td></tr>
+ <tr><th>2.1.4</th><td><a href="#2.1.4">XML Schema Namespace</a></td></tr>
+ <tr><th>2.1.5</th><td><a href="#2.1.5">Anonymous Types</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.2</th><td><a href="#2.2">Error Handling</a>
+ <table class="toc">
+ <tr><th>2.2.1</th><td><a href="#2.2.1"><code>xml_schema::duplicate_id</code></a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.3</th><td><a href="#2.3">Mapping for <code>import</code> and <code>include</code></a>
+ <table class="toc">
+ <tr><th>2.3.1</th><td><a href="#2.3.1">Import</a></td></tr>
+ <tr><th>2.3.2</th><td><a href="#2.3.2">Inclusion with Target Namespace</a></td></tr>
+ <tr><th>2.3.3</th><td><a href="#2.3.3">Inclusion without Target Namespace</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.4</th><td><a href="#2.4">Mapping for Namespaces</a></td>
+ </tr>
+ <tr>
+ <th>2.5</th><td><a href="#2.5">Mapping for Built-in Data Types</a>
+ <table class="toc">
+ <tr><th>2.5.1</th><td><a href="#2.5.1">Inheritance from Built-in Data Types</a></td></tr>
+ <tr><th>2.5.2</th><td><a href="#2.5.2">Mapping for <code>anyType</code></a></td></tr>
+ <tr><th>2.5.3</th><td><a href="#2.5.3">Mapping for <code>anySimpleType</code></a></td></tr>
+ <tr><th>2.5.4</th><td><a href="#2.5.4">Mapping for <code>QName</code></a></td></tr>
+ <tr><th>2.5.5</th><td><a href="#2.5.5">Mapping for <code>IDREF</code></a></td></tr>
+ <tr><th>2.5.6</th><td><a href="#2.5.6">Mapping for <code>base64Binary</code> and <code>hexBinary</code></a></td></tr>
+ <tr><th>2.5.7</th><td><a href="#2.5.7">Time Zone Representation</a></td></tr>
+ <tr><th>2.5.8</th><td><a href="#2.5.8">Mapping for <code>date</code></a></td></tr>
+ <tr><th>2.5.9</th><td><a href="#2.5.9">Mapping for <code>dateTime</code></a></td></tr>
+ <tr><th>2.5.10</th><td><a href="#2.5.10">Mapping for <code>duration</code></a></td></tr>
+ <tr><th>2.5.11</th><td><a href="#2.5.11">Mapping for <code>gDay</code></a></td></tr>
+ <tr><th>2.5.12</th><td><a href="#2.5.12">Mapping for <code>gMonth</code></a></td></tr>
+ <tr><th>2.5.13</th><td><a href="#2.5.13">Mapping for <code>gMonthDay</code></a></td></tr>
+ <tr><th>2.5.14</th><td><a href="#2.5.14">Mapping for <code>gYear</code></a></td></tr>
+ <tr><th>2.5.15</th><td><a href="#2.5.15">Mapping for <code>gYearMonth</code></a></td></tr>
+ <tr><th>2.5.16</th><td><a href="#2.5.16">Mapping for <code>time</code></a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.6</th><td><a href="#2.6">Mapping for Simple Types</a>
+ <table class="toc">
+ <tr><th>2.6.1</th><td><a href="#2.6.1">Mapping for Derivation by Restriction</a></td></tr>
+ <tr><th>2.6.2</th><td><a href="#2.6.2">Mapping for Enumerations</a></td></tr>
+ <tr><th>2.6.3</th><td><a href="#2.6.3">Mapping for Derivation by List</a></td></tr>
+ <tr><th>2.6.4</th><td><a href="#2.6.4">Mapping for Derivation by Union</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.7</th><td><a href="#2.7">Mapping for Complex Types</a>
+ <table class="toc">
+ <tr><th>2.7.1</th><td><a href="#2.7.1">Mapping for Derivation by Extension</a></td></tr>
+ <tr><th>2.7.2</th><td><a href="#2.7.2">Mapping for Derivation by Restriction</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.8</th><td><a href="#2.8">Mapping for Local Elements and Attributes</a>
+ <table class="toc">
+ <tr><th>2.8.1</th><td><a href="#2.8.1">Mapping for Members with the One Cardinality Class</a></td></tr>
+ <tr><th>2.8.2</th><td><a href="#2.8.2">Mapping for Members with the Optional Cardinality Class</a></td></tr>
+ <tr><th>2.8.3</th><td><a href="#2.8.3">Mapping for Members with the Sequence Cardinality Class</a></td></tr>
+ <tr><th>2.8.4</th><td><a href="#2.8.4">Element Order</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.9</th><td><a href="#2.9">Mapping for Global Elements</a>
+ <table class="toc">
+ <tr><th>2.9.1</th><td><a href="#2.9.1">Element Types</a></td></tr>
+ <tr><th>2.9.2</th><td><a href="#2.9.2">Element Map</a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.10</th><td><a href="#2.10">Mapping for Global Attributes</a></td>
+ </tr>
+ <tr>
+ <th>2.11</th><td><a href="#2.11">Mapping for <code>xsi:type</code> and Substitution Groups</a></td>
+ </tr>
+ <tr>
+ <th>2.12</th><td><a href="#2.12">Mapping for <code>any</code> and <code>anyAttribute</code></a>
+ <table class="toc">
+ <tr><th>2.12.1</th><td><a href="#2.12.1">Mapping for <code>any</code> with the One Cardinality Class</a></td></tr>
+ <tr><th>2.12.2</th><td><a href="#2.12.2">Mapping for <code>any</code> with the Optional Cardinality Class</a></td></tr>
+ <tr><th>2.12.3</th><td><a href="#2.12.3">Mapping for <code>any</code> with the Sequence Cardinality Class</a></td></tr>
+ <tr><th>2.12.4</th><td><a href="#2.12.4">Element Wildcard Order</a></td></tr>
+ <tr><th>2.12.5</th><td><a href="#2.12.5">Mapping for <code>anyAttribute</code></a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>2.13</th><td><a href="#2.13">Mapping for Mixed Content Models</a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>3</th><td><a href="#3">Parsing</a>
+ <table class="toc">
+ <tr>
+ <th>3.1</th><td><a href="#3.1">Initializing the Xerces-C++ Runtime</a></td>
+ </tr>
+ <tr>
+ <th>3.2</th><td><a href="#3.2">Flags and Properties</a></td>
+ </tr>
+ <tr>
+ <th>3.3</th><td><a href="#3.3">Error Handling</a>
+ <table class="toc">
+ <tr><th>3.3.1</th><td><a href="#3.3.1"><code>xml_schema::parsing</code></a></td></tr>
+ <tr><th>3.3.2</th><td><a href="#3.3.2"><code>xml_schema::expected_element</code></a></td></tr>
+ <tr><th>3.3.3</th><td><a href="#3.3.3"><code>xml_schema::unexpected_element</code></a></td></tr>
+ <tr><th>3.3.4</th><td><a href="#3.3.4"><code>xml_schema::expected_attribute</code></a></td></tr>
+ <tr><th>3.3.5</th><td><a href="#3.3.5"><code>xml_schema::unexpected_enumerator</code></a></td></tr>
+ <tr><th>3.3.6</th><td><a href="#3.3.6"><code>xml_schema::expected_text_content</code></a></td></tr>
+ <tr><th>3.3.7</th><td><a href="#3.3.7"><code>xml_schema::no_type_info</code></a></td></tr>
+ <tr><th>3.3.8</th><td><a href="#3.3.8"><code>xml_schema::not_derived</code></a></td></tr>
+ <tr><th>3.3.9</th><td><a href="#3.3.9"><code>xml_schema::not_prefix_mapping</code></a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>3.4</th><td><a href="#3.4">Reading from a Local File or URI</a></td>
+ </tr>
+ <tr>
+ <th>3.5</th><td><a href="#3.5">Reading from <code>std::istream</code></a></td>
+ </tr>
+ <tr>
+ <th>3.6</th><td><a href="#3.6">Reading from <code>xercesc::InputSource</code></a></td>
+ </tr>
+ <tr>
+ <th>3.7</th><td><a href="#3.7">Reading from DOM</a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>4</th><td><a href="#4">Serialization</a>
+ <table class="toc">
+ <tr>
+ <th>4.1</th><td><a href="#4.1">Initializing the Xerces-C++ Runtime</a></td>
+ </tr>
+ <tr>
+ <th>4.2</th><td><a href="#4.2">Namespace Infomap and Character Encoding</a></td>
+ </tr>
+ <tr>
+ <th>4.3</th><td><a href="#4.3">Flags</a></td>
+ </tr>
+ <tr>
+ <th>4.4</th><td><a href="#4.4">Error Handling</a>
+ <table class="toc">
+ <tr><th>4.4.1</th><td><a href="#4.4.1"><code>xml_schema::serialization</code></a></td></tr>
+ <tr><th>4.4.2</th><td><a href="#4.4.2"><code>xml_schema::unexpected_element</code></a></td></tr>
+ <tr><th>4.4.3</th><td><a href="#4.4.3"><code>xml_schema::no_type_info</code></a></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>4.5</th><td><a href="#4.5">Serializing to <code>std::ostream</code></a></td>
+ </tr>
+ <tr>
+ <th>4.6</th><td><a href="#4.6">Serializing to <code>xercesc::XMLFormatTarget</code></a></td>
+ </tr>
+ <tr>
+ <th>4.7</th><td><a href="#4.7">Serializing to DOM</a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th>5</th><td><a href="#5">Additional Functionality</a>
+ <table class="toc">
+ <tr>
+ <th>5.1</th><td><a href="#5.1">DOM Association</a></td>
+ </tr>
+ <tr>
+ <th>5.2</th><td><a href="#5.2">Binary Serialization</a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <th></th><td><a href="#A">Appendix A &mdash; Default and Fixed Values</a></td>
+ </tr>
+
+ </table>
+ </div>
+
+ <h1><a name="0">Preface</a></h1>
+
+ <h2><a name="0.1">About This Document</a></h2>
+
+ <p>This document describes the mapping of W3C XML Schema
+ to the C++ programming language as implemented by
+ <a href="https://www.codesynthesis.com/products/xsd">CodeSynthesis
+ XSD</a> - an XML Schema to C++ data binding compiler. The mapping
+ represents information stored in XML instance documents as a
+ statically-typed, tree-like in-memory data structure and is
+ called C++/Tree.
+ </p>
+
+ <p>Revision 4.1.0<br/> <!-- Remember to change revision in other places -->
+ This revision of the manual describes the C++/Tree
+ mapping as implemented by CodeSynthesis XSD version 4.1.0.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml">XHTML</a>,
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf">PDF</a>, and
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps">PostScript</a>.</p>
+
+ <h2><a name="0.2">More Information</a></h2>
+
+ <p>Beyond this manual, you may also find the following sources of
+ information useful:</p>
+
+ <ul class="list">
+ <li><a href="https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/">C++/Tree
+ Mapping Getting Started Guide</a></li>
+
+ <li><a href="http://wiki.codesynthesis.com/Tree/Customization_guide">C++/Tree
+ Mapping Customization Guide</a></li>
+
+ <li><a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree
+ Mapping Frequently Asked Questions (FAQ)</a></li>
+
+ <li><a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a></li>
+
+ <li>The <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ contains a collection of examples and a README file with an overview
+ of each example.</li>
+
+ <li>The <code>README</code> file in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a> package
+ explains how to build the examples.</li>
+
+ <li>The <a href="https://www.codesynthesis.com/mailman/listinfo/xsd-users">xsd-users</a>
+ mailing list is a place to ask questions. Furthermore the
+ <a href="https://www.codesynthesis.com/pipermail/xsd-users/">archives</a>
+ may already have answers to some of your questions.</li>
+ </ul>
+
+
+ <h1><a name="1">1 Introduction</a></h1>
+
+ <p>C++/Tree is a W3C XML Schema to C++ mapping that represents the
+ data stored in XML as a statically-typed, vocabulary-specific
+ object model. Based on a formal description of an XML vocabulary
+ (schema), the C++/Tree mapping produces a tree-like data structure
+ suitable for in-memory processing as well as XML parsing and
+ serialization code.</p>
+
+ <p>A typical application that processes XML documents usually
+ performs the following three steps: it first reads (parses) an XML
+ instance document to an object model, it then performs
+ some useful computations on that model which may involve
+ modification of the model, and finally it may write (serialize)
+ the modified object model back to XML.
+ </p>
+
+ <p>The C++/Tree mapping consists of C++ types that represent the
+ given vocabulary (<a href="#2">Chapter 2, "C++/Tree Mapping"</a>),
+ a set of parsing functions that convert XML documents to
+ a tree-like in-memory data structure (<a href="#3">Chapter 3,
+ "Parsing"</a>), and a set of serialization functions that convert
+ the object model back to XML (<a href="#4">Chapter 4,
+ "Serialization"</a>). Furthermore, the mapping provides a number
+ of additional features, such as DOM association and binary
+ serialization, that can be useful in some applications
+ (<a href="#5">Chapter 5, "Additional Functionality"</a>).
+ </p>
+
+
+ <!-- Chapter 2 -->
+
+
+ <h1><a name="2">2 C++/Tree Mapping</a></h1>
+
+ <h2><a name="2.1">2.1 Preliminary Information</a></h2>
+
+ <h3><a name="2.1.1">2.1.1 C++ Standard</a></h3>
+
+ <p>The C++/Tree mapping provides support for ISO/IEC C++ 2011 (C++11)
+ and ISO/IEC C++ 1998/2003 (C++98). To select the C++ standard for the
+ generated code we use the <code>--std</code> XSD compiler command
+ line option. While the majority of the examples in this guide use
+ C++11, the document explains the C++11/98 usage difference and so
+ they can easily be converted to C++98.</p>
+
+ <h3><a name="2.1.2">2.1.2 Identifiers</a></h3>
+
+ <p>XML Schema names may happen to be reserved C++ keywords or contain
+ characters that are illegal in C++ identifiers. To avoid C++ compilation
+ problems, such names are changed (escaped) when mapped to C++. If an
+ XML Schema name is a C++ keyword, the "_" suffix is added to it. All
+ character of an XML Schema name that are not allowed in C++ identifiers
+ are replaced with "_".
+ </p>
+
+ <p>For example, XML Schema name <code>try</code> will be mapped to
+ C++ identifier <code>try_</code>. Similarly, XML Schema name
+ <code>strange.na-me</code> will be mapped to C++ identifier
+ <code>strange_na_me</code>.
+ </p>
+
+ <p>Furthermore, conflicts between type names and function names in the
+ same scope are resolved using name escaping. Such conflicts include
+ both a global element (which is mapped to a set of parsing and/or
+ serialization functions or element types, see <a href="#2.9">Section
+ 2.9, "Mapping for Global Elements"</a>) and a global type sharing the
+ same name as well as a local element or attribute inside a type having
+ the same name as the type itself.</p>
+
+ <p>For example, if we had a global type <code>catalog</code>
+ and a global element with the same name then the type would be
+ mapped to a C++ class with name <code>catalog</code> while the
+ parsing functions corresponding to the global element would have
+ their names escaped as <code>catalog_</code>.
+ </p>
+
+ <p>By default the mapping uses the so-called K&amp;R (Kernighan and
+ Ritchie) identifier naming convention which is also used throughout
+ this manual. In this convention both type and function names are in
+ lower case and words are separated by underscores. If your application
+ code or schemas use a different notation, you may want to change the
+ naming convention used by the mapping for consistency.
+ The compiler supports a set of widely-used naming conventions
+ that you can select with the <code>--type-naming</code> and
+ <code>--function-naming</code> options. You can also further
+ refine one of the predefined conventions or create a completely
+ custom naming scheme by using the <code>--*-regex</code> options.
+ For more detailed information on these options refer to the NAMING
+ CONVENTION section in the <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>.</p>
+
+ <h3><a name="2.1.3">2.1.3 Character Type and Encoding</a></h3>
+
+ <p>The code that implements the mapping, depending on the
+ <code>--char-type</code> option, is generated using either
+ <code>char</code> or <code>wchar_t</code> as the character
+ type. In this document code samples use symbol <code>C</code>
+ to refer to the character type you have selected when translating
+ your schemas, for example <code>std::basic_string&lt;C></code>.
+ </p>
+
+ <p>Another aspect of the mapping that depends on the character type
+ is character encoding. For the <code>char</code> character type
+ the default encoding is UTF-8. Other supported encodings are
+ ISO-8859-1, Xerces-C++ Local Code Page (LPC), as well as
+ custom encodings and can be selected with the
+ <code>--char-encoding</code> command line option.</p>
+
+ <p>For the <code>wchar_t</code> character type the encoding is
+ automatically selected between UTF-16 and UTF-32/UCS-4 depending
+ on the size of the <code>wchar_t</code> type. On some platforms
+ (for example, Windows with Visual C++ and AIX with IBM XL C++)
+ <code>wchar_t</code> is 2 bytes long. For these platforms the
+ encoding is UTF-16. On other platforms <code>wchar_t</code> is 4 bytes
+ long and UTF-32/UCS-4 is used.</p>
+
+ <h3><a name="2.1.4">2.1.4 XML Schema Namespace</a></h3>
+
+ <p>The mapping relies on some predefined types, classes, and functions
+ that are logically defined in the XML Schema namespace reserved for
+ the XML Schema language (<code>http://www.w3.org/2001/XMLSchema</code>).
+ By default, this namespace is mapped to C++ namespace
+ <code>xml_schema</code>. It is automatically accessible
+ from a C++ compilation unit that includes a header file generated
+ from an XML Schema definition.
+ </p>
+
+ <p>Note that, if desired, the default mapping of this namespace can be
+ changed as described in <a href="#2.4">Section 2.4, "Mapping for
+ Namespaces"</a>.
+ </p>
+
+
+ <h3><a name="2.1.5">2.1.5 Anonymous Types</a></h3>
+
+ <p>For the purpose of code generation, anonymous types defined in
+ XML Schema are automatically assigned names that are derived
+ from enclosing attributes and elements. Otherwise, such types
+ follows standard mapping rules for simple and complex type
+ definitions (see <a href="#2.6">Section 2.6, "Mapping for Simple Types"</a>
+ and <a href="#2.7">Section 2.7, "Mapping for Complex Types"</a>).
+ For example, in the following schema fragment:
+ </p>
+
+ <pre class="xml">
+&lt;element name="object">
+ &lt;complexType>
+ ...
+ &lt;/complexType>
+&lt;/element>
+ </pre>
+
+ <p>The anonymous type defined inside element <code>object</code> will
+ be given name <code>object</code>. The compiler has a number of
+ options that control the process of anonymous type naming. For more
+ information refer to the <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a>.</p>
+
+
+ <h2><a name="2.2">2.2 Error Handling</a></h2>
+
+ <p>The mapping uses the C++ exception handling mechanism as a primary way
+ of reporting error conditions. All exceptions that are specified in
+ this mapping derive from <code>xml_schema::exception</code> which
+ itself is derived from <code>std::exception</code>:
+ </p>
+
+ <pre class="c++">
+struct exception: virtual std::exception
+{
+ friend
+ std::basic_ostream&lt;C>&amp;
+ operator&lt;&lt; (std::basic_ostream&lt;C>&amp; os, const exception&amp; e)
+ {
+ e.print (os);
+ return os;
+ }
+
+protected:
+ virtual void
+ print (std::basic_ostream&lt;C>&amp;) const = 0;
+};
+ </pre>
+
+ <p>The exception hierarchy supports "virtual" <code>operator&lt;&lt;</code>
+ which allows you to obtain diagnostics corresponding to the thrown
+ exception using the base exception interface. For example:</p>
+
+ <pre class="c++">
+try
+{
+ ...
+}
+catch (const xml_schema::exception&amp; e)
+{
+ cerr &lt;&lt; e &lt;&lt; endl;
+}
+ </pre>
+
+ <p>The following sub-sections describe exceptions thrown by the
+ types that constitute the object model.
+ <a href="#3.3">Section 3.3, "Error Handling"</a> of
+ <a href="#3">Chapter 3, "Parsing"</a> describes exceptions
+ and error handling mechanisms specific to the parsing functions.
+ <a href="#4.4">Section 4.4, "Error Handling"</a> of
+ <a href="#4">Chapter 4, "Serialization"</a> describes exceptions
+ and error handling mechanisms specific to the serialization functions.
+ </p>
+
+
+ <h3><a name="2.2.1">2.2.1 <code>xml_schema::duplicate_id</code></a></h3>
+
+ <pre class="c++">
+struct duplicate_id: virtual exception
+{
+ duplicate_id (const std::basic_string&lt;C>&amp; id);
+
+ const std::basic_string&lt;C>&amp;
+ id () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::duplicate_id</code> is thrown when
+ a conflicting instance of <code>xml_schema::id</code> (see
+ <a href="#2.5">Section 2.5, "Mapping for Built-in Data Types"</a>)
+ is added to a tree. The offending ID value can be obtained using
+ the <code>id</code> function.
+ </p>
+
+ <h2><a name="2.3">2.3 Mapping for <code>import</code> and <code>include</code></a></h2>
+
+ <h3><a name="2.3.1">2.3.1 Import</a></h3>
+
+ <p>The XML Schema <code>import</code> element is mapped to the C++
+ Preprocessor <code>#include</code> directive. The value of
+ the <code>schemaLocation</code> attribute is used to derive
+ the name of the header file that appears in the <code>#include</code>
+ directive. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;import namespace="https://www.codesynthesis.com/test"
+ schemaLocation="test.xsd"/>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+#include "test.hxx"
+ </pre>
+
+ <p>Note that you will need to compile imported schemas separately
+ in order to produce corresponding header files.</p>
+
+ <h3><a name="2.3.2">2.3.2 Inclusion with Target Namespace</a></h3>
+
+ <p>The XML Schema <code>include</code> element which refers to a schema
+ with a target namespace or appears in a schema without a target namespace
+ follows the same mapping rules as the <code>import</code> element,
+ see <a href="#2.3.1">Section 2.3.1, "Import"</a>.
+ </p>
+
+ <h3><a name="2.3.3">2.3.3 Inclusion without Target Namespace</a></h3>
+
+ <p>For the XML Schema <code>include</code> element which refers to a schema
+ without a target namespace and appears in a schema with a target
+ namespace (such inclusion sometimes called "chameleon inclusion"),
+ declarations and definitions from the included schema are generated
+ in-line in the namespace of the including schema as if they were
+ declared and defined there verbatim. For example, consider the
+ following two schemas:
+ </p>
+
+ <pre class="xml">
+&lt;-- common.xsd -->
+&lt;schema>
+ &lt;complexType name="type">
+ ...
+ &lt;/complexType>
+&lt;/schema>
+
+&lt;-- test.xsd -->
+&lt;schema targetNamespace="https://www.codesynthesis.com/test">
+ &lt;include schemaLocation="common.xsd"/>
+&lt;/schema>
+ </pre>
+
+ <p>The fragment of interest from the generated header file for
+ <code>text.xsd</code> would look like this:</p>
+
+ <pre class="c++">
+// test.hxx
+namespace test
+{
+ class type
+ {
+ ...
+ };
+}
+ </pre>
+
+ <h2><a name="2.4">2.4 Mapping for Namespaces</a></h2>
+
+ <p>An XML Schema namespace is mapped to one or more nested C++
+ namespaces. XML Schema namespaces are identified by URIs.
+ By default, a namespace URI is mapped to a sequence of
+ C++ namespace names by removing the protocol and host parts
+ and splitting the rest into a sequence of names with '<code>/</code>'
+ as the name separator. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;schema targetNamespace="https://www.codesynthesis.com/system/test">
+ ...
+&lt;/schema>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+namespace system
+{
+ namespace test
+ {
+ ...
+ }
+}
+ </pre>
+
+ <p>The default mapping of namespace URIs to C++ namespace names can be
+ altered using the <code>--namespace-map</code> and
+ <code>--namespace-regex</code> options. See the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a> for more information.
+ </p>
+
+ <h2><a name="2.5">2.5 Mapping for Built-in Data Types</a></h2>
+
+ <p>The mapping of XML Schema built-in data types to C++ types is
+ summarized in the table below.</p>
+
+ <!-- border="1" is necessary for html2ps -->
+ <table id="builtin" border="1">
+ <tr>
+ <th>XML Schema type</th>
+ <th>Alias in the <code>xml_schema</code> namespace</th>
+ <th>C++ type</th>
+ </tr>
+
+ <tr>
+ <th colspan="3">anyType and anySimpleType types</th>
+ </tr>
+ <tr>
+ <td><code>anyType</code></td>
+ <td><code>type</code></td>
+ <td><a href="#2.5.2">Section 2.5.2, "Mapping for <code>anyType</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>anySimpleType</code></td>
+ <td><code>simple_type</code></td>
+ <td><a href="#2.5.3">Section 2.5.3, "Mapping for <code>anySimpleType</code>"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-length integral types</th>
+ </tr>
+ <!-- 8-bit -->
+ <tr>
+ <td><code>byte</code></td>
+ <td><code>byte</code></td>
+ <td><code>signed&nbsp;char</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedByte</code></td>
+ <td><code>unsigned_byte</code></td>
+ <td><code>unsigned&nbsp;char</code></td>
+ </tr>
+
+ <!-- 16-bit -->
+ <tr>
+ <td><code>short</code></td>
+ <td><code>short_</code></td>
+ <td><code>short</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedShort</code></td>
+ <td><code>unsigned_short</code></td>
+ <td><code>unsigned&nbsp;short</code></td>
+ </tr>
+
+ <!-- 32-bit -->
+ <tr>
+ <td><code>int</code></td>
+ <td><code>int_</code></td>
+ <td><code>int</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedInt</code></td>
+ <td><code>unsigned_int</code></td>
+ <td><code>unsigned&nbsp;int</code></td>
+ </tr>
+
+ <!-- 64-bit -->
+ <tr>
+ <td><code>long</code></td>
+ <td><code>long_</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>unsignedLong</code></td>
+ <td><code>unsigned_long</code></td>
+ <td><code>unsigned&nbsp;long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-length integral types</th>
+ </tr>
+ <tr>
+ <td><code>integer</code></td>
+ <td><code>integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonPositiveInteger</code></td>
+ <td><code>non_positive_integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>nonNegativeInteger</code></td>
+ <td><code>non_negative_integer</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>positiveInteger</code></td>
+ <td><code>positive_integer</code></td>
+ <td><code>unsigned long&nbsp;long</code></td>
+ </tr>
+ <tr>
+ <td><code>negativeInteger</code></td>
+ <td><code>negative_integer</code></td>
+ <td><code>long&nbsp;long</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">boolean types</th>
+ </tr>
+ <tr>
+ <td><code>boolean</code></td>
+ <td><code>boolean</code></td>
+ <td><code>bool</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">fixed-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>float</code></td>
+ <td><code>float_</code></td>
+ <td><code>float</code></td>
+ </tr>
+ <tr>
+ <td><code>double</code></td>
+ <td><code>double_</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">arbitrary-precision floating-point types</th>
+ </tr>
+ <tr>
+ <td><code>decimal</code></td>
+ <td><code>decimal</code></td>
+ <td><code>double</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">string types</th>
+ </tr>
+ <tr>
+ <td><code>string</code></td>
+ <td><code>string</code></td>
+ <td>type derived from <code>std::basic_string</code></td>
+ </tr>
+ <tr>
+ <td><code>normalizedString</code></td>
+ <td><code>normalized_string</code></td>
+ <td>type derived from <code>string</code></td>
+ </tr>
+ <tr>
+ <td><code>token</code></td>
+ <td><code>token</code></td>
+ <td>type&nbsp;derived&nbsp;from&nbsp;<code>normalized_string</code></td>
+ </tr>
+ <tr>
+ <td><code>Name</code></td>
+ <td><code>name</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+ <tr>
+ <td><code>NMTOKEN</code></td>
+ <td><code>nmtoken</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+ <tr>
+ <td><code>NMTOKENS</code></td>
+ <td><code>nmtokens</code></td>
+ <td>type derived from <code>sequence&lt;nmtoken></code></td>
+ </tr>
+ <tr>
+ <td><code>NCName</code></td>
+ <td><code>ncname</code></td>
+ <td>type derived from <code>name</code></td>
+ </tr>
+ <tr>
+ <td><code>language</code></td>
+ <td><code>language</code></td>
+ <td>type derived from <code>token</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">qualified name</th>
+ </tr>
+ <tr>
+ <td><code>QName</code></td>
+ <td><code>qname</code></td>
+ <td><a href="#2.5.4">Section 2.5.4, "Mapping for <code>QName</code>"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">ID/IDREF types</th>
+ </tr>
+ <tr>
+ <td><code>ID</code></td>
+ <td><code>id</code></td>
+ <td>type derived from <code>ncname</code></td>
+ </tr>
+ <tr>
+ <td><code>IDREF</code></td>
+ <td><code>idref</code></td>
+ <td><a href="#2.5.5">Section 2.5.5, "Mapping for <code>IDREF</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>IDREFS</code></td>
+ <td><code>idrefs</code></td>
+ <td>type derived from <code>sequence&lt;idref></code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">URI types</th>
+ </tr>
+ <tr>
+ <td><code>anyURI</code></td>
+ <td><code>uri</code></td>
+ <td>type derived from <code>std::basic_string</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">binary types</th>
+ </tr>
+ <tr>
+ <td><code>base64Binary</code></td>
+ <td><code>base64_binary</code></td>
+ <td rowspan="2"><a href="#2.5.6">Section 2.5.6, "Mapping for
+ <code>base64Binary</code> and <code>hexBinary</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>hexBinary</code></td>
+ <td><code>hex_binary</code></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">date/time types</th>
+ </tr>
+ <tr>
+ <td><code>date</code></td>
+ <td><code>date</code></td>
+ <td><a href="#2.5.8">Section 2.5.8, "Mapping for
+ <code>date</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>dateTime</code></td>
+ <td><code>date_time</code></td>
+ <td><a href="#2.5.9">Section 2.5.9, "Mapping for
+ <code>dateTime</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>duration</code></td>
+ <td><code>duration</code></td>
+ <td><a href="#2.5.10">Section 2.5.10, "Mapping for
+ <code>duration</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>gDay</code></td>
+ <td><code>gday</code></td>
+ <td><a href="#2.5.11">Section 2.5.11, "Mapping for
+ <code>gDay</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>gMonth</code></td>
+ <td><code>gmonth</code></td>
+ <td><a href="#2.5.12">Section 2.5.12, "Mapping for
+ <code>gMonth</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>gMonthDay</code></td>
+ <td><code>gmonth_day</code></td>
+ <td><a href="#2.5.13">Section 2.5.13, "Mapping for
+ <code>gMonthDay</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>gYear</code></td>
+ <td><code>gyear</code></td>
+ <td><a href="#2.5.14">Section 2.5.14, "Mapping for
+ <code>gYear</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>gYearMonth</code></td>
+ <td><code>gyear_month</code></td>
+ <td><a href="#2.5.15">Section 2.5.15, "Mapping for
+ <code>gYearMonth</code>"</a></td>
+ </tr>
+ <tr>
+ <td><code>time</code></td>
+ <td><code>time</code></td>
+ <td><a href="#2.5.16">Section 2.5.16, "Mapping for
+ <code>time</code>"</a></td>
+ </tr>
+
+ <tr>
+ <th colspan="3">entity types</th>
+ </tr>
+ <tr>
+ <td><code>ENTITY</code></td>
+ <td><code>entity</code></td>
+ <td>type derived from <code>name</code></td>
+ </tr>
+ <tr>
+ <td><code>ENTITIES</code></td>
+ <td><code>entities</code></td>
+ <td>type derived from <code>sequence&lt;entity></code></td>
+ </tr>
+ </table>
+
+ <p>All XML Schema built-in types are mapped to C++ classes that are
+ derived from the <code>xml_schema::simple_type</code> class except
+ where the mapping is to a fundamental C++ type.</p>
+
+ <p>The <code>sequence</code> class template is defined in an
+ implementation-specific namespace. It conforms to the
+ sequence interface as defined by the ISO/ANSI Standard for
+ C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences").
+ Practically, this means that you can treat such a sequence
+ as if it was <code>std::vector</code>. One notable extension
+ to the standard interface that is available only for
+ sequences of non-fundamental C++ types is the addition of
+ the overloaded <code>push_back</code> and <code>insert</code>
+ member functions which instead of the constant reference
+ to the element type accept automatic pointer (<code>std::unique_ptr</code>
+ or <code>std::auto_ptr</code>, depending on the C++ standard
+ selected) to the element type. These functions assume ownership
+ of the pointed to object and reset the passed automatic pointer.
+ </p>
+
+ <h3><a name="2.5.1">2.5.1 Inheritance from Built-in Data Types</a></h3>
+
+ <p>In cases where the mapping calls for an inheritance from a built-in
+ type which is mapped to a fundamental C++ type, a proxy type is
+ used instead of the fundamental C++ type (C++ does not allow
+ inheritance from fundamental types). For instance:</p>
+
+ <pre class="xml">
+&lt;simpleType name="my_int">
+ &lt;restriction base="int"/>
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class my_int: public fundamental_base&lt;int>
+{
+ ...
+};
+ </pre>
+
+ <p>The <code>fundamental_base</code> class template provides a close
+ emulation (though not exact) of a fundamental C++ type.
+ It is defined in an implementation-specific namespace and has the
+ following interface:</p>
+
+ <pre class="c++">
+template &lt;typename X>
+class fundamental_base: public simple_type
+{
+public:
+ fundamental_base ();
+ fundamental_base (X)
+ fundamental_base (const fundamental_base&amp;)
+
+public:
+ fundamental_base&amp;
+ operator= (const X&amp;);
+
+public:
+ operator const X &amp; () const;
+ operator X&amp; ();
+
+ template &lt;typename Y>
+ operator Y () const;
+
+ template &lt;typename Y>
+ operator Y ();
+};
+ </pre>
+
+ <h3><a name="2.5.2">2.5.2 Mapping for <code>anyType</code></a></h3>
+
+ <p>The XML Schema <code>anyType</code> built-in data type is mapped to the
+ <code>xml_schema::type</code> C++ class:</p>
+
+ <pre class="c++">
+class type
+{
+public:
+ virtual
+ ~type ();
+
+ type ();
+ type (const type&amp;);
+
+ type&amp;
+ operator= (const type&amp;);
+
+ virtual type*
+ _clone () const;
+
+ // anyType DOM content.
+ //
+public:
+ typedef element_optional dom_content_optional;
+
+ const dom_content_optional&amp;
+ dom_content () const;
+
+ dom_content_optional&amp;
+ dom_content ();
+
+ void
+ dom_content (const xercesc::DOMElement&amp;);
+
+ void
+ dom_content (xercesc::DOMElement*);
+
+ void
+ dom_content (const dom_content_optional&amp;);
+
+ const xercesc::DOMDocument&amp;
+ dom_content_document () const;
+
+ xercesc::DOMDocument&amp;
+ dom_content_document ();
+
+ bool
+ null_content () const;
+
+ // DOM association.
+ //
+public:
+ const xercesc::DOMNode*
+ _node () const;
+
+ xercesc::DOMNode*
+ _node ();
+};
+ </pre>
+
+ <p>When <code>xml_schema::type</code> is used to create an instance
+ (as opposed to being a base of a derived type), it represents
+ the XML Schema <code>anyType</code> type. <code>anyType</code>
+ allows any attributes and any content in any order. In the
+ C++/Tree mapping this content can be represented as a DOM
+ fragment, similar to XML Schema wildcards (<a href="#2.12">Section
+ 2.12, "Mapping for <code>any</code> and
+ <code>anyAttribute</code>"</a>).</p>
+
+ <p>To enable automatic extraction of <code>anyType</code> content
+ during parsing, the <code>--generate-any-type</code> option must be
+ specified. Because the DOM API is used to access such content, the
+ Xerces-C++ runtime should be initialized by the application prior to
+ parsing and should remain initialized for the lifetime of objects
+ with the DOM content. For more information on the Xerces-C++ runtime
+ initialization see <a href="#3.1">Section 3.1, "Initializing the
+ Xerces-C++ Runtime"</a>.</p>
+
+ <p>The DOM content is stored as the optional DOM element container
+ and the DOM content accessors and modifiers presented above are
+ identical to those generated for an optional element wildcard.
+ Refer to <a href="#2.12.2">Section 2.12.2, "Mapping for <code>any</code>
+ with the Optional Cardinality Class"</a> for details on their
+ semantics.</p>
+
+ <p>The <code>dom_content_document()</code> function returns the
+ DOM document used to store the raw XML content corresponding
+ to the <code>anyType</code> instance. It is equivalent to the
+ <code>dom_document()</code> function generated for types
+ with wildcards.</p>
+
+ <p>The <code>null_content()</code> accessor is an optimization function
+ that allows us to check for the lack of content without actually
+ creating its empty representation, that is, empty DOM document for
+ <code>anyType</code> or empty string for <code>anySimpleType</code>
+ (see the following section for details on <code>anySimpleType</code>).</p>
+
+ <p>For more information on DOM association refer to
+ <a href="#5.1">Section 5.1, "DOM Association"</a>.</p>
+
+ <h3><a name="2.5.3">2.5.3 Mapping for <code>anySimpleType</code></a></h3>
+
+ <p>The XML Schema <code>anySimpleType</code> built-in data type is mapped
+ to the <code>xml_schema::simple_type</code> C++ class:</p>
+
+ <pre class="c++">
+class simple_type: public type
+{
+public:
+ simple_type ();
+ simple_type (const C*);
+ simple_type (const std::basic_string&lt;C>&amp;);
+
+ simple_type (const simple_type&amp;);
+
+ simple_type&amp;
+ operator= (const simple_type&amp;);
+
+ virtual simple_type*
+ _clone () const;
+
+ // anySimpleType text content.
+ //
+public:
+ const std::basic_string&lt;C>&amp;
+ text_content () const;
+
+ std::basic_string&lt;C>&amp;
+ text_content ();
+
+ void
+ text_content (const std::basic_string&lt;C>&amp;);
+};
+ </pre>
+
+ <p>When <code>xml_schema::simple_type</code> is used to create an instance
+ (as opposed to being a base of a derived type), it represents
+ the XML Schema <code>anySimpleType</code> type. <code>anySimpleType</code>
+ allows any simple content. In the C++/Tree mapping this content can
+ be represented as a string and accessed or modified with the
+ <code>text_content()</code> functions shown above.</p>
+
+ <h3><a name="2.5.4">2.5.4 Mapping for <code>QName</code></a></h3>
+
+ <p>The XML Schema <code>QName</code> built-in data type is mapped to the
+ <code>xml_schema::qname</code> C++ class:</p>
+
+ <pre class="c++">
+class qname: public simple_type
+{
+public:
+ qname (const ncname&amp;);
+ qname (const uri&amp;, const ncname&amp;);
+ qname (const qname&amp;);
+
+public:
+ qname&amp;
+ operator= (const qname&amp;);
+
+public:
+ virtual qname*
+ _clone () const;
+
+public:
+ bool
+ qualified () const;
+
+ const uri&amp;
+ namespace_ () const;
+
+ const ncname&amp;
+ name () const;
+};
+ </pre>
+
+ <p>The <code>qualified</code> accessor function can be used to determine
+ if the name is qualified.</p>
+
+ <h3><a name="2.5.5">2.5.5 Mapping for <code>IDREF</code></a></h3>
+
+ <p>The XML Schema <code>IDREF</code> built-in data type is mapped to the
+ <code>xml_schema::idref</code> C++ class. This class implements the
+ smart pointer C++ idiom:</p>
+
+ <pre class="c++">
+class idref: public ncname
+{
+public:
+ idref (const C* s);
+ idref (const C* s, std::size_t n);
+ idref (std::size_t n, C c);
+ idref (const std::basic_string&lt;C>&amp;);
+ idref (const std::basic_string&lt;C>&amp;,
+ std::size_t pos,
+ std::size_t n = npos);
+
+public:
+ idref (const idref&amp;);
+
+public:
+ virtual idref*
+ _clone () const;
+
+public:
+ idref&amp;
+ operator= (C c);
+
+ idref&amp;
+ operator= (const C* s);
+
+ idref&amp;
+ operator= (const std::basic_string&lt;C>&amp;)
+
+ idref&amp;
+ operator= (const idref&amp;);
+
+public:
+ const type*
+ operator-> () const;
+
+ type*
+ operator-> ();
+
+ const type&amp;
+ operator* () const;
+
+ type&amp;
+ operator* ();
+
+ const type*
+ get () const;
+
+ type*
+ get ();
+
+ // Conversion to bool.
+ //
+public:
+ typedef void (idref::*bool_convertible)();
+ operator bool_convertible () const;
+};
+ </pre>
+
+ <p>The object, <code>idref</code> instance refers to, is the immediate
+ container of the matching <code>id</code> instance. For example,
+ with the following instance document and schema:
+ </p>
+
+
+ <pre class="xml">
+&lt;!-- test.xml -->
+&lt;root>
+ &lt;object id="obj-1" text="hello"/>
+ &lt;reference>obj-1&lt;/reference>
+&lt;/root>
+
+&lt;!-- test.xsd -->
+&lt;schema>
+ &lt;complexType name="object_type">
+ &lt;attribute name="id" type="ID"/>
+ &lt;attribute name="text" type="string"/>
+ &lt;/complexType>
+
+ &lt;complexType name="root_type">
+ &lt;sequence>
+ &lt;element name="object" type="object_type"/>
+ &lt;element name="reference" type="IDREF"/>
+ &lt;/sequence>
+ &lt;/complexType>
+
+ &lt;element name="root" type="root_type"/>
+&lt;/schema>
+ </pre>
+
+ <p>The <code>ref</code> instance in the code below will refer to
+ an object of type <code>object_type</code>:</p>
+
+ <pre class="c++">
+root_type&amp; root = ...;
+xml_schema::idref&amp; ref (root.reference ());
+object_type&amp; obj (dynamic_cast&lt;object_type&amp;> (*ref));
+cout &lt;&lt; obj.text () &lt;&lt; endl;
+ </pre>
+
+ <p>The smart pointer interface of the <code>idref</code> class always
+ returns a pointer or reference to <code>xml_schema::type</code>.
+ This means that you will need to manually cast such pointer or
+ reference to its real (dynamic) type before you can use it (unless
+ all you need is the base interface provided by
+ <code>xml_schema::type</code>). As a special extension to the XML
+ Schema language, the mapping supports static typing of <code>idref</code>
+ references by employing the <code>refType</code> extension attribute.
+ The following example illustrates this mechanism:
+ </p>
+
+ <pre class="xml">
+&lt;!-- test.xsd -->
+&lt;schema
+ xmlns:xse="https://www.codesynthesis.com/xmlns/xml-schema-extension">
+
+ ...
+
+ &lt;element name="reference" type="IDREF" xse:refType="object_type"/>
+
+ ...
+
+&lt;/schema>
+ </pre>
+
+ <p>With this modification we do not need to do manual casting anymore:
+ </p>
+
+ <pre class="c++">
+root_type&amp; root = ...;
+root_type::reference_type&amp; ref (root.reference ());
+object_type&amp; obj (*ref);
+cout &lt;&lt; ref->text () &lt;&lt; endl;
+ </pre>
+
+
+ <h3><a name="2.5.6">2.5.6 Mapping for <code>base64Binary</code> and
+ <code>hexBinary</code></a></h3>
+
+ <p>The XML Schema <code>base64Binary</code> and <code>hexBinary</code>
+ built-in data types are mapped to the
+ <code>xml_schema::base64_binary</code> and
+ <code>xml_schema::hex_binary</code> C++ classes, respectively. The
+ <code>base64_binary</code> and <code>hex_binary</code> classes
+ support a simple buffer abstraction by inheriting from the
+ <code>xml_schema::buffer</code> class:
+ </p>
+
+ <pre class="c++">
+class bounds: public virtual exception
+{
+public:
+ virtual const char*
+ what () const throw ();
+};
+
+class buffer
+{
+public:
+ typedef std::size_t size_t;
+
+public:
+ buffer (size_t size = 0);
+ buffer (size_t size, size_t capacity);
+ buffer (const void* data, size_t size);
+ buffer (const void* data, size_t size, size_t capacity);
+ buffer (void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership);
+
+public:
+ buffer (const buffer&amp;);
+
+ buffer&amp;
+ operator= (const buffer&amp;);
+
+ void
+ swap (buffer&amp;);
+
+public:
+ size_t
+ capacity () const;
+
+ bool
+ capacity (size_t);
+
+public:
+ size_t
+ size () const;
+
+ bool
+ size (size_t);
+
+public:
+ const char*
+ data () const;
+
+ char*
+ data ();
+
+ const char*
+ begin () const;
+
+ char*
+ begin ();
+
+ const char*
+ end () const;
+
+ char*
+ end ();
+};
+ </pre>
+
+ <p>The last overloaded constructor reuses an existing data buffer instead
+ of making a copy. If the <code>assume_ownership</code> argument is
+ <code>true</code>, the instance assumes ownership of the
+ memory block pointed to by the <code>data</code> argument and will
+ eventually release it by calling <code>operator delete</code>. The
+ <code>capacity</code> and <code>size</code> modifier functions return
+ <code>true</code> if the underlying buffer has moved.
+ </p>
+
+ <p>The <code>bounds</code> exception is thrown if the constructor
+ arguments violate the <code>(size&nbsp;&lt;=&nbsp;capacity)</code>
+ constraint.</p>
+
+ <p>The <code>base64_binary</code> and <code>hex_binary</code> classes
+ support the <code>buffer</code> interface and perform automatic
+ decoding/encoding from/to the Base64 and Hex formats, respectively:
+ </p>
+
+ <pre class="c++">
+class base64_binary: public simple_type, public buffer
+{
+public:
+ base64_binary (size_t size = 0);
+ base64_binary (size_t size, size_t capacity);
+ base64_binary (const void* data, size_t size);
+ base64_binary (const void* data, size_t size, size_t capacity);
+ base64_binary (void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership);
+
+public:
+ base64_binary (const base64_binary&amp;);
+
+ base64_binary&amp;
+ operator= (const base64_binary&amp;);
+
+ virtual base64_binary*
+ _clone () const;
+
+public:
+ std::basic_string&lt;C>
+ encode () const;
+};
+ </pre>
+
+ <pre class="c++">
+class hex_binary: public simple_type, public buffer
+{
+public:
+ hex_binary (size_t size = 0);
+ hex_binary (size_t size, size_t capacity);
+ hex_binary (const void* data, size_t size);
+ hex_binary (const void* data, size_t size, size_t capacity);
+ hex_binary (void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership);
+
+public:
+ hex_binary (const hex_binary&amp;);
+
+ hex_binary&amp;
+ operator= (const hex_binary&amp;);
+
+ virtual hex_binary*
+ _clone () const;
+
+public:
+ std::basic_string&lt;C>
+ encode () const;
+};
+ </pre>
+
+
+ <h2><a name="2.5.7">2.5.7 Time Zone Representation</a></h2>
+
+ <p>The <code>date</code>, <code>dateTime</code>, <code>gDay</code>,
+ <code>gMonth</code>, <code>gMonthDay</code>, <code>gYear</code>,
+ <code>gYearMonth</code>, and <code>time</code> XML Schema built-in
+ types all include an optional time zone component. The following
+ <code>xml_schema::time_zone</code> base class is used to represent
+ this information:</p>
+
+ <pre class="c++">
+class time_zone
+{
+public:
+ time_zone ();
+ time_zone (short hours, short minutes);
+
+ bool
+ zone_present () const;
+
+ void
+ zone_reset ();
+
+ short
+ zone_hours () const;
+
+ void
+ zone_hours (short);
+
+ short
+ zone_minutes () const;
+
+ void
+ zone_minutes (short);
+};
+
+bool
+operator== (const time_zone&amp;, const time_zone&amp;);
+
+bool
+operator!= (const time_zone&amp;, const time_zone&amp;);
+ </pre>
+
+ <p>The <code>zone_present()</code> accessor function returns <code>true</code>
+ if the time zone is specified. The <code>zone_reset()</code> modifier
+ function resets the time zone object to the <em>not specified</em>
+ state. If the time zone offset is negative then both hours and
+ minutes components are represented as negative integers.</p>
+
+
+ <h2><a name="2.5.8">2.5.8 Mapping for <code>date</code></a></h2>
+
+ <p>The XML Schema <code>date</code> built-in data type is mapped to the
+ <code>xml_schema::date</code> C++ class which represents a year, a day,
+ and a month with an optional time zone. Its interface is presented
+ below. For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+class date: public simple_type, public time_zone
+{
+public:
+ date (int year, unsigned short month, unsigned short day);
+ date (int year, unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes);
+
+public:
+ date (const date&amp;);
+
+ date&amp;
+ operator= (const date&amp;);
+
+ virtual date*
+ _clone () const;
+
+public:
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+};
+
+bool
+operator== (const date&amp;, const date&amp;);
+
+bool
+operator!= (const date&amp;, const date&amp;);
+ </pre>
+
+ <h2><a name="2.5.9">2.5.9 Mapping for <code>dateTime</code></a></h2>
+
+ <p>The XML Schema <code>dateTime</code> built-in data type is mapped to the
+ <code>xml_schema::date_time</code> C++ class which represents a year, a month,
+ a day, hours, minutes, and seconds with an optional time zone. Its interface
+ is presented below. For more information on the base
+ <code>xml_schema::time_zone</code> class refer to <a href="#2.5.7">Section
+ 2.5.7, "Time Zone Representation"</a>.</p>
+
+ <pre class="c++">
+class date_time: public simple_type, public time_zone
+{
+public:
+ date_time (int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds);
+
+ date_time (int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds, short zone_hours, short zone_minutes);
+public:
+ date_time (const date_time&amp;);
+
+ date_time&amp;
+ operator= (const date_time&amp;);
+
+ virtual date_time*
+ _clone () const;
+
+public:
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+
+ unsigned short
+ hours () const;
+
+ void
+ hours (unsigned short);
+
+ unsigned short
+ minutes () const;
+
+ void
+ minutes (unsigned short);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+};
+
+bool
+operator== (const date_time&amp;, const date_time&amp;);
+
+bool
+operator!= (const date_time&amp;, const date_time&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.10">2.5.10 Mapping for <code>duration</code></a></h2>
+
+ <p>The XML Schema <code>duration</code> built-in data type is mapped to the
+ <code>xml_schema::duration</code> C++ class which represents a potentially
+ negative duration in the form of years, months, days, hours, minutes,
+ and seconds. Its interface is presented below.</p>
+
+ <pre class="c++">
+class duration: public simple_type
+{
+public:
+ duration (bool negative,
+ unsigned int years, unsigned int months, unsigned int days,
+ unsigned int hours, unsigned int minutes, double seconds);
+public:
+ duration (const duration&amp;);
+
+ duration&amp;
+ operator= (const duration&amp;);
+
+ virtual duration*
+ _clone () const;
+
+public:
+ bool
+ negative () const;
+
+ void
+ negative (bool);
+
+ unsigned int
+ years () const;
+
+ void
+ years (unsigned int);
+
+ unsigned int
+ months () const;
+
+ void
+ months (unsigned int);
+
+ unsigned int
+ days () const;
+
+ void
+ days (unsigned int);
+
+ unsigned int
+ hours () const;
+
+ void
+ hours (unsigned int);
+
+ unsigned int
+ minutes () const;
+
+ void
+ minutes (unsigned int);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+};
+
+bool
+operator== (const duration&amp;, const duration&amp;);
+
+bool
+operator!= (const duration&amp;, const duration&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.11">2.5.11 Mapping for <code>gDay</code></a></h2>
+
+ <p>The XML Schema <code>gDay</code> built-in data type is mapped to the
+ <code>xml_schema::gday</code> C++ class which represents a day of the
+ month with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+class gday: public simple_type, public time_zone
+{
+public:
+ explicit
+ gday (unsigned short day);
+ gday (unsigned short day, short zone_hours, short zone_minutes);
+
+public:
+ gday (const gday&amp;);
+
+ gday&amp;
+ operator= (const gday&amp;);
+
+ virtual gday*
+ _clone () const;
+
+public:
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+};
+
+bool
+operator== (const gday&amp;, const gday&amp;);
+
+bool
+operator!= (const gday&amp;, const gday&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.12">2.5.12 Mapping for <code>gMonth</code></a></h2>
+
+ <p>The XML Schema <code>gMonth</code> built-in data type is mapped to the
+ <code>xml_schema::gmonth</code> C++ class which represents a month of the
+ year with an optional time zone. Its interface is presented below.
+ For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+class gmonth: public simple_type, public time_zone
+{
+public:
+ explicit
+ gmonth (unsigned short month);
+ gmonth (unsigned short month,
+ short zone_hours, short zone_minutes);
+
+public:
+ gmonth (const gmonth&amp;);
+
+ gmonth&amp;
+ operator= (const gmonth&amp;);
+
+ virtual gmonth*
+ _clone () const;
+
+public:
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+};
+
+bool
+operator== (const gmonth&amp;, const gmonth&amp;);
+
+bool
+operator!= (const gmonth&amp;, const gmonth&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.13">2.5.13 Mapping for <code>gMonthDay</code></a></h2>
+
+ <p>The XML Schema <code>gMonthDay</code> built-in data type is mapped to the
+ <code>xml_schema::gmonth_day</code> C++ class which represents a day and
+ a month of the year with an optional time zone. Its interface is presented
+ below. For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+class gmonth_day: public simple_type, public time_zone
+{
+public:
+ gmonth_day (unsigned short month, unsigned short day);
+ gmonth_day (unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes);
+
+public:
+ gmonth_day (const gmonth_day&amp;);
+
+ gmonth_day&amp;
+ operator= (const gmonth_day&amp;);
+
+ virtual gmonth_day*
+ _clone () const;
+
+public:
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+
+ unsigned short
+ day () const;
+
+ void
+ day (unsigned short);
+};
+
+bool
+operator== (const gmonth_day&amp;, const gmonth_day&amp;);
+
+bool
+operator!= (const gmonth_day&amp;, const gmonth_day&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.14">2.5.14 Mapping for <code>gYear</code></a></h2>
+
+ <p>The XML Schema <code>gYear</code> built-in data type is mapped to the
+ <code>xml_schema::gyear</code> C++ class which represents a year with
+ an optional time zone. Its interface is presented below. For more
+ information on the base <code>xml_schema::time_zone</code> class refer
+ to <a href="#2.5.7">Section 2.5.7, "Time Zone Representation"</a>.</p>
+
+ <pre class="c++">
+class gyear: public simple_type, public time_zone
+{
+public:
+ explicit
+ gyear (int year);
+ gyear (int year, short zone_hours, short zone_minutes);
+
+public:
+ gyear (const gyear&amp;);
+
+ gyear&amp;
+ operator= (const gyear&amp;);
+
+ virtual gyear*
+ _clone () const;
+
+public:
+ int
+ year () const;
+
+ void
+ year (int);
+};
+
+bool
+operator== (const gyear&amp;, const gyear&amp;);
+
+bool
+operator!= (const gyear&amp;, const gyear&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.15">2.5.15 Mapping for <code>gYearMonth</code></a></h2>
+
+ <p>The XML Schema <code>gYearMonth</code> built-in data type is mapped to
+ the <code>xml_schema::gyear_month</code> C++ class which represents
+ a year and a month with an optional time zone. Its interface is presented
+ below. For more information on the base <code>xml_schema::time_zone</code>
+ class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
+ Representation"</a>.</p>
+
+ <pre class="c++">
+class gyear_month: public simple_type, public time_zone
+{
+public:
+ gyear_month (int year, unsigned short month);
+ gyear_month (int year, unsigned short month,
+ short zone_hours, short zone_minutes);
+public:
+ gyear_month (const gyear_month&amp;);
+
+ gyear_month&amp;
+ operator= (const gyear_month&amp;);
+
+ virtual gyear_month*
+ _clone () const;
+
+public:
+ int
+ year () const;
+
+ void
+ year (int);
+
+ unsigned short
+ month () const;
+
+ void
+ month (unsigned short);
+};
+
+bool
+operator== (const gyear_month&amp;, const gyear_month&amp;);
+
+bool
+operator!= (const gyear_month&amp;, const gyear_month&amp;);
+ </pre>
+
+
+ <h2><a name="2.5.16">2.5.16 Mapping for <code>time</code></a></h2>
+
+ <p>The XML Schema <code>time</code> built-in data type is mapped to
+ the <code>xml_schema::time</code> C++ class which represents hours,
+ minutes, and seconds with an optional time zone. Its interface is
+ presented below. For more information on the base
+ <code>xml_schema::time_zone</code> class refer to
+ <a href="#2.5.7">Section 2.5.7, "Time Zone Representation"</a>.</p>
+
+ <pre class="c++">
+class time: public simple_type, public time_zone
+{
+public:
+ time (unsigned short hours, unsigned short minutes, double seconds);
+ time (unsigned short hours, unsigned short minutes, double seconds,
+ short zone_hours, short zone_minutes);
+
+public:
+ time (const time&amp;);
+
+ time&amp;
+ operator= (const time&amp;);
+
+ virtual time*
+ _clone () const;
+
+public:
+ unsigned short
+ hours () const;
+
+ void
+ hours (unsigned short);
+
+ unsigned short
+ minutes () const;
+
+ void
+ minutes (unsigned short);
+
+ double
+ seconds () const;
+
+ void
+ seconds (double);
+};
+
+bool
+operator== (const time&amp;, const time&amp;);
+
+bool
+operator!= (const time&amp;, const time&amp;);
+ </pre>
+
+
+ <!-- Mapping for Simple Types -->
+
+ <h2><a name="2.6">2.6 Mapping for Simple Types</a></h2>
+
+ <p>An XML Schema simple type is mapped to a C++ class with the same
+ name as the simple type. The class defines a public copy constructor,
+ a public copy assignment operator, and a public virtual
+ <code>_clone</code> function. The <code>_clone</code> function is
+ declared <code>const</code>, does not take any arguments, and returns
+ a pointer to a complete copy of the instance allocated in the free
+ store. The <code>_clone</code> function shall be used to make copies
+ when static type and dynamic type of the instance may differ (see
+ <a href="#2.11">Section 2.11, "Mapping for <code>xsi:type</code>
+ and Substitution Groups"</a>). For instance:</p>
+
+ <pre class="xml">
+&lt;simpleType name="object">
+ ...
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: ...
+{
+public:
+ object (const object&amp;);
+
+public:
+ object&amp;
+ operator= (const object&amp;);
+
+public:
+ virtual object*
+ _clone () const;
+
+ ...
+
+};
+ </pre>
+
+ <p>The base class specification and the rest of the class definition
+ depend on the type of derivation used to define the simple type. </p>
+
+
+ <h3><a name="2.6.1">2.6.1 Mapping for Derivation by Restriction</a></h3>
+
+ <p>XML Schema derivation by restriction is mapped to C++ public
+ inheritance. The base type of the restriction becomes the base
+ type for the resulting C++ class. In addition to the members described
+ in <a href="#2.6">Section 2.6, "Mapping for Simple Types"</a>, the
+ resulting C++ class defines a public constructor with the base type
+ as its single argument. For instance:</p>
+
+ <pre class="xml">
+&lt;simpleType name="object">
+ &lt;restriction base="base">
+ ...
+ &lt;/restriction>
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public base
+{
+public:
+ object (const base&amp;);
+ object (const object&amp;);
+
+public:
+ object&amp;
+ operator= (const object&amp;);
+
+public:
+ virtual object*
+ _clone () const;
+};
+ </pre>
+
+
+ <h3><a name="2.6.2">2.6.2 Mapping for Enumerations</a></h3>
+
+<p>XML Schema restriction by enumeration is mapped to a C++ class
+ with semantics similar to C++ <code>enum</code>. Each XML Schema
+ enumeration element is mapped to a C++ enumerator with the
+ name derived from the <code>value</code> attribute and defined
+ in the class scope. In addition to the members
+ described in <a href="#2.6">Section 2.6, "Mapping for Simple Types"</a>,
+ the resulting C++ class defines a public constructor that can be called
+ with one of the enumerators as its single argument, a public constructor
+ that can be called with enumeration's base value as its single
+ argument, a public assignment operator that can be used to assign the
+ value of one of the enumerators, and a public implicit conversion
+ operator to the underlying C++ enum type.</p>
+
+<p>Furthermore, for string-based enumeration types, the resulting C++
+ class defines a public constructor with a single argument of type
+ <code>const C*</code> and a public constructor with a single
+ argument of type <code>const std::basic_string&lt;C>&amp;</code>.
+ For instance:</p>
+
+ <pre class="xml">
+&lt;simpleType name="color">
+ &lt;restriction base="string">
+ &lt;enumeration value="red"/>
+ &lt;enumeration value="green"/>
+ &lt;enumeration value="blue"/>
+ &lt;/restriction>
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class color: public xml_schema::string
+{
+public:
+ enum value
+ {
+ red,
+ green,
+ blue
+ };
+
+public:
+ color (value);
+ color (const C*);
+ color (const std::basic_string&lt;C>&amp;);
+ color (const xml_schema::string&amp;);
+ color (const color&amp;);
+
+public:
+ color&amp;
+ operator= (value);
+
+ color&amp;
+ operator= (const color&amp;);
+
+public:
+ virtual color*
+ _clone () const;
+
+public:
+ operator value () const;
+};
+ </pre>
+
+ <h3><a name="2.6.3">2.6.3 Mapping for Derivation by List</a></h3>
+
+ <p>XML Schema derivation by list is mapped to C++ public
+ inheritance from <code>xml_schema::simple_type</code>
+ (<a href="#2.5.3">Section 2.5.3, "Mapping for
+ <code>anySimpleType</code>"</a>) and a suitable sequence type.
+ The list item type becomes the element type of the sequence.
+ In addition to the members described in <a href="#2.6">Section 2.6,
+ "Mapping for Simple Types"</a>, the resulting C++ class defines
+ a public default constructor, a public constructor
+ with the first argument of type <code>size_type</code> and
+ the second argument of list item type that creates
+ a list object with the specified number of copies of the specified
+ element value, and a public constructor with the two arguments
+ of an input iterator type that creates a list object from an
+ iterator range. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;simpleType name="int_list">
+ &lt;list itemType="int"/>
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class int_list: public simple_type,
+ public sequence&lt;int>
+{
+public:
+ int_list ();
+ int_list (size_type n, int x);
+
+ template &lt;typename I>
+ int_list (const I&amp; begin, const I&amp; end);
+ int_list (const int_list&amp;);
+
+public:
+ int_list&amp;
+ operator= (const int_list&amp;);
+
+public:
+ virtual int_list*
+ _clone () const;
+};
+ </pre>
+
+ <p>The <code>sequence</code> class template is defined in an
+ implementation-specific namespace. It conforms to the
+ sequence interface as defined by the ISO/ANSI Standard for
+ C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences").
+ Practically, this means that you can treat such a sequence
+ as if it was <code>std::vector</code>. One notable extension
+ to the standard interface that is available only for
+ sequences of non-fundamental C++ types is the addition of
+ the overloaded <code>push_back</code> and <code>insert</code>
+ member functions which instead of the constant reference
+ to the element type accept automatic pointer (<code>std::unique_ptr</code>
+ or <code>std::auto_ptr</code>, depending on the C++ standard
+ selected) to the element type. These functions assume ownership
+ of the pointed to object and reset the passed automatic pointer.
+ </p>
+
+ <h3><a name="2.6.4">2.6.4 Mapping for Derivation by Union</a></h3>
+
+ <p>XML Schema derivation by union is mapped to C++ public
+ inheritance from <code>xml_schema::simple_type</code>
+ (<a href="#2.5.3">Section 2.5.3, "Mapping for
+ <code>anySimpleType</code>"</a>) and <code>std::basic_string&lt;C></code>.
+ In addition to the members described in <a href="#2.6">Section 2.6,
+ "Mapping for Simple Types"</a>, the resulting C++ class defines a
+ public constructor with a single argument of type <code>const C*</code>
+ and a public constructor with a single argument of type
+ <code>const std::basic_string&lt;C>&amp;</code>. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;simpleType name="int_string_union">
+ &lt;xsd:union memberTypes="xsd:int xsd:string"/>
+&lt;/simpleType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class int_string_union: public simple_type,
+ public std::basic_string&lt;C>
+{
+public:
+ int_string_union (const C*);
+ int_string_union (const std::basic_string&lt;C>&amp;);
+ int_string_union (const int_string_union&amp;);
+
+public:
+ int_string_union&amp;
+ operator= (const int_string_union&amp;);
+
+public:
+ virtual int_string_union*
+ _clone () const;
+};
+ </pre>
+
+ <h2><a name="2.7">2.7 Mapping for Complex Types</a></h2>
+
+ <p>An XML Schema complex type is mapped to a C++ class with the same
+ name as the complex type. The class defines a public copy constructor,
+ a public copy assignment operator, and a public virtual
+ <code>_clone</code> function. The <code>_clone</code> function is
+ declared <code>const</code>, does not take any arguments, and returns
+ a pointer to a complete copy of the instance allocated in the free
+ store. The <code>_clone</code> function shall be used to make copies
+ when static type and dynamic type of the instance may differ (see
+ <a href="#2.11">Section 2.11, "Mapping for <code>xsi:type</code>
+ and Substitution Groups"</a>).</p>
+
+ <p>Additionally, the resulting C++ class
+ defines two public constructors that take an initializer for each
+ member of the complex type and all its base types that belongs to
+ the One cardinality class (see <a href="#2.8">Section 2.8, "Mapping
+ for Local Elements and Attributes"</a>). In the first constructor,
+ the arguments are passed as constant references and the newly created
+ instance is initialized with copies of the passed objects. In the
+ second constructor, arguments that are complex types (that is,
+ they themselves contain elements or attributes) are passed as
+ either <code>std::unique_ptr</code> (C++11) or <code>std::auto_ptr</code>
+ (C++98), depending on the C++ standard selected. In this case the newly
+ created instance is directly initialized with and assumes ownership
+ of the pointed to objects and the <code>std::[unique|auto]_ptr</code>
+ arguments are reset to <code>0</code>. For instance:</p>
+
+ <pre class="xml">
+&lt;complexType name="complex">
+ &lt;sequence>
+ &lt;element name="a" type="int"/>
+ &lt;element name="b" type="string"/>
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="s-one" type="boolean"/>
+ &lt;element name="c-one" type="complex"/>
+ &lt;element name="optional" type="int" minOccurs="0"/>
+ &lt;element name="sequence" type="string" maxOccurs="unbounded"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class complex: public xml_schema::type
+{
+public:
+ object (const int&amp; a, const xml_schema::string&amp; b);
+ object (const complex&amp;);
+
+public:
+ object&amp;
+ operator= (const complex&amp;);
+
+public:
+ virtual complex*
+ _clone () const;
+
+ ...
+
+};
+
+class object: public xml_schema::type
+{
+public:
+ object (const bool&amp; s_one, const complex&amp; c_one);
+ object (const bool&amp; s_one, std::[unique|auto]_ptr&lt;complex> c_one);
+ object (const object&amp;);
+
+public:
+ object&amp;
+ operator= (const object&amp;);
+
+public:
+ virtual object*
+ _clone () const;
+
+ ...
+
+};
+ </pre>
+
+ <p>Notice that the generated <code>complex</code> class does not
+ have the second (<code>std::[unique|auto]_ptr</code>) version of the
+ constructor since all its required members are of simple types.</p>
+
+ <p>If an XML Schema complex type has an ultimate base which is an XML
+ Schema simple type then the resulting C++ class also defines a public
+ constructor that takes an initializer for the base type as well as
+ for each member of the complex type and all its base types that
+ belongs to the One cardinality class. For instance:</p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;simpleContent>
+ &lt;extension base="date">
+ &lt;attribute name="lang" type="language" use="required"/>
+ &lt;/extension>
+ &lt;/simpleContent>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::string
+{
+public:
+ object (const xml_schema::language&amp; lang);
+
+ object (const xml_schema::date&amp; base,
+ const xml_schema::language&amp; lang);
+
+ ...
+
+};
+ </pre>
+
+ <p>Furthermore, for string-based XML Schema complex types, the resulting C++
+ class also defines two public constructors with the first arguments
+ of type <code>const C*</code> and <code>std::basic_string&lt;C>&amp;</code>,
+ respectively, followed by arguments for each member of the complex
+ type and all its base types that belongs to the One cardinality
+ class. For enumeration-based complex types the resulting C++
+ class also defines a public constructor with the first arguments
+ of the underlying enum type followed by arguments for each member
+ of the complex type and all its base types that belongs to the One
+ cardinality class. For instance:</p>
+
+ <pre class="xml">
+&lt;simpleType name="color">
+ &lt;restriction base="string">
+ &lt;enumeration value="red"/>
+ &lt;enumeration value="green"/>
+ &lt;enumeration value="blue"/>
+ &lt;/restriction>
+&lt;/simpleType>
+
+&lt;complexType name="object">
+ &lt;simpleContent>
+ &lt;extension base="color">
+ &lt;attribute name="lang" type="language" use="required"/>
+ &lt;/extension>
+ &lt;/simpleContent>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class color: public xml_schema::string
+{
+public:
+ enum value
+ {
+ red,
+ green,
+ blue
+ };
+
+public:
+ color (value);
+ color (const C*);
+ color (const std::basic_string&lt;C>&amp;);
+
+ ...
+
+};
+
+class object: color
+{
+public:
+ object (const color&amp; base,
+ const xml_schema::language&amp; lang);
+
+ object (const color::value&amp; base,
+ const xml_schema::language&amp; lang);
+
+ object (const C* base,
+ const xml_schema::language&amp; lang);
+
+ object (const std::basic_string&lt;C>&amp; base,
+ const xml_schema::language&amp; lang);
+
+ ...
+
+};
+ </pre>
+
+ <p>Additional constructors can be requested with the
+ <code>--generate-default-ctor</code> and
+ <code>--generate-from-base-ctor</code> options. See the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a> for details.</p>
+
+ <p>If an XML Schema complex type is not explicitly derived from any type,
+ the resulting C++ class is derived from <code>xml_schema::type</code>.
+ In cases where an XML Schema complex type is defined using derivation
+ by extension or restriction, the resulting C++ base class specification
+ depends on the type of derivation and is described in the subsequent
+ sections.
+ </p>
+
+ <p>The mapping for elements and attributes that are defined in a complex
+ type is described in <a href="#2.8">Section 2.8, "Mapping for Local
+ Elements and Attributes"</a>.
+ </p>
+
+ <h3><a name="2.7.1">2.7.1 Mapping for Derivation by Extension</a></h3>
+
+ <p>XML Schema derivation by extension is mapped to C++ public
+ inheritance. The base type of the extension becomes the base
+ type for the resulting C++ class.
+ </p>
+
+ <h3><a name="2.7.2">2.7.2 Mapping for Derivation by Restriction</a></h3>
+
+ <p>XML Schema derivation by restriction is mapped to C++ public
+ inheritance. The base type of the restriction becomes the base
+ type for the resulting C++ class. XML Schema elements and
+ attributes defined within restriction do not result in any
+ definitions in the resulting C++ class. Instead, corresponding
+ (unrestricted) definitions are inherited from the base class.
+ In the future versions of this mapping, such elements and
+ attributes may result in redefinitions of accessors and
+ modifiers to reflect their restricted semantics.
+ </p>
+
+ <!-- 2.8 Mapping for Local Elements and Attributes -->
+
+ <h2><a name="2.8">2.8 Mapping for Local Elements and Attributes</a></h2>
+
+ <p>XML Schema element and attribute definitions are called local
+ if they appear within a complex type definition, an element group
+ definition, or an attribute group definitions.
+ </p>
+
+ <p>Local XML Schema element and attribute definitions have the same
+ C++ mapping. Therefore, in this section, local elements and
+ attributes are collectively called members.
+ </p>
+
+ <p>While there are many different member cardinality combinations
+ (determined by the <code>use</code> attribute for attributes and
+ the <code>minOccurs</code> and <code>maxOccurs</code> attributes
+ for elements), the mapping divides all possible cardinality
+ combinations into three cardinality classes:
+ </p>
+
+ <dl>
+ <dt><i>one</i></dt>
+ <dd>attributes: <code>use == "required"</code></dd>
+ <dd>attributes: <code>use == "optional"</code> and has default or fixed value</dd>
+ <dd>elements: <code>minOccurs == "1"</code> and <code>maxOccurs == "1"</code></dd>
+
+ <dt><i>optional</i></dt>
+ <dd>attributes: <code>use == "optional"</code> and doesn't have default or fixed value</dd>
+ <dd>elements: <code>minOccurs == "0"</code> and <code>maxOccurs == "1"</code></dd>
+
+ <dt><i>sequence</i></dt>
+ <dd>elements: <code>maxOccurs > "1"</code></dd>
+ </dl>
+
+ <p>An optional attribute with a default or fixed value acquires this value
+ if the attribute hasn't been specified in an instance document (see
+ <a href="#A">Appendix A, "Default and Fixed Values"</a>). This
+ mapping places such optional attributes to the One cardinality
+ class.</p>
+
+ <p>A member is mapped to a set of public type definitions
+ (<code>typedef</code>s) and a set of public accessor and modifier
+ functions. Type definitions have names derived from the member's
+ name. The accessor and modifier functions have the same name as the
+ member. For example:
+ </p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="member" type="string"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ typedef xml_schema::string member_type;
+
+ const member_type&amp;
+ member () const;
+
+ ...
+
+};
+ </pre>
+
+ <p>In addition, if a member has a default or fixed value, a static
+ accessor function is generated that returns this value. For
+ example:</p>
+
+<pre class="xml">
+&lt;complexType name="object">
+ &lt;attribute name="data" type="string" default="test"/>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ typedef xml_schema::string data_type;
+
+ const data_type&amp;
+ data () const;
+
+ static const data_type&amp;
+ data_default_value ();
+
+ ...
+
+};
+ </pre>
+
+ <p>Names and semantics of type definitions for the member as well
+ as signatures of the accessor and modifier functions depend on
+ the member's cardinality class and are described in the following
+ sub-sections.
+ </p>
+
+
+ <h3><a name="2.8.1">2.8.1 Mapping for Members with the One Cardinality Class</a></h3>
+
+ <p>For the One cardinality class, the type definitions consist of
+ an alias for the member's type with the name created by appending
+ the <code>_type</code> suffix to the member's name.
+ </p>
+
+ <p>The accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to the
+ member and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the member and can
+ be used for read-write access.
+ </p>
+
+ <p>The first modifier function expects an argument of type reference to
+ constant of the member's type. It makes a deep copy of its argument.
+ Except for member's types that are mapped to fundamental C++ types,
+ the second modifier function is provided that expects an argument
+ of type automatic pointer (<code>std::unique_ptr</code> or
+ <code>std::auto_ptr</code>, depending on the C++ standard selected)
+ to the member's type. It assumes ownership of the pointed to object
+ and resets the passed automatic pointer. For instance:</p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="member" type="string"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef xml_schema::string member_type;
+
+ // Accessors.
+ //
+ const member_type&amp;
+ member () const;
+
+ member_type&amp;
+ member ();
+
+ // Modifiers.
+ //
+ void
+ member (const member_type&amp;);
+
+ void
+ member (std::[unique|auto]_ptr&lt;member_type>);
+ ...
+
+};
+ </pre>
+
+ <p>In addition, if requested by specifying the <code>--generate-detach</code>
+ option and only for members of non-fundamental C++ types, the mapping
+ provides a detach function that returns an automatic pointer to the
+ member's type, for example:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ ...
+
+ std::[unique|auto]_ptr&lt;member_type>
+ detach_member ();
+ ...
+
+};
+ </pre>
+
+ <p>This function detaches the value from the tree leaving the member
+ value uninitialized. Accessing such an uninitialized value prior to
+ re-initializing it results in undefined behavior.</p>
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o)
+{
+ using xml_schema::string;
+
+ string s (o.member ()); // get
+ object::member_type&amp; sr (o.member ()); // get
+
+ o.member ("hello"); // set, deep copy
+ o.member () = "hello"; // set, deep copy
+
+ // C++11 version.
+ //
+ std::unique_ptr&lt;string> p (new string ("hello"));
+ o.member (std::move (p)); // set, assumes ownership
+ p = o.detach_member (); // detach, member is uninitialized
+ o.member (std::move (p)); // re-attach
+
+ // C++98 version.
+ //
+ std::auto_ptr&lt;string> p (new string ("hello"));
+ o.member (p); // set, assumes ownership
+ p = o.detach_member (); // detach, member is uninitialized
+ o.member (p); // re-attach
+}
+ </pre>
+
+
+<h3><a name="2.8.2">2.8.2 Mapping for Members with the Optional Cardinality Class</a></h3>
+
+ <p>For the Optional cardinality class, the type definitions consist of
+ an alias for the member's type with the name created by appending
+ the <code>_type</code> suffix to the member's name and an alias for
+ the container type with the name created by appending the
+ <code>_optional</code> suffix to the member's name.
+ </p>
+
+ <p>Unlike accessor functions for the One cardinality class, accessor
+ functions for the Optional cardinality class return references to
+ corresponding containers rather than directly to members. The
+ accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to
+ the container and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the container
+ and can be used for read-write access.
+ </p>
+
+ <p>The modifier functions are overloaded for the member's
+ type and the container type. The first modifier function
+ expects an argument of type reference to constant of the
+ member's type. It makes a deep copy of its argument.
+ Except for member's types that are mapped to fundamental C++ types,
+ the second modifier function is provided that expects an argument
+ of type automatic pointer (<code>std::unique_ptr</code> or
+ <code>std::auto_ptr</code>, depending on the C++ standard selected)
+ to the member's type. It assumes ownership of the pointed to object
+ and resets the passed automatic pointer. The last modifier function
+ expects an argument of type reference to constant of the container
+ type. It makes a deep copy of its argument. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="member" type="string" minOccurs="0"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef xml_schema::string member_type;
+ typedef optional&lt;member_type> member_optional;
+
+ // Accessors.
+ //
+ const member_optional&amp;
+ member () const;
+
+ member_optional&amp;
+ member ();
+
+ // Modifiers.
+ //
+ void
+ member (const member_type&amp;);
+
+ void
+ member (std::[unique|auto]_ptr&lt;member_type>);
+
+ void
+ member (const member_optional&amp;);
+
+ ...
+
+};
+ </pre>
+
+
+ <p>The <code>optional</code> class template is defined in an
+ implementation-specific namespace and has the following
+ interface. The <code>[unique|auto]_ptr</code>-based constructor
+ and modifier function are only available if the template
+ argument is not a fundamental C++ type.
+ </p>
+
+ <pre class="c++">
+template &lt;typename X>
+class optional
+{
+public:
+ optional ();
+
+ // Makes a deep copy.
+ //
+ explicit
+ optional (const X&amp;);
+
+ // Assumes ownership.
+ //
+ explicit
+ optional (std::[unique|auto]_ptr&lt;X>);
+
+ optional (const optional&amp;);
+
+public:
+ optional&amp;
+ operator= (const X&amp;);
+
+ optional&amp;
+ operator= (const optional&amp;);
+
+ // Pointer-like interface.
+ //
+public:
+ const X*
+ operator-> () const;
+
+ X*
+ operator-> ();
+
+ const X&amp;
+ operator* () const;
+
+ X&amp;
+ operator* ();
+
+ typedef void (optional::*bool_convertible) ();
+ operator bool_convertible () const;
+
+ // Get/set interface.
+ //
+public:
+ bool
+ present () const;
+
+ const X&amp;
+ get () const;
+
+ X&amp;
+ get ();
+
+ // Makes a deep copy.
+ //
+ void
+ set (const X&amp;);
+
+ // Assumes ownership.
+ //
+ void
+ set (std::[unique|auto]_ptr&lt;X>);
+
+ // Detach and return the contained value.
+ //
+ std::[unique|auto]_ptr&lt;X>
+ detach ();
+
+ void
+ reset ();
+};
+
+template &lt;typename X>
+bool
+operator== (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+
+template &lt;typename X>
+bool
+operator!= (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+
+template &lt;typename X>
+bool
+operator&lt; (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+
+template &lt;typename X>
+bool
+operator> (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+
+template &lt;typename X>
+bool
+operator&lt;= (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+
+template &lt;typename X>
+bool
+operator>= (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
+ </pre>
+
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o)
+{
+ using xml_schema::string;
+
+ if (o.member ().present ()) // test
+ {
+ string&amp; s (o.member ().get ()); // get
+ o.member ("hello"); // set, deep copy
+ o.member ().set ("hello"); // set, deep copy
+ o.member ().reset (); // reset
+ }
+
+ // Same as above but using pointer notation:
+ //
+ if (o.member ()) // test
+ {
+ string&amp; s (*o.member ()); // get
+ o.member ("hello"); // set, deep copy
+ *o.member () = "hello"; // set, deep copy
+ o.member ().reset (); // reset
+ }
+
+ // C++11 version.
+ //
+ std::unique_ptr&lt;string> p (new string ("hello"));
+ o.member (std::move (p)); // set, assumes ownership
+
+ p.reset (new string ("hello"));
+ o.member ().set (std::move (p)); // set, assumes ownership
+
+ p = o.member ().detach (); // detach, member is reset
+ o.member ().set (std::move (p)); // re-attach
+
+ // C++98 version.
+ //
+ std::auto_ptr&lt;string> p (new string ("hello"));
+ o.member (p); // set, assumes ownership
+
+ p = new string ("hello");
+ o.member ().set (p); // set, assumes ownership
+
+ p = o.member ().detach (); // detach, member is reset
+ o.member ().set (p); // re-attach
+}
+ </pre>
+
+
+ <h3><a name="2.8.3">2.8.3 Mapping for Members with the Sequence Cardinality Class</a></h3>
+
+ <p>For the Sequence cardinality class, the type definitions consist of an
+ alias for the member's type with the name created by appending
+ the <code>_type</code> suffix to the member's name, an alias of
+ the container type with the name created by appending the
+ <code>_sequence</code> suffix to the member's name, an alias of
+ the iterator type with the name created by appending the
+ <code>_iterator</code> suffix to the member's name, and an alias
+ of the constant iterator type with the name created by appending the
+ <code>_const_iterator</code> suffix to the member's name.
+ </p>
+
+ <p>The accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to the
+ container and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the container and can
+ be used for read-write access.
+ </p>
+
+ <p>The modifier function expects an argument of type reference to
+ constant of the container type. The modifier function
+ makes a deep copy of its argument. For instance:
+ </p>
+
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="member" type="string" minOccurs="unbounded"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef xml_schema::string member_type;
+ typedef sequence&lt;member_type> member_sequence;
+ typedef member_sequence::iterator member_iterator;
+ typedef member_sequence::const_iterator member_const_iterator;
+
+ // Accessors.
+ //
+ const member_sequence&amp;
+ member () const;
+
+ member_sequence&amp;
+ member ();
+
+ // Modifier.
+ //
+ void
+ member (const member_sequence&amp;);
+
+ ...
+
+};
+ </pre>
+
+ <p>The <code>sequence</code> class template is defined in an
+ implementation-specific namespace. It conforms to the
+ sequence interface as defined by the ISO/ANSI Standard for
+ C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences").
+ Practically, this means that you can treat such a sequence
+ as if it was <code>std::vector</code>. Two notable extensions
+ to the standard interface that are available only for
+ sequences of non-fundamental C++ types are the addition of
+ the overloaded <code>push_back</code> and <code>insert</code>
+ as well as the <code>detach_back</code> and <code>detach</code>
+ member functions. The additional <code>push_back</code> and
+ <code>insert</code> functions accept an automatic pointer
+ (<code>std::unique_ptr</code> or <code>std::auto_ptr</code>,
+ depending on the C++ standard selected) to the
+ element type instead of the constant reference. They assume
+ ownership of the pointed to object and reset the passed
+ automatic pointer. The <code>detach_back</code> and
+ <code>detach</code> functions detach the element
+ value from the sequence container and, by default, remove
+ the element from the sequence. These additional functions
+ have the following signatures:</p>
+
+ <pre class="c++">
+template &lt;typename X>
+class sequence
+{
+public:
+ ...
+
+ void
+ push_back (std::[unique|auto]_ptr&lt;X>)
+
+ iterator
+ insert (iterator position, std::[unique|auto]_ptr&lt;X>)
+
+ std::[unique|auto]_ptr&lt;X>
+ detach_back (bool pop = true);
+
+ iterator
+ detach (iterator position,
+ std::[unique|auto]_ptr&lt;X>&amp; result,
+ bool erase = true)
+
+ ...
+}
+ </pre>
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o)
+{
+ using xml_schema::string;
+
+ object::member_sequence&amp; s (o.member ());
+
+ // Iteration.
+ //
+ for (object::member_iterator i (s.begin ()); i != s.end (); ++i)
+ {
+ string&amp; value (*i);
+ }
+
+ // Modification.
+ //
+ s.push_back ("hello"); // deep copy
+
+ // C++11 version.
+ //
+ std::unique_ptr&lt;string> p (new string ("hello"));
+ s.push_back (std::move (p)); // assumes ownership
+ p = s.detach_back (); // detach and pop
+ s.push_back (std::move (p)); // re-append
+
+ // C++98 version.
+ //
+ std::auto_ptr&lt;string> p (new string ("hello"));
+ s.push_back (p); // assumes ownership
+ p = s.detach_back (); // detach and pop
+ s.push_back (p); // re-append
+
+ // Setting a new container.
+ //
+ object::member_sequence n;
+ n.push_back ("one");
+ n.push_back ("two");
+ o.member (n); // deep copy
+}
+ </pre>
+
+ <h3><a name="2.8.4">2.8.4 Element Order</a></h3>
+
+ <p>C++/Tree is a "flattening" mapping in a sense that many levels of
+ nested compositors (<code>choice</code> and <code>sequence</code>),
+ all potentially with their own cardinalities, are in the end mapped
+ to a flat set of elements with one of the three cardinality classes
+ discussed in the previous sections. While this results in a simple
+ and easy to use API for most types, in certain cases, the order of
+ elements in the actual XML documents is not preserved once parsed
+ into the object model. And sometimes such order has
+ application-specific significance. As an example, consider a schema
+ that defines a batch of bank transactions:</p>
+
+ <pre class="xml">
+&lt;complexType name="withdraw">
+ &lt;sequence>
+ &lt;element name="account" type="unsignedInt"/>
+ &lt;element name="amount" type="unsignedInt"/>
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;complexType name="deposit">
+ &lt;sequence>
+ &lt;element name="account" type="unsignedInt"/>
+ &lt;element name="amount" type="unsignedInt"/>
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;complexType name="batch">
+ &lt;choice minOccurs="0" maxOccurs="unbounded">
+ &lt;element name="withdraw" type="withdraw"/>
+ &lt;element name="deposit" type="deposit"/>
+ &lt;/choice>
+&lt;/complexType>
+ </pre>
+
+ <p>The batch can contain any number of transactions in any order
+ but the order of transactions in each actual batch is significant.
+ For instance, consider what could happen if we reorder the
+ transactions and apply all the withdrawals before deposits.</p>
+
+ <p>For the <code>batch</code> schema type defined above the default
+ C++/Tree mapping will produce a C++ class that contains a pair of
+ sequence containers, one for each of the two elements. While this
+ will capture the content (transactions), the order of this content
+ as it appears in XML will be lost. Also, if we try to serialize the
+ batch we just loaded back to XML, all the withdrawal transactions
+ will appear before deposits.</p>
+
+ <p>To overcome this limitation of a flattening mapping, C++/Tree
+ allows us to mark certain XML Schema types, for which content
+ order is important, as ordered.</p>
+
+ <p>There are several command line options that control which
+ schema types are treated as ordered. To make an individual
+ type ordered, we use the <code>--ordered-type</code> option,
+ for example:</p>
+
+ <pre class="term">
+--ordered-type batch
+ </pre>
+
+ <p>To automatically treat all the types that are derived from an ordered
+ type also ordered, we use the <code>--ordered-type-derived</code>
+ option. This is primarily useful if you would like to iterate
+ over the complete hierarchy's content using the content order
+ sequence (discussed below).</p>
+
+ <p>Ordered types are also useful for handling mixed content. To
+ automatically mark all the types with mixed content as ordered
+ we use the <code>--ordered-type-mixed</code> option. For more
+ information on handling mixed content see <a href="#2.13">Section
+ 2.13, "Mapping for Mixed Content Models"</a>.</p>
+
+ <p>Finally, we can mark all the types in the schema we are
+ compiling with the <code>--ordered-type-all</code> option.
+ You should only resort to this option if all the types in
+ your schema truly suffer from the loss of content
+ order since, as we will discuss shortly, ordered types
+ require extra effort to access and, especially, modify.
+ See the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a> for more information on
+ these options.</p>
+
+ <p>Once a type is marked ordered, C++/Tree alters its mapping
+ in several ways. Firstly, for each local element, element
+ wildcard (<a href="#2.12.4">Section 2.12.4, "Element Wildcard
+ Order"</a>), and mixed content text (<a href="#2.13">Section
+ 2.13, "Mapping for Mixed Content Models"</a>) in this type, a
+ content id constant is generated. Secondly, an addition sequence
+ is added to the class that captures the content order. Here
+ is how the mapping of our <code>batch</code> class changes
+ once we make it ordered:</p>
+
+ <pre class="c++">
+class batch: public xml_schema::type
+{
+public:
+ // withdraw
+ //
+ typedef withdraw withdraw_type;
+ typedef sequence&lt;withdraw_type> withdraw_sequence;
+ typedef withdraw_sequence::iterator withdraw_iterator;
+ typedef withdraw_sequence::const_iterator withdraw_const_iterator;
+
+ static const std::size_t withdraw_id = 1;
+
+ const withdraw_sequence&amp;
+ withdraw () const;
+
+ withdraw_sequence&amp;
+ withdraw ();
+
+ void
+ withdraw (const withdraw_sequence&amp;);
+
+ // deposit
+ //
+ typedef deposit deposit_type;
+ typedef sequence&lt;deposit_type> deposit_sequence;
+ typedef deposit_sequence::iterator deposit_iterator;
+ typedef deposit_sequence::const_iterator deposit_const_iterator;
+
+ static const std::size_t deposit_id = 2;
+
+ const deposit_sequence&amp;
+ deposit () const;
+
+ deposit_sequence&amp;
+ deposit ();
+
+ void
+ deposit (const deposit_sequence&amp;);
+
+ // content_order
+ //
+ typedef xml_schema::content_order content_order_type;
+ typedef std::vector&lt;content_order_type> content_order_sequence;
+ typedef content_order_sequence::iterator content_order_iterator;
+ typedef content_order_sequence::const_iterator content_order_const_iterator;
+
+ const content_order_sequence&amp;
+ content_order () const;
+
+ content_order_sequence&amp;
+ content_order ();
+
+ void
+ content_order (const content_order_sequence&amp;);
+
+ ...
+};
+ </pre>
+
+ <p>Notice the <code>withdraw_id</code> and <code>deposit_id</code>
+ content ids as well as the extra <code>content_order</code>
+ sequence that does not correspond to any element in the
+ schema definition. The other changes to the mapping for ordered
+ types has to do with XML parsing and serialization code. During
+ parsing the content order is captured in the <code>content_order</code>
+ sequence while during serialization this sequence is used to
+ determine the order in which content is serialized. The
+ <code>content_order</code> sequence is also copied during
+ copy construction and assigned during copy assignment. It is also
+ taken into account during comparison.</p>
+
+ <p>The entry type of the <code>content_order</code> sequence is the
+ <code>xml_schema::content_order</code> type that has the following
+ interface:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ struct content_order
+ {
+ content_order (std::size_t id, std::size_t index = 0);
+
+ std::size_t id;
+ std::size_t index;
+ };
+
+ bool
+ operator== (const content_order&amp;, const content_order&amp;);
+
+ bool
+ operator!= (const content_order&amp;, const content_order&amp;);
+
+ bool
+ operator&lt; (const content_order&amp;, const content_order&amp;);
+}
+ </pre>
+
+ <p>The <code>content_order</code> sequence describes the order of
+ content (elements, including wildcards, as well as mixed content
+ text). Each entry in this sequence consists of the content id
+ (for example, <code>withdraw_id</code> or <code>deposit_id</code>
+ in our case) as well as, for elements of the sequence cardinality
+ class, an index into the corresponding sequence container (the
+ index is unused for the one and optional cardinality classes).
+ For example, in our case, if the content id is <code>withdraw_id</code>,
+ then the index will point into the <code>withdraw</code> element
+ sequence.</p>
+
+ <p>With all this information we can now examine how to iterate over
+ transaction in the batch in content order:</p>
+
+ <pre class="c++">
+batch&amp; b = ...
+
+for (batch::content_order_const_iterator i (b.content_order ().begin ());
+ i != b.content_order ().end ();
+ ++i)
+{
+ switch (i->id)
+ {
+ case batch::withdraw_id:
+ {
+ const withdraw&amp; t (b.withdraw ()[i->index]);
+ cerr &lt;&lt; t.account () &lt;&lt; " withdraw " &lt;&lt; t.amount () &lt;&lt; endl;
+ break;
+ }
+ case batch::deposit_id:
+ {
+ const deposit&amp; t (b.deposit ()[i->index]);
+ cerr &lt;&lt; t.account () &lt;&lt; " deposit " &lt;&lt; t.amount () &lt;&lt; endl;
+ break;
+ }
+ default:
+ {
+ assert (false); // Unknown content id.
+ }
+ }
+}
+ </pre>
+
+ <p>If we serialized our batch back to XML, we would also see that the
+ order of transactions in the output is exactly the same as in the
+ input rather than all the withdrawals first followed by all the
+ deposits.</p>
+
+ <p>The most complex aspect of working with ordered types is
+ modifications. Now we not only need to change the content,
+ but also remember to update the order information corresponding
+ to this change. As a first example, we add a deposit transaction
+ to the batch:</p>
+
+ <pre class="c++">
+using xml_schema::content_order;
+
+batch::deposit_sequence&amp; d (b.deposit ());
+batch::withdraw_sequence&amp; w (b.withdraw ());
+batch::content_order_sequence&amp; co (b.content_order ());
+
+d.push_back (deposit (123456789, 100000));
+co.push_back (content_order (batch::deposit_id, d.size () - 1));
+ </pre>
+
+ <p>In the above example we first added the content (deposit
+ transaction) and then updated the content order information
+ by adding an entry with <code>deposit_id</code> content
+ id and the index of the just added deposit transaction.</p>
+
+ <p>Removing the last transaction can be easy if we know which
+ transaction (deposit or withdrawal) is last:</p>
+
+ <pre class="c++">
+d.pop_back ();
+co.pop_back ();
+ </pre>
+
+ <p>If, however, we do not know which transaction is last, then
+ things get a bit more complicated:</p>
+
+ <pre class="c++">
+switch (co.back ().id)
+{
+case batch::withdraw_id:
+ {
+ d.pop_back ();
+ break;
+ }
+case batch::deposit_id:
+ {
+ w.pop_back ();
+ break;
+ }
+}
+
+co.pop_back ();
+ </pre>
+
+ <p>The following example shows how to add a transaction at the
+ beginning of the batch:</p>
+
+ <pre class="c++">
+w.push_back (withdraw (123456789, 100000));
+co.insert (co.begin (),
+ content_order (batch::withdraw_id, w.size () - 1));
+ </pre>
+
+ <p>Note also that when we merely modify the content of one
+ of the elements in place, we do not need to update its
+ order since it doesn't change. For example, here is how
+ we can change the amount in the first withdrawal:</p>
+
+ <pre class="c++">
+w[0].amount (10000);
+ </pre>
+
+ <p>For the complete working code shown in this section refer to the
+ <code>order/element</code> example in the
+ <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a>
+ package.</p>
+
+ <p>If both the base and derived types are ordered, then the
+ content order sequence is only added to the base and the content
+ ids are unique within the whole hierarchy. In this case
+ the content order sequence for the derived type contains
+ ordering information for both base and derived content.</p>
+
+ <p>In some applications we may need to perform more complex
+ content processing. For example, in our case, we may need
+ to remove all the withdrawal transactions. The default
+ container, <code>std::vector</code>, is not particularly
+ suitable for such operations. What may be required by
+ some applications is a multi-index container that not
+ only allows us to iterate in content order similar to
+ <code>std::vector</code> but also search by the content
+ id as well as the content id and index pair.</p>
+
+ <p>While C++/Tree does not provide this functionality by
+ default, it allows us to specify a custom container
+ type for content order with the <code>--order-container</code>
+ command line option. The only requirement from the
+ generated code side for such a container is to provide
+ the <code>vector</code>-like <code>push_back()</code>,
+ <code>size()</code>, and const iteration interfaces.</p>
+
+ <p>As an example, here is how we can use the Boost Multi-Index
+ container for content order. First we create the
+ <code>content-order-container.hxx</code> header with the
+ following definition:</p>
+
+ <pre class="c++">
+#ifndef CONTENT_ORDER_CONTAINER
+#define CONTENT_ORDER_CONTAINER
+
+#include &lt;cstddef> // std::size_t
+
+#include &lt;boost/multi_index_container.hpp>
+#include &lt;boost/multi_index/member.hpp>
+#include &lt;boost/multi_index/identity.hpp>
+#include &lt;boost/multi_index/ordered_index.hpp>
+#include &lt;boost/multi_index/random_access_index.hpp>
+
+struct by_id {};
+struct by_id_index {};
+
+template &lt;typename T>
+using content_order_container =
+ boost::multi_index::multi_index_container&lt;
+ T,
+ boost::multi_index::indexed_by&lt;
+ boost::multi_index::random_access&lt;>,
+ boost::multi_index::ordered_unique&lt;
+ boost::multi_index::tag&lt;by_id_index>,
+ boost::multi_index::identity&lt;T>
+ >,
+ boost::multi_index::ordered_non_unique&lt;
+ boost::multi_index::tag&lt;by_id>,
+ boost::multi_index::member&lt;T, std::size_t, &amp;T::id>
+ >
+ >
+ >;
+
+#endif
+ </pre>
+
+ <p>Next we add the following two XSD compiler options to include
+ this header into every generated header file and to use the
+ custom container type (see the XSD compiler command line manual
+ for more information on shell quoting for the first option):</p>
+
+ <pre class="term">
+--hxx-prologue '#include "content-order-container.hxx"'
+--order-container content_order_container
+ </pre>
+
+ <p>With these changes we can now use the multi-index functionality,
+ for example, to search for a specific content id:</p>
+
+ <pre class="c++">
+typedef batch::content_order_sequence::index&lt;by_id>::type id_set;
+typedef id_set::iterator id_iterator;
+
+const id_set&amp; ids (b.content_order ().get&lt;by_id> ());
+
+std::pair&lt;id_iterator, id_iterator> r (
+ ids.equal_range (std::size_t (batch::deposit_id));
+
+for (id_iterator i (r.first); i != r.second; ++i)
+{
+ const deposit&amp; t (b.deposit ()[i->index]);
+ cerr &lt;&lt; t.account () &lt;&lt; " deposit " &lt;&lt; t.amount () &lt;&lt; endl;
+}
+ </pre>
+
+ <h2><a name="2.9">2.9 Mapping for Global Elements</a></h2>
+
+ <p>An XML Schema element definition is called global if it appears
+ directly under the <code>schema</code> element.
+ A global element is a valid root of an instance document. By
+ default, a global element is mapped to a set of overloaded
+ parsing and, optionally, serialization functions with the
+ same name as the element. It is also possible to generate types
+ for root elements instead of parsing and serialization functions.
+ This is primarily useful to distinguish object models with the
+ same root type but with different root elements. See
+ <a href="#2.9.1">Section 2.9.1, "Element Types"</a> for details.
+ It is also possible to request the generation of an element map
+ which allows uniform parsing and serialization of multiple root
+ elements. See <a href="#2.9.2">Section 2.9.2, "Element Map"</a>
+ for details.
+ </p>
+
+ <p>The parsing functions read XML instance documents and return
+ corresponding object models as an automatic pointer
+ (<code>std::unique_ptr</code> or <code>std::auto_ptr</code>,
+ depending on the C++ standard selected). Their signatures
+ have the following pattern (<code>type</code> denotes
+ element's type and <code>name</code> denotes element's
+ name):
+ </p>
+
+ <pre class="c++">
+std::[unique|auto]_ptr&lt;type>
+name (....);
+ </pre>
+
+ <p>The process of parsing, including the exact signatures of the parsing
+ functions, is the subject of <a href="#3">Chapter 3, "Parsing"</a>.
+ </p>
+
+ <p>The serialization functions write object models back to XML instance
+ documents. Their signatures have the following pattern:
+ </p>
+
+ <pre class="c++">
+void
+name (&lt;stream type>&amp;, const type&amp;, ....);
+ </pre>
+
+ <p>The process of serialization, including the exact signatures of the
+ serialization functions, is the subject of <a href="#4">Chapter 4,
+ "Serialization"</a>.
+ </p>
+
+
+ <h3><a name="2.9.1">2.9.1 Element Types</a></h3>
+
+ <p>The generation of element types is requested with the
+ <code>--generate-element-type</code> option. With this option
+ each global element is mapped to a C++ class with the
+ same name as the element. Such a class is derived from
+ <code>xml_schema::element_type</code> and contains the same set
+ of type definitions, constructors, and member function as would a
+ type containing a single element with the One cardinality class
+ named <code>"value"</code>. In addition, the element type also
+ contains a set of member functions for accessing the element
+ name and namespace as well as its value in a uniform manner.
+ For example:</p>
+
+ <pre class="xml">
+&lt;complexType name="type">
+ &lt;sequence>
+ ...
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;element name="root" type="type"/>
+ </pre>
+
+<p>is mapped to:</p>
+
+ <pre class="c++">
+class type
+{
+ ...
+};
+
+class root: public xml_schema::element_type
+{
+public:
+ // Element value.
+ //
+ typedef type value_type;
+
+ const value_type&amp;
+ value () const;
+
+ value_type&amp;
+ value ();
+
+ void
+ value (const value_type&amp;);
+
+ void
+ value (std::[unique|auto]_ptr&lt;value_type>);
+
+ // Constructors.
+ //
+ root (const value_type&amp;);
+
+ root (std::[unique|auto]_ptr&lt;value_type>);
+
+ root (const xercesc::DOMElement&amp;, xml_schema::flags = 0);
+
+ root (const root&amp;, xml_schema::flags = 0);
+
+ virtual root*
+ _clone (xml_schema::flags = 0) const;
+
+ // Element name and namespace.
+ //
+ static const std::string&amp;
+ name ();
+
+ static const std::string&amp;
+ namespace_ ();
+
+ virtual const std::string&amp;
+ _name () const;
+
+ virtual const std::string&amp;
+ _namespace () const;
+
+ // Element value as xml_schema::type.
+ //
+ virtual const xml_schema::type*
+ _value () const;
+
+ virtual xml_schema::type*
+ _value ();
+};
+
+void
+operator&lt;&lt; (xercesc::DOMElement&amp;, const root&amp;);
+ </pre>
+
+ <p>The <code>xml_schema::element_type</code> class is a common
+ base type for all element types and is defined as follows:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class element_type
+ {
+ public:
+ virtual
+ ~element_type ();
+
+ virtual element_type*
+ _clone (flags f = 0) const = 0;
+
+ virtual const std::basic_string&lt;C>&amp;
+ _name () const = 0;
+
+ virtual const std::basic_string&lt;C>&amp;
+ _namespace () const = 0;
+
+ virtual xml_schema::type*
+ _value () = 0;
+
+ virtual const xml_schema::type*
+ _value () const = 0;
+ };
+}
+ </pre>
+
+ <p>The <code>_value()</code> member function returns a pointer to
+ the element value or 0 if the element is of a fundamental C++
+ type and therefore is not derived from <code>xml_schema::type</code>.
+ </p>
+
+ <p>Unlike parsing and serialization functions, element types
+ are only capable of parsing and serializing from/to a
+ <code>DOMElement</code> object. This means that the application
+ will need to perform its own XML-to-DOM parsing and DOM-to-XML
+ serialization. The following section describes a mechanism
+ provided by the mapping to uniformly parse and serialize
+ multiple root elements.</p>
+
+
+ <h3><a name="2.9.2">2.9.2 Element Map</a></h3>
+
+ <p>When element types are generated for root elements it is also
+ possible to request the generation of an element map with the
+ <code>--generate-element-map</code> option. The element map
+ allows uniform parsing and serialization of multiple root
+ elements via the common <code>xml_schema::element_type</code>
+ base type. The <code>xml_schema::element_map</code> class is
+ defined as follows:</p>
+
+ <pre class="c++">
+namespace xml_schema
+{
+ class element_map
+ {
+ public:
+ static std::[unique|auto]_ptr&lt;xml_schema::element_type>
+ parse (const xercesc::DOMElement&amp;, flags = 0);
+
+ static void
+ serialize (xercesc::DOMElement&amp;, const element_type&amp;);
+ };
+}
+ </pre>
+
+ <p>The <code>parse()</code> function creates the corresponding
+ element type object based on the element name and namespace
+ and returns it as an automatic pointer (<code>std::unique_ptr</code>
+ or <code>std::auto_ptr</code>, depending on the C++ standard
+ selected) to <code>xml_schema::element_type</code>.
+ The <code>serialize()</code> function serializes the passed element
+ object to <code>DOMElement</code>. Note that in case of
+ <code>serialize()</code>, the <code>DOMElement</code> object
+ should have the correct name and namespace. If no element type is
+ available for an element, both functions throw the
+ <code>xml_schema::no_element_info</code> exception:</p>
+
+ <pre class="c++">
+struct no_element_info: virtual exception
+{
+ no_element_info (const std::basic_string&lt;C>&amp; element_name,
+ const std::basic_string&lt;C>&amp; element_namespace);
+
+ const std::basic_string&lt;C>&amp;
+ element_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ element_namespace () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The application can discover the actual type of the element
+ object returned by <code>parse()</code> either using
+ <code>dynamic_cast</code> or by comparing element names and
+ namespaces. The following code fragments illustrate how the
+ element map can be used:</p>
+
+ <pre class="c++">
+// Parsing.
+//
+DOMElement&amp; e = ... // Parse XML to DOM.
+
+unique_ptr&lt;xml_schema::element_type> r (
+ xml_schema::element_map::parse (e));
+
+if (root1 r1 = dynamic_cast&lt;root1*> (r.get ()))
+{
+ ...
+}
+else if (r->_name == root2::name () &amp;&amp;
+ r->_namespace () == root2::namespace_ ())
+{
+ root2&amp; r2 (static_cast&lt;root2&amp;> (*r));
+
+ ...
+}
+ </pre>
+
+ <pre class="c++">
+// Serialization.
+//
+xml_schema::element_type&amp; r = ...
+
+string name (r._name ());
+string ns (r._namespace ());
+
+DOMDocument&amp; doc = ... // Create a new DOMDocument with name and ns.
+DOMElement&amp; e (*doc->getDocumentElement ());
+
+xml_schema::element_map::serialize (e, r);
+
+// Serialize DOMDocument to XML.
+ </pre>
+
+ <!-- -->
+
+ <h2><a name="2.10">2.10 Mapping for Global Attributes</a></h2>
+
+ <p>An XML Schema attribute definition is called global if it appears
+ directly under the <code>schema</code> element. A global
+ attribute does not have any mapping.
+ </p>
+
+ <!--
+ When it is referenced from
+ a local attribute definition (using the <code>ref</code> attribute)
+ it is treated as a local attribute (see Section 2.8, "Mapping for
+ Local Elements and Attributes").
+ -->
+
+ <h2><a name="2.11">2.11 Mapping for <code>xsi:type</code> and Substitution
+ Groups</a></h2>
+
+ <p>The mapping provides optional support for the XML Schema polymorphism
+ features (<code>xsi:type</code> and substitution groups) which can
+ be requested with the <code>--generate-polymorphic</code> option.
+ When used, the dynamic type of a member may be different from
+ its static type. Consider the following schema definition and
+ instance document:
+ </p>
+
+ <pre class="xml">
+&lt;!-- test.xsd -->
+&lt;schema>
+ &lt;complexType name="base">
+ &lt;attribute name="text" type="string"/>
+ &lt;/complexType>
+
+ &lt;complexType name="derived">
+ &lt;complexContent>
+ &lt;extension base="base">
+ &lt;attribute name="extra-text" type="string"/>
+ &lt;/extension>
+ &lt;/complexContent>
+ &lt;/complexType>
+
+ &lt;complexType name="root_type">
+ &lt;sequence>
+ &lt;element name="item" type="base" maxOccurs="unbounded"/>
+ &lt;/sequence>
+ &lt;/complexType>
+
+ &lt;element name="root" type="root_type"/>
+&lt;/schema>
+
+&lt;!-- test.xml -->
+&lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ &lt;item text="hello"/>
+ &lt;item text="hello" extra-text="world" xsi:type="derived"/>
+&lt;/root>
+ </pre>
+
+ <p>In the resulting object model, the container for
+ the <code>root::item</code> member will have two elements:
+ the first element's type will be <code>base</code> while
+ the second element's (dynamic) type will be
+ <code>derived</code>. This can be discovered using the
+ <code>dynamic_cast</code> operator as shown in the following
+ example:
+ </p>
+
+ <pre class="c++">
+void
+f (root&amp; r)
+{
+ for (root::item_const_iterator i (r.item ().begin ());
+ i != r.item ().end ()
+ ++i)
+ {
+ if (derived* d = dynamic_cast&lt;derived*> (&amp;(*i)))
+ {
+ // derived
+ }
+ else
+ {
+ // base
+ }
+ }
+}
+ </pre>
+
+ <p>The <code>_clone</code> virtual function should be used instead of
+ copy constructors to make copies of members that might use
+ polymorphism:
+ </p>
+
+ <pre class="c++">
+void
+f (root&amp; r)
+{
+ for (root::item_const_iterator i (r.item ().begin ());
+ i != r.item ().end ()
+ ++i)
+ {
+ std::unique_ptr&lt;base> c (i->_clone ());
+ }
+}
+ </pre>
+
+ <p>The mapping can often automatically determine which types are
+ polymorphic based on the substitution group declarations. However,
+ if your XML vocabulary is not using substitution groups or if
+ substitution groups are defined in a separate schema, then you will
+ need to use the <code>--polymorphic-type</code> option to specify
+ which types are polymorphic. When using this option you only need
+ to specify the root of a polymorphic type hierarchy and the mapping
+ will assume that all the derived types are also polymorphic.
+ Also note that you need to specify this option when compiling every
+ schema file that references the polymorphic type. Consider the following
+ two schemas as an example:</p>
+
+ <pre class="xml">
+&lt;!-- base.xsd -->
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;xs:complexType name="base">
+ &lt;xs:sequence>
+ &lt;xs:element name="b" type="xs:int"/>
+ &lt;/xs:sequence>
+ &lt;/xs:complexType>
+
+ &lt;!-- substitution group root -->
+ &lt;xs:element name="base" type="base"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <pre class="xml">
+&lt;!-- derived.xsd -->
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ &lt;include schemaLocation="base.xsd"/>
+
+ &lt;xs:complexType name="derived">
+ &lt;xs:complexContent>
+ &lt;xs:extension base="base">
+ &lt;xs:sequence>
+ &lt;xs:element name="d" type="xs:string"/>
+ &lt;/xs:sequence>
+ &lt;/xs:extension>
+ &lt;/xs:complexContent>
+ &lt;/xs:complexType>
+
+ &lt;xs:element name="derived" type="derived" substitutionGroup="base"/>
+
+&lt;/xs:schema>
+ </pre>
+
+ <p>In this example we need to specify "<code>--polymorphic-type base</code>"
+ when compiling both schemas because the substitution group is declared
+ in a schema other than the one defining type <code>base</code>.</p>
+
+ <p>You can also indicate that all types should be treated as polymorphic
+ with the <code>--polymorphic-type-all</code>. However, this may result
+ in slower generated code with a greater footprint.</p>
+
+
+ <!-- Mapping for any and anyAttribute -->
+
+
+ <h2><a name="2.12">2.12 Mapping for <code>any</code> and <code>anyAttribute</code></a></h2>
+
+ <p>For the XML Schema <code>any</code> and <code>anyAttribute</code>
+ wildcards an optional mapping can be requested with the
+ <code>--generate-wildcard</code> option. The mapping represents
+ the content matched by wildcards as DOM fragments. Because the
+ DOM API is used to access such content, the Xerces-C++ runtime
+ should be initialized by the application prior to parsing and
+ should remain initialized for the lifetime of objects with
+ the wildcard content. For more information on the Xerces-C++
+ runtime initialization see <a href="#3.1">Section 3.1,
+ "Initializing the Xerces-C++ Runtime"</a>.
+ </p>
+
+ <p>The mapping for <code>any</code> is similar to the mapping for
+ local elements (see <a href="#2.8">Section 2.8, "Mapping for Local
+ Elements and Attributes"</a>) except that the type used in the
+ wildcard mapping is <code>xercesc::DOMElement</code>. As with local
+ elements, the mapping divides all possible cardinality combinations
+ into three cardinality classes: <i>one</i>, <i>optional</i>, and
+ <i>sequence</i>.
+ </p>
+
+ <p>The mapping for <code>anyAttribute</code> represents the attributes
+ matched by this wildcard as a set of <code>xercesc::DOMAttr</code>
+ objects with a key being the attribute's name and namespace.</p>
+
+ <p>Similar to local elements and attributes, the <code>any</code> and
+ <code>anyAttribute</code> wildcards are mapped to a set of public type
+ definitions (typedefs) and a set of public accessor and modifier
+ functions. Type definitions have names derived from <code>"any"</code>
+ for the <code>any</code> wildcard and <code>"any_attribute"</code>
+ for the <code>anyAttribute</code> wildcard. The accessor and modifier
+ functions are named <code>"any"</code> for the <code>any</code> wildcard
+ and <code>"any_attribute"</code> for the <code>anyAttribute</code>
+ wildcard. Subsequent wildcards in the same type have escaped names
+ such as <code>"any1"</code> or <code>"any_attribute1"</code>.
+ </p>
+
+ <p>Because Xerces-C++ DOM nodes always belong to a <code>DOMDocument</code>,
+ each type with a wildcard has an associated <code>DOMDocument</code>
+ object. The reference to this object can be obtained using the accessor
+ function called <code>dom_document</code>. The access to the document
+ object from the application code may be necessary to create or modify
+ the wildcard content. For example:
+ </p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;any namespace="##other"/>
+ &lt;/sequence>
+ &lt;anyAttribute namespace="##other"/>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // any
+ //
+ const xercesc::DOMElement&amp;
+ any () const;
+
+ void
+ any (const xercesc::DOMElement&amp;);
+
+ ...
+
+ // any_attribute
+ //
+ typedef attribute_set any_attribute_set;
+ typedef any_attribute_set::iterator any_attribute_iterator;
+ typedef any_attribute_set::const_iterator any_attribute_const_iterator;
+
+ const any_attribute_set&amp;
+ any_attribute () const;
+
+ any_attribute_set&amp;
+ any_attribute ();
+
+ ...
+
+ // DOMDocument object for wildcard content.
+ //
+ const xercesc::DOMDocument&amp;
+ dom_document () const;
+
+ xercesc::DOMDocument&amp;
+ dom_document ();
+
+ ...
+};
+ </pre>
+
+
+ <p>Names and semantics of type definitions for the wildcards as well
+ as signatures of the accessor and modifier functions depend on the
+ wildcard type as well as the cardinality class for the <code>any</code>
+ wildcard. They are described in the following sub-sections.
+ </p>
+
+
+ <h3><a name="2.12.1">2.12.1 Mapping for <code>any</code> with the One Cardinality Class</a></h3>
+
+ <p>For <code>any</code> with the One cardinality class,
+ there are no type definitions. The accessor functions come in
+ constant and non-constant versions. The constant accessor function
+ returns a constant reference to <code>xercesc::DOMElement</code> and
+ can be used for read-only access. The non-constant version returns
+ an unrestricted reference to <code>xercesc::DOMElement</code> and can
+ be used for read-write access.
+ </p>
+
+ <p>The first modifier function expects an argument of type reference
+ to constant <code>xercesc::DOMElement</code> and makes a deep copy
+ of its argument. The second modifier function expects an argument of
+ type pointer to <code>xercesc::DOMElement</code>. This modifier
+ function assumes ownership of its argument and expects the element
+ object to be created using the DOM document associated with this
+ instance. For example:
+ </p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;any namespace="##other"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Accessors.
+ //
+ const xercesc::DOMElement&amp;
+ any () const;
+
+ xercesc::DOMElement&amp;
+ any ();
+
+ // Modifiers.
+ //
+ void
+ any (const xercesc::DOMElement&amp;);
+
+ void
+ any (xercesc::DOMElement*);
+
+ ...
+
+};
+ </pre>
+
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o, const xercesc::DOMElement&amp; e)
+{
+ using namespace xercesc;
+
+ DOMElement&amp; e1 (o.any ()); // get
+ o.any (e) // set, deep copy
+ DOMDocument&amp; doc (o.dom_document ());
+ o.any (doc.createElement (...)); // set, assumes ownership
+}
+ </pre>
+
+ <h3><a name="2.12.2">2.12.2 Mapping for <code>any</code> with the Optional Cardinality Class</a></h3>
+
+ <p>For <code>any</code> with the Optional cardinality class, the type
+ definitions consist of an alias for the container type with name
+ <code>any_optional</code> (or <code>any1_optional</code>, etc., for
+ subsequent wildcards in the type definition).
+ </p>
+
+ <p>Unlike accessor functions for the One cardinality class, accessor
+ functions for the Optional cardinality class return references to
+ corresponding containers rather than directly to <code>DOMElement</code>.
+ The accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to
+ the container and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the container
+ and can be used for read-write access.
+ </p>
+
+ <p>The modifier functions are overloaded for <code>xercesc::DOMElement</code>
+ and the container type. The first modifier function expects an argument of
+ type reference to constant <code>xercesc::DOMElement</code> and
+ makes a deep copy of its argument. The second modifier function
+ expects an argument of type pointer to <code>xercesc::DOMElement</code>.
+ This modifier function assumes ownership of its argument and expects
+ the element object to be created using the DOM document associated
+ with this instance. The third modifier function expects an argument
+ of type reference to constant of the container type and makes a
+ deep copy of its argument. For instance:
+ </p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;any namespace="##other" minOccurs="0"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef element_optional any_optional;
+
+ // Accessors.
+ //
+ const any_optional&amp;
+ any () const;
+
+ any_optional&amp;
+ any ();
+
+ // Modifiers.
+ //
+ void
+ any (const xercesc::DOMElement&amp;);
+
+ void
+ any (xercesc::DOMElement*);
+
+ void
+ any (const any_optional&amp;);
+
+ ...
+
+};
+ </pre>
+
+
+ <p>The <code>element_optional</code> container is a
+ specialization of the <code>optional</code> class template described
+ in <a href="#2.8.2">Section 2.8.2, "Mapping for Members with the Optional
+ Cardinality Class"</a>. Its interface is presented below:
+ </p>
+
+ <pre class="c++">
+class element_optional
+{
+public:
+ explicit
+ element_optional (xercesc::DOMDocument&amp;);
+
+ // Makes a deep copy.
+ //
+ element_optional (const xercesc::DOMElement&amp;, xercesc::DOMDocument&amp;);
+
+ // Assumes ownership.
+ //
+ element_optional (xercesc::DOMElement*, xercesc::DOMDocument&amp;);
+
+ element_optional (const element_optional&amp;, xercesc::DOMDocument&amp;);
+
+public:
+ element_optional&amp;
+ operator= (const xercesc::DOMElement&amp;);
+
+ element_optional&amp;
+ operator= (const element_optional&amp;);
+
+ // Pointer-like interface.
+ //
+public:
+ const xercesc::DOMElement*
+ operator-> () const;
+
+ xercesc::DOMElement*
+ operator-> ();
+
+ const xercesc::DOMElement&amp;
+ operator* () const;
+
+ xercesc::DOMElement&amp;
+ operator* ();
+
+ typedef void (element_optional::*bool_convertible) ();
+ operator bool_convertible () const;
+
+ // Get/set interface.
+ //
+public:
+ bool
+ present () const;
+
+ const xercesc::DOMElement&amp;
+ get () const;
+
+ xercesc::DOMElement&amp;
+ get ();
+
+ // Makes a deep copy.
+ //
+ void
+ set (const xercesc::DOMElement&amp;);
+
+ // Assumes ownership.
+ //
+ void
+ set (xercesc::DOMElement*);
+
+ void
+ reset ();
+};
+
+bool
+operator== (const element_optional&amp;, const element_optional&amp;);
+
+bool
+operator!= (const element_optional&amp;, const element_optional&amp;);
+ </pre>
+
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o, const xercesc::DOMElement&amp; e)
+{
+ using namespace xercesc;
+
+ DOMDocument&amp; doc (o.dom_document ());
+
+ if (o.any ().present ()) // test
+ {
+ DOMElement&amp; e1 (o.any ().get ()); // get
+ o.any ().set (e); // set, deep copy
+ o.any ().set (doc.createElement (...)); // set, assumes ownership
+ o.any ().reset (); // reset
+ }
+
+ // Same as above but using pointer notation:
+ //
+ if (o.member ()) // test
+ {
+ DOMElement&amp; e1 (*o.any ()); // get
+ o.any (e); // set, deep copy
+ o.any (doc.createElement (...)); // set, assumes ownership
+ o.any ().reset (); // reset
+ }
+}
+ </pre>
+
+
+
+ <h3><a name="2.12.3">2.12.3 Mapping for <code>any</code> with the Sequence Cardinality Class</a></h3>
+
+ <p>For <code>any</code> with the Sequence cardinality class, the type
+ definitions consist of an alias of the container type with name
+ <code>any_sequence</code> (or <code>any1_sequence</code>, etc., for
+ subsequent wildcards in the type definition), an alias of the iterator
+ type with name <code>any_iterator</code> (or <code>any1_iterator</code>,
+ etc., for subsequent wildcards in the type definition), and an alias
+ of the constant iterator type with name <code>any_const_iterator</code>
+ (or <code>any1_const_iterator</code>, etc., for subsequent wildcards
+ in the type definition).
+ </p>
+
+ <p>The accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to the
+ container and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the container and can
+ be used for read-write access.
+ </p>
+
+ <p>The modifier function expects an argument of type reference to
+ constant of the container type. The modifier function makes
+ a deep copy of its argument. For instance:
+ </p>
+
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;any namespace="##other" minOccurs="unbounded"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef element_sequence any_sequence;
+ typedef any_sequence::iterator any_iterator;
+ typedef any_sequence::const_iterator any_const_iterator;
+
+ // Accessors.
+ //
+ const any_sequence&amp;
+ any () const;
+
+ any_sequence&amp;
+ any ();
+
+ // Modifier.
+ //
+ void
+ any (const any_sequence&amp;);
+
+ ...
+
+};
+ </pre>
+
+ <p>The <code>element_sequence</code> container is a
+ specialization of the <code>sequence</code> class template described
+ in <a href="#2.8.3">Section 2.8.3, "Mapping for Members with the
+ Sequence Cardinality Class"</a>. Its interface is similar to
+ the sequence interface as defined by the ISO/ANSI Standard for
+ C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences") and is
+ presented below:
+ </p>
+
+ <pre class="c++">
+class element_sequence
+{
+public:
+ typedef xercesc::DOMElement value_type;
+ typedef xercesc::DOMElement* pointer;
+ typedef const xercesc::DOMElement* const_pointer;
+ typedef xercesc::DOMElement&amp; reference;
+ typedef const xercesc::DOMElement&amp; const_reference;
+
+ typedef &lt;implementation-defined> iterator;
+ typedef &lt;implementation-defined> const_iterator;
+ typedef &lt;implementation-defined> reverse_iterator;
+ typedef &lt;implementation-defined> const_reverse_iterator;
+
+ typedef &lt;implementation-defined> size_type;
+ typedef &lt;implementation-defined> difference_type;
+ typedef &lt;implementation-defined> allocator_type;
+
+public:
+ explicit
+ element_sequence (xercesc::DOMDocument&amp;);
+
+ // DOMElement cannot be default-constructed.
+ //
+ // explicit
+ // element_sequence (size_type n);
+
+ element_sequence (size_type n,
+ const xercesc::DOMElement&amp;,
+ xercesc::DOMDocument&amp;);
+
+ template &lt;typename I>
+ element_sequence (const I&amp; begin,
+ const I&amp; end,
+ xercesc::DOMDocument&amp;);
+
+ element_sequence (const element_sequence&amp;, xercesc::DOMDocument&amp;);
+
+ element_sequence&amp;
+ operator= (const element_sequence&amp;);
+
+public:
+ void
+ assign (size_type n, const xercesc::DOMElement&amp;);
+
+ template &lt;typename I>
+ void
+ assign (const I&amp; begin, const I&amp; end);
+
+public:
+ // This version of resize can only be used to shrink the
+ // sequence because DOMElement cannot be default-constructed.
+ //
+ void
+ resize (size_type);
+
+ void
+ resize (size_type, const xercesc::DOMElement&amp;);
+
+public:
+ size_type
+ size () const;
+
+ size_type
+ max_size () const;
+
+ size_type
+ capacity () const;
+
+ bool
+ empty () const;
+
+ void
+ reserve (size_type);
+
+ void
+ clear ();
+
+public:
+ const_iterator
+ begin () const;
+
+ const_iterator
+ end () const;
+
+ iterator
+ begin ();
+
+ iterator
+ end ();
+
+ const_reverse_iterator
+ rbegin () const;
+
+ const_reverse_iterator
+ rend () const
+
+ reverse_iterator
+ rbegin ();
+
+ reverse_iterator
+ rend ();
+
+public:
+ xercesc::DOMElement&amp;
+ operator[] (size_type);
+
+ const xercesc::DOMElement&amp;
+ operator[] (size_type) const;
+
+ xercesc::DOMElement&amp;
+ at (size_type);
+
+ const xercesc::DOMElement&amp;
+ at (size_type) const;
+
+ xercesc::DOMElement&amp;
+ front ();
+
+ const xercesc::DOMElement&amp;
+ front () const;
+
+ xercesc::DOMElement&amp;
+ back ();
+
+ const xercesc::DOMElement&amp;
+ back () const;
+
+public:
+ // Makes a deep copy.
+ //
+ void
+ push_back (const xercesc::DOMElement&amp;);
+
+ // Assumes ownership.
+ //
+ void
+ push_back (xercesc::DOMElement*);
+
+ void
+ pop_back ();
+
+ // Makes a deep copy.
+ //
+ iterator
+ insert (iterator position, const xercesc::DOMElement&amp;);
+
+ // Assumes ownership.
+ //
+ iterator
+ insert (iterator position, xercesc::DOMElement*);
+
+ void
+ insert (iterator position, size_type n, const xercesc::DOMElement&amp;);
+
+ template &lt;typename I>
+ void
+ insert (iterator position, const I&amp; begin, const I&amp; end);
+
+ iterator
+ erase (iterator position);
+
+ iterator
+ erase (iterator begin, iterator end);
+
+public:
+ // Note that the DOMDocument object of the two sequences being
+ // swapped should be the same.
+ //
+ void
+ swap (sequence&amp; x);
+};
+
+inline bool
+operator== (const element_sequence&amp;, const element_sequence&amp;);
+
+inline bool
+operator!= (const element_sequence&amp;, const element_sequence&amp;);
+ </pre>
+
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o, const xercesc::DOMElement&amp; e)
+{
+ using namespace xercesc;
+
+ object::any_sequence&amp; s (o.any ());
+
+ // Iteration.
+ //
+ for (object::any_iterator i (s.begin ()); i != s.end (); ++i)
+ {
+ DOMElement&amp; e (*i);
+ }
+
+ // Modification.
+ //
+ s.push_back (e); // deep copy
+ DOMDocument&amp; doc (o.dom_document ());
+ s.push_back (doc.createElement (...)); // assumes ownership
+}
+ </pre>
+
+ <h3><a name="2.12.4">2.12.4 Element Wildcard Order</a></h3>
+
+ <p>Similar to elements, element wildcards in ordered types
+ (<a href="#2.8.4">Section 2.8.4, "Element Order"</a>) are assigned
+ content ids and are included in the content order sequence.
+ Continuing with the bank transactions example started in Section
+ 2.8.4, we can extend the batch by allowing custom transactions:</p>
+
+ <pre class="xml">
+&lt;complexType name="batch">
+ &lt;choice minOccurs="0" maxOccurs="unbounded">
+ &lt;element name="withdraw" type="withdraw"/>
+ &lt;element name="deposit" type="deposit"/>
+ &lt;any namespace="##other" processContents="lax"/>
+ &lt;/choice>
+&lt;/complexType>
+ </pre>
+
+ <p>This will lead to the following changes in the generated
+ <code>batch</code> C++ class:</p>
+
+ <pre class="c++">
+class batch: public xml_schema::type
+{
+public:
+ ...
+
+ // any
+ //
+ typedef element_sequence any_sequence;
+ typedef any_sequence::iterator any_iterator;
+ typedef any_sequence::const_iterator any_const_iterator;
+
+ static const std::size_t any_id = 3UL;
+
+ const any_sequence&amp;
+ any () const;
+
+ any_sequence&amp;
+ any ();
+
+ void
+ any (const any_sequence&amp;);
+
+ ...
+};
+ </pre>
+
+ <p>With this change we also need to update the iteration code to handle
+ the new content id:</p>
+
+ <pre class="c++">
+for (batch::content_order_const_iterator i (b.content_order ().begin ());
+ i != b.content_order ().end ();
+ ++i)
+{
+ switch (i->id)
+ {
+ ...
+
+ case batch::any_id:
+ {
+ const DOMElement&amp; e (b.any ()[i->index]);
+ ...
+ break;
+ }
+
+ ...
+ }
+}
+ </pre>
+
+ <p>For the complete working code that shows the use of wildcards in
+ ordered types refer to the <code>order/element</code> example in
+ the <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a>
+ package.</p>
+
+ <h3><a name="2.12.5">2.12.5 Mapping for <code>anyAttribute</code></a></h3>
+
+ <p>For <code>anyAttribute</code> the type definitions consist of an alias
+ of the container type with name <code>any_attribute_set</code>
+ (or <code>any1_attribute_set</code>, etc., for subsequent wildcards
+ in the type definition), an alias of the iterator type with name
+ <code>any_attribute_iterator</code> (or <code>any1_attribute_iterator</code>,
+ etc., for subsequent wildcards in the type definition), and an alias
+ of the constant iterator type with name <code>any_attribute_const_iterator</code>
+ (or <code>any1_attribute_const_iterator</code>, etc., for subsequent
+ wildcards in the type definition).
+ </p>
+
+ <p>The accessor functions come in constant and non-constant versions.
+ The constant accessor function returns a constant reference to the
+ container and can be used for read-only access. The non-constant
+ version returns an unrestricted reference to the container and can
+ be used for read-write access.
+ </p>
+
+ <p>The modifier function expects an argument of type reference to
+ constant of the container type. The modifier function makes
+ a deep copy of its argument. For instance:
+ </p>
+
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ ...
+ &lt;/sequence>
+ &lt;anyAttribute namespace="##other"/>
+&lt;/complexType>
+ </pre>
+
+ <p>is mapped to:</p>
+
+ <pre class="c++">
+class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef attribute_set any_attribute_set;
+ typedef any_attribute_set::iterator any_attribute_iterator;
+ typedef any_attribute_set::const_iterator any_attribute_const_iterator;
+
+ // Accessors.
+ //
+ const any_attribute_set&amp;
+ any_attribute () const;
+
+ any_attribute_set&amp;
+ any_attribute ();
+
+ // Modifier.
+ //
+ void
+ any_attribute (const any_attribute_set&amp;);
+
+ ...
+
+};
+ </pre>
+
+ <p>The <code>attribute_set</code> class is an associative container
+ similar to the <code>std::set</code> class template as defined by
+ the ISO/ANSI Standard for C++ (ISO/IEC 14882:1998, Section 23.3.3,
+ "Class template set") with the key being the attribute's name
+ and namespace. Unlike <code>std::set</code>, <code>attribute_set</code>
+ allows searching using names and namespaces instead of
+ <code>xercesc::DOMAttr</code> objects. It is defined in an
+ implementation-specific namespace and its interface is presented
+ below:
+ </p>
+
+ <pre class="c++">
+class attribute_set
+{
+public:
+ typedef xercesc::DOMAttr key_type;
+ typedef xercesc::DOMAttr value_type;
+ typedef xercesc::DOMAttr* pointer;
+ typedef const xercesc::DOMAttr* const_pointer;
+ typedef xercesc::DOMAttr&amp; reference;
+ typedef const xercesc::DOMAttr&amp; const_reference;
+
+ typedef &lt;implementation-defined> iterator;
+ typedef &lt;implementation-defined> const_iterator;
+ typedef &lt;implementation-defined> reverse_iterator;
+ typedef &lt;implementation-defined> const_reverse_iterator;
+
+ typedef &lt;implementation-defined> size_type;
+ typedef &lt;implementation-defined> difference_type;
+ typedef &lt;implementation-defined> allocator_type;
+
+public:
+ attribute_set (xercesc::DOMDocument&amp;);
+
+ template &lt;typename I>
+ attribute_set (const I&amp; begin, const I&amp; end, xercesc::DOMDocument&amp;);
+
+ attribute_set (const attribute_set&amp;, xercesc::DOMDocument&amp;);
+
+ attribute_set&amp;
+ operator= (const attribute_set&amp;);
+
+public:
+ const_iterator
+ begin () const;
+
+ const_iterator
+ end () const;
+
+ iterator
+ begin ();
+
+ iterator
+ end ();
+
+ const_reverse_iterator
+ rbegin () const;
+
+ const_reverse_iterator
+ rend () const;
+
+ reverse_iterator
+ rbegin ();
+
+ reverse_iterator
+ rend ();
+
+public:
+ size_type
+ size () const;
+
+ size_type
+ max_size () const;
+
+ bool
+ empty () const;
+
+ void
+ clear ();
+
+public:
+ // Makes a deep copy.
+ //
+ std::pair&lt;iterator, bool>
+ insert (const xercesc::DOMAttr&amp;);
+
+ // Assumes ownership.
+ //
+ std::pair&lt;iterator, bool>
+ insert (xercesc::DOMAttr*);
+
+ // Makes a deep copy.
+ //
+ iterator
+ insert (iterator position, const xercesc::DOMAttr&amp;);
+
+ // Assumes ownership.
+ //
+ iterator
+ insert (iterator position, xercesc::DOMAttr*);
+
+ template &lt;typename I>
+ void
+ insert (const I&amp; begin, const I&amp; end);
+
+public:
+ void
+ erase (iterator position);
+
+ size_type
+ erase (const std::basic_string&lt;C>&amp; name);
+
+ size_type
+ erase (const std::basic_string&lt;C>&amp; namespace_,
+ const std::basic_string&lt;C>&amp; name);
+
+ size_type
+ erase (const XMLCh* name);
+
+ size_type
+ erase (const XMLCh* namespace_, const XMLCh* name);
+
+ void
+ erase (iterator begin, iterator end);
+
+public:
+ size_type
+ count (const std::basic_string&lt;C>&amp; name) const;
+
+ size_type
+ count (const std::basic_string&lt;C>&amp; namespace_,
+ const std::basic_string&lt;C>&amp; name) const;
+
+ size_type
+ count (const XMLCh* name) const;
+
+ size_type
+ count (const XMLCh* namespace_, const XMLCh* name) const;
+
+ iterator
+ find (const std::basic_string&lt;C>&amp; name);
+
+ iterator
+ find (const std::basic_string&lt;C>&amp; namespace_,
+ const std::basic_string&lt;C>&amp; name);
+
+ iterator
+ find (const XMLCh* name);
+
+ iterator
+ find (const XMLCh* namespace_, const XMLCh* name);
+
+ const_iterator
+ find (const std::basic_string&lt;C>&amp; name) const;
+
+ const_iterator
+ find (const std::basic_string&lt;C>&amp; namespace_,
+ const std::basic_string&lt;C>&amp; name) const;
+
+ const_iterator
+ find (const XMLCh* name) const;
+
+ const_iterator
+ find (const XMLCh* namespace_, const XMLCh* name) const;
+
+public:
+ // Note that the DOMDocument object of the two sets being
+ // swapped should be the same.
+ //
+ void
+ swap (attribute_set&amp;);
+};
+
+bool
+operator== (const attribute_set&amp;, const attribute_set&amp;);
+
+bool
+operator!= (const attribute_set&amp;, const attribute_set&amp;);
+ </pre>
+
+ <p>The following code shows how one could use this mapping:</p>
+
+ <pre class="c++">
+void
+f (object&amp; o, const xercesc::DOMAttr&amp; a)
+{
+ using namespace xercesc;
+
+ object::any_attribute_set&amp; s (o.any_attribute ());
+
+ // Iteration.
+ //
+ for (object::any_attribute_iterator i (s.begin ()); i != s.end (); ++i)
+ {
+ DOMAttr&amp; a (*i);
+ }
+
+ // Modification.
+ //
+ s.insert (a); // deep copy
+ DOMDocument&amp; doc (o.dom_document ());
+ s.insert (doc.createAttribute (...)); // assumes ownership
+
+ // Searching.
+ //
+ object::any_attribute_iterator i (s.find ("name"));
+ i = s.find ("http://www.w3.org/XML/1998/namespace", "lang");
+}
+ </pre>
+
+ <!-- Mapping for Mixed Content Models -->
+
+ <h2><a name="2.13">2.13 Mapping for Mixed Content Models</a></h2>
+
+ <p>For XML Schema types with mixed content models C++/Tree provides
+ mapping support only if the type is marked as ordered
+ (<a href="#2.8.4">Section 2.8.4, "Element Order"</a>). Use the
+ <code>--ordered-type-mixed</code> XSD compiler option to
+ automatically mark all types with mixed content as ordered.</p>
+
+ <p>For an ordered type with mixed content, C++/Tree adds an extra
+ text content sequence that is used to store the text fragments.
+ This text content sequence is also assigned the content id and
+ its entries are included in the content order sequence, just
+ like elements. As a result, it is possible to capture the order
+ between elements and text fragments.</p>
+
+ <p>As an example, consider the following schema that describes text
+ with embedded links:</p>
+
+ <pre class="xml">
+&lt;complexType name="anchor">
+ &lt;simpleContent>
+ &lt;extension base="string">
+ &lt;attribute name="href" type="anyURI" use="required"/>
+ &lt;/extension>
+ &lt;/simpleContent>
+&lt;/complexType>
+
+&lt;complexType name="text" mixed="true">
+ &lt;sequence>
+ &lt;element name="a" type="anchor" minOccurs="0" maxOccurs="unbounded"/>
+ &lt;/sequence>
+&lt;/complexType>
+ </pre>
+
+ <p>The generated <code>text</code> C++ class will provide the following
+ API (assuming it is marked as ordered):</p>
+
+ <pre class="c++">
+class text: public xml_schema::type
+{
+public:
+ // a
+ //
+ typedef anchor a_type;
+ typedef sequence&lt;a_type> a_sequence;
+ typedef a_sequence::iterator a_iterator;
+ typedef a_sequence::const_iterator a_const_iterator;
+
+ static const std::size_t a_id = 1UL;
+
+ const a_sequence&amp;
+ a () const;
+
+ a_sequence&amp;
+ a ();
+
+ void
+ a (const a_sequence&amp;);
+
+ // text_content
+ //
+ typedef xml_schema::string text_content_type;
+ typedef sequence&lt;text_content_type> text_content_sequence;
+ typedef text_content_sequence::iterator text_content_iterator;
+ typedef text_content_sequence::const_iterator text_content_const_iterator;
+
+ static const std::size_t text_content_id = 2UL;
+
+ const text_content_sequence&amp;
+ text_content () const;
+
+ text_content_sequence&amp;
+ text_content ();
+
+ void
+ text_content (const text_content_sequence&amp;);
+
+ // content_order
+ //
+ typedef xml_schema::content_order content_order_type;
+ typedef std::vector&lt;content_order_type> content_order_sequence;
+ typedef content_order_sequence::iterator content_order_iterator;
+ typedef content_order_sequence::const_iterator content_order_const_iterator;
+
+ const content_order_sequence&amp;
+ content_order () const;
+
+ content_order_sequence&amp;
+ content_order ();
+
+ void
+ content_order (const content_order_sequence&amp;);
+
+ ...
+};
+ </pre>
+
+ <p>Given this interface we can iterate over both link elements
+ and text in content order. The following code fragment converts
+ our format to plain text with references.</p>
+
+ <pre class="c++">
+const text&amp; t = ...
+
+for (text::content_order_const_iterator i (t.content_order ().begin ());
+ i != t.content_order ().end ();
+ ++i)
+{
+ switch (i->id)
+ {
+ case text::a_id:
+ {
+ const anchor&amp; a (t.a ()[i->index]);
+ cerr &lt;&lt; a &lt;&lt; "[" &lt;&lt; a.href () &lt;&lt; "]";
+ break;
+ }
+ case text::text_content_id:
+ {
+ const xml_schema::string&amp; s (t.text_content ()[i->index]);
+ cerr &lt;&lt; s;
+ break;
+ }
+ default:
+ {
+ assert (false); // Unknown content id.
+ }
+ }
+}
+ </pre>
+
+ <p>For the complete working code that shows the use of mixed content
+ in ordered types refer to the <code>order/mixed</code> example in
+ the <code>cxx/tree/</code> directory in the
+ <a href="https://cppget.org/xsd-examples">xsd-examples</a>
+ package.</p>
+
+ <!-- Parsing -->
+
+
+ <h1><a name="3">3 Parsing</a></h1>
+
+ <p>This chapter covers various aspects of parsing XML instance
+ documents in order to obtain corresponding tree-like object
+ model.
+ </p>
+
+ <p>Each global XML Schema element in the form:</p>
+
+ <pre class="xml">
+&lt;element name="name" type="type"/>
+ </pre>
+
+ <p>is mapped to 14 overloaded C++ functions in the form:</p>
+
+ <pre class="c++">
+// Read from a URI or a local file.
+//
+
+std::[unique|auto]_ptr&lt;type>
+name (const std::basic_string&lt;C>&amp; uri,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (const std::basic_string&lt;C>&amp; uri,
+ xml_schema::error_handler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (const std::basic_string&lt;C>&amp; uri,
+ xercesc::DOMErrorHandler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+
+// Read from std::istream.
+//
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ xml_schema::error_handler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ xercesc::DOMErrorHandler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ const std::basic_string&lt;C>&amp; id,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ const std::basic_string&lt;C>&amp; id,
+ xml_schema::error_handler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (std::istream&amp;,
+ const std::basic_string&lt;C>&amp; id,
+ xercesc::DOMErrorHandler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+
+// Read from InputSource.
+//
+
+std::[unique|auto]_ptr&lt;type>
+name (xercesc::InputSource&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (xercesc::InputSource&amp;,
+ xml_schema::error_handler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (xercesc::InputSource&amp;,
+ xercesc::DOMErrorHandler&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+
+// Read from DOM.
+//
+
+std::[unique|auto]_ptr&lt;type>
+name (const xercesc::DOMDocument&amp;,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+
+std::[unique|auto]_ptr&lt;type>
+name (xml_schema::dom::[unique|auto]_ptr&lt;xercesc::DOMDocument>,
+ xml_schema::flags = 0,
+ const xml_schema::properties&amp; = xml_schema::properties ());
+ </pre>
+
+ <p>You can choose between reading an XML instance from a local file,
+ URI, <code>std::istream</code>, <code>xercesc::InputSource</code>,
+ or a pre-parsed DOM instance in the form of
+ <code>xercesc::DOMDocument</code>. All the parsing functions
+ return a dynamically allocated object model as either
+ <code>std::unique_ptr</code> or <code>std::auto_ptr</code>,
+ depending on the C++ standard selected. Each of these parsing
+ functions is discussed in more detail in the following sections.
+ </p>
+
+ <h2><a name="3.1">3.1 Initializing the Xerces-C++ Runtime</a></h2>
+
+ <p>Some parsing functions expect you to initialize the Xerces-C++
+ runtime while others initialize and terminate it as part of their
+ work. The general rule is as follows: if a function has any arguments
+ or return a value that is an instance of a Xerces-C++ type, then
+ this function expects you to initialize the Xerces-C++ runtime.
+ Otherwise, the function initializes and terminates the runtime for
+ you. Note that it is legal to have nested calls to the Xerces-C++
+ initialize and terminate functions as long as the calls are balanced.
+ </p>
+
+ <p>You can instruct parsing functions that initialize and terminate
+ the runtime not to do so by passing the
+ <code>xml_schema::flags::dont_initialize</code> flag (see
+ <a href="#3.2">Section 3.2, "Flags and Properties"</a>).
+ </p>
+
+
+ <h2><a name="3.2">3.2 Flags and Properties</a></h2>
+
+ <p>Parsing flags and properties are the last two arguments of every
+ parsing function. They allow you to fine-tune the process of
+ instance validation and parsing. Both arguments are optional.
+ </p>
+
+
+ <p>The following flags are recognized by the parsing functions:</p>
+
+ <dl>
+ <dt><code>xml_schema::flags::keep_dom</code></dt>
+ <dd>Keep association between DOM nodes and the resulting
+ object model nodes. For more information about DOM association
+ refer to <a href="#5.1">Section 5.1, "DOM Association"</a>.</dd>
+
+ <dt><code>xml_schema::flags::own_dom</code></dt>
+ <dd>Assume ownership of the DOM document passed. This flag only
+ makes sense together with the <code>keep_dom</code> flag in
+ the call to the parsing function with the
+ <code>xml_schema::dom::[unique|auto]_ptr&lt;DOMDocument></code>
+ argument.</dd>
+
+ <dt><code>xml_schema::flags::dont_validate</code></dt>
+ <dd>Do not validate instance documents against schemas.</dd>
+
+ <dt><code>xml_schema::flags::dont_initialize</code></dt>
+ <dd>Do not initialize the Xerces-C++ runtime.</dd>
+ </dl>
+
+ <p>You can pass several flags by combining them using the bit-wise OR
+ operator. For example:</p>
+
+ <pre class="c++">
+using xml_schema::flags;
+
+std::unique_ptr&lt;type> r (
+ name ("test.xml", flags::keep_dom | flags::dont_validate));
+ </pre>
+
+ <p>By default, validation of instance documents is turned on even
+ though parsers generated by XSD do not assume instance
+ documents are valid. They include a number of checks that prevent
+ construction of inconsistent object models. This,
+ however, does not mean that an instance document that was
+ successfully parsed by the XSD-generated parsers is
+ valid per the corresponding schema. If an instance document is not
+ "valid enough" for the generated parsers to construct consistent
+ object model, one of the exceptions defined in
+ <code>xml_schema</code> namespace is thrown (see
+ <a href="#3.3">Section 3.3, "Error Handling"</a>).
+ </p>
+
+ <p>For more information on the Xerces-C++ runtime initialization
+ refer to <a href="#3.1">Section 3.1, "Initializing the Xerces-C++
+ Runtime"</a>.
+ </p>
+
+ <p>The <code>xml_schema::properties</code> class allows you to
+ programmatically specify schema locations to be used instead
+ of those specified with the <code>xsi::schemaLocation</code>
+ and <code>xsi::noNamespaceSchemaLocation</code> attributes
+ in instance documents. The interface of the <code>properties</code>
+ class is presented below:
+ </p>
+
+ <pre class="c++">
+class properties
+{
+public:
+ void
+ schema_location (const std::basic_string&lt;C>&amp; namespace_,
+ const std::basic_string&lt;C>&amp; location);
+ void
+ no_namespace_schema_location (const std::basic_string&lt;C>&amp; location);
+};
+ </pre>
+
+ <p>Note that all locations are relative to an instance document unless
+ they are URIs. For example, if you want to use a local file as your
+ schema, then you will need to pass
+ <code>file:///absolute/path/to/your/schema</code> as the location
+ argument.
+ </p>
+
+ <h2><a name="3.3">3.3 Error Handling</a></h2>
+
+ <p>As discussed in <a href="#2.2">Section 2.2, "Error Handling"</a>,
+ the mapping uses the C++ exception handling mechanism as its primary
+ way of reporting error conditions. However, to handle recoverable
+ parsing and validation errors and warnings, a callback interface maybe
+ preferred by the application.</p>
+
+ <p>To better understand error handling and reporting strategies employed
+ by the parsing functions, it is useful to know that the
+ transformation of an XML instance document to a statically-typed
+ tree happens in two stages. The first stage, performed by Xerces-C++,
+ consists of parsing an XML document into a DOM instance. For short,
+ we will call this stage the XML-DOM stage. Validation, if not disabled,
+ happens during this stage. The second stage,
+ performed by the generated parsers, consist of parsing the DOM
+ instance into the statically-typed tree. We will call this stage
+ the DOM-Tree stage. Additional checks are performed during this
+ stage in order to prevent construction of inconsistent tree which
+ could otherwise happen when validation is disabled, for example.</p>
+
+ <p>All parsing functions except the one that operates on a DOM instance
+ come in overloaded triples. The first function in such a triple
+ reports error conditions exclusively by throwing exceptions. It
+ accumulates all the parsing and validation errors of the XML-DOM
+ stage and throws them in a single instance of the
+ <code>xml_schema::parsing</code> exception (described below).
+ The second and the third functions in the triple use callback
+ interfaces to report parsing and validation errors and warnings.
+ The two callback interfaces are <code>xml_schema::error_handler</code>
+ and <code>xercesc::DOMErrorHandler</code>. For more information
+ on the <code>xercesc::DOMErrorHandler</code> interface refer to
+ the Xerces-C++ documentation. The <code>xml_schema::error_handler</code>
+ interface is presented below:
+ </p>
+
+ <pre class="c++">
+class error_handler
+{
+public:
+ struct severity
+ {
+ enum value
+ {
+ warning,
+ error,
+ fatal
+ };
+ };
+
+ virtual bool
+ handle (const std::basic_string&lt;C>&amp; id,
+ unsigned long line,
+ unsigned long column,
+ severity,
+ const std::basic_string&lt;C>&amp; message) = 0;
+
+ virtual
+ ~error_handler ();
+};
+ </pre>
+
+ <p>The <code>id</code> argument of the <code>error_handler::handle</code>
+ function identifies the resource being parsed (e.g., a file name or
+ URI).
+ </p>
+
+ <p>By returning <code>true</code> from the <code>handle</code> function
+ you instruct the parser to recover and continue parsing. Returning
+ <code>false</code> results in termination of the parsing process.
+ An error with the <code>fatal</code> severity level results in
+ termination of the parsing process no matter what is returned from
+ the <code>handle</code> function. It is safe to throw an exception
+ from the <code>handle</code> function.
+ </p>
+
+ <p>The DOM-Tree stage reports error conditions exclusively by throwing
+ exceptions. Individual exceptions thrown by the parsing functions
+ are described in the following sub-sections.
+ </p>
+
+
+ <h3><a name="3.3.1">3.3.1 <code>xml_schema::parsing</code></a></h3>
+
+ <pre class="c++">
+struct severity
+{
+ enum value
+ {
+ warning,
+ error
+ };
+
+ severity (value);
+ operator value () const;
+};
+
+struct error
+{
+ error (severity,
+ const std::basic_string&lt;C>&amp; id,
+ unsigned long line,
+ unsigned long column,
+ const std::basic_string&lt;C>&amp; message);
+
+ severity
+ severity () const;
+
+ const std::basic_string&lt;C>&amp;
+ id () const;
+
+ unsigned long
+ line () const;
+
+ unsigned long
+ column () const;
+
+ const std::basic_string&lt;C>&amp;
+ message () const;
+};
+
+std::basic_ostream&lt;C>&amp;
+operator&lt;&lt; (std::basic_ostream&lt;C>&amp;, const error&amp;);
+
+struct diagnostics: std::vector&lt;error>
+{
+};
+
+std::basic_ostream&lt;C>&amp;
+operator&lt;&lt; (std::basic_ostream&lt;C>&amp;, const diagnostics&amp;);
+
+struct parsing: virtual exception
+{
+ parsing ();
+ parsing (const diagnostics&amp;);
+
+ const diagnostics&amp;
+ diagnostics () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::parsing</code> exception is thrown if there
+ were parsing or validation errors reported during the XML-DOM stage.
+ If no callback interface was provided to the parsing function, the
+ exception contains a list of errors and warnings accessible using
+ the <code>diagnostics</code> function. The usual conditions when
+ this exception is thrown include malformed XML instances and, if
+ validation is turned on, invalid instance documents.
+ </p>
+
+ <h3><a name="3.3.2">3.3.2 <code>xml_schema::expected_element</code></a></h3>
+
+ <pre class="c++">
+struct expected_element: virtual exception
+{
+ expected_element (const std::basic_string&lt;C>&amp; name,
+ const std::basic_string&lt;C>&amp; namespace_);
+
+
+ const std::basic_string&lt;C>&amp;
+ name () const;
+
+ const std::basic_string&lt;C>&amp;
+ namespace_ () const;
+
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::expected_element</code> exception is thrown
+ when an expected element is not encountered by the DOM-Tree stage.
+ The name and namespace of the expected element can be obtained using
+ the <code>name</code> and <code>namespace_</code> functions respectively.
+ </p>
+
+
+ <h3><a name="3.3.3">3.3.3 <code>xml_schema::unexpected_element</code></a></h3>
+
+ <pre class="c++">
+struct unexpected_element: virtual exception
+{
+ unexpected_element (const std::basic_string&lt;C>&amp; encountered_name,
+ const std::basic_string&lt;C>&amp; encountered_namespace,
+ const std::basic_string&lt;C>&amp; expected_name,
+ const std::basic_string&lt;C>&amp; expected_namespace)
+
+
+ const std::basic_string&lt;C>&amp;
+ encountered_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ encountered_namespace () const;
+
+
+ const std::basic_string&lt;C>&amp;
+ expected_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ expected_namespace () const;
+
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::unexpected_element</code> exception is thrown
+ when an unexpected element is encountered by the DOM-Tree stage.
+ The name and namespace of the encountered element can be obtained
+ using the <code>encountered_name</code> and
+ <code>encountered_namespace</code> functions respectively. If an
+ element was expected instead of the encountered one, its name
+ and namespace can be obtained using the <code>expected_name</code> and
+ <code>expected_namespace</code> functions respectively. Otherwise
+ these functions return empty strings.
+ </p>
+
+ <h3><a name="3.3.4">3.3.4 <code>xml_schema::expected_attribute</code></a></h3>
+
+ <pre class="c++">
+struct expected_attribute: virtual exception
+{
+ expected_attribute (const std::basic_string&lt;C>&amp; name,
+ const std::basic_string&lt;C>&amp; namespace_);
+
+
+ const std::basic_string&lt;C>&amp;
+ name () const;
+
+ const std::basic_string&lt;C>&amp;
+ namespace_ () const;
+
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::expected_attribute</code> exception is thrown
+ when an expected attribute is not encountered by the DOM-Tree stage.
+ The name and namespace of the expected attribute can be obtained using
+ the <code>name</code> and <code>namespace_</code> functions respectively.
+ </p>
+
+
+ <h3><a name="3.3.5">3.3.5 <code>xml_schema::unexpected_enumerator</code></a></h3>
+
+ <pre class="c++">
+struct unexpected_enumerator: virtual exception
+{
+ unexpected_enumerator (const std::basic_string&lt;C>&amp; enumerator);
+
+ const std::basic_string&lt;C>&amp;
+ enumerator () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::unexpected_enumerator</code> exception is thrown
+ when an unexpected enumerator is encountered by the DOM-Tree stage.
+ The enumerator can be obtained using the <code>enumerator</code>
+ functions.
+ </p>
+
+ <h3><a name="3.3.6">3.3.6 <code>xml_schema::expected_text_content</code></a></h3>
+
+ <pre class="c++">
+struct expected_text_content: virtual exception
+{
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::expected_text_content</code> exception is thrown
+ when a content other than text is encountered and the text content was
+ expected by the DOM-Tree stage.
+ </p>
+
+ <h3><a name="3.3.7">3.3.7 <code>xml_schema::no_type_info</code></a></h3>
+
+ <pre class="c++">
+struct no_type_info: virtual exception
+{
+ no_type_info (const std::basic_string&lt;C>&amp; type_name,
+ const std::basic_string&lt;C>&amp; type_namespace);
+
+ const std::basic_string&lt;C>&amp;
+ type_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ type_namespace () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::no_type_info</code> exception is thrown
+ when there is no type information associated with a type specified
+ by the <code>xsi:type</code> attribute. This exception is thrown
+ by the DOM-Tree stage. The name and namespace of the type in question
+ can be obtained using the <code>type_name</code> and
+ <code>type_namespace</code> functions respectively. Usually, catching
+ this exception means that you haven't linked the code generated
+ from the schema defining the type in question with your application
+ or this schema has been compiled without the
+ <code>--generate-polymorphic</code> option.
+ </p>
+
+
+ <h3><a name="3.3.8">3.3.8 <code>xml_schema::not_derived</code></a></h3>
+
+ <pre class="c++">
+struct not_derived: virtual exception
+{
+ not_derived (const std::basic_string&lt;C>&amp; base_type_name,
+ const std::basic_string&lt;C>&amp; base_type_namespace,
+ const std::basic_string&lt;C>&amp; derived_type_name,
+ const std::basic_string&lt;C>&amp; derived_type_namespace);
+
+ const std::basic_string&lt;C>&amp;
+ base_type_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ base_type_namespace () const;
+
+
+ const std::basic_string&lt;C>&amp;
+ derived_type_name () const;
+
+ const std::basic_string&lt;C>&amp;
+ derived_type_namespace () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::not_derived</code> exception is thrown
+ when a type specified by the <code>xsi:type</code> attribute is
+ not derived from the expected base type. This exception is thrown
+ by the DOM-Tree stage. The name and namespace of the expected
+ base type can be obtained using the <code>base_type_name</code> and
+ <code>base_type_namespace</code> functions respectively. The name
+ and namespace of the offending type can be obtained using the
+ <code>derived_type_name</code> and
+ <code>derived_type_namespace</code> functions respectively.
+ </p>
+
+ <h3><a name="3.3.9">3.3.9 <code>xml_schema::no_prefix_mapping</code></a></h3>
+
+ <pre class="c++">
+struct no_prefix_mapping: virtual exception
+{
+ no_prefix_mapping (const std::basic_string&lt;C>&amp; prefix);
+
+ const std::basic_string&lt;C>&amp;
+ prefix () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::no_prefix_mapping</code> exception is thrown
+ during the DOM-Tree stage if a namespace prefix is encountered for
+ which a prefix-namespace mapping hasn't been provided. The namespace
+ prefix in question can be obtained using the <code>prefix</code>
+ function.
+ </p>
+
+ <h2><a name="3.4">3.4 Reading from a Local File or URI</a></h2>
+
+ <p>Using a local file or URI is the simplest way to parse an XML instance.
+ For example:</p>
+
+ <pre class="c++">
+using std::unique_ptr;
+
+unique_ptr&lt;type> r1 (name ("test.xml"));
+unique_ptr&lt;type> r2 (name ("https://www.codesynthesis.com/test.xml"));
+ </pre>
+
+ <p>Or, in the C++98 mode:</p>
+
+ <pre class="c++">
+using std::auto_ptr;
+
+auto_ptr&lt;type> r1 (name ("test.xml"));
+auto_ptr&lt;type> r2 (name ("https://www.codesynthesis.com/test.xml"));
+ </pre>
+
+ <h2><a name="3.5">3.5 Reading from <code>std::istream</code></a></h2>
+
+ <p>When using an <code>std::istream</code> instance, you may also
+ pass an optional resource id. This id is used to identify the
+ resource (for example in error messages) as well as to resolve
+ relative paths. For instance:</p>
+
+ <pre class="c++">
+using std::unique_ptr;
+
+{
+ std::ifstream ifs ("test.xml");
+ unique_ptr&lt;type> r (name (ifs, "test.xml"));
+}
+
+{
+ std::string str ("..."); // Some XML fragment.
+ std::istringstream iss (str);
+ unique_ptr&lt;type> r (name (iss));
+}
+ </pre>
+
+ <h2><a name="3.6">3.6 Reading from <code>xercesc::InputSource</code></a></h2>
+
+ <p>Reading from a <code>xercesc::InputSource</code> instance
+ is similar to the <code>std::istream</code> case except
+ the resource id is maintained by the <code>InputSource</code>
+ object. For instance:</p>
+
+ <pre class="c++">
+xercesc::StdInInputSource is;
+std::unique_ptr&lt;type> r (name (is));
+ </pre>
+
+ <h2><a name="3.7">3.7 Reading from DOM</a></h2>
+
+ <p>Reading from a <code>xercesc::DOMDocument</code> instance allows
+ you to setup a custom XML-DOM stage. Things like DOM
+ parser reuse, schema pre-parsing, and schema caching can be achieved
+ with this approach. For more information on how to obtain DOM
+ representation from an XML instance refer to the Xerces-C++
+ documentation. In addition, the
+ <a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree Mapping
+ FAQ</a> shows how to parse an XML instance to a Xerces-C++
+ DOM document using the XSD runtime utilities.
+ </p>
+
+ <p>The last parsing function is useful when you would like to perform
+ your own XML-to-DOM parsing and associate the resulting DOM document
+ with the object model nodes. The automatic <code>DOMDocument</code>
+ pointer is reset and the resulting object model assumes ownership
+ of the DOM document passed. For example:</p>
+
+ <pre class="c++">
+// C++11 version.
+//
+xml_schema::dom::unique_ptr&lt;xercesc::DOMDocument> doc = ...
+
+std::unique_ptr&lt;type> r (
+ name (std::move (doc),
+ xml_schema::flags::keep_dom | xml_schema::flags::own_dom));
+
+// At this point doc is reset to 0.
+
+// C++98 version.
+//
+xml_schema::dom::auto_ptr&lt;xercesc::DOMDocument> doc = ...
+
+std::auto_ptr&lt;type> r (
+ name (doc, xml_schema::flags::keep_dom | xml_schema::flags::own_dom));
+
+// At this point doc is reset to 0.
+ </pre>
+
+ <h1><a name="4">4 Serialization</a></h1>
+
+ <p>This chapter covers various aspects of serializing a
+ tree-like object model to DOM or XML.
+ In this regard, serialization is complimentary to the reverse
+ process of parsing a DOM or XML instance into an object model
+ which is discussed in <a href="#3">Chapter 3,
+ "Parsing"</a>. Note that the generation of the serialization code
+ is optional and should be explicitly requested with the
+ <code>--generate-serialization</code> option. See the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a> for more information.
+ </p>
+
+ <p>Each global XML Schema element in the form:
+ </p>
+
+
+ <pre class="xml">
+&lt;xsd:element name="name" type="type"/>
+ </pre>
+
+ <p>is mapped to 8 overloaded C++ functions in the form:</p>
+
+ <pre class="c++">
+// Serialize to std::ostream.
+//
+void
+name (std::ostream&amp;,
+ const type&amp;,
+ const xml_schema::namespace_fomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+void
+name (std::ostream&amp;,
+ const type&amp;,
+ xml_schema::error_handler&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+void
+name (std::ostream&amp;,
+ const type&amp;,
+ xercesc::DOMErrorHandler&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+
+// Serialize to XMLFormatTarget.
+//
+void
+name (xercesc::XMLFormatTarget&amp;,
+ const type&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+void
+name (xercesc::XMLFormatTarget&amp;,
+ const type&amp;,
+ xml_schema::error_handler&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+void
+name (xercesc::XMLFormatTarget&amp;,
+ const type&amp;,
+ xercesc::DOMErrorHandler&amp;,
+ const xml_schema::namespace_infomap&amp; =
+ xml_schema::namespace_infomap (),
+ const std::basic_string&lt;C>&amp; encoding = "UTF-8",
+ xml_schema::flags = 0);
+
+
+// Serialize to DOM.
+//
+xml_schema::dom::[unique|auto]_ptr&lt;xercesc::DOMDocument>
+name (const type&amp;,
+ const xml_schema::namespace_infomap&amp;
+ xml_schema::namespace_infomap (),
+ xml_schema::flags = 0);
+
+void
+name (xercesc::DOMDocument&amp;,
+ const type&amp;,
+ xml_schema::flags = 0);
+ </pre>
+
+ <p>You can choose between writing XML to <code>std::ostream</code> or
+ <code>xercesc::XMLFormatTarget</code> and creating a DOM instance
+ in the form of <code>xercesc::DOMDocument</code>. Serialization
+ to <code>ostream</code> or <code>XMLFormatTarget</code> requires a
+ considerably less work while serialization to DOM provides
+ for greater flexibility. Each of these serialization functions
+ is discussed in more detail in the following sections.
+ </p>
+
+
+ <h2><a name="4.1">4.1 Initializing the Xerces-C++ Runtime</a></h2>
+
+ <p>Some serialization functions expect you to initialize the Xerces-C++
+ runtime while others initialize and terminate it as part of their
+ work. The general rule is as follows: if a function has any arguments
+ or return a value that is an instance of a Xerces-C++ type, then
+ this function expects you to initialize the Xerces-C++ runtime.
+ Otherwise, the function initializes and terminates the runtime for
+ you. Note that it is legal to have nested calls to the Xerces-C++
+ initialize and terminate functions as long as the calls are balanced.
+ </p>
+
+ <p>You can instruct serialization functions that initialize and terminate
+ the runtime not to do so by passing the
+ <code>xml_schema::flags::dont_initialize</code> flag (see
+ <a href="#4.3">Section 4.3, "Flags"</a>).
+ </p>
+
+ <h2><a name="4.2">4.2 Namespace Infomap and Character Encoding</a></h2>
+
+ <p>When a document being serialized uses XML namespaces, custom
+ prefix-namespace associations can to be established. If custom
+ prefix-namespace mapping is not provided then generic prefixes
+ (<code>p1</code>, <code>p2</code>, etc) are automatically assigned
+ to namespaces as needed. Also, if
+ you would like the resulting instance document to contain the
+ <code>schemaLocation</code> or <code>noNamespaceSchemaLocation</code>
+ attributes, you will need to provide namespace-schema associations.
+ The <code>xml_schema::namespace_infomap</code> class is used
+ to capture this information:</p>
+
+ <pre class="c++">
+struct namespace_info
+{
+ namespace_info ();
+ namespace_info (const std::basic_string&lt;C>&amp; name,
+ const std::basic_string&lt;C>&amp; schema);
+
+ std::basic_string&lt;C> name;
+ std::basic_string&lt;C> schema;
+};
+
+// Map of namespace prefix to namespace_info.
+//
+struct namespace_infomap: public std::map&lt;std::basic_string&lt;C>,
+ namespace_info>
+{
+};
+ </pre>
+
+ <p>Consider the following associations as an example:</p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";
+ </pre>
+
+ <p>This map, if passed to one of the serialization functions,
+ could result in the following XML fragment:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;t:name xmlns:t="https://www.codesynthesis.com/test"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://www.codesynthesis.com/test test.xsd">
+ </pre>
+
+ <p>As you can see, the serialization function automatically added namespace
+ mapping for the <code>xsi</code> prefix. You can change this by
+ providing your own prefix:</p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map["xsn"].name = "http://www.w3.org/2001/XMLSchema-instance";
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";
+ </pre>
+
+ <p>This could result in the following XML fragment:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;t:name xmlns:t="https://www.codesynthesis.com/test"
+ xmlns:xsn="http://www.w3.org/2001/XMLSchema-instance"
+ xsn:schemaLocation="https://www.codesynthesis.com/test test.xsd">
+ </pre>
+
+ <p>To specify the location of a schema without a namespace you can use
+ an empty prefix as in the example below: </p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map[""].schema = "test.xsd";
+ </pre>
+
+ <p>This would result in the following XML fragment:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="test.xsd">
+ </pre>
+
+ <p>To make a particular namespace default you can use an empty
+ prefix, for example:</p>
+
+ <pre class="c++">
+xml_schema::namespace_infomap map;
+
+map[""].name = "https://www.codesynthesis.com/test";
+map[""].schema = "test.xsd";
+ </pre>
+
+ <p>This could result in the following XML fragment:</p>
+
+ <pre class="xml">
+&lt;?xml version="1.0" ?>
+&lt;name xmlns="https://www.codesynthesis.com/test"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://www.codesynthesis.com/test test.xsd">
+ </pre>
+
+
+ <p>Another bit of information that you can pass to the serialization
+ functions is the character encoding method that you would like to use.
+ Common values for this argument are <code>"US-ASCII"</code>,
+ <code>"ISO8859-1"</code>, <code>"UTF-8"</code>,
+ <code>"UTF-16BE"</code>, <code>"UTF-16LE"</code>,
+ <code>"UCS-4BE"</code>, and <code>"UCS-4LE"</code>. The default
+ encoding is <code>"UTF-8"</code>. For more information on
+ encoding methods see the
+ "<a href="http://en.wikipedia.org/wiki/Character_code">Character
+ Encoding</a>" article from Wikipedia.
+ </p>
+
+ <h2><a name="4.3">4.3 Flags</a></h2>
+
+ <p>Serialization flags are the last argument of every serialization
+ function. They allow you to fine-tune the process of serialization.
+ The flags argument is optional.
+ </p>
+
+
+ <p>The following flags are recognized by the serialization
+ functions:</p>
+
+ <dl>
+ <dt><code>xml_schema::flags::dont_initialize</code></dt>
+ <dd>Do not initialize the Xerces-C++ runtime.</dd>
+
+ <dt><code>xml_schema::flags::dont_pretty_print</code></dt>
+ <dd>Do not add extra spaces or new lines that make the resulting XML
+ slightly bigger but easier to read.</dd>
+
+ <dt><code>xml_schema::flags::no_xml_declaration</code></dt>
+ <dd>Do not write XML declaration (&lt;?xml ... ?>).</dd>
+ </dl>
+
+ <p>You can pass several flags by combining them using the bit-wise OR
+ operator. For example:</p>
+
+ <pre class="c++">
+std::unique_ptr&lt;type> r = ...
+std::ofstream ofs ("test.xml");
+xml_schema::namespace_infomap map;
+name (ofs,
+ *r,
+ map,
+ "UTF-8",
+ xml_schema::flags::no_xml_declaration |
+ xml_schema::flags::dont_pretty_print);
+ </pre>
+
+ <p>For more information on the Xerces-C++ runtime initialization
+ refer to <a href="#4.1">Section 4.1, "Initializing the Xerces-C++
+ Runtime"</a>.
+ </p>
+
+ <h2><a name="4.4">4.4 Error Handling</a></h2>
+
+ <p>As with the parsing functions (see <a href="#3.3">Section 3.3,
+ "Error Handling"</a>), to better understand error handling and
+ reporting strategies employed by the serialization functions, it
+ is useful to know that the transformation of a statically-typed
+ tree to an XML instance document happens in two stages. The first
+ stage, performed by the generated code, consist of building a DOM
+ instance from the statically-typed tree . For short, we will call
+ this stage the Tree-DOM stage. The second stage, performed by
+ Xerces-C++, consists of serializing the DOM instance into the XML
+ document. We will call this stage the DOM-XML stage.
+ </p>
+
+ <p>All serialization functions except the two that serialize into
+ a DOM instance come in overloaded triples. The first function
+ in such a triple reports error conditions exclusively by throwing
+ exceptions. It accumulates all the serialization errors of the
+ DOM-XML stage and throws them in a single instance of the
+ <code>xml_schema::serialization</code> exception (described below).
+ The second and the third functions in the triple use callback
+ interfaces to report serialization errors and warnings. The two
+ callback interfaces are <code>xml_schema::error_handler</code> and
+ <code>xercesc::DOMErrorHandler</code>. The
+ <code>xml_schema::error_handler</code> interface is described in
+ <a href="#3.3">Section 3.3, "Error Handling"</a>. For more information
+ on the <code>xercesc::DOMErrorHandler</code> interface refer to the
+ Xerces-C++ documentation.
+ </p>
+
+ <p>The Tree-DOM stage reports error conditions exclusively by throwing
+ exceptions. Individual exceptions thrown by the serialization functions
+ are described in the following sub-sections.
+ </p>
+
+ <h3><a name="4.4.1">4.4.1 <code>xml_schema::serialization</code></a></h3>
+
+ <pre class="c++">
+struct serialization: virtual exception
+{
+ serialization ();
+ serialization (const diagnostics&amp;);
+
+ const diagnostics&amp;
+ diagnostics () const;
+
+ virtual const char*
+ what () const throw ();
+};
+ </pre>
+
+ <p>The <code>xml_schema::diagnostics</code> class is described in
+ <a href="#3.3.1">Section 3.3.1, "<code>xml_schema::parsing</code>"</a>.
+ The <code>xml_schema::serialization</code> exception is thrown if
+ there were serialization errors reported during the DOM-XML stage.
+ If no callback interface was provided to the serialization function,
+ the exception contains a list of errors and warnings accessible using
+ the <code>diagnostics</code> function.
+ </p>
+
+
+ <h3><a name="4.4.2">4.4.2 <code>xml_schema::unexpected_element</code></a></h3>
+
+ <p>The <code>xml_schema::unexpected_element</code> exception is
+ described in <a href="#3.3.3">Section 3.3.3,
+ "<code>xml_schema::unexpected_element</code>"</a>. It is thrown
+ by the serialization functions during the Tree-DOM stage if the
+ root element name of the provided DOM instance does not match with
+ the name of the element this serialization function is for.
+ </p>
+
+ <h3><a name="4.4.3">4.4.3 <code>xml_schema::no_type_info</code></a></h3>
+
+ <p>The <code>xml_schema::no_type_info</code> exception is
+ described in <a href="#3.3.7">Section 3.3.7,
+ "<code>xml_schema::no_type_info</code>"</a>. It is thrown
+ by the serialization functions during the Tree-DOM stage when there
+ is no type information associated with a dynamic type of an
+ element. Usually, catching this exception means that you haven't
+ linked the code generated from the schema defining the type in
+ question with your application or this schema has been compiled
+ without the <code>--generate-polymorphic</code> option.
+ </p>
+
+ <h2><a name="4.5">4.5 Serializing to <code>std::ostream</code></a></h2>
+
+ <p>In order to serialize to <code>std::ostream</code> you will need
+ an object model, an output stream and, optionally, a namespace
+ infomap. For instance:</p>
+
+ <pre class="c++">
+// Obtain the object model.
+//
+std::unique_ptr&lt;type> r = ...
+
+// Prepare namespace mapping and schema location information.
+//
+xml_schema::namespace_infomap map;
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";
+
+// Write it out.
+//
+name (std::cout, *r, map);
+ </pre>
+
+ <p>Note that the output stream is treated as a binary stream. This
+ becomes important when you use a character encoding that is wider
+ than 8-bit <code>char</code>, for instance UTF-16 or UCS-4. For
+ example, things will most likely break if you try to serialize
+ to <code>std::ostringstream</code> with UTF-16 or UCS-4 as an
+ encoding. This is due to the special value,
+ <code>'\0'</code>, that will most likely occur as part of such
+ serialization and it won't have the special meaning assumed by
+ <code>std::ostringstream</code>.
+ </p>
+
+
+ <h2><a name="4.6">4.6 Serializing to <code>xercesc::XMLFormatTarget</code></a></h2>
+
+ <p>Serializing to an <code>xercesc::XMLFormatTarget</code> instance
+ is similar the <code>std::ostream</code> case. For instance:
+ </p>
+
+ <pre class="c++">
+using std::unique_ptr;
+
+// Obtain the object model.
+//
+unique_ptr&lt;type> r = ...
+
+// Prepare namespace mapping and schema location information.
+//
+xml_schema::namespace_infomap map;
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";
+
+using namespace xercesc;
+
+XMLPlatformUtils::Initialize ();
+
+{
+ // Choose a target.
+ //
+ unique_ptr&lt;XMLFormatTarget> ft;
+
+ if (argc != 2)
+ {
+ ft = unique_ptr&lt;XMLFormatTarget> (new StdOutFormatTarget ());
+ }
+ else
+ {
+ ft = unique_ptr&lt;XMLFormatTarget> (
+ new LocalFileFormatTarget (argv[1]));
+ }
+
+ // Write it out.
+ //
+ name (*ft, *r, map);
+}
+
+XMLPlatformUtils::Terminate ();
+ </pre>
+
+ <p>Note that we had to initialize the Xerces-C++ runtime before we
+ could call this serialization function.</p>
+
+ <h2><a name="4.7">4.7 Serializing to DOM</a></h2>
+
+ <p>The mapping provides two overloaded functions that implement
+ serialization to a DOM instance. The first creates a DOM instance
+ for you and the second serializes to an existing DOM instance.
+ While serializing to a new DOM instance is similar to serializing
+ to <code>std::ostream</code> or <code>xercesc::XMLFormatTarget</code>,
+ serializing to an existing DOM instance requires quite a bit of work
+ from your side. You will need to set all the custom namespace mapping
+ attributes as well as the <code>schemaLocation</code> and/or
+ <code>noNamespaceSchemaLocation</code> attributes. The following
+ listing should give you an idea about what needs to be done:
+ </p>
+
+ <pre class="c++">
+// Obtain the object model.
+//
+std::unique_ptr&lt;type> r = ...
+
+using namespace xercesc;
+
+XMLPlatformUtils::Initialize ();
+
+{
+ // Create a DOM instance. Set custom namespace mapping and schema
+ // location attributes.
+ //
+ DOMDocument&amp; doc = ...
+
+ // Serialize to DOM.
+ //
+ name (doc, *r);
+
+ // Serialize the DOM document to XML.
+ //
+ ...
+}
+
+XMLPlatformUtils::Terminate ();
+ </pre>
+
+ <p>For more information on how to create and serialize a DOM instance
+ refer to the Xerces-C++ documentation. In addition, the
+ <a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree Mapping
+ FAQ</a> shows how to implement these operations using the XSD
+ runtime utilities.
+ </p>
+
+ <h1><a name="5">5 Additional Functionality</a></h1>
+
+ <p>The C++/Tree mapping provides a number of optional features
+ that can be useful in certain situations. They are described
+ in the following sections.</p>
+
+ <h2><a name="5.1">5.1 DOM Association</a></h2>
+
+ <p>Normally, after parsing is complete, the DOM document which
+ was used to extract the data is discarded. However, the parsing
+ functions can be instructed to preserve the DOM document
+ and create an association between the DOM nodes and object model
+ nodes. When there is an association between the DOM and
+ object model nodes, you can obtain the corresponding DOM element
+ or attribute node from an object model node as well as perform
+ the reverse transition: obtain the corresponding object model
+ from a DOM element or attribute node.</p>
+
+ <p>Maintaining DOM association is normally useful when the application
+ needs access to XML constructs that are not preserved in the
+ object model, for example, XML comments.
+ Another useful aspect of DOM association is the ability of the
+ application to navigate the document tree using the generic DOM
+ interface (for example, with the help of an XPath processor)
+ and then move back to the statically-typed object model. Note
+ also that while you can change the underlying DOM document,
+ these changes are not reflected in the object model and will
+ be ignored during serialization. If you need to not only access
+ but also modify some aspects of XML that are not preserved in
+ the object model, then type customization with custom parsing
+ constructors and serialization operators should be used instead.</p>
+
+ <p>To request DOM association you will need to pass the
+ <code>xml_schema::flags::keep_dom</code> flag to one of the
+ parsing functions (see <a href="#3.2">Section 3.2,
+ "Flags and Properties"</a> for more information). In this case the
+ DOM document is retained and will be released when the object model
+ is deleted. Note that since DOM nodes "out-live" the parsing function
+ call, you need to initialize the Xerces-C++ runtime before calling
+ one of the parsing functions with the <code>keep_dom</code> flag and
+ terminate it after the object model is destroyed (see
+ <a href="#3.1">Section 3.1, "Initializing the Xerces-C++ Runtime"</a>).</p>
+
+ <p>If the <code>keep_dom</code> flag is passed
+ as the second argument to the copy constructor and the copy
+ being made is of a complete tree, then the DOM association
+ is also maintained in the copy by cloning the underlying
+ DOM document and reestablishing the associations. For example:</p>
+
+ <pre class="c++">
+using namespace xercesc;
+
+XMLPlatformUtils::Initialize ();
+
+{
+ // Parse XML to object model.
+ //
+ std::unique_ptr&lt;type> r (root (
+ "root.xml",
+ xml_schema::flags::keep_dom |
+ xml_schema::flags::dont_initialize));
+
+ // Copy without DOM association.
+ //
+ type copy1 (*r);
+
+ // Copy with DOM association.
+ //
+ type copy2 (*r, xml_schema::flags::keep_dom);
+}
+
+XMLPlatformUtils::Terminate ();
+ </pre>
+
+
+ <p>To obtain the corresponding DOM node from an object model node
+ you will need to call the <code>_node</code> accessor function
+ which returns a pointer to <code>DOMNode</code>. You can then query
+ this DOM node's type and cast it to either <code>DOMAttr*</code>
+ or <code>DOMElement*</code>. To obtain the corresponding object
+ model node from a DOM node, the DOM user data API is used. The
+ <code>xml_schema::dom::tree_node_key</code> variable contains
+ the key for object model nodes. The following schema and code
+ fragment show how to navigate from DOM to object model nodes
+ and in the opposite direction:</p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="a" type="string"/>
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;element name="root" type="object"/>
+ </pre>
+
+ <pre class="c++">
+using namespace xercesc;
+
+XMLPlatformUtils::Initialize ();
+
+{
+ // Parse XML to object model.
+ //
+ std::unique_ptr&lt;type> r (root (
+ "root.xml",
+ xml_schema::flags::keep_dom |
+ xml_schema::flags::dont_initialize));
+
+ DOMNode* n = r->_node ();
+ assert (n->getNodeType () == DOMNode::ELEMENT_NODE);
+ DOMElement* re = static_cast&lt;DOMElement*> (n);
+
+ // Get the 'a' element. Note that it is not necessarily the
+ // first child node of 'root' since there could be whitespace
+ // nodes before it.
+ //
+ DOMElement* ae;
+
+ for (n = re->getFirstChild (); n != 0; n = n->getNextSibling ())
+ {
+ if (n->getNodeType () == DOMNode::ELEMENT_NODE)
+ {
+ ae = static_cast&lt;DOMElement*> (n);
+ break;
+ }
+ }
+
+ // Get from the 'a' DOM element to xml_schema::string object model
+ // node.
+ //
+ xml_schema::type&amp; t (
+ *reinterpret_cast&lt;xml_schema::type*> (
+ ae->getUserData (xml_schema::dom::tree_node_key)));
+
+ xml_schema::string&amp; a (dynamic_cast&lt;xml_schema::string&amp;> (t));
+}
+
+XMLPlatformUtils::Terminate ();
+ </pre>
+
+ <p>The 'mixed' example which can be found in the XSD distribution
+ shows how to handle the mixed content using DOM association.</p>
+
+ <h2><a name="5.2">5.2 Binary Serialization</a></h2>
+
+ <p>Besides reading from and writing to XML, the C++/Tree mapping
+ also allows you to save the object model to and load it from a
+ number of predefined as well as custom data representation
+ formats. The predefined binary formats are CDR (Common Data
+ Representation) and XDR (eXternal Data Representation). A
+ custom format can easily be supported by providing
+ insertion and extraction operators for basic types.</p>
+
+ <p>Binary serialization saves only the data without any meta
+ information or markup. As a result, saving to and loading
+ from a binary representation can be an order of magnitude
+ faster than parsing and serializing the same data in XML.
+ Furthermore, the resulting representation is normally several
+ times smaller than the equivalent XML representation. These
+ properties make binary serialization ideal for internal data
+ exchange and storage. A typical application that uses this
+ facility stores the data and communicates within the
+ system using a binary format and reads/writes the data
+ in XML when communicating with the outside world.</p>
+
+ <p>In order to request the generation of insertion operators and
+ extraction constructors for a specific predefined or custom
+ data representation stream, you will need to use the
+ <code>--generate-insertion</code> and <code>--generate-extraction</code>
+ compiler options. See the
+ <a href="https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
+ Compiler Command Line Manual</a> for more information.</p>
+
+ <p>Once the insertion operators and extraction constructors are
+ generated, you can use the <code>xml_schema::istream</code>
+ and <code>xml_schema::ostream</code> wrapper stream templates
+ to save the object model to and load it from a specific format.
+ The following code fragment shows how to do this using ACE
+ (Adaptive Communication Environment) CDR streams as an example:</p>
+
+ <pre class="xml">
+&lt;complexType name="object">
+ &lt;sequence>
+ &lt;element name="a" type="string"/>
+ &lt;element name="b" type="int"/>
+ &lt;/sequence>
+&lt;/complexType>
+
+&lt;element name="root" type="object"/>
+ </pre>
+
+ <pre class="c++">
+// Parse XML to object model.
+//
+std::unique_ptr&lt;type> r (root ("root.xml"));
+
+// Save to a CDR stream.
+//
+ACE_OutputCDR ace_ocdr;
+xml_schema::ostream&lt;ACE_OutputCDR> ocdr (ace_ocdr);
+
+ocdr &lt;&lt; *r;
+
+// Load from a CDR stream.
+//
+ACE_InputCDR ace_icdr (buf, size);
+xml_schema::istream&lt;ACE_InputCDR> icdr (ace_icdr);
+
+std::unique_ptr&lt;object> copy (new object (icdr));
+
+// Serialize to XML.
+//
+root (std::cout, *copy);
+ </pre>
+
+ <p>The XSD distribution contains a number of examples that
+ show how to save the object model to and load it from
+ CDR, XDR, and a custom format.</p>
+
+ <!-- Appendix A -->
+
+
+ <h1><a name="A">Appendix A &mdash; Default and Fixed Values</a></h1>
+
+ <p>The following table summarizes the effect of default and fixed
+ values (specified with the <code>default</code> and <code>fixed</code>
+ attributes, respectively) on attribute and element values. The
+ <code>default</code> and <code>fixed</code> attributes are mutually
+ exclusive. It is also worthwhile to note that the fixed value semantics
+ is a superset of the default value semantics.
+ </p>
+
+ <!-- border="1" is necessary for html2ps -->
+ <table id="default-fixed" border="1">
+ <tr>
+ <th></th>
+ <th></th>
+ <th colspan="2">default</th>
+ <th colspan="2">fixed</th>
+ </tr>
+
+ <!-- element -->
+
+ <tr>
+ <th rowspan="4">element</th>
+ <th rowspan="2">not present</th>
+ <th>optional</th>
+ <th>required</th>
+ <th>optional</th>
+ <th>required</th>
+ </tr>
+ <tr>
+ <td>not present</td>
+ <td>invalid instance</td>
+ <td>not present</td>
+ <td>invalid instance</td>
+ </tr>
+
+
+ <tr>
+ <th>empty</th>
+ <td colspan="2">default value is used</td>
+ <td colspan="2">fixed value is used</td>
+ </tr>
+
+ <tr>
+ <th>value</th>
+ <td colspan="2">value is used</td>
+ <td colspan="2">value is used provided it's the same as fixed</td>
+ </tr>
+
+ <!-- attribute -->
+
+ <!-- element -->
+
+ <tr>
+ <th rowspan="4">attribute</th>
+ <th rowspan="2">not present</th>
+ <th>optional</th>
+ <th>required</th>
+ <th>optional</th>
+ <th>required</th>
+ </tr>
+ <tr>
+ <td>default value is used</td>
+ <td>invalid schema</td>
+ <td>fixed value is used</td>
+ <td>invalid instance</td>
+ </tr>
+
+
+ <tr>
+ <th>empty</th>
+ <td colspan="2">empty value is used</td>
+ <td colspan="2">empty value is used provided it's the same as fixed</td>
+ </tr>
+
+ <tr>
+ <th>value</th>
+ <td colspan="2">value is used</td>
+ <td colspan="2">value is used provided it's the same as fixed</td>
+ </tr>
+
+ </table>
+
+ </div>
+</div>
+
+
+</body>
+</html>
diff --git a/doc/cxx/tree/manual/manual.html2ps.in b/doc/cxx/tree/manual/manual.html2ps.in
new file mode 100644
index 0000000..5629122
--- /dev/null
+++ b/doc/cxx/tree/manual/manual.html2ps.in
@@ -0,0 +1,66 @@
+@@html2ps {
+ option {
+ toc: hb;
+ colour: 1;
+ hyphenate: 1;
+ titlepage: 1;
+ }
+
+ datefmt: "%B %Y";
+
+ titlepage {
+ content: "
+<div align=center>
+ <h1><big>C++/Tree Mapping User Manual</big></h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+ <h1>&nbsp;</h1>
+</div>
+ <p>Revision $[revision] &nbsp;&nbsp;&nbsp; $D</p>
+ <p>Copyright &#169; @copyright@.</p>
+
+ <p>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href='https://www.codesynthesis.com/licenses/fdl-1.2.txt'>GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </p>
+
+ <p>This document is available in the following formats:
+ <a href='https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml'>XHTML</a>,
+ <a href='https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf'>PDF</a>, and
+ <a href='https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps'>PostScript</a>.</p>";
+ }
+
+ toc {
+ indent: 2em;
+ }
+
+ header {
+ odd-right: $H;
+ even-left: $H;
+ }
+
+ footer {
+ odd-left: $D;
+ odd-center: $T, v$[revision];
+ odd-right: $N;
+
+ even-left: $N;
+ even-center: $T, v$[revision];
+ even-right: $D;
+ }
+}
+
+body {
+ font-size: 12pt;
+ text-align: justify;
+}
+
+pre {
+ font-size: 10pt;
+}
diff --git a/xsd/doc/default.css b/doc/default.css
index bb3805b..bb3805b 100644
--- a/xsd/doc/default.css
+++ b/doc/default.css
diff --git a/doc/pregenerated/cxx/parser/guide/cxx-parser-guide.pdf b/doc/pregenerated/cxx/parser/guide/cxx-parser-guide.pdf
new file mode 100644
index 0000000..6440573
--- /dev/null
+++ b/doc/pregenerated/cxx/parser/guide/cxx-parser-guide.pdf
Binary files differ
diff --git a/doc/pregenerated/cxx/parser/guide/cxx-parser-guide.ps b/doc/pregenerated/cxx/parser/guide/cxx-parser-guide.ps
new file mode 100644
index 0000000..81f6b44
--- /dev/null
+++ b/doc/pregenerated/cxx/parser/guide/cxx-parser-guide.ps
@@ -0,0 +1,20741 @@
+%!PS
+%%Title: C++/Parser Mapping Getting Started Guide
+%%Creator: html2ps version 1.0 beta7
+%%EndComments
+save
+2000 dict begin
+/d {bind def} bind def
+/D {def} d
+/t true D
+/f false D
+/FL [/Times-Roman
+/Times-Italic
+/Times-Bold
+/Times-BoldItalic
+/Courier
+/Courier-Oblique
+/Courier-Bold
+/Courier-BoldOblique
+/Helvetica
+/Helvetica-Oblique
+/Helvetica-Bold
+/Helvetica-BoldOblique] D
+/WF t D
+/WI 0 D
+/F 1 D
+/IW 471 F div D
+/IL 621 F div D
+/PS 791 D
+/EF [0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 2] D
+/EZ [12 10 19 17 15 13 12 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 8 8] D
+/Ey [0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] D
+/EG [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] D
+/Tm [1 1 0.8 0.8 0.8 0.8 0.8 0.8 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1.3 0 0] D
+/Bm [1 1 0.5 0.5 0.5 0.5 0.5 0.5 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1 0 0] D
+/Lm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 2 0 0 0] D
+/Rm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] D
+/EU [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0] D
+/NO f D
+/YY [[{()}{ h }][{ h }{()}][{()}{()}]] D
+/ZZ [[{ (September 2023) }{ Pn }][{ Pn }{ (September 2023) }][{ Ti }{ Ti }]] D
+/Ts EZ 0 get D
+/TU f D
+/Xp t D
+/AU f D
+/SN 0 D
+/Cf t D
+/Tp t D
+/Fe f D
+/TI 2 Ts mul D
+/Fm 14 D
+/xL 71 D
+/xR 71 D
+/yL 706 D
+/yR 706 D
+/Wl 471 F div D
+/Wr 471 F div D
+/hL 621 F div D
+/hR 621 F div D
+/FE {newpath Fm neg Fm M CP BB IW Fm add Fm L IW Fm add IL Fm add neg L CP BB
+ Fm neg IL Fm add neg L closepath} D
+/LA {PM 0 eq{/IW Wl D /IL hL D}{/IW Wr D /IL hR D}ie /W IW D /LL W D /LS W D
+ TU PM 0 eq and{IW 56 F div add SA{Sf div}if 0 translate}
+ {PM 0 eq{xL yL}{xR yR}ie translate F SA{Sf mul}if dup scale
+ CS CF FS Cf{CA CL get VC}if /Bb f D}ie 0 0 M
+ TF not Tc or {Cf{gsave SA{1 Sf div dup scale}if Cb VC FE fill grestore}if}if}D
+/Pi 0 Ts mul D
+/SG [0.8 1 1] D
+/Ab 15 D
+/J 0 D
+/Tc t D
+/NH 6 D
+/Nf f D
+/Pa f D
+/LH 1.2 D
+/XR f D
+/Xr {/pN E D ( [p ) WB pN WB (] )WB} D
+/Db [16#FF 16#FF 16#FF] D
+/Dt [16#00 16#00 16#00] D
+/eA f D
+/Fi f D
+/bT f D
+/Lc t D
+/Dl [16#00 16#00 16#00] D
+/LX f D
+/Br 0.25 D
+/IA ([IMAGE]) D
+/DS {/PF f D()WB NL NP()pop RC ZF} D
+/Gb f D
+/Mb t D
+/Hc [16#00 16#00 16#00] D
+/Bl 3 D
+/MI -15.6 D
+/DX (DRAFT) D
+/Di 0 D
+/Tt 113.385826771654 D
+/Th { (
+) 2 Al()BR (
+ ) 0 1 -1 H()4 FZ (C++/Parser Mapping) ES()EH (
+ ) 0 1 -1 H()4 FZ (Getting Started Guide) ES()EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+) Ea()BR (
+ ) 0 P (Copyright © 2005-2023 Code Synthesis.) EP (
+
+ ) 0 P (Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ ) R0 2 A (GNU Free
+ Documentation License, version 1.2) EA (; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ ) EP (
+
+ ) 0 P (This document is available in the following formats:
+ ) R1 2 A (XHTML) EA (,
+ ) R2 2 A (PDF) EA (, and
+ ) R3 2 A (PostScript) EA (.) EP()} D
+/tH {()0 1 -1 H (Table of Contents) EH()} D
+/FD 2 D
+/Dy 2 D
+/cD [16#F0 16#F0 16#F0] D
+/FW 0.6 D
+/FU [16#00 16#00 16#00] D
+/ET {/RM f D /A0 3 D /PN SN D /OU t D /Ou t D /W IW D /LL W D D1
+ Ms not TP and{Ip}if /TF f D} D
+
+%-- End of variable part --
+/MySymbol 10 dict dup begin
+ /FontType 3 D /FontMatrix [.001 0 0 .001 0 0 ] D /FontBBox [25 -10 600 600] D
+ /Encoding 256 array D 0 1 255{Encoding exch /.notdef put}for
+ Encoding (e) 0 get /euro put
+ /Metrics 2 dict D Metrics begin
+ /.notdef 0 D
+ /euro 651 D
+ end
+ /BBox 2 dict D BBox begin
+ /.notdef [0 0 0 0] D
+ /euro [25 -10 600 600] D
+ end
+ /CharacterDefs 2 dict D CharacterDefs begin
+ /.notdef {} D
+ /euro{newpath 114 600 moveto 631 600 lineto 464 200 lineto 573 200 lineto
+ 573 0 lineto -94 0 lineto 31 300 lineto -10 300 lineto closepath clip
+ 50 setlinewidth newpath 656 300 moveto 381 300 275 0 360 arc stroke
+ -19 350 moveto 600 0 rlineto -19 250 moveto 600 0 rlineto stroke}d
+ end
+ /BuildChar{0 begin
+ /char E D /fontdict E D /charname fontdict /Encoding get char get D
+ fontdict begin
+ Metrics charname get 0 BBox charname get aload pop setcachedevice
+ CharacterDefs charname get exec
+ end
+ end}D
+ /BuildChar load 0 3 dict put /UniqueID 1 D
+end
+definefont pop
+
+/Cd {aload length 2 idiv dup dict begin {D} repeat currentdict end} D
+/EX {EC cvx exec} D
+/DU {} d
+/BB {pop pop}d
+/ie {ifelse} d
+/E {exch} d
+/M {moveto} d
+/R {rmoveto} d
+/L {lineto} d
+/RL {rlineto} d
+/CP {currentpoint} d
+/SW {stringwidth} d
+/GI {getinterval} d
+/PI {putinterval} d
+/Sg {setgray} d
+/LW {setlinewidth} d
+/S {dup () ne OU and{0 Co R AT 3 eq LB and HF not and A1 0 ne A2 0 ne or and
+ {A2 0 32 A1 0 6 -1 roll awidthshow}{show}ie 0 Co neg R}{pop}ie
+ OU PH 3 eq or{/Ms t D}if} D
+/U {OU{gsave CP currentfont /FontInfo get /UnderlinePosition get
+ 0 E currentfont /FontMatrix get dtransform E pop add newpath M dup SW pop
+ CJ 0 RL stroke grestore}if} D
+/B {OU Br 0 gt and{CP Ts neg Ts .33 mul R gsave 0 Sg
+ CP newpath Ts Br mul 0 360 arc closepath UI 2 mod 0 eq{stroke}{fill}ie
+ grestore M CP E Ts Br 1 add mul sub E BB /Ms t D}if}D
+/NP {Ms TP not or PA and OU and{TP{OR}if f1{mF k2 /mF E D /YC 0 D}if
+ TP TU not PM 0 eq or and{showpage}if DU Ip TE not{LA}if 0.6 LW
+ /CI 0 D /TP t D /Hs f D /hl 6 D /Hv 6 D /HI hi D /Ms f D}if Bs XO BO M} D
+/Np {LE sub CP E pop gt PL 0 eq and{NP}if}D
+/Ip {/PN PN 1 add D /Pn RM{1}{4}ie PN Ns D /PM PN SN sub 2 mod D} D
+/GP {E dup 3 -1 roll get PN 1 add 2 mod get dup type /integertype eq
+ {get 0 get}{E pop}ie}d
+/Fc {dup 2 GP exec SW pop /S1 E D dup 1 GP exec SW pop /S2 E D 0 GP exec SW
+ pop /S3 E D S1 0 gt{S2 2 mul S1 add S3 2 mul S1 add 2 copy lt{E}if pop}{0}ie
+ S2 S3 add 2 copy lt{E}if pop IW .9 mul div dup 1 gt{1 E div}{pop 1}ie}D
+/OR {Df{Sd}if tp not{gsave SA{1 Sf div dup scale}if Fe{Cf{FU VC}if FW LW
+ 1 setlinejoin FE stroke}if /YO {60 F div dup 40 gt{pop 40}if}D /cs CS D
+ /cf CF D /CF 0 D /pf PF D /PF f D /Fn FN D /At AT D /AT 0 D /FN EF Hf 1 add
+ get D Fz Fs FS ZZ Fc Fz mul Fs FS EU Hf 1 add get dup type /arraytype eq
+ Cf and{VC}{pop 0 Sg}ie IW IL neg YO sub M ZZ 1 GP exec dup SW pop neg 0 R Sh
+ 0 IL neg YO sub M ZZ 0 GP exec Sh ZZ 2 GP exec dup SW pop IW E sub 2 div
+ IL neg YO sub M Sh Fz Fs FS NO{/AW IW Pn SW pop sub D AW 2 div IL neg YO sub
+ S1 0 gt S2 AW .45 mul gt or S3 AW .45 mul gt or{Fz 2 mul sub}if M Pn Sh}if
+ EU Hf get dup type /arraytype eq Cf and{VC}{pop 0 Sg}ie YY Fc /FN EF Hf get D
+ Hz mul HS FS IW YO M YY 1 GP exec dup SW pop neg 0 R Sh 0 YO M YY 0 GP exec Sh
+ YY 2 GP exec dup SW pop IW E sub 2 div YO M Sh /FN Fn D /AT At D t Pb XO SZ
+ SL get neg R /PF pf D grestore /CF 0 D cs cf FS}if}D
+/Sh {dup () ne{CP Hz 4 div sub BB show CP CS add BB}{pop}ie}D
+/Pb {/OU E D /Ou OU D /PB t D 0 0 M Ba{/Sa save D /BP t D /Fl t D RC /PL 0 D
+ /PH 0 D /W IW D /LE IL .7 mul D /EO 0 D SI ZF /YA 0 D /BO 0 D /C1 () D
+ BA 0 Ts neg R Bb{Xl Yl Xh Yh}if Bb CP Sa restore M
+ {/Yh E D /Xh E D /Yl E D /Xl E D}if /Fl t D}if
+ BL /OU t D /HM f D /Ou t D /PB f D} D
+/Bs {/BP Ba not D}D
+/reencodeISO {
+ dup dup findfont dup length dict begin{1 index /FID ne{D}{pop pop}ie}forall
+ /Encoding ISOLatin1Encoding D currentdict end definefont} D
+/ISOLatin1Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/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/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/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/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/yacute/thorn/ydieresis
+] D
+[128/backslash 129/parenleft 130/parenright 141/circumflex 142/tilde
+143/perthousand 144/dagger 145/daggerdbl 146/Ydieresis 147/scaron 148/Scaron
+149/oe 150/OE 151/guilsinglleft 152/guilsinglright 153/quotesinglbase
+154/quotedblbase 155/quotedblleft 156/quotedblright 157/endash 158/emdash
+159/trademark]
+aload length 2 idiv 1 1 3 -1 roll{pop ISOLatin1Encoding 3 1 roll put}for
+/colorimage where{pop}{
+ /colorimage {
+ pop pop /Pr E D {/Cv Pr D /Gr Cv length 3 idiv string D 0 1 Gr length 1 sub
+ {Gr E dup /i E 3 mul D Cv i get 0.299 mul Cv i 1 add get 0.587 mul add
+ Cv i 2 add get 0.114 mul add cvi put}for Gr} image} D
+}ie
+/pdfmark where{pop}{userdict /pdfmark /cleartomark load put}ie
+WF{FL{reencodeISO D}forall}{4 1 FL length 1 sub{FL E get reencodeISO D}for}ie
+/Symbol dup dup findfont dup length dict begin
+ {1 index /FID ne{D}{pop pop}ie}forall /Encoding [Encoding aload pop]
+ dup 128 /therefore put D currentdict end definefont D
+
+/SF {/CS E D SZ SL CS put FO SL FN put /YI CS LH neg mul D dup ST cvs ( ) join
+ CS ST cvs join C1 E join ( NF ) join /C1 E D CS NF /Wf WF FN 0 gt or D
+ /BW Wf{( ) SW pop}{0}ie D}D
+/NF {/cS E D /cF E D cF 0 ge{FL cF get}{cF -1 eq{/Symbol}{/MySymbol}ie}ie
+ findfont cS scalefont setfont} D
+/FS {CF or /CF E D FR SL CF put CF CF 0 ge{FN 4 mul add}if E SF} D
+/PC {SH /BP f D fin not GL not and{NL}if /HM t D /LL LS D} D
+/BS {/TX E D Wf{/fin f D /CW 0 D /LK 0 D /SC 0 D
+ /RT TX D {RT ( ) search{/NW E D pop /RT E D /WH NW SW pop D CW WH add LL gt
+ {TX SC LK SC sub 1 sub NN GI GL{SH cF cS OC
+ 2 copy cS ne E cF ne or{NF}{pop pop}ie}{PC /CW WH BW add D}ie
+ /SC LK D}
+ {GL{JC}if
+ /CW CW WH add BW add D /HM t D}ie /GL f D /Ph f D
+ /LK LK NW length 1 add add D}{pop exit}ie}loop
+ /fin t D TX SC LK SC sub GI SH RT () ne{GL not{CC}if}if
+ /LC TX length D /WH RT SW pop D CW WH add Hy{HC SW pop add}if LL gt
+ {RT GL{SH cF cS OC 2 copy cS ne E cF ne or{NF}{pop pop}ie
+ Hy{/Ph t D}if /LL LS D}{NL /LL LS D SH}ie}
+ {RT PC Hy{CC}if /Ph Ph Hy or D}ie RT () ne{/GL t D /HM t D}if}
+ {TX SW pop LL le{TX SH}{/NW () D 0 2 TX length 1 sub
+ {/CW E D TX 0 CW GI dup SW pop LL gt{pop NW SH /HM t D NL/LL W XO sub MR sub D
+ /CW CW 2 sub NN D /TX TX CW TX length CW sub GI D TX BS exit}
+ {/NW E D}ie}for}ie}ie /HM t D}D
+/CC {C0 length 0 gt{JC}if /C0 [C1 L1 YA YB Mf NS NB TB AF Bw] D
+ /C1 () D /L0 L1 D /YA 0 D /YB 0 D /Mf 0 D /NS 0 D /NB 0 D}D
+/JC {C0 aload length 0 gt{pop pop pop NB add /NB E D NS add /NS E D
+ dup Mf gt{/Mf E D}{pop}ie dup YB gt{/YB E D}{pop}ie
+ dup YA gt{/YA E D}{pop}ie pop C1 join /C1 E D /C0 [] D}if}D
+/OC {C0 length 0 gt{C1 L1 L0 sub YA YB Mf NS NB TB AF Bw GL C0 aload pop
+ /Bw E D /AF E D /TB E D /NB E D /NS E D /Mf E D /YB E D /YA E D /C0 [] D
+ /L1 E D /C1 E D Ph{HC SH}if NL /GL E D /Bw E D /AF E D /TB E D /NB E D /NS E D
+ /Mf E D /YB E D /YA E D /L1 E D /LL W L1 sub XO sub MR sub WH sub D /CW 0 D
+ C1 E join /C1 E D}if}D
+/BT {/LB t D dup length string copy RS dup dup () ne E ( ) ne and
+ {/CI 0 D /LS LL D /LL W L1 sub XO sub MR sub D BS}
+ {dup ( ) eq{/GL f D}if dup () eq L1 0 eq or{pop}{SH /BP f D /Ph f D}ie}ie
+ /LB f D} D
+/BL {CP E pop XO E M} D
+/NL {JC /GL f D /SK W XO sub MR sub L1 sub TB{Bw add}if D
+ /YA LF{Mf HM Fl not and PF or{LH mul}if}{0 /LF t D}ie YA 2 copy lt{E}if pop D
+ C1 () ne{/FB YB Mf SA{Sf mul}if 4 div 2 copy lt{E}if pop D}if Fl{/Ya YA D}if
+ CP E pop YA sub YB sub LE neg lt Fl not and PB not and{NP}if NT TL BL
+ OU PF not and PB or{/RE L1 TB{Bw sub}if
+ W XO sub MR sub div YA YB add LE BO add div 2 copy lt{E}if pop D
+ RE 1 gt{BL 1 RE div dup scale}if}if
+ AT 2 le{SK AT mul 2 div YA neg R}if
+ AT 3 eq{0 YA neg R TB{/NB NB 1 sub D /NS NS 1 sub D}if /NB NB 1 sub NN D
+ /A3 NS 6 mul NB add D NS NB add 0 eq
+ {/A1 0 D /A2 0 D}
+ {NS 0 eq{/A1 SK NB div dup J gt{pop 0}if D /A2 0 D}{J A3 mul SK lt
+ {/A1 J D /A2 SK J NB mul sub NS div dup Ab gt{/A1 0 D pop 0}if D}
+ {/A1 SK A3 div D /A2 A1 6 mul D}ie}ie}ie /A1 A1 NN D /A2 A2 NN D}if
+ AT 4 eq{0 YA neg R PH 2 le{PD 0 lt{/PD L1 D}if PD M1 gt{/M1 PD D}if
+ L1 PD sub M2 gt{/M2 L1 PD sub D}if}{DV ID 1 sub get 0 ge{Lo 0 R}if}ie}if
+ F0 cF ne Cs cS ne or{F0 Cs NF}if
+ /ms Ms D /Ms f D CP FB sub
+ C1 cvx exec XO EO sub L1 add TB{BW sub}if dup LM gt{/LM E D}{pop}ie
+ PH 0 eq PH 4 eq or Ms and{HF not{/PO t D /AH t D}if
+ BB CP YA add E AT 3 eq LB and{A1 sub}if TB{BW sub}if E BB}
+ {pop pop}ie Ms HM PH 3 eq and or{/BP f D /Fl f D}if
+ /Lo 0 D /L1 0 D /F0 cF D /Cs cS D BP not{0 YB NN neg R}if
+ OU f1 and mF not and{k2 /f1 f D}if
+ OU PF not and PB or{RE 1 gt{RE dup scale}if}if /Ms ms Ms or D
+ /C1 AF{(Cp )}{()}ie D /YA 0 D /YB 0 D BL
+ AT 4 eq LB not and PH 3 ge and
+ {ID DV length lt{DV ID get dup 0 ge{DO E sub /Lo E D /L1 Lo D}{pop}ie
+ /ID ID 1 add D}if}if /T t D CD{/LN LN 1 add D PD}if
+ /PD -1 D /NS 0 D /NB 0 D /TB f D /Ph f D /Mf 0 D /HM f D} D
+/RS {/TM E D /CN 0 D TM{10 eq{TM CN ( ) PI}if /CN CN 1 add D}forall
+ /CN 0 D /BK HM EN and{0}{1}ie D TM
+ {dup 32 ne{TM CN 3 2 roll put /CN CN 1 add D /BK 0 D}
+ {pop BK 0 eq{TM CN 32 put /CN CN 1 add D}if /BK 1 D}ie}forall
+ TM 0 CN GI dup dup () ne E ( ) ne and
+ {dup CN 1 sub get 32 eq{/EN f D}{/EN t D}ie}if} D
+/join {2 copy length E length add string dup 4 2 roll 2 index 0 3 index
+ PI E length E PI}d
+/WR {(\n) search{dup () ne BP not or
+ {Li 4 le CP E pop YI Li mul add LE add 0 lt and PL 0 eq and{NP}if
+ SH NL pop /Li Li 1 sub D WR}{pop pop WR}ie}{SH}ie /CI 0 D /BP f D} D
+/SH {dup dup () ne E ( ) ne and PF or CS Mf gt and{/Mf CS D}if
+ T not Wf and{( ) E join /T t D}if dup BP{/MF CS D}if
+ AT 3 eq{2 copy length dup 0 gt{/NB E NB add D
+ {( ) search{/NS NS 1 add D pop pop}{pop exit}ie}loop}{pop pop}ie}if
+ CD PD 0 lt and{dup DC search{SW pop /PD E L1 add D pop pop}{pop}ie}if
+ 0 Np dup SW pop L1 add /L1 E D dup () ne
+ {C1 (\() join E join (\)) join AU AF and UF or Wf and{( U ) join}if
+ sF{( s ) join}if ( S ) join
+ /C1 E D dup length 1 sub get 32 eq /TB E D /Bw BW D}{pop pop}ie} D
+/BG {AI LG BC add add 0 eq} D
+/ON {OU{Ty AR AI NN get dup 1 add Ln Ns Ty 2 mod 0 eq{(. )}{(\) )}ie join
+ dup SW pop neg 0 R CP E 0 lt{0 E M}{pop}ie CP BB show /Ms t D}if} D
+/Ln {AR AI 3 -1 roll put}D
+/SP {dup CI lt BP not and{dup CI sub 0 E R /CI E D}{pop}ie} D
+/BN {PF{WR /HM f D}{BT NL}ie} D
+/NN {dup 0 lt{pop 0}if} D
+/h {(h) HI ST cvs join cvx exec dup 1 get E Nf{0 get E join}{pop}ie} D
+/H {/fn FN D /Hi E 1 add D 1 sub /HL E D /H2 HL 2 add D /GS EZ H2 get D
+ E Tm H2 get GS mul BE dup 0 gt{1 sub}{pop EG H2 get dup 0 lt{pop AT}if}ie NA
+ WW Np /SL SL 1 add D /FN EF H2 get D GS Ey H2 get FS
+ EU H2 get Sc Hs not HL Hl lt and Hs HL hl lt and or Hi 0 eq or
+ {/HI Hi D /Hs t D /hl HL D /Hv HL D}if HL Hl lt{/hi Hi D}if
+ Nf HI 0 gt and{(h) Hi ST cvs join cvx exec 0 get WB}if
+ /HF t D /AH f D /PO f D} D
+/EH {Bm H2 get GS mul BE OA /SL SL 1 sub NN D /CF 0 D /FN fn D
+ SZ SL get FR SL get FS /HF f D /GS Ts D ()Ec} D
+/P {E PF{WR}{PO{EP}{BN}ie Ts 4 mul Np AE not{Tm 0 get Ts mul neg SP}if
+ dup 0 ge AH and{Pi Pd}if}ie 1 sub dup 0 lt{pop AV AL get}if /AT E D /PO t D} D
+/EP {PF{WR}{BN Ts 4 mul Np}ie AE not{Bm 0 get Ts mul neg SP}if
+ /AT AV AL get D /PO f D} D
+/BE {E PO{EP}{BN}ie Ts 4 mul Np neg SP} D
+/HR {/Aw W EO sub D /RW E dup 0 gt{Aw mul}{neg}ie dup Aw gt{pop Aw}if D /RZ E D
+ E BN Ts neg SP 1 sub 2 div Aw RW sub mul EO add CP E pop M PF{0 Ps neg R}if
+ 0 Np OU{gsave RZ LW Cf{Hc VC}{0 Sg}ie CP BB RW 0 RL CP BB stroke grestore}if
+ /CI 0 D /BP f D PF not{Ts neg SP}if /Ms t D} D
+/AD {I NL EG 14 get dup 0 lt{pop AT}if NA /AE t D Tm 14 get Ts mul neg SP
+ Cf{EU 14 get dup -1 eq{pop CA CL get}if Sc}if} D
+/DA {BN ()ES OA /AE f D ()Ec Bm 14 get Ts mul neg SP} D
+/PR {/MW E D /Li E D Tm 1 get Ps mul BE 0 NA /FN Fp D /PF t D SI /SL SL 1 add D
+ /CF 0 D Ps CS mul Ts div MW WC mul CS mul Ts div dup LL gt PL 0 eq and
+ {LL div div}{pop}ie Ey 1 get FS CP E pop LE add YI neg div cvi dup Li lt
+ AH and{4 lt YI Li mul 5 mul LE add 0 gt or PL 0 eq and{NP}if}{pop}ie
+ EU 1 get Sc /GS Ps D}D
+/RP {WR NL () /PF f D SI /FN 0 D ES Bm 1 get Ps mul neg SP OA /GS Ts D} D
+/SI {/XO Lm 15 get BC NN mul Lm 16 get AI UI sub NN mul add
+ Lm 17 get UI NN mul add Lm 20 get LG NN mul add Ts mul
+ PF{Lm 1 get Ps mul add}if EO add D
+ /MR Rm 15 get BC NN mul Rm 16 get AI UI sub NN mul add
+ Rm 17 get UI NN mul add Rm 20 get LG NN mul add Ts mul
+ PF{Rm 1 get Ps mul add}if D /LL W XO sub MR sub D} D
+/DT {/cC E D BN /LG LG 1 sub D SI /LG LG 1 add D WW 2 div Np BL} D
+/DD {WB Cc 0 eq cC 0 eq and L1 0 eq or Lm 20 get Ts mul L1 sub TB{BW add}if
+ Ts 2 div lt or NL /LF E D SI BL /cC 0 D} D
+/DL {Dc LG Cc put /Cc E D BG{Tm 18 get Ts mul BE}{BN}ie /LG LG 1 add D BL} D
+/LD {BN LG 0 gt{/LG LG 1 sub D}if /Cc Dc LG get D SI
+ BG{()Bm 18 get Ts mul BE}if BL} D
+/UL {BG{Tm 17 get Ts mul BE}{BN}ie NR AI NN 0 put /UI UI 1 add D
+ /AI AI 1 add D SI BL} D
+/LU {BN /UI UI 1 sub D /AI AI 1 sub D SI BG{()Bm 17 get Ts mul BE}if BL} D
+/OL {E BG{Tm 16 get Ts mul BE}{BN}ie TR AI NN Ty put /Ty E D NR AI NN 1 put
+ /AI AI 1 add D SI BL 1 Ln} D
+/LO {BN /AI AI 1 sub D /Ty TR AI get D SI BG{()Bm 16 get Ts mul BE}if BL} D
+/LI {E BN -1 SP /BP f D /CI 0 D 0 Np NR AI 1 sub NN get 1 eq
+ {dup dup 0 gt E 4 le and{/Ty E D}{pop}ie
+ /L1 L1 Ty AR AI NN get Ns SW pop XO sub dup 0 lt{pop 0}if add D ( ON )}
+ {pop ( B )}ie C1 E join /C1 E D CS Mf gt{/Mf CS D}if BL} D
+/BQ {Tm 15 get Ts mul BE /BC BC 1 add D SI BL} D
+/QB {Bm 15 get Ts mul BE /BC BC 1 sub D SI BL} D
+/Al {E EP 1 sub dup 0 lt{pop AV AL get}if NA} D
+/Ea {EP OA} D
+/WB {PF{WR}{BT}ie} D
+/F1 {WB /FN 0 D CS 0 FS} D
+/F2 {WB /FN WI D CS 0 FS} D
+/HY {/Hy t D WB /Hy f D} D
+/YH {WB} D
+/A {/LT E D LT 1 eq{/RN E D}if /Lh E D WB /C1 C1 ( Cp ) join D
+ Lc AF not and{Cl Sc}if /AF t D} D
+/EA {Lc AF and{Ec}{WB}ie TL Pa AF and Lh 0 ne and
+ {( \() Lh join (\)) join /AF f D WB}if /AF f D} D
+/TL {C1 ( Tl ) apa /C1 E D} d
+/apa {AF OU and Lh 0 ne LT 1 eq or and{LT 1 eq{RN ( /) E ST cvs join}
+ {(\() Lh join (\)) join}ie E join join}{pop}ie} d
+/Cp {/Xc CP /Yc E D D} D
+/SS {Cf{dup 0 ge{EU E get dup -1 eq{pop CA CL get}if}{pop CA CL get}ie Sc}
+ {pop}ie SZ SL get /SL SL 1 add D} D
+/I {WB 8 SS 1 FS} D
+/EM {WB 8 SS /CF CF 1 xor D 0 FS} D
+/BD {WB 9 SS 2 FS} D
+/TT {WB 10 SS /FN Fp D 0 FS} D
+/KB {WB 11 SS /FN Fp D 2 FS} D
+/CT {WB 12 SS 1 FS} D
+/SM {WB 13 SS /FN Fp D 0 FS} D
+/Q {/QL QL 1 add D QO QL 2 mod get La get join WB} D
+/EQ {QC QL 2 mod get La get join WB /QL QL 1 sub D} D
+/RO {WB -1 SS /CF 0 D 0 FS} D
+/SY {WB -1 SS -1 FS} D
+/MY {WB -1 SS -2 FS} D
+/ES {WB /SL SL 1 sub NN D /CF 0 D /FN FO SL get D SZ SL get FR SL get FS ()Ec}D
+/FZ {3 sub 1.2 E exp GS mul E WB TL /C1 C1 ( Cp ) join D /SL SL 1 add D 0 FS} D
+/Ef {WB TL ()ES /C1 C1 ( Cp ) join D} D
+/BZ {dup /Bf E D FZ}D
+/Sc {dup -1 ne Cf and{/CL CL 1 add D dup 0 eq{pop [0 0 0]}if
+ dup CA E CL E put VS ( VC ) join C1 E join /C1 E D}{pop}ie} D
+/Ec {WB Cf{/CL CL 1 sub NN D CA CL get VS ( VC ) join C1 E join /C1 E D}if} D
+/VS {dup type /arraytype eq{([) E {ST cvs join ( ) join}forall (]) join}if} D
+/VC {{255 div}forall setrgbcolor} D
+/Sl {dup type /integertype ne{Ds}if /La E D WB}d
+/UN {WB /UF t D} D
+/NU {WB /UF f D} D
+/SE {WB /sF t D} D
+/XE {WB /sF f D} D
+/sM {/C1 C1 ( k1 ) join D}d
+/eM {/C1 C1 ( k2 ) join D}d
+/k1 {/YC CP E pop Ts add D /mF t D /f1 t D}d
+/k2 {gsave 3 LW -9 CP E pop Ts 0.2 mul sub M -9 YC L stroke grestore /mF f D}d
+/Ac {/AC E D WB}d
+/Ca {eA{( \()join AC join(\) )join}if WB}d
+/s {OU{gsave 0 CS .25 mul R dup SW pop CJ 0 RL stroke grestore}if}D
+/CJ {AT 3 eq LB and{E dup dup length 1 sub A1 mul E
+ {( ) search{pop pop E A2 add E}{pop exit}ie}loop 3 -1 roll add
+ W CP pop sub 2 copy gt{E}if pop}if}D
+/So {/Co E D} D
+/SO {C1 Yo ST cvs join ( So ) join /C1 E D (j) SW pop 2 div Pd} D
+/Se {E WB CS E div Pd}D
+/Pd {dup type /stringtype eq{SW pop}if dup /L1 E L1 add D
+ ST cvs ( 0 R ) join C1 E join /C1 E D} D
+/Sp {0.35 CO} D
+/Sb {-0.2 CO} D
+/CO {OV Io Yo put /Yo E CS mul Yo add D /Io Io 1 add D -1.5 Io mul 3 add FZ SO
+ CS Yo add dup YA gt{/YA E D}{pop}ie
+ Yo neg dup YB gt{/YB E D}{pop}ie} D
+/Es {ES /Io Io 1 sub NN D /Yo OV Io get D SO} D
+/SB {/N2 0 D 0 1 NI{/N E D{IX N2 get 0 lt{/N2 N2 1 add D}{exit}ie}loop
+ /K WS N get FC N get mul D /NY AY N2 get D /BV NY array D
+ 0 1 NY 1 sub{/TM K string D currentfile TM readhexstring pop pop BV E TM put}
+ for BM N BV put /N2 N2 1 add D}for} D
+/IC [{/MA E D /MB 0 D}{2 div /MA E D /MB MA D}{/MB E CS sub D /MA CS D}
+ {pop /MA YS AB mul D /MB 1 AB sub YS mul D}{pop /MA 0 D /MB 0 D}] D
+/IP {BV N get /N N 1 add D} D
+/II {/K E D IX K get 0 lt{/EC E D}if /TY E D
+ TY 4 eq{/Y E D /X E D}if TY 3 eq{/AB E D}if
+ /XW AX K get D /YW AY K get D /IS SG IT K get get D /XS XW IS mul D
+ /YS YW IS mul D YS IC TY get exec /MA MA Fl not{3 add}if D} D
+/IM {II /ty TY D /xs XS D /ys YS D /ya YA D /yb YB D /ma MA D /mb MB D /k K D
+ /ec EC D /BP f D /CI 0 D WB TL L1 xs add dup XO add MR add W gt
+ {pop /ma ma Fl{3 add}if D NL /YA ma D /YB mb D /YS ys D /L1 xs D}
+ {/L1 E D ma YA gt{/YA ma D}if mb YB gt{/YB mb D}if}ie /TB f D
+ OU{CP E pop YS sub LE neg lt Fl not and PB not and{NP /YA ma D /YB mb D}if
+ /BP f D ty ST cvs ( ) join IX k get 0 lt{(\() join ec join (\) ) join}if
+ k ST cvs join ty 3 eq{AB ST cvs ( ) join E join}if
+ ty 4 eq{X ST cvs ( ) join Y ST cvs join ( ) join E join}if C1 E join
+ ( DI ) join FP 2 eq FP 1 eq AF and or{( FM ) join}if
+ ( Il Cp ) apa /C1 E D /EN f D}if /HM t D /T f D} D
+/DI {II /Xc CP /Yc E D D /YN YW neg D /HM t D /CI 0 D /K2 IX K get D gsave
+ TY 4 eq{OX X IS mul add OY FY add YS sub Y IS mul sub}
+ {/FY YS D CP MB sub 2 copy /OY E D /OX E D}ie
+ translate K2 0 ge{/DP AZ K2 get D /BV BM K2 get D XS YS scale /N 0 D XW YW DP
+ [XW 0 0 YN 0 YW] {IP} FC K2 get 1 eq{image}{f 3 colorimage}ie}
+ {EX}ie grestore XS 0 R /Ms t D} D
+/FM {gsave 0 Sg CP MB sub translate XS neg 0 M 0 YS RL XS 0 RL 0 YS neg RL
+ XS neg 0 RL stroke grestore} D
+/NA {/AT E D /AL AL 1 add D AV AL AT put} D
+/OA {AL 0 gt{/AL AL 1 sub D /AT AV AL get D}if} D
+/D1 {/BR {CP E pop E BN Mb{CP E pop eq{0 YI R}if}{pop}ie} D
+ /Sn {OU{C1 E ST cvs join ( Ld ) join /C1 E D}{pop}ie} D} D
+/D1 {/BR {BN} D /Sn {OU {C1 E ST cvs join ( Ld ) join /C1 E D} {pop} ie} D} D
+/TC {/TF t D /ML 0 D HN{SW pop dup ML gt{/ML E D}{pop}ie}forall NP /RM RM not D
+ RC /OU Tc D Ep /PN 0 D Ms not TP and{Ip}if /W IW ML sub Ts sub D
+ /A0 0 D TH{/BR {( ) join BT} D /Sn {pop} D /Au () D}if} D
+/TN {0 eq{E EA PF HF or not XR and{HN E get Xr}{pop}ie}
+ {OU{Tn 0 ge{() BN}if /Tn E D}{pop}ie WB}ie} D
+/NT {OU LB not and Tn 0 ge and{PL 0 eq{Ms not{CS CF FS}if CP dup
+ /y E YA sub D W 9 sub CS -1.8 mul XO L1 add 2 add{y M (.) show}for
+ HN Tn get dup SW pop IW E sub y M show CP BB M}if /Tn -1 D}if} D
+/Ld {/DN E D HN DN Pn put [/View [/XYZ -4 Fl{PS}{CP YA add US E pop}ie null]
+ /Dest DN ST cvs cvn /DEST pdfmark} D
+/C {ND 1 eq{1 sub}if TI mul /XO E D NL Nf not{pop()}if 0 3 -1 roll 1 A} D
+/OP {BP not{NP}if PN 2 mod 0 eq{/Ms t D NP}if}D
+/Ep {Xp PN 2 mod 0 eq and OU and{/Pn (-) D showpage /PM 1 D LA}if}D
+/Dg [73 86 88 76 67 68 77] D
+/Rd [0 [1 1 0][2 1 0][3 1 0][2 1 1][1 1 1][2 2 1][3 3 1][4 4 1][2 1 2]] D
+/Ns {/m E D /c E 32 mul D /j m 1000 idiv D /p j 12 add string D
+ c 96 le m 0 gt and{c 32 le {/i 0 D /d 77 D /l 100 D /m m j 1000 mul sub D
+ j -1 1 {pop p i d c add put /i i 1 add D}for
+ 4 -2 0 {/j E D /n m l idiv D /m m n l mul sub D /d Dg j get D
+ n 0 gt {/x Rd n get D x 0 get -1 1 {pop p i d c add put /i i 1 add D}for
+ p i x 1 get sub Dg x 2 get j add get c add put}if /l l 10 idiv D
+ }for p 0 i GI}
+ {/i ST length 1 sub D m {1 sub dup 0 ge{dup 26 mod c add 1 add
+ ST i 3 -1 roll put 26 idiv dup 0 eq{pop exit}if}if /i i 1 sub D}loop
+ ST i ST length i sub GI}ie}
+ {m p cvs}ie} D
+/US {matrix currentmatrix matrix defaultmatrix matrix invertmatrix
+ matrix concatmatrix transform} D
+/GB {Gb{US}if}D
+/Tl {/Rn E D Xc CP pop ne{
+ [/Rect [Xc 1 sub Yc cS 0.25 mul sub GB CP E 1 add E cS 0.85 mul add GB]
+ /Subtype /Link /Border [0 0 Cf Lc and LX and AU or{0}{1}ie] Rn type
+ /nametype eq {/Dest Rn}{/Action [/Subtype /URI /URI Rn] Cd}ie
+ /ANN pdfmark}if} D
+/Il {/Rn E D [/Rect [Xc Yc GB Xc XS add Yc YS add GB] /Subtype /Link
+ /Border [0 0 0] Rn type /nametype eq{/Dest Rn}
+ {/Action [/Subtype /URI /URI Rn] Cd}ie /ANN pdfmark} D
+/XP {[{/Z Bz 2 div D Z 0 R Z Z RL Z neg Z RL Z neg Z neg RL Z Z neg RL
+ Fi cH 1 eq and{fill}if} {Bz 0 RL 0 Bz RL Bz neg 0 RL 0 Bz neg RL
+ Fi cH 1 eq and{fill}if} {0 -5 R Bz 0 RL 0 21 RL Bz neg 0 RL 0 -21 RL}]} D
+/MS {/Sm E D WB}D
+/O {BN()0 Sm BX} D
+/BX {/Bt E D Bt 2 lt{/Ch E D CS 0.8 mul}{11 mul}ie W XO sub MR sub
+ 2 copy gt{E}if pop /HZ E D Bt 2 eq{Fi not{pop()}if ( )E join /Ft E D TT
+ /PF t D /MW 1 D /Li 1 D /Fw Ft SW pop D Fw HZ gt{/HZ Fw 8 add D}if
+ HZ ST cvs( )join}{WB Ch ST cvs( )join}ie L1 HZ add XO add MR add W gt{NL}if
+ Bt 2 eq{Ft ES Fw neg HM{CS sub}if Pd}if Bt ST cvs join( Bx )join
+ Bt 2 eq HM and{CS Pd}if C1 E join /C1 E D /L1 L1 HZ add D /T f D
+ ( ) Pd /PF f D Bt 2 lt{YA CS .8 mul lt{/YA CS .8 mul D}if}
+ {YB 5 lt{/YB 5 D}if YA 21 lt{/YA 21 D}if}ie /CI 0 D} D
+/Bx {dup 2 eq{E /Bz E D}{E /cH E D /Bz CS .8 mul D}ie
+ OU {gsave 0 Sg XP E get exec stroke grestore}{pop}ie Bz 0 R /Ms t D}D
+/SD {FD 4 mul Dy add DZ NF newpath 0 0 M DX t charpath pathbbox
+ 3 -1 roll sub /DY E D E dup /X1 E D sub WM mul WX DY mul add WM DG mul E div
+ /DF E D /DR WX DF mul DY mul WM div 2 div D} d
+/Sd {gsave 0 IL Di mul neg translate IL IW atan Di 0 eq{neg}if rotate
+ FD 4 mul Dy add DZ NF DR X1 sub DY 2 div neg M cD VC DX show grestore} d
+/Pt {/tp t D Tp{NP /Pn (TP) D 0 Tt neg R Th BN NP Ep ET RC ZF}if /tp f D} D
+/RC {/AI 0 D /LG 0 D /BC 0 D /UI 0 D /PF f D /Cc 0 D /cC 0 D /Dc 10 array D
+ /NR [0 1 9{pop 0}for] D /La Ds D /AR 10 array D /TR 10 array D /AV 30 array D
+ SI /AL -1 D /AT A0 D AT NA /OV 9 array D /Yo 0 D /Co 0 D /Io 0 D /Hy f D
+ /Ph f D /CL -1 D Ct Sc}D
+/ZF {/FR [0 1 30{pop 0}for] D /SZ [0 1 30{pop 0}for] D /FO [0 1 30{pop 0}for] D
+ /SL 0 D /CF 0 D /FN 0 D 0 Ts SF}D
+/QO [[(\233)(\253)(\253\240)(\273)(\234)(\232)][(`)(\253)(\253\240)(\273)(')(\231)]] D
+/QC [[(\234)(\273)(\240\273)(\253)(\234)(\233)][(')(\273)(\240\273)(\253)(')(`)]] D
+/Hf EF length 2 sub D
+/Hz EZ Hf get D
+/HS Ey Hf get D
+/Fz EZ Hf 1 add get D
+/Fs Ey Hf 1 add get D
+/LE IL D
+/Ps EZ 1 get D
+/Fp EF 1 get D
+/XO 0 D
+/YI 0 D
+/CI 0 D
+/FP 0 D
+/WW Ts 7 mul D
+/Mf 0 D
+/YA 0 D
+/YB 0 D
+/Cs Ts D
+/GS Ts D
+/F0 0 D
+/NS 0 D
+/NB 0 D
+/N 0 D
+/C0 [] D
+/C1 () D
+/Lo 0 D
+/L1 0 D
+/LM 0 D
+/PH 0 D
+/EC 0 D
+/Lh 0 D
+/LT 0 D
+/CH 1 string D
+/ST 16 string D
+/CA 9 array D
+/HC (\255) D
+/HM f D
+/PF f D
+/EN f D
+/TB f D
+/UF f D
+/sF f D
+/AE f D
+/AF f D
+/BP t D
+/CD f D
+/PA t D
+/GL f D
+/T t D
+/HF f D
+/AH f D
+/SA f D
+/PB f D
+/f1 f D
+/mF f D
+/OX 0 D
+/OY 0 D
+/FY 0 D
+/EO 0 D
+/FB 0 D
+/PL 0 D
+/Bw 0 D
+/PD -1 D
+/TP f D
+/tp f D
+/TH t D
+/Ty 4 D
+/Tn -1 D
+/Fl t D
+/LB t D
+/PM 1 D
+/Ms f D
+/Ba f D
+/Bb f D
+/Hl 3 D
+/hl 6 D
+/Hv 6 D
+/Hs f D
+/HI 0 D
+/hi 0 D
+/PO t D
+/TE f D
+/LF t D
+/BO 0 D
+/Sm 1 D
+/Bf 3 D
+/A1 0 D
+/A2 0 D
+/Ds 0 D
+/QL -1 D
+/Cb Db D
+/Ct Dt D
+/Cl Dl D
+/AX [541] D
+/AY [291] D
+/IX [0] D
+/IT [0] D
+/AZ [8] D
+/WS [541] D
+/FC [3] D
+/NI 0 D
+/BM 1 array D
+SB
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffcfdffe1edfb
+c9e0f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c7def8d9e9fa
+f8fbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffe4effc
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8dceafbffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d2e4fac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c7def8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf88495a77482928798abc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88b9caf
+b5cbe4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf894a6baacc1d8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+8393a57482928a9baec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88ea0b3626e7c2e343ac5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7a898fa1b4c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+3d454d9fb3c9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8525c688b9cafc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf88d9eb15f6a77333a41c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c4dcf7afc4dcb9d0e9c5ddf8c5ddf8c5ddf896a9bd2e343ac5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b3c9e1b3c9e1c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8bdd4eeb0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b2c8e0bad0ea
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b9d0e9b4c9e2c5ddf8c5ddf8c4dcf7bed6f047505a768595bed6f0
+c1d8f3c5ddf8c5ddf8c3dbf6c1d8f3c5ddf8b2c8e0bfd6f1c5ddf8c3dbf6
+bed6f0bed6f0c4dcf7c5ddf8c5ddf8c5ddf8bfd6f1c5ddf8b6cce5c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b7cde6c4dcf7c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7c0d7f2c4dcf7b7cde6c5ddf8
+c5ddf8c5ddf8c4dcf7bed6f0bed6f0c3dbf6c5ddf8c5ddf8c3dbf6c1d9f4
+b4c9e2c5ddf8b8cfe8c4dcf7c5ddf8c3dbf6c1d8f3c1d9f4b9d0e9c5ddf8
+c5ddf8c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf895a7bb131518252a2f2024288494a6c5ddf8c5ddf896a9bd2e343a
+c5ddf8c5ddf8c5ddf8c5ddf82d33392d3339282d3325292eaec3dbc5ddf8
+c5ddf847505a2f343b373e463d454dc5ddf8c5ddf8a9bdd4282d33373e46
+282d337d8d9ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c2daf5363c44323940323940525c68c5ddf8a5b9d030363d1214171e2125
+30363d687583c5ddf8c5ddf87b8a9b4149522c3137212529262b30c5ddf8
+96a9bd30363d0a0b0c9aadc2c5ddf8c5ddf8c5ddf8050606454e57272c31
+22272bafc4dcc5ddf8b7cee7464e5821252925292e181b1fa6bbd2c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a5b9d014171a252a2f22272b
+48515bb8cfe8c5ddf8a8bcd430363d1012148393a5c5ddf8c5ddf87f8fa0
+1d202420242832383f292e34353b43c5ddf88b9cb021262a1e2125212529
+545f6ac1d9f4c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c0d7f214171a8797aac5ddf8c4dcf7b3c9e1c5ddf8c5ddf896a9bd
+2e343ac5ddf8c5ddf8c5ddf8c5ddf8b7cde6c5ddf8c5ddf85a65715c6874
+c5ddf8a6bbd21e2125c5ddf8c5ddf8bfd6f1c5ddf8c5ddf85c6874687583
+c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf88d9eb1373e46c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8c5ddf84a535d
+7a899ac5ddf8c5ddf8c5ddf8c5ddf87b8a9b0303039cafc4c5ddf8bcd3ed
+c5ddf8c5ddf8c5ddf82a2f359aadc2c5ddf8c5ddf8c5ddf80000008b9cb0
+c5ddf8505a65778696c5ddf8798898454e57c4dcf7a0b4ca000000a6bbd2
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a5b9d0000000a0b4ca
+c5ddf847505a7d8c9dc5ddf8c5ddf8c5ddf84149528393a5c5ddf8c5ddf8
+7f8fa049525ca2b6cc0b0d0ec5ddf8212529c0d7f28b9cb0040505b5cbe4
+c1d9f430363d96a9bdc5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8a4b8cf0d0f11c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+96a9bd2e343ac5ddf8c5ddf8c5ddf8c5ddf890a2b5505a652b30361b1e22
+4a535dc5ddf8c0d7f21e22263d454d768494bcd3edc5ddf8c5ddf88c9db1
+171a1e535d6992a3b7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8b2c8e0171a1e454e577e8e9fc1d8f3c5ddf8c5ddf8c5ddf8
+4a535d7a899ac5ddf8c5ddf8c5ddf8c5ddf87b8a9b2b3036c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf82a2f359aadc2c5ddf8c5ddf8c5ddf8020202
+bfd6f1c5ddf8738190525c68c5ddf8424a537a899ac5ddf8c5ddf8101315
+a6bbd2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a5b9d00d0e10
+c5ddf8c5ddf879889847505ac5ddf8c5ddf8c5ddf84149528393a5c5ddf8
+c5ddf87f8fa05b6672b4c9e21d2024c5ddf82c3238abc0d78b9cb0252a2f
+c5ddf8c5ddf85f6a77626e7bc5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8a4b8cf0d0f11c2daf5c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf897a9be2d3339c5ddf8c5ddf8c5ddf8b9d0e916191ca0b4cac4dcf7
+69768547505ac5ddf8c5ddf8c2daf58a9bae1e222621262ac5ddf8c5ddf8
+c5ddf8b4cae36774820506066c7988c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bfd6f17f8fa01416193b424ac5ddf8c5ddf8
+c5ddf84a535d7a899ac5ddf8c5ddf8c5ddf8c5ddf87b8a9b49525cc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82a2f359aadc2c5ddf8c5ddf8c5ddf8
+060607c5ddf8c5ddf8748292505a65c5ddf849525c758393c5ddf8c4dcf7
+0c0d0fa6bbd2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a5b9d0
+0c0d0fc5ddf8c5ddf8788797454e57c5ddf8c5ddf8c5ddf84149528393a5
+c5ddf8c5ddf87f8fa05e6976b7cde6202428c5ddf82f343ba8bcd48b9cb0
+252a2fc5ddf8c5ddf85f6a775f6a77c5ddf8c5ddf892a4b8323940c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c0d7f214171a8797aac5ddf8c4dcf7b4c9e2
+c5ddf8c5ddf8bad1eb131518bdd4eec5ddf8c5ddf89cafc4272c31c5ddf8
+bed6f02a2f3547505ac5ddf8bad1ebc1d8f3c5ddf8b4c9e20e1012c0d7f2
+c5ddf8b6cce5c5ddf8c5ddf86c7988505a65c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b7cee7c3dbf6c5ddf89cafc51f2327c5ddf8
+c5ddf8c5ddf86673815f6b78c5ddf8c5ddf8c5ddf8c5ddf87b8a9b49525c
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82a2f359aadc2c5ddf8c5ddf8
+c5ddf8060607c5ddf8c5ddf8748292505a65c5ddf8808fa1394047bed6f0
+90a2b5000000a6bbd2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+a5b9d00000009db0c6c4dcf7454e577b8a9bc5ddf8c5ddf8c5ddf8414952
+8393a5c5ddf8c5ddf87f8fa05e6976b7cde6202428c5ddf82f343ba8bcd4
+8b9cb0030404b2c8e0c1d8f32f343b95a7bbc5ddf8c5ddf8b7cee715181b
+bed6f0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a8bc171a1d262b3022272b
+8495a7c5ddf8c5ddf8c5ddf86976851d202431373ec5ddf8c5ddf83d444c
+2a2f351b1e2247505a47505ac5ddf899acc1181b1f394047282d326d7b8a
+c5ddf8c5ddf856616c24282d363d452b3036a5b9d0c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88393a51b1e22394047272c318191a3
+c5ddf8c5ddf8c5ddf8a9bed5323940272c3164707ec5ddf8c5ddf87b8a9b
+49525cc5ddf8c5ddf8c5ddf8c5ddf856616c2a2f35090a0b2125292a2f35
+a8bcd4c5ddf8060607c5ddf8c5ddf8748292505a65c5ddf8bdd4ee5f6a77
+1d20243e464e1d2024abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8a5b9d014171a22272b21252948515bb8cfe8c5ddf86875832a2f35
+0d0f111c20232a2f3596a9bd7f8fa05e6976b7cde6202428c5ddf82f343b
+a8bcd48b9cb021262a1b1e22202428545f6ac1d8f3c5ddf8c5ddf8c5ddf8
+6572801c2023353b43c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c6de
+bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b7cde6c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3adc3dac3dbf6
+c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9b4c9e2c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed6f0aec3dbc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8bcd3ed1b1f23c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8a5b9d01f2327c4dcf7b7cde6c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf88b9cb0394047c1d9f4b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+b4c9e240485165717f31373e697584c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8a5b9d01f2327c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf88b9cb0394047c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c4dcf79cafc48494a6b6cce5c5ddf8c5ddf87e8e9f6e7b8b6e7b8b
+6e7b8b6e7b8b8a9baec5ddf8bcd3ed96a9bdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b4cae39eb1c7c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c4dcf78494a658626eb4c9e2c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf89eb1c721262a97a9bec1d8f3c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86f7c8c55606bc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86875835b6672c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee3940477a8899c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4c9e2131518212529bcd3ed
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c3dbf63f474f
+738190c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+6976855a6571c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8707e8d545e6ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8a2b6cc1d20248b9cafbfd6f1c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf892a3b7697685b7cde6c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff9fcfee6f0fce2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
+e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe8f2fcfdfeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffbfcfed6e7fac6ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8cae0f9e6f0fc
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffe1eefbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8f3f8feffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c0d7f29fb2c8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+95a8bc47505ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffcfdffc9dff8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ddebfbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db16191cc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b0c6de8fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8cae0f9ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b6cce57482924b545f636f7dbad0eac5ddf87a899a515b670a0b0c
+5b67735b6773b7cde6c5ddf8c5ddf86a7786a8bcd465717f505a65a6bbd2
+c5ddf8707e8d5b6773798898c5ddf8c5ddf8c5ddf891a2b690a2b5697685
+5c6874acc1d8c5ddf8c5ddf8c1d9f478879758626e92a4b88494a6c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf84e57625e69769db0c67a899ab0c6dec5ddf8a2b6cc8292a4
+10131593a5b993a5b9bed6f0c5ddf8c5ddf81a1d2132383f6673818191a3
+93a5b9c5ddf89db0c66b7887363c44c5ddf8c5ddf8c5ddf8636f7d191c20
+7988986572802c3238c5ddf8c5ddf83940474e58637f8fa01c2023434b54
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf830363d707e8dbed5efc5ddf8c5ddf8c5ddf8c5ddf8
+aec3db16191cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf81a1d216f7c8cc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf88ea0b3363c44c5ddf8c5ddf8c5ddf8636f7d
+48515bc5ddf8c2daf50b0d0ebdd4eebcd3ed0a0c0dc0d7f2c5ddf85f6a77
+434b54c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8a3b7ce434c550c0d0f454e57b9d0e9c5ddf8
+c5ddf8aec3db16191cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf81a1d21a3b7ce
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88ea0b3363c44c5ddf8c5ddf8c5ddf8
+636f7d677482c5ddf8c5ddf8131518b1c7df9cafc41e2226c5ddf8c5ddf8
+7d8c9d434b54c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd22024287c8b9c
+c5ddf8c5ddf8b4cae3101315c5ddf8c5ddf8c5ddf8c5ddf8c5ddf81a1d21
+aabfd6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88ea0b3363c44c5ddf8c5ddf8
+c5ddf8636f7d677482c5ddf8c5ddf8131518b1c7dfc0d7f20b0d0ebed5ef
+c5ddf8596470434b54c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8616d7a92a3b790a2b51e2226
+a6bbd2c5ddf8c5ddf8c5ddf823272c6774828d9eb1bed5efc5ddf8c5ddf8
+1a1d21aabfd6c5ddf8c5ddf8c5ddf8b9d0e98d9eb1667381262b308d9eb1
+9fb2c8c5ddf8636f7d677482c5ddf8c5ddf8131518b1c7dfc5ddf84a535d
+3941486c7988202428434b54c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f4f59645b6672
+95a8bcc5ddf8c5ddf8c5ddf8c5ddf8b1c7df7a8899626e7bb7cee7c5ddf8
+c5ddf8707d8db7cee7c5ddf8c5ddf8c5ddf8b0c5dd626e7b626e7b626e7b
+626e7b8190a2c5ddf894a6ba96a9bdc5ddf8c5ddf86c7988bbd2ecc5ddf8
+c5ddf891a2b6738190707d8d5a6571c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8a3b7cebdd4eeb4c9e2343a4296a9bdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf87a899a282d33363c447d8d9ec3dbf6c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+b4cae3a6bad1a6bad1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bbd2ecb6cce5
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4c9e2a6bad1a6bbd2c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3b0c6dec5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b8cfe8c2daf5c5ddf8c5ddf8c4dcf7b6cce5
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf88595a84f5964010101c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8758393
+4f5964c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88292a44f5964000000
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8748292b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8697584c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bad11e2226c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee24282dc1d8f3c5ddf8c5ddf8c5ddf8
+2b3036b1c7dfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8030404c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+bbd2ecb6cce5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7
+000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8000000c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3b0c6de
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c798865717fc5ddf8c5ddf8c5ddf8
+c5ddf87a899a57616dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c0d7f25b677321262a
+202428768494c5ddf8c5ddf8c5ddf8030404c1d8f3c5ddf8c5ddf8c5ddf8
+7a899a262b301e21253d454dadc2d9c5ddf8c5ddf893a5b93c434b23272c
+373e46bfd6f1c5ddf8c5ddf86673812c323824282d6d7b8ac5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89cafc44c5560444d562c3137
+8494a6c5ddf8c5ddf8bed5ef59647021262a4b545fa3b7cec5ddf8c5ddf8
+b3c9e13d444c8190a2262b302a2f35b2c8e0c5ddf875839330363d23272c
+5b6773c5ddf8c5ddf8b1c7df3e464e1c20233d444cb0c5ddc5ddf8b3c9e1
+424a53626e7b22272b5c6874c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf839414866738123272c606c79b7cee7c5ddf8c5ddf8
+343a422a2f35697685c5ddf8c5ddf8b6cce53d444c2c32384d5661434c55
+3e464ebad1ebc0d7f22f353c626e7b24282d6d7b8abed5efc5ddf8c5ddf8
+c4dcf7000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88fa1b44b555f444d568190a2c4dcf7
+c5ddf8c5ddf8c5ddf8c5ddf8c1d9f42d333964707e24282d6c7988bdd4ee
+c5ddf8c4dcf7657280212529272c318696a9c5ddf8c5ddf8b7cee7505a65
+262b30292e3492a4b8c5ddf87d8d9e2a2f3505060625292e2a2f358a9bae
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8acc1d849525c
+25292e2d3339a3b7cec5ddf86976852a2f350000002a2f352a2f359eb1c7
+c5ddf8c5ddf8515b668696a93941481b1f238190a2c5ddf85b66722a2f35
+434b54c5ddf8c5ddf8c5ddf88b9caf606c79434b54272c317d8c9dc5ddf8
+c5ddf8b0c5dd525c6824282d697584515b67c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8171a1dafc4dcc5ddf8c5ddf8
+c5ddf8c5ddf8bfd6f10c0d0fc0d7f2c5ddf8c5ddf8c5ddf8c5ddf88495a7
+899aadc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85c6874373e46
+a8bcd4bdd4ee92a3b7c5ddf8c5ddf8c5ddf8030404c1d8f3c5ddf8c5ddf8
+c5ddf898aabfb7cee7c1d9f46c7988363d45c5ddf8c5ddf82125299fb3c9
+c5ddf8a3b7cec1d9f4c5ddf89cafc52b3036bfd6f1c2daf5a3b6cdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf890a2b50000008b9caf
+abc0d721262a9fb2c8c5ddf8545e6a434b54b5cbe496a9bd24282dc5ddf8
+c5ddf8aec3db0607084a545eaabfd6a4b8cfb7cde6b0c5dd1b1e22bbd2ec
+c4dcf7a1b5cbc5ddf8c5ddf83a414955606bb7cee75b6773373e46c5ddf8
+adc3da0000007a8899b7cde6252a2f9baec3c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf81214174b545fb6cce556616c57616dc5ddf8
+c5ddf8c5ddf87583934f5964c5ddf8c5ddf8b2c8e00e1012b7cde60a0b0c
+8ea0b3464e5896a9bdbed6f0000000616d7ab5cbe4424a53707e8dc5ddf8
+c5ddf8c4dcf7000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8454e580c0d0f0000000000000b0c0e
+2d3238c1d9f4c5ddf8c5ddf8c5ddf8c1d8f30000005e6976b6cce5434c55
+6d7b8ac5ddf88495a71f2327a9bdd496a9bd0d0f11adc3dac5ddf8697584
+596470c4dcf7bad0eaabc0d7c5ddf8c5ddf8c5ddf8191c20abc0d7c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84f5964
+72808fc5ddf8b3c9e1b2c8e0c5ddf8c5ddf8c5ddf8000000c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf830363d282d328ea0b3b7cee7a3b6cdc5ddf8c5ddf8
+a6bad11e2226c5ddf8c5ddf8c5ddf87a899a0d0e109fb3c9a8bcd40f1113
+c2daf5c5ddf83c434b677482b4cae33941482c3137c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b7cde6090a0bc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf81e2125a1b5cbc5ddf8c5ddf8c5ddf8c5ddf8
+3b424a454e57c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8191c20
+8fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8030404c1d8f3c5ddf8
+c5ddf8c5ddf8bed5ef8ea0b35f6a774a535d191c20c5ddf8c5ddf8292e34
+545f6a98aabfc4dcf7c5ddf8c5ddf8a5b9d0121417768494adc3dac5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf890a2b5171a1d
+c5ddf8c5ddf85a6571697685c5ddf8101315707e8d8b9caf899aad1c2023
+a9bed5c5ddf8aec3db000000aec3dbc5ddf8c5ddf8c5ddf8b7cde60d0f11
+6f7c8ca7bcd3c5ddf8c5ddf8c5ddf8060607a7bcd3c5ddf8adc2d9030303
+c1d9f4adc3da0d0e10c3dbf6c5ddf856616c6e7b8bc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf812141795a7bbc5ddf8a2b6cc21262a
+c5ddf8c5ddf8c5ddf87583934f5964c5ddf8c5ddf8b2c8e024282dc5ddf8
+1e2125acc1d85d68757d8c9dbed6f0000000afc4dcc5ddf88899ac3c434b
+c5ddf8c5ddf8c4dcf7000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88595a80c0d0f000000000000000000
+000000090a0c63707dc5ddf8c5ddf8c5ddf8c1d8f3000000acc1d8c5ddf8
+8b9cb0394047c5ddf8505a655c6874c5ddf8c5ddf832383f7a899ac5ddf8
+72808f2a2f358495a7b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8191c20abc0d7
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+58636f3940478b9cb0bdd4eec5ddf8c5ddf8c5ddf8c5ddf8000000c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf830363d677482c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a899a3d454dc5ddf8c5ddf8
+23272ca2b6ccc1d8f30a0c0db9d0e9c5ddf88190a22c3137c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf897a9be23272cc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8383f468191a3c5ddf8c5ddf8c5ddf8
+c5ddf8b0c5ddb1c7dfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+0d0e10a8bcd4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8030404c1d8f3
+c5ddf8c5ddf8c5ddf8454e57515b6790a2b5808fa114171ac5ddf8c5ddf8
+b8cfe86c7a89171a1d212529bad1ebc5ddf8c5ddf89fb3c94e5863040505
+5f6a77c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf890a2b5
+282d32c5ddf8c5ddf86b7887515b66c5ddf80506065f6a77687583687583
+687583a9bed5c5ddf8aec3db14171ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+a9bdd458636f0607084a535dc5ddf8c0d7f2000000bad1ebc5ddf8bed5ef
+000000bad0eaadc3da1d2024c5ddf8c5ddf85d6875677482c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8121417a6bad1c5ddf8b3c9e1
+0a0b0cc4dcf7c5ddf8c5ddf87583934f5964c5ddf8c5ddf8b2c8e02b3036
+c5ddf824282db3c9e1626e7b758393bed6f0000000bed6f0c5ddf899acc1
+22272bc5ddf8c5ddf8c4dcf7000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff9f9f9e7e7e7
+e6e6e6e5e5e5e4e4e4e2e2e2e1e1e1e0e0e0dfdfdfdedededddddddbdbdb
+dadadad9d9d9d8d8d8d7d7d7d5d5d5d4d4d4d3d3d3d2d2d2d1d1d1d0d0d0
+cecececdcdcdcccccccbcbcbcacacac9c9c9c7c7c7a1b0c198aabf97a9be
+96a9bd95a7bb94a6ba93a5b992a4b892a3b72b3036000000000000000000
+0000000000000000001f2327c5ddf8c5ddf8c5ddf8c1d8f3000000bcd3ed
+c5ddf89cafc41f2327c5ddf8464e58707e8dc5ddf8c5ddf8444d566f7c8c
+c5ddf8c4dcf7899aad363d450a0b0c8a9baec5ddf8c5ddf8c5ddf8191c20
+abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c1d8f37e8e9f2b30361013159cafc5c5ddf8c5ddf8c5ddf8000000
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf830363d92a3b7c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a899a505a65c5ddf8
+c5ddf82a2f359aadc2b7cde608090ac2daf5c5ddf88fa1b42c3137c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a3b7ce181b1f
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82d33398ea0b3c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf82f353c72808fc5ddf8c5ddf8c4dcf7c5ddf8c5ddf8c5ddf81e2226
+abc0d7c5ddf8c5ddf8c2daf50a0c0dbdd4eec5ddf8717f8e14171ac5ddf8
+c5ddf8c5ddf8c5ddf8b8cfe81f232791a2b6c5ddf8c5ddf8c5ddf8c5ddf8
+8e9fb216191cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+90a2b5060607c1d9f4c5ddf8464e588393a5c5ddf8272c317e8e9fc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8aec3db16191cc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8a2b6cc060708c0d7f2c5ddf8171a1e8fa1b4c5ddf8
+96a9bd141619c5ddf8adc3da1d2024c5ddf8c5ddf85d6875677482c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf81214178190a2c5ddf8
+8e9fb23b424ac5ddf8c5ddf8c5ddf87583934f5964c5ddf8c5ddf8b2c8e0
+2b3036c5ddf824282db3c9e1626e7b758393bed6f00000009aadc2c5ddf8
+748292545f6ac5ddf8c5ddf8c5ddf8191c20b0c5ddc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+1a1a1a4141414242424343434444444545454747474848484949494a4a4a
+4b4b4b4c4c4c4e4e4e4f4f4f505050515151525252545454555555565656
+5757575858585a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f4e565e4b545f
+4c55604d56614e57624f5964505a65515b66515b67131518000000000000
+00000000000000000000000016191cc5ddf8c5ddf8c5ddf8c1d8f3000000
+97a9bec5ddf8768595515b67c5ddf8626e7b444d56c5ddf8c5ddf81b1f23
+8ea0b3c5ddf8c5ddf8c5ddf8c5ddf85b667249525cc5ddf8c5ddf8c5ddf8
+282d339db0c6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c2daf5434c55626e7cc5ddf8c5ddf8c5ddf8
+0f1113b7cde6c5ddf8c5ddf8c5ddf8c5ddf830363d94a6bac5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a899a505a65
+c5ddf8c5ddf82a2f359aadc2c5ddf8282d329cafc5c5ddf8636f7d2c3137
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3
+050606c0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8111316afc4dcc5ddf8
+c5ddf8c5ddf8c5ddf895a8bc8ea0b3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf89aadc2131518474f595c6874515b67c5ddf8c5ddf8c5ddf8
+6c7a8925292e4f5964b4c9e2c5ddf8404851404851525c6830363d14171a
+c5ddf8c2daf5292e3465717f5964701c2023c1d8f3c5ddf87e8e9f454e57
+6a7786363d455d6875c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf890a2b51214172c313748515b25292eb7cee7c5ddf894a6ba16191c
+4b545f5f6a77272c31b7cee7c5ddf8aec3db16191cc5ddf8c5ddf8c5ddf8
+c5ddf892a4b83d454d6a7786424a53464e58c5ddf8c5ddf8788797101315
+545f6a131518768494c5ddf8adc3da1d2024c5ddf8c5ddf85d6875677482
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf812141723272c
+545e6a1c20238797aac5ddf8a1b5cb5b6773363d4525292e5b67738a9bae
+b2c8e02b3036c5ddf824282db3c9e1626e7b758393bed6f0030303282d32
+525c681c202399acc1c5ddf8c5ddf8c5ddf8687583262b304f5964b7cde6
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+c1c1c1676767ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8667281060708
+00000000000000000000000002030349525cc5ddf8c5ddf8c5ddf8c1d8f3
+010101282d33535d691b1f2398aabfc5ddf8b1c7df14171a454e5730363d
+2e343ac4dcf7c5ddf856616c545f6a6774822125298ea0b3c5ddf8c5ddf8
+c5ddf86c7a89252a2f5a65719db0c6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8434c555b6672636f7d191c20a6bad1c5ddf8c5ddf8
+c5ddf8545e6a2e343a5b6773aabfd6c5ddf8c5ddf830363d94a6bac5ddf8
+c5ddf8c5ddf8bbd2ec5b67734e57620d0f115b6773707d8dc5ddf87a899a
+505a65c5ddf8c5ddf82a2f359aadc2c5ddf88393a51d20243f474f2f343b
+2c3137c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8333a4196a9bdc5ddf8c5ddf8c5ddf8c5ddf8a9bed51e2226c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8454e57373e46c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b5cbe48696a98495a7bad0eac5ddf8c5ddf8
+c5ddf8c5ddf8b0c6de93a5b9bed5efc5ddf8c4dcf793a5b98c9db1bad0ea
+98abc0c5ddf8c5ddf8a4b8cf7e8e9f93a5b9c1d8f3c5ddf8c5ddf8bed6f0
+92a3b77d8c9da8bcd4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf890a2b5343a42a1b5cb8d9eb1c4dcf7c5ddf8c5ddf8c5ddf8
+b4cae38595a88191a3adc3dac5ddf8c5ddf8bfd6f199acc1c5ddf8c5ddf8
+c5ddf8c5ddf8c1d9f497a9be7c8b9ca1b5cbc5ddf8c5ddf8c5ddf8c5ddf8
+9fb3c97d8c9d9fb2c8c5ddf8c5ddf8bfd6f19baec3c5ddf8c5ddf8abc0d7
+adc3dac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8121417
+a3b6cd8494a6b8cfe8c5ddf8c5ddf8b4cae393a5b993a5b993a5b993a5b9
+a9bdd4c0d7f29fb2c8c5ddf89cafc5c1d8f3acc1d8b1c7dfbed6f0060607
+afc4dc8595a8bed5efc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c5dd93a5b9
+bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc2c2c2656565ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1
+1c2024040505000000000000020202121416b6cce5c5ddf8c5ddf8c5ddf8
+c1d8f3030404b0c5dd8495a7bdd4eec5ddf8c5ddf8c5ddf8b5cbe48292a4
+8a9baec0d7f2c5ddf8c5ddf8b6cce58899ac8292a4b4cae3c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8b6cce594a6bab2c8e0c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b0c6de8494a68798abbad0eac5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8b0c6de94a6bab8cfe8c5ddf8c5ddf89fb3c9b9d0e9
+c5ddf8c5ddf8c5ddf8c0d7f293a5b993a5b993a5b993a5b99db0c6c5ddf8
+b2c8e0a8bcd4c5ddf8c5ddf89eb1c7bad1ebc5ddf8c5ddf8bdd4eea0b4ca
+8292a4515b67c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf893a5b9424a53c5ddf8c5ddf8c5ddf8c5ddf856616c7e8e9f
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf81f23278292a4c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf890a2b5343a42c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+121417b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed6f0
+060607c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffc4c4c4646464ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8bad0ea49525c131618111416404851b3c9e1c5ddf8c5ddf8c5ddf8
+c5ddf8c1d8f3030404c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf890a2b58899ac
+8b9cb02a2f3590a2b5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf857616dbed5efc5ddf8c5ddf8c4dcf7535d69
+c2daf5c5ddf8c5ddf8c5ddf8c5ddf8bad1eb3f474fc4dcf7c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1bbd2ec
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8a9bdd4788797c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf895a7bb6e7b8b6e7b8b6e7b8b6e7b8b738291c5ddf8
+c5ddf8657280bbd2ecc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c1d9f45f6b78c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffc5c5c5636363ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c3dbf65e6976c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a7bb6e7b8b
+6e7b8b6e7b8b6e7b8b738291c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a2b6cc
+5c68745e6976a6bad1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8434b542e343a
+92a3b7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffc6c6c6616161ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b3c9e1141619
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc8c8c8606060ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89eb1c7
+262b30c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffc9c9c95f5f5fffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8bdd4ee8899acb4c9e2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+8d9eb1323940c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffcacaca5d5d5dffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8bcd3ed677482141619a9bdd4c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+7482922c31377d8d9ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffcbcbcb5c5c5c
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8545f6a768595c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf88393a530363d717f8ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffcdcdcd
+5b5b5bffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85f6a776c7988c5ddf8
+c5ddf8c5ddf8c5ddf8bed5ef363d459baec3c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf88fa1b42f353cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+cecece5a5a5affffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87482924b545f
+c5ddf8c5ddf8c5ddf8c5ddf8bcd3ed11131690a2b5c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf89eb1c7262b30c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffcfcfcf585858ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b6cce5
+282d322c3137b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b6cce5121417c4dcf7c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd1d1d1575757ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+8e9fb2272c319fb3c9c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84f59642d33398c9db1
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd2d2d2565656ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8636f7d64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf84b545f95a7bb
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8bed5efb4cae3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd3d3d3545454ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf85e69766c7a89c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1000000
+8797aac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd4d4d4535353ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8bbd2ec333a4191a2b6c5ddf8c5ddf8c5ddf8c5ddf893a5b9
+1e2125c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd6d6d6525252ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8b4cae33940475f6b78bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8
+95a8bc95a7bbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b2c8e0394148c5ddf8c5ddf8c5ddf83f474facc1d8c5ddf88a9bae
+282d32202428626e7cc4dcf7c5ddf8aabfd62a2f352a2f358e9fb2c5ddf8
+c5ddf8c5ddf8a9bdd44a535d262b3057616d404851c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd7d7d7505050ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8262b309baec3c5ddf8a3b6cd1e2226c5ddf8b1c7df
+0a0c0d92a3b7abc0d7262b307f8fa0c5ddf8c5ddf8c5ddf8474f597d8d9e
+c5ddf8c5ddf8c5ddf8282d327f8fa0afc4dc2a2f35404851c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd8d8d84f4f4f
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf86c7a8957616dc5ddf85f6a7765717fc5ddf8
+8393a5292e34c5ddf8c5ddf865717f47505ac5ddf8c5ddf8c5ddf8474f59
+7d8d9ec5ddf8c5ddf8b6cce50d0e10c4dcf7c5ddf86a7786404851c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffdadada
+4e4e4effffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7df16191cc3dbf61b1f23abc0d7
+c5ddf87988983d454dc5ddf8c5ddf87786963c434bc5ddf8c5ddf8c5ddf8
+474f597d8d9ec5ddf8c5ddf8a2b6cc1b1f23c5ddf8c5ddf87d8c9d404851
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+dbdbdb4d4d4dffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8343a426a77862c3238
+c5ddf8c5ddf895a7bb121417c5ddf8c5ddf84e58635b6773c5ddf8c5ddf8
+c5ddf8474f597d8d9ec5ddf8c5ddf8c4dcf7101315bad1ebc5ddf8545e6a
+404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffdcdcdc4b4b4bffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87b8a9b050606
+738291c5ddf8c5ddf8c5ddf83239402c313748515b141619adc3dac5ddf8
+8899ac5b67732125293a41495b6773a3b6cdc5ddf8616d7a25292e4c5560
+1c2023404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffdedede4a4a4affffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef
+93a5b9bbd2ecc5ddf8c5ddf8c5ddf8c1d8f38b9caf8191a3b4c9e2c5ddf8
+c5ddf8a9bdd493a5b993a5b993a5b993a5b9b4cae3c5ddf8c5ddf8a9bed5
+8899acb2c8e0a4b8cfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffdfdfdf494949ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffe0e0e0474747ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8bad0eaaec3dbc5ddf8c5ddf8c5ddf8bed6f0b3c9e1
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7b6cce5c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b7cee7bad0eac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+b8cfe8c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffe1e1e1464646ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd1e4f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c6ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf84e5762282d32414952c5ddf8c5ddf8c5ddf891a2b6
+333a41c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8697685
+c4dcf7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88595a857616dc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a2b6cc8b9cb0
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf85b6672697685c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf86e7b8b6e7b8bc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+fffffffffffffffffffffffffffffffffffff6f6f6f1f1f1ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd7d7d7353535ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffe3effcc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8d6e7faffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8bad0ea131518c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+bed6f0b3c9e1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+020202c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7262b30abc0d7c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87a899a
+4a535dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8b7cee7bad0eac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8bad0ea1e2125bed6f0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffe7e7e7999999404040646464fcfcfcffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffc3c3c3151515ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffbfdffd6e7fac5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8d3e5faf4f8feffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8545e6a25292e0506062a2f35363c44c5ddf8c5ddf8
+4a545e2a2f35535d69c5ddf8c5ddf8c5ddf8c5ddf86774827d8d9e434c55
+1b1e226a7786c5ddf8adc2d94a535d25292e2c3238a2b6ccc5ddf86b7887
+2a2f350000002a2f352a2f359cafc5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf82f353c74829223272c515b66bad0eac5ddf8a8bcd4
+363c441d20242b30368494a6c5ddf8a4b8cf424a53252a2f596470363c44
+4a545ec3dbf6c5ddf895a8bc32383f292e34768595c1d8f3c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf894a6ba31373ec5ddf8
+c5ddf8c5ddf8c5ddf88393a5363c4423272c49525cc5ddf8c5ddf82f343b
+1a1d211012142a2f353e464ec5ddf8c5ddf8b1c7df3e464e7f8fa0252a2f
+2a2f35b4c9e2bad1eb2a2f352a2f357d8d9ec5ddf8c5ddf8c5ddf8505a65
+7482922b30363d444ca6bad1c5ddf8c5ddf890a2b531373e363d455f6a77
+8a9baec5ddf8c5ddf8c5ddf848515b7d8c9dc5ddf8c5ddf8c5ddf8c5ddf8
+a7bcd3687583c3dbf6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffd2d2d27c7c7c242424121212030303434343fcfcfcffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6131313
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffafcfe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef8fbfeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed51b1e22c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8c5ddf84d56611a1d21
+8292a4b9d0e99eb1c7c5ddf8515b67707d8dc5ddf8b4c9e2b1c7dfc5ddf8
+c5ddf8c5ddf8020202c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf802020264707ebad0ea3a41498191a3c5ddf8
+adc3daa3b6cdc5ddf8a8bcd40a0b0cb1c7df9baec321262aaec3db000000
+a5b9d02f353cadc3daadc3da0d0e1092a4b8b8cfe84048518595a8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86e7b8b515b66
+c5ddf8c5ddf8c5ddf8bdd4ee16191cb3c9e1c5ddf8a0b4cac5ddf8c5ddf8
+c5ddf87a899a4a535dc5ddf8c5ddf8c5ddf8c5ddf8acc1d80708094b545f
+abc0d7a3b7ceb8cfe8c5ddf8c5ddf85b6672697685c5ddf8c5ddf8c5ddf8
+2f353c3f474fb7cde6626e7c535d69c5ddf8b5cbe41013159fb2c89cafc4
+0a0c0d768595c5ddf8c5ddf8c5ddf868758357616dc5ddf8c5ddf8c5ddf8
+c5ddf88595a8000000c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3
+91a2b64b545d1717171313130303030000000808083a3a3af9f9f9ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffc9c9c9
+131313ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed51b1e22c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8c5ddf84d5661
+4a545ec5ddf8c5ddf8c5ddf8c5ddf85b6672373e468b9cafbdd4eec5ddf8
+c5ddf8c5ddf8c5ddf8020202c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8020202b6cce5c5ddf8707e8d545f6a
+c5ddf8c5ddf8a2b6cc6d7b8a55606b13151897a9be9baec33b424ac5ddf8
+08090ac1d9f4464e5893a5b972808f2b30368b9cb08a9bae5f6b7848515b
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84e5863
+6b7887c5ddf8c5ddf8c5ddf8c1d9f4121417657280a0b4cac5ddf8c5ddf8
+c5ddf8c5ddf87a899a4a535dc5ddf8c5ddf8c5ddf8c5ddf8acc1d8000000
+b0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf85b6672697685c5ddf8c5ddf8
+c5ddf82f353c8899acc5ddf89fb2c8262b30c5ddf8808fa13f474fc5ddf8
+c5ddf8363c44768595c5ddf8c5ddf8c5ddf88292a4373e46c5ddf8c5ddf8
+c5ddf8c5ddf8bbd2eca6bad1c5ddf8c5ddf8c5ddf8b8cfe8667381282d32
+0a0b0c090a0b0000000000000000000000000404041e1e1e909090909090
+8b8b8b8686868282827d7d7d7878787373736e6e6e6969696464645f5f5f
+5a5a5a5555555151514c4c4c4747474242423d3d3d3838383333332e2e2e
+222222121212ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed51b1e22c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8c5ddf8
+4d5661768494c5ddf8c5ddf8c5ddf8c5ddf8c1d9f47f8fa02c3137101214
+9baec3c5ddf8c5ddf8c5ddf8020202c2daf5c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8050606c5ddf8c5ddf8768595
+4e5762c5ddf88d9eb1272c318292a499acc11e212592a3b79baec3424a53
+c5ddf8111316c5ddf84a545e8c9db16572802b3036687583687583687583
+7c8b9cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+5b6773606c79c5ddf8c5ddf8c5ddf8c5ddf8b0c6de626e7b0d0e10333a41
+c5ddf8c5ddf8c5ddf87a899a4a535dc5ddf8c5ddf8c5ddf8c5ddf8acc1d8
+171a1dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85b6672697685c5ddf8
+c5ddf8c5ddf82f353c9baec3c5ddf8a5b9d01f2327c5ddf86d7b8a4e5863
+c5ddf8c5ddf8454e57768595c5ddf8c5ddf8c5ddf8778696444d56c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed6f072808f171a1d
+0202030506060000000000000000000000000000000505051e1e1e8c8c8c
+9696969b9b9ba0a0a0a5a5a5a9a9a9aeaeaeb3b3b3b8b8b8bdbdbdc2c2c2
+c6c6c6cbcbcbd0d0d0d5d5d5dadadadfdfdfe3e3e3e8e8e8edededf2f2f2
+f7f7f7e0e0e0444444ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed51b1e22
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8
+c5ddf84d5661778696c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c3dbf6
+454e57606c79c5ddf8c5ddf8c5ddf8111316b4cae3c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8050606c5ddf8c5ddf8
+7685954e5762c5ddf84d5661778696c5ddf8b7cde602020292a3b79baec3
+424a53c5ddf8111316c5ddf84a545e8c9db1899aad1d2024c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf87c8b9c454e57c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db
+0d0e10adc3dac5ddf8c5ddf88a9bae3c434bc5ddf8c5ddf8c5ddf8c5ddf8
+acc1d8181b1fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85b6672697685
+c5ddf8c5ddf8c5ddf82f353c9baec3c5ddf8a5b9d01f2327c5ddf8a3b6cd
+22272bc4dcf7c4dcf71a1d21768595c5ddf8c5ddf8c5ddf85b677365717f
+c5ddf8c5ddf8c5ddf8c5ddf8b1c7df7a899abdd4eec5ddf8c5ddf8c5ddf8
+c5ddf8c1d8f396a9bd5964701d21251313130e0e0e000000000000080808
+323232f3f3f3ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffe5e5e5424242ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed5
+1b1e22c5ddf8c5ddf8c5ddf8b0c5dd5b6773434c55171a1e5b67737b8a9b
+c5ddf8c5ddf84d5661778696c5ddf8c5ddf8c5ddf8c5ddf8454e575a6571
+64707e191c20a4b8cfc5ddf8c5ddf8c5ddf856616c2d33395b6773a9bed5
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8050606c5ddf8
+c5ddf87685954e5762c5ddf88798ab1e2226616d7a2a2f351a1d2192a3b7
+9baec3424a53c5ddf8111316c5ddf84a545e8c9db1c4dcf73d454d272c31
+626e7b48515b5f6b78c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8adc3da1e2125c4dcf7c5ddf8c5ddf8a7bcd3343a42687583
+4e58632f343bc5ddf8c5ddf8c5ddf8bdd4ee181b1f4a535d697685c5ddf8
+c5ddf8acc1d8181b1fc5ddf8c5ddf8c5ddf8c5ddf893a5b95b67732a2f35
+31373e5b677398aabfc5ddf82f353c9baec3c5ddf8a5b9d01f2327c5ddf8
+c5ddf847505a282d332c3137282d32768595c5ddf8c5ddf8c5ddf82e343a
+99acc1c5ddf8c5ddf8c5ddf8c5ddf88fa1b4000000b2c8e0c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8f1f1f1b0b0b05d5d5d1b1b1b
+1515150404042b2b2bf1f1f1ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffe8e8e83f3f3fffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+bed6f09aadc2c5ddf8c5ddf8c5ddf8bbd2ec93a5b993a5b993a5b993a5b9
+a2b6ccc5ddf8c5ddf8a7bcd3b1c7dfc5ddf8c5ddf8c5ddf8c5ddf8b0c6de
+8495a78797aab9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7df94a6ba
+b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a7bb
+c5ddf8c5ddf8b1c7dfa7bcd3c5ddf8c5ddf8acc1d88292a4afc4dca0b4ca
+b8cfe8bad1eba4b8cfc5ddf898aabfc5ddf8a6bbd2b7cde6c5ddf8c5ddf8
+98abc07c8b9c93a5b9c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf84b545f8b9cafc5ddf8c5ddf8c3dbf69cafc5
+7d8c9d9baec3c3dbf6c5ddf8c5ddf8c5ddf8c5ddf8c3dbf69fb3c99aadc2
+c5ddf8c5ddf8bed6f09aadc2c5ddf8c5ddf8c5ddf8c5ddf8adc3da93a5b9
+93a5b993a5b993a5b9b0c5ddc5ddf89fb3c9bad1ebc5ddf8bdd4ee9cafc4
+c5ddf8c5ddf8c5ddf8aabfd6b1c7df3941489cafc5c5ddf8c5ddf8a0b4ca
+343a42c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8697685383f46c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffe3e3e39d9d9d4a4a4a4c4c4cedededffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeaeaea3d3d3dffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed56b7887c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf873829196a9bd7381901e2226c4dcf7c5ddf8c5ddf8
+7a899a9aadc2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85a65719eb1c7c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+fffffffffffffffffffffffffffffffffffff3f3f3ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffededed3b3b3bffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf88b9caf6e7b8b6e7b8b6e7b8b6e7b8b7d8d9ec5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf87e8e9f525c68778696bad1ebc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffefefef383838ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff1f1f1363636ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff9fcfe
+e0edfbcde2f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
+cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9d7e8faf2f7fd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff4f4f4333333
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d8e8fac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+cce1f9feffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff6f6f6
+313131ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
+fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefefeffffffff
+ffffffc6def8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8f1f7fdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f9f9f92f2f2fffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+d1e4f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c9e0f9
+e2eefbffffffc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffbfbfb2c2c2cffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefeff
+cae0f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8f3f8fec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffdfdfd2a2a2affffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f2f7fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8e0edfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff282828ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff282828ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff282828ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff282828ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5efb4cae3c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff282828ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8474f597d8d9e
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff282828
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4
+bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+282828ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b2c8e0394148c5ddf8c5ddf8c5ddf83f474f
+acc1d8c5ddf88a9bae282d32202428626e7cc4dcf7c5ddf8aabfd62a2f35
+2a2f358e9fb2c5ddf8c5ddf8c5ddf8a9bdd44a535d262b3057616d404851
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff282828ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8bed5efa6bad1a6bad1bad1ebc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9
+b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c3dbf6aec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bdd4eea6bad1
+a6bad1bbd2ecc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8262b309baec3c5ddf8a3b6cd
+1e2226c5ddf8b1c7df0a0c0d92a3b7abc0d7262b307f8fa0c5ddf8c5ddf8
+c5ddf8474f597d8d9ec5ddf8c5ddf8c5ddf8282d327f8fa0afc4dc2a2f35
+404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff282828ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8aabfd64f59641a1d218393a5c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+64707e667381c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b3c9e1111316c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a7bcd3
+4f5964181b1f8798abc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7a8957616dc5ddf8
+5f6a7765717fc5ddf88393a5292e34c5ddf8c5ddf865717f47505ac5ddf8
+c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8b6cce50d0e10c4dcf7c5ddf8
+6a7786404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff282828ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84149528393a5c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf864707e667381c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c3dbf6aec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf83d444c8798abc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88899ac7482928494a6
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad0ea748292748292a3b7ce
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf897a9bea9bdd4c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf88797aa7482928696a9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7df16191c
+c3dbf61b1f23abc0d7c5ddf87988983d454dc5ddf8c5ddf87786963c434b
+c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8a2b6cc1b1f23c5ddf8
+c5ddf87d8c9d404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff282828ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+8494a62a2f351b1f23444d56c5ddf8c5ddf8c5ddf84149528393a5c5ddf8
+c5ddf8c5ddf8a2b6cc333a411d20242c32388b9cafc5ddf8c5ddf8b3c9e1
+4d5661252a2f2b303698abc0c5ddf8c5ddf88c9db139404723272c3c434b
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a3b7ce
+414952292e346774826b7887c5ddf8c5ddf87f8fa02a2f35333a418797aa
+c5ddf8c5ddf85c687472808f2e343a363d459eb1c7c5ddf8c5ddf898abc0
+383f4630363d49525c667381c5ddf8c4dcf76e7b8b262b303d444c93a5b9
+c5ddf8c5ddf8c5ddf8353b438d9eb12f353c2125299baec3c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8697685626e7b2b3036424a53a3b6cd
+c5ddf8c5ddf865717f2a2f35394047c5ddf8c5ddf8c5ddf84c5560454e57
+282d33626e7b2c32389cafc4c5ddf855606b64707e252a2f4e5863adc2d9
+c5ddf8c5ddf8c5ddf83d444c8798abc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf892a3b7697584
+25292ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bbd2ec8190a2363d45
+717f8ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85b66728292a4c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf890a2b5657280292e34c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+343a426a77862c3238c5ddf8c5ddf895a7bb121417c5ddf8c5ddf84e5863
+5b6773c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8c4dcf7101315
+bad1ebc5ddf8545e6a404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff282828ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+99acc11416198fa1b4c2daf58b9cafc5ddf8c5ddf8c5ddf84149528393a5
+c5ddf8c5ddf8c5ddf8a9bed5a6bad1c5ddf8a2b6cc090a0bb8cfe8c5ddf8
+5f6a77626e7cc4dcf7b7cee7adc3dac5ddf8c2daf5191c20a9bed5c5ddf8
+9fb3c9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+1b1e228595a8adc2d922272b4d5661c5ddf892a3b7181b1fa2b6ccb0c5dd
+262b30a9bdd4c5ddf83f474f333a41b4c9e2717f8e434c55c5ddf8bfd6f1
+1113169aadc2a1b5cb131518667381c5ddf8788797282d33abc0d7a7bcd3
+1b1f23bcd3edc5ddf8c5ddf80d0e103b424a9db0c6b0c5ddabc0d7c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8505a651f2327aabfd68d9eb1
+191c20c5ddf8c5ddf8c5ddf8b3c9e1111316c5ddf8c5ddf8c5ddf82a2f35
+8fa1b4414952515b668494a658626ec5ddf8363d4530363db1c7df768494
+323940c5ddf8c5ddf8c5ddf83d444c8798abc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7b0c5ddb8cfe8c5ddf8c5ddf8c5ddf8
+9fb3c925292ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4cae3b1c7dfc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bed5efafc4dcc4dcf7c5ddf8c5ddf8c5ddf8
+c5ddf8b4c9e2b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c2daf5c1d9f4bed5efbdd4eec5ddf8c5ddf8c5ddf8c5ddf8
+c4dcf7b4c9e2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b8cfe8b5cbe4c5ddf8
+c5ddf8c5ddf8c1d9f4c2daf5bad1ebc1d8f3c5ddf8c5ddf8c5ddf8c5ddf8
+535d69717f8ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bbd2ecbcd3edc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1
+c4dcf7b7cde6c5ddf8c5ddf8c5ddf8c4dcf7bed6f0bed6f0c2daf5c5ddf8
+c5ddf8c3dbf6c1d9f4b4cae3c4dcf7b9d0e9c3dbf6c5ddf8c4dcf7c0d7f2
+c2daf5b8cfe8c5ddf8c5ddf8c5ddf8c5ddf89baec3292e34c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf87b8a9b050606738291c5ddf8c5ddf8c5ddf83239402c313748515b
+141619adc3dac5ddf88899ac5b67732125293a41495b6773a3b6cdc5ddf8
+616d7a25292e4c55601c2023404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff282828ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf857616d515b66c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8414952
+8393a5c5ddf8c5ddf8c5ddf8c4dcf79fb2c86b788755606b0e1012a1b5cb
+c5ddf86875832f353c8798abbad1ebc5ddf8c5ddf8c5ddf81e21255c6874
+9baec3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+a9bed516191cc5ddf8c5ddf85f6b784d5661c5ddf84e5863444d568b9cb0
+899aad474f596c7988c5ddf83f474f788797c5ddf8aec3db171a1dc5ddf8
+91a2b630363dc5ddf8c5ddf8444d56667381c5ddf8353b4357616d8b9caf
+899aad353b438595a8c5ddf8c5ddf80d0e108b9cafc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8505a6557616dc5ddf8
+c5ddf81b1e22a9bed5c5ddf8c5ddf8b3c9e1111316c5ddf8c5ddf8c5ddf8
+2a2f35acc1d85b67736e7b8b9baec33e464ec5ddf8363d45707e8dc5ddf8
+c1d8f30a0c0dbed5efc5ddf8c5ddf83d444c8798abc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf89baec3171a1d23272c21262a7b8a9bc5ddf8
+c5ddf89fb3c925292ec5ddf8c5ddf8c5ddf8c5ddf8363c442c31372b3036
+212529a9bdd4c5ddf8c5ddf8505a652d3339383f46363c44c5ddf8c5ddf8
+b0c5dd2a2f35363d452b3036758393c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf86673812f343b1b1f231f23276c7a89c5ddf8c5ddf8
+96a9bd171a1d282d3331373e99acc1c5ddf8c5ddf84e576210121416191c
+3d444cc1d9f4c5ddf84d5661333a411e21252024287e8e9fc5ddf8c5ddf8
+c5ddf8535d69717f8ec5ddf8c5ddf8c5ddf8c1d9f44a535d14171a282d32
+58636fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db
+0f11132a2f3522272b434c55b4cae3c5ddf8afc4dc30363d121417798898
+c5ddf8c5ddf8899aad1b1e2221262a2f353c2b30362c3137c5ddf895a7bb
+1d202420242821262a505a65bed5efc5ddf8c5ddf89baec3292e34c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8bed5ef93a5b9bbd2ecc5ddf8c5ddf8c5ddf8c1d8f38b9caf
+8191a3b4c9e2c5ddf8c5ddf8a9bdd493a5b993a5b993a5b993a5b9b4cae3
+c5ddf8c5ddf8a9bed58899acb2c8e0a4b8cfc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff282828ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf84a545e6a7786c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+4149528393a5c5ddf8c5ddf8c5ddf88494a62c32388495a799acc116191c
+9cafc4c5ddf8c3dbf68495a732383f0c0d0f92a3b7c5ddf8c5ddf8b5cbe4
+687583111316282d32c0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf897a9be25292ec5ddf8c5ddf86e7b8b4d5661c5ddf8424a533d454d
+6875836875836875838d9eb1c5ddf83f474f8b9cb0c5ddf8b4cae3101214
+c5ddf87b8a9b414952c5ddf8c5ddf857616d667381c5ddf8282d334b545f
+68758368758368758398abc0c5ddf8c5ddf80d0e10b5cbe4c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8505a65687583
+c5ddf8c5ddf82b303690a2b5c5ddf8c5ddf8b3c9e1111316c5ddf8c5ddf8
+c5ddf82a2f35b2c8e0626e7b7482929fb3c9363d45c5ddf8363d458191a3
+c5ddf8c5ddf8111316aabfd6c5ddf8c5ddf83d444c8798abc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c4dcf71b1f237d8c9dc5ddf8c5ddf8b3c9e1
+c5ddf8c5ddf89fb3c925292ec5ddf8c5ddf8c5ddf8c5ddf8b7cde6c5ddf8
+c5ddf864707e535d69c5ddf8afc4dc15181bc5ddf8c5ddf8bfd6f1c5ddf8
+c5ddf86572805f6a77c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf86673811e2226bed6f0bbd2ec14171ab8cfe8
+c1d8f316191c8ea0b3c5ddf89baec33b424ac5ddf891a2b6171a1ebcd3ed
+c1d8f32c31377d8c9dc5ddf84d5661353b43c2daf5b2c8e0121417c4dcf7
+c5ddf8c5ddf8535d69717f8ec5ddf8c5ddf8c5ddf873819030363dc1d9f4
+c4dcf7373e469fb3c9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+aec3db00000096a9bdc5ddf8515b66738190c5ddf8c5ddf8c5ddf84b545f
+798898c5ddf8c5ddf8899aad3f474facc1d8030303c3dbf6282d32b9d0e9
+95a7bb000000afc4dcc3dbf63940478c9db1c5ddf8c5ddf89baec3292e34
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff282828ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf86d7b8a343a42c5ddf8c5ddf8c4dcf7c5ddf8c5ddf8
+c5ddf85c68746d7b8ac5ddf8c5ddf8c5ddf8434b548191a3c5ddf8afc4dc
+0000009cafc4c5ddf8c5ddf8c5ddf8c4dcf7515b67535d69c5ddf8c5ddf8
+c5ddf8c5ddf8b4cae3171a1d9db0c6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c1d9f40d0f11bad1ebc5ddf8424a534d5661c5ddf8657280
+404750c5ddf8c5ddf8c5ddf8c5ddf8c5ddf83f474f8b9cb0c5ddf8b4cae3
+101214c5ddf8adc3da1c2023c5ddf8c5ddf82e343a667381c5ddf84b545f
+5a6571c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf80d0e10b7cee7c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8505a65
+424a53c5ddf8c3dbf60d0f11bdd4eec5ddf8c5ddf8b3c9e1111316c5ddf8
+c5ddf8c5ddf82a2f35b2c8e0626e7b7482929fb3c9363d45c5ddf8363d45
+5c6874c5ddf8b2c8e0171a1dc5ddf8c5ddf8c5ddf857616d72808fc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db070809bed6f0c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf89fb3c925292ec5ddf8c5ddf8c5ddf8c5ddf895a7bb
+525c682c31371d2024404750c5ddf8c3dbf624282d3a4149738190bad1eb
+c5ddf8c5ddf895a7bb171a1d515b668d9eb1c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86673814a545ec5ddf8c5ddf83a4149
+8696a9a6bad10606075b667258636f57616d0a0c0dbed6f06b788747505a
+c5ddf8c5ddf85d6875535d69c5ddf84d566164707ec5ddf8c5ddf8212529
+9fb3c9c5ddf8c5ddf8535d69717f8ec5ddf8c5ddf8c5ddf8424a53343a42
+5a657158626e2e343a64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8aec3db060607c1d9f4c5ddf88292a43e464ec5ddf8c5ddf8c5ddf8
+4b545f798898c5ddf8c5ddf8899aad515b66bed5ef131518c5ddf8363c44
+a2b6cc95a7bb1c2023c5ddf8c5ddf869758458626ec5ddf8c5ddf89baec3
+292e34c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8a9bdd4a6bad1b1c7dfc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8b8cfe8c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3b0c6dec5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1bad1ebc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff282828
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee282d332c3238626e7c2d3339c5ddf8
+c5ddf8c5ddf89fb2c81b1f234b545f8fa1b4c5ddf87e8e9f22272b606c79
+2b303616191c9cafc4c5ddf84e586357616d6572801e212598aabfc5ddf8
+b6cce52e343a66738155606b22272bc4dcf7c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf86a77861e2226373e462c32384d5661c5ddf8
+bad0ea252a2f343a42636f7d3d454d7d8d9ec5ddf83f474f8b9cb0c5ddf8
+b4cae3101214c5ddf8c5ddf83e464e353b433d444c181b1f667381c5ddf8
+acc1d81c20233e464e626e7c343a4295a7bbc5ddf8c5ddf80d0e10b7cee7
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+505a65171a1e474f592a2f35535d69c5ddf8c1d9f45b6773535d6908090a
+5b6773697584c5ddf82a2f35b2c8e0626e7b7482929fb3c9363d45c5ddf8
+363d451b1f234e586322272b697685c5ddf8c5ddf8c5ddf89baec31b1f23
+4c556092a3b7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db070809bed6f0c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8a1b5cb23272cc5ddf8c5ddf8c5ddf8bed5ef
+171a1d9cafc5c3dbf67382913d454dc5ddf8c5ddf8c3dbf68ea0b323272c
+191c20c4dcf7c5ddf8c5ddf8b7cde66c7a89070809626e7cc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86673814a535dc5ddf8c5ddf8
+3a41498494a6a6bad10b0d0e98abc099acc199acc199acc1c1d9f46b7887
+474f59c5ddf8c5ddf85d6875535d69c5ddf84d5661636f7dc5ddf8c5ddf8
+2125299db0c6c5ddf8c5ddf8545e6a707e8dc5ddf8c5ddf8c5ddf8424a53
+58636f99acc199acc199acc1acc1d8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8aec3db060607c1d9f4c5ddf88292a43b424ac5ddf8c5ddf8
+c5ddf84b545f798898c5ddf8c5ddf8899aad545e6ac1d8f316191cc5ddf8
+3940479eb1c795a7bb1b1f23c5ddf8c5ddf869758455606bc5ddf8c5ddf8
+9cafc4282d33c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8596470333a41464e58c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88c9db1a1b5cbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8bed5ef24282dc0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8697584c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bad11e2226
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4c9e22a2f35c4dcf7
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8fffffff5f5f5ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+282828ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d9f491a2b67d8d9ea9bdd4
+c5ddf8c5ddf8c5ddf8c5ddf8bed6f095a8bcaec3dbc5ddf8c5ddf8a9bdd4
+8393a5b1c7df9eb1c7bad1ebc5ddf8b4c9e28797aa8495a7b7cde6c5ddf8
+c5ddf8c5ddf8a0b4ca7d8c9d96a9bdc1d9f4c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4cae3a7bcd3626e7c738190
+c5ddf8c5ddf8c1d8f390a2b57c8b9c9cafc4c4dcf7c5ddf8a3b7ceb7cde6
+c5ddf8c1d8f398aabfc5ddf8c5ddf8c5ddf89baec393a5b9adc2d9adc3da
+c5ddf8c5ddf8bcd3ed8b9cb07d8d9ea3b6cdc5ddf8c5ddf8c5ddf897a9be
+c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8505a6572808f8b9cb0a3b7cec5ddf8c5ddf8c4dcf793a5b993a5b9
+93a5b993a5b999acc1c5ddf89eb1c7c0d7f2acc1d8b0c6debbd2eca1b5cb
+c5ddf8363d458797aa8797aaadc3dac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+bed5ef95a7bbb0c5ddc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf71b1f237d8c9d
+c5ddf8c5ddf8b3c9e1c5ddf8c5ddf8bfd6f1111316bad0eac5ddf8c5ddf8
+a5b9d01e2125c5ddf8c0d7f232383f3d454dc5ddf8bcd3edbfd6f1c5ddf8
+bad0ea0d0f11bad1ebc5ddf8b6cce5c5ddf8c5ddf8768494474f59c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86673811e2125bdd4ee
+bad0ea141619b7cee7c1d8f316191c8b9cb0c5ddf8c5ddf8b1c7dfc5ddf8
+92a4b816191cbad0eabfd6f12a2f357e8e9fc5ddf84d5661323940c1d9f4
+b0c5dd111316c4dcf7c5ddf8c5ddf87d8c9d49525cc5ddf8c5ddf8c5ddf8
+73819030363dbed6f0c5ddf8c0d7f2b6cce5c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8aec3db00000093a5b9c5ddf84e586372808fc5ddf8
+c5ddf8c5ddf84b545f798898c5ddf8c5ddf8899aad545e6ac1d8f316191c
+c5ddf83940479eb1c795a7bb000000acc1d8c2daf5363d458b9cb0c5ddf8
+c5ddf8bdd4ee111316bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f464e58c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84c5560788797c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf86e7b8b626e7cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8000000c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3
+b0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525c
+8798abc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+bed5ef8b9caf485059555555f0f0f0ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff292929ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88292a48fa1b48292a41c2023
+afc4dcc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8505a65748292c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8363d458e9fb2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89cafc4
+1b1e2223272c24282d7c8b9cc5ddf8c5ddf8c5ddf8707e8d1e2226282d33
+c5ddf8c5ddf8454e57282d321b1f234a535d3d454dc5ddf8a1b5cb171a1e
+383f46282d33657280c5ddf8c5ddf85f6b7821262a373e46292e349eb1c7
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86673812d3339
+191c201e22266c7a89c5ddf8c5ddf897a9be191c20262b30252a2f394148
+c5ddf8c5ddf84e57620f111315181b3d444cc1d9f4c5ddf84d566131373e
+1c20231f23277e8e9fc5ddf8c5ddf8c5ddf8b8cfe84047501b1e22697685
+c5ddf8c1d9f44e57620e101232383f1b1f2390a2b5c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8aec3db0e1012272c3121262a434c55b4cae3
+c5ddf8707d8d2a2f351012141a1d212a2f358ea0b3899aad545e6ac1d8f3
+16191cc5ddf83940479eb1c795a7bb1d20241d2024202428505a65bed5ef
+c5ddf8c5ddf8c5ddf86c7a891e21252d3339c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f464e58c5ddf8
+c5ddf8c5ddf8c4dcf7444d561e222624282d616d7ac2daf5c5ddf8c5ddf8
+6673812c323824282d6d7b8ac5ddf8a6bad12a2f351012141a1d212a2f35
+626e7cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8667381
+707d8d32383f32383f98aabfc5ddf8c5ddf855606b20242821262a545f6a
+bed6f0c5ddf8434c55444d562c32385f6a772f343ba1b5cbc5ddf8b7cde6
+4d566121252956616cadc3dac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8191c20adc2d9c5ddf8c5ddf8c5ddf8acc1d8
+49525c25292e2d3339a3b7cec5ddf86976852a2f350000002a2f352a2f35
+9eb1c7c5ddf8c5ddf8515b668696a93941481b1f238190a2c5ddf85a6571
+2a2f35434b54c5ddf8c5ddf8c5ddf88b9caf606c79434b54272c317d8c9d
+c5ddf8c5ddf8b0c5dd525c6824282d697584525c68c5ddf8c5ddf8c5ddf8
+93a5b9323940c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86d7b8aa0b4cac5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8adc2d9707d8d
+292f340c0e0f0304041e2225f0f0f0ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff2b2b2bfdfdfdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf893a5b957616d687583
+b0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c5dd6e7b8b6e7b8b6e7b8b6e7b8b
+6e7b8bafc4dcc5ddf88797aa9aadc2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf87a8899a7bcd3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8b1c7dfbbd2ecc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b7cee7c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8
+c1d9f4adc3dac2daf5c5ddf8c5ddf8c5ddf8c5ddf8bad0eab2c8e0c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8667381
+5e6976bed5efbdd4eec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7dfb8cfe8
+c5ddf8c5ddf8c5ddf8c5ddf8b8cfe8b5cbe4c5ddf8c5ddf8c5ddf84d5661
+778696bad0eac1d8f3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bed6f0aec3dbc2daf5c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db16191cc4dcf7b7cde6c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a7bb2f353cc2daf5b8cfe8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f464e58
+c5ddf8c5ddf8c5ddf8c4dcf78ea0b3c2daf5b6cce52c32388190a2c5ddf8
+9cafc52b3036bfd6f1c2daf5a3b6cdc5ddf8c5ddf8c5ddf84c5560788797
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+4b545f2a2f35b0c6de7d8c9d373e46c5ddf8c5ddf88fa1b4c0d7f2bad1eb
+3f474f697685c5ddf820242899acc1363d455b6773798898626e7cc5ddf8
+3a414956616cbad0ea8190a23a4149c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b8cfe8070809c4dcf7c5ddf8c5ddf8c5ddf8
+4f596472808fc5ddf8b3c9e1b2c8e0c5ddf8c5ddf8c5ddf8000000c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf830363d282d328ea0b3b7cee7a3b6cdc5ddf8
+c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a88990d0e109fb3c9a7bcd3
+0f1113c2daf5c5ddf83c434b677482b4cae33941482c3137c5ddf8c5ddf8
+c5ddf8b2c8e00d0e10c5ddf8c5ddf8c5ddf8c5ddf8c5ddf80a0b0c768595
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c2daf595a8bc535d6815181b0e1011
+0505060000000202021f2327bcd2e9ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff2d2d2dfbfbfbffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+6673815e6976c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+4d5661778696c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db16191cc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a7bb2f353cc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f
+464e58c5ddf8c5ddf8c5ddf8c5ddf8b0c5dd7a899a57616d292e3464707e
+c5ddf8a5b9d0121417768494adc3dac5ddf8c5ddf8c5ddf8c5ddf84c5560
+788797c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf84b545f6c7988c5ddf8bad1eb0a0c0dc5ddf8c5ddf8b4cae38190a2
+58636f333a414d5661c5ddf8202428b7cde6515b6679889890a2b549525c
+bcd3ed0202028190a28b9caf8899ac111316bdd4eec5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf899acc1212529c5ddf8c5ddf8c5ddf8
+c5ddf858626e3940478b9cb0bdd4eec5ddf8c5ddf8c5ddf8c5ddf8000000
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf830363d677482c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a88993d454dc5ddf8
+c5ddf823272ca2b6ccc1d8f30a0c0db9d0e9c5ddf88190a22c3137c5ddf8
+c5ddf8c5ddf8c5ddf8070809b3c9e1c5ddf8c5ddf8c5ddf8c5ddf8a8bcd4
+b9d0e9c5ddf8c5ddf8b5cbe4616d7a252a2f090a0b090a0b000000000000
+000000000000010101141619778696808f9fa1a1a1a0a0a09e9e9e9c9c9c
+9a9a9a9898989797979595959393939191918f8f8f8e8e8e8c8c8c8a8a8a
+8888888686868585858383838181817f7f7f7d7d7d7c7c7c7a7a7a787878
+767676747474737373717171141414f8f8f8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8aabfd6a8bcd4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8a3b7ceafc4dcc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+8292a46e7b8b6e7b8b6e7b8b6e7b8b8696a9c5ddf8bed6f094a6bac5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b7cee79baec3c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+7e8e9f464e58c5ddf8c5ddf8c5ddf8b8cfe816191c76849498aabf464e58
+5f6a77c5ddf8c5ddf89fb3c94e58630405055f6a77c5ddf8c5ddf8c5ddf8
+4c5560788797c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf84b545f7f8fa0c5ddf8c1d8f3030404c5ddf8c1d9f4191c20
+6f7c8c96a9bd58626e47505ac5ddf8202428bdd4ee58626e7f8fa095a8bc
+414952b0c6de040505677482687583687583687583b6cce5c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bad116191cc5ddf8c5ddf8
+c5ddf8c5ddf8c1d8f37d8d9e2a2f351013159cafc5c5ddf8c5ddf8c5ddf8
+000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf830363d92a3b7c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a8899515b66
+c5ddf8c5ddf8292e349baec3b7cde608090ac2daf5c5ddf88fa1b42c3137
+c5ddf8c5ddf8c5ddf8c0d7f2030404bed5efc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8bfd6f17a899a1f2328030304060708000000000000
+000000000000000000020303171a1d616d7b677480858585878787898989
+8b8b8b8c8c8c8e8e8e9090909292929494949595959797979999999b9b9b
+9d9d9d9e9e9ea0a0a0a2a2a2a4a4a4a5a5a5a7a7a7a9a9a9abababadadad
+aeaeaeb0b0b0b2b2b2b4b4b4b5b5b5b7b7b7fdfdfdffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c3dbf6a2b6cc93a5b9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf899acc12f353cc5ddf8c5ddf8c5ddf8808fa1444d56c5ddf8c5ddf8
+262b305f6a77c5ddf8c5ddf8c5ddf8c5ddf88e9fb216191cc5ddf8c5ddf8
+c5ddf85b67736a7786c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf84b545f7f8fa0c5ddf8c1d8f3030404c5ddf897a9be
+2d3339c5ddf8c5ddf83d454d47505ac5ddf8202428bdd4ee58626e7f8fa0
+95a8bc414952c4dcf70f111398aabfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d9f4060607bed6f0
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c2daf5434b54626e7cc5ddf8c5ddf8
+c5ddf80f1113b7cde6c5ddf8c5ddf8c5ddf8c5ddf830363d94a6bac5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a8899
+515b66c5ddf8c5ddf8292e349baec3c5ddf8272c319cafc5c5ddf8626e7c
+2c3137c5ddf8c5ddf8c5ddf8a6bad11b1e22c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf88494a6a0b4cac5ddf8c5ddf8c5ddf8c5ddf8c2daf59aadc25c6874
+1e22260e10120a0b0d0000000000000607082d3339c3d8f1ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf858636f373e46899aadc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c4dcf7282d333d454d6b7887c5ddf8b4c9e21214175e6976
+323940272c315f6a77c5ddf87e8e9f454e576a7786363d455d6875c5ddf8
+c5ddf8c5ddf899acc1191c20545e6a8292a4c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf84b545f7f8fa0c5ddf8c1d8f3030404c5ddf8
+c0d7f2171a1d5964703d444c292e3447505ac5ddf8202428bdd4ee58626e
+7f8fa095a8bc414952c5ddf88190a215181b545e6a5a6571292e34c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8363c44
+94a6bac5ddf8c5ddf8c5ddf8434c555b6672636f7d191c20a6bad1c5ddf8
+c5ddf8c5ddf8545e6a2f343b5b6773aabfd6c5ddf8c5ddf830363d94a6ba
+c5ddf8c5ddf8c5ddf8bad1eb5b67734d56610e10125b6773707d8dc5ddf8
+7a8899515b66c5ddf8c5ddf8292e349baec3c5ddf88393a51d20243f474f
+2f343b2c3238c5ddf8c5ddf8c5ddf87988984f5964c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8141619687583c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8b8cfe88595a8424a531113150f11130202032c3036f8f8f8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf821262aa3b7cec5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88798ab596470adc3da
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89fb2c89fb2c8c5ddf8c5ddf8b9d0e9
+8494a6a0b4caadc3daabc0d7c5ddf8bed6f092a3b77d8c9da8bcd4c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bfd6f198abc0a6bad1c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd2b4c9e2c5ddf8c4dcf795a7bb
+c5ddf8c5ddf8bed5ef8797aa99acc1b3c9e1a6bad1c5ddf89cafc4c3dbf6
+a9bed5b4c9e2b9d0e9a4b8cfc5ddf8c5ddf8aec3db8191a38595a8b4c9e2
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+95a8bc404750c5ddf8c5ddf8c5ddf8b0c6de8494a68798abbad0eac5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b0c6de94a6bab8cfe8c5ddf8c5ddf89fb3c9
+b9d0e9c5ddf8c5ddf8c5ddf8c0d7f293a5b993a5b993a5b993a5b99db0c6
+c5ddf8b2c8e0a8bcd4c5ddf8c5ddf89eb1c7bad1ebc5ddf8c5ddf8bdd4ee
+a0b4ca8292a4515b67c5ddf8c5ddf8c5ddf8282d33acc1d8c5ddf8c5ddf8
+c5ddf8c5ddf8b4c9e2060607aec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd26d7a892e3339
+515151f5f5f5ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf816191cadc3dac5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a8bcd41b1f2395a8bc
+bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf858626ebdd4eec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf890a2b5
+8899ac8b9cb02a2f3590a2b5c5ddf8c5ddf8adc3da677482c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf894a6ba64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8f9f9f9ecececffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bbd2ec070809bfd6f1c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87988984c5560
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8abc0d7
+6e7b8b6e7b8b6e7b8b6e7b8b6e7b8bb4c9e2c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+a2b6cc5c68745e6976a6bad1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87a899a171a1e64707ec5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf872808f
+515b66c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad0ea7f8fa0141619c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed6f0
+414952707d8dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8101214
+b1c7dfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bbd2ec
+14171a1b1e22b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+171a1eadc2d9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c4dcf748515b697584c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf83e464e7a899ac4dcf7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8738190505a65c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf89cafc44e58635c6874c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf87a899a4a535dc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8abc0d7171a1e899aadbdd4eec5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a8bc6b7887b1c7df
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf89cafc572808fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf84d5661c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf89cafc572808fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8050606c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+b5cbe4bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5efb4cae3
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf893a5b9
+bed5efc5ddf8c5ddf8abc0d7a6bad1c5ddf8c5ddf89cafc57d8d9ea2b6cc
+c5ddf8c5ddf8c5ddf895a8bc8d9eb19fb3c9c5ddf8c5ddf8c5ddf8c5ddf8
+bcd3ed8495a7b1c7df050606c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf832383fabc0d7c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86d7b8a758393c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8474f597d8d9ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88a9bae
+404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+4048517f8fa0c5ddf8c5ddf83d454d8393a5c5ddf86f7c8c16191c56616c
+1416197e8e9fc5ddf8c5ddf8707e8d424a53404750c5ddf8c5ddf8c5ddf8
+92a4b81e2125545f6a2a2f35030404c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88696a9bad0ea
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8616d7a697685c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+8a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf88798ab3b424ac5ddf8b9d0e9101214bed6f0c5ddf80d0e109aadc2
+c5ddf88e9fb21c2023c5ddf8c5ddf8c5ddf88495a7404750c5ddf8c5ddf8
+c5ddf84a545e7f8fa0c5ddf893a5b9020202c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf89db0c68190a2c5ddf8c5ddf8c1d8f35f6b78c2daf5
+c5ddf899acc1525c6856616ca6bbd2c5ddf8c5ddf89db0c65b67735b6773
+b5cbe4c5ddf8c5ddf8c5ddf8bad1eb687583626e7b5a6571697685c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b2c8e0394148c5ddf8
+c5ddf8c5ddf83f474facc1d8c5ddf88a9bae282d32202428626e7cc4dcf7
+c5ddf8aabfd62a2f352a2f358e9fb2c5ddf8c5ddf8c5ddf8a9bdd44a535d
+262b3057616d404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c0d7f2121417b7cee77a899a4a545ec5ddf8b7cee7030404
+c1d8f3c5ddf8b5cbe4010101c1d9f4c5ddf8c5ddf88495a7404750c5ddf8
+c5ddf8c5ddf8181b1fa3b7cec5ddf8bad1eb030303c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8afc4dc141619c3dbf6c5ddf88b9caf363c44
+c5ddf8a5b9d0101214748292697685121417b7cde6c5ddf8b2c8e093a5b9
+15181ba7bcd3c5ddf8c5ddf8c3dbf6191c206a7786707d8d0d0e10697685
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8262b30
+9baec3c5ddf8a3b6cd1e2226c5ddf8b1c7df0a0c0d92a3b7abc0d7262b30
+7f8fa0c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8c5ddf8282d32
+7f8fa0afc4dc2a2f35404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf84f5964788797363c4491a2b6c5ddf8c0d7f2
+000000b0c6dec5ddf8a3b6cd0a0c0dc5ddf8c5ddf8c5ddf88495a7404750
+c5ddf8c5ddf8c5ddf832383f92a3b7c5ddf8a8bcd4020202c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf832383f91a2b6c5ddf8464e58
+7d8c9dc5ddf85f6b7847505ac5ddf8c5ddf831373e788797c5ddf8c5ddf8
+c5ddf81d2024a7bcd3c5ddf8c5ddf89cafc42a2f35c5ddf8c5ddf8363d45
+697685c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+6c7a8957616dc5ddf85f6a7765717fc5ddf88393a5292e34c5ddf8c5ddf8
+65717f47505ac5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8b6cce5
+0d0e10c4dcf7c5ddf86a7786404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a8bc262b30171a1dc3dbf6c5ddf8
+c5ddf832383f596470b6cce5505a65434b54c5ddf8c3dbf6bed6f08190a2
+3d454dbed6f0c1d8f3c5ddf8667381464e58b5cbe455606b020202c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87887974d5661bed5ef
+111316bbd2ecc5ddf84e5863697685c5ddf8c5ddf8515b66636f7dc5ddf8
+c5ddf8c5ddf81d2024a7bcd3c5ddf8c5ddf874829247505ac5ddf8c5ddf8
+56616c697685c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b1c7df16191cc3dbf61b1f23abc0d7c5ddf87988983d454dc5ddf8
+c5ddf87786963c434bc5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8
+a2b6cc1b1f23c5ddf8c5ddf87d8c9d404851c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf73d444c6d7b8ac5ddf8
+c5ddf8c5ddf8adc2d93a41491b1f23414952b4c9e2c5ddf89eb1c730363d
+30363d30363d30363d657280c5ddf8bbd2ec68758323272c677482353b43
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9131518
+7e8e9f444d56c5ddf8c5ddf8616d7a474f59c5ddf8c5ddf830363d798898
+c5ddf8c5ddf8c5ddf81d2024a7bcd3c5ddf8c5ddf89db0c6292e34c5ddf8
+c5ddf8363c44697685c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8343a426a77862c3238c5ddf8c5ddf895a7bb121417
+c5ddf8c5ddf84e58635b6773c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8
+c5ddf8c4dcf7101315bad1ebc5ddf8545e6a404851c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+4047501214178b9cafc5ddf8c5ddf8a6bbd20e101272808f667381111316
+b7cee7c5ddf899acc18d9eb114171a7887978d9eb1bed6f0c3dbf6181b1f
+6875836c7a890c0d0f697685c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf87b8a9b050606738291c5ddf8c5ddf8c5ddf8
+3239402c313748515b141619adc3dac5ddf88899ac5b67732125293a4149
+5b6773a3b6cdc5ddf8616d7a25292e4c55601c2023404851c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf89db0c6636f7dc1d9f4c5ddf8c5ddf8c5ddf899acc1525c6856616c
+a6bbd2c5ddf8c5ddf8778696626e7b626e7b626e7b626e7bb9d0e9c5ddf8
+bad1eb687583636f7d8d9eb197a9bec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef93a5b9bbd2ecc5ddf8c5ddf8
+c5ddf8c1d8f38b9caf8191a3b4c9e2c5ddf8c5ddf8a9bdd493a5b993a5b9
+93a5b993a5b9b4cae3c5ddf8c5ddf8a9bed58899acb2c8e0a4b8cfc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef
+b4cae3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad1ebbfd6f1c5ddf8c5ddf8c5ddf8
+b5cbe4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+8a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf72a2f35b4c9e2c5ddf8c5ddf8
+c5ddf84048519cafc4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8b8cfe8a6bbd2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82f343bb4c9e2
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf893a5b9667381c5ddf8c5ddf8c5ddf890a2b5697584
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88798ab49525cc5ddf8c5ddf8
+c5ddf8c5ddf896a9bd3a4149c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a2b6ccafc4dcc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c3dbf6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf88b9caf394148c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf81a1d21
+b0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf830363da3b7cec5ddf8c5ddf8c5ddf8c1d8f3
+1f2327b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b7cde6c3dbf6c5ddf8c5ddf8c3dbf6b7cee7
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7df
+545f6a23272c6975844e5863c5ddf8c5ddf897a9be323940282d33768494
+c0d7f2c5ddf87a899a6975843a41492b3036899aadc5ddf8c5ddf8a9bdd4
+4a535d262b3057616d404851c5ddf8c5ddf88798ab2c32382f353c8190a2
+c4dcf7c5ddf8c5ddf8535d698595a83a41491b1f237f8fa0c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf832394093a5b9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf81b1e22abc0d7c5ddf8c5ddf8c5ddf8c5ddf8
+92a3b77c8b9cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b9d0e98495a73f474f0d0f11515b66c4dcf7
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8a5b9d0262b300d0f110d0e10383f46b4cae3c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf896a9bd8797aa65717f677482bad0eac5ddf8c5ddf8
+c1d8f36c79884c5560738190c3dbf6c5ddf8c5ddf8abc0d76a77864a545e
+6c7a89c5ddf8c5ddf86774824048511b1e225b6773616d7ac5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8adc2d958636f778696
+7c8b9caec3dbc5ddf8c5ddf88495a7515b668292a4c1d9f4c5ddf8bfd6f1
+65717f95a8bc525c688798abc4dcf7c5ddf8c5ddf8a3b7ce55606b8495a7
+1a1d21b0c6dec5ddf8c3dbf6798898515b668d9eb1c4dcf7c5ddf8c5ddf8
+a5b9d07c8b9c92a4b8515b66697584c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf898abc02f353cc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8626e7b667381c5ddf8c5ddf8c5ddf8c5ddf8bfd6f199acc1bbd2ec
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b6cce5272c31c4dcf7c5ddf8c5ddf8c3dbf6
+252a2fb9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee899aad6a7786bed6f0
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+404851626e7cb4cae33d444c272c31c5ddf8afc4dc0d0e1091a2b6b8cfe8
+434b548393a5c5ddf8657280191c20a8bcd496a9bd1d2024c5ddf8c5ddf8
+282d327f8fa0afc4dc2a2f35404851c5ddf89cafc51214179db0c6b3c9e1
+2f353c9cafc5c5ddf8c5ddf8323940262b308d9eb1b7cee7a2b6ccc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf80d0e10b2c8e0
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf83941488595a8c5ddf8c5ddf8c5ddf8
+c5ddf857616d292e34c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf89fb3c9626e7b2125290e10120a0b0c04050549525cc4dcf7
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8aabfd60e101200000000000000000002020216191cbdd4ee
+c5ddf8c5ddf8c5ddf8c5ddf86c7a890c0d0f6e7b8b6c7988171a1ec2daf5
+c5ddf84a545e383f468798ab31373e5c6874c5ddf8c5ddf82a2f35798898
+9db0c66f7c8cc5ddf8c5ddf899acc16875832b303693a5b995a8bcc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bad116191c7c8b9c
+56616c06070897a9bec5ddf86875832c31378899ac5b6773404750c5ddf8
+bad1eb0506064c5560899aad1d20249aadc2c5ddf88fa1b42125298494a6
+444d56040505b0c6dec5ddf84e58633941488b9cb04a545e596470c5ddf8
+c5ddf88899ac1b1f233941488292a4687583c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86a778656616cc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf88798ab394047c5ddf8c5ddf8c5ddf8c5ddf8acc1d8000000
+9aadc2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85f6a77738190c5ddf8c5ddf8c5ddf8
+c5ddf86d7b8a64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8a9bdd46c7a89272c31030303101315acc1d8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c2daf50d0e10b5cbe4c5ddf88595a8272c31c5ddf8748292292e348b9cb0
+8a9bae616d7a454e57c5ddf8657280525c68c5ddf8c5ddf80f1113b6cce5
+b6cce50d0e10c4dcf7c5ddf86a7786404851c5ddf85b66723c434b8b9cb0
+899aad4f59645f6b78c5ddf8c5ddf832394065717fc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b3c9e1070809
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8545e6a657280c5ddf8c5ddf8
+c5ddf8c5ddf8b4c9e2adc2d9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b8cfe8
+8393a53d454d0f11130f11130202020000000000000a0c0d4a545ec5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8394148000000000000000000000000000000050606
+677482c5ddf8c5ddf8c5ddf8c5ddf86c7a8931373ec5ddf8c5ddf82d3339
+9baec3c3dbf6030404a6bad1c5ddf898abc0101315c5ddf8c2daf5101315
+8e9fb2c2daf5c5ddf8c5ddf8c5ddf8c5ddf88b9caf394148c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7a8955606b
+c5ddf8c4dcf70b0d0e97a9bec5ddf80d0e109aadc2bcd3edb9d0e91b1f23
+bed5efbad1eb000000b5cbe4c5ddf85c6874697685c5ddf8545e6a717f8e
+c5ddf8b4cae3000000b0c6deb7cee7060607adc3dabbd2ecb0c5dd1e2226
+c5ddf8c5ddf88899ac070809bed6f0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525c72808fc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8a3b7ce171a1dc5ddf8c5ddf8c5ddf8c5ddf8bad1eb
+748292b4c9e2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82f343b677482
+23272c677482bbd2ecc5ddf8c5ddf87d8c9d292e34353b438899acc5ddf8
+c5ddf8c5ddf8474f59899aad363d451d20248b9cafc5ddf898aabf3e464e
+23272c363c44bbd2ecc5ddf8c1d9f45b67731f23272a2f3591a2b6c5ddf8
+c5ddf8464e58758393282d32434b54acc1d8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c3dbf60d0e10bad1ebc5ddf8c5ddf8
+c5ddf8c5ddf8b7cde6101214c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f
+8fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c0d7f28fa1b44c55601315180e101203040400000014171aacc1d8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8bad1eb060708c0d7f2c5ddf895a7bb272c31c5ddf8687583292e34
+6875836875836875837b8a9bc5ddf865728065717fc5ddf8c5ddf815181b
+afc4dca2b6cc1b1f23c5ddf8c5ddf87d8c9d404851c5ddf84e5863373e46
+6875836875836875838797aac5ddf8c5ddf83239408fa1b4c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef
+030404c0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525c72808fc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1707d8d131518
+00000003030300000000000000000000000000000002020216191c434b54
+434b54434b54434b54434b54434b54434b54434b54434b54434b54434b54
+434b54434b54434b54434b54434b54434b54434b54434b54434b54434b54
+434b54434b54434b54434b54434b54434b54434b54434b54434b54434b54
+434b54434b54434b54434b54434b54434b54434b54434b54434b54434b54
+434b54434b54434b54434b54434b54434b54434b54434b54434b54434b54
+434b54434b54434b54434b54434b54434b54434b54434b54434b54444c54
+575757575757575757575757575757575757575757575757575757575757
+575757575757575757575757575757575757575757575757575757575757
+575757575757575757575757575757575757575757575757575757575757
+575757575757575757575757575757575757575757575757575757575757
+575757575757575757575757575757575757575757575757575757575757
+575757575757575757575757575757515456434b54434b54434b54434b54
+434b54434b54434b54434b54060607000000000000000000000000000000
+000000323940c5ddf8c5ddf8c5ddf8c5ddf86c7a894e5762c5ddf8c5ddf8
+4a535d717f8eb6cce5040505c4dcf7c5ddf8b8cfe8000000c1d9f4c5ddf8
+92a4b8363d450c0d0f58636fc5ddf8c5ddf8c5ddf88b9caf394148c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf847505a
+738291c5ddf8c5ddf8282d3297a9bebcd3ed000000363d45363d45363d45
+363d45a6bbd2bad1eb101214c5ddf8c5ddf86a77865a6571c5ddf82d3339
+8ea0b3c5ddf8c5ddf80f1113b0c6dea2b6cc070809363d45363d45363d45
+363d45b9d0e9c5ddf88899ac353b43c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8474f59738291c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8a6bad115181bc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8050606
+56616cb6cce54b545f64707ec5ddf88ea0b31a1d21a3b7ceaec3db25292e
+acc1d8c5ddf8c5ddf823272c2f343b94a6bab5cbe4a5b9d0c5ddf8282d33
+98abc0c5ddf8a6bbd2bed6f0c5ddf87583932a2f35aec3db8e9fb20d0e10
+b7cee7c5ddf822272b49525cb9d0e956616c606c79c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bdd416191cc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8101214afc4dcc5ddf8c5ddf8c5ddf8c5ddf8
+2d3339535d69c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8afc4dc
+7482922d33390d0e100c0d0f00000000000000000000000014171aacc1d8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7c3dbf6
+c2daf5c1d9f4c1d8f3c0d7f2bfd6f1bed6f0bed5efbed5efbdd4eebcd3ed
+bbd2ecbad1ebbad0eab9d0e9b8cfe8b7cee7b7cde6b6cce5b6cce5b5cbe4
+dbe1e8e9e9e9e8e8e8e7e7e7e6e6e6e5e5e5e4e4e4e3e3e3e2e2e2e2e2e2
+e1e1e1e0e0e0dfdfdfdedededddddddcdcdcdbdbdbdadadad9d9d9d8d8d8
+d8d8d8d7d7d7d6d6d6d5d5d5d4d4d4d3d3d3d2d2d2d1d1d1d0d0d0dbdbdb
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf82c323898aabfc5ddf8687583272c31c5ddf88b9cb0
+1b1e22c5ddf8c5ddf8c5ddf8c5ddf8c5ddf865728065717fc5ddf8c5ddf8
+15181bafc4dcc4dcf7101315bad1ebc5ddf8545e6a404851c5ddf872808f
+333a41c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf832394092a3b7c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf81b1e22a6bbd2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82d333993a5b9
+c5ddf8c5ddf8c5ddf8c5ddf8a0b4ca8494a6c5ddf8c5ddf8c5ddf8c0d7f2
+7c8b9c3f474f1013150c0d0f0405050000000000000000000000000d0e10
+8797aa9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
+9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
+9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
+9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
+9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
+9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
+a3b5c9cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf
+cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf
+cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf
+cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf
+cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf
+cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3c8cd9fb3c99fb3c99fb3c9
+9fb3c99fb3c99fb3c99fb3c99fb3c9181b1f000000000000000000000000
+00000000000047505ac5ddf8c5ddf8c5ddf8c5ddf86c7a8930363dc5ddf8
+c5ddf82c323898abc0c3dbf6040505a5b9d0c5ddf898aabf111316c5ddf8
+c5ddf8c5ddf8c5ddf893a5b90f11139fb3c9c5ddf8c5ddf891a2b6343a42
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+738291505a65c5ddf8c1d9f407080997a9bec5ddf80d0e109cafc4c5ddf8
+c5ddf8c5ddf8c5ddf8bad1eb101214c5ddf8c5ddf86a77865a6571c5ddf8
+56616c707e8dc5ddf8b4c9e2000000b0c6deb7cee7030303b3c9e1c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf88899ac3c434bc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf868758358636f
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8899aad363c44c5ddf8c5ddf8c5ddf8
+c5ddf8c3dbf6acc1d8bed5efc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+050606a2b6ccc5ddf895a7bb2f343bc5ddf84b545f474f598b9cb0899aad
+444d566f7c8cc5ddf8c5ddf823272c748292c5ddf8c5ddf8c5ddf8c5ddf8
+31373e505a6595a8bcc3dbf6c5ddf8c5ddf84047506c7a89c5ddf8c5ddf8
+21262a8b9cafc5ddf822272b95a8bcc5ddf892a3b7333a41c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8899aad30363dc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82b30368fa1b4c5ddf8c5ddf8c5ddf8
+c5ddf8adc3dab3c9e1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4515b67
+000000000000000000000000000000000000000000000000010101141719
+1e22261e22261e22261e22261e22261e22261e22261e22261e22261f2327
+20242821252921262a22272b23272c24282d25292e252a2f262b30272c31
+272c31282d32282d33292e342a2f352b30362c31372c32382d33392e343a
+2f343b393b3d3e3e3e3f3f3f404040414141424242434343444444454545
+4646464747474848484848484949494a4a4a4b4b4b4c4c4c4d4d4d4e4e4e
+4f4f4f5050505151515252525353535353535454545555555656564c4c4c
+484848ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf88797aa1d20244047502f353c272c31c5ddf8
+c5ddf8404750262b30626e7b49525c5d6875c5ddf865728065717fc5ddf8
+c5ddf815181bafc4dcc5ddf8616d7a25292e4c55601c2023404851c5ddf8
+bed6f02c32382f353c636f7d414952738190c5ddf8c5ddf832394092a3b7
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf84f59647a899ac5ddf8c5ddf8c5ddf8c5ddf8bbd2ec171a1d
+bbd2ecc5ddf8c5ddf8c5ddf8c5ddf8616d7a1b1e22c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8acc1d8707e8d2b30360d0f110d0e10000000
+000000101214a6bad1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86a77860a0b0c000000000000
+0000000000000d0e1094a6bac5ddf8c5ddf8c5ddf8c5ddf86c7a890b0d0e
+6b7887697685171a1dc2daf5c5ddf84c5560353b438696a92e343a5d6875
+c5ddf8bad0ea5f6b7898aabf8797aa171a1ebdd4eec5ddf8c5ddf8bed5ef
+10121477869690a2b5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8adc2d9181b1f657280454e5710121497a9bec5ddf8687583282d33
+8191a38e9fb2535d69c3dbf6bad1eb101214c5ddf8c5ddf86a77865a6571
+c5ddf88fa1b41e21258292a4414952040505b0c6dec5ddf84e5863363c44
+8899ac899aad5b6773c5ddf8c5ddf88899ac3c434bc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf892a3b7
+363c44c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8657280606c79c5ddf8c5ddf8
+c5ddf8c5ddf8b8cfe80000008798abc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8050606b3c9e1c5ddf8a6bad116191cc5ddf83f474f3f474f687583
+6875836875838ea0b3c5ddf8c5ddf823272c9fb2c8c5ddf8c5ddf8c5ddf8
+c5ddf8bad0ea6f7c8c1a1d211e2125b6cce5c5ddf8363d458190a2c5ddf8
+c5ddf8343a427f8fa0c5ddf822272ba8bcd4c5ddf898aabf2c3238c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf896a9bd252a2f
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82024289cafc4c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b9d0e98595a8414952101315101214030303000000000000000000
+0d0f119cafc5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+dfdfdf494949ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef9fb3c98797aa4d5661
+c5ddf8c5ddf8c5ddf899acc17c8b9c92a4b8c1d8f3c5ddf8adc3daadc2d9
+c5ddf8c5ddf899acc1bfd6f1c5ddf8c5ddf8a9bed58899acb2c8e0a4b8cf
+c5ddf8c5ddf8c3dbf693a5b97c8b9c98abc0c3dbf6c5ddf8c5ddf8a0b4ca
+b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8acc1d82a2f35c5ddf8c5ddf8c5ddf8c5ddf872808f
+626e7cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf83b424a667381c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f18ea0b3
+4b545f1416190506060a0c0da6bad1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c3dbf63a41490d0e10
+0000000101010e10125e6976c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7a89
+525c68626e7c677482bad0eac5ddf8c5ddf8c1d8f36c79884c5560738190
+c3dbf6c5ddf8c1d8f36f7c8c4b545f65717fa3b6cdc5ddf8c5ddf8c5ddf8
+c5ddf8a8bcd4717f8e667381c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8bad1eb72808f93a5b925292eaec3dbc5ddf8c5ddf8
+899aad515b67515b67808fa1c5ddf8c0d7f26a7786c5ddf8c5ddf898aabf
+8fa1b4c5ddf8c5ddf8a3b7ce55606b8797aa707d8dbad1ebc5ddf8c4dcf7
+7d8d9e4e586355606b8c9db1c5ddf8c5ddf8a6bbd28190a2c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8282d33aabfd6c5ddf8c5ddf8c5ddf8c3dbf6202428b3c9e1c5ddf8
+c5ddf8c5ddf8c5ddf89db0c6090a0bb4cae3c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf80506068e9fb2c5ddf88190a247505ac5ddf8626e7b434c55
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf823272ca1b5cbc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bad1eb25292e899aadc5ddf8525c68545f6a
+c5ddf8c4dcf70d0e109fb2c8c5ddf822272ba8bcd4c5ddf898aabf2c3238
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b7cde6
+0a0c0dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7060708bbd2ecc5ddf8
+c5ddf8c5ddf8c5ddf891a2b693a5b9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a3b7ce68758325292e0e1012
+0c0d0f0000000a0b0c9cafc4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffdddddd4a4a4affffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf892a4b88797aa8c9db12d3339
+8b9cb0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8677482adc3dac5ddf8c5ddf8c5ddf8
+5c6874b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf83d444cbbd2ecc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8a9bed56e7b8b4c5560aec3dbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+90a2b55b667264707e9fb2c8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+6c7a8958626ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c4dcf79db0c6c4dcf794a6ba262b30c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8899aad5f6b78c5ddf8c5ddf8c5ddf88e9fb25a6571c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf86a77865e6976c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8050606272c31545e6a1b1f2391a2b6c5ddf8b8cfe8
+24282d363c44636f7d3c434b808fa1c5ddf8c5ddf823272ca1b5cbc5ddf8
+c5ddf8c5ddf8c5ddf82b3036636f7d5b66721a1d21bed5efc5ddf8a6bbd2
+1013154a545e282d333d444cc5ddf8c5ddf822272ba8bcd4c5ddf898aabf
+2c3238c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8262b30a4b8cfc5ddf8c5ddf8c5ddf8c5ddf89cafc52c3137c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8383f46444d56c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+bdd4ee8b9caf48515b10121408090a9aadc2c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffdcdcdc4b4b4bffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a4b8cf5d68755d6875
+a4b8cfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8808fa1707d8dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88292a48190a28190a2
+8190a28190a2a2b6ccc5ddf8c3dbf63d444c25292e525c68a3b7cec5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d9f4c3dbf6c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8050606adc2d98495a7bbd2ecc5ddf8c5ddf8
+c5ddf8c1d8f38fa1b47d8c9d9cafc5c4dcf7c5ddf8c5ddf89cafc5bcd3ed
+c5ddf8c5ddf8c5ddf8c5ddf8a6bad17f8fa091a2b6c0d7f2c5ddf8c5ddf8
+c5ddf8b0c6de8190a28d9eb1c2daf5c5ddf8c5ddf89cafc5bed5efc5ddf8
+bad0ea9fb2c8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf88696a94f5964c5ddf8c5ddf8c5ddf8c5ddf849525c8b9cb0
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf812141790a2b5c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed57d8c9dbdd4eec5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffdbdbdb4c4c4cffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8050606bfd6f1c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c4dcf7535d69c2daf5c5ddf8c5ddf8c1d8f3545e6a
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c6de48515bc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffdadada4e4e4effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85f6a77c2daf5c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd9d9d94f4f4fffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b8cfe8c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd8d8d8505050ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf87e8e9f282d335b6773c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd7d7d7515151ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bad0ea131518c4dcf7c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f38797aab1c7dfc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd5d5d5525252
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf80a0c0dc0d7f2c5ddf8c5ddf8
+c5ddf8c5ddf898abc0758393c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c0d7f2697584171a1e9fb3c9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd4d4d4
+535353ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8171a1dadc2d9c5ddf8
+c5ddf8c5ddf8c5ddf86673811a1d21c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85f6a77
+6c7a89c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d3d3d3545454ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8657280333a41
+8494a6c5ddf8c5ddf8c5ddf8b6cce5aabfd6c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+697584626e7bc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8363d4594a6bac5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd2d2d2555555ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85c6874
+3d454d91a2b6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf87e8e9f414952c5ddf8c5ddf8c5ddf8c5ddf8c5ddf81113168798ab
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd1d1d1575757ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+14171ab0c5ddc5ddf8c5ddf8c5ddf8c5ddf8a6bbd27d8d9ec5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8b9d0e92d33392a2f35abc0d7c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0d0d0585858ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8bed5efb4cae3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf80a0c0dc0d7f2c5ddf8c5ddf8c5ddf8c5ddf8717f8e0b0d0ec5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf896a9bd21262a9db0c6c1d9f4c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffcfcfcf595959ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b7cee714171ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf84b545f57616d
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf86d7b8a5a6571c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8515b668fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffcdcdcd5a5a5affffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf87887972c3137667381c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8444d56
+b4c9e2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8677482626e7cc5ddf8c5ddf8c5ddf8
+c5ddf8c3dbf60607087d8c9dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffcccccc5b5b5bffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+b2c8e0394148c5ddf8c5ddf8c5ddf83f474facc1d8c5ddf88a9bae282d32
+202428626e7cc4dcf7c5ddf8aabfd62a2f352a2f358e9fb2c5ddf8c5ddf8
+c5ddf8a9bdd44a535d262b3057616d404851c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee3c434b8798abc5ddf8c5ddf8
+c5ddf8c5ddf89cafc5171a1dc0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffcbcbcb5c5c5cffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8262b309baec3c5ddf8a3b6cd1e2226c5ddf8b1c7df0a0c0d
+92a3b7abc0d7262b307f8fa0c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8
+c5ddf8c5ddf8282d327f8fa0afc4dc2a2f35404851c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bcd3ed373e465d6875bbd2ecc5ddf8
+c5ddf8c5ddf8c5ddf89baec38fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffcacaca5d5d5d
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf86c7a8957616dc5ddf85f6a7765717fc5ddf88393a5
+292e34c5ddf8c5ddf865717f47505ac5ddf8c5ddf8c5ddf8474f597d8d9e
+c5ddf8c5ddf8b6cce50d0e10c4dcf7c5ddf86a7786404851c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffc9c9c9
+5f5f5fffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b1c7df16191cc3dbf61b1f23abc0d7c5ddf8
+7988983d454dc5ddf8c5ddf87786963c434bc5ddf8c5ddf8c5ddf8474f59
+7d8d9ec5ddf8c5ddf8a2b6cc1b1f23c5ddf8c5ddf87d8c9d404851c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+c8c8c8606060ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8343a426a77862c3238c5ddf8
+c5ddf895a7bb121417c5ddf8c5ddf84e58635b6773c5ddf8c5ddf8c5ddf8
+474f597d8d9ec5ddf8c5ddf8c4dcf7101315bad1ebc5ddf8545e6a404851
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc7c7c7616161ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87b8a9b050606738291
+c5ddf8c5ddf8c5ddf83239402c313748515b141619adc3dac5ddf88899ac
+5b67732125293a41495b6773a3b6cdc5ddf8616d7a25292e4c55601c2023
+404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffc5c5c5626262ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef93a5b9
+bbd2ecc5ddf8c5ddf8c5ddf8c1d8f38b9caf8191a3b4c9e2c5ddf8c5ddf8
+a9bdd493a5b993a5b993a5b993a5b9b4cae3c5ddf8c5ddf8a9bed58899ac
+b2c8e0a4b8cfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffc4c4c4636363ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffc3c3c3646464ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5efbdd4ee
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8adc2d9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9c1d9f4c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc2c2c2656565ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf83d454d
+9fb2c8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+050606c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8748292b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8717f8e6c7988c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffc1c1c1676767ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a0b4ca
+30363dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8050606c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8bbd2ec1d2024
+bed5efc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8a0b4ca64707e56616cbbd2ecc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff2f7fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8e0edfbc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffc0c0c0686868ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf87a899a262b301e21253d454dadc2d9c5ddf8c5ddf893a5b9
+323940343a42606c798696a9c5ddf8c2daf568758325292e40485198abc0
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+4c5560798898c5ddf8c5ddf8c5ddf8c1d9f458636f292e34262b308190a2
+c5ddf8c5ddf805060674829223272c515b66bad0eac5ddf8c4dcf7657280
+212529272c318797aac5ddf8c5ddf8c5ddf83f474f8b9caf333a411e2226
+92a4b87d8d9e2a2f3505060625292e2a2f358a9baec5ddf8c5ddf8c5ddf8
+4b545f7a899ac5ddf8c5ddf8c5ddf8c5ddf8a8bcd4687583c2daf5c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad0ea8495a7
+3e464f1012140304041b1f22b7cde6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffcde1f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8f1f7fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffbfbfbf696969
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf898aabfb7cee7c1d9f46c7988363d45c5ddf8b9d0e9
+1012149cafc59eb1c70d0e10717f8ec5ddf86d7b8a30363daec3dba3b7ce
+1b1e22c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8262b3098abc0c5ddf8c5ddf8c5ddf88292a4414952c1d9f4bed6f0
+a6bbd2c5ddf8c5ddf802020264707ebad0ea3a41498191a3c5ddf88495a7
+202428a9bdd496a9bd0d0f11adc3dac5ddf8c5ddf8191c20343a4298aabf
+b3c9e1a7bcd3c5ddf8c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf86a7786545f6ac5ddf8c5ddf8c5ddf8c5ddf88798ab000000bed6f0
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a2b6cc63707d21252a0e0f11
+090a0c0000000203031d2125b7cde6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeef5fdd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8cbe1f9e4effcffffff
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffbebebe
+6a6a6affffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bed5ef8ea0b35f6a774a535d191c20c5ddf8
+8595a83a4149c5ddf8c5ddf83b424a717f8ec5ddf82a2f355f6a778b9caf
+899aad2d333990a2b5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8070809b3c9e1c5ddf8c5ddf8c5ddf88b9cb01e21257d8d9e
+b3c9e1c5ddf8c5ddf8c5ddf8020202b6cce5c5ddf8707e8d545f6ac5ddf8
+4f59645d6875c5ddf8c5ddf831373e7b8a9bc5ddf8c5ddf8191c207e8e9f
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf88495a7353b43c5ddf8c5ddf8c5ddf8c5ddf8bbd2eca6bad1
+c4dcf7c5ddf8c5ddf8bbd2ec728090373d450d0f110c0e0f010202000000
+000000000000020202171a1e95a8bca0b4caa0b4ca9fb3c99fb2c89fb2c8
+9eb1c79db0c69db0c69cafc59cafc49cafc49baec39aadc29aadc299acc1
+98abc098abc098aabf98aabf97a9be96a9bd96a9bd95a8bc95a7bb95a7bb
+94a6ba93a5b993a5b992a4b892a3b792a3b791a2b691a2b690a2b58fa1b4
+8fa1b48ea0b38e9fb28e9fb28d9eb18c9db18c9db18b9cb08b9caf8b9caf
+8a9bae8c9caeb2b2b2b1b1b1b1b1b1b0b0b0afafafafafafaeaeaeadadad
+adadadacacacababababababaaaaaaaaaaaaa9a9a9a8a8a8a8a8a8a7a7a7
+a6a6a6a6a6a6a5a5a5a4a4a4a4a4a4a3a3a3a2a2a2a2a2a2a1a1a1a1a1a1
+a0a0a0cdcdcdffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fcfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
+fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffeffffffffff
+ffffffcae0f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8f4f8feffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+bcbcbc6b6b6bffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8454e57515b6790a2b5808fa114171a
+c5ddf873819049525cc5ddf8c5ddf84a535d717f8ec5ddf81e2125515b66
+6875836875836875839eb1c7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8141619a9bdd4c5ddf8c5ddf8c5ddf8c5ddf895a7bb
+434b54050606758393c5ddf8c5ddf8050606c5ddf8c5ddf87685954e5762
+c5ddf8464e58717f8ec5ddf8c5ddf8434c55707d8dc5ddf8c5ddf8191c20
+a9bdd4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8191c20abc0d7c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf87a8899414952c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8b8cfe8616d7a090b0c010101010102000000000000
+000000000000000000030304202428424a53434b54434c55434c55444d56
+444d56454e57464e58464e58474f5947505a47505a48515b49525c49525c
+4a535d4a545e4a545e4b545f4c55604c55604d56614d56614e57624e5863
+4e58634f5964505a65505a65515b66515b67515b67525c68535d69535d69
+545e6a545f6a545f6a55606b55606b56616c57616d57616d58626e58636f
+58636f5964705c6672757575767676777777777777787878797979797979
+7a7a7a7a7a7a7b7b7b7c7c7c7c7c7c7d7d7d7e7e7e7e7e7e7f7f7f808080
+808080818181828282828282838383838383848484858585858585868686
+8787875d5d5d787878ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffe3effcc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8d0e4f9ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffbbbbbb6c6c6cffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c2daf50a0c0dbdd4eec5ddf8717f8e
+14171ac5ddf8a7bcd31e2125c4dcf7c4dcf71e2226717f8ec5ddf8404851
+65717fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8343a428d9eb1c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf87382912f353cc5ddf8c5ddf8050606c5ddf8c5ddf8768595
+4e5762c5ddf8626e7b454e57c5ddf8c5ddf81b1f238fa1b4c5ddf8c5ddf8
+191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8282d339db0c6c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf85e6976626e7cc5ddf8c5ddf8c5ddf8c5ddf8
+b3c9e17a899abbd2ecc5ddf8c5ddf8c5ddf8c5ddf8b2c8e0798899333a41
+0e10120e10120000000000000000000c0e106c7988c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffafafaf787878ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffeffffeef5fdddebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
+dcebfbdcebfbe9f2fcfefeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffbababa6d6d6dffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8404851404851525c68
+30363d14171ac5ddf8c5ddf84c5560272c312c3238282d3372808fc5ddf8
+a6bad11a1d21424a53626e7b30363d9fb2c8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8697584616d7ac5ddf8c5ddf8c5ddf8
+6976854d56616976852b3036768494c5ddf8c5ddf8050606c5ddf8c5ddf8
+7685954e5762c5ddf8b0c6de14171a454e572f353c2e343ac4dcf7c5ddf8
+c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7988252a2f
+5a65719db0c6c5ddf8c5ddf8c5ddf831373e97a9bec5ddf8c5ddf8c5ddf8
+c5ddf892a3b7000000b0c5ddc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c2daf598aabf57616d191d200f11130607080404056a7786c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffaeaeae797979ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffb9b9b96f6f6fffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf793a5b9
+8c9db1bad0ea98abc0c5ddf8c5ddf8c5ddf8abc0d7b0c6de3e464e97a9be
+c5ddf8c5ddf8bad0ea8a9bae7e8e9fa6bad1c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad1eb202428c0d7f2c5ddf8
+c5ddf8bad1eb8d9eb17f8fa0afc4dcc5ddf8c5ddf8c5ddf895a7bbc5ddf8
+c5ddf8b1c7dfa7bcd3c5ddf8c5ddf8b5cbe48292a48a9baec0d7f2c5ddf8
+c5ddf8c5ddf89aadc2bed6f0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+b6cce594a6bab2c8e0c5ddf8c5ddf8a3b6cd32383fc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf86c7988363c44c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b3c9e17a899a343b420a0b0c
+6e7b8bc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffadadad7a7a7affffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffb8b8b8707070ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf875839395a8bc7583931c2023
+c3dbf6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87887979cafc5
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87c8b9c98abc0c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf85c68749cafc4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c2daf59aadc2b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffadadad7b7b7bffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffb7b7b7717171ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88191a3535d69758393
+b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffacacac7b7b7bffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffb6b6b6727272ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffababab7c7c7cffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffb4b4b4737373ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffababab7d7d7d
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffb3b3b3747474
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffaaaaaa
+7d7d7dffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b2b2
+757575ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+a9a9a97e7e7effffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+b1b1b1767676ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffa9a9a97f7f7fffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffafcfef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
+f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef8fbfe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffb0b0b0787878ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffa8a8a87f7f7fffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f9fcfed8e8fac6ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8d1e4f9f5f9feffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffafafaf797979ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffa7a7a7808080ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffe1edfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8d8e8faffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffaeaeae7a7a7affffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffa7a7a7818181ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd1e4f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c6ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffacacac7b7b7bffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffa6a6a6818181ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffababab7c7c7cffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffa5a5a5828282ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffaaaaaa7d7d7dffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bed5efb4cae3c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffa5a5a5838383ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffa9a9a97e7e7effffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffa4a4a4838383
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffa8a8a8808080
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3ed
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffa3a3a3
+848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffa7a7a7
+818181ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8b2c8e0394148c5ddf8c5ddf8c5ddf83f474facc1d8
+c5ddf88a9bae282d32202428626e7cc4dcf7c5ddf8aabfd62a2f352a2f35
+8e9fb2c5ddf8c5ddf8c5ddf8a9bdd44a535d262b3057616d404851c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+a3a3a3858585ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+a6a6a6828282ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8262b309baec3c5ddf8a3b6cd1e2226
+c5ddf8b1c7df0a0c0d92a3b7abc0d7262b307f8fa0c5ddf8c5ddf8c5ddf8
+474f597d8d9ec5ddf8c5ddf8c5ddf8282d327f8fa0afc4dc2a2f35404851
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffa2a2a2858585ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffa4a4a4838383ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7a8957616dc5ddf85f6a77
+65717fc5ddf88393a5292e34c5ddf8c5ddf865717f47505ac5ddf8c5ddf8
+c5ddf8474f597d8d9ec5ddf8c5ddf8b6cce50d0e10c4dcf7c5ddf86a7786
+404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffa1a1a1868686ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffa3a3a3848484ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7df16191cc3dbf6
+1b1f23abc0d7c5ddf87988983d454dc5ddf8c5ddf87786963c434bc5ddf8
+c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8a2b6cc1b1f23c5ddf8c5ddf8
+7d8c9d404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffa0a0a0878787ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffa2a2a2858585ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8343a42
+6a77862c3238c5ddf8c5ddf895a7bb121417c5ddf8c5ddf84e58635b6773
+c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8c4dcf7101315bad1eb
+c5ddf8545e6a404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffa0a0a0878787ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88495a77482928798abc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88495a7bed5efc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c5dd90a2b5c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a1b5cb748292748292bcd3edc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffa1a1a1868686ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+7b8a9b050606738291c5ddf8c5ddf8c5ddf83239402c313748515b141619
+adc3dac5ddf88899ac5b67732125293a41495b6773a3b6cdc5ddf8616d7a
+25292e4c55601c2023404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff9f9f9f888888ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88ea0b3626e7c2e343a
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8181b1fb2c8e0c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85a6571a2b6cc
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf893a5b94a535d
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd28190a20e1012aec3db
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffa0a0a0888888ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8bed5ef93a5b9bbd2ecc5ddf8c5ddf8c5ddf8c1d8f38b9caf8191a3
+b4c9e2c5ddf8c5ddf8a9bdd493a5b993a5b993a5b993a5b9b4cae3c5ddf8
+c5ddf8a9bed58899acb2c8e0a4b8cfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff9e9e9e898989ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c4dcf7afc4dcb9d0e9c5ddf8c5ddf8c5ddf896a9bd
+2e343ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b3c9e1b3c9e1c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8bdd4eeb0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+b2c8e0bad0eac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8b9d0e9b4c9e2c5ddf8c5ddf8c5ddf8181b1fb2c8e0
+b7cee7c2daf5c5ddf8c5ddf8c5ddf8c5ddf8b7cde6b7cde6c5ddf8c5ddf8
+c5ddf8c5ddf8c0d7f2c4dcf7c1d9f4b0c5ddc5ddf8c3dbf6bed6f02f343b
+8fa1b4bed6f0c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c0d7f2c4dcf7b7cde6c5ddf8c5ddf8c5ddf8c5ddf8c0d7f2bed6f0
+c1d8f3c5ddf8c5ddf8c5ddf8bfd6f1bad1ebbed5efc1d9f4bbd2ecc5ddf8
+c5ddf8bfd6f1c5ddf8b6cce5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf816191c
+aec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff9f9f9f898989ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff9e9e9e8a8a8affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf895a7bb131518252a2f2024288494a6c5ddf8c5ddf8
+96a9bd2e343ac5ddf8c5ddf8c5ddf8c5ddf82d33392d3339282d3325292e
+aec3dbc5ddf8c5ddf847505a2f343b373e463d454dc5ddf8c5ddf8a9bdd4
+282d33373e46282d337d8d9ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c2daf5363c44323940323940525c68c5ddf8c5ddf8181b1f
+47505a282d321b1f239eb1c7c5ddf8c4dcf7454e57131518131518444d56
+c4dcf7c5ddf8c5ddf830363d616d7a14161923272c67748292a3b730363d
+0b0d0e25292e30363d7b8a9bc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8292e34353b4321262a282d3295a7bbc5ddf8c5ddf84b545f
+22272b383f46c5ddf8c5ddf8c5ddf80d0e1032383f15181b3941481e2125
+a1b5cbc5ddf8101214363c4424282d31373ea3b6cdc5ddf8c5ddf8c5ddf8
+16191caec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff9e9e9e8a8a8affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bdd4eebdd4eec5ddf8c5ddf8c5ddf8b6cce5
+c4dcf7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff9d9d9d8a8a8a
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c0d7f214171a8797aac5ddf8c4dcf7b3c9e1c5ddf8
+c5ddf896a9bd2e343ac5ddf8c5ddf8c5ddf8c5ddf8b7cde6c5ddf8c5ddf8
+5a65715c6874c5ddf8a6bbd21e2125c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8
+5c6874687583c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf88d9eb1373e46c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8
+181b1f72808fc5ddf86976855e6976c5ddf88798ab1f2327bed5efbfd6f1
+24282d8696a9c5ddf8c5ddf830363d31373eb7cee7c5ddf8bcd3edc5ddf8
+c5ddf830363d94a6bac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8292e3455606bc5ddf892a3b732383fc5ddf8c5ddf8
+c5ddf88c9db1383f46c5ddf8c5ddf8c5ddf8060607c2daf5272c318696a9
+697584788797c5ddf8101214707d8dc5ddf87887974c5560c5ddf8c5ddf8
+c5ddf816191caec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c8b8b8b
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf88c9db1a1b5cbc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf83b424aa1b5cbc5ddf8c5ddf8c5ddf8
+57616d8595a8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c
+8b8b8bffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8a4b8cf0d0f11c2daf5c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf896a9bd2e343ac5ddf8c5ddf8c5ddf8c5ddf890a2b5505a65
+2b30361b1e224a535dc5ddf8c0d7f21e22263d454d768494bcd3edc5ddf8
+c5ddf88c9db1171a1e535d6992a3b7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b2c8e0171a1e454e577e8e9fc1d8f3c5ddf8
+c5ddf8181b1fa9bdd4c5ddf88c9db1383f46c5ddf8616d7a515b66c5ddf8
+c5ddf8535d695d6875c5ddf8c5ddf830363d768494c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf830363d94a6bac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8292e348798abc5ddf8bfd6f1090a0bbed5ef
+c5ddf8c5ddf88c9db1383f46c5ddf8c5ddf8c5ddf814171ac5ddf8383f46
+98abc0768595616d7ac5ddf8101214a1b5cbc5ddf8a9bed5171a1dc5ddf8
+c5ddf8c5ddf816191caec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff9b9b9b
+8c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88899ac4e576258636f9baec3c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84c5560788797c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89eb1c7323940c5ddf8c5ddf8c5ddf8
+c5ddf8abc0d7262b30c4dcf7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+9c9c9c8c8c8cffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a4b8cf0d0f11c2daf5c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf897a9be2d3339c5ddf8c5ddf8c5ddf8b9d0e916191c
+a0b4cac4dcf769768547505ac5ddf8c5ddf8c2daf58a9bae1e222621262a
+c5ddf8c5ddf8c5ddf8b4cae36774820506066c7988c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f17f8fa01416193b424a
+c5ddf8c5ddf8181b1fb2c8e0c5ddf88e9fb2363d45c5ddf8626e7b515b66
+c5ddf8c5ddf8535d695d6875c5ddf8c5ddf830363d94a6bac5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf830363d94a6bac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8292e348797aac5ddf8bfd6f108090a
+bcd3edc5ddf8c5ddf88c9db1383f46c5ddf8c5ddf8c5ddf8171a1ec5ddf8
+3b424a9cafc47988985e6976c5ddf8101214a0b4cac5ddf8a9bdd414171a
+c5ddf8c5ddf8c5ddf8171a1dadc3dac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+9a9a9a8d8d8dffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c1d8f32d33390b0d0e0000000000000b0d0e
+5b6672c5ddf8c5ddf8c5ddf8c5ddf84f596465717f25292e525c68afc4dc
+c5ddf8c5ddf88a9bae282d32202428626e7cc4dcf7c5ddf8c5ddf8667381
+2c323824282d6d7b8ac5ddf8a6bad12a2f351012141a1d212a2f35626e7c
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8626e7b636f7d
+282d3347505aa7bcd3c5ddf8c5ddf8a3b7ce39414825292e6c7988bbd2ec
+c5ddf8c5ddf87988987381904f59641b1f2357616dc5ddf8b7cee7505a65
+262b30292e3492a4b8c5ddf8c5ddf88899ac272c3121252964707ec4dcf7
+c5ddf87887976976853941482b30368b9cafc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84a535d7c8b9cc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf831373e94a6bac5ddf8c5ddf8c5ddf8c5ddf89cafc5
+717f8ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff9b9b9b8c8c8cffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c0d7f214171a8797aac5ddf8
+c4dcf7b4c9e2c5ddf8c5ddf8bad1eb131518bdd4eec5ddf8c5ddf89cafc4
+272c31c5ddf8bed6f02a2f3547505ac5ddf8bad1ebc1d8f3c5ddf8b4c9e2
+0e1012c0d7f2c5ddf8b6cce5c5ddf8c5ddf86c7988505a65c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b7cee7c3dbf6c5ddf89cafc5
+1f2327c5ddf8c5ddf8181b1fb2c8e0c5ddf88e9fb2363d45c5ddf8899aad
+1e2125bcd3edbed5ef22272b8899acc5ddf8c5ddf830363d94a6bac5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf84d5661798898c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8292e34535d69c5ddf88ea0b3
+31373ec5ddf8c5ddf8c5ddf88c9db1383f46c5ddf8c5ddf8c5ddf8171a1e
+c5ddf83b424a9cafc47988985e6976c5ddf81012146c7a89c5ddf8758393
+4a545ec5ddf8c5ddf8c5ddf84047508696a9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff9999998e8e8effffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85c6874070809000000000000000000
+0000000d0f1197a9bec5ddf8c5ddf8c5ddf82e343a363d45b4c9e26e7b8b
+3a4149c5ddf8b1c7df0a0c0d92a3b7abc0d7262b307f8fa0c5ddf89cafc5
+2b3036bfd6f1c2daf5a3b6cdc5ddf8c5ddf8c5ddf84c5560788797c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8454e57
+262b30adc3da8494a623272cc5ddf8bbd2ec141619808fa1bbd2ec55606b
+6c7988c5ddf8c5ddf864707e101214798898b8cfe89cafc4c5ddf8697584
+596470c4dcf7bad0eaabc0d7c5ddf8b0c5dd0a0c0d93a5b9aabfd625292e
+8292a4c5ddf8626e7c1b1f23a9bdd494a6ba202428c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf824282d9baec3c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8515b666e7b8bc5ddf8c5ddf8c5ddf8c5ddf8
+6e7b8b121417c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff9a9a9a8d8d8dffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a8bc171a1d
+262b3022272b8495a7c5ddf8c5ddf8c5ddf86976851d202431373ec5ddf8
+c5ddf83d444c2a2f351b1e2247505a47505ac5ddf899acc1181b1f394047
+282d326d7b8ac5ddf8c5ddf856616c24282d363d452b3036a5b9d0c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88393a51b1e22394047
+272c318191a3c5ddf8c5ddf8181b1fb2c8e0c5ddf88e9fb2363d45c5ddf8
+c4dcf7454e57111316121417444d56c4dcf7c5ddf8c5ddf830363d94a6ba
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf899acc12d3339282d33788797c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8292e34323940202428
+272c3195a7bbc5ddf8a2b6cc2a2f351e21250c0d0f2a2f355b6773c5ddf8
+171a1ec5ddf83b424a9cafc47988985e6976c5ddf8101214333a4122272b
+30363da2b6ccc5ddf8c5ddf8c5ddf898aabf292e341e21259db0c6c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff9898984343437979797b7b7b7c7c7c7e7e7e7f7f7f818181
+8282828484848686868787878989898a8a8a8c8c8c8d8d8d8f8f8f909090
+9292929494949595959797979898989a9a9a9b9b9b9d9d9d9e9e9ea0a0a0
+a1a1a1a3a3a3a5a5a5a6a6a69da1a78292a48494a68495a78696a98797aa
+8899ac8a9bae8b9caf8c9db18d9eb18ea0b3101215000000000000000000
+0000000000000000004e5762c5ddf8c5ddf8c5ddf82e343a798898c5ddf8
+bcd3ed0b0d0ec1d9f48393a5292e34c5ddf8c5ddf865717f47505ac5ddf8
+a5b9d0121417768494adc3dac5ddf8c5ddf8c5ddf8c5ddf84c5560788797
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+454e57626e7bc5ddf8c5ddf8101315b4c9e28b9cb0181b1f8b9cb08a9bae
+717f8e2f343bc5ddf8c5ddf864707e333a41c5ddf8c5ddf8c5ddf8c5ddf8
+72808f2b30368495a7b8cfe8c5ddf8c5ddf88190a22c3238c5ddf8c5ddf8
+626e7c4a535dc5ddf8626e7c545f6ac5ddf8c5ddf80d0e10b8cfe8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7050606b6cce5
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86b78874e5863c5ddf8c5ddf8c5ddf8
+c5ddf8b7cee7a9bdd4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff9a9a9a8e8e8effffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b0c6debcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8b7cde6c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3
+adc3dac3dbf6c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9b4c9e2c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed6f0
+aec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8b7cde6b7cde6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8292e349baec3
+b6cce5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8101214b4cae3
+b5cbe4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffdfdfdfafafafadadadabababaaaaaaa8a8a8a6a6a6
+a4a4a4a3a3a3a1a1a19f9f9f9e9e9e9c9c9c9a9a9a989898979797959595
+9393939292929090908e8e8e8c8c8c8b8b8b898989878787868686848484
+8282828181817f7f7f7d7d7d7b7b7b7275795c68745b66725a657158636f
+57616d55606b545f6a535d69515b67515b664f5964060607000000000000
+0000000000000000000000003a4149c5ddf8c5ddf8c5ddf82e343a8a9bae
+c5ddf8c5ddf80a0c0db2c8e07988983d454dc5ddf8c5ddf87786963c434b
+c5ddf8c5ddf89fb3c94e58630405055f6a77c5ddf8c5ddf8c5ddf84c5560
+788797c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8454e57738190c5ddf8c5ddf82024289baec37f8fa01d2024687583
+687583687583707e8dc5ddf8c5ddf864707e5f6a77c5ddf8c5ddf8c5ddf8
+c5ddf8c4dcf7899aad363d450a0b0c8a9baec5ddf8768595404750c5ddf8
+c5ddf87482923e464ec5ddf8626e7c687583c5ddf8c5ddf8121417b2c8e0
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8101315
+abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8606c795b6773c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff9999998e8e8effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8292e34
+9baec3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8101214
+b4cae3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8343a42000000
+000000000000000000000000060708707e8dc5ddf8c5ddf8c5ddf82e343a
+64707ec5ddf8a9bed51e2226c5ddf895a7bb121417c5ddf8c5ddf84e5863
+5b6773c5ddf8c5ddf8c5ddf8c5ddf88e9fb216191cc5ddf8c5ddf8c5ddf8
+5b67736a7786c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8454e574d5661c5ddf8bed5ef0d0f11c1d9f4a2b6cc0a0c0d
+bed6f0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf864707e606c79c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85b667249525cc5ddf892a4b814171a
+c5ddf8c5ddf84c55605e6976c5ddf8626e7c687583c5ddf8c5ddf8121417
+b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+32383f8fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8444d567c8b9cc5ddf8
+c5ddf8c5ddf8c5ddf8a9bdd47b8a9bc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff9898988f8f8fffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf89fb2c86e7b8b6e7b8b6e7b8b6e7b8b6e7b8bc0d7f2c5ddf8
+99acc1b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+92a4b8c0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a8bcd4
+0f11130000000000000000000506061d2024c0d7f2c5ddf8c5ddf8c5ddf8
+2e343a1d2024505a65202428707e8dc5ddf8c5ddf83239402c313748515b
+141619adc3dac5ddf87e8e9f454e576a7786363d455d6875c5ddf8c5ddf8
+c5ddf899acc1191c20545e6a8292a4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8454e57191c204a545e262b305c6874c5ddf8c5ddf8
+56616c1e21255f6a774f59644b545fc5ddf8c5ddf864707e606c79c5ddf8
+c5ddf8c5ddf8c5ddf855606b545f6a6774822125298ea0b3c5ddf8c4dcf7
+30363d2d333947505a14171aafc4dcc5ddf8626e7c687583c5ddf8c5ddf8
+121417b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8667381636f7dc5ddf8c5ddf8c5ddf8c5ddf8c3dbf61d2024adc3da
+c5ddf8c5ddf8c5ddf8c5ddf8788797030404c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff989898909090ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8a8bcd42c32380b0d0e10131549525cbad1ebc5ddf8c5ddf8c5ddf8
+c5ddf82e343a8d9eb18595a8b0c5ddc5ddf8c5ddf8c5ddf8c1d8f38b9caf
+8191a3b4c9e2c5ddf8c5ddf8bed6f092a3b77d8c9da8bcd4c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8bfd6f198abc0a6bad1c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8454e577b8a9b899aada8bcd4c5ddf8c5ddf8
+c5ddf8c5ddf8a0b4ca7d8c9d8e9fb2bed5efc5ddf8c5ddf8adc2d9acc1d8
+c5ddf8c5ddf8c5ddf8c5ddf8b6cce58899ac8393a5b4cae3c5ddf8c5ddf8
+c5ddf8c0d7f28a9bae8191a3b4cae3c5ddf8c5ddf8adc2d9adc3dac5ddf8
+c5ddf898abc0c0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8bad0ea202428c1d8f3c5ddf8c5ddf8c5ddf8899aad4b545f
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8525c684f5964c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff979797909090ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf82e343a96a9bdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8454e577f8fa0c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf87685959eb1c7c5ddf8c5ddf8c5ddf86a7786
+a9bed5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525cafc4dcc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff969696919191
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf78494a658626eb4c9e2c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+b6cce5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8758393acc1d8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8abc0d76e7b8b
+6e7b8b6e7b8b6e7b8b6e7b8bb4c9e2c5ddf88191a39fb3c9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff969696
+929292ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89eb1c721262a97a9bec1d8f3
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8515b6623272c8ea0b3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+959595929292ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86f7c8c55606bc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf87e8e9f4e5762c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff949494939393ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86875835b6672
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf892a3b7394047c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf87c8b9c92a3b7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff949494949494ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee394047
+7a8899c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89eb1c725292ec5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8282d3358626ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff939393949494ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4c9e2131518
+212529bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f32f343b515b66a3b6cd
+c5ddf8c5ddf8c5ddf8adc2d9b4c9e2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff929292959595ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c3dbf63f474f738190c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1262b305f6b78
+a9bed5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff919191969696ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf86976855a6571c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89cafc5282d32
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88fa1b495a7bbc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff919191979797ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8707e8d545e6ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf892a3b7
+394047c5ddf8c5ddf8c5ddf8c5ddf8c5ddf832394049525cc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff909090979797ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8a2b6cc1d20248b9cafbfd6f1c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+7a899a515b66c5ddf8c5ddf8c5ddf8c5ddf8c4dcf70e101295a7bbc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff8f8f8f989898
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf892a3b7697685b7cde6c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+49525c2c323895a7bbc5ddf8c5ddf8c5ddf8c5ddf8adc2d94c5560c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff8f8f8f
+999999ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+8e8e8e999999ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff8d8d8d9a9a9affffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff8d8d8d9b9b9bffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88696a95c6874c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad1eba4b8cf
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff8c8c8c9b9b9bffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87d8c9d4e5762
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a7bb
+2f353cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff8b8b8b9c9c9cffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8b6cce57482924b545f636f7dbad0eac5ddf87d8c9d
+4e576275839357616da3b6cdc5ddf8c5ddf8c2daf5707d8d4b545f6e7b8b
+c1d9f4c5ddf8c5ddf8abc0d776849498abc0535d69626e7cc3dbf66c7a89
+454e5716191c5b67735b6773c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff8b8b8b9d9d9dffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf84e57625e69769db0c67a899ab0c6dec5ddf8
+7d8c9d1012146d7b8a798898141619c5ddf8c5ddf855606b32383f8798ab
+363d45515b67c5ddf8c5ddf895a7bb171a1e373e467f8fa0697685c0d7f2
+9cafc46f7c8c24282d93a5b993a5b9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff8a8a8a9d9d9dffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf830363d707e8dbed5efc5ddf8c5ddf8
+c5ddf87d8c9d2f343bc5ddf8c5ddf81e2226a7bcd3c5ddf80b0d0e9cafc4
+c5ddf8a3b6cd070809c4dcf7c5ddf895a7bb020202b7cde6c5ddf8c5ddf8
+c5ddf8c5ddf895a7bb2f353cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff8989899e9e9effffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a3b7ce434c550c0d0f454e57
+b9d0e9c5ddf87d8c9d4e5762c5ddf8c5ddf82c323898aabfc0d7f2000000
+bed5efc5ddf8c1d8f3000000b7cee7c5ddf895a7bb282d32c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf895a7bb2f353cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff8989899f9f9f
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd2
+2024287c8b9cc5ddf87d8c9d4e5762c5ddf8c5ddf82c323898aabfc5ddf8
+0c0d0f9baec3c5ddf8a2b6cc08090ac5ddf8c5ddf895a7bb2f353cc5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf89baec32a2f35c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff888888
+9f9f9fffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8616d7a92a3b7
+90a2b51e2226a6bbd2c5ddf87d8c9d4e5762c5ddf8c5ddf82c323898aabf
+c5ddf856616c2f343b8696a9333a41535d69c5ddf8c5ddf895a7bb2f353c
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d9f41113167583938d9eb1c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffff3f8fec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8cbe0f9ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+878787a0a0a0ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f
+4f59645b667295a8bcc5ddf8c5ddf8a1b5cb899aadc5ddf8c5ddf8798898
+aec3dbc5ddf8c2daf5707d8d4b545f6e7b8bc1d9f4c5ddf8c5ddf8adc2d9
+7a899ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aabfd6738291626e7b
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffcfe3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8e2eefbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff878787a1a1a1ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffe6f0fcc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c8dff8fbfdffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff868686a1a1a1ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffebf3fdcfe3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c6def8d8e8faf1f7fdffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff858585a2a2a2ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff3f8fe
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
+f2f8fdf2f8fdfbfcfeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff848484a3a3a3ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff848484a3a3a3ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8bfd6f1b3c9e1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1
+bbd2ecc5ddf8c5ddf8c5ddf8b8cfe8c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff838383a4a4a4ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8748292b9d0e9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf894a6ba363d45c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9748292c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+525c688a9baec5ddf8c5ddf8c5ddf86f7c8c6e7b8bc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff828282a5a5a5ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd27d8c9d8ea0b3bbd2ec
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8191c20abc0d7c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf894a6ba363d45c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8acc1d8181b1fc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+b0c6de22272bc4dcf7c5ddf8c5ddf8c5ddf8bad0ea1e2125bed6f0c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff828282a6a6a6
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d9f4444c560d0f110606070c0d0f
+12151792a4b9c5ddf8c5ddf8c5ddf8c5ddf8c1d9f42d333964707e24282d
+6c7988bdd4eec5ddf8c4dcf7657280212529272c318696a9c5ddf8c5ddf8
+b7cee7505a65262b30292e3492a4b8c5ddf87d8d9e2a2f3505060625292e
+2a2f358a9baec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+acc1d849525c25292e2d3339a3b7cec5ddf894a6ba333a41515b6624282d
+6c7988c5ddf8c5ddf8b9d0e948515b1c2023343a42a5b9d0c5ddf8c5ddf8
+b1c7df3e464e7f8fa0262b302a2f35b4c9e255606b25292e0506062a2f35
+2a2f35b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8616d7a64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525c7d8c9d
+c5ddf8c5ddf8c5ddf8c5ddf8a7bcd3687583c3dbf6c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff818181
+a6a6a6ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8606b7808090a000000000000
+0000000000000f1113b4cae3c5ddf8c5ddf8c5ddf8c1d8f30000005e6976
+b6cce5434c556d7b8ac5ddf88495a71f2327a9bdd496a9bd0d0f11adc3da
+c5ddf8697584596470c4dcf7bad0eaabc0d7c5ddf8c5ddf8c5ddf8191c20
+abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf84f596472808fc5ddf8b3c9e1b2c8e0c5ddf894a6ba02020291a2b6
+b1c7df141619b4c9e2c5ddf8515b67434b54b6cce56f7c8c212529c4dcf7
+c5ddf8acc1d80708094b545fabc0d7a3b7ceb8cfe8c5ddf8acc1d8181b1f
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf83b424a8494a6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8687583
+57616dc5ddf8c5ddf8c5ddf8c5ddf88595a8000000c1d8f3c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+808080a7a7a7ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8121517000000000000
+000000000000000000030404738292c5ddf8c5ddf8c5ddf8c1d8f3000000
+acc1d8c5ddf88b9cb0394047c5ddf8505a655c6874c5ddf8c5ddf832383f
+7a899ac5ddf872808f2a2f358495a7b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8
+191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf858636f3940478b9cb0bdd4eec5ddf8c5ddf894a6ba24282d
+c5ddf8c5ddf83d454d8798abc5ddf81c202390a2b5c5ddf8bfd6f1040505
+aec3dbc5ddf8acc1d8000000b0c6dec5ddf8c5ddf8c5ddf8c5ddf8acc1d8
+181b1fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf81b1f239eb1c7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+8393a5373e46c5ddf8c5ddf8c5ddf8c5ddf8bbd2eca6bad1c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff7f7f7f4343436464646161615f5f5f5c5c5c595959565656535353
+5050504d4d4d4b4b4b4848484545454242423f3f3f3c3c3c3a3a3a373737
+3434343131312e2e2e2b2b2b2929292828282828282828282828281f2326
+1e22261e22261e22261e22261e22261e22261e22261d2125010202000000
+000000000000000000000000000000525d68c5ddf8c5ddf8c5ddf8c1d8f3
+000000bcd3edc5ddf89cafc41f2327c5ddf8464e58707e8dc5ddf8c5ddf8
+444d566f7c8cc5ddf8c4dcf7899aad363d450a0b0c8a9baec5ddf8c5ddf8
+c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c1d8f37e8e9f2b30361013159cafc5c5ddf894a6ba
+363d45c5ddf8c5ddf8434c558190a2c5ddf8131518a4b8cfc5ddf8c5ddf8
+101315a3b6cdc5ddf8acc1d8171a1dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+acc1d8181b1fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8282d3394a6bac5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8778696434c55c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffdededec1c1c1c4c4c4c7c7c7cacacacccccccfcfcfd2d2d2
+d5d5d5d8d8d8dbdbdbdddddde0e0e0e3e3e3e6e6e6e9e9e9ebebebeeeeee
+f1f1f1f4f4f4f7f7f7f9f9f9fcfcfcffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8171a1d
+0000000000000000000000000000000608097f8fa0c5ddf8c5ddf8c5ddf8
+c1d8f300000097a9bec5ddf8768595515b67c5ddf8626e7b444d56c5ddf8
+c5ddf81b1f238ea0b3c5ddf8c5ddf8c5ddf8c5ddf85b667249525cc5ddf8
+c5ddf8c5ddf8282d339db0c6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c2daf5434c55626e7cc5ddf8
+94a6ba363d45c5ddf8c5ddf8434c558190a2c5ddf82f343b788797c5ddf8
+adc3da050606bcd3edc5ddf8acc1d8181b1fc5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b8cfe80f1113c3dbf6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525c788797c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf85b677365717fc5ddf8c5ddf8c5ddf8c5ddf8b2c8e07a899a
+bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+7f8fa10a0c0d000000000000000000000000171a1ec0d7f2c5ddf8c5ddf8
+c5ddf8c1d8f3010101282d33535d691b1f2398aabfc5ddf8b1c7df14171a
+454e5730363d2e343ac4dcf7c5ddf856616c545f6a6774822125298ea0b3
+c5ddf8c5ddf8c5ddf86c7a89252a2f5a65719db0c6c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8434c555b6672636f7d191c20a6bad1
+c5ddf894a6ba363d45c5ddf8c5ddf8434c558190a2c5ddf88c9db10e1012
+535d691a1d215f6b78c5ddf8c5ddf8acc1d8181b1fc5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf83b424a3941485b6773b8cfe8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87d8d9e4c5560c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf82f343b99acc1c5ddf8c5ddf8c5ddf8c5ddf88fa1b4
+000000b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf87583940d0f110f11130f11132b3036b0c6dec5ddf8c5ddf8
+c5ddf8c5ddf8c1d8f3030404b0c5dd8495a7bdd4eec5ddf8c5ddf8c5ddf8
+b5cbe48292a48a9baec0d7f2c5ddf8c5ddf8b6cce58899ac8292a4b4cae3
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b6cce594a6bab2c8e0c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c6de8494a68798abbad0ea
+c5ddf8c5ddf8b9d0e9a1b5cbc5ddf8c5ddf8a5b9d0b4c9e2c5ddf8c5ddf8
+a6bbd27d8d9e97a9bec5ddf8c5ddf8c5ddf8bed6f09aadc2c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aabfd693a5b9bfd6f1c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c2daf522272bb6cce5
+c5ddf8c5ddf8c5ddf8a0b4ca343a42c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+697685383f46c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7a9bed5b9d0e9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c1d8f3030404c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88797aa
+8e9fb2c5ddf8c5ddf8c5ddf87a899a9aadc2c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf85a65719eb1c7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c3dbf65e6976c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+95a7bb6e7b8b6e7b8b6e7b8b6e7b8b738291c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee8899acb4c9e2c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bcd3ed677482141619a9bdd4c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8545f6a768595
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85f6a77
+6c7988c5ddf8c5ddf8c5ddf8c5ddf8bed5ef363d459baec3c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+7482924b545fc5ddf8c5ddf8c5ddf8c5ddf8bcd3ed11131690a2b5c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8b6cce5282d322c3137b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf88e9fb2272c319fb3c9c2daf5c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8636f7d64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+4b545f95a7bbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf85e69766c7a89c5ddf8c5ddf8c5ddf8c5ddf8
+bfd6f10000008797aac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8bbd2ec333a4191a2b6c5ddf8c5ddf8c5ddf8
+c5ddf893a5b91e2125c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8b4cae33940475f6b78bfd6f1c5ddf8c5ddf8
+c5ddf8c5ddf895a8bc95a7bbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffd2e5fac5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c7def8ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffe7f1fcc5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8d9e9fa
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfeffddebfb
+c9dff8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
+c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c7def8dceafb
+f8fbfe
+
+[/Creator (html2ps version 1.0 beta7) /Author () /Keywords (xsd, xml, schema, c++, mapping, data, binding, parser, validation) /Subject ()
+ /Title (C++/Parser Mapping Getting Started Guide) /DOCINFO pdfmark
+/ND 1 D
+/HN [(1) (1) (1) (1) (1) (1) (1) (1) (2) (3) (3) (4) (6) (8) (8) (9) (12) (13)
+(14) (18) (18) (21) (24) (27) (27) (28) (28) (28) (29) (35) (??) (38) (39)
+(39) (41) (42) (43) (44) (45) (46) (47) (47) (48) (49) (50) (50) (55) (59)
+(63) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??)
+(??) (??) (??) (??) (??) (??) (??) (??) (1) (1) (1) (1) (1) (2) (3) (3)
+(4) (6) (8) (8) (9) (12) (13) (14) (18) (18) (21) (24) (27) (27) (28) (28)
+(28) (29) (35) (38) (39) (39) (41) (42) (43) (44) (45) (46) (47) (47) (48)
+(49) (50) (50) (55) (59) (63)] D
+/h0 [()(Table of Contents)] D
+/h1 [(1\240\240)(Preface)] D
+/h2 [(1.1\240\240)(About This Document)] D
+/h3 [(1.2\240\240)(More Information)] D
+/h4 [(2\240\240)(1 Introduction)] D
+/h5 [(2.1\240\240)(1.1 Mapping Overview)] D
+/h6 [(2.2\240\240)(1.2 Benefits)] D
+/h7 [(3\240\240)(2 Hello World Example)] D
+/h8 [(3.1\240\240)(2.1 Writing XML Document and Schema)] D
+/h9 [(3.2\240\240)(2.2 Translating Schema to C++)] D
+/h10 [(3.3\240\240)(2.3 Implementing Application Logic)] D
+/h11 [(3.4\240\240)(2.4 Compiling and Running)] D
+/h12 [(4\240\240)(3 Parser Skeletons)] D
+/h13 [(4.1\240\240)(3.1 Implementing the Gender Parser)] D
+/h14 [(4.2\240\240)(3.2 Implementing the Person Parser)] D
+/h15 [(4.3\240\240)(3.3 Implementing the People Parser)] D
+/h16 [(4.4\240\240)(3.4 Connecting the Parsers Together)] D
+/h17 [(5\240\240)(4 Type Maps)] D
+/h18 [(5.1\240\240)(4.1 Object Model)] D
+/h19 [(5.2\240\240)(4.2 Type Map File Format)] D
+/h20 [(5.3\240\240)(4.3 Parser Implementations)] D
+/h21 [(6\240\240)(5 Mapping Configuration)] D
+/h22 [(6.1\240\240)(5.1 C++ Standard)] D
+/h23 [(6.2\240\240)(5.2 Character Type and Encoding)] D
+/h24 [(6.3\240\240)(5.3 Underlying XML Parser)] D
+/h25 [(6.4\240\240)(5.4 XML Schema Validation)] D
+/h26 [(6.5\240\240)(5.5 Support for Polymorphism)] D
+/h27 [(7\240\240)(6 Built-In XML Schema Type Parsers)] D
+/h28 [(7.1\240\240)(6.1 QName Parser)] D
+/h29 [(7.2\240\240)(6.2 NMTOKENS and IDREFS Parsers)] D
+/h30 [(7.3\240\240)(6.3 base64Binary and hexBinary Parsers)] D
+/h31 [(7.4\240\240)(6.4 Time Zone Representation)] D
+/h32 [(7.5\240\240)(6.5 date Parser)] D
+/h33 [(7.6\240\240)(6.6 dateTime Parser)] D
+/h34 [(7.7\240\240)(6.7 duration Parser)] D
+/h35 [(7.8\240\240)(6.8 gDay Parser)] D
+/h36 [(7.9\240\240)(6.9 gMonth Parser)] D
+/h37 [(7.10\240\240)(6.10 gMonthDay Parser)] D
+/h38 [(7.11\240\240)(6.11 gYear Parser)] D
+/h39 [(7.12\240\240)(6.12 gYearMonth Parser)] D
+/h40 [(7.13\240\240)(6.13 time Parser)] D
+/h41 [(8\240\240)(7 Document Parser and Error Handling)] D
+/h42 [(8.1\240\240)(7.1 Xerces-C++ Document Parser)] D
+/h43 [(8.2\240\240)(7.2 Expat Document Parser)] D
+/h44 [(8.3\240\240)(7.3 Error Handling)] D
+/h45 [(9\240\240)(Appendix A \236 Supported XML Schema Constructs)] D
+/Hr [71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
+93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
+113 114 115]D
+/HV [1 2 2 1 2 2 1 2 2 2 2 1 2 2 2 2 1 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 2
+2 2 2 2 2 2 2 1 2 2 2 1]D
+/Cn [2 0 0 2 0 0 4 0 0 0 0 4 0 0 0 0 3 0 0 0 5 0 0 0 0 0 13 0 0 0 0 0 0
+0 0 0 0 0 0 0 3 0 0 0 0]D
+Hr length 0 gt{[/PageMode /UseOutlines /DOCVIEW pdfmark}if
+/Hn 1 D
+0 1 Hr length 1 sub{
+ /Bn E D [Cn Bn get dup 0 gt{/Count E HV Bn get Bl ge{neg}if}{pop}ie
+ /Dest Hr Bn get dup abs ST cvs cvn E 0 ge{(h)Hn ST cvs join cvx exec
+ dup 1 get E Nf{0 get E join}{pop}ie /Hn Hn 1 add D}{()}ie
+ /Title E dup length 255 gt{0 255 getinterval}if /OUT pdfmark}for
+ZF /FN Fp D Ps 0 FS /WC Wf{( )}{<A1A1>}ie SW pop D
+ET RC ZF
+/Df f D
+/R0 (https://www.codesynthesis.com/licenses/fdl-1.2.txt) D
+/R1 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/index.xhtml) D
+/R2 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.pdf) D
+/R3 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.ps) D
+/R1 (https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml) D
+/R2 (https://cppget.org/xsd-examples) D
+/R3 (https://www.codesynthesis.com/mailman/listinfo/xsd-users) D
+/R4 (https://www.codesynthesis.com/pipermail/xsd-users/) D
+/R5 (http://www.w3.org/TR/xmlschema-0/) D
+/R6 (https://cppget.org/libxsd) D
+/TS {
+ tables E get /table E D
+ table aload pop /rdesc E D /cdesc E D /tdesc E D
+ tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
+ /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
+ /flow E D /clear E D /tclass E D pop pop
+ /w W D /eps 0.1 D /OU f D /PL 1 D
+ /FN EF 21 get D EZ 21 get Ey 21 get FS
+ 0 1 1{
+ /pass E D
+ 0 1 nrow{
+ /irow E D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ cell aload pop /ang E D /CB E D pop pop pop
+ /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
+ /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
+ /cmin E D /proc E D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ pass 0 eq cspan 1 eq and pass 1 eq cspan 1 gt and or{
+ /W 1e5 D /LL W D /PH 1 D
+ ctype 1 eq{() BD}if
+ RC align NA
+ AT 4 eq{/CD t D /DC dp D /LN 0 D /M1 0 D /M2 0 D}{/CD f D}ie
+ 0 0 M /LM 0 D proc exec BN
+ AT 4 eq{
+ LN array astore cell 15 3 -1 roll put
+ cdesc icol get dup dup 5 get M1 lt{5 M1 put}{5 get /M1 E D}ie
+ dup 6 get M2 lt{6 M2 put}{6 get /M2 E D}ie
+ /LM M1 M2 add D
+ }if
+ /CD f D
+ ang 0 ne{/LM CP E pop neg D}if
+ /thiswid LM left add right add eps add D
+ /oldmin 0 D /oldmax 0 D
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 2 get /oldmax E oldmax add D
+ 1 get /oldmin E oldmin add D
+ }for
+ thiswid oldmax ge{
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 2 E 2 get oldmax 0 eq
+ {pop thiswid cspan div}{thiswid mul oldmax div}ie
+ put
+ }for
+ }if
+ nowrap 1 eq{
+ thiswid oldmin ge{
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 1 E 1 get oldmin 0 eq
+ {pop thiswid cspan div}{thiswid mul oldmin div}ie
+ put
+ }for
+ }if
+ }{
+ /W 0 D /LL W D /PH 2 D
+ ctype 1 eq{() ES () BD}if
+ 0 0 M /LM 0 D RC proc exec BN
+ /thiswid LM left add right add eps add D
+ thiswid oldmin ge{
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 1 E 1 get oldmin 0 eq
+ {pop thiswid cspan div}{thiswid mul oldmin div}ie
+ put
+ }for
+ }if
+ }ie
+ ctype 1 eq{() ES}if
+ }if
+ }if
+ }for
+ }for
+ }for
+ /tmin 0 D /tmax 0 D
+ 0 1 ncol{
+ cdesc E get dup 1 get E 2 get 2 copy gt{pop dup}if
+ tmax add /tmax E D tmin add /tmin E D
+ }for
+ twid 0 lt{twid neg IW gt{IW neg}{twid}ie /twid E D}if
+ tdesc 0 twid neg tmin 2 copy lt{E}if pop put
+ tdesc 1 twid neg tmax 2 copy lt{E}if pop put
+ /W w D /LL W D /OU t D /PH 0 D /PL 0 D
+} D
+/PT {
+ /PL PL 1 add D
+ tables E get /table E D Tm 21 get Ts mul BE
+ PL 2 ge{save}if
+ /SL SL 1 add D /FN EF 21 get D EZ 21 get Ey 21 get FS
+ table aload pop /rdesc E D /cdesc E D /tdesc E D
+ tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
+ /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
+ /flow E D /clear E D /tclass E D /tmax E D /tmin E D
+ /w W D /xo XO D /mr MR D /ll LL D /lg LG D /ai AI D /bc BC D /nr NR D /ar AR D
+ /tr TR D /ui UI D /ph PH D /a0 A0 D /pf PF D /at AT D /av AV D /al AL D
+ /Le LE D /la La D
+ talign 0 lt{/talign AL 0 gt{AV AL get}{A0 2 le{A0}{0}ie}ie D}if
+ ph 1 eq ph 2 eq or{
+ NL ph 1 eq{tmax}{tmin}ie dup XO add LM gt{/LM E XO add D}{pop}ie LM E
+ }{
+ /PH 3 D /LE 1e5 D RC %ZF
+ border 0 gt{/border 1 D}if
+ /twidth 0 D /avail W xo sub D
+ twid 0 eq{0 1 ncol{cdesc E get dup 2 get E 3 get dup 0 gt{div neg dup twid lt
+ {/twid E D}{pop}ie}{pop pop}ie}for}if
+ /twid twid dup 0 lt{neg avail 2 copy gt{E}if pop}{avail mul}ie D
+ /OK t D 0 1 ncol{cdesc E get dup 1 get E 3 get twid mul gt{/OK f D}if}for
+ 0 1 ncol{
+ cdesc E get dup 1 get /colmin E D dup 3 get /cwid E twid mul D dup
+ tmax avail le{2 get}if
+ tmin avail le tmax avail gt and{
+ dup 2 get E 1 get dup 3 1 roll sub avail tmin sub mul tmax tmin sub div add
+ }if
+ tmin avail gt{1 get}if
+ 0 E colmin cwid lt OK and{pop cwid}if dup /twidth E twidth add D put
+ }for
+ /OU f D CP
+ tmin twid le{
+ 0 1 ncol{cdesc E get dup 0 get twidth div twid mul 0 E put}for
+ /twidth twid D
+ }if
+ CP printcap CP E pop sub /caphig E D pop
+ 0 1 1{
+ /pass E D
+ 0 1 nrow{
+ /irow E D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ cell aload pop /ang E D /CB E D pop pop pop
+ /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
+ /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
+ /cmin E D /proc E D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ /W 0 D
+ 0 1 cspan 1 sub{icol add cdesc E get 0 get /W E W add D}for
+ pass 0 eq rspan 1 eq and pass 1 eq rspan 1 gt and or{
+ ctype 1 eq{() BD}if
+ /W W left sub right sub D /XO 0 D /EO 0 D SI
+ /A0 align D RC align NA
+ AT 4 eq{
+ /DC dp D /DO 0 D /ID 1 D
+ 0 1 DV length 1 sub{DV E get dup DO gt{/DO E D}{pop}ie}for
+ /Lo DO DV 0 get sub D /L1 Lo D
+ }if
+ 0 0 M /BP t D /Fl t D /MF 0 D /FB 0 D
+ proc exec T not{/CI 0 D}if BN 0 FB neg R MF 0 eq{/MF CS D}if
+ CP /thishig E neg bot add top add CI add D pop
+ ang 0 ne{/thishig LM bot add top add D}if
+ cell 16 MF put cell 17 Ya put cell 18 thishig put
+ valign 4 eq{
+ /below thishig Ya sub D
+ rdesc irow get dup dup 4 get Ya lt
+ {4 Ya put}{4 get /Ya E D}ie
+ dup 5 get below lt{5 below put}{5 get /below E D}ie
+ /thishig Ya below add D
+ }if
+ ctype 1 eq{()ES}if
+ /oldhig 0 D
+ 0 1 rspan 1 sub{
+ irow add rdesc E get 0 get /oldhig E oldhig add D
+ }for
+ thishig oldhig ge{
+ 0 1 rspan 1 sub{
+ irow add rdesc E get dup 0 E 0 get oldhig 0 eq
+ {pop thishig rspan div}{thishig mul oldhig div}ie
+ put
+ }for
+ }if
+ }if
+ }if
+ }for
+ }for
+ }for M RC %ZF
+ /thight 0 D /racc 0 D /maxh 0 D /brk 0 D /rbeg nhead nfoot add D
+ 0 1 nrow{
+ rdesc E get dup 0 get dup /thight E thight add D
+ brk 0 eq{/racc E D}{/racc E racc add D}ie
+ racc maxh gt{/maxh racc D}if 2 get /brk E D
+ }for
+ ph 3 ge{thight caphig add E}if
+ ph 0 eq ph 4 eq or{
+ /PH 4 D /LE Le D /OU Ou D /yoff 0 D /headsz 0 D
+ 0 1 nhead 1 sub{rdesc E get 0 get headsz add /headsz E D}for
+ /footsz 0 D
+ 0 1 nfoot 1 sub{rdesc E nhead add get 0 get footsz add /footsz E D}for
+ /ahig LE BO add MI add D /maxh maxh headsz add footsz add D
+ /thight thight headsz add footsz add D
+ tmin avail gt maxh ahig gt or
+ {/Sf avail tmin div dup ahig maxh div gt{pop ahig maxh div}if D /SA t D}
+ {/Sf 1 D}ie
+ tclass 1 eq thight LE 15 sub gt and
+ {/SA t D LE 15 sub thight div dup Sf lt{/Sf E D}{pop}ie}if
+ SA{Sf Sf scale /ll ll Sf div D /xo xo Sf div D /LE LE Sf div D
+ /mr mr Sf div D /BO BO Sf div D /ahig ahig Sf div D}if
+ nhead nfoot add getwid
+ LE CP E pop add capalg 0 eq{caphig sub}if
+ bT{f}{dup thight lt thight ahig lt and}ie
+ E headsz sub footsz sub rwid lt or{NP}if
+ capalg 0 eq{printcap -8 SP}if
+ CP /ycur E D pop
+ printhead
+ rbeg 1 nrow{/row E D row
+ getwid
+ ycur yoff add rwid sub footsz sub LE add 0 lt
+ {nfoot 0 gt{printfoot}if Tf NP /rbeg irow1 D
+ Ba{MI /MI MI SA{Sf div}if D MI SP /MI E D}if
+ CP /ycur E D pop /yoff 0 D printhead}if
+ irow1 printrow
+ }for
+ printfoot /row row 1 add D Tf
+ 0 ycur yoff add M
+ capalg 1 eq{/EO 0 D SI -3 SP printcap}if
+ Sf 1 lt{1 Sf div dup scale /ll ll Sf mul D /xo xo Sf mul D /LE LE Sf mul D
+ /mr mr Sf mul D /BO BO Sf mul D /SA f D}if
+ /EO 0 D
+ }if
+ }ie
+ /W w D /XO xo D /MR mr D /LL ll D /LG lg D /AI ai D /BC bc D /NR nr D /AR ar D
+ /TR tr D /UI ui D /PH ph D /A0 a0 D /PF pf D /AT at D /AV av D /AL al D
+ /La la D
+ /SL SL 1 sub NN D /CF 0 D /FN 0 D SZ SL get FR SL get FS Wf not{()F2}if
+ PL 2 ge{Ms E restore Ms or /Ms E D PH 1 eq PH 2 eq or
+ {/LM E D}if PH 3 ge{/CI 0 D NL 0 E neg R}if
+ }if
+ /PL PL 1 sub D /CI 0 D /BP f D /PO f D () Bm 21 get Ts mul BE BL %CF CS SF
+} D
+/printcap{
+ capalg 0 ge{
+ SA{/W w Sf div D}
+ {talign 1 eq{/XO xo ll twidth sub 2 div add D}if
+ talign 2 eq{/XO xo ll twidth sub add D}if
+ /W XO twidth add D
+ }ie /XO xo D /LL W XO sub MR sub D
+ /PA f D /Fl capalg 0 eq D
+ 1 NA BL caption exec BN OA /PA t D
+ }if
+} D
+/getwid{
+ /irow1 E D
+ /irow2 irow1 D
+ /rwid 0 D
+ {rdesc irow2 get dup 0 get rwid add /rwid E D 2 get 0 eq
+ {exit}{/irow2 irow2 1 add D}ie
+ }loop
+} D
+/printrow{
+ /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
+ /xleft xoff xo add D
+ /irow E D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ cell aload pop /ang E D /CB E D /cvsize E D /above E D /fontsz E D
+ /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
+ /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
+ /cmin E D /proc E D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ /width 0 D
+ 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
+ /rhight rdesc irow get 0 get D
+ /hight rhight D
+ 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
+ /W xo xoff add width add right sub D
+ ang 0 ne{/W xo xoff add hight add right sub D}if
+ /EO xo xoff add left add D SI
+ Cf{
+ gsave CB VC xo xoff add ycur yoff add M
+ 0 hight neg RL width 0 RL 0 hight RL width neg 0 RL fill
+ grestore
+ }if
+ ctype 1 eq{() BD}if
+ /A0 align D RC
+ AT 4 eq{
+ /DC dp D /ID 1 D /DO cdesc icol get 5 get D /Lo DO DV 0 get sub D /L1 Lo D
+ }if
+ ang 0 ne{
+ gsave ang 90 eq
+ {xoff ycur add hight cvsize sub 2 div sub ycur hight sub xoff sub}
+ {xoff ycur sub width add hight cvsize sub 2 div add ycur xoff add}ie
+ translate ang rotate
+ }if
+ valign 3 le{0 ycur yoff add top sub
+ hight cvsize sub valign 1 sub mul 2 div sub M}
+ {0 ycur yoff add top sub above add rdesc irow get 4 get sub M}ie
+ /PA f D /BP t D /Fl t D
+ BL proc exec BN
+ ang 0 ne{grestore}if
+ /PA t D
+ ctype 1 eq{() ES}if
+ }if
+ /xoff xoff cdesc icol get 0 get add D
+ }for
+ /yoff yoff rhight sub D
+} D
+/printhead {0 1 nhead 1 sub{printrow}for} D
+/printfoot {nhead 1 nhead nfoot add 1 sub{printrow}for} D
+/Tf {
+ OU{rules 2 ge{/yoff 0 D
+ gsave 0 Sg
+ [0 1 nhead 1 sub{}for rbeg 1 row 1 sub{}for nhead 1 nhead nfoot add 1 sub{}for]{
+ /irow E D
+ /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ /rspan cell 6 get D
+ /cspan cell 5 get D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ /width 0 D
+ 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
+ /rhight rdesc irow get 0 get D
+ /hight rhight D
+ 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
+ xo xoff add width add ycur yoff add M
+ 0 hight neg icol cspan add 1 sub ncol lt
+ {cdesc icol 1 add get 4 get dup rules 3 le{1 eq}{pop t}ie
+ {1 eq{0.8}{0.3}ie
+ LW RL CP stroke M}{pop R}ie}{R}ie
+ irow nhead nfoot add 1 sub ne nfoot 0 eq or
+ {irow rspan add 1 sub nrow lt
+ {rdesc irow rspan add get 3 get}{nfoot 0 eq{0}{1}ie}ie
+ dup rules 2 mod 0 eq{1 eq}{pop t}ie
+ {1 eq irow rspan add nhead eq or irow rspan add row eq nfoot 0 gt and or
+ {0.8}{0.3}ie LW width neg 0 RL CP stroke M}{pop}ie}if
+ }if
+ /xoff xoff cdesc icol get 0 get add D
+ }for
+ /yoff yoff rhight sub D
+ }forall
+ grestore
+ /Ms t D
+ }if
+ frame 1 gt{
+ gsave
+ 1 LW 0 Sg
+ xleft ycur M CP BB
+ 0 yoff frame 5 eq frame 7 ge or{RL}{R}ie
+ twidth 0 frame 3 eq frame 4 eq or frame 8 ge or{RL}{R}ie CP BB
+ 0 yoff neg frame 6 ge{RL}{R}ie
+ twidth neg 0 frame 2 eq frame 4 eq or frame 8 ge or{RL}{R}ie
+ closepath stroke
+ grestore
+ /Ms t D
+ }if
+ }if
+} D
+/tables [[[0 0 0 0 0 -1 0 0 1 56 2 0 0 9 5 {()} -1]
+ [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
+ [[0 0 0 0 0 0 [[{()0 Sl()WB(XML Schema type)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(Parser imple)HY(men)HY(ta)HY(tion)YH( in the )SM(xml_schema)ES( names)HY(pace)YH()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(Parser return type
+ )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(anyType and anySim)HY(ple)HY(Type)YH( types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(anyType)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(any_type_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(void)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(anySim)HY(ple)HY(Type)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(any_simple_type_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(void)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(fixed-length inte)HY(gral)YH( types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(byte_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(signed\240char)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(unsigned)HY(Byte)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned_byte_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned\240char)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(short_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(short)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(unsigned)HY(Short)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned_short_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned\240short)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(int_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(int)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(unsignedInt)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned_int_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned\240int)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(long_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(unsigned)HY(Long)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned_long_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned\240long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(arbi)HY(trary)YH(-length inte)HY(gral)YH( types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(integer_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(nonPos)HY(i)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(non_posi)HY(tive)YH(_integer_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(nonNeg)HY(a)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(non_nega)HY(tive)YH(_integer_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(posi)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(posi)HY(tive)YH(_integer_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(nega)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(nega)HY(tive)YH(_integer_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(boolean types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(boolean_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(bool)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(fixed-preci)HY(sion)YH( float)HY(ing)YH(-point types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(float)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(float_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(float)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(double)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(double_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(double)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(arbi)HY(trary)YH(-preci)HY(sion)YH( float)HY(ing)YH(-point types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(decimal_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(double)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(string-based types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(string_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(normal)HY(ized)HY(String)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(normal)HY(ized)YH(_string_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(token_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(Name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(name_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(NMTOKEN)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(nmtoken_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(NCName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(ncname_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(language_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(qual)HY(i)HY(fied)YH( name
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(QName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(qname_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::qname)ES()BR()0 55 1 A(Section 6.1,
+ ")SM(QName)ES( Parser")55 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(ID/IDREF types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(ID)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(id_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(IDREF)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(idref_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(list types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(NMTO)HY(KENS)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(nmto)HY(kens)YH(_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::string_sequence)ES()BR()0 56 1 A(Section
+ 6.2, ")SM(NMTO)HY(KENS)YH()ES( and )SM(IDREFS)ES( Parsers")56 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(IDREFS)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(idrefs_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::string_sequence)ES()BR()0 56 1 A(Section
+ 6.2, ")SM(NMTO)HY(KENS)YH()ES( and )SM(IDREFS)ES( Parsers")56 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(URI types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(anyURI)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(uri_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(binary types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(base64Binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(base64_binary_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::[unique|auto]_ptr< xml_schema::buffer>)ES()BR( )0 57 1 A(Section 6.3, ")SM(base64Binary)ES( and
+ )SM(hexBi)HY(nary)YH()ES( Parsers")57 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(hexBi)HY(nary)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(hex_binary_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(std::[unique|auto]_ptr< xml_schema::buffer>)ES()BR( )0 57 1 A(Section 6.3, ")SM(base64Binary)ES( and
+ )SM(hexBi)HY(nary)YH()ES( Parsers")57 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(date/time types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(date_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::date)ES()BR()0 58 1 A(Section 6.5,
+ ")SM(date)ES( Parser")58 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(date)HY(Time)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(date_time_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::date_time)ES()BR()0 59 1 A(Section 6.6,
+ ")SM(date)HY(Time)YH()ES( Parser")59 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(dura)HY(tion)YH(_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::dura)HY(tion)YH()ES()BR()0 60 1 A(Section 6.7,
+ ")SM(dura)HY(tion)YH()ES( Parser")60 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(gDay)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(gday_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::gday)ES()BR()0 61 1 A(Section 6.8,
+ ")SM(gDay)ES( Parser")61 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(gMonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(gmonth_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::gmonth)ES()BR()0 62 1 A(Section 6.9,
+ ")SM(gMonth)ES( Parser")62 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(gMon)HY(th)HY(Day)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(gmonth_day_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::gmonth_day)ES()BR()0 63 1 A(Section 6.10,
+ ")SM(gMon)HY(th)HY(Day)YH()ES( Parser")63 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(gYear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(gyear_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::gyear)ES()BR()0 64 1 A(Section 6.11,
+ ")SM(gYear)ES( Parser")64 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(gYear)HY(Month)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(gyear_month_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::gyear_month)ES()BR()0 65 1 A(Section
+ 6.12, ")SM(gYear)HY(Month)YH()ES( Parser")65 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(time_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::time)ES()BR()0 66 1 A(Section 6.13,
+ ")SM(time)ES( Parser")66 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+]]
+[[0 0 0 0 0 -1 0 0 1 57 1 0 0 9 5 {()} -1]
+ [[0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
+ [[0 0 0 0 0 0 [[{()0 Sl()WB(Construct)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(Notes)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(Struc)HY(ture)YH()} 0 0 1 0 2 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(element)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(attribute)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(any)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(anyAt)HY(tribute)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(all)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(sequence)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(choice)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(complex type, empty content)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(complex type, mixed content)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(complex type, simple content exten)HY(sion)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(complex type, simple content restric)HY(tion)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(Simple type facets are not vali)HY(dated)YH(.)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(complex type, complex content exten)HY(sion)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(complex type, complex content restric)HY(tion)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(list)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(Datatypes)} 0 0 1 0 2 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(byte)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(unsigned)HY(Byte)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(short)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(unsigned)HY(Short)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(int)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(unsignedInt)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(long)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(unsigned)HY(Long)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(integer)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(nonPos)HY(i)HY(tiveIn)HY(te)HY(ger)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(nonNeg)HY(a)HY(tiveIn)HY(te)HY(ger)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(posi)HY(tiveIn)HY(te)HY(ger)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(nega)HY(tiveIn)HY(te)HY(ger)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(boolean)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(float)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(double)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(decimal)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(string)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(normal)HY(ized)HY(String)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(token)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(Name)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(NMTOKEN)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(NCName)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(language)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(anyURI)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(ID)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(Iden)HY(tity)YH( constraint is not enforced.)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(IDREF)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(Iden)HY(tity)YH( constraint is not enforced.)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(NMTO)HY(KENS)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(IDREFS)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(Iden)HY(tity)YH( constraint is not enforced.)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(QName)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(base64Binary)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(hexBi)HY(nary)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(date)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(date)HY(Time)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(dura)HY(tion)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(gDay)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(gMonth)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(gMon)HY(th)HY(Day)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(gYear)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(gYear)HY(Month)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(time)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+]]
+] D
+0 1 1{TS}for RC ZF
+/Ba f D /BO 0 D Bs
+/UR (/home/boris/work/xsd/builds/gcc8-host/xsd/doc/cxx/parser/guide/index.xhtml) D
+/Ti (C++/Parser Mapping Getting Started Guide) D
+/Au () D
+/Df f D
+/ME [] D
+Pt
+/BO 0 D TC /Ba f D Bs /AU f D /UR () D RC ZF
+ tH WB
+ND 1 gt{Ts 3 mul Np 0()0 C()BD(C++/Parser Mapping Getting Started Guide)ES()0 1 TN()EA()BN}if
+1 NH le{71(1\240\240)1 C(Preface)WB 3 Sn()71 1 TN()EA()BN}if
+2 NH le{72(1.1\240\240)2 C(About)WB 4 Sn( This Docu)HY(ment)YH()72 1 TN()EA()BN}if
+2 NH le{73(1.2\240\240)2 C(More)WB 5 Sn( Infor)HY(ma)HY(tion)YH()73 1 TN()EA()BN}if
+1 NH le{74(2\240\240)1 C(1)WB 6 Sn( Intro)HY(duc)HY(tion)YH()74 1 TN()EA()BN}if
+2 NH le{75(2.1\240\240)2 C(1.1)WB 7 Sn( Mapping Overview)75 1 TN()EA()BN}if
+2 NH le{76(2.2\240\240)2 C(1.2)WB 8 Sn( Bene)HY(fits)YH()76 1 TN()EA()BN}if
+1 NH le{77(3\240\240)1 C(2)WB 9 Sn( Hello World Example)77 1 TN()EA()BN}if
+2 NH le{78(3.1\240\240)2 C(2.1)WB 10 Sn( Writing XML Docu)HY(ment)YH( and Schema)78 1 TN()EA()BN}if
+2 NH le{79(3.2\240\240)2 C(2.2)WB 11 Sn( Trans)HY(lat)HY(ing)YH( Schema to C++)79 1 TN()EA()BN}if
+2 NH le{80(3.3\240\240)2 C(2.3)WB 12 Sn( Imple)HY(ment)HY(ing)YH( Appli)HY(ca)HY(tion)YH( Logic)80 1 TN()EA()BN}if
+2 NH le{81(3.4\240\240)2 C(2.4)WB 13 Sn( Compil)HY(ing)YH( and Running)81 1 TN()EA()BN}if
+1 NH le{82(4\240\240)1 C(3)WB 14 Sn( Parser Skele)HY(tons)YH()82 1 TN()EA()BN}if
+2 NH le{83(4.1\240\240)2 C(3.1)WB 15 Sn( Imple)HY(ment)HY(ing)YH( the Gender Parser)83 1 TN()EA()BN}if
+2 NH le{84(4.2\240\240)2 C(3.2)WB 16 Sn( Imple)HY(ment)HY(ing)YH( the Person Parser)84 1 TN()EA()BN}if
+2 NH le{85(4.3\240\240)2 C(3.3)WB 17 Sn( Imple)HY(ment)HY(ing)YH( the People Parser)85 1 TN()EA()BN}if
+2 NH le{86(4.4\240\240)2 C(3.4)WB 18 Sn( Connect)HY(ing)YH( the Parsers Together)86 1 TN()EA()BN}if
+1 NH le{87(5\240\240)1 C(4)WB 19 Sn( Type Maps)87 1 TN()EA()BN}if
+2 NH le{88(5.1\240\240)2 C(4.1)WB 20 Sn( Object Model)88 1 TN()EA()BN}if
+2 NH le{89(5.2\240\240)2 C(4.2)WB 21 Sn( Type Map File Format)89 1 TN()EA()BN}if
+2 NH le{90(5.3\240\240)2 C(4.3)WB 22 Sn( Parser Imple)HY(men)HY(ta)HY(tions)YH()90 1 TN()EA()BN}if
+1 NH le{91(6\240\240)1 C(5)WB 23 Sn( Mapping Config)HY(u)HY(ra)HY(tion)YH()91 1 TN()EA()BN}if
+2 NH le{92(6.1\240\240)2 C(5.1)WB 24 Sn( C++ Stan)HY(dard)YH()92 1 TN()EA()BN}if
+2 NH le{93(6.2\240\240)2 C(5.2)WB 25 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()93 1 TN()EA()BN}if
+2 NH le{94(6.3\240\240)2 C(5.3)WB 26 Sn( Under)HY(ly)HY(ing)YH( XML Parser)94 1 TN()EA()BN}if
+2 NH le{95(6.4\240\240)2 C(5.4)WB 27 Sn( XML Schema Vali)HY(da)HY(tion)YH()95 1 TN()EA()BN}if
+2 NH le{96(6.5\240\240)2 C(5.5)WB 28 Sn( Support for Poly)HY(mor)HY(phism)YH()96 1 TN()EA()BN}if
+1 NH le{97(7\240\240)1 C(6)WB 29 Sn( Built-In XML Schema Type Parsers)97 1 TN()EA()BN}if
+2 NH le{98(7.1\240\240)2 C(6.1)WB 31 Sn( )SM(QName)ES( Parser)98 1 TN()EA()BN}if
+2 NH le{99(7.2\240\240)2 C(6.2)WB 32 Sn( )SM(NMTO)HY(KENS)YH()ES( and )SM(IDREFS)ES( Parsers)99 1 TN()EA()BN}if
+2 NH le{100(7.3\240\240)2 C(6.3)WB 33 Sn( )SM(base64Binary)ES( and )SM(hexBi)HY(nary)YH()ES( Parsers)100 1 TN()EA()BN}if
+2 NH le{101(7.4\240\240)2 C(6.4)WB 34 Sn( Time Zone Repre)HY(sen)HY(ta)HY(tion)YH()101 1 TN()EA()BN}if
+2 NH le{102(7.5\240\240)2 C(6.5)WB 35 Sn( )SM(date)ES( Parser)102 1 TN()EA()BN}if
+2 NH le{103(7.6\240\240)2 C(6.6)WB 36 Sn( )SM(date)HY(Time)YH()ES( Parser)103 1 TN()EA()BN}if
+2 NH le{104(7.7\240\240)2 C(6.7)WB 37 Sn( )SM(dura)HY(tion)YH()ES( Parser)104 1 TN()EA()BN}if
+2 NH le{105(7.8\240\240)2 C(6.8)WB 38 Sn( )SM(gDay)ES( Parser)105 1 TN()EA()BN}if
+2 NH le{106(7.9\240\240)2 C(6.9)WB 39 Sn( )SM(gMonth)ES( Parser)106 1 TN()EA()BN}if
+2 NH le{107(7.10\240\240)2 C(6.10)WB 40 Sn( )SM(gMon)HY(th)HY(Day)YH()ES( Parser)107 1 TN()EA()BN}if
+2 NH le{108(7.11\240\240)2 C(6.11)WB 41 Sn( )SM(gYear)ES( Parser)108 1 TN()EA()BN}if
+2 NH le{109(7.12\240\240)2 C(6.12)WB 42 Sn( )SM(gYear)HY(Month)YH()ES( Parser)109 1 TN()EA()BN}if
+2 NH le{110(7.13\240\240)2 C(6.13)WB 43 Sn( )SM(time)ES( Parser)110 1 TN()EA()BN}if
+1 NH le{111(8\240\240)1 C(7)WB 44 Sn( Docu)HY(ment)YH( Parser and Error Handling)111 1 TN()EA()BN}if
+2 NH le{112(8.1\240\240)2 C(7.1)WB 45 Sn( Xerces-C++ Docu)HY(ment)YH( Parser)112 1 TN()EA()BN}if
+2 NH le{113(8.2\240\240)2 C(7.2)WB 46 Sn( Expat Docu)HY(ment)YH( Parser)113 1 TN()EA()BN}if
+2 NH le{114(8.3\240\240)2 C(7.3)WB 47 Sn( Error Handling)114 1 TN()EA()BN}if
+1 NH le{115(9\240\240)1 C(Appendix)WB 48 Sn( A \236 Supported XML Schema Constructs)115 1 TN()EA()BN}if
+/OU t D /Cb Db D NP Ep ET
+/Cb Db D /Ct [16#00 16#00 16#00] D /Cl [16#00 16#00 16#00] D /CL -1 D Ct Sc
+
+/Ba f D /BO 0 D Bs
+/UR (/home/boris/work/xsd/builds/gcc8-host/xsd/doc/cxx/parser/guide/index.xhtml) D
+/Ti (C++/Parser Mapping Getting Started Guide) D
+/Au () D
+/Df f D
+/ME [] D
+
+NP RC ZF
+()0 Sl()WB 0 Sn(
+
+)BR()WB 1 Sn( )BR()WB 2 Sn(
+
+
+ )0 1 0 H(Preface)WB 71 Sn()WB 3 Sn()EA()EH(
+
+ )0 2 1 H(About)WB 72 Sn()WB 4 Sn( This Docu)HY(ment)YH()EA()EH(
+
+ )0 P(The goal of this docu)HY(ment)YH( is to provide you with an under)HY(stand)HY(ing)YH( of
+ the C++/Parser program)HY(ming)YH( model and allow you to effi)HY(ciently)YH( eval)HY(u)HY(ate)YH(
+ XSD against your project's tech)HY(ni)HY(cal)YH( require)HY(ments)YH(. As such, this
+ docu)HY(ment)YH( is intended for C++ devel)HY(op)HY(ers)YH( and soft)HY(ware)YH( archi)HY(tects)YH(
+ who are looking for an XML process)HY(ing)YH( solu)HY(tion)YH(. Prior expe)HY(ri)HY(ence)YH(
+ with XML and C++ is required to under)HY(stand)YH( this docu)HY(ment)YH(. Basic
+ under)HY(stand)HY(ing)YH( of XML Schema is advan)HY(ta)HY(geous)YH( but not expected
+ or required.
+ )EP(
+
+
+ )0 2 2 H(More)WB 73 Sn()WB 5 Sn( Infor)HY(ma)HY(tion)YH()EA()EH(
+
+ )0 P(Beyond this guide, you may also find the follow)HY(ing)YH( sources of
+ infor)HY(ma)HY(tion)YH( useful:)EP(
+
+ )UL( )-1 LI()R1 2 A(XSD
+ Compiler Command Line Manual)EA(
+
+ )-1 LI(The )SM(cxx/parser/)ES( direc)HY(tory)YH( in the
+ )R2 2 A(xsd-exam)HY(ples)YH()EA( package
+ contains a collec)HY(tion)YH( of exam)HY(ples)YH( and a README file with an overview
+ of each example.
+
+ )-1 LI(The )SM(README)ES( file in the
+ )R2 2 A(xsd-exam)HY(ples)YH()EA( package
+ explains how to build the exam)HY(ples)YH(.
+
+ )-1 LI(The )R3 2 A(xsd-users)EA(
+ mailing list is the place to ask tech)HY(ni)HY(cal)YH( ques)HY(tions)YH( about XSD and the C++/Parser mapping.
+ Further)HY(more)YH(, the )R4 2 A(archives)EA(
+ may already have answers to some of your ques)HY(tions)YH(.
+
+ )LU(
+
+
+
+ )0 1 3 H(1)WB 74 Sn()WB 6 Sn( Intro)HY(duc)HY(tion)YH()EA()EH(
+
+ )0 P(Welcome to CodeSyn)HY(the)HY(sis)YH( XSD and the C++/Parser mapping. XSD is a
+ cross-plat)HY(form)YH( W3C XML Schema to C++ data binding compiler. C++/Parser
+ is a W3C XML Schema to C++ mapping that repre)HY(sents)YH( an XML vocab)HY(u)HY(lary)YH(
+ as a set of parser skele)HY(tons)YH( which you can imple)HY(ment)YH( to perform XML
+ process)HY(ing)YH( as required by your appli)HY(ca)HY(tion)YH( logic.
+ )EP(
+
+ )0 2 4 H(1.1)WB 75 Sn()WB 7 Sn( Mapping Overview)EA()EH(
+
+ )0 P(The C++/Parser mapping provides event-driven, stream-oriented
+ XML parsing, XML Schema vali)HY(da)HY(tion)YH(, and C++ data binding. It was
+ specif)HY(i)HY(cally)YH( designed and opti)HY(mized)YH( for high perfor)HY(mance)YH( and
+ small foot)HY(print)YH(. Based on the static anal)HY(y)HY(sis)YH( of the schemas, XSD
+ gener)HY(ates)YH( compact, highly-opti)HY(mized)YH( hier)HY(ar)HY(chi)HY(cal)YH( state machines
+ that combine data extrac)HY(tion)YH(, vali)HY(da)HY(tion)YH(, and even dispatch)HY(ing)YH(
+ in a single step. As a result, the gener)HY(ated)YH( code is typi)HY(cally)YH(
+ 2-10 times faster than general-purpose vali)HY(dat)HY(ing)YH( XML parsers
+ while main)HY(tain)HY(ing)YH( the lowest static and dynamic memory foot)HY(prints)YH(.
+ )EP(
+
+ )0 P(To speed up appli)HY(ca)HY(tion)YH( devel)HY(op)HY(ment)YH(, the C++/Parser mapping
+ can be instructed to gener)HY(ate)YH( sample parser imple)HY(men)HY(ta)HY(tions)YH(
+ and a test driver which can then be filled with the appli)HY(ca)HY(tion)YH(
+ logic code. The mapping also provides a wide range of
+ mech)HY(a)HY(nisms)YH( for control)HY(ling)YH( and customiz)HY(ing)YH( the gener)HY(ated)YH( code.)EP(
+
+ )0 P(The next chapter shows how to create a simple appli)HY(ca)HY(tion)YH( that uses
+ the C++/Parser mapping to parse, vali)HY(date)YH(, and extract data from a
+ simple XML docu)HY(ment)YH(. The follow)HY(ing)YH( chap)HY(ters)YH( show how to
+ use the C++/Parser mapping in more detail.)EP(
+
+ )0 2 5 H(1.2)WB 76 Sn()WB 8 Sn( Bene)HY(fits)YH()EA()EH(
+
+ )0 P(Tradi)HY(tional)YH( XML access APIs such as Docu)HY(ment)YH( Object Model \201DOM\202
+ or Simple API for XML \201SAX\202 have a number of draw)HY(backs)YH( that
+ make them less suit)HY(able)YH( for creat)HY(ing)YH( robust and main)HY(tain)HY(able)YH(
+ XML process)HY(ing)YH( appli)HY(ca)HY(tions)YH(. These draw)HY(backs)YH( include:
+ )EP(
+
+ )UL( )-1 LI(Generic repre)HY(sen)HY(ta)HY(tion)YH( of XML in terms of elements, attributes,
+ and text forces an appli)HY(ca)HY(tion)YH( devel)HY(oper)YH( to write a substan)HY(tial)YH(
+ amount of bridg)HY(ing)YH( code that iden)HY(ti)HY(fies)YH( and trans)HY(forms)YH( pieces
+ of infor)HY(ma)HY(tion)YH( encoded in XML to a repre)HY(sen)HY(ta)HY(tion)YH( more suit)HY(able)YH(
+ for consump)HY(tion)YH( by the appli)HY(ca)HY(tion)YH( logic.
+
+ )-1 LI(String-based flow control defers error detec)HY(tion)YH( to runtime.
+ It also reduces code read)HY(abil)HY(ity)YH( and main)HY(tain)HY(abil)HY(ity)YH(.
+
+ )-1 LI(Lack of type safety because the data is repre)HY(sented)YH(
+ as text.
+
+ )-1 LI(Result)HY(ing)YH( appli)HY(ca)HY(tions)YH( are hard to debug, change, and
+ main)HY(tain)YH(.
+ )LU(
+
+ )0 P(In contrast, stat)HY(i)HY(cally)YH(-typed, vocab)HY(u)HY(lary)YH(-specific parser
+ skele)HY(tons)YH( produced by the C++/Parser mapping allow you to
+ operate in your domain terms instead of the generic elements,
+ attributes, and text. Static typing helps catch errors at
+ compile-time rather than at run-time. Auto)HY(matic)YH( code gener)HY(a)HY(tion)YH(
+ frees you for more inter)HY(est)HY(ing)YH( tasks \201such as doing some)HY(thing)YH(
+ useful with the infor)HY(ma)HY(tion)YH( stored in the XML docu)HY(ments)YH(\202 and
+ mini)HY(mizes)YH( the effort needed to adapt your appli)HY(ca)HY(tions)YH( to
+ changes in the docu)HY(ment)YH( struc)HY(ture)YH(. To summa)HY(rize)YH(, the C++/Parser
+ mapping has the follow)HY(ing)YH( key advan)HY(tages)YH( over generic XML
+ access APIs:)EP(
+
+ )UL( )-1 LI()BD(Ease of use.)ES( The gener)HY(ated)YH( code hides all the complex)HY(ity)YH(
+ asso)HY(ci)HY(ated)YH( with recre)HY(at)HY(ing)YH( the docu)HY(ment)YH( struc)HY(ture)YH(, main)HY(tain)HY(ing)YH( the
+ dispatch state, and convert)HY(ing)YH( the data from the text repre)HY(sen)HY(ta)HY(tion)YH(
+ to data types suit)HY(able)YH( for manip)HY(u)HY(la)HY(tion)YH( by the appli)HY(ca)HY(tion)YH( logic.
+ Parser skele)HY(tons)YH( also provide a conve)HY(nient)YH( mech)HY(a)HY(nism)YH( for build)HY(ing)YH(
+ custom in-memory repre)HY(sen)HY(ta)HY(tions)YH(.
+
+ )-1 LI()BD(Natural repre)HY(sen)HY(ta)HY(tion)YH(.)ES( The gener)HY(ated)YH( parser skele)HY(tons)YH(
+ imple)HY(ment)YH( parser call)HY(backs)YH( as virtual func)HY(tions)YH( with names
+ corre)HY(spond)HY(ing)YH( to elements and attributes in XML. As a result,
+ you process the XML data using your domain vocab)HY(u)HY(lary)YH( instead
+ of generic elements, attributes, and text.
+
+
+ )-1 LI()BD(Concise code.)ES( With a sepa)HY(rate)YH( parser skele)HY(ton)YH( for each
+ XML Schema type, the appli)HY(ca)HY(tion)YH( imple)HY(men)HY(ta)HY(tion)YH( is
+ simpler and thus easier to read and under)HY(stand)YH(.
+
+ )-1 LI()BD(Safety.)ES( The XML data is deliv)HY(ered)YH( to parser call)HY(backs)YH( as
+ stat)HY(i)HY(cally)YH( typed objects. The parser call)HY(backs)YH( them)HY(selves)YH( are virtual
+ func)HY(tions)YH(. This helps catch program)HY(ming)YH( errors at compile-time
+ rather than at runtime.
+
+ )-1 LI()BD(Main)HY(tain)HY(abil)HY(ity)YH(.)ES( Auto)HY(matic)YH( code gener)HY(a)HY(tion)YH( mini)HY(mizes)YH( the
+ effort needed to adapt the appli)HY(ca)HY(tion)YH( to changes in the
+ docu)HY(ment)YH( struc)HY(ture)YH(. With static typing, the C++ compiler
+ can pin-point the places in the appli)HY(ca)HY(tion)YH( code that need to be
+ changed.
+
+ )-1 LI()BD(Effi)HY(ciency)YH(.)ES( The gener)HY(ated)YH( parser skele)HY(tons)YH( combine
+ data extrac)HY(tion)YH(, vali)HY(da)HY(tion)YH(, and even dispatch)HY(ing)YH( in a single
+ step. This makes them much more effi)HY(cient)YH( than tradi)HY(tional)YH(
+ archi)HY(tec)HY(tures)YH( with sepa)HY(rate)YH( stages for vali)HY(da)HY(tion)YH( and data
+ extrac)HY(tion)YH(/dispatch.
+ )LU(
+
+
+
+
+ )0 1 6 H(2)WB 77 Sn()WB 9 Sn( Hello World Example)EA()EH(
+
+ )0 P(In this chapter we will examine how to parse a very simple XML
+ docu)HY(ment)YH( using the XSD-gener)HY(ated)YH( C++/Parser skele)HY(tons)YH(.
+ The code presented in this chapter is based on the )SM(hello)ES(
+ example which can be found in the )SM(cxx/parser/)ES( direc)HY(tory)YH( in
+ the )R2 2 A(xsd-exam)HY(ples)YH()EA(
+ package.)EP(
+
+ )0 2 7 H(2.1)WB 78 Sn()WB 10 Sn( Writing XML Docu)HY(ment)YH( and Schema)EA()EH(
+
+ )0 P(First, we need to get an idea about the struc)HY(ture)YH(
+ of the XML docu)HY(ments)YH( we are going to process. Our
+ )SM(hello.xml)ES(, for example, could look like this:)EP(
+
+ ) 10 28 PR(<?xml version="1.0"?>
+<hello>
+
+ <greeting>Hello</greeting>
+
+ <name>sun</name>
+ <name>moon</name>
+ <name>world</name>
+
+</hello>)RP(
+
+ )0 P(Then we can write a descrip)HY(tion)YH( of the above XML in the
+ XML Schema language and save it into )SM(hello.xsd)ES(:)EP(
+
+ ) 13 70 PR(<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="hello">
+ <xs:sequence>
+ <xs:element name="greeting" type="xs:string"/>
+ <xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="hello" type="hello"/>
+
+</xs:schema>)RP(
+
+ )0 P(Even if you are not famil)HY(iar)YH( with XML Schema, it
+ should be easy to connect decla)HY(ra)HY(tions)YH( in )SM(hello.xsd)ES(
+ to elements in )SM(hello.xml)ES(. The )SM(hello)ES( type
+ is defined as a sequence of the nested )SM(greet)HY(ing)YH()ES( and
+ )SM(name)ES( elements. Note that the term sequence in XML
+ Schema means that elements should appear in a partic)HY(u)HY(lar)YH( order
+ as opposed to appear)HY(ing)YH( multi)HY(ple)YH( times. The )SM(name)ES(
+ element has its )SM(maxOc)HY(curs)YH()ES( prop)HY(erty)YH( set to
+ )SM(unbounded)ES( which means it can appear multi)HY(ple)YH( times
+ in an XML docu)HY(ment)YH(. Finally, the glob)HY(ally)YH(-defined )SM(hello)ES(
+ element prescribes the root element for our vocab)HY(u)HY(lary)YH(. For an
+ easily-approach)HY(able)YH( intro)HY(duc)HY(tion)YH( to XML Schema refer to
+ )R5 2 A(XML Schema Part 0:
+ Primer)EA(.)EP(
+
+ )0 P(The above schema is a spec)HY(i)HY(fi)HY(ca)HY(tion)YH( of our XML vocab)HY(u)HY(lary)YH(; it tells
+ every)HY(body)YH( what valid docu)HY(ments)YH( of our XML-based language should look
+ like. The next step is to compile this schema to gener)HY(ate)YH(
+ the object model and parsing func)HY(tions)YH(.)EP(
+
+ )0 2 8 H(2.2)WB 79 Sn()WB 11 Sn( Trans)HY(lat)HY(ing)YH( Schema to C++)EA()EH(
+
+ )0 P(Now we are ready to trans)HY(late)YH( our )SM(hello.xsd)ES( to C++ parser
+ skele)HY(tons)YH(. To do this we invoke the XSD compiler from a termi)HY(nal)YH(
+ \201UNIX\202 or a command prompt \201Windows\202:
+ )EP(
+
+ ) 1 45 PR($ xsd cxx-parser --xml-parser expat hello.xsd)RP(
+
+ )0 P(The )SM(--xml-parser)ES( option indi)HY(cates)YH( that we want to
+ use Expat as the under)HY(ly)HY(ing)YH( XML parser \201see )0 50 1 A(Section
+ 5.3, "Under)HY(ly)HY(ing)YH( XML Parser")50 0 TN TL()Ec /AF f D(\202. The XSD compiler produces two
+ C++ files: )SM(hello-pskel.hxx)ES( and )SM(hello-pskel.cxx)ES(.
+ The follow)HY(ing)YH( code frag)HY(ment)YH( is taken from )SM(hello-pskel.hxx)ES(;
+ it should give you an idea about what gets gener)HY(ated)YH(:
+ )EP(
+
+ ) 32 60 PR(class hello_pskel
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre \201\202;
+
+ virtual void
+ greeting \201const std::string&\202;
+
+ virtual void
+ name \201const std::string&\202;
+
+ virtual void
+ post_hello \201\202;
+
+ // Parser construction API.
+ //
+ void
+ greeting_parser \201xml_schema::string_pskel&\202;
+
+ void
+ name_parser \201xml_schema::string_pskel&\202;
+
+ void
+ parsers \201xml_schema::string_pskel& /* greeting */,
+ xml_schema::string_pskel& /* name */\202;
+
+private:
+ ...)WR(
+};)RP(
+
+ )0 P(The first four member func)HY(tions)YH( shown above are called parser
+ call)HY(backs)YH(. You would normally over)HY(ride)YH( them in your imple)HY(men)HY(ta)HY(tion)YH(
+ of the parser to do some)HY(thing)YH( useful. Let's go through all of
+ them one by one.)EP(
+
+ )0 P(The )SM(pre\201\202)ES( func)HY(tion)YH( is an initial)HY(iza)HY(tion)YH( call)HY(back)YH(. It is
+ called when a new element of type )SM(hello)ES( is about
+ to be parsed. You would normally use this func)HY(tion)YH( to allo)HY(cate)YH( a new
+ instance of the result)HY(ing)YH( type or clear accu)HY(mu)HY(la)HY(tors)YH( that are used
+ to gather infor)HY(ma)HY(tion)YH( during parsing. The default imple)HY(men)HY(ta)HY(tion)YH(
+ of this func)HY(tion)YH( does nothing.)EP(
+
+ )0 P(The )SM(post_hello\201\202)ES( func)HY(tion)YH( is a final)HY(iza)HY(tion)YH( call)HY(back)YH(. Its
+ name is constructed by adding the parser skele)HY(ton)YH( name to the
+ )SM(post_)ES( prefix. The final)HY(iza)HY(tion)YH( call)HY(back)YH( is called when
+ parsing of the element is complete and the result, if any, should
+ be returned. Note that in our case the return type of
+ )SM(post_hello\201\202)ES( is )SM(void)ES( which means there
+ is nothing to return. More on parser return types later.
+ )EP(
+
+ )0 P(You may be wonder)HY(ing)YH( why the final)HY(iza)HY(tion)YH( call)HY(back)YH( is called
+ )SM(post_hello\201\202)ES( instead of )SM(post\201\202)ES( just
+ like )SM(pre\201\202)ES(. The reason for this is that
+ final)HY(iza)HY(tion)YH( call)HY(backs)YH( can have differ)HY(ent)YH( return types and
+ result in func)HY(tion)YH( signa)HY(ture)YH( clashes across inher)HY(i)HY(tance)YH(
+ hier)HY(ar)HY(chies)YH(. To prevent this the signa)HY(tures)YH( of final)HY(iza)HY(tion)YH(
+ call)HY(backs)YH( are made unique by adding the type name to their names.)EP(
+
+ )0 P(The )SM(greet)HY(ing)YH(\201\202)ES( and )SM(name\201\202)ES( func)HY(tions)YH( are
+ called when the )SM(greet)HY(ing)YH()ES( and )SM(name)ES( elements
+ have been parsed, respec)HY(tively)YH(. Their argu)HY(ments)YH( are of type
+ )SM(std::string)ES( and contain the data extracted from XML.)EP(
+
+ )0 P(The last three func)HY(tions)YH( are for connect)HY(ing)YH( parsers to each other.
+ For example, there is a prede)HY(fined)YH( parser for built-in XML Schema type
+ )SM(string)ES( in the XSD runtime. We will be using
+ it to parse the contents of )SM(greet)HY(ing)YH()ES( and
+ )SM(name)ES( elements, as shown in the next section.)EP(
+
+ )0 2 9 H(2.3)WB 80 Sn()WB 12 Sn( Imple)HY(ment)HY(ing)YH( Appli)HY(ca)HY(tion)YH( Logic)EA()EH(
+
+ )0 P(At this point we have all the parts we need to do some)HY(thing)YH( useful
+ with the infor)HY(ma)HY(tion)YH( stored in our XML docu)HY(ment)YH(. The first step is
+ to imple)HY(ment)YH( the parser:
+ )EP(
+
+ ) 21 60 PR(#include <iostream>
+#include "hello-pskel.hxx"
+
+class hello_pimpl: public hello_pskel
+{
+public:
+ virtual void
+ greeting \201const std::string& g\202
+ {
+ greeting_ = g;
+ }
+
+ virtual void
+ name \201const std::string& n\202
+ {
+ std::cout << greeting_ << ", " << n << "!" << std::endl;
+ }
+
+private:
+ std::string greeting_;
+};)RP(
+
+ )0 P(We left both )SM(pre\201\202)ES( and )SM(post_hello\201\202)ES( with the
+ default imple)HY(men)HY(ta)HY(tions)YH(; we don't have anything to initial)HY(ize)YH( or
+ return. The rest is pretty straight)HY(for)HY(ward)YH(: we store the greet)HY(ing)YH(
+ in a member vari)HY(able)YH( and later, when parsing names, use it to
+ say hello.)EP(
+
+ )0 P(An obser)HY(vant)YH( reader my ask what happens if the )SM(name)ES(
+ element comes before )SM(greet)HY(ing)YH()ES(? Don't we need to
+ make sure )SM(greet)HY(ing)YH(_)ES( was initial)HY(ized)YH( and report
+ an error other)HY(wise)YH(? The answer is no, we don't have to do
+ any of this. The )SM(hello_pskel)ES( parser skele)HY(ton)YH(
+ performs vali)HY(da)HY(tion)YH( of XML accord)HY(ing)YH( to the schema from which
+ it was gener)HY(ated)YH(. As a result, it will check the order
+ of the )SM(greet)HY(ing)YH()ES( and )SM(name)ES( elements
+ and report an error if it is violated.)EP(
+
+ )0 P(Now it is time to put this parser imple)HY(men)HY(ta)HY(tion)YH( to work:)EP(
+
+ ) 29 50 PR(using namespace std;
+
+int
+main \201int argc, char* argv[]\202
+{
+ try
+ {
+ // Construct the parser.
+ //
+ xml_schema::string_pimpl string_p;
+ hello_pimpl hello_p;
+
+ hello_p.greeting_parser \201string_p\202;
+ hello_p.name_parser \201string_p\202;
+
+ // Parse the XML instance.
+ //
+ xml_schema::document doc_p \201hello_p, "hello"\202;
+
+ hello_p.pre \201\202;
+ doc_p.parse \201argv[1]\202;
+ hello_p.post_hello \201\202;
+ }
+ catch \201const xml_schema::exception& e\202
+ {
+ cerr << e << endl;
+ return 1;
+ }
+})RP(
+
+ )0 P(The first part of this code snippet instan)HY(ti)HY(ates)YH( indi)HY(vid)HY(ual)YH( parsers
+ and assem)HY(bles)YH( them into a complete vocab)HY(u)HY(lary)YH( parser.
+ )SM(xml_schema::string_pimpl)ES( is an imple)HY(men)HY(ta)HY(tion)YH( of a parser
+ for built-in XML Schema type )SM(string)ES(. It is provided by
+ the XSD runtime along with parsers for other built-in types \201for
+ more infor)HY(ma)HY(tion)YH( on the built-in parsers see )0 51 1 A(Chapter 6,
+ "Built-In XML Schema Type Parsers")51 0 TN TL()Ec /AF f D(\202. We use )SM(string_pimpl)ES(
+ to parse the )SM(greet)HY(ing)YH()ES( and )SM(name)ES( elements as
+ indi)HY(cated)YH( by the calls to )SM(greet)HY(ing)YH(_parser\201\202)ES( and
+ )SM(name_parser\201\202)ES(.
+ )EP(
+
+ )0 P(Then we instan)HY(ti)HY(ate)YH( a docu)HY(ment)YH( parser \201)SM(doc_p)ES(\202. The
+ first argu)HY(ment)YH( to its construc)HY(tor)YH( is the parser for
+ the root element \201)SM(hello_p)ES( in our case\202. The
+ second argu)HY(ment)YH( is the root element name.
+ )EP(
+
+ )0 P(The final piece is the calls to )SM(pre\201\202)ES(, )SM(parse\201\202)ES(,
+ and )SM(post_hello\201\202)ES(. The call to )SM(parse\201\202)ES(
+ perform the actual XML parsing while the calls to )SM(pre\201\202)ES( and
+ )SM(post_hello\201\202)ES( make sure that the parser for the root
+ element can perform proper initial)HY(iza)HY(tion)YH( and cleanup.)EP(
+
+ )0 P(While our parser imple)HY(men)HY(ta)HY(tion)YH( and test driver are pretty small and
+ easy to write by hand, for bigger XML vocab)HY(u)HY(lar)HY(ies)YH( it can be a
+ substan)HY(tial)YH( effort. To help with this task XSD can auto)HY(mat)HY(i)HY(cally)YH(
+ gener)HY(ate)YH( sample parser imple)HY(men)HY(ta)HY(tions)YH( and a test driver from your
+ schemas. You can request the gener)HY(a)HY(tion)YH( of a sample imple)HY(men)HY(ta)HY(tion)YH( with
+ empty func)HY(tion)YH( bodies by spec)HY(i)HY(fy)HY(ing)YH( the )SM(--gener)HY(ate)YH(-noop-impl)ES(
+ option. Or you can gener)HY(ate)YH( a sample imple)HY(men)HY(ta)HY(tion)YH( that prints the
+ data store in XML by using the )SM(--gener)HY(ate)YH(-print-impl)ES(
+ option. To request the gener)HY(a)HY(tion)YH( of a test driver you can use the
+ )SM(--gener)HY(ate)YH(-test-driver)ES( option. For more infor)HY(ma)HY(tion)YH(
+ on these options refer to the
+ )R1 2 A(XSD
+ Compiler Command Line Manual)EA(. The )SM('gener)HY(ated)YH(')ES( example
+ in the )R2 2 A(xsd-exam)HY(ples)YH()EA( package
+ shows the sample imple)HY(men)HY(ta)HY(tion)YH( gener)HY(a)HY(tion)YH( feature in action.)EP(
+
+
+ )0 2 10 H(2.4)WB 81 Sn()WB 13 Sn( Compil)HY(ing)YH( and Running)EA()EH(
+
+ )0 P(After saving all the parts from the previ)HY(ous)YH( section in
+ )SM(driver.cxx)ES(, we are ready to compile our first
+ appli)HY(ca)HY(tion)YH( and run it on the test XML docu)HY(ment)YH(. On a UNIX
+ system this can be done with the follow)HY(ing)YH( commands:
+ )EP(
+
+ ) 6 59 PR($ c++ -std=c++11 -I.../libxsd -c driver.cxx hello-pskel.cxx
+$ c++ -std=c++11 -o driver driver.o hello-pskel.o -lexpat
+$ ./driver hello.xml
+Hello, sun!
+Hello, moon!
+Hello, world!)RP(
+
+ )0 P(Here )SM(.../libxsd)ES( repre)HY(sents)YH( the path to the
+ )R6 2 A(libxsd)EA( package root
+ direc)HY(tory)YH(. We can also test the error handling. To test XML
+ well-formed)HY(ness)YH( check)HY(ing)YH(, we can try to parse
+ )SM(hello-pskel.hxx)ES(:)EP(
+
+ ) 2 52 PR($ ./driver hello-pskel.hxx
+hello-pskel.hxx:1:0: not well-formed \201invalid token\202)RP(
+
+ )0 P(We can also try to parse a valid XML but not from our
+ vocab)HY(u)HY(lary)YH(, for example )SM(hello.xsd)ES(:)EP(
+
+ ) 3 50 PR($ ./driver hello.xsd
+hello.xsd:2:0: expected element 'hello' instead of
+'http://www.w3.org/2001/XMLSchema#schema')RP(
+
+
+
+
+
+ )0 1 11 H(3)WB 82 Sn()WB 14 Sn( Parser Skele)HY(tons)YH()EA()EH(
+
+ )0 P(As we have seen in the previ)HY(ous)YH( chapter, the XSD compiler gener)HY(ates)YH(
+ a parser skele)HY(ton)YH( class for each type defined in XML Schema. In
+ this chapter we will take a closer look at differ)HY(ent)YH( func)HY(tions)YH(
+ that comprise a parser skele)HY(ton)YH( as well as the way to connect
+ our imple)HY(men)HY(ta)HY(tions)YH( of these parser skele)HY(tons)YH( to create a complete
+ parser.)EP(
+
+ )0 P(In this and subse)HY(quent)YH( chap)HY(ters)YH( we will use the follow)HY(ing)YH( schema
+ that describes a collec)HY(tion)YH( of person records. We save it in
+ )SM(people.xsd)ES(:)EP(
+
+ ) 28 69 PR(<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:simpleType name="gender">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="male"/>
+ <xs:enumeration value="female"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="person">
+ <xs:sequence>
+ <xs:element name="first-name" type="xs:string"/>
+ <xs:element name="last-name" type="xs:string"/>
+ <xs:element name="gender" type="gender"/>
+ <xs:element name="age" type="xs:short"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="people">
+ <xs:sequence>
+ <xs:element name="person" type="person" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="people" type="people"/>
+
+</xs:schema>)RP(
+
+ )0 P(A sample XML instance to go along with this schema is saved
+ in )SM(people.xml)ES(:)EP(
+
+ ) 15 33 PR(<?xml version="1.0"?>
+<people>
+ <person>
+ <first-name>John</first-name>
+ <last-name>Doe</last-name>
+ <gender>male</gender>
+ <age>32</age>
+ </person>
+ <person>
+ <first-name>Jane</first-name>
+ <last-name>Doe</last-name>
+ <gender>female</gender>
+ <age>28</age>
+ </person>
+</people>)RP(
+
+ )0 P(Compil)HY(ing)YH( )SM(people.xsd)ES( with the XSD compiler results
+ in three parser skele)HY(tons)YH( being gener)HY(ated)YH(: )SM(gender_pskel)ES(,
+ )SM(person_pskel)ES(, and )SM(people_pskel)ES(. We are going
+ to examine and imple)HY(ment)YH( each of them in the subse)HY(quent)YH( sections.)EP(
+
+ )0 2 12 H(3.1)WB 83 Sn()WB 15 Sn( Imple)HY(ment)HY(ing)YH( the Gender Parser)EA()EH(
+
+ )0 P(The gener)HY(ated)YH( )SM(gender_pskel)ES( parser skele)HY(ton)YH( looks like
+ this:)EP(
+
+ ) 11 60 PR(class gender_pskel: public virtual xml_schema::string_pskel
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre \201\202;
+
+ virtual void
+ post_gender \201\202;
+};)RP(
+
+ )0 P(Notice that )SM(gender_pskel)ES( inher)HY(its)YH( from
+ )SM(xml_schema::string_skel)ES( which is a parser skele)HY(ton)YH(
+ for built-in XML Schema type )SM(string)ES( and is
+ prede)HY(fined)YH( in the XSD runtime library. This is an example
+ of the general rule that parser skele)HY(tons)YH( follow: if a type
+ in XML Schema inher)HY(its)YH( from another then there will be an
+ equiv)HY(a)HY(lent)YH( inher)HY(i)HY(tance)YH( between the corre)HY(spond)HY(ing)YH( parser
+ skele)HY(ton)YH( classes.)EP(
+
+ )0 P(The )SM(pre\201\202)ES( and )SM(post_gender\201\202)ES( call)HY(backs)YH(
+ should look famil)HY(iar)YH( from the previ)HY(ous)YH( chapter. Let's now
+ imple)HY(ment)YH( the parser. Our imple)HY(men)HY(ta)HY(tion)YH( will simply print
+ the gender to )SM(cout)ES(:)EP(
+
+
+ ) 11 51 PR(class gender_pimpl: public gender_pskel,
+ public xml_schema::string_pimpl
+{
+public:
+ virtual void
+ post_gender \201\202
+ {
+ std::string s = post_string \201\202;
+ cout << "gender: " << s << endl;
+ }
+};)RP(
+
+ )0 P(While the code is quite short, there is a lot going on. First,
+ notice that we are inher)HY(it)HY(ing)YH( from )SM(gender_pskel)ES( )EM(and)ES(
+ from )SM(xml_schema::string_pimpl)ES(. We've encoun)HY(tered)YH(
+ )SM(xml_schema::string_pimpl)ES( already; it is an
+ imple)HY(men)HY(ta)HY(tion)YH( of the )SM(xml_schema::string_pskel)ES( parser
+ skele)HY(ton)YH( for built-in XML Schema type )SM(string)ES(.)EP(
+
+ )0 P(This is another common theme in the C++/Parser program)HY(ming)YH( model:
+ reusing imple)HY(men)HY(ta)HY(tions)YH( of the base parsers in the derived ones with
+ the C++ mixin idiom. In our case, )SM(string_pimpl)ES( will
+ do all the dirty work of extract)HY(ing)YH( the data and we can just get
+ it at the end with the call to )SM(post_string\201\202)ES(.)EP(
+
+ )0 P(In case you are curious, here is what
+ )SM(xml_schema::string_pskel)ES( and
+ )SM(xml_schema::string_pimpl)ES( look like:)EP(
+
+ ) 25 49 PR(namespace xml_schema
+{
+ class string_pskel: public simple_content
+ {
+ public:
+ virtual std::string
+ post_string \201\202 = 0;
+ };
+
+ class string_pimpl: public virtual string_pskel
+ {
+ public:
+ virtual void
+ _pre \201\202;
+
+ virtual void
+ _characters \201const xml_schema::ro_string&\202;
+
+ virtual std::string
+ post_string \201\202;
+
+ protected:
+ std::string str_;
+ };
+})RP(
+
+ )0 P(There are three new pieces in this code that we haven't seen yet.
+ They are the )SM(simple_content)ES( class as well as
+ the )SM(_pre\201\202)ES( and )SM(_char)HY(ac)HY(ters)YH(\201\202)ES( func)HY(tions)YH(.
+ The )SM(simple_content)ES( class is defined in the XSD
+ runtime and is a base class for all parser skele)HY(tons)YH( that conform
+ to the simple content model in XML Schema. Types with the
+ simple content model cannot have nested elements\236only text
+ and attributes. There is also the )SM(complex_content)ES(
+ class which corre)HY(sponds)YH( to the complex content mode \201types with
+ nested elements, for example, )SM(person)ES( from
+ )SM(people.xsd)ES(\202.)EP(
+
+ )0 P(The )SM(_pre\201\202)ES( func)HY(tion)YH( is a parser call)HY(back)YH(. Remem)HY(ber)YH( we
+ talked about the )SM(pre\201\202)ES( and )SM(post_*\201\202)ES( call)HY(backs)YH(
+ in the previ)HY(ous)YH( chapter? There are actu)HY(ally)YH( two more call)HY(backs)YH(
+ with similar roles: )SM(_pre\201\202)ES( and )SM(_post \201\202)ES(.
+ As a result, each parser skele)HY(ton)YH( has four special call)HY(backs)YH(:)EP(
+
+ ) 11 15 PR( virtual void
+ pre \201\202;
+
+ virtual void
+ _pre \201\202;
+
+ virtual void
+ _post \201\202;
+
+ virtual void
+ post_name \201\202;)RP(
+
+ )0 P()SM(pre\201\202)ES( and )SM(_pre\201\202)ES( are initial)HY(iza)HY(tion)YH(
+ call)HY(backs)YH(. They get called in that order before a new instance of the type
+ is about to be parsed. The differ)HY(ence)YH( between )SM(pre\201\202)ES( and
+ )SM(_pre\201\202)ES( is conven)HY(tional)YH(: )SM(pre\201\202)ES( can
+ be completely over)HY(rid)HY(den)YH( by a derived parser. The derived
+ parser can also over)HY(ride)YH( )SM(_pre\201\202)ES( but has to always call
+ the orig)HY(i)HY(nal)YH( version. This allows you to parti)HY(tion)YH( initial)HY(iza)HY(tion)YH(
+ into customiz)HY(able)YH( and required parts.)EP(
+
+ )0 P(Simi)HY(larly)YH(, )SM(_post\201\202)ES( and )SM(post_name\201\202)ES( are
+ final)HY(iza)HY(tion)YH( call)HY(backs)YH( with exactly the same seman)HY(tics)YH(:
+ )SM(post_name\201\202)ES( can be completely over)HY(rid)HY(den)YH( by the derived
+ parser while the orig)HY(i)HY(nal)YH( )SM(_post\201\202)ES( should always be called.
+ )EP(
+
+ )0 P(The final bit we need to discuss in this section is the
+ )SM(_char)HY(ac)HY(ters)YH(\201\202)ES( func)HY(tion)YH(. As you might have guessed, it
+ is also a call)HY(back)YH(. A low-level one that deliv)HY(ers)YH( raw char)HY(ac)HY(ter)YH( content
+ for the type being parsed. You will seldom need to use this call)HY(back)YH(
+ directly. Using imple)HY(men)HY(ta)HY(tions)YH( for the built-in parsers provided by
+ the XSD runtime is usually a simpler and more conve)HY(nient)YH(
+ alter)HY(na)HY(tive)YH(.)EP(
+
+ )0 P(At this point you might be wonder)HY(ing)YH( why some )SM(post_*\201\202)ES(
+ call)HY(backs)YH(, for example )SM(post_string\201\202)ES(, return some data
+ while others, for example )SM(post_gender\201\202)ES(, have
+ )SM(void)ES( as a return type. This is a valid concern
+ and it will be addressed in the next chapter.)EP(
+
+ )0 2 13 H(3.2)WB 84 Sn()WB 16 Sn( Imple)HY(ment)HY(ing)YH( the Person Parser)EA()EH(
+
+ )0 P(The gener)HY(ated)YH( )SM(person_pskel)ES( parser skele)HY(ton)YH( looks like
+ this:)EP(
+
+ ) 43 60 PR(class person_pskel: public xml_schema::complex_content
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre \201\202;
+
+ virtual void
+ first_name \201const std::string&\202;
+
+ virtual void
+ last_name \201const std::string&\202;
+
+ virtual void
+ gender \201\202;
+
+ virtual void
+ age \201short\202;
+
+ virtual void
+ post_person \201\202;
+
+ // Parser construction API.
+ //
+ void
+ first_name_parser \201xml_schema::string_pskel&\202;
+
+ void
+ last_name_parser \201xml_schema::string_pskel&\202;
+)WR(
+ void
+ gender_parser \201gender_pskel&\202;
+
+ void
+ age_parser \201xml_schema::short_pskel&\202;
+
+ void
+ parsers \201xml_schema::string_pskel& /* first-name */,
+ xml_schema::string_pskel& /* last-name */,
+ gender_pskel& /* gender */,
+ xml_schema::short_pskel& /* age */\202;
+};)RP(
+
+
+ )0 P(As you can see, we have a parser call)HY(back)YH( for each of the nested
+ elements found in the )SM(person)ES( XML Schema type.
+ The imple)HY(men)HY(ta)HY(tion)YH( of this parser is straight)HY(for)HY(ward)YH(:)EP(
+
+ ) 21 39 PR(class person_pimpl: public person_pskel
+{
+public:
+ virtual void
+ first_name \201const std::string& n\202
+ {
+ cout << "first: " << f << endl;
+ }
+
+ virtual void
+ last_name \201const std::string& l\202
+ {
+ cout << "last: " << l << endl;
+ }
+
+ virtual void
+ age \201short a\202
+ {
+ cout << "age: " << a << endl;
+ }
+};)RP(
+
+ )0 P(Notice that we didn't over)HY(ride)YH( the )SM(gender\201\202)ES( call)HY(back)YH(
+ because all the print)HY(ing)YH( is done by )SM(gender_pimpl)ES(.)EP(
+
+
+ )0 2 14 H(3.3)WB 85 Sn()WB 17 Sn( Imple)HY(ment)HY(ing)YH( the People Parser)EA()EH(
+
+ )0 P(The gener)HY(ated)YH( )SM(people_pskel)ES( parser skele)HY(ton)YH( looks like
+ this:)EP(
+
+ ) 22 60 PR(class people_pskel: public xml_schema::complex_content
+{
+public:
+ // Parser callbacks. Override them in your implementation.
+ //
+ virtual void
+ pre \201\202;
+
+ virtual void
+ person \201\202;
+
+ virtual void
+ post_people \201\202;
+
+ // Parser construction API.
+ //
+ void
+ person_parser \201person_pskel&\202;
+
+ void
+ parsers \201person_pskel& /* person */\202;
+};)RP(
+
+ )0 P(The )SM(person\201\202)ES( call)HY(back)YH( will be called after parsing each
+ )SM(person)ES( element. While )SM(person_pimpl)ES( does
+ all the print)HY(ing)YH(, one useful thing we can do in this call)HY(back)YH( is to
+ print an extra newline after each person record so that our
+ output is more read)HY(able)YH(:)EP(
+
+ ) 9 39 PR(class people_pimpl: public people_pskel
+{
+public:
+ virtual void
+ person \201\202
+ {
+ cout << endl;
+ }
+};)RP(
+
+ )0 P(Now it is time to put every)HY(thing)YH( together.)EP(
+
+
+ )0 2 15 H(3.4)WB 86 Sn()WB 18 Sn( Connect)HY(ing)YH( the Parsers Together)EA()EH(
+
+ )0 P(At this point we have all the indi)HY(vid)HY(ual)YH( parsers imple)HY(mented)YH(
+ and can proceed to assem)HY(ble)YH( them into a complete parser
+ for our XML vocab)HY(u)HY(lary)YH(. The first step is to instan)HY(ti)HY(ate)YH(
+ all the indi)HY(vid)HY(ual)YH( parsers that we will need:)EP(
+
+ ) 6 34 PR(xml_schema::short_pimpl short_p;
+xml_schema::string_pimpl string_p;
+
+gender_pimpl gender_p;
+person_pimpl person_p;
+people_pimpl people_p;)RP(
+
+ )0 P(Notice that our schema uses two built-in XML Schema types:
+ )SM(string)ES( for the )SM(first-name)ES( and
+ )SM(last-name)ES( elements as well as )SM(short)ES(
+ for )SM(age)ES(. We will use prede)HY(fined)YH( parsers that
+ come with the XSD runtime to handle these types. The next
+ step is to connect all the indi)HY(vid)HY(ual)YH( parsers. We do this
+ with the help of func)HY(tions)YH( defined in the parser
+ skele)HY(tons)YH( and marked with the "Parser Construc)HY(tion)YH( API"
+ comment. One way to do it is to connect each indi)HY(vid)HY(ual)YH(
+ parser by calling the )SM(*_parser\201\202)ES( func)HY(tions)YH(:)EP(
+
+ ) 6 38 PR(person_p.first_name_parser \201string_p\202;
+person_p.last_name_parser \201string_p\202;
+person_p.gender_parser \201gender_p\202;
+person_p.age_parser \201short_p\202;
+
+people_p.person_parser \201person_p\202;)RP(
+
+ )0 P(You might be wonder)HY(ing)YH( what happens if you do not provide
+ a parser by not calling one of the )SM(*_parser\201\202)ES( func)HY(tions)YH(.
+ In that case the corre)HY(spond)HY(ing)YH( XML content will be skipped,
+ includ)HY(ing)YH( vali)HY(da)HY(tion)YH(. This is an effi)HY(cient)YH( way to ignore parts
+ of the docu)HY(ment)YH( that you are not inter)HY(ested)YH( in.)EP(
+
+
+ )0 P(An alter)HY(na)HY(tive)YH(, shorter, way to connect the parsers is by using
+ the )SM(parsers\201\202)ES( func)HY(tions)YH( which connects all the parsers
+ for a given type at once:)EP(
+
+ ) 2 57 PR(person_p.parsers \201string_p, string_p, gender_p, short_p\202;
+people_p.parsers \201person_p\202;)RP(
+
+ )0 P(The follow)HY(ing)YH( figure illus)HY(trates)YH( the result)HY(ing)YH( connec)HY(tions)YH(. Notice
+ the corre)HY(spon)HY(dence)YH( between return types of the )SM(post_*\201\202)ES(
+ func)HY(tions)YH( and argu)HY(ment)YH( types of element call)HY(backs)YH( that are connected
+ by the arrows.)EP(
+
+
+ )2 Al()BR()0 0 IM()Ea()BR(
+
+ )0 P(The last step is the construc)HY(tion)YH( of the docu)HY(ment)YH( parser and
+ invo)HY(ca)HY(tion)YH( of the complete parser on our sample XML instance:)EP(
+
+ ) 5 48 PR(xml_schema::document doc_p \201people_p, "people"\202;
+
+people_p.pre \201\202;
+doc_p.parse \201"people.xml"\202;
+people_p.post_people \201\202;)RP(
+
+ )0 P(Let's consider )SM(xml_schema::docu)HY(ment)YH()ES( in
+ more detail. While the exact defi)HY(ni)HY(tion)YH( of this class
+ varies depend)HY(ing)YH( on the under)HY(ly)HY(ing)YH( parser selected,
+ here is the common part:)EP(
+
+ ) 24 56 PR(namespace xml_schema
+{
+ class document
+ {
+ public:
+ document \201xml_schema::parser_base&,
+ const std::string& root_element_name,
+ bool polymorphic = false\202;
+
+ document \201xml_schema::parser_base&,
+ const std::string& root_element_namespace,
+ const std::string& root_element_name,
+ bool polymorphic = false\202;
+
+ void
+ parse \201const std::string& file\202;
+
+ void
+ parse \201std::istream&\202;
+
+ ...
+
+ };
+})RP(
+
+ )0 P()SM(xml_schema::docu)HY(ment)YH()ES( is a root parser for
+ the vocab)HY(u)HY(lary)YH(. The first argu)HY(ment)YH( to its construc)HY(tors)YH( is the
+ parser for the type of the root element \201)SM(people_impl)ES(
+ in our case\202. Because a type parser is only concerned with
+ the element's content and not with the element's name, we need
+ to specify the root element's name some)HY(where)YH(. That's
+ what is passed as the second and third argu)HY(ments)YH( to the
+ )SM(docu)HY(ment)YH()ES('s construc)HY(tors)YH(.)EP(
+
+ )0 P(There are also two over)HY(loaded)YH( )SM(parse\201\202)ES( func)HY(tions)YH(
+ defined in the )SM(docu)HY(ment)YH()ES( class \201there are actu)HY(ally)YH(
+ more but the others are specific to the under)HY(ly)HY(ing)YH( XML parser\202.
+ The first version parses a local file iden)HY(ti)HY(fied)YH( by a name. The
+ second version reads the data from an input stream. For more
+ infor)HY(ma)HY(tion)YH( on the )SM(xml_schema::docu)HY(ment)YH()ES( class
+ refer to )0 52 1 A(Chapter 7, "Docu)HY(ment)YH( Parser and Error
+ Handling")52 0 TN TL()Ec /AF f D(.)EP(
+
+ )0 P(Let's now consider a step-by-step list of actions that happen
+ as we parse through )SM(people.xml)ES(. The content of
+ )SM(people.xml)ES( is repeated below for conve)HY(nience)YH(.)EP(
+
+ ) 15 33 PR(<?xml version="1.0"?>
+<people>
+ <person>
+ <first-name>John</first-name>
+ <last-name>Doe</last-name>
+ <gender>male</gender>
+ <age>32</age>
+ </person>
+ <person>
+ <first-name>Jane</first-name>
+ <last-name>Doe</last-name>
+ <gender>female</gender>
+ <age>28</age>
+ </person>
+</people>)RP(
+
+
+ )4 OL( )-1 LI()SM(people_p.pre\201\202)ES( is called from
+ )SM(main\201\202)ES(. We did not provide any imple)HY(men)HY(ta)HY(tion)YH(
+ for this call)HY(back)YH( so this call is a no-op.
+
+ )-1 LI()SM(doc_p.parse\201"people.xml"\202)ES( is called from
+ )SM(main\201\202)ES(. The parser opens the file and starts
+ parsing its content.
+
+ )-1 LI(The parser encoun)HY(ters)YH( the root element. )SM(doc_p)ES(
+ veri)HY(fies)YH( that the root element is correct and calls
+ )SM(_pre\201\202)ES( on )SM(people_p)ES( which is also
+ a no-op. Parsing is now dele)HY(gated)YH( to )SM(people_p)ES(.
+
+ )-1 LI(The parser encoun)HY(ters)YH( the )SM(person)ES( element.
+ )SM(people_p)ES( deter)HY(mines)YH( that )SM(person_p)ES(
+ is respon)HY(si)HY(ble)YH( for parsing this element. )SM(pre\201\202)ES(
+ and )SM(_pre\201\202)ES( call)HY(backs)YH( are called on )SM(person_p)ES(.
+ Parsing is now dele)HY(gated)YH( to )SM(person_p)ES(.
+
+ )-1 LI(The parser encoun)HY(ters)YH( the )SM(first-name)ES( element.
+ )SM(person_p)ES( deter)HY(mines)YH( that )SM(string_p)ES(
+ is respon)HY(si)HY(ble)YH( for parsing this element. )SM(pre\201\202)ES(
+ and )SM(_pre\201\202)ES( call)HY(backs)YH( are called on )SM(string_p)ES(.
+ Parsing is now dele)HY(gated)YH( to )SM(string_p)ES(.
+
+ )-1 LI(The parser encoun)HY(ters)YH( char)HY(ac)HY(ter)YH( content consist)HY(ing)YH( of
+ )SM("John")ES(. The )SM(_char)HY(ac)HY(ters)YH(\201\202)ES( call)HY(back)YH( is
+ called on )SM(string_p)ES(.
+
+ )-1 LI(The parser encoun)HY(ters)YH( the end of )SM(first-name)ES(
+ element. The )SM(_post\201\202)ES( and )SM(post_string\201\202)ES(
+ call)HY(backs)YH( are called on )SM(string_p)ES(. The
+ )SM(first_name\201\202)ES( call)HY(back)YH( is called on )SM(person_p)ES(
+ with the return value of )SM(post_string\201\202)ES(. The
+ )SM(first_name\201\202)ES( imple)HY(men)HY(ta)HY(tion)YH( prints
+ )SM("first: John")ES( to )SM(cout)ES(.
+ Parsing is now returned to )SM(person_p)ES(.
+
+ )-1 LI(Steps anal)HY(o)HY(gous)YH( to 5-7 are performed for the )SM(last-name)ES(,
+ )SM(gender)ES(, and )SM(age)ES( elements.
+
+ )-1 LI(The parser encoun)HY(ters)YH( the end of )SM(person)ES(
+ element. The )SM(_post\201\202)ES( and )SM(post_person\201\202)ES(
+ call)HY(backs)YH( are called on )SM(person_p)ES(. The
+ )SM(person\201\202)ES( call)HY(back)YH( is called on )SM(people_p)ES(.
+ The )SM(person\201\202)ES( imple)HY(men)HY(ta)HY(tion)YH( prints a new line
+ to )SM(cout)ES(. Parsing is now returned to
+ )SM(people_p)ES(.
+
+ )-1 LI(Steps 4-9 are performed for the second )SM(person)ES(
+ element.
+
+ )-1 LI(The parser encoun)HY(ters)YH( the end of )SM(people)ES(
+ element. The )SM(_post\201\202)ES( call)HY(back)YH( is called on
+ )SM(people_p)ES(. The )SM(doc_p.parse\201"people.xml"\202)ES(
+ call returns to )SM(main\201\202)ES(.
+
+ )-1 LI()SM(people_p.post_people\201\202)ES( is called from
+ )SM(main\201\202)ES( which is a no-op.
+
+ )LO(
+
+
+
+
+
+ )0 1 16 H(4)WB 87 Sn()WB 19 Sn( Type Maps)EA()EH(
+
+ )0 P(There are many useful things you can do inside parser call)HY(backs)YH( as they
+ are right now. There are, however, times when you want to prop)HY(a)HY(gate)YH(
+ some infor)HY(ma)HY(tion)YH( from one parser to another or to the caller of the
+ parser. One common task that would greatly benefit from such a
+ possi)HY(bil)HY(ity)YH( is build)HY(ing)YH( a tree-like in-memory object model of the
+ data stored in XML. During execu)HY(tion)YH(, each indi)HY(vid)HY(ual)YH( sub-parser
+ would create a sub-tree and return it to its )EM(parent)ES( parser
+ which can then incor)HY(po)HY(rate)YH( this sub-tree into the whole tree.)EP(
+
+ )0 P(In this chapter we will discuss the mech)HY(a)HY(nisms)YH( offered by the
+ C++/Parser mapping for return)HY(ing)YH( infor)HY(ma)HY(tion)YH( from indi)HY(vid)HY(ual)YH(
+ parsers and see how to use them to build an object model
+ of our people vocab)HY(u)HY(lary)YH(.)EP(
+
+ )0 2 17 H(4.1)WB 88 Sn()WB 20 Sn( Object Model)EA()EH(
+
+ )0 P(An object model for our person record example could
+ look like this \201saved in the )SM(people.hxx)ES( file\202:)EP(
+
+ ) 53 35 PR(#include <string>
+#include <vector>
+
+enum gender
+{
+ male,
+ female
+};
+
+class person
+{
+public:
+ person \201const std::string& first,
+ const std::string& last,
+ ::gender gender,
+ short age\202
+ : first_ \201first\202, last_ \201last\202,
+ gender_ \201gender\202, age_ \201age\202
+ {
+ }
+
+ const std::string&
+ first \201\202 const
+ {
+ return first_;
+ }
+
+ const std::string&
+ last \201\202 const
+ {
+ return last_;)WR(
+ }
+
+ ::gender
+ gender \201\202 const
+ {
+ return gender_;
+ }
+
+ short
+ age \201\202 const
+ {
+ return age_;
+ }
+
+private:
+ std::string first_;
+ std::string last_;
+ ::gender gender_;
+ short age_;
+};
+
+typedef std::vector<person> people;)RP(
+
+ )0 P(While it is clear which parser is respon)HY(si)HY(ble)YH( for which part of
+ the object model, it is not exactly clear how, for
+ example, )SM(gender_pimpl)ES( will deliver )SM(gender)ES(
+ to )SM(person_pimpl)ES(. You might have noticed that
+ )SM(string_pimpl)ES( manages to deliver its value to the
+ )SM(first_name\201\202)ES( call)HY(back)YH( of )SM(person_pimpl)ES(. Let's
+ see how we can utilize the same mech)HY(a)HY(nism)YH( to prop)HY(a)HY(gate)YH( our
+ own data.)EP(
+
+ )0 P(There is a way to tell the XSD compiler that you want to
+ exchange data between parsers. More precisely, for each
+ type defined in XML Schema, you can tell the compiler two things.
+ First, the return type of the )SM(post_*\201\202)ES( call)HY(back)YH(
+ in the parser skele)HY(ton)YH( gener)HY(ated)YH( for this type. And, second,
+ the argu)HY(ment)YH( type for call)HY(backs)YH( corre)HY(spond)HY(ing)YH( to elements and
+ attributes of this type. For example, for XML Schema type
+ )SM(gender)ES( we can specify the return type for
+ )SM(post_gender\201\202)ES( in the )SM(gender_pskel)ES(
+ skele)HY(ton)YH( and the argu)HY(ment)YH( type for the )SM(gender\201\202)ES( call)HY(back)YH(
+ in the )SM(person_pskel)ES( skele)HY(ton)YH(. As you might have guessed,
+ the gener)HY(ated)YH( code will then pass the return value from the
+ )SM(post_*\201\202)ES( call)HY(back)YH( as an argu)HY(ment)YH( to the element or
+ attribute call)HY(back)YH(.)EP(
+
+ )0 P(The way to tell the XSD compiler about these XML Schema to
+ C++ mappings is with type map files. Here is a simple type
+ map for the )SM(gender)ES( type from the previ)HY(ous)YH( para)HY(graph)YH(:)EP(
+
+ ) 2 25 PR(include "people.hxx";
+gender ::gender ::gender;)RP(
+
+ )0 P(The first line indi)HY(cates)YH( that the gener)HY(ated)YH( code must include
+ )SM(people.hxx)ES( in order to get the defi)HY(ni)HY(tion)YH( for the
+ )SM(gender)ES( type. The second line spec)HY(i)HY(fies)YH( that both
+ argu)HY(ment)YH( and return types for the )SM(gender)ES(
+ XML Schema type should be the )SM(::gender)ES( C++ enum
+ \201we use fully-qual)HY(i)HY(fied)YH( C++ names to avoid name clashes\202.
+ The next section will describe the type map format in detail.
+ We save this type map in )SM(people.map)ES( and
+ then trans)HY(late)YH( our schemas with the )SM(--type-map)ES(
+ option to let the XSD compiler know about our type map:)EP(
+
+ ) 1 49 PR($ xsd cxx-parser --type-map people.map people.xsd)RP(
+
+ )0 P(If we now look at the gener)HY(ated)YH( )SM(people-pskel.hxx)ES(,
+ we will see the follow)HY(ing)YH( changes in the )SM(gender_pskel)ES( and
+ )SM(person_pskel)ES( skele)HY(tons)YH(:)EP(
+
+ ) 17 59 PR(#include "people.hxx"
+
+class gender_pskel: public virtual xml_schema::string_pskel
+{
+ virtual ::gender
+ post_gender \201\202 = 0;
+
+ ...
+};
+
+class person_pskel: public xml_schema::complex_content
+{
+ virtual void
+ gender \201::gender\202;
+
+ ...
+};)RP(
+
+ )0 P(Notice that )SM(#include "people.hxx")ES( was added to
+ the gener)HY(ated)YH( header file from the type map to provide the
+ defi)HY(ni)HY(tion)YH( for the )SM(gender)ES( enum.)EP(
+
+ )0 2 18 H(4.2)WB 89 Sn()WB 21 Sn( Type Map File Format)EA()EH(
+
+ )0 P(Type map files are used to define a mapping between XML Schema
+ and C++ types. The compiler uses this infor)HY(ma)HY(tion)YH(
+ to deter)HY(mine)YH( return types of )SM(post_*\201\202)ES(
+ call)HY(backs)YH( in parser skele)HY(tons)YH( corre)HY(spond)HY(ing)YH( to XML Schema
+ types as well as argu)HY(ment)YH( types for call)HY(backs)YH( corre)HY(spond)HY(ing)YH(
+ to elements and attributes of these types.)EP(
+
+ )0 P(The compiler has a set of prede)HY(fined)YH( mapping rules that map
+ the built-in XML Schema types to suit)HY(able)YH( C++ types \201discussed
+ below\202 and all other types to )SM(void)ES(.
+ By provid)HY(ing)YH( your own type maps you can over)HY(ride)YH( these prede)HY(fined)YH(
+ rules. The format of the type map file is presented below:
+ )EP(
+
+ ) 5 58 PR(namespace <schema-namespace> [<cxx-namespace>]
+{
+ \201include <file-name>;\202*
+ \201[type] <schema-type> <cxx-ret-type> [<cxx-arg-type>];\202*
+})RP(
+
+ )0 P(Both )SM()I(<schema-names)HY(pace)YH(>)ES()ES( and
+ )SM()I(<schema-type>)ES()ES( are regex patterns while
+ )SM()I(<cxx-names)HY(pace)YH(>)ES()ES(,
+ )SM()I(<cxx-ret-type>)ES()ES(, and
+ )SM()I(<cxx-arg-type>)ES()ES( are regex pattern
+ substi)HY(tu)HY(tions)YH(. All names can be option)HY(ally)YH( enclosed in
+ )SM(" ")ES(, for example, to include white-spaces.)EP(
+
+ )0 P()SM()I(<schema-names)HY(pace)YH(>)ES()ES( deter)HY(mines)YH( XML
+ Schema names)HY(pace)YH(. Optional )SM()I(<cxx-names)HY(pace)YH(>)ES()ES(
+ is prefixed to every C++ type name in this names)HY(pace)YH( decla)HY(ra)HY(tion)YH(.
+ )SM()I(<cxx-ret-type>)ES()ES( is a C++ type name that is
+ used as a return type for the )SM(post_*\201\202)ES( call)HY(back)YH(.
+ Optional )SM()I(<cxx-arg-type>)ES()ES( is an argu)HY(ment)YH(
+ type for call)HY(backs)YH( corre)HY(spond)HY(ing)YH( to elements and attributes
+ of this type. If )SM()I(<cxx-arg-type>)ES()ES( is not
+ spec)HY(i)HY(fied)YH(, it defaults to )SM()I(<cxx-ret-type>)ES()ES(
+ if )SM()I(<cxx-ret-type>)ES()ES( ends with )SM(*)ES( or
+ )SM(&)ES( \201that is, it is a pointer or a refer)HY(ence)YH(\202 and
+ )SM(const\240)I(<cxx-ret-type>)ES(&)ES(
+ other)HY(wise)YH(.
+ )SM()I(<file-name>)ES()ES( is a file name either in the
+ )SM(" ")ES( or )SM(< >)ES( format
+ and is added with the )SM(#include)ES( direc)HY(tive)YH( to
+ the gener)HY(ated)YH( code.)EP(
+
+ )0 P(The )SM()BD(#)ES()ES( char)HY(ac)HY(ter)YH( starts a comment that ends
+ with a new line or end of file. To specify a name that contains
+ )SM()BD(#)ES()ES( enclose it in )SM()BD(" ")ES()ES(.
+ For example:)EP(
+
+ ) 12 44 PR(namespace http://www.example.com/xmlns/my my
+{
+ include "my.hxx";
+
+ # Pass apples by value.
+ #
+ apple apple;
+
+ # Pass oranges as pointers.
+ #
+ orange orange_t*;
+})RP(
+
+ )0 P(In the example above, for the
+ )SM(http://www.example.com/xmlns/my#orange)ES(
+ XML Schema type, the )SM(my::orange_t*)ES( C++ type will
+ be used as both return and argu)HY(ment)YH( types.)EP(
+
+ )0 P(Several names)HY(pace)YH( decla)HY(ra)HY(tions)YH( can be spec)HY(i)HY(fied)YH( in a single
+ file. The names)HY(pace)YH( decla)HY(ra)HY(tion)YH( can also be completely
+ omitted to map types in a schema without a names)HY(pace)YH(. For
+ instance:)EP(
+
+ ) 7 41 PR(include "my.hxx";
+apple apple;
+
+namespace http://www.example.com/xmlns/my
+{
+ orange "const orange_t*";
+})RP(
+
+ )0 P(The compiler has a number of prede)HY(fined)YH( mapping rules for
+ the built-in XML Schema types which can be presented as the
+ follow)HY(ing)YH( map files. The string-based XML Schema types are
+ mapped to either )SM(std::string)ES( or
+ )SM(std::wstring)ES( depend)HY(ing)YH( on the char)HY(ac)HY(ter)YH( type
+ selected \201see )0 53 1 A( Section 5.2, "Char)HY(ac)HY(ter)YH( Type and
+ Encod)HY(ing)YH(")53 0 TN TL()Ec /AF f D( for more infor)HY(ma)HY(tion)YH(\202. The binary XML Schema
+ types are mapped to either )SM(std::unique_ptr<xml_schema::buffer>)ES(
+ or )SM(std::auto_ptr<xml_schema::buffer>)ES(
+ depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected \201C++11 or C++98,
+ respec)HY(tively)YH(; refer to the )SM(--std)ES( XSD compiler
+ command line option for details\202.)EP(
+
+ ) 59 63 PR(namespace http://www.w3.org/2001/XMLSchema
+{
+ boolean bool bool;
+
+ byte "signed char" "signed char";
+ unsignedByte "unsigned char" "unsigned char";
+
+ short short short;
+ unsignedShort "unsigned short" "unsigned short";
+
+ int int int;
+ unsignedInt "unsigned int" "unsigned int";
+
+ long "long long" "long long";
+ unsignedLong "unsigned long long" "unsigned long long";
+
+ integer "long long" "long long";
+
+ negativeInteger "long long" "long long";
+ nonPositiveInteger "long long" "long long";
+
+ positiveInteger "unsigned long long" "unsigned long long";
+ nonNegativeInteger "unsigned long long" "unsigned long long";
+
+ float float float;
+ double double double;
+ decimal double double;
+
+ string std::string;
+ normalizedString std::string;
+ token std::string;)WR(
+ Name std::string;
+ NMTOKEN std::string;
+ NCName std::string;
+ ID std::string;
+ IDREF std::string;
+ language std::string;
+ anyURI std::string;
+
+ NMTOKENS xml_schema::string_sequence;
+ IDREFS xml_schema::string_sequence;
+
+ QName xml_schema::qname;
+
+ base64Binary std::[unique|auto]_ptr<xml_schema::buffer>
+ std::[unique|auto]_ptr<xml_schema::buffer>;
+ hexBinary std::[unique|auto]_ptr<xml_schema::buffer>
+ std::[unique|auto]_ptr<xml_schema::buffer>;
+
+ date xml_schema::date;
+ dateTime xml_schema::date_time;
+ duration xml_schema::duration;
+ gDay xml_schema::gday;
+ gMonth xml_schema::gmonth;
+ gMonthDay xml_schema::gmonth_day;
+ gYear xml_schema::gyear;
+ gYearMonth xml_schema::gyear_month;
+ time xml_schema::time;
+})RP(
+
+ )0 P(For more infor)HY(ma)HY(tion)YH( about the mapping of the built-in XML Schema types
+ to C++ types refer to )0 51 1 A(Chapter 6, "Built-In XML Schema Type
+ Parsers")51 0 TN TL()Ec /AF f D(. The last prede)HY(fined)YH( rule maps anything that wasn't
+ mapped by previ)HY(ous)YH( rules to )SM(void)ES(:)EP(
+
+ ) 4 15 PR(namespace .*
+{
+ .* void void;
+})RP(
+
+
+ )0 P(When you provide your own type maps with the
+ )SM(--type-map)ES( option, they are eval)HY(u)HY(ated)YH( first. This
+ allows you to selec)HY(tively)YH( over)HY(ride)YH( any of the prede)HY(fined)YH( rules.
+ Note also that if you change the mapping
+ of a built-in XML Schema type then it becomes your respon)HY(si)HY(bil)HY(ity)YH(
+ to provide the corre)HY(spond)HY(ing)YH( parser skele)HY(ton)YH( and imple)HY(men)HY(ta)HY(tion)YH(
+ in the )SM(xml_schema)ES( names)HY(pace)YH(. You can include the
+ custom defi)HY(ni)HY(tions)YH( into the gener)HY(ated)YH( header file using the
+ )SM(--hxx-prologue-*)ES( options.)EP(
+
+ )0 2 19 H(4.3)WB 90 Sn()WB 22 Sn( Parser Imple)HY(men)HY(ta)HY(tions)YH()EA()EH(
+
+ )0 P(With the knowl)HY(edge)YH( from the previ)HY(ous)YH( section, we can proceed
+ with creat)HY(ing)YH( a type map that maps types in the )SM(people.xsd)ES(
+ schema to our object model classes in
+ )SM(people.hxx)ES(. In fact, we already have the begin)HY(ning)YH(
+ of our type map file in )SM(people.map)ES(. Let's extend
+ it with the rest of the types:)EP(
+
+ ) 5 25 PR(include "people.hxx";
+
+gender ::gender ::gender;
+person ::person;
+people ::people;)RP(
+
+ )0 P(There are a few things to note about this type map. We did not
+ provide the argu)HY(ment)YH( types for )SM(person)ES( and
+ )SM(people)ES( because the default constant refer)HY(ence)YH( is
+ exactly what we need. We also did not provide any mappings
+ for built-in XML Schema types )SM(string)ES( and
+ )SM(short)ES( because they are handled by the prede)HY(fined)YH(
+ rules and we are happy with the result. Note also that
+ all C++ types are fully qual)HY(i)HY(fied)YH(. This is done to avoid
+ poten)HY(tial)YH( name conflicts in the gener)HY(ated)YH( code. Now we can
+ recom)HY(pile)YH( our schema and move on to imple)HY(ment)HY(ing)YH( the parsers:)EP(
+
+ ) 1 68 PR($ xsd cxx-parser --xml-parser expat --type-map people.map people.xsd)RP(
+
+ )0 P(Here is the imple)HY(men)HY(ta)HY(tion)YH( of our three parsers in full. One
+ way to save typing when imple)HY(ment)HY(ing)YH( your own parsers is
+ to open the gener)HY(ated)YH( code and copy the signa)HY(tures)YH( of parser
+ call)HY(backs)YH( into your code. Or you could always auto gener)HY(ate)YH( the
+ sample imple)HY(men)HY(ta)HY(tions)YH( and fill them with your code.)EP(
+
+
+ ) 73 52 PR(#include "people-pskel.hxx"
+
+class gender_pimpl: public gender_pskel,
+ public xml_schema::string_pimpl
+{
+public:
+ virtual ::gender
+ post_gender \201\202
+ {
+ return post_string \201\202 == "male" ? male : female;
+ }
+};
+
+class person_pimpl: public person_pskel
+{
+public:
+ virtual void
+ first_name \201const std::string& f\202
+ {
+ first_ = f;
+ }
+
+ virtual void
+ last_name \201const std::string& l\202
+ {
+ last_ = l;
+ }
+
+ virtual void
+ gender \201::gender g\202
+ {)WR(
+ gender_ = g;
+ }
+
+ virtual void
+ age \201short a\202
+ {
+ age_ = a;
+ }
+
+ virtual ::person
+ post_person \201\202
+ {
+ return ::person \201first_, last_, gender_, age_\202;
+ }
+
+private:
+ std::string first_;
+ std::string last_;
+ ::gender gender_;
+ short age_;
+};
+
+class people_pimpl: public people_pskel
+{
+public:
+ virtual void
+ person \201const ::person& p\202
+ {
+ people_.push_back \201p\202;
+ })WR(
+
+ virtual ::people
+ post_people \201\202
+ {
+ ::people r;
+ r.swap \201people_\202;
+ return r;
+ }
+
+private:
+ ::people people_;
+};)RP(
+
+ )0 P(This code frag)HY(ment)YH( should look famil)HY(iar)YH( by now. Just note that
+ all the )SM(post_*\201\202)ES( call)HY(backs)YH( now have return types instead
+ of )SM(void)ES(. Here is the imple)HY(men)HY(ta)HY(tion)YH( of the test
+ driver for this example:)EP(
+
+ ) 38 76 PR(#include <iostream>
+
+using namespace std;
+
+int
+main \201int argc, char* argv[]\202
+{
+ // Construct the parser.
+ //
+ xml_schema::short_pimpl short_p;
+ xml_schema::string_pimpl string_p;
+
+ gender_pimpl gender_p;
+ person_pimpl person_p;
+ people_pimpl people_p;
+
+ person_p.parsers \201string_p, string_p, gender_p, short_p\202;
+ people_p.parsers \201person_p\202;
+
+ // Parse the document to obtain the object model.
+ //
+ xml_schema::document doc_p \201people_p, "people"\202;
+
+ people_p.pre \201\202;
+ doc_p.parse \201argv[1]\202;
+ people ppl = people_p.post_people \201\202;
+
+ // Print the object model.
+ //
+ for \201people::iterator i \201ppl.begin \201\202\202; i != ppl.end \201\202; ++i\202
+ {)WR(
+ cout << "first: " << i->first \201\202 << endl
+ << "last: " << i->last \201\202 << endl
+ << "gender: " << \201i->gender \201\202 == male ? "male" : "female"\202 << endl
+ << "age: " << i->age \201\202 << endl
+ << endl;
+ }
+})RP(
+
+ )0 P(The parser creation and assem)HY(bly)YH( part is exactly the same as in
+ the previ)HY(ous)YH( chapter. The parsing part is a bit differ)HY(ent)YH(:
+ )SM(post_people\201\202)ES( now has a return value which is the
+ complete object model. We store it in the
+ )SM(ppl)ES( vari)HY(able)YH(. The last bit of the code simply iter)HY(ates)YH(
+ over the )SM(people)ES( vector and prints the infor)HY(ma)HY(tion)YH(
+ for each person. We save the last two code frag)HY(ments)YH( to
+ )SM(driver.cxx)ES( and proceed to compile and test
+ our new appli)HY(ca)HY(tion)YH(:)EP(
+
+
+ ) 12 60 PR($ c++ -std=c++11 -I.../libxsd -c driver.cxx people-pskel.cxx
+$ c++ -std=c++11 -o driver driver.o people-pskel.o -lexpat
+$ ./driver people.xml
+first: John
+last: Doe
+gender: male
+age: 32
+
+first: Jane
+last: Doe
+gender: female
+age: 28)RP(
+
+
+
+
+
+ )0 1 20 H(5)WB 91 Sn()WB 23 Sn( Mapping Config)HY(u)HY(ra)HY(tion)YH()EA()EH(
+
+ )0 P(The C++/Parser mapping has a number of config)HY(u)HY(ra)HY(tion)YH( param)HY(e)HY(ters)YH( that
+ deter)HY(mine)YH( the overall prop)HY(er)HY(ties)YH( and behav)HY(ior)YH( of the gener)HY(ated)YH( code.
+ Config)HY(u)HY(ra)HY(tion)YH( param)HY(e)HY(ters)YH( are spec)HY(i)HY(fied)YH( with the XSD command line
+ options and include the C++ stan)HY(dard)YH(, the char)HY(ac)HY(ter)YH( type that is used
+ by the gener)HY(ated)YH( code, the under)HY(ly)HY(ing)YH( XML parser, whether the XML Schema
+ vali)HY(da)HY(tion)YH( is performed in the gener)HY(ated)YH( code, and support for XML Schema
+ poly)HY(mor)HY(phism)YH(. This chapter describes these config)HY(u)HY(ra)HY(tion)YH(
+ param)HY(e)HY(ters)YH( in more detail. For more ways to config)HY(ure)YH( the gener)HY(ated)YH(
+ code refer to the
+ )R1 2 A(XSD
+ Compiler Command Line Manual)EA(.
+ )EP(
+
+ )0 2 21 H(5.1)WB 92 Sn()WB 24 Sn( C++ Stan)HY(dard)YH()EA()EH(
+
+ )0 P(The C++/Parser mapping provides support for ISO/IEC C++ 2011 \201C++11\202
+ and ISO/IEC C++ 1998/2003 \201C++98\202. To select the C++ stan)HY(dard)YH( for the
+ gener)HY(ated)YH( code we use the )SM(--std)ES( XSD compiler command
+ line option. While the major)HY(ity)YH( of the exam)HY(ples)YH( in this guide use
+ C++11, the docu)HY(ment)YH( explains the C++11/98 usage differ)HY(ence)YH( and so
+ they can easily be converted to C++98.)EP(
+
+ )0 2 22 H(5.2)WB 93 Sn()WB 25 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()EA()EH(
+
+ )0 P(The C++/Parser mapping has built-in support for two char)HY(ac)HY(ter)YH( types:
+ )SM(char)ES( and )SM(wchar_t)ES(. You can select the
+ char)HY(ac)HY(ter)YH( type with the )SM(--char-type)ES( command line
+ option. The default char)HY(ac)HY(ter)YH( type is )SM(char)ES(. The
+ string-based built-in XML Schema types are returned as either
+ )SM(std::string)ES( or )SM(std::wstring)ES( depend)HY(ing)YH(
+ on the char)HY(ac)HY(ter)YH( type selected.)EP(
+
+ )0 P(Another aspect of the mapping that depends on the char)HY(ac)HY(ter)YH( type
+ is char)HY(ac)HY(ter)YH( encod)HY(ing)YH(. For the )SM(char)ES( char)HY(ac)HY(ter)YH( type
+ the default encod)HY(ing)YH( is UTF-8. Other supported encod)HY(ings)YH( are
+ ISO-8859-1, Xerces-C++ Local Code Page \201LPC\202, as well as
+ custom encod)HY(ings)YH(. You can select which encod)HY(ing)YH( should be used
+ in the object model with the )SM(--char-encod)HY(ing)YH()ES( command
+ line option.)EP(
+
+ )0 P(For the )SM(wchar_t)ES( char)HY(ac)HY(ter)YH( type the encod)HY(ing)YH( is
+ auto)HY(mat)HY(i)HY(cally)YH( selected between UTF-16 and UTF-32/UCS-4 depend)HY(ing)YH(
+ on the size of the )SM(wchar_t)ES( type. On some plat)HY(forms)YH(
+ \201for example, Windows with Visual C++ and AIX with IBM XL C++\202
+ )SM(wchar_t)ES( is 2 bytes long. For these plat)HY(forms)YH( the
+ encod)HY(ing)YH( is UTF-16. On other plat)HY(forms)YH( )SM(wchar_t)ES( is 4 bytes
+ long and UTF-32/UCS-4 is used.)EP(
+
+ )0 P(Note also that the char)HY(ac)HY(ter)YH( encod)HY(ing)YH( that is used in the object model
+ is inde)HY(pen)HY(dent)YH( of the encod)HY(ings)YH( used in input and output XML. In fact,
+ all three \201object mode, input XML, and output XML\202 can have differ)HY(ent)YH(
+ encod)HY(ings)YH(.)EP(
+
+ )0 2 23 H(5.3)WB 94 Sn()WB 26 Sn( Under)HY(ly)HY(ing)YH( XML Parser)EA()EH(
+
+ )0 P(The C++/Parser mapping can be used with either Xerces-C++ or Expat
+ as the under)HY(ly)HY(ing)YH( XML parser. You can select the XML parser with
+ the )SM(--xml-parser)ES( command line option. Valid values
+ for this option are )SM(xerces)ES( and )SM(expat)ES(.
+ The default XML parser is Xerces-C++.)EP(
+
+ )0 P(The gener)HY(ated)YH( code is iden)HY(ti)HY(cal)YH( for both parsers except for the
+ )SM(xml_schema::docu)HY(ment)YH()ES( class in which some of the
+ )SM(parse\201\202)ES( func)HY(tions)YH( are parser-specific as described
+ in )0 52 1 A(Chapter 7, "Docu)HY(ment)YH( Parser and Error Handling")52 0 TN TL()Ec /AF f D(.)EP(
+
+
+ )0 2 24 H(5.4)WB 95 Sn()WB 27 Sn( XML Schema Vali)HY(da)HY(tion)YH()EA()EH(
+
+ )0 P(The C++/Parser mapping provides support for vali)HY(dat)HY(ing)YH( a
+ commonly-used subset of W3C XML Schema in the gener)HY(ated)YH( code.
+ For the list of supported XML Schema constructs refer to
+ )0 54 1 A(Appendix A, "Supported XML Schema Constructs")54 0 TN TL()Ec /AF f D(.)EP(
+
+ )0 P(By default vali)HY(da)HY(tion)YH( in the gener)HY(ated)YH( code is disabled if
+ the under)HY(ly)HY(ing)YH( XML parser is vali)HY(dat)HY(ing)YH( \201Xerces-C++\202 and
+ enabled other)HY(wise)YH( \201Expat\202. See )0 50 1 A(Section 5.3,
+ "Under)HY(ly)HY(ing)YH( XML Parser")50 0 TN TL()Ec /AF f D( for more infor)HY(ma)HY(tion)YH( about
+ the under)HY(ly)HY(ing)YH( XML parser. You can over)HY(ride)YH( the default
+ behav)HY(ior)YH( with the )SM(--gener)HY(ate)YH(-vali)HY(da)HY(tion)YH()ES(
+ and )SM(--suppress-vali)HY(da)HY(tion)YH()ES( command line options.)EP(
+
+
+ )0 2 25 H(5.5)WB 96 Sn()WB 28 Sn( Support for Poly)HY(mor)HY(phism)YH()EA()EH(
+
+ )0 P(By default the XSD compiler gener)HY(ates)YH( non-poly)HY(mor)HY(phic)YH( code. If your
+ vocab)HY(u)HY(lary)YH( uses XML Schema poly)HY(mor)HY(phism)YH( in the form of )SM(xsi:type)ES(
+ and/or substi)HY(tu)HY(tion)YH( groups, then you will need to compile your schemas
+ with the )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option to produce
+ poly)HY(mor)HY(phism)YH(-aware code as well as pass )SM(true)ES( as the last
+ argu)HY(ment)YH( to the )SM(xml_schema::docu)HY(ment)YH()ES('s construc)HY(tors)YH(.)EP(
+
+ )0 P(When using the poly)HY(mor)HY(phism)YH(-aware gener)HY(ated)YH( code, you can specify
+ several parsers for a single element by passing a parser map
+ instead of an indi)HY(vid)HY(ual)YH( parser to the parser connec)HY(tion)YH( func)HY(tion)YH(
+ for the element. One of the parsers will then be looked up and used
+ depend)HY(ing)YH( on the )SM(xsi:type)ES( attribute value or an element
+ name from a substi)HY(tu)HY(tion)YH( group. Consider the follow)HY(ing)YH( schema as an
+ example:)EP(
+
+ ) 44 62 PR(<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="person">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <!-- substitution group root -->
+ <xs:element name="person" type="person"/>
+
+ <xs:complexType name="superman">
+ <xs:complexContent>
+ <xs:extension base="person">
+ <xs:attribute name="can-fly" type="xs:boolean"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="superman"
+ type="superman"
+ substitutionGroup="person"/>
+
+ <xs:complexType name="batman">
+ <xs:complexContent>
+ <xs:extension base="superman">
+ <xs:attribute name="wing-span" type="xs:unsignedInt"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+)WR(
+ <xs:element name="batman"
+ type="batman"
+ substitutionGroup="superman"/>
+
+ <xs:complexType name="supermen">
+ <xs:sequence>
+ <xs:element ref="person" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="supermen" type="supermen"/>
+
+</xs:schema>)RP(
+
+ )0 P(Conform)HY(ing)YH( XML docu)HY(ments)YH( can use the )SM(super)HY(man)YH()ES(
+ and )SM(batman)ES( types in place of the )SM(person)ES(
+ type either by spec)HY(i)HY(fy)HY(ing)YH( the type with the )SM(xsi:type)ES(
+ attributes or by using the elements from the substi)HY(tu)HY(tion)YH(
+ group, for instance:)EP(
+
+
+ ) 15 64 PR(<supermen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <person>
+ <name>John Doe</name>
+ </person>
+
+ <superman can-fly="false">
+ <name>James "007" Bond</name>
+ </superman>
+
+ <superman can-fly="true" wing-span="10" xsi:type="batman">
+ <name>Bruce Wayne</name>
+ </superman>
+
+</supermen>)RP(
+
+ )0 P(To print the data stored in such XML docu)HY(ments)YH( we can imple)HY(ment)YH(
+ the parsers as follows:)EP(
+
+ ) 79 52 PR(class person_pimpl: public virtual person_pskel
+{
+public:
+ virtual void
+ pre \201\202
+ {
+ cout << "starting to parse person" << endl;
+ }
+
+ virtual void
+ name \201const std::string& v\202
+ {
+ cout << "name: " << v << endl;
+ }
+
+ virtual void
+ post_person \201\202
+ {
+ cout << "finished parsing person" << endl;
+ }
+};
+
+class superman_pimpl: public virtual superman_pskel,
+ public person_pimpl
+{
+public:
+ virtual void
+ pre \201\202
+ {
+ cout << "starting to parse superman" << endl;
+ })WR(
+
+ virtual void
+ can_fly \201bool v\202
+ {
+ cout << "can-fly: " << v << endl;
+ }
+
+ virtual void
+ post_person \201\202
+ {
+ post_superman \201\202;
+ }
+
+ virtual void
+ post_superman \201\202
+ {
+ cout << "finished parsing superman" << endl
+ }
+};
+
+class batman_pimpl: public virtual batman_pskel,
+ public superman_pimpl
+{
+public:
+ virtual void
+ pre \201\202
+ {
+ cout << "starting to parse batman" << endl;
+ }
+)WR(
+ virtual void
+ wing_span \201unsigned int v\202
+ {
+ cout << "wing-span: " << v << endl;
+ }
+
+ virtual void
+ post_superman \201\202
+ {
+ post_batman \201\202;
+ }
+
+ virtual void
+ post_batman \201\202
+ {
+ cout << "finished parsing batman" << endl;
+ }
+};)RP(
+
+ )0 P(Note that because the derived type parsers \201)SM(super)HY(man)YH(_pskel)ES(
+ and )SM(batman_pskel)ES(\202 are called via the )SM(person_pskel)ES(
+ inter)HY(face)YH(, we have to over)HY(ride)YH( the )SM(post_person\201\202)ES(
+ virtual func)HY(tion)YH( in )SM(super)HY(man)YH(_pimpl)ES( to call
+ )SM(post_super)HY(man)YH(\201\202)ES( and the )SM(post_super)HY(man)YH(\201\202)ES(
+ virtual func)HY(tion)YH( in )SM(batman_pimpl)ES( to call
+ )SM(post_batman\201\202)ES(.)EP(
+
+ )0 P(The follow)HY(ing)YH( code frag)HY(ment)YH( shows how to connect the parsers together.
+ Notice that for the )SM(person)ES( element in the )SM(super)HY(men)YH(_p)ES(
+ parser we specify a parser map instead of a specific parser and we pass
+ )SM(true)ES( as the last argu)HY(ment)YH( to the docu)HY(ment)YH( parser construc)HY(tor)YH(
+ to indi)HY(cate)YH( that we are parsing poten)HY(tially)YH(-poly)HY(mor)HY(phic)YH( XML docu)HY(ments)YH(:)EP(
+
+ ) 39 64 PR(int
+main \201int argc, char* argv[]\202
+{
+ // Construct the parser.
+ //
+ xml_schema::string_pimpl string_p;
+ xml_schema::boolean_pimpl boolean_p;
+ xml_schema::unsigned_int_pimpl unsigned_int_p;
+
+ person_pimpl person_p;
+ superman_pimpl superman_p;
+ batman_pimpl batman_p;
+
+ xml_schema::parser_map_impl person_map;
+ supermen_pimpl supermen_p;
+
+ person_p.parsers \201string_p\202;
+ superman_p.parsers \201string_p, boolean_p\202;
+ batman_p.parsers \201string_p, boolean_p, unsigned_int_p\202;
+
+ // Here we are specifying a parser map which containes several
+ // parsers that can be used to parse the person element.
+ //
+ person_map.insert \201person_p\202;
+ person_map.insert \201superman_p\202;
+ person_map.insert \201batman_p\202;
+
+ supermen_p.person_parser \201person_map\202;
+
+ // Parse the XML document. The last argument to the document's
+ // constructor indicates that we are parsing polymorphic XML)WR(
+ // documents.
+ //
+ xml_schema::document doc_p \201supermen_p, "supermen", true\202;
+
+ supermen_p.pre \201\202;
+ doc_p.parse \201argv[1]\202;
+ supermen_p.post_supermen \201\202;
+})RP(
+
+ )0 P(When poly)HY(mor)HY(phism)YH(-aware code is gener)HY(ated)YH(, each element's
+ )SM(*_parser\201\202)ES( func)HY(tion)YH( is over)HY(loaded)YH( to also accept
+ an object of the )SM(xml_schema::parser_map)ES( type.
+ For example, the )SM(super)HY(men)YH(_pskel)ES( class from the
+ above example looks like this:)EP(
+
+ ) 21 63 PR(class supermen_pskel: public xml_schema::parser_complex_content
+{
+public:
+
+ ...
+
+ // Parser construction API.
+ //
+ void
+ parsers \201person_pskel&\202;
+
+ // Individual element parsers.
+ //
+ void
+ person_parser \201person_pskel&\202;
+
+ void
+ person_parser \201const xml_schema::parser_map&\202;
+
+ ...
+};)RP(
+
+ )0 P(Note that you can specify both the indi)HY(vid)HY(ual)YH( \201static\202 parser and
+ the parser map. The indi)HY(vid)HY(ual)YH( parser will be used when the static
+ element type and the dynamic type of the object being parsed are
+ the same. This is the case, for example, when there is no
+ )SM(xsi:type)ES( attribute and the element hasn't been
+ substi)HY(tuted)YH(. Because the indi)HY(vid)HY(ual)YH( parser for an element is
+ cached and no map lookup is neces)HY(sary)YH(, it makes sense to specify
+ both the indi)HY(vid)HY(ual)YH( parser and the parser map when most of the
+ objects being parsed are of the static type and optimal
+ perfor)HY(mance)YH( is impor)HY(tant)YH(. The follow)HY(ing)YH( code frag)HY(ment)YH( shows
+ how to change the above example to set both the indi)HY(vid)HY(ual)YH(
+ parser and the parser map:)EP(
+
+ ) 13 40 PR(int
+main \201int argc, char* argv[]\202
+{
+ ...
+
+ person_map.insert \201superman_p\202;
+ person_map.insert \201batman_p\202;
+
+ supermen_p.person_parser \201person_p\202;
+ supermen_p.person_parser \201person_map\202;
+
+ ...
+})RP(
+
+
+ )0 P(The )SM(xml_schema::parser_map)ES( inter)HY(face)YH( and the
+ )SM(xml_schema::parser_map_impl)ES( default imple)HY(men)HY(ta)HY(tion)YH(
+ are presented below:)EP(
+
+ ) 27 45 PR(namespace xml_schema
+{
+ class parser_map
+ {
+ public:
+ virtual parser_base*
+ find \201const ro_string* type\202 const = 0;
+ };
+
+ class parser_map_impl: public parser_map
+ {
+ public:
+ void
+ insert \201parser_base&\202;
+
+ virtual parser_base*
+ find \201const ro_string* type\202 const;
+
+ private:
+ parser_map_impl \201const parser_map_impl&\202;
+
+ parser_map_impl&
+ operator= \201const parser_map_impl&\202;
+
+ ...
+ };
+})RP(
+
+ )0 P(The )SM(type)ES( argu)HY(ment)YH( in the )SM(find\201\202)ES( virtual
+ func)HY(tion)YH( is the type name and names)HY(pace)YH( from the xsi:type attribute
+ \201the names)HY(pace)YH( prefix is resolved to the actual XML names)HY(pace)YH(\202
+ or the type of an element from the substi)HY(tu)HY(tion)YH( group in the form
+ )SM("<name>\240<names)HY(pace)YH(>")ES( with the space and the
+ names)HY(pace)YH( part absent if the type does not have a names)HY(pace)YH(.
+ You can obtain a parser's dynamic type in the same format
+ using the )SM(_dynamic_type\201\202)ES( func)HY(tion)YH(. The static
+ type can be obtained by calling the static )SM(_static_type\201\202)ES(
+ func)HY(tion)YH(, for example )SM(person_pskel::_static_type\201\202)ES(.
+ Both func)HY(tions)YH( return a C string \201)SM(const char*)ES( or
+ )SM(const wchar_t*)ES(, depend)HY(ing)YH( on the char)HY(ac)HY(ter)YH( type
+ used\202 which is valid for as long as the appli)HY(ca)HY(tion)YH( is running.
+ The follow)HY(ing)YH( example shows how we can imple)HY(ment)YH( our own parser
+ map using )SM(std::map)ES(:)EP(
+
+
+ ) 23 62 PR(#include <map>
+#include <string>
+
+class parser_map: public xml_schema::parser_map
+{
+public:
+ void
+ insert \201xml_schema::parser_base& p\202
+ {
+ map_[p._dynamic_type \201\202] = &p;
+ }
+
+ virtual xml_schema::parser_base*
+ find \201const xml_schema::ro_string* type\202 const
+ {
+ map::const_iterator i = map_.find \201type\202;
+ return i != map_.end \201\202 ? i->second : 0;
+ }
+
+private:
+ typedef std::map<std::string, xml_schema::parser_base*> map;
+ map map_;
+};)RP(
+
+ )0 P(Most of code presented in this section is taken from the
+ )SM(poly)HY(mor)HY(phism)YH()ES( example which can be found in the
+ )SM(cxx/parser/)ES( direc)HY(tory)YH( in the
+ )R2 2 A(xsd-exam)HY(ples)YH()EA( package.
+ Handling of )SM(xsi:type)ES( and substi)HY(tu)HY(tion)YH( groups when used on
+ root elements requires a number of special actions as shown in
+ the )SM(poly)HY(root)YH()ES( example.)EP(
+
+
+
+
+
+ )0 1 26 H(6)WB 97 Sn()WB 29 Sn( Built-In XML Schema Type Parsers)EA()EH(
+
+ )0 P(The XSD runtime provides parser imple)HY(men)HY(ta)HY(tions)YH( for all built-in
+ XML Schema types as summa)HY(rized)YH( in the follow)HY(ing)YH( table. Decla)HY(ra)HY(tions)YH(
+ for these types are auto)HY(mat)HY(i)HY(cally)YH( included into each gener)HY(ated)YH(
+ header file. As a result you don't need to include any headers
+ to gain access to these parser imple)HY(men)HY(ta)HY(tions)YH(. Note that some
+ parsers return either )SM(std::string)ES( or
+ )SM(std::wstring)ES( depend)HY(ing)YH( on the char)HY(ac)HY(ter)YH( type selected.)EP(
+
+
+ )0 PT(
+
+ )0 2 27 H(6.1)WB 98 Sn()WB 31 Sn( )SM(QName)ES( Parser)EA()EH(
+
+ )0 P(The return type of the )SM(qname_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
+ is )SM(xml_schema::qname)ES( which repre)HY(sents)YH( an XML qual)HY(i)HY(fied)YH(
+ name. Its inter)HY(face)YH( is presented below.
+ Note that the )SM(std::string)ES( type in the inter)HY(face)YH( becomes
+ )SM(std::wstring)ES( if the selected char)HY(ac)HY(ter)YH( type is
+ )SM(wchar_t)ES(.)EP(
+
+ ) 28 63 PR(namespace xml_schema
+{
+ class qname
+ {
+ public:
+ explicit
+ qname \201const std::string& name\202;
+ qname \201const std::string& prefix, const std::string& name\202;
+
+ const std::string&
+ prefix \201\202 const;
+
+ void
+ prefix \201const std::string&\202;
+
+ const std::string&
+ name \201\202 const;
+
+ void
+ name \201const std::string&\202;
+ };
+
+ bool
+ operator== \201const qname&, const qname&\202;
+
+ bool
+ operator!= \201const qname&, const qname&\202;
+})RP(
+
+
+ )0 2 28 H(6.2)WB 99 Sn()WB 32 Sn( )SM(NMTO)HY(KENS)YH()ES( and )SM(IDREFS)ES( Parsers)EA()EH(
+
+ )0 P(The return type of the )SM(nmto)HY(kens)YH(_pimpl)ES( and
+ )SM(idrefs_pimpl)ES( parser imple)HY(men)HY(ta)HY(tions)YH( is
+ )SM(xml_schema::string_sequence)ES( which repre)HY(sents)YH( a
+ sequence of strings. Its inter)HY(face)YH( is presented below.
+ Note that the )SM(std::string)ES( type in the inter)HY(face)YH( becomes
+ )SM(std::wstring)ES( if the selected char)HY(ac)HY(ter)YH( type is
+ )SM(wchar_t)ES(.)EP(
+
+ ) 21 62 PR(namespace xml_schema
+{
+ class string_sequence: public std::vector<std::string>
+ {
+ public:
+ string_sequence \201\202;
+
+ explicit
+ string_sequence \201std::vector<std::string>::size_type n,
+ const std::string& x = std::string \201\202\202;
+
+ template <typename I>
+ string_sequence \201const I& begin, const I& end\202;
+ };
+
+ bool
+ operator== \201const string_sequence&, const string_sequence&\202;
+
+ bool
+ operator!= \201const string_sequence&, const string_sequence&\202;
+})RP(
+
+
+ )0 2 29 H(6.3)WB 100 Sn()WB 33 Sn( )SM(base64Binary)ES( and )SM(hexBi)HY(nary)YH()ES( Parsers)EA()EH(
+
+ )0 P(The return type of the )SM(base64_binary_pimpl)ES( and
+ )SM(hex_binary_pimpl)ES( parser imple)HY(men)HY(ta)HY(tions)YH( is either
+ )SM(std::unique_ptr<xml_schema::buffer>)ES( \201C++11\202 or
+ )SM(std::auto_ptr<xml_schema::buffer>)ES( \201C++98\202,
+ depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected \201)SM(--std)ES( XSD
+ compiler option\202. The )SM(xml_schema::buffer)ES( type
+ repre)HY(sents)YH( a binary buffer and its inter)HY(face)YH( is presented below.)EP(
+
+ ) 69 60 PR(namespace xml_schema
+{
+ class buffer
+ {
+ public:
+ typedef std::size_t size_t;
+
+ class bounds {}; // Out of bounds exception.
+
+ public:
+ explicit
+ buffer \201size_t size = 0\202;
+ buffer \201size_t size, size_t capacity\202;
+ buffer \201const void* data, size_t size\202;
+ buffer \201const void* data, size_t size, size_t capacity\202;
+ buffer \201void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership\202;
+
+ public:
+ buffer \201const buffer&\202;
+
+ buffer&
+ operator= \201const buffer&\202;
+
+ void
+ swap \201buffer&\202;
+
+ public:
+ size_t)WR(
+ capacity \201\202 const;
+
+ bool
+ capacity \201size_t\202;
+
+ public:
+ size_t
+ size \201\202 const;
+
+ bool
+ size \201size_t\202;
+
+ public:
+ const char*
+ data \201\202 const;
+
+ char*
+ data \201\202;
+
+ const char*
+ begin \201\202 const;
+
+ char*
+ begin \201\202;
+
+ const char*
+ end \201\202 const;
+
+ char*
+ end \201\202;)WR(
+ };
+
+ bool
+ operator== \201const buffer&, const buffer&\202;
+
+ bool
+ operator!= \201const buffer&, const buffer&\202;
+})RP(
+
+ )0 P(If the )SM(assume_owner)HY(ship)YH()ES( argu)HY(ment)YH( to the construc)HY(tor)YH(
+ is )SM(true)ES(, the instance assumes the owner)HY(ship)YH( of the
+ memory block pointed to by the )SM(data)ES( argu)HY(ment)YH( and will
+ even)HY(tu)HY(ally)YH( release it by calling )SM(oper)HY(a)HY(tor)YH( delete\201\202)ES(. The
+ )SM(capac)HY(ity)YH(\201\202)ES( and )SM(size\201\202)ES( modi)HY(fier)YH( func)HY(tions)YH(
+ return )SM(true)ES( if the under)HY(ly)HY(ing)YH( buffer has moved.
+ )EP(
+
+ )0 P(The )SM(bounds)ES( excep)HY(tion)YH( is thrown if the construc)HY(tor)YH(
+ argu)HY(ments)YH( violate the )SM(\201size\240<=\240capac)HY(ity)YH(\202)ES(
+ constraint.)EP(
+
+
+ )0 2 30 H(6.4)WB 101 Sn()WB 34 Sn( Time Zone Repre)HY(sen)HY(ta)HY(tion)YH()EA()EH(
+
+ )0 P(The )SM(date)ES(, )SM(date)HY(Time)YH()ES(, )SM(gDay)ES(,
+ )SM(gMonth)ES(, )SM(gMon)HY(th)HY(Day)YH()ES(, )SM(gYear)ES(,
+ )SM(gYear)HY(Month)YH()ES(, and )SM(time)ES( XML Schema built-in
+ types all include an optional time zone compo)HY(nent)YH(. The follow)HY(ing)YH(
+ )SM(xml_schema::time_zone)ES( base class is used to repre)HY(sent)YH(
+ this infor)HY(ma)HY(tion)YH(:)EP(
+
+ ) 33 50 PR(namespace xml_schema
+{
+ class time_zone
+ {
+ public:
+ time_zone \201\202;
+ time_zone \201short hours, short minutes\202;
+
+ bool
+ zone_present \201\202 const;
+
+ void
+ zone_reset \201\202;
+
+ short
+ zone_hours \201\202 const;
+
+ void
+ zone_hours \201short\202;
+
+ short
+ zone_minutes \201\202 const;
+
+ void
+ zone_minutes \201short\202;
+ };
+
+ bool
+ operator== \201const time_zone&, const time_zone&\202;
+
+ bool)WR(
+ operator!= \201const time_zone&, const time_zone&\202;
+})RP(
+
+ )0 P(The )SM(zone_present\201\202)ES( acces)HY(sor)YH( func)HY(tion)YH( returns )SM(true)ES(
+ if the time zone is spec)HY(i)HY(fied)YH(. The )SM(zone_reset\201\202)ES( modi)HY(fier)YH(
+ func)HY(tion)YH( resets the time zone object to the )EM(not spec)HY(i)HY(fied)YH()ES(
+ state. If the time zone offset is nega)HY(tive)YH( then both hours and
+ minutes compo)HY(nents)YH( are repre)HY(sented)YH( as nega)HY(tive)YH( inte)HY(gers)YH(.)EP(
+
+
+ )0 2 31 H(6.5)WB 102 Sn()WB 35 Sn( )SM(date)ES( Parser)EA()EH(
+
+ )0 P(The return type of the )SM(date_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
+ is )SM(xml_schema::date)ES( which repre)HY(sents)YH( a year, a day, and a month
+ with an optional time zone. Its inter)HY(face)YH( is presented below.
+ For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 67 1 A(Section 6.4, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")67 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 34 62 PR(namespace xml_schema
+{
+ class date
+ {
+ public:
+ date \201int year, unsigned short month, unsigned short day\202;
+ date \201int year, unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes\202;
+
+ int
+ year \201\202 const;
+
+ void
+ year \201int\202;
+
+ unsigned short
+ month \201\202 const;
+
+ void
+ month \201unsigned short\202;
+
+ unsigned short
+ day \201\202 const;
+
+ void
+ day \201unsigned short\202;
+ };
+
+ bool
+ operator== \201const date&, const date&\202;
+)WR(
+ bool
+ operator!= \201const date&, const date&\202;
+})RP(
+
+ )0 2 32 H(6.6)WB 103 Sn()WB 36 Sn( )SM(date)HY(Time)YH()ES( Parser)EA()EH(
+
+ )0 P(The return type of the )SM(date_time_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
+ is )SM(xml_schema::date_time)ES( which repre)HY(sents)YH( a year, a month, a day,
+ hours, minutes, and seconds with an optional time zone. Its inter)HY(face)YH(
+ is presented below.
+ For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 67 1 A(Section 6.4, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")67 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 56 69 PR(namespace xml_schema
+{
+ class date_time
+ {
+ public:
+ date_time \201int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds\202;
+
+ date_time \201int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds, short zone_hours, short zone_minutes\202;
+
+ int
+ year \201\202 const;
+
+ void
+ year \201int\202;
+
+ unsigned short
+ month \201\202 const;
+
+ void
+ month \201unsigned short\202;
+
+ unsigned short
+ day \201\202 const;
+
+ void
+ day \201unsigned short\202;
+)WR(
+ unsigned short
+ hours \201\202 const;
+
+ void
+ hours \201unsigned short\202;
+
+ unsigned short
+ minutes \201\202 const;
+
+ void
+ minutes \201unsigned short\202;
+
+ double
+ seconds \201\202 const;
+
+ void
+ seconds \201double\202;
+ };
+
+ bool
+ operator== \201const date_time&, const date_time&\202;
+
+ bool
+ operator!= \201const date_time&, const date_time&\202;
+})RP(
+
+ )0 2 33 H(6.7)WB 104 Sn()WB 37 Sn( )SM(dura)HY(tion)YH()ES( Parser)EA()EH(
+
+ )0 P(The return type of the )SM(dura)HY(tion)YH(_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
+ is )SM(xml_schema::dura)HY(tion)YH()ES( which repre)HY(sents)YH( a poten)HY(tially)YH(
+ nega)HY(tive)YH( dura)HY(tion)YH( in the form of years, months, days, hours, minutes,
+ and seconds. Its inter)HY(face)YH( is presented below.)EP(
+
+ ) 58 73 PR(namespace xml_schema
+{
+ class duration
+ {
+ public:
+ duration \201bool negative,
+ unsigned int years, unsigned int months, unsigned int days,
+ unsigned int hours, unsigned int minutes, double seconds\202;
+
+ bool
+ negative \201\202 const;
+
+ void
+ negative \201bool\202;
+
+ unsigned int
+ years \201\202 const;
+
+ void
+ years \201unsigned int\202;
+
+ unsigned int
+ months \201\202 const;
+
+ void
+ months \201unsigned int\202;
+
+ unsigned int
+ days \201\202 const;
+
+ void)WR(
+ days \201unsigned int\202;
+
+ unsigned int
+ hours \201\202 const;
+
+ void
+ hours \201unsigned int\202;
+
+ unsigned int
+ minutes \201\202 const;
+
+ void
+ minutes \201unsigned int\202;
+
+ double
+ seconds \201\202 const;
+
+ void
+ seconds \201double\202;
+ };
+
+ bool
+ operator== \201const duration&, const duration&\202;
+
+ bool
+ operator!= \201const duration&, const duration&\202;
+})RP(
+
+
+ )0 2 34 H(6.8)WB 105 Sn()WB 38 Sn( )SM(gDay)ES( Parser)EA()EH(
+
+ )0 P(The return type of the )SM(gday_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
+ is )SM(xml_schema::gday)ES( which repre)HY(sents)YH( a day of the month with
+ an optional time zone. Its inter)HY(face)YH( is presented below.
+ For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 67 1 A(Section 6.4, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")67 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 22 68 PR(namespace xml_schema
+{
+ class gday
+ {
+ public:
+ explicit
+ gday \201unsigned short day\202;
+ gday \201unsigned short day, short zone_hours, short zone_minutes\202;
+
+ unsigned short
+ day \201\202 const;
+
+ void
+ day \201unsigned short\202;
+ };
+
+ bool
+ operator== \201const gday&, const gday&\202;
+
+ bool
+ operator!= \201const gday&, const gday&\202;
+})RP(
+
+ )0 2 35 H(6.9)WB 106 Sn()WB 39 Sn( )SM(gMonth)ES( Parser)EA()EH(
+
+ )0 P(The return type of the )SM(gmonth_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
+ is )SM(xml_schema::gmonth)ES( which repre)HY(sents)YH( a month of the year
+ with an optional time zone. Its inter)HY(face)YH( is presented below.
+ For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 67 1 A(Section 6.4, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")67 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 22 72 PR(namespace xml_schema
+{
+ class gmonth
+ {
+ public:
+ explicit
+ gmonth \201unsigned short month\202;
+ gmonth \201unsigned short month, short zone_hours, short zone_minutes\202;
+
+ unsigned short
+ month \201\202 const;
+
+ void
+ month \201unsigned short\202;
+ };
+
+ bool
+ operator== \201const gmonth&, const gmonth&\202;
+
+ bool
+ operator!= \201const gmonth&, const gmonth&\202;
+})RP(
+
+ )0 2 36 H(6.10)WB 107 Sn()WB 40 Sn( )SM(gMon)HY(th)HY(Day)YH()ES( Parser)EA()EH(
+
+ )0 P(The return type of the )SM(gmonth_day_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
+ is )SM(xml_schema::gmonth_day)ES( which repre)HY(sents)YH( a day and a month
+ of the year with an optional time zone. Its inter)HY(face)YH( is presented below.
+ For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 67 1 A(Section 6.4, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")67 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 28 58 PR(namespace xml_schema
+{
+ class gmonth_day
+ {
+ public:
+ gmonth_day \201unsigned short month, unsigned short day\202;
+ gmonth_day \201unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes\202;
+
+ unsigned short
+ month \201\202 const;
+
+ void
+ month \201unsigned short\202;
+
+ unsigned short
+ day \201\202 const;
+
+ void
+ day \201unsigned short\202;
+ };
+
+ bool
+ operator== \201const gmonth_day&, const gmonth_day&\202;
+
+ bool
+ operator!= \201const gmonth_day&, const gmonth_day&\202;
+})RP(
+
+ )0 2 37 H(6.11)WB 108 Sn()WB 41 Sn( )SM(gYear)ES( Parser)EA()EH(
+
+ )0 P(The return type of the )SM(gyear_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
+ is )SM(xml_schema::gyear)ES( which repre)HY(sents)YH( a year with
+ an optional time zone. Its inter)HY(face)YH( is presented below.
+ For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 67 1 A(Section 6.4, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")67 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 22 59 PR(namespace xml_schema
+{
+ class gyear
+ {
+ public:
+ explicit
+ gyear \201int year\202;
+ gyear \201int year, short zone_hours, short zone_minutes\202;
+
+ int
+ year \201\202 const;
+
+ void
+ year \201int\202;
+ };
+
+ bool
+ operator== \201const gyear&, const gyear&\202;
+
+ bool
+ operator!= \201const gyear&, const gyear&\202;
+})RP(
+
+ )0 2 38 H(6.12)WB 109 Sn()WB 42 Sn( )SM(gYear)HY(Month)YH()ES( Parser)EA()EH(
+
+ )0 P(The return type of the )SM(gyear_month_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
+ is )SM(xml_schema::gyear_month)ES( which repre)HY(sents)YH( a year and a month
+ with an optional time zone. Its inter)HY(face)YH( is presented below.
+ For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 67 1 A(Section 6.4, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")67 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 28 55 PR(namespace xml_schema
+{
+ class gyear_month
+ {
+ public:
+ gyear_month \201int year, unsigned short month\202;
+ gyear_month \201int year, unsigned short month,
+ short zone_hours, short zone_minutes\202;
+
+ int
+ year \201\202 const;
+
+ void
+ year \201int\202;
+
+ unsigned short
+ month \201\202 const;
+
+ void
+ month \201unsigned short\202;
+ };
+
+ bool
+ operator== \201const gyear_month&, const gyear_month&\202;
+
+ bool
+ operator!= \201const gyear_month&, const gyear_month&\202;
+})RP(
+
+
+ )0 2 39 H(6.13)WB 110 Sn()WB 43 Sn( )SM(time)ES( Parser)EA()EH(
+
+ )0 P(The return type of the )SM(time_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
+ is )SM(xml_schema::time)ES( which repre)HY(sents)YH( hours, minutes,
+ and seconds with an optional time zone. Its inter)HY(face)YH( is presented below.
+ For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 67 1 A(Section 6.4, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")67 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 34 72 PR(namespace xml_schema
+{
+ class time
+ {
+ public:
+ time \201unsigned short hours, unsigned short minutes, double seconds\202;
+ time \201unsigned short hours, unsigned short minutes, double seconds,
+ short zone_hours, short zone_minutes\202;
+
+ unsigned short
+ hours \201\202 const;
+
+ void
+ hours \201unsigned short\202;
+
+ unsigned short
+ minutes \201\202 const;
+
+ void
+ minutes \201unsigned short\202;
+
+ double
+ seconds \201\202 const;
+
+ void
+ seconds \201double\202;
+ };
+
+ bool
+ operator== \201const time&, const time&\202;
+)WR(
+ bool
+ operator!= \201const time&, const time&\202;
+})RP(
+
+
+
+
+
+ )0 1 40 H(7)WB 111 Sn()WB 44 Sn( Docu)HY(ment)YH( Parser and Error Handling)EA()EH(
+
+ )0 P(In this chapter we will discuss the )SM(xml_schema::docu)HY(ment)YH()ES(
+ type as well as the error handling mech)HY(a)HY(nisms)YH( provided by the mapping
+ in more detail. As mentioned in )0 68 1 A(Section 3.4,
+ "Connect)HY(ing)YH( the Parsers Together")68 0 TN TL()Ec /AF f D(, the inter)HY(face)YH( of
+ )SM(xml_schema::docu)HY(ment)YH()ES( depends on the under)HY(ly)HY(ing)YH( XML
+ parser selected \201)0 50 1 A(Section 5.3, "Under)HY(ly)HY(ing)YH( XML
+ Parser")50 0 TN TL()Ec /AF f D(\202. The follow)HY(ing)YH( sections describe the
+ )SM(docu)HY(ment)YH()ES( type inter)HY(face)YH( for Xerces-C++ and
+ Expat as under)HY(ly)HY(ing)YH( parsers.)EP(
+
+ )0 2 41 H(7.1)WB 112 Sn()WB 45 Sn( Xerces-C++ Docu)HY(ment)YH( Parser)EA()EH(
+
+ )0 P(When Xerces-C++ is used as the under)HY(ly)HY(ing)YH( XML parser, the
+ )SM(docu)HY(ment)YH()ES( type has the follow)HY(ing)YH( inter)HY(face)YH(. Note that
+ if the char)HY(ac)HY(ter)YH( type is )SM(wchar_t)ES(, then the string type
+ in the inter)HY(face)YH( becomes )SM(std::wstring)ES(
+ \201see )0 53 1 A(Section 5.2, "Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH(")53 0 TN TL()Ec /AF f D(\202.)EP(
+
+ ) 248 72 PR(namespace xml_schema
+{
+ class parser_base;
+ class error_handler;
+
+ class flags
+ {
+ public:
+ // Do not validate XML documents with the Xerces-C++ validator.
+ //
+ static const unsigned long dont_validate;
+
+ // Do not initialize the Xerces-C++ runtime.
+ //
+ static const unsigned long dont_initialize;
+
+ // Disable handling of subsequent imports for the same namespace
+ // in Xerces-C++ 3.1.0 and later.
+ //
+ static const unsigned long no_multiple_imports;
+ };
+
+ class properties
+ {
+ public:
+ // Add a location for a schema with a target namespace.
+ //
+ void
+ schema_location \201const std::string& namespace_,
+ const std::string& location\202;
+)WR(
+ // Add a location for a schema without a target namespace.
+ //
+ void
+ no_namespace_schema_location \201const std::string& location\202;
+ };
+
+ class document
+ {
+ public:
+ document \201parser_base& root,
+ const std::string& root_element_name,
+ bool polymorphic = false\202;
+
+ document \201parser_base& root,
+ const std::string& root_element_namespace,
+ const std::string& root_element_name,
+ bool polymorphic = false\202;
+
+ public:
+ // Parse URI or a local file.
+ //
+ void
+ parse \201const std::string& uri,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse URI or a local file with a user-provided error_handler
+ // object.
+ //
+ void)WR(
+ parse \201const std::string& uri,
+ error_handler&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse URI or a local file with a user-provided ErrorHandler
+ // object. Note that you must initialize the Xerces-C++ runtime
+ // before calling this function.
+ //
+ void
+ parse \201const std::string& uri,
+ xercesc::ErrorHandler&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse URI or a local file using a user-provided SAX2XMLReader
+ // object. Note that you must initialize the Xerces-C++ runtime
+ // before calling this function.
+ //
+ void
+ parse \201const std::string& uri,
+ xercesc::SAX2XMLReader&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ public:
+ // Parse std::istream.
+ //
+ void
+ parse \201std::istream&,)WR(
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse std::istream with a user-provided error_handler object.
+ //
+ void
+ parse \201std::istream&,
+ error_handler&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse std::istream with a user-provided ErrorHandler object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse \201std::istream&,
+ xercesc::ErrorHandler&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse std::istream using a user-provided SAX2XMLReader object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse \201std::istream&,
+ xercesc::SAX2XMLReader&,
+ flags = 0,
+ const properties& = properties \201\202\202;)WR(
+
+ public:
+ // Parse std::istream with a system id.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse std::istream with a system id and a user-provided
+ // error_handler object.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,
+ error_handler&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse std::istream with a system id and a user-provided
+ // ErrorHandler object. Note that you must initialize the
+ // Xerces-C++ runtime before calling this function.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,
+ xercesc::ErrorHandler&,
+ flags = 0,
+ const properties& = properties \201\202\202;)WR(
+
+ // Parse std::istream with a system id using a user-provided
+ // SAX2XMLReader object. Note that you must initialize the
+ // Xerces-C++ runtime before calling this function.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,
+ xercesc::SAX2XMLReader&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ public:
+ // Parse std::istream with system and public ids.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,
+ const std::string& public_id,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse std::istream with system and public ids and a user-provided
+ // error_handler object.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,
+ const std::string& public_id,
+ error_handler&,)WR(
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse std::istream with system and public ids and a user-provided
+ // ErrorHandler object. Note that you must initialize the Xerces-C++
+ // runtime before calling this function.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,
+ const std::string& public_id,
+ xercesc::ErrorHandler&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse std::istream with system and public ids using a user-
+ // provided SAX2XMLReader object. Note that you must initialize
+ // the Xerces-C++ runtime before calling this function.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,
+ const std::string& public_id,
+ xercesc::SAX2XMLReader&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ public:
+ // Parse InputSource. Note that you must initialize the Xerces-C++
+ // runtime before calling this function.)WR(
+ //
+ void
+ parse \201const xercesc::InputSource&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse InputSource with a user-provided error_handler object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse \201const xercesc::InputSource&,
+ error_handler&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse InputSource with a user-provided ErrorHandler object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //
+ void
+ parse \201const xercesc::InputSource&,
+ xercesc::ErrorHandler&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+
+ // Parse InputSource using a user-provided SAX2XMLReader object.
+ // Note that you must initialize the Xerces-C++ runtime before
+ // calling this function.
+ //)WR(
+ void
+ parse \201const xercesc::InputSource&,
+ xercesc::SAX2XMLReader&,
+ flags = 0,
+ const properties& = properties \201\202\202;
+ };
+})RP(
+
+ )0 P(The )SM(docu)HY(ment)YH()ES( class is a root parser for
+ the vocab)HY(u)HY(lary)YH(. The first argu)HY(ment)YH( to its construc)HY(tors)YH( is the
+ parser for the type of the root element. The )SM(parser_base)ES(
+ class is the base type for all parser skele)HY(tons)YH(. The second and
+ third argu)HY(ments)YH( to the )SM(docu)HY(ment)YH()ES('s construc)HY(tors)YH( are
+ the root element's name and names)HY(pace)YH(. The last argu)HY(ment)YH(,
+ )SM(poly)HY(mor)HY(phic)YH()ES(, spec)HY(i)HY(fies)YH( whether the XML docu)HY(ments)YH(
+ being parsed use poly)HY(mor)HY(phism)YH(. For more infor)HY(ma)HY(tion)YH( on support
+ for XML Schema poly)HY(mor)HY(phism)YH( in the C++/Parser mapping refer
+ to )0 69 1 A(Section 5.5, "Support for Poly)HY(mor)HY(phism)YH(")69 0 TN TL()Ec /AF f D(.)EP(
+
+ )0 P(The rest of the )SM(docu)HY(ment)YH()ES( inter)HY(face)YH( consists of over)HY(loaded)YH(
+ )SM(parse\201\202)ES( func)HY(tions)YH(. The last two argu)HY(ments)YH( in each of these
+ func)HY(tions)YH( are )SM(flags)ES( and )SM(prop)HY(er)HY(ties)YH()ES(. The
+ )SM(flags)ES( argu)HY(ment)YH( allows you to modify the default behav)HY(ior)YH(
+ of the parsing func)HY(tions)YH(. The )SM(prop)HY(er)HY(ties)YH()ES( argu)HY(ment)YH( allows
+ you to over)HY(ride)YH( the schema loca)HY(tion)YH( attributes spec)HY(i)HY(fied)YH( in XML
+ docu)HY(ments)YH(. Note that the schema loca)HY(tion)YH( paths are rela)HY(tive)YH( to an
+ XML docu)HY(ment)YH( unless they are complete URIs. For example if you want
+ to use a local schema file then you will need to use a URI in the
+ form )SM(file:///abso)HY(lute)YH(/path/to/your/schema)ES(.)EP(
+
+ )0 P(A number of over)HY(loaded)YH( )SM(parse\201\202)ES( func)HY(tions)YH( have the
+ )SM(system_id)ES( and )SM(public_id)ES( argu)HY(ments)YH(. The
+ system id is a )EM(system)ES( iden)HY(ti)HY(fier)YH( of the resources being
+ parsed \201for example, URI or a full file path\202. The public id is a
+ )EM(public)ES( iden)HY(ti)HY(fier)YH( of the resource \201for example, an
+ appli)HY(ca)HY(tion)YH(-specific name or a rela)HY(tive)YH( file path\202. The system id
+ is used to resolve rela)HY(tive)YH( paths \201for example, schema paths\202. In
+ diag)HY(nos)HY(tics)YH( messages the public id is used if it is avail)HY(able)YH(.
+ Other)HY(wise)YH( the system id is used.)EP(
+
+ )0 P(The error handling mech)HY(a)HY(nisms)YH( employed by the )SM(docu)HY(ment)YH()ES(
+ parser are described in )0 70 1 A(Section 7.3, "Error
+ Handling")70 0 TN TL()Ec /AF f D(.)EP(
+
+ )0 2 42 H(7.2)WB 113 Sn()WB 46 Sn( Expat Docu)HY(ment)YH( Parser)EA()EH(
+
+ )0 P(When Expat is used as the under)HY(ly)HY(ing)YH( XML parser, the
+ )SM(docu)HY(ment)YH()ES( type has the follow)HY(ing)YH( inter)HY(face)YH(. Note that
+ if the char)HY(ac)HY(ter)YH( type is )SM(wchar_t)ES(, then the string type
+ in the inter)HY(face)YH( becomes )SM(std::wstring)ES(
+ \201see )0 53 1 A(Section 5.2, "Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH(")53 0 TN TL()Ec /AF f D(\202.)EP(
+
+ ) 123 72 PR(namespace xml_schema
+{
+ class parser_base;
+ class error_handler;
+
+ class document
+ {
+ public:
+ document \201parser_base&,
+ const std::string& root_element_name,
+ bool polymorphic = false\202;
+
+ document \201parser_base&,
+ const std::string& root_element_namespace,
+ const std::string& root_element_name,
+ bool polymorphic = false\202;
+
+ public:
+ // Parse a local file. The file is accessed with std::ifstream
+ // in binary mode. The std::ios_base::failure exception is used
+ // to report io errors \201badbit and failbit\202.
+ void
+ parse \201const std::string& file\202;
+
+ // Parse a local file with a user-provided error_handler
+ // object. The file is accessed with std::ifstream in binary
+ // mode. The std::ios_base::failure exception is used to report
+ // io errors \201badbit and failbit\202.
+ //
+ void
+ parse \201const std::string& file, error_handler&\202;)WR(
+
+ public:
+ // Parse std::istream.
+ //
+ void
+ parse \201std::istream&\202;
+
+ // Parse std::istream with a user-provided error_handler object.
+ //
+ void
+ parse \201std::istream&, error_handler&\202;
+
+ // Parse std::istream with a system id.
+ //
+ void
+ parse \201std::istream&, const std::string& system_id\202;
+
+ // Parse std::istream with a system id and a user-provided
+ // error_handler object.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,
+ error_handler&\202;
+
+ // Parse std::istream with system and public ids.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,)WR(
+ const std::string& public_id\202;
+
+ // Parse std::istream with system and public ids and a user-provided
+ // error_handler object.
+ //
+ void
+ parse \201std::istream&,
+ const std::string& system_id,
+ const std::string& public_id,
+ error_handler&\202;
+
+ public:
+ // Parse a chunk of input. You can call these functions multiple
+ // times with the last call having the last argument true.
+ //
+ void
+ parse \201const void* data, std::size_t size, bool last\202;
+
+ void
+ parse \201const void* data, std::size_t size, bool last,
+ error_handler&\202;
+
+ void
+ parse \201const void* data, std::size_t size, bool last,
+ const std::string& system_id\202;
+
+ void
+ parse \201const void* data, std::size_t size, bool last,
+ const std::string& system_id,
+ error_handler&\202;)WR(
+
+ void
+ parse \201const void* data, std::size_t size, bool last,
+ const std::string& system_id,
+ const std::string& public_id\202;
+
+ void
+ parse \201const void* data, std::size_t size, bool last,
+ const std::string& system_id,
+ const std::string& public_id,
+ error_handler&\202;
+
+ public:
+ // Low-level Expat-specific parsing API.
+ //
+ void
+ parse_begin \201XML_Parser\202;
+
+ void
+ parse_begin \201XML_Parser, const std::string& public_id\202;
+
+ void
+ parse_begin \201XML_Parser, error_handler&\202;
+
+ void
+ parse_begin \201XML_Parser,
+ const std::string& public_id,
+ error_handler&\202;
+ void
+ parse_end \201\202;)WR(
+ };
+})RP(
+
+ )0 P(The )SM(docu)HY(ment)YH()ES( class is a root parser for
+ the vocab)HY(u)HY(lary)YH(. The first argu)HY(ment)YH( to its construc)HY(tors)YH( is the
+ parser for the type of the root element. The )SM(parser_base)ES(
+ class is the base type for all parser skele)HY(tons)YH(. The second and
+ third argu)HY(ments)YH( to the )SM(docu)HY(ment)YH()ES('s construc)HY(tors)YH( are
+ the root element's name and names)HY(pace)YH(. The last argu)HY(ment)YH(,
+ )SM(poly)HY(mor)HY(phic)YH()ES(, spec)HY(i)HY(fies)YH( whether the XML docu)HY(ments)YH(
+ being parsed use poly)HY(mor)HY(phism)YH(. For more infor)HY(ma)HY(tion)YH( on support
+ for XML Schema poly)HY(mor)HY(phism)YH( in the C++/Parser mapping refer
+ to )0 69 1 A(Section 5.5, "Support for Poly)HY(mor)HY(phism)YH(")69 0 TN TL()Ec /AF f D(.)EP(
+
+ )0 P(A number of over)HY(loaded)YH( )SM(parse\201\202)ES( func)HY(tions)YH( have the
+ )SM(system_id)ES( and )SM(public_id)ES( argu)HY(ments)YH(. The
+ system id is a )EM(system)ES( iden)HY(ti)HY(fier)YH( of the resources being
+ parsed \201for example, URI or a full file path\202. The public id is a
+ )EM(public)ES( iden)HY(ti)HY(fier)YH( of the resource \201for example, an
+ appli)HY(ca)HY(tion)YH(-specific name or a rela)HY(tive)YH( file path\202. The system id
+ is used to resolve rela)HY(tive)YH( paths. In diag)HY(nos)HY(tics)YH( messages the
+ public id is used if it is avail)HY(able)YH(. Other)HY(wise)YH( the system id
+ is used.)EP(
+
+ )0 P(The )SM(parse_begin\201\202)ES( and )SM(parse_end\201\202)ES( func)HY(tions)YH(
+ present a low-level, Expat-specific parsing API for maximum control.
+ A typical use-case would look like this \201pseudo-code\202:)EP(
+
+ ) 20 55 PR(xxx_pimpl root_p;
+document doc_p \201root_p, "root"\202;
+
+root_p.pre \201\202;
+doc_p.parse_begin \201xml_parser, "file.xml"\202;
+
+while \201more_data_to_parse\202
+{
+ // Call XML_Parse or XML_ParseBuffer.
+
+ if \201status == XML_STATUS_ERROR\202
+ break;
+}
+
+// Call parse_end even in case of an error to translate
+// XML and Schema errors to exceptions or error_handler
+// calls.
+//
+doc.parse_end \201\202;
+result_type result \201root_p.post_xxx \201\202\202;)RP(
+
+ )0 P(Note that if your vocab)HY(u)HY(lary)YH( uses XML names)HY(paces)YH(, the
+ )SM(XML_Parser)HY(Cre)HY(at)HY(eNS)YH(\201\202)ES( func)HY(tions)YH( should be used to create
+ the XML parser. Space \201)SM(XML_Char \201' '\202)ES(\202 should be used
+ as a sepa)HY(ra)HY(tor)YH( \201the second argu)HY(ment)YH( to )SM(XML_Parser)HY(Cre)HY(at)HY(eNS)YH(\201\202)ES(\202.
+ )EP(
+
+ )0 P(The error handling mech)HY(a)HY(nisms)YH( employed by the )SM(docu)HY(ment)YH()ES(
+ parser are described in )0 70 1 A(Section 7.3, "Error
+ Handling")70 0 TN TL()Ec /AF f D(.)EP(
+
+
+ )0 2 43 H(7.3)WB 114 Sn()WB 47 Sn( Error Handling)EA()EH(
+
+ )0 P(There are three cate)HY(gories)YH( of errors that can result from running
+ a parser on an XML docu)HY(ment)YH(: System, XML, and Appli)HY(ca)HY(tion)YH(.
+ The System cate)HY(gory)YH( contains memory allo)HY(ca)HY(tion)YH( and file/stream
+ oper)HY(a)HY(tion)YH( errors. The XML cate)HY(gory)YH( covers XML parsing and
+ well-formed)HY(ness)YH( check)HY(ing)YH( as well as XML Schema vali)HY(da)HY(tion)YH( errors.
+ Finally, the Appli)HY(ca)HY(tion)YH( cate)HY(gory)YH( is for appli)HY(ca)HY(tion)YH( logic errors
+ that you may want to prop)HY(a)HY(gate)YH( from parser imple)HY(men)HY(ta)HY(tions)YH( to the
+ caller of the parser.
+ )EP(
+
+ )0 P(The System errors are mapped to the stan)HY(dard)YH( excep)HY(tions)YH(. The
+ out of memory condi)HY(tion)YH( is indi)HY(cated)YH( by throw)HY(ing)YH( an instance
+ of )SM(std::bad_alloc)ES(. The stream oper)HY(a)HY(tion)YH( errors
+ are reported either by throw)HY(ing)YH( an instance of
+ )SM(std::ios_base::failure)ES( if excep)HY(tions)YH( are enabled
+ or by setting the stream state.)EP(
+
+ )0 P(Note that if you are parsing )SM(std::istream)ES( on
+ which excep)HY(tions)YH( are not enabled, then you will need to
+ check the stream state before calling the )SM(post\201\202)ES(
+ call)HY(back)YH(, as shown in the follow)HY(ing)YH( example:)EP(
+
+ ) 24 50 PR(int
+main \201int argc, char* argv[]\202
+{
+ ...
+
+ std::ifstream ifs \201argv[1]\202;
+
+ if \201ifs.fail \201\202\202
+ {
+ cerr << argv[1] << ": unable to open" << endl;
+ return 1;
+ }
+
+ root_p.pre \201\202;
+ doc_p.parse \201ifs\202;
+
+ if \201ifs.fail \201\202\202
+ {
+ cerr << argv[1] << ": io failure" << endl;
+ return 1;
+ }
+
+ result_type result \201root_p.post_xxx \201\202\202;
+})RP(
+
+ )0 P(The above example can be rewrit)HY(ten)YH( to use excep)HY(tions)YH(
+ as shown below:)EP(
+
+ ) 21 68 PR(int
+main \201int argc, char* argv[]\202
+{
+ try
+ {
+ ...
+
+ std::ifstream ifs;
+ ifs.exceptions \201std::ifstream::badbit | std::ifstream::failbit\202;
+ ifs.open \201argv[1]\202;
+
+ root_p.pre \201\202;
+ doc_p.parse \201ifs\202;
+ result_type result \201root_p.post_xxx \201\202\202;
+ }
+ catch \201const std::ifstream::failure&\202
+ {
+ cerr << argv[1] << ": unable to open or io failure" << endl;
+ return 1;
+ }
+})RP(
+
+
+ )0 P(For report)HY(ing)YH( appli)HY(ca)HY(tion)YH( errors from parsing call)HY(backs)YH(, you
+ can throw any excep)HY(tions)YH( of your choice. They are prop)HY(a)HY(gated)YH( to
+ the caller of the parser without any alter)HY(ations)YH(.)EP(
+
+ )0 P(The XML errors can be reported either by throw)HY(ing)YH( the
+ )SM(xml_schema::parsing)ES( excep)HY(tion)YH( or by a call)HY(back)YH(
+ to the )SM(xml_schema::error_handler)ES( object \201and
+ )SM(xercesc::ErrorHan)HY(dler)YH()ES( object in case of Xerces-C++\202.)EP(
+
+ )0 P(The )SM(xml_schema::parsing)ES( excep)HY(tion)YH( contains
+ a list of warn)HY(ings)YH( and errors that were accu)HY(mu)HY(lated)YH( during
+ parsing. Note that this excep)HY(tion)YH( is thrown only if there
+ was an error. This makes it impos)HY(si)HY(ble)YH( to obtain warn)HY(ings)YH(
+ from an other)HY(wise)YH( success)HY(ful)YH( parsing using this mech)HY(a)HY(nism)YH(.
+ The follow)HY(ing)YH( listing shows the defi)HY(ni)HY(tion)YH( of
+ )SM(xml_schema::parsing)ES( excep)HY(tion)YH(. Note that if the
+ char)HY(ac)HY(ter)YH( type is )SM(wchar_t)ES(, then the string type
+ and output stream type in the defi)HY(ni)HY(tion)YH( become
+ )SM(std::wstring)ES( and )SM(std::wostream)ES(,
+ respec)HY(tively)YH( \201see )0 53 1 A(Section 5.2, "Char)HY(ac)HY(ter)YH( Type
+ and Encod)HY(ing)YH(")53 0 TN TL()Ec /AF f D(\202.)EP(
+
+ ) 82 51 PR(namespace xml_schema
+{
+ class exception: public std::exception
+ {
+ protected:
+ virtual void
+ print \201std::ostream&\202 const = 0;
+ };
+
+ inline std::ostream&
+ operator<< \201std::ostream& os, const exception& e\202
+ {
+ e.print \201os\202;
+ return os;
+ }
+
+
+ class severity
+ {
+ public:
+ enum value
+ {
+ warning,
+ error
+ };
+ };
+
+
+ class error
+ {
+ public:)WR(
+ error \201xml_schema::severity,
+ const std::string& id,
+ unsigned long line,
+ unsigned long column,
+ const std::string& message\202;
+
+ xml_schema::severity
+ severity \201\202 const;
+
+ const std::string&
+ id \201\202 const;
+
+ unsigned long
+ line \201\202 const;
+
+ unsigned long
+ column \201\202 const;
+
+ const std::string&
+ message \201\202 const;
+ };
+
+ std::ostream&
+ operator<< \201std::ostream&, const error&\202;
+
+
+ class diagnostics: public std::vector<error>
+ {
+ };
+)WR(
+ std::ostream&
+ operator<< \201std::ostream&, const diagnostics&\202;
+
+
+ class parsing: public exception
+ {
+ public:
+ parsing \201\202;
+ parsing \201const xml_schema::diagnostics&\202;
+
+ const xml_schema::diagnostics&
+ diagnostics \201\202 const;
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+
+ protected:
+ virtual void
+ print \201std::ostream&\202 const;
+ };
+})RP(
+
+ )0 P(The follow)HY(ing)YH( example shows how we can catch and print this
+ excep)HY(tion)YH(. The code will print diag)HY(nos)HY(tics)YH( messages one per line
+ in case of an error.)EP(
+
+ ) 13 38 PR(int
+main \201int argc, char* argv[]\202
+{
+ try
+ {
+ // Parse.
+ }
+ catch \201const xml_schema::parsing& e\202
+ {
+ cerr << e << endl;
+ return 1;
+ }
+})RP(
+
+ )0 P(With the )SM(error_handler)ES( approach the diag)HY(nos)HY(tics)YH(
+ messages are deliv)HY(ered)YH( as parsing progresses. The follow)HY(ing)YH(
+ listing presents the defi)HY(ni)HY(tion)YH( of the )SM(error_handler)ES(
+ inter)HY(face)YH(. Note that if the char)HY(ac)HY(ter)YH( type is )SM(wchar_t)ES(,
+ then the string type in the inter)HY(face)YH( becomes )SM(std::wstring)ES(
+ \201see )0 53 1 A(Section 5.2, "Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH(")53 0 TN TL()Ec /AF f D(\202.)EP(
+
+ ) 24 44 PR(namespace xml_schema
+{
+ class error_handler
+ {
+ public:
+ class severity
+ {
+ public:
+ enum value
+ {
+ warning,
+ error,
+ fatal
+ };
+ };
+
+ virtual bool
+ handle \201const std::string& id,
+ unsigned long line,
+ unsigned long column,
+ severity,
+ const std::string& message\202 = 0;
+ };
+})RP(
+
+ )0 P(The return value of the )SM(handle\201\202)ES( func)HY(tion)YH( indi)HY(cates)YH( whether
+ parsing should continue if possi)HY(ble)YH(. The error with the fatal sever)HY(ity)YH(
+ level termi)HY(nates)YH( the parsing process regard)HY(less)YH( of the returned value.
+ At the end of the parsing process with an error that was reported via
+ the )SM(error_handler)ES( object, an empty
+ )SM(xml_schema::parsing)ES( excep)HY(tion)YH( is thrown to indi)HY(cate)YH(
+ the failure to the caller. You can alter this behav)HY(ior)YH( by throw)HY(ing)YH(
+ your own excep)HY(tion)YH( from the )SM(handle\201\202)ES( func)HY(tion)YH(.)EP(
+
+
+
+
+
+ )0 1 44 H(Appendix)WB 115 Sn()WB 48 Sn( A \236 Supported XML Schema Constructs)EA()EH(
+
+ )0 P(The C++/Parser mapping supports vali)HY(da)HY(tion)YH( of the follow)HY(ing)YH( W3C XML
+ Schema constructs in the gener)HY(ated)YH( code.)EP(
+
+
+ )1 PT(
+
+
+ )BR(
+)BR(
+
+)WB NL
+/TE t D NP /OU t D TU PM 1 eq and{/Pn () D showpage}if end restore
diff --git a/doc/pregenerated/cxx/tree/guide/cxx-tree-guide.pdf b/doc/pregenerated/cxx/tree/guide/cxx-tree-guide.pdf
new file mode 100644
index 0000000..3d011f3
--- /dev/null
+++ b/doc/pregenerated/cxx/tree/guide/cxx-tree-guide.pdf
Binary files differ
diff --git a/doc/pregenerated/cxx/tree/guide/cxx-tree-guide.ps b/doc/pregenerated/cxx/tree/guide/cxx-tree-guide.ps
new file mode 100644
index 0000000..4af12ad
--- /dev/null
+++ b/doc/pregenerated/cxx/tree/guide/cxx-tree-guide.ps
@@ -0,0 +1,3515 @@
+%!PS
+%%Title: C++/Tree Mapping Getting Started Guide
+%%Creator: html2ps version 1.0 beta7
+%%EndComments
+save
+2000 dict begin
+/d {bind def} bind def
+/D {def} d
+/t true D
+/f false D
+/FL [/Times-Roman
+/Times-Italic
+/Times-Bold
+/Times-BoldItalic
+/Courier
+/Courier-Oblique
+/Courier-Bold
+/Courier-BoldOblique
+/Helvetica
+/Helvetica-Oblique
+/Helvetica-Bold
+/Helvetica-BoldOblique] D
+/WF t D
+/WI 0 D
+/F 1 D
+/IW 471 F div D
+/IL 621 F div D
+/PS 791 D
+/EF [0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 2] D
+/EZ [12 10 19 17 15 13 12 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 8 8] D
+/Ey [0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] D
+/EG [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] D
+/Tm [1 1 0.8 0.8 0.8 0.8 0.8 0.8 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1.3 0 0] D
+/Bm [1 1 0.5 0.5 0.5 0.5 0.5 0.5 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1 0 0] D
+/Lm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 2 0 0 0] D
+/Rm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] D
+/EU [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0] D
+/NO f D
+/YY [[{()}{ h }][{ h }{()}][{()}{()}]] D
+/ZZ [[{ (September 2023) }{ Pn }][{ Pn }{ (September 2023) }][{ Ti }{ Ti }]] D
+/Ts EZ 0 get D
+/TU f D
+/Xp t D
+/AU f D
+/SN 0 D
+/Cf t D
+/Tp t D
+/Fe f D
+/TI 2 Ts mul D
+/Fm 14 D
+/xL 71 D
+/xR 71 D
+/yL 706 D
+/yR 706 D
+/Wl 471 F div D
+/Wr 471 F div D
+/hL 621 F div D
+/hR 621 F div D
+/FE {newpath Fm neg Fm M CP BB IW Fm add Fm L IW Fm add IL Fm add neg L CP BB
+ Fm neg IL Fm add neg L closepath} D
+/LA {PM 0 eq{/IW Wl D /IL hL D}{/IW Wr D /IL hR D}ie /W IW D /LL W D /LS W D
+ TU PM 0 eq and{IW 56 F div add SA{Sf div}if 0 translate}
+ {PM 0 eq{xL yL}{xR yR}ie translate F SA{Sf mul}if dup scale
+ CS CF FS Cf{CA CL get VC}if /Bb f D}ie 0 0 M
+ TF not Tc or {Cf{gsave SA{1 Sf div dup scale}if Cb VC FE fill grestore}if}if}D
+/Pi 0 Ts mul D
+/SG [0.8 1 1] D
+/Ab 15 D
+/J 0 D
+/Tc t D
+/NH 6 D
+/Nf f D
+/Pa f D
+/LH 1.2 D
+/XR f D
+/Xr {/pN E D ( [p ) WB pN WB (] )WB} D
+/Db [16#FF 16#FF 16#FF] D
+/Dt [16#00 16#00 16#00] D
+/eA f D
+/Fi f D
+/bT f D
+/Lc t D
+/Dl [16#00 16#00 16#00] D
+/LX f D
+/Br 0.25 D
+/IA ([IMAGE]) D
+/DS {/PF f D()WB NL NP()pop RC ZF} D
+/Gb f D
+/Mb t D
+/Hc [16#00 16#00 16#00] D
+/Bl 3 D
+/MI -15.6 D
+/DX (DRAFT) D
+/Di 0 D
+/Tt 113.385826771654 D
+/Th { (
+) 2 Al()BR (
+ ) 0 1 -1 H()4 FZ (C++/Tree Mapping) ES()EH (
+ ) 0 1 -1 H()4 FZ (Getting Started Guide) ES()EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+) Ea()BR (
+ ) 0 P (Copyright © 2005-2023 Code Synthesis.) EP (
+
+ ) 0 P (Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ ) R0 2 A (GNU Free
+ Documentation License, version 1.2) EA (; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ ) EP (
+
+ ) 0 P (This document is available in the following formats:
+ ) R1 2 A (XHTML) EA (,
+ ) R2 2 A (PDF) EA (, and
+ ) R3 2 A (PostScript) EA (.) EP()} D
+/tH {()0 1 -1 H (Table of Contents) EH()} D
+/FD 2 D
+/Dy 2 D
+/cD [16#F0 16#F0 16#F0] D
+/FW 0.6 D
+/FU [16#00 16#00 16#00] D
+/ET {/RM f D /A0 3 D /PN SN D /OU t D /Ou t D /W IW D /LL W D D1
+ Ms not TP and{Ip}if /TF f D} D
+
+%-- End of variable part --
+/MySymbol 10 dict dup begin
+ /FontType 3 D /FontMatrix [.001 0 0 .001 0 0 ] D /FontBBox [25 -10 600 600] D
+ /Encoding 256 array D 0 1 255{Encoding exch /.notdef put}for
+ Encoding (e) 0 get /euro put
+ /Metrics 2 dict D Metrics begin
+ /.notdef 0 D
+ /euro 651 D
+ end
+ /BBox 2 dict D BBox begin
+ /.notdef [0 0 0 0] D
+ /euro [25 -10 600 600] D
+ end
+ /CharacterDefs 2 dict D CharacterDefs begin
+ /.notdef {} D
+ /euro{newpath 114 600 moveto 631 600 lineto 464 200 lineto 573 200 lineto
+ 573 0 lineto -94 0 lineto 31 300 lineto -10 300 lineto closepath clip
+ 50 setlinewidth newpath 656 300 moveto 381 300 275 0 360 arc stroke
+ -19 350 moveto 600 0 rlineto -19 250 moveto 600 0 rlineto stroke}d
+ end
+ /BuildChar{0 begin
+ /char E D /fontdict E D /charname fontdict /Encoding get char get D
+ fontdict begin
+ Metrics charname get 0 BBox charname get aload pop setcachedevice
+ CharacterDefs charname get exec
+ end
+ end}D
+ /BuildChar load 0 3 dict put /UniqueID 1 D
+end
+definefont pop
+
+/Cd {aload length 2 idiv dup dict begin {D} repeat currentdict end} D
+/EX {EC cvx exec} D
+/DU {} d
+/BB {pop pop}d
+/ie {ifelse} d
+/E {exch} d
+/M {moveto} d
+/R {rmoveto} d
+/L {lineto} d
+/RL {rlineto} d
+/CP {currentpoint} d
+/SW {stringwidth} d
+/GI {getinterval} d
+/PI {putinterval} d
+/Sg {setgray} d
+/LW {setlinewidth} d
+/S {dup () ne OU and{0 Co R AT 3 eq LB and HF not and A1 0 ne A2 0 ne or and
+ {A2 0 32 A1 0 6 -1 roll awidthshow}{show}ie 0 Co neg R}{pop}ie
+ OU PH 3 eq or{/Ms t D}if} D
+/U {OU{gsave CP currentfont /FontInfo get /UnderlinePosition get
+ 0 E currentfont /FontMatrix get dtransform E pop add newpath M dup SW pop
+ CJ 0 RL stroke grestore}if} D
+/B {OU Br 0 gt and{CP Ts neg Ts .33 mul R gsave 0 Sg
+ CP newpath Ts Br mul 0 360 arc closepath UI 2 mod 0 eq{stroke}{fill}ie
+ grestore M CP E Ts Br 1 add mul sub E BB /Ms t D}if}D
+/NP {Ms TP not or PA and OU and{TP{OR}if f1{mF k2 /mF E D /YC 0 D}if
+ TP TU not PM 0 eq or and{showpage}if DU Ip TE not{LA}if 0.6 LW
+ /CI 0 D /TP t D /Hs f D /hl 6 D /Hv 6 D /HI hi D /Ms f D}if Bs XO BO M} D
+/Np {LE sub CP E pop gt PL 0 eq and{NP}if}D
+/Ip {/PN PN 1 add D /Pn RM{1}{4}ie PN Ns D /PM PN SN sub 2 mod D} D
+/GP {E dup 3 -1 roll get PN 1 add 2 mod get dup type /integertype eq
+ {get 0 get}{E pop}ie}d
+/Fc {dup 2 GP exec SW pop /S1 E D dup 1 GP exec SW pop /S2 E D 0 GP exec SW
+ pop /S3 E D S1 0 gt{S2 2 mul S1 add S3 2 mul S1 add 2 copy lt{E}if pop}{0}ie
+ S2 S3 add 2 copy lt{E}if pop IW .9 mul div dup 1 gt{1 E div}{pop 1}ie}D
+/OR {Df{Sd}if tp not{gsave SA{1 Sf div dup scale}if Fe{Cf{FU VC}if FW LW
+ 1 setlinejoin FE stroke}if /YO {60 F div dup 40 gt{pop 40}if}D /cs CS D
+ /cf CF D /CF 0 D /pf PF D /PF f D /Fn FN D /At AT D /AT 0 D /FN EF Hf 1 add
+ get D Fz Fs FS ZZ Fc Fz mul Fs FS EU Hf 1 add get dup type /arraytype eq
+ Cf and{VC}{pop 0 Sg}ie IW IL neg YO sub M ZZ 1 GP exec dup SW pop neg 0 R Sh
+ 0 IL neg YO sub M ZZ 0 GP exec Sh ZZ 2 GP exec dup SW pop IW E sub 2 div
+ IL neg YO sub M Sh Fz Fs FS NO{/AW IW Pn SW pop sub D AW 2 div IL neg YO sub
+ S1 0 gt S2 AW .45 mul gt or S3 AW .45 mul gt or{Fz 2 mul sub}if M Pn Sh}if
+ EU Hf get dup type /arraytype eq Cf and{VC}{pop 0 Sg}ie YY Fc /FN EF Hf get D
+ Hz mul HS FS IW YO M YY 1 GP exec dup SW pop neg 0 R Sh 0 YO M YY 0 GP exec Sh
+ YY 2 GP exec dup SW pop IW E sub 2 div YO M Sh /FN Fn D /AT At D t Pb XO SZ
+ SL get neg R /PF pf D grestore /CF 0 D cs cf FS}if}D
+/Sh {dup () ne{CP Hz 4 div sub BB show CP CS add BB}{pop}ie}D
+/Pb {/OU E D /Ou OU D /PB t D 0 0 M Ba{/Sa save D /BP t D /Fl t D RC /PL 0 D
+ /PH 0 D /W IW D /LE IL .7 mul D /EO 0 D SI ZF /YA 0 D /BO 0 D /C1 () D
+ BA 0 Ts neg R Bb{Xl Yl Xh Yh}if Bb CP Sa restore M
+ {/Yh E D /Xh E D /Yl E D /Xl E D}if /Fl t D}if
+ BL /OU t D /HM f D /Ou t D /PB f D} D
+/Bs {/BP Ba not D}D
+/reencodeISO {
+ dup dup findfont dup length dict begin{1 index /FID ne{D}{pop pop}ie}forall
+ /Encoding ISOLatin1Encoding D currentdict end definefont} D
+/ISOLatin1Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/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/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/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/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/yacute/thorn/ydieresis
+] D
+[128/backslash 129/parenleft 130/parenright 141/circumflex 142/tilde
+143/perthousand 144/dagger 145/daggerdbl 146/Ydieresis 147/scaron 148/Scaron
+149/oe 150/OE 151/guilsinglleft 152/guilsinglright 153/quotesinglbase
+154/quotedblbase 155/quotedblleft 156/quotedblright 157/endash 158/emdash
+159/trademark]
+aload length 2 idiv 1 1 3 -1 roll{pop ISOLatin1Encoding 3 1 roll put}for
+/colorimage where{pop}{
+ /colorimage {
+ pop pop /Pr E D {/Cv Pr D /Gr Cv length 3 idiv string D 0 1 Gr length 1 sub
+ {Gr E dup /i E 3 mul D Cv i get 0.299 mul Cv i 1 add get 0.587 mul add
+ Cv i 2 add get 0.114 mul add cvi put}for Gr} image} D
+}ie
+/pdfmark where{pop}{userdict /pdfmark /cleartomark load put}ie
+WF{FL{reencodeISO D}forall}{4 1 FL length 1 sub{FL E get reencodeISO D}for}ie
+/Symbol dup dup findfont dup length dict begin
+ {1 index /FID ne{D}{pop pop}ie}forall /Encoding [Encoding aload pop]
+ dup 128 /therefore put D currentdict end definefont D
+
+/SF {/CS E D SZ SL CS put FO SL FN put /YI CS LH neg mul D dup ST cvs ( ) join
+ CS ST cvs join C1 E join ( NF ) join /C1 E D CS NF /Wf WF FN 0 gt or D
+ /BW Wf{( ) SW pop}{0}ie D}D
+/NF {/cS E D /cF E D cF 0 ge{FL cF get}{cF -1 eq{/Symbol}{/MySymbol}ie}ie
+ findfont cS scalefont setfont} D
+/FS {CF or /CF E D FR SL CF put CF CF 0 ge{FN 4 mul add}if E SF} D
+/PC {SH /BP f D fin not GL not and{NL}if /HM t D /LL LS D} D
+/BS {/TX E D Wf{/fin f D /CW 0 D /LK 0 D /SC 0 D
+ /RT TX D {RT ( ) search{/NW E D pop /RT E D /WH NW SW pop D CW WH add LL gt
+ {TX SC LK SC sub 1 sub NN GI GL{SH cF cS OC
+ 2 copy cS ne E cF ne or{NF}{pop pop}ie}{PC /CW WH BW add D}ie
+ /SC LK D}
+ {GL{JC}if
+ /CW CW WH add BW add D /HM t D}ie /GL f D /Ph f D
+ /LK LK NW length 1 add add D}{pop exit}ie}loop
+ /fin t D TX SC LK SC sub GI SH RT () ne{GL not{CC}if}if
+ /LC TX length D /WH RT SW pop D CW WH add Hy{HC SW pop add}if LL gt
+ {RT GL{SH cF cS OC 2 copy cS ne E cF ne or{NF}{pop pop}ie
+ Hy{/Ph t D}if /LL LS D}{NL /LL LS D SH}ie}
+ {RT PC Hy{CC}if /Ph Ph Hy or D}ie RT () ne{/GL t D /HM t D}if}
+ {TX SW pop LL le{TX SH}{/NW () D 0 2 TX length 1 sub
+ {/CW E D TX 0 CW GI dup SW pop LL gt{pop NW SH /HM t D NL/LL W XO sub MR sub D
+ /CW CW 2 sub NN D /TX TX CW TX length CW sub GI D TX BS exit}
+ {/NW E D}ie}for}ie}ie /HM t D}D
+/CC {C0 length 0 gt{JC}if /C0 [C1 L1 YA YB Mf NS NB TB AF Bw] D
+ /C1 () D /L0 L1 D /YA 0 D /YB 0 D /Mf 0 D /NS 0 D /NB 0 D}D
+/JC {C0 aload length 0 gt{pop pop pop NB add /NB E D NS add /NS E D
+ dup Mf gt{/Mf E D}{pop}ie dup YB gt{/YB E D}{pop}ie
+ dup YA gt{/YA E D}{pop}ie pop C1 join /C1 E D /C0 [] D}if}D
+/OC {C0 length 0 gt{C1 L1 L0 sub YA YB Mf NS NB TB AF Bw GL C0 aload pop
+ /Bw E D /AF E D /TB E D /NB E D /NS E D /Mf E D /YB E D /YA E D /C0 [] D
+ /L1 E D /C1 E D Ph{HC SH}if NL /GL E D /Bw E D /AF E D /TB E D /NB E D /NS E D
+ /Mf E D /YB E D /YA E D /L1 E D /LL W L1 sub XO sub MR sub WH sub D /CW 0 D
+ C1 E join /C1 E D}if}D
+/BT {/LB t D dup length string copy RS dup dup () ne E ( ) ne and
+ {/CI 0 D /LS LL D /LL W L1 sub XO sub MR sub D BS}
+ {dup ( ) eq{/GL f D}if dup () eq L1 0 eq or{pop}{SH /BP f D /Ph f D}ie}ie
+ /LB f D} D
+/BL {CP E pop XO E M} D
+/NL {JC /GL f D /SK W XO sub MR sub L1 sub TB{Bw add}if D
+ /YA LF{Mf HM Fl not and PF or{LH mul}if}{0 /LF t D}ie YA 2 copy lt{E}if pop D
+ C1 () ne{/FB YB Mf SA{Sf mul}if 4 div 2 copy lt{E}if pop D}if Fl{/Ya YA D}if
+ CP E pop YA sub YB sub LE neg lt Fl not and PB not and{NP}if NT TL BL
+ OU PF not and PB or{/RE L1 TB{Bw sub}if
+ W XO sub MR sub div YA YB add LE BO add div 2 copy lt{E}if pop D
+ RE 1 gt{BL 1 RE div dup scale}if}if
+ AT 2 le{SK AT mul 2 div YA neg R}if
+ AT 3 eq{0 YA neg R TB{/NB NB 1 sub D /NS NS 1 sub D}if /NB NB 1 sub NN D
+ /A3 NS 6 mul NB add D NS NB add 0 eq
+ {/A1 0 D /A2 0 D}
+ {NS 0 eq{/A1 SK NB div dup J gt{pop 0}if D /A2 0 D}{J A3 mul SK lt
+ {/A1 J D /A2 SK J NB mul sub NS div dup Ab gt{/A1 0 D pop 0}if D}
+ {/A1 SK A3 div D /A2 A1 6 mul D}ie}ie}ie /A1 A1 NN D /A2 A2 NN D}if
+ AT 4 eq{0 YA neg R PH 2 le{PD 0 lt{/PD L1 D}if PD M1 gt{/M1 PD D}if
+ L1 PD sub M2 gt{/M2 L1 PD sub D}if}{DV ID 1 sub get 0 ge{Lo 0 R}if}ie}if
+ F0 cF ne Cs cS ne or{F0 Cs NF}if
+ /ms Ms D /Ms f D CP FB sub
+ C1 cvx exec XO EO sub L1 add TB{BW sub}if dup LM gt{/LM E D}{pop}ie
+ PH 0 eq PH 4 eq or Ms and{HF not{/PO t D /AH t D}if
+ BB CP YA add E AT 3 eq LB and{A1 sub}if TB{BW sub}if E BB}
+ {pop pop}ie Ms HM PH 3 eq and or{/BP f D /Fl f D}if
+ /Lo 0 D /L1 0 D /F0 cF D /Cs cS D BP not{0 YB NN neg R}if
+ OU f1 and mF not and{k2 /f1 f D}if
+ OU PF not and PB or{RE 1 gt{RE dup scale}if}if /Ms ms Ms or D
+ /C1 AF{(Cp )}{()}ie D /YA 0 D /YB 0 D BL
+ AT 4 eq LB not and PH 3 ge and
+ {ID DV length lt{DV ID get dup 0 ge{DO E sub /Lo E D /L1 Lo D}{pop}ie
+ /ID ID 1 add D}if}if /T t D CD{/LN LN 1 add D PD}if
+ /PD -1 D /NS 0 D /NB 0 D /TB f D /Ph f D /Mf 0 D /HM f D} D
+/RS {/TM E D /CN 0 D TM{10 eq{TM CN ( ) PI}if /CN CN 1 add D}forall
+ /CN 0 D /BK HM EN and{0}{1}ie D TM
+ {dup 32 ne{TM CN 3 2 roll put /CN CN 1 add D /BK 0 D}
+ {pop BK 0 eq{TM CN 32 put /CN CN 1 add D}if /BK 1 D}ie}forall
+ TM 0 CN GI dup dup () ne E ( ) ne and
+ {dup CN 1 sub get 32 eq{/EN f D}{/EN t D}ie}if} D
+/join {2 copy length E length add string dup 4 2 roll 2 index 0 3 index
+ PI E length E PI}d
+/WR {(\n) search{dup () ne BP not or
+ {Li 4 le CP E pop YI Li mul add LE add 0 lt and PL 0 eq and{NP}if
+ SH NL pop /Li Li 1 sub D WR}{pop pop WR}ie}{SH}ie /CI 0 D /BP f D} D
+/SH {dup dup () ne E ( ) ne and PF or CS Mf gt and{/Mf CS D}if
+ T not Wf and{( ) E join /T t D}if dup BP{/MF CS D}if
+ AT 3 eq{2 copy length dup 0 gt{/NB E NB add D
+ {( ) search{/NS NS 1 add D pop pop}{pop exit}ie}loop}{pop pop}ie}if
+ CD PD 0 lt and{dup DC search{SW pop /PD E L1 add D pop pop}{pop}ie}if
+ 0 Np dup SW pop L1 add /L1 E D dup () ne
+ {C1 (\() join E join (\)) join AU AF and UF or Wf and{( U ) join}if
+ sF{( s ) join}if ( S ) join
+ /C1 E D dup length 1 sub get 32 eq /TB E D /Bw BW D}{pop pop}ie} D
+/BG {AI LG BC add add 0 eq} D
+/ON {OU{Ty AR AI NN get dup 1 add Ln Ns Ty 2 mod 0 eq{(. )}{(\) )}ie join
+ dup SW pop neg 0 R CP E 0 lt{0 E M}{pop}ie CP BB show /Ms t D}if} D
+/Ln {AR AI 3 -1 roll put}D
+/SP {dup CI lt BP not and{dup CI sub 0 E R /CI E D}{pop}ie} D
+/BN {PF{WR /HM f D}{BT NL}ie} D
+/NN {dup 0 lt{pop 0}if} D
+/h {(h) HI ST cvs join cvx exec dup 1 get E Nf{0 get E join}{pop}ie} D
+/H {/fn FN D /Hi E 1 add D 1 sub /HL E D /H2 HL 2 add D /GS EZ H2 get D
+ E Tm H2 get GS mul BE dup 0 gt{1 sub}{pop EG H2 get dup 0 lt{pop AT}if}ie NA
+ WW Np /SL SL 1 add D /FN EF H2 get D GS Ey H2 get FS
+ EU H2 get Sc Hs not HL Hl lt and Hs HL hl lt and or Hi 0 eq or
+ {/HI Hi D /Hs t D /hl HL D /Hv HL D}if HL Hl lt{/hi Hi D}if
+ Nf HI 0 gt and{(h) Hi ST cvs join cvx exec 0 get WB}if
+ /HF t D /AH f D /PO f D} D
+/EH {Bm H2 get GS mul BE OA /SL SL 1 sub NN D /CF 0 D /FN fn D
+ SZ SL get FR SL get FS /HF f D /GS Ts D ()Ec} D
+/P {E PF{WR}{PO{EP}{BN}ie Ts 4 mul Np AE not{Tm 0 get Ts mul neg SP}if
+ dup 0 ge AH and{Pi Pd}if}ie 1 sub dup 0 lt{pop AV AL get}if /AT E D /PO t D} D
+/EP {PF{WR}{BN Ts 4 mul Np}ie AE not{Bm 0 get Ts mul neg SP}if
+ /AT AV AL get D /PO f D} D
+/BE {E PO{EP}{BN}ie Ts 4 mul Np neg SP} D
+/HR {/Aw W EO sub D /RW E dup 0 gt{Aw mul}{neg}ie dup Aw gt{pop Aw}if D /RZ E D
+ E BN Ts neg SP 1 sub 2 div Aw RW sub mul EO add CP E pop M PF{0 Ps neg R}if
+ 0 Np OU{gsave RZ LW Cf{Hc VC}{0 Sg}ie CP BB RW 0 RL CP BB stroke grestore}if
+ /CI 0 D /BP f D PF not{Ts neg SP}if /Ms t D} D
+/AD {I NL EG 14 get dup 0 lt{pop AT}if NA /AE t D Tm 14 get Ts mul neg SP
+ Cf{EU 14 get dup -1 eq{pop CA CL get}if Sc}if} D
+/DA {BN ()ES OA /AE f D ()Ec Bm 14 get Ts mul neg SP} D
+/PR {/MW E D /Li E D Tm 1 get Ps mul BE 0 NA /FN Fp D /PF t D SI /SL SL 1 add D
+ /CF 0 D Ps CS mul Ts div MW WC mul CS mul Ts div dup LL gt PL 0 eq and
+ {LL div div}{pop}ie Ey 1 get FS CP E pop LE add YI neg div cvi dup Li lt
+ AH and{4 lt YI Li mul 5 mul LE add 0 gt or PL 0 eq and{NP}if}{pop}ie
+ EU 1 get Sc /GS Ps D}D
+/RP {WR NL () /PF f D SI /FN 0 D ES Bm 1 get Ps mul neg SP OA /GS Ts D} D
+/SI {/XO Lm 15 get BC NN mul Lm 16 get AI UI sub NN mul add
+ Lm 17 get UI NN mul add Lm 20 get LG NN mul add Ts mul
+ PF{Lm 1 get Ps mul add}if EO add D
+ /MR Rm 15 get BC NN mul Rm 16 get AI UI sub NN mul add
+ Rm 17 get UI NN mul add Rm 20 get LG NN mul add Ts mul
+ PF{Rm 1 get Ps mul add}if D /LL W XO sub MR sub D} D
+/DT {/cC E D BN /LG LG 1 sub D SI /LG LG 1 add D WW 2 div Np BL} D
+/DD {WB Cc 0 eq cC 0 eq and L1 0 eq or Lm 20 get Ts mul L1 sub TB{BW add}if
+ Ts 2 div lt or NL /LF E D SI BL /cC 0 D} D
+/DL {Dc LG Cc put /Cc E D BG{Tm 18 get Ts mul BE}{BN}ie /LG LG 1 add D BL} D
+/LD {BN LG 0 gt{/LG LG 1 sub D}if /Cc Dc LG get D SI
+ BG{()Bm 18 get Ts mul BE}if BL} D
+/UL {BG{Tm 17 get Ts mul BE}{BN}ie NR AI NN 0 put /UI UI 1 add D
+ /AI AI 1 add D SI BL} D
+/LU {BN /UI UI 1 sub D /AI AI 1 sub D SI BG{()Bm 17 get Ts mul BE}if BL} D
+/OL {E BG{Tm 16 get Ts mul BE}{BN}ie TR AI NN Ty put /Ty E D NR AI NN 1 put
+ /AI AI 1 add D SI BL 1 Ln} D
+/LO {BN /AI AI 1 sub D /Ty TR AI get D SI BG{()Bm 16 get Ts mul BE}if BL} D
+/LI {E BN -1 SP /BP f D /CI 0 D 0 Np NR AI 1 sub NN get 1 eq
+ {dup dup 0 gt E 4 le and{/Ty E D}{pop}ie
+ /L1 L1 Ty AR AI NN get Ns SW pop XO sub dup 0 lt{pop 0}if add D ( ON )}
+ {pop ( B )}ie C1 E join /C1 E D CS Mf gt{/Mf CS D}if BL} D
+/BQ {Tm 15 get Ts mul BE /BC BC 1 add D SI BL} D
+/QB {Bm 15 get Ts mul BE /BC BC 1 sub D SI BL} D
+/Al {E EP 1 sub dup 0 lt{pop AV AL get}if NA} D
+/Ea {EP OA} D
+/WB {PF{WR}{BT}ie} D
+/F1 {WB /FN 0 D CS 0 FS} D
+/F2 {WB /FN WI D CS 0 FS} D
+/HY {/Hy t D WB /Hy f D} D
+/YH {WB} D
+/A {/LT E D LT 1 eq{/RN E D}if /Lh E D WB /C1 C1 ( Cp ) join D
+ Lc AF not and{Cl Sc}if /AF t D} D
+/EA {Lc AF and{Ec}{WB}ie TL Pa AF and Lh 0 ne and
+ {( \() Lh join (\)) join /AF f D WB}if /AF f D} D
+/TL {C1 ( Tl ) apa /C1 E D} d
+/apa {AF OU and Lh 0 ne LT 1 eq or and{LT 1 eq{RN ( /) E ST cvs join}
+ {(\() Lh join (\)) join}ie E join join}{pop}ie} d
+/Cp {/Xc CP /Yc E D D} D
+/SS {Cf{dup 0 ge{EU E get dup -1 eq{pop CA CL get}if}{pop CA CL get}ie Sc}
+ {pop}ie SZ SL get /SL SL 1 add D} D
+/I {WB 8 SS 1 FS} D
+/EM {WB 8 SS /CF CF 1 xor D 0 FS} D
+/BD {WB 9 SS 2 FS} D
+/TT {WB 10 SS /FN Fp D 0 FS} D
+/KB {WB 11 SS /FN Fp D 2 FS} D
+/CT {WB 12 SS 1 FS} D
+/SM {WB 13 SS /FN Fp D 0 FS} D
+/Q {/QL QL 1 add D QO QL 2 mod get La get join WB} D
+/EQ {QC QL 2 mod get La get join WB /QL QL 1 sub D} D
+/RO {WB -1 SS /CF 0 D 0 FS} D
+/SY {WB -1 SS -1 FS} D
+/MY {WB -1 SS -2 FS} D
+/ES {WB /SL SL 1 sub NN D /CF 0 D /FN FO SL get D SZ SL get FR SL get FS ()Ec}D
+/FZ {3 sub 1.2 E exp GS mul E WB TL /C1 C1 ( Cp ) join D /SL SL 1 add D 0 FS} D
+/Ef {WB TL ()ES /C1 C1 ( Cp ) join D} D
+/BZ {dup /Bf E D FZ}D
+/Sc {dup -1 ne Cf and{/CL CL 1 add D dup 0 eq{pop [0 0 0]}if
+ dup CA E CL E put VS ( VC ) join C1 E join /C1 E D}{pop}ie} D
+/Ec {WB Cf{/CL CL 1 sub NN D CA CL get VS ( VC ) join C1 E join /C1 E D}if} D
+/VS {dup type /arraytype eq{([) E {ST cvs join ( ) join}forall (]) join}if} D
+/VC {{255 div}forall setrgbcolor} D
+/Sl {dup type /integertype ne{Ds}if /La E D WB}d
+/UN {WB /UF t D} D
+/NU {WB /UF f D} D
+/SE {WB /sF t D} D
+/XE {WB /sF f D} D
+/sM {/C1 C1 ( k1 ) join D}d
+/eM {/C1 C1 ( k2 ) join D}d
+/k1 {/YC CP E pop Ts add D /mF t D /f1 t D}d
+/k2 {gsave 3 LW -9 CP E pop Ts 0.2 mul sub M -9 YC L stroke grestore /mF f D}d
+/Ac {/AC E D WB}d
+/Ca {eA{( \()join AC join(\) )join}if WB}d
+/s {OU{gsave 0 CS .25 mul R dup SW pop CJ 0 RL stroke grestore}if}D
+/CJ {AT 3 eq LB and{E dup dup length 1 sub A1 mul E
+ {( ) search{pop pop E A2 add E}{pop exit}ie}loop 3 -1 roll add
+ W CP pop sub 2 copy gt{E}if pop}if}D
+/So {/Co E D} D
+/SO {C1 Yo ST cvs join ( So ) join /C1 E D (j) SW pop 2 div Pd} D
+/Se {E WB CS E div Pd}D
+/Pd {dup type /stringtype eq{SW pop}if dup /L1 E L1 add D
+ ST cvs ( 0 R ) join C1 E join /C1 E D} D
+/Sp {0.35 CO} D
+/Sb {-0.2 CO} D
+/CO {OV Io Yo put /Yo E CS mul Yo add D /Io Io 1 add D -1.5 Io mul 3 add FZ SO
+ CS Yo add dup YA gt{/YA E D}{pop}ie
+ Yo neg dup YB gt{/YB E D}{pop}ie} D
+/Es {ES /Io Io 1 sub NN D /Yo OV Io get D SO} D
+/SB {/N2 0 D 0 1 NI{/N E D{IX N2 get 0 lt{/N2 N2 1 add D}{exit}ie}loop
+ /K WS N get FC N get mul D /NY AY N2 get D /BV NY array D
+ 0 1 NY 1 sub{/TM K string D currentfile TM readhexstring pop pop BV E TM put}
+ for BM N BV put /N2 N2 1 add D}for} D
+/IC [{/MA E D /MB 0 D}{2 div /MA E D /MB MA D}{/MB E CS sub D /MA CS D}
+ {pop /MA YS AB mul D /MB 1 AB sub YS mul D}{pop /MA 0 D /MB 0 D}] D
+/IP {BV N get /N N 1 add D} D
+/II {/K E D IX K get 0 lt{/EC E D}if /TY E D
+ TY 4 eq{/Y E D /X E D}if TY 3 eq{/AB E D}if
+ /XW AX K get D /YW AY K get D /IS SG IT K get get D /XS XW IS mul D
+ /YS YW IS mul D YS IC TY get exec /MA MA Fl not{3 add}if D} D
+/IM {II /ty TY D /xs XS D /ys YS D /ya YA D /yb YB D /ma MA D /mb MB D /k K D
+ /ec EC D /BP f D /CI 0 D WB TL L1 xs add dup XO add MR add W gt
+ {pop /ma ma Fl{3 add}if D NL /YA ma D /YB mb D /YS ys D /L1 xs D}
+ {/L1 E D ma YA gt{/YA ma D}if mb YB gt{/YB mb D}if}ie /TB f D
+ OU{CP E pop YS sub LE neg lt Fl not and PB not and{NP /YA ma D /YB mb D}if
+ /BP f D ty ST cvs ( ) join IX k get 0 lt{(\() join ec join (\) ) join}if
+ k ST cvs join ty 3 eq{AB ST cvs ( ) join E join}if
+ ty 4 eq{X ST cvs ( ) join Y ST cvs join ( ) join E join}if C1 E join
+ ( DI ) join FP 2 eq FP 1 eq AF and or{( FM ) join}if
+ ( Il Cp ) apa /C1 E D /EN f D}if /HM t D /T f D} D
+/DI {II /Xc CP /Yc E D D /YN YW neg D /HM t D /CI 0 D /K2 IX K get D gsave
+ TY 4 eq{OX X IS mul add OY FY add YS sub Y IS mul sub}
+ {/FY YS D CP MB sub 2 copy /OY E D /OX E D}ie
+ translate K2 0 ge{/DP AZ K2 get D /BV BM K2 get D XS YS scale /N 0 D XW YW DP
+ [XW 0 0 YN 0 YW] {IP} FC K2 get 1 eq{image}{f 3 colorimage}ie}
+ {EX}ie grestore XS 0 R /Ms t D} D
+/FM {gsave 0 Sg CP MB sub translate XS neg 0 M 0 YS RL XS 0 RL 0 YS neg RL
+ XS neg 0 RL stroke grestore} D
+/NA {/AT E D /AL AL 1 add D AV AL AT put} D
+/OA {AL 0 gt{/AL AL 1 sub D /AT AV AL get D}if} D
+/D1 {/BR {CP E pop E BN Mb{CP E pop eq{0 YI R}if}{pop}ie} D
+ /Sn {OU{C1 E ST cvs join ( Ld ) join /C1 E D}{pop}ie} D} D
+/D1 {/BR {BN} D /Sn {OU {C1 E ST cvs join ( Ld ) join /C1 E D} {pop} ie} D} D
+/TC {/TF t D /ML 0 D HN{SW pop dup ML gt{/ML E D}{pop}ie}forall NP /RM RM not D
+ RC /OU Tc D Ep /PN 0 D Ms not TP and{Ip}if /W IW ML sub Ts sub D
+ /A0 0 D TH{/BR {( ) join BT} D /Sn {pop} D /Au () D}if} D
+/TN {0 eq{E EA PF HF or not XR and{HN E get Xr}{pop}ie}
+ {OU{Tn 0 ge{() BN}if /Tn E D}{pop}ie WB}ie} D
+/NT {OU LB not and Tn 0 ge and{PL 0 eq{Ms not{CS CF FS}if CP dup
+ /y E YA sub D W 9 sub CS -1.8 mul XO L1 add 2 add{y M (.) show}for
+ HN Tn get dup SW pop IW E sub y M show CP BB M}if /Tn -1 D}if} D
+/Ld {/DN E D HN DN Pn put [/View [/XYZ -4 Fl{PS}{CP YA add US E pop}ie null]
+ /Dest DN ST cvs cvn /DEST pdfmark} D
+/C {ND 1 eq{1 sub}if TI mul /XO E D NL Nf not{pop()}if 0 3 -1 roll 1 A} D
+/OP {BP not{NP}if PN 2 mod 0 eq{/Ms t D NP}if}D
+/Ep {Xp PN 2 mod 0 eq and OU and{/Pn (-) D showpage /PM 1 D LA}if}D
+/Dg [73 86 88 76 67 68 77] D
+/Rd [0 [1 1 0][2 1 0][3 1 0][2 1 1][1 1 1][2 2 1][3 3 1][4 4 1][2 1 2]] D
+/Ns {/m E D /c E 32 mul D /j m 1000 idiv D /p j 12 add string D
+ c 96 le m 0 gt and{c 32 le {/i 0 D /d 77 D /l 100 D /m m j 1000 mul sub D
+ j -1 1 {pop p i d c add put /i i 1 add D}for
+ 4 -2 0 {/j E D /n m l idiv D /m m n l mul sub D /d Dg j get D
+ n 0 gt {/x Rd n get D x 0 get -1 1 {pop p i d c add put /i i 1 add D}for
+ p i x 1 get sub Dg x 2 get j add get c add put}if /l l 10 idiv D
+ }for p 0 i GI}
+ {/i ST length 1 sub D m {1 sub dup 0 ge{dup 26 mod c add 1 add
+ ST i 3 -1 roll put 26 idiv dup 0 eq{pop exit}if}if /i i 1 sub D}loop
+ ST i ST length i sub GI}ie}
+ {m p cvs}ie} D
+/US {matrix currentmatrix matrix defaultmatrix matrix invertmatrix
+ matrix concatmatrix transform} D
+/GB {Gb{US}if}D
+/Tl {/Rn E D Xc CP pop ne{
+ [/Rect [Xc 1 sub Yc cS 0.25 mul sub GB CP E 1 add E cS 0.85 mul add GB]
+ /Subtype /Link /Border [0 0 Cf Lc and LX and AU or{0}{1}ie] Rn type
+ /nametype eq {/Dest Rn}{/Action [/Subtype /URI /URI Rn] Cd}ie
+ /ANN pdfmark}if} D
+/Il {/Rn E D [/Rect [Xc Yc GB Xc XS add Yc YS add GB] /Subtype /Link
+ /Border [0 0 0] Rn type /nametype eq{/Dest Rn}
+ {/Action [/Subtype /URI /URI Rn] Cd}ie /ANN pdfmark} D
+/XP {[{/Z Bz 2 div D Z 0 R Z Z RL Z neg Z RL Z neg Z neg RL Z Z neg RL
+ Fi cH 1 eq and{fill}if} {Bz 0 RL 0 Bz RL Bz neg 0 RL 0 Bz neg RL
+ Fi cH 1 eq and{fill}if} {0 -5 R Bz 0 RL 0 21 RL Bz neg 0 RL 0 -21 RL}]} D
+/MS {/Sm E D WB}D
+/O {BN()0 Sm BX} D
+/BX {/Bt E D Bt 2 lt{/Ch E D CS 0.8 mul}{11 mul}ie W XO sub MR sub
+ 2 copy gt{E}if pop /HZ E D Bt 2 eq{Fi not{pop()}if ( )E join /Ft E D TT
+ /PF t D /MW 1 D /Li 1 D /Fw Ft SW pop D Fw HZ gt{/HZ Fw 8 add D}if
+ HZ ST cvs( )join}{WB Ch ST cvs( )join}ie L1 HZ add XO add MR add W gt{NL}if
+ Bt 2 eq{Ft ES Fw neg HM{CS sub}if Pd}if Bt ST cvs join( Bx )join
+ Bt 2 eq HM and{CS Pd}if C1 E join /C1 E D /L1 L1 HZ add D /T f D
+ ( ) Pd /PF f D Bt 2 lt{YA CS .8 mul lt{/YA CS .8 mul D}if}
+ {YB 5 lt{/YB 5 D}if YA 21 lt{/YA 21 D}if}ie /CI 0 D} D
+/Bx {dup 2 eq{E /Bz E D}{E /cH E D /Bz CS .8 mul D}ie
+ OU {gsave 0 Sg XP E get exec stroke grestore}{pop}ie Bz 0 R /Ms t D}D
+/SD {FD 4 mul Dy add DZ NF newpath 0 0 M DX t charpath pathbbox
+ 3 -1 roll sub /DY E D E dup /X1 E D sub WM mul WX DY mul add WM DG mul E div
+ /DF E D /DR WX DF mul DY mul WM div 2 div D} d
+/Sd {gsave 0 IL Di mul neg translate IL IW atan Di 0 eq{neg}if rotate
+ FD 4 mul Dy add DZ NF DR X1 sub DY 2 div neg M cD VC DX show grestore} d
+/Pt {/tp t D Tp{NP /Pn (TP) D 0 Tt neg R Th BN NP Ep ET RC ZF}if /tp f D} D
+/RC {/AI 0 D /LG 0 D /BC 0 D /UI 0 D /PF f D /Cc 0 D /cC 0 D /Dc 10 array D
+ /NR [0 1 9{pop 0}for] D /La Ds D /AR 10 array D /TR 10 array D /AV 30 array D
+ SI /AL -1 D /AT A0 D AT NA /OV 9 array D /Yo 0 D /Co 0 D /Io 0 D /Hy f D
+ /Ph f D /CL -1 D Ct Sc}D
+/ZF {/FR [0 1 30{pop 0}for] D /SZ [0 1 30{pop 0}for] D /FO [0 1 30{pop 0}for] D
+ /SL 0 D /CF 0 D /FN 0 D 0 Ts SF}D
+/QO [[(\233)(\234)(\273)(\232)(\253)(\253\240)][(`)(')(\273)(\231)(\253)(\253\240)]] D
+/QC [[(\234)(\234)(\253)(\233)(\273)(\240\273)][(')(')(\253)(`)(\273)(\240\273)]] D
+/Hf EF length 2 sub D
+/Hz EZ Hf get D
+/HS Ey Hf get D
+/Fz EZ Hf 1 add get D
+/Fs Ey Hf 1 add get D
+/LE IL D
+/Ps EZ 1 get D
+/Fp EF 1 get D
+/XO 0 D
+/YI 0 D
+/CI 0 D
+/FP 0 D
+/WW Ts 7 mul D
+/Mf 0 D
+/YA 0 D
+/YB 0 D
+/Cs Ts D
+/GS Ts D
+/F0 0 D
+/NS 0 D
+/NB 0 D
+/N 0 D
+/C0 [] D
+/C1 () D
+/Lo 0 D
+/L1 0 D
+/LM 0 D
+/PH 0 D
+/EC 0 D
+/Lh 0 D
+/LT 0 D
+/CH 1 string D
+/ST 16 string D
+/CA 9 array D
+/HC (\255) D
+/HM f D
+/PF f D
+/EN f D
+/TB f D
+/UF f D
+/sF f D
+/AE f D
+/AF f D
+/BP t D
+/CD f D
+/PA t D
+/GL f D
+/T t D
+/HF f D
+/AH f D
+/SA f D
+/PB f D
+/f1 f D
+/mF f D
+/OX 0 D
+/OY 0 D
+/FY 0 D
+/EO 0 D
+/FB 0 D
+/PL 0 D
+/Bw 0 D
+/PD -1 D
+/TP f D
+/tp f D
+/TH t D
+/Ty 4 D
+/Tn -1 D
+/Fl t D
+/LB t D
+/PM 1 D
+/Ms f D
+/Ba f D
+/Bb f D
+/Hl 3 D
+/hl 6 D
+/Hv 6 D
+/Hs f D
+/HI 0 D
+/hi 0 D
+/PO t D
+/TE f D
+/LF t D
+/BO 0 D
+/Sm 1 D
+/Bf 3 D
+/A1 0 D
+/A2 0 D
+/Ds 0 D
+/QL -1 D
+/Cb Db D
+/Ct Dt D
+/Cl Dl D
+[/Creator (html2ps version 1.0 beta7) /Author () /Keywords (xsd, xml, schema, c++, mapping, data, binding, parsing, serialization, validation) /Subject ()
+ /Title (C++/Tree Mapping Getting Started Guide) /DOCINFO pdfmark
+/ND 1 D
+/HN [(1) (1) (1) (1) (1) (1) (1) (1) (2) (3) (3) (5) (7) (7) (8) (11) (13) (15)
+(16) (16) (16) (17) (17) (18) (20) (23) (24) (26) (29) (??) (32) (33) (35)
+(36) (37) (38) (??) (??) (??) (??) (1) (1) (1) (1) (1) (2) (3) (3) (5) (7)
+(7) (8) (11) (13) (15) (16) (16) (16) (17) (17) (18) (20) (23) (24) (26)
+(29) (32) (33) (35) (36) (37) (38)] D
+/h0 [()(Table of Contents)] D
+/h1 [(1\240\240)(Preface)] D
+/h2 [(1.1\240\240)(About This Document)] D
+/h3 [(1.2\240\240)(More Information)] D
+/h4 [(2\240\240)(1 Introduction)] D
+/h5 [(2.1\240\240)(1.1 Mapping Overview)] D
+/h6 [(2.2\240\240)(1.2 Benefits)] D
+/h7 [(3\240\240)(2 Hello World Example)] D
+/h8 [(3.1\240\240)(2.1 Writing XML Document and Schema)] D
+/h9 [(3.2\240\240)(2.2 Translating Schema to C++)] D
+/h10 [(3.3\240\240)(2.3 Implementing Application Logic)] D
+/h11 [(3.4\240\240)(2.4 Compiling and Running)] D
+/h12 [(3.5\240\240)(2.5 Adding Serialization)] D
+/h13 [(3.6\240\240)(2.6 Selecting Naming Convention)] D
+/h14 [(3.7\240\240)(2.7 Generating Documentation)] D
+/h15 [(4\240\240)(3 Overall Mapping Configuration)] D
+/h16 [(4.1\240\240)(3.1 C++ Standard)] D
+/h17 [(4.2\240\240)(3.2 Character Type and Encoding)] D
+/h18 [(4.3\240\240)(3.3 Support for Polymorphism)] D
+/h19 [(4.4\240\240)(3.4 Namespace Mapping)] D
+/h20 [(4.5\240\240)(3.5 Thread Safety)] D
+/h21 [(5\240\240)(4 Working with Object Models)] D
+/h22 [(5.1\240\240)(4.1 Attribute and Element Cardinalities)] D
+/h23 [(5.2\240\240)(4.2 Accessing the Object Model)] D
+/h24 [(5.3\240\240)(4.3 Modifying the Object Model)] D
+/h25 [(5.4\240\240)(4.4 Creating the Object Model from Scratch)] D
+/h26 [(5.5\240\240)(4.5 Mapping for the Built-in XML Schema Types)] D
+/h27 [(6\240\240)(5 Parsing)] D
+/h28 [(6.1\240\240)(5.1 XML Schema Validation and Searching)] D
+/h29 [(6.2\240\240)(5.2 Error Handling)] D
+/h30 [(7\240\240)(6 Serialization)] D
+/h31 [(7.1\240\240)(6.1 Namespace and Schema Information)] D
+/h32 [(7.2\240\240)(6.2 Error Handling)] D
+/Hr [40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
+62 63 64 65 66 67 68 69 70 71]D
+/HV [1 2 2 1 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 1 2 2 1 2 2]D
+/Cn [2 0 0 2 0 0 7 0 0 0 0 0 0 0 5 0 0 0 0 0 5 0 0 0 0 0 2 0 0 2 0 0]D
+Hr length 0 gt{[/PageMode /UseOutlines /DOCVIEW pdfmark}if
+/Hn 1 D
+0 1 Hr length 1 sub{
+ /Bn E D [Cn Bn get dup 0 gt{/Count E HV Bn get Bl ge{neg}if}{pop}ie
+ /Dest Hr Bn get dup abs ST cvs cvn E 0 ge{(h)Hn ST cvs join cvx exec
+ dup 1 get E Nf{0 get E join}{pop}ie /Hn Hn 1 add D}{()}ie
+ /Title E dup length 255 gt{0 255 getinterval}if /OUT pdfmark}for
+ZF /FN Fp D Ps 0 FS /WC Wf{( )}{<A1A1>}ie SW pop D
+ET RC ZF
+/Df f D
+/R0 (https://www.codesynthesis.com/licenses/fdl-1.2.txt) D
+/R1 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/index.xhtml) D
+/R2 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-parser-guide.pdf) D
+/R3 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-parser-guide.ps) D
+/R1 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/) D
+/R2 (http://wiki.codesynthesis.com/Tree/Customization_guide) D
+/R3 (http://wiki.codesynthesis.com/Tree/FAQ) D
+/R4 (https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml) D
+/R5 (https://cppget.org/xsd-examples) D
+/R6 (https://www.codesynthesis.com/mailman/listinfo/xsd-users) D
+/R7 (https://www.codesynthesis.com/pipermail/xsd-users/) D
+/R8 (http://www.w3.org/TR/xmlschema-0/) D
+/R9 (https://cppget.org/libxsd) D
+/R10 (http://www.doxygen.org/) D
+/R11 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/hello/html/annotated.html) D
+/R12 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.11) D
+/R13 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8.4) D
+/R14 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8) D
+/R15 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.5) D
+/R16 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.9) D
+/R17 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#3) D
+/R18 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#3.3) D
+/R19 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#4) D
+/R20 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#4.4) D
+/TS {
+ tables E get /table E D
+ table aload pop /rdesc E D /cdesc E D /tdesc E D
+ tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
+ /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
+ /flow E D /clear E D /tclass E D pop pop
+ /w W D /eps 0.1 D /OU f D /PL 1 D
+ /FN EF 21 get D EZ 21 get Ey 21 get FS
+ 0 1 1{
+ /pass E D
+ 0 1 nrow{
+ /irow E D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ cell aload pop /ang E D /CB E D pop pop pop
+ /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
+ /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
+ /cmin E D /proc E D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ pass 0 eq cspan 1 eq and pass 1 eq cspan 1 gt and or{
+ /W 1e5 D /LL W D /PH 1 D
+ ctype 1 eq{() BD}if
+ RC align NA
+ AT 4 eq{/CD t D /DC dp D /LN 0 D /M1 0 D /M2 0 D}{/CD f D}ie
+ 0 0 M /LM 0 D proc exec BN
+ AT 4 eq{
+ LN array astore cell 15 3 -1 roll put
+ cdesc icol get dup dup 5 get M1 lt{5 M1 put}{5 get /M1 E D}ie
+ dup 6 get M2 lt{6 M2 put}{6 get /M2 E D}ie
+ /LM M1 M2 add D
+ }if
+ /CD f D
+ ang 0 ne{/LM CP E pop neg D}if
+ /thiswid LM left add right add eps add D
+ /oldmin 0 D /oldmax 0 D
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 2 get /oldmax E oldmax add D
+ 1 get /oldmin E oldmin add D
+ }for
+ thiswid oldmax ge{
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 2 E 2 get oldmax 0 eq
+ {pop thiswid cspan div}{thiswid mul oldmax div}ie
+ put
+ }for
+ }if
+ nowrap 1 eq{
+ thiswid oldmin ge{
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 1 E 1 get oldmin 0 eq
+ {pop thiswid cspan div}{thiswid mul oldmin div}ie
+ put
+ }for
+ }if
+ }{
+ /W 0 D /LL W D /PH 2 D
+ ctype 1 eq{() ES () BD}if
+ 0 0 M /LM 0 D RC proc exec BN
+ /thiswid LM left add right add eps add D
+ thiswid oldmin ge{
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 1 E 1 get oldmin 0 eq
+ {pop thiswid cspan div}{thiswid mul oldmin div}ie
+ put
+ }for
+ }if
+ }ie
+ ctype 1 eq{() ES}if
+ }if
+ }if
+ }for
+ }for
+ }for
+ /tmin 0 D /tmax 0 D
+ 0 1 ncol{
+ cdesc E get dup 1 get E 2 get 2 copy gt{pop dup}if
+ tmax add /tmax E D tmin add /tmin E D
+ }for
+ twid 0 lt{twid neg IW gt{IW neg}{twid}ie /twid E D}if
+ tdesc 0 twid neg tmin 2 copy lt{E}if pop put
+ tdesc 1 twid neg tmax 2 copy lt{E}if pop put
+ /W w D /LL W D /OU t D /PH 0 D /PL 0 D
+} D
+/PT {
+ /PL PL 1 add D
+ tables E get /table E D Tm 21 get Ts mul BE
+ PL 2 ge{save}if
+ /SL SL 1 add D /FN EF 21 get D EZ 21 get Ey 21 get FS
+ table aload pop /rdesc E D /cdesc E D /tdesc E D
+ tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
+ /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
+ /flow E D /clear E D /tclass E D /tmax E D /tmin E D
+ /w W D /xo XO D /mr MR D /ll LL D /lg LG D /ai AI D /bc BC D /nr NR D /ar AR D
+ /tr TR D /ui UI D /ph PH D /a0 A0 D /pf PF D /at AT D /av AV D /al AL D
+ /Le LE D /la La D
+ talign 0 lt{/talign AL 0 gt{AV AL get}{A0 2 le{A0}{0}ie}ie D}if
+ ph 1 eq ph 2 eq or{
+ NL ph 1 eq{tmax}{tmin}ie dup XO add LM gt{/LM E XO add D}{pop}ie LM E
+ }{
+ /PH 3 D /LE 1e5 D RC %ZF
+ border 0 gt{/border 1 D}if
+ /twidth 0 D /avail W xo sub D
+ twid 0 eq{0 1 ncol{cdesc E get dup 2 get E 3 get dup 0 gt{div neg dup twid lt
+ {/twid E D}{pop}ie}{pop pop}ie}for}if
+ /twid twid dup 0 lt{neg avail 2 copy gt{E}if pop}{avail mul}ie D
+ /OK t D 0 1 ncol{cdesc E get dup 1 get E 3 get twid mul gt{/OK f D}if}for
+ 0 1 ncol{
+ cdesc E get dup 1 get /colmin E D dup 3 get /cwid E twid mul D dup
+ tmax avail le{2 get}if
+ tmin avail le tmax avail gt and{
+ dup 2 get E 1 get dup 3 1 roll sub avail tmin sub mul tmax tmin sub div add
+ }if
+ tmin avail gt{1 get}if
+ 0 E colmin cwid lt OK and{pop cwid}if dup /twidth E twidth add D put
+ }for
+ /OU f D CP
+ tmin twid le{
+ 0 1 ncol{cdesc E get dup 0 get twidth div twid mul 0 E put}for
+ /twidth twid D
+ }if
+ CP printcap CP E pop sub /caphig E D pop
+ 0 1 1{
+ /pass E D
+ 0 1 nrow{
+ /irow E D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ cell aload pop /ang E D /CB E D pop pop pop
+ /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
+ /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
+ /cmin E D /proc E D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ /W 0 D
+ 0 1 cspan 1 sub{icol add cdesc E get 0 get /W E W add D}for
+ pass 0 eq rspan 1 eq and pass 1 eq rspan 1 gt and or{
+ ctype 1 eq{() BD}if
+ /W W left sub right sub D /XO 0 D /EO 0 D SI
+ /A0 align D RC align NA
+ AT 4 eq{
+ /DC dp D /DO 0 D /ID 1 D
+ 0 1 DV length 1 sub{DV E get dup DO gt{/DO E D}{pop}ie}for
+ /Lo DO DV 0 get sub D /L1 Lo D
+ }if
+ 0 0 M /BP t D /Fl t D /MF 0 D /FB 0 D
+ proc exec T not{/CI 0 D}if BN 0 FB neg R MF 0 eq{/MF CS D}if
+ CP /thishig E neg bot add top add CI add D pop
+ ang 0 ne{/thishig LM bot add top add D}if
+ cell 16 MF put cell 17 Ya put cell 18 thishig put
+ valign 4 eq{
+ /below thishig Ya sub D
+ rdesc irow get dup dup 4 get Ya lt
+ {4 Ya put}{4 get /Ya E D}ie
+ dup 5 get below lt{5 below put}{5 get /below E D}ie
+ /thishig Ya below add D
+ }if
+ ctype 1 eq{()ES}if
+ /oldhig 0 D
+ 0 1 rspan 1 sub{
+ irow add rdesc E get 0 get /oldhig E oldhig add D
+ }for
+ thishig oldhig ge{
+ 0 1 rspan 1 sub{
+ irow add rdesc E get dup 0 E 0 get oldhig 0 eq
+ {pop thishig rspan div}{thishig mul oldhig div}ie
+ put
+ }for
+ }if
+ }if
+ }if
+ }for
+ }for
+ }for M RC %ZF
+ /thight 0 D /racc 0 D /maxh 0 D /brk 0 D /rbeg nhead nfoot add D
+ 0 1 nrow{
+ rdesc E get dup 0 get dup /thight E thight add D
+ brk 0 eq{/racc E D}{/racc E racc add D}ie
+ racc maxh gt{/maxh racc D}if 2 get /brk E D
+ }for
+ ph 3 ge{thight caphig add E}if
+ ph 0 eq ph 4 eq or{
+ /PH 4 D /LE Le D /OU Ou D /yoff 0 D /headsz 0 D
+ 0 1 nhead 1 sub{rdesc E get 0 get headsz add /headsz E D}for
+ /footsz 0 D
+ 0 1 nfoot 1 sub{rdesc E nhead add get 0 get footsz add /footsz E D}for
+ /ahig LE BO add MI add D /maxh maxh headsz add footsz add D
+ /thight thight headsz add footsz add D
+ tmin avail gt maxh ahig gt or
+ {/Sf avail tmin div dup ahig maxh div gt{pop ahig maxh div}if D /SA t D}
+ {/Sf 1 D}ie
+ tclass 1 eq thight LE 15 sub gt and
+ {/SA t D LE 15 sub thight div dup Sf lt{/Sf E D}{pop}ie}if
+ SA{Sf Sf scale /ll ll Sf div D /xo xo Sf div D /LE LE Sf div D
+ /mr mr Sf div D /BO BO Sf div D /ahig ahig Sf div D}if
+ nhead nfoot add getwid
+ LE CP E pop add capalg 0 eq{caphig sub}if
+ bT{f}{dup thight lt thight ahig lt and}ie
+ E headsz sub footsz sub rwid lt or{NP}if
+ capalg 0 eq{printcap -8 SP}if
+ CP /ycur E D pop
+ printhead
+ rbeg 1 nrow{/row E D row
+ getwid
+ ycur yoff add rwid sub footsz sub LE add 0 lt
+ {nfoot 0 gt{printfoot}if Tf NP /rbeg irow1 D
+ Ba{MI /MI MI SA{Sf div}if D MI SP /MI E D}if
+ CP /ycur E D pop /yoff 0 D printhead}if
+ irow1 printrow
+ }for
+ printfoot /row row 1 add D Tf
+ 0 ycur yoff add M
+ capalg 1 eq{/EO 0 D SI -3 SP printcap}if
+ Sf 1 lt{1 Sf div dup scale /ll ll Sf mul D /xo xo Sf mul D /LE LE Sf mul D
+ /mr mr Sf mul D /BO BO Sf mul D /SA f D}if
+ /EO 0 D
+ }if
+ }ie
+ /W w D /XO xo D /MR mr D /LL ll D /LG lg D /AI ai D /BC bc D /NR nr D /AR ar D
+ /TR tr D /UI ui D /PH ph D /A0 a0 D /PF pf D /AT at D /AV av D /AL al D
+ /La la D
+ /SL SL 1 sub NN D /CF 0 D /FN 0 D SZ SL get FR SL get FS Wf not{()F2}if
+ PL 2 ge{Ms E restore Ms or /Ms E D PH 1 eq PH 2 eq or
+ {/LM E D}if PH 3 ge{/CI 0 D NL 0 E neg R}if
+ }if
+ /PL PL 1 sub D /CI 0 D /BP f D /PO f D () Bm 21 get Ts mul BE BL %CF CS SF
+} D
+/printcap{
+ capalg 0 ge{
+ SA{/W w Sf div D}
+ {talign 1 eq{/XO xo ll twidth sub 2 div add D}if
+ talign 2 eq{/XO xo ll twidth sub add D}if
+ /W XO twidth add D
+ }ie /XO xo D /LL W XO sub MR sub D
+ /PA f D /Fl capalg 0 eq D
+ 1 NA BL caption exec BN OA /PA t D
+ }if
+} D
+/getwid{
+ /irow1 E D
+ /irow2 irow1 D
+ /rwid 0 D
+ {rdesc irow2 get dup 0 get rwid add /rwid E D 2 get 0 eq
+ {exit}{/irow2 irow2 1 add D}ie
+ }loop
+} D
+/printrow{
+ /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
+ /xleft xoff xo add D
+ /irow E D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ cell aload pop /ang E D /CB E D /cvsize E D /above E D /fontsz E D
+ /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
+ /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
+ /cmin E D /proc E D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ /width 0 D
+ 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
+ /rhight rdesc irow get 0 get D
+ /hight rhight D
+ 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
+ /W xo xoff add width add right sub D
+ ang 0 ne{/W xo xoff add hight add right sub D}if
+ /EO xo xoff add left add D SI
+ Cf{
+ gsave CB VC xo xoff add ycur yoff add M
+ 0 hight neg RL width 0 RL 0 hight RL width neg 0 RL fill
+ grestore
+ }if
+ ctype 1 eq{() BD}if
+ /A0 align D RC
+ AT 4 eq{
+ /DC dp D /ID 1 D /DO cdesc icol get 5 get D /Lo DO DV 0 get sub D /L1 Lo D
+ }if
+ ang 0 ne{
+ gsave ang 90 eq
+ {xoff ycur add hight cvsize sub 2 div sub ycur hight sub xoff sub}
+ {xoff ycur sub width add hight cvsize sub 2 div add ycur xoff add}ie
+ translate ang rotate
+ }if
+ valign 3 le{0 ycur yoff add top sub
+ hight cvsize sub valign 1 sub mul 2 div sub M}
+ {0 ycur yoff add top sub above add rdesc irow get 4 get sub M}ie
+ /PA f D /BP t D /Fl t D
+ BL proc exec BN
+ ang 0 ne{grestore}if
+ /PA t D
+ ctype 1 eq{() ES}if
+ }if
+ /xoff xoff cdesc icol get 0 get add D
+ }for
+ /yoff yoff rhight sub D
+} D
+/printhead {0 1 nhead 1 sub{printrow}for} D
+/printfoot {nhead 1 nhead nfoot add 1 sub{printrow}for} D
+/Tf {
+ OU{rules 2 ge{/yoff 0 D
+ gsave 0 Sg
+ [0 1 nhead 1 sub{}for rbeg 1 row 1 sub{}for nhead 1 nhead nfoot add 1 sub{}for]{
+ /irow E D
+ /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ /rspan cell 6 get D
+ /cspan cell 5 get D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ /width 0 D
+ 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
+ /rhight rdesc irow get 0 get D
+ /hight rhight D
+ 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
+ xo xoff add width add ycur yoff add M
+ 0 hight neg icol cspan add 1 sub ncol lt
+ {cdesc icol 1 add get 4 get dup rules 3 le{1 eq}{pop t}ie
+ {1 eq{0.8}{0.3}ie
+ LW RL CP stroke M}{pop R}ie}{R}ie
+ irow nhead nfoot add 1 sub ne nfoot 0 eq or
+ {irow rspan add 1 sub nrow lt
+ {rdesc irow rspan add get 3 get}{nfoot 0 eq{0}{1}ie}ie
+ dup rules 2 mod 0 eq{1 eq}{pop t}ie
+ {1 eq irow rspan add nhead eq or irow rspan add row eq nfoot 0 gt and or
+ {0.8}{0.3}ie LW width neg 0 RL CP stroke M}{pop}ie}if
+ }if
+ /xoff xoff cdesc icol get 0 get add D
+ }for
+ /yoff yoff rhight sub D
+ }forall
+ grestore
+ /Ms t D
+ }if
+ frame 1 gt{
+ gsave
+ 1 LW 0 Sg
+ xleft ycur M CP BB
+ 0 yoff frame 5 eq frame 7 ge or{RL}{R}ie
+ twidth 0 frame 3 eq frame 4 eq or frame 8 ge or{RL}{R}ie CP BB
+ 0 yoff neg frame 6 ge{RL}{R}ie
+ twidth neg 0 frame 2 eq frame 4 eq or frame 8 ge or{RL}{R}ie
+ closepath stroke
+ grestore
+ /Ms t D
+ }if
+ }if
+} D
+/tables [[[0 0 0 0 0 -1 0 0 1 55 2 0 0 9 5 {()} -1]
+ [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
+ [[0 0 0 0 0 0 [[{()0 Sl()WB(XML Schema type)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(Alias in the )SM(xml_schema)ES( names)HY(pace)YH()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(C++ type
+ )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(fixed-length inte)HY(gral)YH( types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(signed\240char)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(unsigned)HY(Byte)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned_byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned\240char)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(short_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(short)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(unsigned)HY(Short)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned_short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned\240short)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(int_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(int)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(unsignedInt)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned_int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned\240int)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(long_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(unsigned)HY(Long)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned_long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned\240long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(arbi)HY(trary)YH(-length inte)HY(gral)YH( types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(nonPos)HY(i)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(non_posi)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(nonNeg)HY(a)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(non_nega)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(posi)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(posi)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(unsigned long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(nega)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(nega)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(boolean types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(bool)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(fixed-preci)HY(sion)YH( float)HY(ing)YH(-point types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(float)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(float_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(float)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(double)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(double_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(double)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(arbi)HY(trary)YH(-preci)HY(sion)YH( float)HY(ing)YH(-point types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(double)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(string types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(std::basic_string)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(normal)HY(ized)HY(String)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(normal)HY(ized)YH(_string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(string)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type\240derived\240from\240)SM(normal)HY(ized)YH(_string)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(Name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(token)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(NMTOKEN)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(nmtoken)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(token)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(NMTO)HY(KENS)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(nmto)HY(kens)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(sequence<nmtoken>)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(NCName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(ncname)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(name)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(token)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(qual)HY(i)HY(fied)YH( name
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(QName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(qname)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::qname)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(ID/IDREF types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(ID)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(id)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(ncname)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(IDREF)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(idref)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(ncname)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(IDREFS)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(idrefs)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(sequence<idref>)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(URI types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(anyURI)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(uri)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(std::basic_string)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(binary types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(base64Binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(base64_binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::base64_binary)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(hexBi)HY(nary)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(hex_binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::hex_binary)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(date/time types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::date)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(date)HY(Time)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(date_time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::date_time)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::dura)HY(tion)YH()ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(gDay)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(gday)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::gday)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(gMonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(gmonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::gmonth)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(gMon)HY(th)HY(Day)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(gmonth_day)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::gmonth_day)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(gYear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(gyear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::gyear)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(gYear)HY(Month)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(gyear_month)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::gyear_month)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(xml_schema::time)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB(entity types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(ENTITY)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(entity)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(name)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()0 Sl()WB()SM(ENTI)HY(TIES)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB()SM(enti)HY(ties)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()0 Sl()WB(type derived from )SM(sequence<entity>)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+]]
+] D
+0 1 0{TS}for RC ZF
+/Ba f D /BO 0 D Bs
+/UR (/home/boris/work/xsd/builds/gcc8-host/xsd/doc/cxx/tree/guide/index.xhtml) D
+/Ti (C++/Tree Mapping Getting Started Guide) D
+/Au () D
+/Df f D
+/ME [] D
+Pt
+/BO 0 D TC /Ba f D Bs /AU f D /UR () D RC ZF
+ tH WB
+ND 1 gt{Ts 3 mul Np 0()0 C()BD(C++/Tree Mapping Getting Started Guide)ES()0 1 TN()EA()BN}if
+1 NH le{40(1\240\240)1 C(Preface)WB 3 Sn()40 1 TN()EA()BN}if
+2 NH le{41(1.1\240\240)2 C(About)WB 4 Sn( This Docu)HY(ment)YH()41 1 TN()EA()BN}if
+2 NH le{42(1.2\240\240)2 C(More)WB 5 Sn( Infor)HY(ma)HY(tion)YH()42 1 TN()EA()BN}if
+1 NH le{43(2\240\240)1 C(1)WB 6 Sn( Intro)HY(duc)HY(tion)YH()43 1 TN()EA()BN}if
+2 NH le{44(2.1\240\240)2 C(1.1)WB 7 Sn( Mapping Overview)44 1 TN()EA()BN}if
+2 NH le{45(2.2\240\240)2 C(1.2)WB 8 Sn( Bene)HY(fits)YH()45 1 TN()EA()BN}if
+1 NH le{46(3\240\240)1 C(2)WB 9 Sn( Hello World Example)46 1 TN()EA()BN}if
+2 NH le{47(3.1\240\240)2 C(2.1)WB 10 Sn( Writing XML Docu)HY(ment)YH( and Schema)47 1 TN()EA()BN}if
+2 NH le{48(3.2\240\240)2 C(2.2)WB 11 Sn( Trans)HY(lat)HY(ing)YH( Schema to C++)48 1 TN()EA()BN}if
+2 NH le{49(3.3\240\240)2 C(2.3)WB 12 Sn( Imple)HY(ment)HY(ing)YH( Appli)HY(ca)HY(tion)YH( Logic)49 1 TN()EA()BN}if
+2 NH le{50(3.4\240\240)2 C(2.4)WB 13 Sn( Compil)HY(ing)YH( and Running)50 1 TN()EA()BN}if
+2 NH le{51(3.5\240\240)2 C(2.5)WB 14 Sn( Adding Seri)HY(al)HY(iza)HY(tion)YH()51 1 TN()EA()BN}if
+2 NH le{52(3.6\240\240)2 C(2.6)WB 15 Sn( Select)HY(ing)YH( Naming Conven)HY(tion)YH()52 1 TN()EA()BN}if
+2 NH le{53(3.7\240\240)2 C(2.7)WB 16 Sn( Gener)HY(at)HY(ing)YH( Docu)HY(men)HY(ta)HY(tion)YH()53 1 TN()EA()BN}if
+1 NH le{54(4\240\240)1 C(3)WB 17 Sn( Overall Mapping Config)HY(u)HY(ra)HY(tion)YH()54 1 TN()EA()BN}if
+2 NH le{55(4.1\240\240)2 C(3.1)WB 18 Sn( C++ Stan)HY(dard)YH()55 1 TN()EA()BN}if
+2 NH le{56(4.2\240\240)2 C(3.2)WB 19 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()56 1 TN()EA()BN}if
+2 NH le{57(4.3\240\240)2 C(3.3)WB 20 Sn( Support for Poly)HY(mor)HY(phism)YH()57 1 TN()EA()BN}if
+2 NH le{58(4.4\240\240)2 C(3.4)WB 21 Sn( Names)HY(pace)YH( Mapping)58 1 TN()EA()BN}if
+2 NH le{59(4.5\240\240)2 C(3.5)WB 22 Sn( Thread Safety)59 1 TN()EA()BN}if
+1 NH le{60(5\240\240)1 C(4)WB 23 Sn( Working with Object Models)60 1 TN()EA()BN}if
+2 NH le{61(5.1\240\240)2 C(4.1)WB 24 Sn( Attribute and Element Cardi)HY(nal)HY(i)HY(ties)YH()61 1 TN()EA()BN}if
+2 NH le{62(5.2\240\240)2 C(4.2)WB 25 Sn( Access)HY(ing)YH( the Object Model)62 1 TN()EA()BN}if
+2 NH le{63(5.3\240\240)2 C(4.3)WB 26 Sn( Modi)HY(fy)HY(ing)YH( the Object Model)63 1 TN()EA()BN}if
+2 NH le{64(5.4\240\240)2 C(4.4)WB 27 Sn( Creat)HY(ing)YH( the Object Model from Scratch)64 1 TN()EA()BN}if
+2 NH le{65(5.5\240\240)2 C(4.5)WB 28 Sn( Mapping for the Built-in XML Schema Types)65 1 TN()EA()BN}if
+1 NH le{66(6\240\240)1 C(5)WB 30 Sn( Parsing)66 1 TN()EA()BN}if
+2 NH le{67(6.1\240\240)2 C(5.1)WB 31 Sn( XML Schema Vali)HY(da)HY(tion)YH( and Search)HY(ing)YH()67 1 TN()EA()BN}if
+2 NH le{68(6.2\240\240)2 C(5.2)WB 32 Sn( Error Handling)68 1 TN()EA()BN}if
+1 NH le{69(7\240\240)1 C(6)WB 33 Sn( Seri)HY(al)HY(iza)HY(tion)YH()69 1 TN()EA()BN}if
+2 NH le{70(7.1\240\240)2 C(6.1)WB 34 Sn( Names)HY(pace)YH( and Schema Infor)HY(ma)HY(tion)YH()70 1 TN()EA()BN}if
+2 NH le{71(7.2\240\240)2 C(6.2)WB 35 Sn( Error Handling)71 1 TN()EA()BN}if
+/OU t D /Cb Db D NP Ep ET
+/Cb Db D /Ct [16#00 16#00 16#00] D /Cl [16#00 16#00 16#00] D /CL -1 D Ct Sc
+
+/Ba f D /BO 0 D Bs
+/UR (/home/boris/work/xsd/builds/gcc8-host/xsd/doc/cxx/tree/guide/index.xhtml) D
+/Ti (C++/Tree Mapping Getting Started Guide) D
+/Au () D
+/Df f D
+/ME [] D
+
+NP RC ZF
+()0 Sl()WB 0 Sn(
+
+)BR()WB 1 Sn( )BR()WB 2 Sn(
+
+
+ )0 1 0 H(Preface)WB 40 Sn()WB 3 Sn()EA()EH(
+
+ )0 2 1 H(About)WB 41 Sn()WB 4 Sn( This Docu)HY(ment)YH()EA()EH(
+
+ )0 P(The goal of this docu)HY(ment)YH( is to provide you with an under)HY(stand)HY(ing)YH( of
+ the C++/Tree program)HY(ming)YH( model and allow you to effi)HY(ciently)YH( eval)HY(u)HY(ate)YH(
+ XSD against your project's tech)HY(ni)HY(cal)YH( require)HY(ments)YH(. As such, this
+ docu)HY(ment)YH( is intended for C++ devel)HY(op)HY(ers)YH( and soft)HY(ware)YH( archi)HY(tects)YH(
+ who are looking for an XML process)HY(ing)YH( solu)HY(tion)YH(. For a more in-depth
+ descrip)HY(tion)YH( of the C++/Tree mapping refer to the
+ )R1 2 A(C++/Tree
+ Mapping User Manual)EA(.)EP(
+
+ )0 P(Prior expe)HY(ri)HY(ence)YH( with XML and C++ is required to under)HY(stand)YH( this
+ docu)HY(ment)YH(. Basic under)HY(stand)HY(ing)YH( of XML Schema is advan)HY(ta)HY(geous)YH( but
+ not expected or required.
+ )EP(
+
+
+ )0 2 2 H(More)WB 42 Sn()WB 5 Sn( Infor)HY(ma)HY(tion)YH()EA()EH(
+
+ )0 P(Beyond this guide, you may also find the follow)HY(ing)YH( sources of
+ infor)HY(ma)HY(tion)YH( useful:)EP(
+
+ )UL( )-1 LI()R1 2 A(C++/Tree
+ Mapping User Manual)EA(
+
+ )-1 LI()R2 2 A(C++/Tree
+ Mapping Customiza)HY(tion)YH( Guide)EA(
+
+ )-1 LI()R3 2 A(C++/Tree
+ Mapping Frequently Asked Ques)HY(tions)YH( \201FAQ\202)EA(
+
+ )-1 LI()R4 2 A(XSD
+ Compiler Command Line Manual)EA(
+
+ )-1 LI(The )SM(cxx/tree/)ES( direc)HY(tory)YH( in the
+ )R5 2 A(xsd-exam)HY(ples)YH()EA( package
+ contains a collec)HY(tion)YH( of exam)HY(ples)YH( and a README file with an overview
+ of each example.
+
+ )-1 LI(The )SM(README)ES( file in the
+ )R5 2 A(xsd-exam)HY(ples)YH()EA( package
+ explains how to build the exam)HY(ples)YH(.
+
+ )-1 LI(The )R6 2 A(xsd-users)EA(
+ mailing list is the place to ask tech)HY(ni)HY(cal)YH( ques)HY(tions)YH( about XSD and the C++/Parser mapping.
+ Further)HY(more)YH(, the )R7 2 A(archives)EA(
+ may already have answers to some of your ques)HY(tions)YH(.
+ )LU(
+
+
+
+ )0 1 3 H(1)WB 43 Sn()WB 6 Sn( Intro)HY(duc)HY(tion)YH()EA()EH(
+
+ )0 P(Welcome to CodeSyn)HY(the)HY(sis)YH( XSD and the C++/Tree mapping. XSD is a
+ cross-plat)HY(form)YH( W3C XML Schema to C++ data binding compiler. C++/Tree
+ is a W3C XML Schema to C++ mapping that repre)HY(sents)YH( the data stored
+ in XML as a stat)HY(i)HY(cally)YH(-typed, vocab)HY(u)HY(lary)YH(-specific object model.
+ )EP(
+
+ )0 2 4 H(1.1)WB 44 Sn()WB 7 Sn( Mapping Overview)EA()EH(
+
+ )0 P(Based on a formal descrip)HY(tion)YH( of an XML vocab)HY(u)HY(lary)YH( \201schema\202, the
+ C++/Tree mapping produces a tree-like data struc)HY(ture)YH( suit)HY(able)YH( for
+ in-memory process)HY(ing)YH(. The core of the mapping consists of C++
+ classes that consti)HY(tute)YH( the object model and are derived from
+ types defined in XML Schema as well as XML parsing and
+ seri)HY(al)HY(iza)HY(tion)YH( code.)EP(
+
+ )0 P(Besides the core features, C++/Tree provide a number of addi)HY(tional)YH(
+ mapping elements that can be useful in some appli)HY(ca)HY(tions)YH(. These
+ include seri)HY(al)HY(iza)HY(tion)YH( and extrac)HY(tion)YH( to/from formats others than
+ XML, such as unstruc)HY(tured)YH( text \201useful for debug)HY(ging)YH(\202 and binary
+ repre)HY(sen)HY(ta)HY(tions)YH( such as XDR and CDR for high-speed data process)HY(ing)YH(
+ as well as auto)HY(matic)YH( docu)HY(men)HY(ta)HY(tion)YH( gener)HY(a)HY(tion)YH(. The C++/Tree mapping
+ also provides a wide range of mech)HY(a)HY(nisms)YH( for control)HY(ling)YH( and
+ customiz)HY(ing)YH( the gener)HY(ated)YH( code.)EP(
+
+ )0 P(A typical appli)HY(ca)HY(tion)YH( that uses C++/Tree for XML process)HY(ing)YH( usually
+ performs the follow)HY(ing)YH( three steps: it first reads \201parses\202 an XML
+ docu)HY(ment)YH( to an in-memory object model, it then performs some useful
+ compu)HY(ta)HY(tions)YH( on that object model which may involve modi)HY(fi)HY(ca)HY(tion)YH(
+ of the model, and finally it may write \201seri)HY(al)HY(ize)YH(\202 the modi)HY(fied)YH(
+ object model back to XML.)EP(
+
+ )0 P(The next chapter presents a simple appli)HY(ca)HY(tion)YH( that performs these
+ three steps. The follow)HY(ing)YH( chap)HY(ters)YH( show how to use the C++/Tree
+ mapping in more detail.)EP(
+
+ )0 2 5 H(1.2)WB 45 Sn()WB 8 Sn( Bene)HY(fits)YH()EA()EH(
+
+ )0 P(Tradi)HY(tional)YH( XML access APIs such as Docu)HY(ment)YH( Object Model \201DOM\202
+ or Simple API for XML \201SAX\202 have a number of draw)HY(backs)YH( that
+ make them less suit)HY(able)YH( for creat)HY(ing)YH( robust and main)HY(tain)HY(able)YH(
+ XML process)HY(ing)YH( appli)HY(ca)HY(tions)YH(. These draw)HY(backs)YH( include:
+ )EP(
+
+ )UL( )-1 LI(Generic repre)HY(sen)HY(ta)HY(tion)YH( of XML in terms of elements, attributes,
+ and text forces an appli)HY(ca)HY(tion)YH( devel)HY(oper)YH( to write a substan)HY(tial)YH(
+ amount of bridg)HY(ing)YH( code that iden)HY(ti)HY(fies)YH( and trans)HY(forms)YH( pieces
+ of infor)HY(ma)HY(tion)YH( encoded in XML to a repre)HY(sen)HY(ta)HY(tion)YH( more suit)HY(able)YH(
+ for consump)HY(tion)YH( by the appli)HY(ca)HY(tion)YH( logic.
+
+ )-1 LI(String-based flow control defers error detec)HY(tion)YH( to runtime.
+ It also reduces code read)HY(abil)HY(ity)YH( and main)HY(tain)HY(abil)HY(ity)YH(.
+
+ )-1 LI(Lack of type safety because the data is repre)HY(sented)YH( as text.
+
+ )-1 LI(Result)HY(ing)YH( appli)HY(ca)HY(tions)YH( are hard to debug, change, and
+ main)HY(tain)YH(.
+ )LU(
+
+ )0 P(In contrast, stat)HY(i)HY(cally)YH(-typed, vocab)HY(u)HY(lary)YH(-specific object model
+ produced by the C++/Tree mapping allows you to operate in your
+ domain terms instead of the generic elements, attributes, and
+ text. Static typing helps catch errors at compile-time rather
+ than at run-time. Auto)HY(matic)YH( code gener)HY(a)HY(tion)YH( frees you for more
+ inter)HY(est)HY(ing)YH( tasks \201such as doing some)HY(thing)YH( useful with the
+ infor)HY(ma)HY(tion)YH( stored in the XML docu)HY(ments)YH(\202 and mini)HY(mizes)YH( the
+ effort needed to adapt your appli)HY(ca)HY(tions)YH( to changes in the
+ docu)HY(ment)YH( struc)HY(ture)YH(. To summa)HY(rize)YH(, the C++/Tree object model has
+ the follow)HY(ing)YH( key advan)HY(tages)YH( over generic XML access APIs:)EP(
+
+ )UL( )-1 LI()BD(Ease of use.)ES( The gener)HY(ated)YH( code hides all the complex)HY(ity)YH(
+ asso)HY(ci)HY(ated)YH( with parsing and seri)HY(al)HY(iz)HY(ing)YH( XML. This includes navi)HY(gat)HY(ing)YH(
+ the struc)HY(ture)YH( and convert)HY(ing)YH( between the text repre)HY(sen)HY(ta)HY(tion)YH( and
+ data types suit)HY(able)YH( for manip)HY(u)HY(la)HY(tion)YH( by the appli)HY(ca)HY(tion)YH(
+ logic.
+
+ )-1 LI()BD(Natural repre)HY(sen)HY(ta)HY(tion)YH(.)ES( The object repre)HY(sen)HY(ta)HY(tion)YH( allows
+ you to access the XML data using your domain vocab)HY(u)HY(lary)YH( instead
+ of generic elements, attributes, and text.
+
+ )-1 LI()BD(Concise code.)ES( With the object repre)HY(sen)HY(ta)HY(tion)YH( the
+ appli)HY(ca)HY(tion)YH( imple)HY(men)HY(ta)HY(tion)YH( is simpler and thus easier
+ to read and under)HY(stand)YH(.
+
+ )-1 LI()BD(Safety.)ES( The gener)HY(ated)YH( object model is stat)HY(i)HY(cally)YH(
+ typed and uses func)HY(tions)YH( instead of strings to access the
+ infor)HY(ma)HY(tion)YH(. This helps catch program)HY(ming)YH( errors at compile-time
+ rather than at runtime.
+
+ )-1 LI()BD(Main)HY(tain)HY(abil)HY(ity)YH(.)ES( Auto)HY(matic)YH( code gener)HY(a)HY(tion)YH( mini)HY(mizes)YH( the
+ effort needed to adapt the appli)HY(ca)HY(tion)YH( to changes in the
+ docu)HY(ment)YH( struc)HY(ture)YH(. With static typing, the C++ compiler
+ can pin-point the places in the client code that need to be
+ changed.
+
+ )-1 LI()BD(Compat)HY(i)HY(bil)HY(ity)YH(.)ES( Sequences of elements are repre)HY(sented)YH( in
+ the object model as contain)HY(ers)YH( conform)HY(ing)YH( to the stan)HY(dard)YH( C++
+ sequence require)HY(ments)YH(. This makes it possi)HY(ble)YH( to use stan)HY(dard)YH(
+ C++ algo)HY(rithms)YH( on the object repre)HY(sen)HY(ta)HY(tion)YH( and frees you from
+ learn)HY(ing)YH( yet another container inter)HY(face)YH(, as is the case with
+ DOM.
+
+ )-1 LI()BD(Effi)HY(ciency)YH(.)ES( If the appli)HY(ca)HY(tion)YH( makes repet)HY(i)HY(tive)YH( use
+ of the data extracted from XML, then the C++/Tree object model
+ is more effi)HY(cient)YH( because the navi)HY(ga)HY(tion)YH( is performed using
+ func)HY(tion)YH( calls rather than string compar)HY(isons)YH( and the XML
+ data is extracted only once. Further)HY(more)YH(, the runtime memory
+ usage is reduced due to more effi)HY(cient)YH( data storage
+ \201for instance, storing numeric data as inte)HY(gers)YH( instead of
+ strings\202 as well as the static knowl)HY(edge)YH( of cardi)HY(nal)HY(ity)YH(
+ constraints.
+ )LU(
+
+
+
+
+
+ )0 1 6 H(2)WB 46 Sn()WB 9 Sn( Hello World Example)EA()EH(
+
+ )0 P(In this chapter we will examine how to parse, access, modify, and
+ seri)HY(al)HY(ize)YH( a very simple XML docu)HY(ment)YH( using the XSD-gener)HY(ated)YH(
+ C++/Tree object model. The code presented in this chapter is
+ based on the )SM(hello)ES( example which can be found in
+ the )SM(cxx/tree/)ES( direc)HY(tory)YH( in the
+ )R5 2 A(xsd-exam)HY(ples)YH()EA( package.)EP(
+
+ )0 2 7 H(2.1)WB 47 Sn()WB 10 Sn( Writing XML Docu)HY(ment)YH( and Schema)EA()EH(
+
+ )0 P(First, we need to get an idea about the struc)HY(ture)YH(
+ of the XML docu)HY(ments)YH( we are going to process. Our
+ )SM(hello.xml)ES(, for example, could look like this:)EP(
+
+ ) 10 28 PR(<?xml version="1.0"?>
+<hello>
+
+ <greeting>Hello</greeting>
+
+ <name>sun</name>
+ <name>moon</name>
+ <name>world</name>
+
+</hello>)RP(
+
+ )0 P(Then we can write a descrip)HY(tion)YH( of the above XML in the
+ XML Schema language and save it into )SM(hello.xsd)ES(:)EP(
+
+ ) 13 70 PR(<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="hello_t">
+ <xs:sequence>
+ <xs:element name="greeting" type="xs:string"/>
+ <xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="hello" type="hello_t"/>
+
+</xs:schema>)RP(
+
+ )0 P(Even if you are not famil)HY(iar)YH( with XML Schema, it
+ should be easy to connect decla)HY(ra)HY(tions)YH( in )SM(hello.xsd)ES(
+ to elements in )SM(hello.xml)ES(. The )SM(hello_t)ES( type
+ is defined as a sequence of the nested )SM(greet)HY(ing)YH()ES( and
+ )SM(name)ES( elements. Note that the term sequence in XML
+ Schema means that elements should appear in a partic)HY(u)HY(lar)YH( order
+ as opposed to appear)HY(ing)YH( multi)HY(ple)YH( times. The )SM(name)ES(
+ element has its )SM(maxOc)HY(curs)YH()ES( prop)HY(erty)YH( set to
+ )SM(unbounded)ES( which means it can appear multi)HY(ple)YH( times
+ in an XML docu)HY(ment)YH(. Finally, the glob)HY(ally)YH(-defined )SM(hello)ES(
+ element prescribes the root element for our vocab)HY(u)HY(lary)YH(. For an
+ easily-approach)HY(able)YH( intro)HY(duc)HY(tion)YH( to XML Schema refer to
+ )R8 2 A(XML Schema Part 0:
+ Primer)EA(.)EP(
+
+ )0 P(The above schema is a spec)HY(i)HY(fi)HY(ca)HY(tion)YH( of our XML vocab)HY(u)HY(lary)YH(; it tells
+ every)HY(body)YH( what valid docu)HY(ments)YH( of our XML-based language should look
+ like. We can also update our )SM(hello.xml)ES( to include the
+ infor)HY(ma)HY(tion)YH( about the schema so that XML parsers can vali)HY(date)YH(
+ our docu)HY(ment)YH(:)EP(
+
+ ) 11 60 PR(<?xml version="1.0"?>
+<hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="hello.xsd">
+
+ <greeting>Hello</greeting>
+
+ <name>sun</name>
+ <name>moon</name>
+ <name>world</name>
+
+</hello>)RP(
+
+
+ )0 P(The next step is to compile the schema to gener)HY(ate)YH( the object
+ model and parsing func)HY(tions)YH(.)EP(
+
+ )0 2 8 H(2.2)WB 48 Sn()WB 11 Sn( Trans)HY(lat)HY(ing)YH( Schema to C++)EA()EH(
+
+ )0 P(Now we are ready to trans)HY(late)YH( our )SM(hello.xsd)ES( to C++.
+ To do this we invoke the XSD compiler from a termi)HY(nal)YH( \201UNIX\202 or
+ a command prompt \201Windows\202:
+ )EP(
+
+ ) 1 24 PR($ xsd cxx-tree hello.xsd)RP(
+
+ )0 P(The XSD compiler produces two C++ files: )SM(hello.hxx)ES( and
+ )SM(hello.cxx)ES(. The follow)HY(ing)YH( code frag)HY(ment)YH( is taken from
+ )SM(hello.hxx)ES(; it should give you an idea about what gets
+ gener)HY(ated)YH(:
+ )EP(
+
+ ) 45 60 PR(class hello_t
+{
+public:
+ // greeting
+ //
+ typedef xml_schema::string greeting_type;
+
+ const greeting_type&
+ greeting \201\202 const;
+
+ greeting_type&
+ greeting \201\202;
+
+ void
+ greeting \201const greeting_type& x\202;
+
+ // name
+ //
+ typedef xml_schema::string name_type;
+ typedef xsd::sequence<name_type> name_sequence;
+ typedef name_sequence::iterator name_iterator;
+ typedef name_sequence::const_iterator name_const_iterator;
+
+ const name_sequence&
+ name \201\202 const;
+
+ name_sequence&
+ name \201\202;
+
+ void
+ name \201const name_sequence& s\202;)WR(
+
+ // Constructor.
+ //
+ hello_t \201const greeting_type&\202;
+
+ ...
+
+};
+
+std::unique_ptr<hello_t>
+hello \201const std::string& uri\202;
+
+std::unique_ptr<hello_t>
+hello \201std::istream&\202;)RP(
+
+ )0 P(The )SM(hello_t)ES( C++ class corre)HY(sponds)YH( to the
+ )SM(hello_t)ES( XML Schema type. For each element
+ in this type a set of C++ type defi)HY(ni)HY(tions)YH( as well as
+ acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( are gener)HY(ated)YH( inside the
+ )SM(hello_t)ES( class. Note that the type defi)HY(ni)HY(tions)YH(
+ and member func)HY(tions)YH( for the )SM(greet)HY(ing)YH()ES( and
+ )SM(name)ES( elements are differ)HY(ent)YH( because of the
+ cardi)HY(nal)HY(ity)YH( differ)HY(ences)YH( between these two elements
+ \201)SM(greet)HY(ing)YH()ES( is a required single element and
+ )SM(name)ES( is a sequence of elements\202.)EP(
+
+ )0 P(The )SM(xml_schema::string)ES( type used in the type
+ defi)HY(ni)HY(tions)YH( is a C++ class provided by the XSD runtime
+ that corre)HY(sponds)YH( to built-in XML Schema type
+ )SM(string)ES(. The )SM(xml_schema::string)ES(
+ is based on )SM(std::string)ES( and can be used as
+ such. Simi)HY(larly)YH(, the )SM(sequence)ES( class template
+ that is used in the )SM(name_sequence)ES( type
+ defi)HY(ni)HY(tion)YH( is based on and has the same inter)HY(face)YH( as
+ )SM(std::vector)ES(. The mapping between the built-in
+ XML Schema types and C++ types is described in more detail in
+ )0 36 1 A(Section 4.5, "Mapping for the Built-in XML Schema
+ Types")36 0 TN TL()Ec /AF f D(. The )SM(hello_t)ES( class also includes a
+ construc)HY(tor)YH( with an initial)HY(izer)YH( for the required
+ )SM(greet)HY(ing)YH()ES( element as its argu)HY(ment)YH(.)EP(
+
+ )0 P(The )SM(hello)ES( over)HY(loaded)YH( global func)HY(tions)YH( corre)HY(spond)YH(
+ to the )SM(hello)ES( global element in XML Schema. A
+ global element in XML Schema is a valid docu)HY(ment)YH( root.
+ By default XSD gener)HY(ated)YH( a set of parsing func)HY(tions)YH( for each
+ global element defined in XML Schema \201this can be over)HY(rid)HY(den)YH(
+ with the )SM(--root-element-*)ES( options\202. Parsing
+ func)HY(tions)YH( return a dynam)HY(i)HY(cally)YH( allo)HY(cated)YH( object model as an
+ auto)HY(matic)YH( pointer. The actual pointer used depends on the
+ C++ stan)HY(dard)YH( selected. For C++11 it is )SM(std::unique_ptr)ES(
+ as shown above. For C++98 it is )SM(std::auto_ptr)ES(.
+ For example, if we modify our XSD compiler invo)HY(ca)HY(tion)YH( to
+ select C++98:)EP(
+
+ ) 1 36 PR($ xsd cxx-tree --std c++98 hello.xsd)RP(
+
+ )0 P(Then the parsing func)HY(tion)YH( signa)HY(tures)YH( will become:)EP(
+
+ ) 5 31 PR(std::auto_ptr<hello_t>
+hello \201const std::string& uri\202;
+
+std::auto_ptr<hello_t>
+hello \201std::istream&\202;)RP(
+
+ )0 P(For more infor)HY(ma)HY(tion)YH( on parsing func)HY(tions)YH( see )0 37 1 A(Chapter 5,
+ "Parsing")37 0 TN TL()Ec /AF f D(.)EP(
+
+ )0 2 9 H(2.3)WB 49 Sn()WB 12 Sn( Imple)HY(ment)HY(ing)YH( Appli)HY(ca)HY(tion)YH( Logic)EA()EH(
+
+ )0 P(At this point we have all the parts we need to do some)HY(thing)YH( useful
+ with the infor)HY(ma)HY(tion)YH( stored in our XML docu)HY(ment)YH(:
+ )EP(
+
+ ) 25 62 PR(#include <iostream>
+#include "hello.hxx"
+
+using namespace std;
+
+int
+main \201int argc, char* argv[]\202
+{
+ try
+ {
+ unique_ptr<hello_t> h \201hello \201argv[1]\202\202;
+
+ for \201hello_t::name_const_iterator i \201h->name \201\202.begin \201\202\202;
+ i != h->name \201\202.end \201\202;
+ ++i\202
+ {
+ cerr << h->greeting \201\202 << ", " << *i << "!" << endl;
+ }
+ }
+ catch \201const xml_schema::exception& e\202
+ {
+ cerr << e << endl;
+ return 1;
+ }
+})RP(
+
+ )0 P(The first part of our appli)HY(ca)HY(tion)YH( calls one of the parsing
+ func)HY(tions)YH( to parser an XML file spec)HY(i)HY(fied)YH( in the command line.
+ We then use the returned object model to iterate over names
+ and print a greet)HY(ing)YH( line for each of them. Finally, we
+ catch and print the )SM(xml_schema::excep)HY(tion)YH()ES(
+ excep)HY(tion)YH( in case some)HY(thing)YH( goes wrong. This excep)HY(tion)YH(
+ is the root of the excep)HY(tion)YH( hier)HY(ar)HY(chy)YH( used by the
+ XSD-gener)HY(ated)YH( code.
+ )EP(
+
+
+ )0 2 10 H(2.4)WB 50 Sn()WB 13 Sn( Compil)HY(ing)YH( and Running)EA()EH(
+
+ )0 P(After saving our appli)HY(ca)HY(tion)YH( from the previ)HY(ous)YH( section in
+ )SM(driver.cxx)ES(, we are ready to compile our first
+ program and run it on the test XML docu)HY(ment)YH(. On a UNIX
+ system this can be done with the follow)HY(ing)YH( commands:
+ )EP(
+
+ ) 6 54 PR($ c++ -std=c++11 -I.../libxsd -c driver.cxx hello.cxx
+$ c++ -std=c++11 -o driver driver.o hello.o -lxerces-c
+$ ./driver hello.xml
+Hello, sun!
+Hello, moon!
+Hello, world!)RP(
+
+ )0 P(Here )SM(.../libxsd)ES( repre)HY(sents)YH( the path to the
+ )R9 2 A(libxsd)EA( package root
+ direc)HY(tory)YH(. Note also that we are required to link our
+ appli)HY(ca)HY(tion)YH( with the Xerces-C++ library because the gener)HY(ated)YH(
+ code uses it as the under)HY(ly)HY(ing)YH( XML parser.)EP(
+
+ )0 2 11 H(2.5)WB 51 Sn()WB 14 Sn( Adding Seri)HY(al)HY(iza)HY(tion)YH()EA()EH(
+
+ )0 P(While parsing and access)HY(ing)YH( the XML data may be every)HY(thing)YH(
+ you need, there are appli)HY(ca)HY(tions)YH( that require creat)HY(ing)YH( new
+ or modi)HY(fy)HY(ing)YH( exist)HY(ing)YH( XML docu)HY(ments)YH(. By default XSD does
+ not produce seri)HY(al)HY(iza)HY(tion)YH( code. We will need to request
+ it with the )SM(--gener)HY(ate)YH(-seri)HY(al)HY(iza)HY(tion)YH()ES( options:)EP(
+
+ ) 1 49 PR($ xsd cxx-tree --generate-serialization hello.xsd)RP(
+
+ )0 P(If we now examine the gener)HY(ated)YH( )SM(hello.hxx)ES( file,
+ we will find a set of over)HY(loaded)YH( seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(,
+ includ)HY(ing)YH( the follow)HY(ing)YH( version:)EP(
+
+ ) 5 45 PR(void
+hello \201std::ostream&,
+ const hello_t&,
+ const xml_schema::namespace_infomap& =
+ xml_schema::namespace_infomap \201\202\202;
+)RP(
+
+ )0 P(Just like with parsing func)HY(tions)YH(, XSD gener)HY(ates)YH( seri)HY(al)HY(iza)HY(tion)YH(
+ func)HY(tions)YH( for each global element unless instructed other)HY(wise)YH(
+ with one of the )SM(--root-element-*)ES( options. For more
+ infor)HY(ma)HY(tion)YH( on seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( see )0 38 1 A(Chapter 6,
+ "Seri)HY(al)HY(iza)HY(tion)YH(")38 0 TN TL()Ec /AF f D(.)EP(
+
+ )0 P(We first examine an appli)HY(ca)HY(tion)YH( that modi)HY(fies)YH( an exist)HY(ing)YH(
+ object model and seri)HY(al)HY(izes)YH( it back to XML:)EP(
+
+ ) 34 50 PR(#include <iostream>
+#include "hello.hxx"
+
+using namespace std;
+
+int
+main \201int argc, char* argv[]\202
+{
+ try
+ {
+ unique_ptr<hello_t> h \201hello \201argv[1]\202\202;
+
+ // Change the greeting phrase.
+ //
+ h->greeting \201"Hi"\202;
+
+ // Add another entry to the name sequence.
+ //
+ h->name \201\202.push_back \201"mars"\202;
+
+ // Serialize the modified object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "hello.xsd";
+
+ hello \201cout, *h, map\202;
+ }
+ catch \201const xml_schema::exception& e\202
+ {
+ cerr << e << endl;)WR(
+ return 1;
+ }
+})RP(
+
+ )0 P(First, our appli)HY(ca)HY(tion)YH( parses an XML docu)HY(ment)YH( and obtains its
+ object model as in the previ)HY(ous)YH( example. Then it changes the
+ greet)HY(ing)YH( string and adds another entry to the list of names.
+ Finally, it seri)HY(al)HY(izes)YH( the object model back to XML by calling
+ the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(.)EP(
+
+ )0 P(The first argu)HY(ment)YH( we pass to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH( is
+ )SM(cout)ES( which results in the XML being written to
+ the stan)HY(dard)YH( output for us to inspect. We could have also
+ written the result to a file or memory buffer by creat)HY(ing)YH( an
+ instance of )SM(std::ofstream)ES( or )SM(std::ostringstream)ES(
+ and passing it instead of )SM(cout)ES(. The second argu)HY(ment)YH( is the
+ object model we want to seri)HY(al)HY(ize)YH(. The final argu)HY(ment)YH( is an optional
+ names)HY(pace)YH( infor)HY(ma)HY(tion)YH( map for our vocab)HY(u)HY(lary)YH(. It captures infor)HY(ma)HY(tion)YH(
+ such as names)HY(paces)YH(, names)HY(pace)YH( prefixes to which they should be mapped,
+ and schemas asso)HY(ci)HY(ated)YH( with these names)HY(paces)YH(. If we don't provide
+ this argu)HY(ment)YH( then generic names)HY(pace)YH( prefixes \201)SM(p1)ES(,
+ )SM(p2)ES(, etc.\202 will be auto)HY(mat)HY(i)HY(cally)YH( assigned to XML names)HY(paces)YH(
+ and no schema infor)HY(ma)HY(tion)YH( will be added to the result)HY(ing)YH( docu)HY(ment)YH(
+ \201see )0 38 1 A(Chapter 6, "Seri)HY(al)HY(iza)HY(tion)YH(")38 0 TN TL()Ec /AF f D( for details\202.
+ In our case, the prefix \201map key\202 and names)HY(pace)YH( name are empty
+ because our vocab)HY(u)HY(lary)YH( does not use XML names)HY(paces)YH(.)EP(
+
+ )0 P(If we now compile and run this appli)HY(ca)HY(tion)YH( we will see the
+ output as shown in the follow)HY(ing)YH( listing:)EP(
+
+ ) 12 60 PR(<?xml version="1.0"?>
+<hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="hello.xsd">
+
+ <greeting>Hi</greeting>
+
+ <name>sun</name>
+ <name>moon</name>
+ <name>world</name>
+ <name>mars</name>
+
+</hello>)RP(
+
+ )0 P(We can also create and seri)HY(al)HY(ize)YH( an object model from scratch
+ as shown in the follow)HY(ing)YH( example:)EP(
+
+ ) 33 43 PR(#include <iostream>
+#include <fstream>
+#include "hello.hxx"
+
+using namespace std;
+
+int
+main \201int argc, char* argv[]\202
+{
+ try
+ {
+ hello_t h \201"Hi"\202;
+
+ hello_t::name_sequence& ns \201h.name \201\202\202;
+
+ ns.push_back \201"Jane"\202;
+ ns.push_back \201"John"\202;
+
+ // Serialize the object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "hello.xsd";
+
+ std::ofstream ofs \201argv[1]\202;
+ hello \201ofs, h, map\202;
+ }
+ catch \201const xml_schema::exception& e\202
+ {
+ cerr << e << endl;
+ return 1;)WR(
+ }
+})RP(
+
+ )0 P(In this example we used the gener)HY(ated)YH( construc)HY(tor)YH( to create
+ an instance of type )SM(hello_t)ES(. To reduce typing,
+ we obtained a refer)HY(ence)YH( to the name sequence which we then
+ used to add a few names. The seri)HY(al)HY(iza)HY(tion)YH( part is iden)HY(ti)HY(cal)YH(
+ to the previ)HY(ous)YH( example except this time we are writing to
+ a file. If we compile and run this program, it produces the
+ follow)HY(ing)YH( XML file:)EP(
+
+ ) 10 60 PR(<?xml version="1.0"?>
+<hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="hello.xsd">
+
+ <greeting>Hi</greeting>
+
+ <name>Jane</name>
+ <name>John</name>
+
+</hello>)RP(
+
+ )0 2 12 H(2.6)WB 52 Sn()WB 15 Sn( Select)HY(ing)YH( Naming Conven)HY(tion)YH()EA()EH(
+
+ )0 P(By default XSD uses the so-called K&R \201Kernighan and Ritchie\202
+ iden)HY(ti)HY(fier)YH( naming conven)HY(tion)YH( in the gener)HY(ated)YH( code. In this
+ conven)HY(tion)YH( both type and func)HY(tion)YH( names are in lower case and
+ words are sepa)HY(rated)YH( by under)HY(scores)YH(. If your appli)HY(ca)HY(tion)YH( code or
+ schemas use a differ)HY(ent)YH( nota)HY(tion)YH(, you may want to change the
+ naming conven)HY(tion)YH( used in the gener)HY(ated)YH( code for consis)HY(tency)YH(.
+ XSD supports a set of widely-used naming conven)HY(tions)YH(
+ that you can select with the )SM(--type-naming)ES( and
+ )SM(--func)HY(tion)YH(-naming)ES( options. You can also further
+ refine one of the prede)HY(fined)YH( conven)HY(tions)YH( or create a completely
+ custom naming scheme by using the )SM(--*-regex)ES( options.)EP(
+
+ )0 P(As an example, let's assume that our "Hello World" appli)HY(ca)HY(tion)YH(
+ uses the so-called upper-camel-case naming conven)HY(tion)YH( for types
+ \201that is, each word in a type name is capi)HY(tal)HY(ized)YH(\202 and the K&R
+ conven)HY(tion)YH( for func)HY(tion)YH( names. Since K&R is the default
+ conven)HY(tion)YH( for both type and func)HY(tion)YH( names, we only need to
+ change the type naming scheme:)EP(
+
+ ) 1 42 PR($ xsd cxx-tree --type-naming ucc hello.xsd)RP(
+
+ )0 P(The )SM(ucc)ES( argu)HY(ment)YH( to the )SM(--type-naming)ES(
+ options stands for upper-camel-case. If we now examine the
+ gener)HY(ated)YH( )SM(hello.hxx)ES(, we will see the follow)HY(ing)YH(
+ changes compared to the decla)HY(ra)HY(tions)YH( shown in the previ)HY(ous)YH(
+ sections:)EP(
+
+ ) 45 57 PR(class Hello_t
+{
+public:
+ // greeting
+ //
+ typedef xml_schema::String GreetingType;
+
+ const GreetingType&
+ greeting \201\202 const;
+
+ GreetingType&
+ greeting \201\202;
+
+ void
+ greeting \201const GreetingType& x\202;
+
+ // name
+ //
+ typedef xml_schema::String NameType;
+ typedef xsd::sequence<NameType> NameSequence;
+ typedef NameSequence::iterator NameIterator;
+ typedef NameSequence::const_iterator NameConstIterator;
+
+ const NameSequence&
+ name \201\202 const;
+
+ NameSequence&
+ name \201\202;
+
+ void
+ name \201const NameSequence& s\202;)WR(
+
+ // Constructor.
+ //
+ Hello_t \201const GreetingType&\202;
+
+ ...
+
+};
+
+std::unique_ptr<Hello_t>
+hello \201const std::string& uri\202;
+
+std::unique_ptr<Hello_t>
+hello \201std::istream&\202;)RP(
+
+ )0 P(Notice that the type names in the )SM(xml_schema)ES( names)HY(pace)YH(,
+ for example )SM(xml_schema::String)ES(, now also use the
+ upper-camel-case naming conven)HY(tion)YH(. The only thing that we may
+ be unhappy about in the above code is the )SM(_t)ES(
+ suffix in )SM(Hello_t)ES(. If we are not in a posi)HY(tion)YH(
+ to change the schema, we can )EM(touch-up)ES( the )SM(ucc)ES(
+ conven)HY(tion)YH( with a custom trans)HY(la)HY(tion)YH( rule using the
+ )SM(--type-regex)ES( option:)EP(
+
+ ) 1 72 PR($ xsd cxx-tree --type-naming ucc --type-regex '/ \201.+\202_t/\200u$1/' hello.xsd)RP(
+
+ )0 P(This results in the follow)HY(ing)YH( changes to the gener)HY(ated)YH( code:)EP(
+
+ ) 45 57 PR(class Hello
+{
+public:
+ // greeting
+ //
+ typedef xml_schema::String GreetingType;
+
+ const GreetingType&
+ greeting \201\202 const;
+
+ GreetingType&
+ greeting \201\202;
+
+ void
+ greeting \201const GreetingType& x\202;
+
+ // name
+ //
+ typedef xml_schema::String NameType;
+ typedef xsd::sequence<NameType> NameSequence;
+ typedef NameSequence::iterator NameIterator;
+ typedef NameSequence::const_iterator NameConstIterator;
+
+ const NameSequence&
+ name \201\202 const;
+
+ NameSequence&
+ name \201\202;
+
+ void
+ name \201const NameSequence& s\202;)WR(
+
+ // Constructor.
+ //
+ Hello \201const GreetingType&\202;
+
+ ...
+
+};
+
+std::unique_ptr<Hello>
+hello \201const std::string& uri\202;
+
+std::unique_ptr<Hello>
+hello \201std::istream&\202;)RP(
+
+ )0 P(For more detailed infor)HY(ma)HY(tion)YH( on the )SM(--type-naming)ES(,
+ )SM(--func)HY(tion)YH(-naming)ES(, )SM(--type-regex)ES(, and
+ other )SM(--*-regex)ES( options refer to the NAMING
+ CONVEN)HY(TION)YH( section in the )R4 2 A(XSD
+ Compiler Command Line Manual)EA(.)EP(
+
+ )0 2 13 H(2.7)WB 53 Sn()WB 16 Sn( Gener)HY(at)HY(ing)YH( Docu)HY(men)HY(ta)HY(tion)YH()EA()EH(
+
+ )0 P(While our object model is quite simple, real-world vocab)HY(u)HY(lar)HY(ies)YH(
+ can be quite complex with hundreds of types, elements, and
+ attributes. For such vocab)HY(u)HY(lar)HY(ies)YH( figur)HY(ing)YH( out which types
+ provide which member func)HY(tions)YH( by study)HY(ing)YH( the gener)HY(ated)YH(
+ source code or schemas can be a daunt)HY(ing)YH( task. To provide
+ appli)HY(ca)HY(tion)YH( devel)HY(op)HY(ers)YH( with a more acces)HY(si)HY(ble)YH( way of
+ under)HY(stand)HY(ing)YH( the gener)HY(ated)YH( object models, the XSD compiler
+ can be instructed to produce source code with docu)HY(men)HY(ta)HY(tion)YH(
+ comments in the Doxygen format. Then the source code can be
+ processed with the )R10 2 A(Doxygen)EA(
+ docu)HY(men)HY(ta)HY(tion)YH( system to extract this infor)HY(ma)HY(tion)YH( and produce
+ docu)HY(men)HY(ta)HY(tion)YH( in various formats.
+ )EP(
+
+ )0 P(In this section we will see how to gener)HY(ate)YH( docu)HY(men)HY(ta)HY(tion)YH(
+ for our "Hello World" vocab)HY(u)HY(lary)YH(. To show)HY(case)YH( the full power
+ of the XSD docu)HY(men)HY(ta)HY(tion)YH( facil)HY(i)HY(ties)YH(, we will first docu)HY(ment)YH(
+ our schema. The XSD compiler will then trans)HY(fer)YH(
+ this infor)HY(ma)HY(tion)YH( from the schema to the gener)HY(ated)YH( code and
+ then to the object model docu)HY(men)HY(ta)HY(tion)YH(. Note that the
+ docu)HY(men)HY(ta)HY(tion)YH( in the schema is not required for XSD to
+ gener)HY(ate)YH( useful docu)HY(men)HY(ta)HY(tion)YH(. Below you will find
+ our )SM(hello.xsd)ES( with added docu)HY(men)HY(ta)HY(tion)YH(:)EP(
+
+ ) 43 69 PR(<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="hello_t">
+
+ <xs:annotation>
+ <xs:documentation>
+ The hello_t type consists of a greeting phrase and a
+ collection of names to which this greeting applies.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:sequence>
+
+ <xs:element name="greeting" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>
+ The greeting element contains the greeting phrase
+ for this hello object.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="name" type="xs:string" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ The name elements contains names to be greeted.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ </xs:sequence>)WR(
+ </xs:complexType>
+
+ <xs:element name="hello" type="hello_t">
+ <xs:annotation>
+ <xs:documentation>
+ The hello element is a root of the Hello XML vocabulary.
+ Every conforming document should start with this element.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+</xs:schema>)RP(
+
+ )0 P(The first step in obtain)HY(ing)YH( the docu)HY(men)HY(ta)HY(tion)YH( is to recom)HY(pile)YH(
+ our schema with the )SM(--gener)HY(ate)YH(-doxygen)ES( option:)EP(
+
+ ) 1 68 PR($ xsd cxx-tree --generate-serialization --generate-doxygen hello.xsd)RP(
+
+ )0 P(Now the gener)HY(ated)YH( )SM(hello.hxx)ES( file contains comments
+ in the Doxygen format. The next step is to process this file
+ with the Doxygen docu)HY(men)HY(ta)HY(tion)YH( system. If your project does
+ not use Doxygen then you first need to create a config)HY(u)HY(ra)HY(tion)YH(
+ file for your project:)EP(
+
+ ) 1 26 PR($ doxygen -g hello.doxygen)RP(
+
+ )0 P(You only need to perform this step once. Now we can gener)HY(ate)YH(
+ the docu)HY(men)HY(ta)HY(tion)YH( by execut)HY(ing)YH( the follow)HY(ing)YH( command in the
+ direc)HY(tory)YH( with the gener)HY(ated)YH( source code:)EP(
+
+ ) 1 23 PR($ doxygen hello.doxygen)RP(
+
+ )0 P(While the gener)HY(ated)YH( docu)HY(men)HY(ta)HY(tion)YH( can be useful as is, we can
+ go one step further and link \201using the Doxygen tags mech)HY(a)HY(nism)YH(\202
+ the docu)HY(men)HY(ta)HY(tion)YH( for our object model with the docu)HY(men)HY(ta)HY(tion)YH(
+ for the XSD runtime library which defines C++ classes for the
+ built-in XML Schema types. This way we can seam)HY(lessly)YH( browse
+ between docu)HY(men)HY(ta)HY(tion)YH( for the )SM(hello_t)ES( class which
+ is gener)HY(ated)YH( by the XSD compiler and the )SM(xml_schema::string)ES(
+ class which is defined in the XSD runtime library. The Doxygen
+ config)HY(u)HY(ra)HY(tion)YH( file for the XSD runtime is provided with the XSD
+ distri)HY(bu)HY(tion)YH(.)EP(
+
+ )0 P(You can view the result of the steps described in this section
+ on the )R11 2 A(Hello
+ Example Docu)HY(men)HY(ta)HY(tion)YH()EA( page.)EP(
+
+
+
+
+ )0 1 14 H(3)WB 54 Sn()WB 17 Sn( Overall Mapping Config)HY(u)HY(ra)HY(tion)YH()EA()EH(
+
+ )0 P(The C++/Tree mapping has a number of config)HY(u)HY(ra)HY(tion)YH( param)HY(e)HY(ters)YH( that
+ deter)HY(mine)YH( the overall prop)HY(er)HY(ties)YH( and behav)HY(ior)YH( of the gener)HY(ated)YH( code.
+ Config)HY(u)HY(ra)HY(tion)YH( param)HY(e)HY(ters)YH( are spec)HY(i)HY(fied)YH( with the XSD command line
+ options. This chapter describes config)HY(u)HY(ra)HY(tion)YH( aspects that are most
+ commonly encoun)HY(tered)YH( by appli)HY(ca)HY(tion)YH( devel)HY(op)HY(ers)YH(. These include: the
+ C++ stan)HY(dard)YH(, the char)HY(ac)HY(ter)YH( type that is used by the gener)HY(ated)YH( code,
+ handling of vocab)HY(u)HY(lar)HY(ies)YH( that use XML Schema poly)HY(mor)HY(phism)YH(, XML Schema
+ to C++ names)HY(pace)YH( mapping, and thread safety. For more ways to config)HY(ure)YH(
+ the gener)HY(ated)YH( code refer to the
+ )R4 2 A(XSD
+ Compiler Command Line Manual)EA(.
+ )EP(
+
+ )0 2 15 H(3.1)WB 55 Sn()WB 18 Sn( C++ Stan)HY(dard)YH()EA()EH(
+
+ )0 P(The C++/Tree mapping provides support for ISO/IEC C++ 2011 \201C++11\202
+ and ISO/IEC C++ 1998/2003 \201C++98\202. To select the C++ stan)HY(dard)YH( for the
+ gener)HY(ated)YH( code we use the )SM(--std)ES( XSD compiler command
+ line option. While the major)HY(ity)YH( of the exam)HY(ples)YH( in this guide use
+ C++11, the docu)HY(ment)YH( explains the C++11/98 usage differ)HY(ence)YH( and so
+ they can easily be converted to C++98.)EP(
+
+ )0 2 16 H(3.2)WB 56 Sn()WB 19 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()EA()EH(
+
+ )0 P(The C++/Tree mapping has built-in support for two char)HY(ac)HY(ter)YH( types:
+ )SM(char)ES( and )SM(wchar_t)ES(. You can select the
+ char)HY(ac)HY(ter)YH( type with the )SM(--char-type)ES( command line
+ option. The default char)HY(ac)HY(ter)YH( type is )SM(char)ES(. The
+ char)HY(ac)HY(ter)YH( type affects all string and string-based types that
+ are used in the mapping. These include the string-based built-in
+ XML Schema types, excep)HY(tion)YH( types, stream types, etc.)EP(
+
+ )0 P(Another aspect of the mapping that depends on the char)HY(ac)HY(ter)YH( type
+ is char)HY(ac)HY(ter)YH( encod)HY(ing)YH(. For the )SM(char)ES( char)HY(ac)HY(ter)YH( type
+ the default encod)HY(ing)YH( is UTF-8. Other supported encod)HY(ings)YH( are
+ ISO-8859-1, Xerces-C++ Local Code Page \201LPC\202, as well as
+ custom encod)HY(ings)YH(. You can select which encod)HY(ing)YH( should be used
+ in the object model with the )SM(--char-encod)HY(ing)YH()ES( command
+ line option.)EP(
+
+ )0 P(For the )SM(wchar_t)ES( char)HY(ac)HY(ter)YH( type the encod)HY(ing)YH( is
+ auto)HY(mat)HY(i)HY(cally)YH( selected between UTF-16 and UTF-32/UCS-4 depend)HY(ing)YH(
+ on the size of the )SM(wchar_t)ES( type. On some plat)HY(forms)YH(
+ \201for example, Windows with Visual C++ and AIX with IBM XL C++\202
+ )SM(wchar_t)ES( is 2 bytes long. For these plat)HY(forms)YH( the
+ encod)HY(ing)YH( is UTF-16. On other plat)HY(forms)YH( )SM(wchar_t)ES( is 4 bytes
+ long and UTF-32/UCS-4 is used.)EP(
+
+ )0 P(Note also that the char)HY(ac)HY(ter)YH( encod)HY(ing)YH( that is used in the object model
+ is inde)HY(pen)HY(dent)YH( of the encod)HY(ings)YH( used in input and output XML. In fact,
+ all three \201object mode, input XML, and output XML\202 can have differ)HY(ent)YH(
+ encod)HY(ings)YH(.)EP(
+
+ )0 2 17 H(3.3)WB 57 Sn()WB 20 Sn( Support for Poly)HY(mor)HY(phism)YH()EA()EH(
+
+ )0 P(By default XSD gener)HY(ates)YH( non-poly)HY(mor)HY(phic)YH( code. If your vocab)HY(u)HY(lary)YH(
+ uses XML Schema poly)HY(mor)HY(phism)YH( in the form of )SM(xsi:type)ES(
+ and/or substi)HY(tu)HY(tion)YH( groups, then you will need to compile
+ your schemas with the )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option
+ to produce poly)HY(mor)HY(phism)YH(-aware code. For more infor)HY(ma)HY(tion)YH( on
+ working with poly)HY(mor)HY(phic)YH( object models, refer to
+ )R12 2 A(Section 2.11,
+ "Mapping for )SM(xsi:type)ES( and Substi)HY(tu)HY(tion)YH( Groups")EA( in
+ the C++/Tree Mapping User Manual.)EP(
+
+ )0 2 18 H(3.4)WB 58 Sn()WB 21 Sn( Names)HY(pace)YH( Mapping)EA()EH(
+
+ )0 P(XSD maps XML names)HY(paces)YH( spec)HY(i)HY(fied)YH( in the )SM(target)HY(Names)HY(pace)YH()ES(
+ attribute in XML Schema to one or more nested C++ names)HY(paces)YH(. By
+ default, a names)HY(pace)YH( URI is mapped to a sequence of C++ names)HY(pace)YH(
+ names by remov)HY(ing)YH( the proto)HY(col)YH( and host parts and split)HY(ting)YH( the
+ rest into a sequence of names with )SM('/')ES( as the name
+ sepa)HY(ra)HY(tor)YH(.)EP(
+
+ )0 P(The default mapping of names)HY(pace)YH( URIs to C++ names)HY(paces)YH(
+ can be altered using the )SM(--names)HY(pace)YH(-map)ES( and
+ )SM(--names)HY(pace)YH(-regex)ES( compiler options. For example,
+ to map names)HY(pace)YH( URI )SM(https://www.codesyn)HY(the)HY(sis)YH(.com/my)ES( to
+ C++ names)HY(pace)YH( )SM(cs::my)ES(, we can use the follow)HY(ing)YH( option:)EP(
+
+ ) 1 55 PR(--namespace-map https://www.codesynthesis.com/my=cs::my)RP(
+
+ )0 P(A vocab)HY(u)HY(lary)YH( without a names)HY(pace)YH( is mapped to the global scope. This
+ also can be altered with the above options by using an empty name
+ for the XML names)HY(pace)YH(:)EP(
+
+ ) 1 19 PR(--namespace-map =cs)RP(
+
+ )0 2 19 H(3.5)WB 59 Sn()WB 22 Sn( Thread Safety)EA()EH(
+
+ )0 P(XSD-gener)HY(ated)YH( code is thread-safe in the sense that you can
+ use differ)HY(ent)YH( instan)HY(ti)HY(a)HY(tions)YH( of the object model in several
+ threads concur)HY(rently)YH(. This is possi)HY(ble)YH( due to the gener)HY(ated)YH(
+ code not relying on any writable global vari)HY(ables)YH(. If you need
+ to share the same object between several threads then you will
+ need to provide some form of synchro)HY(niza)HY(tion)YH(. One approach would
+ be to use the gener)HY(ated)YH( code customiza)HY(tion)YH( mech)HY(a)HY(nisms)YH( to embed
+ synchro)HY(niza)HY(tion)YH( prim)HY(i)HY(tives)YH( into the gener)HY(ated)YH( C++ classes. For more
+ infor)HY(ma)HY(tion)YH( on gener)HY(ated)YH( code customiza)HY(tion)YH( refer to the
+ )R2 2 A(C++/Tree
+ Mapping Customiza)HY(tion)YH( Guide)EA(.)EP(
+
+ )0 P(If you also would like to call parsing and/or seri)HY(al)HY(iza)HY(tion)YH(
+ func)HY(tions)YH( from several threads poten)HY(tially)YH( concur)HY(rently)YH(, then
+ you will need to make sure the Xerces-C++ runtime is initial)HY(ized)YH(
+ and termi)HY(nated)YH( only once. The easiest way to do this is to
+ initial)HY(ize)YH(/termi)HY(nate)YH( Xerces-C++ from )SM(main\201\202)ES( when
+ there are no threads yet/anymore:)EP(
+
+ ) 13 56 PR(#include <xercesc/util/PlatformUtils.hpp>
+
+int
+main \201\202
+{
+ xercesc::XMLPlatformUtils::Initialize \201\202;
+
+ {
+ // Start/terminate threads and parse/serialize here.
+ }
+
+ xercesc::XMLPlatformUtils::Terminate \201\202;
+})RP(
+
+ )0 P(Because you initial)HY(ize)YH( the Xerces-C++ runtime your)HY(self)YH( you should
+ also pass the )SM(xml_schema::flags::dont_initial)HY(ize)YH()ES( flag
+ to parsing and seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(. See )0 37 1 A(Chapter 5,
+ "Parsing")37 0 TN TL()Ec /AF f D( and )0 38 1 A(Chapter 6, "Seri)HY(al)HY(iza)HY(tion)YH(")38 0 TN TL()Ec /AF f D( for
+ more infor)HY(ma)HY(tion)YH(.)EP(
+
+
+
+
+
+ )0 1 20 H(4)WB 60 Sn()WB 23 Sn( Working with Object Models)EA()EH(
+
+ )0 P(As we have seen in the previ)HY(ous)YH( chap)HY(ters)YH(, the XSD compiler gener)HY(ates)YH(
+ a C++ class for each type defined in XML Schema. Together these classes
+ consti)HY(tute)YH( an object model for an XML vocab)HY(u)HY(lary)YH(. In this chapter we
+ will take a closer look at differ)HY(ent)YH( elements that comprise an
+ object model class as well as how to create, access, and modify
+ object models.)EP(
+
+ )0 P(In this and subse)HY(quent)YH( chap)HY(ters)YH( we will use the follow)HY(ing)YH( schema
+ that describes a collec)HY(tion)YH( of person records. We save it in
+ )SM(people.xsd)ES(:)EP(
+
+ ) 30 71 PR(<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:simpleType name="gender_t">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="male"/>
+ <xs:enumeration value="female"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="person_t">
+ <xs:sequence>
+ <xs:element name="first-name" type="xs:string"/>
+ <xs:element name="middle-name" type="xs:string" minOccurs="0"/>
+ <xs:element name="last-name" type="xs:string"/>
+ <xs:element name="gender" type="gender_t"/>
+ <xs:element name="age" type="xs:short"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:unsignedInt" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="people_t">
+ <xs:sequence>
+ <xs:element name="person" type="person_t" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="people" type="people_t"/>
+
+</xs:schema>)RP(
+
+ )0 P(A sample XML instance to go along with this schema is saved
+ in )SM(people.xml)ES(:)EP(
+
+ ) 20 61 PR(<?xml version="1.0"?>
+<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd">
+
+ <person id="1">
+ <first-name>John</first-name>
+ <last-name>Doe</last-name>
+ <gender>male</gender>
+ <age>32</age>
+ </person>
+
+ <person id="2">
+ <first-name>Jane</first-name>
+ <middle-name>Mary</middle-name>
+ <last-name>Doe</last-name>
+ <gender>female</gender>
+ <age>28</age>
+ </person>
+
+</people>)RP(
+
+ )0 P(Compil)HY(ing)YH( )SM(people.xsd)ES( with the XSD compiler results
+ in three gener)HY(ated)YH( C++ classes: )SM(gender_t)ES(,
+ )SM(person_t)ES(, and )SM(people_t)ES(.
+ The )SM(gender_t)ES( class is modelled after the C++
+ )SM(enum)ES( type. Its defi)HY(ni)HY(tion)YH( is presented below:)EP(
+
+ ) 17 41 PR(class gender_t: public xml_schema::string
+{
+public:
+ enum value
+ {
+ male,
+ female
+ };
+
+ gender_t \201value\202;
+ gender_t \201const xml_schema::string&\202;
+
+ gender_t&
+ operator= \201value\202;
+
+ operator value \201\202 const;
+};)RP(
+
+ )0 P(The follow)HY(ing)YH( listing shows how we can use this type:)EP(
+
+ ) 19 41 PR(gender_t m \201gender_t::male\202;
+gender_t f \201"female"\202;
+
+if \201m == "female" || f == gender_t::male\202
+{
+ ...
+}
+
+switch \201m\202
+{
+case gender_t::male:
+ {
+ ...
+ }
+case gender_t::female:
+ {
+ ...
+ }
+})RP(
+
+ )0 P(The other two classes will be exam)HY(ined)YH( in detail in the subse)HY(quent)YH(
+ sections.)EP(
+
+ )0 2 21 H(4.1)WB 61 Sn()WB 24 Sn( Attribute and Element Cardi)HY(nal)HY(i)HY(ties)YH()EA()EH(
+
+ )0 P(As we have seen in the previ)HY(ous)YH( chap)HY(ters)YH(, XSD gener)HY(ates)YH( a differ)HY(ent)YH(
+ set of type defi)HY(ni)HY(tions)YH( and member func)HY(tions)YH( for elements with
+ differ)HY(ent)YH( cardi)HY(nal)HY(i)HY(ties)YH(. The C++/Tree mapping divides all the possi)HY(ble)YH(
+ element and attribute cardi)HY(nal)HY(i)HY(ties)YH( into three cardi)HY(nal)HY(ity)YH( classes:
+ )EM(one)ES(, )EM(optional)ES(, and )EM(sequence)ES(.)EP(
+
+ )0 P(The )EM(one)ES( cardi)HY(nal)HY(ity)YH( class covers all elements that should
+ occur exactly once as well as required attributes. In our
+ example, the )SM(first-name)ES(, )SM(last-name)ES(,
+ )SM(gender)ES(, and )SM(age)ES( elements as well as
+ the )SM(id)ES( attribute belong to this cardi)HY(nal)HY(ity)YH( class.
+ The follow)HY(ing)YH( code frag)HY(ment)YH( shows type defi)HY(ni)HY(tions)YH( as well as the
+ acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( that are gener)HY(ated)YH( for the
+ )SM(gender)ES( element in the )SM(person_t)ES( class:)EP(
+
+ ) 15 31 PR(class person_t
+{
+ // gender
+ //
+ typedef gender_t gender_type;
+
+ const gender_type&
+ gender \201\202 const;
+
+ gender_type&
+ gender \201\202;
+
+ void
+ gender \201const gender_type&\202;
+};)RP(
+
+ )0 P(The )SM(gender_type)ES( type is an alias for the element's type.
+ The first two acces)HY(sor)YH( func)HY(tions)YH( return read-only \201constant\202 and
+ read-write refer)HY(ences)YH( to the element's value, respec)HY(tively)YH(. The
+ modi)HY(fier)YH( func)HY(tion)YH( sets the new value for the element.)EP(
+
+ )0 P(The )EM(optional)ES( cardi)HY(nal)HY(ity)YH( class covers all elements that
+ can occur zero or one time as well as optional attributes. In our
+ example, the )SM(middle-name)ES( element belongs to this
+ cardi)HY(nal)HY(ity)YH( class. The follow)HY(ing)YH( code frag)HY(ment)YH( shows the type
+ defi)HY(ni)HY(tions)YH( as well as the acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( that
+ are gener)HY(ated)YH( for this element in the )SM(person_t)ES( class:)EP(
+
+ ) 19 63 PR(class person_t
+{
+ // middle-name
+ //
+ typedef xml_schema::string middle_name_type;
+ typedef xsd::optional<middle_name_type> middle_name_optional;
+
+ const middle_name_optional&
+ middle_name \201\202 const;
+
+ middle_name_optional&
+ middle_name \201\202;
+
+ void
+ middle_name \201const middle_name_type&\202;
+
+ void
+ middle_name \201const middle_name_optional&\202;
+};)RP(
+
+ )0 P(As with the )SM(gender)ES( element, )SM(middle_name_type)ES(
+ is an alias for the element's type. The )SM(middle_name_optional)ES(
+ type is a container for the element's optional value. It can be queried
+ for the pres)HY(ence)YH( of the value using the )SM(present\201\202)ES( func)HY(tion)YH(.
+ The value itself can be retrieved using the )SM(get\201\202)ES(
+ acces)HY(sor)YH( and set using the )SM(set\201\202)ES( modi)HY(fier)YH(. The container
+ can be reverted to the value not present state with the call to the
+ )SM(reset\201\202)ES( func)HY(tion)YH(. The follow)HY(ing)YH( example shows how we
+ can use this container:)EP(
+
+ ) 9 42 PR(person_t::middle_name_optional n \201"John"\202;
+
+if \201n.present \201\202\202
+{
+ cout << n.get \201\202 << endl;
+}
+
+n.set \201"Jane"\202;
+n.reset \201\202;)RP(
+
+
+ )0 P(Unlike the )EM(one)ES( cardi)HY(nal)HY(ity)YH( class, the acces)HY(sor)YH( func)HY(tions)YH(
+ for the )EM(optional)ES( class return read-only \201constant\202 and
+ read-write refer)HY(ences)YH( to the container instead of the element's
+ value directly. The modi)HY(fier)YH( func)HY(tions)YH( set the new value for the
+ element.)EP(
+
+ )0 P(Finally, the )EM(sequence)ES( cardi)HY(nal)HY(ity)YH( class covers all elements
+ that can occur more than once. In our example, the
+ )SM(person)ES( element in the )SM(people_t)ES( type
+ belongs to this cardi)HY(nal)HY(ity)YH( class. The follow)HY(ing)YH( code frag)HY(ment)YH( shows
+ the type defi)HY(ni)HY(tions)YH( as well as the acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH(
+ that are gener)HY(ated)YH( for this element in the )SM(people_t)ES(
+ class:)EP(
+
+ ) 18 64 PR(class people_t
+{
+ // person
+ //
+ typedef person_t person_type;
+ typedef xsd::sequence<person_type> person_sequence;
+ typedef person_sequence::iterator person_iterator;
+ typedef person_sequence::const_iterator person_const_iterator;
+
+ const person_sequence&
+ person \201\202 const;
+
+ person_sequence&
+ person \201\202;
+
+ void
+ person \201const person_sequence&\202;
+};)RP(
+
+ )0 P(Iden)HY(ti)HY(cal)YH( to the other cardi)HY(nal)HY(ity)YH( classes, )SM(person_type)ES(
+ is an alias for the element's type. The )SM(person_sequence)ES(
+ type is a sequence container for the element's values. It is based
+ on and has the same inter)HY(face)YH( as )SM(std::vector)ES( and
+ there)HY(fore)YH( can be used in similar ways. The )SM(person_iter)HY(a)HY(tor)YH()ES(
+ and )SM(person_const_iter)HY(a)HY(tor)YH()ES( types are read-only
+ \201constant\202 and read-write iter)HY(a)HY(tors)YH( for the )SM(person_sequence)ES(
+ container.)EP(
+
+ )0 P(Similar to the )EM(optional)ES( cardi)HY(nal)HY(ity)YH( class, the
+ acces)HY(sor)YH( func)HY(tions)YH( for the )EM(sequence)ES( class return
+ read-only \201constant\202 and read-write refer)HY(ences)YH( to the sequence
+ container. The modi)HY(fier)YH( func)HY(tions)YH( copies the entries from
+ the passed sequence.)EP(
+
+ )0 P(C++/Tree is a "flat)HY(ten)HY(ing)YH(" mapping in a sense that many levels of
+ nested compos)HY(i)HY(tors)YH( \201)SM(choice)ES( and )SM(sequence)ES(\202,
+ all poten)HY(tially)YH( with their own cardi)HY(nal)HY(i)HY(ties)YH(, are in the end mapped
+ to a flat set of elements with one of the three cardi)HY(nal)HY(ity)YH( classes
+ discussed above. While this results in a simple and easy to use API
+ for most types, in certain cases, the order of elements in the actual
+ XML docu)HY(ments)YH( is not preserved once parsed into the object model. To
+ over)HY(come)YH( this limi)HY(ta)HY(tion)YH( we can mark certain schema types, for which
+ content order is not suffi)HY(ciently)YH( preserved, as ordered. For more
+ infor)HY(ma)HY(tion)YH( on this func)HY(tion)HY(al)HY(ity)YH( refer to
+ )R13 2 A(Section
+ 2.8.4, "Element Order")EA( in the C++/Tree Mapping User Manual.)EP(
+
+ )0 P(For complex schemas with many levels of nested compos)HY(i)HY(tors)YH(
+ \201)SM(choice)ES( and )SM(sequence)ES(\202 it can also
+ be hard to deduce the cardi)HY(nal)HY(ity)YH( class of a partic)HY(u)HY(lar)YH( element.
+ The gener)HY(ated)YH( Doxygen docu)HY(men)HY(ta)HY(tion)YH( can greatly help with
+ this task. For each element and attribute the docu)HY(men)HY(ta)HY(tion)YH(
+ clearly iden)HY(ti)HY(fies)YH( its cardi)HY(nal)HY(ity)YH( class. Alter)HY(na)HY(tively)YH(, you
+ can study the gener)HY(ated)YH( header files to find out the cardi)HY(nal)HY(ity)YH(
+ class of a partic)HY(u)HY(lar)YH( attribute or element.)EP(
+
+ )0 P(In the next sections we will examine how to access and modify
+ infor)HY(ma)HY(tion)YH( stored in an object model using acces)HY(sor)YH( and modi)HY(fier)YH(
+ func)HY(tions)YH( described in this section.)EP(
+
+ )0 2 22 H(4.2)WB 62 Sn()WB 25 Sn( Access)HY(ing)YH( the Object Model)EA()EH(
+
+ )0 P(In this section we will learn how to get to the infor)HY(ma)HY(tion)YH(
+ stored in the object model for our person records vocab)HY(u)HY(lary)YH(.
+ The follow)HY(ing)YH( appli)HY(ca)HY(tion)YH( accesses and prints the contents
+ of the )SM(people.xml)ES( file:)EP(
+
+ ) 36 70 PR(#include <iostream>
+#include "people.hxx"
+
+using namespace std;
+
+int
+main \201\202
+{
+ unique_ptr<people_t> ppl \201people \201"people.xml"\202\202;
+
+ // Iterate over individual person records.
+ //
+ people_t::person_sequence& ps \201ppl->person \201\202\202;
+
+ for \201people_t::person_iterator i \201ps.begin \201\202\202; i != ps.end \201\202; ++i\202
+ {
+ person_t& p \201*i\202;
+
+ // Print names: first-name and last-name are required elements,
+ // middle-name is optional.
+ //
+ cout << "name: " << p.first_name \201\202 << " ";
+
+ if \201p.middle_name \201\202.present \201\202\202
+ cout << p.middle_name \201\202.get \201\202 << " ";
+
+ cout << p.last_name \201\202 << endl;
+
+ // Print gender, age, and id which are all required.
+ //
+ cout << "gender: " << p.gender \201\202 << endl)WR(
+ << "age: " << p.age \201\202 << endl
+ << "id: " << p.id \201\202 << endl
+ << endl;
+ }
+})RP(
+
+ )0 P(This code shows common patterns of access)HY(ing)YH( elements and attributes
+ with differ)HY(ent)YH( cardi)HY(nal)HY(ity)YH( classes. For the sequence element
+ \201)SM(person)ES( in )SM(people_t)ES(\202 we first obtain a
+ refer)HY(ence)YH( to the container and then iterate over indi)HY(vid)HY(ual)YH(
+ records. The values of elements and attributes with the
+ )EM(one)ES( cardi)HY(nal)HY(ity)YH( class \201)SM(first-name)ES(,
+ )SM(last-name)ES(, )SM(gender)ES(, )SM(age)ES(,
+ and )SM(id)ES(\202 can be obtained directly by calling the
+ corre)HY(spond)HY(ing)YH( acces)HY(sor)YH( func)HY(tions)YH(. For the optional element
+ )SM(middle-name)ES( we first check if the value is present
+ and only then call )SM(get\201\202)ES( to retrieve it.)EP(
+
+ )0 P(Note that when we want to reduce typing by creat)HY(ing)YH( a vari)HY(able)YH(
+ repre)HY(sent)HY(ing)YH( a frag)HY(ment)YH( of the object model that we are currently
+ working with \201)SM(ps)ES( and )SM(p)ES( above\202, we obtain
+ a refer)HY(ence)YH( to that frag)HY(ment)YH( instead of making a poten)HY(tially)YH(
+ expen)HY(sive)YH( copy. This is gener)HY(ally)YH( a good rule to follow when
+ creat)HY(ing)YH( high-perfor)HY(mance)YH( appli)HY(ca)HY(tions)YH(.)EP(
+
+ )0 P(If we run the above appli)HY(ca)HY(tion)YH( on our sample
+ )SM(people.xml)ES(, the output looks as follows:)EP(
+
+ ) 9 21 PR(name: John Doe
+gender: male
+age: 32
+id: 1
+
+name: Jane Mary Doe
+gender: female
+age: 28
+id: 2)RP(
+
+
+ )0 2 23 H(4.3)WB 63 Sn()WB 26 Sn( Modi)HY(fy)HY(ing)YH( the Object Model)EA()EH(
+
+ )0 P(In this section we will learn how to modify the infor)HY(ma)HY(tion)YH(
+ stored in the object model for our person records vocab)HY(u)HY(lary)YH(.
+ The follow)HY(ing)YH( appli)HY(ca)HY(tion)YH( changes the contents of the
+ )SM(people.xml)ES( file:)EP(
+
+ ) 43 70 PR(#include <iostream>
+#include "people.hxx"
+
+using namespace std;
+
+int
+main \201\202
+{
+ unique_ptr<people_t> ppl \201people \201"people.xml"\202\202;
+
+ // Iterate over individual person records and increment
+ // the age.
+ //
+ people_t::person_sequence& ps \201ppl->person \201\202\202;
+
+ for \201people_t::person_iterator i \201ps.begin \201\202\202; i != ps.end \201\202; ++i\202
+ {
+ // Alternative way: i->age \201\202++;
+ //
+ i->age \201i->age \201\202 + 1\202;
+ }
+
+ // Add middle-name to the first record and remove it from
+ // the second.
+ //
+ person_t& john \201ps[0]\202;
+ person_t& jane \201ps[1]\202;
+
+ john.middle_name \201"Mary"\202;
+ jane.middle_name \201\202.reset \201\202;
+)WR(
+ // Add another John record.
+ //
+ ps.push_back \201john\202;
+
+ // Serialize the modified object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "people.xsd";
+
+ people \201cout, *ppl, map\202;
+})RP(
+
+ )0 P(The first modi)HY(fi)HY(ca)HY(tion)YH( the above appli)HY(ca)HY(tion)YH( performs is iter)HY(at)HY(ing)YH(
+ over person records and incre)HY(ment)HY(ing)YH( the age value. This code
+ frag)HY(ment)YH( shows how to modify the value of a required attribute
+ or element. The next modi)HY(fi)HY(ca)HY(tion)YH( shows how to set a new value
+ for the optional )SM(middle-name)ES( element as well
+ as clear its value. Finally the example adds a copy of the
+ John Doe record to the )SM(person)ES( element sequence.)EP(
+
+ )0 P(Note that in this case using refer)HY(ences)YH( for the )SM(ps)ES(,
+ )SM(john)ES(, and )SM(jane)ES( vari)HY(ables)YH( is no longer
+ a perfor)HY(mance)YH( improve)HY(ment)YH( but a require)HY(ment)YH( for the appli)HY(ca)HY(tion)YH(
+ to func)HY(tion)YH( correctly. If we hadn't used refer)HY(ences)YH(, all our changes
+ would have been made on copies without affect)HY(ing)YH( the object model.)EP(
+
+ )0 P(If we run the above appli)HY(ca)HY(tion)YH( on our sample )SM(people.xml)ES(,
+ the output looks as follows:)EP(
+
+ ) 28 61 PR(<?xml version="1.0"?>
+<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd">
+
+ <person id="1">
+ <first-name>John</first-name>
+ <middle-name>Mary</middle-name>
+ <last-name>Doe</last-name>
+ <gender>male</gender>
+ <age>33</age>
+ </person>
+
+ <person id="2">
+ <first-name>Jane</first-name>
+ <last-name>Doe</last-name>
+ <gender>female</gender>
+ <age>29</age>
+ </person>
+
+ <person id="1">
+ <first-name>John</first-name>
+ <middle-name>Mary</middle-name>
+ <last-name>Doe</last-name>
+ <gender>male</gender>
+ <age>33</age>
+ </person>
+
+</people>)RP(
+
+
+ )0 2 24 H(4.4)WB 64 Sn()WB 27 Sn( Creat)HY(ing)YH( the Object Model from Scratch)EA()EH(
+
+ )0 P(In this section we will learn how to create a new object model
+ for our person records vocab)HY(u)HY(lary)YH(. The follow)HY(ing)YH( appli)HY(ca)HY(tion)YH(
+ recre)HY(ates)YH( the content of the orig)HY(i)HY(nal)YH( )SM(people.xml)ES(
+ file:)EP(
+
+ ) 42 48 PR(#include <iostream>
+#include "people.hxx"
+
+using namespace std;
+
+int
+main \201\202
+{
+ people_t ppl;
+ people_t::person_sequence& ps \201ppl.person \201\202\202;
+
+ // Add the John Doe record.
+ //
+ ps.push_back \201
+ person_t \201"John", // first-name
+ "Doe", // last-name
+ gender_t::male, // gender
+ 32, // age
+ 1\202\202;
+
+ // Add the Jane Doe record.
+ //
+ ps.push_back \201
+ person_t \201"Jane", // first-name
+ "Doe", // last-name
+ gender_t::female, // gender
+ 28, // age
+ 2\202\202; // id
+
+ // Add middle name to the Jane Doe record.
+ //)WR(
+ person_t& jane \201ps.back \201\202\202;
+ jane.middle_name \201"Mary"\202;
+
+ // Serialize the object model to XML.
+ //
+ xml_schema::namespace_infomap map;
+ map[""].name = "";
+ map[""].schema = "people.xsd";
+
+ people \201cout, ppl, map\202;
+})RP(
+
+ )0 P(The only new part in the above appli)HY(ca)HY(tion)YH( is the calls
+ to the )SM(people_t)ES( and )SM(person_t)ES(
+ construc)HY(tors)YH(. As a general rule, for each C++ class
+ XSD gener)HY(ates)YH( a construc)HY(tor)YH( with initial)HY(iz)HY(ers)YH(
+ for each element and attribute belong)HY(ing)YH( to the )EM(one)ES(
+ cardi)HY(nal)HY(ity)YH( class. For our vocab)HY(u)HY(lary)YH(, the follow)HY(ing)YH(
+ construc)HY(tors)YH( are gener)HY(ated)YH(:)EP(
+
+ ) 13 35 PR(class person_t
+{
+ person_t \201const first_name_type&,
+ const last_name_type&,
+ const gender_type&,
+ const age_type&,
+ const id_type&\202;
+};
+
+class people_t
+{
+ people_t \201\202;
+};)RP(
+
+ )0 P(Note also that we set the )SM(middle-name)ES( element
+ on the Jane Doe record by obtain)HY(ing)YH( a refer)HY(ence)YH( to that record
+ in the object model and setting the )SM(middle-name)ES(
+ value on it. This is a general rule that should be followed
+ in order to obtain the best perfor)HY(mance)YH(: if possi)HY(ble)YH(,
+ direct modi)HY(fi)HY(ca)HY(tions)YH( to the object model should be preferred
+ to modi)HY(fi)HY(ca)HY(tions)YH( on tempo)HY(raries)YH( with subse)HY(quent)YH( copying. The
+ follow)HY(ing)YH( code frag)HY(ment)YH( shows a seman)HY(ti)HY(cally)YH( equiv)HY(a)HY(lent)YH( but
+ slightly slower version:)EP(
+
+ ) 11 46 PR(// Add the Jane Doe record.
+//
+person_t jane \201"Jane", // first-name
+ "Doe", // last-name
+ gender_t::female, // gender
+ 28, // age
+ 2\202; // id
+
+jane.middle_name \201"Mary"\202;
+
+ps.push_back \201jane\202;)RP(
+
+ )0 P(We can also go one step further to reduce copying and improve
+ the perfor)HY(mance)YH( of our appli)HY(ca)HY(tion)YH( by using the non-copying
+ )SM(push_back\201\202)ES( func)HY(tion)YH( which assumes owner)HY(ship)YH(
+ of the passed objects:)EP(
+
+ ) 19 55 PR(// Add the Jane Doe record. C++11 version
+//
+unique_ptr<person_t> jane_p \201
+ new person_t \201"Jane", // first-name
+ "Doe", // last-name
+ gender_t::female, // gender
+ 28, // age
+ 2\202\202; // id
+ps.push_back \201std::move \201jane_p\202\202; // assumes ownership
+
+// Add the John Doe record. C++98 version.
+//
+auto_ptr<person_t> john_p \201
+ new person_t \201"John", // first-name
+ "Doe", // last-name
+ gender_t::male, // gender
+ 32, // age
+ 1\202\202;
+ps.push_back \201john_p\202; // assumes ownership)RP(
+
+ )0 P(For more infor)HY(ma)HY(tion)YH( on the non-copying modi)HY(fier)YH( func)HY(tions)YH( refer to
+ )R14 2 A(Section
+ 2.8, "Mapping for Local Elements and Attributes")EA( in the C++/Tree Mapping
+ User Manual. The above appli)HY(ca)HY(tion)YH( produces the follow)HY(ing)YH( output:)EP(
+
+ ) 20 61 PR(<?xml version="1.0" ?>
+<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd">
+
+ <person id="1">
+ <first-name>John</first-name>
+ <last-name>Doe</last-name>
+ <gender>male</gender>
+ <age>32</age>
+ </person>
+
+ <person id="2">
+ <first-name>Jane</first-name>
+ <middle-name>Mary</middle-name>
+ <last-name>Doe</last-name>
+ <gender>female</gender>
+ <age>28</age>
+ </person>
+
+</people>)RP(
+
+ )0 2 25 H(4.5)WB 65 Sn()WB 28 Sn( Mapping for the Built-in XML Schema Types)EA()EH(
+
+ )0 P(Our person record vocab)HY(u)HY(lary)YH( uses several built-in XML Schema
+ types: )SM(string)ES(, )SM(short)ES(, and
+ )SM(unsignedInt)ES(. Until now we haven't talked about
+ the mapping of built-in XML Schema types to C++ types and how
+ to work with them. This section provides an overview
+ of the built-in types. For more detailed infor)HY(ma)HY(tion)YH( refer
+ to )R15 2 A(Section
+ 2.5, "Mapping for Built-in Data Types")EA( in the C++/Tree Mapping
+ User Manual.)EP(
+
+ )0 P(In XML Schema, built-in types are defined in the XML Schema names)HY(pace)YH(.
+ By default, the C++/Tree mapping maps this names)HY(pace)YH( to C++
+ names)HY(pace)YH( )SM(xml_schema)ES( \201this mapping can be altered
+ with the )SM(--names)HY(pace)YH(-map)ES( option\202. The follow)HY(ing)YH( table
+ summa)HY(rizes)YH( the mapping of XML Schema built-in types to C++ types:)EP(
+
+
+ )0 PT(
+
+ )0 P(As you can see from the table above a number of built-in
+ XML Schema types are mapped to funda)HY(men)HY(tal)YH( C++ types such
+ as )SM(int)ES( or )SM(bool)ES(. All string-based
+ XML Schema types are mapped to C++ types that are derived
+ from either )SM(std::string)ES( or
+ )SM(std::wstring)ES(, depend)HY(ing)YH( on the char)HY(ac)HY(ter)YH(
+ type selected. For access and modi)HY(fi)HY(ca)HY(tion)YH( purposes these
+ types can be treated as )SM(std::string)ES(. A number
+ of built-in types, such as )SM(qname)ES(, the binary
+ types, and the date/time types do not have suit)HY(able)YH(
+ funda)HY(men)HY(tal)YH( or stan)HY(dard)YH( C++ types to map to. As a result,
+ these types are imple)HY(mented)YH( from scratch in the XSD runtime.
+ For more infor)HY(ma)HY(tion)YH( on their inter)HY(faces)YH( refer to
+ )R15 2 A(Section
+ 2.5, "Mapping for Built-in Data Types")EA( in the C++/Tree Mapping
+ User Manual.)EP(
+
+
+
+
+
+ )0 1 26 H(5)WB 66 Sn()WB 30 Sn( Parsing)EA()EH(
+
+ )0 P(We have already seen how to parse XML to an object model in this guide
+ before. In this chapter we will discuss the parsing topic in more
+ detail.)EP(
+
+ )0 P(By default, the C++/Tree mapping provides a total of 14 over)HY(loaded)YH(
+ parsing func)HY(tions)YH(. They differ in the input methods used to
+ read XML as well as the error report)HY(ing)YH( mech)HY(a)HY(nisms)YH(. It is also possi)HY(ble)YH(
+ to gener)HY(ate)YH( types for root elements instead of parsing and seri)HY(al)HY(iza)HY(tion)YH(
+ func)HY(tions)YH(. This may be useful if your XML vocab)HY(u)HY(lary)YH( has multi)HY(ple)YH(
+ root elements. For more infor)HY(ma)HY(tion)YH( on element types refer to
+ )R16 2 A(Section
+ 2.9, "Mapping for Global Elements")EA( in the C++/Tree Mapping User
+ Manual.)EP(
+
+
+ )0 P(In this section we will discuss the most commonly used versions of
+ the parsing func)HY(tions)YH(. For a compre)HY(hen)HY(sive)YH( descrip)HY(tion)YH( of parsing
+ refer to )R17 2 A(Chapter
+ 3, "Parsing")EA( in the C++/Tree Mapping User Manual. For the )SM(people)ES(
+ global element from our person record vocab)HY(u)HY(lary)YH(, we will concen)HY(trate)YH(
+ on the follow)HY(ing)YH( three parsing func)HY(tions)YH(:)EP(
+
+ ) 15 71 PR(std::[unique|auto]_ptr<people_t>
+people \201const std::string& uri,
+ xml_schema::flags f = 0,
+ const xml_schema::properties& p = xml_schema::properties \201\202\202;
+
+std::[unique|auto]_ptr<people_t>
+people \201std::istream& is,
+ xml_schema::flags f = 0,
+ const xml_schema::properties& p = xml_schema::properties \201\202\202;
+
+std::[unique|auto]_ptr<people_t>
+people \201std::istream& is,
+ const std::string& resource_id,
+ xml_schema::flags f = 0,
+ const xml_schema::properties& p = ::xml_schema::properties \201\202\202;)RP(
+
+ )0 P(The first func)HY(tion)YH( parses a local file or a URI. We have already
+ used this parsing func)HY(tion)YH( in the previ)HY(ous)YH( chap)HY(ters)YH(. The second
+ and third func)HY(tions)YH( read XML from a stan)HY(dard)YH( input stream. The
+ last func)HY(tion)YH( also requires a resource id. This id is used to
+ iden)HY(tify)YH( the XML docu)HY(ment)YH( being parser in diag)HY(nos)HY(tics)YH( messages
+ as well as to resolve rela)HY(tive)YH( paths to other docu)HY(ments)YH( \201for example,
+ schemas\202 that might be refer)HY(enced)YH( from the XML docu)HY(ment)YH(.)EP(
+
+ )0 P(The last two argu)HY(ments)YH( to all three parsing func)HY(tions)YH( are parsing
+ flags and prop)HY(er)HY(ties)YH(. The flags argu)HY(ment)YH( provides a number of ways
+ to fine-tune the parsing process. The prop)HY(er)HY(ties)YH( argu)HY(ment)YH( allows
+ to pass addi)HY(tional)YH( infor)HY(ma)HY(tion)YH( to the parsing func)HY(tions)YH(. We will
+ use these two argu)HY(ments)YH( in )0 39 1 A(Section 5.1, "XML Schema
+ Vali)HY(da)HY(tion)YH( and Search)HY(ing)YH(")39 0 TN TL()Ec /AF f D( below. All three func)HY(tions)YH( return
+ the object model as either )SM(std::unique_ptr)ES( \201C++11\202 or
+ )SM(std::auto_ptr)ES( \201C++98\202, depend)HY(ing)YH( on the C++ stan)HY(dard)YH(
+ selected \201)SM(--std)ES( XSD compiler option\202. The follow)HY(ing)YH(
+ example shows how we can use the above parsing func)HY(tions)YH(:)EP(
+
+ ) 17 67 PR(using std::unique_ptr;
+
+// Parse a local file or URI.
+//
+unique_ptr<people_t> p1 \201people \201"people.xml"\202\202;
+unique_ptr<people_t> p2 \201people \201"http://example.com/people.xml"\202\202;
+
+// Parse a local file via ifstream.
+//
+std::ifstream ifs \201"people.xml"\202;
+unique_ptr<people_t> p3 \201people \201ifs, "people.xml"\202\202;
+
+// Parse an XML string.
+//
+std::string str \201"..."\202; // XML in a string.
+std::istringstream iss \201str\202;
+unique_ptr<people_t> p4 \201people \201iss\202\202;)RP(
+
+
+ )0 2 27 H(5.1)WB 67 Sn()WB 31 Sn( XML Schema Vali)HY(da)HY(tion)YH( and Search)HY(ing)YH()EA()EH(
+
+ )0 P(The C++/Tree mapping relies on the under)HY(ly)HY(ing)YH( Xerces-C++ XML
+ parser for full XML docu)HY(ment)YH( vali)HY(da)HY(tion)YH(. The XML Schema
+ vali)HY(da)HY(tion)YH( is enabled by default and can be disabled by
+ passing the )SM(xml_schema::flags::dont_vali)HY(date)YH()ES(
+ flag to the parsing func)HY(tions)YH(, for example:)EP(
+
+ ) 2 59 PR(unique_ptr<people_t> p \201
+ people \201"people.xml", xml_schema::flags::dont_validate\202\202;)RP(
+
+ )0 P(Even when XML Schema vali)HY(da)HY(tion)YH( is disabled, the gener)HY(ated)YH(
+ code still performs a number of checks to prevent
+ construc)HY(tion)YH( of an incon)HY(sis)HY(tent)YH( object model \201for example, an
+ object model with missing required attributes or elements\202.)EP(
+
+ )0 P(When XML Schema vali)HY(da)HY(tion)YH( is enabled, the XML parser needs
+ to locate a schema to vali)HY(date)YH( against. There are several
+ methods to provide the schema loca)HY(tion)YH( infor)HY(ma)HY(tion)YH( to the
+ parser. The easiest and most commonly used method is to
+ specify schema loca)HY(tions)YH( in the XML docu)HY(ment)YH( itself
+ with the )SM(schemaLo)HY(ca)HY(tion)YH()ES( or
+ )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES( attributes, for example:)EP(
+
+ ) 4 74 PR(<?xml version="1.0" ?>
+<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="people.xsd"
+ xsi:schemaLocation="http://www.w3.org/XML/1998/namespace xml.xsd">)RP(
+
+ )0 P(As you might have noticed, we used this method in all the sample XML
+ docu)HY(ments)YH( presented in this guide up until now. Note that the
+ schema loca)HY(tions)YH( spec)HY(i)HY(fied)YH( with these two attributes are rela)HY(tive)YH(
+ to the docu)HY(ment)YH('s path unless they are abso)HY(lute)YH( URIs \201that is
+ start with )SM(http://)ES(, )SM(file://)ES(, etc.\202.
+ In partic)HY(u)HY(lar)YH(, if you specify just file names as your schema
+ loca)HY(tions)YH(, as we did above, then the schemas should reside in
+ the same direc)HY(tory)YH( as the XML docu)HY(ment)YH( itself.)EP(
+
+ )0 P(Another method of provid)HY(ing)YH( the schema loca)HY(tion)YH( infor)HY(ma)HY(tion)YH(
+ is via the )SM(xml_schema::prop)HY(er)HY(ties)YH()ES( argu)HY(ment)YH(, as
+ shown in the follow)HY(ing)YH( example:)EP(
+
+ ) 5 74 PR(xml_schema::properties props;
+props.no_namespace_schema_location \201"people.xsd"\202;
+props.schema_location \201"http://www.w3.org/XML/1998/namespace", "xml.xsd"\202;
+
+unique_ptr<people_t> p \201people \201"people.xml", 0, props\202\202;)RP(
+
+ )0 P(The schema loca)HY(tions)YH( provided with this method over)HY(rides)YH(
+ those spec)HY(i)HY(fied)YH( in the XML docu)HY(ment)YH(. As with the previ)HY(ous)YH(
+ method, the schema loca)HY(tions)YH( spec)HY(i)HY(fied)YH( this way are
+ rela)HY(tive)YH( to the docu)HY(ment)YH('s path unless they are abso)HY(lute)YH( URIs.
+ In partic)HY(u)HY(lar)YH(, if you want to use local schemas that are
+ not related to the docu)HY(ment)YH( being parsed, then you will
+ need to use the )SM(file://)ES( URI. The follow)HY(ing)YH(
+ example shows how to use schemas that reside in the current
+ working direc)HY(tory)YH(:)EP(
+
+ ) 19 57 PR(#include <unistd.h> // getcwd
+#include <limits.h> // PATH_MAX
+
+char cwd[PATH_MAX];
+if \201getcwd \201cwd, PATH_MAX\202 == 0\202
+{
+ // Buffer too small?
+}
+
+xml_schema::properties props;
+
+props.no_namespace_schema_location \201
+ "file:///" + std::string \201cwd\202 + "/people.xsd"\202;
+
+props.schema_location \201
+ "http://www.w3.org/XML/1998/namespace",
+ "file:///" + std::string \201cwd\202 + "/xml.xsd"\202;
+
+unique_ptr<people_t> p \201people \201"people.xml", 0, props\202\202;)RP(
+
+ )0 P(A third method is the most useful if you are plan)HY(ning)YH( to parse
+ several XML docu)HY(ments)YH( of the same vocab)HY(u)HY(lary)YH(. In that case
+ it may be bene)HY(fi)HY(cial)YH( to pre-parse and cache the schemas in
+ the XML parser which can then be used to parse all docu)HY(ments)YH(
+ without re-parsing the schemas. For more infor)HY(ma)HY(tion)YH( on
+ this method refer to the )SM(caching)ES( example in the
+ )SM(cxx/tree/)ES( direc)HY(tory)YH( in the
+ )R5 2 A(xsd-exam)HY(ples)YH()EA( package.
+ It is also possi)HY(ble)YH( to convert the schemas into a pre-compiled
+ binary repre)HY(sen)HY(ta)HY(tion)YH( and embed this repre)HY(sen)HY(ta)HY(tion)YH( directly into
+ the appli)HY(ca)HY(tion)YH( executable. With this approach your appli)HY(ca)HY(tion)YH( can
+ perform XML Schema vali)HY(da)HY(tion)YH( without depend)HY(ing)YH( on any exter)HY(nal)YH(
+ schema files. For more infor)HY(ma)HY(tion)YH( on how to achieve this refer to
+ the )SM(embed)HY(ded)YH()ES( example in the )SM(cxx/tree/)ES(
+ direc)HY(tory)YH( in the )R5 2 A(xsd-exam)HY(ples)YH()EA(
+ package.)EP(
+
+ )0 P(When the XML parser cannot locate a schema for the
+ XML docu)HY(ment)YH(, the vali)HY(da)HY(tion)YH( fails and XML docu)HY(ment)YH(
+ elements and attributes for which schema defi)HY(ni)HY(tions)YH( could
+ not be located are reported in the diag)HY(nos)HY(tics)YH(. For
+ example, if we remove the )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES(
+ attribute in )SM(people.xml)ES( from the previ)HY(ous)YH( chapter,
+ then we will get the follow)HY(ing)YH( diag)HY(nos)HY(tics)YH( if we try to parse
+ this file with vali)HY(da)HY(tion)YH( enabled:)EP(
+
+ ) 8 74 PR(people.xml:2:63 error: no declaration found for element 'people'
+people.xml:4:18 error: no declaration found for element 'person'
+people.xml:4:18 error: attribute 'id' is not declared for element 'person'
+people.xml:5:17 error: no declaration found for element 'first-name'
+people.xml:6:18 error: no declaration found for element 'middle-name'
+people.xml:7:16 error: no declaration found for element 'last-name'
+people.xml:8:13 error: no declaration found for element 'gender'
+people.xml:9:10 error: no declaration found for element 'age')RP(
+
+ )0 2 28 H(5.2)WB 68 Sn()WB 32 Sn( Error Handling)EA()EH(
+
+ )0 P(The parsing func)HY(tions)YH( offer a number of ways to handle error condi)HY(tions)YH(
+ with the C++ excep)HY(tions)YH( being the most commonly used mech)HY(a)HY(nism)YH(. All
+ C++/Tree excep)HY(tions)YH( derive from common base )SM(xml_schema::excep)HY(tion)YH()ES(
+ which in turn derives from )SM(std::excep)HY(tion)YH()ES(. The easiest
+ way to uniformly handle all possi)HY(ble)YH( C++/Tree excep)HY(tions)YH( and print
+ detailed infor)HY(ma)HY(tion)YH( about the error is to catch and print
+ )SM(xml_schema::excep)HY(tion)YH()ES(, as shown in the follow)HY(ing)YH(
+ example:)EP(
+
+ ) 8 49 PR(try
+{
+ unique_ptr<people_t> p \201people \201"people.xml"\202\202;
+}
+catch \201const xml_schema::exception& e\202
+{
+ cerr << e << endl;
+})RP(
+
+ )0 P(Each indi)HY(vid)HY(ual)YH( C++/Tree excep)HY(tion)YH( also allows you to obtain
+ error details program)HY(mat)HY(i)HY(cally)YH(. For example, the
+ )SM(xml_schema::parsing)ES( excep)HY(tion)YH( is thrown when
+ the XML parsing and vali)HY(da)HY(tion)YH( in the under)HY(ly)HY(ing)YH( XML parser
+ fails. It encap)HY(su)HY(lates)YH( various diag)HY(nos)HY(tics)YH( infor)HY(ma)HY(tion)YH(
+ such as the file name, line and column numbers, as well as the
+ error or warning message for each entry. For more infor)HY(ma)HY(tion)YH(
+ about this and other excep)HY(tions)YH( that can be thrown during
+ parsing, refer to
+ )R18 2 A(Section
+ 3.3, "Error Handling")EA( in the C++/Tree Mapping
+ User Manual.)EP(
+
+ )0 P(Note that if you are parsing )SM(std::istream)ES( on which
+ excep)HY(tions)YH( are not enabled, then you will need to check the
+ stream state after the call to the parsing func)HY(tion)YH( in order
+ to detect any possi)HY(ble)YH( stream fail)HY(ures)YH(, for example:)EP(
+
+ ) 15 52 PR(std::ifstream ifs \201"people.xml"\202;
+
+if \201ifs.fail \201\202\202
+{
+ cerr << "people.xml: unable to open" << endl;
+ return 1;
+}
+
+unique_ptr<people_t> p \201people \201ifs, "people.xml"\202\202;
+
+if \201ifs.fail \201\202\202
+{
+ cerr << "people.xml: read error" << endl;
+ return 1;
+})RP(
+
+ )0 P(The above example can be rewrit)HY(ten)YH( to use excep)HY(tions)YH( as
+ shown below:)EP(
+
+ ) 13 66 PR(try
+{
+ std::ifstream ifs;
+ ifs.exceptions \201std::ifstream::badbit | std::ifstream::failbit\202;
+ ifs.open \201"people.xml"\202;
+
+ unique_ptr<people_t> p \201people \201ifs, "people.xml"\202\202;
+}
+catch \201const std::ifstream::failure&\202
+{
+ cerr << "people.xml: unable to open or read error" << endl;
+ return 1;
+})RP(
+
+
+
+
+
+ )0 1 29 H(6)WB 69 Sn()WB 33 Sn( Seri)HY(al)HY(iza)HY(tion)YH()EA()EH(
+
+ )0 P(We have already seen how to seri)HY(al)HY(ize)YH( an object model back to XML
+ in this guide before. In this chapter we will discuss the
+ seri)HY(al)HY(iza)HY(tion)YH( topic in more detail.)EP(
+
+ )0 P(By default, the C++/Tree mapping provides a total of 8 over)HY(loaded)YH(
+ seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(. They differ in the output methods used to write
+ XML as well as the error report)HY(ing)YH( mech)HY(a)HY(nisms)YH(. It is also possi)HY(ble)YH( to
+ gener)HY(ate)YH( types for root elements instead of parsing and seri)HY(al)HY(iza)HY(tion)YH(
+ func)HY(tions)YH(. This may be useful if your XML vocab)HY(u)HY(lary)YH( has multi)HY(ple)YH(
+ root elements. For more infor)HY(ma)HY(tion)YH( on element types refer to
+ )R16 2 A(Section
+ 2.9, "Mapping for Global Elements")EA( in the C++/Tree Mapping User
+ Manual.)EP(
+
+
+ )0 P(In this section we will discuss the most commonly
+ used version of seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(. For a compre)HY(hen)HY(sive)YH( descrip)HY(tion)YH(
+ of seri)HY(al)HY(iza)HY(tion)YH( refer to
+ )R19 2 A(Chapter
+ 4, "Seri)HY(al)HY(iza)HY(tion)YH(")EA( in the C++/Tree Mapping User Manual. For the
+ )SM(people)ES( global element from our person record vocab)HY(u)HY(lary)YH(,
+ we will concen)HY(trate)YH( on the follow)HY(ing)YH( seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(:)EP(
+
+ ) 7 50 PR(void
+people \201std::ostream& os,
+ const people_t& x,
+ const xml_schema::namespace_infomap& map =
+ xml_schema::namespace_infomap \201\202,
+ const std::string& encoding = "UTF-8",
+ xml_schema::flags f = 0\202;)RP(
+
+ )0 P(This func)HY(tion)YH( seri)HY(al)HY(izes)YH( the object model passed as the second
+ argu)HY(ment)YH( to the stan)HY(dard)YH( output stream passed as the first
+ argu)HY(ment)YH(. The third argu)HY(ment)YH( is a names)HY(pace)YH( infor)HY(ma)HY(tion)YH( map
+ which we will discuss in more detail in the next section.
+ The fourth argu)HY(ment)YH( is a char)HY(ac)HY(ter)YH( encod)HY(ing)YH( that the result)HY(ing)YH(
+ XML docu)HY(ment)YH( should be in. Possi)HY(ble)YH( valid values for this
+ argu)HY(ment)YH( are "US-ASCII", "ISO8859-1", "UTF-8", "UTF-16BE",
+ "UTF-16LE", "UCS-4BE", and "UCS-4LE". Finally, the flags
+ argu)HY(ment)YH( allows fine-tuning of the seri)HY(al)HY(iza)HY(tion)YH( process.
+ The follow)HY(ing)YH( example shows how we can use the above seri)HY(al)HY(iza)HY(tion)YH(
+ func)HY(tion)YH(:)EP(
+
+ ) 19 34 PR(people_t& p = ...
+
+xml_schema::namespace_infomap map;
+map[""].schema = "people.xsd";
+
+// Serialize to stdout.
+//
+people \201std::cout, p, map\202;
+
+// Serialize to a file.
+//
+std::ofstream ofs \201"people.xml"\202;
+people \201ofs, p, map\202;
+
+// Serialize to a string.
+//
+std::ostringstream oss;
+people \201oss, p, map\202;
+std::string xml \201oss.str \201\202\202;)RP(
+
+
+ )0 2 30 H(6.1)WB 70 Sn()WB 34 Sn( Names)HY(pace)YH( and Schema Infor)HY(ma)HY(tion)YH()EA()EH(
+
+ )0 P(While XML seri)HY(al)HY(iza)HY(tion)YH( can be done just from the object
+ model alone, it is often desir)HY(able)YH( to assign mean)HY(ing)HY(ful)YH(
+ prefixes to XML names)HY(paces)YH( used in the vocab)HY(u)HY(lary)YH( as
+ well as to provide the schema loca)HY(tion)YH( infor)HY(ma)HY(tion)YH(.
+ This is accom)HY(plished)YH( by passing the names)HY(pace)YH( infor)HY(ma)HY(tion)YH(
+ map to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(. The key in this map is
+ a names)HY(pace)YH( prefix that should be assigned to an XML names)HY(pace)YH(
+ spec)HY(i)HY(fied)YH( in the )SM(name)ES( vari)HY(able)YH( of the
+ map value. You can also assign an optional schema loca)HY(tion)YH( for
+ this names)HY(pace)YH( in the )SM(schema)ES( vari)HY(able)YH(. Based
+ on each key-value entry in this map, the seri)HY(al)HY(iza)HY(tion)YH(
+ func)HY(tion)YH( adds two attributes to the result)HY(ing)YH( XML docu)HY(ment)YH(:
+ the names)HY(pace)YH(-prefix mapping attribute and schema loca)HY(tion)YH(
+ attribute. The empty prefix indi)HY(cates)YH( that the names)HY(pace)YH(
+ should be mapped without a prefix. For example, the follow)HY(ing)YH(
+ map:)EP(
+
+ ) 7 55 PR(xml_schema::namespace_infomap map;
+
+map[""].name = "http://www.example.com/example";
+map[""].schema = "example.xsd";
+
+map["x"].name = "http://www.w3.org/XML/1998/namespace";
+map["x"].schema = "xml.xsd";)RP(
+
+ )0 P(Results in the follow)HY(ing)YH( XML docu)HY(ment)YH(:)EP(
+
+ ) 7 68 PR(<?xml version="1.0" ?>
+<example
+ xmlns="http://www.example.com/example"
+ xmlns:x="http://www.w3.org/XML/1998/namespace"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.example.com/example example.xsd
+ http://www.w3.org/XML/1998/namespace xml.xsd">)RP(
+
+ )0 P(The empty names)HY(pace)YH( indi)HY(cates)YH( that the vocab)HY(u)HY(lary)YH( has no target
+ names)HY(pace)YH(. For example, the follow)HY(ing)YH( map results in only the
+ )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES( attribute being added:)EP(
+
+ ) 4 34 PR(xml_schema::namespace_infomap map;
+
+map[""].name = "";
+map[""].schema = "example.xsd";)RP(
+
+ )0 2 31 H(6.2)WB 71 Sn()WB 35 Sn( Error Handling)EA()EH(
+
+ )0 P(Similar to the parsing func)HY(tions)YH(, the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( offer a
+ number of ways to handle error condi)HY(tions)YH( with the C++ excep)HY(tions)YH( being
+ the most commonly used mech)HY(a)HY(nisms)YH(. As with parsing, the easiest way to
+ uniformly handle all possi)HY(ble)YH( seri)HY(al)HY(iza)HY(tion)YH( excep)HY(tions)YH( and print
+ detailed infor)HY(ma)HY(tion)YH( about the error is to catch and print
+ )SM(xml_schema::excep)HY(tion)YH()ES(:)EP(
+
+ ) 13 38 PR(try
+{
+ people_t& p = ...
+
+ xml_schema::namespace_infomap map;
+ map[""].schema = "people.xsd";
+
+ people \201std::cout, p, map\202\202;
+}
+catch \201const xml_schema::exception& e\202
+{
+ cerr << e << endl;
+})RP(
+
+ )0 P(The most commonly encoun)HY(tered)YH( seri)HY(al)HY(iza)HY(tion)YH( excep)HY(tion)YH( is
+ )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES(. It is thrown
+ when the XML seri)HY(al)HY(iza)HY(tion)YH( in the under)HY(ly)HY(ing)YH( XML writer
+ fails. It encap)HY(su)HY(lates)YH( various diag)HY(nos)HY(tics)YH( infor)HY(ma)HY(tion)YH(
+ such as the file name, line and column numbers, as well as the
+ error or warning message for each entry. For more infor)HY(ma)HY(tion)YH(
+ about this and other excep)HY(tions)YH( that can be thrown during
+ seri)HY(al)HY(iza)HY(tion)YH(, refer to
+ )R20 2 A(Section
+ 4.4, "Error Handling")EA( in the C++/Tree Mapping
+ User Manual.)EP(
+
+ )0 P(Note that if you are seri)HY(al)HY(iz)HY(ing)YH( to )SM(std::ostream)ES( on
+ which excep)HY(tions)YH( are not enabled, then you will need to check the
+ stream state after the call to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH( in order
+ to detect any possi)HY(ble)YH( stream fail)HY(ures)YH(, for example:)EP(
+
+ ) 15 47 PR(std::ofstream ofs \201"people.xml"\202;
+
+if \201ofs.fail \201\202\202
+{
+ cerr << "people.xml: unable to open" << endl;
+ return 1;
+}
+
+people \201ofs, p, map\202\202;
+
+if \201ofs.fail \201\202\202
+{
+ cerr << "people.xml: write error" << endl;
+ return 1;
+})RP(
+
+ )0 P(The above example can be rewrit)HY(ten)YH( to use excep)HY(tions)YH( as
+ shown below:)EP(
+
+ ) 13 66 PR(try
+{
+ std::ofstream ofs;
+ ofs.exceptions \201std::ofstream::badbit | std::ofstream::failbit\202;
+ ofs.open \201"people.xml"\202;
+
+ people \201ofs, p, map\202\202;
+}
+catch \201const std::ofstream::failure&\202
+{
+ cerr << "people.xml: unable to open or write error" << endl;
+ return 1;
+})RP(
+
+ )BR(
+)BR(
+
+)WB NL
+/TE t D NP /OU t D TU PM 1 eq and{/Pn () D showpage}if end restore
diff --git a/doc/pregenerated/cxx/tree/manual/cxx-tree-manual.pdf b/doc/pregenerated/cxx/tree/manual/cxx-tree-manual.pdf
new file mode 100644
index 0000000..b8e55a7
--- /dev/null
+++ b/doc/pregenerated/cxx/tree/manual/cxx-tree-manual.pdf
Binary files differ
diff --git a/doc/pregenerated/cxx/tree/manual/cxx-tree-manual.ps b/doc/pregenerated/cxx/tree/manual/cxx-tree-manual.ps
new file mode 100644
index 0000000..7c32dea
--- /dev/null
+++ b/doc/pregenerated/cxx/tree/manual/cxx-tree-manual.ps
@@ -0,0 +1,7387 @@
+%!PS
+%%Title: C++/Tree Mapping User Manual
+%%Creator: html2ps version 1.0 beta7
+%%EndComments
+save
+2000 dict begin
+/d {bind def} bind def
+/D {def} d
+/t true D
+/f false D
+/FL [/Times-Roman
+/Times-Italic
+/Times-Bold
+/Times-BoldItalic
+/Courier
+/Courier-Oblique
+/Courier-Bold
+/Courier-BoldOblique
+/Helvetica
+/Helvetica-Oblique
+/Helvetica-Bold
+/Helvetica-BoldOblique] D
+/WF t D
+/WI 0 D
+/F 1 D
+/IW 471 F div D
+/IL 621 F div D
+/PS 791 D
+/EF [0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 2] D
+/EZ [12 10 19 17 15 13 12 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 8 8] D
+/Ey [0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] D
+/EG [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] D
+/Tm [1 1 0.8 0.8 0.8 0.8 0.8 0.8 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1.3 0 0] D
+/Bm [1 1 0.5 0.5 0.5 0.5 0.5 0.5 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1 0 0] D
+/Lm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 2 0 0 0] D
+/Rm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] D
+/EU [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0] D
+/NO f D
+/YY [[{()}{ h }][{ h }{()}][{()}{()}]] D
+/ZZ [[{ (September 2023) }{ Pn }][{ Pn }{ (September 2023) }][{ Ti(, v)join ME 0 get join }{ Ti(, v)join ME 0 get join }]] D
+/Ts EZ 0 get D
+/TU f D
+/Xp t D
+/AU f D
+/SN 0 D
+/Cf t D
+/Tp t D
+/Fe f D
+/TI 2 Ts mul D
+/Fm 14 D
+/xL 71 D
+/xR 71 D
+/yL 706 D
+/yR 706 D
+/Wl 471 F div D
+/Wr 471 F div D
+/hL 621 F div D
+/hR 621 F div D
+/FE {newpath Fm neg Fm M CP BB IW Fm add Fm L IW Fm add IL Fm add neg L CP BB
+ Fm neg IL Fm add neg L closepath} D
+/LA {PM 0 eq{/IW Wl D /IL hL D}{/IW Wr D /IL hR D}ie /W IW D /LL W D /LS W D
+ TU PM 0 eq and{IW 56 F div add SA{Sf div}if 0 translate}
+ {PM 0 eq{xL yL}{xR yR}ie translate F SA{Sf mul}if dup scale
+ CS CF FS Cf{CA CL get VC}if /Bb f D}ie 0 0 M
+ TF not Tc or {Cf{gsave SA{1 Sf div dup scale}if Cb VC FE fill grestore}if}if}D
+/Pi 0 Ts mul D
+/SG [0.8 1 1] D
+/Ab 15 D
+/J 0 D
+/Tc t D
+/NH 6 D
+/Nf f D
+/Pa f D
+/LH 1.2 D
+/XR f D
+/Xr {/pN E D ( [p ) WB pN WB (] )WB} D
+/Db [16#FF 16#FF 16#FF] D
+/Dt [16#00 16#00 16#00] D
+/eA f D
+/Fi f D
+/bT f D
+/Lc t D
+/Dl [16#00 16#00 16#00] D
+/LX f D
+/Br 0.25 D
+/IA ([IMAGE]) D
+/DS {/PF f D()WB NL NP()pop RC ZF} D
+/Gb f D
+/Mb t D
+/Hc [16#00 16#00 16#00] D
+/Bl 3 D
+/MI -15.6 D
+/DX (DRAFT) D
+/Di 0 D
+/Tt 113.385826771654 D
+/Th { (
+) 2 Al()BR (
+ ) 0 1 -1 H()4 FZ (C++/Tree Mapping User Manual) ES()EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+ ) 0 1 -1 H ( ) EH (
+) Ea()BR (
+ ) 0 P (Revision ) ME 0 get join(     September 2023)join EP (
+ ) 0 P (Copyright © 2005-2023 Code Synthesis.) EP (
+
+ ) 0 P (Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ ) R0 2 A (GNU Free
+ Documentation License, version 1.2) EA (; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ ) EP (
+
+ ) 0 P (This document is available in the following formats:
+ ) R1 2 A (XHTML) EA (,
+ ) R2 2 A (PDF) EA (, and
+ ) R3 2 A (PostScript) EA (.) EP()} D
+/tH {()0 1 -1 H (Table of Contents) EH()} D
+/FD 2 D
+/Dy 2 D
+/cD [16#F0 16#F0 16#F0] D
+/FW 0.6 D
+/FU [16#00 16#00 16#00] D
+/ET {/RM f D /A0 3 D /PN SN D /OU t D /Ou t D /W IW D /LL W D D1
+ Ms not TP and{Ip}if /TF f D} D
+
+%-- End of variable part --
+/MySymbol 10 dict dup begin
+ /FontType 3 D /FontMatrix [.001 0 0 .001 0 0 ] D /FontBBox [25 -10 600 600] D
+ /Encoding 256 array D 0 1 255{Encoding exch /.notdef put}for
+ Encoding (e) 0 get /euro put
+ /Metrics 2 dict D Metrics begin
+ /.notdef 0 D
+ /euro 651 D
+ end
+ /BBox 2 dict D BBox begin
+ /.notdef [0 0 0 0] D
+ /euro [25 -10 600 600] D
+ end
+ /CharacterDefs 2 dict D CharacterDefs begin
+ /.notdef {} D
+ /euro{newpath 114 600 moveto 631 600 lineto 464 200 lineto 573 200 lineto
+ 573 0 lineto -94 0 lineto 31 300 lineto -10 300 lineto closepath clip
+ 50 setlinewidth newpath 656 300 moveto 381 300 275 0 360 arc stroke
+ -19 350 moveto 600 0 rlineto -19 250 moveto 600 0 rlineto stroke}d
+ end
+ /BuildChar{0 begin
+ /char E D /fontdict E D /charname fontdict /Encoding get char get D
+ fontdict begin
+ Metrics charname get 0 BBox charname get aload pop setcachedevice
+ CharacterDefs charname get exec
+ end
+ end}D
+ /BuildChar load 0 3 dict put /UniqueID 1 D
+end
+definefont pop
+
+/Cd {aload length 2 idiv dup dict begin {D} repeat currentdict end} D
+/EX {EC cvx exec} D
+/DU {} d
+/BB {pop pop}d
+/ie {ifelse} d
+/E {exch} d
+/M {moveto} d
+/R {rmoveto} d
+/L {lineto} d
+/RL {rlineto} d
+/CP {currentpoint} d
+/SW {stringwidth} d
+/GI {getinterval} d
+/PI {putinterval} d
+/Sg {setgray} d
+/LW {setlinewidth} d
+/S {dup () ne OU and{0 Co R AT 3 eq LB and HF not and A1 0 ne A2 0 ne or and
+ {A2 0 32 A1 0 6 -1 roll awidthshow}{show}ie 0 Co neg R}{pop}ie
+ OU PH 3 eq or{/Ms t D}if} D
+/U {OU{gsave CP currentfont /FontInfo get /UnderlinePosition get
+ 0 E currentfont /FontMatrix get dtransform E pop add newpath M dup SW pop
+ CJ 0 RL stroke grestore}if} D
+/B {OU Br 0 gt and{CP Ts neg Ts .33 mul R gsave 0 Sg
+ CP newpath Ts Br mul 0 360 arc closepath UI 2 mod 0 eq{stroke}{fill}ie
+ grestore M CP E Ts Br 1 add mul sub E BB /Ms t D}if}D
+/NP {Ms TP not or PA and OU and{TP{OR}if f1{mF k2 /mF E D /YC 0 D}if
+ TP TU not PM 0 eq or and{showpage}if DU Ip TE not{LA}if 0.6 LW
+ /CI 0 D /TP t D /Hs f D /hl 6 D /Hv 6 D /HI hi D /Ms f D}if Bs XO BO M} D
+/Np {LE sub CP E pop gt PL 0 eq and{NP}if}D
+/Ip {/PN PN 1 add D /Pn RM{1}{4}ie PN Ns D /PM PN SN sub 2 mod D} D
+/GP {E dup 3 -1 roll get PN 1 add 2 mod get dup type /integertype eq
+ {get 0 get}{E pop}ie}d
+/Fc {dup 2 GP exec SW pop /S1 E D dup 1 GP exec SW pop /S2 E D 0 GP exec SW
+ pop /S3 E D S1 0 gt{S2 2 mul S1 add S3 2 mul S1 add 2 copy lt{E}if pop}{0}ie
+ S2 S3 add 2 copy lt{E}if pop IW .9 mul div dup 1 gt{1 E div}{pop 1}ie}D
+/OR {Df{Sd}if tp not{gsave SA{1 Sf div dup scale}if Fe{Cf{FU VC}if FW LW
+ 1 setlinejoin FE stroke}if /YO {60 F div dup 40 gt{pop 40}if}D /cs CS D
+ /cf CF D /CF 0 D /pf PF D /PF f D /Fn FN D /At AT D /AT 0 D /FN EF Hf 1 add
+ get D Fz Fs FS ZZ Fc Fz mul Fs FS EU Hf 1 add get dup type /arraytype eq
+ Cf and{VC}{pop 0 Sg}ie IW IL neg YO sub M ZZ 1 GP exec dup SW pop neg 0 R Sh
+ 0 IL neg YO sub M ZZ 0 GP exec Sh ZZ 2 GP exec dup SW pop IW E sub 2 div
+ IL neg YO sub M Sh Fz Fs FS NO{/AW IW Pn SW pop sub D AW 2 div IL neg YO sub
+ S1 0 gt S2 AW .45 mul gt or S3 AW .45 mul gt or{Fz 2 mul sub}if M Pn Sh}if
+ EU Hf get dup type /arraytype eq Cf and{VC}{pop 0 Sg}ie YY Fc /FN EF Hf get D
+ Hz mul HS FS IW YO M YY 1 GP exec dup SW pop neg 0 R Sh 0 YO M YY 0 GP exec Sh
+ YY 2 GP exec dup SW pop IW E sub 2 div YO M Sh /FN Fn D /AT At D t Pb XO SZ
+ SL get neg R /PF pf D grestore /CF 0 D cs cf FS}if}D
+/Sh {dup () ne{CP Hz 4 div sub BB show CP CS add BB}{pop}ie}D
+/Pb {/OU E D /Ou OU D /PB t D 0 0 M Ba{/Sa save D /BP t D /Fl t D RC /PL 0 D
+ /PH 0 D /W IW D /LE IL .7 mul D /EO 0 D SI ZF /YA 0 D /BO 0 D /C1 () D
+ BA 0 Ts neg R Bb{Xl Yl Xh Yh}if Bb CP Sa restore M
+ {/Yh E D /Xh E D /Yl E D /Xl E D}if /Fl t D}if
+ BL /OU t D /HM f D /Ou t D /PB f D} D
+/Bs {/BP Ba not D}D
+/reencodeISO {
+ dup dup findfont dup length dict begin{1 index /FID ne{D}{pop pop}ie}forall
+ /Encoding ISOLatin1Encoding D currentdict end definefont} D
+/ISOLatin1Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/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/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/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/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/yacute/thorn/ydieresis
+] D
+[128/backslash 129/parenleft 130/parenright 141/circumflex 142/tilde
+143/perthousand 144/dagger 145/daggerdbl 146/Ydieresis 147/scaron 148/Scaron
+149/oe 150/OE 151/guilsinglleft 152/guilsinglright 153/quotesinglbase
+154/quotedblbase 155/quotedblleft 156/quotedblright 157/endash 158/emdash
+159/trademark]
+aload length 2 idiv 1 1 3 -1 roll{pop ISOLatin1Encoding 3 1 roll put}for
+/colorimage where{pop}{
+ /colorimage {
+ pop pop /Pr E D {/Cv Pr D /Gr Cv length 3 idiv string D 0 1 Gr length 1 sub
+ {Gr E dup /i E 3 mul D Cv i get 0.299 mul Cv i 1 add get 0.587 mul add
+ Cv i 2 add get 0.114 mul add cvi put}for Gr} image} D
+}ie
+/pdfmark where{pop}{userdict /pdfmark /cleartomark load put}ie
+WF{FL{reencodeISO D}forall}{4 1 FL length 1 sub{FL E get reencodeISO D}for}ie
+/Symbol dup dup findfont dup length dict begin
+ {1 index /FID ne{D}{pop pop}ie}forall /Encoding [Encoding aload pop]
+ dup 128 /therefore put D currentdict end definefont D
+
+/SF {/CS E D SZ SL CS put FO SL FN put /YI CS LH neg mul D dup ST cvs ( ) join
+ CS ST cvs join C1 E join ( NF ) join /C1 E D CS NF /Wf WF FN 0 gt or D
+ /BW Wf{( ) SW pop}{0}ie D}D
+/NF {/cS E D /cF E D cF 0 ge{FL cF get}{cF -1 eq{/Symbol}{/MySymbol}ie}ie
+ findfont cS scalefont setfont} D
+/FS {CF or /CF E D FR SL CF put CF CF 0 ge{FN 4 mul add}if E SF} D
+/PC {SH /BP f D fin not GL not and{NL}if /HM t D /LL LS D} D
+/BS {/TX E D Wf{/fin f D /CW 0 D /LK 0 D /SC 0 D
+ /RT TX D {RT ( ) search{/NW E D pop /RT E D /WH NW SW pop D CW WH add LL gt
+ {TX SC LK SC sub 1 sub NN GI GL{SH cF cS OC
+ 2 copy cS ne E cF ne or{NF}{pop pop}ie}{PC /CW WH BW add D}ie
+ /SC LK D}
+ {GL{JC}if
+ /CW CW WH add BW add D /HM t D}ie /GL f D /Ph f D
+ /LK LK NW length 1 add add D}{pop exit}ie}loop
+ /fin t D TX SC LK SC sub GI SH RT () ne{GL not{CC}if}if
+ /LC TX length D /WH RT SW pop D CW WH add Hy{HC SW pop add}if LL gt
+ {RT GL{SH cF cS OC 2 copy cS ne E cF ne or{NF}{pop pop}ie
+ Hy{/Ph t D}if /LL LS D}{NL /LL LS D SH}ie}
+ {RT PC Hy{CC}if /Ph Ph Hy or D}ie RT () ne{/GL t D /HM t D}if}
+ {TX SW pop LL le{TX SH}{/NW () D 0 2 TX length 1 sub
+ {/CW E D TX 0 CW GI dup SW pop LL gt{pop NW SH /HM t D NL/LL W XO sub MR sub D
+ /CW CW 2 sub NN D /TX TX CW TX length CW sub GI D TX BS exit}
+ {/NW E D}ie}for}ie}ie /HM t D}D
+/CC {C0 length 0 gt{JC}if /C0 [C1 L1 YA YB Mf NS NB TB AF Bw] D
+ /C1 () D /L0 L1 D /YA 0 D /YB 0 D /Mf 0 D /NS 0 D /NB 0 D}D
+/JC {C0 aload length 0 gt{pop pop pop NB add /NB E D NS add /NS E D
+ dup Mf gt{/Mf E D}{pop}ie dup YB gt{/YB E D}{pop}ie
+ dup YA gt{/YA E D}{pop}ie pop C1 join /C1 E D /C0 [] D}if}D
+/OC {C0 length 0 gt{C1 L1 L0 sub YA YB Mf NS NB TB AF Bw GL C0 aload pop
+ /Bw E D /AF E D /TB E D /NB E D /NS E D /Mf E D /YB E D /YA E D /C0 [] D
+ /L1 E D /C1 E D Ph{HC SH}if NL /GL E D /Bw E D /AF E D /TB E D /NB E D /NS E D
+ /Mf E D /YB E D /YA E D /L1 E D /LL W L1 sub XO sub MR sub WH sub D /CW 0 D
+ C1 E join /C1 E D}if}D
+/BT {/LB t D dup length string copy RS dup dup () ne E ( ) ne and
+ {/CI 0 D /LS LL D /LL W L1 sub XO sub MR sub D BS}
+ {dup ( ) eq{/GL f D}if dup () eq L1 0 eq or{pop}{SH /BP f D /Ph f D}ie}ie
+ /LB f D} D
+/BL {CP E pop XO E M} D
+/NL {JC /GL f D /SK W XO sub MR sub L1 sub TB{Bw add}if D
+ /YA LF{Mf HM Fl not and PF or{LH mul}if}{0 /LF t D}ie YA 2 copy lt{E}if pop D
+ C1 () ne{/FB YB Mf SA{Sf mul}if 4 div 2 copy lt{E}if pop D}if Fl{/Ya YA D}if
+ CP E pop YA sub YB sub LE neg lt Fl not and PB not and{NP}if NT TL BL
+ OU PF not and PB or{/RE L1 TB{Bw sub}if
+ W XO sub MR sub div YA YB add LE BO add div 2 copy lt{E}if pop D
+ RE 1 gt{BL 1 RE div dup scale}if}if
+ AT 2 le{SK AT mul 2 div YA neg R}if
+ AT 3 eq{0 YA neg R TB{/NB NB 1 sub D /NS NS 1 sub D}if /NB NB 1 sub NN D
+ /A3 NS 6 mul NB add D NS NB add 0 eq
+ {/A1 0 D /A2 0 D}
+ {NS 0 eq{/A1 SK NB div dup J gt{pop 0}if D /A2 0 D}{J A3 mul SK lt
+ {/A1 J D /A2 SK J NB mul sub NS div dup Ab gt{/A1 0 D pop 0}if D}
+ {/A1 SK A3 div D /A2 A1 6 mul D}ie}ie}ie /A1 A1 NN D /A2 A2 NN D}if
+ AT 4 eq{0 YA neg R PH 2 le{PD 0 lt{/PD L1 D}if PD M1 gt{/M1 PD D}if
+ L1 PD sub M2 gt{/M2 L1 PD sub D}if}{DV ID 1 sub get 0 ge{Lo 0 R}if}ie}if
+ F0 cF ne Cs cS ne or{F0 Cs NF}if
+ /ms Ms D /Ms f D CP FB sub
+ C1 cvx exec XO EO sub L1 add TB{BW sub}if dup LM gt{/LM E D}{pop}ie
+ PH 0 eq PH 4 eq or Ms and{HF not{/PO t D /AH t D}if
+ BB CP YA add E AT 3 eq LB and{A1 sub}if TB{BW sub}if E BB}
+ {pop pop}ie Ms HM PH 3 eq and or{/BP f D /Fl f D}if
+ /Lo 0 D /L1 0 D /F0 cF D /Cs cS D BP not{0 YB NN neg R}if
+ OU f1 and mF not and{k2 /f1 f D}if
+ OU PF not and PB or{RE 1 gt{RE dup scale}if}if /Ms ms Ms or D
+ /C1 AF{(Cp )}{()}ie D /YA 0 D /YB 0 D BL
+ AT 4 eq LB not and PH 3 ge and
+ {ID DV length lt{DV ID get dup 0 ge{DO E sub /Lo E D /L1 Lo D}{pop}ie
+ /ID ID 1 add D}if}if /T t D CD{/LN LN 1 add D PD}if
+ /PD -1 D /NS 0 D /NB 0 D /TB f D /Ph f D /Mf 0 D /HM f D} D
+/RS {/TM E D /CN 0 D TM{10 eq{TM CN ( ) PI}if /CN CN 1 add D}forall
+ /CN 0 D /BK HM EN and{0}{1}ie D TM
+ {dup 32 ne{TM CN 3 2 roll put /CN CN 1 add D /BK 0 D}
+ {pop BK 0 eq{TM CN 32 put /CN CN 1 add D}if /BK 1 D}ie}forall
+ TM 0 CN GI dup dup () ne E ( ) ne and
+ {dup CN 1 sub get 32 eq{/EN f D}{/EN t D}ie}if} D
+/join {2 copy length E length add string dup 4 2 roll 2 index 0 3 index
+ PI E length E PI}d
+/WR {(\n) search{dup () ne BP not or
+ {Li 4 le CP E pop YI Li mul add LE add 0 lt and PL 0 eq and{NP}if
+ SH NL pop /Li Li 1 sub D WR}{pop pop WR}ie}{SH}ie /CI 0 D /BP f D} D
+/SH {dup dup () ne E ( ) ne and PF or CS Mf gt and{/Mf CS D}if
+ T not Wf and{( ) E join /T t D}if dup BP{/MF CS D}if
+ AT 3 eq{2 copy length dup 0 gt{/NB E NB add D
+ {( ) search{/NS NS 1 add D pop pop}{pop exit}ie}loop}{pop pop}ie}if
+ CD PD 0 lt and{dup DC search{SW pop /PD E L1 add D pop pop}{pop}ie}if
+ 0 Np dup SW pop L1 add /L1 E D dup () ne
+ {C1 (\() join E join (\)) join AU AF and UF or Wf and{( U ) join}if
+ sF{( s ) join}if ( S ) join
+ /C1 E D dup length 1 sub get 32 eq /TB E D /Bw BW D}{pop pop}ie} D
+/BG {AI LG BC add add 0 eq} D
+/ON {OU{Ty AR AI NN get dup 1 add Ln Ns Ty 2 mod 0 eq{(. )}{(\) )}ie join
+ dup SW pop neg 0 R CP E 0 lt{0 E M}{pop}ie CP BB show /Ms t D}if} D
+/Ln {AR AI 3 -1 roll put}D
+/SP {dup CI lt BP not and{dup CI sub 0 E R /CI E D}{pop}ie} D
+/BN {PF{WR /HM f D}{BT NL}ie} D
+/NN {dup 0 lt{pop 0}if} D
+/h {(h) HI ST cvs join cvx exec dup 1 get E Nf{0 get E join}{pop}ie} D
+/H {/fn FN D /Hi E 1 add D 1 sub /HL E D /H2 HL 2 add D /GS EZ H2 get D
+ E Tm H2 get GS mul BE dup 0 gt{1 sub}{pop EG H2 get dup 0 lt{pop AT}if}ie NA
+ WW Np /SL SL 1 add D /FN EF H2 get D GS Ey H2 get FS
+ EU H2 get Sc Hs not HL Hl lt and Hs HL hl lt and or Hi 0 eq or
+ {/HI Hi D /Hs t D /hl HL D /Hv HL D}if HL Hl lt{/hi Hi D}if
+ Nf HI 0 gt and{(h) Hi ST cvs join cvx exec 0 get WB}if
+ /HF t D /AH f D /PO f D} D
+/EH {Bm H2 get GS mul BE OA /SL SL 1 sub NN D /CF 0 D /FN fn D
+ SZ SL get FR SL get FS /HF f D /GS Ts D ()Ec} D
+/P {E PF{WR}{PO{EP}{BN}ie Ts 4 mul Np AE not{Tm 0 get Ts mul neg SP}if
+ dup 0 ge AH and{Pi Pd}if}ie 1 sub dup 0 lt{pop AV AL get}if /AT E D /PO t D} D
+/EP {PF{WR}{BN Ts 4 mul Np}ie AE not{Bm 0 get Ts mul neg SP}if
+ /AT AV AL get D /PO f D} D
+/BE {E PO{EP}{BN}ie Ts 4 mul Np neg SP} D
+/HR {/Aw W EO sub D /RW E dup 0 gt{Aw mul}{neg}ie dup Aw gt{pop Aw}if D /RZ E D
+ E BN Ts neg SP 1 sub 2 div Aw RW sub mul EO add CP E pop M PF{0 Ps neg R}if
+ 0 Np OU{gsave RZ LW Cf{Hc VC}{0 Sg}ie CP BB RW 0 RL CP BB stroke grestore}if
+ /CI 0 D /BP f D PF not{Ts neg SP}if /Ms t D} D
+/AD {I NL EG 14 get dup 0 lt{pop AT}if NA /AE t D Tm 14 get Ts mul neg SP
+ Cf{EU 14 get dup -1 eq{pop CA CL get}if Sc}if} D
+/DA {BN ()ES OA /AE f D ()Ec Bm 14 get Ts mul neg SP} D
+/PR {/MW E D /Li E D Tm 1 get Ps mul BE 0 NA /FN Fp D /PF t D SI /SL SL 1 add D
+ /CF 0 D Ps CS mul Ts div MW WC mul CS mul Ts div dup LL gt PL 0 eq and
+ {LL div div}{pop}ie Ey 1 get FS CP E pop LE add YI neg div cvi dup Li lt
+ AH and{4 lt YI Li mul 5 mul LE add 0 gt or PL 0 eq and{NP}if}{pop}ie
+ EU 1 get Sc /GS Ps D}D
+/RP {WR NL () /PF f D SI /FN 0 D ES Bm 1 get Ps mul neg SP OA /GS Ts D} D
+/SI {/XO Lm 15 get BC NN mul Lm 16 get AI UI sub NN mul add
+ Lm 17 get UI NN mul add Lm 20 get LG NN mul add Ts mul
+ PF{Lm 1 get Ps mul add}if EO add D
+ /MR Rm 15 get BC NN mul Rm 16 get AI UI sub NN mul add
+ Rm 17 get UI NN mul add Rm 20 get LG NN mul add Ts mul
+ PF{Rm 1 get Ps mul add}if D /LL W XO sub MR sub D} D
+/DT {/cC E D BN /LG LG 1 sub D SI /LG LG 1 add D WW 2 div Np BL} D
+/DD {WB Cc 0 eq cC 0 eq and L1 0 eq or Lm 20 get Ts mul L1 sub TB{BW add}if
+ Ts 2 div lt or NL /LF E D SI BL /cC 0 D} D
+/DL {Dc LG Cc put /Cc E D BG{Tm 18 get Ts mul BE}{BN}ie /LG LG 1 add D BL} D
+/LD {BN LG 0 gt{/LG LG 1 sub D}if /Cc Dc LG get D SI
+ BG{()Bm 18 get Ts mul BE}if BL} D
+/UL {BG{Tm 17 get Ts mul BE}{BN}ie NR AI NN 0 put /UI UI 1 add D
+ /AI AI 1 add D SI BL} D
+/LU {BN /UI UI 1 sub D /AI AI 1 sub D SI BG{()Bm 17 get Ts mul BE}if BL} D
+/OL {E BG{Tm 16 get Ts mul BE}{BN}ie TR AI NN Ty put /Ty E D NR AI NN 1 put
+ /AI AI 1 add D SI BL 1 Ln} D
+/LO {BN /AI AI 1 sub D /Ty TR AI get D SI BG{()Bm 16 get Ts mul BE}if BL} D
+/LI {E BN -1 SP /BP f D /CI 0 D 0 Np NR AI 1 sub NN get 1 eq
+ {dup dup 0 gt E 4 le and{/Ty E D}{pop}ie
+ /L1 L1 Ty AR AI NN get Ns SW pop XO sub dup 0 lt{pop 0}if add D ( ON )}
+ {pop ( B )}ie C1 E join /C1 E D CS Mf gt{/Mf CS D}if BL} D
+/BQ {Tm 15 get Ts mul BE /BC BC 1 add D SI BL} D
+/QB {Bm 15 get Ts mul BE /BC BC 1 sub D SI BL} D
+/Al {E EP 1 sub dup 0 lt{pop AV AL get}if NA} D
+/Ea {EP OA} D
+/WB {PF{WR}{BT}ie} D
+/F1 {WB /FN 0 D CS 0 FS} D
+/F2 {WB /FN WI D CS 0 FS} D
+/HY {/Hy t D WB /Hy f D} D
+/YH {WB} D
+/A {/LT E D LT 1 eq{/RN E D}if /Lh E D WB /C1 C1 ( Cp ) join D
+ Lc AF not and{Cl Sc}if /AF t D} D
+/EA {Lc AF and{Ec}{WB}ie TL Pa AF and Lh 0 ne and
+ {( \() Lh join (\)) join /AF f D WB}if /AF f D} D
+/TL {C1 ( Tl ) apa /C1 E D} d
+/apa {AF OU and Lh 0 ne LT 1 eq or and{LT 1 eq{RN ( /) E ST cvs join}
+ {(\() Lh join (\)) join}ie E join join}{pop}ie} d
+/Cp {/Xc CP /Yc E D D} D
+/SS {Cf{dup 0 ge{EU E get dup -1 eq{pop CA CL get}if}{pop CA CL get}ie Sc}
+ {pop}ie SZ SL get /SL SL 1 add D} D
+/I {WB 8 SS 1 FS} D
+/EM {WB 8 SS /CF CF 1 xor D 0 FS} D
+/BD {WB 9 SS 2 FS} D
+/TT {WB 10 SS /FN Fp D 0 FS} D
+/KB {WB 11 SS /FN Fp D 2 FS} D
+/CT {WB 12 SS 1 FS} D
+/SM {WB 13 SS /FN Fp D 0 FS} D
+/Q {/QL QL 1 add D QO QL 2 mod get La get join WB} D
+/EQ {QC QL 2 mod get La get join WB /QL QL 1 sub D} D
+/RO {WB -1 SS /CF 0 D 0 FS} D
+/SY {WB -1 SS -1 FS} D
+/MY {WB -1 SS -2 FS} D
+/ES {WB /SL SL 1 sub NN D /CF 0 D /FN FO SL get D SZ SL get FR SL get FS ()Ec}D
+/FZ {3 sub 1.2 E exp GS mul E WB TL /C1 C1 ( Cp ) join D /SL SL 1 add D 0 FS} D
+/Ef {WB TL ()ES /C1 C1 ( Cp ) join D} D
+/BZ {dup /Bf E D FZ}D
+/Sc {dup -1 ne Cf and{/CL CL 1 add D dup 0 eq{pop [0 0 0]}if
+ dup CA E CL E put VS ( VC ) join C1 E join /C1 E D}{pop}ie} D
+/Ec {WB Cf{/CL CL 1 sub NN D CA CL get VS ( VC ) join C1 E join /C1 E D}if} D
+/VS {dup type /arraytype eq{([) E {ST cvs join ( ) join}forall (]) join}if} D
+/VC {{255 div}forall setrgbcolor} D
+/Sl {dup type /integertype ne{Ds}if /La E D WB}d
+/UN {WB /UF t D} D
+/NU {WB /UF f D} D
+/SE {WB /sF t D} D
+/XE {WB /sF f D} D
+/sM {/C1 C1 ( k1 ) join D}d
+/eM {/C1 C1 ( k2 ) join D}d
+/k1 {/YC CP E pop Ts add D /mF t D /f1 t D}d
+/k2 {gsave 3 LW -9 CP E pop Ts 0.2 mul sub M -9 YC L stroke grestore /mF f D}d
+/Ac {/AC E D WB}d
+/Ca {eA{( \()join AC join(\) )join}if WB}d
+/s {OU{gsave 0 CS .25 mul R dup SW pop CJ 0 RL stroke grestore}if}D
+/CJ {AT 3 eq LB and{E dup dup length 1 sub A1 mul E
+ {( ) search{pop pop E A2 add E}{pop exit}ie}loop 3 -1 roll add
+ W CP pop sub 2 copy gt{E}if pop}if}D
+/So {/Co E D} D
+/SO {C1 Yo ST cvs join ( So ) join /C1 E D (j) SW pop 2 div Pd} D
+/Se {E WB CS E div Pd}D
+/Pd {dup type /stringtype eq{SW pop}if dup /L1 E L1 add D
+ ST cvs ( 0 R ) join C1 E join /C1 E D} D
+/Sp {0.35 CO} D
+/Sb {-0.2 CO} D
+/CO {OV Io Yo put /Yo E CS mul Yo add D /Io Io 1 add D -1.5 Io mul 3 add FZ SO
+ CS Yo add dup YA gt{/YA E D}{pop}ie
+ Yo neg dup YB gt{/YB E D}{pop}ie} D
+/Es {ES /Io Io 1 sub NN D /Yo OV Io get D SO} D
+/SB {/N2 0 D 0 1 NI{/N E D{IX N2 get 0 lt{/N2 N2 1 add D}{exit}ie}loop
+ /K WS N get FC N get mul D /NY AY N2 get D /BV NY array D
+ 0 1 NY 1 sub{/TM K string D currentfile TM readhexstring pop pop BV E TM put}
+ for BM N BV put /N2 N2 1 add D}for} D
+/IC [{/MA E D /MB 0 D}{2 div /MA E D /MB MA D}{/MB E CS sub D /MA CS D}
+ {pop /MA YS AB mul D /MB 1 AB sub YS mul D}{pop /MA 0 D /MB 0 D}] D
+/IP {BV N get /N N 1 add D} D
+/II {/K E D IX K get 0 lt{/EC E D}if /TY E D
+ TY 4 eq{/Y E D /X E D}if TY 3 eq{/AB E D}if
+ /XW AX K get D /YW AY K get D /IS SG IT K get get D /XS XW IS mul D
+ /YS YW IS mul D YS IC TY get exec /MA MA Fl not{3 add}if D} D
+/IM {II /ty TY D /xs XS D /ys YS D /ya YA D /yb YB D /ma MA D /mb MB D /k K D
+ /ec EC D /BP f D /CI 0 D WB TL L1 xs add dup XO add MR add W gt
+ {pop /ma ma Fl{3 add}if D NL /YA ma D /YB mb D /YS ys D /L1 xs D}
+ {/L1 E D ma YA gt{/YA ma D}if mb YB gt{/YB mb D}if}ie /TB f D
+ OU{CP E pop YS sub LE neg lt Fl not and PB not and{NP /YA ma D /YB mb D}if
+ /BP f D ty ST cvs ( ) join IX k get 0 lt{(\() join ec join (\) ) join}if
+ k ST cvs join ty 3 eq{AB ST cvs ( ) join E join}if
+ ty 4 eq{X ST cvs ( ) join Y ST cvs join ( ) join E join}if C1 E join
+ ( DI ) join FP 2 eq FP 1 eq AF and or{( FM ) join}if
+ ( Il Cp ) apa /C1 E D /EN f D}if /HM t D /T f D} D
+/DI {II /Xc CP /Yc E D D /YN YW neg D /HM t D /CI 0 D /K2 IX K get D gsave
+ TY 4 eq{OX X IS mul add OY FY add YS sub Y IS mul sub}
+ {/FY YS D CP MB sub 2 copy /OY E D /OX E D}ie
+ translate K2 0 ge{/DP AZ K2 get D /BV BM K2 get D XS YS scale /N 0 D XW YW DP
+ [XW 0 0 YN 0 YW] {IP} FC K2 get 1 eq{image}{f 3 colorimage}ie}
+ {EX}ie grestore XS 0 R /Ms t D} D
+/FM {gsave 0 Sg CP MB sub translate XS neg 0 M 0 YS RL XS 0 RL 0 YS neg RL
+ XS neg 0 RL stroke grestore} D
+/NA {/AT E D /AL AL 1 add D AV AL AT put} D
+/OA {AL 0 gt{/AL AL 1 sub D /AT AV AL get D}if} D
+/D1 {/BR {CP E pop E BN Mb{CP E pop eq{0 YI R}if}{pop}ie} D
+ /Sn {OU{C1 E ST cvs join ( Ld ) join /C1 E D}{pop}ie} D} D
+/D1 {/BR {BN} D /Sn {OU {C1 E ST cvs join ( Ld ) join /C1 E D} {pop} ie} D} D
+/TC {/TF t D /ML 0 D HN{SW pop dup ML gt{/ML E D}{pop}ie}forall NP /RM RM not D
+ RC /OU Tc D Ep /PN 0 D Ms not TP and{Ip}if /W IW ML sub Ts sub D
+ /A0 0 D TH{/BR {( ) join BT} D /Sn {pop} D /Au () D}if} D
+/TN {0 eq{E EA PF HF or not XR and{HN E get Xr}{pop}ie}
+ {OU{Tn 0 ge{() BN}if /Tn E D}{pop}ie WB}ie} D
+/NT {OU LB not and Tn 0 ge and{PL 0 eq{Ms not{CS CF FS}if CP dup
+ /y E YA sub D W 9 sub CS -1.8 mul XO L1 add 2 add{y M (.) show}for
+ HN Tn get dup SW pop IW E sub y M show CP BB M}if /Tn -1 D}if} D
+/Ld {/DN E D HN DN Pn put [/View [/XYZ -4 Fl{PS}{CP YA add US E pop}ie null]
+ /Dest DN ST cvs cvn /DEST pdfmark} D
+/C {ND 1 eq{1 sub}if TI mul /XO E D NL Nf not{pop()}if 0 3 -1 roll 1 A} D
+/OP {BP not{NP}if PN 2 mod 0 eq{/Ms t D NP}if}D
+/Ep {Xp PN 2 mod 0 eq and OU and{/Pn (-) D showpage /PM 1 D LA}if}D
+/Dg [73 86 88 76 67 68 77] D
+/Rd [0 [1 1 0][2 1 0][3 1 0][2 1 1][1 1 1][2 2 1][3 3 1][4 4 1][2 1 2]] D
+/Ns {/m E D /c E 32 mul D /j m 1000 idiv D /p j 12 add string D
+ c 96 le m 0 gt and{c 32 le {/i 0 D /d 77 D /l 100 D /m m j 1000 mul sub D
+ j -1 1 {pop p i d c add put /i i 1 add D}for
+ 4 -2 0 {/j E D /n m l idiv D /m m n l mul sub D /d Dg j get D
+ n 0 gt {/x Rd n get D x 0 get -1 1 {pop p i d c add put /i i 1 add D}for
+ p i x 1 get sub Dg x 2 get j add get c add put}if /l l 10 idiv D
+ }for p 0 i GI}
+ {/i ST length 1 sub D m {1 sub dup 0 ge{dup 26 mod c add 1 add
+ ST i 3 -1 roll put 26 idiv dup 0 eq{pop exit}if}if /i i 1 sub D}loop
+ ST i ST length i sub GI}ie}
+ {m p cvs}ie} D
+/US {matrix currentmatrix matrix defaultmatrix matrix invertmatrix
+ matrix concatmatrix transform} D
+/GB {Gb{US}if}D
+/Tl {/Rn E D Xc CP pop ne{
+ [/Rect [Xc 1 sub Yc cS 0.25 mul sub GB CP E 1 add E cS 0.85 mul add GB]
+ /Subtype /Link /Border [0 0 Cf Lc and LX and AU or{0}{1}ie] Rn type
+ /nametype eq {/Dest Rn}{/Action [/Subtype /URI /URI Rn] Cd}ie
+ /ANN pdfmark}if} D
+/Il {/Rn E D [/Rect [Xc Yc GB Xc XS add Yc YS add GB] /Subtype /Link
+ /Border [0 0 0] Rn type /nametype eq{/Dest Rn}
+ {/Action [/Subtype /URI /URI Rn] Cd}ie /ANN pdfmark} D
+/XP {[{/Z Bz 2 div D Z 0 R Z Z RL Z neg Z RL Z neg Z neg RL Z Z neg RL
+ Fi cH 1 eq and{fill}if} {Bz 0 RL 0 Bz RL Bz neg 0 RL 0 Bz neg RL
+ Fi cH 1 eq and{fill}if} {0 -5 R Bz 0 RL 0 21 RL Bz neg 0 RL 0 -21 RL}]} D
+/MS {/Sm E D WB}D
+/O {BN()0 Sm BX} D
+/BX {/Bt E D Bt 2 lt{/Ch E D CS 0.8 mul}{11 mul}ie W XO sub MR sub
+ 2 copy gt{E}if pop /HZ E D Bt 2 eq{Fi not{pop()}if ( )E join /Ft E D TT
+ /PF t D /MW 1 D /Li 1 D /Fw Ft SW pop D Fw HZ gt{/HZ Fw 8 add D}if
+ HZ ST cvs( )join}{WB Ch ST cvs( )join}ie L1 HZ add XO add MR add W gt{NL}if
+ Bt 2 eq{Ft ES Fw neg HM{CS sub}if Pd}if Bt ST cvs join( Bx )join
+ Bt 2 eq HM and{CS Pd}if C1 E join /C1 E D /L1 L1 HZ add D /T f D
+ ( ) Pd /PF f D Bt 2 lt{YA CS .8 mul lt{/YA CS .8 mul D}if}
+ {YB 5 lt{/YB 5 D}if YA 21 lt{/YA 21 D}if}ie /CI 0 D} D
+/Bx {dup 2 eq{E /Bz E D}{E /cH E D /Bz CS .8 mul D}ie
+ OU {gsave 0 Sg XP E get exec stroke grestore}{pop}ie Bz 0 R /Ms t D}D
+/SD {FD 4 mul Dy add DZ NF newpath 0 0 M DX t charpath pathbbox
+ 3 -1 roll sub /DY E D E dup /X1 E D sub WM mul WX DY mul add WM DG mul E div
+ /DF E D /DR WX DF mul DY mul WM div 2 div D} d
+/Sd {gsave 0 IL Di mul neg translate IL IW atan Di 0 eq{neg}if rotate
+ FD 4 mul Dy add DZ NF DR X1 sub DY 2 div neg M cD VC DX show grestore} d
+/Pt {/tp t D Tp{NP /Pn (TP) D 0 Tt neg R Th BN NP Ep ET RC ZF}if /tp f D} D
+/RC {/AI 0 D /LG 0 D /BC 0 D /UI 0 D /PF f D /Cc 0 D /cC 0 D /Dc 10 array D
+ /NR [0 1 9{pop 0}for] D /La Ds D /AR 10 array D /TR 10 array D /AV 30 array D
+ SI /AL -1 D /AT A0 D AT NA /OV 9 array D /Yo 0 D /Co 0 D /Io 0 D /Hy f D
+ /Ph f D /CL -1 D Ct Sc}D
+/ZF {/FR [0 1 30{pop 0}for] D /SZ [0 1 30{pop 0}for] D /FO [0 1 30{pop 0}for] D
+ /SL 0 D /CF 0 D /FN 0 D 0 Ts SF}D
+/QO [[(\253\240)(\233)(\232)(\273)(\234)(\253)][(\253\240)(`)(\231)(\273)(')(\253)]] D
+/QC [[(\240\273)(\234)(\233)(\253)(\234)(\273)][(\240\273)(')(`)(\253)(')(\273)]] D
+/Hf EF length 2 sub D
+/Hz EZ Hf get D
+/HS Ey Hf get D
+/Fz EZ Hf 1 add get D
+/Fs Ey Hf 1 add get D
+/LE IL D
+/Ps EZ 1 get D
+/Fp EF 1 get D
+/XO 0 D
+/YI 0 D
+/CI 0 D
+/FP 0 D
+/WW Ts 7 mul D
+/Mf 0 D
+/YA 0 D
+/YB 0 D
+/Cs Ts D
+/GS Ts D
+/F0 0 D
+/NS 0 D
+/NB 0 D
+/N 0 D
+/C0 [] D
+/C1 () D
+/Lo 0 D
+/L1 0 D
+/LM 0 D
+/PH 0 D
+/EC 0 D
+/Lh 0 D
+/LT 0 D
+/CH 1 string D
+/ST 16 string D
+/CA 9 array D
+/HC (\255) D
+/HM f D
+/PF f D
+/EN f D
+/TB f D
+/UF f D
+/sF f D
+/AE f D
+/AF f D
+/BP t D
+/CD f D
+/PA t D
+/GL f D
+/T t D
+/HF f D
+/AH f D
+/SA f D
+/PB f D
+/f1 f D
+/mF f D
+/OX 0 D
+/OY 0 D
+/FY 0 D
+/EO 0 D
+/FB 0 D
+/PL 0 D
+/Bw 0 D
+/PD -1 D
+/TP f D
+/tp f D
+/TH t D
+/Ty 4 D
+/Tn -1 D
+/Fl t D
+/LB t D
+/PM 1 D
+/Ms f D
+/Ba f D
+/Bb f D
+/Hl 3 D
+/hl 6 D
+/Hv 6 D
+/Hs f D
+/HI 0 D
+/hi 0 D
+/PO t D
+/TE f D
+/LF t D
+/BO 0 D
+/Sm 1 D
+/Bf 3 D
+/A1 0 D
+/A2 0 D
+/Ds 1 D
+/QL -1 D
+/Cb Db D
+/Ct Dt D
+/Cl Dl D
+[/Creator (html2ps version 1.0 beta7) /Author () /Keywords (xsd, xml, schema, c++, mapping, data, binding, tree, serialization, guide, manual, examples) /Subject ()
+ /Title (C++/Tree Mapping User Manual) /DOCINFO pdfmark
+/ND 1 D
+/HN [(1) (1) (1) (1) (1) (1) (1) (2) (2) (2) (2) (3) (3) (3) (4) (5) (5) (5)
+(5) (6) (6) (7) (??) (9) (10) (12) (13) (14) (16) (19) (20) (21) (22) (23)
+(24) (25) (26) (27) (27) (28) (29) (30) (31) (32) (33) (36) (36) (37) (38)
+(40) (45) (47) (54) (55) (57) (59) (59) (62) (64) (65) (68) (73) (75) (80)
+(82) (85) (85) (86) (88) (89) (89) (90) (91) (91) (91) (92) (92) (93) (93)
+(94) (94) (94) (96) (97) (99) (99) (100) (100) (100) (101) (101) (102) (103)
+(103) (106) (107) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??)
+(??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??)
+(??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??) (??)
+(??) (??) (??) (??) (??) (??) (??) (??) (1) (1) (1) (1) (2) (2) (2) (2)
+(3) (3) (3) (4) (5) (5) (5) (5) (6) (6) (7) (9) (10) (12) (13) (14) (16)
+(19) (20) (21) (22) (23) (24) (25) (26) (27) (27) (28) (29) (30) (31) (32)
+(33) (36) (36) (37) (38) (40) (45) (47) (54) (55) (57) (59) (59) (62) (64)
+(65) (68) (73) (75) (80) (82) (85) (85) (86) (88) (89) (89) (90) (91) (91)
+(91) (92) (92) (93) (93) (94) (94) (94) (96) (97) (99) (99) (100) (100)
+(100) (101) (101) (102) (103) (103) (106) (107)] D
+/h0 [()(Table of Contents)] D
+/h1 [(1\240\240)(Preface)] D
+/h2 [(1.1\240\240)(About This Document)] D
+/h3 [(1.2\240\240)(More Information)] D
+/h4 [(2\240\240)(1 Introduction)] D
+/h5 [(3\240\240)(2 C++/Tree Mapping)] D
+/h6 [(3.1\240\240)(2.1 Preliminary Information)] D
+/h7 [(3.1.1\240\240)(2.1.1 C++ Standard)] D
+/h8 [(3.1.2\240\240)(2.1.2 Identifiers)] D
+/h9 [(3.1.3\240\240)(2.1.3 Character Type and Encoding)] D
+/h10 [(3.1.4\240\240)(2.1.4 XML Schema Namespace)] D
+/h11 [(3.1.5\240\240)(2.1.5 Anonymous Types)] D
+/h12 [(3.2\240\240)(2.2 Error Handling)] D
+/h13 [(3.2.1\240\240)(2.2.1 xml_schema::duplicate_id)] D
+/h14 [(3.3\240\240)(2.3 Mapping for import and include)] D
+/h15 [(3.3.1\240\240)(2.3.1 Import)] D
+/h16 [(3.3.2\240\240)(2.3.2 Inclusion with Target Namespace)] D
+/h17 [(3.3.3\240\240)(2.3.3 Inclusion without Target Namespace)] D
+/h18 [(3.4\240\240)(2.4 Mapping for Namespaces)] D
+/h19 [(3.5\240\240)(2.5 Mapping for Built-in Data Types)] D
+/h20 [(3.5.1\240\240)(2.5.1 Inheritance from Built-in Data Types)] D
+/h21 [(3.5.2\240\240)(2.5.2 Mapping for anyType)] D
+/h22 [(3.5.3\240\240)(2.5.3 Mapping for anySimpleType)] D
+/h23 [(3.5.4\240\240)(2.5.4 Mapping for QName)] D
+/h24 [(3.5.5\240\240)(2.5.5 Mapping for IDREF)] D
+/h25 [(3.5.6\240\240)(2.5.6 Mapping for base64Binary and hexBinary)] D
+/h26 [(3.6\240\240)(2.5.7 Time Zone Representation)] D
+/h27 [(3.7\240\240)(2.5.8 Mapping for date)] D
+/h28 [(3.8\240\240)(2.5.9 Mapping for dateTime)] D
+/h29 [(3.9\240\240)(2.5.10 Mapping for duration)] D
+/h30 [(3.10\240\240)(2.5.11 Mapping for gDay)] D
+/h31 [(3.11\240\240)(2.5.12 Mapping for gMonth)] D
+/h32 [(3.12\240\240)(2.5.13 Mapping for gMonthDay)] D
+/h33 [(3.13\240\240)(2.5.14 Mapping for gYear)] D
+/h34 [(3.14\240\240)(2.5.15 Mapping for gYearMonth)] D
+/h35 [(3.15\240\240)(2.5.16 Mapping for time)] D
+/h36 [(3.16\240\240)(2.6 Mapping for Simple Types)] D
+/h37 [(3.16.1\240\240)(2.6.1 Mapping for Derivation by Restriction)] D
+/h38 [(3.16.2\240\240)(2.6.2 Mapping for Enumerations)] D
+/h39 [(3.16.3\240\240)(2.6.3 Mapping for Derivation by List)] D
+/h40 [(3.16.4\240\240)(2.6.4 Mapping for Derivation by Union)] D
+/h41 [(3.17\240\240)(2.7 Mapping for Complex Types)] D
+/h42 [(3.17.1\240\240)(2.7.1 Mapping for Derivation by Extension)] D
+/h43 [(3.17.2\240\240)(2.7.2 Mapping for Derivation by Restriction)] D
+/h44 [(3.18\240\240)(2.8 Mapping for Local Elements and Attributes)] D
+/h45 [(3.18.1\240\240)(2.8.1 Mapping for Members with the One Cardinality Class)] D
+/h46 [(3.18.2\240\240)(2.8.2 Mapping for Members with the Optional Cardinality Class)] D
+/h47 [(3.18.3\240\240)(2.8.3 Mapping for Members with the Sequence Cardinality Class)] D
+/h48 [(3.18.4\240\240)(2.8.4 Element Order)] D
+/h49 [(3.19\240\240)(2.9 Mapping for Global Elements)] D
+/h50 [(3.19.1\240\240)(2.9.1 Element Types)] D
+/h51 [(3.19.2\240\240)(2.9.2 Element Map)] D
+/h52 [(3.20\240\240)(2.10 Mapping for Global Attributes)] D
+/h53 [(3.21\240\240)(2.11 Mapping for xsi:type and Substitution Groups)] D
+/h54 [(3.22\240\240)(2.12 Mapping for any and anyAttribute)] D
+/h55 [(3.22.1\240\240)(2.12.1 Mapping for any with the One Cardinality Class)] D
+/h56 [(3.22.2\240\240)(2.12.2 Mapping for any with the Optional Cardinality Class)] D
+/h57 [(3.22.3\240\240)(2.12.3 Mapping for any with the Sequence Cardinality Class)] D
+/h58 [(3.22.4\240\240)(2.12.4 Element Wildcard Order)] D
+/h59 [(3.22.5\240\240)(2.12.5 Mapping for anyAttribute)] D
+/h60 [(3.23\240\240)(2.13 Mapping for Mixed Content Models)] D
+/h61 [(4\240\240)(3 Parsing)] D
+/h62 [(4.1\240\240)(3.1 Initializing the Xerces-C++ Runtime)] D
+/h63 [(4.2\240\240)(3.2 Flags and Properties)] D
+/h64 [(4.3\240\240)(3.3 Error Handling)] D
+/h65 [(4.3.1\240\240)(3.3.1 xml_schema::parsing)] D
+/h66 [(4.3.2\240\240)(3.3.2 xml_schema::expected_element)] D
+/h67 [(4.3.3\240\240)(3.3.3 xml_schema::unexpected_element)] D
+/h68 [(4.3.4\240\240)(3.3.4 xml_schema::expected_attribute)] D
+/h69 [(4.3.5\240\240)(3.3.5 xml_schema::unexpected_enumerator)] D
+/h70 [(4.3.6\240\240)(3.3.6 xml_schema::expected_text_content)] D
+/h71 [(4.3.7\240\240)(3.3.7 xml_schema::no_type_info)] D
+/h72 [(4.3.8\240\240)(3.3.8 xml_schema::not_derived)] D
+/h73 [(4.3.9\240\240)(3.3.9 xml_schema::no_prefix_mapping)] D
+/h74 [(4.4\240\240)(3.4 Reading from a Local File or URI)] D
+/h75 [(4.5\240\240)(3.5 Reading from std::istream)] D
+/h76 [(4.6\240\240)(3.6 Reading from xercesc::InputSource)] D
+/h77 [(4.7\240\240)(3.7 Reading from DOM)] D
+/h78 [(5\240\240)(4 Serialization)] D
+/h79 [(5.1\240\240)(4.1 Initializing the Xerces-C++ Runtime)] D
+/h80 [(5.2\240\240)(4.2 Namespace Infomap and Character Encoding)] D
+/h81 [(5.3\240\240)(4.3 Flags)] D
+/h82 [(5.4\240\240)(4.4 Error Handling)] D
+/h83 [(5.4.1\240\240)(4.4.1 xml_schema::serialization)] D
+/h84 [(5.4.2\240\240)(4.4.2 xml_schema::unexpected_element)] D
+/h85 [(5.4.3\240\240)(4.4.3 xml_schema::no_type_info)] D
+/h86 [(5.5\240\240)(4.5 Serializing to std::ostream)] D
+/h87 [(5.6\240\240)(4.6 Serializing to xercesc::XMLFormatTarget)] D
+/h88 [(5.7\240\240)(4.7 Serializing to DOM)] D
+/h89 [(6\240\240)(5 Additional Functionality)] D
+/h90 [(6.1\240\240)(5.1 DOM Association)] D
+/h91 [(6.2\240\240)(5.2 Binary Serialization)] D
+/h92 [(7\240\240)(Appendix A \236 Default and Fixed Values)] D
+/Hr [145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
+162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
+180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
+198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
+216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
+234 235 236]D
+/HV [1 2 2 1 1 2 3 3 3 3 3 2 3 2 3 3 3 2 2 3 3 3 3 3 3 2 2 2 2 2 2 2 2
+2 2 2 3 3 3 3 2 3 3 2 3 3 3 3 2 3 3 2 2 2 3 3 3 3 3 2 1 2 2 2 3 3 3 3 3
+3 3 3 3 2 2 2 2 1 2 2 2 2 3 3 3 2 2 2 1 2 2 1]D
+/Cn [2 0 0 0 23 5 0 0 0 0 0 1 0 3 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 4 0 0 0 0 2 0 0 4 0 0 0 0 2 0 0 0 0 5 0 0 0 0 0 0 7 0 0 9 0 0 0 0 0
+0 0 0 0 0 0 0 0 7 0 0 0 3 0 0 0 0 0 0 2 0 0 0]D
+Hr length 0 gt{[/PageMode /UseOutlines /DOCVIEW pdfmark}if
+/Hn 1 D
+0 1 Hr length 1 sub{
+ /Bn E D [Cn Bn get dup 0 gt{/Count E HV Bn get Bl ge{neg}if}{pop}ie
+ /Dest Hr Bn get dup abs ST cvs cvn E 0 ge{(h)Hn ST cvs join cvx exec
+ dup 1 get E Nf{0 get E join}{pop}ie /Hn Hn 1 add D}{()}ie
+ /Title E dup length 255 gt{0 255 getinterval}if /OUT pdfmark}for
+ZF /FN Fp D Ps 0 FS /WC Wf{( )}{<A1A1>}ie SW pop D
+ET RC ZF
+/Df f D
+/R0 (https://www.codesynthesis.com/licenses/fdl-1.2.txt) D
+/R1 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml) D
+/R2 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf) D
+/R3 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps) D
+/R1 (https://www.codesynthesis.com/products/xsd) D
+/R2 (https://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/) D
+/R3 (http://wiki.codesynthesis.com/Tree/Customization_guide) D
+/R4 (http://wiki.codesynthesis.com/Tree/FAQ) D
+/R5 (https://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml) D
+/R6 (https://cppget.org/xsd-examples) D
+/R7 (https://www.codesynthesis.com/mailman/listinfo/xsd-users) D
+/R8 (https://www.codesynthesis.com/pipermail/xsd-users/) D
+/R9 (http://en.wikipedia.org/wiki/Character_code) D
+/TS {
+ tables E get /table E D
+ table aload pop /rdesc E D /cdesc E D /tdesc E D
+ tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
+ /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
+ /flow E D /clear E D /tclass E D pop pop
+ /w W D /eps 0.1 D /OU f D /PL 1 D
+ /FN EF 21 get D EZ 21 get Ey 21 get FS
+ 0 1 1{
+ /pass E D
+ 0 1 nrow{
+ /irow E D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ cell aload pop /ang E D /CB E D pop pop pop
+ /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
+ /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
+ /cmin E D /proc E D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ pass 0 eq cspan 1 eq and pass 1 eq cspan 1 gt and or{
+ /W 1e5 D /LL W D /PH 1 D
+ ctype 1 eq{() BD}if
+ RC align NA
+ AT 4 eq{/CD t D /DC dp D /LN 0 D /M1 0 D /M2 0 D}{/CD f D}ie
+ 0 0 M /LM 0 D proc exec BN
+ AT 4 eq{
+ LN array astore cell 15 3 -1 roll put
+ cdesc icol get dup dup 5 get M1 lt{5 M1 put}{5 get /M1 E D}ie
+ dup 6 get M2 lt{6 M2 put}{6 get /M2 E D}ie
+ /LM M1 M2 add D
+ }if
+ /CD f D
+ ang 0 ne{/LM CP E pop neg D}if
+ /thiswid LM left add right add eps add D
+ /oldmin 0 D /oldmax 0 D
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 2 get /oldmax E oldmax add D
+ 1 get /oldmin E oldmin add D
+ }for
+ thiswid oldmax ge{
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 2 E 2 get oldmax 0 eq
+ {pop thiswid cspan div}{thiswid mul oldmax div}ie
+ put
+ }for
+ }if
+ nowrap 1 eq{
+ thiswid oldmin ge{
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 1 E 1 get oldmin 0 eq
+ {pop thiswid cspan div}{thiswid mul oldmin div}ie
+ put
+ }for
+ }if
+ }{
+ /W 0 D /LL W D /PH 2 D
+ ctype 1 eq{() ES () BD}if
+ 0 0 M /LM 0 D RC proc exec BN
+ /thiswid LM left add right add eps add D
+ thiswid oldmin ge{
+ 0 1 cspan 1 sub{
+ icol add cdesc E get dup 1 E 1 get oldmin 0 eq
+ {pop thiswid cspan div}{thiswid mul oldmin div}ie
+ put
+ }for
+ }if
+ }ie
+ ctype 1 eq{() ES}if
+ }if
+ }if
+ }for
+ }for
+ }for
+ /tmin 0 D /tmax 0 D
+ 0 1 ncol{
+ cdesc E get dup 1 get E 2 get 2 copy gt{pop dup}if
+ tmax add /tmax E D tmin add /tmin E D
+ }for
+ twid 0 lt{twid neg IW gt{IW neg}{twid}ie /twid E D}if
+ tdesc 0 twid neg tmin 2 copy lt{E}if pop put
+ tdesc 1 twid neg tmax 2 copy lt{E}if pop put
+ /W w D /LL W D /OU t D /PH 0 D /PL 0 D
+} D
+/PT {
+ /PL PL 1 add D
+ tables E get /table E D Tm 21 get Ts mul BE
+ PL 2 ge{save}if
+ /SL SL 1 add D /FN EF 21 get D EZ 21 get Ey 21 get FS
+ table aload pop /rdesc E D /cdesc E D /tdesc E D
+ tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
+ /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
+ /flow E D /clear E D /tclass E D /tmax E D /tmin E D
+ /w W D /xo XO D /mr MR D /ll LL D /lg LG D /ai AI D /bc BC D /nr NR D /ar AR D
+ /tr TR D /ui UI D /ph PH D /a0 A0 D /pf PF D /at AT D /av AV D /al AL D
+ /Le LE D /la La D
+ talign 0 lt{/talign AL 0 gt{AV AL get}{A0 2 le{A0}{0}ie}ie D}if
+ ph 1 eq ph 2 eq or{
+ NL ph 1 eq{tmax}{tmin}ie dup XO add LM gt{/LM E XO add D}{pop}ie LM E
+ }{
+ /PH 3 D /LE 1e5 D RC %ZF
+ border 0 gt{/border 1 D}if
+ /twidth 0 D /avail W xo sub D
+ twid 0 eq{0 1 ncol{cdesc E get dup 2 get E 3 get dup 0 gt{div neg dup twid lt
+ {/twid E D}{pop}ie}{pop pop}ie}for}if
+ /twid twid dup 0 lt{neg avail 2 copy gt{E}if pop}{avail mul}ie D
+ /OK t D 0 1 ncol{cdesc E get dup 1 get E 3 get twid mul gt{/OK f D}if}for
+ 0 1 ncol{
+ cdesc E get dup 1 get /colmin E D dup 3 get /cwid E twid mul D dup
+ tmax avail le{2 get}if
+ tmin avail le tmax avail gt and{
+ dup 2 get E 1 get dup 3 1 roll sub avail tmin sub mul tmax tmin sub div add
+ }if
+ tmin avail gt{1 get}if
+ 0 E colmin cwid lt OK and{pop cwid}if dup /twidth E twidth add D put
+ }for
+ /OU f D CP
+ tmin twid le{
+ 0 1 ncol{cdesc E get dup 0 get twidth div twid mul 0 E put}for
+ /twidth twid D
+ }if
+ CP printcap CP E pop sub /caphig E D pop
+ 0 1 1{
+ /pass E D
+ 0 1 nrow{
+ /irow E D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ cell aload pop /ang E D /CB E D pop pop pop
+ /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
+ /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
+ /cmin E D /proc E D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ /W 0 D
+ 0 1 cspan 1 sub{icol add cdesc E get 0 get /W E W add D}for
+ pass 0 eq rspan 1 eq and pass 1 eq rspan 1 gt and or{
+ ctype 1 eq{() BD}if
+ /W W left sub right sub D /XO 0 D /EO 0 D SI
+ /A0 align D RC align NA
+ AT 4 eq{
+ /DC dp D /DO 0 D /ID 1 D
+ 0 1 DV length 1 sub{DV E get dup DO gt{/DO E D}{pop}ie}for
+ /Lo DO DV 0 get sub D /L1 Lo D
+ }if
+ 0 0 M /BP t D /Fl t D /MF 0 D /FB 0 D
+ proc exec T not{/CI 0 D}if BN 0 FB neg R MF 0 eq{/MF CS D}if
+ CP /thishig E neg bot add top add CI add D pop
+ ang 0 ne{/thishig LM bot add top add D}if
+ cell 16 MF put cell 17 Ya put cell 18 thishig put
+ valign 4 eq{
+ /below thishig Ya sub D
+ rdesc irow get dup dup 4 get Ya lt
+ {4 Ya put}{4 get /Ya E D}ie
+ dup 5 get below lt{5 below put}{5 get /below E D}ie
+ /thishig Ya below add D
+ }if
+ ctype 1 eq{()ES}if
+ /oldhig 0 D
+ 0 1 rspan 1 sub{
+ irow add rdesc E get 0 get /oldhig E oldhig add D
+ }for
+ thishig oldhig ge{
+ 0 1 rspan 1 sub{
+ irow add rdesc E get dup 0 E 0 get oldhig 0 eq
+ {pop thishig rspan div}{thishig mul oldhig div}ie
+ put
+ }for
+ }if
+ }if
+ }if
+ }for
+ }for
+ }for M RC %ZF
+ /thight 0 D /racc 0 D /maxh 0 D /brk 0 D /rbeg nhead nfoot add D
+ 0 1 nrow{
+ rdesc E get dup 0 get dup /thight E thight add D
+ brk 0 eq{/racc E D}{/racc E racc add D}ie
+ racc maxh gt{/maxh racc D}if 2 get /brk E D
+ }for
+ ph 3 ge{thight caphig add E}if
+ ph 0 eq ph 4 eq or{
+ /PH 4 D /LE Le D /OU Ou D /yoff 0 D /headsz 0 D
+ 0 1 nhead 1 sub{rdesc E get 0 get headsz add /headsz E D}for
+ /footsz 0 D
+ 0 1 nfoot 1 sub{rdesc E nhead add get 0 get footsz add /footsz E D}for
+ /ahig LE BO add MI add D /maxh maxh headsz add footsz add D
+ /thight thight headsz add footsz add D
+ tmin avail gt maxh ahig gt or
+ {/Sf avail tmin div dup ahig maxh div gt{pop ahig maxh div}if D /SA t D}
+ {/Sf 1 D}ie
+ tclass 1 eq thight LE 15 sub gt and
+ {/SA t D LE 15 sub thight div dup Sf lt{/Sf E D}{pop}ie}if
+ SA{Sf Sf scale /ll ll Sf div D /xo xo Sf div D /LE LE Sf div D
+ /mr mr Sf div D /BO BO Sf div D /ahig ahig Sf div D}if
+ nhead nfoot add getwid
+ LE CP E pop add capalg 0 eq{caphig sub}if
+ bT{f}{dup thight lt thight ahig lt and}ie
+ E headsz sub footsz sub rwid lt or{NP}if
+ capalg 0 eq{printcap -8 SP}if
+ CP /ycur E D pop
+ printhead
+ rbeg 1 nrow{/row E D row
+ getwid
+ ycur yoff add rwid sub footsz sub LE add 0 lt
+ {nfoot 0 gt{printfoot}if Tf NP /rbeg irow1 D
+ Ba{MI /MI MI SA{Sf div}if D MI SP /MI E D}if
+ CP /ycur E D pop /yoff 0 D printhead}if
+ irow1 printrow
+ }for
+ printfoot /row row 1 add D Tf
+ 0 ycur yoff add M
+ capalg 1 eq{/EO 0 D SI -3 SP printcap}if
+ Sf 1 lt{1 Sf div dup scale /ll ll Sf mul D /xo xo Sf mul D /LE LE Sf mul D
+ /mr mr Sf mul D /BO BO Sf mul D /SA f D}if
+ /EO 0 D
+ }if
+ }ie
+ /W w D /XO xo D /MR mr D /LL ll D /LG lg D /AI ai D /BC bc D /NR nr D /AR ar D
+ /TR tr D /UI ui D /PH ph D /A0 a0 D /PF pf D /AT at D /AV av D /AL al D
+ /La la D
+ /SL SL 1 sub NN D /CF 0 D /FN 0 D SZ SL get FR SL get FS Wf not{()F2}if
+ PL 2 ge{Ms E restore Ms or /Ms E D PH 1 eq PH 2 eq or
+ {/LM E D}if PH 3 ge{/CI 0 D NL 0 E neg R}if
+ }if
+ /PL PL 1 sub D /CI 0 D /BP f D /PO f D () Bm 21 get Ts mul BE BL %CF CS SF
+} D
+/printcap{
+ capalg 0 ge{
+ SA{/W w Sf div D}
+ {talign 1 eq{/XO xo ll twidth sub 2 div add D}if
+ talign 2 eq{/XO xo ll twidth sub add D}if
+ /W XO twidth add D
+ }ie /XO xo D /LL W XO sub MR sub D
+ /PA f D /Fl capalg 0 eq D
+ 1 NA BL caption exec BN OA /PA t D
+ }if
+} D
+/getwid{
+ /irow1 E D
+ /irow2 irow1 D
+ /rwid 0 D
+ {rdesc irow2 get dup 0 get rwid add /rwid E D 2 get 0 eq
+ {exit}{/irow2 irow2 1 add D}ie
+ }loop
+} D
+/printrow{
+ /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
+ /xleft xoff xo add D
+ /irow E D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ cell aload pop /ang E D /CB E D /cvsize E D /above E D /fontsz E D
+ /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
+ /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
+ /cmin E D /proc E D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ /width 0 D
+ 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
+ /rhight rdesc irow get 0 get D
+ /hight rhight D
+ 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
+ /W xo xoff add width add right sub D
+ ang 0 ne{/W xo xoff add hight add right sub D}if
+ /EO xo xoff add left add D SI
+ Cf{
+ gsave CB VC xo xoff add ycur yoff add M
+ 0 hight neg RL width 0 RL 0 hight RL width neg 0 RL fill
+ grestore
+ }if
+ ctype 1 eq{() BD}if
+ /A0 align D RC
+ AT 4 eq{
+ /DC dp D /ID 1 D /DO cdesc icol get 5 get D /Lo DO DV 0 get sub D /L1 Lo D
+ }if
+ ang 0 ne{
+ gsave ang 90 eq
+ {xoff ycur add hight cvsize sub 2 div sub ycur hight sub xoff sub}
+ {xoff ycur sub width add hight cvsize sub 2 div add ycur xoff add}ie
+ translate ang rotate
+ }if
+ valign 3 le{0 ycur yoff add top sub
+ hight cvsize sub valign 1 sub mul 2 div sub M}
+ {0 ycur yoff add top sub above add rdesc irow get 4 get sub M}ie
+ /PA f D /BP t D /Fl t D
+ BL proc exec BN
+ ang 0 ne{grestore}if
+ /PA t D
+ ctype 1 eq{() ES}if
+ }if
+ /xoff xoff cdesc icol get 0 get add D
+ }for
+ /yoff yoff rhight sub D
+} D
+/printhead {0 1 nhead 1 sub{printrow}for} D
+/printfoot {nhead 1 nhead nfoot add 1 sub{printrow}for} D
+/Tf {
+ OU{rules 2 ge{/yoff 0 D
+ gsave 0 Sg
+ [0 1 nhead 1 sub{}for rbeg 1 row 1 sub{}for nhead 1 nhead nfoot add 1 sub{}for]{
+ /irow E D
+ /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
+ /cells rdesc irow get 6 get D
+ 0 1 ncol{
+ /icol E D
+ /cell cells icol get D
+ cell 0 ne{
+ /rspan cell 6 get D
+ /cspan cell 5 get D
+ rspan 0 eq{/rspan nrow irow sub 1 add D}if
+ cspan 0 eq{/cspan ncol icol sub 1 add D}if
+ /width 0 D
+ 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
+ /rhight rdesc irow get 0 get D
+ /hight rhight D
+ 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
+ xo xoff add width add ycur yoff add M
+ 0 hight neg icol cspan add 1 sub ncol lt
+ {cdesc icol 1 add get 4 get dup rules 3 le{1 eq}{pop t}ie
+ {1 eq{0.8}{0.3}ie
+ LW RL CP stroke M}{pop R}ie}{R}ie
+ irow nhead nfoot add 1 sub ne nfoot 0 eq or
+ {irow rspan add 1 sub nrow lt
+ {rdesc irow rspan add get 3 get}{nfoot 0 eq{0}{1}ie}ie
+ dup rules 2 mod 0 eq{1 eq}{pop t}ie
+ {1 eq irow rspan add nhead eq or irow rspan add row eq nfoot 0 gt and or
+ {0.8}{0.3}ie LW width neg 0 RL CP stroke M}{pop}ie}if
+ }if
+ /xoff xoff cdesc icol get 0 get add D
+ }for
+ /yoff yoff rhight sub D
+ }forall
+ grestore
+ /Ms t D
+ }if
+ frame 1 gt{
+ gsave
+ 1 LW 0 Sg
+ xleft ycur M CP BB
+ 0 yoff frame 5 eq frame 7 ge or{RL}{R}ie
+ twidth 0 frame 3 eq frame 4 eq or frame 8 ge or{RL}{R}ie CP BB
+ 0 yoff neg frame 6 ge{RL}{R}ie
+ twidth neg 0 frame 2 eq frame 4 eq or frame 8 ge or{RL}{R}ie
+ closepath stroke
+ grestore
+ /Ms t D
+ }if
+ }if
+} D
+/tables [[[0 0 0 0 0 -1 0 0 1 58 2 0 0 9 5 {()} -1]
+ [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
+ [[0 0 0 0 0 0 [[{()1 Sl()WB(XML Schema type)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(Alias in the )SM(xml_schema)ES( names)HY(pace)YH()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(C++ type
+ )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(anyType and anySim)HY(ple)HY(Type)YH( types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anyType)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(type)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 109 1 A(Section 2.5.2, "Mapping for )SM(anyType)ES(")109 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anySim)HY(ple)HY(Type)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(simple_type)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 110 1 A(Section 2.5.3, "Mapping for )SM(anySim)HY(ple)HY(Type)YH()ES(")110 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(fixed-length inte)HY(gral)YH( types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(signed\240char)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Byte)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(unsigned_byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(unsigned\240char)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(short_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(short)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Short)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(unsigned_short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(unsigned\240short)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(int_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(int)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsignedInt)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(unsigned_int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(unsigned\240int)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(long_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Long)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(unsigned_long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(unsigned\240long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(arbi)HY(trary)YH(-length inte)HY(gral)YH( types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nonPos)HY(i)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(non_posi)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nonNeg)HY(a)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(non_nega)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(unsigned long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(posi)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(posi)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(unsigned long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nega)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(nega)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(long\240long)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(boolean types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(bool)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(fixed-preci)HY(sion)YH( float)HY(ing)YH(-point types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(float)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(float_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(float)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(double)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(double_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(double)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(arbi)HY(trary)YH(-preci)HY(sion)YH( float)HY(ing)YH(-point types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(double)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(string types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(std::basic_string)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(normal)HY(ized)HY(String)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(normal)HY(ized)YH(_string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(string)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type\240derived\240from\240)SM(normal)HY(ized)YH(_string)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(Name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(token)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NMTOKEN)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(nmtoken)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(token)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NMTO)HY(KENS)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(nmto)HY(kens)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(sequence<nmtoken>)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NCName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(ncname)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(name)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(token)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(qual)HY(i)HY(fied)YH( name
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(QName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(qname)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 111 1 A(Section 2.5.4, "Mapping for )SM(QName)ES(")111 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(ID/IDREF types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ID)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(id)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(ncname)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(IDREF)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(idref)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 112 1 A(Section 2.5.5, "Mapping for )SM(IDREF)ES(")112 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(IDREFS)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(idrefs)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(sequence<idref>)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(URI types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anyURI)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(uri)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(std::basic_string)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(binary types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 1 0 0 0 [[{()1 Sl()WB()SM(base64Binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(base64_binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 113 1 A(Section 2.5.6, "Mapping for
+ )SM(base64Binary)ES( and )SM(hexBi)HY(nary)YH()ES(")113 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 2 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(hexBi)HY(nary)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(hex_binary)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(date/time types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 114 1 A(Section 2.5.8, "Mapping for
+ )SM(date)ES(")114 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(date)HY(Time)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(date_time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 115 1 A(Section 2.5.9, "Mapping for
+ )SM(date)HY(Time)YH()ES(")115 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 116 1 A(Section 2.5.10, "Mapping for
+ )SM(dura)HY(tion)YH()ES(")116 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gDay)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(gday)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 117 1 A(Section 2.5.11, "Mapping for
+ )SM(gDay)ES(")117 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gMonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(gmonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 118 1 A(Section 2.5.12, "Mapping for
+ )SM(gMonth)ES(")118 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gMon)HY(th)HY(Day)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(gmonth_day)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 119 1 A(Section 2.5.13, "Mapping for
+ )SM(gMon)HY(th)HY(Day)YH()ES(")119 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gYear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(gyear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 120 1 A(Section 2.5.14, "Mapping for
+ )SM(gYear)ES(")120 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gYear)HY(Month)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(gyear_month)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 121 1 A(Section 2.5.15, "Mapping for
+ )SM(gYear)HY(Month)YH()ES(")121 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()0 122 1 A(Section 2.5.16, "Mapping for
+ )SM(time)ES(")122 0 TN TL()Ec /AF f D(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB(entity types
+ )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+0
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ENTITY)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(entity)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(name)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ENTI)HY(TIES)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()SM(enti)HY(ties)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(type derived from )SM(sequence<entity>)ES(
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+]]
+[[0 0 0 0 0 -1 0 0 1 8 5 0 0 9 5 {()} -1]
+ [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
+ [[0 0 0 0 0 0 [[{()1 Sl()WB()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(default)} 0 0 1 0 2 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+[{()1 Sl()WB(fixed
+ )} 0 0 1 0 2 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+]]
+[0 0 1 0 0 0 [[{()1 Sl()WB(element)} 0 0 1 0 1 4 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(not present)} 0 0 1 0 1 2 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(required)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(required
+ )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 1 0 0 0 [0
+0
+[{()1 Sl()WB(not present)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(invalid instance)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(not present)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(invalid instance
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 1 0 0 0 [0
+[{()1 Sl()WB(empty)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(default value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+[{()1 Sl()WB(fixed value is used
+ )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+]]
+[0 0 0 0 0 0 [0
+[{()1 Sl()WB(value)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+[{()1 Sl()WB(value is used provided it's the same as fixed
+ )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+]]
+[0 0 1 0 0 0 [[{()1 Sl()WB(attribute)} 0 0 1 0 1 4 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(not present)} 0 0 1 0 1 2 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(required)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(required
+ )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 1 0 0 0 [0
+0
+[{()1 Sl()WB(default value is used)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(invalid schema)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(fixed value is used)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(invalid instance
+ )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+]]
+[0 0 1 0 0 0 [0
+[{()1 Sl()WB(empty)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(empty value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+[{()1 Sl()WB(empty value is used provided it's the same as fixed
+ )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+]]
+[0 0 0 0 0 0 [0
+[{()1 Sl()WB(value)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+[{()1 Sl()WB(value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+[{()1 Sl()WB(value is used provided it's the same as fixed
+ )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
+0
+]]
+]]
+] D
+0 1 1{TS}for RC ZF
+/Ba f D /BO 0 D Bs
+/UR (/home/boris/work/xsd/builds/gcc8-host/xsd/doc/cxx/tree/manual/index.xhtml) D
+/Ti (C++/Tree Mapping User Manual) D
+/Au () D
+/Df f D
+/ME [(4.1.0)] D
+Pt
+/BO 0 D TC /Ba f D Bs /AU f D /UR () D RC ZF
+ tH WB
+ND 1 gt{Ts 3 mul Np 0()0 C()BD(C++/Tree Mapping User Manual)ES()0 1 TN()EA()BN}if
+1 NH le{145(1\240\240)1 C(Preface)WB 3 Sn()145 1 TN()EA()BN}if
+2 NH le{146(1.1\240\240)2 C(About)WB 4 Sn( This Docu)HY(ment)YH()146 1 TN()EA()BN}if
+2 NH le{147(1.2\240\240)2 C(More)WB 5 Sn( Infor)HY(ma)HY(tion)YH()147 1 TN()EA()BN}if
+1 NH le{148(2\240\240)1 C(1)WB 6 Sn( Intro)HY(duc)HY(tion)YH()148 1 TN()EA()BN}if
+1 NH le{149(3\240\240)1 C(2)WB 7 Sn( C++/Tree Mapping)149 1 TN()EA()BN}if
+2 NH le{150(3.1\240\240)2 C(2.1)WB 8 Sn( Prelim)HY(i)HY(nary)YH( Infor)HY(ma)HY(tion)YH()150 1 TN()EA()BN}if
+3 NH le{151(3.1.1\240\240)3 C(2.1.1)WB 9 Sn( C++ Stan)HY(dard)YH()151 1 TN()EA()BN}if
+3 NH le{152(3.1.2\240\240)3 C(2.1.2)WB 10 Sn( Iden)HY(ti)HY(fiers)YH()152 1 TN()EA()BN}if
+3 NH le{153(3.1.3\240\240)3 C(2.1.3)WB 11 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()153 1 TN()EA()BN}if
+3 NH le{154(3.1.4\240\240)3 C(2.1.4)WB 12 Sn( XML Schema Names)HY(pace)YH()154 1 TN()EA()BN}if
+3 NH le{155(3.1.5\240\240)3 C(2.1.5)WB 13 Sn( Anony)HY(mous)YH( Types)155 1 TN()EA()BN}if
+2 NH le{156(3.2\240\240)2 C(2.2)WB 14 Sn( Error Handling)156 1 TN()EA()BN}if
+3 NH le{157(3.2.1\240\240)3 C(2.2.1)WB 15 Sn( )SM(xml_schema::dupli)HY(cate)YH(_id)ES()157 1 TN()EA()BN}if
+2 NH le{158(3.3\240\240)2 C(2.3)WB 16 Sn( Mapping for )SM(import)ES( and )SM(include)ES()158 1 TN()EA()BN}if
+3 NH le{159(3.3.1\240\240)3 C(2.3.1)WB 17 Sn( Import)159 1 TN()EA()BN}if
+3 NH le{160(3.3.2\240\240)3 C(2.3.2)WB 18 Sn( Inclu)HY(sion)YH( with Target Names)HY(pace)YH()160 1 TN()EA()BN}if
+3 NH le{161(3.3.3\240\240)3 C(2.3.3)WB 19 Sn( Inclu)HY(sion)YH( without Target Names)HY(pace)YH()161 1 TN()EA()BN}if
+2 NH le{162(3.4\240\240)2 C(2.4)WB 20 Sn( Mapping for Names)HY(paces)YH()162 1 TN()EA()BN}if
+2 NH le{163(3.5\240\240)2 C(2.5)WB 21 Sn( Mapping for Built-in Data Types)163 1 TN()EA()BN}if
+3 NH le{164(3.5.1\240\240)3 C(2.5.1)WB 23 Sn( Inher)HY(i)HY(tance)YH( from Built-in Data Types)164 1 TN()EA()BN}if
+3 NH le{165(3.5.2\240\240)3 C(2.5.2)WB 24 Sn( Mapping for )SM(anyType)ES()165 1 TN()EA()BN}if
+3 NH le{166(3.5.3\240\240)3 C(2.5.3)WB 25 Sn( Mapping for )SM(anySim)HY(ple)HY(Type)YH()ES()166 1 TN()EA()BN}if
+3 NH le{167(3.5.4\240\240)3 C(2.5.4)WB 26 Sn( Mapping for )SM(QName)ES()167 1 TN()EA()BN}if
+3 NH le{168(3.5.5\240\240)3 C(2.5.5)WB 27 Sn( Mapping for )SM(IDREF)ES()168 1 TN()EA()BN}if
+3 NH le{169(3.5.6\240\240)3 C(2.5.6)WB 28 Sn( Mapping for )SM(base64Binary)ES( and
+ )SM(hexBi)HY(nary)YH()ES()169 1 TN()EA()BN}if
+2 NH le{170(3.6\240\240)2 C(2.5.7)WB 29 Sn( Time Zone Repre)HY(sen)HY(ta)HY(tion)YH()170 1 TN()EA()BN}if
+2 NH le{171(3.7\240\240)2 C(2.5.8)WB 30 Sn( Mapping for )SM(date)ES()171 1 TN()EA()BN}if
+2 NH le{172(3.8\240\240)2 C(2.5.9)WB 31 Sn( Mapping for )SM(date)HY(Time)YH()ES()172 1 TN()EA()BN}if
+2 NH le{173(3.9\240\240)2 C(2.5.10)WB 32 Sn( Mapping for )SM(dura)HY(tion)YH()ES()173 1 TN()EA()BN}if
+2 NH le{174(3.10\240\240)2 C(2.5.11)WB 33 Sn( Mapping for )SM(gDay)ES()174 1 TN()EA()BN}if
+2 NH le{175(3.11\240\240)2 C(2.5.12)WB 34 Sn( Mapping for )SM(gMonth)ES()175 1 TN()EA()BN}if
+2 NH le{176(3.12\240\240)2 C(2.5.13)WB 35 Sn( Mapping for )SM(gMon)HY(th)HY(Day)YH()ES()176 1 TN()EA()BN}if
+2 NH le{177(3.13\240\240)2 C(2.5.14)WB 36 Sn( Mapping for )SM(gYear)ES()177 1 TN()EA()BN}if
+2 NH le{178(3.14\240\240)2 C(2.5.15)WB 37 Sn( Mapping for )SM(gYear)HY(Month)YH()ES()178 1 TN()EA()BN}if
+2 NH le{179(3.15\240\240)2 C(2.5.16)WB 38 Sn( Mapping for )SM(time)ES()179 1 TN()EA()BN}if
+2 NH le{180(3.16\240\240)2 C(2.6)WB 39 Sn( Mapping for Simple Types)180 1 TN()EA()BN}if
+3 NH le{181(3.16.1\240\240)3 C(2.6.1)WB 40 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()181 1 TN()EA()BN}if
+3 NH le{182(3.16.2\240\240)3 C(2.6.2)WB 41 Sn( Mapping for Enumer)HY(a)HY(tions)YH()182 1 TN()EA()BN}if
+3 NH le{183(3.16.3\240\240)3 C(2.6.3)WB 42 Sn( Mapping for Deriva)HY(tion)YH( by List)183 1 TN()EA()BN}if
+3 NH le{184(3.16.4\240\240)3 C(2.6.4)WB 43 Sn( Mapping for Deriva)HY(tion)YH( by Union)184 1 TN()EA()BN}if
+2 NH le{185(3.17\240\240)2 C(2.7)WB 44 Sn( Mapping for Complex Types)185 1 TN()EA()BN}if
+3 NH le{186(3.17.1\240\240)3 C(2.7.1)WB 45 Sn( Mapping for Deriva)HY(tion)YH( by Exten)HY(sion)YH()186 1 TN()EA()BN}if
+3 NH le{187(3.17.2\240\240)3 C(2.7.2)WB 46 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()187 1 TN()EA()BN}if
+2 NH le{188(3.18\240\240)2 C(2.8)WB 47 Sn( Mapping for Local Elements and Attributes)188 1 TN()EA()BN}if
+3 NH le{189(3.18.1\240\240)3 C(2.8.1)WB 48 Sn( Mapping for Members with the One Cardi)HY(nal)HY(ity)YH( Class)189 1 TN()EA()BN}if
+3 NH le{190(3.18.2\240\240)3 C(2.8.2)WB 49 Sn( Mapping for Members with the Optional Cardi)HY(nal)HY(ity)YH( Class)190 1 TN()EA()BN}if
+3 NH le{191(3.18.3\240\240)3 C(2.8.3)WB 50 Sn( Mapping for Members with the Sequence Cardi)HY(nal)HY(ity)YH( Class)191 1 TN()EA()BN}if
+3 NH le{192(3.18.4\240\240)3 C(2.8.4)WB 51 Sn( Element Order)192 1 TN()EA()BN}if
+2 NH le{193(3.19\240\240)2 C(2.9)WB 52 Sn( Mapping for Global Elements)193 1 TN()EA()BN}if
+3 NH le{194(3.19.1\240\240)3 C(2.9.1)WB 53 Sn( Element Types)194 1 TN()EA()BN}if
+3 NH le{195(3.19.2\240\240)3 C(2.9.2)WB 54 Sn( Element Map)195 1 TN()EA()BN}if
+2 NH le{196(3.20\240\240)2 C(2.10)WB 55 Sn( Mapping for Global Attributes)196 1 TN()EA()BN}if
+2 NH le{197(3.21\240\240)2 C(2.11)WB 56 Sn( Mapping for )SM(xsi:type)ES( and Substi)HY(tu)HY(tion)YH(
+ Groups)197 1 TN()EA()BN}if
+2 NH le{198(3.22\240\240)2 C(2.12)WB 57 Sn( Mapping for )SM(any)ES( and )SM(anyAt)HY(tribute)YH()ES()198 1 TN()EA()BN}if
+3 NH le{199(3.22.1\240\240)3 C(2.12.1)WB 58 Sn( Mapping for )SM(any)ES( with the One Cardi)HY(nal)HY(ity)YH( Class)199 1 TN()EA()BN}if
+3 NH le{200(3.22.2\240\240)3 C(2.12.2)WB 59 Sn( Mapping for )SM(any)ES( with the Optional Cardi)HY(nal)HY(ity)YH( Class)200 1 TN()EA()BN}if
+3 NH le{201(3.22.3\240\240)3 C(2.12.3)WB 60 Sn( Mapping for )SM(any)ES( with the Sequence Cardi)HY(nal)HY(ity)YH( Class)201 1 TN()EA()BN}if
+3 NH le{202(3.22.4\240\240)3 C(2.12.4)WB 61 Sn( Element Wild)HY(card)YH( Order)202 1 TN()EA()BN}if
+3 NH le{203(3.22.5\240\240)3 C(2.12.5)WB 62 Sn( Mapping for )SM(anyAt)HY(tribute)YH()ES()203 1 TN()EA()BN}if
+2 NH le{204(3.23\240\240)2 C(2.13)WB 63 Sn( Mapping for Mixed Content Models)204 1 TN()EA()BN}if
+1 NH le{205(4\240\240)1 C(3)WB 64 Sn( Parsing)205 1 TN()EA()BN}if
+2 NH le{206(4.1\240\240)2 C(3.1)WB 65 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)206 1 TN()EA()BN}if
+2 NH le{207(4.2\240\240)2 C(3.2)WB 66 Sn( Flags and Prop)HY(er)HY(ties)YH()207 1 TN()EA()BN}if
+2 NH le{208(4.3\240\240)2 C(3.3)WB 67 Sn( Error Handling)208 1 TN()EA()BN}if
+3 NH le{209(4.3.1\240\240)3 C(3.3.1)WB 68 Sn( )SM(xml_schema::parsing)ES()209 1 TN()EA()BN}if
+3 NH le{210(4.3.2\240\240)3 C(3.3.2)WB 69 Sn( )SM(xml_schema::expected_element)ES()210 1 TN()EA()BN}if
+3 NH le{211(4.3.3\240\240)3 C(3.3.3)WB 70 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()211 1 TN()EA()BN}if
+3 NH le{212(4.3.4\240\240)3 C(3.3.4)WB 71 Sn( )SM(xml_schema::expected_attribute)ES()212 1 TN()EA()BN}if
+3 NH le{213(4.3.5\240\240)3 C(3.3.5)WB 72 Sn( )SM(xml_schema::unex)HY(pected)YH(_enumer)HY(a)HY(tor)YH()ES()213 1 TN()EA()BN}if
+3 NH le{214(4.3.6\240\240)3 C(3.3.6)WB 73 Sn( )SM(xml_schema::expected_text_content)ES()214 1 TN()EA()BN}if
+3 NH le{215(4.3.7\240\240)3 C(3.3.7)WB 74 Sn( )SM(xml_schema::no_type_info)ES()215 1 TN()EA()BN}if
+3 NH le{216(4.3.8\240\240)3 C(3.3.8)WB 75 Sn( )SM(xml_schema::not_derived)ES()216 1 TN()EA()BN}if
+3 NH le{217(4.3.9\240\240)3 C(3.3.9)WB 76 Sn( )SM(xml_schema::no_prefix_mapping)ES()217 1 TN()EA()BN}if
+2 NH le{218(4.4\240\240)2 C(3.4)WB 77 Sn( Reading from a Local File or URI)218 1 TN()EA()BN}if
+2 NH le{219(4.5\240\240)2 C(3.5)WB 78 Sn( Reading from )SM(std::istream)ES()219 1 TN()EA()BN}if
+2 NH le{220(4.6\240\240)2 C(3.6)WB 79 Sn( Reading from )SM(xercesc::Input)HY(Source)YH()ES()220 1 TN()EA()BN}if
+2 NH le{221(4.7\240\240)2 C(3.7)WB 80 Sn( Reading from DOM)221 1 TN()EA()BN}if
+1 NH le{222(5\240\240)1 C(4)WB 81 Sn( Seri)HY(al)HY(iza)HY(tion)YH()222 1 TN()EA()BN}if
+2 NH le{223(5.1\240\240)2 C(4.1)WB 82 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)223 1 TN()EA()BN}if
+2 NH le{224(5.2\240\240)2 C(4.2)WB 83 Sn( Names)HY(pace)YH( Infomap and Char)HY(ac)HY(ter)YH( Encod)HY(ing)YH()224 1 TN()EA()BN}if
+2 NH le{225(5.3\240\240)2 C(4.3)WB 84 Sn( Flags)225 1 TN()EA()BN}if
+2 NH le{226(5.4\240\240)2 C(4.4)WB 85 Sn( Error Handling)226 1 TN()EA()BN}if
+3 NH le{227(5.4.1\240\240)3 C(4.4.1)WB 86 Sn( )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES()227 1 TN()EA()BN}if
+3 NH le{228(5.4.2\240\240)3 C(4.4.2)WB 87 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()228 1 TN()EA()BN}if
+3 NH le{229(5.4.3\240\240)3 C(4.4.3)WB 88 Sn( )SM(xml_schema::no_type_info)ES()229 1 TN()EA()BN}if
+2 NH le{230(5.5\240\240)2 C(4.5)WB 89 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(std::ostream)ES()230 1 TN()EA()BN}if
+2 NH le{231(5.6\240\240)2 C(4.6)WB 90 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES()231 1 TN()EA()BN}if
+2 NH le{232(5.7\240\240)2 C(4.7)WB 91 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to DOM)232 1 TN()EA()BN}if
+1 NH le{233(6\240\240)1 C(5)WB 92 Sn( Addi)HY(tional)YH( Func)HY(tion)HY(al)HY(ity)YH()233 1 TN()EA()BN}if
+2 NH le{234(6.1\240\240)2 C(5.1)WB 93 Sn( DOM Asso)HY(ci)HY(a)HY(tion)YH()234 1 TN()EA()BN}if
+2 NH le{235(6.2\240\240)2 C(5.2)WB 94 Sn( Binary Seri)HY(al)HY(iza)HY(tion)YH()235 1 TN()EA()BN}if
+1 NH le{236(7\240\240)1 C(Appendix)WB 95 Sn( A \236 Default and Fixed Values)236 1 TN()EA()BN}if
+/OU t D /Cb Db D NP Ep ET
+/Cb Db D /Ct [16#00 16#00 16#00] D /Cl [16#00 16#00 16#00] D /CL -1 D Ct Sc
+
+/Ba f D /BO 0 D Bs
+/UR (/home/boris/work/xsd/builds/gcc8-host/xsd/doc/cxx/tree/manual/index.xhtml) D
+/Ti (C++/Tree Mapping User Manual) D
+/Au () D
+/Df f D
+/ME [(4.1.0)] D
+
+NP RC ZF
+()1 Sl()WB 0 Sn(
+
+)BR()WB 1 Sn( )BR()WB 2 Sn(
+
+
+ )0 1 0 H(Preface)WB 145 Sn()WB 3 Sn()EA()EH(
+
+ )0 2 1 H(About)WB 146 Sn()WB 4 Sn( This Docu)HY(ment)YH()EA()EH(
+
+ )0 P(This docu)HY(ment)YH( describes the mapping of W3C XML Schema
+ to the C++ program)HY(ming)YH( language as imple)HY(mented)YH( by
+ )R1 2 A(CodeSyn)HY(the)HY(sis)YH(
+ XSD)EA( - an XML Schema to C++ data binding compiler. The mapping
+ repre)HY(sents)YH( infor)HY(ma)HY(tion)YH( stored in XML instance docu)HY(ments)YH( as a
+ stat)HY(i)HY(cally)YH(-typed, tree-like in-memory data struc)HY(ture)YH( and is
+ called C++/Tree.
+ )EP(
+
+ )0 P(Revi)HY(sion)YH( 4.1.0)BR(
+ This revi)HY(sion)YH( of the manual describes the C++/Tree
+ mapping as imple)HY(mented)YH( by CodeSyn)HY(the)HY(sis)YH( XSD version 4.1.0.
+ )EP(
+
+ )0 P(This docu)HY(ment)YH( is avail)HY(able)YH( in the follow)HY(ing)YH( formats:
+ )R1 2 A(XHTML)EA(,
+ )R2 2 A(PDF)EA(, and
+ )R3 2 A(PostScript)EA(.)EP(
+
+ )0 2 2 H(More)WB 147 Sn()WB 5 Sn( Infor)HY(ma)HY(tion)YH()EA()EH(
+
+ )0 P(Beyond this manual, you may also find the follow)HY(ing)YH( sources of
+ infor)HY(ma)HY(tion)YH( useful:)EP(
+
+ )UL( )-1 LI()R2 2 A(C++/Tree
+ Mapping Getting Started Guide)EA(
+
+ )-1 LI()R3 2 A(C++/Tree
+ Mapping Customiza)HY(tion)YH( Guide)EA(
+
+ )-1 LI()R4 2 A(C++/Tree
+ Mapping Frequently Asked Ques)HY(tions)YH( \201FAQ\202)EA(
+
+ )-1 LI()R5 2 A(XSD
+ Compiler Command Line Manual)EA(
+
+ )-1 LI(The )SM(cxx/tree/)ES( direc)HY(tory)YH( in the
+ )R6 2 A(xsd-exam)HY(ples)YH()EA( package
+ contains a collec)HY(tion)YH( of exam)HY(ples)YH( and a README file with an overview
+ of each example.
+
+ )-1 LI(The )SM(README)ES( file in the
+ )R6 2 A(xsd-exam)HY(ples)YH()EA( package
+ explains how to build the exam)HY(ples)YH(.
+
+ )-1 LI(The )R7 2 A(xsd-users)EA(
+ mailing list is a place to ask ques)HY(tions)YH(. Further)HY(more)YH( the
+ )R8 2 A(archives)EA(
+ may already have answers to some of your ques)HY(tions)YH(.
+ )LU(
+
+
+ )0 1 3 H(1)WB 148 Sn()WB 6 Sn( Intro)HY(duc)HY(tion)YH()EA()EH(
+
+ )0 P(C++/Tree is a W3C XML Schema to C++ mapping that repre)HY(sents)YH( the
+ data stored in XML as a stat)HY(i)HY(cally)YH(-typed, vocab)HY(u)HY(lary)YH(-specific
+ object model. Based on a formal descrip)HY(tion)YH( of an XML vocab)HY(u)HY(lary)YH(
+ \201schema\202, the C++/Tree mapping produces a tree-like data struc)HY(ture)YH(
+ suit)HY(able)YH( for in-memory process)HY(ing)YH( as well as XML parsing and
+ seri)HY(al)HY(iza)HY(tion)YH( code.)EP(
+
+ )0 P(A typical appli)HY(ca)HY(tion)YH( that processes XML docu)HY(ments)YH( usually
+ performs the follow)HY(ing)YH( three steps: it first reads \201parses\202 an XML
+ instance docu)HY(ment)YH( to an object model, it then performs
+ some useful compu)HY(ta)HY(tions)YH( on that model which may involve
+ modi)HY(fi)HY(ca)HY(tion)YH( of the model, and finally it may write \201seri)HY(al)HY(ize)YH(\202
+ the modi)HY(fied)YH( object model back to XML.
+ )EP(
+
+ )0 P(The C++/Tree mapping consists of C++ types that repre)HY(sent)YH( the
+ given vocab)HY(u)HY(lary)YH( \201)0 97 1 A(Chapter 2, "C++/Tree Mapping")97 0 TN TL()Ec /AF f D(\202,
+ a set of parsing func)HY(tions)YH( that convert XML docu)HY(ments)YH( to
+ a tree-like in-memory data struc)HY(ture)YH( \201)0 98 1 A(Chapter 3,
+ "Parsing")98 0 TN TL()Ec /AF f D(\202, and a set of seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( that convert
+ the object model back to XML \201)0 99 1 A(Chapter 4,
+ "Seri)HY(al)HY(iza)HY(tion)YH(")99 0 TN TL()Ec /AF f D(\202. Further)HY(more)YH(, the mapping provides a number
+ of addi)HY(tional)YH( features, such as DOM asso)HY(ci)HY(a)HY(tion)YH( and binary
+ seri)HY(al)HY(iza)HY(tion)YH(, that can be useful in some appli)HY(ca)HY(tions)YH(
+ \201)0 100 1 A(Chapter 5, "Addi)HY(tional)YH( Func)HY(tion)HY(al)HY(ity)YH(")100 0 TN TL()Ec /AF f D(\202.
+ )EP(
+
+
+
+
+
+ )0 1 4 H(2)WB 149 Sn()WB 7 Sn( C++/Tree Mapping)EA()EH(
+
+ )0 2 5 H(2.1)WB 150 Sn()WB 8 Sn( Prelim)HY(i)HY(nary)YH( Infor)HY(ma)HY(tion)YH()EA()EH(
+
+ )0 3 6 H(2.1.1)WB 151 Sn()WB 9 Sn( C++ Stan)HY(dard)YH()EA()EH(
+
+ )0 P(The C++/Tree mapping provides support for ISO/IEC C++ 2011 \201C++11\202
+ and ISO/IEC C++ 1998/2003 \201C++98\202. To select the C++ stan)HY(dard)YH( for the
+ gener)HY(ated)YH( code we use the )SM(--std)ES( XSD compiler command
+ line option. While the major)HY(ity)YH( of the exam)HY(ples)YH( in this guide use
+ C++11, the docu)HY(ment)YH( explains the C++11/98 usage differ)HY(ence)YH( and so
+ they can easily be converted to C++98.)EP(
+
+ )0 3 7 H(2.1.2)WB 152 Sn()WB 10 Sn( Iden)HY(ti)HY(fiers)YH()EA()EH(
+
+ )0 P(XML Schema names may happen to be reserved C++ keywords or contain
+ char)HY(ac)HY(ters)YH( that are illegal in C++ iden)HY(ti)HY(fiers)YH(. To avoid C++ compi)HY(la)HY(tion)YH(
+ prob)HY(lems)YH(, such names are changed \201escaped\202 when mapped to C++. If an
+ XML Schema name is a C++ keyword, the "_" suffix is added to it. All
+ char)HY(ac)HY(ter)YH( of an XML Schema name that are not allowed in C++ iden)HY(ti)HY(fiers)YH(
+ are replaced with "_".
+ )EP(
+
+ )0 P(For example, XML Schema name )SM(try)ES( will be mapped to
+ C++ iden)HY(ti)HY(fier)YH( )SM(try_)ES(. Simi)HY(larly)YH(, XML Schema name
+ )SM(strange.na-me)ES( will be mapped to C++ iden)HY(ti)HY(fier)YH(
+ )SM(strange_na_me)ES(.
+ )EP(
+
+ )0 P(Further)HY(more)YH(, conflicts between type names and func)HY(tion)YH( names in the
+ same scope are resolved using name escap)HY(ing)YH(. Such conflicts include
+ both a global element \201which is mapped to a set of parsing and/or
+ seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( or element types, see )0 101 1 A(Section
+ 2.9, "Mapping for Global Elements")101 0 TN TL()Ec /AF f D(\202 and a global type sharing the
+ same name as well as a local element or attribute inside a type having
+ the same name as the type itself.)EP(
+
+ )0 P(For example, if we had a global type )SM(catalog)ES(
+ and a global element with the same name then the type would be
+ mapped to a C++ class with name )SM(catalog)ES( while the
+ parsing func)HY(tions)YH( corre)HY(spond)HY(ing)YH( to the global element would have
+ their names escaped as )SM(catalog_)ES(.
+ )EP(
+
+ )0 P(By default the mapping uses the so-called K&R \201Kernighan and
+ Ritchie\202 iden)HY(ti)HY(fier)YH( naming conven)HY(tion)YH( which is also used through)HY(out)YH(
+ this manual. In this conven)HY(tion)YH( both type and func)HY(tion)YH( names are in
+ lower case and words are sepa)HY(rated)YH( by under)HY(scores)YH(. If your appli)HY(ca)HY(tion)YH(
+ code or schemas use a differ)HY(ent)YH( nota)HY(tion)YH(, you may want to change the
+ naming conven)HY(tion)YH( used by the mapping for consis)HY(tency)YH(.
+ The compiler supports a set of widely-used naming conven)HY(tions)YH(
+ that you can select with the )SM(--type-naming)ES( and
+ )SM(--func)HY(tion)YH(-naming)ES( options. You can also further
+ refine one of the prede)HY(fined)YH( conven)HY(tions)YH( or create a completely
+ custom naming scheme by using the )SM(--*-regex)ES( options.
+ For more detailed infor)HY(ma)HY(tion)YH( on these options refer to the NAMING
+ CONVEN)HY(TION)YH( section in the )R5 2 A(XSD
+ Compiler Command Line Manual)EA(.)EP(
+
+ )0 3 8 H(2.1.3)WB 153 Sn()WB 11 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()EA()EH(
+
+ )0 P(The code that imple)HY(ments)YH( the mapping, depend)HY(ing)YH( on the
+ )SM(--char-type)ES( option, is gener)HY(ated)YH( using either
+ )SM(char)ES( or )SM(wchar_t)ES( as the char)HY(ac)HY(ter)YH(
+ type. In this docu)HY(ment)YH( code samples use symbol )SM(C)ES(
+ to refer to the char)HY(ac)HY(ter)YH( type you have selected when trans)HY(lat)HY(ing)YH(
+ your schemas, for example )SM(std::basic_string<C>)ES(.
+ )EP(
+
+ )0 P(Another aspect of the mapping that depends on the char)HY(ac)HY(ter)YH( type
+ is char)HY(ac)HY(ter)YH( encod)HY(ing)YH(. For the )SM(char)ES( char)HY(ac)HY(ter)YH( type
+ the default encod)HY(ing)YH( is UTF-8. Other supported encod)HY(ings)YH( are
+ ISO-8859-1, Xerces-C++ Local Code Page \201LPC\202, as well as
+ custom encod)HY(ings)YH( and can be selected with the
+ )SM(--char-encod)HY(ing)YH()ES( command line option.)EP(
+
+ )0 P(For the )SM(wchar_t)ES( char)HY(ac)HY(ter)YH( type the encod)HY(ing)YH( is
+ auto)HY(mat)HY(i)HY(cally)YH( selected between UTF-16 and UTF-32/UCS-4 depend)HY(ing)YH(
+ on the size of the )SM(wchar_t)ES( type. On some plat)HY(forms)YH(
+ \201for example, Windows with Visual C++ and AIX with IBM XL C++\202
+ )SM(wchar_t)ES( is 2 bytes long. For these plat)HY(forms)YH( the
+ encod)HY(ing)YH( is UTF-16. On other plat)HY(forms)YH( )SM(wchar_t)ES( is 4 bytes
+ long and UTF-32/UCS-4 is used.)EP(
+
+ )0 3 9 H(2.1.4)WB 154 Sn()WB 12 Sn( XML Schema Names)HY(pace)YH()EA()EH(
+
+ )0 P(The mapping relies on some prede)HY(fined)YH( types, classes, and func)HY(tions)YH(
+ that are logi)HY(cally)YH( defined in the XML Schema names)HY(pace)YH( reserved for
+ the XML Schema language \201)SM(http://www.w3.org/2001/XMLSchema)ES(\202.
+ By default, this names)HY(pace)YH( is mapped to C++ names)HY(pace)YH(
+ )SM(xml_schema)ES(. It is auto)HY(mat)HY(i)HY(cally)YH( acces)HY(si)HY(ble)YH(
+ from a C++ compi)HY(la)HY(tion)YH( unit that includes a header file gener)HY(ated)YH(
+ from an XML Schema defi)HY(ni)HY(tion)YH(.
+ )EP(
+
+ )0 P(Note that, if desired, the default mapping of this names)HY(pace)YH( can be
+ changed as described in )0 102 1 A(Section 2.4, "Mapping for
+ Names)HY(paces)YH(")102 0 TN TL()Ec /AF f D(.
+ )EP(
+
+
+ )0 3 10 H(2.1.5)WB 155 Sn()WB 13 Sn( Anony)HY(mous)YH( Types)EA()EH(
+
+ )0 P(For the purpose of code gener)HY(a)HY(tion)YH(, anony)HY(mous)YH( types defined in
+ XML Schema are auto)HY(mat)HY(i)HY(cally)YH( assigned names that are derived
+ from enclos)HY(ing)YH( attributes and elements. Other)HY(wise)YH(, such types
+ follows stan)HY(dard)YH( mapping rules for simple and complex type
+ defi)HY(ni)HY(tions)YH( \201see )0 103 1 A(Section 2.6, "Mapping for Simple Types")103 0 TN TL()Ec /AF f D(
+ and )0 104 1 A(Section 2.7, "Mapping for Complex Types")104 0 TN TL()Ec /AF f D(\202.
+ For example, in the follow)HY(ing)YH( schema frag)HY(ment)YH(:
+ )EP(
+
+ ) 5 23 PR(<element name="object">
+ <complexType>
+ ...
+ </complexType>
+</element>)RP(
+
+ )0 P(The anony)HY(mous)YH( type defined inside element )SM(object)ES( will
+ be given name )SM(object)ES(. The compiler has a number of
+ options that control the process of anony)HY(mous)YH( type naming. For more
+ infor)HY(ma)HY(tion)YH( refer to the )R5 2 A(XSD
+ Compiler Command Line Manual)EA(.)EP(
+
+
+ )0 2 11 H(2.2)WB 156 Sn()WB 14 Sn( Error Handling)EA()EH(
+
+ )0 P(The mapping uses the C++ excep)HY(tion)YH( handling mech)HY(a)HY(nism)YH( as a primary way
+ of report)HY(ing)YH( error condi)HY(tions)YH(. All excep)HY(tions)YH( that are spec)HY(i)HY(fied)YH( in
+ this mapping derive from )SM(xml_schema::excep)HY(tion)YH()ES( which
+ itself is derived from )SM(std::excep)HY(tion)YH()ES(:
+ )EP(
+
+ ) 14 60 PR(struct exception: virtual std::exception
+{
+ friend
+ std::basic_ostream<C>&
+ operator<< \201std::basic_ostream<C>& os, const exception& e\202
+ {
+ e.print \201os\202;
+ return os;
+ }
+
+protected:
+ virtual void
+ print \201std::basic_ostream<C>&\202 const = 0;
+};)RP(
+
+ )0 P(The excep)HY(tion)YH( hier)HY(ar)HY(chy)YH( supports "virtual" )SM(oper)HY(a)HY(tor)YH(<<)ES(
+ which allows you to obtain diag)HY(nos)HY(tics)YH( corre)HY(spond)HY(ing)YH( to the thrown
+ excep)HY(tion)YH( using the base excep)HY(tion)YH( inter)HY(face)YH(. For example:)EP(
+
+ ) 8 38 PR(try
+{
+ ...
+}
+catch \201const xml_schema::exception& e\202
+{
+ cerr << e << endl;
+})RP(
+
+ )0 P(The follow)HY(ing)YH( sub-sections describe excep)HY(tions)YH( thrown by the
+ types that consti)HY(tute)YH( the object model.
+ )0 105 1 A(Section 3.3, "Error Handling")105 0 TN TL()Ec /AF f D( of
+ )0 98 1 A(Chapter 3, "Parsing")98 0 TN TL()Ec /AF f D( describes excep)HY(tions)YH(
+ and error handling mech)HY(a)HY(nisms)YH( specific to the parsing func)HY(tions)YH(.
+ )0 106 1 A(Section 4.4, "Error Handling")106 0 TN TL()Ec /AF f D( of
+ )0 99 1 A(Chapter 4, "Seri)HY(al)HY(iza)HY(tion)YH(")99 0 TN TL()Ec /AF f D( describes excep)HY(tions)YH(
+ and error handling mech)HY(a)HY(nisms)YH( specific to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(.
+ )EP(
+
+
+ )0 3 12 H(2.2.1)WB 157 Sn()WB 15 Sn( )SM(xml_schema::dupli)HY(cate)YH(_id)ES()EA()EH(
+
+ ) 10 48 PR(struct duplicate_id: virtual exception
+{
+ duplicate_id \201const std::basic_string<C>& id\202;
+
+ const std::basic_string<C>&
+ id \201\202 const;
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::dupli)HY(cate)YH(_id)ES( is thrown when
+ a conflict)HY(ing)YH( instance of )SM(xml_schema::id)ES( \201see
+ )0 107 1 A(Section 2.5, "Mapping for Built-in Data Types")107 0 TN TL()Ec /AF f D(\202
+ is added to a tree. The offend)HY(ing)YH( ID value can be obtained using
+ the )SM(id)ES( func)HY(tion)YH(.
+ )EP(
+
+ )0 2 13 H(2.3)WB 158 Sn()WB 16 Sn( Mapping for )SM(import)ES( and )SM(include)ES()EA()EH(
+
+ )0 3 14 H(2.3.1)WB 159 Sn()WB 17 Sn( Import)EA()EH(
+
+ )0 P(The XML Schema )SM(import)ES( element is mapped to the C++
+ Prepro)HY(ces)HY(sor)YH( )SM(#include)ES( direc)HY(tive)YH(. The value of
+ the )SM(schemaLo)HY(ca)HY(tion)YH()ES( attribute is used to derive
+ the name of the header file that appears in the )SM(#include)ES(
+ direc)HY(tive)YH(. For instance:
+ )EP(
+
+ ) 2 54 PR(<import namespace="https://www.codesynthesis.com/test"
+ schemaLocation="test.xsd"/>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 1 19 PR(#include "test.hxx")RP(
+
+ )0 P(Note that you will need to compile imported schemas sepa)HY(rately)YH(
+ in order to produce corre)HY(spond)HY(ing)YH( header files.)EP(
+
+ )0 3 15 H(2.3.2)WB 160 Sn()WB 18 Sn( Inclu)HY(sion)YH( with Target Names)HY(pace)YH()EA()EH(
+
+ )0 P(The XML Schema )SM(include)ES( element which refers to a schema
+ with a target names)HY(pace)YH( or appears in a schema without a target names)HY(pace)YH(
+ follows the same mapping rules as the )SM(import)ES( element,
+ see )0 108 1 A(Section 2.3.1, "Import")108 0 TN TL()Ec /AF f D(.
+ )EP(
+
+ )0 3 16 H(2.3.3)WB 161 Sn()WB 19 Sn( Inclu)HY(sion)YH( without Target Names)HY(pace)YH()EA()EH(
+
+ )0 P(For the XML Schema )SM(include)ES( element which refers to a schema
+ without a target names)HY(pace)YH( and appears in a schema with a target
+ names)HY(pace)YH( \201such inclu)HY(sion)YH( some)HY(times)YH( called "chameleon inclu)HY(sion)YH("\202,
+ decla)HY(ra)HY(tions)YH( and defi)HY(ni)HY(tions)YH( from the included schema are gener)HY(ated)YH(
+ in-line in the names)HY(pace)YH( of the includ)HY(ing)YH( schema as if they were
+ declared and defined there verba)HY(tim)YH(. For example, consider the
+ follow)HY(ing)YH( two schemas:
+ )EP(
+
+ ) 11 61 PR(<-- common.xsd -->
+<schema>
+ <complexType name="type">
+ ...
+ </complexType>
+</schema>
+
+<-- test.xsd -->
+<schema targetNamespace="https://www.codesynthesis.com/test">
+ <include schemaLocation="common.xsd"/>
+</schema>)RP(
+
+ )0 P(The frag)HY(ment)YH( of inter)HY(est)YH( from the gener)HY(ated)YH( header file for
+ )SM(text.xsd)ES( would look like this:)EP(
+
+ ) 8 14 PR(// test.hxx
+namespace test
+{
+ class type
+ {
+ ...
+ };
+})RP(
+
+ )0 2 17 H(2.4)WB 162 Sn()WB 20 Sn( Mapping for Names)HY(paces)YH()EA()EH(
+
+ )0 P(An XML Schema names)HY(pace)YH( is mapped to one or more nested C++
+ names)HY(paces)YH(. XML Schema names)HY(paces)YH( are iden)HY(ti)HY(fied)YH( by URIs.
+ By default, a names)HY(pace)YH( URI is mapped to a sequence of
+ C++ names)HY(pace)YH( names by remov)HY(ing)YH( the proto)HY(col)YH( and host parts
+ and split)HY(ting)YH( the rest into a sequence of names with ')SM(/)ES('
+ as the name sepa)HY(ra)HY(tor)YH(. For instance:
+ )EP(
+
+ ) 3 68 PR(<schema targetNamespace="https://www.codesynthesis.com/system/test">
+ ...
+</schema>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 7 16 PR(namespace system
+{
+ namespace test
+ {
+ ...
+ }
+})RP(
+
+ )0 P(The default mapping of names)HY(pace)YH( URIs to C++ names)HY(pace)YH( names can be
+ altered using the )SM(--names)HY(pace)YH(-map)ES( and
+ )SM(--names)HY(pace)YH(-regex)ES( options. See the
+ )R5 2 A(XSD
+ Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH(.
+ )EP(
+
+ )0 2 18 H(2.5)WB 163 Sn()WB 21 Sn( Mapping for Built-in Data Types)EA()EH(
+
+ )0 P(The mapping of XML Schema built-in data types to C++ types is
+ summa)HY(rized)YH( in the table below.)EP(
+
+
+ )0 PT(
+
+ )0 P(All XML Schema built-in types are mapped to C++ classes that are
+ derived from the )SM(xml_schema::simple_type)ES( class except
+ where the mapping is to a funda)HY(men)HY(tal)YH( C++ type.)EP(
+
+ )0 P(The )SM(sequence)ES( class template is defined in an
+ imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH(. It conforms to the
+ sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
+ C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202.
+ Prac)HY(ti)HY(cally)YH(, this means that you can treat such a sequence
+ as if it was )SM(std::vector)ES(. One notable exten)HY(sion)YH(
+ to the stan)HY(dard)YH( inter)HY(face)YH( that is avail)HY(able)YH( only for
+ sequences of non-funda)HY(men)HY(tal)YH( C++ types is the addi)HY(tion)YH( of
+ the over)HY(loaded)YH( )SM(push_back)ES( and )SM(insert)ES(
+ member func)HY(tions)YH( which instead of the constant refer)HY(ence)YH(
+ to the element type accept auto)HY(matic)YH( pointer \201)SM(std::unique_ptr)ES(
+ or )SM(std::auto_ptr)ES(, depend)HY(ing)YH( on the C++ stan)HY(dard)YH(
+ selected\202 to the element type. These func)HY(tions)YH( assume owner)HY(ship)YH(
+ of the pointed to object and reset the passed auto)HY(matic)YH( pointer.
+ )EP(
+
+ )0 3 19 H(2.5.1)WB 164 Sn()WB 23 Sn( Inher)HY(i)HY(tance)YH( from Built-in Data Types)EA()EH(
+
+ )0 P(In cases where the mapping calls for an inher)HY(i)HY(tance)YH( from a built-in
+ type which is mapped to a funda)HY(men)HY(tal)YH( C++ type, a proxy type is
+ used instead of the funda)HY(men)HY(tal)YH( C++ type \201C++ does not allow
+ inher)HY(i)HY(tance)YH( from funda)HY(men)HY(tal)YH( types\202. For instance:)EP(
+
+ ) 3 27 PR(<simpleType name="my_int">
+ <restriction base="int"/>
+</simpleType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 4 42 PR(class my_int: public fundamental_base<int>
+{
+ ...
+};)RP(
+
+ )0 P(The )SM(funda)HY(men)HY(tal)YH(_base)ES( class template provides a close
+ emula)HY(tion)YH( \201though not exact\202 of a funda)HY(men)HY(tal)YH( C++ type.
+ It is defined in an imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH( and has the
+ follow)HY(ing)YH( inter)HY(face)YH(:)EP(
+
+ ) 22 44 PR(template <typename X>
+class fundamental_base: public simple_type
+{
+public:
+ fundamental_base \201\202;
+ fundamental_base \201X\202
+ fundamental_base \201const fundamental_base&\202
+
+public:
+ fundamental_base&
+ operator= \201const X&\202;
+
+public:
+ operator const X & \201\202 const;
+ operator X& \201\202;
+
+ template <typename Y>
+ operator Y \201\202 const;
+
+ template <typename Y>
+ operator Y \201\202;
+};)RP(
+
+ )0 3 20 H(2.5.2)WB 165 Sn()WB 24 Sn( Mapping for )SM(anyType)ES()EA()EH(
+
+ )0 P(The XML Schema )SM(anyType)ES( built-in data type is mapped to the
+ )SM(xml_schema::type)ES( C++ class:)EP(
+
+ ) 53 48 PR(class type
+{
+public:
+ virtual
+ ~type \201\202;
+
+ type \201\202;
+ type \201const type&\202;
+
+ type&
+ operator= \201const type&\202;
+
+ virtual type*
+ _clone \201\202 const;
+
+ // anyType DOM content.
+ //
+public:
+ typedef element_optional dom_content_optional;
+
+ const dom_content_optional&
+ dom_content \201\202 const;
+
+ dom_content_optional&
+ dom_content \201\202;
+
+ void
+ dom_content \201const xercesc::DOMElement&\202;
+
+ void
+ dom_content \201xercesc::DOMElement*\202;)WR(
+
+ void
+ dom_content \201const dom_content_optional&\202;
+
+ const xercesc::DOMDocument&
+ dom_content_document \201\202 const;
+
+ xercesc::DOMDocument&
+ dom_content_document \201\202;
+
+ bool
+ null_content \201\202 const;
+
+ // DOM association.
+ //
+public:
+ const xercesc::DOMNode*
+ _node \201\202 const;
+
+ xercesc::DOMNode*
+ _node \201\202;
+};)RP(
+
+ )0 P(When )SM(xml_schema::type)ES( is used to create an instance
+ \201as opposed to being a base of a derived type\202, it repre)HY(sents)YH(
+ the XML Schema )SM(anyType)ES( type. )SM(anyType)ES(
+ allows any attributes and any content in any order. In the
+ C++/Tree mapping this content can be repre)HY(sented)YH( as a DOM
+ frag)HY(ment)YH(, similar to XML Schema wild)HY(cards)YH( \201)0 123 1 A(Section
+ 2.12, "Mapping for )SM(any)ES( and
+ )SM(anyAt)HY(tribute)YH()ES(")123 0 TN TL()Ec /AF f D(\202.)EP(
+
+ )0 P(To enable auto)HY(matic)YH( extrac)HY(tion)YH( of )SM(anyType)ES( content
+ during parsing, the )SM(--gener)HY(ate)YH(-any-type)ES( option must be
+ spec)HY(i)HY(fied)YH(. Because the DOM API is used to access such content, the
+ Xerces-C++ runtime should be initial)HY(ized)YH( by the appli)HY(ca)HY(tion)YH( prior to
+ parsing and should remain initial)HY(ized)YH( for the life)HY(time)YH( of objects
+ with the DOM content. For more infor)HY(ma)HY(tion)YH( on the Xerces-C++ runtime
+ initial)HY(iza)HY(tion)YH( see )0 124 1 A(Section 3.1, "Initial)HY(iz)HY(ing)YH( the
+ Xerces-C++ Runtime")124 0 TN TL()Ec /AF f D(.)EP(
+
+ )0 P(The DOM content is stored as the optional DOM element container
+ and the DOM content acces)HY(sors)YH( and modi)HY(fiers)YH( presented above are
+ iden)HY(ti)HY(cal)YH( to those gener)HY(ated)YH( for an optional element wild)HY(card)YH(.
+ Refer to )0 125 1 A(Section 2.12.2, "Mapping for )SM(any)ES(
+ with the Optional Cardi)HY(nal)HY(ity)YH( Class")125 0 TN TL()Ec /AF f D( for details on their
+ seman)HY(tics)YH(.)EP(
+
+ )0 P(The )SM(dom_content_docu)HY(ment)YH(\201\202)ES( func)HY(tion)YH( returns the
+ DOM docu)HY(ment)YH( used to store the raw XML content corre)HY(spond)HY(ing)YH(
+ to the )SM(anyType)ES( instance. It is equiv)HY(a)HY(lent)YH( to the
+ )SM(dom_docu)HY(ment)YH(\201\202)ES( func)HY(tion)YH( gener)HY(ated)YH( for types
+ with wild)HY(cards)YH(.)EP(
+
+ )0 P(The )SM(null_content\201\202)ES( acces)HY(sor)YH( is an opti)HY(miza)HY(tion)YH( func)HY(tion)YH(
+ that allows us to check for the lack of content without actu)HY(ally)YH(
+ creat)HY(ing)YH( its empty repre)HY(sen)HY(ta)HY(tion)YH(, that is, empty DOM docu)HY(ment)YH( for
+ )SM(anyType)ES( or empty string for )SM(anySim)HY(ple)HY(Type)YH()ES(
+ \201see the follow)HY(ing)YH( section for details on )SM(anySim)HY(ple)HY(Type)YH()ES(\202.)EP(
+
+ )0 P(For more infor)HY(ma)HY(tion)YH( on DOM asso)HY(ci)HY(a)HY(tion)YH( refer to
+ )0 126 1 A(Section 5.1, "DOM Asso)HY(ci)HY(a)HY(tion)YH(")126 0 TN TL()Ec /AF f D(.)EP(
+
+ )0 3 21 H(2.5.3)WB 166 Sn()WB 25 Sn( Mapping for )SM(anySim)HY(ple)HY(Type)YH()ES()EA()EH(
+
+ )0 P(The XML Schema )SM(anySim)HY(ple)HY(Type)YH()ES( built-in data type is mapped
+ to the )SM(xml_schema::simple_type)ES( C++ class:)EP(
+
+ ) 27 45 PR(class simple_type: public type
+{
+public:
+ simple_type \201\202;
+ simple_type \201const C*\202;
+ simple_type \201const std::basic_string<C>&\202;
+
+ simple_type \201const simple_type&\202;
+
+ simple_type&
+ operator= \201const simple_type&\202;
+
+ virtual simple_type*
+ _clone \201\202 const;
+
+ // anySimpleType text content.
+ //
+public:
+ const std::basic_string<C>&
+ text_content \201\202 const;
+
+ std::basic_string<C>&
+ text_content \201\202;
+
+ void
+ text_content \201const std::basic_string<C>&\202;
+};)RP(
+
+ )0 P(When )SM(xml_schema::simple_type)ES( is used to create an instance
+ \201as opposed to being a base of a derived type\202, it repre)HY(sents)YH(
+ the XML Schema )SM(anySim)HY(ple)HY(Type)YH()ES( type. )SM(anySim)HY(ple)HY(Type)YH()ES(
+ allows any simple content. In the C++/Tree mapping this content can
+ be repre)HY(sented)YH( as a string and accessed or modi)HY(fied)YH( with the
+ )SM(text_content\201\202)ES( func)HY(tions)YH( shown above.)EP(
+
+ )0 3 22 H(2.5.4)WB 167 Sn()WB 26 Sn( Mapping for )SM(QName)ES()EA()EH(
+
+ )0 P(The XML Schema )SM(QName)ES( built-in data type is mapped to the
+ )SM(xml_schema::qname)ES( C++ class:)EP(
+
+ ) 25 36 PR(class qname: public simple_type
+{
+public:
+ qname \201const ncname&\202;
+ qname \201const uri&, const ncname&\202;
+ qname \201const qname&\202;
+
+public:
+ qname&
+ operator= \201const qname&\202;
+
+public:
+ virtual qname*
+ _clone \201\202 const;
+
+public:
+ bool
+ qualified \201\202 const;
+
+ const uri&
+ namespace_ \201\202 const;
+
+ const ncname&
+ name \201\202 const;
+};)RP(
+
+ )0 P(The )SM(qual)HY(i)HY(fied)YH()ES( acces)HY(sor)YH( func)HY(tion)YH( can be used to deter)HY(mine)YH(
+ if the name is qual)HY(i)HY(fied)YH(.)EP(
+
+ )0 3 23 H(2.5.5)WB 168 Sn()WB 27 Sn( Mapping for )SM(IDREF)ES()EA()EH(
+
+ )0 P(The XML Schema )SM(IDREF)ES( built-in data type is mapped to the
+ )SM(xml_schema::idref)ES( C++ class. This class imple)HY(ments)YH( the
+ smart pointer C++ idiom:)EP(
+
+ ) 56 44 PR(class idref: public ncname
+{
+public:
+ idref \201const C* s\202;
+ idref \201const C* s, std::size_t n\202;
+ idref \201std::size_t n, C c\202;
+ idref \201const std::basic_string<C>&\202;
+ idref \201const std::basic_string<C>&,
+ std::size_t pos,
+ std::size_t n = npos\202;
+
+public:
+ idref \201const idref&\202;
+
+public:
+ virtual idref*
+ _clone \201\202 const;
+
+public:
+ idref&
+ operator= \201C c\202;
+
+ idref&
+ operator= \201const C* s\202;
+
+ idref&
+ operator= \201const std::basic_string<C>&\202
+
+ idref&
+ operator= \201const idref&\202;
+)WR(
+public:
+ const type*
+ operator-> \201\202 const;
+
+ type*
+ operator-> \201\202;
+
+ const type&
+ operator* \201\202 const;
+
+ type&
+ operator* \201\202;
+
+ const type*
+ get \201\202 const;
+
+ type*
+ get \201\202;
+
+ // Conversion to bool.
+ //
+public:
+ typedef void \201idref::*bool_convertible\202\201\202;
+ operator bool_convertible \201\202 const;
+};)RP(
+
+ )0 P(The object, )SM(idref)ES( instance refers to, is the imme)HY(di)HY(ate)YH(
+ container of the match)HY(ing)YH( )SM(id)ES( instance. For example,
+ with the follow)HY(ing)YH( instance docu)HY(ment)YH( and schema:
+ )EP(
+
+
+ ) 22 49 PR(<!-- test.xml -->
+<root>
+ <object id="obj-1" text="hello"/>
+ <reference>obj-1</reference>
+</root>
+
+<!-- test.xsd -->
+<schema>
+ <complexType name="object_type">
+ <attribute name="id" type="ID"/>
+ <attribute name="text" type="string"/>
+ </complexType>
+
+ <complexType name="root_type">
+ <sequence>
+ <element name="object" type="object_type"/>
+ <element name="reference" type="IDREF"/>
+ </sequence>
+ </complexType>
+
+ <element name="root" type="root_type"/>
+</schema>)RP(
+
+ )0 P(The )SM(ref)ES( instance in the code below will refer to
+ an object of type )SM(object_type)ES(:)EP(
+
+ ) 4 53 PR(root_type& root = ...;
+xml_schema::idref& ref \201root.reference \201\202\202;
+object_type& obj \201dynamic_cast<object_type&> \201*ref\202\202;
+cout << obj.text \201\202 << endl;)RP(
+
+ )0 P(The smart pointer inter)HY(face)YH( of the )SM(idref)ES( class always
+ returns a pointer or refer)HY(ence)YH( to )SM(xml_schema::type)ES(.
+ This means that you will need to manu)HY(ally)YH( cast such pointer or
+ refer)HY(ence)YH( to its real \201dynamic\202 type before you can use it \201unless
+ all you need is the base inter)HY(face)YH( provided by
+ )SM(xml_schema::type)ES(\202. As a special exten)HY(sion)YH( to the XML
+ Schema language, the mapping supports static typing of )SM(idref)ES(
+ refer)HY(ences)YH( by employ)HY(ing)YH( the )SM(refType)ES( exten)HY(sion)YH( attribute.
+ The follow)HY(ing)YH( example illus)HY(trates)YH( this mech)HY(a)HY(nism)YH(:
+ )EP(
+
+ ) 11 72 PR(<!-- test.xsd -->
+<schema
+ xmlns:xse="https://www.codesynthesis.com/xmlns/xml-schema-extension">
+
+ ...
+
+ <element name="reference" type="IDREF" xse:refType="object_type"/>
+
+ ...
+
+</schema>)RP(
+
+ )0 P(With this modi)HY(fi)HY(ca)HY(tion)YH( we do not need to do manual casting anymore:
+ )EP(
+
+ ) 4 51 PR(root_type& root = ...;
+root_type::reference_type& ref \201root.reference \201\202\202;
+object_type& obj \201*ref\202;
+cout << ref->text \201\202 << endl;)RP(
+
+
+ )0 3 24 H(2.5.6)WB 169 Sn()WB 28 Sn( Mapping for )SM(base64Binary)ES( and
+ )SM(hexBi)HY(nary)YH()ES()EA()EH(
+
+ )0 P(The XML Schema )SM(base64Binary)ES( and )SM(hexBi)HY(nary)YH()ES(
+ built-in data types are mapped to the
+ )SM(xml_schema::base64_binary)ES( and
+ )SM(xml_schema::hex_binary)ES( C++ classes, respec)HY(tively)YH(. The
+ )SM(base64_binary)ES( and )SM(hex_binary)ES( classes
+ support a simple buffer abstrac)HY(tion)YH( by inher)HY(it)HY(ing)YH( from the
+ )SM(xml_schema::buffer)ES( class:
+ )EP(
+
+ ) 64 58 PR(class bounds: public virtual exception
+{
+public:
+ virtual const char*
+ what \201\202 const throw \201\202;
+};
+
+class buffer
+{
+public:
+ typedef std::size_t size_t;
+
+public:
+ buffer \201size_t size = 0\202;
+ buffer \201size_t size, size_t capacity\202;
+ buffer \201const void* data, size_t size\202;
+ buffer \201const void* data, size_t size, size_t capacity\202;
+ buffer \201void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership\202;
+
+public:
+ buffer \201const buffer&\202;
+
+ buffer&
+ operator= \201const buffer&\202;
+
+ void
+ swap \201buffer&\202;
+)WR(
+public:
+ size_t
+ capacity \201\202 const;
+
+ bool
+ capacity \201size_t\202;
+
+public:
+ size_t
+ size \201\202 const;
+
+ bool
+ size \201size_t\202;
+
+public:
+ const char*
+ data \201\202 const;
+
+ char*
+ data \201\202;
+
+ const char*
+ begin \201\202 const;
+
+ char*
+ begin \201\202;
+
+ const char*
+ end \201\202 const;
+)WR(
+ char*
+ end \201\202;
+};)RP(
+
+ )0 P(The last over)HY(loaded)YH( construc)HY(tor)YH( reuses an exist)HY(ing)YH( data buffer instead
+ of making a copy. If the )SM(assume_owner)HY(ship)YH()ES( argu)HY(ment)YH( is
+ )SM(true)ES(, the instance assumes owner)HY(ship)YH( of the
+ memory block pointed to by the )SM(data)ES( argu)HY(ment)YH( and will
+ even)HY(tu)HY(ally)YH( release it by calling )SM(oper)HY(a)HY(tor)YH( delete)ES(. The
+ )SM(capac)HY(ity)YH()ES( and )SM(size)ES( modi)HY(fier)YH( func)HY(tions)YH( return
+ )SM(true)ES( if the under)HY(ly)HY(ing)YH( buffer has moved.
+ )EP(
+
+ )0 P(The )SM(bounds)ES( excep)HY(tion)YH( is thrown if the construc)HY(tor)YH(
+ argu)HY(ments)YH( violate the )SM(\201size\240<=\240capac)HY(ity)YH(\202)ES(
+ constraint.)EP(
+
+ )0 P(The )SM(base64_binary)ES( and )SM(hex_binary)ES( classes
+ support the )SM(buffer)ES( inter)HY(face)YH( and perform auto)HY(matic)YH(
+ decod)HY(ing)YH(/encod)HY(ing)YH( from/to the Base64 and Hex formats, respec)HY(tively)YH(:
+ )EP(
+
+ ) 25 65 PR(class base64_binary: public simple_type, public buffer
+{
+public:
+ base64_binary \201size_t size = 0\202;
+ base64_binary \201size_t size, size_t capacity\202;
+ base64_binary \201const void* data, size_t size\202;
+ base64_binary \201const void* data, size_t size, size_t capacity\202;
+ base64_binary \201void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership\202;
+
+public:
+ base64_binary \201const base64_binary&\202;
+
+ base64_binary&
+ operator= \201const base64_binary&\202;
+
+ virtual base64_binary*
+ _clone \201\202 const;
+
+public:
+ std::basic_string<C>
+ encode \201\202 const;
+};)RP(
+
+ ) 25 62 PR(class hex_binary: public simple_type, public buffer
+{
+public:
+ hex_binary \201size_t size = 0\202;
+ hex_binary \201size_t size, size_t capacity\202;
+ hex_binary \201const void* data, size_t size\202;
+ hex_binary \201const void* data, size_t size, size_t capacity\202;
+ hex_binary \201void* data,
+ size_t size,
+ size_t capacity,
+ bool assume_ownership\202;
+
+public:
+ hex_binary \201const hex_binary&\202;
+
+ hex_binary&
+ operator= \201const hex_binary&\202;
+
+ virtual hex_binary*
+ _clone \201\202 const;
+
+public:
+ std::basic_string<C>
+ encode \201\202 const;
+};)RP(
+
+
+ )0 2 25 H(2.5.7)WB 170 Sn()WB 29 Sn( Time Zone Repre)HY(sen)HY(ta)HY(tion)YH()EA()EH(
+
+ )0 P(The )SM(date)ES(, )SM(date)HY(Time)YH()ES(, )SM(gDay)ES(,
+ )SM(gMonth)ES(, )SM(gMon)HY(th)HY(Day)YH()ES(, )SM(gYear)ES(,
+ )SM(gYear)HY(Month)YH()ES(, and )SM(time)ES( XML Schema built-in
+ types all include an optional time zone compo)HY(nent)YH(. The follow)HY(ing)YH(
+ )SM(xml_schema::time_zone)ES( base class is used to repre)HY(sent)YH(
+ this infor)HY(ma)HY(tion)YH(:)EP(
+
+ ) 30 48 PR(class time_zone
+{
+public:
+ time_zone \201\202;
+ time_zone \201short hours, short minutes\202;
+
+ bool
+ zone_present \201\202 const;
+
+ void
+ zone_reset \201\202;
+
+ short
+ zone_hours \201\202 const;
+
+ void
+ zone_hours \201short\202;
+
+ short
+ zone_minutes \201\202 const;
+
+ void
+ zone_minutes \201short\202;
+};
+
+bool
+operator== \201const time_zone&, const time_zone&\202;
+
+bool
+operator!= \201const time_zone&, const time_zone&\202;)RP(
+
+ )0 P(The )SM(zone_present\201\202)ES( acces)HY(sor)YH( func)HY(tion)YH( returns )SM(true)ES(
+ if the time zone is spec)HY(i)HY(fied)YH(. The )SM(zone_reset\201\202)ES( modi)HY(fier)YH(
+ func)HY(tion)YH( resets the time zone object to the )EM(not spec)HY(i)HY(fied)YH()ES(
+ state. If the time zone offset is nega)HY(tive)YH( then both hours and
+ minutes compo)HY(nents)YH( are repre)HY(sented)YH( as nega)HY(tive)YH( inte)HY(gers)YH(.)EP(
+
+
+ )0 2 26 H(2.5.8)WB 171 Sn()WB 30 Sn( Mapping for )SM(date)ES()EA()EH(
+
+ )0 P(The XML Schema )SM(date)ES( built-in data type is mapped to the
+ )SM(xml_schema::date)ES( C++ class which repre)HY(sents)YH( a year, a day,
+ and a month with an optional time zone. Its inter)HY(face)YH( is presented
+ below. For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 127 1 A(Section 2.5.7, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")127 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 41 60 PR(class date: public simple_type, public time_zone
+{
+public:
+ date \201int year, unsigned short month, unsigned short day\202;
+ date \201int year, unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes\202;
+
+public:
+ date \201const date&\202;
+
+ date&
+ operator= \201const date&\202;
+
+ virtual date*
+ _clone \201\202 const;
+
+public:
+ int
+ year \201\202 const;
+
+ void
+ year \201int\202;
+
+ unsigned short
+ month \201\202 const;
+
+ void
+ month \201unsigned short\202;
+
+ unsigned short
+ day \201\202 const;)WR(
+
+ void
+ day \201unsigned short\202;
+};
+
+bool
+operator== \201const date&, const date&\202;
+
+bool
+operator!= \201const date&, const date&\202;)RP(
+
+ )0 2 27 H(2.5.9)WB 172 Sn()WB 31 Sn( Mapping for )SM(date)HY(Time)YH()ES()EA()EH(
+
+ )0 P(The XML Schema )SM(date)HY(Time)YH()ES( built-in data type is mapped to the
+ )SM(xml_schema::date_time)ES( C++ class which repre)HY(sents)YH( a year, a month,
+ a day, hours, minutes, and seconds with an optional time zone. Its inter)HY(face)YH(
+ is presented below. For more infor)HY(ma)HY(tion)YH( on the base
+ )SM(xml_schema::time_zone)ES( class refer to )0 127 1 A(Section
+ 2.5.7, "Time Zone Repre)HY(sen)HY(ta)HY(tion)YH(")127 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 62 67 PR(class date_time: public simple_type, public time_zone
+{
+public:
+ date_time \201int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds\202;
+
+ date_time \201int year, unsigned short month, unsigned short day,
+ unsigned short hours, unsigned short minutes,
+ double seconds, short zone_hours, short zone_minutes\202;
+public:
+ date_time \201const date_time&\202;
+
+ date_time&
+ operator= \201const date_time&\202;
+
+ virtual date_time*
+ _clone \201\202 const;
+
+public:
+ int
+ year \201\202 const;
+
+ void
+ year \201int\202;
+
+ unsigned short
+ month \201\202 const;
+
+ void
+ month \201unsigned short\202;)WR(
+
+ unsigned short
+ day \201\202 const;
+
+ void
+ day \201unsigned short\202;
+
+ unsigned short
+ hours \201\202 const;
+
+ void
+ hours \201unsigned short\202;
+
+ unsigned short
+ minutes \201\202 const;
+
+ void
+ minutes \201unsigned short\202;
+
+ double
+ seconds \201\202 const;
+
+ void
+ seconds \201double\202;
+};
+
+bool
+operator== \201const date_time&, const date_time&\202;
+
+bool)WR(
+operator!= \201const date_time&, const date_time&\202;)RP(
+
+
+ )0 2 28 H(2.5.10)WB 173 Sn()WB 32 Sn( Mapping for )SM(dura)HY(tion)YH()ES()EA()EH(
+
+ )0 P(The XML Schema )SM(dura)HY(tion)YH()ES( built-in data type is mapped to the
+ )SM(xml_schema::dura)HY(tion)YH()ES( C++ class which repre)HY(sents)YH( a poten)HY(tially)YH(
+ nega)HY(tive)YH( dura)HY(tion)YH( in the form of years, months, days, hours, minutes,
+ and seconds. Its inter)HY(face)YH( is presented below.)EP(
+
+ ) 64 71 PR(class duration: public simple_type
+{
+public:
+ duration \201bool negative,
+ unsigned int years, unsigned int months, unsigned int days,
+ unsigned int hours, unsigned int minutes, double seconds\202;
+public:
+ duration \201const duration&\202;
+
+ duration&
+ operator= \201const duration&\202;
+
+ virtual duration*
+ _clone \201\202 const;
+
+public:
+ bool
+ negative \201\202 const;
+
+ void
+ negative \201bool\202;
+
+ unsigned int
+ years \201\202 const;
+
+ void
+ years \201unsigned int\202;
+
+ unsigned int
+ months \201\202 const;
+)WR(
+ void
+ months \201unsigned int\202;
+
+ unsigned int
+ days \201\202 const;
+
+ void
+ days \201unsigned int\202;
+
+ unsigned int
+ hours \201\202 const;
+
+ void
+ hours \201unsigned int\202;
+
+ unsigned int
+ minutes \201\202 const;
+
+ void
+ minutes \201unsigned int\202;
+
+ double
+ seconds \201\202 const;
+
+ void
+ seconds \201double\202;
+};
+
+bool
+operator== \201const duration&, const duration&\202;)WR(
+
+bool
+operator!= \201const duration&, const duration&\202;)RP(
+
+
+ )0 2 29 H(2.5.11)WB 174 Sn()WB 33 Sn( Mapping for )SM(gDay)ES()EA()EH(
+
+ )0 P(The XML Schema )SM(gDay)ES( built-in data type is mapped to the
+ )SM(xml_schema::gday)ES( C++ class which repre)HY(sents)YH( a day of the
+ month with an optional time zone. Its inter)HY(face)YH( is presented below.
+ For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 127 1 A(Section 2.5.7, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")127 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 29 66 PR(class gday: public simple_type, public time_zone
+{
+public:
+ explicit
+ gday \201unsigned short day\202;
+ gday \201unsigned short day, short zone_hours, short zone_minutes\202;
+
+public:
+ gday \201const gday&\202;
+
+ gday&
+ operator= \201const gday&\202;
+
+ virtual gday*
+ _clone \201\202 const;
+
+public:
+ unsigned short
+ day \201\202 const;
+
+ void
+ day \201unsigned short\202;
+};
+
+bool
+operator== \201const gday&, const gday&\202;
+
+bool
+operator!= \201const gday&, const gday&\202;)RP(
+
+
+ )0 2 30 H(2.5.12)WB 175 Sn()WB 34 Sn( Mapping for )SM(gMonth)ES()EA()EH(
+
+ )0 P(The XML Schema )SM(gMonth)ES( built-in data type is mapped to the
+ )SM(xml_schema::gmonth)ES( C++ class which repre)HY(sents)YH( a month of the
+ year with an optional time zone. Its inter)HY(face)YH( is presented below.
+ For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 127 1 A(Section 2.5.7, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")127 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 30 50 PR(class gmonth: public simple_type, public time_zone
+{
+public:
+ explicit
+ gmonth \201unsigned short month\202;
+ gmonth \201unsigned short month,
+ short zone_hours, short zone_minutes\202;
+
+public:
+ gmonth \201const gmonth&\202;
+
+ gmonth&
+ operator= \201const gmonth&\202;
+
+ virtual gmonth*
+ _clone \201\202 const;
+
+public:
+ unsigned short
+ month \201\202 const;
+
+ void
+ month \201unsigned short\202;
+};
+
+bool
+operator== \201const gmonth&, const gmonth&\202;
+
+bool
+operator!= \201const gmonth&, const gmonth&\202;)RP(
+
+
+ )0 2 31 H(2.5.13)WB 176 Sn()WB 35 Sn( Mapping for )SM(gMon)HY(th)HY(Day)YH()ES()EA()EH(
+
+ )0 P(The XML Schema )SM(gMon)HY(th)HY(Day)YH()ES( built-in data type is mapped to the
+ )SM(xml_schema::gmonth_day)ES( C++ class which repre)HY(sents)YH( a day and
+ a month of the year with an optional time zone. Its inter)HY(face)YH( is presented
+ below. For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 127 1 A(Section 2.5.7, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")127 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 35 56 PR(class gmonth_day: public simple_type, public time_zone
+{
+public:
+ gmonth_day \201unsigned short month, unsigned short day\202;
+ gmonth_day \201unsigned short month, unsigned short day,
+ short zone_hours, short zone_minutes\202;
+
+public:
+ gmonth_day \201const gmonth_day&\202;
+
+ gmonth_day&
+ operator= \201const gmonth_day&\202;
+
+ virtual gmonth_day*
+ _clone \201\202 const;
+
+public:
+ unsigned short
+ month \201\202 const;
+
+ void
+ month \201unsigned short\202;
+
+ unsigned short
+ day \201\202 const;
+
+ void
+ day \201unsigned short\202;
+};
+
+bool)WR(
+operator== \201const gmonth_day&, const gmonth_day&\202;
+
+bool
+operator!= \201const gmonth_day&, const gmonth_day&\202;)RP(
+
+
+ )0 2 32 H(2.5.14)WB 177 Sn()WB 36 Sn( Mapping for )SM(gYear)ES()EA()EH(
+
+ )0 P(The XML Schema )SM(gYear)ES( built-in data type is mapped to the
+ )SM(xml_schema::gyear)ES( C++ class which repre)HY(sents)YH( a year with
+ an optional time zone. Its inter)HY(face)YH( is presented below. For more
+ infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES( class refer
+ to )0 127 1 A(Section 2.5.7, "Time Zone Repre)HY(sen)HY(ta)HY(tion)YH(")127 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 29 57 PR(class gyear: public simple_type, public time_zone
+{
+public:
+ explicit
+ gyear \201int year\202;
+ gyear \201int year, short zone_hours, short zone_minutes\202;
+
+public:
+ gyear \201const gyear&\202;
+
+ gyear&
+ operator= \201const gyear&\202;
+
+ virtual gyear*
+ _clone \201\202 const;
+
+public:
+ int
+ year \201\202 const;
+
+ void
+ year \201int\202;
+};
+
+bool
+operator== \201const gyear&, const gyear&\202;
+
+bool
+operator!= \201const gyear&, const gyear&\202;)RP(
+
+
+ )0 2 33 H(2.5.15)WB 178 Sn()WB 37 Sn( Mapping for )SM(gYear)HY(Month)YH()ES()EA()EH(
+
+ )0 P(The XML Schema )SM(gYear)HY(Month)YH()ES( built-in data type is mapped to
+ the )SM(xml_schema::gyear_month)ES( C++ class which repre)HY(sents)YH(
+ a year and a month with an optional time zone. Its inter)HY(face)YH( is presented
+ below. For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
+ class refer to )0 127 1 A(Section 2.5.7, "Time Zone
+ Repre)HY(sen)HY(ta)HY(tion)YH(")127 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 34 55 PR(class gyear_month: public simple_type, public time_zone
+{
+public:
+ gyear_month \201int year, unsigned short month\202;
+ gyear_month \201int year, unsigned short month,
+ short zone_hours, short zone_minutes\202;
+public:
+ gyear_month \201const gyear_month&\202;
+
+ gyear_month&
+ operator= \201const gyear_month&\202;
+
+ virtual gyear_month*
+ _clone \201\202 const;
+
+public:
+ int
+ year \201\202 const;
+
+ void
+ year \201int\202;
+
+ unsigned short
+ month \201\202 const;
+
+ void
+ month \201unsigned short\202;
+};
+
+bool
+operator== \201const gyear_month&, const gyear_month&\202;)WR(
+
+bool
+operator!= \201const gyear_month&, const gyear_month&\202;)RP(
+
+
+ )0 2 34 H(2.5.16)WB 179 Sn()WB 38 Sn( Mapping for )SM(time)ES()EA()EH(
+
+ )0 P(The XML Schema )SM(time)ES( built-in data type is mapped to
+ the )SM(xml_schema::time)ES( C++ class which repre)HY(sents)YH( hours,
+ minutes, and seconds with an optional time zone. Its inter)HY(face)YH( is
+ presented below. For more infor)HY(ma)HY(tion)YH( on the base
+ )SM(xml_schema::time_zone)ES( class refer to
+ )0 127 1 A(Section 2.5.7, "Time Zone Repre)HY(sen)HY(ta)HY(tion)YH(")127 0 TN TL()Ec /AF f D(.)EP(
+
+ ) 41 70 PR(class time: public simple_type, public time_zone
+{
+public:
+ time \201unsigned short hours, unsigned short minutes, double seconds\202;
+ time \201unsigned short hours, unsigned short minutes, double seconds,
+ short zone_hours, short zone_minutes\202;
+
+public:
+ time \201const time&\202;
+
+ time&
+ operator= \201const time&\202;
+
+ virtual time*
+ _clone \201\202 const;
+
+public:
+ unsigned short
+ hours \201\202 const;
+
+ void
+ hours \201unsigned short\202;
+
+ unsigned short
+ minutes \201\202 const;
+
+ void
+ minutes \201unsigned short\202;
+
+ double
+ seconds \201\202 const;)WR(
+
+ void
+ seconds \201double\202;
+};
+
+bool
+operator== \201const time&, const time&\202;
+
+bool
+operator!= \201const time&, const time&\202;)RP(
+
+
+
+
+ )0 2 35 H(2.6)WB 180 Sn()WB 39 Sn( Mapping for Simple Types)EA()EH(
+
+ )0 P(An XML Schema simple type is mapped to a C++ class with the same
+ name as the simple type. The class defines a public copy construc)HY(tor)YH(,
+ a public copy assign)HY(ment)YH( oper)HY(a)HY(tor)YH(, and a public virtual
+ )SM(_clone)ES( func)HY(tion)YH(. The )SM(_clone)ES( func)HY(tion)YH( is
+ declared )SM(const)ES(, does not take any argu)HY(ments)YH(, and returns
+ a pointer to a complete copy of the instance allo)HY(cated)YH( in the free
+ store. The )SM(_clone)ES( func)HY(tion)YH( shall be used to make copies
+ when static type and dynamic type of the instance may differ \201see
+ )0 128 1 A(Section 2.11, "Mapping for )SM(xsi:type)ES(
+ and Substi)HY(tu)HY(tion)YH( Groups")128 0 TN TL()Ec /AF f D(\202. For instance:)EP(
+
+ ) 3 26 PR(<simpleType name="object">
+ ...
+</simpleType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 16 28 PR(class object: ...
+{
+public:
+ object \201const object&\202;
+
+public:
+ object&
+ operator= \201const object&\202;
+
+public:
+ virtual object*
+ _clone \201\202 const;
+
+ ...
+
+};)RP(
+
+ )0 P(The base class spec)HY(i)HY(fi)HY(ca)HY(tion)YH( and the rest of the class defi)HY(ni)HY(tion)YH(
+ depend on the type of deriva)HY(tion)YH( used to define the simple type. )EP(
+
+
+ )0 3 36 H(2.6.1)WB 181 Sn()WB 40 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()EA()EH(
+
+ )0 P(XML Schema deriva)HY(tion)YH( by restric)HY(tion)YH( is mapped to C++ public
+ inher)HY(i)HY(tance)YH(. The base type of the restric)HY(tion)YH( becomes the base
+ type for the result)HY(ing)YH( C++ class. In addi)HY(tion)YH( to the members described
+ in )0 103 1 A(Section 2.6, "Mapping for Simple Types")103 0 TN TL()Ec /AF f D(, the
+ result)HY(ing)YH( C++ class defines a public construc)HY(tor)YH( with the base type
+ as its single argu)HY(ment)YH(. For instance:)EP(
+
+ ) 5 27 PR(<simpleType name="object">
+ <restriction base="base">
+ ...
+ </restriction>
+</simpleType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 14 28 PR(class object: public base
+{
+public:
+ object \201const base&\202;
+ object \201const object&\202;
+
+public:
+ object&
+ operator= \201const object&\202;
+
+public:
+ virtual object*
+ _clone \201\202 const;
+};)RP(
+
+
+ )0 3 37 H(2.6.2)WB 182 Sn()WB 41 Sn( Mapping for Enumer)HY(a)HY(tions)YH()EA()EH(
+
+)0 P(XML Schema restric)HY(tion)YH( by enumer)HY(a)HY(tion)YH( is mapped to a C++ class
+ with seman)HY(tics)YH( similar to C++ )SM(enum)ES(. Each XML Schema
+ enumer)HY(a)HY(tion)YH( element is mapped to a C++ enumer)HY(a)HY(tor)YH( with the
+ name derived from the )SM(value)ES( attribute and defined
+ in the class scope. In addi)HY(tion)YH( to the members
+ described in )0 103 1 A(Section 2.6, "Mapping for Simple Types")103 0 TN TL()Ec /AF f D(,
+ the result)HY(ing)YH( C++ class defines a public construc)HY(tor)YH( that can be called
+ with one of the enumer)HY(a)HY(tors)YH( as its single argu)HY(ment)YH(, a public construc)HY(tor)YH(
+ that can be called with enumer)HY(a)HY(tion)YH('s base value as its single
+ argu)HY(ment)YH(, a public assign)HY(ment)YH( oper)HY(a)HY(tor)YH( that can be used to assign the
+ value of one of the enumer)HY(a)HY(tors)YH(, and a public implicit conver)HY(sion)YH(
+ oper)HY(a)HY(tor)YH( to the under)HY(ly)HY(ing)YH( C++ enum type.)EP(
+
+)0 P(Further)HY(more)YH(, for string-based enumer)HY(a)HY(tion)YH( types, the result)HY(ing)YH( C++
+ class defines a public construc)HY(tor)YH( with a single argu)HY(ment)YH( of type
+ )SM(const C*)ES( and a public construc)HY(tor)YH( with a single
+ argu)HY(ment)YH( of type )SM(const std::basic_string<C>&)ES(.
+ For instance:)EP(
+
+ ) 7 32 PR(<simpleType name="color">
+ <restriction base="string">
+ <enumeration value="red"/>
+ <enumeration value="green"/>
+ <enumeration value="blue"/>
+ </restriction>
+</simpleType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 31 38 PR(class color: public xml_schema::string
+{
+public:
+ enum value
+ {
+ red,
+ green,
+ blue
+ };
+
+public:
+ color \201value\202;
+ color \201const C*\202;
+ color \201const std::basic_string<C>&\202;
+ color \201const xml_schema::string&\202;
+ color \201const color&\202;
+
+public:
+ color&
+ operator= \201value\202;
+
+ color&
+ operator= \201const color&\202;
+
+public:
+ virtual color*
+ _clone \201\202 const;
+
+public:
+ operator value \201\202 const;
+};)WR()RP(
+
+ )0 3 38 H(2.6.3)WB 183 Sn()WB 42 Sn( Mapping for Deriva)HY(tion)YH( by List)EA()EH(
+
+ )0 P(XML Schema deriva)HY(tion)YH( by list is mapped to C++ public
+ inher)HY(i)HY(tance)YH( from )SM(xml_schema::simple_type)ES(
+ \201)0 110 1 A(Section 2.5.3, "Mapping for
+ )SM(anySim)HY(ple)HY(Type)YH()ES(")110 0 TN TL()Ec /AF f D(\202 and a suit)HY(able)YH( sequence type.
+ The list item type becomes the element type of the sequence.
+ In addi)HY(tion)YH( to the members described in )0 103 1 A(Section 2.6,
+ "Mapping for Simple Types")103 0 TN TL()Ec /AF f D(, the result)HY(ing)YH( C++ class defines
+ a public default construc)HY(tor)YH(, a public construc)HY(tor)YH(
+ with the first argu)HY(ment)YH( of type )SM(size_type)ES( and
+ the second argu)HY(ment)YH( of list item type that creates
+ a list object with the spec)HY(i)HY(fied)YH( number of copies of the spec)HY(i)HY(fied)YH(
+ element value, and a public construc)HY(tor)YH( with the two argu)HY(ments)YH(
+ of an input iter)HY(a)HY(tor)YH( type that creates a list object from an
+ iter)HY(a)HY(tor)YH( range. For instance:
+ )EP(
+
+ ) 3 28 PR(<simpleType name="int_list">
+ <list itemType="int"/>
+</simpleType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 19 42 PR(class int_list: public simple_type,
+ public sequence<int>
+{
+public:
+ int_list \201\202;
+ int_list \201size_type n, int x\202;
+
+ template <typename I>
+ int_list \201const I& begin, const I& end\202;
+ int_list \201const int_list&\202;
+
+public:
+ int_list&
+ operator= \201const int_list&\202;
+
+public:
+ virtual int_list*
+ _clone \201\202 const;
+};)RP(
+
+ )0 P(The )SM(sequence)ES( class template is defined in an
+ imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH(. It conforms to the
+ sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
+ C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202.
+ Prac)HY(ti)HY(cally)YH(, this means that you can treat such a sequence
+ as if it was )SM(std::vector)ES(. One notable exten)HY(sion)YH(
+ to the stan)HY(dard)YH( inter)HY(face)YH( that is avail)HY(able)YH( only for
+ sequences of non-funda)HY(men)HY(tal)YH( C++ types is the addi)HY(tion)YH( of
+ the over)HY(loaded)YH( )SM(push_back)ES( and )SM(insert)ES(
+ member func)HY(tions)YH( which instead of the constant refer)HY(ence)YH(
+ to the element type accept auto)HY(matic)YH( pointer \201)SM(std::unique_ptr)ES(
+ or )SM(std::auto_ptr)ES(, depend)HY(ing)YH( on the C++ stan)HY(dard)YH(
+ selected\202 to the element type. These func)HY(tions)YH( assume owner)HY(ship)YH(
+ of the pointed to object and reset the passed auto)HY(matic)YH( pointer.
+ )EP(
+
+ )0 3 39 H(2.6.4)WB 184 Sn()WB 43 Sn( Mapping for Deriva)HY(tion)YH( by Union)EA()EH(
+
+ )0 P(XML Schema deriva)HY(tion)YH( by union is mapped to C++ public
+ inher)HY(i)HY(tance)YH( from )SM(xml_schema::simple_type)ES(
+ \201)0 110 1 A(Section 2.5.3, "Mapping for
+ )SM(anySim)HY(ple)HY(Type)YH()ES(")110 0 TN TL()Ec /AF f D(\202 and )SM(std::basic_string<C>)ES(.
+ In addi)HY(tion)YH( to the members described in )0 103 1 A(Section 2.6,
+ "Mapping for Simple Types")103 0 TN TL()Ec /AF f D(, the result)HY(ing)YH( C++ class defines a
+ public construc)HY(tor)YH( with a single argu)HY(ment)YH( of type )SM(const C*)ES(
+ and a public construc)HY(tor)YH( with a single argu)HY(ment)YH( of type
+ )SM(const std::basic_string<C>&)ES(. For instance:
+ )EP(
+
+ ) 3 47 PR(<simpleType name="int_string_union">
+ <xsd:union memberTypes="xsd:int xsd:string"/>
+</simpleType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 16 51 PR(class int_string_union: public simple_type,
+ public std::basic_string<C>
+{
+public:
+ int_string_union \201const C*\202;
+ int_string_union \201const std::basic_string<C>&\202;
+ int_string_union \201const int_string_union&\202;
+
+public:
+ int_string_union&
+ operator= \201const int_string_union&\202;
+
+public:
+ virtual int_string_union*
+ _clone \201\202 const;
+};)RP(
+
+ )0 2 40 H(2.7)WB 185 Sn()WB 44 Sn( Mapping for Complex Types)EA()EH(
+
+ )0 P(An XML Schema complex type is mapped to a C++ class with the same
+ name as the complex type. The class defines a public copy construc)HY(tor)YH(,
+ a public copy assign)HY(ment)YH( oper)HY(a)HY(tor)YH(, and a public virtual
+ )SM(_clone)ES( func)HY(tion)YH(. The )SM(_clone)ES( func)HY(tion)YH( is
+ declared )SM(const)ES(, does not take any argu)HY(ments)YH(, and returns
+ a pointer to a complete copy of the instance allo)HY(cated)YH( in the free
+ store. The )SM(_clone)ES( func)HY(tion)YH( shall be used to make copies
+ when static type and dynamic type of the instance may differ \201see
+ )0 128 1 A(Section 2.11, "Mapping for )SM(xsi:type)ES(
+ and Substi)HY(tu)HY(tion)YH( Groups")128 0 TN TL()Ec /AF f D(\202.)EP(
+
+ )0 P(Addi)HY(tion)HY(ally)YH(, the result)HY(ing)YH( C++ class
+ defines two public construc)HY(tors)YH( that take an initial)HY(izer)YH( for each
+ member of the complex type and all its base types that belongs to
+ the One cardi)HY(nal)HY(ity)YH( class \201see )0 129 1 A(Section 2.8, "Mapping
+ for Local Elements and Attributes")129 0 TN TL()Ec /AF f D(\202. In the first construc)HY(tor)YH(,
+ the argu)HY(ments)YH( are passed as constant refer)HY(ences)YH( and the newly created
+ instance is initial)HY(ized)YH( with copies of the passed objects. In the
+ second construc)HY(tor)YH(, argu)HY(ments)YH( that are complex types \201that is,
+ they them)HY(selves)YH( contain elements or attributes\202 are passed as
+ either )SM(std::unique_ptr)ES( \201C++11\202 or )SM(std::auto_ptr)ES(
+ \201C++98\202, depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected. In this case the newly
+ created instance is directly initial)HY(ized)YH( with and assumes owner)HY(ship)YH(
+ of the pointed to objects and the )SM(std::[unique|auto]_ptr)ES(
+ argu)HY(ments)YH( are reset to )SM(0)ES(. For instance:)EP(
+
+ ) 15 66 PR(<complexType name="complex">
+ <sequence>
+ <element name="a" type="int"/>
+ <element name="b" type="string"/>
+ </sequence>
+</complexType>
+
+<complexType name="object">
+ <sequence>
+ <element name="s-one" type="boolean"/>
+ <element name="c-one" type="complex"/>
+ <element name="optional" type="int" minOccurs="0"/>
+ <element name="sequence" type="string" maxOccurs="unbounded"/>
+ </sequence>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 36 68 PR(class complex: public xml_schema::type
+{
+public:
+ object \201const int& a, const xml_schema::string& b\202;
+ object \201const complex&\202;
+
+public:
+ object&
+ operator= \201const complex&\202;
+
+public:
+ virtual complex*
+ _clone \201\202 const;
+
+ ...
+
+};
+
+class object: public xml_schema::type
+{
+public:
+ object \201const bool& s_one, const complex& c_one\202;
+ object \201const bool& s_one, std::[unique|auto]_ptr<complex> c_one\202;
+ object \201const object&\202;
+
+public:
+ object&
+ operator= \201const object&\202;
+
+public:
+ virtual object*)WR(
+ _clone \201\202 const;
+
+ ...
+
+};)RP(
+
+ )0 P(Notice that the gener)HY(ated)YH( )SM(complex)ES( class does not
+ have the second \201)SM(std::[unique|auto]_ptr)ES(\202 version of the
+ construc)HY(tor)YH( since all its required members are of simple types.)EP(
+
+ )0 P(If an XML Schema complex type has an ulti)HY(mate)YH( base which is an XML
+ Schema simple type then the result)HY(ing)YH( C++ class also defines a public
+ construc)HY(tor)YH( that takes an initial)HY(izer)YH( for the base type as well as
+ for each member of the complex type and all its base types that
+ belongs to the One cardi)HY(nal)HY(ity)YH( class. For instance:)EP(
+
+ ) 7 61 PR(<complexType name="object">
+ <simpleContent>
+ <extension base="date">
+ <attribute name="lang" type="language" use="required"/>
+ </extension>
+ </simpleContent>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 11 44 PR(class object: public xml_schema::string
+{
+public:
+ object \201const xml_schema::language& lang\202;
+
+ object \201const xml_schema::date& base,
+ const xml_schema::language& lang\202;
+
+ ...
+
+};)RP(
+
+ )0 P(Further)HY(more)YH(, for string-based XML Schema complex types, the result)HY(ing)YH( C++
+ class also defines two public construc)HY(tors)YH( with the first argu)HY(ments)YH(
+ of type )SM(const C*)ES( and )SM(std::basic_string<C>&)ES(,
+ respec)HY(tively)YH(, followed by argu)HY(ments)YH( for each member of the complex
+ type and all its base types that belongs to the One cardi)HY(nal)HY(ity)YH(
+ class. For enumer)HY(a)HY(tion)YH(-based complex types the result)HY(ing)YH( C++
+ class also defines a public construc)HY(tor)YH( with the first argu)HY(ments)YH(
+ of the under)HY(ly)HY(ing)YH( enum type followed by argu)HY(ments)YH( for each member
+ of the complex type and all its base types that belongs to the One
+ cardi)HY(nal)HY(ity)YH( class. For instance:)EP(
+
+ ) 15 61 PR(<simpleType name="color">
+ <restriction base="string">
+ <enumeration value="red"/>
+ <enumeration value="green"/>
+ <enumeration value="blue"/>
+ </restriction>
+</simpleType>
+
+<complexType name="object">
+ <simpleContent>
+ <extension base="color">
+ <attribute name="lang" type="language" use="required"/>
+ </extension>
+ </simpleContent>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 37 44 PR(class color: public xml_schema::string
+{
+public:
+ enum value
+ {
+ red,
+ green,
+ blue
+ };
+
+public:
+ color \201value\202;
+ color \201const C*\202;
+ color \201const std::basic_string<C>&\202;
+
+ ...
+
+};
+
+class object: color
+{
+public:
+ object \201const color& base,
+ const xml_schema::language& lang\202;
+
+ object \201const color::value& base,
+ const xml_schema::language& lang\202;
+
+ object \201const C* base,
+ const xml_schema::language& lang\202;
+)WR(
+ object \201const std::basic_string<C>& base,
+ const xml_schema::language& lang\202;
+
+ ...
+
+};)RP(
+
+ )0 P(Addi)HY(tional)YH( construc)HY(tors)YH( can be requested with the
+ )SM(--gener)HY(ate)YH(-default-ctor)ES( and
+ )SM(--gener)HY(ate)YH(-from-base-ctor)ES( options. See the
+ )R5 2 A(XSD
+ Compiler Command Line Manual)EA( for details.)EP(
+
+ )0 P(If an XML Schema complex type is not explic)HY(itly)YH( derived from any type,
+ the result)HY(ing)YH( C++ class is derived from )SM(xml_schema::type)ES(.
+ In cases where an XML Schema complex type is defined using deriva)HY(tion)YH(
+ by exten)HY(sion)YH( or restric)HY(tion)YH(, the result)HY(ing)YH( C++ base class spec)HY(i)HY(fi)HY(ca)HY(tion)YH(
+ depends on the type of deriva)HY(tion)YH( and is described in the subse)HY(quent)YH(
+ sections.
+ )EP(
+
+ )0 P(The mapping for elements and attributes that are defined in a complex
+ type is described in )0 129 1 A(Section 2.8, "Mapping for Local
+ Elements and Attributes")129 0 TN TL()Ec /AF f D(.
+ )EP(
+
+ )0 3 41 H(2.7.1)WB 186 Sn()WB 45 Sn( Mapping for Deriva)HY(tion)YH( by Exten)HY(sion)YH()EA()EH(
+
+ )0 P(XML Schema deriva)HY(tion)YH( by exten)HY(sion)YH( is mapped to C++ public
+ inher)HY(i)HY(tance)YH(. The base type of the exten)HY(sion)YH( becomes the base
+ type for the result)HY(ing)YH( C++ class.
+ )EP(
+
+ )0 3 42 H(2.7.2)WB 187 Sn()WB 46 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()EA()EH(
+
+ )0 P(XML Schema deriva)HY(tion)YH( by restric)HY(tion)YH( is mapped to C++ public
+ inher)HY(i)HY(tance)YH(. The base type of the restric)HY(tion)YH( becomes the base
+ type for the result)HY(ing)YH( C++ class. XML Schema elements and
+ attributes defined within restric)HY(tion)YH( do not result in any
+ defi)HY(ni)HY(tions)YH( in the result)HY(ing)YH( C++ class. Instead, corre)HY(spond)HY(ing)YH(
+ \201unre)HY(stricted)YH(\202 defi)HY(ni)HY(tions)YH( are inher)HY(ited)YH( from the base class.
+ In the future versions of this mapping, such elements and
+ attributes may result in redef)HY(i)HY(ni)HY(tions)YH( of acces)HY(sors)YH( and
+ modi)HY(fiers)YH( to reflect their restricted seman)HY(tics)YH(.
+ )EP(
+
+
+
+ )0 2 43 H(2.8)WB 188 Sn()WB 47 Sn( Mapping for Local Elements and Attributes)EA()EH(
+
+ )0 P(XML Schema element and attribute defi)HY(ni)HY(tions)YH( are called local
+ if they appear within a complex type defi)HY(ni)HY(tion)YH(, an element group
+ defi)HY(ni)HY(tion)YH(, or an attribute group defi)HY(ni)HY(tions)YH(.
+ )EP(
+
+ )0 P(Local XML Schema element and attribute defi)HY(ni)HY(tions)YH( have the same
+ C++ mapping. There)HY(fore)YH(, in this section, local elements and
+ attributes are collec)HY(tively)YH( called members.
+ )EP(
+
+ )0 P(While there are many differ)HY(ent)YH( member cardi)HY(nal)HY(ity)YH( combi)HY(na)HY(tions)YH(
+ \201deter)HY(mined)YH( by the )SM(use)ES( attribute for attributes and
+ the )SM(minOc)HY(curs)YH()ES( and )SM(maxOc)HY(curs)YH()ES( attributes
+ for elements\202, the mapping divides all possi)HY(ble)YH( cardi)HY(nal)HY(ity)YH(
+ combi)HY(na)HY(tions)YH( into three cardi)HY(nal)HY(ity)YH( classes:
+ )EP(
+
+ )0 DL( )0 DT()I(one)ES(
+ )DD(attributes: )SM(use == "required")ES(
+ )DD(attributes: )SM(use == "optional")ES( and has default or fixed value
+ )DD(elements: )SM(minOc)HY(curs)YH( == "1")ES( and )SM(maxOc)HY(curs)YH( == "1")ES(
+
+ )0 DT()I(optional)ES(
+ )DD(attributes: )SM(use == "optional")ES( and doesn't have default or fixed value
+ )DD(elements: )SM(minOc)HY(curs)YH( == "0")ES( and )SM(maxOc)HY(curs)YH( == "1")ES(
+
+ )0 DT()I(sequence)ES(
+ )DD(elements: )SM(maxOc)HY(curs)YH( > "1")ES(
+ )LD(
+
+ )0 P(An optional attribute with a default or fixed value acquires this value
+ if the attribute hasn't been spec)HY(i)HY(fied)YH( in an instance docu)HY(ment)YH( \201see
+ )0 130 1 A(Appendix A, "Default and Fixed Values")130 0 TN TL()Ec /AF f D(\202. This
+ mapping places such optional attributes to the One cardi)HY(nal)HY(ity)YH(
+ class.)EP(
+
+ )0 P(A member is mapped to a set of public type defi)HY(ni)HY(tions)YH(
+ \201)SM(typedef)ES(s\202 and a set of public acces)HY(sor)YH( and modi)HY(fier)YH(
+ func)HY(tions)YH(. Type defi)HY(ni)HY(tions)YH( have names derived from the member's
+ name. The acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( have the same name as the
+ member. For example:
+ )EP(
+
+ ) 5 42 PR(<complexType name="object">
+ <sequence>
+ <element name="member" type="string"/>
+ </sequence>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 11 41 PR(class object: public xml_schema::type
+{
+public:
+ typedef xml_schema::string member_type;
+
+ const member_type&
+ member \201\202 const;
+
+ ...
+
+};)RP(
+
+ )0 P(In addi)HY(tion)YH(, if a member has a default or fixed value, a static
+ acces)HY(sor)YH( func)HY(tion)YH( is gener)HY(ated)YH( that returns this value. For
+ example:)EP(
+
+) 3 55 PR(<complexType name="object">
+ <attribute name="data" type="string" default="test"/>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 14 39 PR(class object: public xml_schema::type
+{
+public:
+ typedef xml_schema::string data_type;
+
+ const data_type&
+ data \201\202 const;
+
+ static const data_type&
+ data_default_value \201\202;
+
+ ...
+
+};)RP(
+
+ )0 P(Names and seman)HY(tics)YH( of type defi)HY(ni)HY(tions)YH( for the member as well
+ as signa)HY(tures)YH( of the acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( depend on
+ the member's cardi)HY(nal)HY(ity)YH( class and are described in the follow)HY(ing)YH(
+ sub-sections.
+ )EP(
+
+
+ )0 3 44 H(2.8.1)WB 189 Sn()WB 48 Sn( Mapping for Members with the One Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
+
+ )0 P(For the One cardi)HY(nal)HY(ity)YH( class, the type defi)HY(ni)HY(tions)YH( consist of
+ an alias for the member's type with the name created by append)HY(ing)YH(
+ the )SM(_type)ES( suffix to the member's name.
+ )EP(
+
+ )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
+ The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
+ member and can be used for read-only access. The non-constant
+ version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the member and can
+ be used for read-write access.
+ )EP(
+
+ )0 P(The first modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
+ constant of the member's type. It makes a deep copy of its argu)HY(ment)YH(.
+ Except for member's types that are mapped to funda)HY(men)HY(tal)YH( C++ types,
+ the second modi)HY(fier)YH( func)HY(tion)YH( is provided that expects an argu)HY(ment)YH(
+ of type auto)HY(matic)YH( pointer \201)SM(std::unique_ptr)ES( or
+ )SM(std::auto_ptr)ES(, depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected\202
+ to the member's type. It assumes owner)HY(ship)YH( of the pointed to object
+ and resets the passed auto)HY(matic)YH( pointer. For instance:)EP(
+
+ ) 5 42 PR(<complexType name="object">
+ <sequence>
+ <element name="member" type="string"/>
+ </sequence>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 25 47 PR(class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef xml_schema::string member_type;
+
+ // Accessors.
+ //
+ const member_type&
+ member \201\202 const;
+
+ member_type&
+ member \201\202;
+
+ // Modifiers.
+ //
+ void
+ member \201const member_type&\202;
+
+ void
+ member \201std::[unique|auto]_ptr<member_type>\202;
+ ...
+
+};)RP(
+
+ )0 P(In addi)HY(tion)YH(, if requested by spec)HY(i)HY(fy)HY(ing)YH( the )SM(--gener)HY(ate)YH(-detach)ES(
+ option and only for members of non-funda)HY(men)HY(tal)YH( C++ types, the mapping
+ provides a detach func)HY(tion)YH( that returns an auto)HY(matic)YH( pointer to the
+ member's type, for example:)EP(
+
+ ) 10 37 PR(class object: public xml_schema::type
+{
+public:
+ ...
+
+ std::[unique|auto]_ptr<member_type>
+ detach_member \201\202;
+ ...
+
+};)RP(
+
+ )0 P(This func)HY(tion)YH( detaches the value from the tree leaving the member
+ value unini)HY(tial)HY(ized)YH(. Access)HY(ing)YH( such an unini)HY(tial)HY(ized)YH( value prior to
+ re-initial)HY(iz)HY(ing)YH( it results in unde)HY(fined)YH( behav)HY(ior)YH(.)EP(
+
+ )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
+
+ ) 25 66 PR(void
+f \201object& o\202
+{
+ using xml_schema::string;
+
+ string s \201o.member \201\202\202; // get
+ object::member_type& sr \201o.member \201\202\202; // get
+
+ o.member \201"hello"\202; // set, deep copy
+ o.member \201\202 = "hello"; // set, deep copy
+
+ // C++11 version.
+ //
+ std::unique_ptr<string> p \201new string \201"hello"\202\202;
+ o.member \201std::move \201p\202\202; // set, assumes ownership
+ p = o.detach_member \201\202; // detach, member is uninitialized
+ o.member \201std::move \201p\202\202; // re-attach
+
+ // C++98 version.
+ //
+ std::auto_ptr<string> p \201new string \201"hello"\202\202;
+ o.member \201p\202; // set, assumes ownership
+ p = o.detach_member \201\202; // detach, member is uninitialized
+ o.member \201p\202; // re-attach
+})RP(
+
+
+)0 3 45 H(2.8.2)WB 190 Sn()WB 49 Sn( Mapping for Members with the Optional Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
+
+ )0 P(For the Optional cardi)HY(nal)HY(ity)YH( class, the type defi)HY(ni)HY(tions)YH( consist of
+ an alias for the member's type with the name created by append)HY(ing)YH(
+ the )SM(_type)ES( suffix to the member's name and an alias for
+ the container type with the name created by append)HY(ing)YH( the
+ )SM(_optional)ES( suffix to the member's name.
+ )EP(
+
+ )0 P(Unlike acces)HY(sor)YH( func)HY(tions)YH( for the One cardi)HY(nal)HY(ity)YH( class, acces)HY(sor)YH(
+ func)HY(tions)YH( for the Optional cardi)HY(nal)HY(ity)YH( class return refer)HY(ences)YH( to
+ corre)HY(spond)HY(ing)YH( contain)HY(ers)YH( rather than directly to members. The
+ acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
+ The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to
+ the container and can be used for read-only access. The non-constant
+ version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container
+ and can be used for read-write access.
+ )EP(
+
+ )0 P(The modi)HY(fier)YH( func)HY(tions)YH( are over)HY(loaded)YH( for the member's
+ type and the container type. The first modi)HY(fier)YH( func)HY(tion)YH(
+ expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to constant of the
+ member's type. It makes a deep copy of its argu)HY(ment)YH(.
+ Except for member's types that are mapped to funda)HY(men)HY(tal)YH( C++ types,
+ the second modi)HY(fier)YH( func)HY(tion)YH( is provided that expects an argu)HY(ment)YH(
+ of type auto)HY(matic)YH( pointer \201)SM(std::unique_ptr)ES( or
+ )SM(std::auto_ptr)ES(, depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected\202
+ to the member's type. It assumes owner)HY(ship)YH( of the pointed to object
+ and resets the passed auto)HY(matic)YH( pointer. The last modi)HY(fier)YH( func)HY(tion)YH(
+ expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to constant of the container
+ type. It makes a deep copy of its argu)HY(ment)YH(. For instance:
+ )EP(
+
+ ) 5 56 PR(<complexType name="object">
+ <sequence>
+ <element name="member" type="string" minOccurs="0"/>
+ </sequence>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 30 48 PR(class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef xml_schema::string member_type;
+ typedef optional<member_type> member_optional;
+
+ // Accessors.
+ //
+ const member_optional&
+ member \201\202 const;
+
+ member_optional&
+ member \201\202;
+
+ // Modifiers.
+ //
+ void
+ member \201const member_type&\202;
+
+ void
+ member \201std::[unique|auto]_ptr<member_type>\202;
+
+ void
+ member \201const member_optional&\202;
+
+ ...
+
+};)RP(
+
+
+ )0 P(The )SM(optional)ES( class template is defined in an
+ imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH( and has the follow)HY(ing)YH(
+ inter)HY(face)YH(. The )SM([unique|auto]_ptr)ES(-based construc)HY(tor)YH(
+ and modi)HY(fier)YH( func)HY(tion)YH( are only avail)HY(able)YH( if the template
+ argu)HY(ment)YH( is not a funda)HY(men)HY(tal)YH( C++ type.
+ )EP(
+
+ ) 97 52 PR(template <typename X>
+class optional
+{
+public:
+ optional \201\202;
+
+ // Makes a deep copy.
+ //
+ explicit
+ optional \201const X&\202;
+
+ // Assumes ownership.
+ //
+ explicit
+ optional \201std::[unique|auto]_ptr<X>\202;
+
+ optional \201const optional&\202;
+
+public:
+ optional&
+ operator= \201const X&\202;
+
+ optional&
+ operator= \201const optional&\202;
+
+ // Pointer-like interface.
+ //
+public:
+ const X*
+ operator-> \201\202 const;
+)WR(
+ X*
+ operator-> \201\202;
+
+ const X&
+ operator* \201\202 const;
+
+ X&
+ operator* \201\202;
+
+ typedef void \201optional::*bool_convertible\202 \201\202;
+ operator bool_convertible \201\202 const;
+
+ // Get/set interface.
+ //
+public:
+ bool
+ present \201\202 const;
+
+ const X&
+ get \201\202 const;
+
+ X&
+ get \201\202;
+
+ // Makes a deep copy.
+ //
+ void
+ set \201const X&\202;
+
+ // Assumes ownership.)WR(
+ //
+ void
+ set \201std::[unique|auto]_ptr<X>\202;
+
+ // Detach and return the contained value.
+ //
+ std::[unique|auto]_ptr<X>
+ detach \201\202;
+
+ void
+ reset \201\202;
+};
+
+template <typename X>
+bool
+operator== \201const optional<X>&, const optional<X>&\202;
+
+template <typename X>
+bool
+operator!= \201const optional<X>&, const optional<X>&\202;
+
+template <typename X>
+bool
+operator< \201const optional<X>&, const optional<X>&\202;
+
+template <typename X>
+bool
+operator> \201const optional<X>&, const optional<X>&\202;
+
+template <typename X>)WR(
+bool
+operator<= \201const optional<X>&, const optional<X>&\202;
+
+template <typename X>
+bool
+operator>= \201const optional<X>&, const optional<X>&\202;)RP(
+
+
+ )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
+
+ ) 45 62 PR(void
+f \201object& o\202
+{
+ using xml_schema::string;
+
+ if \201o.member \201\202.present \201\202\202 // test
+ {
+ string& s \201o.member \201\202.get \201\202\202; // get
+ o.member \201"hello"\202; // set, deep copy
+ o.member \201\202.set \201"hello"\202; // set, deep copy
+ o.member \201\202.reset \201\202; // reset
+ }
+
+ // Same as above but using pointer notation:
+ //
+ if \201o.member \201\202\202 // test
+ {
+ string& s \201*o.member \201\202\202; // get
+ o.member \201"hello"\202; // set, deep copy
+ *o.member \201\202 = "hello"; // set, deep copy
+ o.member \201\202.reset \201\202; // reset
+ }
+
+ // C++11 version.
+ //
+ std::unique_ptr<string> p \201new string \201"hello"\202\202;
+ o.member \201std::move \201p\202\202; // set, assumes ownership
+
+ p.reset \201new string \201"hello"\202\202;
+ o.member \201\202.set \201std::move \201p\202\202; // set, assumes ownership
+)WR(
+ p = o.member \201\202.detach \201\202; // detach, member is reset
+ o.member \201\202.set \201std::move \201p\202\202; // re-attach
+
+ // C++98 version.
+ //
+ std::auto_ptr<string> p \201new string \201"hello"\202\202;
+ o.member \201p\202; // set, assumes ownership
+
+ p = new string \201"hello"\202;
+ o.member \201\202.set \201p\202; // set, assumes ownership
+
+ p = o.member \201\202.detach \201\202; // detach, member is reset
+ o.member \201\202.set \201p\202; // re-attach
+})RP(
+
+
+ )0 3 46 H(2.8.3)WB 191 Sn()WB 50 Sn( Mapping for Members with the Sequence Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
+
+ )0 P(For the Sequence cardi)HY(nal)HY(ity)YH( class, the type defi)HY(ni)HY(tions)YH( consist of an
+ alias for the member's type with the name created by append)HY(ing)YH(
+ the )SM(_type)ES( suffix to the member's name, an alias of
+ the container type with the name created by append)HY(ing)YH( the
+ )SM(_sequence)ES( suffix to the member's name, an alias of
+ the iter)HY(a)HY(tor)YH( type with the name created by append)HY(ing)YH( the
+ )SM(_iter)HY(a)HY(tor)YH()ES( suffix to the member's name, and an alias
+ of the constant iter)HY(a)HY(tor)YH( type with the name created by append)HY(ing)YH( the
+ )SM(_const_iter)HY(a)HY(tor)YH()ES( suffix to the member's name.
+ )EP(
+
+ )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
+ The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
+ container and can be used for read-only access. The non-constant
+ version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container and can
+ be used for read-write access.
+ )EP(
+
+ )0 P(The modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
+ constant of the container type. The modi)HY(fier)YH( func)HY(tion)YH(
+ makes a deep copy of its argu)HY(ment)YH(. For instance:
+ )EP(
+
+
+ ) 5 64 PR(<complexType name="object">
+ <sequence>
+ <element name="member" type="string" minOccurs="unbounded"/>
+ </sequence>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 26 64 PR(class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef xml_schema::string member_type;
+ typedef sequence<member_type> member_sequence;
+ typedef member_sequence::iterator member_iterator;
+ typedef member_sequence::const_iterator member_const_iterator;
+
+ // Accessors.
+ //
+ const member_sequence&
+ member \201\202 const;
+
+ member_sequence&
+ member \201\202;
+
+ // Modifier.
+ //
+ void
+ member \201const member_sequence&\202;
+
+ ...
+
+};)RP(
+
+ )0 P(The )SM(sequence)ES( class template is defined in an
+ imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH(. It conforms to the
+ sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
+ C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202.
+ Prac)HY(ti)HY(cally)YH(, this means that you can treat such a sequence
+ as if it was )SM(std::vector)ES(. Two notable exten)HY(sions)YH(
+ to the stan)HY(dard)YH( inter)HY(face)YH( that are avail)HY(able)YH( only for
+ sequences of non-funda)HY(men)HY(tal)YH( C++ types are the addi)HY(tion)YH( of
+ the over)HY(loaded)YH( )SM(push_back)ES( and )SM(insert)ES(
+ as well as the )SM(detach_back)ES( and )SM(detach)ES(
+ member func)HY(tions)YH(. The addi)HY(tional)YH( )SM(push_back)ES( and
+ )SM(insert)ES( func)HY(tions)YH( accept an auto)HY(matic)YH( pointer
+ \201)SM(std::unique_ptr)ES( or )SM(std::auto_ptr)ES(,
+ depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected\202 to the
+ element type instead of the constant refer)HY(ence)YH(. They assume
+ owner)HY(ship)YH( of the pointed to object and reset the passed
+ auto)HY(matic)YH( pointer. The )SM(detach_back)ES( and
+ )SM(detach)ES( func)HY(tions)YH( detach the element
+ value from the sequence container and, by default, remove
+ the element from the sequence. These addi)HY(tional)YH( func)HY(tions)YH(
+ have the follow)HY(ing)YH( signa)HY(tures)YH(:)EP(
+
+ ) 22 55 PR(template <typename X>
+class sequence
+{
+public:
+ ...
+
+ void
+ push_back \201std::[unique|auto]_ptr<X>\202
+
+ iterator
+ insert \201iterator position, std::[unique|auto]_ptr<X>\202
+
+ std::[unique|auto]_ptr<X>
+ detach_back \201bool pop = true\202;
+
+ iterator
+ detach \201iterator position,
+ std::[unique|auto]_ptr<X>& result,
+ bool erase = true\202
+
+ ...
+})RP(
+
+ )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
+
+ ) 39 66 PR(void
+f \201object& o\202
+{
+ using xml_schema::string;
+
+ object::member_sequence& s \201o.member \201\202\202;
+
+ // Iteration.
+ //
+ for \201object::member_iterator i \201s.begin \201\202\202; i != s.end \201\202; ++i\202
+ {
+ string& value \201*i\202;
+ }
+
+ // Modification.
+ //
+ s.push_back \201"hello"\202; // deep copy
+
+ // C++11 version.
+ //
+ std::unique_ptr<string> p \201new string \201"hello"\202\202;
+ s.push_back \201std::move \201p\202\202; // assumes ownership
+ p = s.detach_back \201\202; // detach and pop
+ s.push_back \201std::move \201p\202\202; // re-append
+
+ // C++98 version.
+ //
+ std::auto_ptr<string> p \201new string \201"hello"\202\202;
+ s.push_back \201p\202; // assumes ownership
+ p = s.detach_back \201\202; // detach and pop
+ s.push_back \201p\202; // re-append)WR(
+
+ // Setting a new container.
+ //
+ object::member_sequence n;
+ n.push_back \201"one"\202;
+ n.push_back \201"two"\202;
+ o.member \201n\202; // deep copy
+})RP(
+
+ )0 3 47 H(2.8.4)WB 192 Sn()WB 51 Sn( Element Order)EA()EH(
+
+ )0 P(C++/Tree is a "flat)HY(ten)HY(ing)YH(" mapping in a sense that many levels of
+ nested compos)HY(i)HY(tors)YH( \201)SM(choice)ES( and )SM(sequence)ES(\202,
+ all poten)HY(tially)YH( with their own cardi)HY(nal)HY(i)HY(ties)YH(, are in the end mapped
+ to a flat set of elements with one of the three cardi)HY(nal)HY(ity)YH( classes
+ discussed in the previ)HY(ous)YH( sections. While this results in a simple
+ and easy to use API for most types, in certain cases, the order of
+ elements in the actual XML docu)HY(ments)YH( is not preserved once parsed
+ into the object model. And some)HY(times)YH( such order has
+ appli)HY(ca)HY(tion)YH(-specific signif)HY(i)HY(cance)YH(. As an example, consider a schema
+ that defines a batch of bank trans)HY(ac)HY(tions)YH(:)EP(
+
+ ) 20 48 PR(<complexType name="withdraw">
+ <sequence>
+ <element name="account" type="unsignedInt"/>
+ <element name="amount" type="unsignedInt"/>
+ </sequence>
+</complexType>
+
+<complexType name="deposit">
+ <sequence>
+ <element name="account" type="unsignedInt"/>
+ <element name="amount" type="unsignedInt"/>
+ </sequence>
+</complexType>
+
+<complexType name="batch">
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element name="withdraw" type="withdraw"/>
+ <element name="deposit" type="deposit"/>
+ </choice>
+</complexType>)RP(
+
+ )0 P(The batch can contain any number of trans)HY(ac)HY(tions)YH( in any order
+ but the order of trans)HY(ac)HY(tions)YH( in each actual batch is signif)HY(i)HY(cant)YH(.
+ For instance, consider what could happen if we reorder the
+ trans)HY(ac)HY(tions)YH( and apply all the with)HY(drawals)YH( before deposits.)EP(
+
+ )0 P(For the )SM(batch)ES( schema type defined above the default
+ C++/Tree mapping will produce a C++ class that contains a pair of
+ sequence contain)HY(ers)YH(, one for each of the two elements. While this
+ will capture the content \201trans)HY(ac)HY(tions)YH(\202, the order of this content
+ as it appears in XML will be lost. Also, if we try to seri)HY(al)HY(ize)YH( the
+ batch we just loaded back to XML, all the with)HY(drawal)YH( trans)HY(ac)HY(tions)YH(
+ will appear before deposits.)EP(
+
+ )0 P(To over)HY(come)YH( this limi)HY(ta)HY(tion)YH( of a flat)HY(ten)HY(ing)YH( mapping, C++/Tree
+ allows us to mark certain XML Schema types, for which content
+ order is impor)HY(tant)YH(, as ordered.)EP(
+
+ )0 P(There are several command line options that control which
+ schema types are treated as ordered. To make an indi)HY(vid)HY(ual)YH(
+ type ordered, we use the )SM(--ordered-type)ES( option,
+ for example:)EP(
+
+ ) 1 20 PR(--ordered-type batch)RP(
+
+ )0 P(To auto)HY(mat)HY(i)HY(cally)YH( treat all the types that are derived from an ordered
+ type also ordered, we use the )SM(--ordered-type-derived)ES(
+ option. This is primar)HY(ily)YH( useful if you would like to iterate
+ over the complete hier)HY(ar)HY(chy)YH('s content using the content order
+ sequence \201discussed below\202.)EP(
+
+ )0 P(Ordered types are also useful for handling mixed content. To
+ auto)HY(mat)HY(i)HY(cally)YH( mark all the types with mixed content as ordered
+ we use the )SM(--ordered-type-mixed)ES( option. For more
+ infor)HY(ma)HY(tion)YH( on handling mixed content see )0 131 1 A(Section
+ 2.13, "Mapping for Mixed Content Models")131 0 TN TL()Ec /AF f D(.)EP(
+
+ )0 P(Finally, we can mark all the types in the schema we are
+ compil)HY(ing)YH( with the )SM(--ordered-type-all)ES( option.
+ You should only resort to this option if all the types in
+ your schema truly suffer from the loss of content
+ order since, as we will discuss shortly, ordered types
+ require extra effort to access and, espe)HY(cially)YH(, modify.
+ See the
+ )R5 2 A(XSD
+ Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH( on
+ these options.)EP(
+
+ )0 P(Once a type is marked ordered, C++/Tree alters its mapping
+ in several ways. Firstly, for each local element, element
+ wild)HY(card)YH( \201)0 132 1 A(Section 2.12.4, "Element Wild)HY(card)YH(
+ Order")132 0 TN TL()Ec /AF f D(\202, and mixed content text \201)0 131 1 A(Section
+ 2.13, "Mapping for Mixed Content Models")131 0 TN TL()Ec /AF f D(\202 in this type, a
+ content id constant is gener)HY(ated)YH(. Secondly, an addi)HY(tion)YH( sequence
+ is added to the class that captures the content order. Here
+ is how the mapping of our )SM(batch)ES( class changes
+ once we make it ordered:)EP(
+
+ ) 57 78 PR(class batch: public xml_schema::type
+{
+public:
+ // withdraw
+ //
+ typedef withdraw withdraw_type;
+ typedef sequence<withdraw_type> withdraw_sequence;
+ typedef withdraw_sequence::iterator withdraw_iterator;
+ typedef withdraw_sequence::const_iterator withdraw_const_iterator;
+
+ static const std::size_t withdraw_id = 1;
+
+ const withdraw_sequence&
+ withdraw \201\202 const;
+
+ withdraw_sequence&
+ withdraw \201\202;
+
+ void
+ withdraw \201const withdraw_sequence&\202;
+
+ // deposit
+ //
+ typedef deposit deposit_type;
+ typedef sequence<deposit_type> deposit_sequence;
+ typedef deposit_sequence::iterator deposit_iterator;
+ typedef deposit_sequence::const_iterator deposit_const_iterator;
+
+ static const std::size_t deposit_id = 2;
+
+ const deposit_sequence&)WR(
+ deposit \201\202 const;
+
+ deposit_sequence&
+ deposit \201\202;
+
+ void
+ deposit \201const deposit_sequence&\202;
+
+ // content_order
+ //
+ typedef xml_schema::content_order content_order_type;
+ typedef std::vector<content_order_type> content_order_sequence;
+ typedef content_order_sequence::iterator content_order_iterator;
+ typedef content_order_sequence::const_iterator content_order_const_iterator;
+
+ const content_order_sequence&
+ content_order \201\202 const;
+
+ content_order_sequence&
+ content_order \201\202;
+
+ void
+ content_order \201const content_order_sequence&\202;
+
+ ...
+};)RP(
+
+ )0 P(Notice the )SM(with)HY(draw)YH(_id)ES( and )SM(deposit_id)ES(
+ content ids as well as the extra )SM(content_order)ES(
+ sequence that does not corre)HY(spond)YH( to any element in the
+ schema defi)HY(ni)HY(tion)YH(. The other changes to the mapping for ordered
+ types has to do with XML parsing and seri)HY(al)HY(iza)HY(tion)YH( code. During
+ parsing the content order is captured in the )SM(content_order)ES(
+ sequence while during seri)HY(al)HY(iza)HY(tion)YH( this sequence is used to
+ deter)HY(mine)YH( the order in which content is seri)HY(al)HY(ized)YH(. The
+ )SM(content_order)ES( sequence is also copied during
+ copy construc)HY(tion)YH( and assigned during copy assign)HY(ment)YH(. It is also
+ taken into account during compar)HY(i)HY(son)YH(.)EP(
+
+ )0 P(The entry type of the )SM(content_order)ES( sequence is the
+ )SM(xml_schema::content_order)ES( type that has the follow)HY(ing)YH(
+ inter)HY(face)YH(:)EP(
+
+ ) 19 58 PR(namespace xml_schema
+{
+ struct content_order
+ {
+ content_order \201std::size_t id, std::size_t index = 0\202;
+
+ std::size_t id;
+ std::size_t index;
+ };
+
+ bool
+ operator== \201const content_order&, const content_order&\202;
+
+ bool
+ operator!= \201const content_order&, const content_order&\202;
+
+ bool
+ operator< \201const content_order&, const content_order&\202;
+})RP(
+
+ )0 P(The )SM(content_order)ES( sequence describes the order of
+ content \201elements, includ)HY(ing)YH( wild)HY(cards)YH(, as well as mixed content
+ text\202. Each entry in this sequence consists of the content id
+ \201for example, )SM(with)HY(draw)YH(_id)ES( or )SM(deposit_id)ES(
+ in our case\202 as well as, for elements of the sequence cardi)HY(nal)HY(ity)YH(
+ class, an index into the corre)HY(spond)HY(ing)YH( sequence container \201the
+ index is unused for the one and optional cardi)HY(nal)HY(ity)YH( classes\202.
+ For example, in our case, if the content id is )SM(with)HY(draw)YH(_id)ES(,
+ then the index will point into the )SM(with)HY(draw)YH()ES( element
+ sequence.)EP(
+
+ )0 P(With all this infor)HY(ma)HY(tion)YH( we can now examine how to iterate over
+ trans)HY(ac)HY(tion)YH( in the batch in content order:)EP(
+
+ ) 26 73 PR(batch& b = ...
+
+for \201batch::content_order_const_iterator i \201b.content_order \201\202.begin \201\202\202;
+ i != b.content_order \201\202.end \201\202;
+ ++i\202
+{
+ switch \201i->id\202
+ {
+ case batch::withdraw_id:
+ {
+ const withdraw& t \201b.withdraw \201\202[i->index]\202;
+ cerr << t.account \201\202 << " withdraw " << t.amount \201\202 << endl;
+ break;
+ }
+ case batch::deposit_id:
+ {
+ const deposit& t \201b.deposit \201\202[i->index]\202;
+ cerr << t.account \201\202 << " deposit " << t.amount \201\202 << endl;
+ break;
+ }
+ default:
+ {
+ assert \201false\202; // Unknown content id.
+ }
+ }
+})RP(
+
+ )0 P(If we seri)HY(al)HY(ized)YH( our batch back to XML, we would also see that the
+ order of trans)HY(ac)HY(tions)YH( in the output is exactly the same as in the
+ input rather than all the with)HY(drawals)YH( first followed by all the
+ deposits.)EP(
+
+ )0 P(The most complex aspect of working with ordered types is
+ modi)HY(fi)HY(ca)HY(tions)YH(. Now we not only need to change the content,
+ but also remem)HY(ber)YH( to update the order infor)HY(ma)HY(tion)YH( corre)HY(spond)HY(ing)YH(
+ to this change. As a first example, we add a deposit trans)HY(ac)HY(tion)YH(
+ to the batch:)EP(
+
+ ) 8 64 PR(using xml_schema::content_order;
+
+batch::deposit_sequence& d \201b.deposit \201\202\202;
+batch::withdraw_sequence& w \201b.withdraw \201\202\202;
+batch::content_order_sequence& co \201b.content_order \201\202\202;
+
+d.push_back \201deposit \201123456789, 100000\202\202;
+co.push_back \201content_order \201batch::deposit_id, d.size \201\202 - 1\202\202;)RP(
+
+ )0 P(In the above example we first added the content \201deposit
+ trans)HY(ac)HY(tion)YH(\202 and then updated the content order infor)HY(ma)HY(tion)YH(
+ by adding an entry with )SM(deposit_id)ES( content
+ id and the index of the just added deposit trans)HY(ac)HY(tion)YH(.)EP(
+
+ )0 P(Remov)HY(ing)YH( the last trans)HY(ac)HY(tion)YH( can be easy if we know which
+ trans)HY(ac)HY(tion)YH( \201deposit or with)HY(drawal)YH(\202 is last:)EP(
+
+ ) 2 15 PR(d.pop_back \201\202;
+co.pop_back \201\202;)RP(
+
+ )0 P(If, however, we do not know which trans)HY(ac)HY(tion)YH( is last, then
+ things get a bit more compli)HY(cated)YH(:)EP(
+
+ ) 15 24 PR(switch \201co.back \201\202.id\202
+{
+case batch::withdraw_id:
+ {
+ d.pop_back \201\202;
+ break;
+ }
+case batch::deposit_id:
+ {
+ w.pop_back \201\202;
+ break;
+ }
+}
+
+co.pop_back \201\202;)RP(
+
+ )0 P(The follow)HY(ing)YH( example shows how to add a trans)HY(ac)HY(tion)YH( at the
+ begin)HY(ning)YH( of the batch:)EP(
+
+ ) 3 62 PR(w.push_back \201withdraw \201123456789, 100000\202\202;
+co.insert \201co.begin \201\202,
+ content_order \201batch::withdraw_id, w.size \201\202 - 1\202\202;)RP(
+
+ )0 P(Note also that when we merely modify the content of one
+ of the elements in place, we do not need to update its
+ order since it doesn't change. For example, here is how
+ we can change the amount in the first with)HY(drawal)YH(:)EP(
+
+ ) 1 20 PR(w[0].amount \20110000\202;)RP(
+
+ )0 P(For the complete working code shown in this section refer to the
+ )SM(order/element)ES( example in the
+ )SM(cxx/tree/)ES( direc)HY(tory)YH( in the
+ )R6 2 A(xsd-exam)HY(ples)YH()EA(
+ package.)EP(
+
+ )0 P(If both the base and derived types are ordered, then the
+ content order sequence is only added to the base and the content
+ ids are unique within the whole hier)HY(ar)HY(chy)YH(. In this case
+ the content order sequence for the derived type contains
+ order)HY(ing)YH( infor)HY(ma)HY(tion)YH( for both base and derived content.)EP(
+
+ )0 P(In some appli)HY(ca)HY(tions)YH( we may need to perform more complex
+ content process)HY(ing)YH(. For example, in our case, we may need
+ to remove all the with)HY(drawal)YH( trans)HY(ac)HY(tions)YH(. The default
+ container, )SM(std::vector)ES(, is not partic)HY(u)HY(larly)YH(
+ suit)HY(able)YH( for such oper)HY(a)HY(tions)YH(. What may be required by
+ some appli)HY(ca)HY(tions)YH( is a multi-index container that not
+ only allows us to iterate in content order similar to
+ )SM(std::vector)ES( but also search by the content
+ id as well as the content id and index pair.)EP(
+
+ )0 P(While C++/Tree does not provide this func)HY(tion)HY(al)HY(ity)YH( by
+ default, it allows us to specify a custom container
+ type for content order with the )SM(--order-container)ES(
+ command line option. The only require)HY(ment)YH( from the
+ gener)HY(ated)YH( code side for such a container is to provide
+ the )SM(vector)ES(-like )SM(push_back\201\202)ES(,
+ )SM(size\201\202)ES(, and const iter)HY(a)HY(tion)YH( inter)HY(faces)YH(.)EP(
+
+ )0 P(As an example, here is how we can use the Boost Multi-Index
+ container for content order. First we create the
+ )SM(content-order-container.hxx)ES( header with the
+ follow)HY(ing)YH( defi)HY(ni)HY(tion)YH(:)EP(
+
+ ) 32 58 PR(#ifndef CONTENT_ORDER_CONTAINER
+#define CONTENT_ORDER_CONTAINER
+
+#include <cstddef> // std::size_t
+
+#include <boost/multi_index_container.hpp>
+#include <boost/multi_index/member.hpp>
+#include <boost/multi_index/identity.hpp>
+#include <boost/multi_index/ordered_index.hpp>
+#include <boost/multi_index/random_access_index.hpp>
+
+struct by_id {};
+struct by_id_index {};
+
+template <typename T>
+using content_order_container =
+ boost::multi_index::multi_index_container<
+ T,
+ boost::multi_index::indexed_by<
+ boost::multi_index::random_access<>,
+ boost::multi_index::ordered_unique<
+ boost::multi_index::tag<by_id_index>,
+ boost::multi_index::identity<T>
+ >,
+ boost::multi_index::ordered_non_unique<
+ boost::multi_index::tag<by_id>,
+ boost::multi_index::member<T, std::size_t, &T::id>
+ >
+ >
+ >;
+)WR(
+#endif)RP(
+
+ )0 P(Next we add the follow)HY(ing)YH( two XSD compiler options to include
+ this header into every gener)HY(ated)YH( header file and to use the
+ custom container type \201see the XSD compiler command line manual
+ for more infor)HY(ma)HY(tion)YH( on shell quoting for the first option\202:)EP(
+
+ ) 2 55 PR(--hxx-prologue '#include "content-order-container.hxx"'
+--order-container content_order_container)RP(
+
+ )0 P(With these changes we can now use the multi-index func)HY(tion)HY(al)HY(ity)YH(,
+ for example, to search for a specific content id:)EP(
+
+ ) 13 65 PR(typedef batch::content_order_sequence::index<by_id>::type id_set;
+typedef id_set::iterator id_iterator;
+
+const id_set& ids \201b.content_order \201\202.get<by_id> \201\202\202;
+
+std::pair<id_iterator, id_iterator> r \201
+ ids.equal_range \201std::size_t \201batch::deposit_id\202\202;
+
+for \201id_iterator i \201r.first\202; i != r.second; ++i\202
+{
+ const deposit& t \201b.deposit \201\202[i->index]\202;
+ cerr << t.account \201\202 << " deposit " << t.amount \201\202 << endl;
+})RP(
+
+ )0 2 48 H(2.9)WB 193 Sn()WB 52 Sn( Mapping for Global Elements)EA()EH(
+
+ )0 P(An XML Schema element defi)HY(ni)HY(tion)YH( is called global if it appears
+ directly under the )SM(schema)ES( element.
+ A global element is a valid root of an instance docu)HY(ment)YH(. By
+ default, a global element is mapped to a set of over)HY(loaded)YH(
+ parsing and, option)HY(ally)YH(, seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( with the
+ same name as the element. It is also possi)HY(ble)YH( to gener)HY(ate)YH( types
+ for root elements instead of parsing and seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(.
+ This is primar)HY(ily)YH( useful to distin)HY(guish)YH( object models with the
+ same root type but with differ)HY(ent)YH( root elements. See
+ )0 133 1 A(Section 2.9.1, "Element Types")133 0 TN TL()Ec /AF f D( for details.
+ It is also possi)HY(ble)YH( to request the gener)HY(a)HY(tion)YH( of an element map
+ which allows uniform parsing and seri)HY(al)HY(iza)HY(tion)YH( of multi)HY(ple)YH( root
+ elements. See )0 134 1 A(Section 2.9.2, "Element Map")134 0 TN TL()Ec /AF f D(
+ for details.
+ )EP(
+
+ )0 P(The parsing func)HY(tions)YH( read XML instance docu)HY(ments)YH( and return
+ corre)HY(spond)HY(ing)YH( object models as an auto)HY(matic)YH( pointer
+ \201)SM(std::unique_ptr)ES( or )SM(std::auto_ptr)ES(,
+ depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected\202. Their signa)HY(tures)YH(
+ have the follow)HY(ing)YH( pattern \201)SM(type)ES( denotes
+ element's type and )SM(name)ES( denotes element's
+ name\202:
+ )EP(
+
+ ) 2 28 PR(std::[unique|auto]_ptr<type>
+name \201....\202;)RP(
+
+ )0 P(The process of parsing, includ)HY(ing)YH( the exact signa)HY(tures)YH( of the parsing
+ func)HY(tions)YH(, is the subject of )0 98 1 A(Chapter 3, "Parsing")98 0 TN TL()Ec /AF f D(.
+ )EP(
+
+ )0 P(The seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( write object models back to XML instance
+ docu)HY(ments)YH(. Their signa)HY(tures)YH( have the follow)HY(ing)YH( pattern:
+ )EP(
+
+ ) 2 41 PR(void
+name \201<stream type>&, const type&, ....\202;)RP(
+
+ )0 P(The process of seri)HY(al)HY(iza)HY(tion)YH(, includ)HY(ing)YH( the exact signa)HY(tures)YH( of the
+ seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(, is the subject of )0 99 1 A(Chapter 4,
+ "Seri)HY(al)HY(iza)HY(tion)YH(")99 0 TN TL()Ec /AF f D(.
+ )EP(
+
+
+ )0 3 49 H(2.9.1)WB 194 Sn()WB 53 Sn( Element Types)EA()EH(
+
+ )0 P(The gener)HY(a)HY(tion)YH( of element types is requested with the
+ )SM(--gener)HY(ate)YH(-element-type)ES( option. With this option
+ each global element is mapped to a C++ class with the
+ same name as the element. Such a class is derived from
+ )SM(xml_schema::element_type)ES( and contains the same set
+ of type defi)HY(ni)HY(tions)YH(, construc)HY(tors)YH(, and member func)HY(tion)YH( as would a
+ type contain)HY(ing)YH( a single element with the One cardi)HY(nal)HY(ity)YH( class
+ named )SM("value")ES(. In addi)HY(tion)YH(, the element type also
+ contains a set of member func)HY(tions)YH( for access)HY(ing)YH( the element
+ name and names)HY(pace)YH( as well as its value in a uniform manner.
+ For example:)EP(
+
+ ) 7 34 PR(<complexType name="type">
+ <sequence>
+ ...
+ </sequence>
+</complexType>
+
+<element name="root" type="type"/>)RP(
+
+)0 P(is mapped to:)EP(
+
+ ) 62 59 PR(class type
+{
+ ...
+};
+
+class root: public xml_schema::element_type
+{
+public:
+ // Element value.
+ //
+ typedef type value_type;
+
+ const value_type&
+ value \201\202 const;
+
+ value_type&
+ value \201\202;
+
+ void
+ value \201const value_type&\202;
+
+ void
+ value \201std::[unique|auto]_ptr<value_type>\202;
+
+ // Constructors.
+ //
+ root \201const value_type&\202;
+
+ root \201std::[unique|auto]_ptr<value_type>\202;
+
+ root \201const xercesc::DOMElement&, xml_schema::flags = 0\202;)WR(
+
+ root \201const root&, xml_schema::flags = 0\202;
+
+ virtual root*
+ _clone \201xml_schema::flags = 0\202 const;
+
+ // Element name and namespace.
+ //
+ static const std::string&
+ name \201\202;
+
+ static const std::string&
+ namespace_ \201\202;
+
+ virtual const std::string&
+ _name \201\202 const;
+
+ virtual const std::string&
+ _namespace \201\202 const;
+
+ // Element value as xml_schema::type.
+ //
+ virtual const xml_schema::type*
+ _value \201\202 const;
+
+ virtual xml_schema::type*
+ _value \201\202;
+};
+
+void)WR(
+operator<< \201xercesc::DOMElement&, const root&\202;)RP(
+
+ )0 P(The )SM(xml_schema::element_type)ES( class is a common
+ base type for all element types and is defined as follows:)EP(
+
+ ) 24 39 PR(namespace xml_schema
+{
+ class element_type
+ {
+ public:
+ virtual
+ ~element_type \201\202;
+
+ virtual element_type*
+ _clone \201flags f = 0\202 const = 0;
+
+ virtual const std::basic_string<C>&
+ _name \201\202 const = 0;
+
+ virtual const std::basic_string<C>&
+ _namespace \201\202 const = 0;
+
+ virtual xml_schema::type*
+ _value \201\202 = 0;
+
+ virtual const xml_schema::type*
+ _value \201\202 const = 0;
+ };
+})RP(
+
+ )0 P(The )SM(_value\201\202)ES( member func)HY(tion)YH( returns a pointer to
+ the element value or 0 if the element is of a funda)HY(men)HY(tal)YH( C++
+ type and there)HY(fore)YH( is not derived from )SM(xml_schema::type)ES(.
+ )EP(
+
+ )0 P(Unlike parsing and seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(, element types
+ are only capable of parsing and seri)HY(al)HY(iz)HY(ing)YH( from/to a
+ )SM(DOMEle)HY(ment)YH()ES( object. This means that the appli)HY(ca)HY(tion)YH(
+ will need to perform its own XML-to-DOM parsing and DOM-to-XML
+ seri)HY(al)HY(iza)HY(tion)YH(. The follow)HY(ing)YH( section describes a mech)HY(a)HY(nism)YH(
+ provided by the mapping to uniformly parse and seri)HY(al)HY(ize)YH(
+ multi)HY(ple)YH( root elements.)EP(
+
+
+ )0 3 50 H(2.9.2)WB 195 Sn()WB 54 Sn( Element Map)EA()EH(
+
+ )0 P(When element types are gener)HY(ated)YH( for root elements it is also
+ possi)HY(ble)YH( to request the gener)HY(a)HY(tion)YH( of an element map with the
+ )SM(--gener)HY(ate)YH(-element-map)ES( option. The element map
+ allows uniform parsing and seri)HY(al)HY(iza)HY(tion)YH( of multi)HY(ple)YH( root
+ elements via the common )SM(xml_schema::element_type)ES(
+ base type. The )SM(xml_schema::element_map)ES( class is
+ defined as follows:)EP(
+
+ ) 12 59 PR(namespace xml_schema
+{
+ class element_map
+ {
+ public:
+ static std::[unique|auto]_ptr<xml_schema::element_type>
+ parse \201const xercesc::DOMElement&, flags = 0\202;
+
+ static void
+ serialize \201xercesc::DOMElement&, const element_type&\202;
+ };
+})RP(
+
+ )0 P(The )SM(parse\201\202)ES( func)HY(tion)YH( creates the corre)HY(spond)HY(ing)YH(
+ element type object based on the element name and names)HY(pace)YH(
+ and returns it as an auto)HY(matic)YH( pointer \201)SM(std::unique_ptr)ES(
+ or )SM(std::auto_ptr)ES(, depend)HY(ing)YH( on the C++ stan)HY(dard)YH(
+ selected\202 to )SM(xml_schema::element_type)ES(.
+ The )SM(seri)HY(al)HY(ize)YH(\201\202)ES( func)HY(tion)YH( seri)HY(al)HY(izes)YH( the passed element
+ object to )SM(DOMEle)HY(ment)YH()ES(. Note that in case of
+ )SM(seri)HY(al)HY(ize)YH(\201\202)ES(, the )SM(DOMEle)HY(ment)YH()ES( object
+ should have the correct name and names)HY(pace)YH(. If no element type is
+ avail)HY(able)YH( for an element, both func)HY(tions)YH( throw the
+ )SM(xml_schema::no_element_info)ES( excep)HY(tion)YH(:)EP(
+
+ ) 14 66 PR(struct no_element_info: virtual exception
+{
+ no_element_info \201const std::basic_string<C>& element_name,
+ const std::basic_string<C>& element_namespace\202;
+
+ const std::basic_string<C>&
+ element_name \201\202 const;
+
+ const std::basic_string<C>&
+ element_namespace \201\202 const;
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The appli)HY(ca)HY(tion)YH( can discover the actual type of the element
+ object returned by )SM(parse\201\202)ES( either using
+ )SM(dynamic_cast)ES( or by compar)HY(ing)YH( element names and
+ names)HY(paces)YH(. The follow)HY(ing)YH( code frag)HY(ments)YH( illus)HY(trate)YH( how the
+ element map can be used:)EP(
+
+ ) 18 50 PR(// Parsing.
+//
+DOMElement& e = ... // Parse XML to DOM.
+
+unique_ptr<xml_schema::element_type> r \201
+ xml_schema::element_map::parse \201e\202\202;
+
+if \201root1 r1 = dynamic_cast<root1*> \201r.get \201\202\202\202
+{
+ ...
+}
+else if \201r->_name == root2::name \201\202 &&
+ r->_namespace \201\202 == root2::namespace_ \201\202\202
+{
+ root2& r2 \201static_cast<root2&> \201*r\202\202;
+
+ ...
+})RP(
+
+ ) 13 68 PR(// Serialization.
+//
+xml_schema::element_type& r = ...
+
+string name \201r._name \201\202\202;
+string ns \201r._namespace \201\202\202;
+
+DOMDocument& doc = ... // Create a new DOMDocument with name and ns.
+DOMElement& e \201*doc->getDocumentElement \201\202\202;
+
+xml_schema::element_map::serialize \201e, r\202;
+
+// Serialize DOMDocument to XML.)RP(
+
+
+
+ )0 2 51 H(2.10)WB 196 Sn()WB 55 Sn( Mapping for Global Attributes)EA()EH(
+
+ )0 P(An XML Schema attribute defi)HY(ni)HY(tion)YH( is called global if it appears
+ directly under the )SM(schema)ES( element. A global
+ attribute does not have any mapping.
+ )EP(
+
+
+
+ )0 2 52 H(2.11)WB 197 Sn()WB 56 Sn( Mapping for )SM(xsi:type)ES( and Substi)HY(tu)HY(tion)YH(
+ Groups)EA()EH(
+
+ )0 P(The mapping provides optional support for the XML Schema poly)HY(mor)HY(phism)YH(
+ features \201)SM(xsi:type)ES( and substi)HY(tu)HY(tion)YH( groups\202 which can
+ be requested with the )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option.
+ When used, the dynamic type of a member may be differ)HY(ent)YH( from
+ its static type. Consider the follow)HY(ing)YH( schema defi)HY(ni)HY(tion)YH( and
+ instance docu)HY(ment)YH(:
+ )EP(
+
+ ) 28 62 PR(<!-- test.xsd -->
+<schema>
+ <complexType name="base">
+ <attribute name="text" type="string"/>
+ </complexType>
+
+ <complexType name="derived">
+ <complexContent>
+ <extension base="base">
+ <attribute name="extra-text" type="string"/>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="root_type">
+ <sequence>
+ <element name="item" type="base" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+
+ <element name="root" type="root_type"/>
+</schema>
+
+<!-- test.xml -->
+<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <item text="hello"/>
+ <item text="hello" extra-text="world" xsi:type="derived"/>
+</root>)RP(
+
+ )0 P(In the result)HY(ing)YH( object model, the container for
+ the )SM(root::item)ES( member will have two elements:
+ the first element's type will be )SM(base)ES( while
+ the second element's \201dynamic\202 type will be
+ )SM(derived)ES(. This can be discov)HY(ered)YH( using the
+ )SM(dynamic_cast)ES( oper)HY(a)HY(tor)YH( as shown in the follow)HY(ing)YH(
+ example:
+ )EP(
+
+ ) 17 56 PR(void
+f \201root& r\202
+{
+ for \201root::item_const_iterator i \201r.item \201\202.begin \201\202\202;
+ i != r.item \201\202.end \201\202
+ ++i\202
+ {
+ if \201derived* d = dynamic_cast<derived*> \201&\201*i\202\202\202
+ {
+ // derived
+ }
+ else
+ {
+ // base
+ }
+ }
+})RP(
+
+ )0 P(The )SM(_clone)ES( virtual func)HY(tion)YH( should be used instead of
+ copy construc)HY(tors)YH( to make copies of members that might use
+ poly)HY(mor)HY(phism)YH(:
+ )EP(
+
+ ) 10 56 PR(void
+f \201root& r\202
+{
+ for \201root::item_const_iterator i \201r.item \201\202.begin \201\202\202;
+ i != r.item \201\202.end \201\202
+ ++i\202
+ {
+ std::unique_ptr<base> c \201i->_clone \201\202\202;
+ }
+})RP(
+
+ )0 P(The mapping can often auto)HY(mat)HY(i)HY(cally)YH( deter)HY(mine)YH( which types are
+ poly)HY(mor)HY(phic)YH( based on the substi)HY(tu)HY(tion)YH( group decla)HY(ra)HY(tions)YH(. However,
+ if your XML vocab)HY(u)HY(lary)YH( is not using substi)HY(tu)HY(tion)YH( groups or if
+ substi)HY(tu)HY(tion)YH( groups are defined in a sepa)HY(rate)YH( schema, then you will
+ need to use the )SM(--poly)HY(mor)HY(phic)YH(-type)ES( option to specify
+ which types are poly)HY(mor)HY(phic)YH(. When using this option you only need
+ to specify the root of a poly)HY(mor)HY(phic)YH( type hier)HY(ar)HY(chy)YH( and the mapping
+ will assume that all the derived types are also poly)HY(mor)HY(phic)YH(.
+ Also note that you need to specify this option when compil)HY(ing)YH( every
+ schema file that refer)HY(ences)YH( the poly)HY(mor)HY(phic)YH( type. Consider the follow)HY(ing)YH(
+ two schemas as an example:)EP(
+
+ ) 13 55 PR(<!-- base.xsd -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="base">
+ <xs:sequence>
+ <xs:element name="b" type="xs:int"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <!-- substitution group root -->
+ <xs:element name="base" type="base"/>
+
+</xs:schema>)RP(
+
+ ) 18 70 PR(<!-- derived.xsd -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <include schemaLocation="base.xsd"/>
+
+ <xs:complexType name="derived">
+ <xs:complexContent>
+ <xs:extension base="base">
+ <xs:sequence>
+ <xs:element name="d" type="xs:string"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="derived" type="derived" substitutionGroup="base"/>
+
+</xs:schema>)RP(
+
+ )0 P(In this example we need to specify ")SM(--poly)HY(mor)HY(phic)YH(-type base)ES("
+ when compil)HY(ing)YH( both schemas because the substi)HY(tu)HY(tion)YH( group is declared
+ in a schema other than the one defin)HY(ing)YH( type )SM(base)ES(.)EP(
+
+ )0 P(You can also indi)HY(cate)YH( that all types should be treated as poly)HY(mor)HY(phic)YH(
+ with the )SM(--poly)HY(mor)HY(phic)YH(-type-all)ES(. However, this may result
+ in slower gener)HY(ated)YH( code with a greater foot)HY(print)YH(.)EP(
+
+
+
+
+
+ )0 2 53 H(2.12)WB 198 Sn()WB 57 Sn( Mapping for )SM(any)ES( and )SM(anyAt)HY(tribute)YH()ES()EA()EH(
+
+ )0 P(For the XML Schema )SM(any)ES( and )SM(anyAt)HY(tribute)YH()ES(
+ wild)HY(cards)YH( an optional mapping can be requested with the
+ )SM(--gener)HY(ate)YH(-wild)HY(card)YH()ES( option. The mapping repre)HY(sents)YH(
+ the content matched by wild)HY(cards)YH( as DOM frag)HY(ments)YH(. Because the
+ DOM API is used to access such content, the Xerces-C++ runtime
+ should be initial)HY(ized)YH( by the appli)HY(ca)HY(tion)YH( prior to parsing and
+ should remain initial)HY(ized)YH( for the life)HY(time)YH( of objects with
+ the wild)HY(card)YH( content. For more infor)HY(ma)HY(tion)YH( on the Xerces-C++
+ runtime initial)HY(iza)HY(tion)YH( see )0 124 1 A(Section 3.1,
+ "Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime")124 0 TN TL()Ec /AF f D(.
+ )EP(
+
+ )0 P(The mapping for )SM(any)ES( is similar to the mapping for
+ local elements \201see )0 129 1 A(Section 2.8, "Mapping for Local
+ Elements and Attributes")129 0 TN TL()Ec /AF f D(\202 except that the type used in the
+ wild)HY(card)YH( mapping is )SM(xercesc::DOMEle)HY(ment)YH()ES(. As with local
+ elements, the mapping divides all possi)HY(ble)YH( cardi)HY(nal)HY(ity)YH( combi)HY(na)HY(tions)YH(
+ into three cardi)HY(nal)HY(ity)YH( classes: )I(one)ES(, )I(optional)ES(, and
+ )I(sequence)ES(.
+ )EP(
+
+ )0 P(The mapping for )SM(anyAt)HY(tribute)YH()ES( repre)HY(sents)YH( the attributes
+ matched by this wild)HY(card)YH( as a set of )SM(xercesc::DOMAttr)ES(
+ objects with a key being the attribute's name and names)HY(pace)YH(.)EP(
+
+ )0 P(Similar to local elements and attributes, the )SM(any)ES( and
+ )SM(anyAt)HY(tribute)YH()ES( wild)HY(cards)YH( are mapped to a set of public type
+ defi)HY(ni)HY(tions)YH( \201type)HY(defs)YH(\202 and a set of public acces)HY(sor)YH( and modi)HY(fier)YH(
+ func)HY(tions)YH(. Type defi)HY(ni)HY(tions)YH( have names derived from )SM("any")ES(
+ for the )SM(any)ES( wild)HY(card)YH( and )SM("any_attribute")ES(
+ for the )SM(anyAt)HY(tribute)YH()ES( wild)HY(card)YH(. The acces)HY(sor)YH( and modi)HY(fier)YH(
+ func)HY(tions)YH( are named )SM("any")ES( for the )SM(any)ES( wild)HY(card)YH(
+ and )SM("any_attribute")ES( for the )SM(anyAt)HY(tribute)YH()ES(
+ wild)HY(card)YH(. Subse)HY(quent)YH( wild)HY(cards)YH( in the same type have escaped names
+ such as )SM("any1")ES( or )SM("any_attribute1")ES(.
+ )EP(
+
+ )0 P(Because Xerces-C++ DOM nodes always belong to a )SM(DOMDoc)HY(u)HY(ment)YH()ES(,
+ each type with a wild)HY(card)YH( has an asso)HY(ci)HY(ated)YH( )SM(DOMDoc)HY(u)HY(ment)YH()ES(
+ object. The refer)HY(ence)YH( to this object can be obtained using the acces)HY(sor)YH(
+ func)HY(tion)YH( called )SM(dom_docu)HY(ment)YH()ES(. The access to the docu)HY(ment)YH(
+ object from the appli)HY(ca)HY(tion)YH( code may be neces)HY(sary)YH( to create or modify
+ the wild)HY(card)YH( content. For example:
+ )EP(
+
+ ) 6 37 PR(<complexType name="object">
+ <sequence>
+ <any namespace="##other"/>
+ </sequence>
+ <anyAttribute namespace="##other"/>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 37 73 PR(class object: public xml_schema::type
+{
+public:
+ // any
+ //
+ const xercesc::DOMElement&
+ any \201\202 const;
+
+ void
+ any \201const xercesc::DOMElement&\202;
+
+ ...
+
+ // any_attribute
+ //
+ typedef attribute_set any_attribute_set;
+ typedef any_attribute_set::iterator any_attribute_iterator;
+ typedef any_attribute_set::const_iterator any_attribute_const_iterator;
+
+ const any_attribute_set&
+ any_attribute \201\202 const;
+
+ any_attribute_set&
+ any_attribute \201\202;
+
+ ...
+
+ // DOMDocument object for wildcard content.
+ //
+ const xercesc::DOMDocument&
+ dom_document \201\202 const;)WR(
+
+ xercesc::DOMDocument&
+ dom_document \201\202;
+
+ ...
+};)RP(
+
+
+ )0 P(Names and seman)HY(tics)YH( of type defi)HY(ni)HY(tions)YH( for the wild)HY(cards)YH( as well
+ as signa)HY(tures)YH( of the acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( depend on the
+ wild)HY(card)YH( type as well as the cardi)HY(nal)HY(ity)YH( class for the )SM(any)ES(
+ wild)HY(card)YH(. They are described in the follow)HY(ing)YH( sub-sections.
+ )EP(
+
+
+ )0 3 54 H(2.12.1)WB 199 Sn()WB 58 Sn( Mapping for )SM(any)ES( with the One Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
+
+ )0 P(For )SM(any)ES( with the One cardi)HY(nal)HY(ity)YH( class,
+ there are no type defi)HY(ni)HY(tions)YH(. The acces)HY(sor)YH( func)HY(tions)YH( come in
+ constant and non-constant versions. The constant acces)HY(sor)YH( func)HY(tion)YH(
+ returns a constant refer)HY(ence)YH( to )SM(xercesc::DOMEle)HY(ment)YH()ES( and
+ can be used for read-only access. The non-constant version returns
+ an unre)HY(stricted)YH( refer)HY(ence)YH( to )SM(xercesc::DOMEle)HY(ment)YH()ES( and can
+ be used for read-write access.
+ )EP(
+
+ )0 P(The first modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH(
+ to constant )SM(xercesc::DOMEle)HY(ment)YH()ES( and makes a deep copy
+ of its argu)HY(ment)YH(. The second modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of
+ type pointer to )SM(xercesc::DOMEle)HY(ment)YH()ES(. This modi)HY(fier)YH(
+ func)HY(tion)YH( assumes owner)HY(ship)YH( of its argu)HY(ment)YH( and expects the element
+ object to be created using the DOM docu)HY(ment)YH( asso)HY(ci)HY(ated)YH( with this
+ instance. For example:
+ )EP(
+
+ ) 5 30 PR(<complexType name="object">
+ <sequence>
+ <any namespace="##other"/>
+ </sequence>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 22 37 PR(class object: public xml_schema::type
+{
+public:
+ // Accessors.
+ //
+ const xercesc::DOMElement&
+ any \201\202 const;
+
+ xercesc::DOMElement&
+ any \201\202;
+
+ // Modifiers.
+ //
+ void
+ any \201const xercesc::DOMElement&\202;
+
+ void
+ any \201xercesc::DOMElement*\202;
+
+ ...
+
+};)RP(
+
+
+ )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
+
+ ) 10 66 PR(void
+f \201object& o, const xercesc::DOMElement& e\202
+{
+ using namespace xercesc;
+
+ DOMElement& e1 \201o.any \201\202\202; // get
+ o.any \201e\202 // set, deep copy
+ DOMDocument& doc \201o.dom_document \201\202\202;
+ o.any \201doc.createElement \201...\202\202; // set, assumes ownership
+})RP(
+
+ )0 3 55 H(2.12.2)WB 200 Sn()WB 59 Sn( Mapping for )SM(any)ES( with the Optional Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
+
+ )0 P(For )SM(any)ES( with the Optional cardi)HY(nal)HY(ity)YH( class, the type
+ defi)HY(ni)HY(tions)YH( consist of an alias for the container type with name
+ )SM(any_optional)ES( \201or )SM(any1_optional)ES(, etc., for
+ subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202.
+ )EP(
+
+ )0 P(Unlike acces)HY(sor)YH( func)HY(tions)YH( for the One cardi)HY(nal)HY(ity)YH( class, acces)HY(sor)YH(
+ func)HY(tions)YH( for the Optional cardi)HY(nal)HY(ity)YH( class return refer)HY(ences)YH( to
+ corre)HY(spond)HY(ing)YH( contain)HY(ers)YH( rather than directly to )SM(DOMEle)HY(ment)YH()ES(.
+ The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
+ The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to
+ the container and can be used for read-only access. The non-constant
+ version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container
+ and can be used for read-write access.
+ )EP(
+
+ )0 P(The modi)HY(fier)YH( func)HY(tions)YH( are over)HY(loaded)YH( for )SM(xercesc::DOMEle)HY(ment)YH()ES(
+ and the container type. The first modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of
+ type refer)HY(ence)YH( to constant )SM(xercesc::DOMEle)HY(ment)YH()ES( and
+ makes a deep copy of its argu)HY(ment)YH(. The second modi)HY(fier)YH( func)HY(tion)YH(
+ expects an argu)HY(ment)YH( of type pointer to )SM(xercesc::DOMEle)HY(ment)YH()ES(.
+ This modi)HY(fier)YH( func)HY(tion)YH( assumes owner)HY(ship)YH( of its argu)HY(ment)YH( and expects
+ the element object to be created using the DOM docu)HY(ment)YH( asso)HY(ci)HY(ated)YH(
+ with this instance. The third modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH(
+ of type refer)HY(ence)YH( to constant of the container type and makes a
+ deep copy of its argu)HY(ment)YH(. For instance:
+ )EP(
+
+ ) 5 44 PR(<complexType name="object">
+ <sequence>
+ <any namespace="##other" minOccurs="0"/>
+ </sequence>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 29 40 PR(class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef element_optional any_optional;
+
+ // Accessors.
+ //
+ const any_optional&
+ any \201\202 const;
+
+ any_optional&
+ any \201\202;
+
+ // Modifiers.
+ //
+ void
+ any \201const xercesc::DOMElement&\202;
+
+ void
+ any \201xercesc::DOMElement*\202;
+
+ void
+ any \201const any_optional&\202;
+
+ ...
+
+};)RP(
+
+
+ )0 P(The )SM(element_optional)ES( container is a
+ special)HY(iza)HY(tion)YH( of the )SM(optional)ES( class template described
+ in )0 135 1 A(Section 2.8.2, "Mapping for Members with the Optional
+ Cardi)HY(nal)HY(ity)YH( Class")135 0 TN TL()Ec /AF f D(. Its inter)HY(face)YH( is presented below:
+ )EP(
+
+ ) 72 71 PR(class element_optional
+{
+public:
+ explicit
+ element_optional \201xercesc::DOMDocument&\202;
+
+ // Makes a deep copy.
+ //
+ element_optional \201const xercesc::DOMElement&, xercesc::DOMDocument&\202;
+
+ // Assumes ownership.
+ //
+ element_optional \201xercesc::DOMElement*, xercesc::DOMDocument&\202;
+
+ element_optional \201const element_optional&, xercesc::DOMDocument&\202;
+
+public:
+ element_optional&
+ operator= \201const xercesc::DOMElement&\202;
+
+ element_optional&
+ operator= \201const element_optional&\202;
+
+ // Pointer-like interface.
+ //
+public:
+ const xercesc::DOMElement*
+ operator-> \201\202 const;
+
+ xercesc::DOMElement*
+ operator-> \201\202;)WR(
+
+ const xercesc::DOMElement&
+ operator* \201\202 const;
+
+ xercesc::DOMElement&
+ operator* \201\202;
+
+ typedef void \201element_optional::*bool_convertible\202 \201\202;
+ operator bool_convertible \201\202 const;
+
+ // Get/set interface.
+ //
+public:
+ bool
+ present \201\202 const;
+
+ const xercesc::DOMElement&
+ get \201\202 const;
+
+ xercesc::DOMElement&
+ get \201\202;
+
+ // Makes a deep copy.
+ //
+ void
+ set \201const xercesc::DOMElement&\202;
+
+ // Assumes ownership.
+ //
+ void)WR(
+ set \201xercesc::DOMElement*\202;
+
+ void
+ reset \201\202;
+};
+
+bool
+operator== \201const element_optional&, const element_optional&\202;
+
+bool
+operator!= \201const element_optional&, const element_optional&\202;)RP(
+
+
+ )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
+
+ ) 25 69 PR(void
+f \201object& o, const xercesc::DOMElement& e\202
+{
+ using namespace xercesc;
+
+ DOMDocument& doc \201o.dom_document \201\202\202;
+
+ if \201o.any \201\202.present \201\202\202 // test
+ {
+ DOMElement& e1 \201o.any \201\202.get \201\202\202; // get
+ o.any \201\202.set \201e\202; // set, deep copy
+ o.any \201\202.set \201doc.createElement \201...\202\202; // set, assumes ownership
+ o.any \201\202.reset \201\202; // reset
+ }
+
+ // Same as above but using pointer notation:
+ //
+ if \201o.member \201\202\202 // test
+ {
+ DOMElement& e1 \201*o.any \201\202\202; // get
+ o.any \201e\202; // set, deep copy
+ o.any \201doc.createElement \201...\202\202; // set, assumes ownership
+ o.any \201\202.reset \201\202; // reset
+ }
+})RP(
+
+
+
+ )0 3 56 H(2.12.3)WB 201 Sn()WB 60 Sn( Mapping for )SM(any)ES( with the Sequence Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
+
+ )0 P(For )SM(any)ES( with the Sequence cardi)HY(nal)HY(ity)YH( class, the type
+ defi)HY(ni)HY(tions)YH( consist of an alias of the container type with name
+ )SM(any_sequence)ES( \201or )SM(any1_sequence)ES(, etc., for
+ subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202, an alias of the iter)HY(a)HY(tor)YH(
+ type with name )SM(any_iter)HY(a)HY(tor)YH()ES( \201or )SM(any1_iter)HY(a)HY(tor)YH()ES(,
+ etc., for subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202, and an alias
+ of the constant iter)HY(a)HY(tor)YH( type with name )SM(any_const_iter)HY(a)HY(tor)YH()ES(
+ \201or )SM(any1_const_iter)HY(a)HY(tor)YH()ES(, etc., for subse)HY(quent)YH( wild)HY(cards)YH(
+ in the type defi)HY(ni)HY(tion)YH(\202.
+ )EP(
+
+ )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
+ The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
+ container and can be used for read-only access. The non-constant
+ version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container and can
+ be used for read-write access.
+ )EP(
+
+ )0 P(The modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
+ constant of the container type. The modi)HY(fier)YH( func)HY(tion)YH( makes
+ a deep copy of its argu)HY(ment)YH(. For instance:
+ )EP(
+
+
+ ) 5 52 PR(<complexType name="object">
+ <sequence>
+ <any namespace="##other" minOccurs="unbounded"/>
+ </sequence>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 25 58 PR(class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef element_sequence any_sequence;
+ typedef any_sequence::iterator any_iterator;
+ typedef any_sequence::const_iterator any_const_iterator;
+
+ // Accessors.
+ //
+ const any_sequence&
+ any \201\202 const;
+
+ any_sequence&
+ any \201\202;
+
+ // Modifier.
+ //
+ void
+ any \201const any_sequence&\202;
+
+ ...
+
+};)RP(
+
+ )0 P(The )SM(element_sequence)ES( container is a
+ special)HY(iza)HY(tion)YH( of the )SM(sequence)ES( class template described
+ in )0 136 1 A(Section 2.8.3, "Mapping for Members with the
+ Sequence Cardi)HY(nal)HY(ity)YH( Class")136 0 TN TL()Ec /AF f D(. Its inter)HY(face)YH( is similar to
+ the sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
+ C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202 and is
+ presented below:
+ )EP(
+
+ ) 178 70 PR(class element_sequence
+{
+public:
+ typedef xercesc::DOMElement value_type;
+ typedef xercesc::DOMElement* pointer;
+ typedef const xercesc::DOMElement* const_pointer;
+ typedef xercesc::DOMElement& reference;
+ typedef const xercesc::DOMElement& const_reference;
+
+ typedef <implementation-defined> iterator;
+ typedef <implementation-defined> const_iterator;
+ typedef <implementation-defined> reverse_iterator;
+ typedef <implementation-defined> const_reverse_iterator;
+
+ typedef <implementation-defined> size_type;
+ typedef <implementation-defined> difference_type;
+ typedef <implementation-defined> allocator_type;
+
+public:
+ explicit
+ element_sequence \201xercesc::DOMDocument&\202;
+
+ // DOMElement cannot be default-constructed.
+ //
+ // explicit
+ // element_sequence \201size_type n\202;
+
+ element_sequence \201size_type n,
+ const xercesc::DOMElement&,
+ xercesc::DOMDocument&\202;
+)WR(
+ template <typename I>
+ element_sequence \201const I& begin,
+ const I& end,
+ xercesc::DOMDocument&\202;
+
+ element_sequence \201const element_sequence&, xercesc::DOMDocument&\202;
+
+ element_sequence&
+ operator= \201const element_sequence&\202;
+
+public:
+ void
+ assign \201size_type n, const xercesc::DOMElement&\202;
+
+ template <typename I>
+ void
+ assign \201const I& begin, const I& end\202;
+
+public:
+ // This version of resize can only be used to shrink the
+ // sequence because DOMElement cannot be default-constructed.
+ //
+ void
+ resize \201size_type\202;
+
+ void
+ resize \201size_type, const xercesc::DOMElement&\202;
+
+public:
+ size_type)WR(
+ size \201\202 const;
+
+ size_type
+ max_size \201\202 const;
+
+ size_type
+ capacity \201\202 const;
+
+ bool
+ empty \201\202 const;
+
+ void
+ reserve \201size_type\202;
+
+ void
+ clear \201\202;
+
+public:
+ const_iterator
+ begin \201\202 const;
+
+ const_iterator
+ end \201\202 const;
+
+ iterator
+ begin \201\202;
+
+ iterator
+ end \201\202;
+)WR(
+ const_reverse_iterator
+ rbegin \201\202 const;
+
+ const_reverse_iterator
+ rend \201\202 const
+
+ reverse_iterator
+ rbegin \201\202;
+
+ reverse_iterator
+ rend \201\202;
+
+public:
+ xercesc::DOMElement&
+ operator[] \201size_type\202;
+
+ const xercesc::DOMElement&
+ operator[] \201size_type\202 const;
+
+ xercesc::DOMElement&
+ at \201size_type\202;
+
+ const xercesc::DOMElement&
+ at \201size_type\202 const;
+
+ xercesc::DOMElement&
+ front \201\202;
+
+ const xercesc::DOMElement&
+ front \201\202 const;)WR(
+
+ xercesc::DOMElement&
+ back \201\202;
+
+ const xercesc::DOMElement&
+ back \201\202 const;
+
+public:
+ // Makes a deep copy.
+ //
+ void
+ push_back \201const xercesc::DOMElement&\202;
+
+ // Assumes ownership.
+ //
+ void
+ push_back \201xercesc::DOMElement*\202;
+
+ void
+ pop_back \201\202;
+
+ // Makes a deep copy.
+ //
+ iterator
+ insert \201iterator position, const xercesc::DOMElement&\202;
+
+ // Assumes ownership.
+ //
+ iterator
+ insert \201iterator position, xercesc::DOMElement*\202;)WR(
+
+ void
+ insert \201iterator position, size_type n, const xercesc::DOMElement&\202;
+
+ template <typename I>
+ void
+ insert \201iterator position, const I& begin, const I& end\202;
+
+ iterator
+ erase \201iterator position\202;
+
+ iterator
+ erase \201iterator begin, iterator end\202;
+
+public:
+ // Note that the DOMDocument object of the two sequences being
+ // swapped should be the same.
+ //
+ void
+ swap \201sequence& x\202;
+};
+
+inline bool
+operator== \201const element_sequence&, const element_sequence&\202;
+
+inline bool
+operator!= \201const element_sequence&, const element_sequence&\202;)RP(
+
+
+ )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
+
+ ) 20 63 PR(void
+f \201object& o, const xercesc::DOMElement& e\202
+{
+ using namespace xercesc;
+
+ object::any_sequence& s \201o.any \201\202\202;
+
+ // Iteration.
+ //
+ for \201object::any_iterator i \201s.begin \201\202\202; i != s.end \201\202; ++i\202
+ {
+ DOMElement& e \201*i\202;
+ }
+
+ // Modification.
+ //
+ s.push_back \201e\202; // deep copy
+ DOMDocument& doc \201o.dom_document \201\202\202;
+ s.push_back \201doc.createElement \201...\202\202; // assumes ownership
+})RP(
+
+ )0 3 57 H(2.12.4)WB 202 Sn()WB 61 Sn( Element Wild)HY(card)YH( Order)EA()EH(
+
+ )0 P(Similar to elements, element wild)HY(cards)YH( in ordered types
+ \201)0 137 1 A(Section 2.8.4, "Element Order")137 0 TN TL()Ec /AF f D(\202 are assigned
+ content ids and are included in the content order sequence.
+ Contin)HY(u)HY(ing)YH( with the bank trans)HY(ac)HY(tions)YH( example started in Section
+ 2.8.4, we can extend the batch by allow)HY(ing)YH( custom trans)HY(ac)HY(tions)YH(:)EP(
+
+ ) 7 52 PR(<complexType name="batch">
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element name="withdraw" type="withdraw"/>
+ <element name="deposit" type="deposit"/>
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+</complexType>)RP(
+
+ )0 P(This will lead to the follow)HY(ing)YH( changes in the gener)HY(ated)YH(
+ )SM(batch)ES( C++ class:)EP(
+
+ ) 24 58 PR(class batch: public xml_schema::type
+{
+public:
+ ...
+
+ // any
+ //
+ typedef element_sequence any_sequence;
+ typedef any_sequence::iterator any_iterator;
+ typedef any_sequence::const_iterator any_const_iterator;
+
+ static const std::size_t any_id = 3UL;
+
+ const any_sequence&
+ any \201\202 const;
+
+ any_sequence&
+ any \201\202;
+
+ void
+ any \201const any_sequence&\202;
+
+ ...
+};)RP(
+
+ )0 P(With this change we also need to update the iter)HY(a)HY(tion)YH( code to handle
+ the new content id:)EP(
+
+ ) 18 73 PR(for \201batch::content_order_const_iterator i \201b.content_order \201\202.begin \201\202\202;
+ i != b.content_order \201\202.end \201\202;
+ ++i\202
+{
+ switch \201i->id\202
+ {
+ ...
+
+ case batch::any_id:
+ {
+ const DOMElement& e \201b.any \201\202[i->index]\202;
+ ...
+ break;
+ }
+
+ ...
+ }
+})RP(
+
+ )0 P(For the complete working code that shows the use of wild)HY(cards)YH( in
+ ordered types refer to the )SM(order/element)ES( example in
+ the )SM(cxx/tree/)ES( direc)HY(tory)YH( in the
+ )R6 2 A(xsd-exam)HY(ples)YH()EA(
+ package.)EP(
+
+ )0 3 58 H(2.12.5)WB 203 Sn()WB 62 Sn( Mapping for )SM(anyAt)HY(tribute)YH()ES()EA()EH(
+
+ )0 P(For )SM(anyAt)HY(tribute)YH()ES( the type defi)HY(ni)HY(tions)YH( consist of an alias
+ of the container type with name )SM(any_attribute_set)ES(
+ \201or )SM(any1_attribute_set)ES(, etc., for subse)HY(quent)YH( wild)HY(cards)YH(
+ in the type defi)HY(ni)HY(tion)YH(\202, an alias of the iter)HY(a)HY(tor)YH( type with name
+ )SM(any_attribute_iter)HY(a)HY(tor)YH()ES( \201or )SM(any1_attribute_iter)HY(a)HY(tor)YH()ES(,
+ etc., for subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202, and an alias
+ of the constant iter)HY(a)HY(tor)YH( type with name )SM(any_attribute_const_iter)HY(a)HY(tor)YH()ES(
+ \201or )SM(any1_attribute_const_iter)HY(a)HY(tor)YH()ES(, etc., for subse)HY(quent)YH(
+ wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202.
+ )EP(
+
+ )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
+ The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
+ container and can be used for read-only access. The non-constant
+ version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container and can
+ be used for read-write access.
+ )EP(
+
+ )0 P(The modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
+ constant of the container type. The modi)HY(fier)YH( func)HY(tion)YH( makes
+ a deep copy of its argu)HY(ment)YH(. For instance:
+ )EP(
+
+
+ ) 6 37 PR(<complexType name="object">
+ <sequence>
+ ...
+ </sequence>
+ <anyAttribute namespace="##other"/>
+</complexType>)RP(
+
+ )0 P(is mapped to:)EP(
+
+ ) 25 73 PR(class object: public xml_schema::type
+{
+public:
+ // Type definitions.
+ //
+ typedef attribute_set any_attribute_set;
+ typedef any_attribute_set::iterator any_attribute_iterator;
+ typedef any_attribute_set::const_iterator any_attribute_const_iterator;
+
+ // Accessors.
+ //
+ const any_attribute_set&
+ any_attribute \201\202 const;
+
+ any_attribute_set&
+ any_attribute \201\202;
+
+ // Modifier.
+ //
+ void
+ any_attribute \201const any_attribute_set&\202;
+
+ ...
+
+};)RP(
+
+ )0 P(The )SM(attribute_set)ES( class is an asso)HY(cia)HY(tive)YH( container
+ similar to the )SM(std::set)ES( class template as defined by
+ the ISO/ANSI Stan)HY(dard)YH( for C++ \201ISO/IEC 14882:1998, Section 23.3.3,
+ "Class template set"\202 with the key being the attribute's name
+ and names)HY(pace)YH(. Unlike )SM(std::set)ES(, )SM(attribute_set)ES(
+ allows search)HY(ing)YH( using names and names)HY(paces)YH( instead of
+ )SM(xercesc::DOMAttr)ES( objects. It is defined in an
+ imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH( and its inter)HY(face)YH( is presented
+ below:
+ )EP(
+
+ ) 166 70 PR(class attribute_set
+{
+public:
+ typedef xercesc::DOMAttr key_type;
+ typedef xercesc::DOMAttr value_type;
+ typedef xercesc::DOMAttr* pointer;
+ typedef const xercesc::DOMAttr* const_pointer;
+ typedef xercesc::DOMAttr& reference;
+ typedef const xercesc::DOMAttr& const_reference;
+
+ typedef <implementation-defined> iterator;
+ typedef <implementation-defined> const_iterator;
+ typedef <implementation-defined> reverse_iterator;
+ typedef <implementation-defined> const_reverse_iterator;
+
+ typedef <implementation-defined> size_type;
+ typedef <implementation-defined> difference_type;
+ typedef <implementation-defined> allocator_type;
+
+public:
+ attribute_set \201xercesc::DOMDocument&\202;
+
+ template <typename I>
+ attribute_set \201const I& begin, const I& end, xercesc::DOMDocument&\202;
+
+ attribute_set \201const attribute_set&, xercesc::DOMDocument&\202;
+
+ attribute_set&
+ operator= \201const attribute_set&\202;
+
+public:)WR(
+ const_iterator
+ begin \201\202 const;
+
+ const_iterator
+ end \201\202 const;
+
+ iterator
+ begin \201\202;
+
+ iterator
+ end \201\202;
+
+ const_reverse_iterator
+ rbegin \201\202 const;
+
+ const_reverse_iterator
+ rend \201\202 const;
+
+ reverse_iterator
+ rbegin \201\202;
+
+ reverse_iterator
+ rend \201\202;
+
+public:
+ size_type
+ size \201\202 const;
+
+ size_type
+ max_size \201\202 const;)WR(
+
+ bool
+ empty \201\202 const;
+
+ void
+ clear \201\202;
+
+public:
+ // Makes a deep copy.
+ //
+ std::pair<iterator, bool>
+ insert \201const xercesc::DOMAttr&\202;
+
+ // Assumes ownership.
+ //
+ std::pair<iterator, bool>
+ insert \201xercesc::DOMAttr*\202;
+
+ // Makes a deep copy.
+ //
+ iterator
+ insert \201iterator position, const xercesc::DOMAttr&\202;
+
+ // Assumes ownership.
+ //
+ iterator
+ insert \201iterator position, xercesc::DOMAttr*\202;
+
+ template <typename I>
+ void)WR(
+ insert \201const I& begin, const I& end\202;
+
+public:
+ void
+ erase \201iterator position\202;
+
+ size_type
+ erase \201const std::basic_string<C>& name\202;
+
+ size_type
+ erase \201const std::basic_string<C>& namespace_,
+ const std::basic_string<C>& name\202;
+
+ size_type
+ erase \201const XMLCh* name\202;
+
+ size_type
+ erase \201const XMLCh* namespace_, const XMLCh* name\202;
+
+ void
+ erase \201iterator begin, iterator end\202;
+
+public:
+ size_type
+ count \201const std::basic_string<C>& name\202 const;
+
+ size_type
+ count \201const std::basic_string<C>& namespace_,
+ const std::basic_string<C>& name\202 const;
+)WR(
+ size_type
+ count \201const XMLCh* name\202 const;
+
+ size_type
+ count \201const XMLCh* namespace_, const XMLCh* name\202 const;
+
+ iterator
+ find \201const std::basic_string<C>& name\202;
+
+ iterator
+ find \201const std::basic_string<C>& namespace_,
+ const std::basic_string<C>& name\202;
+
+ iterator
+ find \201const XMLCh* name\202;
+
+ iterator
+ find \201const XMLCh* namespace_, const XMLCh* name\202;
+
+ const_iterator
+ find \201const std::basic_string<C>& name\202 const;
+
+ const_iterator
+ find \201const std::basic_string<C>& namespace_,
+ const std::basic_string<C>& name\202 const;
+
+ const_iterator
+ find \201const XMLCh* name\202 const;
+
+ const_iterator)WR(
+ find \201const XMLCh* namespace_, const XMLCh* name\202 const;
+
+public:
+ // Note that the DOMDocument object of the two sets being
+ // swapped should be the same.
+ //
+ void
+ swap \201attribute_set&\202;
+};
+
+bool
+operator== \201const attribute_set&, const attribute_set&\202;
+
+bool
+operator!= \201const attribute_set&, const attribute_set&\202;)RP(
+
+ )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
+
+ ) 25 73 PR(void
+f \201object& o, const xercesc::DOMAttr& a\202
+{
+ using namespace xercesc;
+
+ object::any_attribute_set& s \201o.any_attribute \201\202\202;
+
+ // Iteration.
+ //
+ for \201object::any_attribute_iterator i \201s.begin \201\202\202; i != s.end \201\202; ++i\202
+ {
+ DOMAttr& a \201*i\202;
+ }
+
+ // Modification.
+ //
+ s.insert \201a\202; // deep copy
+ DOMDocument& doc \201o.dom_document \201\202\202;
+ s.insert \201doc.createAttribute \201...\202\202; // assumes ownership
+
+ // Searching.
+ //
+ object::any_attribute_iterator i \201s.find \201"name"\202\202;
+ i = s.find \201"http://www.w3.org/XML/1998/namespace", "lang"\202;
+})RP(
+
+
+
+ )0 2 59 H(2.13)WB 204 Sn()WB 63 Sn( Mapping for Mixed Content Models)EA()EH(
+
+ )0 P(For XML Schema types with mixed content models C++/Tree provides
+ mapping support only if the type is marked as ordered
+ \201)0 137 1 A(Section 2.8.4, "Element Order")137 0 TN TL()Ec /AF f D(\202. Use the
+ )SM(--ordered-type-mixed)ES( XSD compiler option to
+ auto)HY(mat)HY(i)HY(cally)YH( mark all types with mixed content as ordered.)EP(
+
+ )0 P(For an ordered type with mixed content, C++/Tree adds an extra
+ text content sequence that is used to store the text frag)HY(ments)YH(.
+ This text content sequence is also assigned the content id and
+ its entries are included in the content order sequence, just
+ like elements. As a result, it is possi)HY(ble)YH( to capture the order
+ between elements and text frag)HY(ments)YH(.)EP(
+
+ )0 P(As an example, consider the follow)HY(ing)YH( schema that describes text
+ with embed)HY(ded)YH( links:)EP(
+
+ ) 13 73 PR(<complexType name="anchor">
+ <simpleContent>
+ <extension base="string">
+ <attribute name="href" type="anyURI" use="required"/>
+ </extension>
+ </simpleContent>
+</complexType>
+
+<complexType name="text" mixed="true">
+ <sequence>
+ <element name="a" type="anchor" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+</complexType>)RP(
+
+ )0 P(The gener)HY(ated)YH( )SM(text)ES( C++ class will provide the follow)HY(ing)YH(
+ API \201assum)HY(ing)YH( it is marked as ordered\202:)EP(
+
+ ) 57 78 PR(class text: public xml_schema::type
+{
+public:
+ // a
+ //
+ typedef anchor a_type;
+ typedef sequence<a_type> a_sequence;
+ typedef a_sequence::iterator a_iterator;
+ typedef a_sequence::const_iterator a_const_iterator;
+
+ static const std::size_t a_id = 1UL;
+
+ const a_sequence&
+ a \201\202 const;
+
+ a_sequence&
+ a \201\202;
+
+ void
+ a \201const a_sequence&\202;
+
+ // text_content
+ //
+ typedef xml_schema::string text_content_type;
+ typedef sequence<text_content_type> text_content_sequence;
+ typedef text_content_sequence::iterator text_content_iterator;
+ typedef text_content_sequence::const_iterator text_content_const_iterator;
+
+ static const std::size_t text_content_id = 2UL;
+
+ const text_content_sequence&)WR(
+ text_content \201\202 const;
+
+ text_content_sequence&
+ text_content \201\202;
+
+ void
+ text_content \201const text_content_sequence&\202;
+
+ // content_order
+ //
+ typedef xml_schema::content_order content_order_type;
+ typedef std::vector<content_order_type> content_order_sequence;
+ typedef content_order_sequence::iterator content_order_iterator;
+ typedef content_order_sequence::const_iterator content_order_const_iterator;
+
+ const content_order_sequence&
+ content_order \201\202 const;
+
+ content_order_sequence&
+ content_order \201\202;
+
+ void
+ content_order \201const content_order_sequence&\202;
+
+ ...
+};)RP(
+
+ )0 P(Given this inter)HY(face)YH( we can iterate over both link elements
+ and text in content order. The follow)HY(ing)YH( code frag)HY(ment)YH( converts
+ our format to plain text with refer)HY(ences)YH(.)EP(
+
+ ) 26 72 PR(const text& t = ...
+
+for \201text::content_order_const_iterator i \201t.content_order \201\202.begin \201\202\202;
+ i != t.content_order \201\202.end \201\202;
+ ++i\202
+{
+ switch \201i->id\202
+ {
+ case text::a_id:
+ {
+ const anchor& a \201t.a \201\202[i->index]\202;
+ cerr << a << "[" << a.href \201\202 << "]";
+ break;
+ }
+ case text::text_content_id:
+ {
+ const xml_schema::string& s \201t.text_content \201\202[i->index]\202;
+ cerr << s;
+ break;
+ }
+ default:
+ {
+ assert \201false\202; // Unknown content id.
+ }
+ }
+})RP(
+
+ )0 P(For the complete working code that shows the use of mixed content
+ in ordered types refer to the )SM(order/mixed)ES( example in
+ the )SM(cxx/tree/)ES( direc)HY(tory)YH( in the
+ )R6 2 A(xsd-exam)HY(ples)YH()EA(
+ package.)EP(
+
+
+
+
+ )0 1 60 H(3)WB 205 Sn()WB 64 Sn( Parsing)EA()EH(
+
+ )0 P(This chapter covers various aspects of parsing XML instance
+ docu)HY(ments)YH( in order to obtain corre)HY(spond)HY(ing)YH( tree-like object
+ model.
+ )EP(
+
+ )0 P(Each global XML Schema element in the form:)EP(
+
+ ) 1 34 PR(<element name="name" type="type"/>)RP(
+
+ )0 P(is mapped to 14 over)HY(loaded)YH( C++ func)HY(tions)YH( in the form:)EP(
+
+ ) 96 65 PR(// Read from a URI or a local file.
+//
+
+std::[unique|auto]_ptr<type>
+name \201const std::basic_string<C>& uri,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+std::[unique|auto]_ptr<type>
+name \201const std::basic_string<C>& uri,
+ xml_schema::error_handler&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+std::[unique|auto]_ptr<type>
+name \201const std::basic_string<C>& uri,
+ xercesc::DOMErrorHandler&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+
+// Read from std::istream.
+//
+
+std::[unique|auto]_ptr<type>
+name \201std::istream&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+std::[unique|auto]_ptr<type>
+name \201std::istream&,)WR(
+ xml_schema::error_handler&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+std::[unique|auto]_ptr<type>
+name \201std::istream&,
+ xercesc::DOMErrorHandler&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+
+std::[unique|auto]_ptr<type>
+name \201std::istream&,
+ const std::basic_string<C>& id,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+std::[unique|auto]_ptr<type>
+name \201std::istream&,
+ const std::basic_string<C>& id,
+ xml_schema::error_handler&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+std::[unique|auto]_ptr<type>
+name \201std::istream&,
+ const std::basic_string<C>& id,
+ xercesc::DOMErrorHandler&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;)WR(
+
+
+// Read from InputSource.
+//
+
+std::[unique|auto]_ptr<type>
+name \201xercesc::InputSource&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+std::[unique|auto]_ptr<type>
+name \201xercesc::InputSource&,
+ xml_schema::error_handler&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+std::[unique|auto]_ptr<type>
+name \201xercesc::InputSource&,
+ xercesc::DOMErrorHandler&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;
+
+
+// Read from DOM.
+//
+
+std::[unique|auto]_ptr<type>
+name \201const xercesc::DOMDocument&,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;)WR(
+
+std::[unique|auto]_ptr<type>
+name \201xml_schema::dom::[unique|auto]_ptr<xercesc::DOMDocument>,
+ xml_schema::flags = 0,
+ const xml_schema::properties& = xml_schema::properties \201\202\202;)RP(
+
+ )0 P(You can choose between reading an XML instance from a local file,
+ URI, )SM(std::istream)ES(, )SM(xercesc::Input)HY(Source)YH()ES(,
+ or a pre-parsed DOM instance in the form of
+ )SM(xercesc::DOMDoc)HY(u)HY(ment)YH()ES(. All the parsing func)HY(tions)YH(
+ return a dynam)HY(i)HY(cally)YH( allo)HY(cated)YH( object model as either
+ )SM(std::unique_ptr)ES( or )SM(std::auto_ptr)ES(,
+ depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected. Each of these parsing
+ func)HY(tions)YH( is discussed in more detail in the follow)HY(ing)YH( sections.
+ )EP(
+
+ )0 2 61 H(3.1)WB 206 Sn()WB 65 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)EA()EH(
+
+ )0 P(Some parsing func)HY(tions)YH( expect you to initial)HY(ize)YH( the Xerces-C++
+ runtime while others initial)HY(ize)YH( and termi)HY(nate)YH( it as part of their
+ work. The general rule is as follows: if a func)HY(tion)YH( has any argu)HY(ments)YH(
+ or return a value that is an instance of a Xerces-C++ type, then
+ this func)HY(tion)YH( expects you to initial)HY(ize)YH( the Xerces-C++ runtime.
+ Other)HY(wise)YH(, the func)HY(tion)YH( initial)HY(izes)YH( and termi)HY(nates)YH( the runtime for
+ you. Note that it is legal to have nested calls to the Xerces-C++
+ initial)HY(ize)YH( and termi)HY(nate)YH( func)HY(tions)YH( as long as the calls are balanced.
+ )EP(
+
+ )0 P(You can instruct parsing func)HY(tions)YH( that initial)HY(ize)YH( and termi)HY(nate)YH(
+ the runtime not to do so by passing the
+ )SM(xml_schema::flags::dont_initial)HY(ize)YH()ES( flag \201see
+ )0 138 1 A(Section 3.2, "Flags and Prop)HY(er)HY(ties)YH(")138 0 TN TL()Ec /AF f D(\202.
+ )EP(
+
+
+ )0 2 62 H(3.2)WB 207 Sn()WB 66 Sn( Flags and Prop)HY(er)HY(ties)YH()EA()EH(
+
+ )0 P(Parsing flags and prop)HY(er)HY(ties)YH( are the last two argu)HY(ments)YH( of every
+ parsing func)HY(tion)YH(. They allow you to fine-tune the process of
+ instance vali)HY(da)HY(tion)YH( and parsing. Both argu)HY(ments)YH( are optional.
+ )EP(
+
+
+ )0 P(The follow)HY(ing)YH( flags are recog)HY(nized)YH( by the parsing func)HY(tions)YH(:)EP(
+
+ )0 DL( )0 DT()SM(xml_schema::flags::keep_dom)ES(
+ )DD(Keep asso)HY(ci)HY(a)HY(tion)YH( between DOM nodes and the result)HY(ing)YH(
+ object model nodes. For more infor)HY(ma)HY(tion)YH( about DOM asso)HY(ci)HY(a)HY(tion)YH(
+ refer to )0 126 1 A(Section 5.1, "DOM Asso)HY(ci)HY(a)HY(tion)YH(")126 0 TN TL()Ec /AF f D(.
+
+ )0 DT()SM(xml_schema::flags::own_dom)ES(
+ )DD(Assume owner)HY(ship)YH( of the DOM docu)HY(ment)YH( passed. This flag only
+ makes sense together with the )SM(keep_dom)ES( flag in
+ the call to the parsing func)HY(tion)YH( with the
+ )SM(xml_schema::dom::[unique|auto]_ptr<DOMDoc)HY(u)HY(ment)YH(>)ES(
+ argu)HY(ment)YH(.
+
+ )0 DT()SM(xml_schema::flags::dont_vali)HY(date)YH()ES(
+ )DD(Do not vali)HY(date)YH( instance docu)HY(ments)YH( against schemas.
+
+ )0 DT()SM(xml_schema::flags::dont_initial)HY(ize)YH()ES(
+ )DD(Do not initial)HY(ize)YH( the Xerces-C++ runtime.
+ )LD(
+
+ )0 P(You can pass several flags by combin)HY(ing)YH( them using the bit-wise OR
+ oper)HY(a)HY(tor)YH(. For example:)EP(
+
+ ) 4 61 PR(using xml_schema::flags;
+
+std::unique_ptr<type> r \201
+ name \201"test.xml", flags::keep_dom | flags::dont_validate\202\202;)RP(
+
+ )0 P(By default, vali)HY(da)HY(tion)YH( of instance docu)HY(ments)YH( is turned on even
+ though parsers gener)HY(ated)YH( by XSD do not assume instance
+ docu)HY(ments)YH( are valid. They include a number of checks that prevent
+ construc)HY(tion)YH( of incon)HY(sis)HY(tent)YH( object models. This,
+ however, does not mean that an instance docu)HY(ment)YH( that was
+ success)HY(fully)YH( parsed by the XSD-gener)HY(ated)YH( parsers is
+ valid per the corre)HY(spond)HY(ing)YH( schema. If an instance docu)HY(ment)YH( is not
+ "valid enough" for the gener)HY(ated)YH( parsers to construct consis)HY(tent)YH(
+ object model, one of the excep)HY(tions)YH( defined in
+ )SM(xml_schema)ES( names)HY(pace)YH( is thrown \201see
+ )0 105 1 A(Section 3.3, "Error Handling")105 0 TN TL()Ec /AF f D(\202.
+ )EP(
+
+ )0 P(For more infor)HY(ma)HY(tion)YH( on the Xerces-C++ runtime initial)HY(iza)HY(tion)YH(
+ refer to )0 124 1 A(Section 3.1, "Initial)HY(iz)HY(ing)YH( the Xerces-C++
+ Runtime")124 0 TN TL()Ec /AF f D(.
+ )EP(
+
+ )0 P(The )SM(xml_schema::prop)HY(er)HY(ties)YH()ES( class allows you to
+ program)HY(mat)HY(i)HY(cally)YH( specify schema loca)HY(tions)YH( to be used instead
+ of those spec)HY(i)HY(fied)YH( with the )SM(xsi::schemaLo)HY(ca)HY(tion)YH()ES(
+ and )SM(xsi::noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES( attributes
+ in instance docu)HY(ments)YH(. The inter)HY(face)YH( of the )SM(prop)HY(er)HY(ties)YH()ES(
+ class is presented below:
+ )EP(
+
+ ) 9 70 PR(class properties
+{
+public:
+ void
+ schema_location \201const std::basic_string<C>& namespace_,
+ const std::basic_string<C>& location\202;
+ void
+ no_namespace_schema_location \201const std::basic_string<C>& location\202;
+};)RP(
+
+ )0 P(Note that all loca)HY(tions)YH( are rela)HY(tive)YH( to an instance docu)HY(ment)YH( unless
+ they are URIs. For example, if you want to use a local file as your
+ schema, then you will need to pass
+ )SM(file:///abso)HY(lute)YH(/path/to/your/schema)ES( as the loca)HY(tion)YH(
+ argu)HY(ment)YH(.
+ )EP(
+
+ )0 2 63 H(3.3)WB 208 Sn()WB 67 Sn( Error Handling)EA()EH(
+
+ )0 P(As discussed in )0 139 1 A(Section 2.2, "Error Handling")139 0 TN TL()Ec /AF f D(,
+ the mapping uses the C++ excep)HY(tion)YH( handling mech)HY(a)HY(nism)YH( as its primary
+ way of report)HY(ing)YH( error condi)HY(tions)YH(. However, to handle recov)HY(er)HY(able)YH(
+ parsing and vali)HY(da)HY(tion)YH( errors and warn)HY(ings)YH(, a call)HY(back)YH( inter)HY(face)YH( maybe
+ preferred by the appli)HY(ca)HY(tion)YH(.)EP(
+
+ )0 P(To better under)HY(stand)YH( error handling and report)HY(ing)YH( strate)HY(gies)YH( employed
+ by the parsing func)HY(tions)YH(, it is useful to know that the
+ trans)HY(for)HY(ma)HY(tion)YH( of an XML instance docu)HY(ment)YH( to a stat)HY(i)HY(cally)YH(-typed
+ tree happens in two stages. The first stage, performed by Xerces-C++,
+ consists of parsing an XML docu)HY(ment)YH( into a DOM instance. For short,
+ we will call this stage the XML-DOM stage. Vali)HY(da)HY(tion)YH(, if not disabled,
+ happens during this stage. The second stage,
+ performed by the gener)HY(ated)YH( parsers, consist of parsing the DOM
+ instance into the stat)HY(i)HY(cally)YH(-typed tree. We will call this stage
+ the DOM-Tree stage. Addi)HY(tional)YH( checks are performed during this
+ stage in order to prevent construc)HY(tion)YH( of incon)HY(sis)HY(tent)YH( tree which
+ could other)HY(wise)YH( happen when vali)HY(da)HY(tion)YH( is disabled, for example.)EP(
+
+ )0 P(All parsing func)HY(tions)YH( except the one that oper)HY(ates)YH( on a DOM instance
+ come in over)HY(loaded)YH( triples. The first func)HY(tion)YH( in such a triple
+ reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH( excep)HY(tions)YH(. It
+ accu)HY(mu)HY(lates)YH( all the parsing and vali)HY(da)HY(tion)YH( errors of the XML-DOM
+ stage and throws them in a single instance of the
+ )SM(xml_schema::parsing)ES( excep)HY(tion)YH( \201described below\202.
+ The second and the third func)HY(tions)YH( in the triple use call)HY(back)YH(
+ inter)HY(faces)YH( to report parsing and vali)HY(da)HY(tion)YH( errors and warn)HY(ings)YH(.
+ The two call)HY(back)YH( inter)HY(faces)YH( are )SM(xml_schema::error_handler)ES(
+ and )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES(. For more infor)HY(ma)HY(tion)YH(
+ on the )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES( inter)HY(face)YH( refer to
+ the Xerces-C++ docu)HY(men)HY(ta)HY(tion)YH(. The )SM(xml_schema::error_handler)ES(
+ inter)HY(face)YH( is presented below:
+ )EP(
+
+ ) 23 51 PR(class error_handler
+{
+public:
+ struct severity
+ {
+ enum value
+ {
+ warning,
+ error,
+ fatal
+ };
+ };
+
+ virtual bool
+ handle \201const std::basic_string<C>& id,
+ unsigned long line,
+ unsigned long column,
+ severity,
+ const std::basic_string<C>& message\202 = 0;
+
+ virtual
+ ~error_handler \201\202;
+};)RP(
+
+ )0 P(The )SM(id)ES( argu)HY(ment)YH( of the )SM(error_handler::handle)ES(
+ func)HY(tion)YH( iden)HY(ti)HY(fies)YH( the resource being parsed \201e.g., a file name or
+ URI\202.
+ )EP(
+
+ )0 P(By return)HY(ing)YH( )SM(true)ES( from the )SM(handle)ES( func)HY(tion)YH(
+ you instruct the parser to recover and continue parsing. Return)HY(ing)YH(
+ )SM(false)ES( results in termi)HY(na)HY(tion)YH( of the parsing process.
+ An error with the )SM(fatal)ES( sever)HY(ity)YH( level results in
+ termi)HY(na)HY(tion)YH( of the parsing process no matter what is returned from
+ the )SM(handle)ES( func)HY(tion)YH(. It is safe to throw an excep)HY(tion)YH(
+ from the )SM(handle)ES( func)HY(tion)YH(.
+ )EP(
+
+ )0 P(The DOM-Tree stage reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH(
+ excep)HY(tions)YH(. Indi)HY(vid)HY(ual)YH( excep)HY(tions)YH( thrown by the parsing func)HY(tions)YH(
+ are described in the follow)HY(ing)YH( sub-sections.
+ )EP(
+
+
+ )0 3 64 H(3.3.1)WB 209 Sn()WB 68 Sn( )SM(xml_schema::parsing)ES()EA()EH(
+
+ ) 57 56 PR(struct severity
+{
+ enum value
+ {
+ warning,
+ error
+ };
+
+ severity \201value\202;
+ operator value \201\202 const;
+};
+
+struct error
+{
+ error \201severity,
+ const std::basic_string<C>& id,
+ unsigned long line,
+ unsigned long column,
+ const std::basic_string<C>& message\202;
+
+ severity
+ severity \201\202 const;
+
+ const std::basic_string<C>&
+ id \201\202 const;
+
+ unsigned long
+ line \201\202 const;
+
+ unsigned long
+ column \201\202 const;)WR(
+
+ const std::basic_string<C>&
+ message \201\202 const;
+};
+
+std::basic_ostream<C>&
+operator<< \201std::basic_ostream<C>&, const error&\202;
+
+struct diagnostics: std::vector<error>
+{
+};
+
+std::basic_ostream<C>&
+operator<< \201std::basic_ostream<C>&, const diagnostics&\202;
+
+struct parsing: virtual exception
+{
+ parsing \201\202;
+ parsing \201const diagnostics&\202;
+
+ const diagnostics&
+ diagnostics \201\202 const;
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::parsing)ES( excep)HY(tion)YH( is thrown if there
+ were parsing or vali)HY(da)HY(tion)YH( errors reported during the XML-DOM stage.
+ If no call)HY(back)YH( inter)HY(face)YH( was provided to the parsing func)HY(tion)YH(, the
+ excep)HY(tion)YH( contains a list of errors and warn)HY(ings)YH( acces)HY(si)HY(ble)YH( using
+ the )SM(diag)HY(nos)HY(tics)YH()ES( func)HY(tion)YH(. The usual condi)HY(tions)YH( when
+ this excep)HY(tion)YH( is thrown include malformed XML instances and, if
+ vali)HY(da)HY(tion)YH( is turned on, invalid instance docu)HY(ments)YH(.
+ )EP(
+
+ )0 3 65 H(3.3.2)WB 210 Sn()WB 69 Sn( )SM(xml_schema::expected_element)ES()EA()EH(
+
+ ) 16 60 PR(struct expected_element: virtual exception
+{
+ expected_element \201const std::basic_string<C>& name,
+ const std::basic_string<C>& namespace_\202;
+
+
+ const std::basic_string<C>&
+ name \201\202 const;
+
+ const std::basic_string<C>&
+ namespace_ \201\202 const;
+
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::expected_element)ES( excep)HY(tion)YH( is thrown
+ when an expected element is not encoun)HY(tered)YH( by the DOM-Tree stage.
+ The name and names)HY(pace)YH( of the expected element can be obtained using
+ the )SM(name)ES( and )SM(names)HY(pace)YH(_)ES( func)HY(tions)YH( respec)HY(tively)YH(.
+ )EP(
+
+
+ )0 3 66 H(3.3.3)WB 211 Sn()WB 70 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()EA()EH(
+
+ ) 25 72 PR(struct unexpected_element: virtual exception
+{
+ unexpected_element \201const std::basic_string<C>& encountered_name,
+ const std::basic_string<C>& encountered_namespace,
+ const std::basic_string<C>& expected_name,
+ const std::basic_string<C>& expected_namespace\202
+
+
+ const std::basic_string<C>&
+ encountered_name \201\202 const;
+
+ const std::basic_string<C>&
+ encountered_namespace \201\202 const;
+
+
+ const std::basic_string<C>&
+ expected_name \201\202 const;
+
+ const std::basic_string<C>&
+ expected_namespace \201\202 const;
+
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::unex)HY(pected)YH(_element)ES( excep)HY(tion)YH( is thrown
+ when an unex)HY(pected)YH( element is encoun)HY(tered)YH( by the DOM-Tree stage.
+ The name and names)HY(pace)YH( of the encoun)HY(tered)YH( element can be obtained
+ using the )SM(encoun)HY(tered)YH(_name)ES( and
+ )SM(encoun)HY(tered)YH(_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. If an
+ element was expected instead of the encoun)HY(tered)YH( one, its name
+ and names)HY(pace)YH( can be obtained using the )SM(expected_name)ES( and
+ )SM(expected_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. Other)HY(wise)YH(
+ these func)HY(tions)YH( return empty strings.
+ )EP(
+
+ )0 3 67 H(3.3.4)WB 212 Sn()WB 71 Sn( )SM(xml_schema::expected_attribute)ES()EA()EH(
+
+ ) 16 62 PR(struct expected_attribute: virtual exception
+{
+ expected_attribute \201const std::basic_string<C>& name,
+ const std::basic_string<C>& namespace_\202;
+
+
+ const std::basic_string<C>&
+ name \201\202 const;
+
+ const std::basic_string<C>&
+ namespace_ \201\202 const;
+
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::expected_attribute)ES( excep)HY(tion)YH( is thrown
+ when an expected attribute is not encoun)HY(tered)YH( by the DOM-Tree stage.
+ The name and names)HY(pace)YH( of the expected attribute can be obtained using
+ the )SM(name)ES( and )SM(names)HY(pace)YH(_)ES( func)HY(tions)YH( respec)HY(tively)YH(.
+ )EP(
+
+
+ )0 3 68 H(3.3.5)WB 213 Sn()WB 72 Sn( )SM(xml_schema::unex)HY(pected)YH(_enumer)HY(a)HY(tor)YH()ES()EA()EH(
+
+ ) 10 65 PR(struct unexpected_enumerator: virtual exception
+{
+ unexpected_enumerator \201const std::basic_string<C>& enumerator\202;
+
+ const std::basic_string<C>&
+ enumerator \201\202 const;
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::unex)HY(pected)YH(_enumer)HY(a)HY(tor)YH()ES( excep)HY(tion)YH( is thrown
+ when an unex)HY(pected)YH( enumer)HY(a)HY(tor)YH( is encoun)HY(tered)YH( by the DOM-Tree stage.
+ The enumer)HY(a)HY(tor)YH( can be obtained using the )SM(enumer)HY(a)HY(tor)YH()ES(
+ func)HY(tions)YH(.
+ )EP(
+
+ )0 3 69 H(3.3.6)WB 214 Sn()WB 73 Sn( )SM(xml_schema::expected_text_content)ES()EA()EH(
+
+ ) 5 47 PR(struct expected_text_content: virtual exception
+{
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::expected_text_content)ES( excep)HY(tion)YH( is thrown
+ when a content other than text is encoun)HY(tered)YH( and the text content was
+ expected by the DOM-Tree stage.
+ )EP(
+
+ )0 3 70 H(3.3.7)WB 215 Sn()WB 74 Sn( )SM(xml_schema::no_type_info)ES()EA()EH(
+
+ ) 14 60 PR(struct no_type_info: virtual exception
+{
+ no_type_info \201const std::basic_string<C>& type_name,
+ const std::basic_string<C>& type_namespace\202;
+
+ const std::basic_string<C>&
+ type_name \201\202 const;
+
+ const std::basic_string<C>&
+ type_namespace \201\202 const;
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::no_type_info)ES( excep)HY(tion)YH( is thrown
+ when there is no type infor)HY(ma)HY(tion)YH( asso)HY(ci)HY(ated)YH( with a type spec)HY(i)HY(fied)YH(
+ by the )SM(xsi:type)ES( attribute. This excep)HY(tion)YH( is thrown
+ by the DOM-Tree stage. The name and names)HY(pace)YH( of the type in ques)HY(tion)YH(
+ can be obtained using the )SM(type_name)ES( and
+ )SM(type_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. Usually, catch)HY(ing)YH(
+ this excep)HY(tion)YH( means that you haven't linked the code gener)HY(ated)YH(
+ from the schema defin)HY(ing)YH( the type in ques)HY(tion)YH( with your appli)HY(ca)HY(tion)YH(
+ or this schema has been compiled without the
+ )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option.
+ )EP(
+
+
+ )0 3 71 H(3.3.8)WB 216 Sn()WB 75 Sn( )SM(xml_schema::not_derived)ES()EA()EH(
+
+ ) 23 67 PR(struct not_derived: virtual exception
+{
+ not_derived \201const std::basic_string<C>& base_type_name,
+ const std::basic_string<C>& base_type_namespace,
+ const std::basic_string<C>& derived_type_name,
+ const std::basic_string<C>& derived_type_namespace\202;
+
+ const std::basic_string<C>&
+ base_type_name \201\202 const;
+
+ const std::basic_string<C>&
+ base_type_namespace \201\202 const;
+
+
+ const std::basic_string<C>&
+ derived_type_name \201\202 const;
+
+ const std::basic_string<C>&
+ derived_type_namespace \201\202 const;
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::not_derived)ES( excep)HY(tion)YH( is thrown
+ when a type spec)HY(i)HY(fied)YH( by the )SM(xsi:type)ES( attribute is
+ not derived from the expected base type. This excep)HY(tion)YH( is thrown
+ by the DOM-Tree stage. The name and names)HY(pace)YH( of the expected
+ base type can be obtained using the )SM(base_type_name)ES( and
+ )SM(base_type_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. The name
+ and names)HY(pace)YH( of the offend)HY(ing)YH( type can be obtained using the
+ )SM(derived_type_name)ES( and
+ )SM(derived_type_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(.
+ )EP(
+
+ )0 3 72 H(3.3.9)WB 217 Sn()WB 76 Sn( )SM(xml_schema::no_prefix_mapping)ES()EA()EH(
+
+ ) 10 57 PR(struct no_prefix_mapping: virtual exception
+{
+ no_prefix_mapping \201const std::basic_string<C>& prefix\202;
+
+ const std::basic_string<C>&
+ prefix \201\202 const;
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::no_prefix_mapping)ES( excep)HY(tion)YH( is thrown
+ during the DOM-Tree stage if a names)HY(pace)YH( prefix is encoun)HY(tered)YH( for
+ which a prefix-names)HY(pace)YH( mapping hasn't been provided. The names)HY(pace)YH(
+ prefix in ques)HY(tion)YH( can be obtained using the )SM(prefix)ES(
+ func)HY(tion)YH(.
+ )EP(
+
+ )0 2 73 H(3.4)WB 218 Sn()WB 77 Sn( Reading from a Local File or URI)EA()EH(
+
+ )0 P(Using a local file or URI is the simplest way to parse an XML instance.
+ For example:)EP(
+
+ ) 4 70 PR(using std::unique_ptr;
+
+unique_ptr<type> r1 \201name \201"test.xml"\202\202;
+unique_ptr<type> r2 \201name \201"https://www.codesynthesis.com/test.xml"\202\202;)RP(
+
+ )0 P(Or, in the C++98 mode:)EP(
+
+ ) 4 68 PR(using std::auto_ptr;
+
+auto_ptr<type> r1 \201name \201"test.xml"\202\202;
+auto_ptr<type> r2 \201name \201"https://www.codesynthesis.com/test.xml"\202\202;)RP(
+
+ )0 2 74 H(3.5)WB 219 Sn()WB 78 Sn( Reading from )SM(std::istream)ES()EA()EH(
+
+ )0 P(When using an )SM(std::istream)ES( instance, you may also
+ pass an optional resource id. This id is used to iden)HY(tify)YH( the
+ resource \201for example in error messages\202 as well as to resolve
+ rela)HY(tive)YH( paths. For instance:)EP(
+
+ ) 12 48 PR(using std::unique_ptr;
+
+{
+ std::ifstream ifs \201"test.xml"\202;
+ unique_ptr<type> r \201name \201ifs, "test.xml"\202\202;
+}
+
+{
+ std::string str \201"..."\202; // Some XML fragment.
+ std::istringstream iss \201str\202;
+ unique_ptr<type> r \201name \201iss\202\202;
+})RP(
+
+ )0 2 75 H(3.6)WB 220 Sn()WB 79 Sn( Reading from )SM(xercesc::Input)HY(Source)YH()ES()EA()EH(
+
+ )0 P(Reading from a )SM(xercesc::Input)HY(Source)YH()ES( instance
+ is similar to the )SM(std::istream)ES( case except
+ the resource id is main)HY(tained)YH( by the )SM(Input)HY(Source)YH()ES(
+ object. For instance:)EP(
+
+ ) 2 36 PR(xercesc::StdInInputSource is;
+std::unique_ptr<type> r \201name \201is\202\202;)RP(
+
+ )0 2 76 H(3.7)WB 221 Sn()WB 80 Sn( Reading from DOM)EA()EH(
+
+ )0 P(Reading from a )SM(xercesc::DOMDoc)HY(u)HY(ment)YH()ES( instance allows
+ you to setup a custom XML-DOM stage. Things like DOM
+ parser reuse, schema pre-parsing, and schema caching can be achieved
+ with this approach. For more infor)HY(ma)HY(tion)YH( on how to obtain DOM
+ repre)HY(sen)HY(ta)HY(tion)YH( from an XML instance refer to the Xerces-C++
+ docu)HY(men)HY(ta)HY(tion)YH(. In addi)HY(tion)YH(, the
+ )R4 2 A(C++/Tree Mapping
+ FAQ)EA( shows how to parse an XML instance to a Xerces-C++
+ DOM docu)HY(ment)YH( using the XSD runtime util)HY(i)HY(ties)YH(.
+ )EP(
+
+ )0 P(The last parsing func)HY(tion)YH( is useful when you would like to perform
+ your own XML-to-DOM parsing and as)HY(so)HY(ciate)YH( the result)HY(ing)YH( DOM docu)HY(ment)YH(
+ with the object model nodes. The auto)HY(matic)YH( )SM(DOMDoc)HY(u)HY(ment)YH()ES(
+ pointer is reset and the result)HY(ing)YH( object model assumes owner)HY(ship)YH(
+ of the DOM docu)HY(ment)YH( passed. For example:)EP(
+
+ ) 18 72 PR(// C++11 version.
+//
+xml_schema::dom::unique_ptr<xercesc::DOMDocument> doc = ...
+
+std::unique_ptr<type> r \201
+ name \201std::move \201doc\202,
+ xml_schema::flags::keep_dom | xml_schema::flags::own_dom\202\202;
+
+// At this point doc is reset to 0.
+
+// C++98 version.
+//
+xml_schema::dom::auto_ptr<xercesc::DOMDocument> doc = ...
+
+std::auto_ptr<type> r \201
+ name \201doc, xml_schema::flags::keep_dom | xml_schema::flags::own_dom\202\202;
+
+// At this point doc is reset to 0.)RP(
+
+ )0 1 77 H(4)WB 222 Sn()WB 81 Sn( Seri)HY(al)HY(iza)HY(tion)YH()EA()EH(
+
+ )0 P(This chapter covers various aspects of seri)HY(al)HY(iz)HY(ing)YH( a
+ tree-like object model to DOM or XML.
+ In this regard, seri)HY(al)HY(iza)HY(tion)YH( is compli)HY(men)HY(tary)YH( to the reverse
+ process of parsing a DOM or XML instance into an object model
+ which is discussed in )0 98 1 A(Chapter 3,
+ "Parsing")98 0 TN TL()Ec /AF f D(. Note that the gener)HY(a)HY(tion)YH( of the seri)HY(al)HY(iza)HY(tion)YH( code
+ is optional and should be explic)HY(itly)YH( requested with the
+ )SM(--gener)HY(ate)YH(-seri)HY(al)HY(iza)HY(tion)YH()ES( option. See the
+ )R5 2 A(XSD
+ Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH(.
+ )EP(
+
+ )0 P(Each global XML Schema element in the form:
+ )EP(
+
+
+ ) 1 38 PR(<xsd:element name="name" type="type"/>)RP(
+
+ )0 P(is mapped to 8 over)HY(loaded)YH( C++ func)HY(tions)YH( in the form:)EP(
+
+ ) 70 56 PR(// Serialize to std::ostream.
+//
+void
+name \201std::ostream&,
+ const type&,
+ const xml_schema::namespace_fomap& =
+ xml_schema::namespace_infomap \201\202,
+ const std::basic_string<C>& encoding = "UTF-8",
+ xml_schema::flags = 0\202;
+
+void
+name \201std::ostream&,
+ const type&,
+ xml_schema::error_handler&,
+ const xml_schema::namespace_infomap& =
+ xml_schema::namespace_infomap \201\202,
+ const std::basic_string<C>& encoding = "UTF-8",
+ xml_schema::flags = 0\202;
+
+void
+name \201std::ostream&,
+ const type&,
+ xercesc::DOMErrorHandler&,
+ const xml_schema::namespace_infomap& =
+ xml_schema::namespace_infomap \201\202,
+ const std::basic_string<C>& encoding = "UTF-8",
+ xml_schema::flags = 0\202;
+
+
+// Serialize to XMLFormatTarget.
+//)WR(
+void
+name \201xercesc::XMLFormatTarget&,
+ const type&,
+ const xml_schema::namespace_infomap& =
+ xml_schema::namespace_infomap \201\202,
+ const std::basic_string<C>& encoding = "UTF-8",
+ xml_schema::flags = 0\202;
+
+void
+name \201xercesc::XMLFormatTarget&,
+ const type&,
+ xml_schema::error_handler&,
+ const xml_schema::namespace_infomap& =
+ xml_schema::namespace_infomap \201\202,
+ const std::basic_string<C>& encoding = "UTF-8",
+ xml_schema::flags = 0\202;
+
+void
+name \201xercesc::XMLFormatTarget&,
+ const type&,
+ xercesc::DOMErrorHandler&,
+ const xml_schema::namespace_infomap& =
+ xml_schema::namespace_infomap \201\202,
+ const std::basic_string<C>& encoding = "UTF-8",
+ xml_schema::flags = 0\202;
+
+
+// Serialize to DOM.
+//
+xml_schema::dom::[unique|auto]_ptr<xercesc::DOMDocument>)WR(
+name \201const type&,
+ const xml_schema::namespace_infomap&
+ xml_schema::namespace_infomap \201\202,
+ xml_schema::flags = 0\202;
+
+void
+name \201xercesc::DOMDocument&,
+ const type&,
+ xml_schema::flags = 0\202;)RP(
+
+ )0 P(You can choose between writing XML to )SM(std::ostream)ES( or
+ )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES( and creat)HY(ing)YH( a DOM instance
+ in the form of )SM(xercesc::DOMDoc)HY(u)HY(ment)YH()ES(. Seri)HY(al)HY(iza)HY(tion)YH(
+ to )SM(ostream)ES( or )SM(XMLFor)HY(mat)HY(Tar)HY(get)YH()ES( requires a
+ consid)HY(er)HY(ably)YH( less work while seri)HY(al)HY(iza)HY(tion)YH( to DOM provides
+ for greater flex)HY(i)HY(bil)HY(ity)YH(. Each of these seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(
+ is discussed in more detail in the follow)HY(ing)YH( sections.
+ )EP(
+
+
+ )0 2 78 H(4.1)WB 223 Sn()WB 82 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)EA()EH(
+
+ )0 P(Some seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( expect you to initial)HY(ize)YH( the Xerces-C++
+ runtime while others initial)HY(ize)YH( and termi)HY(nate)YH( it as part of their
+ work. The general rule is as follows: if a func)HY(tion)YH( has any argu)HY(ments)YH(
+ or return a value that is an instance of a Xerces-C++ type, then
+ this func)HY(tion)YH( expects you to initial)HY(ize)YH( the Xerces-C++ runtime.
+ Other)HY(wise)YH(, the func)HY(tion)YH( initial)HY(izes)YH( and termi)HY(nates)YH( the runtime for
+ you. Note that it is legal to have nested calls to the Xerces-C++
+ initial)HY(ize)YH( and termi)HY(nate)YH( func)HY(tions)YH( as long as the calls are balanced.
+ )EP(
+
+ )0 P(You can instruct seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( that initial)HY(ize)YH( and termi)HY(nate)YH(
+ the runtime not to do so by passing the
+ )SM(xml_schema::flags::dont_initial)HY(ize)YH()ES( flag \201see
+ )0 140 1 A(Section 4.3, "Flags")140 0 TN TL()Ec /AF f D(\202.
+ )EP(
+
+ )0 2 79 H(4.2)WB 224 Sn()WB 83 Sn( Names)HY(pace)YH( Infomap and Char)HY(ac)HY(ter)YH( Encod)HY(ing)YH()EA()EH(
+
+ )0 P(When a docu)HY(ment)YH( being seri)HY(al)HY(ized)YH( uses XML names)HY(paces)YH(, custom
+ prefix-names)HY(pace)YH( asso)HY(ci)HY(a)HY(tions)YH( can to be estab)HY(lished)YH(. If custom
+ prefix-names)HY(pace)YH( mapping is not provided then generic prefixes
+ \201)SM(p1)ES(, )SM(p2)ES(, etc\202 are auto)HY(mat)HY(i)HY(cally)YH( assigned
+ to names)HY(paces)YH( as needed. Also, if
+ you would like the result)HY(ing)YH( instance docu)HY(ment)YH( to contain the
+ )SM(schemaLo)HY(ca)HY(tion)YH()ES( or )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES(
+ attributes, you will need to provide names)HY(pace)YH(-schema asso)HY(ci)HY(a)HY(tions)YH(.
+ The )SM(xml_schema::names)HY(pace)YH(_infomap)ES( class is used
+ to capture this infor)HY(ma)HY(tion)YH(:)EP(
+
+ ) 16 63 PR(struct namespace_info
+{
+ namespace_info \201\202;
+ namespace_info \201const std::basic_string<C>& name,
+ const std::basic_string<C>& schema\202;
+
+ std::basic_string<C> name;
+ std::basic_string<C> schema;
+};
+
+// Map of namespace prefix to namespace_info.
+//
+struct namespace_infomap: public std::map<std::basic_string<C>,
+ namespace_info>
+{
+};)RP(
+
+ )0 P(Consider the follow)HY(ing)YH( asso)HY(ci)HY(a)HY(tions)YH( as an example:)EP(
+
+ ) 4 53 PR(xml_schema::namespace_infomap map;
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";)RP(
+
+ )0 P(This map, if passed to one of the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(,
+ could result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
+
+ ) 4 73 PR(<?xml version="1.0" ?>
+<t:name xmlns:t="https://www.codesynthesis.com/test"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://www.codesynthesis.com/test test.xsd">)RP(
+
+ )0 P(As you can see, the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH( auto)HY(mat)HY(i)HY(cally)YH( added names)HY(pace)YH(
+ mapping for the )SM(xsi)ES( prefix. You can change this by
+ provid)HY(ing)YH( your own prefix:)EP(
+
+ ) 6 62 PR(xml_schema::namespace_infomap map;
+
+map["xsn"].name = "http://www.w3.org/2001/XMLSchema-instance";
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";)RP(
+
+ )0 P(This could result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
+
+ ) 4 73 PR(<?xml version="1.0" ?>
+<t:name xmlns:t="https://www.codesynthesis.com/test"
+ xmlns:xsn="http://www.w3.org/2001/XMLSchema-instance"
+ xsn:schemaLocation="https://www.codesynthesis.com/test test.xsd">)RP(
+
+ )0 P(To specify the loca)HY(tion)YH( of a schema without a names)HY(pace)YH( you can use
+ an empty prefix as in the example below: )EP(
+
+ ) 3 34 PR(xml_schema::namespace_infomap map;
+
+map[""].schema = "test.xsd";)RP(
+
+ )0 P(This would result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
+
+ ) 3 59 PR(<?xml version="1.0" ?>
+<name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="test.xsd">)RP(
+
+ )0 P(To make a partic)HY(u)HY(lar)YH( names)HY(pace)YH( default you can use an empty
+ prefix, for example:)EP(
+
+ ) 4 52 PR(xml_schema::namespace_infomap map;
+
+map[""].name = "https://www.codesynthesis.com/test";
+map[""].schema = "test.xsd";)RP(
+
+ )0 P(This could result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
+
+ ) 4 71 PR(<?xml version="1.0" ?>
+<name xmlns="https://www.codesynthesis.com/test"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://www.codesynthesis.com/test test.xsd">)RP(
+
+
+ )0 P(Another bit of infor)HY(ma)HY(tion)YH( that you can pass to the seri)HY(al)HY(iza)HY(tion)YH(
+ func)HY(tions)YH( is the char)HY(ac)HY(ter)YH( encod)HY(ing)YH( method that you would like to use.
+ Common values for this argu)HY(ment)YH( are )SM("US-ASCII")ES(,
+ )SM("ISO8859-1")ES(, )SM("UTF-8")ES(,
+ )SM("UTF-16BE")ES(, )SM("UTF-16LE")ES(,
+ )SM("UCS-4BE")ES(, and )SM("UCS-4LE")ES(. The default
+ encod)HY(ing)YH( is )SM("UTF-8")ES(. For more infor)HY(ma)HY(tion)YH( on
+ encod)HY(ing)YH( methods see the
+ ")R9 2 A(Char)HY(ac)HY(ter)YH(
+ Encod)HY(ing)YH()EA(" article from Wikipedia.
+ )EP(
+
+ )0 2 80 H(4.3)WB 225 Sn()WB 84 Sn( Flags)EA()EH(
+
+ )0 P(Seri)HY(al)HY(iza)HY(tion)YH( flags are the last argu)HY(ment)YH( of every seri)HY(al)HY(iza)HY(tion)YH(
+ func)HY(tion)YH(. They allow you to fine-tune the process of seri)HY(al)HY(iza)HY(tion)YH(.
+ The flags argu)HY(ment)YH( is optional.
+ )EP(
+
+
+ )0 P(The follow)HY(ing)YH( flags are recog)HY(nized)YH( by the seri)HY(al)HY(iza)HY(tion)YH(
+ func)HY(tions)YH(:)EP(
+
+ )0 DL( )0 DT()SM(xml_schema::flags::dont_initial)HY(ize)YH()ES(
+ )DD(Do not initial)HY(ize)YH( the Xerces-C++ runtime.
+
+ )0 DT()SM(xml_schema::flags::dont_pretty_print)ES(
+ )DD(Do not add extra spaces or new lines that make the result)HY(ing)YH( XML
+ slightly bigger but easier to read.
+
+ )0 DT()SM(xml_schema::flags::no_xml_decla)HY(ra)HY(tion)YH()ES(
+ )DD(Do not write XML decla)HY(ra)HY(tion)YH( \201<?xml ... ?>\202.
+ )LD(
+
+ )0 P(You can pass several flags by combin)HY(ing)YH( them using the bit-wise OR
+ oper)HY(a)HY(tor)YH(. For example:)EP(
+
+ ) 9 45 PR(std::unique_ptr<type> r = ...
+std::ofstream ofs \201"test.xml"\202;
+xml_schema::namespace_infomap map;
+name \201ofs,
+ *r,
+ map,
+ "UTF-8",
+ xml_schema::flags::no_xml_declaration |
+ xml_schema::flags::dont_pretty_print\202;)RP(
+
+ )0 P(For more infor)HY(ma)HY(tion)YH( on the Xerces-C++ runtime initial)HY(iza)HY(tion)YH(
+ refer to )0 141 1 A(Section 4.1, "Initial)HY(iz)HY(ing)YH( the Xerces-C++
+ Runtime")141 0 TN TL()Ec /AF f D(.
+ )EP(
+
+ )0 2 81 H(4.4)WB 226 Sn()WB 85 Sn( Error Handling)EA()EH(
+
+ )0 P(As with the parsing func)HY(tions)YH( \201see )0 105 1 A(Section 3.3,
+ "Error Handling")105 0 TN TL()Ec /AF f D(\202, to better under)HY(stand)YH( error handling and
+ report)HY(ing)YH( strate)HY(gies)YH( employed by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(, it
+ is useful to know that the trans)HY(for)HY(ma)HY(tion)YH( of a stat)HY(i)HY(cally)YH(-typed
+ tree to an XML instance docu)HY(ment)YH( happens in two stages. The first
+ stage, performed by the gener)HY(ated)YH( code, consist of build)HY(ing)YH( a DOM
+ instance from the stat)HY(i)HY(cally)YH(-typed tree . For short, we will call
+ this stage the Tree-DOM stage. The second stage, performed by
+ Xerces-C++, consists of seri)HY(al)HY(iz)HY(ing)YH( the DOM instance into the XML
+ docu)HY(ment)YH(. We will call this stage the DOM-XML stage.
+ )EP(
+
+ )0 P(All seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( except the two that seri)HY(al)HY(ize)YH( into
+ a DOM instance come in over)HY(loaded)YH( triples. The first func)HY(tion)YH(
+ in such a triple reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH(
+ excep)HY(tions)YH(. It accu)HY(mu)HY(lates)YH( all the seri)HY(al)HY(iza)HY(tion)YH( errors of the
+ DOM-XML stage and throws them in a single instance of the
+ )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES( excep)HY(tion)YH( \201described below\202.
+ The second and the third func)HY(tions)YH( in the triple use call)HY(back)YH(
+ inter)HY(faces)YH( to report seri)HY(al)HY(iza)HY(tion)YH( errors and warn)HY(ings)YH(. The two
+ call)HY(back)YH( inter)HY(faces)YH( are )SM(xml_schema::error_handler)ES( and
+ )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES(. The
+ )SM(xml_schema::error_handler)ES( inter)HY(face)YH( is described in
+ )0 105 1 A(Section 3.3, "Error Handling")105 0 TN TL()Ec /AF f D(. For more infor)HY(ma)HY(tion)YH(
+ on the )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES( inter)HY(face)YH( refer to the
+ Xerces-C++ docu)HY(men)HY(ta)HY(tion)YH(.
+ )EP(
+
+ )0 P(The Tree-DOM stage reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH(
+ excep)HY(tions)YH(. Indi)HY(vid)HY(ual)YH( excep)HY(tions)YH( thrown by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(
+ are described in the follow)HY(ing)YH( sub-sections.
+ )EP(
+
+ )0 3 82 H(4.4.1)WB 227 Sn()WB 86 Sn( )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES()EA()EH(
+
+ ) 11 39 PR(struct serialization: virtual exception
+{
+ serialization \201\202;
+ serialization \201const diagnostics&\202;
+
+ const diagnostics&
+ diagnostics \201\202 const;
+
+ virtual const char*
+ what \201\202 const throw \201\202;
+};)RP(
+
+ )0 P(The )SM(xml_schema::diag)HY(nos)HY(tics)YH()ES( class is described in
+ )0 142 1 A(Section 3.3.1, ")SM(xml_schema::parsing)ES(")142 0 TN TL()Ec /AF f D(.
+ The )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES( excep)HY(tion)YH( is thrown if
+ there were seri)HY(al)HY(iza)HY(tion)YH( errors reported during the DOM-XML stage.
+ If no call)HY(back)YH( inter)HY(face)YH( was provided to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(,
+ the excep)HY(tion)YH( contains a list of errors and warn)HY(ings)YH( acces)HY(si)HY(ble)YH( using
+ the )SM(diag)HY(nos)HY(tics)YH()ES( func)HY(tion)YH(.
+ )EP(
+
+
+ )0 3 83 H(4.4.2)WB 228 Sn()WB 87 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()EA()EH(
+
+ )0 P(The )SM(xml_schema::unex)HY(pected)YH(_element)ES( excep)HY(tion)YH( is
+ described in )0 143 1 A(Section 3.3.3,
+ ")SM(xml_schema::unex)HY(pected)YH(_element)ES(")143 0 TN TL()Ec /AF f D(. It is thrown
+ by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( during the Tree-DOM stage if the
+ root element name of the provided DOM instance does not match with
+ the name of the element this seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH( is for.
+ )EP(
+
+ )0 3 84 H(4.4.3)WB 229 Sn()WB 88 Sn( )SM(xml_schema::no_type_info)ES()EA()EH(
+
+ )0 P(The )SM(xml_schema::no_type_info)ES( excep)HY(tion)YH( is
+ described in )0 144 1 A(Section 3.3.7,
+ ")SM(xml_schema::no_type_info)ES(")144 0 TN TL()Ec /AF f D(. It is thrown
+ by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( during the Tree-DOM stage when there
+ is no type infor)HY(ma)HY(tion)YH( asso)HY(ci)HY(ated)YH( with a dynamic type of an
+ element. Usually, catch)HY(ing)YH( this excep)HY(tion)YH( means that you haven't
+ linked the code gener)HY(ated)YH( from the schema defin)HY(ing)YH( the type in
+ ques)HY(tion)YH( with your appli)HY(ca)HY(tion)YH( or this schema has been compiled
+ without the )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option.
+ )EP(
+
+ )0 2 85 H(4.5)WB 230 Sn()WB 89 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(std::ostream)ES()EA()EH(
+
+ )0 P(In order to seri)HY(al)HY(ize)YH( to )SM(std::ostream)ES( you will need
+ an object model, an output stream and, option)HY(ally)YH(, a names)HY(pace)YH(
+ infomap. For instance:)EP(
+
+ ) 14 61 PR(// Obtain the object model.
+//
+std::unique_ptr<type> r = ...
+
+// Prepare namespace mapping and schema location information.
+//
+xml_schema::namespace_infomap map;
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";
+
+// Write it out.
+//
+name \201std::cout, *r, map\202;)RP(
+
+ )0 P(Note that the output stream is treated as a binary stream. This
+ becomes impor)HY(tant)YH( when you use a char)HY(ac)HY(ter)YH( encod)HY(ing)YH( that is wider
+ than 8-bit )SM(char)ES(, for instance UTF-16 or UCS-4. For
+ example, things will most likely break if you try to seri)HY(al)HY(ize)YH(
+ to )SM(std::ostringstream)ES( with UTF-16 or UCS-4 as an
+ encod)HY(ing)YH(. This is due to the special value,
+ )SM('\2000')ES(, that will most likely occur as part of such
+ seri)HY(al)HY(iza)HY(tion)YH( and it won't have the special meaning assumed by
+ )SM(std::ostringstream)ES(.
+ )EP(
+
+
+ )0 2 86 H(4.6)WB 231 Sn()WB 90 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES()EA()EH(
+
+ )0 P(Seri)HY(al)HY(iz)HY(ing)YH( to an )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES( instance
+ is similar the )SM(std::ostream)ES( case. For instance:
+ )EP(
+
+ ) 38 65 PR(using std::unique_ptr;
+
+// Obtain the object model.
+//
+unique_ptr<type> r = ...
+
+// Prepare namespace mapping and schema location information.
+//
+xml_schema::namespace_infomap map;
+
+map["t"].name = "https://www.codesynthesis.com/test";
+map["t"].schema = "test.xsd";
+
+using namespace xercesc;
+
+XMLPlatformUtils::Initialize \201\202;
+
+{
+ // Choose a target.
+ //
+ unique_ptr<XMLFormatTarget> ft;
+
+ if \201argc != 2\202
+ {
+ ft = unique_ptr<XMLFormatTarget> \201new StdOutFormatTarget \201\202\202;
+ }
+ else
+ {
+ ft = unique_ptr<XMLFormatTarget> \201
+ new LocalFileFormatTarget \201argv[1]\202\202;
+ })WR(
+
+ // Write it out.
+ //
+ name \201*ft, *r, map\202;
+}
+
+XMLPlatformUtils::Terminate \201\202;)RP(
+
+ )0 P(Note that we had to initial)HY(ize)YH( the Xerces-C++ runtime before we
+ could call this seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(.)EP(
+
+ )0 2 87 H(4.7)WB 232 Sn()WB 91 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to DOM)EA()EH(
+
+ )0 P(The mapping provides two over)HY(loaded)YH( func)HY(tions)YH( that imple)HY(ment)YH(
+ seri)HY(al)HY(iza)HY(tion)YH( to a DOM instance. The first creates a DOM instance
+ for you and the second seri)HY(al)HY(izes)YH( to an exist)HY(ing)YH( DOM instance.
+ While seri)HY(al)HY(iz)HY(ing)YH( to a new DOM instance is similar to seri)HY(al)HY(iz)HY(ing)YH(
+ to )SM(std::ostream)ES( or )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES(,
+ seri)HY(al)HY(iz)HY(ing)YH( to an exist)HY(ing)YH( DOM instance requires quite a bit of work
+ from your side. You will need to set all the custom names)HY(pace)YH( mapping
+ attributes as well as the )SM(schemaLo)HY(ca)HY(tion)YH()ES( and/or
+ )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES( attributes. The follow)HY(ing)YH(
+ listing should give you an idea about what needs to be done:
+ )EP(
+
+ ) 24 67 PR(// Obtain the object model.
+//
+std::unique_ptr<type> r = ...
+
+using namespace xercesc;
+
+XMLPlatformUtils::Initialize \201\202;
+
+{
+ // Create a DOM instance. Set custom namespace mapping and schema
+ // location attributes.
+ //
+ DOMDocument& doc = ...
+
+ // Serialize to DOM.
+ //
+ name \201doc, *r\202;
+
+ // Serialize the DOM document to XML.
+ //
+ ...
+}
+
+XMLPlatformUtils::Terminate \201\202;)RP(
+
+ )0 P(For more infor)HY(ma)HY(tion)YH( on how to create and seri)HY(al)HY(ize)YH( a DOM instance
+ refer to the Xerces-C++ docu)HY(men)HY(ta)HY(tion)YH(. In addi)HY(tion)YH(, the
+ )R4 2 A(C++/Tree Mapping
+ FAQ)EA( shows how to imple)HY(ment)YH( these oper)HY(a)HY(tions)YH( using the XSD
+ runtime util)HY(i)HY(ties)YH(.
+ )EP(
+
+ )0 1 88 H(5)WB 233 Sn()WB 92 Sn( Addi)HY(tional)YH( Func)HY(tion)HY(al)HY(ity)YH()EA()EH(
+
+ )0 P(The C++/Tree mapping provides a number of optional features
+ that can be useful in certain situ)HY(a)HY(tions)YH(. They are described
+ in the follow)HY(ing)YH( sections.)EP(
+
+ )0 2 89 H(5.1)WB 234 Sn()WB 93 Sn( DOM Asso)HY(ci)HY(a)HY(tion)YH()EA()EH(
+
+ )0 P(Normally, after parsing is complete, the DOM docu)HY(ment)YH( which
+ was used to extract the data is discarded. However, the parsing
+ func)HY(tions)YH( can be instructed to preserve the DOM docu)HY(ment)YH(
+ and create an asso)HY(ci)HY(a)HY(tion)YH( between the DOM nodes and object model
+ nodes. When there is an asso)HY(ci)HY(a)HY(tion)YH( between the DOM and
+ object model nodes, you can obtain the corre)HY(spond)HY(ing)YH( DOM element
+ or attribute node from an object model node as well as perform
+ the reverse tran)HY(si)HY(tion)YH(: obtain the corre)HY(spond)HY(ing)YH( object model
+ from a DOM element or attribute node.)EP(
+
+ )0 P(Main)HY(tain)HY(ing)YH( DOM asso)HY(ci)HY(a)HY(tion)YH( is normally useful when the appli)HY(ca)HY(tion)YH(
+ needs access to XML constructs that are not preserved in the
+ object model, for example, XML comments.
+ Another useful aspect of DOM asso)HY(ci)HY(a)HY(tion)YH( is the ability of the
+ appli)HY(ca)HY(tion)YH( to navi)HY(gate)YH( the docu)HY(ment)YH( tree using the generic DOM
+ inter)HY(face)YH( \201for example, with the help of an XPath proces)HY(sor)YH(\202
+ and then move back to the stat)HY(i)HY(cally)YH(-typed object model. Note
+ also that while you can change the under)HY(ly)HY(ing)YH( DOM docu)HY(ment)YH(,
+ these changes are not reflected in the object model and will
+ be ignored during seri)HY(al)HY(iza)HY(tion)YH(. If you need to not only access
+ but also modify some aspects of XML that are not preserved in
+ the object model, then type customiza)HY(tion)YH( with custom parsing
+ construc)HY(tors)YH( and seri)HY(al)HY(iza)HY(tion)YH( oper)HY(a)HY(tors)YH( should be used instead.)EP(
+
+ )0 P(To request DOM asso)HY(ci)HY(a)HY(tion)YH( you will need to pass the
+ )SM(xml_schema::flags::keep_dom)ES( flag to one of the
+ parsing func)HY(tions)YH( \201see )0 138 1 A(Section 3.2,
+ "Flags and Prop)HY(er)HY(ties)YH(")138 0 TN TL()Ec /AF f D( for more infor)HY(ma)HY(tion)YH(\202. In this case the
+ DOM docu)HY(ment)YH( is retained and will be released when the object model
+ is deleted. Note that since DOM nodes "out-live" the parsing func)HY(tion)YH(
+ call, you need to initial)HY(ize)YH( the Xerces-C++ runtime before calling
+ one of the parsing func)HY(tions)YH( with the )SM(keep_dom)ES( flag and
+ termi)HY(nate)YH( it after the object model is destroyed \201see
+ )0 124 1 A(Section 3.1, "Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime")124 0 TN TL()Ec /AF f D(\202.)EP(
+
+ )0 P(If the )SM(keep_dom)ES( flag is passed
+ as the second argu)HY(ment)YH( to the copy construc)HY(tor)YH( and the copy
+ being made is of a complete tree, then the DOM asso)HY(ci)HY(a)HY(tion)YH(
+ is also main)HY(tained)YH( in the copy by cloning the under)HY(ly)HY(ing)YH(
+ DOM docu)HY(ment)YH( and reestab)HY(lish)HY(ing)YH( the asso)HY(ci)HY(a)HY(tions)YH(. For example:)EP(
+
+ ) 22 48 PR(using namespace xercesc;
+
+XMLPlatformUtils::Initialize \201\202;
+
+{
+ // Parse XML to object model.
+ //
+ std::unique_ptr<type> r \201root \201
+ "root.xml",
+ xml_schema::flags::keep_dom |
+ xml_schema::flags::dont_initialize\202\202;
+
+ // Copy without DOM association.
+ //
+ type copy1 \201*r\202;
+
+ // Copy with DOM association.
+ //
+ type copy2 \201*r, xml_schema::flags::keep_dom\202;
+}
+
+XMLPlatformUtils::Terminate \201\202;)RP(
+
+
+ )0 P(To obtain the corre)HY(spond)HY(ing)YH( DOM node from an object model node
+ you will need to call the )SM(_node)ES( acces)HY(sor)YH( func)HY(tion)YH(
+ which returns a pointer to )SM(DOMNode)ES(. You can then query
+ this DOM node's type and cast it to either )SM(DOMAttr*)ES(
+ or )SM(DOMEle)HY(ment)YH(*)ES(. To obtain the corre)HY(spond)HY(ing)YH( object
+ model node from a DOM node, the DOM user data API is used. The
+ )SM(xml_schema::dom::tree_node_key)ES( vari)HY(able)YH( contains
+ the key for object model nodes. The follow)HY(ing)YH( schema and code
+ frag)HY(ment)YH( show how to navi)HY(gate)YH( from DOM to object model nodes
+ and in the oppo)HY(site)YH( direc)HY(tion)YH(:)EP(
+
+ ) 7 37 PR(<complexType name="object">
+ <sequence>
+ <element name="a" type="string"/>
+ </sequence>
+</complexType>
+
+<element name="root" type="object"/>)RP(
+
+ ) 42 68 PR(using namespace xercesc;
+
+XMLPlatformUtils::Initialize \201\202;
+
+{
+ // Parse XML to object model.
+ //
+ std::unique_ptr<type> r \201root \201
+ "root.xml",
+ xml_schema::flags::keep_dom |
+ xml_schema::flags::dont_initialize\202\202;
+
+ DOMNode* n = r->_node \201\202;
+ assert \201n->getNodeType \201\202 == DOMNode::ELEMENT_NODE\202;
+ DOMElement* re = static_cast<DOMElement*> \201n\202;
+
+ // Get the 'a' element. Note that it is not necessarily the
+ // first child node of 'root' since there could be whitespace
+ // nodes before it.
+ //
+ DOMElement* ae;
+
+ for \201n = re->getFirstChild \201\202; n != 0; n = n->getNextSibling \201\202\202
+ {
+ if \201n->getNodeType \201\202 == DOMNode::ELEMENT_NODE\202
+ {
+ ae = static_cast<DOMElement*> \201n\202;
+ break;
+ }
+ }
+)WR(
+ // Get from the 'a' DOM element to xml_schema::string object model
+ // node.
+ //
+ xml_schema::type& t \201
+ *reinterpret_cast<xml_schema::type*> \201
+ ae->getUserData \201xml_schema::dom::tree_node_key\202\202\202;
+
+ xml_schema::string& a \201dynamic_cast<xml_schema::string&> \201t\202\202;
+}
+
+XMLPlatformUtils::Terminate \201\202;)RP(
+
+ )0 P(The 'mixed' example which can be found in the XSD distri)HY(bu)HY(tion)YH(
+ shows how to handle the mixed content using DOM asso)HY(ci)HY(a)HY(tion)YH(.)EP(
+
+ )0 2 90 H(5.2)WB 235 Sn()WB 94 Sn( Binary Seri)HY(al)HY(iza)HY(tion)YH()EA()EH(
+
+ )0 P(Besides reading from and writing to XML, the C++/Tree mapping
+ also allows you to save the object model to and load it from a
+ number of prede)HY(fined)YH( as well as custom data repre)HY(sen)HY(ta)HY(tion)YH(
+ formats. The prede)HY(fined)YH( binary formats are CDR \201Common Data
+ Repre)HY(sen)HY(ta)HY(tion)YH(\202 and XDR \201eXter)HY(nal)YH( Data Repre)HY(sen)HY(ta)HY(tion)YH(\202. A
+ custom format can easily be supported by provid)HY(ing)YH(
+ inser)HY(tion)YH( and extrac)HY(tion)YH( oper)HY(a)HY(tors)YH( for basic types.)EP(
+
+ )0 P(Binary seri)HY(al)HY(iza)HY(tion)YH( saves only the data without any meta
+ infor)HY(ma)HY(tion)YH( or markup. As a result, saving to and loading
+ from a binary repre)HY(sen)HY(ta)HY(tion)YH( can be an order of magni)HY(tude)YH(
+ faster than parsing and seri)HY(al)HY(iz)HY(ing)YH( the same data in XML.
+ Further)HY(more)YH(, the result)HY(ing)YH( repre)HY(sen)HY(ta)HY(tion)YH( is normally several
+ times smaller than the equiv)HY(a)HY(lent)YH( XML repre)HY(sen)HY(ta)HY(tion)YH(. These
+ prop)HY(er)HY(ties)YH( make binary seri)HY(al)HY(iza)HY(tion)YH( ideal for inter)HY(nal)YH( data
+ exchange and storage. A typical appli)HY(ca)HY(tion)YH( that uses this
+ facil)HY(ity)YH( stores the data and commu)HY(ni)HY(cates)YH( within the
+ system using a binary format and reads/writes the data
+ in XML when commu)HY(ni)HY(cat)HY(ing)YH( with the outside world.)EP(
+
+ )0 P(In order to request the gener)HY(a)HY(tion)YH( of inser)HY(tion)YH( oper)HY(a)HY(tors)YH( and
+ extrac)HY(tion)YH( construc)HY(tors)YH( for a specific prede)HY(fined)YH( or custom
+ data repre)HY(sen)HY(ta)HY(tion)YH( stream, you will need to use the
+ )SM(--gener)HY(ate)YH(-inser)HY(tion)YH()ES( and )SM(--gener)HY(ate)YH(-extrac)HY(tion)YH()ES(
+ compiler options. See the
+ )R5 2 A(XSD
+ Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH(.)EP(
+
+ )0 P(Once the inser)HY(tion)YH( oper)HY(a)HY(tors)YH( and extrac)HY(tion)YH( construc)HY(tors)YH( are
+ gener)HY(ated)YH(, you can use the )SM(xml_schema::istream)ES(
+ and )SM(xml_schema::ostream)ES( wrapper stream templates
+ to save the object model to and load it from a specific format.
+ The follow)HY(ing)YH( code frag)HY(ment)YH( shows how to do this using ACE
+ \201Adap)HY(tive)YH( Commu)HY(ni)HY(ca)HY(tion)YH( Envi)HY(ron)HY(ment)YH(\202 CDR streams as an example:)EP(
+
+ ) 8 37 PR(<complexType name="object">
+ <sequence>
+ <element name="a" type="string"/>
+ <element name="b" type="int"/>
+ </sequence>
+</complexType>
+
+<element name="root" type="object"/>)RP(
+
+ ) 21 51 PR(// Parse XML to object model.
+//
+std::unique_ptr<type> r \201root \201"root.xml"\202\202;
+
+// Save to a CDR stream.
+//
+ACE_OutputCDR ace_ocdr;
+xml_schema::ostream<ACE_OutputCDR> ocdr \201ace_ocdr\202;
+
+ocdr << *r;
+
+// Load from a CDR stream.
+//
+ACE_InputCDR ace_icdr \201buf, size\202;
+xml_schema::istream<ACE_InputCDR> icdr \201ace_icdr\202;
+
+std::unique_ptr<object> copy \201new object \201icdr\202\202;
+
+// Serialize to XML.
+//
+root \201std::cout, *copy\202;)RP(
+
+ )0 P(The XSD distri)HY(bu)HY(tion)YH( contains a number of exam)HY(ples)YH( that
+ show how to save the object model to and load it from
+ CDR, XDR, and a custom format.)EP(
+
+
+
+
+ )0 1 91 H(Appendix)WB 236 Sn()WB 95 Sn( A \236 Default and Fixed Values)EA()EH(
+
+ )0 P(The follow)HY(ing)YH( table summa)HY(rizes)YH( the effect of default and fixed
+ values \201spec)HY(i)HY(fied)YH( with the )SM(default)ES( and )SM(fixed)ES(
+ attributes, respec)HY(tively)YH(\202 on attribute and element values. The
+ )SM(default)ES( and )SM(fixed)ES( attributes are mutu)HY(ally)YH(
+ exclu)HY(sive)YH(. It is also worth)HY(while)YH( to note that the fixed value seman)HY(tics)YH(
+ is a super)HY(set)YH( of the default value seman)HY(tics)YH(.
+ )EP(
+
+
+ )1 PT(
+
+ )BR(
+)BR(
+
+
+)WB NL
+/TE t D NP /OU t D TU PM 1 eq and{/Pn () D showpage}if end restore
diff --git a/doc/pregenerated/xsd.1 b/doc/pregenerated/xsd.1
new file mode 100644
index 0000000..74c9e89
--- /dev/null
+++ b/doc/pregenerated/xsd.1
@@ -0,0 +1,1500 @@
+.\" Process this file with
+.\" groff -man -Tascii xsd.1
+.\"
+.TH XSD 1 "January 2023" "XSD 4.2.0"
+.SH NAME
+xsd \- W3C XML Schema to C++ Compiler
+.\"
+.\"
+.\"
+.\"--------------------------------------------------------------------
+.SH SYNOPSIS
+.\"--------------------------------------------------------------------
+.B xsd
+.I command
+.B [
+.I options
+.B ]
+.I file
+.B [
+.I file
+.B ...]
+.in
+.B xsd help
+.B [
+.I command
+.B ]
+.in
+.B xsd version
+.\"
+.\"
+.\"
+.\"--------------------------------------------------------------------
+.SH DESCRIPTION
+.\"--------------------------------------------------------------------
+.B xsd
+generates vocabulary-specific, statically-typed C++ mapping from W3C XML
+Schema definitions. Particular mapping to produce is selected by a
+.IR command .
+Each mapping has a number of mapping-specific
+.I options
+that should appear, if any, after the
+.IR command .
+Input files should be W3C XML Schema definitions. The exact set of the
+generated files depends on the selected mapping and options.
+.\"
+.\"
+.\"
+.\"--------------------------------------------------------------------
+.SH COMMANDS
+.\"--------------------------------------------------------------------
+.IP \fBcxx-tree\fR
+Generate the C++/Tree mapping. For each input file in the form
+.B name.xsd
+the following C++ files are generated:
+.B name.hxx
+(header file),
+.B name.ixx
+(inline file, generated only if the
+.B --generate-inline
+option is specified),
+.B name.cxx
+(source file), and
+.B name-fwd.hxx
+(forward declaration file, generated only if the
+.B --generate-forward
+option is specified).
+
+.IP \fBcxx-parser\fR
+Generate the C++/Parser mapping. For each input file in the form
+.B name.xsd
+the following C++ files are generated:
+.B name-pskel.hxx
+(parser skeleton header file),
+.B name-pskel.ixx
+(parser skeleton inline file, generated only if the
+.B --generate-inline
+option is specified), and
+.B name-pskel.cxx
+(parser skeleton source file). If the
+.B --generate-noop-impl
+or
+.B --generate-print-impl
+option is specified, the following additional sample implementation files
+are generated:
+.B name-pimpl.hxx
+(parser implementation header file) and
+.B name-pimpl.cxx
+(parser implementation source file). If the
+.B --generate-test-driver
+option is specified, the additional
+.B name-driver.cxx
+test driver file is generated.
+
+.IP \fBhelp\fR
+Print usage information and exit. Use
+.PP
+.RS
+.RS 3
+.B xsd help
+.I command
+.RE
+.PP
+for command-specific help.
+.RE
+.IP \fBversion\fR
+Print version and exit.
+.\"--------------------------------------------------------------------
+.SH OPTIONS
+.\"--------------------------------------------------------------------
+Command-specific
+.IR options ,
+if any, should appear after the corresponding
+.IR command .
+
+.\"
+.\" Common options.
+.\"
+.SS common options
+.
+.IP "\fB--std\fR \fIversion\fR"
+Specify the C++ standard that the generated code should conform to\. Valid
+values are \fBc++98\fR, \fBc++11\fR (default), \fBc++14\fR, \fBc++17\fR,
+\fBc++20\fR, and \fBc++23\fR\.
+
+The C++ standard affects various aspects of the generated code that are
+discussed in more detail in various mapping-specific documentation\. Overall,
+when C++11 is selected, the generated code relies on the move semantics and
+uses \fBstd::unique_ptr\fR instead of deprecated \fBstd::auto_ptr\fR\.
+Currently, there is no difference between the C++11 and the later standards
+modes\.
+
+When the C++11 mode is selected, you normally don't need to perform any extra
+steps other than enable C++11 in your C++ compiler, if required\. The XSD
+compiler will automatically add the necessary macro defines to the generated
+header files that will switch the header-only XSD runtime library
+(\fBlibxsd\fR) to the C++11 mode\. However, if you include any of the XSD
+runtime headers directly in your application (normally you just include the
+generated headers), then you will need to define the \fBXSD_CXX11\fR macro for
+your entire project\.
+.IP "\fB--char-type\fR \fItype\fR"
+Generate code using the provided character \fItype\fR instead of the default
+\fBchar\fR\. Valid values are \fBchar\fR and \fBwchar_t\fR\.
+.IP "\fB--char-encoding\fR \fIenc\fR"
+Specify the character encoding that should be used in the generated code\.
+Valid values for the \fBchar\fR character type are \fButf8\fR (default),
+\fBiso8859-1\fR, \fBlcp\fR (Xerces-C++ local code page), and \fBcustom\fR\. If
+you pass \fBcustom\fR as the value then you will need to include the
+transcoder implementation header for your encoding at the beginning of the
+generated header files (see the \fB--hxx-prologue\fR option)\.
+
+For the \fBwchar_t\fR character type the only valid value is \fBauto\fR and
+the encoding is automatically selected between UTF-16 and UTF-32/UCS-4,
+depending on the \fBwchar_t\fR type size\.
+.IP "\fB--output-dir\fR \fIdir\fR"
+Write generated files to \fIdir\fR instead of the current directory\.
+.IP "\fB--generate-inline\fR"
+Generate simple functions inline\. This option triggers creation of the inline
+file\.
+.IP "\fB--generate-xml-schema\fR"
+Generate a C++ header file as if the schema being compiled defines the XML
+Schema namespace\. For the C++/Tree mapping, the resulting file will contain
+definitions for all XML Schema built-in types\. For the C++/Parser mapping,
+the resulting file will contain definitions for all the parser skeletons and
+implementations corresponding to the XML Schema built-in types\.
+
+The schema file provided to the compiler need not exist and is only used to
+derive the name of the resulting header file\. Use the
+\fB--extern-xml-schema\fR option to include this file in the generated files
+for other schemas\.
+.IP "\fB--extern-xml-schema\fR \fIfile\fR"
+Include a header file derived from \fIfile\fR instead of generating the XML
+Schema namespace mapping inline\. The provided file need not exist and is only
+used to derive the name of the included header file\. Use the
+\fB--generate-xml-schema\fR option to generate this header file\.
+.IP "\fB--namespace-map\fR \fIxns\fR=\fIcns\fR"
+Map XML Schema namespace \fIxns\fR to C++ namespace \fIcns\fR\. Repeat this
+option to specify mapping for more than one XML Schema namespace\. For
+example, the following option:
+
+\fB--namespace-map http://example\.com/foo/bar=foo::bar\fR
+
+Will map the \fBhttp://example\.com/foo/bar\fR XML Schema namespace to the
+\fBfoo::bar\fR C++ namespace\.
+.IP "\fB--namespace-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema namespace names to C++ namespace names\. \fIregex\fR is a Perl-like
+regular expression in the form
+\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any character can be
+used as a delimiter instead of '\fB/\fR'\. Escaping of the delimiter character
+in \fIpattern\fR or \fIreplacement\fR is not supported\.
+
+All the regular expressions are pushed into a stack with the last specified
+expression considered first\. The first match that succeeds is used\. Regular
+expressions are applied to a string in the form
+
+\fIfilename\fR \fInamespace\fR\fR
+
+For example, if you have file \fBhello\.xsd\fR with namespace
+\fBhttp://example\.com/hello\fR and you run \fBxsd\fR on this file, then the
+string in question will be:
+
+\fBhello\.xsd\. http://example\.com/hello\fR
+
+For the built-in XML Schema namespace the string is:
+
+\fBXMLSchema\.xsd http://www\.w3\.org/2001/XMLSchema\fR
+
+The following three steps are performed for each regular expression until the
+match is found:
+
+1\. The expression is applied and if the result is empty the next expression
+is considered\.
+
+2\. All '\fB/\fR' are replaced with '\fB::\fR'\.
+
+3\. The result is verified to be a valid C++ scope name (e\.g\.,
+\fBfoo::bar\fR)\. If this test succeeds, the result is used as a C++ namespace
+name\.
+
+As an example, the following expression maps XML Schema namespaces in the
+form \fBhttp://example\.com/foo/bar\fR to C++ namespaces in the form
+\fBfoo::bar\fR:
+
+\fB%\.* http://example\.com/(\.+)%$1%\fR
+
+See also the REGEX AND SHELL QUOTING section below\.
+.IP "\fB--namespace-regex-trace\fR"
+Trace the process of applying regular expressions specified with the
+\fB--namespace-regex\fR option\. Use this option to find out why your regular
+expressions don't do what you expected them to do\.
+.IP "\fB--reserved-name\fR \fIn\fR[=\fIr\fR]"
+Add name \fIn\fR to the list of names that should not be used as identifiers\.
+The name can optionally be followed by \fB=\fR and the replacement name
+\fIr\fR that should be used instead\. All the C++ keywords are already in this
+list\.
+.IP "\fB--include-with-brackets\fR"
+Use angle brackets (<>) instead of quotes ("") in generated \fB#include\fR
+directives\.
+.IP "\fB--include-prefix\fR \fIprefix\fR"
+Add \fIprefix\fR to generated \fB#include\fR directive paths\.
+
+For example, if you had the following import element in your schema
+
+\fB<import namespace="\.\.\." schemaLocation="base\.xsd"/>\fR
+
+and compiled this fragment with \fB--include-prefix schemas/\fR, then the
+include directive in the generated code would be:
+
+\fB#include "schemas/base\.hxx"\fR
+.IP "\fB--include-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to transform
+\fB#include\fR directive paths\. \fIregex\fR is a Perl-like regular expression
+in the form \fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any
+character can be used as a delimiter instead of '\fB/\fR'\. Escaping of the
+delimiter character in \fIpattern\fR or \fIreplacement\fR is not supported\.
+
+All the regular expressions are pushed into a stack with the last specified
+expression considered first\. The first match that succeeds is used\.
+
+As an example, the following expression transforms paths in the form
+\fBschemas/foo/bar\fR to paths in the form \fBgenerated/foo/bar\fR:
+
+\fB%schemas/(\.+)%generated/$1%\fR
+
+See also the REGEX AND SHELL QUOTING section below\.
+.IP "\fB--include-regex-trace\fR"
+Trace the process of applying regular expressions specified with the
+\fB--include-regex\fR option\. Use this option to find out why your regular
+expressions don't do what you expected them to do\.
+.IP "\fB--guard-prefix\fR \fIprefix\fR"
+Add \fIprefix\fR to generated header inclusion guards\. The prefix is
+transformed to upper case and characters that are illegal in a preprocessor
+macro name are replaced with underscores\. If this option is not specified
+then the directory part of the input schema file is used as a prefix\.
+.IP "\fB--hxx-suffix\fR \fIsuffix\fR"
+Use the provided \fIsuffix\fR instead of the default \fB\.hxx\fR to construct
+the name of the header file\. Note that this suffix is also used to construct
+names of header files corresponding to included/imported schemas\.
+.IP "\fB--ixx-suffix\fR \fIsuffix\fR"
+Use the provided \fIsuffix\fR instead of the default \fB\.ixx\fR to construct
+the name of the inline file\.
+.IP "\fB--cxx-suffix\fR \fIsuffix\fR"
+Use the provided \fIsuffix\fR instead of the default \fB\.cxx\fR to construct
+the name of the source file\.
+.IP "\fB--fwd-suffix\fR \fIsuffix\fR"
+Use the provided \fIsuffix\fR instead of the default \fB-fwd\.hxx\fR to
+construct the name of the forward declaration file\.
+.IP "\fB--hxx-regex\fR \fIregex\fR"
+Use the provided expression to construct the name of the header file\.
+\fIregex\fR is a Perl-like regular expression in the form
+\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Note that this
+expression is also used to construct names of header files corresponding to
+included/imported schemas\. See also the REGEX AND SHELL QUOTING section
+below\.
+.IP "\fB--ixx-regex\fR \fIregex\fR"
+Use the provided expression to construct the name of the inline file\.
+\fIregex\fR is a Perl-like regular expression in the form
+\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. See also the REGEX
+AND SHELL QUOTING section below\.
+.IP "\fB--cxx-regex\fR \fIregex\fR"
+Use the provided expression to construct the name of the source file\.
+\fIregex\fR is a Perl-like regular expression in the form
+\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. See also the REGEX
+AND SHELL QUOTING section below\.
+.IP "\fB--fwd-regex\fR \fIregex\fR"
+Use the provided expression to construct the name of the forward declaration
+file\. \fIregex\fR is a Perl-like regular expression in the form
+\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. See also the REGEX
+AND SHELL QUOTING section below\.
+.IP "\fB--hxx-prologue\fR \fItext\fR"
+Insert \fItext\fR at the beginning of the header file\.
+.IP "\fB--ixx-prologue\fR \fItext\fR"
+Insert \fItext\fR at the beginning of the inline file\.
+.IP "\fB--cxx-prologue\fR \fItext\fR"
+Insert \fItext\fR at the beginning of the source file\.
+.IP "\fB--fwd-prologue\fR \fItext\fR"
+Insert \fItext\fR at the beginning of the forward declaration file\.
+.IP "\fB--prologue\fR \fItext\fR"
+Insert \fItext\fR at the beginning of each generated file for which there is
+no file-specific prologue\.
+.IP "\fB--hxx-epilogue\fR \fItext\fR"
+Insert \fItext\fR at the end of the header file\.
+.IP "\fB--ixx-epilogue\fR \fItext\fR"
+Insert \fItext\fR at the end of the inline file\.
+.IP "\fB--cxx-epilogue\fR \fItext\fR"
+Insert \fItext\fR at the end of the source file\.
+.IP "\fB--fwd-epilogue\fR \fItext\fR"
+Insert \fItext\fR at the end of the forward declaration file\.
+.IP "\fB--epilogue\fR \fItext\fR"
+Insert \fItext\fR at the end of each generated file for which there is no
+file-specific epilogue\.
+.IP "\fB--hxx-prologue-file\fR \fIfile\fR"
+Insert the content of the \fIfile\fR at the beginning of the header file\.
+.IP "\fB--ixx-prologue-file\fR \fIfile\fR"
+Insert the content of the \fIfile\fR at the beginning of the inline file\.
+.IP "\fB--cxx-prologue-file\fR \fIfile\fR"
+Insert the content of the \fIfile\fR at the beginning of the source file\.
+.IP "\fB--fwd-prologue-file\fR \fIfile\fR"
+Insert the content of the \fIfile\fR at the beginning of the forward
+declaration file\.
+.IP "\fB--prologue-file\fR \fIfile\fR"
+Insert the content of the \fIfile\fR at the beginning of each generated file
+for which there is no file-specific prologue file\.
+.IP "\fB--hxx-epilogue-file\fR \fIfile\fR"
+Insert the content of the \fIfile\fR at the end of the header file\.
+.IP "\fB--ixx-epilogue-file\fR \fIfile\fR"
+Insert the content of the \fIfile\fR at the end of the inline file\.
+.IP "\fB--cxx-epilogue-file\fR \fIfile\fR"
+Insert the content of the \fIfile\fR at the end of the source file\.
+.IP "\fB--fwd-epilogue-file\fR \fIfile\fR"
+Insert the content of the \fIfile\fR at the end of the forward declaration
+file\.
+.IP "\fB--epilogue-file\fR \fIfile\fR"
+Insert the content of the \fIfile\fR at the end of each generated file for
+which there is no file-specific epilogue file\.
+.IP "\fB--export-symbol\fR \fIsymbol\fR"
+Insert \fIsymbol\fR in places where DLL export/import control statements
+(\fB__declspec(dllexport/dllimport)\fR) are necessary\.
+.IP "\fB--export-xml-schema\fR"
+Export/import types in the XML Schema namespace using the export symbol
+provided with the \fB--export-symbol\fR option\. The \fBXSD_NO_EXPORT\fR macro
+can be used to omit this code during C++ compilation, which may be useful if
+you would like to use the same generated code across multiple platforms\.
+.IP "\fB--export-maps\fR"
+Export polymorphism support maps from a Win32 DLL into which this generated
+code is placed\. This is necessary when your type hierarchy is split across
+several DLLs since otherwise each DLL will have its own set of maps\. In this
+situation the generated code for the DLL which contains base types and/or
+substitution group heads should be compiled with this option and the generated
+code for all other DLLs should be compiled with \fB--import-maps\fR\. This
+option is only valid together with \fB--generate-polymorphic\fR\. The
+\fBXSD_NO_EXPORT\fR macro can be used to omit this code during C++
+compilation, which may be useful if you would like to use the same generated
+code across multiple platforms\.
+.IP "\fB--import-maps\fR"
+Import polymorphism support maps to a Win32 DLL or executable into which this
+generated code is linked\. See the \fB--export-maps\fR option documentation
+for details\. This options is only valid together with
+\fB--generate-polymorphic\fR\. The \fBXSD_NO_EXPORT\fR macro can be used to
+omit this code during C++ compilation, which may be useful if you would like
+to use the same generated code across multiple platforms\.
+.IP "\fB--generate-dep\fR"
+Generate \fBmake\fR dependency information\. This option triggers the creation
+of the \fB\.d\fR file containing the dependencies of the generated files on
+the main schema file as well as all the schema files that it includes/imports,
+transitively\. This dependency file is then normally included into the main
+\fBmakefile\fR to implement automatic dependency tracking\. See also the
+\fB--dep-*\fR options\.
+
+Note also that automatic dependency generation is not supported in the
+file-per-type mode (\fB--file-per-type\fR)\. In this case, all the generated
+files are produced with a single compiler invocation and depend on all the
+schemas\. As a result, it is easier to establish such a dependency manually,
+perhaps with the help of the \fB--file-list*\fR options\.
+.IP "\fB--generate-dep-only\fR"
+Generate \fBmake\fR dependency information only\.
+.IP "\fB--dep-phony\fR"
+Generate phony targets for included/imported schema files, causing each to
+depend on nothing\. Such dummy rules work around \fBmake\fR errors caused by
+the removal of schema files without also updating the dependency file to
+match\.
+.IP "\fB--dep-target\fR \fItarget\fR"
+Change the target of the dependency rule\. By default it contains all the
+generated C++ files as well as the dependency file itself, without any
+directory prefixes\. If you require multiple targets, then you can specify
+them as a single, space-separated argument or you can repeat this option
+multiple times\.
+.IP "\fB--dep-suffix\fR \fIsuffix\fR"
+Use \fIsuffix\fR instead of the default \fB\.d\fR to construct the name of the
+dependency file\. See also \fB--dep-file\fR\.
+.IP "\fB--dep-file\fR \fIpath\fR"
+Use \fIpath\fR as the generated dependency file path instead of deriving it
+from the input file name\. Write the dependency information to \fBstdout\fR if
+\fIpath\fR is \fB-\fR\. See also \fB--dep-regex\fR\.
+.IP "\fB--dep-regex\fR \fIregex\fR"
+Use the provided expression to construct the name of the dependency file\.
+\fIregex\fR is a Perl-like regular expression in the form
+\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. See also the REGEX
+AND SHELL QUOTING section below\.
+.IP "\fB--disable-warning\fR \fIwarn\fR"
+Disable printing warning with id \fIwarn\fR\. If \fBall\fR is specified for
+the warning id then all warnings are disabled\.
+.IP "\fB--options-file\fR \fIfile\fR"
+Read additional options from \fIfile\fR\. Each option should appearing on a
+separate line optionally followed by space and an option value\. Empty lines
+and lines starting with \fB#\fR are ignored\. Option values can be enclosed in
+double (\fB"\fR) or single (\fB'\fR) quotes to preserve leading and trailing
+whitespaces as well as to specify empty values\. If the value itself contains
+trailing or leading quotes, enclose it with an extra pair of quotes, for
+example \fB'"x"'\fR\. Non-leading and non-trailing quotes are interpreted as
+being part of the option value\.
+
+The semantics of providing options in a file is equivalent to providing the
+same set of options in the same order on the command line at the point where
+the \fB--options-file\fR option is specified except that the shell escaping
+and quoting is not required\. You can repeat this option to specify more than
+one options file\.
+.IP "\fB--show-sloc\fR"
+Show the number of generated physical source lines of code (SLOC)\.
+.IP "\fB--sloc-limit\fR \fInum\fR"
+Check that the number of generated physical source lines of code (SLOC) does
+not exceed \fInum\fR\.
+.IP "\fB--proprietary-license\fR"
+Indicate that the generated code is licensed under a proprietary license
+instead of the GPL\.
+.IP "\fB--custom-literals\fR \fIfile\fR"
+Load custom XML string to C++ literal mappings from \fIfile\fR\. This
+mechanism can be useful if you are using a custom character encoding and some
+of the strings in your schemas, for example element/attribute names or
+enumeration values, contain non-ASCII characters\. In this case you will need
+to provide a custom mapping to C++ literals for such strings\. The format of
+this file is specified in the \fBcustom-literals\.xsd\fR XML Schema file that
+can be found in the documentation directory\.
+.IP "\fB--preserve-anonymous\fR"
+Preserve anonymous types\. By default anonymous types are automatically named
+with names derived from the enclosing elements/attributes\. Because mappings
+implemented by this compiler require all types to be named, this option is
+only useful if you want to make sure your schemas don't have anonymous types\.
+.IP "\fB--show-anonymous\fR"
+Show elements and attributes that are of anonymous types\. This option only
+makes sense together with the \fB--preserve-anonymous\fR option\.
+.IP "\fB--anonymous-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to derive names for
+anonymous types from the enclosing attributes/elements\. \fIregex\fR is a
+Perl-like regular expression in the form
+\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any character can be
+used as a delimiter instead of '\fB/\fR'\. Escaping of the delimiter character
+in \fIpattern\fR or \fIreplacement\fR is not supported\.
+
+All the regular expressions are pushed into a stack with the last specified
+expression considered first\. The first match that succeeds is used\. Regular
+expressions are applied to a string in the form
+
+\fIfilename\fR \fInamespace\fR \fIxpath\fR\fR
+
+For instance:
+
+\fBhello\.xsd http://example\.com/hello element\fR
+
+\fBhello\.xsd http://example\.com/hello type/element\fR
+
+As an example, the following expression makes all the derived names start with
+capital letters\. This could be useful when your naming convention requires
+type names to start with capital letters:
+
+\fB%\.* \.* (\.+/)*(\.+)%\eu$2%\fR
+
+See also the REGEX AND SHELL QUOTING section below\.
+.IP "\fB--anonymous-regex-trace\fR"
+Trace the process of applying regular expressions specified with the
+\fB--anonymous-regex\fR option\. Use this option to find out why your regular
+expressions don't do what you expected them to do\.
+.IP "\fB--location-map\fR \fIol\fR=\fInl\fR"
+Map the original schema location \fIol\fR that is specified in the XML Schema
+include or import elements to new schema location \fInl\fR\. Repeat this
+option to map more than one schema location\. For example, the following
+option maps the \fBhttp://example\.com/foo\.xsd\fR URL to the \fBfoo\.xsd\fR
+local file\.
+
+\fB--location-map http://example\.com/foo\.xsd=foo\.xsd\fR
+.IP "\fB--location-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to map schema
+locations that are specified in the XML Schema include or import elements\.
+\fIregex\fR is a Perl-like regular expression in the form
+\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any character can be
+used as a delimiter instead of '\fB/\fR'\. Escaping of the delimiter character
+in \fIpattern\fR or \fIreplacement\fR is not supported\. All the regular
+expressions are pushed into a stack with the last specified expression
+considered first\. The first match that succeeds is used\.
+
+For example, the following expression maps URL locations in the form
+\fBhttp://example\.com/foo/bar\.xsd\fR to local files in the form
+\fBbar\.xsd\fR:
+
+\fB%http://\.+/(\.+)%$1%\fR
+
+See also the REGEX AND SHELL QUOTING section below\.
+.IP "\fB--location-regex-trace\fR"
+Trace the process of applying regular expressions specified with the
+\fB--location-regex\fR option\. Use this option to find out why your regular
+expressions don't do what you expected them to do\.
+.IP "\fB--file-per-type\fR"
+Generate a separate set of C++ files for each type defined in XML Schema\.
+Note that in this mode you only need to compile the root schema(s) and the
+code will be generated for all included and imported schemas\. This
+compilation mode is primarily useful when some of your schemas cannot be
+compiled separately or have cyclic dependencies which involve type
+inheritance\. Other options related to this mode are: \fB--type-file-regex\fR,
+\fB--schema-file-regex\fR, \fB--fat-type-file\fR, and \fB--file-list\fR\.
+.IP "\fB--type-file-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate type
+names to file names when the \fB--file-per-type\fR option is specified\.
+\fIregex\fR is a Perl-like regular expression in the form
+\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any character can be
+used as a delimiter instead of '\fB/\fR'\. Escaping of the delimiter character
+in \fIpattern\fR or \fIreplacement\fR is not supported\. All the regular
+expressions are pushed into a stack with the last specified expression
+considered first\. The first match that succeeds is used\. Regular expressions
+are applied to a string in the form
+
+\fInamespace\fR \fItype-name\fR\fR
+
+For example, the following expression maps type \fBfoo\fR that is defined in
+the \fBhttp://example\.com/bar\fR namespace to file name \fBbar-foo\fR:
+
+\fB%http://example\.com/(\.+) (\.+)%$1-$2%\fR
+
+See also the REGEX AND SHELL QUOTING section below\.
+.IP "\fB--type-file-regex-trace\fR"
+Trace the process of applying regular expressions specified with the
+\fB--type-file-regex\fR option\. Use this option to find out why your regular
+expressions don't do what you expected them to do\.
+.IP "\fB--schema-file-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate schema
+file names when the \fB--file-per-type\fR option is specified\. \fIregex\fR is
+a Perl-like regular expression in the form
+\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any character can be
+used as a delimiter instead of '\fB/\fR'\. Escaping of the delimiter character
+in \fIpattern\fR or \fIreplacement\fR is not supported\. All the regular
+expressions are pushed into a stack with the last specified expression
+considered first\. The first match that succeeds is used\. Regular Expressions
+are applied to the absolute filesystem path of a schema file and the result,
+including the directory part, if any, is used to derive the \fB#include\fR
+directive paths as well as the generated C++ file paths\. This option, along
+with \fB--type-file-regex\fR are primarily useful to place the generated files
+into subdirectories or to resolve file name conflicts\.
+
+For example, the following expression maps schema files in the
+\fBfoo/1\.0\.0/\fR subdirectory to the files in the \fBfoo/\fR subdirectory\.
+As a result, the \fB#include\fR directive paths for such schemas will be in
+the \fBfoo/schema\.hxx\fR form and the generated C++ files will be placed into
+the \fBfoo/\fR subdirectory:
+
+\fB%\.*/foo/1\.0\.0/(\.+)%foo/$1%\fR
+
+See also the REGEX AND SHELL QUOTING section below\.
+.IP "\fB--schema-file-regex-trace\fR"
+Trace the process of applying regular expressions specified with the
+\fB--schema-file-regex\fR option\. Use this option to find out why your
+regular expressions don't do what you expected them to do\.
+.IP "\fB--fat-type-file\fR"
+Generate code corresponding to global elements into type files instead of
+schema files when the \fB--type-file-regex\fR option is specified\. This
+option is primarily useful when trying to minimize the amount of object code
+that is linked to an executable by packaging compiled generated code into a
+static (archive) library\.
+.IP "\fB--file-list\fR \fIfile\fR"
+Write a list of generated C++ files to \fIfile\fR or to \fBstdout\fR if
+\fIfile\fR is \fB-\fR\. This option is primarily useful in the file-per-type
+compilation mode (\fB--file-per-type\fR) to create a list of generated C++
+files, for example, as a makefile fragment\.
+.IP "\fB--file-list-only\fR"
+Only write the list of C++ files that would be generated without actually
+generating them\. This option only makes sense together with
+\fB--file-list\fR\.
+.IP "\fB--file-list-prologue\fR \fItext\fR"
+Insert \fItext\fR at the beginning of the file list\. As a convenience, all
+occurrences of the \fB\en\fR character sequence in \fItext\fR are replaced
+with new lines\. This option can, for example, be used to assign the generated
+file list to a makefile variable\.
+.IP "\fB--file-list-epilogue\fR \fItext\fR"
+Insert \fItext\fR at the end of the file list\. As a convenience, all
+occurrences of the \fB\en\fR character sequence in \fItext\fR are replaced
+with new lines\.
+.IP "\fB--file-list-delim\fR \fItext\fR"
+Delimit file names written to the file list with \fItext\fR instead of new
+lines\. As a convenience, all occurrences of the \fB\en\fR character sequence
+in \fItext\fR are replaced with new lines\.
+.\"
+.\" C++/Tree options.
+.\"
+.SS cxx-tree command options
+.IP "\fB--generate-polymorphic\fR"
+Generate polymorphism-aware code\. Specify this option if you use substitution
+groups or \fBxsi:type\fR\. Use the \fB--polymorphic-type\fR or
+\fB--polymorphic-type-all\fR option to specify which type hierarchies are
+polymorphic\.
+.IP "\fB--polymorphic-type\fR \fItype\fR"
+Indicate that \fItype\fR is a root of a polymorphic type hierarchy\. The
+compiler can often automatically determine which types are polymorphic based
+on the substitution group declarations\. However, you may need to use this
+option if you are not using substitution groups or if substitution groups are
+defined in another schema\. You need to specify this option when compiling
+every schema file that references \fItype\fR\. The \fItype\fR argument is an
+XML Schema type name that can be optionally qualified with a namespace in the
+\fInamespace\fR\fB#\fR\fIname\fR\fR form\.
+.IP "\fB--polymorphic-type-all\fR"
+Indicate that all types should be treated as polymorphic\.
+.IP "\fB--polymorphic-plate\fR \fInum\fR"
+Specify the polymorphic map plate the generated code should register on\. This
+functionality is primarily useful to segregate multiple schemas that define
+the same polymorphic types\.
+.IP "\fB--ordered-type\fR \fItype\fR"
+Indicate that element order in \fItype\fR is significant\. An example would be
+a complex type with unbounded choice as a content model where the element
+order in XML has application-specific semantics\. For ordered types the
+compiler generates a special container data member and a corresponding set of
+accessors and modifiers that are used to capture the order of elements and,
+for mixed content, of text\.
+
+The \fItype\fR argument is an XML Schema type name that can be optionally
+qualified with a namespace in the \fInamespace\fR\fB#\fR\fIname\fR\fR form\.
+Note also that you will need to specify this option when compiling every
+schema file that has other ordered types derived from this type\.
+.IP "\fB--ordered-type-derived\fR"
+Automatically treat types derived from ordered bases as also ordered\. This is
+primarily useful if you would like to be able to iterate over the complete
+content using the content order container\.
+.IP "\fB--ordered-type-mixed\fR"
+Automatically treat complex types with mixed content as ordered\.
+.IP "\fB--ordered-type-all\fR"
+Indicate that element order in all types is significant\.
+.IP "\fB--order-container\fR \fItype\fR"
+Specify a custom class template that should be used as a container for the
+content order in ordered types instead of the default \fBstd::vector\fR\. See
+\fB--ordered-type\fR for more information on ordered type\. This option is
+primarily useful if you need to perform more complex lookups in the content
+order container, for example by element id\. In this case, a container like
+Boost multi-index may be more convenient\. Note that if using a custom
+container, you will also most likely need to include the relevant headers
+using the \fB--hxx-prologue*\fR options\.
+.IP "\fB--generate-serialization\fR"
+Generate serialization functions\. Serialization functions convert the object
+model back to XML\.
+.IP "\fB--generate-ostream\fR"
+Generate ostream insertion operators (\fBoperator<<\fR) for generated types\.
+This allows one to easily print a fragment or the whole object model for
+debugging or logging\.
+.IP "\fB--generate-doxygen\fR"
+Generate documentation comments suitable for extraction by the Doxygen
+documentation system\. Documentation from annotations is added to the comments
+if present in the schema\.
+.IP "\fB--generate-comparison\fR"
+Generate comparison operators (\fBoperator==\fR and \fBoperator!=\fR) for
+complex types\. Comparison is performed member-wise\.
+.IP "\fB--generate-default-ctor\fR"
+Generate default constructors even for types that have required members\.
+Required members of an instance constructed using such a constructor are not
+initialized and accessing them results in undefined behavior\.
+.IP "\fB--generate-from-base-ctor\fR"
+Generate constructors that expect an instance of a base type followed by all
+required members\.
+.IP "\fB--suppress-assignment\fR"
+Suppress the generation of copy assignment operators for complex types\. If
+this option is specified, the copy assignment operators for such types are
+declared private and left unimplemented\.
+.IP "\fB--generate-detach\fR"
+Generate detach functions for required elements and attributes\. Detach
+functions for optional and sequence cardinalities are provided by the
+respective containers\. These functions, for example, allow you to move
+sub-trees in the object model either within the same tree or between different
+trees\.
+.IP "\fB--generate-wildcard\fR"
+Generate accessors and modifiers as well as parsing and serialization code for
+XML Schema wildcards (\fBany\fR and \fBanyAttribute\fR)\. XML content matched
+by wildcards is presented as DOM fragments\. Note that you need to initialize
+the Xerces-C++ runtime if you are using this option\.
+.IP "\fB--generate-any-type\fR"
+Extract and store content of the XML Schema \fBanyType\fR type as a DOM
+fragment\. Note that you need to initialize the Xerces-C++ runtime if you are
+using this option\.
+.IP "\fB--generate-insertion\fR \fIos\fR"
+Generate data representation stream insertion operators for the \fIos\fR
+output stream type\. Repeat this option to specify more than one stream type\.
+The ACE CDR stream (\fBACE_OutputCDR\fR) and RPC XDR are recognized by the
+compiler and the necessary \fB#include\fR directives are automatically
+generated\. For custom stream types use the \fB--hxx-prologue*\fR options to
+provide the necessary declarations\.
+.IP "\fB--generate-extraction\fR \fIis\fR"
+Generate data representation stream extraction constructors for the \fIis\fR
+input stream type\. Repeat this option to specify more than one stream type\.
+The ACE CDR stream (\fBACE_InputCDR\fR) and RPC XDR are recognized by the
+compiler and the necessary \fB#include\fR directives are automatically
+generated\. For custom stream types use the \fB--hxx-prologue*\fR options to
+provide the necessary declarations\.
+.IP "\fB--generate-forward\fR"
+Generate a separate header file with forward declarations for the types being
+generated\.
+.IP "\fB--suppress-parsing\fR"
+Suppress the generation of the parsing functions and constructors\. Use this
+option to reduce the generated code size when parsing from XML is not needed\.
+.IP "\fB--generate-element-type\fR"
+Generate types instead of parsing and serialization functions for root
+elements\. This is primarily useful to distinguish object models with the same
+root type but with different root elements\.
+.IP "\fB--generate-element-map\fR"
+Generate a root element map that allows uniform parsing and serialization of
+multiple root elements\. This option is only valid together with
+\fB--generate-element-type\fR\.
+.IP "\fB--generate-intellisense\fR"
+Generate workarounds for IntelliSense bugs in Visual Studio 2005 (8\.0)\. When
+this option is used, the resulting code is slightly more verbose\.
+IntelliSense in Visual Studio 2008 (9\.0) and later does not require these
+workarounds\. Support for IntelliSense in Visual Studio 2003 (7\.1) is
+improved with this option but is still incomplete\.
+.IP "\fB--omit-default-attributes\fR"
+Omit attributes with default and fixed values from serialized XML documents\.
+.IP "\fB--type-naming\fR \fIstyle\fR"
+Specify the type naming convention that should be used in the generated code\.
+Valid styles are \fBknr\fR (default), \fBucc\fR, and \fBjava\fR\. See the
+NAMING CONVENTION section below for more information\.
+.IP "\fB--function-naming\fR \fIstyle\fR"
+Specify the function naming convention that should be used in the generated
+code\. Valid styles are \fBknr\fR (default), \fBlcc\fR, \fBucc\fR, and
+\fBjava\fR\. See the NAMING CONVENTION section below for more information\.
+.IP "\fB--type-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema type names to C++ type names\. See the NAMING CONVENTION section below
+for more information\.
+.IP "\fB--accessor-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema names of elements/attributes to C++ accessor function names\. See the
+NAMING CONVENTION section below for more information\.
+.IP "\fB--one-accessor-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality one to C++ accessor
+function names\. See the NAMING CONVENTION section below for more
+information\.
+.IP "\fB--opt-accessor-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality optional to C++ accessor
+function names\. See the NAMING CONVENTION section below for more
+information\.
+.IP "\fB--seq-accessor-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality sequence to C++ accessor
+function names\. See the NAMING CONVENTION section below for more
+information\.
+.IP "\fB--modifier-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema names of elements/attributes to C++ modifier function names\. See the
+NAMING CONVENTION section below for more information\.
+.IP "\fB--one-modifier-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality one to C++ modifier
+function names\. See the NAMING CONVENTION section below for more
+information\.
+.IP "\fB--opt-modifier-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality optional to C++ modifier
+function names\. See the NAMING CONVENTION section below for more
+information\.
+.IP "\fB--seq-modifier-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality sequence to C++ modifier
+function names\. See the NAMING CONVENTION section below for more
+information\.
+.IP "\fB--parser-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema element names to C++ parsing function names\. See the NAMING CONVENTION
+section below for more information\.
+.IP "\fB--serializer-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema element names to C++ serialization function names\. See the NAMING
+CONVENTION section below for more information\.
+.IP "\fB--const-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema-derived names to C++ constant names\. See the NAMING CONVENTION section
+below for more information\.
+.IP "\fB--enumerator-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema enumeration values to C++ enumerator names\. See the NAMING CONVENTION
+section below for more information\.
+.IP "\fB--element-type-regex\fR \fIregex\fR"
+Add \fIregex\fR to the list of regular expressions used to translate XML
+Schema element names to C++ element type names\. See the NAMING CONVENTION
+section below for more information\.
+.IP "\fB--name-regex-trace\fR"
+Trace the process of applying regular expressions specified with the name
+transformation options\. Use this option to find out why your regular
+expressions don't do what you expected them to do\.
+.IP "\fB--root-element-first\fR"
+Treat only the first global element as a document root\. By default all global
+elements are considered document roots\.
+.IP "\fB--root-element-last\fR"
+Treat only the last global element as a document root\. By default all global
+elements are considered document roots\.
+.IP "\fB--root-element-all\fR"
+Treat all global elements as document roots\. This is the default behavior\.
+By explicitly specifying this option you can suppress the warning that is
+issued if more than one global element is defined\.
+.IP "\fB--root-element-none\fR"
+Do not treat any global elements as document roots\. By default all global
+elements are considered document roots\.
+.IP "\fB--root-element\fR \fIelement\fR"
+Treat only \fIelement\fR as a document root\. Repeat this option to specify
+more than one root element\.
+.IP "\fB--custom-type\fR \fImap\fR"
+Use a custom C++ type instead of the generated class\. The \fImap\fR argument
+is in the form \fIname\fR[\fB=\fR\fItype\fR[\fB/\fR\fIbase\fR]]\fR, where
+\fIname\fR is a type name as defined in XML Schema and \fItype\fR is a C++
+type name that should be used instead\. If \fItype\fR is not present or empty
+then the custom type is assumed to have the same name and be defined in the
+same namespace as the generated class would have\. If \fIbase\fR is specified
+then the generated class is still generated but with that name\.
+.IP "\fB--custom-type-regex\fR \fIregex\fR"
+Use custom C++ types instead of the generated classes\. The \fIregex\fR
+argument is in the form
+\fB/\fR\fIname-pat\fR\fB/\fR[\fItype-sub\fR\fB/\fR[\fIbase-sub\fR\fB/\fR]]\fR,
+where \fIname-pat\fR is a regex pattern that will be matched against type
+names as defined in XML Schema and \fItype-sub\fR is a C++ type name
+substitution that should be used instead\. If \fItype-sub\fR is not present or
+its substitution results in an empty string then the custom type is assumed to
+have the same name and be defined in the same namespace as the generated class
+would have\. If \fIbase-sub\fR is present and its substitution results in a
+non-empty string then the generated class is still generated but with the
+result of this substitution as its name\. The pattern and substitutions are in
+the Perl regular expression format\. See also the REGEX AND SHELL QUOTING
+section below\.
+.IP "\fB--parts\fR \fInum\fR"
+Split generated source code into \fInum\fR parts\. This is useful when
+translating large, monolithic schemas and a C++ compiler is not able to
+compile the resulting source code at once (usually due to insufficient
+memory)\.
+.IP "\fB--parts-suffix\fR \fIsuffix\fR"
+Use \fIsuffix\fR instead of the default '\fB-\fR' to separate the file name
+from the part number\.
+\"
+\" C++/Parser
+\"
+.SS cxx-parser command options
+.IP "\fB--type-map\fR \fImapfile\fR"
+Read XML Schema to C++ type mapping information from \fImapfile\fR\. Repeat
+this option to specify several type maps\. Type maps are considered in order
+of appearance and the first match is used\. By default all user-defined types
+are mapped to \fBvoid\fR\. See the TYPE MAP section below for more
+information\.
+.IP "\fB--xml-parser\fR \fIparser\fR"
+Use \fIparser\fR as the underlying XML parser\. Valid values are \fBxerces\fR
+for Xerces-C++ (default) and \fBexpat\fR for Expat\.
+.IP "\fB--generate-validation\fR"
+Generate validation code\. The validation code ("perfect parser") ensures that
+instance documents conform to the schema\. Validation code is generated by
+default when the selected underlying XML parser is non-validating
+(\fBexpat\fR)\.
+.IP "\fB--suppress-validation\fR"
+Suppress the generation of validation code\. Validation is suppressed by
+default when the selected underlying XML parser is validating (\fBxerces\fR)\.
+.IP "\fB--generate-polymorphic\fR"
+Generate polymorphism-aware code\. Specify this option if you use substitution
+groups or \fBxsi:type\fR\.
+.IP "\fB--generate-noop-impl\fR"
+Generate a sample parser implementation that does nothing (no operation)\. The
+sample implementation can then be filled with the application-specific code\.
+For an input file in the form \fBname\.xsd\fR this option triggers the
+generation of two additional C++ files in the form: \fBname-pimpl\.hxx\fR
+(parser implementation header file) and \fBname-pimpl\.cxx\fR (parser
+implementation source file)\.
+.IP "\fB--generate-print-impl\fR"
+Generate a sample parser implementation that prints the XML data to
+STDOUT\fR\. For an input file in the form \fBname\.xsd\fR this option triggers
+the generation of two additional C++ files in the form: \fBname-pimpl\.hxx\fR
+(parser implementation header file) and \fBname-pimpl\.cxx\fR (parser
+implementation source file)\.
+.IP "\fB--generate-test-driver\fR"
+Generate a test driver for the sample parser implementation\. For an input
+file in the form \fBname\.xsd\fR this option triggers the generation of an
+additional C++ file in the form \fBname-driver\.cxx\fR\.
+.IP "\fB--force-overwrite\fR"
+Force overwriting of the existing implementation and test driver files\. Use
+this option only if you do not mind loosing the changes you have made in the
+sample implementation or test driver files\.
+.IP "\fB--root-element-first\fR"
+Indicate that the first global element is the document root\. This information
+is used to generate the test driver for the sample implementation\.
+.IP "\fB--root-element-last\fR"
+Indicate that the last global element is the document root\. This information
+is used to generate the test driver for the sample implementation\.
+.IP "\fB--root-element\fR \fIelement\fR"
+Indicate that \fIelement\fR is the document root\. This information is used to
+generate the test driver for the sample implementation\.
+.IP "\fB--skel-type-suffix\fR \fIsuffix\fR"
+Use the provided \fIsuffix\fR instead of the default \fB_pskel\fR to construct
+the names of the generated parser skeletons\.
+.IP "\fB--skel-file-suffix\fR \fIsuffix\fR"
+Use the provided \fIsuffix\fR instead of the default \fB-pskel\fR to construct
+the names of the generated parser skeleton files\.
+.IP "\fB--impl-type-suffix\fR \fIsuffix\fR"
+Use the provided \fIsuffix\fR instead of the default \fB_pimpl\fR to construct
+the names of the parser implementations for the built-in XML Schema types as
+well as sample parser implementations\.
+.IP "\fB--impl-file-suffix\fR \fIsuffix\fR"
+Use the provided \fIsuffix\fR instead of the default \fB-pimpl\fR to construct
+the names of the generated sample parser implementation files\.
+\"
+\" NAMING CONVENTION
+\"
+
+.SH NAMING CONVENTION
+The compiler can be instructed to use a particular naming convention in
+the generated code. A number of widely-used conventions can be selected
+using the
+.B --type-naming
+and
+.B --function-naming
+options. A custom naming convention can be achieved using the
+.BR --type-regex ,
+.BR --accessor-regex ,
+.BR --one-accessor-regex ,
+.BR --opt-accessor-regex ,
+.BR --seq-accessor-regex ,
+.BR --modifier-regex ,
+.BR --one-modifier-regex ,
+.BR --opt-modifier-regex ,
+.BR --seq-modifier-regex ,
+.BR --parser-regex ,
+.BR --serializer-regex ,
+.BR --const-regex ,
+.BR --enumerator-regex ,
+and
+.B --element-type-regex
+options.
+
+The
+.B --type-naming
+option specifies the convention that should be used for naming C++ types.
+Possible values for this option are
+.B knr
+(default),
+.BR ucc ,
+and
+.BR java .
+The
+.B knr
+value (stands for K&R) signifies the standard, lower-case naming convention
+with the underscore used as a word delimiter, for example: foo, foo_bar.
+The
+.B ucc
+(stands for upper-camel-case) and
+.B java
+values a synonyms for the same naming convention where the first letter
+of each word in the name is capitalized, for example: Foo, FooBar.
+
+Similarly, the
+.B --function-naming
+option specifies the convention that should be used for naming C++ functions.
+Possible values for this option are
+.B knr
+(default),
+.BR lcc ,
+and
+.BR java .
+The
+.B knr
+value (stands for K&R) signifies the standard, lower-case naming convention
+with the underscore used as a word delimiter, for example: foo(), foo_bar().
+The
+.B lcc
+value (stands for lower-camel-case) signifies a naming convention where the
+first letter of each word except the first is capitalized, for example: foo(),
+fooBar(). The
+.B ucc
+value (stands for upper-camel-case) signifies a naming convention where the
+first letter of each word is capitalized, for example: Foo(), FooBar(). The
+.B java
+naming convention is similar to the lower-camel-case one except that accessor
+functions are prefixed with get, modifier functions are prefixed with set,
+parsing functions are prefixed with parse, and serialization functions are
+prefixed with serialize, for example: getFoo(), setFooBar(), parseRoot(),
+serializeRoot().
+
+Note that the naming conventions specified with the
+.B --type-naming
+and
+.B --function-naming
+options perform only limited transformations on the
+names that come from the schema in the form of type, attribute, and element
+names. In other words, to get consistent results, your schemas should follow
+a similar naming convention as the one you would like to have in the generated
+code. Alternatively, you can use the
+.B --*-regex
+options (discussed below) to perform further transformations on the names
+that come from the schema.
+
+The
+.BR --type-regex ,
+.BR --accessor-regex ,
+.BR --one-accessor-regex ,
+.BR --opt-accessor-regex ,
+.BR --seq-accessor-regex ,
+.BR --modifier-regex ,
+.BR --one-modifier-regex ,
+.BR --opt-modifier-regex ,
+.BR --seq-modifier-regex ,
+.BR --parser-regex ,
+.BR --serializer-regex ,
+.BR --const-regex ,
+.BR --enumerator-regex ,
+and
+.B --element-type-regex
+options allow you to specify extra regular expressions for each name
+category in addition to the predefined set that is added depending on
+the
+.B --type-naming
+and
+.B --function-naming
+options. Expressions that are provided with the
+.B --*-regex
+options are evaluated prior to any predefined expressions. This allows
+you to selectively override some or all of the predefined transformations.
+When debugging your own expressions, it is often useful to see which
+expressions match which names. The
+.B --name-regex-trace
+option allows you to trace the process of applying
+regular expressions to names.
+
+The value for the
+.B --*-regex
+options should be a perl-like regular expression in the form
+.BI / pattern / replacement /\fR.
+Any character can be used as a delimiter instead of
+.BR / .
+Escaping of the delimiter character in
+.I pattern
+or
+.I replacement
+is not supported. All the regular expressions for each category are pushed
+into a category-specific stack with the last specified expression
+considered first. The first match that succeeds is used. For the
+.B --one-accessor-regex
+(accessors with cardinality one),
+.B --opt-accessor-regex
+(accessors with cardinality optional), and
+.B --seq-accessor-regex
+(accessors with cardinality sequence) categories the
+.B --accessor-regex
+expressions are used as a fallback. For the
+.BR --one-modifier-regex ,
+.BR --opt-modifier-regex ,
+and
+.B --seq-modifier-regex
+categories the
+.B --modifier-regex
+expressions are used as a fallback. For the
+.B --element-type-regex
+category the
+.B --type-regex
+expressions are used as a fallback.
+
+The type name expressions
+.RB ( --type-regex )
+are evaluated on the name string that has the following format:
+
+[\fInamespace \fR]\fIname\fR[\fB,\fIname\fR][\fB,\fIname\fR][\fB,\fIname\fR]
+
+The element type name expressions
+.RB ( --element-type-regex ),
+effective only when the
+.B --generate-element-type
+option is specified, are evaluated on the name string that has the following
+format:
+
+.I namespace name
+
+In the type name format the
+.I namespace
+part followed by a space is only present for global type names. For global
+types and elements defined in schemas without a target namespace, the
+.I namespace
+part is empty but the space is still present. In the type name format after
+the initial
+.I name
+component, up to three additional
+.I name
+components can be present, separated by commas. For example:
+
+.B http://example.com/hello type
+
+.B foo
+
+.B foo,iterator
+
+.B foo,const,iterator
+
+The following set of predefined regular expressions is used to transform
+type names when the upper-camel-case naming convention is selected:
+
+.B /(?:[^ ]* )?([^,]+)/\\\\u$1/
+
+.B /(?:[^ ]* )?([^,]+),([^,]+)/\\\\u$1\\\\u$2/
+
+.B /(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\\\\u$1\\\\u$2\\\\u$3/
+
+.B /(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\\\\u$1\\\\u$2\\\\u$3\\\\u$4/
+
+The accessor and modifier expressions
+.RB ( --*accessor-regex
+and
+.BR --*modifier-regex )
+are evaluated on the name string that has the following format:
+
+\fIname\fR[\fB,\fIname\fR][\fB,\fIname\fR]
+
+After the initial
+.I name
+component, up to two additional
+.I name
+components can be present, separated by commas. For example:
+
+.B foo
+
+.B dom,document
+
+.B foo,default,value
+
+The following set of predefined regular expressions is used to transform
+accessor names when the
+.B java
+naming convention is selected:
+
+.B /([^,]+)/get\\\\u$1/
+
+.B /([^,]+),([^,]+)/get\\\\u$1\\\\u$2/
+
+.B /([^,]+),([^,]+),([^,]+)/get\\\\u$1\\\\u$2\\\\u$3/
+
+For the parser, serializer, and enumerator categories, the corresponding
+regular expressions are evaluated on local names of elements and on
+enumeration values, respectively. For example, the following predefined
+regular expression is used to transform parsing function names when the
+.B java
+naming convention is selected:
+
+.B /(.+)/parse\\\\u$1/
+
+The const category is used to create C++ constant names for the
+element/wildcard/text content ids in ordered types.
+
+See also the REGEX AND SHELL QUOTING section below.
+
+\"
+\" TYPE MAP
+\"
+.SH TYPE MAP
+Type map files are used in C++/Parser to define a mapping between XML
+Schema and C++ types. The compiler uses this information to determine
+the return types of
+.B post_*
+functions in parser skeletons corresponding to XML Schema types
+as well as argument types for callbacks corresponding to elements
+and attributes of these types.
+
+The compiler has a set of predefined mapping rules that map built-in
+XML Schema types to suitable C++ types (discussed below) and all
+other types to
+.BR void .
+By providing your own type maps you can override these predefined rules.
+The format of the type map file is presented below:
+
+.RS
+.B namespace
+.I schema-namespace
+[
+.I cxx-namespace
+]
+.br
+.B {
+.br
+ (
+.B include
+.IB file-name ;
+)*
+.br
+ ([
+.B type
+]
+.I schema-type cxx-ret-type
+[
+.I cxx-arg-type
+.RB ] ;
+)*
+.br
+.B }
+.br
+.RE
+
+Both
+.I schema-namespace
+and
+.I schema-type
+are regex patterns while
+.IR cxx-namespace ,
+.IR cxx-ret-type ,
+and
+.I cxx-arg-type
+are regex pattern substitutions. All names can be optionally enclosed
+in \fR" "\fR, for example, to include white-spaces.
+
+.I schema-namespace
+determines XML Schema namespace. Optional
+.I cxx-namespace
+is prefixed to every C++ type name in this namespace declaration.
+.I cxx-ret-type
+is a C++ type name that is used as a return type for the
+.B post_*
+functions. Optional
+.I cxx-arg-type
+is an argument type for callback functions corresponding to elements and
+attributes of this type. If
+.I cxx-arg-type
+is not specified, it defaults to
+.I cxx-ret-type
+if
+.I cxx-ret-type
+ends with
+.B *
+or
+.B &
+(that is, it is a pointer or a reference) and
+.B const
+\fIcxx-ret-type\fB&\fR otherwise.
+.I file-name
+is a file name either in the \fR" "\fR or < > format and is added with the
+.B #include
+directive to the generated code.
+
+The \fB#\fR character starts a comment that ends with a new line or end of
+file. To specify a name that contains \fB#\fR enclose it in \fR" "\fR. For
+example:
+
+.RS
+namespace http://www.example.com/xmlns/my my
+.br
+{
+.br
+ include "my.hxx";
+.br
+
+ # Pass apples by value.
+ #
+ apple apple;
+.br
+
+ # Pass oranges as pointers.
+ #
+ orange orange_t*;
+.br
+}
+.br
+.RE
+
+In the example above, for the
+.B http://www.example.com/xmlns/my#orange
+XML Schema type, the
+.B my::orange_t*
+C++ type will be used as both return and argument types.
+
+Several namespace declarations can be specified in a single file.
+The namespace declaration can also be completely omitted to map
+types in a schema without a namespace. For instance:
+
+.RS
+include "my.hxx";
+.br
+apple apple;
+.br
+
+namespace http://www.example.com/xmlns/my
+.br
+{
+.br
+ orange "const orange_t*";
+.br
+}
+.br
+.RE
+
+The compiler has a number of predefined mapping rules that can be
+presented as the following map files. The string-based XML Schema
+built-in types are mapped to either
+.B std::string
+or
+.B std::wstring
+depending on the character type selected with the
+.B --char-type
+option
+.RB ( char
+by default). The binary XML Schema types are mapped to either
+.B std::unique_ptr<xml_schema::buffer>
+or
+.B std::auto_ptr<xml_schema::buffer>
+depending on the C++ standard selected with the
+.B --std
+option
+.RB ( c++11
+by default).
+
+.RS
+namespace http://www.w3.org/2001/XMLSchema
+.br
+{
+.br
+ boolean bool bool;
+.br
+
+ byte "signed char" "signed char";
+.br
+ unsignedByte "unsigned char" "unsigned char";
+.br
+
+ short short short;
+.br
+ unsignedShort "unsigned short" "unsigned short";
+.br
+
+ int int int;
+.br
+ unsignedInt "unsigned int" "unsigned int";
+.br
+
+ long "long long" "long long";
+.br
+ unsignedLong "unsigned long long" "unsigned long long";
+.br
+
+ integer "long long" "long long";
+.br
+
+ negativeInteger "long long" "long long";
+.br
+ nonPositiveInteger "long long" "long long";
+.br
+
+ positiveInteger "unsigned long long" "unsigned long long";
+.br
+ nonNegativeInteger "unsigned long long" "unsigned long long";
+.br
+
+ float float float;
+.br
+ double double double;
+.br
+ decimal double double;
+.br
+
+ string std::string;
+.br
+ normalizedString std::string;
+.br
+ token std::string;
+.br
+ Name std::string;
+.br
+ NMTOKEN std::string;
+.br
+ NCName std::string;
+.br
+ ID std::string;
+.br
+ IDREF std::string;
+.br
+ language std::string;
+.br
+ anyURI std::string;
+.br
+
+ NMTOKENS xml_schema::string_sequence;
+.br
+ IDREFS xml_schema::string_sequence;
+.br
+
+ QName xml_schema::qname;
+.br
+
+ base64Binary std::[unique|auto]_ptr<xml_schema::buffer>
+.br
+ std::[unique|auto]_ptr<xml_schema::buffer>;
+.br
+ hexBinary std::[unique|auto]_ptr<xml_schema::buffer>
+.br
+ std::[unique|auto]_ptr<xml_schema::buffer>;
+.br
+
+ date xml_schema::date;
+.br
+ dateTime xml_schema::date_time;
+.br
+ duration xml_schema::duration;
+.br
+ gDay xml_schema::gday;
+.br
+ gMonth xml_schema::gmonth;
+.br
+ gMonthDay xml_schema::gmonth_day;
+.br
+ gYear xml_schema::gyear;
+.br
+ gYearMonth xml_schema::gyear_month;
+.br
+ time xml_schema::time;
+.br
+}
+.br
+.RE
+
+
+The last predefined rule maps anything that wasn't mapped by previous
+rules to
+.BR void :
+
+.RS
+namespace .*
+.br
+{
+.br
+ .* void void;
+.br
+}
+.br
+.RE
+
+When you provide your own type maps with the
+.B --type-map
+option, they are evaluated first. This allows you to selectively override
+predefined rules.
+
+.\"
+.\" REGEX AND SHELL QUOTING
+.\"
+.SH REGEX AND SHELL QUOTING
+When entering a regular expression argument in the shell command line
+it is often necessary to use quoting (enclosing the argument in " "
+or ' ') in order to prevent the shell from interpreting certain
+characters, for example, spaces as argument separators and $ as
+variable expansions.
+
+Unfortunately it is hard to achieve this in a manner that is portable
+across POSIX shells, such as those found on GNU/Linux and UNIX, and
+Windows shell. For example, if you use " " for quoting you will get
+a wrong result with POSIX shells if your expression contains $. The
+standard way of dealing with this on POSIX systems is to use ' '
+instead. Unfortunately, Windows shell does not remove ' ' from
+arguments when they are passed to applications. As a result you may
+have to use ' ' for POSIX and " " for Windows ($ is not treated as
+a special character on Windows).
+
+Alternatively, you can save regular expression options into a file,
+one option per line, and use this file with the
+.B --options-file
+option. With this approach you don't need to worry about shell quoting.
+
+.\"
+.\" DIAGNOSTICS
+.\"
+.SH DIAGNOSTICS
+If the input file is not a valid W3C XML Schema definition,
+.B xsd
+will issue diagnostic messages to
+.B STDERR
+and exit with non-zero exit code.
+.SH BUGS
+Send bug reports to the xsd-users@codesynthesis.com mailing list.
+.SH COPYRIGHT
+Copyright (c) 2005-2023 Code Synthesis.
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.2; with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. Copy of the license can be obtained from
+https://www.codesynthesis.com/licenses/fdl-1.2.txt
diff --git a/doc/pregenerated/xsd.xhtml b/doc/pregenerated/xsd.xhtml
new file mode 100644
index 0000000..26aa3e4
--- /dev/null
+++ b/doc/pregenerated/xsd.xhtml
@@ -0,0 +1,1621 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+ <title>XSD 4.2.0 Compiler Command Line Manual</title>
+
+ <meta name="version" content="4.2.0"/>
+ <meta name="copyright" content="&#169; 2005-2023 Code Synthesis"/>
+ <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,code,generator,manual,man,page"/>
+ <meta name="description" content="XSD Compiler Command Line Manual"/>
+
+ <link rel="stylesheet" type="text/css" href="default.css" />
+
+<style type="text/css">
+
+ #synopsis {
+ list-style-type: none;
+ }
+
+ #synopsis li {
+ padding-top : 0.0em;
+ padding-bottom : 0.0em;
+ }
+
+ #commands dt {
+ padding-top : 0.4em;
+ }
+
+ #commands dd {
+ padding-bottom : 0.4em;
+ padding-left : 2em;
+ }
+
+ .options {
+ margin: 1em 0 1em 0;
+ }
+
+ .options dt {
+ margin: 1em 0 0 0;
+ }
+
+ .options dd {
+ margin: .1em 0 0 4.5em;
+ }
+
+</style>
+</head>
+
+<body>
+<div id="container">
+ <div id="content">
+
+ <h1>NAME</h1>
+
+ <p>xsd - W3C XML Schema to C++ Compiler</p>
+
+ <h1>SYNOPSIS</h1>
+
+ <dl id="synopsis">
+ <dt><code><b>xsd</b> <i>command</i> [<i>options</i>] <i>file</i> [<i>file</i> ...]</code></dt>
+ <dt><code><b>xsd help</b> [<i>command</i>]</code></dt>
+ <dt><code><b>xsd version</b></code></dt>
+ </dl>
+
+ <h1>DESCRIPTION</h1>
+
+ <p><code><b>xsd</b></code> generates vocabulary-specific, statically-typed
+ C++ mapping from W3C XML Schema definitions. Particular mapping to
+ produce is selected by a <code><i>command</i></code>. Each mapping has
+ a number of mapping-specific <code><i>options</i></code> that should
+ appear, if any, after the <code><i>command</i></code>. Input files should
+ be W3C XML Schema definitions. The exact set of the generated files depends
+ on the selected mapping and options.</p>
+
+ <h1>COMMANDS</h1>
+
+ <dl id="commands">
+ <dt><code><b>cxx-tree</b></code></dt>
+ <dd>Generate the C++/Tree mapping. For each input file in the form
+ <code><b>name.xsd</b></code> the following C++ files are generated:
+ <code><b>name.hxx</b></code> (header file),
+ <code><b>name.ixx</b></code> (inline file, generated only if the
+ <code><b>--generate-inline</b></code> option is specified),
+ <code><b>name.cxx</b></code> (source file), and
+ <code><b>name-fwd.hxx</b></code> (forward declaration file, generated
+ only if the <code><b>--generate-forward</b></code> option is
+ specified).</dd>
+
+ <dt><code><b>cxx-parser</b></code></dt>
+ <dd>Generate the C++/Parser mapping. For each input file in the form
+ <code><b>name.xsd</b></code> the following C++ files are generated:
+ <code><b>name-pskel.hxx</b></code> (parser skeleton header file),
+ <code><b>name-pskel.ixx</b></code> (parser skeleton inline file,
+ generated only if the <code><b>--generate-inline</b></code>
+ option is specified), and
+ <code><b>name-pskel.cxx</b></code> (parser skeleton source file).
+ If the <code><b>--generate-noop-impl</b></code> or
+ <code><b>--generate-print-impl</b></code> option is specified,
+ the following additional sample implementation files are generated:
+ <code><b>name-pimpl.hxx</b></code> (parser implementation header
+ file) and
+ <code><b>name-pimpl.cxx</b></code> (parser implementation source
+ file). If the <code><b>--generate-test-driver</b></code> option
+ is specified, the additional <code><b>name-driver.cxx</b></code>
+ test driver file is generated.</dd>
+
+ <dt><code><b>help</b></code></dt>
+ <dd>Print usage information and exit. Use
+ <p><code><b>xsd help</b> <i>command</i></code></p>
+ for command-specific help.
+ </dd>
+
+ <dt><code><b>version</b></code></dt>
+ <dd>Print version and exit.</dd>
+ </dl>
+
+ <h1>OPTIONS</h1>
+
+ <p>Command-specific <code><i>options</i></code>, if any, should appear
+ after the corresponding <code><i>command</i></code>.</p>
+
+ <h2>COMMON OPTIONS</h2>
+ <dl class="options">
+ <dt><code><b>--std</b></code> <code><i>version</i></code></dt>
+ <dd>Specify the C++ standard that the generated code should conform to.
+ Valid values are <code><b>c++98</b></code>, <code><b>c++11</b></code>
+ (default), <code><b>c++14</b></code>, <code><b>c++17</b></code>,
+ <code><b>c++20</b></code>, and <code><b>c++23</b></code>.
+
+ <p>The C++ standard affects various aspects of the generated code that are
+ discussed in more detail in various mapping-specific documentation.
+ Overall, when C++11 is selected, the generated code relies on the move
+ semantics and uses <code><b>std::unique_ptr</b></code> instead of
+ deprecated <code><b>std::auto_ptr</b></code>. Currently, there is no
+ difference between the C++11 and the later standards modes.</p>
+
+ <p>When the C++11 mode is selected, you normally don't need to perform any
+ extra steps other than enable C++11 in your C++ compiler, if required. The
+ XSD compiler will automatically add the necessary macro defines to the
+ generated header files that will switch the header-only XSD runtime
+ library (<code><b>libxsd</b></code>) to the C++11 mode. However, if you
+ include any of the XSD runtime headers directly in your application
+ (normally you just include the generated headers), then you will need to
+ define the <code><b>XSD_CXX11</b></code> macro for your entire
+ project.</p></dd>
+
+ <dt><code><b>--char-type</b></code> <code><i>type</i></code></dt>
+ <dd>Generate code using the provided character <code><i>type</i></code>
+ instead of the default <code><b>char</b></code>. Valid values are
+ <code><b>char</b></code> and <code><b>wchar_t</b></code>.</dd>
+
+ <dt><code><b>--char-encoding</b></code> <code><i>enc</i></code></dt>
+ <dd>Specify the character encoding that should be used in the generated
+ code. Valid values for the <code><b>char</b></code> character type are
+ <code><b>utf8</b></code> (default), <code><b>iso8859-1</b></code>,
+ <code><b>lcp</b></code> (Xerces-C++ local code page), and
+ <code><b>custom</b></code>. If you pass <code><b>custom</b></code> as the
+ value then you will need to include the transcoder implementation header
+ for your encoding at the beginning of the generated header files (see the
+ <code><b>--hxx-prologue</b></code> option).
+
+ <p>For the <code><b>wchar_t</b></code> character type the only valid value
+ is <code><b>auto</b></code> and the encoding is automatically selected
+ between UTF-16 and UTF-32/UCS-4, depending on the
+ <code><b>wchar_t</b></code> type size.</p></dd>
+
+ <dt><code><b>--output-dir</b></code> <code><i>dir</i></code></dt>
+ <dd>Write generated files to <code><i>dir</i></code> instead of the
+ current directory.</dd>
+
+ <dt><code><b>--generate-inline</b></code></dt>
+ <dd>Generate simple functions inline. This option triggers creation of the
+ inline file.</dd>
+
+ <dt><code><b>--generate-xml-schema</b></code></dt>
+ <dd>Generate a C++ header file as if the schema being compiled defines the
+ XML Schema namespace. For the C++/Tree mapping, the resulting file will
+ contain definitions for all XML Schema built-in types. For the C++/Parser
+ mapping, the resulting file will contain definitions for all the parser
+ skeletons and implementations corresponding to the XML Schema built-in
+ types.
+
+ <p>The schema file provided to the compiler need not exist and is only
+ used to derive the name of the resulting header file. Use the
+ <code><b>--extern-xml-schema</b></code> option to include this file in the
+ generated files for other schemas.</p></dd>
+
+ <dt><code><b>--extern-xml-schema</b></code> <code><i>file</i></code></dt>
+ <dd>Include a header file derived from <code><i>file</i></code> instead of
+ generating the XML Schema namespace mapping inline. The provided file need
+ not exist and is only used to derive the name of the included header file.
+ Use the <code><b>--generate-xml-schema</b></code> option to generate this
+ header file.</dd>
+
+ <dt><code><b>--namespace-map</b></code> <code><i>xns</i></code>=<code><i>cns</i></code></dt>
+ <dd>Map XML Schema namespace <code><i>xns</i></code> to C++ namespace
+ <code><i>cns</i></code>. Repeat this option to specify mapping for more
+ than one XML Schema namespace. For example, the following option:
+
+ <p class="code"><code><b>--namespace-map
+ http://example.com/foo/bar=foo::bar</b></code></p>
+
+ <p>Will map the <code><b>http://example.com/foo/bar</b></code> XML Schema
+ namespace to the <code><b>foo::bar</b></code> C++ namespace.</p></dd>
+
+ <dt><code><b>--namespace-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema namespace names to C++ namespace names.
+ <code><i>regex</i></code> is a Perl-like regular expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
+ character can be used as a delimiter instead of '<code><b>/</b></code>'.
+ Escaping of the delimiter character in <code><i>pattern</i></code> or
+ <code><i>replacement</i></code> is not supported.
+
+ <p>All the regular expressions are pushed into a stack with the last
+ specified expression considered first. The first match that succeeds is
+ used. Regular expressions are applied to a string in the form</p>
+
+ <p class="code"><code><i>filename</i> <i>namespace</i></code></p>
+
+ <p>For example, if you have file <code><b>hello.xsd</b></code> with
+ namespace <code><b>http://example.com/hello</b></code> and you run
+ <code><b>xsd</b></code> on this file, then the string in question will
+ be:</p>
+
+ <p class="code"><code><b>hello.xsd.
+ http://example.com/hello</b></code></p>
+
+ <p>For the built-in XML Schema namespace the string is:</p>
+
+ <p class="code"><code><b>XMLSchema.xsd
+ http://www.w3.org/2001/XMLSchema</b></code></p>
+
+ <p>The following three steps are performed for each regular expression
+ until the match is found:</p>
+
+ <p>1. The expression is applied and if the result is empty the next
+ expression is considered.</p>
+
+ <p>2. All '<code><b>/</b></code>' are replaced with
+ '<code><b>::</b></code>'.</p>
+
+ <p>3. The result is verified to be a valid C++ scope name (e.g.,
+ <code><b>foo::bar</b></code>). If this test succeeds, the result is used
+ as a C++ namespace name.</p>
+
+ <p>As an example, the following expression maps XML Schema namespaces in
+ the form <code><b>http://example.com/foo/bar</b></code> to C++ namespaces
+ in the form <code><b>foo::bar</b></code>:</p>
+
+ <p class="code"><code><b>%.* http://example.com/(.+)%$1%</b></code></p>
+
+ <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
+
+ <dt><code><b>--namespace-regex-trace</b></code></dt>
+ <dd>Trace the process of applying regular expressions specified with the
+ <code><b>--namespace-regex</b></code> option. Use this option to find out
+ why your regular expressions don't do what you expected them to do.</dd>
+
+ <dt><code><b>--reserved-name</b></code> <code><i>n</i></code>[=<code><i>r</i></code>]</dt>
+ <dd>Add name <code><i>n</i></code> to the list of names that should not be
+ used as identifiers. The name can optionally be followed by
+ <code><b>=</b></code> and the replacement name <code><i>r</i></code> that
+ should be used instead. All the C++ keywords are already in this
+ list.</dd>
+
+ <dt><code><b>--include-with-brackets</b></code></dt>
+ <dd>Use angle brackets (&lt;>) instead of quotes ("") in generated
+ <code><b>#include</b></code> directives.</dd>
+
+ <dt><code><b>--include-prefix</b></code> <code><i>prefix</i></code></dt>
+ <dd>Add <code><i>prefix</i></code> to generated
+ <code><b>#include</b></code> directive paths.
+
+ <p>For example, if you had the following import element in your schema</p>
+
+ <p class="code"><code><b>&lt;import namespace="..."
+ schemaLocation="base.xsd"/></b></code></p>
+
+ <p>and compiled this fragment with <code><b>--include-prefix
+ schemas/</b></code>, then the include directive in the generated code
+ would be:</p>
+
+ <p class="code"><code><b>#include "schemas/base.hxx"</b></code></p></dd>
+
+ <dt><code><b>--include-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to transform <code><b>#include</b></code> directive paths.
+ <code><i>regex</i></code> is a Perl-like regular expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
+ character can be used as a delimiter instead of '<code><b>/</b></code>'.
+ Escaping of the delimiter character in <code><i>pattern</i></code> or
+ <code><i>replacement</i></code> is not supported.
+
+ <p>All the regular expressions are pushed into a stack with the last
+ specified expression considered first. The first match that succeeds is
+ used.</p>
+
+ <p>As an example, the following expression transforms paths in the form
+ <code><b>schemas/foo/bar</b></code> to paths in the form
+ <code><b>generated/foo/bar</b></code>:</p>
+
+ <p class="code"><code><b>%schemas/(.+)%generated/$1%</b></code></p>
+
+ <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
+
+ <dt><code><b>--include-regex-trace</b></code></dt>
+ <dd>Trace the process of applying regular expressions specified with the
+ <code><b>--include-regex</b></code> option. Use this option to find out
+ why your regular expressions don't do what you expected them to do.</dd>
+
+ <dt><code><b>--guard-prefix</b></code> <code><i>prefix</i></code></dt>
+ <dd>Add <code><i>prefix</i></code> to generated header inclusion guards.
+ The prefix is transformed to upper case and characters that are illegal in
+ a preprocessor macro name are replaced with underscores. If this option is
+ not specified then the directory part of the input schema file is used as
+ a prefix.</dd>
+
+ <dt><code><b>--hxx-suffix</b></code> <code><i>suffix</i></code></dt>
+ <dd>Use the provided <code><i>suffix</i></code> instead of the default
+ <code><b>.hxx</b></code> to construct the name of the header file. Note
+ that this suffix is also used to construct names of header files
+ corresponding to included/imported schemas.</dd>
+
+ <dt><code><b>--ixx-suffix</b></code> <code><i>suffix</i></code></dt>
+ <dd>Use the provided <code><i>suffix</i></code> instead of the default
+ <code><b>.ixx</b></code> to construct the name of the inline file.</dd>
+
+ <dt><code><b>--cxx-suffix</b></code> <code><i>suffix</i></code></dt>
+ <dd>Use the provided <code><i>suffix</i></code> instead of the default
+ <code><b>.cxx</b></code> to construct the name of the source file.</dd>
+
+ <dt><code><b>--fwd-suffix</b></code> <code><i>suffix</i></code></dt>
+ <dd>Use the provided <code><i>suffix</i></code> instead of the default
+ <code><b>-fwd.hxx</b></code> to construct the name of the forward
+ declaration file.</dd>
+
+ <dt><code><b>--hxx-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Use the provided expression to construct the name of the header file.
+ <code><i>regex</i></code> is a Perl-like regular expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>.
+ Note that this expression is also used to construct names of header files
+ corresponding to included/imported schemas. See also the REGEX AND SHELL
+ QUOTING section below.</dd>
+
+ <dt><code><b>--ixx-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Use the provided expression to construct the name of the inline file.
+ <code><i>regex</i></code> is a Perl-like regular expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. See
+ also the REGEX AND SHELL QUOTING section below.</dd>
+
+ <dt><code><b>--cxx-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Use the provided expression to construct the name of the source file.
+ <code><i>regex</i></code> is a Perl-like regular expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. See
+ also the REGEX AND SHELL QUOTING section below.</dd>
+
+ <dt><code><b>--fwd-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Use the provided expression to construct the name of the forward
+ declaration file. <code><i>regex</i></code> is a Perl-like regular
+ expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. See
+ also the REGEX AND SHELL QUOTING section below.</dd>
+
+ <dt><code><b>--hxx-prologue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the beginning of the header
+ file.</dd>
+
+ <dt><code><b>--ixx-prologue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the beginning of the inline
+ file.</dd>
+
+ <dt><code><b>--cxx-prologue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the beginning of the source
+ file.</dd>
+
+ <dt><code><b>--fwd-prologue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the beginning of the forward
+ declaration file.</dd>
+
+ <dt><code><b>--prologue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the beginning of each generated
+ file for which there is no file-specific prologue.</dd>
+
+ <dt><code><b>--hxx-epilogue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the end of the header file.</dd>
+
+ <dt><code><b>--ixx-epilogue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the end of the inline file.</dd>
+
+ <dt><code><b>--cxx-epilogue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the end of the source file.</dd>
+
+ <dt><code><b>--fwd-epilogue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the end of the forward declaration
+ file.</dd>
+
+ <dt><code><b>--epilogue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the end of each generated file for
+ which there is no file-specific epilogue.</dd>
+
+ <dt><code><b>--hxx-prologue-file</b></code> <code><i>file</i></code></dt>
+ <dd>Insert the content of the <code><i>file</i></code> at the beginning of
+ the header file.</dd>
+
+ <dt><code><b>--ixx-prologue-file</b></code> <code><i>file</i></code></dt>
+ <dd>Insert the content of the <code><i>file</i></code> at the beginning of
+ the inline file.</dd>
+
+ <dt><code><b>--cxx-prologue-file</b></code> <code><i>file</i></code></dt>
+ <dd>Insert the content of the <code><i>file</i></code> at the beginning of
+ the source file.</dd>
+
+ <dt><code><b>--fwd-prologue-file</b></code> <code><i>file</i></code></dt>
+ <dd>Insert the content of the <code><i>file</i></code> at the beginning of
+ the forward declaration file.</dd>
+
+ <dt><code><b>--prologue-file</b></code> <code><i>file</i></code></dt>
+ <dd>Insert the content of the <code><i>file</i></code> at the beginning of
+ each generated file for which there is no file-specific prologue
+ file.</dd>
+
+ <dt><code><b>--hxx-epilogue-file</b></code> <code><i>file</i></code></dt>
+ <dd>Insert the content of the <code><i>file</i></code> at the end of the
+ header file.</dd>
+
+ <dt><code><b>--ixx-epilogue-file</b></code> <code><i>file</i></code></dt>
+ <dd>Insert the content of the <code><i>file</i></code> at the end of the
+ inline file.</dd>
+
+ <dt><code><b>--cxx-epilogue-file</b></code> <code><i>file</i></code></dt>
+ <dd>Insert the content of the <code><i>file</i></code> at the end of the
+ source file.</dd>
+
+ <dt><code><b>--fwd-epilogue-file</b></code> <code><i>file</i></code></dt>
+ <dd>Insert the content of the <code><i>file</i></code> at the end of the
+ forward declaration file.</dd>
+
+ <dt><code><b>--epilogue-file</b></code> <code><i>file</i></code></dt>
+ <dd>Insert the content of the <code><i>file</i></code> at the end of each
+ generated file for which there is no file-specific epilogue file.</dd>
+
+ <dt><code><b>--export-symbol</b></code> <code><i>symbol</i></code></dt>
+ <dd>Insert <code><i>symbol</i></code> in places where DLL export/import
+ control statements (<code><b>__declspec(dllexport/dllimport)</b></code>)
+ are necessary.</dd>
+
+ <dt><code><b>--export-xml-schema</b></code></dt>
+ <dd>Export/import types in the XML Schema namespace using the export
+ symbol provided with the <code><b>--export-symbol</b></code> option. The
+ <code><b>XSD_NO_EXPORT</b></code> macro can be used to omit this code
+ during C++ compilation, which may be useful if you would like to use the
+ same generated code across multiple platforms.</dd>
+
+ <dt><code><b>--export-maps</b></code></dt>
+ <dd>Export polymorphism support maps from a Win32 DLL into which this
+ generated code is placed. This is necessary when your type hierarchy is
+ split across several DLLs since otherwise each DLL will have its own set
+ of maps. In this situation the generated code for the DLL which contains
+ base types and/or substitution group heads should be compiled with this
+ option and the generated code for all other DLLs should be compiled with
+ <code><b>--import-maps</b></code>. This option is only valid together with
+ <code><b>--generate-polymorphic</b></code>. The
+ <code><b>XSD_NO_EXPORT</b></code> macro can be used to omit this code
+ during C++ compilation, which may be useful if you would like to use the
+ same generated code across multiple platforms.</dd>
+
+ <dt><code><b>--import-maps</b></code></dt>
+ <dd>Import polymorphism support maps to a Win32 DLL or executable into
+ which this generated code is linked. See the
+ <code><b>--export-maps</b></code> option documentation for details. This
+ options is only valid together with
+ <code><b>--generate-polymorphic</b></code>. The
+ <code><b>XSD_NO_EXPORT</b></code> macro can be used to omit this code
+ during C++ compilation, which may be useful if you would like to use the
+ same generated code across multiple platforms.</dd>
+
+ <dt><code><b>--generate-dep</b></code></dt>
+ <dd>Generate <code><b>make</b></code> dependency information. This option
+ triggers the creation of the <code><b>.d</b></code> file containing the
+ dependencies of the generated files on the main schema file as well as all
+ the schema files that it includes/imports, transitively. This dependency
+ file is then normally included into the main <code><b>makefile</b></code>
+ to implement automatic dependency tracking. See also the
+ <code><b>--dep-*</b></code> options.
+
+ <p>Note also that automatic dependency generation is not supported in the
+ file-per-type mode (<code><b>--file-per-type</b></code>). In this case,
+ all the generated files are produced with a single compiler invocation and
+ depend on all the schemas. As a result, it is easier to establish such a
+ dependency manually, perhaps with the help of the
+ <code><b>--file-list*</b></code> options.</p></dd>
+
+ <dt><code><b>--generate-dep-only</b></code></dt>
+ <dd>Generate <code><b>make</b></code> dependency information only.</dd>
+
+ <dt><code><b>--dep-phony</b></code></dt>
+ <dd>Generate phony targets for included/imported schema files, causing
+ each to depend on nothing. Such dummy rules work around
+ <code><b>make</b></code> errors caused by the removal of schema files
+ without also updating the dependency file to match.</dd>
+
+ <dt><code><b>--dep-target</b></code> <code><i>target</i></code></dt>
+ <dd>Change the target of the dependency rule. By default it contains all
+ the generated C++ files as well as the dependency file itself, without any
+ directory prefixes. If you require multiple targets, then you can specify
+ them as a single, space-separated argument or you can repeat this option
+ multiple times.</dd>
+
+ <dt><code><b>--dep-suffix</b></code> <code><i>suffix</i></code></dt>
+ <dd>Use <code><i>suffix</i></code> instead of the default
+ <code><b>.d</b></code> to construct the name of the dependency file. See
+ also <code><b>--dep-file</b></code>.</dd>
+
+ <dt><code><b>--dep-file</b></code> <code><i>path</i></code></dt>
+ <dd>Use <code><i>path</i></code> as the generated dependency file path
+ instead of deriving it from the input file name. Write the dependency
+ information to <code><b>stdout</b></code> if <code><i>path</i></code> is
+ <code><b>-</b></code>. See also <code><b>--dep-regex</b></code>.</dd>
+
+ <dt><code><b>--dep-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Use the provided expression to construct the name of the dependency
+ file. <code><i>regex</i></code> is a Perl-like regular expression in the
+ form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. See
+ also the REGEX AND SHELL QUOTING section below.</dd>
+
+ <dt><code><b>--disable-warning</b></code> <code><i>warn</i></code></dt>
+ <dd>Disable printing warning with id <code><i>warn</i></code>. If
+ <code><b>all</b></code> is specified for the warning id then all warnings
+ are disabled.</dd>
+
+ <dt><code><b>--options-file</b></code> <code><i>file</i></code></dt>
+ <dd>Read additional options from <code><i>file</i></code>. Each option
+ should appearing on a separate line optionally followed by space and an
+ option value. Empty lines and lines starting with <code><b>#</b></code>
+ are ignored. Option values can be enclosed in double
+ (<code><b>"</b></code>) or single (<code><b>'</b></code>) quotes to
+ preserve leading and trailing whitespaces as well as to specify empty
+ values. If the value itself contains trailing or leading quotes, enclose
+ it with an extra pair of quotes, for example <code><b>'"x"'</b></code>.
+ Non-leading and non-trailing quotes are interpreted as being part of the
+ option value.
+
+ <p>The semantics of providing options in a file is equivalent to providing
+ the same set of options in the same order on the command line at the point
+ where the <code><b>--options-file</b></code> option is specified except
+ that the shell escaping and quoting is not required. You can repeat this
+ option to specify more than one options file.</p></dd>
+
+ <dt><code><b>--show-sloc</b></code></dt>
+ <dd>Show the number of generated physical source lines of code
+ (SLOC).</dd>
+
+ <dt><code><b>--sloc-limit</b></code> <code><i>num</i></code></dt>
+ <dd>Check that the number of generated physical source lines of code
+ (SLOC) does not exceed <code><i>num</i></code>.</dd>
+
+ <dt><code><b>--proprietary-license</b></code></dt>
+ <dd>Indicate that the generated code is licensed under a proprietary
+ license instead of the GPL.</dd>
+
+ <dt><code><b>--custom-literals</b></code> <code><i>file</i></code></dt>
+ <dd>Load custom XML string to C++ literal mappings from
+ <code><i>file</i></code>. This mechanism can be useful if you are using a
+ custom character encoding and some of the strings in your schemas, for
+ example element/attribute names or enumeration values, contain non-ASCII
+ characters. In this case you will need to provide a custom mapping to C++
+ literals for such strings. The format of this file is specified in the
+ <code><b>custom-literals.xsd</b></code> XML Schema file that can be found
+ in the documentation directory.</dd>
+
+ <dt><code><b>--preserve-anonymous</b></code></dt>
+ <dd>Preserve anonymous types. By default anonymous types are automatically
+ named with names derived from the enclosing elements/attributes. Because
+ mappings implemented by this compiler require all types to be named, this
+ option is only useful if you want to make sure your schemas don't have
+ anonymous types.</dd>
+
+ <dt><code><b>--show-anonymous</b></code></dt>
+ <dd>Show elements and attributes that are of anonymous types. This option
+ only makes sense together with the
+ <code><b>--preserve-anonymous</b></code> option.</dd>
+
+ <dt><code><b>--anonymous-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to derive names for anonymous types from the enclosing
+ attributes/elements. <code><i>regex</i></code> is a Perl-like regular
+ expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
+ character can be used as a delimiter instead of '<code><b>/</b></code>'.
+ Escaping of the delimiter character in <code><i>pattern</i></code> or
+ <code><i>replacement</i></code> is not supported.
+
+ <p>All the regular expressions are pushed into a stack with the last
+ specified expression considered first. The first match that succeeds is
+ used. Regular expressions are applied to a string in the form</p>
+
+ <p class="code"><code><i>filename</i> <i>namespace</i>
+ <i>xpath</i></code></p>
+
+ <p>For instance:</p>
+
+ <p class="code"><code><b>hello.xsd http://example.com/hello
+ element</b></code></p>
+
+ <p class="code"><code><b>hello.xsd http://example.com/hello
+ type/element</b></code></p>
+
+ <p>As an example, the following expression makes all the derived names
+ start with capital letters. This could be useful when your naming
+ convention requires type names to start with capital letters:</p>
+
+ <p class="code"><code><b>%.* .* (.+/)*(.+)%\u$2%</b></code></p>
+
+ <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
+
+ <dt><code><b>--anonymous-regex-trace</b></code></dt>
+ <dd>Trace the process of applying regular expressions specified with the
+ <code><b>--anonymous-regex</b></code> option. Use this option to find out
+ why your regular expressions don't do what you expected them to do.</dd>
+
+ <dt><code><b>--location-map</b></code> <code><i>ol</i></code>=<code><i>nl</i></code></dt>
+ <dd>Map the original schema location <code><i>ol</i></code> that is
+ specified in the XML Schema include or import elements to new schema
+ location <code><i>nl</i></code>. Repeat this option to map more than one
+ schema location. For example, the following option maps the
+ <code><b>http://example.com/foo.xsd</b></code> URL to the
+ <code><b>foo.xsd</b></code> local file.
+
+ <p class="code"><code><b>--location-map
+ http://example.com/foo.xsd=foo.xsd</b></code></p></dd>
+
+ <dt><code><b>--location-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to map schema locations that are specified in the XML Schema include or
+ import elements. <code><i>regex</i></code> is a Perl-like regular
+ expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
+ character can be used as a delimiter instead of '<code><b>/</b></code>'.
+ Escaping of the delimiter character in <code><i>pattern</i></code> or
+ <code><i>replacement</i></code> is not supported. All the regular
+ expressions are pushed into a stack with the last specified expression
+ considered first. The first match that succeeds is used.
+
+ <p>For example, the following expression maps URL locations in the form
+ <code><b>http://example.com/foo/bar.xsd</b></code> to local files in the
+ form <code><b>bar.xsd</b></code>:</p>
+
+ <p class="code"><code><b>%http://.+/(.+)%$1%</b></code></p>
+
+ <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
+
+ <dt><code><b>--location-regex-trace</b></code></dt>
+ <dd>Trace the process of applying regular expressions specified with the
+ <code><b>--location-regex</b></code> option. Use this option to find out
+ why your regular expressions don't do what you expected them to do.</dd>
+
+ <dt><code><b>--file-per-type</b></code></dt>
+ <dd>Generate a separate set of C++ files for each type defined in XML
+ Schema. Note that in this mode you only need to compile the root schema(s)
+ and the code will be generated for all included and imported schemas. This
+ compilation mode is primarily useful when some of your schemas cannot be
+ compiled separately or have cyclic dependencies which involve type
+ inheritance. Other options related to this mode are:
+ <code><b>--type-file-regex</b></code>,
+ <code><b>--schema-file-regex</b></code>,
+ <code><b>--fat-type-file</b></code>, and
+ <code><b>--file-list</b></code>.</dd>
+
+ <dt><code><b>--type-file-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate type names to file names when the
+ <code><b>--file-per-type</b></code> option is specified.
+ <code><i>regex</i></code> is a Perl-like regular expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
+ character can be used as a delimiter instead of '<code><b>/</b></code>'.
+ Escaping of the delimiter character in <code><i>pattern</i></code> or
+ <code><i>replacement</i></code> is not supported. All the regular
+ expressions are pushed into a stack with the last specified expression
+ considered first. The first match that succeeds is used. Regular
+ expressions are applied to a string in the form
+
+ <p class="code"><code><i>namespace</i> <i>type-name</i></code></p>
+
+ <p>For example, the following expression maps type <code><b>foo</b></code>
+ that is defined in the <code><b>http://example.com/bar</b></code>
+ namespace to file name <code><b>bar-foo</b></code>:</p>
+
+ <p class="code"><code><b>%http://example.com/(.+)
+ (.+)%$1-$2%</b></code></p>
+
+ <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
+
+ <dt><code><b>--type-file-regex-trace</b></code></dt>
+ <dd>Trace the process of applying regular expressions specified with the
+ <code><b>--type-file-regex</b></code> option. Use this option to find out
+ why your regular expressions don't do what you expected them to do.</dd>
+
+ <dt><code><b>--schema-file-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate schema file names when the
+ <code><b>--file-per-type</b></code> option is specified.
+ <code><i>regex</i></code> is a Perl-like regular expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
+ character can be used as a delimiter instead of '<code><b>/</b></code>'.
+ Escaping of the delimiter character in <code><i>pattern</i></code> or
+ <code><i>replacement</i></code> is not supported. All the regular
+ expressions are pushed into a stack with the last specified expression
+ considered first. The first match that succeeds is used. Regular
+ Expressions are applied to the absolute filesystem path of a schema file
+ and the result, including the directory part, if any, is used to derive
+ the <code><b>#include</b></code> directive paths as well as the generated
+ C++ file paths. This option, along with
+ <code><b>--type-file-regex</b></code> are primarily useful to place the
+ generated files into subdirectories or to resolve file name conflicts.
+
+ <p>For example, the following expression maps schema files in the
+ <code><b>foo/1.0.0/</b></code> subdirectory to the files in the
+ <code><b>foo/</b></code> subdirectory. As a result, the
+ <code><b>#include</b></code> directive paths for such schemas will be in
+ the <code><b>foo/schema.hxx</b></code> form and the generated C++ files
+ will be placed into the <code><b>foo/</b></code> subdirectory:</p>
+
+ <p class="code"><code><b>%.*/foo/1.0.0/(.+)%foo/$1%</b></code></p>
+
+ <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
+
+ <dt><code><b>--schema-file-regex-trace</b></code></dt>
+ <dd>Trace the process of applying regular expressions specified with the
+ <code><b>--schema-file-regex</b></code> option. Use this option to find
+ out why your regular expressions don't do what you expected them to
+ do.</dd>
+
+ <dt><code><b>--fat-type-file</b></code></dt>
+ <dd>Generate code corresponding to global elements into type files instead
+ of schema files when the <code><b>--type-file-regex</b></code> option is
+ specified. This option is primarily useful when trying to minimize the
+ amount of object code that is linked to an executable by packaging
+ compiled generated code into a static (archive) library.</dd>
+
+ <dt><code><b>--file-list</b></code> <code><i>file</i></code></dt>
+ <dd>Write a list of generated C++ files to <code><i>file</i></code> or to
+ <code><b>stdout</b></code> if <code><i>file</i></code> is
+ <code><b>-</b></code>. This option is primarily useful in the
+ file-per-type compilation mode (<code><b>--file-per-type</b></code>) to
+ create a list of generated C++ files, for example, as a makefile
+ fragment.</dd>
+
+ <dt><code><b>--file-list-only</b></code></dt>
+ <dd>Only write the list of C++ files that would be generated without
+ actually generating them. This option only makes sense together with
+ <code><b>--file-list</b></code>.</dd>
+
+ <dt><code><b>--file-list-prologue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the beginning of the file list. As
+ a convenience, all occurrences of the <code><b>\n</b></code> character
+ sequence in <code><i>text</i></code> are replaced with new lines. This
+ option can, for example, be used to assign the generated file list to a
+ makefile variable.</dd>
+
+ <dt><code><b>--file-list-epilogue</b></code> <code><i>text</i></code></dt>
+ <dd>Insert <code><i>text</i></code> at the end of the file list. As a
+ convenience, all occurrences of the <code><b>\n</b></code> character
+ sequence in <code><i>text</i></code> are replaced with new lines.</dd>
+
+ <dt><code><b>--file-list-delim</b></code> <code><i>text</i></code></dt>
+ <dd>Delimit file names written to the file list with
+ <code><i>text</i></code> instead of new lines. As a convenience, all
+ occurrences of the <code><b>\n</b></code> character sequence in
+ <code><i>text</i></code> are replaced with new lines.</dd>
+ </dl>
+
+ <h2>CXX-TREE COMMAND OPTIONS</h2>
+ <dl class="options">
+ <dt><code><b>--generate-polymorphic</b></code></dt>
+ <dd>Generate polymorphism-aware code. Specify this option if you use
+ substitution groups or <code><b>xsi:type</b></code>. Use the
+ <code><b>--polymorphic-type</b></code> or
+ <code><b>--polymorphic-type-all</b></code> option to specify which type
+ hierarchies are polymorphic.</dd>
+
+ <dt><code><b>--polymorphic-type</b></code> <code><i>type</i></code></dt>
+ <dd>Indicate that <code><i>type</i></code> is a root of a polymorphic type
+ hierarchy. The compiler can often automatically determine which types are
+ polymorphic based on the substitution group declarations. However, you may
+ need to use this option if you are not using substitution groups or if
+ substitution groups are defined in another schema. You need to specify
+ this option when compiling every schema file that references
+ <code><i>type</i></code>. The <code><i>type</i></code> argument is an XML
+ Schema type name that can be optionally qualified with a namespace in the
+ <code><i>namespace</i><b>#</b><i>name</i></code> form.</dd>
+
+ <dt><code><b>--polymorphic-type-all</b></code></dt>
+ <dd>Indicate that all types should be treated as polymorphic.</dd>
+
+ <dt><code><b>--polymorphic-plate</b></code> <code><i>num</i></code></dt>
+ <dd>Specify the polymorphic map plate the generated code should register
+ on. This functionality is primarily useful to segregate multiple schemas
+ that define the same polymorphic types.</dd>
+
+ <dt><code><b>--ordered-type</b></code> <code><i>type</i></code></dt>
+ <dd>Indicate that element order in <code><i>type</i></code> is
+ significant. An example would be a complex type with unbounded choice as a
+ content model where the element order in XML has application-specific
+ semantics. For ordered types the compiler generates a special container
+ data member and a corresponding set of accessors and modifiers that are
+ used to capture the order of elements and, for mixed content, of text.
+
+ <p>The <code><i>type</i></code> argument is an XML Schema type name that
+ can be optionally qualified with a namespace in the
+ <code><i>namespace</i><b>#</b><i>name</i></code> form. Note also that you
+ will need to specify this option when compiling every schema file that has
+ other ordered types derived from this type.</p></dd>
+
+ <dt><code><b>--ordered-type-derived</b></code></dt>
+ <dd>Automatically treat types derived from ordered bases as also ordered.
+ This is primarily useful if you would like to be able to iterate over the
+ complete content using the content order container.</dd>
+
+ <dt><code><b>--ordered-type-mixed</b></code></dt>
+ <dd>Automatically treat complex types with mixed content as ordered.</dd>
+
+ <dt><code><b>--ordered-type-all</b></code></dt>
+ <dd>Indicate that element order in all types is significant.</dd>
+
+ <dt><code><b>--order-container</b></code> <code><i>type</i></code></dt>
+ <dd>Specify a custom class template that should be used as a container for
+ the content order in ordered types instead of the default
+ <code><b>std::vector</b></code>. See <code><b>--ordered-type</b></code>
+ for more information on ordered type. This option is primarily useful if
+ you need to perform more complex lookups in the content order container,
+ for example by element id. In this case, a container like Boost
+ multi-index may be more convenient. Note that if using a custom container,
+ you will also most likely need to include the relevant headers using the
+ <code><b>--hxx-prologue*</b></code> options.</dd>
+
+ <dt><code><b>--generate-serialization</b></code></dt>
+ <dd>Generate serialization functions. Serialization functions convert the
+ object model back to XML.</dd>
+
+ <dt><code><b>--generate-ostream</b></code></dt>
+ <dd>Generate ostream insertion operators
+ (<code><b>operator&lt;&lt;</b></code>) for generated types. This allows
+ one to easily print a fragment or the whole object model for debugging or
+ logging.</dd>
+
+ <dt><code><b>--generate-doxygen</b></code></dt>
+ <dd>Generate documentation comments suitable for extraction by the Doxygen
+ documentation system. Documentation from annotations is added to the
+ comments if present in the schema.</dd>
+
+ <dt><code><b>--generate-comparison</b></code></dt>
+ <dd>Generate comparison operators (<code><b>operator==</b></code> and
+ <code><b>operator!=</b></code>) for complex types. Comparison is performed
+ member-wise.</dd>
+
+ <dt><code><b>--generate-default-ctor</b></code></dt>
+ <dd>Generate default constructors even for types that have required
+ members. Required members of an instance constructed using such a
+ constructor are not initialized and accessing them results in undefined
+ behavior.</dd>
+
+ <dt><code><b>--generate-from-base-ctor</b></code></dt>
+ <dd>Generate constructors that expect an instance of a base type followed
+ by all required members.</dd>
+
+ <dt><code><b>--suppress-assignment</b></code></dt>
+ <dd>Suppress the generation of copy assignment operators for complex
+ types. If this option is specified, the copy assignment operators for such
+ types are declared private and left unimplemented.</dd>
+
+ <dt><code><b>--generate-detach</b></code></dt>
+ <dd>Generate detach functions for required elements and attributes. Detach
+ functions for optional and sequence cardinalities are provided by the
+ respective containers. These functions, for example, allow you to move
+ sub-trees in the object model either within the same tree or between
+ different trees.</dd>
+
+ <dt><code><b>--generate-wildcard</b></code></dt>
+ <dd>Generate accessors and modifiers as well as parsing and serialization
+ code for XML Schema wildcards (<code><b>any</b></code> and
+ <code><b>anyAttribute</b></code>). XML content matched by wildcards is
+ presented as DOM fragments. Note that you need to initialize the
+ Xerces-C++ runtime if you are using this option.</dd>
+
+ <dt><code><b>--generate-any-type</b></code></dt>
+ <dd>Extract and store content of the XML Schema
+ <code><b>anyType</b></code> type as a DOM fragment. Note that you need to
+ initialize the Xerces-C++ runtime if you are using this option.</dd>
+
+ <dt><code><b>--generate-insertion</b></code> <code><i>os</i></code></dt>
+ <dd>Generate data representation stream insertion operators for the
+ <code><i>os</i></code> output stream type. Repeat this option to specify
+ more than one stream type. The ACE CDR stream
+ (<code><b>ACE_OutputCDR</b></code>) and RPC XDR are recognized by the
+ compiler and the necessary <code><b>#include</b></code> directives are
+ automatically generated. For custom stream types use the
+ <code><b>--hxx-prologue*</b></code> options to provide the necessary
+ declarations.</dd>
+
+ <dt><code><b>--generate-extraction</b></code> <code><i>is</i></code></dt>
+ <dd>Generate data representation stream extraction constructors for the
+ <code><i>is</i></code> input stream type. Repeat this option to specify
+ more than one stream type. The ACE CDR stream
+ (<code><b>ACE_InputCDR</b></code>) and RPC XDR are recognized by the
+ compiler and the necessary <code><b>#include</b></code> directives are
+ automatically generated. For custom stream types use the
+ <code><b>--hxx-prologue*</b></code> options to provide the necessary
+ declarations.</dd>
+
+ <dt><code><b>--generate-forward</b></code></dt>
+ <dd>Generate a separate header file with forward declarations for the
+ types being generated.</dd>
+
+ <dt><code><b>--suppress-parsing</b></code></dt>
+ <dd>Suppress the generation of the parsing functions and constructors. Use
+ this option to reduce the generated code size when parsing from XML is not
+ needed.</dd>
+
+ <dt><code><b>--generate-element-type</b></code></dt>
+ <dd>Generate types instead of parsing and serialization functions for root
+ elements. This is primarily useful to distinguish object models with the
+ same root type but with different root elements.</dd>
+
+ <dt><code><b>--generate-element-map</b></code></dt>
+ <dd>Generate a root element map that allows uniform parsing and
+ serialization of multiple root elements. This option is only valid
+ together with <code><b>--generate-element-type</b></code>.</dd>
+
+ <dt><code><b>--generate-intellisense</b></code></dt>
+ <dd>Generate workarounds for IntelliSense bugs in Visual Studio 2005
+ (8.0). When this option is used, the resulting code is slightly more
+ verbose. IntelliSense in Visual Studio 2008 (9.0) and later does not
+ require these workarounds. Support for IntelliSense in Visual Studio 2003
+ (7.1) is improved with this option but is still incomplete.</dd>
+
+ <dt><code><b>--omit-default-attributes</b></code></dt>
+ <dd>Omit attributes with default and fixed values from serialized XML
+ documents.</dd>
+
+ <dt><code><b>--type-naming</b></code> <code><i>style</i></code></dt>
+ <dd>Specify the type naming convention that should be used in the
+ generated code. Valid styles are <code><b>knr</b></code> (default),
+ <code><b>ucc</b></code>, and <code><b>java</b></code>. See the NAMING
+ CONVENTION section below for more information.</dd>
+
+ <dt><code><b>--function-naming</b></code> <code><i>style</i></code></dt>
+ <dd>Specify the function naming convention that should be used in the
+ generated code. Valid styles are <code><b>knr</b></code> (default),
+ <code><b>lcc</b></code>, <code><b>ucc</b></code>, and
+ <code><b>java</b></code>. See the NAMING CONVENTION section below for more
+ information.</dd>
+
+ <dt><code><b>--type-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema type names to C++ type names. See the NAMING
+ CONVENTION section below for more information.</dd>
+
+ <dt><code><b>--accessor-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema names of elements/attributes to C++ accessor
+ function names. See the NAMING CONVENTION section below for more
+ information.</dd>
+
+ <dt><code><b>--one-accessor-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema names of elements/attributes with cardinality one
+ to C++ accessor function names. See the NAMING CONVENTION section below
+ for more information.</dd>
+
+ <dt><code><b>--opt-accessor-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema names of elements/attributes with cardinality
+ optional to C++ accessor function names. See the NAMING CONVENTION section
+ below for more information.</dd>
+
+ <dt><code><b>--seq-accessor-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema names of elements/attributes with cardinality
+ sequence to C++ accessor function names. See the NAMING CONVENTION section
+ below for more information.</dd>
+
+ <dt><code><b>--modifier-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema names of elements/attributes to C++ modifier
+ function names. See the NAMING CONVENTION section below for more
+ information.</dd>
+
+ <dt><code><b>--one-modifier-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema names of elements/attributes with cardinality one
+ to C++ modifier function names. See the NAMING CONVENTION section below
+ for more information.</dd>
+
+ <dt><code><b>--opt-modifier-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema names of elements/attributes with cardinality
+ optional to C++ modifier function names. See the NAMING CONVENTION section
+ below for more information.</dd>
+
+ <dt><code><b>--seq-modifier-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema names of elements/attributes with cardinality
+ sequence to C++ modifier function names. See the NAMING CONVENTION section
+ below for more information.</dd>
+
+ <dt><code><b>--parser-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema element names to C++ parsing function names. See
+ the NAMING CONVENTION section below for more information.</dd>
+
+ <dt><code><b>--serializer-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema element names to C++ serialization function names.
+ See the NAMING CONVENTION section below for more information.</dd>
+
+ <dt><code><b>--const-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema-derived names to C++ constant names. See the
+ NAMING CONVENTION section below for more information.</dd>
+
+ <dt><code><b>--enumerator-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema enumeration values to C++ enumerator names. See
+ the NAMING CONVENTION section below for more information.</dd>
+
+ <dt><code><b>--element-type-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Add <code><i>regex</i></code> to the list of regular expressions used
+ to translate XML Schema element names to C++ element type names. See the
+ NAMING CONVENTION section below for more information.</dd>
+
+ <dt><code><b>--name-regex-trace</b></code></dt>
+ <dd>Trace the process of applying regular expressions specified with the
+ name transformation options. Use this option to find out why your regular
+ expressions don't do what you expected them to do.</dd>
+
+ <dt><code><b>--root-element-first</b></code></dt>
+ <dd>Treat only the first global element as a document root. By default all
+ global elements are considered document roots.</dd>
+
+ <dt><code><b>--root-element-last</b></code></dt>
+ <dd>Treat only the last global element as a document root. By default all
+ global elements are considered document roots.</dd>
+
+ <dt><code><b>--root-element-all</b></code></dt>
+ <dd>Treat all global elements as document roots. This is the default
+ behavior. By explicitly specifying this option you can suppress the
+ warning that is issued if more than one global element is defined.</dd>
+
+ <dt><code><b>--root-element-none</b></code></dt>
+ <dd>Do not treat any global elements as document roots. By default all
+ global elements are considered document roots.</dd>
+
+ <dt><code><b>--root-element</b></code> <code><i>element</i></code></dt>
+ <dd>Treat only <code><i>element</i></code> as a document root. Repeat this
+ option to specify more than one root element.</dd>
+
+ <dt><code><b>--custom-type</b></code> <code><i>map</i></code></dt>
+ <dd>Use a custom C++ type instead of the generated class. The
+ <code><i>map</i></code> argument is in the form
+ <code><i>name</i>[<b>=</b><i>type</i>[<b>/</b><i>base</i>]]</code>, where
+ <i>name</i> is a type name as defined in XML Schema and <i>type</i> is a
+ C++ type name that should be used instead. If <i>type</i> is not present
+ or empty then the custom type is assumed to have the same name and be
+ defined in the same namespace as the generated class would have. If
+ <i>base</i> is specified then the generated class is still generated but
+ with that name.</dd>
+
+ <dt><code><b>--custom-type-regex</b></code> <code><i>regex</i></code></dt>
+ <dd>Use custom C++ types instead of the generated classes. The
+ <code><i>regex</i></code> argument is in the form
+ <code><b>/</b><i>name-pat</i><b>/</b>[<i>type-sub</i><b>/</b>[<i>base-sub</i><b>/</b>]]</code>,
+ where <i>name-pat</i> is a regex pattern that will be matched against type
+ names as defined in XML Schema and <i>type-sub</i> is a C++ type name
+ substitution that should be used instead. If <i>type-sub</i> is not
+ present or its substitution results in an empty string then the custom
+ type is assumed to have the same name and be defined in the same namespace
+ as the generated class would have. If <i>base-sub</i> is present and its
+ substitution results in a non-empty string then the generated class is
+ still generated but with the result of this substitution as its name. The
+ pattern and substitutions are in the Perl regular expression format. See
+ also the REGEX AND SHELL QUOTING section below.</dd>
+
+ <dt><code><b>--parts</b></code> <code><i>num</i></code></dt>
+ <dd>Split generated source code into <code><i>num</i></code> parts. This
+ is useful when translating large, monolithic schemas and a C++ compiler is
+ not able to compile the resulting source code at once (usually due to
+ insufficient memory).</dd>
+
+ <dt><code><b>--parts-suffix</b></code> <code><i>suffix</i></code></dt>
+ <dd>Use <code><i>suffix</i></code> instead of the default
+ '<code><b>-</b></code>' to separate the file name from the part
+ number.</dd>
+ </dl>
+
+ <h2>CXX-PARSER COMMAND OPTIONS</h2>
+ <dl class="options">
+ <dt><code><b>--type-map</b></code> <code><i>mapfile</i></code></dt>
+ <dd>Read XML Schema to C++ type mapping information from
+ <code><i>mapfile</i></code>. Repeat this option to specify several type
+ maps. Type maps are considered in order of appearance and the first match
+ is used. By default all user-defined types are mapped to
+ <code><b>void</b></code>. See the TYPE MAP section below for more
+ information.</dd>
+
+ <dt><code><b>--xml-parser</b></code> <code><i>parser</i></code></dt>
+ <dd>Use <code><i>parser</i></code> as the underlying XML parser. Valid
+ values are <code><b>xerces</b></code> for Xerces-C++ (default) and
+ <code><b>expat</b></code> for Expat.</dd>
+
+ <dt><code><b>--generate-validation</b></code></dt>
+ <dd>Generate validation code. The validation code ("perfect parser")
+ ensures that instance documents conform to the schema. Validation code is
+ generated by default when the selected underlying XML parser is
+ non-validating (<code><b>expat</b></code>).</dd>
+
+ <dt><code><b>--suppress-validation</b></code></dt>
+ <dd>Suppress the generation of validation code. Validation is suppressed
+ by default when the selected underlying XML parser is validating
+ (<code><b>xerces</b></code>).</dd>
+
+ <dt><code><b>--generate-polymorphic</b></code></dt>
+ <dd>Generate polymorphism-aware code. Specify this option if you use
+ substitution groups or <code><b>xsi:type</b></code>.</dd>
+
+ <dt><code><b>--generate-noop-impl</b></code></dt>
+ <dd>Generate a sample parser implementation that does nothing (no
+ operation). The sample implementation can then be filled with the
+ application-specific code. For an input file in the form
+ <code><b>name.xsd</b></code> this option triggers the generation of two
+ additional C++ files in the form: <code><b>name-pimpl.hxx</b></code>
+ (parser implementation header file) and <code><b>name-pimpl.cxx</b></code>
+ (parser implementation source file).</dd>
+
+ <dt><code><b>--generate-print-impl</b></code></dt>
+ <dd>Generate a sample parser implementation that prints the XML data to
+ <code>STDOUT</code>. For an input file in the form
+ <code><b>name.xsd</b></code> this option triggers the generation of two
+ additional C++ files in the form: <code><b>name-pimpl.hxx</b></code>
+ (parser implementation header file) and <code><b>name-pimpl.cxx</b></code>
+ (parser implementation source file).</dd>
+
+ <dt><code><b>--generate-test-driver</b></code></dt>
+ <dd>Generate a test driver for the sample parser implementation. For an
+ input file in the form <code><b>name.xsd</b></code> this option triggers
+ the generation of an additional C++ file in the form
+ <code><b>name-driver.cxx</b></code>.</dd>
+
+ <dt><code><b>--force-overwrite</b></code></dt>
+ <dd>Force overwriting of the existing implementation and test driver
+ files. Use this option only if you do not mind loosing the changes you
+ have made in the sample implementation or test driver files.</dd>
+
+ <dt><code><b>--root-element-first</b></code></dt>
+ <dd>Indicate that the first global element is the document root. This
+ information is used to generate the test driver for the sample
+ implementation.</dd>
+
+ <dt><code><b>--root-element-last</b></code></dt>
+ <dd>Indicate that the last global element is the document root. This
+ information is used to generate the test driver for the sample
+ implementation.</dd>
+
+ <dt><code><b>--root-element</b></code> <code><i>element</i></code></dt>
+ <dd>Indicate that <code><i>element</i></code> is the document root. This
+ information is used to generate the test driver for the sample
+ implementation.</dd>
+
+ <dt><code><b>--skel-type-suffix</b></code> <code><i>suffix</i></code></dt>
+ <dd>Use the provided <code><i>suffix</i></code> instead of the default
+ <code><b>_pskel</b></code> to construct the names of the generated parser
+ skeletons.</dd>
+
+ <dt><code><b>--skel-file-suffix</b></code> <code><i>suffix</i></code></dt>
+ <dd>Use the provided <code><i>suffix</i></code> instead of the default
+ <code><b>-pskel</b></code> to construct the names of the generated parser
+ skeleton files.</dd>
+
+ <dt><code><b>--impl-type-suffix</b></code> <code><i>suffix</i></code></dt>
+ <dd>Use the provided <code><i>suffix</i></code> instead of the default
+ <code><b>_pimpl</b></code> to construct the names of the parser
+ implementations for the built-in XML Schema types as well as sample parser
+ implementations.</dd>
+
+ <dt><code><b>--impl-file-suffix</b></code> <code><i>suffix</i></code></dt>
+ <dd>Use the provided <code><i>suffix</i></code> instead of the default
+ <code><b>-pimpl</b></code> to construct the names of the generated sample
+ parser implementation files.</dd>
+ </dl>
+
+ <h1>NAMING CONVENTION</h1>
+
+ <p>The compiler can be instructed to use a particular naming
+ convention in the generated code. A number of widely-used
+ conventions can be selected using the <code><b>--type-naming</b></code>
+ and <code><b>--function-naming</b></code> options. A custom
+ naming convention can be achieved using the
+ <code><b>--type-regex</b></code>,
+ <code><b>--accessor-regex</b></code>,
+ <code><b>--one-accessor-regex</b></code>,
+ <code><b>--opt-accessor-regex</b></code>,
+ <code><b>--seq-accessor-regex</b></code>,
+ <code><b>--modifier-regex</b></code>,
+ <code><b>--one-modifier-regex</b></code>,
+ <code><b>--opt-modifier-regex</b></code>,
+ <code><b>--seq-modifier-regex</b></code>,
+ <code><b>--parser-regex</b></code>,
+ <code><b>--serializer-regex</b></code>,
+ <code><b>--const-regex</b></code>,
+ <code><b>--enumerator-regex</b></code>, and
+ <code><b>--element-type-regex</b></code> options.
+ </p>
+
+ <p>The <code><b>--type-naming</b></code> option specifies the
+ convention that should be used for naming C++ types. Possible
+ values for this option are <code><b>knr</b></code> (default),
+ <code><b>ucc</b></code>, and <code><b>java</b></code>. The
+ <code><b>knr</b></code> value (stands for K&amp;R) signifies
+ the standard, lower-case naming convention with the underscore
+ used as a word delimiter, for example: <code>foo</code>,
+ <code>foo_bar</code>. The <code><b>ucc</b></code> (stands
+ for upper-camel-case) and
+ <code><b>java</b></code> values a synonyms for the same
+ naming convention where the first letter of each word in the
+ name is capitalized, for example: <code>Foo</code>,
+ <code>FooBar</code>.</p>
+
+ <p>Similarly, the <code><b>--function-naming</b></code> option
+ specifies the convention that should be used for naming C++
+ functions. Possible values for this option are <code><b>knr</b></code>
+ (default), <code><b>lcc</b></code>, <code><b>ucc</b></code>, and
+ <code><b>java</b></code>. The <code><b>knr</b></code> value (stands
+ for K&amp;R) signifies the standard, lower-case naming convention
+ with the underscore used as a word delimiter, for example:
+ <code>foo()</code>, <code>foo_bar()</code>. The <code><b>lcc</b></code>
+ value (stands for lower-camel-case) signifies a naming convention
+ where the first letter of each word except the first is capitalized,
+ for example: <code>foo()</code>, <code>fooBar()</code>. The
+ <code><b>ucc</b></code> value (stands for upper-camel-case) signifies
+ a naming convention where the first letter of each word is capitalized,
+ for example: <code>Foo()</code>, <code>FooBar()</code>.
+ The <code><b>java</b></code> naming convention is similar to
+ the lower-camel-case one except that accessor functions are prefixed
+ with <code>get</code>, modifier functions are prefixed
+ with <code>set</code>, parsing functions are prefixed
+ with <code>parse</code>, and serialization functions are
+ prefixed with <code>serialize</code>, for example:
+ <code>getFoo()</code>, <code>setFooBar()</code>,
+ <code>parseRoot()</code>, <code>serializeRoot()</code>.</p>
+
+ <p>Note that the naming conventions specified with the
+ <code><b>--type-naming</b></code> and
+ <code><b>--function-naming</b></code> options perform only limited
+ transformations on the names that come from the schema in the
+ form of type, attribute, and element names. In other words, to
+ get consistent results, your schemas should follow a similar
+ naming convention as the one you would like to have in the
+ generated code. Alternatively, you can use the
+ <code><b>--*-regex</b></code> options (discussed below)
+ to perform further transformations on the names that come from
+ the schema.</p>
+
+ <p>The
+ <code><b>--type-regex</b></code>,
+ <code><b>--accessor-regex</b></code>,
+ <code><b>--one-accessor-regex</b></code>,
+ <code><b>--opt-accessor-regex</b></code>,
+ <code><b>--seq-accessor-regex</b></code>,
+ <code><b>--modifier-regex</b></code>,
+ <code><b>--one-modifier-regex</b></code>,
+ <code><b>--opt-modifier-regex</b></code>,
+ <code><b>--seq-modifier-regex</b></code>,
+ <code><b>--parser-regex</b></code>,
+ <code><b>--serializer-regex</b></code>,
+ <code><b>--const-regex</b></code>,
+ <code><b>--enumerator-regex</b></code>, and
+ <code><b>--element-type-regex</b></code> options allow you to
+ specify extra regular expressions for each name category in
+ addition to the predefined set that is added depending on
+ the <code><b>--type-naming</b></code> and
+ <code><b>--function-naming</b></code> options. Expressions
+ that are provided with the <code><b>--*-regex</b></code>
+ options are evaluated prior to any predefined expressions.
+ This allows you to selectively override some or all of the
+ predefined transformations. When debugging your own expressions,
+ it is often useful to see which expressions match which names.
+ The <code><b>--name-regex-trace</b></code> option allows you
+ to trace the process of applying regular expressions to
+ names.</p>
+
+ <p>The value for the <code><b>--*-regex</b></code> options should be
+ a perl-like regular expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>.
+ Any character can be used as a delimiter instead of <code><b>/</b></code>.
+ Escaping of the delimiter character in <code><i>pattern</i></code> or
+ <code><i>replacement</i></code> is not supported.
+ All the regular expressions for each category are pushed into a
+ category-specific stack with the last specified expression
+ considered first. The first match that succeeds is used. For the
+ <code><b>--one-accessor-regex</b></code> (accessors with cardinality one),
+ <code><b>--opt-accessor-regex</b></code> (accessors with cardinality optional), and
+ <code><b>--seq-accessor-regex</b></code> (accessors with cardinality sequence)
+ categories the <code><b>--accessor-regex</b></code> expressions are
+ used as a fallback. For the
+ <code><b>--one-modifier-regex</b></code>,
+ <code><b>--opt-modifier-regex</b></code>, and
+ <code><b>--seq-modifier-regex</b></code>
+ categories the <code><b>--modifier-regex</b></code> expressions are
+ used as a fallback. For the <code><b>--element-type-regex</b></code>
+ category the <code><b>--type-regex</b></code> expressions are
+ used as a fallback.</p>
+
+ <p>The type name expressions (<code><b>--type-regex</b></code>)
+ are evaluated on the name string that has the following
+ format:</p>
+
+ <p><code>[<i>namespace</i> ]<i>name</i>[,<i>name</i>][,<i>name</i>][,<i>name</i>]</code></p>
+
+ <p>The element type name expressions
+ (<code><b>--element-type-regex</b></code>), effective only when
+ the <code><b>--generate-element-type</b></code> option is specified,
+ are evaluated on the name string that has the following
+ format:</p>
+
+ <p><code><i>namespace</i> <i>name</i></code></p>
+
+ <p>In the type name format the <code><i>namespace</i></code> part
+ followed by a space is only present for global type names. For
+ global types and elements defined in schemas without a target
+ namespace, the <code><i>namespace</i></code> part is empty but
+ the space is still present. In the type name format after the
+ initial <code><i>name</i></code> component, up to three additional
+ <code><i>name</i></code> components can be present, separated
+ by commas. For example:</p>
+
+ <p><code><b>http://example.com/hello type</b></code></p>
+ <p><code><b>foo</b></code></p>
+ <p><code><b>foo,iterator</b></code></p>
+ <p><code><b>foo,const,iterator</b></code></p>
+
+ <p>The following set of predefined regular expressions is used to
+ transform type names when the upper-camel-case naming convention
+ is selected:</p>
+
+ <p><code><b>/(?:[^ ]* )?([^,]+)/\u$1/</b></code></p>
+ <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+)/\u$1\u$2/</b></code></p>
+ <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\u$1\u$2\u$3/</b></code></p>
+ <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\u$1\u$2\u$3\u$4/</b></code></p>
+
+ <p>The accessor and modifier expressions
+ (<code><b>--*accessor-regex</b></code> and
+ <code><b>--*modifier-regex</b></code>) are evaluated on the name string
+ that has the following format:</p>
+
+ <p><code><i>name</i>[,<i>name</i>][,<i>name</i>]</code></p>
+
+ <p>After the initial <code><i>name</i></code> component, up to two
+ additional <code><i>name</i></code> components can be present,
+ separated by commas. For example:</p>
+
+ <p><code><b>foo</b></code></p>
+ <p><code><b>dom,document</b></code></p>
+ <p><code><b>foo,default,value</b></code></p>
+
+ <p>The following set of predefined regular expressions is used to
+ transform accessor names when the <code><b>java</b></code> naming
+ convention is selected:</p>
+
+ <p><code><b>/([^,]+)/get\u$1/</b></code></p>
+ <p><code><b>/([^,]+),([^,]+)/get\u$1\u$2/</b></code></p>
+ <p><code><b>/([^,]+),([^,]+),([^,]+)/get\u$1\u$2\u$3/</b></code></p>
+
+ <p>For the parser, serializer, and enumerator categories, the
+ corresponding regular expressions are evaluated on local names of
+ elements and on enumeration values, respectively. For example, the
+ following predefined regular expression is used to transform parsing
+ function names when the <code><b>java</b></code> naming convention
+ is selected:</p>
+
+ <p><code><b>/(.+)/parse\u$1/</b></code></p>
+
+ <p>The const category is used to create C++ constant names for the
+ element/wildcard/text content ids in ordered types.</p>
+
+ <p>See also the REGEX AND SHELL QUOTING section below.</p>
+
+ <h1>TYPE MAP</h1>
+
+ <p>Type map files are used in C++/Parser to define a mapping between
+ XML Schema and C++ types. The compiler uses this information
+ to determine the return types of <code><b>post_*</b></code>
+ functions in parser skeletons corresponding to XML Schema
+ types as well as argument types for callbacks corresponding
+ to elements and attributes of these types.</p>
+
+ <p>The compiler has a set of predefined mapping rules that map
+ built-in XML Schema types to suitable C++ types (discussed
+ below) and all other types to <code><b>void</b></code>.
+ By providing your own type maps you can override these predefined
+ rules. The format of the type map file is presented below:
+ </p>
+
+ <pre>
+namespace &lt;schema-namespace> [&lt;cxx-namespace>]
+{
+ (include &lt;file-name>;)*
+ ([type] &lt;schema-type> &lt;cxx-ret-type> [&lt;cxx-arg-type>];)*
+}
+ </pre>
+
+ <p>Both <code><i>&lt;schema-namespace></i></code> and
+ <code><i>&lt;schema-type></i></code> are regex patterns while
+ <code><i>&lt;cxx-namespace></i></code>,
+ <code><i>&lt;cxx-ret-type></i></code>, and
+ <code><i>&lt;cxx-arg-type></i></code> are regex pattern
+ substitutions. All names can be optionally enclosed in
+ <code><b>" "</b></code>, for example, to include white-spaces.</p>
+
+ <p><code><i>&lt;schema-namespace></i></code> determines XML
+ Schema namespace. Optional <code><i>&lt;cxx-namespace></i></code>
+ is prefixed to every C++ type name in this namespace declaration.
+ <code><i>&lt;cxx-ret-type></i></code> is a C++ type name that is
+ used as a return type for the <code><b>post_*</b></code> functions.
+ Optional <code><i>&lt;cxx-arg-type></i></code> is an argument
+ type for callback functions corresponding to elements and attributes
+ of this type. If
+ <code><i>&lt;cxx-arg-type></i></code> is not specified, it defaults
+ to <code><i>&lt;cxx-ret-type></i></code> if <code><i>&lt;cxx-ret-type></i></code>
+ ends with <code><b>*</b></code> or <code><b>&amp;</b></code> (that is,
+ it is a pointer or a reference) and
+ <code><b>const</b>&nbsp;<i>&lt;cxx-ret-type></i><b>&amp;</b></code>
+ otherwise.
+ <code><i>&lt;file-name></i></code> is a file name either in the
+ <code><b>" "</b></code> or <code><b>&lt; ></b></code> format
+ and is added with the <code><b>#include</b></code> directive to
+ the generated code.</p>
+
+ <p>The <code><b>#</b></code> character starts a comment that ends
+ with a new line or end of file. To specify a name that contains
+ <code><b>#</b></code> enclose it in <code><b>" "</b></code>.
+ For example:</p>
+
+ <pre>
+namespace http://www.example.com/xmlns/my my
+{
+ include "my.hxx";
+
+ # Pass apples by value.
+ #
+ apple apple;
+
+ # Pass oranges as pointers.
+ #
+ orange orange_t*;
+}
+ </pre>
+
+ <p>In the example above, for the
+ <code><b>http://www.example.com/xmlns/my#orange</b></code>
+ XML Schema type, the <code><b>my::orange_t*</b></code> C++ type will
+ be used as both return and argument types.</p>
+
+ <p>Several namespace declarations can be specified in a single
+ file. The namespace declaration can also be completely
+ omitted to map types in a schema without a namespace. For
+ instance:</p>
+
+ <pre>
+include "my.hxx";
+apple apple;
+
+namespace http://www.example.com/xmlns/my
+{
+ orange "const orange_t*";
+}
+ </pre>
+
+ <p>The compiler has a number of predefined mapping rules that can be
+ presented as the following map files. The string-based XML Schema
+ built-in types are mapped to either <code><b>std::string</b></code>
+ or <code><b>std::wstring</b></code> depending on the character type
+ selected with the <code><b>--char-type</b></code> option
+ (<code><b>char</b></code> by default). The binary XML Schema types are
+ mapped to either <code>std::unique_ptr&lt;xml_schema::buffer></code>
+ or <code>std::auto_ptr&lt;xml_schema::buffer></code> depending on the C++
+ standard selected with the <code><b>--std</b></code> option
+ (<code><b>c++11</b></code> by default).</p>
+
+ <pre>
+namespace http://www.w3.org/2001/XMLSchema
+{
+ boolean bool bool;
+
+ byte "signed char" "signed char";
+ unsignedByte "unsigned char" "unsigned char";
+
+ short short short;
+ unsignedShort "unsigned short" "unsigned short";
+
+ int int int;
+ unsignedInt "unsigned int" "unsigned int";
+
+ long "long long" "long long";
+ unsignedLong "unsigned long long" "unsigned long long";
+
+ integer "long long" "long long";
+
+ negativeInteger "long long" "long long";
+ nonPositiveInteger "long long" "long long";
+
+ positiveInteger "unsigned long long" "unsigned long long";
+ nonNegativeInteger "unsigned long long" "unsigned long long";
+
+ float float float;
+ double double double;
+ decimal double double;
+
+ string std::string;
+ normalizedString std::string;
+ token std::string;
+ Name std::string;
+ NMTOKEN std::string;
+ NCName std::string;
+ ID std::string;
+ IDREF std::string;
+ language std::string;
+ anyURI std::string;
+
+ NMTOKENS xml_schema::string_sequence;
+ IDREFS xml_schema::string_sequence;
+
+ QName xml_schema::qname;
+
+ base64Binary std::[unique|auto]_ptr&lt;xml_schema::buffer>
+ std::[unique|auto]_ptr&lt;xml_schema::buffer>;
+ hexBinary std::[unique|auto]_ptr&lt;xml_schema::buffer>
+ std::[unique|auto]_ptr&lt;xml_schema::buffer>;
+
+ date xml_schema::date;
+ dateTime xml_schema::date_time;
+ duration xml_schema::duration;
+ gDay xml_schema::gday;
+ gMonth xml_schema::gmonth;
+ gMonthDay xml_schema::gmonth_day;
+ gYear xml_schema::gyear;
+ gYearMonth xml_schema::gyear_month;
+ time xml_schema::time;
+}
+ </pre>
+
+ <p>The last predefined rule maps anything that wasn't mapped by
+ previous rules to <code><b>void</b></code>:</p>
+
+ <pre>
+namespace .*
+{
+ .* void void;
+}
+ </pre>
+
+
+ <p>When you provide your own type maps with the
+ <code><b>--type-map</b></code> option, they are evaluated first.
+ This allows you to selectively override predefined rules.</p>
+
+ <h1>REGEX AND SHELL QUOTING</h1>
+
+ <p>When entering a regular expression argument in the shell
+ command line it is often necessary to use quoting (enclosing
+ the argument in <code><b>"&nbsp;"</b></code> or
+ <code><b>'&nbsp;'</b></code>) in order to prevent the shell
+ from interpreting certain characters, for example, spaces as
+ argument separators and <code><b>$</b></code> as variable
+ expansions.</p>
+
+ <p>Unfortunately it is hard to achieve this in a manner that is
+ portable across POSIX shells, such as those found on
+ GNU/Linux and UNIX, and Windows shell. For example, if you
+ use <code><b>"&nbsp;"</b></code> for quoting you will get a
+ wrong result with POSIX shells if your expression contains
+ <code><b>$</b></code>. The standard way of dealing with this
+ on POSIX systems is to use <code><b>'&nbsp;'</b></code> instead.
+ Unfortunately, Windows shell does not remove <code><b>'&nbsp;'</b></code>
+ from arguments when they are passed to applications. As a result you
+ may have to use <code><b>'&nbsp;'</b></code> for POSIX and
+ <code><b>"&nbsp;"</b></code> for Windows (<code><b>$</b></code> is
+ not treated as a special character on Windows).</p>
+
+ <p>Alternatively, you can save regular expression options into
+ a file, one option per line, and use this file with the
+ <code><b>--options-file</b></code> option. With this approach
+ you don't need to worry about shell quoting.</p>
+
+ <h1>DIAGNOSTICS</h1>
+
+ <p>If the input file is not a valid W3C XML Schema definition,
+ <code><b>xsd</b></code> will issue diagnostic messages to STDERR
+ and exit with non-zero exit code.</p>
+
+ <h1>BUGS</h1>
+
+ <p>Send bug reports to the
+ <a href="mailto:xsd-users@codesynthesis.com">xsd-users@codesynthesis.com</a> mailing list.</p>
+
+ </div>
+ <div id="footer">
+ Copyright &#169; 2005-2023 Code Synthesis.
+
+ <div id="terms">
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href="https://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </div>
+ </div>
+</div>
+</body>
+</html>
diff --git a/doc/xsd-epilogue.1 b/doc/xsd-epilogue.1
new file mode 100644
index 0000000..9ab1952
--- /dev/null
+++ b/doc/xsd-epilogue.1
@@ -0,0 +1,576 @@
+\"
+\" NAMING CONVENTION
+\"
+
+.SH NAMING CONVENTION
+The compiler can be instructed to use a particular naming convention in
+the generated code. A number of widely-used conventions can be selected
+using the
+.B --type-naming
+and
+.B --function-naming
+options. A custom naming convention can be achieved using the
+.BR --type-regex ,
+.BR --accessor-regex ,
+.BR --one-accessor-regex ,
+.BR --opt-accessor-regex ,
+.BR --seq-accessor-regex ,
+.BR --modifier-regex ,
+.BR --one-modifier-regex ,
+.BR --opt-modifier-regex ,
+.BR --seq-modifier-regex ,
+.BR --parser-regex ,
+.BR --serializer-regex ,
+.BR --const-regex ,
+.BR --enumerator-regex ,
+and
+.B --element-type-regex
+options.
+
+The
+.B --type-naming
+option specifies the convention that should be used for naming C++ types.
+Possible values for this option are
+.B knr
+(default),
+.BR ucc ,
+and
+.BR java .
+The
+.B knr
+value (stands for K&R) signifies the standard, lower-case naming convention
+with the underscore used as a word delimiter, for example: foo, foo_bar.
+The
+.B ucc
+(stands for upper-camel-case) and
+.B java
+values a synonyms for the same naming convention where the first letter
+of each word in the name is capitalized, for example: Foo, FooBar.
+
+Similarly, the
+.B --function-naming
+option specifies the convention that should be used for naming C++ functions.
+Possible values for this option are
+.B knr
+(default),
+.BR lcc ,
+and
+.BR java .
+The
+.B knr
+value (stands for K&R) signifies the standard, lower-case naming convention
+with the underscore used as a word delimiter, for example: foo(), foo_bar().
+The
+.B lcc
+value (stands for lower-camel-case) signifies a naming convention where the
+first letter of each word except the first is capitalized, for example: foo(),
+fooBar(). The
+.B ucc
+value (stands for upper-camel-case) signifies a naming convention where the
+first letter of each word is capitalized, for example: Foo(), FooBar(). The
+.B java
+naming convention is similar to the lower-camel-case one except that accessor
+functions are prefixed with get, modifier functions are prefixed with set,
+parsing functions are prefixed with parse, and serialization functions are
+prefixed with serialize, for example: getFoo(), setFooBar(), parseRoot(),
+serializeRoot().
+
+Note that the naming conventions specified with the
+.B --type-naming
+and
+.B --function-naming
+options perform only limited transformations on the
+names that come from the schema in the form of type, attribute, and element
+names. In other words, to get consistent results, your schemas should follow
+a similar naming convention as the one you would like to have in the generated
+code. Alternatively, you can use the
+.B --*-regex
+options (discussed below) to perform further transformations on the names
+that come from the schema.
+
+The
+.BR --type-regex ,
+.BR --accessor-regex ,
+.BR --one-accessor-regex ,
+.BR --opt-accessor-regex ,
+.BR --seq-accessor-regex ,
+.BR --modifier-regex ,
+.BR --one-modifier-regex ,
+.BR --opt-modifier-regex ,
+.BR --seq-modifier-regex ,
+.BR --parser-regex ,
+.BR --serializer-regex ,
+.BR --const-regex ,
+.BR --enumerator-regex ,
+and
+.B --element-type-regex
+options allow you to specify extra regular expressions for each name
+category in addition to the predefined set that is added depending on
+the
+.B --type-naming
+and
+.B --function-naming
+options. Expressions that are provided with the
+.B --*-regex
+options are evaluated prior to any predefined expressions. This allows
+you to selectively override some or all of the predefined transformations.
+When debugging your own expressions, it is often useful to see which
+expressions match which names. The
+.B --name-regex-trace
+option allows you to trace the process of applying
+regular expressions to names.
+
+The value for the
+.B --*-regex
+options should be a perl-like regular expression in the form
+.BI / pattern / replacement /\fR.
+Any character can be used as a delimiter instead of
+.BR / .
+Escaping of the delimiter character in
+.I pattern
+or
+.I replacement
+is not supported. All the regular expressions for each category are pushed
+into a category-specific stack with the last specified expression
+considered first. The first match that succeeds is used. For the
+.B --one-accessor-regex
+(accessors with cardinality one),
+.B --opt-accessor-regex
+(accessors with cardinality optional), and
+.B --seq-accessor-regex
+(accessors with cardinality sequence) categories the
+.B --accessor-regex
+expressions are used as a fallback. For the
+.BR --one-modifier-regex ,
+.BR --opt-modifier-regex ,
+and
+.B --seq-modifier-regex
+categories the
+.B --modifier-regex
+expressions are used as a fallback. For the
+.B --element-type-regex
+category the
+.B --type-regex
+expressions are used as a fallback.
+
+The type name expressions
+.RB ( --type-regex )
+are evaluated on the name string that has the following format:
+
+[\fInamespace \fR]\fIname\fR[\fB,\fIname\fR][\fB,\fIname\fR][\fB,\fIname\fR]
+
+The element type name expressions
+.RB ( --element-type-regex ),
+effective only when the
+.B --generate-element-type
+option is specified, are evaluated on the name string that has the following
+format:
+
+.I namespace name
+
+In the type name format the
+.I namespace
+part followed by a space is only present for global type names. For global
+types and elements defined in schemas without a target namespace, the
+.I namespace
+part is empty but the space is still present. In the type name format after
+the initial
+.I name
+component, up to three additional
+.I name
+components can be present, separated by commas. For example:
+
+.B http://example.com/hello type
+
+.B foo
+
+.B foo,iterator
+
+.B foo,const,iterator
+
+The following set of predefined regular expressions is used to transform
+type names when the upper-camel-case naming convention is selected:
+
+.B /(?:[^ ]* )?([^,]+)/\\\\u$1/
+
+.B /(?:[^ ]* )?([^,]+),([^,]+)/\\\\u$1\\\\u$2/
+
+.B /(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\\\\u$1\\\\u$2\\\\u$3/
+
+.B /(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\\\\u$1\\\\u$2\\\\u$3\\\\u$4/
+
+The accessor and modifier expressions
+.RB ( --*accessor-regex
+and
+.BR --*modifier-regex )
+are evaluated on the name string that has the following format:
+
+\fIname\fR[\fB,\fIname\fR][\fB,\fIname\fR]
+
+After the initial
+.I name
+component, up to two additional
+.I name
+components can be present, separated by commas. For example:
+
+.B foo
+
+.B dom,document
+
+.B foo,default,value
+
+The following set of predefined regular expressions is used to transform
+accessor names when the
+.B java
+naming convention is selected:
+
+.B /([^,]+)/get\\\\u$1/
+
+.B /([^,]+),([^,]+)/get\\\\u$1\\\\u$2/
+
+.B /([^,]+),([^,]+),([^,]+)/get\\\\u$1\\\\u$2\\\\u$3/
+
+For the parser, serializer, and enumerator categories, the corresponding
+regular expressions are evaluated on local names of elements and on
+enumeration values, respectively. For example, the following predefined
+regular expression is used to transform parsing function names when the
+.B java
+naming convention is selected:
+
+.B /(.+)/parse\\\\u$1/
+
+The const category is used to create C++ constant names for the
+element/wildcard/text content ids in ordered types.
+
+See also the REGEX AND SHELL QUOTING section below.
+
+\"
+\" TYPE MAP
+\"
+.SH TYPE MAP
+Type map files are used in C++/Parser to define a mapping between XML
+Schema and C++ types. The compiler uses this information to determine
+the return types of
+.B post_*
+functions in parser skeletons corresponding to XML Schema types
+as well as argument types for callbacks corresponding to elements
+and attributes of these types.
+
+The compiler has a set of predefined mapping rules that map built-in
+XML Schema types to suitable C++ types (discussed below) and all
+other types to
+.BR void .
+By providing your own type maps you can override these predefined rules.
+The format of the type map file is presented below:
+
+.RS
+.B namespace
+.I schema-namespace
+[
+.I cxx-namespace
+]
+.br
+.B {
+.br
+ (
+.B include
+.IB file-name ;
+)*
+.br
+ ([
+.B type
+]
+.I schema-type cxx-ret-type
+[
+.I cxx-arg-type
+.RB ] ;
+)*
+.br
+.B }
+.br
+.RE
+
+Both
+.I schema-namespace
+and
+.I schema-type
+are regex patterns while
+.IR cxx-namespace ,
+.IR cxx-ret-type ,
+and
+.I cxx-arg-type
+are regex pattern substitutions. All names can be optionally enclosed
+in \fR" "\fR, for example, to include white-spaces.
+
+.I schema-namespace
+determines XML Schema namespace. Optional
+.I cxx-namespace
+is prefixed to every C++ type name in this namespace declaration.
+.I cxx-ret-type
+is a C++ type name that is used as a return type for the
+.B post_*
+functions. Optional
+.I cxx-arg-type
+is an argument type for callback functions corresponding to elements and
+attributes of this type. If
+.I cxx-arg-type
+is not specified, it defaults to
+.I cxx-ret-type
+if
+.I cxx-ret-type
+ends with
+.B *
+or
+.B &
+(that is, it is a pointer or a reference) and
+.B const
+\fIcxx-ret-type\fB&\fR otherwise.
+.I file-name
+is a file name either in the \fR" "\fR or < > format and is added with the
+.B #include
+directive to the generated code.
+
+The \fB#\fR character starts a comment that ends with a new line or end of
+file. To specify a name that contains \fB#\fR enclose it in \fR" "\fR. For
+example:
+
+.RS
+namespace http://www.example.com/xmlns/my my
+.br
+{
+.br
+ include "my.hxx";
+.br
+
+ # Pass apples by value.
+ #
+ apple apple;
+.br
+
+ # Pass oranges as pointers.
+ #
+ orange orange_t*;
+.br
+}
+.br
+.RE
+
+In the example above, for the
+.B http://www.example.com/xmlns/my#orange
+XML Schema type, the
+.B my::orange_t*
+C++ type will be used as both return and argument types.
+
+Several namespace declarations can be specified in a single file.
+The namespace declaration can also be completely omitted to map
+types in a schema without a namespace. For instance:
+
+.RS
+include "my.hxx";
+.br
+apple apple;
+.br
+
+namespace http://www.example.com/xmlns/my
+.br
+{
+.br
+ orange "const orange_t*";
+.br
+}
+.br
+.RE
+
+The compiler has a number of predefined mapping rules that can be
+presented as the following map files. The string-based XML Schema
+built-in types are mapped to either
+.B std::string
+or
+.B std::wstring
+depending on the character type selected with the
+.B --char-type
+option
+.RB ( char
+by default). The binary XML Schema types are mapped to either
+.B std::unique_ptr<xml_schema::buffer>
+or
+.B std::auto_ptr<xml_schema::buffer>
+depending on the C++ standard selected with the
+.B --std
+option
+.RB ( c++11
+by default).
+
+.RS
+namespace http://www.w3.org/2001/XMLSchema
+.br
+{
+.br
+ boolean bool bool;
+.br
+
+ byte "signed char" "signed char";
+.br
+ unsignedByte "unsigned char" "unsigned char";
+.br
+
+ short short short;
+.br
+ unsignedShort "unsigned short" "unsigned short";
+.br
+
+ int int int;
+.br
+ unsignedInt "unsigned int" "unsigned int";
+.br
+
+ long "long long" "long long";
+.br
+ unsignedLong "unsigned long long" "unsigned long long";
+.br
+
+ integer "long long" "long long";
+.br
+
+ negativeInteger "long long" "long long";
+.br
+ nonPositiveInteger "long long" "long long";
+.br
+
+ positiveInteger "unsigned long long" "unsigned long long";
+.br
+ nonNegativeInteger "unsigned long long" "unsigned long long";
+.br
+
+ float float float;
+.br
+ double double double;
+.br
+ decimal double double;
+.br
+
+ string std::string;
+.br
+ normalizedString std::string;
+.br
+ token std::string;
+.br
+ Name std::string;
+.br
+ NMTOKEN std::string;
+.br
+ NCName std::string;
+.br
+ ID std::string;
+.br
+ IDREF std::string;
+.br
+ language std::string;
+.br
+ anyURI std::string;
+.br
+
+ NMTOKENS xml_schema::string_sequence;
+.br
+ IDREFS xml_schema::string_sequence;
+.br
+
+ QName xml_schema::qname;
+.br
+
+ base64Binary std::[unique|auto]_ptr<xml_schema::buffer>
+.br
+ std::[unique|auto]_ptr<xml_schema::buffer>;
+.br
+ hexBinary std::[unique|auto]_ptr<xml_schema::buffer>
+.br
+ std::[unique|auto]_ptr<xml_schema::buffer>;
+.br
+
+ date xml_schema::date;
+.br
+ dateTime xml_schema::date_time;
+.br
+ duration xml_schema::duration;
+.br
+ gDay xml_schema::gday;
+.br
+ gMonth xml_schema::gmonth;
+.br
+ gMonthDay xml_schema::gmonth_day;
+.br
+ gYear xml_schema::gyear;
+.br
+ gYearMonth xml_schema::gyear_month;
+.br
+ time xml_schema::time;
+.br
+}
+.br
+.RE
+
+
+The last predefined rule maps anything that wasn't mapped by previous
+rules to
+.BR void :
+
+.RS
+namespace .*
+.br
+{
+.br
+ .* void void;
+.br
+}
+.br
+.RE
+
+When you provide your own type maps with the
+.B --type-map
+option, they are evaluated first. This allows you to selectively override
+predefined rules.
+
+.\"
+.\" REGEX AND SHELL QUOTING
+.\"
+.SH REGEX AND SHELL QUOTING
+When entering a regular expression argument in the shell command line
+it is often necessary to use quoting (enclosing the argument in " "
+or ' ') in order to prevent the shell from interpreting certain
+characters, for example, spaces as argument separators and $ as
+variable expansions.
+
+Unfortunately it is hard to achieve this in a manner that is portable
+across POSIX shells, such as those found on GNU/Linux and UNIX, and
+Windows shell. For example, if you use " " for quoting you will get
+a wrong result with POSIX shells if your expression contains $. The
+standard way of dealing with this on POSIX systems is to use ' '
+instead. Unfortunately, Windows shell does not remove ' ' from
+arguments when they are passed to applications. As a result you may
+have to use ' ' for POSIX and " " for Windows ($ is not treated as
+a special character on Windows).
+
+Alternatively, you can save regular expression options into a file,
+one option per line, and use this file with the
+.B --options-file
+option. With this approach you don't need to worry about shell quoting.
+
+.\"
+.\" DIAGNOSTICS
+.\"
+.SH DIAGNOSTICS
+If the input file is not a valid W3C XML Schema definition,
+.B xsd
+will issue diagnostic messages to
+.B STDERR
+and exit with non-zero exit code.
+.SH BUGS
+Send bug reports to the xsd-users@codesynthesis.com mailing list.
+.SH COPYRIGHT
+Copyright (c) $copyright$.
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.2; with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. Copy of the license can be obtained from
+https://www.codesynthesis.com/licenses/fdl-1.2.txt
diff --git a/doc/xsd-epilogue.xhtml b/doc/xsd-epilogue.xhtml
new file mode 100644
index 0000000..178cf8b
--- /dev/null
+++ b/doc/xsd-epilogue.xhtml
@@ -0,0 +1,429 @@
+ <h1>NAMING CONVENTION</h1>
+
+ <p>The compiler can be instructed to use a particular naming
+ convention in the generated code. A number of widely-used
+ conventions can be selected using the <code><b>--type-naming</b></code>
+ and <code><b>--function-naming</b></code> options. A custom
+ naming convention can be achieved using the
+ <code><b>--type-regex</b></code>,
+ <code><b>--accessor-regex</b></code>,
+ <code><b>--one-accessor-regex</b></code>,
+ <code><b>--opt-accessor-regex</b></code>,
+ <code><b>--seq-accessor-regex</b></code>,
+ <code><b>--modifier-regex</b></code>,
+ <code><b>--one-modifier-regex</b></code>,
+ <code><b>--opt-modifier-regex</b></code>,
+ <code><b>--seq-modifier-regex</b></code>,
+ <code><b>--parser-regex</b></code>,
+ <code><b>--serializer-regex</b></code>,
+ <code><b>--const-regex</b></code>,
+ <code><b>--enumerator-regex</b></code>, and
+ <code><b>--element-type-regex</b></code> options.
+ </p>
+
+ <p>The <code><b>--type-naming</b></code> option specifies the
+ convention that should be used for naming C++ types. Possible
+ values for this option are <code><b>knr</b></code> (default),
+ <code><b>ucc</b></code>, and <code><b>java</b></code>. The
+ <code><b>knr</b></code> value (stands for K&amp;R) signifies
+ the standard, lower-case naming convention with the underscore
+ used as a word delimiter, for example: <code>foo</code>,
+ <code>foo_bar</code>. The <code><b>ucc</b></code> (stands
+ for upper-camel-case) and
+ <code><b>java</b></code> values a synonyms for the same
+ naming convention where the first letter of each word in the
+ name is capitalized, for example: <code>Foo</code>,
+ <code>FooBar</code>.</p>
+
+ <p>Similarly, the <code><b>--function-naming</b></code> option
+ specifies the convention that should be used for naming C++
+ functions. Possible values for this option are <code><b>knr</b></code>
+ (default), <code><b>lcc</b></code>, <code><b>ucc</b></code>, and
+ <code><b>java</b></code>. The <code><b>knr</b></code> value (stands
+ for K&amp;R) signifies the standard, lower-case naming convention
+ with the underscore used as a word delimiter, for example:
+ <code>foo()</code>, <code>foo_bar()</code>. The <code><b>lcc</b></code>
+ value (stands for lower-camel-case) signifies a naming convention
+ where the first letter of each word except the first is capitalized,
+ for example: <code>foo()</code>, <code>fooBar()</code>. The
+ <code><b>ucc</b></code> value (stands for upper-camel-case) signifies
+ a naming convention where the first letter of each word is capitalized,
+ for example: <code>Foo()</code>, <code>FooBar()</code>.
+ The <code><b>java</b></code> naming convention is similar to
+ the lower-camel-case one except that accessor functions are prefixed
+ with <code>get</code>, modifier functions are prefixed
+ with <code>set</code>, parsing functions are prefixed
+ with <code>parse</code>, and serialization functions are
+ prefixed with <code>serialize</code>, for example:
+ <code>getFoo()</code>, <code>setFooBar()</code>,
+ <code>parseRoot()</code>, <code>serializeRoot()</code>.</p>
+
+ <p>Note that the naming conventions specified with the
+ <code><b>--type-naming</b></code> and
+ <code><b>--function-naming</b></code> options perform only limited
+ transformations on the names that come from the schema in the
+ form of type, attribute, and element names. In other words, to
+ get consistent results, your schemas should follow a similar
+ naming convention as the one you would like to have in the
+ generated code. Alternatively, you can use the
+ <code><b>--*-regex</b></code> options (discussed below)
+ to perform further transformations on the names that come from
+ the schema.</p>
+
+ <p>The
+ <code><b>--type-regex</b></code>,
+ <code><b>--accessor-regex</b></code>,
+ <code><b>--one-accessor-regex</b></code>,
+ <code><b>--opt-accessor-regex</b></code>,
+ <code><b>--seq-accessor-regex</b></code>,
+ <code><b>--modifier-regex</b></code>,
+ <code><b>--one-modifier-regex</b></code>,
+ <code><b>--opt-modifier-regex</b></code>,
+ <code><b>--seq-modifier-regex</b></code>,
+ <code><b>--parser-regex</b></code>,
+ <code><b>--serializer-regex</b></code>,
+ <code><b>--const-regex</b></code>,
+ <code><b>--enumerator-regex</b></code>, and
+ <code><b>--element-type-regex</b></code> options allow you to
+ specify extra regular expressions for each name category in
+ addition to the predefined set that is added depending on
+ the <code><b>--type-naming</b></code> and
+ <code><b>--function-naming</b></code> options. Expressions
+ that are provided with the <code><b>--*-regex</b></code>
+ options are evaluated prior to any predefined expressions.
+ This allows you to selectively override some or all of the
+ predefined transformations. When debugging your own expressions,
+ it is often useful to see which expressions match which names.
+ The <code><b>--name-regex-trace</b></code> option allows you
+ to trace the process of applying regular expressions to
+ names.</p>
+
+ <p>The value for the <code><b>--*-regex</b></code> options should be
+ a perl-like regular expression in the form
+ <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>.
+ Any character can be used as a delimiter instead of <code><b>/</b></code>.
+ Escaping of the delimiter character in <code><i>pattern</i></code> or
+ <code><i>replacement</i></code> is not supported.
+ All the regular expressions for each category are pushed into a
+ category-specific stack with the last specified expression
+ considered first. The first match that succeeds is used. For the
+ <code><b>--one-accessor-regex</b></code> (accessors with cardinality one),
+ <code><b>--opt-accessor-regex</b></code> (accessors with cardinality optional), and
+ <code><b>--seq-accessor-regex</b></code> (accessors with cardinality sequence)
+ categories the <code><b>--accessor-regex</b></code> expressions are
+ used as a fallback. For the
+ <code><b>--one-modifier-regex</b></code>,
+ <code><b>--opt-modifier-regex</b></code>, and
+ <code><b>--seq-modifier-regex</b></code>
+ categories the <code><b>--modifier-regex</b></code> expressions are
+ used as a fallback. For the <code><b>--element-type-regex</b></code>
+ category the <code><b>--type-regex</b></code> expressions are
+ used as a fallback.</p>
+
+ <p>The type name expressions (<code><b>--type-regex</b></code>)
+ are evaluated on the name string that has the following
+ format:</p>
+
+ <p><code>[<i>namespace</i> ]<i>name</i>[,<i>name</i>][,<i>name</i>][,<i>name</i>]</code></p>
+
+ <p>The element type name expressions
+ (<code><b>--element-type-regex</b></code>), effective only when
+ the <code><b>--generate-element-type</b></code> option is specified,
+ are evaluated on the name string that has the following
+ format:</p>
+
+ <p><code><i>namespace</i> <i>name</i></code></p>
+
+ <p>In the type name format the <code><i>namespace</i></code> part
+ followed by a space is only present for global type names. For
+ global types and elements defined in schemas without a target
+ namespace, the <code><i>namespace</i></code> part is empty but
+ the space is still present. In the type name format after the
+ initial <code><i>name</i></code> component, up to three additional
+ <code><i>name</i></code> components can be present, separated
+ by commas. For example:</p>
+
+ <p><code><b>http://example.com/hello type</b></code></p>
+ <p><code><b>foo</b></code></p>
+ <p><code><b>foo,iterator</b></code></p>
+ <p><code><b>foo,const,iterator</b></code></p>
+
+ <p>The following set of predefined regular expressions is used to
+ transform type names when the upper-camel-case naming convention
+ is selected:</p>
+
+ <p><code><b>/(?:[^ ]* )?([^,]+)/\u$1/</b></code></p>
+ <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+)/\u$1\u$2/</b></code></p>
+ <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\u$1\u$2\u$3/</b></code></p>
+ <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\u$1\u$2\u$3\u$4/</b></code></p>
+
+ <p>The accessor and modifier expressions
+ (<code><b>--*accessor-regex</b></code> and
+ <code><b>--*modifier-regex</b></code>) are evaluated on the name string
+ that has the following format:</p>
+
+ <p><code><i>name</i>[,<i>name</i>][,<i>name</i>]</code></p>
+
+ <p>After the initial <code><i>name</i></code> component, up to two
+ additional <code><i>name</i></code> components can be present,
+ separated by commas. For example:</p>
+
+ <p><code><b>foo</b></code></p>
+ <p><code><b>dom,document</b></code></p>
+ <p><code><b>foo,default,value</b></code></p>
+
+ <p>The following set of predefined regular expressions is used to
+ transform accessor names when the <code><b>java</b></code> naming
+ convention is selected:</p>
+
+ <p><code><b>/([^,]+)/get\u$1/</b></code></p>
+ <p><code><b>/([^,]+),([^,]+)/get\u$1\u$2/</b></code></p>
+ <p><code><b>/([^,]+),([^,]+),([^,]+)/get\u$1\u$2\u$3/</b></code></p>
+
+ <p>For the parser, serializer, and enumerator categories, the
+ corresponding regular expressions are evaluated on local names of
+ elements and on enumeration values, respectively. For example, the
+ following predefined regular expression is used to transform parsing
+ function names when the <code><b>java</b></code> naming convention
+ is selected:</p>
+
+ <p><code><b>/(.+)/parse\u$1/</b></code></p>
+
+ <p>The const category is used to create C++ constant names for the
+ element/wildcard/text content ids in ordered types.</p>
+
+ <p>See also the REGEX AND SHELL QUOTING section below.</p>
+
+ <h1>TYPE MAP</h1>
+
+ <p>Type map files are used in C++/Parser to define a mapping between
+ XML Schema and C++ types. The compiler uses this information
+ to determine the return types of <code><b>post_*</b></code>
+ functions in parser skeletons corresponding to XML Schema
+ types as well as argument types for callbacks corresponding
+ to elements and attributes of these types.</p>
+
+ <p>The compiler has a set of predefined mapping rules that map
+ built-in XML Schema types to suitable C++ types (discussed
+ below) and all other types to <code><b>void</b></code>.
+ By providing your own type maps you can override these predefined
+ rules. The format of the type map file is presented below:
+ </p>
+
+ <pre>
+namespace &lt;schema-namespace> [&lt;cxx-namespace>]
+{
+ (include &lt;file-name>;)*
+ ([type] &lt;schema-type> &lt;cxx-ret-type> [&lt;cxx-arg-type>];)*
+}
+ </pre>
+
+ <p>Both <code><i>&lt;schema-namespace></i></code> and
+ <code><i>&lt;schema-type></i></code> are regex patterns while
+ <code><i>&lt;cxx-namespace></i></code>,
+ <code><i>&lt;cxx-ret-type></i></code>, and
+ <code><i>&lt;cxx-arg-type></i></code> are regex pattern
+ substitutions. All names can be optionally enclosed in
+ <code><b>" "</b></code>, for example, to include white-spaces.</p>
+
+ <p><code><i>&lt;schema-namespace></i></code> determines XML
+ Schema namespace. Optional <code><i>&lt;cxx-namespace></i></code>
+ is prefixed to every C++ type name in this namespace declaration.
+ <code><i>&lt;cxx-ret-type></i></code> is a C++ type name that is
+ used as a return type for the <code><b>post_*</b></code> functions.
+ Optional <code><i>&lt;cxx-arg-type></i></code> is an argument
+ type for callback functions corresponding to elements and attributes
+ of this type. If
+ <code><i>&lt;cxx-arg-type></i></code> is not specified, it defaults
+ to <code><i>&lt;cxx-ret-type></i></code> if <code><i>&lt;cxx-ret-type></i></code>
+ ends with <code><b>*</b></code> or <code><b>&amp;</b></code> (that is,
+ it is a pointer or a reference) and
+ <code><b>const</b>&nbsp;<i>&lt;cxx-ret-type></i><b>&amp;</b></code>
+ otherwise.
+ <code><i>&lt;file-name></i></code> is a file name either in the
+ <code><b>" "</b></code> or <code><b>&lt; ></b></code> format
+ and is added with the <code><b>#include</b></code> directive to
+ the generated code.</p>
+
+ <p>The <code><b>#</b></code> character starts a comment that ends
+ with a new line or end of file. To specify a name that contains
+ <code><b>#</b></code> enclose it in <code><b>" "</b></code>.
+ For example:</p>
+
+ <pre>
+namespace http://www.example.com/xmlns/my my
+{
+ include "my.hxx";
+
+ # Pass apples by value.
+ #
+ apple apple;
+
+ # Pass oranges as pointers.
+ #
+ orange orange_t*;
+}
+ </pre>
+
+ <p>In the example above, for the
+ <code><b>http://www.example.com/xmlns/my#orange</b></code>
+ XML Schema type, the <code><b>my::orange_t*</b></code> C++ type will
+ be used as both return and argument types.</p>
+
+ <p>Several namespace declarations can be specified in a single
+ file. The namespace declaration can also be completely
+ omitted to map types in a schema without a namespace. For
+ instance:</p>
+
+ <pre>
+include "my.hxx";
+apple apple;
+
+namespace http://www.example.com/xmlns/my
+{
+ orange "const orange_t*";
+}
+ </pre>
+
+ <p>The compiler has a number of predefined mapping rules that can be
+ presented as the following map files. The string-based XML Schema
+ built-in types are mapped to either <code><b>std::string</b></code>
+ or <code><b>std::wstring</b></code> depending on the character type
+ selected with the <code><b>--char-type</b></code> option
+ (<code><b>char</b></code> by default). The binary XML Schema types are
+ mapped to either <code>std::unique_ptr&lt;xml_schema::buffer></code>
+ or <code>std::auto_ptr&lt;xml_schema::buffer></code> depending on the C++
+ standard selected with the <code><b>--std</b></code> option
+ (<code><b>c++11</b></code> by default).</p>
+
+ <pre>
+namespace http://www.w3.org/2001/XMLSchema
+{
+ boolean bool bool;
+
+ byte "signed char" "signed char";
+ unsignedByte "unsigned char" "unsigned char";
+
+ short short short;
+ unsignedShort "unsigned short" "unsigned short";
+
+ int int int;
+ unsignedInt "unsigned int" "unsigned int";
+
+ long "long long" "long long";
+ unsignedLong "unsigned long long" "unsigned long long";
+
+ integer "long long" "long long";
+
+ negativeInteger "long long" "long long";
+ nonPositiveInteger "long long" "long long";
+
+ positiveInteger "unsigned long long" "unsigned long long";
+ nonNegativeInteger "unsigned long long" "unsigned long long";
+
+ float float float;
+ double double double;
+ decimal double double;
+
+ string std::string;
+ normalizedString std::string;
+ token std::string;
+ Name std::string;
+ NMTOKEN std::string;
+ NCName std::string;
+ ID std::string;
+ IDREF std::string;
+ language std::string;
+ anyURI std::string;
+
+ NMTOKENS xml_schema::string_sequence;
+ IDREFS xml_schema::string_sequence;
+
+ QName xml_schema::qname;
+
+ base64Binary std::[unique|auto]_ptr&lt;xml_schema::buffer>
+ std::[unique|auto]_ptr&lt;xml_schema::buffer>;
+ hexBinary std::[unique|auto]_ptr&lt;xml_schema::buffer>
+ std::[unique|auto]_ptr&lt;xml_schema::buffer>;
+
+ date xml_schema::date;
+ dateTime xml_schema::date_time;
+ duration xml_schema::duration;
+ gDay xml_schema::gday;
+ gMonth xml_schema::gmonth;
+ gMonthDay xml_schema::gmonth_day;
+ gYear xml_schema::gyear;
+ gYearMonth xml_schema::gyear_month;
+ time xml_schema::time;
+}
+ </pre>
+
+ <p>The last predefined rule maps anything that wasn't mapped by
+ previous rules to <code><b>void</b></code>:</p>
+
+ <pre>
+namespace .*
+{
+ .* void void;
+}
+ </pre>
+
+
+ <p>When you provide your own type maps with the
+ <code><b>--type-map</b></code> option, they are evaluated first.
+ This allows you to selectively override predefined rules.</p>
+
+ <h1>REGEX AND SHELL QUOTING</h1>
+
+ <p>When entering a regular expression argument in the shell
+ command line it is often necessary to use quoting (enclosing
+ the argument in <code><b>"&nbsp;"</b></code> or
+ <code><b>'&nbsp;'</b></code>) in order to prevent the shell
+ from interpreting certain characters, for example, spaces as
+ argument separators and <code><b>$</b></code> as variable
+ expansions.</p>
+
+ <p>Unfortunately it is hard to achieve this in a manner that is
+ portable across POSIX shells, such as those found on
+ GNU/Linux and UNIX, and Windows shell. For example, if you
+ use <code><b>"&nbsp;"</b></code> for quoting you will get a
+ wrong result with POSIX shells if your expression contains
+ <code><b>$</b></code>. The standard way of dealing with this
+ on POSIX systems is to use <code><b>'&nbsp;'</b></code> instead.
+ Unfortunately, Windows shell does not remove <code><b>'&nbsp;'</b></code>
+ from arguments when they are passed to applications. As a result you
+ may have to use <code><b>'&nbsp;'</b></code> for POSIX and
+ <code><b>"&nbsp;"</b></code> for Windows (<code><b>$</b></code> is
+ not treated as a special character on Windows).</p>
+
+ <p>Alternatively, you can save regular expression options into
+ a file, one option per line, and use this file with the
+ <code><b>--options-file</b></code> option. With this approach
+ you don't need to worry about shell quoting.</p>
+
+ <h1>DIAGNOSTICS</h1>
+
+ <p>If the input file is not a valid W3C XML Schema definition,
+ <code><b>xsd</b></code> will issue diagnostic messages to STDERR
+ and exit with non-zero exit code.</p>
+
+ <h1>BUGS</h1>
+
+ <p>Send bug reports to the
+ <a href="mailto:xsd-users@codesynthesis.com">xsd-users@codesynthesis.com</a> mailing list.</p>
+
+ </div>
+ <div id="footer">
+ Copyright &#169; $copyright$.
+
+ <div id="terms">
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the
+ <a href="https://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
+ Documentation License, version 1.2</a>; with no Invariant Sections,
+ no Front-Cover Texts and no Back-Cover Texts.
+ </div>
+ </div>
+</div>
+</body>
+</html>
diff --git a/xsd/doc/xsd-parser-header.1 b/doc/xsd-parser-header.1
index e0cf84e..e0cf84e 100644
--- a/xsd/doc/xsd-parser-header.1
+++ b/doc/xsd-parser-header.1
diff --git a/xsd/doc/xsd-parser-header.xhtml b/doc/xsd-parser-header.xhtml
index 94fa2c1..94fa2c1 100644
--- a/xsd/doc/xsd-parser-header.xhtml
+++ b/doc/xsd-parser-header.xhtml
diff --git a/doc/xsd-prologue.1 b/doc/xsd-prologue.1
new file mode 100644
index 0000000..33f039e
--- /dev/null
+++ b/doc/xsd-prologue.1
@@ -0,0 +1,119 @@
+.\" Process this file with
+.\" groff -man -Tascii xsd.1
+.\"
+.TH XSD 1 "$date$" "$project$ $version$"
+.SH NAME
+xsd \- W3C XML Schema to C++ Compiler
+.\"
+.\"
+.\"
+.\"--------------------------------------------------------------------
+.SH SYNOPSIS
+.\"--------------------------------------------------------------------
+.B xsd
+.I command
+.B [
+.I options
+.B ]
+.I file
+.B [
+.I file
+.B ...]
+.in
+.B xsd help
+.B [
+.I command
+.B ]
+.in
+.B xsd version
+.\"
+.\"
+.\"
+.\"--------------------------------------------------------------------
+.SH DESCRIPTION
+.\"--------------------------------------------------------------------
+.B xsd
+generates vocabulary-specific, statically-typed C++ mapping from W3C XML
+Schema definitions. Particular mapping to produce is selected by a
+.IR command .
+Each mapping has a number of mapping-specific
+.I options
+that should appear, if any, after the
+.IR command .
+Input files should be W3C XML Schema definitions. The exact set of the
+generated files depends on the selected mapping and options.
+.\"
+.\"
+.\"
+.\"--------------------------------------------------------------------
+.SH COMMANDS
+.\"--------------------------------------------------------------------
+.IP \fBcxx-tree\fR
+Generate the C++/Tree mapping. For each input file in the form
+.B name.xsd
+the following C++ files are generated:
+.B name.hxx
+(header file),
+.B name.ixx
+(inline file, generated only if the
+.B --generate-inline
+option is specified),
+.B name.cxx
+(source file), and
+.B name-fwd.hxx
+(forward declaration file, generated only if the
+.B --generate-forward
+option is specified).
+
+.IP \fBcxx-parser\fR
+Generate the C++/Parser mapping. For each input file in the form
+.B name.xsd
+the following C++ files are generated:
+.B name-pskel.hxx
+(parser skeleton header file),
+.B name-pskel.ixx
+(parser skeleton inline file, generated only if the
+.B --generate-inline
+option is specified), and
+.B name-pskel.cxx
+(parser skeleton source file). If the
+.B --generate-noop-impl
+or
+.B --generate-print-impl
+option is specified, the following additional sample implementation files
+are generated:
+.B name-pimpl.hxx
+(parser implementation header file) and
+.B name-pimpl.cxx
+(parser implementation source file). If the
+.B --generate-test-driver
+option is specified, the additional
+.B name-driver.cxx
+test driver file is generated.
+
+.IP \fBhelp\fR
+Print usage information and exit. Use
+.PP
+.RS
+.RS 3
+.B xsd help
+.I command
+.RE
+.PP
+for command-specific help.
+.RE
+.IP \fBversion\fR
+Print version and exit.
+.\"--------------------------------------------------------------------
+.SH OPTIONS
+.\"--------------------------------------------------------------------
+Command-specific
+.IR options ,
+if any, should appear after the corresponding
+.IR command .
+
+.\"
+.\" Common options.
+.\"
+.SS common options
+.
diff --git a/doc/xsd-prologue.xhtml b/doc/xsd-prologue.xhtml
new file mode 100644
index 0000000..e52e1fc
--- /dev/null
+++ b/doc/xsd-prologue.xhtml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+ <title>$project$ $version$ Compiler Command Line Manual</title>
+
+ <meta name="version" content="$version$"/>
+ <meta name="copyright" content="&#169; $copyright$"/>
+ <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,code,generator,manual,man,page"/>
+ <meta name="description" content="XSD Compiler Command Line Manual"/>
+
+ <link rel="stylesheet" type="text/css" href="default.css" />
+
+<style type="text/css">
+
+ #synopsis {
+ list-style-type: none;
+ }
+
+ #synopsis li {
+ padding-top : 0.0em;
+ padding-bottom : 0.0em;
+ }
+
+ #commands dt {
+ padding-top : 0.4em;
+ }
+
+ #commands dd {
+ padding-bottom : 0.4em;
+ padding-left : 2em;
+ }
+
+ .options {
+ margin: 1em 0 1em 0;
+ }
+
+ .options dt {
+ margin: 1em 0 0 0;
+ }
+
+ .options dd {
+ margin: .1em 0 0 4.5em;
+ }
+
+</style>
+</head>
+
+<body>
+<div id="container">
+ <div id="content">
+
+ <h1>NAME</h1>
+
+ <p>xsd - W3C XML Schema to C++ Compiler</p>
+
+ <h1>SYNOPSIS</h1>
+
+ <dl id="synopsis">
+ <dt><code><b>xsd</b> <i>command</i> [<i>options</i>] <i>file</i> [<i>file</i> ...]</code></dt>
+ <dt><code><b>xsd help</b> [<i>command</i>]</code></dt>
+ <dt><code><b>xsd version</b></code></dt>
+ </dl>
+
+ <h1>DESCRIPTION</h1>
+
+ <p><code><b>xsd</b></code> generates vocabulary-specific, statically-typed
+ C++ mapping from W3C XML Schema definitions. Particular mapping to
+ produce is selected by a <code><i>command</i></code>. Each mapping has
+ a number of mapping-specific <code><i>options</i></code> that should
+ appear, if any, after the <code><i>command</i></code>. Input files should
+ be W3C XML Schema definitions. The exact set of the generated files depends
+ on the selected mapping and options.</p>
+
+ <h1>COMMANDS</h1>
+
+ <dl id="commands">
+ <dt><code><b>cxx-tree</b></code></dt>
+ <dd>Generate the C++/Tree mapping. For each input file in the form
+ <code><b>name.xsd</b></code> the following C++ files are generated:
+ <code><b>name.hxx</b></code> (header file),
+ <code><b>name.ixx</b></code> (inline file, generated only if the
+ <code><b>--generate-inline</b></code> option is specified),
+ <code><b>name.cxx</b></code> (source file), and
+ <code><b>name-fwd.hxx</b></code> (forward declaration file, generated
+ only if the <code><b>--generate-forward</b></code> option is
+ specified).</dd>
+
+ <dt><code><b>cxx-parser</b></code></dt>
+ <dd>Generate the C++/Parser mapping. For each input file in the form
+ <code><b>name.xsd</b></code> the following C++ files are generated:
+ <code><b>name-pskel.hxx</b></code> (parser skeleton header file),
+ <code><b>name-pskel.ixx</b></code> (parser skeleton inline file,
+ generated only if the <code><b>--generate-inline</b></code>
+ option is specified), and
+ <code><b>name-pskel.cxx</b></code> (parser skeleton source file).
+ If the <code><b>--generate-noop-impl</b></code> or
+ <code><b>--generate-print-impl</b></code> option is specified,
+ the following additional sample implementation files are generated:
+ <code><b>name-pimpl.hxx</b></code> (parser implementation header
+ file) and
+ <code><b>name-pimpl.cxx</b></code> (parser implementation source
+ file). If the <code><b>--generate-test-driver</b></code> option
+ is specified, the additional <code><b>name-driver.cxx</b></code>
+ test driver file is generated.</dd>
+
+ <dt><code><b>help</b></code></dt>
+ <dd>Print usage information and exit. Use
+ <p><code><b>xsd help</b> <i>command</i></code></p>
+ for command-specific help.
+ </dd>
+
+ <dt><code><b>version</b></code></dt>
+ <dd>Print version and exit.</dd>
+ </dl>
+
+ <h1>OPTIONS</h1>
+
+ <p>Command-specific <code><i>options</i></code>, if any, should appear
+ after the corresponding <code><i>command</i></code>.</p>
+
+ <h2>COMMON OPTIONS</h2>
diff --git a/xsd/doc/xsd-tree-header.1 b/doc/xsd-tree-header.1
index b9146a7..b9146a7 100644
--- a/xsd/doc/xsd-tree-header.1
+++ b/doc/xsd-tree-header.1
diff --git a/xsd/doc/xsd-tree-header.xhtml b/doc/xsd-tree-header.xhtml
index 73f9c99..73f9c99 100644
--- a/xsd/doc/xsd-tree-header.xhtml
+++ b/doc/xsd-tree-header.xhtml
diff --git a/libcutl/INSTALL b/libcutl/INSTALL
deleted file mode 100644
index 9660539..0000000
--- a/libcutl/INSTALL
+++ /dev/null
@@ -1,69 +0,0 @@
-Building on UNIX
-================
-
-The following build instructions are for the Linux/UNIX/Mac OS X
-operating systems as well as for Cygwin and MinGW on Windows.
-
-The standard autotools-based build system is used on these platforms. After
-unpacking the source code archive, change to the libcutl package directory
-(referred to as libcutl/ from now on) and run the configure script:
-
-./configure
-
-To see the available configuration options run configure with --help:
-
-./configure --help
-
-As an example, the following configure command only builds shared libraries,
-uses the specified C and C++ compilers, and compiles with optimization and
-without debug information:
-
-./configure --disable-static CC=gcc-4.5 CXX=g++-4.5 CFLAGS=-O3 CXXFLAGS=-O3
-
-Once configuration is complete, run make to build libcutl:
-
-make
-
-Once the build is completed successfully, you can install the libcutl headers
-and libraries using the install target (you may need to do this step as root
-depending on the installation directory):
-
-make install
-
-
-Building on Windows
-===================
-
-The following build instructions are for Windows using Microsoft Visual
-Studio. If you would like to build libcutl with GCC either using Cygwin
-or MinGW, refer to the "Building on UNIX" section above.
-
-The standard Visual Studio project and solution files are used on this
-platform. To build libcutl, unpack the source code archive and open the
-libcutl-vc<N>.sln file located in the libcutl package directory (referred
-to as libcutl\ from now on). Here <N> is the version of Visual Studio that
-you are using. Once the solution is open, select the desired build
-configuration (Debug or Release) and platform (Win32 or x64) and build
-the solution.
-
-The resulting 32-bit DLLs and import libraries are placed into the
-libcutl\bin\ and libcutl\lib\ directories, respectively. Similarly, the
-64-bit DLLs and import libraries are placed into libcutl\bin64\ and
-libcutl\lib64\. The Release versions of the import libraries are named
-cutl.lib and the Debug versions are named cutl-d.lib.
-
-To configure Visual Studio to automatically locate the libcutl headers,
-DLLs, and import libraries, add the following paths to your VC++
-Directories:
-
-Win32:
-
- Include: ...\libcutl
- Library: ...\libcutl\lib
- Executable: ...\libcutl\bin
-
-x64:
-
- Include: ...\libcutl
- Library: ...\libcutl\lib64
- Executable: ...\libcutl\bin64
diff --git a/libcutl/INSTALL-GIT b/libcutl/INSTALL-GIT
deleted file mode 100644
index 8899bd5..0000000
--- a/libcutl/INSTALL-GIT
+++ /dev/null
@@ -1,72 +0,0 @@
-The following instructions describe how to work with the source code that was
-checked out from the git repository.
-
-The major difference between using a released source code package and source
-code from the repository is that the former does not contain autotools-based
-makefiles or Visual Studio project files. Instead, it contains templates for
-these files as well as its own, custom build system. This build system is
-used for development as well as to automatically generate the autotools and
-Visual Studio files.
-
-This file describes how to use this build system to build the package as well
-as to create a release-ready source distribution which contains the autotools
-build system and Visual Studio project files.
-
-
-Prerequisites
-=============
-
-Besides the prerequisites listed in the INSTALL file, you will need the
-following additional packages:
-
- - GNU bash >= 2.0.0 http://www.gnu.org/software/bash/
- - GNU make >= 3.81 http://www.gnu.org/software/make/
- - build >= 0.3.8 http://www.codesynthesis.com/projects/build/
-
-If you are planning to create the source code distributions, then you will
-also need the following packages:
-
- - GNU m4 >= 1.4.0 http://www.gnu.org/software/m4/
- - GNU sed >= 4.0.0 http://www.gnu.org/software/sed/
- - tofrodos >= 1.7.0 http://www.thefreecountry.com/tofrodos/
-
-Any reasonably up to date GNU/Linux installation would normally have all of
-the above packages already present, except for build and maybe tofrodos.
-
-
-Configuring and Building
-========================
-
-To build the source code simply run make in the root directory of the package.
-The first time you run make, the build process will also configure the
-package by asking you several questions. On the subsequent runs, make will
-only rebuild what has changed.
-
-To run the automated test suite (if any), run 'make test'. To clean the object
-files, executables, etc., run 'make clean'. To de-configure the package (that
-is, to remove configuration files in addition to objects, executables, etc.),
-run 'make disfigure'.
-
-
-Creating Distribution
-=====================
-
-To create the source code distribution, use the dist make target as well as
-the dist_prefix variable to specify the directory where the distribution files
-should be placed. For example:
-
-make dist dist_prefix=/tmp/package-1.1.0
-
-Once the distribution files are ready, change to the distribution directory
-and run the bootstrap script to bootstrap the autotools build system, for
-example:
-
-cd /tmp/package-1.1.0
-./bootsrap
-
-To create the source code archives, use the autotools build system. First
-configuring the package (see the INSTALL file for more information on this
-step) and then use the dist target to make the archives, for example:
-
-./configure
-make dist
diff --git a/libcutl/LICENSE b/libcutl/LICENSE
deleted file mode 100644
index 39450e5..0000000
--- a/libcutl/LICENSE
+++ /dev/null
@@ -1,30 +0,0 @@
-Code found in the cutl/details/boost/ directory is distributed under
-the Boost Software License (see the accompanying LICENSE file).
-
-Code found in the cutl/details/expat/ directory is distributed under
-the MIT License (see the accompanying LICENSE file).
-
-Code found in the cutl/details/genx/ directory is distributed under
-the MIT License (see the accompanying LICENSE file).
-
-The rest is Copyright (c) 2009-2013 Code Synthesis Tools CC and is
-distributed under the MIT License:
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/libcutl/Makefile.am b/libcutl/Makefile.am
deleted file mode 100644
index 4d18c85..0000000
--- a/libcutl/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-# file : Makefile.am
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-SUBDIRS = __path__(dirs)
-dist_doc_DATA = __file__(docs)
-EXTRA_DIST = __file__(extra_dist)
-ACLOCAL_AMFLAGS = -I m4
-
-pkgconfigdir = @pkgconfigdir@
-pkgconfig_DATA= libcutl.pc
diff --git a/libcutl/NEWS b/libcutl/NEWS
deleted file mode 100644
index d73de93..0000000
--- a/libcutl/NEWS
+++ /dev/null
@@ -1,70 +0,0 @@
-Version 1.8.0
-
- * Add support for XML parsing (based in Expat) and serialization (based
- on Genx).
- * Improve the C++ indenter by handling the '},' sequence.
- * Add fs::basic_path::posix_string().
- * Update the internal Boost subset to version 1.54.0.
-
-Version 1.7.0
-
- * Add building blocks for multi-index containers.
- * Make regex a class template with character type as a template argument
- (currently can only be char or wchar_t).
- * Add support for case-insensitive regex.
- * Add clear() to fs::path.
-
-Version 1.6.3
-
- * Minor fixes to make libcutl compilable with more pedantic GCC 4.7.
-
-Version 1.6.2
-
- * Support for using external Boost instead of the internal subset in
- the autotools build system.
-
-Version 1.6.0
-
- * Add support for setting a compiler::context value as container::any.
- * Return a reference to the newly set value from compiler::context::set().
- * Add support for empty any containers.
-
-Version 1.5.0
-
- * Add support for regular expressions. Underneath regex support is
- provided by a Boost subset.
-
-Version 1.4.0
-
- * Add support for querying type_info of context entries (compiler).
- * Do sensible things if traversers are copied (compiler).
-
-Version 1.3.0
-
- * Add new fs::path functions: absolute(), relative(), current(),
- complete(), and normalize().
-
-Version 1.2.0
-
- * Add support for automake and VC++ builds via meta-build.
- * Add support for resetting nodes/edges and deleting nodes in
- container::graph.
- * Redesign fs::path, add comparison operators.
-
-Version 1.1.1
-
- * Bugfix release.
-
-Version 1.1.0
-
- * Code stream interface (compiler/code-stream).
- * SLOC counter code stream (compiler/sloc-counter).
- * C++ code indenter (compiler/cxx-indenter).
- * Filesystem path abstraction (fs/path).
- * RAII-based file auto-removal (fs/auto-remove).
- * Project and solution files for VC++ 8 and 9.
- * Install target.
-
-Version 1.0.0
-
- * First public release.
diff --git a/libcutl/README b/libcutl/README
deleted file mode 100644
index a98eccb..0000000
--- a/libcutl/README
+++ /dev/null
@@ -1,16 +0,0 @@
-libcutl is a C++ utility library. It contains a collection of generic and
-fairly independent components. See doc/components.txt for an overview.
-
-See the NEWS file for the user-visible changes from the previous release.
-
-See the LICENSE file for distribution conditions.
-
-See the INSTALL file for prerequisites and installation instructions.
-
-See the doc/ directory for documentation.
-
-The project page is at http://codesynthesis.com/projects/libcutl/.
-
-Send questions, bug reports, or any other feedback to
-libcutl-users@codesynthesis.com.
-
diff --git a/libcutl/TODO b/libcutl/TODO
deleted file mode 100644
index 8b4eb06..0000000
--- a/libcutl/TODO
+++ /dev/null
@@ -1,8 +0,0 @@
-@@ Add memprof?
-@@ path::base() and ".." & "." special directories.
-@@ INSTALL does not describe automake/vc++ (not currently dist'ed).
-@@ Add static lib vc++ configurations (for cli).
-@@ Handle tests in automake.
-@@ No support for Windows network directories.
-
-
diff --git a/libcutl/bootstrap b/libcutl/bootstrap
deleted file mode 100755
index 6f3b59e..0000000
--- a/libcutl/bootstrap
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/sh
-
-# file : bootstrap
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-#
-# Bootstrap the automake build system.
-#
-
-rm -f config.cache
-
-if test ! -d m4; then
- mkdir m4
-fi
-
-autoreconf --install
diff --git a/libcutl/build/bootstrap.make b/libcutl/build/bootstrap.make
deleted file mode 100644
index 120b638..0000000
--- a/libcutl/build/bootstrap.make
+++ /dev/null
@@ -1,73 +0,0 @@
-# file : build/bootstrap.make
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-project_name := libcutl
-
-# First try to include the bundled bootstrap.make if it exist. If that
-# fails, let make search for the external bootstrap.make.
-#
-build := build-0.3
-
--include $(dir $(lastword $(MAKEFILE_LIST)))../../$(build)/bootstrap.make
-
-ifeq ($(patsubst %build/bootstrap.make,,$(lastword $(MAKEFILE_LIST))),)
-include $(build)/bootstrap.make
-endif
-
-
-# Aliases
-#
-.PHONY: $(out_base)/ \
- $(out_base)/.test \
- $(out_base)/.dist \
- $(out_base)/.install \
- $(out_base)/.clean
-
-ifdef %interactive%
-
-.PHONY: test dist install clean
-
-test: $(out_base)/.test
-dist: $(out_base)/.dist
-install: $(out_base)/.install
-clean: $(out_base)/.clean
-
-ifneq ($(filter $(.DEFAULT_GOAL),test dist install clean),)
-.DEFAULT_GOAL :=
-endif
-
-endif
-
-# Make sure the distribution prefix is set if the goal is dist.
-#
-ifneq ($(filter $(MAKECMDGOALS),dist),)
-ifeq ($(dist_prefix),)
-$(error dist_prefix is not set)
-endif
-endif
-
-# If we don't have dependency auto-generation then we need to manually
-# make sure that generated files are generated before C++ file are
-# compiler. To do this we make the object files ($2) depend in order-
-# only on generated files ($3).
-#
-ifeq ($(cxx_id),generic)
-
-define include-dep
-$(if $2,$(eval $2: | $3))
-endef
-
-else
-
-define include-dep
-$(call -include,$1)
-endef
-
-endif
-
-# Don't include dependency info for certain targets.
-#
-ifneq ($(filter $(MAKECMDGOALS),clean disfigure dist),)
-include-dep =
-endif
diff --git a/libcutl/build/c/configuration-dynamic.make b/libcutl/build/c/configuration-dynamic.make
deleted file mode 100644
index 17788dd..0000000
--- a/libcutl/build/c/configuration-dynamic.make
+++ /dev/null
@@ -1,11 +0,0 @@
-c_id := generic
-c_pp_extra_options := $(CPPFLAGS)
-c_extra_options := $(CFLAGS)
-c_ld_extra_options := $(LDFLAGS)
-c_extra_libs := $(LIBS)
-
-r := $(shell echo $(LDFLAGS) | sed -e 's/-L *\([^ ]*\)/-L\1/g')
-r := $(patsubst -L%,%,$(filter -L%,$(r)))
-r := $(shell echo $(r) | sed -e 's/ /:/g')
-
-c_extra_lib_paths := $(r)
diff --git a/libcutl/build/c/generic/configuration-dynamic.make b/libcutl/build/c/generic/configuration-dynamic.make
deleted file mode 100644
index 319a86d..0000000
--- a/libcutl/build/c/generic/configuration-dynamic.make
+++ /dev/null
@@ -1,5 +0,0 @@
-ifeq ($(filter $(origin CC),undefined default),)
-c_generic := $(CC)
-else
-c_generic := gcc
-endif
diff --git a/libcutl/build/cxx/configuration-dynamic.make b/libcutl/build/cxx/configuration-dynamic.make
deleted file mode 100644
index 83cf860..0000000
--- a/libcutl/build/cxx/configuration-dynamic.make
+++ /dev/null
@@ -1,11 +0,0 @@
-cxx_id := generic
-cxx_pp_extra_options := $(CPPFLAGS)
-cxx_extra_options := $(CXXFLAGS)
-cxx_ld_extra_options := $(LDFLAGS)
-cxx_extra_libs := $(LIBS)
-
-r := $(shell echo $(LDFLAGS) | sed -e 's/-L *\([^ ]*\)/-L\1/g')
-r := $(patsubst -L%,%,$(filter -L%,$(r)))
-r := $(shell echo $(r) | sed -e 's/ /:/g')
-
-cxx_extra_lib_paths := $(r)
diff --git a/libcutl/build/cxx/generic/configuration-dynamic.make b/libcutl/build/cxx/generic/configuration-dynamic.make
deleted file mode 100644
index c43865a..0000000
--- a/libcutl/build/cxx/generic/configuration-dynamic.make
+++ /dev/null
@@ -1,5 +0,0 @@
-ifeq ($(filter $(origin CXX),undefined default),)
-cxx_generic := $(CXX)
-else
-cxx_generic := g++
-endif
diff --git a/libcutl/build/export/libcutl/stub.make b/libcutl/build/export/libcutl/stub.make
deleted file mode 100644
index c12231d..0000000
--- a/libcutl/build/export/libcutl/stub.make
+++ /dev/null
@@ -1,9 +0,0 @@
-# file : build/export/libcutl/stub.make
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(call include-once,$(src_root)/cutl/makefile,$(out_root))
-
-$(call export,\
- l: $(out_root)/cutl/cutl.l,\
- cpp-options: $(out_root)/cutl/cutl.l.cpp-options)
diff --git a/libcutl/build/import/libcutl/LICENSE b/libcutl/build/import/libcutl/LICENSE
deleted file mode 120000
index 5853aae..0000000
--- a/libcutl/build/import/libcutl/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-../../../LICENSE \ No newline at end of file
diff --git a/libcutl/build/import/libcutl/configuration-rules.make b/libcutl/build/import/libcutl/configuration-rules.make
deleted file mode 100644
index ed45fe8..0000000
--- a/libcutl/build/import/libcutl/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libcutl/configuration-rules.make
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(dcf_root)/import/libcutl/configuration-dynamic.make: | $(dcf_root)/import/libcutl/.
- $(call message,,$(scf_root)/import/libcutl/configure $@)
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/import/libcutl/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libcutl/configuration-dynamic.make)
-
-endif
diff --git a/libcutl/build/import/libcutl/configure b/libcutl/build/import/libcutl/configure
deleted file mode 100755
index 0a1ee62..0000000
--- a/libcutl/build/import/libcutl/configure
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libcutl/configure
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-
-# $1 - out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'libcutl' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed "
-$echo "version of 'libcutl' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-
-if [ "$installed" = "n" ]; then
-
-$echo
-$echo "Please enter the src_root for 'libcutl'."
-$echo
-
-src_root=`read_path --directory --exist`
-
-$echo
-$echo "Please enter the out_root for 'libcutl'."
-$echo
-
-out_root=`read_path --directory $src_root`
-
-fi
-
-echo libcutl_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
-echo src_root := $src_root >>$1
-echo scf_root := \$\(src_root\)/build >>$1
-echo out_root := $out_root >>$1
-
-fi
diff --git a/libcutl/build/import/libcutl/stub.make b/libcutl/build/import/libcutl/stub.make
deleted file mode 100644
index d469000..0000000
--- a/libcutl/build/import/libcutl/stub.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/import/libcutl/stub.make
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libcutl/configuration-rules.make,$(dcf_root))
-
-libcutl_installed :=
-
-$(call -include,$(dcf_root)/import/libcutl/configuration-dynamic.make)
-
-ifdef libcutl_installed
-
-ifeq ($(libcutl_installed),y)
-
-$(call export,l: -lcutl,cpp-options: )
-
-else
-
-# Include export stub.
-#
-$(call include,$(scf_root)/export/libcutl/stub.make)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/libcutl/build/ld/configuration-lib-dynamic.make b/libcutl/build/ld/configuration-lib-dynamic.make
deleted file mode 100644
index 63d2ed3..0000000
--- a/libcutl/build/ld/configuration-lib-dynamic.make
+++ /dev/null
@@ -1,13 +0,0 @@
-ld_lib_type := archive
-
-ifeq ($(filter $(origin AR),undefined default),)
-ld_lib_ar := $(AR)
-else
-ld_lib_ar := ar
-endif
-
-ifeq ($(filter $(origin RANLIB),undefined default),)
-ld_lib_ranlib := $(RANLIB)
-else
-ld_lib_ranlib := ranlib
-endif
diff --git a/libcutl/configure.ac b/libcutl/configure.ac
deleted file mode 100644
index ec93078..0000000
--- a/libcutl/configure.ac
+++ /dev/null
@@ -1,121 +0,0 @@
-# file : configure.ac
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-AC_PREREQ(2.60)
-AC_INIT([libcutl], [__value__(version)], [libcutl-users@codesynthesis.com])
-AC_CONFIG_AUX_DIR([config])
-AC_CONFIG_MACRO_DIR([m4])
-AC_CONFIG_SRCDIR([cutl/exception.hxx])
-
-AM_INIT_AUTOMAKE([-Wall -Werror foreign nostdinc subdir-objects dist-bzip2 dist-zip tar-ustar])
-m4_equote()[m4_ifdef]m4_dquote()([AM_PROG_AR], [AM_PROG_AR]) # Required by automake 1.12.
-
-LT_INIT([win32-dll])
-
-AC_CANONICAL_HOST
-
-# Check for C++ compiler and use it to compile the tests.
-#
-AC_PROG_CXX
-AC_LANG(C++)
-
-# Create the libtool executable so that we can use it in further tests.
-#
-LT_OUTPUT
-
-# Check if we need to use external Boost.
-#
-AC_MSG_CHECKING([if we should use external boost])
-
-AC_ARG_WITH(
- [external-boost],
- [AC_HELP_STRING([--with-external-boost],[use external boost instead of the internal subset])],
- [external_boost=${withval}],
- [external_boost=no])
-
-if test x"$external_boost" != xno; then
- AC_MSG_RESULT([yes])
-
- # Check if we have Boost.
- #
- boost_found=yes
- LIBBOOST([],[boost_found=no])
- LIBBOOST_REGEX([],[boost_found=no])
- LIBBOOST_SYSTEM
-
- if test x"$boost_found" = xno; then
- AC_MSG_ERROR([boost regex is not found; consider using CPPFLAGS/LDFLAGS or --with-boost=DIR to specify its location])
- fi
-
- AC_DEFINE([LIBCUTL_EXTERNAL_BOOST], [1], [Use external boost.])
-else
- AC_MSG_RESULT([no])
-fi
-
-AM_CONDITIONAL([LIBCUTL_EXTERNAL_BOOST], [test x"$external_boost" != xno])
-
-# Check for threads. For now only internal Boost uses threads so don't
-# configure them if we are using external Boost.
-#
-if test x"$external_boost" = xno; then
- THREADS
- AS_IF([test x$threads = xnone],
- [AC_DEFINE([LIBCUTL_DISABLE_THREADS], [1], [Disable threads.])])
-fi
-
-# Check if we need to use external Expat.
-#
-AC_MSG_CHECKING([if we should use external expat])
-
-AC_ARG_WITH(
- [external-expat],
- [AC_HELP_STRING([--with-external-expat],[use external expat instead of the internal subset])],
- [external_expat=${withval}],
- [external_expat=no])
-
-if test x"$external_expat" != xno; then
- AC_MSG_RESULT([yes])
-
- # Check if we have Expat.
- #
- expat_found=yes
- LIBEXPAT([],[expat_found=no])
-
- if test x"$expat_found" = xno; then
- AC_MSG_ERROR([expat is not found; consider using CPPFLAGS/LDFLAGS to specify its location])
- fi
-
- AC_DEFINE([LIBCUTL_EXTERNAL_EXPAT], [1], [Use external expat.])
-else
- AC_MSG_RESULT([no])
-fi
-
-AM_CONDITIONAL([LIBCUTL_EXTERNAL_EXPAT], [test x"$external_expat" != xno])
-
-# If we have internal Expat, then determine the byteorder.
-#
-if test x"$external_expat" = xno; then
- AC_C_BIGENDIAN([byteorder=4321], [byteorder=1234])
- AC_DEFINE_UNQUOTED([LIBCUTL_BYTEORDER], [$byteorder], [1234 = little, 4321 = big])
-fi
-
-# Define LIBCUTL_STATIC_LIB if we are build static library on certain platforms.
-#
-STATIC_LIB([LIBCUTL_STATIC_LIB], [Static library interface.])
-
-# Allow the user to specify the pkgconfig directory.
-#
-PKGCONFIG
-
-# Check if we should disable rpath.
-#
-DISABLE_RPATH
-
-# Output.
-#
-AC_CONFIG_HEADERS([cutl/config.h cutl/details/config.h])
-AC_CONFIG_FILES([
- __path__(config_files)
-])
-AC_OUTPUT
diff --git a/libcutl/cutl/Makefile.am b/libcutl/cutl/Makefile.am
deleted file mode 100644
index a7eead6..0000000
--- a/libcutl/cutl/Makefile.am
+++ /dev/null
@@ -1,28 +0,0 @@
-# file : cutl/Makefile.am
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-EXTRA_DIST = __file__(extra_dist)
-
-cutlincludedir = $(includedir)/cutl
-
-lib_LTLIBRARIES = libcutl.la
-libcutl_la_SOURCES = __path__(sources)
-
-nobase_cutlinclude_HEADERS = __path__(headers)
-nobase_nodist_cutlinclude_HEADERS = details/config.h
-
-if !LIBCUTL_EXTERNAL_BOOST
-libcutl_la_SOURCES += __path__(boost_sources)
-endif
-
-if !LIBCUTL_EXTERNAL_EXPAT
-libcutl_la_SOURCES += __path__(expat_sources)
-nobase_cutlinclude_HEADERS += __path__(expat_headers)
-endif
-
-libcutl_la_SOURCES += __path__(genx_sources)
-nobase_cutlinclude_HEADERS += __path__(genx_headers)
-
-AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -DLIBCUTL_DYNAMIC_LIB
-AM_LDFLAGS = -release __value__(interface_version) -no-undefined
diff --git a/libcutl/cutl/compiler/code-stream.hxx b/libcutl/cutl/compiler/code-stream.hxx
deleted file mode 100644
index bfd33d0..0000000
--- a/libcutl/cutl/compiler/code-stream.hxx
+++ /dev/null
@@ -1,154 +0,0 @@
-// file : cutl/compiler/code-stream.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_COMPILER_CODE_STREAM_HXX
-#define CUTL_COMPILER_CODE_STREAM_HXX
-
-#include <memory> // std::auto_ptr
-#include <ostream>
-
-#include <cutl/exception.hxx>
-
-namespace cutl
-{
- namespace compiler
- {
- //
- //
- template <typename C>
- class code_stream
- {
- public:
- code_stream () {}
-
- virtual
- ~code_stream ();
-
- public:
- virtual void
- put (C) = 0;
-
- // Unbuffer flushes internal formatting buffers (if any).
- // Note that unbuffer is not exactly flushing since it can
- // result in formatting errors and in general can not be
- // called at arbitrary points. Natural use case would be
- // to call unbuffer at the end of the stream when no more
- // data is expected.
- //
- virtual void
- unbuffer () = 0;
-
- private:
- code_stream (code_stream const&);
-
- code_stream&
- operator= (code_stream const&);
- };
-
- //
- //
- template <typename C>
- class from_streambuf_adapter: public code_stream<C>
- {
- public:
- typedef typename std::basic_streambuf<C>::traits_type traits_type;
- typedef typename std::basic_streambuf<C>::int_type int_type;
-
- class eof: exception {};
- class sync: exception {};
-
- public:
- from_streambuf_adapter (std::basic_streambuf<C>& stream)
- : stream_ (stream)
- {
- }
-
- private:
- from_streambuf_adapter (from_streambuf_adapter const&);
-
- from_streambuf_adapter&
- operator= (from_streambuf_adapter const&);
-
- public:
- virtual void
- put (C c);
-
- virtual void
- unbuffer ();
-
- private:
- std::basic_streambuf<C>& stream_;
- };
-
- //
- //
- template <typename C>
- class to_streambuf_adapter: public std::basic_streambuf<C>
- {
- public:
- typedef typename std::basic_streambuf<C>::traits_type traits_type;
- typedef typename std::basic_streambuf<C>::int_type int_type;
-
- public:
- to_streambuf_adapter (code_stream<C>& stream)
- : stream_ (stream)
- {
- }
-
- private:
- to_streambuf_adapter (to_streambuf_adapter const&);
-
- to_streambuf_adapter&
- operator= (to_streambuf_adapter const&);
-
- public:
- virtual int_type
- overflow (int_type i);
-
- // Does nothing since calling unbuffer here would be dangerous.
- // See the note in code_stream.
- //
- virtual int
- sync ();
-
- private:
- code_stream<C>& stream_;
- };
-
- //
- //
- template <template <typename> class S, typename C>
- class ostream_filter
- {
- public:
- typedef S<C> stream_type;
-
- ostream_filter (std::basic_ostream<C>& os);
- ~ostream_filter ();
-
- stream_type&
- stream ()
- {
- return stream_;
- }
-
- private:
- ostream_filter (ostream_filter const&);
-
- ostream_filter&
- operator= (ostream_filter const&);
-
- private:
- std::basic_ostream<C>& os_;
- std::basic_streambuf<C>* prev_;
- from_streambuf_adapter<C> from_adapter_;
- stream_type stream_;
- to_streambuf_adapter<C> to_adapter_;
- };
- }
-}
-
-#include <cutl/compiler/code-stream.txx>
-
-#endif // CUTL_COMPILER_CODE_STREAM_HXX
diff --git a/libcutl/cutl/compiler/code-stream.txx b/libcutl/cutl/compiler/code-stream.txx
deleted file mode 100644
index 232c5cc..0000000
--- a/libcutl/cutl/compiler/code-stream.txx
+++ /dev/null
@@ -1,95 +0,0 @@
-// file : cutl/compiler/code-stream.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- namespace compiler
- {
- // code_stream
- //
-
- template <typename C>
- code_stream<C>::~code_stream ()
- {
- }
-
- // from_streambuf_adapter
- //
-
- template <typename C>
- void from_streambuf_adapter<C>::
- put (C c)
- {
- int_type i (stream_.sputc (c));
-
- if (i == traits_type::eof ())
- throw eof ();
- }
-
- template <typename C>
- void from_streambuf_adapter<C>::
- unbuffer ()
- {
- if (stream_.pubsync () != 0)
- throw sync ();
- }
-
- // to_streambuf_adapter
- //
-
- template <typename C>
- typename to_streambuf_adapter<C>::int_type to_streambuf_adapter<C>::
- overflow (int_type i)
- {
- try
- {
- stream_.put (traits_type::to_char_type (i));
- return i;
- }
- catch (typename from_streambuf_adapter<C>::eof const&)
- {
- return traits_type::eof ();
- }
- }
-
- template <typename C>
- int to_streambuf_adapter<C>::
- sync ()
- {
- return 0;
- }
-
- // ostream_filter
- //
-
- template <template <typename> class S, typename C>
- ostream_filter<S, C>::
- ostream_filter (std::basic_ostream<C>& os)
- : os_ (os),
- prev_ (os_.rdbuf ()),
- from_adapter_ (*prev_),
- stream_ (from_adapter_),
- to_adapter_ (stream_)
- {
- os_.rdbuf (&to_adapter_);
- }
-
- template <template <typename> class S, typename C>
- ostream_filter<S, C>::
- ~ostream_filter ()
- {
- try
- {
- stream_.unbuffer ();
- }
- catch (...)
- {
- os_.rdbuf (prev_);
- throw;
- }
-
- os_.rdbuf (prev_);
- }
- }
-}
diff --git a/libcutl/cutl/compiler/context.cxx b/libcutl/cutl/compiler/context.cxx
deleted file mode 100644
index 51311fc..0000000
--- a/libcutl/cutl/compiler/context.cxx
+++ /dev/null
@@ -1,54 +0,0 @@
-// file : cutl/compiler/context.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/compiler/context.hxx>
-
-using namespace std;
-
-namespace cutl
-{
- namespace compiler
- {
- void context::
- set (string const& key, container::any const& value)
- {
- using container::any;
-
- std::pair<map::iterator, bool> r (
- map_.insert (map::value_type (key, value)));
-
- any& x (r.first->second);
-
- if (!r.second)
- {
- if (value.type_info () != x.type_info ())
- throw typing ();
-
- x = value;
- }
- }
-
- void context::
- remove (string const& key)
- {
- map::iterator i (map_.find (key));
-
- if (i == map_.end ())
- throw no_entry ();
-
- map_.erase (i);
- }
-
- type_info const& context::
- type_info (string const& key) const
- {
- map::const_iterator i (map_.find (key));
-
- if (i == map_.end ())
- throw no_entry ();
-
- return i->second.type_info ();
- }
- }
-}
diff --git a/libcutl/cutl/compiler/context.hxx b/libcutl/cutl/compiler/context.hxx
deleted file mode 100644
index 2933e36..0000000
--- a/libcutl/cutl/compiler/context.hxx
+++ /dev/null
@@ -1,137 +0,0 @@
-// file : cutl/compiler/context.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_COMPILER_CONTEXT_HXX
-#define CUTL_COMPILER_CONTEXT_HXX
-
-#include <map>
-#include <string>
-#include <cstddef> // std::size_t
-#include <typeinfo>
-
-#include <cutl/exception.hxx>
-#include <cutl/container/any.hxx>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace compiler
- {
- class LIBCUTL_EXPORT context
- {
- public:
- struct LIBCUTL_EXPORT no_entry: exception {};
- struct LIBCUTL_EXPORT typing: exception {};
-
- public:
- context () {}
-
- void
- swap (context& c)
- {
- map_.swap (c.map_);
- }
-
- private:
- context (context const&);
-
- context&
- operator= (context const&);
-
- public:
- std::size_t
- count (char const* key) const
- {
- return count (std::string (key));
- }
-
- std::size_t
- count (std::string const& key) const
- {
- return map_.count (key);
- }
-
- template <typename X>
- X&
- get (char const* key)
- {
- return get<X> (std::string (key));
- }
-
- template <typename X>
- X&
- get (std::string const& key);
-
- template <typename X>
- X const&
- get (char const* key) const
- {
- return get<X> (std::string (key));
- }
-
- template <typename X>
- X const&
- get (std::string const& key) const;
-
- template <typename X>
- X const&
- get (char const* key, X const& default_value) const
- {
- return get<X> (std::string (key), default_value);
- }
-
- template <typename X>
- X const&
- get (std::string const& key, X const& default_value) const;
-
- template <typename X>
- X&
- set (char const* key, X const& value)
- {
- return set<X> (std::string (key), value);
- }
-
- template <typename X>
- X&
- set (std::string const& key, X const& value);
-
- void
- set (char const* key, container::any const& value)
- {
- return set (std::string (key), value);
- }
-
- void
- set (std::string const& key, container::any const& value);
-
- void
- remove (char const* key)
- {
- remove (std::string (key));
- }
-
- void
- remove (std::string const& key);
-
- std::type_info const&
- type_info (char const* key) const
- {
- return type_info (std::string (key));
- }
-
- std::type_info const&
- type_info (std::string const& key) const;
-
- private:
- typedef std::map<std::string, container::any> map;
-
- map map_;
- };
- }
-}
-
-#include <cutl/compiler/context.txx>
-
-#endif // CUTL_COMPILER_CONTEXT_HXX
diff --git a/libcutl/cutl/compiler/context.txx b/libcutl/cutl/compiler/context.txx
deleted file mode 100644
index 53edcda..0000000
--- a/libcutl/cutl/compiler/context.txx
+++ /dev/null
@@ -1,88 +0,0 @@
-// file : cutl/compiler/context.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- namespace compiler
- {
- template <typename X>
- X& context::
- get (std::string const& key)
- {
- map::iterator i (map_.find (key));
-
- if (i == map_.end ())
- throw no_entry ();
-
- try
- {
- return i->second. template value<X> ();
- }
- catch (container::any::typing const&)
- {
- throw typing ();
- }
- }
-
- template <typename X>
- X const& context::
- get (std::string const& key) const
- {
- map::const_iterator i (map_.find (key));
-
- if (i == map_.end ())
- throw no_entry ();
-
- try
- {
- return i->second. template value<X> ();
- }
- catch (container::any::typing const&)
- {
- throw typing ();
- }
- }
-
- template <typename X>
- X const& context::
- get (std::string const& key, X const& default_value) const
- {
- map::const_iterator i (map_.find (key));
-
- if (i == map_.end ())
- return default_value;
-
- try
- {
- return i->second. template value<X> ();
- }
- catch (container::any::typing const&)
- {
- throw typing ();
- }
- }
-
- template <typename X>
- X& context::
- set (std::string const& key, X const& value)
- {
- try
- {
- std::pair<map::iterator, bool> r (
- map_.insert (map::value_type (key, value)));
-
- X& x (r.first->second. template value<X> ());
-
- if (!r.second)
- x = value;
-
- return x;
- }
- catch (container::any::typing const&)
- {
- throw typing ();
- }
- }
- }
-}
diff --git a/libcutl/cutl/compiler/cxx-indenter.cxx b/libcutl/cutl/compiler/cxx-indenter.cxx
deleted file mode 100644
index dba9f09..0000000
--- a/libcutl/cutl/compiler/cxx-indenter.cxx
+++ /dev/null
@@ -1,49 +0,0 @@
-// file : cutl/compiler/cxx-indenter.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/compiler/cxx-indenter.hxx>
-
-namespace cutl
-{
- namespace compiler
- {
- template<>
- char const* cxx_indenter<char>::
- keyword (cxx_indenter<char>::keyword_type t)
- {
- static char const* keywords[] =
- {
- "if",
- "do",
- "for",
- "else",
- "case",
- "while",
- "catch",
- "default"
- };
-
- return keywords[t];
- }
-
- template<>
- wchar_t const* cxx_indenter<wchar_t>::
- keyword (cxx_indenter<wchar_t>::keyword_type t)
- {
- static wchar_t const* keywords[] =
- {
- L"if",
- L"do",
- L"for",
- L"else",
- L"case",
- L"while",
- L"catch",
- L"default"
- };
-
- return keywords[t];
- }
- }
-}
diff --git a/libcutl/cutl/compiler/cxx-indenter.hxx b/libcutl/cutl/compiler/cxx-indenter.hxx
deleted file mode 100644
index eac2952..0000000
--- a/libcutl/cutl/compiler/cxx-indenter.hxx
+++ /dev/null
@@ -1,171 +0,0 @@
-// file : cutl/compiler/cxx-indenter.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_COMPILER_CXX_INDENTER_HXX
-#define CUTL_COMPILER_CXX_INDENTER_HXX
-
-#include <set>
-#include <stack>
-#include <deque>
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <cutl/compiler/code-stream.hxx>
-
-namespace cutl
-{
- namespace compiler
- {
- template <typename C>
- class cxx_indenter: public code_stream<C>
- {
- public:
- cxx_indenter (code_stream<C>& out);
-
- private:
- cxx_indenter (cxx_indenter const&);
-
- cxx_indenter&
- operator= (cxx_indenter const&);
-
- public:
- virtual void
- put (C);
-
- virtual void
- unbuffer ();
-
- private:
- typedef std::basic_string<C> string;
-
- enum construct
- {
- con_other,
- con_pp_dir,
- con_c_com,
- con_cxx_com,
- con_string_lit,
- con_char_lit
- };
-
- private:
- void
- next_token (string const& old, C);
-
- void
- ensure_new_line ();
-
- void
- output_indentation ();
-
- void
- write (C);
-
- private:
- void
- tokenize (C, construct old);
-
- void
- retire (C);
-
- private:
- enum char_class_type
- {
- cc_alpha, // Alpha + '_'.
- cc_digit,
- cc_op_punc, // Operator or punctuation.
- cc_space
- };
-
- static char_class_type
- char_class (C);
-
- private:
- enum keyword_type
- {
- kw_if,
- kw_do,
- kw_for,
- kw_else,
- kw_case,
- kw_while,
- kw_catch,
- kw_default
- };
-
- static C const*
- keyword (keyword_type);
-
- private:
- code_stream<C>& out_;
- bool buffering_; // True if write() should buffer the char.
- std::size_t position_; // Current position on the line.
- std::size_t paren_balance_; // ( ) balance.
- std::stack<std::size_t> indentation_;
- std::size_t spaces_;
- bool suppress_nl_;
- construct construct_;
-
- // Special state stack for the do-while construct. The presence
- // of an element in the stack indicates that we are in a braced
- // do-while construct. The value of the element is the brace
- // balance.
- std::stack<std::size_t> do_while_state_;
-
- typedef std::deque<C> hold;
- hold hold_;
-
- private:
- string token_; // previously fully recognized token
- string lexeme_; // current lexeme (accumulator)
-
- // Keywords that may be folowed by a single-line block, e.g., if,
- // else, etc.
- //
- std::set<string> single_line_blocks_;
-
- // Keywords that may follow (and be related) to a previous block,
- // e.g., else, case, catch.
- //
- std::set<string> follow_blocks_;
-
- string do_;
- string lbrace_;
- string rbrace_;
-
- private:
- // Single-line indented blocks such as if, else, while, etc. The
- // newline flag indicates whether a new line has been seen after
- // the keyword. This is needed to properly distinguish cases such
- // as:
- //
- // else if (...)
- // foo ();
- //
- // else
- // if (...)
- // foo ();
- //
- struct indent_block
- {
- indent_block (bool newline, std::size_t indentation)
- : newline_ (newline), indentation_ (indentation)
- {
- }
-
- bool newline_;
- std::size_t indentation_; // Size of the indentation_ stack
- // corresponding to this block, or
- // 0 if it is not indented.
- };
-
- std::stack<indent_block> indent_stack_;
- };
- }
-}
-
-#include <cutl/compiler/cxx-indenter.ixx>
-#include <cutl/compiler/cxx-indenter.txx>
-
-#endif // CUTL_COMPILER_CXX_INDENTER_HXX
diff --git a/libcutl/cutl/compiler/cxx-indenter.ixx b/libcutl/cutl/compiler/cxx-indenter.ixx
deleted file mode 100644
index 74bfac3..0000000
--- a/libcutl/cutl/compiler/cxx-indenter.ixx
+++ /dev/null
@@ -1,69 +0,0 @@
-// file : cutl/compiler/cxx-indenter.ixx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- namespace compiler
- {
- template <typename C>
- inline typename cxx_indenter<C>::char_class_type cxx_indenter<C>::
- char_class (C c)
- {
- switch (c)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- return cc_digit;
-
- case '!':
- case '%':
- case '^':
- case '&':
- case '*':
- case '(':
- case ')':
- case '-':
- case '+':
- case '=':
- case '{':
- case '}':
- case '|':
- case '~':
- case '[':
- case ']':
- case '\\':
- case ';':
- case '\'':
- case ':':
- case '"':
- case '<':
- case '>':
- case '?':
- case ',':
- case '.':
- case '/':
- return cc_op_punc;
-
- case ' ':
- case '\n':
- case '\t':
- case '\f':
- case '\r':
- case '\v':
- return cc_space;
-
- default:
- return cc_alpha;
- }
- }
- }
-}
diff --git a/libcutl/cutl/compiler/cxx-indenter.txx b/libcutl/cutl/compiler/cxx-indenter.txx
deleted file mode 100644
index c3930b3..0000000
--- a/libcutl/cutl/compiler/cxx-indenter.txx
+++ /dev/null
@@ -1,817 +0,0 @@
-// file : cutl/compiler/cxx-indenter.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- namespace compiler
- {
- template <typename C>
- cxx_indenter<C>::
- cxx_indenter (code_stream<C>& out)
- : out_ (out),
- buffering_ (false),
- position_ (0),
- paren_balance_ (0),
- spaces_ (2),
- construct_ (con_other),
- do_ (keyword(kw_do)),
- lbrace_ (1, '{'),
- rbrace_ (1, '}')
- {
- indentation_.push (0);
-
- single_line_blocks_.insert (keyword(kw_if));
- single_line_blocks_.insert (keyword(kw_do));
- single_line_blocks_.insert (keyword(kw_for));
- single_line_blocks_.insert (keyword(kw_else));
- single_line_blocks_.insert (keyword(kw_case));
- single_line_blocks_.insert (keyword(kw_while));
-
- follow_blocks_.insert (keyword(kw_else));
- follow_blocks_.insert (keyword(kw_case));
- follow_blocks_.insert (keyword(kw_catch));
- follow_blocks_.insert (keyword(kw_default));
- }
-
- template <typename C>
- void cxx_indenter<C>::
- put (C c)
- {
- // First determine what kind of construct we are in.
- //
- construct new_con (construct_);
- construct old_con (construct_);
-
- switch (c)
- {
- case '\n':
- {
- if (construct_ == con_pp_dir ||
- construct_ == con_cxx_com)
- construct_ = new_con = con_other;
-
- break;
- }
- case '#':
- {
- if (construct_ == con_other)
- construct_ = new_con = con_pp_dir;
-
- break;
- }
- case '\"':
- {
- if (construct_ != con_pp_dir &&
- construct_ != con_c_com &&
- construct_ != con_cxx_com &&
- construct_ != con_char_lit)
- {
- // We might be in an escape sequence.
- //
- bool es (!hold_.empty () && hold_.back () == '\\');
-
- if (es)
- {
- // Scan the hold sequence backwards to figure out if this
- // backslash is part of this escape sequence or a preceding
- // one.
- //
- for (typename hold::reverse_iterator i (hold_.rbegin () + 1),
- e (hold_.rend ()); i != e && *i == '\\'; ++i)
- es = !es;
- }
-
- if (!es)
- {
- if (construct_ == con_string_lit)
- new_con = con_other;
- else
- construct_ = new_con = con_string_lit;
- }
- }
-
- break;
- }
- case '\'':
- {
- if (construct_ != con_pp_dir &&
- construct_ != con_c_com &&
- construct_ != con_cxx_com &&
- construct_ != con_string_lit)
- {
- // We might be in an escape sequence.
- //
- bool es (!hold_.empty () && hold_.back () == '\\');
-
- if (es)
- {
- // Scan the hold sequence backwards to figure out if this
- // backslash is part of this escape sequence or a preceding
- // one.
- //
- for (typename hold::reverse_iterator i (hold_.rbegin () + 1),
- e (hold_.rend ()); i != e && *i == '\\'; ++i)
- es = !es;
- }
-
- if (!es)
- {
- if (construct_ == con_char_lit)
- new_con = con_other;
- else
- construct_ = new_con = con_char_lit;
- }
- }
-
- break;
- }
- case '/':
- {
- if (construct_ == con_other)
- {
- if (!hold_.empty () && hold_.back () == '/')
- construct_ = new_con = con_cxx_com;
- }
-
- if (construct_ == con_c_com)
- {
- if (!hold_.empty () && hold_.back () == '*')
- construct_ = new_con = con_other;
- }
-
- break;
- }
- case '*':
- {
- if (construct_ == con_other)
- {
- if (!hold_.empty () && hold_.back () == '/')
- construct_ = new_con = con_c_com;
- }
-
- break;
- }
- default:
- {
- break;
- }
- }
-
- // Special handling of CPP directives.
- //
- if (construct_ == con_pp_dir)
- {
- write (c);
- position_++;
- return;
- }
-
- //
- //
- tokenize (c, old_con);
-
-
- // Indentation in parenthesis. We don't need to make sure
- // we are not in a comments, etc., because we make sure we
- // don't hold anything in those states.
- //
- if (!hold_.empty () && hold_.back () == '(')
- {
- unbuffer (); // We don't need to hold it anymore.
-
- if (c == '\n')
- indentation_.push (indentation_.top () + spaces_);
- else
- indentation_.push (position_);
- }
-
-
- //
- //
- bool defaulting (false);
-
- switch (c)
- {
- case '\n':
- {
- if (!indent_stack_.empty () && construct_ == con_other)
- indent_stack_.top ().newline_ = true;
-
- hold_.push_back (c);
- position_ = 0; // Starting a new line.
-
- break;
- }
- case '{':
- {
- if (construct_ == con_other)
- {
- if (!indent_stack_.empty ())
- {
- // Pop all the blocks until the one that was indented.
- //
- while (indent_stack_.top ().indentation_ == 0)
- indent_stack_.pop ();
-
- // Pop the indented block and one level of indentation.
- //
- if (indentation_.size () > 1)
- indentation_.pop ();
-
- indent_stack_.pop ();
- }
-
- ensure_new_line ();
- output_indentation ();
- write (c);
- ensure_new_line ();
-
- indentation_.push (indentation_.top () + spaces_);
- }
- else
- defaulting = true;
-
- break;
- }
- case '}':
- {
- if (construct_ == con_other)
- {
- if (indentation_.size () > 1)
- indentation_.pop ();
-
- // Reduce multiple newlines to one.
- //
- while (hold_.size () > 1)
- {
- typename hold::reverse_iterator i (hold_.rbegin ());
-
- if (*i == '\n' && *(i + 1) == '\n')
- hold_.pop_back ();
- else
- break;
- }
-
- ensure_new_line ();
- output_indentation ();
-
- hold_.push_back (c);
-
- // Add double newline after '}'.
- //
- hold_.push_back ('\n');
- hold_.push_back ('\n');
- position_ = 0;
-
- if (!indent_stack_.empty ())
- {
- // Pop all the blocks until the one that was indented.
- //
- while (indent_stack_.top ().indentation_ == 0)
- indent_stack_.pop ();
-
- // Now pop all the indented blocks while also popping the
- // indentation stack. Do it only if the indentation match.
- // If it doesn't then that means this inden_stack entry is
- // for some other, outer block.
- //
- while (!indent_stack_.empty () &&
- indent_stack_.top ().indentation_ ==
- indentation_.size ())
- {
- if (indentation_.size () > 1)
- indentation_.pop ();
-
- indent_stack_.pop ();
- }
- }
-
- buffering_ = true;
- }
- else
- defaulting = true;
-
- break;
- }
- case ';':
- {
- if (construct_ == con_other)
- {
- // for (;;)
- //
- if (!indent_stack_.empty () && paren_balance_ == 0)
- {
- // Pop all the blocks until the one that was indented.
- //
- while (indent_stack_.top ().indentation_ == 0)
- indent_stack_.pop ();
-
- // Now pop all the indented blocks while also popping the
- // indentation stack. Do it only if the indentation match.
- // If they don't then it means we are inside a block and
- // the stack should be popped after seeing '}', not ';'.
- //
- while (!indent_stack_.empty () &&
- indent_stack_.top ().indentation_ ==
- indentation_.size ())
- {
- if (indentation_.size () > 1)
- indentation_.pop ();
-
- indent_stack_.pop ();
- }
- }
-
- if (paren_balance_ != 0)
- {
- // We are inside for (;;) statement. Nothing to do here.
- //
- defaulting = true;
- }
- else
- {
- // Handling '};' case.
- //
-
- bool brace (false);
-
- if (hold_.size () > 1 && hold_.back () == '\n')
- {
- bool pop_nl (false);
-
- for (typename hold::reverse_iterator
- i (hold_.rbegin ()), e (hold_.rend ());
- i != e; ++i)
- {
- if (*i != '\n')
- {
- if (*i == '}')
- brace = pop_nl = true;
-
- break;
- }
- }
-
- if (pop_nl)
- while (hold_.back () == '\n')
- hold_.pop_back ();
- }
-
- output_indentation ();
- write (c);
- position_++;
-
- if (brace)
- {
- hold_.push_back ('\n');
- hold_.push_back ('\n');
- }
-
- ensure_new_line ();
- }
- }
- else
- defaulting = true;
-
- break;
- }
- case ',':
- {
- if (construct_ == con_other)
- {
- // Handling '},' case.
- //
-
- bool brace (false);
-
- if (hold_.size () > 1 && hold_.back () == '\n')
- {
- bool pop_nl (false);
-
- for (typename hold::reverse_iterator
- i (hold_.rbegin ()), e (hold_.rend ());
- i != e; ++i)
- {
- if (*i != '\n')
- {
- if (*i == '}')
- brace = pop_nl = true;
-
- break;
- }
- }
-
- if (pop_nl)
- while (hold_.back () == '\n')
- hold_.pop_back ();
- }
-
- output_indentation ();
- write (c);
- position_++;
-
- if (brace)
- hold_.push_back ('\n');
- }
- else
- defaulting = true;
-
- break;
- }
- case ' ':
- {
- if (construct_ == con_other)
- {
- // Handling '} foo_;' case.
- //
- if (hold_.size () > 1 && hold_.back () == '\n')
- {
- bool pop_nl (false);
-
- for (typename hold::reverse_iterator
- i (hold_.rbegin ()), e (hold_.rend ());
- i != e; ++i)
- {
- if (*i != '\n')
- {
- if (*i == '}')
- pop_nl = true;
-
- break;
- }
- }
-
- if (pop_nl)
- while (hold_.back () == '\n')
- hold_.pop_back ();
- }
- }
-
- defaulting = true;
- break;
- }
- case '\\':
- {
- if (construct_ != con_pp_dir &&
- construct_ != con_c_com &&
- construct_ != con_cxx_com)
- {
- output_indentation ();
- hold_.push_back (c);
- position_++;
- }
- else
- defaulting = true;
-
- break;
-
- }
- case '(':
- {
- if (construct_ == con_other)
- {
- // Hold it so that we can see what's coming next.
- //
- output_indentation ();
- hold_.push_back (c);
- position_++;
- paren_balance_++;
- }
- else
- defaulting = true;
- break;
- }
- case ')':
- {
- if (construct_ == con_other)
- {
- if (indentation_.size () > 1)
- indentation_.pop ();
-
- if (paren_balance_ > 0)
- paren_balance_--;
- }
-
- defaulting = true;
- break;
- }
- case '/':
- {
- if (construct_ == con_other)
- {
- output_indentation ();
- hold_.push_back (c);
- position_++;
- }
- else
- defaulting = true;
-
- break;
- }
- case '*':
- {
- if (construct_ == con_c_com)
- {
- output_indentation ();
- hold_.push_back (c);
- position_++;
- }
- else
- defaulting = true;
-
- break;
- }
- default:
- {
- defaulting = true;
- break;
- }
- }
-
- if (defaulting)
- {
- output_indentation ();
- write (c);
- position_++;
- }
-
- construct_ = new_con;
- }
-
- template <typename C>
- void cxx_indenter<C>::
- unbuffer ()
- {
- for (; !hold_.empty (); hold_.pop_front ())
- out_.put (hold_.front ());
- }
-
- template <typename C>
- void cxx_indenter<C>::
- next_token (string const& old, C c)
- {
- // Handle one line indentation blocks (if, else, etc).
- //
- if (single_line_blocks_.find (token_) != single_line_blocks_.end ())
- {
- // Only indent sub-blocks if we are on a new line.
- //
- bool indent (indent_stack_.empty () ||
- indent_stack_.top ().newline_);
-
- if (indent)
- indentation_.push (indentation_.top () + spaces_);
-
- indent_stack_.push (
- indent_block (c == '\n', (indent ? indentation_.size () : 0)));
- }
-
- // Keep track of the do ... while construct in order to suppress
- // the newline after } and before while.
- //
- if (old == do_ && token_ == lbrace_)
- do_while_state_.push (0);
-
- if (!do_while_state_.empty ())
- {
- if (token_ == lbrace_)
- do_while_state_.top ()++;
-
- if (token_ == rbrace_)
- do_while_state_.top ()--;
- }
-
- // Suppress double newline in the "}else", etc., cases.
- //
- if (old == rbrace_)
- {
- bool dw (!do_while_state_.empty () && do_while_state_.top () == 0);
-
- if (follow_blocks_.find (token_) != follow_blocks_.end () || dw)
- {
- if (dw)
- do_while_state_.pop ();
-
- // Reduce double newline after "}" into a single one.
- //
- typename hold::iterator i (hold_.end ()), b (hold_.begin ());
-
- for (--i; i != b; --i)
- {
- // See if this is the end of the "}\n\n" sequence.
- //
- if (*i == '\n')
- {
- --i;
- if (i != b && *i == '\n')
- {
- --i;
- if (*i == '}')
- {
- ++i;
- hold_.erase (i);
- break;
- }
- }
- }
- }
- }
-
- // Stop buffering unless we have another closing brace.
- //
- if (token_ != rbrace_)
- buffering_ = false;
- }
- }
-
- template <typename C>
- void cxx_indenter<C>::
- ensure_new_line ()
- {
- if (hold_.empty () || hold_.back () != '\n')
- {
- hold_.push_back ('\n');
- position_ = 0; // Starting a new line.
- }
- }
-
-
- template <typename C>
- void cxx_indenter<C>::
- output_indentation ()
- {
- if (!hold_.empty () && hold_.back () == '\n')
- {
- for (std::size_t i (0); i < indentation_.top (); ++i)
- write (' ');
-
- position_ += indentation_.top ();
- }
- }
-
- template <typename C>
- void cxx_indenter<C>::
- write (C c)
- {
- hold_.push_back (c);
-
- if (!buffering_)
- {
- for (; !hold_.empty (); hold_.pop_front ())
- out_.put (hold_.front ());
- }
- }
-
- template <typename C>
- void cxx_indenter<C>::
- tokenize (C c, construct old)
- {
- //
- //
- switch (construct_)
- {
- case con_pp_dir:
- {
- if (old == con_other) // Start PP directive
- retire (c);
-
- return;
- }
- case con_c_com:
- {
- if (old == con_other) // Start C comment.
- lexeme_.clear ();
-
- return;
- }
- case con_cxx_com:
- {
- if (old == con_other) // Start C++ comment.
- lexeme_.clear ();
-
- return;
- }
- case con_string_lit:
- {
- if (old == con_other) // Start string literal
- retire (c);
-
- lexeme_ += c;
- return;
- }
- case con_char_lit:
- {
- if (old == con_other) // Start char literal
- retire (c);
-
- lexeme_ += c;
- return;
- }
- default:
- break;
- }
-
- // construct_ == other
- //
- switch (old)
- {
- case con_pp_dir:
- {
- // End PP directive (newline).
- //
- return;
- }
- case con_c_com:
- {
- // End C comment.
- //
- return;
- }
- case con_cxx_com:
- {
- // End C++ comment (newline).
- //
- return;
- }
- case con_string_lit:
- {
- // End string literal (").
- //
- lexeme_ += c;
- return;
- }
- case con_char_lit:
- {
- // End char literal (').
- //
- lexeme_ += c;
- return;
- }
- default:
- break;
- }
-
-
- // construct_ == old == other
- //
-
- switch (char_class (c))
- {
- case cc_alpha:
- {
- if (lexeme_.empty () ||
- char_class (lexeme_[0]) == cc_alpha)
- lexeme_ += c;
- else
- {
- retire (c);
- lexeme_ += c;
- }
- break;
- }
- case cc_digit:
- {
- if (lexeme_.empty ())
- lexeme_ += c;
- else
- {
- char_class_type cc (char_class (lexeme_[0]));
-
- if (cc == cc_alpha || cc == cc_digit)
- lexeme_ += c;
- else
- {
- retire (c);
- lexeme_ += c;
- }
- }
- break;
- }
- case cc_op_punc:
- {
- retire (c);
- lexeme_ += c;
- break;
- }
- case cc_space:
- {
- retire (c);
- break;
- }
- }
- }
-
- template <typename C>
- void cxx_indenter<C>::
- retire (C c)
- {
- if (!lexeme_.empty ())
- {
- token_.swap (lexeme_);
- next_token (lexeme_, c);
- lexeme_.clear ();
- }
- }
- }
-}
diff --git a/libcutl/cutl/compiler/sloc-counter.hxx b/libcutl/cutl/compiler/sloc-counter.hxx
deleted file mode 100644
index cbcdede..0000000
--- a/libcutl/cutl/compiler/sloc-counter.hxx
+++ /dev/null
@@ -1,78 +0,0 @@
-// file : cutl/compiler/sloc-counter.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_COMPILER_SLOC_COUNTER_HXX
-#define CUTL_COMPILER_SLOC_COUNTER_HXX
-
-#include <cstddef> // std::size_t
-
-#include <cutl/compiler/code-stream.hxx>
-
-namespace cutl
-{
- namespace compiler
- {
- template <typename C>
- class sloc_counter: public code_stream<C>
- {
- public:
- sloc_counter (code_stream<C>& out);
-
- std::size_t
- count () const
- {
- return count_;
- }
-
- private:
- sloc_counter (sloc_counter const&);
-
- sloc_counter&
- operator= (sloc_counter const&);
-
- public:
- virtual void
- put (C);
-
- virtual void
- unbuffer ();
-
- private:
- void
- code (C);
-
- void
- c_comment (C);
-
- void
- cxx_comment (C);
-
- void
- char_literal (C);
-
- void
- string_literal (C);
-
- private:
- code_stream<C>& out_;
- std::size_t count_;
-
- C prev_; // Previous character or '\0'.
- bool code_counted_; // This code line has already been counted.
-
- enum construct
- {
- con_code,
- con_c_com,
- con_cxx_com,
- con_char_lit,
- con_string_lit
- } construct_;
- };
- }
-}
-
-#include <cutl/compiler/sloc-counter.txx>
-
-#endif // CUTL_COMPILER_SLOC_COUNTER_HXX
diff --git a/libcutl/cutl/compiler/sloc-counter.txx b/libcutl/cutl/compiler/sloc-counter.txx
deleted file mode 100644
index 3b741ad..0000000
--- a/libcutl/cutl/compiler/sloc-counter.txx
+++ /dev/null
@@ -1,224 +0,0 @@
-// file : cutl/compiler/sloc-counter.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cctype> // std::isspace
-
-namespace cutl
-{
- namespace compiler
- {
- template <typename C>
- sloc_counter<C>::
- sloc_counter (code_stream<C>& out)
- : out_ (out),
- count_ (0),
- prev_ ('\0'),
- code_counted_ (false),
- construct_ (con_code)
- {
- }
-
- template <typename C>
- void sloc_counter<C>::
- put (C c)
- {
- construct old (construct_);
-
- switch (construct_)
- {
- case con_code:
- {
- code (c);
- break;
- }
- case con_c_com:
- {
- c_comment (c);
- break;
- }
- case con_cxx_com:
- {
- cxx_comment (c);
- break;
- }
- case con_char_lit:
- {
- char_literal (c);
- break;
- }
- case con_string_lit:
- {
- string_literal (c);
- break;
- }
- }
-
- // There are cases when a previous character has been already
- // 'used' and therefore can not be used again. Good example
- // would be '/* *//'. Here, the second slash doesn't start
- // C++ comment since it was already used by C comment.
- //
- // To account for this we are going to set prev_ to '\0' when
- // the mode changes.
- //
-
- prev_ = (old == construct_) ? c : '\0';
-
- out_.put (c);
- }
-
- template <typename C>
- void sloc_counter<C>::
- unbuffer ()
- {
- }
-
- template <typename C>
- void sloc_counter<C>::
- code (C c)
- {
- bool count (true);
-
- switch (c)
- {
- case '/':
- {
- if (prev_ == '/')
- {
- construct_ = con_cxx_com;
- count = false;
- }
- else
- {
- // This slash can be a beginning of a comment but we
- // yet have no way to know. Will have to examine it later
- // (see below).
- //
- count = false;
- }
-
- break;
- }
- case '*':
- {
- if (prev_ == '/')
- {
- construct_ = con_c_com;
- count = false;
- }
- break;
- }
- case '\'':
- {
- construct_ = con_char_lit;
- break;
- }
- case '"':
- {
- construct_ = con_string_lit;
- break;
- }
- case '\n':
- {
- code_counted_ = false; // Reset for a new line.
- count = false;
- break;
- }
- default:
- {
- if (std::isspace (c))
- count = false;
- break;
- }
- }
-
- if (!code_counted_)
- {
- if (count)
- {
- count_++;
- code_counted_ = true;
- }
- else if (prev_ == '/' && construct_ == con_code)
- {
- // This condition accounts for the fact that we cannot count
- // '/' right away since it can be a beginning of a comment.
- //
- count_++;
- code_counted_ = (c != '\n');
- }
- }
- }
-
- template <typename C>
- void sloc_counter<C>::
- c_comment (C c)
- {
- switch (c)
- {
- case '/':
- {
- if (prev_ == '*')
- construct_ = con_code;
- break;
- }
- case '\n':
- {
- code_counted_ = false; // Reset for a new line.
- break;
- }
- }
- }
-
- template <typename C>
- void sloc_counter<C>::
- cxx_comment (C c)
- {
- switch (c)
- {
- case '\n':
- {
- construct_ = con_code;
- code_counted_ = false; // Reset for a new line.
- break;
- }
- }
- }
-
- template <typename C>
- void sloc_counter<C>::
- char_literal (C c)
- {
- switch (c)
- {
- case '\'':
- {
- if (prev_ != '\\')
- construct_ = con_code;
- break;
- }
- }
- }
-
- template <typename C>
- void sloc_counter<C>::
- string_literal (C c)
- {
- switch (c)
- {
- case '"':
- {
- if (prev_ != '\\')
- construct_ = con_code;
- break;
- }
- case '\n':
- {
- count_++;
- break;
- }
- }
- }
- }
-}
diff --git a/libcutl/cutl/compiler/traversal.hxx b/libcutl/cutl/compiler/traversal.hxx
deleted file mode 100644
index e0b6d77..0000000
--- a/libcutl/cutl/compiler/traversal.hxx
+++ /dev/null
@@ -1,171 +0,0 @@
-// file : cutl/compiler/traversal.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_COMPILER_TRAVERSAL_HXX
-#define CUTL_COMPILER_TRAVERSAL_HXX
-
-#include <map>
-#include <set>
-#include <vector>
-
-#include <cutl/compiler/type-info.hxx>
-
-namespace cutl
-{
- namespace compiler
- {
- //
- //
- template<typename B>
- class traverser
- {
- public:
- virtual
- ~traverser ();
-
- virtual void
- trampoline (B&) = 0;
- };
-
- //
- //
- template<typename B>
- class traverser_map
- {
- public:
- typedef std::vector<traverser<B>*> traversers;
-
- struct map_type: std::map<type_id, traversers>
- {
- map_type () {}
-
- // Don't copy traverser maps. We do it here instead of in
- // traverser_map to pacify GCC's -Wextra insisting we must
- // explicitly initialize virtual bases in copy constructor.
- //
- map_type (map_type const&): std::map<type_id, traversers> () {}
- map_type& operator= (map_type const&) {return *this;}
- };
-
- typedef typename map_type::const_iterator iterator;
-
- iterator
- begin () const
- {
- return map_.begin ();
- }
-
- iterator
- end () const
- {
- return map_.end ();
- }
-
- void
- add (type_id const& id, traverser<B>& t)
- {
- traversers& travs (map_[id]);
- travs.push_back (&t);
- }
-
- protected:
- map_type map_;
- };
-
- //
- //
- template <typename X, typename B>
- class traverser_impl: public traverser<B>,
- public virtual traverser_map<B>
- {
- public:
- typedef X type;
-
- traverser_impl ()
- {
- this->add (typeid (type), *this);
- }
-
- traverser_impl (traverser_impl const&)
- {
- this->add (typeid (type), *this);
- }
-
- virtual void
- traverse (type&) = 0;
-
- public:
- virtual void
- trampoline (B&);
- };
-
- //
- //
- template <typename B>
- class dispatcher: public virtual traverser_map<B>
- {
- public:
- virtual
- ~dispatcher ();
-
- void
- traverser (traverser_map<B>&);
-
- virtual void
- dispatch (B&);
-
- public:
- template <typename I, typename X>
- static void
- iterate_and_dispatch (I begin, I end, dispatcher<X>& d)
- {
- for (; begin != end; ++begin)
- {
- d.dispatch (*begin);
- }
- }
-
- template <typename T, typename A, typename I, typename X>
- static void
- iterate_and_dispatch (I begin,
- I end,
- dispatcher<X>& d,
- T& t,
- void (T::*next)(A&),
- A& a)
- {
- for (; begin != end;)
- {
- d.dispatch (*begin);
-
- if (++begin != end && next != 0)
- (t.*next) (a);
- }
- }
-
- private:
- struct comparator
- {
- bool
- operator () (type_info const& a, type_info const& b) const
- {
- return a.type_id () < b.type_id ();
- }
- };
-
- typedef std::map<type_info, std::size_t, comparator> level_map;
- typedef std::set<type_info, comparator> type_info_set;
-
- static std::size_t
- compute_levels (type_info const&, std::size_t current, level_map&);
-
- static void
- flatten_tree (type_info const&, type_info_set&);
- };
- }
-}
-
-#include <cutl/compiler/traversal.txx>
-
-#endif // CUTL_COMPILER_TRAVERSAL_HXX
diff --git a/libcutl/cutl/compiler/traversal.txx b/libcutl/cutl/compiler/traversal.txx
deleted file mode 100644
index 21200bc..0000000
--- a/libcutl/cutl/compiler/traversal.txx
+++ /dev/null
@@ -1,144 +0,0 @@
-// file : cutl/compiler/traversal.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- namespace compiler
- {
- // traverser
- //
- template<typename B>
- traverser<B>::
- ~traverser ()
- {
- }
-
- // traverser_impl
- //
-
- template <typename X, typename B>
- void traverser_impl<X, B>::
- trampoline (B& x)
- {
- this->traverse (dynamic_cast<type&> (x));
- }
-
- // dispatcher
- //
-
- template <typename B>
- dispatcher<B>::
- ~dispatcher ()
- {
- }
-
- template <typename B>
- void dispatcher<B>::
- traverser (traverser_map<B>& m)
- {
- // Copy entries from m to our map.
- //
- for (typename traverser_map<B>::iterator
- i (m.begin ()), e (m.end ()); i != e; ++i)
- {
- typename traverser_map<B>::traversers& travs (this->map_[i->first]);
-
- for (typename traverser_map<B>::traversers::const_iterator
- t (i->second.begin ()), e (i->second.end ()); t != e; ++t)
- {
- travs.push_back (*t);
- }
- }
- }
-
- template <typename B>
- void dispatcher<B>::
- dispatch (B& x)
- {
- using std::size_t;
-
- level_map levels;
- type_info const& ti (lookup (x));
- size_t max (compute_levels (ti, 0, levels));
-
- // cerr << "starting dispatch process for " << ti.type_id ().name ()
- // << " with " << max << " levels" << endl;
-
- for (size_t l (0); l < max + 1; ++l)
- {
- type_info_set dispatched;
-
- for (typename level_map::const_iterator
- i (levels.begin ()), e (levels.end ()); i != e; ++i)
- {
- if (i->second == l)
- {
- typename traverser_map<B>::map_type::const_iterator v (
- this->map_.find (i->first.type_id ()));
-
- if (v != this->map_.end ())
- {
- // cerr << "dispatching traversers for " << ti.type_id ().name ()
- // << " as " << i->first.type_id ().name () << endl;
-
- typename traverser_map<B>::traversers const& travs (v->second);
-
- for (typename traverser_map<B>::traversers::const_iterator
- ti (travs.begin ()), te (travs.end ()); ti != te; ++ti)
- {
- (*ti)->trampoline (x);
- }
-
- flatten_tree (i->first, dispatched);
- }
- }
- }
-
- // Remove traversed types from the level map.
- //
- for (typename type_info_set::const_iterator i (dispatched.begin ());
- i != dispatched.end (); ++i)
- {
- levels.erase (*i);
- }
- }
- }
-
- template <typename B>
- std::size_t dispatcher<B>::
- compute_levels (type_info const& ti, std::size_t cur, level_map& map)
- {
- using std::size_t;
-
- size_t ret (cur);
-
- if (map.find (ti) == map.end () || map[ti] < cur)
- map[ti] = cur;
-
- for (type_info::base_iterator i (ti.begin_base ());
- i != ti.end_base (); ++i)
- {
- size_t tmp (compute_levels (i->type_info (), cur + 1, map));
-
- if (tmp > ret)
- ret = tmp;
- }
-
- return ret;
- }
-
- template <typename B>
- void dispatcher<B>::
- flatten_tree (type_info const& ti, type_info_set& set)
- {
- set.insert (ti);
-
- for (type_info::base_iterator i (ti.begin_base ());
- i != ti.end_base (); ++i)
- {
- flatten_tree (i->type_info (), set);
- }
- }
- }
-}
diff --git a/libcutl/cutl/compiler/type-id.hxx b/libcutl/cutl/compiler/type-id.hxx
deleted file mode 100644
index f37454e..0000000
--- a/libcutl/cutl/compiler/type-id.hxx
+++ /dev/null
@@ -1,48 +0,0 @@
-// file : cutl/compiler/type-id.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_COMPILER_TYPE_ID_HXX
-#define CUTL_COMPILER_TYPE_ID_HXX
-
-#include <typeinfo> // std::type_info
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace compiler
- {
- class LIBCUTL_EXPORT type_id
- {
- public:
- template<typename X>
- type_id (X const volatile&);
-
- type_id (std::type_info const&);
-
- public:
- char const*
- name () const;
-
- friend bool
- operator== (type_id const&, type_id const&);
-
- friend bool
- operator!= (type_id const&, type_id const&);
-
- friend bool
- operator< (type_id const&, type_id const&);
-
- private:
- std::type_info const* ti_;
- };
-
- typedef type_id type_id_t;
- }
-}
-
-#include <cutl/compiler/type-id.ixx>
-#include <cutl/compiler/type-id.txx>
-
-#endif // CUTL_COMPILER_TYPE_ID_HXX
diff --git a/libcutl/cutl/compiler/type-id.ixx b/libcutl/cutl/compiler/type-id.ixx
deleted file mode 100644
index 2e9f963..0000000
--- a/libcutl/cutl/compiler/type-id.ixx
+++ /dev/null
@@ -1,44 +0,0 @@
-// file : cutl/compiler/type-id.ixx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- namespace compiler
- {
- inline
- type_id::
- type_id (std::type_info const& ti)
- : ti_ (&ti)
- {
- }
-
- inline
- char const* type_id::
- name () const
- {
- return ti_->name ();
- }
-
- inline
- bool
- operator== (type_id const& x, type_id const& y)
- {
- return *x.ti_ == *y.ti_;
- }
-
- inline
- bool
- operator!= (type_id const& x, type_id const& y)
- {
- return *x.ti_ != *y.ti_;
- }
-
- inline
- bool
- operator< (type_id const& x, type_id const& y)
- {
- return x.ti_->before (*y.ti_);
- }
- }
-}
diff --git a/libcutl/cutl/compiler/type-id.txx b/libcutl/cutl/compiler/type-id.txx
deleted file mode 100644
index bc7a2e3..0000000
--- a/libcutl/cutl/compiler/type-id.txx
+++ /dev/null
@@ -1,17 +0,0 @@
-// file : cutl/compiler/type-id.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- namespace compiler
- {
- template <typename X>
- inline
- type_id::
- type_id (X const volatile& x)
- : ti_ (&typeid (x))
- {
- }
- }
-}
diff --git a/libcutl/cutl/compiler/type-info.cxx b/libcutl/cutl/compiler/type-info.cxx
deleted file mode 100644
index b4353b3..0000000
--- a/libcutl/cutl/compiler/type-info.cxx
+++ /dev/null
@@ -1,30 +0,0 @@
-// file : cutl/compiler/type-info.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-namespace cutl
-{
- namespace compiler
- {
- using namespace bits;
-
- type_info const&
- lookup (type_id const& tid)
- {
- type_info_map::const_iterator i (type_info_map_->find (tid));
-
- if (i == type_info_map_->end ())
- throw no_type_info ();
-
- return i->second;
- }
-
- void
- insert (type_info const& ti)
- {
- type_info_map_->insert (type_info_map::value_type (ti.type_id (), ti));
- }
- }
-}
diff --git a/libcutl/cutl/compiler/type-info.hxx b/libcutl/cutl/compiler/type-info.hxx
deleted file mode 100644
index 8d9a32b..0000000
--- a/libcutl/cutl/compiler/type-info.hxx
+++ /dev/null
@@ -1,111 +0,0 @@
-// file : cutl/compiler/type-info.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_COMPILER_TYPE_INFO_HXX
-#define CUTL_COMPILER_TYPE_INFO_HXX
-
-#include <map>
-#include <vector>
-#include <typeinfo> // std::type_info
-
-#include <cutl/exception.hxx>
-#include <cutl/static-ptr.hxx>
-#include <cutl/compiler/type-id.hxx>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace compiler
- {
- //
- //
- class type_info;
- typedef type_info type_info_t;
-
-
- //
- //
- class LIBCUTL_EXPORT base_info
- {
- public:
- base_info (type_id const&);
-
- public:
- type_info_t const&
- type_info () const;
-
- private:
- type_id type_id_;
- mutable type_info_t const* type_info_;
- };
-
- typedef base_info base_info_t;
-
-
- //
- //
- class LIBCUTL_EXPORT type_info
- {
- typedef std::vector<base_info> bases;
-
- public:
- typedef
- bases::const_iterator
- base_iterator;
-
- public:
- type_info (type_id_t const&);
-
- type_id_t
- type_id () const;
-
- base_iterator
- begin_base () const;
-
- base_iterator
- end_base () const;
-
- void
- add_base (type_id_t const&);
-
- private:
- type_id_t type_id_;
- bases bases_;
- };
-
-
- //
- //
- class LIBCUTL_EXPORT no_type_info: exception {};
-
- LIBCUTL_EXPORT type_info const&
- lookup (type_id const&);
-
- LIBCUTL_EXPORT type_info const&
- lookup (std::type_info const&);
-
- template <typename X>
- type_info const&
- lookup (X const volatile&);
-
- template<typename X>
- type_info const&
- lookup ();
-
- LIBCUTL_EXPORT void
- insert (type_info const&);
-
- namespace bits
- {
- struct default_type_info_id {};
- typedef std::map<type_id, type_info> type_info_map;
- static static_ptr<type_info_map, default_type_info_id> type_info_map_;
- }
- }
-}
-
-#include <cutl/compiler/type-info.ixx>
-
-#endif // CUTL_COMPILER_TYPE_INFO_HXX
diff --git a/libcutl/cutl/compiler/type-info.ixx b/libcutl/cutl/compiler/type-info.ixx
deleted file mode 100644
index bf0987c..0000000
--- a/libcutl/cutl/compiler/type-info.ixx
+++ /dev/null
@@ -1,95 +0,0 @@
-// file : cutl/compiler/type-info.ixx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- namespace compiler
- {
- // base_info
- //
-
- inline
- base_info::
- base_info (type_id const& type_id)
- : type_id_ (type_id), type_info_ (0)
- {
- }
-
- inline
- type_info_t const& base_info::
- type_info () const
- {
- // We need to do delayed lookup because of the unpredictable
- // order in which type information may be added.
- //
- // @@ MT-unsafe
- //
- if (type_info_ == 0)
- type_info_ = &(lookup (type_id_));
-
- return *type_info_;
- }
-
- // type_info
- //
-
- inline
- type_info::
- type_info (type_id_t const& tid)
- : type_id_ (tid)
- {
- }
-
- inline
- type_id_t type_info::
- type_id () const
- {
- return type_id_;
- }
-
- inline
- type_info::base_iterator type_info::
- begin_base () const
- {
- return bases_.begin ();
- }
-
-
- inline
- type_info::base_iterator type_info::
- end_base () const
- {
- return bases_.end ();
- }
-
- inline
- void type_info::
- add_base (type_id_t const& tid)
- {
- bases_.push_back (base_info (tid));
- }
-
- //
- //
- inline type_info const&
- lookup (std::type_info const& tid)
- {
- return lookup (type_id (tid));
- }
-
- template <typename X>
- inline type_info const&
- lookup (X const volatile& x)
- {
- return lookup (typeid (x));
- }
-
- template<typename X>
- inline type_info const&
- lookup ()
- {
- return lookup (typeid (X));
- }
- }
-}
diff --git a/libcutl/cutl/container/any.hxx b/libcutl/cutl/container/any.hxx
deleted file mode 100644
index 5dd1c25..0000000
--- a/libcutl/cutl/container/any.hxx
+++ /dev/null
@@ -1,152 +0,0 @@
-// file : cutl/container/any.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_CONTAINER_ANY_HXX
-#define CUTL_CONTAINER_ANY_HXX
-
-#include <memory> // std::auto_ptr
-#include <typeinfo> // std::type_info
-
-#include <cutl/exception.hxx>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace container
- {
- class LIBCUTL_EXPORT any
- {
- public:
- struct LIBCUTL_EXPORT typing: exception {};
-
- public:
- any ()
- {
- }
-
- template <typename X>
- any (X const& x)
- : holder_ (new holder_impl<X> (x))
- {
- }
-
- any (any const& x)
- : holder_ (x.holder_->clone ())
- {
- }
-
- template <typename X>
- any&
- operator= (X const& x)
- {
- holder_.reset (new holder_impl<X> (x));
- return *this;
- }
-
- any&
- operator= (any const& x)
- {
- holder_.reset (x.holder_->clone ());
- return *this;
- }
-
- public:
- template <typename X>
- X&
- value ()
- {
- if (holder_impl<X>* p = dynamic_cast<holder_impl<X>*> (holder_.get ()))
- return p->value ();
- else
- throw typing ();
- }
-
- template <typename X>
- X const&
- value () const
- {
- if (holder_impl<X>* p = dynamic_cast<holder_impl<X>*> (holder_.get ()))
- return p->value ();
- else
- throw typing ();
- }
-
- std::type_info const&
- type_info () const
- {
- return holder_->type_info ();
- }
-
- public:
- bool
- empty () const
- {
- return holder_.get () == 0;
- }
-
- void
- reset ()
- {
- return holder_.reset ();
- }
-
- private:
- class LIBCUTL_EXPORT holder
- {
- public:
- virtual
- ~holder () {}
-
- virtual holder*
- clone () const = 0;
-
- virtual std::type_info const&
- type_info () const = 0;
- };
-
- template <typename X>
- class holder_impl: public holder
- {
- public:
- holder_impl (X const& x)
- : x_ (x)
- {
- }
-
- virtual holder_impl*
- clone () const
- {
- return new holder_impl (x_);
- }
-
- virtual std::type_info const&
- type_info () const
- {
- return typeid (x_);
- }
-
- X const&
- value () const
- {
- return x_;
- }
-
- X&
- value ()
- {
- return x_;
- }
-
- private:
- X x_;
- };
-
- private:
- std::auto_ptr<holder> holder_;
- };
- }
-}
-
-#endif // CUTL_CONTAINER_ANY_HXX
diff --git a/libcutl/cutl/container/graph.hxx b/libcutl/cutl/container/graph.hxx
deleted file mode 100644
index 9c1afe2..0000000
--- a/libcutl/cutl/container/graph.hxx
+++ /dev/null
@@ -1,217 +0,0 @@
-// file : cutl/container/graph.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_CONTAINER_GRAPH_HXX
-#define CUTL_CONTAINER_GRAPH_HXX
-
-#include <map>
-
-#include <cutl/exception.hxx>
-#include <cutl/shared-ptr.hxx>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace container
- {
- struct LIBCUTL_EXPORT no_edge: exception {};
- struct LIBCUTL_EXPORT no_node: exception {};
-
- template <typename N, typename E>
- class graph
- {
- public:
- typedef N node_base;
- typedef E edge_base;
-
- public:
- template <typename T>
- T&
- new_node ();
-
- template <typename T, typename A0>
- T&
- new_node (A0 const&);
-
- template <typename T, typename A0, typename A1>
- T&
- new_node (A0 const&, A1 const&);
-
- template <typename T, typename A0, typename A1, typename A2>
- T&
- new_node (A0 const&, A1 const&, A2 const&);
-
- template <typename T, typename A0, typename A1, typename A2,
- typename A3>
- T&
- new_node (A0 const&, A1 const&, A2 const&, A3 const&);
-
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4>
- T&
- new_node (A0 const&, A1 const&, A2 const&, A3 const&, A4 const&);
-
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4, typename A5>
- T&
- new_node (A0 const&, A1 const&, A2 const&, A3 const&, A4 const&,
- A5 const&);
-
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4, typename A5, typename A6>
- T&
- new_node (A0 const&, A1 const&, A2 const&, A3 const&, A4 const&,
- A5 const&, A6 const&);
-
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4, typename A5, typename A6,
- typename A7>
- T&
- new_node (A0 const&, A1 const&, A2 const&, A3 const&, A4 const&,
- A5 const&, A6 const&, A7 const&);
-
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4, typename A5, typename A6,
- typename A7, typename A8>
- T&
- new_node (A0 const&, A1 const&, A2 const&, A3 const&, A4 const&,
- A5 const&, A6 const&, A7 const&, A8 const&);
-
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4, typename A5, typename A6,
- typename A7, typename A8, typename A9>
- T&
- new_node (A0 const&, A1 const&, A2 const&, A3 const&, A4 const&,
- A5 const&, A6 const&, A7 const&, A8 const&, A9 const&);
-
- // Non-const versions.
- //
- template <typename T, typename A0>
- T&
- new_node (A0&);
-
- template <typename T, typename A0, typename A1>
- T&
- new_node (A0&, A1&);
-
- template <typename T, typename A0, typename A1, typename A2>
- T&
- new_node (A0&, A1&, A2&);
-
- public:
- template <typename T, typename L, typename R>
- T&
- new_edge (L&, R&);
-
- template <typename T, typename L, typename R,
- typename A0>
- T&
- new_edge (L&, R&, A0 const&);
-
- template <typename T, typename L, typename R,
- typename A0, typename A1>
- T&
- new_edge (L&, R&, A0 const&, A1 const&);
-
- template <typename T, typename L, typename R,
- typename A0, typename A1, typename A2>
- T&
- new_edge (L&, R&, A0 const&, A1 const&, A2 const&);
-
- template <typename T, typename L, typename R,
- typename A0, typename A1, typename A2, typename A3>
- T&
- new_edge (L&, R&, A0 const&, A1 const&, A2 const&, A3 const&);
-
- template <typename T, typename L, typename R,
- typename A0, typename A1, typename A2, typename A3,
- typename A4>
- T&
- new_edge (L&, R&, A0 const&, A1 const&, A2 const&, A3 const&,
- A4 const&);
-
- template <typename T, typename L, typename R,
- typename A0, typename A1, typename A2, typename A3,
- typename A4, typename A5>
- T&
- new_edge (L&, R&, A0 const&, A1 const&, A2 const&, A3 const&,
- A4 const&, A5 const&);
-
- // Functions to reset edge's nodes.
- //
- public:
- template <typename TE, typename TN>
- void
- reset_left_node (TE& edge, TN& node)
- {
- edge.set_left_node (node);
- }
-
- template <typename TE, typename TN>
- void
- reset_right_node (TE& edge, TN& node)
- {
- edge.set_right_node (node);
- }
-
- // Functions to add edges to a node.
- //
- public:
- template <typename TN, typename TE>
- void
- add_edge_left (TN& node, TE& edge)
- {
- node.add_edge_left (edge);
- }
-
- template <typename TN, typename TE>
- void
- add_edge_right (TN& node, TE& edge)
- {
- node.add_edge_right (edge);
- }
-
- // Functions to delete edges and nodes. In order to delete a
- // a node without leaving any dangling edges you need to make
- // sure that each edge pointing to it is either deleted or reset
- // to some other node.
- //
- public:
- template <typename T, typename L, typename R>
- void
- delete_edge (L& left_node, R& right_node, T& edge);
-
- void
- delete_node (node_base& node)
- {
- if (nodes_.erase (&node) == 0)
- throw no_node ();
- }
-
- public:
- graph () {}
-
- private:
- graph (graph const&);
-
- graph&
- operator= (graph const&);
-
- protected:
- typedef shared_ptr<node_base> node_ptr;
- typedef shared_ptr<edge_base> edge_ptr;
-
- typedef std::map<node_base*, node_ptr> nodes;
- typedef std::map<edge_base*, edge_ptr> edges;
-
- nodes nodes_;
- edges edges_;
- };
- }
-}
-
-#include <cutl/container/graph.txx>
-
-#endif // CUTL_CONTAINER_GRAPH_HXX
diff --git a/libcutl/cutl/container/graph.txx b/libcutl/cutl/container/graph.txx
deleted file mode 100644
index bb8fe47..0000000
--- a/libcutl/cutl/container/graph.txx
+++ /dev/null
@@ -1,349 +0,0 @@
-// file : cutl/container/graph.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- namespace container
- {
-
- // Nodes.
- //
-
- template <typename N, typename E>
- template <typename T>
- T& graph<N, E>::
- new_node ()
- {
- shared_ptr<T> node (new (shared) T);
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
-
- template <typename N, typename E>
- template <typename T, typename A0>
- T& graph<N, E>::
- new_node (A0 const& a0)
- {
- shared_ptr<T> node (new (shared) T (a0));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1>
- T& graph<N, E>::
- new_node (A0 const& a0, A1 const& a1)
- {
- shared_ptr<T> node (new (shared) T (a0, a1));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1, typename A2>
- T& graph<N, E>::
- new_node (A0 const& a0, A1 const& a1, A2 const& a2)
- {
- shared_ptr<T> node (new (shared) T (a0, a1, a2));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1, typename A2,
- typename A3>
- T& graph<N, E>::
- new_node (A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3)
- {
- shared_ptr<T> node (new (shared) T (a0, a1, a2, a3));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4>
- T& graph<N, E>::
- new_node (A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3,
- A4 const& a4)
- {
- shared_ptr<T> node (new (shared) T (a0, a1, a2, a3, a4));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4, typename A5>
- T& graph<N, E>::
- new_node (A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3,
- A4 const& a4, A5 const& a5)
- {
- shared_ptr<T> node (new (shared) T (a0, a1, a2, a3, a4, a5));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4, typename A5, typename A6>
- T& graph<N, E>::
- new_node (A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3,
- A4 const& a4, A5 const& a5, A6 const& a6)
- {
- shared_ptr<T> node (new (shared) T (a0, a1, a2, a3, a4, a5, a6));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4, typename A5, typename A6,
- typename A7>
- T& graph<N, E>::
- new_node (A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3,
- A4 const& a4, A5 const& a5, A6 const& a6, A7 const& a7)
- {
- shared_ptr<T> node (new (shared) T (a0, a1, a2, a3, a4, a5, a6, a7));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4, typename A5, typename A6,
- typename A7, typename A8>
- T& graph<N, E>::
- new_node (A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3,
- A4 const& a4, A5 const& a5, A6 const& a6, A7 const& a7,
- A8 const& a8)
- {
- shared_ptr<T> node (
- new (shared) T (a0, a1, a2, a3, a4, a5, a6, a7, a8));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1, typename A2,
- typename A3, typename A4, typename A5, typename A6,
- typename A7, typename A8, typename A9>
- T& graph<N, E>::
- new_node (A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3,
- A4 const& a4, A5 const& a5, A6 const& a6, A7 const& a7,
- A8 const& a8, A9 const& a9)
- {
- shared_ptr<T> node (
- new (shared) T (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
- // Non-const versions.
- //
- template <typename N, typename E>
- template <typename T, typename A0>
- T& graph<N, E>::
- new_node (A0& a0)
- {
- shared_ptr<T> node (new (shared) T (a0));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1>
- T& graph<N, E>::
- new_node (A0& a0, A1& a1)
- {
- shared_ptr<T> node (new (shared) T (a0, a1));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
- template <typename N, typename E>
- template <typename T, typename A0, typename A1, typename A2>
- T& graph<N, E>::
- new_node (A0& a0, A1& a1, A2& a2)
- {
- shared_ptr<T> node (new (shared) T (a0, a1, a2));
- nodes_[node.get ()] = node;
-
- return *node;
- }
-
- // Edges.
- //
-
- template <typename N, typename E>
- template <typename T, typename L, typename R>
- T& graph<N, E>::
- new_edge (L& l, R& r)
- {
- shared_ptr<T> edge (new (shared) T);
- edges_[edge.get ()] = edge;
-
- edge->set_left_node (l);
- edge->set_right_node (r);
-
- l.add_edge_left (*edge);
- r.add_edge_right (*edge);
-
- return *edge;
- }
-
- template <typename N, typename E>
- template <typename T, typename L, typename R,
- typename A0>
- T& graph<N, E>::
- new_edge (L& l, R& r, A0 const& a0)
- {
- shared_ptr<T> edge (new (shared) T (a0));
- edges_[edge.get ()] = edge;
-
- edge->set_left_node (l);
- edge->set_right_node (r);
-
- l.add_edge_left (*edge);
- r.add_edge_right (*edge);
-
- return *edge;
- }
-
- template <typename N, typename E>
- template <typename T, typename L, typename R,
- typename A0, typename A1>
- T& graph<N, E>::
- new_edge (L& l, R& r, A0 const& a0, A1 const& a1)
- {
- shared_ptr<T> edge (new (shared) T (a0, a1));
- edges_[edge.get ()] = edge;
-
- edge->set_left_node (l);
- edge->set_right_node (r);
-
- l.add_edge_left (*edge);
- r.add_edge_right (*edge);
-
- return *edge;
- }
-
- template <typename N, typename E>
- template <typename T, typename L, typename R,
- typename A0, typename A1, typename A2>
- T& graph<N, E>::
- new_edge (L& l, R& r, A0 const& a0, A1 const& a1, A2 const& a2)
- {
- shared_ptr<T> edge (new (shared) T (a0, a1, a2));
- edges_[edge.get ()] = edge;
-
- edge->set_left_node (l);
- edge->set_right_node (r);
-
- l.add_edge_left (*edge);
- r.add_edge_right (*edge);
-
- return *edge;
- }
-
- template <typename N, typename E>
- template <typename T, typename L, typename R,
- typename A0, typename A1, typename A2, typename A3>
- T& graph<N, E>::
- new_edge (L& l, R& r, A0 const& a0, A1 const& a1, A2 const& a2,
- A3 const& a3)
- {
- shared_ptr<T> edge (new (shared) T (a0, a1, a2, a3));
- edges_[edge.get ()] = edge;
-
- edge->set_left_node (l);
- edge->set_right_node (r);
-
- l.add_edge_left (*edge);
- r.add_edge_right (*edge);
-
- return *edge;
- }
-
- template <typename N, typename E>
- template <typename T, typename L, typename R,
- typename A0, typename A1, typename A2, typename A3,
- typename A4>
- T& graph<N, E>::
- new_edge (L& l, R& r, A0 const& a0, A1 const& a1, A2 const& a2,
- A3 const& a3, A4 const& a4)
- {
- shared_ptr<T> edge (new (shared) T (a0, a1, a2, a3, a4));
- edges_[edge.get ()] = edge;
-
- edge->set_left_node (l);
- edge->set_right_node (r);
-
- l.add_edge_left (*edge);
- r.add_edge_right (*edge);
-
- return *edge;
- }
-
- template <typename N, typename E>
- template <typename T, typename L, typename R,
- typename A0, typename A1, typename A2, typename A3,
- typename A4, typename A5>
- T& graph<N, E>::
- new_edge (L& l, R& r, A0 const& a0, A1 const& a1, A2 const& a2,
- A3 const& a3, A4 const& a4, A5 const& a5)
- {
- shared_ptr<T> edge (new (shared) T (a0, a1, a2, a3, a4, a5));
- edges_[edge.get ()] = edge;
-
- edge->set_left_node (l);
- edge->set_right_node (r);
-
- l.add_edge_left (*edge);
- r.add_edge_right (*edge);
-
- return *edge;
- }
-
-
- template <typename N, typename E>
- template <typename T, typename L, typename R>
- void graph<N, E>::
- delete_edge (L& l, R& r, T& edge)
- {
- typename edges::iterator i (edges_.find (&edge));
-
- if (i == edges_.end () ||
- nodes_.find (&l) == nodes_.end () ||
- nodes_.find (&r) == nodes_.end ())
- throw no_edge ();
-
- r.remove_edge_right (edge);
- l.remove_edge_left (edge);
-
- edge.clear_right_node (r);
- edge.clear_left_node (l);
-
- edges_.erase (i);
- }
- }
-}
diff --git a/libcutl/cutl/container/key.hxx b/libcutl/cutl/container/key.hxx
deleted file mode 100644
index 42f0fe5..0000000
--- a/libcutl/cutl/container/key.hxx
+++ /dev/null
@@ -1,71 +0,0 @@
-// file : cutl/container/key.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompkeying LICENSE file
-
-#ifndef CUTL_CONTAINER_KEY_HXX
-#define CUTL_CONTAINER_KEY_HXX
-
-namespace cutl
-{
- namespace container
- {
- // A modifiable map key wrapper that can be used to implement multi-
- // index containers, as discussed in the following post:
- //
- // http://www.codesynthesis.com/~boris/blog/2012/09/11/emulating-boost-multi-index-with-std-containers/
- //
- template <class T1, class T2 = void, class T3 = void>
- struct key;
-
- template <class T1>
- struct key<T1, void, void>
- {
- mutable const T1* p1;
-
- key (): p1 (0) {}
- key (const T1& r1): p1 (&r1) {}
- void assign (const T1& r1) const {p1 = &r1;}
-
- bool operator< (const key& x) const {return *p1 < *x.p1;}
- };
-
- template <class T1, class T2>
- struct key<T1, T2, void>
- {
- mutable const T1* p1;
- mutable const T2* p2;
-
- key (): p1 (0), p2 (0) {}
- key (const T1& r1, const T2& r2): p1 (&r1), p2 (&r2) {}
- void assign (const T1& r1, const T2& r2) const {p1 = &r1; p2 = &r2;}
-
- bool operator< (const key& x) const
- {
- return *p1 < *x.p1 || (!(*x.p1 < *p1) && *p2 < *x.p2);
- }
- };
-
- template <class T1, class T2, class T3>
- struct key
- {
- mutable const T1* p1;
- mutable const T2* p2;
- mutable const T3* p3;
-
- key (): p1 (0), p2 (0), p3 (0) {}
- key (const T1& r1, const T2& r2, const T3& r3)
- : p1 (&r1), p2 (&r2) , p3 (&r3) {}
- void assign (const T1& r1, const T2& r2, const T3& r3) const
- {p1 = &r1; p2 = &r2; p3 = &r3;}
-
- bool operator< (const key& x) const
- {
- return (*p1 < *x.p1 ||
- (!(*x.p1 < *p1) && (*p2 < *x.p2 ||
- (!(*x.p2 < *p2) && *p3 < *x.p3))));
- }
- };
- }
-}
-
-#endif // CUTL_CONTAINER_KEY_HXX
diff --git a/libcutl/cutl/container/map-iterator.hxx b/libcutl/cutl/container/map-iterator.hxx
deleted file mode 100644
index 051ffb5..0000000
--- a/libcutl/cutl/container/map-iterator.hxx
+++ /dev/null
@@ -1,69 +0,0 @@
-// file : cutl/container/map-iterator.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_CONTAINER_MAP_ITERATOR_HXX
-#define CUTL_CONTAINER_MAP_ITERATOR_HXX
-
-namespace cutl
-{
- namespace container
- {
- // Map iterator adapter that can be used to implement multi-index
- // containers, as discussed in the following post:
- //
- // http://www.codesynthesis.com/~boris/blog/2012/09/11/emulating-boost-multi-index-with-std-containers/
- //
- template <typename M>
- struct map_iterator: M::iterator
- {
- typedef typename M::iterator base_iterator;
- typedef typename M::value_type::second_type value_type;
- typedef value_type* pointer;
- typedef value_type& reference;
-
- map_iterator () {}
- map_iterator (base_iterator i): base_iterator (i) {}
-
- reference
- operator* () const
- {
- return base_iterator::operator* ().second;
- }
-
- pointer
- operator-> () const
- {
- return &base_iterator::operator-> ()->second;
- }
- };
-
- template <typename M>
- struct map_const_iterator: M::const_iterator
- {
- typedef typename M::iterator base_iterator;
- typedef typename M::const_iterator base_const_iterator;
- typedef const typename M::value_type::second_type value_type;
- typedef value_type* pointer;
- typedef value_type& reference;
-
- map_const_iterator () {}
- map_const_iterator (base_iterator i): base_const_iterator (i) {}
- map_const_iterator (base_const_iterator i): base_const_iterator (i) {}
-
- reference
- operator* () const
- {
- return base_const_iterator::operator* ().second;
- }
-
- pointer
- operator-> () const
- {
- return &base_const_iterator::operator-> ()->second;
- }
- };
- }
-}
-
-#endif // CUTL_CONTAINER_MAP_ITERATOR_HXX
diff --git a/libcutl/cutl/container/multi-index.hxx b/libcutl/cutl/container/multi-index.hxx
deleted file mode 100644
index 5249647..0000000
--- a/libcutl/cutl/container/multi-index.hxx
+++ /dev/null
@@ -1,15 +0,0 @@
-// file : cutl/container/multi-index.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_CONTAINER_MULTI_INDEX_HXX
-#define CUTL_CONTAINER_MULTI_INDEX_HXX
-
-// Multi-index containers support. See the following post for details:
-//
-// http://www.codesynthesis.com/~boris/blog/2012/09/11/emulating-boost-multi-index-with-std-containers/
-//
-#include <cutl/container/key.hxx>
-#include <cutl/container/map-iterator.hxx>
-
-#endif // CUTL_CONTAINER_MULTI_INDEX_HXX
diff --git a/libcutl/cutl/container/pointer-iterator.hxx b/libcutl/cutl/container/pointer-iterator.hxx
deleted file mode 100644
index 7059558..0000000
--- a/libcutl/cutl/container/pointer-iterator.hxx
+++ /dev/null
@@ -1,126 +0,0 @@
-// file : cutl/container/pointer-iterator.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_CONTAINER_POINTER_ITERATOR_HXX
-#define CUTL_CONTAINER_POINTER_ITERATOR_HXX
-
-#include <iterator> // std::iterator_traits
-
-#include <cutl/meta/remove-p.hxx>
-
-namespace cutl
-{
- namespace container
- {
- template <typename I>
- class pointer_iterator
- {
- public:
- typedef
- typename meta::remove_p<typename std::iterator_traits<I>::value_type>::r
- value_type;
-
- typedef
- typename std::iterator_traits<I>::iterator_category
- iterator_category;
-
- typedef
- typename std::iterator_traits<I>::difference_type
- difference_type;
-
- typedef value_type& reference;
- typedef value_type* pointer;
- typedef I base_iterator;
-
- public:
- pointer_iterator ()
- : i_ () // I can be of a pointer type.
- {
- }
-
- pointer_iterator (I const& i)
- : i_ (i)
- {
- }
-
- public:
- reference
- operator* () const
- {
- return **i_;
- }
-
- pointer
- operator-> () const
- {
- return *i_;
- }
-
- I const&
- base () const
- {
- return i_;
- }
-
- public:
- // Forward iterator requirements.
- //
- pointer_iterator&
- operator++ ()
- {
- ++i_;
- return *this;
- }
-
- pointer_iterator
- operator++ (int)
- {
- pointer_iterator r (*this);
- ++i_;
- return r;
- }
-
- pointer_iterator&
- operator-- ()
- {
- --i_;
- return *this;
- }
-
- pointer_iterator
- operator-- (int)
- {
- pointer_iterator r (*this);
- --i_;
- return r;
- }
-
- private:
- I i_;
- };
-
- template <typename I>
- inline bool
- operator== (pointer_iterator<I> const& a, pointer_iterator<I> const& b)
- {
- return a.base () == b.base ();
- }
-
- template <typename I>
- inline bool
- operator!= (pointer_iterator<I> const& a, pointer_iterator<I> const& b)
- {
- return a.base () != b.base ();
- }
-
- template <typename I>
- inline typename pointer_iterator<I>::difference_type
- operator- (pointer_iterator<I> const& a, pointer_iterator<I> const& b)
- {
- return a.base () - b.base ();
- }
- }
-}
-
-#endif // CUTL_CONTAINER_POINTER_ITERATOR_HXX
diff --git a/libcutl/cutl/details/boost/LICENSE b/libcutl/cutl/details/boost/LICENSE
deleted file mode 100644
index 36b7cd9..0000000
--- a/libcutl/cutl/details/boost/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/libcutl/cutl/details/boost/README b/libcutl/cutl/details/boost/README
deleted file mode 100644
index d62d3e6..0000000
--- a/libcutl/cutl/details/boost/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory contains a subset of the Boost libraries for internal
-use by libcutl. Refer to www.boost.org for the complete set.
diff --git a/libcutl/cutl/details/boost/assert.hpp b/libcutl/cutl/details/boost/assert.hpp
deleted file mode 100644
index 30e6d14..0000000
--- a/libcutl/cutl/details/boost/assert.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-//
-// boost/assert.hpp - BOOST_ASSERT(expr)
-// BOOST_ASSERT_MSG(expr, msg)
-// BOOST_VERIFY(expr)
-//
-// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2007 Peter Dimov
-// Copyright (c) Beman Dawes 2011
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// Note: There are no include guards. This is intentional.
-//
-// See http://www.boost.org/libs/utility/assert.html for documentation.
-//
-
-//
-// Stop inspect complaining about use of 'assert':
-//
-// boostinspect:naassert_macro
-//
-
-//--------------------------------------------------------------------------------------//
-// BOOST_ASSERT //
-//--------------------------------------------------------------------------------------//
-
-#undef BOOST_ASSERT
-
-#if defined(BOOST_DISABLE_ASSERTS)
-
-# define BOOST_ASSERT(expr) ((void)0)
-
-#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
-
-#include <cutl/details/boost/current_function.hpp>
-
-namespace cutl_details_boost
-{
- void assertion_failed(char const * expr,
- char const * function, char const * file, long line); // user defined
-} // namespace cutl_details_boost
-
-#define BOOST_ASSERT(expr) ((expr) \
- ? ((void)0) \
- : ::cutl_details_boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
-
-#else
-# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
-# define BOOST_ASSERT(expr) assert(expr)
-#endif
-
-//--------------------------------------------------------------------------------------//
-// BOOST_ASSERT_MSG //
-//--------------------------------------------------------------------------------------//
-
-# undef BOOST_ASSERT_MSG
-
-#if defined(BOOST_DISABLE_ASSERTS) || defined(NDEBUG)
-
- #define BOOST_ASSERT_MSG(expr, msg) ((void)0)
-
-#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
-
- #include <cutl/details/boost/current_function.hpp>
-
- namespace cutl_details_boost
- {
- void assertion_failed_msg(char const * expr, char const * msg,
- char const * function, char const * file, long line); // user defined
- } // namespace cutl_details_boost
-
- #define BOOST_ASSERT_MSG(expr, msg) ((expr) \
- ? ((void)0) \
- : ::cutl_details_boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
-
-#else
- #ifndef BOOST_ASSERT_HPP
- #define BOOST_ASSERT_HPP
- #include <cstdlib>
- #include <iostream>
- #include <cutl/details/boost/current_function.hpp>
-
- // IDE's like Visual Studio perform better if output goes to std::cout or
- // some other stream, so allow user to configure output stream:
- #ifndef BOOST_ASSERT_MSG_OSTREAM
- # define BOOST_ASSERT_MSG_OSTREAM std::cerr
- #endif
-
- namespace cutl_details_boost
- {
- namespace assertion
- {
- namespace detail
- {
- inline void assertion_failed_msg(char const * expr, char const * msg, char const * function,
- char const * file, long line)
- {
- BOOST_ASSERT_MSG_OSTREAM
- << "***** Internal Program Error - assertion (" << expr << ") failed in "
- << function << ":\n"
- << file << '(' << line << "): " << msg << std::endl;
- #ifdef UNDER_CE
- // The Windows CE CRT library does not have abort() so use exit(-1) instead.
- std::exit(-1);
- #else
- std::abort();
- #endif
- }
- } // detail
- } // assertion
- } // detail
- #endif
-
- #define BOOST_ASSERT_MSG(expr, msg) ((expr) \
- ? ((void)0) \
- : ::cutl_details_boost::assertion::detail::assertion_failed_msg(#expr, msg, \
- BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
-#endif
-
-//--------------------------------------------------------------------------------------//
-// BOOST_VERIFY //
-//--------------------------------------------------------------------------------------//
-
-#undef BOOST_VERIFY
-
-#if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
-
-# define BOOST_VERIFY(expr) ((void)(expr))
-
-#else
-
-# define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
-
-#endif
diff --git a/libcutl/cutl/details/boost/checked_delete.hpp b/libcutl/cutl/details/boost/checked_delete.hpp
deleted file mode 100644
index dc2ef66..0000000
--- a/libcutl/cutl/details/boost/checked_delete.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
-#define BOOST_CHECKED_DELETE_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/checked_delete.hpp
-//
-// Copyright (c) 2002, 2003 Peter Dimov
-// Copyright (c) 2003 Daniel Frey
-// Copyright (c) 2003 Howard Hinnant
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/utility/checked_delete.html for documentation.
-//
-
-namespace cutl_details_boost
-{
-
-// verify that types are complete for increased safety
-
-template<class T> inline void checked_delete(T * x)
-{
- // intentionally complex - simplification causes regressions
- typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
- (void) sizeof(type_must_be_complete);
- delete x;
-}
-
-template<class T> inline void checked_array_delete(T * x)
-{
- typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
- (void) sizeof(type_must_be_complete);
- delete [] x;
-}
-
-template<class T> struct checked_deleter
-{
- typedef void result_type;
- typedef T * argument_type;
-
- void operator()(T * x) const
- {
- // cutl_details_boost:: disables ADL
- cutl_details_boost::checked_delete(x);
- }
-};
-
-template<class T> struct checked_array_deleter
-{
- typedef void result_type;
- typedef T * argument_type;
-
- void operator()(T * x) const
- {
- cutl_details_boost::checked_array_delete(x);
- }
-};
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/config.hpp b/libcutl/cutl/details/boost/config.hpp
deleted file mode 100644
index 8a51685..0000000
--- a/libcutl/cutl/details/boost/config.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-// Boost config.hpp configuration header file ------------------------------//
-
-// (C) Copyright John Maddock 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/config for most recent version.
-
-// Boost config.hpp policy and rationale documentation has been moved to
-// http://www.boost.org/libs/config
-//
-// CAUTION: This file is intended to be completely stable -
-// DO NOT MODIFY THIS FILE!
-//
-
-#ifndef BOOST_CONFIG_HPP
-#define BOOST_CONFIG_HPP
-
-// if we don't have a user config, then use the default location:
-#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG)
-# define BOOST_USER_CONFIG <cutl/details/boost/config/user.hpp>
-#endif
-// include it first:
-#ifdef BOOST_USER_CONFIG
-# include BOOST_USER_CONFIG
-#endif
-
-// if we don't have a compiler config set, try and find one:
-#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG)
-# include <cutl/details/boost/config/select_compiler_config.hpp>
-#endif
-// if we have a compiler config, include it now:
-#ifdef BOOST_COMPILER_CONFIG
-# include BOOST_COMPILER_CONFIG
-#endif
-
-// if we don't have a std library config set, try and find one:
-#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG) && defined(__cplusplus)
-# include <cutl/details/boost/config/select_stdlib_config.hpp>
-#endif
-// if we have a std library config, include it now:
-#ifdef BOOST_STDLIB_CONFIG
-# include BOOST_STDLIB_CONFIG
-#endif
-
-// if we don't have a platform config set, try and find one:
-#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG)
-# include <cutl/details/boost/config/select_platform_config.hpp>
-#endif
-// if we have a platform config, include it now:
-#ifdef BOOST_PLATFORM_CONFIG
-# include BOOST_PLATFORM_CONFIG
-#endif
-
-// get config suffix code:
-#include <cutl/details/boost/config/suffix.hpp>
-
-#endif // BOOST_CONFIG_HPP
-
-
-
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/abi/msvc_prefix.hpp b/libcutl/cutl/details/boost/config/abi/msvc_prefix.hpp
deleted file mode 100644
index 97f06cd..0000000
--- a/libcutl/cutl/details/boost/config/abi/msvc_prefix.hpp
+++ /dev/null
@@ -1,22 +0,0 @@
-// (C) Copyright John Maddock 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-//
-// Boost binaries are built with the compiler's default ABI settings,
-// if the user changes their default alignment in the VS IDE then their
-// code will no longer be binary compatible with the bjam built binaries
-// unless this header is included to force Boost code into a consistent ABI.
-//
-// Note that inclusion of this header is only necessary for libraries with
-// separate source, header only libraries DO NOT need this as long as all
-// translation units are built with the same options.
-//
-#if defined(_M_X64)
-# pragma pack(push,16)
-#else
-# pragma pack(push,8)
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/config/abi/msvc_suffix.hpp b/libcutl/cutl/details/boost/config/abi/msvc_suffix.hpp
deleted file mode 100644
index a64d783..0000000
--- a/libcutl/cutl/details/boost/config/abi/msvc_suffix.hpp
+++ /dev/null
@@ -1,8 +0,0 @@
-// (C) Copyright John Maddock 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#pragma pack(pop)
-
-
diff --git a/libcutl/cutl/details/boost/config/abi_prefix.hpp b/libcutl/cutl/details/boost/config/abi_prefix.hpp
deleted file mode 100644
index 19ad1c7..0000000
--- a/libcutl/cutl/details/boost/config/abi_prefix.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// abi_prefix header -------------------------------------------------------//
-
-// (c) Copyright John Maddock 2003
-
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-
-#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
-# define BOOST_CONFIG_ABI_PREFIX_HPP
-#else
-# error double inclusion of header boost/config/abi_prefix.hpp is an error
-#endif
-
-#include <cutl/details/boost/config.hpp>
-
-// this must occur after all other includes and before any code appears:
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#if defined( __BORLANDC__ )
-#pragma nopushoptwarn
-#endif
-
diff --git a/libcutl/cutl/details/boost/config/abi_suffix.hpp b/libcutl/cutl/details/boost/config/abi_suffix.hpp
deleted file mode 100644
index 9bc60cd..0000000
--- a/libcutl/cutl/details/boost/config/abi_suffix.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// abi_sufffix header -------------------------------------------------------//
-
-// (c) Copyright John Maddock 2003
-
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-
-// This header should be #included AFTER code that was preceded by a #include
-// <cutl/details/boost/config/abi_prefix.hpp>.
-
-#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
-# error Header boost/config/abi_suffix.hpp must only be used after boost/config/abi_prefix.hpp
-#else
-# undef BOOST_CONFIG_ABI_PREFIX_HPP
-#endif
-
-// the suffix header occurs after all of our code:
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#if defined( __BORLANDC__ )
-#pragma nopushoptwarn
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/config/auto_link.hpp b/libcutl/cutl/details/boost/config/auto_link.hpp
deleted file mode 100644
index 6e33fa1..0000000
--- a/libcutl/cutl/details/boost/config/auto_link.hpp
+++ /dev/null
@@ -1,423 +0,0 @@
-// (C) Copyright John Maddock 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE auto_link.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers.
- */
-
-/*************************************************************************
-
-USAGE:
-~~~~~~
-
-Before including this header you must define one or more of define the following macros:
-
-BOOST_LIB_NAME: Required: A string containing the basename of the library,
- for example boost_regex.
-BOOST_LIB_TOOLSET: Optional: the base name of the toolset.
-BOOST_DYN_LINK: Optional: when set link to dll rather than static library.
-BOOST_LIB_DIAGNOSTIC: Optional: when set the header will print out the name
- of the library selected (useful for debugging).
-BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
- rather than a mangled-name version.
-BOOST_AUTO_LINK_TAGGED: Specifies that we link to libraries built with the --layout=tagged option.
- This is essentially the same as the default name-mangled version, but without
- the compiler name and version, or the Boost version. Just the build options.
-
-These macros will be undef'ed at the end of the header, further this header
-has no include guards - so be sure to include it only once from your library!
-
-Algorithm:
-~~~~~~~~~~
-
-Libraries for Borland and Microsoft compilers are automatically
-selected here, the name of the lib is selected according to the following
-formula:
-
-BOOST_LIB_PREFIX
- + BOOST_LIB_NAME
- + "_"
- + BOOST_LIB_TOOLSET
- + BOOST_LIB_THREAD_OPT
- + BOOST_LIB_RT_OPT
- "-"
- + BOOST_LIB_VERSION
-
-These are defined as:
-
-BOOST_LIB_PREFIX: "lib" for static libraries otherwise "".
-
-BOOST_LIB_NAME: The base name of the lib ( for example boost_regex).
-
-BOOST_LIB_TOOLSET: The compiler toolset name (vc6, vc7, bcb5 etc).
-
-BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing.
-
-BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used,
- contains one or more of the following letters after
- a hyphen:
-
- s static runtime (dynamic if not present).
- g debug/diagnostic runtime (release if not present).
- y Python debug/diagnostic runtime (release if not present).
- d debug build (release if not present).
- p STLport build.
- n STLport build without its IOStreams.
-
-BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
-
-
-***************************************************************************/
-
-#ifdef __cplusplus
-# ifndef BOOST_CONFIG_HPP
-# include <cutl/details/boost/config.hpp>
-# endif
-#elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
-//
-// C language compatability (no, honestly)
-//
-# define BOOST_MSVC _MSC_VER
-# define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
-# define BOOST_DO_STRINGIZE(X) #X
-#endif
-//
-// Only include what follows for known and supported compilers:
-//
-#if defined(BOOST_MSVC) \
- || defined(__BORLANDC__) \
- || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \
- || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200))
-
-#ifndef BOOST_VERSION_HPP
-# include <cutl/details/boost/version.hpp>
-#endif
-
-#ifndef BOOST_LIB_NAME
-# error "Macro BOOST_LIB_NAME not set (internal error)"
-#endif
-
-//
-// error check:
-//
-#if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG)
-# pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors")
-# pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes")
-# error "Incompatible build options"
-#endif
-//
-// select toolset if not defined already:
-//
-#ifndef BOOST_LIB_TOOLSET
-# if defined(BOOST_MSVC) && (BOOST_MSVC < 1200)
- // Note: no compilers before 1200 are supported
-# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
-
-# ifdef UNDER_CE
- // eVC4:
-# define BOOST_LIB_TOOLSET "evc4"
-# else
- // vc6:
-# define BOOST_LIB_TOOLSET "vc6"
-# endif
-
-# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1310)
-
- // vc7:
-# define BOOST_LIB_TOOLSET "vc7"
-
-# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1400)
-
- // vc71:
-# define BOOST_LIB_TOOLSET "vc71"
-
-# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1500)
-
- // vc80:
-# define BOOST_LIB_TOOLSET "vc80"
-
-# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1600)
-
- // vc90:
-# define BOOST_LIB_TOOLSET "vc90"
-
-# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1700)
-
- // vc10:
-# define BOOST_LIB_TOOLSET "vc100"
-
-# elif defined(BOOST_MSVC)
-
- // vc11:
-# define BOOST_LIB_TOOLSET "vc110"
-
-# elif defined(__BORLANDC__)
-
- // CBuilder 6:
-# define BOOST_LIB_TOOLSET "bcb"
-
-# elif defined(__ICL)
-
- // Intel C++, no version number:
-# define BOOST_LIB_TOOLSET "iw"
-
-# elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )
-
- // Metrowerks CodeWarrior 8.x
-# define BOOST_LIB_TOOLSET "cw8"
-
-# elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )
-
- // Metrowerks CodeWarrior 9.x
-# define BOOST_LIB_TOOLSET "cw9"
-
-# endif
-#endif // BOOST_LIB_TOOLSET
-
-//
-// select thread opt:
-//
-#if defined(_MT) || defined(__MT__)
-# define BOOST_LIB_THREAD_OPT "-mt"
-#else
-# define BOOST_LIB_THREAD_OPT
-#endif
-
-#if defined(_MSC_VER) || defined(__MWERKS__)
-
-# ifdef _DLL
-
-# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
-
-# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-gydp"
-# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
-# define BOOST_LIB_RT_OPT "-gdp"
-# elif defined(_DEBUG)\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-gydp"
-# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
-# error "Build options aren't compatible with pre-built libraries"
-# elif defined(_DEBUG)
-# define BOOST_LIB_RT_OPT "-gdp"
-# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
-# error "Build options aren't compatible with pre-built libraries"
-# else
-# define BOOST_LIB_RT_OPT "-p"
-# endif
-
-# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
-
-# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-gydpn"
-# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
-# define BOOST_LIB_RT_OPT "-gdpn"
-# elif defined(_DEBUG)\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-gydpn"
-# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
-# error "Build options aren't compatible with pre-built libraries"
-# elif defined(_DEBUG)
-# define BOOST_LIB_RT_OPT "-gdpn"
-# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
-# error "Build options aren't compatible with pre-built libraries"
-# else
-# define BOOST_LIB_RT_OPT "-pn"
-# endif
-
-# else
-
-# if defined(_DEBUG) && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-gyd"
-# elif defined(_DEBUG)
-# define BOOST_LIB_RT_OPT "-gd"
-# else
-# define BOOST_LIB_RT_OPT
-# endif
-
-# endif
-
-# else
-
-# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
-
-# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-sgydp"
-# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
-# define BOOST_LIB_RT_OPT "-sgdp"
-# elif defined(_DEBUG)\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-sgydp"
-# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
-# error "Build options aren't compatible with pre-built libraries"
-# elif defined(_DEBUG)
-# define BOOST_LIB_RT_OPT "-sgdp"
-# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
-# error "Build options aren't compatible with pre-built libraries"
-# else
-# define BOOST_LIB_RT_OPT "-sp"
-# endif
-
-# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
-
-# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-sgydpn"
-# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
-# define BOOST_LIB_RT_OPT "-sgdpn"
-# elif defined(_DEBUG)\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-sgydpn"
-# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
-# error "Build options aren't compatible with pre-built libraries"
-# elif defined(_DEBUG)
-# define BOOST_LIB_RT_OPT "-sgdpn"
-# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
-# error "Build options aren't compatible with pre-built libraries"
-# else
-# define BOOST_LIB_RT_OPT "-spn"
-# endif
-
-# else
-
-# if defined(_DEBUG)\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-sgyd"
-# elif defined(_DEBUG)
-# define BOOST_LIB_RT_OPT "-sgd"
-# else
-# define BOOST_LIB_RT_OPT "-s"
-# endif
-
-# endif
-
-# endif
-
-#elif defined(__BORLANDC__)
-
-//
-// figure out whether we want the debug builds or not:
-//
-#if __BORLANDC__ > 0x561
-#pragma defineonoption BOOST_BORLAND_DEBUG -v
-#endif
-//
-// sanity check:
-//
-#if defined(__STL_DEBUG) || defined(_STLP_DEBUG)
-#error "Pre-built versions of the Boost libraries are not provided in STLport-debug form"
-#endif
-
-# ifdef _RTLDLL
-
-# if defined(BOOST_BORLAND_DEBUG)\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-yd"
-# elif defined(BOOST_BORLAND_DEBUG)
-# define BOOST_LIB_RT_OPT "-d"
-# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT -y
-# else
-# define BOOST_LIB_RT_OPT
-# endif
-
-# else
-
-# if defined(BOOST_BORLAND_DEBUG)\
- && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-syd"
-# elif defined(BOOST_BORLAND_DEBUG)
-# define BOOST_LIB_RT_OPT "-sd"
-# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT "-sy"
-# else
-# define BOOST_LIB_RT_OPT "-s"
-# endif
-
-# endif
-
-#endif
-
-//
-// select linkage opt:
-//
-#if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)
-# define BOOST_LIB_PREFIX
-#elif defined(BOOST_DYN_LINK)
-# error "Mixing a dll boost library with a static runtime is a really bad idea..."
-#else
-# define BOOST_LIB_PREFIX "lib"
-#endif
-
-//
-// now include the lib:
-//
-#if defined(BOOST_LIB_NAME) \
- && defined(BOOST_LIB_PREFIX) \
- && defined(BOOST_LIB_TOOLSET) \
- && defined(BOOST_LIB_THREAD_OPT) \
- && defined(BOOST_LIB_RT_OPT) \
- && defined(BOOST_LIB_VERSION)
-
-#ifdef BOOST_AUTO_LINK_TAGGED
-# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
-# ifdef BOOST_LIB_DIAGNOSTIC
-# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
-# endif
-#elif defined(BOOST_AUTO_LINK_NOMANGLE)
-# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
-# ifdef BOOST_LIB_DIAGNOSTIC
-# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
-# endif
-#else
-# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
-# ifdef BOOST_LIB_DIAGNOSTIC
-# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
-# endif
-#endif
-
-#else
-# error "some required macros where not defined (internal logic error)."
-#endif
-
-
-#endif // _MSC_VER || __BORLANDC__
-
-//
-// finally undef any macros we may have set:
-//
-#ifdef BOOST_LIB_PREFIX
-# undef BOOST_LIB_PREFIX
-#endif
-#if defined(BOOST_LIB_NAME)
-# undef BOOST_LIB_NAME
-#endif
-// Don't undef this one: it can be set by the user and should be the
-// same for all libraries:
-//#if defined(BOOST_LIB_TOOLSET)
-//# undef BOOST_LIB_TOOLSET
-//#endif
-#if defined(BOOST_LIB_THREAD_OPT)
-# undef BOOST_LIB_THREAD_OPT
-#endif
-#if defined(BOOST_LIB_RT_OPT)
-# undef BOOST_LIB_RT_OPT
-#endif
-#if defined(BOOST_LIB_LINK_OPT)
-# undef BOOST_LIB_LINK_OPT
-#endif
-#if defined(BOOST_LIB_DEBUG_OPT)
-# undef BOOST_LIB_DEBUG_OPT
-#endif
-#if defined(BOOST_DYN_LINK)
-# undef BOOST_DYN_LINK
-#endif
-
diff --git a/libcutl/cutl/details/boost/config/compiler/clang.hpp b/libcutl/cutl/details/boost/config/compiler/clang.hpp
deleted file mode 100644
index 8e38821..0000000
--- a/libcutl/cutl/details/boost/config/compiler/clang.hpp
+++ /dev/null
@@ -1,158 +0,0 @@
-// (C) Copyright Douglas Gregor 2010
-//
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Clang compiler setup.
-
-#if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
-# define BOOST_NO_EXCEPTIONS
-#endif
-
-#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_RTTI)
-# define BOOST_NO_RTTI
-#endif
-
-#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_TYPEID)
-# define BOOST_NO_TYPEID
-#endif
-
-#if defined(__int64) && !defined(__GNUC__)
-# define BOOST_HAS_MS_INT64
-#endif
-
-#define BOOST_HAS_NRVO
-
-// Clang supports "long long" in all compilation modes.
-#define BOOST_HAS_LONG_LONG
-
-//
-// Dynamic shared object (DSO) and dynamic-link library (DLL) support
-//
-#if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
-# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
-# define BOOST_SYMBOL_IMPORT
-# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
-#endif
-
-//
-// The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
-// between switch labels.
-//
-#if __cplusplus >= 201103L && defined(__has_warning)
-# if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
-# define BOOST_FALLTHROUGH [[clang::fallthrough]]
-# endif
-#endif
-
-#if !__has_feature(cxx_auto_type)
-# define BOOST_NO_CXX11_AUTO_DECLARATIONS
-# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#endif
-
-#if !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
-# define BOOST_NO_CXX11_CHAR16_T
-# define BOOST_NO_CXX11_CHAR32_T
-#endif
-
-#if !__has_feature(cxx_constexpr)
-# define BOOST_NO_CXX11_CONSTEXPR
-#endif
-
-#if !__has_feature(cxx_decltype)
-# define BOOST_NO_CXX11_DECLTYPE
-#endif
-
-#if !__has_feature(cxx_decltype_incomplete_return_types)
-# define BOOST_NO_CXX11_DECLTYPE_N3276
-#endif
-
-#if !__has_feature(cxx_defaulted_functions)
-# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#endif
-
-#if !__has_feature(cxx_deleted_functions)
-# define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#endif
-
-#if !__has_feature(cxx_explicit_conversions)
-# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#endif
-
-#if !__has_feature(cxx_default_function_template_args)
-# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#endif
-
-#if !__has_feature(cxx_generalized_initializers)
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-#endif
-
-#if !__has_feature(cxx_lambdas)
-# define BOOST_NO_CXX11_LAMBDAS
-#endif
-
-#if !__has_feature(cxx_local_type_template_args)
-# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#endif
-
-#if !__has_feature(cxx_noexcept)
-# define BOOST_NO_CXX11_NOEXCEPT
-#endif
-
-#if !__has_feature(cxx_nullptr)
-# define BOOST_NO_CXX11_NULLPTR
-#endif
-
-#if !__has_feature(cxx_range_for)
-# define BOOST_NO_CXX11_RANGE_BASED_FOR
-#endif
-
-#if !__has_feature(cxx_raw_string_literals)
-# define BOOST_NO_CXX11_RAW_LITERALS
-#endif
-
-#if !__has_feature(cxx_generalized_initializers)
-# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#endif
-
-#if !__has_feature(cxx_rvalue_references)
-# define BOOST_NO_CXX11_RVALUE_REFERENCES
-#endif
-
-#if !__has_feature(cxx_strong_enums)
-# define BOOST_NO_CXX11_SCOPED_ENUMS
-#endif
-
-#if !__has_feature(cxx_static_assert)
-# define BOOST_NO_CXX11_STATIC_ASSERT
-#endif
-
-#if !__has_feature(cxx_alias_templates)
-# define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#endif
-
-#if !__has_feature(cxx_unicode_literals)
-# define BOOST_NO_CXX11_UNICODE_LITERALS
-#endif
-
-#if !__has_feature(cxx_variadic_templates)
-# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#endif
-
-#if !__has_feature(cxx_user_literals)
-# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-#endif
-
-// Clang always supports variadic macros
-// Clang always supports extern templates
-
-#ifndef BOOST_COMPILER
-# define BOOST_COMPILER "Clang version " __clang_version__
-#endif
-
-// Macro used to identify the Clang compiler.
-#define BOOST_CLANG 1
-
diff --git a/libcutl/cutl/details/boost/config/compiler/codegear.hpp b/libcutl/cutl/details/boost/config/compiler/codegear.hpp
deleted file mode 100644
index 41a35c6..0000000
--- a/libcutl/cutl/details/boost/config/compiler/codegear.hpp
+++ /dev/null
@@ -1,180 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// CodeGear C++ compiler setup:
-
-#if !defined( BOOST_WITH_CODEGEAR_WARNINGS )
-// these warnings occur frequently in optimized template code
-# pragma warn -8004 // var assigned value, but never used
-# pragma warn -8008 // condition always true/false
-# pragma warn -8066 // dead code can never execute
-# pragma warn -8104 // static members with ctors not threadsafe
-# pragma warn -8105 // reference member in class without ctors
-#endif
-//
-// versions check:
-// last known and checked version is 0x621
-#if (__CODEGEARC__ > 0x621)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# else
-# pragma message( "Unknown compiler version - please run the configure tests and report the results")
-# endif
-#endif
-
-// CodeGear C++ Builder 2009
-#if (__CODEGEARC__ <= 0x613)
-# define BOOST_NO_INTEGRAL_INT64_T
-# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
-# define BOOST_NO_PRIVATE_IN_AGGREGATE
-# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
- // we shouldn't really need this - but too many things choke
- // without it, this needs more investigation:
-# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
-# define BOOST_SP_NO_SP_CONVERTIBLE
-#endif
-
-// CodeGear C++ Builder 2010
-#if (__CODEGEARC__ <= 0x621)
-# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
-# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
-# define BOOST_NO_USING_TEMPLATE
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-// Temporary hack, until specific MPL preprocessed headers are generated
-# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-
-// CodeGear has not yet completely implemented value-initialization, for
-// example for array types, as I reported in 2010: Embarcadero Report 83751,
-// "Value-initialization: arrays should have each element value-initialized",
-// http://qc.embarcadero.com/wc/qcmain.aspx?d=83751
-// Last checked version: Embarcadero C++ 6.21
-// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
-// (Niels Dekker, LKEB, April 2010)
-# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-
-# if defined(NDEBUG) && defined(__cplusplus)
- // fix broken <cstring> so that Boost.test works:
-# include <cstring>
-# undef strcmp
-# endif
- // fix broken errno declaration:
-# include <errno.h>
-# ifndef errno
-# define errno errno
-# endif
-
-#endif
-//
-// C++0x macros:
-//
-#if (__CODEGEARC__ <= 0x620)
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#else
-#define BOOST_HAS_STATIC_ASSERT
-#endif
-#define BOOST_HAS_CHAR16_T
-#define BOOST_HAS_CHAR32_T
-#define BOOST_HAS_LONG_LONG
-// #define BOOST_HAS_ALIGNOF
-#define BOOST_HAS_DECLTYPE
-#define BOOST_HAS_EXPLICIT_CONVERSION_OPS
-// #define BOOST_HAS_RVALUE_REFS
-#define BOOST_HAS_SCOPED_ENUM
-// #define BOOST_HAS_STATIC_ASSERT
-#define BOOST_HAS_STD_TYPE_TRAITS
-
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_CXX11_LAMBDAS
-#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_RVALUE_REFERENCES
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-
-//
-// TR1 macros:
-//
-#define BOOST_HAS_TR1_HASH
-#define BOOST_HAS_TR1_TYPE_TRAITS
-#define BOOST_HAS_TR1_UNORDERED_MAP
-#define BOOST_HAS_TR1_UNORDERED_SET
-
-#define BOOST_HAS_MACRO_USE_FACET
-
-#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-
-// On non-Win32 platforms let the platform config figure this out:
-#ifdef _WIN32
-# define BOOST_HAS_STDINT_H
-#endif
-
-//
-// __int64:
-//
-#if !defined(__STRICT_ANSI__)
-# define BOOST_HAS_MS_INT64
-#endif
-//
-// check for exception handling support:
-//
-#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
-# define BOOST_NO_EXCEPTIONS
-#endif
-//
-// all versions have a <dirent.h>:
-//
-#if !defined(__STRICT_ANSI__)
-# define BOOST_HAS_DIRENT_H
-#endif
-//
-// all versions support __declspec:
-//
-#if defined(__STRICT_ANSI__)
-// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
-# define BOOST_SYMBOL_EXPORT
-#endif
-//
-// ABI fixing headers:
-//
-#ifndef BOOST_ABI_PREFIX
-# define BOOST_ABI_PREFIX "cutl/details/boost/config/abi/borland_prefix.hpp"
-#endif
-#ifndef BOOST_ABI_SUFFIX
-# define BOOST_ABI_SUFFIX "cutl/details/boost/config/abi/borland_suffix.hpp"
-#endif
-//
-// Disable Win32 support in ANSI mode:
-//
-# pragma defineonoption BOOST_DISABLE_WIN32 -A
-//
-// MSVC compatibility mode does some nasty things:
-// TODO: look up if this doesn't apply to the whole 12xx range
-//
-#if defined(_MSC_VER) && (_MSC_VER <= 1200)
-# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
-# define BOOST_NO_VOID_RETURNS
-#endif
-
-#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__)
-
diff --git a/libcutl/cutl/details/boost/config/compiler/comeau.hpp b/libcutl/cutl/details/boost/config/compiler/comeau.hpp
deleted file mode 100644
index 7357823..0000000
--- a/libcutl/cutl/details/boost/config/compiler/comeau.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-// (C) Copyright John Maddock 2001.
-// (C) Copyright Douglas Gregor 2001.
-// (C) Copyright Peter Dimov 2001.
-// (C) Copyright Aleksey Gurtovoy 2003.
-// (C) Copyright Beman Dawes 2003.
-// (C) Copyright Jens Maurer 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Comeau C++ compiler setup:
-
-#include "cutl/details/boost/config/compiler/common_edg.hpp"
-
-#if (__COMO_VERSION__ <= 4245)
-
-# if defined(_MSC_VER) && _MSC_VER <= 1300
-# if _MSC_VER > 100
- // only set this in non-strict mode:
-# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
-# endif
-# endif
-
-// Void returns don't work when emulating VC 6 (Peter Dimov)
-// TODO: look up if this doesn't apply to the whole 12xx range
-# if defined(_MSC_VER) && (_MSC_VER < 1300)
-# define BOOST_NO_VOID_RETURNS
-# endif
-
-#endif // version 4245
-
-//
-// enable __int64 support in VC emulation mode
-//
-# if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# define BOOST_HAS_MS_INT64
-# endif
-
-#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__)
-
-//
-// versions check:
-// we don't know Comeau prior to version 4245:
-#if __COMO_VERSION__ < 4245
-# error "Compiler not configured - please reconfigure"
-#endif
-//
-// last known and checked version is 4245:
-#if (__COMO_VERSION__ > 4245)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# endif
-#endif
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/compiler/common_edg.hpp b/libcutl/cutl/details/boost/config/compiler/common_edg.hpp
deleted file mode 100644
index 4b5d2d2..0000000
--- a/libcutl/cutl/details/boost/config/compiler/common_edg.hpp
+++ /dev/null
@@ -1,104 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2002.
-// (C) Copyright Jens Maurer 2001.
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// (C) Copyright Markus Schoepflin 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-//
-// Options common to all edg based compilers.
-//
-// This is included from within the individual compiler mini-configs.
-
-#ifndef __EDG_VERSION__
-# error This file requires that __EDG_VERSION__ be defined.
-#endif
-
-#if (__EDG_VERSION__ <= 238)
-# define BOOST_NO_INTEGRAL_INT64_T
-# define BOOST_NO_SFINAE
-#endif
-
-#if (__EDG_VERSION__ <= 240)
-# define BOOST_NO_VOID_RETURNS
-#endif
-
-#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
-# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
-#endif
-
-#if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES)
-# define BOOST_NO_TEMPLATE_TEMPLATES
-#endif
-
-#if (__EDG_VERSION__ < 300) && !defined(BOOST_NO_IS_ABSTRACT)
-# define BOOST_NO_IS_ABSTRACT
-#endif
-
-#if (__EDG_VERSION__ <= 303) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
-# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-#endif
-
-// See also kai.hpp which checks a Kai-specific symbol for EH
-# if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
-# define BOOST_NO_EXCEPTIONS
-# endif
-
-# if !defined(__NO_LONG_LONG)
-# define BOOST_HAS_LONG_LONG
-# else
-# define BOOST_NO_LONG_LONG
-# endif
-
-//
-// C++0x features
-//
-// See above for BOOST_NO_LONG_LONG
-//
-#if (__EDG_VERSION__ < 310)
-# define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#endif
-#if (__EDG_VERSION__ <= 310)
-// No support for initializer lists
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-#endif
-#if (__EDG_VERSION__ < 400)
-# define BOOST_NO_CXX11_VARIADIC_MACROS
-#endif
-
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_CHAR16_T
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_CXX11_LAMBDAS
-#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_RVALUE_REFERENCES
-#define BOOST_NO_CXX11_SCOPED_ENUMS
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-
-#ifdef c_plusplus
-// EDG has "long long" in non-strict mode
-// However, some libraries have insufficient "long long" support
-// #define BOOST_HAS_LONG_LONG
-#endif
diff --git a/libcutl/cutl/details/boost/config/compiler/compaq_cxx.hpp b/libcutl/cutl/details/boost/config/compiler/compaq_cxx.hpp
deleted file mode 100644
index e4233d5..0000000
--- a/libcutl/cutl/details/boost/config/compiler/compaq_cxx.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Tru64 C++ compiler setup (now HP):
-
-#define BOOST_COMPILER "HP Tru64 C++ " BOOST_STRINGIZE(__DECCXX_VER)
-
-#include "cutl/details/boost/config/compiler/common_edg.hpp"
-
-//
-// versions check:
-// Nothing to do here?
-
-
-
diff --git a/libcutl/cutl/details/boost/config/compiler/cray.hpp b/libcutl/cutl/details/boost/config/compiler/cray.hpp
deleted file mode 100644
index 3a2c64a..0000000
--- a/libcutl/cutl/details/boost/config/compiler/cray.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-// (C) Copyright John Maddock 2011.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Greenhills C compiler setup:
-
-#define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE)
-
-#if _RELEASE < 7
-# error "Boost is not configured for Cray compilers prior to version 7, please try the configure script."
-#endif
-
-//
-// Check this is a recent EDG based compiler, otherwise we don't support it here:
-//
-#ifndef __EDG_VERSION__
-# error "Unsupported Cray compiler, please try running the configure script."
-#endif
-
-#include "cutl/details/boost/config/compiler/common_edg.hpp"
-
-//
-// Cray peculiarities, probably version 7 specific:
-//
-#undef BOOST_NO_CXX11_AUTO_DECLARATIONS
-#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_HAS_NRVO
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#define BOOST_HAS_NRVO
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_SCOPED_ENUMS
-#define BOOST_NO_CXX11_RVALUE_REFERENCES
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_LAMBDAS
-#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DECLTYPE
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CHAR16_T
-//#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
-#define BOOST_MATH_DISABLE_STD_FPCLASSIFY
-//#define BOOST_HAS_FPCLASSIFY
-
-#define BOOST_SP_USE_PTHREADS
-#define BOOST_AC_USE_PTHREADS
-
diff --git a/libcutl/cutl/details/boost/config/compiler/digitalmars.hpp b/libcutl/cutl/details/boost/config/compiler/digitalmars.hpp
deleted file mode 100644
index 0206dc3..0000000
--- a/libcutl/cutl/details/boost/config/compiler/digitalmars.hpp
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright (C) Christof Meerwald 2003
-// Copyright (C) Dan Watkins 2003
-//
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// Digital Mars C++ compiler setup:
-#define BOOST_COMPILER __DMC_VERSION_STRING__
-
-#define BOOST_HAS_LONG_LONG
-#define BOOST_HAS_PRAGMA_ONCE
-
-#if (__DMC__ <= 0x833)
-#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-#define BOOST_NO_TEMPLATE_TEMPLATES
-#define BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING
-#define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
-#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-#endif
-#if (__DMC__ <= 0x840) || !defined(BOOST_STRICT_CONFIG)
-#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-#define BOOST_NO_OPERATORS_IN_NAMESPACE
-#define BOOST_NO_UNREACHABLE_RETURN_DETECTION
-#define BOOST_NO_SFINAE
-#define BOOST_NO_USING_TEMPLATE
-#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-#endif
-
-//
-// has macros:
-#if (__DMC__ >= 0x840)
-#define BOOST_HAS_DIRENT_H
-#define BOOST_HAS_STDINT_H
-#define BOOST_HAS_WINTHREADS
-#endif
-
-#if (__DMC__ >= 0x847)
-#define BOOST_HAS_EXPM1
-#define BOOST_HAS_LOG1P
-#endif
-
-//
-// Is this really the best way to detect whether the std lib is in namespace std?
-//
-#ifdef __cplusplus
-#include <cstddef>
-#endif
-#if !defined(__STL_IMPORT_VENDOR_CSTD) && !defined(_STLP_IMPORT_VENDOR_CSTD)
-# define BOOST_NO_STDC_NAMESPACE
-#endif
-
-
-// check for exception handling support:
-#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
-# define BOOST_NO_EXCEPTIONS
-#endif
-
-//
-// C++0x features
-//
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_CHAR16_T
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-#define BOOST_NO_CXX11_LAMBDAS
-#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_RVALUE_REFERENCES
-#define BOOST_NO_CXX11_SCOPED_ENUMS
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-
-#if (__DMC__ < 0x812)
-#define BOOST_NO_CXX11_VARIADIC_MACROS
-#endif
-
-#if __DMC__ < 0x800
-#error "Compiler not supported or configured - please reconfigure"
-#endif
-//
-// last known and checked version is ...:
-#if (__DMC__ > 0x848)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# endif
-#endif
diff --git a/libcutl/cutl/details/boost/config/compiler/gcc.hpp b/libcutl/cutl/details/boost/config/compiler/gcc.hpp
deleted file mode 100644
index b3d12ec..0000000
--- a/libcutl/cutl/details/boost/config/compiler/gcc.hpp
+++ /dev/null
@@ -1,280 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Darin Adler 2001 - 2002.
-// (C) Copyright Jens Maurer 2001 - 2002.
-// (C) Copyright Beman Dawes 2001 - 2003.
-// (C) Copyright Douglas Gregor 2002.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Synge Todo 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// GNU C++ compiler setup.
-
-//
-// Define BOOST_GCC so we know this is "real" GCC and not some pretender:
-//
-#if !defined(__CUDACC__)
-#define BOOST_GCC (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
-#endif
-
-#if __GNUC__ < 3
-# if __GNUC_MINOR__ == 91
- // egcs 1.1 won't parse shared_ptr.hpp without this:
-# define BOOST_NO_AUTO_PTR
-# endif
-# if __GNUC_MINOR__ < 95
- //
- // Prior to gcc 2.95 member templates only partly
- // work - define BOOST_MSVC6_MEMBER_TEMPLATES
- // instead since inline member templates mostly work.
- //
-# define BOOST_NO_MEMBER_TEMPLATES
-# if __GNUC_MINOR__ >= 9
-# define BOOST_MSVC6_MEMBER_TEMPLATES
-# endif
-# endif
-
-# if __GNUC_MINOR__ < 96
-# define BOOST_NO_SFINAE
-# endif
-
-# if __GNUC_MINOR__ <= 97
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-# define BOOST_NO_OPERATORS_IN_NAMESPACE
-# endif
-
-# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
-# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-# define BOOST_NO_IS_ABSTRACT
-# define BOOST_NO_CXX11_EXTERN_TEMPLATE
-// Variadic macros do not exist for gcc versions before 3.0
-# define BOOST_NO_CXX11_VARIADIC_MACROS
-#elif __GNUC__ == 3
-# if defined (__PATHSCALE__)
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-# define BOOST_NO_IS_ABSTRACT
-# endif
- //
- // gcc-3.x problems:
- //
- // Bug specific to gcc 3.1 and 3.2:
- //
-# if ((__GNUC_MINOR__ == 1) || (__GNUC_MINOR__ == 2))
-# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-# endif
-# if __GNUC_MINOR__ < 4
-# define BOOST_NO_IS_ABSTRACT
-# endif
-# define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#endif
-#if __GNUC__ < 4
-//
-// All problems to gcc-3.x and earlier here:
-//
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-# ifdef __OPEN64__
-# define BOOST_NO_IS_ABSTRACT
-# endif
-#endif
-
-#if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 )
-// Previous versions of GCC did not completely implement value-initialization:
-// GCC Bug 30111, "Value-initialization of POD base class doesn't initialize
-// members", reported by Jonathan Wakely in 2006,
-// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 (fixed for GCC 4.4)
-// GCC Bug 33916, "Default constructor fails to initialize array members",
-// reported by Michael Elizabeth Chastain in 2007,
-// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 (fixed for GCC 4.2.4)
-// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
-#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-#endif
-
-#if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
-# define BOOST_NO_EXCEPTIONS
-#endif
-
-
-//
-// Threading support: Turn this on unconditionally here (except for
-// those platforms where we can know for sure). It will get turned off again
-// later if no threading API is detected.
-//
-#if !defined(__MINGW32__) && !defined(linux) && !defined(__linux) && !defined(__linux__)
-# define BOOST_HAS_THREADS
-#endif
-
-//
-// gcc has "long long"
-//
-#define BOOST_HAS_LONG_LONG
-
-//
-// gcc implements the named return value optimization since version 3.1
-//
-#if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 )
-#define BOOST_HAS_NRVO
-#endif
-
-//
-// Dynamic shared object (DSO) and dynamic-link library (DLL) support
-//
-#if __GNUC__ >= 4
-# if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && !defined(__CYGWIN__)
- // All Win32 development environments, including 64-bit Windows and MinGW, define
- // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment,
- // so does not define _WIN32 or its variants.
-# define BOOST_HAS_DECLSPEC
-# define BOOST_SYMBOL_EXPORT __attribute__((dllexport))
-# define BOOST_SYMBOL_IMPORT __attribute__((dllimport))
-# else
-# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
-# define BOOST_SYMBOL_IMPORT
-# endif
-# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
-#else
-// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
-# define BOOST_SYMBOL_EXPORT
-#endif
-
-//
-// RTTI and typeinfo detection is possible post gcc-4.3:
-//
-#if __GNUC__ * 100 + __GNUC_MINOR__ >= 403
-# ifndef __GXX_RTTI
-# ifndef BOOST_NO_TYPEID
-# define BOOST_NO_TYPEID
-# endif
-# ifndef BOOST_NO_RTTI
-# define BOOST_NO_RTTI
-# endif
-# endif
-#endif
-
-//
-// Recent GCC versions have __int128 when in 64-bit mode.
-//
-// We disable this if the compiler is really nvcc as it
-// doesn't actually support __int128 as of CUDA_VERSION=5000
-// even though it defines __SIZEOF_INT128__.
-// See https://svn.boost.org/trac/boost/ticket/8048
-// Only re-enable this for nvcc if you're absolutely sure
-// of the circumstances under which it's supported:
-//
-#if defined(__SIZEOF_INT128__) && !defined(__CUDACC__)
-# define BOOST_HAS_INT128
-#endif
-
-// C++0x features in 4.3.n and later
-//
-#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__)
-// C++0x features are only enabled when -std=c++0x or -std=gnu++0x are
-// passed on the command line, which in turn defines
-// __GXX_EXPERIMENTAL_CXX0X__.
-# define BOOST_HAS_DECLTYPE
-# define BOOST_HAS_RVALUE_REFS
-# define BOOST_HAS_STATIC_ASSERT
-# define BOOST_HAS_VARIADIC_TMPL
-#else
-# define BOOST_NO_CXX11_DECLTYPE
-# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-# define BOOST_NO_CXX11_RVALUE_REFERENCES
-# define BOOST_NO_CXX11_STATIC_ASSERT
-
-// Variadic templates compiler:
-// http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html
-# if defined(__VARIADIC_TEMPLATES) || (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4) && defined(__GXX_EXPERIMENTAL_CXX0X__))
-# define BOOST_HAS_VARIADIC_TMPL
-# else
-# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-# endif
-#endif
-
-// C++0x features in 4.4.n and later
-//
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_CXX11_AUTO_DECLARATIONS
-# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-# define BOOST_NO_CXX11_CHAR16_T
-# define BOOST_NO_CXX11_CHAR32_T
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-# define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#endif
-
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
-# define BOOST_NO_SFINAE_EXPR
-#endif
-
-// C++0x features in 4.5.0 and later
-//
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-# define BOOST_NO_CXX11_LAMBDAS
-# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-# define BOOST_NO_CXX11_RAW_LITERALS
-# define BOOST_NO_CXX11_UNICODE_LITERALS
-#endif
-
-// C++0x features in 4.5.1 and later
-//
-#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40501) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_CXX11_SCOPED_ENUMS before 4.5.1
-// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064
-# define BOOST_NO_CXX11_SCOPED_ENUMS
-#endif
-
-// C++0x features in 4.6.n and later
-//
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#endif
-
-// C++0x features in 4.7.n and later
-//
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_CXX11_TEMPLATE_ALIASES
-# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-#endif
-
-// C++0x features in 4.8.1 and later
-//
-#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40801) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_CXX11_DECLTYPE_N3276
-#endif
-
-#ifndef BOOST_COMPILER
-# define BOOST_COMPILER "GNU C++ version " __VERSION__
-#endif
-
-// ConceptGCC compiler:
-// http://www.generic-programming.org/software/ConceptGCC/
-#ifdef __GXX_CONCEPTS__
-# define BOOST_HAS_CONCEPTS
-# define BOOST_COMPILER "ConceptGCC version " __VERSION__
-#endif
-
-// versions check:
-// we don't know gcc prior to version 2.90:
-#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90)
-# error "Compiler not configured - please reconfigure"
-#endif
-//
-// last known and checked version is 4.6 (Pre-release):
-#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6))
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# else
-// we don't emit warnings here anymore since there are no defect macros defined for
-// gcc post 3.4, so any failures are gcc regressions...
-//# warning "Unknown compiler version - please run the configure tests and report the results"
-# endif
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/config/compiler/gcc_xml.hpp b/libcutl/cutl/details/boost/config/compiler/gcc_xml.hpp
deleted file mode 100644
index 1af2fc1..0000000
--- a/libcutl/cutl/details/boost/config/compiler/gcc_xml.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-// (C) Copyright John Maddock 2006.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// GCC-XML C++ compiler setup:
-
-# if !defined(__GCCXML_GNUC__) || ((__GCCXML_GNUC__ <= 3) && (__GCCXML_GNUC_MINOR__ <= 3))
-# define BOOST_NO_IS_ABSTRACT
-# endif
-
-//
-// Threading support: Turn this on unconditionally here (except for
-// those platforms where we can know for sure). It will get turned off again
-// later if no threading API is detected.
-//
-#if !defined(__MINGW32__) && !defined(_MSC_VER) && !defined(linux) && !defined(__linux) && !defined(__linux__)
-# define BOOST_HAS_THREADS
-#endif
-
-//
-// gcc has "long long"
-//
-#define BOOST_HAS_LONG_LONG
-
-// C++0x features:
-//
-# define BOOST_NO_CXX11_CONSTEXPR
-# define BOOST_NO_CXX11_NULLPTR
-# define BOOST_NO_CXX11_TEMPLATE_ALIASES
-# define BOOST_NO_CXX11_DECLTYPE
-# define BOOST_NO_CXX11_DECLTYPE_N3276
-# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-# define BOOST_NO_CXX11_RVALUE_REFERENCES
-# define BOOST_NO_CXX11_STATIC_ASSERT
-# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-# define BOOST_NO_CXX11_VARIADIC_MACROS
-# define BOOST_NO_CXX11_AUTO_DECLARATIONS
-# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-# define BOOST_NO_CXX11_CHAR16_T
-# define BOOST_NO_CXX11_CHAR32_T
-# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-# define BOOST_NO_CXX11_DELETED_FUNCTIONS
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_SCOPED_ENUMS
-# define BOOST_NO_SFINAE_EXPR
-# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-# define BOOST_NO_CXX11_LAMBDAS
-# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-# define BOOST_NO_CXX11_RANGE_BASED_FOR
-# define BOOST_NO_CXX11_RAW_LITERALS
-# define BOOST_NO_CXX11_UNICODE_LITERALS
-# define BOOST_NO_CXX11_NOEXCEPT
-# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-
-#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
-
-
diff --git a/libcutl/cutl/details/boost/config/compiler/greenhills.hpp b/libcutl/cutl/details/boost/config/compiler/greenhills.hpp
deleted file mode 100644
index 96165e2..0000000
--- a/libcutl/cutl/details/boost/config/compiler/greenhills.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// (C) Copyright John Maddock 2001.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Greenhills C++ compiler setup:
-
-#define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs)
-
-#include "cutl/details/boost/config/compiler/common_edg.hpp"
-
-//
-// versions check:
-// we don't support Greenhills prior to version 0:
-#if __ghs < 0
-# error "Compiler not supported or configured - please reconfigure"
-#endif
-//
-// last known and checked version is 0:
-#if (__ghs > 0)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# endif
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/config/compiler/hp_acc.hpp b/libcutl/cutl/details/boost/config/compiler/hp_acc.hpp
deleted file mode 100644
index e88ae3c..0000000
--- a/libcutl/cutl/details/boost/config/compiler/hp_acc.hpp
+++ /dev/null
@@ -1,141 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Toon Knapen 2003.
-// (C) Copyright Boris Gubenko 2006 - 2007.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// HP aCC C++ compiler setup:
-
-#if defined(__EDG__)
-#include "cutl/details/boost/config/compiler/common_edg.hpp"
-#endif
-
-#if (__HP_aCC <= 33100)
-# define BOOST_NO_INTEGRAL_INT64_T
-# define BOOST_NO_OPERATORS_IN_NAMESPACE
-# if !defined(_NAMESPACE_STD)
-# define BOOST_NO_STD_LOCALE
-# define BOOST_NO_STRINGSTREAM
-# endif
-#endif
-
-#if (__HP_aCC <= 33300)
-// member templates are sufficiently broken that we disable them for now
-# define BOOST_NO_MEMBER_TEMPLATES
-# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
-# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
-#endif
-
-#if (__HP_aCC <= 38000)
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#endif
-
-#if (__HP_aCC > 50000) && (__HP_aCC < 60000)
-# define BOOST_NO_UNREACHABLE_RETURN_DETECTION
-# define BOOST_NO_TEMPLATE_TEMPLATES
-# define BOOST_NO_SWPRINTF
-# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
-# define BOOST_NO_IS_ABSTRACT
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-#endif
-
-// optional features rather than defects:
-#if (__HP_aCC >= 33900)
-# define BOOST_HAS_LONG_LONG
-# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
-#endif
-
-#if (__HP_aCC >= 50000 ) && (__HP_aCC <= 53800 ) || (__HP_aCC < 31300 )
-# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
-#endif
-
-// This macro should not be defined when compiling in strict ansi
-// mode, but, currently, we don't have the ability to determine
-// what standard mode we are compiling with. Some future version
-// of aCC6 compiler will provide predefined macros reflecting the
-// compilation options, including the standard mode.
-#if (__HP_aCC >= 60000) || ((__HP_aCC > 38000) && defined(__hpxstd98))
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#endif
-
-#define BOOST_COMPILER "HP aCC version " BOOST_STRINGIZE(__HP_aCC)
-
-//
-// versions check:
-// we don't support HP aCC prior to version 33000:
-#if __HP_aCC < 33000
-# error "Compiler not supported or configured - please reconfigure"
-#endif
-
-//
-// Extended checks for supporting aCC on PA-RISC
-#if __HP_aCC > 30000 && __HP_aCC < 50000
-# if __HP_aCC < 38000
- // versions prior to version A.03.80 not supported
-# error "Compiler version not supported - version A.03.80 or higher is required"
-# elif !defined(__hpxstd98)
- // must compile using the option +hpxstd98 with version A.03.80 and above
-# error "Compiler option '+hpxstd98' is required for proper support"
-# endif //PA-RISC
-#endif
-
-//
-// C++0x features
-//
-// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
-//
-#if !defined(__EDG__)
-
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_CHAR16_T
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-#define BOOST_NO_CXX11_LAMBDAS
-#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_RVALUE_REFERENCES
-#define BOOST_NO_CXX11_SCOPED_ENUMS
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-
-/*
- See https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443331 and
- https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443436
-*/
-
-#if (__HP_aCC < 62500) || !defined(HP_CXX0x_SOURCE)
- #define BOOST_NO_CXX11_VARIADIC_MACROS
-#endif
-
-#endif
-
-//
-// last known and checked version for HP-UX/ia64 is 61300
-// last known and checked version for PA-RISC is 38000
-#if ((__HP_aCC > 61300) || ((__HP_aCC > 38000) && defined(__hpxstd98)))
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# endif
-#endif
diff --git a/libcutl/cutl/details/boost/config/compiler/intel.hpp b/libcutl/cutl/details/boost/config/compiler/intel.hpp
deleted file mode 100644
index 55c7b32..0000000
--- a/libcutl/cutl/details/boost/config/compiler/intel.hpp
+++ /dev/null
@@ -1,272 +0,0 @@
-// (C) Copyright John Maddock 2001-8.
-// (C) Copyright Peter Dimov 2001.
-// (C) Copyright Jens Maurer 2001.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
-// (C) Copyright Guillaume Melquiond 2002 - 2003.
-// (C) Copyright Beman Dawes 2003.
-// (C) Copyright Martin Wille 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Intel compiler setup:
-
-#include "cutl/details/boost/config/compiler/common_edg.hpp"
-
-#if defined(__INTEL_COMPILER)
-# define BOOST_INTEL_CXX_VERSION __INTEL_COMPILER
-#elif defined(__ICL)
-# define BOOST_INTEL_CXX_VERSION __ICL
-#elif defined(__ICC)
-# define BOOST_INTEL_CXX_VERSION __ICC
-#elif defined(__ECC)
-# define BOOST_INTEL_CXX_VERSION __ECC
-#endif
-
-// Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x'
-#if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && (__STDC_HOSTED__ && (BOOST_INTEL_CXX_VERSION <= 1200))) || defined(__GXX_EXPERIMENTAL_CPP0X__)
-# define BOOST_INTEL_STDCXX0X
-#endif
-#if defined(_MSC_VER) && (_MSC_VER >= 1600)
-# define BOOST_INTEL_STDCXX0X
-#endif
-
-#ifdef BOOST_INTEL_STDCXX0X
-#define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
-#else
-#define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
-#endif
-#define BOOST_INTEL BOOST_INTEL_CXX_VERSION
-
-#if defined(_WIN32) || defined(_WIN64)
-# define BOOST_INTEL_WIN BOOST_INTEL
-#else
-# define BOOST_INTEL_LINUX BOOST_INTEL
-#endif
-
-#if (BOOST_INTEL_CXX_VERSION <= 500) && defined(_MSC_VER)
-# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-# define BOOST_NO_TEMPLATE_TEMPLATES
-#endif
-
-#if (BOOST_INTEL_CXX_VERSION <= 600)
-
-# if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov)
-
-// Boost libraries assume strong standard conformance unless otherwise
-// indicated by a config macro. As configured by Intel, the EDG front-end
-// requires certain compiler options be set to achieve that strong conformance.
-// Particularly /Qoption,c,--arg_dep_lookup (reported by Kirk Klobe & Thomas Witt)
-// and /Zc:wchar_t,forScope. See boost-root/tools/build/intel-win32-tools.jam for
-// details as they apply to particular versions of the compiler. When the
-// compiler does not predefine a macro indicating if an option has been set,
-// this config file simply assumes the option has been set.
-// Thus BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP will not be defined, even if
-// the compiler option is not enabled.
-
-# define BOOST_NO_SWPRINTF
-# endif
-
-// Void returns, 64 bit integrals don't work when emulating VC 6 (Peter Dimov)
-
-# if defined(_MSC_VER) && (_MSC_VER <= 1200)
-# define BOOST_NO_VOID_RETURNS
-# define BOOST_NO_INTEGRAL_INT64_T
-# endif
-
-#endif
-
-#if (BOOST_INTEL_CXX_VERSION <= 710) && defined(_WIN32)
-# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
-#endif
-
-// See http://aspn.activestate.com/ASPN/Mail/Message/boost/1614864
-#if BOOST_INTEL_CXX_VERSION < 600
-# define BOOST_NO_INTRINSIC_WCHAR_T
-#else
-// We should test the macro _WCHAR_T_DEFINED to check if the compiler
-// supports wchar_t natively. *BUT* there is a problem here: the standard
-// headers define this macro if they typedef wchar_t. Anyway, we're lucky
-// because they define it without a value, while Intel C++ defines it
-// to 1. So we can check its value to see if the macro was defined natively
-// or not.
-// Under UNIX, the situation is exactly the same, but the macro _WCHAR_T
-// is used instead.
-# if ((_WCHAR_T_DEFINED + 0) == 0) && ((_WCHAR_T + 0) == 0)
-# define BOOST_NO_INTRINSIC_WCHAR_T
-# endif
-#endif
-
-#if defined(__GNUC__) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
-//
-// Figure out when Intel is emulating this gcc bug
-// (All Intel versions prior to 9.0.26, and versions
-// later than that if they are set up to emulate gcc 3.2
-// or earlier):
-//
-# if ((__GNUC__ == 3) && (__GNUC_MINOR__ <= 2)) || (BOOST_INTEL < 900) || (__INTEL_COMPILER_BUILD_DATE < 20050912)
-# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-# endif
-#endif
-#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1200)
-// GCC or VC emulation:
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#endif
-//
-// Verify that we have actually got BOOST_NO_INTRINSIC_WCHAR_T
-// set correctly, if we don't do this now, we will get errors later
-// in type_traits code among other things, getting this correct
-// for the Intel compiler is actually remarkably fragile and tricky:
-//
-#ifdef __cplusplus
-#if defined(BOOST_NO_INTRINSIC_WCHAR_T)
-#include <cwchar>
-template< typename T > struct assert_no_intrinsic_wchar_t;
-template<> struct assert_no_intrinsic_wchar_t<wchar_t> { typedef void type; };
-// if you see an error here then you need to unset BOOST_NO_INTRINSIC_WCHAR_T
-// where it is defined above:
-typedef assert_no_intrinsic_wchar_t<unsigned short>::type assert_no_intrinsic_wchar_t_;
-#else
-template< typename T > struct assert_intrinsic_wchar_t;
-template<> struct assert_intrinsic_wchar_t<wchar_t> {};
-// if you see an error here then define BOOST_NO_INTRINSIC_WCHAR_T on the command line:
-template<> struct assert_intrinsic_wchar_t<unsigned short> {};
-#endif
-#endif
-
-#if defined(_MSC_VER) && (_MSC_VER+0 >= 1000)
-# if _MSC_VER >= 1200
-# define BOOST_HAS_MS_INT64
-# endif
-# define BOOST_NO_SWPRINTF
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#elif defined(_WIN32)
-# define BOOST_DISABLE_WIN32
-#endif
-
-// I checked version 6.0 build 020312Z, it implements the NRVO.
-// Correct this as you find out which version of the compiler
-// implemented the NRVO first. (Daniel Frey)
-#if (BOOST_INTEL_CXX_VERSION >= 600)
-# define BOOST_HAS_NRVO
-#endif
-
-//
-// versions check:
-// we don't support Intel prior to version 5.0:
-#if BOOST_INTEL_CXX_VERSION < 500
-# error "Compiler not supported or configured - please reconfigure"
-#endif
-
-// Intel on MacOS requires
-#if defined(__APPLE__) && defined(__INTEL_COMPILER)
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#endif
-
-// Intel on Altix Itanium
-#if defined(__itanium__) && defined(__INTEL_COMPILER)
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#endif
-
-//
-// An attempt to value-initialize a pointer-to-member may trigger an
-// internal error on Intel <= 11.1 (last checked version), as was
-// reported by John Maddock, Intel support issue 589832, May 2010.
-// Moreover, according to test results from Huang-Vista-x86_32_intel,
-// intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some
-// cases when it should be value-initialized.
-// (Niels Dekker, LKEB, May 2010)
-// Apparently Intel 12.1 (compiler version number 9999 !!) has the same issue (compiler regression).
-#if defined(__INTEL_COMPILER)
-# if (__INTEL_COMPILER <= 1110) || (__INTEL_COMPILER == 9999) || (defined(_WIN32) && (__INTEL_COMPILER < 1500))
-# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-# endif
-#endif
-
-//
-// Dynamic shared object (DSO) and dynamic-link library (DLL) support
-//
-#if defined(__GNUC__) && (__GNUC__ >= 4)
-# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
-# define BOOST_SYMBOL_IMPORT
-# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
-#endif
-//
-// C++0x features
-// - ICC added static_assert in 11.0 (first version with C++0x support)
-//
-#if defined(BOOST_INTEL_STDCXX0X)
-# undef BOOST_NO_CXX11_STATIC_ASSERT
-//
-// These pass our test cases, but aren't officially supported according to:
-// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
-//
-//# undef BOOST_NO_CXX11_LAMBDAS
-//# undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-//# undef BOOST_NO_CXX11_DECLTYPE
-//# undef BOOST_NO_CXX11_AUTO_DECLARATIONS
-//# undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#endif
-
-#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1200)
-//# undef BOOST_NO_CXX11_RVALUE_REFERENCES // Enabling this breaks Filesystem and Exception libraries
-//# undef BOOST_NO_CXX11_SCOPED_ENUMS // doesn't really work!!
-# undef BOOST_NO_CXX11_DELETED_FUNCTIONS
-# undef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-# undef BOOST_NO_CXX11_LAMBDAS
-# undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-# undef BOOST_NO_CXX11_DECLTYPE
-# undef BOOST_NO_CXX11_AUTO_DECLARATIONS
-# undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#endif
-
-// icl Version 12.1.0.233 Build 20110811 and possibly some other builds
-// had an incorrect __INTEL_COMPILER value of 9999. Intel say this has been fixed.
-#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION > 1200)
-# undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-# undef BOOST_NO_CXX11_NULLPTR
-# undef BOOST_NO_CXX11_RVALUE_REFERENCES
-# undef BOOST_NO_SFINAE_EXPR
-# undef BOOST_NO_CXX11_TEMPLATE_ALIASES
-# undef BOOST_NO_CXX11_VARIADIC_TEMPLATES
-
-// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
-// continues to list scoped enum support as "Partial"
-//# undef BOOST_NO_CXX11_SCOPED_ENUMS
-#endif
-
-#if defined(_MSC_VER) && (_MSC_VER <= 1700)
-//
-// Although the Intel compiler is capable of supporting these, it appears not to in MSVC compatibility mode:
-//
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-# define BOOST_NO_CXX11_DELETED_FUNCTIONS
-# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-# define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#endif
-
-#if (BOOST_INTEL_CXX_VERSION < 1200)
-//
-// fenv.h appears not to work with Intel prior to 12.0:
-//
-# define BOOST_NO_FENV_H
-#endif
-
-//
-// last known and checked version:
-#if (BOOST_INTEL_CXX_VERSION > 1200)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# elif defined(_MSC_VER)
-//
-// We don't emit this warning any more, since we have so few
-// defect macros set anyway (just the one).
-//
-//# pragma message("Unknown compiler version - please run the configure tests and report the results")
-# endif
-#endif
-
diff --git a/libcutl/cutl/details/boost/config/compiler/kai.hpp b/libcutl/cutl/details/boost/config/compiler/kai.hpp
deleted file mode 100644
index 61d69d4..0000000
--- a/libcutl/cutl/details/boost/config/compiler/kai.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// (C) Copyright John Maddock 2001.
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Kai C++ compiler setup:
-
-#include "cutl/details/boost/config/compiler/common_edg.hpp"
-
-# if (__KCC_VERSION <= 4001) || !defined(BOOST_STRICT_CONFIG)
- // at least on Sun, the contents of <cwchar> is not in namespace std
-# define BOOST_NO_STDC_NAMESPACE
-# endif
-
-// see also common_edg.hpp which needs a special check for __KCC
-# if !defined(_EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
-# define BOOST_NO_EXCEPTIONS
-# endif
-
-//
-// last known and checked version is 4001:
-#if (__KCC_VERSION > 4001)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# endif
-#endif
-
-
-
diff --git a/libcutl/cutl/details/boost/config/compiler/metrowerks.hpp b/libcutl/cutl/details/boost/config/compiler/metrowerks.hpp
deleted file mode 100644
index 4ca8af8..0000000
--- a/libcutl/cutl/details/boost/config/compiler/metrowerks.hpp
+++ /dev/null
@@ -1,145 +0,0 @@
-// (C) Copyright John Maddock 2001.
-// (C) Copyright Darin Adler 2001.
-// (C) Copyright Peter Dimov 2001.
-// (C) Copyright David Abrahams 2001 - 2002.
-// (C) Copyright Beman Dawes 2001 - 2003.
-// (C) Copyright Stefan Slapeta 2004.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Metrowerks C++ compiler setup:
-
-// locale support is disabled when linking with the dynamic runtime
-# ifdef _MSL_NO_LOCALE
-# define BOOST_NO_STD_LOCALE
-# endif
-
-# if __MWERKS__ <= 0x2301 // 5.3
-# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-# define BOOST_NO_POINTER_TO_MEMBER_CONST
-# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
-# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
-# endif
-
-# if __MWERKS__ <= 0x2401 // 6.2
-//# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-# endif
-
-# if(__MWERKS__ <= 0x2407) // 7.x
-# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
-# define BOOST_NO_UNREACHABLE_RETURN_DETECTION
-# endif
-
-# if(__MWERKS__ <= 0x3003) // 8.x
-# define BOOST_NO_SFINAE
-# endif
-
-// the "|| !defined(BOOST_STRICT_CONFIG)" part should apply to the last
-// tested version *only*:
-# if(__MWERKS__ <= 0x3207) || !defined(BOOST_STRICT_CONFIG) // 9.6
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-# define BOOST_NO_IS_ABSTRACT
-# endif
-
-#if !__option(wchar_type)
-# define BOOST_NO_INTRINSIC_WCHAR_T
-#endif
-
-#if !__option(exceptions) && !defined(BOOST_NO_EXCEPTIONS)
-# define BOOST_NO_EXCEPTIONS
-#endif
-
-#if (__INTEL__ && _WIN32) || (__POWERPC__ && macintosh)
-# if __MWERKS__ == 0x3000
-# define BOOST_COMPILER_VERSION 8.0
-# elif __MWERKS__ == 0x3001
-# define BOOST_COMPILER_VERSION 8.1
-# elif __MWERKS__ == 0x3002
-# define BOOST_COMPILER_VERSION 8.2
-# elif __MWERKS__ == 0x3003
-# define BOOST_COMPILER_VERSION 8.3
-# elif __MWERKS__ == 0x3200
-# define BOOST_COMPILER_VERSION 9.0
-# elif __MWERKS__ == 0x3201
-# define BOOST_COMPILER_VERSION 9.1
-# elif __MWERKS__ == 0x3202
-# define BOOST_COMPILER_VERSION 9.2
-# elif __MWERKS__ == 0x3204
-# define BOOST_COMPILER_VERSION 9.3
-# elif __MWERKS__ == 0x3205
-# define BOOST_COMPILER_VERSION 9.4
-# elif __MWERKS__ == 0x3206
-# define BOOST_COMPILER_VERSION 9.5
-# elif __MWERKS__ == 0x3207
-# define BOOST_COMPILER_VERSION 9.6
-# else
-# define BOOST_COMPILER_VERSION __MWERKS__
-# endif
-#else
-# define BOOST_COMPILER_VERSION __MWERKS__
-#endif
-
-//
-// C++0x features
-//
-// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
-//
-#if __MWERKS__ > 0x3206 && __option(rvalue_refs)
-# define BOOST_HAS_RVALUE_REFS
-#else
-# define BOOST_NO_CXX11_RVALUE_REFERENCES
-#endif
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_CHAR16_T
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-#define BOOST_NO_CXX11_LAMBDAS
-#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_SCOPED_ENUMS
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_VARIADIC_MACROS
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-
-#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
-
-//
-// versions check:
-// we don't support Metrowerks prior to version 5.3:
-#if __MWERKS__ < 0x2301
-# error "Compiler not supported or configured - please reconfigure"
-#endif
-//
-// last known and checked version:
-#if (__MWERKS__ > 0x3205)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# endif
-#endif
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/compiler/mpw.hpp b/libcutl/cutl/details/boost/config/compiler/mpw.hpp
deleted file mode 100644
index 7ef38ef..0000000
--- a/libcutl/cutl/details/boost/config/compiler/mpw.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2002.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// MPW C++ compilers setup:
-
-# if defined(__SC__)
-# define BOOST_COMPILER "MPW SCpp version " BOOST_STRINGIZE(__SC__)
-# elif defined(__MRC__)
-# define BOOST_COMPILER "MPW MrCpp version " BOOST_STRINGIZE(__MRC__)
-# else
-# error "Using MPW compiler configuration by mistake. Please update."
-# endif
-
-//
-// MPW 8.90:
-//
-#if (MPW_CPLUS <= 0x890) || !defined(BOOST_STRICT_CONFIG)
-# define BOOST_NO_CV_SPECIALIZATIONS
-# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
-# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
-# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-# define BOOST_NO_INTRINSIC_WCHAR_T
-# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# define BOOST_NO_USING_TEMPLATE
-
-# define BOOST_NO_CWCHAR
-# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
-
-# define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */
-
-#endif
-
-//
-// C++0x features
-//
-// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
-//
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_CHAR16_T
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-#define BOOST_NO_CXX11_LAMBDAS
-#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_RVALUE_REFERENCES
-#define BOOST_NO_CXX11_SCOPED_ENUMS
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_VARIADIC_MACROS
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-
-//
-// versions check:
-// we don't support MPW prior to version 8.9:
-#if MPW_CPLUS < 0x890
-# error "Compiler not supported or configured - please reconfigure"
-#endif
-//
-// last known and checked version is 0x890:
-#if (MPW_CPLUS > 0x890)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# endif
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/config/compiler/nvcc.hpp b/libcutl/cutl/details/boost/config/compiler/nvcc.hpp
deleted file mode 100644
index fd21867..0000000
--- a/libcutl/cutl/details/boost/config/compiler/nvcc.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// (C) Copyright Eric Jourdanneau, Joel Falcou 2010
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// NVIDIA CUDA C++ compiler setup
-
-#ifndef BOOST_COMPILER
-# define BOOST_COMPILER "NVIDIA CUDA C++ Compiler"
-#endif
-
-// NVIDIA Specific support
-// BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device
-#define BOOST_GPU_ENABLED __host__ __device__
-
-// Boost support macro for NVCC
-// NVCC Basically behaves like some flavor of MSVC6 + some specific quirks
-#ifdef __GNUC__
-
-#include <cutl/details/boost/config/compiler/gcc.hpp>
-
-#elif defined(_MSC_VER)
-
-#include <cutl/details/boost/config/compiler/visualc.hpp>
-
-#endif
diff --git a/libcutl/cutl/details/boost/config/compiler/pathscale.hpp b/libcutl/cutl/details/boost/config/compiler/pathscale.hpp
deleted file mode 100644
index 07d1460..0000000
--- a/libcutl/cutl/details/boost/config/compiler/pathscale.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-// (C) Copyright Bryce Lelbach 2011
-
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// PathScale EKOPath C++ Compiler
-
-#ifndef BOOST_COMPILER
-# define BOOST_COMPILER "PathScale EKOPath C++ Compiler version " __PATHSCALE__
-#endif
-
-#if __PATHCC__ >= 4
-# define BOOST_MSVC6_MEMBER_TEMPLATES
-# define BOOST_HAS_UNISTD_H
-# define BOOST_HAS_STDINT_H
-# define BOOST_HAS_SIGACTION
-# define BOOST_HAS_SCHED_YIELD
-# define BOOST_HAS_THREADS
-# define BOOST_HAS_PTHREADS
-# define BOOST_HAS_PTHREAD_YIELD
-# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
-# define BOOST_HAS_NRVO
-# define BOOST_HAS_NL_TYPES_H
-# define BOOST_HAS_NANOSLEEP
-# define BOOST_HAS_LONG_LONG
-# define BOOST_HAS_LOG1P
-# define BOOST_HAS_GETTIMEOFDAY
-# define BOOST_HAS_EXPM1
-# define BOOST_HAS_DIRENT_H
-# define BOOST_HAS_CLOCK_GETTIME
-# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-# define BOOST_NO_CXX11_UNICODE_LITERALS
-# define BOOST_NO_CXX11_TEMPLATE_ALIASES
-# define BOOST_NO_CXX11_STATIC_ASSERT
-# define BOOST_NO_SFINAE_EXPR
-# define BOOST_NO_CXX11_SCOPED_ENUMS
-# define BOOST_NO_CXX11_RVALUE_REFERENCES
-# define BOOST_NO_CXX11_RANGE_BASED_FOR
-# define BOOST_NO_CXX11_RAW_LITERALS
-# define BOOST_NO_CXX11_NULLPTR
-# define BOOST_NO_CXX11_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_NOEXCEPT
-# define BOOST_NO_CXX11_LAMBDAS
-# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-# define BOOST_NO_CXX11_DELETED_FUNCTIONS
-# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-# define BOOST_NO_CXX11_DECLTYPE
-# define BOOST_NO_CXX11_DECLTYPE_N3276
-# define BOOST_NO_CXX11_CONSTEXPR
-# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-# define BOOST_NO_CXX11_CHAR32_T
-# define BOOST_NO_CXX11_CHAR16_T
-# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-# define BOOST_NO_CXX11_AUTO_DECLARATIONS
-# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-# define BOOST_NO_CXX11_HDR_UNORDERED_SET
-# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-# define BOOST_NO_CXX11_HDR_TYPEINDEX
-# define BOOST_NO_CXX11_HDR_TUPLE
-# define BOOST_NO_CXX11_HDR_THREAD
-# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-# define BOOST_NO_CXX11_HDR_REGEX
-# define BOOST_NO_CXX11_HDR_RATIO
-# define BOOST_NO_CXX11_HDR_RANDOM
-# define BOOST_NO_CXX11_HDR_MUTEX
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_FORWARD_LIST
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_CODECVT
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-#endif
-
diff --git a/libcutl/cutl/details/boost/config/compiler/pgi.hpp b/libcutl/cutl/details/boost/config/compiler/pgi.hpp
deleted file mode 100644
index 64c0d75..0000000
--- a/libcutl/cutl/details/boost/config/compiler/pgi.hpp
+++ /dev/null
@@ -1,119 +0,0 @@
-// (C) Copyright Noel Belcourt 2007.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// PGI C++ compiler setup:
-
-#define BOOST_COMPILER_VERSION __PGIC__##__PGIC_MINOR__
-#define BOOST_COMPILER "PGI compiler version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
-
-//
-// Threading support:
-// Turn this on unconditionally here, it will get turned off again later
-// if no threading API is detected.
-//
-
-#if __PGIC__ >= 11
-
-// options requested by configure --enable-test
-#define BOOST_HAS_PTHREADS
-#define BOOST_HAS_THREADS
-#define BOOST_HAS_PTHREAD_YIELD
-#define BOOST_HAS_NRVO
-#define BOOST_HAS_LONG_LONG
-
-// options --enable-test wants undefined
-#undef BOOST_NO_STDC_NAMESPACE
-#undef BOOST_NO_EXCEPTION_STD_NAMESPACE
-#undef BOOST_DEDUCED_TYPENAME
-
-#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-
-#elif __PGIC__ >= 10
-
-// options requested by configure --enable-test
-#define BOOST_HAS_THREADS
-#define BOOST_HAS_NRVO
-#define BOOST_HAS_LONG_LONG
-
-// options --enable-test wants undefined
-#undef BOOST_NO_STDC_NAMESPACE
-#undef BOOST_NO_EXCEPTION_STD_NAMESPACE
-#undef BOOST_DEDUCED_TYPENAME
-
-#elif __PGIC__ >= 7
-
-#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#define BOOST_NO_SWPRINTF
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-
-#else
-
-# error "Pgi compiler not configured - please reconfigure"
-
-#endif
-//
-// C++0x features
-//
-// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
-//
-#define BOOST_NO_CXX11_CHAR16_T
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_CXX11_LAMBDAS
-#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_NUMERIC_LIMITS
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_RVALUE_REFERENCES
-#define BOOST_NO_CXX11_SCOPED_ENUMS
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_SWPRINTF
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_VARIADIC_MACROS
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-
-#define BOOST_NO_CXX11_HDR_UNORDERED_SET
-#define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-#define BOOST_NO_CXX11_HDR_TYPEINDEX
-#define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-#define BOOST_NO_CXX11_HDR_TUPLE
-#define BOOST_NO_CXX11_HDR_THREAD
-#define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-#define BOOST_NO_CXX11_HDR_REGEX
-#define BOOST_NO_CXX11_HDR_RATIO
-#define BOOST_NO_CXX11_HDR_RANDOM
-#define BOOST_NO_CXX11_HDR_MUTEX
-#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-#define BOOST_NO_CXX11_HDR_FUTURE
-#define BOOST_NO_CXX11_HDR_FORWARD_LIST
-#define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-#define BOOST_NO_CXX11_HDR_CODECVT
-#define BOOST_NO_CXX11_HDR_CHRONO
-#define BOOST_NO_CXX11_HDR_ARRAY
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-
-//
-// version check:
-// probably nothing to do here?
-
diff --git a/libcutl/cutl/details/boost/config/compiler/sgi_mipspro.hpp b/libcutl/cutl/details/boost/config/compiler/sgi_mipspro.hpp
deleted file mode 100644
index bce4432..0000000
--- a/libcutl/cutl/details/boost/config/compiler/sgi_mipspro.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// SGI C++ compiler setup:
-
-#define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION)
-
-#include "cutl/details/boost/config/compiler/common_edg.hpp"
-
-//
-// Threading support:
-// Turn this on unconditionally here, it will get turned off again later
-// if no threading API is detected.
-//
-#define BOOST_HAS_THREADS
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-
-#undef BOOST_NO_SWPRINTF
-#undef BOOST_DEDUCED_TYPENAME
-
-//
-// version check:
-// probably nothing to do here?
-
-
diff --git a/libcutl/cutl/details/boost/config/compiler/sunpro_cc.hpp b/libcutl/cutl/details/boost/config/compiler/sunpro_cc.hpp
deleted file mode 100644
index 88421ee..0000000
--- a/libcutl/cutl/details/boost/config/compiler/sunpro_cc.hpp
+++ /dev/null
@@ -1,150 +0,0 @@
-// (C) Copyright John Maddock 2001.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// (C) Copyright Peter Dimov 2002.
-// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
-// (C) Copyright David Abrahams 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Sun C++ compiler setup:
-
-# if __SUNPRO_CC <= 0x500
-# define BOOST_NO_MEMBER_TEMPLATES
-# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-# endif
-
-# if (__SUNPRO_CC <= 0x520)
- //
- // Sunpro 5.2 and earler:
- //
- // although sunpro 5.2 supports the syntax for
- // inline initialization it often gets the value
- // wrong, especially where the value is computed
- // from other constants (J Maddock 6th May 2001)
-# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-
- // Although sunpro 5.2 supports the syntax for
- // partial specialization, it often seems to
- // bind to the wrong specialization. Better
- // to disable it until suppport becomes more stable
- // (J Maddock 6th May 2001).
-# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# endif
-
-# if (__SUNPRO_CC <= 0x530)
- // Requesting debug info (-g) with Boost.Python results
- // in an internal compiler error for "static const"
- // initialized in-class.
- // >> Assertion: (../links/dbg_cstabs.cc, line 611)
- // while processing ../test.cpp at line 0.
- // (Jens Maurer according to Gottfried Ganssauge 04 Mar 2002)
-# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-
- // SunPro 5.3 has better support for partial specialization,
- // but breaks when compiling std::less<shared_ptr<T> >
- // (Jens Maurer 4 Nov 2001).
-
- // std::less specialization fixed as reported by George
- // Heintzelman; partial specialization re-enabled
- // (Peter Dimov 17 Jan 2002)
-
-//# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
- // integral constant expressions with 64 bit numbers fail
-# define BOOST_NO_INTEGRAL_INT64_T
-# endif
-
-# if (__SUNPRO_CC < 0x570)
-# define BOOST_NO_TEMPLATE_TEMPLATES
- // see http://lists.boost.org/MailArchives/boost/msg47184.php
- // and http://lists.boost.org/MailArchives/boost/msg47220.php
-# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-# define BOOST_NO_SFINAE
-# define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
-# endif
-# if (__SUNPRO_CC <= 0x580)
-# define BOOST_NO_IS_ABSTRACT
-# endif
-
-# if (__SUNPRO_CC <= 0x5100)
- // Sun 5.10 may not correctly value-initialize objects of
- // some user defined types, as was reported in April 2010
- // (CR 6947016), and confirmed by Steve Clamage.
- // (Niels Dekker, LKEB, May 2010).
-# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-# endif
-
-//
-// Dynamic shared object (DSO) and dynamic-link library (DLL) support
-//
-#if __SUNPRO_CC > 0x500
-# define BOOST_SYMBOL_EXPORT __global
-# define BOOST_SYMBOL_IMPORT __global
-# define BOOST_SYMBOL_VISIBLE __global
-#endif
-
-
-
-//
-// Issues that effect all known versions:
-//
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#define BOOST_NO_ADL_BARRIER
-
-//
-// C++0x features
-//
-# define BOOST_HAS_LONG_LONG
-
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_CHAR16_T
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-#define BOOST_NO_CXX11_LAMBDAS
-#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_RVALUE_REFERENCES
-#define BOOST_NO_CXX11_SCOPED_ENUMS
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_VARIADIC_MACROS
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-
-//
-// Version
-//
-
-#define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC)
-
-//
-// versions check:
-// we don't support sunpro prior to version 4:
-#if __SUNPRO_CC < 0x400
-#error "Compiler not supported or configured - please reconfigure"
-#endif
-//
-// last known and checked version is 0x590:
-#if (__SUNPRO_CC > 0x590)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# endif
-#endif
diff --git a/libcutl/cutl/details/boost/config/compiler/vacpp.hpp b/libcutl/cutl/details/boost/config/compiler/vacpp.hpp
deleted file mode 100644
index 47b9903..0000000
--- a/libcutl/cutl/details/boost/config/compiler/vacpp.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Toon Knapen 2001 - 2003.
-// (C) Copyright Lie-Quan Lee 2001.
-// (C) Copyright Markus Schoepflin 2002 - 2003.
-// (C) Copyright Beman Dawes 2002 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Visual Age (IBM) C++ compiler setup:
-
-#if __IBMCPP__ <= 501
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
-#endif
-
-#if (__IBMCPP__ <= 502)
-// Actually the compiler supports inclass member initialization but it
-// requires a definition for the class member and it doesn't recognize
-// it as an integral constant expression when used as a template argument.
-# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-# define BOOST_NO_INTEGRAL_INT64_T
-# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
-#endif
-
-#if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG)
-# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
-#endif
-
-#if (__IBMCPP__ <= 1110)
-// XL C++ V11.1 and earlier versions may not always value-initialize
-// a temporary object T(), when T is a non-POD aggregate class type.
-// Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it
-// high priority. -- Niels Dekker (LKEB), May 2010.
-# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-#endif
-
-//
-// On AIX thread support seems to be indicated by _THREAD_SAFE:
-//
-#ifdef _THREAD_SAFE
-# define BOOST_HAS_THREADS
-#endif
-
-#define BOOST_COMPILER "IBM Visual Age version " BOOST_STRINGIZE(__IBMCPP__)
-
-//
-// versions check:
-// we don't support Visual age prior to version 5:
-#if __IBMCPP__ < 500
-#error "Compiler not supported or configured - please reconfigure"
-#endif
-//
-// last known and checked version is 1210:
-#if (__IBMCPP__ > 1210)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# endif
-#endif
-
-// Some versions of the compiler have issues with default arguments on partial specializations
-#if __IBMCPP__ <= 1010
-#define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
-#endif
-
-//
-// C++0x features
-//
-// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
-//
-#if ! __IBMCPP_AUTO_TYPEDEDUCTION
-# define BOOST_NO_CXX11_AUTO_DECLARATIONS
-# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#endif
-#if ! __IBMCPP_UTF_LITERAL__
-# define BOOST_NO_CXX11_CHAR16_T
-# define BOOST_NO_CXX11_CHAR32_T
-#endif
-#if ! __IBMCPP_CONSTEXPR
-# define BOOST_NO_CXX11_CONSTEXPR
-#endif
-#if ! __IBMCPP_DECLTYPE
-# define BOOST_NO_CXX11_DECLTYPE
-#else
-# define BOOST_HAS_DECLTYPE
-#endif
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#if ! __IBMCPP_EXPLICIT_CONVERSION_OPERATORS
-# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#endif
-#if ! __IBMCPP_EXTERN_TEMPLATE
-# define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#endif
-#if ! __IBMCPP_VARIADIC_TEMPLATES
-// not enabled separately at this time
-# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#endif
-#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-#define BOOST_NO_CXX11_LAMBDAS
-#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-#if ! __IBMCPP_RVALUE_REFERENCES
-# define BOOST_NO_CXX11_RVALUE_REFERENCES
-#endif
-#if ! __IBMCPP_SCOPED_ENUM
-# define BOOST_NO_CXX11_SCOPED_ENUMS
-#endif
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#if ! __IBMCPP_STATIC_ASSERT
-# define BOOST_NO_CXX11_STATIC_ASSERT
-#endif
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#if ! __IBMCPP_VARIADIC_TEMPLATES
-# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#endif
-#if ! __C99_MACRO_WITH_VA_ARGS
-# define BOOST_NO_CXX11_VARIADIC_MACROS
-#endif
-
-
-
diff --git a/libcutl/cutl/details/boost/config/compiler/visualc.hpp b/libcutl/cutl/details/boost/config/compiler/visualc.hpp
deleted file mode 100644
index 3060f4c..0000000
--- a/libcutl/cutl/details/boost/config/compiler/visualc.hpp
+++ /dev/null
@@ -1,324 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Darin Adler 2001 - 2002.
-// (C) Copyright Peter Dimov 2001.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Beman Dawes 2002 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-//
-// Microsoft Visual C++ compiler setup:
-//
-// We need to be careful with the checks in this file, as contrary
-// to popular belief there are versions with _MSC_VER with the final
-// digit non-zero (mainly the MIPS cross compiler).
-//
-// So we either test _MSC_VER >= XXXX or else _MSC_VER < XXXX.
-// No other comparisons (==, >, or <=) are safe.
-//
-
-#define BOOST_MSVC _MSC_VER
-
-//
-// Helper macro BOOST_MSVC_FULL_VER for use in Boost code:
-//
-#if _MSC_FULL_VER > 100000000
-# define BOOST_MSVC_FULL_VER _MSC_FULL_VER
-#else
-# define BOOST_MSVC_FULL_VER (_MSC_FULL_VER * 10)
-#endif
-
-// Attempt to suppress VC6 warnings about the length of decorated names (obsolete):
-#pragma warning( disable : 4503 ) // warning: decorated name length exceeded
-
-//
-// versions check:
-// we don't support Visual C++ prior to version 6:
-#if _MSC_VER < 1200
-# error "Compiler not supported or configured - please reconfigure"
-#endif
-
-#if _MSC_VER < 1300 // 1200 == VC++ 6.0, 1200-1202 == eVC++4
-# pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info
-# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
-# define BOOST_NO_VOID_RETURNS
-# define BOOST_NO_EXCEPTION_STD_NAMESPACE
-
-# if _MSC_VER == 1202
-# define BOOST_NO_STD_TYPEINFO
-# endif
-
-#endif
-
-/// Visual Studio has no fenv.h
-#define BOOST_NO_FENV_H
-
-#if (_MSC_VER < 1310) // 130X == VC++ 7.0
-
-# if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za
-# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
-# endif
-
-# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-# define BOOST_NO_PRIVATE_IN_AGGREGATE
-# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
-# define BOOST_NO_INTEGRAL_INT64_T
-# define BOOST_NO_DEDUCED_TYPENAME
-# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
-
-// VC++ 6/7 has member templates but they have numerous problems including
-// cases of silent failure, so for safety we define:
-# define BOOST_NO_MEMBER_TEMPLATES
-// For VC++ experts wishing to attempt workarounds, we define:
-# define BOOST_MSVC6_MEMBER_TEMPLATES
-
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# define BOOST_NO_CV_VOID_SPECIALIZATIONS
-# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-# define BOOST_NO_USING_TEMPLATE
-# define BOOST_NO_SWPRINTF
-# define BOOST_NO_TEMPLATE_TEMPLATES
-# define BOOST_NO_SFINAE
-# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
-# define BOOST_NO_IS_ABSTRACT
-# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
-// TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
-# if (_MSC_VER >= 1300)
-# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
-# endif
-
-#endif
-
-#if _MSC_VER < 1400
-// although a conforming signature for swprint exists in VC7.1
-// it appears not to actually work:
-# define BOOST_NO_SWPRINTF
-// Our extern template tests also fail for this compiler:
-# define BOOST_NO_CXX11_EXTERN_TEMPLATE
-// Variadic macros do not exist for VC7.1 and lower
-# define BOOST_NO_CXX11_VARIADIC_MACROS
-#endif
-
-#if defined(UNDER_CE)
-// Windows CE does not have a conforming signature for swprintf
-# define BOOST_NO_SWPRINTF
-#endif
-
-#if _MSC_VER < 1500 // 140X == VC++ 8.0
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-#endif
-
-#if _MSC_VER < 1600 // 150X == VC++ 9.0
- // A bug in VC9:
-# define BOOST_NO_ADL_BARRIER
-#endif
-
-
-// MSVC (including the latest checked version) has not yet completely
-// implemented value-initialization, as is reported:
-// "VC++ does not value-initialize members of derived classes without
-// user-declared constructor", reported in 2009 by Sylvester Hesp:
-// https://connect.microsoft.com/VisualStudio/feedback/details/484295
-// "Presence of copy constructor breaks member class initialization",
-// reported in 2009 by Alex Vakulenko:
-// https://connect.microsoft.com/VisualStudio/feedback/details/499606
-// "Value-initialization in new-expression", reported in 2005 by
-// Pavel Kuznetsov (MetaCommunications Engineering):
-// https://connect.microsoft.com/VisualStudio/feedback/details/100744
-// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
-// (Niels Dekker, LKEB, May 2010)
-# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-
-#ifndef _NATIVE_WCHAR_T_DEFINED
-# define BOOST_NO_INTRINSIC_WCHAR_T
-#endif
-
-#if defined(_WIN32_WCE) || defined(UNDER_CE)
-# define BOOST_NO_SWPRINTF
-#endif
-
-// we have ThreadEx or GetSystemTimeAsFileTime unless we're running WindowsCE
-#if !defined(_WIN32_WCE) && !defined(UNDER_CE)
-# define BOOST_HAS_THREADEX
-# define BOOST_HAS_GETSYSTEMTIMEASFILETIME
-#endif
-
-//
-// check for exception handling support:
-#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
-# define BOOST_NO_EXCEPTIONS
-#endif
-
-//
-// __int64 support:
-//
-#if (_MSC_VER >= 1200)
-# define BOOST_HAS_MS_INT64
-#endif
-#if (_MSC_VER >= 1310) && (defined(_MSC_EXTENSIONS) || (_MSC_VER >= 1400))
-# define BOOST_HAS_LONG_LONG
-#else
-# define BOOST_NO_LONG_LONG
-#endif
-#if (_MSC_VER >= 1400) && !defined(_DEBUG)
-# define BOOST_HAS_NRVO
-#endif
-//
-// disable Win32 API's if compiler extentions are
-// turned off:
-//
-#if !defined(_MSC_EXTENSIONS) && !defined(BOOST_DISABLE_WIN32)
-# define BOOST_DISABLE_WIN32
-#endif
-#if !defined(_CPPRTTI) && !defined(BOOST_NO_RTTI)
-# define BOOST_NO_RTTI
-#endif
-
-//
-// TR1 features:
-//
-#if _MSC_VER >= 1700
-// # define BOOST_HAS_TR1_HASH // don't know if this is true yet.
-// # define BOOST_HAS_TR1_TYPE_TRAITS // don't know if this is true yet.
-# define BOOST_HAS_TR1_UNORDERED_MAP
-# define BOOST_HAS_TR1_UNORDERED_SET
-#endif
-
-//
-// C++0x features
-//
-// See above for BOOST_NO_LONG_LONG
-
-// C++ features supported by VC++ 10 (aka 2010)
-//
-#if _MSC_VER < 1600
-# define BOOST_NO_CXX11_AUTO_DECLARATIONS
-# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-# define BOOST_NO_CXX11_LAMBDAS
-# define BOOST_NO_CXX11_RVALUE_REFERENCES
-# define BOOST_NO_CXX11_STATIC_ASSERT
-# define BOOST_NO_CXX11_NULLPTR
-# define BOOST_NO_CXX11_DECLTYPE
-#endif // _MSC_VER < 1600
-
-#if _MSC_VER >= 1600
-# define BOOST_HAS_STDINT_H
-#endif
-
-// C++ features supported by VC++ 11 (aka 2012)
-//
-#if _MSC_VER < 1700
-# define BOOST_NO_CXX11_RANGE_BASED_FOR
-# define BOOST_NO_CXX11_SCOPED_ENUMS
-#endif // _MSC_VER < 1700
-
-// C++11 features supported by VC++ 11 (aka 2012) November 2012 CTP
-// Because the CTP is unsupported, unrelease, and only alpha quality,
-// it is only supported if BOOST_MSVC_ENABLE_2012_NOV_CTP is defined.
-//
-#if _MSC_FULL_VER < 170051025 || !defined(BOOST_MSVC_ENABLE_2012_NOV_CTP)
-# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-# define BOOST_NO_CXX11_RAW_LITERALS
-# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#endif
-
-// C++11 features not supported by any versions
-#define BOOST_NO_CXX11_CHAR16_T
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_NOEXCEPT
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-
-//
-// prefix and suffix headers:
-//
-#ifndef BOOST_ABI_PREFIX
-# define BOOST_ABI_PREFIX "cutl/details/boost/config/abi/msvc_prefix.hpp"
-#endif
-#ifndef BOOST_ABI_SUFFIX
-# define BOOST_ABI_SUFFIX "cutl/details/boost/config/abi/msvc_suffix.hpp"
-#endif
-
-#ifndef BOOST_COMPILER
-// TODO:
-// these things are mostly bogus. 1200 means version 12.0 of the compiler. The
-// artificial versions assigned to them only refer to the versions of some IDE
-// these compilers have been shipped with, and even that is not all of it. Some
-// were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
-// IOW, you can't use these 'versions' in any sensible way. Sorry.
-# if defined(UNDER_CE)
-# if _MSC_VER < 1200
- // Note: these are so far off, they are not really supported
-# elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202
-# define BOOST_COMPILER_VERSION evc4.0
-# elif _MSC_VER < 1400
- // Note: I'm not aware of any CE compiler with version 13xx
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown EVC++ compiler version - please run the configure tests and report the results"
-# else
-# pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
-# endif
-# elif _MSC_VER < 1500
-# define BOOST_COMPILER_VERSION evc8
-# elif _MSC_VER < 1600
-# define BOOST_COMPILER_VERSION evc9
-# elif _MSC_VER < 1700
-# define BOOST_COMPILER_VERSION evc10
-# elif _MSC_VER < 1800
-# define BOOST_COMPILER_VERSION evc11
-# else
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown EVC++ compiler version - please run the configure tests and report the results"
-# else
-# pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
-# endif
-# endif
-# else
-# if _MSC_VER < 1200
- // Note: these are so far off, they are not really supported
-# define BOOST_COMPILER_VERSION 5.0
-# elif _MSC_VER < 1300
-# define BOOST_COMPILER_VERSION 6.0
-# elif _MSC_VER < 1310
-# define BOOST_COMPILER_VERSION 7.0
-# elif _MSC_VER < 1400
-# define BOOST_COMPILER_VERSION 7.1
-# elif _MSC_VER < 1500
-# define BOOST_COMPILER_VERSION 8.0
-# elif _MSC_VER < 1600
-# define BOOST_COMPILER_VERSION 9.0
-# elif _MSC_VER < 1700
-# define BOOST_COMPILER_VERSION 10.0
-# elif _MSC_VER < 1800
-# define BOOST_COMPILER_VERSION 11.0
-# else
-# define BOOST_COMPILER_VERSION _MSC_VER
-# endif
-# endif
-
-# define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
-#endif
-
-//
-// last known and checked version is 1700 (VC11, aka 2011):
-#if (_MSC_VER > 1700)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# else
-# pragma message("Unknown compiler version - please run the configure tests and report the results")
-# endif
-#endif
diff --git a/libcutl/cutl/details/boost/config/no_tr1/cmath.hpp b/libcutl/cutl/details/boost/config/no_tr1/cmath.hpp
deleted file mode 100644
index d8268d8..0000000
--- a/libcutl/cutl/details/boost/config/no_tr1/cmath.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// (C) Copyright John Maddock 2008.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// The aim of this header is just to include <cmath> but to do
-// so in a way that does not result in recursive inclusion of
-// the Boost TR1 components if boost/tr1/tr1/cmath is in the
-// include search path. We have to do this to avoid circular
-// dependencies:
-//
-
-#ifndef BOOST_CONFIG_CMATH
-# define BOOST_CONFIG_CMATH
-
-# ifndef BOOST_TR1_NO_RECURSION
-# define BOOST_TR1_NO_RECURSION
-# define BOOST_CONFIG_NO_CMATH_RECURSION
-# endif
-
-# include <cmath>
-
-# ifdef BOOST_CONFIG_NO_CMATH_RECURSION
-# undef BOOST_TR1_NO_RECURSION
-# undef BOOST_CONFIG_NO_CMATH_RECURSION
-# endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/config/no_tr1/complex.hpp b/libcutl/cutl/details/boost/config/no_tr1/complex.hpp
deleted file mode 100644
index ca20092..0000000
--- a/libcutl/cutl/details/boost/config/no_tr1/complex.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// (C) Copyright John Maddock 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// The aim of this header is just to include <complex> but to do
-// so in a way that does not result in recursive inclusion of
-// the Boost TR1 components if boost/tr1/tr1/complex is in the
-// include search path. We have to do this to avoid circular
-// dependencies:
-//
-
-#ifndef BOOST_CONFIG_COMPLEX
-# define BOOST_CONFIG_COMPLEX
-
-# ifndef BOOST_TR1_NO_RECURSION
-# define BOOST_TR1_NO_RECURSION
-# define BOOST_CONFIG_NO_COMPLEX_RECURSION
-# endif
-
-# include <complex>
-
-# ifdef BOOST_CONFIG_NO_COMPLEX_RECURSION
-# undef BOOST_TR1_NO_RECURSION
-# undef BOOST_CONFIG_NO_COMPLEX_RECURSION
-# endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/config/no_tr1/functional.hpp b/libcutl/cutl/details/boost/config/no_tr1/functional.hpp
deleted file mode 100644
index e395efc..0000000
--- a/libcutl/cutl/details/boost/config/no_tr1/functional.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// (C) Copyright John Maddock 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// The aim of this header is just to include <functional> but to do
-// so in a way that does not result in recursive inclusion of
-// the Boost TR1 components if boost/tr1/tr1/functional is in the
-// include search path. We have to do this to avoid circular
-// dependencies:
-//
-
-#ifndef BOOST_CONFIG_FUNCTIONAL
-# define BOOST_CONFIG_FUNCTIONAL
-
-# ifndef BOOST_TR1_NO_RECURSION
-# define BOOST_TR1_NO_RECURSION
-# define BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
-# endif
-
-# include <functional>
-
-# ifdef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
-# undef BOOST_TR1_NO_RECURSION
-# undef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
-# endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/config/no_tr1/memory.hpp b/libcutl/cutl/details/boost/config/no_tr1/memory.hpp
deleted file mode 100644
index 2b5d208..0000000
--- a/libcutl/cutl/details/boost/config/no_tr1/memory.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// (C) Copyright John Maddock 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// The aim of this header is just to include <memory> but to do
-// so in a way that does not result in recursive inclusion of
-// the Boost TR1 components if boost/tr1/tr1/memory is in the
-// include search path. We have to do this to avoid circular
-// dependencies:
-//
-
-#ifndef BOOST_CONFIG_MEMORY
-# define BOOST_CONFIG_MEMORY
-
-# ifndef BOOST_TR1_NO_RECURSION
-# define BOOST_TR1_NO_RECURSION
-# define BOOST_CONFIG_NO_MEMORY_RECURSION
-# endif
-
-# include <memory>
-
-# ifdef BOOST_CONFIG_NO_MEMORY_RECURSION
-# undef BOOST_TR1_NO_RECURSION
-# undef BOOST_CONFIG_NO_MEMORY_RECURSION
-# endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/config/no_tr1/utility.hpp b/libcutl/cutl/details/boost/config/no_tr1/utility.hpp
deleted file mode 100644
index dea8f11..0000000
--- a/libcutl/cutl/details/boost/config/no_tr1/utility.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// (C) Copyright John Maddock 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// The aim of this header is just to include <utility> but to do
-// so in a way that does not result in recursive inclusion of
-// the Boost TR1 components if boost/tr1/tr1/utility is in the
-// include search path. We have to do this to avoid circular
-// dependencies:
-//
-
-#ifndef BOOST_CONFIG_UTILITY
-# define BOOST_CONFIG_UTILITY
-
-# ifndef BOOST_TR1_NO_RECURSION
-# define BOOST_TR1_NO_RECURSION
-# define BOOST_CONFIG_NO_UTILITY_RECURSION
-# endif
-
-# include <utility>
-
-# ifdef BOOST_CONFIG_NO_UTILITY_RECURSION
-# undef BOOST_TR1_NO_RECURSION
-# undef BOOST_CONFIG_NO_UTILITY_RECURSION
-# endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/config/platform/aix.hpp b/libcutl/cutl/details/boost/config/platform/aix.hpp
deleted file mode 100644
index 111775a..0000000
--- a/libcutl/cutl/details/boost/config/platform/aix.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// IBM/Aix specific config options:
-
-#define BOOST_PLATFORM "IBM Aix"
-
-#define BOOST_HAS_UNISTD_H
-#define BOOST_HAS_NL_TYPES_H
-#define BOOST_HAS_NANOSLEEP
-#define BOOST_HAS_CLOCK_GETTIME
-
-// This needs support in "cutl/details/boost/cstdint.hpp" exactly like FreeBSD.
-// This platform has header named <inttypes.h> which includes all
-// the things needed.
-#define BOOST_HAS_STDINT_H
-
-// Threading API's:
-#define BOOST_HAS_PTHREADS
-#define BOOST_HAS_PTHREAD_DELAY_NP
-#define BOOST_HAS_SCHED_YIELD
-//#define BOOST_HAS_PTHREAD_YIELD
-
-// boilerplate code:
-#include <cutl/details/boost/config/posix_features.hpp>
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/amigaos.hpp b/libcutl/cutl/details/boost/config/platform/amigaos.hpp
deleted file mode 100644
index 6f3fec4..0000000
--- a/libcutl/cutl/details/boost/config/platform/amigaos.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-// (C) Copyright John Maddock 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-#define BOOST_PLATFORM "AmigaOS"
-
-#ifndef BOOST_DISABLE_THREADS
-# define BOOST_DISABLE_THREADS
-#endif
-#define BOOST_NO_CWCHAR
-#define BOOST_NO_STD_WSTRING
-#define BOOST_NO_INTRINSIC_WCHAR_T
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/beos.hpp b/libcutl/cutl/details/boost/config/platform/beos.hpp
deleted file mode 100644
index fb99242..0000000
--- a/libcutl/cutl/details/boost/config/platform/beos.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// (C) Copyright John Maddock 2001.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// BeOS specific config options:
-
-#define BOOST_PLATFORM "BeOS"
-
-#define BOOST_NO_CWCHAR
-#define BOOST_NO_CWCTYPE
-#define BOOST_HAS_UNISTD_H
-
-#define BOOST_HAS_BETHREADS
-
-#ifndef BOOST_DISABLE_THREADS
-# define BOOST_HAS_THREADS
-#endif
-
-// boilerplate code:
-#include <cutl/details/boost/config/posix_features.hpp>
-
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/bsd.hpp b/libcutl/cutl/details/boost/config/platform/bsd.hpp
deleted file mode 100644
index 0344c3d..0000000
--- a/libcutl/cutl/details/boost/config/platform/bsd.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Darin Adler 2001.
-// (C) Copyright Douglas Gregor 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// generic BSD config options:
-
-#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
-#error "This platform is not BSD"
-#endif
-
-#ifdef __FreeBSD__
-#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__)
-#elif defined(__NetBSD__)
-#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__)
-#elif defined(__OpenBSD__)
-#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__)
-#elif defined(__DragonFly__)
-#define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__)
-#endif
-
-//
-// is this the correct version check?
-// FreeBSD has <nl_types.h> but does not
-// advertise the fact in <unistd.h>:
-//
-#if (defined(__FreeBSD__) && (__FreeBSD__ >= 3)) || defined(__DragonFly__)
-# define BOOST_HAS_NL_TYPES_H
-#endif
-
-//
-// FreeBSD 3.x has pthreads support, but defines _POSIX_THREADS in <pthread.h>
-// and not in <unistd.h>
-//
-#if (defined(__FreeBSD__) && (__FreeBSD__ <= 3))\
- || defined(__OpenBSD__) || defined(__DragonFly__)
-# define BOOST_HAS_PTHREADS
-#endif
-
-//
-// No wide character support in the BSD header files:
-//
-#if defined(__NetBSD__)
-#define __NetBSD_GCC__ (__GNUC__ * 1000000 \
- + __GNUC_MINOR__ * 1000 \
- + __GNUC_PATCHLEVEL__)
-// XXX - the following is required until c++config.h
-// defines _GLIBCXX_HAVE_SWPRINTF and friends
-// or the preprocessor conditionals are removed
-// from the cwchar header.
-#define _GLIBCXX_HAVE_SWPRINTF 1
-#endif
-
-#if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \
- || (defined(__NetBSD_GCC__) && (__NetBSD_GCC__ >= 2095003)) || defined(__DragonFly__))
-# define BOOST_NO_CWCHAR
-#endif
-//
-// The BSD <ctype.h> has macros only, no functions:
-//
-#if !defined(__OpenBSD__) || defined(__DragonFly__)
-# define BOOST_NO_CTYPE_FUNCTIONS
-#endif
-
-//
-// thread API's not auto detected:
-//
-#define BOOST_HAS_SCHED_YIELD
-#define BOOST_HAS_NANOSLEEP
-#define BOOST_HAS_GETTIMEOFDAY
-#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-#define BOOST_HAS_SIGACTION
-
-// boilerplate code:
-#define BOOST_HAS_UNISTD_H
-#include <cutl/details/boost/config/posix_features.hpp>
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/cray.hpp b/libcutl/cutl/details/boost/config/platform/cray.hpp
deleted file mode 100644
index 70b367e..0000000
--- a/libcutl/cutl/details/boost/config/platform/cray.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// (C) Copyright John Maddock 2011.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-// See http://www.boost.org for most recent version.
-
-// SGI Irix specific config options:
-
-#define BOOST_PLATFORM "Cray"
-
-// boilerplate code:
-#define BOOST_HAS_UNISTD_H
-#include <cutl/details/boost/config/posix_features.hpp>
-
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/cygwin.hpp b/libcutl/cutl/details/boost/config/platform/cygwin.hpp
deleted file mode 100644
index 5f453bb..0000000
--- a/libcutl/cutl/details/boost/config/platform/cygwin.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// cygwin specific config options:
-
-#define BOOST_PLATFORM "Cygwin"
-#define BOOST_HAS_DIRENT_H
-#define BOOST_HAS_LOG1P
-#define BOOST_HAS_EXPM1
-
-//
-// Threading API:
-// See if we have POSIX threads, if we do use them, otherwise
-// revert to native Win threads.
-#define BOOST_HAS_UNISTD_H
-#include <unistd.h>
-#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
-# define BOOST_HAS_PTHREADS
-# define BOOST_HAS_SCHED_YIELD
-# define BOOST_HAS_GETTIMEOFDAY
-# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-# define BOOST_HAS_SIGACTION
-#else
-# if !defined(BOOST_HAS_WINTHREADS)
-# define BOOST_HAS_WINTHREADS
-# endif
-# define BOOST_HAS_FTIME
-#endif
-
-//
-// find out if we have a stdint.h, there should be a better way to do this:
-//
-#include <sys/types.h>
-#ifdef _STDINT_H
-#define BOOST_HAS_STDINT_H
-#endif
-
-/// Cygwin has no fenv.h
-#define BOOST_NO_FENV_H
-
-// boilerplate code:
-#include <cutl/details/boost/config/posix_features.hpp>
-
-//
-// Cygwin lies about XSI conformance, there is no nl_types.h:
-//
-#ifdef BOOST_HAS_NL_TYPES_H
-# undef BOOST_HAS_NL_TYPES_H
-#endif
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/hpux.hpp b/libcutl/cutl/details/boost/config/platform/hpux.hpp
deleted file mode 100644
index 84fdfa2..0000000
--- a/libcutl/cutl/details/boost/config/platform/hpux.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Toon Knapen 2003.
-// (C) Copyright Boris Gubenko 2006 - 2007.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// hpux specific config options:
-
-#define BOOST_PLATFORM "HP-UX"
-
-// In principle, HP-UX has a nice <stdint.h> under the name <inttypes.h>
-// However, it has the following problem:
-// Use of UINT32_C(0) results in "0u l" for the preprocessed source
-// (verifyable with gcc 2.95.3)
-#if (defined(__GNUC__) && (__GNUC__ >= 3)) || defined(__HP_aCC)
-# define BOOST_HAS_STDINT_H
-#endif
-
-#if !(defined(__HP_aCC) || !defined(_INCLUDE__STDC_A1_SOURCE))
-# define BOOST_NO_SWPRINTF
-#endif
-#if defined(__HP_aCC) && !defined(_INCLUDE__STDC_A1_SOURCE)
-# define BOOST_NO_CWCTYPE
-#endif
-
-#if defined(__GNUC__)
-# if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3))
- // GNU C on HP-UX does not support threads (checked up to gcc 3.3)
-# ifndef BOOST_DISABLE_THREADS
-# define BOOST_DISABLE_THREADS
-# endif
-# elif !defined(BOOST_DISABLE_THREADS)
- // threads supported from gcc-3.3 onwards:
-# define BOOST_HAS_THREADS
-# define BOOST_HAS_PTHREADS
-# endif
-#elif defined(__HP_aCC) && !defined(BOOST_DISABLE_THREADS)
-# define BOOST_HAS_PTHREADS
-#endif
-
-// boilerplate code:
-#define BOOST_HAS_UNISTD_H
-#include <cutl/details/boost/config/posix_features.hpp>
-
-// the following are always available:
-#ifndef BOOST_HAS_GETTIMEOFDAY
-# define BOOST_HAS_GETTIMEOFDAY
-#endif
-#ifndef BOOST_HAS_SCHED_YIELD
-# define BOOST_HAS_SCHED_YIELD
-#endif
-#ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-#endif
-#ifndef BOOST_HAS_NL_TYPES_H
-# define BOOST_HAS_NL_TYPES_H
-#endif
-#ifndef BOOST_HAS_NANOSLEEP
-# define BOOST_HAS_NANOSLEEP
-#endif
-#ifndef BOOST_HAS_GETTIMEOFDAY
-# define BOOST_HAS_GETTIMEOFDAY
-#endif
-#ifndef BOOST_HAS_DIRENT_H
-# define BOOST_HAS_DIRENT_H
-#endif
-#ifndef BOOST_HAS_CLOCK_GETTIME
-# define BOOST_HAS_CLOCK_GETTIME
-#endif
-#ifndef BOOST_HAS_SIGACTION
-# define BOOST_HAS_SIGACTION
-#endif
-#ifndef BOOST_HAS_NRVO
-# ifndef __parisc
-# define BOOST_HAS_NRVO
-# endif
-#endif
-#ifndef BOOST_HAS_LOG1P
-# define BOOST_HAS_LOG1P
-#endif
-#ifndef BOOST_HAS_EXPM1
-# define BOOST_HAS_EXPM1
-#endif
-
diff --git a/libcutl/cutl/details/boost/config/platform/irix.hpp b/libcutl/cutl/details/boost/config/platform/irix.hpp
deleted file mode 100644
index d4add11..0000000
--- a/libcutl/cutl/details/boost/config/platform/irix.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-// See http://www.boost.org for most recent version.
-
-// SGI Irix specific config options:
-
-#define BOOST_PLATFORM "SGI Irix"
-
-#define BOOST_NO_SWPRINTF
-//
-// these are not auto detected by POSIX feature tests:
-//
-#define BOOST_HAS_GETTIMEOFDAY
-#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-
-#ifdef __GNUC__
- // GNU C on IRIX does not support threads (checked up to gcc 3.3)
-# ifndef BOOST_DISABLE_THREADS
-# define BOOST_DISABLE_THREADS
-# endif
-#endif
-
-// boilerplate code:
-#define BOOST_HAS_UNISTD_H
-#include <cutl/details/boost/config/posix_features.hpp>
-
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/linux.hpp b/libcutl/cutl/details/boost/config/platform/linux.hpp
deleted file mode 100644
index 1202244..0000000
--- a/libcutl/cutl/details/boost/config/platform/linux.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// linux specific config options:
-
-#define BOOST_PLATFORM "linux"
-
-// make sure we have __GLIBC_PREREQ if available at all
-#ifdef __cplusplus
-#include <cstdlib>
-#else
-#include <stdlib.h>
-#endif
-
-//
-// <stdint.h> added to glibc 2.1.1
-// We can only test for 2.1 though:
-//
-#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
- // <stdint.h> defines int64_t unconditionally, but <sys/types.h> defines
- // int64_t only if __GNUC__. Thus, assume a fully usable <stdint.h>
- // only when using GCC.
-# if defined __GNUC__
-# define BOOST_HAS_STDINT_H
-# endif
-#endif
-
-#if defined(__LIBCOMO__)
- //
- // como on linux doesn't have std:: c functions:
- // NOTE: versions of libcomo prior to beta28 have octal version numbering,
- // e.g. version 25 is 21 (dec)
- //
-# if __LIBCOMO_VERSION__ <= 20
-# define BOOST_NO_STDC_NAMESPACE
-# endif
-
-# if __LIBCOMO_VERSION__ <= 21
-# define BOOST_NO_SWPRINTF
-# endif
-
-#endif
-
-//
-// If glibc is past version 2 then we definitely have
-// gettimeofday, earlier versions may or may not have it:
-//
-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
-# define BOOST_HAS_GETTIMEOFDAY
-#endif
-
-#ifdef __USE_POSIX199309
-# define BOOST_HAS_NANOSLEEP
-#endif
-
-#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
-// __GLIBC_PREREQ is available since 2.1.2
-
- // swprintf is available since glibc 2.2.0
-# if !__GLIBC_PREREQ(2,2) || (!defined(__USE_ISOC99) && !defined(__USE_UNIX98))
-# define BOOST_NO_SWPRINTF
-# endif
-#else
-# define BOOST_NO_SWPRINTF
-#endif
-
-// boilerplate code:
-#define BOOST_HAS_UNISTD_H
-#include <cutl/details/boost/config/posix_features.hpp>
-#define BOOST_HAS_PTHREAD_YIELD
-
-#ifndef __GNUC__
-//
-// if the compiler is not gcc we still need to be able to parse
-// the GNU system headers, some of which (mainly <stdint.h>)
-// use GNU specific extensions:
-//
-# ifndef __extension__
-# define __extension__
-# endif
-# ifndef __const__
-# define __const__ const
-# endif
-# ifndef __volatile__
-# define __volatile__ volatile
-# endif
-# ifndef __signed__
-# define __signed__ signed
-# endif
-# ifndef __typeof__
-# define __typeof__ typeof
-# endif
-# ifndef __inline__
-# define __inline__ inline
-# endif
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/macos.hpp b/libcutl/cutl/details/boost/config/platform/macos.hpp
deleted file mode 100644
index 7957256..0000000
--- a/libcutl/cutl/details/boost/config/platform/macos.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Darin Adler 2001 - 2002.
-// (C) Copyright Bill Kempf 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Mac OS specific config options:
-
-#define BOOST_PLATFORM "Mac OS"
-
-#if __MACH__ && !defined(_MSL_USING_MSL_C)
-
-// Using the Mac OS X system BSD-style C library.
-
-# ifndef BOOST_HAS_UNISTD_H
-# define BOOST_HAS_UNISTD_H
-# endif
-//
-// Begin by including our boilerplate code for POSIX
-// feature detection, this is safe even when using
-// the MSL as Metrowerks supply their own <unistd.h>
-// to replace the platform-native BSD one. G++ users
-// should also always be able to do this on MaxOS X.
-//
-# include <cutl/details/boost/config/posix_features.hpp>
-# ifndef BOOST_HAS_STDINT_H
-# define BOOST_HAS_STDINT_H
-# endif
-
-//
-// BSD runtime has pthreads, sigaction, sched_yield and gettimeofday,
-// of these only pthreads are advertised in <unistd.h>, so set the
-// other options explicitly:
-//
-# define BOOST_HAS_SCHED_YIELD
-# define BOOST_HAS_GETTIMEOFDAY
-# define BOOST_HAS_SIGACTION
-
-# if (__GNUC__ < 3) && !defined( __APPLE_CC__)
-
-// GCC strange "ignore std" mode works better if you pretend everything
-// is in the std namespace, for the most part.
-
-# define BOOST_NO_STDC_NAMESPACE
-# endif
-
-# if (__GNUC__ == 4)
-
-// Both gcc and intel require these.
-# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-# define BOOST_HAS_NANOSLEEP
-
-# endif
-
-#else
-
-// Using the MSL C library.
-
-// We will eventually support threads in non-Carbon builds, but we do
-// not support this yet.
-# if ( defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON ) || ( defined(TARGET_CARBON) && TARGET_CARBON )
-
-# if !defined(BOOST_HAS_PTHREADS)
-// MPTasks support is deprecated/removed from Boost:
-//# define BOOST_HAS_MPTASKS
-# elif ( __dest_os == __mac_os_x )
-// We are doing a Carbon/Mach-O/MSL build which has pthreads, but only the
-// gettimeofday and no posix.
-# define BOOST_HAS_GETTIMEOFDAY
-# endif
-
-#ifdef BOOST_HAS_PTHREADS
-# define BOOST_HAS_THREADS
-#endif
-
-// The remote call manager depends on this.
-# define BOOST_BIND_ENABLE_PASCAL
-
-# endif
-
-#endif
-
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/qnxnto.hpp b/libcutl/cutl/details/boost/config/platform/qnxnto.hpp
deleted file mode 100644
index 004dc9d..0000000
--- a/libcutl/cutl/details/boost/config/platform/qnxnto.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// (C) Copyright Jim Douglas 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// QNX specific config options:
-
-#define BOOST_PLATFORM "QNX"
-
-#define BOOST_HAS_UNISTD_H
-#include <cutl/details/boost/config/posix_features.hpp>
-
-// QNX claims XOpen version 5 compatibility, but doesn't have an nl_types.h
-// or log1p and expm1:
-#undef BOOST_HAS_NL_TYPES_H
-#undef BOOST_HAS_LOG1P
-#undef BOOST_HAS_EXPM1
-
-#define BOOST_HAS_PTHREADS
-#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-
-#define BOOST_HAS_GETTIMEOFDAY
-#define BOOST_HAS_CLOCK_GETTIME
-#define BOOST_HAS_NANOSLEEP
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/solaris.hpp b/libcutl/cutl/details/boost/config/platform/solaris.hpp
deleted file mode 100644
index 301647e..0000000
--- a/libcutl/cutl/details/boost/config/platform/solaris.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// sun specific config options:
-
-#define BOOST_PLATFORM "Sun Solaris"
-
-#define BOOST_HAS_GETTIMEOFDAY
-
-// boilerplate code:
-#define BOOST_HAS_UNISTD_H
-#include <cutl/details/boost/config/posix_features.hpp>
-
-//
-// pthreads don't actually work with gcc unless _PTHREADS is defined:
-//
-#if defined(__GNUC__) && defined(_POSIX_THREADS) && !defined(_PTHREADS)
-# undef BOOST_HAS_PTHREADS
-#endif
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/symbian.hpp b/libcutl/cutl/details/boost/config/platform/symbian.hpp
deleted file mode 100644
index 1dd4eae..0000000
--- a/libcutl/cutl/details/boost/config/platform/symbian.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-// (C) Copyright Yuriy Krasnoschek 2009.
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// symbian specific config options:
-
-
-#define BOOST_PLATFORM "Symbian"
-#define BOOST_SYMBIAN 1
-
-
-#if defined(__S60_3X__)
-// Open C / C++ plugin was introdused in this SDK, earlier versions don't have CRT / STL
-# define BOOST_S60_3rd_EDITION_FP2_OR_LATER_SDK
-// make sure we have __GLIBC_PREREQ if available at all
-#ifdef __cplusplus
-#include <cstdlib>
-#else
-#include <stdlib.h>
-#endif// boilerplate code:
-# define BOOST_HAS_UNISTD_H
-# include <cutl/details/boost/config/posix_features.hpp>
-// S60 SDK defines _POSIX_VERSION as POSIX.1
-# ifndef BOOST_HAS_STDINT_H
-# define BOOST_HAS_STDINT_H
-# endif
-# ifndef BOOST_HAS_GETTIMEOFDAY
-# define BOOST_HAS_GETTIMEOFDAY
-# endif
-# ifndef BOOST_HAS_DIRENT_H
-# define BOOST_HAS_DIRENT_H
-# endif
-# ifndef BOOST_HAS_SIGACTION
-# define BOOST_HAS_SIGACTION
-# endif
-# ifndef BOOST_HAS_PTHREADS
-# define BOOST_HAS_PTHREADS
-# endif
-# ifndef BOOST_HAS_NANOSLEEP
-# define BOOST_HAS_NANOSLEEP
-# endif
-# ifndef BOOST_HAS_SCHED_YIELD
-# define BOOST_HAS_SCHED_YIELD
-# endif
-# ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-# endif
-# ifndef BOOST_HAS_LOG1P
-# define BOOST_HAS_LOG1P
-# endif
-# ifndef BOOST_HAS_EXPM1
-# define BOOST_HAS_EXPM1
-# endif
-# ifndef BOOST_POSIX_API
-# define BOOST_POSIX_API
-# endif
-// endianess support
-# include <sys/endian.h>
-// Symbian SDK provides _BYTE_ORDER instead of __BYTE_ORDER
-# ifndef __LITTLE_ENDIAN
-# ifdef _LITTLE_ENDIAN
-# define __LITTLE_ENDIAN _LITTLE_ENDIAN
-# else
-# define __LITTLE_ENDIAN 1234
-# endif
-# endif
-# ifndef __BIG_ENDIAN
-# ifdef _BIG_ENDIAN
-# define __BIG_ENDIAN _BIG_ENDIAN
-# else
-# define __BIG_ENDIAN 4321
-# endif
-# endif
-# ifndef __BYTE_ORDER
-# define __BYTE_ORDER __LITTLE_ENDIAN // Symbian is LE
-# endif
-// Known limitations
-# define BOOST_ASIO_DISABLE_SERIAL_PORT
-# define BOOST_DATE_TIME_NO_LOCALE
-# define BOOST_NO_STD_WSTRING
-# define BOOST_EXCEPTION_DISABLE
-# define BOOST_NO_EXCEPTIONS
-
-#else // TODO: More platform support e.g. UIQ
-# error "Unsuppoted Symbian SDK"
-#endif
-
-#if defined(__WINSCW__) && !defined(BOOST_DISABLE_WIN32)
-# define BOOST_DISABLE_WIN32 // winscw defines WIN32 macro
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/config/platform/vms.hpp b/libcutl/cutl/details/boost/config/platform/vms.hpp
deleted file mode 100644
index f70efcf..0000000
--- a/libcutl/cutl/details/boost/config/platform/vms.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// (C) Copyright Artyom Beilis 2010.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_CONFIG_PLATFORM_VMS_HPP
-#define BOOST_CONFIG_PLATFORM_VMS_HPP
-
-#define BOOST_PLATFORM "OpenVMS"
-
-#undef BOOST_HAS_STDINT_H
-#define BOOST_HAS_UNISTD_H
-#define BOOST_HAS_NL_TYPES_H
-#define BOOST_HAS_GETTIMEOFDAY
-#define BOOST_HAS_DIRENT_H
-#define BOOST_HAS_PTHREADS
-#define BOOST_HAS_NANOSLEEP
-#define BOOST_HAS_CLOCK_GETTIME
-#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-#define BOOST_HAS_LOG1P
-#define BOOST_HAS_EXPM1
-#define BOOST_HAS_THREADS
-#undef BOOST_HAS_SCHED_YIELD
-
-#endif
diff --git a/libcutl/cutl/details/boost/config/platform/vxworks.hpp b/libcutl/cutl/details/boost/config/platform/vxworks.hpp
deleted file mode 100644
index bb2451e..0000000
--- a/libcutl/cutl/details/boost/config/platform/vxworks.hpp
+++ /dev/null
@@ -1,369 +0,0 @@
-// (C) Copyright Dustin Spicuzza 2009.
-// Adapted to vxWorks 6.9 by Peter Brockamp 2012.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Since WRS does not yet properly support boost under vxWorks
-// and this file was badly outdated, but I was keen on using it,
-// I patched boost myself to make things work. This has been tested
-// and adapted by me for vxWorks 6.9 *only*, as I'm lacking access
-// to earlier 6.X versions! The only thing I know for sure is that
-// very old versions of vxWorks (namely everything below 6.x) are
-// absolutely unable to use boost. This is mainly due to the completely
-// outdated libraries and ancient compiler (GCC 2.96 or worse). Do
-// not even think of getting this to work, a miserable failure will
-// be guaranteed!
-// Equally, this file has been tested for RTPs (Real Time Processes)
-// only, not for DKMs (Downloadable Kernel Modules). These two types
-// of executables differ largely in the available functionality of
-// the C-library, STL, and so on. A DKM uses a library similar to those
-// of vxWorks 5.X - with all its limitations and incompatibilities
-// with respect to ANSI C++ and STL. So probably there might be problems
-// with the usage of boost from DKMs. WRS or any voluteers are free to
-// prove the opposite!
-
-// ====================================================================
-//
-// Some important information regarding the usage of POSIX semaphores:
-// -------------------------------------------------------------------
-//
-// VxWorks as a real time operating system handles threads somewhat
-// different from what "normal" OSes do, regarding their scheduling!
-// This could lead to a scenario called "priority inversion" when using
-// semaphores, see http://en.wikipedia.org/wiki/Priority_inversion.
-//
-// Now, VxWorks POSIX-semaphores for DKM's default to the usage of
-// priority inverting semaphores, which is fine. On the other hand,
-// for RTP's it defaults to using non priority inverting semaphores,
-// which could easily pose a serious problem for a real time process,
-// i.e. deadlocks! To overcome this two possibilities do exist:
-//
-// a) Patch every piece of boost that uses semaphores to instanciate
-// the proper type of semaphores. This is non-intrusive with respect
-// to the OS and could relatively easy been done by giving all
-// semaphores attributes deviating from the default (for in-depth
-// information see the POSIX functions pthread_mutexattr_init()
-// and pthread_mutexattr_setprotocol()). However this breaks all
-// too easily, as with every new version some boost library could
-// all in a sudden start using semaphores, resurrecting the very
-// same, hard to locate problem over and over again!
-//
-// b) We could change the default properties for POSIX-semaphores
-// that VxWorks uses for RTP's and this is being suggested here,
-// as it will more or less seamlessly integrate with boost. I got
-// the following information from WRS how to do this, compare
-// Wind River TSR# 1209768:
-//
-// Instructions for changing the default properties of POSIX-
-// semaphores for RTP's in VxWorks 6.9:
-// - Edit the file /vxworks-6.9/target/usr/src/posix/pthreadLib.c
-// in the root of your Workbench-installation.
-// - Around line 917 there should be the definition of the default
-// mutex attributes:
-//
-// LOCAL pthread_mutexattr_t defaultMutexAttr =
-// {
-// PTHREAD_INITIALIZED_OBJ, PTHREAD_PRIO_NONE, 0,
-// PTHREAD_MUTEX_DEFAULT
-// };
-//
-// Here, replace PTHREAD_PRIO_NONE by PTHREAD_PRIO_INHERIT.
-// - Around line 1236 there should be a definition for the function
-// pthread_mutexattr_init(). A couple of lines below you should
-// find a block of code like this:
-//
-// pAttr->mutexAttrStatus = PTHREAD_INITIALIZED_OBJ;
-// pAttr->mutexAttrProtocol = PTHREAD_PRIO_NONE;
-// pAttr->mutexAttrPrioceiling = 0;
-// pAttr->mutexAttrType = PTHREAD_MUTEX_DEFAULT;
-//
-// Here again, replace PTHREAD_PRIO_NONE by PTHREAD_PRIO_INHERIT.
-// - Finally, rebuild your VSB. This will create a new VxWorks kernel
-// with the changed properties. That's it! Now, using boost should
-// no longer cause any problems with task deadlocks!
-//
-// And here's another useful piece of information concerning VxWorks'
-// POSIX-functionality in general:
-// VxWorks is not a genuine POSIX-OS in itself, rather it is using a
-// kind of compatibility layer (sort of a wrapper) to emulate the
-// POSIX-functionality by using its own resources and functions.
-// At the time a task (thread) calls it's first POSIX-function during
-// runtime it is being transformed by the OS into a POSIX-thread.
-// This transformation does include a call to malloc() to allocate the
-// memory required for the housekeeping of POSIX-threads. In a high
-// priority RTP this malloc() call may be highly undesirable, as its
-// timing is more or less unpredictable (depending on what your actual
-// heap looks like). You can circumvent this problem by calling the
-// function thread_self() at a well defined point in the code of the
-// task, e.g. shortly after the task spawns up. Thereby you are able
-// to define the time when the task-transformation will take place and
-// you could shift it to an uncritical point where a malloc() call is
-// tolerable. So, if this could pose a problem for your code, remember
-// to call thread_self() from the affected task at an early stage.
-//
-// ====================================================================
-
-// Block out all versions before vxWorks 6.x, as these don't work:
-// Include header with the vxWorks version information and query them
-#include <version.h>
-#if !defined(_WRS_VXWORKS_MAJOR) || (_WRS_VXWORKS_MAJOR < 6)
-# error "The vxWorks version you're using is so badly outdated,\
- it doesn't work at all with boost, sorry, no chance!"
-#endif
-
-// Handle versions above 5.X but below 6.9
-#if (_WRS_VXWORKS_MAJOR == 6) && (_WRS_VXWORKS_MINOR < 9)
-// TODO: Starting from what version does vxWorks work with boost?
-// We can't reasonably insert a #warning "" as a user hint here,
-// as this will show up with every file including some boost header,
-// badly bugging the user... So for the time being we just leave it.
-#endif
-
-// vxWorks specific config options:
-// --------------------------------
-#define BOOST_PLATFORM "vxWorks"
-
-// Special behaviour for DKMs:
-#ifdef _WRS_KERNEL
- // DKMs do not have the <cwchar>-header,
- // but apparently they do have an intrinsic wchar_t meanwhile!
-# define BOOST_NO_CWCHAR
-
- // Lots of wide-functions and -headers are unavailable for DKMs as well:
-# define BOOST_NO_CWCTYPE
-# define BOOST_NO_SWPRINTF
-# define BOOST_NO_STD_WSTRING
-# define BOOST_NO_STD_WSTREAMBUF
-#endif
-
-// Generally available headers:
-#define BOOST_HAS_UNISTD_H
-#define BOOST_HAS_STDINT_H
-#define BOOST_HAS_DIRENT_H
-#define BOOST_HAS_SLIST
-
-// vxWorks does not have installed an iconv-library by default,
-// so unfortunately no Unicode support from scratch is available!
-// Thus, instead it is suggested to switch to ICU, as this seems
-// to be the most complete and portable option...
-#define BOOST_LOCALE_WITH_ICU
-
-// Generally available functionality:
-#define BOOST_HAS_THREADS
-#define BOOST_HAS_NANOSLEEP
-#define BOOST_HAS_GETTIMEOFDAY
-#define BOOST_HAS_CLOCK_GETTIME
-#define BOOST_HAS_MACRO_USE_FACET
-
-// Generally unavailable functionality, delivered by boost's test function:
-//#define BOOST_NO_DEDUCED_TYPENAME // Commented this out, boost's test gives an errorneous result!
-#define BOOST_NO_CXX11_EXTERN_TEMPLATE
-#define BOOST_NO_CXX11_VARIADIC_MACROS
-
-// Generally available threading API's:
-#define BOOST_HAS_PTHREADS
-#define BOOST_HAS_SCHED_YIELD
-#define BOOST_HAS_SIGACTION
-
-// Functionality available for RTPs only:
-#ifdef __RTP__
-# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-# define BOOST_HAS_LOG1P
-# define BOOST_HAS_EXPM1
-#endif
-
-// Functionality available for DKMs only:
-#ifdef _WRS_KERNEL
- // Luckily, at the moment there seems to be none!
-#endif
-
-// These #defines allow posix_features to work, since vxWorks doesn't
-// #define them itself for DKMs (for RTPs on the contrary it does):
-#ifdef _WRS_KERNEL
-# ifndef _POSIX_TIMERS
-# define _POSIX_TIMERS 1
-# endif
-# ifndef _POSIX_THREADS
-# define _POSIX_THREADS 1
-# endif
-#endif
-
-// vxWorks doesn't work with asio serial ports:
-#define BOOST_ASIO_DISABLE_SERIAL_PORT
-// TODO: The problem here seems to bee that vxWorks uses its own, very specific
-// ways to handle serial ports, incompatible with POSIX or anything...
-// Maybe a specific implementation would be possible, but until the
-// straight need arises... This implementation would presumably consist
-// of some vxWorks specific ioctl-calls, etc. Any voluteers?
-
-// vxWorks-around: <time.h> #defines CLOCKS_PER_SEC as sysClkRateGet() but
-// miserably fails to #include the required <sysLib.h> to make
-// sysClkRateGet() available! So we manually include it here.
-#ifdef __RTP__
-# include <time.h>
-# include <sysLib.h>
-#endif
-
-// vxWorks-around: In <stdint.h> the macros INT32_C(), UINT32_C(), INT64_C() and
-// UINT64_C() are defined errorneously, yielding not a signed/
-// unsigned long/long long type, but a signed/unsigned int/long
-// type. Eventually this leads to compile errors in ratio_fwd.hpp,
-// when trying to define several constants which do not fit into a
-// long type! We correct them here by redefining.
-#include <cstdint>
-
-// Some macro-magic to do the job
-#define VX_JOIN(X, Y) VX_DO_JOIN(X, Y)
-#define VX_DO_JOIN(X, Y) VX_DO_JOIN2(X, Y)
-#define VX_DO_JOIN2(X, Y) X##Y
-
-// Correctly setup the macros
-#undef INT32_C
-#undef UINT32_C
-#undef INT64_C
-#undef UINT64_C
-#define INT32_C(x) VX_JOIN(x, L)
-#define UINT32_C(x) VX_JOIN(x, UL)
-#define INT64_C(x) VX_JOIN(x, LL)
-#define UINT64_C(x) VX_JOIN(x, ULL)
-
-// #include Libraries required for the following function adaption
-#include <ioLib.h>
-#include <tickLib.h>
-#include <sys/time.h>
-
-// Use C-linkage for the following helper functions
-extern "C" {
-
-// vxWorks-around: The required functions getrlimit() and getrlimit() are missing.
-// But we have the similar functions getprlimit() and setprlimit(),
-// which may serve the purpose.
-// Problem: The vxWorks-documentation regarding these functions
-// doesn't deserve its name! It isn't documented what the first two
-// parameters idtype and id mean, so we must fall back to an educated
-// guess - null, argh... :-/
-
-// TODO: getprlimit() and setprlimit() do exist for RTPs only, for whatever reason.
-// Thus for DKMs there would have to be another implementation.
-#ifdef __RTP__
- inline int getrlimit(int resource, struct rlimit *rlp){
- return getprlimit(0, 0, resource, rlp);
- }
-
- inline int setrlimit(int resource, const struct rlimit *rlp){
- return setprlimit(0, 0, resource, const_cast<struct rlimit*>(rlp));
- }
-#endif
-
-// vxWorks has ftruncate() only, so we do simulate truncate():
-inline int truncate(const char *p, off_t l){
- int fd = open(p, O_WRONLY);
- if (fd == -1){
- errno = EACCES;
- return -1;
- }
- if (ftruncate(fd, l) == -1){
- close(fd);
- errno = EACCES;
- return -1;
- }
- return close(fd);
-}
-
-// Fake symlink handling by dummy functions:
-inline int symlink(const char*, const char*){
- // vxWorks has no symlinks -> always return an error!
- errno = EACCES;
- return -1;
-}
-
-inline ssize_t readlink(const char*, char*, size_t){
- // vxWorks has no symlinks -> always return an error!
- errno = EACCES;
- return -1;
-}
-
-// vxWorks claims to implement gettimeofday in sys/time.h
-// but nevertheless does not provide it! See
-// https://support.windriver.com/olsPortal/faces/maintenance/techtipDetail_noHeader.jspx?docId=16442&contentId=WR_TECHTIP_006256
-// We implement a surrogate version here via clock_gettime:
-inline int gettimeofday(struct timeval *tv, void * /*tzv*/) {
- struct timespec ts;
- clock_gettime(CLOCK_MONOTONIC, &ts);
- tv->tv_sec = ts.tv_sec;
- tv->tv_usec = ts.tv_nsec / 1000;
- return 0;
-}
-
-// vxWorks does provide neither struct tms nor function times()!
-// We implement an empty dummy-function, simply setting the user
-// and system time to the half of thew actual system ticks-value
-// and the child user and system time to 0.
-// Rather ugly but at least it suppresses compiler errors...
-// Unfortunately, this of course *does* have an severe impact on
-// dependant libraries, actually this is chrono only! Here it will
-// not be possible to correctly use user and system times! But
-// as vxWorks is lacking the ability to calculate user and system
-// process times there seems to be no other possible solution.
-struct tms{
- clock_t tms_utime; // User CPU time
- clock_t tms_stime; // System CPU time
- clock_t tms_cutime; // User CPU time of terminated child processes
- clock_t tms_cstime; // System CPU time of terminated child processes
-};
-
-inline clock_t times(struct tms *t){
- struct timespec ts;
- clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
- clock_t ticks(static_cast<clock_t>(static_cast<double>(ts.tv_sec) * CLOCKS_PER_SEC +
- static_cast<double>(ts.tv_nsec) * CLOCKS_PER_SEC / 1000000.0));
- t->tms_utime = ticks/2U;
- t->tms_stime = ticks/2U;
- t->tms_cutime = 0; // vxWorks is lacking the concept of a child process!
- t->tms_cstime = 0; // -> Set the wait times for childs to 0
- return ticks;
-}
-
-} // extern "C"
-
-// Put the selfmade functions into the std-namespace, just in case
-namespace std {
-# ifdef __RTP__
- using ::getrlimit;
- using ::setrlimit;
-# endif
- using ::truncate;
- using ::symlink;
- using ::readlink;
- using ::times;
- using ::gettimeofday;
-}
-
-// Some more macro-magic:
-// vxWorks-around: Some functions are not present or broken in vxWorks
-// but may be patched to life via helper macros...
-
-// Include signal.h which might contain a typo to be corrected here
-#include <signal.h>
-
-#define getpagesize() sysconf(_SC_PAGESIZE) // getpagesize is deprecated anyway!
-#ifndef S_ISSOCK
-# define S_ISSOCK(mode) ((mode & S_IFMT) == S_IFSOCK) // Is file a socket?
-#endif
-#define lstat(p, b) stat(p, b) // lstat() == stat(), as vxWorks has no symlinks!
-#ifndef FPE_FLTINV
-# define FPE_FLTINV (FPE_FLTSUB+1) // vxWorks has no FPE_FLTINV, so define one as a dummy
-#endif
-#if !defined(BUS_ADRALN) && defined(BUS_ADRALNR)
-# define BUS_ADRALN BUS_ADRALNR // Correct a supposed typo in vxWorks' <signal.h>
-#endif
-//typedef int locale_t; // locale_t is a POSIX-extension, currently unpresent in vxWorks!
-
-// #include boilerplate code:
-#include <cutl/details/boost/config/posix_features.hpp>
-
-// vxWorks lies about XSI conformance, there is no nl_types.h:
-#undef BOOST_HAS_NL_TYPES_H
diff --git a/libcutl/cutl/details/boost/config/platform/win32.hpp b/libcutl/cutl/details/boost/config/platform/win32.hpp
deleted file mode 100644
index 6ab59f4..0000000
--- a/libcutl/cutl/details/boost/config/platform/win32.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Bill Kempf 2001.
-// (C) Copyright Aleksey Gurtovoy 2003.
-// (C) Copyright Rene Rivera 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Win32 specific config options:
-
-#define BOOST_PLATFORM "Win32"
-
-// Get the information about the MinGW runtime, i.e. __MINGW32_*VERSION.
-#if defined(__MINGW32__)
-# include <_mingw.h>
-#endif
-
-#if defined(__GNUC__) && !defined(BOOST_NO_SWPRINTF)
-# define BOOST_NO_SWPRINTF
-#endif
-
-// Default defines for BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
-// If a compiler doesn't support __declspec(dllexport)/__declspec(dllimport),
-// its boost/config/compiler/ file must define BOOST_SYMBOL_EXPORT and
-// BOOST_SYMBOL_IMPORT
-#ifndef BOOST_SYMBOL_EXPORT
-# define BOOST_HAS_DECLSPEC
-# define BOOST_SYMBOL_EXPORT __declspec(dllexport)
-# define BOOST_SYMBOL_IMPORT __declspec(dllimport)
-#endif
-
-#if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
-# define BOOST_HAS_STDINT_H
-# ifndef __STDC_LIMIT_MACROS
-# define __STDC_LIMIT_MACROS
-# endif
-# define BOOST_HAS_DIRENT_H
-# define BOOST_HAS_UNISTD_H
-#endif
-
-#if defined(__MINGW32__) && (__GNUC__ >= 4)
-# define BOOST_HAS_EXPM1
-# define BOOST_HAS_LOG1P
-# define BOOST_HAS_GETTIMEOFDAY
-#endif
-//
-// Win32 will normally be using native Win32 threads,
-// but there is a pthread library avaliable as an option,
-// we used to disable this when BOOST_DISABLE_WIN32 was
-// defined but no longer - this should allow some
-// files to be compiled in strict mode - while maintaining
-// a consistent setting of BOOST_HAS_THREADS across
-// all translation units (needed for shared_ptr etc).
-//
-
-#ifdef _WIN32_WCE
-# define BOOST_NO_ANSI_APIS
-#else
-# define BOOST_HAS_GETSYSTEMTIMEASFILETIME
-#endif
-
-#ifndef BOOST_HAS_PTHREADS
-# define BOOST_HAS_WINTHREADS
-#endif
-
-#ifndef BOOST_DISABLE_WIN32
-// WEK: Added
-#define BOOST_HAS_FTIME
-#define BOOST_WINDOWS 1
-
-#endif
diff --git a/libcutl/cutl/details/boost/config/posix_features.hpp b/libcutl/cutl/details/boost/config/posix_features.hpp
deleted file mode 100644
index d129547..0000000
--- a/libcutl/cutl/details/boost/config/posix_features.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-// See http://www.boost.org for most recent version.
-
-// All POSIX feature tests go in this file,
-// Note that we test _POSIX_C_SOURCE and _XOPEN_SOURCE as well
-// _POSIX_VERSION and _XOPEN_VERSION: on some systems POSIX API's
-// may be present but none-functional unless _POSIX_C_SOURCE and
-// _XOPEN_SOURCE have been defined to the right value (it's up
-// to the user to do this *before* including any header, although
-// in most cases the compiler will do this for you).
-
-# if defined(BOOST_HAS_UNISTD_H)
-# include <unistd.h>
-
- // XOpen has <nl_types.h>, but is this the correct version check?
-# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 3)
-# define BOOST_HAS_NL_TYPES_H
-# endif
-
- // POSIX version 6 requires <stdint.h>
-# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 200100)
-# define BOOST_HAS_STDINT_H
-# endif
-
- // POSIX version 2 requires <dirent.h>
-# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199009L)
-# define BOOST_HAS_DIRENT_H
-# endif
-
- // POSIX version 3 requires <signal.h> to have sigaction:
-# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199506L)
-# define BOOST_HAS_SIGACTION
-# endif
- // POSIX defines _POSIX_THREADS > 0 for pthread support,
- // however some platforms define _POSIX_THREADS without
- // a value, hence the (_POSIX_THREADS+0 >= 0) check.
- // Strictly speaking this may catch platforms with a
- // non-functioning stub <pthreads.h>, but such occurrences should
- // occur very rarely if at all.
-# if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_MPTASKS)
-# define BOOST_HAS_PTHREADS
-# endif
-
- // BOOST_HAS_NANOSLEEP:
- // This is predicated on _POSIX_TIMERS or _XOPEN_REALTIME:
-# if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0)) \
- || (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0))
-# define BOOST_HAS_NANOSLEEP
-# endif
-
- // BOOST_HAS_CLOCK_GETTIME:
- // This is predicated on _POSIX_TIMERS (also on _XOPEN_REALTIME
- // but at least one platform - linux - defines that flag without
- // defining clock_gettime):
-# if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0))
-# define BOOST_HAS_CLOCK_GETTIME
-# endif
-
- // BOOST_HAS_SCHED_YIELD:
- // This is predicated on _POSIX_PRIORITY_SCHEDULING or
- // on _POSIX_THREAD_PRIORITY_SCHEDULING or on _XOPEN_REALTIME.
-# if defined(_POSIX_PRIORITY_SCHEDULING) && (_POSIX_PRIORITY_SCHEDULING+0 > 0)\
- || (defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING+0 > 0))\
- || (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0))
-# define BOOST_HAS_SCHED_YIELD
-# endif
-
- // BOOST_HAS_GETTIMEOFDAY:
- // BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE:
- // These are predicated on _XOPEN_VERSION, and appears to be first released
- // in issue 4, version 2 (_XOPEN_VERSION > 500).
- // Likewise for the functions log1p and expm1.
-# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION+0 >= 500)
-# define BOOST_HAS_GETTIMEOFDAY
-# if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE+0 >= 500)
-# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-# endif
-# ifndef BOOST_HAS_LOG1P
-# define BOOST_HAS_LOG1P
-# endif
-# ifndef BOOST_HAS_EXPM1
-# define BOOST_HAS_EXPM1
-# endif
-# endif
-
-# endif
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/requires_threads.hpp b/libcutl/cutl/details/boost/config/requires_threads.hpp
deleted file mode 100644
index 211acdf..0000000
--- a/libcutl/cutl/details/boost/config/requires_threads.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-// (C) Copyright John Maddock 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-#ifndef BOOST_CONFIG_REQUIRES_THREADS_HPP
-#define BOOST_CONFIG_REQUIRES_THREADS_HPP
-
-#ifndef BOOST_CONFIG_HPP
-# include <cutl/details/boost/config.hpp>
-#endif
-
-#if defined(BOOST_DISABLE_THREADS)
-
-//
-// special case to handle versions of gcc which don't currently support threads:
-//
-#if defined(__GNUC__) && ((__GNUC__ < 3) || (__GNUC_MINOR__ <= 3) || !defined(BOOST_STRICT_CONFIG))
-//
-// this is checked up to gcc 3.3:
-//
-#if defined(__sgi) || defined(__hpux)
-# error "Multi-threaded programs are not supported by gcc on HPUX or Irix (last checked with gcc 3.3)"
-#endif
-
-#endif
-
-# error "Threading support unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREADS"
-
-#elif !defined(BOOST_HAS_THREADS)
-
-# if defined __COMO__
-// Comeau C++
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -D_MT (Windows) or -D_REENTRANT (Unix)"
-
-#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
-// Intel
-#ifdef _WIN32
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either /MT /MTd /MD or /MDd"
-#else
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -openmp"
-#endif
-
-# elif defined __GNUC__
-// GNU C++:
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
-
-#elif defined __sgi
-// SGI MIPSpro C++
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -D_SGI_MP_SOURCE"
-
-#elif defined __DECCXX
-// Compaq Tru64 Unix cxx
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread"
-
-#elif defined __BORLANDC__
-// Borland
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -tWM"
-
-#elif defined __MWERKS__
-// Metrowerks CodeWarrior
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either -runtime sm, -runtime smd, -runtime dm, or -runtime dmd"
-
-#elif defined __SUNPRO_CC
-// Sun Workshop Compiler C++
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -mt"
-
-#elif defined __HP_aCC
-// HP aCC
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -mt"
-
-#elif defined(__IBMCPP__)
-// IBM Visual Age
-# error "Compiler threading support is not turned on. Please compile the code with the xlC_r compiler"
-
-#elif defined _MSC_VER
-// Microsoft Visual C++
-//
-// Must remain the last #elif since some other vendors (Metrowerks, for
-// example) also #define _MSC_VER
-# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either /MT /MTd /MD or /MDd"
-
-#else
-
-# error "Compiler threading support is not turned on. Please consult your compiler's documentation for the appropriate options to use"
-
-#endif // compilers
-
-#endif // BOOST_HAS_THREADS
-
-#endif // BOOST_CONFIG_REQUIRES_THREADS_HPP
diff --git a/libcutl/cutl/details/boost/config/select_compiler_config.hpp b/libcutl/cutl/details/boost/config/select_compiler_config.hpp
deleted file mode 100644
index 33c1557..0000000
--- a/libcutl/cutl/details/boost/config/select_compiler_config.hpp
+++ /dev/null
@@ -1,112 +0,0 @@
-// Boost compiler configuration selection header file
-
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Martin Wille 2003.
-// (C) Copyright Guillaume Melquiond 2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/ for most recent version.
-
-// locate which compiler we are using and define
-// BOOST_COMPILER_CONFIG as needed:
-
-#if defined(__GCCXML__)
-// GCC-XML emulates other compilers, it has to appear first here!
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/gcc_xml.hpp"
-
-#elif defined(_CRAYC)
-// EDG based Cray compiler:
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/cray.hpp"
-
-#elif defined __CUDACC__
-// NVIDIA CUDA C++ compiler for GPU
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/nvcc.hpp"
-
-#elif defined __COMO__
-// Comeau C++
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/comeau.hpp"
-
-#elif defined(__PATHSCALE__) && (__PATHCC__ >= 4)
-// PathScale EKOPath compiler (has to come before clang and gcc)
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/pathscale.hpp"
-
-#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
-// Intel
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/intel.hpp"
-
-#elif defined __clang__
-// Clang C++ emulates GCC, so it has to appear early.
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/clang.hpp"
-
-#elif defined __DMC__
-// Digital Mars C++
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/digitalmars.hpp"
-
-# elif defined __GNUC__
-// GNU C++:
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/gcc.hpp"
-
-#elif defined __KCC
-// Kai C++
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/kai.hpp"
-
-#elif defined __sgi
-// SGI MIPSpro C++
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/sgi_mipspro.hpp"
-
-#elif defined __DECCXX
-// Compaq Tru64 Unix cxx
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/compaq_cxx.hpp"
-
-#elif defined __ghs
-// Greenhills C++
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/greenhills.hpp"
-
-#elif defined __CODEGEARC__
-// CodeGear - must be checked for before Borland
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/codegear.hpp"
-
-#elif defined __BORLANDC__
-// Borland
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/borland.hpp"
-
-#elif defined __MWERKS__
-// Metrowerks CodeWarrior
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/metrowerks.hpp"
-
-#elif defined __SUNPRO_CC
-// Sun Workshop Compiler C++
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/sunpro_cc.hpp"
-
-#elif defined __HP_aCC
-// HP aCC
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/hp_acc.hpp"
-
-#elif defined(__MRC__) || defined(__SC__)
-// MPW MrCpp or SCpp
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/mpw.hpp"
-
-#elif defined(__IBMCPP__)
-// IBM Visual Age
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/vacpp.hpp"
-
-#elif defined(__PGI)
-// Portland Group Inc.
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/pgi.hpp"
-
-#elif defined _MSC_VER
-// Microsoft Visual C++
-//
-// Must remain the last #elif since some other vendors (Metrowerks, for
-// example) also #define _MSC_VER
-# define BOOST_COMPILER_CONFIG "cutl/details/boost/config/compiler/visualc.hpp"
-
-#elif defined (BOOST_ASSERT_CONFIG)
-// this must come last - generate an error if we don't
-// recognise the compiler:
-# error "Unknown compiler - please configure (http://www.boost.org/libs/config/config.htm#configuring) and report the results to the main boost mailing list (http://www.boost.org/more/mailing_lists.htm#main)"
-
-#endif
diff --git a/libcutl/cutl/details/boost/config/select_platform_config.hpp b/libcutl/cutl/details/boost/config/select_platform_config.hpp
deleted file mode 100644
index 797827a..0000000
--- a/libcutl/cutl/details/boost/config/select_platform_config.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-// Boost compiler configuration selection header file
-
-// (C) Copyright John Maddock 2001 - 2002.
-// (C) Copyright Jens Maurer 2001.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// locate which platform we are on and define BOOST_PLATFORM_CONFIG as needed.
-// Note that we define the headers to include using "header_name" not
-// <header_name> in order to prevent macro expansion within the header
-// name (for example "linux" is a macro on linux systems).
-
-#if (defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)) && !defined(_CRAYC)
-// linux, also other platforms (Hurd etc) that use GLIBC, should these really have their own config headers though?
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/linux.hpp"
-
-#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-// BSD:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/bsd.hpp"
-
-#elif defined(sun) || defined(__sun)
-// solaris:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/solaris.hpp"
-
-#elif defined(__sgi)
-// SGI Irix:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/irix.hpp"
-
-#elif defined(__hpux)
-// hp unix:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/hpux.hpp"
-
-#elif defined(__CYGWIN__)
-// cygwin is not win32:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/cygwin.hpp"
-
-#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
-// win32:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/win32.hpp"
-
-#elif defined(__BEOS__)
-// BeOS
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/beos.hpp"
-
-#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
-// MacOS
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/macos.hpp"
-
-#elif defined(__IBMCPP__) || defined(_AIX)
-// IBM
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/aix.hpp"
-
-#elif defined(__amigaos__)
-// AmigaOS
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/amigaos.hpp"
-
-#elif defined(__QNXNTO__)
-// QNX:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/qnxnto.hpp"
-
-#elif defined(__VXWORKS__)
-// vxWorks:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/vxworks.hpp"
-
-#elif defined(__SYMBIAN32__)
-// Symbian:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/symbian.hpp"
-
-#elif defined(_CRAYC)
-// Cray:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/cray.hpp"
-
-#elif defined(__VMS)
-// VMS:
-# define BOOST_PLATFORM_CONFIG "cutl/details/boost/config/platform/vms.hpp"
-#else
-
-# if defined(unix) \
- || defined(__unix) \
- || defined(_XOPEN_SOURCE) \
- || defined(_POSIX_SOURCE)
-
- // generic unix platform:
-
-# ifndef BOOST_HAS_UNISTD_H
-# define BOOST_HAS_UNISTD_H
-# endif
-
-# include <cutl/details/boost/config/posix_features.hpp>
-
-# endif
-
-# if defined (BOOST_ASSERT_CONFIG)
- // this must come last - generate an error if we don't
- // recognise the platform:
-# error "Unknown platform - please configure and report the results to boost.org"
-# endif
-
-#endif
-
-
-
diff --git a/libcutl/cutl/details/boost/config/select_stdlib_config.hpp b/libcutl/cutl/details/boost/config/select_stdlib_config.hpp
deleted file mode 100644
index 8bfdf1e..0000000
--- a/libcutl/cutl/details/boost/config/select_stdlib_config.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-// Boost compiler configuration selection header file
-
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001 - 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-// See http://www.boost.org for most recent version.
-
-// locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed:
-
-// First include <cstddef> to determine if some version of STLport is in use as the std lib
-// (do not rely on this header being included since users can short-circuit this header
-// if they know whose std lib they are using.)
-#ifdef __cplusplus
-# include <cstddef>
-#else
-# include <stddef.h>
-#endif
-
-#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
-// STLPort library; this _must_ come first, otherwise since
-// STLport typically sits on top of some other library, we
-// can end up detecting that first rather than STLport:
-# define BOOST_STDLIB_CONFIG "cutl/details/boost/config/stdlib/stlport.hpp"
-
-#else
-
-// If our std lib was not some version of STLport, then include <utility> as it is about
-// the smallest of the std lib headers that includes real C++ stuff. (Some std libs do not
-// include their C++-related macros in <cstddef> so this additional include makes sure
-// we get those definitions)
-// (again do not rely on this header being included since users can short-circuit this
-// header if they know whose std lib they are using.)
-#include <cutl/details/boost/config/no_tr1/utility.hpp>
-
-#if defined(__LIBCOMO__)
-// Comeau STL:
-#define BOOST_STDLIB_CONFIG "cutl/details/boost/config/stdlib/libcomo.hpp"
-
-#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
-// Rogue Wave library:
-# define BOOST_STDLIB_CONFIG "cutl/details/boost/config/stdlib/roguewave.hpp"
-
-#elif defined(_LIBCPP_VERSION)
-// libc++
-# define BOOST_STDLIB_CONFIG "cutl/details/boost/config/stdlib/libcpp.hpp"
-
-#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
-// GNU libstdc++ 3
-# define BOOST_STDLIB_CONFIG "cutl/details/boost/config/stdlib/libstdcpp3.hpp"
-
-#elif defined(__STL_CONFIG_H)
-// generic SGI STL
-# define BOOST_STDLIB_CONFIG "cutl/details/boost/config/stdlib/sgi.hpp"
-
-#elif defined(__MSL_CPP__)
-// MSL standard lib:
-# define BOOST_STDLIB_CONFIG "cutl/details/boost/config/stdlib/msl.hpp"
-
-#elif defined(__IBMCPP__)
-// take the default VACPP std lib
-# define BOOST_STDLIB_CONFIG "cutl/details/boost/config/stdlib/vacpp.hpp"
-
-#elif defined(MSIPL_COMPILE_H)
-// Modena C++ standard library
-# define BOOST_STDLIB_CONFIG "cutl/details/boost/config/stdlib/modena.hpp"
-
-#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
-// Dinkumware Library (this has to appear after any possible replacement libraries):
-# define BOOST_STDLIB_CONFIG "cutl/details/boost/config/stdlib/dinkumware.hpp"
-
-#elif defined (BOOST_ASSERT_CONFIG)
-// this must come last - generate an error if we don't
-// recognise the library:
-# error "Unknown standard library - please configure and report the results to boost.org"
-
-#endif
-
-#endif
-
-
-
diff --git a/libcutl/cutl/details/boost/config/stdlib/dinkumware.hpp b/libcutl/cutl/details/boost/config/stdlib/dinkumware.hpp
deleted file mode 100644
index db1fcb0..0000000
--- a/libcutl/cutl/details/boost/config/stdlib/dinkumware.hpp
+++ /dev/null
@@ -1,155 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001.
-// (C) Copyright Peter Dimov 2001.
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Guillaume Melquiond 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Dinkumware standard library config:
-
-#if !defined(_YVALS) && !defined(_CPPLIB_VER)
-#include <cutl/details/boost/config/no_tr1/utility.hpp>
-#if !defined(_YVALS) && !defined(_CPPLIB_VER)
-#error This is not the Dinkumware lib!
-#endif
-#endif
-
-
-#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306)
- // full dinkumware 3.06 and above
- // fully conforming provided the compiler supports it:
-# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(__BORLANDC__) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h
-# define BOOST_NO_STDC_NAMESPACE
-# endif
-# if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC)
-# define BOOST_NO_STD_ALLOCATOR
-# endif
-# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
-# if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
- // if this lib version is set up for vc6 then there is no std::use_facet:
-# define BOOST_NO_STD_USE_FACET
-# define BOOST_HAS_TWO_ARG_USE_FACET
- // C lib functions aren't in namespace std either:
-# define BOOST_NO_STDC_NAMESPACE
- // and nor is <exception>
-# define BOOST_NO_EXCEPTION_STD_NAMESPACE
-# endif
-// There's no numeric_limits<long long> support unless _LONGLONG is defined:
-# if !defined(_LONGLONG) && (_CPPLIB_VER <= 310)
-# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
-# endif
-// 3.06 appears to have (non-sgi versions of) <hash_set> & <hash_map>,
-// and no <slist> at all
-#else
-# define BOOST_MSVC_STD_ITERATOR 1
-# define BOOST_NO_STD_ITERATOR
-# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
-# define BOOST_NO_STD_ALLOCATOR
-# define BOOST_NO_STDC_NAMESPACE
-# define BOOST_NO_STD_USE_FACET
-# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
-# define BOOST_HAS_MACRO_USE_FACET
-# ifndef _CPPLIB_VER
- // Updated Dinkum library defines this, and provides
- // its own min and max definitions, as does MTA version.
-# ifndef __MTA__
-# define BOOST_NO_STD_MIN_MAX
-# endif
-# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
-# endif
-#endif
-
-//
-// std extension namespace is stdext for vc7.1 and later,
-// the same applies to other compilers that sit on top
-// of vc7.1 (Intel and Comeau):
-//
-#if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(__BORLANDC__)
-# define BOOST_STD_EXTENSION_NAMESPACE stdext
-#endif
-
-
-#if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(__BORLANDC__)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306)
- // if we're using a dinkum lib that's
- // been configured for VC6/7 then there is
- // no iterator traits (true even for icl)
-# define BOOST_NO_STD_ITERATOR_TRAITS
-#endif
-
-#if defined(__ICL) && (__ICL < 800) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310)
-// Intel C++ chokes over any non-trivial use of <locale>
-// this may be an overly restrictive define, but regex fails without it:
-# define BOOST_NO_STD_LOCALE
-#endif
-
-#include <typeinfo>
-#if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__)
-# define BOOST_NO_STD_TYPEINFO
-#endif
-
-// C++0x headers implemented in 520 (as shipped by Microsoft)
-//
-#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520
-# define BOOST_NO_CXX11_HDR_ARRAY
-# define BOOST_NO_CXX11_HDR_CODECVT
-# define BOOST_NO_CXX11_HDR_FORWARD_LIST
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_HDR_RANDOM
-# define BOOST_NO_CXX11_HDR_REGEX
-# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-# define BOOST_NO_CXX11_HDR_UNORDERED_SET
-# define BOOST_NO_CXX11_HDR_TUPLE
-# define BOOST_NO_CXX11_HDR_TYPEINDEX
-# define BOOST_NO_CXX11_HDR_FUNCTIONAL
-# define BOOST_NO_CXX11_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_SMART_PTR
-#endif
-
-#if (!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE)
-# define BOOST_NO_CXX11_HDR_TUPLE
-#endif
-
-// C++0x headers implemented in 540 (as shipped by Microsoft)
-//
-#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 540
-# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_MUTEX
-# define BOOST_NO_CXX11_HDR_RATIO
-# define BOOST_NO_CXX11_HDR_THREAD
-# define BOOST_NO_CXX11_ALLOCATOR
-# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-#endif
-
-//
-// C++0x headers not yet (fully) implemented:
-//
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-
-#ifdef _CPPLIB_VER
-# define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER
-#else
-# define BOOST_DINKUMWARE_STDLIB 1
-#endif
-
-#ifdef _CPPLIB_VER
-# define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER)
-#else
-# define BOOST_STDLIB "Dinkumware standard library version 1.x"
-#endif
-
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/stdlib/libcomo.hpp b/libcutl/cutl/details/boost/config/stdlib/libcomo.hpp
deleted file mode 100644
index cb4836d..0000000
--- a/libcutl/cutl/details/boost/config/stdlib/libcomo.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// (C) Copyright John Maddock 2002 - 2003.
-// (C) Copyright Jens Maurer 2002 - 2003.
-// (C) Copyright Beman Dawes 2002 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Comeau STL:
-
-#if !defined(__LIBCOMO__)
-# include <cutl/details/boost/config/no_tr1/utility.hpp>
-# if !defined(__LIBCOMO__)
-# error "This is not the Comeau STL!"
-# endif
-#endif
-
-//
-// std::streambuf<wchar_t> is non-standard
-// NOTE: versions of libcomo prior to beta28 have octal version numbering,
-// e.g. version 25 is 21 (dec)
-#if __LIBCOMO_VERSION__ <= 22
-# define BOOST_NO_STD_WSTREAMBUF
-#endif
-
-#if (__LIBCOMO_VERSION__ <= 31) && defined(_WIN32)
-#define BOOST_NO_SWPRINTF
-#endif
-
-#if __LIBCOMO_VERSION__ >= 31
-# define BOOST_HAS_HASH
-# define BOOST_HAS_SLIST
-#endif
-
-// C++0x headers not yet implemented
-//
-# define BOOST_NO_CXX11_HDR_ARRAY
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_HDR_CODECVT
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_FORWARD_LIST
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_HDR_MUTEX
-# define BOOST_NO_CXX11_HDR_RANDOM
-# define BOOST_NO_CXX11_HDR_RATIO
-# define BOOST_NO_CXX11_HDR_REGEX
-# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-# define BOOST_NO_CXX11_HDR_THREAD
-# define BOOST_NO_CXX11_HDR_TUPLE
-# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-# define BOOST_NO_CXX11_HDR_TYPEINDEX
-# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-# define BOOST_NO_CXX11_HDR_UNORDERED_SET
-# define BOOST_NO_CXX11_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_ALLOCATOR
-# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-# define BOOST_NO_CXX11_SMART_PTR
-# define BOOST_NO_CXX11_HDR_FUNCTIONAL
-
-//
-// Intrinsic type_traits support.
-// The SGI STL has it's own __type_traits class, which
-// has intrinsic compiler support with SGI's compilers.
-// Whatever map SGI style type traits to boost equivalents:
-//
-#define BOOST_HAS_SGI_TYPE_TRAITS
-
-#define BOOST_STDLIB "Comeau standard library " BOOST_STRINGIZE(__LIBCOMO_VERSION__)
-
-
diff --git a/libcutl/cutl/details/boost/config/stdlib/libcpp.hpp b/libcutl/cutl/details/boost/config/stdlib/libcpp.hpp
deleted file mode 100644
index 3d57440..0000000
--- a/libcutl/cutl/details/boost/config/stdlib/libcpp.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// (C) Copyright Christopher Jefferson 2011.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// config for libc++
-// Might need more in here later.
-
-#if !defined(_LIBCPP_VERSION)
-# include <ciso646>
-# if !defined(_LIBCPP_VERSION)
-# error "This is not libc++!"
-# endif
-#endif
-
-#define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
-
-#define BOOST_HAS_THREADS
-
-#ifdef _LIBCPP_HAS_NO_VARIADICS
-# define BOOST_NO_CXX11_HDR_TUPLE
-#endif
-
-//
-// These appear to be unusable/incomplete so far:
-//
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-
-// libc++ uses a non-standard messages_base
-#define BOOST_NO_STD_MESSAGES
-
-// --- end ---
diff --git a/libcutl/cutl/details/boost/config/stdlib/libstdcpp3.hpp b/libcutl/cutl/details/boost/config/stdlib/libstdcpp3.hpp
deleted file mode 100644
index 2daa698..0000000
--- a/libcutl/cutl/details/boost/config/stdlib/libstdcpp3.hpp
+++ /dev/null
@@ -1,170 +0,0 @@
-// (C) Copyright John Maddock 2001.
-// (C) Copyright Jens Maurer 2001.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// config for libstdc++ v3
-// not much to go in here:
-
-#define BOOST_GNU_STDLIB 1
-
-#ifdef __GLIBCXX__
-#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)
-#else
-#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__)
-#endif
-
-#if !defined(_GLIBCPP_USE_WCHAR_T) && !defined(_GLIBCXX_USE_WCHAR_T)
-# define BOOST_NO_CWCHAR
-# define BOOST_NO_CWCTYPE
-# define BOOST_NO_STD_WSTRING
-# define BOOST_NO_STD_WSTREAMBUF
-#endif
-
-#if defined(__osf__) && !defined(_REENTRANT) \
- && ( defined(_GLIBCXX_HAVE_GTHR_DEFAULT) || defined(_GLIBCPP_HAVE_GTHR_DEFAULT) )
-// GCC 3 on Tru64 forces the definition of _REENTRANT when any std lib header
-// file is included, therefore for consistency we define it here as well.
-# define _REENTRANT
-#endif
-
-#ifdef __GLIBCXX__ // gcc 3.4 and greater:
-# if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
- || defined(_GLIBCXX__PTHREADS) \
- || defined(_GLIBCXX_HAS_GTHREADS) \
- || defined(_WIN32) \
- || defined(_AIX)
- //
- // If the std lib has thread support turned on, then turn it on in Boost
- // as well. We do this because some gcc-3.4 std lib headers define _REENTANT
- // while others do not...
- //
-# define BOOST_HAS_THREADS
-# else
-# ifndef BOOST_DISABLE_THREADS
-# define BOOST_DISABLE_THREADS
-# endif
-# endif
-#elif defined(__GLIBCPP__) \
- && !defined(_GLIBCPP_HAVE_GTHR_DEFAULT) \
- && !defined(_GLIBCPP__PTHREADS)
- // disable thread support if the std lib was built single threaded:
-# ifndef BOOST_DISABLE_THREADS
-# define BOOST_DISABLE_THREADS
-# endif
-#endif
-
-#if (defined(linux) || defined(__linux) || defined(__linux__)) && defined(__arm__) && defined(_GLIBCPP_HAVE_GTHR_DEFAULT)
-// linux on arm apparently doesn't define _REENTRANT
-// so just turn on threading support whenever the std lib is thread safe:
-# define BOOST_HAS_THREADS
-#endif
-
-#if !defined(_GLIBCPP_USE_LONG_LONG) \
- && !defined(_GLIBCXX_USE_LONG_LONG)\
- && defined(BOOST_HAS_LONG_LONG)
-// May have been set by compiler/*.hpp, but "long long" without library
-// support is useless.
-# undef BOOST_HAS_LONG_LONG
-#endif
-
-// Apple doesn't seem to reliably defined a *unix* macro
-#if !defined(CYGWIN) && ( defined(__unix__) \
- || defined(__unix) \
- || defined(unix) \
- || defined(__APPLE__) \
- || defined(__APPLE) \
- || defined(APPLE))
-# include <unistd.h>
-#endif
-
-#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
-# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
-# define BOOST_HAS_SLIST
-# define BOOST_HAS_HASH
-# define BOOST_SLIST_HEADER <ext/slist>
-# if !defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
-# define BOOST_HASH_SET_HEADER <ext/hash_set>
-# define BOOST_HASH_MAP_HEADER <ext/hash_map>
-# else
-# define BOOST_HASH_SET_HEADER <backward/hash_set>
-# define BOOST_HASH_MAP_HEADER <backward/hash_map>
-# endif
-#endif
-
-// stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly
-// __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the stdlibc++
-// developers. He also commented:
-//
-// "I'm not sure how useful __GLIBCXX__ is for your purposes, for instance in
-// GCC 4.2.4 it is set to 20080519 but in GCC 4.3.0 it is set to 20080305.
-// Although 4.3.0 was released earlier than 4.2.4, it has better C++0x support
-// than any release in the 4.2 series."
-//
-// Another resource for understanding stdlibc++ features is:
-// http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#manual.intro.status.standard.200x
-
-// C++0x headers in GCC 4.3.0 and later
-//
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_CXX11_HDR_ARRAY
-# define BOOST_NO_CXX11_HDR_REGEX
-# define BOOST_NO_CXX11_HDR_TUPLE
-# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-# define BOOST_NO_CXX11_HDR_UNORDERED_SET
-# define BOOST_NO_CXX11_HDR_FUNCTIONAL
-#endif
-
-// C++0x headers in GCC 4.4.0 and later
-//
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_FORWARD_LIST
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_HDR_MUTEX
-# define BOOST_NO_CXX11_HDR_RATIO
-# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-# define BOOST_NO_CXX11_SMART_PTR
-#else
-# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
-# define BOOST_HAS_TR1_COMPLEX_OVERLOADS
-#endif
-
-#if (!defined(_GLIBCXX_HAS_GTHREADS) || !defined(_GLIBCXX_USE_C99_STDINT_TR1)) && (!defined(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE) || !defined(BOOST_NO_CXX11_HDR_MUTEX))
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_MUTEX
-#endif
-
-// C++0x features in GCC 4.5.0 and later
-//
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_CXX11_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_RANDOM
-#endif
-
-// C++0x features in GCC 4.6.0 and later
-//
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_CXX11_HDR_TYPEINDEX
-#endif
-
-// C++0x features in GCC 4.7.0 and later
-//
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-// Note that although <chrono> existed prior to 4.7, "stead_clock" is spelled "monotonic_clock"
-// so 4.7.0 is the first truely conforming one.
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_ALLOCATOR
-#endif
-// C++0x headers not yet (fully!) implemented
-//
-# define BOOST_NO_CXX11_HDR_THREAD
-# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-# define BOOST_NO_CXX11_HDR_CODECVT
-# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-
-// --- end ---
diff --git a/libcutl/cutl/details/boost/config/stdlib/modena.hpp b/libcutl/cutl/details/boost/config/stdlib/modena.hpp
deleted file mode 100644
index fed0925..0000000
--- a/libcutl/cutl/details/boost/config/stdlib/modena.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// (C) Copyright Jens Maurer 2001.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Modena C++ standard library (comes with KAI C++)
-
-#if !defined(MSIPL_COMPILE_H)
-# include <cutl/details/boost/config/no_tr1/utility.hpp>
-# if !defined(__MSIPL_COMPILE_H)
-# error "This is not the Modena C++ library!"
-# endif
-#endif
-
-#ifndef MSIPL_NL_TYPES
-#define BOOST_NO_STD_MESSAGES
-#endif
-
-#ifndef MSIPL_WCHART
-#define BOOST_NO_STD_WSTRING
-#endif
-
-// C++0x headers not yet implemented
-//
-# define BOOST_NO_CXX11_HDR_ARRAY
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_HDR_CODECVT
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_FORWARD_LIST
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_HDR_MUTEX
-# define BOOST_NO_CXX11_HDR_RANDOM
-# define BOOST_NO_CXX11_HDR_RATIO
-# define BOOST_NO_CXX11_HDR_REGEX
-# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-# define BOOST_NO_CXX11_HDR_THREAD
-# define BOOST_NO_CXX11_HDR_TUPLE
-# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-# define BOOST_NO_CXX11_HDR_TYPEINDEX
-# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-# define BOOST_NO_CXX11_HDR_UNORDERED_SET
-# define BOOST_NO_CXX11_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_ALLOCATOR
-# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-# define BOOST_NO_CXX11_SMART_PTR
-# define BOOST_NO_CXX11_HDR_FUNCTIONAL
-
-#define BOOST_STDLIB "Modena C++ standard library"
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/stdlib/msl.hpp b/libcutl/cutl/details/boost/config/stdlib/msl.hpp
deleted file mode 100644
index cfae969..0000000
--- a/libcutl/cutl/details/boost/config/stdlib/msl.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// (C) Copyright John Maddock 2001.
-// (C) Copyright Darin Adler 2001.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Metrowerks standard library:
-
-#ifndef __MSL_CPP__
-# include <cutl/details/boost/config/no_tr1/utility.hpp>
-# ifndef __MSL_CPP__
-# error This is not the MSL standard library!
-# endif
-#endif
-
-#if __MSL_CPP__ >= 0x6000 // Pro 6
-# define BOOST_HAS_HASH
-# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks
-#endif
-#define BOOST_HAS_SLIST
-
-#if __MSL_CPP__ < 0x6209
-# define BOOST_NO_STD_MESSAGES
-#endif
-
-// check C lib version for <stdint.h>
-#include <cstddef>
-
-#if defined(__MSL__) && (__MSL__ >= 0x5000)
-# define BOOST_HAS_STDINT_H
-# if !defined(__PALMOS_TRAPS__)
-# define BOOST_HAS_UNISTD_H
-# endif
- // boilerplate code:
-# include <cutl/details/boost/config/posix_features.hpp>
-#endif
-
-#if defined(_MWMT) || _MSL_THREADSAFE
-# define BOOST_HAS_THREADS
-#endif
-
-#ifdef _MSL_NO_EXPLICIT_FUNC_TEMPLATE_ARG
-# define BOOST_NO_STD_USE_FACET
-# define BOOST_HAS_TWO_ARG_USE_FACET
-#endif
-
-// C++0x headers not yet implemented
-//
-# define BOOST_NO_CXX11_HDR_ARRAY
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_HDR_CODECVT
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_FORWARD_LIST
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_HDR_MUTEX
-# define BOOST_NO_CXX11_HDR_RANDOM
-# define BOOST_NO_CXX11_HDR_RATIO
-# define BOOST_NO_CXX11_HDR_REGEX
-# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-# define BOOST_NO_CXX11_HDR_THREAD
-# define BOOST_NO_CXX11_HDR_TUPLE
-# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-# define BOOST_NO_CXX11_HDR_TYPEINDEX
-# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-# define BOOST_NO_CXX11_HDR_UNORDERED_SET
-# define BOOST_NO_CXX11_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_ALLOCATOR
-# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-# define BOOST_NO_CXX11_SMART_PTR
-# define BOOST_NO_CXX11_HDR_FUNCTIONAL
-
-#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)
-
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/stdlib/roguewave.hpp b/libcutl/cutl/details/boost/config/stdlib/roguewave.hpp
deleted file mode 100644
index 5cb6c97..0000000
--- a/libcutl/cutl/details/boost/config/stdlib/roguewave.hpp
+++ /dev/null
@@ -1,186 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001.
-// (C) Copyright David Abrahams 2003.
-// (C) Copyright Boris Gubenko 2007.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// Rogue Wave std lib:
-
-#define BOOST_RW_STDLIB 1
-
-#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
-# include <cutl/details/boost/config/no_tr1/utility.hpp>
-# if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
-# error This is not the Rogue Wave standard library
-# endif
-#endif
-//
-// figure out a consistent version number:
-//
-#ifndef _RWSTD_VER
-# define BOOST_RWSTD_VER 0x010000
-#elif _RWSTD_VER < 0x010000
-# define BOOST_RWSTD_VER (_RWSTD_VER << 8)
-#else
-# define BOOST_RWSTD_VER _RWSTD_VER
-#endif
-
-#ifndef _RWSTD_VER
-# define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
-#elif _RWSTD_VER < 0x04010200
- # define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
-#else
-# ifdef _RWSTD_VER_STR
-# define BOOST_STDLIB "Apache STDCXX standard library version " _RWSTD_VER_STR
-# else
-# define BOOST_STDLIB "Apache STDCXX standard library version " BOOST_STRINGIZE(_RWSTD_VER)
-# endif
-#endif
-
-//
-// Prior to version 2.2.0 the primary template for std::numeric_limits
-// does not have compile time constants, even though specializations of that
-// template do:
-//
-#if BOOST_RWSTD_VER < 0x020200
-# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
-#endif
-
-// Sun CC 5.5 patch 113817-07 adds long long specialization, but does not change the
-// library version number (http://sunsolve6.sun.com/search/document.do?assetkey=1-21-113817):
-#if BOOST_RWSTD_VER <= 0x020101 && (!defined(__SUNPRO_CC) || (__SUNPRO_CC < 0x550))
-# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
-# endif
-
-//
-// Borland version of numeric_limits lacks __int64 specialisation:
-//
-#ifdef __BORLANDC__
-# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
-#endif
-
-//
-// No std::iterator if it can't figure out default template args:
-//
-#if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
-# define BOOST_NO_STD_ITERATOR
-#endif
-
-//
-// No iterator traits without partial specialization:
-//
-#if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
-# define BOOST_NO_STD_ITERATOR_TRAITS
-#endif
-
-//
-// Prior to version 2.0, std::auto_ptr was buggy, and there were no
-// new-style iostreams, and no conformant std::allocator:
-//
-#if (BOOST_RWSTD_VER < 0x020000)
-# define BOOST_NO_AUTO_PTR
-# define BOOST_NO_STRINGSTREAM
-# define BOOST_NO_STD_ALLOCATOR
-# define BOOST_NO_STD_LOCALE
-#endif
-
-//
-// No template iterator constructors without member template support:
-//
-#if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES)
-# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
-#endif
-
-//
-// RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
-// (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
-// on HP aCC systems even though the allocator is in fact broken):
-//
-#if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100)
-# define BOOST_NO_STD_ALLOCATOR
-#endif
-
-//
-// If we have a std::locale, we still may not have std::use_facet:
-//
-#if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
-# define BOOST_NO_STD_USE_FACET
-# define BOOST_HAS_TWO_ARG_USE_FACET
-#endif
-
-//
-// There's no std::distance prior to version 2, or without
-// partial specialization support:
-//
-#if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
- #define BOOST_NO_STD_DISTANCE
-#endif
-
-//
-// Some versions of the rogue wave library don't have assignable
-// OutputIterators:
-//
-#if BOOST_RWSTD_VER < 0x020100
-# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
-#endif
-
-//
-// Disable BOOST_HAS_LONG_LONG when the library has no support for it.
-//
-#if !defined(_RWSTD_LONG_LONG) && defined(BOOST_HAS_LONG_LONG)
-# undef BOOST_HAS_LONG_LONG
-#endif
-
-//
-// check that on HP-UX, the proper RW library is used
-//
-#if defined(__HP_aCC) && !defined(_HP_NAMESPACE_STD)
-# error "Boost requires Standard RW library. Please compile and link with -AA"
-#endif
-
-//
-// Define macros specific to RW V2.2 on HP-UX
-//
-#if defined(__HP_aCC) && (BOOST_RWSTD_VER == 0x02020100)
-# ifndef __HP_TC1_MAKE_PAIR
-# define __HP_TC1_MAKE_PAIR
-# endif
-# ifndef _HP_INSTANTIATE_STD2_VL
-# define _HP_INSTANTIATE_STD2_VL
-# endif
-#endif
-
-#if _RWSTD_VER < 0x05000000
-# define BOOST_NO_CXX11_HDR_ARRAY
-#endif
-// type_traits header is incomplete:
-# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-//
-// C++0x headers not yet implemented
-//
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_HDR_CODECVT
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_FORWARD_LIST
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_HDR_MUTEX
-# define BOOST_NO_CXX11_HDR_RANDOM
-# define BOOST_NO_CXX11_HDR_RATIO
-# define BOOST_NO_CXX11_HDR_REGEX
-# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-# define BOOST_NO_CXX11_HDR_THREAD
-# define BOOST_NO_CXX11_HDR_TUPLE
-# define BOOST_NO_CXX11_HDR_TYPEINDEX
-# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-# define BOOST_NO_CXX11_HDR_UNORDERED_SET
-# define BOOST_NO_CXX11_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_ALLOCATOR
-# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-# define BOOST_NO_CXX11_SMART_PTR
-# define BOOST_NO_CXX11_HDR_FUNCTIONAL
-
diff --git a/libcutl/cutl/details/boost/config/stdlib/sgi.hpp b/libcutl/cutl/details/boost/config/stdlib/sgi.hpp
deleted file mode 100644
index 2d44913..0000000
--- a/libcutl/cutl/details/boost/config/stdlib/sgi.hpp
+++ /dev/null
@@ -1,148 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Darin Adler 2001.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// generic SGI STL:
-
-#if !defined(__STL_CONFIG_H)
-# include <cutl/details/boost/config/no_tr1/utility.hpp>
-# if !defined(__STL_CONFIG_H)
-# error "This is not the SGI STL!"
-# endif
-#endif
-
-//
-// No std::iterator traits without partial specialisation:
-//
-#if !defined(__STL_CLASS_PARTIAL_SPECIALIZATION)
-# define BOOST_NO_STD_ITERATOR_TRAITS
-#endif
-
-//
-// No std::stringstream with gcc < 3
-//
-#if defined(__GNUC__) && (__GNUC__ < 3) && \
- ((__GNUC_MINOR__ < 95) || (__GNUC_MINOR__ == 96)) && \
- !defined(__STL_USE_NEW_IOSTREAMS) || \
- defined(__APPLE_CC__)
- // Note that we only set this for GNU C++ prior to 2.95 since the
- // latest patches for that release do contain a minimal <sstream>
- // If you are running a 2.95 release prior to 2.95.3 then this will need
- // setting, but there is no way to detect that automatically (other
- // than by running the configure script).
- // Also, the unofficial GNU C++ 2.96 included in RedHat 7.1 doesn't
- // have <sstream>.
-# define BOOST_NO_STRINGSTREAM
-#endif
-
-// Apple doesn't seem to reliably defined a *unix* macro
-#if !defined(CYGWIN) && ( defined(__unix__) \
- || defined(__unix) \
- || defined(unix) \
- || defined(__APPLE__) \
- || defined(__APPLE) \
- || defined(APPLE))
-# include <unistd.h>
-#endif
-
-
-//
-// Assume no std::locale without own iostreams (this may be an
-// incorrect assumption in some cases):
-//
-#if !defined(__SGI_STL_OWN_IOSTREAMS) && !defined(__STL_USE_NEW_IOSTREAMS)
-# define BOOST_NO_STD_LOCALE
-#endif
-
-//
-// Original native SGI streams have non-standard std::messages facet:
-//
-#if defined(__sgi) && (_COMPILER_VERSION <= 650) && !defined(__SGI_STL_OWN_IOSTREAMS)
-# define BOOST_NO_STD_LOCALE
-#endif
-
-//
-// SGI's new iostreams have missing "const" in messages<>::open
-//
-#if defined(__sgi) && (_COMPILER_VERSION <= 740) && defined(__STL_USE_NEW_IOSTREAMS)
-# define BOOST_NO_STD_MESSAGES
-#endif
-
-//
-// No template iterator constructors, or std::allocator
-// without member templates:
-//
-#if !defined(__STL_MEMBER_TEMPLATES)
-# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
-# define BOOST_NO_STD_ALLOCATOR
-#endif
-
-//
-// We always have SGI style hash_set, hash_map, and slist:
-//
-#define BOOST_HAS_HASH
-#define BOOST_HAS_SLIST
-
-//
-// If this is GNU libstdc++2, then no <limits> and no std::wstring:
-//
-#if (defined(__GNUC__) && (__GNUC__ < 3))
-# include <string>
-# if defined(__BASTRING__)
-# define BOOST_NO_LIMITS
-// Note: <cutl/details/boost/limits.hpp> will provide compile-time constants
-# undef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
-# define BOOST_NO_STD_WSTRING
-# endif
-#endif
-
-//
-// There is no standard iterator unless we have namespace support:
-//
-#if !defined(__STL_USE_NAMESPACES)
-# define BOOST_NO_STD_ITERATOR
-#endif
-
-//
-// Intrinsic type_traits support.
-// The SGI STL has it's own __type_traits class, which
-// has intrinsic compiler support with SGI's compilers.
-// Whatever map SGI style type traits to boost equivalents:
-//
-#define BOOST_HAS_SGI_TYPE_TRAITS
-
-// C++0x headers not yet implemented
-//
-# define BOOST_NO_CXX11_HDR_ARRAY
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_HDR_CODECVT
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_FORWARD_LIST
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_HDR_MUTEX
-# define BOOST_NO_CXX11_HDR_RANDOM
-# define BOOST_NO_CXX11_HDR_RATIO
-# define BOOST_NO_CXX11_HDR_REGEX
-# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-# define BOOST_NO_CXX11_HDR_THREAD
-# define BOOST_NO_CXX11_HDR_TUPLE
-# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-# define BOOST_NO_CXX11_HDR_TYPEINDEX
-# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-# define BOOST_NO_CXX11_HDR_UNORDERED_SET
-# define BOOST_NO_CXX11_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_ALLOCATOR
-# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-# define BOOST_NO_CXX11_SMART_PTR
-# define BOOST_NO_CXX11_HDR_FUNCTIONAL
-
-#define BOOST_STDLIB "SGI standard library"
-
-
-
diff --git a/libcutl/cutl/details/boost/config/stdlib/stlport.hpp b/libcutl/cutl/details/boost/config/stdlib/stlport.hpp
deleted file mode 100644
index ed51fc4..0000000
--- a/libcutl/cutl/details/boost/config/stdlib/stlport.hpp
+++ /dev/null
@@ -1,243 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2002.
-// (C) Copyright Darin Adler 2001.
-// (C) Copyright Jens Maurer 2001.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-// STLPort standard library config:
-
-#if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
-# include <cstddef>
-# if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
-# error "This is not STLPort!"
-# endif
-#endif
-
-// Apple doesn't seem to reliably defined a *unix* macro
-#if !defined(CYGWIN) && ( defined(__unix__) \
- || defined(__unix) \
- || defined(unix) \
- || defined(__APPLE__) \
- || defined(__APPLE) \
- || defined(APPLE))
-# include <unistd.h>
-#endif
-
-//
-// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
-// for versions prior to 4.1(beta)
-//
-#if (defined(__STL_STATIC_CONST_INIT_BUG) || defined(_STLP_STATIC_CONST_INIT_BUG)) && (__SGI_STL_PORT <= 0x400)
-# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
-#endif
-
-//
-// If STLport thinks that there is no partial specialisation, then there is no
-// std::iterator traits:
-//
-#if !(defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || defined(__STL_CLASS_PARTIAL_SPECIALIZATION))
-# define BOOST_NO_STD_ITERATOR_TRAITS
-#endif
-
-//
-// No new style iostreams on GCC without STLport's iostreams enabled:
-//
-#if (defined(__GNUC__) && (__GNUC__ < 3)) && !(defined(__SGI_STL_OWN_IOSTREAMS) || defined(_STLP_OWN_IOSTREAMS))
-# define BOOST_NO_STRINGSTREAM
-#endif
-
-//
-// No new iostreams implies no std::locale, and no std::stringstream:
-//
-#if defined(__STL_NO_IOSTREAMS) || defined(__STL_NO_NEW_IOSTREAMS) || defined(_STLP_NO_IOSTREAMS) || defined(_STLP_NO_NEW_IOSTREAMS)
-# define BOOST_NO_STD_LOCALE
-# define BOOST_NO_STRINGSTREAM
-#endif
-
-//
-// If the streams are not native, and we have a "using ::x" compiler bug
-// then the io stream facets are not available in namespace std::
-//
-#ifdef _STLPORT_VERSION
-# if !(_STLPORT_VERSION >= 0x500) && !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__)
-# define BOOST_NO_STD_LOCALE
-# endif
-#else
-# if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__)
-# define BOOST_NO_STD_LOCALE
-# endif
-#endif
-
-#if defined(_STLPORT_VERSION) && (_STLPORT_VERSION >= 0x520)
-# define BOOST_HAS_TR1_UNORDERED_SET
-# define BOOST_HAS_TR1_UNORDERED_MAP
-#endif
-//
-// Without member template support enabled, their are no template
-// iterate constructors, and no std::allocator:
-//
-#if !(defined(__STL_MEMBER_TEMPLATES) || defined(_STLP_MEMBER_TEMPLATES))
-# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
-# define BOOST_NO_STD_ALLOCATOR
-#endif
-//
-// however we always have at least a partial allocator:
-//
-#define BOOST_HAS_PARTIAL_STD_ALLOCATOR
-
-#if !defined(_STLP_MEMBER_TEMPLATE_CLASSES) || defined(_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE)
-# define BOOST_NO_STD_ALLOCATOR
-#endif
-
-#if defined(_STLP_NO_MEMBER_TEMPLATE_KEYWORD) && defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
-# define BOOST_NO_STD_ALLOCATOR
-#endif
-
-//
-// If STLport thinks there is no wchar_t at all, then we have to disable
-// the support for the relevant specilazations of std:: templates.
-//
-#if !defined(_STLP_HAS_WCHAR_T) && !defined(_STLP_WCHAR_T_IS_USHORT)
-# ifndef BOOST_NO_STD_WSTRING
-# define BOOST_NO_STD_WSTRING
-# endif
-# ifndef BOOST_NO_STD_WSTREAMBUF
-# define BOOST_NO_STD_WSTREAMBUF
-# endif
-#endif
-
-//
-// We always have SGI style hash_set, hash_map, and slist:
-//
-#ifndef _STLP_NO_EXTENSIONS
-#define BOOST_HAS_HASH
-#define BOOST_HAS_SLIST
-#endif
-
-//
-// STLport does a good job of importing names into namespace std::,
-// but doesn't always get them all, define BOOST_NO_STDC_NAMESPACE, since our
-// workaround does not conflict with STLports:
-//
-//
-// Harold Howe says:
-// Borland switched to STLport in BCB6. Defining BOOST_NO_STDC_NAMESPACE with
-// BCB6 does cause problems. If we detect C++ Builder, then don't define
-// BOOST_NO_STDC_NAMESPACE
-//
-#if !defined(__BORLANDC__) && !defined(__DMC__)
-//
-// If STLport is using it's own namespace, and the real names are in
-// the global namespace, then we duplicate STLport's using declarations
-// (by defining BOOST_NO_STDC_NAMESPACE), we do this because STLport doesn't
-// necessarily import all the names we need into namespace std::
-//
-# if (defined(__STL_IMPORT_VENDOR_CSTD) \
- || defined(__STL_USE_OWN_NAMESPACE) \
- || defined(_STLP_IMPORT_VENDOR_CSTD) \
- || defined(_STLP_USE_OWN_NAMESPACE)) \
- && (defined(__STL_VENDOR_GLOBAL_CSTD) || defined (_STLP_VENDOR_GLOBAL_CSTD))
-# define BOOST_NO_STDC_NAMESPACE
-# define BOOST_NO_EXCEPTION_STD_NAMESPACE
-# endif
-#elif defined(__BORLANDC__) && __BORLANDC__ < 0x560
-// STLport doesn't import std::abs correctly:
-#include <stdlib.h>
-namespace std { using ::abs; }
-// and strcmp/strcpy don't get imported either ('cos they are macros)
-#include <string.h>
-#ifdef strcpy
-# undef strcpy
-#endif
-#ifdef strcmp
-# undef strcmp
-#endif
-#ifdef _STLP_VENDOR_CSTD
-namespace std{ using _STLP_VENDOR_CSTD::strcmp; using _STLP_VENDOR_CSTD::strcpy; }
-#endif
-#endif
-
-//
-// std::use_facet may be non-standard, uses a class instead:
-//
-#if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) || defined(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS)
-# define BOOST_NO_STD_USE_FACET
-# define BOOST_HAS_STLP_USE_FACET
-#endif
-
-//
-// If STLport thinks there are no wide functions, <cwchar> etc. is not working; but
-// only if BOOST_NO_STDC_NAMESPACE is not defined (if it is then we do the import
-// into std:: ourselves).
-//
-#if defined(_STLP_NO_NATIVE_WIDE_FUNCTIONS) && !defined(BOOST_NO_STDC_NAMESPACE)
-# define BOOST_NO_CWCHAR
-# define BOOST_NO_CWCTYPE
-#endif
-
-//
-// If STLport for some reason was configured so that it thinks that wchar_t
-// is not an intrinsic type, then we have to disable the support for it as
-// well (we would be missing required specializations otherwise).
-//
-#if !defined( _STLP_HAS_WCHAR_T) || defined(_STLP_WCHAR_T_IS_USHORT)
-# undef BOOST_NO_INTRINSIC_WCHAR_T
-# define BOOST_NO_INTRINSIC_WCHAR_T
-#endif
-
-//
-// Borland ships a version of STLport with C++ Builder 6 that lacks
-// hashtables and the like:
-//
-#if defined(__BORLANDC__) && (__BORLANDC__ == 0x560)
-# undef BOOST_HAS_HASH
-#endif
-
-//
-// gcc-2.95.3/STLPort does not like the using declarations we use to get ADL with std::min/max
-//
-#if defined(__GNUC__) && (__GNUC__ < 3)
-# include <algorithm> // for std::min and std::max
-# define BOOST_USING_STD_MIN() ((void)0)
-# define BOOST_USING_STD_MAX() ((void)0)
-namespace cutl_details_boost { using std::min; using std::max; }
-#endif
-
-// C++0x headers not yet implemented
-//
-# define BOOST_NO_CXX11_HDR_ARRAY
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_HDR_CODECVT
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_FORWARD_LIST
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_HDR_MUTEX
-# define BOOST_NO_CXX11_HDR_RANDOM
-# define BOOST_NO_CXX11_HDR_RATIO
-# define BOOST_NO_CXX11_HDR_REGEX
-# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-# define BOOST_NO_CXX11_HDR_THREAD
-# define BOOST_NO_CXX11_HDR_TUPLE
-# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-# define BOOST_NO_CXX11_HDR_TYPEINDEX
-# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-# define BOOST_NO_CXX11_HDR_UNORDERED_SET
-# define BOOST_NO_CXX11_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_ALLOCATOR
-# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-# define BOOST_NO_CXX11_SMART_PTR
-# define BOOST_NO_CXX11_HDR_FUNCTIONAL
-
-#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/config/stdlib/vacpp.hpp b/libcutl/cutl/details/boost/config/stdlib/vacpp.hpp
deleted file mode 100644
index 9d16946..0000000
--- a/libcutl/cutl/details/boost/config/stdlib/vacpp.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-// (C) Copyright John Maddock 2001 - 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for most recent version.
-
-#if __IBMCPP__ <= 501
-# define BOOST_NO_STD_ALLOCATOR
-#endif
-
-#define BOOST_HAS_MACRO_USE_FACET
-#define BOOST_NO_STD_MESSAGES
-
-// Apple doesn't seem to reliably defined a *unix* macro
-#if !defined(CYGWIN) && ( defined(__unix__) \
- || defined(__unix) \
- || defined(unix) \
- || defined(__APPLE__) \
- || defined(__APPLE) \
- || defined(APPLE))
-# include <unistd.h>
-#endif
-
-// C++0x headers not yet implemented
-//
-# define BOOST_NO_CXX11_HDR_ARRAY
-# define BOOST_NO_CXX11_HDR_CHRONO
-# define BOOST_NO_CXX11_HDR_CODECVT
-# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-# define BOOST_NO_CXX11_HDR_FORWARD_LIST
-# define BOOST_NO_CXX11_HDR_FUTURE
-# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# define BOOST_NO_CXX11_HDR_MUTEX
-# define BOOST_NO_CXX11_HDR_RANDOM
-# define BOOST_NO_CXX11_HDR_RATIO
-# define BOOST_NO_CXX11_HDR_REGEX
-# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-# define BOOST_NO_CXX11_HDR_THREAD
-# define BOOST_NO_CXX11_HDR_TUPLE
-# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-# define BOOST_NO_CXX11_HDR_TYPEINDEX
-# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-# define BOOST_NO_CXX11_HDR_UNORDERED_SET
-# define BOOST_NO_CXX11_NUMERIC_LIMITS
-# define BOOST_NO_CXX11_ALLOCATOR
-# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-# define BOOST_NO_CXX11_SMART_PTR
-# define BOOST_NO_CXX11_HDR_FUNCTIONAL
-
-#define BOOST_STDLIB "Visual Age default standard library"
-
-
-
diff --git a/libcutl/cutl/details/boost/config/suffix.hpp b/libcutl/cutl/details/boost/config/suffix.hpp
deleted file mode 100644
index 2893f35..0000000
--- a/libcutl/cutl/details/boost/config/suffix.hpp
+++ /dev/null
@@ -1,933 +0,0 @@
-// Boost config.hpp configuration header file ------------------------------//
-// boostinspect:ndprecated_macros -- tell the inspect tool to ignore this file
-
-// Copyright (c) 2001-2003 John Maddock
-// Copyright (c) 2001 Darin Adler
-// Copyright (c) 2001 Peter Dimov
-// Copyright (c) 2002 Bill Kempf
-// Copyright (c) 2002 Jens Maurer
-// Copyright (c) 2002-2003 David Abrahams
-// Copyright (c) 2003 Gennaro Prota
-// Copyright (c) 2003 Eric Friedman
-// Copyright (c) 2010 Eric Jourdanneau, Joel Falcou
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/ for most recent version.
-
-// Boost config.hpp policy and rationale documentation has been moved to
-// http://www.boost.org/libs/config/
-//
-// This file is intended to be stable, and relatively unchanging.
-// It should contain boilerplate code only - no compiler specific
-// code unless it is unavoidable - no changes unless unavoidable.
-
-#ifndef BOOST_CONFIG_SUFFIX_HPP
-#define BOOST_CONFIG_SUFFIX_HPP
-
-#if defined(__GNUC__) && (__GNUC__ >= 4)
-//
-// Some GCC-4.x versions issue warnings even when __extension__ is used,
-// so use this as a workaround:
-//
-#pragma GCC system_header
-#endif
-
-//
-// ensure that visibility macros are always defined, thus symplifying use
-//
-#ifndef BOOST_SYMBOL_EXPORT
-# define BOOST_SYMBOL_EXPORT
-#endif
-#ifndef BOOST_SYMBOL_IMPORT
-# define BOOST_SYMBOL_IMPORT
-#endif
-#ifndef BOOST_SYMBOL_VISIBLE
-# define BOOST_SYMBOL_VISIBLE
-#endif
-
-//
-// look for long long by looking for the appropriate macros in <limits.h>.
-// Note that we use limits.h rather than climits for maximal portability,
-// remember that since these just declare a bunch of macros, there should be
-// no namespace issues from this.
-//
-#if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG) \
- && !defined(BOOST_MSVC) && !defined(__BORLANDC__)
-# include <limits.h>
-# if (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
-# define BOOST_HAS_LONG_LONG
-# else
-# define BOOST_NO_LONG_LONG
-# endif
-#endif
-
-// GCC 3.x will clean up all of those nasty macro definitions that
-// BOOST_NO_CTYPE_FUNCTIONS is intended to help work around, so undefine
-// it under GCC 3.x.
-#if defined(__GNUC__) && (__GNUC__ >= 3) && defined(BOOST_NO_CTYPE_FUNCTIONS)
-# undef BOOST_NO_CTYPE_FUNCTIONS
-#endif
-
-//
-// Assume any extensions are in namespace std:: unless stated otherwise:
-//
-# ifndef BOOST_STD_EXTENSION_NAMESPACE
-# define BOOST_STD_EXTENSION_NAMESPACE std
-# endif
-
-//
-// If cv-qualified specializations are not allowed, then neither are cv-void ones:
-//
-# if defined(BOOST_NO_CV_SPECIALIZATIONS) \
- && !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
-# define BOOST_NO_CV_VOID_SPECIALIZATIONS
-# endif
-
-//
-// If there is no numeric_limits template, then it can't have any compile time
-// constants either!
-//
-# if defined(BOOST_NO_LIMITS) \
- && !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS)
-# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
-# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
-# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
-# endif
-
-//
-// if there is no long long then there is no specialisation
-// for numeric_limits<long long> either:
-//
-#if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)
-# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
-#endif
-
-//
-// if there is no __int64 then there is no specialisation
-// for numeric_limits<__int64> either:
-//
-#if !defined(BOOST_HAS_MS_INT64) && !defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS)
-# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
-#endif
-
-//
-// if member templates are supported then so is the
-// VC6 subset of member templates:
-//
-# if !defined(BOOST_NO_MEMBER_TEMPLATES) \
- && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
-# define BOOST_MSVC6_MEMBER_TEMPLATES
-# endif
-
-//
-// Without partial specialization, can't test for partial specialisation bugs:
-//
-# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG)
-# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
-# endif
-
-//
-// Without partial specialization, we can't have array-type partial specialisations:
-//
-# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
-# define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
-# endif
-
-//
-// Without partial specialization, std::iterator_traits can't work:
-//
-# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
-# define BOOST_NO_STD_ITERATOR_TRAITS
-# endif
-
-//
-// Without partial specialization, partial
-// specialization with default args won't work either:
-//
-# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
-# define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
-# endif
-
-//
-// Without member template support, we can't have template constructors
-// in the standard library either:
-//
-# if defined(BOOST_NO_MEMBER_TEMPLATES) \
- && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
- && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
-# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
-# endif
-
-//
-// Without member template support, we can't have a conforming
-// std::allocator template either:
-//
-# if defined(BOOST_NO_MEMBER_TEMPLATES) \
- && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
- && !defined(BOOST_NO_STD_ALLOCATOR)
-# define BOOST_NO_STD_ALLOCATOR
-# endif
-
-//
-// without ADL support then using declarations will break ADL as well:
-//
-#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
-# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-#endif
-
-//
-// Without typeid support we have no dynamic RTTI either:
-//
-#if defined(BOOST_NO_TYPEID) && !defined(BOOST_NO_RTTI)
-# define BOOST_NO_RTTI
-#endif
-
-//
-// If we have a standard allocator, then we have a partial one as well:
-//
-#if !defined(BOOST_NO_STD_ALLOCATOR)
-# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
-#endif
-
-//
-// We can't have a working std::use_facet if there is no std::locale:
-//
-# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_USE_FACET)
-# define BOOST_NO_STD_USE_FACET
-# endif
-
-//
-// We can't have a std::messages facet if there is no std::locale:
-//
-# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_MESSAGES)
-# define BOOST_NO_STD_MESSAGES
-# endif
-
-//
-// We can't have a working std::wstreambuf if there is no std::locale:
-//
-# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_WSTREAMBUF)
-# define BOOST_NO_STD_WSTREAMBUF
-# endif
-
-//
-// We can't have a <cwctype> if there is no <cwchar>:
-//
-# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_CWCTYPE)
-# define BOOST_NO_CWCTYPE
-# endif
-
-//
-// We can't have a swprintf if there is no <cwchar>:
-//
-# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_SWPRINTF)
-# define BOOST_NO_SWPRINTF
-# endif
-
-//
-// If Win32 support is turned off, then we must turn off
-// threading support also, unless there is some other
-// thread API enabled:
-//
-#if defined(BOOST_DISABLE_WIN32) && defined(_WIN32) \
- && !defined(BOOST_DISABLE_THREADS) && !defined(BOOST_HAS_PTHREADS)
-# define BOOST_DISABLE_THREADS
-#endif
-
-//
-// Turn on threading support if the compiler thinks that it's in
-// multithreaded mode. We put this here because there are only a
-// limited number of macros that identify this (if there's any missing
-// from here then add to the appropriate compiler section):
-//
-#if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \
- || defined(_PTHREADS) || defined(__APPLE__) || defined(__DragonFly__)) \
- && !defined(BOOST_HAS_THREADS)
-# define BOOST_HAS_THREADS
-#endif
-
-//
-// Turn threading support off if BOOST_DISABLE_THREADS is defined:
-//
-#if defined(BOOST_DISABLE_THREADS) && defined(BOOST_HAS_THREADS)
-# undef BOOST_HAS_THREADS
-#endif
-
-//
-// Turn threading support off if we don't recognise the threading API:
-//
-#if defined(BOOST_HAS_THREADS) && !defined(BOOST_HAS_PTHREADS)\
- && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_BETHREADS)\
- && !defined(BOOST_HAS_MPTASKS)
-# undef BOOST_HAS_THREADS
-#endif
-
-//
-// Turn threading detail macros off if we don't (want to) use threading
-//
-#ifndef BOOST_HAS_THREADS
-# undef BOOST_HAS_PTHREADS
-# undef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-# undef BOOST_HAS_PTHREAD_YIELD
-# undef BOOST_HAS_PTHREAD_DELAY_NP
-# undef BOOST_HAS_WINTHREADS
-# undef BOOST_HAS_BETHREADS
-# undef BOOST_HAS_MPTASKS
-#endif
-
-//
-// If the compiler claims to be C99 conformant, then it had better
-// have a <stdint.h>:
-//
-# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
-# define BOOST_HAS_STDINT_H
-# ifndef BOOST_HAS_LOG1P
-# define BOOST_HAS_LOG1P
-# endif
-# ifndef BOOST_HAS_EXPM1
-# define BOOST_HAS_EXPM1
-# endif
-# endif
-
-//
-// Define BOOST_NO_SLIST and BOOST_NO_HASH if required.
-// Note that this is for backwards compatibility only.
-//
-# if !defined(BOOST_HAS_SLIST) && !defined(BOOST_NO_SLIST)
-# define BOOST_NO_SLIST
-# endif
-
-# if !defined(BOOST_HAS_HASH) && !defined(BOOST_NO_HASH)
-# define BOOST_NO_HASH
-# endif
-
-//
-// Set BOOST_SLIST_HEADER if not set already:
-//
-#if defined(BOOST_HAS_SLIST) && !defined(BOOST_SLIST_HEADER)
-# define BOOST_SLIST_HEADER <slist>
-#endif
-
-//
-// Set BOOST_HASH_SET_HEADER if not set already:
-//
-#if defined(BOOST_HAS_HASH) && !defined(BOOST_HASH_SET_HEADER)
-# define BOOST_HASH_SET_HEADER <hash_set>
-#endif
-
-//
-// Set BOOST_HASH_MAP_HEADER if not set already:
-//
-#if defined(BOOST_HAS_HASH) && !defined(BOOST_HASH_MAP_HEADER)
-# define BOOST_HASH_MAP_HEADER <hash_map>
-#endif
-
-// BOOST_HAS_ABI_HEADERS
-// This macro gets set if we have headers that fix the ABI,
-// and prevent ODR violations when linking to external libraries:
-#if defined(BOOST_ABI_PREFIX) && defined(BOOST_ABI_SUFFIX) && !defined(BOOST_HAS_ABI_HEADERS)
-# define BOOST_HAS_ABI_HEADERS
-#endif
-
-#if defined(BOOST_HAS_ABI_HEADERS) && defined(BOOST_DISABLE_ABI_HEADERS)
-# undef BOOST_HAS_ABI_HEADERS
-#endif
-
-// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------//
-// Because std::size_t usage is so common, even in boost headers which do not
-// otherwise use the C library, the <cstddef> workaround is included here so
-// that ugly workaround code need not appear in many other boost headers.
-// NOTE WELL: This is a workaround for non-conforming compilers; <cstddef>
-// must still be #included in the usual places so that <cstddef> inclusion
-// works as expected with standard conforming compilers. The resulting
-// double inclusion of <cstddef> is harmless.
-
-# if defined(BOOST_NO_STDC_NAMESPACE) && defined(__cplusplus)
-# include <cstddef>
- namespace std { using ::ptrdiff_t; using ::size_t; }
-# endif
-
-// Workaround for the unfortunate min/max macros defined by some platform headers
-
-#define BOOST_PREVENT_MACRO_SUBSTITUTION
-
-#ifndef BOOST_USING_STD_MIN
-# define BOOST_USING_STD_MIN() using std::min
-#endif
-
-#ifndef BOOST_USING_STD_MAX
-# define BOOST_USING_STD_MAX() using std::max
-#endif
-
-// BOOST_NO_STD_MIN_MAX workaround -----------------------------------------//
-
-# if defined(BOOST_NO_STD_MIN_MAX) && defined(__cplusplus)
-
-namespace std {
- template <class _Tp>
- inline const _Tp& min BOOST_PREVENT_MACRO_SUBSTITUTION (const _Tp& __a, const _Tp& __b) {
- return __b < __a ? __b : __a;
- }
- template <class _Tp>
- inline const _Tp& max BOOST_PREVENT_MACRO_SUBSTITUTION (const _Tp& __a, const _Tp& __b) {
- return __a < __b ? __b : __a;
- }
-}
-
-# endif
-
-// BOOST_STATIC_CONSTANT workaround --------------------------------------- //
-// On compilers which don't allow in-class initialization of static integral
-// constant members, we must use enums as a workaround if we want the constants
-// to be available at compile-time. This macro gives us a convenient way to
-// declare such constants.
-
-# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-# define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment }
-# else
-# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment
-# endif
-
-// BOOST_USE_FACET / HAS_FACET workaround ----------------------------------//
-// When the standard library does not have a conforming std::use_facet there
-// are various workarounds available, but they differ from library to library.
-// The same problem occurs with has_facet.
-// These macros provide a consistent way to access a locale's facets.
-// Usage:
-// replace
-// std::use_facet<Type>(loc);
-// with
-// BOOST_USE_FACET(Type, loc);
-// Note do not add a std:: prefix to the front of BOOST_USE_FACET!
-// Use for BOOST_HAS_FACET is analogous.
-
-#if defined(BOOST_NO_STD_USE_FACET)
-# ifdef BOOST_HAS_TWO_ARG_USE_FACET
-# define BOOST_USE_FACET(Type, loc) std::use_facet(loc, static_cast<Type*>(0))
-# define BOOST_HAS_FACET(Type, loc) std::has_facet(loc, static_cast<Type*>(0))
-# elif defined(BOOST_HAS_MACRO_USE_FACET)
-# define BOOST_USE_FACET(Type, loc) std::_USE(loc, Type)
-# define BOOST_HAS_FACET(Type, loc) std::_HAS(loc, Type)
-# elif defined(BOOST_HAS_STLP_USE_FACET)
-# define BOOST_USE_FACET(Type, loc) (*std::_Use_facet<Type >(loc))
-# define BOOST_HAS_FACET(Type, loc) std::has_facet< Type >(loc)
-# endif
-#else
-# define BOOST_USE_FACET(Type, loc) std::use_facet< Type >(loc)
-# define BOOST_HAS_FACET(Type, loc) std::has_facet< Type >(loc)
-#endif
-
-// BOOST_NESTED_TEMPLATE workaround ------------------------------------------//
-// Member templates are supported by some compilers even though they can't use
-// the A::template member<U> syntax, as a workaround replace:
-//
-// typedef typename A::template rebind<U> binder;
-//
-// with:
-//
-// typedef typename A::BOOST_NESTED_TEMPLATE rebind<U> binder;
-
-#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
-# define BOOST_NESTED_TEMPLATE template
-#else
-# define BOOST_NESTED_TEMPLATE
-#endif
-
-// BOOST_UNREACHABLE_RETURN(x) workaround -------------------------------------//
-// Normally evaluates to nothing, unless BOOST_NO_UNREACHABLE_RETURN_DETECTION
-// is defined, in which case it evaluates to return x; Use when you have a return
-// statement that can never be reached.
-
-#ifdef BOOST_NO_UNREACHABLE_RETURN_DETECTION
-# define BOOST_UNREACHABLE_RETURN(x) return x;
-#else
-# define BOOST_UNREACHABLE_RETURN(x)
-#endif
-
-// BOOST_DEDUCED_TYPENAME workaround ------------------------------------------//
-//
-// Some compilers don't support the use of `typename' for dependent
-// types in deduced contexts, e.g.
-//
-// template <class T> void f(T, typename T::type);
-// ^^^^^^^^
-// Replace these declarations with:
-//
-// template <class T> void f(T, BOOST_DEDUCED_TYPENAME T::type);
-
-#ifndef BOOST_NO_DEDUCED_TYPENAME
-# define BOOST_DEDUCED_TYPENAME typename
-#else
-# define BOOST_DEDUCED_TYPENAME
-#endif
-
-#ifndef BOOST_NO_TYPENAME_WITH_CTOR
-# define BOOST_CTOR_TYPENAME typename
-#else
-# define BOOST_CTOR_TYPENAME
-#endif
-
-// long long workaround ------------------------------------------//
-// On gcc (and maybe other compilers?) long long is alway supported
-// but it's use may generate either warnings (with -ansi), or errors
-// (with -pedantic -ansi) unless it's use is prefixed by __extension__
-//
-#if defined(BOOST_HAS_LONG_LONG) && defined(__cplusplus)
-namespace cutl_details_boost{
-# ifdef __GNUC__
- __extension__ typedef long long long_long_type;
- __extension__ typedef unsigned long long ulong_long_type;
-# else
- typedef long long long_long_type;
- typedef unsigned long long ulong_long_type;
-# endif
-}
-#endif
-// same again for __int128:
-#if defined(BOOST_HAS_INT128) && defined(__cplusplus)
-namespace cutl_details_boost{
-# ifdef __GNUC__
- __extension__ typedef __int128 int128_type;
- __extension__ typedef unsigned __int128 uint128_type;
-# else
- typedef __int128 int128_type;
- typedef unsigned __int128 uint128_type;
-# endif
-}
-#endif
-
-// BOOST_[APPEND_]EXPLICIT_TEMPLATE_[NON_]TYPE macros --------------------------//
-//
-// Some compilers have problems with function templates whose template
-// parameters don't appear in the function parameter list (basically
-// they just link one instantiation of the template in the final
-// executable). These macros provide a uniform way to cope with the
-// problem with no effects on the calling syntax.
-
-// Example:
-//
-// #include <iostream>
-// #include <ostream>
-// #include <typeinfo>
-//
-// template <int n>
-// void f() { std::cout << n << ' '; }
-//
-// template <typename T>
-// void g() { std::cout << typeid(T).name() << ' '; }
-//
-// int main() {
-// f<1>();
-// f<2>();
-//
-// g<int>();
-// g<double>();
-// }
-//
-// With VC++ 6.0 the output is:
-//
-// 2 2 double double
-//
-// To fix it, write
-//
-// template <int n>
-// void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... }
-//
-// template <typename T>
-// void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... }
-//
-
-
-#if defined(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS) && defined(__cplusplus)
-
-# include "cutl/details/boost/type.hpp"
-# include "cutl/details/boost/non_type.hpp"
-
-# define BOOST_EXPLICIT_TEMPLATE_TYPE(t) cutl_details_boost::type<t>* = 0
-# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) cutl_details_boost::type<t>*
-# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) cutl_details_boost::non_type<t, v>* = 0
-# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) cutl_details_boost::non_type<t, v>*
-
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) \
- , BOOST_EXPLICIT_TEMPLATE_TYPE(t)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) \
- , BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) \
- , BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) \
- , BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
-
-#else
-
-// no workaround needed: expand to nothing
-
-# define BOOST_EXPLICIT_TEMPLATE_TYPE(t)
-# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
-# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
-# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
-
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
-
-
-#endif // defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-
-// When BOOST_NO_STD_TYPEINFO is defined, we can just import
-// the global definition into std namespace:
-#if defined(BOOST_NO_STD_TYPEINFO) && defined(__cplusplus)
-#include <typeinfo>
-namespace std{ using ::type_info; }
-#endif
-
-// ---------------------------------------------------------------------------//
-
-//
-// Helper macro BOOST_STRINGIZE:
-// Converts the parameter X to a string after macro replacement
-// on X has been performed.
-//
-#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
-#define BOOST_DO_STRINGIZE(X) #X
-
-//
-// Helper macro BOOST_JOIN:
-// The following piece of macro magic joins the two
-// arguments together, even when one of the arguments is
-// itself a macro (see 16.3.1 in C++ standard). The key
-// is that macro expansion of macro arguments does not
-// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN.
-//
-#define BOOST_JOIN( X, Y ) BOOST_DO_JOIN( X, Y )
-#define BOOST_DO_JOIN( X, Y ) BOOST_DO_JOIN2(X,Y)
-#define BOOST_DO_JOIN2( X, Y ) X##Y
-
-//
-// Set some default values for compiler/library/platform names.
-// These are for debugging config setup only:
-//
-# ifndef BOOST_COMPILER
-# define BOOST_COMPILER "Unknown ISO C++ Compiler"
-# endif
-# ifndef BOOST_STDLIB
-# define BOOST_STDLIB "Unknown ISO standard library"
-# endif
-# ifndef BOOST_PLATFORM
-# if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \
- || defined(_POSIX_SOURCE)
-# define BOOST_PLATFORM "Generic Unix"
-# else
-# define BOOST_PLATFORM "Unknown"
-# endif
-# endif
-
-//
-// Set some default values GPU support
-//
-# ifndef BOOST_GPU_ENABLED
-# define BOOST_GPU_ENABLED
-# endif
-
-// BOOST_FORCEINLINE ---------------------------------------------//
-// Macro to use in place of 'inline' to force a function to be inline
-#if !defined(BOOST_FORCEINLINE)
-# if defined(_MSC_VER)
-# define BOOST_FORCEINLINE __forceinline
-# elif defined(__GNUC__) && __GNUC__ > 3
- // Clang also defines __GNUC__ (as 4)
-# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__))
-# else
-# define BOOST_FORCEINLINE inline
-# endif
-#endif
-
-//
-// Set BOOST_NO_DECLTYPE_N3276 when BOOST_NO_DECLTYPE is defined
-//
-#if defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_DECLTYPE_N3276)
-#define BOOST_NO_CXX11_DECLTYPE_N3276 BOOST_NO_CXX11_DECLTYPE
-#endif
-
-// -------------------- Deprecated macros for 1.50 ---------------------------
-// These will go away in a future release
-
-// Use BOOST_NO_CXX11_HDR_UNORDERED_SET or BOOST_NO_CXX11_HDR_UNORDERED_MAP
-// instead of BOOST_NO_STD_UNORDERED
-#if defined(BOOST_NO_CXX11_HDR_UNORDERED_MAP) || defined (BOOST_NO_CXX11_HDR_UNORDERED_SET)
-# ifndef BOOST_NO_CXX11_STD_UNORDERED
-# define BOOST_NO_CXX11_STD_UNORDERED
-# endif
-#endif
-
-// Use BOOST_NO_CXX11_HDR_INITIALIZER_LIST instead of BOOST_NO_INITIALIZER_LISTS
-#if defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) && !defined(BOOST_NO_INITIALIZER_LISTS)
-# define BOOST_NO_INITIALIZER_LISTS
-#endif
-
-// Use BOOST_NO_CXX11_HDR_ARRAY instead of BOOST_NO_0X_HDR_ARRAY
-#if defined(BOOST_NO_CXX11_HDR_ARRAY) && !defined(BOOST_NO_0X_HDR_ARRAY)
-# define BOOST_NO_0X_HDR_ARRAY
-#endif
-// Use BOOST_NO_CXX11_HDR_CHRONO instead of BOOST_NO_0X_HDR_CHRONO
-#if defined(BOOST_NO_CXX11_HDR_CHRONO) && !defined(BOOST_NO_0X_HDR_CHRONO)
-# define BOOST_NO_0X_HDR_CHRONO
-#endif
-// Use BOOST_NO_CXX11_HDR_CODECVT instead of BOOST_NO_0X_HDR_CODECVT
-#if defined(BOOST_NO_CXX11_HDR_CODECVT) && !defined(BOOST_NO_0X_HDR_CODECVT)
-# define BOOST_NO_0X_HDR_CODECVT
-#endif
-// Use BOOST_NO_CXX11_HDR_CONDITION_VARIABLE instead of BOOST_NO_0X_HDR_CONDITION_VARIABLE
-#if defined(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE) && !defined(BOOST_NO_0X_HDR_CONDITION_VARIABLE)
-# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-#endif
-// Use BOOST_NO_CXX11_HDR_FORWARD_LIST instead of BOOST_NO_0X_HDR_FORWARD_LIST
-#if defined(BOOST_NO_CXX11_HDR_FORWARD_LIST) && !defined(BOOST_NO_0X_HDR_FORWARD_LIST)
-# define BOOST_NO_0X_HDR_FORWARD_LIST
-#endif
-// Use BOOST_NO_CXX11_HDR_FUTURE instead of BOOST_NO_0X_HDR_FUTURE
-#if defined(BOOST_NO_CXX11_HDR_FUTURE) && !defined(BOOST_NO_0X_HDR_FUTURE)
-# define BOOST_NO_0X_HDR_FUTURE
-#endif
-
-// Use BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-// instead of BOOST_NO_0X_HDR_INITIALIZER_LIST or BOOST_NO_INITIALIZER_LISTS
-#ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-# ifndef BOOST_NO_0X_HDR_INITIALIZER_LIST
-# define BOOST_NO_0X_HDR_INITIALIZER_LIST
-# endif
-# ifndef BOOST_NO_INITIALIZER_LISTS
-# define BOOST_NO_INITIALIZER_LISTS
-# endif
-#endif
-
-// Use BOOST_NO_CXX11_HDR_MUTEX instead of BOOST_NO_0X_HDR_MUTEX
-#if defined(BOOST_NO_CXX11_HDR_MUTEX) && !defined(BOOST_NO_0X_HDR_MUTEX)
-# define BOOST_NO_0X_HDR_MUTEX
-#endif
-// Use BOOST_NO_CXX11_HDR_RANDOM instead of BOOST_NO_0X_HDR_RANDOM
-#if defined(BOOST_NO_CXX11_HDR_RANDOM) && !defined(BOOST_NO_0X_HDR_RANDOM)
-# define BOOST_NO_0X_HDR_RANDOM
-#endif
-// Use BOOST_NO_CXX11_HDR_RATIO instead of BOOST_NO_0X_HDR_RATIO
-#if defined(BOOST_NO_CXX11_HDR_RATIO) && !defined(BOOST_NO_0X_HDR_RATIO)
-# define BOOST_NO_0X_HDR_RATIO
-#endif
-// Use BOOST_NO_CXX11_HDR_REGEX instead of BOOST_NO_0X_HDR_REGEX
-#if defined(BOOST_NO_CXX11_HDR_REGEX) && !defined(BOOST_NO_0X_HDR_REGEX)
-# define BOOST_NO_0X_HDR_REGEX
-#endif
-// Use BOOST_NO_CXX11_HDR_SYSTEM_ERROR instead of BOOST_NO_0X_HDR_SYSTEM_ERROR
-#if defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) && !defined(BOOST_NO_0X_HDR_SYSTEM_ERROR)
-# define BOOST_NO_0X_HDR_SYSTEM_ERROR
-#endif
-// Use BOOST_NO_CXX11_HDR_THREAD instead of BOOST_NO_0X_HDR_THREAD
-#if defined(BOOST_NO_CXX11_HDR_THREAD) && !defined(BOOST_NO_0X_HDR_THREAD)
-# define BOOST_NO_0X_HDR_THREAD
-#endif
-// Use BOOST_NO_CXX11_HDR_TUPLE instead of BOOST_NO_0X_HDR_TUPLE
-#if defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_0X_HDR_TUPLE)
-# define BOOST_NO_0X_HDR_TUPLE
-#endif
-// Use BOOST_NO_CXX11_HDR_TYPE_TRAITS instead of BOOST_NO_0X_HDR_TYPE_TRAITS
-#if defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) && !defined(BOOST_NO_0X_HDR_TYPE_TRAITS)
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
-#endif
-// Use BOOST_NO_CXX11_HDR_TYPEINDEX instead of BOOST_NO_0X_HDR_TYPEINDEX
-#if defined(BOOST_NO_CXX11_HDR_TYPEINDEX) && !defined(BOOST_NO_0X_HDR_TYPEINDEX)
-# define BOOST_NO_0X_HDR_TYPEINDEX
-#endif
-// Use BOOST_NO_CXX11_HDR_UNORDERED_MAP instead of BOOST_NO_0X_HDR_UNORDERED_MAP
-#if defined(BOOST_NO_CXX11_HDR_UNORDERED_MAP) && !defined(BOOST_NO_0X_HDR_UNORDERED_MAP)
-# define BOOST_NO_0X_HDR_UNORDERED_MAP
-#endif
-// Use BOOST_NO_CXX11_HDR_UNORDERED_SET instead of BOOST_NO_0X_HDR_UNORDERED_SET
-#if defined(BOOST_NO_CXX11_HDR_UNORDERED_SET) && !defined(BOOST_NO_0X_HDR_UNORDERED_SET)
-# define BOOST_NO_0X_HDR_UNORDERED_SET
-#endif
-
-// ------------------ End of deprecated macros for 1.50 ---------------------------
-
-// -------------------- Deprecated macros for 1.51 ---------------------------
-// These will go away in a future release
-
-// Use BOOST_NO_CXX11_AUTO_DECLARATIONS instead of BOOST_NO_AUTO_DECLARATIONS
-#if defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) && !defined(BOOST_NO_AUTO_DECLARATIONS)
-# define BOOST_NO_AUTO_DECLARATIONS
-#endif
-// Use BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS instead of BOOST_NO_AUTO_MULTIDECLARATIONS
-#if defined(BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS) && !defined(BOOST_NO_AUTO_MULTIDECLARATIONS)
-# define BOOST_NO_AUTO_MULTIDECLARATIONS
-#endif
-// Use BOOST_NO_CXX11_CHAR16_T instead of BOOST_NO_CHAR16_T
-#if defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CHAR16_T)
-# define BOOST_NO_CHAR16_T
-#endif
-// Use BOOST_NO_CXX11_CHAR32_T instead of BOOST_NO_CHAR32_T
-#if defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CHAR32_T)
-# define BOOST_NO_CHAR32_T
-#endif
-// Use BOOST_NO_CXX11_TEMPLATE_ALIASES instead of BOOST_NO_TEMPLATE_ALIASES
-#if defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) && !defined(BOOST_NO_TEMPLATE_ALIASES)
-# define BOOST_NO_TEMPLATE_ALIASES
-#endif
-// Use BOOST_NO_CXX11_CONSTEXPR instead of BOOST_NO_CONSTEXPR
-#if defined(BOOST_NO_CXX11_CONSTEXPR) && !defined(BOOST_NO_CONSTEXPR)
-# define BOOST_NO_CONSTEXPR
-#endif
-// Use BOOST_NO_CXX11_DECLTYPE_N3276 instead of BOOST_NO_DECLTYPE_N3276
-#if defined(BOOST_NO_CXX11_DECLTYPE_N3276) && !defined(BOOST_NO_DECLTYPE_N3276)
-# define BOOST_NO_DECLTYPE_N3276
-#endif
-// Use BOOST_NO_CXX11_DECLTYPE instead of BOOST_NO_DECLTYPE
-#if defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_DECLTYPE)
-# define BOOST_NO_DECLTYPE
-#endif
-// Use BOOST_NO_CXX11_DEFAULTED_FUNCTIONS instead of BOOST_NO_DEFAULTED_FUNCTIONS
-#if defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_DEFAULTED_FUNCTIONS)
-# define BOOST_NO_DEFAULTED_FUNCTIONS
-#endif
-// Use BOOST_NO_CXX11_DELETED_FUNCTIONS instead of BOOST_NO_DELETED_FUNCTIONS
-#if defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) && !defined(BOOST_NO_DELETED_FUNCTIONS)
-# define BOOST_NO_DELETED_FUNCTIONS
-#endif
-// Use BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS instead of BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#if defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) && !defined(BOOST_NO_EXPLICIT_CONVERSION_OPERATORS)
-# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#endif
-// Use BOOST_NO_CXX11_EXTERN_TEMPLATE instead of BOOST_NO_EXTERN_TEMPLATE
-#if defined(BOOST_NO_CXX11_EXTERN_TEMPLATE) && !defined(BOOST_NO_EXTERN_TEMPLATE)
-# define BOOST_NO_EXTERN_TEMPLATE
-#endif
-// Use BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS instead of BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#if defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && !defined(BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS)
-# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#endif
-// Use BOOST_NO_CXX11_LAMBDAS instead of BOOST_NO_LAMBDAS
-#if defined(BOOST_NO_CXX11_LAMBDAS) && !defined(BOOST_NO_LAMBDAS)
-# define BOOST_NO_LAMBDAS
-#endif
-// Use BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS instead of BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#if defined(BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS) && !defined(BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS)
-# define BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#endif
-// Use BOOST_NO_CXX11_NOEXCEPT instead of BOOST_NO_NOEXCEPT
-#if defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_NOEXCEPT)
-# define BOOST_NO_NOEXCEPT
-#endif
-// Use BOOST_NO_CXX11_NULLPTR instead of BOOST_NO_NULLPTR
-#if defined(BOOST_NO_CXX11_NULLPTR) && !defined(BOOST_NO_NULLPTR)
-# define BOOST_NO_NULLPTR
-#endif
-// Use BOOST_NO_CXX11_RAW_LITERALS instead of BOOST_NO_RAW_LITERALS
-#if defined(BOOST_NO_CXX11_RAW_LITERALS) && !defined(BOOST_NO_RAW_LITERALS)
-# define BOOST_NO_RAW_LITERALS
-#endif
-// Use BOOST_NO_CXX11_RVALUE_REFERENCES instead of BOOST_NO_RVALUE_REFERENCES
-#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_RVALUE_REFERENCES)
-# define BOOST_NO_RVALUE_REFERENCES
-#endif
-// Use BOOST_NO_CXX11_SCOPED_ENUMS instead of BOOST_NO_SCOPED_ENUMS
-#if defined(BOOST_NO_CXX11_SCOPED_ENUMS) && !defined(BOOST_NO_SCOPED_ENUMS)
-# define BOOST_NO_SCOPED_ENUMS
-#endif
-// Use BOOST_NO_CXX11_STATIC_ASSERT instead of BOOST_NO_STATIC_ASSERT
-#if defined(BOOST_NO_CXX11_STATIC_ASSERT) && !defined(BOOST_NO_STATIC_ASSERT)
-# define BOOST_NO_STATIC_ASSERT
-#endif
-// Use BOOST_NO_CXX11_STD_UNORDERED instead of BOOST_NO_STD_UNORDERED
-#if defined(BOOST_NO_CXX11_STD_UNORDERED) && !defined(BOOST_NO_STD_UNORDERED)
-# define BOOST_NO_STD_UNORDERED
-#endif
-// Use BOOST_NO_CXX11_UNICODE_LITERALS instead of BOOST_NO_UNICODE_LITERALS
-#if defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(BOOST_NO_UNICODE_LITERALS)
-# define BOOST_NO_UNICODE_LITERALS
-#endif
-// Use BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX instead of BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
-#if defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) && !defined(BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX)
-# define BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
-#endif
-// Use BOOST_NO_CXX11_VARIADIC_TEMPLATES instead of BOOST_NO_VARIADIC_TEMPLATES
-#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_VARIADIC_TEMPLATES)
-# define BOOST_NO_VARIADIC_TEMPLATES
-#endif
-// Use BOOST_NO_CXX11_VARIADIC_MACROS instead of BOOST_NO_VARIADIC_MACROS
-#if defined(BOOST_NO_CXX11_VARIADIC_MACROS) && !defined(BOOST_NO_VARIADIC_MACROS)
-# define BOOST_NO_VARIADIC_MACROS
-#endif
-// Use BOOST_NO_CXX11_NUMERIC_LIMITS instead of BOOST_NO_NUMERIC_LIMITS_LOWEST
-#if defined(BOOST_NO_CXX11_NUMERIC_LIMITS) && !defined(BOOST_NO_NUMERIC_LIMITS_LOWEST)
-# define BOOST_NO_NUMERIC_LIMITS_LOWEST
-#endif
-// ------------------ End of deprecated macros for 1.51 ---------------------------
-
-
-
-//
-// Helper macros BOOST_NOEXCEPT, BOOST_NOEXCEPT_IF, BOOST_NOEXCEPT_EXPR
-// These aid the transition to C++11 while still supporting C++03 compilers
-//
-#ifdef BOOST_NO_CXX11_NOEXCEPT
-# define BOOST_NOEXCEPT
-# define BOOST_NOEXCEPT_OR_NOTHROW throw()
-# define BOOST_NOEXCEPT_IF(Predicate)
-# define BOOST_NOEXCEPT_EXPR(Expression) false
-#else
-# define BOOST_NOEXCEPT noexcept
-# define BOOST_NOEXCEPT_OR_NOTHROW noexcept
-# define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate))
-# define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression))
-#endif
-//
-// Helper macro BOOST_FALLTHROUGH
-// Fallback definition of BOOST_FALLTHROUGH macro used to mark intended
-// fall-through between case labels in a switch statement. We use a definition
-// that requires a semicolon after it to avoid at least one type of misuse even
-// on unsupported compilers.
-//
-#ifndef BOOST_FALLTHROUGH
-# define BOOST_FALLTHROUGH ((void)0)
-#endif
-
-//
-// constexpr workarounds
-//
-#if defined(BOOST_NO_CXX11_CONSTEXPR)
-#define BOOST_CONSTEXPR
-#define BOOST_CONSTEXPR_OR_CONST const
-#else
-#define BOOST_CONSTEXPR constexpr
-#define BOOST_CONSTEXPR_OR_CONST constexpr
-#endif
-
-#define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST
-
-//
-// Set BOOST_HAS_STATIC_ASSERT when BOOST_NO_CXX11_STATIC_ASSERT is not defined
-//
-#if !defined(BOOST_NO_CXX11_STATIC_ASSERT) && !defined(BOOST_HAS_STATIC_ASSERT)
-# define BOOST_HAS_STATIC_ASSERT
-#endif
-
-//
-// Set BOOST_HAS_RVALUE_REFS when BOOST_NO_CXX11_RVALUE_REFERENCES is not defined
-//
-#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_HAS_RVALUE_REFS)
-#define BOOST_HAS_RVALUE_REFS
-#endif
-
-//
-// Set BOOST_HAS_VARIADIC_TMPL when BOOST_NO_CXX11_VARIADIC_TEMPLATES is not defined
-//
-#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_HAS_VARIADIC_TMPL)
-#define BOOST_HAS_VARIADIC_TMPL
-#endif
-
-
-#endif
diff --git a/libcutl/cutl/details/boost/config/user.hpp b/libcutl/cutl/details/boost/config/user.hpp
deleted file mode 100644
index be97597..0000000
--- a/libcutl/cutl/details/boost/config/user.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// boost/config/user.hpp ---------------------------------------------------//
-
-// (C) Copyright John Maddock 2001.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-//
-// libcutl-specific configuration
-//
-
-#include <cutl/details/config.hxx>
-
-// We have removed those.
-//
-#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-
-// Disable automatic linking.
-//
-#define BOOST_ALL_NO_LIB
-
-#ifdef LIBCUTL_DISABLE_THREADS
-# define BOOST_DISABLE_THREADS 1
-#endif
-
-//
-// Use this file to define a site and compiler specific
-// configuration policy:
-//
-
-// define this to locate a compiler config file:
-// #define BOOST_COMPILER_CONFIG <myheader>
-
-// define this to locate a stdlib config file:
-// #define BOOST_STDLIB_CONFIG <myheader>
-
-// define this to locate a platform config file:
-// #define BOOST_PLATFORM_CONFIG <myheader>
-
-// define this to disable compiler config,
-// use if your compiler config has nothing to set:
-// #define BOOST_NO_COMPILER_CONFIG
-
-// define this to disable stdlib config,
-// use if your stdlib config has nothing to set:
-// #define BOOST_NO_STDLIB_CONFIG
-
-// define this to disable platform config,
-// use if your platform config has nothing to set:
-// #define BOOST_NO_PLATFORM_CONFIG
-
-// define this to disable all config options,
-// excluding the user config. Use if your
-// setup is fully ISO compliant, and has no
-// useful extensions, or for autoconf generated
-// setups:
-// #define BOOST_NO_CONFIG
-
-// define this to make the config "optimistic"
-// about unknown compiler versions. Normally
-// unknown compiler versions are assumed to have
-// all the defects of the last known version, however
-// setting this flag, causes the config to assume
-// that unknown compiler versions are fully conformant
-// with the standard:
-// #define BOOST_STRICT_CONFIG
-
-// define this to cause the config to halt compilation
-// with an #error if it encounters anything unknown --
-// either an unknown compiler version or an unknown
-// compiler/platform/library:
-// #define BOOST_ASSERT_CONFIG
-
-
-// define if you want to disable threading support, even
-// when available:
-// #define BOOST_DISABLE_THREADS
-
-// define when you want to disable Win32 specific features
-// even when available:
-// #define BOOST_DISABLE_WIN32
-
-// BOOST_DISABLE_ABI_HEADERS: Stops boost headers from including any
-// prefix/suffix headers that normally control things like struct
-// packing and alignment.
-// #define BOOST_DISABLE_ABI_HEADERS
-
-// BOOST_ABI_PREFIX: A prefix header to include in place of whatever
-// boost.config would normally select, any replacement should set up
-// struct packing and alignment options as required.
-// #define BOOST_ABI_PREFIX my-header-name
-
-// BOOST_ABI_SUFFIX: A suffix header to include in place of whatever
-// boost.config would normally select, any replacement should undo
-// the effects of the prefix header.
-// #define BOOST_ABI_SUFFIX my-header-name
-
-// BOOST_ALL_DYN_LINK: Forces all libraries that have separate source,
-// to be linked as dll's rather than static libraries on Microsoft Windows
-// (this macro is used to turn on __declspec(dllimport) modifiers, so that
-// the compiler knows which symbols to look for in a dll rather than in a
-// static library). Note that there may be some libraries that can only
-// be statically linked (Boost.Test for example) and others which may only
-// be dynamically linked (Boost.Threads for example), in these cases this
-// macro has no effect.
-// #define BOOST_ALL_DYN_LINK
-
-// BOOST_WHATEVER_DYN_LINK: Forces library "whatever" to be linked as a dll
-// rather than a static library on Microsoft Windows: replace the WHATEVER
-// part of the macro name with the name of the library that you want to
-// dynamically link to, for example use BOOST_DATE_TIME_DYN_LINK or
-// BOOST_REGEX_DYN_LINK etc (this macro is used to turn on __declspec(dllimport)
-// modifiers, so that the compiler knows which symbols to look for in a dll
-// rather than in a static library).
-// Note that there may be some libraries that can only be statically linked
-// (Boost.Test for example) and others which may only be dynamically linked
-// (Boost.Threads for example), in these cases this macro is unsupported.
-// #define BOOST_WHATEVER_DYN_LINK
-
-// BOOST_ALL_NO_LIB: Tells the config system not to automatically select
-// which libraries to link against.
-// Normally if a compiler supports #pragma lib, then the correct library
-// build variant will be automatically selected and linked against,
-// simply by the act of including one of that library's headers.
-// This macro turns that feature off.
-// #define BOOST_ALL_NO_LIB
-
-// BOOST_WHATEVER_NO_LIB: Tells the config system not to automatically
-// select which library to link against for library "whatever",
-// replace WHATEVER in the macro name with the name of the library;
-// for example BOOST_DATE_TIME_NO_LIB or BOOST_REGEX_NO_LIB.
-// Normally if a compiler supports #pragma lib, then the correct library
-// build variant will be automatically selected and linked against, simply
-// by the act of including one of that library's headers. This macro turns
-// that feature off.
-// #define BOOST_WHATEVER_NO_LIB
diff --git a/libcutl/cutl/details/boost/config/warning_disable.hpp b/libcutl/cutl/details/boost/config/warning_disable.hpp
deleted file mode 100644
index fea8e82..0000000
--- a/libcutl/cutl/details/boost/config/warning_disable.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright John Maddock 2008
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// This file exists to turn off some overly-pedantic warning emitted
-// by certain compilers. You should include this header only in:
-//
-// * A test case, before any other headers, or,
-// * A library source file before any other headers.
-//
-// IT SHOULD NOT BE INCLUDED BY ANY BOOST HEADER.
-//
-// YOU SHOULD NOT INCLUDE IT IF YOU CAN REASONABLY FIX THE WARNING.
-//
-// The only warnings disabled here are those that are:
-//
-// * Quite unreasonably pedantic.
-// * Generally only emitted by a single compiler.
-// * Can't easily be fixed: for example if the vendors own std lib
-// code emits these warnings!
-//
-// Note that THIS HEADER MUST NOT INCLUDE ANY OTHER HEADERS:
-// not even std library ones! Doing so may turn the warning
-// off too late to be of any use. For example the VC++ C4996
-// warning can be emitted from <iosfwd> if that header is included
-// before or by this one :-(
-//
-
-#ifndef BOOST_CONFIG_WARNING_DISABLE_HPP
-#define BOOST_CONFIG_WARNING_DISABLE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1400)
- // Error 'function': was declared deprecated
- // http://msdn2.microsoft.com/en-us/library/ttcz0bys(VS.80).aspx
- // This error is emitted when you use some perfectly conforming
- // std lib functions in a perfectly correct way, and also by
- // some of Microsoft's own std lib code !
-# pragma warning(disable:4996)
-#endif
-#if defined(__INTEL_COMPILER) || defined(__ICL)
- // As above: gives warning when a "deprecated"
- // std library function is encountered.
-# pragma warning(disable:1786)
-#endif
-
-#endif // BOOST_CONFIG_WARNING_DISABLE_HPP
diff --git a/libcutl/cutl/details/boost/cregex.hpp b/libcutl/cutl/details/boost/cregex.hpp
deleted file mode 100644
index 152d7e4..0000000
--- a/libcutl/cutl/details/boost/cregex.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org/libs/regex for most recent version.
- * FILE cregex.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares POSIX API functions
- * + cutl_details_boost::RegEx high level wrapper.
- */
-
-#ifndef BOOST_RE_CREGEX_HPP
-#define BOOST_RE_CREGEX_HPP
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-
-#include <cutl/details/boost/regex/v4/cregex.hpp>
-
-#endif /* include guard */
-
-
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/cstdint.hpp b/libcutl/cutl/details/boost/cstdint.hpp
deleted file mode 100644
index 92641ed..0000000
--- a/libcutl/cutl/details/boost/cstdint.hpp
+++ /dev/null
@@ -1,508 +0,0 @@
-// boost cstdint.hpp header file ------------------------------------------//
-
-// (C) Copyright Beman Dawes 1999.
-// (C) Copyright Jens Mauer 2001
-// (C) Copyright John Maddock 2001
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/integer for documentation.
-
-// Revision History
-// 31 Oct 01 use BOOST_HAS_LONG_LONG to check for "long long" (Jens M.)
-// 16 Apr 01 check LONGLONG_MAX when looking for "long long" (Jens Maurer)
-// 23 Jan 01 prefer "long" over "int" for int32_t and intmax_t (Jens Maurer)
-// 12 Nov 00 Merged <cutl/details/boost/stdint.h> (Jens Maurer)
-// 23 Sep 00 Added INTXX_C macro support (John Maddock).
-// 22 Sep 00 Better 64-bit support (John Maddock)
-// 29 Jun 00 Reimplement to avoid including stdint.h within namespace cutl_details_boost
-// 8 Aug 99 Initial version (Beman Dawes)
-
-
-#ifndef BOOST_CSTDINT_HPP
-#define BOOST_CSTDINT_HPP
-
-//
-// Since we always define the INT#_C macros as per C++0x,
-// define __STDC_CONSTANT_MACROS so that <stdint.h> does the right
-// thing if possible, and so that the user knows that the macros
-// are actually defined as per C99.
-//
-#ifndef __STDC_CONSTANT_MACROS
-# define __STDC_CONSTANT_MACROS
-#endif
-
-#include <cutl/details/boost/config.hpp>
-
-//
-// Note that GLIBC is a bit inconsistent about whether int64_t is defined or not
-// depending upon what headers happen to have been included first...
-// so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG.
-// See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990
-//
-#if defined(BOOST_HAS_STDINT_H) && (!defined(__GLIBC__) || defined(__GLIBC_HAVE_LONG_LONG))
-
-// The following #include is an implementation artifact; not part of interface.
-# ifdef __hpux
-// HP-UX has a vaguely nice <stdint.h> in a non-standard location
-# include <inttypes.h>
-# ifdef __STDC_32_MODE__
- // this is triggered with GCC, because it defines __cplusplus < 199707L
-# define BOOST_NO_INT64_T
-# endif
-# elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX)
-# include <inttypes.h>
-# else
-# include <stdint.h>
-
-// There is a bug in Cygwin two _C macros
-# if defined(__STDC_CONSTANT_MACROS) && defined(__CYGWIN__)
-# undef INTMAX_C
-# undef UINTMAX_C
-# define INTMAX_C(c) c##LL
-# define UINTMAX_C(c) c##ULL
-# endif
-
-# endif
-
-#ifdef __QNX__
-
-// QNX (Dinkumware stdlib) defines these as non-standard names.
-// Reflect to the standard names.
-
-typedef ::intleast8_t int_least8_t;
-typedef ::intfast8_t int_fast8_t;
-typedef ::uintleast8_t uint_least8_t;
-typedef ::uintfast8_t uint_fast8_t;
-
-typedef ::intleast16_t int_least16_t;
-typedef ::intfast16_t int_fast16_t;
-typedef ::uintleast16_t uint_least16_t;
-typedef ::uintfast16_t uint_fast16_t;
-
-typedef ::intleast32_t int_least32_t;
-typedef ::intfast32_t int_fast32_t;
-typedef ::uintleast32_t uint_least32_t;
-typedef ::uintfast32_t uint_fast32_t;
-
-# ifndef BOOST_NO_INT64_T
-
-typedef ::intleast64_t int_least64_t;
-typedef ::intfast64_t int_fast64_t;
-typedef ::uintleast64_t uint_least64_t;
-typedef ::uintfast64_t uint_fast64_t;
-
-# endif
-
-#endif
-
-namespace cutl_details_boost
-{
-
- using ::int8_t;
- using ::int_least8_t;
- using ::int_fast8_t;
- using ::uint8_t;
- using ::uint_least8_t;
- using ::uint_fast8_t;
-
- using ::int16_t;
- using ::int_least16_t;
- using ::int_fast16_t;
- using ::uint16_t;
- using ::uint_least16_t;
- using ::uint_fast16_t;
-
- using ::int32_t;
- using ::int_least32_t;
- using ::int_fast32_t;
- using ::uint32_t;
- using ::uint_least32_t;
- using ::uint_fast32_t;
-
-# ifndef BOOST_NO_INT64_T
-
- using ::int64_t;
- using ::int_least64_t;
- using ::int_fast64_t;
- using ::uint64_t;
- using ::uint_least64_t;
- using ::uint_fast64_t;
-
-# endif
-
- using ::intmax_t;
- using ::uintmax_t;
-
-} // namespace cutl_details_boost
-
-#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__) || defined(__VMS)
-// FreeBSD and Tru64 have an <inttypes.h> that contains much of what we need.
-# include <inttypes.h>
-
-namespace cutl_details_boost {
-
- using ::int8_t;
- typedef int8_t int_least8_t;
- typedef int8_t int_fast8_t;
- using ::uint8_t;
- typedef uint8_t uint_least8_t;
- typedef uint8_t uint_fast8_t;
-
- using ::int16_t;
- typedef int16_t int_least16_t;
- typedef int16_t int_fast16_t;
- using ::uint16_t;
- typedef uint16_t uint_least16_t;
- typedef uint16_t uint_fast16_t;
-
- using ::int32_t;
- typedef int32_t int_least32_t;
- typedef int32_t int_fast32_t;
- using ::uint32_t;
- typedef uint32_t uint_least32_t;
- typedef uint32_t uint_fast32_t;
-
-# ifndef BOOST_NO_INT64_T
-
- using ::int64_t;
- typedef int64_t int_least64_t;
- typedef int64_t int_fast64_t;
- using ::uint64_t;
- typedef uint64_t uint_least64_t;
- typedef uint64_t uint_fast64_t;
-
- typedef int64_t intmax_t;
- typedef uint64_t uintmax_t;
-
-# else
-
- typedef int32_t intmax_t;
- typedef uint32_t uintmax_t;
-
-# endif
-
-} // namespace cutl_details_boost
-
-#else // BOOST_HAS_STDINT_H
-
-# include <cutl/details/boost/limits.hpp> // implementation artifact; not part of interface
-# include <limits.h> // needed for limits macros
-
-
-namespace cutl_details_boost
-{
-
-// These are fairly safe guesses for some 16-bit, and most 32-bit and 64-bit
-// platforms. For other systems, they will have to be hand tailored.
-//
-// Because the fast types are assumed to be the same as the undecorated types,
-// it may be possible to hand tailor a more efficient implementation. Such
-// an optimization may be illusionary; on the Intel x86-family 386 on, for
-// example, byte arithmetic and load/stores are as fast as "int" sized ones.
-
-// 8-bit types ------------------------------------------------------------//
-
-# if UCHAR_MAX == 0xff
- typedef signed char int8_t;
- typedef signed char int_least8_t;
- typedef signed char int_fast8_t;
- typedef unsigned char uint8_t;
- typedef unsigned char uint_least8_t;
- typedef unsigned char uint_fast8_t;
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-
-// 16-bit types -----------------------------------------------------------//
-
-# if USHRT_MAX == 0xffff
-# if defined(__crayx1)
- // The Cray X1 has a 16-bit short, however it is not recommend
- // for use in performance critical code.
- typedef short int16_t;
- typedef short int_least16_t;
- typedef int int_fast16_t;
- typedef unsigned short uint16_t;
- typedef unsigned short uint_least16_t;
- typedef unsigned int uint_fast16_t;
-# else
- typedef short int16_t;
- typedef short int_least16_t;
- typedef short int_fast16_t;
- typedef unsigned short uint16_t;
- typedef unsigned short uint_least16_t;
- typedef unsigned short uint_fast16_t;
-# endif
-# elif (USHRT_MAX == 0xffffffff) && defined(__MTA__)
- // On MTA / XMT short is 32 bits unless the -short16 compiler flag is specified
- // MTA / XMT does support the following non-standard integer types
- typedef __short16 int16_t;
- typedef __short16 int_least16_t;
- typedef __short16 int_fast16_t;
- typedef unsigned __short16 uint16_t;
- typedef unsigned __short16 uint_least16_t;
- typedef unsigned __short16 uint_fast16_t;
-# elif (USHRT_MAX == 0xffffffff) && defined(CRAY)
- // no 16-bit types on Cray:
- typedef short int_least16_t;
- typedef short int_fast16_t;
- typedef unsigned short uint_least16_t;
- typedef unsigned short uint_fast16_t;
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-
-// 32-bit types -----------------------------------------------------------//
-
-# if UINT_MAX == 0xffffffff
- typedef int int32_t;
- typedef int int_least32_t;
- typedef int int_fast32_t;
- typedef unsigned int uint32_t;
- typedef unsigned int uint_least32_t;
- typedef unsigned int uint_fast32_t;
-# elif (USHRT_MAX == 0xffffffff)
- typedef short int32_t;
- typedef short int_least32_t;
- typedef short int_fast32_t;
- typedef unsigned short uint32_t;
- typedef unsigned short uint_least32_t;
- typedef unsigned short uint_fast32_t;
-# elif ULONG_MAX == 0xffffffff
- typedef long int32_t;
- typedef long int_least32_t;
- typedef long int_fast32_t;
- typedef unsigned long uint32_t;
- typedef unsigned long uint_least32_t;
- typedef unsigned long uint_fast32_t;
-# elif (UINT_MAX == 0xffffffffffffffff) && defined(__MTA__)
- // Integers are 64 bits on the MTA / XMT
- typedef __int32 int32_t;
- typedef __int32 int_least32_t;
- typedef __int32 int_fast32_t;
- typedef unsigned __int32 uint32_t;
- typedef unsigned __int32 uint_least32_t;
- typedef unsigned __int32 uint_fast32_t;
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-
-// 64-bit types + intmax_t and uintmax_t ----------------------------------//
-
-# if defined(BOOST_HAS_LONG_LONG) && \
- !defined(BOOST_MSVC) && !defined(__BORLANDC__) && \
- (!defined(__GLIBCPP__) || defined(_GLIBCPP_USE_LONG_LONG)) && \
- (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
-# if defined(__hpux)
- // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
-# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL)
- // 2**64 - 1
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-
- typedef ::cutl_details_boost::long_long_type intmax_t;
- typedef ::cutl_details_boost::ulong_long_type uintmax_t;
- typedef ::cutl_details_boost::long_long_type int64_t;
- typedef ::cutl_details_boost::long_long_type int_least64_t;
- typedef ::cutl_details_boost::long_long_type int_fast64_t;
- typedef ::cutl_details_boost::ulong_long_type uint64_t;
- typedef ::cutl_details_boost::ulong_long_type uint_least64_t;
- typedef ::cutl_details_boost::ulong_long_type uint_fast64_t;
-
-# elif ULONG_MAX != 0xffffffff
-
-# if ULONG_MAX == 18446744073709551615 // 2**64 - 1
- typedef long intmax_t;
- typedef unsigned long uintmax_t;
- typedef long int64_t;
- typedef long int_least64_t;
- typedef long int_fast64_t;
- typedef unsigned long uint64_t;
- typedef unsigned long uint_least64_t;
- typedef unsigned long uint_fast64_t;
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-# elif defined(__GNUC__) && defined(BOOST_HAS_LONG_LONG)
- __extension__ typedef long long intmax_t;
- __extension__ typedef unsigned long long uintmax_t;
- __extension__ typedef long long int64_t;
- __extension__ typedef long long int_least64_t;
- __extension__ typedef long long int_fast64_t;
- __extension__ typedef unsigned long long uint64_t;
- __extension__ typedef unsigned long long uint_least64_t;
- __extension__ typedef unsigned long long uint_fast64_t;
-# elif defined(BOOST_HAS_MS_INT64)
- //
- // we have Borland/Intel/Microsoft __int64:
- //
- typedef __int64 intmax_t;
- typedef unsigned __int64 uintmax_t;
- typedef __int64 int64_t;
- typedef __int64 int_least64_t;
- typedef __int64 int_fast64_t;
- typedef unsigned __int64 uint64_t;
- typedef unsigned __int64 uint_least64_t;
- typedef unsigned __int64 uint_fast64_t;
-# else // assume no 64-bit integers
-# define BOOST_NO_INT64_T
- typedef int32_t intmax_t;
- typedef uint32_t uintmax_t;
-# endif
-
-} // namespace cutl_details_boost
-
-
-#endif // BOOST_HAS_STDINT_H
-
-#endif // BOOST_CSTDINT_HPP
-
-
-/****************************************************
-
-Macro definition section:
-
-Added 23rd September 2000 (John Maddock).
-Modified 11th September 2001 to be excluded when
-BOOST_HAS_STDINT_H is defined (John Maddock).
-Modified 11th Dec 2009 to always define the
-INT#_C macros if they're not already defined (John Maddock).
-
-******************************************************/
-
-#if !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && \
- (!defined(INT8_C) || !defined(INT16_C) || !defined(INT32_C) || !defined(INT64_C))
-//
-// For the following code we get several warnings along the lines of:
-//
-// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant
-//
-// So we declare this a system header to suppress these warnings.
-//
-#if defined(__GNUC__) && (__GNUC__ >= 4)
-#pragma GCC system_header
-#endif
-
-#include <limits.h>
-# define BOOST__STDC_CONSTANT_MACROS_DEFINED
-# if defined(BOOST_HAS_MS_INT64)
-//
-// Borland/Intel/Microsoft compilers have width specific suffixes:
-//
-#ifndef INT8_C
-# define INT8_C(value) value##i8
-#endif
-#ifndef INT16_C
-# define INT16_C(value) value##i16
-#endif
-#ifndef INT32_C
-# define INT32_C(value) value##i32
-#endif
-#ifndef INT64_C
-# define INT64_C(value) value##i64
-#endif
-# ifdef __BORLANDC__
- // Borland bug: appending ui8 makes the type a signed char
-# define UINT8_C(value) static_cast<unsigned char>(value##u)
-# else
-# define UINT8_C(value) value##ui8
-# endif
-#ifndef UINT16_C
-# define UINT16_C(value) value##ui16
-#endif
-#ifndef UINT32_C
-# define UINT32_C(value) value##ui32
-#endif
-#ifndef UINT64_C
-# define UINT64_C(value) value##ui64
-#endif
-#ifndef INTMAX_C
-# define INTMAX_C(value) value##i64
-# define UINTMAX_C(value) value##ui64
-#endif
-
-# else
-// do it the old fashioned way:
-
-// 8-bit types ------------------------------------------------------------//
-
-# if (UCHAR_MAX == 0xff) && !defined(INT8_C)
-# define INT8_C(value) static_cast<cutl_details_boost::int8_t>(value)
-# define UINT8_C(value) static_cast<cutl_details_boost::uint8_t>(value##u)
-# endif
-
-// 16-bit types -----------------------------------------------------------//
-
-# if (USHRT_MAX == 0xffff) && !defined(INT16_C)
-# define INT16_C(value) static_cast<cutl_details_boost::int16_t>(value)
-# define UINT16_C(value) static_cast<cutl_details_boost::uint16_t>(value##u)
-# endif
-
-// 32-bit types -----------------------------------------------------------//
-#ifndef INT32_C
-# if (UINT_MAX == 0xffffffff)
-# define INT32_C(value) value
-# define UINT32_C(value) value##u
-# elif ULONG_MAX == 0xffffffff
-# define INT32_C(value) value##L
-# define UINT32_C(value) value##uL
-# endif
-#endif
-
-// 64-bit types + intmax_t and uintmax_t ----------------------------------//
-#ifndef INT64_C
-# if defined(BOOST_HAS_LONG_LONG) && \
- (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX) || defined(_LLONG_MAX))
-
-# if defined(__hpux)
- // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
-# define INT64_C(value) value##LL
-# define UINT64_C(value) value##uLL
-# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || \
- (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || \
- (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL) || \
- (defined(_LLONG_MAX) && _LLONG_MAX == 18446744073709551615ULL)
-
-# define INT64_C(value) value##LL
-# define UINT64_C(value) value##uLL
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-# elif ULONG_MAX != 0xffffffff
-
-# if ULONG_MAX == 18446744073709551615U // 2**64 - 1
-# define INT64_C(value) value##L
-# define UINT64_C(value) value##uL
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-# elif defined(BOOST_HAS_LONG_LONG)
- // Usual macros not defined, work things out for ourselves:
-# if(~0uLL == 18446744073709551615ULL)
-# define INT64_C(value) value##LL
-# define UINT64_C(value) value##uLL
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-
-# ifdef BOOST_NO_INT64_T
-# define INTMAX_C(value) INT32_C(value)
-# define UINTMAX_C(value) UINT32_C(value)
-# else
-# define INTMAX_C(value) INT64_C(value)
-# define UINTMAX_C(value) UINT64_C(value)
-# endif
-#endif
-# endif // Borland/Microsoft specific width suffixes
-
-#endif // INT#_C macros.
-
-
-
-
diff --git a/libcutl/cutl/details/boost/current_function.hpp b/libcutl/cutl/details/boost/current_function.hpp
deleted file mode 100644
index 1ac7ed7..0000000
--- a/libcutl/cutl/details/boost/current_function.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
-#define BOOST_CURRENT_FUNCTION_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/current_function.hpp - BOOST_CURRENT_FUNCTION
-//
-// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// http://www.boost.org/libs/utility/current_function.html
-//
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline void current_function_helper()
-{
-
-#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600)) || defined(__ghs__)
-
-# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
-
-#elif defined(__DMC__) && (__DMC__ >= 0x810)
-
-# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
-
-#elif defined(__FUNCSIG__)
-
-# define BOOST_CURRENT_FUNCTION __FUNCSIG__
-
-#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && (__IBMCPP__ >= 500))
-
-# define BOOST_CURRENT_FUNCTION __FUNCTION__
-
-#elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x550)
-
-# define BOOST_CURRENT_FUNCTION __FUNC__
-
-#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
-
-# define BOOST_CURRENT_FUNCTION __func__
-
-#else
-
-# define BOOST_CURRENT_FUNCTION "(unknown)"
-
-#endif
-
-}
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
-
diff --git a/libcutl/cutl/details/boost/detail/container_fwd.hpp b/libcutl/cutl/details/boost/detail/container_fwd.hpp
deleted file mode 100644
index c672721..0000000
--- a/libcutl/cutl/details/boost/detail/container_fwd.hpp
+++ /dev/null
@@ -1,162 +0,0 @@
-
-// Copyright 2005-2011 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// Note: if you change this include guard, you also need to change
-// container_fwd_compile_fail.cpp
-#if !defined(BOOST_DETAIL_CONTAINER_FWD_HPP)
-#define BOOST_DETAIL_CONTAINER_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020) && \
- !defined(BOOST_DETAIL_TEST_CONFIG_ONLY)
-# pragma once
-#endif
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// Define BOOST_DETAIL_NO_CONTAINER_FWD if you don't want this header to //
-// forward declare standard containers. //
-// //
-// BOOST_DETAIL_CONTAINER_FWD to make it foward declare containers even if it //
-// normally doesn't. //
-// //
-// BOOST_DETAIL_NO_CONTAINER_FWD overrides BOOST_DETAIL_CONTAINER_FWD. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-#if !defined(BOOST_DETAIL_NO_CONTAINER_FWD)
-# if defined(BOOST_DETAIL_CONTAINER_FWD)
- // Force forward declarations.
-# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
- // STLport
-# define BOOST_DETAIL_NO_CONTAINER_FWD
-# elif defined(__LIBCOMO__)
- // Comeau STL:
-# define BOOST_DETAIL_NO_CONTAINER_FWD
-# elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
- // Rogue Wave library:
-# define BOOST_DETAIL_NO_CONTAINER_FWD
-# elif defined(_LIBCPP_VERSION)
- // libc++
-# define BOOST_DETAIL_NO_CONTAINER_FWD
-# elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
- // GNU libstdc++ 3
- //
- // Disable forwarding for all recent versions, as the library has a
- // versioned namespace mode, and I don't know how to detect it.
-# if __GLIBCXX__ >= 20070513 \
- || defined(_GLIBCXX_DEBUG) \
- || defined(_GLIBCXX_PARALLEL) \
- || defined(_GLIBCXX_PROFILE)
-# define BOOST_DETAIL_NO_CONTAINER_FWD
-# else
-# if defined(__GLIBCXX__) && __GLIBCXX__ >= 20040530
-# define BOOST_CONTAINER_FWD_COMPLEX_STRUCT
-# endif
-# endif
-# elif defined(__STL_CONFIG_H)
- // generic SGI STL
- //
- // Forward declaration seems to be okay, but it has a couple of odd
- // implementations.
-# define BOOST_CONTAINER_FWD_BAD_BITSET
-# if !defined(__STL_NON_TYPE_TMPL_PARAM_BUG)
-# define BOOST_CONTAINER_FWD_BAD_DEQUE
-# endif
-# elif defined(__MSL_CPP__)
- // MSL standard lib:
-# define BOOST_DETAIL_NO_CONTAINER_FWD
-# elif defined(__IBMCPP__)
- // The default VACPP std lib, forward declaration seems to be fine.
-# elif defined(MSIPL_COMPILE_H)
- // Modena C++ standard library
-# define BOOST_DETAIL_NO_CONTAINER_FWD
-# elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
- // Dinkumware Library (this has to appear after any possible replacement
- // libraries)
-# else
-# define BOOST_DETAIL_NO_CONTAINER_FWD
-# endif
-#endif
-
-#if !defined(BOOST_DETAIL_TEST_CONFIG_ONLY)
-
-#if defined(BOOST_DETAIL_NO_CONTAINER_FWD) && \
- !defined(BOOST_DETAIL_TEST_FORCE_CONTAINER_FWD)
-
-#include <deque>
-#include <list>
-#include <vector>
-#include <map>
-#include <set>
-#include <bitset>
-#include <string>
-#include <complex>
-
-#else
-
-#include <cstddef>
-
-#if defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
-#include <deque>
-#endif
-
-#if defined(BOOST_CONTAINER_FWD_BAD_BITSET)
-#include <bitset>
-#endif
-
-#if defined(BOOST_MSVC)
-#pragma warning(push)
-#pragma warning(disable:4099) // struct/class mismatch in fwd declarations
-#endif
-
-namespace std
-{
- template <class T> class allocator;
- template <class charT, class traits, class Allocator> class basic_string;
-
-#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
-
- template <class charT> struct string_char_traits;
-#else
- template <class charT> struct char_traits;
-#endif
-
-#if defined(BOOST_CONTAINER_FWD_COMPLEX_STRUCT)
- template <class T> struct complex;
-#else
- template <class T> class complex;
-#endif
-
-#if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
- template <class T, class Allocator> class deque;
-#endif
-
- template <class T, class Allocator> class list;
- template <class T, class Allocator> class vector;
- template <class Key, class T, class Compare, class Allocator> class map;
- template <class Key, class T, class Compare, class Allocator>
- class multimap;
- template <class Key, class Compare, class Allocator> class set;
- template <class Key, class Compare, class Allocator> class multiset;
-
-#if !defined(BOOST_CONTAINER_FWD_BAD_BITSET)
- template <size_t N> class bitset;
-#endif
- template <class T1, class T2> struct pair;
-}
-
-#if defined(BOOST_MSVC)
-#pragma warning(pop)
-#endif
-
-#endif // BOOST_DETAIL_NO_CONTAINER_FWD &&
- // !defined(BOOST_DETAIL_TEST_FORCE_CONTAINER_FWD)
-
-#endif // BOOST_DETAIL_TEST_CONFIG_ONLY
-
-#endif
diff --git a/libcutl/cutl/details/boost/detail/indirect_traits.hpp b/libcutl/cutl/details/boost/detail/indirect_traits.hpp
deleted file mode 100644
index b3a3bb5..0000000
--- a/libcutl/cutl/details/boost/detail/indirect_traits.hpp
+++ /dev/null
@@ -1,487 +0,0 @@
-// Copyright David Abrahams 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-#ifndef INDIRECT_TRAITS_DWA2002131_HPP
-# define INDIRECT_TRAITS_DWA2002131_HPP
-# include <cutl/details/boost/type_traits/is_function.hpp>
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_pointer.hpp>
-# include <cutl/details/boost/type_traits/is_class.hpp>
-# include <cutl/details/boost/type_traits/is_const.hpp>
-# include <cutl/details/boost/type_traits/is_volatile.hpp>
-# include <cutl/details/boost/type_traits/is_member_function_pointer.hpp>
-# include <cutl/details/boost/type_traits/is_member_pointer.hpp>
-# include <cutl/details/boost/type_traits/remove_cv.hpp>
-# include <cutl/details/boost/type_traits/remove_reference.hpp>
-# include <cutl/details/boost/type_traits/remove_pointer.hpp>
-
-# include <cutl/details/boost/type_traits/detail/ice_and.hpp>
-# include <cutl/details/boost/detail/workaround.hpp>
-
-# include <cutl/details/boost/mpl/eval_if.hpp>
-# include <cutl/details/boost/mpl/if.hpp>
-# include <cutl/details/boost/mpl/bool.hpp>
-# include <cutl/details/boost/mpl/and.hpp>
-# include <cutl/details/boost/mpl/not.hpp>
-# include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-
-# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# include <cutl/details/boost/detail/is_function_ref_tester.hpp>
-# endif
-
-namespace cutl_details_boost { namespace detail {
-
-namespace indirect_traits {
-
-# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <class T>
-struct is_reference_to_const : mpl::false_
-{
-};
-
-template <class T>
-struct is_reference_to_const<T const&> : mpl::true_
-{
-};
-
-# if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround
-template<class T>
-struct is_reference_to_const<T const volatile&> : mpl::true_
-{
-};
-# endif
-
-template <class T>
-struct is_reference_to_function : mpl::false_
-{
-};
-
-template <class T>
-struct is_reference_to_function<T&> : is_function<T>
-{
-};
-
-template <class T>
-struct is_pointer_to_function : mpl::false_
-{
-};
-
-// There's no such thing as a pointer-to-cv-function, so we don't need
-// specializations for those
-template <class T>
-struct is_pointer_to_function<T*> : is_function<T>
-{
-};
-
-template <class T>
-struct is_reference_to_member_function_pointer_impl : mpl::false_
-{
-};
-
-template <class T>
-struct is_reference_to_member_function_pointer_impl<T&>
- : is_member_function_pointer<typename remove_cv<T>::type>
-{
-};
-
-
-template <class T>
-struct is_reference_to_member_function_pointer
- : is_reference_to_member_function_pointer_impl<T>
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T))
-};
-
-template <class T>
-struct is_reference_to_function_pointer_aux
- : mpl::and_<
- is_reference<T>
- , is_pointer_to_function<
- typename remove_cv<
- typename remove_reference<T>::type
- >::type
- >
- >
-{
- // There's no such thing as a pointer-to-cv-function, so we don't need specializations for those
-};
-
-template <class T>
-struct is_reference_to_function_pointer
- : mpl::if_<
- is_reference_to_function<T>
- , mpl::false_
- , is_reference_to_function_pointer_aux<T>
- >::type
-{
-};
-
-template <class T>
-struct is_reference_to_non_const
- : mpl::and_<
- is_reference<T>
- , mpl::not_<
- is_reference_to_const<T>
- >
- >
-{
-};
-
-template <class T>
-struct is_reference_to_volatile : mpl::false_
-{
-};
-
-template <class T>
-struct is_reference_to_volatile<T volatile&> : mpl::true_
-{
-};
-
-# if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround
-template <class T>
-struct is_reference_to_volatile<T const volatile&> : mpl::true_
-{
-};
-# endif
-
-
-template <class T>
-struct is_reference_to_pointer : mpl::false_
-{
-};
-
-template <class T>
-struct is_reference_to_pointer<T*&> : mpl::true_
-{
-};
-
-template <class T>
-struct is_reference_to_pointer<T* const&> : mpl::true_
-{
-};
-
-template <class T>
-struct is_reference_to_pointer<T* volatile&> : mpl::true_
-{
-};
-
-template <class T>
-struct is_reference_to_pointer<T* const volatile&> : mpl::true_
-{
-};
-
-template <class T>
-struct is_reference_to_class
- : mpl::and_<
- is_reference<T>
- , is_class<
- typename remove_cv<
- typename remove_reference<T>::type
- >::type
- >
- >
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T))
-};
-
-template <class T>
-struct is_pointer_to_class
- : mpl::and_<
- is_pointer<T>
- , is_class<
- typename remove_cv<
- typename remove_pointer<T>::type
- >::type
- >
- >
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_class,(T))
-};
-
-# else
-
-using namespace cutl_details_boost::detail::is_function_ref_tester_;
-
-typedef char (&inner_yes_type)[3];
-typedef char (&inner_no_type)[2];
-typedef char (&outer_no_type)[1];
-
-template <typename V>
-struct is_const_help
-{
- typedef typename mpl::if_<
- is_const<V>
- , inner_yes_type
- , inner_no_type
- >::type type;
-};
-
-template <typename V>
-struct is_volatile_help
-{
- typedef typename mpl::if_<
- is_volatile<V>
- , inner_yes_type
- , inner_no_type
- >::type type;
-};
-
-template <typename V>
-struct is_pointer_help
-{
- typedef typename mpl::if_<
- is_pointer<V>
- , inner_yes_type
- , inner_no_type
- >::type type;
-};
-
-template <typename V>
-struct is_class_help
-{
- typedef typename mpl::if_<
- is_class<V>
- , inner_yes_type
- , inner_no_type
- >::type type;
-};
-
-template <class T>
-struct is_reference_to_function_aux
-{
- static T t;
- BOOST_STATIC_CONSTANT(
- bool, value = sizeof(detail::is_function_ref_tester(t,0)) == sizeof(::cutl_details_boost::type_traits::yes_type));
- typedef mpl::bool_<value> type;
- };
-
-template <class T>
-struct is_reference_to_function
- : mpl::if_<is_reference<T>, is_reference_to_function_aux<T>, mpl::bool_<false> >::type
-{
-};
-
-template <class T>
-struct is_pointer_to_function_aux
-{
- static T t;
- BOOST_STATIC_CONSTANT(
- bool, value
- = sizeof(::cutl_details_boost::type_traits::is_function_ptr_tester(t)) == sizeof(::cutl_details_boost::type_traits::yes_type));
- typedef mpl::bool_<value> type;
-};
-
-template <class T>
-struct is_pointer_to_function
- : mpl::if_<is_pointer<T>, is_pointer_to_function_aux<T>, mpl::bool_<false> >::type
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_function,(T))
-};
-
-struct false_helper1
-{
- template <class T>
- struct apply : mpl::false_
- {
- };
-};
-
-template <typename V>
-typename is_const_help<V>::type reference_to_const_helper(V&);
-outer_no_type
-reference_to_const_helper(...);
-
-struct true_helper1
-{
- template <class T>
- struct apply
- {
- static T t;
- BOOST_STATIC_CONSTANT(
- bool, value
- = sizeof(reference_to_const_helper(t)) == sizeof(inner_yes_type));
- typedef mpl::bool_<value> type;
- };
-};
-
-template <bool ref = true>
-struct is_reference_to_const_helper1 : true_helper1
-{
-};
-
-template <>
-struct is_reference_to_const_helper1<false> : false_helper1
-{
-};
-
-
-template <class T>
-struct is_reference_to_const
- : is_reference_to_const_helper1<is_reference<T>::value>::template apply<T>
-{
-};
-
-
-template <bool ref = true>
-struct is_reference_to_non_const_helper1
-{
- template <class T>
- struct apply
- {
- static T t;
- BOOST_STATIC_CONSTANT(
- bool, value
- = sizeof(reference_to_const_helper(t)) == sizeof(inner_no_type));
-
- typedef mpl::bool_<value> type;
- };
-};
-
-template <>
-struct is_reference_to_non_const_helper1<false> : false_helper1
-{
-};
-
-
-template <class T>
-struct is_reference_to_non_const
- : is_reference_to_non_const_helper1<is_reference<T>::value>::template apply<T>
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_non_const,(T))
-};
-
-
-template <typename V>
-typename is_volatile_help<V>::type reference_to_volatile_helper(V&);
-outer_no_type
-reference_to_volatile_helper(...);
-
-template <bool ref = true>
-struct is_reference_to_volatile_helper1
-{
- template <class T>
- struct apply
- {
- static T t;
- BOOST_STATIC_CONSTANT(
- bool, value
- = sizeof(reference_to_volatile_helper(t)) == sizeof(inner_yes_type));
- typedef mpl::bool_<value> type;
- };
-};
-
-template <>
-struct is_reference_to_volatile_helper1<false> : false_helper1
-{
-};
-
-
-template <class T>
-struct is_reference_to_volatile
- : is_reference_to_volatile_helper1<is_reference<T>::value>::template apply<T>
-{
-};
-
-template <typename V>
-typename is_pointer_help<V>::type reference_to_pointer_helper(V&);
-outer_no_type reference_to_pointer_helper(...);
-
-template <class T>
-struct reference_to_pointer_impl
-{
- static T t;
- BOOST_STATIC_CONSTANT(
- bool, value
- = (sizeof((reference_to_pointer_helper)(t)) == sizeof(inner_yes_type))
- );
-
- typedef mpl::bool_<value> type;
-};
-
-template <class T>
-struct is_reference_to_pointer
- : mpl::eval_if<is_reference<T>, reference_to_pointer_impl<T>, mpl::false_>::type
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_pointer,(T))
-};
-
-template <class T>
-struct is_reference_to_function_pointer
- : mpl::eval_if<is_reference<T>, is_pointer_to_function_aux<T>, mpl::false_>::type
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_function_pointer,(T))
-};
-
-
-template <class T>
-struct is_member_function_pointer_help
- : mpl::if_<is_member_function_pointer<T>, inner_yes_type, inner_no_type>
-{};
-
-template <typename V>
-typename is_member_function_pointer_help<V>::type member_function_pointer_helper(V&);
-outer_no_type member_function_pointer_helper(...);
-
-template <class T>
-struct is_pointer_to_member_function_aux
-{
- static T t;
- BOOST_STATIC_CONSTANT(
- bool, value
- = sizeof((member_function_pointer_helper)(t)) == sizeof(inner_yes_type));
- typedef mpl::bool_<value> type;
-};
-
-template <class T>
-struct is_reference_to_member_function_pointer
- : mpl::if_<
- is_reference<T>
- , is_pointer_to_member_function_aux<T>
- , mpl::bool_<false>
- >::type
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T))
-};
-
-template <typename V>
-typename is_class_help<V>::type reference_to_class_helper(V const volatile&);
-outer_no_type reference_to_class_helper(...);
-
-template <class T>
-struct is_reference_to_class
-{
- static T t;
- BOOST_STATIC_CONSTANT(
- bool, value
- = (is_reference<T>::value
- & (sizeof(reference_to_class_helper(t)) == sizeof(inner_yes_type)))
- );
- typedef mpl::bool_<value> type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T))
-};
-
-template <typename V>
-typename is_class_help<V>::type pointer_to_class_helper(V const volatile*);
-outer_no_type pointer_to_class_helper(...);
-
-template <class T>
-struct is_pointer_to_class
-{
- static T t;
- BOOST_STATIC_CONSTANT(
- bool, value
- = (is_pointer<T>::value
- && sizeof(pointer_to_class_helper(t)) == sizeof(inner_yes_type))
- );
- typedef mpl::bool_<value> type;
-};
-# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-}
-
-using namespace indirect_traits;
-
-}} // namespace cutl_details_boost::python::detail
-
-#endif // INDIRECT_TRAITS_DWA2002131_HPP
diff --git a/libcutl/cutl/details/boost/detail/interlocked.hpp b/libcutl/cutl/details/boost/detail/interlocked.hpp
deleted file mode 100644
index b60b92c..0000000
--- a/libcutl/cutl/details/boost/detail/interlocked.hpp
+++ /dev/null
@@ -1,180 +0,0 @@
-#ifndef BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
-#define BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/detail/interlocked.hpp
-//
-// Copyright 2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/config.hpp>
-
-#if defined( BOOST_USE_WINDOWS_H )
-
-# include <windows.h>
-
-# define BOOST_INTERLOCKED_INCREMENT InterlockedIncrement
-# define BOOST_INTERLOCKED_DECREMENT InterlockedDecrement
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE InterlockedCompareExchange
-# define BOOST_INTERLOCKED_EXCHANGE InterlockedExchange
-# define BOOST_INTERLOCKED_EXCHANGE_ADD InterlockedExchangeAdd
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER InterlockedCompareExchangePointer
-# define BOOST_INTERLOCKED_EXCHANGE_POINTER InterlockedExchangePointer
-
-#elif defined(_WIN32_WCE)
-
-#if _WIN32_WCE >= 0x600
-
-extern "C" long __cdecl _InterlockedIncrement( long volatile * );
-extern "C" long __cdecl _InterlockedDecrement( long volatile * );
-extern "C" long __cdecl _InterlockedCompareExchange( long volatile *, long, long );
-extern "C" long __cdecl _InterlockedExchange( long volatile *, long );
-extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long );
-
-# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement
-# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange
-# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange
-# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd
-
-#else
-// under Windows CE we still have old-style Interlocked* functions
-
-extern "C" long __cdecl InterlockedIncrement( long* );
-extern "C" long __cdecl InterlockedDecrement( long* );
-extern "C" long __cdecl InterlockedCompareExchange( long*, long, long );
-extern "C" long __cdecl InterlockedExchange( long*, long );
-extern "C" long __cdecl InterlockedExchangeAdd( long*, long );
-
-# define BOOST_INTERLOCKED_INCREMENT InterlockedIncrement
-# define BOOST_INTERLOCKED_DECREMENT InterlockedDecrement
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE InterlockedCompareExchange
-# define BOOST_INTERLOCKED_EXCHANGE InterlockedExchange
-# define BOOST_INTERLOCKED_EXCHANGE_ADD InterlockedExchangeAdd
-
-#endif
-
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
- ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long*)(dest),(long)(exchange),(long)(compare)))
-# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
- ((void*)BOOST_INTERLOCKED_EXCHANGE((long*)(dest),(long)(exchange)))
-
-#elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN )
-
-#if defined( BOOST_MSVC ) && BOOST_MSVC >= 1600
-
-#include <intrin.h>
-
-#elif defined( __CLRCALL_PURE_OR_CDECL )
-
-extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedIncrement( long volatile * );
-extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedDecrement( long volatile * );
-extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedCompareExchange( long volatile *, long, long );
-extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedExchange( long volatile *, long );
-extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedExchangeAdd( long volatile *, long );
-
-#else
-
-extern "C" long __cdecl _InterlockedIncrement( long volatile * );
-extern "C" long __cdecl _InterlockedDecrement( long volatile * );
-extern "C" long __cdecl _InterlockedCompareExchange( long volatile *, long, long );
-extern "C" long __cdecl _InterlockedExchange( long volatile *, long );
-extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long );
-
-#endif
-
-# pragma intrinsic( _InterlockedIncrement )
-# pragma intrinsic( _InterlockedDecrement )
-# pragma intrinsic( _InterlockedCompareExchange )
-# pragma intrinsic( _InterlockedExchange )
-# pragma intrinsic( _InterlockedExchangeAdd )
-
-# if defined(_M_IA64) || defined(_M_AMD64)
-
-extern "C" void* __cdecl _InterlockedCompareExchangePointer( void* volatile *, void*, void* );
-extern "C" void* __cdecl _InterlockedExchangePointer( void* volatile *, void* );
-
-# pragma intrinsic( _InterlockedCompareExchangePointer )
-# pragma intrinsic( _InterlockedExchangePointer )
-
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer
-# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer
-
-# else
-
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
- ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
-# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
- ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
-
-# endif
-
-# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement
-# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange
-# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange
-# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd
-
-#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ )
-
-#if defined(__MINGW64__)
-#define BOOST_INTERLOCKED_IMPORT
-#else
-#define BOOST_INTERLOCKED_IMPORT __declspec(dllimport)
-#endif
-
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedIncrement( long volatile * );
-extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedDecrement( long volatile * );
-extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedCompareExchange( long volatile *, long, long );
-extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchange( long volatile *, long );
-extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchangeAdd( long volatile *, long );
-
-# if defined(_M_IA64) || defined(_M_AMD64)
-extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedCompareExchangePointer( void* volatile *, void*, void* );
-extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedExchangePointer( void* volatile *, void* );
-# endif
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-# define BOOST_INTERLOCKED_INCREMENT ::cutl_details_boost::detail::InterlockedIncrement
-# define BOOST_INTERLOCKED_DECREMENT ::cutl_details_boost::detail::InterlockedDecrement
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE ::cutl_details_boost::detail::InterlockedCompareExchange
-# define BOOST_INTERLOCKED_EXCHANGE ::cutl_details_boost::detail::InterlockedExchange
-# define BOOST_INTERLOCKED_EXCHANGE_ADD ::cutl_details_boost::detail::InterlockedExchangeAdd
-
-# if defined(_M_IA64) || defined(_M_AMD64)
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER ::cutl_details_boost::detail::InterlockedCompareExchangePointer
-# define BOOST_INTERLOCKED_EXCHANGE_POINTER ::cutl_details_boost::detail::InterlockedExchangePointer
-# else
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
- ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
-# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
- ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
-# endif
-
-#else
-
-# error "Interlocked intrinsics not available"
-
-#endif
-
-#endif // #ifndef BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/detail/is_function_ref_tester.hpp b/libcutl/cutl/details/boost/detail/is_function_ref_tester.hpp
deleted file mode 100644
index a96c8f5..0000000
--- a/libcutl/cutl/details/boost/detail/is_function_ref_tester.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
-#define BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
-
-#include "cutl/details/boost/type_traits/detail/yes_no_type.hpp"
-#include "cutl/details/boost/type_traits/config.hpp"
-
-#if defined(BOOST_TT_PREPROCESSING_MODE)
-# include "cutl/details/boost/preprocessor/iterate.hpp"
-# include "cutl/details/boost/preprocessor/enum_params.hpp"
-# include "cutl/details/boost/preprocessor/comma_if.hpp"
-#endif
-
-namespace cutl_details_boost {
-namespace detail {
-namespace is_function_ref_tester_ {
-
-template <class T>
-cutl_details_boost::type_traits::no_type BOOST_TT_DECL is_function_ref_tester(T& ...);
-
-#if !defined(BOOST_TT_PREPROCESSING_MODE)
-// preprocessor-generated part, don't edit by hand!
-
-template <class R>
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(), int);
-
-template <class R,class T0 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0), int);
-
-template <class R,class T0,class T1 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1), int);
-
-template <class R,class T0,class T1,class T2 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2), int);
-
-template <class R,class T0,class T1,class T2,class T3 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23), int);
-
-template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23,class T24 >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24), int);
-
-#else
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3, (0, 25, "cutl/details/boost/detail/is_function_ref_tester.hpp"))
-#include BOOST_PP_ITERATE()
-
-#endif // BOOST_TT_PREPROCESSING_MODE
-
-} // namespace detail
-} // namespace python
-} // namespace cutl_details_boost
-
-#endif // BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define i BOOST_PP_FRAME_ITERATION(1)
-
-template <class R BOOST_PP_COMMA_IF(i) BOOST_PP_ENUM_PARAMS(i,class T) >
-cutl_details_boost::type_traits::yes_type is_function_ref_tester(R (&)(BOOST_PP_ENUM_PARAMS(i,T)), int);
-
-#undef i
-#endif // BOOST_PP_IS_ITERATING
-
diff --git a/libcutl/cutl/details/boost/detail/iterator.hpp b/libcutl/cutl/details/boost/detail/iterator.hpp
deleted file mode 100644
index cf66c9b..0000000
--- a/libcutl/cutl/details/boost/detail/iterator.hpp
+++ /dev/null
@@ -1,494 +0,0 @@
-// (C) Copyright David Abrahams 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// Boost versions of
-//
-// std::iterator_traits<>::iterator_category
-// std::iterator_traits<>::difference_type
-// std::distance()
-//
-// ...for all compilers and iterators
-//
-// Additionally, if X is a pointer
-// std::iterator_traits<X>::pointer
-
-// Otherwise, if partial specialization is supported or X is not a pointer
-// std::iterator_traits<X>::value_type
-// std::iterator_traits<X>::pointer
-// std::iterator_traits<X>::reference
-//
-// See http://www.boost.org for most recent version including documentation.
-
-// Revision History
-// 04 Mar 2001 - More attempted fixes for Intel C++ (David Abrahams)
-// 03 Mar 2001 - Put all implementation into namespace
-// cutl_details_boost::detail::iterator_traits_. Some progress made on fixes
-// for Intel compiler. (David Abrahams)
-// 02 Mar 2001 - Changed BOOST_MSVC to BOOST_MSVC_STD_ITERATOR in a few
-// places. (Jeremy Siek)
-// 19 Feb 2001 - Improved workarounds for stock MSVC6; use yes_type and
-// no_type from type_traits.hpp; stopped trying to remove_cv
-// before detecting is_pointer, in honor of the new type_traits
-// semantics. (David Abrahams)
-// 13 Feb 2001 - Make it work with nearly all standard-conforming iterators
-// under raw VC6. The one category remaining which will fail is
-// that of iterators derived from std::iterator but not
-// cutl_details_boost::iterator and which redefine difference_type.
-// 11 Feb 2001 - Clean away code which can never be used (David Abrahams)
-// 09 Feb 2001 - Always have a definition for each traits member, even if it
-// can't be properly deduced. These will be incomplete types in
-// some cases (undefined<void>), but it helps suppress MSVC errors
-// elsewhere (David Abrahams)
-// 07 Feb 2001 - Support for more of the traits members where possible, making
-// this useful as a replacement for std::iterator_traits<T> when
-// used as a default template parameter.
-// 06 Feb 2001 - Removed useless #includes of standard library headers
-// (David Abrahams)
-
-#ifndef ITERATOR_DWA122600_HPP_
-# define ITERATOR_DWA122600_HPP_
-
-# include <cutl/details/boost/config.hpp>
-# include <iterator>
-
-// STLPort 4.0 and betas have a bug when debugging is enabled and there is no
-// partial specialization: instead of an iterator_category typedef, the standard
-// container iterators have _Iterator_category.
-//
-// Also, whether debugging is enabled or not, there is a broken specialization
-// of std::iterator<output_iterator_tag,void,void,void,void> which has no
-// typedefs but iterator_category.
-# if defined(__SGI_STL_PORT)
-
-# if (__SGI_STL_PORT <= 0x410) && !defined(__STL_CLASS_PARTIAL_SPECIALIZATION) && defined(__STL_DEBUG)
-# define BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
-# endif
-
-# define BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
-
-# endif // STLPort <= 4.1b4 && no partial specialization
-
-# if !defined(BOOST_NO_STD_ITERATOR_TRAITS) \
- && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !defined(BOOST_MSVC_STD_ITERATOR)
-
-namespace cutl_details_boost { namespace detail {
-
-// Define a new template so it can be specialized
-template <class Iterator>
-struct iterator_traits
- : std::iterator_traits<Iterator>
-{};
-using std::distance;
-
-}} // namespace cutl_details_boost::detail
-
-# else
-
-# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !defined(BOOST_MSVC_STD_ITERATOR)
-
-// This is the case where everything conforms except BOOST_NO_STD_ITERATOR_TRAITS
-
-namespace cutl_details_boost { namespace detail {
-
-// Rogue Wave Standard Library fools itself into thinking partial
-// specialization is missing on some platforms (e.g. Sun), so fails to
-// supply iterator_traits!
-template <class Iterator>
-struct iterator_traits
-{
- typedef typename Iterator::value_type value_type;
- typedef typename Iterator::reference reference;
- typedef typename Iterator::pointer pointer;
- typedef typename Iterator::difference_type difference_type;
- typedef typename Iterator::iterator_category iterator_category;
-};
-
-template <class T>
-struct iterator_traits<T*>
-{
- typedef T value_type;
- typedef T& reference;
- typedef T* pointer;
- typedef std::ptrdiff_t difference_type;
- typedef std::random_access_iterator_tag iterator_category;
-};
-
-template <class T>
-struct iterator_traits<T const*>
-{
- typedef T value_type;
- typedef T const& reference;
- typedef T const* pointer;
- typedef std::ptrdiff_t difference_type;
- typedef std::random_access_iterator_tag iterator_category;
-};
-
-}} // namespace cutl_details_boost::detail
-
-# else
-
-# include <cutl/details/boost/type_traits/remove_const.hpp>
-# include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-# include <cutl/details/boost/type_traits/is_pointer.hpp>
-
-# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# include <cutl/details/boost/type_traits/is_same.hpp>
-# include <cutl/details/boost/type_traits/remove_pointer.hpp>
-# endif
-# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
-# include <cutl/details/boost/type_traits/is_base_and_derived.hpp>
-# endif
-
-# include <cutl/details/boost/mpl/if.hpp>
-# include <cutl/details/boost/mpl/has_xxx.hpp>
-# include <cstddef>
-
-// should be the last #include
-# include "cutl/details/boost/type_traits/detail/bool_trait_def.hpp"
-
-namespace cutl_details_boost { namespace detail {
-
-BOOST_MPL_HAS_XXX_TRAIT_DEF(value_type)
-BOOST_MPL_HAS_XXX_TRAIT_DEF(reference)
-BOOST_MPL_HAS_XXX_TRAIT_DEF(pointer)
-BOOST_MPL_HAS_XXX_TRAIT_DEF(difference_type)
-BOOST_MPL_HAS_XXX_TRAIT_DEF(iterator_category)
-
-// is_mutable_iterator --
-//
-// A metafunction returning true iff T is a mutable iterator type
-// with a nested value_type. Will only work portably with iterators
-// whose operator* returns a reference, but that seems to be OK for
-// the iterators supplied by Dinkumware. Some input iterators may
-// compile-time if they arrive here, and if the compiler is strict
-// about not taking the address of an rvalue.
-
-// This one detects ordinary mutable iterators - the result of
-// operator* is convertible to the value_type.
-template <class T>
-type_traits::yes_type is_mutable_iterator_helper(T const*, BOOST_DEDUCED_TYPENAME T::value_type*);
-
-// Since you can't take the address of an rvalue, the guts of
-// is_mutable_iterator_impl will fail if we use &*t directly. This
-// makes sure we can still work with non-lvalue iterators.
-template <class T> T* mutable_iterator_lvalue_helper(T& x);
-int mutable_iterator_lvalue_helper(...);
-
-
-// This one detects output iterators such as ostream_iterator which
-// return references to themselves.
-template <class T>
-type_traits::yes_type is_mutable_iterator_helper(T const*, T const*);
-
-type_traits::no_type is_mutable_iterator_helper(...);
-
-template <class T>
-struct is_mutable_iterator_impl
-{
- static T t;
-
- BOOST_STATIC_CONSTANT(
- bool, value = sizeof(
- detail::is_mutable_iterator_helper(
- (T*)0
- , mutable_iterator_lvalue_helper(*t) // like &*t
- ))
- == sizeof(type_traits::yes_type)
- );
-};
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(
- is_mutable_iterator,T,::cutl_details_boost::detail::is_mutable_iterator_impl<T>::value)
-
-
-// is_full_iterator_traits --
-//
-// A metafunction returning true iff T has all the requisite nested
-// types to satisfy the requirements for a fully-conforming
-// iterator_traits implementation.
-template <class T>
-struct is_full_iterator_traits_impl
-{
- enum { value =
- has_value_type<T>::value
- & has_reference<T>::value
- & has_pointer<T>::value
- & has_difference_type<T>::value
- & has_iterator_category<T>::value
- };
-};
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(
- is_full_iterator_traits,T,::cutl_details_boost::detail::is_full_iterator_traits_impl<T>::value)
-
-
-# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
-BOOST_MPL_HAS_XXX_TRAIT_DEF(_Iterator_category)
-
-// is_stlport_40_debug_iterator --
-//
-// A metafunction returning true iff T has all the requisite nested
-// types to satisfy the requirements of an STLPort 4.0 debug iterator
-// iterator_traits implementation.
-template <class T>
-struct is_stlport_40_debug_iterator_impl
-{
- enum { value =
- has_value_type<T>::value
- & has_reference<T>::value
- & has_pointer<T>::value
- & has_difference_type<T>::value
- & has__Iterator_category<T>::value
- };
-};
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(
- is_stlport_40_debug_iterator,T,::cutl_details_boost::detail::is_stlport_40_debug_iterator_impl<T>::value)
-
-template <class T>
-struct stlport_40_debug_iterator_traits
-{
- typedef typename T::value_type value_type;
- typedef typename T::reference reference;
- typedef typename T::pointer pointer;
- typedef typename T::difference_type difference_type;
- typedef typename T::_Iterator_category iterator_category;
-};
-# endif // BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
-
-template <class T> struct pointer_iterator_traits;
-
-# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <class T>
-struct pointer_iterator_traits<T*>
-{
- typedef typename remove_const<T>::type value_type;
- typedef T* pointer;
- typedef T& reference;
- typedef std::random_access_iterator_tag iterator_category;
- typedef std::ptrdiff_t difference_type;
-};
-# else
-
-// In case of no template partial specialization, and if T is a
-// pointer, iterator_traits<T>::value_type can still be computed. For
-// some basic types, remove_pointer is manually defined in
-// type_traits/broken_compiler_spec.hpp. For others, do it yourself.
-
-template<class P> class please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee;
-
-template<class P>
-struct pointer_value_type
- : mpl::if_<
- is_same<P, typename remove_pointer<P>::type>
- , please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee<P>
- , typename remove_const<
- typename remove_pointer<P>::type
- >::type
- >
-{
-};
-
-
-template<class P>
-struct pointer_reference
- : mpl::if_<
- is_same<P, typename remove_pointer<P>::type>
- , please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee<P>
- , typename remove_pointer<P>::type&
- >
-{
-};
-
-template <class T>
-struct pointer_iterator_traits
-{
- typedef T pointer;
- typedef std::random_access_iterator_tag iterator_category;
- typedef std::ptrdiff_t difference_type;
-
- typedef typename pointer_value_type<T>::type value_type;
- typedef typename pointer_reference<T>::type reference;
-};
-
-# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-// We'll sort iterator types into one of these classifications, from which we
-// can determine the difference_type, pointer, reference, and value_type
-template <class Iterator>
-struct standard_iterator_traits
-{
- typedef typename Iterator::difference_type difference_type;
- typedef typename Iterator::value_type value_type;
- typedef typename Iterator::pointer pointer;
- typedef typename Iterator::reference reference;
- typedef typename Iterator::iterator_category iterator_category;
-};
-
-template <class Iterator>
-struct msvc_stdlib_mutable_traits
- : std::iterator_traits<Iterator>
-{
- typedef typename std::iterator_traits<Iterator>::distance_type difference_type;
- typedef typename std::iterator_traits<Iterator>::value_type* pointer;
- typedef typename std::iterator_traits<Iterator>::value_type& reference;
-};
-
-template <class Iterator>
-struct msvc_stdlib_const_traits
- : std::iterator_traits<Iterator>
-{
- typedef typename std::iterator_traits<Iterator>::distance_type difference_type;
- typedef const typename std::iterator_traits<Iterator>::value_type* pointer;
- typedef const typename std::iterator_traits<Iterator>::value_type& reference;
-};
-
-# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
-template <class Iterator>
-struct is_bad_output_iterator
- : is_base_and_derived<
- std::iterator<std::output_iterator_tag,void,void,void,void>
- , Iterator>
-{
-};
-
-struct bad_output_iterator_traits
-{
- typedef void value_type;
- typedef void difference_type;
- typedef std::output_iterator_tag iterator_category;
- typedef void pointer;
- typedef void reference;
-};
-# endif
-
-// If we're looking at an MSVC6 (old Dinkumware) ``standard''
-// iterator, this will generate an appropriate traits class.
-template <class Iterator>
-struct msvc_stdlib_iterator_traits
- : mpl::if_<
- is_mutable_iterator<Iterator>
- , msvc_stdlib_mutable_traits<Iterator>
- , msvc_stdlib_const_traits<Iterator>
- >::type
-{};
-
-template <class Iterator>
-struct non_pointer_iterator_traits
- : mpl::if_<
- // if the iterator contains all the right nested types...
- is_full_iterator_traits<Iterator>
- // Use a standard iterator_traits implementation
- , standard_iterator_traits<Iterator>
-# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
- // Check for STLPort 4.0 broken _Iterator_category type
- , mpl::if_<
- is_stlport_40_debug_iterator<Iterator>
- , stlport_40_debug_iterator_traits<Iterator>
-# endif
- // Otherwise, assume it's a Dinkum iterator
- , msvc_stdlib_iterator_traits<Iterator>
-# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
- >::type
-# endif
- >::type
-{
-};
-
-template <class Iterator>
-struct iterator_traits_aux
- : mpl::if_<
- is_pointer<Iterator>
- , pointer_iterator_traits<Iterator>
- , non_pointer_iterator_traits<Iterator>
- >::type
-{
-};
-
-template <class Iterator>
-struct iterator_traits
-{
- // Explicit forwarding from base class needed to keep MSVC6 happy
- // under some circumstances.
- private:
-# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
- typedef
- typename mpl::if_<
- is_bad_output_iterator<Iterator>
- , bad_output_iterator_traits
- , iterator_traits_aux<Iterator>
- >::type base;
-# else
- typedef iterator_traits_aux<Iterator> base;
-# endif
- public:
- typedef typename base::value_type value_type;
- typedef typename base::pointer pointer;
- typedef typename base::reference reference;
- typedef typename base::difference_type difference_type;
- typedef typename base::iterator_category iterator_category;
-};
-
-// This specialization cuts off ETI (Early Template Instantiation) for MSVC.
-template <> struct iterator_traits<int>
-{
- typedef int value_type;
- typedef int pointer;
- typedef int reference;
- typedef int difference_type;
- typedef int iterator_category;
-};
-
-}} // namespace cutl_details_boost::detail
-
-# endif // workarounds
-
-namespace cutl_details_boost { namespace detail {
-
-namespace iterator_traits_
-{
- template <class Iterator, class Difference>
- struct distance_select
- {
- static Difference execute(Iterator i1, const Iterator i2, ...)
- {
- Difference result = 0;
- while (i1 != i2)
- {
- ++i1;
- ++result;
- }
- return result;
- }
-
- static Difference execute(Iterator i1, const Iterator i2, std::random_access_iterator_tag*)
- {
- return i2 - i1;
- }
- };
-} // namespace cutl_details_boost::detail::iterator_traits_
-
-template <class Iterator>
-inline typename iterator_traits<Iterator>::difference_type
-distance(Iterator first, Iterator last)
-{
- typedef typename iterator_traits<Iterator>::difference_type diff_t;
- typedef typename ::cutl_details_boost::detail::iterator_traits<Iterator>::iterator_category iterator_category;
-
- return iterator_traits_::distance_select<Iterator,diff_t>::execute(
- first, last, (iterator_category*)0);
-}
-
-}}
-
-# endif
-
-
-# undef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
-# undef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
-
-#endif // ITERATOR_DWA122600_HPP_
diff --git a/libcutl/cutl/details/boost/detail/lightweight_mutex.hpp b/libcutl/cutl/details/boost/detail/lightweight_mutex.hpp
deleted file mode 100644
index 19758c0..0000000
--- a/libcutl/cutl/details/boost/detail/lightweight_mutex.hpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
-#define BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/detail/lightweight_mutex.hpp - lightweight mutex
-//
-// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-//
-
-#include <cutl/details/boost/smart_ptr/detail/lightweight_mutex.hpp>
-
-#endif // #ifndef BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/detail/sp_typeinfo.hpp b/libcutl/cutl/details/boost/detail/sp_typeinfo.hpp
deleted file mode 100644
index 6ea84c4..0000000
--- a/libcutl/cutl/details/boost/detail/sp_typeinfo.hpp
+++ /dev/null
@@ -1,135 +0,0 @@
-#ifndef BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED
-#define BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-// detail/sp_typeinfo.hpp
-//
-// Copyright 2007 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#include <cutl/details/boost/config.hpp>
-
-#if defined( BOOST_NO_TYPEID )
-
-#include <cutl/details/boost/current_function.hpp>
-#include <functional>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class sp_typeinfo
-{
-private:
-
- sp_typeinfo( sp_typeinfo const& );
- sp_typeinfo& operator=( sp_typeinfo const& );
-
- char const * name_;
-
-public:
-
- explicit sp_typeinfo( char const * name ): name_( name )
- {
- }
-
- bool operator==( sp_typeinfo const& rhs ) const
- {
- return this == &rhs;
- }
-
- bool operator!=( sp_typeinfo const& rhs ) const
- {
- return this != &rhs;
- }
-
- bool before( sp_typeinfo const& rhs ) const
- {
- return std::less< sp_typeinfo const* >()( this, &rhs );
- }
-
- char const* name() const
- {
- return name_;
- }
-};
-
-template<class T> struct sp_typeid_
-{
- static sp_typeinfo ti_;
-
- static char const * name()
- {
- return BOOST_CURRENT_FUNCTION;
- }
-};
-
-#if defined(__SUNPRO_CC)
-// see #4199, the Sun Studio compiler gets confused about static initialization
-// constructor arguments. But an assignment works just fine.
-template<class T> sp_typeinfo sp_typeid_< T >::ti_ = sp_typeid_< T >::name();
-#else
-template<class T> sp_typeinfo sp_typeid_< T >::ti_(sp_typeid_< T >::name());
-#endif
-
-template<class T> struct sp_typeid_< T & >: sp_typeid_< T >
-{
-};
-
-template<class T> struct sp_typeid_< T const >: sp_typeid_< T >
-{
-};
-
-template<class T> struct sp_typeid_< T volatile >: sp_typeid_< T >
-{
-};
-
-template<class T> struct sp_typeid_< T const volatile >: sp_typeid_< T >
-{
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#define BOOST_SP_TYPEID(T) (cutl_details_boost::detail::sp_typeid_<T>::ti_)
-
-#else
-
-#include <typeinfo>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-#if defined( BOOST_NO_STD_TYPEINFO )
-
-typedef ::type_info sp_typeinfo;
-
-#else
-
-typedef std::type_info sp_typeinfo;
-
-#endif
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#define BOOST_SP_TYPEID(T) typeid(T)
-
-#endif
-
-#endif // #ifndef BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/detail/workaround.hpp b/libcutl/cutl/details/boost/detail/workaround.hpp
deleted file mode 100644
index 914faab..0000000
--- a/libcutl/cutl/details/boost/detail/workaround.hpp
+++ /dev/null
@@ -1,267 +0,0 @@
-// Copyright David Abrahams 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-#ifndef WORKAROUND_DWA2002126_HPP
-# define WORKAROUND_DWA2002126_HPP
-
-// Compiler/library version workaround macro
-//
-// Usage:
-//
-// #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-// // workaround for eVC4 and VC6
-// ... // workaround code here
-// #endif
-//
-// When BOOST_STRICT_CONFIG is defined, expands to 0. Otherwise, the
-// first argument must be undefined or expand to a numeric
-// value. The above expands to:
-//
-// (BOOST_MSVC) != 0 && (BOOST_MSVC) < 1300
-//
-// When used for workarounds that apply to the latest known version
-// and all earlier versions of a compiler, the following convention
-// should be observed:
-//
-// #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1301))
-//
-// The version number in this case corresponds to the last version in
-// which the workaround was known to have been required. When
-// BOOST_DETECT_OUTDATED_WORKAROUNDS is not the defined, the macro
-// BOOST_TESTED_AT(x) expands to "!= 0", which effectively activates
-// the workaround for any version of the compiler. When
-// BOOST_DETECT_OUTDATED_WORKAROUNDS is defined, a compiler warning or
-// error will be issued if the compiler version exceeds the argument
-// to BOOST_TESTED_AT(). This can be used to locate workarounds which
-// may be obsoleted by newer versions.
-
-# ifndef BOOST_STRICT_CONFIG
-
-#include <cutl/details/boost/config.hpp>
-
-#ifndef __BORLANDC__
-#define __BORLANDC___WORKAROUND_GUARD 1
-#else
-#define __BORLANDC___WORKAROUND_GUARD 0
-#endif
-#ifndef __CODEGEARC__
-#define __CODEGEARC___WORKAROUND_GUARD 1
-#else
-#define __CODEGEARC___WORKAROUND_GUARD 0
-#endif
-#ifndef _MSC_VER
-#define _MSC_VER_WORKAROUND_GUARD 1
-#else
-#define _MSC_VER_WORKAROUND_GUARD 0
-#endif
-#ifndef _MSC_FULL_VER
-#define _MSC_FULL_VER_WORKAROUND_GUARD 1
-#else
-#define _MSC_FULL_VER_WORKAROUND_GUARD 0
-#endif
-#ifndef BOOST_MSVC
-#define BOOST_MSVC_WORKAROUND_GUARD 1
-#else
-#define BOOST_MSVC_WORKAROUND_GUARD 0
-#endif
-#ifndef BOOST_MSVC_FULL_VER
-#define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 1
-#else
-#define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 0
-#endif
-#ifndef __GNUC__
-#define __GNUC___WORKAROUND_GUARD 1
-#else
-#define __GNUC___WORKAROUND_GUARD 0
-#endif
-#ifndef __GNUC_MINOR__
-#define __GNUC_MINOR___WORKAROUND_GUARD 1
-#else
-#define __GNUC_MINOR___WORKAROUND_GUARD 0
-#endif
-#ifndef __GNUC_PATCHLEVEL__
-#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 1
-#else
-#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0
-#endif
-#ifndef __IBMCPP__
-#define __IBMCPP___WORKAROUND_GUARD 1
-#else
-#define __IBMCPP___WORKAROUND_GUARD 0
-#endif
-#ifndef __SUNPRO_CC
-#define __SUNPRO_CC_WORKAROUND_GUARD 1
-#else
-#define __SUNPRO_CC_WORKAROUND_GUARD 0
-#endif
-#ifndef __DECCXX_VER
-#define __DECCXX_VER_WORKAROUND_GUARD 1
-#else
-#define __DECCXX_VER_WORKAROUND_GUARD 0
-#endif
-#ifndef __MWERKS__
-#define __MWERKS___WORKAROUND_GUARD 1
-#else
-#define __MWERKS___WORKAROUND_GUARD 0
-#endif
-#ifndef __EDG__
-#define __EDG___WORKAROUND_GUARD 1
-#else
-#define __EDG___WORKAROUND_GUARD 0
-#endif
-#ifndef __EDG_VERSION__
-#define __EDG_VERSION___WORKAROUND_GUARD 1
-#else
-#define __EDG_VERSION___WORKAROUND_GUARD 0
-#endif
-#ifndef __HP_aCC
-#define __HP_aCC_WORKAROUND_GUARD 1
-#else
-#define __HP_aCC_WORKAROUND_GUARD 0
-#endif
-#ifndef __hpxstd98
-#define __hpxstd98_WORKAROUND_GUARD 1
-#else
-#define __hpxstd98_WORKAROUND_GUARD 0
-#endif
-#ifndef _CRAYC
-#define _CRAYC_WORKAROUND_GUARD 1
-#else
-#define _CRAYC_WORKAROUND_GUARD 0
-#endif
-#ifndef __DMC__
-#define __DMC___WORKAROUND_GUARD 1
-#else
-#define __DMC___WORKAROUND_GUARD 0
-#endif
-#ifndef MPW_CPLUS
-#define MPW_CPLUS_WORKAROUND_GUARD 1
-#else
-#define MPW_CPLUS_WORKAROUND_GUARD 0
-#endif
-#ifndef __COMO__
-#define __COMO___WORKAROUND_GUARD 1
-#else
-#define __COMO___WORKAROUND_GUARD 0
-#endif
-#ifndef __COMO_VERSION__
-#define __COMO_VERSION___WORKAROUND_GUARD 1
-#else
-#define __COMO_VERSION___WORKAROUND_GUARD 0
-#endif
-#ifndef __INTEL_COMPILER
-#define __INTEL_COMPILER_WORKAROUND_GUARD 1
-#else
-#define __INTEL_COMPILER_WORKAROUND_GUARD 0
-#endif
-#ifndef __ICL
-#define __ICL_WORKAROUND_GUARD 1
-#else
-#define __ICL_WORKAROUND_GUARD 0
-#endif
-#ifndef _COMPILER_VERSION
-#define _COMPILER_VERSION_WORKAROUND_GUARD 1
-#else
-#define _COMPILER_VERSION_WORKAROUND_GUARD 0
-#endif
-
-#ifndef _RWSTD_VER
-#define _RWSTD_VER_WORKAROUND_GUARD 1
-#else
-#define _RWSTD_VER_WORKAROUND_GUARD 0
-#endif
-#ifndef BOOST_RWSTD_VER
-#define BOOST_RWSTD_VER_WORKAROUND_GUARD 1
-#else
-#define BOOST_RWSTD_VER_WORKAROUND_GUARD 0
-#endif
-#ifndef __GLIBCPP__
-#define __GLIBCPP___WORKAROUND_GUARD 1
-#else
-#define __GLIBCPP___WORKAROUND_GUARD 0
-#endif
-#ifndef _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
-#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 1
-#else
-#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 0
-#endif
-#ifndef __SGI_STL_PORT
-#define __SGI_STL_PORT_WORKAROUND_GUARD 1
-#else
-#define __SGI_STL_PORT_WORKAROUND_GUARD 0
-#endif
-#ifndef _STLPORT_VERSION
-#define _STLPORT_VERSION_WORKAROUND_GUARD 1
-#else
-#define _STLPORT_VERSION_WORKAROUND_GUARD 0
-#endif
-#ifndef __LIBCOMO_VERSION__
-#define __LIBCOMO_VERSION___WORKAROUND_GUARD 1
-#else
-#define __LIBCOMO_VERSION___WORKAROUND_GUARD 0
-#endif
-#ifndef _CPPLIB_VER
-#define _CPPLIB_VER_WORKAROUND_GUARD 1
-#else
-#define _CPPLIB_VER_WORKAROUND_GUARD 0
-#endif
-
-#ifndef BOOST_INTEL_CXX_VERSION
-#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 1
-#else
-#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 0
-#endif
-#ifndef BOOST_INTEL_WIN
-#define BOOST_INTEL_WIN_WORKAROUND_GUARD 1
-#else
-#define BOOST_INTEL_WIN_WORKAROUND_GUARD 0
-#endif
-#ifndef BOOST_DINKUMWARE_STDLIB
-#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 1
-#else
-#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 0
-#endif
-#ifndef BOOST_INTEL
-#define BOOST_INTEL_WORKAROUND_GUARD 1
-#else
-#define BOOST_INTEL_WORKAROUND_GUARD 0
-#endif
-// Always define to zero, if it's used it'll be defined my MPL:
-#define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0
-
-# define BOOST_WORKAROUND(symbol, test) \
- ((symbol ## _WORKAROUND_GUARD + 0 == 0) && \
- (symbol != 0) && (1 % (( (symbol test) ) + 1)))
-// ^ ^ ^ ^
-// The extra level of parenthesis nesting above, along with the
-// BOOST_OPEN_PAREN indirection below, is required to satisfy the
-// broken preprocessor in MWCW 8.3 and earlier.
-//
-// The basic mechanism works as follows:
-// (symbol test) + 1 => if (symbol test) then 2 else 1
-// 1 % ((symbol test) + 1) => if (symbol test) then 1 else 0
-//
-// The complication with % is for cooperation with BOOST_TESTED_AT().
-// When "test" is BOOST_TESTED_AT(x) and
-// BOOST_DETECT_OUTDATED_WORKAROUNDS is #defined,
-//
-// symbol test => if (symbol <= x) then 1 else -1
-// (symbol test) + 1 => if (symbol <= x) then 2 else 0
-// 1 % ((symbol test) + 1) => if (symbol <= x) then 1 else divide-by-zero
-//
-
-# ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS
-# define BOOST_OPEN_PAREN (
-# define BOOST_TESTED_AT(value) > value) ?(-1): BOOST_OPEN_PAREN 1
-# else
-# define BOOST_TESTED_AT(value) != ((value)-(value))
-# endif
-
-# else
-
-# define BOOST_WORKAROUND(symbol, test) 0
-
-# endif
-
-#endif // WORKAROUND_DWA2002126_HPP
diff --git a/libcutl/cutl/details/boost/exception/detail/attribute_noreturn.hpp b/libcutl/cutl/details/boost/exception/detail/attribute_noreturn.hpp
deleted file mode 100644
index ae9f031..0000000
--- a/libcutl/cutl/details/boost/exception/detail/attribute_noreturn.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
-
-//Distributed under the Boost Software License, Version 1.0. (See accompanying
-//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef UUID_61531AB0680611DEADD5846855D89593
-#define UUID_61531AB0680611DEADD5846855D89593
-
-#if defined(_MSC_VER)
-#define BOOST_ATTRIBUTE_NORETURN __declspec(noreturn)
-#elif defined(__GNUC__)
-#define BOOST_ATTRIBUTE_NORETURN __attribute__((__noreturn__))
-#else
-#define BOOST_ATTRIBUTE_NORETURN
-#endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/exception/exception.hpp b/libcutl/cutl/details/boost/exception/exception.hpp
deleted file mode 100644
index 46e8e6d..0000000
--- a/libcutl/cutl/details/boost/exception/exception.hpp
+++ /dev/null
@@ -1,483 +0,0 @@
-//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
-
-//Distributed under the Boost Software License, Version 1.0. (See accompanying
-//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef UUID_274DA366004E11DCB1DDFE2E56D89593
-#define UUID_274DA366004E11DCB1DDFE2E56D89593
-#if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma GCC system_header
-#endif
-#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma warning(push,1)
-#endif
-
-namespace
-cutl_details_boost
- {
- namespace
- exception_detail
- {
- template <class T>
- class
- refcount_ptr
- {
- public:
-
- refcount_ptr():
- px_(0)
- {
- }
-
- ~refcount_ptr()
- {
- release();
- }
-
- refcount_ptr( refcount_ptr const & x ):
- px_(x.px_)
- {
- add_ref();
- }
-
- refcount_ptr &
- operator=( refcount_ptr const & x )
- {
- adopt(x.px_);
- return *this;
- }
-
- void
- adopt( T * px )
- {
- release();
- px_=px;
- add_ref();
- }
-
- T *
- get() const
- {
- return px_;
- }
-
- private:
-
- T * px_;
-
- void
- add_ref()
- {
- if( px_ )
- px_->add_ref();
- }
-
- void
- release()
- {
- if( px_ && px_->release() )
- px_=0;
- }
- };
- }
-
- ////////////////////////////////////////////////////////////////////////
-
- template <class Tag,class T>
- class error_info;
-
- typedef error_info<struct throw_function_,char const *> throw_function;
- typedef error_info<struct throw_file_,char const *> throw_file;
- typedef error_info<struct throw_line_,int> throw_line;
-
- template <>
- class
- error_info<throw_function_,char const *>
- {
- public:
- typedef char const * value_type;
- value_type v_;
- explicit
- error_info( value_type v ):
- v_(v)
- {
- }
- };
-
- template <>
- class
- error_info<throw_file_,char const *>
- {
- public:
- typedef char const * value_type;
- value_type v_;
- explicit
- error_info( value_type v ):
- v_(v)
- {
- }
- };
-
- template <>
- class
- error_info<throw_line_,int>
- {
- public:
- typedef int value_type;
- value_type v_;
- explicit
- error_info( value_type v ):
- v_(v)
- {
- }
- };
-
-#if defined(__GNUC__)
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-# pragma GCC visibility push (default)
-# endif
-#endif
- class exception;
-#if defined(__GNUC__)
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-# pragma GCC visibility pop
-# endif
-#endif
-
- template <class T>
- class shared_ptr;
-
- namespace
- exception_detail
- {
- class error_info_base;
- struct type_info_;
-
- struct
- error_info_container
- {
- virtual char const * diagnostic_information( char const * ) const = 0;
- virtual shared_ptr<error_info_base> get( type_info_ const & ) const = 0;
- virtual void set( shared_ptr<error_info_base> const &, type_info_ const & ) = 0;
- virtual void add_ref() const = 0;
- virtual bool release() const = 0;
- virtual refcount_ptr<exception_detail::error_info_container> clone() const = 0;
-
- protected:
-
- ~error_info_container() throw()
- {
- }
- };
-
- template <class>
- struct get_info;
-
- template <>
- struct get_info<throw_function>;
-
- template <>
- struct get_info<throw_file>;
-
- template <>
- struct get_info<throw_line>;
-
- char const * get_diagnostic_information( exception const &, char const * );
-
- void copy_boost_exception( exception *, exception const * );
-
- template <class E,class Tag,class T>
- E const & set_info( E const &, error_info<Tag,T> const & );
-
- template <class E>
- E const & set_info( E const &, throw_function const & );
-
- template <class E>
- E const & set_info( E const &, throw_file const & );
-
- template <class E>
- E const & set_info( E const &, throw_line const & );
- }
-
-#if defined(__GNUC__)
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-# pragma GCC visibility push (default)
-# endif
-#endif
- class
- exception
- {
- protected:
-
- exception():
- throw_function_(0),
- throw_file_(0),
- throw_line_(-1)
- {
- }
-
-#ifdef __HP_aCC
- //On HP aCC, this protected copy constructor prevents throwing cutl_details_boost::exception.
- //On all other platforms, the same effect is achieved by the pure virtual destructor.
- exception( exception const & x ) throw():
- data_(x.data_),
- throw_function_(x.throw_function_),
- throw_file_(x.throw_file_),
- throw_line_(x.throw_line_)
- {
- }
-#endif
-
- virtual ~exception() throw()
-#ifndef __HP_aCC
- = 0 //Workaround for HP aCC, =0 incorrectly leads to link errors.
-#endif
- ;
-
-#if (defined(__MWERKS__) && __MWERKS__<=0x3207) || (defined(_MSC_VER) && _MSC_VER<=1310)
- public:
-#else
- private:
-
- template <class E>
- friend E const & exception_detail::set_info( E const &, throw_function const & );
-
- template <class E>
- friend E const & exception_detail::set_info( E const &, throw_file const & );
-
- template <class E>
- friend E const & exception_detail::set_info( E const &, throw_line const & );
-
- template <class E,class Tag,class T>
- friend E const & exception_detail::set_info( E const &, error_info<Tag,T> const & );
-
- friend char const * exception_detail::get_diagnostic_information( exception const &, char const * );
-
- template <class>
- friend struct exception_detail::get_info;
- friend struct exception_detail::get_info<throw_function>;
- friend struct exception_detail::get_info<throw_file>;
- friend struct exception_detail::get_info<throw_line>;
- friend void exception_detail::copy_boost_exception( exception *, exception const * );
-#endif
- mutable exception_detail::refcount_ptr<exception_detail::error_info_container> data_;
- mutable char const * throw_function_;
- mutable char const * throw_file_;
- mutable int throw_line_;
- };
-#if defined(__GNUC__)
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-# pragma GCC visibility pop
-# endif
-#endif
-
- inline
- exception::
- ~exception() throw()
- {
- }
-
- namespace
- exception_detail
- {
- template <class E>
- E const &
- set_info( E const & x, throw_function const & y )
- {
- x.throw_function_=y.v_;
- return x;
- }
-
- template <class E>
- E const &
- set_info( E const & x, throw_file const & y )
- {
- x.throw_file_=y.v_;
- return x;
- }
-
- template <class E>
- E const &
- set_info( E const & x, throw_line const & y )
- {
- x.throw_line_=y.v_;
- return x;
- }
- }
-
- ////////////////////////////////////////////////////////////////////////
-
- namespace
- exception_detail
- {
-#if defined(__GNUC__)
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-# pragma GCC visibility push (default)
-# endif
-#endif
- template <class T>
- struct
- error_info_injector:
- public T,
- public exception
- {
- explicit
- error_info_injector( T const & x ):
- T(x)
- {
- }
-
- ~error_info_injector() throw()
- {
- }
- };
-#if defined(__GNUC__)
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-# pragma GCC visibility pop
-# endif
-#endif
-
- struct large_size { char c[256]; };
- large_size dispatch_boost_exception( exception const * );
-
- struct small_size { };
- small_size dispatch_boost_exception( void const * );
-
- template <class,int>
- struct enable_error_info_helper;
-
- template <class T>
- struct
- enable_error_info_helper<T,sizeof(large_size)>
- {
- typedef T type;
- };
-
- template <class T>
- struct
- enable_error_info_helper<T,sizeof(small_size)>
- {
- typedef error_info_injector<T> type;
- };
-
- template <class T>
- struct
- enable_error_info_return_type
- {
- typedef typename enable_error_info_helper<T,sizeof(exception_detail::dispatch_boost_exception(static_cast<T *>(0)))>::type type;
- };
- }
-
- template <class T>
- inline
- typename
- exception_detail::enable_error_info_return_type<T>::type
- enable_error_info( T const & x )
- {
- typedef typename exception_detail::enable_error_info_return_type<T>::type rt;
- return rt(x);
- }
-
- ////////////////////////////////////////////////////////////////////////
-
- namespace
- exception_detail
- {
-#if defined(__GNUC__)
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-# pragma GCC visibility push (default)
-# endif
-#endif
- class
- clone_base
- {
- public:
-
- virtual clone_base const * clone() const = 0;
- virtual void rethrow() const = 0;
-
- virtual
- ~clone_base() throw()
- {
- }
- };
-#if defined(__GNUC__)
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-# pragma GCC visibility pop
-# endif
-#endif
-
- inline
- void
- copy_boost_exception( exception * a, exception const * b )
- {
- refcount_ptr<error_info_container> data;
- if( error_info_container * d=b->data_.get() )
- data = d->clone();
- a->throw_file_ = b->throw_file_;
- a->throw_line_ = b->throw_line_;
- a->throw_function_ = b->throw_function_;
- a->data_ = data;
- }
-
- inline
- void
- copy_boost_exception( void *, void const * )
- {
- }
-
- template <class T>
- class
- clone_impl:
- public T,
- public virtual clone_base
- {
- struct clone_tag { };
- clone_impl( clone_impl const & x, clone_tag ):
- T(x)
- {
- copy_boost_exception(this,&x);
- }
-
- public:
-
- explicit
- clone_impl( T const & x ):
- T(x)
- {
- copy_boost_exception(this,&x);
- }
-
- ~clone_impl() throw()
- {
- }
-
- private:
-
- clone_base const *
- clone() const
- {
- return new clone_impl(*this,clone_tag());
- }
-
- void
- rethrow() const
- {
- throw*this;
- }
- };
- }
-
- template <class T>
- inline
- exception_detail::clone_impl<T>
- enable_current_exception( T const & x )
- {
- return exception_detail::clone_impl<T>(x);
- }
- }
-
-#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma warning(pop)
-#endif
-#endif
diff --git a/libcutl/cutl/details/boost/functional/hash.hpp b/libcutl/cutl/details/boost/functional/hash.hpp
deleted file mode 100644
index 2a265ef..0000000
--- a/libcutl/cutl/details/boost/functional/hash.hpp
+++ /dev/null
@@ -1,7 +0,0 @@
-
-// Copyright 2005-2009 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#include <cutl/details/boost/functional/hash/hash.hpp>
-
diff --git a/libcutl/cutl/details/boost/functional/hash/detail/float_functions.hpp b/libcutl/cutl/details/boost/functional/hash/detail/float_functions.hpp
deleted file mode 100644
index 1d5a02b..0000000
--- a/libcutl/cutl/details/boost/functional/hash/detail/float_functions.hpp
+++ /dev/null
@@ -1,336 +0,0 @@
-
-// Copyright 2005-2009 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_FLOAT_FUNCTIONS_HPP)
-#define BOOST_FUNCTIONAL_HASH_DETAIL_FLOAT_FUNCTIONS_HPP
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/config/no_tr1/cmath.hpp>
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-// Set BOOST_HASH_CONFORMANT_FLOATS to 1 for libraries known to have
-// sufficiently good floating point support to not require any
-// workarounds.
-//
-// When set to 0, the library tries to automatically
-// use the best available implementation. This normally works well, but
-// breaks when ambiguities are created by odd namespacing of the functions.
-//
-// Note that if this is set to 0, the library should still take full
-// advantage of the platform's floating point support.
-
-#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
-# define BOOST_HASH_CONFORMANT_FLOATS 0
-#elif defined(__LIBCOMO__)
-# define BOOST_HASH_CONFORMANT_FLOATS 0
-#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
-// Rogue Wave library:
-# define BOOST_HASH_CONFORMANT_FLOATS 0
-#elif defined(_LIBCPP_VERSION)
-// libc++
-# define BOOST_HASH_CONFORMANT_FLOATS 1
-#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
-// GNU libstdc++ 3
-# if defined(__GNUC__) && __GNUC__ >= 4
-# define BOOST_HASH_CONFORMANT_FLOATS 1
-# else
-# define BOOST_HASH_CONFORMANT_FLOATS 0
-# endif
-#elif defined(__STL_CONFIG_H)
-// generic SGI STL
-# define BOOST_HASH_CONFORMANT_FLOATS 0
-#elif defined(__MSL_CPP__)
-// MSL standard lib:
-# define BOOST_HASH_CONFORMANT_FLOATS 0
-#elif defined(__IBMCPP__)
-// VACPP std lib (probably conformant for much earlier version).
-# if __IBMCPP__ >= 1210
-# define BOOST_HASH_CONFORMANT_FLOATS 1
-# else
-# define BOOST_HASH_CONFORMANT_FLOATS 0
-# endif
-#elif defined(MSIPL_COMPILE_H)
-// Modena C++ standard library
-# define BOOST_HASH_CONFORMANT_FLOATS 0
-#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
-// Dinkumware Library (this has to appear after any possible replacement libraries):
-# if _CPPLIB_VER >= 405
-# define BOOST_HASH_CONFORMANT_FLOATS 1
-# else
-# define BOOST_HASH_CONFORMANT_FLOATS 0
-# endif
-#else
-# define BOOST_HASH_CONFORMANT_FLOATS 0
-#endif
-
-#if BOOST_HASH_CONFORMANT_FLOATS
-
-// The standard library is known to be compliant, so don't use the
-// configuration mechanism.
-
-namespace cutl_details_boost {
- namespace hash_detail {
- template <typename Float>
- struct call_ldexp {
- typedef Float float_type;
- inline Float operator()(Float x, int y) const {
- return std::ldexp(x, y);
- }
- };
-
- template <typename Float>
- struct call_frexp {
- typedef Float float_type;
- inline Float operator()(Float x, int* y) const {
- return std::frexp(x, y);
- }
- };
-
- template <typename Float>
- struct select_hash_type
- {
- typedef Float type;
- };
- }
-}
-
-#else // BOOST_HASH_CONFORMANT_FLOATS == 0
-
-// The C++ standard requires that the C float functions are overloarded
-// for float, double and long double in the std namespace, but some of the older
-// library implementations don't support this. On some that don't, the C99
-// float functions (frexpf, frexpl, etc.) are available.
-//
-// The following tries to automatically detect which are available.
-
-namespace cutl_details_boost {
- namespace hash_detail {
-
- // Returned by dummy versions of the float functions.
-
- struct not_found {
- // Implicitly convertible to float and long double in order to avoid
- // a compile error when the dummy float functions are used.
-
- inline operator float() const { return 0; }
- inline operator long double() const { return 0; }
- };
-
- // A type for detecting the return type of functions.
-
- template <typename T> struct is;
- template <> struct is<float> { char x[10]; };
- template <> struct is<double> { char x[20]; };
- template <> struct is<long double> { char x[30]; };
- template <> struct is<cutl_details_boost::hash_detail::not_found> { char x[40]; };
-
- // Used to convert the return type of a function to a type for sizeof.
-
- template <typename T> is<T> float_type(T);
-
- // call_ldexp
- //
- // This will get specialized for float and long double
-
- template <typename Float> struct call_ldexp
- {
- typedef double float_type;
-
- inline double operator()(double a, int b) const
- {
- using namespace std;
- return ldexp(a, b);
- }
- };
-
- // call_frexp
- //
- // This will get specialized for float and long double
-
- template <typename Float> struct call_frexp
- {
- typedef double float_type;
-
- inline double operator()(double a, int* b) const
- {
- using namespace std;
- return frexp(a, b);
- }
- };
- }
-}
-
-// A namespace for dummy functions to detect when the actual function we want
-// isn't available. ldexpl, ldexpf etc. might be added tby the macros below.
-//
-// AFAICT these have to be outside of the boost namespace, as if they're in
-// the boost namespace they'll always be preferable to any other function
-// (since the arguments are built in types, ADL can't be used).
-
-namespace cutl_details_boost_hash_detect_float_functions {
- template <class Float> cutl_details_boost::hash_detail::not_found ldexp(Float, int);
- template <class Float> cutl_details_boost::hash_detail::not_found frexp(Float, int*);
-}
-
-// Macros for generating specializations of call_ldexp and call_frexp.
-//
-// check_cpp and check_c99 check if the C++ or C99 functions are available.
-//
-// Then the call_* functions select an appropriate implementation.
-//
-// I used c99_func in a few places just to get a unique name.
-//
-// Important: when using 'using namespace' at namespace level, include as
-// little as possible in that namespace, as Visual C++ has an odd bug which
-// can cause the namespace to be imported at the global level. This seems to
-// happen mainly when there's a template in the same namesapce.
-
-#define BOOST_HASH_CALL_FLOAT_FUNC(cpp_func, c99_func, type1, type2) \
-namespace cutl_details_boost_hash_detect_float_functions { \
- template <class Float> \
- cutl_details_boost::hash_detail::not_found c99_func(Float, type2); \
-} \
- \
-namespace cutl_details_boost { \
- namespace hash_detail { \
- namespace c99_func##_detect { \
- using namespace std; \
- using namespace cutl_details_boost_hash_detect_float_functions; \
- \
- struct check { \
- static type1 x; \
- static type2 y; \
- BOOST_STATIC_CONSTANT(bool, cpp = \
- sizeof(float_type(cpp_func(x,y))) \
- == sizeof(is<type1>)); \
- BOOST_STATIC_CONSTANT(bool, c99 = \
- sizeof(float_type(c99_func(x,y))) \
- == sizeof(is<type1>)); \
- }; \
- } \
- \
- template <bool x> \
- struct call_c99_##c99_func : \
- cutl_details_boost::hash_detail::call_##cpp_func<double> {}; \
- \
- template <> \
- struct call_c99_##c99_func<true> { \
- typedef type1 float_type; \
- \
- template <typename T> \
- inline type1 operator()(type1 a, T b) const \
- { \
- using namespace std; \
- return c99_func(a, b); \
- } \
- }; \
- \
- template <bool x> \
- struct call_cpp_##c99_func : \
- call_c99_##c99_func< \
- ::cutl_details_boost::hash_detail::c99_func##_detect::check::c99 \
- > {}; \
- \
- template <> \
- struct call_cpp_##c99_func<true> { \
- typedef type1 float_type; \
- \
- template <typename T> \
- inline type1 operator()(type1 a, T b) const \
- { \
- using namespace std; \
- return cpp_func(a, b); \
- } \
- }; \
- \
- template <> \
- struct call_##cpp_func<type1> : \
- call_cpp_##c99_func< \
- ::cutl_details_boost::hash_detail::c99_func##_detect::check::cpp \
- > {}; \
- } \
-}
-
-#define BOOST_HASH_CALL_FLOAT_MACRO(cpp_func, c99_func, type1, type2) \
-namespace cutl_details_boost { \
- namespace hash_detail { \
- \
- template <> \
- struct call_##cpp_func<type1> { \
- typedef type1 float_type; \
- inline type1 operator()(type1 x, type2 y) const { \
- return c99_func(x, y); \
- } \
- }; \
- } \
-}
-
-#if defined(ldexpf)
-BOOST_HASH_CALL_FLOAT_MACRO(ldexp, ldexpf, float, int)
-#else
-BOOST_HASH_CALL_FLOAT_FUNC(ldexp, ldexpf, float, int)
-#endif
-
-#if defined(ldexpl)
-BOOST_HASH_CALL_FLOAT_MACRO(ldexp, ldexpl, long double, int)
-#else
-BOOST_HASH_CALL_FLOAT_FUNC(ldexp, ldexpl, long double, int)
-#endif
-
-#if defined(frexpf)
-BOOST_HASH_CALL_FLOAT_MACRO(frexp, frexpf, float, int*)
-#else
-BOOST_HASH_CALL_FLOAT_FUNC(frexp, frexpf, float, int*)
-#endif
-
-#if defined(frexpl)
-BOOST_HASH_CALL_FLOAT_MACRO(frexp, frexpl, long double, int*)
-#else
-BOOST_HASH_CALL_FLOAT_FUNC(frexp, frexpl, long double, int*)
-#endif
-
-#undef BOOST_HASH_CALL_FLOAT_MACRO
-#undef BOOST_HASH_CALL_FLOAT_FUNC
-
-
-namespace cutl_details_boost
-{
- namespace hash_detail
- {
- template <typename Float1, typename Float2>
- struct select_hash_type_impl {
- typedef double type;
- };
-
- template <>
- struct select_hash_type_impl<float, float> {
- typedef float type;
- };
-
- template <>
- struct select_hash_type_impl<long double, long double> {
- typedef long double type;
- };
-
-
- // select_hash_type
- //
- // If there is support for a particular floating point type, use that
- // otherwise use double (there's always support for double).
-
- template <typename Float>
- struct select_hash_type : select_hash_type_impl<
- BOOST_DEDUCED_TYPENAME call_ldexp<Float>::float_type,
- BOOST_DEDUCED_TYPENAME call_frexp<Float>::float_type
- > {};
- }
-}
-
-#endif // BOOST_HASH_CONFORMANT_FLOATS
-
-#endif
diff --git a/libcutl/cutl/details/boost/functional/hash/detail/hash_float.hpp b/libcutl/cutl/details/boost/functional/hash/detail/hash_float.hpp
deleted file mode 100644
index aaa49d9..0000000
--- a/libcutl/cutl/details/boost/functional/hash/detail/hash_float.hpp
+++ /dev/null
@@ -1,277 +0,0 @@
-
-// Copyright 2005-2012 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER)
-#define BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/functional/hash/detail/float_functions.hpp>
-#include <cutl/details/boost/functional/hash/detail/limits.hpp>
-#include <cutl/details/boost/utility/enable_if.hpp>
-#include <cutl/details/boost/integer/static_log2.hpp>
-#include <cutl/details/boost/cstdint.hpp>
-#include <cutl/details/boost/assert.hpp>
-#include <cutl/details/boost/limits.hpp>
-#include <cstring>
-
-#if defined(BOOST_MSVC)
-#pragma warning(push)
-#if BOOST_MSVC >= 1400
-#pragma warning(disable:6294) // Ill-defined for-loop: initial condition does
- // not satisfy test. Loop body not executed
-#endif
-#endif
-
-// Can we use fpclassify?
-
-// STLport
-#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
-#define BOOST_HASH_USE_FPCLASSIFY 0
-
-// GNU libstdc++ 3
-#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
-# if (defined(__USE_ISOC99) || defined(_GLIBCXX_USE_C99_MATH)) && \
- !(defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__))
-# define BOOST_HASH_USE_FPCLASSIFY 1
-# else
-# define BOOST_HASH_USE_FPCLASSIFY 0
-# endif
-
-// Everything else
-#else
-# define BOOST_HASH_USE_FPCLASSIFY 0
-#endif
-
-namespace cutl_details_boost
-{
- namespace hash_detail
- {
- inline void hash_float_combine(std::size_t& seed, std::size_t value)
- {
- seed ^= value + (seed<<6) + (seed>>2);
- }
-
- ////////////////////////////////////////////////////////////////////////
- // Binary hash function
- //
- // Only used for floats with known iec559 floats, and certain values in
- // numeric_limits
-
- inline std::size_t hash_binary(char* ptr, std::size_t length)
- {
- std::size_t seed = 0;
-
- if (length >= sizeof(std::size_t)) {
- seed = *(std::size_t*) ptr;
- length -= sizeof(std::size_t);
- ptr += sizeof(std::size_t);
-
- while(length >= sizeof(std::size_t)) {
- std::size_t buffer = 0;
- std::memcpy(&buffer, ptr, sizeof(std::size_t));
- hash_float_combine(seed, buffer);
- length -= sizeof(std::size_t);
- ptr += sizeof(std::size_t);
- }
- }
-
- if (length > 0) {
- std::size_t buffer = 0;
- std::memcpy(&buffer, ptr, length);
- hash_float_combine(seed, buffer);
- }
-
- return seed;
- }
-
- template <typename Float>
- inline std::size_t float_hash_impl(Float v,
- BOOST_DEDUCED_TYPENAME cutl_details_boost::enable_if_c<
- std::numeric_limits<Float>::is_iec559 &&
- std::numeric_limits<Float>::digits == 24 &&
- std::numeric_limits<Float>::radix == 2 &&
- std::numeric_limits<Float>::max_exponent == 128,
- int>::type
- )
- {
- return hash_binary((char*) &v, 4);
- }
-
-
- template <typename Float>
- inline std::size_t float_hash_impl(Float v,
- BOOST_DEDUCED_TYPENAME cutl_details_boost::enable_if_c<
- std::numeric_limits<Float>::is_iec559 &&
- std::numeric_limits<Float>::digits == 53 &&
- std::numeric_limits<Float>::radix == 2 &&
- std::numeric_limits<Float>::max_exponent == 1024,
- int>::type
- )
- {
- return hash_binary((char*) &v, 8);
- }
-
- template <typename Float>
- inline std::size_t float_hash_impl(Float v,
- BOOST_DEDUCED_TYPENAME cutl_details_boost::enable_if_c<
- std::numeric_limits<Float>::is_iec559 &&
- std::numeric_limits<Float>::digits == 64 &&
- std::numeric_limits<Float>::radix == 2 &&
- std::numeric_limits<Float>::max_exponent == 16384,
- int>::type
- )
- {
- return hash_binary((char*) &v, 10);
- }
-
- template <typename Float>
- inline std::size_t float_hash_impl(Float v,
- BOOST_DEDUCED_TYPENAME cutl_details_boost::enable_if_c<
- std::numeric_limits<Float>::is_iec559 &&
- std::numeric_limits<Float>::digits == 113 &&
- std::numeric_limits<Float>::radix == 2 &&
- std::numeric_limits<Float>::max_exponent == 16384,
- int>::type
- )
- {
- return hash_binary((char*) &v, 16);
- }
-
- ////////////////////////////////////////////////////////////////////////
- // Portable hash function
- //
- // Used as a fallback when the binary hash function isn't supported.
-
- template <class T>
- inline std::size_t float_hash_impl2(T v)
- {
- cutl_details_boost::hash_detail::call_frexp<T> frexp;
- cutl_details_boost::hash_detail::call_ldexp<T> ldexp;
-
- int exp = 0;
-
- v = frexp(v, &exp);
-
- // A postive value is easier to hash, so combine the
- // sign with the exponent and use the absolute value.
- if(v < 0) {
- v = -v;
- exp += limits<T>::max_exponent -
- limits<T>::min_exponent;
- }
-
- v = ldexp(v, limits<std::size_t>::digits);
- std::size_t seed = static_cast<std::size_t>(v);
- v -= static_cast<T>(seed);
-
- // ceiling(digits(T) * log2(radix(T))/ digits(size_t)) - 1;
- std::size_t const length
- = (limits<T>::digits *
- cutl_details_boost::static_log2<limits<T>::radix>::value
- + limits<std::size_t>::digits - 1)
- / limits<std::size_t>::digits;
-
- for(std::size_t i = 0; i != length; ++i)
- {
- v = ldexp(v, limits<std::size_t>::digits);
- std::size_t part = static_cast<std::size_t>(v);
- v -= static_cast<T>(part);
- hash_float_combine(seed, part);
- }
-
- hash_float_combine(seed, exp);
-
- return seed;
- }
-
-#if !defined(BOOST_HASH_DETAIL_TEST_WITHOUT_GENERIC)
- template <class T>
- inline std::size_t float_hash_impl(T v, ...)
- {
- typedef BOOST_DEDUCED_TYPENAME select_hash_type<T>::type type;
- return float_hash_impl2(static_cast<type>(v));
- }
-#endif
- }
-}
-
-#if BOOST_HASH_USE_FPCLASSIFY
-
-#include <cutl/details/boost/config/no_tr1/cmath.hpp>
-
-namespace cutl_details_boost
-{
- namespace hash_detail
- {
- template <class T>
- inline std::size_t float_hash_value(T v)
- {
-#if defined(fpclassify)
- switch (fpclassify(v))
-#elif BOOST_HASH_CONFORMANT_FLOATS
- switch (std::fpclassify(v))
-#else
- using namespace std;
- switch (fpclassify(v))
-#endif
- {
- case FP_ZERO:
- return 0;
- case FP_INFINITE:
- return (std::size_t)(v > 0 ? -1 : -2);
- case FP_NAN:
- return (std::size_t)(-3);
- case FP_NORMAL:
- case FP_SUBNORMAL:
- return float_hash_impl(v, 0);
- default:
- BOOST_ASSERT(0);
- return 0;
- }
- }
- }
-}
-
-#else // !BOOST_HASH_USE_FPCLASSIFY
-
-namespace cutl_details_boost
-{
- namespace hash_detail
- {
- template <class T>
- inline bool is_zero(T v)
- {
-#if !defined(__GNUC__)
- return v == 0;
-#else
- // GCC's '-Wfloat-equal' will complain about comparing
- // v to 0, but because it disables warnings for system
- // headers it won't complain if you use std::equal_to to
- // compare with 0. Resulting in this silliness:
- return std::equal_to<T>()(v, 0);
-#endif
- }
-
- template <class T>
- inline std::size_t float_hash_value(T v)
- {
- return cutl_details_boost::hash_detail::is_zero(v) ? 0 : float_hash_impl(v, 0);
- }
- }
-}
-
-#endif // BOOST_HASH_USE_FPCLASSIFY
-
-#undef BOOST_HASH_USE_FPCLASSIFY
-
-#if defined(BOOST_MSVC)
-#pragma warning(pop)
-#endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/functional/hash/detail/limits.hpp b/libcutl/cutl/details/boost/functional/hash/detail/limits.hpp
deleted file mode 100644
index de9abbe..0000000
--- a/libcutl/cutl/details/boost/functional/hash/detail/limits.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-
-// Copyright 2005-2009 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// On some platforms std::limits gives incorrect values for long double.
-// This tries to work around them.
-
-#if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER)
-#define BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-#include <cutl/details/boost/limits.hpp>
-
-// On OpenBSD, numeric_limits is not reliable for long doubles, but
-// the macros defined in <float.h> are and support long double when STLport
-// doesn't.
-
-#if defined(__OpenBSD__) || defined(_STLP_NO_LONG_DOUBLE)
-#include <float.h>
-#endif
-
-namespace cutl_details_boost
-{
- namespace hash_detail
- {
- template <class T>
- struct limits : std::numeric_limits<T> {};
-
-#if defined(__OpenBSD__) || defined(_STLP_NO_LONG_DOUBLE)
- template <>
- struct limits<long double>
- : std::numeric_limits<long double>
- {
- static long double epsilon() {
- return LDBL_EPSILON;
- }
-
- static long double (max)() {
- return LDBL_MAX;
- }
-
- static long double (min)() {
- return LDBL_MIN;
- }
-
- BOOST_STATIC_CONSTANT(int, digits = LDBL_MANT_DIG);
- BOOST_STATIC_CONSTANT(int, max_exponent = LDBL_MAX_EXP);
- BOOST_STATIC_CONSTANT(int, min_exponent = LDBL_MIN_EXP);
-#if defined(_STLP_NO_LONG_DOUBLE)
- BOOST_STATIC_CONSTANT(int, radix = FLT_RADIX);
-#endif
- };
-#endif // __OpenBSD__
- }
-}
-
-#endif
diff --git a/libcutl/cutl/details/boost/functional/hash/extensions.hpp b/libcutl/cutl/details/boost/functional/hash/extensions.hpp
deleted file mode 100644
index 91771b4..0000000
--- a/libcutl/cutl/details/boost/functional/hash/extensions.hpp
+++ /dev/null
@@ -1,379 +0,0 @@
-
-// Copyright 2005-2009 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// Based on Peter Dimov's proposal
-// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf
-// issue 6.18.
-
-// This implements the extensions to the standard.
-// It's undocumented, so you shouldn't use it....
-
-#if !defined(BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP)
-#define BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP
-
-#include <cutl/details/boost/functional/hash/hash.hpp>
-#include <cutl/details/boost/detail/container_fwd.hpp>
-#include <cutl/details/boost/utility/enable_if.hpp>
-#include <cutl/details/boost/static_assert.hpp>
-#include <cutl/details/boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <cutl/details/boost/preprocessor/repetition/enum_params.hpp>
-
-#if !defined(BOOST_NO_CXX11_HDR_ARRAY)
-# include <array>
-#endif
-
-#if !defined(BOOST_NO_CXX11_HDR_TUPLE)
-# include <tuple>
-#endif
-
-#if !defined(BOOST_NO_CXX11_HDR_MEMORY)
-# include <memory>
-#endif
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
-#include <cutl/details/boost/type_traits/is_array.hpp>
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-#include <cutl/details/boost/type_traits/is_const.hpp>
-#endif
-
-namespace cutl_details_boost
-{
- template <class A, class B>
- std::size_t hash_value(std::pair<A, B> const&);
- template <class T, class A>
- std::size_t hash_value(std::vector<T, A> const&);
- template <class T, class A>
- std::size_t hash_value(std::list<T, A> const& v);
- template <class T, class A>
- std::size_t hash_value(std::deque<T, A> const& v);
- template <class K, class C, class A>
- std::size_t hash_value(std::set<K, C, A> const& v);
- template <class K, class C, class A>
- std::size_t hash_value(std::multiset<K, C, A> const& v);
- template <class K, class T, class C, class A>
- std::size_t hash_value(std::map<K, T, C, A> const& v);
- template <class K, class T, class C, class A>
- std::size_t hash_value(std::multimap<K, T, C, A> const& v);
-
- template <class T>
- std::size_t hash_value(std::complex<T> const&);
-
- template <class A, class B>
- std::size_t hash_value(std::pair<A, B> const& v)
- {
- std::size_t seed = 0;
- cutl_details_boost::hash_combine(seed, v.first);
- cutl_details_boost::hash_combine(seed, v.second);
- return seed;
- }
-
- template <class T, class A>
- std::size_t hash_value(std::vector<T, A> const& v)
- {
- return cutl_details_boost::hash_range(v.begin(), v.end());
- }
-
- template <class T, class A>
- std::size_t hash_value(std::list<T, A> const& v)
- {
- return cutl_details_boost::hash_range(v.begin(), v.end());
- }
-
- template <class T, class A>
- std::size_t hash_value(std::deque<T, A> const& v)
- {
- return cutl_details_boost::hash_range(v.begin(), v.end());
- }
-
- template <class K, class C, class A>
- std::size_t hash_value(std::set<K, C, A> const& v)
- {
- return cutl_details_boost::hash_range(v.begin(), v.end());
- }
-
- template <class K, class C, class A>
- std::size_t hash_value(std::multiset<K, C, A> const& v)
- {
- return cutl_details_boost::hash_range(v.begin(), v.end());
- }
-
- template <class K, class T, class C, class A>
- std::size_t hash_value(std::map<K, T, C, A> const& v)
- {
- return cutl_details_boost::hash_range(v.begin(), v.end());
- }
-
- template <class K, class T, class C, class A>
- std::size_t hash_value(std::multimap<K, T, C, A> const& v)
- {
- return cutl_details_boost::hash_range(v.begin(), v.end());
- }
-
- template <class T>
- std::size_t hash_value(std::complex<T> const& v)
- {
- cutl_details_boost::hash<T> hasher;
- std::size_t seed = hasher(v.imag());
- seed ^= hasher(v.real()) + (seed<<6) + (seed>>2);
- return seed;
- }
-
-#if !defined(BOOST_NO_CXX11_HDR_ARRAY)
- template <class T, std::size_t N>
- std::size_t hash_value(std::array<T, N> const& v)
- {
- return cutl_details_boost::hash_range(v.begin(), v.end());
- }
-#endif
-
-#if !defined(BOOST_NO_CXX11_HDR_TUPLE)
- namespace hash_detail {
- template <std::size_t I, typename T>
- inline typename cutl_details_boost::enable_if_c<(I == std::tuple_size<T>::value),
- void>::type
- hash_combine_tuple(std::size_t&, T const&)
- {
- }
-
- template <std::size_t I, typename T>
- inline typename cutl_details_boost::enable_if_c<(I < std::tuple_size<T>::value),
- void>::type
- hash_combine_tuple(std::size_t& seed, T const& v)
- {
- cutl_details_boost::hash_combine(seed, std::get<I>(v));
- cutl_details_boost::hash_detail::hash_combine_tuple<I + 1>(seed, v);
- }
-
- template <typename T>
- inline std::size_t hash_tuple(T const& v)
- {
- std::size_t seed = 0;
- cutl_details_boost::hash_detail::hash_combine_tuple<0>(seed, v);
- return seed;
- }
- }
-
-#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
- template <typename... T>
- inline std::size_t hash_value(std::tuple<T...> const& v)
- {
- return cutl_details_boost::hash_detail::hash_tuple(v);
- }
-#else
-
- inline std::size_t hash_value(std::tuple<> const& v)
- {
- return cutl_details_boost::hash_detail::hash_tuple(v);
- }
-
-# define BOOST_HASH_TUPLE_F(z, n, _) \
- template< \
- BOOST_PP_ENUM_PARAMS_Z(z, n, typename A) \
- > \
- inline std::size_t hash_value(std::tuple< \
- BOOST_PP_ENUM_PARAMS_Z(z, n, A) \
- > const& v) \
- { \
- return cutl_details_boost::hash_detail::hash_tuple(v); \
- }
-
- BOOST_PP_REPEAT_FROM_TO(1, 11, BOOST_HASH_TUPLE_F, _)
-# undef BOOST_HASH_TUPLE_F
-#endif
-
-#endif
-
-#if !defined(BOOST_NO_CXX11_SMART_PTR)
- template <typename T>
- inline std::size_t hash_value(std::shared_ptr<T> const& x) {
- return cutl_details_boost::hash_value(x.get());
- }
-
- template <typename T, typename Deleter>
- inline std::size_t hash_value(std::unique_ptr<T, Deleter> const& x) {
- return cutl_details_boost::hash_value(x.get());
- }
-#endif
-
- //
- // call_hash_impl
- //
-
- // On compilers without function template ordering, this deals with arrays.
-
-#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
- namespace hash_detail
- {
- template <bool IsArray>
- struct call_hash_impl
- {
- template <class T>
- struct inner
- {
- static std::size_t call(T const& v)
- {
- using namespace cutl_details_boost;
- return hash_value(v);
- }
- };
- };
-
- template <>
- struct call_hash_impl<true>
- {
- template <class Array>
- struct inner
- {
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- static std::size_t call(Array const& v)
-#else
- static std::size_t call(Array& v)
-#endif
- {
- const int size = sizeof(v) / sizeof(*v);
- return cutl_details_boost::hash_range(v, v + size);
- }
- };
- };
-
- template <class T>
- struct call_hash
- : public call_hash_impl<cutl_details_boost::is_array<T>::value>
- ::BOOST_NESTED_TEMPLATE inner<T>
- {
- };
- }
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
- //
- // cutl_details_boost::hash
- //
-
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
- template <class T> struct hash
- : std::unary_function<T, std::size_t>
- {
-#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
- std::size_t operator()(T const& val) const
- {
- return hash_value(val);
- }
-#else
- std::size_t operator()(T const& val) const
- {
- return hash_detail::call_hash<T>::call(val);
- }
-#endif
- };
-
-#if BOOST_WORKAROUND(__DMC__, <= 0x848)
- template <class T, unsigned int n> struct hash<T[n]>
- : std::unary_function<T[n], std::size_t>
- {
- std::size_t operator()(const T* val) const
- {
- return cutl_details_boost::hash_range(val, val+n);
- }
- };
-#endif
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
- // On compilers without partial specialization, cutl_details_boost::hash<T>
- // has already been declared to deal with pointers, so just
- // need to supply the non-pointer version of hash_impl.
-
- namespace hash_detail
- {
- template <bool IsPointer>
- struct hash_impl;
-
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-
- template <>
- struct hash_impl<false>
- {
- template <class T>
- struct inner
- : std::unary_function<T, std::size_t>
- {
-#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
- std::size_t operator()(T const& val) const
- {
- return hash_value(val);
- }
-#else
- std::size_t operator()(T const& val) const
- {
- return hash_detail::call_hash<T>::call(val);
- }
-#endif
- };
- };
-
-#else // Visual C++ 6.5
-
- // Visual C++ 6.5 has problems with nested member functions and
- // applying const to const types in templates. So we get this:
-
- template <bool IsConst>
- struct hash_impl_msvc
- {
- template <class T>
- struct inner
- : public std::unary_function<T, std::size_t>
- {
- std::size_t operator()(T const& val) const
- {
- return hash_detail::call_hash<T const>::call(val);
- }
-
- std::size_t operator()(T& val) const
- {
- return hash_detail::call_hash<T>::call(val);
- }
- };
- };
-
- template <>
- struct hash_impl_msvc<true>
- {
- template <class T>
- struct inner
- : public std::unary_function<T, std::size_t>
- {
- std::size_t operator()(T& val) const
- {
- return hash_detail::call_hash<T>::call(val);
- }
- };
- };
-
- template <class T>
- struct hash_impl_msvc2
- : public hash_impl_msvc<cutl_details_boost::is_const<T>::value>
- ::BOOST_NESTED_TEMPLATE inner<T> {};
-
- template <>
- struct hash_impl<false>
- {
- template <class T>
- struct inner : public hash_impl_msvc2<T> {};
- };
-
-#endif // Visual C++ 6.5
- }
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-}
-
-#endif
diff --git a/libcutl/cutl/details/boost/functional/hash/hash.hpp b/libcutl/cutl/details/boost/functional/hash/hash.hpp
deleted file mode 100644
index cb4a869..0000000
--- a/libcutl/cutl/details/boost/functional/hash/hash.hpp
+++ /dev/null
@@ -1,530 +0,0 @@
-
-// Copyright 2005-2009 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// Based on Peter Dimov's proposal
-// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf
-// issue 6.18.
-
-#if !defined(BOOST_FUNCTIONAL_HASH_HASH_HPP)
-#define BOOST_FUNCTIONAL_HASH_HASH_HPP
-
-#include <cutl/details/boost/functional/hash/hash_fwd.hpp>
-#include <functional>
-#include <cutl/details/boost/functional/hash/detail/hash_float.hpp>
-#include <string>
-#include <cutl/details/boost/limits.hpp>
-#include <cutl/details/boost/type_traits/is_enum.hpp>
-#include <cutl/details/boost/type_traits/is_integral.hpp>
-#include <cutl/details/boost/utility/enable_if.hpp>
-
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-#include <cutl/details/boost/type_traits/is_pointer.hpp>
-#endif
-
-#if !defined(BOOST_NO_CXX11_HDR_TYPEINDEX)
-#include <typeindex>
-#endif
-
-#if BOOST_WORKAROUND(__GNUC__, < 3) \
- && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
-#define BOOST_HASH_CHAR_TRAITS string_char_traits
-#else
-#define BOOST_HASH_CHAR_TRAITS char_traits
-#endif
-
-namespace cutl_details_boost
-{
- namespace hash_detail
- {
- struct enable_hash_value { typedef std::size_t type; };
-
- template <typename T> struct basic_numbers {};
- template <typename T> struct long_numbers;
- template <typename T> struct ulong_numbers;
- template <typename T> struct float_numbers {};
-
- template <> struct basic_numbers<bool> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct basic_numbers<char> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct basic_numbers<unsigned char> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct basic_numbers<signed char> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct basic_numbers<short> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct basic_numbers<unsigned short> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct basic_numbers<int> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct basic_numbers<unsigned int> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct basic_numbers<long> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct basic_numbers<unsigned long> :
- cutl_details_boost::hash_detail::enable_hash_value {};
-
-#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
- template <> struct basic_numbers<wchar_t> :
- cutl_details_boost::hash_detail::enable_hash_value {};
-#endif
-
- // long_numbers is defined like this to allow for separate
- // specialization for long_long and int128_type, in case
- // they conflict.
- template <typename T> struct long_numbers2 {};
- template <typename T> struct ulong_numbers2 {};
- template <typename T> struct long_numbers : long_numbers2<T> {};
- template <typename T> struct ulong_numbers : ulong_numbers2<T> {};
-
-#if !defined(BOOST_NO_LONG_LONG)
- template <> struct long_numbers<cutl_details_boost::long_long_type> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct ulong_numbers<cutl_details_boost::ulong_long_type> :
- cutl_details_boost::hash_detail::enable_hash_value {};
-#endif
-
-#if defined(BOOST_HAS_INT128)
- template <> struct long_numbers2<cutl_details_boost::int128_type> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct ulong_numbers2<cutl_details_boost::uint128_type> :
- cutl_details_boost::hash_detail::enable_hash_value {};
-#endif
-
- template <> struct float_numbers<float> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct float_numbers<double> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- template <> struct float_numbers<long double> :
- cutl_details_boost::hash_detail::enable_hash_value {};
- }
-
- template <typename T>
- typename cutl_details_boost::hash_detail::basic_numbers<T>::type hash_value(T);
- template <typename T>
- typename cutl_details_boost::hash_detail::long_numbers<T>::type hash_value(T);
- template <typename T>
- typename cutl_details_boost::hash_detail::ulong_numbers<T>::type hash_value(T);
-
- template <typename T>
- typename cutl_details_boost::enable_if<cutl_details_boost::is_enum<T>, std::size_t>::type
- hash_value(T);
-
-#if !BOOST_WORKAROUND(__DMC__, <= 0x848)
- template <class T> std::size_t hash_value(T* const&);
-#else
- template <class T> std::size_t hash_value(T*);
-#endif
-
-#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
- template< class T, unsigned N >
- std::size_t hash_value(const T (&x)[N]);
-
- template< class T, unsigned N >
- std::size_t hash_value(T (&x)[N]);
-#endif
-
- template <class Ch, class A>
- std::size_t hash_value(
- std::basic_string<Ch, std::BOOST_HASH_CHAR_TRAITS<Ch>, A> const&);
-
- template <typename T>
- typename cutl_details_boost::hash_detail::float_numbers<T>::type hash_value(T);
-
-#if !defined(BOOST_NO_CXX11_HDR_TYPEINDEX)
- std::size_t hash_value(std::type_index);
-#endif
-
- // Implementation
-
- namespace hash_detail
- {
- template <class T>
- inline std::size_t hash_value_signed(T val)
- {
- const int size_t_bits = std::numeric_limits<std::size_t>::digits;
- // ceiling(std::numeric_limits<T>::digits / size_t_bits) - 1
- const int length = (std::numeric_limits<T>::digits - 1)
- / size_t_bits;
-
- std::size_t seed = 0;
- T positive = val < 0 ? -1 - val : val;
-
- // Hopefully, this loop can be unrolled.
- for(unsigned int i = length * size_t_bits; i > 0; i -= size_t_bits)
- {
- seed ^= (std::size_t) (positive >> i) + (seed<<6) + (seed>>2);
- }
- seed ^= (std::size_t) val + (seed<<6) + (seed>>2);
-
- return seed;
- }
-
- template <class T>
- inline std::size_t hash_value_unsigned(T val)
- {
- const int size_t_bits = std::numeric_limits<std::size_t>::digits;
- // ceiling(std::numeric_limits<T>::digits / size_t_bits) - 1
- const int length = (std::numeric_limits<T>::digits - 1)
- / size_t_bits;
-
- std::size_t seed = 0;
-
- // Hopefully, this loop can be unrolled.
- for(unsigned int i = length * size_t_bits; i > 0; i -= size_t_bits)
- {
- seed ^= (std::size_t) (val >> i) + (seed<<6) + (seed>>2);
- }
- seed ^= (std::size_t) val + (seed<<6) + (seed>>2);
-
- return seed;
- }
- }
-
- template <typename T>
- typename cutl_details_boost::hash_detail::basic_numbers<T>::type hash_value(T v)
- {
- return static_cast<std::size_t>(v);
- }
-
- template <typename T>
- typename cutl_details_boost::hash_detail::long_numbers<T>::type hash_value(T v)
- {
- return hash_detail::hash_value_signed(v);
- }
-
- template <typename T>
- typename cutl_details_boost::hash_detail::ulong_numbers<T>::type hash_value(T v)
- {
- return hash_detail::hash_value_unsigned(v);
- }
-
- template <typename T>
- typename cutl_details_boost::enable_if<cutl_details_boost::is_enum<T>, std::size_t>::type
- hash_value(T v)
- {
- return static_cast<std::size_t>(v);
- }
-
- // Implementation by Alberto Barbati and Dave Harris.
-#if !BOOST_WORKAROUND(__DMC__, <= 0x848)
- template <class T> std::size_t hash_value(T* const& v)
-#else
- template <class T> std::size_t hash_value(T* v)
-#endif
- {
-#if defined(__VMS) && __INITIAL_POINTER_SIZE == 64
- // for some reason ptrdiff_t on OpenVMS compiler with
- // 64 bit is not 64 bit !!!
- std::size_t x = static_cast<std::size_t>(
- reinterpret_cast<long long int>(v));
-#else
- std::size_t x = static_cast<std::size_t>(
- reinterpret_cast<std::ptrdiff_t>(v));
-#endif
- return x + (x >> 3);
- }
-
-#if defined(BOOST_MSVC)
-#pragma warning(push)
-#if BOOST_MSVC <= 1400
-#pragma warning(disable:4267) // 'argument' : conversion from 'size_t' to
- // 'unsigned int', possible loss of data
- // A misguided attempt to detect 64-bit
- // incompatability.
-#endif
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- template <class T>
- inline void hash_combine(std::size_t& seed, T& v)
-#else
- template <class T>
- inline void hash_combine(std::size_t& seed, T const& v)
-#endif
- {
- cutl_details_boost::hash<T> hasher;
- seed ^= hasher(v) + 0x9e3779b9 + (seed<<6) + (seed>>2);
- }
-
-#if defined(BOOST_MSVC)
-#pragma warning(pop)
-#endif
-
- template <class It>
- inline std::size_t hash_range(It first, It last)
- {
- std::size_t seed = 0;
-
- for(; first != last; ++first)
- {
- hash_combine(seed, *first);
- }
-
- return seed;
- }
-
- template <class It>
- inline void hash_range(std::size_t& seed, It first, It last)
- {
- for(; first != last; ++first)
- {
- hash_combine(seed, *first);
- }
- }
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
- template <class T>
- inline std::size_t hash_range(T* first, T* last)
- {
- std::size_t seed = 0;
-
- for(; first != last; ++first)
- {
- cutl_details_boost::hash<T> hasher;
- seed ^= hasher(*first) + 0x9e3779b9 + (seed<<6) + (seed>>2);
- }
-
- return seed;
- }
-
- template <class T>
- inline void hash_range(std::size_t& seed, T* first, T* last)
- {
- for(; first != last; ++first)
- {
- cutl_details_boost::hash<T> hasher;
- seed ^= hasher(*first) + 0x9e3779b9 + (seed<<6) + (seed>>2);
- }
- }
-#endif
-
-#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
- template< class T, unsigned N >
- inline std::size_t hash_value(const T (&x)[N])
- {
- return hash_range(x, x + N);
- }
-
- template< class T, unsigned N >
- inline std::size_t hash_value(T (&x)[N])
- {
- return hash_range(x, x + N);
- }
-#endif
-
- template <class Ch, class A>
- inline std::size_t hash_value(
- std::basic_string<Ch, std::BOOST_HASH_CHAR_TRAITS<Ch>, A> const& v)
- {
- return hash_range(v.begin(), v.end());
- }
-
- template <typename T>
- typename cutl_details_boost::hash_detail::float_numbers<T>::type hash_value(T v)
- {
- return cutl_details_boost::hash_detail::float_hash_value(v);
- }
-
-#if !defined(BOOST_NO_CXX11_HDR_TYPEINDEX)
- inline std::size_t hash_value(std::type_index v)
- {
- return v.hash_code();
- }
-#endif
-
- //
- // cutl_details_boost::hash
- //
-
- // Define the specializations required by the standard. The general purpose
- // cutl_details_boost::hash is defined later in extensions.hpp if
- // BOOST_HASH_NO_EXTENSIONS is not defined.
-
- // BOOST_HASH_SPECIALIZE - define a specialization for a type which is
- // passed by copy.
- //
- // BOOST_HASH_SPECIALIZE_REF - define a specialization for a type which is
- // passed by copy.
- //
- // These are undefined later.
-
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-#define BOOST_HASH_SPECIALIZE(type) \
- template <> struct hash<type> \
- : public std::unary_function<type, std::size_t> \
- { \
- std::size_t operator()(type v) const \
- { \
- return cutl_details_boost::hash_value(v); \
- } \
- };
-
-#define BOOST_HASH_SPECIALIZE_REF(type) \
- template <> struct hash<type> \
- : public std::unary_function<type, std::size_t> \
- { \
- std::size_t operator()(type const& v) const \
- { \
- return cutl_details_boost::hash_value(v); \
- } \
- };
-#else
-#define BOOST_HASH_SPECIALIZE(type) \
- template <> struct hash<type> \
- : public std::unary_function<type, std::size_t> \
- { \
- std::size_t operator()(type v) const \
- { \
- return cutl_details_boost::hash_value(v); \
- } \
- }; \
- \
- template <> struct hash<const type> \
- : public std::unary_function<const type, std::size_t> \
- { \
- std::size_t operator()(const type v) const \
- { \
- return cutl_details_boost::hash_value(v); \
- } \
- };
-
-#define BOOST_HASH_SPECIALIZE_REF(type) \
- template <> struct hash<type> \
- : public std::unary_function<type, std::size_t> \
- { \
- std::size_t operator()(type const& v) const \
- { \
- return cutl_details_boost::hash_value(v); \
- } \
- }; \
- \
- template <> struct hash<const type> \
- : public std::unary_function<const type, std::size_t> \
- { \
- std::size_t operator()(type const& v) const \
- { \
- return cutl_details_boost::hash_value(v); \
- } \
- };
-#endif
-
- BOOST_HASH_SPECIALIZE(bool)
- BOOST_HASH_SPECIALIZE(char)
- BOOST_HASH_SPECIALIZE(signed char)
- BOOST_HASH_SPECIALIZE(unsigned char)
-#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
- BOOST_HASH_SPECIALIZE(wchar_t)
-#endif
- BOOST_HASH_SPECIALIZE(short)
- BOOST_HASH_SPECIALIZE(unsigned short)
- BOOST_HASH_SPECIALIZE(int)
- BOOST_HASH_SPECIALIZE(unsigned int)
- BOOST_HASH_SPECIALIZE(long)
- BOOST_HASH_SPECIALIZE(unsigned long)
-
- BOOST_HASH_SPECIALIZE(float)
- BOOST_HASH_SPECIALIZE(double)
- BOOST_HASH_SPECIALIZE(long double)
-
- BOOST_HASH_SPECIALIZE_REF(std::string)
-#if !defined(BOOST_NO_STD_WSTRING)
- BOOST_HASH_SPECIALIZE_REF(std::wstring)
-#endif
-
-#if !defined(BOOST_NO_LONG_LONG)
- BOOST_HASH_SPECIALIZE(cutl_details_boost::long_long_type)
- BOOST_HASH_SPECIALIZE(cutl_details_boost::ulong_long_type)
-#endif
-
-#if defined(BOOST_HAS_INT128)
- BOOST_HASH_SPECIALIZE(cutl_details_boost::int128_type)
- BOOST_HASH_SPECIALIZE(cutl_details_boost::uint128_type)
-#endif
-
-#if !defined(BOOST_NO_CXX11_HDR_TYPEINDEX)
- BOOST_HASH_SPECIALIZE(std::type_index)
-#endif
-
-#undef BOOST_HASH_SPECIALIZE
-#undef BOOST_HASH_SPECIALIZE_REF
-
-// Specializing cutl_details_boost::hash for pointers.
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
- template <class T>
- struct hash<T*>
- : public std::unary_function<T*, std::size_t>
- {
- std::size_t operator()(T* v) const
- {
-#if !BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590)
- return cutl_details_boost::hash_value(v);
-#else
- std::size_t x = static_cast<std::size_t>(
- reinterpret_cast<std::ptrdiff_t>(v));
-
- return x + (x >> 3);
-#endif
- }
- };
-
-#else
-
- // For compilers without partial specialization, we define a
- // cutl_details_boost::hash for all remaining types. But hash_impl is only defined
- // for pointers in 'extensions.hpp' - so when BOOST_HASH_NO_EXTENSIONS
- // is defined there will still be a compile error for types not supported
- // in the standard.
-
- namespace hash_detail
- {
- template <bool IsPointer>
- struct hash_impl;
-
- template <>
- struct hash_impl<true>
- {
- template <class T>
- struct inner
- : public std::unary_function<T, std::size_t>
- {
- std::size_t operator()(T val) const
- {
-#if !BOOST_WORKAROUND(__SUNPRO_CC, <= 590)
- return cutl_details_boost::hash_value(val);
-#else
- std::size_t x = static_cast<std::size_t>(
- reinterpret_cast<std::ptrdiff_t>(val));
-
- return x + (x >> 3);
-#endif
- }
- };
- };
- }
-
- template <class T> struct hash
- : public cutl_details_boost::hash_detail::hash_impl<cutl_details_boost::is_pointer<T>::value>
- ::BOOST_NESTED_TEMPLATE inner<T>
- {
- };
-
-#endif
-}
-
-#undef BOOST_HASH_CHAR_TRAITS
-
-#endif // BOOST_FUNCTIONAL_HASH_HASH_HPP
-
-// Include this outside of the include guards in case the file is included
-// twice - once with BOOST_HASH_NO_EXTENSIONS defined, and then with it
-// undefined.
-
-#if !defined(BOOST_HASH_NO_EXTENSIONS) \
- && !defined(BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP)
-#include <cutl/details/boost/functional/hash/extensions.hpp>
-#endif
diff --git a/libcutl/cutl/details/boost/functional/hash/hash_fwd.hpp b/libcutl/cutl/details/boost/functional/hash/hash_fwd.hpp
deleted file mode 100644
index b56a4f9..0000000
--- a/libcutl/cutl/details/boost/functional/hash/hash_fwd.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-
-// Copyright 2005-2009 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// Based on Peter Dimov's proposal
-// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf
-// issue 6.18.
-
-#if !defined(BOOST_FUNCTIONAL_HASH_FWD_HPP)
-#define BOOST_FUNCTIONAL_HASH_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-#include <cutl/details/boost/config.hpp>
-#include <cstddef>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-namespace cutl_details_boost
-{
- template <class T> struct hash;
-
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- template <class T> void hash_combine(std::size_t& seed, T& v);
-#else
- template <class T> void hash_combine(std::size_t& seed, T const& v);
-#endif
-
- template <class It> std::size_t hash_range(It, It);
- template <class It> void hash_range(std::size_t&, It, It);
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
- template <class T> inline std::size_t hash_range(T*, T*);
- template <class T> inline void hash_range(std::size_t&, T*, T*);
-#endif
-}
-
-#endif
diff --git a/libcutl/cutl/details/boost/integer.hpp b/libcutl/cutl/details/boost/integer.hpp
deleted file mode 100644
index 9c444f7..0000000
--- a/libcutl/cutl/details/boost/integer.hpp
+++ /dev/null
@@ -1,261 +0,0 @@
-// boost integer.hpp header file -------------------------------------------//
-
-// Copyright Beman Dawes and Daryle Walker 1999. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/integer for documentation.
-
-// Revision History
-// 22 Sep 01 Added value-based integer templates. (Daryle Walker)
-// 01 Apr 01 Modified to use new <cutl/details/boost/limits.hpp> header. (John Maddock)
-// 30 Jul 00 Add typename syntax fix (Jens Maurer)
-// 28 Aug 99 Initial version
-
-#ifndef BOOST_INTEGER_HPP
-#define BOOST_INTEGER_HPP
-
-#include <cutl/details/boost/integer_fwd.hpp> // self include
-
-#include <cutl/details/boost/integer_traits.hpp> // for cutl_details_boost::::cutl_details_boost::integer_traits
-#include <cutl/details/boost/limits.hpp> // for ::std::numeric_limits
-#include <cutl/details/boost/cstdint.hpp> // for cutl_details_boost::int64_t and BOOST_NO_INTEGRAL_INT64_T
-#include <cutl/details/boost/static_assert.hpp>
-
-//
-// We simply cannot include this header on gcc without getting copious warnings of the kind:
-//
-// boost/integer.hpp:77:30: warning: use of C99 long long integer constant
-//
-// And yet there is no other reasonable implementation, so we declare this a system header
-// to suppress these warnings.
-//
-#if defined(__GNUC__) && (__GNUC__ >= 4)
-#pragma GCC system_header
-#endif
-
-namespace cutl_details_boost
-{
-
- // Helper templates ------------------------------------------------------//
-
- // fast integers from least integers
- // int_fast_t<> works correctly for unsigned too, in spite of the name.
- template< typename LeastInt >
- struct int_fast_t
- {
- typedef LeastInt fast;
- typedef fast type;
- }; // imps may specialize
-
- namespace detail{
-
- // convert category to type
- template< int Category > struct int_least_helper {}; // default is empty
- template< int Category > struct uint_least_helper {}; // default is empty
-
- // specializatons: 1=long, 2=int, 3=short, 4=signed char,
- // 6=unsigned long, 7=unsigned int, 8=unsigned short, 9=unsigned char
- // no specializations for 0 and 5: requests for a type > long are in error
-#ifdef BOOST_HAS_LONG_LONG
- template<> struct int_least_helper<1> { typedef cutl_details_boost::long_long_type least; };
-#elif defined(BOOST_HAS_MS_INT64)
- template<> struct int_least_helper<1> { typedef __int64 least; };
-#endif
- template<> struct int_least_helper<2> { typedef long least; };
- template<> struct int_least_helper<3> { typedef int least; };
- template<> struct int_least_helper<4> { typedef short least; };
- template<> struct int_least_helper<5> { typedef signed char least; };
-#ifdef BOOST_HAS_LONG_LONG
- template<> struct uint_least_helper<1> { typedef cutl_details_boost::ulong_long_type least; };
-#elif defined(BOOST_HAS_MS_INT64)
- template<> struct uint_least_helper<1> { typedef unsigned __int64 least; };
-#endif
- template<> struct uint_least_helper<2> { typedef unsigned long least; };
- template<> struct uint_least_helper<3> { typedef unsigned int least; };
- template<> struct uint_least_helper<4> { typedef unsigned short least; };
- template<> struct uint_least_helper<5> { typedef unsigned char least; };
-
- template <int Bits>
- struct exact_signed_base_helper{};
- template <int Bits>
- struct exact_unsigned_base_helper{};
-
- template <> struct exact_signed_base_helper<sizeof(signed char)* CHAR_BIT> { typedef signed char exact; };
- template <> struct exact_unsigned_base_helper<sizeof(unsigned char)* CHAR_BIT> { typedef unsigned char exact; };
-#if USHRT_MAX != UCHAR_MAX
- template <> struct exact_signed_base_helper<sizeof(short)* CHAR_BIT> { typedef short exact; };
- template <> struct exact_unsigned_base_helper<sizeof(unsigned short)* CHAR_BIT> { typedef unsigned short exact; };
-#endif
-#if UINT_MAX != USHRT_MAX
- template <> struct exact_signed_base_helper<sizeof(int)* CHAR_BIT> { typedef int exact; };
- template <> struct exact_unsigned_base_helper<sizeof(unsigned int)* CHAR_BIT> { typedef unsigned int exact; };
-#endif
-#if ULONG_MAX != UINT_MAX
- template <> struct exact_signed_base_helper<sizeof(long)* CHAR_BIT> { typedef long exact; };
- template <> struct exact_unsigned_base_helper<sizeof(unsigned long)* CHAR_BIT> { typedef unsigned long exact; };
-#endif
-#if defined(BOOST_HAS_LONG_LONG) &&\
- ((defined(ULLONG_MAX) && (ULLONG_MAX != ULONG_MAX)) ||\
- (defined(ULONG_LONG_MAX) && (ULONG_LONG_MAX != ULONG_MAX)) ||\
- (defined(ULONGLONG_MAX) && (ULONGLONG_MAX != ULONG_MAX)) ||\
- (defined(_ULLONG_MAX) && (_ULLONG_MAX != ULONG_MAX)))
- template <> struct exact_signed_base_helper<sizeof(cutl_details_boost::long_long_type)* CHAR_BIT> { typedef cutl_details_boost::long_long_type exact; };
- template <> struct exact_unsigned_base_helper<sizeof(cutl_details_boost::ulong_long_type)* CHAR_BIT> { typedef cutl_details_boost::ulong_long_type exact; };
-#endif
-
-
- } // namespace detail
-
- // integer templates specifying number of bits ---------------------------//
-
- // signed
- template< int Bits > // bits (including sign) required
- struct int_t : public detail::exact_signed_base_helper<Bits>
- {
- BOOST_STATIC_ASSERT_MSG(Bits <= (int)(sizeof(cutl_details_boost::intmax_t) * CHAR_BIT),
- "No suitable signed integer type with the requested number of bits is available.");
- typedef typename detail::int_least_helper
- <
-#ifdef BOOST_HAS_LONG_LONG
- (Bits <= (int)(sizeof(cutl_details_boost::long_long_type) * CHAR_BIT)) +
-#else
- 1 +
-#endif
- (Bits-1 <= ::std::numeric_limits<long>::digits) +
- (Bits-1 <= ::std::numeric_limits<int>::digits) +
- (Bits-1 <= ::std::numeric_limits<short>::digits) +
- (Bits-1 <= ::std::numeric_limits<signed char>::digits)
- >::least least;
- typedef typename int_fast_t<least>::type fast;
- };
-
- // unsigned
- template< int Bits > // bits required
- struct uint_t : public detail::exact_unsigned_base_helper<Bits>
- {
- BOOST_STATIC_ASSERT_MSG(Bits <= (int)(sizeof(cutl_details_boost::uintmax_t) * CHAR_BIT),
- "No suitable unsigned integer type with the requested number of bits is available.");
-#if (defined(__BORLANDC__) || defined(__CODEGEAR__)) && defined(BOOST_NO_INTEGRAL_INT64_T)
- // It's really not clear why this workaround should be needed... shrug I guess! JM
- BOOST_STATIC_CONSTANT(int, s =
- 6 +
- (Bits <= ::std::numeric_limits<unsigned long>::digits) +
- (Bits <= ::std::numeric_limits<unsigned int>::digits) +
- (Bits <= ::std::numeric_limits<unsigned short>::digits) +
- (Bits <= ::std::numeric_limits<unsigned char>::digits));
- typedef typename detail::int_least_helper< ::cutl_details_boost::uint_t<Bits>::s>::least least;
-#else
- typedef typename detail::uint_least_helper
- <
-#ifdef BOOST_HAS_LONG_LONG
- (Bits <= (int)(sizeof(cutl_details_boost::long_long_type) * CHAR_BIT)) +
-#else
- 1 +
-#endif
- (Bits <= ::std::numeric_limits<unsigned long>::digits) +
- (Bits <= ::std::numeric_limits<unsigned int>::digits) +
- (Bits <= ::std::numeric_limits<unsigned short>::digits) +
- (Bits <= ::std::numeric_limits<unsigned char>::digits)
- >::least least;
-#endif
- typedef typename int_fast_t<least>::type fast;
- // int_fast_t<> works correctly for unsigned too, in spite of the name.
- };
-
- // integer templates specifying extreme value ----------------------------//
-
- // signed
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
- template< cutl_details_boost::long_long_type MaxValue > // maximum value to require support
-#else
- template< long MaxValue > // maximum value to require support
-#endif
- struct int_max_value_t
- {
- typedef typename detail::int_least_helper
- <
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
- (MaxValue <= ::cutl_details_boost::integer_traits<cutl_details_boost::long_long_type>::const_max) +
-#else
- 1 +
-#endif
- (MaxValue <= ::cutl_details_boost::integer_traits<long>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<int>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<short>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<signed char>::const_max)
- >::least least;
- typedef typename int_fast_t<least>::type fast;
- };
-
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
- template< cutl_details_boost::long_long_type MinValue > // minimum value to require support
-#else
- template< long MinValue > // minimum value to require support
-#endif
- struct int_min_value_t
- {
- typedef typename detail::int_least_helper
- <
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
- (MinValue >= ::cutl_details_boost::integer_traits<cutl_details_boost::long_long_type>::const_min) +
-#else
- 1 +
-#endif
- (MinValue >= ::cutl_details_boost::integer_traits<long>::const_min) +
- (MinValue >= ::cutl_details_boost::integer_traits<int>::const_min) +
- (MinValue >= ::cutl_details_boost::integer_traits<short>::const_min) +
- (MinValue >= ::cutl_details_boost::integer_traits<signed char>::const_min)
- >::least least;
- typedef typename int_fast_t<least>::type fast;
- };
-
- // unsigned
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
- template< cutl_details_boost::ulong_long_type MaxValue > // minimum value to require support
-#else
- template< unsigned long MaxValue > // minimum value to require support
-#endif
- struct uint_value_t
- {
-#if (defined(__BORLANDC__) || defined(__CODEGEAR__))
- // It's really not clear why this workaround should be needed... shrug I guess! JM
-#if defined(BOOST_NO_INTEGRAL_INT64_T)
- BOOST_STATIC_CONSTANT(unsigned, which =
- 1 +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned long>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned int>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned short>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned char>::const_max));
- typedef typename detail::int_least_helper< ::cutl_details_boost::uint_value_t<MaxValue>::which>::least least;
-#else // BOOST_NO_INTEGRAL_INT64_T
- BOOST_STATIC_CONSTANT(unsigned, which =
- 1 +
- (MaxValue <= ::cutl_details_boost::integer_traits<cutl_details_boost::ulong_long_type>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned long>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned int>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned short>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned char>::const_max));
- typedef typename detail::uint_least_helper< ::cutl_details_boost::uint_value_t<MaxValue>::which>::least least;
-#endif // BOOST_NO_INTEGRAL_INT64_T
-#else
- typedef typename detail::uint_least_helper
- <
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
- (MaxValue <= ::cutl_details_boost::integer_traits<cutl_details_boost::ulong_long_type>::const_max) +
-#else
- 1 +
-#endif
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned long>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned int>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned short>::const_max) +
- (MaxValue <= ::cutl_details_boost::integer_traits<unsigned char>::const_max)
- >::least least;
-#endif
- typedef typename int_fast_t<least>::type fast;
- };
-
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_INTEGER_HPP
diff --git a/libcutl/cutl/details/boost/integer/static_log2.hpp b/libcutl/cutl/details/boost/integer/static_log2.hpp
deleted file mode 100644
index 4911fa5..0000000
--- a/libcutl/cutl/details/boost/integer/static_log2.hpp
+++ /dev/null
@@ -1,127 +0,0 @@
-// -------------- Boost static_log2.hpp header file ----------------------- //
-//
-// Copyright (C) 2001 Daryle Walker.
-// Copyright (C) 2003 Vesa Karvonen.
-// Copyright (C) 2003 Gennaro Prota.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// ---------------------------------------------------
-// See http://www.boost.org/libs/integer for documentation.
-// ------------------------------------------------------------------------- //
-
-
-#ifndef BOOST_INTEGER_STATIC_LOG2_HPP
-#define BOOST_INTEGER_STATIC_LOG2_HPP
-
-#include "cutl/details/boost/integer_fwd.hpp" // for cutl_details_boost::intmax_t
-
-namespace cutl_details_boost {
-
- namespace detail {
-
- namespace static_log2_impl {
-
- // choose_initial_n<>
- //
- // Recursively doubles its integer argument, until it
- // becomes >= of the "width" (C99, 6.2.6.2p4) of
- // static_log2_argument_type.
- //
- // Used to get the maximum power of two less then the width.
- //
- // Example: if on your platform argument_type has 48 value
- // bits it yields n=32.
- //
- // It's easy to prove that, starting from such a value
- // of n, the core algorithm works correctly for any width
- // of static_log2_argument_type and that recursion always
- // terminates with x = 1 and n = 0 (see the algorithm's
- // invariant).
-
- typedef cutl_details_boost::static_log2_argument_type argument_type;
- typedef cutl_details_boost::static_log2_result_type result_type;
-
- template <result_type n>
- struct choose_initial_n {
-
- BOOST_STATIC_CONSTANT(bool, c = (argument_type(1) << n << n) != 0);
- BOOST_STATIC_CONSTANT(
- result_type,
- value = !c*n + choose_initial_n<2*c*n>::value
- );
-
- };
-
- template <>
- struct choose_initial_n<0> {
- BOOST_STATIC_CONSTANT(result_type, value = 0);
- };
-
-
-
- // start computing from n_zero - must be a power of two
- const result_type n_zero = 16;
- const result_type initial_n = choose_initial_n<n_zero>::value;
-
- // static_log2_impl<>
- //
- // * Invariant:
- // 2n
- // 1 <= x && x < 2 at the start of each recursion
- // (see also choose_initial_n<>)
- //
- // * Type requirements:
- //
- // argument_type maybe any unsigned type with at least n_zero + 1
- // value bits. (Note: If larger types will be standardized -e.g.
- // unsigned long long- then the argument_type typedef can be
- // changed without affecting the rest of the code.)
- //
-
- template <argument_type x, result_type n = initial_n>
- struct static_log2_impl {
-
- BOOST_STATIC_CONSTANT(bool, c = (x >> n) > 0); // x >= 2**n ?
- BOOST_STATIC_CONSTANT(
- result_type,
- value = c*n + (static_log2_impl< (x>>c*n), n/2 >::value)
- );
-
- };
-
- template <>
- struct static_log2_impl<1, 0> {
- BOOST_STATIC_CONSTANT(result_type, value = 0);
- };
-
- }
- } // detail
-
-
-
- // --------------------------------------
- // static_log2<x>
- // ----------------------------------------
-
- template <static_log2_argument_type x>
- struct static_log2 {
-
- BOOST_STATIC_CONSTANT(
- static_log2_result_type,
- value = detail::static_log2_impl::static_log2_impl<x>::value
- );
-
- };
-
-
- template <>
- struct static_log2<0> { };
-
-}
-
-
-
-#endif // include guard
diff --git a/libcutl/cutl/details/boost/integer_fwd.hpp b/libcutl/cutl/details/boost/integer_fwd.hpp
deleted file mode 100644
index 94c659a..0000000
--- a/libcutl/cutl/details/boost/integer_fwd.hpp
+++ /dev/null
@@ -1,164 +0,0 @@
-// Boost integer_fwd.hpp header file ---------------------------------------//
-
-// (C) Copyright Dave Abrahams and Daryle Walker 2001. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/integer for documentation.
-
-#ifndef BOOST_INTEGER_FWD_HPP
-#define BOOST_INTEGER_FWD_HPP
-
-#include <climits> // for UCHAR_MAX, etc.
-#include <cstddef> // for std::size_t
-
-#include <cutl/details/boost/config.hpp> // for BOOST_NO_INTRINSIC_WCHAR_T
-#include <cutl/details/boost/limits.hpp> // for std::numeric_limits
-#include <cutl/details/boost/cstdint.hpp> // For intmax_t
-
-
-namespace cutl_details_boost
-{
-
-#ifdef BOOST_NO_INTEGRAL_INT64_T
- typedef unsigned long static_log2_argument_type;
- typedef int static_log2_result_type;
- typedef long static_min_max_signed_type;
- typedef unsigned long static_min_max_unsigned_type;
-#else
- typedef cutl_details_boost::uintmax_t static_min_max_unsigned_type;
- typedef cutl_details_boost::intmax_t static_min_max_signed_type;
- typedef cutl_details_boost::uintmax_t static_log2_argument_type;
- typedef int static_log2_result_type;
-#endif
-
-// From <cutl/details/boost/cstdint.hpp> ------------------------------------------------//
-
-// Only has typedefs or using statements, with #conditionals
-
-
-// From <cutl/details/boost/integer_traits.hpp> -----------------------------------------//
-
-template < class T >
- class integer_traits;
-
-template < >
- class integer_traits< bool >;
-
-template < >
- class integer_traits< char >;
-
-template < >
- class integer_traits< signed char >;
-
-template < >
- class integer_traits< unsigned char >;
-
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template < >
- class integer_traits< wchar_t >;
-#endif
-
-template < >
- class integer_traits< short >;
-
-template < >
- class integer_traits< unsigned short >;
-
-template < >
- class integer_traits< int >;
-
-template < >
- class integer_traits< unsigned int >;
-
-template < >
- class integer_traits< long >;
-
-template < >
- class integer_traits< unsigned long >;
-
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) && defined(BOOST_HAS_LONG_LONG)
-template < >
-class integer_traits< ::cutl_details_boost::long_long_type>;
-
-template < >
-class integer_traits< ::cutl_details_boost::ulong_long_type >;
-#elif !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) && defined(BOOST_HAS_MS_INT64)
-template < >
-class integer_traits<__int64>;
-
-template < >
-class integer_traits<unsigned __int64>;
-#endif
-
-
-// From <cutl/details/boost/integer.hpp> ------------------------------------------------//
-
-template < typename LeastInt >
- struct int_fast_t;
-
-template< int Bits >
- struct int_t;
-
-template< int Bits >
- struct uint_t;
-
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
- template< cutl_details_boost::long_long_type MaxValue > // maximum value to require support
-#else
- template< long MaxValue > // maximum value to require support
-#endif
- struct int_max_value_t;
-
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
- template< cutl_details_boost::long_long_type MinValue > // minimum value to require support
-#else
- template< long MinValue > // minimum value to require support
-#endif
- struct int_min_value_t;
-
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
- template< cutl_details_boost::ulong_long_type MaxValue > // maximum value to require support
-#else
- template< unsigned long MaxValue > // maximum value to require support
-#endif
- struct uint_value_t;
-
-
-// From <cutl/details/boost/integer/integer_mask.hpp> -----------------------------------//
-
-template < std::size_t Bit >
- struct high_bit_mask_t;
-
-template < std::size_t Bits >
- struct low_bits_mask_t;
-
-template < >
- struct low_bits_mask_t< ::std::numeric_limits<unsigned char>::digits >;
-
-// From <cutl/details/boost/integer/static_log2.hpp> ------------------------------------//
-
-template <static_log2_argument_type Value >
- struct static_log2;
-
-template <> struct static_log2<0u>;
-
-
-// From <cutl/details/boost/integer/static_min_max.hpp> ---------------------------------//
-
-template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
- struct static_signed_min;
-
-template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
- struct static_signed_max;
-
-template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
- struct static_unsigned_min;
-
-template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
- struct static_unsigned_max;
-
-} // namespace cutl_details_boost
-
-
-#endif // BOOST_INTEGER_FWD_HPP
diff --git a/libcutl/cutl/details/boost/integer_traits.hpp b/libcutl/cutl/details/boost/integer_traits.hpp
deleted file mode 100644
index df388cc..0000000
--- a/libcutl/cutl/details/boost/integer_traits.hpp
+++ /dev/null
@@ -1,261 +0,0 @@
-/* boost integer_traits.hpp header file
- *
- * Copyright Jens Maurer 2000
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * $Id: integer_traits.hpp 83381 2013-03-09 22:55:05Z eric_niebler $
- *
- * Idea by Beman Dawes, Ed Brey, Steve Cleary, and Nathan Myers
- */
-
-// See http://www.boost.org/libs/integer for documentation.
-
-
-#ifndef BOOST_INTEGER_TRAITS_HPP
-#define BOOST_INTEGER_TRAITS_HPP
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/limits.hpp>
-
-// These are an implementation detail and not part of the interface
-#include <limits.h>
-// we need wchar.h for WCHAR_MAX/MIN but not all platforms provide it,
-// and some may have <wchar.h> but not <cwchar> ...
-#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) && (!defined(BOOST_NO_CWCHAR) || defined(sun) || defined(__sun) || defined(__QNX__))
-#include <wchar.h>
-#endif
-
-//
-// We simply cannot include this header on gcc without getting copious warnings of the kind:
-//
-// ../../../boost/integer_traits.hpp:164:66: warning: use of C99 long long integer constant
-//
-// And yet there is no other reasonable implementation, so we declare this a system header
-// to suppress these warnings.
-//
-#if defined(__GNUC__) && (__GNUC__ >= 4)
-#pragma GCC system_header
-#endif
-
-namespace cutl_details_boost {
-template<class T>
-class integer_traits : public std::numeric_limits<T>
-{
-public:
- BOOST_STATIC_CONSTANT(bool, is_integral = false);
-};
-
-namespace detail {
-template<class T, T min_val, T max_val>
-class integer_traits_base
-{
-public:
- BOOST_STATIC_CONSTANT(bool, is_integral = true);
- BOOST_STATIC_CONSTANT(T, const_min = min_val);
- BOOST_STATIC_CONSTANT(T, const_max = max_val);
-};
-
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-// A definition is required even for integral static constants
-template<class T, T min_val, T max_val>
-const bool integer_traits_base<T, min_val, max_val>::is_integral;
-
-template<class T, T min_val, T max_val>
-const T integer_traits_base<T, min_val, max_val>::const_min;
-
-template<class T, T min_val, T max_val>
-const T integer_traits_base<T, min_val, max_val>::const_max;
-#endif
-
-} // namespace detail
-
-template<>
-class integer_traits<bool>
- : public std::numeric_limits<bool>,
- public detail::integer_traits_base<bool, false, true>
-{ };
-
-template<>
-class integer_traits<char>
- : public std::numeric_limits<char>,
- public detail::integer_traits_base<char, CHAR_MIN, CHAR_MAX>
-{ };
-
-template<>
-class integer_traits<signed char>
- : public std::numeric_limits<signed char>,
- public detail::integer_traits_base<signed char, SCHAR_MIN, SCHAR_MAX>
-{ };
-
-template<>
-class integer_traits<unsigned char>
- : public std::numeric_limits<unsigned char>,
- public detail::integer_traits_base<unsigned char, 0, UCHAR_MAX>
-{ };
-
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template<>
-class integer_traits<wchar_t>
- : public std::numeric_limits<wchar_t>,
- // Don't trust WCHAR_MIN and WCHAR_MAX with Mac OS X's native
- // library: they are wrong!
-#if defined(WCHAR_MIN) && defined(WCHAR_MAX) && !defined(__APPLE__)
- public detail::integer_traits_base<wchar_t, WCHAR_MIN, WCHAR_MAX>
-#elif defined(__BORLANDC__) || defined(__CYGWIN__) || defined(__MINGW32__) || (defined(__BEOS__) && defined(__GNUC__))
- // No WCHAR_MIN and WCHAR_MAX, whar_t is short and unsigned:
- public detail::integer_traits_base<wchar_t, 0, 0xffff>
-#elif (defined(__sgi) && (!defined(__SGI_STL_PORT) || __SGI_STL_PORT < 0x400))\
- || (defined __APPLE__)\
- || (defined(__OpenBSD__) && defined(__GNUC__))\
- || (defined(__NetBSD__) && defined(__GNUC__))\
- || (defined(__FreeBSD__) && defined(__GNUC__))\
- || (defined(__DragonFly__) && defined(__GNUC__))\
- || (defined(__hpux) && defined(__GNUC__) && (__GNUC__ == 3) && !defined(__SGI_STL_PORT))
- // No WCHAR_MIN and WCHAR_MAX, wchar_t has the same range as int.
- // - SGI MIPSpro with native library
- // - gcc 3.x on HP-UX
- // - Mac OS X with native library
- // - gcc on FreeBSD, OpenBSD and NetBSD
- public detail::integer_traits_base<wchar_t, INT_MIN, INT_MAX>
-#elif defined(__hpux) && defined(__GNUC__) && (__GNUC__ == 2) && !defined(__SGI_STL_PORT)
- // No WCHAR_MIN and WCHAR_MAX, wchar_t has the same range as unsigned int.
- // - gcc 2.95.x on HP-UX
- // (also, std::numeric_limits<wchar_t> appears to return the wrong values).
- public detail::integer_traits_base<wchar_t, 0, UINT_MAX>
-#else
-#error No WCHAR_MIN and WCHAR_MAX present, please adjust integer_traits<> for your compiler.
-#endif
-{ };
-#endif // BOOST_NO_INTRINSIC_WCHAR_T
-
-template<>
-class integer_traits<short>
- : public std::numeric_limits<short>,
- public detail::integer_traits_base<short, SHRT_MIN, SHRT_MAX>
-{ };
-
-template<>
-class integer_traits<unsigned short>
- : public std::numeric_limits<unsigned short>,
- public detail::integer_traits_base<unsigned short, 0, USHRT_MAX>
-{ };
-
-template<>
-class integer_traits<int>
- : public std::numeric_limits<int>,
- public detail::integer_traits_base<int, INT_MIN, INT_MAX>
-{ };
-
-template<>
-class integer_traits<unsigned int>
- : public std::numeric_limits<unsigned int>,
- public detail::integer_traits_base<unsigned int, 0, UINT_MAX>
-{ };
-
-template<>
-class integer_traits<long>
- : public std::numeric_limits<long>,
- public detail::integer_traits_base<long, LONG_MIN, LONG_MAX>
-{ };
-
-template<>
-class integer_traits<unsigned long>
- : public std::numeric_limits<unsigned long>,
- public detail::integer_traits_base<unsigned long, 0, ULONG_MAX>
-{ };
-
-#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T)
-#if defined(ULLONG_MAX) && defined(BOOST_HAS_LONG_LONG)
-
-template<>
-class integer_traits< ::cutl_details_boost::long_long_type>
- : public std::numeric_limits< ::cutl_details_boost::long_long_type>,
- public detail::integer_traits_base< ::cutl_details_boost::long_long_type, LLONG_MIN, LLONG_MAX>
-{ };
-
-template<>
-class integer_traits< ::cutl_details_boost::ulong_long_type>
- : public std::numeric_limits< ::cutl_details_boost::ulong_long_type>,
- public detail::integer_traits_base< ::cutl_details_boost::ulong_long_type, 0, ULLONG_MAX>
-{ };
-
-#elif defined(ULONG_LONG_MAX) && defined(BOOST_HAS_LONG_LONG)
-
-template<>
-class integer_traits< ::cutl_details_boost::long_long_type> : public std::numeric_limits< ::cutl_details_boost::long_long_type>, public detail::integer_traits_base< ::cutl_details_boost::long_long_type, LONG_LONG_MIN, LONG_LONG_MAX>{ };
-template<>
-class integer_traits< ::cutl_details_boost::ulong_long_type>
- : public std::numeric_limits< ::cutl_details_boost::ulong_long_type>,
- public detail::integer_traits_base< ::cutl_details_boost::ulong_long_type, 0, ULONG_LONG_MAX>
-{ };
-
-#elif defined(ULONGLONG_MAX) && defined(BOOST_HAS_LONG_LONG)
-
-template<>
-class integer_traits< ::cutl_details_boost::long_long_type>
- : public std::numeric_limits< ::cutl_details_boost::long_long_type>,
- public detail::integer_traits_base< ::cutl_details_boost::long_long_type, LONGLONG_MIN, LONGLONG_MAX>
-{ };
-
-template<>
-class integer_traits< ::cutl_details_boost::ulong_long_type>
- : public std::numeric_limits< ::cutl_details_boost::ulong_long_type>,
- public detail::integer_traits_base< ::cutl_details_boost::ulong_long_type, 0, ULONGLONG_MAX>
-{ };
-
-#elif defined(_LLONG_MAX) && defined(_C2) && defined(BOOST_HAS_LONG_LONG)
-
-template<>
-class integer_traits< ::cutl_details_boost::long_long_type>
- : public std::numeric_limits< ::cutl_details_boost::long_long_type>,
- public detail::integer_traits_base< ::cutl_details_boost::long_long_type, -_LLONG_MAX - _C2, _LLONG_MAX>
-{ };
-
-template<>
-class integer_traits< ::cutl_details_boost::ulong_long_type>
- : public std::numeric_limits< ::cutl_details_boost::ulong_long_type>,
- public detail::integer_traits_base< ::cutl_details_boost::ulong_long_type, 0, _ULLONG_MAX>
-{ };
-
-#elif defined(BOOST_HAS_LONG_LONG)
-//
-// we have long long but no constants, this happens for example with gcc in -ansi mode,
-// we'll just have to work out the values for ourselves (assumes 2's compliment representation):
-//
-template<>
-class integer_traits< ::cutl_details_boost::long_long_type>
- : public std::numeric_limits< ::cutl_details_boost::long_long_type>,
- public detail::integer_traits_base< ::cutl_details_boost::long_long_type, (1LL << (sizeof(::cutl_details_boost::long_long_type) * CHAR_BIT - 1)), ~(1LL << (sizeof(::cutl_details_boost::long_long_type) * CHAR_BIT - 1))>
-{ };
-
-template<>
-class integer_traits< ::cutl_details_boost::ulong_long_type>
- : public std::numeric_limits< ::cutl_details_boost::ulong_long_type>,
- public detail::integer_traits_base< ::cutl_details_boost::ulong_long_type, 0, ~0uLL>
-{ };
-
-#elif defined(BOOST_HAS_MS_INT64)
-
-template<>
-class integer_traits< __int64>
- : public std::numeric_limits< __int64>,
- public detail::integer_traits_base< __int64, _I64_MIN, _I64_MAX>
-{ };
-
-template<>
-class integer_traits< unsigned __int64>
- : public std::numeric_limits< unsigned __int64>,
- public detail::integer_traits_base< unsigned __int64, 0, _UI64_MAX>
-{ };
-
-#endif
-#endif
-
-} // namespace cutl_details_boost
-
-#endif /* BOOST_INTEGER_TRAITS_HPP */
-
-
-
diff --git a/libcutl/cutl/details/boost/iterator.hpp b/libcutl/cutl/details/boost/iterator.hpp
deleted file mode 100644
index 379b1d1..0000000
--- a/libcutl/cutl/details/boost/iterator.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-// iterator.hpp workarounds for non-conforming standard libraries ---------//
-
-// (C) Copyright Beman Dawes 2000. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/utility for documentation.
-
-// Revision History
-// 12 Jan 01 added <cstddef> for std::ptrdiff_t (Jens Maurer)
-// 28 Jun 00 Workarounds to deal with known MSVC bugs (David Abrahams)
-// 26 Jun 00 Initial version (Jeremy Siek)
-
-#ifndef BOOST_ITERATOR_HPP
-#define BOOST_ITERATOR_HPP
-
-#include <iterator>
-#include <cstddef> // std::ptrdiff_t
-#include <cutl/details/boost/config.hpp>
-
-namespace cutl_details_boost
-{
-# if defined(BOOST_NO_STD_ITERATOR) && !defined(BOOST_MSVC_STD_ITERATOR)
- template <class Category, class T,
- class Distance = std::ptrdiff_t,
- class Pointer = T*, class Reference = T&>
- struct iterator
- {
- typedef T value_type;
- typedef Distance difference_type;
- typedef Pointer pointer;
- typedef Reference reference;
- typedef Category iterator_category;
- };
-# else
-
- // declare iterator_base in namespace detail to work around MSVC bugs which
- // prevent derivation from an identically-named class in a different namespace.
- namespace detail {
- template <class Category, class T, class Distance, class Pointer, class Reference>
-# if !defined(BOOST_MSVC_STD_ITERATOR)
- struct iterator_base : std::iterator<Category, T, Distance, Pointer, Reference> {};
-# else
- struct iterator_base : std::iterator<Category, T, Distance>
- {
- typedef Reference reference;
- typedef Pointer pointer;
- typedef Distance difference_type;
- };
-# endif
- }
-
- template <class Category, class T, class Distance = std::ptrdiff_t,
- class Pointer = T*, class Reference = T&>
- struct iterator : cutl_details_boost::detail::iterator_base<Category, T, Distance, Pointer, Reference> {};
-# endif
-} // namespace cutl_details_boost
-
-#endif // BOOST_ITERATOR_HPP
diff --git a/libcutl/cutl/details/boost/iterator/detail/config_def.hpp b/libcutl/cutl/details/boost/iterator/detail/config_def.hpp
deleted file mode 100644
index 0b36397..0000000
--- a/libcutl/cutl/details/boost/iterator/detail/config_def.hpp
+++ /dev/null
@@ -1,137 +0,0 @@
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Jeremy Siek 2002.
-// (C) Copyright Thomas Witt 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// no include guard multiple inclusion intended
-
-//
-// This is a temporary workaround until the bulk of this is
-// available in boost config.
-// 23/02/03 thw
-//
-
-#include <cutl/details/boost/config.hpp> // for prior
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#ifdef BOOST_ITERATOR_CONFIG_DEF
-# error you have nested config_def #inclusion.
-#else
-# define BOOST_ITERATOR_CONFIG_DEF
-#endif
-
-// We enable this always now. Otherwise, the simple case in
-// libs/iterator/test/constant_iterator_arrow.cpp fails to compile
-// because the operator-> return is improperly deduced as a non-const
-// pointer.
-#if 1 || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x531))
-
-// Recall that in general, compilers without partial specialization
-// can't strip constness. Consider counting_iterator, which normally
-// passes a const Value to iterator_facade. As a result, any code
-// which makes a std::vector of the iterator's value_type will fail
-// when its allocator declares functions overloaded on reference and
-// const_reference (the same type).
-//
-// Furthermore, Borland 5.5.1 drops constness in enough ways that we
-// end up using a proxy for operator[] when we otherwise shouldn't.
-// Using reference constness gives it an extra hint that it can
-// return the value_type from operator[] directly, but is not
-// strictly necessary. Not sure how best to resolve this one.
-
-# define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1
-
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x5A0)) \
- || (BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 700) && defined(_MSC_VER)) \
- || BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) \
- || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
-
-# define BOOST_NO_LVALUE_RETURN_DETECTION
-
-# if 0 // test code
- struct v {};
-
- typedef char (&no)[3];
-
- template <class T>
- no foo(T const&, ...);
-
- template <class T>
- char foo(T&, int);
-
-
- struct value_iterator
- {
- v operator*() const;
- };
-
- template <class T>
- struct lvalue_deref_helper
- {
- static T& x;
- enum { value = (sizeof(foo(*x,0)) == 1) };
- };
-
- int z2[(lvalue_deref_helper<v*>::value == 1) ? 1 : -1];
- int z[(lvalue_deref_helper<value_iterator>::value) == 1 ? -1 : 1 ];
-# endif
-
-#endif
-
-#if BOOST_WORKAROUND(__MWERKS__, <=0x2407)
-# define BOOST_NO_IS_CONVERTIBLE // "is_convertible doesn't work for simple types"
-#endif
-
-#if BOOST_WORKAROUND(__GNUC__, == 2) \
- || BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4) && !defined(__EDG_VERSION__) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
-# define BOOST_NO_IS_CONVERTIBLE_TEMPLATE // The following program fails to compile:
-
-# if 0 // test code
- #include <cutl/details/boost/type_traits/is_convertible.hpp>
- template <class T>
- struct foo
- {
- foo(T);
-
- template <class U>
- foo(foo<U> const& other) : p(other.p) { }
-
- T p;
- };
-
- bool x = cutl_details_boost::is_convertible<foo<int const*>, foo<int*> >::value;
-# endif
-
-#endif
-
-
-#if !defined(BOOST_MSVC) && (defined(BOOST_NO_SFINAE) || defined(BOOST_NO_IS_CONVERTIBLE) || defined(BOOST_NO_IS_CONVERTIBLE_TEMPLATE))
-# define BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
-#endif
-
-# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-# define BOOST_ARG_DEPENDENT_TYPENAME typename
-# else
-# define BOOST_ARG_DEPENDENT_TYPENAME
-# endif
-
-# if BOOST_WORKAROUND(__GNUC__, == 2) && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(95)) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
-
-// GCC-2.95 eagerly instantiates templated constructors and conversion
-// operators in convertibility checks, causing premature errors.
-//
-// Borland's problems are harder to diagnose due to lack of an
-// instantiation stack backtrace. They may be due in part to the fact
-// that it drops cv-qualification willy-nilly in templates.
-# define BOOST_NO_ONE_WAY_ITERATOR_INTEROP
-# endif
-
-// no include guard; multiple inclusion intended
diff --git a/libcutl/cutl/details/boost/iterator/detail/config_undef.hpp b/libcutl/cutl/details/boost/iterator/detail/config_undef.hpp
deleted file mode 100644
index 9dcd1d5..0000000
--- a/libcutl/cutl/details/boost/iterator/detail/config_undef.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// (C) Copyright Thomas Witt 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// no include guard multiple inclusion intended
-
-//
-// This is a temporary workaround until the bulk of this is
-// available in boost config.
-// 23/02/03 thw
-//
-
-#undef BOOST_NO_IS_CONVERTIBLE
-#undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE
-#undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
-#undef BOOST_ARG_DEPENDENT_TYPENAME
-#undef BOOST_NO_LVALUE_RETURN_DETECTION
-#undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
-
-#ifdef BOOST_ITERATOR_CONFIG_DEF
-# undef BOOST_ITERATOR_CONFIG_DEF
-#else
-# error missing or nested #include config_def
-#endif
diff --git a/libcutl/cutl/details/boost/iterator/detail/enable_if.hpp b/libcutl/cutl/details/boost/iterator/detail/enable_if.hpp
deleted file mode 100644
index 23f67ef..0000000
--- a/libcutl/cutl/details/boost/iterator/detail/enable_if.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Jeremy Siek 2002.
-// (C) Copyright Thomas Witt 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_ENABLE_IF_23022003THW_HPP
-#define BOOST_ENABLE_IF_23022003THW_HPP
-
-#include <cutl/details/boost/detail/workaround.hpp>
-#include <cutl/details/boost/mpl/identity.hpp>
-
-#include <cutl/details/boost/iterator/detail/config_def.hpp>
-
-//
-// Boost iterators uses its own enable_if cause we need
-// special semantics for deficient compilers.
-// 23/02/03 thw
-//
-
-namespace cutl_details_boost
-{
-
- namespace iterators
- {
- //
- // Base machinery for all kinds of enable if
- //
- template<bool>
- struct enabled
- {
- template<typename T>
- struct base
- {
- typedef T type;
- };
- };
-
- //
- // For compilers that don't support "Substitution Failure Is Not An Error"
- // enable_if falls back to always enabled. See comments
- // on operator implementation for consequences.
- //
- template<>
- struct enabled<false>
- {
- template<typename T>
- struct base
- {
-#ifdef BOOST_NO_SFINAE
-
- typedef T type;
-
- // This way to do it would give a nice error message containing
- // invalid overload, but has the big disadvantage that
- // there is no reference to user code in the error message.
- //
- // struct invalid_overload;
- // typedef invalid_overload type;
- //
-#endif
- };
- };
-
-
- template <class Cond,
- class Return>
- struct enable_if
-# if !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_IS_CONVERTIBLE)
- : enabled<(Cond::value)>::template base<Return>
-# else
- : mpl::identity<Return>
-# endif
- {
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- typedef Return type;
-# endif
- };
-
- } // namespace iterators
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/iterator/detail/config_undef.hpp>
-
-#endif // BOOST_ENABLE_IF_23022003THW_HPP
diff --git a/libcutl/cutl/details/boost/iterator/detail/facade_iterator_category.hpp b/libcutl/cutl/details/boost/iterator/detail/facade_iterator_category.hpp
deleted file mode 100644
index 6bdd37a..0000000
--- a/libcutl/cutl/details/boost/iterator/detail/facade_iterator_category.hpp
+++ /dev/null
@@ -1,200 +0,0 @@
-// Copyright David Abrahams 2003. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#ifndef FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
-# define FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
-
-# include <cutl/details/boost/iterator/iterator_categories.hpp>
-
-# include <cutl/details/boost/mpl/or.hpp> // used in iterator_tag inheritance logic
-# include <cutl/details/boost/mpl/and.hpp>
-# include <cutl/details/boost/mpl/if.hpp>
-# include <cutl/details/boost/mpl/eval_if.hpp>
-# include <cutl/details/boost/mpl/identity.hpp>
-# include <cutl/details/boost/mpl/assert.hpp>
-
-# include <cutl/details/boost/type_traits/is_same.hpp>
-# include <cutl/details/boost/type_traits/is_const.hpp>
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_convertible.hpp>
-
-# include <cutl/details/boost/type_traits/is_same.hpp>
-
-# include <cutl/details/boost/iterator/detail/config_def.hpp> // try to keep this last
-
-# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
-# include <cutl/details/boost/detail/indirect_traits.hpp>
-# endif
-
-//
-// iterator_category deduction for iterator_facade
-//
-
-// forward declaration
-namespace cutl_details_boost { struct use_default; }
-
-namespace cutl_details_boost { namespace detail {
-
-struct input_output_iterator_tag
- : std::input_iterator_tag
-{
- // Using inheritance for only input_iterator_tag helps to avoid
- // ambiguities when a stdlib implementation dispatches on a
- // function which is overloaded on both input_iterator_tag and
- // output_iterator_tag, as STLPort does, in its __valid_range
- // function. I claim it's better to avoid the ambiguity in these
- // cases.
- operator std::output_iterator_tag() const
- {
- return std::output_iterator_tag();
- }
-};
-
-//
-// True iff the user has explicitly disabled writability of this
-// iterator. Pass the iterator_facade's Value parameter and its
-// nested ::reference type.
-//
-template <class ValueParam, class Reference>
-struct iterator_writability_disabled
-# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY // Adding Thomas' logic?
- : mpl::or_<
- is_const<Reference>
- , cutl_details_boost::detail::indirect_traits::is_reference_to_const<Reference>
- , is_const<ValueParam>
- >
-# else
- : is_const<ValueParam>
-# endif
-{};
-
-
-//
-// Convert an iterator_facade's traversal category, Value parameter,
-// and ::reference type to an appropriate old-style category.
-//
-// If writability has been disabled per the above metafunction, the
-// result will not be convertible to output_iterator_tag.
-//
-// Otherwise, if Traversal == single_pass_traversal_tag, the following
-// conditions will result in a tag that is convertible both to
-// input_iterator_tag and output_iterator_tag:
-//
-// 1. Reference is a reference to non-const
-// 2. Reference is not a reference and is convertible to Value
-//
-template <class Traversal, class ValueParam, class Reference>
-struct iterator_facade_default_category
- : mpl::eval_if<
- mpl::and_<
- is_reference<Reference>
- , is_convertible<Traversal,forward_traversal_tag>
- >
- , mpl::eval_if<
- is_convertible<Traversal,random_access_traversal_tag>
- , mpl::identity<std::random_access_iterator_tag>
- , mpl::if_<
- is_convertible<Traversal,bidirectional_traversal_tag>
- , std::bidirectional_iterator_tag
- , std::forward_iterator_tag
- >
- >
- , typename mpl::eval_if<
- mpl::and_<
- is_convertible<Traversal, single_pass_traversal_tag>
-
- // check for readability
- , is_convertible<Reference, ValueParam>
- >
- , mpl::identity<std::input_iterator_tag>
- , mpl::identity<Traversal>
- >
- >
-{
-};
-
-// True iff T is convertible to an old-style iterator category.
-template <class T>
-struct is_iterator_category
- : mpl::or_<
- is_convertible<T,std::input_iterator_tag>
- , is_convertible<T,std::output_iterator_tag>
- >
-{
-};
-
-template <class T>
-struct is_iterator_traversal
- : is_convertible<T,incrementable_traversal_tag>
-{};
-
-//
-// A composite iterator_category tag convertible to Category (a pure
-// old-style category) and Traversal (a pure traversal tag).
-// Traversal must be a strict increase of the traversal power given by
-// Category.
-//
-template <class Category, class Traversal>
-struct iterator_category_with_traversal
- : Category, Traversal
-{
-# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
- // Make sure this isn't used to build any categories where
- // convertibility to Traversal is redundant. Should just use the
- // Category element in that case.
- BOOST_MPL_ASSERT_NOT((
- is_convertible<
- typename iterator_category_to_traversal<Category>::type
- , Traversal
- >));
-
- BOOST_MPL_ASSERT((is_iterator_category<Category>));
- BOOST_MPL_ASSERT_NOT((is_iterator_category<Traversal>));
- BOOST_MPL_ASSERT_NOT((is_iterator_traversal<Category>));
-# if !BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
- BOOST_MPL_ASSERT((is_iterator_traversal<Traversal>));
-# endif
-# endif
-};
-
-// Computes an iterator_category tag whose traversal is Traversal and
-// which is appropriate for an iterator
-template <class Traversal, class ValueParam, class Reference>
-struct facade_iterator_category_impl
-{
-# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
- BOOST_MPL_ASSERT_NOT((is_iterator_category<Traversal>));
-# endif
-
- typedef typename iterator_facade_default_category<
- Traversal,ValueParam,Reference
- >::type category;
-
- typedef typename mpl::if_<
- is_same<
- Traversal
- , typename iterator_category_to_traversal<category>::type
- >
- , category
- , iterator_category_with_traversal<category,Traversal>
- >::type type;
-};
-
-//
-// Compute an iterator_category for iterator_facade
-//
-template <class CategoryOrTraversal, class ValueParam, class Reference>
-struct facade_iterator_category
- : mpl::eval_if<
- is_iterator_category<CategoryOrTraversal>
- , mpl::identity<CategoryOrTraversal> // old-style categories are fine as-is
- , facade_iterator_category_impl<CategoryOrTraversal,ValueParam,Reference>
- >
-{
-};
-
-}} // namespace cutl_details_boost::detail
-
-# include <cutl/details/boost/iterator/detail/config_undef.hpp>
-
-#endif // FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
diff --git a/libcutl/cutl/details/boost/iterator/interoperable.hpp b/libcutl/cutl/details/boost/iterator/interoperable.hpp
deleted file mode 100644
index 1e76e21..0000000
--- a/libcutl/cutl/details/boost/iterator/interoperable.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Jeremy Siek 2002.
-// (C) Copyright Thomas Witt 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_INTEROPERABLE_23022003THW_HPP
-# define BOOST_INTEROPERABLE_23022003THW_HPP
-
-# include <cutl/details/boost/mpl/bool.hpp>
-# include <cutl/details/boost/mpl/or.hpp>
-
-# include <cutl/details/boost/type_traits/is_convertible.hpp>
-
-# include <cutl/details/boost/iterator/detail/config_def.hpp> // must appear last
-
-namespace cutl_details_boost
-{
-
- //
- // Meta function that determines whether two
- // iterator types are considered interoperable.
- //
- // Two iterator types A,B are considered interoperable if either
- // A is convertible to B or vice versa.
- // This interoperability definition is in sync with the
- // standards requirements on constant/mutable container
- // iterators (23.1 [lib.container.requirements]).
- //
- // For compilers that don't support is_convertible
- // is_interoperable gives false positives. See comments
- // on operator implementation for consequences.
- //
- template <typename A, typename B>
- struct is_interoperable
-# ifdef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
- : mpl::true_
-# else
- : mpl::or_<
- is_convertible< A, B >
- , is_convertible< B, A > >
-# endif
- {
- };
-
-} // namespace cutl_details_boost
-
-# include <cutl/details/boost/iterator/detail/config_undef.hpp>
-
-#endif // BOOST_INTEROPERABLE_23022003THW_HPP
diff --git a/libcutl/cutl/details/boost/iterator/iterator_categories.hpp b/libcutl/cutl/details/boost/iterator/iterator_categories.hpp
deleted file mode 100644
index cf22031..0000000
--- a/libcutl/cutl/details/boost/iterator/iterator_categories.hpp
+++ /dev/null
@@ -1,188 +0,0 @@
-// (C) Copyright Jeremy Siek 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_ITERATOR_CATEGORIES_HPP
-# define BOOST_ITERATOR_CATEGORIES_HPP
-
-# include <cutl/details/boost/config.hpp>
-# include <cutl/details/boost/detail/iterator.hpp>
-# include <cutl/details/boost/iterator/detail/config_def.hpp>
-
-# include <cutl/details/boost/detail/workaround.hpp>
-
-# include <cutl/details/boost/mpl/eval_if.hpp>
-# include <cutl/details/boost/mpl/identity.hpp>
-# include <cutl/details/boost/mpl/placeholders.hpp>
-# include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-
-# include <cutl/details/boost/type_traits/is_convertible.hpp>
-
-# include <cutl/details/boost/static_assert.hpp>
-
-namespace cutl_details_boost {
-
-//
-// Traversal Categories
-//
-
-struct no_traversal_tag {};
-
-struct incrementable_traversal_tag
- : no_traversal_tag
-{
-// incrementable_traversal_tag() {}
-// incrementable_traversal_tag(std::output_iterator_tag const&) {};
-};
-
-struct single_pass_traversal_tag
- : incrementable_traversal_tag
-{
-// single_pass_traversal_tag() {}
-// single_pass_traversal_tag(std::input_iterator_tag const&) {};
-};
-
-struct forward_traversal_tag
- : single_pass_traversal_tag
-{
-// forward_traversal_tag() {}
-// forward_traversal_tag(std::forward_iterator_tag const&) {};
-};
-
-struct bidirectional_traversal_tag
- : forward_traversal_tag
-{
-// bidirectional_traversal_tag() {};
-// bidirectional_traversal_tag(std::bidirectional_iterator_tag const&) {};
-};
-
-struct random_access_traversal_tag
- : bidirectional_traversal_tag
-{
-// random_access_traversal_tag() {};
-// random_access_traversal_tag(std::random_access_iterator_tag const&) {};
-};
-
-namespace detail
-{
- //
- // Convert a "strictly old-style" iterator category to a traversal
- // tag. This is broken out into a separate metafunction to reduce
- // the cost of instantiating iterator_category_to_traversal, below,
- // for new-style types.
- //
- template <class Cat>
- struct old_category_to_traversal
- : mpl::eval_if<
- is_convertible<Cat,std::random_access_iterator_tag>
- , mpl::identity<random_access_traversal_tag>
- , mpl::eval_if<
- is_convertible<Cat,std::bidirectional_iterator_tag>
- , mpl::identity<bidirectional_traversal_tag>
- , mpl::eval_if<
- is_convertible<Cat,std::forward_iterator_tag>
- , mpl::identity<forward_traversal_tag>
- , mpl::eval_if<
- is_convertible<Cat,std::input_iterator_tag>
- , mpl::identity<single_pass_traversal_tag>
- , mpl::eval_if<
- is_convertible<Cat,std::output_iterator_tag>
- , mpl::identity<incrementable_traversal_tag>
- , void
- >
- >
- >
- >
- >
- {};
-
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- template <>
- struct old_category_to_traversal<int>
- {
- typedef int type;
- };
-# endif
-
- template <class Traversal>
- struct pure_traversal_tag
- : mpl::eval_if<
- is_convertible<Traversal,random_access_traversal_tag>
- , mpl::identity<random_access_traversal_tag>
- , mpl::eval_if<
- is_convertible<Traversal,bidirectional_traversal_tag>
- , mpl::identity<bidirectional_traversal_tag>
- , mpl::eval_if<
- is_convertible<Traversal,forward_traversal_tag>
- , mpl::identity<forward_traversal_tag>
- , mpl::eval_if<
- is_convertible<Traversal,single_pass_traversal_tag>
- , mpl::identity<single_pass_traversal_tag>
- , mpl::eval_if<
- is_convertible<Traversal,incrementable_traversal_tag>
- , mpl::identity<incrementable_traversal_tag>
- , void
- >
- >
- >
- >
- >
- {
- };
-
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- template <>
- struct pure_traversal_tag<int>
- {
- typedef int type;
- };
-# endif
-
-} // namespace detail
-
-
-//
-// Convert an iterator category into a traversal tag
-//
-template <class Cat>
-struct iterator_category_to_traversal
- : mpl::eval_if< // if already convertible to a traversal tag, we're done.
- is_convertible<Cat,incrementable_traversal_tag>
- , mpl::identity<Cat>
- , cutl_details_boost::detail::old_category_to_traversal<Cat>
- >
-{};
-
-// Trait to get an iterator's traversal category
-template <class Iterator = mpl::_1>
-struct iterator_traversal
- : iterator_category_to_traversal<
- typename cutl_details_boost::detail::iterator_traits<Iterator>::iterator_category
- >
-{};
-
-# ifdef BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
-// Hack because BOOST_MPL_AUX_LAMBDA_SUPPORT doesn't seem to work
-// out well. Instantiating the nested apply template also
-// requires instantiating iterator_traits on the
-// placeholder. Instead we just specialize it as a metafunction
-// class.
-template <>
-struct iterator_traversal<mpl::_1>
-{
- template <class T>
- struct apply : iterator_traversal<T>
- {};
-};
-template <>
-struct iterator_traversal<mpl::_>
- : iterator_traversal<mpl::_1>
-{};
-# endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/iterator/detail/config_undef.hpp>
-
-#endif // BOOST_ITERATOR_CATEGORIES_HPP
diff --git a/libcutl/cutl/details/boost/iterator/iterator_facade.hpp b/libcutl/cutl/details/boost/iterator/iterator_facade.hpp
deleted file mode 100644
index 63858b5..0000000
--- a/libcutl/cutl/details/boost/iterator/iterator_facade.hpp
+++ /dev/null
@@ -1,874 +0,0 @@
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Jeremy Siek 2002.
-// (C) Copyright Thomas Witt 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_ITERATOR_FACADE_23022003THW_HPP
-#define BOOST_ITERATOR_FACADE_23022003THW_HPP
-
-#include <cutl/details/boost/iterator.hpp>
-#include <cutl/details/boost/iterator/interoperable.hpp>
-#include <cutl/details/boost/iterator/iterator_traits.hpp>
-
-#include <cutl/details/boost/iterator/detail/facade_iterator_category.hpp>
-#include <cutl/details/boost/iterator/detail/enable_if.hpp>
-
-#include <cutl/details/boost/static_assert.hpp>
-#include <cutl/details/boost/utility/addressof.hpp>
-
-#include <cutl/details/boost/type_traits/is_same.hpp>
-#include <cutl/details/boost/type_traits/add_const.hpp>
-#include <cutl/details/boost/type_traits/add_pointer.hpp>
-#include <cutl/details/boost/type_traits/remove_const.hpp>
-#include <cutl/details/boost/type_traits/remove_reference.hpp>
-#include <cutl/details/boost/type_traits/is_convertible.hpp>
-#include <cutl/details/boost/type_traits/is_pod.hpp>
-
-#include <cutl/details/boost/mpl/eval_if.hpp>
-#include <cutl/details/boost/mpl/if.hpp>
-#include <cutl/details/boost/mpl/or.hpp>
-#include <cutl/details/boost/mpl/and.hpp>
-#include <cutl/details/boost/mpl/not.hpp>
-#include <cutl/details/boost/mpl/always.hpp>
-#include <cutl/details/boost/mpl/apply.hpp>
-#include <cutl/details/boost/mpl/identity.hpp>
-
-#include <cutl/details/boost/iterator/detail/config_def.hpp> // this goes last
-
-namespace cutl_details_boost
-{
- // This forward declaration is required for the friend declaration
- // in iterator_core_access
- template <class I, class V, class TC, class R, class D> class iterator_facade;
-
- namespace detail
- {
- // A binary metafunction class that always returns bool. VC6
- // ICEs on mpl::always<bool>, probably because of the default
- // parameters.
- struct always_bool2
- {
- template <class T, class U>
- struct apply
- {
- typedef bool type;
- };
- };
-
- //
- // enable if for use in operator implementation.
- //
- template <
- class Facade1
- , class Facade2
- , class Return
- >
- struct enable_if_interoperable
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
- {
- typedef typename mpl::if_<
- mpl::or_<
- is_convertible<Facade1, Facade2>
- , is_convertible<Facade2, Facade1>
- >
- , Return
- , int[3]
- >::type type;
- };
-#else
- : ::cutl_details_boost::iterators::enable_if<
- mpl::or_<
- is_convertible<Facade1, Facade2>
- , is_convertible<Facade2, Facade1>
- >
- , Return
- >
- {};
-#endif
-
- //
- // Generates associated types for an iterator_facade with the
- // given parameters.
- //
- template <
- class ValueParam
- , class CategoryOrTraversal
- , class Reference
- , class Difference
- >
- struct iterator_facade_types
- {
- typedef typename facade_iterator_category<
- CategoryOrTraversal, ValueParam, Reference
- >::type iterator_category;
-
- typedef typename remove_const<ValueParam>::type value_type;
-
- // Not the real associated pointer type
- typedef typename mpl::eval_if<
- cutl_details_boost::detail::iterator_writability_disabled<ValueParam,Reference>
- , add_pointer<const value_type>
- , add_pointer<value_type>
- >::type pointer;
-
-# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && (BOOST_WORKAROUND(_STLPORT_VERSION, BOOST_TESTED_AT(0x452)) \
- || BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, BOOST_TESTED_AT(310))) \
- || BOOST_WORKAROUND(BOOST_RWSTD_VER, BOOST_TESTED_AT(0x20101)) \
- || BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, <= 310)
-
- // To interoperate with some broken library/compiler
- // combinations, user-defined iterators must be derived from
- // std::iterator. It is possible to implement a standard
- // library for broken compilers without this limitation.
-# define BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE 1
-
- typedef
- iterator<iterator_category, value_type, Difference, pointer, Reference>
- base;
-# endif
- };
-
- // iterators whose dereference operators reference the same value
- // for all iterators into the same sequence (like many input
- // iterators) need help with their postfix ++: the referenced
- // value must be read and stored away before the increment occurs
- // so that *a++ yields the originally referenced element and not
- // the next one.
- template <class Iterator>
- class postfix_increment_proxy
- {
- typedef typename iterator_value<Iterator>::type value_type;
- public:
- explicit postfix_increment_proxy(Iterator const& x)
- : stored_value(*x)
- {}
-
- // Returning a mutable reference allows nonsense like
- // (*r++).mutate(), but it imposes fewer assumptions about the
- // behavior of the value_type. In particular, recall that
- // (*r).mutate() is legal if operator* returns by value.
- value_type&
- operator*() const
- {
- return this->stored_value;
- }
- private:
- mutable value_type stored_value;
- };
-
- //
- // In general, we can't determine that such an iterator isn't
- // writable -- we also need to store a copy of the old iterator so
- // that it can be written into.
- template <class Iterator>
- class writable_postfix_increment_proxy
- {
- typedef typename iterator_value<Iterator>::type value_type;
- public:
- explicit writable_postfix_increment_proxy(Iterator const& x)
- : stored_value(*x)
- , stored_iterator(x)
- {}
-
- // Dereferencing must return a proxy so that both *r++ = o and
- // value_type(*r++) can work. In this case, *r is the same as
- // *r++, and the conversion operator below is used to ensure
- // readability.
- writable_postfix_increment_proxy const&
- operator*() const
- {
- return *this;
- }
-
- // Provides readability of *r++
- operator value_type&() const
- {
- return stored_value;
- }
-
- // Provides writability of *r++
- template <class T>
- T const& operator=(T const& x) const
- {
- *this->stored_iterator = x;
- return x;
- }
-
- // This overload just in case only non-const objects are writable
- template <class T>
- T& operator=(T& x) const
- {
- *this->stored_iterator = x;
- return x;
- }
-
- // Provides X(r++)
- operator Iterator const&() const
- {
- return stored_iterator;
- }
-
- private:
- mutable value_type stored_value;
- Iterator stored_iterator;
- };
-
-# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
- template <class Reference, class Value>
- struct is_non_proxy_reference_impl
- {
- static Reference r;
-
- template <class R>
- static typename mpl::if_<
- is_convertible<
- R const volatile*
- , Value const volatile*
- >
- , char[1]
- , char[2]
- >::type& helper(R const&);
-
- BOOST_STATIC_CONSTANT(bool, value = sizeof(helper(r)) == 1);
- };
-
- template <class Reference, class Value>
- struct is_non_proxy_reference
- : mpl::bool_<
- is_non_proxy_reference_impl<Reference, Value>::value
- >
- {};
-# else
- template <class Reference, class Value>
- struct is_non_proxy_reference
- : is_convertible<
- typename remove_reference<Reference>::type
- const volatile*
- , Value const volatile*
- >
- {};
-# endif
-
- // A metafunction to choose the result type of postfix ++
- //
- // Because the C++98 input iterator requirements say that *r++ has
- // type T (value_type), implementations of some standard
- // algorithms like lexicographical_compare may use constructions
- // like:
- //
- // *r++ < *s++
- //
- // If *r++ returns a proxy (as required if r is writable but not
- // multipass), this sort of expression will fail unless the proxy
- // supports the operator<. Since there are any number of such
- // operations, we're not going to try to support them. Therefore,
- // even if r++ returns a proxy, *r++ will only return a proxy if
- // *r also returns a proxy.
- template <class Iterator, class Value, class Reference, class CategoryOrTraversal>
- struct postfix_increment_result
- : mpl::eval_if<
- mpl::and_<
- // A proxy is only needed for readable iterators
- is_convertible<Reference,Value const&>
-
- // No multipass iterator can have values that disappear
- // before positions can be re-visited
- , mpl::not_<
- is_convertible<
- typename iterator_category_to_traversal<CategoryOrTraversal>::type
- , forward_traversal_tag
- >
- >
- >
- , mpl::if_<
- is_non_proxy_reference<Reference,Value>
- , postfix_increment_proxy<Iterator>
- , writable_postfix_increment_proxy<Iterator>
- >
- , mpl::identity<Iterator>
- >
- {};
-
- // operator->() needs special support for input iterators to strictly meet the
- // standard's requirements. If *i is not a reference type, we must still
- // produce an lvalue to which a pointer can be formed. We do that by
- // returning a proxy object containing an instance of the reference object.
- template <class Reference, class Pointer>
- struct operator_arrow_dispatch // proxy references
- {
- struct proxy
- {
- explicit proxy(Reference const & x) : m_ref(x) {}
- Reference* operator->() { return cutl_details_boost::addressof(m_ref); }
- // This function is needed for MWCW and BCC, which won't call
- // operator-> again automatically per 13.3.1.2 para 8
- operator Reference*() { return cutl_details_boost::addressof(m_ref); }
- Reference m_ref;
- };
- typedef proxy result_type;
- static result_type apply(Reference const & x)
- {
- return result_type(x);
- }
- };
-
- template <class T, class Pointer>
- struct operator_arrow_dispatch<T&, Pointer> // "real" references
- {
- typedef Pointer result_type;
- static result_type apply(T& x)
- {
- return cutl_details_boost::addressof(x);
- }
- };
-
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- // Deal with ETI
- template<>
- struct operator_arrow_dispatch<int, int>
- {
- typedef int result_type;
- };
-# endif
-
- // A proxy return type for operator[], needed to deal with
- // iterators that may invalidate referents upon destruction.
- // Consider the temporary iterator in *(a + n)
- template <class Iterator>
- class operator_brackets_proxy
- {
- // Iterator is actually an iterator_facade, so we do not have to
- // go through iterator_traits to access the traits.
- typedef typename Iterator::reference reference;
- typedef typename Iterator::value_type value_type;
-
- public:
- operator_brackets_proxy(Iterator const& iter)
- : m_iter(iter)
- {}
-
- operator reference() const
- {
- return *m_iter;
- }
-
- operator_brackets_proxy& operator=(value_type const& val)
- {
- *m_iter = val;
- return *this;
- }
-
- private:
- Iterator m_iter;
- };
-
- // A metafunction that determines whether operator[] must return a
- // proxy, or whether it can simply return a copy of the value_type.
- template <class ValueType, class Reference>
- struct use_operator_brackets_proxy
- : mpl::not_<
- mpl::and_<
- // Really we want an is_copy_constructible trait here,
- // but is_POD will have to suffice in the meantime.
- cutl_details_boost::is_POD<ValueType>
- , iterator_writability_disabled<ValueType,Reference>
- >
- >
- {};
-
- template <class Iterator, class Value, class Reference>
- struct operator_brackets_result
- {
- typedef typename mpl::if_<
- use_operator_brackets_proxy<Value,Reference>
- , operator_brackets_proxy<Iterator>
- , Value
- >::type type;
- };
-
- template <class Iterator>
- operator_brackets_proxy<Iterator> make_operator_brackets_result(Iterator const& iter, mpl::true_)
- {
- return operator_brackets_proxy<Iterator>(iter);
- }
-
- template <class Iterator>
- typename Iterator::value_type make_operator_brackets_result(Iterator const& iter, mpl::false_)
- {
- return *iter;
- }
-
- struct choose_difference_type
- {
- template <class I1, class I2>
- struct apply
- :
-# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
- iterator_difference<I1>
-# elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- mpl::if_<
- is_convertible<I2,I1>
- , typename I1::difference_type
- , typename I2::difference_type
- >
-# else
- mpl::eval_if<
- is_convertible<I2,I1>
- , iterator_difference<I1>
- , iterator_difference<I2>
- >
-# endif
- {};
-
- };
- } // namespace detail
-
-
- // Macros which describe the declarations of binary operators
-# ifdef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
-# define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type) \
- template < \
- class Derived1, class V1, class TC1, class Reference1, class Difference1 \
- , class Derived2, class V2, class TC2, class Reference2, class Difference2 \
- > \
- prefix typename mpl::apply2<result_type,Derived1,Derived2>::type \
- operator op( \
- iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs \
- , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs)
-# else
-# define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type) \
- template < \
- class Derived1, class V1, class TC1, class Reference1, class Difference1 \
- , class Derived2, class V2, class TC2, class Reference2, class Difference2 \
- > \
- prefix typename cutl_details_boost::detail::enable_if_interoperable< \
- Derived1, Derived2 \
- , typename mpl::apply2<result_type,Derived1,Derived2>::type \
- >::type \
- operator op( \
- iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs \
- , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs)
-# endif
-
-# define BOOST_ITERATOR_FACADE_PLUS_HEAD(prefix,args) \
- template <class Derived, class V, class TC, class R, class D> \
- prefix Derived operator+ args
-
- //
- // Helper class for granting access to the iterator core interface.
- //
- // The simple core interface is used by iterator_facade. The core
- // interface of a user/library defined iterator type should not be made public
- // so that it does not clutter the public interface. Instead iterator_core_access
- // should be made friend so that iterator_facade can access the core
- // interface through iterator_core_access.
- //
- class iterator_core_access
- {
-# if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
- // Tasteless as this may seem, making all members public allows member templates
- // to work in the absence of member template friends.
- public:
-# else
-
- template <class I, class V, class TC, class R, class D> friend class iterator_facade;
-
-# define BOOST_ITERATOR_FACADE_RELATION(op) \
- BOOST_ITERATOR_FACADE_INTEROP_HEAD(friend,op, cutl_details_boost::detail::always_bool2);
-
- BOOST_ITERATOR_FACADE_RELATION(==)
- BOOST_ITERATOR_FACADE_RELATION(!=)
-
- BOOST_ITERATOR_FACADE_RELATION(<)
- BOOST_ITERATOR_FACADE_RELATION(>)
- BOOST_ITERATOR_FACADE_RELATION(<=)
- BOOST_ITERATOR_FACADE_RELATION(>=)
-# undef BOOST_ITERATOR_FACADE_RELATION
-
- BOOST_ITERATOR_FACADE_INTEROP_HEAD(
- friend, -, cutl_details_boost::detail::choose_difference_type)
- ;
-
- BOOST_ITERATOR_FACADE_PLUS_HEAD(
- friend inline
- , (iterator_facade<Derived, V, TC, R, D> const&
- , typename Derived::difference_type)
- )
- ;
-
- BOOST_ITERATOR_FACADE_PLUS_HEAD(
- friend inline
- , (typename Derived::difference_type
- , iterator_facade<Derived, V, TC, R, D> const&)
- )
- ;
-
-# endif
-
- template <class Facade>
- static typename Facade::reference dereference(Facade const& f)
- {
- return f.dereference();
- }
-
- template <class Facade>
- static void increment(Facade& f)
- {
- f.increment();
- }
-
- template <class Facade>
- static void decrement(Facade& f)
- {
- f.decrement();
- }
-
- template <class Facade1, class Facade2>
- static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::true_)
- {
- return f1.equal(f2);
- }
-
- template <class Facade1, class Facade2>
- static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::false_)
- {
- return f2.equal(f1);
- }
-
- template <class Facade>
- static void advance(Facade& f, typename Facade::difference_type n)
- {
- f.advance(n);
- }
-
- template <class Facade1, class Facade2>
- static typename Facade1::difference_type distance_from(
- Facade1 const& f1, Facade2 const& f2, mpl::true_)
- {
- return -f1.distance_to(f2);
- }
-
- template <class Facade1, class Facade2>
- static typename Facade2::difference_type distance_from(
- Facade1 const& f1, Facade2 const& f2, mpl::false_)
- {
- return f2.distance_to(f1);
- }
-
- //
- // Curiously Recurring Template interface.
- //
- template <class I, class V, class TC, class R, class D>
- static I& derived(iterator_facade<I,V,TC,R,D>& facade)
- {
- return *static_cast<I*>(&facade);
- }
-
- template <class I, class V, class TC, class R, class D>
- static I const& derived(iterator_facade<I,V,TC,R,D> const& facade)
- {
- return *static_cast<I const*>(&facade);
- }
-
- private:
- // objects of this class are useless
- iterator_core_access(); //undefined
- };
-
- //
- // iterator_facade - use as a public base class for defining new
- // standard-conforming iterators.
- //
- template <
- class Derived // The derived iterator type being constructed
- , class Value
- , class CategoryOrTraversal
- , class Reference = Value&
- , class Difference = std::ptrdiff_t
- >
- class iterator_facade
-# ifdef BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE
- : public cutl_details_boost::detail::iterator_facade_types<
- Value, CategoryOrTraversal, Reference, Difference
- >::base
-# undef BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE
-# endif
- {
- private:
- //
- // Curiously Recurring Template interface.
- //
- Derived& derived()
- {
- return *static_cast<Derived*>(this);
- }
-
- Derived const& derived() const
- {
- return *static_cast<Derived const*>(this);
- }
-
- typedef cutl_details_boost::detail::iterator_facade_types<
- Value, CategoryOrTraversal, Reference, Difference
- > associated_types;
-
- typedef cutl_details_boost::detail::operator_arrow_dispatch<
- Reference
- , typename associated_types::pointer
- > operator_arrow_dispatch_;
-
- protected:
- // For use by derived classes
- typedef iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Difference> iterator_facade_;
-
- public:
-
- typedef typename associated_types::value_type value_type;
- typedef Reference reference;
- typedef Difference difference_type;
-
- typedef typename operator_arrow_dispatch_::result_type pointer;
-
- typedef typename associated_types::iterator_category iterator_category;
-
- reference operator*() const
- {
- return iterator_core_access::dereference(this->derived());
- }
-
- pointer operator->() const
- {
- return operator_arrow_dispatch_::apply(*this->derived());
- }
-
- typename cutl_details_boost::detail::operator_brackets_result<Derived,Value,reference>::type
- operator[](difference_type n) const
- {
- typedef cutl_details_boost::detail::use_operator_brackets_proxy<Value,Reference> use_proxy;
-
- return cutl_details_boost::detail::make_operator_brackets_result<Derived>(
- this->derived() + n
- , use_proxy()
- );
- }
-
- Derived& operator++()
- {
- iterator_core_access::increment(this->derived());
- return this->derived();
- }
-
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- typename cutl_details_boost::detail::postfix_increment_result<Derived,Value,Reference,CategoryOrTraversal>::type
- operator++(int)
- {
- typename cutl_details_boost::detail::postfix_increment_result<Derived,Value,Reference,CategoryOrTraversal>::type
- tmp(this->derived());
- ++*this;
- return tmp;
- }
-# endif
-
- Derived& operator--()
- {
- iterator_core_access::decrement(this->derived());
- return this->derived();
- }
-
- Derived operator--(int)
- {
- Derived tmp(this->derived());
- --*this;
- return tmp;
- }
-
- Derived& operator+=(difference_type n)
- {
- iterator_core_access::advance(this->derived(), n);
- return this->derived();
- }
-
- Derived& operator-=(difference_type n)
- {
- iterator_core_access::advance(this->derived(), -n);
- return this->derived();
- }
-
- Derived operator-(difference_type x) const
- {
- Derived result(this->derived());
- return result -= x;
- }
-
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- // There appears to be a bug which trashes the data of classes
- // derived from iterator_facade when they are assigned unless we
- // define this assignment operator. This bug is only revealed
- // (so far) in STLPort debug mode, but it's clearly a codegen
- // problem so we apply the workaround for all MSVC6.
- iterator_facade& operator=(iterator_facade const&)
- {
- return *this;
- }
-# endif
- };
-
-# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- template <class I, class V, class TC, class R, class D>
- inline typename cutl_details_boost::detail::postfix_increment_result<I,V,R,TC>::type
- operator++(
- iterator_facade<I,V,TC,R,D>& i
- , int
- )
- {
- typename cutl_details_boost::detail::postfix_increment_result<I,V,R,TC>::type
- tmp(*static_cast<I*>(&i));
-
- ++i;
-
- return tmp;
- }
-# endif
-
-
- //
- // Comparison operator implementation. The library supplied operators
- // enables the user to provide fully interoperable constant/mutable
- // iterator types. I.e. the library provides all operators
- // for all mutable/constant iterator combinations.
- //
- // Note though that this kind of interoperability for constant/mutable
- // iterators is not required by the standard for container iterators.
- // All the standard asks for is a conversion mutable -> constant.
- // Most standard library implementations nowadays provide fully interoperable
- // iterator implementations, but there are still heavily used implementations
- // that do not provide them. (Actually it's even worse, they do not provide
- // them for only a few iterators.)
- //
- // ?? Maybe a BOOST_ITERATOR_NO_FULL_INTEROPERABILITY macro should
- // enable the user to turn off mixed type operators
- //
- // The library takes care to provide only the right operator overloads.
- // I.e.
- //
- // bool operator==(Iterator, Iterator);
- // bool operator==(ConstIterator, Iterator);
- // bool operator==(Iterator, ConstIterator);
- // bool operator==(ConstIterator, ConstIterator);
- //
- // ...
- //
- // In order to do so it uses c++ idioms that are not yet widely supported
- // by current compiler releases. The library is designed to degrade gracefully
- // in the face of compiler deficiencies. In general compiler
- // deficiencies result in less strict error checking and more obscure
- // error messages, functionality is not affected.
- //
- // For full operation compiler support for "Substitution Failure Is Not An Error"
- // (aka. enable_if) and cutl_details_boost::is_convertible is required.
- //
- // The following problems occur if support is lacking.
- //
- // Pseudo code
- //
- // ---------------
- // AdaptorA<Iterator1> a1;
- // AdaptorA<Iterator2> a2;
- //
- // // This will result in a no such overload error in full operation
- // // If enable_if or is_convertible is not supported
- // // The instantiation will fail with an error hopefully indicating that
- // // there is no operator== for Iterator1, Iterator2
- // // The same will happen if no enable_if is used to remove
- // // false overloads from the templated conversion constructor
- // // of AdaptorA.
- //
- // a1 == a2;
- // ----------------
- //
- // AdaptorA<Iterator> a;
- // AdaptorB<Iterator> b;
- //
- // // This will result in a no such overload error in full operation
- // // If enable_if is not supported the static assert used
- // // in the operator implementation will fail.
- // // This will accidently work if is_convertible is not supported.
- //
- // a == b;
- // ----------------
- //
-
-# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
-# define BOOST_ITERATOR_CONVERTIBLE(a,b) mpl::true_()
-# else
-# define BOOST_ITERATOR_CONVERTIBLE(a,b) is_convertible<a,b>()
-# endif
-
-# define BOOST_ITERATOR_FACADE_INTEROP(op, result_type, return_prefix, base_op) \
- BOOST_ITERATOR_FACADE_INTEROP_HEAD(inline, op, result_type) \
- { \
- /* For those compilers that do not support enable_if */ \
- BOOST_STATIC_ASSERT(( \
- is_interoperable< Derived1, Derived2 >::value \
- )); \
- return_prefix iterator_core_access::base_op( \
- *static_cast<Derived1 const*>(&lhs) \
- , *static_cast<Derived2 const*>(&rhs) \
- , BOOST_ITERATOR_CONVERTIBLE(Derived2,Derived1) \
- ); \
- }
-
-# define BOOST_ITERATOR_FACADE_RELATION(op, return_prefix, base_op) \
- BOOST_ITERATOR_FACADE_INTEROP( \
- op \
- , cutl_details_boost::detail::always_bool2 \
- , return_prefix \
- , base_op \
- )
-
- BOOST_ITERATOR_FACADE_RELATION(==, return, equal)
- BOOST_ITERATOR_FACADE_RELATION(!=, return !, equal)
-
- BOOST_ITERATOR_FACADE_RELATION(<, return 0 >, distance_from)
- BOOST_ITERATOR_FACADE_RELATION(>, return 0 <, distance_from)
- BOOST_ITERATOR_FACADE_RELATION(<=, return 0 >=, distance_from)
- BOOST_ITERATOR_FACADE_RELATION(>=, return 0 <=, distance_from)
-# undef BOOST_ITERATOR_FACADE_RELATION
-
- // operator- requires an additional part in the static assertion
- BOOST_ITERATOR_FACADE_INTEROP(
- -
- , cutl_details_boost::detail::choose_difference_type
- , return
- , distance_from
- )
-# undef BOOST_ITERATOR_FACADE_INTEROP
-# undef BOOST_ITERATOR_FACADE_INTEROP_HEAD
-
-# define BOOST_ITERATOR_FACADE_PLUS(args) \
- BOOST_ITERATOR_FACADE_PLUS_HEAD(inline, args) \
- { \
- Derived tmp(static_cast<Derived const&>(i)); \
- return tmp += n; \
- }
-
-BOOST_ITERATOR_FACADE_PLUS((
- iterator_facade<Derived, V, TC, R, D> const& i
- , typename Derived::difference_type n
-))
-
-BOOST_ITERATOR_FACADE_PLUS((
- typename Derived::difference_type n
- , iterator_facade<Derived, V, TC, R, D> const& i
-))
-# undef BOOST_ITERATOR_FACADE_PLUS
-# undef BOOST_ITERATOR_FACADE_PLUS_HEAD
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/iterator/detail/config_undef.hpp>
-
-#endif // BOOST_ITERATOR_FACADE_23022003THW_HPP
diff --git a/libcutl/cutl/details/boost/iterator/iterator_traits.hpp b/libcutl/cutl/details/boost/iterator/iterator_traits.hpp
deleted file mode 100644
index 449c91d..0000000
--- a/libcutl/cutl/details/boost/iterator/iterator_traits.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright David Abrahams 2003.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-#ifndef ITERATOR_TRAITS_DWA200347_HPP
-# define ITERATOR_TRAITS_DWA200347_HPP
-
-# include <cutl/details/boost/detail/iterator.hpp>
-# include <cutl/details/boost/detail/workaround.hpp>
-
-namespace cutl_details_boost {
-
-// Unfortunately, g++ 2.95.x chokes when we define a class template
-// iterator_category which has the same name as its
-// std::iterator_category() function, probably due in part to the
-// "std:: is visible globally" hack it uses. Use
-// BOOST_ITERATOR_CATEGORY to write code that's portable to older
-// GCCs.
-
-# if BOOST_WORKAROUND(__GNUC__, <= 2)
-# define BOOST_ITERATOR_CATEGORY iterator_category_
-# else
-# define BOOST_ITERATOR_CATEGORY iterator_category
-# endif
-
-
-template <class Iterator>
-struct iterator_value
-{
- typedef typename cutl_details_boost::detail::iterator_traits<Iterator>::value_type type;
-};
-
-template <class Iterator>
-struct iterator_reference
-{
- typedef typename cutl_details_boost::detail::iterator_traits<Iterator>::reference type;
-};
-
-
-template <class Iterator>
-struct iterator_pointer
-{
- typedef typename cutl_details_boost::detail::iterator_traits<Iterator>::pointer type;
-};
-
-template <class Iterator>
-struct iterator_difference
-{
- typedef typename cutl_details_boost::detail::iterator_traits<Iterator>::difference_type type;
-};
-
-template <class Iterator>
-struct BOOST_ITERATOR_CATEGORY
-{
- typedef typename cutl_details_boost::detail::iterator_traits<Iterator>::iterator_category type;
-};
-
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-template <>
-struct iterator_value<int>
-{
- typedef void type;
-};
-
-template <>
-struct iterator_reference<int>
-{
- typedef void type;
-};
-
-template <>
-struct iterator_pointer<int>
-{
- typedef void type;
-};
-
-template <>
-struct iterator_difference<int>
-{
- typedef void type;
-};
-
-template <>
-struct BOOST_ITERATOR_CATEGORY<int>
-{
- typedef void type;
-};
-# endif
-
-} // namespace cutl_details_boost::iterator
-
-#endif // ITERATOR_TRAITS_DWA200347_HPP
diff --git a/libcutl/cutl/details/boost/limits.hpp b/libcutl/cutl/details/boost/limits.hpp
deleted file mode 100644
index 597a131..0000000
--- a/libcutl/cutl/details/boost/limits.hpp
+++ /dev/null
@@ -1,146 +0,0 @@
-
-// (C) Copyright John maddock 1999.
-// (C) David Abrahams 2002. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// use this header as a workaround for missing <limits>
-
-// See http://www.boost.org/libs/compatibility/index.html for documentation.
-
-#ifndef BOOST_LIMITS
-#define BOOST_LIMITS
-
-#include <cutl/details/boost/config.hpp>
-
-#ifdef BOOST_NO_LIMITS
-# error "There is no std::numeric_limits suppport available."
-#else
-# include <limits>
-#endif
-
-#if (defined(BOOST_HAS_LONG_LONG) && defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)) \
- || (defined(BOOST_HAS_MS_INT64) && defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS))
-// Add missing specializations for numeric_limits:
-#ifdef BOOST_HAS_MS_INT64
-# define BOOST_LLT __int64
-# define BOOST_ULLT unsigned __int64
-#else
-# define BOOST_LLT ::cutl_details_boost::long_long_type
-# define BOOST_ULLT ::cutl_details_boost::ulong_long_type
-#endif
-
-#include <climits> // for CHAR_BIT
-
-namespace std
-{
- template<>
- class numeric_limits<BOOST_LLT>
- {
- public:
-
- BOOST_STATIC_CONSTANT(bool, is_specialized = true);
-#ifdef BOOST_HAS_MS_INT64
- static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0x8000000000000000i64; }
- static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0x7FFFFFFFFFFFFFFFi64; }
-#elif defined(LLONG_MAX)
- static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LLONG_MIN; }
- static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LLONG_MAX; }
-#elif defined(LONGLONG_MAX)
- static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LONGLONG_MIN; }
- static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LONGLONG_MAX; }
-#else
- static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 1LL << (sizeof(BOOST_LLT) * CHAR_BIT - 1); }
- static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ~(min)(); }
-#endif
- BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT -1);
- BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT) - 1) * 301L / 1000);
- BOOST_STATIC_CONSTANT(bool, is_signed = true);
- BOOST_STATIC_CONSTANT(bool, is_integer = true);
- BOOST_STATIC_CONSTANT(bool, is_exact = true);
- BOOST_STATIC_CONSTANT(int, radix = 2);
- static BOOST_LLT epsilon() throw() { return 0; };
- static BOOST_LLT round_error() throw() { return 0; };
-
- BOOST_STATIC_CONSTANT(int, min_exponent = 0);
- BOOST_STATIC_CONSTANT(int, min_exponent10 = 0);
- BOOST_STATIC_CONSTANT(int, max_exponent = 0);
- BOOST_STATIC_CONSTANT(int, max_exponent10 = 0);
-
- BOOST_STATIC_CONSTANT(bool, has_infinity = false);
- BOOST_STATIC_CONSTANT(bool, has_quiet_NaN = false);
- BOOST_STATIC_CONSTANT(bool, has_signaling_NaN = false);
- BOOST_STATIC_CONSTANT(bool, has_denorm = false);
- BOOST_STATIC_CONSTANT(bool, has_denorm_loss = false);
- static BOOST_LLT infinity() throw() { return 0; };
- static BOOST_LLT quiet_NaN() throw() { return 0; };
- static BOOST_LLT signaling_NaN() throw() { return 0; };
- static BOOST_LLT denorm_min() throw() { return 0; };
-
- BOOST_STATIC_CONSTANT(bool, is_iec559 = false);
- BOOST_STATIC_CONSTANT(bool, is_bounded = true);
- BOOST_STATIC_CONSTANT(bool, is_modulo = true);
-
- BOOST_STATIC_CONSTANT(bool, traps = false);
- BOOST_STATIC_CONSTANT(bool, tinyness_before = false);
- BOOST_STATIC_CONSTANT(float_round_style, round_style = round_toward_zero);
-
- };
-
- template<>
- class numeric_limits<BOOST_ULLT>
- {
- public:
-
- BOOST_STATIC_CONSTANT(bool, is_specialized = true);
-#ifdef BOOST_HAS_MS_INT64
- static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0ui64; }
- static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0xFFFFFFFFFFFFFFFFui64; }
-#elif defined(ULLONG_MAX) && defined(ULLONG_MIN)
- static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULLONG_MIN; }
- static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULLONG_MAX; }
-#elif defined(ULONGLONG_MAX) && defined(ULONGLONG_MIN)
- static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULONGLONG_MIN; }
- static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULONGLONG_MAX; }
-#else
- static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0uLL; }
- static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ~0uLL; }
-#endif
- BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT);
- BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT)) * 301L / 1000);
- BOOST_STATIC_CONSTANT(bool, is_signed = false);
- BOOST_STATIC_CONSTANT(bool, is_integer = true);
- BOOST_STATIC_CONSTANT(bool, is_exact = true);
- BOOST_STATIC_CONSTANT(int, radix = 2);
- static BOOST_ULLT epsilon() throw() { return 0; };
- static BOOST_ULLT round_error() throw() { return 0; };
-
- BOOST_STATIC_CONSTANT(int, min_exponent = 0);
- BOOST_STATIC_CONSTANT(int, min_exponent10 = 0);
- BOOST_STATIC_CONSTANT(int, max_exponent = 0);
- BOOST_STATIC_CONSTANT(int, max_exponent10 = 0);
-
- BOOST_STATIC_CONSTANT(bool, has_infinity = false);
- BOOST_STATIC_CONSTANT(bool, has_quiet_NaN = false);
- BOOST_STATIC_CONSTANT(bool, has_signaling_NaN = false);
- BOOST_STATIC_CONSTANT(bool, has_denorm = false);
- BOOST_STATIC_CONSTANT(bool, has_denorm_loss = false);
- static BOOST_ULLT infinity() throw() { return 0; };
- static BOOST_ULLT quiet_NaN() throw() { return 0; };
- static BOOST_ULLT signaling_NaN() throw() { return 0; };
- static BOOST_ULLT denorm_min() throw() { return 0; };
-
- BOOST_STATIC_CONSTANT(bool, is_iec559 = false);
- BOOST_STATIC_CONSTANT(bool, is_bounded = true);
- BOOST_STATIC_CONSTANT(bool, is_modulo = true);
-
- BOOST_STATIC_CONSTANT(bool, traps = false);
- BOOST_STATIC_CONSTANT(bool, tinyness_before = false);
- BOOST_STATIC_CONSTANT(float_round_style, round_style = round_toward_zero);
-
- };
-}
-#endif
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/memory_order.hpp b/libcutl/cutl/details/boost/memory_order.hpp
deleted file mode 100644
index 0d57031..0000000
--- a/libcutl/cutl/details/boost/memory_order.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef BOOST_MEMORY_ORDER_HPP_INCLUDED
-#define BOOST_MEMORY_ORDER_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-// boost/memory_order.hpp
-//
-// Defines enum cutl_details_boost::memory_order per the C++0x working draft
-//
-// Copyright (c) 2008, 2009 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-namespace cutl_details_boost
-{
-
-//
-// Enum values are chosen so that code that needs to insert
-// a trailing fence for acquire semantics can use a single
-// test such as:
-//
-// if( mo & memory_order_acquire ) { ...fence... }
-//
-// For leading fences one can use:
-//
-// if( mo & memory_order_release ) { ...fence... }
-//
-// Architectures such as Alpha that need a fence on consume
-// can use:
-//
-// if( mo & ( memory_order_acquire | memory_order_consume ) ) { ...fence... }
-//
-
-enum memory_order
-{
- memory_order_relaxed = 0,
- memory_order_acquire = 1,
- memory_order_release = 2,
- memory_order_acq_rel = 3, // acquire | release
- memory_order_seq_cst = 7, // acq_rel | 4
- memory_order_consume = 8
-};
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_MEMORY_ORDER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/always.hpp b/libcutl/cutl/details/boost/mpl/always.hpp
deleted file mode 100644
index a7b78d2..0000000
--- a/libcutl/cutl/details/boost/mpl/always.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#ifndef BOOST_MPL_ALWAYS_HPP_INCLUDED
-#define BOOST_MPL_ALWAYS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: always.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/preprocessor/def_params_tail.hpp>
-#include <cutl/details/boost/mpl/aux_/na.hpp>
-#include <cutl/details/boost/mpl/aux_/arity_spec.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-template< typename Value > struct always
-{
- template<
- typename T
- BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(1, typename T, na)
- >
- struct apply
- {
- typedef Value type;
- };
-};
-
-BOOST_MPL_AUX_ARITY_SPEC(1, always)
-
-}}
-
-#endif // BOOST_MPL_ALWAYS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/and.hpp b/libcutl/cutl/details/boost/mpl/and.hpp
deleted file mode 100644
index f5f6dc9..0000000
--- a/libcutl/cutl/details/boost/mpl/and.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-
-#ifndef BOOST_MPL_AND_HPP_INCLUDED
-#define BOOST_MPL_AND_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: and.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# include <cutl/details/boost/mpl/bool.hpp>
-# include <cutl/details/boost/mpl/aux_/nested_type_wknd.hpp>
-# include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-# include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-
-// agurt, 19/may/04: workaround a conflict with <iso646.h> header's
-// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(and)'
-// has to be checked in a separate condition, otherwise GCC complains
-// about 'and' being an alternative token
-#if defined(_MSC_VER)
-#ifndef __GCCXML__
-#if defined(and)
-# pragma push_macro("and")
-# undef and
-# define and(x)
-#endif
-#endif
-#endif
-
-# define BOOST_MPL_PREPROCESSED_HEADER and.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#if defined(_MSC_VER)
-#ifndef __GCCXML__
-#if defined(and)
-# pragma pop_macro("and")
-#endif
-#endif
-#endif
-
-#else
-
-# define AUX778076_OP_NAME and_
-# define AUX778076_OP_VALUE1 false
-# define AUX778076_OP_VALUE2 true
-# include <cutl/details/boost/mpl/aux_/logical_op.hpp>
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AND_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/apply.hpp b/libcutl/cutl/details/boost/mpl/apply.hpp
deleted file mode 100644
index d1e7f0b..0000000
--- a/libcutl/cutl/details/boost/mpl/apply.hpp
+++ /dev/null
@@ -1,229 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_APPLY_HPP_INCLUDED
-#define BOOST_MPL_APPLY_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: apply.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/apply_fwd.hpp>
-# include <cutl/details/boost/mpl/apply_wrap.hpp>
-# include <cutl/details/boost/mpl/placeholders.hpp>
-# include <cutl/details/boost/mpl/lambda.hpp>
-# include <cutl/details/boost/mpl/aux_/na.hpp>
-# include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER apply.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/enum.hpp>
-# include <cutl/details/boost/mpl/aux_/config/lambda.hpp>
-# include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-# include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-# include <cutl/details/boost/mpl/aux_/config/eti.hpp>
-# include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-# include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-// local macros, #undef-ined at the end of the header
-# define AUX778076_APPLY_PARAMS(param) \
- BOOST_MPL_PP_PARAMS( \
- BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
- , param \
- ) \
- /**/
-
-# define AUX778076_APPLY_DEF_PARAMS(param, value) \
- BOOST_MPL_PP_DEFAULT_PARAMS( \
- BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
- , param \
- , value \
- ) \
- /**/
-
-# define AUX778076_APPLY_N_PARAMS(n, param) \
- BOOST_MPL_PP_PARAMS(n, param) \
- /**/
-
-# define AUX778076_APPLY_N_COMMA_PARAMS(n, param) \
- BOOST_PP_COMMA_IF(n) \
- BOOST_MPL_PP_PARAMS(n, param) \
- /**/
-
-# define AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS(n, param, def) \
- BOOST_PP_COMMA_IF(n) \
- BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
- /**/
-
-# define AUX778076_APPLY_N_SPEC_PARAMS(n, param) \
- BOOST_MPL_PP_ENUM(BOOST_PP_INC(n), param) \
- /**/
-
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <cutl/details/boost/mpl/apply.hpp>))
-#include BOOST_PP_ITERATE()
-
-# if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
-// real C++ version is already taken care of
-# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-namespace aux {
-// apply_count_args
-#define AUX778076_COUNT_ARGS_PREFIX apply
-#define AUX778076_COUNT_ARGS_DEFAULT na
-#define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
-#include <cutl/details/boost/mpl/aux_/count_args.hpp>
-}
-
-
-template<
- typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na)
- >
-struct apply
- : aux::apply_chooser<
- aux::apply_count_args< AUX778076_APPLY_PARAMS(T) >::value
- >::template result_< F, AUX778076_APPLY_PARAMS(T) >::type
-{
-};
-
-# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
-
-# undef AUX778076_APPLY_N_SPEC_PARAMS
-# undef AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS
-# undef AUX778076_APPLY_N_COMMA_PARAMS
-# undef AUX778076_APPLY_N_PARAMS
-# undef AUX778076_APPLY_DEF_PARAMS
-# undef AUX778076_APPLY_PARAMS
-
-}}
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_APPLY_HPP_INCLUDED
-
-///// iteration, depth == 1
-
-// For gcc 4.4 compatability, we must include the
-// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
-#else // BOOST_PP_IS_ITERATING
-#if BOOST_PP_ITERATION_DEPTH() == 1
-
-# define i_ BOOST_PP_FRAME_ITERATION(1)
-
-template<
- typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
- >
-struct BOOST_PP_CAT(apply,i_)
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- : BOOST_PP_CAT(apply_wrap,i_)<
- typename lambda<F>::type
- AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
- >
-{
-#else
-{
- typedef typename BOOST_PP_CAT(apply_wrap,i_)<
- typename lambda<F>::type
- AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
- >::type type;
-#endif
- BOOST_MPL_AUX_LAMBDA_SUPPORT(
- BOOST_PP_INC(i_)
- , BOOST_PP_CAT(apply,i_)
- , (F AUX778076_APPLY_N_COMMA_PARAMS(i_,T))
- )
-};
-
-
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
-/// workaround for ETI bug
-template<>
-struct BOOST_PP_CAT(apply,i_)<AUX778076_APPLY_N_SPEC_PARAMS(i_, int)>
-{
- typedef int type;
-};
-#endif
-
-# if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
-# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-#if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
-/// primary template (not a specialization!)
-template<
- typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
- >
-struct apply
- : BOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) >
-{
-};
-#else
-template<
- typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
- >
-struct apply< F AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS(i_, T, na) >
- : BOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) >
-{
-};
-#endif
-
-# else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-#if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
-namespace aux {
-
-template<>
-struct apply_chooser<i_>
-{
- template<
- typename F, AUX778076_APPLY_PARAMS(typename T)
- >
- struct result_
- {
- typedef BOOST_PP_CAT(apply,i_)<
- F AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
- > type;
- };
-};
-
-} // namespace aux
-#endif
-
-# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
-
-# undef i_
-
-#endif // BOOST_PP_ITERATION_DEPTH()
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/apply_fwd.hpp b/libcutl/cutl/details/boost/mpl/apply_fwd.hpp
deleted file mode 100644
index 769b1fa..0000000
--- a/libcutl/cutl/details/boost/mpl/apply_fwd.hpp
+++ /dev/null
@@ -1,107 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_APPLY_FWD_HPP_INCLUDED
-#define BOOST_MPL_APPLY_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: apply_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/aux_/na.hpp>
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER apply_fwd.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp>
-# include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-# include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-// agurt, 15/jan/02: top-level 'apply' template gives an ICE on MSVC
-// (for known reasons)
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-# define BOOST_MPL_CFG_NO_APPLY_TEMPLATE
-#endif
-
-namespace cutl_details_boost { namespace mpl {
-
-// local macro, #undef-ined at the end of the header
-# define AUX778076_APPLY_DEF_PARAMS(param, value) \
- BOOST_MPL_PP_DEFAULT_PARAMS( \
- BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
- , param \
- , value \
- ) \
- /**/
-
-# define AUX778076_APPLY_N_COMMA_PARAMS(n, param) \
- BOOST_PP_COMMA_IF(n) \
- BOOST_MPL_PP_PARAMS(n, param) \
- /**/
-
-# if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-// forward declaration
-template<
- typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na)
- >
-struct apply;
-#else
-namespace aux {
-template< BOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;
-}
-#endif
-
-# endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <cutl/details/boost/mpl/apply_fwd.hpp>))
-#include BOOST_PP_ITERATE()
-
-
-# undef AUX778076_APPLY_N_COMMA_PARAMS
-# undef AUX778076_APPLY_DEF_PARAMS
-
-}}
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_APPLY_FWD_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
-
-template<
- typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
- >
-struct BOOST_PP_CAT(apply,i_);
-
-#undef i_
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/apply_wrap.hpp b/libcutl/cutl/details/boost/mpl/apply_wrap.hpp
deleted file mode 100644
index d1fb246..0000000
--- a/libcutl/cutl/details/boost/mpl/apply_wrap.hpp
+++ /dev/null
@@ -1,234 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_APPLY_WRAP_HPP_INCLUDED
-#define BOOST_MPL_APPLY_WRAP_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2008
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: apply_wrap.hpp 49272 2008-10-11 06:50:46Z agurtovoy $
-// $Date: 2008-10-10 23:50:46 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49272 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/aux_/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/has_apply.hpp>
-# include <cutl/details/boost/mpl/aux_/na.hpp>
-# include <cutl/details/boost/mpl/aux_/msvc_never_true.hpp>
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER apply_wrap.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/enum.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/add.hpp>
-# include <cutl/details/boost/mpl/aux_/config/bcc.hpp>
-# include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-# include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-# include <cutl/details/boost/mpl/aux_/config/eti.hpp>
-# include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-# include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/logical/and.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-
-
-namespace cutl_details_boost { namespace mpl {
-
-// local macros, #undef-ined at the end of the header
-# define AUX778076_APPLY_WRAP_PARAMS(n, param) \
- BOOST_MPL_PP_PARAMS(n, param) \
- /**/
-
-# define AUX778076_APPLY_WRAP_SPEC_PARAMS(n, param) \
- BOOST_MPL_PP_ENUM(BOOST_PP_INC(n), param) \
- /**/
-
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <cutl/details/boost/mpl/apply_wrap.hpp>))
-#include BOOST_PP_ITERATE()
-
-
-# undef AUX778076_APPLY_WRAP_SPEC_PARAMS
-# undef AUX778076_APPLY_WRAP_PARAMS
-
-}}
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_APPLY_WRAP_HPP_INCLUDED
-
-///// iteration, depth == 1
-
-// For gcc 4.4 compatability, we must include the
-// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
-#else // BOOST_PP_IS_ITERATING
-#if BOOST_PP_ITERATION_DEPTH() == 1
-
-# define i_ BOOST_PP_FRAME_ITERATION(1)
-
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-// MSVC version
-
-#define AUX778076_MSVC_DTW_NAME BOOST_PP_CAT(msvc_apply,i_)
-#define AUX778076_MSVC_DTW_ORIGINAL_NAME apply
-#define AUX778076_MSVC_DTW_ARITY i_
-#include <cutl/details/boost/mpl/aux_/msvc_dtw.hpp>
-
-template<
- typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
- >
-struct BOOST_PP_CAT(apply_wrap,i_)
-{
- // Metafunction forwarding confuses vc6
- typedef typename BOOST_PP_CAT(msvc_apply,i_)<F>::template result_<
- AUX778076_APPLY_WRAP_PARAMS(i_, T)
- >::type type;
-};
-
-# elif defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-// MWCW/Borland version
-
-template<
- int N, typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
- >
-struct BOOST_PP_CAT(apply_wrap_impl,i_);
-
-#define BOOST_PP_ITERATION_PARAMS_2 \
- (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY - i_, <cutl/details/boost/mpl/apply_wrap.hpp>))
-#include BOOST_PP_ITERATE()
-
-template<
- typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
- >
-struct BOOST_PP_CAT(apply_wrap,i_)
- : BOOST_PP_CAT(apply_wrap_impl,i_)<
- ::cutl_details_boost::mpl::aux::arity<F,i_>::value
- , F
- BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
- >::type
-{
-};
-
-# else
-// ISO98 C++, with minor concession to vc7
-
-template<
- typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
-#if i_ == 0
- , typename has_apply_ = typename aux::has_apply<F>::type
-#endif
- >
-struct BOOST_PP_CAT(apply_wrap,i_)
-// metafunction forwarding confuses MSVC 7.0
-#if !BOOST_WORKAROUND(BOOST_MSVC, == 1300)
- : F::template apply< AUX778076_APPLY_WRAP_PARAMS(i_, T) >
-{
-#else
-{
- typedef typename F::template apply<
- AUX778076_APPLY_WRAP_PARAMS(i_, T)
- >::type type;
-#endif
-};
-
-#if i_ == 0 && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-template< typename F >
-struct BOOST_PP_CAT(apply_wrap,i_)<F,true_>
- : F::apply
-{
-};
-#endif
-
-# endif // workarounds
-
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
-/// workaround for ETI bug
-template<>
-struct BOOST_PP_CAT(apply_wrap,i_)<AUX778076_APPLY_WRAP_SPEC_PARAMS(i_, int)>
-{
- typedef int type;
-};
-#endif
-
-# undef i_
-
-///// iteration, depth == 2
-
-#elif BOOST_PP_ITERATION_DEPTH() == 2
-
-# define j_ BOOST_PP_FRAME_ITERATION(2)
-
-#if i_ == 0 && j_ == 0 \
- && defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS) \
- && !defined(BOOST_MPL_CFG_NO_HAS_APPLY)
-
-template< typename F, bool F_has_apply >
-struct apply_wrap_impl0_bcb {
- typedef typename F::template apply< na > type;
-};
-
-template< typename F >
-struct apply_wrap_impl0_bcb< F, true > {
- typedef typename F::apply type;
-};
-
-template<
- typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
- >
-struct BOOST_PP_CAT(apply_wrap_impl,i_)<
- BOOST_MPL_PP_ADD(i_, j_)
- , F
- BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
- >
-{
- typedef apply_wrap_impl0_bcb< F, aux::has_apply< F >::value >::type type;
-};
-#else
-
-template<
- typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
- >
-struct BOOST_PP_CAT(apply_wrap_impl,i_)<
- BOOST_MPL_PP_ADD(i_, j_)
- , F
- BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
- >
-{
- typedef typename F::template apply<
- AUX778076_APPLY_WRAP_PARAMS(i_, T)
-#if i_ == 0 && j_ == 0
-/// since the defaults are "lost", we have to pass *something* even for nullary
-/// metafunction classes
- na
-#else
- BOOST_PP_COMMA_IF(BOOST_PP_AND(i_, j_)) BOOST_MPL_PP_ENUM(j_, na)
-#endif
- > type;
-};
-
-#endif
-
-# undef j_
-
-#endif // BOOST_PP_ITERATION_DEPTH()
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/arg.hpp b/libcutl/cutl/details/boost/mpl/arg.hpp
deleted file mode 100644
index aa96c8b..0000000
--- a/libcutl/cutl/details/boost/mpl/arg.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_ARG_HPP_INCLUDED
-#define BOOST_MPL_ARG_HPP_INCLUDED
-
-// Copyright Peter Dimov 2001-2002
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: arg.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/arg_fwd.hpp>
-# include <cutl/details/boost/mpl/aux_/na.hpp>
-# include <cutl/details/boost/mpl/aux_/na_assert.hpp>
-# include <cutl/details/boost/mpl/aux_/arity_spec.hpp>
-# include <cutl/details/boost/mpl/aux_/arg_typedef.hpp>
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER arg.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/config/lambda.hpp>
-# include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-# include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-// local macro, #undef-ined at the end of the header
-#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-# define AUX778076_ARG_N_DEFAULT_PARAMS(param,value) \
- BOOST_MPL_PP_DEFAULT_PARAMS( \
- BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
- , param \
- , value \
- ) \
- /**/
-#else
-# define AUX778076_ARG_N_DEFAULT_PARAMS(param,value) \
- BOOST_MPL_PP_PARAMS( \
- BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
- , param \
- ) \
- /**/
-#endif
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <cutl/details/boost/mpl/arg.hpp>))
-#include BOOST_PP_ITERATE()
-
-
-# undef AUX778076_ARG_N_DEFAULT_PARAMS
-
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int,arg)
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_ARG_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
-
-#if i_ > 0
-
-template<> struct arg<i_>
-{
- BOOST_STATIC_CONSTANT(int, value = i_);
- typedef arg<BOOST_PP_INC(i_)> next;
- BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
- BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
-
- template<
- AUX778076_ARG_N_DEFAULT_PARAMS(typename U, na)
- >
- struct apply
- {
- typedef BOOST_PP_CAT(U,i_) type;
- BOOST_MPL_AUX_ASSERT_NOT_NA(type);
- };
-};
-
-#else
-
-template<> struct arg<-1>
-{
- BOOST_STATIC_CONSTANT(int, value = -1);
- BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
- BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
-
- template<
- AUX778076_ARG_N_DEFAULT_PARAMS(typename U, na)
- >
- struct apply
- {
- typedef U1 type;
- BOOST_MPL_AUX_ASSERT_NOT_NA(type);
- };
-};
-
-#endif // i_ > 0
-
-#undef i_
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/arg_fwd.hpp b/libcutl/cutl/details/boost/mpl/arg_fwd.hpp
deleted file mode 100644
index 75fe65f..0000000
--- a/libcutl/cutl/details/boost/mpl/arg_fwd.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-
-#ifndef BOOST_MPL_ARG_FWD_HPP_INCLUDED
-#define BOOST_MPL_ARG_FWD_HPP_INCLUDED
-
-// Copyright Peter Dimov 2001-2002
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: arg_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/adl_barrier.hpp>
-#include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arg;
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(arg)
-
-#endif // BOOST_MPL_ARG_FWD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/assert.hpp b/libcutl/cutl/details/boost/mpl/assert.hpp
deleted file mode 100644
index e810ec9..0000000
--- a/libcutl/cutl/details/boost/mpl/assert.hpp
+++ /dev/null
@@ -1,438 +0,0 @@
-
-#ifndef BOOST_MPL_ASSERT_HPP_INCLUDED
-#define BOOST_MPL_ASSERT_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2006
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: assert.hpp 84442 2013-05-23 14:38:22Z steven_watanabe $
-// $Date: 2013-05-23 07:38:22 -0700 (Thu, 23 May 2013) $
-// $Revision: 84442 $
-
-#include <cutl/details/boost/mpl/not.hpp>
-#include <cutl/details/boost/mpl/aux_/value_wknd.hpp>
-#include <cutl/details/boost/mpl/aux_/nested_type_wknd.hpp>
-#include <cutl/details/boost/mpl/aux_/yes_no.hpp>
-#include <cutl/details/boost/mpl/aux_/na.hpp>
-#include <cutl/details/boost/mpl/aux_/adl_barrier.hpp>
-
-#include <cutl/details/boost/mpl/aux_/config/nttp.hpp>
-#include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-#include <cutl/details/boost/mpl/aux_/config/gcc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-#include <cutl/details/boost/mpl/aux_/config/pp_counter.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#include <cutl/details/boost/preprocessor/cat.hpp>
-
-#include <cutl/details/boost/config.hpp> // make sure 'size_t' is placed into 'std'
-#include <cstddef>
-
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
-#include <cutl/details/boost/mpl/if.hpp>
-#endif
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
- || (BOOST_MPL_CFG_GCC != 0) \
- || BOOST_WORKAROUND(__IBMCPP__, <= 600)
-# define BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
-#endif
-
-#if BOOST_WORKAROUND(__MWERKS__, < 0x3202) \
- || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
- || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-# define BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
-#endif
-
-// agurt, 10/nov/06: use enums for Borland (which cannot cope with static constants)
-// and GCC (which issues "unused variable" warnings when static constants are used
-// at a function scope)
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
- || (BOOST_MPL_CFG_GCC != 0)
-# define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr }
-#else
-# define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) BOOST_STATIC_CONSTANT(T, expr)
-#endif
-
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-struct failed {};
-
-// agurt, 24/aug/04: MSVC 7.1 workaround here and below: return/accept
-// 'assert<false>' by reference; can't apply it unconditionally -- apparently it
-// degrades the quality of GCC diagnostics
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
-# define AUX778076_ASSERT_ARG(x) x&
-#else
-# define AUX778076_ASSERT_ARG(x) x
-#endif
-
-template< bool C > struct assert { typedef void* type; };
-template<> struct assert<false> { typedef AUX778076_ASSERT_ARG(assert) type; };
-
-template< bool C >
-int assertion_failed( typename assert<C>::type );
-
-template< bool C >
-struct assertion
-{
- static int failed( assert<false> );
-};
-
-template<>
-struct assertion<true>
-{
- static int failed( void* );
-};
-
-struct assert_
-{
-#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
- template< typename T1, typename T2 = na, typename T3 = na, typename T4 = na > struct types {};
-#endif
- static assert_ const arg;
- enum relations { equal = 1, not_equal, greater, greater_equal, less, less_equal };
-};
-
-
-#if !defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
-
-bool operator==( failed, failed );
-bool operator!=( failed, failed );
-bool operator>( failed, failed );
-bool operator>=( failed, failed );
-bool operator<( failed, failed );
-bool operator<=( failed, failed );
-
-#if defined(__EDG_VERSION__)
-template< bool (*)(failed, failed), long x, long y > struct assert_relation {};
-# define BOOST_MPL_AUX_ASSERT_RELATION(x, y, r) assert_relation<r,x,y>
-#else
-template< BOOST_MPL_AUX_NTTP_DECL(long, x), BOOST_MPL_AUX_NTTP_DECL(long, y), bool (*)(failed, failed) >
-struct assert_relation {};
-# define BOOST_MPL_AUX_ASSERT_RELATION(x, y, r) assert_relation<x,y,r>
-#endif
-
-#else // BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
-
-cutl_details_boost::mpl::aux::weighted_tag<1>::type operator==( assert_, assert_ );
-cutl_details_boost::mpl::aux::weighted_tag<2>::type operator!=( assert_, assert_ );
-cutl_details_boost::mpl::aux::weighted_tag<3>::type operator>( assert_, assert_ );
-cutl_details_boost::mpl::aux::weighted_tag<4>::type operator>=( assert_, assert_ );
-cutl_details_boost::mpl::aux::weighted_tag<5>::type operator<( assert_, assert_ );
-cutl_details_boost::mpl::aux::weighted_tag<6>::type operator<=( assert_, assert_ );
-
-template< assert_::relations r, long x, long y > struct assert_relation {};
-
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1700)
-
-template<class Pred>
-struct extract_assert_pred;
-
-template<class Pred>
-struct extract_assert_pred<void(Pred)> { typedef Pred type; };
-
-template<class Pred>
-struct eval_assert {
- typedef typename extract_assert_pred<Pred>::type P;
- typedef typename P::type p_type;
- typedef typename ::cutl_details_boost::mpl::if_c<p_type::value,
- AUX778076_ASSERT_ARG(assert<false>),
- failed ************ P::************
- >::type type;
-};
-
-template<class Pred>
-struct eval_assert_not {
- typedef typename extract_assert_pred<Pred>::type P;
- typedef typename P::type p_type;
- typedef typename ::cutl_details_boost::mpl::if_c<!p_type::value,
- AUX778076_ASSERT_ARG(assert<false>),
- failed ************ ::cutl_details_boost::mpl::not_<P>::************
- >::type type;
-};
-
-template< typename T >
-T make_assert_arg();
-
-#elif !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
-
-template< bool > struct assert_arg_pred_impl { typedef int type; };
-template<> struct assert_arg_pred_impl<true> { typedef void* type; };
-
-template< typename P > struct assert_arg_pred
-{
- typedef typename P::type p_type;
- typedef typename assert_arg_pred_impl< p_type::value >::type type;
-};
-
-template< typename P > struct assert_arg_pred_not
-{
- typedef typename P::type p_type;
- BOOST_MPL_AUX_ASSERT_CONSTANT( bool, p = !p_type::value );
- typedef typename assert_arg_pred_impl<p>::type type;
-};
-
-template< typename Pred >
-failed ************ (Pred::************
- assert_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type )
- );
-
-template< typename Pred >
-failed ************ (cutl_details_boost::mpl::not_<Pred>::************
- assert_not_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type )
- );
-
-template< typename Pred >
-AUX778076_ASSERT_ARG(assert<false>)
-assert_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type );
-
-template< typename Pred >
-AUX778076_ASSERT_ARG(assert<false>)
-assert_not_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type );
-
-
-#else // BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
-
-template< bool c, typename Pred > struct assert_arg_type_impl
-{
- typedef failed ************ Pred::* mwcw83_wknd;
- typedef mwcw83_wknd ************* type;
-};
-
-template< typename Pred > struct assert_arg_type_impl<true,Pred>
-{
- typedef AUX778076_ASSERT_ARG(assert<false>) type;
-};
-
-template< typename Pred > struct assert_arg_type
- : assert_arg_type_impl< BOOST_MPL_AUX_VALUE_WKND(BOOST_MPL_AUX_NESTED_TYPE_WKND(Pred))::value, Pred >
-{
-};
-
-template< typename Pred >
-typename assert_arg_type<Pred>::type
-assert_arg(void (*)(Pred), int);
-
-template< typename Pred >
-typename assert_arg_type< cutl_details_boost::mpl::not_<Pred> >::type
-assert_not_arg(void (*)(Pred), int);
-
-# if !defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
-template< long x, long y, bool (*r)(failed, failed) >
-typename assert_arg_type_impl< false,BOOST_MPL_AUX_ASSERT_RELATION(x,y,r) >::type
-assert_rel_arg( BOOST_MPL_AUX_ASSERT_RELATION(x,y,r) );
-# else
-template< assert_::relations r, long x, long y >
-typename assert_arg_type_impl< false,assert_relation<r,x,y> >::type
-assert_rel_arg( assert_relation<r,x,y> );
-# endif
-
-#endif // BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
-
-#undef AUX778076_ASSERT_ARG
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
-
-// BOOST_MPL_ASSERT((pred<x,...>))
-
-#define BOOST_MPL_ASSERT(pred) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
- cutl_details_boost::mpl::assertion_failed<false>( \
- cutl_details_boost::mpl::make_assert_arg< \
- typename cutl_details_boost::mpl::eval_assert<void pred>::type \
- >() \
- ) \
- ) \
- ) \
-/**/
-
-// BOOST_MPL_ASSERT_NOT((pred<x,...>))
-
-#define BOOST_MPL_ASSERT_NOT(pred) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
- cutl_details_boost::mpl::assertion_failed<false>( \
- cutl_details_boost::mpl::make_assert_arg< \
- typename cutl_details_boost::mpl::eval_assert_not<void pred>::type \
- >() \
- ) \
- ) \
- ) \
-/**/
-
-#else
-
-// BOOST_MPL_ASSERT((pred<x,...>))
-
-#define BOOST_MPL_ASSERT(pred) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
- cutl_details_boost::mpl::assertion_failed<false>( \
- cutl_details_boost::mpl::assert_arg( (void (*) pred)0, 1 ) \
- ) \
- ) \
- ) \
-/**/
-
-// BOOST_MPL_ASSERT_NOT((pred<x,...>))
-
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-# define BOOST_MPL_ASSERT_NOT(pred) \
-enum { \
- BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
- cutl_details_boost::mpl::assertion<false>::failed( \
- cutl_details_boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \
- ) \
- ) \
-}\
-/**/
-#else
-# define BOOST_MPL_ASSERT_NOT(pred) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
- cutl_details_boost::mpl::assertion_failed<false>( \
- cutl_details_boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \
- ) \
- ) \
- ) \
-/**/
-#endif
-
-#endif
-
-// BOOST_MPL_ASSERT_RELATION(x, ==|!=|<=|<|>=|>, y)
-
-#if defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
-
-# if !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
-// agurt, 9/nov/06: 'enum' below is a workaround for gcc 4.0.4/4.1.1 bugs #29522 and #29518
-# define BOOST_MPL_ASSERT_RELATION_IMPL(counter, x, rel, y) \
-enum { BOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) }; \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
- cutl_details_boost::mpl::assertion_failed<BOOST_PP_CAT(mpl_assert_rel_value,counter)>( \
- (cutl_details_boost::mpl::failed ************ ( cutl_details_boost::mpl::assert_relation< \
- cutl_details_boost::mpl::assert_::relations( sizeof( \
- cutl_details_boost::mpl::assert_::arg rel cutl_details_boost::mpl::assert_::arg \
- ) ) \
- , x \
- , y \
- >::************)) 0 ) \
- ) \
- ) \
-/**/
-# else
-# define BOOST_MPL_ASSERT_RELATION_IMPL(counter, x, rel, y) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assert_rel,counter) = sizeof( \
- cutl_details_boost::mpl::assert_::arg rel cutl_details_boost::mpl::assert_::arg \
- ) \
- ); \
-BOOST_MPL_AUX_ASSERT_CONSTANT( bool, BOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) ); \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
- cutl_details_boost::mpl::assertion_failed<BOOST_PP_CAT(mpl_assert_rel_value,counter)>( \
- cutl_details_boost::mpl::assert_rel_arg( cutl_details_boost::mpl::assert_relation< \
- cutl_details_boost::mpl::assert_::relations(BOOST_PP_CAT(mpl_assert_rel,counter)) \
- , x \
- , y \
- >() ) \
- ) \
- ) \
- ) \
-/**/
-# endif
-
-# define BOOST_MPL_ASSERT_RELATION(x, rel, y) \
-BOOST_MPL_ASSERT_RELATION_IMPL(BOOST_MPL_AUX_PP_COUNTER(), x, rel, y) \
-/**/
-
-#else // !BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
-
-# if defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
-# define BOOST_MPL_ASSERT_RELATION(x, rel, y) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
- cutl_details_boost::mpl::assertion_failed<(x rel y)>( cutl_details_boost::mpl::assert_rel_arg( \
- cutl_details_boost::mpl::BOOST_MPL_AUX_ASSERT_RELATION(x,y,(&cutl_details_boost::mpl::operator rel))() \
- ) ) \
- ) \
- ) \
-/**/
-# else
-# define BOOST_MPL_ASSERT_RELATION(x, rel, y) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
- cutl_details_boost::mpl::assertion_failed<(x rel y)>( (cutl_details_boost::mpl::failed ************ ( \
- cutl_details_boost::mpl::BOOST_MPL_AUX_ASSERT_RELATION(x,y,(&cutl_details_boost::mpl::operator rel))::************))0 ) \
- ) \
- ) \
-/**/
-# endif
-
-#endif
-
-
-// BOOST_MPL_ASSERT_MSG( (pred<x,...>::value), USER_PROVIDED_MESSAGE, (types<x,...>) )
-
-#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202))
-# define BOOST_MPL_ASSERT_MSG_IMPL( counter, c, msg, types_ ) \
-struct msg; \
-typedef struct BOOST_PP_CAT(msg,counter) : cutl_details_boost::mpl::assert_ \
-{ \
- using cutl_details_boost::mpl::assert_::types; \
- static cutl_details_boost::mpl::failed ************ (msg::************ assert_arg()) types_ \
- { return 0; } \
-} BOOST_PP_CAT(mpl_assert_arg,counter); \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
- cutl_details_boost::mpl::assertion<(c)>::failed( BOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \
- ) \
- ) \
-/**/
-#else
-# define BOOST_MPL_ASSERT_MSG_IMPL( counter, c, msg, types_ ) \
-struct msg; \
-typedef struct BOOST_PP_CAT(msg,counter) : cutl_details_boost::mpl::assert_ \
-{ \
- static cutl_details_boost::mpl::failed ************ (msg::************ assert_arg()) types_ \
- { return 0; } \
-} BOOST_PP_CAT(mpl_assert_arg,counter); \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
- std::size_t \
- , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
- cutl_details_boost::mpl::assertion_failed<(c)>( BOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \
- ) \
- ) \
-/**/
-#endif
-
-#define BOOST_MPL_ASSERT_MSG( c, msg, types_ ) \
-BOOST_MPL_ASSERT_MSG_IMPL( BOOST_MPL_AUX_PP_COUNTER(), c, msg, types_ ) \
-/**/
-
-#endif // BOOST_MPL_ASSERT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/adl_barrier.hpp b/libcutl/cutl/details/boost/mpl/aux_/adl_barrier.hpp
deleted file mode 100644
index 6c1cf97..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/adl_barrier.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
-#define BOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: adl_barrier.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/adl.hpp>
-#include <cutl/details/boost/mpl/aux_/config/gcc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
-
-# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE mpl_
-# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN namespace mpl_ {
-# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE }
-# define BOOST_MPL_AUX_ADL_BARRIER_DECL(type) \
- namespace cutl_details_boost { namespace mpl { \
- using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
- } } \
-/**/
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-namespace BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE { namespace aux {} }
-namespace cutl_details_boost { namespace mpl { using namespace BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE;
-namespace aux { using namespace BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux; }
-}}
-#endif
-
-#else // BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE
-
-# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE cutl_details_boost::mpl
-# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN namespace cutl_details_boost { namespace mpl {
-# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE }}
-# define BOOST_MPL_AUX_ADL_BARRIER_DECL(type) /**/
-
-#endif
-
-#endif // BOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/arg_typedef.hpp b/libcutl/cutl/details/boost/mpl/aux_/arg_typedef.hpp
deleted file mode 100644
index 67bf503..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/arg_typedef.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
-#define BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: arg_typedef.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/lambda.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
- || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-
-# define BOOST_MPL_AUX_ARG_TYPEDEF(T, name) typedef T name;
-
-#else
-
-# define BOOST_MPL_AUX_ARG_TYPEDEF(T, name) /**/
-
-#endif
-
-#endif // BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/arity.hpp b/libcutl/cutl/details/boost/mpl/aux_/arity.hpp
deleted file mode 100644
index dc25642..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/arity.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_ARITY_HPP_INCLUDED
-#define BOOST_MPL_AUX_ARITY_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: arity.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-
-#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-
-# include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-# include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-// agurt, 15/mar/02: it's possible to implement the template so that it will
-// "just work" and do not require any specialization, but not on the compilers
-// that require the arity workaround in the first place
-template< typename F, BOOST_MPL_AUX_NTTP_DECL(int, N) >
-struct arity
-{
- BOOST_STATIC_CONSTANT(int, value = N);
-};
-
-}}}
-
-#endif // BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
-
-#endif // BOOST_MPL_AUX_ARITY_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/arity_spec.hpp b/libcutl/cutl/details/boost/mpl/aux_/arity_spec.hpp
deleted file mode 100644
index 11cfa09..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/arity_spec.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
-#define BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: arity_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/int.hpp>
-#include <cutl/details/boost/mpl/limits/arity.hpp>
-#include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-#include <cutl/details/boost/mpl/aux_/arity.hpp>
-#include <cutl/details/boost/mpl/aux_/template_arity_fwd.hpp>
-#include <cutl/details/boost/mpl/aux_/config/ttp.hpp>
-#include <cutl/details/boost/mpl/aux_/config/lambda.hpp>
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-
-#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-# define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) \
-namespace aux { \
-template< BOOST_MPL_AUX_NTTP_DECL(int, N), BOOST_MPL_PP_PARAMS(i,type T) > \
-struct arity< \
- name< BOOST_MPL_PP_PARAMS(i,T) > \
- , N \
- > \
-{ \
- BOOST_STATIC_CONSTANT(int \
- , value = BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
- ); \
-}; \
-} \
-/**/
-#else
-# define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) /**/
-#endif
-
-# define BOOST_MPL_AUX_ARITY_SPEC(i,name) \
- BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,typename,name) \
-/**/
-
-
-#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
- && !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
-# define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) \
-namespace aux { \
-template< BOOST_MPL_PP_PARAMS(i,typename T) > \
-struct template_arity< name<BOOST_MPL_PP_PARAMS(i,T)> > \
- : int_<i> \
-{ \
-}; \
-} \
-/**/
-#else
-# define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/
-#endif
-
-
-#endif // BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/common_name_wknd.hpp b/libcutl/cutl/details/boost/mpl/aux_/common_name_wknd.hpp
deleted file mode 100644
index 0ab5c6b..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/common_name_wknd.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
-#define BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: common_name_wknd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if BOOST_WORKAROUND(__BORLANDC__, < 0x561)
-// agurt, 12/nov/02: to suppress the bogus "Cannot have both a template class
-// and function named 'xxx'" diagnostic
-# define BOOST_MPL_AUX_COMMON_NAME_WKND(name) \
-namespace name_##wknd { \
-template< typename > void name(); \
-} \
-/**/
-
-#else
-
-# define BOOST_MPL_AUX_COMMON_NAME_WKND(name) /**/
-
-#endif // __BORLANDC__
-
-#endif // BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/adl.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/adl.hpp
deleted file mode 100644
index f98f4ab..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/adl.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: adl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/intel.hpp>
-#include <cutl/details/boost/mpl/aux_/config/gcc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-// agurt, 25/apr/04: technically, the ADL workaround is only needed for GCC,
-// but putting everything expect public, user-specializable metafunctions into
-// a separate global namespace has a nice side effect of reducing the length
-// of template instantiation symbols, so we apply the workaround on all
-// platforms that can handle it
-
-#if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE) \
- && ( BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
- || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
- || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
- || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
- )
-
-# define BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/arrays.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/arrays.hpp
deleted file mode 100644
index de8ac9d..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/arrays.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: arrays.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && ( BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
- || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- )
-
-# define BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/bind.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/bind.hpp
deleted file mode 100644
index 3d87da7..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/bind.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
-
-// Copyright David Abrahams 2002
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: bind.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
- )
-
-# define BOOST_MPL_CFG_NO_BIND_TEMPLATE
-
-#endif
-
-//#define BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
-
-#endif // BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/compiler.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/compiler.hpp
deleted file mode 100644
index 901009a..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/compiler.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2008
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: compiler.hpp 53189 2009-05-22 20:07:55Z hkaiser $
-// $Date: 2009-05-22 13:07:55 -0700 (Fri, 22 May 2009) $
-// $Revision: 53189 $
-
-#if !defined(BOOST_MPL_CFG_COMPILER_DIR)
-
-# include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-# include <cutl/details/boost/mpl/aux_/config/ttp.hpp>
-# include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-# include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-# include <cutl/details/boost/mpl/aux_/config/gcc.hpp>
-# include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-# define BOOST_MPL_CFG_COMPILER_DIR msvc60
-
-# elif BOOST_WORKAROUND(BOOST_MSVC, == 1300)
-# define BOOST_MPL_CFG_COMPILER_DIR msvc70
-
-# elif BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304))
-# define BOOST_MPL_CFG_COMPILER_DIR gcc
-
-# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
-# if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-# define BOOST_MPL_CFG_COMPILER_DIR bcc551
-# elif BOOST_WORKAROUND(__BORLANDC__, >= 0x590)
-# define BOOST_MPL_CFG_COMPILER_DIR bcc
-# else
-# define BOOST_MPL_CFG_COMPILER_DIR bcc_pre590
-# endif
-
-# elif BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-# define BOOST_MPL_CFG_COMPILER_DIR dmc
-
-# elif defined(__MWERKS__)
-# if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-# define BOOST_MPL_CFG_COMPILER_DIR mwcw
-# else
-# define BOOST_MPL_CFG_COMPILER_DIR plain
-# endif
-
-# elif defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-# define BOOST_MPL_CFG_COMPILER_DIR no_ctps
-
-# elif defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
-# define BOOST_MPL_CFG_COMPILER_DIR no_ttp
-
-# else
-# define BOOST_MPL_CFG_COMPILER_DIR plain
-# endif
-
-#endif // BOOST_MPL_CFG_COMPILER_DIR
-
-#endif // BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/ctps.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/ctps.hpp
deleted file mode 100644
index e188658..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/ctps.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: ctps.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-#include <cutl/details/boost/config.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && BOOST_WORKAROUND(__BORLANDC__, < 0x582)
-
-# define BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC
-
-#endif
-
-// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION is defined in <cutl/details/boost/config.hpp>
-
-#endif // BOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp
deleted file mode 100644
index bb89e03..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: dmc_ambiguous_ctps.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-
-# define BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/dtp.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/dtp.hpp
deleted file mode 100644
index 8a9d3c0..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/dtp.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: dtp.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-// MWCW 7.x-8.0 "losts" default template parameters of nested class
-// templates when their owner classes are passed as arguments to other
-// templates; Borland 5.5.1 "forgets" them from the very beginning (if
-// the owner class is a class template), and Borland 5.6 isn't even
-// able to compile a definition of nested class template with DTP
-
-#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && BOOST_WORKAROUND(__BORLANDC__, >= 0x560) \
- && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
-
-# define BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
-
-#endif
-
-
-#if !defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && ( BOOST_WORKAROUND(__MWERKS__, <= 0x3001) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
- || defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
- )
-
-# define BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/eti.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/eti.hpp
deleted file mode 100644
index f53162e..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/eti.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: eti.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-// flags for MSVC 6.5's so-called "early template instantiation bug"
-#if !defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-
-# define BOOST_MPL_CFG_MSVC_60_ETI_BUG
-
-#endif
-
-#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && BOOST_WORKAROUND(BOOST_MSVC, == 1300)
-
-# define BOOST_MPL_CFG_MSVC_70_ETI_BUG
-
-#endif
-
-#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && ( defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) \
- || defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) \
- )
-
-# define BOOST_MPL_CFG_MSVC_ETI_BUG
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/gcc.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/gcc.hpp
deleted file mode 100644
index b9d8f7d..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/gcc.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: gcc.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if defined(__GNUC__) && !defined(__EDG_VERSION__)
-# define BOOST_MPL_CFG_GCC ((__GNUC__ << 8) | __GNUC_MINOR__)
-#else
-# define BOOST_MPL_CFG_GCC 0
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/has_apply.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/has_apply.hpp
deleted file mode 100644
index d7e7db7..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/has_apply.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: has_apply.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/has_xxx.hpp>
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_HAS_APPLY) \
- && ( defined(BOOST_MPL_CFG_NO_HAS_XXX) \
- || BOOST_WORKAROUND(__EDG_VERSION__, < 300) \
- || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
- )
-
-# define BOOST_MPL_CFG_NO_HAS_APPLY
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/has_xxx.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/has_xxx.hpp
deleted file mode 100644
index ff86e7f..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/has_xxx.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-// Copyright David Abrahams 2002-2003
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: has_xxx.hpp 63518 2010-07-02 08:32:03Z agurtovoy $
-// $Date: 2010-07-02 01:32:03 -0700 (Fri, 02 Jul 2010) $
-// $Revision: 63518 $
-
-#include <cutl/details/boost/mpl/aux_/config/overload_resolution.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-// agurt, 11/jan/03: signals a stub-only 'has_xxx' implementation
-
-#if !defined(BOOST_MPL_CFG_NO_HAS_XXX) \
- && ( defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \
- || BOOST_WORKAROUND(__GNUC__, <= 2) \
- || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
- )
-
-# define BOOST_MPL_CFG_NO_HAS_XXX
-# define BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/integral.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/integral.hpp
deleted file mode 100644
index 22e1be0..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/integral.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: integral.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if !defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
-
-# define BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
-
-#endif
-
-#if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \
- )
-
-# define BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/intel.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/intel.hpp
deleted file mode 100644
index 97b7309..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/intel.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: intel.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-
-// BOOST_INTEL_CXX_VERSION is defined here:
-#include <cutl/details/boost/config.hpp>
-
-#endif // BOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/lambda.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/lambda.hpp
deleted file mode 100644
index f9cf5c9..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/lambda.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: lambda.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/ttp.hpp>
-#include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-
-// agurt, 15/jan/02: full-fledged implementation requires both
-// template template parameters _and_ partial specialization
-
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
- && ( defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
- || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- )
-
-# define BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/msvc.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/msvc.hpp
deleted file mode 100644
index 99c26ef..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/msvc.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: msvc.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-
-// BOOST_MSVC is defined here:
-#include <cutl/details/boost/config.hpp>
-
-#endif // BOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/msvc_typename.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/msvc_typename.hpp
deleted file mode 100644
index be8141d..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/msvc_typename.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: msvc_typename.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-# define BOOST_MSVC_TYPENAME
-#else
-# define BOOST_MSVC_TYPENAME typename
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/nttp.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/nttp.hpp
deleted file mode 100644
index 8b3570d..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/nttp.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: nttp.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-// MSVC 6.5 ICE-s on the code as simple as this (see "aux_/nttp_decl.hpp"
-// for a workaround):
-//
-// namespace std {
-// template< typename Char > struct string;
-// }
-//
-// void foo(std::string<char>);
-//
-// namespace cutl_details_boost { namespace mpl {
-// template< int > struct arg;
-// }}
-
-#if !defined(BOOST_MPL_CFG_NTTP_BUG) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-
-# define BOOST_MPL_CFG_NTTP_BUG
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/overload_resolution.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/overload_resolution.hpp
deleted file mode 100644
index a58dd56..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/overload_resolution.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: overload_resolution.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if !defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && ( BOOST_WORKAROUND(__BORLANDC__, < 0x590) \
- || BOOST_WORKAROUND(__MWERKS__, < 0x3001) \
- )
-
-# define BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/pp_counter.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/pp_counter.hpp
deleted file mode 100644
index e66e2d3..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/pp_counter.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2006
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: pp_counter.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_AUX_PP_COUNTER)
-# include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-# if BOOST_WORKAROUND(BOOST_MSVC, >= 1300)
-# define BOOST_MPL_AUX_PP_COUNTER() __COUNTER__
-# else
-# define BOOST_MPL_AUX_PP_COUNTER() __LINE__
-# endif
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/preprocessor.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/preprocessor.hpp
deleted file mode 100644
index 81338d3..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/preprocessor.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: preprocessor.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if !defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION) \
- && ( BOOST_WORKAROUND(__MWERKS__, <= 0x3003) \
- || BOOST_WORKAROUND(__BORLANDC__, < 0x582) \
- || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
- )
-
-# define BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION
-
-#endif
-
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
-# define BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES
-#endif
-
-#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING) \
- && BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-# define BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING
-#endif
-
-
-#endif // BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/static_constant.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/static_constant.hpp
deleted file mode 100644
index a0b2426..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/static_constant.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: static_constant.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-// BOOST_STATIC_CONSTANT is defined here:
-# include <cutl/details/boost/config.hpp>
-#else
-// undef the macro for the preprocessing mode
-# undef BOOST_STATIC_CONSTANT
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/ttp.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/ttp.hpp
deleted file mode 100644
index 034296e..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/ttp.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: ttp.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/gcc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
- && ( defined(BOOST_NO_TEMPLATE_TEMPLATES) \
- || BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x590) ) \
- )
-
-# define BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS
-
-#endif
-
-
-#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE) \
- && ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
- )
-
-# define BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp
deleted file mode 100644
index 4494366..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: use_preprocessed.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-// #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-
-#endif // BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/config/workaround.hpp b/libcutl/cutl/details/boost/mpl/aux_/config/workaround.hpp
deleted file mode 100644
index 7699a8a..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/config/workaround.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: workaround.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#endif // BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/count_args.hpp b/libcutl/cutl/details/boost/mpl/aux_/count_args.hpp
deleted file mode 100644
index 036a444..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/count_args.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: count_args.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/preprocessor/expr_if.hpp>
-#include <cutl/details/boost/preprocessor/inc.hpp>
-#include <cutl/details/boost/preprocessor/cat.hpp>
-
-#if !defined(AUX778076_COUNT_ARGS_PARAM_NAME)
-# define AUX778076_COUNT_ARGS_PARAM_NAME T
-#endif
-
-#if !defined(AUX778076_COUNT_ARGS_TEMPLATE_PARAM)
-# define AUX778076_COUNT_ARGS_TEMPLATE_PARAM typename AUX778076_COUNT_ARGS_PARAM_NAME
-#endif
-
-// local macros, #undef-ined at the end of the header
-
-#if !defined(AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES)
-
-# include <cutl/details/boost/mpl/aux_/preprocessor/repeat.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-
-# define AUX778076_COUNT_ARGS_REPEAT BOOST_MPL_PP_REPEAT
-# define AUX778076_COUNT_ARGS_PARAMS(param) \
- BOOST_MPL_PP_PARAMS( \
- AUX778076_COUNT_ARGS_ARITY \
- , param \
- ) \
- /**/
-
-#else
-
-# include <cutl/details/boost/preprocessor/enum_shifted_params.hpp>
-# include <cutl/details/boost/preprocessor/repeat.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-
-# define AUX778076_COUNT_ARGS_REPEAT BOOST_PP_REPEAT
-# define AUX778076_COUNT_ARGS_PARAMS(param) \
- BOOST_PP_ENUM_SHIFTED_PARAMS( \
- BOOST_PP_INC(AUX778076_COUNT_ARGS_ARITY) \
- , param \
- ) \
- /**/
-
-#endif // AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES
-
-
-#define AUX778076_IS_ARG_TEMPLATE_NAME \
- BOOST_PP_CAT(is_,BOOST_PP_CAT(AUX778076_COUNT_ARGS_PREFIX,_arg)) \
-/**/
-
-#define AUX778076_COUNT_ARGS_FUNC(unused, i, param) \
- BOOST_PP_EXPR_IF(i, +) \
- AUX778076_IS_ARG_TEMPLATE_NAME<BOOST_PP_CAT(param,BOOST_PP_INC(i))>::value \
-/**/
-
-// is_<xxx>_arg
-template< AUX778076_COUNT_ARGS_TEMPLATE_PARAM >
-struct AUX778076_IS_ARG_TEMPLATE_NAME
-{
- BOOST_STATIC_CONSTANT(bool, value = true);
-};
-
-template<>
-struct AUX778076_IS_ARG_TEMPLATE_NAME<AUX778076_COUNT_ARGS_DEFAULT>
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-// <xxx>_count_args
-template<
- AUX778076_COUNT_ARGS_PARAMS(AUX778076_COUNT_ARGS_TEMPLATE_PARAM)
- >
-struct BOOST_PP_CAT(AUX778076_COUNT_ARGS_PREFIX,_count_args)
-{
- BOOST_STATIC_CONSTANT(int, value = AUX778076_COUNT_ARGS_REPEAT(
- AUX778076_COUNT_ARGS_ARITY
- , AUX778076_COUNT_ARGS_FUNC
- , AUX778076_COUNT_ARGS_PARAM_NAME
- ));
-};
-
-#undef AUX778076_COUNT_ARGS_FUNC
-#undef AUX778076_IS_ARG_TEMPLATE_NAME
-#undef AUX778076_COUNT_ARGS_PARAMS
-#undef AUX778076_COUNT_ARGS_REPEAT
-
-#undef AUX778076_COUNT_ARGS_ARITY
-#undef AUX778076_COUNT_ARGS_DEFAULT
-#undef AUX778076_COUNT_ARGS_PREFIX
-#undef AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES
-#undef AUX778076_COUNT_ARGS_TEMPLATE_PARAM
-#undef AUX778076_COUNT_ARGS_PARAM_NAME
diff --git a/libcutl/cutl/details/boost/mpl/aux_/full_lambda.hpp b/libcutl/cutl/details/boost/mpl/aux_/full_lambda.hpp
deleted file mode 100644
index 815768c..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/full_lambda.hpp
+++ /dev/null
@@ -1,354 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
-#define BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: full_lambda.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/lambda_fwd.hpp>
-# include <cutl/details/boost/mpl/bind_fwd.hpp>
-# include <cutl/details/boost/mpl/protect.hpp>
-# include <cutl/details/boost/mpl/quote.hpp>
-# include <cutl/details/boost/mpl/arg.hpp>
-# include <cutl/details/boost/mpl/bool.hpp>
-# include <cutl/details/boost/mpl/int_fwd.hpp>
-# include <cutl/details/boost/mpl/aux_/template_arity.hpp>
-# include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-# include <cutl/details/boost/mpl/aux_/config/ttp.hpp>
-# if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
-# include <cutl/details/boost/mpl/if.hpp>
-# endif
-#endif
-
-#include <cutl/details/boost/mpl/aux_/lambda_arity_param.hpp>
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER full_lambda.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/enum.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/repeat.hpp>
-# include <cutl/details/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
-
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-// local macros, #undef-ined at the end of the header
-# define AUX778076_LAMBDA_PARAMS(i_, param) \
- BOOST_MPL_PP_PARAMS(i_, param) \
- /**/
-
-# define AUX778076_BIND_PARAMS(param) \
- BOOST_MPL_PP_PARAMS( \
- BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
- , param \
- ) \
- /**/
-
-# define AUX778076_BIND_N_PARAMS(i_, param) \
- BOOST_PP_COMMA_IF(i_) \
- BOOST_MPL_PP_PARAMS(i_, param) \
- /**/
-
-# define AUX778076_ARITY_PARAM(param) \
- BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) \
- /**/
-
-
-#define n_ BOOST_MPL_LIMIT_METAFUNCTION_ARITY
-namespace aux {
-
-template<
- BOOST_MPL_PP_DEFAULT_PARAMS(n_,bool C,false)
- >
-struct lambda_or
- : true_
-{
-};
-
-template<>
-struct lambda_or< BOOST_MPL_PP_ENUM(n_,false) >
- : false_
-{
-};
-
-} // namespace aux
-#undef n_
-
-template<
- typename T
- , typename Tag
- AUX778076_ARITY_PARAM(typename Arity)
- >
-struct lambda
-{
- typedef false_ is_le;
- typedef T result_;
- typedef T type;
-};
-
-template<
- typename T
- >
-struct is_lambda_expression
- : lambda<T>::is_le
-{
-};
-
-
-template< int N, typename Tag >
-struct lambda< arg<N>,Tag AUX778076_ARITY_PARAM(int_<-1>) >
-{
- typedef true_ is_le;
- typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
- typedef mpl::protect<result_> type;
-};
-
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <cutl/details/boost/mpl/aux_/full_lambda.hpp>))
-#include BOOST_PP_ITERATE()
-
-/// special case for 'protect'
-template< typename T, typename Tag >
-struct lambda< mpl::protect<T>,Tag AUX778076_ARITY_PARAM(int_<1>) >
-{
- typedef false_ is_le;
- typedef mpl::protect<T> result_;
- typedef result_ type;
-};
-
-/// specializations for the main 'bind' form
-template<
- typename F, AUX778076_BIND_PARAMS(typename T)
- , typename Tag
- >
-struct lambda<
- bind<F,AUX778076_BIND_PARAMS(T)>
- , Tag
- AUX778076_ARITY_PARAM(int_<BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)>)
- >
-{
- typedef false_ is_le;
- typedef bind<F, AUX778076_BIND_PARAMS(T)> result_;
- typedef result_ type;
-};
-
-
-#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
-
-template<
- typename F
- , typename Tag1
- , typename Tag2
- , typename Arity
- >
-struct lambda<
- lambda<F,Tag1,Arity>
- , Tag2
- , int_<3>
- >
-{
- typedef lambda< F,Tag2 > l1;
- typedef lambda< Tag1,Tag2 > l2;
-
- typedef typename l1::is_le is_le;
- typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
- typedef lambda< typename if_<is_le,arity_,Arity>::type,Tag2 > l3;
-
- typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
- typedef typename le_result_::result_ result_;
- typedef typename le_result_::type type;
-};
-
-#elif !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
-
-/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
-template<
- typename F, typename Tag1, typename Tag2
- >
-struct lambda<
- lambda< F,Tag1 >
- , Tag2
- >
-{
- typedef lambda< F,Tag2 > l1;
- typedef lambda< Tag1,Tag2 > l2;
-
- typedef typename l1::is_le is_le;
- typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
- typedef typename le_result_::result_ result_;
- typedef typename le_result_::type type;
-};
-
-#endif
-
-# undef AUX778076_ARITY_PARAM
-# undef AUX778076_BIND_N_PARAMS
-# undef AUX778076_BIND_PARAMS
-# undef AUX778076_LAMBDA_PARAMS
-
-#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
-BOOST_MPL_AUX_NA_SPEC(2, lambda)
-#else
-BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
-#endif
-
-}}
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
-
-///// iteration, depth == 1
-
-// For gcc 4.4 compatability, we must include the
-// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
-#else // BOOST_PP_IS_ITERATING
-#if BOOST_PP_ITERATION_DEPTH() == 1
-#define i_ BOOST_PP_FRAME_ITERATION(1)
-
-#if i_ > 0
-
-namespace aux {
-
-# define AUX778076_RESULT(unused, i_, T) \
- BOOST_PP_COMMA_IF(i_) \
- typename BOOST_PP_CAT(T, BOOST_PP_INC(i_))::result_ \
- /**/
-
-# define AUX778076_TYPE(unused, i_, T) \
- BOOST_PP_COMMA_IF(i_) \
- typename BOOST_PP_CAT(T, BOOST_PP_INC(i_))::type \
- /**/
-
-template<
- typename IsLE, typename Tag
- , template< AUX778076_LAMBDA_PARAMS(i_, typename P) > class F
- , AUX778076_LAMBDA_PARAMS(i_, typename L)
- >
-struct BOOST_PP_CAT(le_result,i_)
-{
- typedef F<
- BOOST_MPL_PP_REPEAT(i_, AUX778076_TYPE, L)
- > result_;
-
- typedef result_ type;
-};
-
-template<
- typename Tag
- , template< AUX778076_LAMBDA_PARAMS(i_, typename P) > class F
- , AUX778076_LAMBDA_PARAMS(i_, typename L)
- >
-struct BOOST_PP_CAT(le_result,i_)< true_,Tag,F,AUX778076_LAMBDA_PARAMS(i_, L) >
-{
- typedef BOOST_PP_CAT(bind,i_)<
- BOOST_PP_CAT(quote,i_)<F,Tag>
- , BOOST_MPL_PP_REPEAT(i_, AUX778076_RESULT, L)
- > result_;
-
- typedef mpl::protect<result_> type;
-};
-
-# undef AUX778076_TYPE
-# undef AUX778076_RESULT
-
-} // namespace aux
-
-
-# define AUX778076_LAMBDA_TYPEDEF(unused, i_, T) \
- typedef lambda< BOOST_PP_CAT(T, BOOST_PP_INC(i_)), Tag > \
- BOOST_PP_CAT(l,BOOST_PP_INC(i_)); \
-/**/
-
-# define AUX778076_IS_LE_TYPEDEF(unused, i_, unused2) \
- typedef typename BOOST_PP_CAT(l,BOOST_PP_INC(i_))::is_le \
- BOOST_PP_CAT(is_le,BOOST_PP_INC(i_)); \
-/**/
-
-# define AUX778076_IS_LAMBDA_EXPR(unused, i_, unused2) \
- BOOST_PP_COMMA_IF(i_) \
- BOOST_PP_CAT(is_le,BOOST_PP_INC(i_))::value \
-/**/
-
-template<
- template< AUX778076_LAMBDA_PARAMS(i_, typename P) > class F
- , AUX778076_LAMBDA_PARAMS(i_, typename T)
- , typename Tag
- >
-struct lambda<
- F<AUX778076_LAMBDA_PARAMS(i_, T)>
- , Tag
- AUX778076_ARITY_PARAM(int_<i_>)
- >
-{
- BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_TYPEDEF, T)
- BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LE_TYPEDEF, unused)
-
- typedef typename aux::lambda_or<
- BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LAMBDA_EXPR, unused)
- >::type is_le;
-
- typedef aux::BOOST_PP_CAT(le_result,i_)<
- is_le, Tag, F, AUX778076_LAMBDA_PARAMS(i_, l)
- > le_result_;
-
- typedef typename le_result_::result_ result_;
- typedef typename le_result_::type type;
-};
-
-
-# undef AUX778076_IS_LAMBDA_EXPR
-# undef AUX778076_IS_LE_TYPEDEF
-# undef AUX778076_LAMBDA_TYPEDEF
-
-#endif // i_ > 0
-
-template<
- typename F AUX778076_BIND_N_PARAMS(i_, typename T)
- , typename Tag
- >
-struct lambda<
- BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_, T)>
- , Tag
- AUX778076_ARITY_PARAM(int_<BOOST_PP_INC(i_)>)
- >
-{
- typedef false_ is_le;
- typedef BOOST_PP_CAT(bind,i_)<
- F
- AUX778076_BIND_N_PARAMS(i_, T)
- > result_;
-
- typedef result_ type;
-};
-
-#undef i_
-#endif // BOOST_PP_ITERATION_DEPTH()
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/aux_/has_apply.hpp b/libcutl/cutl/details/boost/mpl/aux_/has_apply.hpp
deleted file mode 100644
index 80c4b48..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/has_apply.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
-#define BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: has_apply.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/has_xxx.hpp>
-#include <cutl/details/boost/mpl/aux_/config/has_apply.hpp>
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-#if !defined(BOOST_MPL_CFG_NO_HAS_APPLY)
-BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_apply, apply, false)
-#else
-template< typename T, typename fallback_ = false_ >
-struct has_apply
- : fallback_
-{
-};
-#endif
-}}}
-
-#endif // BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/has_rebind.hpp b/libcutl/cutl/details/boost/mpl/aux_/has_rebind.hpp
deleted file mode 100644
index 910b671..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/has_rebind.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
-#define BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: has_rebind.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/intel.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION)
-# include <cutl/details/boost/mpl/has_xxx.hpp>
-#elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-# include <cutl/details/boost/mpl/has_xxx.hpp>
-# include <cutl/details/boost/mpl/if.hpp>
-# include <cutl/details/boost/mpl/bool.hpp>
-# include <cutl/details/boost/mpl/aux_/msvc_is_class.hpp>
-#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
-# include <cutl/details/boost/mpl/if.hpp>
-# include <cutl/details/boost/mpl/bool.hpp>
-# include <cutl/details/boost/mpl/aux_/yes_no.hpp>
-# include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-# include <cutl/details/boost/type_traits/is_class.hpp>
-#else
-# include <cutl/details/boost/mpl/aux_/type_wrapper.hpp>
-# include <cutl/details/boost/mpl/aux_/yes_no.hpp>
-# include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-#endif
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION)
-
-BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind, rebind, false)
-
-#elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-
-BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind_impl, rebind, false)
-
-template< typename T >
-struct has_rebind
- : if_<
- msvc_is_class<T>
- , has_rebind_impl<T>
- , bool_<false>
- >::type
-{
-};
-
-#else // the rest
-
-template< typename T > struct has_rebind_tag {};
-no_tag operator|(has_rebind_tag<int>, void const volatile*);
-
-# if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
-template< typename T >
-struct has_rebind
-{
- static has_rebind_tag<T>* get();
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof(has_rebind_tag<int>() | get()) == sizeof(yes_tag)
- );
-};
-# else // __BORLANDC__
-template< typename T >
-struct has_rebind_impl
-{
- static T* get();
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof(has_rebind_tag<int>() | get()) == sizeof(yes_tag)
- );
-};
-
-template< typename T >
-struct has_rebind
- : if_<
- is_class<T>
- , has_rebind_impl<T>
- , bool_<false>
- >::type
-{
-};
-# endif // __BORLANDC__
-
-#endif
-
-}}}
-
-#endif // BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/has_type.hpp b/libcutl/cutl/details/boost/mpl/aux_/has_type.hpp
deleted file mode 100644
index ac9071f..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/has_type.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
-#define BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: has_type.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/has_xxx.hpp>
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_type, type, true)
-}}}
-
-#endif // BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/include_preprocessed.hpp b/libcutl/cutl/details/boost/mpl/aux_/include_preprocessed.hpp
deleted file mode 100644
index 8d01268..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/include_preprocessed.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
-
-// Copyright Aleksey Gurtovoy 2000-2006
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: include_preprocessed.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/compiler.hpp>
-#include <cutl/details/boost/mpl/aux_/config/preprocessor.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-#include <cutl/details/boost/preprocessor/cat.hpp>
-#include <cutl/details/boost/preprocessor/stringize.hpp>
-
-#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
-# define AUX778076_PREPROCESSED_HEADER \
- BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER \
-/**/
-#else
-# define AUX778076_PREPROCESSED_HEADER \
- BOOST_PP_CAT(BOOST_MPL_CFG_COMPILER_DIR,/)##BOOST_MPL_PREPROCESSED_HEADER \
-/**/
-#endif
-
-#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700))
-# define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(boost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
-# include AUX778076_INCLUDE_STRING
-# undef AUX778076_INCLUDE_STRING
-#else
-# include BOOST_PP_STRINGIZE(boost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
-#endif
-
-# undef AUX778076_PREPROCESSED_HEADER
-
-#undef BOOST_MPL_PREPROCESSED_HEADER
diff --git a/libcutl/cutl/details/boost/mpl/aux_/integral_wrapper.hpp b/libcutl/cutl/details/boost/mpl/aux_/integral_wrapper.hpp
deleted file mode 100644
index 7c8b596..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/integral_wrapper.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-
-// Copyright Aleksey Gurtovoy 2000-2006
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: integral_wrapper.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
-
-#include <cutl/details/boost/mpl/integral_c_tag.hpp>
-#include <cutl/details/boost/mpl/aux_/static_cast.hpp>
-#include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#include <cutl/details/boost/preprocessor/cat.hpp>
-
-#if !defined(AUX_WRAPPER_NAME)
-# define AUX_WRAPPER_NAME BOOST_PP_CAT(AUX_WRAPPER_VALUE_TYPE,_)
-#endif
-
-#if !defined(AUX_WRAPPER_PARAMS)
-# define AUX_WRAPPER_PARAMS(N) BOOST_MPL_AUX_NTTP_DECL(AUX_WRAPPER_VALUE_TYPE, N)
-#endif
-
-#if !defined(AUX_WRAPPER_INST)
-# if BOOST_WORKAROUND(__MWERKS__, <= 0x2407)
-# define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< value >
-# else
-# define AUX_WRAPPER_INST(value) BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::AUX_WRAPPER_NAME< value >
-# endif
-#endif
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-template< AUX_WRAPPER_PARAMS(N) >
-struct AUX_WRAPPER_NAME
-{
- BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, value = N);
-// agurt, 08/mar/03: SGI MIPSpro C++ workaround, have to #ifdef because some
-// other compilers (e.g. MSVC) are not particulary happy about it
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
- typedef struct AUX_WRAPPER_NAME type;
-#else
- typedef AUX_WRAPPER_NAME type;
-#endif
- typedef AUX_WRAPPER_VALUE_TYPE value_type;
- typedef integral_c_tag tag;
-
-// have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC),
-// while some other don't like 'value + 1' (Borland), and some don't like
-// either
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
- private:
- BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
- BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));
- public:
- typedef AUX_WRAPPER_INST(next_value) next;
- typedef AUX_WRAPPER_INST(prior_value) prior;
-#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
- || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
- || (BOOST_WORKAROUND(__HP_aCC, <= 53800) && (BOOST_WORKAROUND(__hpxstd98, != 1)))
- typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)) ) next;
- typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)) ) prior;
-#else
- typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value + 1)) ) next;
- typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
-#endif
-
- // enables uniform function call syntax for families of overloaded
- // functions that return objects of both arithmetic ('int', 'long',
- // 'double', etc.) and wrapped integral types (for an example, see
- // "mpl/example/power.cpp")
- operator AUX_WRAPPER_VALUE_TYPE() const { return static_cast<AUX_WRAPPER_VALUE_TYPE>(this->value); }
-};
-
-#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
-template< AUX_WRAPPER_PARAMS(N) >
-AUX_WRAPPER_VALUE_TYPE const AUX_WRAPPER_INST(N)::value;
-#endif
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-
-#undef AUX_WRAPPER_NAME
-#undef AUX_WRAPPER_PARAMS
-#undef AUX_WRAPPER_INST
-#undef AUX_WRAPPER_VALUE_TYPE
diff --git a/libcutl/cutl/details/boost/mpl/aux_/lambda_arity_param.hpp b/libcutl/cutl/details/boost/mpl/aux_/lambda_arity_param.hpp
deleted file mode 100644
index 9a58209..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/lambda_arity_param.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
-#define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: lambda_arity_param.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/ttp.hpp>
-
-#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
-# define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param)
-#else
-# define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) , param
-#endif
-
-#endif // BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/lambda_no_ctps.hpp b/libcutl/cutl/details/boost/mpl/aux_/lambda_no_ctps.hpp
deleted file mode 100644
index 8805705..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/lambda_no_ctps.hpp
+++ /dev/null
@@ -1,193 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
-#define BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: lambda_no_ctps.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/lambda_fwd.hpp>
-# include <cutl/details/boost/mpl/bind_fwd.hpp>
-# include <cutl/details/boost/mpl/protect.hpp>
-# include <cutl/details/boost/mpl/is_placeholder.hpp>
-# include <cutl/details/boost/mpl/if.hpp>
-# include <cutl/details/boost/mpl/identity.hpp>
-# include <cutl/details/boost/mpl/bool.hpp>
-# include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-# include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-# include <cutl/details/boost/mpl/aux_/template_arity.hpp>
-# include <cutl/details/boost/mpl/aux_/value_wknd.hpp>
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER lambda_no_ctps.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/repeat.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/enum.hpp>
-# include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-# include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-# define AUX778076_LAMBDA_PARAMS(i_, param) \
- BOOST_MPL_PP_PARAMS(i_, param) \
- /**/
-
-namespace aux {
-
-#define n_ BOOST_MPL_LIMIT_METAFUNCTION_ARITY
-template<
- BOOST_MPL_PP_DEFAULT_PARAMS(n_,bool C,false)
- >
-struct lambda_or
- : true_
-{
-};
-
-template<>
-struct lambda_or< BOOST_MPL_PP_ENUM(n_,false) >
- : false_
-{
-};
-#undef n_
-
-template< typename Arity > struct lambda_impl
-{
- template< typename T, typename Tag, typename Protect > struct result_
- {
- typedef T type;
- typedef is_placeholder<T> is_le;
- };
-};
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <cutl/details/boost/mpl/aux_/lambda_no_ctps.hpp>))
-#include BOOST_PP_ITERATE()
-
-} // namespace aux
-
-template<
- typename T
- , typename Tag
- , typename Protect
- >
-struct lambda
-{
- /// Metafunction forwarding confuses MSVC 6.x
- typedef typename aux::template_arity<T>::type arity_;
- typedef typename aux::lambda_impl<arity_>
- ::template result_< T,Tag,Protect > l_;
-
- typedef typename l_::type type;
- typedef typename l_::is_le is_le;
-
- BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
-};
-
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
-
-template<
- typename T
- >
-struct is_lambda_expression
- : lambda<T>::is_le
-{
-};
-
-# undef AUX778076_LAMBDA_PARAMS
-
-}}
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
-
-///// iteration, depth == 1
-
-#else
-
-#define i_ BOOST_PP_FRAME_ITERATION(1)
-
-# define AUX778076_LAMBDA_TYPEDEF(unused, i_, F) \
- typedef lambda< \
- typename F::BOOST_PP_CAT(arg,BOOST_PP_INC(i_)) \
- , Tag \
- , false_ \
- > BOOST_PP_CAT(l,BOOST_PP_INC(i_)); \
- /**/
-
-# define AUX778076_IS_LE_TYPEDEF(unused, i_, unused2) \
- typedef typename BOOST_PP_CAT(l,BOOST_PP_INC(i_))::is_le \
- BOOST_PP_CAT(is_le,BOOST_PP_INC(i_)); \
- /**/
-
-# define AUX778076_IS_LAMBDA_EXPR(unused, i_, unused2) \
- BOOST_PP_COMMA_IF(i_) \
- BOOST_MPL_AUX_MSVC_VALUE_WKND(BOOST_PP_CAT(is_le,BOOST_PP_INC(i_)))::value \
- /**/
-
-# define AUX778076_LAMBDA_RESULT(unused, i_, unused2) \
- , typename BOOST_PP_CAT(l,BOOST_PP_INC(i_))::type \
- /**/
-
-template<> struct lambda_impl< int_<i_> >
-{
- template< typename F, typename Tag, typename Protect > struct result_
- {
- BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_TYPEDEF, F)
- BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LE_TYPEDEF, unused)
-
- typedef aux::lambda_or<
- BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LAMBDA_EXPR, unused)
- > is_le;
-
- typedef BOOST_PP_CAT(bind,i_)<
- typename F::rebind
- BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_RESULT, unused)
- > bind_;
-
- typedef typename if_<
- is_le
- , if_< Protect, mpl::protect<bind_>, bind_ >
- , identity<F>
- >::type type_;
-
- typedef typename type_::type type;
- };
-};
-
-# undef AUX778076_LAMBDA_RESULT
-# undef AUX778076_IS_LAMBDA_EXPR
-# undef AUX778076_IS_LE_TYPEDEF
-# undef AUX778076_LAMBDA_TYPEDEF
-
-#undef i_
-
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/aux_/lambda_support.hpp b/libcutl/cutl/details/boost/mpl/aux_/lambda_support.hpp
deleted file mode 100644
index 15de4d9..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/lambda_support.hpp
+++ /dev/null
@@ -1,169 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
-#define BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: lambda_support.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/lambda.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
-
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) /**/
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params) /**/
-
-#else
-
-# include <cutl/details/boost/mpl/int_fwd.hpp>
-# include <cutl/details/boost/mpl/aux_/yes_no.hpp>
-# include <cutl/details/boost/mpl/aux_/na_fwd.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/enum.hpp>
-# include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-# include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-# include <cutl/details/boost/preprocessor/tuple/to_list.hpp>
-# include <cutl/details/boost/preprocessor/list/for_each_i.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC(R,typedef_,i,param) \
- typedef_ param BOOST_PP_CAT(arg,BOOST_PP_INC(i)); \
- /**/
-
-// agurt, 07/mar/03: restore an old revision for the sake of SGI MIPSpro C++
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
-
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
- typedef BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
- BOOST_PP_LIST_FOR_EACH_I_R( \
- 1 \
- , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
- , typedef \
- , BOOST_PP_TUPLE_TO_LIST(i,params) \
- ) \
- struct rebind \
- { \
- template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
- : name< BOOST_MPL_PP_PARAMS(i,U) > \
- { \
- }; \
- }; \
- /**/
-
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
- /**/
-
-#elif BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION)
-// agurt, 18/jan/03: old EDG-based compilers actually enforce 11.4 para 9
-// (in strict mode), so we have to provide an alternative to the
-// MSVC-optimized implementation
-
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
- typedef BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
- BOOST_PP_LIST_FOR_EACH_I_R( \
- 1 \
- , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
- , typedef \
- , BOOST_PP_TUPLE_TO_LIST(i,params) \
- ) \
- struct rebind; \
-/**/
-
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
-}; \
-template< BOOST_MPL_PP_PARAMS(i,typename T) > \
-struct name<BOOST_MPL_PP_PARAMS(i,T)>::rebind \
-{ \
- template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
- : name< BOOST_MPL_PP_PARAMS(i,U) > \
- { \
- }; \
-/**/
-
-#else // __EDG_VERSION__
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-template< typename T > struct has_rebind_tag;
-}}}
-
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
- typedef BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
- BOOST_PP_LIST_FOR_EACH_I_R( \
- 1 \
- , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
- , typedef \
- , BOOST_PP_TUPLE_TO_LIST(i,params) \
- ) \
- friend class BOOST_PP_CAT(name,_rebind); \
- typedef BOOST_PP_CAT(name,_rebind) rebind; \
-/**/
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
-template< BOOST_MPL_PP_PARAMS(i,typename T) > \
-::cutl_details_boost::mpl::aux::yes_tag operator|( \
- ::cutl_details_boost::mpl::aux::has_rebind_tag<int> \
- , name<BOOST_MPL_PP_PARAMS(i,T)>* \
- ); \
-::cutl_details_boost::mpl::aux::no_tag operator|( \
- ::cutl_details_boost::mpl::aux::has_rebind_tag<int> \
- , name< BOOST_MPL_PP_ENUM(i,::cutl_details_boost::mpl::na) >* \
- ); \
-/**/
-#elif !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
-template< BOOST_MPL_PP_PARAMS(i,typename T) > \
-::cutl_details_boost::mpl::aux::yes_tag operator|( \
- ::cutl_details_boost::mpl::aux::has_rebind_tag<int> \
- , ::cutl_details_boost::mpl::aux::has_rebind_tag< name<BOOST_MPL_PP_PARAMS(i,T)> >* \
- ); \
-/**/
-#else
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) /**/
-#endif
-
-# if !defined(__BORLANDC__)
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
-}; \
-BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
-class BOOST_PP_CAT(name,_rebind) \
-{ \
- public: \
- template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
- : name< BOOST_MPL_PP_PARAMS(i,U) > \
- { \
- }; \
-/**/
-# else
-# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
-}; \
-BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
-class BOOST_PP_CAT(name,_rebind) \
-{ \
- public: \
- template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
- { \
- typedef typename name< BOOST_MPL_PP_PARAMS(i,U) >::type type; \
- }; \
-/**/
-# endif // __BORLANDC__
-
-#endif // __EDG_VERSION__
-
-#endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
-
-#endif // BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/logical_op.hpp b/libcutl/cutl/details/boost/mpl/aux_/logical_op.hpp
deleted file mode 100644
index 5f01b40..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/logical_op.hpp
+++ /dev/null
@@ -1,165 +0,0 @@
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: logical_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/bool.hpp>
-# include <cutl/details/boost/mpl/aux_/nested_type_wknd.hpp>
-# include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-# include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-#endif
-
-#include <cutl/details/boost/mpl/limits/arity.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/ext_params.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/def_params_tail.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/enum.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/sub.hpp>
-#include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#include <cutl/details/boost/preprocessor/dec.hpp>
-#include <cutl/details/boost/preprocessor/inc.hpp>
-#include <cutl/details/boost/preprocessor/cat.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-# define AUX778076_PARAMS(param, sub) \
- BOOST_MPL_PP_PARAMS( \
- BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY, sub) \
- , param \
- ) \
- /**/
-
-# define AUX778076_SHIFTED_PARAMS(param, sub) \
- BOOST_MPL_PP_EXT_PARAMS( \
- 2, BOOST_MPL_PP_SUB(BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY), sub) \
- , param \
- ) \
- /**/
-
-# define AUX778076_SPEC_PARAMS(param) \
- BOOST_MPL_PP_ENUM( \
- BOOST_PP_DEC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
- , param \
- ) \
- /**/
-
-namespace aux {
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-template< bool C_, AUX778076_PARAMS(typename T, 1) >
-struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)
- : BOOST_PP_CAT(AUX778076_OP_VALUE1,_)
-{
-};
-
-template< AUX778076_PARAMS(typename T, 1) >
-struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)< AUX778076_OP_VALUE2,AUX778076_PARAMS(T, 1) >
- : BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
- BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
- , AUX778076_SHIFTED_PARAMS(T, 1)
- , BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
- >
-{
-};
-
-template<>
-struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
- AUX778076_OP_VALUE2
- , AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_))
- >
- : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
-{
-};
-
-#else
-
-template< bool C_ > struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)
-{
- template< AUX778076_PARAMS(typename T, 1) > struct result_
- : BOOST_PP_CAT(AUX778076_OP_VALUE1,_)
- {
- };
-};
-
-template<> struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<AUX778076_OP_VALUE2>
-{
- template< AUX778076_PARAMS(typename T, 1) > struct result_
- : BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
- BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
- >::template result_< AUX778076_SHIFTED_PARAMS(T,1),BOOST_PP_CAT(AUX778076_OP_VALUE2,_) >
- {
- };
-
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
- template<> struct result_<AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_))>
- : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
- {
- };
-};
-#else
-};
-
-template<>
-struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<AUX778076_OP_VALUE2>
- ::result_< AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_)) >
- : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
-{
-};
-#endif // BOOST_MSVC == 1300
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace aux
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(T1)
- , typename BOOST_MPL_AUX_NA_PARAM(T2)
- BOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename T, BOOST_PP_CAT(AUX778076_OP_VALUE2,_))
- >
-struct AUX778076_OP_NAME
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- : aux::BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
- BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
- , AUX778076_SHIFTED_PARAMS(T,0)
- >
-#else
- : aux::BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
- BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
- >::template result_< AUX778076_SHIFTED_PARAMS(T,0) >
-#endif
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(
- BOOST_MPL_LIMIT_METAFUNCTION_ARITY
- , AUX778076_OP_NAME
- , (AUX778076_PARAMS(T, 0))
- )
-};
-
-BOOST_MPL_AUX_NA_SPEC2(
- 2
- , BOOST_MPL_LIMIT_METAFUNCTION_ARITY
- , AUX778076_OP_NAME
- )
-
-}}
-
-#undef AUX778076_SPEC_PARAMS
-#undef AUX778076_SHIFTED_PARAMS
-#undef AUX778076_PARAMS
-#undef AUX778076_OP_NAME
-#undef AUX778076_OP_VALUE1
-#undef AUX778076_OP_VALUE2
diff --git a/libcutl/cutl/details/boost/mpl/aux_/msvc_dtw.hpp b/libcutl/cutl/details/boost/mpl/aux_/msvc_dtw.hpp
deleted file mode 100644
index 5ce0de5..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/msvc_dtw.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: msvc_dtw.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
-
-#include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-
-// local macros, #undef-ined at the end of the header
-#define AUX778076_DTW_PARAMS(param) \
- BOOST_MPL_PP_PARAMS(AUX778076_MSVC_DTW_ARITY, param) \
-/**/
-
-#define AUX778076_DTW_ORIGINAL_NAME \
- AUX778076_MSVC_DTW_ORIGINAL_NAME \
-/**/
-
-// warning: not a well-formed C++
-// workaround for MSVC 6.5's "dependent template typedef bug"
-
-template< typename F>
-struct AUX778076_MSVC_DTW_NAME
-{
- template< bool > struct f_ : F {};
- template<> struct f_<true>
- {
-#if AUX778076_MSVC_DTW_ARITY > 0
- template< AUX778076_DTW_PARAMS(typename P) > struct AUX778076_DTW_ORIGINAL_NAME
- {
- typedef int type;
- };
- };
-
- template< AUX778076_DTW_PARAMS(typename T) > struct result_
- : f_< aux::msvc_never_true<F>::value >
- ::template AUX778076_DTW_ORIGINAL_NAME< AUX778076_DTW_PARAMS(T) >
- {
- };
-#else
- template< typename P = int > struct AUX778076_DTW_ORIGINAL_NAME
- {
- typedef int type;
- };
- };
-
- template< typename T = int > struct result_
- : f_< aux::msvc_never_true<F>::value >
- ::template AUX778076_DTW_ORIGINAL_NAME<>
- {
- };
-#endif
-};
-
-#undef AUX778076_DTW_ORIGINAL_NAME
-#undef AUX778076_DTW_PARAMS
-
-#undef AUX778076_MSVC_DTW_NAME
-#undef AUX778076_MSVC_DTW_ORIGINAL_NAME
-#undef AUX778076_MSVC_DTW_ARITY
diff --git a/libcutl/cutl/details/boost/mpl/aux_/msvc_is_class.hpp b/libcutl/cutl/details/boost/mpl/aux_/msvc_is_class.hpp
deleted file mode 100644
index 17da363..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/msvc_is_class.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
-#define BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: msvc_is_class.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/if.hpp>
-#include <cutl/details/boost/mpl/bool.hpp>
-#include <cutl/details/boost/mpl/aux_/type_wrapper.hpp>
-#include <cutl/details/boost/mpl/aux_/yes_no.hpp>
-
-#include <cutl/details/boost/type_traits/is_reference.hpp>
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-template< typename T > struct is_class_helper
-{
- typedef int (T::* type)();
-};
-
-// MSVC 6.x-specific lightweight 'is_class' implementation;
-// Distinguishing feature: does not instantiate the type being tested.
-template< typename T >
-struct msvc_is_class_impl
-{
- template< typename U>
- static yes_tag test(type_wrapper<U>*, /*typename*/ is_class_helper<U>::type = 0);
- static no_tag test(void const volatile*, ...);
-
- enum { value = sizeof(test((type_wrapper<T>*)0)) == sizeof(yes_tag) };
- typedef bool_<value> type;
-};
-
-// agurt, 17/sep/04: have to check for 'is_reference' upfront to avoid ICEs in
-// complex metaprograms
-template< typename T >
-struct msvc_is_class
- : if_<
- is_reference<T>
- , false_
- , msvc_is_class_impl<T>
- >::type
-{
-};
-
-}}}
-
-#endif // BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/msvc_never_true.hpp b/libcutl/cutl/details/boost/mpl/aux_/msvc_never_true.hpp
deleted file mode 100644
index d623eaf..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/msvc_never_true.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
-#define BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: msvc_never_true.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-template< typename T >
-struct msvc_never_true
-{
- enum { value = false };
-};
-
-}}}
-
-#endif // BOOST_MSVC
-
-#endif // BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/na.hpp b/libcutl/cutl/details/boost/mpl/aux_/na.hpp
deleted file mode 100644
index efbd9bc..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/na.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_NA_HPP_INCLUDED
-#define BOOST_MPL_AUX_NA_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: na.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/bool.hpp>
-#include <cutl/details/boost/mpl/aux_/na_fwd.hpp>
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-template< typename T >
-struct is_na
- : false_
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- using false_::value;
-#endif
-};
-
-template<>
-struct is_na<na>
- : true_
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- using true_::value;
-#endif
-};
-
-template< typename T >
-struct is_not_na
- : true_
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- using true_::value;
-#endif
-};
-
-template<>
-struct is_not_na<na>
- : false_
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- using false_::value;
-#endif
-};
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-template< typename T, typename U > struct if_na
-{
- typedef T type;
-};
-
-template< typename U > struct if_na<na,U>
-{
- typedef U type;
-};
-#else
-template< typename T > struct if_na_impl
-{
- template< typename U > struct apply
- {
- typedef T type;
- };
-};
-
-template<> struct if_na_impl<na>
-{
- template< typename U > struct apply
- {
- typedef U type;
- };
-};
-
-template< typename T, typename U > struct if_na
- : if_na_impl<T>::template apply<U>
-{
-};
-#endif
-
-}}
-
-#endif // BOOST_MPL_AUX_NA_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/na_assert.hpp b/libcutl/cutl/details/boost/mpl/aux_/na_assert.hpp
deleted file mode 100644
index 01c4393..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/na_assert.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
-#define BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: na_assert.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/na.hpp>
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if !BOOST_WORKAROUND(_MSC_FULL_VER, <= 140050601) \
- && !BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
-# include <cutl/details/boost/mpl/assert.hpp>
-# define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
- BOOST_MPL_ASSERT_NOT((cutl_details_boost::mpl::is_na<type>)) \
-/**/
-#else
-# include <cutl/details/boost/static_assert.hpp>
-# define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
- BOOST_STATIC_ASSERT(!cutl_details_boost::mpl::is_na<x>::value) \
-/**/
-#endif
-
-#endif // BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/na_fwd.hpp b/libcutl/cutl/details/boost/mpl/aux_/na_fwd.hpp
deleted file mode 100644
index 5ffb808..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/na_fwd.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
-#define BOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: na_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/adl_barrier.hpp>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-// n.a. == not available
-struct na
-{
- typedef na type;
- enum { value = 0 };
-};
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(na)
-
-#endif // BOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/na_spec.hpp b/libcutl/cutl/details/boost/mpl/aux_/na_spec.hpp
deleted file mode 100644
index 8279b6d..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/na_spec.hpp
+++ /dev/null
@@ -1,175 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
-#define BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: na_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/lambda_fwd.hpp>
-# include <cutl/details/boost/mpl/int.hpp>
-# include <cutl/details/boost/mpl/bool.hpp>
-# include <cutl/details/boost/mpl/aux_/na.hpp>
-# include <cutl/details/boost/mpl/aux_/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/template_arity_fwd.hpp>
-#endif
-
-#include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/enum.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/def_params_tail.hpp>
-#include <cutl/details/boost/mpl/aux_/lambda_arity_param.hpp>
-#include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-#include <cutl/details/boost/mpl/aux_/config/eti.hpp>
-#include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-#include <cutl/details/boost/mpl/aux_/config/ttp.hpp>
-#include <cutl/details/boost/mpl/aux_/config/lambda.hpp>
-#include <cutl/details/boost/mpl/aux_/config/overload_resolution.hpp>
-
-
-#define BOOST_MPL_AUX_NA_PARAMS(i) \
- BOOST_MPL_PP_ENUM(i, na) \
-/**/
-
-#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-# define BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
-namespace aux { \
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) > \
-struct arity< \
- name< BOOST_MPL_AUX_NA_PARAMS(i) > \
- , N \
- > \
- : int_< BOOST_MPL_LIMIT_METAFUNCTION_ARITY > \
-{ \
-}; \
-} \
-/**/
-#else
-# define BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) /**/
-#endif
-
-#define BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
-template<> \
-struct name< BOOST_MPL_AUX_NA_PARAMS(i) > \
-{ \
- template< \
- BOOST_MPL_PP_PARAMS(i, typename T) \
- BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
- > \
- struct apply \
- : name< BOOST_MPL_PP_PARAMS(i, T) > \
- { \
- }; \
-}; \
-/**/
-
-#if defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
-# define BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
-template<> \
-struct lambda< \
- name< BOOST_MPL_AUX_NA_PARAMS(i) > \
- , void_ \
- , true_ \
- > \
-{ \
- typedef false_ is_le; \
- typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
-}; \
-template<> \
-struct lambda< \
- name< BOOST_MPL_AUX_NA_PARAMS(i) > \
- , void_ \
- , false_ \
- > \
-{ \
- typedef false_ is_le; \
- typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
-}; \
-/**/
-#else
-# define BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
-template< typename Tag > \
-struct lambda< \
- name< BOOST_MPL_AUX_NA_PARAMS(i) > \
- , Tag \
- BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<-1>) \
- > \
-{ \
- typedef false_ is_le; \
- typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > result_; \
- typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
-}; \
-/**/
-#endif
-
-#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
- || defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
- && defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION)
-# define BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) \
-namespace aux { \
-template< BOOST_MPL_PP_PARAMS(j, typename T) > \
-struct template_arity< \
- name< BOOST_MPL_PP_PARAMS(j, T) > \
- > \
- : int_<j> \
-{ \
-}; \
-\
-template<> \
-struct template_arity< \
- name< BOOST_MPL_PP_ENUM(i, na) > \
- > \
- : int_<-1> \
-{ \
-}; \
-} \
-/**/
-#else
-# define BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) /**/
-#endif
-
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
-# define BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
-template<> \
-struct name< BOOST_MPL_PP_ENUM(i, int) > \
-{ \
- typedef int type; \
- enum { value = 0 }; \
-}; \
-/**/
-#else
-# define BOOST_MPL_AUX_NA_SPEC_ETI(i, name) /**/
-#endif
-
-#define BOOST_MPL_AUX_NA_PARAM(param) param = na
-
-#define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
-BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
-BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
-BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
-BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, i, name) \
-/**/
-
-#define BOOST_MPL_AUX_NA_SPEC(i, name) \
-BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
-BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
-/**/
-
-#define BOOST_MPL_AUX_NA_SPEC2(i, j, name) \
-BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
-BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
-BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
-BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
-BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) \
-/**/
-
-
-#endif // BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/nested_type_wknd.hpp b/libcutl/cutl/details/boost/mpl/aux_/nested_type_wknd.hpp
deleted file mode 100644
index 0a8a005..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/nested_type_wknd.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
-#define BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: nested_type_wknd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/gcc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
- || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x530)) \
- || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-template< typename T > struct nested_type_wknd
- : T::type
-{
-};
-}}}
-
-#if BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-# define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) \
- aux::nested_type_wknd<T> \
-/**/
-#else
-# define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) \
- ::cutl_details_boost::mpl::aux::nested_type_wknd<T> \
-/**/
-#endif
-
-#else // !BOOST_MPL_CFG_GCC et al.
-
-# define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) T::type
-
-#endif
-
-#endif // BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/nttp_decl.hpp b/libcutl/cutl/details/boost/mpl/aux_/nttp_decl.hpp
deleted file mode 100644
index 5e6a0d7..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/nttp_decl.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
-#define BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: nttp_decl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/nttp.hpp>
-
-#if defined(BOOST_MPL_CFG_NTTP_BUG)
-
-typedef bool _mpl_nttp_bool;
-typedef int _mpl_nttp_int;
-typedef unsigned _mpl_nttp_unsigned;
-typedef long _mpl_nttp_long;
-
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# define BOOST_MPL_AUX_NTTP_DECL(T, x) BOOST_PP_CAT(_mpl_nttp_,T) x /**/
-
-#else
-
-# define BOOST_MPL_AUX_NTTP_DECL(T, x) T x /**/
-
-#endif
-
-#endif // BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/add.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/add.hpp
deleted file mode 100644
index 252afba..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/add.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: add.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/preprocessor.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
-
-# include <cutl/details/boost/mpl/aux_/preprocessor/tuple.hpp>
-
-#if defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION)
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_PP_ADD(i,j) \
- BOOST_MPL_PP_ADD_DELAY(i,j) \
- /**/
-
-# define BOOST_MPL_PP_ADD_DELAY(i,j) \
- BOOST_PP_CAT(BOOST_MPL_PP_TUPLE_11_ELEM_##i,BOOST_MPL_PP_ADD_##j) \
- /**/
-#else
-# define BOOST_MPL_PP_ADD(i,j) \
- BOOST_MPL_PP_ADD_DELAY(i,j) \
- /**/
-
-# define BOOST_MPL_PP_ADD_DELAY(i,j) \
- BOOST_MPL_PP_TUPLE_11_ELEM_##i BOOST_MPL_PP_ADD_##j \
- /**/
-#endif
-
-# define BOOST_MPL_PP_ADD_0 (0,1,2,3,4,5,6,7,8,9,10)
-# define BOOST_MPL_PP_ADD_1 (1,2,3,4,5,6,7,8,9,10,0)
-# define BOOST_MPL_PP_ADD_2 (2,3,4,5,6,7,8,9,10,0,0)
-# define BOOST_MPL_PP_ADD_3 (3,4,5,6,7,8,9,10,0,0,0)
-# define BOOST_MPL_PP_ADD_4 (4,5,6,7,8,9,10,0,0,0,0)
-# define BOOST_MPL_PP_ADD_5 (5,6,7,8,9,10,0,0,0,0,0)
-# define BOOST_MPL_PP_ADD_6 (6,7,8,9,10,0,0,0,0,0,0)
-# define BOOST_MPL_PP_ADD_7 (7,8,9,10,0,0,0,0,0,0,0)
-# define BOOST_MPL_PP_ADD_8 (8,9,10,0,0,0,0,0,0,0,0)
-# define BOOST_MPL_PP_ADD_9 (9,10,0,0,0,0,0,0,0,0,0)
-# define BOOST_MPL_PP_ADD_10 (10,0,0,0,0,0,0,0,0,0,0)
-
-#else
-
-# include <cutl/details/boost/preprocessor/arithmetic/add.hpp>
-
-# define BOOST_MPL_PP_ADD(i,j) \
- BOOST_PP_ADD(i,j) \
- /**/
-
-#endif
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/def_params_tail.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/def_params_tail.hpp
deleted file mode 100644
index 2d5e0e0..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/def_params_tail.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: def_params_tail.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/limits/arity.hpp>
-#include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-#include <cutl/details/boost/mpl/aux_/config/preprocessor.hpp>
-
-#include <cutl/details/boost/preprocessor/comma_if.hpp>
-#include <cutl/details/boost/preprocessor/logical/and.hpp>
-#include <cutl/details/boost/preprocessor/identity.hpp>
-#include <cutl/details/boost/preprocessor/empty.hpp>
-
-// BOOST_MPL_PP_DEF_PARAMS_TAIL(1,T,value): , T1 = value, .., Tn = value
-// BOOST_MPL_PP_DEF_PARAMS_TAIL(2,T,value): , T2 = value, .., Tn = value
-// BOOST_MPL_PP_DEF_PARAMS_TAIL(n,T,value): <nothing>
-
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
-
-# include <cutl/details/boost/mpl/aux_/preprocessor/filter_params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/sub.hpp>
-
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, value_func) \
- BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_1( \
- i \
- , BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY,i) \
- , param \
- , value_func \
- ) \
- /**/
-
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_1(i, n, param, value_func) \
- BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_2(i,n,param,value_func) \
- /**/
-
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_2(i, n, param, value_func) \
- BOOST_PP_COMMA_IF(BOOST_PP_AND(i,n)) \
- BOOST_MPL_PP_DEF_PARAMS_TAIL_##i(n,param,value_func) \
- /**/
-
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_0(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##1 v(),p##2 v(),p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v())
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_1(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##2 v(),p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1)
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_2(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2)
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_3(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3)
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_4(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4)
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_5(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4,p5)
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_6(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4,p5,p6)
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_7(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##8 v(),p##9 v(),p1,p2,p3,p4,p5,p6,p7)
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_8(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##9 v(),p1,p2,p3,p4,p5,p6,p7,p8)
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_9(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p1,p2,p3,p4,p5,p6,p7,p8,p9)
-
-#else
-
-# include <cutl/details/boost/preprocessor/arithmetic/add.hpp>
-# include <cutl/details/boost/preprocessor/arithmetic/sub.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-# include <cutl/details/boost/preprocessor/repeat.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_PP_AUX_TAIL_PARAM_FUNC(unused, i, op) \
- , BOOST_PP_CAT( \
- BOOST_PP_TUPLE_ELEM(3, 1, op) \
- , BOOST_PP_ADD_D(1, i, BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(3, 0, op))) \
- ) BOOST_PP_TUPLE_ELEM(3, 2, op)() \
- /**/
-
-# define BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, value_func) \
- BOOST_PP_REPEAT( \
- BOOST_PP_SUB_D(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, i) \
- , BOOST_MPL_PP_AUX_TAIL_PARAM_FUNC \
- , (i, param, value_func) \
- ) \
- /**/
-
-
-#endif // BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES
-
-#define BOOST_MPL_PP_DEF_PARAMS_TAIL(i, param, value) \
- BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_IDENTITY(=value)) \
- /**/
-
-#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-# define BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, param, value) \
- BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_IDENTITY(=value)) \
- /**/
-#else
-# define BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, param, value) \
- BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_EMPTY) \
- /**/
-#endif
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp
deleted file mode 100644
index 78a0d9e..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: default_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/preprocessor.hpp>
-
-// BOOST_MPL_PP_DEFAULT_PARAMS(0,T,int): <nothing>
-// BOOST_MPL_PP_DEFAULT_PARAMS(1,T,int): T1 = int
-// BOOST_MPL_PP_DEFAULT_PARAMS(2,T,int): T1 = int, T2 = int
-// BOOST_MPL_PP_DEFAULT_PARAMS(n,T,int): T1 = int, T2 = int, .., Tn = int
-
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
-
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_PP_DEFAULT_PARAMS(n,p,v) \
- BOOST_PP_CAT(BOOST_MPL_PP_DEFAULT_PARAMS_,n)(p,v) \
- /**/
-
-# define BOOST_MPL_PP_DEFAULT_PARAMS_0(p,v)
-# define BOOST_MPL_PP_DEFAULT_PARAMS_1(p,v) p##1=v
-# define BOOST_MPL_PP_DEFAULT_PARAMS_2(p,v) p##1=v,p##2=v
-# define BOOST_MPL_PP_DEFAULT_PARAMS_3(p,v) p##1=v,p##2=v,p##3=v
-# define BOOST_MPL_PP_DEFAULT_PARAMS_4(p,v) p##1=v,p##2=v,p##3=v,p##4=v
-# define BOOST_MPL_PP_DEFAULT_PARAMS_5(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v
-# define BOOST_MPL_PP_DEFAULT_PARAMS_6(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v
-# define BOOST_MPL_PP_DEFAULT_PARAMS_7(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v,p##7=v
-# define BOOST_MPL_PP_DEFAULT_PARAMS_8(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v,p##7=v,p##8=v
-# define BOOST_MPL_PP_DEFAULT_PARAMS_9(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v,p##7=v,p##8=v,p##9=v
-
-#else
-
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/repeat.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC(unused, i, pv) \
- BOOST_PP_COMMA_IF(i) \
- BOOST_PP_CAT( BOOST_PP_TUPLE_ELEM(2,0,pv), BOOST_PP_INC(i) ) \
- = BOOST_PP_TUPLE_ELEM(2,1,pv) \
- /**/
-
-# define BOOST_MPL_PP_DEFAULT_PARAMS(n, param, value) \
- BOOST_PP_REPEAT( \
- n \
- , BOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC \
- , (param,value) \
- ) \
- /**/
-
-#endif
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/enum.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/enum.hpp
deleted file mode 100644
index 64d74e0..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/enum.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: enum.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/preprocessor.hpp>
-
-// BOOST_MPL_PP_ENUM(0,int): <nothing>
-// BOOST_MPL_PP_ENUM(1,int): int
-// BOOST_MPL_PP_ENUM(2,int): int, int
-// BOOST_MPL_PP_ENUM(n,int): int, int, .., int
-
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
-
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_PP_ENUM(n, param) \
- BOOST_PP_CAT(BOOST_MPL_PP_ENUM_,n)(param) \
- /**/
-
-# define BOOST_MPL_PP_ENUM_0(p)
-# define BOOST_MPL_PP_ENUM_1(p) p
-# define BOOST_MPL_PP_ENUM_2(p) p,p
-# define BOOST_MPL_PP_ENUM_3(p) p,p,p
-# define BOOST_MPL_PP_ENUM_4(p) p,p,p,p
-# define BOOST_MPL_PP_ENUM_5(p) p,p,p,p,p
-# define BOOST_MPL_PP_ENUM_6(p) p,p,p,p,p,p
-# define BOOST_MPL_PP_ENUM_7(p) p,p,p,p,p,p,p
-# define BOOST_MPL_PP_ENUM_8(p) p,p,p,p,p,p,p,p
-# define BOOST_MPL_PP_ENUM_9(p) p,p,p,p,p,p,p,p,p
-
-#else
-
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/repeat.hpp>
-
-# define BOOST_MPL_PP_AUX_ENUM_FUNC(unused, i, param) \
- BOOST_PP_COMMA_IF(i) param \
- /**/
-
-# define BOOST_MPL_PP_ENUM(n, param) \
- BOOST_PP_REPEAT( \
- n \
- , BOOST_MPL_PP_AUX_ENUM_FUNC \
- , param \
- ) \
- /**/
-
-#endif
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/ext_params.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/ext_params.hpp
deleted file mode 100644
index 31a5da2..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/ext_params.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: ext_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/preprocessor.hpp>
-
-// BOOST_MPL_PP_EXT_PARAMS(2,2,T): <nothing>
-// BOOST_MPL_PP_EXT_PARAMS(2,3,T): T2
-// BOOST_MPL_PP_EXT_PARAMS(2,4,T): T2, T3
-// BOOST_MPL_PP_EXT_PARAMS(2,n,T): T2, T3, .., Tn-1
-
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
-
-# include <cutl/details/boost/mpl/aux_/preprocessor/filter_params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/sub.hpp>
-
-# define BOOST_MPL_PP_EXT_PARAMS(i,j,p) \
- BOOST_MPL_PP_EXT_PARAMS_DELAY_1(i,BOOST_MPL_PP_SUB(j,i),p) \
- /**/
-
-# define BOOST_MPL_PP_EXT_PARAMS_DELAY_1(i,n,p) \
- BOOST_MPL_PP_EXT_PARAMS_DELAY_2(i,n,p) \
- /**/
-
-# define BOOST_MPL_PP_EXT_PARAMS_DELAY_2(i,n,p) \
- BOOST_MPL_PP_EXT_PARAMS_##i(n,p) \
- /**/
-
-# define BOOST_MPL_PP_EXT_PARAMS_1(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9)
-# define BOOST_MPL_PP_EXT_PARAMS_2(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9,p1)
-# define BOOST_MPL_PP_EXT_PARAMS_3(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##3,p##4,p##5,p##6,p##7,p##8,p##9,p1,p2)
-# define BOOST_MPL_PP_EXT_PARAMS_4(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##4,p##5,p##6,p##7,p##8,p##9,p1,p2,p3)
-# define BOOST_MPL_PP_EXT_PARAMS_5(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##5,p##6,p##7,p##8,p##9,p1,p2,p3,p4)
-# define BOOST_MPL_PP_EXT_PARAMS_6(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##6,p##7,p##8,p##9,p1,p2,p3,p4,p5)
-# define BOOST_MPL_PP_EXT_PARAMS_7(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##7,p##8,p##9,p1,p2,p3,p4,p5,p6)
-# define BOOST_MPL_PP_EXT_PARAMS_8(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##8,p##9,p1,p2,p3,p4,p5,p6,p7)
-# define BOOST_MPL_PP_EXT_PARAMS_9(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##9,p1,p2,p3,p4,p5,p6,p7,p8)
-
-#else
-
-# include <cutl/details/boost/preprocessor/arithmetic/add.hpp>
-# include <cutl/details/boost/preprocessor/arithmetic/sub.hpp>
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/repeat.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_PP_AUX_EXT_PARAM_FUNC(unused, i, op) \
- BOOST_PP_COMMA_IF(i) \
- BOOST_PP_CAT( \
- BOOST_PP_TUPLE_ELEM(2,1,op) \
- , BOOST_PP_ADD_D(1, i, BOOST_PP_TUPLE_ELEM(2,0,op)) \
- ) \
- /**/
-
-# define BOOST_MPL_PP_EXT_PARAMS(i, j, param) \
- BOOST_PP_REPEAT( \
- BOOST_PP_SUB_D(1,j,i) \
- , BOOST_MPL_PP_AUX_EXT_PARAM_FUNC \
- , (i,param) \
- ) \
- /**/
-
-#endif
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/filter_params.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/filter_params.hpp
deleted file mode 100644
index fefd984..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/filter_params.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: filter_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#define BOOST_MPL_PP_FILTER_PARAMS_0(p1,p2,p3,p4,p5,p6,p7,p8,p9)
-#define BOOST_MPL_PP_FILTER_PARAMS_1(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1
-#define BOOST_MPL_PP_FILTER_PARAMS_2(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2
-#define BOOST_MPL_PP_FILTER_PARAMS_3(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3
-#define BOOST_MPL_PP_FILTER_PARAMS_4(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4
-#define BOOST_MPL_PP_FILTER_PARAMS_5(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5
-#define BOOST_MPL_PP_FILTER_PARAMS_6(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6
-#define BOOST_MPL_PP_FILTER_PARAMS_7(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7
-#define BOOST_MPL_PP_FILTER_PARAMS_8(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7,p8
-#define BOOST_MPL_PP_FILTER_PARAMS_9(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7,p8,p9
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/params.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/params.hpp
deleted file mode 100644
index d222dc7..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/params.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/preprocessor.hpp>
-
-// BOOST_MPL_PP_PARAMS(0,T): <nothing>
-// BOOST_MPL_PP_PARAMS(1,T): T1
-// BOOST_MPL_PP_PARAMS(2,T): T1, T2
-// BOOST_MPL_PP_PARAMS(n,T): T1, T2, .., Tn
-
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
-
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_PP_PARAMS(n,p) \
- BOOST_PP_CAT(BOOST_MPL_PP_PARAMS_,n)(p) \
- /**/
-
-# define BOOST_MPL_PP_PARAMS_0(p)
-# define BOOST_MPL_PP_PARAMS_1(p) p##1
-# define BOOST_MPL_PP_PARAMS_2(p) p##1,p##2
-# define BOOST_MPL_PP_PARAMS_3(p) p##1,p##2,p##3
-# define BOOST_MPL_PP_PARAMS_4(p) p##1,p##2,p##3,p##4
-# define BOOST_MPL_PP_PARAMS_5(p) p##1,p##2,p##3,p##4,p##5
-# define BOOST_MPL_PP_PARAMS_6(p) p##1,p##2,p##3,p##4,p##5,p##6
-# define BOOST_MPL_PP_PARAMS_7(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7
-# define BOOST_MPL_PP_PARAMS_8(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8
-# define BOOST_MPL_PP_PARAMS_9(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9
-
-#else
-
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/repeat.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_PP_AUX_PARAM_FUNC(unused, i, param) \
- BOOST_PP_COMMA_IF(i) \
- BOOST_PP_CAT(param, BOOST_PP_INC(i)) \
- /**/
-
-# define BOOST_MPL_PP_PARAMS(n, param) \
- BOOST_PP_REPEAT( \
- n \
- , BOOST_MPL_PP_AUX_PARAM_FUNC \
- , param \
- ) \
- /**/
-
-#endif
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/partial_spec_params.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/partial_spec_params.hpp
deleted file mode 100644
index a45454f..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/partial_spec_params.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: partial_spec_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/limits/arity.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/enum.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/sub.hpp>
-#include <cutl/details/boost/preprocessor/comma_if.hpp>
-
-#define BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
-BOOST_MPL_PP_PARAMS(n, param) \
-BOOST_PP_COMMA_IF(BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY,n)) \
-BOOST_MPL_PP_ENUM( \
- BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY,n) \
- , def \
- ) \
-/**/
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/range.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/range.hpp
deleted file mode 100644
index 27325e5..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/range.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: range.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/preprocessor/seq/subseq.hpp>
-
-#define BOOST_MPL_PP_RANGE(first, length) \
- BOOST_PP_SEQ_SUBSEQ((0)(1)(2)(3)(4)(5)(6)(7)(8)(9), first, length) \
-/**/
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/repeat.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/repeat.hpp
deleted file mode 100644
index 98c022b..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/repeat.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: repeat.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/preprocessor.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
-
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_PP_REPEAT(n,f,param) \
- BOOST_PP_CAT(BOOST_MPL_PP_REPEAT_,n)(f,param) \
- /**/
-
-# define BOOST_MPL_PP_REPEAT_0(f,p)
-# define BOOST_MPL_PP_REPEAT_1(f,p) f(0,0,p)
-# define BOOST_MPL_PP_REPEAT_2(f,p) f(0,0,p) f(0,1,p)
-# define BOOST_MPL_PP_REPEAT_3(f,p) f(0,0,p) f(0,1,p) f(0,2,p)
-# define BOOST_MPL_PP_REPEAT_4(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p)
-# define BOOST_MPL_PP_REPEAT_5(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p)
-# define BOOST_MPL_PP_REPEAT_6(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p)
-# define BOOST_MPL_PP_REPEAT_7(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p)
-# define BOOST_MPL_PP_REPEAT_8(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p) f(0,7,p)
-# define BOOST_MPL_PP_REPEAT_9(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p) f(0,7,p) f(0,8,p)
-# define BOOST_MPL_PP_REPEAT_10(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p) f(0,7,p) f(0,8,p) f(0,9,p)
-
-#else
-
-# include <cutl/details/boost/preprocessor/repeat.hpp>
-
-# define BOOST_MPL_PP_REPEAT(n,f,param) \
- BOOST_PP_REPEAT(n,f,param) \
- /**/
-
-#endif
-
-#define BOOST_MPL_PP_REPEAT_IDENTITY_FUNC(unused1, unused2, x) x
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/sub.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/sub.hpp
deleted file mode 100644
index 2965017..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/sub.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: sub.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/preprocessor.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
-
-# include <cutl/details/boost/mpl/aux_/preprocessor/tuple.hpp>
-
-#if defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION)
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define BOOST_MPL_PP_SUB(i,j) \
- BOOST_MPL_PP_SUB_DELAY(i,j) \
- /**/
-
-# define BOOST_MPL_PP_SUB_DELAY(i,j) \
- BOOST_PP_CAT(BOOST_MPL_PP_TUPLE_11_ELEM_##i,BOOST_MPL_PP_SUB_##j) \
- /**/
-#else
-# define BOOST_MPL_PP_SUB(i,j) \
- BOOST_MPL_PP_SUB_DELAY(i,j) \
- /**/
-
-# define BOOST_MPL_PP_SUB_DELAY(i,j) \
- BOOST_MPL_PP_TUPLE_11_ELEM_##i BOOST_MPL_PP_SUB_##j \
- /**/
-#endif
-
-# define BOOST_MPL_PP_SUB_0 (0,1,2,3,4,5,6,7,8,9,10)
-# define BOOST_MPL_PP_SUB_1 (0,0,1,2,3,4,5,6,7,8,9)
-# define BOOST_MPL_PP_SUB_2 (0,0,0,1,2,3,4,5,6,7,8)
-# define BOOST_MPL_PP_SUB_3 (0,0,0,0,1,2,3,4,5,6,7)
-# define BOOST_MPL_PP_SUB_4 (0,0,0,0,0,1,2,3,4,5,6)
-# define BOOST_MPL_PP_SUB_5 (0,0,0,0,0,0,1,2,3,4,5)
-# define BOOST_MPL_PP_SUB_6 (0,0,0,0,0,0,0,1,2,3,4)
-# define BOOST_MPL_PP_SUB_7 (0,0,0,0,0,0,0,0,1,2,3)
-# define BOOST_MPL_PP_SUB_8 (0,0,0,0,0,0,0,0,0,1,2)
-# define BOOST_MPL_PP_SUB_9 (0,0,0,0,0,0,0,0,0,0,1)
-# define BOOST_MPL_PP_SUB_10 (0,0,0,0,0,0,0,0,0,0,0)
-
-#else
-
-# include <cutl/details/boost/preprocessor/arithmetic/sub.hpp>
-
-# define BOOST_MPL_PP_SUB(i,j) \
- BOOST_PP_SUB(i,j) \
- /**/
-
-#endif
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/tuple.hpp b/libcutl/cutl/details/boost/mpl/aux_/preprocessor/tuple.hpp
deleted file mode 100644
index ed59407..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/preprocessor/tuple.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: tuple.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#define BOOST_MPL_PP_TUPLE_11_ELEM_0(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e0
-#define BOOST_MPL_PP_TUPLE_11_ELEM_1(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e1
-#define BOOST_MPL_PP_TUPLE_11_ELEM_2(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e2
-#define BOOST_MPL_PP_TUPLE_11_ELEM_3(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e3
-#define BOOST_MPL_PP_TUPLE_11_ELEM_4(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e4
-#define BOOST_MPL_PP_TUPLE_11_ELEM_5(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e5
-#define BOOST_MPL_PP_TUPLE_11_ELEM_6(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e6
-#define BOOST_MPL_PP_TUPLE_11_ELEM_7(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e7
-#define BOOST_MPL_PP_TUPLE_11_ELEM_8(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e8
-#define BOOST_MPL_PP_TUPLE_11_ELEM_9(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e9
-#define BOOST_MPL_PP_TUPLE_11_ELEM_10(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e10
-
-#endif // BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/static_cast.hpp b/libcutl/cutl/details/boost/mpl/aux_/static_cast.hpp
deleted file mode 100644
index 7fd7ed2..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/static_cast.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
-#define BOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: static_cast.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
- || BOOST_WORKAROUND(__GNUC__, < 3) \
- || BOOST_WORKAROUND(__MWERKS__, <= 0x3001)
-# define BOOST_MPL_AUX_STATIC_CAST(T, expr) (T)(expr)
-#else
-# define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
-#endif
-
-#endif // BOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/template_arity.hpp b/libcutl/cutl/details/boost/mpl/aux_/template_arity.hpp
deleted file mode 100644
index 5f697a9..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/template_arity.hpp
+++ /dev/null
@@ -1,189 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
-#define BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: template_arity.hpp 61584 2010-04-26 18:48:26Z agurtovoy $
-// $Date: 2010-04-26 11:48:26 -0700 (Mon, 26 Apr 2010) $
-// $Revision: 61584 $
-
-#include <cutl/details/boost/mpl/aux_/config/ttp.hpp>
-#include <cutl/details/boost/mpl/aux_/config/lambda.hpp>
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/aux_/template_arity_fwd.hpp>
-# include <cutl/details/boost/mpl/int.hpp>
-# if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
-# if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
-# include <cutl/details/boost/mpl/aux_/type_wrapper.hpp>
-# endif
-# else
-# include <cutl/details/boost/mpl/aux_/has_rebind.hpp>
-# endif
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER template_arity.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
-# if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
-
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/range.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/repeat.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-
-# include <cutl/details/boost/preprocessor/seq/fold_left.hpp>
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-# define AUX778076_ARITY BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arity_tag
-{
- typedef char (&type)[N + 1];
-};
-
-# define AUX778076_MAX_ARITY_OP(unused, state, i_) \
- ( BOOST_PP_CAT(C,i_) > 0 ? BOOST_PP_CAT(C,i_) : state ) \
-/**/
-
-template<
- BOOST_MPL_PP_PARAMS(AUX778076_ARITY, BOOST_MPL_AUX_NTTP_DECL(int, C))
- >
-struct max_arity
-{
- BOOST_STATIC_CONSTANT(int, value =
- BOOST_PP_SEQ_FOLD_LEFT(
- AUX778076_MAX_ARITY_OP
- , -1
- , BOOST_MPL_PP_RANGE(1, AUX778076_ARITY)
- )
- );
-};
-
-# undef AUX778076_MAX_ARITY_OP
-
-arity_tag<0>::type arity_helper(...);
-
-# define BOOST_PP_ITERATION_LIMITS (1, AUX778076_ARITY)
-# define BOOST_PP_FILENAME_1 <cutl/details/boost/mpl/aux_/template_arity.hpp>
-# include BOOST_PP_ITERATE()
-
-template< typename F, BOOST_MPL_AUX_NTTP_DECL(int, N) >
-struct template_arity_impl
-{
- BOOST_STATIC_CONSTANT(int, value =
- sizeof(::cutl_details_boost::mpl::aux::arity_helper(type_wrapper<F>(),arity_tag<N>())) - 1
- );
-};
-
-# define AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION(unused, i_, F) \
- BOOST_PP_COMMA_IF(i_) template_arity_impl<F,BOOST_PP_INC(i_)>::value \
-/**/
-
-template< typename F >
-struct template_arity
-{
- BOOST_STATIC_CONSTANT(int, value = (
- max_arity< BOOST_MPL_PP_REPEAT(
- AUX778076_ARITY
- , AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
- , F
- ) >::value
- ));
-
- typedef mpl::int_<value> type;
-};
-
-# undef AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
-
-# undef AUX778076_ARITY
-
-}}}
-
-# endif // BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
-# else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
-
-# include <cutl/details/boost/mpl/aux_/config/eti.hpp>
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-template< bool >
-struct template_arity_impl
-{
- template< typename F > struct result_
- : mpl::int_<-1>
- {
- };
-};
-
-template<>
-struct template_arity_impl<true>
-{
- template< typename F > struct result_
- : F::arity
- {
- };
-};
-
-template< typename F >
-struct template_arity
- : template_arity_impl< ::cutl_details_boost::mpl::aux::has_rebind<F>::value >
- ::template result_<F>
-{
-};
-
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
-template<>
-struct template_arity<int>
- : mpl::int_<-1>
-{
-};
-#endif
-
-}}}
-
-# endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
-
-template<
- template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
- , BOOST_MPL_PP_PARAMS(i_, typename T)
- >
-typename arity_tag<i_>::type
-arity_helper(type_wrapper< F<BOOST_MPL_PP_PARAMS(i_, T)> >, arity_tag<i_>);
-
-#undef i_
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/aux_/template_arity_fwd.hpp b/libcutl/cutl/details/boost/mpl/aux_/template_arity_fwd.hpp
deleted file mode 100644
index 40bb6d4..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/template_arity_fwd.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
-#define BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: template_arity_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-template< typename F > struct template_arity;
-
-}}}
-
-#endif // BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/type_wrapper.hpp b/libcutl/cutl/details/boost/mpl/aux_/type_wrapper.hpp
deleted file mode 100644
index 443988b..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/type_wrapper.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
-#define BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-// Copyright Peter Dimov 2000-2003
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: type_wrapper.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-template< typename T > struct type_wrapper
-{
- typedef T type;
-};
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-// agurt 08/may/03: a complicated way to extract the wrapped type; need it
-// mostly for the sake of GCC (3.2.x), which ICEs if you try to extract the
-// nested 'type' from 'type_wrapper<T>' when the latter was the result of a
-// 'typeof' expression
-template< typename T > struct wrapped_type;
-
-template< typename T > struct wrapped_type< type_wrapper<T> >
-{
- typedef T type;
-};
-#else
-template< typename W > struct wrapped_type
-{
- typedef typename W::type type;
-};
-#endif
-
-}}}
-
-#endif // BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/value_wknd.hpp b/libcutl/cutl/details/boost/mpl/aux_/value_wknd.hpp
deleted file mode 100644
index 7454b3b..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/value_wknd.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
-#define BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: value_wknd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/static_cast.hpp>
-#include <cutl/details/boost/mpl/aux_/config/integral.hpp>
-#include <cutl/details/boost/mpl/aux_/config/eti.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
- || defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
-
-# include <cutl/details/boost/mpl/int.hpp>
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-template< typename C_ > struct value_wknd
- : C_
-{
-};
-
-#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
-template<> struct value_wknd<int>
- : int_<1>
-{
- using int_<1>::value;
-};
-#endif
-}}}
-
-
-#if !defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
-# define BOOST_MPL_AUX_VALUE_WKND(C) \
- ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux::value_wknd< C > \
-/**/
-# define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) BOOST_MPL_AUX_VALUE_WKND(C)
-#else
-# define BOOST_MPL_AUX_VALUE_WKND(C) C
-# define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) \
- ::cutl_details_boost::mpl::aux::value_wknd< C > \
-/**/
-#endif
-
-#else // BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
-
-# define BOOST_MPL_AUX_VALUE_WKND(C) C
-# define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) C
-
-#endif
-
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
-# define BOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
- BOOST_MPL_AUX_STATIC_CAST(T, C::value) \
-/**/
-#else
-# define BOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
- BOOST_MPL_AUX_VALUE_WKND(C)::value \
-/**/
-#endif
-
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-template< typename T > struct value_type_wknd
-{
- typedef typename T::value_type type;
-};
-
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
-template<> struct value_type_wknd<int>
-{
- typedef int type;
-};
-#endif
-
-}}}
-
-#endif // BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/aux_/yes_no.hpp b/libcutl/cutl/details/boost/mpl/aux_/yes_no.hpp
deleted file mode 100644
index 4ea9acc..0000000
--- a/libcutl/cutl/details/boost/mpl/aux_/yes_no.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_YES_NO_HPP_INCLUDED
-#define BOOST_MPL_AUX_YES_NO_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: yes_no.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-#include <cutl/details/boost/mpl/aux_/config/arrays.hpp>
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-typedef char (&no_tag)[1];
-typedef char (&yes_tag)[2];
-
-template< bool C_ > struct yes_no_tag
-{
- typedef no_tag type;
-};
-
-template<> struct yes_no_tag<true>
-{
- typedef yes_tag type;
-};
-
-
-template< BOOST_MPL_AUX_NTTP_DECL(long, n) > struct weighted_tag
-{
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- typedef char (&type)[n];
-#else
- char buf[n];
- typedef weighted_tag type;
-#endif
-};
-
-#if defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES)
-template<> struct weighted_tag<0>
-{
- typedef char (&type)[1];
-};
-#endif
-
-}}}
-
-#endif // BOOST_MPL_AUX_YES_NO_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/bind.hpp b/libcutl/cutl/details/boost/mpl/bind.hpp
deleted file mode 100644
index 4ddf5e8..0000000
--- a/libcutl/cutl/details/boost/mpl/bind.hpp
+++ /dev/null
@@ -1,551 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_BIND_HPP_INCLUDED
-#define BOOST_MPL_BIND_HPP_INCLUDED
-
-// Copyright Peter Dimov 2001
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: bind.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/bind_fwd.hpp>
-# include <cutl/details/boost/mpl/placeholders.hpp>
-# include <cutl/details/boost/mpl/next.hpp>
-# include <cutl/details/boost/mpl/protect.hpp>
-# include <cutl/details/boost/mpl/apply_wrap.hpp>
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/na.hpp>
-# include <cutl/details/boost/mpl/aux_/arity_spec.hpp>
-# include <cutl/details/boost/mpl/aux_/type_wrapper.hpp>
-# include <cutl/details/boost/mpl/aux_/yes_no.hpp>
-# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# endif
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/bind.hpp>
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# if defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
-# define BOOST_MPL_PREPROCESSED_HEADER basic_bind.hpp
-# else
-# define BOOST_MPL_PREPROCESSED_HEADER bind.hpp
-# endif
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/def_params_tail.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/ext_params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/repeat.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/enum.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/add.hpp>
-# include <cutl/details/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
-# include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-# include <cutl/details/boost/mpl/aux_/config/ttp.hpp>
-# include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-# include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/inc.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-// local macros, #undef-ined at the end of the header
-# define AUX778076_APPLY \
- BOOST_PP_CAT(apply_wrap,BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
- /**/
-
-# if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
-# define AUX778076_DMC_PARAM() , int dummy_
-# else
-# define AUX778076_DMC_PARAM()
-# endif
-
-# define AUX778076_BIND_PARAMS(param) \
- BOOST_MPL_PP_PARAMS( \
- BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
- , param \
- ) \
- /**/
-
-# define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
- BOOST_MPL_PP_DEFAULT_PARAMS( \
- BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
- , param \
- , value \
- ) \
- /**/
-
-# define AUX778076_BIND_N_PARAMS(n, param) \
- BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
- /**/
-
-# define AUX778076_BIND_N_SPEC_PARAMS(n, param, def) \
- BOOST_PP_COMMA_IF(n) \
- BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
- /**/
-
-#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-# define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
- AUX778076_BIND_DEFAULT_PARAMS(param, value) \
- /**/
-#else
-# define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
- AUX778076_BIND_PARAMS(param) \
- /**/
-#endif
-
-namespace aux {
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-template<
- typename T, AUX778076_BIND_PARAMS(typename U)
- >
-struct resolve_bind_arg
-{
- typedef T type;
-};
-
-# if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
-
-template<
- typename T
- , typename Arg
- >
-struct replace_unnamed_arg
-{
- typedef Arg next;
- typedef T type;
-};
-
-template<
- typename Arg
- >
-struct replace_unnamed_arg< arg<-1>,Arg >
-{
- typedef typename Arg::next next;
- typedef Arg type;
-};
-
-# endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
-
-template<
- BOOST_MPL_AUX_NTTP_DECL(int, N), AUX778076_BIND_PARAMS(typename U)
- >
-struct resolve_bind_arg< arg<N>,AUX778076_BIND_PARAMS(U) >
-{
- typedef typename AUX778076_APPLY<mpl::arg<N>, AUX778076_BIND_PARAMS(U)>::type type;
-};
-
-#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
-template<
- typename F, AUX778076_BIND_PARAMS(typename T), AUX778076_BIND_PARAMS(typename U)
- >
-struct resolve_bind_arg< bind<F,AUX778076_BIND_PARAMS(T)>,AUX778076_BIND_PARAMS(U) >
-{
- typedef bind<F,AUX778076_BIND_PARAMS(T)> f_;
- typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
-};
-#endif
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-// agurt, 15/jan/02: it's not a intended to be used as a function class, and
-// MSVC6.5 has problems with 'apply' name here (the code compiles, but doesn't
-// work), so I went with the 'result_' here, and in all other similar cases
-template< bool >
-struct resolve_arg_impl
-{
- template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
- {
- typedef T type;
- };
-};
-
-template<>
-struct resolve_arg_impl<true>
-{
- template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
- {
- typedef typename AUX778076_APPLY<
- T
- , AUX778076_BIND_PARAMS(U)
- >::type type;
- };
-};
-
-// for 'resolve_bind_arg'
-template< typename T > struct is_bind_template;
-
-template<
- typename T, AUX778076_BIND_PARAMS(typename U)
- >
-struct resolve_bind_arg
- : resolve_arg_impl< is_bind_template<T>::value >
- ::template result_< T,AUX778076_BIND_PARAMS(U) >
-{
-};
-
-# if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
-
-template< typename T >
-struct replace_unnamed_arg_impl
-{
- template< typename Arg > struct result_
- {
- typedef Arg next;
- typedef T type;
- };
-};
-
-template<>
-struct replace_unnamed_arg_impl< arg<-1> >
-{
- template< typename Arg > struct result_
- {
- typedef typename next<Arg>::type next;
- typedef Arg type;
- };
-};
-
-template< typename T, typename Arg >
-struct replace_unnamed_arg
- : replace_unnamed_arg_impl<T>::template result_<Arg>
-{
-};
-
-# endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
-
-// agurt, 10/mar/02: the forward declaration has to appear before any of
-// 'is_bind_helper' overloads, otherwise MSVC6.5 issues an ICE on it
-template< BOOST_MPL_AUX_NTTP_DECL(int, arity_) > struct bind_chooser;
-
-aux::no_tag is_bind_helper(...);
-template< typename T > aux::no_tag is_bind_helper(protect<T>*);
-
-// overload for "main" form
-// agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload
-// in case if we use 'aux::type_wrapper< bind<...> >' here, and all
-// 'bind' instantiations form a complete type anyway
-#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
-template<
- typename F, AUX778076_BIND_PARAMS(typename T)
- >
-aux::yes_tag is_bind_helper(bind<F,AUX778076_BIND_PARAMS(T)>*);
-#endif
-
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
-aux::yes_tag is_bind_helper(arg<N>*);
-
-template< bool is_ref_ = true >
-struct is_bind_template_impl
-{
- template< typename T > struct result_
- {
- BOOST_STATIC_CONSTANT(bool, value = false);
- };
-};
-
-template<>
-struct is_bind_template_impl<false>
-{
- template< typename T > struct result_
- {
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof(aux::is_bind_helper(static_cast<T*>(0)))
- == sizeof(aux::yes_tag)
- );
- };
-};
-
-template< typename T > struct is_bind_template
- : is_bind_template_impl< ::cutl_details_boost::detail::is_reference_impl<T>::value >
- ::template result_<T>
-{
-};
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace aux
-
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <cutl/details/boost/mpl/bind.hpp>))
-#include BOOST_PP_ITERATE()
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
-/// if_/eval_if specializations
-# define AUX778076_SPEC_NAME if_
-# define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <cutl/details/boost/mpl/bind.hpp>))
-# include BOOST_PP_ITERATE()
-
-#if !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
-# define AUX778076_SPEC_NAME eval_if
-# define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <cutl/details/boost/mpl/bind.hpp>))
-# include BOOST_PP_ITERATE()
-#endif
-#endif
-
-// real C++ version is already taken care of
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
-
-namespace aux {
-// apply_count_args
-#define AUX778076_COUNT_ARGS_PREFIX bind
-#define AUX778076_COUNT_ARGS_DEFAULT na
-#define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
-#include <cutl/details/boost/mpl/aux_/count_args.hpp>
-}
-
-// bind
-template<
- typename F, AUX778076_BIND_PARAMS(typename T) AUX778076_DMC_PARAM()
- >
-struct bind
- : aux::bind_chooser<
- aux::bind_count_args<AUX778076_BIND_PARAMS(T)>::value
- >::template result_< F,AUX778076_BIND_PARAMS(T) >::type
-{
-};
-
-BOOST_MPL_AUX_ARITY_SPEC(
- BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
- , bind
- )
-
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
- BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
- , bind
- )
-
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-# undef AUX778076_BIND_NESTED_DEFAULT_PARAMS
-# undef AUX778076_BIND_N_SPEC_PARAMS
-# undef AUX778076_BIND_N_PARAMS
-# undef AUX778076_BIND_DEFAULT_PARAMS
-# undef AUX778076_BIND_PARAMS
-# undef AUX778076_DMC_PARAM
-# undef AUX778076_APPLY
-
-}}
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_BIND_HPP_INCLUDED
-
-///// iteration, depth == 1
-
-// For gcc 4.4 compatability, we must include the
-// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
-#else // BOOST_PP_IS_ITERATING
-#if BOOST_PP_ITERATION_DEPTH() == 1
-
-# define i_ BOOST_PP_FRAME_ITERATION(1)
-
-#if defined(AUX778076_SPEC_NAME)
-
-// lazy metafunction specialization
-template< template< BOOST_MPL_PP_PARAMS(i_, typename T) > class F, typename Tag >
-struct BOOST_PP_CAT(quote,i_);
-
-template< BOOST_MPL_PP_PARAMS(i_, typename T) > struct AUX778076_SPEC_NAME;
-
-template<
- typename Tag AUX778076_BIND_N_PARAMS(i_, typename T)
- >
-struct BOOST_PP_CAT(bind,i_)<
- BOOST_PP_CAT(quote,i_)<AUX778076_SPEC_NAME,Tag>
- AUX778076_BIND_N_PARAMS(i_,T)
- >
-{
- template<
- AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
- >
- struct apply
- {
- private:
- typedef mpl::arg<1> n1;
-# define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <cutl/details/boost/mpl/bind.hpp>))
-# include BOOST_PP_ITERATE()
-
- typedef typename AUX778076_SPEC_NAME<
- typename t1::type
- , BOOST_MPL_PP_EXT_PARAMS(2, BOOST_PP_INC(i_), t)
- >::type f_;
-
- public:
- typedef typename f_::type type;
- };
-};
-
-#undef AUX778076_SPEC_NAME
-
-#else // AUX778076_SPEC_NAME
-
-template<
- typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
- >
-struct BOOST_PP_CAT(bind,i_)
-{
- template<
- AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
- >
- struct apply
- {
- private:
-# if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
-
- typedef aux::replace_unnamed_arg< F,mpl::arg<1> > r0;
- typedef typename r0::type a0;
- typedef typename r0::next n1;
- typedef typename aux::resolve_bind_arg<a0,AUX778076_BIND_PARAMS(U)>::type f_;
- ///
-# else
- typedef typename aux::resolve_bind_arg<F,AUX778076_BIND_PARAMS(U)>::type f_;
-
-# endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
-
-# if i_ > 0
-# define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <cutl/details/boost/mpl/bind.hpp>))
-# include BOOST_PP_ITERATE()
-# endif
-
- public:
-
-# define AUX778076_ARG(unused, i_, t) \
- BOOST_PP_COMMA_IF(i_) \
- typename BOOST_PP_CAT(t,BOOST_PP_INC(i_))::type \
-/**/
-
- typedef typename BOOST_PP_CAT(apply_wrap,i_)<
- f_
- BOOST_PP_COMMA_IF(i_) BOOST_MPL_PP_REPEAT(i_, AUX778076_ARG, t)
- >::type type;
-
-# undef AUX778076_ARG
- };
-};
-
-namespace aux {
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-template<
- typename F AUX778076_BIND_N_PARAMS(i_, typename T), AUX778076_BIND_PARAMS(typename U)
- >
-struct resolve_bind_arg<
- BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>,AUX778076_BIND_PARAMS(U)
- >
-{
- typedef BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)> f_;
- typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
-};
-
-#else
-
-template<
- typename F AUX778076_BIND_N_PARAMS(i_, typename T)
- >
-aux::yes_tag
-is_bind_helper(BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>*);
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace aux
-
-BOOST_MPL_AUX_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
-
-# if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
-# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-#if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
-/// primary template (not a specialization!)
-template<
- typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
- >
-struct bind
- : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
-{
-};
-#else
-template<
- typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
- >
-struct bind< F AUX778076_BIND_N_SPEC_PARAMS(i_, T, na) >
- : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
-{
-};
-#endif
-
-# else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-namespace aux {
-
-template<>
-struct bind_chooser<i_>
-{
- template<
- typename F, AUX778076_BIND_PARAMS(typename T)
- >
- struct result_
- {
- typedef BOOST_PP_CAT(bind,i_)< F AUX778076_BIND_N_PARAMS(i_,T) > type;
- };
-};
-
-} // namespace aux
-
-# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# endif // BOOST_MPL_CFG_NO_BIND_TEMPLATE
-
-#endif // AUX778076_SPEC_NAME
-
-# undef i_
-
-///// iteration, depth == 2
-
-#elif BOOST_PP_ITERATION_DEPTH() == 2
-
-# define j_ BOOST_PP_FRAME_ITERATION(2)
-# if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
-
- typedef aux::replace_unnamed_arg< BOOST_PP_CAT(T,j_),BOOST_PP_CAT(n,j_) > BOOST_PP_CAT(r,j_);
- typedef typename BOOST_PP_CAT(r,j_)::type BOOST_PP_CAT(a,j_);
- typedef typename BOOST_PP_CAT(r,j_)::next BOOST_PP_CAT(n,BOOST_PP_INC(j_));
- typedef aux::resolve_bind_arg<BOOST_PP_CAT(a,j_), AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
- ///
-# else
- typedef aux::resolve_bind_arg< BOOST_PP_CAT(T,j_),AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
-
-# endif
-# undef j_
-
-#endif // BOOST_PP_ITERATION_DEPTH()
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/bind_fwd.hpp b/libcutl/cutl/details/boost/mpl/bind_fwd.hpp
deleted file mode 100644
index 5d510d4..0000000
--- a/libcutl/cutl/details/boost/mpl/bind_fwd.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_BIND_FWD_HPP_INCLUDED
-#define BOOST_MPL_BIND_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: bind_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/aux_/na.hpp>
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/bind.hpp>
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER bind_fwd.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/default_params.hpp>
-# include <cutl/details/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
-
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-// local macros, #undef-ined at the end of the header
-
-# if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
-# define AUX778076_DMC_PARAM() , int dummy_ = 0
-# else
-# define AUX778076_DMC_PARAM()
-# endif
-
-# define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
- BOOST_MPL_PP_DEFAULT_PARAMS( \
- BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
- , param \
- , value \
- ) \
- AUX778076_DMC_PARAM() \
- /**/
-
-# define AUX778076_BIND_N_PARAMS(n, param) \
- BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
- AUX778076_DMC_PARAM() \
- /**/
-
-#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
-template<
- typename F, AUX778076_BIND_DEFAULT_PARAMS(typename T, na)
- >
-struct bind;
-#endif
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <cutl/details/boost/mpl/bind_fwd.hpp>))
-#include BOOST_PP_ITERATE()
-
-# undef AUX778076_BIND_N_PARAMS
-# undef AUX778076_BIND_DEFAULT_PARAMS
-# undef AUX778076_DMC_PARAM
-}}
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_BIND_FWD_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
-
-template<
- typename F AUX778076_BIND_N_PARAMS(i_, typename T)
- >
-struct BOOST_PP_CAT(bind,i_);
-
-#undef i_
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/bool.hpp b/libcutl/cutl/details/boost/mpl/bool.hpp
deleted file mode 100644
index aa18d5c..0000000
--- a/libcutl/cutl/details/boost/mpl/bool.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#ifndef BOOST_MPL_BOOL_HPP_INCLUDED
-#define BOOST_MPL_BOOL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: bool.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/bool_fwd.hpp>
-#include <cutl/details/boost/mpl/integral_c_tag.hpp>
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-template< bool C_ > struct bool_
-{
- BOOST_STATIC_CONSTANT(bool, value = C_);
- typedef integral_c_tag tag;
- typedef bool_ type;
- typedef bool value_type;
- operator bool() const { return this->value; }
-};
-
-#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
-template< bool C_ >
-bool const bool_<C_>::value;
-#endif
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-
-#endif // BOOST_MPL_BOOL_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/bool_fwd.hpp b/libcutl/cutl/details/boost/mpl/bool_fwd.hpp
deleted file mode 100644
index a7168f9..0000000
--- a/libcutl/cutl/details/boost/mpl/bool_fwd.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#ifndef BOOST_MPL_BOOL_FWD_HPP_INCLUDED
-#define BOOST_MPL_BOOL_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: bool_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/adl_barrier.hpp>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-template< bool C_ > struct bool_;
-
-// shorcuts
-typedef bool_<true> true_;
-typedef bool_<false> false_;
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-
-BOOST_MPL_AUX_ADL_BARRIER_DECL(bool_)
-BOOST_MPL_AUX_ADL_BARRIER_DECL(true_)
-BOOST_MPL_AUX_ADL_BARRIER_DECL(false_)
-
-#endif // BOOST_MPL_BOOL_FWD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/eval_if.hpp b/libcutl/cutl/details/boost/mpl/eval_if.hpp
deleted file mode 100644
index b70c59d..0000000
--- a/libcutl/cutl/details/boost/mpl/eval_if.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-
-#ifndef BOOST_MPL_EVAL_IF_HPP_INCLUDED
-#define BOOST_MPL_EVAL_IF_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: eval_if.hpp 61921 2010-05-11 21:33:24Z neilgroves $
-// $Date: 2010-05-11 14:33:24 -0700 (Tue, 11 May 2010) $
-// $Revision: 61921 $
-
-#include <cutl/details/boost/mpl/if.hpp>
-#include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-#include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/gcc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(C)
- , typename BOOST_MPL_AUX_NA_PARAM(F1)
- , typename BOOST_MPL_AUX_NA_PARAM(F2)
- >
-struct eval_if
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \
- && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \
- )
-{
- typedef typename if_<C,F1,F2>::type f_;
- typedef typename f_::type type;
-#else
- : if_<C,F1,F2>::type
-{
-#endif
- BOOST_MPL_AUX_LAMBDA_SUPPORT(3,eval_if,(C,F1,F2))
-};
-
-// (almost) copy & paste in order to save one more
-// recursively nested template instantiation to user
-template<
- bool C
- , typename F1
- , typename F2
- >
-struct eval_if_c
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \
- && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \
- )
-{
- typedef typename if_c<C,F1,F2>::type f_;
- typedef typename f_::type type;
-#else
- : if_c<C,F1,F2>::type
-{
-#endif
-};
-
-BOOST_MPL_AUX_NA_SPEC(3, eval_if)
-
-}}
-
-#endif // BOOST_MPL_EVAL_IF_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/has_xxx.hpp b/libcutl/cutl/details/boost/mpl/has_xxx.hpp
deleted file mode 100644
index a4488ec..0000000
--- a/libcutl/cutl/details/boost/mpl/has_xxx.hpp
+++ /dev/null
@@ -1,640 +0,0 @@
-
-#ifndef BOOST_MPL_HAS_XXX_HPP_INCLUDED
-#define BOOST_MPL_HAS_XXX_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2006
-// Copyright David Abrahams 2002-2003
-// Copyright Daniel Walker 2007
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: has_xxx.hpp 64146 2010-07-19 00:46:31Z djwalker $
-// $Date: 2010-07-18 17:46:31 -0700 (Sun, 18 Jul 2010) $
-// $Revision: 64146 $
-
-#include <cutl/details/boost/mpl/bool.hpp>
-#include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-#include <cutl/details/boost/mpl/aux_/type_wrapper.hpp>
-#include <cutl/details/boost/mpl/aux_/yes_no.hpp>
-#include <cutl/details/boost/mpl/aux_/config/gcc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/has_xxx.hpp>
-#include <cutl/details/boost/mpl/aux_/config/msvc_typename.hpp>
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#include <cutl/details/boost/preprocessor/array/elem.hpp>
-#include <cutl/details/boost/preprocessor/cat.hpp>
-#include <cutl/details/boost/preprocessor/control/if.hpp>
-#include <cutl/details/boost/preprocessor/repetition/enum_params.hpp>
-#include <cutl/details/boost/preprocessor/repetition/enum_trailing_params.hpp>
-
-#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x590) )
-# include <cutl/details/boost/type_traits/is_class.hpp>
-#endif
-
-#if !defined(BOOST_MPL_CFG_NO_HAS_XXX)
-
-# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-
-// agurt, 11/sep/02: MSVC-specific version (< 7.1), based on a USENET
-// newsgroup's posting by John Madsen (comp.lang.c++.moderated,
-// 1999-11-12 19:17:06 GMT); the code is _not_ standard-conforming, but
-// it works way more reliably than the SFINAE-based implementation
-
-// Modified dwa 8/Oct/02 to handle reference types.
-
-# include <cutl/details/boost/mpl/if.hpp>
-# include <cutl/details/boost/mpl/bool.hpp>
-
-namespace cutl_details_boost { namespace mpl { namespace aux {
-
-struct has_xxx_tag;
-
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
-template< typename U > struct msvc_incomplete_array
-{
- typedef char (&type)[sizeof(U) + 1];
-};
-#endif
-
-template< typename T >
-struct msvc_is_incomplete
-{
- // MSVC is capable of some kinds of SFINAE. If U is an incomplete
- // type, it won't pick the second overload
- static char tester(...);
-
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
- template< typename U >
- static typename msvc_incomplete_array<U>::type tester(type_wrapper<U>);
-#else
- template< typename U >
- static char (& tester(type_wrapper<U>) )[sizeof(U)+1];
-#endif
-
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof(tester(type_wrapper<T>())) == 1
- );
-};
-
-template<>
-struct msvc_is_incomplete<int>
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-}}}
-
-# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, default_) \
-template< typename T, typename name = ::cutl_details_boost::mpl::aux::has_xxx_tag > \
-struct BOOST_PP_CAT(trait,_impl) : T \
-{ \
- static cutl_details_boost::mpl::aux::no_tag \
- test(void(*)(::cutl_details_boost::mpl::aux::has_xxx_tag)); \
- \
- static cutl_details_boost::mpl::aux::yes_tag test(...); \
- \
- BOOST_STATIC_CONSTANT(bool, value = \
- sizeof(test(static_cast<void(*)(name)>(0))) \
- != sizeof(cutl_details_boost::mpl::aux::no_tag) \
- ); \
- typedef cutl_details_boost::mpl::bool_<value> type; \
-}; \
-\
-template< typename T, typename fallback_ = cutl_details_boost::mpl::bool_<default_> > \
-struct trait \
- : cutl_details_boost::mpl::if_c< \
- cutl_details_boost::mpl::aux::msvc_is_incomplete<T>::value \
- , cutl_details_boost::mpl::bool_<false> \
- , BOOST_PP_CAT(trait,_impl)<T> \
- >::type \
-{ \
-}; \
-\
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, void) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, bool) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, char) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed char) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned char) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed short) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned short) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed int) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned int) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed long) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned long) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, float) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, double) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, long double) \
-/**/
-
-# define BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, T) \
-template<> struct trait<T> \
-{ \
- BOOST_STATIC_CONSTANT(bool, value = false); \
- typedef cutl_details_boost::mpl::bool_<false> type; \
-}; \
-/**/
-
-#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
-# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, unused) \
- BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, unused) \
- BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, wchar_t) \
-/**/
-#else
-# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, unused) \
- BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, unused) \
-/**/
-#endif
-
-
-// SFINAE-based implementations below are derived from a USENET newsgroup's
-// posting by Rani Sharoni (comp.lang.c++.moderated, 2002-03-17 07:45:09 PST)
-
-# elif BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
- || BOOST_WORKAROUND(__IBMCPP__, <= 700)
-
-// MSVC 7.1+ & VACPP
-
-// agurt, 15/jun/05: replace overload-based SFINAE implementation with SFINAE
-// applied to partial specialization to fix some apparently random failures
-// (thanks to Daniel Wallin for researching this!)
-
-# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
-template< typename T > \
-struct BOOST_PP_CAT(trait, _msvc_sfinae_helper) \
-{ \
- typedef void type; \
-};\
-\
-template< typename T, typename U = void > \
-struct BOOST_PP_CAT(trait,_impl_) \
-{ \
- BOOST_STATIC_CONSTANT(bool, value = false); \
- typedef cutl_details_boost::mpl::bool_<value> type; \
-}; \
-\
-template< typename T > \
-struct BOOST_PP_CAT(trait,_impl_)< \
- T \
- , typename BOOST_PP_CAT(trait, _msvc_sfinae_helper)< typename T::name >::type \
- > \
-{ \
- BOOST_STATIC_CONSTANT(bool, value = true); \
- typedef cutl_details_boost::mpl::bool_<value> type; \
-}; \
-\
-template< typename T, typename fallback_ = cutl_details_boost::mpl::bool_<default_> > \
-struct trait \
- : BOOST_PP_CAT(trait,_impl_)<T> \
-{ \
-}; \
-/**/
-
-# elif BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x590) )
-
-# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF(trait, trait_tester, name, default_) \
-template< typename T, bool IS_CLASS > \
-struct trait_tester \
-{ \
- BOOST_STATIC_CONSTANT( bool, value = false ); \
-}; \
-template< typename T > \
-struct trait_tester< T, true > \
-{ \
- struct trait_tester_impl \
- { \
- template < class U > \
- static int resolve( cutl_details_boost::mpl::aux::type_wrapper<U> const volatile * \
- , cutl_details_boost::mpl::aux::type_wrapper<typename U::name >* = 0 ); \
- static char resolve( ... ); \
- }; \
- typedef cutl_details_boost::mpl::aux::type_wrapper<T> t_; \
- BOOST_STATIC_CONSTANT( bool, value = ( sizeof( trait_tester_impl::resolve( static_cast< t_ * >(0) ) ) == sizeof(int) ) ); \
-}; \
-template< typename T, typename fallback_ = cutl_details_boost::mpl::bool_<default_> > \
-struct trait \
-{ \
- BOOST_STATIC_CONSTANT( bool, value = (trait_tester< T, cutl_details_boost::is_class< T >::value >::value) ); \
- typedef cutl_details_boost::mpl::bool_< trait< T, fallback_ >::value > type; \
-};
-
-# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
- BOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF( trait \
- , BOOST_PP_CAT(trait,_tester) \
- , name \
- , default_ ) \
-/**/
-
-# else // other SFINAE-capable compilers
-
-# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
-template< typename T, typename fallback_ = cutl_details_boost::mpl::bool_<default_> > \
-struct trait \
-{ \
- struct gcc_3_2_wknd \
- { \
- template< typename U > \
- static cutl_details_boost::mpl::aux::yes_tag test( \
- cutl_details_boost::mpl::aux::type_wrapper<U> const volatile* \
- , cutl_details_boost::mpl::aux::type_wrapper<BOOST_MSVC_TYPENAME U::name>* = 0 \
- ); \
- \
- static cutl_details_boost::mpl::aux::no_tag test(...); \
- }; \
- \
- typedef cutl_details_boost::mpl::aux::type_wrapper<T> t_; \
- BOOST_STATIC_CONSTANT(bool, value = \
- sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) \
- == sizeof(cutl_details_boost::mpl::aux::yes_tag) \
- ); \
- typedef cutl_details_boost::mpl::bool_<value> type; \
-}; \
-/**/
-
-# endif // BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-
-
-#else // BOOST_MPL_CFG_NO_HAS_XXX
-
-// placeholder implementation
-
-# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
-template< typename T, typename fallback_ = cutl_details_boost::mpl::bool_<default_> > \
-struct trait \
-{ \
- BOOST_STATIC_CONSTANT(bool, value = fallback_::value); \
- typedef fallback_ type; \
-}; \
-/**/
-
-#endif
-
-#define BOOST_MPL_HAS_XXX_TRAIT_DEF(name) \
- BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(BOOST_PP_CAT(has_,name), name, false) \
-/**/
-
-
-#if !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
-
-// Create a boolean Metafunction to detect a nested template
-// member. This implementation is based on a USENET newsgroup's
-// posting by Aleksey Gurtovoy (comp.lang.c++.moderated, 2002-03-19),
-// Rani Sharoni's USENET posting cited above, the non-template has_xxx
-// implementations above, and discussion on the Boost mailing list.
-
-# if !defined(BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES)
-# if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-# define BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES 1
-# endif
-# endif
-
-# if !defined(BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION)
-# if (defined(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS))
-# define BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION 1
-# endif
-# endif
-
-# if !defined(BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE)
-# if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-# define BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE 1
-# endif
-# endif
-
-// NOTE: Many internal implementation macros take a Boost.Preprocessor
-// array argument called args which is of the following form.
-// ( 4, ( trait, name, max_arity, default_ ) )
-
-# define BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
- BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _introspect) \
- /**/
-
-# define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
- BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _substitute), n) \
- /**/
-
-# define BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args) \
- BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _test) \
- /**/
-
-// Thanks to Guillaume Melquiond for pointing out the need for the
-// "substitute" template as an argument to the overloaded test
-// functions to get SFINAE to work for member templates with the
-// correct name but different number of arguments.
-# define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE(z, n, args) \
- template< \
- template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename V) > class V \
- > \
- struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) { \
- }; \
- /**/
-
-# define BOOST_MPL_HAS_MEMBER_SUBSTITUTE(args, substitute_macro) \
- BOOST_PP_REPEAT( \
- BOOST_PP_ARRAY_ELEM(2, args) \
- , BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE \
- , args \
- ) \
- /**/
-
-# if !BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION
-# define BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \
- template< typename V > \
- static cutl_details_boost::mpl::aux::no_tag \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)(...); \
- /**/
-# else
-# define BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \
- static cutl_details_boost::mpl::aux::no_tag \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)(...); \
- /**/
-# endif
-
-# if !BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES
-# define BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT(z, n, args) \
- template< typename V > \
- static cutl_details_boost::mpl::aux::yes_tag \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
- cutl_details_boost::mpl::aux::type_wrapper< V > const volatile* \
- , BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) < \
- V::template BOOST_PP_ARRAY_ELEM(1, args) \
- >* = 0 \
- ); \
- /**/
-# define BOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro) \
- BOOST_PP_REPEAT( \
- BOOST_PP_ARRAY_ELEM(2, args) \
- , BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT \
- , args \
- ) \
- /**/
-# else
-# define BOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro) \
- template< typename V > \
- static cutl_details_boost::mpl::aux::yes_tag \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
- V const volatile* \
- , member_macro(args, V, T)* = 0 \
- ); \
- /**/
-# endif
-
-# if !BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION
-# define BOOST_MPL_HAS_MEMBER_TEST(args) \
- sizeof(BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< U >(0)) \
- == sizeof(cutl_details_boost::mpl::aux::yes_tag) \
- /**/
-# else
-# if !BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES
-# define BOOST_MPL_HAS_MEMBER_TEST(args) \
- sizeof( \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
- static_cast< cutl_details_boost::mpl::aux::type_wrapper< U >* >(0) \
- ) \
- ) == sizeof(cutl_details_boost::mpl::aux::yes_tag) \
- /**/
-# else
-# define BOOST_MPL_HAS_MEMBER_TEST(args) \
- sizeof( \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
- static_cast< U* >(0) \
- ) \
- ) == sizeof(cutl_details_boost::mpl::aux::yes_tag) \
- /**/
-# endif
-# endif
-
-# define BOOST_MPL_HAS_MEMBER_INTROSPECT( \
- args, substitute_macro, member_macro \
- ) \
- template< typename U > \
- struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) { \
- BOOST_MPL_HAS_MEMBER_SUBSTITUTE(args, substitute_macro) \
- BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \
- BOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro) \
- BOOST_STATIC_CONSTANT( \
- bool, value = BOOST_MPL_HAS_MEMBER_TEST(args) \
- ); \
- typedef cutl_details_boost::mpl::bool_< value > type; \
- }; \
- /**/
-
-# define BOOST_MPL_HAS_MEMBER_IMPLEMENTATION( \
- args, introspect_macro, substitute_macro, member_macro \
- ) \
- template< \
- typename T \
- , typename fallback_ \
- = cutl_details_boost::mpl::bool_< BOOST_PP_ARRAY_ELEM(3, args) > \
- > \
- class BOOST_PP_ARRAY_ELEM(0, args) { \
- introspect_macro(args, substitute_macro, member_macro) \
- public: \
- static const bool value \
- = BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< T >::value; \
- typedef typename BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< \
- T \
- >::type type; \
- }; \
- /**/
-
-// BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE expands to the full
-// implementation of the function-based metafunction. Compile with -E
-// to see the preprocessor output for this macro.
-# define BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE( \
- args, substitute_macro, member_macro \
- ) \
- BOOST_MPL_HAS_MEMBER_IMPLEMENTATION( \
- args \
- , BOOST_MPL_HAS_MEMBER_INTROSPECT \
- , substitute_macro \
- , member_macro \
- ) \
- /**/
-
-# if BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE
-
-# if !defined(BOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE)
-# if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-# define BOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE 1
-# endif
-# endif
-
-# if !BOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE
-# define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
- args, n \
- ) \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
- /**/
-# else
-# define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
- args, n \
- ) \
- BOOST_PP_CAT( \
- boost_mpl_has_xxx_ \
- , BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
- ) \
- /**/
-# endif
-
-# define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME( \
- args \
- ) \
- BOOST_PP_CAT( \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
- args, 0 \
- ) \
- , _tag \
- ) \
- /**/
-
-# define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE_WITH_TEMPLATE_SFINAE( \
- z, n, args \
- ) \
- template< \
- template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename U) > class U \
- > \
- struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
- args, n \
- ) { \
- typedef \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args) \
- type; \
- }; \
- /**/
-
-# define BOOST_MPL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE( \
- args, substitute_macro \
- ) \
- typedef void \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args); \
- BOOST_PP_REPEAT( \
- BOOST_PP_ARRAY_ELEM(2, args) \
- , BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE_WITH_TEMPLATE_SFINAE \
- , args \
- ) \
- /**/
-
-# define BOOST_MPL_HAS_MEMBER_REJECT_WITH_TEMPLATE_SFINAE( \
- args, member_macro \
- ) \
- template< \
- typename U \
- , typename V \
- = BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args) \
- > \
- struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args) { \
- BOOST_STATIC_CONSTANT(bool, value = false); \
- typedef cutl_details_boost::mpl::bool_< value > type; \
- }; \
- /**/
-
-# define BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT_WITH_TEMPLATE_SFINAE( \
- z, n, args \
- ) \
- template< typename U > \
- struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< \
- U \
- , typename \
- BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
- args, n \
- )< \
- BOOST_MSVC_TYPENAME U::BOOST_PP_ARRAY_ELEM(1, args)< > \
- >::type \
- > { \
- BOOST_STATIC_CONSTANT(bool, value = true); \
- typedef cutl_details_boost::mpl::bool_< value > type; \
- }; \
- /**/
-
-# define BOOST_MPL_HAS_MEMBER_ACCEPT_WITH_TEMPLATE_SFINAE( \
- args, member_macro \
- ) \
- BOOST_PP_REPEAT( \
- BOOST_PP_ARRAY_ELEM(2, args) \
- , BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT_WITH_TEMPLATE_SFINAE \
- , args \
- ) \
- /**/
-
-# define BOOST_MPL_HAS_MEMBER_INTROSPECT_WITH_TEMPLATE_SFINAE( \
- args, substitute_macro, member_macro \
- ) \
- BOOST_MPL_HAS_MEMBER_REJECT_WITH_TEMPLATE_SFINAE(args, member_macro) \
- BOOST_MPL_HAS_MEMBER_ACCEPT_WITH_TEMPLATE_SFINAE(args, member_macro) \
- template< typename U > \
- struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
- : BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< U > { \
- }; \
- /**/
-
-// BOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE expands to the full
-// implementation of the template-based metafunction. Compile with -E
-// to see the preprocessor output for this macro.
-//
-// Note that if BOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE is
-// defined BOOST_MPL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE needs
-// to be expanded at namespace level before
-// BOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE can be used.
-# define BOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE( \
- args, substitute_macro, member_macro \
- ) \
- BOOST_MPL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE( \
- args, substitute_macro \
- ) \
- BOOST_MPL_HAS_MEMBER_IMPLEMENTATION( \
- args \
- , BOOST_MPL_HAS_MEMBER_INTROSPECT_WITH_TEMPLATE_SFINAE \
- , substitute_macro \
- , member_macro \
- ) \
- /**/
-
-# endif // BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE
-
-// Note: In the current implementation the parameter and access macros
-// are no longer expanded.
-# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-# define BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_) \
- BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE( \
- ( 4, ( trait, name, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, default_ ) ) \
- , BOOST_MPL_HAS_MEMBER_TEMPLATE_SUBSTITUTE_PARAMETER \
- , BOOST_MPL_HAS_MEMBER_TEMPLATE_ACCESS \
- ) \
- /**/
-# else
-# define BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_) \
- BOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE( \
- ( 4, ( trait, name, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, default_ ) ) \
- , BOOST_MPL_HAS_MEMBER_TEMPLATE_SUBSTITUTE_PARAMETER \
- , BOOST_MPL_HAS_MEMBER_TEMPLATE_ACCESS \
- ) \
- /**/
-# endif
-
-#else // BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
-
-// placeholder implementation
-
-# define BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_) \
- template< typename T \
- , typename fallback_ = cutl_details_boost::mpl::bool_< default_ > > \
- struct trait { \
- BOOST_STATIC_CONSTANT(bool, value = fallback_::value); \
- typedef fallback_ type; \
- }; \
- /**/
-
-#endif // BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
-
-# define BOOST_MPL_HAS_XXX_TEMPLATE_DEF(name) \
- BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF( \
- BOOST_PP_CAT(has_, name), name, false \
- ) \
- /**/
-
-#endif // BOOST_MPL_HAS_XXX_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/identity.hpp b/libcutl/cutl/details/boost/mpl/identity.hpp
deleted file mode 100644
index 4f4828f..0000000
--- a/libcutl/cutl/details/boost/mpl/identity.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-
-#ifndef BOOST_MPL_IDENTITY_HPP_INCLUDED
-#define BOOST_MPL_IDENTITY_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: identity.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-#include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(T)
- >
-struct identity
-{
- typedef T type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1, identity, (T))
-};
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(T)
- >
-struct make_identity
-{
- typedef identity<T> type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1, make_identity, (T))
-};
-
-BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, identity)
-BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, make_identity)
-
-}}
-
-#endif // BOOST_MPL_IDENTITY_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/if.hpp b/libcutl/cutl/details/boost/mpl/if.hpp
deleted file mode 100644
index 2b91da4..0000000
--- a/libcutl/cutl/details/boost/mpl/if.hpp
+++ /dev/null
@@ -1,135 +0,0 @@
-
-#ifndef BOOST_MPL_IF_HPP_INCLUDED
-#define BOOST_MPL_IF_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: if.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/value_wknd.hpp>
-#include <cutl/details/boost/mpl/aux_/static_cast.hpp>
-#include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-#include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-#include <cutl/details/boost/mpl/aux_/config/integral.hpp>
-#include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-template<
- bool C
- , typename T1
- , typename T2
- >
-struct if_c
-{
- typedef T1 type;
-};
-
-template<
- typename T1
- , typename T2
- >
-struct if_c<false,T1,T2>
-{
- typedef T2 type;
-};
-
-// agurt, 05/sep/04: nondescriptive parameter names for the sake of DigitalMars
-// (and possibly MWCW < 8.0); see http://article.gmane.org/gmane.comp.lib.boost.devel/108959
-template<
- typename BOOST_MPL_AUX_NA_PARAM(T1)
- , typename BOOST_MPL_AUX_NA_PARAM(T2)
- , typename BOOST_MPL_AUX_NA_PARAM(T3)
- >
-struct if_
-{
- private:
- // agurt, 02/jan/03: two-step 'type' definition for the sake of aCC
- typedef if_c<
-#if defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS)
- BOOST_MPL_AUX_VALUE_WKND(T1)::value
-#else
- BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value)
-#endif
- , T2
- , T3
- > almost_type_;
-
- public:
- typedef typename almost_type_::type type;
-
- BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(T1,T2,T3))
-};
-
-#else
-
-// no partial class template specialization
-
-namespace aux {
-
-template< bool C >
-struct if_impl
-{
- template< typename T1, typename T2 > struct result_
- {
- typedef T1 type;
- };
-};
-
-template<>
-struct if_impl<false>
-{
- template< typename T1, typename T2 > struct result_
- {
- typedef T2 type;
- };
-};
-
-} // namespace aux
-
-template<
- bool C_
- , typename T1
- , typename T2
- >
-struct if_c
-{
- typedef typename aux::if_impl< C_ >
- ::template result_<T1,T2>::type type;
-};
-
-// (almost) copy & paste in order to save one more
-// recursively nested template instantiation to user
-template<
- typename BOOST_MPL_AUX_NA_PARAM(C_)
- , typename BOOST_MPL_AUX_NA_PARAM(T1)
- , typename BOOST_MPL_AUX_NA_PARAM(T2)
- >
-struct if_
-{
- enum { msvc_wknd_ = BOOST_MPL_AUX_MSVC_VALUE_WKND(C_)::value };
-
- typedef typename aux::if_impl< BOOST_MPL_AUX_STATIC_CAST(bool, msvc_wknd_) >
- ::template result_<T1,T2>::type type;
-
- BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(C_,T1,T2))
-};
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-BOOST_MPL_AUX_NA_SPEC(3, if_)
-
-}}
-
-#endif // BOOST_MPL_IF_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/int.hpp b/libcutl/cutl/details/boost/mpl/int.hpp
deleted file mode 100644
index 89e0841..0000000
--- a/libcutl/cutl/details/boost/mpl/int.hpp
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#ifndef BOOST_MPL_INT_HPP_INCLUDED
-#define BOOST_MPL_INT_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: int.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/int_fwd.hpp>
-
-#define AUX_WRAPPER_VALUE_TYPE int
-#include <cutl/details/boost/mpl/aux_/integral_wrapper.hpp>
-
-#endif // BOOST_MPL_INT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/int_fwd.hpp b/libcutl/cutl/details/boost/mpl/int_fwd.hpp
deleted file mode 100644
index 8489e0a..0000000
--- a/libcutl/cutl/details/boost/mpl/int_fwd.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-
-#ifndef BOOST_MPL_INT_FWD_HPP_INCLUDED
-#define BOOST_MPL_INT_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: int_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/adl_barrier.hpp>
-#include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct int_;
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(int_)
-
-#endif // BOOST_MPL_INT_FWD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/integral_c.hpp b/libcutl/cutl/details/boost/mpl/integral_c.hpp
deleted file mode 100644
index eba13b3..0000000
--- a/libcutl/cutl/details/boost/mpl/integral_c.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#ifndef BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
-#define BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2006
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: integral_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/integral_c_fwd.hpp>
-#include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-#if BOOST_WORKAROUND(__HP_aCC, <= 53800)
-// the type of non-type template arguments may not depend on template arguments
-# define AUX_WRAPPER_PARAMS(N) typename T, long N
-#else
-# define AUX_WRAPPER_PARAMS(N) typename T, T N
-#endif
-
-#define AUX_WRAPPER_NAME integral_c
-#define AUX_WRAPPER_VALUE_TYPE T
-#define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< T, value >
-#include <cutl/details/boost/mpl/aux_/integral_wrapper.hpp>
-
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !BOOST_WORKAROUND(__BORLANDC__, <= 0x551)
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-// 'bool' constant doesn't have 'next'/'prior' members
-template< bool C >
-struct integral_c<bool, C>
-{
- BOOST_STATIC_CONSTANT(bool, value = C);
- typedef integral_c_tag tag;
- typedef integral_c type;
- typedef bool value_type;
- operator bool() const { return this->value; }
-};
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-#endif
-
-#endif // BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/integral_c_fwd.hpp b/libcutl/cutl/details/boost/mpl/integral_c_fwd.hpp
deleted file mode 100644
index a296cbc..0000000
--- a/libcutl/cutl/details/boost/mpl/integral_c_fwd.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#ifndef BOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
-#define BOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2006
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: integral_c_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-#include <cutl/details/boost/mpl/aux_/adl_barrier.hpp>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-#if BOOST_WORKAROUND(__HP_aCC, <= 53800)
-// the type of non-type template arguments may not depend on template arguments
-template< typename T, long N > struct integral_c;
-#else
-template< typename T, T N > struct integral_c;
-#endif
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(integral_c)
-
-#endif // BOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/integral_c_tag.hpp b/libcutl/cutl/details/boost/mpl/integral_c_tag.hpp
deleted file mode 100644
index ef8ba45..0000000
--- a/libcutl/cutl/details/boost/mpl/integral_c_tag.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-
-#ifndef BOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
-#define BOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: integral_c_tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-
-#include <cutl/details/boost/mpl/aux_/adl_barrier.hpp>
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-struct integral_c_tag { BOOST_STATIC_CONSTANT(int, value = 0); };
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(integral_c_tag)
-
-#endif // BOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/is_placeholder.hpp b/libcutl/cutl/details/boost/mpl/is_placeholder.hpp
deleted file mode 100644
index c290fd3..0000000
--- a/libcutl/cutl/details/boost/mpl/is_placeholder.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-
-#ifndef BOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
-#define BOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: is_placeholder.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/arg_fwd.hpp>
-#include <cutl/details/boost/mpl/bool.hpp>
-#include <cutl/details/boost/mpl/aux_/yes_no.hpp>
-#include <cutl/details/boost/mpl/aux_/type_wrapper.hpp>
-#include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-#include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-#include <cutl/details/boost/mpl/aux_/config/static_constant.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-template< typename T >
-struct is_placeholder
- : bool_<false>
-{
-};
-
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
-struct is_placeholder< arg<N> >
- : bool_<true>
-{
-};
-
-#else
-
-namespace aux {
-
-aux::no_tag is_placeholder_helper(...);
-
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
-aux::yes_tag is_placeholder_helper(aux::type_wrapper< arg<N> >*);
-
-} // namespace aux
-
-template< typename T >
-struct is_placeholder
-{
- static aux::type_wrapper<T>* get();
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof(aux::is_placeholder_helper(get())) == sizeof(aux::yes_tag)
- );
-
- typedef bool_<value> type;
-};
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-}}
-
-#endif // BOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/lambda.hpp b/libcutl/cutl/details/boost/mpl/lambda.hpp
deleted file mode 100644
index 515c437..0000000
--- a/libcutl/cutl/details/boost/mpl/lambda.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifndef BOOST_MPL_LAMBDA_HPP_INCLUDED
-#define BOOST_MPL_LAMBDA_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: lambda.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/lambda_fwd.hpp>
-#include <cutl/details/boost/mpl/bind.hpp>
-#include <cutl/details/boost/mpl/aux_/config/lambda.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
-# include <cutl/details/boost/mpl/aux_/full_lambda.hpp>
-#else
-# include <cutl/details/boost/mpl/aux_/lambda_no_ctps.hpp>
-# include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-# define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
-#endif
-
-#endif // BOOST_MPL_LAMBDA_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/lambda_fwd.hpp b/libcutl/cutl/details/boost/mpl/lambda_fwd.hpp
deleted file mode 100644
index b380e71..0000000
--- a/libcutl/cutl/details/boost/mpl/lambda_fwd.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-
-#ifndef BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
-#define BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: lambda_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/void_fwd.hpp>
-#include <cutl/details/boost/mpl/aux_/na.hpp>
-#include <cutl/details/boost/mpl/aux_/config/lambda.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
-
-# include <cutl/details/boost/mpl/int.hpp>
-# include <cutl/details/boost/mpl/aux_/lambda_arity_param.hpp>
-# include <cutl/details/boost/mpl/aux_/template_arity_fwd.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-template<
- typename T = na
- , typename Tag = void_
- BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(
- typename Arity = int_< aux::template_arity<T>::value >
- )
- >
-struct lambda;
-
-}}
-
-#else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
-
-# include <cutl/details/boost/mpl/bool.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-template<
- typename T = na
- , typename Tag = void_
- , typename Protect = true_
- >
-struct lambda;
-
-}}
-
-#endif
-
-#endif // BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/limits/arity.hpp b/libcutl/cutl/details/boost/mpl/limits/arity.hpp
deleted file mode 100644
index 9da70ab..0000000
--- a/libcutl/cutl/details/boost/mpl/limits/arity.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#ifndef BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
-#define BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: arity.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
-# define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 5
-#endif
-
-#endif // BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/next.hpp b/libcutl/cutl/details/boost/mpl/next.hpp
deleted file mode 100644
index 8178e2c..0000000
--- a/libcutl/cutl/details/boost/mpl/next.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#ifndef BOOST_MPL_NEXT_HPP_INCLUDED
-#define BOOST_MPL_NEXT_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: next.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/next_prior.hpp>
-
-#endif // BOOST_MPL_NEXT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/next_prior.hpp b/libcutl/cutl/details/boost/mpl/next_prior.hpp
deleted file mode 100644
index f4f24d4..0000000
--- a/libcutl/cutl/details/boost/mpl/next_prior.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-
-#ifndef BOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
-#define BOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: next_prior.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/common_name_wknd.hpp>
-#include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-#include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-BOOST_MPL_AUX_COMMON_NAME_WKND(next)
-BOOST_MPL_AUX_COMMON_NAME_WKND(prior)
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(T)
- >
-struct next
-{
- typedef typename T::next type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,next,(T))
-};
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(T)
- >
-struct prior
-{
- typedef typename T::prior type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,prior,(T))
-};
-
-BOOST_MPL_AUX_NA_SPEC(1, next)
-BOOST_MPL_AUX_NA_SPEC(1, prior)
-
-}}
-
-#endif // BOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/not.hpp b/libcutl/cutl/details/boost/mpl/not.hpp
deleted file mode 100644
index 18f8adc..0000000
--- a/libcutl/cutl/details/boost/mpl/not.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#ifndef BOOST_MPL_NOT_HPP_INCLUDED
-#define BOOST_MPL_NOT_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: not.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/bool.hpp>
-#include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-#include <cutl/details/boost/mpl/aux_/nested_type_wknd.hpp>
-#include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-#include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-namespace aux {
-
-template< BOOST_MPL_AUX_NTTP_DECL(long, C_) > // 'long' is intentional here
-struct not_impl
- : bool_<!C_>
-{
-};
-
-} // namespace aux
-
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(T)
- >
-struct not_
- : aux::not_impl<
- BOOST_MPL_AUX_NESTED_TYPE_WKND(T)::value
- >
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,not_,(T))
-};
-
-BOOST_MPL_AUX_NA_SPEC(1,not_)
-
-}}
-
-#endif // BOOST_MPL_NOT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/or.hpp b/libcutl/cutl/details/boost/mpl/or.hpp
deleted file mode 100644
index 1b1f783..0000000
--- a/libcutl/cutl/details/boost/mpl/or.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-
-#ifndef BOOST_MPL_OR_HPP_INCLUDED
-#define BOOST_MPL_OR_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: or.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# include <cutl/details/boost/mpl/bool.hpp>
-# include <cutl/details/boost/mpl/aux_/nested_type_wknd.hpp>
-# include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-# include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-# include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-
-// agurt, 19/may/04: workaround a conflict with <iso646.h> header's
-// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(or)'
-// has to be checked in a separate condition, otherwise GCC complains
-// about 'or' being an alternative token
-#if defined(_MSC_VER)
-#ifndef __GCCXML__
-#if defined(or)
-# pragma push_macro("or")
-# undef or
-# define or(x)
-#endif
-#endif
-#endif
-
-# define BOOST_MPL_PREPROCESSED_HEADER or.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#if defined(_MSC_VER)
-#ifndef __GCCXML__
-#if defined(or)
-# pragma pop_macro("or")
-#endif
-#endif
-#endif
-
-#else
-
-# define AUX778076_OP_NAME or_
-# define AUX778076_OP_VALUE1 true
-# define AUX778076_OP_VALUE2 false
-# include <cutl/details/boost/mpl/aux_/logical_op.hpp>
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_OR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/placeholders.hpp b/libcutl/cutl/details/boost/mpl/placeholders.hpp
deleted file mode 100644
index 8ff3679..0000000
--- a/libcutl/cutl/details/boost/mpl/placeholders.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
-#define BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-// Copyright Peter Dimov 2001-2003
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: placeholders.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/arg.hpp>
-# include <cutl/details/boost/mpl/aux_/adl_barrier.hpp>
-
-# if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
-# define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) \
- using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
- /**/
-# else
-# define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) /**/
-# endif
-
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER placeholders.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-// watch out for GNU gettext users, who #define _(x)
-#if !defined(_) || defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-typedef arg<-1> _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-
-namespace cutl_details_boost { namespace mpl {
-
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
-
-namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
-}
-
-}}
-#endif
-
-/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
-/// specialization
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY + 1, <cutl/details/boost/mpl/placeholders.hpp>))
-#include BOOST_PP_ITERATE()
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-typedef arg<i_> BOOST_PP_CAT(_,i_);
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-
-namespace cutl_details_boost { namespace mpl {
-
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(BOOST_PP_CAT(_,i_))
-
-namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::BOOST_PP_CAT(_,i_);
-}
-
-}}
-
-#undef i_
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/protect.hpp b/libcutl/cutl/details/boost/mpl/protect.hpp
deleted file mode 100644
index 2def86b..0000000
--- a/libcutl/cutl/details/boost/mpl/protect.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-
-#ifndef BOOST_MPL_PROTECT_HPP_INCLUDED
-#define BOOST_MPL_PROTECT_HPP_INCLUDED
-
-// Copyright Peter Dimov 2001
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: protect.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/arity.hpp>
-#include <cutl/details/boost/mpl/aux_/config/dtp.hpp>
-#include <cutl/details/boost/mpl/aux_/nttp_decl.hpp>
-#include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-
-namespace cutl_details_boost { namespace mpl {
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(T)
- , int not_le_ = 0
- >
-struct protect : T
-{
-#if BOOST_WORKAROUND(__EDG_VERSION__, == 238)
- typedef mpl::protect type;
-#else
- typedef protect type;
-#endif
-};
-
-#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-namespace aux {
-template< BOOST_MPL_AUX_NTTP_DECL(int, N), typename T >
-struct arity< protect<T>, N >
- : arity<T,N>
-{
-};
-} // namespace aux
-#endif
-
-BOOST_MPL_AUX_NA_SPEC_MAIN(1, protect)
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
-BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(1, 1, protect)
-#endif
-
-}}
-
-#endif // BOOST_MPL_PROTECT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/quote.hpp b/libcutl/cutl/details/boost/mpl/quote.hpp
deleted file mode 100644
index f181455..0000000
--- a/libcutl/cutl/details/boost/mpl/quote.hpp
+++ /dev/null
@@ -1,151 +0,0 @@
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_MPL_QUOTE_HPP_INCLUDED
-#define BOOST_MPL_QUOTE_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2008
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: quote.hpp 49272 2008-10-11 06:50:46Z agurtovoy $
-// $Date: 2008-10-10 23:50:46 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49272 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <cutl/details/boost/mpl/void.hpp>
-# include <cutl/details/boost/mpl/aux_/has_type.hpp>
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/bcc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/ttp.hpp>
-
-#if defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
- && !defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS)
-# define BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
-#endif
-
-#if !defined(BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS) \
- && defined(BOOST_MPL_CFG_NO_HAS_XXX)
-# define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
-#endif
-
-#include <cutl/details/boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER quote.hpp
-# include <cutl/details/boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# include <cutl/details/boost/mpl/limits/arity.hpp>
-# include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-# include <cutl/details/boost/mpl/aux_/config/ctps.hpp>
-# include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_QUOTE_TEMPLATE)
-
-namespace cutl_details_boost { namespace mpl {
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-template< typename T, bool has_type_ >
-struct quote_impl
-// GCC has a problem with metafunction forwarding when T is a
-// specialization of a template called 'type'.
-# if BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4)) \
- && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(0)) \
- && BOOST_WORKAROUND(__GNUC_PATCHLEVEL__, BOOST_TESTED_AT(2))
-{
- typedef typename T::type type;
-};
-# else
- : T
-{
-};
-# endif
-
-template< typename T >
-struct quote_impl<T,false>
-{
- typedef T type;
-};
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-template< bool > struct quote_impl
-{
- template< typename T > struct result_
- : T
- {
- };
-};
-
-template<> struct quote_impl<false>
-{
- template< typename T > struct result_
- {
- typedef T type;
- };
-};
-
-#endif
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <cutl/details/boost/mpl/quote.hpp>))
-#include BOOST_PP_ITERATE()
-
-}}
-
-#endif // BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_QUOTE_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
-
-template<
- template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
- , typename Tag = void_
- >
-struct BOOST_PP_CAT(quote,i_)
-{
- template< BOOST_MPL_PP_PARAMS(i_, typename U) > struct apply
-#if defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS)
- {
- typedef typename quote_impl<
- F< BOOST_MPL_PP_PARAMS(i_, U) >
- , aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value
- >::type type;
- };
-#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- : quote_impl<
- F< BOOST_MPL_PP_PARAMS(i_, U) >
- , aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value
- >
- {
- };
-#else
- : quote_impl< aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value >
- ::template result_< F< BOOST_MPL_PP_PARAMS(i_, U) > >
- {
- };
-#endif
-};
-
-#undef i_
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/mpl/size_t.hpp b/libcutl/cutl/details/boost/mpl/size_t.hpp
deleted file mode 100644
index b7b8cb3..0000000
--- a/libcutl/cutl/details/boost/mpl/size_t.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_MPL_SIZE_T_HPP_INCLUDED
-#define BOOST_MPL_SIZE_T_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: size_t.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/size_t_fwd.hpp>
-
-#define AUX_WRAPPER_VALUE_TYPE std::size_t
-#define AUX_WRAPPER_NAME size_t
-#define AUX_WRAPPER_PARAMS(N) std::size_t N
-
-#include <cutl/details/boost/mpl/aux_/integral_wrapper.hpp>
-
-#endif // BOOST_MPL_SIZE_T_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/size_t_fwd.hpp b/libcutl/cutl/details/boost/mpl/size_t_fwd.hpp
deleted file mode 100644
index 5e5475e..0000000
--- a/libcutl/cutl/details/boost/mpl/size_t_fwd.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-
-#ifndef BOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
-#define BOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: size_t_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/adl_barrier.hpp>
-#include <cutl/details/boost/config.hpp> // make sure 'size_t' is placed into 'std'
-#include <cstddef>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-template< std::size_t N > struct size_t;
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(size_t)
-
-#endif // BOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/void.hpp b/libcutl/cutl/details/boost/mpl/void.hpp
deleted file mode 100644
index c260152..0000000
--- a/libcutl/cutl/details/boost/mpl/void.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-
-#ifndef BOOST_MPL_VOID_HPP_INCLUDED
-#define BOOST_MPL_VOID_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: void.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/void_fwd.hpp>
-#include <cutl/details/boost/mpl/bool.hpp>
-#include <cutl/details/boost/mpl/aux_/na_spec.hpp>
-#include <cutl/details/boost/mpl/aux_/config/msvc.hpp>
-#include <cutl/details/boost/mpl/aux_/config/workaround.hpp>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-// [JDG Feb-4-2003] made void_ a complete type to allow it to be
-// instantiated so that it can be passed in as an object that can be
-// used to select an overloaded function. Possible use includes signaling
-// a zero arity functor evaluation call.
-struct void_ { typedef void_ type; };
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-
-namespace cutl_details_boost { namespace mpl {
-
-template< typename T >
-struct is_void_
- : false_
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- using false_::value;
-#endif
-};
-
-template<>
-struct is_void_<void_>
- : true_
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- using true_::value;
-#endif
-};
-
-template< typename T >
-struct is_not_void_
- : true_
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- using true_::value;
-#endif
-};
-
-template<>
-struct is_not_void_<void_>
- : false_
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- using false_::value;
-#endif
-};
-
-BOOST_MPL_AUX_NA_SPEC(1, is_void_)
-BOOST_MPL_AUX_NA_SPEC(1, is_not_void_)
-
-}}
-
-#endif // BOOST_MPL_VOID_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/mpl/void_fwd.hpp b/libcutl/cutl/details/boost/mpl/void_fwd.hpp
deleted file mode 100644
index b59b025..0000000
--- a/libcutl/cutl/details/boost/mpl/void_fwd.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-
-#ifndef BOOST_MPL_VOID_FWD_HPP_INCLUDED
-#define BOOST_MPL_VOID_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: void_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
-// $Revision: 49267 $
-
-#include <cutl/details/boost/mpl/aux_/adl_barrier.hpp>
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-
-struct void_;
-
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(void_)
-
-#endif // BOOST_MPL_VOID_FWD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/non_type.hpp b/libcutl/cutl/details/boost/non_type.hpp
deleted file mode 100644
index a50bd9d..0000000
--- a/libcutl/cutl/details/boost/non_type.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// -------------------------------------
-//
-// (C) Copyright Gennaro Prota 2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// ------------------------------------------------------
-
-#ifndef BOOST_NON_TYPE_HPP_GP_20030417
-#define BOOST_NON_TYPE_HPP_GP_20030417
-
-
-namespace cutl_details_boost {
-
- // Just a simple "envelope" for non-type template parameters. Useful
- // to work around some MSVC deficiencies.
-
- template <typename T, T n>
- struct non_type { };
-
-
-}
-
-
-#endif // include guard
diff --git a/libcutl/cutl/details/boost/preprocessor/arithmetic/add.hpp b/libcutl/cutl/details/boost/preprocessor/arithmetic/add.hpp
deleted file mode 100644
index 070fde7..0000000
--- a/libcutl/cutl/details/boost/preprocessor/arithmetic/add.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
-# define BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
-#
-# include <cutl/details/boost/preprocessor/arithmetic/dec.hpp>
-# include <cutl/details/boost/preprocessor/arithmetic/inc.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/control/while.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-#
-# /* BOOST_PP_ADD */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ADD(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
-# else
-# define BOOST_PP_ADD(x, y) BOOST_PP_ADD_I(x, y)
-# define BOOST_PP_ADD_I(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
-# endif
-#
-# define BOOST_PP_ADD_P(d, xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_ADD_O(d, xy) BOOST_PP_ADD_O_I xy
-# else
-# define BOOST_PP_ADD_O(d, xy) BOOST_PP_ADD_O_I(BOOST_PP_TUPLE_ELEM(2, 0, xy), BOOST_PP_TUPLE_ELEM(2, 1, xy))
-# endif
-#
-# define BOOST_PP_ADD_O_I(x, y) (BOOST_PP_INC(x), BOOST_PP_DEC(y))
-#
-# /* BOOST_PP_ADD_D */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ADD_D(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
-# else
-# define BOOST_PP_ADD_D(d, x, y) BOOST_PP_ADD_D_I(d, x, y)
-# define BOOST_PP_ADD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/arithmetic/dec.hpp b/libcutl/cutl/details/boost/preprocessor/arithmetic/dec.hpp
deleted file mode 100644
index 4ca070c..0000000
--- a/libcutl/cutl/details/boost/preprocessor/arithmetic/dec.hpp
+++ /dev/null
@@ -1,288 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DEC_HPP
-# define BOOST_PREPROCESSOR_ARITHMETIC_DEC_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_DEC */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_DEC(x) BOOST_PP_DEC_I(x)
-# else
-# define BOOST_PP_DEC(x) BOOST_PP_DEC_OO((x))
-# define BOOST_PP_DEC_OO(par) BOOST_PP_DEC_I ## par
-# endif
-#
-# define BOOST_PP_DEC_I(x) BOOST_PP_DEC_ ## x
-#
-# define BOOST_PP_DEC_0 0
-# define BOOST_PP_DEC_1 0
-# define BOOST_PP_DEC_2 1
-# define BOOST_PP_DEC_3 2
-# define BOOST_PP_DEC_4 3
-# define BOOST_PP_DEC_5 4
-# define BOOST_PP_DEC_6 5
-# define BOOST_PP_DEC_7 6
-# define BOOST_PP_DEC_8 7
-# define BOOST_PP_DEC_9 8
-# define BOOST_PP_DEC_10 9
-# define BOOST_PP_DEC_11 10
-# define BOOST_PP_DEC_12 11
-# define BOOST_PP_DEC_13 12
-# define BOOST_PP_DEC_14 13
-# define BOOST_PP_DEC_15 14
-# define BOOST_PP_DEC_16 15
-# define BOOST_PP_DEC_17 16
-# define BOOST_PP_DEC_18 17
-# define BOOST_PP_DEC_19 18
-# define BOOST_PP_DEC_20 19
-# define BOOST_PP_DEC_21 20
-# define BOOST_PP_DEC_22 21
-# define BOOST_PP_DEC_23 22
-# define BOOST_PP_DEC_24 23
-# define BOOST_PP_DEC_25 24
-# define BOOST_PP_DEC_26 25
-# define BOOST_PP_DEC_27 26
-# define BOOST_PP_DEC_28 27
-# define BOOST_PP_DEC_29 28
-# define BOOST_PP_DEC_30 29
-# define BOOST_PP_DEC_31 30
-# define BOOST_PP_DEC_32 31
-# define BOOST_PP_DEC_33 32
-# define BOOST_PP_DEC_34 33
-# define BOOST_PP_DEC_35 34
-# define BOOST_PP_DEC_36 35
-# define BOOST_PP_DEC_37 36
-# define BOOST_PP_DEC_38 37
-# define BOOST_PP_DEC_39 38
-# define BOOST_PP_DEC_40 39
-# define BOOST_PP_DEC_41 40
-# define BOOST_PP_DEC_42 41
-# define BOOST_PP_DEC_43 42
-# define BOOST_PP_DEC_44 43
-# define BOOST_PP_DEC_45 44
-# define BOOST_PP_DEC_46 45
-# define BOOST_PP_DEC_47 46
-# define BOOST_PP_DEC_48 47
-# define BOOST_PP_DEC_49 48
-# define BOOST_PP_DEC_50 49
-# define BOOST_PP_DEC_51 50
-# define BOOST_PP_DEC_52 51
-# define BOOST_PP_DEC_53 52
-# define BOOST_PP_DEC_54 53
-# define BOOST_PP_DEC_55 54
-# define BOOST_PP_DEC_56 55
-# define BOOST_PP_DEC_57 56
-# define BOOST_PP_DEC_58 57
-# define BOOST_PP_DEC_59 58
-# define BOOST_PP_DEC_60 59
-# define BOOST_PP_DEC_61 60
-# define BOOST_PP_DEC_62 61
-# define BOOST_PP_DEC_63 62
-# define BOOST_PP_DEC_64 63
-# define BOOST_PP_DEC_65 64
-# define BOOST_PP_DEC_66 65
-# define BOOST_PP_DEC_67 66
-# define BOOST_PP_DEC_68 67
-# define BOOST_PP_DEC_69 68
-# define BOOST_PP_DEC_70 69
-# define BOOST_PP_DEC_71 70
-# define BOOST_PP_DEC_72 71
-# define BOOST_PP_DEC_73 72
-# define BOOST_PP_DEC_74 73
-# define BOOST_PP_DEC_75 74
-# define BOOST_PP_DEC_76 75
-# define BOOST_PP_DEC_77 76
-# define BOOST_PP_DEC_78 77
-# define BOOST_PP_DEC_79 78
-# define BOOST_PP_DEC_80 79
-# define BOOST_PP_DEC_81 80
-# define BOOST_PP_DEC_82 81
-# define BOOST_PP_DEC_83 82
-# define BOOST_PP_DEC_84 83
-# define BOOST_PP_DEC_85 84
-# define BOOST_PP_DEC_86 85
-# define BOOST_PP_DEC_87 86
-# define BOOST_PP_DEC_88 87
-# define BOOST_PP_DEC_89 88
-# define BOOST_PP_DEC_90 89
-# define BOOST_PP_DEC_91 90
-# define BOOST_PP_DEC_92 91
-# define BOOST_PP_DEC_93 92
-# define BOOST_PP_DEC_94 93
-# define BOOST_PP_DEC_95 94
-# define BOOST_PP_DEC_96 95
-# define BOOST_PP_DEC_97 96
-# define BOOST_PP_DEC_98 97
-# define BOOST_PP_DEC_99 98
-# define BOOST_PP_DEC_100 99
-# define BOOST_PP_DEC_101 100
-# define BOOST_PP_DEC_102 101
-# define BOOST_PP_DEC_103 102
-# define BOOST_PP_DEC_104 103
-# define BOOST_PP_DEC_105 104
-# define BOOST_PP_DEC_106 105
-# define BOOST_PP_DEC_107 106
-# define BOOST_PP_DEC_108 107
-# define BOOST_PP_DEC_109 108
-# define BOOST_PP_DEC_110 109
-# define BOOST_PP_DEC_111 110
-# define BOOST_PP_DEC_112 111
-# define BOOST_PP_DEC_113 112
-# define BOOST_PP_DEC_114 113
-# define BOOST_PP_DEC_115 114
-# define BOOST_PP_DEC_116 115
-# define BOOST_PP_DEC_117 116
-# define BOOST_PP_DEC_118 117
-# define BOOST_PP_DEC_119 118
-# define BOOST_PP_DEC_120 119
-# define BOOST_PP_DEC_121 120
-# define BOOST_PP_DEC_122 121
-# define BOOST_PP_DEC_123 122
-# define BOOST_PP_DEC_124 123
-# define BOOST_PP_DEC_125 124
-# define BOOST_PP_DEC_126 125
-# define BOOST_PP_DEC_127 126
-# define BOOST_PP_DEC_128 127
-# define BOOST_PP_DEC_129 128
-# define BOOST_PP_DEC_130 129
-# define BOOST_PP_DEC_131 130
-# define BOOST_PP_DEC_132 131
-# define BOOST_PP_DEC_133 132
-# define BOOST_PP_DEC_134 133
-# define BOOST_PP_DEC_135 134
-# define BOOST_PP_DEC_136 135
-# define BOOST_PP_DEC_137 136
-# define BOOST_PP_DEC_138 137
-# define BOOST_PP_DEC_139 138
-# define BOOST_PP_DEC_140 139
-# define BOOST_PP_DEC_141 140
-# define BOOST_PP_DEC_142 141
-# define BOOST_PP_DEC_143 142
-# define BOOST_PP_DEC_144 143
-# define BOOST_PP_DEC_145 144
-# define BOOST_PP_DEC_146 145
-# define BOOST_PP_DEC_147 146
-# define BOOST_PP_DEC_148 147
-# define BOOST_PP_DEC_149 148
-# define BOOST_PP_DEC_150 149
-# define BOOST_PP_DEC_151 150
-# define BOOST_PP_DEC_152 151
-# define BOOST_PP_DEC_153 152
-# define BOOST_PP_DEC_154 153
-# define BOOST_PP_DEC_155 154
-# define BOOST_PP_DEC_156 155
-# define BOOST_PP_DEC_157 156
-# define BOOST_PP_DEC_158 157
-# define BOOST_PP_DEC_159 158
-# define BOOST_PP_DEC_160 159
-# define BOOST_PP_DEC_161 160
-# define BOOST_PP_DEC_162 161
-# define BOOST_PP_DEC_163 162
-# define BOOST_PP_DEC_164 163
-# define BOOST_PP_DEC_165 164
-# define BOOST_PP_DEC_166 165
-# define BOOST_PP_DEC_167 166
-# define BOOST_PP_DEC_168 167
-# define BOOST_PP_DEC_169 168
-# define BOOST_PP_DEC_170 169
-# define BOOST_PP_DEC_171 170
-# define BOOST_PP_DEC_172 171
-# define BOOST_PP_DEC_173 172
-# define BOOST_PP_DEC_174 173
-# define BOOST_PP_DEC_175 174
-# define BOOST_PP_DEC_176 175
-# define BOOST_PP_DEC_177 176
-# define BOOST_PP_DEC_178 177
-# define BOOST_PP_DEC_179 178
-# define BOOST_PP_DEC_180 179
-# define BOOST_PP_DEC_181 180
-# define BOOST_PP_DEC_182 181
-# define BOOST_PP_DEC_183 182
-# define BOOST_PP_DEC_184 183
-# define BOOST_PP_DEC_185 184
-# define BOOST_PP_DEC_186 185
-# define BOOST_PP_DEC_187 186
-# define BOOST_PP_DEC_188 187
-# define BOOST_PP_DEC_189 188
-# define BOOST_PP_DEC_190 189
-# define BOOST_PP_DEC_191 190
-# define BOOST_PP_DEC_192 191
-# define BOOST_PP_DEC_193 192
-# define BOOST_PP_DEC_194 193
-# define BOOST_PP_DEC_195 194
-# define BOOST_PP_DEC_196 195
-# define BOOST_PP_DEC_197 196
-# define BOOST_PP_DEC_198 197
-# define BOOST_PP_DEC_199 198
-# define BOOST_PP_DEC_200 199
-# define BOOST_PP_DEC_201 200
-# define BOOST_PP_DEC_202 201
-# define BOOST_PP_DEC_203 202
-# define BOOST_PP_DEC_204 203
-# define BOOST_PP_DEC_205 204
-# define BOOST_PP_DEC_206 205
-# define BOOST_PP_DEC_207 206
-# define BOOST_PP_DEC_208 207
-# define BOOST_PP_DEC_209 208
-# define BOOST_PP_DEC_210 209
-# define BOOST_PP_DEC_211 210
-# define BOOST_PP_DEC_212 211
-# define BOOST_PP_DEC_213 212
-# define BOOST_PP_DEC_214 213
-# define BOOST_PP_DEC_215 214
-# define BOOST_PP_DEC_216 215
-# define BOOST_PP_DEC_217 216
-# define BOOST_PP_DEC_218 217
-# define BOOST_PP_DEC_219 218
-# define BOOST_PP_DEC_220 219
-# define BOOST_PP_DEC_221 220
-# define BOOST_PP_DEC_222 221
-# define BOOST_PP_DEC_223 222
-# define BOOST_PP_DEC_224 223
-# define BOOST_PP_DEC_225 224
-# define BOOST_PP_DEC_226 225
-# define BOOST_PP_DEC_227 226
-# define BOOST_PP_DEC_228 227
-# define BOOST_PP_DEC_229 228
-# define BOOST_PP_DEC_230 229
-# define BOOST_PP_DEC_231 230
-# define BOOST_PP_DEC_232 231
-# define BOOST_PP_DEC_233 232
-# define BOOST_PP_DEC_234 233
-# define BOOST_PP_DEC_235 234
-# define BOOST_PP_DEC_236 235
-# define BOOST_PP_DEC_237 236
-# define BOOST_PP_DEC_238 237
-# define BOOST_PP_DEC_239 238
-# define BOOST_PP_DEC_240 239
-# define BOOST_PP_DEC_241 240
-# define BOOST_PP_DEC_242 241
-# define BOOST_PP_DEC_243 242
-# define BOOST_PP_DEC_244 243
-# define BOOST_PP_DEC_245 244
-# define BOOST_PP_DEC_246 245
-# define BOOST_PP_DEC_247 246
-# define BOOST_PP_DEC_248 247
-# define BOOST_PP_DEC_249 248
-# define BOOST_PP_DEC_250 249
-# define BOOST_PP_DEC_251 250
-# define BOOST_PP_DEC_252 251
-# define BOOST_PP_DEC_253 252
-# define BOOST_PP_DEC_254 253
-# define BOOST_PP_DEC_255 254
-# define BOOST_PP_DEC_256 255
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/arithmetic/inc.hpp b/libcutl/cutl/details/boost/preprocessor/arithmetic/inc.hpp
deleted file mode 100644
index ef69b0a..0000000
--- a/libcutl/cutl/details/boost/preprocessor/arithmetic/inc.hpp
+++ /dev/null
@@ -1,288 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ARITHMETIC_INC_HPP
-# define BOOST_PREPROCESSOR_ARITHMETIC_INC_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_INC */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_INC(x) BOOST_PP_INC_I(x)
-# else
-# define BOOST_PP_INC(x) BOOST_PP_INC_OO((x))
-# define BOOST_PP_INC_OO(par) BOOST_PP_INC_I ## par
-# endif
-#
-# define BOOST_PP_INC_I(x) BOOST_PP_INC_ ## x
-#
-# define BOOST_PP_INC_0 1
-# define BOOST_PP_INC_1 2
-# define BOOST_PP_INC_2 3
-# define BOOST_PP_INC_3 4
-# define BOOST_PP_INC_4 5
-# define BOOST_PP_INC_5 6
-# define BOOST_PP_INC_6 7
-# define BOOST_PP_INC_7 8
-# define BOOST_PP_INC_8 9
-# define BOOST_PP_INC_9 10
-# define BOOST_PP_INC_10 11
-# define BOOST_PP_INC_11 12
-# define BOOST_PP_INC_12 13
-# define BOOST_PP_INC_13 14
-# define BOOST_PP_INC_14 15
-# define BOOST_PP_INC_15 16
-# define BOOST_PP_INC_16 17
-# define BOOST_PP_INC_17 18
-# define BOOST_PP_INC_18 19
-# define BOOST_PP_INC_19 20
-# define BOOST_PP_INC_20 21
-# define BOOST_PP_INC_21 22
-# define BOOST_PP_INC_22 23
-# define BOOST_PP_INC_23 24
-# define BOOST_PP_INC_24 25
-# define BOOST_PP_INC_25 26
-# define BOOST_PP_INC_26 27
-# define BOOST_PP_INC_27 28
-# define BOOST_PP_INC_28 29
-# define BOOST_PP_INC_29 30
-# define BOOST_PP_INC_30 31
-# define BOOST_PP_INC_31 32
-# define BOOST_PP_INC_32 33
-# define BOOST_PP_INC_33 34
-# define BOOST_PP_INC_34 35
-# define BOOST_PP_INC_35 36
-# define BOOST_PP_INC_36 37
-# define BOOST_PP_INC_37 38
-# define BOOST_PP_INC_38 39
-# define BOOST_PP_INC_39 40
-# define BOOST_PP_INC_40 41
-# define BOOST_PP_INC_41 42
-# define BOOST_PP_INC_42 43
-# define BOOST_PP_INC_43 44
-# define BOOST_PP_INC_44 45
-# define BOOST_PP_INC_45 46
-# define BOOST_PP_INC_46 47
-# define BOOST_PP_INC_47 48
-# define BOOST_PP_INC_48 49
-# define BOOST_PP_INC_49 50
-# define BOOST_PP_INC_50 51
-# define BOOST_PP_INC_51 52
-# define BOOST_PP_INC_52 53
-# define BOOST_PP_INC_53 54
-# define BOOST_PP_INC_54 55
-# define BOOST_PP_INC_55 56
-# define BOOST_PP_INC_56 57
-# define BOOST_PP_INC_57 58
-# define BOOST_PP_INC_58 59
-# define BOOST_PP_INC_59 60
-# define BOOST_PP_INC_60 61
-# define BOOST_PP_INC_61 62
-# define BOOST_PP_INC_62 63
-# define BOOST_PP_INC_63 64
-# define BOOST_PP_INC_64 65
-# define BOOST_PP_INC_65 66
-# define BOOST_PP_INC_66 67
-# define BOOST_PP_INC_67 68
-# define BOOST_PP_INC_68 69
-# define BOOST_PP_INC_69 70
-# define BOOST_PP_INC_70 71
-# define BOOST_PP_INC_71 72
-# define BOOST_PP_INC_72 73
-# define BOOST_PP_INC_73 74
-# define BOOST_PP_INC_74 75
-# define BOOST_PP_INC_75 76
-# define BOOST_PP_INC_76 77
-# define BOOST_PP_INC_77 78
-# define BOOST_PP_INC_78 79
-# define BOOST_PP_INC_79 80
-# define BOOST_PP_INC_80 81
-# define BOOST_PP_INC_81 82
-# define BOOST_PP_INC_82 83
-# define BOOST_PP_INC_83 84
-# define BOOST_PP_INC_84 85
-# define BOOST_PP_INC_85 86
-# define BOOST_PP_INC_86 87
-# define BOOST_PP_INC_87 88
-# define BOOST_PP_INC_88 89
-# define BOOST_PP_INC_89 90
-# define BOOST_PP_INC_90 91
-# define BOOST_PP_INC_91 92
-# define BOOST_PP_INC_92 93
-# define BOOST_PP_INC_93 94
-# define BOOST_PP_INC_94 95
-# define BOOST_PP_INC_95 96
-# define BOOST_PP_INC_96 97
-# define BOOST_PP_INC_97 98
-# define BOOST_PP_INC_98 99
-# define BOOST_PP_INC_99 100
-# define BOOST_PP_INC_100 101
-# define BOOST_PP_INC_101 102
-# define BOOST_PP_INC_102 103
-# define BOOST_PP_INC_103 104
-# define BOOST_PP_INC_104 105
-# define BOOST_PP_INC_105 106
-# define BOOST_PP_INC_106 107
-# define BOOST_PP_INC_107 108
-# define BOOST_PP_INC_108 109
-# define BOOST_PP_INC_109 110
-# define BOOST_PP_INC_110 111
-# define BOOST_PP_INC_111 112
-# define BOOST_PP_INC_112 113
-# define BOOST_PP_INC_113 114
-# define BOOST_PP_INC_114 115
-# define BOOST_PP_INC_115 116
-# define BOOST_PP_INC_116 117
-# define BOOST_PP_INC_117 118
-# define BOOST_PP_INC_118 119
-# define BOOST_PP_INC_119 120
-# define BOOST_PP_INC_120 121
-# define BOOST_PP_INC_121 122
-# define BOOST_PP_INC_122 123
-# define BOOST_PP_INC_123 124
-# define BOOST_PP_INC_124 125
-# define BOOST_PP_INC_125 126
-# define BOOST_PP_INC_126 127
-# define BOOST_PP_INC_127 128
-# define BOOST_PP_INC_128 129
-# define BOOST_PP_INC_129 130
-# define BOOST_PP_INC_130 131
-# define BOOST_PP_INC_131 132
-# define BOOST_PP_INC_132 133
-# define BOOST_PP_INC_133 134
-# define BOOST_PP_INC_134 135
-# define BOOST_PP_INC_135 136
-# define BOOST_PP_INC_136 137
-# define BOOST_PP_INC_137 138
-# define BOOST_PP_INC_138 139
-# define BOOST_PP_INC_139 140
-# define BOOST_PP_INC_140 141
-# define BOOST_PP_INC_141 142
-# define BOOST_PP_INC_142 143
-# define BOOST_PP_INC_143 144
-# define BOOST_PP_INC_144 145
-# define BOOST_PP_INC_145 146
-# define BOOST_PP_INC_146 147
-# define BOOST_PP_INC_147 148
-# define BOOST_PP_INC_148 149
-# define BOOST_PP_INC_149 150
-# define BOOST_PP_INC_150 151
-# define BOOST_PP_INC_151 152
-# define BOOST_PP_INC_152 153
-# define BOOST_PP_INC_153 154
-# define BOOST_PP_INC_154 155
-# define BOOST_PP_INC_155 156
-# define BOOST_PP_INC_156 157
-# define BOOST_PP_INC_157 158
-# define BOOST_PP_INC_158 159
-# define BOOST_PP_INC_159 160
-# define BOOST_PP_INC_160 161
-# define BOOST_PP_INC_161 162
-# define BOOST_PP_INC_162 163
-# define BOOST_PP_INC_163 164
-# define BOOST_PP_INC_164 165
-# define BOOST_PP_INC_165 166
-# define BOOST_PP_INC_166 167
-# define BOOST_PP_INC_167 168
-# define BOOST_PP_INC_168 169
-# define BOOST_PP_INC_169 170
-# define BOOST_PP_INC_170 171
-# define BOOST_PP_INC_171 172
-# define BOOST_PP_INC_172 173
-# define BOOST_PP_INC_173 174
-# define BOOST_PP_INC_174 175
-# define BOOST_PP_INC_175 176
-# define BOOST_PP_INC_176 177
-# define BOOST_PP_INC_177 178
-# define BOOST_PP_INC_178 179
-# define BOOST_PP_INC_179 180
-# define BOOST_PP_INC_180 181
-# define BOOST_PP_INC_181 182
-# define BOOST_PP_INC_182 183
-# define BOOST_PP_INC_183 184
-# define BOOST_PP_INC_184 185
-# define BOOST_PP_INC_185 186
-# define BOOST_PP_INC_186 187
-# define BOOST_PP_INC_187 188
-# define BOOST_PP_INC_188 189
-# define BOOST_PP_INC_189 190
-# define BOOST_PP_INC_190 191
-# define BOOST_PP_INC_191 192
-# define BOOST_PP_INC_192 193
-# define BOOST_PP_INC_193 194
-# define BOOST_PP_INC_194 195
-# define BOOST_PP_INC_195 196
-# define BOOST_PP_INC_196 197
-# define BOOST_PP_INC_197 198
-# define BOOST_PP_INC_198 199
-# define BOOST_PP_INC_199 200
-# define BOOST_PP_INC_200 201
-# define BOOST_PP_INC_201 202
-# define BOOST_PP_INC_202 203
-# define BOOST_PP_INC_203 204
-# define BOOST_PP_INC_204 205
-# define BOOST_PP_INC_205 206
-# define BOOST_PP_INC_206 207
-# define BOOST_PP_INC_207 208
-# define BOOST_PP_INC_208 209
-# define BOOST_PP_INC_209 210
-# define BOOST_PP_INC_210 211
-# define BOOST_PP_INC_211 212
-# define BOOST_PP_INC_212 213
-# define BOOST_PP_INC_213 214
-# define BOOST_PP_INC_214 215
-# define BOOST_PP_INC_215 216
-# define BOOST_PP_INC_216 217
-# define BOOST_PP_INC_217 218
-# define BOOST_PP_INC_218 219
-# define BOOST_PP_INC_219 220
-# define BOOST_PP_INC_220 221
-# define BOOST_PP_INC_221 222
-# define BOOST_PP_INC_222 223
-# define BOOST_PP_INC_223 224
-# define BOOST_PP_INC_224 225
-# define BOOST_PP_INC_225 226
-# define BOOST_PP_INC_226 227
-# define BOOST_PP_INC_227 228
-# define BOOST_PP_INC_228 229
-# define BOOST_PP_INC_229 230
-# define BOOST_PP_INC_230 231
-# define BOOST_PP_INC_231 232
-# define BOOST_PP_INC_232 233
-# define BOOST_PP_INC_233 234
-# define BOOST_PP_INC_234 235
-# define BOOST_PP_INC_235 236
-# define BOOST_PP_INC_236 237
-# define BOOST_PP_INC_237 238
-# define BOOST_PP_INC_238 239
-# define BOOST_PP_INC_239 240
-# define BOOST_PP_INC_240 241
-# define BOOST_PP_INC_241 242
-# define BOOST_PP_INC_242 243
-# define BOOST_PP_INC_243 244
-# define BOOST_PP_INC_244 245
-# define BOOST_PP_INC_245 246
-# define BOOST_PP_INC_246 247
-# define BOOST_PP_INC_247 248
-# define BOOST_PP_INC_248 249
-# define BOOST_PP_INC_249 250
-# define BOOST_PP_INC_250 251
-# define BOOST_PP_INC_251 252
-# define BOOST_PP_INC_252 253
-# define BOOST_PP_INC_253 254
-# define BOOST_PP_INC_254 255
-# define BOOST_PP_INC_255 256
-# define BOOST_PP_INC_256 256
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/arithmetic/sub.hpp b/libcutl/cutl/details/boost/preprocessor/arithmetic/sub.hpp
deleted file mode 100644
index 182fa42..0000000
--- a/libcutl/cutl/details/boost/preprocessor/arithmetic/sub.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
-# define BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
-#
-# include <cutl/details/boost/preprocessor/arithmetic/dec.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/control/while.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-#
-# /* BOOST_PP_SUB */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_SUB(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
-# else
-# define BOOST_PP_SUB(x, y) BOOST_PP_SUB_I(x, y)
-# define BOOST_PP_SUB_I(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
-# endif
-#
-# define BOOST_PP_SUB_P(d, xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_SUB_O(d, xy) BOOST_PP_SUB_O_I xy
-# else
-# define BOOST_PP_SUB_O(d, xy) BOOST_PP_SUB_O_I(BOOST_PP_TUPLE_ELEM(2, 0, xy), BOOST_PP_TUPLE_ELEM(2, 1, xy))
-# endif
-#
-# define BOOST_PP_SUB_O_I(x, y) (BOOST_PP_DEC(x), BOOST_PP_DEC(y))
-#
-# /* BOOST_PP_SUB_D */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_SUB_D(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
-# else
-# define BOOST_PP_SUB_D(d, x, y) BOOST_PP_SUB_D_I(d, x, y)
-# define BOOST_PP_SUB_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/array/data.hpp b/libcutl/cutl/details/boost/preprocessor/array/data.hpp
deleted file mode 100644
index c03c1f0..0000000
--- a/libcutl/cutl/details/boost/preprocessor/array/data.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ARRAY_DATA_HPP
-# define BOOST_PREPROCESSOR_ARRAY_DATA_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-#
-# /* BOOST_PP_ARRAY_DATA */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ARRAY_DATA(array) BOOST_PP_TUPLE_ELEM(2, 1, array)
-# else
-# define BOOST_PP_ARRAY_DATA(array) BOOST_PP_ARRAY_DATA_I(array)
-# define BOOST_PP_ARRAY_DATA_I(array) BOOST_PP_ARRAY_DATA_II array
-# define BOOST_PP_ARRAY_DATA_II(size, data) data
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/array/elem.hpp b/libcutl/cutl/details/boost/preprocessor/array/elem.hpp
deleted file mode 100644
index 6109585..0000000
--- a/libcutl/cutl/details/boost/preprocessor/array/elem.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ARRAY_ELEM_HPP
-# define BOOST_PREPROCESSOR_ARRAY_ELEM_HPP
-#
-# include <cutl/details/boost/preprocessor/array/data.hpp>
-# include <cutl/details/boost/preprocessor/array/size.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-#
-# /* BOOST_PP_ARRAY_ELEM */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ARRAY_ELEM(i, array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array))
-# else
-# define BOOST_PP_ARRAY_ELEM(i, array) BOOST_PP_ARRAY_ELEM_I(i, array)
-# define BOOST_PP_ARRAY_ELEM_I(i, array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array))
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/array/size.hpp b/libcutl/cutl/details/boost/preprocessor/array/size.hpp
deleted file mode 100644
index ff71603..0000000
--- a/libcutl/cutl/details/boost/preprocessor/array/size.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ARRAY_SIZE_HPP
-# define BOOST_PREPROCESSOR_ARRAY_SIZE_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-#
-# /* BOOST_PP_ARRAY_SIZE */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ARRAY_SIZE(array) BOOST_PP_TUPLE_ELEM(2, 0, array)
-# else
-# define BOOST_PP_ARRAY_SIZE(array) BOOST_PP_ARRAY_SIZE_I(array)
-# define BOOST_PP_ARRAY_SIZE_I(array) BOOST_PP_ARRAY_SIZE_II array
-# define BOOST_PP_ARRAY_SIZE_II(size, data) size
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/cat.hpp b/libcutl/cutl/details/boost/preprocessor/cat.hpp
deleted file mode 100644
index a4441d5..0000000
--- a/libcutl/cutl/details/boost/preprocessor/cat.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CAT_HPP
-# define BOOST_PREPROCESSOR_CAT_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_CAT */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
-# else
-# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_OO((a, b))
-# define BOOST_PP_CAT_OO(par) BOOST_PP_CAT_I ## par
-# endif
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_CAT_I(a, b) a ## b
-# else
-# define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
-# define BOOST_PP_CAT_II(p, res) res
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/comma_if.hpp b/libcutl/cutl/details/boost/preprocessor/comma_if.hpp
deleted file mode 100644
index 5d5588e..0000000
--- a/libcutl/cutl/details/boost/preprocessor/comma_if.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_COMMA_IF_HPP
-# define BOOST_PREPROCESSOR_COMMA_IF_HPP
-#
-# include <cutl/details/boost/preprocessor/punctuation/comma_if.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/config/config.hpp b/libcutl/cutl/details/boost/preprocessor/config/config.hpp
deleted file mode 100644
index d02eb58..0000000
--- a/libcutl/cutl/details/boost/preprocessor/config/config.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002-2011. *
-# * (C) Copyright Edward Diener 2011. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-# * http://www.boost.org/LICENSE_1_0.txt) *
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CONFIG_CONFIG_HPP
-# define BOOST_PREPROCESSOR_CONFIG_CONFIG_HPP
-#
-# /* BOOST_PP_CONFIG_FLAGS */
-#
-# define BOOST_PP_CONFIG_STRICT() 0x0001
-# define BOOST_PP_CONFIG_IDEAL() 0x0002
-#
-# define BOOST_PP_CONFIG_MSVC() 0x0004
-# define BOOST_PP_CONFIG_MWCC() 0x0008
-# define BOOST_PP_CONFIG_BCC() 0x0010
-# define BOOST_PP_CONFIG_EDG() 0x0020
-# define BOOST_PP_CONFIG_DMC() 0x0040
-#
-# ifndef BOOST_PP_CONFIG_FLAGS
-# if defined(__GCCXML__)
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
-# elif defined(__WAVE__)
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
-# elif defined(__MWERKS__) && __MWERKS__ >= 0x3200
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
-# elif defined(__EDG__) || defined(__EDG_VERSION__)
-# if defined(_MSC_VER) && __EDG_VERSION__ >= 308
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
-# else
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_EDG() | BOOST_PP_CONFIG_STRICT())
-# endif
-# elif defined(__MWERKS__)
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MWCC())
-# elif defined(__DMC__)
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_DMC())
-# elif defined(__BORLANDC__) && __BORLANDC__ >= 0x581
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
-# elif defined(__BORLANDC__) || defined(__IBMC__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_BCC())
-# elif defined(_MSC_VER)
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
-# else
-# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
-# endif
-# endif
-#
-# /* BOOST_PP_CONFIG_EXTENDED_LINE_INFO */
-#
-# ifndef BOOST_PP_CONFIG_EXTENDED_LINE_INFO
-# define BOOST_PP_CONFIG_EXTENDED_LINE_INFO 0
-# endif
-#
-# /* BOOST_PP_CONFIG_ERRORS */
-#
-# ifndef BOOST_PP_CONFIG_ERRORS
-# ifdef NDEBUG
-# define BOOST_PP_CONFIG_ERRORS 0
-# else
-# define BOOST_PP_CONFIG_ERRORS 1
-# endif
-# endif
-#
-# /* BOOST_PP_VARIADICS */
-#
-# if !defined BOOST_PP_VARIADICS
-# /* variadic support explicitly disabled for all untested compilers */
-# if defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI
-# define BOOST_PP_VARIADICS 0
-# /* VC++ (C/C++) */
-# elif defined _MSC_VER && _MSC_VER >= 1400 && !defined __EDG__
-# if _MSC_VER >= 1400
-# define BOOST_PP_VARIADICS 1
-# define BOOST_PP_VARIADICS_MSVC 1
-# else
-# define BOOST_PP_VARIADICS 0
-# endif
-# /* Wave (C/C++), GCC (C++) */
-# elif defined __WAVE__ && __WAVE_HAS_VARIADICS__ || defined __GNUC__ && __GXX_EXPERIMENTAL_CXX0X__
-# define BOOST_PP_VARIADICS 1
-# /* EDG-based (C/C++), GCC (C), and unknown (C/C++) */
-# elif !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L
-# define BOOST_PP_VARIADICS 1
-# else
-# define BOOST_PP_VARIADICS 0
-# endif
-# elif !BOOST_PP_VARIADICS + 1 < 2
-# undef BOOST_PP_VARIADICS
-# define BOOST_PP_VARIADICS 1
-# if defined _MSC_VER && _MSC_VER >= 1400 && !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI)
-# define BOOST_PP_VARIADICS_MSVC 1
-# endif
-# else
-# undef BOOST_PP_VARIADICS
-# define BOOST_PP_VARIADICS 0
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/control/detail/dmc/while.hpp b/libcutl/cutl/details/boost/preprocessor/control/detail/dmc/while.hpp
deleted file mode 100644
index fd41ced..0000000
--- a/libcutl/cutl/details/boost/preprocessor/control/detail/dmc/while.hpp
+++ /dev/null
@@ -1,536 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
-# define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
-#
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-# include <cutl/details/boost/preprocessor/logical/bool.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_C(BOOST_PP_BOOL(p##(2, s)), p, o, s)
-# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_C(BOOST_PP_BOOL(p##(3, s)), p, o, s)
-# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_C(BOOST_PP_BOOL(p##(4, s)), p, o, s)
-# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_C(BOOST_PP_BOOL(p##(5, s)), p, o, s)
-# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_C(BOOST_PP_BOOL(p##(6, s)), p, o, s)
-# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_C(BOOST_PP_BOOL(p##(7, s)), p, o, s)
-# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_C(BOOST_PP_BOOL(p##(8, s)), p, o, s)
-# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_C(BOOST_PP_BOOL(p##(9, s)), p, o, s)
-# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_C(BOOST_PP_BOOL(p##(10, s)), p, o, s)
-# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_C(BOOST_PP_BOOL(p##(11, s)), p, o, s)
-# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_C(BOOST_PP_BOOL(p##(12, s)), p, o, s)
-# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_C(BOOST_PP_BOOL(p##(13, s)), p, o, s)
-# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_C(BOOST_PP_BOOL(p##(14, s)), p, o, s)
-# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_C(BOOST_PP_BOOL(p##(15, s)), p, o, s)
-# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_C(BOOST_PP_BOOL(p##(16, s)), p, o, s)
-# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_C(BOOST_PP_BOOL(p##(17, s)), p, o, s)
-# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_C(BOOST_PP_BOOL(p##(18, s)), p, o, s)
-# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_C(BOOST_PP_BOOL(p##(19, s)), p, o, s)
-# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_C(BOOST_PP_BOOL(p##(20, s)), p, o, s)
-# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_C(BOOST_PP_BOOL(p##(21, s)), p, o, s)
-# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_C(BOOST_PP_BOOL(p##(22, s)), p, o, s)
-# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_C(BOOST_PP_BOOL(p##(23, s)), p, o, s)
-# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_C(BOOST_PP_BOOL(p##(24, s)), p, o, s)
-# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_C(BOOST_PP_BOOL(p##(25, s)), p, o, s)
-# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_C(BOOST_PP_BOOL(p##(26, s)), p, o, s)
-# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_C(BOOST_PP_BOOL(p##(27, s)), p, o, s)
-# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_C(BOOST_PP_BOOL(p##(28, s)), p, o, s)
-# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_C(BOOST_PP_BOOL(p##(29, s)), p, o, s)
-# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_C(BOOST_PP_BOOL(p##(30, s)), p, o, s)
-# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_C(BOOST_PP_BOOL(p##(31, s)), p, o, s)
-# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_C(BOOST_PP_BOOL(p##(32, s)), p, o, s)
-# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_C(BOOST_PP_BOOL(p##(33, s)), p, o, s)
-# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_C(BOOST_PP_BOOL(p##(34, s)), p, o, s)
-# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_C(BOOST_PP_BOOL(p##(35, s)), p, o, s)
-# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_C(BOOST_PP_BOOL(p##(36, s)), p, o, s)
-# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_C(BOOST_PP_BOOL(p##(37, s)), p, o, s)
-# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_C(BOOST_PP_BOOL(p##(38, s)), p, o, s)
-# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_C(BOOST_PP_BOOL(p##(39, s)), p, o, s)
-# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_C(BOOST_PP_BOOL(p##(40, s)), p, o, s)
-# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_C(BOOST_PP_BOOL(p##(41, s)), p, o, s)
-# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_C(BOOST_PP_BOOL(p##(42, s)), p, o, s)
-# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_C(BOOST_PP_BOOL(p##(43, s)), p, o, s)
-# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_C(BOOST_PP_BOOL(p##(44, s)), p, o, s)
-# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_C(BOOST_PP_BOOL(p##(45, s)), p, o, s)
-# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_C(BOOST_PP_BOOL(p##(46, s)), p, o, s)
-# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_C(BOOST_PP_BOOL(p##(47, s)), p, o, s)
-# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_C(BOOST_PP_BOOL(p##(48, s)), p, o, s)
-# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_C(BOOST_PP_BOOL(p##(49, s)), p, o, s)
-# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_C(BOOST_PP_BOOL(p##(50, s)), p, o, s)
-# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_C(BOOST_PP_BOOL(p##(51, s)), p, o, s)
-# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_C(BOOST_PP_BOOL(p##(52, s)), p, o, s)
-# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_C(BOOST_PP_BOOL(p##(53, s)), p, o, s)
-# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_C(BOOST_PP_BOOL(p##(54, s)), p, o, s)
-# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_C(BOOST_PP_BOOL(p##(55, s)), p, o, s)
-# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_C(BOOST_PP_BOOL(p##(56, s)), p, o, s)
-# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_C(BOOST_PP_BOOL(p##(57, s)), p, o, s)
-# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_C(BOOST_PP_BOOL(p##(58, s)), p, o, s)
-# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_C(BOOST_PP_BOOL(p##(59, s)), p, o, s)
-# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_C(BOOST_PP_BOOL(p##(60, s)), p, o, s)
-# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_C(BOOST_PP_BOOL(p##(61, s)), p, o, s)
-# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_C(BOOST_PP_BOOL(p##(62, s)), p, o, s)
-# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_C(BOOST_PP_BOOL(p##(63, s)), p, o, s)
-# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_C(BOOST_PP_BOOL(p##(64, s)), p, o, s)
-# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_C(BOOST_PP_BOOL(p##(65, s)), p, o, s)
-# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_C(BOOST_PP_BOOL(p##(66, s)), p, o, s)
-# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_C(BOOST_PP_BOOL(p##(67, s)), p, o, s)
-# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_C(BOOST_PP_BOOL(p##(68, s)), p, o, s)
-# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_C(BOOST_PP_BOOL(p##(69, s)), p, o, s)
-# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_C(BOOST_PP_BOOL(p##(70, s)), p, o, s)
-# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_C(BOOST_PP_BOOL(p##(71, s)), p, o, s)
-# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_C(BOOST_PP_BOOL(p##(72, s)), p, o, s)
-# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_C(BOOST_PP_BOOL(p##(73, s)), p, o, s)
-# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_C(BOOST_PP_BOOL(p##(74, s)), p, o, s)
-# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_C(BOOST_PP_BOOL(p##(75, s)), p, o, s)
-# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_C(BOOST_PP_BOOL(p##(76, s)), p, o, s)
-# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_C(BOOST_PP_BOOL(p##(77, s)), p, o, s)
-# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_C(BOOST_PP_BOOL(p##(78, s)), p, o, s)
-# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_C(BOOST_PP_BOOL(p##(79, s)), p, o, s)
-# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_C(BOOST_PP_BOOL(p##(80, s)), p, o, s)
-# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_C(BOOST_PP_BOOL(p##(81, s)), p, o, s)
-# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_C(BOOST_PP_BOOL(p##(82, s)), p, o, s)
-# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_C(BOOST_PP_BOOL(p##(83, s)), p, o, s)
-# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_C(BOOST_PP_BOOL(p##(84, s)), p, o, s)
-# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_C(BOOST_PP_BOOL(p##(85, s)), p, o, s)
-# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_C(BOOST_PP_BOOL(p##(86, s)), p, o, s)
-# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_C(BOOST_PP_BOOL(p##(87, s)), p, o, s)
-# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_C(BOOST_PP_BOOL(p##(88, s)), p, o, s)
-# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_C(BOOST_PP_BOOL(p##(89, s)), p, o, s)
-# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_C(BOOST_PP_BOOL(p##(90, s)), p, o, s)
-# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_C(BOOST_PP_BOOL(p##(91, s)), p, o, s)
-# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_C(BOOST_PP_BOOL(p##(92, s)), p, o, s)
-# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_C(BOOST_PP_BOOL(p##(93, s)), p, o, s)
-# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_C(BOOST_PP_BOOL(p##(94, s)), p, o, s)
-# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_C(BOOST_PP_BOOL(p##(95, s)), p, o, s)
-# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_C(BOOST_PP_BOOL(p##(96, s)), p, o, s)
-# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_C(BOOST_PP_BOOL(p##(97, s)), p, o, s)
-# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_C(BOOST_PP_BOOL(p##(98, s)), p, o, s)
-# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_C(BOOST_PP_BOOL(p##(99, s)), p, o, s)
-# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_C(BOOST_PP_BOOL(p##(100, s)), p, o, s)
-# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_C(BOOST_PP_BOOL(p##(101, s)), p, o, s)
-# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_C(BOOST_PP_BOOL(p##(102, s)), p, o, s)
-# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_C(BOOST_PP_BOOL(p##(103, s)), p, o, s)
-# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_C(BOOST_PP_BOOL(p##(104, s)), p, o, s)
-# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_C(BOOST_PP_BOOL(p##(105, s)), p, o, s)
-# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_C(BOOST_PP_BOOL(p##(106, s)), p, o, s)
-# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_C(BOOST_PP_BOOL(p##(107, s)), p, o, s)
-# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_C(BOOST_PP_BOOL(p##(108, s)), p, o, s)
-# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_C(BOOST_PP_BOOL(p##(109, s)), p, o, s)
-# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_C(BOOST_PP_BOOL(p##(110, s)), p, o, s)
-# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_C(BOOST_PP_BOOL(p##(111, s)), p, o, s)
-# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_C(BOOST_PP_BOOL(p##(112, s)), p, o, s)
-# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_C(BOOST_PP_BOOL(p##(113, s)), p, o, s)
-# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_C(BOOST_PP_BOOL(p##(114, s)), p, o, s)
-# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_C(BOOST_PP_BOOL(p##(115, s)), p, o, s)
-# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_C(BOOST_PP_BOOL(p##(116, s)), p, o, s)
-# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_C(BOOST_PP_BOOL(p##(117, s)), p, o, s)
-# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_C(BOOST_PP_BOOL(p##(118, s)), p, o, s)
-# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_C(BOOST_PP_BOOL(p##(119, s)), p, o, s)
-# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_C(BOOST_PP_BOOL(p##(120, s)), p, o, s)
-# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_C(BOOST_PP_BOOL(p##(121, s)), p, o, s)
-# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_C(BOOST_PP_BOOL(p##(122, s)), p, o, s)
-# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_C(BOOST_PP_BOOL(p##(123, s)), p, o, s)
-# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_C(BOOST_PP_BOOL(p##(124, s)), p, o, s)
-# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_C(BOOST_PP_BOOL(p##(125, s)), p, o, s)
-# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_C(BOOST_PP_BOOL(p##(126, s)), p, o, s)
-# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_C(BOOST_PP_BOOL(p##(127, s)), p, o, s)
-# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_C(BOOST_PP_BOOL(p##(128, s)), p, o, s)
-# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_C(BOOST_PP_BOOL(p##(129, s)), p, o, s)
-# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_C(BOOST_PP_BOOL(p##(130, s)), p, o, s)
-# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_C(BOOST_PP_BOOL(p##(131, s)), p, o, s)
-# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_C(BOOST_PP_BOOL(p##(132, s)), p, o, s)
-# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_C(BOOST_PP_BOOL(p##(133, s)), p, o, s)
-# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_C(BOOST_PP_BOOL(p##(134, s)), p, o, s)
-# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_C(BOOST_PP_BOOL(p##(135, s)), p, o, s)
-# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_C(BOOST_PP_BOOL(p##(136, s)), p, o, s)
-# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_C(BOOST_PP_BOOL(p##(137, s)), p, o, s)
-# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_C(BOOST_PP_BOOL(p##(138, s)), p, o, s)
-# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_C(BOOST_PP_BOOL(p##(139, s)), p, o, s)
-# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_C(BOOST_PP_BOOL(p##(140, s)), p, o, s)
-# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_C(BOOST_PP_BOOL(p##(141, s)), p, o, s)
-# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_C(BOOST_PP_BOOL(p##(142, s)), p, o, s)
-# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_C(BOOST_PP_BOOL(p##(143, s)), p, o, s)
-# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_C(BOOST_PP_BOOL(p##(144, s)), p, o, s)
-# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_C(BOOST_PP_BOOL(p##(145, s)), p, o, s)
-# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_C(BOOST_PP_BOOL(p##(146, s)), p, o, s)
-# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_C(BOOST_PP_BOOL(p##(147, s)), p, o, s)
-# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_C(BOOST_PP_BOOL(p##(148, s)), p, o, s)
-# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_C(BOOST_PP_BOOL(p##(149, s)), p, o, s)
-# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_C(BOOST_PP_BOOL(p##(150, s)), p, o, s)
-# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_C(BOOST_PP_BOOL(p##(151, s)), p, o, s)
-# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_C(BOOST_PP_BOOL(p##(152, s)), p, o, s)
-# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_C(BOOST_PP_BOOL(p##(153, s)), p, o, s)
-# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_C(BOOST_PP_BOOL(p##(154, s)), p, o, s)
-# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_C(BOOST_PP_BOOL(p##(155, s)), p, o, s)
-# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_C(BOOST_PP_BOOL(p##(156, s)), p, o, s)
-# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_C(BOOST_PP_BOOL(p##(157, s)), p, o, s)
-# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_C(BOOST_PP_BOOL(p##(158, s)), p, o, s)
-# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_C(BOOST_PP_BOOL(p##(159, s)), p, o, s)
-# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_C(BOOST_PP_BOOL(p##(160, s)), p, o, s)
-# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_C(BOOST_PP_BOOL(p##(161, s)), p, o, s)
-# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_C(BOOST_PP_BOOL(p##(162, s)), p, o, s)
-# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_C(BOOST_PP_BOOL(p##(163, s)), p, o, s)
-# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_C(BOOST_PP_BOOL(p##(164, s)), p, o, s)
-# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_C(BOOST_PP_BOOL(p##(165, s)), p, o, s)
-# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_C(BOOST_PP_BOOL(p##(166, s)), p, o, s)
-# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_C(BOOST_PP_BOOL(p##(167, s)), p, o, s)
-# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_C(BOOST_PP_BOOL(p##(168, s)), p, o, s)
-# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_C(BOOST_PP_BOOL(p##(169, s)), p, o, s)
-# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_C(BOOST_PP_BOOL(p##(170, s)), p, o, s)
-# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_C(BOOST_PP_BOOL(p##(171, s)), p, o, s)
-# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_C(BOOST_PP_BOOL(p##(172, s)), p, o, s)
-# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_C(BOOST_PP_BOOL(p##(173, s)), p, o, s)
-# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_C(BOOST_PP_BOOL(p##(174, s)), p, o, s)
-# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_C(BOOST_PP_BOOL(p##(175, s)), p, o, s)
-# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_C(BOOST_PP_BOOL(p##(176, s)), p, o, s)
-# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_C(BOOST_PP_BOOL(p##(177, s)), p, o, s)
-# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_C(BOOST_PP_BOOL(p##(178, s)), p, o, s)
-# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_C(BOOST_PP_BOOL(p##(179, s)), p, o, s)
-# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_C(BOOST_PP_BOOL(p##(180, s)), p, o, s)
-# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_C(BOOST_PP_BOOL(p##(181, s)), p, o, s)
-# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_C(BOOST_PP_BOOL(p##(182, s)), p, o, s)
-# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_C(BOOST_PP_BOOL(p##(183, s)), p, o, s)
-# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_C(BOOST_PP_BOOL(p##(184, s)), p, o, s)
-# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_C(BOOST_PP_BOOL(p##(185, s)), p, o, s)
-# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_C(BOOST_PP_BOOL(p##(186, s)), p, o, s)
-# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_C(BOOST_PP_BOOL(p##(187, s)), p, o, s)
-# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_C(BOOST_PP_BOOL(p##(188, s)), p, o, s)
-# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_C(BOOST_PP_BOOL(p##(189, s)), p, o, s)
-# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_C(BOOST_PP_BOOL(p##(190, s)), p, o, s)
-# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_C(BOOST_PP_BOOL(p##(191, s)), p, o, s)
-# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_C(BOOST_PP_BOOL(p##(192, s)), p, o, s)
-# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_C(BOOST_PP_BOOL(p##(193, s)), p, o, s)
-# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_C(BOOST_PP_BOOL(p##(194, s)), p, o, s)
-# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_C(BOOST_PP_BOOL(p##(195, s)), p, o, s)
-# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_C(BOOST_PP_BOOL(p##(196, s)), p, o, s)
-# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_C(BOOST_PP_BOOL(p##(197, s)), p, o, s)
-# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_C(BOOST_PP_BOOL(p##(198, s)), p, o, s)
-# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_C(BOOST_PP_BOOL(p##(199, s)), p, o, s)
-# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_C(BOOST_PP_BOOL(p##(200, s)), p, o, s)
-# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_C(BOOST_PP_BOOL(p##(201, s)), p, o, s)
-# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_C(BOOST_PP_BOOL(p##(202, s)), p, o, s)
-# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_C(BOOST_PP_BOOL(p##(203, s)), p, o, s)
-# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_C(BOOST_PP_BOOL(p##(204, s)), p, o, s)
-# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_C(BOOST_PP_BOOL(p##(205, s)), p, o, s)
-# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_C(BOOST_PP_BOOL(p##(206, s)), p, o, s)
-# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_C(BOOST_PP_BOOL(p##(207, s)), p, o, s)
-# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_C(BOOST_PP_BOOL(p##(208, s)), p, o, s)
-# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_C(BOOST_PP_BOOL(p##(209, s)), p, o, s)
-# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_C(BOOST_PP_BOOL(p##(210, s)), p, o, s)
-# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_C(BOOST_PP_BOOL(p##(211, s)), p, o, s)
-# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_C(BOOST_PP_BOOL(p##(212, s)), p, o, s)
-# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_C(BOOST_PP_BOOL(p##(213, s)), p, o, s)
-# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_C(BOOST_PP_BOOL(p##(214, s)), p, o, s)
-# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_C(BOOST_PP_BOOL(p##(215, s)), p, o, s)
-# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_C(BOOST_PP_BOOL(p##(216, s)), p, o, s)
-# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_C(BOOST_PP_BOOL(p##(217, s)), p, o, s)
-# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_C(BOOST_PP_BOOL(p##(218, s)), p, o, s)
-# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_C(BOOST_PP_BOOL(p##(219, s)), p, o, s)
-# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_C(BOOST_PP_BOOL(p##(220, s)), p, o, s)
-# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_C(BOOST_PP_BOOL(p##(221, s)), p, o, s)
-# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_C(BOOST_PP_BOOL(p##(222, s)), p, o, s)
-# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_C(BOOST_PP_BOOL(p##(223, s)), p, o, s)
-# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_C(BOOST_PP_BOOL(p##(224, s)), p, o, s)
-# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_C(BOOST_PP_BOOL(p##(225, s)), p, o, s)
-# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_C(BOOST_PP_BOOL(p##(226, s)), p, o, s)
-# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_C(BOOST_PP_BOOL(p##(227, s)), p, o, s)
-# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_C(BOOST_PP_BOOL(p##(228, s)), p, o, s)
-# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_C(BOOST_PP_BOOL(p##(229, s)), p, o, s)
-# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_C(BOOST_PP_BOOL(p##(230, s)), p, o, s)
-# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_C(BOOST_PP_BOOL(p##(231, s)), p, o, s)
-# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_C(BOOST_PP_BOOL(p##(232, s)), p, o, s)
-# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_C(BOOST_PP_BOOL(p##(233, s)), p, o, s)
-# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_C(BOOST_PP_BOOL(p##(234, s)), p, o, s)
-# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_C(BOOST_PP_BOOL(p##(235, s)), p, o, s)
-# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_C(BOOST_PP_BOOL(p##(236, s)), p, o, s)
-# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_C(BOOST_PP_BOOL(p##(237, s)), p, o, s)
-# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_C(BOOST_PP_BOOL(p##(238, s)), p, o, s)
-# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_C(BOOST_PP_BOOL(p##(239, s)), p, o, s)
-# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_C(BOOST_PP_BOOL(p##(240, s)), p, o, s)
-# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_C(BOOST_PP_BOOL(p##(241, s)), p, o, s)
-# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_C(BOOST_PP_BOOL(p##(242, s)), p, o, s)
-# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_C(BOOST_PP_BOOL(p##(243, s)), p, o, s)
-# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_C(BOOST_PP_BOOL(p##(244, s)), p, o, s)
-# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_C(BOOST_PP_BOOL(p##(245, s)), p, o, s)
-# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_C(BOOST_PP_BOOL(p##(246, s)), p, o, s)
-# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_C(BOOST_PP_BOOL(p##(247, s)), p, o, s)
-# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_C(BOOST_PP_BOOL(p##(248, s)), p, o, s)
-# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_C(BOOST_PP_BOOL(p##(249, s)), p, o, s)
-# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_C(BOOST_PP_BOOL(p##(250, s)), p, o, s)
-# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_C(BOOST_PP_BOOL(p##(251, s)), p, o, s)
-# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_C(BOOST_PP_BOOL(p##(252, s)), p, o, s)
-# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_C(BOOST_PP_BOOL(p##(253, s)), p, o, s)
-# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_C(BOOST_PP_BOOL(p##(254, s)), p, o, s)
-# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_C(BOOST_PP_BOOL(p##(255, s)), p, o, s)
-# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_C(BOOST_PP_BOOL(p##(256, s)), p, o, s)
-# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_C(BOOST_PP_BOOL(p##(257, s)), p, o, s)
-#
-# define BOOST_PP_WHILE_1_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_2, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(2, s))
-# define BOOST_PP_WHILE_2_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_3, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(3, s))
-# define BOOST_PP_WHILE_3_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_4, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(4, s))
-# define BOOST_PP_WHILE_4_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_5, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(5, s))
-# define BOOST_PP_WHILE_5_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_6, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(6, s))
-# define BOOST_PP_WHILE_6_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_7, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(7, s))
-# define BOOST_PP_WHILE_7_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_8, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(8, s))
-# define BOOST_PP_WHILE_8_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_9, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(9, s))
-# define BOOST_PP_WHILE_9_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_10, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(10, s))
-# define BOOST_PP_WHILE_10_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_11, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(11, s))
-# define BOOST_PP_WHILE_11_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_12, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(12, s))
-# define BOOST_PP_WHILE_12_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_13, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(13, s))
-# define BOOST_PP_WHILE_13_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_14, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(14, s))
-# define BOOST_PP_WHILE_14_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_15, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(15, s))
-# define BOOST_PP_WHILE_15_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_16, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(16, s))
-# define BOOST_PP_WHILE_16_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_17, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(17, s))
-# define BOOST_PP_WHILE_17_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_18, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(18, s))
-# define BOOST_PP_WHILE_18_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_19, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(19, s))
-# define BOOST_PP_WHILE_19_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_20, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(20, s))
-# define BOOST_PP_WHILE_20_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_21, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(21, s))
-# define BOOST_PP_WHILE_21_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_22, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(22, s))
-# define BOOST_PP_WHILE_22_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_23, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(23, s))
-# define BOOST_PP_WHILE_23_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_24, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(24, s))
-# define BOOST_PP_WHILE_24_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_25, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(25, s))
-# define BOOST_PP_WHILE_25_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_26, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(26, s))
-# define BOOST_PP_WHILE_26_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_27, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(27, s))
-# define BOOST_PP_WHILE_27_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_28, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(28, s))
-# define BOOST_PP_WHILE_28_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_29, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(29, s))
-# define BOOST_PP_WHILE_29_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_30, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(30, s))
-# define BOOST_PP_WHILE_30_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_31, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(31, s))
-# define BOOST_PP_WHILE_31_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_32, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(32, s))
-# define BOOST_PP_WHILE_32_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_33, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(33, s))
-# define BOOST_PP_WHILE_33_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_34, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(34, s))
-# define BOOST_PP_WHILE_34_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_35, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(35, s))
-# define BOOST_PP_WHILE_35_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_36, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(36, s))
-# define BOOST_PP_WHILE_36_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_37, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(37, s))
-# define BOOST_PP_WHILE_37_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_38, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(38, s))
-# define BOOST_PP_WHILE_38_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_39, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(39, s))
-# define BOOST_PP_WHILE_39_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_40, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(40, s))
-# define BOOST_PP_WHILE_40_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_41, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(41, s))
-# define BOOST_PP_WHILE_41_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_42, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(42, s))
-# define BOOST_PP_WHILE_42_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_43, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(43, s))
-# define BOOST_PP_WHILE_43_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_44, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(44, s))
-# define BOOST_PP_WHILE_44_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_45, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(45, s))
-# define BOOST_PP_WHILE_45_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_46, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(46, s))
-# define BOOST_PP_WHILE_46_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_47, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(47, s))
-# define BOOST_PP_WHILE_47_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_48, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(48, s))
-# define BOOST_PP_WHILE_48_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_49, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(49, s))
-# define BOOST_PP_WHILE_49_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_50, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(50, s))
-# define BOOST_PP_WHILE_50_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_51, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(51, s))
-# define BOOST_PP_WHILE_51_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_52, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(52, s))
-# define BOOST_PP_WHILE_52_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_53, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(53, s))
-# define BOOST_PP_WHILE_53_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_54, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(54, s))
-# define BOOST_PP_WHILE_54_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_55, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(55, s))
-# define BOOST_PP_WHILE_55_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_56, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(56, s))
-# define BOOST_PP_WHILE_56_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_57, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(57, s))
-# define BOOST_PP_WHILE_57_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_58, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(58, s))
-# define BOOST_PP_WHILE_58_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_59, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(59, s))
-# define BOOST_PP_WHILE_59_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_60, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(60, s))
-# define BOOST_PP_WHILE_60_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_61, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(61, s))
-# define BOOST_PP_WHILE_61_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_62, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(62, s))
-# define BOOST_PP_WHILE_62_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_63, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(63, s))
-# define BOOST_PP_WHILE_63_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_64, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(64, s))
-# define BOOST_PP_WHILE_64_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_65, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(65, s))
-# define BOOST_PP_WHILE_65_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_66, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(66, s))
-# define BOOST_PP_WHILE_66_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_67, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(67, s))
-# define BOOST_PP_WHILE_67_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_68, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(68, s))
-# define BOOST_PP_WHILE_68_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_69, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(69, s))
-# define BOOST_PP_WHILE_69_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_70, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(70, s))
-# define BOOST_PP_WHILE_70_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_71, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(71, s))
-# define BOOST_PP_WHILE_71_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_72, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(72, s))
-# define BOOST_PP_WHILE_72_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_73, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(73, s))
-# define BOOST_PP_WHILE_73_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_74, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(74, s))
-# define BOOST_PP_WHILE_74_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_75, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(75, s))
-# define BOOST_PP_WHILE_75_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_76, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(76, s))
-# define BOOST_PP_WHILE_76_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_77, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(77, s))
-# define BOOST_PP_WHILE_77_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_78, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(78, s))
-# define BOOST_PP_WHILE_78_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_79, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(79, s))
-# define BOOST_PP_WHILE_79_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_80, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(80, s))
-# define BOOST_PP_WHILE_80_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_81, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(81, s))
-# define BOOST_PP_WHILE_81_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_82, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(82, s))
-# define BOOST_PP_WHILE_82_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_83, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(83, s))
-# define BOOST_PP_WHILE_83_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_84, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(84, s))
-# define BOOST_PP_WHILE_84_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_85, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(85, s))
-# define BOOST_PP_WHILE_85_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_86, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(86, s))
-# define BOOST_PP_WHILE_86_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_87, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(87, s))
-# define BOOST_PP_WHILE_87_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_88, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(88, s))
-# define BOOST_PP_WHILE_88_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_89, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(89, s))
-# define BOOST_PP_WHILE_89_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_90, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(90, s))
-# define BOOST_PP_WHILE_90_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_91, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(91, s))
-# define BOOST_PP_WHILE_91_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_92, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(92, s))
-# define BOOST_PP_WHILE_92_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_93, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(93, s))
-# define BOOST_PP_WHILE_93_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_94, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(94, s))
-# define BOOST_PP_WHILE_94_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_95, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(95, s))
-# define BOOST_PP_WHILE_95_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_96, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(96, s))
-# define BOOST_PP_WHILE_96_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_97, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(97, s))
-# define BOOST_PP_WHILE_97_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_98, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(98, s))
-# define BOOST_PP_WHILE_98_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_99, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(99, s))
-# define BOOST_PP_WHILE_99_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_100, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(100, s))
-# define BOOST_PP_WHILE_100_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_101, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(101, s))
-# define BOOST_PP_WHILE_101_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_102, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(102, s))
-# define BOOST_PP_WHILE_102_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_103, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(103, s))
-# define BOOST_PP_WHILE_103_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_104, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(104, s))
-# define BOOST_PP_WHILE_104_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_105, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(105, s))
-# define BOOST_PP_WHILE_105_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_106, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(106, s))
-# define BOOST_PP_WHILE_106_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_107, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(107, s))
-# define BOOST_PP_WHILE_107_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_108, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(108, s))
-# define BOOST_PP_WHILE_108_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_109, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(109, s))
-# define BOOST_PP_WHILE_109_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_110, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(110, s))
-# define BOOST_PP_WHILE_110_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_111, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(111, s))
-# define BOOST_PP_WHILE_111_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_112, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(112, s))
-# define BOOST_PP_WHILE_112_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_113, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(113, s))
-# define BOOST_PP_WHILE_113_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_114, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(114, s))
-# define BOOST_PP_WHILE_114_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_115, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(115, s))
-# define BOOST_PP_WHILE_115_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_116, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(116, s))
-# define BOOST_PP_WHILE_116_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_117, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(117, s))
-# define BOOST_PP_WHILE_117_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_118, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(118, s))
-# define BOOST_PP_WHILE_118_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_119, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(119, s))
-# define BOOST_PP_WHILE_119_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_120, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(120, s))
-# define BOOST_PP_WHILE_120_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_121, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(121, s))
-# define BOOST_PP_WHILE_121_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_122, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(122, s))
-# define BOOST_PP_WHILE_122_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_123, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(123, s))
-# define BOOST_PP_WHILE_123_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_124, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(124, s))
-# define BOOST_PP_WHILE_124_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_125, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(125, s))
-# define BOOST_PP_WHILE_125_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_126, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(126, s))
-# define BOOST_PP_WHILE_126_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_127, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(127, s))
-# define BOOST_PP_WHILE_127_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_128, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(128, s))
-# define BOOST_PP_WHILE_128_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_129, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(129, s))
-# define BOOST_PP_WHILE_129_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_130, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(130, s))
-# define BOOST_PP_WHILE_130_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_131, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(131, s))
-# define BOOST_PP_WHILE_131_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_132, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(132, s))
-# define BOOST_PP_WHILE_132_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_133, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(133, s))
-# define BOOST_PP_WHILE_133_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_134, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(134, s))
-# define BOOST_PP_WHILE_134_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_135, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(135, s))
-# define BOOST_PP_WHILE_135_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_136, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(136, s))
-# define BOOST_PP_WHILE_136_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_137, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(137, s))
-# define BOOST_PP_WHILE_137_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_138, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(138, s))
-# define BOOST_PP_WHILE_138_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_139, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(139, s))
-# define BOOST_PP_WHILE_139_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_140, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(140, s))
-# define BOOST_PP_WHILE_140_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_141, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(141, s))
-# define BOOST_PP_WHILE_141_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_142, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(142, s))
-# define BOOST_PP_WHILE_142_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_143, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(143, s))
-# define BOOST_PP_WHILE_143_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_144, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(144, s))
-# define BOOST_PP_WHILE_144_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_145, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(145, s))
-# define BOOST_PP_WHILE_145_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_146, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(146, s))
-# define BOOST_PP_WHILE_146_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_147, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(147, s))
-# define BOOST_PP_WHILE_147_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_148, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(148, s))
-# define BOOST_PP_WHILE_148_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_149, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(149, s))
-# define BOOST_PP_WHILE_149_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_150, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(150, s))
-# define BOOST_PP_WHILE_150_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_151, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(151, s))
-# define BOOST_PP_WHILE_151_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_152, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(152, s))
-# define BOOST_PP_WHILE_152_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_153, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(153, s))
-# define BOOST_PP_WHILE_153_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_154, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(154, s))
-# define BOOST_PP_WHILE_154_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_155, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(155, s))
-# define BOOST_PP_WHILE_155_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_156, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(156, s))
-# define BOOST_PP_WHILE_156_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_157, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(157, s))
-# define BOOST_PP_WHILE_157_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_158, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(158, s))
-# define BOOST_PP_WHILE_158_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_159, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(159, s))
-# define BOOST_PP_WHILE_159_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_160, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(160, s))
-# define BOOST_PP_WHILE_160_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_161, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(161, s))
-# define BOOST_PP_WHILE_161_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_162, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(162, s))
-# define BOOST_PP_WHILE_162_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_163, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(163, s))
-# define BOOST_PP_WHILE_163_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_164, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(164, s))
-# define BOOST_PP_WHILE_164_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_165, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(165, s))
-# define BOOST_PP_WHILE_165_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_166, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(166, s))
-# define BOOST_PP_WHILE_166_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_167, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(167, s))
-# define BOOST_PP_WHILE_167_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_168, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(168, s))
-# define BOOST_PP_WHILE_168_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_169, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(169, s))
-# define BOOST_PP_WHILE_169_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_170, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(170, s))
-# define BOOST_PP_WHILE_170_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_171, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(171, s))
-# define BOOST_PP_WHILE_171_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_172, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(172, s))
-# define BOOST_PP_WHILE_172_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_173, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(173, s))
-# define BOOST_PP_WHILE_173_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_174, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(174, s))
-# define BOOST_PP_WHILE_174_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_175, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(175, s))
-# define BOOST_PP_WHILE_175_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_176, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(176, s))
-# define BOOST_PP_WHILE_176_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_177, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(177, s))
-# define BOOST_PP_WHILE_177_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_178, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(178, s))
-# define BOOST_PP_WHILE_178_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_179, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(179, s))
-# define BOOST_PP_WHILE_179_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_180, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(180, s))
-# define BOOST_PP_WHILE_180_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_181, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(181, s))
-# define BOOST_PP_WHILE_181_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_182, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(182, s))
-# define BOOST_PP_WHILE_182_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_183, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(183, s))
-# define BOOST_PP_WHILE_183_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_184, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(184, s))
-# define BOOST_PP_WHILE_184_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_185, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(185, s))
-# define BOOST_PP_WHILE_185_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_186, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(186, s))
-# define BOOST_PP_WHILE_186_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_187, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(187, s))
-# define BOOST_PP_WHILE_187_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_188, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(188, s))
-# define BOOST_PP_WHILE_188_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_189, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(189, s))
-# define BOOST_PP_WHILE_189_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_190, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(190, s))
-# define BOOST_PP_WHILE_190_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_191, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(191, s))
-# define BOOST_PP_WHILE_191_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_192, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(192, s))
-# define BOOST_PP_WHILE_192_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_193, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(193, s))
-# define BOOST_PP_WHILE_193_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_194, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(194, s))
-# define BOOST_PP_WHILE_194_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_195, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(195, s))
-# define BOOST_PP_WHILE_195_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_196, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(196, s))
-# define BOOST_PP_WHILE_196_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_197, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(197, s))
-# define BOOST_PP_WHILE_197_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_198, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(198, s))
-# define BOOST_PP_WHILE_198_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_199, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(199, s))
-# define BOOST_PP_WHILE_199_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_200, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(200, s))
-# define BOOST_PP_WHILE_200_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_201, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(201, s))
-# define BOOST_PP_WHILE_201_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_202, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(202, s))
-# define BOOST_PP_WHILE_202_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_203, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(203, s))
-# define BOOST_PP_WHILE_203_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_204, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(204, s))
-# define BOOST_PP_WHILE_204_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_205, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(205, s))
-# define BOOST_PP_WHILE_205_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_206, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(206, s))
-# define BOOST_PP_WHILE_206_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_207, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(207, s))
-# define BOOST_PP_WHILE_207_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_208, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(208, s))
-# define BOOST_PP_WHILE_208_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_209, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(209, s))
-# define BOOST_PP_WHILE_209_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_210, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(210, s))
-# define BOOST_PP_WHILE_210_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_211, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(211, s))
-# define BOOST_PP_WHILE_211_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_212, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(212, s))
-# define BOOST_PP_WHILE_212_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_213, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(213, s))
-# define BOOST_PP_WHILE_213_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_214, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(214, s))
-# define BOOST_PP_WHILE_214_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_215, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(215, s))
-# define BOOST_PP_WHILE_215_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_216, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(216, s))
-# define BOOST_PP_WHILE_216_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_217, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(217, s))
-# define BOOST_PP_WHILE_217_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_218, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(218, s))
-# define BOOST_PP_WHILE_218_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_219, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(219, s))
-# define BOOST_PP_WHILE_219_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_220, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(220, s))
-# define BOOST_PP_WHILE_220_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_221, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(221, s))
-# define BOOST_PP_WHILE_221_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_222, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(222, s))
-# define BOOST_PP_WHILE_222_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_223, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(223, s))
-# define BOOST_PP_WHILE_223_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_224, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(224, s))
-# define BOOST_PP_WHILE_224_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_225, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(225, s))
-# define BOOST_PP_WHILE_225_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_226, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(226, s))
-# define BOOST_PP_WHILE_226_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_227, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(227, s))
-# define BOOST_PP_WHILE_227_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_228, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(228, s))
-# define BOOST_PP_WHILE_228_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_229, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(229, s))
-# define BOOST_PP_WHILE_229_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_230, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(230, s))
-# define BOOST_PP_WHILE_230_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_231, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(231, s))
-# define BOOST_PP_WHILE_231_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_232, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(232, s))
-# define BOOST_PP_WHILE_232_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_233, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(233, s))
-# define BOOST_PP_WHILE_233_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_234, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(234, s))
-# define BOOST_PP_WHILE_234_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_235, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(235, s))
-# define BOOST_PP_WHILE_235_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_236, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(236, s))
-# define BOOST_PP_WHILE_236_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_237, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(237, s))
-# define BOOST_PP_WHILE_237_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_238, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(238, s))
-# define BOOST_PP_WHILE_238_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_239, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(239, s))
-# define BOOST_PP_WHILE_239_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_240, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(240, s))
-# define BOOST_PP_WHILE_240_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_241, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(241, s))
-# define BOOST_PP_WHILE_241_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_242, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(242, s))
-# define BOOST_PP_WHILE_242_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_243, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(243, s))
-# define BOOST_PP_WHILE_243_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_244, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(244, s))
-# define BOOST_PP_WHILE_244_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_245, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(245, s))
-# define BOOST_PP_WHILE_245_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_246, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(246, s))
-# define BOOST_PP_WHILE_246_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_247, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(247, s))
-# define BOOST_PP_WHILE_247_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_248, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(248, s))
-# define BOOST_PP_WHILE_248_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_249, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(249, s))
-# define BOOST_PP_WHILE_249_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_250, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(250, s))
-# define BOOST_PP_WHILE_250_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_251, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(251, s))
-# define BOOST_PP_WHILE_251_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_252, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(252, s))
-# define BOOST_PP_WHILE_252_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_253, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(253, s))
-# define BOOST_PP_WHILE_253_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_254, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(254, s))
-# define BOOST_PP_WHILE_254_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_255, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(255, s))
-# define BOOST_PP_WHILE_255_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_256, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(256, s))
-# define BOOST_PP_WHILE_256_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_257, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(257, s))
-#
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/control/detail/edg/while.hpp b/libcutl/cutl/details/boost/preprocessor/control/detail/edg/while.hpp
deleted file mode 100644
index 123ba4a..0000000
--- a/libcutl/cutl/details/boost/preprocessor/control/detail/edg/while.hpp
+++ /dev/null
@@ -1,534 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_HPP
-# define BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_HPP
-#
-# include <cutl/details/boost/preprocessor/control/if.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_I(p, o, s)
-# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_I(p, o, s)
-# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_I(p, o, s)
-# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_I(p, o, s)
-# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_I(p, o, s)
-# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_I(p, o, s)
-# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_I(p, o, s)
-# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_I(p, o, s)
-# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_I(p, o, s)
-# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_I(p, o, s)
-# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_I(p, o, s)
-# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_I(p, o, s)
-# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_I(p, o, s)
-# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_I(p, o, s)
-# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_I(p, o, s)
-# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_I(p, o, s)
-# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_I(p, o, s)
-# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_I(p, o, s)
-# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_I(p, o, s)
-# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_I(p, o, s)
-# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_I(p, o, s)
-# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_I(p, o, s)
-# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_I(p, o, s)
-# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_I(p, o, s)
-# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_I(p, o, s)
-# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_I(p, o, s)
-# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_I(p, o, s)
-# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_I(p, o, s)
-# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_I(p, o, s)
-# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_I(p, o, s)
-# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_I(p, o, s)
-# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_I(p, o, s)
-# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_I(p, o, s)
-# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_I(p, o, s)
-# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_I(p, o, s)
-# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_I(p, o, s)
-# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_I(p, o, s)
-# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_I(p, o, s)
-# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_I(p, o, s)
-# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_I(p, o, s)
-# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_I(p, o, s)
-# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_I(p, o, s)
-# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_I(p, o, s)
-# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_I(p, o, s)
-# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_I(p, o, s)
-# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_I(p, o, s)
-# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_I(p, o, s)
-# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_I(p, o, s)
-# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_I(p, o, s)
-# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_I(p, o, s)
-# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_I(p, o, s)
-# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_I(p, o, s)
-# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_I(p, o, s)
-# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_I(p, o, s)
-# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_I(p, o, s)
-# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_I(p, o, s)
-# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_I(p, o, s)
-# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_I(p, o, s)
-# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_I(p, o, s)
-# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_I(p, o, s)
-# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_I(p, o, s)
-# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_I(p, o, s)
-# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_I(p, o, s)
-# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_I(p, o, s)
-# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_I(p, o, s)
-# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_I(p, o, s)
-# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_I(p, o, s)
-# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_I(p, o, s)
-# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_I(p, o, s)
-# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_I(p, o, s)
-# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_I(p, o, s)
-# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_I(p, o, s)
-# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_I(p, o, s)
-# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_I(p, o, s)
-# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_I(p, o, s)
-# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_I(p, o, s)
-# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_I(p, o, s)
-# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_I(p, o, s)
-# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_I(p, o, s)
-# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_I(p, o, s)
-# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_I(p, o, s)
-# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_I(p, o, s)
-# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_I(p, o, s)
-# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_I(p, o, s)
-# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_I(p, o, s)
-# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_I(p, o, s)
-# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_I(p, o, s)
-# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_I(p, o, s)
-# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_I(p, o, s)
-# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_I(p, o, s)
-# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_I(p, o, s)
-# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_I(p, o, s)
-# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_I(p, o, s)
-# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_I(p, o, s)
-# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_I(p, o, s)
-# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_I(p, o, s)
-# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_I(p, o, s)
-# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_I(p, o, s)
-# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_I(p, o, s)
-# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_I(p, o, s)
-# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_I(p, o, s)
-# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_I(p, o, s)
-# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_I(p, o, s)
-# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_I(p, o, s)
-# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_I(p, o, s)
-# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_I(p, o, s)
-# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_I(p, o, s)
-# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_I(p, o, s)
-# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_I(p, o, s)
-# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_I(p, o, s)
-# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_I(p, o, s)
-# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_I(p, o, s)
-# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_I(p, o, s)
-# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_I(p, o, s)
-# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_I(p, o, s)
-# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_I(p, o, s)
-# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_I(p, o, s)
-# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_I(p, o, s)
-# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_I(p, o, s)
-# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_I(p, o, s)
-# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_I(p, o, s)
-# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_I(p, o, s)
-# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_I(p, o, s)
-# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_I(p, o, s)
-# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_I(p, o, s)
-# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_I(p, o, s)
-# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_I(p, o, s)
-# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_I(p, o, s)
-# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_I(p, o, s)
-# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_I(p, o, s)
-# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_I(p, o, s)
-# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_I(p, o, s)
-# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_I(p, o, s)
-# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_I(p, o, s)
-# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_I(p, o, s)
-# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_I(p, o, s)
-# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_I(p, o, s)
-# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_I(p, o, s)
-# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_I(p, o, s)
-# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_I(p, o, s)
-# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_I(p, o, s)
-# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_I(p, o, s)
-# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_I(p, o, s)
-# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_I(p, o, s)
-# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_I(p, o, s)
-# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_I(p, o, s)
-# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_I(p, o, s)
-# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_I(p, o, s)
-# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_I(p, o, s)
-# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_I(p, o, s)
-# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_I(p, o, s)
-# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_I(p, o, s)
-# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_I(p, o, s)
-# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_I(p, o, s)
-# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_I(p, o, s)
-# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_I(p, o, s)
-# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_I(p, o, s)
-# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_I(p, o, s)
-# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_I(p, o, s)
-# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_I(p, o, s)
-# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_I(p, o, s)
-# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_I(p, o, s)
-# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_I(p, o, s)
-# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_I(p, o, s)
-# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_I(p, o, s)
-# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_I(p, o, s)
-# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_I(p, o, s)
-# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_I(p, o, s)
-# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_I(p, o, s)
-# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_I(p, o, s)
-# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_I(p, o, s)
-# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_I(p, o, s)
-# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_I(p, o, s)
-# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_I(p, o, s)
-# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_I(p, o, s)
-# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_I(p, o, s)
-# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_I(p, o, s)
-# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_I(p, o, s)
-# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_I(p, o, s)
-# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_I(p, o, s)
-# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_I(p, o, s)
-# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_I(p, o, s)
-# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_I(p, o, s)
-# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_I(p, o, s)
-# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_I(p, o, s)
-# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_I(p, o, s)
-# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_I(p, o, s)
-# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_I(p, o, s)
-# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_I(p, o, s)
-# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_I(p, o, s)
-# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_I(p, o, s)
-# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_I(p, o, s)
-# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_I(p, o, s)
-# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_I(p, o, s)
-# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_I(p, o, s)
-# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_I(p, o, s)
-# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_I(p, o, s)
-# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_I(p, o, s)
-# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_I(p, o, s)
-# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_I(p, o, s)
-# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_I(p, o, s)
-# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_I(p, o, s)
-# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_I(p, o, s)
-# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_I(p, o, s)
-# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_I(p, o, s)
-# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_I(p, o, s)
-# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_I(p, o, s)
-# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_I(p, o, s)
-# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_I(p, o, s)
-# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_I(p, o, s)
-# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_I(p, o, s)
-# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_I(p, o, s)
-# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_I(p, o, s)
-# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_I(p, o, s)
-# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_I(p, o, s)
-# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_I(p, o, s)
-# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_I(p, o, s)
-# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_I(p, o, s)
-# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_I(p, o, s)
-# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_I(p, o, s)
-# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_I(p, o, s)
-# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_I(p, o, s)
-# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_I(p, o, s)
-# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_I(p, o, s)
-# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_I(p, o, s)
-# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_I(p, o, s)
-# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_I(p, o, s)
-# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_I(p, o, s)
-# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_I(p, o, s)
-# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_I(p, o, s)
-# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_I(p, o, s)
-# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_I(p, o, s)
-# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_I(p, o, s)
-# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_I(p, o, s)
-# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_I(p, o, s)
-# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_I(p, o, s)
-# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_I(p, o, s)
-# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_I(p, o, s)
-# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_I(p, o, s)
-# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_I(p, o, s)
-# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_I(p, o, s)
-# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_I(p, o, s)
-# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_I(p, o, s)
-# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_I(p, o, s)
-# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_I(p, o, s)
-# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_I(p, o, s)
-# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_I(p, o, s)
-# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_I(p, o, s)
-# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_I(p, o, s)
-# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_I(p, o, s)
-# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_I(p, o, s)
-# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_I(p, o, s)
-# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_I(p, o, s)
-# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_I(p, o, s)
-# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_I(p, o, s)
-# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_I(p, o, s)
-#
-# define BOOST_PP_WHILE_1_I(p, o, s) BOOST_PP_IF(p(2, s), BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, o(2, s))
-# define BOOST_PP_WHILE_2_I(p, o, s) BOOST_PP_IF(p(3, s), BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, o(3, s))
-# define BOOST_PP_WHILE_3_I(p, o, s) BOOST_PP_IF(p(4, s), BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, o(4, s))
-# define BOOST_PP_WHILE_4_I(p, o, s) BOOST_PP_IF(p(5, s), BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, o(5, s))
-# define BOOST_PP_WHILE_5_I(p, o, s) BOOST_PP_IF(p(6, s), BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, o(6, s))
-# define BOOST_PP_WHILE_6_I(p, o, s) BOOST_PP_IF(p(7, s), BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, o(7, s))
-# define BOOST_PP_WHILE_7_I(p, o, s) BOOST_PP_IF(p(8, s), BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, o(8, s))
-# define BOOST_PP_WHILE_8_I(p, o, s) BOOST_PP_IF(p(9, s), BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, o(9, s))
-# define BOOST_PP_WHILE_9_I(p, o, s) BOOST_PP_IF(p(10, s), BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, o(10, s))
-# define BOOST_PP_WHILE_10_I(p, o, s) BOOST_PP_IF(p(11, s), BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, o(11, s))
-# define BOOST_PP_WHILE_11_I(p, o, s) BOOST_PP_IF(p(12, s), BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, o(12, s))
-# define BOOST_PP_WHILE_12_I(p, o, s) BOOST_PP_IF(p(13, s), BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, o(13, s))
-# define BOOST_PP_WHILE_13_I(p, o, s) BOOST_PP_IF(p(14, s), BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, o(14, s))
-# define BOOST_PP_WHILE_14_I(p, o, s) BOOST_PP_IF(p(15, s), BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, o(15, s))
-# define BOOST_PP_WHILE_15_I(p, o, s) BOOST_PP_IF(p(16, s), BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, o(16, s))
-# define BOOST_PP_WHILE_16_I(p, o, s) BOOST_PP_IF(p(17, s), BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, o(17, s))
-# define BOOST_PP_WHILE_17_I(p, o, s) BOOST_PP_IF(p(18, s), BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, o(18, s))
-# define BOOST_PP_WHILE_18_I(p, o, s) BOOST_PP_IF(p(19, s), BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, o(19, s))
-# define BOOST_PP_WHILE_19_I(p, o, s) BOOST_PP_IF(p(20, s), BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, o(20, s))
-# define BOOST_PP_WHILE_20_I(p, o, s) BOOST_PP_IF(p(21, s), BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, o(21, s))
-# define BOOST_PP_WHILE_21_I(p, o, s) BOOST_PP_IF(p(22, s), BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, o(22, s))
-# define BOOST_PP_WHILE_22_I(p, o, s) BOOST_PP_IF(p(23, s), BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, o(23, s))
-# define BOOST_PP_WHILE_23_I(p, o, s) BOOST_PP_IF(p(24, s), BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, o(24, s))
-# define BOOST_PP_WHILE_24_I(p, o, s) BOOST_PP_IF(p(25, s), BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, o(25, s))
-# define BOOST_PP_WHILE_25_I(p, o, s) BOOST_PP_IF(p(26, s), BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, o(26, s))
-# define BOOST_PP_WHILE_26_I(p, o, s) BOOST_PP_IF(p(27, s), BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, o(27, s))
-# define BOOST_PP_WHILE_27_I(p, o, s) BOOST_PP_IF(p(28, s), BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, o(28, s))
-# define BOOST_PP_WHILE_28_I(p, o, s) BOOST_PP_IF(p(29, s), BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, o(29, s))
-# define BOOST_PP_WHILE_29_I(p, o, s) BOOST_PP_IF(p(30, s), BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, o(30, s))
-# define BOOST_PP_WHILE_30_I(p, o, s) BOOST_PP_IF(p(31, s), BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, o(31, s))
-# define BOOST_PP_WHILE_31_I(p, o, s) BOOST_PP_IF(p(32, s), BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, o(32, s))
-# define BOOST_PP_WHILE_32_I(p, o, s) BOOST_PP_IF(p(33, s), BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, o(33, s))
-# define BOOST_PP_WHILE_33_I(p, o, s) BOOST_PP_IF(p(34, s), BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, o(34, s))
-# define BOOST_PP_WHILE_34_I(p, o, s) BOOST_PP_IF(p(35, s), BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, o(35, s))
-# define BOOST_PP_WHILE_35_I(p, o, s) BOOST_PP_IF(p(36, s), BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, o(36, s))
-# define BOOST_PP_WHILE_36_I(p, o, s) BOOST_PP_IF(p(37, s), BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, o(37, s))
-# define BOOST_PP_WHILE_37_I(p, o, s) BOOST_PP_IF(p(38, s), BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, o(38, s))
-# define BOOST_PP_WHILE_38_I(p, o, s) BOOST_PP_IF(p(39, s), BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, o(39, s))
-# define BOOST_PP_WHILE_39_I(p, o, s) BOOST_PP_IF(p(40, s), BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, o(40, s))
-# define BOOST_PP_WHILE_40_I(p, o, s) BOOST_PP_IF(p(41, s), BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, o(41, s))
-# define BOOST_PP_WHILE_41_I(p, o, s) BOOST_PP_IF(p(42, s), BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, o(42, s))
-# define BOOST_PP_WHILE_42_I(p, o, s) BOOST_PP_IF(p(43, s), BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, o(43, s))
-# define BOOST_PP_WHILE_43_I(p, o, s) BOOST_PP_IF(p(44, s), BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, o(44, s))
-# define BOOST_PP_WHILE_44_I(p, o, s) BOOST_PP_IF(p(45, s), BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, o(45, s))
-# define BOOST_PP_WHILE_45_I(p, o, s) BOOST_PP_IF(p(46, s), BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, o(46, s))
-# define BOOST_PP_WHILE_46_I(p, o, s) BOOST_PP_IF(p(47, s), BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, o(47, s))
-# define BOOST_PP_WHILE_47_I(p, o, s) BOOST_PP_IF(p(48, s), BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, o(48, s))
-# define BOOST_PP_WHILE_48_I(p, o, s) BOOST_PP_IF(p(49, s), BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, o(49, s))
-# define BOOST_PP_WHILE_49_I(p, o, s) BOOST_PP_IF(p(50, s), BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, o(50, s))
-# define BOOST_PP_WHILE_50_I(p, o, s) BOOST_PP_IF(p(51, s), BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, o(51, s))
-# define BOOST_PP_WHILE_51_I(p, o, s) BOOST_PP_IF(p(52, s), BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, o(52, s))
-# define BOOST_PP_WHILE_52_I(p, o, s) BOOST_PP_IF(p(53, s), BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, o(53, s))
-# define BOOST_PP_WHILE_53_I(p, o, s) BOOST_PP_IF(p(54, s), BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, o(54, s))
-# define BOOST_PP_WHILE_54_I(p, o, s) BOOST_PP_IF(p(55, s), BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, o(55, s))
-# define BOOST_PP_WHILE_55_I(p, o, s) BOOST_PP_IF(p(56, s), BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, o(56, s))
-# define BOOST_PP_WHILE_56_I(p, o, s) BOOST_PP_IF(p(57, s), BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, o(57, s))
-# define BOOST_PP_WHILE_57_I(p, o, s) BOOST_PP_IF(p(58, s), BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, o(58, s))
-# define BOOST_PP_WHILE_58_I(p, o, s) BOOST_PP_IF(p(59, s), BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, o(59, s))
-# define BOOST_PP_WHILE_59_I(p, o, s) BOOST_PP_IF(p(60, s), BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, o(60, s))
-# define BOOST_PP_WHILE_60_I(p, o, s) BOOST_PP_IF(p(61, s), BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, o(61, s))
-# define BOOST_PP_WHILE_61_I(p, o, s) BOOST_PP_IF(p(62, s), BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, o(62, s))
-# define BOOST_PP_WHILE_62_I(p, o, s) BOOST_PP_IF(p(63, s), BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, o(63, s))
-# define BOOST_PP_WHILE_63_I(p, o, s) BOOST_PP_IF(p(64, s), BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, o(64, s))
-# define BOOST_PP_WHILE_64_I(p, o, s) BOOST_PP_IF(p(65, s), BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, o(65, s))
-# define BOOST_PP_WHILE_65_I(p, o, s) BOOST_PP_IF(p(66, s), BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, o(66, s))
-# define BOOST_PP_WHILE_66_I(p, o, s) BOOST_PP_IF(p(67, s), BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, o(67, s))
-# define BOOST_PP_WHILE_67_I(p, o, s) BOOST_PP_IF(p(68, s), BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, o(68, s))
-# define BOOST_PP_WHILE_68_I(p, o, s) BOOST_PP_IF(p(69, s), BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, o(69, s))
-# define BOOST_PP_WHILE_69_I(p, o, s) BOOST_PP_IF(p(70, s), BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, o(70, s))
-# define BOOST_PP_WHILE_70_I(p, o, s) BOOST_PP_IF(p(71, s), BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, o(71, s))
-# define BOOST_PP_WHILE_71_I(p, o, s) BOOST_PP_IF(p(72, s), BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, o(72, s))
-# define BOOST_PP_WHILE_72_I(p, o, s) BOOST_PP_IF(p(73, s), BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, o(73, s))
-# define BOOST_PP_WHILE_73_I(p, o, s) BOOST_PP_IF(p(74, s), BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, o(74, s))
-# define BOOST_PP_WHILE_74_I(p, o, s) BOOST_PP_IF(p(75, s), BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, o(75, s))
-# define BOOST_PP_WHILE_75_I(p, o, s) BOOST_PP_IF(p(76, s), BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, o(76, s))
-# define BOOST_PP_WHILE_76_I(p, o, s) BOOST_PP_IF(p(77, s), BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, o(77, s))
-# define BOOST_PP_WHILE_77_I(p, o, s) BOOST_PP_IF(p(78, s), BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, o(78, s))
-# define BOOST_PP_WHILE_78_I(p, o, s) BOOST_PP_IF(p(79, s), BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, o(79, s))
-# define BOOST_PP_WHILE_79_I(p, o, s) BOOST_PP_IF(p(80, s), BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, o(80, s))
-# define BOOST_PP_WHILE_80_I(p, o, s) BOOST_PP_IF(p(81, s), BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, o(81, s))
-# define BOOST_PP_WHILE_81_I(p, o, s) BOOST_PP_IF(p(82, s), BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, o(82, s))
-# define BOOST_PP_WHILE_82_I(p, o, s) BOOST_PP_IF(p(83, s), BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, o(83, s))
-# define BOOST_PP_WHILE_83_I(p, o, s) BOOST_PP_IF(p(84, s), BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, o(84, s))
-# define BOOST_PP_WHILE_84_I(p, o, s) BOOST_PP_IF(p(85, s), BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, o(85, s))
-# define BOOST_PP_WHILE_85_I(p, o, s) BOOST_PP_IF(p(86, s), BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, o(86, s))
-# define BOOST_PP_WHILE_86_I(p, o, s) BOOST_PP_IF(p(87, s), BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, o(87, s))
-# define BOOST_PP_WHILE_87_I(p, o, s) BOOST_PP_IF(p(88, s), BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, o(88, s))
-# define BOOST_PP_WHILE_88_I(p, o, s) BOOST_PP_IF(p(89, s), BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, o(89, s))
-# define BOOST_PP_WHILE_89_I(p, o, s) BOOST_PP_IF(p(90, s), BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, o(90, s))
-# define BOOST_PP_WHILE_90_I(p, o, s) BOOST_PP_IF(p(91, s), BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, o(91, s))
-# define BOOST_PP_WHILE_91_I(p, o, s) BOOST_PP_IF(p(92, s), BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, o(92, s))
-# define BOOST_PP_WHILE_92_I(p, o, s) BOOST_PP_IF(p(93, s), BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, o(93, s))
-# define BOOST_PP_WHILE_93_I(p, o, s) BOOST_PP_IF(p(94, s), BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, o(94, s))
-# define BOOST_PP_WHILE_94_I(p, o, s) BOOST_PP_IF(p(95, s), BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, o(95, s))
-# define BOOST_PP_WHILE_95_I(p, o, s) BOOST_PP_IF(p(96, s), BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, o(96, s))
-# define BOOST_PP_WHILE_96_I(p, o, s) BOOST_PP_IF(p(97, s), BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, o(97, s))
-# define BOOST_PP_WHILE_97_I(p, o, s) BOOST_PP_IF(p(98, s), BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, o(98, s))
-# define BOOST_PP_WHILE_98_I(p, o, s) BOOST_PP_IF(p(99, s), BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, o(99, s))
-# define BOOST_PP_WHILE_99_I(p, o, s) BOOST_PP_IF(p(100, s), BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, o(100, s))
-# define BOOST_PP_WHILE_100_I(p, o, s) BOOST_PP_IF(p(101, s), BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, o(101, s))
-# define BOOST_PP_WHILE_101_I(p, o, s) BOOST_PP_IF(p(102, s), BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, o(102, s))
-# define BOOST_PP_WHILE_102_I(p, o, s) BOOST_PP_IF(p(103, s), BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, o(103, s))
-# define BOOST_PP_WHILE_103_I(p, o, s) BOOST_PP_IF(p(104, s), BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, o(104, s))
-# define BOOST_PP_WHILE_104_I(p, o, s) BOOST_PP_IF(p(105, s), BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, o(105, s))
-# define BOOST_PP_WHILE_105_I(p, o, s) BOOST_PP_IF(p(106, s), BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, o(106, s))
-# define BOOST_PP_WHILE_106_I(p, o, s) BOOST_PP_IF(p(107, s), BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, o(107, s))
-# define BOOST_PP_WHILE_107_I(p, o, s) BOOST_PP_IF(p(108, s), BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, o(108, s))
-# define BOOST_PP_WHILE_108_I(p, o, s) BOOST_PP_IF(p(109, s), BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, o(109, s))
-# define BOOST_PP_WHILE_109_I(p, o, s) BOOST_PP_IF(p(110, s), BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, o(110, s))
-# define BOOST_PP_WHILE_110_I(p, o, s) BOOST_PP_IF(p(111, s), BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, o(111, s))
-# define BOOST_PP_WHILE_111_I(p, o, s) BOOST_PP_IF(p(112, s), BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, o(112, s))
-# define BOOST_PP_WHILE_112_I(p, o, s) BOOST_PP_IF(p(113, s), BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, o(113, s))
-# define BOOST_PP_WHILE_113_I(p, o, s) BOOST_PP_IF(p(114, s), BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, o(114, s))
-# define BOOST_PP_WHILE_114_I(p, o, s) BOOST_PP_IF(p(115, s), BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, o(115, s))
-# define BOOST_PP_WHILE_115_I(p, o, s) BOOST_PP_IF(p(116, s), BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, o(116, s))
-# define BOOST_PP_WHILE_116_I(p, o, s) BOOST_PP_IF(p(117, s), BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, o(117, s))
-# define BOOST_PP_WHILE_117_I(p, o, s) BOOST_PP_IF(p(118, s), BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, o(118, s))
-# define BOOST_PP_WHILE_118_I(p, o, s) BOOST_PP_IF(p(119, s), BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, o(119, s))
-# define BOOST_PP_WHILE_119_I(p, o, s) BOOST_PP_IF(p(120, s), BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, o(120, s))
-# define BOOST_PP_WHILE_120_I(p, o, s) BOOST_PP_IF(p(121, s), BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, o(121, s))
-# define BOOST_PP_WHILE_121_I(p, o, s) BOOST_PP_IF(p(122, s), BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, o(122, s))
-# define BOOST_PP_WHILE_122_I(p, o, s) BOOST_PP_IF(p(123, s), BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, o(123, s))
-# define BOOST_PP_WHILE_123_I(p, o, s) BOOST_PP_IF(p(124, s), BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, o(124, s))
-# define BOOST_PP_WHILE_124_I(p, o, s) BOOST_PP_IF(p(125, s), BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, o(125, s))
-# define BOOST_PP_WHILE_125_I(p, o, s) BOOST_PP_IF(p(126, s), BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, o(126, s))
-# define BOOST_PP_WHILE_126_I(p, o, s) BOOST_PP_IF(p(127, s), BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, o(127, s))
-# define BOOST_PP_WHILE_127_I(p, o, s) BOOST_PP_IF(p(128, s), BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, o(128, s))
-# define BOOST_PP_WHILE_128_I(p, o, s) BOOST_PP_IF(p(129, s), BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, o(129, s))
-# define BOOST_PP_WHILE_129_I(p, o, s) BOOST_PP_IF(p(130, s), BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, o(130, s))
-# define BOOST_PP_WHILE_130_I(p, o, s) BOOST_PP_IF(p(131, s), BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, o(131, s))
-# define BOOST_PP_WHILE_131_I(p, o, s) BOOST_PP_IF(p(132, s), BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, o(132, s))
-# define BOOST_PP_WHILE_132_I(p, o, s) BOOST_PP_IF(p(133, s), BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, o(133, s))
-# define BOOST_PP_WHILE_133_I(p, o, s) BOOST_PP_IF(p(134, s), BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, o(134, s))
-# define BOOST_PP_WHILE_134_I(p, o, s) BOOST_PP_IF(p(135, s), BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, o(135, s))
-# define BOOST_PP_WHILE_135_I(p, o, s) BOOST_PP_IF(p(136, s), BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, o(136, s))
-# define BOOST_PP_WHILE_136_I(p, o, s) BOOST_PP_IF(p(137, s), BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, o(137, s))
-# define BOOST_PP_WHILE_137_I(p, o, s) BOOST_PP_IF(p(138, s), BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, o(138, s))
-# define BOOST_PP_WHILE_138_I(p, o, s) BOOST_PP_IF(p(139, s), BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, o(139, s))
-# define BOOST_PP_WHILE_139_I(p, o, s) BOOST_PP_IF(p(140, s), BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, o(140, s))
-# define BOOST_PP_WHILE_140_I(p, o, s) BOOST_PP_IF(p(141, s), BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, o(141, s))
-# define BOOST_PP_WHILE_141_I(p, o, s) BOOST_PP_IF(p(142, s), BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, o(142, s))
-# define BOOST_PP_WHILE_142_I(p, o, s) BOOST_PP_IF(p(143, s), BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, o(143, s))
-# define BOOST_PP_WHILE_143_I(p, o, s) BOOST_PP_IF(p(144, s), BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, o(144, s))
-# define BOOST_PP_WHILE_144_I(p, o, s) BOOST_PP_IF(p(145, s), BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, o(145, s))
-# define BOOST_PP_WHILE_145_I(p, o, s) BOOST_PP_IF(p(146, s), BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, o(146, s))
-# define BOOST_PP_WHILE_146_I(p, o, s) BOOST_PP_IF(p(147, s), BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, o(147, s))
-# define BOOST_PP_WHILE_147_I(p, o, s) BOOST_PP_IF(p(148, s), BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, o(148, s))
-# define BOOST_PP_WHILE_148_I(p, o, s) BOOST_PP_IF(p(149, s), BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, o(149, s))
-# define BOOST_PP_WHILE_149_I(p, o, s) BOOST_PP_IF(p(150, s), BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, o(150, s))
-# define BOOST_PP_WHILE_150_I(p, o, s) BOOST_PP_IF(p(151, s), BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, o(151, s))
-# define BOOST_PP_WHILE_151_I(p, o, s) BOOST_PP_IF(p(152, s), BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, o(152, s))
-# define BOOST_PP_WHILE_152_I(p, o, s) BOOST_PP_IF(p(153, s), BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, o(153, s))
-# define BOOST_PP_WHILE_153_I(p, o, s) BOOST_PP_IF(p(154, s), BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, o(154, s))
-# define BOOST_PP_WHILE_154_I(p, o, s) BOOST_PP_IF(p(155, s), BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, o(155, s))
-# define BOOST_PP_WHILE_155_I(p, o, s) BOOST_PP_IF(p(156, s), BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, o(156, s))
-# define BOOST_PP_WHILE_156_I(p, o, s) BOOST_PP_IF(p(157, s), BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, o(157, s))
-# define BOOST_PP_WHILE_157_I(p, o, s) BOOST_PP_IF(p(158, s), BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, o(158, s))
-# define BOOST_PP_WHILE_158_I(p, o, s) BOOST_PP_IF(p(159, s), BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, o(159, s))
-# define BOOST_PP_WHILE_159_I(p, o, s) BOOST_PP_IF(p(160, s), BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, o(160, s))
-# define BOOST_PP_WHILE_160_I(p, o, s) BOOST_PP_IF(p(161, s), BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, o(161, s))
-# define BOOST_PP_WHILE_161_I(p, o, s) BOOST_PP_IF(p(162, s), BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, o(162, s))
-# define BOOST_PP_WHILE_162_I(p, o, s) BOOST_PP_IF(p(163, s), BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, o(163, s))
-# define BOOST_PP_WHILE_163_I(p, o, s) BOOST_PP_IF(p(164, s), BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, o(164, s))
-# define BOOST_PP_WHILE_164_I(p, o, s) BOOST_PP_IF(p(165, s), BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, o(165, s))
-# define BOOST_PP_WHILE_165_I(p, o, s) BOOST_PP_IF(p(166, s), BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, o(166, s))
-# define BOOST_PP_WHILE_166_I(p, o, s) BOOST_PP_IF(p(167, s), BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, o(167, s))
-# define BOOST_PP_WHILE_167_I(p, o, s) BOOST_PP_IF(p(168, s), BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, o(168, s))
-# define BOOST_PP_WHILE_168_I(p, o, s) BOOST_PP_IF(p(169, s), BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, o(169, s))
-# define BOOST_PP_WHILE_169_I(p, o, s) BOOST_PP_IF(p(170, s), BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, o(170, s))
-# define BOOST_PP_WHILE_170_I(p, o, s) BOOST_PP_IF(p(171, s), BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, o(171, s))
-# define BOOST_PP_WHILE_171_I(p, o, s) BOOST_PP_IF(p(172, s), BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, o(172, s))
-# define BOOST_PP_WHILE_172_I(p, o, s) BOOST_PP_IF(p(173, s), BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, o(173, s))
-# define BOOST_PP_WHILE_173_I(p, o, s) BOOST_PP_IF(p(174, s), BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, o(174, s))
-# define BOOST_PP_WHILE_174_I(p, o, s) BOOST_PP_IF(p(175, s), BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, o(175, s))
-# define BOOST_PP_WHILE_175_I(p, o, s) BOOST_PP_IF(p(176, s), BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, o(176, s))
-# define BOOST_PP_WHILE_176_I(p, o, s) BOOST_PP_IF(p(177, s), BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, o(177, s))
-# define BOOST_PP_WHILE_177_I(p, o, s) BOOST_PP_IF(p(178, s), BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, o(178, s))
-# define BOOST_PP_WHILE_178_I(p, o, s) BOOST_PP_IF(p(179, s), BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, o(179, s))
-# define BOOST_PP_WHILE_179_I(p, o, s) BOOST_PP_IF(p(180, s), BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, o(180, s))
-# define BOOST_PP_WHILE_180_I(p, o, s) BOOST_PP_IF(p(181, s), BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, o(181, s))
-# define BOOST_PP_WHILE_181_I(p, o, s) BOOST_PP_IF(p(182, s), BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, o(182, s))
-# define BOOST_PP_WHILE_182_I(p, o, s) BOOST_PP_IF(p(183, s), BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, o(183, s))
-# define BOOST_PP_WHILE_183_I(p, o, s) BOOST_PP_IF(p(184, s), BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, o(184, s))
-# define BOOST_PP_WHILE_184_I(p, o, s) BOOST_PP_IF(p(185, s), BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, o(185, s))
-# define BOOST_PP_WHILE_185_I(p, o, s) BOOST_PP_IF(p(186, s), BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, o(186, s))
-# define BOOST_PP_WHILE_186_I(p, o, s) BOOST_PP_IF(p(187, s), BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, o(187, s))
-# define BOOST_PP_WHILE_187_I(p, o, s) BOOST_PP_IF(p(188, s), BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, o(188, s))
-# define BOOST_PP_WHILE_188_I(p, o, s) BOOST_PP_IF(p(189, s), BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, o(189, s))
-# define BOOST_PP_WHILE_189_I(p, o, s) BOOST_PP_IF(p(190, s), BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, o(190, s))
-# define BOOST_PP_WHILE_190_I(p, o, s) BOOST_PP_IF(p(191, s), BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, o(191, s))
-# define BOOST_PP_WHILE_191_I(p, o, s) BOOST_PP_IF(p(192, s), BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, o(192, s))
-# define BOOST_PP_WHILE_192_I(p, o, s) BOOST_PP_IF(p(193, s), BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, o(193, s))
-# define BOOST_PP_WHILE_193_I(p, o, s) BOOST_PP_IF(p(194, s), BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, o(194, s))
-# define BOOST_PP_WHILE_194_I(p, o, s) BOOST_PP_IF(p(195, s), BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, o(195, s))
-# define BOOST_PP_WHILE_195_I(p, o, s) BOOST_PP_IF(p(196, s), BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, o(196, s))
-# define BOOST_PP_WHILE_196_I(p, o, s) BOOST_PP_IF(p(197, s), BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, o(197, s))
-# define BOOST_PP_WHILE_197_I(p, o, s) BOOST_PP_IF(p(198, s), BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, o(198, s))
-# define BOOST_PP_WHILE_198_I(p, o, s) BOOST_PP_IF(p(199, s), BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, o(199, s))
-# define BOOST_PP_WHILE_199_I(p, o, s) BOOST_PP_IF(p(200, s), BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, o(200, s))
-# define BOOST_PP_WHILE_200_I(p, o, s) BOOST_PP_IF(p(201, s), BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, o(201, s))
-# define BOOST_PP_WHILE_201_I(p, o, s) BOOST_PP_IF(p(202, s), BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, o(202, s))
-# define BOOST_PP_WHILE_202_I(p, o, s) BOOST_PP_IF(p(203, s), BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, o(203, s))
-# define BOOST_PP_WHILE_203_I(p, o, s) BOOST_PP_IF(p(204, s), BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, o(204, s))
-# define BOOST_PP_WHILE_204_I(p, o, s) BOOST_PP_IF(p(205, s), BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, o(205, s))
-# define BOOST_PP_WHILE_205_I(p, o, s) BOOST_PP_IF(p(206, s), BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, o(206, s))
-# define BOOST_PP_WHILE_206_I(p, o, s) BOOST_PP_IF(p(207, s), BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, o(207, s))
-# define BOOST_PP_WHILE_207_I(p, o, s) BOOST_PP_IF(p(208, s), BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, o(208, s))
-# define BOOST_PP_WHILE_208_I(p, o, s) BOOST_PP_IF(p(209, s), BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, o(209, s))
-# define BOOST_PP_WHILE_209_I(p, o, s) BOOST_PP_IF(p(210, s), BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, o(210, s))
-# define BOOST_PP_WHILE_210_I(p, o, s) BOOST_PP_IF(p(211, s), BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, o(211, s))
-# define BOOST_PP_WHILE_211_I(p, o, s) BOOST_PP_IF(p(212, s), BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, o(212, s))
-# define BOOST_PP_WHILE_212_I(p, o, s) BOOST_PP_IF(p(213, s), BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, o(213, s))
-# define BOOST_PP_WHILE_213_I(p, o, s) BOOST_PP_IF(p(214, s), BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, o(214, s))
-# define BOOST_PP_WHILE_214_I(p, o, s) BOOST_PP_IF(p(215, s), BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, o(215, s))
-# define BOOST_PP_WHILE_215_I(p, o, s) BOOST_PP_IF(p(216, s), BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, o(216, s))
-# define BOOST_PP_WHILE_216_I(p, o, s) BOOST_PP_IF(p(217, s), BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, o(217, s))
-# define BOOST_PP_WHILE_217_I(p, o, s) BOOST_PP_IF(p(218, s), BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, o(218, s))
-# define BOOST_PP_WHILE_218_I(p, o, s) BOOST_PP_IF(p(219, s), BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, o(219, s))
-# define BOOST_PP_WHILE_219_I(p, o, s) BOOST_PP_IF(p(220, s), BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, o(220, s))
-# define BOOST_PP_WHILE_220_I(p, o, s) BOOST_PP_IF(p(221, s), BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, o(221, s))
-# define BOOST_PP_WHILE_221_I(p, o, s) BOOST_PP_IF(p(222, s), BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, o(222, s))
-# define BOOST_PP_WHILE_222_I(p, o, s) BOOST_PP_IF(p(223, s), BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, o(223, s))
-# define BOOST_PP_WHILE_223_I(p, o, s) BOOST_PP_IF(p(224, s), BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, o(224, s))
-# define BOOST_PP_WHILE_224_I(p, o, s) BOOST_PP_IF(p(225, s), BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, o(225, s))
-# define BOOST_PP_WHILE_225_I(p, o, s) BOOST_PP_IF(p(226, s), BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, o(226, s))
-# define BOOST_PP_WHILE_226_I(p, o, s) BOOST_PP_IF(p(227, s), BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, o(227, s))
-# define BOOST_PP_WHILE_227_I(p, o, s) BOOST_PP_IF(p(228, s), BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, o(228, s))
-# define BOOST_PP_WHILE_228_I(p, o, s) BOOST_PP_IF(p(229, s), BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, o(229, s))
-# define BOOST_PP_WHILE_229_I(p, o, s) BOOST_PP_IF(p(230, s), BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, o(230, s))
-# define BOOST_PP_WHILE_230_I(p, o, s) BOOST_PP_IF(p(231, s), BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, o(231, s))
-# define BOOST_PP_WHILE_231_I(p, o, s) BOOST_PP_IF(p(232, s), BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, o(232, s))
-# define BOOST_PP_WHILE_232_I(p, o, s) BOOST_PP_IF(p(233, s), BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, o(233, s))
-# define BOOST_PP_WHILE_233_I(p, o, s) BOOST_PP_IF(p(234, s), BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, o(234, s))
-# define BOOST_PP_WHILE_234_I(p, o, s) BOOST_PP_IF(p(235, s), BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, o(235, s))
-# define BOOST_PP_WHILE_235_I(p, o, s) BOOST_PP_IF(p(236, s), BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, o(236, s))
-# define BOOST_PP_WHILE_236_I(p, o, s) BOOST_PP_IF(p(237, s), BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, o(237, s))
-# define BOOST_PP_WHILE_237_I(p, o, s) BOOST_PP_IF(p(238, s), BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, o(238, s))
-# define BOOST_PP_WHILE_238_I(p, o, s) BOOST_PP_IF(p(239, s), BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, o(239, s))
-# define BOOST_PP_WHILE_239_I(p, o, s) BOOST_PP_IF(p(240, s), BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, o(240, s))
-# define BOOST_PP_WHILE_240_I(p, o, s) BOOST_PP_IF(p(241, s), BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, o(241, s))
-# define BOOST_PP_WHILE_241_I(p, o, s) BOOST_PP_IF(p(242, s), BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, o(242, s))
-# define BOOST_PP_WHILE_242_I(p, o, s) BOOST_PP_IF(p(243, s), BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, o(243, s))
-# define BOOST_PP_WHILE_243_I(p, o, s) BOOST_PP_IF(p(244, s), BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, o(244, s))
-# define BOOST_PP_WHILE_244_I(p, o, s) BOOST_PP_IF(p(245, s), BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, o(245, s))
-# define BOOST_PP_WHILE_245_I(p, o, s) BOOST_PP_IF(p(246, s), BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, o(246, s))
-# define BOOST_PP_WHILE_246_I(p, o, s) BOOST_PP_IF(p(247, s), BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, o(247, s))
-# define BOOST_PP_WHILE_247_I(p, o, s) BOOST_PP_IF(p(248, s), BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, o(248, s))
-# define BOOST_PP_WHILE_248_I(p, o, s) BOOST_PP_IF(p(249, s), BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, o(249, s))
-# define BOOST_PP_WHILE_249_I(p, o, s) BOOST_PP_IF(p(250, s), BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, o(250, s))
-# define BOOST_PP_WHILE_250_I(p, o, s) BOOST_PP_IF(p(251, s), BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, o(251, s))
-# define BOOST_PP_WHILE_251_I(p, o, s) BOOST_PP_IF(p(252, s), BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, o(252, s))
-# define BOOST_PP_WHILE_252_I(p, o, s) BOOST_PP_IF(p(253, s), BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, o(253, s))
-# define BOOST_PP_WHILE_253_I(p, o, s) BOOST_PP_IF(p(254, s), BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, o(254, s))
-# define BOOST_PP_WHILE_254_I(p, o, s) BOOST_PP_IF(p(255, s), BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, o(255, s))
-# define BOOST_PP_WHILE_255_I(p, o, s) BOOST_PP_IF(p(256, s), BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, o(256, s))
-# define BOOST_PP_WHILE_256_I(p, o, s) BOOST_PP_IF(p(257, s), BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, o(257, s))
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/control/detail/msvc/while.hpp b/libcutl/cutl/details/boost/preprocessor/control/detail/msvc/while.hpp
deleted file mode 100644
index 42ac246..0000000
--- a/libcutl/cutl/details/boost/preprocessor/control/detail/msvc/while.hpp
+++ /dev/null
@@ -1,277 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_MSVC_WHILE_HPP
-# define BOOST_PREPROCESSOR_CONTROL_DETAIL_MSVC_WHILE_HPP
-#
-# include <cutl/details/boost/preprocessor/control/if.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_IF(p(2, s), BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, o(2, s))
-# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_IF(p(3, s), BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, o(3, s))
-# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_IF(p(4, s), BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, o(4, s))
-# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_IF(p(5, s), BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, o(5, s))
-# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_IF(p(6, s), BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, o(6, s))
-# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_IF(p(7, s), BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, o(7, s))
-# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_IF(p(8, s), BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, o(8, s))
-# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_IF(p(9, s), BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, o(9, s))
-# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_IF(p(10, s), BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, o(10, s))
-# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_IF(p(11, s), BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, o(11, s))
-# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_IF(p(12, s), BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, o(12, s))
-# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_IF(p(13, s), BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, o(13, s))
-# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_IF(p(14, s), BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, o(14, s))
-# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_IF(p(15, s), BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, o(15, s))
-# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_IF(p(16, s), BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, o(16, s))
-# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_IF(p(17, s), BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, o(17, s))
-# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_IF(p(18, s), BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, o(18, s))
-# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_IF(p(19, s), BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, o(19, s))
-# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_IF(p(20, s), BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, o(20, s))
-# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_IF(p(21, s), BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, o(21, s))
-# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_IF(p(22, s), BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, o(22, s))
-# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_IF(p(23, s), BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, o(23, s))
-# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_IF(p(24, s), BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, o(24, s))
-# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_IF(p(25, s), BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, o(25, s))
-# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_IF(p(26, s), BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, o(26, s))
-# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_IF(p(27, s), BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, o(27, s))
-# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_IF(p(28, s), BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, o(28, s))
-# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_IF(p(29, s), BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, o(29, s))
-# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_IF(p(30, s), BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, o(30, s))
-# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_IF(p(31, s), BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, o(31, s))
-# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_IF(p(32, s), BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, o(32, s))
-# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_IF(p(33, s), BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, o(33, s))
-# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_IF(p(34, s), BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, o(34, s))
-# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_IF(p(35, s), BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, o(35, s))
-# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_IF(p(36, s), BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, o(36, s))
-# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_IF(p(37, s), BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, o(37, s))
-# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_IF(p(38, s), BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, o(38, s))
-# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_IF(p(39, s), BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, o(39, s))
-# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_IF(p(40, s), BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, o(40, s))
-# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_IF(p(41, s), BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, o(41, s))
-# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_IF(p(42, s), BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, o(42, s))
-# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_IF(p(43, s), BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, o(43, s))
-# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_IF(p(44, s), BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, o(44, s))
-# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_IF(p(45, s), BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, o(45, s))
-# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_IF(p(46, s), BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, o(46, s))
-# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_IF(p(47, s), BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, o(47, s))
-# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_IF(p(48, s), BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, o(48, s))
-# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_IF(p(49, s), BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, o(49, s))
-# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_IF(p(50, s), BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, o(50, s))
-# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_IF(p(51, s), BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, o(51, s))
-# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_IF(p(52, s), BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, o(52, s))
-# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_IF(p(53, s), BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, o(53, s))
-# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_IF(p(54, s), BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, o(54, s))
-# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_IF(p(55, s), BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, o(55, s))
-# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_IF(p(56, s), BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, o(56, s))
-# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_IF(p(57, s), BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, o(57, s))
-# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_IF(p(58, s), BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, o(58, s))
-# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_IF(p(59, s), BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, o(59, s))
-# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_IF(p(60, s), BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, o(60, s))
-# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_IF(p(61, s), BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, o(61, s))
-# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_IF(p(62, s), BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, o(62, s))
-# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_IF(p(63, s), BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, o(63, s))
-# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_IF(p(64, s), BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, o(64, s))
-# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_IF(p(65, s), BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, o(65, s))
-# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_IF(p(66, s), BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, o(66, s))
-# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_IF(p(67, s), BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, o(67, s))
-# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_IF(p(68, s), BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, o(68, s))
-# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_IF(p(69, s), BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, o(69, s))
-# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_IF(p(70, s), BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, o(70, s))
-# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_IF(p(71, s), BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, o(71, s))
-# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_IF(p(72, s), BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, o(72, s))
-# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_IF(p(73, s), BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, o(73, s))
-# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_IF(p(74, s), BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, o(74, s))
-# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_IF(p(75, s), BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, o(75, s))
-# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_IF(p(76, s), BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, o(76, s))
-# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_IF(p(77, s), BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, o(77, s))
-# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_IF(p(78, s), BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, o(78, s))
-# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_IF(p(79, s), BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, o(79, s))
-# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_IF(p(80, s), BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, o(80, s))
-# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_IF(p(81, s), BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, o(81, s))
-# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_IF(p(82, s), BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, o(82, s))
-# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_IF(p(83, s), BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, o(83, s))
-# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_IF(p(84, s), BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, o(84, s))
-# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_IF(p(85, s), BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, o(85, s))
-# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_IF(p(86, s), BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, o(86, s))
-# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_IF(p(87, s), BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, o(87, s))
-# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_IF(p(88, s), BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, o(88, s))
-# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_IF(p(89, s), BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, o(89, s))
-# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_IF(p(90, s), BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, o(90, s))
-# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_IF(p(91, s), BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, o(91, s))
-# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_IF(p(92, s), BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, o(92, s))
-# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_IF(p(93, s), BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, o(93, s))
-# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_IF(p(94, s), BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, o(94, s))
-# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_IF(p(95, s), BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, o(95, s))
-# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_IF(p(96, s), BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, o(96, s))
-# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_IF(p(97, s), BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, o(97, s))
-# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_IF(p(98, s), BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, o(98, s))
-# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_IF(p(99, s), BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, o(99, s))
-# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_IF(p(100, s), BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, o(100, s))
-# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_IF(p(101, s), BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, o(101, s))
-# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_IF(p(102, s), BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, o(102, s))
-# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_IF(p(103, s), BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, o(103, s))
-# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_IF(p(104, s), BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, o(104, s))
-# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_IF(p(105, s), BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, o(105, s))
-# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_IF(p(106, s), BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, o(106, s))
-# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_IF(p(107, s), BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, o(107, s))
-# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_IF(p(108, s), BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, o(108, s))
-# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_IF(p(109, s), BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, o(109, s))
-# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_IF(p(110, s), BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, o(110, s))
-# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_IF(p(111, s), BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, o(111, s))
-# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_IF(p(112, s), BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, o(112, s))
-# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_IF(p(113, s), BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, o(113, s))
-# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_IF(p(114, s), BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, o(114, s))
-# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_IF(p(115, s), BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, o(115, s))
-# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_IF(p(116, s), BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, o(116, s))
-# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_IF(p(117, s), BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, o(117, s))
-# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_IF(p(118, s), BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, o(118, s))
-# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_IF(p(119, s), BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, o(119, s))
-# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_IF(p(120, s), BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, o(120, s))
-# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_IF(p(121, s), BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, o(121, s))
-# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_IF(p(122, s), BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, o(122, s))
-# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_IF(p(123, s), BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, o(123, s))
-# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_IF(p(124, s), BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, o(124, s))
-# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_IF(p(125, s), BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, o(125, s))
-# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_IF(p(126, s), BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, o(126, s))
-# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_IF(p(127, s), BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, o(127, s))
-# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_IF(p(128, s), BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, o(128, s))
-# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_IF(p(129, s), BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, o(129, s))
-# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_IF(p(130, s), BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, o(130, s))
-# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_IF(p(131, s), BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, o(131, s))
-# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_IF(p(132, s), BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, o(132, s))
-# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_IF(p(133, s), BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, o(133, s))
-# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_IF(p(134, s), BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, o(134, s))
-# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_IF(p(135, s), BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, o(135, s))
-# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_IF(p(136, s), BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, o(136, s))
-# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_IF(p(137, s), BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, o(137, s))
-# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_IF(p(138, s), BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, o(138, s))
-# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_IF(p(139, s), BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, o(139, s))
-# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_IF(p(140, s), BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, o(140, s))
-# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_IF(p(141, s), BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, o(141, s))
-# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_IF(p(142, s), BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, o(142, s))
-# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_IF(p(143, s), BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, o(143, s))
-# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_IF(p(144, s), BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, o(144, s))
-# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_IF(p(145, s), BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, o(145, s))
-# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_IF(p(146, s), BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, o(146, s))
-# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_IF(p(147, s), BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, o(147, s))
-# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_IF(p(148, s), BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, o(148, s))
-# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_IF(p(149, s), BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, o(149, s))
-# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_IF(p(150, s), BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, o(150, s))
-# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_IF(p(151, s), BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, o(151, s))
-# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_IF(p(152, s), BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, o(152, s))
-# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_IF(p(153, s), BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, o(153, s))
-# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_IF(p(154, s), BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, o(154, s))
-# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_IF(p(155, s), BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, o(155, s))
-# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_IF(p(156, s), BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, o(156, s))
-# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_IF(p(157, s), BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, o(157, s))
-# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_IF(p(158, s), BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, o(158, s))
-# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_IF(p(159, s), BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, o(159, s))
-# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_IF(p(160, s), BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, o(160, s))
-# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_IF(p(161, s), BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, o(161, s))
-# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_IF(p(162, s), BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, o(162, s))
-# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_IF(p(163, s), BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, o(163, s))
-# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_IF(p(164, s), BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, o(164, s))
-# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_IF(p(165, s), BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, o(165, s))
-# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_IF(p(166, s), BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, o(166, s))
-# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_IF(p(167, s), BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, o(167, s))
-# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_IF(p(168, s), BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, o(168, s))
-# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_IF(p(169, s), BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, o(169, s))
-# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_IF(p(170, s), BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, o(170, s))
-# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_IF(p(171, s), BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, o(171, s))
-# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_IF(p(172, s), BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, o(172, s))
-# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_IF(p(173, s), BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, o(173, s))
-# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_IF(p(174, s), BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, o(174, s))
-# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_IF(p(175, s), BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, o(175, s))
-# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_IF(p(176, s), BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, o(176, s))
-# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_IF(p(177, s), BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, o(177, s))
-# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_IF(p(178, s), BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, o(178, s))
-# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_IF(p(179, s), BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, o(179, s))
-# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_IF(p(180, s), BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, o(180, s))
-# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_IF(p(181, s), BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, o(181, s))
-# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_IF(p(182, s), BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, o(182, s))
-# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_IF(p(183, s), BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, o(183, s))
-# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_IF(p(184, s), BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, o(184, s))
-# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_IF(p(185, s), BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, o(185, s))
-# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_IF(p(186, s), BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, o(186, s))
-# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_IF(p(187, s), BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, o(187, s))
-# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_IF(p(188, s), BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, o(188, s))
-# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_IF(p(189, s), BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, o(189, s))
-# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_IF(p(190, s), BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, o(190, s))
-# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_IF(p(191, s), BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, o(191, s))
-# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_IF(p(192, s), BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, o(192, s))
-# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_IF(p(193, s), BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, o(193, s))
-# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_IF(p(194, s), BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, o(194, s))
-# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_IF(p(195, s), BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, o(195, s))
-# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_IF(p(196, s), BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, o(196, s))
-# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_IF(p(197, s), BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, o(197, s))
-# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_IF(p(198, s), BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, o(198, s))
-# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_IF(p(199, s), BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, o(199, s))
-# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_IF(p(200, s), BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, o(200, s))
-# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_IF(p(201, s), BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, o(201, s))
-# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_IF(p(202, s), BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, o(202, s))
-# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_IF(p(203, s), BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, o(203, s))
-# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_IF(p(204, s), BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, o(204, s))
-# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_IF(p(205, s), BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, o(205, s))
-# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_IF(p(206, s), BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, o(206, s))
-# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_IF(p(207, s), BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, o(207, s))
-# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_IF(p(208, s), BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, o(208, s))
-# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_IF(p(209, s), BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, o(209, s))
-# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_IF(p(210, s), BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, o(210, s))
-# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_IF(p(211, s), BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, o(211, s))
-# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_IF(p(212, s), BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, o(212, s))
-# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_IF(p(213, s), BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, o(213, s))
-# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_IF(p(214, s), BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, o(214, s))
-# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_IF(p(215, s), BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, o(215, s))
-# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_IF(p(216, s), BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, o(216, s))
-# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_IF(p(217, s), BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, o(217, s))
-# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_IF(p(218, s), BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, o(218, s))
-# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_IF(p(219, s), BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, o(219, s))
-# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_IF(p(220, s), BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, o(220, s))
-# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_IF(p(221, s), BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, o(221, s))
-# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_IF(p(222, s), BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, o(222, s))
-# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_IF(p(223, s), BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, o(223, s))
-# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_IF(p(224, s), BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, o(224, s))
-# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_IF(p(225, s), BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, o(225, s))
-# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_IF(p(226, s), BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, o(226, s))
-# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_IF(p(227, s), BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, o(227, s))
-# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_IF(p(228, s), BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, o(228, s))
-# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_IF(p(229, s), BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, o(229, s))
-# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_IF(p(230, s), BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, o(230, s))
-# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_IF(p(231, s), BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, o(231, s))
-# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_IF(p(232, s), BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, o(232, s))
-# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_IF(p(233, s), BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, o(233, s))
-# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_IF(p(234, s), BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, o(234, s))
-# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_IF(p(235, s), BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, o(235, s))
-# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_IF(p(236, s), BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, o(236, s))
-# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_IF(p(237, s), BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, o(237, s))
-# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_IF(p(238, s), BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, o(238, s))
-# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_IF(p(239, s), BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, o(239, s))
-# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_IF(p(240, s), BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, o(240, s))
-# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_IF(p(241, s), BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, o(241, s))
-# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_IF(p(242, s), BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, o(242, s))
-# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_IF(p(243, s), BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, o(243, s))
-# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_IF(p(244, s), BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, o(244, s))
-# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_IF(p(245, s), BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, o(245, s))
-# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_IF(p(246, s), BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, o(246, s))
-# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_IF(p(247, s), BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, o(247, s))
-# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_IF(p(248, s), BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, o(248, s))
-# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_IF(p(249, s), BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, o(249, s))
-# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_IF(p(250, s), BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, o(250, s))
-# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_IF(p(251, s), BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, o(251, s))
-# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_IF(p(252, s), BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, o(252, s))
-# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_IF(p(253, s), BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, o(253, s))
-# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_IF(p(254, s), BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, o(254, s))
-# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_IF(p(255, s), BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, o(255, s))
-# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_IF(p(256, s), BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, o(256, s))
-# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_IF(p(257, s), BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, o(257, s))
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/control/detail/while.hpp b/libcutl/cutl/details/boost/preprocessor/control/detail/while.hpp
deleted file mode 100644
index d7e92fb..0000000
--- a/libcutl/cutl/details/boost/preprocessor/control/detail/while.hpp
+++ /dev/null
@@ -1,536 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
-# define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
-#
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-# include <cutl/details/boost/preprocessor/logical/bool.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_C(BOOST_PP_BOOL(p(2, s)), p, o, s)
-# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_C(BOOST_PP_BOOL(p(3, s)), p, o, s)
-# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_C(BOOST_PP_BOOL(p(4, s)), p, o, s)
-# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_C(BOOST_PP_BOOL(p(5, s)), p, o, s)
-# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_C(BOOST_PP_BOOL(p(6, s)), p, o, s)
-# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_C(BOOST_PP_BOOL(p(7, s)), p, o, s)
-# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_C(BOOST_PP_BOOL(p(8, s)), p, o, s)
-# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_C(BOOST_PP_BOOL(p(9, s)), p, o, s)
-# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_C(BOOST_PP_BOOL(p(10, s)), p, o, s)
-# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_C(BOOST_PP_BOOL(p(11, s)), p, o, s)
-# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_C(BOOST_PP_BOOL(p(12, s)), p, o, s)
-# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_C(BOOST_PP_BOOL(p(13, s)), p, o, s)
-# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_C(BOOST_PP_BOOL(p(14, s)), p, o, s)
-# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_C(BOOST_PP_BOOL(p(15, s)), p, o, s)
-# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_C(BOOST_PP_BOOL(p(16, s)), p, o, s)
-# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_C(BOOST_PP_BOOL(p(17, s)), p, o, s)
-# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_C(BOOST_PP_BOOL(p(18, s)), p, o, s)
-# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_C(BOOST_PP_BOOL(p(19, s)), p, o, s)
-# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_C(BOOST_PP_BOOL(p(20, s)), p, o, s)
-# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_C(BOOST_PP_BOOL(p(21, s)), p, o, s)
-# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_C(BOOST_PP_BOOL(p(22, s)), p, o, s)
-# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_C(BOOST_PP_BOOL(p(23, s)), p, o, s)
-# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_C(BOOST_PP_BOOL(p(24, s)), p, o, s)
-# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_C(BOOST_PP_BOOL(p(25, s)), p, o, s)
-# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_C(BOOST_PP_BOOL(p(26, s)), p, o, s)
-# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_C(BOOST_PP_BOOL(p(27, s)), p, o, s)
-# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_C(BOOST_PP_BOOL(p(28, s)), p, o, s)
-# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_C(BOOST_PP_BOOL(p(29, s)), p, o, s)
-# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_C(BOOST_PP_BOOL(p(30, s)), p, o, s)
-# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_C(BOOST_PP_BOOL(p(31, s)), p, o, s)
-# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_C(BOOST_PP_BOOL(p(32, s)), p, o, s)
-# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_C(BOOST_PP_BOOL(p(33, s)), p, o, s)
-# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_C(BOOST_PP_BOOL(p(34, s)), p, o, s)
-# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_C(BOOST_PP_BOOL(p(35, s)), p, o, s)
-# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_C(BOOST_PP_BOOL(p(36, s)), p, o, s)
-# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_C(BOOST_PP_BOOL(p(37, s)), p, o, s)
-# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_C(BOOST_PP_BOOL(p(38, s)), p, o, s)
-# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_C(BOOST_PP_BOOL(p(39, s)), p, o, s)
-# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_C(BOOST_PP_BOOL(p(40, s)), p, o, s)
-# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_C(BOOST_PP_BOOL(p(41, s)), p, o, s)
-# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_C(BOOST_PP_BOOL(p(42, s)), p, o, s)
-# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_C(BOOST_PP_BOOL(p(43, s)), p, o, s)
-# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_C(BOOST_PP_BOOL(p(44, s)), p, o, s)
-# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_C(BOOST_PP_BOOL(p(45, s)), p, o, s)
-# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_C(BOOST_PP_BOOL(p(46, s)), p, o, s)
-# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_C(BOOST_PP_BOOL(p(47, s)), p, o, s)
-# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_C(BOOST_PP_BOOL(p(48, s)), p, o, s)
-# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_C(BOOST_PP_BOOL(p(49, s)), p, o, s)
-# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_C(BOOST_PP_BOOL(p(50, s)), p, o, s)
-# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_C(BOOST_PP_BOOL(p(51, s)), p, o, s)
-# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_C(BOOST_PP_BOOL(p(52, s)), p, o, s)
-# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_C(BOOST_PP_BOOL(p(53, s)), p, o, s)
-# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_C(BOOST_PP_BOOL(p(54, s)), p, o, s)
-# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_C(BOOST_PP_BOOL(p(55, s)), p, o, s)
-# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_C(BOOST_PP_BOOL(p(56, s)), p, o, s)
-# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_C(BOOST_PP_BOOL(p(57, s)), p, o, s)
-# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_C(BOOST_PP_BOOL(p(58, s)), p, o, s)
-# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_C(BOOST_PP_BOOL(p(59, s)), p, o, s)
-# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_C(BOOST_PP_BOOL(p(60, s)), p, o, s)
-# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_C(BOOST_PP_BOOL(p(61, s)), p, o, s)
-# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_C(BOOST_PP_BOOL(p(62, s)), p, o, s)
-# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_C(BOOST_PP_BOOL(p(63, s)), p, o, s)
-# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_C(BOOST_PP_BOOL(p(64, s)), p, o, s)
-# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_C(BOOST_PP_BOOL(p(65, s)), p, o, s)
-# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_C(BOOST_PP_BOOL(p(66, s)), p, o, s)
-# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_C(BOOST_PP_BOOL(p(67, s)), p, o, s)
-# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_C(BOOST_PP_BOOL(p(68, s)), p, o, s)
-# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_C(BOOST_PP_BOOL(p(69, s)), p, o, s)
-# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_C(BOOST_PP_BOOL(p(70, s)), p, o, s)
-# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_C(BOOST_PP_BOOL(p(71, s)), p, o, s)
-# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_C(BOOST_PP_BOOL(p(72, s)), p, o, s)
-# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_C(BOOST_PP_BOOL(p(73, s)), p, o, s)
-# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_C(BOOST_PP_BOOL(p(74, s)), p, o, s)
-# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_C(BOOST_PP_BOOL(p(75, s)), p, o, s)
-# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_C(BOOST_PP_BOOL(p(76, s)), p, o, s)
-# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_C(BOOST_PP_BOOL(p(77, s)), p, o, s)
-# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_C(BOOST_PP_BOOL(p(78, s)), p, o, s)
-# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_C(BOOST_PP_BOOL(p(79, s)), p, o, s)
-# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_C(BOOST_PP_BOOL(p(80, s)), p, o, s)
-# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_C(BOOST_PP_BOOL(p(81, s)), p, o, s)
-# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_C(BOOST_PP_BOOL(p(82, s)), p, o, s)
-# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_C(BOOST_PP_BOOL(p(83, s)), p, o, s)
-# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_C(BOOST_PP_BOOL(p(84, s)), p, o, s)
-# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_C(BOOST_PP_BOOL(p(85, s)), p, o, s)
-# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_C(BOOST_PP_BOOL(p(86, s)), p, o, s)
-# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_C(BOOST_PP_BOOL(p(87, s)), p, o, s)
-# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_C(BOOST_PP_BOOL(p(88, s)), p, o, s)
-# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_C(BOOST_PP_BOOL(p(89, s)), p, o, s)
-# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_C(BOOST_PP_BOOL(p(90, s)), p, o, s)
-# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_C(BOOST_PP_BOOL(p(91, s)), p, o, s)
-# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_C(BOOST_PP_BOOL(p(92, s)), p, o, s)
-# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_C(BOOST_PP_BOOL(p(93, s)), p, o, s)
-# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_C(BOOST_PP_BOOL(p(94, s)), p, o, s)
-# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_C(BOOST_PP_BOOL(p(95, s)), p, o, s)
-# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_C(BOOST_PP_BOOL(p(96, s)), p, o, s)
-# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_C(BOOST_PP_BOOL(p(97, s)), p, o, s)
-# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_C(BOOST_PP_BOOL(p(98, s)), p, o, s)
-# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_C(BOOST_PP_BOOL(p(99, s)), p, o, s)
-# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_C(BOOST_PP_BOOL(p(100, s)), p, o, s)
-# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_C(BOOST_PP_BOOL(p(101, s)), p, o, s)
-# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_C(BOOST_PP_BOOL(p(102, s)), p, o, s)
-# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_C(BOOST_PP_BOOL(p(103, s)), p, o, s)
-# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_C(BOOST_PP_BOOL(p(104, s)), p, o, s)
-# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_C(BOOST_PP_BOOL(p(105, s)), p, o, s)
-# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_C(BOOST_PP_BOOL(p(106, s)), p, o, s)
-# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_C(BOOST_PP_BOOL(p(107, s)), p, o, s)
-# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_C(BOOST_PP_BOOL(p(108, s)), p, o, s)
-# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_C(BOOST_PP_BOOL(p(109, s)), p, o, s)
-# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_C(BOOST_PP_BOOL(p(110, s)), p, o, s)
-# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_C(BOOST_PP_BOOL(p(111, s)), p, o, s)
-# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_C(BOOST_PP_BOOL(p(112, s)), p, o, s)
-# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_C(BOOST_PP_BOOL(p(113, s)), p, o, s)
-# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_C(BOOST_PP_BOOL(p(114, s)), p, o, s)
-# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_C(BOOST_PP_BOOL(p(115, s)), p, o, s)
-# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_C(BOOST_PP_BOOL(p(116, s)), p, o, s)
-# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_C(BOOST_PP_BOOL(p(117, s)), p, o, s)
-# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_C(BOOST_PP_BOOL(p(118, s)), p, o, s)
-# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_C(BOOST_PP_BOOL(p(119, s)), p, o, s)
-# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_C(BOOST_PP_BOOL(p(120, s)), p, o, s)
-# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_C(BOOST_PP_BOOL(p(121, s)), p, o, s)
-# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_C(BOOST_PP_BOOL(p(122, s)), p, o, s)
-# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_C(BOOST_PP_BOOL(p(123, s)), p, o, s)
-# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_C(BOOST_PP_BOOL(p(124, s)), p, o, s)
-# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_C(BOOST_PP_BOOL(p(125, s)), p, o, s)
-# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_C(BOOST_PP_BOOL(p(126, s)), p, o, s)
-# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_C(BOOST_PP_BOOL(p(127, s)), p, o, s)
-# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_C(BOOST_PP_BOOL(p(128, s)), p, o, s)
-# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_C(BOOST_PP_BOOL(p(129, s)), p, o, s)
-# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_C(BOOST_PP_BOOL(p(130, s)), p, o, s)
-# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_C(BOOST_PP_BOOL(p(131, s)), p, o, s)
-# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_C(BOOST_PP_BOOL(p(132, s)), p, o, s)
-# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_C(BOOST_PP_BOOL(p(133, s)), p, o, s)
-# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_C(BOOST_PP_BOOL(p(134, s)), p, o, s)
-# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_C(BOOST_PP_BOOL(p(135, s)), p, o, s)
-# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_C(BOOST_PP_BOOL(p(136, s)), p, o, s)
-# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_C(BOOST_PP_BOOL(p(137, s)), p, o, s)
-# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_C(BOOST_PP_BOOL(p(138, s)), p, o, s)
-# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_C(BOOST_PP_BOOL(p(139, s)), p, o, s)
-# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_C(BOOST_PP_BOOL(p(140, s)), p, o, s)
-# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_C(BOOST_PP_BOOL(p(141, s)), p, o, s)
-# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_C(BOOST_PP_BOOL(p(142, s)), p, o, s)
-# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_C(BOOST_PP_BOOL(p(143, s)), p, o, s)
-# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_C(BOOST_PP_BOOL(p(144, s)), p, o, s)
-# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_C(BOOST_PP_BOOL(p(145, s)), p, o, s)
-# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_C(BOOST_PP_BOOL(p(146, s)), p, o, s)
-# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_C(BOOST_PP_BOOL(p(147, s)), p, o, s)
-# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_C(BOOST_PP_BOOL(p(148, s)), p, o, s)
-# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_C(BOOST_PP_BOOL(p(149, s)), p, o, s)
-# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_C(BOOST_PP_BOOL(p(150, s)), p, o, s)
-# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_C(BOOST_PP_BOOL(p(151, s)), p, o, s)
-# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_C(BOOST_PP_BOOL(p(152, s)), p, o, s)
-# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_C(BOOST_PP_BOOL(p(153, s)), p, o, s)
-# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_C(BOOST_PP_BOOL(p(154, s)), p, o, s)
-# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_C(BOOST_PP_BOOL(p(155, s)), p, o, s)
-# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_C(BOOST_PP_BOOL(p(156, s)), p, o, s)
-# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_C(BOOST_PP_BOOL(p(157, s)), p, o, s)
-# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_C(BOOST_PP_BOOL(p(158, s)), p, o, s)
-# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_C(BOOST_PP_BOOL(p(159, s)), p, o, s)
-# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_C(BOOST_PP_BOOL(p(160, s)), p, o, s)
-# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_C(BOOST_PP_BOOL(p(161, s)), p, o, s)
-# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_C(BOOST_PP_BOOL(p(162, s)), p, o, s)
-# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_C(BOOST_PP_BOOL(p(163, s)), p, o, s)
-# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_C(BOOST_PP_BOOL(p(164, s)), p, o, s)
-# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_C(BOOST_PP_BOOL(p(165, s)), p, o, s)
-# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_C(BOOST_PP_BOOL(p(166, s)), p, o, s)
-# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_C(BOOST_PP_BOOL(p(167, s)), p, o, s)
-# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_C(BOOST_PP_BOOL(p(168, s)), p, o, s)
-# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_C(BOOST_PP_BOOL(p(169, s)), p, o, s)
-# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_C(BOOST_PP_BOOL(p(170, s)), p, o, s)
-# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_C(BOOST_PP_BOOL(p(171, s)), p, o, s)
-# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_C(BOOST_PP_BOOL(p(172, s)), p, o, s)
-# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_C(BOOST_PP_BOOL(p(173, s)), p, o, s)
-# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_C(BOOST_PP_BOOL(p(174, s)), p, o, s)
-# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_C(BOOST_PP_BOOL(p(175, s)), p, o, s)
-# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_C(BOOST_PP_BOOL(p(176, s)), p, o, s)
-# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_C(BOOST_PP_BOOL(p(177, s)), p, o, s)
-# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_C(BOOST_PP_BOOL(p(178, s)), p, o, s)
-# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_C(BOOST_PP_BOOL(p(179, s)), p, o, s)
-# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_C(BOOST_PP_BOOL(p(180, s)), p, o, s)
-# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_C(BOOST_PP_BOOL(p(181, s)), p, o, s)
-# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_C(BOOST_PP_BOOL(p(182, s)), p, o, s)
-# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_C(BOOST_PP_BOOL(p(183, s)), p, o, s)
-# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_C(BOOST_PP_BOOL(p(184, s)), p, o, s)
-# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_C(BOOST_PP_BOOL(p(185, s)), p, o, s)
-# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_C(BOOST_PP_BOOL(p(186, s)), p, o, s)
-# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_C(BOOST_PP_BOOL(p(187, s)), p, o, s)
-# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_C(BOOST_PP_BOOL(p(188, s)), p, o, s)
-# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_C(BOOST_PP_BOOL(p(189, s)), p, o, s)
-# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_C(BOOST_PP_BOOL(p(190, s)), p, o, s)
-# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_C(BOOST_PP_BOOL(p(191, s)), p, o, s)
-# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_C(BOOST_PP_BOOL(p(192, s)), p, o, s)
-# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_C(BOOST_PP_BOOL(p(193, s)), p, o, s)
-# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_C(BOOST_PP_BOOL(p(194, s)), p, o, s)
-# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_C(BOOST_PP_BOOL(p(195, s)), p, o, s)
-# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_C(BOOST_PP_BOOL(p(196, s)), p, o, s)
-# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_C(BOOST_PP_BOOL(p(197, s)), p, o, s)
-# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_C(BOOST_PP_BOOL(p(198, s)), p, o, s)
-# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_C(BOOST_PP_BOOL(p(199, s)), p, o, s)
-# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_C(BOOST_PP_BOOL(p(200, s)), p, o, s)
-# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_C(BOOST_PP_BOOL(p(201, s)), p, o, s)
-# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_C(BOOST_PP_BOOL(p(202, s)), p, o, s)
-# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_C(BOOST_PP_BOOL(p(203, s)), p, o, s)
-# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_C(BOOST_PP_BOOL(p(204, s)), p, o, s)
-# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_C(BOOST_PP_BOOL(p(205, s)), p, o, s)
-# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_C(BOOST_PP_BOOL(p(206, s)), p, o, s)
-# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_C(BOOST_PP_BOOL(p(207, s)), p, o, s)
-# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_C(BOOST_PP_BOOL(p(208, s)), p, o, s)
-# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_C(BOOST_PP_BOOL(p(209, s)), p, o, s)
-# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_C(BOOST_PP_BOOL(p(210, s)), p, o, s)
-# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_C(BOOST_PP_BOOL(p(211, s)), p, o, s)
-# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_C(BOOST_PP_BOOL(p(212, s)), p, o, s)
-# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_C(BOOST_PP_BOOL(p(213, s)), p, o, s)
-# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_C(BOOST_PP_BOOL(p(214, s)), p, o, s)
-# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_C(BOOST_PP_BOOL(p(215, s)), p, o, s)
-# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_C(BOOST_PP_BOOL(p(216, s)), p, o, s)
-# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_C(BOOST_PP_BOOL(p(217, s)), p, o, s)
-# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_C(BOOST_PP_BOOL(p(218, s)), p, o, s)
-# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_C(BOOST_PP_BOOL(p(219, s)), p, o, s)
-# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_C(BOOST_PP_BOOL(p(220, s)), p, o, s)
-# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_C(BOOST_PP_BOOL(p(221, s)), p, o, s)
-# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_C(BOOST_PP_BOOL(p(222, s)), p, o, s)
-# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_C(BOOST_PP_BOOL(p(223, s)), p, o, s)
-# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_C(BOOST_PP_BOOL(p(224, s)), p, o, s)
-# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_C(BOOST_PP_BOOL(p(225, s)), p, o, s)
-# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_C(BOOST_PP_BOOL(p(226, s)), p, o, s)
-# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_C(BOOST_PP_BOOL(p(227, s)), p, o, s)
-# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_C(BOOST_PP_BOOL(p(228, s)), p, o, s)
-# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_C(BOOST_PP_BOOL(p(229, s)), p, o, s)
-# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_C(BOOST_PP_BOOL(p(230, s)), p, o, s)
-# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_C(BOOST_PP_BOOL(p(231, s)), p, o, s)
-# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_C(BOOST_PP_BOOL(p(232, s)), p, o, s)
-# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_C(BOOST_PP_BOOL(p(233, s)), p, o, s)
-# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_C(BOOST_PP_BOOL(p(234, s)), p, o, s)
-# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_C(BOOST_PP_BOOL(p(235, s)), p, o, s)
-# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_C(BOOST_PP_BOOL(p(236, s)), p, o, s)
-# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_C(BOOST_PP_BOOL(p(237, s)), p, o, s)
-# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_C(BOOST_PP_BOOL(p(238, s)), p, o, s)
-# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_C(BOOST_PP_BOOL(p(239, s)), p, o, s)
-# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_C(BOOST_PP_BOOL(p(240, s)), p, o, s)
-# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_C(BOOST_PP_BOOL(p(241, s)), p, o, s)
-# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_C(BOOST_PP_BOOL(p(242, s)), p, o, s)
-# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_C(BOOST_PP_BOOL(p(243, s)), p, o, s)
-# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_C(BOOST_PP_BOOL(p(244, s)), p, o, s)
-# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_C(BOOST_PP_BOOL(p(245, s)), p, o, s)
-# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_C(BOOST_PP_BOOL(p(246, s)), p, o, s)
-# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_C(BOOST_PP_BOOL(p(247, s)), p, o, s)
-# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_C(BOOST_PP_BOOL(p(248, s)), p, o, s)
-# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_C(BOOST_PP_BOOL(p(249, s)), p, o, s)
-# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_C(BOOST_PP_BOOL(p(250, s)), p, o, s)
-# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_C(BOOST_PP_BOOL(p(251, s)), p, o, s)
-# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_C(BOOST_PP_BOOL(p(252, s)), p, o, s)
-# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_C(BOOST_PP_BOOL(p(253, s)), p, o, s)
-# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_C(BOOST_PP_BOOL(p(254, s)), p, o, s)
-# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_C(BOOST_PP_BOOL(p(255, s)), p, o, s)
-# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_C(BOOST_PP_BOOL(p(256, s)), p, o, s)
-# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_C(BOOST_PP_BOOL(p(257, s)), p, o, s)
-#
-# define BOOST_PP_WHILE_1_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(2, s))
-# define BOOST_PP_WHILE_2_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(3, s))
-# define BOOST_PP_WHILE_3_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(4, s))
-# define BOOST_PP_WHILE_4_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(5, s))
-# define BOOST_PP_WHILE_5_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(6, s))
-# define BOOST_PP_WHILE_6_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(7, s))
-# define BOOST_PP_WHILE_7_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(8, s))
-# define BOOST_PP_WHILE_8_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(9, s))
-# define BOOST_PP_WHILE_9_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(10, s))
-# define BOOST_PP_WHILE_10_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(11, s))
-# define BOOST_PP_WHILE_11_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(12, s))
-# define BOOST_PP_WHILE_12_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(13, s))
-# define BOOST_PP_WHILE_13_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(14, s))
-# define BOOST_PP_WHILE_14_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(15, s))
-# define BOOST_PP_WHILE_15_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(16, s))
-# define BOOST_PP_WHILE_16_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(17, s))
-# define BOOST_PP_WHILE_17_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(18, s))
-# define BOOST_PP_WHILE_18_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(19, s))
-# define BOOST_PP_WHILE_19_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(20, s))
-# define BOOST_PP_WHILE_20_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(21, s))
-# define BOOST_PP_WHILE_21_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(22, s))
-# define BOOST_PP_WHILE_22_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(23, s))
-# define BOOST_PP_WHILE_23_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(24, s))
-# define BOOST_PP_WHILE_24_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(25, s))
-# define BOOST_PP_WHILE_25_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(26, s))
-# define BOOST_PP_WHILE_26_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(27, s))
-# define BOOST_PP_WHILE_27_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(28, s))
-# define BOOST_PP_WHILE_28_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(29, s))
-# define BOOST_PP_WHILE_29_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(30, s))
-# define BOOST_PP_WHILE_30_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(31, s))
-# define BOOST_PP_WHILE_31_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(32, s))
-# define BOOST_PP_WHILE_32_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(33, s))
-# define BOOST_PP_WHILE_33_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(34, s))
-# define BOOST_PP_WHILE_34_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(35, s))
-# define BOOST_PP_WHILE_35_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(36, s))
-# define BOOST_PP_WHILE_36_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(37, s))
-# define BOOST_PP_WHILE_37_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(38, s))
-# define BOOST_PP_WHILE_38_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(39, s))
-# define BOOST_PP_WHILE_39_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(40, s))
-# define BOOST_PP_WHILE_40_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(41, s))
-# define BOOST_PP_WHILE_41_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(42, s))
-# define BOOST_PP_WHILE_42_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(43, s))
-# define BOOST_PP_WHILE_43_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(44, s))
-# define BOOST_PP_WHILE_44_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(45, s))
-# define BOOST_PP_WHILE_45_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(46, s))
-# define BOOST_PP_WHILE_46_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(47, s))
-# define BOOST_PP_WHILE_47_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(48, s))
-# define BOOST_PP_WHILE_48_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(49, s))
-# define BOOST_PP_WHILE_49_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(50, s))
-# define BOOST_PP_WHILE_50_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(51, s))
-# define BOOST_PP_WHILE_51_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(52, s))
-# define BOOST_PP_WHILE_52_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(53, s))
-# define BOOST_PP_WHILE_53_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(54, s))
-# define BOOST_PP_WHILE_54_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(55, s))
-# define BOOST_PP_WHILE_55_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(56, s))
-# define BOOST_PP_WHILE_56_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(57, s))
-# define BOOST_PP_WHILE_57_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(58, s))
-# define BOOST_PP_WHILE_58_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(59, s))
-# define BOOST_PP_WHILE_59_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(60, s))
-# define BOOST_PP_WHILE_60_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(61, s))
-# define BOOST_PP_WHILE_61_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(62, s))
-# define BOOST_PP_WHILE_62_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(63, s))
-# define BOOST_PP_WHILE_63_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(64, s))
-# define BOOST_PP_WHILE_64_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(65, s))
-# define BOOST_PP_WHILE_65_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(66, s))
-# define BOOST_PP_WHILE_66_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(67, s))
-# define BOOST_PP_WHILE_67_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(68, s))
-# define BOOST_PP_WHILE_68_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(69, s))
-# define BOOST_PP_WHILE_69_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(70, s))
-# define BOOST_PP_WHILE_70_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(71, s))
-# define BOOST_PP_WHILE_71_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(72, s))
-# define BOOST_PP_WHILE_72_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(73, s))
-# define BOOST_PP_WHILE_73_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(74, s))
-# define BOOST_PP_WHILE_74_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(75, s))
-# define BOOST_PP_WHILE_75_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(76, s))
-# define BOOST_PP_WHILE_76_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(77, s))
-# define BOOST_PP_WHILE_77_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(78, s))
-# define BOOST_PP_WHILE_78_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(79, s))
-# define BOOST_PP_WHILE_79_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(80, s))
-# define BOOST_PP_WHILE_80_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(81, s))
-# define BOOST_PP_WHILE_81_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(82, s))
-# define BOOST_PP_WHILE_82_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(83, s))
-# define BOOST_PP_WHILE_83_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(84, s))
-# define BOOST_PP_WHILE_84_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(85, s))
-# define BOOST_PP_WHILE_85_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(86, s))
-# define BOOST_PP_WHILE_86_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(87, s))
-# define BOOST_PP_WHILE_87_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(88, s))
-# define BOOST_PP_WHILE_88_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(89, s))
-# define BOOST_PP_WHILE_89_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(90, s))
-# define BOOST_PP_WHILE_90_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(91, s))
-# define BOOST_PP_WHILE_91_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(92, s))
-# define BOOST_PP_WHILE_92_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(93, s))
-# define BOOST_PP_WHILE_93_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(94, s))
-# define BOOST_PP_WHILE_94_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(95, s))
-# define BOOST_PP_WHILE_95_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(96, s))
-# define BOOST_PP_WHILE_96_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(97, s))
-# define BOOST_PP_WHILE_97_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(98, s))
-# define BOOST_PP_WHILE_98_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(99, s))
-# define BOOST_PP_WHILE_99_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(100, s))
-# define BOOST_PP_WHILE_100_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(101, s))
-# define BOOST_PP_WHILE_101_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(102, s))
-# define BOOST_PP_WHILE_102_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(103, s))
-# define BOOST_PP_WHILE_103_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(104, s))
-# define BOOST_PP_WHILE_104_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(105, s))
-# define BOOST_PP_WHILE_105_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(106, s))
-# define BOOST_PP_WHILE_106_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(107, s))
-# define BOOST_PP_WHILE_107_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(108, s))
-# define BOOST_PP_WHILE_108_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(109, s))
-# define BOOST_PP_WHILE_109_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(110, s))
-# define BOOST_PP_WHILE_110_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(111, s))
-# define BOOST_PP_WHILE_111_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(112, s))
-# define BOOST_PP_WHILE_112_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(113, s))
-# define BOOST_PP_WHILE_113_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(114, s))
-# define BOOST_PP_WHILE_114_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(115, s))
-# define BOOST_PP_WHILE_115_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(116, s))
-# define BOOST_PP_WHILE_116_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(117, s))
-# define BOOST_PP_WHILE_117_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(118, s))
-# define BOOST_PP_WHILE_118_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(119, s))
-# define BOOST_PP_WHILE_119_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(120, s))
-# define BOOST_PP_WHILE_120_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(121, s))
-# define BOOST_PP_WHILE_121_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(122, s))
-# define BOOST_PP_WHILE_122_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(123, s))
-# define BOOST_PP_WHILE_123_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(124, s))
-# define BOOST_PP_WHILE_124_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(125, s))
-# define BOOST_PP_WHILE_125_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(126, s))
-# define BOOST_PP_WHILE_126_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(127, s))
-# define BOOST_PP_WHILE_127_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(128, s))
-# define BOOST_PP_WHILE_128_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(129, s))
-# define BOOST_PP_WHILE_129_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(130, s))
-# define BOOST_PP_WHILE_130_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(131, s))
-# define BOOST_PP_WHILE_131_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(132, s))
-# define BOOST_PP_WHILE_132_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(133, s))
-# define BOOST_PP_WHILE_133_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(134, s))
-# define BOOST_PP_WHILE_134_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(135, s))
-# define BOOST_PP_WHILE_135_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(136, s))
-# define BOOST_PP_WHILE_136_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(137, s))
-# define BOOST_PP_WHILE_137_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(138, s))
-# define BOOST_PP_WHILE_138_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(139, s))
-# define BOOST_PP_WHILE_139_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(140, s))
-# define BOOST_PP_WHILE_140_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(141, s))
-# define BOOST_PP_WHILE_141_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(142, s))
-# define BOOST_PP_WHILE_142_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(143, s))
-# define BOOST_PP_WHILE_143_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(144, s))
-# define BOOST_PP_WHILE_144_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(145, s))
-# define BOOST_PP_WHILE_145_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(146, s))
-# define BOOST_PP_WHILE_146_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(147, s))
-# define BOOST_PP_WHILE_147_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(148, s))
-# define BOOST_PP_WHILE_148_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(149, s))
-# define BOOST_PP_WHILE_149_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(150, s))
-# define BOOST_PP_WHILE_150_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(151, s))
-# define BOOST_PP_WHILE_151_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(152, s))
-# define BOOST_PP_WHILE_152_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(153, s))
-# define BOOST_PP_WHILE_153_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(154, s))
-# define BOOST_PP_WHILE_154_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(155, s))
-# define BOOST_PP_WHILE_155_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(156, s))
-# define BOOST_PP_WHILE_156_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(157, s))
-# define BOOST_PP_WHILE_157_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(158, s))
-# define BOOST_PP_WHILE_158_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(159, s))
-# define BOOST_PP_WHILE_159_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(160, s))
-# define BOOST_PP_WHILE_160_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(161, s))
-# define BOOST_PP_WHILE_161_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(162, s))
-# define BOOST_PP_WHILE_162_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(163, s))
-# define BOOST_PP_WHILE_163_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(164, s))
-# define BOOST_PP_WHILE_164_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(165, s))
-# define BOOST_PP_WHILE_165_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(166, s))
-# define BOOST_PP_WHILE_166_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(167, s))
-# define BOOST_PP_WHILE_167_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(168, s))
-# define BOOST_PP_WHILE_168_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(169, s))
-# define BOOST_PP_WHILE_169_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(170, s))
-# define BOOST_PP_WHILE_170_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(171, s))
-# define BOOST_PP_WHILE_171_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(172, s))
-# define BOOST_PP_WHILE_172_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(173, s))
-# define BOOST_PP_WHILE_173_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(174, s))
-# define BOOST_PP_WHILE_174_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(175, s))
-# define BOOST_PP_WHILE_175_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(176, s))
-# define BOOST_PP_WHILE_176_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(177, s))
-# define BOOST_PP_WHILE_177_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(178, s))
-# define BOOST_PP_WHILE_178_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(179, s))
-# define BOOST_PP_WHILE_179_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(180, s))
-# define BOOST_PP_WHILE_180_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(181, s))
-# define BOOST_PP_WHILE_181_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(182, s))
-# define BOOST_PP_WHILE_182_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(183, s))
-# define BOOST_PP_WHILE_183_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(184, s))
-# define BOOST_PP_WHILE_184_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(185, s))
-# define BOOST_PP_WHILE_185_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(186, s))
-# define BOOST_PP_WHILE_186_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(187, s))
-# define BOOST_PP_WHILE_187_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(188, s))
-# define BOOST_PP_WHILE_188_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(189, s))
-# define BOOST_PP_WHILE_189_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(190, s))
-# define BOOST_PP_WHILE_190_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(191, s))
-# define BOOST_PP_WHILE_191_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(192, s))
-# define BOOST_PP_WHILE_192_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(193, s))
-# define BOOST_PP_WHILE_193_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(194, s))
-# define BOOST_PP_WHILE_194_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(195, s))
-# define BOOST_PP_WHILE_195_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(196, s))
-# define BOOST_PP_WHILE_196_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(197, s))
-# define BOOST_PP_WHILE_197_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(198, s))
-# define BOOST_PP_WHILE_198_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(199, s))
-# define BOOST_PP_WHILE_199_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(200, s))
-# define BOOST_PP_WHILE_200_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(201, s))
-# define BOOST_PP_WHILE_201_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(202, s))
-# define BOOST_PP_WHILE_202_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(203, s))
-# define BOOST_PP_WHILE_203_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(204, s))
-# define BOOST_PP_WHILE_204_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(205, s))
-# define BOOST_PP_WHILE_205_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(206, s))
-# define BOOST_PP_WHILE_206_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(207, s))
-# define BOOST_PP_WHILE_207_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(208, s))
-# define BOOST_PP_WHILE_208_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(209, s))
-# define BOOST_PP_WHILE_209_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(210, s))
-# define BOOST_PP_WHILE_210_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(211, s))
-# define BOOST_PP_WHILE_211_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(212, s))
-# define BOOST_PP_WHILE_212_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(213, s))
-# define BOOST_PP_WHILE_213_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(214, s))
-# define BOOST_PP_WHILE_214_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(215, s))
-# define BOOST_PP_WHILE_215_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(216, s))
-# define BOOST_PP_WHILE_216_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(217, s))
-# define BOOST_PP_WHILE_217_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(218, s))
-# define BOOST_PP_WHILE_218_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(219, s))
-# define BOOST_PP_WHILE_219_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(220, s))
-# define BOOST_PP_WHILE_220_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(221, s))
-# define BOOST_PP_WHILE_221_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(222, s))
-# define BOOST_PP_WHILE_222_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(223, s))
-# define BOOST_PP_WHILE_223_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(224, s))
-# define BOOST_PP_WHILE_224_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(225, s))
-# define BOOST_PP_WHILE_225_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(226, s))
-# define BOOST_PP_WHILE_226_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(227, s))
-# define BOOST_PP_WHILE_227_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(228, s))
-# define BOOST_PP_WHILE_228_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(229, s))
-# define BOOST_PP_WHILE_229_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(230, s))
-# define BOOST_PP_WHILE_230_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(231, s))
-# define BOOST_PP_WHILE_231_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(232, s))
-# define BOOST_PP_WHILE_232_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(233, s))
-# define BOOST_PP_WHILE_233_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(234, s))
-# define BOOST_PP_WHILE_234_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(235, s))
-# define BOOST_PP_WHILE_235_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(236, s))
-# define BOOST_PP_WHILE_236_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(237, s))
-# define BOOST_PP_WHILE_237_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(238, s))
-# define BOOST_PP_WHILE_238_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(239, s))
-# define BOOST_PP_WHILE_239_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(240, s))
-# define BOOST_PP_WHILE_240_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(241, s))
-# define BOOST_PP_WHILE_241_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(242, s))
-# define BOOST_PP_WHILE_242_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(243, s))
-# define BOOST_PP_WHILE_243_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(244, s))
-# define BOOST_PP_WHILE_244_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(245, s))
-# define BOOST_PP_WHILE_245_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(246, s))
-# define BOOST_PP_WHILE_246_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(247, s))
-# define BOOST_PP_WHILE_247_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(248, s))
-# define BOOST_PP_WHILE_248_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(249, s))
-# define BOOST_PP_WHILE_249_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(250, s))
-# define BOOST_PP_WHILE_250_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(251, s))
-# define BOOST_PP_WHILE_251_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(252, s))
-# define BOOST_PP_WHILE_252_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(253, s))
-# define BOOST_PP_WHILE_253_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(254, s))
-# define BOOST_PP_WHILE_254_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(255, s))
-# define BOOST_PP_WHILE_255_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(256, s))
-# define BOOST_PP_WHILE_256_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(257, s))
-#
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/control/expr_if.hpp b/libcutl/cutl/details/boost/preprocessor/control/expr_if.hpp
deleted file mode 100644
index b718e4e..0000000
--- a/libcutl/cutl/details/boost/preprocessor/control/expr_if.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CONTROL_EXPR_IF_HPP
-# define BOOST_PREPROCESSOR_CONTROL_EXPR_IF_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/control/expr_iif.hpp>
-# include <cutl/details/boost/preprocessor/logical/bool.hpp>
-#
-# /* BOOST_PP_EXPR_IF */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_EXPR_IF(cond, expr) BOOST_PP_EXPR_IIF(BOOST_PP_BOOL(cond), expr)
-# else
-# define BOOST_PP_EXPR_IF(cond, expr) BOOST_PP_EXPR_IF_I(cond, expr)
-# define BOOST_PP_EXPR_IF_I(cond, expr) BOOST_PP_EXPR_IIF(BOOST_PP_BOOL(cond), expr)
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/control/expr_iif.hpp b/libcutl/cutl/details/boost/preprocessor/control/expr_iif.hpp
deleted file mode 100644
index 78d4542..0000000
--- a/libcutl/cutl/details/boost/preprocessor/control/expr_iif.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CONTROL_EXPR_IIF_HPP
-# define BOOST_PREPROCESSOR_CONTROL_EXPR_IIF_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_EXPR_IIF */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_EXPR_IIF(bit, expr) BOOST_PP_EXPR_IIF_I(bit, expr)
-# else
-# define BOOST_PP_EXPR_IIF(bit, expr) BOOST_PP_EXPR_IIF_OO((bit, expr))
-# define BOOST_PP_EXPR_IIF_OO(par) BOOST_PP_EXPR_IIF_I ## par
-# endif
-#
-# define BOOST_PP_EXPR_IIF_I(bit, expr) BOOST_PP_EXPR_IIF_ ## bit(expr)
-#
-# define BOOST_PP_EXPR_IIF_0(expr)
-# define BOOST_PP_EXPR_IIF_1(expr) expr
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/control/if.hpp b/libcutl/cutl/details/boost/preprocessor/control/if.hpp
deleted file mode 100644
index 280aac6..0000000
--- a/libcutl/cutl/details/boost/preprocessor/control/if.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CONTROL_IF_HPP
-# define BOOST_PREPROCESSOR_CONTROL_IF_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-# include <cutl/details/boost/preprocessor/logical/bool.hpp>
-#
-# /* BOOST_PP_IF */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_IF(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
-# else
-# define BOOST_PP_IF(cond, t, f) BOOST_PP_IF_I(cond, t, f)
-# define BOOST_PP_IF_I(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/control/iif.hpp b/libcutl/cutl/details/boost/preprocessor/control/iif.hpp
deleted file mode 100644
index fb20a26..0000000
--- a/libcutl/cutl/details/boost/preprocessor/control/iif.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CONTROL_IIF_HPP
-# define BOOST_PREPROCESSOR_CONTROL_IIF_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_IIF(bit, t, f) BOOST_PP_IIF_I(bit, t, f)
-# else
-# define BOOST_PP_IIF(bit, t, f) BOOST_PP_IIF_OO((bit, t, f))
-# define BOOST_PP_IIF_OO(par) BOOST_PP_IIF_I ## par
-# endif
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_IIF_I(bit, t, f) BOOST_PP_IIF_ ## bit(t, f)
-# else
-# define BOOST_PP_IIF_I(bit, t, f) BOOST_PP_IIF_II(BOOST_PP_IIF_ ## bit(t, f))
-# define BOOST_PP_IIF_II(id) id
-# endif
-#
-# define BOOST_PP_IIF_0(t, f) f
-# define BOOST_PP_IIF_1(t, f) t
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/control/while.hpp b/libcutl/cutl/details/boost/preprocessor/control/while.hpp
deleted file mode 100644
index cf8b12c..0000000
--- a/libcutl/cutl/details/boost/preprocessor/control/while.hpp
+++ /dev/null
@@ -1,312 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
-# define BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/debug/error.hpp>
-# include <cutl/details/boost/preprocessor/detail/auto_rec.hpp>
-# include <cutl/details/boost/preprocessor/list/fold_left.hpp>
-# include <cutl/details/boost/preprocessor/list/fold_right.hpp>
-# include <cutl/details/boost/preprocessor/logical/bitand.hpp>
-#
-# /* BOOST_PP_WHILE */
-#
-# if 0
-# define BOOST_PP_WHILE(pred, op, state)
-# endif
-#
-# define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_CHECK_, BOOST_PP_LIST_FOLD_RIGHT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL))))
-# else
-# define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)))
-# endif
-#
-# define BOOST_PP_WHILE_F(d, _) 0
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# include <cutl/details/boost/preprocessor/control/detail/edg/while.hpp>
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# include <cutl/details/boost/preprocessor/control/detail/msvc/while.hpp>
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
-# include <cutl/details/boost/preprocessor/control/detail/dmc/while.hpp>
-# else
-# include <cutl/details/boost/preprocessor/control/detail/while.hpp>
-# endif
-#
-# define BOOST_PP_WHILE_257(p, o, s) BOOST_PP_ERROR(0x0001)
-#
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_NIL 1
-#
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_2(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_3(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_4(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_5(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_6(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_7(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_8(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_9(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_10(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_11(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_12(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_13(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_14(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_15(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_16(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_17(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_18(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_19(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_20(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_21(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_22(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_23(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_24(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_25(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_26(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_27(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_28(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_29(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_30(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_31(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_32(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_33(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_34(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_35(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_36(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_37(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_38(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_39(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_40(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_41(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_42(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_43(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_44(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_45(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_46(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_47(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_48(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_49(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_50(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_51(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_52(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_53(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_54(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_55(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_56(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_57(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_58(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_59(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_60(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_61(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_62(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_63(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_64(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_65(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_66(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_67(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_68(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_69(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_70(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_71(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_72(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_73(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_74(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_75(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_76(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_77(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_78(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_79(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_80(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_81(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_82(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_83(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_84(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_85(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_86(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_87(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_88(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_89(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_90(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_91(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_92(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_93(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_94(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_95(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_96(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_97(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_98(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_99(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_100(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_101(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_102(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_103(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_104(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_105(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_106(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_107(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_108(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_109(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_110(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_111(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_112(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_113(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_114(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_115(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_116(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_117(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_118(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_119(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_120(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_121(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_122(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_123(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_124(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_125(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_126(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_127(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_128(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_129(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_130(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_131(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_132(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_133(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_134(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_135(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_136(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_137(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_138(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_139(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_140(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_141(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_142(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_143(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_144(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_145(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_146(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_147(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_148(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_149(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_150(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_151(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_152(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_153(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_154(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_155(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_156(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_157(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_158(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_159(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_160(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_161(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_162(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_163(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_164(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_165(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_166(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_167(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_168(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_169(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_170(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_171(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_172(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_173(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_174(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_175(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_176(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_177(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_178(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_179(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_180(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_181(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_182(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_183(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_184(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_185(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_186(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_187(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_188(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_189(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_190(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_191(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_192(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_193(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_194(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_195(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_196(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_197(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_198(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_199(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_200(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_201(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_202(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_203(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_204(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_205(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_206(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_207(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_208(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_209(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_210(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_211(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_212(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_213(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_214(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_215(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_216(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_217(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_218(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_219(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_220(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_221(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_222(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_223(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_224(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_225(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_226(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_227(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_228(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_229(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_230(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_231(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_232(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_233(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_234(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_235(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_236(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_237(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_238(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_239(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_240(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_241(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_242(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_243(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_244(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_245(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_246(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_247(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_248(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_249(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_250(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_251(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_252(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_253(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_254(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_255(p, o, s) 0
-# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_256(p, o, s) 0
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/debug/error.hpp b/libcutl/cutl/details/boost/preprocessor/debug/error.hpp
deleted file mode 100644
index 1223085..0000000
--- a/libcutl/cutl/details/boost/preprocessor/debug/error.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_DEBUG_ERROR_HPP
-# define BOOST_PREPROCESSOR_DEBUG_ERROR_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_ERROR */
-#
-# if BOOST_PP_CONFIG_ERRORS
-# define BOOST_PP_ERROR(code) BOOST_PP_CAT(BOOST_PP_ERROR_, code)
-# endif
-#
-# define BOOST_PP_ERROR_0x0000 BOOST_PP_ERROR(0x0000, BOOST_PP_INDEX_OUT_OF_BOUNDS)
-# define BOOST_PP_ERROR_0x0001 BOOST_PP_ERROR(0x0001, BOOST_PP_WHILE_OVERFLOW)
-# define BOOST_PP_ERROR_0x0002 BOOST_PP_ERROR(0x0002, BOOST_PP_FOR_OVERFLOW)
-# define BOOST_PP_ERROR_0x0003 BOOST_PP_ERROR(0x0003, BOOST_PP_REPEAT_OVERFLOW)
-# define BOOST_PP_ERROR_0x0004 BOOST_PP_ERROR(0x0004, BOOST_PP_LIST_FOLD_OVERFLOW)
-# define BOOST_PP_ERROR_0x0005 BOOST_PP_ERROR(0x0005, BOOST_PP_SEQ_FOLD_OVERFLOW)
-# define BOOST_PP_ERROR_0x0006 BOOST_PP_ERROR(0x0006, BOOST_PP_ARITHMETIC_OVERFLOW)
-# define BOOST_PP_ERROR_0x0007 BOOST_PP_ERROR(0x0007, BOOST_PP_DIVISION_BY_ZERO)
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/dec.hpp b/libcutl/cutl/details/boost/preprocessor/dec.hpp
deleted file mode 100644
index aa80434..0000000
--- a/libcutl/cutl/details/boost/preprocessor/dec.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_DEC_HPP
-# define BOOST_PREPROCESSOR_DEC_HPP
-#
-# include <cutl/details/boost/preprocessor/arithmetic/dec.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/detail/auto_rec.hpp b/libcutl/cutl/details/boost/preprocessor/detail/auto_rec.hpp
deleted file mode 100644
index 65523c7..0000000
--- a/libcutl/cutl/details/boost/preprocessor/detail/auto_rec.hpp
+++ /dev/null
@@ -1,293 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
-# include <cutl/details/boost/preprocessor/detail/dmc/auto_rec.hpp>
-# else
-#
-# ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
-# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
-#
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-#
-# /* BOOST_PP_AUTO_REC */
-#
-# define BOOST_PP_AUTO_REC(pred, n) BOOST_PP_NODE_ENTRY_ ## n(pred)
-#
-# define BOOST_PP_NODE_ENTRY_256(p) BOOST_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_128(p) BOOST_PP_NODE_64(p)(p)(p)(p)(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_64(p) BOOST_PP_NODE_32(p)(p)(p)(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_32(p) BOOST_PP_NODE_16(p)(p)(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_16(p) BOOST_PP_NODE_8(p)(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_8(p) BOOST_PP_NODE_4(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_4(p) BOOST_PP_NODE_2(p)(p)
-# define BOOST_PP_NODE_ENTRY_2(p) BOOST_PP_NODE_1(p)
-#
-# define BOOST_PP_NODE_128(p) BOOST_PP_IIF(p(128), BOOST_PP_NODE_64, BOOST_PP_NODE_192)
-# define BOOST_PP_NODE_64(p) BOOST_PP_IIF(p(64), BOOST_PP_NODE_32, BOOST_PP_NODE_96)
-# define BOOST_PP_NODE_32(p) BOOST_PP_IIF(p(32), BOOST_PP_NODE_16, BOOST_PP_NODE_48)
-# define BOOST_PP_NODE_16(p) BOOST_PP_IIF(p(16), BOOST_PP_NODE_8, BOOST_PP_NODE_24)
-# define BOOST_PP_NODE_8(p) BOOST_PP_IIF(p(8), BOOST_PP_NODE_4, BOOST_PP_NODE_12)
-# define BOOST_PP_NODE_4(p) BOOST_PP_IIF(p(4), BOOST_PP_NODE_2, BOOST_PP_NODE_6)
-# define BOOST_PP_NODE_2(p) BOOST_PP_IIF(p(2), BOOST_PP_NODE_1, BOOST_PP_NODE_3)
-# define BOOST_PP_NODE_1(p) BOOST_PP_IIF(p(1), 1, 2)
-# define BOOST_PP_NODE_3(p) BOOST_PP_IIF(p(3), 3, 4)
-# define BOOST_PP_NODE_6(p) BOOST_PP_IIF(p(6), BOOST_PP_NODE_5, BOOST_PP_NODE_7)
-# define BOOST_PP_NODE_5(p) BOOST_PP_IIF(p(5), 5, 6)
-# define BOOST_PP_NODE_7(p) BOOST_PP_IIF(p(7), 7, 8)
-# define BOOST_PP_NODE_12(p) BOOST_PP_IIF(p(12), BOOST_PP_NODE_10, BOOST_PP_NODE_14)
-# define BOOST_PP_NODE_10(p) BOOST_PP_IIF(p(10), BOOST_PP_NODE_9, BOOST_PP_NODE_11)
-# define BOOST_PP_NODE_9(p) BOOST_PP_IIF(p(9), 9, 10)
-# define BOOST_PP_NODE_11(p) BOOST_PP_IIF(p(11), 11, 12)
-# define BOOST_PP_NODE_14(p) BOOST_PP_IIF(p(14), BOOST_PP_NODE_13, BOOST_PP_NODE_15)
-# define BOOST_PP_NODE_13(p) BOOST_PP_IIF(p(13), 13, 14)
-# define BOOST_PP_NODE_15(p) BOOST_PP_IIF(p(15), 15, 16)
-# define BOOST_PP_NODE_24(p) BOOST_PP_IIF(p(24), BOOST_PP_NODE_20, BOOST_PP_NODE_28)
-# define BOOST_PP_NODE_20(p) BOOST_PP_IIF(p(20), BOOST_PP_NODE_18, BOOST_PP_NODE_22)
-# define BOOST_PP_NODE_18(p) BOOST_PP_IIF(p(18), BOOST_PP_NODE_17, BOOST_PP_NODE_19)
-# define BOOST_PP_NODE_17(p) BOOST_PP_IIF(p(17), 17, 18)
-# define BOOST_PP_NODE_19(p) BOOST_PP_IIF(p(19), 19, 20)
-# define BOOST_PP_NODE_22(p) BOOST_PP_IIF(p(22), BOOST_PP_NODE_21, BOOST_PP_NODE_23)
-# define BOOST_PP_NODE_21(p) BOOST_PP_IIF(p(21), 21, 22)
-# define BOOST_PP_NODE_23(p) BOOST_PP_IIF(p(23), 23, 24)
-# define BOOST_PP_NODE_28(p) BOOST_PP_IIF(p(28), BOOST_PP_NODE_26, BOOST_PP_NODE_30)
-# define BOOST_PP_NODE_26(p) BOOST_PP_IIF(p(26), BOOST_PP_NODE_25, BOOST_PP_NODE_27)
-# define BOOST_PP_NODE_25(p) BOOST_PP_IIF(p(25), 25, 26)
-# define BOOST_PP_NODE_27(p) BOOST_PP_IIF(p(27), 27, 28)
-# define BOOST_PP_NODE_30(p) BOOST_PP_IIF(p(30), BOOST_PP_NODE_29, BOOST_PP_NODE_31)
-# define BOOST_PP_NODE_29(p) BOOST_PP_IIF(p(29), 29, 30)
-# define BOOST_PP_NODE_31(p) BOOST_PP_IIF(p(31), 31, 32)
-# define BOOST_PP_NODE_48(p) BOOST_PP_IIF(p(48), BOOST_PP_NODE_40, BOOST_PP_NODE_56)
-# define BOOST_PP_NODE_40(p) BOOST_PP_IIF(p(40), BOOST_PP_NODE_36, BOOST_PP_NODE_44)
-# define BOOST_PP_NODE_36(p) BOOST_PP_IIF(p(36), BOOST_PP_NODE_34, BOOST_PP_NODE_38)
-# define BOOST_PP_NODE_34(p) BOOST_PP_IIF(p(34), BOOST_PP_NODE_33, BOOST_PP_NODE_35)
-# define BOOST_PP_NODE_33(p) BOOST_PP_IIF(p(33), 33, 34)
-# define BOOST_PP_NODE_35(p) BOOST_PP_IIF(p(35), 35, 36)
-# define BOOST_PP_NODE_38(p) BOOST_PP_IIF(p(38), BOOST_PP_NODE_37, BOOST_PP_NODE_39)
-# define BOOST_PP_NODE_37(p) BOOST_PP_IIF(p(37), 37, 38)
-# define BOOST_PP_NODE_39(p) BOOST_PP_IIF(p(39), 39, 40)
-# define BOOST_PP_NODE_44(p) BOOST_PP_IIF(p(44), BOOST_PP_NODE_42, BOOST_PP_NODE_46)
-# define BOOST_PP_NODE_42(p) BOOST_PP_IIF(p(42), BOOST_PP_NODE_41, BOOST_PP_NODE_43)
-# define BOOST_PP_NODE_41(p) BOOST_PP_IIF(p(41), 41, 42)
-# define BOOST_PP_NODE_43(p) BOOST_PP_IIF(p(43), 43, 44)
-# define BOOST_PP_NODE_46(p) BOOST_PP_IIF(p(46), BOOST_PP_NODE_45, BOOST_PP_NODE_47)
-# define BOOST_PP_NODE_45(p) BOOST_PP_IIF(p(45), 45, 46)
-# define BOOST_PP_NODE_47(p) BOOST_PP_IIF(p(47), 47, 48)
-# define BOOST_PP_NODE_56(p) BOOST_PP_IIF(p(56), BOOST_PP_NODE_52, BOOST_PP_NODE_60)
-# define BOOST_PP_NODE_52(p) BOOST_PP_IIF(p(52), BOOST_PP_NODE_50, BOOST_PP_NODE_54)
-# define BOOST_PP_NODE_50(p) BOOST_PP_IIF(p(50), BOOST_PP_NODE_49, BOOST_PP_NODE_51)
-# define BOOST_PP_NODE_49(p) BOOST_PP_IIF(p(49), 49, 50)
-# define BOOST_PP_NODE_51(p) BOOST_PP_IIF(p(51), 51, 52)
-# define BOOST_PP_NODE_54(p) BOOST_PP_IIF(p(54), BOOST_PP_NODE_53, BOOST_PP_NODE_55)
-# define BOOST_PP_NODE_53(p) BOOST_PP_IIF(p(53), 53, 54)
-# define BOOST_PP_NODE_55(p) BOOST_PP_IIF(p(55), 55, 56)
-# define BOOST_PP_NODE_60(p) BOOST_PP_IIF(p(60), BOOST_PP_NODE_58, BOOST_PP_NODE_62)
-# define BOOST_PP_NODE_58(p) BOOST_PP_IIF(p(58), BOOST_PP_NODE_57, BOOST_PP_NODE_59)
-# define BOOST_PP_NODE_57(p) BOOST_PP_IIF(p(57), 57, 58)
-# define BOOST_PP_NODE_59(p) BOOST_PP_IIF(p(59), 59, 60)
-# define BOOST_PP_NODE_62(p) BOOST_PP_IIF(p(62), BOOST_PP_NODE_61, BOOST_PP_NODE_63)
-# define BOOST_PP_NODE_61(p) BOOST_PP_IIF(p(61), 61, 62)
-# define BOOST_PP_NODE_63(p) BOOST_PP_IIF(p(63), 63, 64)
-# define BOOST_PP_NODE_96(p) BOOST_PP_IIF(p(96), BOOST_PP_NODE_80, BOOST_PP_NODE_112)
-# define BOOST_PP_NODE_80(p) BOOST_PP_IIF(p(80), BOOST_PP_NODE_72, BOOST_PP_NODE_88)
-# define BOOST_PP_NODE_72(p) BOOST_PP_IIF(p(72), BOOST_PP_NODE_68, BOOST_PP_NODE_76)
-# define BOOST_PP_NODE_68(p) BOOST_PP_IIF(p(68), BOOST_PP_NODE_66, BOOST_PP_NODE_70)
-# define BOOST_PP_NODE_66(p) BOOST_PP_IIF(p(66), BOOST_PP_NODE_65, BOOST_PP_NODE_67)
-# define BOOST_PP_NODE_65(p) BOOST_PP_IIF(p(65), 65, 66)
-# define BOOST_PP_NODE_67(p) BOOST_PP_IIF(p(67), 67, 68)
-# define BOOST_PP_NODE_70(p) BOOST_PP_IIF(p(70), BOOST_PP_NODE_69, BOOST_PP_NODE_71)
-# define BOOST_PP_NODE_69(p) BOOST_PP_IIF(p(69), 69, 70)
-# define BOOST_PP_NODE_71(p) BOOST_PP_IIF(p(71), 71, 72)
-# define BOOST_PP_NODE_76(p) BOOST_PP_IIF(p(76), BOOST_PP_NODE_74, BOOST_PP_NODE_78)
-# define BOOST_PP_NODE_74(p) BOOST_PP_IIF(p(74), BOOST_PP_NODE_73, BOOST_PP_NODE_75)
-# define BOOST_PP_NODE_73(p) BOOST_PP_IIF(p(73), 73, 74)
-# define BOOST_PP_NODE_75(p) BOOST_PP_IIF(p(75), 75, 76)
-# define BOOST_PP_NODE_78(p) BOOST_PP_IIF(p(78), BOOST_PP_NODE_77, BOOST_PP_NODE_79)
-# define BOOST_PP_NODE_77(p) BOOST_PP_IIF(p(77), 77, 78)
-# define BOOST_PP_NODE_79(p) BOOST_PP_IIF(p(79), 79, 80)
-# define BOOST_PP_NODE_88(p) BOOST_PP_IIF(p(88), BOOST_PP_NODE_84, BOOST_PP_NODE_92)
-# define BOOST_PP_NODE_84(p) BOOST_PP_IIF(p(84), BOOST_PP_NODE_82, BOOST_PP_NODE_86)
-# define BOOST_PP_NODE_82(p) BOOST_PP_IIF(p(82), BOOST_PP_NODE_81, BOOST_PP_NODE_83)
-# define BOOST_PP_NODE_81(p) BOOST_PP_IIF(p(81), 81, 82)
-# define BOOST_PP_NODE_83(p) BOOST_PP_IIF(p(83), 83, 84)
-# define BOOST_PP_NODE_86(p) BOOST_PP_IIF(p(86), BOOST_PP_NODE_85, BOOST_PP_NODE_87)
-# define BOOST_PP_NODE_85(p) BOOST_PP_IIF(p(85), 85, 86)
-# define BOOST_PP_NODE_87(p) BOOST_PP_IIF(p(87), 87, 88)
-# define BOOST_PP_NODE_92(p) BOOST_PP_IIF(p(92), BOOST_PP_NODE_90, BOOST_PP_NODE_94)
-# define BOOST_PP_NODE_90(p) BOOST_PP_IIF(p(90), BOOST_PP_NODE_89, BOOST_PP_NODE_91)
-# define BOOST_PP_NODE_89(p) BOOST_PP_IIF(p(89), 89, 90)
-# define BOOST_PP_NODE_91(p) BOOST_PP_IIF(p(91), 91, 92)
-# define BOOST_PP_NODE_94(p) BOOST_PP_IIF(p(94), BOOST_PP_NODE_93, BOOST_PP_NODE_95)
-# define BOOST_PP_NODE_93(p) BOOST_PP_IIF(p(93), 93, 94)
-# define BOOST_PP_NODE_95(p) BOOST_PP_IIF(p(95), 95, 96)
-# define BOOST_PP_NODE_112(p) BOOST_PP_IIF(p(112), BOOST_PP_NODE_104, BOOST_PP_NODE_120)
-# define BOOST_PP_NODE_104(p) BOOST_PP_IIF(p(104), BOOST_PP_NODE_100, BOOST_PP_NODE_108)
-# define BOOST_PP_NODE_100(p) BOOST_PP_IIF(p(100), BOOST_PP_NODE_98, BOOST_PP_NODE_102)
-# define BOOST_PP_NODE_98(p) BOOST_PP_IIF(p(98), BOOST_PP_NODE_97, BOOST_PP_NODE_99)
-# define BOOST_PP_NODE_97(p) BOOST_PP_IIF(p(97), 97, 98)
-# define BOOST_PP_NODE_99(p) BOOST_PP_IIF(p(99), 99, 100)
-# define BOOST_PP_NODE_102(p) BOOST_PP_IIF(p(102), BOOST_PP_NODE_101, BOOST_PP_NODE_103)
-# define BOOST_PP_NODE_101(p) BOOST_PP_IIF(p(101), 101, 102)
-# define BOOST_PP_NODE_103(p) BOOST_PP_IIF(p(103), 103, 104)
-# define BOOST_PP_NODE_108(p) BOOST_PP_IIF(p(108), BOOST_PP_NODE_106, BOOST_PP_NODE_110)
-# define BOOST_PP_NODE_106(p) BOOST_PP_IIF(p(106), BOOST_PP_NODE_105, BOOST_PP_NODE_107)
-# define BOOST_PP_NODE_105(p) BOOST_PP_IIF(p(105), 105, 106)
-# define BOOST_PP_NODE_107(p) BOOST_PP_IIF(p(107), 107, 108)
-# define BOOST_PP_NODE_110(p) BOOST_PP_IIF(p(110), BOOST_PP_NODE_109, BOOST_PP_NODE_111)
-# define BOOST_PP_NODE_109(p) BOOST_PP_IIF(p(109), 109, 110)
-# define BOOST_PP_NODE_111(p) BOOST_PP_IIF(p(111), 111, 112)
-# define BOOST_PP_NODE_120(p) BOOST_PP_IIF(p(120), BOOST_PP_NODE_116, BOOST_PP_NODE_124)
-# define BOOST_PP_NODE_116(p) BOOST_PP_IIF(p(116), BOOST_PP_NODE_114, BOOST_PP_NODE_118)
-# define BOOST_PP_NODE_114(p) BOOST_PP_IIF(p(114), BOOST_PP_NODE_113, BOOST_PP_NODE_115)
-# define BOOST_PP_NODE_113(p) BOOST_PP_IIF(p(113), 113, 114)
-# define BOOST_PP_NODE_115(p) BOOST_PP_IIF(p(115), 115, 116)
-# define BOOST_PP_NODE_118(p) BOOST_PP_IIF(p(118), BOOST_PP_NODE_117, BOOST_PP_NODE_119)
-# define BOOST_PP_NODE_117(p) BOOST_PP_IIF(p(117), 117, 118)
-# define BOOST_PP_NODE_119(p) BOOST_PP_IIF(p(119), 119, 120)
-# define BOOST_PP_NODE_124(p) BOOST_PP_IIF(p(124), BOOST_PP_NODE_122, BOOST_PP_NODE_126)
-# define BOOST_PP_NODE_122(p) BOOST_PP_IIF(p(122), BOOST_PP_NODE_121, BOOST_PP_NODE_123)
-# define BOOST_PP_NODE_121(p) BOOST_PP_IIF(p(121), 121, 122)
-# define BOOST_PP_NODE_123(p) BOOST_PP_IIF(p(123), 123, 124)
-# define BOOST_PP_NODE_126(p) BOOST_PP_IIF(p(126), BOOST_PP_NODE_125, BOOST_PP_NODE_127)
-# define BOOST_PP_NODE_125(p) BOOST_PP_IIF(p(125), 125, 126)
-# define BOOST_PP_NODE_127(p) BOOST_PP_IIF(p(127), 127, 128)
-# define BOOST_PP_NODE_192(p) BOOST_PP_IIF(p(192), BOOST_PP_NODE_160, BOOST_PP_NODE_224)
-# define BOOST_PP_NODE_160(p) BOOST_PP_IIF(p(160), BOOST_PP_NODE_144, BOOST_PP_NODE_176)
-# define BOOST_PP_NODE_144(p) BOOST_PP_IIF(p(144), BOOST_PP_NODE_136, BOOST_PP_NODE_152)
-# define BOOST_PP_NODE_136(p) BOOST_PP_IIF(p(136), BOOST_PP_NODE_132, BOOST_PP_NODE_140)
-# define BOOST_PP_NODE_132(p) BOOST_PP_IIF(p(132), BOOST_PP_NODE_130, BOOST_PP_NODE_134)
-# define BOOST_PP_NODE_130(p) BOOST_PP_IIF(p(130), BOOST_PP_NODE_129, BOOST_PP_NODE_131)
-# define BOOST_PP_NODE_129(p) BOOST_PP_IIF(p(129), 129, 130)
-# define BOOST_PP_NODE_131(p) BOOST_PP_IIF(p(131), 131, 132)
-# define BOOST_PP_NODE_134(p) BOOST_PP_IIF(p(134), BOOST_PP_NODE_133, BOOST_PP_NODE_135)
-# define BOOST_PP_NODE_133(p) BOOST_PP_IIF(p(133), 133, 134)
-# define BOOST_PP_NODE_135(p) BOOST_PP_IIF(p(135), 135, 136)
-# define BOOST_PP_NODE_140(p) BOOST_PP_IIF(p(140), BOOST_PP_NODE_138, BOOST_PP_NODE_142)
-# define BOOST_PP_NODE_138(p) BOOST_PP_IIF(p(138), BOOST_PP_NODE_137, BOOST_PP_NODE_139)
-# define BOOST_PP_NODE_137(p) BOOST_PP_IIF(p(137), 137, 138)
-# define BOOST_PP_NODE_139(p) BOOST_PP_IIF(p(139), 139, 140)
-# define BOOST_PP_NODE_142(p) BOOST_PP_IIF(p(142), BOOST_PP_NODE_141, BOOST_PP_NODE_143)
-# define BOOST_PP_NODE_141(p) BOOST_PP_IIF(p(141), 141, 142)
-# define BOOST_PP_NODE_143(p) BOOST_PP_IIF(p(143), 143, 144)
-# define BOOST_PP_NODE_152(p) BOOST_PP_IIF(p(152), BOOST_PP_NODE_148, BOOST_PP_NODE_156)
-# define BOOST_PP_NODE_148(p) BOOST_PP_IIF(p(148), BOOST_PP_NODE_146, BOOST_PP_NODE_150)
-# define BOOST_PP_NODE_146(p) BOOST_PP_IIF(p(146), BOOST_PP_NODE_145, BOOST_PP_NODE_147)
-# define BOOST_PP_NODE_145(p) BOOST_PP_IIF(p(145), 145, 146)
-# define BOOST_PP_NODE_147(p) BOOST_PP_IIF(p(147), 147, 148)
-# define BOOST_PP_NODE_150(p) BOOST_PP_IIF(p(150), BOOST_PP_NODE_149, BOOST_PP_NODE_151)
-# define BOOST_PP_NODE_149(p) BOOST_PP_IIF(p(149), 149, 150)
-# define BOOST_PP_NODE_151(p) BOOST_PP_IIF(p(151), 151, 152)
-# define BOOST_PP_NODE_156(p) BOOST_PP_IIF(p(156), BOOST_PP_NODE_154, BOOST_PP_NODE_158)
-# define BOOST_PP_NODE_154(p) BOOST_PP_IIF(p(154), BOOST_PP_NODE_153, BOOST_PP_NODE_155)
-# define BOOST_PP_NODE_153(p) BOOST_PP_IIF(p(153), 153, 154)
-# define BOOST_PP_NODE_155(p) BOOST_PP_IIF(p(155), 155, 156)
-# define BOOST_PP_NODE_158(p) BOOST_PP_IIF(p(158), BOOST_PP_NODE_157, BOOST_PP_NODE_159)
-# define BOOST_PP_NODE_157(p) BOOST_PP_IIF(p(157), 157, 158)
-# define BOOST_PP_NODE_159(p) BOOST_PP_IIF(p(159), 159, 160)
-# define BOOST_PP_NODE_176(p) BOOST_PP_IIF(p(176), BOOST_PP_NODE_168, BOOST_PP_NODE_184)
-# define BOOST_PP_NODE_168(p) BOOST_PP_IIF(p(168), BOOST_PP_NODE_164, BOOST_PP_NODE_172)
-# define BOOST_PP_NODE_164(p) BOOST_PP_IIF(p(164), BOOST_PP_NODE_162, BOOST_PP_NODE_166)
-# define BOOST_PP_NODE_162(p) BOOST_PP_IIF(p(162), BOOST_PP_NODE_161, BOOST_PP_NODE_163)
-# define BOOST_PP_NODE_161(p) BOOST_PP_IIF(p(161), 161, 162)
-# define BOOST_PP_NODE_163(p) BOOST_PP_IIF(p(163), 163, 164)
-# define BOOST_PP_NODE_166(p) BOOST_PP_IIF(p(166), BOOST_PP_NODE_165, BOOST_PP_NODE_167)
-# define BOOST_PP_NODE_165(p) BOOST_PP_IIF(p(165), 165, 166)
-# define BOOST_PP_NODE_167(p) BOOST_PP_IIF(p(167), 167, 168)
-# define BOOST_PP_NODE_172(p) BOOST_PP_IIF(p(172), BOOST_PP_NODE_170, BOOST_PP_NODE_174)
-# define BOOST_PP_NODE_170(p) BOOST_PP_IIF(p(170), BOOST_PP_NODE_169, BOOST_PP_NODE_171)
-# define BOOST_PP_NODE_169(p) BOOST_PP_IIF(p(169), 169, 170)
-# define BOOST_PP_NODE_171(p) BOOST_PP_IIF(p(171), 171, 172)
-# define BOOST_PP_NODE_174(p) BOOST_PP_IIF(p(174), BOOST_PP_NODE_173, BOOST_PP_NODE_175)
-# define BOOST_PP_NODE_173(p) BOOST_PP_IIF(p(173), 173, 174)
-# define BOOST_PP_NODE_175(p) BOOST_PP_IIF(p(175), 175, 176)
-# define BOOST_PP_NODE_184(p) BOOST_PP_IIF(p(184), BOOST_PP_NODE_180, BOOST_PP_NODE_188)
-# define BOOST_PP_NODE_180(p) BOOST_PP_IIF(p(180), BOOST_PP_NODE_178, BOOST_PP_NODE_182)
-# define BOOST_PP_NODE_178(p) BOOST_PP_IIF(p(178), BOOST_PP_NODE_177, BOOST_PP_NODE_179)
-# define BOOST_PP_NODE_177(p) BOOST_PP_IIF(p(177), 177, 178)
-# define BOOST_PP_NODE_179(p) BOOST_PP_IIF(p(179), 179, 180)
-# define BOOST_PP_NODE_182(p) BOOST_PP_IIF(p(182), BOOST_PP_NODE_181, BOOST_PP_NODE_183)
-# define BOOST_PP_NODE_181(p) BOOST_PP_IIF(p(181), 181, 182)
-# define BOOST_PP_NODE_183(p) BOOST_PP_IIF(p(183), 183, 184)
-# define BOOST_PP_NODE_188(p) BOOST_PP_IIF(p(188), BOOST_PP_NODE_186, BOOST_PP_NODE_190)
-# define BOOST_PP_NODE_186(p) BOOST_PP_IIF(p(186), BOOST_PP_NODE_185, BOOST_PP_NODE_187)
-# define BOOST_PP_NODE_185(p) BOOST_PP_IIF(p(185), 185, 186)
-# define BOOST_PP_NODE_187(p) BOOST_PP_IIF(p(187), 187, 188)
-# define BOOST_PP_NODE_190(p) BOOST_PP_IIF(p(190), BOOST_PP_NODE_189, BOOST_PP_NODE_191)
-# define BOOST_PP_NODE_189(p) BOOST_PP_IIF(p(189), 189, 190)
-# define BOOST_PP_NODE_191(p) BOOST_PP_IIF(p(191), 191, 192)
-# define BOOST_PP_NODE_224(p) BOOST_PP_IIF(p(224), BOOST_PP_NODE_208, BOOST_PP_NODE_240)
-# define BOOST_PP_NODE_208(p) BOOST_PP_IIF(p(208), BOOST_PP_NODE_200, BOOST_PP_NODE_216)
-# define BOOST_PP_NODE_200(p) BOOST_PP_IIF(p(200), BOOST_PP_NODE_196, BOOST_PP_NODE_204)
-# define BOOST_PP_NODE_196(p) BOOST_PP_IIF(p(196), BOOST_PP_NODE_194, BOOST_PP_NODE_198)
-# define BOOST_PP_NODE_194(p) BOOST_PP_IIF(p(194), BOOST_PP_NODE_193, BOOST_PP_NODE_195)
-# define BOOST_PP_NODE_193(p) BOOST_PP_IIF(p(193), 193, 194)
-# define BOOST_PP_NODE_195(p) BOOST_PP_IIF(p(195), 195, 196)
-# define BOOST_PP_NODE_198(p) BOOST_PP_IIF(p(198), BOOST_PP_NODE_197, BOOST_PP_NODE_199)
-# define BOOST_PP_NODE_197(p) BOOST_PP_IIF(p(197), 197, 198)
-# define BOOST_PP_NODE_199(p) BOOST_PP_IIF(p(199), 199, 200)
-# define BOOST_PP_NODE_204(p) BOOST_PP_IIF(p(204), BOOST_PP_NODE_202, BOOST_PP_NODE_206)
-# define BOOST_PP_NODE_202(p) BOOST_PP_IIF(p(202), BOOST_PP_NODE_201, BOOST_PP_NODE_203)
-# define BOOST_PP_NODE_201(p) BOOST_PP_IIF(p(201), 201, 202)
-# define BOOST_PP_NODE_203(p) BOOST_PP_IIF(p(203), 203, 204)
-# define BOOST_PP_NODE_206(p) BOOST_PP_IIF(p(206), BOOST_PP_NODE_205, BOOST_PP_NODE_207)
-# define BOOST_PP_NODE_205(p) BOOST_PP_IIF(p(205), 205, 206)
-# define BOOST_PP_NODE_207(p) BOOST_PP_IIF(p(207), 207, 208)
-# define BOOST_PP_NODE_216(p) BOOST_PP_IIF(p(216), BOOST_PP_NODE_212, BOOST_PP_NODE_220)
-# define BOOST_PP_NODE_212(p) BOOST_PP_IIF(p(212), BOOST_PP_NODE_210, BOOST_PP_NODE_214)
-# define BOOST_PP_NODE_210(p) BOOST_PP_IIF(p(210), BOOST_PP_NODE_209, BOOST_PP_NODE_211)
-# define BOOST_PP_NODE_209(p) BOOST_PP_IIF(p(209), 209, 210)
-# define BOOST_PP_NODE_211(p) BOOST_PP_IIF(p(211), 211, 212)
-# define BOOST_PP_NODE_214(p) BOOST_PP_IIF(p(214), BOOST_PP_NODE_213, BOOST_PP_NODE_215)
-# define BOOST_PP_NODE_213(p) BOOST_PP_IIF(p(213), 213, 214)
-# define BOOST_PP_NODE_215(p) BOOST_PP_IIF(p(215), 215, 216)
-# define BOOST_PP_NODE_220(p) BOOST_PP_IIF(p(220), BOOST_PP_NODE_218, BOOST_PP_NODE_222)
-# define BOOST_PP_NODE_218(p) BOOST_PP_IIF(p(218), BOOST_PP_NODE_217, BOOST_PP_NODE_219)
-# define BOOST_PP_NODE_217(p) BOOST_PP_IIF(p(217), 217, 218)
-# define BOOST_PP_NODE_219(p) BOOST_PP_IIF(p(219), 219, 220)
-# define BOOST_PP_NODE_222(p) BOOST_PP_IIF(p(222), BOOST_PP_NODE_221, BOOST_PP_NODE_223)
-# define BOOST_PP_NODE_221(p) BOOST_PP_IIF(p(221), 221, 222)
-# define BOOST_PP_NODE_223(p) BOOST_PP_IIF(p(223), 223, 224)
-# define BOOST_PP_NODE_240(p) BOOST_PP_IIF(p(240), BOOST_PP_NODE_232, BOOST_PP_NODE_248)
-# define BOOST_PP_NODE_232(p) BOOST_PP_IIF(p(232), BOOST_PP_NODE_228, BOOST_PP_NODE_236)
-# define BOOST_PP_NODE_228(p) BOOST_PP_IIF(p(228), BOOST_PP_NODE_226, BOOST_PP_NODE_230)
-# define BOOST_PP_NODE_226(p) BOOST_PP_IIF(p(226), BOOST_PP_NODE_225, BOOST_PP_NODE_227)
-# define BOOST_PP_NODE_225(p) BOOST_PP_IIF(p(225), 225, 226)
-# define BOOST_PP_NODE_227(p) BOOST_PP_IIF(p(227), 227, 228)
-# define BOOST_PP_NODE_230(p) BOOST_PP_IIF(p(230), BOOST_PP_NODE_229, BOOST_PP_NODE_231)
-# define BOOST_PP_NODE_229(p) BOOST_PP_IIF(p(229), 229, 230)
-# define BOOST_PP_NODE_231(p) BOOST_PP_IIF(p(231), 231, 232)
-# define BOOST_PP_NODE_236(p) BOOST_PP_IIF(p(236), BOOST_PP_NODE_234, BOOST_PP_NODE_238)
-# define BOOST_PP_NODE_234(p) BOOST_PP_IIF(p(234), BOOST_PP_NODE_233, BOOST_PP_NODE_235)
-# define BOOST_PP_NODE_233(p) BOOST_PP_IIF(p(233), 233, 234)
-# define BOOST_PP_NODE_235(p) BOOST_PP_IIF(p(235), 235, 236)
-# define BOOST_PP_NODE_238(p) BOOST_PP_IIF(p(238), BOOST_PP_NODE_237, BOOST_PP_NODE_239)
-# define BOOST_PP_NODE_237(p) BOOST_PP_IIF(p(237), 237, 238)
-# define BOOST_PP_NODE_239(p) BOOST_PP_IIF(p(239), 239, 240)
-# define BOOST_PP_NODE_248(p) BOOST_PP_IIF(p(248), BOOST_PP_NODE_244, BOOST_PP_NODE_252)
-# define BOOST_PP_NODE_244(p) BOOST_PP_IIF(p(244), BOOST_PP_NODE_242, BOOST_PP_NODE_246)
-# define BOOST_PP_NODE_242(p) BOOST_PP_IIF(p(242), BOOST_PP_NODE_241, BOOST_PP_NODE_243)
-# define BOOST_PP_NODE_241(p) BOOST_PP_IIF(p(241), 241, 242)
-# define BOOST_PP_NODE_243(p) BOOST_PP_IIF(p(243), 243, 244)
-# define BOOST_PP_NODE_246(p) BOOST_PP_IIF(p(246), BOOST_PP_NODE_245, BOOST_PP_NODE_247)
-# define BOOST_PP_NODE_245(p) BOOST_PP_IIF(p(245), 245, 246)
-# define BOOST_PP_NODE_247(p) BOOST_PP_IIF(p(247), 247, 248)
-# define BOOST_PP_NODE_252(p) BOOST_PP_IIF(p(252), BOOST_PP_NODE_250, BOOST_PP_NODE_254)
-# define BOOST_PP_NODE_250(p) BOOST_PP_IIF(p(250), BOOST_PP_NODE_249, BOOST_PP_NODE_251)
-# define BOOST_PP_NODE_249(p) BOOST_PP_IIF(p(249), 249, 250)
-# define BOOST_PP_NODE_251(p) BOOST_PP_IIF(p(251), 251, 252)
-# define BOOST_PP_NODE_254(p) BOOST_PP_IIF(p(254), BOOST_PP_NODE_253, BOOST_PP_NODE_255)
-# define BOOST_PP_NODE_253(p) BOOST_PP_IIF(p(253), 253, 254)
-# define BOOST_PP_NODE_255(p) BOOST_PP_IIF(p(255), 255, 256)
-#
-# endif
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/detail/check.hpp b/libcutl/cutl/details/boost/preprocessor/detail/check.hpp
deleted file mode 100644
index 132959e..0000000
--- a/libcutl/cutl/details/boost/preprocessor/detail/check.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_DETAIL_CHECK_HPP
-# define BOOST_PREPROCESSOR_DETAIL_CHECK_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_CHECK */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_CHECK(x, type) BOOST_PP_CHECK_D(x, type)
-# else
-# define BOOST_PP_CHECK(x, type) BOOST_PP_CHECK_OO((x, type))
-# define BOOST_PP_CHECK_OO(par) BOOST_PP_CHECK_D ## par
-# endif
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
-# define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_1(BOOST_PP_CAT(BOOST_PP_CHECK_RESULT_, type x))
-# define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
-# define BOOST_PP_CHECK_2(res, _) res
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_1(type x)
-# define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
-# define BOOST_PP_CHECK_2(chk) BOOST_PP_CHECK_3((BOOST_PP_CHECK_RESULT_ ## chk))
-# define BOOST_PP_CHECK_3(im) BOOST_PP_CHECK_5(BOOST_PP_CHECK_4 im)
-# define BOOST_PP_CHECK_4(res, _) res
-# define BOOST_PP_CHECK_5(res) res
-# else /* DMC */
-# define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_OO((type x))
-# define BOOST_PP_CHECK_OO(par) BOOST_PP_CHECK_0 ## par
-# define BOOST_PP_CHECK_0(chk) BOOST_PP_CHECK_1(BOOST_PP_CAT(BOOST_PP_CHECK_RESULT_, chk))
-# define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
-# define BOOST_PP_CHECK_2(res, _) res
-# endif
-#
-# define BOOST_PP_CHECK_RESULT_1 1, BOOST_PP_NIL
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/detail/dmc/auto_rec.hpp b/libcutl/cutl/details/boost/preprocessor/detail/dmc/auto_rec.hpp
deleted file mode 100644
index f24d0a4..0000000
--- a/libcutl/cutl/details/boost/preprocessor/detail/dmc/auto_rec.hpp
+++ /dev/null
@@ -1,286 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
-# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
-#
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-#
-# /* BOOST_PP_AUTO_REC */
-#
-# define BOOST_PP_AUTO_REC(pred, n) BOOST_PP_NODE_ENTRY_ ## n(pred)
-#
-# define BOOST_PP_NODE_ENTRY_256(p) BOOST_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_128(p) BOOST_PP_NODE_64(p)(p)(p)(p)(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_64(p) BOOST_PP_NODE_32(p)(p)(p)(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_32(p) BOOST_PP_NODE_16(p)(p)(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_16(p) BOOST_PP_NODE_8(p)(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_8(p) BOOST_PP_NODE_4(p)(p)(p)
-# define BOOST_PP_NODE_ENTRY_4(p) BOOST_PP_NODE_2(p)(p)
-# define BOOST_PP_NODE_ENTRY_2(p) BOOST_PP_NODE_1(p)
-#
-# define BOOST_PP_NODE_128(p) BOOST_PP_IIF(p##(128), BOOST_PP_NODE_64, BOOST_PP_NODE_192)
-# define BOOST_PP_NODE_64(p) BOOST_PP_IIF(p##(64), BOOST_PP_NODE_32, BOOST_PP_NODE_96)
-# define BOOST_PP_NODE_32(p) BOOST_PP_IIF(p##(32), BOOST_PP_NODE_16, BOOST_PP_NODE_48)
-# define BOOST_PP_NODE_16(p) BOOST_PP_IIF(p##(16), BOOST_PP_NODE_8, BOOST_PP_NODE_24)
-# define BOOST_PP_NODE_8(p) BOOST_PP_IIF(p##(8), BOOST_PP_NODE_4, BOOST_PP_NODE_12)
-# define BOOST_PP_NODE_4(p) BOOST_PP_IIF(p##(4), BOOST_PP_NODE_2, BOOST_PP_NODE_6)
-# define BOOST_PP_NODE_2(p) BOOST_PP_IIF(p##(2), BOOST_PP_NODE_1, BOOST_PP_NODE_3)
-# define BOOST_PP_NODE_1(p) BOOST_PP_IIF(p##(1), 1, 2)
-# define BOOST_PP_NODE_3(p) BOOST_PP_IIF(p##(3), 3, 4)
-# define BOOST_PP_NODE_6(p) BOOST_PP_IIF(p##(6), BOOST_PP_NODE_5, BOOST_PP_NODE_7)
-# define BOOST_PP_NODE_5(p) BOOST_PP_IIF(p##(5), 5, 6)
-# define BOOST_PP_NODE_7(p) BOOST_PP_IIF(p##(7), 7, 8)
-# define BOOST_PP_NODE_12(p) BOOST_PP_IIF(p##(12), BOOST_PP_NODE_10, BOOST_PP_NODE_14)
-# define BOOST_PP_NODE_10(p) BOOST_PP_IIF(p##(10), BOOST_PP_NODE_9, BOOST_PP_NODE_11)
-# define BOOST_PP_NODE_9(p) BOOST_PP_IIF(p##(9), 9, 10)
-# define BOOST_PP_NODE_11(p) BOOST_PP_IIF(p##(11), 11, 12)
-# define BOOST_PP_NODE_14(p) BOOST_PP_IIF(p##(14), BOOST_PP_NODE_13, BOOST_PP_NODE_15)
-# define BOOST_PP_NODE_13(p) BOOST_PP_IIF(p##(13), 13, 14)
-# define BOOST_PP_NODE_15(p) BOOST_PP_IIF(p##(15), 15, 16)
-# define BOOST_PP_NODE_24(p) BOOST_PP_IIF(p##(24), BOOST_PP_NODE_20, BOOST_PP_NODE_28)
-# define BOOST_PP_NODE_20(p) BOOST_PP_IIF(p##(20), BOOST_PP_NODE_18, BOOST_PP_NODE_22)
-# define BOOST_PP_NODE_18(p) BOOST_PP_IIF(p##(18), BOOST_PP_NODE_17, BOOST_PP_NODE_19)
-# define BOOST_PP_NODE_17(p) BOOST_PP_IIF(p##(17), 17, 18)
-# define BOOST_PP_NODE_19(p) BOOST_PP_IIF(p##(19), 19, 20)
-# define BOOST_PP_NODE_22(p) BOOST_PP_IIF(p##(22), BOOST_PP_NODE_21, BOOST_PP_NODE_23)
-# define BOOST_PP_NODE_21(p) BOOST_PP_IIF(p##(21), 21, 22)
-# define BOOST_PP_NODE_23(p) BOOST_PP_IIF(p##(23), 23, 24)
-# define BOOST_PP_NODE_28(p) BOOST_PP_IIF(p##(28), BOOST_PP_NODE_26, BOOST_PP_NODE_30)
-# define BOOST_PP_NODE_26(p) BOOST_PP_IIF(p##(26), BOOST_PP_NODE_25, BOOST_PP_NODE_27)
-# define BOOST_PP_NODE_25(p) BOOST_PP_IIF(p##(25), 25, 26)
-# define BOOST_PP_NODE_27(p) BOOST_PP_IIF(p##(27), 27, 28)
-# define BOOST_PP_NODE_30(p) BOOST_PP_IIF(p##(30), BOOST_PP_NODE_29, BOOST_PP_NODE_31)
-# define BOOST_PP_NODE_29(p) BOOST_PP_IIF(p##(29), 29, 30)
-# define BOOST_PP_NODE_31(p) BOOST_PP_IIF(p##(31), 31, 32)
-# define BOOST_PP_NODE_48(p) BOOST_PP_IIF(p##(48), BOOST_PP_NODE_40, BOOST_PP_NODE_56)
-# define BOOST_PP_NODE_40(p) BOOST_PP_IIF(p##(40), BOOST_PP_NODE_36, BOOST_PP_NODE_44)
-# define BOOST_PP_NODE_36(p) BOOST_PP_IIF(p##(36), BOOST_PP_NODE_34, BOOST_PP_NODE_38)
-# define BOOST_PP_NODE_34(p) BOOST_PP_IIF(p##(34), BOOST_PP_NODE_33, BOOST_PP_NODE_35)
-# define BOOST_PP_NODE_33(p) BOOST_PP_IIF(p##(33), 33, 34)
-# define BOOST_PP_NODE_35(p) BOOST_PP_IIF(p##(35), 35, 36)
-# define BOOST_PP_NODE_38(p) BOOST_PP_IIF(p##(38), BOOST_PP_NODE_37, BOOST_PP_NODE_39)
-# define BOOST_PP_NODE_37(p) BOOST_PP_IIF(p##(37), 37, 38)
-# define BOOST_PP_NODE_39(p) BOOST_PP_IIF(p##(39), 39, 40)
-# define BOOST_PP_NODE_44(p) BOOST_PP_IIF(p##(44), BOOST_PP_NODE_42, BOOST_PP_NODE_46)
-# define BOOST_PP_NODE_42(p) BOOST_PP_IIF(p##(42), BOOST_PP_NODE_41, BOOST_PP_NODE_43)
-# define BOOST_PP_NODE_41(p) BOOST_PP_IIF(p##(41), 41, 42)
-# define BOOST_PP_NODE_43(p) BOOST_PP_IIF(p##(43), 43, 44)
-# define BOOST_PP_NODE_46(p) BOOST_PP_IIF(p##(46), BOOST_PP_NODE_45, BOOST_PP_NODE_47)
-# define BOOST_PP_NODE_45(p) BOOST_PP_IIF(p##(45), 45, 46)
-# define BOOST_PP_NODE_47(p) BOOST_PP_IIF(p##(47), 47, 48)
-# define BOOST_PP_NODE_56(p) BOOST_PP_IIF(p##(56), BOOST_PP_NODE_52, BOOST_PP_NODE_60)
-# define BOOST_PP_NODE_52(p) BOOST_PP_IIF(p##(52), BOOST_PP_NODE_50, BOOST_PP_NODE_54)
-# define BOOST_PP_NODE_50(p) BOOST_PP_IIF(p##(50), BOOST_PP_NODE_49, BOOST_PP_NODE_51)
-# define BOOST_PP_NODE_49(p) BOOST_PP_IIF(p##(49), 49, 50)
-# define BOOST_PP_NODE_51(p) BOOST_PP_IIF(p##(51), 51, 52)
-# define BOOST_PP_NODE_54(p) BOOST_PP_IIF(p##(54), BOOST_PP_NODE_53, BOOST_PP_NODE_55)
-# define BOOST_PP_NODE_53(p) BOOST_PP_IIF(p##(53), 53, 54)
-# define BOOST_PP_NODE_55(p) BOOST_PP_IIF(p##(55), 55, 56)
-# define BOOST_PP_NODE_60(p) BOOST_PP_IIF(p##(60), BOOST_PP_NODE_58, BOOST_PP_NODE_62)
-# define BOOST_PP_NODE_58(p) BOOST_PP_IIF(p##(58), BOOST_PP_NODE_57, BOOST_PP_NODE_59)
-# define BOOST_PP_NODE_57(p) BOOST_PP_IIF(p##(57), 57, 58)
-# define BOOST_PP_NODE_59(p) BOOST_PP_IIF(p##(59), 59, 60)
-# define BOOST_PP_NODE_62(p) BOOST_PP_IIF(p##(62), BOOST_PP_NODE_61, BOOST_PP_NODE_63)
-# define BOOST_PP_NODE_61(p) BOOST_PP_IIF(p##(61), 61, 62)
-# define BOOST_PP_NODE_63(p) BOOST_PP_IIF(p##(63), 63, 64)
-# define BOOST_PP_NODE_96(p) BOOST_PP_IIF(p##(96), BOOST_PP_NODE_80, BOOST_PP_NODE_112)
-# define BOOST_PP_NODE_80(p) BOOST_PP_IIF(p##(80), BOOST_PP_NODE_72, BOOST_PP_NODE_88)
-# define BOOST_PP_NODE_72(p) BOOST_PP_IIF(p##(72), BOOST_PP_NODE_68, BOOST_PP_NODE_76)
-# define BOOST_PP_NODE_68(p) BOOST_PP_IIF(p##(68), BOOST_PP_NODE_66, BOOST_PP_NODE_70)
-# define BOOST_PP_NODE_66(p) BOOST_PP_IIF(p##(66), BOOST_PP_NODE_65, BOOST_PP_NODE_67)
-# define BOOST_PP_NODE_65(p) BOOST_PP_IIF(p##(65), 65, 66)
-# define BOOST_PP_NODE_67(p) BOOST_PP_IIF(p##(67), 67, 68)
-# define BOOST_PP_NODE_70(p) BOOST_PP_IIF(p##(70), BOOST_PP_NODE_69, BOOST_PP_NODE_71)
-# define BOOST_PP_NODE_69(p) BOOST_PP_IIF(p##(69), 69, 70)
-# define BOOST_PP_NODE_71(p) BOOST_PP_IIF(p##(71), 71, 72)
-# define BOOST_PP_NODE_76(p) BOOST_PP_IIF(p##(76), BOOST_PP_NODE_74, BOOST_PP_NODE_78)
-# define BOOST_PP_NODE_74(p) BOOST_PP_IIF(p##(74), BOOST_PP_NODE_73, BOOST_PP_NODE_75)
-# define BOOST_PP_NODE_73(p) BOOST_PP_IIF(p##(73), 73, 74)
-# define BOOST_PP_NODE_75(p) BOOST_PP_IIF(p##(75), 75, 76)
-# define BOOST_PP_NODE_78(p) BOOST_PP_IIF(p##(78), BOOST_PP_NODE_77, BOOST_PP_NODE_79)
-# define BOOST_PP_NODE_77(p) BOOST_PP_IIF(p##(77), 77, 78)
-# define BOOST_PP_NODE_79(p) BOOST_PP_IIF(p##(79), 79, 80)
-# define BOOST_PP_NODE_88(p) BOOST_PP_IIF(p##(88), BOOST_PP_NODE_84, BOOST_PP_NODE_92)
-# define BOOST_PP_NODE_84(p) BOOST_PP_IIF(p##(84), BOOST_PP_NODE_82, BOOST_PP_NODE_86)
-# define BOOST_PP_NODE_82(p) BOOST_PP_IIF(p##(82), BOOST_PP_NODE_81, BOOST_PP_NODE_83)
-# define BOOST_PP_NODE_81(p) BOOST_PP_IIF(p##(81), 81, 82)
-# define BOOST_PP_NODE_83(p) BOOST_PP_IIF(p##(83), 83, 84)
-# define BOOST_PP_NODE_86(p) BOOST_PP_IIF(p##(86), BOOST_PP_NODE_85, BOOST_PP_NODE_87)
-# define BOOST_PP_NODE_85(p) BOOST_PP_IIF(p##(85), 85, 86)
-# define BOOST_PP_NODE_87(p) BOOST_PP_IIF(p##(87), 87, 88)
-# define BOOST_PP_NODE_92(p) BOOST_PP_IIF(p##(92), BOOST_PP_NODE_90, BOOST_PP_NODE_94)
-# define BOOST_PP_NODE_90(p) BOOST_PP_IIF(p##(90), BOOST_PP_NODE_89, BOOST_PP_NODE_91)
-# define BOOST_PP_NODE_89(p) BOOST_PP_IIF(p##(89), 89, 90)
-# define BOOST_PP_NODE_91(p) BOOST_PP_IIF(p##(91), 91, 92)
-# define BOOST_PP_NODE_94(p) BOOST_PP_IIF(p##(94), BOOST_PP_NODE_93, BOOST_PP_NODE_95)
-# define BOOST_PP_NODE_93(p) BOOST_PP_IIF(p##(93), 93, 94)
-# define BOOST_PP_NODE_95(p) BOOST_PP_IIF(p##(95), 95, 96)
-# define BOOST_PP_NODE_112(p) BOOST_PP_IIF(p##(112), BOOST_PP_NODE_104, BOOST_PP_NODE_120)
-# define BOOST_PP_NODE_104(p) BOOST_PP_IIF(p##(104), BOOST_PP_NODE_100, BOOST_PP_NODE_108)
-# define BOOST_PP_NODE_100(p) BOOST_PP_IIF(p##(100), BOOST_PP_NODE_98, BOOST_PP_NODE_102)
-# define BOOST_PP_NODE_98(p) BOOST_PP_IIF(p##(98), BOOST_PP_NODE_97, BOOST_PP_NODE_99)
-# define BOOST_PP_NODE_97(p) BOOST_PP_IIF(p##(97), 97, 98)
-# define BOOST_PP_NODE_99(p) BOOST_PP_IIF(p##(99), 99, 100)
-# define BOOST_PP_NODE_102(p) BOOST_PP_IIF(p##(102), BOOST_PP_NODE_101, BOOST_PP_NODE_103)
-# define BOOST_PP_NODE_101(p) BOOST_PP_IIF(p##(101), 101, 102)
-# define BOOST_PP_NODE_103(p) BOOST_PP_IIF(p##(103), 103, 104)
-# define BOOST_PP_NODE_108(p) BOOST_PP_IIF(p##(108), BOOST_PP_NODE_106, BOOST_PP_NODE_110)
-# define BOOST_PP_NODE_106(p) BOOST_PP_IIF(p##(106), BOOST_PP_NODE_105, BOOST_PP_NODE_107)
-# define BOOST_PP_NODE_105(p) BOOST_PP_IIF(p##(105), 105, 106)
-# define BOOST_PP_NODE_107(p) BOOST_PP_IIF(p##(107), 107, 108)
-# define BOOST_PP_NODE_110(p) BOOST_PP_IIF(p##(110), BOOST_PP_NODE_109, BOOST_PP_NODE_111)
-# define BOOST_PP_NODE_109(p) BOOST_PP_IIF(p##(109), 109, 110)
-# define BOOST_PP_NODE_111(p) BOOST_PP_IIF(p##(111), 111, 112)
-# define BOOST_PP_NODE_120(p) BOOST_PP_IIF(p##(120), BOOST_PP_NODE_116, BOOST_PP_NODE_124)
-# define BOOST_PP_NODE_116(p) BOOST_PP_IIF(p##(116), BOOST_PP_NODE_114, BOOST_PP_NODE_118)
-# define BOOST_PP_NODE_114(p) BOOST_PP_IIF(p##(114), BOOST_PP_NODE_113, BOOST_PP_NODE_115)
-# define BOOST_PP_NODE_113(p) BOOST_PP_IIF(p##(113), 113, 114)
-# define BOOST_PP_NODE_115(p) BOOST_PP_IIF(p##(115), 115, 116)
-# define BOOST_PP_NODE_118(p) BOOST_PP_IIF(p##(118), BOOST_PP_NODE_117, BOOST_PP_NODE_119)
-# define BOOST_PP_NODE_117(p) BOOST_PP_IIF(p##(117), 117, 118)
-# define BOOST_PP_NODE_119(p) BOOST_PP_IIF(p##(119), 119, 120)
-# define BOOST_PP_NODE_124(p) BOOST_PP_IIF(p##(124), BOOST_PP_NODE_122, BOOST_PP_NODE_126)
-# define BOOST_PP_NODE_122(p) BOOST_PP_IIF(p##(122), BOOST_PP_NODE_121, BOOST_PP_NODE_123)
-# define BOOST_PP_NODE_121(p) BOOST_PP_IIF(p##(121), 121, 122)
-# define BOOST_PP_NODE_123(p) BOOST_PP_IIF(p##(123), 123, 124)
-# define BOOST_PP_NODE_126(p) BOOST_PP_IIF(p##(126), BOOST_PP_NODE_125, BOOST_PP_NODE_127)
-# define BOOST_PP_NODE_125(p) BOOST_PP_IIF(p##(125), 125, 126)
-# define BOOST_PP_NODE_127(p) BOOST_PP_IIF(p##(127), 127, 128)
-# define BOOST_PP_NODE_192(p) BOOST_PP_IIF(p##(192), BOOST_PP_NODE_160, BOOST_PP_NODE_224)
-# define BOOST_PP_NODE_160(p) BOOST_PP_IIF(p##(160), BOOST_PP_NODE_144, BOOST_PP_NODE_176)
-# define BOOST_PP_NODE_144(p) BOOST_PP_IIF(p##(144), BOOST_PP_NODE_136, BOOST_PP_NODE_152)
-# define BOOST_PP_NODE_136(p) BOOST_PP_IIF(p##(136), BOOST_PP_NODE_132, BOOST_PP_NODE_140)
-# define BOOST_PP_NODE_132(p) BOOST_PP_IIF(p##(132), BOOST_PP_NODE_130, BOOST_PP_NODE_134)
-# define BOOST_PP_NODE_130(p) BOOST_PP_IIF(p##(130), BOOST_PP_NODE_129, BOOST_PP_NODE_131)
-# define BOOST_PP_NODE_129(p) BOOST_PP_IIF(p##(129), 129, 130)
-# define BOOST_PP_NODE_131(p) BOOST_PP_IIF(p##(131), 131, 132)
-# define BOOST_PP_NODE_134(p) BOOST_PP_IIF(p##(134), BOOST_PP_NODE_133, BOOST_PP_NODE_135)
-# define BOOST_PP_NODE_133(p) BOOST_PP_IIF(p##(133), 133, 134)
-# define BOOST_PP_NODE_135(p) BOOST_PP_IIF(p##(135), 135, 136)
-# define BOOST_PP_NODE_140(p) BOOST_PP_IIF(p##(140), BOOST_PP_NODE_138, BOOST_PP_NODE_142)
-# define BOOST_PP_NODE_138(p) BOOST_PP_IIF(p##(138), BOOST_PP_NODE_137, BOOST_PP_NODE_139)
-# define BOOST_PP_NODE_137(p) BOOST_PP_IIF(p##(137), 137, 138)
-# define BOOST_PP_NODE_139(p) BOOST_PP_IIF(p##(139), 139, 140)
-# define BOOST_PP_NODE_142(p) BOOST_PP_IIF(p##(142), BOOST_PP_NODE_141, BOOST_PP_NODE_143)
-# define BOOST_PP_NODE_141(p) BOOST_PP_IIF(p##(141), 141, 142)
-# define BOOST_PP_NODE_143(p) BOOST_PP_IIF(p##(143), 143, 144)
-# define BOOST_PP_NODE_152(p) BOOST_PP_IIF(p##(152), BOOST_PP_NODE_148, BOOST_PP_NODE_156)
-# define BOOST_PP_NODE_148(p) BOOST_PP_IIF(p##(148), BOOST_PP_NODE_146, BOOST_PP_NODE_150)
-# define BOOST_PP_NODE_146(p) BOOST_PP_IIF(p##(146), BOOST_PP_NODE_145, BOOST_PP_NODE_147)
-# define BOOST_PP_NODE_145(p) BOOST_PP_IIF(p##(145), 145, 146)
-# define BOOST_PP_NODE_147(p) BOOST_PP_IIF(p##(147), 147, 148)
-# define BOOST_PP_NODE_150(p) BOOST_PP_IIF(p##(150), BOOST_PP_NODE_149, BOOST_PP_NODE_151)
-# define BOOST_PP_NODE_149(p) BOOST_PP_IIF(p##(149), 149, 150)
-# define BOOST_PP_NODE_151(p) BOOST_PP_IIF(p##(151), 151, 152)
-# define BOOST_PP_NODE_156(p) BOOST_PP_IIF(p##(156), BOOST_PP_NODE_154, BOOST_PP_NODE_158)
-# define BOOST_PP_NODE_154(p) BOOST_PP_IIF(p##(154), BOOST_PP_NODE_153, BOOST_PP_NODE_155)
-# define BOOST_PP_NODE_153(p) BOOST_PP_IIF(p##(153), 153, 154)
-# define BOOST_PP_NODE_155(p) BOOST_PP_IIF(p##(155), 155, 156)
-# define BOOST_PP_NODE_158(p) BOOST_PP_IIF(p##(158), BOOST_PP_NODE_157, BOOST_PP_NODE_159)
-# define BOOST_PP_NODE_157(p) BOOST_PP_IIF(p##(157), 157, 158)
-# define BOOST_PP_NODE_159(p) BOOST_PP_IIF(p##(159), 159, 160)
-# define BOOST_PP_NODE_176(p) BOOST_PP_IIF(p##(176), BOOST_PP_NODE_168, BOOST_PP_NODE_184)
-# define BOOST_PP_NODE_168(p) BOOST_PP_IIF(p##(168), BOOST_PP_NODE_164, BOOST_PP_NODE_172)
-# define BOOST_PP_NODE_164(p) BOOST_PP_IIF(p##(164), BOOST_PP_NODE_162, BOOST_PP_NODE_166)
-# define BOOST_PP_NODE_162(p) BOOST_PP_IIF(p##(162), BOOST_PP_NODE_161, BOOST_PP_NODE_163)
-# define BOOST_PP_NODE_161(p) BOOST_PP_IIF(p##(161), 161, 162)
-# define BOOST_PP_NODE_163(p) BOOST_PP_IIF(p##(163), 163, 164)
-# define BOOST_PP_NODE_166(p) BOOST_PP_IIF(p##(166), BOOST_PP_NODE_165, BOOST_PP_NODE_167)
-# define BOOST_PP_NODE_165(p) BOOST_PP_IIF(p##(165), 165, 166)
-# define BOOST_PP_NODE_167(p) BOOST_PP_IIF(p##(167), 167, 168)
-# define BOOST_PP_NODE_172(p) BOOST_PP_IIF(p##(172), BOOST_PP_NODE_170, BOOST_PP_NODE_174)
-# define BOOST_PP_NODE_170(p) BOOST_PP_IIF(p##(170), BOOST_PP_NODE_169, BOOST_PP_NODE_171)
-# define BOOST_PP_NODE_169(p) BOOST_PP_IIF(p##(169), 169, 170)
-# define BOOST_PP_NODE_171(p) BOOST_PP_IIF(p##(171), 171, 172)
-# define BOOST_PP_NODE_174(p) BOOST_PP_IIF(p##(174), BOOST_PP_NODE_173, BOOST_PP_NODE_175)
-# define BOOST_PP_NODE_173(p) BOOST_PP_IIF(p##(173), 173, 174)
-# define BOOST_PP_NODE_175(p) BOOST_PP_IIF(p##(175), 175, 176)
-# define BOOST_PP_NODE_184(p) BOOST_PP_IIF(p##(184), BOOST_PP_NODE_180, BOOST_PP_NODE_188)
-# define BOOST_PP_NODE_180(p) BOOST_PP_IIF(p##(180), BOOST_PP_NODE_178, BOOST_PP_NODE_182)
-# define BOOST_PP_NODE_178(p) BOOST_PP_IIF(p##(178), BOOST_PP_NODE_177, BOOST_PP_NODE_179)
-# define BOOST_PP_NODE_177(p) BOOST_PP_IIF(p##(177), 177, 178)
-# define BOOST_PP_NODE_179(p) BOOST_PP_IIF(p##(179), 179, 180)
-# define BOOST_PP_NODE_182(p) BOOST_PP_IIF(p##(182), BOOST_PP_NODE_181, BOOST_PP_NODE_183)
-# define BOOST_PP_NODE_181(p) BOOST_PP_IIF(p##(181), 181, 182)
-# define BOOST_PP_NODE_183(p) BOOST_PP_IIF(p##(183), 183, 184)
-# define BOOST_PP_NODE_188(p) BOOST_PP_IIF(p##(188), BOOST_PP_NODE_186, BOOST_PP_NODE_190)
-# define BOOST_PP_NODE_186(p) BOOST_PP_IIF(p##(186), BOOST_PP_NODE_185, BOOST_PP_NODE_187)
-# define BOOST_PP_NODE_185(p) BOOST_PP_IIF(p##(185), 185, 186)
-# define BOOST_PP_NODE_187(p) BOOST_PP_IIF(p##(187), 187, 188)
-# define BOOST_PP_NODE_190(p) BOOST_PP_IIF(p##(190), BOOST_PP_NODE_189, BOOST_PP_NODE_191)
-# define BOOST_PP_NODE_189(p) BOOST_PP_IIF(p##(189), 189, 190)
-# define BOOST_PP_NODE_191(p) BOOST_PP_IIF(p##(191), 191, 192)
-# define BOOST_PP_NODE_224(p) BOOST_PP_IIF(p##(224), BOOST_PP_NODE_208, BOOST_PP_NODE_240)
-# define BOOST_PP_NODE_208(p) BOOST_PP_IIF(p##(208), BOOST_PP_NODE_200, BOOST_PP_NODE_216)
-# define BOOST_PP_NODE_200(p) BOOST_PP_IIF(p##(200), BOOST_PP_NODE_196, BOOST_PP_NODE_204)
-# define BOOST_PP_NODE_196(p) BOOST_PP_IIF(p##(196), BOOST_PP_NODE_194, BOOST_PP_NODE_198)
-# define BOOST_PP_NODE_194(p) BOOST_PP_IIF(p##(194), BOOST_PP_NODE_193, BOOST_PP_NODE_195)
-# define BOOST_PP_NODE_193(p) BOOST_PP_IIF(p##(193), 193, 194)
-# define BOOST_PP_NODE_195(p) BOOST_PP_IIF(p##(195), 195, 196)
-# define BOOST_PP_NODE_198(p) BOOST_PP_IIF(p##(198), BOOST_PP_NODE_197, BOOST_PP_NODE_199)
-# define BOOST_PP_NODE_197(p) BOOST_PP_IIF(p##(197), 197, 198)
-# define BOOST_PP_NODE_199(p) BOOST_PP_IIF(p##(199), 199, 200)
-# define BOOST_PP_NODE_204(p) BOOST_PP_IIF(p##(204), BOOST_PP_NODE_202, BOOST_PP_NODE_206)
-# define BOOST_PP_NODE_202(p) BOOST_PP_IIF(p##(202), BOOST_PP_NODE_201, BOOST_PP_NODE_203)
-# define BOOST_PP_NODE_201(p) BOOST_PP_IIF(p##(201), 201, 202)
-# define BOOST_PP_NODE_203(p) BOOST_PP_IIF(p##(203), 203, 204)
-# define BOOST_PP_NODE_206(p) BOOST_PP_IIF(p##(206), BOOST_PP_NODE_205, BOOST_PP_NODE_207)
-# define BOOST_PP_NODE_205(p) BOOST_PP_IIF(p##(205), 205, 206)
-# define BOOST_PP_NODE_207(p) BOOST_PP_IIF(p##(207), 207, 208)
-# define BOOST_PP_NODE_216(p) BOOST_PP_IIF(p##(216), BOOST_PP_NODE_212, BOOST_PP_NODE_220)
-# define BOOST_PP_NODE_212(p) BOOST_PP_IIF(p##(212), BOOST_PP_NODE_210, BOOST_PP_NODE_214)
-# define BOOST_PP_NODE_210(p) BOOST_PP_IIF(p##(210), BOOST_PP_NODE_209, BOOST_PP_NODE_211)
-# define BOOST_PP_NODE_209(p) BOOST_PP_IIF(p##(209), 209, 210)
-# define BOOST_PP_NODE_211(p) BOOST_PP_IIF(p##(211), 211, 212)
-# define BOOST_PP_NODE_214(p) BOOST_PP_IIF(p##(214), BOOST_PP_NODE_213, BOOST_PP_NODE_215)
-# define BOOST_PP_NODE_213(p) BOOST_PP_IIF(p##(213), 213, 214)
-# define BOOST_PP_NODE_215(p) BOOST_PP_IIF(p##(215), 215, 216)
-# define BOOST_PP_NODE_220(p) BOOST_PP_IIF(p##(220), BOOST_PP_NODE_218, BOOST_PP_NODE_222)
-# define BOOST_PP_NODE_218(p) BOOST_PP_IIF(p##(218), BOOST_PP_NODE_217, BOOST_PP_NODE_219)
-# define BOOST_PP_NODE_217(p) BOOST_PP_IIF(p##(217), 217, 218)
-# define BOOST_PP_NODE_219(p) BOOST_PP_IIF(p##(219), 219, 220)
-# define BOOST_PP_NODE_222(p) BOOST_PP_IIF(p##(222), BOOST_PP_NODE_221, BOOST_PP_NODE_223)
-# define BOOST_PP_NODE_221(p) BOOST_PP_IIF(p##(221), 221, 222)
-# define BOOST_PP_NODE_223(p) BOOST_PP_IIF(p##(223), 223, 224)
-# define BOOST_PP_NODE_240(p) BOOST_PP_IIF(p##(240), BOOST_PP_NODE_232, BOOST_PP_NODE_248)
-# define BOOST_PP_NODE_232(p) BOOST_PP_IIF(p##(232), BOOST_PP_NODE_228, BOOST_PP_NODE_236)
-# define BOOST_PP_NODE_228(p) BOOST_PP_IIF(p##(228), BOOST_PP_NODE_226, BOOST_PP_NODE_230)
-# define BOOST_PP_NODE_226(p) BOOST_PP_IIF(p##(226), BOOST_PP_NODE_225, BOOST_PP_NODE_227)
-# define BOOST_PP_NODE_225(p) BOOST_PP_IIF(p##(225), 225, 226)
-# define BOOST_PP_NODE_227(p) BOOST_PP_IIF(p##(227), 227, 228)
-# define BOOST_PP_NODE_230(p) BOOST_PP_IIF(p##(230), BOOST_PP_NODE_229, BOOST_PP_NODE_231)
-# define BOOST_PP_NODE_229(p) BOOST_PP_IIF(p##(229), 229, 230)
-# define BOOST_PP_NODE_231(p) BOOST_PP_IIF(p##(231), 231, 232)
-# define BOOST_PP_NODE_236(p) BOOST_PP_IIF(p##(236), BOOST_PP_NODE_234, BOOST_PP_NODE_238)
-# define BOOST_PP_NODE_234(p) BOOST_PP_IIF(p##(234), BOOST_PP_NODE_233, BOOST_PP_NODE_235)
-# define BOOST_PP_NODE_233(p) BOOST_PP_IIF(p##(233), 233, 234)
-# define BOOST_PP_NODE_235(p) BOOST_PP_IIF(p##(235), 235, 236)
-# define BOOST_PP_NODE_238(p) BOOST_PP_IIF(p##(238), BOOST_PP_NODE_237, BOOST_PP_NODE_239)
-# define BOOST_PP_NODE_237(p) BOOST_PP_IIF(p##(237), 237, 238)
-# define BOOST_PP_NODE_239(p) BOOST_PP_IIF(p##(239), 239, 240)
-# define BOOST_PP_NODE_248(p) BOOST_PP_IIF(p##(248), BOOST_PP_NODE_244, BOOST_PP_NODE_252)
-# define BOOST_PP_NODE_244(p) BOOST_PP_IIF(p##(244), BOOST_PP_NODE_242, BOOST_PP_NODE_246)
-# define BOOST_PP_NODE_242(p) BOOST_PP_IIF(p##(242), BOOST_PP_NODE_241, BOOST_PP_NODE_243)
-# define BOOST_PP_NODE_241(p) BOOST_PP_IIF(p##(241), 241, 242)
-# define BOOST_PP_NODE_243(p) BOOST_PP_IIF(p##(243), 243, 244)
-# define BOOST_PP_NODE_246(p) BOOST_PP_IIF(p##(246), BOOST_PP_NODE_245, BOOST_PP_NODE_247)
-# define BOOST_PP_NODE_245(p) BOOST_PP_IIF(p##(245), 245, 246)
-# define BOOST_PP_NODE_247(p) BOOST_PP_IIF(p##(247), 247, 248)
-# define BOOST_PP_NODE_252(p) BOOST_PP_IIF(p##(252), BOOST_PP_NODE_250, BOOST_PP_NODE_254)
-# define BOOST_PP_NODE_250(p) BOOST_PP_IIF(p##(250), BOOST_PP_NODE_249, BOOST_PP_NODE_251)
-# define BOOST_PP_NODE_249(p) BOOST_PP_IIF(p##(249), 249, 250)
-# define BOOST_PP_NODE_251(p) BOOST_PP_IIF(p##(251), 251, 252)
-# define BOOST_PP_NODE_254(p) BOOST_PP_IIF(p##(254), BOOST_PP_NODE_253, BOOST_PP_NODE_255)
-# define BOOST_PP_NODE_253(p) BOOST_PP_IIF(p##(253), 253, 254)
-# define BOOST_PP_NODE_255(p) BOOST_PP_IIF(p##(255), 255, 256)
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/detail/is_binary.hpp b/libcutl/cutl/details/boost/preprocessor/detail/is_binary.hpp
deleted file mode 100644
index 70be861..0000000
--- a/libcutl/cutl/details/boost/preprocessor/detail/is_binary.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_DETAIL_IS_BINARY_HPP
-# define BOOST_PREPROCESSOR_DETAIL_IS_BINARY_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/detail/check.hpp>
-#
-# /* BOOST_PP_IS_BINARY */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_IS_BINARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK)
-# else
-# define BOOST_PP_IS_BINARY(x) BOOST_PP_IS_BINARY_I(x)
-# define BOOST_PP_IS_BINARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK)
-# endif
-#
-# define BOOST_PP_IS_BINARY_CHECK(a, b) 1
-# define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_BINARY_CHECK 0, BOOST_PP_NIL
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/empty.hpp b/libcutl/cutl/details/boost/preprocessor/empty.hpp
deleted file mode 100644
index d6f8abb..0000000
--- a/libcutl/cutl/details/boost/preprocessor/empty.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_EMPTY_HPP
-# define BOOST_PREPROCESSOR_EMPTY_HPP
-#
-# include <cutl/details/boost/preprocessor/facilities/empty.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/enum_params.hpp b/libcutl/cutl/details/boost/preprocessor/enum_params.hpp
deleted file mode 100644
index eb2d2d1..0000000
--- a/libcutl/cutl/details/boost/preprocessor/enum_params.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_HPP
-# define BOOST_PREPROCESSOR_ENUM_PARAMS_HPP
-#
-# include <cutl/details/boost/preprocessor/repetition/enum_params.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/enum_shifted_params.hpp b/libcutl/cutl/details/boost/preprocessor/enum_shifted_params.hpp
deleted file mode 100644
index 888fc2d..0000000
--- a/libcutl/cutl/details/boost/preprocessor/enum_shifted_params.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
-# define BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
-#
-# include <cutl/details/boost/preprocessor/repetition/enum_shifted_params.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/expr_if.hpp b/libcutl/cutl/details/boost/preprocessor/expr_if.hpp
deleted file mode 100644
index 0ddae69..0000000
--- a/libcutl/cutl/details/boost/preprocessor/expr_if.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_EXPR_IF_HPP
-# define BOOST_PREPROCESSOR_EXPR_IF_HPP
-#
-# include <cutl/details/boost/preprocessor/control/expr_if.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/facilities/empty.hpp b/libcutl/cutl/details/boost/preprocessor/facilities/empty.hpp
deleted file mode 100644
index 46db190..0000000
--- a/libcutl/cutl/details/boost/preprocessor/facilities/empty.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP
-# define BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP
-#
-# /* BOOST_PP_EMPTY */
-#
-# define BOOST_PP_EMPTY()
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/facilities/identity.hpp b/libcutl/cutl/details/boost/preprocessor/facilities/identity.hpp
deleted file mode 100644
index eebc96f..0000000
--- a/libcutl/cutl/details/boost/preprocessor/facilities/identity.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP
-# define BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP
-#
-# include <cutl/details/boost/preprocessor/facilities/empty.hpp>
-#
-# /* BOOST_PP_IDENTITY */
-#
-# define BOOST_PP_IDENTITY(item) item BOOST_PP_EMPTY
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/facilities/overload.hpp b/libcutl/cutl/details/boost/preprocessor/facilities/overload.hpp
deleted file mode 100644
index df2ed9b..0000000
--- a/libcutl/cutl/details/boost/preprocessor/facilities/overload.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2011. *
-# * (C) Copyright Edward Diener 2011. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-# * http://www.boost.org/LICENSE_1_0.txt) *
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_FACILITIES_OVERLOAD_HPP
-# define BOOST_PREPROCESSOR_FACILITIES_OVERLOAD_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/variadic/size.hpp>
-#
-# /* BOOST_PP_OVERLOAD */
-#
-# if BOOST_PP_VARIADICS
-# define BOOST_PP_OVERLOAD(prefix, ...) BOOST_PP_CAT(prefix, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__))
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/identity.hpp b/libcutl/cutl/details/boost/preprocessor/identity.hpp
deleted file mode 100644
index cec0fda..0000000
--- a/libcutl/cutl/details/boost/preprocessor/identity.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_IDENTITY_HPP
-# define BOOST_PREPROCESSOR_IDENTITY_HPP
-#
-# include <cutl/details/boost/preprocessor/facilities/identity.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/inc.hpp b/libcutl/cutl/details/boost/preprocessor/inc.hpp
deleted file mode 100644
index ac6921e..0000000
--- a/libcutl/cutl/details/boost/preprocessor/inc.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_INC_HPP
-# define BOOST_PREPROCESSOR_INC_HPP
-#
-# include <cutl/details/boost/preprocessor/arithmetic/inc.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iterate.hpp b/libcutl/cutl/details/boost/preprocessor/iterate.hpp
deleted file mode 100644
index 6d429f3..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iterate.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ITERATE_HPP
-# define BOOST_PREPROCESSOR_ITERATE_HPP
-#
-# include <cutl/details/boost/preprocessor/iteration/iterate.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower1.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower1.hpp
deleted file mode 100644
index d3068b8..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower1.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_ITERATION_START_1
-#
-# undef BOOST_PP_ITERATION_START_1_DIGIT_1
-# undef BOOST_PP_ITERATION_START_1_DIGIT_2
-# undef BOOST_PP_ITERATION_START_1_DIGIT_3
-# undef BOOST_PP_ITERATION_START_1_DIGIT_4
-# undef BOOST_PP_ITERATION_START_1_DIGIT_5
-# undef BOOST_PP_ITERATION_START_1_DIGIT_6
-# undef BOOST_PP_ITERATION_START_1_DIGIT_7
-# undef BOOST_PP_ITERATION_START_1_DIGIT_8
-# undef BOOST_PP_ITERATION_START_1_DIGIT_9
-# undef BOOST_PP_ITERATION_START_1_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_ITERATION_START_1_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_ITERATION_START_1_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_ITERATION_START_1_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_ITERATION_START_1_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_ITERATION_START_1_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_ITERATION_START_1_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_ITERATION_START_1_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_ITERATION_START_1_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_ITERATION_START_1_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_ITERATION_START_1_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_ITERATION_START_1_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_ITERATION_START_1_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_ITERATION_START_1_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_ITERATION_START_1_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_ITERATION_START_1_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_ITERATION_START_1_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_ITERATION_START_1_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_ITERATION_START_1_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_ITERATION_START_1_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_ITERATION_START_1_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_ITERATION_START_1_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_ITERATION_START_1_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_ITERATION_START_1_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_ITERATION_START_1_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_ITERATION_START_1_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_ITERATION_START_1_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_ITERATION_START_1_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_ITERATION_START_1_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_ITERATION_START_1_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_ITERATION_START_1_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_ITERATION_START_1_DIGIT_3
-# define BOOST_PP_ITERATION_START_1 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_1_DIGIT_3, BOOST_PP_ITERATION_START_1_DIGIT_2, BOOST_PP_ITERATION_START_1_DIGIT_1)
-# elif BOOST_PP_ITERATION_START_1_DIGIT_2
-# define BOOST_PP_ITERATION_START_1 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_1_DIGIT_2, BOOST_PP_ITERATION_START_1_DIGIT_1)
-# else
-# define BOOST_PP_ITERATION_START_1 BOOST_PP_ITERATION_START_1_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower2.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower2.hpp
deleted file mode 100644
index 63518ff..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower2.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_ITERATION_START_2
-#
-# undef BOOST_PP_ITERATION_START_2_DIGIT_1
-# undef BOOST_PP_ITERATION_START_2_DIGIT_2
-# undef BOOST_PP_ITERATION_START_2_DIGIT_3
-# undef BOOST_PP_ITERATION_START_2_DIGIT_4
-# undef BOOST_PP_ITERATION_START_2_DIGIT_5
-# undef BOOST_PP_ITERATION_START_2_DIGIT_6
-# undef BOOST_PP_ITERATION_START_2_DIGIT_7
-# undef BOOST_PP_ITERATION_START_2_DIGIT_8
-# undef BOOST_PP_ITERATION_START_2_DIGIT_9
-# undef BOOST_PP_ITERATION_START_2_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_ITERATION_START_2_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_ITERATION_START_2_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_ITERATION_START_2_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_ITERATION_START_2_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_ITERATION_START_2_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_ITERATION_START_2_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_ITERATION_START_2_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_ITERATION_START_2_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_ITERATION_START_2_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_ITERATION_START_2_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_ITERATION_START_2_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_ITERATION_START_2_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_ITERATION_START_2_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_ITERATION_START_2_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_ITERATION_START_2_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_ITERATION_START_2_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_ITERATION_START_2_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_ITERATION_START_2_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_ITERATION_START_2_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_ITERATION_START_2_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_ITERATION_START_2_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_ITERATION_START_2_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_ITERATION_START_2_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_ITERATION_START_2_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_ITERATION_START_2_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_ITERATION_START_2_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_ITERATION_START_2_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_ITERATION_START_2_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_ITERATION_START_2_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_ITERATION_START_2_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_ITERATION_START_2_DIGIT_3
-# define BOOST_PP_ITERATION_START_2 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_2_DIGIT_3, BOOST_PP_ITERATION_START_2_DIGIT_2, BOOST_PP_ITERATION_START_2_DIGIT_1)
-# elif BOOST_PP_ITERATION_START_2_DIGIT_2
-# define BOOST_PP_ITERATION_START_2 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_2_DIGIT_2, BOOST_PP_ITERATION_START_2_DIGIT_1)
-# else
-# define BOOST_PP_ITERATION_START_2 BOOST_PP_ITERATION_START_2_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower3.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower3.hpp
deleted file mode 100644
index 0a1b535..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower3.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_ITERATION_START_3
-#
-# undef BOOST_PP_ITERATION_START_3_DIGIT_1
-# undef BOOST_PP_ITERATION_START_3_DIGIT_2
-# undef BOOST_PP_ITERATION_START_3_DIGIT_3
-# undef BOOST_PP_ITERATION_START_3_DIGIT_4
-# undef BOOST_PP_ITERATION_START_3_DIGIT_5
-# undef BOOST_PP_ITERATION_START_3_DIGIT_6
-# undef BOOST_PP_ITERATION_START_3_DIGIT_7
-# undef BOOST_PP_ITERATION_START_3_DIGIT_8
-# undef BOOST_PP_ITERATION_START_3_DIGIT_9
-# undef BOOST_PP_ITERATION_START_3_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_ITERATION_START_3_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_ITERATION_START_3_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_ITERATION_START_3_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_ITERATION_START_3_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_ITERATION_START_3_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_ITERATION_START_3_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_ITERATION_START_3_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_ITERATION_START_3_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_ITERATION_START_3_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_ITERATION_START_3_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_ITERATION_START_3_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_ITERATION_START_3_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_ITERATION_START_3_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_ITERATION_START_3_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_ITERATION_START_3_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_ITERATION_START_3_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_ITERATION_START_3_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_ITERATION_START_3_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_ITERATION_START_3_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_ITERATION_START_3_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_ITERATION_START_3_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_ITERATION_START_3_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_ITERATION_START_3_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_ITERATION_START_3_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_ITERATION_START_3_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_ITERATION_START_3_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_ITERATION_START_3_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_ITERATION_START_3_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_ITERATION_START_3_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_ITERATION_START_3_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_ITERATION_START_3_DIGIT_3
-# define BOOST_PP_ITERATION_START_3 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_3_DIGIT_3, BOOST_PP_ITERATION_START_3_DIGIT_2, BOOST_PP_ITERATION_START_3_DIGIT_1)
-# elif BOOST_PP_ITERATION_START_3_DIGIT_2
-# define BOOST_PP_ITERATION_START_3 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_3_DIGIT_2, BOOST_PP_ITERATION_START_3_DIGIT_1)
-# else
-# define BOOST_PP_ITERATION_START_3 BOOST_PP_ITERATION_START_3_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower4.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower4.hpp
deleted file mode 100644
index 2651d49..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower4.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_ITERATION_START_4
-#
-# undef BOOST_PP_ITERATION_START_4_DIGIT_1
-# undef BOOST_PP_ITERATION_START_4_DIGIT_2
-# undef BOOST_PP_ITERATION_START_4_DIGIT_3
-# undef BOOST_PP_ITERATION_START_4_DIGIT_4
-# undef BOOST_PP_ITERATION_START_4_DIGIT_5
-# undef BOOST_PP_ITERATION_START_4_DIGIT_6
-# undef BOOST_PP_ITERATION_START_4_DIGIT_7
-# undef BOOST_PP_ITERATION_START_4_DIGIT_8
-# undef BOOST_PP_ITERATION_START_4_DIGIT_9
-# undef BOOST_PP_ITERATION_START_4_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_ITERATION_START_4_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_ITERATION_START_4_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_ITERATION_START_4_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_ITERATION_START_4_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_ITERATION_START_4_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_ITERATION_START_4_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_ITERATION_START_4_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_ITERATION_START_4_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_ITERATION_START_4_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_ITERATION_START_4_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_ITERATION_START_4_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_ITERATION_START_4_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_ITERATION_START_4_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_ITERATION_START_4_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_ITERATION_START_4_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_ITERATION_START_4_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_ITERATION_START_4_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_ITERATION_START_4_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_ITERATION_START_4_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_ITERATION_START_4_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_ITERATION_START_4_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_ITERATION_START_4_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_ITERATION_START_4_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_ITERATION_START_4_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_ITERATION_START_4_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_ITERATION_START_4_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_ITERATION_START_4_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_ITERATION_START_4_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_ITERATION_START_4_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_ITERATION_START_4_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_ITERATION_START_4_DIGIT_3
-# define BOOST_PP_ITERATION_START_4 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_4_DIGIT_3, BOOST_PP_ITERATION_START_4_DIGIT_2, BOOST_PP_ITERATION_START_4_DIGIT_1)
-# elif BOOST_PP_ITERATION_START_4_DIGIT_2
-# define BOOST_PP_ITERATION_START_4 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_4_DIGIT_2, BOOST_PP_ITERATION_START_4_DIGIT_1)
-# else
-# define BOOST_PP_ITERATION_START_4 BOOST_PP_ITERATION_START_4_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower5.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower5.hpp
deleted file mode 100644
index ebac1be..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/lower5.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_ITERATION_START_5
-#
-# undef BOOST_PP_ITERATION_START_5_DIGIT_1
-# undef BOOST_PP_ITERATION_START_5_DIGIT_2
-# undef BOOST_PP_ITERATION_START_5_DIGIT_3
-# undef BOOST_PP_ITERATION_START_5_DIGIT_4
-# undef BOOST_PP_ITERATION_START_5_DIGIT_5
-# undef BOOST_PP_ITERATION_START_5_DIGIT_6
-# undef BOOST_PP_ITERATION_START_5_DIGIT_7
-# undef BOOST_PP_ITERATION_START_5_DIGIT_8
-# undef BOOST_PP_ITERATION_START_5_DIGIT_9
-# undef BOOST_PP_ITERATION_START_5_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_ITERATION_START_5_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_ITERATION_START_5_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_ITERATION_START_5_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_ITERATION_START_5_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_ITERATION_START_5_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_ITERATION_START_5_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_ITERATION_START_5_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_ITERATION_START_5_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_ITERATION_START_5_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_ITERATION_START_5_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_ITERATION_START_5_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_ITERATION_START_5_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_ITERATION_START_5_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_ITERATION_START_5_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_ITERATION_START_5_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_ITERATION_START_5_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_ITERATION_START_5_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_ITERATION_START_5_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_ITERATION_START_5_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_ITERATION_START_5_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_ITERATION_START_5_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_ITERATION_START_5_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_ITERATION_START_5_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_ITERATION_START_5_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_ITERATION_START_5_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_ITERATION_START_5_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_ITERATION_START_5_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_ITERATION_START_5_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_ITERATION_START_5_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_ITERATION_START_5_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_ITERATION_START_5_DIGIT_3
-# define BOOST_PP_ITERATION_START_5 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_5_DIGIT_3, BOOST_PP_ITERATION_START_5_DIGIT_2, BOOST_PP_ITERATION_START_5_DIGIT_1)
-# elif BOOST_PP_ITERATION_START_5_DIGIT_2
-# define BOOST_PP_ITERATION_START_5 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_5_DIGIT_2, BOOST_PP_ITERATION_START_5_DIGIT_1)
-# else
-# define BOOST_PP_ITERATION_START_5 BOOST_PP_ITERATION_START_5_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper1.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper1.hpp
deleted file mode 100644
index 760228e..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper1.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_ITERATION_FINISH_1
-#
-# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_1
-# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_2
-# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_3
-# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_4
-# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_5
-# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_6
-# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_7
-# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_8
-# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_9
-# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_ITERATION_FINISH_1_DIGIT_3
-# define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_1_DIGIT_3, BOOST_PP_ITERATION_FINISH_1_DIGIT_2, BOOST_PP_ITERATION_FINISH_1_DIGIT_1)
-# elif BOOST_PP_ITERATION_FINISH_1_DIGIT_2
-# define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_1_DIGIT_2, BOOST_PP_ITERATION_FINISH_1_DIGIT_1)
-# else
-# define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_ITERATION_FINISH_1_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper2.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper2.hpp
deleted file mode 100644
index 7df7ab0..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper2.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_ITERATION_FINISH_2
-#
-# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_1
-# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_2
-# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_3
-# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_4
-# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_5
-# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_6
-# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_7
-# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_8
-# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_9
-# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_ITERATION_FINISH_2_DIGIT_3
-# define BOOST_PP_ITERATION_FINISH_2 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_2_DIGIT_3, BOOST_PP_ITERATION_FINISH_2_DIGIT_2, BOOST_PP_ITERATION_FINISH_2_DIGIT_1)
-# elif BOOST_PP_ITERATION_FINISH_2_DIGIT_2
-# define BOOST_PP_ITERATION_FINISH_2 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_2_DIGIT_2, BOOST_PP_ITERATION_FINISH_2_DIGIT_1)
-# else
-# define BOOST_PP_ITERATION_FINISH_2 BOOST_PP_ITERATION_FINISH_2_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper3.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper3.hpp
deleted file mode 100644
index 9f8de5c..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper3.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_ITERATION_FINISH_3
-#
-# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_1
-# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_2
-# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_3
-# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_4
-# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_5
-# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_6
-# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_7
-# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_8
-# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_9
-# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_ITERATION_FINISH_3_DIGIT_3
-# define BOOST_PP_ITERATION_FINISH_3 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_3_DIGIT_3, BOOST_PP_ITERATION_FINISH_3_DIGIT_2, BOOST_PP_ITERATION_FINISH_3_DIGIT_1)
-# elif BOOST_PP_ITERATION_FINISH_3_DIGIT_2
-# define BOOST_PP_ITERATION_FINISH_3 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_3_DIGIT_2, BOOST_PP_ITERATION_FINISH_3_DIGIT_1)
-# else
-# define BOOST_PP_ITERATION_FINISH_3 BOOST_PP_ITERATION_FINISH_3_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper4.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper4.hpp
deleted file mode 100644
index 9de213c..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper4.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_ITERATION_FINISH_4
-#
-# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_1
-# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_2
-# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_3
-# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_4
-# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_5
-# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_6
-# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_7
-# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_8
-# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_9
-# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_ITERATION_FINISH_4_DIGIT_3
-# define BOOST_PP_ITERATION_FINISH_4 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_4_DIGIT_3, BOOST_PP_ITERATION_FINISH_4_DIGIT_2, BOOST_PP_ITERATION_FINISH_4_DIGIT_1)
-# elif BOOST_PP_ITERATION_FINISH_4_DIGIT_2
-# define BOOST_PP_ITERATION_FINISH_4 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_4_DIGIT_2, BOOST_PP_ITERATION_FINISH_4_DIGIT_1)
-# else
-# define BOOST_PP_ITERATION_FINISH_4 BOOST_PP_ITERATION_FINISH_4_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper5.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper5.hpp
deleted file mode 100644
index 5944626..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/bounds/upper5.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_ITERATION_FINISH_5
-#
-# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_1
-# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_2
-# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_3
-# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_4
-# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_5
-# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_6
-# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_7
-# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_8
-# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_9
-# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_ITERATION_FINISH_5_DIGIT_3
-# define BOOST_PP_ITERATION_FINISH_5 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_5_DIGIT_3, BOOST_PP_ITERATION_FINISH_5_DIGIT_2, BOOST_PP_ITERATION_FINISH_5_DIGIT_1)
-# elif BOOST_PP_ITERATION_FINISH_5_DIGIT_2
-# define BOOST_PP_ITERATION_FINISH_5 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_5_DIGIT_2, BOOST_PP_ITERATION_FINISH_5_DIGIT_1)
-# else
-# define BOOST_PP_ITERATION_FINISH_5 BOOST_PP_ITERATION_FINISH_5_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/finish.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/finish.hpp
deleted file mode 100644
index 47c825a..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/finish.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_LOCAL_FE
-#
-# undef BOOST_PP_LOCAL_FE_DIGIT_1
-# undef BOOST_PP_LOCAL_FE_DIGIT_2
-# undef BOOST_PP_LOCAL_FE_DIGIT_3
-# undef BOOST_PP_LOCAL_FE_DIGIT_4
-# undef BOOST_PP_LOCAL_FE_DIGIT_5
-# undef BOOST_PP_LOCAL_FE_DIGIT_6
-# undef BOOST_PP_LOCAL_FE_DIGIT_7
-# undef BOOST_PP_LOCAL_FE_DIGIT_8
-# undef BOOST_PP_LOCAL_FE_DIGIT_9
-# undef BOOST_PP_LOCAL_FE_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_LOCAL_FE_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_LOCAL_FE_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_LOCAL_FE_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_LOCAL_FE_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_LOCAL_FE_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_LOCAL_FE_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_LOCAL_FE_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_LOCAL_FE_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_LOCAL_FE_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_LOCAL_FE_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_LOCAL_FE_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_LOCAL_FE_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_LOCAL_FE_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_LOCAL_FE_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_LOCAL_FE_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_LOCAL_FE_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_LOCAL_FE_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_LOCAL_FE_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_LOCAL_FE_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_LOCAL_FE_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_LOCAL_FE_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_LOCAL_FE_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_LOCAL_FE_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_LOCAL_FE_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_LOCAL_FE_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_LOCAL_FE_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_LOCAL_FE_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_LOCAL_FE_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_LOCAL_FE_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_LOCAL_FE_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_LOCAL_FE_DIGIT_3
-# define BOOST_PP_LOCAL_FE() BOOST_PP_SLOT_CC_3(BOOST_PP_LOCAL_FE_DIGIT_3, BOOST_PP_LOCAL_FE_DIGIT_2, BOOST_PP_LOCAL_FE_DIGIT_1)
-# elif BOOST_PP_LOCAL_FE_DIGIT_2
-# define BOOST_PP_LOCAL_FE() BOOST_PP_SLOT_CC_2(BOOST_PP_LOCAL_FE_DIGIT_2, BOOST_PP_LOCAL_FE_DIGIT_1)
-# else
-# define BOOST_PP_LOCAL_FE() BOOST_PP_LOCAL_FE_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward1.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward1.hpp
deleted file mode 100644
index cfc6739..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward1.hpp
+++ /dev/null
@@ -1,1342 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if defined(BOOST_PP_ITERATION_LIMITS)
-# if !defined(BOOST_PP_FILENAME_1)
-# error BOOST_PP_ERROR: depth #1 filename is not defined
-# endif
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/lower1.hpp>
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/upper1.hpp>
-# define BOOST_PP_ITERATION_FLAGS_1() 0
-# undef BOOST_PP_ITERATION_LIMITS
-# elif defined(BOOST_PP_ITERATION_PARAMS_1)
-# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_1)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/lower1.hpp>
-# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_1)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/upper1.hpp>
-# define BOOST_PP_FILENAME_1 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_1)
-# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_1) >= 4
-# define BOOST_PP_ITERATION_FLAGS_1() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_1)
-# else
-# define BOOST_PP_ITERATION_FLAGS_1() 0
-# endif
-# else
-# error BOOST_PP_ERROR: depth #1 iteration boundaries or filename not defined
-# endif
-#
-# undef BOOST_PP_ITERATION_DEPTH
-# define BOOST_PP_ITERATION_DEPTH() 1
-#
-# define BOOST_PP_IS_ITERATING 1
-#
-# if (BOOST_PP_ITERATION_START_1) > (BOOST_PP_ITERATION_FINISH_1)
-# include <cutl/details/boost/preprocessor/iteration/detail/iter/reverse1.hpp>
-# else
-# if BOOST_PP_ITERATION_START_1 <= 0 && BOOST_PP_ITERATION_FINISH_1 >= 0
-# define BOOST_PP_ITERATION_1 0
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 1 && BOOST_PP_ITERATION_FINISH_1 >= 1
-# define BOOST_PP_ITERATION_1 1
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 2 && BOOST_PP_ITERATION_FINISH_1 >= 2
-# define BOOST_PP_ITERATION_1 2
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 3 && BOOST_PP_ITERATION_FINISH_1 >= 3
-# define BOOST_PP_ITERATION_1 3
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 4 && BOOST_PP_ITERATION_FINISH_1 >= 4
-# define BOOST_PP_ITERATION_1 4
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 5 && BOOST_PP_ITERATION_FINISH_1 >= 5
-# define BOOST_PP_ITERATION_1 5
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 6 && BOOST_PP_ITERATION_FINISH_1 >= 6
-# define BOOST_PP_ITERATION_1 6
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 7 && BOOST_PP_ITERATION_FINISH_1 >= 7
-# define BOOST_PP_ITERATION_1 7
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 8 && BOOST_PP_ITERATION_FINISH_1 >= 8
-# define BOOST_PP_ITERATION_1 8
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 9 && BOOST_PP_ITERATION_FINISH_1 >= 9
-# define BOOST_PP_ITERATION_1 9
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 10 && BOOST_PP_ITERATION_FINISH_1 >= 10
-# define BOOST_PP_ITERATION_1 10
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 11 && BOOST_PP_ITERATION_FINISH_1 >= 11
-# define BOOST_PP_ITERATION_1 11
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 12 && BOOST_PP_ITERATION_FINISH_1 >= 12
-# define BOOST_PP_ITERATION_1 12
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 13 && BOOST_PP_ITERATION_FINISH_1 >= 13
-# define BOOST_PP_ITERATION_1 13
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 14 && BOOST_PP_ITERATION_FINISH_1 >= 14
-# define BOOST_PP_ITERATION_1 14
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 15 && BOOST_PP_ITERATION_FINISH_1 >= 15
-# define BOOST_PP_ITERATION_1 15
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 16 && BOOST_PP_ITERATION_FINISH_1 >= 16
-# define BOOST_PP_ITERATION_1 16
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 17 && BOOST_PP_ITERATION_FINISH_1 >= 17
-# define BOOST_PP_ITERATION_1 17
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 18 && BOOST_PP_ITERATION_FINISH_1 >= 18
-# define BOOST_PP_ITERATION_1 18
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 19 && BOOST_PP_ITERATION_FINISH_1 >= 19
-# define BOOST_PP_ITERATION_1 19
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 20 && BOOST_PP_ITERATION_FINISH_1 >= 20
-# define BOOST_PP_ITERATION_1 20
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 21 && BOOST_PP_ITERATION_FINISH_1 >= 21
-# define BOOST_PP_ITERATION_1 21
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 22 && BOOST_PP_ITERATION_FINISH_1 >= 22
-# define BOOST_PP_ITERATION_1 22
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 23 && BOOST_PP_ITERATION_FINISH_1 >= 23
-# define BOOST_PP_ITERATION_1 23
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 24 && BOOST_PP_ITERATION_FINISH_1 >= 24
-# define BOOST_PP_ITERATION_1 24
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 25 && BOOST_PP_ITERATION_FINISH_1 >= 25
-# define BOOST_PP_ITERATION_1 25
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 26 && BOOST_PP_ITERATION_FINISH_1 >= 26
-# define BOOST_PP_ITERATION_1 26
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 27 && BOOST_PP_ITERATION_FINISH_1 >= 27
-# define BOOST_PP_ITERATION_1 27
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 28 && BOOST_PP_ITERATION_FINISH_1 >= 28
-# define BOOST_PP_ITERATION_1 28
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 29 && BOOST_PP_ITERATION_FINISH_1 >= 29
-# define BOOST_PP_ITERATION_1 29
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 30 && BOOST_PP_ITERATION_FINISH_1 >= 30
-# define BOOST_PP_ITERATION_1 30
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 31 && BOOST_PP_ITERATION_FINISH_1 >= 31
-# define BOOST_PP_ITERATION_1 31
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 32 && BOOST_PP_ITERATION_FINISH_1 >= 32
-# define BOOST_PP_ITERATION_1 32
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 33 && BOOST_PP_ITERATION_FINISH_1 >= 33
-# define BOOST_PP_ITERATION_1 33
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 34 && BOOST_PP_ITERATION_FINISH_1 >= 34
-# define BOOST_PP_ITERATION_1 34
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 35 && BOOST_PP_ITERATION_FINISH_1 >= 35
-# define BOOST_PP_ITERATION_1 35
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 36 && BOOST_PP_ITERATION_FINISH_1 >= 36
-# define BOOST_PP_ITERATION_1 36
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 37 && BOOST_PP_ITERATION_FINISH_1 >= 37
-# define BOOST_PP_ITERATION_1 37
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 38 && BOOST_PP_ITERATION_FINISH_1 >= 38
-# define BOOST_PP_ITERATION_1 38
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 39 && BOOST_PP_ITERATION_FINISH_1 >= 39
-# define BOOST_PP_ITERATION_1 39
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 40 && BOOST_PP_ITERATION_FINISH_1 >= 40
-# define BOOST_PP_ITERATION_1 40
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 41 && BOOST_PP_ITERATION_FINISH_1 >= 41
-# define BOOST_PP_ITERATION_1 41
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 42 && BOOST_PP_ITERATION_FINISH_1 >= 42
-# define BOOST_PP_ITERATION_1 42
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 43 && BOOST_PP_ITERATION_FINISH_1 >= 43
-# define BOOST_PP_ITERATION_1 43
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 44 && BOOST_PP_ITERATION_FINISH_1 >= 44
-# define BOOST_PP_ITERATION_1 44
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 45 && BOOST_PP_ITERATION_FINISH_1 >= 45
-# define BOOST_PP_ITERATION_1 45
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 46 && BOOST_PP_ITERATION_FINISH_1 >= 46
-# define BOOST_PP_ITERATION_1 46
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 47 && BOOST_PP_ITERATION_FINISH_1 >= 47
-# define BOOST_PP_ITERATION_1 47
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 48 && BOOST_PP_ITERATION_FINISH_1 >= 48
-# define BOOST_PP_ITERATION_1 48
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 49 && BOOST_PP_ITERATION_FINISH_1 >= 49
-# define BOOST_PP_ITERATION_1 49
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 50 && BOOST_PP_ITERATION_FINISH_1 >= 50
-# define BOOST_PP_ITERATION_1 50
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 51 && BOOST_PP_ITERATION_FINISH_1 >= 51
-# define BOOST_PP_ITERATION_1 51
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 52 && BOOST_PP_ITERATION_FINISH_1 >= 52
-# define BOOST_PP_ITERATION_1 52
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 53 && BOOST_PP_ITERATION_FINISH_1 >= 53
-# define BOOST_PP_ITERATION_1 53
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 54 && BOOST_PP_ITERATION_FINISH_1 >= 54
-# define BOOST_PP_ITERATION_1 54
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 55 && BOOST_PP_ITERATION_FINISH_1 >= 55
-# define BOOST_PP_ITERATION_1 55
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 56 && BOOST_PP_ITERATION_FINISH_1 >= 56
-# define BOOST_PP_ITERATION_1 56
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 57 && BOOST_PP_ITERATION_FINISH_1 >= 57
-# define BOOST_PP_ITERATION_1 57
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 58 && BOOST_PP_ITERATION_FINISH_1 >= 58
-# define BOOST_PP_ITERATION_1 58
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 59 && BOOST_PP_ITERATION_FINISH_1 >= 59
-# define BOOST_PP_ITERATION_1 59
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 60 && BOOST_PP_ITERATION_FINISH_1 >= 60
-# define BOOST_PP_ITERATION_1 60
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 61 && BOOST_PP_ITERATION_FINISH_1 >= 61
-# define BOOST_PP_ITERATION_1 61
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 62 && BOOST_PP_ITERATION_FINISH_1 >= 62
-# define BOOST_PP_ITERATION_1 62
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 63 && BOOST_PP_ITERATION_FINISH_1 >= 63
-# define BOOST_PP_ITERATION_1 63
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 64 && BOOST_PP_ITERATION_FINISH_1 >= 64
-# define BOOST_PP_ITERATION_1 64
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 65 && BOOST_PP_ITERATION_FINISH_1 >= 65
-# define BOOST_PP_ITERATION_1 65
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 66 && BOOST_PP_ITERATION_FINISH_1 >= 66
-# define BOOST_PP_ITERATION_1 66
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 67 && BOOST_PP_ITERATION_FINISH_1 >= 67
-# define BOOST_PP_ITERATION_1 67
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 68 && BOOST_PP_ITERATION_FINISH_1 >= 68
-# define BOOST_PP_ITERATION_1 68
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 69 && BOOST_PP_ITERATION_FINISH_1 >= 69
-# define BOOST_PP_ITERATION_1 69
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 70 && BOOST_PP_ITERATION_FINISH_1 >= 70
-# define BOOST_PP_ITERATION_1 70
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 71 && BOOST_PP_ITERATION_FINISH_1 >= 71
-# define BOOST_PP_ITERATION_1 71
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 72 && BOOST_PP_ITERATION_FINISH_1 >= 72
-# define BOOST_PP_ITERATION_1 72
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 73 && BOOST_PP_ITERATION_FINISH_1 >= 73
-# define BOOST_PP_ITERATION_1 73
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 74 && BOOST_PP_ITERATION_FINISH_1 >= 74
-# define BOOST_PP_ITERATION_1 74
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 75 && BOOST_PP_ITERATION_FINISH_1 >= 75
-# define BOOST_PP_ITERATION_1 75
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 76 && BOOST_PP_ITERATION_FINISH_1 >= 76
-# define BOOST_PP_ITERATION_1 76
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 77 && BOOST_PP_ITERATION_FINISH_1 >= 77
-# define BOOST_PP_ITERATION_1 77
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 78 && BOOST_PP_ITERATION_FINISH_1 >= 78
-# define BOOST_PP_ITERATION_1 78
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 79 && BOOST_PP_ITERATION_FINISH_1 >= 79
-# define BOOST_PP_ITERATION_1 79
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 80 && BOOST_PP_ITERATION_FINISH_1 >= 80
-# define BOOST_PP_ITERATION_1 80
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 81 && BOOST_PP_ITERATION_FINISH_1 >= 81
-# define BOOST_PP_ITERATION_1 81
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 82 && BOOST_PP_ITERATION_FINISH_1 >= 82
-# define BOOST_PP_ITERATION_1 82
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 83 && BOOST_PP_ITERATION_FINISH_1 >= 83
-# define BOOST_PP_ITERATION_1 83
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 84 && BOOST_PP_ITERATION_FINISH_1 >= 84
-# define BOOST_PP_ITERATION_1 84
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 85 && BOOST_PP_ITERATION_FINISH_1 >= 85
-# define BOOST_PP_ITERATION_1 85
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 86 && BOOST_PP_ITERATION_FINISH_1 >= 86
-# define BOOST_PP_ITERATION_1 86
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 87 && BOOST_PP_ITERATION_FINISH_1 >= 87
-# define BOOST_PP_ITERATION_1 87
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 88 && BOOST_PP_ITERATION_FINISH_1 >= 88
-# define BOOST_PP_ITERATION_1 88
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 89 && BOOST_PP_ITERATION_FINISH_1 >= 89
-# define BOOST_PP_ITERATION_1 89
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 90 && BOOST_PP_ITERATION_FINISH_1 >= 90
-# define BOOST_PP_ITERATION_1 90
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 91 && BOOST_PP_ITERATION_FINISH_1 >= 91
-# define BOOST_PP_ITERATION_1 91
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 92 && BOOST_PP_ITERATION_FINISH_1 >= 92
-# define BOOST_PP_ITERATION_1 92
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 93 && BOOST_PP_ITERATION_FINISH_1 >= 93
-# define BOOST_PP_ITERATION_1 93
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 94 && BOOST_PP_ITERATION_FINISH_1 >= 94
-# define BOOST_PP_ITERATION_1 94
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 95 && BOOST_PP_ITERATION_FINISH_1 >= 95
-# define BOOST_PP_ITERATION_1 95
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 96 && BOOST_PP_ITERATION_FINISH_1 >= 96
-# define BOOST_PP_ITERATION_1 96
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 97 && BOOST_PP_ITERATION_FINISH_1 >= 97
-# define BOOST_PP_ITERATION_1 97
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 98 && BOOST_PP_ITERATION_FINISH_1 >= 98
-# define BOOST_PP_ITERATION_1 98
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 99 && BOOST_PP_ITERATION_FINISH_1 >= 99
-# define BOOST_PP_ITERATION_1 99
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 100 && BOOST_PP_ITERATION_FINISH_1 >= 100
-# define BOOST_PP_ITERATION_1 100
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 101 && BOOST_PP_ITERATION_FINISH_1 >= 101
-# define BOOST_PP_ITERATION_1 101
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 102 && BOOST_PP_ITERATION_FINISH_1 >= 102
-# define BOOST_PP_ITERATION_1 102
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 103 && BOOST_PP_ITERATION_FINISH_1 >= 103
-# define BOOST_PP_ITERATION_1 103
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 104 && BOOST_PP_ITERATION_FINISH_1 >= 104
-# define BOOST_PP_ITERATION_1 104
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 105 && BOOST_PP_ITERATION_FINISH_1 >= 105
-# define BOOST_PP_ITERATION_1 105
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 106 && BOOST_PP_ITERATION_FINISH_1 >= 106
-# define BOOST_PP_ITERATION_1 106
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 107 && BOOST_PP_ITERATION_FINISH_1 >= 107
-# define BOOST_PP_ITERATION_1 107
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 108 && BOOST_PP_ITERATION_FINISH_1 >= 108
-# define BOOST_PP_ITERATION_1 108
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 109 && BOOST_PP_ITERATION_FINISH_1 >= 109
-# define BOOST_PP_ITERATION_1 109
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 110 && BOOST_PP_ITERATION_FINISH_1 >= 110
-# define BOOST_PP_ITERATION_1 110
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 111 && BOOST_PP_ITERATION_FINISH_1 >= 111
-# define BOOST_PP_ITERATION_1 111
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 112 && BOOST_PP_ITERATION_FINISH_1 >= 112
-# define BOOST_PP_ITERATION_1 112
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 113 && BOOST_PP_ITERATION_FINISH_1 >= 113
-# define BOOST_PP_ITERATION_1 113
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 114 && BOOST_PP_ITERATION_FINISH_1 >= 114
-# define BOOST_PP_ITERATION_1 114
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 115 && BOOST_PP_ITERATION_FINISH_1 >= 115
-# define BOOST_PP_ITERATION_1 115
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 116 && BOOST_PP_ITERATION_FINISH_1 >= 116
-# define BOOST_PP_ITERATION_1 116
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 117 && BOOST_PP_ITERATION_FINISH_1 >= 117
-# define BOOST_PP_ITERATION_1 117
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 118 && BOOST_PP_ITERATION_FINISH_1 >= 118
-# define BOOST_PP_ITERATION_1 118
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 119 && BOOST_PP_ITERATION_FINISH_1 >= 119
-# define BOOST_PP_ITERATION_1 119
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 120 && BOOST_PP_ITERATION_FINISH_1 >= 120
-# define BOOST_PP_ITERATION_1 120
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 121 && BOOST_PP_ITERATION_FINISH_1 >= 121
-# define BOOST_PP_ITERATION_1 121
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 122 && BOOST_PP_ITERATION_FINISH_1 >= 122
-# define BOOST_PP_ITERATION_1 122
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 123 && BOOST_PP_ITERATION_FINISH_1 >= 123
-# define BOOST_PP_ITERATION_1 123
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 124 && BOOST_PP_ITERATION_FINISH_1 >= 124
-# define BOOST_PP_ITERATION_1 124
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 125 && BOOST_PP_ITERATION_FINISH_1 >= 125
-# define BOOST_PP_ITERATION_1 125
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 126 && BOOST_PP_ITERATION_FINISH_1 >= 126
-# define BOOST_PP_ITERATION_1 126
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 127 && BOOST_PP_ITERATION_FINISH_1 >= 127
-# define BOOST_PP_ITERATION_1 127
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 128 && BOOST_PP_ITERATION_FINISH_1 >= 128
-# define BOOST_PP_ITERATION_1 128
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 129 && BOOST_PP_ITERATION_FINISH_1 >= 129
-# define BOOST_PP_ITERATION_1 129
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 130 && BOOST_PP_ITERATION_FINISH_1 >= 130
-# define BOOST_PP_ITERATION_1 130
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 131 && BOOST_PP_ITERATION_FINISH_1 >= 131
-# define BOOST_PP_ITERATION_1 131
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 132 && BOOST_PP_ITERATION_FINISH_1 >= 132
-# define BOOST_PP_ITERATION_1 132
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 133 && BOOST_PP_ITERATION_FINISH_1 >= 133
-# define BOOST_PP_ITERATION_1 133
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 134 && BOOST_PP_ITERATION_FINISH_1 >= 134
-# define BOOST_PP_ITERATION_1 134
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 135 && BOOST_PP_ITERATION_FINISH_1 >= 135
-# define BOOST_PP_ITERATION_1 135
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 136 && BOOST_PP_ITERATION_FINISH_1 >= 136
-# define BOOST_PP_ITERATION_1 136
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 137 && BOOST_PP_ITERATION_FINISH_1 >= 137
-# define BOOST_PP_ITERATION_1 137
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 138 && BOOST_PP_ITERATION_FINISH_1 >= 138
-# define BOOST_PP_ITERATION_1 138
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 139 && BOOST_PP_ITERATION_FINISH_1 >= 139
-# define BOOST_PP_ITERATION_1 139
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 140 && BOOST_PP_ITERATION_FINISH_1 >= 140
-# define BOOST_PP_ITERATION_1 140
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 141 && BOOST_PP_ITERATION_FINISH_1 >= 141
-# define BOOST_PP_ITERATION_1 141
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 142 && BOOST_PP_ITERATION_FINISH_1 >= 142
-# define BOOST_PP_ITERATION_1 142
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 143 && BOOST_PP_ITERATION_FINISH_1 >= 143
-# define BOOST_PP_ITERATION_1 143
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 144 && BOOST_PP_ITERATION_FINISH_1 >= 144
-# define BOOST_PP_ITERATION_1 144
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 145 && BOOST_PP_ITERATION_FINISH_1 >= 145
-# define BOOST_PP_ITERATION_1 145
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 146 && BOOST_PP_ITERATION_FINISH_1 >= 146
-# define BOOST_PP_ITERATION_1 146
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 147 && BOOST_PP_ITERATION_FINISH_1 >= 147
-# define BOOST_PP_ITERATION_1 147
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 148 && BOOST_PP_ITERATION_FINISH_1 >= 148
-# define BOOST_PP_ITERATION_1 148
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 149 && BOOST_PP_ITERATION_FINISH_1 >= 149
-# define BOOST_PP_ITERATION_1 149
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 150 && BOOST_PP_ITERATION_FINISH_1 >= 150
-# define BOOST_PP_ITERATION_1 150
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 151 && BOOST_PP_ITERATION_FINISH_1 >= 151
-# define BOOST_PP_ITERATION_1 151
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 152 && BOOST_PP_ITERATION_FINISH_1 >= 152
-# define BOOST_PP_ITERATION_1 152
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 153 && BOOST_PP_ITERATION_FINISH_1 >= 153
-# define BOOST_PP_ITERATION_1 153
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 154 && BOOST_PP_ITERATION_FINISH_1 >= 154
-# define BOOST_PP_ITERATION_1 154
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 155 && BOOST_PP_ITERATION_FINISH_1 >= 155
-# define BOOST_PP_ITERATION_1 155
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 156 && BOOST_PP_ITERATION_FINISH_1 >= 156
-# define BOOST_PP_ITERATION_1 156
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 157 && BOOST_PP_ITERATION_FINISH_1 >= 157
-# define BOOST_PP_ITERATION_1 157
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 158 && BOOST_PP_ITERATION_FINISH_1 >= 158
-# define BOOST_PP_ITERATION_1 158
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 159 && BOOST_PP_ITERATION_FINISH_1 >= 159
-# define BOOST_PP_ITERATION_1 159
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 160 && BOOST_PP_ITERATION_FINISH_1 >= 160
-# define BOOST_PP_ITERATION_1 160
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 161 && BOOST_PP_ITERATION_FINISH_1 >= 161
-# define BOOST_PP_ITERATION_1 161
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 162 && BOOST_PP_ITERATION_FINISH_1 >= 162
-# define BOOST_PP_ITERATION_1 162
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 163 && BOOST_PP_ITERATION_FINISH_1 >= 163
-# define BOOST_PP_ITERATION_1 163
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 164 && BOOST_PP_ITERATION_FINISH_1 >= 164
-# define BOOST_PP_ITERATION_1 164
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 165 && BOOST_PP_ITERATION_FINISH_1 >= 165
-# define BOOST_PP_ITERATION_1 165
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 166 && BOOST_PP_ITERATION_FINISH_1 >= 166
-# define BOOST_PP_ITERATION_1 166
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 167 && BOOST_PP_ITERATION_FINISH_1 >= 167
-# define BOOST_PP_ITERATION_1 167
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 168 && BOOST_PP_ITERATION_FINISH_1 >= 168
-# define BOOST_PP_ITERATION_1 168
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 169 && BOOST_PP_ITERATION_FINISH_1 >= 169
-# define BOOST_PP_ITERATION_1 169
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 170 && BOOST_PP_ITERATION_FINISH_1 >= 170
-# define BOOST_PP_ITERATION_1 170
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 171 && BOOST_PP_ITERATION_FINISH_1 >= 171
-# define BOOST_PP_ITERATION_1 171
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 172 && BOOST_PP_ITERATION_FINISH_1 >= 172
-# define BOOST_PP_ITERATION_1 172
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 173 && BOOST_PP_ITERATION_FINISH_1 >= 173
-# define BOOST_PP_ITERATION_1 173
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 174 && BOOST_PP_ITERATION_FINISH_1 >= 174
-# define BOOST_PP_ITERATION_1 174
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 175 && BOOST_PP_ITERATION_FINISH_1 >= 175
-# define BOOST_PP_ITERATION_1 175
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 176 && BOOST_PP_ITERATION_FINISH_1 >= 176
-# define BOOST_PP_ITERATION_1 176
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 177 && BOOST_PP_ITERATION_FINISH_1 >= 177
-# define BOOST_PP_ITERATION_1 177
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 178 && BOOST_PP_ITERATION_FINISH_1 >= 178
-# define BOOST_PP_ITERATION_1 178
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 179 && BOOST_PP_ITERATION_FINISH_1 >= 179
-# define BOOST_PP_ITERATION_1 179
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 180 && BOOST_PP_ITERATION_FINISH_1 >= 180
-# define BOOST_PP_ITERATION_1 180
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 181 && BOOST_PP_ITERATION_FINISH_1 >= 181
-# define BOOST_PP_ITERATION_1 181
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 182 && BOOST_PP_ITERATION_FINISH_1 >= 182
-# define BOOST_PP_ITERATION_1 182
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 183 && BOOST_PP_ITERATION_FINISH_1 >= 183
-# define BOOST_PP_ITERATION_1 183
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 184 && BOOST_PP_ITERATION_FINISH_1 >= 184
-# define BOOST_PP_ITERATION_1 184
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 185 && BOOST_PP_ITERATION_FINISH_1 >= 185
-# define BOOST_PP_ITERATION_1 185
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 186 && BOOST_PP_ITERATION_FINISH_1 >= 186
-# define BOOST_PP_ITERATION_1 186
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 187 && BOOST_PP_ITERATION_FINISH_1 >= 187
-# define BOOST_PP_ITERATION_1 187
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 188 && BOOST_PP_ITERATION_FINISH_1 >= 188
-# define BOOST_PP_ITERATION_1 188
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 189 && BOOST_PP_ITERATION_FINISH_1 >= 189
-# define BOOST_PP_ITERATION_1 189
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 190 && BOOST_PP_ITERATION_FINISH_1 >= 190
-# define BOOST_PP_ITERATION_1 190
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 191 && BOOST_PP_ITERATION_FINISH_1 >= 191
-# define BOOST_PP_ITERATION_1 191
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 192 && BOOST_PP_ITERATION_FINISH_1 >= 192
-# define BOOST_PP_ITERATION_1 192
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 193 && BOOST_PP_ITERATION_FINISH_1 >= 193
-# define BOOST_PP_ITERATION_1 193
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 194 && BOOST_PP_ITERATION_FINISH_1 >= 194
-# define BOOST_PP_ITERATION_1 194
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 195 && BOOST_PP_ITERATION_FINISH_1 >= 195
-# define BOOST_PP_ITERATION_1 195
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 196 && BOOST_PP_ITERATION_FINISH_1 >= 196
-# define BOOST_PP_ITERATION_1 196
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 197 && BOOST_PP_ITERATION_FINISH_1 >= 197
-# define BOOST_PP_ITERATION_1 197
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 198 && BOOST_PP_ITERATION_FINISH_1 >= 198
-# define BOOST_PP_ITERATION_1 198
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 199 && BOOST_PP_ITERATION_FINISH_1 >= 199
-# define BOOST_PP_ITERATION_1 199
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 200 && BOOST_PP_ITERATION_FINISH_1 >= 200
-# define BOOST_PP_ITERATION_1 200
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 201 && BOOST_PP_ITERATION_FINISH_1 >= 201
-# define BOOST_PP_ITERATION_1 201
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 202 && BOOST_PP_ITERATION_FINISH_1 >= 202
-# define BOOST_PP_ITERATION_1 202
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 203 && BOOST_PP_ITERATION_FINISH_1 >= 203
-# define BOOST_PP_ITERATION_1 203
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 204 && BOOST_PP_ITERATION_FINISH_1 >= 204
-# define BOOST_PP_ITERATION_1 204
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 205 && BOOST_PP_ITERATION_FINISH_1 >= 205
-# define BOOST_PP_ITERATION_1 205
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 206 && BOOST_PP_ITERATION_FINISH_1 >= 206
-# define BOOST_PP_ITERATION_1 206
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 207 && BOOST_PP_ITERATION_FINISH_1 >= 207
-# define BOOST_PP_ITERATION_1 207
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 208 && BOOST_PP_ITERATION_FINISH_1 >= 208
-# define BOOST_PP_ITERATION_1 208
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 209 && BOOST_PP_ITERATION_FINISH_1 >= 209
-# define BOOST_PP_ITERATION_1 209
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 210 && BOOST_PP_ITERATION_FINISH_1 >= 210
-# define BOOST_PP_ITERATION_1 210
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 211 && BOOST_PP_ITERATION_FINISH_1 >= 211
-# define BOOST_PP_ITERATION_1 211
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 212 && BOOST_PP_ITERATION_FINISH_1 >= 212
-# define BOOST_PP_ITERATION_1 212
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 213 && BOOST_PP_ITERATION_FINISH_1 >= 213
-# define BOOST_PP_ITERATION_1 213
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 214 && BOOST_PP_ITERATION_FINISH_1 >= 214
-# define BOOST_PP_ITERATION_1 214
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 215 && BOOST_PP_ITERATION_FINISH_1 >= 215
-# define BOOST_PP_ITERATION_1 215
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 216 && BOOST_PP_ITERATION_FINISH_1 >= 216
-# define BOOST_PP_ITERATION_1 216
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 217 && BOOST_PP_ITERATION_FINISH_1 >= 217
-# define BOOST_PP_ITERATION_1 217
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 218 && BOOST_PP_ITERATION_FINISH_1 >= 218
-# define BOOST_PP_ITERATION_1 218
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 219 && BOOST_PP_ITERATION_FINISH_1 >= 219
-# define BOOST_PP_ITERATION_1 219
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 220 && BOOST_PP_ITERATION_FINISH_1 >= 220
-# define BOOST_PP_ITERATION_1 220
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 221 && BOOST_PP_ITERATION_FINISH_1 >= 221
-# define BOOST_PP_ITERATION_1 221
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 222 && BOOST_PP_ITERATION_FINISH_1 >= 222
-# define BOOST_PP_ITERATION_1 222
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 223 && BOOST_PP_ITERATION_FINISH_1 >= 223
-# define BOOST_PP_ITERATION_1 223
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 224 && BOOST_PP_ITERATION_FINISH_1 >= 224
-# define BOOST_PP_ITERATION_1 224
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 225 && BOOST_PP_ITERATION_FINISH_1 >= 225
-# define BOOST_PP_ITERATION_1 225
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 226 && BOOST_PP_ITERATION_FINISH_1 >= 226
-# define BOOST_PP_ITERATION_1 226
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 227 && BOOST_PP_ITERATION_FINISH_1 >= 227
-# define BOOST_PP_ITERATION_1 227
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 228 && BOOST_PP_ITERATION_FINISH_1 >= 228
-# define BOOST_PP_ITERATION_1 228
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 229 && BOOST_PP_ITERATION_FINISH_1 >= 229
-# define BOOST_PP_ITERATION_1 229
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 230 && BOOST_PP_ITERATION_FINISH_1 >= 230
-# define BOOST_PP_ITERATION_1 230
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 231 && BOOST_PP_ITERATION_FINISH_1 >= 231
-# define BOOST_PP_ITERATION_1 231
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 232 && BOOST_PP_ITERATION_FINISH_1 >= 232
-# define BOOST_PP_ITERATION_1 232
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 233 && BOOST_PP_ITERATION_FINISH_1 >= 233
-# define BOOST_PP_ITERATION_1 233
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 234 && BOOST_PP_ITERATION_FINISH_1 >= 234
-# define BOOST_PP_ITERATION_1 234
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 235 && BOOST_PP_ITERATION_FINISH_1 >= 235
-# define BOOST_PP_ITERATION_1 235
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 236 && BOOST_PP_ITERATION_FINISH_1 >= 236
-# define BOOST_PP_ITERATION_1 236
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 237 && BOOST_PP_ITERATION_FINISH_1 >= 237
-# define BOOST_PP_ITERATION_1 237
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 238 && BOOST_PP_ITERATION_FINISH_1 >= 238
-# define BOOST_PP_ITERATION_1 238
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 239 && BOOST_PP_ITERATION_FINISH_1 >= 239
-# define BOOST_PP_ITERATION_1 239
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 240 && BOOST_PP_ITERATION_FINISH_1 >= 240
-# define BOOST_PP_ITERATION_1 240
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 241 && BOOST_PP_ITERATION_FINISH_1 >= 241
-# define BOOST_PP_ITERATION_1 241
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 242 && BOOST_PP_ITERATION_FINISH_1 >= 242
-# define BOOST_PP_ITERATION_1 242
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 243 && BOOST_PP_ITERATION_FINISH_1 >= 243
-# define BOOST_PP_ITERATION_1 243
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 244 && BOOST_PP_ITERATION_FINISH_1 >= 244
-# define BOOST_PP_ITERATION_1 244
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 245 && BOOST_PP_ITERATION_FINISH_1 >= 245
-# define BOOST_PP_ITERATION_1 245
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 246 && BOOST_PP_ITERATION_FINISH_1 >= 246
-# define BOOST_PP_ITERATION_1 246
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 247 && BOOST_PP_ITERATION_FINISH_1 >= 247
-# define BOOST_PP_ITERATION_1 247
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 248 && BOOST_PP_ITERATION_FINISH_1 >= 248
-# define BOOST_PP_ITERATION_1 248
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 249 && BOOST_PP_ITERATION_FINISH_1 >= 249
-# define BOOST_PP_ITERATION_1 249
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 250 && BOOST_PP_ITERATION_FINISH_1 >= 250
-# define BOOST_PP_ITERATION_1 250
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 251 && BOOST_PP_ITERATION_FINISH_1 >= 251
-# define BOOST_PP_ITERATION_1 251
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 252 && BOOST_PP_ITERATION_FINISH_1 >= 252
-# define BOOST_PP_ITERATION_1 252
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 253 && BOOST_PP_ITERATION_FINISH_1 >= 253
-# define BOOST_PP_ITERATION_1 253
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 254 && BOOST_PP_ITERATION_FINISH_1 >= 254
-# define BOOST_PP_ITERATION_1 254
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 255 && BOOST_PP_ITERATION_FINISH_1 >= 255
-# define BOOST_PP_ITERATION_1 255
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_START_1 <= 256 && BOOST_PP_ITERATION_FINISH_1 >= 256
-# define BOOST_PP_ITERATION_1 256
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# endif
-#
-# undef BOOST_PP_IS_ITERATING
-#
-# undef BOOST_PP_ITERATION_DEPTH
-# define BOOST_PP_ITERATION_DEPTH() 0
-#
-# undef BOOST_PP_ITERATION_START_1
-# undef BOOST_PP_ITERATION_FINISH_1
-# undef BOOST_PP_FILENAME_1
-#
-# undef BOOST_PP_ITERATION_FLAGS_1
-# undef BOOST_PP_ITERATION_PARAMS_1
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward2.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward2.hpp
deleted file mode 100644
index 64197f1..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward2.hpp
+++ /dev/null
@@ -1,1338 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if defined(BOOST_PP_ITERATION_LIMITS)
-# if !defined(BOOST_PP_FILENAME_2)
-# error BOOST_PP_ERROR: depth #2 filename is not defined
-# endif
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/lower2.hpp>
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/upper2.hpp>
-# define BOOST_PP_ITERATION_FLAGS_2() 0
-# undef BOOST_PP_ITERATION_LIMITS
-# elif defined(BOOST_PP_ITERATION_PARAMS_2)
-# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_2)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/lower2.hpp>
-# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_2)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/upper2.hpp>
-# define BOOST_PP_FILENAME_2 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_2)
-# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_2) >= 4
-# define BOOST_PP_ITERATION_FLAGS_2() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_2)
-# else
-# define BOOST_PP_ITERATION_FLAGS_2() 0
-# endif
-# else
-# error BOOST_PP_ERROR: depth #2 iteration boundaries or filename not defined
-# endif
-#
-# undef BOOST_PP_ITERATION_DEPTH
-# define BOOST_PP_ITERATION_DEPTH() 2
-#
-# if (BOOST_PP_ITERATION_START_2) > (BOOST_PP_ITERATION_FINISH_2)
-# include <cutl/details/boost/preprocessor/iteration/detail/iter/reverse2.hpp>
-# else
-# if BOOST_PP_ITERATION_START_2 <= 0 && BOOST_PP_ITERATION_FINISH_2 >= 0
-# define BOOST_PP_ITERATION_2 0
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 1 && BOOST_PP_ITERATION_FINISH_2 >= 1
-# define BOOST_PP_ITERATION_2 1
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 2 && BOOST_PP_ITERATION_FINISH_2 >= 2
-# define BOOST_PP_ITERATION_2 2
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 3 && BOOST_PP_ITERATION_FINISH_2 >= 3
-# define BOOST_PP_ITERATION_2 3
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 4 && BOOST_PP_ITERATION_FINISH_2 >= 4
-# define BOOST_PP_ITERATION_2 4
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 5 && BOOST_PP_ITERATION_FINISH_2 >= 5
-# define BOOST_PP_ITERATION_2 5
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 6 && BOOST_PP_ITERATION_FINISH_2 >= 6
-# define BOOST_PP_ITERATION_2 6
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 7 && BOOST_PP_ITERATION_FINISH_2 >= 7
-# define BOOST_PP_ITERATION_2 7
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 8 && BOOST_PP_ITERATION_FINISH_2 >= 8
-# define BOOST_PP_ITERATION_2 8
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 9 && BOOST_PP_ITERATION_FINISH_2 >= 9
-# define BOOST_PP_ITERATION_2 9
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 10 && BOOST_PP_ITERATION_FINISH_2 >= 10
-# define BOOST_PP_ITERATION_2 10
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 11 && BOOST_PP_ITERATION_FINISH_2 >= 11
-# define BOOST_PP_ITERATION_2 11
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 12 && BOOST_PP_ITERATION_FINISH_2 >= 12
-# define BOOST_PP_ITERATION_2 12
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 13 && BOOST_PP_ITERATION_FINISH_2 >= 13
-# define BOOST_PP_ITERATION_2 13
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 14 && BOOST_PP_ITERATION_FINISH_2 >= 14
-# define BOOST_PP_ITERATION_2 14
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 15 && BOOST_PP_ITERATION_FINISH_2 >= 15
-# define BOOST_PP_ITERATION_2 15
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 16 && BOOST_PP_ITERATION_FINISH_2 >= 16
-# define BOOST_PP_ITERATION_2 16
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 17 && BOOST_PP_ITERATION_FINISH_2 >= 17
-# define BOOST_PP_ITERATION_2 17
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 18 && BOOST_PP_ITERATION_FINISH_2 >= 18
-# define BOOST_PP_ITERATION_2 18
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 19 && BOOST_PP_ITERATION_FINISH_2 >= 19
-# define BOOST_PP_ITERATION_2 19
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 20 && BOOST_PP_ITERATION_FINISH_2 >= 20
-# define BOOST_PP_ITERATION_2 20
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 21 && BOOST_PP_ITERATION_FINISH_2 >= 21
-# define BOOST_PP_ITERATION_2 21
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 22 && BOOST_PP_ITERATION_FINISH_2 >= 22
-# define BOOST_PP_ITERATION_2 22
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 23 && BOOST_PP_ITERATION_FINISH_2 >= 23
-# define BOOST_PP_ITERATION_2 23
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 24 && BOOST_PP_ITERATION_FINISH_2 >= 24
-# define BOOST_PP_ITERATION_2 24
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 25 && BOOST_PP_ITERATION_FINISH_2 >= 25
-# define BOOST_PP_ITERATION_2 25
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 26 && BOOST_PP_ITERATION_FINISH_2 >= 26
-# define BOOST_PP_ITERATION_2 26
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 27 && BOOST_PP_ITERATION_FINISH_2 >= 27
-# define BOOST_PP_ITERATION_2 27
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 28 && BOOST_PP_ITERATION_FINISH_2 >= 28
-# define BOOST_PP_ITERATION_2 28
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 29 && BOOST_PP_ITERATION_FINISH_2 >= 29
-# define BOOST_PP_ITERATION_2 29
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 30 && BOOST_PP_ITERATION_FINISH_2 >= 30
-# define BOOST_PP_ITERATION_2 30
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 31 && BOOST_PP_ITERATION_FINISH_2 >= 31
-# define BOOST_PP_ITERATION_2 31
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 32 && BOOST_PP_ITERATION_FINISH_2 >= 32
-# define BOOST_PP_ITERATION_2 32
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 33 && BOOST_PP_ITERATION_FINISH_2 >= 33
-# define BOOST_PP_ITERATION_2 33
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 34 && BOOST_PP_ITERATION_FINISH_2 >= 34
-# define BOOST_PP_ITERATION_2 34
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 35 && BOOST_PP_ITERATION_FINISH_2 >= 35
-# define BOOST_PP_ITERATION_2 35
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 36 && BOOST_PP_ITERATION_FINISH_2 >= 36
-# define BOOST_PP_ITERATION_2 36
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 37 && BOOST_PP_ITERATION_FINISH_2 >= 37
-# define BOOST_PP_ITERATION_2 37
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 38 && BOOST_PP_ITERATION_FINISH_2 >= 38
-# define BOOST_PP_ITERATION_2 38
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 39 && BOOST_PP_ITERATION_FINISH_2 >= 39
-# define BOOST_PP_ITERATION_2 39
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 40 && BOOST_PP_ITERATION_FINISH_2 >= 40
-# define BOOST_PP_ITERATION_2 40
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 41 && BOOST_PP_ITERATION_FINISH_2 >= 41
-# define BOOST_PP_ITERATION_2 41
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 42 && BOOST_PP_ITERATION_FINISH_2 >= 42
-# define BOOST_PP_ITERATION_2 42
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 43 && BOOST_PP_ITERATION_FINISH_2 >= 43
-# define BOOST_PP_ITERATION_2 43
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 44 && BOOST_PP_ITERATION_FINISH_2 >= 44
-# define BOOST_PP_ITERATION_2 44
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 45 && BOOST_PP_ITERATION_FINISH_2 >= 45
-# define BOOST_PP_ITERATION_2 45
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 46 && BOOST_PP_ITERATION_FINISH_2 >= 46
-# define BOOST_PP_ITERATION_2 46
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 47 && BOOST_PP_ITERATION_FINISH_2 >= 47
-# define BOOST_PP_ITERATION_2 47
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 48 && BOOST_PP_ITERATION_FINISH_2 >= 48
-# define BOOST_PP_ITERATION_2 48
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 49 && BOOST_PP_ITERATION_FINISH_2 >= 49
-# define BOOST_PP_ITERATION_2 49
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 50 && BOOST_PP_ITERATION_FINISH_2 >= 50
-# define BOOST_PP_ITERATION_2 50
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 51 && BOOST_PP_ITERATION_FINISH_2 >= 51
-# define BOOST_PP_ITERATION_2 51
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 52 && BOOST_PP_ITERATION_FINISH_2 >= 52
-# define BOOST_PP_ITERATION_2 52
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 53 && BOOST_PP_ITERATION_FINISH_2 >= 53
-# define BOOST_PP_ITERATION_2 53
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 54 && BOOST_PP_ITERATION_FINISH_2 >= 54
-# define BOOST_PP_ITERATION_2 54
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 55 && BOOST_PP_ITERATION_FINISH_2 >= 55
-# define BOOST_PP_ITERATION_2 55
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 56 && BOOST_PP_ITERATION_FINISH_2 >= 56
-# define BOOST_PP_ITERATION_2 56
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 57 && BOOST_PP_ITERATION_FINISH_2 >= 57
-# define BOOST_PP_ITERATION_2 57
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 58 && BOOST_PP_ITERATION_FINISH_2 >= 58
-# define BOOST_PP_ITERATION_2 58
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 59 && BOOST_PP_ITERATION_FINISH_2 >= 59
-# define BOOST_PP_ITERATION_2 59
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 60 && BOOST_PP_ITERATION_FINISH_2 >= 60
-# define BOOST_PP_ITERATION_2 60
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 61 && BOOST_PP_ITERATION_FINISH_2 >= 61
-# define BOOST_PP_ITERATION_2 61
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 62 && BOOST_PP_ITERATION_FINISH_2 >= 62
-# define BOOST_PP_ITERATION_2 62
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 63 && BOOST_PP_ITERATION_FINISH_2 >= 63
-# define BOOST_PP_ITERATION_2 63
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 64 && BOOST_PP_ITERATION_FINISH_2 >= 64
-# define BOOST_PP_ITERATION_2 64
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 65 && BOOST_PP_ITERATION_FINISH_2 >= 65
-# define BOOST_PP_ITERATION_2 65
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 66 && BOOST_PP_ITERATION_FINISH_2 >= 66
-# define BOOST_PP_ITERATION_2 66
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 67 && BOOST_PP_ITERATION_FINISH_2 >= 67
-# define BOOST_PP_ITERATION_2 67
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 68 && BOOST_PP_ITERATION_FINISH_2 >= 68
-# define BOOST_PP_ITERATION_2 68
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 69 && BOOST_PP_ITERATION_FINISH_2 >= 69
-# define BOOST_PP_ITERATION_2 69
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 70 && BOOST_PP_ITERATION_FINISH_2 >= 70
-# define BOOST_PP_ITERATION_2 70
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 71 && BOOST_PP_ITERATION_FINISH_2 >= 71
-# define BOOST_PP_ITERATION_2 71
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 72 && BOOST_PP_ITERATION_FINISH_2 >= 72
-# define BOOST_PP_ITERATION_2 72
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 73 && BOOST_PP_ITERATION_FINISH_2 >= 73
-# define BOOST_PP_ITERATION_2 73
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 74 && BOOST_PP_ITERATION_FINISH_2 >= 74
-# define BOOST_PP_ITERATION_2 74
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 75 && BOOST_PP_ITERATION_FINISH_2 >= 75
-# define BOOST_PP_ITERATION_2 75
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 76 && BOOST_PP_ITERATION_FINISH_2 >= 76
-# define BOOST_PP_ITERATION_2 76
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 77 && BOOST_PP_ITERATION_FINISH_2 >= 77
-# define BOOST_PP_ITERATION_2 77
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 78 && BOOST_PP_ITERATION_FINISH_2 >= 78
-# define BOOST_PP_ITERATION_2 78
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 79 && BOOST_PP_ITERATION_FINISH_2 >= 79
-# define BOOST_PP_ITERATION_2 79
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 80 && BOOST_PP_ITERATION_FINISH_2 >= 80
-# define BOOST_PP_ITERATION_2 80
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 81 && BOOST_PP_ITERATION_FINISH_2 >= 81
-# define BOOST_PP_ITERATION_2 81
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 82 && BOOST_PP_ITERATION_FINISH_2 >= 82
-# define BOOST_PP_ITERATION_2 82
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 83 && BOOST_PP_ITERATION_FINISH_2 >= 83
-# define BOOST_PP_ITERATION_2 83
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 84 && BOOST_PP_ITERATION_FINISH_2 >= 84
-# define BOOST_PP_ITERATION_2 84
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 85 && BOOST_PP_ITERATION_FINISH_2 >= 85
-# define BOOST_PP_ITERATION_2 85
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 86 && BOOST_PP_ITERATION_FINISH_2 >= 86
-# define BOOST_PP_ITERATION_2 86
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 87 && BOOST_PP_ITERATION_FINISH_2 >= 87
-# define BOOST_PP_ITERATION_2 87
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 88 && BOOST_PP_ITERATION_FINISH_2 >= 88
-# define BOOST_PP_ITERATION_2 88
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 89 && BOOST_PP_ITERATION_FINISH_2 >= 89
-# define BOOST_PP_ITERATION_2 89
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 90 && BOOST_PP_ITERATION_FINISH_2 >= 90
-# define BOOST_PP_ITERATION_2 90
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 91 && BOOST_PP_ITERATION_FINISH_2 >= 91
-# define BOOST_PP_ITERATION_2 91
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 92 && BOOST_PP_ITERATION_FINISH_2 >= 92
-# define BOOST_PP_ITERATION_2 92
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 93 && BOOST_PP_ITERATION_FINISH_2 >= 93
-# define BOOST_PP_ITERATION_2 93
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 94 && BOOST_PP_ITERATION_FINISH_2 >= 94
-# define BOOST_PP_ITERATION_2 94
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 95 && BOOST_PP_ITERATION_FINISH_2 >= 95
-# define BOOST_PP_ITERATION_2 95
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 96 && BOOST_PP_ITERATION_FINISH_2 >= 96
-# define BOOST_PP_ITERATION_2 96
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 97 && BOOST_PP_ITERATION_FINISH_2 >= 97
-# define BOOST_PP_ITERATION_2 97
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 98 && BOOST_PP_ITERATION_FINISH_2 >= 98
-# define BOOST_PP_ITERATION_2 98
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 99 && BOOST_PP_ITERATION_FINISH_2 >= 99
-# define BOOST_PP_ITERATION_2 99
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 100 && BOOST_PP_ITERATION_FINISH_2 >= 100
-# define BOOST_PP_ITERATION_2 100
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 101 && BOOST_PP_ITERATION_FINISH_2 >= 101
-# define BOOST_PP_ITERATION_2 101
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 102 && BOOST_PP_ITERATION_FINISH_2 >= 102
-# define BOOST_PP_ITERATION_2 102
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 103 && BOOST_PP_ITERATION_FINISH_2 >= 103
-# define BOOST_PP_ITERATION_2 103
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 104 && BOOST_PP_ITERATION_FINISH_2 >= 104
-# define BOOST_PP_ITERATION_2 104
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 105 && BOOST_PP_ITERATION_FINISH_2 >= 105
-# define BOOST_PP_ITERATION_2 105
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 106 && BOOST_PP_ITERATION_FINISH_2 >= 106
-# define BOOST_PP_ITERATION_2 106
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 107 && BOOST_PP_ITERATION_FINISH_2 >= 107
-# define BOOST_PP_ITERATION_2 107
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 108 && BOOST_PP_ITERATION_FINISH_2 >= 108
-# define BOOST_PP_ITERATION_2 108
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 109 && BOOST_PP_ITERATION_FINISH_2 >= 109
-# define BOOST_PP_ITERATION_2 109
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 110 && BOOST_PP_ITERATION_FINISH_2 >= 110
-# define BOOST_PP_ITERATION_2 110
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 111 && BOOST_PP_ITERATION_FINISH_2 >= 111
-# define BOOST_PP_ITERATION_2 111
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 112 && BOOST_PP_ITERATION_FINISH_2 >= 112
-# define BOOST_PP_ITERATION_2 112
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 113 && BOOST_PP_ITERATION_FINISH_2 >= 113
-# define BOOST_PP_ITERATION_2 113
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 114 && BOOST_PP_ITERATION_FINISH_2 >= 114
-# define BOOST_PP_ITERATION_2 114
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 115 && BOOST_PP_ITERATION_FINISH_2 >= 115
-# define BOOST_PP_ITERATION_2 115
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 116 && BOOST_PP_ITERATION_FINISH_2 >= 116
-# define BOOST_PP_ITERATION_2 116
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 117 && BOOST_PP_ITERATION_FINISH_2 >= 117
-# define BOOST_PP_ITERATION_2 117
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 118 && BOOST_PP_ITERATION_FINISH_2 >= 118
-# define BOOST_PP_ITERATION_2 118
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 119 && BOOST_PP_ITERATION_FINISH_2 >= 119
-# define BOOST_PP_ITERATION_2 119
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 120 && BOOST_PP_ITERATION_FINISH_2 >= 120
-# define BOOST_PP_ITERATION_2 120
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 121 && BOOST_PP_ITERATION_FINISH_2 >= 121
-# define BOOST_PP_ITERATION_2 121
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 122 && BOOST_PP_ITERATION_FINISH_2 >= 122
-# define BOOST_PP_ITERATION_2 122
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 123 && BOOST_PP_ITERATION_FINISH_2 >= 123
-# define BOOST_PP_ITERATION_2 123
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 124 && BOOST_PP_ITERATION_FINISH_2 >= 124
-# define BOOST_PP_ITERATION_2 124
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 125 && BOOST_PP_ITERATION_FINISH_2 >= 125
-# define BOOST_PP_ITERATION_2 125
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 126 && BOOST_PP_ITERATION_FINISH_2 >= 126
-# define BOOST_PP_ITERATION_2 126
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 127 && BOOST_PP_ITERATION_FINISH_2 >= 127
-# define BOOST_PP_ITERATION_2 127
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 128 && BOOST_PP_ITERATION_FINISH_2 >= 128
-# define BOOST_PP_ITERATION_2 128
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 129 && BOOST_PP_ITERATION_FINISH_2 >= 129
-# define BOOST_PP_ITERATION_2 129
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 130 && BOOST_PP_ITERATION_FINISH_2 >= 130
-# define BOOST_PP_ITERATION_2 130
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 131 && BOOST_PP_ITERATION_FINISH_2 >= 131
-# define BOOST_PP_ITERATION_2 131
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 132 && BOOST_PP_ITERATION_FINISH_2 >= 132
-# define BOOST_PP_ITERATION_2 132
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 133 && BOOST_PP_ITERATION_FINISH_2 >= 133
-# define BOOST_PP_ITERATION_2 133
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 134 && BOOST_PP_ITERATION_FINISH_2 >= 134
-# define BOOST_PP_ITERATION_2 134
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 135 && BOOST_PP_ITERATION_FINISH_2 >= 135
-# define BOOST_PP_ITERATION_2 135
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 136 && BOOST_PP_ITERATION_FINISH_2 >= 136
-# define BOOST_PP_ITERATION_2 136
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 137 && BOOST_PP_ITERATION_FINISH_2 >= 137
-# define BOOST_PP_ITERATION_2 137
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 138 && BOOST_PP_ITERATION_FINISH_2 >= 138
-# define BOOST_PP_ITERATION_2 138
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 139 && BOOST_PP_ITERATION_FINISH_2 >= 139
-# define BOOST_PP_ITERATION_2 139
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 140 && BOOST_PP_ITERATION_FINISH_2 >= 140
-# define BOOST_PP_ITERATION_2 140
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 141 && BOOST_PP_ITERATION_FINISH_2 >= 141
-# define BOOST_PP_ITERATION_2 141
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 142 && BOOST_PP_ITERATION_FINISH_2 >= 142
-# define BOOST_PP_ITERATION_2 142
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 143 && BOOST_PP_ITERATION_FINISH_2 >= 143
-# define BOOST_PP_ITERATION_2 143
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 144 && BOOST_PP_ITERATION_FINISH_2 >= 144
-# define BOOST_PP_ITERATION_2 144
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 145 && BOOST_PP_ITERATION_FINISH_2 >= 145
-# define BOOST_PP_ITERATION_2 145
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 146 && BOOST_PP_ITERATION_FINISH_2 >= 146
-# define BOOST_PP_ITERATION_2 146
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 147 && BOOST_PP_ITERATION_FINISH_2 >= 147
-# define BOOST_PP_ITERATION_2 147
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 148 && BOOST_PP_ITERATION_FINISH_2 >= 148
-# define BOOST_PP_ITERATION_2 148
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 149 && BOOST_PP_ITERATION_FINISH_2 >= 149
-# define BOOST_PP_ITERATION_2 149
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 150 && BOOST_PP_ITERATION_FINISH_2 >= 150
-# define BOOST_PP_ITERATION_2 150
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 151 && BOOST_PP_ITERATION_FINISH_2 >= 151
-# define BOOST_PP_ITERATION_2 151
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 152 && BOOST_PP_ITERATION_FINISH_2 >= 152
-# define BOOST_PP_ITERATION_2 152
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 153 && BOOST_PP_ITERATION_FINISH_2 >= 153
-# define BOOST_PP_ITERATION_2 153
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 154 && BOOST_PP_ITERATION_FINISH_2 >= 154
-# define BOOST_PP_ITERATION_2 154
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 155 && BOOST_PP_ITERATION_FINISH_2 >= 155
-# define BOOST_PP_ITERATION_2 155
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 156 && BOOST_PP_ITERATION_FINISH_2 >= 156
-# define BOOST_PP_ITERATION_2 156
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 157 && BOOST_PP_ITERATION_FINISH_2 >= 157
-# define BOOST_PP_ITERATION_2 157
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 158 && BOOST_PP_ITERATION_FINISH_2 >= 158
-# define BOOST_PP_ITERATION_2 158
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 159 && BOOST_PP_ITERATION_FINISH_2 >= 159
-# define BOOST_PP_ITERATION_2 159
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 160 && BOOST_PP_ITERATION_FINISH_2 >= 160
-# define BOOST_PP_ITERATION_2 160
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 161 && BOOST_PP_ITERATION_FINISH_2 >= 161
-# define BOOST_PP_ITERATION_2 161
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 162 && BOOST_PP_ITERATION_FINISH_2 >= 162
-# define BOOST_PP_ITERATION_2 162
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 163 && BOOST_PP_ITERATION_FINISH_2 >= 163
-# define BOOST_PP_ITERATION_2 163
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 164 && BOOST_PP_ITERATION_FINISH_2 >= 164
-# define BOOST_PP_ITERATION_2 164
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 165 && BOOST_PP_ITERATION_FINISH_2 >= 165
-# define BOOST_PP_ITERATION_2 165
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 166 && BOOST_PP_ITERATION_FINISH_2 >= 166
-# define BOOST_PP_ITERATION_2 166
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 167 && BOOST_PP_ITERATION_FINISH_2 >= 167
-# define BOOST_PP_ITERATION_2 167
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 168 && BOOST_PP_ITERATION_FINISH_2 >= 168
-# define BOOST_PP_ITERATION_2 168
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 169 && BOOST_PP_ITERATION_FINISH_2 >= 169
-# define BOOST_PP_ITERATION_2 169
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 170 && BOOST_PP_ITERATION_FINISH_2 >= 170
-# define BOOST_PP_ITERATION_2 170
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 171 && BOOST_PP_ITERATION_FINISH_2 >= 171
-# define BOOST_PP_ITERATION_2 171
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 172 && BOOST_PP_ITERATION_FINISH_2 >= 172
-# define BOOST_PP_ITERATION_2 172
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 173 && BOOST_PP_ITERATION_FINISH_2 >= 173
-# define BOOST_PP_ITERATION_2 173
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 174 && BOOST_PP_ITERATION_FINISH_2 >= 174
-# define BOOST_PP_ITERATION_2 174
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 175 && BOOST_PP_ITERATION_FINISH_2 >= 175
-# define BOOST_PP_ITERATION_2 175
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 176 && BOOST_PP_ITERATION_FINISH_2 >= 176
-# define BOOST_PP_ITERATION_2 176
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 177 && BOOST_PP_ITERATION_FINISH_2 >= 177
-# define BOOST_PP_ITERATION_2 177
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 178 && BOOST_PP_ITERATION_FINISH_2 >= 178
-# define BOOST_PP_ITERATION_2 178
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 179 && BOOST_PP_ITERATION_FINISH_2 >= 179
-# define BOOST_PP_ITERATION_2 179
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 180 && BOOST_PP_ITERATION_FINISH_2 >= 180
-# define BOOST_PP_ITERATION_2 180
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 181 && BOOST_PP_ITERATION_FINISH_2 >= 181
-# define BOOST_PP_ITERATION_2 181
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 182 && BOOST_PP_ITERATION_FINISH_2 >= 182
-# define BOOST_PP_ITERATION_2 182
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 183 && BOOST_PP_ITERATION_FINISH_2 >= 183
-# define BOOST_PP_ITERATION_2 183
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 184 && BOOST_PP_ITERATION_FINISH_2 >= 184
-# define BOOST_PP_ITERATION_2 184
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 185 && BOOST_PP_ITERATION_FINISH_2 >= 185
-# define BOOST_PP_ITERATION_2 185
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 186 && BOOST_PP_ITERATION_FINISH_2 >= 186
-# define BOOST_PP_ITERATION_2 186
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 187 && BOOST_PP_ITERATION_FINISH_2 >= 187
-# define BOOST_PP_ITERATION_2 187
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 188 && BOOST_PP_ITERATION_FINISH_2 >= 188
-# define BOOST_PP_ITERATION_2 188
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 189 && BOOST_PP_ITERATION_FINISH_2 >= 189
-# define BOOST_PP_ITERATION_2 189
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 190 && BOOST_PP_ITERATION_FINISH_2 >= 190
-# define BOOST_PP_ITERATION_2 190
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 191 && BOOST_PP_ITERATION_FINISH_2 >= 191
-# define BOOST_PP_ITERATION_2 191
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 192 && BOOST_PP_ITERATION_FINISH_2 >= 192
-# define BOOST_PP_ITERATION_2 192
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 193 && BOOST_PP_ITERATION_FINISH_2 >= 193
-# define BOOST_PP_ITERATION_2 193
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 194 && BOOST_PP_ITERATION_FINISH_2 >= 194
-# define BOOST_PP_ITERATION_2 194
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 195 && BOOST_PP_ITERATION_FINISH_2 >= 195
-# define BOOST_PP_ITERATION_2 195
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 196 && BOOST_PP_ITERATION_FINISH_2 >= 196
-# define BOOST_PP_ITERATION_2 196
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 197 && BOOST_PP_ITERATION_FINISH_2 >= 197
-# define BOOST_PP_ITERATION_2 197
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 198 && BOOST_PP_ITERATION_FINISH_2 >= 198
-# define BOOST_PP_ITERATION_2 198
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 199 && BOOST_PP_ITERATION_FINISH_2 >= 199
-# define BOOST_PP_ITERATION_2 199
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 200 && BOOST_PP_ITERATION_FINISH_2 >= 200
-# define BOOST_PP_ITERATION_2 200
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 201 && BOOST_PP_ITERATION_FINISH_2 >= 201
-# define BOOST_PP_ITERATION_2 201
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 202 && BOOST_PP_ITERATION_FINISH_2 >= 202
-# define BOOST_PP_ITERATION_2 202
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 203 && BOOST_PP_ITERATION_FINISH_2 >= 203
-# define BOOST_PP_ITERATION_2 203
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 204 && BOOST_PP_ITERATION_FINISH_2 >= 204
-# define BOOST_PP_ITERATION_2 204
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 205 && BOOST_PP_ITERATION_FINISH_2 >= 205
-# define BOOST_PP_ITERATION_2 205
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 206 && BOOST_PP_ITERATION_FINISH_2 >= 206
-# define BOOST_PP_ITERATION_2 206
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 207 && BOOST_PP_ITERATION_FINISH_2 >= 207
-# define BOOST_PP_ITERATION_2 207
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 208 && BOOST_PP_ITERATION_FINISH_2 >= 208
-# define BOOST_PP_ITERATION_2 208
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 209 && BOOST_PP_ITERATION_FINISH_2 >= 209
-# define BOOST_PP_ITERATION_2 209
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 210 && BOOST_PP_ITERATION_FINISH_2 >= 210
-# define BOOST_PP_ITERATION_2 210
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 211 && BOOST_PP_ITERATION_FINISH_2 >= 211
-# define BOOST_PP_ITERATION_2 211
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 212 && BOOST_PP_ITERATION_FINISH_2 >= 212
-# define BOOST_PP_ITERATION_2 212
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 213 && BOOST_PP_ITERATION_FINISH_2 >= 213
-# define BOOST_PP_ITERATION_2 213
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 214 && BOOST_PP_ITERATION_FINISH_2 >= 214
-# define BOOST_PP_ITERATION_2 214
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 215 && BOOST_PP_ITERATION_FINISH_2 >= 215
-# define BOOST_PP_ITERATION_2 215
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 216 && BOOST_PP_ITERATION_FINISH_2 >= 216
-# define BOOST_PP_ITERATION_2 216
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 217 && BOOST_PP_ITERATION_FINISH_2 >= 217
-# define BOOST_PP_ITERATION_2 217
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 218 && BOOST_PP_ITERATION_FINISH_2 >= 218
-# define BOOST_PP_ITERATION_2 218
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 219 && BOOST_PP_ITERATION_FINISH_2 >= 219
-# define BOOST_PP_ITERATION_2 219
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 220 && BOOST_PP_ITERATION_FINISH_2 >= 220
-# define BOOST_PP_ITERATION_2 220
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 221 && BOOST_PP_ITERATION_FINISH_2 >= 221
-# define BOOST_PP_ITERATION_2 221
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 222 && BOOST_PP_ITERATION_FINISH_2 >= 222
-# define BOOST_PP_ITERATION_2 222
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 223 && BOOST_PP_ITERATION_FINISH_2 >= 223
-# define BOOST_PP_ITERATION_2 223
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 224 && BOOST_PP_ITERATION_FINISH_2 >= 224
-# define BOOST_PP_ITERATION_2 224
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 225 && BOOST_PP_ITERATION_FINISH_2 >= 225
-# define BOOST_PP_ITERATION_2 225
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 226 && BOOST_PP_ITERATION_FINISH_2 >= 226
-# define BOOST_PP_ITERATION_2 226
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 227 && BOOST_PP_ITERATION_FINISH_2 >= 227
-# define BOOST_PP_ITERATION_2 227
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 228 && BOOST_PP_ITERATION_FINISH_2 >= 228
-# define BOOST_PP_ITERATION_2 228
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 229 && BOOST_PP_ITERATION_FINISH_2 >= 229
-# define BOOST_PP_ITERATION_2 229
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 230 && BOOST_PP_ITERATION_FINISH_2 >= 230
-# define BOOST_PP_ITERATION_2 230
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 231 && BOOST_PP_ITERATION_FINISH_2 >= 231
-# define BOOST_PP_ITERATION_2 231
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 232 && BOOST_PP_ITERATION_FINISH_2 >= 232
-# define BOOST_PP_ITERATION_2 232
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 233 && BOOST_PP_ITERATION_FINISH_2 >= 233
-# define BOOST_PP_ITERATION_2 233
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 234 && BOOST_PP_ITERATION_FINISH_2 >= 234
-# define BOOST_PP_ITERATION_2 234
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 235 && BOOST_PP_ITERATION_FINISH_2 >= 235
-# define BOOST_PP_ITERATION_2 235
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 236 && BOOST_PP_ITERATION_FINISH_2 >= 236
-# define BOOST_PP_ITERATION_2 236
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 237 && BOOST_PP_ITERATION_FINISH_2 >= 237
-# define BOOST_PP_ITERATION_2 237
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 238 && BOOST_PP_ITERATION_FINISH_2 >= 238
-# define BOOST_PP_ITERATION_2 238
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 239 && BOOST_PP_ITERATION_FINISH_2 >= 239
-# define BOOST_PP_ITERATION_2 239
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 240 && BOOST_PP_ITERATION_FINISH_2 >= 240
-# define BOOST_PP_ITERATION_2 240
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 241 && BOOST_PP_ITERATION_FINISH_2 >= 241
-# define BOOST_PP_ITERATION_2 241
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 242 && BOOST_PP_ITERATION_FINISH_2 >= 242
-# define BOOST_PP_ITERATION_2 242
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 243 && BOOST_PP_ITERATION_FINISH_2 >= 243
-# define BOOST_PP_ITERATION_2 243
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 244 && BOOST_PP_ITERATION_FINISH_2 >= 244
-# define BOOST_PP_ITERATION_2 244
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 245 && BOOST_PP_ITERATION_FINISH_2 >= 245
-# define BOOST_PP_ITERATION_2 245
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 246 && BOOST_PP_ITERATION_FINISH_2 >= 246
-# define BOOST_PP_ITERATION_2 246
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 247 && BOOST_PP_ITERATION_FINISH_2 >= 247
-# define BOOST_PP_ITERATION_2 247
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 248 && BOOST_PP_ITERATION_FINISH_2 >= 248
-# define BOOST_PP_ITERATION_2 248
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 249 && BOOST_PP_ITERATION_FINISH_2 >= 249
-# define BOOST_PP_ITERATION_2 249
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 250 && BOOST_PP_ITERATION_FINISH_2 >= 250
-# define BOOST_PP_ITERATION_2 250
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 251 && BOOST_PP_ITERATION_FINISH_2 >= 251
-# define BOOST_PP_ITERATION_2 251
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 252 && BOOST_PP_ITERATION_FINISH_2 >= 252
-# define BOOST_PP_ITERATION_2 252
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 253 && BOOST_PP_ITERATION_FINISH_2 >= 253
-# define BOOST_PP_ITERATION_2 253
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 254 && BOOST_PP_ITERATION_FINISH_2 >= 254
-# define BOOST_PP_ITERATION_2 254
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 255 && BOOST_PP_ITERATION_FINISH_2 >= 255
-# define BOOST_PP_ITERATION_2 255
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_START_2 <= 256 && BOOST_PP_ITERATION_FINISH_2 >= 256
-# define BOOST_PP_ITERATION_2 256
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# endif
-#
-# undef BOOST_PP_ITERATION_DEPTH
-# define BOOST_PP_ITERATION_DEPTH() 1
-#
-# undef BOOST_PP_ITERATION_START_2
-# undef BOOST_PP_ITERATION_FINISH_2
-# undef BOOST_PP_FILENAME_2
-#
-# undef BOOST_PP_ITERATION_FLAGS_2
-# undef BOOST_PP_ITERATION_PARAMS_2
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward3.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward3.hpp
deleted file mode 100644
index abaeece..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward3.hpp
+++ /dev/null
@@ -1,1338 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if defined(BOOST_PP_ITERATION_LIMITS)
-# if !defined(BOOST_PP_FILENAME_3)
-# error BOOST_PP_ERROR: depth #3 filename is not defined
-# endif
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/lower3.hpp>
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/upper3.hpp>
-# define BOOST_PP_ITERATION_FLAGS_3() 0
-# undef BOOST_PP_ITERATION_LIMITS
-# elif defined(BOOST_PP_ITERATION_PARAMS_3)
-# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_3)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/lower3.hpp>
-# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_3)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/upper3.hpp>
-# define BOOST_PP_FILENAME_3 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_3)
-# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_3) >= 4
-# define BOOST_PP_ITERATION_FLAGS_3() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_3)
-# else
-# define BOOST_PP_ITERATION_FLAGS_3() 0
-# endif
-# else
-# error BOOST_PP_ERROR: depth #3 iteration boundaries or filename not defined
-# endif
-#
-# undef BOOST_PP_ITERATION_DEPTH
-# define BOOST_PP_ITERATION_DEPTH() 3
-#
-# if (BOOST_PP_ITERATION_START_3) > (BOOST_PP_ITERATION_FINISH_3)
-# include <cutl/details/boost/preprocessor/iteration/detail/iter/reverse3.hpp>
-# else
-# if BOOST_PP_ITERATION_START_3 <= 0 && BOOST_PP_ITERATION_FINISH_3 >= 0
-# define BOOST_PP_ITERATION_3 0
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 1 && BOOST_PP_ITERATION_FINISH_3 >= 1
-# define BOOST_PP_ITERATION_3 1
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 2 && BOOST_PP_ITERATION_FINISH_3 >= 2
-# define BOOST_PP_ITERATION_3 2
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 3 && BOOST_PP_ITERATION_FINISH_3 >= 3
-# define BOOST_PP_ITERATION_3 3
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 4 && BOOST_PP_ITERATION_FINISH_3 >= 4
-# define BOOST_PP_ITERATION_3 4
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 5 && BOOST_PP_ITERATION_FINISH_3 >= 5
-# define BOOST_PP_ITERATION_3 5
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 6 && BOOST_PP_ITERATION_FINISH_3 >= 6
-# define BOOST_PP_ITERATION_3 6
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 7 && BOOST_PP_ITERATION_FINISH_3 >= 7
-# define BOOST_PP_ITERATION_3 7
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 8 && BOOST_PP_ITERATION_FINISH_3 >= 8
-# define BOOST_PP_ITERATION_3 8
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 9 && BOOST_PP_ITERATION_FINISH_3 >= 9
-# define BOOST_PP_ITERATION_3 9
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 10 && BOOST_PP_ITERATION_FINISH_3 >= 10
-# define BOOST_PP_ITERATION_3 10
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 11 && BOOST_PP_ITERATION_FINISH_3 >= 11
-# define BOOST_PP_ITERATION_3 11
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 12 && BOOST_PP_ITERATION_FINISH_3 >= 12
-# define BOOST_PP_ITERATION_3 12
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 13 && BOOST_PP_ITERATION_FINISH_3 >= 13
-# define BOOST_PP_ITERATION_3 13
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 14 && BOOST_PP_ITERATION_FINISH_3 >= 14
-# define BOOST_PP_ITERATION_3 14
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 15 && BOOST_PP_ITERATION_FINISH_3 >= 15
-# define BOOST_PP_ITERATION_3 15
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 16 && BOOST_PP_ITERATION_FINISH_3 >= 16
-# define BOOST_PP_ITERATION_3 16
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 17 && BOOST_PP_ITERATION_FINISH_3 >= 17
-# define BOOST_PP_ITERATION_3 17
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 18 && BOOST_PP_ITERATION_FINISH_3 >= 18
-# define BOOST_PP_ITERATION_3 18
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 19 && BOOST_PP_ITERATION_FINISH_3 >= 19
-# define BOOST_PP_ITERATION_3 19
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 20 && BOOST_PP_ITERATION_FINISH_3 >= 20
-# define BOOST_PP_ITERATION_3 20
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 21 && BOOST_PP_ITERATION_FINISH_3 >= 21
-# define BOOST_PP_ITERATION_3 21
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 22 && BOOST_PP_ITERATION_FINISH_3 >= 22
-# define BOOST_PP_ITERATION_3 22
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 23 && BOOST_PP_ITERATION_FINISH_3 >= 23
-# define BOOST_PP_ITERATION_3 23
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 24 && BOOST_PP_ITERATION_FINISH_3 >= 24
-# define BOOST_PP_ITERATION_3 24
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 25 && BOOST_PP_ITERATION_FINISH_3 >= 25
-# define BOOST_PP_ITERATION_3 25
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 26 && BOOST_PP_ITERATION_FINISH_3 >= 26
-# define BOOST_PP_ITERATION_3 26
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 27 && BOOST_PP_ITERATION_FINISH_3 >= 27
-# define BOOST_PP_ITERATION_3 27
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 28 && BOOST_PP_ITERATION_FINISH_3 >= 28
-# define BOOST_PP_ITERATION_3 28
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 29 && BOOST_PP_ITERATION_FINISH_3 >= 29
-# define BOOST_PP_ITERATION_3 29
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 30 && BOOST_PP_ITERATION_FINISH_3 >= 30
-# define BOOST_PP_ITERATION_3 30
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 31 && BOOST_PP_ITERATION_FINISH_3 >= 31
-# define BOOST_PP_ITERATION_3 31
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 32 && BOOST_PP_ITERATION_FINISH_3 >= 32
-# define BOOST_PP_ITERATION_3 32
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 33 && BOOST_PP_ITERATION_FINISH_3 >= 33
-# define BOOST_PP_ITERATION_3 33
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 34 && BOOST_PP_ITERATION_FINISH_3 >= 34
-# define BOOST_PP_ITERATION_3 34
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 35 && BOOST_PP_ITERATION_FINISH_3 >= 35
-# define BOOST_PP_ITERATION_3 35
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 36 && BOOST_PP_ITERATION_FINISH_3 >= 36
-# define BOOST_PP_ITERATION_3 36
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 37 && BOOST_PP_ITERATION_FINISH_3 >= 37
-# define BOOST_PP_ITERATION_3 37
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 38 && BOOST_PP_ITERATION_FINISH_3 >= 38
-# define BOOST_PP_ITERATION_3 38
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 39 && BOOST_PP_ITERATION_FINISH_3 >= 39
-# define BOOST_PP_ITERATION_3 39
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 40 && BOOST_PP_ITERATION_FINISH_3 >= 40
-# define BOOST_PP_ITERATION_3 40
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 41 && BOOST_PP_ITERATION_FINISH_3 >= 41
-# define BOOST_PP_ITERATION_3 41
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 42 && BOOST_PP_ITERATION_FINISH_3 >= 42
-# define BOOST_PP_ITERATION_3 42
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 43 && BOOST_PP_ITERATION_FINISH_3 >= 43
-# define BOOST_PP_ITERATION_3 43
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 44 && BOOST_PP_ITERATION_FINISH_3 >= 44
-# define BOOST_PP_ITERATION_3 44
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 45 && BOOST_PP_ITERATION_FINISH_3 >= 45
-# define BOOST_PP_ITERATION_3 45
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 46 && BOOST_PP_ITERATION_FINISH_3 >= 46
-# define BOOST_PP_ITERATION_3 46
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 47 && BOOST_PP_ITERATION_FINISH_3 >= 47
-# define BOOST_PP_ITERATION_3 47
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 48 && BOOST_PP_ITERATION_FINISH_3 >= 48
-# define BOOST_PP_ITERATION_3 48
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 49 && BOOST_PP_ITERATION_FINISH_3 >= 49
-# define BOOST_PP_ITERATION_3 49
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 50 && BOOST_PP_ITERATION_FINISH_3 >= 50
-# define BOOST_PP_ITERATION_3 50
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 51 && BOOST_PP_ITERATION_FINISH_3 >= 51
-# define BOOST_PP_ITERATION_3 51
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 52 && BOOST_PP_ITERATION_FINISH_3 >= 52
-# define BOOST_PP_ITERATION_3 52
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 53 && BOOST_PP_ITERATION_FINISH_3 >= 53
-# define BOOST_PP_ITERATION_3 53
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 54 && BOOST_PP_ITERATION_FINISH_3 >= 54
-# define BOOST_PP_ITERATION_3 54
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 55 && BOOST_PP_ITERATION_FINISH_3 >= 55
-# define BOOST_PP_ITERATION_3 55
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 56 && BOOST_PP_ITERATION_FINISH_3 >= 56
-# define BOOST_PP_ITERATION_3 56
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 57 && BOOST_PP_ITERATION_FINISH_3 >= 57
-# define BOOST_PP_ITERATION_3 57
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 58 && BOOST_PP_ITERATION_FINISH_3 >= 58
-# define BOOST_PP_ITERATION_3 58
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 59 && BOOST_PP_ITERATION_FINISH_3 >= 59
-# define BOOST_PP_ITERATION_3 59
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 60 && BOOST_PP_ITERATION_FINISH_3 >= 60
-# define BOOST_PP_ITERATION_3 60
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 61 && BOOST_PP_ITERATION_FINISH_3 >= 61
-# define BOOST_PP_ITERATION_3 61
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 62 && BOOST_PP_ITERATION_FINISH_3 >= 62
-# define BOOST_PP_ITERATION_3 62
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 63 && BOOST_PP_ITERATION_FINISH_3 >= 63
-# define BOOST_PP_ITERATION_3 63
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 64 && BOOST_PP_ITERATION_FINISH_3 >= 64
-# define BOOST_PP_ITERATION_3 64
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 65 && BOOST_PP_ITERATION_FINISH_3 >= 65
-# define BOOST_PP_ITERATION_3 65
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 66 && BOOST_PP_ITERATION_FINISH_3 >= 66
-# define BOOST_PP_ITERATION_3 66
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 67 && BOOST_PP_ITERATION_FINISH_3 >= 67
-# define BOOST_PP_ITERATION_3 67
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 68 && BOOST_PP_ITERATION_FINISH_3 >= 68
-# define BOOST_PP_ITERATION_3 68
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 69 && BOOST_PP_ITERATION_FINISH_3 >= 69
-# define BOOST_PP_ITERATION_3 69
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 70 && BOOST_PP_ITERATION_FINISH_3 >= 70
-# define BOOST_PP_ITERATION_3 70
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 71 && BOOST_PP_ITERATION_FINISH_3 >= 71
-# define BOOST_PP_ITERATION_3 71
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 72 && BOOST_PP_ITERATION_FINISH_3 >= 72
-# define BOOST_PP_ITERATION_3 72
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 73 && BOOST_PP_ITERATION_FINISH_3 >= 73
-# define BOOST_PP_ITERATION_3 73
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 74 && BOOST_PP_ITERATION_FINISH_3 >= 74
-# define BOOST_PP_ITERATION_3 74
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 75 && BOOST_PP_ITERATION_FINISH_3 >= 75
-# define BOOST_PP_ITERATION_3 75
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 76 && BOOST_PP_ITERATION_FINISH_3 >= 76
-# define BOOST_PP_ITERATION_3 76
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 77 && BOOST_PP_ITERATION_FINISH_3 >= 77
-# define BOOST_PP_ITERATION_3 77
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 78 && BOOST_PP_ITERATION_FINISH_3 >= 78
-# define BOOST_PP_ITERATION_3 78
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 79 && BOOST_PP_ITERATION_FINISH_3 >= 79
-# define BOOST_PP_ITERATION_3 79
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 80 && BOOST_PP_ITERATION_FINISH_3 >= 80
-# define BOOST_PP_ITERATION_3 80
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 81 && BOOST_PP_ITERATION_FINISH_3 >= 81
-# define BOOST_PP_ITERATION_3 81
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 82 && BOOST_PP_ITERATION_FINISH_3 >= 82
-# define BOOST_PP_ITERATION_3 82
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 83 && BOOST_PP_ITERATION_FINISH_3 >= 83
-# define BOOST_PP_ITERATION_3 83
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 84 && BOOST_PP_ITERATION_FINISH_3 >= 84
-# define BOOST_PP_ITERATION_3 84
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 85 && BOOST_PP_ITERATION_FINISH_3 >= 85
-# define BOOST_PP_ITERATION_3 85
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 86 && BOOST_PP_ITERATION_FINISH_3 >= 86
-# define BOOST_PP_ITERATION_3 86
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 87 && BOOST_PP_ITERATION_FINISH_3 >= 87
-# define BOOST_PP_ITERATION_3 87
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 88 && BOOST_PP_ITERATION_FINISH_3 >= 88
-# define BOOST_PP_ITERATION_3 88
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 89 && BOOST_PP_ITERATION_FINISH_3 >= 89
-# define BOOST_PP_ITERATION_3 89
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 90 && BOOST_PP_ITERATION_FINISH_3 >= 90
-# define BOOST_PP_ITERATION_3 90
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 91 && BOOST_PP_ITERATION_FINISH_3 >= 91
-# define BOOST_PP_ITERATION_3 91
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 92 && BOOST_PP_ITERATION_FINISH_3 >= 92
-# define BOOST_PP_ITERATION_3 92
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 93 && BOOST_PP_ITERATION_FINISH_3 >= 93
-# define BOOST_PP_ITERATION_3 93
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 94 && BOOST_PP_ITERATION_FINISH_3 >= 94
-# define BOOST_PP_ITERATION_3 94
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 95 && BOOST_PP_ITERATION_FINISH_3 >= 95
-# define BOOST_PP_ITERATION_3 95
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 96 && BOOST_PP_ITERATION_FINISH_3 >= 96
-# define BOOST_PP_ITERATION_3 96
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 97 && BOOST_PP_ITERATION_FINISH_3 >= 97
-# define BOOST_PP_ITERATION_3 97
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 98 && BOOST_PP_ITERATION_FINISH_3 >= 98
-# define BOOST_PP_ITERATION_3 98
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 99 && BOOST_PP_ITERATION_FINISH_3 >= 99
-# define BOOST_PP_ITERATION_3 99
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 100 && BOOST_PP_ITERATION_FINISH_3 >= 100
-# define BOOST_PP_ITERATION_3 100
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 101 && BOOST_PP_ITERATION_FINISH_3 >= 101
-# define BOOST_PP_ITERATION_3 101
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 102 && BOOST_PP_ITERATION_FINISH_3 >= 102
-# define BOOST_PP_ITERATION_3 102
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 103 && BOOST_PP_ITERATION_FINISH_3 >= 103
-# define BOOST_PP_ITERATION_3 103
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 104 && BOOST_PP_ITERATION_FINISH_3 >= 104
-# define BOOST_PP_ITERATION_3 104
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 105 && BOOST_PP_ITERATION_FINISH_3 >= 105
-# define BOOST_PP_ITERATION_3 105
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 106 && BOOST_PP_ITERATION_FINISH_3 >= 106
-# define BOOST_PP_ITERATION_3 106
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 107 && BOOST_PP_ITERATION_FINISH_3 >= 107
-# define BOOST_PP_ITERATION_3 107
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 108 && BOOST_PP_ITERATION_FINISH_3 >= 108
-# define BOOST_PP_ITERATION_3 108
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 109 && BOOST_PP_ITERATION_FINISH_3 >= 109
-# define BOOST_PP_ITERATION_3 109
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 110 && BOOST_PP_ITERATION_FINISH_3 >= 110
-# define BOOST_PP_ITERATION_3 110
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 111 && BOOST_PP_ITERATION_FINISH_3 >= 111
-# define BOOST_PP_ITERATION_3 111
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 112 && BOOST_PP_ITERATION_FINISH_3 >= 112
-# define BOOST_PP_ITERATION_3 112
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 113 && BOOST_PP_ITERATION_FINISH_3 >= 113
-# define BOOST_PP_ITERATION_3 113
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 114 && BOOST_PP_ITERATION_FINISH_3 >= 114
-# define BOOST_PP_ITERATION_3 114
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 115 && BOOST_PP_ITERATION_FINISH_3 >= 115
-# define BOOST_PP_ITERATION_3 115
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 116 && BOOST_PP_ITERATION_FINISH_3 >= 116
-# define BOOST_PP_ITERATION_3 116
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 117 && BOOST_PP_ITERATION_FINISH_3 >= 117
-# define BOOST_PP_ITERATION_3 117
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 118 && BOOST_PP_ITERATION_FINISH_3 >= 118
-# define BOOST_PP_ITERATION_3 118
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 119 && BOOST_PP_ITERATION_FINISH_3 >= 119
-# define BOOST_PP_ITERATION_3 119
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 120 && BOOST_PP_ITERATION_FINISH_3 >= 120
-# define BOOST_PP_ITERATION_3 120
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 121 && BOOST_PP_ITERATION_FINISH_3 >= 121
-# define BOOST_PP_ITERATION_3 121
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 122 && BOOST_PP_ITERATION_FINISH_3 >= 122
-# define BOOST_PP_ITERATION_3 122
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 123 && BOOST_PP_ITERATION_FINISH_3 >= 123
-# define BOOST_PP_ITERATION_3 123
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 124 && BOOST_PP_ITERATION_FINISH_3 >= 124
-# define BOOST_PP_ITERATION_3 124
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 125 && BOOST_PP_ITERATION_FINISH_3 >= 125
-# define BOOST_PP_ITERATION_3 125
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 126 && BOOST_PP_ITERATION_FINISH_3 >= 126
-# define BOOST_PP_ITERATION_3 126
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 127 && BOOST_PP_ITERATION_FINISH_3 >= 127
-# define BOOST_PP_ITERATION_3 127
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 128 && BOOST_PP_ITERATION_FINISH_3 >= 128
-# define BOOST_PP_ITERATION_3 128
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 129 && BOOST_PP_ITERATION_FINISH_3 >= 129
-# define BOOST_PP_ITERATION_3 129
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 130 && BOOST_PP_ITERATION_FINISH_3 >= 130
-# define BOOST_PP_ITERATION_3 130
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 131 && BOOST_PP_ITERATION_FINISH_3 >= 131
-# define BOOST_PP_ITERATION_3 131
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 132 && BOOST_PP_ITERATION_FINISH_3 >= 132
-# define BOOST_PP_ITERATION_3 132
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 133 && BOOST_PP_ITERATION_FINISH_3 >= 133
-# define BOOST_PP_ITERATION_3 133
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 134 && BOOST_PP_ITERATION_FINISH_3 >= 134
-# define BOOST_PP_ITERATION_3 134
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 135 && BOOST_PP_ITERATION_FINISH_3 >= 135
-# define BOOST_PP_ITERATION_3 135
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 136 && BOOST_PP_ITERATION_FINISH_3 >= 136
-# define BOOST_PP_ITERATION_3 136
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 137 && BOOST_PP_ITERATION_FINISH_3 >= 137
-# define BOOST_PP_ITERATION_3 137
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 138 && BOOST_PP_ITERATION_FINISH_3 >= 138
-# define BOOST_PP_ITERATION_3 138
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 139 && BOOST_PP_ITERATION_FINISH_3 >= 139
-# define BOOST_PP_ITERATION_3 139
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 140 && BOOST_PP_ITERATION_FINISH_3 >= 140
-# define BOOST_PP_ITERATION_3 140
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 141 && BOOST_PP_ITERATION_FINISH_3 >= 141
-# define BOOST_PP_ITERATION_3 141
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 142 && BOOST_PP_ITERATION_FINISH_3 >= 142
-# define BOOST_PP_ITERATION_3 142
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 143 && BOOST_PP_ITERATION_FINISH_3 >= 143
-# define BOOST_PP_ITERATION_3 143
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 144 && BOOST_PP_ITERATION_FINISH_3 >= 144
-# define BOOST_PP_ITERATION_3 144
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 145 && BOOST_PP_ITERATION_FINISH_3 >= 145
-# define BOOST_PP_ITERATION_3 145
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 146 && BOOST_PP_ITERATION_FINISH_3 >= 146
-# define BOOST_PP_ITERATION_3 146
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 147 && BOOST_PP_ITERATION_FINISH_3 >= 147
-# define BOOST_PP_ITERATION_3 147
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 148 && BOOST_PP_ITERATION_FINISH_3 >= 148
-# define BOOST_PP_ITERATION_3 148
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 149 && BOOST_PP_ITERATION_FINISH_3 >= 149
-# define BOOST_PP_ITERATION_3 149
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 150 && BOOST_PP_ITERATION_FINISH_3 >= 150
-# define BOOST_PP_ITERATION_3 150
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 151 && BOOST_PP_ITERATION_FINISH_3 >= 151
-# define BOOST_PP_ITERATION_3 151
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 152 && BOOST_PP_ITERATION_FINISH_3 >= 152
-# define BOOST_PP_ITERATION_3 152
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 153 && BOOST_PP_ITERATION_FINISH_3 >= 153
-# define BOOST_PP_ITERATION_3 153
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 154 && BOOST_PP_ITERATION_FINISH_3 >= 154
-# define BOOST_PP_ITERATION_3 154
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 155 && BOOST_PP_ITERATION_FINISH_3 >= 155
-# define BOOST_PP_ITERATION_3 155
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 156 && BOOST_PP_ITERATION_FINISH_3 >= 156
-# define BOOST_PP_ITERATION_3 156
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 157 && BOOST_PP_ITERATION_FINISH_3 >= 157
-# define BOOST_PP_ITERATION_3 157
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 158 && BOOST_PP_ITERATION_FINISH_3 >= 158
-# define BOOST_PP_ITERATION_3 158
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 159 && BOOST_PP_ITERATION_FINISH_3 >= 159
-# define BOOST_PP_ITERATION_3 159
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 160 && BOOST_PP_ITERATION_FINISH_3 >= 160
-# define BOOST_PP_ITERATION_3 160
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 161 && BOOST_PP_ITERATION_FINISH_3 >= 161
-# define BOOST_PP_ITERATION_3 161
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 162 && BOOST_PP_ITERATION_FINISH_3 >= 162
-# define BOOST_PP_ITERATION_3 162
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 163 && BOOST_PP_ITERATION_FINISH_3 >= 163
-# define BOOST_PP_ITERATION_3 163
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 164 && BOOST_PP_ITERATION_FINISH_3 >= 164
-# define BOOST_PP_ITERATION_3 164
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 165 && BOOST_PP_ITERATION_FINISH_3 >= 165
-# define BOOST_PP_ITERATION_3 165
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 166 && BOOST_PP_ITERATION_FINISH_3 >= 166
-# define BOOST_PP_ITERATION_3 166
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 167 && BOOST_PP_ITERATION_FINISH_3 >= 167
-# define BOOST_PP_ITERATION_3 167
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 168 && BOOST_PP_ITERATION_FINISH_3 >= 168
-# define BOOST_PP_ITERATION_3 168
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 169 && BOOST_PP_ITERATION_FINISH_3 >= 169
-# define BOOST_PP_ITERATION_3 169
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 170 && BOOST_PP_ITERATION_FINISH_3 >= 170
-# define BOOST_PP_ITERATION_3 170
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 171 && BOOST_PP_ITERATION_FINISH_3 >= 171
-# define BOOST_PP_ITERATION_3 171
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 172 && BOOST_PP_ITERATION_FINISH_3 >= 172
-# define BOOST_PP_ITERATION_3 172
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 173 && BOOST_PP_ITERATION_FINISH_3 >= 173
-# define BOOST_PP_ITERATION_3 173
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 174 && BOOST_PP_ITERATION_FINISH_3 >= 174
-# define BOOST_PP_ITERATION_3 174
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 175 && BOOST_PP_ITERATION_FINISH_3 >= 175
-# define BOOST_PP_ITERATION_3 175
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 176 && BOOST_PP_ITERATION_FINISH_3 >= 176
-# define BOOST_PP_ITERATION_3 176
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 177 && BOOST_PP_ITERATION_FINISH_3 >= 177
-# define BOOST_PP_ITERATION_3 177
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 178 && BOOST_PP_ITERATION_FINISH_3 >= 178
-# define BOOST_PP_ITERATION_3 178
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 179 && BOOST_PP_ITERATION_FINISH_3 >= 179
-# define BOOST_PP_ITERATION_3 179
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 180 && BOOST_PP_ITERATION_FINISH_3 >= 180
-# define BOOST_PP_ITERATION_3 180
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 181 && BOOST_PP_ITERATION_FINISH_3 >= 181
-# define BOOST_PP_ITERATION_3 181
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 182 && BOOST_PP_ITERATION_FINISH_3 >= 182
-# define BOOST_PP_ITERATION_3 182
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 183 && BOOST_PP_ITERATION_FINISH_3 >= 183
-# define BOOST_PP_ITERATION_3 183
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 184 && BOOST_PP_ITERATION_FINISH_3 >= 184
-# define BOOST_PP_ITERATION_3 184
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 185 && BOOST_PP_ITERATION_FINISH_3 >= 185
-# define BOOST_PP_ITERATION_3 185
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 186 && BOOST_PP_ITERATION_FINISH_3 >= 186
-# define BOOST_PP_ITERATION_3 186
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 187 && BOOST_PP_ITERATION_FINISH_3 >= 187
-# define BOOST_PP_ITERATION_3 187
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 188 && BOOST_PP_ITERATION_FINISH_3 >= 188
-# define BOOST_PP_ITERATION_3 188
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 189 && BOOST_PP_ITERATION_FINISH_3 >= 189
-# define BOOST_PP_ITERATION_3 189
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 190 && BOOST_PP_ITERATION_FINISH_3 >= 190
-# define BOOST_PP_ITERATION_3 190
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 191 && BOOST_PP_ITERATION_FINISH_3 >= 191
-# define BOOST_PP_ITERATION_3 191
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 192 && BOOST_PP_ITERATION_FINISH_3 >= 192
-# define BOOST_PP_ITERATION_3 192
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 193 && BOOST_PP_ITERATION_FINISH_3 >= 193
-# define BOOST_PP_ITERATION_3 193
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 194 && BOOST_PP_ITERATION_FINISH_3 >= 194
-# define BOOST_PP_ITERATION_3 194
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 195 && BOOST_PP_ITERATION_FINISH_3 >= 195
-# define BOOST_PP_ITERATION_3 195
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 196 && BOOST_PP_ITERATION_FINISH_3 >= 196
-# define BOOST_PP_ITERATION_3 196
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 197 && BOOST_PP_ITERATION_FINISH_3 >= 197
-# define BOOST_PP_ITERATION_3 197
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 198 && BOOST_PP_ITERATION_FINISH_3 >= 198
-# define BOOST_PP_ITERATION_3 198
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 199 && BOOST_PP_ITERATION_FINISH_3 >= 199
-# define BOOST_PP_ITERATION_3 199
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 200 && BOOST_PP_ITERATION_FINISH_3 >= 200
-# define BOOST_PP_ITERATION_3 200
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 201 && BOOST_PP_ITERATION_FINISH_3 >= 201
-# define BOOST_PP_ITERATION_3 201
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 202 && BOOST_PP_ITERATION_FINISH_3 >= 202
-# define BOOST_PP_ITERATION_3 202
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 203 && BOOST_PP_ITERATION_FINISH_3 >= 203
-# define BOOST_PP_ITERATION_3 203
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 204 && BOOST_PP_ITERATION_FINISH_3 >= 204
-# define BOOST_PP_ITERATION_3 204
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 205 && BOOST_PP_ITERATION_FINISH_3 >= 205
-# define BOOST_PP_ITERATION_3 205
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 206 && BOOST_PP_ITERATION_FINISH_3 >= 206
-# define BOOST_PP_ITERATION_3 206
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 207 && BOOST_PP_ITERATION_FINISH_3 >= 207
-# define BOOST_PP_ITERATION_3 207
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 208 && BOOST_PP_ITERATION_FINISH_3 >= 208
-# define BOOST_PP_ITERATION_3 208
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 209 && BOOST_PP_ITERATION_FINISH_3 >= 209
-# define BOOST_PP_ITERATION_3 209
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 210 && BOOST_PP_ITERATION_FINISH_3 >= 210
-# define BOOST_PP_ITERATION_3 210
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 211 && BOOST_PP_ITERATION_FINISH_3 >= 211
-# define BOOST_PP_ITERATION_3 211
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 212 && BOOST_PP_ITERATION_FINISH_3 >= 212
-# define BOOST_PP_ITERATION_3 212
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 213 && BOOST_PP_ITERATION_FINISH_3 >= 213
-# define BOOST_PP_ITERATION_3 213
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 214 && BOOST_PP_ITERATION_FINISH_3 >= 214
-# define BOOST_PP_ITERATION_3 214
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 215 && BOOST_PP_ITERATION_FINISH_3 >= 215
-# define BOOST_PP_ITERATION_3 215
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 216 && BOOST_PP_ITERATION_FINISH_3 >= 216
-# define BOOST_PP_ITERATION_3 216
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 217 && BOOST_PP_ITERATION_FINISH_3 >= 217
-# define BOOST_PP_ITERATION_3 217
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 218 && BOOST_PP_ITERATION_FINISH_3 >= 218
-# define BOOST_PP_ITERATION_3 218
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 219 && BOOST_PP_ITERATION_FINISH_3 >= 219
-# define BOOST_PP_ITERATION_3 219
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 220 && BOOST_PP_ITERATION_FINISH_3 >= 220
-# define BOOST_PP_ITERATION_3 220
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 221 && BOOST_PP_ITERATION_FINISH_3 >= 221
-# define BOOST_PP_ITERATION_3 221
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 222 && BOOST_PP_ITERATION_FINISH_3 >= 222
-# define BOOST_PP_ITERATION_3 222
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 223 && BOOST_PP_ITERATION_FINISH_3 >= 223
-# define BOOST_PP_ITERATION_3 223
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 224 && BOOST_PP_ITERATION_FINISH_3 >= 224
-# define BOOST_PP_ITERATION_3 224
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 225 && BOOST_PP_ITERATION_FINISH_3 >= 225
-# define BOOST_PP_ITERATION_3 225
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 226 && BOOST_PP_ITERATION_FINISH_3 >= 226
-# define BOOST_PP_ITERATION_3 226
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 227 && BOOST_PP_ITERATION_FINISH_3 >= 227
-# define BOOST_PP_ITERATION_3 227
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 228 && BOOST_PP_ITERATION_FINISH_3 >= 228
-# define BOOST_PP_ITERATION_3 228
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 229 && BOOST_PP_ITERATION_FINISH_3 >= 229
-# define BOOST_PP_ITERATION_3 229
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 230 && BOOST_PP_ITERATION_FINISH_3 >= 230
-# define BOOST_PP_ITERATION_3 230
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 231 && BOOST_PP_ITERATION_FINISH_3 >= 231
-# define BOOST_PP_ITERATION_3 231
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 232 && BOOST_PP_ITERATION_FINISH_3 >= 232
-# define BOOST_PP_ITERATION_3 232
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 233 && BOOST_PP_ITERATION_FINISH_3 >= 233
-# define BOOST_PP_ITERATION_3 233
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 234 && BOOST_PP_ITERATION_FINISH_3 >= 234
-# define BOOST_PP_ITERATION_3 234
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 235 && BOOST_PP_ITERATION_FINISH_3 >= 235
-# define BOOST_PP_ITERATION_3 235
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 236 && BOOST_PP_ITERATION_FINISH_3 >= 236
-# define BOOST_PP_ITERATION_3 236
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 237 && BOOST_PP_ITERATION_FINISH_3 >= 237
-# define BOOST_PP_ITERATION_3 237
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 238 && BOOST_PP_ITERATION_FINISH_3 >= 238
-# define BOOST_PP_ITERATION_3 238
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 239 && BOOST_PP_ITERATION_FINISH_3 >= 239
-# define BOOST_PP_ITERATION_3 239
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 240 && BOOST_PP_ITERATION_FINISH_3 >= 240
-# define BOOST_PP_ITERATION_3 240
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 241 && BOOST_PP_ITERATION_FINISH_3 >= 241
-# define BOOST_PP_ITERATION_3 241
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 242 && BOOST_PP_ITERATION_FINISH_3 >= 242
-# define BOOST_PP_ITERATION_3 242
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 243 && BOOST_PP_ITERATION_FINISH_3 >= 243
-# define BOOST_PP_ITERATION_3 243
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 244 && BOOST_PP_ITERATION_FINISH_3 >= 244
-# define BOOST_PP_ITERATION_3 244
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 245 && BOOST_PP_ITERATION_FINISH_3 >= 245
-# define BOOST_PP_ITERATION_3 245
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 246 && BOOST_PP_ITERATION_FINISH_3 >= 246
-# define BOOST_PP_ITERATION_3 246
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 247 && BOOST_PP_ITERATION_FINISH_3 >= 247
-# define BOOST_PP_ITERATION_3 247
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 248 && BOOST_PP_ITERATION_FINISH_3 >= 248
-# define BOOST_PP_ITERATION_3 248
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 249 && BOOST_PP_ITERATION_FINISH_3 >= 249
-# define BOOST_PP_ITERATION_3 249
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 250 && BOOST_PP_ITERATION_FINISH_3 >= 250
-# define BOOST_PP_ITERATION_3 250
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 251 && BOOST_PP_ITERATION_FINISH_3 >= 251
-# define BOOST_PP_ITERATION_3 251
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 252 && BOOST_PP_ITERATION_FINISH_3 >= 252
-# define BOOST_PP_ITERATION_3 252
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 253 && BOOST_PP_ITERATION_FINISH_3 >= 253
-# define BOOST_PP_ITERATION_3 253
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 254 && BOOST_PP_ITERATION_FINISH_3 >= 254
-# define BOOST_PP_ITERATION_3 254
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 255 && BOOST_PP_ITERATION_FINISH_3 >= 255
-# define BOOST_PP_ITERATION_3 255
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_START_3 <= 256 && BOOST_PP_ITERATION_FINISH_3 >= 256
-# define BOOST_PP_ITERATION_3 256
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# endif
-#
-# undef BOOST_PP_ITERATION_DEPTH
-# define BOOST_PP_ITERATION_DEPTH() 2
-#
-# undef BOOST_PP_ITERATION_START_3
-# undef BOOST_PP_ITERATION_FINISH_3
-# undef BOOST_PP_FILENAME_3
-#
-# undef BOOST_PP_ITERATION_FLAGS_3
-# undef BOOST_PP_ITERATION_PARAMS_3
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward4.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward4.hpp
deleted file mode 100644
index 124aaae..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward4.hpp
+++ /dev/null
@@ -1,1338 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if defined(BOOST_PP_ITERATION_LIMITS)
-# if !defined(BOOST_PP_FILENAME_4)
-# error BOOST_PP_ERROR: depth #4 filename is not defined
-# endif
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/lower4.hpp>
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/upper4.hpp>
-# define BOOST_PP_ITERATION_FLAGS_4() 0
-# undef BOOST_PP_ITERATION_LIMITS
-# elif defined(BOOST_PP_ITERATION_PARAMS_4)
-# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_4)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/lower4.hpp>
-# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_4)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/upper4.hpp>
-# define BOOST_PP_FILENAME_4 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_4)
-# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_4) >= 4
-# define BOOST_PP_ITERATION_FLAGS_4() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_4)
-# else
-# define BOOST_PP_ITERATION_FLAGS_4() 0
-# endif
-# else
-# error BOOST_PP_ERROR: depth #4 iteration boundaries or filename not defined
-# endif
-#
-# undef BOOST_PP_ITERATION_DEPTH
-# define BOOST_PP_ITERATION_DEPTH() 4
-#
-# if (BOOST_PP_ITERATION_START_4) > (BOOST_PP_ITERATION_FINISH_4)
-# include <cutl/details/boost/preprocessor/iteration/detail/iter/reverse4.hpp>
-# else
-# if BOOST_PP_ITERATION_START_4 <= 0 && BOOST_PP_ITERATION_FINISH_4 >= 0
-# define BOOST_PP_ITERATION_4 0
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 1 && BOOST_PP_ITERATION_FINISH_4 >= 1
-# define BOOST_PP_ITERATION_4 1
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 2 && BOOST_PP_ITERATION_FINISH_4 >= 2
-# define BOOST_PP_ITERATION_4 2
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 3 && BOOST_PP_ITERATION_FINISH_4 >= 3
-# define BOOST_PP_ITERATION_4 3
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 4 && BOOST_PP_ITERATION_FINISH_4 >= 4
-# define BOOST_PP_ITERATION_4 4
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 5 && BOOST_PP_ITERATION_FINISH_4 >= 5
-# define BOOST_PP_ITERATION_4 5
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 6 && BOOST_PP_ITERATION_FINISH_4 >= 6
-# define BOOST_PP_ITERATION_4 6
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 7 && BOOST_PP_ITERATION_FINISH_4 >= 7
-# define BOOST_PP_ITERATION_4 7
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 8 && BOOST_PP_ITERATION_FINISH_4 >= 8
-# define BOOST_PP_ITERATION_4 8
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 9 && BOOST_PP_ITERATION_FINISH_4 >= 9
-# define BOOST_PP_ITERATION_4 9
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 10 && BOOST_PP_ITERATION_FINISH_4 >= 10
-# define BOOST_PP_ITERATION_4 10
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 11 && BOOST_PP_ITERATION_FINISH_4 >= 11
-# define BOOST_PP_ITERATION_4 11
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 12 && BOOST_PP_ITERATION_FINISH_4 >= 12
-# define BOOST_PP_ITERATION_4 12
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 13 && BOOST_PP_ITERATION_FINISH_4 >= 13
-# define BOOST_PP_ITERATION_4 13
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 14 && BOOST_PP_ITERATION_FINISH_4 >= 14
-# define BOOST_PP_ITERATION_4 14
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 15 && BOOST_PP_ITERATION_FINISH_4 >= 15
-# define BOOST_PP_ITERATION_4 15
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 16 && BOOST_PP_ITERATION_FINISH_4 >= 16
-# define BOOST_PP_ITERATION_4 16
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 17 && BOOST_PP_ITERATION_FINISH_4 >= 17
-# define BOOST_PP_ITERATION_4 17
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 18 && BOOST_PP_ITERATION_FINISH_4 >= 18
-# define BOOST_PP_ITERATION_4 18
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 19 && BOOST_PP_ITERATION_FINISH_4 >= 19
-# define BOOST_PP_ITERATION_4 19
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 20 && BOOST_PP_ITERATION_FINISH_4 >= 20
-# define BOOST_PP_ITERATION_4 20
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 21 && BOOST_PP_ITERATION_FINISH_4 >= 21
-# define BOOST_PP_ITERATION_4 21
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 22 && BOOST_PP_ITERATION_FINISH_4 >= 22
-# define BOOST_PP_ITERATION_4 22
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 23 && BOOST_PP_ITERATION_FINISH_4 >= 23
-# define BOOST_PP_ITERATION_4 23
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 24 && BOOST_PP_ITERATION_FINISH_4 >= 24
-# define BOOST_PP_ITERATION_4 24
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 25 && BOOST_PP_ITERATION_FINISH_4 >= 25
-# define BOOST_PP_ITERATION_4 25
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 26 && BOOST_PP_ITERATION_FINISH_4 >= 26
-# define BOOST_PP_ITERATION_4 26
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 27 && BOOST_PP_ITERATION_FINISH_4 >= 27
-# define BOOST_PP_ITERATION_4 27
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 28 && BOOST_PP_ITERATION_FINISH_4 >= 28
-# define BOOST_PP_ITERATION_4 28
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 29 && BOOST_PP_ITERATION_FINISH_4 >= 29
-# define BOOST_PP_ITERATION_4 29
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 30 && BOOST_PP_ITERATION_FINISH_4 >= 30
-# define BOOST_PP_ITERATION_4 30
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 31 && BOOST_PP_ITERATION_FINISH_4 >= 31
-# define BOOST_PP_ITERATION_4 31
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 32 && BOOST_PP_ITERATION_FINISH_4 >= 32
-# define BOOST_PP_ITERATION_4 32
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 33 && BOOST_PP_ITERATION_FINISH_4 >= 33
-# define BOOST_PP_ITERATION_4 33
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 34 && BOOST_PP_ITERATION_FINISH_4 >= 34
-# define BOOST_PP_ITERATION_4 34
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 35 && BOOST_PP_ITERATION_FINISH_4 >= 35
-# define BOOST_PP_ITERATION_4 35
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 36 && BOOST_PP_ITERATION_FINISH_4 >= 36
-# define BOOST_PP_ITERATION_4 36
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 37 && BOOST_PP_ITERATION_FINISH_4 >= 37
-# define BOOST_PP_ITERATION_4 37
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 38 && BOOST_PP_ITERATION_FINISH_4 >= 38
-# define BOOST_PP_ITERATION_4 38
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 39 && BOOST_PP_ITERATION_FINISH_4 >= 39
-# define BOOST_PP_ITERATION_4 39
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 40 && BOOST_PP_ITERATION_FINISH_4 >= 40
-# define BOOST_PP_ITERATION_4 40
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 41 && BOOST_PP_ITERATION_FINISH_4 >= 41
-# define BOOST_PP_ITERATION_4 41
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 42 && BOOST_PP_ITERATION_FINISH_4 >= 42
-# define BOOST_PP_ITERATION_4 42
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 43 && BOOST_PP_ITERATION_FINISH_4 >= 43
-# define BOOST_PP_ITERATION_4 43
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 44 && BOOST_PP_ITERATION_FINISH_4 >= 44
-# define BOOST_PP_ITERATION_4 44
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 45 && BOOST_PP_ITERATION_FINISH_4 >= 45
-# define BOOST_PP_ITERATION_4 45
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 46 && BOOST_PP_ITERATION_FINISH_4 >= 46
-# define BOOST_PP_ITERATION_4 46
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 47 && BOOST_PP_ITERATION_FINISH_4 >= 47
-# define BOOST_PP_ITERATION_4 47
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 48 && BOOST_PP_ITERATION_FINISH_4 >= 48
-# define BOOST_PP_ITERATION_4 48
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 49 && BOOST_PP_ITERATION_FINISH_4 >= 49
-# define BOOST_PP_ITERATION_4 49
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 50 && BOOST_PP_ITERATION_FINISH_4 >= 50
-# define BOOST_PP_ITERATION_4 50
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 51 && BOOST_PP_ITERATION_FINISH_4 >= 51
-# define BOOST_PP_ITERATION_4 51
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 52 && BOOST_PP_ITERATION_FINISH_4 >= 52
-# define BOOST_PP_ITERATION_4 52
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 53 && BOOST_PP_ITERATION_FINISH_4 >= 53
-# define BOOST_PP_ITERATION_4 53
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 54 && BOOST_PP_ITERATION_FINISH_4 >= 54
-# define BOOST_PP_ITERATION_4 54
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 55 && BOOST_PP_ITERATION_FINISH_4 >= 55
-# define BOOST_PP_ITERATION_4 55
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 56 && BOOST_PP_ITERATION_FINISH_4 >= 56
-# define BOOST_PP_ITERATION_4 56
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 57 && BOOST_PP_ITERATION_FINISH_4 >= 57
-# define BOOST_PP_ITERATION_4 57
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 58 && BOOST_PP_ITERATION_FINISH_4 >= 58
-# define BOOST_PP_ITERATION_4 58
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 59 && BOOST_PP_ITERATION_FINISH_4 >= 59
-# define BOOST_PP_ITERATION_4 59
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 60 && BOOST_PP_ITERATION_FINISH_4 >= 60
-# define BOOST_PP_ITERATION_4 60
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 61 && BOOST_PP_ITERATION_FINISH_4 >= 61
-# define BOOST_PP_ITERATION_4 61
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 62 && BOOST_PP_ITERATION_FINISH_4 >= 62
-# define BOOST_PP_ITERATION_4 62
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 63 && BOOST_PP_ITERATION_FINISH_4 >= 63
-# define BOOST_PP_ITERATION_4 63
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 64 && BOOST_PP_ITERATION_FINISH_4 >= 64
-# define BOOST_PP_ITERATION_4 64
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 65 && BOOST_PP_ITERATION_FINISH_4 >= 65
-# define BOOST_PP_ITERATION_4 65
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 66 && BOOST_PP_ITERATION_FINISH_4 >= 66
-# define BOOST_PP_ITERATION_4 66
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 67 && BOOST_PP_ITERATION_FINISH_4 >= 67
-# define BOOST_PP_ITERATION_4 67
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 68 && BOOST_PP_ITERATION_FINISH_4 >= 68
-# define BOOST_PP_ITERATION_4 68
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 69 && BOOST_PP_ITERATION_FINISH_4 >= 69
-# define BOOST_PP_ITERATION_4 69
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 70 && BOOST_PP_ITERATION_FINISH_4 >= 70
-# define BOOST_PP_ITERATION_4 70
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 71 && BOOST_PP_ITERATION_FINISH_4 >= 71
-# define BOOST_PP_ITERATION_4 71
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 72 && BOOST_PP_ITERATION_FINISH_4 >= 72
-# define BOOST_PP_ITERATION_4 72
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 73 && BOOST_PP_ITERATION_FINISH_4 >= 73
-# define BOOST_PP_ITERATION_4 73
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 74 && BOOST_PP_ITERATION_FINISH_4 >= 74
-# define BOOST_PP_ITERATION_4 74
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 75 && BOOST_PP_ITERATION_FINISH_4 >= 75
-# define BOOST_PP_ITERATION_4 75
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 76 && BOOST_PP_ITERATION_FINISH_4 >= 76
-# define BOOST_PP_ITERATION_4 76
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 77 && BOOST_PP_ITERATION_FINISH_4 >= 77
-# define BOOST_PP_ITERATION_4 77
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 78 && BOOST_PP_ITERATION_FINISH_4 >= 78
-# define BOOST_PP_ITERATION_4 78
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 79 && BOOST_PP_ITERATION_FINISH_4 >= 79
-# define BOOST_PP_ITERATION_4 79
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 80 && BOOST_PP_ITERATION_FINISH_4 >= 80
-# define BOOST_PP_ITERATION_4 80
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 81 && BOOST_PP_ITERATION_FINISH_4 >= 81
-# define BOOST_PP_ITERATION_4 81
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 82 && BOOST_PP_ITERATION_FINISH_4 >= 82
-# define BOOST_PP_ITERATION_4 82
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 83 && BOOST_PP_ITERATION_FINISH_4 >= 83
-# define BOOST_PP_ITERATION_4 83
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 84 && BOOST_PP_ITERATION_FINISH_4 >= 84
-# define BOOST_PP_ITERATION_4 84
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 85 && BOOST_PP_ITERATION_FINISH_4 >= 85
-# define BOOST_PP_ITERATION_4 85
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 86 && BOOST_PP_ITERATION_FINISH_4 >= 86
-# define BOOST_PP_ITERATION_4 86
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 87 && BOOST_PP_ITERATION_FINISH_4 >= 87
-# define BOOST_PP_ITERATION_4 87
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 88 && BOOST_PP_ITERATION_FINISH_4 >= 88
-# define BOOST_PP_ITERATION_4 88
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 89 && BOOST_PP_ITERATION_FINISH_4 >= 89
-# define BOOST_PP_ITERATION_4 89
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 90 && BOOST_PP_ITERATION_FINISH_4 >= 90
-# define BOOST_PP_ITERATION_4 90
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 91 && BOOST_PP_ITERATION_FINISH_4 >= 91
-# define BOOST_PP_ITERATION_4 91
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 92 && BOOST_PP_ITERATION_FINISH_4 >= 92
-# define BOOST_PP_ITERATION_4 92
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 93 && BOOST_PP_ITERATION_FINISH_4 >= 93
-# define BOOST_PP_ITERATION_4 93
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 94 && BOOST_PP_ITERATION_FINISH_4 >= 94
-# define BOOST_PP_ITERATION_4 94
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 95 && BOOST_PP_ITERATION_FINISH_4 >= 95
-# define BOOST_PP_ITERATION_4 95
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 96 && BOOST_PP_ITERATION_FINISH_4 >= 96
-# define BOOST_PP_ITERATION_4 96
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 97 && BOOST_PP_ITERATION_FINISH_4 >= 97
-# define BOOST_PP_ITERATION_4 97
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 98 && BOOST_PP_ITERATION_FINISH_4 >= 98
-# define BOOST_PP_ITERATION_4 98
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 99 && BOOST_PP_ITERATION_FINISH_4 >= 99
-# define BOOST_PP_ITERATION_4 99
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 100 && BOOST_PP_ITERATION_FINISH_4 >= 100
-# define BOOST_PP_ITERATION_4 100
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 101 && BOOST_PP_ITERATION_FINISH_4 >= 101
-# define BOOST_PP_ITERATION_4 101
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 102 && BOOST_PP_ITERATION_FINISH_4 >= 102
-# define BOOST_PP_ITERATION_4 102
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 103 && BOOST_PP_ITERATION_FINISH_4 >= 103
-# define BOOST_PP_ITERATION_4 103
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 104 && BOOST_PP_ITERATION_FINISH_4 >= 104
-# define BOOST_PP_ITERATION_4 104
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 105 && BOOST_PP_ITERATION_FINISH_4 >= 105
-# define BOOST_PP_ITERATION_4 105
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 106 && BOOST_PP_ITERATION_FINISH_4 >= 106
-# define BOOST_PP_ITERATION_4 106
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 107 && BOOST_PP_ITERATION_FINISH_4 >= 107
-# define BOOST_PP_ITERATION_4 107
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 108 && BOOST_PP_ITERATION_FINISH_4 >= 108
-# define BOOST_PP_ITERATION_4 108
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 109 && BOOST_PP_ITERATION_FINISH_4 >= 109
-# define BOOST_PP_ITERATION_4 109
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 110 && BOOST_PP_ITERATION_FINISH_4 >= 110
-# define BOOST_PP_ITERATION_4 110
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 111 && BOOST_PP_ITERATION_FINISH_4 >= 111
-# define BOOST_PP_ITERATION_4 111
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 112 && BOOST_PP_ITERATION_FINISH_4 >= 112
-# define BOOST_PP_ITERATION_4 112
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 113 && BOOST_PP_ITERATION_FINISH_4 >= 113
-# define BOOST_PP_ITERATION_4 113
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 114 && BOOST_PP_ITERATION_FINISH_4 >= 114
-# define BOOST_PP_ITERATION_4 114
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 115 && BOOST_PP_ITERATION_FINISH_4 >= 115
-# define BOOST_PP_ITERATION_4 115
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 116 && BOOST_PP_ITERATION_FINISH_4 >= 116
-# define BOOST_PP_ITERATION_4 116
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 117 && BOOST_PP_ITERATION_FINISH_4 >= 117
-# define BOOST_PP_ITERATION_4 117
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 118 && BOOST_PP_ITERATION_FINISH_4 >= 118
-# define BOOST_PP_ITERATION_4 118
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 119 && BOOST_PP_ITERATION_FINISH_4 >= 119
-# define BOOST_PP_ITERATION_4 119
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 120 && BOOST_PP_ITERATION_FINISH_4 >= 120
-# define BOOST_PP_ITERATION_4 120
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 121 && BOOST_PP_ITERATION_FINISH_4 >= 121
-# define BOOST_PP_ITERATION_4 121
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 122 && BOOST_PP_ITERATION_FINISH_4 >= 122
-# define BOOST_PP_ITERATION_4 122
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 123 && BOOST_PP_ITERATION_FINISH_4 >= 123
-# define BOOST_PP_ITERATION_4 123
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 124 && BOOST_PP_ITERATION_FINISH_4 >= 124
-# define BOOST_PP_ITERATION_4 124
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 125 && BOOST_PP_ITERATION_FINISH_4 >= 125
-# define BOOST_PP_ITERATION_4 125
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 126 && BOOST_PP_ITERATION_FINISH_4 >= 126
-# define BOOST_PP_ITERATION_4 126
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 127 && BOOST_PP_ITERATION_FINISH_4 >= 127
-# define BOOST_PP_ITERATION_4 127
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 128 && BOOST_PP_ITERATION_FINISH_4 >= 128
-# define BOOST_PP_ITERATION_4 128
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 129 && BOOST_PP_ITERATION_FINISH_4 >= 129
-# define BOOST_PP_ITERATION_4 129
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 130 && BOOST_PP_ITERATION_FINISH_4 >= 130
-# define BOOST_PP_ITERATION_4 130
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 131 && BOOST_PP_ITERATION_FINISH_4 >= 131
-# define BOOST_PP_ITERATION_4 131
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 132 && BOOST_PP_ITERATION_FINISH_4 >= 132
-# define BOOST_PP_ITERATION_4 132
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 133 && BOOST_PP_ITERATION_FINISH_4 >= 133
-# define BOOST_PP_ITERATION_4 133
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 134 && BOOST_PP_ITERATION_FINISH_4 >= 134
-# define BOOST_PP_ITERATION_4 134
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 135 && BOOST_PP_ITERATION_FINISH_4 >= 135
-# define BOOST_PP_ITERATION_4 135
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 136 && BOOST_PP_ITERATION_FINISH_4 >= 136
-# define BOOST_PP_ITERATION_4 136
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 137 && BOOST_PP_ITERATION_FINISH_4 >= 137
-# define BOOST_PP_ITERATION_4 137
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 138 && BOOST_PP_ITERATION_FINISH_4 >= 138
-# define BOOST_PP_ITERATION_4 138
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 139 && BOOST_PP_ITERATION_FINISH_4 >= 139
-# define BOOST_PP_ITERATION_4 139
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 140 && BOOST_PP_ITERATION_FINISH_4 >= 140
-# define BOOST_PP_ITERATION_4 140
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 141 && BOOST_PP_ITERATION_FINISH_4 >= 141
-# define BOOST_PP_ITERATION_4 141
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 142 && BOOST_PP_ITERATION_FINISH_4 >= 142
-# define BOOST_PP_ITERATION_4 142
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 143 && BOOST_PP_ITERATION_FINISH_4 >= 143
-# define BOOST_PP_ITERATION_4 143
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 144 && BOOST_PP_ITERATION_FINISH_4 >= 144
-# define BOOST_PP_ITERATION_4 144
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 145 && BOOST_PP_ITERATION_FINISH_4 >= 145
-# define BOOST_PP_ITERATION_4 145
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 146 && BOOST_PP_ITERATION_FINISH_4 >= 146
-# define BOOST_PP_ITERATION_4 146
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 147 && BOOST_PP_ITERATION_FINISH_4 >= 147
-# define BOOST_PP_ITERATION_4 147
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 148 && BOOST_PP_ITERATION_FINISH_4 >= 148
-# define BOOST_PP_ITERATION_4 148
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 149 && BOOST_PP_ITERATION_FINISH_4 >= 149
-# define BOOST_PP_ITERATION_4 149
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 150 && BOOST_PP_ITERATION_FINISH_4 >= 150
-# define BOOST_PP_ITERATION_4 150
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 151 && BOOST_PP_ITERATION_FINISH_4 >= 151
-# define BOOST_PP_ITERATION_4 151
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 152 && BOOST_PP_ITERATION_FINISH_4 >= 152
-# define BOOST_PP_ITERATION_4 152
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 153 && BOOST_PP_ITERATION_FINISH_4 >= 153
-# define BOOST_PP_ITERATION_4 153
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 154 && BOOST_PP_ITERATION_FINISH_4 >= 154
-# define BOOST_PP_ITERATION_4 154
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 155 && BOOST_PP_ITERATION_FINISH_4 >= 155
-# define BOOST_PP_ITERATION_4 155
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 156 && BOOST_PP_ITERATION_FINISH_4 >= 156
-# define BOOST_PP_ITERATION_4 156
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 157 && BOOST_PP_ITERATION_FINISH_4 >= 157
-# define BOOST_PP_ITERATION_4 157
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 158 && BOOST_PP_ITERATION_FINISH_4 >= 158
-# define BOOST_PP_ITERATION_4 158
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 159 && BOOST_PP_ITERATION_FINISH_4 >= 159
-# define BOOST_PP_ITERATION_4 159
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 160 && BOOST_PP_ITERATION_FINISH_4 >= 160
-# define BOOST_PP_ITERATION_4 160
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 161 && BOOST_PP_ITERATION_FINISH_4 >= 161
-# define BOOST_PP_ITERATION_4 161
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 162 && BOOST_PP_ITERATION_FINISH_4 >= 162
-# define BOOST_PP_ITERATION_4 162
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 163 && BOOST_PP_ITERATION_FINISH_4 >= 163
-# define BOOST_PP_ITERATION_4 163
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 164 && BOOST_PP_ITERATION_FINISH_4 >= 164
-# define BOOST_PP_ITERATION_4 164
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 165 && BOOST_PP_ITERATION_FINISH_4 >= 165
-# define BOOST_PP_ITERATION_4 165
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 166 && BOOST_PP_ITERATION_FINISH_4 >= 166
-# define BOOST_PP_ITERATION_4 166
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 167 && BOOST_PP_ITERATION_FINISH_4 >= 167
-# define BOOST_PP_ITERATION_4 167
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 168 && BOOST_PP_ITERATION_FINISH_4 >= 168
-# define BOOST_PP_ITERATION_4 168
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 169 && BOOST_PP_ITERATION_FINISH_4 >= 169
-# define BOOST_PP_ITERATION_4 169
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 170 && BOOST_PP_ITERATION_FINISH_4 >= 170
-# define BOOST_PP_ITERATION_4 170
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 171 && BOOST_PP_ITERATION_FINISH_4 >= 171
-# define BOOST_PP_ITERATION_4 171
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 172 && BOOST_PP_ITERATION_FINISH_4 >= 172
-# define BOOST_PP_ITERATION_4 172
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 173 && BOOST_PP_ITERATION_FINISH_4 >= 173
-# define BOOST_PP_ITERATION_4 173
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 174 && BOOST_PP_ITERATION_FINISH_4 >= 174
-# define BOOST_PP_ITERATION_4 174
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 175 && BOOST_PP_ITERATION_FINISH_4 >= 175
-# define BOOST_PP_ITERATION_4 175
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 176 && BOOST_PP_ITERATION_FINISH_4 >= 176
-# define BOOST_PP_ITERATION_4 176
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 177 && BOOST_PP_ITERATION_FINISH_4 >= 177
-# define BOOST_PP_ITERATION_4 177
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 178 && BOOST_PP_ITERATION_FINISH_4 >= 178
-# define BOOST_PP_ITERATION_4 178
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 179 && BOOST_PP_ITERATION_FINISH_4 >= 179
-# define BOOST_PP_ITERATION_4 179
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 180 && BOOST_PP_ITERATION_FINISH_4 >= 180
-# define BOOST_PP_ITERATION_4 180
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 181 && BOOST_PP_ITERATION_FINISH_4 >= 181
-# define BOOST_PP_ITERATION_4 181
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 182 && BOOST_PP_ITERATION_FINISH_4 >= 182
-# define BOOST_PP_ITERATION_4 182
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 183 && BOOST_PP_ITERATION_FINISH_4 >= 183
-# define BOOST_PP_ITERATION_4 183
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 184 && BOOST_PP_ITERATION_FINISH_4 >= 184
-# define BOOST_PP_ITERATION_4 184
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 185 && BOOST_PP_ITERATION_FINISH_4 >= 185
-# define BOOST_PP_ITERATION_4 185
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 186 && BOOST_PP_ITERATION_FINISH_4 >= 186
-# define BOOST_PP_ITERATION_4 186
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 187 && BOOST_PP_ITERATION_FINISH_4 >= 187
-# define BOOST_PP_ITERATION_4 187
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 188 && BOOST_PP_ITERATION_FINISH_4 >= 188
-# define BOOST_PP_ITERATION_4 188
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 189 && BOOST_PP_ITERATION_FINISH_4 >= 189
-# define BOOST_PP_ITERATION_4 189
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 190 && BOOST_PP_ITERATION_FINISH_4 >= 190
-# define BOOST_PP_ITERATION_4 190
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 191 && BOOST_PP_ITERATION_FINISH_4 >= 191
-# define BOOST_PP_ITERATION_4 191
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 192 && BOOST_PP_ITERATION_FINISH_4 >= 192
-# define BOOST_PP_ITERATION_4 192
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 193 && BOOST_PP_ITERATION_FINISH_4 >= 193
-# define BOOST_PP_ITERATION_4 193
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 194 && BOOST_PP_ITERATION_FINISH_4 >= 194
-# define BOOST_PP_ITERATION_4 194
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 195 && BOOST_PP_ITERATION_FINISH_4 >= 195
-# define BOOST_PP_ITERATION_4 195
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 196 && BOOST_PP_ITERATION_FINISH_4 >= 196
-# define BOOST_PP_ITERATION_4 196
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 197 && BOOST_PP_ITERATION_FINISH_4 >= 197
-# define BOOST_PP_ITERATION_4 197
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 198 && BOOST_PP_ITERATION_FINISH_4 >= 198
-# define BOOST_PP_ITERATION_4 198
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 199 && BOOST_PP_ITERATION_FINISH_4 >= 199
-# define BOOST_PP_ITERATION_4 199
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 200 && BOOST_PP_ITERATION_FINISH_4 >= 200
-# define BOOST_PP_ITERATION_4 200
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 201 && BOOST_PP_ITERATION_FINISH_4 >= 201
-# define BOOST_PP_ITERATION_4 201
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 202 && BOOST_PP_ITERATION_FINISH_4 >= 202
-# define BOOST_PP_ITERATION_4 202
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 203 && BOOST_PP_ITERATION_FINISH_4 >= 203
-# define BOOST_PP_ITERATION_4 203
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 204 && BOOST_PP_ITERATION_FINISH_4 >= 204
-# define BOOST_PP_ITERATION_4 204
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 205 && BOOST_PP_ITERATION_FINISH_4 >= 205
-# define BOOST_PP_ITERATION_4 205
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 206 && BOOST_PP_ITERATION_FINISH_4 >= 206
-# define BOOST_PP_ITERATION_4 206
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 207 && BOOST_PP_ITERATION_FINISH_4 >= 207
-# define BOOST_PP_ITERATION_4 207
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 208 && BOOST_PP_ITERATION_FINISH_4 >= 208
-# define BOOST_PP_ITERATION_4 208
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 209 && BOOST_PP_ITERATION_FINISH_4 >= 209
-# define BOOST_PP_ITERATION_4 209
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 210 && BOOST_PP_ITERATION_FINISH_4 >= 210
-# define BOOST_PP_ITERATION_4 210
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 211 && BOOST_PP_ITERATION_FINISH_4 >= 211
-# define BOOST_PP_ITERATION_4 211
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 212 && BOOST_PP_ITERATION_FINISH_4 >= 212
-# define BOOST_PP_ITERATION_4 212
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 213 && BOOST_PP_ITERATION_FINISH_4 >= 213
-# define BOOST_PP_ITERATION_4 213
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 214 && BOOST_PP_ITERATION_FINISH_4 >= 214
-# define BOOST_PP_ITERATION_4 214
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 215 && BOOST_PP_ITERATION_FINISH_4 >= 215
-# define BOOST_PP_ITERATION_4 215
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 216 && BOOST_PP_ITERATION_FINISH_4 >= 216
-# define BOOST_PP_ITERATION_4 216
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 217 && BOOST_PP_ITERATION_FINISH_4 >= 217
-# define BOOST_PP_ITERATION_4 217
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 218 && BOOST_PP_ITERATION_FINISH_4 >= 218
-# define BOOST_PP_ITERATION_4 218
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 219 && BOOST_PP_ITERATION_FINISH_4 >= 219
-# define BOOST_PP_ITERATION_4 219
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 220 && BOOST_PP_ITERATION_FINISH_4 >= 220
-# define BOOST_PP_ITERATION_4 220
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 221 && BOOST_PP_ITERATION_FINISH_4 >= 221
-# define BOOST_PP_ITERATION_4 221
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 222 && BOOST_PP_ITERATION_FINISH_4 >= 222
-# define BOOST_PP_ITERATION_4 222
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 223 && BOOST_PP_ITERATION_FINISH_4 >= 223
-# define BOOST_PP_ITERATION_4 223
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 224 && BOOST_PP_ITERATION_FINISH_4 >= 224
-# define BOOST_PP_ITERATION_4 224
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 225 && BOOST_PP_ITERATION_FINISH_4 >= 225
-# define BOOST_PP_ITERATION_4 225
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 226 && BOOST_PP_ITERATION_FINISH_4 >= 226
-# define BOOST_PP_ITERATION_4 226
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 227 && BOOST_PP_ITERATION_FINISH_4 >= 227
-# define BOOST_PP_ITERATION_4 227
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 228 && BOOST_PP_ITERATION_FINISH_4 >= 228
-# define BOOST_PP_ITERATION_4 228
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 229 && BOOST_PP_ITERATION_FINISH_4 >= 229
-# define BOOST_PP_ITERATION_4 229
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 230 && BOOST_PP_ITERATION_FINISH_4 >= 230
-# define BOOST_PP_ITERATION_4 230
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 231 && BOOST_PP_ITERATION_FINISH_4 >= 231
-# define BOOST_PP_ITERATION_4 231
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 232 && BOOST_PP_ITERATION_FINISH_4 >= 232
-# define BOOST_PP_ITERATION_4 232
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 233 && BOOST_PP_ITERATION_FINISH_4 >= 233
-# define BOOST_PP_ITERATION_4 233
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 234 && BOOST_PP_ITERATION_FINISH_4 >= 234
-# define BOOST_PP_ITERATION_4 234
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 235 && BOOST_PP_ITERATION_FINISH_4 >= 235
-# define BOOST_PP_ITERATION_4 235
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 236 && BOOST_PP_ITERATION_FINISH_4 >= 236
-# define BOOST_PP_ITERATION_4 236
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 237 && BOOST_PP_ITERATION_FINISH_4 >= 237
-# define BOOST_PP_ITERATION_4 237
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 238 && BOOST_PP_ITERATION_FINISH_4 >= 238
-# define BOOST_PP_ITERATION_4 238
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 239 && BOOST_PP_ITERATION_FINISH_4 >= 239
-# define BOOST_PP_ITERATION_4 239
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 240 && BOOST_PP_ITERATION_FINISH_4 >= 240
-# define BOOST_PP_ITERATION_4 240
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 241 && BOOST_PP_ITERATION_FINISH_4 >= 241
-# define BOOST_PP_ITERATION_4 241
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 242 && BOOST_PP_ITERATION_FINISH_4 >= 242
-# define BOOST_PP_ITERATION_4 242
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 243 && BOOST_PP_ITERATION_FINISH_4 >= 243
-# define BOOST_PP_ITERATION_4 243
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 244 && BOOST_PP_ITERATION_FINISH_4 >= 244
-# define BOOST_PP_ITERATION_4 244
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 245 && BOOST_PP_ITERATION_FINISH_4 >= 245
-# define BOOST_PP_ITERATION_4 245
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 246 && BOOST_PP_ITERATION_FINISH_4 >= 246
-# define BOOST_PP_ITERATION_4 246
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 247 && BOOST_PP_ITERATION_FINISH_4 >= 247
-# define BOOST_PP_ITERATION_4 247
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 248 && BOOST_PP_ITERATION_FINISH_4 >= 248
-# define BOOST_PP_ITERATION_4 248
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 249 && BOOST_PP_ITERATION_FINISH_4 >= 249
-# define BOOST_PP_ITERATION_4 249
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 250 && BOOST_PP_ITERATION_FINISH_4 >= 250
-# define BOOST_PP_ITERATION_4 250
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 251 && BOOST_PP_ITERATION_FINISH_4 >= 251
-# define BOOST_PP_ITERATION_4 251
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 252 && BOOST_PP_ITERATION_FINISH_4 >= 252
-# define BOOST_PP_ITERATION_4 252
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 253 && BOOST_PP_ITERATION_FINISH_4 >= 253
-# define BOOST_PP_ITERATION_4 253
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 254 && BOOST_PP_ITERATION_FINISH_4 >= 254
-# define BOOST_PP_ITERATION_4 254
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 255 && BOOST_PP_ITERATION_FINISH_4 >= 255
-# define BOOST_PP_ITERATION_4 255
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_START_4 <= 256 && BOOST_PP_ITERATION_FINISH_4 >= 256
-# define BOOST_PP_ITERATION_4 256
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# endif
-#
-# undef BOOST_PP_ITERATION_DEPTH
-# define BOOST_PP_ITERATION_DEPTH() 3
-#
-# undef BOOST_PP_ITERATION_START_4
-# undef BOOST_PP_ITERATION_FINISH_4
-# undef BOOST_PP_FILENAME_4
-#
-# undef BOOST_PP_ITERATION_FLAGS_4
-# undef BOOST_PP_ITERATION_PARAMS_4
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward5.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward5.hpp
deleted file mode 100644
index 0b9423e..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/forward5.hpp
+++ /dev/null
@@ -1,1338 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if defined(BOOST_PP_ITERATION_LIMITS)
-# if !defined(BOOST_PP_FILENAME_5)
-# error BOOST_PP_ERROR: depth #5 filename is not defined
-# endif
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/lower5.hpp>
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/upper5.hpp>
-# define BOOST_PP_ITERATION_FLAGS_5() 0
-# undef BOOST_PP_ITERATION_LIMITS
-# elif defined(BOOST_PP_ITERATION_PARAMS_5)
-# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_5)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/lower5.hpp>
-# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_5)
-# include <cutl/details/boost/preprocessor/iteration/detail/bounds/upper5.hpp>
-# define BOOST_PP_FILENAME_5 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_5)
-# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_5) >= 4
-# define BOOST_PP_ITERATION_FLAGS_5() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_5)
-# else
-# define BOOST_PP_ITERATION_FLAGS_5() 0
-# endif
-# else
-# error BOOST_PP_ERROR: depth #5 iteration boundaries or filename not defined
-# endif
-#
-# undef BOOST_PP_ITERATION_DEPTH
-# define BOOST_PP_ITERATION_DEPTH() 5
-#
-# if (BOOST_PP_ITERATION_START_5) > (BOOST_PP_ITERATION_FINISH_5)
-# include <cutl/details/boost/preprocessor/iteration/detail/iter/reverse5.hpp>
-# else
-# if BOOST_PP_ITERATION_START_5 <= 0 && BOOST_PP_ITERATION_FINISH_5 >= 0
-# define BOOST_PP_ITERATION_5 0
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 1 && BOOST_PP_ITERATION_FINISH_5 >= 1
-# define BOOST_PP_ITERATION_5 1
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 2 && BOOST_PP_ITERATION_FINISH_5 >= 2
-# define BOOST_PP_ITERATION_5 2
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 3 && BOOST_PP_ITERATION_FINISH_5 >= 3
-# define BOOST_PP_ITERATION_5 3
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 4 && BOOST_PP_ITERATION_FINISH_5 >= 4
-# define BOOST_PP_ITERATION_5 4
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 5 && BOOST_PP_ITERATION_FINISH_5 >= 5
-# define BOOST_PP_ITERATION_5 5
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 6 && BOOST_PP_ITERATION_FINISH_5 >= 6
-# define BOOST_PP_ITERATION_5 6
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 7 && BOOST_PP_ITERATION_FINISH_5 >= 7
-# define BOOST_PP_ITERATION_5 7
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 8 && BOOST_PP_ITERATION_FINISH_5 >= 8
-# define BOOST_PP_ITERATION_5 8
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 9 && BOOST_PP_ITERATION_FINISH_5 >= 9
-# define BOOST_PP_ITERATION_5 9
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 10 && BOOST_PP_ITERATION_FINISH_5 >= 10
-# define BOOST_PP_ITERATION_5 10
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 11 && BOOST_PP_ITERATION_FINISH_5 >= 11
-# define BOOST_PP_ITERATION_5 11
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 12 && BOOST_PP_ITERATION_FINISH_5 >= 12
-# define BOOST_PP_ITERATION_5 12
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 13 && BOOST_PP_ITERATION_FINISH_5 >= 13
-# define BOOST_PP_ITERATION_5 13
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 14 && BOOST_PP_ITERATION_FINISH_5 >= 14
-# define BOOST_PP_ITERATION_5 14
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 15 && BOOST_PP_ITERATION_FINISH_5 >= 15
-# define BOOST_PP_ITERATION_5 15
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 16 && BOOST_PP_ITERATION_FINISH_5 >= 16
-# define BOOST_PP_ITERATION_5 16
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 17 && BOOST_PP_ITERATION_FINISH_5 >= 17
-# define BOOST_PP_ITERATION_5 17
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 18 && BOOST_PP_ITERATION_FINISH_5 >= 18
-# define BOOST_PP_ITERATION_5 18
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 19 && BOOST_PP_ITERATION_FINISH_5 >= 19
-# define BOOST_PP_ITERATION_5 19
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 20 && BOOST_PP_ITERATION_FINISH_5 >= 20
-# define BOOST_PP_ITERATION_5 20
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 21 && BOOST_PP_ITERATION_FINISH_5 >= 21
-# define BOOST_PP_ITERATION_5 21
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 22 && BOOST_PP_ITERATION_FINISH_5 >= 22
-# define BOOST_PP_ITERATION_5 22
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 23 && BOOST_PP_ITERATION_FINISH_5 >= 23
-# define BOOST_PP_ITERATION_5 23
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 24 && BOOST_PP_ITERATION_FINISH_5 >= 24
-# define BOOST_PP_ITERATION_5 24
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 25 && BOOST_PP_ITERATION_FINISH_5 >= 25
-# define BOOST_PP_ITERATION_5 25
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 26 && BOOST_PP_ITERATION_FINISH_5 >= 26
-# define BOOST_PP_ITERATION_5 26
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 27 && BOOST_PP_ITERATION_FINISH_5 >= 27
-# define BOOST_PP_ITERATION_5 27
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 28 && BOOST_PP_ITERATION_FINISH_5 >= 28
-# define BOOST_PP_ITERATION_5 28
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 29 && BOOST_PP_ITERATION_FINISH_5 >= 29
-# define BOOST_PP_ITERATION_5 29
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 30 && BOOST_PP_ITERATION_FINISH_5 >= 30
-# define BOOST_PP_ITERATION_5 30
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 31 && BOOST_PP_ITERATION_FINISH_5 >= 31
-# define BOOST_PP_ITERATION_5 31
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 32 && BOOST_PP_ITERATION_FINISH_5 >= 32
-# define BOOST_PP_ITERATION_5 32
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 33 && BOOST_PP_ITERATION_FINISH_5 >= 33
-# define BOOST_PP_ITERATION_5 33
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 34 && BOOST_PP_ITERATION_FINISH_5 >= 34
-# define BOOST_PP_ITERATION_5 34
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 35 && BOOST_PP_ITERATION_FINISH_5 >= 35
-# define BOOST_PP_ITERATION_5 35
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 36 && BOOST_PP_ITERATION_FINISH_5 >= 36
-# define BOOST_PP_ITERATION_5 36
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 37 && BOOST_PP_ITERATION_FINISH_5 >= 37
-# define BOOST_PP_ITERATION_5 37
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 38 && BOOST_PP_ITERATION_FINISH_5 >= 38
-# define BOOST_PP_ITERATION_5 38
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 39 && BOOST_PP_ITERATION_FINISH_5 >= 39
-# define BOOST_PP_ITERATION_5 39
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 40 && BOOST_PP_ITERATION_FINISH_5 >= 40
-# define BOOST_PP_ITERATION_5 40
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 41 && BOOST_PP_ITERATION_FINISH_5 >= 41
-# define BOOST_PP_ITERATION_5 41
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 42 && BOOST_PP_ITERATION_FINISH_5 >= 42
-# define BOOST_PP_ITERATION_5 42
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 43 && BOOST_PP_ITERATION_FINISH_5 >= 43
-# define BOOST_PP_ITERATION_5 43
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 44 && BOOST_PP_ITERATION_FINISH_5 >= 44
-# define BOOST_PP_ITERATION_5 44
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 45 && BOOST_PP_ITERATION_FINISH_5 >= 45
-# define BOOST_PP_ITERATION_5 45
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 46 && BOOST_PP_ITERATION_FINISH_5 >= 46
-# define BOOST_PP_ITERATION_5 46
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 47 && BOOST_PP_ITERATION_FINISH_5 >= 47
-# define BOOST_PP_ITERATION_5 47
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 48 && BOOST_PP_ITERATION_FINISH_5 >= 48
-# define BOOST_PP_ITERATION_5 48
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 49 && BOOST_PP_ITERATION_FINISH_5 >= 49
-# define BOOST_PP_ITERATION_5 49
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 50 && BOOST_PP_ITERATION_FINISH_5 >= 50
-# define BOOST_PP_ITERATION_5 50
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 51 && BOOST_PP_ITERATION_FINISH_5 >= 51
-# define BOOST_PP_ITERATION_5 51
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 52 && BOOST_PP_ITERATION_FINISH_5 >= 52
-# define BOOST_PP_ITERATION_5 52
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 53 && BOOST_PP_ITERATION_FINISH_5 >= 53
-# define BOOST_PP_ITERATION_5 53
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 54 && BOOST_PP_ITERATION_FINISH_5 >= 54
-# define BOOST_PP_ITERATION_5 54
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 55 && BOOST_PP_ITERATION_FINISH_5 >= 55
-# define BOOST_PP_ITERATION_5 55
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 56 && BOOST_PP_ITERATION_FINISH_5 >= 56
-# define BOOST_PP_ITERATION_5 56
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 57 && BOOST_PP_ITERATION_FINISH_5 >= 57
-# define BOOST_PP_ITERATION_5 57
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 58 && BOOST_PP_ITERATION_FINISH_5 >= 58
-# define BOOST_PP_ITERATION_5 58
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 59 && BOOST_PP_ITERATION_FINISH_5 >= 59
-# define BOOST_PP_ITERATION_5 59
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 60 && BOOST_PP_ITERATION_FINISH_5 >= 60
-# define BOOST_PP_ITERATION_5 60
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 61 && BOOST_PP_ITERATION_FINISH_5 >= 61
-# define BOOST_PP_ITERATION_5 61
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 62 && BOOST_PP_ITERATION_FINISH_5 >= 62
-# define BOOST_PP_ITERATION_5 62
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 63 && BOOST_PP_ITERATION_FINISH_5 >= 63
-# define BOOST_PP_ITERATION_5 63
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 64 && BOOST_PP_ITERATION_FINISH_5 >= 64
-# define BOOST_PP_ITERATION_5 64
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 65 && BOOST_PP_ITERATION_FINISH_5 >= 65
-# define BOOST_PP_ITERATION_5 65
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 66 && BOOST_PP_ITERATION_FINISH_5 >= 66
-# define BOOST_PP_ITERATION_5 66
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 67 && BOOST_PP_ITERATION_FINISH_5 >= 67
-# define BOOST_PP_ITERATION_5 67
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 68 && BOOST_PP_ITERATION_FINISH_5 >= 68
-# define BOOST_PP_ITERATION_5 68
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 69 && BOOST_PP_ITERATION_FINISH_5 >= 69
-# define BOOST_PP_ITERATION_5 69
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 70 && BOOST_PP_ITERATION_FINISH_5 >= 70
-# define BOOST_PP_ITERATION_5 70
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 71 && BOOST_PP_ITERATION_FINISH_5 >= 71
-# define BOOST_PP_ITERATION_5 71
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 72 && BOOST_PP_ITERATION_FINISH_5 >= 72
-# define BOOST_PP_ITERATION_5 72
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 73 && BOOST_PP_ITERATION_FINISH_5 >= 73
-# define BOOST_PP_ITERATION_5 73
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 74 && BOOST_PP_ITERATION_FINISH_5 >= 74
-# define BOOST_PP_ITERATION_5 74
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 75 && BOOST_PP_ITERATION_FINISH_5 >= 75
-# define BOOST_PP_ITERATION_5 75
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 76 && BOOST_PP_ITERATION_FINISH_5 >= 76
-# define BOOST_PP_ITERATION_5 76
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 77 && BOOST_PP_ITERATION_FINISH_5 >= 77
-# define BOOST_PP_ITERATION_5 77
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 78 && BOOST_PP_ITERATION_FINISH_5 >= 78
-# define BOOST_PP_ITERATION_5 78
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 79 && BOOST_PP_ITERATION_FINISH_5 >= 79
-# define BOOST_PP_ITERATION_5 79
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 80 && BOOST_PP_ITERATION_FINISH_5 >= 80
-# define BOOST_PP_ITERATION_5 80
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 81 && BOOST_PP_ITERATION_FINISH_5 >= 81
-# define BOOST_PP_ITERATION_5 81
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 82 && BOOST_PP_ITERATION_FINISH_5 >= 82
-# define BOOST_PP_ITERATION_5 82
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 83 && BOOST_PP_ITERATION_FINISH_5 >= 83
-# define BOOST_PP_ITERATION_5 83
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 84 && BOOST_PP_ITERATION_FINISH_5 >= 84
-# define BOOST_PP_ITERATION_5 84
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 85 && BOOST_PP_ITERATION_FINISH_5 >= 85
-# define BOOST_PP_ITERATION_5 85
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 86 && BOOST_PP_ITERATION_FINISH_5 >= 86
-# define BOOST_PP_ITERATION_5 86
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 87 && BOOST_PP_ITERATION_FINISH_5 >= 87
-# define BOOST_PP_ITERATION_5 87
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 88 && BOOST_PP_ITERATION_FINISH_5 >= 88
-# define BOOST_PP_ITERATION_5 88
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 89 && BOOST_PP_ITERATION_FINISH_5 >= 89
-# define BOOST_PP_ITERATION_5 89
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 90 && BOOST_PP_ITERATION_FINISH_5 >= 90
-# define BOOST_PP_ITERATION_5 90
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 91 && BOOST_PP_ITERATION_FINISH_5 >= 91
-# define BOOST_PP_ITERATION_5 91
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 92 && BOOST_PP_ITERATION_FINISH_5 >= 92
-# define BOOST_PP_ITERATION_5 92
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 93 && BOOST_PP_ITERATION_FINISH_5 >= 93
-# define BOOST_PP_ITERATION_5 93
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 94 && BOOST_PP_ITERATION_FINISH_5 >= 94
-# define BOOST_PP_ITERATION_5 94
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 95 && BOOST_PP_ITERATION_FINISH_5 >= 95
-# define BOOST_PP_ITERATION_5 95
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 96 && BOOST_PP_ITERATION_FINISH_5 >= 96
-# define BOOST_PP_ITERATION_5 96
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 97 && BOOST_PP_ITERATION_FINISH_5 >= 97
-# define BOOST_PP_ITERATION_5 97
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 98 && BOOST_PP_ITERATION_FINISH_5 >= 98
-# define BOOST_PP_ITERATION_5 98
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 99 && BOOST_PP_ITERATION_FINISH_5 >= 99
-# define BOOST_PP_ITERATION_5 99
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 100 && BOOST_PP_ITERATION_FINISH_5 >= 100
-# define BOOST_PP_ITERATION_5 100
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 101 && BOOST_PP_ITERATION_FINISH_5 >= 101
-# define BOOST_PP_ITERATION_5 101
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 102 && BOOST_PP_ITERATION_FINISH_5 >= 102
-# define BOOST_PP_ITERATION_5 102
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 103 && BOOST_PP_ITERATION_FINISH_5 >= 103
-# define BOOST_PP_ITERATION_5 103
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 104 && BOOST_PP_ITERATION_FINISH_5 >= 104
-# define BOOST_PP_ITERATION_5 104
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 105 && BOOST_PP_ITERATION_FINISH_5 >= 105
-# define BOOST_PP_ITERATION_5 105
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 106 && BOOST_PP_ITERATION_FINISH_5 >= 106
-# define BOOST_PP_ITERATION_5 106
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 107 && BOOST_PP_ITERATION_FINISH_5 >= 107
-# define BOOST_PP_ITERATION_5 107
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 108 && BOOST_PP_ITERATION_FINISH_5 >= 108
-# define BOOST_PP_ITERATION_5 108
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 109 && BOOST_PP_ITERATION_FINISH_5 >= 109
-# define BOOST_PP_ITERATION_5 109
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 110 && BOOST_PP_ITERATION_FINISH_5 >= 110
-# define BOOST_PP_ITERATION_5 110
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 111 && BOOST_PP_ITERATION_FINISH_5 >= 111
-# define BOOST_PP_ITERATION_5 111
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 112 && BOOST_PP_ITERATION_FINISH_5 >= 112
-# define BOOST_PP_ITERATION_5 112
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 113 && BOOST_PP_ITERATION_FINISH_5 >= 113
-# define BOOST_PP_ITERATION_5 113
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 114 && BOOST_PP_ITERATION_FINISH_5 >= 114
-# define BOOST_PP_ITERATION_5 114
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 115 && BOOST_PP_ITERATION_FINISH_5 >= 115
-# define BOOST_PP_ITERATION_5 115
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 116 && BOOST_PP_ITERATION_FINISH_5 >= 116
-# define BOOST_PP_ITERATION_5 116
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 117 && BOOST_PP_ITERATION_FINISH_5 >= 117
-# define BOOST_PP_ITERATION_5 117
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 118 && BOOST_PP_ITERATION_FINISH_5 >= 118
-# define BOOST_PP_ITERATION_5 118
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 119 && BOOST_PP_ITERATION_FINISH_5 >= 119
-# define BOOST_PP_ITERATION_5 119
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 120 && BOOST_PP_ITERATION_FINISH_5 >= 120
-# define BOOST_PP_ITERATION_5 120
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 121 && BOOST_PP_ITERATION_FINISH_5 >= 121
-# define BOOST_PP_ITERATION_5 121
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 122 && BOOST_PP_ITERATION_FINISH_5 >= 122
-# define BOOST_PP_ITERATION_5 122
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 123 && BOOST_PP_ITERATION_FINISH_5 >= 123
-# define BOOST_PP_ITERATION_5 123
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 124 && BOOST_PP_ITERATION_FINISH_5 >= 124
-# define BOOST_PP_ITERATION_5 124
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 125 && BOOST_PP_ITERATION_FINISH_5 >= 125
-# define BOOST_PP_ITERATION_5 125
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 126 && BOOST_PP_ITERATION_FINISH_5 >= 126
-# define BOOST_PP_ITERATION_5 126
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 127 && BOOST_PP_ITERATION_FINISH_5 >= 127
-# define BOOST_PP_ITERATION_5 127
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 128 && BOOST_PP_ITERATION_FINISH_5 >= 128
-# define BOOST_PP_ITERATION_5 128
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 129 && BOOST_PP_ITERATION_FINISH_5 >= 129
-# define BOOST_PP_ITERATION_5 129
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 130 && BOOST_PP_ITERATION_FINISH_5 >= 130
-# define BOOST_PP_ITERATION_5 130
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 131 && BOOST_PP_ITERATION_FINISH_5 >= 131
-# define BOOST_PP_ITERATION_5 131
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 132 && BOOST_PP_ITERATION_FINISH_5 >= 132
-# define BOOST_PP_ITERATION_5 132
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 133 && BOOST_PP_ITERATION_FINISH_5 >= 133
-# define BOOST_PP_ITERATION_5 133
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 134 && BOOST_PP_ITERATION_FINISH_5 >= 134
-# define BOOST_PP_ITERATION_5 134
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 135 && BOOST_PP_ITERATION_FINISH_5 >= 135
-# define BOOST_PP_ITERATION_5 135
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 136 && BOOST_PP_ITERATION_FINISH_5 >= 136
-# define BOOST_PP_ITERATION_5 136
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 137 && BOOST_PP_ITERATION_FINISH_5 >= 137
-# define BOOST_PP_ITERATION_5 137
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 138 && BOOST_PP_ITERATION_FINISH_5 >= 138
-# define BOOST_PP_ITERATION_5 138
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 139 && BOOST_PP_ITERATION_FINISH_5 >= 139
-# define BOOST_PP_ITERATION_5 139
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 140 && BOOST_PP_ITERATION_FINISH_5 >= 140
-# define BOOST_PP_ITERATION_5 140
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 141 && BOOST_PP_ITERATION_FINISH_5 >= 141
-# define BOOST_PP_ITERATION_5 141
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 142 && BOOST_PP_ITERATION_FINISH_5 >= 142
-# define BOOST_PP_ITERATION_5 142
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 143 && BOOST_PP_ITERATION_FINISH_5 >= 143
-# define BOOST_PP_ITERATION_5 143
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 144 && BOOST_PP_ITERATION_FINISH_5 >= 144
-# define BOOST_PP_ITERATION_5 144
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 145 && BOOST_PP_ITERATION_FINISH_5 >= 145
-# define BOOST_PP_ITERATION_5 145
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 146 && BOOST_PP_ITERATION_FINISH_5 >= 146
-# define BOOST_PP_ITERATION_5 146
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 147 && BOOST_PP_ITERATION_FINISH_5 >= 147
-# define BOOST_PP_ITERATION_5 147
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 148 && BOOST_PP_ITERATION_FINISH_5 >= 148
-# define BOOST_PP_ITERATION_5 148
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 149 && BOOST_PP_ITERATION_FINISH_5 >= 149
-# define BOOST_PP_ITERATION_5 149
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 150 && BOOST_PP_ITERATION_FINISH_5 >= 150
-# define BOOST_PP_ITERATION_5 150
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 151 && BOOST_PP_ITERATION_FINISH_5 >= 151
-# define BOOST_PP_ITERATION_5 151
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 152 && BOOST_PP_ITERATION_FINISH_5 >= 152
-# define BOOST_PP_ITERATION_5 152
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 153 && BOOST_PP_ITERATION_FINISH_5 >= 153
-# define BOOST_PP_ITERATION_5 153
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 154 && BOOST_PP_ITERATION_FINISH_5 >= 154
-# define BOOST_PP_ITERATION_5 154
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 155 && BOOST_PP_ITERATION_FINISH_5 >= 155
-# define BOOST_PP_ITERATION_5 155
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 156 && BOOST_PP_ITERATION_FINISH_5 >= 156
-# define BOOST_PP_ITERATION_5 156
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 157 && BOOST_PP_ITERATION_FINISH_5 >= 157
-# define BOOST_PP_ITERATION_5 157
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 158 && BOOST_PP_ITERATION_FINISH_5 >= 158
-# define BOOST_PP_ITERATION_5 158
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 159 && BOOST_PP_ITERATION_FINISH_5 >= 159
-# define BOOST_PP_ITERATION_5 159
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 160 && BOOST_PP_ITERATION_FINISH_5 >= 160
-# define BOOST_PP_ITERATION_5 160
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 161 && BOOST_PP_ITERATION_FINISH_5 >= 161
-# define BOOST_PP_ITERATION_5 161
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 162 && BOOST_PP_ITERATION_FINISH_5 >= 162
-# define BOOST_PP_ITERATION_5 162
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 163 && BOOST_PP_ITERATION_FINISH_5 >= 163
-# define BOOST_PP_ITERATION_5 163
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 164 && BOOST_PP_ITERATION_FINISH_5 >= 164
-# define BOOST_PP_ITERATION_5 164
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 165 && BOOST_PP_ITERATION_FINISH_5 >= 165
-# define BOOST_PP_ITERATION_5 165
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 166 && BOOST_PP_ITERATION_FINISH_5 >= 166
-# define BOOST_PP_ITERATION_5 166
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 167 && BOOST_PP_ITERATION_FINISH_5 >= 167
-# define BOOST_PP_ITERATION_5 167
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 168 && BOOST_PP_ITERATION_FINISH_5 >= 168
-# define BOOST_PP_ITERATION_5 168
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 169 && BOOST_PP_ITERATION_FINISH_5 >= 169
-# define BOOST_PP_ITERATION_5 169
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 170 && BOOST_PP_ITERATION_FINISH_5 >= 170
-# define BOOST_PP_ITERATION_5 170
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 171 && BOOST_PP_ITERATION_FINISH_5 >= 171
-# define BOOST_PP_ITERATION_5 171
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 172 && BOOST_PP_ITERATION_FINISH_5 >= 172
-# define BOOST_PP_ITERATION_5 172
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 173 && BOOST_PP_ITERATION_FINISH_5 >= 173
-# define BOOST_PP_ITERATION_5 173
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 174 && BOOST_PP_ITERATION_FINISH_5 >= 174
-# define BOOST_PP_ITERATION_5 174
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 175 && BOOST_PP_ITERATION_FINISH_5 >= 175
-# define BOOST_PP_ITERATION_5 175
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 176 && BOOST_PP_ITERATION_FINISH_5 >= 176
-# define BOOST_PP_ITERATION_5 176
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 177 && BOOST_PP_ITERATION_FINISH_5 >= 177
-# define BOOST_PP_ITERATION_5 177
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 178 && BOOST_PP_ITERATION_FINISH_5 >= 178
-# define BOOST_PP_ITERATION_5 178
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 179 && BOOST_PP_ITERATION_FINISH_5 >= 179
-# define BOOST_PP_ITERATION_5 179
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 180 && BOOST_PP_ITERATION_FINISH_5 >= 180
-# define BOOST_PP_ITERATION_5 180
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 181 && BOOST_PP_ITERATION_FINISH_5 >= 181
-# define BOOST_PP_ITERATION_5 181
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 182 && BOOST_PP_ITERATION_FINISH_5 >= 182
-# define BOOST_PP_ITERATION_5 182
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 183 && BOOST_PP_ITERATION_FINISH_5 >= 183
-# define BOOST_PP_ITERATION_5 183
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 184 && BOOST_PP_ITERATION_FINISH_5 >= 184
-# define BOOST_PP_ITERATION_5 184
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 185 && BOOST_PP_ITERATION_FINISH_5 >= 185
-# define BOOST_PP_ITERATION_5 185
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 186 && BOOST_PP_ITERATION_FINISH_5 >= 186
-# define BOOST_PP_ITERATION_5 186
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 187 && BOOST_PP_ITERATION_FINISH_5 >= 187
-# define BOOST_PP_ITERATION_5 187
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 188 && BOOST_PP_ITERATION_FINISH_5 >= 188
-# define BOOST_PP_ITERATION_5 188
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 189 && BOOST_PP_ITERATION_FINISH_5 >= 189
-# define BOOST_PP_ITERATION_5 189
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 190 && BOOST_PP_ITERATION_FINISH_5 >= 190
-# define BOOST_PP_ITERATION_5 190
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 191 && BOOST_PP_ITERATION_FINISH_5 >= 191
-# define BOOST_PP_ITERATION_5 191
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 192 && BOOST_PP_ITERATION_FINISH_5 >= 192
-# define BOOST_PP_ITERATION_5 192
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 193 && BOOST_PP_ITERATION_FINISH_5 >= 193
-# define BOOST_PP_ITERATION_5 193
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 194 && BOOST_PP_ITERATION_FINISH_5 >= 194
-# define BOOST_PP_ITERATION_5 194
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 195 && BOOST_PP_ITERATION_FINISH_5 >= 195
-# define BOOST_PP_ITERATION_5 195
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 196 && BOOST_PP_ITERATION_FINISH_5 >= 196
-# define BOOST_PP_ITERATION_5 196
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 197 && BOOST_PP_ITERATION_FINISH_5 >= 197
-# define BOOST_PP_ITERATION_5 197
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 198 && BOOST_PP_ITERATION_FINISH_5 >= 198
-# define BOOST_PP_ITERATION_5 198
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 199 && BOOST_PP_ITERATION_FINISH_5 >= 199
-# define BOOST_PP_ITERATION_5 199
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 200 && BOOST_PP_ITERATION_FINISH_5 >= 200
-# define BOOST_PP_ITERATION_5 200
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 201 && BOOST_PP_ITERATION_FINISH_5 >= 201
-# define BOOST_PP_ITERATION_5 201
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 202 && BOOST_PP_ITERATION_FINISH_5 >= 202
-# define BOOST_PP_ITERATION_5 202
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 203 && BOOST_PP_ITERATION_FINISH_5 >= 203
-# define BOOST_PP_ITERATION_5 203
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 204 && BOOST_PP_ITERATION_FINISH_5 >= 204
-# define BOOST_PP_ITERATION_5 204
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 205 && BOOST_PP_ITERATION_FINISH_5 >= 205
-# define BOOST_PP_ITERATION_5 205
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 206 && BOOST_PP_ITERATION_FINISH_5 >= 206
-# define BOOST_PP_ITERATION_5 206
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 207 && BOOST_PP_ITERATION_FINISH_5 >= 207
-# define BOOST_PP_ITERATION_5 207
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 208 && BOOST_PP_ITERATION_FINISH_5 >= 208
-# define BOOST_PP_ITERATION_5 208
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 209 && BOOST_PP_ITERATION_FINISH_5 >= 209
-# define BOOST_PP_ITERATION_5 209
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 210 && BOOST_PP_ITERATION_FINISH_5 >= 210
-# define BOOST_PP_ITERATION_5 210
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 211 && BOOST_PP_ITERATION_FINISH_5 >= 211
-# define BOOST_PP_ITERATION_5 211
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 212 && BOOST_PP_ITERATION_FINISH_5 >= 212
-# define BOOST_PP_ITERATION_5 212
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 213 && BOOST_PP_ITERATION_FINISH_5 >= 213
-# define BOOST_PP_ITERATION_5 213
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 214 && BOOST_PP_ITERATION_FINISH_5 >= 214
-# define BOOST_PP_ITERATION_5 214
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 215 && BOOST_PP_ITERATION_FINISH_5 >= 215
-# define BOOST_PP_ITERATION_5 215
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 216 && BOOST_PP_ITERATION_FINISH_5 >= 216
-# define BOOST_PP_ITERATION_5 216
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 217 && BOOST_PP_ITERATION_FINISH_5 >= 217
-# define BOOST_PP_ITERATION_5 217
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 218 && BOOST_PP_ITERATION_FINISH_5 >= 218
-# define BOOST_PP_ITERATION_5 218
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 219 && BOOST_PP_ITERATION_FINISH_5 >= 219
-# define BOOST_PP_ITERATION_5 219
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 220 && BOOST_PP_ITERATION_FINISH_5 >= 220
-# define BOOST_PP_ITERATION_5 220
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 221 && BOOST_PP_ITERATION_FINISH_5 >= 221
-# define BOOST_PP_ITERATION_5 221
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 222 && BOOST_PP_ITERATION_FINISH_5 >= 222
-# define BOOST_PP_ITERATION_5 222
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 223 && BOOST_PP_ITERATION_FINISH_5 >= 223
-# define BOOST_PP_ITERATION_5 223
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 224 && BOOST_PP_ITERATION_FINISH_5 >= 224
-# define BOOST_PP_ITERATION_5 224
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 225 && BOOST_PP_ITERATION_FINISH_5 >= 225
-# define BOOST_PP_ITERATION_5 225
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 226 && BOOST_PP_ITERATION_FINISH_5 >= 226
-# define BOOST_PP_ITERATION_5 226
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 227 && BOOST_PP_ITERATION_FINISH_5 >= 227
-# define BOOST_PP_ITERATION_5 227
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 228 && BOOST_PP_ITERATION_FINISH_5 >= 228
-# define BOOST_PP_ITERATION_5 228
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 229 && BOOST_PP_ITERATION_FINISH_5 >= 229
-# define BOOST_PP_ITERATION_5 229
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 230 && BOOST_PP_ITERATION_FINISH_5 >= 230
-# define BOOST_PP_ITERATION_5 230
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 231 && BOOST_PP_ITERATION_FINISH_5 >= 231
-# define BOOST_PP_ITERATION_5 231
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 232 && BOOST_PP_ITERATION_FINISH_5 >= 232
-# define BOOST_PP_ITERATION_5 232
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 233 && BOOST_PP_ITERATION_FINISH_5 >= 233
-# define BOOST_PP_ITERATION_5 233
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 234 && BOOST_PP_ITERATION_FINISH_5 >= 234
-# define BOOST_PP_ITERATION_5 234
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 235 && BOOST_PP_ITERATION_FINISH_5 >= 235
-# define BOOST_PP_ITERATION_5 235
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 236 && BOOST_PP_ITERATION_FINISH_5 >= 236
-# define BOOST_PP_ITERATION_5 236
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 237 && BOOST_PP_ITERATION_FINISH_5 >= 237
-# define BOOST_PP_ITERATION_5 237
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 238 && BOOST_PP_ITERATION_FINISH_5 >= 238
-# define BOOST_PP_ITERATION_5 238
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 239 && BOOST_PP_ITERATION_FINISH_5 >= 239
-# define BOOST_PP_ITERATION_5 239
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 240 && BOOST_PP_ITERATION_FINISH_5 >= 240
-# define BOOST_PP_ITERATION_5 240
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 241 && BOOST_PP_ITERATION_FINISH_5 >= 241
-# define BOOST_PP_ITERATION_5 241
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 242 && BOOST_PP_ITERATION_FINISH_5 >= 242
-# define BOOST_PP_ITERATION_5 242
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 243 && BOOST_PP_ITERATION_FINISH_5 >= 243
-# define BOOST_PP_ITERATION_5 243
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 244 && BOOST_PP_ITERATION_FINISH_5 >= 244
-# define BOOST_PP_ITERATION_5 244
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 245 && BOOST_PP_ITERATION_FINISH_5 >= 245
-# define BOOST_PP_ITERATION_5 245
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 246 && BOOST_PP_ITERATION_FINISH_5 >= 246
-# define BOOST_PP_ITERATION_5 246
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 247 && BOOST_PP_ITERATION_FINISH_5 >= 247
-# define BOOST_PP_ITERATION_5 247
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 248 && BOOST_PP_ITERATION_FINISH_5 >= 248
-# define BOOST_PP_ITERATION_5 248
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 249 && BOOST_PP_ITERATION_FINISH_5 >= 249
-# define BOOST_PP_ITERATION_5 249
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 250 && BOOST_PP_ITERATION_FINISH_5 >= 250
-# define BOOST_PP_ITERATION_5 250
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 251 && BOOST_PP_ITERATION_FINISH_5 >= 251
-# define BOOST_PP_ITERATION_5 251
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 252 && BOOST_PP_ITERATION_FINISH_5 >= 252
-# define BOOST_PP_ITERATION_5 252
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 253 && BOOST_PP_ITERATION_FINISH_5 >= 253
-# define BOOST_PP_ITERATION_5 253
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 254 && BOOST_PP_ITERATION_FINISH_5 >= 254
-# define BOOST_PP_ITERATION_5 254
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 255 && BOOST_PP_ITERATION_FINISH_5 >= 255
-# define BOOST_PP_ITERATION_5 255
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_START_5 <= 256 && BOOST_PP_ITERATION_FINISH_5 >= 256
-# define BOOST_PP_ITERATION_5 256
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# endif
-#
-# undef BOOST_PP_ITERATION_DEPTH
-# define BOOST_PP_ITERATION_DEPTH() 4
-#
-# undef BOOST_PP_ITERATION_START_5
-# undef BOOST_PP_ITERATION_FINISH_5
-# undef BOOST_PP_FILENAME_5
-#
-# undef BOOST_PP_ITERATION_FLAGS_5
-# undef BOOST_PP_ITERATION_PARAMS_5
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse1.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse1.hpp
deleted file mode 100644
index bf88d2f..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse1.hpp
+++ /dev/null
@@ -1,1296 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if BOOST_PP_ITERATION_FINISH_1 <= 256 && BOOST_PP_ITERATION_START_1 >= 256
-# define BOOST_PP_ITERATION_1 256
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 255 && BOOST_PP_ITERATION_START_1 >= 255
-# define BOOST_PP_ITERATION_1 255
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 254 && BOOST_PP_ITERATION_START_1 >= 254
-# define BOOST_PP_ITERATION_1 254
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 253 && BOOST_PP_ITERATION_START_1 >= 253
-# define BOOST_PP_ITERATION_1 253
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 252 && BOOST_PP_ITERATION_START_1 >= 252
-# define BOOST_PP_ITERATION_1 252
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 251 && BOOST_PP_ITERATION_START_1 >= 251
-# define BOOST_PP_ITERATION_1 251
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 250 && BOOST_PP_ITERATION_START_1 >= 250
-# define BOOST_PP_ITERATION_1 250
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 249 && BOOST_PP_ITERATION_START_1 >= 249
-# define BOOST_PP_ITERATION_1 249
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 248 && BOOST_PP_ITERATION_START_1 >= 248
-# define BOOST_PP_ITERATION_1 248
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 247 && BOOST_PP_ITERATION_START_1 >= 247
-# define BOOST_PP_ITERATION_1 247
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 246 && BOOST_PP_ITERATION_START_1 >= 246
-# define BOOST_PP_ITERATION_1 246
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 245 && BOOST_PP_ITERATION_START_1 >= 245
-# define BOOST_PP_ITERATION_1 245
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 244 && BOOST_PP_ITERATION_START_1 >= 244
-# define BOOST_PP_ITERATION_1 244
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 243 && BOOST_PP_ITERATION_START_1 >= 243
-# define BOOST_PP_ITERATION_1 243
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 242 && BOOST_PP_ITERATION_START_1 >= 242
-# define BOOST_PP_ITERATION_1 242
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 241 && BOOST_PP_ITERATION_START_1 >= 241
-# define BOOST_PP_ITERATION_1 241
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 240 && BOOST_PP_ITERATION_START_1 >= 240
-# define BOOST_PP_ITERATION_1 240
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 239 && BOOST_PP_ITERATION_START_1 >= 239
-# define BOOST_PP_ITERATION_1 239
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 238 && BOOST_PP_ITERATION_START_1 >= 238
-# define BOOST_PP_ITERATION_1 238
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 237 && BOOST_PP_ITERATION_START_1 >= 237
-# define BOOST_PP_ITERATION_1 237
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 236 && BOOST_PP_ITERATION_START_1 >= 236
-# define BOOST_PP_ITERATION_1 236
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 235 && BOOST_PP_ITERATION_START_1 >= 235
-# define BOOST_PP_ITERATION_1 235
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 234 && BOOST_PP_ITERATION_START_1 >= 234
-# define BOOST_PP_ITERATION_1 234
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 233 && BOOST_PP_ITERATION_START_1 >= 233
-# define BOOST_PP_ITERATION_1 233
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 232 && BOOST_PP_ITERATION_START_1 >= 232
-# define BOOST_PP_ITERATION_1 232
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 231 && BOOST_PP_ITERATION_START_1 >= 231
-# define BOOST_PP_ITERATION_1 231
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 230 && BOOST_PP_ITERATION_START_1 >= 230
-# define BOOST_PP_ITERATION_1 230
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 229 && BOOST_PP_ITERATION_START_1 >= 229
-# define BOOST_PP_ITERATION_1 229
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 228 && BOOST_PP_ITERATION_START_1 >= 228
-# define BOOST_PP_ITERATION_1 228
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 227 && BOOST_PP_ITERATION_START_1 >= 227
-# define BOOST_PP_ITERATION_1 227
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 226 && BOOST_PP_ITERATION_START_1 >= 226
-# define BOOST_PP_ITERATION_1 226
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 225 && BOOST_PP_ITERATION_START_1 >= 225
-# define BOOST_PP_ITERATION_1 225
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 224 && BOOST_PP_ITERATION_START_1 >= 224
-# define BOOST_PP_ITERATION_1 224
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 223 && BOOST_PP_ITERATION_START_1 >= 223
-# define BOOST_PP_ITERATION_1 223
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 222 && BOOST_PP_ITERATION_START_1 >= 222
-# define BOOST_PP_ITERATION_1 222
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 221 && BOOST_PP_ITERATION_START_1 >= 221
-# define BOOST_PP_ITERATION_1 221
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 220 && BOOST_PP_ITERATION_START_1 >= 220
-# define BOOST_PP_ITERATION_1 220
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 219 && BOOST_PP_ITERATION_START_1 >= 219
-# define BOOST_PP_ITERATION_1 219
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 218 && BOOST_PP_ITERATION_START_1 >= 218
-# define BOOST_PP_ITERATION_1 218
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 217 && BOOST_PP_ITERATION_START_1 >= 217
-# define BOOST_PP_ITERATION_1 217
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 216 && BOOST_PP_ITERATION_START_1 >= 216
-# define BOOST_PP_ITERATION_1 216
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 215 && BOOST_PP_ITERATION_START_1 >= 215
-# define BOOST_PP_ITERATION_1 215
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 214 && BOOST_PP_ITERATION_START_1 >= 214
-# define BOOST_PP_ITERATION_1 214
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 213 && BOOST_PP_ITERATION_START_1 >= 213
-# define BOOST_PP_ITERATION_1 213
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 212 && BOOST_PP_ITERATION_START_1 >= 212
-# define BOOST_PP_ITERATION_1 212
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 211 && BOOST_PP_ITERATION_START_1 >= 211
-# define BOOST_PP_ITERATION_1 211
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 210 && BOOST_PP_ITERATION_START_1 >= 210
-# define BOOST_PP_ITERATION_1 210
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 209 && BOOST_PP_ITERATION_START_1 >= 209
-# define BOOST_PP_ITERATION_1 209
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 208 && BOOST_PP_ITERATION_START_1 >= 208
-# define BOOST_PP_ITERATION_1 208
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 207 && BOOST_PP_ITERATION_START_1 >= 207
-# define BOOST_PP_ITERATION_1 207
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 206 && BOOST_PP_ITERATION_START_1 >= 206
-# define BOOST_PP_ITERATION_1 206
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 205 && BOOST_PP_ITERATION_START_1 >= 205
-# define BOOST_PP_ITERATION_1 205
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 204 && BOOST_PP_ITERATION_START_1 >= 204
-# define BOOST_PP_ITERATION_1 204
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 203 && BOOST_PP_ITERATION_START_1 >= 203
-# define BOOST_PP_ITERATION_1 203
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 202 && BOOST_PP_ITERATION_START_1 >= 202
-# define BOOST_PP_ITERATION_1 202
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 201 && BOOST_PP_ITERATION_START_1 >= 201
-# define BOOST_PP_ITERATION_1 201
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 200 && BOOST_PP_ITERATION_START_1 >= 200
-# define BOOST_PP_ITERATION_1 200
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 199 && BOOST_PP_ITERATION_START_1 >= 199
-# define BOOST_PP_ITERATION_1 199
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 198 && BOOST_PP_ITERATION_START_1 >= 198
-# define BOOST_PP_ITERATION_1 198
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 197 && BOOST_PP_ITERATION_START_1 >= 197
-# define BOOST_PP_ITERATION_1 197
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 196 && BOOST_PP_ITERATION_START_1 >= 196
-# define BOOST_PP_ITERATION_1 196
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 195 && BOOST_PP_ITERATION_START_1 >= 195
-# define BOOST_PP_ITERATION_1 195
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 194 && BOOST_PP_ITERATION_START_1 >= 194
-# define BOOST_PP_ITERATION_1 194
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 193 && BOOST_PP_ITERATION_START_1 >= 193
-# define BOOST_PP_ITERATION_1 193
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 192 && BOOST_PP_ITERATION_START_1 >= 192
-# define BOOST_PP_ITERATION_1 192
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 191 && BOOST_PP_ITERATION_START_1 >= 191
-# define BOOST_PP_ITERATION_1 191
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 190 && BOOST_PP_ITERATION_START_1 >= 190
-# define BOOST_PP_ITERATION_1 190
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 189 && BOOST_PP_ITERATION_START_1 >= 189
-# define BOOST_PP_ITERATION_1 189
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 188 && BOOST_PP_ITERATION_START_1 >= 188
-# define BOOST_PP_ITERATION_1 188
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 187 && BOOST_PP_ITERATION_START_1 >= 187
-# define BOOST_PP_ITERATION_1 187
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 186 && BOOST_PP_ITERATION_START_1 >= 186
-# define BOOST_PP_ITERATION_1 186
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 185 && BOOST_PP_ITERATION_START_1 >= 185
-# define BOOST_PP_ITERATION_1 185
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 184 && BOOST_PP_ITERATION_START_1 >= 184
-# define BOOST_PP_ITERATION_1 184
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 183 && BOOST_PP_ITERATION_START_1 >= 183
-# define BOOST_PP_ITERATION_1 183
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 182 && BOOST_PP_ITERATION_START_1 >= 182
-# define BOOST_PP_ITERATION_1 182
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 181 && BOOST_PP_ITERATION_START_1 >= 181
-# define BOOST_PP_ITERATION_1 181
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 180 && BOOST_PP_ITERATION_START_1 >= 180
-# define BOOST_PP_ITERATION_1 180
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 179 && BOOST_PP_ITERATION_START_1 >= 179
-# define BOOST_PP_ITERATION_1 179
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 178 && BOOST_PP_ITERATION_START_1 >= 178
-# define BOOST_PP_ITERATION_1 178
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 177 && BOOST_PP_ITERATION_START_1 >= 177
-# define BOOST_PP_ITERATION_1 177
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 176 && BOOST_PP_ITERATION_START_1 >= 176
-# define BOOST_PP_ITERATION_1 176
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 175 && BOOST_PP_ITERATION_START_1 >= 175
-# define BOOST_PP_ITERATION_1 175
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 174 && BOOST_PP_ITERATION_START_1 >= 174
-# define BOOST_PP_ITERATION_1 174
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 173 && BOOST_PP_ITERATION_START_1 >= 173
-# define BOOST_PP_ITERATION_1 173
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 172 && BOOST_PP_ITERATION_START_1 >= 172
-# define BOOST_PP_ITERATION_1 172
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 171 && BOOST_PP_ITERATION_START_1 >= 171
-# define BOOST_PP_ITERATION_1 171
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 170 && BOOST_PP_ITERATION_START_1 >= 170
-# define BOOST_PP_ITERATION_1 170
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 169 && BOOST_PP_ITERATION_START_1 >= 169
-# define BOOST_PP_ITERATION_1 169
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 168 && BOOST_PP_ITERATION_START_1 >= 168
-# define BOOST_PP_ITERATION_1 168
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 167 && BOOST_PP_ITERATION_START_1 >= 167
-# define BOOST_PP_ITERATION_1 167
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 166 && BOOST_PP_ITERATION_START_1 >= 166
-# define BOOST_PP_ITERATION_1 166
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 165 && BOOST_PP_ITERATION_START_1 >= 165
-# define BOOST_PP_ITERATION_1 165
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 164 && BOOST_PP_ITERATION_START_1 >= 164
-# define BOOST_PP_ITERATION_1 164
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 163 && BOOST_PP_ITERATION_START_1 >= 163
-# define BOOST_PP_ITERATION_1 163
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 162 && BOOST_PP_ITERATION_START_1 >= 162
-# define BOOST_PP_ITERATION_1 162
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 161 && BOOST_PP_ITERATION_START_1 >= 161
-# define BOOST_PP_ITERATION_1 161
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 160 && BOOST_PP_ITERATION_START_1 >= 160
-# define BOOST_PP_ITERATION_1 160
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 159 && BOOST_PP_ITERATION_START_1 >= 159
-# define BOOST_PP_ITERATION_1 159
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 158 && BOOST_PP_ITERATION_START_1 >= 158
-# define BOOST_PP_ITERATION_1 158
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 157 && BOOST_PP_ITERATION_START_1 >= 157
-# define BOOST_PP_ITERATION_1 157
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 156 && BOOST_PP_ITERATION_START_1 >= 156
-# define BOOST_PP_ITERATION_1 156
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 155 && BOOST_PP_ITERATION_START_1 >= 155
-# define BOOST_PP_ITERATION_1 155
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 154 && BOOST_PP_ITERATION_START_1 >= 154
-# define BOOST_PP_ITERATION_1 154
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 153 && BOOST_PP_ITERATION_START_1 >= 153
-# define BOOST_PP_ITERATION_1 153
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 152 && BOOST_PP_ITERATION_START_1 >= 152
-# define BOOST_PP_ITERATION_1 152
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 151 && BOOST_PP_ITERATION_START_1 >= 151
-# define BOOST_PP_ITERATION_1 151
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 150 && BOOST_PP_ITERATION_START_1 >= 150
-# define BOOST_PP_ITERATION_1 150
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 149 && BOOST_PP_ITERATION_START_1 >= 149
-# define BOOST_PP_ITERATION_1 149
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 148 && BOOST_PP_ITERATION_START_1 >= 148
-# define BOOST_PP_ITERATION_1 148
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 147 && BOOST_PP_ITERATION_START_1 >= 147
-# define BOOST_PP_ITERATION_1 147
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 146 && BOOST_PP_ITERATION_START_1 >= 146
-# define BOOST_PP_ITERATION_1 146
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 145 && BOOST_PP_ITERATION_START_1 >= 145
-# define BOOST_PP_ITERATION_1 145
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 144 && BOOST_PP_ITERATION_START_1 >= 144
-# define BOOST_PP_ITERATION_1 144
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 143 && BOOST_PP_ITERATION_START_1 >= 143
-# define BOOST_PP_ITERATION_1 143
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 142 && BOOST_PP_ITERATION_START_1 >= 142
-# define BOOST_PP_ITERATION_1 142
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 141 && BOOST_PP_ITERATION_START_1 >= 141
-# define BOOST_PP_ITERATION_1 141
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 140 && BOOST_PP_ITERATION_START_1 >= 140
-# define BOOST_PP_ITERATION_1 140
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 139 && BOOST_PP_ITERATION_START_1 >= 139
-# define BOOST_PP_ITERATION_1 139
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 138 && BOOST_PP_ITERATION_START_1 >= 138
-# define BOOST_PP_ITERATION_1 138
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 137 && BOOST_PP_ITERATION_START_1 >= 137
-# define BOOST_PP_ITERATION_1 137
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 136 && BOOST_PP_ITERATION_START_1 >= 136
-# define BOOST_PP_ITERATION_1 136
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 135 && BOOST_PP_ITERATION_START_1 >= 135
-# define BOOST_PP_ITERATION_1 135
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 134 && BOOST_PP_ITERATION_START_1 >= 134
-# define BOOST_PP_ITERATION_1 134
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 133 && BOOST_PP_ITERATION_START_1 >= 133
-# define BOOST_PP_ITERATION_1 133
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 132 && BOOST_PP_ITERATION_START_1 >= 132
-# define BOOST_PP_ITERATION_1 132
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 131 && BOOST_PP_ITERATION_START_1 >= 131
-# define BOOST_PP_ITERATION_1 131
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 130 && BOOST_PP_ITERATION_START_1 >= 130
-# define BOOST_PP_ITERATION_1 130
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 129 && BOOST_PP_ITERATION_START_1 >= 129
-# define BOOST_PP_ITERATION_1 129
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 128 && BOOST_PP_ITERATION_START_1 >= 128
-# define BOOST_PP_ITERATION_1 128
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 127 && BOOST_PP_ITERATION_START_1 >= 127
-# define BOOST_PP_ITERATION_1 127
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 126 && BOOST_PP_ITERATION_START_1 >= 126
-# define BOOST_PP_ITERATION_1 126
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 125 && BOOST_PP_ITERATION_START_1 >= 125
-# define BOOST_PP_ITERATION_1 125
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 124 && BOOST_PP_ITERATION_START_1 >= 124
-# define BOOST_PP_ITERATION_1 124
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 123 && BOOST_PP_ITERATION_START_1 >= 123
-# define BOOST_PP_ITERATION_1 123
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 122 && BOOST_PP_ITERATION_START_1 >= 122
-# define BOOST_PP_ITERATION_1 122
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 121 && BOOST_PP_ITERATION_START_1 >= 121
-# define BOOST_PP_ITERATION_1 121
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 120 && BOOST_PP_ITERATION_START_1 >= 120
-# define BOOST_PP_ITERATION_1 120
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 119 && BOOST_PP_ITERATION_START_1 >= 119
-# define BOOST_PP_ITERATION_1 119
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 118 && BOOST_PP_ITERATION_START_1 >= 118
-# define BOOST_PP_ITERATION_1 118
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 117 && BOOST_PP_ITERATION_START_1 >= 117
-# define BOOST_PP_ITERATION_1 117
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 116 && BOOST_PP_ITERATION_START_1 >= 116
-# define BOOST_PP_ITERATION_1 116
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 115 && BOOST_PP_ITERATION_START_1 >= 115
-# define BOOST_PP_ITERATION_1 115
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 114 && BOOST_PP_ITERATION_START_1 >= 114
-# define BOOST_PP_ITERATION_1 114
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 113 && BOOST_PP_ITERATION_START_1 >= 113
-# define BOOST_PP_ITERATION_1 113
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 112 && BOOST_PP_ITERATION_START_1 >= 112
-# define BOOST_PP_ITERATION_1 112
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 111 && BOOST_PP_ITERATION_START_1 >= 111
-# define BOOST_PP_ITERATION_1 111
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 110 && BOOST_PP_ITERATION_START_1 >= 110
-# define BOOST_PP_ITERATION_1 110
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 109 && BOOST_PP_ITERATION_START_1 >= 109
-# define BOOST_PP_ITERATION_1 109
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 108 && BOOST_PP_ITERATION_START_1 >= 108
-# define BOOST_PP_ITERATION_1 108
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 107 && BOOST_PP_ITERATION_START_1 >= 107
-# define BOOST_PP_ITERATION_1 107
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 106 && BOOST_PP_ITERATION_START_1 >= 106
-# define BOOST_PP_ITERATION_1 106
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 105 && BOOST_PP_ITERATION_START_1 >= 105
-# define BOOST_PP_ITERATION_1 105
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 104 && BOOST_PP_ITERATION_START_1 >= 104
-# define BOOST_PP_ITERATION_1 104
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 103 && BOOST_PP_ITERATION_START_1 >= 103
-# define BOOST_PP_ITERATION_1 103
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 102 && BOOST_PP_ITERATION_START_1 >= 102
-# define BOOST_PP_ITERATION_1 102
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 101 && BOOST_PP_ITERATION_START_1 >= 101
-# define BOOST_PP_ITERATION_1 101
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 100 && BOOST_PP_ITERATION_START_1 >= 100
-# define BOOST_PP_ITERATION_1 100
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 99 && BOOST_PP_ITERATION_START_1 >= 99
-# define BOOST_PP_ITERATION_1 99
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 98 && BOOST_PP_ITERATION_START_1 >= 98
-# define BOOST_PP_ITERATION_1 98
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 97 && BOOST_PP_ITERATION_START_1 >= 97
-# define BOOST_PP_ITERATION_1 97
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 96 && BOOST_PP_ITERATION_START_1 >= 96
-# define BOOST_PP_ITERATION_1 96
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 95 && BOOST_PP_ITERATION_START_1 >= 95
-# define BOOST_PP_ITERATION_1 95
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 94 && BOOST_PP_ITERATION_START_1 >= 94
-# define BOOST_PP_ITERATION_1 94
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 93 && BOOST_PP_ITERATION_START_1 >= 93
-# define BOOST_PP_ITERATION_1 93
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 92 && BOOST_PP_ITERATION_START_1 >= 92
-# define BOOST_PP_ITERATION_1 92
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 91 && BOOST_PP_ITERATION_START_1 >= 91
-# define BOOST_PP_ITERATION_1 91
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 90 && BOOST_PP_ITERATION_START_1 >= 90
-# define BOOST_PP_ITERATION_1 90
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 89 && BOOST_PP_ITERATION_START_1 >= 89
-# define BOOST_PP_ITERATION_1 89
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 88 && BOOST_PP_ITERATION_START_1 >= 88
-# define BOOST_PP_ITERATION_1 88
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 87 && BOOST_PP_ITERATION_START_1 >= 87
-# define BOOST_PP_ITERATION_1 87
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 86 && BOOST_PP_ITERATION_START_1 >= 86
-# define BOOST_PP_ITERATION_1 86
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 85 && BOOST_PP_ITERATION_START_1 >= 85
-# define BOOST_PP_ITERATION_1 85
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 84 && BOOST_PP_ITERATION_START_1 >= 84
-# define BOOST_PP_ITERATION_1 84
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 83 && BOOST_PP_ITERATION_START_1 >= 83
-# define BOOST_PP_ITERATION_1 83
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 82 && BOOST_PP_ITERATION_START_1 >= 82
-# define BOOST_PP_ITERATION_1 82
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 81 && BOOST_PP_ITERATION_START_1 >= 81
-# define BOOST_PP_ITERATION_1 81
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 80 && BOOST_PP_ITERATION_START_1 >= 80
-# define BOOST_PP_ITERATION_1 80
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 79 && BOOST_PP_ITERATION_START_1 >= 79
-# define BOOST_PP_ITERATION_1 79
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 78 && BOOST_PP_ITERATION_START_1 >= 78
-# define BOOST_PP_ITERATION_1 78
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 77 && BOOST_PP_ITERATION_START_1 >= 77
-# define BOOST_PP_ITERATION_1 77
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 76 && BOOST_PP_ITERATION_START_1 >= 76
-# define BOOST_PP_ITERATION_1 76
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 75 && BOOST_PP_ITERATION_START_1 >= 75
-# define BOOST_PP_ITERATION_1 75
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 74 && BOOST_PP_ITERATION_START_1 >= 74
-# define BOOST_PP_ITERATION_1 74
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 73 && BOOST_PP_ITERATION_START_1 >= 73
-# define BOOST_PP_ITERATION_1 73
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 72 && BOOST_PP_ITERATION_START_1 >= 72
-# define BOOST_PP_ITERATION_1 72
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 71 && BOOST_PP_ITERATION_START_1 >= 71
-# define BOOST_PP_ITERATION_1 71
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 70 && BOOST_PP_ITERATION_START_1 >= 70
-# define BOOST_PP_ITERATION_1 70
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 69 && BOOST_PP_ITERATION_START_1 >= 69
-# define BOOST_PP_ITERATION_1 69
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 68 && BOOST_PP_ITERATION_START_1 >= 68
-# define BOOST_PP_ITERATION_1 68
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 67 && BOOST_PP_ITERATION_START_1 >= 67
-# define BOOST_PP_ITERATION_1 67
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 66 && BOOST_PP_ITERATION_START_1 >= 66
-# define BOOST_PP_ITERATION_1 66
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 65 && BOOST_PP_ITERATION_START_1 >= 65
-# define BOOST_PP_ITERATION_1 65
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 64 && BOOST_PP_ITERATION_START_1 >= 64
-# define BOOST_PP_ITERATION_1 64
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 63 && BOOST_PP_ITERATION_START_1 >= 63
-# define BOOST_PP_ITERATION_1 63
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 62 && BOOST_PP_ITERATION_START_1 >= 62
-# define BOOST_PP_ITERATION_1 62
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 61 && BOOST_PP_ITERATION_START_1 >= 61
-# define BOOST_PP_ITERATION_1 61
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 60 && BOOST_PP_ITERATION_START_1 >= 60
-# define BOOST_PP_ITERATION_1 60
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 59 && BOOST_PP_ITERATION_START_1 >= 59
-# define BOOST_PP_ITERATION_1 59
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 58 && BOOST_PP_ITERATION_START_1 >= 58
-# define BOOST_PP_ITERATION_1 58
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 57 && BOOST_PP_ITERATION_START_1 >= 57
-# define BOOST_PP_ITERATION_1 57
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 56 && BOOST_PP_ITERATION_START_1 >= 56
-# define BOOST_PP_ITERATION_1 56
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 55 && BOOST_PP_ITERATION_START_1 >= 55
-# define BOOST_PP_ITERATION_1 55
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 54 && BOOST_PP_ITERATION_START_1 >= 54
-# define BOOST_PP_ITERATION_1 54
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 53 && BOOST_PP_ITERATION_START_1 >= 53
-# define BOOST_PP_ITERATION_1 53
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 52 && BOOST_PP_ITERATION_START_1 >= 52
-# define BOOST_PP_ITERATION_1 52
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 51 && BOOST_PP_ITERATION_START_1 >= 51
-# define BOOST_PP_ITERATION_1 51
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 50 && BOOST_PP_ITERATION_START_1 >= 50
-# define BOOST_PP_ITERATION_1 50
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 49 && BOOST_PP_ITERATION_START_1 >= 49
-# define BOOST_PP_ITERATION_1 49
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 48 && BOOST_PP_ITERATION_START_1 >= 48
-# define BOOST_PP_ITERATION_1 48
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 47 && BOOST_PP_ITERATION_START_1 >= 47
-# define BOOST_PP_ITERATION_1 47
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 46 && BOOST_PP_ITERATION_START_1 >= 46
-# define BOOST_PP_ITERATION_1 46
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 45 && BOOST_PP_ITERATION_START_1 >= 45
-# define BOOST_PP_ITERATION_1 45
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 44 && BOOST_PP_ITERATION_START_1 >= 44
-# define BOOST_PP_ITERATION_1 44
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 43 && BOOST_PP_ITERATION_START_1 >= 43
-# define BOOST_PP_ITERATION_1 43
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 42 && BOOST_PP_ITERATION_START_1 >= 42
-# define BOOST_PP_ITERATION_1 42
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 41 && BOOST_PP_ITERATION_START_1 >= 41
-# define BOOST_PP_ITERATION_1 41
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 40 && BOOST_PP_ITERATION_START_1 >= 40
-# define BOOST_PP_ITERATION_1 40
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 39 && BOOST_PP_ITERATION_START_1 >= 39
-# define BOOST_PP_ITERATION_1 39
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 38 && BOOST_PP_ITERATION_START_1 >= 38
-# define BOOST_PP_ITERATION_1 38
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 37 && BOOST_PP_ITERATION_START_1 >= 37
-# define BOOST_PP_ITERATION_1 37
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 36 && BOOST_PP_ITERATION_START_1 >= 36
-# define BOOST_PP_ITERATION_1 36
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 35 && BOOST_PP_ITERATION_START_1 >= 35
-# define BOOST_PP_ITERATION_1 35
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 34 && BOOST_PP_ITERATION_START_1 >= 34
-# define BOOST_PP_ITERATION_1 34
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 33 && BOOST_PP_ITERATION_START_1 >= 33
-# define BOOST_PP_ITERATION_1 33
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 32 && BOOST_PP_ITERATION_START_1 >= 32
-# define BOOST_PP_ITERATION_1 32
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 31 && BOOST_PP_ITERATION_START_1 >= 31
-# define BOOST_PP_ITERATION_1 31
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 30 && BOOST_PP_ITERATION_START_1 >= 30
-# define BOOST_PP_ITERATION_1 30
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 29 && BOOST_PP_ITERATION_START_1 >= 29
-# define BOOST_PP_ITERATION_1 29
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 28 && BOOST_PP_ITERATION_START_1 >= 28
-# define BOOST_PP_ITERATION_1 28
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 27 && BOOST_PP_ITERATION_START_1 >= 27
-# define BOOST_PP_ITERATION_1 27
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 26 && BOOST_PP_ITERATION_START_1 >= 26
-# define BOOST_PP_ITERATION_1 26
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 25 && BOOST_PP_ITERATION_START_1 >= 25
-# define BOOST_PP_ITERATION_1 25
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 24 && BOOST_PP_ITERATION_START_1 >= 24
-# define BOOST_PP_ITERATION_1 24
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 23 && BOOST_PP_ITERATION_START_1 >= 23
-# define BOOST_PP_ITERATION_1 23
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 22 && BOOST_PP_ITERATION_START_1 >= 22
-# define BOOST_PP_ITERATION_1 22
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 21 && BOOST_PP_ITERATION_START_1 >= 21
-# define BOOST_PP_ITERATION_1 21
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 20 && BOOST_PP_ITERATION_START_1 >= 20
-# define BOOST_PP_ITERATION_1 20
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 19 && BOOST_PP_ITERATION_START_1 >= 19
-# define BOOST_PP_ITERATION_1 19
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 18 && BOOST_PP_ITERATION_START_1 >= 18
-# define BOOST_PP_ITERATION_1 18
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 17 && BOOST_PP_ITERATION_START_1 >= 17
-# define BOOST_PP_ITERATION_1 17
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 16 && BOOST_PP_ITERATION_START_1 >= 16
-# define BOOST_PP_ITERATION_1 16
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 15 && BOOST_PP_ITERATION_START_1 >= 15
-# define BOOST_PP_ITERATION_1 15
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 14 && BOOST_PP_ITERATION_START_1 >= 14
-# define BOOST_PP_ITERATION_1 14
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 13 && BOOST_PP_ITERATION_START_1 >= 13
-# define BOOST_PP_ITERATION_1 13
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 12 && BOOST_PP_ITERATION_START_1 >= 12
-# define BOOST_PP_ITERATION_1 12
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 11 && BOOST_PP_ITERATION_START_1 >= 11
-# define BOOST_PP_ITERATION_1 11
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 10 && BOOST_PP_ITERATION_START_1 >= 10
-# define BOOST_PP_ITERATION_1 10
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 9 && BOOST_PP_ITERATION_START_1 >= 9
-# define BOOST_PP_ITERATION_1 9
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 8 && BOOST_PP_ITERATION_START_1 >= 8
-# define BOOST_PP_ITERATION_1 8
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 7 && BOOST_PP_ITERATION_START_1 >= 7
-# define BOOST_PP_ITERATION_1 7
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 6 && BOOST_PP_ITERATION_START_1 >= 6
-# define BOOST_PP_ITERATION_1 6
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 5 && BOOST_PP_ITERATION_START_1 >= 5
-# define BOOST_PP_ITERATION_1 5
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 4 && BOOST_PP_ITERATION_START_1 >= 4
-# define BOOST_PP_ITERATION_1 4
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 3 && BOOST_PP_ITERATION_START_1 >= 3
-# define BOOST_PP_ITERATION_1 3
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 2 && BOOST_PP_ITERATION_START_1 >= 2
-# define BOOST_PP_ITERATION_1 2
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 1 && BOOST_PP_ITERATION_START_1 >= 1
-# define BOOST_PP_ITERATION_1 1
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
-# if BOOST_PP_ITERATION_FINISH_1 <= 0 && BOOST_PP_ITERATION_START_1 >= 0
-# define BOOST_PP_ITERATION_1 0
-# include BOOST_PP_FILENAME_1
-# undef BOOST_PP_ITERATION_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse2.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse2.hpp
deleted file mode 100644
index 521bd24..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse2.hpp
+++ /dev/null
@@ -1,1296 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if BOOST_PP_ITERATION_FINISH_2 <= 256 && BOOST_PP_ITERATION_START_2 >= 256
-# define BOOST_PP_ITERATION_2 256
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 255 && BOOST_PP_ITERATION_START_2 >= 255
-# define BOOST_PP_ITERATION_2 255
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 254 && BOOST_PP_ITERATION_START_2 >= 254
-# define BOOST_PP_ITERATION_2 254
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 253 && BOOST_PP_ITERATION_START_2 >= 253
-# define BOOST_PP_ITERATION_2 253
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 252 && BOOST_PP_ITERATION_START_2 >= 252
-# define BOOST_PP_ITERATION_2 252
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 251 && BOOST_PP_ITERATION_START_2 >= 251
-# define BOOST_PP_ITERATION_2 251
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 250 && BOOST_PP_ITERATION_START_2 >= 250
-# define BOOST_PP_ITERATION_2 250
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 249 && BOOST_PP_ITERATION_START_2 >= 249
-# define BOOST_PP_ITERATION_2 249
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 248 && BOOST_PP_ITERATION_START_2 >= 248
-# define BOOST_PP_ITERATION_2 248
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 247 && BOOST_PP_ITERATION_START_2 >= 247
-# define BOOST_PP_ITERATION_2 247
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 246 && BOOST_PP_ITERATION_START_2 >= 246
-# define BOOST_PP_ITERATION_2 246
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 245 && BOOST_PP_ITERATION_START_2 >= 245
-# define BOOST_PP_ITERATION_2 245
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 244 && BOOST_PP_ITERATION_START_2 >= 244
-# define BOOST_PP_ITERATION_2 244
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 243 && BOOST_PP_ITERATION_START_2 >= 243
-# define BOOST_PP_ITERATION_2 243
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 242 && BOOST_PP_ITERATION_START_2 >= 242
-# define BOOST_PP_ITERATION_2 242
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 241 && BOOST_PP_ITERATION_START_2 >= 241
-# define BOOST_PP_ITERATION_2 241
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 240 && BOOST_PP_ITERATION_START_2 >= 240
-# define BOOST_PP_ITERATION_2 240
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 239 && BOOST_PP_ITERATION_START_2 >= 239
-# define BOOST_PP_ITERATION_2 239
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 238 && BOOST_PP_ITERATION_START_2 >= 238
-# define BOOST_PP_ITERATION_2 238
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 237 && BOOST_PP_ITERATION_START_2 >= 237
-# define BOOST_PP_ITERATION_2 237
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 236 && BOOST_PP_ITERATION_START_2 >= 236
-# define BOOST_PP_ITERATION_2 236
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 235 && BOOST_PP_ITERATION_START_2 >= 235
-# define BOOST_PP_ITERATION_2 235
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 234 && BOOST_PP_ITERATION_START_2 >= 234
-# define BOOST_PP_ITERATION_2 234
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 233 && BOOST_PP_ITERATION_START_2 >= 233
-# define BOOST_PP_ITERATION_2 233
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 232 && BOOST_PP_ITERATION_START_2 >= 232
-# define BOOST_PP_ITERATION_2 232
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 231 && BOOST_PP_ITERATION_START_2 >= 231
-# define BOOST_PP_ITERATION_2 231
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 230 && BOOST_PP_ITERATION_START_2 >= 230
-# define BOOST_PP_ITERATION_2 230
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 229 && BOOST_PP_ITERATION_START_2 >= 229
-# define BOOST_PP_ITERATION_2 229
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 228 && BOOST_PP_ITERATION_START_2 >= 228
-# define BOOST_PP_ITERATION_2 228
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 227 && BOOST_PP_ITERATION_START_2 >= 227
-# define BOOST_PP_ITERATION_2 227
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 226 && BOOST_PP_ITERATION_START_2 >= 226
-# define BOOST_PP_ITERATION_2 226
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 225 && BOOST_PP_ITERATION_START_2 >= 225
-# define BOOST_PP_ITERATION_2 225
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 224 && BOOST_PP_ITERATION_START_2 >= 224
-# define BOOST_PP_ITERATION_2 224
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 223 && BOOST_PP_ITERATION_START_2 >= 223
-# define BOOST_PP_ITERATION_2 223
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 222 && BOOST_PP_ITERATION_START_2 >= 222
-# define BOOST_PP_ITERATION_2 222
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 221 && BOOST_PP_ITERATION_START_2 >= 221
-# define BOOST_PP_ITERATION_2 221
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 220 && BOOST_PP_ITERATION_START_2 >= 220
-# define BOOST_PP_ITERATION_2 220
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 219 && BOOST_PP_ITERATION_START_2 >= 219
-# define BOOST_PP_ITERATION_2 219
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 218 && BOOST_PP_ITERATION_START_2 >= 218
-# define BOOST_PP_ITERATION_2 218
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 217 && BOOST_PP_ITERATION_START_2 >= 217
-# define BOOST_PP_ITERATION_2 217
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 216 && BOOST_PP_ITERATION_START_2 >= 216
-# define BOOST_PP_ITERATION_2 216
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 215 && BOOST_PP_ITERATION_START_2 >= 215
-# define BOOST_PP_ITERATION_2 215
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 214 && BOOST_PP_ITERATION_START_2 >= 214
-# define BOOST_PP_ITERATION_2 214
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 213 && BOOST_PP_ITERATION_START_2 >= 213
-# define BOOST_PP_ITERATION_2 213
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 212 && BOOST_PP_ITERATION_START_2 >= 212
-# define BOOST_PP_ITERATION_2 212
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 211 && BOOST_PP_ITERATION_START_2 >= 211
-# define BOOST_PP_ITERATION_2 211
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 210 && BOOST_PP_ITERATION_START_2 >= 210
-# define BOOST_PP_ITERATION_2 210
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 209 && BOOST_PP_ITERATION_START_2 >= 209
-# define BOOST_PP_ITERATION_2 209
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 208 && BOOST_PP_ITERATION_START_2 >= 208
-# define BOOST_PP_ITERATION_2 208
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 207 && BOOST_PP_ITERATION_START_2 >= 207
-# define BOOST_PP_ITERATION_2 207
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 206 && BOOST_PP_ITERATION_START_2 >= 206
-# define BOOST_PP_ITERATION_2 206
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 205 && BOOST_PP_ITERATION_START_2 >= 205
-# define BOOST_PP_ITERATION_2 205
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 204 && BOOST_PP_ITERATION_START_2 >= 204
-# define BOOST_PP_ITERATION_2 204
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 203 && BOOST_PP_ITERATION_START_2 >= 203
-# define BOOST_PP_ITERATION_2 203
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 202 && BOOST_PP_ITERATION_START_2 >= 202
-# define BOOST_PP_ITERATION_2 202
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 201 && BOOST_PP_ITERATION_START_2 >= 201
-# define BOOST_PP_ITERATION_2 201
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 200 && BOOST_PP_ITERATION_START_2 >= 200
-# define BOOST_PP_ITERATION_2 200
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 199 && BOOST_PP_ITERATION_START_2 >= 199
-# define BOOST_PP_ITERATION_2 199
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 198 && BOOST_PP_ITERATION_START_2 >= 198
-# define BOOST_PP_ITERATION_2 198
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 197 && BOOST_PP_ITERATION_START_2 >= 197
-# define BOOST_PP_ITERATION_2 197
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 196 && BOOST_PP_ITERATION_START_2 >= 196
-# define BOOST_PP_ITERATION_2 196
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 195 && BOOST_PP_ITERATION_START_2 >= 195
-# define BOOST_PP_ITERATION_2 195
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 194 && BOOST_PP_ITERATION_START_2 >= 194
-# define BOOST_PP_ITERATION_2 194
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 193 && BOOST_PP_ITERATION_START_2 >= 193
-# define BOOST_PP_ITERATION_2 193
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 192 && BOOST_PP_ITERATION_START_2 >= 192
-# define BOOST_PP_ITERATION_2 192
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 191 && BOOST_PP_ITERATION_START_2 >= 191
-# define BOOST_PP_ITERATION_2 191
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 190 && BOOST_PP_ITERATION_START_2 >= 190
-# define BOOST_PP_ITERATION_2 190
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 189 && BOOST_PP_ITERATION_START_2 >= 189
-# define BOOST_PP_ITERATION_2 189
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 188 && BOOST_PP_ITERATION_START_2 >= 188
-# define BOOST_PP_ITERATION_2 188
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 187 && BOOST_PP_ITERATION_START_2 >= 187
-# define BOOST_PP_ITERATION_2 187
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 186 && BOOST_PP_ITERATION_START_2 >= 186
-# define BOOST_PP_ITERATION_2 186
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 185 && BOOST_PP_ITERATION_START_2 >= 185
-# define BOOST_PP_ITERATION_2 185
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 184 && BOOST_PP_ITERATION_START_2 >= 184
-# define BOOST_PP_ITERATION_2 184
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 183 && BOOST_PP_ITERATION_START_2 >= 183
-# define BOOST_PP_ITERATION_2 183
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 182 && BOOST_PP_ITERATION_START_2 >= 182
-# define BOOST_PP_ITERATION_2 182
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 181 && BOOST_PP_ITERATION_START_2 >= 181
-# define BOOST_PP_ITERATION_2 181
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 180 && BOOST_PP_ITERATION_START_2 >= 180
-# define BOOST_PP_ITERATION_2 180
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 179 && BOOST_PP_ITERATION_START_2 >= 179
-# define BOOST_PP_ITERATION_2 179
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 178 && BOOST_PP_ITERATION_START_2 >= 178
-# define BOOST_PP_ITERATION_2 178
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 177 && BOOST_PP_ITERATION_START_2 >= 177
-# define BOOST_PP_ITERATION_2 177
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 176 && BOOST_PP_ITERATION_START_2 >= 176
-# define BOOST_PP_ITERATION_2 176
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 175 && BOOST_PP_ITERATION_START_2 >= 175
-# define BOOST_PP_ITERATION_2 175
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 174 && BOOST_PP_ITERATION_START_2 >= 174
-# define BOOST_PP_ITERATION_2 174
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 173 && BOOST_PP_ITERATION_START_2 >= 173
-# define BOOST_PP_ITERATION_2 173
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 172 && BOOST_PP_ITERATION_START_2 >= 172
-# define BOOST_PP_ITERATION_2 172
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 171 && BOOST_PP_ITERATION_START_2 >= 171
-# define BOOST_PP_ITERATION_2 171
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 170 && BOOST_PP_ITERATION_START_2 >= 170
-# define BOOST_PP_ITERATION_2 170
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 169 && BOOST_PP_ITERATION_START_2 >= 169
-# define BOOST_PP_ITERATION_2 169
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 168 && BOOST_PP_ITERATION_START_2 >= 168
-# define BOOST_PP_ITERATION_2 168
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 167 && BOOST_PP_ITERATION_START_2 >= 167
-# define BOOST_PP_ITERATION_2 167
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 166 && BOOST_PP_ITERATION_START_2 >= 166
-# define BOOST_PP_ITERATION_2 166
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 165 && BOOST_PP_ITERATION_START_2 >= 165
-# define BOOST_PP_ITERATION_2 165
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 164 && BOOST_PP_ITERATION_START_2 >= 164
-# define BOOST_PP_ITERATION_2 164
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 163 && BOOST_PP_ITERATION_START_2 >= 163
-# define BOOST_PP_ITERATION_2 163
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 162 && BOOST_PP_ITERATION_START_2 >= 162
-# define BOOST_PP_ITERATION_2 162
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 161 && BOOST_PP_ITERATION_START_2 >= 161
-# define BOOST_PP_ITERATION_2 161
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 160 && BOOST_PP_ITERATION_START_2 >= 160
-# define BOOST_PP_ITERATION_2 160
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 159 && BOOST_PP_ITERATION_START_2 >= 159
-# define BOOST_PP_ITERATION_2 159
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 158 && BOOST_PP_ITERATION_START_2 >= 158
-# define BOOST_PP_ITERATION_2 158
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 157 && BOOST_PP_ITERATION_START_2 >= 157
-# define BOOST_PP_ITERATION_2 157
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 156 && BOOST_PP_ITERATION_START_2 >= 156
-# define BOOST_PP_ITERATION_2 156
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 155 && BOOST_PP_ITERATION_START_2 >= 155
-# define BOOST_PP_ITERATION_2 155
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 154 && BOOST_PP_ITERATION_START_2 >= 154
-# define BOOST_PP_ITERATION_2 154
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 153 && BOOST_PP_ITERATION_START_2 >= 153
-# define BOOST_PP_ITERATION_2 153
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 152 && BOOST_PP_ITERATION_START_2 >= 152
-# define BOOST_PP_ITERATION_2 152
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 151 && BOOST_PP_ITERATION_START_2 >= 151
-# define BOOST_PP_ITERATION_2 151
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 150 && BOOST_PP_ITERATION_START_2 >= 150
-# define BOOST_PP_ITERATION_2 150
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 149 && BOOST_PP_ITERATION_START_2 >= 149
-# define BOOST_PP_ITERATION_2 149
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 148 && BOOST_PP_ITERATION_START_2 >= 148
-# define BOOST_PP_ITERATION_2 148
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 147 && BOOST_PP_ITERATION_START_2 >= 147
-# define BOOST_PP_ITERATION_2 147
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 146 && BOOST_PP_ITERATION_START_2 >= 146
-# define BOOST_PP_ITERATION_2 146
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 145 && BOOST_PP_ITERATION_START_2 >= 145
-# define BOOST_PP_ITERATION_2 145
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 144 && BOOST_PP_ITERATION_START_2 >= 144
-# define BOOST_PP_ITERATION_2 144
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 143 && BOOST_PP_ITERATION_START_2 >= 143
-# define BOOST_PP_ITERATION_2 143
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 142 && BOOST_PP_ITERATION_START_2 >= 142
-# define BOOST_PP_ITERATION_2 142
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 141 && BOOST_PP_ITERATION_START_2 >= 141
-# define BOOST_PP_ITERATION_2 141
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 140 && BOOST_PP_ITERATION_START_2 >= 140
-# define BOOST_PP_ITERATION_2 140
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 139 && BOOST_PP_ITERATION_START_2 >= 139
-# define BOOST_PP_ITERATION_2 139
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 138 && BOOST_PP_ITERATION_START_2 >= 138
-# define BOOST_PP_ITERATION_2 138
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 137 && BOOST_PP_ITERATION_START_2 >= 137
-# define BOOST_PP_ITERATION_2 137
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 136 && BOOST_PP_ITERATION_START_2 >= 136
-# define BOOST_PP_ITERATION_2 136
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 135 && BOOST_PP_ITERATION_START_2 >= 135
-# define BOOST_PP_ITERATION_2 135
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 134 && BOOST_PP_ITERATION_START_2 >= 134
-# define BOOST_PP_ITERATION_2 134
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 133 && BOOST_PP_ITERATION_START_2 >= 133
-# define BOOST_PP_ITERATION_2 133
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 132 && BOOST_PP_ITERATION_START_2 >= 132
-# define BOOST_PP_ITERATION_2 132
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 131 && BOOST_PP_ITERATION_START_2 >= 131
-# define BOOST_PP_ITERATION_2 131
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 130 && BOOST_PP_ITERATION_START_2 >= 130
-# define BOOST_PP_ITERATION_2 130
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 129 && BOOST_PP_ITERATION_START_2 >= 129
-# define BOOST_PP_ITERATION_2 129
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 128 && BOOST_PP_ITERATION_START_2 >= 128
-# define BOOST_PP_ITERATION_2 128
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 127 && BOOST_PP_ITERATION_START_2 >= 127
-# define BOOST_PP_ITERATION_2 127
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 126 && BOOST_PP_ITERATION_START_2 >= 126
-# define BOOST_PP_ITERATION_2 126
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 125 && BOOST_PP_ITERATION_START_2 >= 125
-# define BOOST_PP_ITERATION_2 125
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 124 && BOOST_PP_ITERATION_START_2 >= 124
-# define BOOST_PP_ITERATION_2 124
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 123 && BOOST_PP_ITERATION_START_2 >= 123
-# define BOOST_PP_ITERATION_2 123
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 122 && BOOST_PP_ITERATION_START_2 >= 122
-# define BOOST_PP_ITERATION_2 122
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 121 && BOOST_PP_ITERATION_START_2 >= 121
-# define BOOST_PP_ITERATION_2 121
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 120 && BOOST_PP_ITERATION_START_2 >= 120
-# define BOOST_PP_ITERATION_2 120
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 119 && BOOST_PP_ITERATION_START_2 >= 119
-# define BOOST_PP_ITERATION_2 119
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 118 && BOOST_PP_ITERATION_START_2 >= 118
-# define BOOST_PP_ITERATION_2 118
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 117 && BOOST_PP_ITERATION_START_2 >= 117
-# define BOOST_PP_ITERATION_2 117
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 116 && BOOST_PP_ITERATION_START_2 >= 116
-# define BOOST_PP_ITERATION_2 116
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 115 && BOOST_PP_ITERATION_START_2 >= 115
-# define BOOST_PP_ITERATION_2 115
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 114 && BOOST_PP_ITERATION_START_2 >= 114
-# define BOOST_PP_ITERATION_2 114
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 113 && BOOST_PP_ITERATION_START_2 >= 113
-# define BOOST_PP_ITERATION_2 113
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 112 && BOOST_PP_ITERATION_START_2 >= 112
-# define BOOST_PP_ITERATION_2 112
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 111 && BOOST_PP_ITERATION_START_2 >= 111
-# define BOOST_PP_ITERATION_2 111
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 110 && BOOST_PP_ITERATION_START_2 >= 110
-# define BOOST_PP_ITERATION_2 110
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 109 && BOOST_PP_ITERATION_START_2 >= 109
-# define BOOST_PP_ITERATION_2 109
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 108 && BOOST_PP_ITERATION_START_2 >= 108
-# define BOOST_PP_ITERATION_2 108
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 107 && BOOST_PP_ITERATION_START_2 >= 107
-# define BOOST_PP_ITERATION_2 107
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 106 && BOOST_PP_ITERATION_START_2 >= 106
-# define BOOST_PP_ITERATION_2 106
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 105 && BOOST_PP_ITERATION_START_2 >= 105
-# define BOOST_PP_ITERATION_2 105
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 104 && BOOST_PP_ITERATION_START_2 >= 104
-# define BOOST_PP_ITERATION_2 104
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 103 && BOOST_PP_ITERATION_START_2 >= 103
-# define BOOST_PP_ITERATION_2 103
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 102 && BOOST_PP_ITERATION_START_2 >= 102
-# define BOOST_PP_ITERATION_2 102
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 101 && BOOST_PP_ITERATION_START_2 >= 101
-# define BOOST_PP_ITERATION_2 101
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 100 && BOOST_PP_ITERATION_START_2 >= 100
-# define BOOST_PP_ITERATION_2 100
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 99 && BOOST_PP_ITERATION_START_2 >= 99
-# define BOOST_PP_ITERATION_2 99
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 98 && BOOST_PP_ITERATION_START_2 >= 98
-# define BOOST_PP_ITERATION_2 98
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 97 && BOOST_PP_ITERATION_START_2 >= 97
-# define BOOST_PP_ITERATION_2 97
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 96 && BOOST_PP_ITERATION_START_2 >= 96
-# define BOOST_PP_ITERATION_2 96
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 95 && BOOST_PP_ITERATION_START_2 >= 95
-# define BOOST_PP_ITERATION_2 95
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 94 && BOOST_PP_ITERATION_START_2 >= 94
-# define BOOST_PP_ITERATION_2 94
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 93 && BOOST_PP_ITERATION_START_2 >= 93
-# define BOOST_PP_ITERATION_2 93
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 92 && BOOST_PP_ITERATION_START_2 >= 92
-# define BOOST_PP_ITERATION_2 92
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 91 && BOOST_PP_ITERATION_START_2 >= 91
-# define BOOST_PP_ITERATION_2 91
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 90 && BOOST_PP_ITERATION_START_2 >= 90
-# define BOOST_PP_ITERATION_2 90
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 89 && BOOST_PP_ITERATION_START_2 >= 89
-# define BOOST_PP_ITERATION_2 89
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 88 && BOOST_PP_ITERATION_START_2 >= 88
-# define BOOST_PP_ITERATION_2 88
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 87 && BOOST_PP_ITERATION_START_2 >= 87
-# define BOOST_PP_ITERATION_2 87
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 86 && BOOST_PP_ITERATION_START_2 >= 86
-# define BOOST_PP_ITERATION_2 86
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 85 && BOOST_PP_ITERATION_START_2 >= 85
-# define BOOST_PP_ITERATION_2 85
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 84 && BOOST_PP_ITERATION_START_2 >= 84
-# define BOOST_PP_ITERATION_2 84
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 83 && BOOST_PP_ITERATION_START_2 >= 83
-# define BOOST_PP_ITERATION_2 83
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 82 && BOOST_PP_ITERATION_START_2 >= 82
-# define BOOST_PP_ITERATION_2 82
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 81 && BOOST_PP_ITERATION_START_2 >= 81
-# define BOOST_PP_ITERATION_2 81
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 80 && BOOST_PP_ITERATION_START_2 >= 80
-# define BOOST_PP_ITERATION_2 80
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 79 && BOOST_PP_ITERATION_START_2 >= 79
-# define BOOST_PP_ITERATION_2 79
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 78 && BOOST_PP_ITERATION_START_2 >= 78
-# define BOOST_PP_ITERATION_2 78
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 77 && BOOST_PP_ITERATION_START_2 >= 77
-# define BOOST_PP_ITERATION_2 77
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 76 && BOOST_PP_ITERATION_START_2 >= 76
-# define BOOST_PP_ITERATION_2 76
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 75 && BOOST_PP_ITERATION_START_2 >= 75
-# define BOOST_PP_ITERATION_2 75
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 74 && BOOST_PP_ITERATION_START_2 >= 74
-# define BOOST_PP_ITERATION_2 74
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 73 && BOOST_PP_ITERATION_START_2 >= 73
-# define BOOST_PP_ITERATION_2 73
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 72 && BOOST_PP_ITERATION_START_2 >= 72
-# define BOOST_PP_ITERATION_2 72
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 71 && BOOST_PP_ITERATION_START_2 >= 71
-# define BOOST_PP_ITERATION_2 71
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 70 && BOOST_PP_ITERATION_START_2 >= 70
-# define BOOST_PP_ITERATION_2 70
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 69 && BOOST_PP_ITERATION_START_2 >= 69
-# define BOOST_PP_ITERATION_2 69
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 68 && BOOST_PP_ITERATION_START_2 >= 68
-# define BOOST_PP_ITERATION_2 68
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 67 && BOOST_PP_ITERATION_START_2 >= 67
-# define BOOST_PP_ITERATION_2 67
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 66 && BOOST_PP_ITERATION_START_2 >= 66
-# define BOOST_PP_ITERATION_2 66
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 65 && BOOST_PP_ITERATION_START_2 >= 65
-# define BOOST_PP_ITERATION_2 65
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 64 && BOOST_PP_ITERATION_START_2 >= 64
-# define BOOST_PP_ITERATION_2 64
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 63 && BOOST_PP_ITERATION_START_2 >= 63
-# define BOOST_PP_ITERATION_2 63
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 62 && BOOST_PP_ITERATION_START_2 >= 62
-# define BOOST_PP_ITERATION_2 62
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 61 && BOOST_PP_ITERATION_START_2 >= 61
-# define BOOST_PP_ITERATION_2 61
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 60 && BOOST_PP_ITERATION_START_2 >= 60
-# define BOOST_PP_ITERATION_2 60
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 59 && BOOST_PP_ITERATION_START_2 >= 59
-# define BOOST_PP_ITERATION_2 59
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 58 && BOOST_PP_ITERATION_START_2 >= 58
-# define BOOST_PP_ITERATION_2 58
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 57 && BOOST_PP_ITERATION_START_2 >= 57
-# define BOOST_PP_ITERATION_2 57
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 56 && BOOST_PP_ITERATION_START_2 >= 56
-# define BOOST_PP_ITERATION_2 56
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 55 && BOOST_PP_ITERATION_START_2 >= 55
-# define BOOST_PP_ITERATION_2 55
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 54 && BOOST_PP_ITERATION_START_2 >= 54
-# define BOOST_PP_ITERATION_2 54
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 53 && BOOST_PP_ITERATION_START_2 >= 53
-# define BOOST_PP_ITERATION_2 53
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 52 && BOOST_PP_ITERATION_START_2 >= 52
-# define BOOST_PP_ITERATION_2 52
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 51 && BOOST_PP_ITERATION_START_2 >= 51
-# define BOOST_PP_ITERATION_2 51
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 50 && BOOST_PP_ITERATION_START_2 >= 50
-# define BOOST_PP_ITERATION_2 50
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 49 && BOOST_PP_ITERATION_START_2 >= 49
-# define BOOST_PP_ITERATION_2 49
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 48 && BOOST_PP_ITERATION_START_2 >= 48
-# define BOOST_PP_ITERATION_2 48
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 47 && BOOST_PP_ITERATION_START_2 >= 47
-# define BOOST_PP_ITERATION_2 47
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 46 && BOOST_PP_ITERATION_START_2 >= 46
-# define BOOST_PP_ITERATION_2 46
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 45 && BOOST_PP_ITERATION_START_2 >= 45
-# define BOOST_PP_ITERATION_2 45
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 44 && BOOST_PP_ITERATION_START_2 >= 44
-# define BOOST_PP_ITERATION_2 44
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 43 && BOOST_PP_ITERATION_START_2 >= 43
-# define BOOST_PP_ITERATION_2 43
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 42 && BOOST_PP_ITERATION_START_2 >= 42
-# define BOOST_PP_ITERATION_2 42
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 41 && BOOST_PP_ITERATION_START_2 >= 41
-# define BOOST_PP_ITERATION_2 41
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 40 && BOOST_PP_ITERATION_START_2 >= 40
-# define BOOST_PP_ITERATION_2 40
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 39 && BOOST_PP_ITERATION_START_2 >= 39
-# define BOOST_PP_ITERATION_2 39
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 38 && BOOST_PP_ITERATION_START_2 >= 38
-# define BOOST_PP_ITERATION_2 38
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 37 && BOOST_PP_ITERATION_START_2 >= 37
-# define BOOST_PP_ITERATION_2 37
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 36 && BOOST_PP_ITERATION_START_2 >= 36
-# define BOOST_PP_ITERATION_2 36
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 35 && BOOST_PP_ITERATION_START_2 >= 35
-# define BOOST_PP_ITERATION_2 35
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 34 && BOOST_PP_ITERATION_START_2 >= 34
-# define BOOST_PP_ITERATION_2 34
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 33 && BOOST_PP_ITERATION_START_2 >= 33
-# define BOOST_PP_ITERATION_2 33
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 32 && BOOST_PP_ITERATION_START_2 >= 32
-# define BOOST_PP_ITERATION_2 32
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 31 && BOOST_PP_ITERATION_START_2 >= 31
-# define BOOST_PP_ITERATION_2 31
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 30 && BOOST_PP_ITERATION_START_2 >= 30
-# define BOOST_PP_ITERATION_2 30
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 29 && BOOST_PP_ITERATION_START_2 >= 29
-# define BOOST_PP_ITERATION_2 29
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 28 && BOOST_PP_ITERATION_START_2 >= 28
-# define BOOST_PP_ITERATION_2 28
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 27 && BOOST_PP_ITERATION_START_2 >= 27
-# define BOOST_PP_ITERATION_2 27
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 26 && BOOST_PP_ITERATION_START_2 >= 26
-# define BOOST_PP_ITERATION_2 26
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 25 && BOOST_PP_ITERATION_START_2 >= 25
-# define BOOST_PP_ITERATION_2 25
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 24 && BOOST_PP_ITERATION_START_2 >= 24
-# define BOOST_PP_ITERATION_2 24
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 23 && BOOST_PP_ITERATION_START_2 >= 23
-# define BOOST_PP_ITERATION_2 23
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 22 && BOOST_PP_ITERATION_START_2 >= 22
-# define BOOST_PP_ITERATION_2 22
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 21 && BOOST_PP_ITERATION_START_2 >= 21
-# define BOOST_PP_ITERATION_2 21
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 20 && BOOST_PP_ITERATION_START_2 >= 20
-# define BOOST_PP_ITERATION_2 20
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 19 && BOOST_PP_ITERATION_START_2 >= 19
-# define BOOST_PP_ITERATION_2 19
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 18 && BOOST_PP_ITERATION_START_2 >= 18
-# define BOOST_PP_ITERATION_2 18
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 17 && BOOST_PP_ITERATION_START_2 >= 17
-# define BOOST_PP_ITERATION_2 17
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 16 && BOOST_PP_ITERATION_START_2 >= 16
-# define BOOST_PP_ITERATION_2 16
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 15 && BOOST_PP_ITERATION_START_2 >= 15
-# define BOOST_PP_ITERATION_2 15
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 14 && BOOST_PP_ITERATION_START_2 >= 14
-# define BOOST_PP_ITERATION_2 14
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 13 && BOOST_PP_ITERATION_START_2 >= 13
-# define BOOST_PP_ITERATION_2 13
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 12 && BOOST_PP_ITERATION_START_2 >= 12
-# define BOOST_PP_ITERATION_2 12
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 11 && BOOST_PP_ITERATION_START_2 >= 11
-# define BOOST_PP_ITERATION_2 11
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 10 && BOOST_PP_ITERATION_START_2 >= 10
-# define BOOST_PP_ITERATION_2 10
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 9 && BOOST_PP_ITERATION_START_2 >= 9
-# define BOOST_PP_ITERATION_2 9
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 8 && BOOST_PP_ITERATION_START_2 >= 8
-# define BOOST_PP_ITERATION_2 8
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 7 && BOOST_PP_ITERATION_START_2 >= 7
-# define BOOST_PP_ITERATION_2 7
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 6 && BOOST_PP_ITERATION_START_2 >= 6
-# define BOOST_PP_ITERATION_2 6
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 5 && BOOST_PP_ITERATION_START_2 >= 5
-# define BOOST_PP_ITERATION_2 5
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 4 && BOOST_PP_ITERATION_START_2 >= 4
-# define BOOST_PP_ITERATION_2 4
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 3 && BOOST_PP_ITERATION_START_2 >= 3
-# define BOOST_PP_ITERATION_2 3
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 2 && BOOST_PP_ITERATION_START_2 >= 2
-# define BOOST_PP_ITERATION_2 2
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 1 && BOOST_PP_ITERATION_START_2 >= 1
-# define BOOST_PP_ITERATION_2 1
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
-# if BOOST_PP_ITERATION_FINISH_2 <= 0 && BOOST_PP_ITERATION_START_2 >= 0
-# define BOOST_PP_ITERATION_2 0
-# include BOOST_PP_FILENAME_2
-# undef BOOST_PP_ITERATION_2
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse3.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse3.hpp
deleted file mode 100644
index 0a65514..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse3.hpp
+++ /dev/null
@@ -1,1296 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if BOOST_PP_ITERATION_FINISH_3 <= 256 && BOOST_PP_ITERATION_START_3 >= 256
-# define BOOST_PP_ITERATION_3 256
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 255 && BOOST_PP_ITERATION_START_3 >= 255
-# define BOOST_PP_ITERATION_3 255
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 254 && BOOST_PP_ITERATION_START_3 >= 254
-# define BOOST_PP_ITERATION_3 254
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 253 && BOOST_PP_ITERATION_START_3 >= 253
-# define BOOST_PP_ITERATION_3 253
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 252 && BOOST_PP_ITERATION_START_3 >= 252
-# define BOOST_PP_ITERATION_3 252
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 251 && BOOST_PP_ITERATION_START_3 >= 251
-# define BOOST_PP_ITERATION_3 251
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 250 && BOOST_PP_ITERATION_START_3 >= 250
-# define BOOST_PP_ITERATION_3 250
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 249 && BOOST_PP_ITERATION_START_3 >= 249
-# define BOOST_PP_ITERATION_3 249
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 248 && BOOST_PP_ITERATION_START_3 >= 248
-# define BOOST_PP_ITERATION_3 248
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 247 && BOOST_PP_ITERATION_START_3 >= 247
-# define BOOST_PP_ITERATION_3 247
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 246 && BOOST_PP_ITERATION_START_3 >= 246
-# define BOOST_PP_ITERATION_3 246
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 245 && BOOST_PP_ITERATION_START_3 >= 245
-# define BOOST_PP_ITERATION_3 245
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 244 && BOOST_PP_ITERATION_START_3 >= 244
-# define BOOST_PP_ITERATION_3 244
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 243 && BOOST_PP_ITERATION_START_3 >= 243
-# define BOOST_PP_ITERATION_3 243
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 242 && BOOST_PP_ITERATION_START_3 >= 242
-# define BOOST_PP_ITERATION_3 242
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 241 && BOOST_PP_ITERATION_START_3 >= 241
-# define BOOST_PP_ITERATION_3 241
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 240 && BOOST_PP_ITERATION_START_3 >= 240
-# define BOOST_PP_ITERATION_3 240
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 239 && BOOST_PP_ITERATION_START_3 >= 239
-# define BOOST_PP_ITERATION_3 239
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 238 && BOOST_PP_ITERATION_START_3 >= 238
-# define BOOST_PP_ITERATION_3 238
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 237 && BOOST_PP_ITERATION_START_3 >= 237
-# define BOOST_PP_ITERATION_3 237
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 236 && BOOST_PP_ITERATION_START_3 >= 236
-# define BOOST_PP_ITERATION_3 236
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 235 && BOOST_PP_ITERATION_START_3 >= 235
-# define BOOST_PP_ITERATION_3 235
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 234 && BOOST_PP_ITERATION_START_3 >= 234
-# define BOOST_PP_ITERATION_3 234
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 233 && BOOST_PP_ITERATION_START_3 >= 233
-# define BOOST_PP_ITERATION_3 233
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 232 && BOOST_PP_ITERATION_START_3 >= 232
-# define BOOST_PP_ITERATION_3 232
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 231 && BOOST_PP_ITERATION_START_3 >= 231
-# define BOOST_PP_ITERATION_3 231
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 230 && BOOST_PP_ITERATION_START_3 >= 230
-# define BOOST_PP_ITERATION_3 230
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 229 && BOOST_PP_ITERATION_START_3 >= 229
-# define BOOST_PP_ITERATION_3 229
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 228 && BOOST_PP_ITERATION_START_3 >= 228
-# define BOOST_PP_ITERATION_3 228
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 227 && BOOST_PP_ITERATION_START_3 >= 227
-# define BOOST_PP_ITERATION_3 227
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 226 && BOOST_PP_ITERATION_START_3 >= 226
-# define BOOST_PP_ITERATION_3 226
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 225 && BOOST_PP_ITERATION_START_3 >= 225
-# define BOOST_PP_ITERATION_3 225
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 224 && BOOST_PP_ITERATION_START_3 >= 224
-# define BOOST_PP_ITERATION_3 224
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 223 && BOOST_PP_ITERATION_START_3 >= 223
-# define BOOST_PP_ITERATION_3 223
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 222 && BOOST_PP_ITERATION_START_3 >= 222
-# define BOOST_PP_ITERATION_3 222
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 221 && BOOST_PP_ITERATION_START_3 >= 221
-# define BOOST_PP_ITERATION_3 221
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 220 && BOOST_PP_ITERATION_START_3 >= 220
-# define BOOST_PP_ITERATION_3 220
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 219 && BOOST_PP_ITERATION_START_3 >= 219
-# define BOOST_PP_ITERATION_3 219
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 218 && BOOST_PP_ITERATION_START_3 >= 218
-# define BOOST_PP_ITERATION_3 218
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 217 && BOOST_PP_ITERATION_START_3 >= 217
-# define BOOST_PP_ITERATION_3 217
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 216 && BOOST_PP_ITERATION_START_3 >= 216
-# define BOOST_PP_ITERATION_3 216
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 215 && BOOST_PP_ITERATION_START_3 >= 215
-# define BOOST_PP_ITERATION_3 215
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 214 && BOOST_PP_ITERATION_START_3 >= 214
-# define BOOST_PP_ITERATION_3 214
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 213 && BOOST_PP_ITERATION_START_3 >= 213
-# define BOOST_PP_ITERATION_3 213
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 212 && BOOST_PP_ITERATION_START_3 >= 212
-# define BOOST_PP_ITERATION_3 212
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 211 && BOOST_PP_ITERATION_START_3 >= 211
-# define BOOST_PP_ITERATION_3 211
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 210 && BOOST_PP_ITERATION_START_3 >= 210
-# define BOOST_PP_ITERATION_3 210
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 209 && BOOST_PP_ITERATION_START_3 >= 209
-# define BOOST_PP_ITERATION_3 209
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 208 && BOOST_PP_ITERATION_START_3 >= 208
-# define BOOST_PP_ITERATION_3 208
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 207 && BOOST_PP_ITERATION_START_3 >= 207
-# define BOOST_PP_ITERATION_3 207
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 206 && BOOST_PP_ITERATION_START_3 >= 206
-# define BOOST_PP_ITERATION_3 206
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 205 && BOOST_PP_ITERATION_START_3 >= 205
-# define BOOST_PP_ITERATION_3 205
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 204 && BOOST_PP_ITERATION_START_3 >= 204
-# define BOOST_PP_ITERATION_3 204
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 203 && BOOST_PP_ITERATION_START_3 >= 203
-# define BOOST_PP_ITERATION_3 203
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 202 && BOOST_PP_ITERATION_START_3 >= 202
-# define BOOST_PP_ITERATION_3 202
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 201 && BOOST_PP_ITERATION_START_3 >= 201
-# define BOOST_PP_ITERATION_3 201
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 200 && BOOST_PP_ITERATION_START_3 >= 200
-# define BOOST_PP_ITERATION_3 200
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 199 && BOOST_PP_ITERATION_START_3 >= 199
-# define BOOST_PP_ITERATION_3 199
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 198 && BOOST_PP_ITERATION_START_3 >= 198
-# define BOOST_PP_ITERATION_3 198
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 197 && BOOST_PP_ITERATION_START_3 >= 197
-# define BOOST_PP_ITERATION_3 197
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 196 && BOOST_PP_ITERATION_START_3 >= 196
-# define BOOST_PP_ITERATION_3 196
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 195 && BOOST_PP_ITERATION_START_3 >= 195
-# define BOOST_PP_ITERATION_3 195
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 194 && BOOST_PP_ITERATION_START_3 >= 194
-# define BOOST_PP_ITERATION_3 194
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 193 && BOOST_PP_ITERATION_START_3 >= 193
-# define BOOST_PP_ITERATION_3 193
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 192 && BOOST_PP_ITERATION_START_3 >= 192
-# define BOOST_PP_ITERATION_3 192
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 191 && BOOST_PP_ITERATION_START_3 >= 191
-# define BOOST_PP_ITERATION_3 191
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 190 && BOOST_PP_ITERATION_START_3 >= 190
-# define BOOST_PP_ITERATION_3 190
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 189 && BOOST_PP_ITERATION_START_3 >= 189
-# define BOOST_PP_ITERATION_3 189
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 188 && BOOST_PP_ITERATION_START_3 >= 188
-# define BOOST_PP_ITERATION_3 188
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 187 && BOOST_PP_ITERATION_START_3 >= 187
-# define BOOST_PP_ITERATION_3 187
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 186 && BOOST_PP_ITERATION_START_3 >= 186
-# define BOOST_PP_ITERATION_3 186
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 185 && BOOST_PP_ITERATION_START_3 >= 185
-# define BOOST_PP_ITERATION_3 185
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 184 && BOOST_PP_ITERATION_START_3 >= 184
-# define BOOST_PP_ITERATION_3 184
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 183 && BOOST_PP_ITERATION_START_3 >= 183
-# define BOOST_PP_ITERATION_3 183
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 182 && BOOST_PP_ITERATION_START_3 >= 182
-# define BOOST_PP_ITERATION_3 182
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 181 && BOOST_PP_ITERATION_START_3 >= 181
-# define BOOST_PP_ITERATION_3 181
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 180 && BOOST_PP_ITERATION_START_3 >= 180
-# define BOOST_PP_ITERATION_3 180
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 179 && BOOST_PP_ITERATION_START_3 >= 179
-# define BOOST_PP_ITERATION_3 179
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 178 && BOOST_PP_ITERATION_START_3 >= 178
-# define BOOST_PP_ITERATION_3 178
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 177 && BOOST_PP_ITERATION_START_3 >= 177
-# define BOOST_PP_ITERATION_3 177
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 176 && BOOST_PP_ITERATION_START_3 >= 176
-# define BOOST_PP_ITERATION_3 176
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 175 && BOOST_PP_ITERATION_START_3 >= 175
-# define BOOST_PP_ITERATION_3 175
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 174 && BOOST_PP_ITERATION_START_3 >= 174
-# define BOOST_PP_ITERATION_3 174
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 173 && BOOST_PP_ITERATION_START_3 >= 173
-# define BOOST_PP_ITERATION_3 173
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 172 && BOOST_PP_ITERATION_START_3 >= 172
-# define BOOST_PP_ITERATION_3 172
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 171 && BOOST_PP_ITERATION_START_3 >= 171
-# define BOOST_PP_ITERATION_3 171
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 170 && BOOST_PP_ITERATION_START_3 >= 170
-# define BOOST_PP_ITERATION_3 170
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 169 && BOOST_PP_ITERATION_START_3 >= 169
-# define BOOST_PP_ITERATION_3 169
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 168 && BOOST_PP_ITERATION_START_3 >= 168
-# define BOOST_PP_ITERATION_3 168
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 167 && BOOST_PP_ITERATION_START_3 >= 167
-# define BOOST_PP_ITERATION_3 167
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 166 && BOOST_PP_ITERATION_START_3 >= 166
-# define BOOST_PP_ITERATION_3 166
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 165 && BOOST_PP_ITERATION_START_3 >= 165
-# define BOOST_PP_ITERATION_3 165
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 164 && BOOST_PP_ITERATION_START_3 >= 164
-# define BOOST_PP_ITERATION_3 164
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 163 && BOOST_PP_ITERATION_START_3 >= 163
-# define BOOST_PP_ITERATION_3 163
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 162 && BOOST_PP_ITERATION_START_3 >= 162
-# define BOOST_PP_ITERATION_3 162
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 161 && BOOST_PP_ITERATION_START_3 >= 161
-# define BOOST_PP_ITERATION_3 161
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 160 && BOOST_PP_ITERATION_START_3 >= 160
-# define BOOST_PP_ITERATION_3 160
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 159 && BOOST_PP_ITERATION_START_3 >= 159
-# define BOOST_PP_ITERATION_3 159
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 158 && BOOST_PP_ITERATION_START_3 >= 158
-# define BOOST_PP_ITERATION_3 158
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 157 && BOOST_PP_ITERATION_START_3 >= 157
-# define BOOST_PP_ITERATION_3 157
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 156 && BOOST_PP_ITERATION_START_3 >= 156
-# define BOOST_PP_ITERATION_3 156
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 155 && BOOST_PP_ITERATION_START_3 >= 155
-# define BOOST_PP_ITERATION_3 155
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 154 && BOOST_PP_ITERATION_START_3 >= 154
-# define BOOST_PP_ITERATION_3 154
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 153 && BOOST_PP_ITERATION_START_3 >= 153
-# define BOOST_PP_ITERATION_3 153
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 152 && BOOST_PP_ITERATION_START_3 >= 152
-# define BOOST_PP_ITERATION_3 152
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 151 && BOOST_PP_ITERATION_START_3 >= 151
-# define BOOST_PP_ITERATION_3 151
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 150 && BOOST_PP_ITERATION_START_3 >= 150
-# define BOOST_PP_ITERATION_3 150
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 149 && BOOST_PP_ITERATION_START_3 >= 149
-# define BOOST_PP_ITERATION_3 149
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 148 && BOOST_PP_ITERATION_START_3 >= 148
-# define BOOST_PP_ITERATION_3 148
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 147 && BOOST_PP_ITERATION_START_3 >= 147
-# define BOOST_PP_ITERATION_3 147
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 146 && BOOST_PP_ITERATION_START_3 >= 146
-# define BOOST_PP_ITERATION_3 146
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 145 && BOOST_PP_ITERATION_START_3 >= 145
-# define BOOST_PP_ITERATION_3 145
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 144 && BOOST_PP_ITERATION_START_3 >= 144
-# define BOOST_PP_ITERATION_3 144
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 143 && BOOST_PP_ITERATION_START_3 >= 143
-# define BOOST_PP_ITERATION_3 143
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 142 && BOOST_PP_ITERATION_START_3 >= 142
-# define BOOST_PP_ITERATION_3 142
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 141 && BOOST_PP_ITERATION_START_3 >= 141
-# define BOOST_PP_ITERATION_3 141
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 140 && BOOST_PP_ITERATION_START_3 >= 140
-# define BOOST_PP_ITERATION_3 140
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 139 && BOOST_PP_ITERATION_START_3 >= 139
-# define BOOST_PP_ITERATION_3 139
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 138 && BOOST_PP_ITERATION_START_3 >= 138
-# define BOOST_PP_ITERATION_3 138
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 137 && BOOST_PP_ITERATION_START_3 >= 137
-# define BOOST_PP_ITERATION_3 137
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 136 && BOOST_PP_ITERATION_START_3 >= 136
-# define BOOST_PP_ITERATION_3 136
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 135 && BOOST_PP_ITERATION_START_3 >= 135
-# define BOOST_PP_ITERATION_3 135
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 134 && BOOST_PP_ITERATION_START_3 >= 134
-# define BOOST_PP_ITERATION_3 134
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 133 && BOOST_PP_ITERATION_START_3 >= 133
-# define BOOST_PP_ITERATION_3 133
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 132 && BOOST_PP_ITERATION_START_3 >= 132
-# define BOOST_PP_ITERATION_3 132
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 131 && BOOST_PP_ITERATION_START_3 >= 131
-# define BOOST_PP_ITERATION_3 131
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 130 && BOOST_PP_ITERATION_START_3 >= 130
-# define BOOST_PP_ITERATION_3 130
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 129 && BOOST_PP_ITERATION_START_3 >= 129
-# define BOOST_PP_ITERATION_3 129
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 128 && BOOST_PP_ITERATION_START_3 >= 128
-# define BOOST_PP_ITERATION_3 128
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 127 && BOOST_PP_ITERATION_START_3 >= 127
-# define BOOST_PP_ITERATION_3 127
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 126 && BOOST_PP_ITERATION_START_3 >= 126
-# define BOOST_PP_ITERATION_3 126
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 125 && BOOST_PP_ITERATION_START_3 >= 125
-# define BOOST_PP_ITERATION_3 125
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 124 && BOOST_PP_ITERATION_START_3 >= 124
-# define BOOST_PP_ITERATION_3 124
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 123 && BOOST_PP_ITERATION_START_3 >= 123
-# define BOOST_PP_ITERATION_3 123
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 122 && BOOST_PP_ITERATION_START_3 >= 122
-# define BOOST_PP_ITERATION_3 122
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 121 && BOOST_PP_ITERATION_START_3 >= 121
-# define BOOST_PP_ITERATION_3 121
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 120 && BOOST_PP_ITERATION_START_3 >= 120
-# define BOOST_PP_ITERATION_3 120
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 119 && BOOST_PP_ITERATION_START_3 >= 119
-# define BOOST_PP_ITERATION_3 119
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 118 && BOOST_PP_ITERATION_START_3 >= 118
-# define BOOST_PP_ITERATION_3 118
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 117 && BOOST_PP_ITERATION_START_3 >= 117
-# define BOOST_PP_ITERATION_3 117
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 116 && BOOST_PP_ITERATION_START_3 >= 116
-# define BOOST_PP_ITERATION_3 116
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 115 && BOOST_PP_ITERATION_START_3 >= 115
-# define BOOST_PP_ITERATION_3 115
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 114 && BOOST_PP_ITERATION_START_3 >= 114
-# define BOOST_PP_ITERATION_3 114
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 113 && BOOST_PP_ITERATION_START_3 >= 113
-# define BOOST_PP_ITERATION_3 113
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 112 && BOOST_PP_ITERATION_START_3 >= 112
-# define BOOST_PP_ITERATION_3 112
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 111 && BOOST_PP_ITERATION_START_3 >= 111
-# define BOOST_PP_ITERATION_3 111
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 110 && BOOST_PP_ITERATION_START_3 >= 110
-# define BOOST_PP_ITERATION_3 110
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 109 && BOOST_PP_ITERATION_START_3 >= 109
-# define BOOST_PP_ITERATION_3 109
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 108 && BOOST_PP_ITERATION_START_3 >= 108
-# define BOOST_PP_ITERATION_3 108
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 107 && BOOST_PP_ITERATION_START_3 >= 107
-# define BOOST_PP_ITERATION_3 107
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 106 && BOOST_PP_ITERATION_START_3 >= 106
-# define BOOST_PP_ITERATION_3 106
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 105 && BOOST_PP_ITERATION_START_3 >= 105
-# define BOOST_PP_ITERATION_3 105
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 104 && BOOST_PP_ITERATION_START_3 >= 104
-# define BOOST_PP_ITERATION_3 104
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 103 && BOOST_PP_ITERATION_START_3 >= 103
-# define BOOST_PP_ITERATION_3 103
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 102 && BOOST_PP_ITERATION_START_3 >= 102
-# define BOOST_PP_ITERATION_3 102
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 101 && BOOST_PP_ITERATION_START_3 >= 101
-# define BOOST_PP_ITERATION_3 101
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 100 && BOOST_PP_ITERATION_START_3 >= 100
-# define BOOST_PP_ITERATION_3 100
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 99 && BOOST_PP_ITERATION_START_3 >= 99
-# define BOOST_PP_ITERATION_3 99
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 98 && BOOST_PP_ITERATION_START_3 >= 98
-# define BOOST_PP_ITERATION_3 98
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 97 && BOOST_PP_ITERATION_START_3 >= 97
-# define BOOST_PP_ITERATION_3 97
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 96 && BOOST_PP_ITERATION_START_3 >= 96
-# define BOOST_PP_ITERATION_3 96
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 95 && BOOST_PP_ITERATION_START_3 >= 95
-# define BOOST_PP_ITERATION_3 95
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 94 && BOOST_PP_ITERATION_START_3 >= 94
-# define BOOST_PP_ITERATION_3 94
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 93 && BOOST_PP_ITERATION_START_3 >= 93
-# define BOOST_PP_ITERATION_3 93
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 92 && BOOST_PP_ITERATION_START_3 >= 92
-# define BOOST_PP_ITERATION_3 92
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 91 && BOOST_PP_ITERATION_START_3 >= 91
-# define BOOST_PP_ITERATION_3 91
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 90 && BOOST_PP_ITERATION_START_3 >= 90
-# define BOOST_PP_ITERATION_3 90
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 89 && BOOST_PP_ITERATION_START_3 >= 89
-# define BOOST_PP_ITERATION_3 89
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 88 && BOOST_PP_ITERATION_START_3 >= 88
-# define BOOST_PP_ITERATION_3 88
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 87 && BOOST_PP_ITERATION_START_3 >= 87
-# define BOOST_PP_ITERATION_3 87
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 86 && BOOST_PP_ITERATION_START_3 >= 86
-# define BOOST_PP_ITERATION_3 86
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 85 && BOOST_PP_ITERATION_START_3 >= 85
-# define BOOST_PP_ITERATION_3 85
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 84 && BOOST_PP_ITERATION_START_3 >= 84
-# define BOOST_PP_ITERATION_3 84
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 83 && BOOST_PP_ITERATION_START_3 >= 83
-# define BOOST_PP_ITERATION_3 83
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 82 && BOOST_PP_ITERATION_START_3 >= 82
-# define BOOST_PP_ITERATION_3 82
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 81 && BOOST_PP_ITERATION_START_3 >= 81
-# define BOOST_PP_ITERATION_3 81
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 80 && BOOST_PP_ITERATION_START_3 >= 80
-# define BOOST_PP_ITERATION_3 80
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 79 && BOOST_PP_ITERATION_START_3 >= 79
-# define BOOST_PP_ITERATION_3 79
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 78 && BOOST_PP_ITERATION_START_3 >= 78
-# define BOOST_PP_ITERATION_3 78
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 77 && BOOST_PP_ITERATION_START_3 >= 77
-# define BOOST_PP_ITERATION_3 77
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 76 && BOOST_PP_ITERATION_START_3 >= 76
-# define BOOST_PP_ITERATION_3 76
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 75 && BOOST_PP_ITERATION_START_3 >= 75
-# define BOOST_PP_ITERATION_3 75
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 74 && BOOST_PP_ITERATION_START_3 >= 74
-# define BOOST_PP_ITERATION_3 74
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 73 && BOOST_PP_ITERATION_START_3 >= 73
-# define BOOST_PP_ITERATION_3 73
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 72 && BOOST_PP_ITERATION_START_3 >= 72
-# define BOOST_PP_ITERATION_3 72
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 71 && BOOST_PP_ITERATION_START_3 >= 71
-# define BOOST_PP_ITERATION_3 71
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 70 && BOOST_PP_ITERATION_START_3 >= 70
-# define BOOST_PP_ITERATION_3 70
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 69 && BOOST_PP_ITERATION_START_3 >= 69
-# define BOOST_PP_ITERATION_3 69
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 68 && BOOST_PP_ITERATION_START_3 >= 68
-# define BOOST_PP_ITERATION_3 68
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 67 && BOOST_PP_ITERATION_START_3 >= 67
-# define BOOST_PP_ITERATION_3 67
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 66 && BOOST_PP_ITERATION_START_3 >= 66
-# define BOOST_PP_ITERATION_3 66
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 65 && BOOST_PP_ITERATION_START_3 >= 65
-# define BOOST_PP_ITERATION_3 65
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 64 && BOOST_PP_ITERATION_START_3 >= 64
-# define BOOST_PP_ITERATION_3 64
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 63 && BOOST_PP_ITERATION_START_3 >= 63
-# define BOOST_PP_ITERATION_3 63
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 62 && BOOST_PP_ITERATION_START_3 >= 62
-# define BOOST_PP_ITERATION_3 62
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 61 && BOOST_PP_ITERATION_START_3 >= 61
-# define BOOST_PP_ITERATION_3 61
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 60 && BOOST_PP_ITERATION_START_3 >= 60
-# define BOOST_PP_ITERATION_3 60
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 59 && BOOST_PP_ITERATION_START_3 >= 59
-# define BOOST_PP_ITERATION_3 59
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 58 && BOOST_PP_ITERATION_START_3 >= 58
-# define BOOST_PP_ITERATION_3 58
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 57 && BOOST_PP_ITERATION_START_3 >= 57
-# define BOOST_PP_ITERATION_3 57
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 56 && BOOST_PP_ITERATION_START_3 >= 56
-# define BOOST_PP_ITERATION_3 56
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 55 && BOOST_PP_ITERATION_START_3 >= 55
-# define BOOST_PP_ITERATION_3 55
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 54 && BOOST_PP_ITERATION_START_3 >= 54
-# define BOOST_PP_ITERATION_3 54
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 53 && BOOST_PP_ITERATION_START_3 >= 53
-# define BOOST_PP_ITERATION_3 53
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 52 && BOOST_PP_ITERATION_START_3 >= 52
-# define BOOST_PP_ITERATION_3 52
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 51 && BOOST_PP_ITERATION_START_3 >= 51
-# define BOOST_PP_ITERATION_3 51
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 50 && BOOST_PP_ITERATION_START_3 >= 50
-# define BOOST_PP_ITERATION_3 50
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 49 && BOOST_PP_ITERATION_START_3 >= 49
-# define BOOST_PP_ITERATION_3 49
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 48 && BOOST_PP_ITERATION_START_3 >= 48
-# define BOOST_PP_ITERATION_3 48
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 47 && BOOST_PP_ITERATION_START_3 >= 47
-# define BOOST_PP_ITERATION_3 47
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 46 && BOOST_PP_ITERATION_START_3 >= 46
-# define BOOST_PP_ITERATION_3 46
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 45 && BOOST_PP_ITERATION_START_3 >= 45
-# define BOOST_PP_ITERATION_3 45
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 44 && BOOST_PP_ITERATION_START_3 >= 44
-# define BOOST_PP_ITERATION_3 44
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 43 && BOOST_PP_ITERATION_START_3 >= 43
-# define BOOST_PP_ITERATION_3 43
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 42 && BOOST_PP_ITERATION_START_3 >= 42
-# define BOOST_PP_ITERATION_3 42
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 41 && BOOST_PP_ITERATION_START_3 >= 41
-# define BOOST_PP_ITERATION_3 41
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 40 && BOOST_PP_ITERATION_START_3 >= 40
-# define BOOST_PP_ITERATION_3 40
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 39 && BOOST_PP_ITERATION_START_3 >= 39
-# define BOOST_PP_ITERATION_3 39
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 38 && BOOST_PP_ITERATION_START_3 >= 38
-# define BOOST_PP_ITERATION_3 38
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 37 && BOOST_PP_ITERATION_START_3 >= 37
-# define BOOST_PP_ITERATION_3 37
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 36 && BOOST_PP_ITERATION_START_3 >= 36
-# define BOOST_PP_ITERATION_3 36
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 35 && BOOST_PP_ITERATION_START_3 >= 35
-# define BOOST_PP_ITERATION_3 35
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 34 && BOOST_PP_ITERATION_START_3 >= 34
-# define BOOST_PP_ITERATION_3 34
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 33 && BOOST_PP_ITERATION_START_3 >= 33
-# define BOOST_PP_ITERATION_3 33
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 32 && BOOST_PP_ITERATION_START_3 >= 32
-# define BOOST_PP_ITERATION_3 32
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 31 && BOOST_PP_ITERATION_START_3 >= 31
-# define BOOST_PP_ITERATION_3 31
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 30 && BOOST_PP_ITERATION_START_3 >= 30
-# define BOOST_PP_ITERATION_3 30
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 29 && BOOST_PP_ITERATION_START_3 >= 29
-# define BOOST_PP_ITERATION_3 29
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 28 && BOOST_PP_ITERATION_START_3 >= 28
-# define BOOST_PP_ITERATION_3 28
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 27 && BOOST_PP_ITERATION_START_3 >= 27
-# define BOOST_PP_ITERATION_3 27
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 26 && BOOST_PP_ITERATION_START_3 >= 26
-# define BOOST_PP_ITERATION_3 26
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 25 && BOOST_PP_ITERATION_START_3 >= 25
-# define BOOST_PP_ITERATION_3 25
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 24 && BOOST_PP_ITERATION_START_3 >= 24
-# define BOOST_PP_ITERATION_3 24
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 23 && BOOST_PP_ITERATION_START_3 >= 23
-# define BOOST_PP_ITERATION_3 23
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 22 && BOOST_PP_ITERATION_START_3 >= 22
-# define BOOST_PP_ITERATION_3 22
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 21 && BOOST_PP_ITERATION_START_3 >= 21
-# define BOOST_PP_ITERATION_3 21
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 20 && BOOST_PP_ITERATION_START_3 >= 20
-# define BOOST_PP_ITERATION_3 20
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 19 && BOOST_PP_ITERATION_START_3 >= 19
-# define BOOST_PP_ITERATION_3 19
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 18 && BOOST_PP_ITERATION_START_3 >= 18
-# define BOOST_PP_ITERATION_3 18
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 17 && BOOST_PP_ITERATION_START_3 >= 17
-# define BOOST_PP_ITERATION_3 17
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 16 && BOOST_PP_ITERATION_START_3 >= 16
-# define BOOST_PP_ITERATION_3 16
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 15 && BOOST_PP_ITERATION_START_3 >= 15
-# define BOOST_PP_ITERATION_3 15
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 14 && BOOST_PP_ITERATION_START_3 >= 14
-# define BOOST_PP_ITERATION_3 14
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 13 && BOOST_PP_ITERATION_START_3 >= 13
-# define BOOST_PP_ITERATION_3 13
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 12 && BOOST_PP_ITERATION_START_3 >= 12
-# define BOOST_PP_ITERATION_3 12
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 11 && BOOST_PP_ITERATION_START_3 >= 11
-# define BOOST_PP_ITERATION_3 11
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 10 && BOOST_PP_ITERATION_START_3 >= 10
-# define BOOST_PP_ITERATION_3 10
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 9 && BOOST_PP_ITERATION_START_3 >= 9
-# define BOOST_PP_ITERATION_3 9
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 8 && BOOST_PP_ITERATION_START_3 >= 8
-# define BOOST_PP_ITERATION_3 8
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 7 && BOOST_PP_ITERATION_START_3 >= 7
-# define BOOST_PP_ITERATION_3 7
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 6 && BOOST_PP_ITERATION_START_3 >= 6
-# define BOOST_PP_ITERATION_3 6
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 5 && BOOST_PP_ITERATION_START_3 >= 5
-# define BOOST_PP_ITERATION_3 5
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 4 && BOOST_PP_ITERATION_START_3 >= 4
-# define BOOST_PP_ITERATION_3 4
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 3 && BOOST_PP_ITERATION_START_3 >= 3
-# define BOOST_PP_ITERATION_3 3
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 2 && BOOST_PP_ITERATION_START_3 >= 2
-# define BOOST_PP_ITERATION_3 2
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 1 && BOOST_PP_ITERATION_START_3 >= 1
-# define BOOST_PP_ITERATION_3 1
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
-# if BOOST_PP_ITERATION_FINISH_3 <= 0 && BOOST_PP_ITERATION_START_3 >= 0
-# define BOOST_PP_ITERATION_3 0
-# include BOOST_PP_FILENAME_3
-# undef BOOST_PP_ITERATION_3
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse4.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse4.hpp
deleted file mode 100644
index 3bcfba0..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse4.hpp
+++ /dev/null
@@ -1,1296 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if BOOST_PP_ITERATION_FINISH_4 <= 256 && BOOST_PP_ITERATION_START_4 >= 256
-# define BOOST_PP_ITERATION_4 256
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 255 && BOOST_PP_ITERATION_START_4 >= 255
-# define BOOST_PP_ITERATION_4 255
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 254 && BOOST_PP_ITERATION_START_4 >= 254
-# define BOOST_PP_ITERATION_4 254
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 253 && BOOST_PP_ITERATION_START_4 >= 253
-# define BOOST_PP_ITERATION_4 253
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 252 && BOOST_PP_ITERATION_START_4 >= 252
-# define BOOST_PP_ITERATION_4 252
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 251 && BOOST_PP_ITERATION_START_4 >= 251
-# define BOOST_PP_ITERATION_4 251
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 250 && BOOST_PP_ITERATION_START_4 >= 250
-# define BOOST_PP_ITERATION_4 250
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 249 && BOOST_PP_ITERATION_START_4 >= 249
-# define BOOST_PP_ITERATION_4 249
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 248 && BOOST_PP_ITERATION_START_4 >= 248
-# define BOOST_PP_ITERATION_4 248
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 247 && BOOST_PP_ITERATION_START_4 >= 247
-# define BOOST_PP_ITERATION_4 247
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 246 && BOOST_PP_ITERATION_START_4 >= 246
-# define BOOST_PP_ITERATION_4 246
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 245 && BOOST_PP_ITERATION_START_4 >= 245
-# define BOOST_PP_ITERATION_4 245
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 244 && BOOST_PP_ITERATION_START_4 >= 244
-# define BOOST_PP_ITERATION_4 244
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 243 && BOOST_PP_ITERATION_START_4 >= 243
-# define BOOST_PP_ITERATION_4 243
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 242 && BOOST_PP_ITERATION_START_4 >= 242
-# define BOOST_PP_ITERATION_4 242
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 241 && BOOST_PP_ITERATION_START_4 >= 241
-# define BOOST_PP_ITERATION_4 241
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 240 && BOOST_PP_ITERATION_START_4 >= 240
-# define BOOST_PP_ITERATION_4 240
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 239 && BOOST_PP_ITERATION_START_4 >= 239
-# define BOOST_PP_ITERATION_4 239
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 238 && BOOST_PP_ITERATION_START_4 >= 238
-# define BOOST_PP_ITERATION_4 238
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 237 && BOOST_PP_ITERATION_START_4 >= 237
-# define BOOST_PP_ITERATION_4 237
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 236 && BOOST_PP_ITERATION_START_4 >= 236
-# define BOOST_PP_ITERATION_4 236
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 235 && BOOST_PP_ITERATION_START_4 >= 235
-# define BOOST_PP_ITERATION_4 235
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 234 && BOOST_PP_ITERATION_START_4 >= 234
-# define BOOST_PP_ITERATION_4 234
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 233 && BOOST_PP_ITERATION_START_4 >= 233
-# define BOOST_PP_ITERATION_4 233
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 232 && BOOST_PP_ITERATION_START_4 >= 232
-# define BOOST_PP_ITERATION_4 232
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 231 && BOOST_PP_ITERATION_START_4 >= 231
-# define BOOST_PP_ITERATION_4 231
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 230 && BOOST_PP_ITERATION_START_4 >= 230
-# define BOOST_PP_ITERATION_4 230
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 229 && BOOST_PP_ITERATION_START_4 >= 229
-# define BOOST_PP_ITERATION_4 229
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 228 && BOOST_PP_ITERATION_START_4 >= 228
-# define BOOST_PP_ITERATION_4 228
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 227 && BOOST_PP_ITERATION_START_4 >= 227
-# define BOOST_PP_ITERATION_4 227
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 226 && BOOST_PP_ITERATION_START_4 >= 226
-# define BOOST_PP_ITERATION_4 226
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 225 && BOOST_PP_ITERATION_START_4 >= 225
-# define BOOST_PP_ITERATION_4 225
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 224 && BOOST_PP_ITERATION_START_4 >= 224
-# define BOOST_PP_ITERATION_4 224
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 223 && BOOST_PP_ITERATION_START_4 >= 223
-# define BOOST_PP_ITERATION_4 223
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 222 && BOOST_PP_ITERATION_START_4 >= 222
-# define BOOST_PP_ITERATION_4 222
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 221 && BOOST_PP_ITERATION_START_4 >= 221
-# define BOOST_PP_ITERATION_4 221
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 220 && BOOST_PP_ITERATION_START_4 >= 220
-# define BOOST_PP_ITERATION_4 220
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 219 && BOOST_PP_ITERATION_START_4 >= 219
-# define BOOST_PP_ITERATION_4 219
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 218 && BOOST_PP_ITERATION_START_4 >= 218
-# define BOOST_PP_ITERATION_4 218
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 217 && BOOST_PP_ITERATION_START_4 >= 217
-# define BOOST_PP_ITERATION_4 217
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 216 && BOOST_PP_ITERATION_START_4 >= 216
-# define BOOST_PP_ITERATION_4 216
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 215 && BOOST_PP_ITERATION_START_4 >= 215
-# define BOOST_PP_ITERATION_4 215
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 214 && BOOST_PP_ITERATION_START_4 >= 214
-# define BOOST_PP_ITERATION_4 214
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 213 && BOOST_PP_ITERATION_START_4 >= 213
-# define BOOST_PP_ITERATION_4 213
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 212 && BOOST_PP_ITERATION_START_4 >= 212
-# define BOOST_PP_ITERATION_4 212
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 211 && BOOST_PP_ITERATION_START_4 >= 211
-# define BOOST_PP_ITERATION_4 211
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 210 && BOOST_PP_ITERATION_START_4 >= 210
-# define BOOST_PP_ITERATION_4 210
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 209 && BOOST_PP_ITERATION_START_4 >= 209
-# define BOOST_PP_ITERATION_4 209
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 208 && BOOST_PP_ITERATION_START_4 >= 208
-# define BOOST_PP_ITERATION_4 208
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 207 && BOOST_PP_ITERATION_START_4 >= 207
-# define BOOST_PP_ITERATION_4 207
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 206 && BOOST_PP_ITERATION_START_4 >= 206
-# define BOOST_PP_ITERATION_4 206
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 205 && BOOST_PP_ITERATION_START_4 >= 205
-# define BOOST_PP_ITERATION_4 205
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 204 && BOOST_PP_ITERATION_START_4 >= 204
-# define BOOST_PP_ITERATION_4 204
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 203 && BOOST_PP_ITERATION_START_4 >= 203
-# define BOOST_PP_ITERATION_4 203
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 202 && BOOST_PP_ITERATION_START_4 >= 202
-# define BOOST_PP_ITERATION_4 202
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 201 && BOOST_PP_ITERATION_START_4 >= 201
-# define BOOST_PP_ITERATION_4 201
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 200 && BOOST_PP_ITERATION_START_4 >= 200
-# define BOOST_PP_ITERATION_4 200
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 199 && BOOST_PP_ITERATION_START_4 >= 199
-# define BOOST_PP_ITERATION_4 199
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 198 && BOOST_PP_ITERATION_START_4 >= 198
-# define BOOST_PP_ITERATION_4 198
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 197 && BOOST_PP_ITERATION_START_4 >= 197
-# define BOOST_PP_ITERATION_4 197
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 196 && BOOST_PP_ITERATION_START_4 >= 196
-# define BOOST_PP_ITERATION_4 196
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 195 && BOOST_PP_ITERATION_START_4 >= 195
-# define BOOST_PP_ITERATION_4 195
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 194 && BOOST_PP_ITERATION_START_4 >= 194
-# define BOOST_PP_ITERATION_4 194
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 193 && BOOST_PP_ITERATION_START_4 >= 193
-# define BOOST_PP_ITERATION_4 193
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 192 && BOOST_PP_ITERATION_START_4 >= 192
-# define BOOST_PP_ITERATION_4 192
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 191 && BOOST_PP_ITERATION_START_4 >= 191
-# define BOOST_PP_ITERATION_4 191
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 190 && BOOST_PP_ITERATION_START_4 >= 190
-# define BOOST_PP_ITERATION_4 190
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 189 && BOOST_PP_ITERATION_START_4 >= 189
-# define BOOST_PP_ITERATION_4 189
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 188 && BOOST_PP_ITERATION_START_4 >= 188
-# define BOOST_PP_ITERATION_4 188
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 187 && BOOST_PP_ITERATION_START_4 >= 187
-# define BOOST_PP_ITERATION_4 187
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 186 && BOOST_PP_ITERATION_START_4 >= 186
-# define BOOST_PP_ITERATION_4 186
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 185 && BOOST_PP_ITERATION_START_4 >= 185
-# define BOOST_PP_ITERATION_4 185
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 184 && BOOST_PP_ITERATION_START_4 >= 184
-# define BOOST_PP_ITERATION_4 184
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 183 && BOOST_PP_ITERATION_START_4 >= 183
-# define BOOST_PP_ITERATION_4 183
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 182 && BOOST_PP_ITERATION_START_4 >= 182
-# define BOOST_PP_ITERATION_4 182
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 181 && BOOST_PP_ITERATION_START_4 >= 181
-# define BOOST_PP_ITERATION_4 181
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 180 && BOOST_PP_ITERATION_START_4 >= 180
-# define BOOST_PP_ITERATION_4 180
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 179 && BOOST_PP_ITERATION_START_4 >= 179
-# define BOOST_PP_ITERATION_4 179
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 178 && BOOST_PP_ITERATION_START_4 >= 178
-# define BOOST_PP_ITERATION_4 178
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 177 && BOOST_PP_ITERATION_START_4 >= 177
-# define BOOST_PP_ITERATION_4 177
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 176 && BOOST_PP_ITERATION_START_4 >= 176
-# define BOOST_PP_ITERATION_4 176
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 175 && BOOST_PP_ITERATION_START_4 >= 175
-# define BOOST_PP_ITERATION_4 175
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 174 && BOOST_PP_ITERATION_START_4 >= 174
-# define BOOST_PP_ITERATION_4 174
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 173 && BOOST_PP_ITERATION_START_4 >= 173
-# define BOOST_PP_ITERATION_4 173
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 172 && BOOST_PP_ITERATION_START_4 >= 172
-# define BOOST_PP_ITERATION_4 172
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 171 && BOOST_PP_ITERATION_START_4 >= 171
-# define BOOST_PP_ITERATION_4 171
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 170 && BOOST_PP_ITERATION_START_4 >= 170
-# define BOOST_PP_ITERATION_4 170
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 169 && BOOST_PP_ITERATION_START_4 >= 169
-# define BOOST_PP_ITERATION_4 169
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 168 && BOOST_PP_ITERATION_START_4 >= 168
-# define BOOST_PP_ITERATION_4 168
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 167 && BOOST_PP_ITERATION_START_4 >= 167
-# define BOOST_PP_ITERATION_4 167
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 166 && BOOST_PP_ITERATION_START_4 >= 166
-# define BOOST_PP_ITERATION_4 166
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 165 && BOOST_PP_ITERATION_START_4 >= 165
-# define BOOST_PP_ITERATION_4 165
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 164 && BOOST_PP_ITERATION_START_4 >= 164
-# define BOOST_PP_ITERATION_4 164
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 163 && BOOST_PP_ITERATION_START_4 >= 163
-# define BOOST_PP_ITERATION_4 163
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 162 && BOOST_PP_ITERATION_START_4 >= 162
-# define BOOST_PP_ITERATION_4 162
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 161 && BOOST_PP_ITERATION_START_4 >= 161
-# define BOOST_PP_ITERATION_4 161
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 160 && BOOST_PP_ITERATION_START_4 >= 160
-# define BOOST_PP_ITERATION_4 160
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 159 && BOOST_PP_ITERATION_START_4 >= 159
-# define BOOST_PP_ITERATION_4 159
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 158 && BOOST_PP_ITERATION_START_4 >= 158
-# define BOOST_PP_ITERATION_4 158
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 157 && BOOST_PP_ITERATION_START_4 >= 157
-# define BOOST_PP_ITERATION_4 157
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 156 && BOOST_PP_ITERATION_START_4 >= 156
-# define BOOST_PP_ITERATION_4 156
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 155 && BOOST_PP_ITERATION_START_4 >= 155
-# define BOOST_PP_ITERATION_4 155
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 154 && BOOST_PP_ITERATION_START_4 >= 154
-# define BOOST_PP_ITERATION_4 154
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 153 && BOOST_PP_ITERATION_START_4 >= 153
-# define BOOST_PP_ITERATION_4 153
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 152 && BOOST_PP_ITERATION_START_4 >= 152
-# define BOOST_PP_ITERATION_4 152
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 151 && BOOST_PP_ITERATION_START_4 >= 151
-# define BOOST_PP_ITERATION_4 151
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 150 && BOOST_PP_ITERATION_START_4 >= 150
-# define BOOST_PP_ITERATION_4 150
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 149 && BOOST_PP_ITERATION_START_4 >= 149
-# define BOOST_PP_ITERATION_4 149
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 148 && BOOST_PP_ITERATION_START_4 >= 148
-# define BOOST_PP_ITERATION_4 148
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 147 && BOOST_PP_ITERATION_START_4 >= 147
-# define BOOST_PP_ITERATION_4 147
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 146 && BOOST_PP_ITERATION_START_4 >= 146
-# define BOOST_PP_ITERATION_4 146
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 145 && BOOST_PP_ITERATION_START_4 >= 145
-# define BOOST_PP_ITERATION_4 145
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 144 && BOOST_PP_ITERATION_START_4 >= 144
-# define BOOST_PP_ITERATION_4 144
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 143 && BOOST_PP_ITERATION_START_4 >= 143
-# define BOOST_PP_ITERATION_4 143
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 142 && BOOST_PP_ITERATION_START_4 >= 142
-# define BOOST_PP_ITERATION_4 142
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 141 && BOOST_PP_ITERATION_START_4 >= 141
-# define BOOST_PP_ITERATION_4 141
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 140 && BOOST_PP_ITERATION_START_4 >= 140
-# define BOOST_PP_ITERATION_4 140
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 139 && BOOST_PP_ITERATION_START_4 >= 139
-# define BOOST_PP_ITERATION_4 139
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 138 && BOOST_PP_ITERATION_START_4 >= 138
-# define BOOST_PP_ITERATION_4 138
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 137 && BOOST_PP_ITERATION_START_4 >= 137
-# define BOOST_PP_ITERATION_4 137
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 136 && BOOST_PP_ITERATION_START_4 >= 136
-# define BOOST_PP_ITERATION_4 136
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 135 && BOOST_PP_ITERATION_START_4 >= 135
-# define BOOST_PP_ITERATION_4 135
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 134 && BOOST_PP_ITERATION_START_4 >= 134
-# define BOOST_PP_ITERATION_4 134
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 133 && BOOST_PP_ITERATION_START_4 >= 133
-# define BOOST_PP_ITERATION_4 133
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 132 && BOOST_PP_ITERATION_START_4 >= 132
-# define BOOST_PP_ITERATION_4 132
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 131 && BOOST_PP_ITERATION_START_4 >= 131
-# define BOOST_PP_ITERATION_4 131
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 130 && BOOST_PP_ITERATION_START_4 >= 130
-# define BOOST_PP_ITERATION_4 130
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 129 && BOOST_PP_ITERATION_START_4 >= 129
-# define BOOST_PP_ITERATION_4 129
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 128 && BOOST_PP_ITERATION_START_4 >= 128
-# define BOOST_PP_ITERATION_4 128
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 127 && BOOST_PP_ITERATION_START_4 >= 127
-# define BOOST_PP_ITERATION_4 127
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 126 && BOOST_PP_ITERATION_START_4 >= 126
-# define BOOST_PP_ITERATION_4 126
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 125 && BOOST_PP_ITERATION_START_4 >= 125
-# define BOOST_PP_ITERATION_4 125
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 124 && BOOST_PP_ITERATION_START_4 >= 124
-# define BOOST_PP_ITERATION_4 124
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 123 && BOOST_PP_ITERATION_START_4 >= 123
-# define BOOST_PP_ITERATION_4 123
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 122 && BOOST_PP_ITERATION_START_4 >= 122
-# define BOOST_PP_ITERATION_4 122
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 121 && BOOST_PP_ITERATION_START_4 >= 121
-# define BOOST_PP_ITERATION_4 121
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 120 && BOOST_PP_ITERATION_START_4 >= 120
-# define BOOST_PP_ITERATION_4 120
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 119 && BOOST_PP_ITERATION_START_4 >= 119
-# define BOOST_PP_ITERATION_4 119
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 118 && BOOST_PP_ITERATION_START_4 >= 118
-# define BOOST_PP_ITERATION_4 118
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 117 && BOOST_PP_ITERATION_START_4 >= 117
-# define BOOST_PP_ITERATION_4 117
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 116 && BOOST_PP_ITERATION_START_4 >= 116
-# define BOOST_PP_ITERATION_4 116
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 115 && BOOST_PP_ITERATION_START_4 >= 115
-# define BOOST_PP_ITERATION_4 115
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 114 && BOOST_PP_ITERATION_START_4 >= 114
-# define BOOST_PP_ITERATION_4 114
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 113 && BOOST_PP_ITERATION_START_4 >= 113
-# define BOOST_PP_ITERATION_4 113
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 112 && BOOST_PP_ITERATION_START_4 >= 112
-# define BOOST_PP_ITERATION_4 112
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 111 && BOOST_PP_ITERATION_START_4 >= 111
-# define BOOST_PP_ITERATION_4 111
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 110 && BOOST_PP_ITERATION_START_4 >= 110
-# define BOOST_PP_ITERATION_4 110
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 109 && BOOST_PP_ITERATION_START_4 >= 109
-# define BOOST_PP_ITERATION_4 109
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 108 && BOOST_PP_ITERATION_START_4 >= 108
-# define BOOST_PP_ITERATION_4 108
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 107 && BOOST_PP_ITERATION_START_4 >= 107
-# define BOOST_PP_ITERATION_4 107
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 106 && BOOST_PP_ITERATION_START_4 >= 106
-# define BOOST_PP_ITERATION_4 106
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 105 && BOOST_PP_ITERATION_START_4 >= 105
-# define BOOST_PP_ITERATION_4 105
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 104 && BOOST_PP_ITERATION_START_4 >= 104
-# define BOOST_PP_ITERATION_4 104
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 103 && BOOST_PP_ITERATION_START_4 >= 103
-# define BOOST_PP_ITERATION_4 103
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 102 && BOOST_PP_ITERATION_START_4 >= 102
-# define BOOST_PP_ITERATION_4 102
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 101 && BOOST_PP_ITERATION_START_4 >= 101
-# define BOOST_PP_ITERATION_4 101
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 100 && BOOST_PP_ITERATION_START_4 >= 100
-# define BOOST_PP_ITERATION_4 100
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 99 && BOOST_PP_ITERATION_START_4 >= 99
-# define BOOST_PP_ITERATION_4 99
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 98 && BOOST_PP_ITERATION_START_4 >= 98
-# define BOOST_PP_ITERATION_4 98
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 97 && BOOST_PP_ITERATION_START_4 >= 97
-# define BOOST_PP_ITERATION_4 97
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 96 && BOOST_PP_ITERATION_START_4 >= 96
-# define BOOST_PP_ITERATION_4 96
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 95 && BOOST_PP_ITERATION_START_4 >= 95
-# define BOOST_PP_ITERATION_4 95
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 94 && BOOST_PP_ITERATION_START_4 >= 94
-# define BOOST_PP_ITERATION_4 94
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 93 && BOOST_PP_ITERATION_START_4 >= 93
-# define BOOST_PP_ITERATION_4 93
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 92 && BOOST_PP_ITERATION_START_4 >= 92
-# define BOOST_PP_ITERATION_4 92
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 91 && BOOST_PP_ITERATION_START_4 >= 91
-# define BOOST_PP_ITERATION_4 91
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 90 && BOOST_PP_ITERATION_START_4 >= 90
-# define BOOST_PP_ITERATION_4 90
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 89 && BOOST_PP_ITERATION_START_4 >= 89
-# define BOOST_PP_ITERATION_4 89
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 88 && BOOST_PP_ITERATION_START_4 >= 88
-# define BOOST_PP_ITERATION_4 88
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 87 && BOOST_PP_ITERATION_START_4 >= 87
-# define BOOST_PP_ITERATION_4 87
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 86 && BOOST_PP_ITERATION_START_4 >= 86
-# define BOOST_PP_ITERATION_4 86
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 85 && BOOST_PP_ITERATION_START_4 >= 85
-# define BOOST_PP_ITERATION_4 85
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 84 && BOOST_PP_ITERATION_START_4 >= 84
-# define BOOST_PP_ITERATION_4 84
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 83 && BOOST_PP_ITERATION_START_4 >= 83
-# define BOOST_PP_ITERATION_4 83
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 82 && BOOST_PP_ITERATION_START_4 >= 82
-# define BOOST_PP_ITERATION_4 82
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 81 && BOOST_PP_ITERATION_START_4 >= 81
-# define BOOST_PP_ITERATION_4 81
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 80 && BOOST_PP_ITERATION_START_4 >= 80
-# define BOOST_PP_ITERATION_4 80
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 79 && BOOST_PP_ITERATION_START_4 >= 79
-# define BOOST_PP_ITERATION_4 79
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 78 && BOOST_PP_ITERATION_START_4 >= 78
-# define BOOST_PP_ITERATION_4 78
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 77 && BOOST_PP_ITERATION_START_4 >= 77
-# define BOOST_PP_ITERATION_4 77
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 76 && BOOST_PP_ITERATION_START_4 >= 76
-# define BOOST_PP_ITERATION_4 76
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 75 && BOOST_PP_ITERATION_START_4 >= 75
-# define BOOST_PP_ITERATION_4 75
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 74 && BOOST_PP_ITERATION_START_4 >= 74
-# define BOOST_PP_ITERATION_4 74
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 73 && BOOST_PP_ITERATION_START_4 >= 73
-# define BOOST_PP_ITERATION_4 73
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 72 && BOOST_PP_ITERATION_START_4 >= 72
-# define BOOST_PP_ITERATION_4 72
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 71 && BOOST_PP_ITERATION_START_4 >= 71
-# define BOOST_PP_ITERATION_4 71
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 70 && BOOST_PP_ITERATION_START_4 >= 70
-# define BOOST_PP_ITERATION_4 70
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 69 && BOOST_PP_ITERATION_START_4 >= 69
-# define BOOST_PP_ITERATION_4 69
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 68 && BOOST_PP_ITERATION_START_4 >= 68
-# define BOOST_PP_ITERATION_4 68
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 67 && BOOST_PP_ITERATION_START_4 >= 67
-# define BOOST_PP_ITERATION_4 67
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 66 && BOOST_PP_ITERATION_START_4 >= 66
-# define BOOST_PP_ITERATION_4 66
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 65 && BOOST_PP_ITERATION_START_4 >= 65
-# define BOOST_PP_ITERATION_4 65
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 64 && BOOST_PP_ITERATION_START_4 >= 64
-# define BOOST_PP_ITERATION_4 64
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 63 && BOOST_PP_ITERATION_START_4 >= 63
-# define BOOST_PP_ITERATION_4 63
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 62 && BOOST_PP_ITERATION_START_4 >= 62
-# define BOOST_PP_ITERATION_4 62
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 61 && BOOST_PP_ITERATION_START_4 >= 61
-# define BOOST_PP_ITERATION_4 61
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 60 && BOOST_PP_ITERATION_START_4 >= 60
-# define BOOST_PP_ITERATION_4 60
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 59 && BOOST_PP_ITERATION_START_4 >= 59
-# define BOOST_PP_ITERATION_4 59
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 58 && BOOST_PP_ITERATION_START_4 >= 58
-# define BOOST_PP_ITERATION_4 58
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 57 && BOOST_PP_ITERATION_START_4 >= 57
-# define BOOST_PP_ITERATION_4 57
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 56 && BOOST_PP_ITERATION_START_4 >= 56
-# define BOOST_PP_ITERATION_4 56
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 55 && BOOST_PP_ITERATION_START_4 >= 55
-# define BOOST_PP_ITERATION_4 55
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 54 && BOOST_PP_ITERATION_START_4 >= 54
-# define BOOST_PP_ITERATION_4 54
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 53 && BOOST_PP_ITERATION_START_4 >= 53
-# define BOOST_PP_ITERATION_4 53
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 52 && BOOST_PP_ITERATION_START_4 >= 52
-# define BOOST_PP_ITERATION_4 52
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 51 && BOOST_PP_ITERATION_START_4 >= 51
-# define BOOST_PP_ITERATION_4 51
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 50 && BOOST_PP_ITERATION_START_4 >= 50
-# define BOOST_PP_ITERATION_4 50
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 49 && BOOST_PP_ITERATION_START_4 >= 49
-# define BOOST_PP_ITERATION_4 49
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 48 && BOOST_PP_ITERATION_START_4 >= 48
-# define BOOST_PP_ITERATION_4 48
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 47 && BOOST_PP_ITERATION_START_4 >= 47
-# define BOOST_PP_ITERATION_4 47
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 46 && BOOST_PP_ITERATION_START_4 >= 46
-# define BOOST_PP_ITERATION_4 46
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 45 && BOOST_PP_ITERATION_START_4 >= 45
-# define BOOST_PP_ITERATION_4 45
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 44 && BOOST_PP_ITERATION_START_4 >= 44
-# define BOOST_PP_ITERATION_4 44
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 43 && BOOST_PP_ITERATION_START_4 >= 43
-# define BOOST_PP_ITERATION_4 43
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 42 && BOOST_PP_ITERATION_START_4 >= 42
-# define BOOST_PP_ITERATION_4 42
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 41 && BOOST_PP_ITERATION_START_4 >= 41
-# define BOOST_PP_ITERATION_4 41
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 40 && BOOST_PP_ITERATION_START_4 >= 40
-# define BOOST_PP_ITERATION_4 40
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 39 && BOOST_PP_ITERATION_START_4 >= 39
-# define BOOST_PP_ITERATION_4 39
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 38 && BOOST_PP_ITERATION_START_4 >= 38
-# define BOOST_PP_ITERATION_4 38
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 37 && BOOST_PP_ITERATION_START_4 >= 37
-# define BOOST_PP_ITERATION_4 37
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 36 && BOOST_PP_ITERATION_START_4 >= 36
-# define BOOST_PP_ITERATION_4 36
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 35 && BOOST_PP_ITERATION_START_4 >= 35
-# define BOOST_PP_ITERATION_4 35
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 34 && BOOST_PP_ITERATION_START_4 >= 34
-# define BOOST_PP_ITERATION_4 34
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 33 && BOOST_PP_ITERATION_START_4 >= 33
-# define BOOST_PP_ITERATION_4 33
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 32 && BOOST_PP_ITERATION_START_4 >= 32
-# define BOOST_PP_ITERATION_4 32
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 31 && BOOST_PP_ITERATION_START_4 >= 31
-# define BOOST_PP_ITERATION_4 31
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 30 && BOOST_PP_ITERATION_START_4 >= 30
-# define BOOST_PP_ITERATION_4 30
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 29 && BOOST_PP_ITERATION_START_4 >= 29
-# define BOOST_PP_ITERATION_4 29
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 28 && BOOST_PP_ITERATION_START_4 >= 28
-# define BOOST_PP_ITERATION_4 28
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 27 && BOOST_PP_ITERATION_START_4 >= 27
-# define BOOST_PP_ITERATION_4 27
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 26 && BOOST_PP_ITERATION_START_4 >= 26
-# define BOOST_PP_ITERATION_4 26
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 25 && BOOST_PP_ITERATION_START_4 >= 25
-# define BOOST_PP_ITERATION_4 25
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 24 && BOOST_PP_ITERATION_START_4 >= 24
-# define BOOST_PP_ITERATION_4 24
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 23 && BOOST_PP_ITERATION_START_4 >= 23
-# define BOOST_PP_ITERATION_4 23
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 22 && BOOST_PP_ITERATION_START_4 >= 22
-# define BOOST_PP_ITERATION_4 22
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 21 && BOOST_PP_ITERATION_START_4 >= 21
-# define BOOST_PP_ITERATION_4 21
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 20 && BOOST_PP_ITERATION_START_4 >= 20
-# define BOOST_PP_ITERATION_4 20
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 19 && BOOST_PP_ITERATION_START_4 >= 19
-# define BOOST_PP_ITERATION_4 19
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 18 && BOOST_PP_ITERATION_START_4 >= 18
-# define BOOST_PP_ITERATION_4 18
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 17 && BOOST_PP_ITERATION_START_4 >= 17
-# define BOOST_PP_ITERATION_4 17
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 16 && BOOST_PP_ITERATION_START_4 >= 16
-# define BOOST_PP_ITERATION_4 16
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 15 && BOOST_PP_ITERATION_START_4 >= 15
-# define BOOST_PP_ITERATION_4 15
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 14 && BOOST_PP_ITERATION_START_4 >= 14
-# define BOOST_PP_ITERATION_4 14
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 13 && BOOST_PP_ITERATION_START_4 >= 13
-# define BOOST_PP_ITERATION_4 13
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 12 && BOOST_PP_ITERATION_START_4 >= 12
-# define BOOST_PP_ITERATION_4 12
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 11 && BOOST_PP_ITERATION_START_4 >= 11
-# define BOOST_PP_ITERATION_4 11
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 10 && BOOST_PP_ITERATION_START_4 >= 10
-# define BOOST_PP_ITERATION_4 10
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 9 && BOOST_PP_ITERATION_START_4 >= 9
-# define BOOST_PP_ITERATION_4 9
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 8 && BOOST_PP_ITERATION_START_4 >= 8
-# define BOOST_PP_ITERATION_4 8
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 7 && BOOST_PP_ITERATION_START_4 >= 7
-# define BOOST_PP_ITERATION_4 7
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 6 && BOOST_PP_ITERATION_START_4 >= 6
-# define BOOST_PP_ITERATION_4 6
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 5 && BOOST_PP_ITERATION_START_4 >= 5
-# define BOOST_PP_ITERATION_4 5
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 4 && BOOST_PP_ITERATION_START_4 >= 4
-# define BOOST_PP_ITERATION_4 4
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 3 && BOOST_PP_ITERATION_START_4 >= 3
-# define BOOST_PP_ITERATION_4 3
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 2 && BOOST_PP_ITERATION_START_4 >= 2
-# define BOOST_PP_ITERATION_4 2
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 1 && BOOST_PP_ITERATION_START_4 >= 1
-# define BOOST_PP_ITERATION_4 1
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
-# if BOOST_PP_ITERATION_FINISH_4 <= 0 && BOOST_PP_ITERATION_START_4 >= 0
-# define BOOST_PP_ITERATION_4 0
-# include BOOST_PP_FILENAME_4
-# undef BOOST_PP_ITERATION_4
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse5.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse5.hpp
deleted file mode 100644
index 225a557..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/iter/reverse5.hpp
+++ /dev/null
@@ -1,1296 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if BOOST_PP_ITERATION_FINISH_5 <= 256 && BOOST_PP_ITERATION_START_5 >= 256
-# define BOOST_PP_ITERATION_5 256
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 255 && BOOST_PP_ITERATION_START_5 >= 255
-# define BOOST_PP_ITERATION_5 255
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 254 && BOOST_PP_ITERATION_START_5 >= 254
-# define BOOST_PP_ITERATION_5 254
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 253 && BOOST_PP_ITERATION_START_5 >= 253
-# define BOOST_PP_ITERATION_5 253
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 252 && BOOST_PP_ITERATION_START_5 >= 252
-# define BOOST_PP_ITERATION_5 252
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 251 && BOOST_PP_ITERATION_START_5 >= 251
-# define BOOST_PP_ITERATION_5 251
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 250 && BOOST_PP_ITERATION_START_5 >= 250
-# define BOOST_PP_ITERATION_5 250
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 249 && BOOST_PP_ITERATION_START_5 >= 249
-# define BOOST_PP_ITERATION_5 249
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 248 && BOOST_PP_ITERATION_START_5 >= 248
-# define BOOST_PP_ITERATION_5 248
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 247 && BOOST_PP_ITERATION_START_5 >= 247
-# define BOOST_PP_ITERATION_5 247
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 246 && BOOST_PP_ITERATION_START_5 >= 246
-# define BOOST_PP_ITERATION_5 246
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 245 && BOOST_PP_ITERATION_START_5 >= 245
-# define BOOST_PP_ITERATION_5 245
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 244 && BOOST_PP_ITERATION_START_5 >= 244
-# define BOOST_PP_ITERATION_5 244
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 243 && BOOST_PP_ITERATION_START_5 >= 243
-# define BOOST_PP_ITERATION_5 243
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 242 && BOOST_PP_ITERATION_START_5 >= 242
-# define BOOST_PP_ITERATION_5 242
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 241 && BOOST_PP_ITERATION_START_5 >= 241
-# define BOOST_PP_ITERATION_5 241
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 240 && BOOST_PP_ITERATION_START_5 >= 240
-# define BOOST_PP_ITERATION_5 240
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 239 && BOOST_PP_ITERATION_START_5 >= 239
-# define BOOST_PP_ITERATION_5 239
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 238 && BOOST_PP_ITERATION_START_5 >= 238
-# define BOOST_PP_ITERATION_5 238
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 237 && BOOST_PP_ITERATION_START_5 >= 237
-# define BOOST_PP_ITERATION_5 237
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 236 && BOOST_PP_ITERATION_START_5 >= 236
-# define BOOST_PP_ITERATION_5 236
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 235 && BOOST_PP_ITERATION_START_5 >= 235
-# define BOOST_PP_ITERATION_5 235
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 234 && BOOST_PP_ITERATION_START_5 >= 234
-# define BOOST_PP_ITERATION_5 234
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 233 && BOOST_PP_ITERATION_START_5 >= 233
-# define BOOST_PP_ITERATION_5 233
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 232 && BOOST_PP_ITERATION_START_5 >= 232
-# define BOOST_PP_ITERATION_5 232
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 231 && BOOST_PP_ITERATION_START_5 >= 231
-# define BOOST_PP_ITERATION_5 231
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 230 && BOOST_PP_ITERATION_START_5 >= 230
-# define BOOST_PP_ITERATION_5 230
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 229 && BOOST_PP_ITERATION_START_5 >= 229
-# define BOOST_PP_ITERATION_5 229
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 228 && BOOST_PP_ITERATION_START_5 >= 228
-# define BOOST_PP_ITERATION_5 228
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 227 && BOOST_PP_ITERATION_START_5 >= 227
-# define BOOST_PP_ITERATION_5 227
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 226 && BOOST_PP_ITERATION_START_5 >= 226
-# define BOOST_PP_ITERATION_5 226
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 225 && BOOST_PP_ITERATION_START_5 >= 225
-# define BOOST_PP_ITERATION_5 225
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 224 && BOOST_PP_ITERATION_START_5 >= 224
-# define BOOST_PP_ITERATION_5 224
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 223 && BOOST_PP_ITERATION_START_5 >= 223
-# define BOOST_PP_ITERATION_5 223
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 222 && BOOST_PP_ITERATION_START_5 >= 222
-# define BOOST_PP_ITERATION_5 222
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 221 && BOOST_PP_ITERATION_START_5 >= 221
-# define BOOST_PP_ITERATION_5 221
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 220 && BOOST_PP_ITERATION_START_5 >= 220
-# define BOOST_PP_ITERATION_5 220
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 219 && BOOST_PP_ITERATION_START_5 >= 219
-# define BOOST_PP_ITERATION_5 219
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 218 && BOOST_PP_ITERATION_START_5 >= 218
-# define BOOST_PP_ITERATION_5 218
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 217 && BOOST_PP_ITERATION_START_5 >= 217
-# define BOOST_PP_ITERATION_5 217
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 216 && BOOST_PP_ITERATION_START_5 >= 216
-# define BOOST_PP_ITERATION_5 216
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 215 && BOOST_PP_ITERATION_START_5 >= 215
-# define BOOST_PP_ITERATION_5 215
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 214 && BOOST_PP_ITERATION_START_5 >= 214
-# define BOOST_PP_ITERATION_5 214
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 213 && BOOST_PP_ITERATION_START_5 >= 213
-# define BOOST_PP_ITERATION_5 213
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 212 && BOOST_PP_ITERATION_START_5 >= 212
-# define BOOST_PP_ITERATION_5 212
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 211 && BOOST_PP_ITERATION_START_5 >= 211
-# define BOOST_PP_ITERATION_5 211
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 210 && BOOST_PP_ITERATION_START_5 >= 210
-# define BOOST_PP_ITERATION_5 210
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 209 && BOOST_PP_ITERATION_START_5 >= 209
-# define BOOST_PP_ITERATION_5 209
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 208 && BOOST_PP_ITERATION_START_5 >= 208
-# define BOOST_PP_ITERATION_5 208
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 207 && BOOST_PP_ITERATION_START_5 >= 207
-# define BOOST_PP_ITERATION_5 207
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 206 && BOOST_PP_ITERATION_START_5 >= 206
-# define BOOST_PP_ITERATION_5 206
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 205 && BOOST_PP_ITERATION_START_5 >= 205
-# define BOOST_PP_ITERATION_5 205
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 204 && BOOST_PP_ITERATION_START_5 >= 204
-# define BOOST_PP_ITERATION_5 204
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 203 && BOOST_PP_ITERATION_START_5 >= 203
-# define BOOST_PP_ITERATION_5 203
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 202 && BOOST_PP_ITERATION_START_5 >= 202
-# define BOOST_PP_ITERATION_5 202
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 201 && BOOST_PP_ITERATION_START_5 >= 201
-# define BOOST_PP_ITERATION_5 201
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 200 && BOOST_PP_ITERATION_START_5 >= 200
-# define BOOST_PP_ITERATION_5 200
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 199 && BOOST_PP_ITERATION_START_5 >= 199
-# define BOOST_PP_ITERATION_5 199
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 198 && BOOST_PP_ITERATION_START_5 >= 198
-# define BOOST_PP_ITERATION_5 198
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 197 && BOOST_PP_ITERATION_START_5 >= 197
-# define BOOST_PP_ITERATION_5 197
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 196 && BOOST_PP_ITERATION_START_5 >= 196
-# define BOOST_PP_ITERATION_5 196
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 195 && BOOST_PP_ITERATION_START_5 >= 195
-# define BOOST_PP_ITERATION_5 195
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 194 && BOOST_PP_ITERATION_START_5 >= 194
-# define BOOST_PP_ITERATION_5 194
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 193 && BOOST_PP_ITERATION_START_5 >= 193
-# define BOOST_PP_ITERATION_5 193
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 192 && BOOST_PP_ITERATION_START_5 >= 192
-# define BOOST_PP_ITERATION_5 192
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 191 && BOOST_PP_ITERATION_START_5 >= 191
-# define BOOST_PP_ITERATION_5 191
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 190 && BOOST_PP_ITERATION_START_5 >= 190
-# define BOOST_PP_ITERATION_5 190
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 189 && BOOST_PP_ITERATION_START_5 >= 189
-# define BOOST_PP_ITERATION_5 189
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 188 && BOOST_PP_ITERATION_START_5 >= 188
-# define BOOST_PP_ITERATION_5 188
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 187 && BOOST_PP_ITERATION_START_5 >= 187
-# define BOOST_PP_ITERATION_5 187
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 186 && BOOST_PP_ITERATION_START_5 >= 186
-# define BOOST_PP_ITERATION_5 186
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 185 && BOOST_PP_ITERATION_START_5 >= 185
-# define BOOST_PP_ITERATION_5 185
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 184 && BOOST_PP_ITERATION_START_5 >= 184
-# define BOOST_PP_ITERATION_5 184
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 183 && BOOST_PP_ITERATION_START_5 >= 183
-# define BOOST_PP_ITERATION_5 183
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 182 && BOOST_PP_ITERATION_START_5 >= 182
-# define BOOST_PP_ITERATION_5 182
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 181 && BOOST_PP_ITERATION_START_5 >= 181
-# define BOOST_PP_ITERATION_5 181
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 180 && BOOST_PP_ITERATION_START_5 >= 180
-# define BOOST_PP_ITERATION_5 180
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 179 && BOOST_PP_ITERATION_START_5 >= 179
-# define BOOST_PP_ITERATION_5 179
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 178 && BOOST_PP_ITERATION_START_5 >= 178
-# define BOOST_PP_ITERATION_5 178
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 177 && BOOST_PP_ITERATION_START_5 >= 177
-# define BOOST_PP_ITERATION_5 177
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 176 && BOOST_PP_ITERATION_START_5 >= 176
-# define BOOST_PP_ITERATION_5 176
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 175 && BOOST_PP_ITERATION_START_5 >= 175
-# define BOOST_PP_ITERATION_5 175
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 174 && BOOST_PP_ITERATION_START_5 >= 174
-# define BOOST_PP_ITERATION_5 174
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 173 && BOOST_PP_ITERATION_START_5 >= 173
-# define BOOST_PP_ITERATION_5 173
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 172 && BOOST_PP_ITERATION_START_5 >= 172
-# define BOOST_PP_ITERATION_5 172
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 171 && BOOST_PP_ITERATION_START_5 >= 171
-# define BOOST_PP_ITERATION_5 171
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 170 && BOOST_PP_ITERATION_START_5 >= 170
-# define BOOST_PP_ITERATION_5 170
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 169 && BOOST_PP_ITERATION_START_5 >= 169
-# define BOOST_PP_ITERATION_5 169
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 168 && BOOST_PP_ITERATION_START_5 >= 168
-# define BOOST_PP_ITERATION_5 168
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 167 && BOOST_PP_ITERATION_START_5 >= 167
-# define BOOST_PP_ITERATION_5 167
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 166 && BOOST_PP_ITERATION_START_5 >= 166
-# define BOOST_PP_ITERATION_5 166
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 165 && BOOST_PP_ITERATION_START_5 >= 165
-# define BOOST_PP_ITERATION_5 165
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 164 && BOOST_PP_ITERATION_START_5 >= 164
-# define BOOST_PP_ITERATION_5 164
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 163 && BOOST_PP_ITERATION_START_5 >= 163
-# define BOOST_PP_ITERATION_5 163
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 162 && BOOST_PP_ITERATION_START_5 >= 162
-# define BOOST_PP_ITERATION_5 162
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 161 && BOOST_PP_ITERATION_START_5 >= 161
-# define BOOST_PP_ITERATION_5 161
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 160 && BOOST_PP_ITERATION_START_5 >= 160
-# define BOOST_PP_ITERATION_5 160
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 159 && BOOST_PP_ITERATION_START_5 >= 159
-# define BOOST_PP_ITERATION_5 159
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 158 && BOOST_PP_ITERATION_START_5 >= 158
-# define BOOST_PP_ITERATION_5 158
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 157 && BOOST_PP_ITERATION_START_5 >= 157
-# define BOOST_PP_ITERATION_5 157
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 156 && BOOST_PP_ITERATION_START_5 >= 156
-# define BOOST_PP_ITERATION_5 156
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 155 && BOOST_PP_ITERATION_START_5 >= 155
-# define BOOST_PP_ITERATION_5 155
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 154 && BOOST_PP_ITERATION_START_5 >= 154
-# define BOOST_PP_ITERATION_5 154
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 153 && BOOST_PP_ITERATION_START_5 >= 153
-# define BOOST_PP_ITERATION_5 153
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 152 && BOOST_PP_ITERATION_START_5 >= 152
-# define BOOST_PP_ITERATION_5 152
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 151 && BOOST_PP_ITERATION_START_5 >= 151
-# define BOOST_PP_ITERATION_5 151
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 150 && BOOST_PP_ITERATION_START_5 >= 150
-# define BOOST_PP_ITERATION_5 150
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 149 && BOOST_PP_ITERATION_START_5 >= 149
-# define BOOST_PP_ITERATION_5 149
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 148 && BOOST_PP_ITERATION_START_5 >= 148
-# define BOOST_PP_ITERATION_5 148
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 147 && BOOST_PP_ITERATION_START_5 >= 147
-# define BOOST_PP_ITERATION_5 147
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 146 && BOOST_PP_ITERATION_START_5 >= 146
-# define BOOST_PP_ITERATION_5 146
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 145 && BOOST_PP_ITERATION_START_5 >= 145
-# define BOOST_PP_ITERATION_5 145
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 144 && BOOST_PP_ITERATION_START_5 >= 144
-# define BOOST_PP_ITERATION_5 144
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 143 && BOOST_PP_ITERATION_START_5 >= 143
-# define BOOST_PP_ITERATION_5 143
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 142 && BOOST_PP_ITERATION_START_5 >= 142
-# define BOOST_PP_ITERATION_5 142
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 141 && BOOST_PP_ITERATION_START_5 >= 141
-# define BOOST_PP_ITERATION_5 141
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 140 && BOOST_PP_ITERATION_START_5 >= 140
-# define BOOST_PP_ITERATION_5 140
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 139 && BOOST_PP_ITERATION_START_5 >= 139
-# define BOOST_PP_ITERATION_5 139
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 138 && BOOST_PP_ITERATION_START_5 >= 138
-# define BOOST_PP_ITERATION_5 138
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 137 && BOOST_PP_ITERATION_START_5 >= 137
-# define BOOST_PP_ITERATION_5 137
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 136 && BOOST_PP_ITERATION_START_5 >= 136
-# define BOOST_PP_ITERATION_5 136
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 135 && BOOST_PP_ITERATION_START_5 >= 135
-# define BOOST_PP_ITERATION_5 135
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 134 && BOOST_PP_ITERATION_START_5 >= 134
-# define BOOST_PP_ITERATION_5 134
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 133 && BOOST_PP_ITERATION_START_5 >= 133
-# define BOOST_PP_ITERATION_5 133
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 132 && BOOST_PP_ITERATION_START_5 >= 132
-# define BOOST_PP_ITERATION_5 132
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 131 && BOOST_PP_ITERATION_START_5 >= 131
-# define BOOST_PP_ITERATION_5 131
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 130 && BOOST_PP_ITERATION_START_5 >= 130
-# define BOOST_PP_ITERATION_5 130
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 129 && BOOST_PP_ITERATION_START_5 >= 129
-# define BOOST_PP_ITERATION_5 129
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 128 && BOOST_PP_ITERATION_START_5 >= 128
-# define BOOST_PP_ITERATION_5 128
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 127 && BOOST_PP_ITERATION_START_5 >= 127
-# define BOOST_PP_ITERATION_5 127
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 126 && BOOST_PP_ITERATION_START_5 >= 126
-# define BOOST_PP_ITERATION_5 126
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 125 && BOOST_PP_ITERATION_START_5 >= 125
-# define BOOST_PP_ITERATION_5 125
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 124 && BOOST_PP_ITERATION_START_5 >= 124
-# define BOOST_PP_ITERATION_5 124
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 123 && BOOST_PP_ITERATION_START_5 >= 123
-# define BOOST_PP_ITERATION_5 123
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 122 && BOOST_PP_ITERATION_START_5 >= 122
-# define BOOST_PP_ITERATION_5 122
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 121 && BOOST_PP_ITERATION_START_5 >= 121
-# define BOOST_PP_ITERATION_5 121
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 120 && BOOST_PP_ITERATION_START_5 >= 120
-# define BOOST_PP_ITERATION_5 120
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 119 && BOOST_PP_ITERATION_START_5 >= 119
-# define BOOST_PP_ITERATION_5 119
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 118 && BOOST_PP_ITERATION_START_5 >= 118
-# define BOOST_PP_ITERATION_5 118
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 117 && BOOST_PP_ITERATION_START_5 >= 117
-# define BOOST_PP_ITERATION_5 117
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 116 && BOOST_PP_ITERATION_START_5 >= 116
-# define BOOST_PP_ITERATION_5 116
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 115 && BOOST_PP_ITERATION_START_5 >= 115
-# define BOOST_PP_ITERATION_5 115
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 114 && BOOST_PP_ITERATION_START_5 >= 114
-# define BOOST_PP_ITERATION_5 114
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 113 && BOOST_PP_ITERATION_START_5 >= 113
-# define BOOST_PP_ITERATION_5 113
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 112 && BOOST_PP_ITERATION_START_5 >= 112
-# define BOOST_PP_ITERATION_5 112
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 111 && BOOST_PP_ITERATION_START_5 >= 111
-# define BOOST_PP_ITERATION_5 111
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 110 && BOOST_PP_ITERATION_START_5 >= 110
-# define BOOST_PP_ITERATION_5 110
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 109 && BOOST_PP_ITERATION_START_5 >= 109
-# define BOOST_PP_ITERATION_5 109
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 108 && BOOST_PP_ITERATION_START_5 >= 108
-# define BOOST_PP_ITERATION_5 108
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 107 && BOOST_PP_ITERATION_START_5 >= 107
-# define BOOST_PP_ITERATION_5 107
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 106 && BOOST_PP_ITERATION_START_5 >= 106
-# define BOOST_PP_ITERATION_5 106
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 105 && BOOST_PP_ITERATION_START_5 >= 105
-# define BOOST_PP_ITERATION_5 105
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 104 && BOOST_PP_ITERATION_START_5 >= 104
-# define BOOST_PP_ITERATION_5 104
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 103 && BOOST_PP_ITERATION_START_5 >= 103
-# define BOOST_PP_ITERATION_5 103
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 102 && BOOST_PP_ITERATION_START_5 >= 102
-# define BOOST_PP_ITERATION_5 102
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 101 && BOOST_PP_ITERATION_START_5 >= 101
-# define BOOST_PP_ITERATION_5 101
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 100 && BOOST_PP_ITERATION_START_5 >= 100
-# define BOOST_PP_ITERATION_5 100
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 99 && BOOST_PP_ITERATION_START_5 >= 99
-# define BOOST_PP_ITERATION_5 99
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 98 && BOOST_PP_ITERATION_START_5 >= 98
-# define BOOST_PP_ITERATION_5 98
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 97 && BOOST_PP_ITERATION_START_5 >= 97
-# define BOOST_PP_ITERATION_5 97
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 96 && BOOST_PP_ITERATION_START_5 >= 96
-# define BOOST_PP_ITERATION_5 96
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 95 && BOOST_PP_ITERATION_START_5 >= 95
-# define BOOST_PP_ITERATION_5 95
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 94 && BOOST_PP_ITERATION_START_5 >= 94
-# define BOOST_PP_ITERATION_5 94
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 93 && BOOST_PP_ITERATION_START_5 >= 93
-# define BOOST_PP_ITERATION_5 93
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 92 && BOOST_PP_ITERATION_START_5 >= 92
-# define BOOST_PP_ITERATION_5 92
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 91 && BOOST_PP_ITERATION_START_5 >= 91
-# define BOOST_PP_ITERATION_5 91
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 90 && BOOST_PP_ITERATION_START_5 >= 90
-# define BOOST_PP_ITERATION_5 90
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 89 && BOOST_PP_ITERATION_START_5 >= 89
-# define BOOST_PP_ITERATION_5 89
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 88 && BOOST_PP_ITERATION_START_5 >= 88
-# define BOOST_PP_ITERATION_5 88
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 87 && BOOST_PP_ITERATION_START_5 >= 87
-# define BOOST_PP_ITERATION_5 87
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 86 && BOOST_PP_ITERATION_START_5 >= 86
-# define BOOST_PP_ITERATION_5 86
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 85 && BOOST_PP_ITERATION_START_5 >= 85
-# define BOOST_PP_ITERATION_5 85
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 84 && BOOST_PP_ITERATION_START_5 >= 84
-# define BOOST_PP_ITERATION_5 84
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 83 && BOOST_PP_ITERATION_START_5 >= 83
-# define BOOST_PP_ITERATION_5 83
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 82 && BOOST_PP_ITERATION_START_5 >= 82
-# define BOOST_PP_ITERATION_5 82
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 81 && BOOST_PP_ITERATION_START_5 >= 81
-# define BOOST_PP_ITERATION_5 81
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 80 && BOOST_PP_ITERATION_START_5 >= 80
-# define BOOST_PP_ITERATION_5 80
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 79 && BOOST_PP_ITERATION_START_5 >= 79
-# define BOOST_PP_ITERATION_5 79
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 78 && BOOST_PP_ITERATION_START_5 >= 78
-# define BOOST_PP_ITERATION_5 78
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 77 && BOOST_PP_ITERATION_START_5 >= 77
-# define BOOST_PP_ITERATION_5 77
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 76 && BOOST_PP_ITERATION_START_5 >= 76
-# define BOOST_PP_ITERATION_5 76
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 75 && BOOST_PP_ITERATION_START_5 >= 75
-# define BOOST_PP_ITERATION_5 75
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 74 && BOOST_PP_ITERATION_START_5 >= 74
-# define BOOST_PP_ITERATION_5 74
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 73 && BOOST_PP_ITERATION_START_5 >= 73
-# define BOOST_PP_ITERATION_5 73
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 72 && BOOST_PP_ITERATION_START_5 >= 72
-# define BOOST_PP_ITERATION_5 72
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 71 && BOOST_PP_ITERATION_START_5 >= 71
-# define BOOST_PP_ITERATION_5 71
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 70 && BOOST_PP_ITERATION_START_5 >= 70
-# define BOOST_PP_ITERATION_5 70
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 69 && BOOST_PP_ITERATION_START_5 >= 69
-# define BOOST_PP_ITERATION_5 69
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 68 && BOOST_PP_ITERATION_START_5 >= 68
-# define BOOST_PP_ITERATION_5 68
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 67 && BOOST_PP_ITERATION_START_5 >= 67
-# define BOOST_PP_ITERATION_5 67
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 66 && BOOST_PP_ITERATION_START_5 >= 66
-# define BOOST_PP_ITERATION_5 66
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 65 && BOOST_PP_ITERATION_START_5 >= 65
-# define BOOST_PP_ITERATION_5 65
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 64 && BOOST_PP_ITERATION_START_5 >= 64
-# define BOOST_PP_ITERATION_5 64
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 63 && BOOST_PP_ITERATION_START_5 >= 63
-# define BOOST_PP_ITERATION_5 63
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 62 && BOOST_PP_ITERATION_START_5 >= 62
-# define BOOST_PP_ITERATION_5 62
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 61 && BOOST_PP_ITERATION_START_5 >= 61
-# define BOOST_PP_ITERATION_5 61
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 60 && BOOST_PP_ITERATION_START_5 >= 60
-# define BOOST_PP_ITERATION_5 60
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 59 && BOOST_PP_ITERATION_START_5 >= 59
-# define BOOST_PP_ITERATION_5 59
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 58 && BOOST_PP_ITERATION_START_5 >= 58
-# define BOOST_PP_ITERATION_5 58
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 57 && BOOST_PP_ITERATION_START_5 >= 57
-# define BOOST_PP_ITERATION_5 57
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 56 && BOOST_PP_ITERATION_START_5 >= 56
-# define BOOST_PP_ITERATION_5 56
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 55 && BOOST_PP_ITERATION_START_5 >= 55
-# define BOOST_PP_ITERATION_5 55
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 54 && BOOST_PP_ITERATION_START_5 >= 54
-# define BOOST_PP_ITERATION_5 54
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 53 && BOOST_PP_ITERATION_START_5 >= 53
-# define BOOST_PP_ITERATION_5 53
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 52 && BOOST_PP_ITERATION_START_5 >= 52
-# define BOOST_PP_ITERATION_5 52
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 51 && BOOST_PP_ITERATION_START_5 >= 51
-# define BOOST_PP_ITERATION_5 51
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 50 && BOOST_PP_ITERATION_START_5 >= 50
-# define BOOST_PP_ITERATION_5 50
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 49 && BOOST_PP_ITERATION_START_5 >= 49
-# define BOOST_PP_ITERATION_5 49
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 48 && BOOST_PP_ITERATION_START_5 >= 48
-# define BOOST_PP_ITERATION_5 48
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 47 && BOOST_PP_ITERATION_START_5 >= 47
-# define BOOST_PP_ITERATION_5 47
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 46 && BOOST_PP_ITERATION_START_5 >= 46
-# define BOOST_PP_ITERATION_5 46
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 45 && BOOST_PP_ITERATION_START_5 >= 45
-# define BOOST_PP_ITERATION_5 45
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 44 && BOOST_PP_ITERATION_START_5 >= 44
-# define BOOST_PP_ITERATION_5 44
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 43 && BOOST_PP_ITERATION_START_5 >= 43
-# define BOOST_PP_ITERATION_5 43
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 42 && BOOST_PP_ITERATION_START_5 >= 42
-# define BOOST_PP_ITERATION_5 42
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 41 && BOOST_PP_ITERATION_START_5 >= 41
-# define BOOST_PP_ITERATION_5 41
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 40 && BOOST_PP_ITERATION_START_5 >= 40
-# define BOOST_PP_ITERATION_5 40
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 39 && BOOST_PP_ITERATION_START_5 >= 39
-# define BOOST_PP_ITERATION_5 39
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 38 && BOOST_PP_ITERATION_START_5 >= 38
-# define BOOST_PP_ITERATION_5 38
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 37 && BOOST_PP_ITERATION_START_5 >= 37
-# define BOOST_PP_ITERATION_5 37
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 36 && BOOST_PP_ITERATION_START_5 >= 36
-# define BOOST_PP_ITERATION_5 36
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 35 && BOOST_PP_ITERATION_START_5 >= 35
-# define BOOST_PP_ITERATION_5 35
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 34 && BOOST_PP_ITERATION_START_5 >= 34
-# define BOOST_PP_ITERATION_5 34
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 33 && BOOST_PP_ITERATION_START_5 >= 33
-# define BOOST_PP_ITERATION_5 33
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 32 && BOOST_PP_ITERATION_START_5 >= 32
-# define BOOST_PP_ITERATION_5 32
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 31 && BOOST_PP_ITERATION_START_5 >= 31
-# define BOOST_PP_ITERATION_5 31
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 30 && BOOST_PP_ITERATION_START_5 >= 30
-# define BOOST_PP_ITERATION_5 30
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 29 && BOOST_PP_ITERATION_START_5 >= 29
-# define BOOST_PP_ITERATION_5 29
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 28 && BOOST_PP_ITERATION_START_5 >= 28
-# define BOOST_PP_ITERATION_5 28
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 27 && BOOST_PP_ITERATION_START_5 >= 27
-# define BOOST_PP_ITERATION_5 27
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 26 && BOOST_PP_ITERATION_START_5 >= 26
-# define BOOST_PP_ITERATION_5 26
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 25 && BOOST_PP_ITERATION_START_5 >= 25
-# define BOOST_PP_ITERATION_5 25
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 24 && BOOST_PP_ITERATION_START_5 >= 24
-# define BOOST_PP_ITERATION_5 24
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 23 && BOOST_PP_ITERATION_START_5 >= 23
-# define BOOST_PP_ITERATION_5 23
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 22 && BOOST_PP_ITERATION_START_5 >= 22
-# define BOOST_PP_ITERATION_5 22
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 21 && BOOST_PP_ITERATION_START_5 >= 21
-# define BOOST_PP_ITERATION_5 21
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 20 && BOOST_PP_ITERATION_START_5 >= 20
-# define BOOST_PP_ITERATION_5 20
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 19 && BOOST_PP_ITERATION_START_5 >= 19
-# define BOOST_PP_ITERATION_5 19
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 18 && BOOST_PP_ITERATION_START_5 >= 18
-# define BOOST_PP_ITERATION_5 18
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 17 && BOOST_PP_ITERATION_START_5 >= 17
-# define BOOST_PP_ITERATION_5 17
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 16 && BOOST_PP_ITERATION_START_5 >= 16
-# define BOOST_PP_ITERATION_5 16
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 15 && BOOST_PP_ITERATION_START_5 >= 15
-# define BOOST_PP_ITERATION_5 15
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 14 && BOOST_PP_ITERATION_START_5 >= 14
-# define BOOST_PP_ITERATION_5 14
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 13 && BOOST_PP_ITERATION_START_5 >= 13
-# define BOOST_PP_ITERATION_5 13
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 12 && BOOST_PP_ITERATION_START_5 >= 12
-# define BOOST_PP_ITERATION_5 12
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 11 && BOOST_PP_ITERATION_START_5 >= 11
-# define BOOST_PP_ITERATION_5 11
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 10 && BOOST_PP_ITERATION_START_5 >= 10
-# define BOOST_PP_ITERATION_5 10
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 9 && BOOST_PP_ITERATION_START_5 >= 9
-# define BOOST_PP_ITERATION_5 9
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 8 && BOOST_PP_ITERATION_START_5 >= 8
-# define BOOST_PP_ITERATION_5 8
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 7 && BOOST_PP_ITERATION_START_5 >= 7
-# define BOOST_PP_ITERATION_5 7
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 6 && BOOST_PP_ITERATION_START_5 >= 6
-# define BOOST_PP_ITERATION_5 6
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 5 && BOOST_PP_ITERATION_START_5 >= 5
-# define BOOST_PP_ITERATION_5 5
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 4 && BOOST_PP_ITERATION_START_5 >= 4
-# define BOOST_PP_ITERATION_5 4
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 3 && BOOST_PP_ITERATION_START_5 >= 3
-# define BOOST_PP_ITERATION_5 3
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 2 && BOOST_PP_ITERATION_START_5 >= 2
-# define BOOST_PP_ITERATION_5 2
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 1 && BOOST_PP_ITERATION_START_5 >= 1
-# define BOOST_PP_ITERATION_5 1
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
-# if BOOST_PP_ITERATION_FINISH_5 <= 0 && BOOST_PP_ITERATION_START_5 >= 0
-# define BOOST_PP_ITERATION_5 0
-# include BOOST_PP_FILENAME_5
-# undef BOOST_PP_ITERATION_5
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/local.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/local.hpp
deleted file mode 100644
index 2a80c8a..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/local.hpp
+++ /dev/null
@@ -1,812 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if !defined(BOOST_PP_LOCAL_LIMITS)
-# error BOOST_PP_ERROR: local iteration boundaries are not defined
-# elif !defined(BOOST_PP_LOCAL_MACRO)
-# error BOOST_PP_ERROR: local iteration target macro is not defined
-# else
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_LOCAL_S BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_LOCAL_LIMITS)
-# define BOOST_PP_LOCAL_F BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_LOCAL_LIMITS)
-# else
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_LOCAL_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/start.hpp>
-# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_LOCAL_LIMITS)
-# include <cutl/details/boost/preprocessor/iteration/detail/finish.hpp>
-# define BOOST_PP_LOCAL_S BOOST_PP_LOCAL_SE()
-# define BOOST_PP_LOCAL_F BOOST_PP_LOCAL_FE()
-# endif
-# endif
-#
-# if (BOOST_PP_LOCAL_S) > (BOOST_PP_LOCAL_F)
-# include <cutl/details/boost/preprocessor/iteration/detail/rlocal.hpp>
-# else
-# if BOOST_PP_LOCAL_C(0)
- BOOST_PP_LOCAL_MACRO(0)
-# endif
-# if BOOST_PP_LOCAL_C(1)
- BOOST_PP_LOCAL_MACRO(1)
-# endif
-# if BOOST_PP_LOCAL_C(2)
- BOOST_PP_LOCAL_MACRO(2)
-# endif
-# if BOOST_PP_LOCAL_C(3)
- BOOST_PP_LOCAL_MACRO(3)
-# endif
-# if BOOST_PP_LOCAL_C(4)
- BOOST_PP_LOCAL_MACRO(4)
-# endif
-# if BOOST_PP_LOCAL_C(5)
- BOOST_PP_LOCAL_MACRO(5)
-# endif
-# if BOOST_PP_LOCAL_C(6)
- BOOST_PP_LOCAL_MACRO(6)
-# endif
-# if BOOST_PP_LOCAL_C(7)
- BOOST_PP_LOCAL_MACRO(7)
-# endif
-# if BOOST_PP_LOCAL_C(8)
- BOOST_PP_LOCAL_MACRO(8)
-# endif
-# if BOOST_PP_LOCAL_C(9)
- BOOST_PP_LOCAL_MACRO(9)
-# endif
-# if BOOST_PP_LOCAL_C(10)
- BOOST_PP_LOCAL_MACRO(10)
-# endif
-# if BOOST_PP_LOCAL_C(11)
- BOOST_PP_LOCAL_MACRO(11)
-# endif
-# if BOOST_PP_LOCAL_C(12)
- BOOST_PP_LOCAL_MACRO(12)
-# endif
-# if BOOST_PP_LOCAL_C(13)
- BOOST_PP_LOCAL_MACRO(13)
-# endif
-# if BOOST_PP_LOCAL_C(14)
- BOOST_PP_LOCAL_MACRO(14)
-# endif
-# if BOOST_PP_LOCAL_C(15)
- BOOST_PP_LOCAL_MACRO(15)
-# endif
-# if BOOST_PP_LOCAL_C(16)
- BOOST_PP_LOCAL_MACRO(16)
-# endif
-# if BOOST_PP_LOCAL_C(17)
- BOOST_PP_LOCAL_MACRO(17)
-# endif
-# if BOOST_PP_LOCAL_C(18)
- BOOST_PP_LOCAL_MACRO(18)
-# endif
-# if BOOST_PP_LOCAL_C(19)
- BOOST_PP_LOCAL_MACRO(19)
-# endif
-# if BOOST_PP_LOCAL_C(20)
- BOOST_PP_LOCAL_MACRO(20)
-# endif
-# if BOOST_PP_LOCAL_C(21)
- BOOST_PP_LOCAL_MACRO(21)
-# endif
-# if BOOST_PP_LOCAL_C(22)
- BOOST_PP_LOCAL_MACRO(22)
-# endif
-# if BOOST_PP_LOCAL_C(23)
- BOOST_PP_LOCAL_MACRO(23)
-# endif
-# if BOOST_PP_LOCAL_C(24)
- BOOST_PP_LOCAL_MACRO(24)
-# endif
-# if BOOST_PP_LOCAL_C(25)
- BOOST_PP_LOCAL_MACRO(25)
-# endif
-# if BOOST_PP_LOCAL_C(26)
- BOOST_PP_LOCAL_MACRO(26)
-# endif
-# if BOOST_PP_LOCAL_C(27)
- BOOST_PP_LOCAL_MACRO(27)
-# endif
-# if BOOST_PP_LOCAL_C(28)
- BOOST_PP_LOCAL_MACRO(28)
-# endif
-# if BOOST_PP_LOCAL_C(29)
- BOOST_PP_LOCAL_MACRO(29)
-# endif
-# if BOOST_PP_LOCAL_C(30)
- BOOST_PP_LOCAL_MACRO(30)
-# endif
-# if BOOST_PP_LOCAL_C(31)
- BOOST_PP_LOCAL_MACRO(31)
-# endif
-# if BOOST_PP_LOCAL_C(32)
- BOOST_PP_LOCAL_MACRO(32)
-# endif
-# if BOOST_PP_LOCAL_C(33)
- BOOST_PP_LOCAL_MACRO(33)
-# endif
-# if BOOST_PP_LOCAL_C(34)
- BOOST_PP_LOCAL_MACRO(34)
-# endif
-# if BOOST_PP_LOCAL_C(35)
- BOOST_PP_LOCAL_MACRO(35)
-# endif
-# if BOOST_PP_LOCAL_C(36)
- BOOST_PP_LOCAL_MACRO(36)
-# endif
-# if BOOST_PP_LOCAL_C(37)
- BOOST_PP_LOCAL_MACRO(37)
-# endif
-# if BOOST_PP_LOCAL_C(38)
- BOOST_PP_LOCAL_MACRO(38)
-# endif
-# if BOOST_PP_LOCAL_C(39)
- BOOST_PP_LOCAL_MACRO(39)
-# endif
-# if BOOST_PP_LOCAL_C(40)
- BOOST_PP_LOCAL_MACRO(40)
-# endif
-# if BOOST_PP_LOCAL_C(41)
- BOOST_PP_LOCAL_MACRO(41)
-# endif
-# if BOOST_PP_LOCAL_C(42)
- BOOST_PP_LOCAL_MACRO(42)
-# endif
-# if BOOST_PP_LOCAL_C(43)
- BOOST_PP_LOCAL_MACRO(43)
-# endif
-# if BOOST_PP_LOCAL_C(44)
- BOOST_PP_LOCAL_MACRO(44)
-# endif
-# if BOOST_PP_LOCAL_C(45)
- BOOST_PP_LOCAL_MACRO(45)
-# endif
-# if BOOST_PP_LOCAL_C(46)
- BOOST_PP_LOCAL_MACRO(46)
-# endif
-# if BOOST_PP_LOCAL_C(47)
- BOOST_PP_LOCAL_MACRO(47)
-# endif
-# if BOOST_PP_LOCAL_C(48)
- BOOST_PP_LOCAL_MACRO(48)
-# endif
-# if BOOST_PP_LOCAL_C(49)
- BOOST_PP_LOCAL_MACRO(49)
-# endif
-# if BOOST_PP_LOCAL_C(50)
- BOOST_PP_LOCAL_MACRO(50)
-# endif
-# if BOOST_PP_LOCAL_C(51)
- BOOST_PP_LOCAL_MACRO(51)
-# endif
-# if BOOST_PP_LOCAL_C(52)
- BOOST_PP_LOCAL_MACRO(52)
-# endif
-# if BOOST_PP_LOCAL_C(53)
- BOOST_PP_LOCAL_MACRO(53)
-# endif
-# if BOOST_PP_LOCAL_C(54)
- BOOST_PP_LOCAL_MACRO(54)
-# endif
-# if BOOST_PP_LOCAL_C(55)
- BOOST_PP_LOCAL_MACRO(55)
-# endif
-# if BOOST_PP_LOCAL_C(56)
- BOOST_PP_LOCAL_MACRO(56)
-# endif
-# if BOOST_PP_LOCAL_C(57)
- BOOST_PP_LOCAL_MACRO(57)
-# endif
-# if BOOST_PP_LOCAL_C(58)
- BOOST_PP_LOCAL_MACRO(58)
-# endif
-# if BOOST_PP_LOCAL_C(59)
- BOOST_PP_LOCAL_MACRO(59)
-# endif
-# if BOOST_PP_LOCAL_C(60)
- BOOST_PP_LOCAL_MACRO(60)
-# endif
-# if BOOST_PP_LOCAL_C(61)
- BOOST_PP_LOCAL_MACRO(61)
-# endif
-# if BOOST_PP_LOCAL_C(62)
- BOOST_PP_LOCAL_MACRO(62)
-# endif
-# if BOOST_PP_LOCAL_C(63)
- BOOST_PP_LOCAL_MACRO(63)
-# endif
-# if BOOST_PP_LOCAL_C(64)
- BOOST_PP_LOCAL_MACRO(64)
-# endif
-# if BOOST_PP_LOCAL_C(65)
- BOOST_PP_LOCAL_MACRO(65)
-# endif
-# if BOOST_PP_LOCAL_C(66)
- BOOST_PP_LOCAL_MACRO(66)
-# endif
-# if BOOST_PP_LOCAL_C(67)
- BOOST_PP_LOCAL_MACRO(67)
-# endif
-# if BOOST_PP_LOCAL_C(68)
- BOOST_PP_LOCAL_MACRO(68)
-# endif
-# if BOOST_PP_LOCAL_C(69)
- BOOST_PP_LOCAL_MACRO(69)
-# endif
-# if BOOST_PP_LOCAL_C(70)
- BOOST_PP_LOCAL_MACRO(70)
-# endif
-# if BOOST_PP_LOCAL_C(71)
- BOOST_PP_LOCAL_MACRO(71)
-# endif
-# if BOOST_PP_LOCAL_C(72)
- BOOST_PP_LOCAL_MACRO(72)
-# endif
-# if BOOST_PP_LOCAL_C(73)
- BOOST_PP_LOCAL_MACRO(73)
-# endif
-# if BOOST_PP_LOCAL_C(74)
- BOOST_PP_LOCAL_MACRO(74)
-# endif
-# if BOOST_PP_LOCAL_C(75)
- BOOST_PP_LOCAL_MACRO(75)
-# endif
-# if BOOST_PP_LOCAL_C(76)
- BOOST_PP_LOCAL_MACRO(76)
-# endif
-# if BOOST_PP_LOCAL_C(77)
- BOOST_PP_LOCAL_MACRO(77)
-# endif
-# if BOOST_PP_LOCAL_C(78)
- BOOST_PP_LOCAL_MACRO(78)
-# endif
-# if BOOST_PP_LOCAL_C(79)
- BOOST_PP_LOCAL_MACRO(79)
-# endif
-# if BOOST_PP_LOCAL_C(80)
- BOOST_PP_LOCAL_MACRO(80)
-# endif
-# if BOOST_PP_LOCAL_C(81)
- BOOST_PP_LOCAL_MACRO(81)
-# endif
-# if BOOST_PP_LOCAL_C(82)
- BOOST_PP_LOCAL_MACRO(82)
-# endif
-# if BOOST_PP_LOCAL_C(83)
- BOOST_PP_LOCAL_MACRO(83)
-# endif
-# if BOOST_PP_LOCAL_C(84)
- BOOST_PP_LOCAL_MACRO(84)
-# endif
-# if BOOST_PP_LOCAL_C(85)
- BOOST_PP_LOCAL_MACRO(85)
-# endif
-# if BOOST_PP_LOCAL_C(86)
- BOOST_PP_LOCAL_MACRO(86)
-# endif
-# if BOOST_PP_LOCAL_C(87)
- BOOST_PP_LOCAL_MACRO(87)
-# endif
-# if BOOST_PP_LOCAL_C(88)
- BOOST_PP_LOCAL_MACRO(88)
-# endif
-# if BOOST_PP_LOCAL_C(89)
- BOOST_PP_LOCAL_MACRO(89)
-# endif
-# if BOOST_PP_LOCAL_C(90)
- BOOST_PP_LOCAL_MACRO(90)
-# endif
-# if BOOST_PP_LOCAL_C(91)
- BOOST_PP_LOCAL_MACRO(91)
-# endif
-# if BOOST_PP_LOCAL_C(92)
- BOOST_PP_LOCAL_MACRO(92)
-# endif
-# if BOOST_PP_LOCAL_C(93)
- BOOST_PP_LOCAL_MACRO(93)
-# endif
-# if BOOST_PP_LOCAL_C(94)
- BOOST_PP_LOCAL_MACRO(94)
-# endif
-# if BOOST_PP_LOCAL_C(95)
- BOOST_PP_LOCAL_MACRO(95)
-# endif
-# if BOOST_PP_LOCAL_C(96)
- BOOST_PP_LOCAL_MACRO(96)
-# endif
-# if BOOST_PP_LOCAL_C(97)
- BOOST_PP_LOCAL_MACRO(97)
-# endif
-# if BOOST_PP_LOCAL_C(98)
- BOOST_PP_LOCAL_MACRO(98)
-# endif
-# if BOOST_PP_LOCAL_C(99)
- BOOST_PP_LOCAL_MACRO(99)
-# endif
-# if BOOST_PP_LOCAL_C(100)
- BOOST_PP_LOCAL_MACRO(100)
-# endif
-# if BOOST_PP_LOCAL_C(101)
- BOOST_PP_LOCAL_MACRO(101)
-# endif
-# if BOOST_PP_LOCAL_C(102)
- BOOST_PP_LOCAL_MACRO(102)
-# endif
-# if BOOST_PP_LOCAL_C(103)
- BOOST_PP_LOCAL_MACRO(103)
-# endif
-# if BOOST_PP_LOCAL_C(104)
- BOOST_PP_LOCAL_MACRO(104)
-# endif
-# if BOOST_PP_LOCAL_C(105)
- BOOST_PP_LOCAL_MACRO(105)
-# endif
-# if BOOST_PP_LOCAL_C(106)
- BOOST_PP_LOCAL_MACRO(106)
-# endif
-# if BOOST_PP_LOCAL_C(107)
- BOOST_PP_LOCAL_MACRO(107)
-# endif
-# if BOOST_PP_LOCAL_C(108)
- BOOST_PP_LOCAL_MACRO(108)
-# endif
-# if BOOST_PP_LOCAL_C(109)
- BOOST_PP_LOCAL_MACRO(109)
-# endif
-# if BOOST_PP_LOCAL_C(110)
- BOOST_PP_LOCAL_MACRO(110)
-# endif
-# if BOOST_PP_LOCAL_C(111)
- BOOST_PP_LOCAL_MACRO(111)
-# endif
-# if BOOST_PP_LOCAL_C(112)
- BOOST_PP_LOCAL_MACRO(112)
-# endif
-# if BOOST_PP_LOCAL_C(113)
- BOOST_PP_LOCAL_MACRO(113)
-# endif
-# if BOOST_PP_LOCAL_C(114)
- BOOST_PP_LOCAL_MACRO(114)
-# endif
-# if BOOST_PP_LOCAL_C(115)
- BOOST_PP_LOCAL_MACRO(115)
-# endif
-# if BOOST_PP_LOCAL_C(116)
- BOOST_PP_LOCAL_MACRO(116)
-# endif
-# if BOOST_PP_LOCAL_C(117)
- BOOST_PP_LOCAL_MACRO(117)
-# endif
-# if BOOST_PP_LOCAL_C(118)
- BOOST_PP_LOCAL_MACRO(118)
-# endif
-# if BOOST_PP_LOCAL_C(119)
- BOOST_PP_LOCAL_MACRO(119)
-# endif
-# if BOOST_PP_LOCAL_C(120)
- BOOST_PP_LOCAL_MACRO(120)
-# endif
-# if BOOST_PP_LOCAL_C(121)
- BOOST_PP_LOCAL_MACRO(121)
-# endif
-# if BOOST_PP_LOCAL_C(122)
- BOOST_PP_LOCAL_MACRO(122)
-# endif
-# if BOOST_PP_LOCAL_C(123)
- BOOST_PP_LOCAL_MACRO(123)
-# endif
-# if BOOST_PP_LOCAL_C(124)
- BOOST_PP_LOCAL_MACRO(124)
-# endif
-# if BOOST_PP_LOCAL_C(125)
- BOOST_PP_LOCAL_MACRO(125)
-# endif
-# if BOOST_PP_LOCAL_C(126)
- BOOST_PP_LOCAL_MACRO(126)
-# endif
-# if BOOST_PP_LOCAL_C(127)
- BOOST_PP_LOCAL_MACRO(127)
-# endif
-# if BOOST_PP_LOCAL_C(128)
- BOOST_PP_LOCAL_MACRO(128)
-# endif
-# if BOOST_PP_LOCAL_C(129)
- BOOST_PP_LOCAL_MACRO(129)
-# endif
-# if BOOST_PP_LOCAL_C(130)
- BOOST_PP_LOCAL_MACRO(130)
-# endif
-# if BOOST_PP_LOCAL_C(131)
- BOOST_PP_LOCAL_MACRO(131)
-# endif
-# if BOOST_PP_LOCAL_C(132)
- BOOST_PP_LOCAL_MACRO(132)
-# endif
-# if BOOST_PP_LOCAL_C(133)
- BOOST_PP_LOCAL_MACRO(133)
-# endif
-# if BOOST_PP_LOCAL_C(134)
- BOOST_PP_LOCAL_MACRO(134)
-# endif
-# if BOOST_PP_LOCAL_C(135)
- BOOST_PP_LOCAL_MACRO(135)
-# endif
-# if BOOST_PP_LOCAL_C(136)
- BOOST_PP_LOCAL_MACRO(136)
-# endif
-# if BOOST_PP_LOCAL_C(137)
- BOOST_PP_LOCAL_MACRO(137)
-# endif
-# if BOOST_PP_LOCAL_C(138)
- BOOST_PP_LOCAL_MACRO(138)
-# endif
-# if BOOST_PP_LOCAL_C(139)
- BOOST_PP_LOCAL_MACRO(139)
-# endif
-# if BOOST_PP_LOCAL_C(140)
- BOOST_PP_LOCAL_MACRO(140)
-# endif
-# if BOOST_PP_LOCAL_C(141)
- BOOST_PP_LOCAL_MACRO(141)
-# endif
-# if BOOST_PP_LOCAL_C(142)
- BOOST_PP_LOCAL_MACRO(142)
-# endif
-# if BOOST_PP_LOCAL_C(143)
- BOOST_PP_LOCAL_MACRO(143)
-# endif
-# if BOOST_PP_LOCAL_C(144)
- BOOST_PP_LOCAL_MACRO(144)
-# endif
-# if BOOST_PP_LOCAL_C(145)
- BOOST_PP_LOCAL_MACRO(145)
-# endif
-# if BOOST_PP_LOCAL_C(146)
- BOOST_PP_LOCAL_MACRO(146)
-# endif
-# if BOOST_PP_LOCAL_C(147)
- BOOST_PP_LOCAL_MACRO(147)
-# endif
-# if BOOST_PP_LOCAL_C(148)
- BOOST_PP_LOCAL_MACRO(148)
-# endif
-# if BOOST_PP_LOCAL_C(149)
- BOOST_PP_LOCAL_MACRO(149)
-# endif
-# if BOOST_PP_LOCAL_C(150)
- BOOST_PP_LOCAL_MACRO(150)
-# endif
-# if BOOST_PP_LOCAL_C(151)
- BOOST_PP_LOCAL_MACRO(151)
-# endif
-# if BOOST_PP_LOCAL_C(152)
- BOOST_PP_LOCAL_MACRO(152)
-# endif
-# if BOOST_PP_LOCAL_C(153)
- BOOST_PP_LOCAL_MACRO(153)
-# endif
-# if BOOST_PP_LOCAL_C(154)
- BOOST_PP_LOCAL_MACRO(154)
-# endif
-# if BOOST_PP_LOCAL_C(155)
- BOOST_PP_LOCAL_MACRO(155)
-# endif
-# if BOOST_PP_LOCAL_C(156)
- BOOST_PP_LOCAL_MACRO(156)
-# endif
-# if BOOST_PP_LOCAL_C(157)
- BOOST_PP_LOCAL_MACRO(157)
-# endif
-# if BOOST_PP_LOCAL_C(158)
- BOOST_PP_LOCAL_MACRO(158)
-# endif
-# if BOOST_PP_LOCAL_C(159)
- BOOST_PP_LOCAL_MACRO(159)
-# endif
-# if BOOST_PP_LOCAL_C(160)
- BOOST_PP_LOCAL_MACRO(160)
-# endif
-# if BOOST_PP_LOCAL_C(161)
- BOOST_PP_LOCAL_MACRO(161)
-# endif
-# if BOOST_PP_LOCAL_C(162)
- BOOST_PP_LOCAL_MACRO(162)
-# endif
-# if BOOST_PP_LOCAL_C(163)
- BOOST_PP_LOCAL_MACRO(163)
-# endif
-# if BOOST_PP_LOCAL_C(164)
- BOOST_PP_LOCAL_MACRO(164)
-# endif
-# if BOOST_PP_LOCAL_C(165)
- BOOST_PP_LOCAL_MACRO(165)
-# endif
-# if BOOST_PP_LOCAL_C(166)
- BOOST_PP_LOCAL_MACRO(166)
-# endif
-# if BOOST_PP_LOCAL_C(167)
- BOOST_PP_LOCAL_MACRO(167)
-# endif
-# if BOOST_PP_LOCAL_C(168)
- BOOST_PP_LOCAL_MACRO(168)
-# endif
-# if BOOST_PP_LOCAL_C(169)
- BOOST_PP_LOCAL_MACRO(169)
-# endif
-# if BOOST_PP_LOCAL_C(170)
- BOOST_PP_LOCAL_MACRO(170)
-# endif
-# if BOOST_PP_LOCAL_C(171)
- BOOST_PP_LOCAL_MACRO(171)
-# endif
-# if BOOST_PP_LOCAL_C(172)
- BOOST_PP_LOCAL_MACRO(172)
-# endif
-# if BOOST_PP_LOCAL_C(173)
- BOOST_PP_LOCAL_MACRO(173)
-# endif
-# if BOOST_PP_LOCAL_C(174)
- BOOST_PP_LOCAL_MACRO(174)
-# endif
-# if BOOST_PP_LOCAL_C(175)
- BOOST_PP_LOCAL_MACRO(175)
-# endif
-# if BOOST_PP_LOCAL_C(176)
- BOOST_PP_LOCAL_MACRO(176)
-# endif
-# if BOOST_PP_LOCAL_C(177)
- BOOST_PP_LOCAL_MACRO(177)
-# endif
-# if BOOST_PP_LOCAL_C(178)
- BOOST_PP_LOCAL_MACRO(178)
-# endif
-# if BOOST_PP_LOCAL_C(179)
- BOOST_PP_LOCAL_MACRO(179)
-# endif
-# if BOOST_PP_LOCAL_C(180)
- BOOST_PP_LOCAL_MACRO(180)
-# endif
-# if BOOST_PP_LOCAL_C(181)
- BOOST_PP_LOCAL_MACRO(181)
-# endif
-# if BOOST_PP_LOCAL_C(182)
- BOOST_PP_LOCAL_MACRO(182)
-# endif
-# if BOOST_PP_LOCAL_C(183)
- BOOST_PP_LOCAL_MACRO(183)
-# endif
-# if BOOST_PP_LOCAL_C(184)
- BOOST_PP_LOCAL_MACRO(184)
-# endif
-# if BOOST_PP_LOCAL_C(185)
- BOOST_PP_LOCAL_MACRO(185)
-# endif
-# if BOOST_PP_LOCAL_C(186)
- BOOST_PP_LOCAL_MACRO(186)
-# endif
-# if BOOST_PP_LOCAL_C(187)
- BOOST_PP_LOCAL_MACRO(187)
-# endif
-# if BOOST_PP_LOCAL_C(188)
- BOOST_PP_LOCAL_MACRO(188)
-# endif
-# if BOOST_PP_LOCAL_C(189)
- BOOST_PP_LOCAL_MACRO(189)
-# endif
-# if BOOST_PP_LOCAL_C(190)
- BOOST_PP_LOCAL_MACRO(190)
-# endif
-# if BOOST_PP_LOCAL_C(191)
- BOOST_PP_LOCAL_MACRO(191)
-# endif
-# if BOOST_PP_LOCAL_C(192)
- BOOST_PP_LOCAL_MACRO(192)
-# endif
-# if BOOST_PP_LOCAL_C(193)
- BOOST_PP_LOCAL_MACRO(193)
-# endif
-# if BOOST_PP_LOCAL_C(194)
- BOOST_PP_LOCAL_MACRO(194)
-# endif
-# if BOOST_PP_LOCAL_C(195)
- BOOST_PP_LOCAL_MACRO(195)
-# endif
-# if BOOST_PP_LOCAL_C(196)
- BOOST_PP_LOCAL_MACRO(196)
-# endif
-# if BOOST_PP_LOCAL_C(197)
- BOOST_PP_LOCAL_MACRO(197)
-# endif
-# if BOOST_PP_LOCAL_C(198)
- BOOST_PP_LOCAL_MACRO(198)
-# endif
-# if BOOST_PP_LOCAL_C(199)
- BOOST_PP_LOCAL_MACRO(199)
-# endif
-# if BOOST_PP_LOCAL_C(200)
- BOOST_PP_LOCAL_MACRO(200)
-# endif
-# if BOOST_PP_LOCAL_C(201)
- BOOST_PP_LOCAL_MACRO(201)
-# endif
-# if BOOST_PP_LOCAL_C(202)
- BOOST_PP_LOCAL_MACRO(202)
-# endif
-# if BOOST_PP_LOCAL_C(203)
- BOOST_PP_LOCAL_MACRO(203)
-# endif
-# if BOOST_PP_LOCAL_C(204)
- BOOST_PP_LOCAL_MACRO(204)
-# endif
-# if BOOST_PP_LOCAL_C(205)
- BOOST_PP_LOCAL_MACRO(205)
-# endif
-# if BOOST_PP_LOCAL_C(206)
- BOOST_PP_LOCAL_MACRO(206)
-# endif
-# if BOOST_PP_LOCAL_C(207)
- BOOST_PP_LOCAL_MACRO(207)
-# endif
-# if BOOST_PP_LOCAL_C(208)
- BOOST_PP_LOCAL_MACRO(208)
-# endif
-# if BOOST_PP_LOCAL_C(209)
- BOOST_PP_LOCAL_MACRO(209)
-# endif
-# if BOOST_PP_LOCAL_C(210)
- BOOST_PP_LOCAL_MACRO(210)
-# endif
-# if BOOST_PP_LOCAL_C(211)
- BOOST_PP_LOCAL_MACRO(211)
-# endif
-# if BOOST_PP_LOCAL_C(212)
- BOOST_PP_LOCAL_MACRO(212)
-# endif
-# if BOOST_PP_LOCAL_C(213)
- BOOST_PP_LOCAL_MACRO(213)
-# endif
-# if BOOST_PP_LOCAL_C(214)
- BOOST_PP_LOCAL_MACRO(214)
-# endif
-# if BOOST_PP_LOCAL_C(215)
- BOOST_PP_LOCAL_MACRO(215)
-# endif
-# if BOOST_PP_LOCAL_C(216)
- BOOST_PP_LOCAL_MACRO(216)
-# endif
-# if BOOST_PP_LOCAL_C(217)
- BOOST_PP_LOCAL_MACRO(217)
-# endif
-# if BOOST_PP_LOCAL_C(218)
- BOOST_PP_LOCAL_MACRO(218)
-# endif
-# if BOOST_PP_LOCAL_C(219)
- BOOST_PP_LOCAL_MACRO(219)
-# endif
-# if BOOST_PP_LOCAL_C(220)
- BOOST_PP_LOCAL_MACRO(220)
-# endif
-# if BOOST_PP_LOCAL_C(221)
- BOOST_PP_LOCAL_MACRO(221)
-# endif
-# if BOOST_PP_LOCAL_C(222)
- BOOST_PP_LOCAL_MACRO(222)
-# endif
-# if BOOST_PP_LOCAL_C(223)
- BOOST_PP_LOCAL_MACRO(223)
-# endif
-# if BOOST_PP_LOCAL_C(224)
- BOOST_PP_LOCAL_MACRO(224)
-# endif
-# if BOOST_PP_LOCAL_C(225)
- BOOST_PP_LOCAL_MACRO(225)
-# endif
-# if BOOST_PP_LOCAL_C(226)
- BOOST_PP_LOCAL_MACRO(226)
-# endif
-# if BOOST_PP_LOCAL_C(227)
- BOOST_PP_LOCAL_MACRO(227)
-# endif
-# if BOOST_PP_LOCAL_C(228)
- BOOST_PP_LOCAL_MACRO(228)
-# endif
-# if BOOST_PP_LOCAL_C(229)
- BOOST_PP_LOCAL_MACRO(229)
-# endif
-# if BOOST_PP_LOCAL_C(230)
- BOOST_PP_LOCAL_MACRO(230)
-# endif
-# if BOOST_PP_LOCAL_C(231)
- BOOST_PP_LOCAL_MACRO(231)
-# endif
-# if BOOST_PP_LOCAL_C(232)
- BOOST_PP_LOCAL_MACRO(232)
-# endif
-# if BOOST_PP_LOCAL_C(233)
- BOOST_PP_LOCAL_MACRO(233)
-# endif
-# if BOOST_PP_LOCAL_C(234)
- BOOST_PP_LOCAL_MACRO(234)
-# endif
-# if BOOST_PP_LOCAL_C(235)
- BOOST_PP_LOCAL_MACRO(235)
-# endif
-# if BOOST_PP_LOCAL_C(236)
- BOOST_PP_LOCAL_MACRO(236)
-# endif
-
-# if BOOST_PP_LOCAL_C(237)
- BOOST_PP_LOCAL_MACRO(237)
-# endif
-# if BOOST_PP_LOCAL_C(238)
- BOOST_PP_LOCAL_MACRO(238)
-# endif
-# if BOOST_PP_LOCAL_C(239)
- BOOST_PP_LOCAL_MACRO(239)
-# endif
-# if BOOST_PP_LOCAL_C(240)
- BOOST_PP_LOCAL_MACRO(240)
-# endif
-# if BOOST_PP_LOCAL_C(241)
- BOOST_PP_LOCAL_MACRO(241)
-# endif
-# if BOOST_PP_LOCAL_C(242)
- BOOST_PP_LOCAL_MACRO(242)
-# endif
-# if BOOST_PP_LOCAL_C(243)
- BOOST_PP_LOCAL_MACRO(243)
-# endif
-# if BOOST_PP_LOCAL_C(244)
- BOOST_PP_LOCAL_MACRO(244)
-# endif
-# if BOOST_PP_LOCAL_C(245)
- BOOST_PP_LOCAL_MACRO(245)
-# endif
-# if BOOST_PP_LOCAL_C(246)
- BOOST_PP_LOCAL_MACRO(246)
-# endif
-# if BOOST_PP_LOCAL_C(247)
- BOOST_PP_LOCAL_MACRO(247)
-# endif
-# if BOOST_PP_LOCAL_C(248)
- BOOST_PP_LOCAL_MACRO(248)
-# endif
-# if BOOST_PP_LOCAL_C(249)
- BOOST_PP_LOCAL_MACRO(249)
-# endif
-# if BOOST_PP_LOCAL_C(250)
- BOOST_PP_LOCAL_MACRO(250)
-# endif
-# if BOOST_PP_LOCAL_C(251)
- BOOST_PP_LOCAL_MACRO(251)
-# endif
-# if BOOST_PP_LOCAL_C(252)
- BOOST_PP_LOCAL_MACRO(252)
-# endif
-# if BOOST_PP_LOCAL_C(253)
- BOOST_PP_LOCAL_MACRO(253)
-# endif
-# if BOOST_PP_LOCAL_C(254)
- BOOST_PP_LOCAL_MACRO(254)
-# endif
-# if BOOST_PP_LOCAL_C(255)
- BOOST_PP_LOCAL_MACRO(255)
-# endif
-# if BOOST_PP_LOCAL_C(256)
- BOOST_PP_LOCAL_MACRO(256)
-# endif
-# endif
-#
-# undef BOOST_PP_LOCAL_LIMITS
-#
-# undef BOOST_PP_LOCAL_S
-# undef BOOST_PP_LOCAL_F
-#
-# undef BOOST_PP_LOCAL_MACRO
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/rlocal.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/rlocal.hpp
deleted file mode 100644
index 413afa0..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/rlocal.hpp
+++ /dev/null
@@ -1,782 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if BOOST_PP_LOCAL_R(256)
- BOOST_PP_LOCAL_MACRO(256)
-# endif
-# if BOOST_PP_LOCAL_R(255)
- BOOST_PP_LOCAL_MACRO(255)
-# endif
-# if BOOST_PP_LOCAL_R(254)
- BOOST_PP_LOCAL_MACRO(254)
-# endif
-# if BOOST_PP_LOCAL_R(253)
- BOOST_PP_LOCAL_MACRO(253)
-# endif
-# if BOOST_PP_LOCAL_R(252)
- BOOST_PP_LOCAL_MACRO(252)
-# endif
-# if BOOST_PP_LOCAL_R(251)
- BOOST_PP_LOCAL_MACRO(251)
-# endif
-# if BOOST_PP_LOCAL_R(250)
- BOOST_PP_LOCAL_MACRO(250)
-# endif
-# if BOOST_PP_LOCAL_R(249)
- BOOST_PP_LOCAL_MACRO(249)
-# endif
-# if BOOST_PP_LOCAL_R(248)
- BOOST_PP_LOCAL_MACRO(248)
-# endif
-# if BOOST_PP_LOCAL_R(247)
- BOOST_PP_LOCAL_MACRO(247)
-# endif
-# if BOOST_PP_LOCAL_R(246)
- BOOST_PP_LOCAL_MACRO(246)
-# endif
-# if BOOST_PP_LOCAL_R(245)
- BOOST_PP_LOCAL_MACRO(245)
-# endif
-# if BOOST_PP_LOCAL_R(244)
- BOOST_PP_LOCAL_MACRO(244)
-# endif
-# if BOOST_PP_LOCAL_R(243)
- BOOST_PP_LOCAL_MACRO(243)
-# endif
-# if BOOST_PP_LOCAL_R(242)
- BOOST_PP_LOCAL_MACRO(242)
-# endif
-# if BOOST_PP_LOCAL_R(241)
- BOOST_PP_LOCAL_MACRO(241)
-# endif
-# if BOOST_PP_LOCAL_R(240)
- BOOST_PP_LOCAL_MACRO(240)
-# endif
-# if BOOST_PP_LOCAL_R(239)
- BOOST_PP_LOCAL_MACRO(239)
-# endif
-# if BOOST_PP_LOCAL_R(238)
- BOOST_PP_LOCAL_MACRO(238)
-# endif
-# if BOOST_PP_LOCAL_R(237)
- BOOST_PP_LOCAL_MACRO(237)
-# endif
-# if BOOST_PP_LOCAL_R(236)
- BOOST_PP_LOCAL_MACRO(236)
-# endif
-# if BOOST_PP_LOCAL_R(235)
- BOOST_PP_LOCAL_MACRO(235)
-# endif
-# if BOOST_PP_LOCAL_R(234)
- BOOST_PP_LOCAL_MACRO(234)
-# endif
-# if BOOST_PP_LOCAL_R(233)
- BOOST_PP_LOCAL_MACRO(233)
-# endif
-# if BOOST_PP_LOCAL_R(232)
- BOOST_PP_LOCAL_MACRO(232)
-# endif
-# if BOOST_PP_LOCAL_R(231)
- BOOST_PP_LOCAL_MACRO(231)
-# endif
-# if BOOST_PP_LOCAL_R(230)
- BOOST_PP_LOCAL_MACRO(230)
-# endif
-# if BOOST_PP_LOCAL_R(229)
- BOOST_PP_LOCAL_MACRO(229)
-# endif
-# if BOOST_PP_LOCAL_R(228)
- BOOST_PP_LOCAL_MACRO(228)
-# endif
-# if BOOST_PP_LOCAL_R(227)
- BOOST_PP_LOCAL_MACRO(227)
-# endif
-# if BOOST_PP_LOCAL_R(226)
- BOOST_PP_LOCAL_MACRO(226)
-# endif
-# if BOOST_PP_LOCAL_R(225)
- BOOST_PP_LOCAL_MACRO(225)
-# endif
-# if BOOST_PP_LOCAL_R(224)
- BOOST_PP_LOCAL_MACRO(224)
-# endif
-# if BOOST_PP_LOCAL_R(223)
- BOOST_PP_LOCAL_MACRO(223)
-# endif
-# if BOOST_PP_LOCAL_R(222)
- BOOST_PP_LOCAL_MACRO(222)
-# endif
-# if BOOST_PP_LOCAL_R(221)
- BOOST_PP_LOCAL_MACRO(221)
-# endif
-# if BOOST_PP_LOCAL_R(220)
- BOOST_PP_LOCAL_MACRO(220)
-# endif
-# if BOOST_PP_LOCAL_R(219)
- BOOST_PP_LOCAL_MACRO(219)
-# endif
-# if BOOST_PP_LOCAL_R(218)
- BOOST_PP_LOCAL_MACRO(218)
-# endif
-# if BOOST_PP_LOCAL_R(217)
- BOOST_PP_LOCAL_MACRO(217)
-# endif
-# if BOOST_PP_LOCAL_R(216)
- BOOST_PP_LOCAL_MACRO(216)
-# endif
-# if BOOST_PP_LOCAL_R(215)
- BOOST_PP_LOCAL_MACRO(215)
-# endif
-# if BOOST_PP_LOCAL_R(214)
- BOOST_PP_LOCAL_MACRO(214)
-# endif
-# if BOOST_PP_LOCAL_R(213)
- BOOST_PP_LOCAL_MACRO(213)
-# endif
-# if BOOST_PP_LOCAL_R(212)
- BOOST_PP_LOCAL_MACRO(212)
-# endif
-# if BOOST_PP_LOCAL_R(211)
- BOOST_PP_LOCAL_MACRO(211)
-# endif
-# if BOOST_PP_LOCAL_R(210)
- BOOST_PP_LOCAL_MACRO(210)
-# endif
-# if BOOST_PP_LOCAL_R(209)
- BOOST_PP_LOCAL_MACRO(209)
-# endif
-# if BOOST_PP_LOCAL_R(208)
- BOOST_PP_LOCAL_MACRO(208)
-# endif
-# if BOOST_PP_LOCAL_R(207)
- BOOST_PP_LOCAL_MACRO(207)
-# endif
-# if BOOST_PP_LOCAL_R(206)
- BOOST_PP_LOCAL_MACRO(206)
-# endif
-# if BOOST_PP_LOCAL_R(205)
- BOOST_PP_LOCAL_MACRO(205)
-# endif
-# if BOOST_PP_LOCAL_R(204)
- BOOST_PP_LOCAL_MACRO(204)
-# endif
-# if BOOST_PP_LOCAL_R(203)
- BOOST_PP_LOCAL_MACRO(203)
-# endif
-# if BOOST_PP_LOCAL_R(202)
- BOOST_PP_LOCAL_MACRO(202)
-# endif
-# if BOOST_PP_LOCAL_R(201)
- BOOST_PP_LOCAL_MACRO(201)
-# endif
-# if BOOST_PP_LOCAL_R(200)
- BOOST_PP_LOCAL_MACRO(200)
-# endif
-# if BOOST_PP_LOCAL_R(199)
- BOOST_PP_LOCAL_MACRO(199)
-# endif
-# if BOOST_PP_LOCAL_R(198)
- BOOST_PP_LOCAL_MACRO(198)
-# endif
-# if BOOST_PP_LOCAL_R(197)
- BOOST_PP_LOCAL_MACRO(197)
-# endif
-# if BOOST_PP_LOCAL_R(196)
- BOOST_PP_LOCAL_MACRO(196)
-# endif
-# if BOOST_PP_LOCAL_R(195)
- BOOST_PP_LOCAL_MACRO(195)
-# endif
-# if BOOST_PP_LOCAL_R(194)
- BOOST_PP_LOCAL_MACRO(194)
-# endif
-# if BOOST_PP_LOCAL_R(193)
- BOOST_PP_LOCAL_MACRO(193)
-# endif
-# if BOOST_PP_LOCAL_R(192)
- BOOST_PP_LOCAL_MACRO(192)
-# endif
-# if BOOST_PP_LOCAL_R(191)
- BOOST_PP_LOCAL_MACRO(191)
-# endif
-# if BOOST_PP_LOCAL_R(190)
- BOOST_PP_LOCAL_MACRO(190)
-# endif
-# if BOOST_PP_LOCAL_R(189)
- BOOST_PP_LOCAL_MACRO(189)
-# endif
-# if BOOST_PP_LOCAL_R(188)
- BOOST_PP_LOCAL_MACRO(188)
-# endif
-# if BOOST_PP_LOCAL_R(187)
- BOOST_PP_LOCAL_MACRO(187)
-# endif
-# if BOOST_PP_LOCAL_R(186)
- BOOST_PP_LOCAL_MACRO(186)
-# endif
-# if BOOST_PP_LOCAL_R(185)
- BOOST_PP_LOCAL_MACRO(185)
-# endif
-# if BOOST_PP_LOCAL_R(184)
- BOOST_PP_LOCAL_MACRO(184)
-# endif
-# if BOOST_PP_LOCAL_R(183)
- BOOST_PP_LOCAL_MACRO(183)
-# endif
-# if BOOST_PP_LOCAL_R(182)
- BOOST_PP_LOCAL_MACRO(182)
-# endif
-# if BOOST_PP_LOCAL_R(181)
- BOOST_PP_LOCAL_MACRO(181)
-# endif
-# if BOOST_PP_LOCAL_R(180)
- BOOST_PP_LOCAL_MACRO(180)
-# endif
-# if BOOST_PP_LOCAL_R(179)
- BOOST_PP_LOCAL_MACRO(179)
-# endif
-# if BOOST_PP_LOCAL_R(178)
- BOOST_PP_LOCAL_MACRO(178)
-# endif
-# if BOOST_PP_LOCAL_R(177)
- BOOST_PP_LOCAL_MACRO(177)
-# endif
-# if BOOST_PP_LOCAL_R(176)
- BOOST_PP_LOCAL_MACRO(176)
-# endif
-# if BOOST_PP_LOCAL_R(175)
- BOOST_PP_LOCAL_MACRO(175)
-# endif
-# if BOOST_PP_LOCAL_R(174)
- BOOST_PP_LOCAL_MACRO(174)
-# endif
-# if BOOST_PP_LOCAL_R(173)
- BOOST_PP_LOCAL_MACRO(173)
-# endif
-# if BOOST_PP_LOCAL_R(172)
- BOOST_PP_LOCAL_MACRO(172)
-# endif
-# if BOOST_PP_LOCAL_R(171)
- BOOST_PP_LOCAL_MACRO(171)
-# endif
-# if BOOST_PP_LOCAL_R(170)
- BOOST_PP_LOCAL_MACRO(170)
-# endif
-# if BOOST_PP_LOCAL_R(169)
- BOOST_PP_LOCAL_MACRO(169)
-# endif
-# if BOOST_PP_LOCAL_R(168)
- BOOST_PP_LOCAL_MACRO(168)
-# endif
-# if BOOST_PP_LOCAL_R(167)
- BOOST_PP_LOCAL_MACRO(167)
-# endif
-# if BOOST_PP_LOCAL_R(166)
- BOOST_PP_LOCAL_MACRO(166)
-# endif
-# if BOOST_PP_LOCAL_R(165)
- BOOST_PP_LOCAL_MACRO(165)
-# endif
-# if BOOST_PP_LOCAL_R(164)
- BOOST_PP_LOCAL_MACRO(164)
-# endif
-# if BOOST_PP_LOCAL_R(163)
- BOOST_PP_LOCAL_MACRO(163)
-# endif
-# if BOOST_PP_LOCAL_R(162)
- BOOST_PP_LOCAL_MACRO(162)
-# endif
-# if BOOST_PP_LOCAL_R(161)
- BOOST_PP_LOCAL_MACRO(161)
-# endif
-# if BOOST_PP_LOCAL_R(160)
- BOOST_PP_LOCAL_MACRO(160)
-# endif
-# if BOOST_PP_LOCAL_R(159)
- BOOST_PP_LOCAL_MACRO(159)
-# endif
-# if BOOST_PP_LOCAL_R(158)
- BOOST_PP_LOCAL_MACRO(158)
-# endif
-# if BOOST_PP_LOCAL_R(157)
- BOOST_PP_LOCAL_MACRO(157)
-# endif
-# if BOOST_PP_LOCAL_R(156)
- BOOST_PP_LOCAL_MACRO(156)
-# endif
-# if BOOST_PP_LOCAL_R(155)
- BOOST_PP_LOCAL_MACRO(155)
-# endif
-# if BOOST_PP_LOCAL_R(154)
- BOOST_PP_LOCAL_MACRO(154)
-# endif
-# if BOOST_PP_LOCAL_R(153)
- BOOST_PP_LOCAL_MACRO(153)
-# endif
-# if BOOST_PP_LOCAL_R(152)
- BOOST_PP_LOCAL_MACRO(152)
-# endif
-# if BOOST_PP_LOCAL_R(151)
- BOOST_PP_LOCAL_MACRO(151)
-# endif
-# if BOOST_PP_LOCAL_R(150)
- BOOST_PP_LOCAL_MACRO(150)
-# endif
-# if BOOST_PP_LOCAL_R(149)
- BOOST_PP_LOCAL_MACRO(149)
-# endif
-# if BOOST_PP_LOCAL_R(148)
- BOOST_PP_LOCAL_MACRO(148)
-# endif
-# if BOOST_PP_LOCAL_R(147)
- BOOST_PP_LOCAL_MACRO(147)
-# endif
-# if BOOST_PP_LOCAL_R(146)
- BOOST_PP_LOCAL_MACRO(146)
-# endif
-# if BOOST_PP_LOCAL_R(145)
- BOOST_PP_LOCAL_MACRO(145)
-# endif
-# if BOOST_PP_LOCAL_R(144)
- BOOST_PP_LOCAL_MACRO(144)
-# endif
-# if BOOST_PP_LOCAL_R(143)
- BOOST_PP_LOCAL_MACRO(143)
-# endif
-# if BOOST_PP_LOCAL_R(142)
- BOOST_PP_LOCAL_MACRO(142)
-# endif
-# if BOOST_PP_LOCAL_R(141)
- BOOST_PP_LOCAL_MACRO(141)
-# endif
-# if BOOST_PP_LOCAL_R(140)
- BOOST_PP_LOCAL_MACRO(140)
-# endif
-# if BOOST_PP_LOCAL_R(139)
- BOOST_PP_LOCAL_MACRO(139)
-# endif
-# if BOOST_PP_LOCAL_R(138)
- BOOST_PP_LOCAL_MACRO(138)
-# endif
-# if BOOST_PP_LOCAL_R(137)
- BOOST_PP_LOCAL_MACRO(137)
-# endif
-# if BOOST_PP_LOCAL_R(136)
- BOOST_PP_LOCAL_MACRO(136)
-# endif
-# if BOOST_PP_LOCAL_R(135)
- BOOST_PP_LOCAL_MACRO(135)
-# endif
-# if BOOST_PP_LOCAL_R(134)
- BOOST_PP_LOCAL_MACRO(134)
-# endif
-# if BOOST_PP_LOCAL_R(133)
- BOOST_PP_LOCAL_MACRO(133)
-# endif
-# if BOOST_PP_LOCAL_R(132)
- BOOST_PP_LOCAL_MACRO(132)
-# endif
-# if BOOST_PP_LOCAL_R(131)
- BOOST_PP_LOCAL_MACRO(131)
-# endif
-# if BOOST_PP_LOCAL_R(130)
- BOOST_PP_LOCAL_MACRO(130)
-# endif
-# if BOOST_PP_LOCAL_R(129)
- BOOST_PP_LOCAL_MACRO(129)
-# endif
-# if BOOST_PP_LOCAL_R(128)
- BOOST_PP_LOCAL_MACRO(128)
-# endif
-# if BOOST_PP_LOCAL_R(127)
- BOOST_PP_LOCAL_MACRO(127)
-# endif
-# if BOOST_PP_LOCAL_R(126)
- BOOST_PP_LOCAL_MACRO(126)
-# endif
-# if BOOST_PP_LOCAL_R(125)
- BOOST_PP_LOCAL_MACRO(125)
-# endif
-# if BOOST_PP_LOCAL_R(124)
- BOOST_PP_LOCAL_MACRO(124)
-# endif
-# if BOOST_PP_LOCAL_R(123)
- BOOST_PP_LOCAL_MACRO(123)
-# endif
-# if BOOST_PP_LOCAL_R(122)
- BOOST_PP_LOCAL_MACRO(122)
-# endif
-# if BOOST_PP_LOCAL_R(121)
- BOOST_PP_LOCAL_MACRO(121)
-# endif
-# if BOOST_PP_LOCAL_R(120)
- BOOST_PP_LOCAL_MACRO(120)
-# endif
-# if BOOST_PP_LOCAL_R(119)
- BOOST_PP_LOCAL_MACRO(119)
-# endif
-# if BOOST_PP_LOCAL_R(118)
- BOOST_PP_LOCAL_MACRO(118)
-# endif
-# if BOOST_PP_LOCAL_R(117)
- BOOST_PP_LOCAL_MACRO(117)
-# endif
-# if BOOST_PP_LOCAL_R(116)
- BOOST_PP_LOCAL_MACRO(116)
-# endif
-# if BOOST_PP_LOCAL_R(115)
- BOOST_PP_LOCAL_MACRO(115)
-# endif
-# if BOOST_PP_LOCAL_R(114)
- BOOST_PP_LOCAL_MACRO(114)
-# endif
-# if BOOST_PP_LOCAL_R(113)
- BOOST_PP_LOCAL_MACRO(113)
-# endif
-# if BOOST_PP_LOCAL_R(112)
- BOOST_PP_LOCAL_MACRO(112)
-# endif
-# if BOOST_PP_LOCAL_R(111)
- BOOST_PP_LOCAL_MACRO(111)
-# endif
-# if BOOST_PP_LOCAL_R(110)
- BOOST_PP_LOCAL_MACRO(110)
-# endif
-# if BOOST_PP_LOCAL_R(109)
- BOOST_PP_LOCAL_MACRO(109)
-# endif
-# if BOOST_PP_LOCAL_R(108)
- BOOST_PP_LOCAL_MACRO(108)
-# endif
-# if BOOST_PP_LOCAL_R(107)
- BOOST_PP_LOCAL_MACRO(107)
-# endif
-# if BOOST_PP_LOCAL_R(106)
- BOOST_PP_LOCAL_MACRO(106)
-# endif
-# if BOOST_PP_LOCAL_R(105)
- BOOST_PP_LOCAL_MACRO(105)
-# endif
-# if BOOST_PP_LOCAL_R(104)
- BOOST_PP_LOCAL_MACRO(104)
-# endif
-# if BOOST_PP_LOCAL_R(103)
- BOOST_PP_LOCAL_MACRO(103)
-# endif
-# if BOOST_PP_LOCAL_R(102)
- BOOST_PP_LOCAL_MACRO(102)
-# endif
-# if BOOST_PP_LOCAL_R(101)
- BOOST_PP_LOCAL_MACRO(101)
-# endif
-# if BOOST_PP_LOCAL_R(100)
- BOOST_PP_LOCAL_MACRO(100)
-# endif
-# if BOOST_PP_LOCAL_R(99)
- BOOST_PP_LOCAL_MACRO(99)
-# endif
-# if BOOST_PP_LOCAL_R(98)
- BOOST_PP_LOCAL_MACRO(98)
-# endif
-# if BOOST_PP_LOCAL_R(97)
- BOOST_PP_LOCAL_MACRO(97)
-# endif
-# if BOOST_PP_LOCAL_R(96)
- BOOST_PP_LOCAL_MACRO(96)
-# endif
-# if BOOST_PP_LOCAL_R(95)
- BOOST_PP_LOCAL_MACRO(95)
-# endif
-# if BOOST_PP_LOCAL_R(94)
- BOOST_PP_LOCAL_MACRO(94)
-# endif
-# if BOOST_PP_LOCAL_R(93)
- BOOST_PP_LOCAL_MACRO(93)
-# endif
-# if BOOST_PP_LOCAL_R(92)
- BOOST_PP_LOCAL_MACRO(92)
-# endif
-# if BOOST_PP_LOCAL_R(91)
- BOOST_PP_LOCAL_MACRO(91)
-# endif
-# if BOOST_PP_LOCAL_R(90)
- BOOST_PP_LOCAL_MACRO(90)
-# endif
-# if BOOST_PP_LOCAL_R(89)
- BOOST_PP_LOCAL_MACRO(89)
-# endif
-# if BOOST_PP_LOCAL_R(88)
- BOOST_PP_LOCAL_MACRO(88)
-# endif
-# if BOOST_PP_LOCAL_R(87)
- BOOST_PP_LOCAL_MACRO(87)
-# endif
-# if BOOST_PP_LOCAL_R(86)
- BOOST_PP_LOCAL_MACRO(86)
-# endif
-# if BOOST_PP_LOCAL_R(85)
- BOOST_PP_LOCAL_MACRO(85)
-# endif
-# if BOOST_PP_LOCAL_R(84)
- BOOST_PP_LOCAL_MACRO(84)
-# endif
-# if BOOST_PP_LOCAL_R(83)
- BOOST_PP_LOCAL_MACRO(83)
-# endif
-# if BOOST_PP_LOCAL_R(82)
- BOOST_PP_LOCAL_MACRO(82)
-# endif
-# if BOOST_PP_LOCAL_R(81)
- BOOST_PP_LOCAL_MACRO(81)
-# endif
-# if BOOST_PP_LOCAL_R(80)
- BOOST_PP_LOCAL_MACRO(80)
-# endif
-# if BOOST_PP_LOCAL_R(79)
- BOOST_PP_LOCAL_MACRO(79)
-# endif
-# if BOOST_PP_LOCAL_R(78)
- BOOST_PP_LOCAL_MACRO(78)
-# endif
-# if BOOST_PP_LOCAL_R(77)
- BOOST_PP_LOCAL_MACRO(77)
-# endif
-# if BOOST_PP_LOCAL_R(76)
- BOOST_PP_LOCAL_MACRO(76)
-# endif
-# if BOOST_PP_LOCAL_R(75)
- BOOST_PP_LOCAL_MACRO(75)
-# endif
-# if BOOST_PP_LOCAL_R(74)
- BOOST_PP_LOCAL_MACRO(74)
-# endif
-# if BOOST_PP_LOCAL_R(73)
- BOOST_PP_LOCAL_MACRO(73)
-# endif
-# if BOOST_PP_LOCAL_R(72)
- BOOST_PP_LOCAL_MACRO(72)
-# endif
-# if BOOST_PP_LOCAL_R(71)
- BOOST_PP_LOCAL_MACRO(71)
-# endif
-# if BOOST_PP_LOCAL_R(70)
- BOOST_PP_LOCAL_MACRO(70)
-# endif
-# if BOOST_PP_LOCAL_R(69)
- BOOST_PP_LOCAL_MACRO(69)
-# endif
-# if BOOST_PP_LOCAL_R(68)
- BOOST_PP_LOCAL_MACRO(68)
-# endif
-# if BOOST_PP_LOCAL_R(67)
- BOOST_PP_LOCAL_MACRO(67)
-# endif
-# if BOOST_PP_LOCAL_R(66)
- BOOST_PP_LOCAL_MACRO(66)
-# endif
-# if BOOST_PP_LOCAL_R(65)
- BOOST_PP_LOCAL_MACRO(65)
-# endif
-# if BOOST_PP_LOCAL_R(64)
- BOOST_PP_LOCAL_MACRO(64)
-# endif
-# if BOOST_PP_LOCAL_R(63)
- BOOST_PP_LOCAL_MACRO(63)
-# endif
-# if BOOST_PP_LOCAL_R(62)
- BOOST_PP_LOCAL_MACRO(62)
-# endif
-# if BOOST_PP_LOCAL_R(61)
- BOOST_PP_LOCAL_MACRO(61)
-# endif
-# if BOOST_PP_LOCAL_R(60)
- BOOST_PP_LOCAL_MACRO(60)
-# endif
-# if BOOST_PP_LOCAL_R(59)
- BOOST_PP_LOCAL_MACRO(59)
-# endif
-# if BOOST_PP_LOCAL_R(58)
- BOOST_PP_LOCAL_MACRO(58)
-# endif
-# if BOOST_PP_LOCAL_R(57)
- BOOST_PP_LOCAL_MACRO(57)
-# endif
-# if BOOST_PP_LOCAL_R(56)
- BOOST_PP_LOCAL_MACRO(56)
-# endif
-# if BOOST_PP_LOCAL_R(55)
- BOOST_PP_LOCAL_MACRO(55)
-# endif
-# if BOOST_PP_LOCAL_R(54)
- BOOST_PP_LOCAL_MACRO(54)
-# endif
-# if BOOST_PP_LOCAL_R(53)
- BOOST_PP_LOCAL_MACRO(53)
-# endif
-# if BOOST_PP_LOCAL_R(52)
- BOOST_PP_LOCAL_MACRO(52)
-# endif
-# if BOOST_PP_LOCAL_R(51)
- BOOST_PP_LOCAL_MACRO(51)
-# endif
-# if BOOST_PP_LOCAL_R(50)
- BOOST_PP_LOCAL_MACRO(50)
-# endif
-# if BOOST_PP_LOCAL_R(49)
- BOOST_PP_LOCAL_MACRO(49)
-# endif
-# if BOOST_PP_LOCAL_R(48)
- BOOST_PP_LOCAL_MACRO(48)
-# endif
-# if BOOST_PP_LOCAL_R(47)
- BOOST_PP_LOCAL_MACRO(47)
-# endif
-# if BOOST_PP_LOCAL_R(46)
- BOOST_PP_LOCAL_MACRO(46)
-# endif
-# if BOOST_PP_LOCAL_R(45)
- BOOST_PP_LOCAL_MACRO(45)
-# endif
-# if BOOST_PP_LOCAL_R(44)
- BOOST_PP_LOCAL_MACRO(44)
-# endif
-# if BOOST_PP_LOCAL_R(43)
- BOOST_PP_LOCAL_MACRO(43)
-# endif
-# if BOOST_PP_LOCAL_R(42)
- BOOST_PP_LOCAL_MACRO(42)
-# endif
-# if BOOST_PP_LOCAL_R(41)
- BOOST_PP_LOCAL_MACRO(41)
-# endif
-# if BOOST_PP_LOCAL_R(40)
- BOOST_PP_LOCAL_MACRO(40)
-# endif
-# if BOOST_PP_LOCAL_R(39)
- BOOST_PP_LOCAL_MACRO(39)
-# endif
-# if BOOST_PP_LOCAL_R(38)
- BOOST_PP_LOCAL_MACRO(38)
-# endif
-# if BOOST_PP_LOCAL_R(37)
- BOOST_PP_LOCAL_MACRO(37)
-# endif
-# if BOOST_PP_LOCAL_R(36)
- BOOST_PP_LOCAL_MACRO(36)
-# endif
-# if BOOST_PP_LOCAL_R(35)
- BOOST_PP_LOCAL_MACRO(35)
-# endif
-# if BOOST_PP_LOCAL_R(34)
- BOOST_PP_LOCAL_MACRO(34)
-# endif
-# if BOOST_PP_LOCAL_R(33)
- BOOST_PP_LOCAL_MACRO(33)
-# endif
-# if BOOST_PP_LOCAL_R(32)
- BOOST_PP_LOCAL_MACRO(32)
-# endif
-# if BOOST_PP_LOCAL_R(31)
- BOOST_PP_LOCAL_MACRO(31)
-# endif
-# if BOOST_PP_LOCAL_R(30)
- BOOST_PP_LOCAL_MACRO(30)
-# endif
-# if BOOST_PP_LOCAL_R(29)
- BOOST_PP_LOCAL_MACRO(29)
-# endif
-# if BOOST_PP_LOCAL_R(28)
- BOOST_PP_LOCAL_MACRO(28)
-# endif
-# if BOOST_PP_LOCAL_R(27)
- BOOST_PP_LOCAL_MACRO(27)
-# endif
-# if BOOST_PP_LOCAL_R(26)
- BOOST_PP_LOCAL_MACRO(26)
-# endif
-# if BOOST_PP_LOCAL_R(25)
- BOOST_PP_LOCAL_MACRO(25)
-# endif
-# if BOOST_PP_LOCAL_R(24)
- BOOST_PP_LOCAL_MACRO(24)
-# endif
-# if BOOST_PP_LOCAL_R(23)
- BOOST_PP_LOCAL_MACRO(23)
-# endif
-# if BOOST_PP_LOCAL_R(22)
- BOOST_PP_LOCAL_MACRO(22)
-# endif
-# if BOOST_PP_LOCAL_R(21)
- BOOST_PP_LOCAL_MACRO(21)
-# endif
-# if BOOST_PP_LOCAL_R(20)
- BOOST_PP_LOCAL_MACRO(20)
-# endif
-# if BOOST_PP_LOCAL_R(19)
- BOOST_PP_LOCAL_MACRO(19)
-# endif
-# if BOOST_PP_LOCAL_R(18)
- BOOST_PP_LOCAL_MACRO(18)
-# endif
-# if BOOST_PP_LOCAL_R(17)
- BOOST_PP_LOCAL_MACRO(17)
-# endif
-# if BOOST_PP_LOCAL_R(16)
- BOOST_PP_LOCAL_MACRO(16)
-# endif
-# if BOOST_PP_LOCAL_R(15)
- BOOST_PP_LOCAL_MACRO(15)
-# endif
-# if BOOST_PP_LOCAL_R(14)
- BOOST_PP_LOCAL_MACRO(14)
-# endif
-# if BOOST_PP_LOCAL_R(13)
- BOOST_PP_LOCAL_MACRO(13)
-# endif
-# if BOOST_PP_LOCAL_R(12)
- BOOST_PP_LOCAL_MACRO(12)
-# endif
-# if BOOST_PP_LOCAL_R(11)
- BOOST_PP_LOCAL_MACRO(11)
-# endif
-# if BOOST_PP_LOCAL_R(10)
- BOOST_PP_LOCAL_MACRO(10)
-# endif
-# if BOOST_PP_LOCAL_R(9)
- BOOST_PP_LOCAL_MACRO(9)
-# endif
-# if BOOST_PP_LOCAL_R(8)
- BOOST_PP_LOCAL_MACRO(8)
-# endif
-# if BOOST_PP_LOCAL_R(7)
- BOOST_PP_LOCAL_MACRO(7)
-# endif
-# if BOOST_PP_LOCAL_R(6)
- BOOST_PP_LOCAL_MACRO(6)
-# endif
-# if BOOST_PP_LOCAL_R(5)
- BOOST_PP_LOCAL_MACRO(5)
-# endif
-# if BOOST_PP_LOCAL_R(4)
- BOOST_PP_LOCAL_MACRO(4)
-# endif
-# if BOOST_PP_LOCAL_R(3)
- BOOST_PP_LOCAL_MACRO(3)
-# endif
-# if BOOST_PP_LOCAL_R(2)
- BOOST_PP_LOCAL_MACRO(2)
-# endif
-# if BOOST_PP_LOCAL_R(1)
- BOOST_PP_LOCAL_MACRO(1)
-# endif
-# if BOOST_PP_LOCAL_R(0)
- BOOST_PP_LOCAL_MACRO(0)
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/self.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/self.hpp
deleted file mode 100644
index 757185c..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/self.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# if !defined(BOOST_PP_INDIRECT_SELF)
-# error BOOST_PP_ERROR: no indirect file to include
-# endif
-#
-# define BOOST_PP_IS_SELFISH 1
-#
-# include BOOST_PP_INDIRECT_SELF
-#
-# undef BOOST_PP_IS_SELFISH
-# undef BOOST_PP_INDIRECT_SELF
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/detail/start.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/detail/start.hpp
deleted file mode 100644
index 0b0b1ca..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/detail/start.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_LOCAL_SE
-#
-# undef BOOST_PP_LOCAL_SE_DIGIT_1
-# undef BOOST_PP_LOCAL_SE_DIGIT_2
-# undef BOOST_PP_LOCAL_SE_DIGIT_3
-# undef BOOST_PP_LOCAL_SE_DIGIT_4
-# undef BOOST_PP_LOCAL_SE_DIGIT_5
-# undef BOOST_PP_LOCAL_SE_DIGIT_6
-# undef BOOST_PP_LOCAL_SE_DIGIT_7
-# undef BOOST_PP_LOCAL_SE_DIGIT_8
-# undef BOOST_PP_LOCAL_SE_DIGIT_9
-# undef BOOST_PP_LOCAL_SE_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_LOCAL_SE_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_LOCAL_SE_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_LOCAL_SE_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_LOCAL_SE_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_LOCAL_SE_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_LOCAL_SE_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_LOCAL_SE_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_LOCAL_SE_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_LOCAL_SE_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_LOCAL_SE_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_LOCAL_SE_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_LOCAL_SE_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_LOCAL_SE_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_LOCAL_SE_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_LOCAL_SE_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_LOCAL_SE_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_LOCAL_SE_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_LOCAL_SE_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_LOCAL_SE_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_LOCAL_SE_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_LOCAL_SE_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_LOCAL_SE_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_LOCAL_SE_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_LOCAL_SE_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_LOCAL_SE_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_LOCAL_SE_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_LOCAL_SE_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_LOCAL_SE_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_LOCAL_SE_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_LOCAL_SE_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_LOCAL_SE_DIGIT_3
-# define BOOST_PP_LOCAL_SE() BOOST_PP_SLOT_CC_3(BOOST_PP_LOCAL_SE_DIGIT_3, BOOST_PP_LOCAL_SE_DIGIT_2, BOOST_PP_LOCAL_SE_DIGIT_1)
-# elif BOOST_PP_LOCAL_SE_DIGIT_2
-# define BOOST_PP_LOCAL_SE() BOOST_PP_SLOT_CC_2(BOOST_PP_LOCAL_SE_DIGIT_2, BOOST_PP_LOCAL_SE_DIGIT_1)
-# else
-# define BOOST_PP_LOCAL_SE() BOOST_PP_LOCAL_SE_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/iterate.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/iterate.hpp
deleted file mode 100644
index c6fad31..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/iterate.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ITERATION_ITERATE_HPP
-# define BOOST_PREPROCESSOR_ITERATION_ITERATE_HPP
-#
-# include <cutl/details/boost/preprocessor/arithmetic/dec.hpp>
-# include <cutl/details/boost/preprocessor/arithmetic/inc.hpp>
-# include <cutl/details/boost/preprocessor/array/elem.hpp>
-# include <cutl/details/boost/preprocessor/array/size.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/slot/slot.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-#
-# /* BOOST_PP_ITERATION_DEPTH */
-#
-# define BOOST_PP_ITERATION_DEPTH() 0
-#
-# /* BOOST_PP_ITERATION */
-#
-# define BOOST_PP_ITERATION() BOOST_PP_CAT(BOOST_PP_ITERATION_, BOOST_PP_ITERATION_DEPTH())
-#
-# /* BOOST_PP_ITERATION_START && BOOST_PP_ITERATION_FINISH */
-#
-# define BOOST_PP_ITERATION_START() BOOST_PP_CAT(BOOST_PP_ITERATION_START_, BOOST_PP_ITERATION_DEPTH())
-# define BOOST_PP_ITERATION_FINISH() BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, BOOST_PP_ITERATION_DEPTH())
-#
-# /* BOOST_PP_ITERATION_FLAGS */
-#
-# define BOOST_PP_ITERATION_FLAGS() (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, BOOST_PP_ITERATION_DEPTH())())
-#
-# /* BOOST_PP_FRAME_ITERATION */
-#
-# define BOOST_PP_FRAME_ITERATION(i) BOOST_PP_CAT(BOOST_PP_ITERATION_, i)
-#
-# /* BOOST_PP_FRAME_START && BOOST_PP_FRAME_FINISH */
-#
-# define BOOST_PP_FRAME_START(i) BOOST_PP_CAT(BOOST_PP_ITERATION_START_, i)
-# define BOOST_PP_FRAME_FINISH(i) BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, i)
-#
-# /* BOOST_PP_FRAME_FLAGS */
-#
-# define BOOST_PP_FRAME_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, i)())
-#
-# /* BOOST_PP_RELATIVE_ITERATION */
-#
-# define BOOST_PP_RELATIVE_ITERATION(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_)
-#
-# define BOOST_PP_RELATIVE_0(m) BOOST_PP_CAT(m, BOOST_PP_ITERATION_DEPTH())
-# define BOOST_PP_RELATIVE_1(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))
-# define BOOST_PP_RELATIVE_2(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))
-# define BOOST_PP_RELATIVE_3(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))))
-# define BOOST_PP_RELATIVE_4(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))))
-#
-# /* BOOST_PP_RELATIVE_START && BOOST_PP_RELATIVE_FINISH */
-#
-# define BOOST_PP_RELATIVE_START(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_START_)
-# define BOOST_PP_RELATIVE_FINISH(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FINISH_)
-#
-# /* BOOST_PP_RELATIVE_FLAGS */
-#
-# define BOOST_PP_RELATIVE_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FLAGS_)())
-#
-# /* BOOST_PP_ITERATE */
-#
-# define BOOST_PP_ITERATE() BOOST_PP_CAT(BOOST_PP_ITERATE_, BOOST_PP_INC(BOOST_PP_ITERATION_DEPTH()))
-#
-# define BOOST_PP_ITERATE_1 <cutl/details/boost/preprocessor/iteration/detail/iter/forward1.hpp>
-# define BOOST_PP_ITERATE_2 <cutl/details/boost/preprocessor/iteration/detail/iter/forward2.hpp>
-# define BOOST_PP_ITERATE_3 <cutl/details/boost/preprocessor/iteration/detail/iter/forward3.hpp>
-# define BOOST_PP_ITERATE_4 <cutl/details/boost/preprocessor/iteration/detail/iter/forward4.hpp>
-# define BOOST_PP_ITERATE_5 <cutl/details/boost/preprocessor/iteration/detail/iter/forward5.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/local.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/local.hpp
deleted file mode 100644
index e092639..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/local.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP
-# define BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/slot/slot.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-#
-# /* BOOST_PP_LOCAL_ITERATE */
-#
-# define BOOST_PP_LOCAL_ITERATE() <cutl/details/boost/preprocessor/iteration/detail/local.hpp>
-#
-# define BOOST_PP_LOCAL_C(n) (BOOST_PP_LOCAL_S) <= n && (BOOST_PP_LOCAL_F) >= n
-# define BOOST_PP_LOCAL_R(n) (BOOST_PP_LOCAL_F) <= n && (BOOST_PP_LOCAL_S) >= n
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/iteration/self.hpp b/libcutl/cutl/details/boost/preprocessor/iteration/self.hpp
deleted file mode 100644
index bc6e8e4..0000000
--- a/libcutl/cutl/details/boost/preprocessor/iteration/self.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_ITERATION_SELF_HPP
-# define BOOST_PREPROCESSOR_ITERATION_SELF_HPP
-#
-# /* BOOST_PP_INCLUDE_SELF */
-#
-# define BOOST_PP_INCLUDE_SELF() <cutl/details/boost/preprocessor/iteration/detail/self.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/adt.hpp b/libcutl/cutl/details/boost/preprocessor/list/adt.hpp
deleted file mode 100644
index 93e8bcb..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/adt.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# *
-# * See http://www.boost.org for most recent version.
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_ADT_HPP
-# define BOOST_PREPROCESSOR_LIST_ADT_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/detail/is_binary.hpp>
-# include <cutl/details/boost/preprocessor/logical/compl.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# /* BOOST_PP_LIST_CONS */
-#
-# define BOOST_PP_LIST_CONS(head, tail) (head, tail)
-#
-# /* BOOST_PP_LIST_NIL */
-#
-# define BOOST_PP_LIST_NIL BOOST_PP_NIL
-#
-# /* BOOST_PP_LIST_FIRST */
-#
-# define BOOST_PP_LIST_FIRST(list) BOOST_PP_LIST_FIRST_D(list)
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_LIST_FIRST_D(list) BOOST_PP_LIST_FIRST_I list
-# else
-# define BOOST_PP_LIST_FIRST_D(list) BOOST_PP_LIST_FIRST_I ## list
-# endif
-#
-# define BOOST_PP_LIST_FIRST_I(head, tail) head
-#
-# /* BOOST_PP_LIST_REST */
-#
-# define BOOST_PP_LIST_REST(list) BOOST_PP_LIST_REST_D(list)
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_LIST_REST_D(list) BOOST_PP_LIST_REST_I list
-# else
-# define BOOST_PP_LIST_REST_D(list) BOOST_PP_LIST_REST_I ## list
-# endif
-#
-# define BOOST_PP_LIST_REST_I(head, tail) tail
-#
-# /* BOOST_PP_LIST_IS_CONS */
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
-# define BOOST_PP_LIST_IS_CONS(list) BOOST_PP_LIST_IS_CONS_D(list)
-# define BOOST_PP_LIST_IS_CONS_D(list) BOOST_PP_LIST_IS_CONS_ ## list
-# define BOOST_PP_LIST_IS_CONS_(head, tail) 1
-# define BOOST_PP_LIST_IS_CONS_BOOST_PP_NIL 0
-# else
-# define BOOST_PP_LIST_IS_CONS(list) BOOST_PP_IS_BINARY(list)
-# endif
-#
-# /* BOOST_PP_LIST_IS_NIL */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
-# define BOOST_PP_LIST_IS_NIL(list) BOOST_PP_COMPL(BOOST_PP_IS_BINARY(list))
-# else
-# define BOOST_PP_LIST_IS_NIL(list) BOOST_PP_COMPL(BOOST_PP_LIST_IS_CONS(list))
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/append.hpp b/libcutl/cutl/details/boost/preprocessor/list/append.hpp
deleted file mode 100644
index 833e4ab..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/append.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_APPEND_HPP
-# define BOOST_PREPROCESSOR_LIST_APPEND_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/list/fold_right.hpp>
-#
-# /* BOOST_PP_LIST_APPEND */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_LIST_APPEND(a, b) BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_APPEND_O, b, a)
-# else
-# define BOOST_PP_LIST_APPEND(a, b) BOOST_PP_LIST_APPEND_I(a, b)
-# define BOOST_PP_LIST_APPEND_I(a, b) BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_APPEND_O, b, a)
-# endif
-#
-# define BOOST_PP_LIST_APPEND_O(d, s, x) (x, s)
-#
-# /* BOOST_PP_LIST_APPEND_D */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_LIST_APPEND_D(d, a, b) BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_APPEND_O, b, a)
-# else
-# define BOOST_PP_LIST_APPEND_D(d, a, b) BOOST_PP_LIST_APPEND_D_I(d, a, b)
-# define BOOST_PP_LIST_APPEND_D_I(d, a, b) BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_APPEND_O, b, a)
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/detail/dmc/fold_left.hpp b/libcutl/cutl/details/boost/preprocessor/list/detail/dmc/fold_left.hpp
deleted file mode 100644
index 5355900..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/detail/dmc/fold_left.hpp
+++ /dev/null
@@ -1,279 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
-# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
-#
-# include <cutl/details/boost/preprocessor/control/expr_iif.hpp>
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-# include <cutl/details/boost/preprocessor/list/adt.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-#
-# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/detail/edg/fold_left.hpp b/libcutl/cutl/details/boost/preprocessor/list/detail/edg/fold_left.hpp
deleted file mode 100644
index ef6db14..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/detail/edg/fold_left.hpp
+++ /dev/null
@@ -1,536 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_HPP
-# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_HPP
-#
-# include <cutl/details/boost/preprocessor/control/expr_iif.hpp>
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-# include <cutl/details/boost/preprocessor/list/adt.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_LIST_FOLD_LEFT_2_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_LIST_FOLD_LEFT_3_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_LIST_FOLD_LEFT_4_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_LIST_FOLD_LEFT_5_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_LIST_FOLD_LEFT_6_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_LIST_FOLD_LEFT_7_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_LIST_FOLD_LEFT_8_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_LIST_FOLD_LEFT_9_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_LIST_FOLD_LEFT_10_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_LIST_FOLD_LEFT_11_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_LIST_FOLD_LEFT_12_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_LIST_FOLD_LEFT_13_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_LIST_FOLD_LEFT_14_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_LIST_FOLD_LEFT_15_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_LIST_FOLD_LEFT_16_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_LIST_FOLD_LEFT_17_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_LIST_FOLD_LEFT_18_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_LIST_FOLD_LEFT_19_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_LIST_FOLD_LEFT_20_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_LIST_FOLD_LEFT_21_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_LIST_FOLD_LEFT_22_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_LIST_FOLD_LEFT_23_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_LIST_FOLD_LEFT_24_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_LIST_FOLD_LEFT_25_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_LIST_FOLD_LEFT_26_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_LIST_FOLD_LEFT_27_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_LIST_FOLD_LEFT_28_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_LIST_FOLD_LEFT_29_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_LIST_FOLD_LEFT_30_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_LIST_FOLD_LEFT_31_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_LIST_FOLD_LEFT_32_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_LIST_FOLD_LEFT_33_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_LIST_FOLD_LEFT_34_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_LIST_FOLD_LEFT_35_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_LIST_FOLD_LEFT_36_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_LIST_FOLD_LEFT_37_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_LIST_FOLD_LEFT_38_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_LIST_FOLD_LEFT_39_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_LIST_FOLD_LEFT_40_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_LIST_FOLD_LEFT_41_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_LIST_FOLD_LEFT_42_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_LIST_FOLD_LEFT_43_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_LIST_FOLD_LEFT_44_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_LIST_FOLD_LEFT_45_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_LIST_FOLD_LEFT_46_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_LIST_FOLD_LEFT_47_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_LIST_FOLD_LEFT_48_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_LIST_FOLD_LEFT_49_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_LIST_FOLD_LEFT_50_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_LIST_FOLD_LEFT_51_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_LIST_FOLD_LEFT_52_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_LIST_FOLD_LEFT_53_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_LIST_FOLD_LEFT_54_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_LIST_FOLD_LEFT_55_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_LIST_FOLD_LEFT_56_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_LIST_FOLD_LEFT_57_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_LIST_FOLD_LEFT_58_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_LIST_FOLD_LEFT_59_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_LIST_FOLD_LEFT_60_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_LIST_FOLD_LEFT_61_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_LIST_FOLD_LEFT_62_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_LIST_FOLD_LEFT_63_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_LIST_FOLD_LEFT_64_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_LIST_FOLD_LEFT_65_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_LIST_FOLD_LEFT_66_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_LIST_FOLD_LEFT_67_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_LIST_FOLD_LEFT_68_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_LIST_FOLD_LEFT_69_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_LIST_FOLD_LEFT_70_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_LIST_FOLD_LEFT_71_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_LIST_FOLD_LEFT_72_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_LIST_FOLD_LEFT_73_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_LIST_FOLD_LEFT_74_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_LIST_FOLD_LEFT_75_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_LIST_FOLD_LEFT_76_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_LIST_FOLD_LEFT_77_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_LIST_FOLD_LEFT_78_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_LIST_FOLD_LEFT_79_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_LIST_FOLD_LEFT_80_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_LIST_FOLD_LEFT_81_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_LIST_FOLD_LEFT_82_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_LIST_FOLD_LEFT_83_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_LIST_FOLD_LEFT_84_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_LIST_FOLD_LEFT_85_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_LIST_FOLD_LEFT_86_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_LIST_FOLD_LEFT_87_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_LIST_FOLD_LEFT_88_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_LIST_FOLD_LEFT_89_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_LIST_FOLD_LEFT_90_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_LIST_FOLD_LEFT_91_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_LIST_FOLD_LEFT_92_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_LIST_FOLD_LEFT_93_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_LIST_FOLD_LEFT_94_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_LIST_FOLD_LEFT_95_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_LIST_FOLD_LEFT_96_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_LIST_FOLD_LEFT_97_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_LIST_FOLD_LEFT_98_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_LIST_FOLD_LEFT_99_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_LIST_FOLD_LEFT_100_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_LIST_FOLD_LEFT_101_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_LIST_FOLD_LEFT_102_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_LIST_FOLD_LEFT_103_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_LIST_FOLD_LEFT_104_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_LIST_FOLD_LEFT_105_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_LIST_FOLD_LEFT_106_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_LIST_FOLD_LEFT_107_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_LIST_FOLD_LEFT_108_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_LIST_FOLD_LEFT_109_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_LIST_FOLD_LEFT_110_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_LIST_FOLD_LEFT_111_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_LIST_FOLD_LEFT_112_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_LIST_FOLD_LEFT_113_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_LIST_FOLD_LEFT_114_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_LIST_FOLD_LEFT_115_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_LIST_FOLD_LEFT_116_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_LIST_FOLD_LEFT_117_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_LIST_FOLD_LEFT_118_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_LIST_FOLD_LEFT_119_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_LIST_FOLD_LEFT_120_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_LIST_FOLD_LEFT_121_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_LIST_FOLD_LEFT_122_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_LIST_FOLD_LEFT_123_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_LIST_FOLD_LEFT_124_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_LIST_FOLD_LEFT_125_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_LIST_FOLD_LEFT_126_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_LIST_FOLD_LEFT_127_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_LIST_FOLD_LEFT_128_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_LIST_FOLD_LEFT_129_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_LIST_FOLD_LEFT_130_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_LIST_FOLD_LEFT_131_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_LIST_FOLD_LEFT_132_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_LIST_FOLD_LEFT_133_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_LIST_FOLD_LEFT_134_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_LIST_FOLD_LEFT_135_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_LIST_FOLD_LEFT_136_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_LIST_FOLD_LEFT_137_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_LIST_FOLD_LEFT_138_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_LIST_FOLD_LEFT_139_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_LIST_FOLD_LEFT_140_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_LIST_FOLD_LEFT_141_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_LIST_FOLD_LEFT_142_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_LIST_FOLD_LEFT_143_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_LIST_FOLD_LEFT_144_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_LIST_FOLD_LEFT_145_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_LIST_FOLD_LEFT_146_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_LIST_FOLD_LEFT_147_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_LIST_FOLD_LEFT_148_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_LIST_FOLD_LEFT_149_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_LIST_FOLD_LEFT_150_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_LIST_FOLD_LEFT_151_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_LIST_FOLD_LEFT_152_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_LIST_FOLD_LEFT_153_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_LIST_FOLD_LEFT_154_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_LIST_FOLD_LEFT_155_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_LIST_FOLD_LEFT_156_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_LIST_FOLD_LEFT_157_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_LIST_FOLD_LEFT_158_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_LIST_FOLD_LEFT_159_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_LIST_FOLD_LEFT_160_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_LIST_FOLD_LEFT_161_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_LIST_FOLD_LEFT_162_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_LIST_FOLD_LEFT_163_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_LIST_FOLD_LEFT_164_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_LIST_FOLD_LEFT_165_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_LIST_FOLD_LEFT_166_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_LIST_FOLD_LEFT_167_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_LIST_FOLD_LEFT_168_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_LIST_FOLD_LEFT_169_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_LIST_FOLD_LEFT_170_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_LIST_FOLD_LEFT_171_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_LIST_FOLD_LEFT_172_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_LIST_FOLD_LEFT_173_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_LIST_FOLD_LEFT_174_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_LIST_FOLD_LEFT_175_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_LIST_FOLD_LEFT_176_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_LIST_FOLD_LEFT_177_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_LIST_FOLD_LEFT_178_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_LIST_FOLD_LEFT_179_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_LIST_FOLD_LEFT_180_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_LIST_FOLD_LEFT_181_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_LIST_FOLD_LEFT_182_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_LIST_FOLD_LEFT_183_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_LIST_FOLD_LEFT_184_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_LIST_FOLD_LEFT_185_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_LIST_FOLD_LEFT_186_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_LIST_FOLD_LEFT_187_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_LIST_FOLD_LEFT_188_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_LIST_FOLD_LEFT_189_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_LIST_FOLD_LEFT_190_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_LIST_FOLD_LEFT_191_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_LIST_FOLD_LEFT_192_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_LIST_FOLD_LEFT_193_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_LIST_FOLD_LEFT_194_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_LIST_FOLD_LEFT_195_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_LIST_FOLD_LEFT_196_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_LIST_FOLD_LEFT_197_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_LIST_FOLD_LEFT_198_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_LIST_FOLD_LEFT_199_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_LIST_FOLD_LEFT_200_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_LIST_FOLD_LEFT_201_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_LIST_FOLD_LEFT_202_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_LIST_FOLD_LEFT_203_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_LIST_FOLD_LEFT_204_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_LIST_FOLD_LEFT_205_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_LIST_FOLD_LEFT_206_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_LIST_FOLD_LEFT_207_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_LIST_FOLD_LEFT_208_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_LIST_FOLD_LEFT_209_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_LIST_FOLD_LEFT_210_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_LIST_FOLD_LEFT_211_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_LIST_FOLD_LEFT_212_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_LIST_FOLD_LEFT_213_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_LIST_FOLD_LEFT_214_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_LIST_FOLD_LEFT_215_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_LIST_FOLD_LEFT_216_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_LIST_FOLD_LEFT_217_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_LIST_FOLD_LEFT_218_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_LIST_FOLD_LEFT_219_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_LIST_FOLD_LEFT_220_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_LIST_FOLD_LEFT_221_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_LIST_FOLD_LEFT_222_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_LIST_FOLD_LEFT_223_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_LIST_FOLD_LEFT_224_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_LIST_FOLD_LEFT_225_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_LIST_FOLD_LEFT_226_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_LIST_FOLD_LEFT_227_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_LIST_FOLD_LEFT_228_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_LIST_FOLD_LEFT_229_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_LIST_FOLD_LEFT_230_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_LIST_FOLD_LEFT_231_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_LIST_FOLD_LEFT_232_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_LIST_FOLD_LEFT_233_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_LIST_FOLD_LEFT_234_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_LIST_FOLD_LEFT_235_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_LIST_FOLD_LEFT_236_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_LIST_FOLD_LEFT_237_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_LIST_FOLD_LEFT_238_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_LIST_FOLD_LEFT_239_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_LIST_FOLD_LEFT_240_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_LIST_FOLD_LEFT_241_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_LIST_FOLD_LEFT_242_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_LIST_FOLD_LEFT_243_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_LIST_FOLD_LEFT_244_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_LIST_FOLD_LEFT_245_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_LIST_FOLD_LEFT_246_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_LIST_FOLD_LEFT_247_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_LIST_FOLD_LEFT_248_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_LIST_FOLD_LEFT_249_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_LIST_FOLD_LEFT_250_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_LIST_FOLD_LEFT_251_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_LIST_FOLD_LEFT_252_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_LIST_FOLD_LEFT_253_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_LIST_FOLD_LEFT_254_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_LIST_FOLD_LEFT_255_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_LIST_FOLD_LEFT_256_D(o, s, l)
-#
-# define BOOST_PP_LIST_FOLD_LEFT_1_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_2_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_3_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_4_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_5_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_6_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_7_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_8_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_9_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_10_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_11_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_12_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_13_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_14_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_15_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_16_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_17_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_18_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_19_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_20_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_21_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_22_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_23_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_24_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_25_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_26_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_27_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_28_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_29_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_30_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_31_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_32_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_33_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_34_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_35_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_36_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_37_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_38_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_39_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_40_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_41_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_42_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_43_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_44_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_45_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_46_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_47_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_48_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_49_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_50_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_51_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_52_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_53_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_54_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_55_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_56_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_57_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_58_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_59_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_60_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_61_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_62_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_63_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_64_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_65_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_66_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_67_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_68_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_69_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_70_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_71_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_72_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_73_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_74_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_75_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_76_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_77_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_78_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_79_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_80_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_81_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_82_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_83_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_84_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_85_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_86_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_87_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_88_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_89_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_90_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_91_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_92_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_93_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_94_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_95_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_96_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_97_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_98_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_99_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_100_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_101_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_102_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_103_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_104_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_105_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_106_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_107_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_108_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_109_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_110_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_111_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_112_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_113_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_114_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_115_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_116_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_117_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_118_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_119_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_120_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_121_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_122_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_123_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_124_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_125_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_126_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_127_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_128_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_129_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_130_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_131_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_132_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_133_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_134_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_135_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_136_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_137_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_138_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_139_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_140_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_141_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_142_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_143_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_144_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_145_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_146_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_147_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_148_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_149_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_150_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_151_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_152_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_153_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_154_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_155_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_156_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_157_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_158_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_159_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_160_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_161_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_162_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_163_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_164_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_165_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_166_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_167_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_168_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_169_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_170_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_171_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_172_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_173_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_174_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_175_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_176_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_177_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_178_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_179_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_180_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_181_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_182_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_183_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_184_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_185_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_186_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_187_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_188_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_189_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_190_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_191_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_192_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_193_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_194_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_195_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_196_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_197_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_198_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_199_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_200_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_201_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_202_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_203_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_204_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_205_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_206_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_207_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_208_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_209_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_210_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_211_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_212_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_213_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_214_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_215_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_216_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_217_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_218_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_219_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_220_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_221_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_222_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_223_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_224_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_225_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_226_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_227_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_228_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_229_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_230_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_231_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_232_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_233_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_234_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_235_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_236_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_237_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_238_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_239_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_240_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_241_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_242_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_243_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_244_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_245_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_246_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_247_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_248_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_249_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_250_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_251_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_252_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_253_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_254_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_255_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_256_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/detail/edg/fold_right.hpp b/libcutl/cutl/details/boost/preprocessor/list/detail/edg/fold_right.hpp
deleted file mode 100644
index 7502d45..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/detail/edg/fold_right.hpp
+++ /dev/null
@@ -1,794 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_HPP
-# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_HPP
-#
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-# include <cutl/details/boost/preprocessor/list/adt.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_2_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_3_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_4_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_5_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_6_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_7_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_8_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_9_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_10_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_11_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_12_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_13_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_14_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_15_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_16_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_17_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_18_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_19_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_20_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_21_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_22_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_23_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_24_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_25_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_26_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_27_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_28_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_29_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_30_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_31_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_32_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_33_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_34_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_35_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_36_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_37_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_38_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_39_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_40_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_41_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_42_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_43_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_44_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_45_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_46_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_47_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_48_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_49_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_50_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_51_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_52_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_53_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_54_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_55_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_56_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_57_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_58_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_59_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_60_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_61_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_62_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_63_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_64_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_65_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_66_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_67_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_68_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_69_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_70_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_71_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_72_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_73_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_74_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_75_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_76_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_77_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_78_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_79_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_80_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_81_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_82_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_83_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_84_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_85_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_86_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_87_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_88_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_89_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_90_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_91_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_92_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_93_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_94_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_95_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_96_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_97_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_98_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_99_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_100_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_101_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_102_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_103_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_104_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_105_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_106_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_107_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_108_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_109_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_110_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_111_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_112_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_113_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_114_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_115_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_116_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_117_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_118_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_119_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_120_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_121_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_122_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_123_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_124_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_125_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_126_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_127_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_128_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_129_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_130_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_131_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_132_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_133_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_134_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_135_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_136_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_137_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_138_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_139_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_140_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_141_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_142_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_143_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_144_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_145_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_146_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_147_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_148_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_149_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_150_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_151_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_152_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_153_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_154_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_155_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_156_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_157_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_158_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_159_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_160_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_161_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_162_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_163_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_164_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_165_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_166_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_167_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_168_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_169_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_170_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_171_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_172_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_173_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_174_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_175_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_176_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_177_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_178_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_179_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_180_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_181_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_182_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_183_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_184_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_185_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_186_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_187_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_188_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_189_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_190_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_191_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_192_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_193_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_194_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_195_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_196_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_197_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_198_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_199_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_200_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_201_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_202_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_203_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_204_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_205_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_206_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_207_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_208_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_209_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_210_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_211_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_212_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_213_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_214_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_215_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_216_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_217_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_218_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_219_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_220_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_221_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_222_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_223_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_224_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_225_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_226_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_227_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_228_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_229_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_230_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_231_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_232_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_233_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_234_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_235_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_236_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_237_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_238_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_239_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_240_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_241_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_242_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_243_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_244_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_245_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_246_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_247_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_248_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_249_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_250_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_251_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_252_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_253_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_254_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_255_D(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_256_D(o, s, l)
-#
-# define BOOST_PP_LIST_FOLD_RIGHT_1_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(2, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_2, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_2_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(3, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_3, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_3_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(4, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_4, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_4_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(5, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_5, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_5_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(6, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_6, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_6_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(7, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_7, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_7_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(8, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_8, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_8_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(9, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_9, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_9_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(10, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_10, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_10_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(11, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_11, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_11_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(12, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_12, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_12_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(13, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_13, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_13_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(14, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_14, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_14_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(15, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_15, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_15_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(16, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_16, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_16_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(17, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_17, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_17_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(18, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_18, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_18_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(19, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_19, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_19_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(20, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_20, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_20_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(21, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_21, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_21_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(22, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_22, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_22_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(23, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_23, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_23_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(24, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_24, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_24_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(25, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_25, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_25_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(26, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_26, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_26_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(27, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_27, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_27_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(28, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_28, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_28_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(29, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_29, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_29_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(30, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_30, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_30_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(31, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_31, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_31_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(32, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_32, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_32_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(33, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_33, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_33_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(34, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_34, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_34_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(35, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_35, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_35_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(36, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_36, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_36_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(37, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_37, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_37_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(38, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_38, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_38_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(39, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_39, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_39_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(40, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_40, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_40_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(41, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_41, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_41_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(42, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_42, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_42_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(43, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_43, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_43_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(44, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_44, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_44_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(45, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_45, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_45_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(46, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_46, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_46_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(47, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_47, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_47_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(48, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_48, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_48_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(49, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_49, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_49_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(50, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_50, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_50_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(51, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_51, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_51_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(52, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_52, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_52_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(53, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_53, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_53_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(54, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_54, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_54_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(55, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_55, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_55_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(56, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_56, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_56_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(57, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_57, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_57_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(58, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_58, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_58_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(59, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_59, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_59_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(60, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_60, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_60_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(61, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_61, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_61_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(62, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_62, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_62_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(63, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_63, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_63_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(64, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_64, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_64_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(65, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_65, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_65_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(66, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_66, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_66_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(67, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_67, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_67_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(68, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_68, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_68_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(69, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_69, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_69_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(70, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_70, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_70_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(71, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_71, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_71_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(72, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_72, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_72_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(73, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_73, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_73_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(74, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_74, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_74_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(75, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_75, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_75_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(76, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_76, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_76_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(77, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_77, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_77_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(78, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_78, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_78_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(79, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_79, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_79_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(80, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_80, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_80_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(81, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_81, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_81_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(82, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_82, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_82_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(83, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_83, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_83_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(84, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_84, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_84_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(85, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_85, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_85_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(86, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_86, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_86_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(87, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_87, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_87_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(88, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_88, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_88_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(89, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_89, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_89_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(90, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_90, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_90_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(91, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_91, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_91_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(92, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_92, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_92_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(93, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_93, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_93_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(94, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_94, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_94_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(95, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_95, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_95_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(96, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_96, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_96_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(97, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_97, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_97_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(98, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_98, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_98_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(99, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_99, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_99_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(100, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_100, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_100_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(101, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_101, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_101_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(102, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_102, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_102_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(103, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_103, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_103_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(104, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_104, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_104_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(105, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_105, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_105_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(106, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_106, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_106_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(107, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_107, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_107_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(108, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_108, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_108_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(109, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_109, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_109_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(110, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_110, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_110_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(111, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_111, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_111_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(112, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_112, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_112_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(113, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_113, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_113_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(114, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_114, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_114_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(115, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_115, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_115_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(116, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_116, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_116_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(117, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_117, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_117_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(118, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_118, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_118_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(119, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_119, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_119_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(120, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_120, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_120_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(121, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_121, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_121_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(122, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_122, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_122_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(123, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_123, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_123_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(124, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_124, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_124_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(125, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_125, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_125_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(126, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_126, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_126_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(127, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_127, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_127_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(128, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_128, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_128_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(129, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_129, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_129_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(130, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_130, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_130_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(131, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_131, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_131_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(132, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_132, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_132_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(133, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_133, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_133_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(134, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_134, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_134_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(135, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_135, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_135_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(136, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_136, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_136_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(137, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_137, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_137_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(138, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_138, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_138_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(139, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_139, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_139_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(140, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_140, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_140_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(141, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_141, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_141_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(142, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_142, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_142_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(143, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_143, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_143_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(144, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_144, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_144_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(145, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_145, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_145_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(146, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_146, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_146_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(147, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_147, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_147_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(148, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_148, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_148_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(149, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_149, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_149_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(150, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_150, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_150_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(151, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_151, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_151_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(152, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_152, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_152_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(153, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_153, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_153_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(154, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_154, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_154_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(155, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_155, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_155_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(156, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_156, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_156_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(157, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_157, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_157_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(158, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_158, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_158_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(159, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_159, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_159_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(160, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_160, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_160_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(161, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_161, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_161_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(162, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_162, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_162_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(163, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_163, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_163_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(164, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_164, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_164_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(165, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_165, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_165_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(166, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_166, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_166_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(167, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_167, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_167_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(168, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_168, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_168_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(169, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_169, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_169_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(170, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_170, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_170_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(171, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_171, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_171_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(172, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_172, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_172_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(173, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_173, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_173_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(174, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_174, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_174_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(175, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_175, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_175_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(176, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_176, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_176_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(177, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_177, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_177_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(178, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_178, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_178_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(179, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_179, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_179_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(180, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_180, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_180_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(181, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_181, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_181_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(182, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_182, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_182_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(183, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_183, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_183_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(184, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_184, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_184_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(185, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_185, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_185_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(186, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_186, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_186_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(187, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_187, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_187_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(188, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_188, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_188_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(189, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_189, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_189_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(190, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_190, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_190_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(191, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_191, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_191_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(192, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_192, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_192_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(193, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_193, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_193_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(194, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_194, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_194_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(195, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_195, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_195_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(196, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_196, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_196_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(197, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_197, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_197_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(198, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_198, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_198_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(199, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_199, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_199_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(200, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_200, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_200_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(201, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_201, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_201_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(202, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_202, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_202_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(203, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_203, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_203_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(204, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_204, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_204_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(205, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_205, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_205_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(206, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_206, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_206_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(207, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_207, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_207_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(208, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_208, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_208_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(209, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_209, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_209_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(210, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_210, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_210_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(211, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_211, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_211_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(212, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_212, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_212_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(213, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_213, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_213_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(214, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_214, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_214_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(215, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_215, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_215_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(216, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_216, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_216_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(217, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_217, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_217_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(218, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_218, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_218_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(219, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_219, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_219_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(220, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_220, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_220_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(221, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_221, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_221_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(222, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_222, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_222_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(223, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_223, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_223_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(224, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_224, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_224_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(225, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_225, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_225_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(226, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_226, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_226_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(227, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_227, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_227_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(228, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_228, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_228_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(229, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_229, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_229_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(230, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_230, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_230_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(231, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_231, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_231_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(232, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_232, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_232_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(233, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_233, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_233_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(234, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_234, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_234_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(235, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_235, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_235_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(236, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_236, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_236_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(237, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_237, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_237_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(238, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_238, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_238_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(239, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_239, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_239_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(240, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_240, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_240_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(241, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_241, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_241_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(242, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_242, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_242_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(243, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_243, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_243_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(244, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_244, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_244_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(245, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_245, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_245_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(246, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_246, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_246_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(247, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_247, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_247_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(248, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_248, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_248_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(249, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_249, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_249_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(250, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_250, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_250_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(251, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_251, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_251_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(252, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_252, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_252_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(253, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_253, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_253_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(254, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_254, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_254_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(255, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_255, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_255_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(256, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_256, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-# define BOOST_PP_LIST_FOLD_RIGHT_256_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(257, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_257, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
-#
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_NIL 1
-#
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) 0
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/detail/fold_left.hpp b/libcutl/cutl/details/boost/preprocessor/list/detail/fold_left.hpp
deleted file mode 100644
index 2652f73..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/detail/fold_left.hpp
+++ /dev/null
@@ -1,279 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
-# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
-#
-# include <cutl/details/boost/preprocessor/control/expr_iif.hpp>
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-# include <cutl/details/boost/preprocessor/list/adt.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/detail/fold_right.hpp b/libcutl/cutl/details/boost/preprocessor/list/detail/fold_right.hpp
deleted file mode 100644
index 1cb3417..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/detail/fold_right.hpp
+++ /dev/null
@@ -1,277 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_HPP
-# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_HPP
-#
-# include <cutl/details/boost/preprocessor/list/fold_left.hpp>
-# include <cutl/details/boost/preprocessor/list/reverse.hpp>
-#
-# define BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1(o, s, BOOST_PP_LIST_REVERSE_D(1, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) BOOST_PP_LIST_FOLD_LEFT_2(o, s, BOOST_PP_LIST_REVERSE_D(2, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) BOOST_PP_LIST_FOLD_LEFT_3(o, s, BOOST_PP_LIST_REVERSE_D(3, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) BOOST_PP_LIST_FOLD_LEFT_4(o, s, BOOST_PP_LIST_REVERSE_D(4, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) BOOST_PP_LIST_FOLD_LEFT_5(o, s, BOOST_PP_LIST_REVERSE_D(5, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) BOOST_PP_LIST_FOLD_LEFT_6(o, s, BOOST_PP_LIST_REVERSE_D(6, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) BOOST_PP_LIST_FOLD_LEFT_7(o, s, BOOST_PP_LIST_REVERSE_D(7, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) BOOST_PP_LIST_FOLD_LEFT_8(o, s, BOOST_PP_LIST_REVERSE_D(8, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) BOOST_PP_LIST_FOLD_LEFT_9(o, s, BOOST_PP_LIST_REVERSE_D(9, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) BOOST_PP_LIST_FOLD_LEFT_10(o, s, BOOST_PP_LIST_REVERSE_D(10, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) BOOST_PP_LIST_FOLD_LEFT_11(o, s, BOOST_PP_LIST_REVERSE_D(11, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) BOOST_PP_LIST_FOLD_LEFT_12(o, s, BOOST_PP_LIST_REVERSE_D(12, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) BOOST_PP_LIST_FOLD_LEFT_13(o, s, BOOST_PP_LIST_REVERSE_D(13, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) BOOST_PP_LIST_FOLD_LEFT_14(o, s, BOOST_PP_LIST_REVERSE_D(14, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) BOOST_PP_LIST_FOLD_LEFT_15(o, s, BOOST_PP_LIST_REVERSE_D(15, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) BOOST_PP_LIST_FOLD_LEFT_16(o, s, BOOST_PP_LIST_REVERSE_D(16, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) BOOST_PP_LIST_FOLD_LEFT_17(o, s, BOOST_PP_LIST_REVERSE_D(17, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) BOOST_PP_LIST_FOLD_LEFT_18(o, s, BOOST_PP_LIST_REVERSE_D(18, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) BOOST_PP_LIST_FOLD_LEFT_19(o, s, BOOST_PP_LIST_REVERSE_D(19, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) BOOST_PP_LIST_FOLD_LEFT_20(o, s, BOOST_PP_LIST_REVERSE_D(20, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) BOOST_PP_LIST_FOLD_LEFT_21(o, s, BOOST_PP_LIST_REVERSE_D(21, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) BOOST_PP_LIST_FOLD_LEFT_22(o, s, BOOST_PP_LIST_REVERSE_D(22, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) BOOST_PP_LIST_FOLD_LEFT_23(o, s, BOOST_PP_LIST_REVERSE_D(23, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) BOOST_PP_LIST_FOLD_LEFT_24(o, s, BOOST_PP_LIST_REVERSE_D(24, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) BOOST_PP_LIST_FOLD_LEFT_25(o, s, BOOST_PP_LIST_REVERSE_D(25, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) BOOST_PP_LIST_FOLD_LEFT_26(o, s, BOOST_PP_LIST_REVERSE_D(26, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) BOOST_PP_LIST_FOLD_LEFT_27(o, s, BOOST_PP_LIST_REVERSE_D(27, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) BOOST_PP_LIST_FOLD_LEFT_28(o, s, BOOST_PP_LIST_REVERSE_D(28, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) BOOST_PP_LIST_FOLD_LEFT_29(o, s, BOOST_PP_LIST_REVERSE_D(29, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) BOOST_PP_LIST_FOLD_LEFT_30(o, s, BOOST_PP_LIST_REVERSE_D(30, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) BOOST_PP_LIST_FOLD_LEFT_31(o, s, BOOST_PP_LIST_REVERSE_D(31, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) BOOST_PP_LIST_FOLD_LEFT_32(o, s, BOOST_PP_LIST_REVERSE_D(32, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) BOOST_PP_LIST_FOLD_LEFT_33(o, s, BOOST_PP_LIST_REVERSE_D(33, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) BOOST_PP_LIST_FOLD_LEFT_34(o, s, BOOST_PP_LIST_REVERSE_D(34, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) BOOST_PP_LIST_FOLD_LEFT_35(o, s, BOOST_PP_LIST_REVERSE_D(35, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) BOOST_PP_LIST_FOLD_LEFT_36(o, s, BOOST_PP_LIST_REVERSE_D(36, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) BOOST_PP_LIST_FOLD_LEFT_37(o, s, BOOST_PP_LIST_REVERSE_D(37, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) BOOST_PP_LIST_FOLD_LEFT_38(o, s, BOOST_PP_LIST_REVERSE_D(38, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) BOOST_PP_LIST_FOLD_LEFT_39(o, s, BOOST_PP_LIST_REVERSE_D(39, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) BOOST_PP_LIST_FOLD_LEFT_40(o, s, BOOST_PP_LIST_REVERSE_D(40, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) BOOST_PP_LIST_FOLD_LEFT_41(o, s, BOOST_PP_LIST_REVERSE_D(41, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) BOOST_PP_LIST_FOLD_LEFT_42(o, s, BOOST_PP_LIST_REVERSE_D(42, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) BOOST_PP_LIST_FOLD_LEFT_43(o, s, BOOST_PP_LIST_REVERSE_D(43, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) BOOST_PP_LIST_FOLD_LEFT_44(o, s, BOOST_PP_LIST_REVERSE_D(44, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) BOOST_PP_LIST_FOLD_LEFT_45(o, s, BOOST_PP_LIST_REVERSE_D(45, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) BOOST_PP_LIST_FOLD_LEFT_46(o, s, BOOST_PP_LIST_REVERSE_D(46, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) BOOST_PP_LIST_FOLD_LEFT_47(o, s, BOOST_PP_LIST_REVERSE_D(47, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) BOOST_PP_LIST_FOLD_LEFT_48(o, s, BOOST_PP_LIST_REVERSE_D(48, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) BOOST_PP_LIST_FOLD_LEFT_49(o, s, BOOST_PP_LIST_REVERSE_D(49, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) BOOST_PP_LIST_FOLD_LEFT_50(o, s, BOOST_PP_LIST_REVERSE_D(50, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) BOOST_PP_LIST_FOLD_LEFT_51(o, s, BOOST_PP_LIST_REVERSE_D(51, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) BOOST_PP_LIST_FOLD_LEFT_52(o, s, BOOST_PP_LIST_REVERSE_D(52, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) BOOST_PP_LIST_FOLD_LEFT_53(o, s, BOOST_PP_LIST_REVERSE_D(53, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) BOOST_PP_LIST_FOLD_LEFT_54(o, s, BOOST_PP_LIST_REVERSE_D(54, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) BOOST_PP_LIST_FOLD_LEFT_55(o, s, BOOST_PP_LIST_REVERSE_D(55, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) BOOST_PP_LIST_FOLD_LEFT_56(o, s, BOOST_PP_LIST_REVERSE_D(56, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) BOOST_PP_LIST_FOLD_LEFT_57(o, s, BOOST_PP_LIST_REVERSE_D(57, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) BOOST_PP_LIST_FOLD_LEFT_58(o, s, BOOST_PP_LIST_REVERSE_D(58, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) BOOST_PP_LIST_FOLD_LEFT_59(o, s, BOOST_PP_LIST_REVERSE_D(59, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) BOOST_PP_LIST_FOLD_LEFT_60(o, s, BOOST_PP_LIST_REVERSE_D(60, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) BOOST_PP_LIST_FOLD_LEFT_61(o, s, BOOST_PP_LIST_REVERSE_D(61, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) BOOST_PP_LIST_FOLD_LEFT_62(o, s, BOOST_PP_LIST_REVERSE_D(62, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) BOOST_PP_LIST_FOLD_LEFT_63(o, s, BOOST_PP_LIST_REVERSE_D(63, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) BOOST_PP_LIST_FOLD_LEFT_64(o, s, BOOST_PP_LIST_REVERSE_D(64, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) BOOST_PP_LIST_FOLD_LEFT_65(o, s, BOOST_PP_LIST_REVERSE_D(65, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) BOOST_PP_LIST_FOLD_LEFT_66(o, s, BOOST_PP_LIST_REVERSE_D(66, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) BOOST_PP_LIST_FOLD_LEFT_67(o, s, BOOST_PP_LIST_REVERSE_D(67, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) BOOST_PP_LIST_FOLD_LEFT_68(o, s, BOOST_PP_LIST_REVERSE_D(68, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) BOOST_PP_LIST_FOLD_LEFT_69(o, s, BOOST_PP_LIST_REVERSE_D(69, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) BOOST_PP_LIST_FOLD_LEFT_70(o, s, BOOST_PP_LIST_REVERSE_D(70, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) BOOST_PP_LIST_FOLD_LEFT_71(o, s, BOOST_PP_LIST_REVERSE_D(71, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) BOOST_PP_LIST_FOLD_LEFT_72(o, s, BOOST_PP_LIST_REVERSE_D(72, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) BOOST_PP_LIST_FOLD_LEFT_73(o, s, BOOST_PP_LIST_REVERSE_D(73, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) BOOST_PP_LIST_FOLD_LEFT_74(o, s, BOOST_PP_LIST_REVERSE_D(74, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) BOOST_PP_LIST_FOLD_LEFT_75(o, s, BOOST_PP_LIST_REVERSE_D(75, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) BOOST_PP_LIST_FOLD_LEFT_76(o, s, BOOST_PP_LIST_REVERSE_D(76, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) BOOST_PP_LIST_FOLD_LEFT_77(o, s, BOOST_PP_LIST_REVERSE_D(77, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) BOOST_PP_LIST_FOLD_LEFT_78(o, s, BOOST_PP_LIST_REVERSE_D(78, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) BOOST_PP_LIST_FOLD_LEFT_79(o, s, BOOST_PP_LIST_REVERSE_D(79, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) BOOST_PP_LIST_FOLD_LEFT_80(o, s, BOOST_PP_LIST_REVERSE_D(80, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) BOOST_PP_LIST_FOLD_LEFT_81(o, s, BOOST_PP_LIST_REVERSE_D(81, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) BOOST_PP_LIST_FOLD_LEFT_82(o, s, BOOST_PP_LIST_REVERSE_D(82, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) BOOST_PP_LIST_FOLD_LEFT_83(o, s, BOOST_PP_LIST_REVERSE_D(83, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) BOOST_PP_LIST_FOLD_LEFT_84(o, s, BOOST_PP_LIST_REVERSE_D(84, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) BOOST_PP_LIST_FOLD_LEFT_85(o, s, BOOST_PP_LIST_REVERSE_D(85, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) BOOST_PP_LIST_FOLD_LEFT_86(o, s, BOOST_PP_LIST_REVERSE_D(86, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) BOOST_PP_LIST_FOLD_LEFT_87(o, s, BOOST_PP_LIST_REVERSE_D(87, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) BOOST_PP_LIST_FOLD_LEFT_88(o, s, BOOST_PP_LIST_REVERSE_D(88, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) BOOST_PP_LIST_FOLD_LEFT_89(o, s, BOOST_PP_LIST_REVERSE_D(89, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) BOOST_PP_LIST_FOLD_LEFT_90(o, s, BOOST_PP_LIST_REVERSE_D(90, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) BOOST_PP_LIST_FOLD_LEFT_91(o, s, BOOST_PP_LIST_REVERSE_D(91, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) BOOST_PP_LIST_FOLD_LEFT_92(o, s, BOOST_PP_LIST_REVERSE_D(92, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) BOOST_PP_LIST_FOLD_LEFT_93(o, s, BOOST_PP_LIST_REVERSE_D(93, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) BOOST_PP_LIST_FOLD_LEFT_94(o, s, BOOST_PP_LIST_REVERSE_D(94, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) BOOST_PP_LIST_FOLD_LEFT_95(o, s, BOOST_PP_LIST_REVERSE_D(95, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) BOOST_PP_LIST_FOLD_LEFT_96(o, s, BOOST_PP_LIST_REVERSE_D(96, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) BOOST_PP_LIST_FOLD_LEFT_97(o, s, BOOST_PP_LIST_REVERSE_D(97, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) BOOST_PP_LIST_FOLD_LEFT_98(o, s, BOOST_PP_LIST_REVERSE_D(98, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) BOOST_PP_LIST_FOLD_LEFT_99(o, s, BOOST_PP_LIST_REVERSE_D(99, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) BOOST_PP_LIST_FOLD_LEFT_100(o, s, BOOST_PP_LIST_REVERSE_D(100, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) BOOST_PP_LIST_FOLD_LEFT_101(o, s, BOOST_PP_LIST_REVERSE_D(101, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) BOOST_PP_LIST_FOLD_LEFT_102(o, s, BOOST_PP_LIST_REVERSE_D(102, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) BOOST_PP_LIST_FOLD_LEFT_103(o, s, BOOST_PP_LIST_REVERSE_D(103, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) BOOST_PP_LIST_FOLD_LEFT_104(o, s, BOOST_PP_LIST_REVERSE_D(104, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) BOOST_PP_LIST_FOLD_LEFT_105(o, s, BOOST_PP_LIST_REVERSE_D(105, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) BOOST_PP_LIST_FOLD_LEFT_106(o, s, BOOST_PP_LIST_REVERSE_D(106, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) BOOST_PP_LIST_FOLD_LEFT_107(o, s, BOOST_PP_LIST_REVERSE_D(107, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) BOOST_PP_LIST_FOLD_LEFT_108(o, s, BOOST_PP_LIST_REVERSE_D(108, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) BOOST_PP_LIST_FOLD_LEFT_109(o, s, BOOST_PP_LIST_REVERSE_D(109, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) BOOST_PP_LIST_FOLD_LEFT_110(o, s, BOOST_PP_LIST_REVERSE_D(110, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) BOOST_PP_LIST_FOLD_LEFT_111(o, s, BOOST_PP_LIST_REVERSE_D(111, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) BOOST_PP_LIST_FOLD_LEFT_112(o, s, BOOST_PP_LIST_REVERSE_D(112, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) BOOST_PP_LIST_FOLD_LEFT_113(o, s, BOOST_PP_LIST_REVERSE_D(113, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) BOOST_PP_LIST_FOLD_LEFT_114(o, s, BOOST_PP_LIST_REVERSE_D(114, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) BOOST_PP_LIST_FOLD_LEFT_115(o, s, BOOST_PP_LIST_REVERSE_D(115, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) BOOST_PP_LIST_FOLD_LEFT_116(o, s, BOOST_PP_LIST_REVERSE_D(116, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) BOOST_PP_LIST_FOLD_LEFT_117(o, s, BOOST_PP_LIST_REVERSE_D(117, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) BOOST_PP_LIST_FOLD_LEFT_118(o, s, BOOST_PP_LIST_REVERSE_D(118, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) BOOST_PP_LIST_FOLD_LEFT_119(o, s, BOOST_PP_LIST_REVERSE_D(119, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) BOOST_PP_LIST_FOLD_LEFT_120(o, s, BOOST_PP_LIST_REVERSE_D(120, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) BOOST_PP_LIST_FOLD_LEFT_121(o, s, BOOST_PP_LIST_REVERSE_D(121, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) BOOST_PP_LIST_FOLD_LEFT_122(o, s, BOOST_PP_LIST_REVERSE_D(122, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) BOOST_PP_LIST_FOLD_LEFT_123(o, s, BOOST_PP_LIST_REVERSE_D(123, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) BOOST_PP_LIST_FOLD_LEFT_124(o, s, BOOST_PP_LIST_REVERSE_D(124, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) BOOST_PP_LIST_FOLD_LEFT_125(o, s, BOOST_PP_LIST_REVERSE_D(125, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) BOOST_PP_LIST_FOLD_LEFT_126(o, s, BOOST_PP_LIST_REVERSE_D(126, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) BOOST_PP_LIST_FOLD_LEFT_127(o, s, BOOST_PP_LIST_REVERSE_D(127, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) BOOST_PP_LIST_FOLD_LEFT_128(o, s, BOOST_PP_LIST_REVERSE_D(128, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) BOOST_PP_LIST_FOLD_LEFT_129(o, s, BOOST_PP_LIST_REVERSE_D(129, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) BOOST_PP_LIST_FOLD_LEFT_130(o, s, BOOST_PP_LIST_REVERSE_D(130, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) BOOST_PP_LIST_FOLD_LEFT_131(o, s, BOOST_PP_LIST_REVERSE_D(131, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) BOOST_PP_LIST_FOLD_LEFT_132(o, s, BOOST_PP_LIST_REVERSE_D(132, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) BOOST_PP_LIST_FOLD_LEFT_133(o, s, BOOST_PP_LIST_REVERSE_D(133, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) BOOST_PP_LIST_FOLD_LEFT_134(o, s, BOOST_PP_LIST_REVERSE_D(134, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) BOOST_PP_LIST_FOLD_LEFT_135(o, s, BOOST_PP_LIST_REVERSE_D(135, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) BOOST_PP_LIST_FOLD_LEFT_136(o, s, BOOST_PP_LIST_REVERSE_D(136, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) BOOST_PP_LIST_FOLD_LEFT_137(o, s, BOOST_PP_LIST_REVERSE_D(137, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) BOOST_PP_LIST_FOLD_LEFT_138(o, s, BOOST_PP_LIST_REVERSE_D(138, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) BOOST_PP_LIST_FOLD_LEFT_139(o, s, BOOST_PP_LIST_REVERSE_D(139, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) BOOST_PP_LIST_FOLD_LEFT_140(o, s, BOOST_PP_LIST_REVERSE_D(140, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) BOOST_PP_LIST_FOLD_LEFT_141(o, s, BOOST_PP_LIST_REVERSE_D(141, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) BOOST_PP_LIST_FOLD_LEFT_142(o, s, BOOST_PP_LIST_REVERSE_D(142, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) BOOST_PP_LIST_FOLD_LEFT_143(o, s, BOOST_PP_LIST_REVERSE_D(143, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) BOOST_PP_LIST_FOLD_LEFT_144(o, s, BOOST_PP_LIST_REVERSE_D(144, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) BOOST_PP_LIST_FOLD_LEFT_145(o, s, BOOST_PP_LIST_REVERSE_D(145, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) BOOST_PP_LIST_FOLD_LEFT_146(o, s, BOOST_PP_LIST_REVERSE_D(146, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) BOOST_PP_LIST_FOLD_LEFT_147(o, s, BOOST_PP_LIST_REVERSE_D(147, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) BOOST_PP_LIST_FOLD_LEFT_148(o, s, BOOST_PP_LIST_REVERSE_D(148, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) BOOST_PP_LIST_FOLD_LEFT_149(o, s, BOOST_PP_LIST_REVERSE_D(149, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) BOOST_PP_LIST_FOLD_LEFT_150(o, s, BOOST_PP_LIST_REVERSE_D(150, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) BOOST_PP_LIST_FOLD_LEFT_151(o, s, BOOST_PP_LIST_REVERSE_D(151, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) BOOST_PP_LIST_FOLD_LEFT_152(o, s, BOOST_PP_LIST_REVERSE_D(152, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) BOOST_PP_LIST_FOLD_LEFT_153(o, s, BOOST_PP_LIST_REVERSE_D(153, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) BOOST_PP_LIST_FOLD_LEFT_154(o, s, BOOST_PP_LIST_REVERSE_D(154, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) BOOST_PP_LIST_FOLD_LEFT_155(o, s, BOOST_PP_LIST_REVERSE_D(155, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) BOOST_PP_LIST_FOLD_LEFT_156(o, s, BOOST_PP_LIST_REVERSE_D(156, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) BOOST_PP_LIST_FOLD_LEFT_157(o, s, BOOST_PP_LIST_REVERSE_D(157, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) BOOST_PP_LIST_FOLD_LEFT_158(o, s, BOOST_PP_LIST_REVERSE_D(158, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) BOOST_PP_LIST_FOLD_LEFT_159(o, s, BOOST_PP_LIST_REVERSE_D(159, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) BOOST_PP_LIST_FOLD_LEFT_160(o, s, BOOST_PP_LIST_REVERSE_D(160, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) BOOST_PP_LIST_FOLD_LEFT_161(o, s, BOOST_PP_LIST_REVERSE_D(161, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) BOOST_PP_LIST_FOLD_LEFT_162(o, s, BOOST_PP_LIST_REVERSE_D(162, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) BOOST_PP_LIST_FOLD_LEFT_163(o, s, BOOST_PP_LIST_REVERSE_D(163, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) BOOST_PP_LIST_FOLD_LEFT_164(o, s, BOOST_PP_LIST_REVERSE_D(164, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) BOOST_PP_LIST_FOLD_LEFT_165(o, s, BOOST_PP_LIST_REVERSE_D(165, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) BOOST_PP_LIST_FOLD_LEFT_166(o, s, BOOST_PP_LIST_REVERSE_D(166, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) BOOST_PP_LIST_FOLD_LEFT_167(o, s, BOOST_PP_LIST_REVERSE_D(167, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) BOOST_PP_LIST_FOLD_LEFT_168(o, s, BOOST_PP_LIST_REVERSE_D(168, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) BOOST_PP_LIST_FOLD_LEFT_169(o, s, BOOST_PP_LIST_REVERSE_D(169, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) BOOST_PP_LIST_FOLD_LEFT_170(o, s, BOOST_PP_LIST_REVERSE_D(170, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) BOOST_PP_LIST_FOLD_LEFT_171(o, s, BOOST_PP_LIST_REVERSE_D(171, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) BOOST_PP_LIST_FOLD_LEFT_172(o, s, BOOST_PP_LIST_REVERSE_D(172, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) BOOST_PP_LIST_FOLD_LEFT_173(o, s, BOOST_PP_LIST_REVERSE_D(173, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) BOOST_PP_LIST_FOLD_LEFT_174(o, s, BOOST_PP_LIST_REVERSE_D(174, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) BOOST_PP_LIST_FOLD_LEFT_175(o, s, BOOST_PP_LIST_REVERSE_D(175, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) BOOST_PP_LIST_FOLD_LEFT_176(o, s, BOOST_PP_LIST_REVERSE_D(176, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) BOOST_PP_LIST_FOLD_LEFT_177(o, s, BOOST_PP_LIST_REVERSE_D(177, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) BOOST_PP_LIST_FOLD_LEFT_178(o, s, BOOST_PP_LIST_REVERSE_D(178, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) BOOST_PP_LIST_FOLD_LEFT_179(o, s, BOOST_PP_LIST_REVERSE_D(179, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) BOOST_PP_LIST_FOLD_LEFT_180(o, s, BOOST_PP_LIST_REVERSE_D(180, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) BOOST_PP_LIST_FOLD_LEFT_181(o, s, BOOST_PP_LIST_REVERSE_D(181, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) BOOST_PP_LIST_FOLD_LEFT_182(o, s, BOOST_PP_LIST_REVERSE_D(182, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) BOOST_PP_LIST_FOLD_LEFT_183(o, s, BOOST_PP_LIST_REVERSE_D(183, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) BOOST_PP_LIST_FOLD_LEFT_184(o, s, BOOST_PP_LIST_REVERSE_D(184, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) BOOST_PP_LIST_FOLD_LEFT_185(o, s, BOOST_PP_LIST_REVERSE_D(185, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) BOOST_PP_LIST_FOLD_LEFT_186(o, s, BOOST_PP_LIST_REVERSE_D(186, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) BOOST_PP_LIST_FOLD_LEFT_187(o, s, BOOST_PP_LIST_REVERSE_D(187, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) BOOST_PP_LIST_FOLD_LEFT_188(o, s, BOOST_PP_LIST_REVERSE_D(188, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) BOOST_PP_LIST_FOLD_LEFT_189(o, s, BOOST_PP_LIST_REVERSE_D(189, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) BOOST_PP_LIST_FOLD_LEFT_190(o, s, BOOST_PP_LIST_REVERSE_D(190, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) BOOST_PP_LIST_FOLD_LEFT_191(o, s, BOOST_PP_LIST_REVERSE_D(191, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) BOOST_PP_LIST_FOLD_LEFT_192(o, s, BOOST_PP_LIST_REVERSE_D(192, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) BOOST_PP_LIST_FOLD_LEFT_193(o, s, BOOST_PP_LIST_REVERSE_D(193, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) BOOST_PP_LIST_FOLD_LEFT_194(o, s, BOOST_PP_LIST_REVERSE_D(194, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) BOOST_PP_LIST_FOLD_LEFT_195(o, s, BOOST_PP_LIST_REVERSE_D(195, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) BOOST_PP_LIST_FOLD_LEFT_196(o, s, BOOST_PP_LIST_REVERSE_D(196, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) BOOST_PP_LIST_FOLD_LEFT_197(o, s, BOOST_PP_LIST_REVERSE_D(197, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) BOOST_PP_LIST_FOLD_LEFT_198(o, s, BOOST_PP_LIST_REVERSE_D(198, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) BOOST_PP_LIST_FOLD_LEFT_199(o, s, BOOST_PP_LIST_REVERSE_D(199, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) BOOST_PP_LIST_FOLD_LEFT_200(o, s, BOOST_PP_LIST_REVERSE_D(200, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) BOOST_PP_LIST_FOLD_LEFT_201(o, s, BOOST_PP_LIST_REVERSE_D(201, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) BOOST_PP_LIST_FOLD_LEFT_202(o, s, BOOST_PP_LIST_REVERSE_D(202, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) BOOST_PP_LIST_FOLD_LEFT_203(o, s, BOOST_PP_LIST_REVERSE_D(203, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) BOOST_PP_LIST_FOLD_LEFT_204(o, s, BOOST_PP_LIST_REVERSE_D(204, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) BOOST_PP_LIST_FOLD_LEFT_205(o, s, BOOST_PP_LIST_REVERSE_D(205, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) BOOST_PP_LIST_FOLD_LEFT_206(o, s, BOOST_PP_LIST_REVERSE_D(206, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) BOOST_PP_LIST_FOLD_LEFT_207(o, s, BOOST_PP_LIST_REVERSE_D(207, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) BOOST_PP_LIST_FOLD_LEFT_208(o, s, BOOST_PP_LIST_REVERSE_D(208, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) BOOST_PP_LIST_FOLD_LEFT_209(o, s, BOOST_PP_LIST_REVERSE_D(209, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) BOOST_PP_LIST_FOLD_LEFT_210(o, s, BOOST_PP_LIST_REVERSE_D(210, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) BOOST_PP_LIST_FOLD_LEFT_211(o, s, BOOST_PP_LIST_REVERSE_D(211, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) BOOST_PP_LIST_FOLD_LEFT_212(o, s, BOOST_PP_LIST_REVERSE_D(212, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) BOOST_PP_LIST_FOLD_LEFT_213(o, s, BOOST_PP_LIST_REVERSE_D(213, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) BOOST_PP_LIST_FOLD_LEFT_214(o, s, BOOST_PP_LIST_REVERSE_D(214, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) BOOST_PP_LIST_FOLD_LEFT_215(o, s, BOOST_PP_LIST_REVERSE_D(215, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) BOOST_PP_LIST_FOLD_LEFT_216(o, s, BOOST_PP_LIST_REVERSE_D(216, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) BOOST_PP_LIST_FOLD_LEFT_217(o, s, BOOST_PP_LIST_REVERSE_D(217, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) BOOST_PP_LIST_FOLD_LEFT_218(o, s, BOOST_PP_LIST_REVERSE_D(218, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) BOOST_PP_LIST_FOLD_LEFT_219(o, s, BOOST_PP_LIST_REVERSE_D(219, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) BOOST_PP_LIST_FOLD_LEFT_220(o, s, BOOST_PP_LIST_REVERSE_D(220, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) BOOST_PP_LIST_FOLD_LEFT_221(o, s, BOOST_PP_LIST_REVERSE_D(221, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) BOOST_PP_LIST_FOLD_LEFT_222(o, s, BOOST_PP_LIST_REVERSE_D(222, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) BOOST_PP_LIST_FOLD_LEFT_223(o, s, BOOST_PP_LIST_REVERSE_D(223, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) BOOST_PP_LIST_FOLD_LEFT_224(o, s, BOOST_PP_LIST_REVERSE_D(224, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) BOOST_PP_LIST_FOLD_LEFT_225(o, s, BOOST_PP_LIST_REVERSE_D(225, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) BOOST_PP_LIST_FOLD_LEFT_226(o, s, BOOST_PP_LIST_REVERSE_D(226, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) BOOST_PP_LIST_FOLD_LEFT_227(o, s, BOOST_PP_LIST_REVERSE_D(227, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) BOOST_PP_LIST_FOLD_LEFT_228(o, s, BOOST_PP_LIST_REVERSE_D(228, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) BOOST_PP_LIST_FOLD_LEFT_229(o, s, BOOST_PP_LIST_REVERSE_D(229, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) BOOST_PP_LIST_FOLD_LEFT_230(o, s, BOOST_PP_LIST_REVERSE_D(230, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) BOOST_PP_LIST_FOLD_LEFT_231(o, s, BOOST_PP_LIST_REVERSE_D(231, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) BOOST_PP_LIST_FOLD_LEFT_232(o, s, BOOST_PP_LIST_REVERSE_D(232, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) BOOST_PP_LIST_FOLD_LEFT_233(o, s, BOOST_PP_LIST_REVERSE_D(233, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) BOOST_PP_LIST_FOLD_LEFT_234(o, s, BOOST_PP_LIST_REVERSE_D(234, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) BOOST_PP_LIST_FOLD_LEFT_235(o, s, BOOST_PP_LIST_REVERSE_D(235, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) BOOST_PP_LIST_FOLD_LEFT_236(o, s, BOOST_PP_LIST_REVERSE_D(236, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) BOOST_PP_LIST_FOLD_LEFT_237(o, s, BOOST_PP_LIST_REVERSE_D(237, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) BOOST_PP_LIST_FOLD_LEFT_238(o, s, BOOST_PP_LIST_REVERSE_D(238, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) BOOST_PP_LIST_FOLD_LEFT_239(o, s, BOOST_PP_LIST_REVERSE_D(239, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) BOOST_PP_LIST_FOLD_LEFT_240(o, s, BOOST_PP_LIST_REVERSE_D(240, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) BOOST_PP_LIST_FOLD_LEFT_241(o, s, BOOST_PP_LIST_REVERSE_D(241, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) BOOST_PP_LIST_FOLD_LEFT_242(o, s, BOOST_PP_LIST_REVERSE_D(242, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) BOOST_PP_LIST_FOLD_LEFT_243(o, s, BOOST_PP_LIST_REVERSE_D(243, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) BOOST_PP_LIST_FOLD_LEFT_244(o, s, BOOST_PP_LIST_REVERSE_D(244, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) BOOST_PP_LIST_FOLD_LEFT_245(o, s, BOOST_PP_LIST_REVERSE_D(245, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) BOOST_PP_LIST_FOLD_LEFT_246(o, s, BOOST_PP_LIST_REVERSE_D(246, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) BOOST_PP_LIST_FOLD_LEFT_247(o, s, BOOST_PP_LIST_REVERSE_D(247, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) BOOST_PP_LIST_FOLD_LEFT_248(o, s, BOOST_PP_LIST_REVERSE_D(248, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) BOOST_PP_LIST_FOLD_LEFT_249(o, s, BOOST_PP_LIST_REVERSE_D(249, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) BOOST_PP_LIST_FOLD_LEFT_250(o, s, BOOST_PP_LIST_REVERSE_D(250, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) BOOST_PP_LIST_FOLD_LEFT_251(o, s, BOOST_PP_LIST_REVERSE_D(251, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) BOOST_PP_LIST_FOLD_LEFT_252(o, s, BOOST_PP_LIST_REVERSE_D(252, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) BOOST_PP_LIST_FOLD_LEFT_253(o, s, BOOST_PP_LIST_REVERSE_D(253, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) BOOST_PP_LIST_FOLD_LEFT_254(o, s, BOOST_PP_LIST_REVERSE_D(254, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) BOOST_PP_LIST_FOLD_LEFT_255(o, s, BOOST_PP_LIST_REVERSE_D(255, l))
-# define BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) BOOST_PP_LIST_FOLD_LEFT_256(o, s, BOOST_PP_LIST_REVERSE_D(256, l))
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/fold_left.hpp b/libcutl/cutl/details/boost/preprocessor/list/fold_left.hpp
deleted file mode 100644
index 4f16e6d..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/fold_left.hpp
+++ /dev/null
@@ -1,303 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
-# define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/control/while.hpp>
-# include <cutl/details/boost/preprocessor/debug/error.hpp>
-# include <cutl/details/boost/preprocessor/detail/auto_rec.hpp>
-#
-# /* BOOST_PP_LIST_FOLD_LEFT */
-#
-# if 0
-# define BOOST_PP_LIST_FOLD_LEFT(op, state, list)
-# endif
-#
-# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
-#
-# define BOOST_PP_LIST_FOLD_LEFT_257(o, s, l) BOOST_PP_ERROR(0x0004)
-#
-# define BOOST_PP_LIST_FOLD_LEFT_D(d, o, s, l) BOOST_PP_LIST_FOLD_LEFT_ ## d(o, s, l)
-# define BOOST_PP_LIST_FOLD_LEFT_2ND BOOST_PP_LIST_FOLD_LEFT
-# define BOOST_PP_LIST_FOLD_LEFT_2ND_D BOOST_PP_LIST_FOLD_LEFT_D
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# include <cutl/details/boost/preprocessor/list/detail/edg/fold_left.hpp>
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
-# include <cutl/details/boost/preprocessor/list/detail/dmc/fold_left.hpp>
-# else
-# include <cutl/details/boost/preprocessor/list/detail/fold_left.hpp>
-# endif
-#
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
-#
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) 0
-# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) 0
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/fold_right.hpp b/libcutl/cutl/details/boost/preprocessor/list/fold_right.hpp
deleted file mode 100644
index 7187a21..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/fold_right.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
-# define BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/control/while.hpp>
-# include <cutl/details/boost/preprocessor/debug/error.hpp>
-# include <cutl/details/boost/preprocessor/detail/auto_rec.hpp>
-#
-# if 0
-# define BOOST_PP_LIST_FOLD_RIGHT(op, state, list)
-# endif
-#
-# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
-#
-# define BOOST_PP_LIST_FOLD_RIGHT_257(o, s, l) BOOST_PP_ERROR(0x0004)
-#
-# define BOOST_PP_LIST_FOLD_RIGHT_D(d, o, s, l) BOOST_PP_LIST_FOLD_RIGHT_ ## d(o, s, l)
-# define BOOST_PP_LIST_FOLD_RIGHT_2ND BOOST_PP_LIST_FOLD_RIGHT
-# define BOOST_PP_LIST_FOLD_RIGHT_2ND_D BOOST_PP_LIST_FOLD_RIGHT_D
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# include <cutl/details/boost/preprocessor/list/detail/edg/fold_right.hpp>
-# else
-# include <cutl/details/boost/preprocessor/list/detail/fold_right.hpp>
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/for_each_i.hpp b/libcutl/cutl/details/boost/preprocessor/list/for_each_i.hpp
deleted file mode 100644
index 8009d2a..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/for_each_i.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_LIST_FOR_EACH_I_HPP
-# define BOOST_PREPROCESSOR_LIST_LIST_FOR_EACH_I_HPP
-#
-# include <cutl/details/boost/preprocessor/arithmetic/inc.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/list/adt.hpp>
-# include <cutl/details/boost/preprocessor/repetition/for.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-# include <cutl/details/boost/preprocessor/tuple/rem.hpp>
-#
-# /* BOOST_PP_LIST_FOR_EACH_I */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_LIST_FOR_EACH_I(macro, data, list) BOOST_PP_FOR((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
-# else
-# define BOOST_PP_LIST_FOR_EACH_I(macro, data, list) BOOST_PP_LIST_FOR_EACH_I_I(macro, data, list)
-# define BOOST_PP_LIST_FOR_EACH_I_I(macro, data, list) BOOST_PP_FOR((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
-# endif
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
-# define BOOST_PP_LIST_FOR_EACH_I_P(r, x) BOOST_PP_LIST_FOR_EACH_I_P_D x
-# define BOOST_PP_LIST_FOR_EACH_I_P_D(m, d, l, i) BOOST_PP_LIST_IS_CONS(l)
-# else
-# define BOOST_PP_LIST_FOR_EACH_I_P(r, x) BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(4, 2, x))
-# endif
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_LIST_FOR_EACH_I_O(r, x) BOOST_PP_LIST_FOR_EACH_I_O_D x
-# define BOOST_PP_LIST_FOR_EACH_I_O_D(m, d, l, i) (m, d, BOOST_PP_LIST_REST(l), BOOST_PP_INC(i))
-# else
-# define BOOST_PP_LIST_FOR_EACH_I_O(r, x) (BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(4, 2, x)), BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(4, 3, x)))
-# endif
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_LIST_FOR_EACH_I_M(r, x) BOOST_PP_LIST_FOR_EACH_I_M_D(r, BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
-# else
-# define BOOST_PP_LIST_FOR_EACH_I_M(r, x) BOOST_PP_LIST_FOR_EACH_I_M_I(r, BOOST_PP_TUPLE_REM_4 x)
-# define BOOST_PP_LIST_FOR_EACH_I_M_I(r, x_e) BOOST_PP_LIST_FOR_EACH_I_M_D(r, x_e)
-# endif
-#
-# define BOOST_PP_LIST_FOR_EACH_I_M_D(r, m, d, l, i) m(r, d, i, BOOST_PP_LIST_FIRST(l))
-#
-# /* BOOST_PP_LIST_FOR_EACH_I_R */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_LIST_FOR_EACH_I_R(r, macro, data, list) BOOST_PP_FOR_ ## r((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
-# else
-# define BOOST_PP_LIST_FOR_EACH_I_R(r, macro, data, list) BOOST_PP_LIST_FOR_EACH_I_R_I(r, macro, data, list)
-# define BOOST_PP_LIST_FOR_EACH_I_R_I(r, macro, data, list) BOOST_PP_FOR_ ## r((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/reverse.hpp b/libcutl/cutl/details/boost/preprocessor/list/reverse.hpp
deleted file mode 100644
index 29a01b3..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/reverse.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_REVERSE_HPP
-# define BOOST_PREPROCESSOR_LIST_REVERSE_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/list/fold_left.hpp>
-#
-# /* BOOST_PP_LIST_REVERSE */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
-# else
-# define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_REVERSE_I(list)
-# define BOOST_PP_LIST_REVERSE_I(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
-# endif
-#
-# define BOOST_PP_LIST_REVERSE_O(d, s, x) (x, s)
-#
-# /* BOOST_PP_LIST_REVERSE_D */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
-# else
-# define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_REVERSE_D_I(d, list)
-# define BOOST_PP_LIST_REVERSE_D_I(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/list/transform.hpp b/libcutl/cutl/details/boost/preprocessor/list/transform.hpp
deleted file mode 100644
index 03ad4d3..0000000
--- a/libcutl/cutl/details/boost/preprocessor/list/transform.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LIST_TRANSFORM_HPP
-# define BOOST_PREPROCESSOR_LIST_TRANSFORM_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/list/fold_right.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-# include <cutl/details/boost/preprocessor/tuple/rem.hpp>
-#
-# /* BOOST_PP_LIST_TRANSFORM */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_LIST_TRANSFORM(op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
-# else
-# define BOOST_PP_LIST_TRANSFORM(op, data, list) BOOST_PP_LIST_TRANSFORM_I(op, data, list)
-# define BOOST_PP_LIST_TRANSFORM_I(op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
-# endif
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_LIST_TRANSFORM_O(d, odr, elem) BOOST_PP_LIST_TRANSFORM_O_D(d, BOOST_PP_TUPLE_ELEM(3, 0, odr), BOOST_PP_TUPLE_ELEM(3, 1, odr), BOOST_PP_TUPLE_ELEM(3, 2, odr), elem)
-# else
-# define BOOST_PP_LIST_TRANSFORM_O(d, odr, elem) BOOST_PP_LIST_TRANSFORM_O_I(d, BOOST_PP_TUPLE_REM_3 odr, elem)
-# define BOOST_PP_LIST_TRANSFORM_O_I(d, im, elem) BOOST_PP_LIST_TRANSFORM_O_D(d, im, elem)
-# endif
-#
-# define BOOST_PP_LIST_TRANSFORM_O_D(d, op, data, res, elem) (op, data, (op(d, data, elem), res))
-#
-# /* BOOST_PP_LIST_TRANSFORM_D */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_LIST_TRANSFORM_D(d, op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
-# else
-# define BOOST_PP_LIST_TRANSFORM_D(d, op, data, list) BOOST_PP_LIST_TRANSFORM_D_I(d, op, data, list)
-# define BOOST_PP_LIST_TRANSFORM_D_I(d, op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/logical/and.hpp b/libcutl/cutl/details/boost/preprocessor/logical/and.hpp
deleted file mode 100644
index b127e71..0000000
--- a/libcutl/cutl/details/boost/preprocessor/logical/and.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LOGICAL_AND_HPP
-# define BOOST_PREPROCESSOR_LOGICAL_AND_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/logical/bool.hpp>
-# include <cutl/details/boost/preprocessor/logical/bitand.hpp>
-#
-# /* BOOST_PP_AND */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_AND(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
-# else
-# define BOOST_PP_AND(p, q) BOOST_PP_AND_I(p, q)
-# define BOOST_PP_AND_I(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/logical/bitand.hpp b/libcutl/cutl/details/boost/preprocessor/logical/bitand.hpp
deleted file mode 100644
index 44a14da..0000000
--- a/libcutl/cutl/details/boost/preprocessor/logical/bitand.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LOGICAL_BITAND_HPP
-# define BOOST_PREPROCESSOR_LOGICAL_BITAND_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_BITAND */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_BITAND(x, y) BOOST_PP_BITAND_I(x, y)
-# else
-# define BOOST_PP_BITAND(x, y) BOOST_PP_BITAND_OO((x, y))
-# define BOOST_PP_BITAND_OO(par) BOOST_PP_BITAND_I ## par
-# endif
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_BITAND_I(x, y) BOOST_PP_BITAND_ ## x ## y
-# else
-# define BOOST_PP_BITAND_I(x, y) BOOST_PP_BITAND_ID(BOOST_PP_BITAND_ ## x ## y)
-# define BOOST_PP_BITAND_ID(res) res
-# endif
-#
-# define BOOST_PP_BITAND_00 0
-# define BOOST_PP_BITAND_01 0
-# define BOOST_PP_BITAND_10 0
-# define BOOST_PP_BITAND_11 1
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/logical/bool.hpp b/libcutl/cutl/details/boost/preprocessor/logical/bool.hpp
deleted file mode 100644
index 7d09072..0000000
--- a/libcutl/cutl/details/boost/preprocessor/logical/bool.hpp
+++ /dev/null
@@ -1,288 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
-# define BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_BOOL */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_BOOL(x) BOOST_PP_BOOL_I(x)
-# else
-# define BOOST_PP_BOOL(x) BOOST_PP_BOOL_OO((x))
-# define BOOST_PP_BOOL_OO(par) BOOST_PP_BOOL_I ## par
-# endif
-#
-# define BOOST_PP_BOOL_I(x) BOOST_PP_BOOL_ ## x
-#
-# define BOOST_PP_BOOL_0 0
-# define BOOST_PP_BOOL_1 1
-# define BOOST_PP_BOOL_2 1
-# define BOOST_PP_BOOL_3 1
-# define BOOST_PP_BOOL_4 1
-# define BOOST_PP_BOOL_5 1
-# define BOOST_PP_BOOL_6 1
-# define BOOST_PP_BOOL_7 1
-# define BOOST_PP_BOOL_8 1
-# define BOOST_PP_BOOL_9 1
-# define BOOST_PP_BOOL_10 1
-# define BOOST_PP_BOOL_11 1
-# define BOOST_PP_BOOL_12 1
-# define BOOST_PP_BOOL_13 1
-# define BOOST_PP_BOOL_14 1
-# define BOOST_PP_BOOL_15 1
-# define BOOST_PP_BOOL_16 1
-# define BOOST_PP_BOOL_17 1
-# define BOOST_PP_BOOL_18 1
-# define BOOST_PP_BOOL_19 1
-# define BOOST_PP_BOOL_20 1
-# define BOOST_PP_BOOL_21 1
-# define BOOST_PP_BOOL_22 1
-# define BOOST_PP_BOOL_23 1
-# define BOOST_PP_BOOL_24 1
-# define BOOST_PP_BOOL_25 1
-# define BOOST_PP_BOOL_26 1
-# define BOOST_PP_BOOL_27 1
-# define BOOST_PP_BOOL_28 1
-# define BOOST_PP_BOOL_29 1
-# define BOOST_PP_BOOL_30 1
-# define BOOST_PP_BOOL_31 1
-# define BOOST_PP_BOOL_32 1
-# define BOOST_PP_BOOL_33 1
-# define BOOST_PP_BOOL_34 1
-# define BOOST_PP_BOOL_35 1
-# define BOOST_PP_BOOL_36 1
-# define BOOST_PP_BOOL_37 1
-# define BOOST_PP_BOOL_38 1
-# define BOOST_PP_BOOL_39 1
-# define BOOST_PP_BOOL_40 1
-# define BOOST_PP_BOOL_41 1
-# define BOOST_PP_BOOL_42 1
-# define BOOST_PP_BOOL_43 1
-# define BOOST_PP_BOOL_44 1
-# define BOOST_PP_BOOL_45 1
-# define BOOST_PP_BOOL_46 1
-# define BOOST_PP_BOOL_47 1
-# define BOOST_PP_BOOL_48 1
-# define BOOST_PP_BOOL_49 1
-# define BOOST_PP_BOOL_50 1
-# define BOOST_PP_BOOL_51 1
-# define BOOST_PP_BOOL_52 1
-# define BOOST_PP_BOOL_53 1
-# define BOOST_PP_BOOL_54 1
-# define BOOST_PP_BOOL_55 1
-# define BOOST_PP_BOOL_56 1
-# define BOOST_PP_BOOL_57 1
-# define BOOST_PP_BOOL_58 1
-# define BOOST_PP_BOOL_59 1
-# define BOOST_PP_BOOL_60 1
-# define BOOST_PP_BOOL_61 1
-# define BOOST_PP_BOOL_62 1
-# define BOOST_PP_BOOL_63 1
-# define BOOST_PP_BOOL_64 1
-# define BOOST_PP_BOOL_65 1
-# define BOOST_PP_BOOL_66 1
-# define BOOST_PP_BOOL_67 1
-# define BOOST_PP_BOOL_68 1
-# define BOOST_PP_BOOL_69 1
-# define BOOST_PP_BOOL_70 1
-# define BOOST_PP_BOOL_71 1
-# define BOOST_PP_BOOL_72 1
-# define BOOST_PP_BOOL_73 1
-# define BOOST_PP_BOOL_74 1
-# define BOOST_PP_BOOL_75 1
-# define BOOST_PP_BOOL_76 1
-# define BOOST_PP_BOOL_77 1
-# define BOOST_PP_BOOL_78 1
-# define BOOST_PP_BOOL_79 1
-# define BOOST_PP_BOOL_80 1
-# define BOOST_PP_BOOL_81 1
-# define BOOST_PP_BOOL_82 1
-# define BOOST_PP_BOOL_83 1
-# define BOOST_PP_BOOL_84 1
-# define BOOST_PP_BOOL_85 1
-# define BOOST_PP_BOOL_86 1
-# define BOOST_PP_BOOL_87 1
-# define BOOST_PP_BOOL_88 1
-# define BOOST_PP_BOOL_89 1
-# define BOOST_PP_BOOL_90 1
-# define BOOST_PP_BOOL_91 1
-# define BOOST_PP_BOOL_92 1
-# define BOOST_PP_BOOL_93 1
-# define BOOST_PP_BOOL_94 1
-# define BOOST_PP_BOOL_95 1
-# define BOOST_PP_BOOL_96 1
-# define BOOST_PP_BOOL_97 1
-# define BOOST_PP_BOOL_98 1
-# define BOOST_PP_BOOL_99 1
-# define BOOST_PP_BOOL_100 1
-# define BOOST_PP_BOOL_101 1
-# define BOOST_PP_BOOL_102 1
-# define BOOST_PP_BOOL_103 1
-# define BOOST_PP_BOOL_104 1
-# define BOOST_PP_BOOL_105 1
-# define BOOST_PP_BOOL_106 1
-# define BOOST_PP_BOOL_107 1
-# define BOOST_PP_BOOL_108 1
-# define BOOST_PP_BOOL_109 1
-# define BOOST_PP_BOOL_110 1
-# define BOOST_PP_BOOL_111 1
-# define BOOST_PP_BOOL_112 1
-# define BOOST_PP_BOOL_113 1
-# define BOOST_PP_BOOL_114 1
-# define BOOST_PP_BOOL_115 1
-# define BOOST_PP_BOOL_116 1
-# define BOOST_PP_BOOL_117 1
-# define BOOST_PP_BOOL_118 1
-# define BOOST_PP_BOOL_119 1
-# define BOOST_PP_BOOL_120 1
-# define BOOST_PP_BOOL_121 1
-# define BOOST_PP_BOOL_122 1
-# define BOOST_PP_BOOL_123 1
-# define BOOST_PP_BOOL_124 1
-# define BOOST_PP_BOOL_125 1
-# define BOOST_PP_BOOL_126 1
-# define BOOST_PP_BOOL_127 1
-# define BOOST_PP_BOOL_128 1
-# define BOOST_PP_BOOL_129 1
-# define BOOST_PP_BOOL_130 1
-# define BOOST_PP_BOOL_131 1
-# define BOOST_PP_BOOL_132 1
-# define BOOST_PP_BOOL_133 1
-# define BOOST_PP_BOOL_134 1
-# define BOOST_PP_BOOL_135 1
-# define BOOST_PP_BOOL_136 1
-# define BOOST_PP_BOOL_137 1
-# define BOOST_PP_BOOL_138 1
-# define BOOST_PP_BOOL_139 1
-# define BOOST_PP_BOOL_140 1
-# define BOOST_PP_BOOL_141 1
-# define BOOST_PP_BOOL_142 1
-# define BOOST_PP_BOOL_143 1
-# define BOOST_PP_BOOL_144 1
-# define BOOST_PP_BOOL_145 1
-# define BOOST_PP_BOOL_146 1
-# define BOOST_PP_BOOL_147 1
-# define BOOST_PP_BOOL_148 1
-# define BOOST_PP_BOOL_149 1
-# define BOOST_PP_BOOL_150 1
-# define BOOST_PP_BOOL_151 1
-# define BOOST_PP_BOOL_152 1
-# define BOOST_PP_BOOL_153 1
-# define BOOST_PP_BOOL_154 1
-# define BOOST_PP_BOOL_155 1
-# define BOOST_PP_BOOL_156 1
-# define BOOST_PP_BOOL_157 1
-# define BOOST_PP_BOOL_158 1
-# define BOOST_PP_BOOL_159 1
-# define BOOST_PP_BOOL_160 1
-# define BOOST_PP_BOOL_161 1
-# define BOOST_PP_BOOL_162 1
-# define BOOST_PP_BOOL_163 1
-# define BOOST_PP_BOOL_164 1
-# define BOOST_PP_BOOL_165 1
-# define BOOST_PP_BOOL_166 1
-# define BOOST_PP_BOOL_167 1
-# define BOOST_PP_BOOL_168 1
-# define BOOST_PP_BOOL_169 1
-# define BOOST_PP_BOOL_170 1
-# define BOOST_PP_BOOL_171 1
-# define BOOST_PP_BOOL_172 1
-# define BOOST_PP_BOOL_173 1
-# define BOOST_PP_BOOL_174 1
-# define BOOST_PP_BOOL_175 1
-# define BOOST_PP_BOOL_176 1
-# define BOOST_PP_BOOL_177 1
-# define BOOST_PP_BOOL_178 1
-# define BOOST_PP_BOOL_179 1
-# define BOOST_PP_BOOL_180 1
-# define BOOST_PP_BOOL_181 1
-# define BOOST_PP_BOOL_182 1
-# define BOOST_PP_BOOL_183 1
-# define BOOST_PP_BOOL_184 1
-# define BOOST_PP_BOOL_185 1
-# define BOOST_PP_BOOL_186 1
-# define BOOST_PP_BOOL_187 1
-# define BOOST_PP_BOOL_188 1
-# define BOOST_PP_BOOL_189 1
-# define BOOST_PP_BOOL_190 1
-# define BOOST_PP_BOOL_191 1
-# define BOOST_PP_BOOL_192 1
-# define BOOST_PP_BOOL_193 1
-# define BOOST_PP_BOOL_194 1
-# define BOOST_PP_BOOL_195 1
-# define BOOST_PP_BOOL_196 1
-# define BOOST_PP_BOOL_197 1
-# define BOOST_PP_BOOL_198 1
-# define BOOST_PP_BOOL_199 1
-# define BOOST_PP_BOOL_200 1
-# define BOOST_PP_BOOL_201 1
-# define BOOST_PP_BOOL_202 1
-# define BOOST_PP_BOOL_203 1
-# define BOOST_PP_BOOL_204 1
-# define BOOST_PP_BOOL_205 1
-# define BOOST_PP_BOOL_206 1
-# define BOOST_PP_BOOL_207 1
-# define BOOST_PP_BOOL_208 1
-# define BOOST_PP_BOOL_209 1
-# define BOOST_PP_BOOL_210 1
-# define BOOST_PP_BOOL_211 1
-# define BOOST_PP_BOOL_212 1
-# define BOOST_PP_BOOL_213 1
-# define BOOST_PP_BOOL_214 1
-# define BOOST_PP_BOOL_215 1
-# define BOOST_PP_BOOL_216 1
-# define BOOST_PP_BOOL_217 1
-# define BOOST_PP_BOOL_218 1
-# define BOOST_PP_BOOL_219 1
-# define BOOST_PP_BOOL_220 1
-# define BOOST_PP_BOOL_221 1
-# define BOOST_PP_BOOL_222 1
-# define BOOST_PP_BOOL_223 1
-# define BOOST_PP_BOOL_224 1
-# define BOOST_PP_BOOL_225 1
-# define BOOST_PP_BOOL_226 1
-# define BOOST_PP_BOOL_227 1
-# define BOOST_PP_BOOL_228 1
-# define BOOST_PP_BOOL_229 1
-# define BOOST_PP_BOOL_230 1
-# define BOOST_PP_BOOL_231 1
-# define BOOST_PP_BOOL_232 1
-# define BOOST_PP_BOOL_233 1
-# define BOOST_PP_BOOL_234 1
-# define BOOST_PP_BOOL_235 1
-# define BOOST_PP_BOOL_236 1
-# define BOOST_PP_BOOL_237 1
-# define BOOST_PP_BOOL_238 1
-# define BOOST_PP_BOOL_239 1
-# define BOOST_PP_BOOL_240 1
-# define BOOST_PP_BOOL_241 1
-# define BOOST_PP_BOOL_242 1
-# define BOOST_PP_BOOL_243 1
-# define BOOST_PP_BOOL_244 1
-# define BOOST_PP_BOOL_245 1
-# define BOOST_PP_BOOL_246 1
-# define BOOST_PP_BOOL_247 1
-# define BOOST_PP_BOOL_248 1
-# define BOOST_PP_BOOL_249 1
-# define BOOST_PP_BOOL_250 1
-# define BOOST_PP_BOOL_251 1
-# define BOOST_PP_BOOL_252 1
-# define BOOST_PP_BOOL_253 1
-# define BOOST_PP_BOOL_254 1
-# define BOOST_PP_BOOL_255 1
-# define BOOST_PP_BOOL_256 1
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/logical/compl.hpp b/libcutl/cutl/details/boost/preprocessor/logical/compl.hpp
deleted file mode 100644
index 40baefa..0000000
--- a/libcutl/cutl/details/boost/preprocessor/logical/compl.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_LOGICAL_COMPL_HPP
-# define BOOST_PREPROCESSOR_LOGICAL_COMPL_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_COMPL */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_COMPL(x) BOOST_PP_COMPL_I(x)
-# else
-# define BOOST_PP_COMPL(x) BOOST_PP_COMPL_OO((x))
-# define BOOST_PP_COMPL_OO(par) BOOST_PP_COMPL_I ## par
-# endif
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_COMPL_I(x) BOOST_PP_COMPL_ ## x
-# else
-# define BOOST_PP_COMPL_I(x) BOOST_PP_COMPL_ID(BOOST_PP_COMPL_ ## x)
-# define BOOST_PP_COMPL_ID(id) id
-# endif
-#
-# define BOOST_PP_COMPL_0 1
-# define BOOST_PP_COMPL_1 0
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/punctuation/comma.hpp b/libcutl/cutl/details/boost/preprocessor/punctuation/comma.hpp
deleted file mode 100644
index 38c2e0e..0000000
--- a/libcutl/cutl/details/boost/preprocessor/punctuation/comma.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_PUNCTUATION_COMMA_HPP
-# define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_HPP
-#
-# /* BOOST_PP_COMMA */
-#
-# define BOOST_PP_COMMA() ,
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/punctuation/comma_if.hpp b/libcutl/cutl/details/boost/preprocessor/punctuation/comma_if.hpp
deleted file mode 100644
index 96937a5..0000000
--- a/libcutl/cutl/details/boost/preprocessor/punctuation/comma_if.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
-# define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/control/if.hpp>
-# include <cutl/details/boost/preprocessor/facilities/empty.hpp>
-# include <cutl/details/boost/preprocessor/punctuation/comma.hpp>
-#
-# /* BOOST_PP_COMMA_IF */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_COMMA_IF(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
-# else
-# define BOOST_PP_COMMA_IF(cond) BOOST_PP_COMMA_IF_I(cond)
-# define BOOST_PP_COMMA_IF_I(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repeat.hpp b/libcutl/cutl/details/boost/preprocessor/repeat.hpp
deleted file mode 100644
index 5d3db4d..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repeat.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPEAT_HPP
-# define BOOST_PREPROCESSOR_REPEAT_HPP
-#
-# include <cutl/details/boost/preprocessor/repetition/repeat.hpp>
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repetition/detail/dmc/for.hpp b/libcutl/cutl/details/boost/preprocessor/repetition/detail/dmc/for.hpp
deleted file mode 100644
index af6672d..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repetition/detail/dmc/for.hpp
+++ /dev/null
@@ -1,536 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
-# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
-#
-# include <cutl/details/boost/preprocessor/control/expr_iif.hpp>
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-# include <cutl/details/boost/preprocessor/logical/bool.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_C(BOOST_PP_BOOL(p##(2, s)), s, p, o, m)
-# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_C(BOOST_PP_BOOL(p##(3, s)), s, p, o, m)
-# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_C(BOOST_PP_BOOL(p##(4, s)), s, p, o, m)
-# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_C(BOOST_PP_BOOL(p##(5, s)), s, p, o, m)
-# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_C(BOOST_PP_BOOL(p##(6, s)), s, p, o, m)
-# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_C(BOOST_PP_BOOL(p##(7, s)), s, p, o, m)
-# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_C(BOOST_PP_BOOL(p##(8, s)), s, p, o, m)
-# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_C(BOOST_PP_BOOL(p##(9, s)), s, p, o, m)
-# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_C(BOOST_PP_BOOL(p##(10, s)), s, p, o, m)
-# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_C(BOOST_PP_BOOL(p##(11, s)), s, p, o, m)
-# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_C(BOOST_PP_BOOL(p##(12, s)), s, p, o, m)
-# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_C(BOOST_PP_BOOL(p##(13, s)), s, p, o, m)
-# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_C(BOOST_PP_BOOL(p##(14, s)), s, p, o, m)
-# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_C(BOOST_PP_BOOL(p##(15, s)), s, p, o, m)
-# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_C(BOOST_PP_BOOL(p##(16, s)), s, p, o, m)
-# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_C(BOOST_PP_BOOL(p##(17, s)), s, p, o, m)
-# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_C(BOOST_PP_BOOL(p##(18, s)), s, p, o, m)
-# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_C(BOOST_PP_BOOL(p##(19, s)), s, p, o, m)
-# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_C(BOOST_PP_BOOL(p##(20, s)), s, p, o, m)
-# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_C(BOOST_PP_BOOL(p##(21, s)), s, p, o, m)
-# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_C(BOOST_PP_BOOL(p##(22, s)), s, p, o, m)
-# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_C(BOOST_PP_BOOL(p##(23, s)), s, p, o, m)
-# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_C(BOOST_PP_BOOL(p##(24, s)), s, p, o, m)
-# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_C(BOOST_PP_BOOL(p##(25, s)), s, p, o, m)
-# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_C(BOOST_PP_BOOL(p##(26, s)), s, p, o, m)
-# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_C(BOOST_PP_BOOL(p##(27, s)), s, p, o, m)
-# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_C(BOOST_PP_BOOL(p##(28, s)), s, p, o, m)
-# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_C(BOOST_PP_BOOL(p##(29, s)), s, p, o, m)
-# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_C(BOOST_PP_BOOL(p##(30, s)), s, p, o, m)
-# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_C(BOOST_PP_BOOL(p##(31, s)), s, p, o, m)
-# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_C(BOOST_PP_BOOL(p##(32, s)), s, p, o, m)
-# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_C(BOOST_PP_BOOL(p##(33, s)), s, p, o, m)
-# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_C(BOOST_PP_BOOL(p##(34, s)), s, p, o, m)
-# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_C(BOOST_PP_BOOL(p##(35, s)), s, p, o, m)
-# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_C(BOOST_PP_BOOL(p##(36, s)), s, p, o, m)
-# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_C(BOOST_PP_BOOL(p##(37, s)), s, p, o, m)
-# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_C(BOOST_PP_BOOL(p##(38, s)), s, p, o, m)
-# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_C(BOOST_PP_BOOL(p##(39, s)), s, p, o, m)
-# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_C(BOOST_PP_BOOL(p##(40, s)), s, p, o, m)
-# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_C(BOOST_PP_BOOL(p##(41, s)), s, p, o, m)
-# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_C(BOOST_PP_BOOL(p##(42, s)), s, p, o, m)
-# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_C(BOOST_PP_BOOL(p##(43, s)), s, p, o, m)
-# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_C(BOOST_PP_BOOL(p##(44, s)), s, p, o, m)
-# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_C(BOOST_PP_BOOL(p##(45, s)), s, p, o, m)
-# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_C(BOOST_PP_BOOL(p##(46, s)), s, p, o, m)
-# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_C(BOOST_PP_BOOL(p##(47, s)), s, p, o, m)
-# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_C(BOOST_PP_BOOL(p##(48, s)), s, p, o, m)
-# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_C(BOOST_PP_BOOL(p##(49, s)), s, p, o, m)
-# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_C(BOOST_PP_BOOL(p##(50, s)), s, p, o, m)
-# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_C(BOOST_PP_BOOL(p##(51, s)), s, p, o, m)
-# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_C(BOOST_PP_BOOL(p##(52, s)), s, p, o, m)
-# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_C(BOOST_PP_BOOL(p##(53, s)), s, p, o, m)
-# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_C(BOOST_PP_BOOL(p##(54, s)), s, p, o, m)
-# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_C(BOOST_PP_BOOL(p##(55, s)), s, p, o, m)
-# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_C(BOOST_PP_BOOL(p##(56, s)), s, p, o, m)
-# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_C(BOOST_PP_BOOL(p##(57, s)), s, p, o, m)
-# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_C(BOOST_PP_BOOL(p##(58, s)), s, p, o, m)
-# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_C(BOOST_PP_BOOL(p##(59, s)), s, p, o, m)
-# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_C(BOOST_PP_BOOL(p##(60, s)), s, p, o, m)
-# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_C(BOOST_PP_BOOL(p##(61, s)), s, p, o, m)
-# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_C(BOOST_PP_BOOL(p##(62, s)), s, p, o, m)
-# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_C(BOOST_PP_BOOL(p##(63, s)), s, p, o, m)
-# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_C(BOOST_PP_BOOL(p##(64, s)), s, p, o, m)
-# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_C(BOOST_PP_BOOL(p##(65, s)), s, p, o, m)
-# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_C(BOOST_PP_BOOL(p##(66, s)), s, p, o, m)
-# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_C(BOOST_PP_BOOL(p##(67, s)), s, p, o, m)
-# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_C(BOOST_PP_BOOL(p##(68, s)), s, p, o, m)
-# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_C(BOOST_PP_BOOL(p##(69, s)), s, p, o, m)
-# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_C(BOOST_PP_BOOL(p##(70, s)), s, p, o, m)
-# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_C(BOOST_PP_BOOL(p##(71, s)), s, p, o, m)
-# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_C(BOOST_PP_BOOL(p##(72, s)), s, p, o, m)
-# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_C(BOOST_PP_BOOL(p##(73, s)), s, p, o, m)
-# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_C(BOOST_PP_BOOL(p##(74, s)), s, p, o, m)
-# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_C(BOOST_PP_BOOL(p##(75, s)), s, p, o, m)
-# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_C(BOOST_PP_BOOL(p##(76, s)), s, p, o, m)
-# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_C(BOOST_PP_BOOL(p##(77, s)), s, p, o, m)
-# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_C(BOOST_PP_BOOL(p##(78, s)), s, p, o, m)
-# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_C(BOOST_PP_BOOL(p##(79, s)), s, p, o, m)
-# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_C(BOOST_PP_BOOL(p##(80, s)), s, p, o, m)
-# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_C(BOOST_PP_BOOL(p##(81, s)), s, p, o, m)
-# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_C(BOOST_PP_BOOL(p##(82, s)), s, p, o, m)
-# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_C(BOOST_PP_BOOL(p##(83, s)), s, p, o, m)
-# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_C(BOOST_PP_BOOL(p##(84, s)), s, p, o, m)
-# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_C(BOOST_PP_BOOL(p##(85, s)), s, p, o, m)
-# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_C(BOOST_PP_BOOL(p##(86, s)), s, p, o, m)
-# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_C(BOOST_PP_BOOL(p##(87, s)), s, p, o, m)
-# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_C(BOOST_PP_BOOL(p##(88, s)), s, p, o, m)
-# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_C(BOOST_PP_BOOL(p##(89, s)), s, p, o, m)
-# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_C(BOOST_PP_BOOL(p##(90, s)), s, p, o, m)
-# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_C(BOOST_PP_BOOL(p##(91, s)), s, p, o, m)
-# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_C(BOOST_PP_BOOL(p##(92, s)), s, p, o, m)
-# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_C(BOOST_PP_BOOL(p##(93, s)), s, p, o, m)
-# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_C(BOOST_PP_BOOL(p##(94, s)), s, p, o, m)
-# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_C(BOOST_PP_BOOL(p##(95, s)), s, p, o, m)
-# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_C(BOOST_PP_BOOL(p##(96, s)), s, p, o, m)
-# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_C(BOOST_PP_BOOL(p##(97, s)), s, p, o, m)
-# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_C(BOOST_PP_BOOL(p##(98, s)), s, p, o, m)
-# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_C(BOOST_PP_BOOL(p##(99, s)), s, p, o, m)
-# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_C(BOOST_PP_BOOL(p##(100, s)), s, p, o, m)
-# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_C(BOOST_PP_BOOL(p##(101, s)), s, p, o, m)
-# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_C(BOOST_PP_BOOL(p##(102, s)), s, p, o, m)
-# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_C(BOOST_PP_BOOL(p##(103, s)), s, p, o, m)
-# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_C(BOOST_PP_BOOL(p##(104, s)), s, p, o, m)
-# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_C(BOOST_PP_BOOL(p##(105, s)), s, p, o, m)
-# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_C(BOOST_PP_BOOL(p##(106, s)), s, p, o, m)
-# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_C(BOOST_PP_BOOL(p##(107, s)), s, p, o, m)
-# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_C(BOOST_PP_BOOL(p##(108, s)), s, p, o, m)
-# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_C(BOOST_PP_BOOL(p##(109, s)), s, p, o, m)
-# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_C(BOOST_PP_BOOL(p##(110, s)), s, p, o, m)
-# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_C(BOOST_PP_BOOL(p##(111, s)), s, p, o, m)
-# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_C(BOOST_PP_BOOL(p##(112, s)), s, p, o, m)
-# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_C(BOOST_PP_BOOL(p##(113, s)), s, p, o, m)
-# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_C(BOOST_PP_BOOL(p##(114, s)), s, p, o, m)
-# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_C(BOOST_PP_BOOL(p##(115, s)), s, p, o, m)
-# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_C(BOOST_PP_BOOL(p##(116, s)), s, p, o, m)
-# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_C(BOOST_PP_BOOL(p##(117, s)), s, p, o, m)
-# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_C(BOOST_PP_BOOL(p##(118, s)), s, p, o, m)
-# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_C(BOOST_PP_BOOL(p##(119, s)), s, p, o, m)
-# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_C(BOOST_PP_BOOL(p##(120, s)), s, p, o, m)
-# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_C(BOOST_PP_BOOL(p##(121, s)), s, p, o, m)
-# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_C(BOOST_PP_BOOL(p##(122, s)), s, p, o, m)
-# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_C(BOOST_PP_BOOL(p##(123, s)), s, p, o, m)
-# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_C(BOOST_PP_BOOL(p##(124, s)), s, p, o, m)
-# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_C(BOOST_PP_BOOL(p##(125, s)), s, p, o, m)
-# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_C(BOOST_PP_BOOL(p##(126, s)), s, p, o, m)
-# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_C(BOOST_PP_BOOL(p##(127, s)), s, p, o, m)
-# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_C(BOOST_PP_BOOL(p##(128, s)), s, p, o, m)
-# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_C(BOOST_PP_BOOL(p##(129, s)), s, p, o, m)
-# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_C(BOOST_PP_BOOL(p##(130, s)), s, p, o, m)
-# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_C(BOOST_PP_BOOL(p##(131, s)), s, p, o, m)
-# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_C(BOOST_PP_BOOL(p##(132, s)), s, p, o, m)
-# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_C(BOOST_PP_BOOL(p##(133, s)), s, p, o, m)
-# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_C(BOOST_PP_BOOL(p##(134, s)), s, p, o, m)
-# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_C(BOOST_PP_BOOL(p##(135, s)), s, p, o, m)
-# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_C(BOOST_PP_BOOL(p##(136, s)), s, p, o, m)
-# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_C(BOOST_PP_BOOL(p##(137, s)), s, p, o, m)
-# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_C(BOOST_PP_BOOL(p##(138, s)), s, p, o, m)
-# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_C(BOOST_PP_BOOL(p##(139, s)), s, p, o, m)
-# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_C(BOOST_PP_BOOL(p##(140, s)), s, p, o, m)
-# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_C(BOOST_PP_BOOL(p##(141, s)), s, p, o, m)
-# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_C(BOOST_PP_BOOL(p##(142, s)), s, p, o, m)
-# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_C(BOOST_PP_BOOL(p##(143, s)), s, p, o, m)
-# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_C(BOOST_PP_BOOL(p##(144, s)), s, p, o, m)
-# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_C(BOOST_PP_BOOL(p##(145, s)), s, p, o, m)
-# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_C(BOOST_PP_BOOL(p##(146, s)), s, p, o, m)
-# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_C(BOOST_PP_BOOL(p##(147, s)), s, p, o, m)
-# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_C(BOOST_PP_BOOL(p##(148, s)), s, p, o, m)
-# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_C(BOOST_PP_BOOL(p##(149, s)), s, p, o, m)
-# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_C(BOOST_PP_BOOL(p##(150, s)), s, p, o, m)
-# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_C(BOOST_PP_BOOL(p##(151, s)), s, p, o, m)
-# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_C(BOOST_PP_BOOL(p##(152, s)), s, p, o, m)
-# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_C(BOOST_PP_BOOL(p##(153, s)), s, p, o, m)
-# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_C(BOOST_PP_BOOL(p##(154, s)), s, p, o, m)
-# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_C(BOOST_PP_BOOL(p##(155, s)), s, p, o, m)
-# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_C(BOOST_PP_BOOL(p##(156, s)), s, p, o, m)
-# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_C(BOOST_PP_BOOL(p##(157, s)), s, p, o, m)
-# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_C(BOOST_PP_BOOL(p##(158, s)), s, p, o, m)
-# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_C(BOOST_PP_BOOL(p##(159, s)), s, p, o, m)
-# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_C(BOOST_PP_BOOL(p##(160, s)), s, p, o, m)
-# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_C(BOOST_PP_BOOL(p##(161, s)), s, p, o, m)
-# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_C(BOOST_PP_BOOL(p##(162, s)), s, p, o, m)
-# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_C(BOOST_PP_BOOL(p##(163, s)), s, p, o, m)
-# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_C(BOOST_PP_BOOL(p##(164, s)), s, p, o, m)
-# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_C(BOOST_PP_BOOL(p##(165, s)), s, p, o, m)
-# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_C(BOOST_PP_BOOL(p##(166, s)), s, p, o, m)
-# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_C(BOOST_PP_BOOL(p##(167, s)), s, p, o, m)
-# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_C(BOOST_PP_BOOL(p##(168, s)), s, p, o, m)
-# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_C(BOOST_PP_BOOL(p##(169, s)), s, p, o, m)
-# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_C(BOOST_PP_BOOL(p##(170, s)), s, p, o, m)
-# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_C(BOOST_PP_BOOL(p##(171, s)), s, p, o, m)
-# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_C(BOOST_PP_BOOL(p##(172, s)), s, p, o, m)
-# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_C(BOOST_PP_BOOL(p##(173, s)), s, p, o, m)
-# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_C(BOOST_PP_BOOL(p##(174, s)), s, p, o, m)
-# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_C(BOOST_PP_BOOL(p##(175, s)), s, p, o, m)
-# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_C(BOOST_PP_BOOL(p##(176, s)), s, p, o, m)
-# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_C(BOOST_PP_BOOL(p##(177, s)), s, p, o, m)
-# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_C(BOOST_PP_BOOL(p##(178, s)), s, p, o, m)
-# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_C(BOOST_PP_BOOL(p##(179, s)), s, p, o, m)
-# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_C(BOOST_PP_BOOL(p##(180, s)), s, p, o, m)
-# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_C(BOOST_PP_BOOL(p##(181, s)), s, p, o, m)
-# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_C(BOOST_PP_BOOL(p##(182, s)), s, p, o, m)
-# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_C(BOOST_PP_BOOL(p##(183, s)), s, p, o, m)
-# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_C(BOOST_PP_BOOL(p##(184, s)), s, p, o, m)
-# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_C(BOOST_PP_BOOL(p##(185, s)), s, p, o, m)
-# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_C(BOOST_PP_BOOL(p##(186, s)), s, p, o, m)
-# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_C(BOOST_PP_BOOL(p##(187, s)), s, p, o, m)
-# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_C(BOOST_PP_BOOL(p##(188, s)), s, p, o, m)
-# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_C(BOOST_PP_BOOL(p##(189, s)), s, p, o, m)
-# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_C(BOOST_PP_BOOL(p##(190, s)), s, p, o, m)
-# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_C(BOOST_PP_BOOL(p##(191, s)), s, p, o, m)
-# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_C(BOOST_PP_BOOL(p##(192, s)), s, p, o, m)
-# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_C(BOOST_PP_BOOL(p##(193, s)), s, p, o, m)
-# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_C(BOOST_PP_BOOL(p##(194, s)), s, p, o, m)
-# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_C(BOOST_PP_BOOL(p##(195, s)), s, p, o, m)
-# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_C(BOOST_PP_BOOL(p##(196, s)), s, p, o, m)
-# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_C(BOOST_PP_BOOL(p##(197, s)), s, p, o, m)
-# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_C(BOOST_PP_BOOL(p##(198, s)), s, p, o, m)
-# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_C(BOOST_PP_BOOL(p##(199, s)), s, p, o, m)
-# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_C(BOOST_PP_BOOL(p##(200, s)), s, p, o, m)
-# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_C(BOOST_PP_BOOL(p##(201, s)), s, p, o, m)
-# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_C(BOOST_PP_BOOL(p##(202, s)), s, p, o, m)
-# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_C(BOOST_PP_BOOL(p##(203, s)), s, p, o, m)
-# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_C(BOOST_PP_BOOL(p##(204, s)), s, p, o, m)
-# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_C(BOOST_PP_BOOL(p##(205, s)), s, p, o, m)
-# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_C(BOOST_PP_BOOL(p##(206, s)), s, p, o, m)
-# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_C(BOOST_PP_BOOL(p##(207, s)), s, p, o, m)
-# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_C(BOOST_PP_BOOL(p##(208, s)), s, p, o, m)
-# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_C(BOOST_PP_BOOL(p##(209, s)), s, p, o, m)
-# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_C(BOOST_PP_BOOL(p##(210, s)), s, p, o, m)
-# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_C(BOOST_PP_BOOL(p##(211, s)), s, p, o, m)
-# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_C(BOOST_PP_BOOL(p##(212, s)), s, p, o, m)
-# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_C(BOOST_PP_BOOL(p##(213, s)), s, p, o, m)
-# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_C(BOOST_PP_BOOL(p##(214, s)), s, p, o, m)
-# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_C(BOOST_PP_BOOL(p##(215, s)), s, p, o, m)
-# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_C(BOOST_PP_BOOL(p##(216, s)), s, p, o, m)
-# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_C(BOOST_PP_BOOL(p##(217, s)), s, p, o, m)
-# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_C(BOOST_PP_BOOL(p##(218, s)), s, p, o, m)
-# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_C(BOOST_PP_BOOL(p##(219, s)), s, p, o, m)
-# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_C(BOOST_PP_BOOL(p##(220, s)), s, p, o, m)
-# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_C(BOOST_PP_BOOL(p##(221, s)), s, p, o, m)
-# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_C(BOOST_PP_BOOL(p##(222, s)), s, p, o, m)
-# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_C(BOOST_PP_BOOL(p##(223, s)), s, p, o, m)
-# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_C(BOOST_PP_BOOL(p##(224, s)), s, p, o, m)
-# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_C(BOOST_PP_BOOL(p##(225, s)), s, p, o, m)
-# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_C(BOOST_PP_BOOL(p##(226, s)), s, p, o, m)
-# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_C(BOOST_PP_BOOL(p##(227, s)), s, p, o, m)
-# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_C(BOOST_PP_BOOL(p##(228, s)), s, p, o, m)
-# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_C(BOOST_PP_BOOL(p##(229, s)), s, p, o, m)
-# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_C(BOOST_PP_BOOL(p##(230, s)), s, p, o, m)
-# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_C(BOOST_PP_BOOL(p##(231, s)), s, p, o, m)
-# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_C(BOOST_PP_BOOL(p##(232, s)), s, p, o, m)
-# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_C(BOOST_PP_BOOL(p##(233, s)), s, p, o, m)
-# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_C(BOOST_PP_BOOL(p##(234, s)), s, p, o, m)
-# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_C(BOOST_PP_BOOL(p##(235, s)), s, p, o, m)
-# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_C(BOOST_PP_BOOL(p##(236, s)), s, p, o, m)
-# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_C(BOOST_PP_BOOL(p##(237, s)), s, p, o, m)
-# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_C(BOOST_PP_BOOL(p##(238, s)), s, p, o, m)
-# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_C(BOOST_PP_BOOL(p##(239, s)), s, p, o, m)
-# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_C(BOOST_PP_BOOL(p##(240, s)), s, p, o, m)
-# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_C(BOOST_PP_BOOL(p##(241, s)), s, p, o, m)
-# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_C(BOOST_PP_BOOL(p##(242, s)), s, p, o, m)
-# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_C(BOOST_PP_BOOL(p##(243, s)), s, p, o, m)
-# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_C(BOOST_PP_BOOL(p##(244, s)), s, p, o, m)
-# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_C(BOOST_PP_BOOL(p##(245, s)), s, p, o, m)
-# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_C(BOOST_PP_BOOL(p##(246, s)), s, p, o, m)
-# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_C(BOOST_PP_BOOL(p##(247, s)), s, p, o, m)
-# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_C(BOOST_PP_BOOL(p##(248, s)), s, p, o, m)
-# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_C(BOOST_PP_BOOL(p##(249, s)), s, p, o, m)
-# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_C(BOOST_PP_BOOL(p##(250, s)), s, p, o, m)
-# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_C(BOOST_PP_BOOL(p##(251, s)), s, p, o, m)
-# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_C(BOOST_PP_BOOL(p##(252, s)), s, p, o, m)
-# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_C(BOOST_PP_BOOL(p##(253, s)), s, p, o, m)
-# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_C(BOOST_PP_BOOL(p##(254, s)), s, p, o, m)
-# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_C(BOOST_PP_BOOL(p##(255, s)), s, p, o, m)
-# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_C(BOOST_PP_BOOL(p##(256, s)), s, p, o, m)
-# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_C(BOOST_PP_BOOL(p##(257, s)), s, p, o, m)
-#
-# define BOOST_PP_FOR_1_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IIF(c, BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(2, s), p, o, m)
-# define BOOST_PP_FOR_2_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IIF(c, BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(3, s), p, o, m)
-# define BOOST_PP_FOR_3_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IIF(c, BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(4, s), p, o, m)
-# define BOOST_PP_FOR_4_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IIF(c, BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(5, s), p, o, m)
-# define BOOST_PP_FOR_5_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IIF(c, BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(6, s), p, o, m)
-# define BOOST_PP_FOR_6_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IIF(c, BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(7, s), p, o, m)
-# define BOOST_PP_FOR_7_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IIF(c, BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(8, s), p, o, m)
-# define BOOST_PP_FOR_8_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IIF(c, BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(9, s), p, o, m)
-# define BOOST_PP_FOR_9_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IIF(c, BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(10, s), p, o, m)
-# define BOOST_PP_FOR_10_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IIF(c, BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(11, s), p, o, m)
-# define BOOST_PP_FOR_11_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IIF(c, BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(12, s), p, o, m)
-# define BOOST_PP_FOR_12_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IIF(c, BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(13, s), p, o, m)
-# define BOOST_PP_FOR_13_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IIF(c, BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(14, s), p, o, m)
-# define BOOST_PP_FOR_14_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IIF(c, BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(15, s), p, o, m)
-# define BOOST_PP_FOR_15_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IIF(c, BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(16, s), p, o, m)
-# define BOOST_PP_FOR_16_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IIF(c, BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(17, s), p, o, m)
-# define BOOST_PP_FOR_17_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IIF(c, BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(18, s), p, o, m)
-# define BOOST_PP_FOR_18_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IIF(c, BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(19, s), p, o, m)
-# define BOOST_PP_FOR_19_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IIF(c, BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(20, s), p, o, m)
-# define BOOST_PP_FOR_20_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IIF(c, BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(21, s), p, o, m)
-# define BOOST_PP_FOR_21_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IIF(c, BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(22, s), p, o, m)
-# define BOOST_PP_FOR_22_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IIF(c, BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(23, s), p, o, m)
-# define BOOST_PP_FOR_23_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IIF(c, BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(24, s), p, o, m)
-# define BOOST_PP_FOR_24_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IIF(c, BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(25, s), p, o, m)
-# define BOOST_PP_FOR_25_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IIF(c, BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(26, s), p, o, m)
-# define BOOST_PP_FOR_26_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IIF(c, BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(27, s), p, o, m)
-# define BOOST_PP_FOR_27_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IIF(c, BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(28, s), p, o, m)
-# define BOOST_PP_FOR_28_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IIF(c, BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(29, s), p, o, m)
-# define BOOST_PP_FOR_29_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IIF(c, BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(30, s), p, o, m)
-# define BOOST_PP_FOR_30_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IIF(c, BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(31, s), p, o, m)
-# define BOOST_PP_FOR_31_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IIF(c, BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(32, s), p, o, m)
-# define BOOST_PP_FOR_32_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IIF(c, BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(33, s), p, o, m)
-# define BOOST_PP_FOR_33_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IIF(c, BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(34, s), p, o, m)
-# define BOOST_PP_FOR_34_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IIF(c, BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(35, s), p, o, m)
-# define BOOST_PP_FOR_35_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IIF(c, BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(36, s), p, o, m)
-# define BOOST_PP_FOR_36_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IIF(c, BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(37, s), p, o, m)
-# define BOOST_PP_FOR_37_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IIF(c, BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(38, s), p, o, m)
-# define BOOST_PP_FOR_38_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IIF(c, BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(39, s), p, o, m)
-# define BOOST_PP_FOR_39_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IIF(c, BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(40, s), p, o, m)
-# define BOOST_PP_FOR_40_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IIF(c, BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(41, s), p, o, m)
-# define BOOST_PP_FOR_41_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IIF(c, BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(42, s), p, o, m)
-# define BOOST_PP_FOR_42_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IIF(c, BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(43, s), p, o, m)
-# define BOOST_PP_FOR_43_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IIF(c, BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(44, s), p, o, m)
-# define BOOST_PP_FOR_44_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IIF(c, BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(45, s), p, o, m)
-# define BOOST_PP_FOR_45_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IIF(c, BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(46, s), p, o, m)
-# define BOOST_PP_FOR_46_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IIF(c, BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(47, s), p, o, m)
-# define BOOST_PP_FOR_47_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IIF(c, BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(48, s), p, o, m)
-# define BOOST_PP_FOR_48_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IIF(c, BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(49, s), p, o, m)
-# define BOOST_PP_FOR_49_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IIF(c, BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(50, s), p, o, m)
-# define BOOST_PP_FOR_50_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IIF(c, BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(51, s), p, o, m)
-# define BOOST_PP_FOR_51_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IIF(c, BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(52, s), p, o, m)
-# define BOOST_PP_FOR_52_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IIF(c, BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(53, s), p, o, m)
-# define BOOST_PP_FOR_53_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IIF(c, BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(54, s), p, o, m)
-# define BOOST_PP_FOR_54_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IIF(c, BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(55, s), p, o, m)
-# define BOOST_PP_FOR_55_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IIF(c, BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(56, s), p, o, m)
-# define BOOST_PP_FOR_56_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IIF(c, BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(57, s), p, o, m)
-# define BOOST_PP_FOR_57_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IIF(c, BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(58, s), p, o, m)
-# define BOOST_PP_FOR_58_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IIF(c, BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(59, s), p, o, m)
-# define BOOST_PP_FOR_59_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IIF(c, BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(60, s), p, o, m)
-# define BOOST_PP_FOR_60_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IIF(c, BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(61, s), p, o, m)
-# define BOOST_PP_FOR_61_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IIF(c, BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(62, s), p, o, m)
-# define BOOST_PP_FOR_62_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IIF(c, BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(63, s), p, o, m)
-# define BOOST_PP_FOR_63_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IIF(c, BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(64, s), p, o, m)
-# define BOOST_PP_FOR_64_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IIF(c, BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(65, s), p, o, m)
-# define BOOST_PP_FOR_65_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IIF(c, BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(66, s), p, o, m)
-# define BOOST_PP_FOR_66_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IIF(c, BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(67, s), p, o, m)
-# define BOOST_PP_FOR_67_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IIF(c, BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(68, s), p, o, m)
-# define BOOST_PP_FOR_68_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IIF(c, BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(69, s), p, o, m)
-# define BOOST_PP_FOR_69_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IIF(c, BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(70, s), p, o, m)
-# define BOOST_PP_FOR_70_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IIF(c, BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(71, s), p, o, m)
-# define BOOST_PP_FOR_71_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IIF(c, BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(72, s), p, o, m)
-# define BOOST_PP_FOR_72_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IIF(c, BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(73, s), p, o, m)
-# define BOOST_PP_FOR_73_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IIF(c, BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(74, s), p, o, m)
-# define BOOST_PP_FOR_74_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IIF(c, BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(75, s), p, o, m)
-# define BOOST_PP_FOR_75_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IIF(c, BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(76, s), p, o, m)
-# define BOOST_PP_FOR_76_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IIF(c, BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(77, s), p, o, m)
-# define BOOST_PP_FOR_77_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IIF(c, BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(78, s), p, o, m)
-# define BOOST_PP_FOR_78_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IIF(c, BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(79, s), p, o, m)
-# define BOOST_PP_FOR_79_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IIF(c, BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(80, s), p, o, m)
-# define BOOST_PP_FOR_80_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IIF(c, BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(81, s), p, o, m)
-# define BOOST_PP_FOR_81_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IIF(c, BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(82, s), p, o, m)
-# define BOOST_PP_FOR_82_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IIF(c, BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(83, s), p, o, m)
-# define BOOST_PP_FOR_83_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IIF(c, BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(84, s), p, o, m)
-# define BOOST_PP_FOR_84_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IIF(c, BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(85, s), p, o, m)
-# define BOOST_PP_FOR_85_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IIF(c, BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(86, s), p, o, m)
-# define BOOST_PP_FOR_86_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IIF(c, BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(87, s), p, o, m)
-# define BOOST_PP_FOR_87_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IIF(c, BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(88, s), p, o, m)
-# define BOOST_PP_FOR_88_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IIF(c, BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(89, s), p, o, m)
-# define BOOST_PP_FOR_89_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IIF(c, BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(90, s), p, o, m)
-# define BOOST_PP_FOR_90_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IIF(c, BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(91, s), p, o, m)
-# define BOOST_PP_FOR_91_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IIF(c, BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(92, s), p, o, m)
-# define BOOST_PP_FOR_92_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IIF(c, BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(93, s), p, o, m)
-# define BOOST_PP_FOR_93_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IIF(c, BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(94, s), p, o, m)
-# define BOOST_PP_FOR_94_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IIF(c, BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(95, s), p, o, m)
-# define BOOST_PP_FOR_95_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IIF(c, BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(96, s), p, o, m)
-# define BOOST_PP_FOR_96_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IIF(c, BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(97, s), p, o, m)
-# define BOOST_PP_FOR_97_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IIF(c, BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(98, s), p, o, m)
-# define BOOST_PP_FOR_98_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IIF(c, BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(99, s), p, o, m)
-# define BOOST_PP_FOR_99_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IIF(c, BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(100, s), p, o, m)
-# define BOOST_PP_FOR_100_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IIF(c, BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(101, s), p, o, m)
-# define BOOST_PP_FOR_101_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IIF(c, BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(102, s), p, o, m)
-# define BOOST_PP_FOR_102_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IIF(c, BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(103, s), p, o, m)
-# define BOOST_PP_FOR_103_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IIF(c, BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(104, s), p, o, m)
-# define BOOST_PP_FOR_104_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IIF(c, BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(105, s), p, o, m)
-# define BOOST_PP_FOR_105_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IIF(c, BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(106, s), p, o, m)
-# define BOOST_PP_FOR_106_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IIF(c, BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(107, s), p, o, m)
-# define BOOST_PP_FOR_107_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IIF(c, BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(108, s), p, o, m)
-# define BOOST_PP_FOR_108_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IIF(c, BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(109, s), p, o, m)
-# define BOOST_PP_FOR_109_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IIF(c, BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(110, s), p, o, m)
-# define BOOST_PP_FOR_110_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IIF(c, BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(111, s), p, o, m)
-# define BOOST_PP_FOR_111_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IIF(c, BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(112, s), p, o, m)
-# define BOOST_PP_FOR_112_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IIF(c, BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(113, s), p, o, m)
-# define BOOST_PP_FOR_113_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IIF(c, BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(114, s), p, o, m)
-# define BOOST_PP_FOR_114_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IIF(c, BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(115, s), p, o, m)
-# define BOOST_PP_FOR_115_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IIF(c, BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(116, s), p, o, m)
-# define BOOST_PP_FOR_116_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IIF(c, BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(117, s), p, o, m)
-# define BOOST_PP_FOR_117_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IIF(c, BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(118, s), p, o, m)
-# define BOOST_PP_FOR_118_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IIF(c, BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(119, s), p, o, m)
-# define BOOST_PP_FOR_119_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IIF(c, BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(120, s), p, o, m)
-# define BOOST_PP_FOR_120_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IIF(c, BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(121, s), p, o, m)
-# define BOOST_PP_FOR_121_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IIF(c, BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(122, s), p, o, m)
-# define BOOST_PP_FOR_122_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IIF(c, BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(123, s), p, o, m)
-# define BOOST_PP_FOR_123_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IIF(c, BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(124, s), p, o, m)
-# define BOOST_PP_FOR_124_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IIF(c, BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(125, s), p, o, m)
-# define BOOST_PP_FOR_125_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IIF(c, BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(126, s), p, o, m)
-# define BOOST_PP_FOR_126_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IIF(c, BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(127, s), p, o, m)
-# define BOOST_PP_FOR_127_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IIF(c, BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(128, s), p, o, m)
-# define BOOST_PP_FOR_128_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IIF(c, BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(129, s), p, o, m)
-# define BOOST_PP_FOR_129_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IIF(c, BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(130, s), p, o, m)
-# define BOOST_PP_FOR_130_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IIF(c, BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(131, s), p, o, m)
-# define BOOST_PP_FOR_131_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IIF(c, BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(132, s), p, o, m)
-# define BOOST_PP_FOR_132_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IIF(c, BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(133, s), p, o, m)
-# define BOOST_PP_FOR_133_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IIF(c, BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(134, s), p, o, m)
-# define BOOST_PP_FOR_134_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IIF(c, BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(135, s), p, o, m)
-# define BOOST_PP_FOR_135_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IIF(c, BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(136, s), p, o, m)
-# define BOOST_PP_FOR_136_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IIF(c, BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(137, s), p, o, m)
-# define BOOST_PP_FOR_137_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IIF(c, BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(138, s), p, o, m)
-# define BOOST_PP_FOR_138_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IIF(c, BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(139, s), p, o, m)
-# define BOOST_PP_FOR_139_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IIF(c, BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(140, s), p, o, m)
-# define BOOST_PP_FOR_140_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IIF(c, BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(141, s), p, o, m)
-# define BOOST_PP_FOR_141_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IIF(c, BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(142, s), p, o, m)
-# define BOOST_PP_FOR_142_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IIF(c, BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(143, s), p, o, m)
-# define BOOST_PP_FOR_143_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IIF(c, BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(144, s), p, o, m)
-# define BOOST_PP_FOR_144_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IIF(c, BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(145, s), p, o, m)
-# define BOOST_PP_FOR_145_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IIF(c, BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(146, s), p, o, m)
-# define BOOST_PP_FOR_146_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IIF(c, BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(147, s), p, o, m)
-# define BOOST_PP_FOR_147_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IIF(c, BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(148, s), p, o, m)
-# define BOOST_PP_FOR_148_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IIF(c, BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(149, s), p, o, m)
-# define BOOST_PP_FOR_149_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IIF(c, BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(150, s), p, o, m)
-# define BOOST_PP_FOR_150_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IIF(c, BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(151, s), p, o, m)
-# define BOOST_PP_FOR_151_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IIF(c, BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(152, s), p, o, m)
-# define BOOST_PP_FOR_152_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IIF(c, BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(153, s), p, o, m)
-# define BOOST_PP_FOR_153_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IIF(c, BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(154, s), p, o, m)
-# define BOOST_PP_FOR_154_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IIF(c, BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(155, s), p, o, m)
-# define BOOST_PP_FOR_155_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IIF(c, BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(156, s), p, o, m)
-# define BOOST_PP_FOR_156_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IIF(c, BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(157, s), p, o, m)
-# define BOOST_PP_FOR_157_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IIF(c, BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(158, s), p, o, m)
-# define BOOST_PP_FOR_158_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IIF(c, BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(159, s), p, o, m)
-# define BOOST_PP_FOR_159_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IIF(c, BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(160, s), p, o, m)
-# define BOOST_PP_FOR_160_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IIF(c, BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(161, s), p, o, m)
-# define BOOST_PP_FOR_161_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IIF(c, BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(162, s), p, o, m)
-# define BOOST_PP_FOR_162_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IIF(c, BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(163, s), p, o, m)
-# define BOOST_PP_FOR_163_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IIF(c, BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(164, s), p, o, m)
-# define BOOST_PP_FOR_164_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IIF(c, BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(165, s), p, o, m)
-# define BOOST_PP_FOR_165_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IIF(c, BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(166, s), p, o, m)
-# define BOOST_PP_FOR_166_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IIF(c, BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(167, s), p, o, m)
-# define BOOST_PP_FOR_167_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IIF(c, BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(168, s), p, o, m)
-# define BOOST_PP_FOR_168_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IIF(c, BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(169, s), p, o, m)
-# define BOOST_PP_FOR_169_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IIF(c, BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(170, s), p, o, m)
-# define BOOST_PP_FOR_170_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IIF(c, BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(171, s), p, o, m)
-# define BOOST_PP_FOR_171_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IIF(c, BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(172, s), p, o, m)
-# define BOOST_PP_FOR_172_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IIF(c, BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(173, s), p, o, m)
-# define BOOST_PP_FOR_173_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IIF(c, BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(174, s), p, o, m)
-# define BOOST_PP_FOR_174_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IIF(c, BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(175, s), p, o, m)
-# define BOOST_PP_FOR_175_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IIF(c, BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(176, s), p, o, m)
-# define BOOST_PP_FOR_176_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IIF(c, BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(177, s), p, o, m)
-# define BOOST_PP_FOR_177_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IIF(c, BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(178, s), p, o, m)
-# define BOOST_PP_FOR_178_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IIF(c, BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(179, s), p, o, m)
-# define BOOST_PP_FOR_179_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IIF(c, BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(180, s), p, o, m)
-# define BOOST_PP_FOR_180_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IIF(c, BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(181, s), p, o, m)
-# define BOOST_PP_FOR_181_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IIF(c, BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(182, s), p, o, m)
-# define BOOST_PP_FOR_182_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IIF(c, BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(183, s), p, o, m)
-# define BOOST_PP_FOR_183_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IIF(c, BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(184, s), p, o, m)
-# define BOOST_PP_FOR_184_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IIF(c, BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(185, s), p, o, m)
-# define BOOST_PP_FOR_185_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IIF(c, BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(186, s), p, o, m)
-# define BOOST_PP_FOR_186_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IIF(c, BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(187, s), p, o, m)
-# define BOOST_PP_FOR_187_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IIF(c, BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(188, s), p, o, m)
-# define BOOST_PP_FOR_188_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IIF(c, BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(189, s), p, o, m)
-# define BOOST_PP_FOR_189_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IIF(c, BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(190, s), p, o, m)
-# define BOOST_PP_FOR_190_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IIF(c, BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(191, s), p, o, m)
-# define BOOST_PP_FOR_191_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IIF(c, BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(192, s), p, o, m)
-# define BOOST_PP_FOR_192_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IIF(c, BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(193, s), p, o, m)
-# define BOOST_PP_FOR_193_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IIF(c, BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(194, s), p, o, m)
-# define BOOST_PP_FOR_194_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IIF(c, BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(195, s), p, o, m)
-# define BOOST_PP_FOR_195_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IIF(c, BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(196, s), p, o, m)
-# define BOOST_PP_FOR_196_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IIF(c, BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(197, s), p, o, m)
-# define BOOST_PP_FOR_197_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IIF(c, BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(198, s), p, o, m)
-# define BOOST_PP_FOR_198_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IIF(c, BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(199, s), p, o, m)
-# define BOOST_PP_FOR_199_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IIF(c, BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(200, s), p, o, m)
-# define BOOST_PP_FOR_200_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IIF(c, BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(201, s), p, o, m)
-# define BOOST_PP_FOR_201_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IIF(c, BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(202, s), p, o, m)
-# define BOOST_PP_FOR_202_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IIF(c, BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(203, s), p, o, m)
-# define BOOST_PP_FOR_203_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IIF(c, BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(204, s), p, o, m)
-# define BOOST_PP_FOR_204_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IIF(c, BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(205, s), p, o, m)
-# define BOOST_PP_FOR_205_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IIF(c, BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(206, s), p, o, m)
-# define BOOST_PP_FOR_206_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IIF(c, BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(207, s), p, o, m)
-# define BOOST_PP_FOR_207_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IIF(c, BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(208, s), p, o, m)
-# define BOOST_PP_FOR_208_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IIF(c, BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(209, s), p, o, m)
-# define BOOST_PP_FOR_209_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IIF(c, BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(210, s), p, o, m)
-# define BOOST_PP_FOR_210_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IIF(c, BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(211, s), p, o, m)
-# define BOOST_PP_FOR_211_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IIF(c, BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(212, s), p, o, m)
-# define BOOST_PP_FOR_212_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IIF(c, BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(213, s), p, o, m)
-# define BOOST_PP_FOR_213_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IIF(c, BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(214, s), p, o, m)
-# define BOOST_PP_FOR_214_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IIF(c, BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(215, s), p, o, m)
-# define BOOST_PP_FOR_215_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IIF(c, BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(216, s), p, o, m)
-# define BOOST_PP_FOR_216_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IIF(c, BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(217, s), p, o, m)
-# define BOOST_PP_FOR_217_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IIF(c, BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(218, s), p, o, m)
-# define BOOST_PP_FOR_218_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IIF(c, BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(219, s), p, o, m)
-# define BOOST_PP_FOR_219_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IIF(c, BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(220, s), p, o, m)
-# define BOOST_PP_FOR_220_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IIF(c, BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(221, s), p, o, m)
-# define BOOST_PP_FOR_221_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IIF(c, BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(222, s), p, o, m)
-# define BOOST_PP_FOR_222_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IIF(c, BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(223, s), p, o, m)
-# define BOOST_PP_FOR_223_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IIF(c, BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(224, s), p, o, m)
-# define BOOST_PP_FOR_224_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IIF(c, BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(225, s), p, o, m)
-# define BOOST_PP_FOR_225_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IIF(c, BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(226, s), p, o, m)
-# define BOOST_PP_FOR_226_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IIF(c, BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(227, s), p, o, m)
-# define BOOST_PP_FOR_227_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IIF(c, BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(228, s), p, o, m)
-# define BOOST_PP_FOR_228_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IIF(c, BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(229, s), p, o, m)
-# define BOOST_PP_FOR_229_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IIF(c, BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(230, s), p, o, m)
-# define BOOST_PP_FOR_230_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IIF(c, BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(231, s), p, o, m)
-# define BOOST_PP_FOR_231_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IIF(c, BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(232, s), p, o, m)
-# define BOOST_PP_FOR_232_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IIF(c, BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(233, s), p, o, m)
-# define BOOST_PP_FOR_233_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IIF(c, BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(234, s), p, o, m)
-# define BOOST_PP_FOR_234_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IIF(c, BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(235, s), p, o, m)
-# define BOOST_PP_FOR_235_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IIF(c, BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(236, s), p, o, m)
-# define BOOST_PP_FOR_236_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IIF(c, BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(237, s), p, o, m)
-# define BOOST_PP_FOR_237_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IIF(c, BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(238, s), p, o, m)
-# define BOOST_PP_FOR_238_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IIF(c, BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(239, s), p, o, m)
-# define BOOST_PP_FOR_239_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IIF(c, BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(240, s), p, o, m)
-# define BOOST_PP_FOR_240_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IIF(c, BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(241, s), p, o, m)
-# define BOOST_PP_FOR_241_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IIF(c, BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(242, s), p, o, m)
-# define BOOST_PP_FOR_242_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IIF(c, BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(243, s), p, o, m)
-# define BOOST_PP_FOR_243_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IIF(c, BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(244, s), p, o, m)
-# define BOOST_PP_FOR_244_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IIF(c, BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(245, s), p, o, m)
-# define BOOST_PP_FOR_245_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IIF(c, BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(246, s), p, o, m)
-# define BOOST_PP_FOR_246_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IIF(c, BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(247, s), p, o, m)
-# define BOOST_PP_FOR_247_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IIF(c, BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(248, s), p, o, m)
-# define BOOST_PP_FOR_248_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IIF(c, BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(249, s), p, o, m)
-# define BOOST_PP_FOR_249_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IIF(c, BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(250, s), p, o, m)
-# define BOOST_PP_FOR_250_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IIF(c, BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(251, s), p, o, m)
-# define BOOST_PP_FOR_251_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IIF(c, BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(252, s), p, o, m)
-# define BOOST_PP_FOR_252_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IIF(c, BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(253, s), p, o, m)
-# define BOOST_PP_FOR_253_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IIF(c, BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(254, s), p, o, m)
-# define BOOST_PP_FOR_254_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IIF(c, BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(255, s), p, o, m)
-# define BOOST_PP_FOR_255_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IIF(c, BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(256, s), p, o, m)
-# define BOOST_PP_FOR_256_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IIF(c, BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(257, s), p, o, m)
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repetition/detail/edg/for.hpp b/libcutl/cutl/details/boost/preprocessor/repetition/detail/edg/for.hpp
deleted file mode 100644
index 0ff8db8..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repetition/detail/edg/for.hpp
+++ /dev/null
@@ -1,534 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_HPP
-# define BOOST_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_HPP
-#
-# include <cutl/details/boost/preprocessor/control/if.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_I(s, p, o, m)
-# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_I(s, p, o, m)
-# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_I(s, p, o, m)
-# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_I(s, p, o, m)
-# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_I(s, p, o, m)
-# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_I(s, p, o, m)
-# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_I(s, p, o, m)
-# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_I(s, p, o, m)
-# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_I(s, p, o, m)
-# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_I(s, p, o, m)
-# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_I(s, p, o, m)
-# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_I(s, p, o, m)
-# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_I(s, p, o, m)
-# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_I(s, p, o, m)
-# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_I(s, p, o, m)
-# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_I(s, p, o, m)
-# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_I(s, p, o, m)
-# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_I(s, p, o, m)
-# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_I(s, p, o, m)
-# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_I(s, p, o, m)
-# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_I(s, p, o, m)
-# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_I(s, p, o, m)
-# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_I(s, p, o, m)
-# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_I(s, p, o, m)
-# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_I(s, p, o, m)
-# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_I(s, p, o, m)
-# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_I(s, p, o, m)
-# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_I(s, p, o, m)
-# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_I(s, p, o, m)
-# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_I(s, p, o, m)
-# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_I(s, p, o, m)
-# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_I(s, p, o, m)
-# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_I(s, p, o, m)
-# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_I(s, p, o, m)
-# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_I(s, p, o, m)
-# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_I(s, p, o, m)
-# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_I(s, p, o, m)
-# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_I(s, p, o, m)
-# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_I(s, p, o, m)
-# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_I(s, p, o, m)
-# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_I(s, p, o, m)
-# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_I(s, p, o, m)
-# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_I(s, p, o, m)
-# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_I(s, p, o, m)
-# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_I(s, p, o, m)
-# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_I(s, p, o, m)
-# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_I(s, p, o, m)
-# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_I(s, p, o, m)
-# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_I(s, p, o, m)
-# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_I(s, p, o, m)
-# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_I(s, p, o, m)
-# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_I(s, p, o, m)
-# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_I(s, p, o, m)
-# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_I(s, p, o, m)
-# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_I(s, p, o, m)
-# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_I(s, p, o, m)
-# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_I(s, p, o, m)
-# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_I(s, p, o, m)
-# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_I(s, p, o, m)
-# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_I(s, p, o, m)
-# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_I(s, p, o, m)
-# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_I(s, p, o, m)
-# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_I(s, p, o, m)
-# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_I(s, p, o, m)
-# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_I(s, p, o, m)
-# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_I(s, p, o, m)
-# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_I(s, p, o, m)
-# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_I(s, p, o, m)
-# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_I(s, p, o, m)
-# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_I(s, p, o, m)
-# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_I(s, p, o, m)
-# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_I(s, p, o, m)
-# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_I(s, p, o, m)
-# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_I(s, p, o, m)
-# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_I(s, p, o, m)
-# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_I(s, p, o, m)
-# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_I(s, p, o, m)
-# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_I(s, p, o, m)
-# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_I(s, p, o, m)
-# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_I(s, p, o, m)
-# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_I(s, p, o, m)
-# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_I(s, p, o, m)
-# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_I(s, p, o, m)
-# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_I(s, p, o, m)
-# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_I(s, p, o, m)
-# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_I(s, p, o, m)
-# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_I(s, p, o, m)
-# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_I(s, p, o, m)
-# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_I(s, p, o, m)
-# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_I(s, p, o, m)
-# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_I(s, p, o, m)
-# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_I(s, p, o, m)
-# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_I(s, p, o, m)
-# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_I(s, p, o, m)
-# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_I(s, p, o, m)
-# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_I(s, p, o, m)
-# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_I(s, p, o, m)
-# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_I(s, p, o, m)
-# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_I(s, p, o, m)
-# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_I(s, p, o, m)
-# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_I(s, p, o, m)
-# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_I(s, p, o, m)
-# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_I(s, p, o, m)
-# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_I(s, p, o, m)
-# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_I(s, p, o, m)
-# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_I(s, p, o, m)
-# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_I(s, p, o, m)
-# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_I(s, p, o, m)
-# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_I(s, p, o, m)
-# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_I(s, p, o, m)
-# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_I(s, p, o, m)
-# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_I(s, p, o, m)
-# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_I(s, p, o, m)
-# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_I(s, p, o, m)
-# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_I(s, p, o, m)
-# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_I(s, p, o, m)
-# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_I(s, p, o, m)
-# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_I(s, p, o, m)
-# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_I(s, p, o, m)
-# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_I(s, p, o, m)
-# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_I(s, p, o, m)
-# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_I(s, p, o, m)
-# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_I(s, p, o, m)
-# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_I(s, p, o, m)
-# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_I(s, p, o, m)
-# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_I(s, p, o, m)
-# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_I(s, p, o, m)
-# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_I(s, p, o, m)
-# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_I(s, p, o, m)
-# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_I(s, p, o, m)
-# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_I(s, p, o, m)
-# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_I(s, p, o, m)
-# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_I(s, p, o, m)
-# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_I(s, p, o, m)
-# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_I(s, p, o, m)
-# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_I(s, p, o, m)
-# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_I(s, p, o, m)
-# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_I(s, p, o, m)
-# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_I(s, p, o, m)
-# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_I(s, p, o, m)
-# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_I(s, p, o, m)
-# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_I(s, p, o, m)
-# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_I(s, p, o, m)
-# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_I(s, p, o, m)
-# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_I(s, p, o, m)
-# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_I(s, p, o, m)
-# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_I(s, p, o, m)
-# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_I(s, p, o, m)
-# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_I(s, p, o, m)
-# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_I(s, p, o, m)
-# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_I(s, p, o, m)
-# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_I(s, p, o, m)
-# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_I(s, p, o, m)
-# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_I(s, p, o, m)
-# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_I(s, p, o, m)
-# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_I(s, p, o, m)
-# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_I(s, p, o, m)
-# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_I(s, p, o, m)
-# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_I(s, p, o, m)
-# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_I(s, p, o, m)
-# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_I(s, p, o, m)
-# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_I(s, p, o, m)
-# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_I(s, p, o, m)
-# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_I(s, p, o, m)
-# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_I(s, p, o, m)
-# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_I(s, p, o, m)
-# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_I(s, p, o, m)
-# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_I(s, p, o, m)
-# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_I(s, p, o, m)
-# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_I(s, p, o, m)
-# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_I(s, p, o, m)
-# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_I(s, p, o, m)
-# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_I(s, p, o, m)
-# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_I(s, p, o, m)
-# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_I(s, p, o, m)
-# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_I(s, p, o, m)
-# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_I(s, p, o, m)
-# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_I(s, p, o, m)
-# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_I(s, p, o, m)
-# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_I(s, p, o, m)
-# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_I(s, p, o, m)
-# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_I(s, p, o, m)
-# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_I(s, p, o, m)
-# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_I(s, p, o, m)
-# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_I(s, p, o, m)
-# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_I(s, p, o, m)
-# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_I(s, p, o, m)
-# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_I(s, p, o, m)
-# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_I(s, p, o, m)
-# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_I(s, p, o, m)
-# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_I(s, p, o, m)
-# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_I(s, p, o, m)
-# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_I(s, p, o, m)
-# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_I(s, p, o, m)
-# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_I(s, p, o, m)
-# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_I(s, p, o, m)
-# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_I(s, p, o, m)
-# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_I(s, p, o, m)
-# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_I(s, p, o, m)
-# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_I(s, p, o, m)
-# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_I(s, p, o, m)
-# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_I(s, p, o, m)
-# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_I(s, p, o, m)
-# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_I(s, p, o, m)
-# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_I(s, p, o, m)
-# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_I(s, p, o, m)
-# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_I(s, p, o, m)
-# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_I(s, p, o, m)
-# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_I(s, p, o, m)
-# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_I(s, p, o, m)
-# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_I(s, p, o, m)
-# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_I(s, p, o, m)
-# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_I(s, p, o, m)
-# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_I(s, p, o, m)
-# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_I(s, p, o, m)
-# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_I(s, p, o, m)
-# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_I(s, p, o, m)
-# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_I(s, p, o, m)
-# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_I(s, p, o, m)
-# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_I(s, p, o, m)
-# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_I(s, p, o, m)
-# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_I(s, p, o, m)
-# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_I(s, p, o, m)
-# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_I(s, p, o, m)
-# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_I(s, p, o, m)
-# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_I(s, p, o, m)
-# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_I(s, p, o, m)
-# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_I(s, p, o, m)
-# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_I(s, p, o, m)
-# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_I(s, p, o, m)
-# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_I(s, p, o, m)
-# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_I(s, p, o, m)
-# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_I(s, p, o, m)
-# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_I(s, p, o, m)
-# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_I(s, p, o, m)
-# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_I(s, p, o, m)
-# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_I(s, p, o, m)
-# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_I(s, p, o, m)
-# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_I(s, p, o, m)
-# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_I(s, p, o, m)
-# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_I(s, p, o, m)
-# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_I(s, p, o, m)
-# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_I(s, p, o, m)
-# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_I(s, p, o, m)
-# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_I(s, p, o, m)
-# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_I(s, p, o, m)
-# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_I(s, p, o, m)
-# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_I(s, p, o, m)
-# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_I(s, p, o, m)
-# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_I(s, p, o, m)
-# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_I(s, p, o, m)
-# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_I(s, p, o, m)
-# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_I(s, p, o, m)
-# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_I(s, p, o, m)
-# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_I(s, p, o, m)
-# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_I(s, p, o, m)
-#
-# define BOOST_PP_FOR_1_I(s, p, o, m) BOOST_PP_IF(p(2, s), m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IF(p(2, s), BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(o(2, s), p, o, m)
-# define BOOST_PP_FOR_2_I(s, p, o, m) BOOST_PP_IF(p(3, s), m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IF(p(3, s), BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(o(3, s), p, o, m)
-# define BOOST_PP_FOR_3_I(s, p, o, m) BOOST_PP_IF(p(4, s), m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IF(p(4, s), BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(o(4, s), p, o, m)
-# define BOOST_PP_FOR_4_I(s, p, o, m) BOOST_PP_IF(p(5, s), m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IF(p(5, s), BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(o(5, s), p, o, m)
-# define BOOST_PP_FOR_5_I(s, p, o, m) BOOST_PP_IF(p(6, s), m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IF(p(6, s), BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(o(6, s), p, o, m)
-# define BOOST_PP_FOR_6_I(s, p, o, m) BOOST_PP_IF(p(7, s), m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IF(p(7, s), BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(o(7, s), p, o, m)
-# define BOOST_PP_FOR_7_I(s, p, o, m) BOOST_PP_IF(p(8, s), m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IF(p(8, s), BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(o(8, s), p, o, m)
-# define BOOST_PP_FOR_8_I(s, p, o, m) BOOST_PP_IF(p(9, s), m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IF(p(9, s), BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(o(9, s), p, o, m)
-# define BOOST_PP_FOR_9_I(s, p, o, m) BOOST_PP_IF(p(10, s), m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IF(p(10, s), BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(o(10, s), p, o, m)
-# define BOOST_PP_FOR_10_I(s, p, o, m) BOOST_PP_IF(p(11, s), m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IF(p(11, s), BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(o(11, s), p, o, m)
-# define BOOST_PP_FOR_11_I(s, p, o, m) BOOST_PP_IF(p(12, s), m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IF(p(12, s), BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(o(12, s), p, o, m)
-# define BOOST_PP_FOR_12_I(s, p, o, m) BOOST_PP_IF(p(13, s), m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IF(p(13, s), BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(o(13, s), p, o, m)
-# define BOOST_PP_FOR_13_I(s, p, o, m) BOOST_PP_IF(p(14, s), m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IF(p(14, s), BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(o(14, s), p, o, m)
-# define BOOST_PP_FOR_14_I(s, p, o, m) BOOST_PP_IF(p(15, s), m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IF(p(15, s), BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(o(15, s), p, o, m)
-# define BOOST_PP_FOR_15_I(s, p, o, m) BOOST_PP_IF(p(16, s), m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IF(p(16, s), BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(o(16, s), p, o, m)
-# define BOOST_PP_FOR_16_I(s, p, o, m) BOOST_PP_IF(p(17, s), m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IF(p(17, s), BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(o(17, s), p, o, m)
-# define BOOST_PP_FOR_17_I(s, p, o, m) BOOST_PP_IF(p(18, s), m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IF(p(18, s), BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(o(18, s), p, o, m)
-# define BOOST_PP_FOR_18_I(s, p, o, m) BOOST_PP_IF(p(19, s), m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IF(p(19, s), BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(o(19, s), p, o, m)
-# define BOOST_PP_FOR_19_I(s, p, o, m) BOOST_PP_IF(p(20, s), m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IF(p(20, s), BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(o(20, s), p, o, m)
-# define BOOST_PP_FOR_20_I(s, p, o, m) BOOST_PP_IF(p(21, s), m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IF(p(21, s), BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(o(21, s), p, o, m)
-# define BOOST_PP_FOR_21_I(s, p, o, m) BOOST_PP_IF(p(22, s), m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IF(p(22, s), BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(o(22, s), p, o, m)
-# define BOOST_PP_FOR_22_I(s, p, o, m) BOOST_PP_IF(p(23, s), m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IF(p(23, s), BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(o(23, s), p, o, m)
-# define BOOST_PP_FOR_23_I(s, p, o, m) BOOST_PP_IF(p(24, s), m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IF(p(24, s), BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(o(24, s), p, o, m)
-# define BOOST_PP_FOR_24_I(s, p, o, m) BOOST_PP_IF(p(25, s), m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IF(p(25, s), BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(o(25, s), p, o, m)
-# define BOOST_PP_FOR_25_I(s, p, o, m) BOOST_PP_IF(p(26, s), m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IF(p(26, s), BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(o(26, s), p, o, m)
-# define BOOST_PP_FOR_26_I(s, p, o, m) BOOST_PP_IF(p(27, s), m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IF(p(27, s), BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(o(27, s), p, o, m)
-# define BOOST_PP_FOR_27_I(s, p, o, m) BOOST_PP_IF(p(28, s), m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IF(p(28, s), BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(o(28, s), p, o, m)
-# define BOOST_PP_FOR_28_I(s, p, o, m) BOOST_PP_IF(p(29, s), m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IF(p(29, s), BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(o(29, s), p, o, m)
-# define BOOST_PP_FOR_29_I(s, p, o, m) BOOST_PP_IF(p(30, s), m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IF(p(30, s), BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(o(30, s), p, o, m)
-# define BOOST_PP_FOR_30_I(s, p, o, m) BOOST_PP_IF(p(31, s), m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IF(p(31, s), BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(o(31, s), p, o, m)
-# define BOOST_PP_FOR_31_I(s, p, o, m) BOOST_PP_IF(p(32, s), m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IF(p(32, s), BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(o(32, s), p, o, m)
-# define BOOST_PP_FOR_32_I(s, p, o, m) BOOST_PP_IF(p(33, s), m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IF(p(33, s), BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(o(33, s), p, o, m)
-# define BOOST_PP_FOR_33_I(s, p, o, m) BOOST_PP_IF(p(34, s), m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IF(p(34, s), BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(o(34, s), p, o, m)
-# define BOOST_PP_FOR_34_I(s, p, o, m) BOOST_PP_IF(p(35, s), m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IF(p(35, s), BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(o(35, s), p, o, m)
-# define BOOST_PP_FOR_35_I(s, p, o, m) BOOST_PP_IF(p(36, s), m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IF(p(36, s), BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(o(36, s), p, o, m)
-# define BOOST_PP_FOR_36_I(s, p, o, m) BOOST_PP_IF(p(37, s), m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IF(p(37, s), BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(o(37, s), p, o, m)
-# define BOOST_PP_FOR_37_I(s, p, o, m) BOOST_PP_IF(p(38, s), m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IF(p(38, s), BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(o(38, s), p, o, m)
-# define BOOST_PP_FOR_38_I(s, p, o, m) BOOST_PP_IF(p(39, s), m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IF(p(39, s), BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(o(39, s), p, o, m)
-# define BOOST_PP_FOR_39_I(s, p, o, m) BOOST_PP_IF(p(40, s), m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IF(p(40, s), BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(o(40, s), p, o, m)
-# define BOOST_PP_FOR_40_I(s, p, o, m) BOOST_PP_IF(p(41, s), m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IF(p(41, s), BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(o(41, s), p, o, m)
-# define BOOST_PP_FOR_41_I(s, p, o, m) BOOST_PP_IF(p(42, s), m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IF(p(42, s), BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(o(42, s), p, o, m)
-# define BOOST_PP_FOR_42_I(s, p, o, m) BOOST_PP_IF(p(43, s), m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IF(p(43, s), BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(o(43, s), p, o, m)
-# define BOOST_PP_FOR_43_I(s, p, o, m) BOOST_PP_IF(p(44, s), m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IF(p(44, s), BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(o(44, s), p, o, m)
-# define BOOST_PP_FOR_44_I(s, p, o, m) BOOST_PP_IF(p(45, s), m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IF(p(45, s), BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(o(45, s), p, o, m)
-# define BOOST_PP_FOR_45_I(s, p, o, m) BOOST_PP_IF(p(46, s), m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IF(p(46, s), BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(o(46, s), p, o, m)
-# define BOOST_PP_FOR_46_I(s, p, o, m) BOOST_PP_IF(p(47, s), m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IF(p(47, s), BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(o(47, s), p, o, m)
-# define BOOST_PP_FOR_47_I(s, p, o, m) BOOST_PP_IF(p(48, s), m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IF(p(48, s), BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(o(48, s), p, o, m)
-# define BOOST_PP_FOR_48_I(s, p, o, m) BOOST_PP_IF(p(49, s), m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IF(p(49, s), BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(o(49, s), p, o, m)
-# define BOOST_PP_FOR_49_I(s, p, o, m) BOOST_PP_IF(p(50, s), m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IF(p(50, s), BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(o(50, s), p, o, m)
-# define BOOST_PP_FOR_50_I(s, p, o, m) BOOST_PP_IF(p(51, s), m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IF(p(51, s), BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(o(51, s), p, o, m)
-# define BOOST_PP_FOR_51_I(s, p, o, m) BOOST_PP_IF(p(52, s), m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IF(p(52, s), BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(o(52, s), p, o, m)
-# define BOOST_PP_FOR_52_I(s, p, o, m) BOOST_PP_IF(p(53, s), m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IF(p(53, s), BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(o(53, s), p, o, m)
-# define BOOST_PP_FOR_53_I(s, p, o, m) BOOST_PP_IF(p(54, s), m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IF(p(54, s), BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(o(54, s), p, o, m)
-# define BOOST_PP_FOR_54_I(s, p, o, m) BOOST_PP_IF(p(55, s), m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IF(p(55, s), BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(o(55, s), p, o, m)
-# define BOOST_PP_FOR_55_I(s, p, o, m) BOOST_PP_IF(p(56, s), m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IF(p(56, s), BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(o(56, s), p, o, m)
-# define BOOST_PP_FOR_56_I(s, p, o, m) BOOST_PP_IF(p(57, s), m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IF(p(57, s), BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(o(57, s), p, o, m)
-# define BOOST_PP_FOR_57_I(s, p, o, m) BOOST_PP_IF(p(58, s), m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IF(p(58, s), BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(o(58, s), p, o, m)
-# define BOOST_PP_FOR_58_I(s, p, o, m) BOOST_PP_IF(p(59, s), m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IF(p(59, s), BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(o(59, s), p, o, m)
-# define BOOST_PP_FOR_59_I(s, p, o, m) BOOST_PP_IF(p(60, s), m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IF(p(60, s), BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(o(60, s), p, o, m)
-# define BOOST_PP_FOR_60_I(s, p, o, m) BOOST_PP_IF(p(61, s), m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IF(p(61, s), BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(o(61, s), p, o, m)
-# define BOOST_PP_FOR_61_I(s, p, o, m) BOOST_PP_IF(p(62, s), m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IF(p(62, s), BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(o(62, s), p, o, m)
-# define BOOST_PP_FOR_62_I(s, p, o, m) BOOST_PP_IF(p(63, s), m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IF(p(63, s), BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(o(63, s), p, o, m)
-# define BOOST_PP_FOR_63_I(s, p, o, m) BOOST_PP_IF(p(64, s), m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IF(p(64, s), BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(o(64, s), p, o, m)
-# define BOOST_PP_FOR_64_I(s, p, o, m) BOOST_PP_IF(p(65, s), m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IF(p(65, s), BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(o(65, s), p, o, m)
-# define BOOST_PP_FOR_65_I(s, p, o, m) BOOST_PP_IF(p(66, s), m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IF(p(66, s), BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(o(66, s), p, o, m)
-# define BOOST_PP_FOR_66_I(s, p, o, m) BOOST_PP_IF(p(67, s), m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IF(p(67, s), BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(o(67, s), p, o, m)
-# define BOOST_PP_FOR_67_I(s, p, o, m) BOOST_PP_IF(p(68, s), m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IF(p(68, s), BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(o(68, s), p, o, m)
-# define BOOST_PP_FOR_68_I(s, p, o, m) BOOST_PP_IF(p(69, s), m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IF(p(69, s), BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(o(69, s), p, o, m)
-# define BOOST_PP_FOR_69_I(s, p, o, m) BOOST_PP_IF(p(70, s), m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IF(p(70, s), BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(o(70, s), p, o, m)
-# define BOOST_PP_FOR_70_I(s, p, o, m) BOOST_PP_IF(p(71, s), m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IF(p(71, s), BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(o(71, s), p, o, m)
-# define BOOST_PP_FOR_71_I(s, p, o, m) BOOST_PP_IF(p(72, s), m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IF(p(72, s), BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(o(72, s), p, o, m)
-# define BOOST_PP_FOR_72_I(s, p, o, m) BOOST_PP_IF(p(73, s), m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IF(p(73, s), BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(o(73, s), p, o, m)
-# define BOOST_PP_FOR_73_I(s, p, o, m) BOOST_PP_IF(p(74, s), m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IF(p(74, s), BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(o(74, s), p, o, m)
-# define BOOST_PP_FOR_74_I(s, p, o, m) BOOST_PP_IF(p(75, s), m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IF(p(75, s), BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(o(75, s), p, o, m)
-# define BOOST_PP_FOR_75_I(s, p, o, m) BOOST_PP_IF(p(76, s), m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IF(p(76, s), BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(o(76, s), p, o, m)
-# define BOOST_PP_FOR_76_I(s, p, o, m) BOOST_PP_IF(p(77, s), m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IF(p(77, s), BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(o(77, s), p, o, m)
-# define BOOST_PP_FOR_77_I(s, p, o, m) BOOST_PP_IF(p(78, s), m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IF(p(78, s), BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(o(78, s), p, o, m)
-# define BOOST_PP_FOR_78_I(s, p, o, m) BOOST_PP_IF(p(79, s), m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IF(p(79, s), BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(o(79, s), p, o, m)
-# define BOOST_PP_FOR_79_I(s, p, o, m) BOOST_PP_IF(p(80, s), m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IF(p(80, s), BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(o(80, s), p, o, m)
-# define BOOST_PP_FOR_80_I(s, p, o, m) BOOST_PP_IF(p(81, s), m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IF(p(81, s), BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(o(81, s), p, o, m)
-# define BOOST_PP_FOR_81_I(s, p, o, m) BOOST_PP_IF(p(82, s), m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IF(p(82, s), BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(o(82, s), p, o, m)
-# define BOOST_PP_FOR_82_I(s, p, o, m) BOOST_PP_IF(p(83, s), m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IF(p(83, s), BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(o(83, s), p, o, m)
-# define BOOST_PP_FOR_83_I(s, p, o, m) BOOST_PP_IF(p(84, s), m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IF(p(84, s), BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(o(84, s), p, o, m)
-# define BOOST_PP_FOR_84_I(s, p, o, m) BOOST_PP_IF(p(85, s), m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IF(p(85, s), BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(o(85, s), p, o, m)
-# define BOOST_PP_FOR_85_I(s, p, o, m) BOOST_PP_IF(p(86, s), m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IF(p(86, s), BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(o(86, s), p, o, m)
-# define BOOST_PP_FOR_86_I(s, p, o, m) BOOST_PP_IF(p(87, s), m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IF(p(87, s), BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(o(87, s), p, o, m)
-# define BOOST_PP_FOR_87_I(s, p, o, m) BOOST_PP_IF(p(88, s), m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IF(p(88, s), BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(o(88, s), p, o, m)
-# define BOOST_PP_FOR_88_I(s, p, o, m) BOOST_PP_IF(p(89, s), m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IF(p(89, s), BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(o(89, s), p, o, m)
-# define BOOST_PP_FOR_89_I(s, p, o, m) BOOST_PP_IF(p(90, s), m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IF(p(90, s), BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(o(90, s), p, o, m)
-# define BOOST_PP_FOR_90_I(s, p, o, m) BOOST_PP_IF(p(91, s), m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IF(p(91, s), BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(o(91, s), p, o, m)
-# define BOOST_PP_FOR_91_I(s, p, o, m) BOOST_PP_IF(p(92, s), m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IF(p(92, s), BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(o(92, s), p, o, m)
-# define BOOST_PP_FOR_92_I(s, p, o, m) BOOST_PP_IF(p(93, s), m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IF(p(93, s), BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(o(93, s), p, o, m)
-# define BOOST_PP_FOR_93_I(s, p, o, m) BOOST_PP_IF(p(94, s), m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IF(p(94, s), BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(o(94, s), p, o, m)
-# define BOOST_PP_FOR_94_I(s, p, o, m) BOOST_PP_IF(p(95, s), m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IF(p(95, s), BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(o(95, s), p, o, m)
-# define BOOST_PP_FOR_95_I(s, p, o, m) BOOST_PP_IF(p(96, s), m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IF(p(96, s), BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(o(96, s), p, o, m)
-# define BOOST_PP_FOR_96_I(s, p, o, m) BOOST_PP_IF(p(97, s), m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IF(p(97, s), BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(o(97, s), p, o, m)
-# define BOOST_PP_FOR_97_I(s, p, o, m) BOOST_PP_IF(p(98, s), m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IF(p(98, s), BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(o(98, s), p, o, m)
-# define BOOST_PP_FOR_98_I(s, p, o, m) BOOST_PP_IF(p(99, s), m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IF(p(99, s), BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(o(99, s), p, o, m)
-# define BOOST_PP_FOR_99_I(s, p, o, m) BOOST_PP_IF(p(100, s), m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IF(p(100, s), BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(o(100, s), p, o, m)
-# define BOOST_PP_FOR_100_I(s, p, o, m) BOOST_PP_IF(p(101, s), m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IF(p(101, s), BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(o(101, s), p, o, m)
-# define BOOST_PP_FOR_101_I(s, p, o, m) BOOST_PP_IF(p(102, s), m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IF(p(102, s), BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(o(102, s), p, o, m)
-# define BOOST_PP_FOR_102_I(s, p, o, m) BOOST_PP_IF(p(103, s), m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IF(p(103, s), BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(o(103, s), p, o, m)
-# define BOOST_PP_FOR_103_I(s, p, o, m) BOOST_PP_IF(p(104, s), m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IF(p(104, s), BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(o(104, s), p, o, m)
-# define BOOST_PP_FOR_104_I(s, p, o, m) BOOST_PP_IF(p(105, s), m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IF(p(105, s), BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(o(105, s), p, o, m)
-# define BOOST_PP_FOR_105_I(s, p, o, m) BOOST_PP_IF(p(106, s), m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IF(p(106, s), BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(o(106, s), p, o, m)
-# define BOOST_PP_FOR_106_I(s, p, o, m) BOOST_PP_IF(p(107, s), m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IF(p(107, s), BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(o(107, s), p, o, m)
-# define BOOST_PP_FOR_107_I(s, p, o, m) BOOST_PP_IF(p(108, s), m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IF(p(108, s), BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(o(108, s), p, o, m)
-# define BOOST_PP_FOR_108_I(s, p, o, m) BOOST_PP_IF(p(109, s), m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IF(p(109, s), BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(o(109, s), p, o, m)
-# define BOOST_PP_FOR_109_I(s, p, o, m) BOOST_PP_IF(p(110, s), m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IF(p(110, s), BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(o(110, s), p, o, m)
-# define BOOST_PP_FOR_110_I(s, p, o, m) BOOST_PP_IF(p(111, s), m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IF(p(111, s), BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(o(111, s), p, o, m)
-# define BOOST_PP_FOR_111_I(s, p, o, m) BOOST_PP_IF(p(112, s), m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IF(p(112, s), BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(o(112, s), p, o, m)
-# define BOOST_PP_FOR_112_I(s, p, o, m) BOOST_PP_IF(p(113, s), m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IF(p(113, s), BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(o(113, s), p, o, m)
-# define BOOST_PP_FOR_113_I(s, p, o, m) BOOST_PP_IF(p(114, s), m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IF(p(114, s), BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(o(114, s), p, o, m)
-# define BOOST_PP_FOR_114_I(s, p, o, m) BOOST_PP_IF(p(115, s), m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IF(p(115, s), BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(o(115, s), p, o, m)
-# define BOOST_PP_FOR_115_I(s, p, o, m) BOOST_PP_IF(p(116, s), m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IF(p(116, s), BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(o(116, s), p, o, m)
-# define BOOST_PP_FOR_116_I(s, p, o, m) BOOST_PP_IF(p(117, s), m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IF(p(117, s), BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(o(117, s), p, o, m)
-# define BOOST_PP_FOR_117_I(s, p, o, m) BOOST_PP_IF(p(118, s), m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IF(p(118, s), BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(o(118, s), p, o, m)
-# define BOOST_PP_FOR_118_I(s, p, o, m) BOOST_PP_IF(p(119, s), m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IF(p(119, s), BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(o(119, s), p, o, m)
-# define BOOST_PP_FOR_119_I(s, p, o, m) BOOST_PP_IF(p(120, s), m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IF(p(120, s), BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(o(120, s), p, o, m)
-# define BOOST_PP_FOR_120_I(s, p, o, m) BOOST_PP_IF(p(121, s), m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IF(p(121, s), BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(o(121, s), p, o, m)
-# define BOOST_PP_FOR_121_I(s, p, o, m) BOOST_PP_IF(p(122, s), m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IF(p(122, s), BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(o(122, s), p, o, m)
-# define BOOST_PP_FOR_122_I(s, p, o, m) BOOST_PP_IF(p(123, s), m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IF(p(123, s), BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(o(123, s), p, o, m)
-# define BOOST_PP_FOR_123_I(s, p, o, m) BOOST_PP_IF(p(124, s), m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IF(p(124, s), BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(o(124, s), p, o, m)
-# define BOOST_PP_FOR_124_I(s, p, o, m) BOOST_PP_IF(p(125, s), m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IF(p(125, s), BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(o(125, s), p, o, m)
-# define BOOST_PP_FOR_125_I(s, p, o, m) BOOST_PP_IF(p(126, s), m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IF(p(126, s), BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(o(126, s), p, o, m)
-# define BOOST_PP_FOR_126_I(s, p, o, m) BOOST_PP_IF(p(127, s), m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IF(p(127, s), BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(o(127, s), p, o, m)
-# define BOOST_PP_FOR_127_I(s, p, o, m) BOOST_PP_IF(p(128, s), m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IF(p(128, s), BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(o(128, s), p, o, m)
-# define BOOST_PP_FOR_128_I(s, p, o, m) BOOST_PP_IF(p(129, s), m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IF(p(129, s), BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(o(129, s), p, o, m)
-# define BOOST_PP_FOR_129_I(s, p, o, m) BOOST_PP_IF(p(130, s), m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IF(p(130, s), BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(o(130, s), p, o, m)
-# define BOOST_PP_FOR_130_I(s, p, o, m) BOOST_PP_IF(p(131, s), m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IF(p(131, s), BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(o(131, s), p, o, m)
-# define BOOST_PP_FOR_131_I(s, p, o, m) BOOST_PP_IF(p(132, s), m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IF(p(132, s), BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(o(132, s), p, o, m)
-# define BOOST_PP_FOR_132_I(s, p, o, m) BOOST_PP_IF(p(133, s), m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IF(p(133, s), BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(o(133, s), p, o, m)
-# define BOOST_PP_FOR_133_I(s, p, o, m) BOOST_PP_IF(p(134, s), m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IF(p(134, s), BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(o(134, s), p, o, m)
-# define BOOST_PP_FOR_134_I(s, p, o, m) BOOST_PP_IF(p(135, s), m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IF(p(135, s), BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(o(135, s), p, o, m)
-# define BOOST_PP_FOR_135_I(s, p, o, m) BOOST_PP_IF(p(136, s), m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IF(p(136, s), BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(o(136, s), p, o, m)
-# define BOOST_PP_FOR_136_I(s, p, o, m) BOOST_PP_IF(p(137, s), m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IF(p(137, s), BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(o(137, s), p, o, m)
-# define BOOST_PP_FOR_137_I(s, p, o, m) BOOST_PP_IF(p(138, s), m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IF(p(138, s), BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(o(138, s), p, o, m)
-# define BOOST_PP_FOR_138_I(s, p, o, m) BOOST_PP_IF(p(139, s), m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IF(p(139, s), BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(o(139, s), p, o, m)
-# define BOOST_PP_FOR_139_I(s, p, o, m) BOOST_PP_IF(p(140, s), m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IF(p(140, s), BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(o(140, s), p, o, m)
-# define BOOST_PP_FOR_140_I(s, p, o, m) BOOST_PP_IF(p(141, s), m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IF(p(141, s), BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(o(141, s), p, o, m)
-# define BOOST_PP_FOR_141_I(s, p, o, m) BOOST_PP_IF(p(142, s), m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IF(p(142, s), BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(o(142, s), p, o, m)
-# define BOOST_PP_FOR_142_I(s, p, o, m) BOOST_PP_IF(p(143, s), m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IF(p(143, s), BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(o(143, s), p, o, m)
-# define BOOST_PP_FOR_143_I(s, p, o, m) BOOST_PP_IF(p(144, s), m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IF(p(144, s), BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(o(144, s), p, o, m)
-# define BOOST_PP_FOR_144_I(s, p, o, m) BOOST_PP_IF(p(145, s), m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IF(p(145, s), BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(o(145, s), p, o, m)
-# define BOOST_PP_FOR_145_I(s, p, o, m) BOOST_PP_IF(p(146, s), m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IF(p(146, s), BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(o(146, s), p, o, m)
-# define BOOST_PP_FOR_146_I(s, p, o, m) BOOST_PP_IF(p(147, s), m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IF(p(147, s), BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(o(147, s), p, o, m)
-# define BOOST_PP_FOR_147_I(s, p, o, m) BOOST_PP_IF(p(148, s), m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IF(p(148, s), BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(o(148, s), p, o, m)
-# define BOOST_PP_FOR_148_I(s, p, o, m) BOOST_PP_IF(p(149, s), m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IF(p(149, s), BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(o(149, s), p, o, m)
-# define BOOST_PP_FOR_149_I(s, p, o, m) BOOST_PP_IF(p(150, s), m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IF(p(150, s), BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(o(150, s), p, o, m)
-# define BOOST_PP_FOR_150_I(s, p, o, m) BOOST_PP_IF(p(151, s), m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IF(p(151, s), BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(o(151, s), p, o, m)
-# define BOOST_PP_FOR_151_I(s, p, o, m) BOOST_PP_IF(p(152, s), m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IF(p(152, s), BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(o(152, s), p, o, m)
-# define BOOST_PP_FOR_152_I(s, p, o, m) BOOST_PP_IF(p(153, s), m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IF(p(153, s), BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(o(153, s), p, o, m)
-# define BOOST_PP_FOR_153_I(s, p, o, m) BOOST_PP_IF(p(154, s), m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IF(p(154, s), BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(o(154, s), p, o, m)
-# define BOOST_PP_FOR_154_I(s, p, o, m) BOOST_PP_IF(p(155, s), m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IF(p(155, s), BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(o(155, s), p, o, m)
-# define BOOST_PP_FOR_155_I(s, p, o, m) BOOST_PP_IF(p(156, s), m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IF(p(156, s), BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(o(156, s), p, o, m)
-# define BOOST_PP_FOR_156_I(s, p, o, m) BOOST_PP_IF(p(157, s), m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IF(p(157, s), BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(o(157, s), p, o, m)
-# define BOOST_PP_FOR_157_I(s, p, o, m) BOOST_PP_IF(p(158, s), m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IF(p(158, s), BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(o(158, s), p, o, m)
-# define BOOST_PP_FOR_158_I(s, p, o, m) BOOST_PP_IF(p(159, s), m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IF(p(159, s), BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(o(159, s), p, o, m)
-# define BOOST_PP_FOR_159_I(s, p, o, m) BOOST_PP_IF(p(160, s), m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IF(p(160, s), BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(o(160, s), p, o, m)
-# define BOOST_PP_FOR_160_I(s, p, o, m) BOOST_PP_IF(p(161, s), m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IF(p(161, s), BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(o(161, s), p, o, m)
-# define BOOST_PP_FOR_161_I(s, p, o, m) BOOST_PP_IF(p(162, s), m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IF(p(162, s), BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(o(162, s), p, o, m)
-# define BOOST_PP_FOR_162_I(s, p, o, m) BOOST_PP_IF(p(163, s), m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IF(p(163, s), BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(o(163, s), p, o, m)
-# define BOOST_PP_FOR_163_I(s, p, o, m) BOOST_PP_IF(p(164, s), m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IF(p(164, s), BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(o(164, s), p, o, m)
-# define BOOST_PP_FOR_164_I(s, p, o, m) BOOST_PP_IF(p(165, s), m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IF(p(165, s), BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(o(165, s), p, o, m)
-# define BOOST_PP_FOR_165_I(s, p, o, m) BOOST_PP_IF(p(166, s), m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IF(p(166, s), BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(o(166, s), p, o, m)
-# define BOOST_PP_FOR_166_I(s, p, o, m) BOOST_PP_IF(p(167, s), m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IF(p(167, s), BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(o(167, s), p, o, m)
-# define BOOST_PP_FOR_167_I(s, p, o, m) BOOST_PP_IF(p(168, s), m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IF(p(168, s), BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(o(168, s), p, o, m)
-# define BOOST_PP_FOR_168_I(s, p, o, m) BOOST_PP_IF(p(169, s), m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IF(p(169, s), BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(o(169, s), p, o, m)
-# define BOOST_PP_FOR_169_I(s, p, o, m) BOOST_PP_IF(p(170, s), m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IF(p(170, s), BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(o(170, s), p, o, m)
-# define BOOST_PP_FOR_170_I(s, p, o, m) BOOST_PP_IF(p(171, s), m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IF(p(171, s), BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(o(171, s), p, o, m)
-# define BOOST_PP_FOR_171_I(s, p, o, m) BOOST_PP_IF(p(172, s), m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IF(p(172, s), BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(o(172, s), p, o, m)
-# define BOOST_PP_FOR_172_I(s, p, o, m) BOOST_PP_IF(p(173, s), m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IF(p(173, s), BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(o(173, s), p, o, m)
-# define BOOST_PP_FOR_173_I(s, p, o, m) BOOST_PP_IF(p(174, s), m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IF(p(174, s), BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(o(174, s), p, o, m)
-# define BOOST_PP_FOR_174_I(s, p, o, m) BOOST_PP_IF(p(175, s), m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IF(p(175, s), BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(o(175, s), p, o, m)
-# define BOOST_PP_FOR_175_I(s, p, o, m) BOOST_PP_IF(p(176, s), m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IF(p(176, s), BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(o(176, s), p, o, m)
-# define BOOST_PP_FOR_176_I(s, p, o, m) BOOST_PP_IF(p(177, s), m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IF(p(177, s), BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(o(177, s), p, o, m)
-# define BOOST_PP_FOR_177_I(s, p, o, m) BOOST_PP_IF(p(178, s), m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IF(p(178, s), BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(o(178, s), p, o, m)
-# define BOOST_PP_FOR_178_I(s, p, o, m) BOOST_PP_IF(p(179, s), m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IF(p(179, s), BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(o(179, s), p, o, m)
-# define BOOST_PP_FOR_179_I(s, p, o, m) BOOST_PP_IF(p(180, s), m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IF(p(180, s), BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(o(180, s), p, o, m)
-# define BOOST_PP_FOR_180_I(s, p, o, m) BOOST_PP_IF(p(181, s), m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IF(p(181, s), BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(o(181, s), p, o, m)
-# define BOOST_PP_FOR_181_I(s, p, o, m) BOOST_PP_IF(p(182, s), m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IF(p(182, s), BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(o(182, s), p, o, m)
-# define BOOST_PP_FOR_182_I(s, p, o, m) BOOST_PP_IF(p(183, s), m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IF(p(183, s), BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(o(183, s), p, o, m)
-# define BOOST_PP_FOR_183_I(s, p, o, m) BOOST_PP_IF(p(184, s), m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IF(p(184, s), BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(o(184, s), p, o, m)
-# define BOOST_PP_FOR_184_I(s, p, o, m) BOOST_PP_IF(p(185, s), m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IF(p(185, s), BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(o(185, s), p, o, m)
-# define BOOST_PP_FOR_185_I(s, p, o, m) BOOST_PP_IF(p(186, s), m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IF(p(186, s), BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(o(186, s), p, o, m)
-# define BOOST_PP_FOR_186_I(s, p, o, m) BOOST_PP_IF(p(187, s), m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IF(p(187, s), BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(o(187, s), p, o, m)
-# define BOOST_PP_FOR_187_I(s, p, o, m) BOOST_PP_IF(p(188, s), m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IF(p(188, s), BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(o(188, s), p, o, m)
-# define BOOST_PP_FOR_188_I(s, p, o, m) BOOST_PP_IF(p(189, s), m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IF(p(189, s), BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(o(189, s), p, o, m)
-# define BOOST_PP_FOR_189_I(s, p, o, m) BOOST_PP_IF(p(190, s), m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IF(p(190, s), BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(o(190, s), p, o, m)
-# define BOOST_PP_FOR_190_I(s, p, o, m) BOOST_PP_IF(p(191, s), m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IF(p(191, s), BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(o(191, s), p, o, m)
-# define BOOST_PP_FOR_191_I(s, p, o, m) BOOST_PP_IF(p(192, s), m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IF(p(192, s), BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(o(192, s), p, o, m)
-# define BOOST_PP_FOR_192_I(s, p, o, m) BOOST_PP_IF(p(193, s), m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IF(p(193, s), BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(o(193, s), p, o, m)
-# define BOOST_PP_FOR_193_I(s, p, o, m) BOOST_PP_IF(p(194, s), m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IF(p(194, s), BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(o(194, s), p, o, m)
-# define BOOST_PP_FOR_194_I(s, p, o, m) BOOST_PP_IF(p(195, s), m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IF(p(195, s), BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(o(195, s), p, o, m)
-# define BOOST_PP_FOR_195_I(s, p, o, m) BOOST_PP_IF(p(196, s), m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IF(p(196, s), BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(o(196, s), p, o, m)
-# define BOOST_PP_FOR_196_I(s, p, o, m) BOOST_PP_IF(p(197, s), m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IF(p(197, s), BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(o(197, s), p, o, m)
-# define BOOST_PP_FOR_197_I(s, p, o, m) BOOST_PP_IF(p(198, s), m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IF(p(198, s), BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(o(198, s), p, o, m)
-# define BOOST_PP_FOR_198_I(s, p, o, m) BOOST_PP_IF(p(199, s), m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IF(p(199, s), BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(o(199, s), p, o, m)
-# define BOOST_PP_FOR_199_I(s, p, o, m) BOOST_PP_IF(p(200, s), m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IF(p(200, s), BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(o(200, s), p, o, m)
-# define BOOST_PP_FOR_200_I(s, p, o, m) BOOST_PP_IF(p(201, s), m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IF(p(201, s), BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(o(201, s), p, o, m)
-# define BOOST_PP_FOR_201_I(s, p, o, m) BOOST_PP_IF(p(202, s), m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IF(p(202, s), BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(o(202, s), p, o, m)
-# define BOOST_PP_FOR_202_I(s, p, o, m) BOOST_PP_IF(p(203, s), m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IF(p(203, s), BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(o(203, s), p, o, m)
-# define BOOST_PP_FOR_203_I(s, p, o, m) BOOST_PP_IF(p(204, s), m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IF(p(204, s), BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(o(204, s), p, o, m)
-# define BOOST_PP_FOR_204_I(s, p, o, m) BOOST_PP_IF(p(205, s), m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IF(p(205, s), BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(o(205, s), p, o, m)
-# define BOOST_PP_FOR_205_I(s, p, o, m) BOOST_PP_IF(p(206, s), m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IF(p(206, s), BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(o(206, s), p, o, m)
-# define BOOST_PP_FOR_206_I(s, p, o, m) BOOST_PP_IF(p(207, s), m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IF(p(207, s), BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(o(207, s), p, o, m)
-# define BOOST_PP_FOR_207_I(s, p, o, m) BOOST_PP_IF(p(208, s), m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IF(p(208, s), BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(o(208, s), p, o, m)
-# define BOOST_PP_FOR_208_I(s, p, o, m) BOOST_PP_IF(p(209, s), m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IF(p(209, s), BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(o(209, s), p, o, m)
-# define BOOST_PP_FOR_209_I(s, p, o, m) BOOST_PP_IF(p(210, s), m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IF(p(210, s), BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(o(210, s), p, o, m)
-# define BOOST_PP_FOR_210_I(s, p, o, m) BOOST_PP_IF(p(211, s), m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IF(p(211, s), BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(o(211, s), p, o, m)
-# define BOOST_PP_FOR_211_I(s, p, o, m) BOOST_PP_IF(p(212, s), m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IF(p(212, s), BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(o(212, s), p, o, m)
-# define BOOST_PP_FOR_212_I(s, p, o, m) BOOST_PP_IF(p(213, s), m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IF(p(213, s), BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(o(213, s), p, o, m)
-# define BOOST_PP_FOR_213_I(s, p, o, m) BOOST_PP_IF(p(214, s), m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IF(p(214, s), BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(o(214, s), p, o, m)
-# define BOOST_PP_FOR_214_I(s, p, o, m) BOOST_PP_IF(p(215, s), m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IF(p(215, s), BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(o(215, s), p, o, m)
-# define BOOST_PP_FOR_215_I(s, p, o, m) BOOST_PP_IF(p(216, s), m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IF(p(216, s), BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(o(216, s), p, o, m)
-# define BOOST_PP_FOR_216_I(s, p, o, m) BOOST_PP_IF(p(217, s), m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IF(p(217, s), BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(o(217, s), p, o, m)
-# define BOOST_PP_FOR_217_I(s, p, o, m) BOOST_PP_IF(p(218, s), m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IF(p(218, s), BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(o(218, s), p, o, m)
-# define BOOST_PP_FOR_218_I(s, p, o, m) BOOST_PP_IF(p(219, s), m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IF(p(219, s), BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(o(219, s), p, o, m)
-# define BOOST_PP_FOR_219_I(s, p, o, m) BOOST_PP_IF(p(220, s), m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IF(p(220, s), BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(o(220, s), p, o, m)
-# define BOOST_PP_FOR_220_I(s, p, o, m) BOOST_PP_IF(p(221, s), m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IF(p(221, s), BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(o(221, s), p, o, m)
-# define BOOST_PP_FOR_221_I(s, p, o, m) BOOST_PP_IF(p(222, s), m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IF(p(222, s), BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(o(222, s), p, o, m)
-# define BOOST_PP_FOR_222_I(s, p, o, m) BOOST_PP_IF(p(223, s), m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IF(p(223, s), BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(o(223, s), p, o, m)
-# define BOOST_PP_FOR_223_I(s, p, o, m) BOOST_PP_IF(p(224, s), m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IF(p(224, s), BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(o(224, s), p, o, m)
-# define BOOST_PP_FOR_224_I(s, p, o, m) BOOST_PP_IF(p(225, s), m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IF(p(225, s), BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(o(225, s), p, o, m)
-# define BOOST_PP_FOR_225_I(s, p, o, m) BOOST_PP_IF(p(226, s), m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IF(p(226, s), BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(o(226, s), p, o, m)
-# define BOOST_PP_FOR_226_I(s, p, o, m) BOOST_PP_IF(p(227, s), m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IF(p(227, s), BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(o(227, s), p, o, m)
-# define BOOST_PP_FOR_227_I(s, p, o, m) BOOST_PP_IF(p(228, s), m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IF(p(228, s), BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(o(228, s), p, o, m)
-# define BOOST_PP_FOR_228_I(s, p, o, m) BOOST_PP_IF(p(229, s), m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IF(p(229, s), BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(o(229, s), p, o, m)
-# define BOOST_PP_FOR_229_I(s, p, o, m) BOOST_PP_IF(p(230, s), m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IF(p(230, s), BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(o(230, s), p, o, m)
-# define BOOST_PP_FOR_230_I(s, p, o, m) BOOST_PP_IF(p(231, s), m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IF(p(231, s), BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(o(231, s), p, o, m)
-# define BOOST_PP_FOR_231_I(s, p, o, m) BOOST_PP_IF(p(232, s), m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IF(p(232, s), BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(o(232, s), p, o, m)
-# define BOOST_PP_FOR_232_I(s, p, o, m) BOOST_PP_IF(p(233, s), m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IF(p(233, s), BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(o(233, s), p, o, m)
-# define BOOST_PP_FOR_233_I(s, p, o, m) BOOST_PP_IF(p(234, s), m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IF(p(234, s), BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(o(234, s), p, o, m)
-# define BOOST_PP_FOR_234_I(s, p, o, m) BOOST_PP_IF(p(235, s), m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IF(p(235, s), BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(o(235, s), p, o, m)
-# define BOOST_PP_FOR_235_I(s, p, o, m) BOOST_PP_IF(p(236, s), m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IF(p(236, s), BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(o(236, s), p, o, m)
-# define BOOST_PP_FOR_236_I(s, p, o, m) BOOST_PP_IF(p(237, s), m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IF(p(237, s), BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(o(237, s), p, o, m)
-# define BOOST_PP_FOR_237_I(s, p, o, m) BOOST_PP_IF(p(238, s), m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IF(p(238, s), BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(o(238, s), p, o, m)
-# define BOOST_PP_FOR_238_I(s, p, o, m) BOOST_PP_IF(p(239, s), m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IF(p(239, s), BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(o(239, s), p, o, m)
-# define BOOST_PP_FOR_239_I(s, p, o, m) BOOST_PP_IF(p(240, s), m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IF(p(240, s), BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(o(240, s), p, o, m)
-# define BOOST_PP_FOR_240_I(s, p, o, m) BOOST_PP_IF(p(241, s), m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IF(p(241, s), BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(o(241, s), p, o, m)
-# define BOOST_PP_FOR_241_I(s, p, o, m) BOOST_PP_IF(p(242, s), m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IF(p(242, s), BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(o(242, s), p, o, m)
-# define BOOST_PP_FOR_242_I(s, p, o, m) BOOST_PP_IF(p(243, s), m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IF(p(243, s), BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(o(243, s), p, o, m)
-# define BOOST_PP_FOR_243_I(s, p, o, m) BOOST_PP_IF(p(244, s), m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IF(p(244, s), BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(o(244, s), p, o, m)
-# define BOOST_PP_FOR_244_I(s, p, o, m) BOOST_PP_IF(p(245, s), m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IF(p(245, s), BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(o(245, s), p, o, m)
-# define BOOST_PP_FOR_245_I(s, p, o, m) BOOST_PP_IF(p(246, s), m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IF(p(246, s), BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(o(246, s), p, o, m)
-# define BOOST_PP_FOR_246_I(s, p, o, m) BOOST_PP_IF(p(247, s), m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IF(p(247, s), BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(o(247, s), p, o, m)
-# define BOOST_PP_FOR_247_I(s, p, o, m) BOOST_PP_IF(p(248, s), m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IF(p(248, s), BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(o(248, s), p, o, m)
-# define BOOST_PP_FOR_248_I(s, p, o, m) BOOST_PP_IF(p(249, s), m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IF(p(249, s), BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(o(249, s), p, o, m)
-# define BOOST_PP_FOR_249_I(s, p, o, m) BOOST_PP_IF(p(250, s), m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IF(p(250, s), BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(o(250, s), p, o, m)
-# define BOOST_PP_FOR_250_I(s, p, o, m) BOOST_PP_IF(p(251, s), m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IF(p(251, s), BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(o(251, s), p, o, m)
-# define BOOST_PP_FOR_251_I(s, p, o, m) BOOST_PP_IF(p(252, s), m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IF(p(252, s), BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(o(252, s), p, o, m)
-# define BOOST_PP_FOR_252_I(s, p, o, m) BOOST_PP_IF(p(253, s), m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IF(p(253, s), BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(o(253, s), p, o, m)
-# define BOOST_PP_FOR_253_I(s, p, o, m) BOOST_PP_IF(p(254, s), m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IF(p(254, s), BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(o(254, s), p, o, m)
-# define BOOST_PP_FOR_254_I(s, p, o, m) BOOST_PP_IF(p(255, s), m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IF(p(255, s), BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(o(255, s), p, o, m)
-# define BOOST_PP_FOR_255_I(s, p, o, m) BOOST_PP_IF(p(256, s), m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IF(p(256, s), BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(o(256, s), p, o, m)
-# define BOOST_PP_FOR_256_I(s, p, o, m) BOOST_PP_IF(p(257, s), m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IF(p(257, s), BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(o(257, s), p, o, m)
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repetition/detail/for.hpp b/libcutl/cutl/details/boost/preprocessor/repetition/detail/for.hpp
deleted file mode 100644
index 1095810..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repetition/detail/for.hpp
+++ /dev/null
@@ -1,536 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
-# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
-#
-# include <cutl/details/boost/preprocessor/control/expr_iif.hpp>
-# include <cutl/details/boost/preprocessor/control/iif.hpp>
-# include <cutl/details/boost/preprocessor/logical/bool.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_C(BOOST_PP_BOOL(p(2, s)), s, p, o, m)
-# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_C(BOOST_PP_BOOL(p(3, s)), s, p, o, m)
-# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_C(BOOST_PP_BOOL(p(4, s)), s, p, o, m)
-# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_C(BOOST_PP_BOOL(p(5, s)), s, p, o, m)
-# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_C(BOOST_PP_BOOL(p(6, s)), s, p, o, m)
-# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_C(BOOST_PP_BOOL(p(7, s)), s, p, o, m)
-# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_C(BOOST_PP_BOOL(p(8, s)), s, p, o, m)
-# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_C(BOOST_PP_BOOL(p(9, s)), s, p, o, m)
-# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_C(BOOST_PP_BOOL(p(10, s)), s, p, o, m)
-# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_C(BOOST_PP_BOOL(p(11, s)), s, p, o, m)
-# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_C(BOOST_PP_BOOL(p(12, s)), s, p, o, m)
-# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_C(BOOST_PP_BOOL(p(13, s)), s, p, o, m)
-# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_C(BOOST_PP_BOOL(p(14, s)), s, p, o, m)
-# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_C(BOOST_PP_BOOL(p(15, s)), s, p, o, m)
-# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_C(BOOST_PP_BOOL(p(16, s)), s, p, o, m)
-# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_C(BOOST_PP_BOOL(p(17, s)), s, p, o, m)
-# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_C(BOOST_PP_BOOL(p(18, s)), s, p, o, m)
-# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_C(BOOST_PP_BOOL(p(19, s)), s, p, o, m)
-# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_C(BOOST_PP_BOOL(p(20, s)), s, p, o, m)
-# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_C(BOOST_PP_BOOL(p(21, s)), s, p, o, m)
-# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_C(BOOST_PP_BOOL(p(22, s)), s, p, o, m)
-# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_C(BOOST_PP_BOOL(p(23, s)), s, p, o, m)
-# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_C(BOOST_PP_BOOL(p(24, s)), s, p, o, m)
-# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_C(BOOST_PP_BOOL(p(25, s)), s, p, o, m)
-# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_C(BOOST_PP_BOOL(p(26, s)), s, p, o, m)
-# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_C(BOOST_PP_BOOL(p(27, s)), s, p, o, m)
-# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_C(BOOST_PP_BOOL(p(28, s)), s, p, o, m)
-# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_C(BOOST_PP_BOOL(p(29, s)), s, p, o, m)
-# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_C(BOOST_PP_BOOL(p(30, s)), s, p, o, m)
-# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_C(BOOST_PP_BOOL(p(31, s)), s, p, o, m)
-# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_C(BOOST_PP_BOOL(p(32, s)), s, p, o, m)
-# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_C(BOOST_PP_BOOL(p(33, s)), s, p, o, m)
-# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_C(BOOST_PP_BOOL(p(34, s)), s, p, o, m)
-# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_C(BOOST_PP_BOOL(p(35, s)), s, p, o, m)
-# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_C(BOOST_PP_BOOL(p(36, s)), s, p, o, m)
-# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_C(BOOST_PP_BOOL(p(37, s)), s, p, o, m)
-# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_C(BOOST_PP_BOOL(p(38, s)), s, p, o, m)
-# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_C(BOOST_PP_BOOL(p(39, s)), s, p, o, m)
-# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_C(BOOST_PP_BOOL(p(40, s)), s, p, o, m)
-# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_C(BOOST_PP_BOOL(p(41, s)), s, p, o, m)
-# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_C(BOOST_PP_BOOL(p(42, s)), s, p, o, m)
-# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_C(BOOST_PP_BOOL(p(43, s)), s, p, o, m)
-# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_C(BOOST_PP_BOOL(p(44, s)), s, p, o, m)
-# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_C(BOOST_PP_BOOL(p(45, s)), s, p, o, m)
-# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_C(BOOST_PP_BOOL(p(46, s)), s, p, o, m)
-# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_C(BOOST_PP_BOOL(p(47, s)), s, p, o, m)
-# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_C(BOOST_PP_BOOL(p(48, s)), s, p, o, m)
-# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_C(BOOST_PP_BOOL(p(49, s)), s, p, o, m)
-# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_C(BOOST_PP_BOOL(p(50, s)), s, p, o, m)
-# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_C(BOOST_PP_BOOL(p(51, s)), s, p, o, m)
-# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_C(BOOST_PP_BOOL(p(52, s)), s, p, o, m)
-# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_C(BOOST_PP_BOOL(p(53, s)), s, p, o, m)
-# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_C(BOOST_PP_BOOL(p(54, s)), s, p, o, m)
-# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_C(BOOST_PP_BOOL(p(55, s)), s, p, o, m)
-# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_C(BOOST_PP_BOOL(p(56, s)), s, p, o, m)
-# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_C(BOOST_PP_BOOL(p(57, s)), s, p, o, m)
-# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_C(BOOST_PP_BOOL(p(58, s)), s, p, o, m)
-# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_C(BOOST_PP_BOOL(p(59, s)), s, p, o, m)
-# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_C(BOOST_PP_BOOL(p(60, s)), s, p, o, m)
-# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_C(BOOST_PP_BOOL(p(61, s)), s, p, o, m)
-# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_C(BOOST_PP_BOOL(p(62, s)), s, p, o, m)
-# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_C(BOOST_PP_BOOL(p(63, s)), s, p, o, m)
-# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_C(BOOST_PP_BOOL(p(64, s)), s, p, o, m)
-# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_C(BOOST_PP_BOOL(p(65, s)), s, p, o, m)
-# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_C(BOOST_PP_BOOL(p(66, s)), s, p, o, m)
-# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_C(BOOST_PP_BOOL(p(67, s)), s, p, o, m)
-# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_C(BOOST_PP_BOOL(p(68, s)), s, p, o, m)
-# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_C(BOOST_PP_BOOL(p(69, s)), s, p, o, m)
-# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_C(BOOST_PP_BOOL(p(70, s)), s, p, o, m)
-# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_C(BOOST_PP_BOOL(p(71, s)), s, p, o, m)
-# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_C(BOOST_PP_BOOL(p(72, s)), s, p, o, m)
-# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_C(BOOST_PP_BOOL(p(73, s)), s, p, o, m)
-# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_C(BOOST_PP_BOOL(p(74, s)), s, p, o, m)
-# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_C(BOOST_PP_BOOL(p(75, s)), s, p, o, m)
-# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_C(BOOST_PP_BOOL(p(76, s)), s, p, o, m)
-# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_C(BOOST_PP_BOOL(p(77, s)), s, p, o, m)
-# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_C(BOOST_PP_BOOL(p(78, s)), s, p, o, m)
-# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_C(BOOST_PP_BOOL(p(79, s)), s, p, o, m)
-# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_C(BOOST_PP_BOOL(p(80, s)), s, p, o, m)
-# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_C(BOOST_PP_BOOL(p(81, s)), s, p, o, m)
-# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_C(BOOST_PP_BOOL(p(82, s)), s, p, o, m)
-# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_C(BOOST_PP_BOOL(p(83, s)), s, p, o, m)
-# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_C(BOOST_PP_BOOL(p(84, s)), s, p, o, m)
-# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_C(BOOST_PP_BOOL(p(85, s)), s, p, o, m)
-# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_C(BOOST_PP_BOOL(p(86, s)), s, p, o, m)
-# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_C(BOOST_PP_BOOL(p(87, s)), s, p, o, m)
-# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_C(BOOST_PP_BOOL(p(88, s)), s, p, o, m)
-# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_C(BOOST_PP_BOOL(p(89, s)), s, p, o, m)
-# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_C(BOOST_PP_BOOL(p(90, s)), s, p, o, m)
-# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_C(BOOST_PP_BOOL(p(91, s)), s, p, o, m)
-# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_C(BOOST_PP_BOOL(p(92, s)), s, p, o, m)
-# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_C(BOOST_PP_BOOL(p(93, s)), s, p, o, m)
-# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_C(BOOST_PP_BOOL(p(94, s)), s, p, o, m)
-# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_C(BOOST_PP_BOOL(p(95, s)), s, p, o, m)
-# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_C(BOOST_PP_BOOL(p(96, s)), s, p, o, m)
-# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_C(BOOST_PP_BOOL(p(97, s)), s, p, o, m)
-# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_C(BOOST_PP_BOOL(p(98, s)), s, p, o, m)
-# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_C(BOOST_PP_BOOL(p(99, s)), s, p, o, m)
-# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_C(BOOST_PP_BOOL(p(100, s)), s, p, o, m)
-# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_C(BOOST_PP_BOOL(p(101, s)), s, p, o, m)
-# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_C(BOOST_PP_BOOL(p(102, s)), s, p, o, m)
-# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_C(BOOST_PP_BOOL(p(103, s)), s, p, o, m)
-# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_C(BOOST_PP_BOOL(p(104, s)), s, p, o, m)
-# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_C(BOOST_PP_BOOL(p(105, s)), s, p, o, m)
-# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_C(BOOST_PP_BOOL(p(106, s)), s, p, o, m)
-# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_C(BOOST_PP_BOOL(p(107, s)), s, p, o, m)
-# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_C(BOOST_PP_BOOL(p(108, s)), s, p, o, m)
-# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_C(BOOST_PP_BOOL(p(109, s)), s, p, o, m)
-# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_C(BOOST_PP_BOOL(p(110, s)), s, p, o, m)
-# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_C(BOOST_PP_BOOL(p(111, s)), s, p, o, m)
-# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_C(BOOST_PP_BOOL(p(112, s)), s, p, o, m)
-# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_C(BOOST_PP_BOOL(p(113, s)), s, p, o, m)
-# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_C(BOOST_PP_BOOL(p(114, s)), s, p, o, m)
-# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_C(BOOST_PP_BOOL(p(115, s)), s, p, o, m)
-# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_C(BOOST_PP_BOOL(p(116, s)), s, p, o, m)
-# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_C(BOOST_PP_BOOL(p(117, s)), s, p, o, m)
-# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_C(BOOST_PP_BOOL(p(118, s)), s, p, o, m)
-# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_C(BOOST_PP_BOOL(p(119, s)), s, p, o, m)
-# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_C(BOOST_PP_BOOL(p(120, s)), s, p, o, m)
-# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_C(BOOST_PP_BOOL(p(121, s)), s, p, o, m)
-# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_C(BOOST_PP_BOOL(p(122, s)), s, p, o, m)
-# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_C(BOOST_PP_BOOL(p(123, s)), s, p, o, m)
-# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_C(BOOST_PP_BOOL(p(124, s)), s, p, o, m)
-# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_C(BOOST_PP_BOOL(p(125, s)), s, p, o, m)
-# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_C(BOOST_PP_BOOL(p(126, s)), s, p, o, m)
-# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_C(BOOST_PP_BOOL(p(127, s)), s, p, o, m)
-# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_C(BOOST_PP_BOOL(p(128, s)), s, p, o, m)
-# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_C(BOOST_PP_BOOL(p(129, s)), s, p, o, m)
-# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_C(BOOST_PP_BOOL(p(130, s)), s, p, o, m)
-# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_C(BOOST_PP_BOOL(p(131, s)), s, p, o, m)
-# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_C(BOOST_PP_BOOL(p(132, s)), s, p, o, m)
-# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_C(BOOST_PP_BOOL(p(133, s)), s, p, o, m)
-# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_C(BOOST_PP_BOOL(p(134, s)), s, p, o, m)
-# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_C(BOOST_PP_BOOL(p(135, s)), s, p, o, m)
-# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_C(BOOST_PP_BOOL(p(136, s)), s, p, o, m)
-# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_C(BOOST_PP_BOOL(p(137, s)), s, p, o, m)
-# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_C(BOOST_PP_BOOL(p(138, s)), s, p, o, m)
-# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_C(BOOST_PP_BOOL(p(139, s)), s, p, o, m)
-# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_C(BOOST_PP_BOOL(p(140, s)), s, p, o, m)
-# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_C(BOOST_PP_BOOL(p(141, s)), s, p, o, m)
-# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_C(BOOST_PP_BOOL(p(142, s)), s, p, o, m)
-# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_C(BOOST_PP_BOOL(p(143, s)), s, p, o, m)
-# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_C(BOOST_PP_BOOL(p(144, s)), s, p, o, m)
-# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_C(BOOST_PP_BOOL(p(145, s)), s, p, o, m)
-# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_C(BOOST_PP_BOOL(p(146, s)), s, p, o, m)
-# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_C(BOOST_PP_BOOL(p(147, s)), s, p, o, m)
-# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_C(BOOST_PP_BOOL(p(148, s)), s, p, o, m)
-# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_C(BOOST_PP_BOOL(p(149, s)), s, p, o, m)
-# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_C(BOOST_PP_BOOL(p(150, s)), s, p, o, m)
-# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_C(BOOST_PP_BOOL(p(151, s)), s, p, o, m)
-# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_C(BOOST_PP_BOOL(p(152, s)), s, p, o, m)
-# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_C(BOOST_PP_BOOL(p(153, s)), s, p, o, m)
-# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_C(BOOST_PP_BOOL(p(154, s)), s, p, o, m)
-# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_C(BOOST_PP_BOOL(p(155, s)), s, p, o, m)
-# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_C(BOOST_PP_BOOL(p(156, s)), s, p, o, m)
-# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_C(BOOST_PP_BOOL(p(157, s)), s, p, o, m)
-# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_C(BOOST_PP_BOOL(p(158, s)), s, p, o, m)
-# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_C(BOOST_PP_BOOL(p(159, s)), s, p, o, m)
-# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_C(BOOST_PP_BOOL(p(160, s)), s, p, o, m)
-# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_C(BOOST_PP_BOOL(p(161, s)), s, p, o, m)
-# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_C(BOOST_PP_BOOL(p(162, s)), s, p, o, m)
-# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_C(BOOST_PP_BOOL(p(163, s)), s, p, o, m)
-# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_C(BOOST_PP_BOOL(p(164, s)), s, p, o, m)
-# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_C(BOOST_PP_BOOL(p(165, s)), s, p, o, m)
-# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_C(BOOST_PP_BOOL(p(166, s)), s, p, o, m)
-# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_C(BOOST_PP_BOOL(p(167, s)), s, p, o, m)
-# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_C(BOOST_PP_BOOL(p(168, s)), s, p, o, m)
-# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_C(BOOST_PP_BOOL(p(169, s)), s, p, o, m)
-# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_C(BOOST_PP_BOOL(p(170, s)), s, p, o, m)
-# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_C(BOOST_PP_BOOL(p(171, s)), s, p, o, m)
-# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_C(BOOST_PP_BOOL(p(172, s)), s, p, o, m)
-# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_C(BOOST_PP_BOOL(p(173, s)), s, p, o, m)
-# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_C(BOOST_PP_BOOL(p(174, s)), s, p, o, m)
-# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_C(BOOST_PP_BOOL(p(175, s)), s, p, o, m)
-# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_C(BOOST_PP_BOOL(p(176, s)), s, p, o, m)
-# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_C(BOOST_PP_BOOL(p(177, s)), s, p, o, m)
-# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_C(BOOST_PP_BOOL(p(178, s)), s, p, o, m)
-# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_C(BOOST_PP_BOOL(p(179, s)), s, p, o, m)
-# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_C(BOOST_PP_BOOL(p(180, s)), s, p, o, m)
-# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_C(BOOST_PP_BOOL(p(181, s)), s, p, o, m)
-# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_C(BOOST_PP_BOOL(p(182, s)), s, p, o, m)
-# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_C(BOOST_PP_BOOL(p(183, s)), s, p, o, m)
-# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_C(BOOST_PP_BOOL(p(184, s)), s, p, o, m)
-# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_C(BOOST_PP_BOOL(p(185, s)), s, p, o, m)
-# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_C(BOOST_PP_BOOL(p(186, s)), s, p, o, m)
-# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_C(BOOST_PP_BOOL(p(187, s)), s, p, o, m)
-# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_C(BOOST_PP_BOOL(p(188, s)), s, p, o, m)
-# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_C(BOOST_PP_BOOL(p(189, s)), s, p, o, m)
-# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_C(BOOST_PP_BOOL(p(190, s)), s, p, o, m)
-# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_C(BOOST_PP_BOOL(p(191, s)), s, p, o, m)
-# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_C(BOOST_PP_BOOL(p(192, s)), s, p, o, m)
-# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_C(BOOST_PP_BOOL(p(193, s)), s, p, o, m)
-# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_C(BOOST_PP_BOOL(p(194, s)), s, p, o, m)
-# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_C(BOOST_PP_BOOL(p(195, s)), s, p, o, m)
-# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_C(BOOST_PP_BOOL(p(196, s)), s, p, o, m)
-# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_C(BOOST_PP_BOOL(p(197, s)), s, p, o, m)
-# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_C(BOOST_PP_BOOL(p(198, s)), s, p, o, m)
-# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_C(BOOST_PP_BOOL(p(199, s)), s, p, o, m)
-# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_C(BOOST_PP_BOOL(p(200, s)), s, p, o, m)
-# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_C(BOOST_PP_BOOL(p(201, s)), s, p, o, m)
-# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_C(BOOST_PP_BOOL(p(202, s)), s, p, o, m)
-# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_C(BOOST_PP_BOOL(p(203, s)), s, p, o, m)
-# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_C(BOOST_PP_BOOL(p(204, s)), s, p, o, m)
-# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_C(BOOST_PP_BOOL(p(205, s)), s, p, o, m)
-# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_C(BOOST_PP_BOOL(p(206, s)), s, p, o, m)
-# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_C(BOOST_PP_BOOL(p(207, s)), s, p, o, m)
-# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_C(BOOST_PP_BOOL(p(208, s)), s, p, o, m)
-# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_C(BOOST_PP_BOOL(p(209, s)), s, p, o, m)
-# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_C(BOOST_PP_BOOL(p(210, s)), s, p, o, m)
-# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_C(BOOST_PP_BOOL(p(211, s)), s, p, o, m)
-# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_C(BOOST_PP_BOOL(p(212, s)), s, p, o, m)
-# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_C(BOOST_PP_BOOL(p(213, s)), s, p, o, m)
-# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_C(BOOST_PP_BOOL(p(214, s)), s, p, o, m)
-# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_C(BOOST_PP_BOOL(p(215, s)), s, p, o, m)
-# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_C(BOOST_PP_BOOL(p(216, s)), s, p, o, m)
-# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_C(BOOST_PP_BOOL(p(217, s)), s, p, o, m)
-# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_C(BOOST_PP_BOOL(p(218, s)), s, p, o, m)
-# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_C(BOOST_PP_BOOL(p(219, s)), s, p, o, m)
-# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_C(BOOST_PP_BOOL(p(220, s)), s, p, o, m)
-# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_C(BOOST_PP_BOOL(p(221, s)), s, p, o, m)
-# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_C(BOOST_PP_BOOL(p(222, s)), s, p, o, m)
-# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_C(BOOST_PP_BOOL(p(223, s)), s, p, o, m)
-# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_C(BOOST_PP_BOOL(p(224, s)), s, p, o, m)
-# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_C(BOOST_PP_BOOL(p(225, s)), s, p, o, m)
-# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_C(BOOST_PP_BOOL(p(226, s)), s, p, o, m)
-# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_C(BOOST_PP_BOOL(p(227, s)), s, p, o, m)
-# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_C(BOOST_PP_BOOL(p(228, s)), s, p, o, m)
-# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_C(BOOST_PP_BOOL(p(229, s)), s, p, o, m)
-# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_C(BOOST_PP_BOOL(p(230, s)), s, p, o, m)
-# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_C(BOOST_PP_BOOL(p(231, s)), s, p, o, m)
-# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_C(BOOST_PP_BOOL(p(232, s)), s, p, o, m)
-# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_C(BOOST_PP_BOOL(p(233, s)), s, p, o, m)
-# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_C(BOOST_PP_BOOL(p(234, s)), s, p, o, m)
-# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_C(BOOST_PP_BOOL(p(235, s)), s, p, o, m)
-# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_C(BOOST_PP_BOOL(p(236, s)), s, p, o, m)
-# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_C(BOOST_PP_BOOL(p(237, s)), s, p, o, m)
-# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_C(BOOST_PP_BOOL(p(238, s)), s, p, o, m)
-# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_C(BOOST_PP_BOOL(p(239, s)), s, p, o, m)
-# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_C(BOOST_PP_BOOL(p(240, s)), s, p, o, m)
-# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_C(BOOST_PP_BOOL(p(241, s)), s, p, o, m)
-# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_C(BOOST_PP_BOOL(p(242, s)), s, p, o, m)
-# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_C(BOOST_PP_BOOL(p(243, s)), s, p, o, m)
-# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_C(BOOST_PP_BOOL(p(244, s)), s, p, o, m)
-# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_C(BOOST_PP_BOOL(p(245, s)), s, p, o, m)
-# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_C(BOOST_PP_BOOL(p(246, s)), s, p, o, m)
-# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_C(BOOST_PP_BOOL(p(247, s)), s, p, o, m)
-# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_C(BOOST_PP_BOOL(p(248, s)), s, p, o, m)
-# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_C(BOOST_PP_BOOL(p(249, s)), s, p, o, m)
-# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_C(BOOST_PP_BOOL(p(250, s)), s, p, o, m)
-# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_C(BOOST_PP_BOOL(p(251, s)), s, p, o, m)
-# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_C(BOOST_PP_BOOL(p(252, s)), s, p, o, m)
-# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_C(BOOST_PP_BOOL(p(253, s)), s, p, o, m)
-# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_C(BOOST_PP_BOOL(p(254, s)), s, p, o, m)
-# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_C(BOOST_PP_BOOL(p(255, s)), s, p, o, m)
-# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_C(BOOST_PP_BOOL(p(256, s)), s, p, o, m)
-# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_C(BOOST_PP_BOOL(p(257, s)), s, p, o, m)
-#
-# define BOOST_PP_FOR_1_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IIF(c, BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(2, s), p, o, m)
-# define BOOST_PP_FOR_2_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IIF(c, BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(3, s), p, o, m)
-# define BOOST_PP_FOR_3_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IIF(c, BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(4, s), p, o, m)
-# define BOOST_PP_FOR_4_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IIF(c, BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(5, s), p, o, m)
-# define BOOST_PP_FOR_5_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IIF(c, BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(6, s), p, o, m)
-# define BOOST_PP_FOR_6_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IIF(c, BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(7, s), p, o, m)
-# define BOOST_PP_FOR_7_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IIF(c, BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(8, s), p, o, m)
-# define BOOST_PP_FOR_8_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IIF(c, BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(9, s), p, o, m)
-# define BOOST_PP_FOR_9_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IIF(c, BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(10, s), p, o, m)
-# define BOOST_PP_FOR_10_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IIF(c, BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(11, s), p, o, m)
-# define BOOST_PP_FOR_11_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IIF(c, BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(12, s), p, o, m)
-# define BOOST_PP_FOR_12_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IIF(c, BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(13, s), p, o, m)
-# define BOOST_PP_FOR_13_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IIF(c, BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(14, s), p, o, m)
-# define BOOST_PP_FOR_14_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IIF(c, BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(15, s), p, o, m)
-# define BOOST_PP_FOR_15_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IIF(c, BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(16, s), p, o, m)
-# define BOOST_PP_FOR_16_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IIF(c, BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(17, s), p, o, m)
-# define BOOST_PP_FOR_17_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IIF(c, BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(18, s), p, o, m)
-# define BOOST_PP_FOR_18_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IIF(c, BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(19, s), p, o, m)
-# define BOOST_PP_FOR_19_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IIF(c, BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(20, s), p, o, m)
-# define BOOST_PP_FOR_20_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IIF(c, BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(21, s), p, o, m)
-# define BOOST_PP_FOR_21_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IIF(c, BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(22, s), p, o, m)
-# define BOOST_PP_FOR_22_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IIF(c, BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(23, s), p, o, m)
-# define BOOST_PP_FOR_23_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IIF(c, BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(24, s), p, o, m)
-# define BOOST_PP_FOR_24_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IIF(c, BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(25, s), p, o, m)
-# define BOOST_PP_FOR_25_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IIF(c, BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(26, s), p, o, m)
-# define BOOST_PP_FOR_26_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IIF(c, BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(27, s), p, o, m)
-# define BOOST_PP_FOR_27_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IIF(c, BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(28, s), p, o, m)
-# define BOOST_PP_FOR_28_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IIF(c, BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(29, s), p, o, m)
-# define BOOST_PP_FOR_29_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IIF(c, BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(30, s), p, o, m)
-# define BOOST_PP_FOR_30_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IIF(c, BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(31, s), p, o, m)
-# define BOOST_PP_FOR_31_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IIF(c, BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(32, s), p, o, m)
-# define BOOST_PP_FOR_32_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IIF(c, BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(33, s), p, o, m)
-# define BOOST_PP_FOR_33_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IIF(c, BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(34, s), p, o, m)
-# define BOOST_PP_FOR_34_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IIF(c, BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(35, s), p, o, m)
-# define BOOST_PP_FOR_35_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IIF(c, BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(36, s), p, o, m)
-# define BOOST_PP_FOR_36_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IIF(c, BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(37, s), p, o, m)
-# define BOOST_PP_FOR_37_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IIF(c, BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(38, s), p, o, m)
-# define BOOST_PP_FOR_38_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IIF(c, BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(39, s), p, o, m)
-# define BOOST_PP_FOR_39_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IIF(c, BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(40, s), p, o, m)
-# define BOOST_PP_FOR_40_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IIF(c, BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(41, s), p, o, m)
-# define BOOST_PP_FOR_41_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IIF(c, BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(42, s), p, o, m)
-# define BOOST_PP_FOR_42_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IIF(c, BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(43, s), p, o, m)
-# define BOOST_PP_FOR_43_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IIF(c, BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(44, s), p, o, m)
-# define BOOST_PP_FOR_44_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IIF(c, BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(45, s), p, o, m)
-# define BOOST_PP_FOR_45_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IIF(c, BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(46, s), p, o, m)
-# define BOOST_PP_FOR_46_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IIF(c, BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(47, s), p, o, m)
-# define BOOST_PP_FOR_47_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IIF(c, BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(48, s), p, o, m)
-# define BOOST_PP_FOR_48_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IIF(c, BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(49, s), p, o, m)
-# define BOOST_PP_FOR_49_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IIF(c, BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(50, s), p, o, m)
-# define BOOST_PP_FOR_50_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IIF(c, BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(51, s), p, o, m)
-# define BOOST_PP_FOR_51_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IIF(c, BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(52, s), p, o, m)
-# define BOOST_PP_FOR_52_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IIF(c, BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(53, s), p, o, m)
-# define BOOST_PP_FOR_53_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IIF(c, BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(54, s), p, o, m)
-# define BOOST_PP_FOR_54_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IIF(c, BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(55, s), p, o, m)
-# define BOOST_PP_FOR_55_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IIF(c, BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(56, s), p, o, m)
-# define BOOST_PP_FOR_56_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IIF(c, BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(57, s), p, o, m)
-# define BOOST_PP_FOR_57_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IIF(c, BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(58, s), p, o, m)
-# define BOOST_PP_FOR_58_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IIF(c, BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(59, s), p, o, m)
-# define BOOST_PP_FOR_59_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IIF(c, BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(60, s), p, o, m)
-# define BOOST_PP_FOR_60_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IIF(c, BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(61, s), p, o, m)
-# define BOOST_PP_FOR_61_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IIF(c, BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(62, s), p, o, m)
-# define BOOST_PP_FOR_62_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IIF(c, BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(63, s), p, o, m)
-# define BOOST_PP_FOR_63_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IIF(c, BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(64, s), p, o, m)
-# define BOOST_PP_FOR_64_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IIF(c, BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(65, s), p, o, m)
-# define BOOST_PP_FOR_65_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IIF(c, BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(66, s), p, o, m)
-# define BOOST_PP_FOR_66_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IIF(c, BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(67, s), p, o, m)
-# define BOOST_PP_FOR_67_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IIF(c, BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(68, s), p, o, m)
-# define BOOST_PP_FOR_68_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IIF(c, BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(69, s), p, o, m)
-# define BOOST_PP_FOR_69_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IIF(c, BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(70, s), p, o, m)
-# define BOOST_PP_FOR_70_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IIF(c, BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(71, s), p, o, m)
-# define BOOST_PP_FOR_71_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IIF(c, BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(72, s), p, o, m)
-# define BOOST_PP_FOR_72_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IIF(c, BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(73, s), p, o, m)
-# define BOOST_PP_FOR_73_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IIF(c, BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(74, s), p, o, m)
-# define BOOST_PP_FOR_74_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IIF(c, BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(75, s), p, o, m)
-# define BOOST_PP_FOR_75_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IIF(c, BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(76, s), p, o, m)
-# define BOOST_PP_FOR_76_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IIF(c, BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(77, s), p, o, m)
-# define BOOST_PP_FOR_77_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IIF(c, BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(78, s), p, o, m)
-# define BOOST_PP_FOR_78_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IIF(c, BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(79, s), p, o, m)
-# define BOOST_PP_FOR_79_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IIF(c, BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(80, s), p, o, m)
-# define BOOST_PP_FOR_80_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IIF(c, BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(81, s), p, o, m)
-# define BOOST_PP_FOR_81_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IIF(c, BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(82, s), p, o, m)
-# define BOOST_PP_FOR_82_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IIF(c, BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(83, s), p, o, m)
-# define BOOST_PP_FOR_83_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IIF(c, BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(84, s), p, o, m)
-# define BOOST_PP_FOR_84_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IIF(c, BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(85, s), p, o, m)
-# define BOOST_PP_FOR_85_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IIF(c, BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(86, s), p, o, m)
-# define BOOST_PP_FOR_86_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IIF(c, BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(87, s), p, o, m)
-# define BOOST_PP_FOR_87_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IIF(c, BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(88, s), p, o, m)
-# define BOOST_PP_FOR_88_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IIF(c, BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(89, s), p, o, m)
-# define BOOST_PP_FOR_89_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IIF(c, BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(90, s), p, o, m)
-# define BOOST_PP_FOR_90_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IIF(c, BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(91, s), p, o, m)
-# define BOOST_PP_FOR_91_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IIF(c, BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(92, s), p, o, m)
-# define BOOST_PP_FOR_92_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IIF(c, BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(93, s), p, o, m)
-# define BOOST_PP_FOR_93_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IIF(c, BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(94, s), p, o, m)
-# define BOOST_PP_FOR_94_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IIF(c, BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(95, s), p, o, m)
-# define BOOST_PP_FOR_95_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IIF(c, BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(96, s), p, o, m)
-# define BOOST_PP_FOR_96_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IIF(c, BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(97, s), p, o, m)
-# define BOOST_PP_FOR_97_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IIF(c, BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(98, s), p, o, m)
-# define BOOST_PP_FOR_98_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IIF(c, BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(99, s), p, o, m)
-# define BOOST_PP_FOR_99_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IIF(c, BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(100, s), p, o, m)
-# define BOOST_PP_FOR_100_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IIF(c, BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(101, s), p, o, m)
-# define BOOST_PP_FOR_101_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IIF(c, BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(102, s), p, o, m)
-# define BOOST_PP_FOR_102_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IIF(c, BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(103, s), p, o, m)
-# define BOOST_PP_FOR_103_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IIF(c, BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(104, s), p, o, m)
-# define BOOST_PP_FOR_104_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IIF(c, BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(105, s), p, o, m)
-# define BOOST_PP_FOR_105_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IIF(c, BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(106, s), p, o, m)
-# define BOOST_PP_FOR_106_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IIF(c, BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(107, s), p, o, m)
-# define BOOST_PP_FOR_107_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IIF(c, BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(108, s), p, o, m)
-# define BOOST_PP_FOR_108_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IIF(c, BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(109, s), p, o, m)
-# define BOOST_PP_FOR_109_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IIF(c, BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(110, s), p, o, m)
-# define BOOST_PP_FOR_110_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IIF(c, BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(111, s), p, o, m)
-# define BOOST_PP_FOR_111_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IIF(c, BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(112, s), p, o, m)
-# define BOOST_PP_FOR_112_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IIF(c, BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(113, s), p, o, m)
-# define BOOST_PP_FOR_113_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IIF(c, BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(114, s), p, o, m)
-# define BOOST_PP_FOR_114_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IIF(c, BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(115, s), p, o, m)
-# define BOOST_PP_FOR_115_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IIF(c, BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(116, s), p, o, m)
-# define BOOST_PP_FOR_116_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IIF(c, BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(117, s), p, o, m)
-# define BOOST_PP_FOR_117_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IIF(c, BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(118, s), p, o, m)
-# define BOOST_PP_FOR_118_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IIF(c, BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(119, s), p, o, m)
-# define BOOST_PP_FOR_119_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IIF(c, BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(120, s), p, o, m)
-# define BOOST_PP_FOR_120_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IIF(c, BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(121, s), p, o, m)
-# define BOOST_PP_FOR_121_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IIF(c, BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(122, s), p, o, m)
-# define BOOST_PP_FOR_122_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IIF(c, BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(123, s), p, o, m)
-# define BOOST_PP_FOR_123_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IIF(c, BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(124, s), p, o, m)
-# define BOOST_PP_FOR_124_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IIF(c, BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(125, s), p, o, m)
-# define BOOST_PP_FOR_125_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IIF(c, BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(126, s), p, o, m)
-# define BOOST_PP_FOR_126_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IIF(c, BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(127, s), p, o, m)
-# define BOOST_PP_FOR_127_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IIF(c, BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(128, s), p, o, m)
-# define BOOST_PP_FOR_128_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IIF(c, BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(129, s), p, o, m)
-# define BOOST_PP_FOR_129_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IIF(c, BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(130, s), p, o, m)
-# define BOOST_PP_FOR_130_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IIF(c, BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(131, s), p, o, m)
-# define BOOST_PP_FOR_131_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IIF(c, BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(132, s), p, o, m)
-# define BOOST_PP_FOR_132_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IIF(c, BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(133, s), p, o, m)
-# define BOOST_PP_FOR_133_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IIF(c, BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(134, s), p, o, m)
-# define BOOST_PP_FOR_134_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IIF(c, BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(135, s), p, o, m)
-# define BOOST_PP_FOR_135_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IIF(c, BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(136, s), p, o, m)
-# define BOOST_PP_FOR_136_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IIF(c, BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(137, s), p, o, m)
-# define BOOST_PP_FOR_137_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IIF(c, BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(138, s), p, o, m)
-# define BOOST_PP_FOR_138_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IIF(c, BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(139, s), p, o, m)
-# define BOOST_PP_FOR_139_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IIF(c, BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(140, s), p, o, m)
-# define BOOST_PP_FOR_140_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IIF(c, BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(141, s), p, o, m)
-# define BOOST_PP_FOR_141_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IIF(c, BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(142, s), p, o, m)
-# define BOOST_PP_FOR_142_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IIF(c, BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(143, s), p, o, m)
-# define BOOST_PP_FOR_143_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IIF(c, BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(144, s), p, o, m)
-# define BOOST_PP_FOR_144_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IIF(c, BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(145, s), p, o, m)
-# define BOOST_PP_FOR_145_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IIF(c, BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(146, s), p, o, m)
-# define BOOST_PP_FOR_146_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IIF(c, BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(147, s), p, o, m)
-# define BOOST_PP_FOR_147_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IIF(c, BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(148, s), p, o, m)
-# define BOOST_PP_FOR_148_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IIF(c, BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(149, s), p, o, m)
-# define BOOST_PP_FOR_149_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IIF(c, BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(150, s), p, o, m)
-# define BOOST_PP_FOR_150_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IIF(c, BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(151, s), p, o, m)
-# define BOOST_PP_FOR_151_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IIF(c, BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(152, s), p, o, m)
-# define BOOST_PP_FOR_152_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IIF(c, BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(153, s), p, o, m)
-# define BOOST_PP_FOR_153_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IIF(c, BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(154, s), p, o, m)
-# define BOOST_PP_FOR_154_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IIF(c, BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(155, s), p, o, m)
-# define BOOST_PP_FOR_155_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IIF(c, BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(156, s), p, o, m)
-# define BOOST_PP_FOR_156_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IIF(c, BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(157, s), p, o, m)
-# define BOOST_PP_FOR_157_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IIF(c, BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(158, s), p, o, m)
-# define BOOST_PP_FOR_158_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IIF(c, BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(159, s), p, o, m)
-# define BOOST_PP_FOR_159_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IIF(c, BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(160, s), p, o, m)
-# define BOOST_PP_FOR_160_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IIF(c, BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(161, s), p, o, m)
-# define BOOST_PP_FOR_161_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IIF(c, BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(162, s), p, o, m)
-# define BOOST_PP_FOR_162_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IIF(c, BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(163, s), p, o, m)
-# define BOOST_PP_FOR_163_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IIF(c, BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(164, s), p, o, m)
-# define BOOST_PP_FOR_164_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IIF(c, BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(165, s), p, o, m)
-# define BOOST_PP_FOR_165_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IIF(c, BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(166, s), p, o, m)
-# define BOOST_PP_FOR_166_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IIF(c, BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(167, s), p, o, m)
-# define BOOST_PP_FOR_167_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IIF(c, BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(168, s), p, o, m)
-# define BOOST_PP_FOR_168_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IIF(c, BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(169, s), p, o, m)
-# define BOOST_PP_FOR_169_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IIF(c, BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(170, s), p, o, m)
-# define BOOST_PP_FOR_170_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IIF(c, BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(171, s), p, o, m)
-# define BOOST_PP_FOR_171_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IIF(c, BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(172, s), p, o, m)
-# define BOOST_PP_FOR_172_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IIF(c, BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(173, s), p, o, m)
-# define BOOST_PP_FOR_173_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IIF(c, BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(174, s), p, o, m)
-# define BOOST_PP_FOR_174_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IIF(c, BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(175, s), p, o, m)
-# define BOOST_PP_FOR_175_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IIF(c, BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(176, s), p, o, m)
-# define BOOST_PP_FOR_176_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IIF(c, BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(177, s), p, o, m)
-# define BOOST_PP_FOR_177_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IIF(c, BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(178, s), p, o, m)
-# define BOOST_PP_FOR_178_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IIF(c, BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(179, s), p, o, m)
-# define BOOST_PP_FOR_179_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IIF(c, BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(180, s), p, o, m)
-# define BOOST_PP_FOR_180_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IIF(c, BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(181, s), p, o, m)
-# define BOOST_PP_FOR_181_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IIF(c, BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(182, s), p, o, m)
-# define BOOST_PP_FOR_182_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IIF(c, BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(183, s), p, o, m)
-# define BOOST_PP_FOR_183_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IIF(c, BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(184, s), p, o, m)
-# define BOOST_PP_FOR_184_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IIF(c, BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(185, s), p, o, m)
-# define BOOST_PP_FOR_185_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IIF(c, BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(186, s), p, o, m)
-# define BOOST_PP_FOR_186_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IIF(c, BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(187, s), p, o, m)
-# define BOOST_PP_FOR_187_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IIF(c, BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(188, s), p, o, m)
-# define BOOST_PP_FOR_188_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IIF(c, BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(189, s), p, o, m)
-# define BOOST_PP_FOR_189_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IIF(c, BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(190, s), p, o, m)
-# define BOOST_PP_FOR_190_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IIF(c, BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(191, s), p, o, m)
-# define BOOST_PP_FOR_191_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IIF(c, BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(192, s), p, o, m)
-# define BOOST_PP_FOR_192_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IIF(c, BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(193, s), p, o, m)
-# define BOOST_PP_FOR_193_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IIF(c, BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(194, s), p, o, m)
-# define BOOST_PP_FOR_194_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IIF(c, BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(195, s), p, o, m)
-# define BOOST_PP_FOR_195_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IIF(c, BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(196, s), p, o, m)
-# define BOOST_PP_FOR_196_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IIF(c, BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(197, s), p, o, m)
-# define BOOST_PP_FOR_197_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IIF(c, BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(198, s), p, o, m)
-# define BOOST_PP_FOR_198_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IIF(c, BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(199, s), p, o, m)
-# define BOOST_PP_FOR_199_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IIF(c, BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(200, s), p, o, m)
-# define BOOST_PP_FOR_200_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IIF(c, BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(201, s), p, o, m)
-# define BOOST_PP_FOR_201_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IIF(c, BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(202, s), p, o, m)
-# define BOOST_PP_FOR_202_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IIF(c, BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(203, s), p, o, m)
-# define BOOST_PP_FOR_203_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IIF(c, BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(204, s), p, o, m)
-# define BOOST_PP_FOR_204_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IIF(c, BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(205, s), p, o, m)
-# define BOOST_PP_FOR_205_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IIF(c, BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(206, s), p, o, m)
-# define BOOST_PP_FOR_206_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IIF(c, BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(207, s), p, o, m)
-# define BOOST_PP_FOR_207_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IIF(c, BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(208, s), p, o, m)
-# define BOOST_PP_FOR_208_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IIF(c, BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(209, s), p, o, m)
-# define BOOST_PP_FOR_209_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IIF(c, BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(210, s), p, o, m)
-# define BOOST_PP_FOR_210_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IIF(c, BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(211, s), p, o, m)
-# define BOOST_PP_FOR_211_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IIF(c, BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(212, s), p, o, m)
-# define BOOST_PP_FOR_212_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IIF(c, BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(213, s), p, o, m)
-# define BOOST_PP_FOR_213_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IIF(c, BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(214, s), p, o, m)
-# define BOOST_PP_FOR_214_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IIF(c, BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(215, s), p, o, m)
-# define BOOST_PP_FOR_215_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IIF(c, BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(216, s), p, o, m)
-# define BOOST_PP_FOR_216_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IIF(c, BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(217, s), p, o, m)
-# define BOOST_PP_FOR_217_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IIF(c, BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(218, s), p, o, m)
-# define BOOST_PP_FOR_218_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IIF(c, BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(219, s), p, o, m)
-# define BOOST_PP_FOR_219_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IIF(c, BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(220, s), p, o, m)
-# define BOOST_PP_FOR_220_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IIF(c, BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(221, s), p, o, m)
-# define BOOST_PP_FOR_221_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IIF(c, BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(222, s), p, o, m)
-# define BOOST_PP_FOR_222_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IIF(c, BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(223, s), p, o, m)
-# define BOOST_PP_FOR_223_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IIF(c, BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(224, s), p, o, m)
-# define BOOST_PP_FOR_224_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IIF(c, BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(225, s), p, o, m)
-# define BOOST_PP_FOR_225_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IIF(c, BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(226, s), p, o, m)
-# define BOOST_PP_FOR_226_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IIF(c, BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(227, s), p, o, m)
-# define BOOST_PP_FOR_227_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IIF(c, BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(228, s), p, o, m)
-# define BOOST_PP_FOR_228_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IIF(c, BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(229, s), p, o, m)
-# define BOOST_PP_FOR_229_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IIF(c, BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(230, s), p, o, m)
-# define BOOST_PP_FOR_230_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IIF(c, BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(231, s), p, o, m)
-# define BOOST_PP_FOR_231_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IIF(c, BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(232, s), p, o, m)
-# define BOOST_PP_FOR_232_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IIF(c, BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(233, s), p, o, m)
-# define BOOST_PP_FOR_233_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IIF(c, BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(234, s), p, o, m)
-# define BOOST_PP_FOR_234_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IIF(c, BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(235, s), p, o, m)
-# define BOOST_PP_FOR_235_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IIF(c, BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(236, s), p, o, m)
-# define BOOST_PP_FOR_236_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IIF(c, BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(237, s), p, o, m)
-# define BOOST_PP_FOR_237_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IIF(c, BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(238, s), p, o, m)
-# define BOOST_PP_FOR_238_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IIF(c, BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(239, s), p, o, m)
-# define BOOST_PP_FOR_239_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IIF(c, BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(240, s), p, o, m)
-# define BOOST_PP_FOR_240_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IIF(c, BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(241, s), p, o, m)
-# define BOOST_PP_FOR_241_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IIF(c, BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(242, s), p, o, m)
-# define BOOST_PP_FOR_242_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IIF(c, BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(243, s), p, o, m)
-# define BOOST_PP_FOR_243_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IIF(c, BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(244, s), p, o, m)
-# define BOOST_PP_FOR_244_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IIF(c, BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(245, s), p, o, m)
-# define BOOST_PP_FOR_245_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IIF(c, BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(246, s), p, o, m)
-# define BOOST_PP_FOR_246_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IIF(c, BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(247, s), p, o, m)
-# define BOOST_PP_FOR_247_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IIF(c, BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(248, s), p, o, m)
-# define BOOST_PP_FOR_248_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IIF(c, BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(249, s), p, o, m)
-# define BOOST_PP_FOR_249_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IIF(c, BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(250, s), p, o, m)
-# define BOOST_PP_FOR_250_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IIF(c, BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(251, s), p, o, m)
-# define BOOST_PP_FOR_251_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IIF(c, BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(252, s), p, o, m)
-# define BOOST_PP_FOR_252_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IIF(c, BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(253, s), p, o, m)
-# define BOOST_PP_FOR_253_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IIF(c, BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(254, s), p, o, m)
-# define BOOST_PP_FOR_254_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IIF(c, BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(255, s), p, o, m)
-# define BOOST_PP_FOR_255_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IIF(c, BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(256, s), p, o, m)
-# define BOOST_PP_FOR_256_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IIF(c, BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(257, s), p, o, m)
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repetition/detail/msvc/for.hpp b/libcutl/cutl/details/boost/preprocessor/repetition/detail/msvc/for.hpp
deleted file mode 100644
index 5fa59f5..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repetition/detail/msvc/for.hpp
+++ /dev/null
@@ -1,277 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_MSVC_FOR_HPP
-# define BOOST_PREPROCESSOR_REPETITION_DETAIL_MSVC_FOR_HPP
-#
-# include <cutl/details/boost/preprocessor/control/if.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_IF(p(2, s), m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IF(p(2, s), BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(o(2, s), p, o, m)
-# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_IF(p(3, s), m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IF(p(3, s), BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(o(3, s), p, o, m)
-# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_IF(p(4, s), m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IF(p(4, s), BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(o(4, s), p, o, m)
-# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_IF(p(5, s), m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IF(p(5, s), BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(o(5, s), p, o, m)
-# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_IF(p(6, s), m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IF(p(6, s), BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(o(6, s), p, o, m)
-# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_IF(p(7, s), m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IF(p(7, s), BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(o(7, s), p, o, m)
-# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_IF(p(8, s), m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IF(p(8, s), BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(o(8, s), p, o, m)
-# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_IF(p(9, s), m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IF(p(9, s), BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(o(9, s), p, o, m)
-# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_IF(p(10, s), m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IF(p(10, s), BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(o(10, s), p, o, m)
-# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_IF(p(11, s), m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IF(p(11, s), BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(o(11, s), p, o, m)
-# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_IF(p(12, s), m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IF(p(12, s), BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(o(12, s), p, o, m)
-# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_IF(p(13, s), m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IF(p(13, s), BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(o(13, s), p, o, m)
-# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_IF(p(14, s), m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IF(p(14, s), BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(o(14, s), p, o, m)
-# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_IF(p(15, s), m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IF(p(15, s), BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(o(15, s), p, o, m)
-# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_IF(p(16, s), m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IF(p(16, s), BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(o(16, s), p, o, m)
-# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_IF(p(17, s), m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IF(p(17, s), BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(o(17, s), p, o, m)
-# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_IF(p(18, s), m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IF(p(18, s), BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(o(18, s), p, o, m)
-# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_IF(p(19, s), m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IF(p(19, s), BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(o(19, s), p, o, m)
-# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_IF(p(20, s), m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IF(p(20, s), BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(o(20, s), p, o, m)
-# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_IF(p(21, s), m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IF(p(21, s), BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(o(21, s), p, o, m)
-# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_IF(p(22, s), m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IF(p(22, s), BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(o(22, s), p, o, m)
-# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_IF(p(23, s), m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IF(p(23, s), BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(o(23, s), p, o, m)
-# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_IF(p(24, s), m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IF(p(24, s), BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(o(24, s), p, o, m)
-# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_IF(p(25, s), m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IF(p(25, s), BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(o(25, s), p, o, m)
-# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_IF(p(26, s), m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IF(p(26, s), BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(o(26, s), p, o, m)
-# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_IF(p(27, s), m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IF(p(27, s), BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(o(27, s), p, o, m)
-# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_IF(p(28, s), m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IF(p(28, s), BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(o(28, s), p, o, m)
-# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_IF(p(29, s), m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IF(p(29, s), BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(o(29, s), p, o, m)
-# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_IF(p(30, s), m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IF(p(30, s), BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(o(30, s), p, o, m)
-# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_IF(p(31, s), m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IF(p(31, s), BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(o(31, s), p, o, m)
-# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_IF(p(32, s), m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IF(p(32, s), BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(o(32, s), p, o, m)
-# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_IF(p(33, s), m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IF(p(33, s), BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(o(33, s), p, o, m)
-# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_IF(p(34, s), m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IF(p(34, s), BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(o(34, s), p, o, m)
-# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_IF(p(35, s), m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IF(p(35, s), BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(o(35, s), p, o, m)
-# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_IF(p(36, s), m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IF(p(36, s), BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(o(36, s), p, o, m)
-# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_IF(p(37, s), m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IF(p(37, s), BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(o(37, s), p, o, m)
-# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_IF(p(38, s), m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IF(p(38, s), BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(o(38, s), p, o, m)
-# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_IF(p(39, s), m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IF(p(39, s), BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(o(39, s), p, o, m)
-# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_IF(p(40, s), m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IF(p(40, s), BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(o(40, s), p, o, m)
-# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_IF(p(41, s), m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IF(p(41, s), BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(o(41, s), p, o, m)
-# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_IF(p(42, s), m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IF(p(42, s), BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(o(42, s), p, o, m)
-# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_IF(p(43, s), m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IF(p(43, s), BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(o(43, s), p, o, m)
-# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_IF(p(44, s), m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IF(p(44, s), BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(o(44, s), p, o, m)
-# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_IF(p(45, s), m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IF(p(45, s), BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(o(45, s), p, o, m)
-# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_IF(p(46, s), m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IF(p(46, s), BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(o(46, s), p, o, m)
-# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_IF(p(47, s), m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IF(p(47, s), BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(o(47, s), p, o, m)
-# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_IF(p(48, s), m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IF(p(48, s), BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(o(48, s), p, o, m)
-# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_IF(p(49, s), m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IF(p(49, s), BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(o(49, s), p, o, m)
-# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_IF(p(50, s), m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IF(p(50, s), BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(o(50, s), p, o, m)
-# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_IF(p(51, s), m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IF(p(51, s), BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(o(51, s), p, o, m)
-# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_IF(p(52, s), m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IF(p(52, s), BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(o(52, s), p, o, m)
-# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_IF(p(53, s), m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IF(p(53, s), BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(o(53, s), p, o, m)
-# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_IF(p(54, s), m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IF(p(54, s), BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(o(54, s), p, o, m)
-# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_IF(p(55, s), m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IF(p(55, s), BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(o(55, s), p, o, m)
-# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_IF(p(56, s), m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IF(p(56, s), BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(o(56, s), p, o, m)
-# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_IF(p(57, s), m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IF(p(57, s), BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(o(57, s), p, o, m)
-# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_IF(p(58, s), m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IF(p(58, s), BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(o(58, s), p, o, m)
-# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_IF(p(59, s), m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IF(p(59, s), BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(o(59, s), p, o, m)
-# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_IF(p(60, s), m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IF(p(60, s), BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(o(60, s), p, o, m)
-# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_IF(p(61, s), m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IF(p(61, s), BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(o(61, s), p, o, m)
-# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_IF(p(62, s), m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IF(p(62, s), BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(o(62, s), p, o, m)
-# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_IF(p(63, s), m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IF(p(63, s), BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(o(63, s), p, o, m)
-# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_IF(p(64, s), m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IF(p(64, s), BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(o(64, s), p, o, m)
-# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_IF(p(65, s), m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IF(p(65, s), BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(o(65, s), p, o, m)
-# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_IF(p(66, s), m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IF(p(66, s), BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(o(66, s), p, o, m)
-# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_IF(p(67, s), m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IF(p(67, s), BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(o(67, s), p, o, m)
-# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_IF(p(68, s), m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IF(p(68, s), BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(o(68, s), p, o, m)
-# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_IF(p(69, s), m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IF(p(69, s), BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(o(69, s), p, o, m)
-# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_IF(p(70, s), m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IF(p(70, s), BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(o(70, s), p, o, m)
-# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_IF(p(71, s), m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IF(p(71, s), BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(o(71, s), p, o, m)
-# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_IF(p(72, s), m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IF(p(72, s), BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(o(72, s), p, o, m)
-# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_IF(p(73, s), m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IF(p(73, s), BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(o(73, s), p, o, m)
-# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_IF(p(74, s), m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IF(p(74, s), BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(o(74, s), p, o, m)
-# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_IF(p(75, s), m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IF(p(75, s), BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(o(75, s), p, o, m)
-# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_IF(p(76, s), m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IF(p(76, s), BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(o(76, s), p, o, m)
-# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_IF(p(77, s), m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IF(p(77, s), BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(o(77, s), p, o, m)
-# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_IF(p(78, s), m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IF(p(78, s), BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(o(78, s), p, o, m)
-# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_IF(p(79, s), m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IF(p(79, s), BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(o(79, s), p, o, m)
-# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_IF(p(80, s), m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IF(p(80, s), BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(o(80, s), p, o, m)
-# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_IF(p(81, s), m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IF(p(81, s), BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(o(81, s), p, o, m)
-# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_IF(p(82, s), m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IF(p(82, s), BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(o(82, s), p, o, m)
-# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_IF(p(83, s), m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IF(p(83, s), BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(o(83, s), p, o, m)
-# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_IF(p(84, s), m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IF(p(84, s), BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(o(84, s), p, o, m)
-# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_IF(p(85, s), m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IF(p(85, s), BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(o(85, s), p, o, m)
-# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_IF(p(86, s), m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IF(p(86, s), BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(o(86, s), p, o, m)
-# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_IF(p(87, s), m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IF(p(87, s), BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(o(87, s), p, o, m)
-# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_IF(p(88, s), m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IF(p(88, s), BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(o(88, s), p, o, m)
-# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_IF(p(89, s), m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IF(p(89, s), BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(o(89, s), p, o, m)
-# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_IF(p(90, s), m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IF(p(90, s), BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(o(90, s), p, o, m)
-# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_IF(p(91, s), m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IF(p(91, s), BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(o(91, s), p, o, m)
-# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_IF(p(92, s), m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IF(p(92, s), BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(o(92, s), p, o, m)
-# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_IF(p(93, s), m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IF(p(93, s), BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(o(93, s), p, o, m)
-# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_IF(p(94, s), m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IF(p(94, s), BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(o(94, s), p, o, m)
-# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_IF(p(95, s), m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IF(p(95, s), BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(o(95, s), p, o, m)
-# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_IF(p(96, s), m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IF(p(96, s), BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(o(96, s), p, o, m)
-# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_IF(p(97, s), m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IF(p(97, s), BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(o(97, s), p, o, m)
-# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_IF(p(98, s), m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IF(p(98, s), BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(o(98, s), p, o, m)
-# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_IF(p(99, s), m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IF(p(99, s), BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(o(99, s), p, o, m)
-# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_IF(p(100, s), m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IF(p(100, s), BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(o(100, s), p, o, m)
-# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_IF(p(101, s), m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IF(p(101, s), BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(o(101, s), p, o, m)
-# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_IF(p(102, s), m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IF(p(102, s), BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(o(102, s), p, o, m)
-# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_IF(p(103, s), m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IF(p(103, s), BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(o(103, s), p, o, m)
-# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_IF(p(104, s), m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IF(p(104, s), BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(o(104, s), p, o, m)
-# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_IF(p(105, s), m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IF(p(105, s), BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(o(105, s), p, o, m)
-# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_IF(p(106, s), m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IF(p(106, s), BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(o(106, s), p, o, m)
-# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_IF(p(107, s), m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IF(p(107, s), BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(o(107, s), p, o, m)
-# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_IF(p(108, s), m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IF(p(108, s), BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(o(108, s), p, o, m)
-# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_IF(p(109, s), m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IF(p(109, s), BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(o(109, s), p, o, m)
-# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_IF(p(110, s), m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IF(p(110, s), BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(o(110, s), p, o, m)
-# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_IF(p(111, s), m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IF(p(111, s), BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(o(111, s), p, o, m)
-# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_IF(p(112, s), m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IF(p(112, s), BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(o(112, s), p, o, m)
-# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_IF(p(113, s), m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IF(p(113, s), BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(o(113, s), p, o, m)
-# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_IF(p(114, s), m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IF(p(114, s), BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(o(114, s), p, o, m)
-# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_IF(p(115, s), m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IF(p(115, s), BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(o(115, s), p, o, m)
-# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_IF(p(116, s), m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IF(p(116, s), BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(o(116, s), p, o, m)
-# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_IF(p(117, s), m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IF(p(117, s), BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(o(117, s), p, o, m)
-# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_IF(p(118, s), m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IF(p(118, s), BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(o(118, s), p, o, m)
-# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_IF(p(119, s), m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IF(p(119, s), BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(o(119, s), p, o, m)
-# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_IF(p(120, s), m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IF(p(120, s), BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(o(120, s), p, o, m)
-# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_IF(p(121, s), m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IF(p(121, s), BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(o(121, s), p, o, m)
-# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_IF(p(122, s), m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IF(p(122, s), BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(o(122, s), p, o, m)
-# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_IF(p(123, s), m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IF(p(123, s), BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(o(123, s), p, o, m)
-# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_IF(p(124, s), m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IF(p(124, s), BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(o(124, s), p, o, m)
-# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_IF(p(125, s), m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IF(p(125, s), BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(o(125, s), p, o, m)
-# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_IF(p(126, s), m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IF(p(126, s), BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(o(126, s), p, o, m)
-# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_IF(p(127, s), m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IF(p(127, s), BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(o(127, s), p, o, m)
-# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_IF(p(128, s), m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IF(p(128, s), BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(o(128, s), p, o, m)
-# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_IF(p(129, s), m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IF(p(129, s), BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(o(129, s), p, o, m)
-# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_IF(p(130, s), m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IF(p(130, s), BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(o(130, s), p, o, m)
-# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_IF(p(131, s), m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IF(p(131, s), BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(o(131, s), p, o, m)
-# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_IF(p(132, s), m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IF(p(132, s), BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(o(132, s), p, o, m)
-# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_IF(p(133, s), m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IF(p(133, s), BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(o(133, s), p, o, m)
-# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_IF(p(134, s), m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IF(p(134, s), BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(o(134, s), p, o, m)
-# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_IF(p(135, s), m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IF(p(135, s), BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(o(135, s), p, o, m)
-# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_IF(p(136, s), m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IF(p(136, s), BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(o(136, s), p, o, m)
-# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_IF(p(137, s), m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IF(p(137, s), BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(o(137, s), p, o, m)
-# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_IF(p(138, s), m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IF(p(138, s), BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(o(138, s), p, o, m)
-# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_IF(p(139, s), m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IF(p(139, s), BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(o(139, s), p, o, m)
-# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_IF(p(140, s), m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IF(p(140, s), BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(o(140, s), p, o, m)
-# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_IF(p(141, s), m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IF(p(141, s), BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(o(141, s), p, o, m)
-# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_IF(p(142, s), m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IF(p(142, s), BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(o(142, s), p, o, m)
-# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_IF(p(143, s), m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IF(p(143, s), BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(o(143, s), p, o, m)
-# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_IF(p(144, s), m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IF(p(144, s), BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(o(144, s), p, o, m)
-# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_IF(p(145, s), m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IF(p(145, s), BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(o(145, s), p, o, m)
-# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_IF(p(146, s), m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IF(p(146, s), BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(o(146, s), p, o, m)
-# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_IF(p(147, s), m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IF(p(147, s), BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(o(147, s), p, o, m)
-# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_IF(p(148, s), m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IF(p(148, s), BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(o(148, s), p, o, m)
-# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_IF(p(149, s), m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IF(p(149, s), BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(o(149, s), p, o, m)
-# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_IF(p(150, s), m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IF(p(150, s), BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(o(150, s), p, o, m)
-# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_IF(p(151, s), m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IF(p(151, s), BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(o(151, s), p, o, m)
-# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_IF(p(152, s), m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IF(p(152, s), BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(o(152, s), p, o, m)
-# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_IF(p(153, s), m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IF(p(153, s), BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(o(153, s), p, o, m)
-# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_IF(p(154, s), m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IF(p(154, s), BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(o(154, s), p, o, m)
-# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_IF(p(155, s), m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IF(p(155, s), BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(o(155, s), p, o, m)
-# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_IF(p(156, s), m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IF(p(156, s), BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(o(156, s), p, o, m)
-# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_IF(p(157, s), m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IF(p(157, s), BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(o(157, s), p, o, m)
-# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_IF(p(158, s), m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IF(p(158, s), BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(o(158, s), p, o, m)
-# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_IF(p(159, s), m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IF(p(159, s), BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(o(159, s), p, o, m)
-# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_IF(p(160, s), m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IF(p(160, s), BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(o(160, s), p, o, m)
-# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_IF(p(161, s), m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IF(p(161, s), BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(o(161, s), p, o, m)
-# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_IF(p(162, s), m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IF(p(162, s), BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(o(162, s), p, o, m)
-# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_IF(p(163, s), m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IF(p(163, s), BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(o(163, s), p, o, m)
-# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_IF(p(164, s), m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IF(p(164, s), BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(o(164, s), p, o, m)
-# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_IF(p(165, s), m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IF(p(165, s), BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(o(165, s), p, o, m)
-# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_IF(p(166, s), m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IF(p(166, s), BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(o(166, s), p, o, m)
-# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_IF(p(167, s), m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IF(p(167, s), BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(o(167, s), p, o, m)
-# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_IF(p(168, s), m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IF(p(168, s), BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(o(168, s), p, o, m)
-# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_IF(p(169, s), m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IF(p(169, s), BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(o(169, s), p, o, m)
-# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_IF(p(170, s), m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IF(p(170, s), BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(o(170, s), p, o, m)
-# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_IF(p(171, s), m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IF(p(171, s), BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(o(171, s), p, o, m)
-# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_IF(p(172, s), m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IF(p(172, s), BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(o(172, s), p, o, m)
-# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_IF(p(173, s), m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IF(p(173, s), BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(o(173, s), p, o, m)
-# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_IF(p(174, s), m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IF(p(174, s), BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(o(174, s), p, o, m)
-# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_IF(p(175, s), m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IF(p(175, s), BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(o(175, s), p, o, m)
-# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_IF(p(176, s), m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IF(p(176, s), BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(o(176, s), p, o, m)
-# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_IF(p(177, s), m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IF(p(177, s), BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(o(177, s), p, o, m)
-# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_IF(p(178, s), m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IF(p(178, s), BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(o(178, s), p, o, m)
-# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_IF(p(179, s), m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IF(p(179, s), BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(o(179, s), p, o, m)
-# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_IF(p(180, s), m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IF(p(180, s), BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(o(180, s), p, o, m)
-# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_IF(p(181, s), m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IF(p(181, s), BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(o(181, s), p, o, m)
-# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_IF(p(182, s), m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IF(p(182, s), BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(o(182, s), p, o, m)
-# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_IF(p(183, s), m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IF(p(183, s), BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(o(183, s), p, o, m)
-# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_IF(p(184, s), m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IF(p(184, s), BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(o(184, s), p, o, m)
-# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_IF(p(185, s), m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IF(p(185, s), BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(o(185, s), p, o, m)
-# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_IF(p(186, s), m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IF(p(186, s), BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(o(186, s), p, o, m)
-# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_IF(p(187, s), m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IF(p(187, s), BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(o(187, s), p, o, m)
-# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_IF(p(188, s), m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IF(p(188, s), BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(o(188, s), p, o, m)
-# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_IF(p(189, s), m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IF(p(189, s), BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(o(189, s), p, o, m)
-# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_IF(p(190, s), m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IF(p(190, s), BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(o(190, s), p, o, m)
-# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_IF(p(191, s), m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IF(p(191, s), BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(o(191, s), p, o, m)
-# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_IF(p(192, s), m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IF(p(192, s), BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(o(192, s), p, o, m)
-# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_IF(p(193, s), m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IF(p(193, s), BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(o(193, s), p, o, m)
-# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_IF(p(194, s), m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IF(p(194, s), BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(o(194, s), p, o, m)
-# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_IF(p(195, s), m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IF(p(195, s), BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(o(195, s), p, o, m)
-# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_IF(p(196, s), m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IF(p(196, s), BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(o(196, s), p, o, m)
-# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_IF(p(197, s), m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IF(p(197, s), BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(o(197, s), p, o, m)
-# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_IF(p(198, s), m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IF(p(198, s), BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(o(198, s), p, o, m)
-# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_IF(p(199, s), m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IF(p(199, s), BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(o(199, s), p, o, m)
-# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_IF(p(200, s), m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IF(p(200, s), BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(o(200, s), p, o, m)
-# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_IF(p(201, s), m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IF(p(201, s), BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(o(201, s), p, o, m)
-# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_IF(p(202, s), m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IF(p(202, s), BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(o(202, s), p, o, m)
-# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_IF(p(203, s), m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IF(p(203, s), BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(o(203, s), p, o, m)
-# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_IF(p(204, s), m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IF(p(204, s), BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(o(204, s), p, o, m)
-# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_IF(p(205, s), m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IF(p(205, s), BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(o(205, s), p, o, m)
-# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_IF(p(206, s), m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IF(p(206, s), BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(o(206, s), p, o, m)
-# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_IF(p(207, s), m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IF(p(207, s), BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(o(207, s), p, o, m)
-# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_IF(p(208, s), m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IF(p(208, s), BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(o(208, s), p, o, m)
-# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_IF(p(209, s), m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IF(p(209, s), BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(o(209, s), p, o, m)
-# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_IF(p(210, s), m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IF(p(210, s), BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(o(210, s), p, o, m)
-# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_IF(p(211, s), m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IF(p(211, s), BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(o(211, s), p, o, m)
-# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_IF(p(212, s), m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IF(p(212, s), BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(o(212, s), p, o, m)
-# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_IF(p(213, s), m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IF(p(213, s), BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(o(213, s), p, o, m)
-# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_IF(p(214, s), m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IF(p(214, s), BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(o(214, s), p, o, m)
-# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_IF(p(215, s), m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IF(p(215, s), BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(o(215, s), p, o, m)
-# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_IF(p(216, s), m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IF(p(216, s), BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(o(216, s), p, o, m)
-# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_IF(p(217, s), m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IF(p(217, s), BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(o(217, s), p, o, m)
-# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_IF(p(218, s), m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IF(p(218, s), BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(o(218, s), p, o, m)
-# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_IF(p(219, s), m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IF(p(219, s), BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(o(219, s), p, o, m)
-# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_IF(p(220, s), m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IF(p(220, s), BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(o(220, s), p, o, m)
-# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_IF(p(221, s), m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IF(p(221, s), BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(o(221, s), p, o, m)
-# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_IF(p(222, s), m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IF(p(222, s), BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(o(222, s), p, o, m)
-# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_IF(p(223, s), m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IF(p(223, s), BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(o(223, s), p, o, m)
-# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_IF(p(224, s), m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IF(p(224, s), BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(o(224, s), p, o, m)
-# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_IF(p(225, s), m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IF(p(225, s), BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(o(225, s), p, o, m)
-# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_IF(p(226, s), m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IF(p(226, s), BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(o(226, s), p, o, m)
-# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_IF(p(227, s), m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IF(p(227, s), BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(o(227, s), p, o, m)
-# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_IF(p(228, s), m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IF(p(228, s), BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(o(228, s), p, o, m)
-# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_IF(p(229, s), m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IF(p(229, s), BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(o(229, s), p, o, m)
-# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_IF(p(230, s), m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IF(p(230, s), BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(o(230, s), p, o, m)
-# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_IF(p(231, s), m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IF(p(231, s), BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(o(231, s), p, o, m)
-# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_IF(p(232, s), m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IF(p(232, s), BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(o(232, s), p, o, m)
-# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_IF(p(233, s), m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IF(p(233, s), BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(o(233, s), p, o, m)
-# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_IF(p(234, s), m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IF(p(234, s), BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(o(234, s), p, o, m)
-# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_IF(p(235, s), m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IF(p(235, s), BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(o(235, s), p, o, m)
-# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_IF(p(236, s), m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IF(p(236, s), BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(o(236, s), p, o, m)
-# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_IF(p(237, s), m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IF(p(237, s), BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(o(237, s), p, o, m)
-# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_IF(p(238, s), m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IF(p(238, s), BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(o(238, s), p, o, m)
-# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_IF(p(239, s), m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IF(p(239, s), BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(o(239, s), p, o, m)
-# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_IF(p(240, s), m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IF(p(240, s), BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(o(240, s), p, o, m)
-# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_IF(p(241, s), m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IF(p(241, s), BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(o(241, s), p, o, m)
-# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_IF(p(242, s), m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IF(p(242, s), BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(o(242, s), p, o, m)
-# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_IF(p(243, s), m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IF(p(243, s), BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(o(243, s), p, o, m)
-# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_IF(p(244, s), m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IF(p(244, s), BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(o(244, s), p, o, m)
-# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_IF(p(245, s), m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IF(p(245, s), BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(o(245, s), p, o, m)
-# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_IF(p(246, s), m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IF(p(246, s), BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(o(246, s), p, o, m)
-# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_IF(p(247, s), m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IF(p(247, s), BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(o(247, s), p, o, m)
-# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_IF(p(248, s), m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IF(p(248, s), BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(o(248, s), p, o, m)
-# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_IF(p(249, s), m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IF(p(249, s), BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(o(249, s), p, o, m)
-# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_IF(p(250, s), m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IF(p(250, s), BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(o(250, s), p, o, m)
-# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_IF(p(251, s), m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IF(p(251, s), BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(o(251, s), p, o, m)
-# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_IF(p(252, s), m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IF(p(252, s), BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(o(252, s), p, o, m)
-# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_IF(p(253, s), m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IF(p(253, s), BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(o(253, s), p, o, m)
-# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_IF(p(254, s), m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IF(p(254, s), BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(o(254, s), p, o, m)
-# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_IF(p(255, s), m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IF(p(255, s), BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(o(255, s), p, o, m)
-# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_IF(p(256, s), m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IF(p(256, s), BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(o(256, s), p, o, m)
-# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_IF(p(257, s), m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IF(p(257, s), BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(o(257, s), p, o, m)
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repetition/enum_params.hpp b/libcutl/cutl/details/boost/preprocessor/repetition/enum_params.hpp
deleted file mode 100644
index 77a4e4f..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repetition/enum_params.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
-# define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/punctuation/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/repetition/repeat.hpp>
-#
-# /* BOOST_PP_ENUM_PARAMS */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
-# else
-# define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_ENUM_PARAMS_I(count, param)
-# define BOOST_PP_ENUM_PARAMS_I(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
-# endif
-#
-# define BOOST_PP_ENUM_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) param ## n
-#
-# /* BOOST_PP_ENUM_PARAMS_Z */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
-# else
-# define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_ENUM_PARAMS_Z_I(z, count, param)
-# define BOOST_PP_ENUM_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repetition/enum_shifted_params.hpp b/libcutl/cutl/details/boost/preprocessor/repetition/enum_shifted_params.hpp
deleted file mode 100644
index 311bbdf..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repetition/enum_shifted_params.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
-# define BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
-#
-# include <cutl/details/boost/preprocessor/arithmetic/dec.hpp>
-# include <cutl/details/boost/preprocessor/arithmetic/inc.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/punctuation/comma_if.hpp>
-# include <cutl/details/boost/preprocessor/repetition/repeat.hpp>
-#
-# /* BOOST_PP_ENUM_SHIFTED_PARAMS */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
-# else
-# define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_I(count, param)
-# define BOOST_PP_ENUM_SHIFTED_PARAMS_I(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
-# endif
-#
-# define BOOST_PP_ENUM_SHIFTED_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(param, BOOST_PP_INC(n))
-#
-# /* BOOST_PP_ENUM_SHIFTED_PARAMS_Z */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
-# else
-# define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param)
-# define BOOST_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repetition/enum_trailing_params.hpp b/libcutl/cutl/details/boost/preprocessor/repetition/enum_trailing_params.hpp
deleted file mode 100644
index 5ceb226..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repetition/enum_trailing_params.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_PARAMS_HPP
-# define BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_PARAMS_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/repetition/repeat.hpp>
-#
-# /* BOOST_PP_ENUM_TRAILING_PARAMS */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ENUM_TRAILING_PARAMS(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
-# else
-# define BOOST_PP_ENUM_TRAILING_PARAMS(count, param) BOOST_PP_ENUM_TRAILING_PARAMS_I(count, param)
-# define BOOST_PP_ENUM_TRAILING_PARAMS_I(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
-# endif
-#
-# define BOOST_PP_ENUM_TRAILING_PARAMS_M(z, n, param) , param ## n
-#
-# /* BOOST_PP_ENUM_TRAILING_PARAMS_Z */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
-# else
-# define BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, count, param) BOOST_PP_ENUM_TRAILING_PARAMS_Z_I(z, count, param)
-# define BOOST_PP_ENUM_TRAILING_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repetition/for.hpp b/libcutl/cutl/details/boost/preprocessor/repetition/for.hpp
deleted file mode 100644
index 239965c..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repetition/for.hpp
+++ /dev/null
@@ -1,306 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPETITION_FOR_HPP
-# define BOOST_PREPROCESSOR_REPETITION_FOR_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/debug/error.hpp>
-# include <cutl/details/boost/preprocessor/detail/auto_rec.hpp>
-#
-# /* BOOST_PP_FOR */
-#
-# if 0
-# define BOOST_PP_FOR(state, pred, op, macro)
-# endif
-#
-# define BOOST_PP_FOR BOOST_PP_CAT(BOOST_PP_FOR_, BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 256))
-#
-# define BOOST_PP_FOR_P(n) BOOST_PP_CAT(BOOST_PP_FOR_CHECK_, BOOST_PP_FOR_ ## n(1, BOOST_PP_FOR_SR_P, BOOST_PP_FOR_SR_O, BOOST_PP_FOR_SR_M))
-#
-# define BOOST_PP_FOR_SR_P(r, s) s
-# define BOOST_PP_FOR_SR_O(r, s) 0
-# define BOOST_PP_FOR_SR_M(r, s) BOOST_PP_NIL
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# include <cutl/details/boost/preprocessor/repetition/detail/edg/for.hpp>
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# include <cutl/details/boost/preprocessor/repetition/detail/msvc/for.hpp>
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
-# include <cutl/details/boost/preprocessor/repetition/detail/dmc/for.hpp>
-# else
-# include <cutl/details/boost/preprocessor/repetition/detail/for.hpp>
-# endif
-#
-# define BOOST_PP_FOR_257(s, p, o, m) BOOST_PP_ERROR(0x0002)
-#
-# define BOOST_PP_FOR_CHECK_BOOST_PP_NIL 1
-#
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_2(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_3(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_4(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_5(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_6(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_7(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_8(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_9(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_10(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_11(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_12(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_13(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_14(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_15(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_16(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_17(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_18(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_19(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_20(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_21(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_22(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_23(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_24(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_25(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_26(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_27(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_28(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_29(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_30(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_31(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_32(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_33(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_34(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_35(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_36(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_37(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_38(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_39(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_40(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_41(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_42(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_43(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_44(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_45(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_46(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_47(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_48(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_49(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_50(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_51(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_52(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_53(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_54(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_55(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_56(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_57(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_58(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_59(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_60(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_61(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_62(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_63(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_64(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_65(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_66(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_67(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_68(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_69(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_70(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_71(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_72(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_73(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_74(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_75(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_76(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_77(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_78(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_79(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_80(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_81(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_82(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_83(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_84(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_85(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_86(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_87(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_88(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_89(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_90(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_91(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_92(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_93(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_94(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_95(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_96(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_97(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_98(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_99(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_100(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_101(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_102(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_103(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_104(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_105(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_106(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_107(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_108(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_109(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_110(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_111(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_112(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_113(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_114(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_115(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_116(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_117(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_118(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_119(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_120(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_121(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_122(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_123(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_124(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_125(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_126(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_127(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_128(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_129(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_130(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_131(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_132(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_133(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_134(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_135(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_136(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_137(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_138(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_139(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_140(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_141(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_142(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_143(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_144(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_145(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_146(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_147(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_148(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_149(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_150(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_151(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_152(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_153(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_154(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_155(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_156(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_157(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_158(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_159(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_160(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_161(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_162(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_163(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_164(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_165(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_166(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_167(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_168(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_169(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_170(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_171(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_172(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_173(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_174(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_175(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_176(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_177(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_178(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_179(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_180(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_181(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_182(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_183(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_184(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_185(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_186(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_187(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_188(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_189(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_190(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_191(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_192(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_193(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_194(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_195(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_196(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_197(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_198(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_199(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_200(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_201(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_202(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_203(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_204(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_205(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_206(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_207(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_208(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_209(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_210(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_211(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_212(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_213(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_214(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_215(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_216(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_217(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_218(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_219(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_220(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_221(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_222(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_223(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_224(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_225(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_226(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_227(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_228(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_229(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_230(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_231(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_232(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_233(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_234(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_235(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_236(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_237(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_238(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_239(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_240(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_241(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_242(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_243(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_244(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_245(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_246(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_247(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_248(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_249(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_250(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_251(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_252(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_253(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_254(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_255(s, p, o, m) 0
-# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_256(s, p, o, m) 0
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repetition/repeat.hpp b/libcutl/cutl/details/boost/preprocessor/repetition/repeat.hpp
deleted file mode 100644
index d890e8c..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repetition/repeat.hpp
+++ /dev/null
@@ -1,825 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
-# define BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/debug/error.hpp>
-# include <cutl/details/boost/preprocessor/detail/auto_rec.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-#
-# /* BOOST_PP_REPEAT */
-#
-# if 0
-# define BOOST_PP_REPEAT(count, macro, data)
-# endif
-#
-# define BOOST_PP_REPEAT BOOST_PP_CAT(BOOST_PP_REPEAT_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
-#
-# define BOOST_PP_REPEAT_P(n) BOOST_PP_CAT(BOOST_PP_REPEAT_CHECK_, BOOST_PP_REPEAT_ ## n(1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3, BOOST_PP_NIL))
-#
-# define BOOST_PP_REPEAT_CHECK_BOOST_PP_NIL 1
-# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_1(c, m, d) 0
-# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_2(c, m, d) 0
-# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_3(c, m, d) 0
-#
-# define BOOST_PP_REPEAT_1(c, m, d) BOOST_PP_REPEAT_1_I(c, m, d)
-# define BOOST_PP_REPEAT_2(c, m, d) BOOST_PP_REPEAT_2_I(c, m, d)
-# define BOOST_PP_REPEAT_3(c, m, d) BOOST_PP_REPEAT_3_I(c, m, d)
-# define BOOST_PP_REPEAT_4(c, m, d) BOOST_PP_ERROR(0x0003)
-#
-# define BOOST_PP_REPEAT_1_I(c, m, d) BOOST_PP_REPEAT_1_ ## c(m, d)
-# define BOOST_PP_REPEAT_2_I(c, m, d) BOOST_PP_REPEAT_2_ ## c(m, d)
-# define BOOST_PP_REPEAT_3_I(c, m, d) BOOST_PP_REPEAT_3_ ## c(m, d)
-#
-# define BOOST_PP_REPEAT_1ST BOOST_PP_REPEAT_1
-# define BOOST_PP_REPEAT_2ND BOOST_PP_REPEAT_2
-# define BOOST_PP_REPEAT_3RD BOOST_PP_REPEAT_3
-#
-# define BOOST_PP_REPEAT_1_0(m, d)
-# define BOOST_PP_REPEAT_1_1(m, d) m(2, 0, d)
-# define BOOST_PP_REPEAT_1_2(m, d) BOOST_PP_REPEAT_1_1(m, d) m(2, 1, d)
-# define BOOST_PP_REPEAT_1_3(m, d) BOOST_PP_REPEAT_1_2(m, d) m(2, 2, d)
-# define BOOST_PP_REPEAT_1_4(m, d) BOOST_PP_REPEAT_1_3(m, d) m(2, 3, d)
-# define BOOST_PP_REPEAT_1_5(m, d) BOOST_PP_REPEAT_1_4(m, d) m(2, 4, d)
-# define BOOST_PP_REPEAT_1_6(m, d) BOOST_PP_REPEAT_1_5(m, d) m(2, 5, d)
-# define BOOST_PP_REPEAT_1_7(m, d) BOOST_PP_REPEAT_1_6(m, d) m(2, 6, d)
-# define BOOST_PP_REPEAT_1_8(m, d) BOOST_PP_REPEAT_1_7(m, d) m(2, 7, d)
-# define BOOST_PP_REPEAT_1_9(m, d) BOOST_PP_REPEAT_1_8(m, d) m(2, 8, d)
-# define BOOST_PP_REPEAT_1_10(m, d) BOOST_PP_REPEAT_1_9(m, d) m(2, 9, d)
-# define BOOST_PP_REPEAT_1_11(m, d) BOOST_PP_REPEAT_1_10(m, d) m(2, 10, d)
-# define BOOST_PP_REPEAT_1_12(m, d) BOOST_PP_REPEAT_1_11(m, d) m(2, 11, d)
-# define BOOST_PP_REPEAT_1_13(m, d) BOOST_PP_REPEAT_1_12(m, d) m(2, 12, d)
-# define BOOST_PP_REPEAT_1_14(m, d) BOOST_PP_REPEAT_1_13(m, d) m(2, 13, d)
-# define BOOST_PP_REPEAT_1_15(m, d) BOOST_PP_REPEAT_1_14(m, d) m(2, 14, d)
-# define BOOST_PP_REPEAT_1_16(m, d) BOOST_PP_REPEAT_1_15(m, d) m(2, 15, d)
-# define BOOST_PP_REPEAT_1_17(m, d) BOOST_PP_REPEAT_1_16(m, d) m(2, 16, d)
-# define BOOST_PP_REPEAT_1_18(m, d) BOOST_PP_REPEAT_1_17(m, d) m(2, 17, d)
-# define BOOST_PP_REPEAT_1_19(m, d) BOOST_PP_REPEAT_1_18(m, d) m(2, 18, d)
-# define BOOST_PP_REPEAT_1_20(m, d) BOOST_PP_REPEAT_1_19(m, d) m(2, 19, d)
-# define BOOST_PP_REPEAT_1_21(m, d) BOOST_PP_REPEAT_1_20(m, d) m(2, 20, d)
-# define BOOST_PP_REPEAT_1_22(m, d) BOOST_PP_REPEAT_1_21(m, d) m(2, 21, d)
-# define BOOST_PP_REPEAT_1_23(m, d) BOOST_PP_REPEAT_1_22(m, d) m(2, 22, d)
-# define BOOST_PP_REPEAT_1_24(m, d) BOOST_PP_REPEAT_1_23(m, d) m(2, 23, d)
-# define BOOST_PP_REPEAT_1_25(m, d) BOOST_PP_REPEAT_1_24(m, d) m(2, 24, d)
-# define BOOST_PP_REPEAT_1_26(m, d) BOOST_PP_REPEAT_1_25(m, d) m(2, 25, d)
-# define BOOST_PP_REPEAT_1_27(m, d) BOOST_PP_REPEAT_1_26(m, d) m(2, 26, d)
-# define BOOST_PP_REPEAT_1_28(m, d) BOOST_PP_REPEAT_1_27(m, d) m(2, 27, d)
-# define BOOST_PP_REPEAT_1_29(m, d) BOOST_PP_REPEAT_1_28(m, d) m(2, 28, d)
-# define BOOST_PP_REPEAT_1_30(m, d) BOOST_PP_REPEAT_1_29(m, d) m(2, 29, d)
-# define BOOST_PP_REPEAT_1_31(m, d) BOOST_PP_REPEAT_1_30(m, d) m(2, 30, d)
-# define BOOST_PP_REPEAT_1_32(m, d) BOOST_PP_REPEAT_1_31(m, d) m(2, 31, d)
-# define BOOST_PP_REPEAT_1_33(m, d) BOOST_PP_REPEAT_1_32(m, d) m(2, 32, d)
-# define BOOST_PP_REPEAT_1_34(m, d) BOOST_PP_REPEAT_1_33(m, d) m(2, 33, d)
-# define BOOST_PP_REPEAT_1_35(m, d) BOOST_PP_REPEAT_1_34(m, d) m(2, 34, d)
-# define BOOST_PP_REPEAT_1_36(m, d) BOOST_PP_REPEAT_1_35(m, d) m(2, 35, d)
-# define BOOST_PP_REPEAT_1_37(m, d) BOOST_PP_REPEAT_1_36(m, d) m(2, 36, d)
-# define BOOST_PP_REPEAT_1_38(m, d) BOOST_PP_REPEAT_1_37(m, d) m(2, 37, d)
-# define BOOST_PP_REPEAT_1_39(m, d) BOOST_PP_REPEAT_1_38(m, d) m(2, 38, d)
-# define BOOST_PP_REPEAT_1_40(m, d) BOOST_PP_REPEAT_1_39(m, d) m(2, 39, d)
-# define BOOST_PP_REPEAT_1_41(m, d) BOOST_PP_REPEAT_1_40(m, d) m(2, 40, d)
-# define BOOST_PP_REPEAT_1_42(m, d) BOOST_PP_REPEAT_1_41(m, d) m(2, 41, d)
-# define BOOST_PP_REPEAT_1_43(m, d) BOOST_PP_REPEAT_1_42(m, d) m(2, 42, d)
-# define BOOST_PP_REPEAT_1_44(m, d) BOOST_PP_REPEAT_1_43(m, d) m(2, 43, d)
-# define BOOST_PP_REPEAT_1_45(m, d) BOOST_PP_REPEAT_1_44(m, d) m(2, 44, d)
-# define BOOST_PP_REPEAT_1_46(m, d) BOOST_PP_REPEAT_1_45(m, d) m(2, 45, d)
-# define BOOST_PP_REPEAT_1_47(m, d) BOOST_PP_REPEAT_1_46(m, d) m(2, 46, d)
-# define BOOST_PP_REPEAT_1_48(m, d) BOOST_PP_REPEAT_1_47(m, d) m(2, 47, d)
-# define BOOST_PP_REPEAT_1_49(m, d) BOOST_PP_REPEAT_1_48(m, d) m(2, 48, d)
-# define BOOST_PP_REPEAT_1_50(m, d) BOOST_PP_REPEAT_1_49(m, d) m(2, 49, d)
-# define BOOST_PP_REPEAT_1_51(m, d) BOOST_PP_REPEAT_1_50(m, d) m(2, 50, d)
-# define BOOST_PP_REPEAT_1_52(m, d) BOOST_PP_REPEAT_1_51(m, d) m(2, 51, d)
-# define BOOST_PP_REPEAT_1_53(m, d) BOOST_PP_REPEAT_1_52(m, d) m(2, 52, d)
-# define BOOST_PP_REPEAT_1_54(m, d) BOOST_PP_REPEAT_1_53(m, d) m(2, 53, d)
-# define BOOST_PP_REPEAT_1_55(m, d) BOOST_PP_REPEAT_1_54(m, d) m(2, 54, d)
-# define BOOST_PP_REPEAT_1_56(m, d) BOOST_PP_REPEAT_1_55(m, d) m(2, 55, d)
-# define BOOST_PP_REPEAT_1_57(m, d) BOOST_PP_REPEAT_1_56(m, d) m(2, 56, d)
-# define BOOST_PP_REPEAT_1_58(m, d) BOOST_PP_REPEAT_1_57(m, d) m(2, 57, d)
-# define BOOST_PP_REPEAT_1_59(m, d) BOOST_PP_REPEAT_1_58(m, d) m(2, 58, d)
-# define BOOST_PP_REPEAT_1_60(m, d) BOOST_PP_REPEAT_1_59(m, d) m(2, 59, d)
-# define BOOST_PP_REPEAT_1_61(m, d) BOOST_PP_REPEAT_1_60(m, d) m(2, 60, d)
-# define BOOST_PP_REPEAT_1_62(m, d) BOOST_PP_REPEAT_1_61(m, d) m(2, 61, d)
-# define BOOST_PP_REPEAT_1_63(m, d) BOOST_PP_REPEAT_1_62(m, d) m(2, 62, d)
-# define BOOST_PP_REPEAT_1_64(m, d) BOOST_PP_REPEAT_1_63(m, d) m(2, 63, d)
-# define BOOST_PP_REPEAT_1_65(m, d) BOOST_PP_REPEAT_1_64(m, d) m(2, 64, d)
-# define BOOST_PP_REPEAT_1_66(m, d) BOOST_PP_REPEAT_1_65(m, d) m(2, 65, d)
-# define BOOST_PP_REPEAT_1_67(m, d) BOOST_PP_REPEAT_1_66(m, d) m(2, 66, d)
-# define BOOST_PP_REPEAT_1_68(m, d) BOOST_PP_REPEAT_1_67(m, d) m(2, 67, d)
-# define BOOST_PP_REPEAT_1_69(m, d) BOOST_PP_REPEAT_1_68(m, d) m(2, 68, d)
-# define BOOST_PP_REPEAT_1_70(m, d) BOOST_PP_REPEAT_1_69(m, d) m(2, 69, d)
-# define BOOST_PP_REPEAT_1_71(m, d) BOOST_PP_REPEAT_1_70(m, d) m(2, 70, d)
-# define BOOST_PP_REPEAT_1_72(m, d) BOOST_PP_REPEAT_1_71(m, d) m(2, 71, d)
-# define BOOST_PP_REPEAT_1_73(m, d) BOOST_PP_REPEAT_1_72(m, d) m(2, 72, d)
-# define BOOST_PP_REPEAT_1_74(m, d) BOOST_PP_REPEAT_1_73(m, d) m(2, 73, d)
-# define BOOST_PP_REPEAT_1_75(m, d) BOOST_PP_REPEAT_1_74(m, d) m(2, 74, d)
-# define BOOST_PP_REPEAT_1_76(m, d) BOOST_PP_REPEAT_1_75(m, d) m(2, 75, d)
-# define BOOST_PP_REPEAT_1_77(m, d) BOOST_PP_REPEAT_1_76(m, d) m(2, 76, d)
-# define BOOST_PP_REPEAT_1_78(m, d) BOOST_PP_REPEAT_1_77(m, d) m(2, 77, d)
-# define BOOST_PP_REPEAT_1_79(m, d) BOOST_PP_REPEAT_1_78(m, d) m(2, 78, d)
-# define BOOST_PP_REPEAT_1_80(m, d) BOOST_PP_REPEAT_1_79(m, d) m(2, 79, d)
-# define BOOST_PP_REPEAT_1_81(m, d) BOOST_PP_REPEAT_1_80(m, d) m(2, 80, d)
-# define BOOST_PP_REPEAT_1_82(m, d) BOOST_PP_REPEAT_1_81(m, d) m(2, 81, d)
-# define BOOST_PP_REPEAT_1_83(m, d) BOOST_PP_REPEAT_1_82(m, d) m(2, 82, d)
-# define BOOST_PP_REPEAT_1_84(m, d) BOOST_PP_REPEAT_1_83(m, d) m(2, 83, d)
-# define BOOST_PP_REPEAT_1_85(m, d) BOOST_PP_REPEAT_1_84(m, d) m(2, 84, d)
-# define BOOST_PP_REPEAT_1_86(m, d) BOOST_PP_REPEAT_1_85(m, d) m(2, 85, d)
-# define BOOST_PP_REPEAT_1_87(m, d) BOOST_PP_REPEAT_1_86(m, d) m(2, 86, d)
-# define BOOST_PP_REPEAT_1_88(m, d) BOOST_PP_REPEAT_1_87(m, d) m(2, 87, d)
-# define BOOST_PP_REPEAT_1_89(m, d) BOOST_PP_REPEAT_1_88(m, d) m(2, 88, d)
-# define BOOST_PP_REPEAT_1_90(m, d) BOOST_PP_REPEAT_1_89(m, d) m(2, 89, d)
-# define BOOST_PP_REPEAT_1_91(m, d) BOOST_PP_REPEAT_1_90(m, d) m(2, 90, d)
-# define BOOST_PP_REPEAT_1_92(m, d) BOOST_PP_REPEAT_1_91(m, d) m(2, 91, d)
-# define BOOST_PP_REPEAT_1_93(m, d) BOOST_PP_REPEAT_1_92(m, d) m(2, 92, d)
-# define BOOST_PP_REPEAT_1_94(m, d) BOOST_PP_REPEAT_1_93(m, d) m(2, 93, d)
-# define BOOST_PP_REPEAT_1_95(m, d) BOOST_PP_REPEAT_1_94(m, d) m(2, 94, d)
-# define BOOST_PP_REPEAT_1_96(m, d) BOOST_PP_REPEAT_1_95(m, d) m(2, 95, d)
-# define BOOST_PP_REPEAT_1_97(m, d) BOOST_PP_REPEAT_1_96(m, d) m(2, 96, d)
-# define BOOST_PP_REPEAT_1_98(m, d) BOOST_PP_REPEAT_1_97(m, d) m(2, 97, d)
-# define BOOST_PP_REPEAT_1_99(m, d) BOOST_PP_REPEAT_1_98(m, d) m(2, 98, d)
-# define BOOST_PP_REPEAT_1_100(m, d) BOOST_PP_REPEAT_1_99(m, d) m(2, 99, d)
-# define BOOST_PP_REPEAT_1_101(m, d) BOOST_PP_REPEAT_1_100(m, d) m(2, 100, d)
-# define BOOST_PP_REPEAT_1_102(m, d) BOOST_PP_REPEAT_1_101(m, d) m(2, 101, d)
-# define BOOST_PP_REPEAT_1_103(m, d) BOOST_PP_REPEAT_1_102(m, d) m(2, 102, d)
-# define BOOST_PP_REPEAT_1_104(m, d) BOOST_PP_REPEAT_1_103(m, d) m(2, 103, d)
-# define BOOST_PP_REPEAT_1_105(m, d) BOOST_PP_REPEAT_1_104(m, d) m(2, 104, d)
-# define BOOST_PP_REPEAT_1_106(m, d) BOOST_PP_REPEAT_1_105(m, d) m(2, 105, d)
-# define BOOST_PP_REPEAT_1_107(m, d) BOOST_PP_REPEAT_1_106(m, d) m(2, 106, d)
-# define BOOST_PP_REPEAT_1_108(m, d) BOOST_PP_REPEAT_1_107(m, d) m(2, 107, d)
-# define BOOST_PP_REPEAT_1_109(m, d) BOOST_PP_REPEAT_1_108(m, d) m(2, 108, d)
-# define BOOST_PP_REPEAT_1_110(m, d) BOOST_PP_REPEAT_1_109(m, d) m(2, 109, d)
-# define BOOST_PP_REPEAT_1_111(m, d) BOOST_PP_REPEAT_1_110(m, d) m(2, 110, d)
-# define BOOST_PP_REPEAT_1_112(m, d) BOOST_PP_REPEAT_1_111(m, d) m(2, 111, d)
-# define BOOST_PP_REPEAT_1_113(m, d) BOOST_PP_REPEAT_1_112(m, d) m(2, 112, d)
-# define BOOST_PP_REPEAT_1_114(m, d) BOOST_PP_REPEAT_1_113(m, d) m(2, 113, d)
-# define BOOST_PP_REPEAT_1_115(m, d) BOOST_PP_REPEAT_1_114(m, d) m(2, 114, d)
-# define BOOST_PP_REPEAT_1_116(m, d) BOOST_PP_REPEAT_1_115(m, d) m(2, 115, d)
-# define BOOST_PP_REPEAT_1_117(m, d) BOOST_PP_REPEAT_1_116(m, d) m(2, 116, d)
-# define BOOST_PP_REPEAT_1_118(m, d) BOOST_PP_REPEAT_1_117(m, d) m(2, 117, d)
-# define BOOST_PP_REPEAT_1_119(m, d) BOOST_PP_REPEAT_1_118(m, d) m(2, 118, d)
-# define BOOST_PP_REPEAT_1_120(m, d) BOOST_PP_REPEAT_1_119(m, d) m(2, 119, d)
-# define BOOST_PP_REPEAT_1_121(m, d) BOOST_PP_REPEAT_1_120(m, d) m(2, 120, d)
-# define BOOST_PP_REPEAT_1_122(m, d) BOOST_PP_REPEAT_1_121(m, d) m(2, 121, d)
-# define BOOST_PP_REPEAT_1_123(m, d) BOOST_PP_REPEAT_1_122(m, d) m(2, 122, d)
-# define BOOST_PP_REPEAT_1_124(m, d) BOOST_PP_REPEAT_1_123(m, d) m(2, 123, d)
-# define BOOST_PP_REPEAT_1_125(m, d) BOOST_PP_REPEAT_1_124(m, d) m(2, 124, d)
-# define BOOST_PP_REPEAT_1_126(m, d) BOOST_PP_REPEAT_1_125(m, d) m(2, 125, d)
-# define BOOST_PP_REPEAT_1_127(m, d) BOOST_PP_REPEAT_1_126(m, d) m(2, 126, d)
-# define BOOST_PP_REPEAT_1_128(m, d) BOOST_PP_REPEAT_1_127(m, d) m(2, 127, d)
-# define BOOST_PP_REPEAT_1_129(m, d) BOOST_PP_REPEAT_1_128(m, d) m(2, 128, d)
-# define BOOST_PP_REPEAT_1_130(m, d) BOOST_PP_REPEAT_1_129(m, d) m(2, 129, d)
-# define BOOST_PP_REPEAT_1_131(m, d) BOOST_PP_REPEAT_1_130(m, d) m(2, 130, d)
-# define BOOST_PP_REPEAT_1_132(m, d) BOOST_PP_REPEAT_1_131(m, d) m(2, 131, d)
-# define BOOST_PP_REPEAT_1_133(m, d) BOOST_PP_REPEAT_1_132(m, d) m(2, 132, d)
-# define BOOST_PP_REPEAT_1_134(m, d) BOOST_PP_REPEAT_1_133(m, d) m(2, 133, d)
-# define BOOST_PP_REPEAT_1_135(m, d) BOOST_PP_REPEAT_1_134(m, d) m(2, 134, d)
-# define BOOST_PP_REPEAT_1_136(m, d) BOOST_PP_REPEAT_1_135(m, d) m(2, 135, d)
-# define BOOST_PP_REPEAT_1_137(m, d) BOOST_PP_REPEAT_1_136(m, d) m(2, 136, d)
-# define BOOST_PP_REPEAT_1_138(m, d) BOOST_PP_REPEAT_1_137(m, d) m(2, 137, d)
-# define BOOST_PP_REPEAT_1_139(m, d) BOOST_PP_REPEAT_1_138(m, d) m(2, 138, d)
-# define BOOST_PP_REPEAT_1_140(m, d) BOOST_PP_REPEAT_1_139(m, d) m(2, 139, d)
-# define BOOST_PP_REPEAT_1_141(m, d) BOOST_PP_REPEAT_1_140(m, d) m(2, 140, d)
-# define BOOST_PP_REPEAT_1_142(m, d) BOOST_PP_REPEAT_1_141(m, d) m(2, 141, d)
-# define BOOST_PP_REPEAT_1_143(m, d) BOOST_PP_REPEAT_1_142(m, d) m(2, 142, d)
-# define BOOST_PP_REPEAT_1_144(m, d) BOOST_PP_REPEAT_1_143(m, d) m(2, 143, d)
-# define BOOST_PP_REPEAT_1_145(m, d) BOOST_PP_REPEAT_1_144(m, d) m(2, 144, d)
-# define BOOST_PP_REPEAT_1_146(m, d) BOOST_PP_REPEAT_1_145(m, d) m(2, 145, d)
-# define BOOST_PP_REPEAT_1_147(m, d) BOOST_PP_REPEAT_1_146(m, d) m(2, 146, d)
-# define BOOST_PP_REPEAT_1_148(m, d) BOOST_PP_REPEAT_1_147(m, d) m(2, 147, d)
-# define BOOST_PP_REPEAT_1_149(m, d) BOOST_PP_REPEAT_1_148(m, d) m(2, 148, d)
-# define BOOST_PP_REPEAT_1_150(m, d) BOOST_PP_REPEAT_1_149(m, d) m(2, 149, d)
-# define BOOST_PP_REPEAT_1_151(m, d) BOOST_PP_REPEAT_1_150(m, d) m(2, 150, d)
-# define BOOST_PP_REPEAT_1_152(m, d) BOOST_PP_REPEAT_1_151(m, d) m(2, 151, d)
-# define BOOST_PP_REPEAT_1_153(m, d) BOOST_PP_REPEAT_1_152(m, d) m(2, 152, d)
-# define BOOST_PP_REPEAT_1_154(m, d) BOOST_PP_REPEAT_1_153(m, d) m(2, 153, d)
-# define BOOST_PP_REPEAT_1_155(m, d) BOOST_PP_REPEAT_1_154(m, d) m(2, 154, d)
-# define BOOST_PP_REPEAT_1_156(m, d) BOOST_PP_REPEAT_1_155(m, d) m(2, 155, d)
-# define BOOST_PP_REPEAT_1_157(m, d) BOOST_PP_REPEAT_1_156(m, d) m(2, 156, d)
-# define BOOST_PP_REPEAT_1_158(m, d) BOOST_PP_REPEAT_1_157(m, d) m(2, 157, d)
-# define BOOST_PP_REPEAT_1_159(m, d) BOOST_PP_REPEAT_1_158(m, d) m(2, 158, d)
-# define BOOST_PP_REPEAT_1_160(m, d) BOOST_PP_REPEAT_1_159(m, d) m(2, 159, d)
-# define BOOST_PP_REPEAT_1_161(m, d) BOOST_PP_REPEAT_1_160(m, d) m(2, 160, d)
-# define BOOST_PP_REPEAT_1_162(m, d) BOOST_PP_REPEAT_1_161(m, d) m(2, 161, d)
-# define BOOST_PP_REPEAT_1_163(m, d) BOOST_PP_REPEAT_1_162(m, d) m(2, 162, d)
-# define BOOST_PP_REPEAT_1_164(m, d) BOOST_PP_REPEAT_1_163(m, d) m(2, 163, d)
-# define BOOST_PP_REPEAT_1_165(m, d) BOOST_PP_REPEAT_1_164(m, d) m(2, 164, d)
-# define BOOST_PP_REPEAT_1_166(m, d) BOOST_PP_REPEAT_1_165(m, d) m(2, 165, d)
-# define BOOST_PP_REPEAT_1_167(m, d) BOOST_PP_REPEAT_1_166(m, d) m(2, 166, d)
-# define BOOST_PP_REPEAT_1_168(m, d) BOOST_PP_REPEAT_1_167(m, d) m(2, 167, d)
-# define BOOST_PP_REPEAT_1_169(m, d) BOOST_PP_REPEAT_1_168(m, d) m(2, 168, d)
-# define BOOST_PP_REPEAT_1_170(m, d) BOOST_PP_REPEAT_1_169(m, d) m(2, 169, d)
-# define BOOST_PP_REPEAT_1_171(m, d) BOOST_PP_REPEAT_1_170(m, d) m(2, 170, d)
-# define BOOST_PP_REPEAT_1_172(m, d) BOOST_PP_REPEAT_1_171(m, d) m(2, 171, d)
-# define BOOST_PP_REPEAT_1_173(m, d) BOOST_PP_REPEAT_1_172(m, d) m(2, 172, d)
-# define BOOST_PP_REPEAT_1_174(m, d) BOOST_PP_REPEAT_1_173(m, d) m(2, 173, d)
-# define BOOST_PP_REPEAT_1_175(m, d) BOOST_PP_REPEAT_1_174(m, d) m(2, 174, d)
-# define BOOST_PP_REPEAT_1_176(m, d) BOOST_PP_REPEAT_1_175(m, d) m(2, 175, d)
-# define BOOST_PP_REPEAT_1_177(m, d) BOOST_PP_REPEAT_1_176(m, d) m(2, 176, d)
-# define BOOST_PP_REPEAT_1_178(m, d) BOOST_PP_REPEAT_1_177(m, d) m(2, 177, d)
-# define BOOST_PP_REPEAT_1_179(m, d) BOOST_PP_REPEAT_1_178(m, d) m(2, 178, d)
-# define BOOST_PP_REPEAT_1_180(m, d) BOOST_PP_REPEAT_1_179(m, d) m(2, 179, d)
-# define BOOST_PP_REPEAT_1_181(m, d) BOOST_PP_REPEAT_1_180(m, d) m(2, 180, d)
-# define BOOST_PP_REPEAT_1_182(m, d) BOOST_PP_REPEAT_1_181(m, d) m(2, 181, d)
-# define BOOST_PP_REPEAT_1_183(m, d) BOOST_PP_REPEAT_1_182(m, d) m(2, 182, d)
-# define BOOST_PP_REPEAT_1_184(m, d) BOOST_PP_REPEAT_1_183(m, d) m(2, 183, d)
-# define BOOST_PP_REPEAT_1_185(m, d) BOOST_PP_REPEAT_1_184(m, d) m(2, 184, d)
-# define BOOST_PP_REPEAT_1_186(m, d) BOOST_PP_REPEAT_1_185(m, d) m(2, 185, d)
-# define BOOST_PP_REPEAT_1_187(m, d) BOOST_PP_REPEAT_1_186(m, d) m(2, 186, d)
-# define BOOST_PP_REPEAT_1_188(m, d) BOOST_PP_REPEAT_1_187(m, d) m(2, 187, d)
-# define BOOST_PP_REPEAT_1_189(m, d) BOOST_PP_REPEAT_1_188(m, d) m(2, 188, d)
-# define BOOST_PP_REPEAT_1_190(m, d) BOOST_PP_REPEAT_1_189(m, d) m(2, 189, d)
-# define BOOST_PP_REPEAT_1_191(m, d) BOOST_PP_REPEAT_1_190(m, d) m(2, 190, d)
-# define BOOST_PP_REPEAT_1_192(m, d) BOOST_PP_REPEAT_1_191(m, d) m(2, 191, d)
-# define BOOST_PP_REPEAT_1_193(m, d) BOOST_PP_REPEAT_1_192(m, d) m(2, 192, d)
-# define BOOST_PP_REPEAT_1_194(m, d) BOOST_PP_REPEAT_1_193(m, d) m(2, 193, d)
-# define BOOST_PP_REPEAT_1_195(m, d) BOOST_PP_REPEAT_1_194(m, d) m(2, 194, d)
-# define BOOST_PP_REPEAT_1_196(m, d) BOOST_PP_REPEAT_1_195(m, d) m(2, 195, d)
-# define BOOST_PP_REPEAT_1_197(m, d) BOOST_PP_REPEAT_1_196(m, d) m(2, 196, d)
-# define BOOST_PP_REPEAT_1_198(m, d) BOOST_PP_REPEAT_1_197(m, d) m(2, 197, d)
-# define BOOST_PP_REPEAT_1_199(m, d) BOOST_PP_REPEAT_1_198(m, d) m(2, 198, d)
-# define BOOST_PP_REPEAT_1_200(m, d) BOOST_PP_REPEAT_1_199(m, d) m(2, 199, d)
-# define BOOST_PP_REPEAT_1_201(m, d) BOOST_PP_REPEAT_1_200(m, d) m(2, 200, d)
-# define BOOST_PP_REPEAT_1_202(m, d) BOOST_PP_REPEAT_1_201(m, d) m(2, 201, d)
-# define BOOST_PP_REPEAT_1_203(m, d) BOOST_PP_REPEAT_1_202(m, d) m(2, 202, d)
-# define BOOST_PP_REPEAT_1_204(m, d) BOOST_PP_REPEAT_1_203(m, d) m(2, 203, d)
-# define BOOST_PP_REPEAT_1_205(m, d) BOOST_PP_REPEAT_1_204(m, d) m(2, 204, d)
-# define BOOST_PP_REPEAT_1_206(m, d) BOOST_PP_REPEAT_1_205(m, d) m(2, 205, d)
-# define BOOST_PP_REPEAT_1_207(m, d) BOOST_PP_REPEAT_1_206(m, d) m(2, 206, d)
-# define BOOST_PP_REPEAT_1_208(m, d) BOOST_PP_REPEAT_1_207(m, d) m(2, 207, d)
-# define BOOST_PP_REPEAT_1_209(m, d) BOOST_PP_REPEAT_1_208(m, d) m(2, 208, d)
-# define BOOST_PP_REPEAT_1_210(m, d) BOOST_PP_REPEAT_1_209(m, d) m(2, 209, d)
-# define BOOST_PP_REPEAT_1_211(m, d) BOOST_PP_REPEAT_1_210(m, d) m(2, 210, d)
-# define BOOST_PP_REPEAT_1_212(m, d) BOOST_PP_REPEAT_1_211(m, d) m(2, 211, d)
-# define BOOST_PP_REPEAT_1_213(m, d) BOOST_PP_REPEAT_1_212(m, d) m(2, 212, d)
-# define BOOST_PP_REPEAT_1_214(m, d) BOOST_PP_REPEAT_1_213(m, d) m(2, 213, d)
-# define BOOST_PP_REPEAT_1_215(m, d) BOOST_PP_REPEAT_1_214(m, d) m(2, 214, d)
-# define BOOST_PP_REPEAT_1_216(m, d) BOOST_PP_REPEAT_1_215(m, d) m(2, 215, d)
-# define BOOST_PP_REPEAT_1_217(m, d) BOOST_PP_REPEAT_1_216(m, d) m(2, 216, d)
-# define BOOST_PP_REPEAT_1_218(m, d) BOOST_PP_REPEAT_1_217(m, d) m(2, 217, d)
-# define BOOST_PP_REPEAT_1_219(m, d) BOOST_PP_REPEAT_1_218(m, d) m(2, 218, d)
-# define BOOST_PP_REPEAT_1_220(m, d) BOOST_PP_REPEAT_1_219(m, d) m(2, 219, d)
-# define BOOST_PP_REPEAT_1_221(m, d) BOOST_PP_REPEAT_1_220(m, d) m(2, 220, d)
-# define BOOST_PP_REPEAT_1_222(m, d) BOOST_PP_REPEAT_1_221(m, d) m(2, 221, d)
-# define BOOST_PP_REPEAT_1_223(m, d) BOOST_PP_REPEAT_1_222(m, d) m(2, 222, d)
-# define BOOST_PP_REPEAT_1_224(m, d) BOOST_PP_REPEAT_1_223(m, d) m(2, 223, d)
-# define BOOST_PP_REPEAT_1_225(m, d) BOOST_PP_REPEAT_1_224(m, d) m(2, 224, d)
-# define BOOST_PP_REPEAT_1_226(m, d) BOOST_PP_REPEAT_1_225(m, d) m(2, 225, d)
-# define BOOST_PP_REPEAT_1_227(m, d) BOOST_PP_REPEAT_1_226(m, d) m(2, 226, d)
-# define BOOST_PP_REPEAT_1_228(m, d) BOOST_PP_REPEAT_1_227(m, d) m(2, 227, d)
-# define BOOST_PP_REPEAT_1_229(m, d) BOOST_PP_REPEAT_1_228(m, d) m(2, 228, d)
-# define BOOST_PP_REPEAT_1_230(m, d) BOOST_PP_REPEAT_1_229(m, d) m(2, 229, d)
-# define BOOST_PP_REPEAT_1_231(m, d) BOOST_PP_REPEAT_1_230(m, d) m(2, 230, d)
-# define BOOST_PP_REPEAT_1_232(m, d) BOOST_PP_REPEAT_1_231(m, d) m(2, 231, d)
-# define BOOST_PP_REPEAT_1_233(m, d) BOOST_PP_REPEAT_1_232(m, d) m(2, 232, d)
-# define BOOST_PP_REPEAT_1_234(m, d) BOOST_PP_REPEAT_1_233(m, d) m(2, 233, d)
-# define BOOST_PP_REPEAT_1_235(m, d) BOOST_PP_REPEAT_1_234(m, d) m(2, 234, d)
-# define BOOST_PP_REPEAT_1_236(m, d) BOOST_PP_REPEAT_1_235(m, d) m(2, 235, d)
-# define BOOST_PP_REPEAT_1_237(m, d) BOOST_PP_REPEAT_1_236(m, d) m(2, 236, d)
-# define BOOST_PP_REPEAT_1_238(m, d) BOOST_PP_REPEAT_1_237(m, d) m(2, 237, d)
-# define BOOST_PP_REPEAT_1_239(m, d) BOOST_PP_REPEAT_1_238(m, d) m(2, 238, d)
-# define BOOST_PP_REPEAT_1_240(m, d) BOOST_PP_REPEAT_1_239(m, d) m(2, 239, d)
-# define BOOST_PP_REPEAT_1_241(m, d) BOOST_PP_REPEAT_1_240(m, d) m(2, 240, d)
-# define BOOST_PP_REPEAT_1_242(m, d) BOOST_PP_REPEAT_1_241(m, d) m(2, 241, d)
-# define BOOST_PP_REPEAT_1_243(m, d) BOOST_PP_REPEAT_1_242(m, d) m(2, 242, d)
-# define BOOST_PP_REPEAT_1_244(m, d) BOOST_PP_REPEAT_1_243(m, d) m(2, 243, d)
-# define BOOST_PP_REPEAT_1_245(m, d) BOOST_PP_REPEAT_1_244(m, d) m(2, 244, d)
-# define BOOST_PP_REPEAT_1_246(m, d) BOOST_PP_REPEAT_1_245(m, d) m(2, 245, d)
-# define BOOST_PP_REPEAT_1_247(m, d) BOOST_PP_REPEAT_1_246(m, d) m(2, 246, d)
-# define BOOST_PP_REPEAT_1_248(m, d) BOOST_PP_REPEAT_1_247(m, d) m(2, 247, d)
-# define BOOST_PP_REPEAT_1_249(m, d) BOOST_PP_REPEAT_1_248(m, d) m(2, 248, d)
-# define BOOST_PP_REPEAT_1_250(m, d) BOOST_PP_REPEAT_1_249(m, d) m(2, 249, d)
-# define BOOST_PP_REPEAT_1_251(m, d) BOOST_PP_REPEAT_1_250(m, d) m(2, 250, d)
-# define BOOST_PP_REPEAT_1_252(m, d) BOOST_PP_REPEAT_1_251(m, d) m(2, 251, d)
-# define BOOST_PP_REPEAT_1_253(m, d) BOOST_PP_REPEAT_1_252(m, d) m(2, 252, d)
-# define BOOST_PP_REPEAT_1_254(m, d) BOOST_PP_REPEAT_1_253(m, d) m(2, 253, d)
-# define BOOST_PP_REPEAT_1_255(m, d) BOOST_PP_REPEAT_1_254(m, d) m(2, 254, d)
-# define BOOST_PP_REPEAT_1_256(m, d) BOOST_PP_REPEAT_1_255(m, d) m(2, 255, d)
-#
-# define BOOST_PP_REPEAT_2_0(m, d)
-# define BOOST_PP_REPEAT_2_1(m, d) m(3, 0, d)
-# define BOOST_PP_REPEAT_2_2(m, d) BOOST_PP_REPEAT_2_1(m, d) m(3, 1, d)
-# define BOOST_PP_REPEAT_2_3(m, d) BOOST_PP_REPEAT_2_2(m, d) m(3, 2, d)
-# define BOOST_PP_REPEAT_2_4(m, d) BOOST_PP_REPEAT_2_3(m, d) m(3, 3, d)
-# define BOOST_PP_REPEAT_2_5(m, d) BOOST_PP_REPEAT_2_4(m, d) m(3, 4, d)
-# define BOOST_PP_REPEAT_2_6(m, d) BOOST_PP_REPEAT_2_5(m, d) m(3, 5, d)
-# define BOOST_PP_REPEAT_2_7(m, d) BOOST_PP_REPEAT_2_6(m, d) m(3, 6, d)
-# define BOOST_PP_REPEAT_2_8(m, d) BOOST_PP_REPEAT_2_7(m, d) m(3, 7, d)
-# define BOOST_PP_REPEAT_2_9(m, d) BOOST_PP_REPEAT_2_8(m, d) m(3, 8, d)
-# define BOOST_PP_REPEAT_2_10(m, d) BOOST_PP_REPEAT_2_9(m, d) m(3, 9, d)
-# define BOOST_PP_REPEAT_2_11(m, d) BOOST_PP_REPEAT_2_10(m, d) m(3, 10, d)
-# define BOOST_PP_REPEAT_2_12(m, d) BOOST_PP_REPEAT_2_11(m, d) m(3, 11, d)
-# define BOOST_PP_REPEAT_2_13(m, d) BOOST_PP_REPEAT_2_12(m, d) m(3, 12, d)
-# define BOOST_PP_REPEAT_2_14(m, d) BOOST_PP_REPEAT_2_13(m, d) m(3, 13, d)
-# define BOOST_PP_REPEAT_2_15(m, d) BOOST_PP_REPEAT_2_14(m, d) m(3, 14, d)
-# define BOOST_PP_REPEAT_2_16(m, d) BOOST_PP_REPEAT_2_15(m, d) m(3, 15, d)
-# define BOOST_PP_REPEAT_2_17(m, d) BOOST_PP_REPEAT_2_16(m, d) m(3, 16, d)
-# define BOOST_PP_REPEAT_2_18(m, d) BOOST_PP_REPEAT_2_17(m, d) m(3, 17, d)
-# define BOOST_PP_REPEAT_2_19(m, d) BOOST_PP_REPEAT_2_18(m, d) m(3, 18, d)
-# define BOOST_PP_REPEAT_2_20(m, d) BOOST_PP_REPEAT_2_19(m, d) m(3, 19, d)
-# define BOOST_PP_REPEAT_2_21(m, d) BOOST_PP_REPEAT_2_20(m, d) m(3, 20, d)
-# define BOOST_PP_REPEAT_2_22(m, d) BOOST_PP_REPEAT_2_21(m, d) m(3, 21, d)
-# define BOOST_PP_REPEAT_2_23(m, d) BOOST_PP_REPEAT_2_22(m, d) m(3, 22, d)
-# define BOOST_PP_REPEAT_2_24(m, d) BOOST_PP_REPEAT_2_23(m, d) m(3, 23, d)
-# define BOOST_PP_REPEAT_2_25(m, d) BOOST_PP_REPEAT_2_24(m, d) m(3, 24, d)
-# define BOOST_PP_REPEAT_2_26(m, d) BOOST_PP_REPEAT_2_25(m, d) m(3, 25, d)
-# define BOOST_PP_REPEAT_2_27(m, d) BOOST_PP_REPEAT_2_26(m, d) m(3, 26, d)
-# define BOOST_PP_REPEAT_2_28(m, d) BOOST_PP_REPEAT_2_27(m, d) m(3, 27, d)
-# define BOOST_PP_REPEAT_2_29(m, d) BOOST_PP_REPEAT_2_28(m, d) m(3, 28, d)
-# define BOOST_PP_REPEAT_2_30(m, d) BOOST_PP_REPEAT_2_29(m, d) m(3, 29, d)
-# define BOOST_PP_REPEAT_2_31(m, d) BOOST_PP_REPEAT_2_30(m, d) m(3, 30, d)
-# define BOOST_PP_REPEAT_2_32(m, d) BOOST_PP_REPEAT_2_31(m, d) m(3, 31, d)
-# define BOOST_PP_REPEAT_2_33(m, d) BOOST_PP_REPEAT_2_32(m, d) m(3, 32, d)
-# define BOOST_PP_REPEAT_2_34(m, d) BOOST_PP_REPEAT_2_33(m, d) m(3, 33, d)
-# define BOOST_PP_REPEAT_2_35(m, d) BOOST_PP_REPEAT_2_34(m, d) m(3, 34, d)
-# define BOOST_PP_REPEAT_2_36(m, d) BOOST_PP_REPEAT_2_35(m, d) m(3, 35, d)
-# define BOOST_PP_REPEAT_2_37(m, d) BOOST_PP_REPEAT_2_36(m, d) m(3, 36, d)
-# define BOOST_PP_REPEAT_2_38(m, d) BOOST_PP_REPEAT_2_37(m, d) m(3, 37, d)
-# define BOOST_PP_REPEAT_2_39(m, d) BOOST_PP_REPEAT_2_38(m, d) m(3, 38, d)
-# define BOOST_PP_REPEAT_2_40(m, d) BOOST_PP_REPEAT_2_39(m, d) m(3, 39, d)
-# define BOOST_PP_REPEAT_2_41(m, d) BOOST_PP_REPEAT_2_40(m, d) m(3, 40, d)
-# define BOOST_PP_REPEAT_2_42(m, d) BOOST_PP_REPEAT_2_41(m, d) m(3, 41, d)
-# define BOOST_PP_REPEAT_2_43(m, d) BOOST_PP_REPEAT_2_42(m, d) m(3, 42, d)
-# define BOOST_PP_REPEAT_2_44(m, d) BOOST_PP_REPEAT_2_43(m, d) m(3, 43, d)
-# define BOOST_PP_REPEAT_2_45(m, d) BOOST_PP_REPEAT_2_44(m, d) m(3, 44, d)
-# define BOOST_PP_REPEAT_2_46(m, d) BOOST_PP_REPEAT_2_45(m, d) m(3, 45, d)
-# define BOOST_PP_REPEAT_2_47(m, d) BOOST_PP_REPEAT_2_46(m, d) m(3, 46, d)
-# define BOOST_PP_REPEAT_2_48(m, d) BOOST_PP_REPEAT_2_47(m, d) m(3, 47, d)
-# define BOOST_PP_REPEAT_2_49(m, d) BOOST_PP_REPEAT_2_48(m, d) m(3, 48, d)
-# define BOOST_PP_REPEAT_2_50(m, d) BOOST_PP_REPEAT_2_49(m, d) m(3, 49, d)
-# define BOOST_PP_REPEAT_2_51(m, d) BOOST_PP_REPEAT_2_50(m, d) m(3, 50, d)
-# define BOOST_PP_REPEAT_2_52(m, d) BOOST_PP_REPEAT_2_51(m, d) m(3, 51, d)
-# define BOOST_PP_REPEAT_2_53(m, d) BOOST_PP_REPEAT_2_52(m, d) m(3, 52, d)
-# define BOOST_PP_REPEAT_2_54(m, d) BOOST_PP_REPEAT_2_53(m, d) m(3, 53, d)
-# define BOOST_PP_REPEAT_2_55(m, d) BOOST_PP_REPEAT_2_54(m, d) m(3, 54, d)
-# define BOOST_PP_REPEAT_2_56(m, d) BOOST_PP_REPEAT_2_55(m, d) m(3, 55, d)
-# define BOOST_PP_REPEAT_2_57(m, d) BOOST_PP_REPEAT_2_56(m, d) m(3, 56, d)
-# define BOOST_PP_REPEAT_2_58(m, d) BOOST_PP_REPEAT_2_57(m, d) m(3, 57, d)
-# define BOOST_PP_REPEAT_2_59(m, d) BOOST_PP_REPEAT_2_58(m, d) m(3, 58, d)
-# define BOOST_PP_REPEAT_2_60(m, d) BOOST_PP_REPEAT_2_59(m, d) m(3, 59, d)
-# define BOOST_PP_REPEAT_2_61(m, d) BOOST_PP_REPEAT_2_60(m, d) m(3, 60, d)
-# define BOOST_PP_REPEAT_2_62(m, d) BOOST_PP_REPEAT_2_61(m, d) m(3, 61, d)
-# define BOOST_PP_REPEAT_2_63(m, d) BOOST_PP_REPEAT_2_62(m, d) m(3, 62, d)
-# define BOOST_PP_REPEAT_2_64(m, d) BOOST_PP_REPEAT_2_63(m, d) m(3, 63, d)
-# define BOOST_PP_REPEAT_2_65(m, d) BOOST_PP_REPEAT_2_64(m, d) m(3, 64, d)
-# define BOOST_PP_REPEAT_2_66(m, d) BOOST_PP_REPEAT_2_65(m, d) m(3, 65, d)
-# define BOOST_PP_REPEAT_2_67(m, d) BOOST_PP_REPEAT_2_66(m, d) m(3, 66, d)
-# define BOOST_PP_REPEAT_2_68(m, d) BOOST_PP_REPEAT_2_67(m, d) m(3, 67, d)
-# define BOOST_PP_REPEAT_2_69(m, d) BOOST_PP_REPEAT_2_68(m, d) m(3, 68, d)
-# define BOOST_PP_REPEAT_2_70(m, d) BOOST_PP_REPEAT_2_69(m, d) m(3, 69, d)
-# define BOOST_PP_REPEAT_2_71(m, d) BOOST_PP_REPEAT_2_70(m, d) m(3, 70, d)
-# define BOOST_PP_REPEAT_2_72(m, d) BOOST_PP_REPEAT_2_71(m, d) m(3, 71, d)
-# define BOOST_PP_REPEAT_2_73(m, d) BOOST_PP_REPEAT_2_72(m, d) m(3, 72, d)
-# define BOOST_PP_REPEAT_2_74(m, d) BOOST_PP_REPEAT_2_73(m, d) m(3, 73, d)
-# define BOOST_PP_REPEAT_2_75(m, d) BOOST_PP_REPEAT_2_74(m, d) m(3, 74, d)
-# define BOOST_PP_REPEAT_2_76(m, d) BOOST_PP_REPEAT_2_75(m, d) m(3, 75, d)
-# define BOOST_PP_REPEAT_2_77(m, d) BOOST_PP_REPEAT_2_76(m, d) m(3, 76, d)
-# define BOOST_PP_REPEAT_2_78(m, d) BOOST_PP_REPEAT_2_77(m, d) m(3, 77, d)
-# define BOOST_PP_REPEAT_2_79(m, d) BOOST_PP_REPEAT_2_78(m, d) m(3, 78, d)
-# define BOOST_PP_REPEAT_2_80(m, d) BOOST_PP_REPEAT_2_79(m, d) m(3, 79, d)
-# define BOOST_PP_REPEAT_2_81(m, d) BOOST_PP_REPEAT_2_80(m, d) m(3, 80, d)
-# define BOOST_PP_REPEAT_2_82(m, d) BOOST_PP_REPEAT_2_81(m, d) m(3, 81, d)
-# define BOOST_PP_REPEAT_2_83(m, d) BOOST_PP_REPEAT_2_82(m, d) m(3, 82, d)
-# define BOOST_PP_REPEAT_2_84(m, d) BOOST_PP_REPEAT_2_83(m, d) m(3, 83, d)
-# define BOOST_PP_REPEAT_2_85(m, d) BOOST_PP_REPEAT_2_84(m, d) m(3, 84, d)
-# define BOOST_PP_REPEAT_2_86(m, d) BOOST_PP_REPEAT_2_85(m, d) m(3, 85, d)
-# define BOOST_PP_REPEAT_2_87(m, d) BOOST_PP_REPEAT_2_86(m, d) m(3, 86, d)
-# define BOOST_PP_REPEAT_2_88(m, d) BOOST_PP_REPEAT_2_87(m, d) m(3, 87, d)
-# define BOOST_PP_REPEAT_2_89(m, d) BOOST_PP_REPEAT_2_88(m, d) m(3, 88, d)
-# define BOOST_PP_REPEAT_2_90(m, d) BOOST_PP_REPEAT_2_89(m, d) m(3, 89, d)
-# define BOOST_PP_REPEAT_2_91(m, d) BOOST_PP_REPEAT_2_90(m, d) m(3, 90, d)
-# define BOOST_PP_REPEAT_2_92(m, d) BOOST_PP_REPEAT_2_91(m, d) m(3, 91, d)
-# define BOOST_PP_REPEAT_2_93(m, d) BOOST_PP_REPEAT_2_92(m, d) m(3, 92, d)
-# define BOOST_PP_REPEAT_2_94(m, d) BOOST_PP_REPEAT_2_93(m, d) m(3, 93, d)
-# define BOOST_PP_REPEAT_2_95(m, d) BOOST_PP_REPEAT_2_94(m, d) m(3, 94, d)
-# define BOOST_PP_REPEAT_2_96(m, d) BOOST_PP_REPEAT_2_95(m, d) m(3, 95, d)
-# define BOOST_PP_REPEAT_2_97(m, d) BOOST_PP_REPEAT_2_96(m, d) m(3, 96, d)
-# define BOOST_PP_REPEAT_2_98(m, d) BOOST_PP_REPEAT_2_97(m, d) m(3, 97, d)
-# define BOOST_PP_REPEAT_2_99(m, d) BOOST_PP_REPEAT_2_98(m, d) m(3, 98, d)
-# define BOOST_PP_REPEAT_2_100(m, d) BOOST_PP_REPEAT_2_99(m, d) m(3, 99, d)
-# define BOOST_PP_REPEAT_2_101(m, d) BOOST_PP_REPEAT_2_100(m, d) m(3, 100, d)
-# define BOOST_PP_REPEAT_2_102(m, d) BOOST_PP_REPEAT_2_101(m, d) m(3, 101, d)
-# define BOOST_PP_REPEAT_2_103(m, d) BOOST_PP_REPEAT_2_102(m, d) m(3, 102, d)
-# define BOOST_PP_REPEAT_2_104(m, d) BOOST_PP_REPEAT_2_103(m, d) m(3, 103, d)
-# define BOOST_PP_REPEAT_2_105(m, d) BOOST_PP_REPEAT_2_104(m, d) m(3, 104, d)
-# define BOOST_PP_REPEAT_2_106(m, d) BOOST_PP_REPEAT_2_105(m, d) m(3, 105, d)
-# define BOOST_PP_REPEAT_2_107(m, d) BOOST_PP_REPEAT_2_106(m, d) m(3, 106, d)
-# define BOOST_PP_REPEAT_2_108(m, d) BOOST_PP_REPEAT_2_107(m, d) m(3, 107, d)
-# define BOOST_PP_REPEAT_2_109(m, d) BOOST_PP_REPEAT_2_108(m, d) m(3, 108, d)
-# define BOOST_PP_REPEAT_2_110(m, d) BOOST_PP_REPEAT_2_109(m, d) m(3, 109, d)
-# define BOOST_PP_REPEAT_2_111(m, d) BOOST_PP_REPEAT_2_110(m, d) m(3, 110, d)
-# define BOOST_PP_REPEAT_2_112(m, d) BOOST_PP_REPEAT_2_111(m, d) m(3, 111, d)
-# define BOOST_PP_REPEAT_2_113(m, d) BOOST_PP_REPEAT_2_112(m, d) m(3, 112, d)
-# define BOOST_PP_REPEAT_2_114(m, d) BOOST_PP_REPEAT_2_113(m, d) m(3, 113, d)
-# define BOOST_PP_REPEAT_2_115(m, d) BOOST_PP_REPEAT_2_114(m, d) m(3, 114, d)
-# define BOOST_PP_REPEAT_2_116(m, d) BOOST_PP_REPEAT_2_115(m, d) m(3, 115, d)
-# define BOOST_PP_REPEAT_2_117(m, d) BOOST_PP_REPEAT_2_116(m, d) m(3, 116, d)
-# define BOOST_PP_REPEAT_2_118(m, d) BOOST_PP_REPEAT_2_117(m, d) m(3, 117, d)
-# define BOOST_PP_REPEAT_2_119(m, d) BOOST_PP_REPEAT_2_118(m, d) m(3, 118, d)
-# define BOOST_PP_REPEAT_2_120(m, d) BOOST_PP_REPEAT_2_119(m, d) m(3, 119, d)
-# define BOOST_PP_REPEAT_2_121(m, d) BOOST_PP_REPEAT_2_120(m, d) m(3, 120, d)
-# define BOOST_PP_REPEAT_2_122(m, d) BOOST_PP_REPEAT_2_121(m, d) m(3, 121, d)
-# define BOOST_PP_REPEAT_2_123(m, d) BOOST_PP_REPEAT_2_122(m, d) m(3, 122, d)
-# define BOOST_PP_REPEAT_2_124(m, d) BOOST_PP_REPEAT_2_123(m, d) m(3, 123, d)
-# define BOOST_PP_REPEAT_2_125(m, d) BOOST_PP_REPEAT_2_124(m, d) m(3, 124, d)
-# define BOOST_PP_REPEAT_2_126(m, d) BOOST_PP_REPEAT_2_125(m, d) m(3, 125, d)
-# define BOOST_PP_REPEAT_2_127(m, d) BOOST_PP_REPEAT_2_126(m, d) m(3, 126, d)
-# define BOOST_PP_REPEAT_2_128(m, d) BOOST_PP_REPEAT_2_127(m, d) m(3, 127, d)
-# define BOOST_PP_REPEAT_2_129(m, d) BOOST_PP_REPEAT_2_128(m, d) m(3, 128, d)
-# define BOOST_PP_REPEAT_2_130(m, d) BOOST_PP_REPEAT_2_129(m, d) m(3, 129, d)
-# define BOOST_PP_REPEAT_2_131(m, d) BOOST_PP_REPEAT_2_130(m, d) m(3, 130, d)
-# define BOOST_PP_REPEAT_2_132(m, d) BOOST_PP_REPEAT_2_131(m, d) m(3, 131, d)
-# define BOOST_PP_REPEAT_2_133(m, d) BOOST_PP_REPEAT_2_132(m, d) m(3, 132, d)
-# define BOOST_PP_REPEAT_2_134(m, d) BOOST_PP_REPEAT_2_133(m, d) m(3, 133, d)
-# define BOOST_PP_REPEAT_2_135(m, d) BOOST_PP_REPEAT_2_134(m, d) m(3, 134, d)
-# define BOOST_PP_REPEAT_2_136(m, d) BOOST_PP_REPEAT_2_135(m, d) m(3, 135, d)
-# define BOOST_PP_REPEAT_2_137(m, d) BOOST_PP_REPEAT_2_136(m, d) m(3, 136, d)
-# define BOOST_PP_REPEAT_2_138(m, d) BOOST_PP_REPEAT_2_137(m, d) m(3, 137, d)
-# define BOOST_PP_REPEAT_2_139(m, d) BOOST_PP_REPEAT_2_138(m, d) m(3, 138, d)
-# define BOOST_PP_REPEAT_2_140(m, d) BOOST_PP_REPEAT_2_139(m, d) m(3, 139, d)
-# define BOOST_PP_REPEAT_2_141(m, d) BOOST_PP_REPEAT_2_140(m, d) m(3, 140, d)
-# define BOOST_PP_REPEAT_2_142(m, d) BOOST_PP_REPEAT_2_141(m, d) m(3, 141, d)
-# define BOOST_PP_REPEAT_2_143(m, d) BOOST_PP_REPEAT_2_142(m, d) m(3, 142, d)
-# define BOOST_PP_REPEAT_2_144(m, d) BOOST_PP_REPEAT_2_143(m, d) m(3, 143, d)
-# define BOOST_PP_REPEAT_2_145(m, d) BOOST_PP_REPEAT_2_144(m, d) m(3, 144, d)
-# define BOOST_PP_REPEAT_2_146(m, d) BOOST_PP_REPEAT_2_145(m, d) m(3, 145, d)
-# define BOOST_PP_REPEAT_2_147(m, d) BOOST_PP_REPEAT_2_146(m, d) m(3, 146, d)
-# define BOOST_PP_REPEAT_2_148(m, d) BOOST_PP_REPEAT_2_147(m, d) m(3, 147, d)
-# define BOOST_PP_REPEAT_2_149(m, d) BOOST_PP_REPEAT_2_148(m, d) m(3, 148, d)
-# define BOOST_PP_REPEAT_2_150(m, d) BOOST_PP_REPEAT_2_149(m, d) m(3, 149, d)
-# define BOOST_PP_REPEAT_2_151(m, d) BOOST_PP_REPEAT_2_150(m, d) m(3, 150, d)
-# define BOOST_PP_REPEAT_2_152(m, d) BOOST_PP_REPEAT_2_151(m, d) m(3, 151, d)
-# define BOOST_PP_REPEAT_2_153(m, d) BOOST_PP_REPEAT_2_152(m, d) m(3, 152, d)
-# define BOOST_PP_REPEAT_2_154(m, d) BOOST_PP_REPEAT_2_153(m, d) m(3, 153, d)
-# define BOOST_PP_REPEAT_2_155(m, d) BOOST_PP_REPEAT_2_154(m, d) m(3, 154, d)
-# define BOOST_PP_REPEAT_2_156(m, d) BOOST_PP_REPEAT_2_155(m, d) m(3, 155, d)
-# define BOOST_PP_REPEAT_2_157(m, d) BOOST_PP_REPEAT_2_156(m, d) m(3, 156, d)
-# define BOOST_PP_REPEAT_2_158(m, d) BOOST_PP_REPEAT_2_157(m, d) m(3, 157, d)
-# define BOOST_PP_REPEAT_2_159(m, d) BOOST_PP_REPEAT_2_158(m, d) m(3, 158, d)
-# define BOOST_PP_REPEAT_2_160(m, d) BOOST_PP_REPEAT_2_159(m, d) m(3, 159, d)
-# define BOOST_PP_REPEAT_2_161(m, d) BOOST_PP_REPEAT_2_160(m, d) m(3, 160, d)
-# define BOOST_PP_REPEAT_2_162(m, d) BOOST_PP_REPEAT_2_161(m, d) m(3, 161, d)
-# define BOOST_PP_REPEAT_2_163(m, d) BOOST_PP_REPEAT_2_162(m, d) m(3, 162, d)
-# define BOOST_PP_REPEAT_2_164(m, d) BOOST_PP_REPEAT_2_163(m, d) m(3, 163, d)
-# define BOOST_PP_REPEAT_2_165(m, d) BOOST_PP_REPEAT_2_164(m, d) m(3, 164, d)
-# define BOOST_PP_REPEAT_2_166(m, d) BOOST_PP_REPEAT_2_165(m, d) m(3, 165, d)
-# define BOOST_PP_REPEAT_2_167(m, d) BOOST_PP_REPEAT_2_166(m, d) m(3, 166, d)
-# define BOOST_PP_REPEAT_2_168(m, d) BOOST_PP_REPEAT_2_167(m, d) m(3, 167, d)
-# define BOOST_PP_REPEAT_2_169(m, d) BOOST_PP_REPEAT_2_168(m, d) m(3, 168, d)
-# define BOOST_PP_REPEAT_2_170(m, d) BOOST_PP_REPEAT_2_169(m, d) m(3, 169, d)
-# define BOOST_PP_REPEAT_2_171(m, d) BOOST_PP_REPEAT_2_170(m, d) m(3, 170, d)
-# define BOOST_PP_REPEAT_2_172(m, d) BOOST_PP_REPEAT_2_171(m, d) m(3, 171, d)
-# define BOOST_PP_REPEAT_2_173(m, d) BOOST_PP_REPEAT_2_172(m, d) m(3, 172, d)
-# define BOOST_PP_REPEAT_2_174(m, d) BOOST_PP_REPEAT_2_173(m, d) m(3, 173, d)
-# define BOOST_PP_REPEAT_2_175(m, d) BOOST_PP_REPEAT_2_174(m, d) m(3, 174, d)
-# define BOOST_PP_REPEAT_2_176(m, d) BOOST_PP_REPEAT_2_175(m, d) m(3, 175, d)
-# define BOOST_PP_REPEAT_2_177(m, d) BOOST_PP_REPEAT_2_176(m, d) m(3, 176, d)
-# define BOOST_PP_REPEAT_2_178(m, d) BOOST_PP_REPEAT_2_177(m, d) m(3, 177, d)
-# define BOOST_PP_REPEAT_2_179(m, d) BOOST_PP_REPEAT_2_178(m, d) m(3, 178, d)
-# define BOOST_PP_REPEAT_2_180(m, d) BOOST_PP_REPEAT_2_179(m, d) m(3, 179, d)
-# define BOOST_PP_REPEAT_2_181(m, d) BOOST_PP_REPEAT_2_180(m, d) m(3, 180, d)
-# define BOOST_PP_REPEAT_2_182(m, d) BOOST_PP_REPEAT_2_181(m, d) m(3, 181, d)
-# define BOOST_PP_REPEAT_2_183(m, d) BOOST_PP_REPEAT_2_182(m, d) m(3, 182, d)
-# define BOOST_PP_REPEAT_2_184(m, d) BOOST_PP_REPEAT_2_183(m, d) m(3, 183, d)
-# define BOOST_PP_REPEAT_2_185(m, d) BOOST_PP_REPEAT_2_184(m, d) m(3, 184, d)
-# define BOOST_PP_REPEAT_2_186(m, d) BOOST_PP_REPEAT_2_185(m, d) m(3, 185, d)
-# define BOOST_PP_REPEAT_2_187(m, d) BOOST_PP_REPEAT_2_186(m, d) m(3, 186, d)
-# define BOOST_PP_REPEAT_2_188(m, d) BOOST_PP_REPEAT_2_187(m, d) m(3, 187, d)
-# define BOOST_PP_REPEAT_2_189(m, d) BOOST_PP_REPEAT_2_188(m, d) m(3, 188, d)
-# define BOOST_PP_REPEAT_2_190(m, d) BOOST_PP_REPEAT_2_189(m, d) m(3, 189, d)
-# define BOOST_PP_REPEAT_2_191(m, d) BOOST_PP_REPEAT_2_190(m, d) m(3, 190, d)
-# define BOOST_PP_REPEAT_2_192(m, d) BOOST_PP_REPEAT_2_191(m, d) m(3, 191, d)
-# define BOOST_PP_REPEAT_2_193(m, d) BOOST_PP_REPEAT_2_192(m, d) m(3, 192, d)
-# define BOOST_PP_REPEAT_2_194(m, d) BOOST_PP_REPEAT_2_193(m, d) m(3, 193, d)
-# define BOOST_PP_REPEAT_2_195(m, d) BOOST_PP_REPEAT_2_194(m, d) m(3, 194, d)
-# define BOOST_PP_REPEAT_2_196(m, d) BOOST_PP_REPEAT_2_195(m, d) m(3, 195, d)
-# define BOOST_PP_REPEAT_2_197(m, d) BOOST_PP_REPEAT_2_196(m, d) m(3, 196, d)
-# define BOOST_PP_REPEAT_2_198(m, d) BOOST_PP_REPEAT_2_197(m, d) m(3, 197, d)
-# define BOOST_PP_REPEAT_2_199(m, d) BOOST_PP_REPEAT_2_198(m, d) m(3, 198, d)
-# define BOOST_PP_REPEAT_2_200(m, d) BOOST_PP_REPEAT_2_199(m, d) m(3, 199, d)
-# define BOOST_PP_REPEAT_2_201(m, d) BOOST_PP_REPEAT_2_200(m, d) m(3, 200, d)
-# define BOOST_PP_REPEAT_2_202(m, d) BOOST_PP_REPEAT_2_201(m, d) m(3, 201, d)
-# define BOOST_PP_REPEAT_2_203(m, d) BOOST_PP_REPEAT_2_202(m, d) m(3, 202, d)
-# define BOOST_PP_REPEAT_2_204(m, d) BOOST_PP_REPEAT_2_203(m, d) m(3, 203, d)
-# define BOOST_PP_REPEAT_2_205(m, d) BOOST_PP_REPEAT_2_204(m, d) m(3, 204, d)
-# define BOOST_PP_REPEAT_2_206(m, d) BOOST_PP_REPEAT_2_205(m, d) m(3, 205, d)
-# define BOOST_PP_REPEAT_2_207(m, d) BOOST_PP_REPEAT_2_206(m, d) m(3, 206, d)
-# define BOOST_PP_REPEAT_2_208(m, d) BOOST_PP_REPEAT_2_207(m, d) m(3, 207, d)
-# define BOOST_PP_REPEAT_2_209(m, d) BOOST_PP_REPEAT_2_208(m, d) m(3, 208, d)
-# define BOOST_PP_REPEAT_2_210(m, d) BOOST_PP_REPEAT_2_209(m, d) m(3, 209, d)
-# define BOOST_PP_REPEAT_2_211(m, d) BOOST_PP_REPEAT_2_210(m, d) m(3, 210, d)
-# define BOOST_PP_REPEAT_2_212(m, d) BOOST_PP_REPEAT_2_211(m, d) m(3, 211, d)
-# define BOOST_PP_REPEAT_2_213(m, d) BOOST_PP_REPEAT_2_212(m, d) m(3, 212, d)
-# define BOOST_PP_REPEAT_2_214(m, d) BOOST_PP_REPEAT_2_213(m, d) m(3, 213, d)
-# define BOOST_PP_REPEAT_2_215(m, d) BOOST_PP_REPEAT_2_214(m, d) m(3, 214, d)
-# define BOOST_PP_REPEAT_2_216(m, d) BOOST_PP_REPEAT_2_215(m, d) m(3, 215, d)
-# define BOOST_PP_REPEAT_2_217(m, d) BOOST_PP_REPEAT_2_216(m, d) m(3, 216, d)
-# define BOOST_PP_REPEAT_2_218(m, d) BOOST_PP_REPEAT_2_217(m, d) m(3, 217, d)
-# define BOOST_PP_REPEAT_2_219(m, d) BOOST_PP_REPEAT_2_218(m, d) m(3, 218, d)
-# define BOOST_PP_REPEAT_2_220(m, d) BOOST_PP_REPEAT_2_219(m, d) m(3, 219, d)
-# define BOOST_PP_REPEAT_2_221(m, d) BOOST_PP_REPEAT_2_220(m, d) m(3, 220, d)
-# define BOOST_PP_REPEAT_2_222(m, d) BOOST_PP_REPEAT_2_221(m, d) m(3, 221, d)
-# define BOOST_PP_REPEAT_2_223(m, d) BOOST_PP_REPEAT_2_222(m, d) m(3, 222, d)
-# define BOOST_PP_REPEAT_2_224(m, d) BOOST_PP_REPEAT_2_223(m, d) m(3, 223, d)
-# define BOOST_PP_REPEAT_2_225(m, d) BOOST_PP_REPEAT_2_224(m, d) m(3, 224, d)
-# define BOOST_PP_REPEAT_2_226(m, d) BOOST_PP_REPEAT_2_225(m, d) m(3, 225, d)
-# define BOOST_PP_REPEAT_2_227(m, d) BOOST_PP_REPEAT_2_226(m, d) m(3, 226, d)
-# define BOOST_PP_REPEAT_2_228(m, d) BOOST_PP_REPEAT_2_227(m, d) m(3, 227, d)
-# define BOOST_PP_REPEAT_2_229(m, d) BOOST_PP_REPEAT_2_228(m, d) m(3, 228, d)
-# define BOOST_PP_REPEAT_2_230(m, d) BOOST_PP_REPEAT_2_229(m, d) m(3, 229, d)
-# define BOOST_PP_REPEAT_2_231(m, d) BOOST_PP_REPEAT_2_230(m, d) m(3, 230, d)
-# define BOOST_PP_REPEAT_2_232(m, d) BOOST_PP_REPEAT_2_231(m, d) m(3, 231, d)
-# define BOOST_PP_REPEAT_2_233(m, d) BOOST_PP_REPEAT_2_232(m, d) m(3, 232, d)
-# define BOOST_PP_REPEAT_2_234(m, d) BOOST_PP_REPEAT_2_233(m, d) m(3, 233, d)
-# define BOOST_PP_REPEAT_2_235(m, d) BOOST_PP_REPEAT_2_234(m, d) m(3, 234, d)
-# define BOOST_PP_REPEAT_2_236(m, d) BOOST_PP_REPEAT_2_235(m, d) m(3, 235, d)
-# define BOOST_PP_REPEAT_2_237(m, d) BOOST_PP_REPEAT_2_236(m, d) m(3, 236, d)
-# define BOOST_PP_REPEAT_2_238(m, d) BOOST_PP_REPEAT_2_237(m, d) m(3, 237, d)
-# define BOOST_PP_REPEAT_2_239(m, d) BOOST_PP_REPEAT_2_238(m, d) m(3, 238, d)
-# define BOOST_PP_REPEAT_2_240(m, d) BOOST_PP_REPEAT_2_239(m, d) m(3, 239, d)
-# define BOOST_PP_REPEAT_2_241(m, d) BOOST_PP_REPEAT_2_240(m, d) m(3, 240, d)
-# define BOOST_PP_REPEAT_2_242(m, d) BOOST_PP_REPEAT_2_241(m, d) m(3, 241, d)
-# define BOOST_PP_REPEAT_2_243(m, d) BOOST_PP_REPEAT_2_242(m, d) m(3, 242, d)
-# define BOOST_PP_REPEAT_2_244(m, d) BOOST_PP_REPEAT_2_243(m, d) m(3, 243, d)
-# define BOOST_PP_REPEAT_2_245(m, d) BOOST_PP_REPEAT_2_244(m, d) m(3, 244, d)
-# define BOOST_PP_REPEAT_2_246(m, d) BOOST_PP_REPEAT_2_245(m, d) m(3, 245, d)
-# define BOOST_PP_REPEAT_2_247(m, d) BOOST_PP_REPEAT_2_246(m, d) m(3, 246, d)
-# define BOOST_PP_REPEAT_2_248(m, d) BOOST_PP_REPEAT_2_247(m, d) m(3, 247, d)
-# define BOOST_PP_REPEAT_2_249(m, d) BOOST_PP_REPEAT_2_248(m, d) m(3, 248, d)
-# define BOOST_PP_REPEAT_2_250(m, d) BOOST_PP_REPEAT_2_249(m, d) m(3, 249, d)
-# define BOOST_PP_REPEAT_2_251(m, d) BOOST_PP_REPEAT_2_250(m, d) m(3, 250, d)
-# define BOOST_PP_REPEAT_2_252(m, d) BOOST_PP_REPEAT_2_251(m, d) m(3, 251, d)
-# define BOOST_PP_REPEAT_2_253(m, d) BOOST_PP_REPEAT_2_252(m, d) m(3, 252, d)
-# define BOOST_PP_REPEAT_2_254(m, d) BOOST_PP_REPEAT_2_253(m, d) m(3, 253, d)
-# define BOOST_PP_REPEAT_2_255(m, d) BOOST_PP_REPEAT_2_254(m, d) m(3, 254, d)
-# define BOOST_PP_REPEAT_2_256(m, d) BOOST_PP_REPEAT_2_255(m, d) m(3, 255, d)
-#
-# define BOOST_PP_REPEAT_3_0(m, d)
-# define BOOST_PP_REPEAT_3_1(m, d) m(4, 0, d)
-# define BOOST_PP_REPEAT_3_2(m, d) BOOST_PP_REPEAT_3_1(m, d) m(4, 1, d)
-# define BOOST_PP_REPEAT_3_3(m, d) BOOST_PP_REPEAT_3_2(m, d) m(4, 2, d)
-# define BOOST_PP_REPEAT_3_4(m, d) BOOST_PP_REPEAT_3_3(m, d) m(4, 3, d)
-# define BOOST_PP_REPEAT_3_5(m, d) BOOST_PP_REPEAT_3_4(m, d) m(4, 4, d)
-# define BOOST_PP_REPEAT_3_6(m, d) BOOST_PP_REPEAT_3_5(m, d) m(4, 5, d)
-# define BOOST_PP_REPEAT_3_7(m, d) BOOST_PP_REPEAT_3_6(m, d) m(4, 6, d)
-# define BOOST_PP_REPEAT_3_8(m, d) BOOST_PP_REPEAT_3_7(m, d) m(4, 7, d)
-# define BOOST_PP_REPEAT_3_9(m, d) BOOST_PP_REPEAT_3_8(m, d) m(4, 8, d)
-# define BOOST_PP_REPEAT_3_10(m, d) BOOST_PP_REPEAT_3_9(m, d) m(4, 9, d)
-# define BOOST_PP_REPEAT_3_11(m, d) BOOST_PP_REPEAT_3_10(m, d) m(4, 10, d)
-# define BOOST_PP_REPEAT_3_12(m, d) BOOST_PP_REPEAT_3_11(m, d) m(4, 11, d)
-# define BOOST_PP_REPEAT_3_13(m, d) BOOST_PP_REPEAT_3_12(m, d) m(4, 12, d)
-# define BOOST_PP_REPEAT_3_14(m, d) BOOST_PP_REPEAT_3_13(m, d) m(4, 13, d)
-# define BOOST_PP_REPEAT_3_15(m, d) BOOST_PP_REPEAT_3_14(m, d) m(4, 14, d)
-# define BOOST_PP_REPEAT_3_16(m, d) BOOST_PP_REPEAT_3_15(m, d) m(4, 15, d)
-# define BOOST_PP_REPEAT_3_17(m, d) BOOST_PP_REPEAT_3_16(m, d) m(4, 16, d)
-# define BOOST_PP_REPEAT_3_18(m, d) BOOST_PP_REPEAT_3_17(m, d) m(4, 17, d)
-# define BOOST_PP_REPEAT_3_19(m, d) BOOST_PP_REPEAT_3_18(m, d) m(4, 18, d)
-# define BOOST_PP_REPEAT_3_20(m, d) BOOST_PP_REPEAT_3_19(m, d) m(4, 19, d)
-# define BOOST_PP_REPEAT_3_21(m, d) BOOST_PP_REPEAT_3_20(m, d) m(4, 20, d)
-# define BOOST_PP_REPEAT_3_22(m, d) BOOST_PP_REPEAT_3_21(m, d) m(4, 21, d)
-# define BOOST_PP_REPEAT_3_23(m, d) BOOST_PP_REPEAT_3_22(m, d) m(4, 22, d)
-# define BOOST_PP_REPEAT_3_24(m, d) BOOST_PP_REPEAT_3_23(m, d) m(4, 23, d)
-# define BOOST_PP_REPEAT_3_25(m, d) BOOST_PP_REPEAT_3_24(m, d) m(4, 24, d)
-# define BOOST_PP_REPEAT_3_26(m, d) BOOST_PP_REPEAT_3_25(m, d) m(4, 25, d)
-# define BOOST_PP_REPEAT_3_27(m, d) BOOST_PP_REPEAT_3_26(m, d) m(4, 26, d)
-# define BOOST_PP_REPEAT_3_28(m, d) BOOST_PP_REPEAT_3_27(m, d) m(4, 27, d)
-# define BOOST_PP_REPEAT_3_29(m, d) BOOST_PP_REPEAT_3_28(m, d) m(4, 28, d)
-# define BOOST_PP_REPEAT_3_30(m, d) BOOST_PP_REPEAT_3_29(m, d) m(4, 29, d)
-# define BOOST_PP_REPEAT_3_31(m, d) BOOST_PP_REPEAT_3_30(m, d) m(4, 30, d)
-# define BOOST_PP_REPEAT_3_32(m, d) BOOST_PP_REPEAT_3_31(m, d) m(4, 31, d)
-# define BOOST_PP_REPEAT_3_33(m, d) BOOST_PP_REPEAT_3_32(m, d) m(4, 32, d)
-# define BOOST_PP_REPEAT_3_34(m, d) BOOST_PP_REPEAT_3_33(m, d) m(4, 33, d)
-# define BOOST_PP_REPEAT_3_35(m, d) BOOST_PP_REPEAT_3_34(m, d) m(4, 34, d)
-# define BOOST_PP_REPEAT_3_36(m, d) BOOST_PP_REPEAT_3_35(m, d) m(4, 35, d)
-# define BOOST_PP_REPEAT_3_37(m, d) BOOST_PP_REPEAT_3_36(m, d) m(4, 36, d)
-# define BOOST_PP_REPEAT_3_38(m, d) BOOST_PP_REPEAT_3_37(m, d) m(4, 37, d)
-# define BOOST_PP_REPEAT_3_39(m, d) BOOST_PP_REPEAT_3_38(m, d) m(4, 38, d)
-# define BOOST_PP_REPEAT_3_40(m, d) BOOST_PP_REPEAT_3_39(m, d) m(4, 39, d)
-# define BOOST_PP_REPEAT_3_41(m, d) BOOST_PP_REPEAT_3_40(m, d) m(4, 40, d)
-# define BOOST_PP_REPEAT_3_42(m, d) BOOST_PP_REPEAT_3_41(m, d) m(4, 41, d)
-# define BOOST_PP_REPEAT_3_43(m, d) BOOST_PP_REPEAT_3_42(m, d) m(4, 42, d)
-# define BOOST_PP_REPEAT_3_44(m, d) BOOST_PP_REPEAT_3_43(m, d) m(4, 43, d)
-# define BOOST_PP_REPEAT_3_45(m, d) BOOST_PP_REPEAT_3_44(m, d) m(4, 44, d)
-# define BOOST_PP_REPEAT_3_46(m, d) BOOST_PP_REPEAT_3_45(m, d) m(4, 45, d)
-# define BOOST_PP_REPEAT_3_47(m, d) BOOST_PP_REPEAT_3_46(m, d) m(4, 46, d)
-# define BOOST_PP_REPEAT_3_48(m, d) BOOST_PP_REPEAT_3_47(m, d) m(4, 47, d)
-# define BOOST_PP_REPEAT_3_49(m, d) BOOST_PP_REPEAT_3_48(m, d) m(4, 48, d)
-# define BOOST_PP_REPEAT_3_50(m, d) BOOST_PP_REPEAT_3_49(m, d) m(4, 49, d)
-# define BOOST_PP_REPEAT_3_51(m, d) BOOST_PP_REPEAT_3_50(m, d) m(4, 50, d)
-# define BOOST_PP_REPEAT_3_52(m, d) BOOST_PP_REPEAT_3_51(m, d) m(4, 51, d)
-# define BOOST_PP_REPEAT_3_53(m, d) BOOST_PP_REPEAT_3_52(m, d) m(4, 52, d)
-# define BOOST_PP_REPEAT_3_54(m, d) BOOST_PP_REPEAT_3_53(m, d) m(4, 53, d)
-# define BOOST_PP_REPEAT_3_55(m, d) BOOST_PP_REPEAT_3_54(m, d) m(4, 54, d)
-# define BOOST_PP_REPEAT_3_56(m, d) BOOST_PP_REPEAT_3_55(m, d) m(4, 55, d)
-# define BOOST_PP_REPEAT_3_57(m, d) BOOST_PP_REPEAT_3_56(m, d) m(4, 56, d)
-# define BOOST_PP_REPEAT_3_58(m, d) BOOST_PP_REPEAT_3_57(m, d) m(4, 57, d)
-# define BOOST_PP_REPEAT_3_59(m, d) BOOST_PP_REPEAT_3_58(m, d) m(4, 58, d)
-# define BOOST_PP_REPEAT_3_60(m, d) BOOST_PP_REPEAT_3_59(m, d) m(4, 59, d)
-# define BOOST_PP_REPEAT_3_61(m, d) BOOST_PP_REPEAT_3_60(m, d) m(4, 60, d)
-# define BOOST_PP_REPEAT_3_62(m, d) BOOST_PP_REPEAT_3_61(m, d) m(4, 61, d)
-# define BOOST_PP_REPEAT_3_63(m, d) BOOST_PP_REPEAT_3_62(m, d) m(4, 62, d)
-# define BOOST_PP_REPEAT_3_64(m, d) BOOST_PP_REPEAT_3_63(m, d) m(4, 63, d)
-# define BOOST_PP_REPEAT_3_65(m, d) BOOST_PP_REPEAT_3_64(m, d) m(4, 64, d)
-# define BOOST_PP_REPEAT_3_66(m, d) BOOST_PP_REPEAT_3_65(m, d) m(4, 65, d)
-# define BOOST_PP_REPEAT_3_67(m, d) BOOST_PP_REPEAT_3_66(m, d) m(4, 66, d)
-# define BOOST_PP_REPEAT_3_68(m, d) BOOST_PP_REPEAT_3_67(m, d) m(4, 67, d)
-# define BOOST_PP_REPEAT_3_69(m, d) BOOST_PP_REPEAT_3_68(m, d) m(4, 68, d)
-# define BOOST_PP_REPEAT_3_70(m, d) BOOST_PP_REPEAT_3_69(m, d) m(4, 69, d)
-# define BOOST_PP_REPEAT_3_71(m, d) BOOST_PP_REPEAT_3_70(m, d) m(4, 70, d)
-# define BOOST_PP_REPEAT_3_72(m, d) BOOST_PP_REPEAT_3_71(m, d) m(4, 71, d)
-# define BOOST_PP_REPEAT_3_73(m, d) BOOST_PP_REPEAT_3_72(m, d) m(4, 72, d)
-# define BOOST_PP_REPEAT_3_74(m, d) BOOST_PP_REPEAT_3_73(m, d) m(4, 73, d)
-# define BOOST_PP_REPEAT_3_75(m, d) BOOST_PP_REPEAT_3_74(m, d) m(4, 74, d)
-# define BOOST_PP_REPEAT_3_76(m, d) BOOST_PP_REPEAT_3_75(m, d) m(4, 75, d)
-# define BOOST_PP_REPEAT_3_77(m, d) BOOST_PP_REPEAT_3_76(m, d) m(4, 76, d)
-# define BOOST_PP_REPEAT_3_78(m, d) BOOST_PP_REPEAT_3_77(m, d) m(4, 77, d)
-# define BOOST_PP_REPEAT_3_79(m, d) BOOST_PP_REPEAT_3_78(m, d) m(4, 78, d)
-# define BOOST_PP_REPEAT_3_80(m, d) BOOST_PP_REPEAT_3_79(m, d) m(4, 79, d)
-# define BOOST_PP_REPEAT_3_81(m, d) BOOST_PP_REPEAT_3_80(m, d) m(4, 80, d)
-# define BOOST_PP_REPEAT_3_82(m, d) BOOST_PP_REPEAT_3_81(m, d) m(4, 81, d)
-# define BOOST_PP_REPEAT_3_83(m, d) BOOST_PP_REPEAT_3_82(m, d) m(4, 82, d)
-# define BOOST_PP_REPEAT_3_84(m, d) BOOST_PP_REPEAT_3_83(m, d) m(4, 83, d)
-# define BOOST_PP_REPEAT_3_85(m, d) BOOST_PP_REPEAT_3_84(m, d) m(4, 84, d)
-# define BOOST_PP_REPEAT_3_86(m, d) BOOST_PP_REPEAT_3_85(m, d) m(4, 85, d)
-# define BOOST_PP_REPEAT_3_87(m, d) BOOST_PP_REPEAT_3_86(m, d) m(4, 86, d)
-# define BOOST_PP_REPEAT_3_88(m, d) BOOST_PP_REPEAT_3_87(m, d) m(4, 87, d)
-# define BOOST_PP_REPEAT_3_89(m, d) BOOST_PP_REPEAT_3_88(m, d) m(4, 88, d)
-# define BOOST_PP_REPEAT_3_90(m, d) BOOST_PP_REPEAT_3_89(m, d) m(4, 89, d)
-# define BOOST_PP_REPEAT_3_91(m, d) BOOST_PP_REPEAT_3_90(m, d) m(4, 90, d)
-# define BOOST_PP_REPEAT_3_92(m, d) BOOST_PP_REPEAT_3_91(m, d) m(4, 91, d)
-# define BOOST_PP_REPEAT_3_93(m, d) BOOST_PP_REPEAT_3_92(m, d) m(4, 92, d)
-# define BOOST_PP_REPEAT_3_94(m, d) BOOST_PP_REPEAT_3_93(m, d) m(4, 93, d)
-# define BOOST_PP_REPEAT_3_95(m, d) BOOST_PP_REPEAT_3_94(m, d) m(4, 94, d)
-# define BOOST_PP_REPEAT_3_96(m, d) BOOST_PP_REPEAT_3_95(m, d) m(4, 95, d)
-# define BOOST_PP_REPEAT_3_97(m, d) BOOST_PP_REPEAT_3_96(m, d) m(4, 96, d)
-# define BOOST_PP_REPEAT_3_98(m, d) BOOST_PP_REPEAT_3_97(m, d) m(4, 97, d)
-# define BOOST_PP_REPEAT_3_99(m, d) BOOST_PP_REPEAT_3_98(m, d) m(4, 98, d)
-# define BOOST_PP_REPEAT_3_100(m, d) BOOST_PP_REPEAT_3_99(m, d) m(4, 99, d)
-# define BOOST_PP_REPEAT_3_101(m, d) BOOST_PP_REPEAT_3_100(m, d) m(4, 100, d)
-# define BOOST_PP_REPEAT_3_102(m, d) BOOST_PP_REPEAT_3_101(m, d) m(4, 101, d)
-# define BOOST_PP_REPEAT_3_103(m, d) BOOST_PP_REPEAT_3_102(m, d) m(4, 102, d)
-# define BOOST_PP_REPEAT_3_104(m, d) BOOST_PP_REPEAT_3_103(m, d) m(4, 103, d)
-# define BOOST_PP_REPEAT_3_105(m, d) BOOST_PP_REPEAT_3_104(m, d) m(4, 104, d)
-# define BOOST_PP_REPEAT_3_106(m, d) BOOST_PP_REPEAT_3_105(m, d) m(4, 105, d)
-# define BOOST_PP_REPEAT_3_107(m, d) BOOST_PP_REPEAT_3_106(m, d) m(4, 106, d)
-# define BOOST_PP_REPEAT_3_108(m, d) BOOST_PP_REPEAT_3_107(m, d) m(4, 107, d)
-# define BOOST_PP_REPEAT_3_109(m, d) BOOST_PP_REPEAT_3_108(m, d) m(4, 108, d)
-# define BOOST_PP_REPEAT_3_110(m, d) BOOST_PP_REPEAT_3_109(m, d) m(4, 109, d)
-# define BOOST_PP_REPEAT_3_111(m, d) BOOST_PP_REPEAT_3_110(m, d) m(4, 110, d)
-# define BOOST_PP_REPEAT_3_112(m, d) BOOST_PP_REPEAT_3_111(m, d) m(4, 111, d)
-# define BOOST_PP_REPEAT_3_113(m, d) BOOST_PP_REPEAT_3_112(m, d) m(4, 112, d)
-# define BOOST_PP_REPEAT_3_114(m, d) BOOST_PP_REPEAT_3_113(m, d) m(4, 113, d)
-# define BOOST_PP_REPEAT_3_115(m, d) BOOST_PP_REPEAT_3_114(m, d) m(4, 114, d)
-# define BOOST_PP_REPEAT_3_116(m, d) BOOST_PP_REPEAT_3_115(m, d) m(4, 115, d)
-# define BOOST_PP_REPEAT_3_117(m, d) BOOST_PP_REPEAT_3_116(m, d) m(4, 116, d)
-# define BOOST_PP_REPEAT_3_118(m, d) BOOST_PP_REPEAT_3_117(m, d) m(4, 117, d)
-# define BOOST_PP_REPEAT_3_119(m, d) BOOST_PP_REPEAT_3_118(m, d) m(4, 118, d)
-# define BOOST_PP_REPEAT_3_120(m, d) BOOST_PP_REPEAT_3_119(m, d) m(4, 119, d)
-# define BOOST_PP_REPEAT_3_121(m, d) BOOST_PP_REPEAT_3_120(m, d) m(4, 120, d)
-# define BOOST_PP_REPEAT_3_122(m, d) BOOST_PP_REPEAT_3_121(m, d) m(4, 121, d)
-# define BOOST_PP_REPEAT_3_123(m, d) BOOST_PP_REPEAT_3_122(m, d) m(4, 122, d)
-# define BOOST_PP_REPEAT_3_124(m, d) BOOST_PP_REPEAT_3_123(m, d) m(4, 123, d)
-# define BOOST_PP_REPEAT_3_125(m, d) BOOST_PP_REPEAT_3_124(m, d) m(4, 124, d)
-# define BOOST_PP_REPEAT_3_126(m, d) BOOST_PP_REPEAT_3_125(m, d) m(4, 125, d)
-# define BOOST_PP_REPEAT_3_127(m, d) BOOST_PP_REPEAT_3_126(m, d) m(4, 126, d)
-# define BOOST_PP_REPEAT_3_128(m, d) BOOST_PP_REPEAT_3_127(m, d) m(4, 127, d)
-# define BOOST_PP_REPEAT_3_129(m, d) BOOST_PP_REPEAT_3_128(m, d) m(4, 128, d)
-# define BOOST_PP_REPEAT_3_130(m, d) BOOST_PP_REPEAT_3_129(m, d) m(4, 129, d)
-# define BOOST_PP_REPEAT_3_131(m, d) BOOST_PP_REPEAT_3_130(m, d) m(4, 130, d)
-# define BOOST_PP_REPEAT_3_132(m, d) BOOST_PP_REPEAT_3_131(m, d) m(4, 131, d)
-# define BOOST_PP_REPEAT_3_133(m, d) BOOST_PP_REPEAT_3_132(m, d) m(4, 132, d)
-# define BOOST_PP_REPEAT_3_134(m, d) BOOST_PP_REPEAT_3_133(m, d) m(4, 133, d)
-# define BOOST_PP_REPEAT_3_135(m, d) BOOST_PP_REPEAT_3_134(m, d) m(4, 134, d)
-# define BOOST_PP_REPEAT_3_136(m, d) BOOST_PP_REPEAT_3_135(m, d) m(4, 135, d)
-# define BOOST_PP_REPEAT_3_137(m, d) BOOST_PP_REPEAT_3_136(m, d) m(4, 136, d)
-# define BOOST_PP_REPEAT_3_138(m, d) BOOST_PP_REPEAT_3_137(m, d) m(4, 137, d)
-# define BOOST_PP_REPEAT_3_139(m, d) BOOST_PP_REPEAT_3_138(m, d) m(4, 138, d)
-# define BOOST_PP_REPEAT_3_140(m, d) BOOST_PP_REPEAT_3_139(m, d) m(4, 139, d)
-# define BOOST_PP_REPEAT_3_141(m, d) BOOST_PP_REPEAT_3_140(m, d) m(4, 140, d)
-# define BOOST_PP_REPEAT_3_142(m, d) BOOST_PP_REPEAT_3_141(m, d) m(4, 141, d)
-# define BOOST_PP_REPEAT_3_143(m, d) BOOST_PP_REPEAT_3_142(m, d) m(4, 142, d)
-# define BOOST_PP_REPEAT_3_144(m, d) BOOST_PP_REPEAT_3_143(m, d) m(4, 143, d)
-# define BOOST_PP_REPEAT_3_145(m, d) BOOST_PP_REPEAT_3_144(m, d) m(4, 144, d)
-# define BOOST_PP_REPEAT_3_146(m, d) BOOST_PP_REPEAT_3_145(m, d) m(4, 145, d)
-# define BOOST_PP_REPEAT_3_147(m, d) BOOST_PP_REPEAT_3_146(m, d) m(4, 146, d)
-# define BOOST_PP_REPEAT_3_148(m, d) BOOST_PP_REPEAT_3_147(m, d) m(4, 147, d)
-# define BOOST_PP_REPEAT_3_149(m, d) BOOST_PP_REPEAT_3_148(m, d) m(4, 148, d)
-# define BOOST_PP_REPEAT_3_150(m, d) BOOST_PP_REPEAT_3_149(m, d) m(4, 149, d)
-# define BOOST_PP_REPEAT_3_151(m, d) BOOST_PP_REPEAT_3_150(m, d) m(4, 150, d)
-# define BOOST_PP_REPEAT_3_152(m, d) BOOST_PP_REPEAT_3_151(m, d) m(4, 151, d)
-# define BOOST_PP_REPEAT_3_153(m, d) BOOST_PP_REPEAT_3_152(m, d) m(4, 152, d)
-# define BOOST_PP_REPEAT_3_154(m, d) BOOST_PP_REPEAT_3_153(m, d) m(4, 153, d)
-# define BOOST_PP_REPEAT_3_155(m, d) BOOST_PP_REPEAT_3_154(m, d) m(4, 154, d)
-# define BOOST_PP_REPEAT_3_156(m, d) BOOST_PP_REPEAT_3_155(m, d) m(4, 155, d)
-# define BOOST_PP_REPEAT_3_157(m, d) BOOST_PP_REPEAT_3_156(m, d) m(4, 156, d)
-# define BOOST_PP_REPEAT_3_158(m, d) BOOST_PP_REPEAT_3_157(m, d) m(4, 157, d)
-# define BOOST_PP_REPEAT_3_159(m, d) BOOST_PP_REPEAT_3_158(m, d) m(4, 158, d)
-# define BOOST_PP_REPEAT_3_160(m, d) BOOST_PP_REPEAT_3_159(m, d) m(4, 159, d)
-# define BOOST_PP_REPEAT_3_161(m, d) BOOST_PP_REPEAT_3_160(m, d) m(4, 160, d)
-# define BOOST_PP_REPEAT_3_162(m, d) BOOST_PP_REPEAT_3_161(m, d) m(4, 161, d)
-# define BOOST_PP_REPEAT_3_163(m, d) BOOST_PP_REPEAT_3_162(m, d) m(4, 162, d)
-# define BOOST_PP_REPEAT_3_164(m, d) BOOST_PP_REPEAT_3_163(m, d) m(4, 163, d)
-# define BOOST_PP_REPEAT_3_165(m, d) BOOST_PP_REPEAT_3_164(m, d) m(4, 164, d)
-# define BOOST_PP_REPEAT_3_166(m, d) BOOST_PP_REPEAT_3_165(m, d) m(4, 165, d)
-# define BOOST_PP_REPEAT_3_167(m, d) BOOST_PP_REPEAT_3_166(m, d) m(4, 166, d)
-# define BOOST_PP_REPEAT_3_168(m, d) BOOST_PP_REPEAT_3_167(m, d) m(4, 167, d)
-# define BOOST_PP_REPEAT_3_169(m, d) BOOST_PP_REPEAT_3_168(m, d) m(4, 168, d)
-# define BOOST_PP_REPEAT_3_170(m, d) BOOST_PP_REPEAT_3_169(m, d) m(4, 169, d)
-# define BOOST_PP_REPEAT_3_171(m, d) BOOST_PP_REPEAT_3_170(m, d) m(4, 170, d)
-# define BOOST_PP_REPEAT_3_172(m, d) BOOST_PP_REPEAT_3_171(m, d) m(4, 171, d)
-# define BOOST_PP_REPEAT_3_173(m, d) BOOST_PP_REPEAT_3_172(m, d) m(4, 172, d)
-# define BOOST_PP_REPEAT_3_174(m, d) BOOST_PP_REPEAT_3_173(m, d) m(4, 173, d)
-# define BOOST_PP_REPEAT_3_175(m, d) BOOST_PP_REPEAT_3_174(m, d) m(4, 174, d)
-# define BOOST_PP_REPEAT_3_176(m, d) BOOST_PP_REPEAT_3_175(m, d) m(4, 175, d)
-# define BOOST_PP_REPEAT_3_177(m, d) BOOST_PP_REPEAT_3_176(m, d) m(4, 176, d)
-# define BOOST_PP_REPEAT_3_178(m, d) BOOST_PP_REPEAT_3_177(m, d) m(4, 177, d)
-# define BOOST_PP_REPEAT_3_179(m, d) BOOST_PP_REPEAT_3_178(m, d) m(4, 178, d)
-# define BOOST_PP_REPEAT_3_180(m, d) BOOST_PP_REPEAT_3_179(m, d) m(4, 179, d)
-# define BOOST_PP_REPEAT_3_181(m, d) BOOST_PP_REPEAT_3_180(m, d) m(4, 180, d)
-# define BOOST_PP_REPEAT_3_182(m, d) BOOST_PP_REPEAT_3_181(m, d) m(4, 181, d)
-# define BOOST_PP_REPEAT_3_183(m, d) BOOST_PP_REPEAT_3_182(m, d) m(4, 182, d)
-# define BOOST_PP_REPEAT_3_184(m, d) BOOST_PP_REPEAT_3_183(m, d) m(4, 183, d)
-# define BOOST_PP_REPEAT_3_185(m, d) BOOST_PP_REPEAT_3_184(m, d) m(4, 184, d)
-# define BOOST_PP_REPEAT_3_186(m, d) BOOST_PP_REPEAT_3_185(m, d) m(4, 185, d)
-# define BOOST_PP_REPEAT_3_187(m, d) BOOST_PP_REPEAT_3_186(m, d) m(4, 186, d)
-# define BOOST_PP_REPEAT_3_188(m, d) BOOST_PP_REPEAT_3_187(m, d) m(4, 187, d)
-# define BOOST_PP_REPEAT_3_189(m, d) BOOST_PP_REPEAT_3_188(m, d) m(4, 188, d)
-# define BOOST_PP_REPEAT_3_190(m, d) BOOST_PP_REPEAT_3_189(m, d) m(4, 189, d)
-# define BOOST_PP_REPEAT_3_191(m, d) BOOST_PP_REPEAT_3_190(m, d) m(4, 190, d)
-# define BOOST_PP_REPEAT_3_192(m, d) BOOST_PP_REPEAT_3_191(m, d) m(4, 191, d)
-# define BOOST_PP_REPEAT_3_193(m, d) BOOST_PP_REPEAT_3_192(m, d) m(4, 192, d)
-# define BOOST_PP_REPEAT_3_194(m, d) BOOST_PP_REPEAT_3_193(m, d) m(4, 193, d)
-# define BOOST_PP_REPEAT_3_195(m, d) BOOST_PP_REPEAT_3_194(m, d) m(4, 194, d)
-# define BOOST_PP_REPEAT_3_196(m, d) BOOST_PP_REPEAT_3_195(m, d) m(4, 195, d)
-# define BOOST_PP_REPEAT_3_197(m, d) BOOST_PP_REPEAT_3_196(m, d) m(4, 196, d)
-# define BOOST_PP_REPEAT_3_198(m, d) BOOST_PP_REPEAT_3_197(m, d) m(4, 197, d)
-# define BOOST_PP_REPEAT_3_199(m, d) BOOST_PP_REPEAT_3_198(m, d) m(4, 198, d)
-# define BOOST_PP_REPEAT_3_200(m, d) BOOST_PP_REPEAT_3_199(m, d) m(4, 199, d)
-# define BOOST_PP_REPEAT_3_201(m, d) BOOST_PP_REPEAT_3_200(m, d) m(4, 200, d)
-# define BOOST_PP_REPEAT_3_202(m, d) BOOST_PP_REPEAT_3_201(m, d) m(4, 201, d)
-# define BOOST_PP_REPEAT_3_203(m, d) BOOST_PP_REPEAT_3_202(m, d) m(4, 202, d)
-# define BOOST_PP_REPEAT_3_204(m, d) BOOST_PP_REPEAT_3_203(m, d) m(4, 203, d)
-# define BOOST_PP_REPEAT_3_205(m, d) BOOST_PP_REPEAT_3_204(m, d) m(4, 204, d)
-# define BOOST_PP_REPEAT_3_206(m, d) BOOST_PP_REPEAT_3_205(m, d) m(4, 205, d)
-# define BOOST_PP_REPEAT_3_207(m, d) BOOST_PP_REPEAT_3_206(m, d) m(4, 206, d)
-# define BOOST_PP_REPEAT_3_208(m, d) BOOST_PP_REPEAT_3_207(m, d) m(4, 207, d)
-# define BOOST_PP_REPEAT_3_209(m, d) BOOST_PP_REPEAT_3_208(m, d) m(4, 208, d)
-# define BOOST_PP_REPEAT_3_210(m, d) BOOST_PP_REPEAT_3_209(m, d) m(4, 209, d)
-# define BOOST_PP_REPEAT_3_211(m, d) BOOST_PP_REPEAT_3_210(m, d) m(4, 210, d)
-# define BOOST_PP_REPEAT_3_212(m, d) BOOST_PP_REPEAT_3_211(m, d) m(4, 211, d)
-# define BOOST_PP_REPEAT_3_213(m, d) BOOST_PP_REPEAT_3_212(m, d) m(4, 212, d)
-# define BOOST_PP_REPEAT_3_214(m, d) BOOST_PP_REPEAT_3_213(m, d) m(4, 213, d)
-# define BOOST_PP_REPEAT_3_215(m, d) BOOST_PP_REPEAT_3_214(m, d) m(4, 214, d)
-# define BOOST_PP_REPEAT_3_216(m, d) BOOST_PP_REPEAT_3_215(m, d) m(4, 215, d)
-# define BOOST_PP_REPEAT_3_217(m, d) BOOST_PP_REPEAT_3_216(m, d) m(4, 216, d)
-# define BOOST_PP_REPEAT_3_218(m, d) BOOST_PP_REPEAT_3_217(m, d) m(4, 217, d)
-# define BOOST_PP_REPEAT_3_219(m, d) BOOST_PP_REPEAT_3_218(m, d) m(4, 218, d)
-# define BOOST_PP_REPEAT_3_220(m, d) BOOST_PP_REPEAT_3_219(m, d) m(4, 219, d)
-# define BOOST_PP_REPEAT_3_221(m, d) BOOST_PP_REPEAT_3_220(m, d) m(4, 220, d)
-# define BOOST_PP_REPEAT_3_222(m, d) BOOST_PP_REPEAT_3_221(m, d) m(4, 221, d)
-# define BOOST_PP_REPEAT_3_223(m, d) BOOST_PP_REPEAT_3_222(m, d) m(4, 222, d)
-# define BOOST_PP_REPEAT_3_224(m, d) BOOST_PP_REPEAT_3_223(m, d) m(4, 223, d)
-# define BOOST_PP_REPEAT_3_225(m, d) BOOST_PP_REPEAT_3_224(m, d) m(4, 224, d)
-# define BOOST_PP_REPEAT_3_226(m, d) BOOST_PP_REPEAT_3_225(m, d) m(4, 225, d)
-# define BOOST_PP_REPEAT_3_227(m, d) BOOST_PP_REPEAT_3_226(m, d) m(4, 226, d)
-# define BOOST_PP_REPEAT_3_228(m, d) BOOST_PP_REPEAT_3_227(m, d) m(4, 227, d)
-# define BOOST_PP_REPEAT_3_229(m, d) BOOST_PP_REPEAT_3_228(m, d) m(4, 228, d)
-# define BOOST_PP_REPEAT_3_230(m, d) BOOST_PP_REPEAT_3_229(m, d) m(4, 229, d)
-# define BOOST_PP_REPEAT_3_231(m, d) BOOST_PP_REPEAT_3_230(m, d) m(4, 230, d)
-# define BOOST_PP_REPEAT_3_232(m, d) BOOST_PP_REPEAT_3_231(m, d) m(4, 231, d)
-# define BOOST_PP_REPEAT_3_233(m, d) BOOST_PP_REPEAT_3_232(m, d) m(4, 232, d)
-# define BOOST_PP_REPEAT_3_234(m, d) BOOST_PP_REPEAT_3_233(m, d) m(4, 233, d)
-# define BOOST_PP_REPEAT_3_235(m, d) BOOST_PP_REPEAT_3_234(m, d) m(4, 234, d)
-# define BOOST_PP_REPEAT_3_236(m, d) BOOST_PP_REPEAT_3_235(m, d) m(4, 235, d)
-# define BOOST_PP_REPEAT_3_237(m, d) BOOST_PP_REPEAT_3_236(m, d) m(4, 236, d)
-# define BOOST_PP_REPEAT_3_238(m, d) BOOST_PP_REPEAT_3_237(m, d) m(4, 237, d)
-# define BOOST_PP_REPEAT_3_239(m, d) BOOST_PP_REPEAT_3_238(m, d) m(4, 238, d)
-# define BOOST_PP_REPEAT_3_240(m, d) BOOST_PP_REPEAT_3_239(m, d) m(4, 239, d)
-# define BOOST_PP_REPEAT_3_241(m, d) BOOST_PP_REPEAT_3_240(m, d) m(4, 240, d)
-# define BOOST_PP_REPEAT_3_242(m, d) BOOST_PP_REPEAT_3_241(m, d) m(4, 241, d)
-# define BOOST_PP_REPEAT_3_243(m, d) BOOST_PP_REPEAT_3_242(m, d) m(4, 242, d)
-# define BOOST_PP_REPEAT_3_244(m, d) BOOST_PP_REPEAT_3_243(m, d) m(4, 243, d)
-# define BOOST_PP_REPEAT_3_245(m, d) BOOST_PP_REPEAT_3_244(m, d) m(4, 244, d)
-# define BOOST_PP_REPEAT_3_246(m, d) BOOST_PP_REPEAT_3_245(m, d) m(4, 245, d)
-# define BOOST_PP_REPEAT_3_247(m, d) BOOST_PP_REPEAT_3_246(m, d) m(4, 246, d)
-# define BOOST_PP_REPEAT_3_248(m, d) BOOST_PP_REPEAT_3_247(m, d) m(4, 247, d)
-# define BOOST_PP_REPEAT_3_249(m, d) BOOST_PP_REPEAT_3_248(m, d) m(4, 248, d)
-# define BOOST_PP_REPEAT_3_250(m, d) BOOST_PP_REPEAT_3_249(m, d) m(4, 249, d)
-# define BOOST_PP_REPEAT_3_251(m, d) BOOST_PP_REPEAT_3_250(m, d) m(4, 250, d)
-# define BOOST_PP_REPEAT_3_252(m, d) BOOST_PP_REPEAT_3_251(m, d) m(4, 251, d)
-# define BOOST_PP_REPEAT_3_253(m, d) BOOST_PP_REPEAT_3_252(m, d) m(4, 252, d)
-# define BOOST_PP_REPEAT_3_254(m, d) BOOST_PP_REPEAT_3_253(m, d) m(4, 253, d)
-# define BOOST_PP_REPEAT_3_255(m, d) BOOST_PP_REPEAT_3_254(m, d) m(4, 254, d)
-# define BOOST_PP_REPEAT_3_256(m, d) BOOST_PP_REPEAT_3_255(m, d) m(4, 255, d)
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/repetition/repeat_from_to.hpp b/libcutl/cutl/details/boost/preprocessor/repetition/repeat_from_to.hpp
deleted file mode 100644
index 1525a09..0000000
--- a/libcutl/cutl/details/boost/preprocessor/repetition/repeat_from_to.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_REPETITION_REPEAT_FROM_TO_HPP
-# define BOOST_PREPROCESSOR_REPETITION_REPEAT_FROM_TO_HPP
-#
-# include <cutl/details/boost/preprocessor/arithmetic/add.hpp>
-# include <cutl/details/boost/preprocessor/arithmetic/sub.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/control/while.hpp>
-# include <cutl/details/boost/preprocessor/debug/error.hpp>
-# include <cutl/details/boost/preprocessor/detail/auto_rec.hpp>
-# include <cutl/details/boost/preprocessor/repetition/repeat.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-# include <cutl/details/boost/preprocessor/tuple/rem.hpp>
-#
-# /* BOOST_PP_REPEAT_FROM_TO */
-#
-# if 0
-# define BOOST_PP_REPEAT_FROM_TO(first, last, macro, data)
-# endif
-#
-# define BOOST_PP_REPEAT_FROM_TO BOOST_PP_CAT(BOOST_PP_REPEAT_FROM_TO_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
-#
-# define BOOST_PP_REPEAT_FROM_TO_1(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_1(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt)
-# define BOOST_PP_REPEAT_FROM_TO_2(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_2(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt)
-# define BOOST_PP_REPEAT_FROM_TO_3(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_3(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt)
-# define BOOST_PP_REPEAT_FROM_TO_4(f, l, m, dt) BOOST_PP_ERROR(0x0003)
-#
-# define BOOST_PP_REPEAT_FROM_TO_1ST BOOST_PP_REPEAT_FROM_TO_1
-# define BOOST_PP_REPEAT_FROM_TO_2ND BOOST_PP_REPEAT_FROM_TO_2
-# define BOOST_PP_REPEAT_FROM_TO_3RD BOOST_PP_REPEAT_FROM_TO_3
-#
-# /* BOOST_PP_REPEAT_FROM_TO_D */
-#
-# if 0
-# define BOOST_PP_REPEAT_FROM_TO_D(d, first, last, macro, data)
-# endif
-#
-# define BOOST_PP_REPEAT_FROM_TO_D BOOST_PP_CAT(BOOST_PP_REPEAT_FROM_TO_D_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_REPEAT_FROM_TO_D_1(d, f, l, m, dt) BOOST_PP_REPEAT_1(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_1, (d, f, m, dt))
-# define BOOST_PP_REPEAT_FROM_TO_D_2(d, f, l, m, dt) BOOST_PP_REPEAT_2(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_2, (d, f, m, dt))
-# define BOOST_PP_REPEAT_FROM_TO_D_3(d, f, l, m, dt) BOOST_PP_REPEAT_3(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_3, (d, f, m, dt))
-# else
-# define BOOST_PP_REPEAT_FROM_TO_D_1(d, f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_1_I(d, f, l, m, dt)
-# define BOOST_PP_REPEAT_FROM_TO_D_2(d, f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_2_I(d, f, l, m, dt)
-# define BOOST_PP_REPEAT_FROM_TO_D_3(d, f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_3_I(d, f, l, m, dt)
-# define BOOST_PP_REPEAT_FROM_TO_D_1_I(d, f, l, m, dt) BOOST_PP_REPEAT_1(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_1, (d, f, m, dt))
-# define BOOST_PP_REPEAT_FROM_TO_D_2_I(d, f, l, m, dt) BOOST_PP_REPEAT_2(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_2, (d, f, m, dt))
-# define BOOST_PP_REPEAT_FROM_TO_D_3_I(d, f, l, m, dt) BOOST_PP_REPEAT_3(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_3, (d, f, m, dt))
-# endif
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
-# define BOOST_PP_REPEAT_FROM_TO_M_1(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_1_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
-# define BOOST_PP_REPEAT_FROM_TO_M_2(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_2_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
-# define BOOST_PP_REPEAT_FROM_TO_M_3(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_3_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
-# define BOOST_PP_REPEAT_FROM_TO_M_1_IM(z, n, im) BOOST_PP_REPEAT_FROM_TO_M_1_I(z, n, im)
-# define BOOST_PP_REPEAT_FROM_TO_M_2_IM(z, n, im) BOOST_PP_REPEAT_FROM_TO_M_2_I(z, n, im)
-# define BOOST_PP_REPEAT_FROM_TO_M_3_IM(z, n, im) BOOST_PP_REPEAT_FROM_TO_M_3_I(z, n, im)
-# else
-# define BOOST_PP_REPEAT_FROM_TO_M_1(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(4, 0, dfmd), BOOST_PP_TUPLE_ELEM(4, 1, dfmd), BOOST_PP_TUPLE_ELEM(4, 2, dfmd), BOOST_PP_TUPLE_ELEM(4, 3, dfmd))
-# define BOOST_PP_REPEAT_FROM_TO_M_2(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(4, 0, dfmd), BOOST_PP_TUPLE_ELEM(4, 1, dfmd), BOOST_PP_TUPLE_ELEM(4, 2, dfmd), BOOST_PP_TUPLE_ELEM(4, 3, dfmd))
-# define BOOST_PP_REPEAT_FROM_TO_M_3(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(4, 0, dfmd), BOOST_PP_TUPLE_ELEM(4, 1, dfmd), BOOST_PP_TUPLE_ELEM(4, 2, dfmd), BOOST_PP_TUPLE_ELEM(4, 3, dfmd))
-# endif
-#
-# define BOOST_PP_REPEAT_FROM_TO_M_1_I(z, n, d, f, m, dt) BOOST_PP_REPEAT_FROM_TO_M_1_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
-# define BOOST_PP_REPEAT_FROM_TO_M_2_I(z, n, d, f, m, dt) BOOST_PP_REPEAT_FROM_TO_M_2_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
-# define BOOST_PP_REPEAT_FROM_TO_M_3_I(z, n, d, f, m, dt) BOOST_PP_REPEAT_FROM_TO_M_3_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
-#
-# define BOOST_PP_REPEAT_FROM_TO_M_1_II(z, n, m, dt) m(z, n, dt)
-# define BOOST_PP_REPEAT_FROM_TO_M_2_II(z, n, m, dt) m(z, n, dt)
-# define BOOST_PP_REPEAT_FROM_TO_M_3_II(z, n, m, dt) m(z, n, dt)
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/seq/detail/split.hpp b/libcutl/cutl/details/boost/preprocessor/seq/detail/split.hpp
deleted file mode 100644
index 0b867a1..0000000
--- a/libcutl/cutl/details/boost/preprocessor/seq/detail/split.hpp
+++ /dev/null
@@ -1,284 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_HPP
-# define BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_SEQ_SPLIT */
-#
-# define BOOST_PP_SEQ_SPLIT(n, seq) BOOST_PP_SEQ_SPLIT_D(n, seq)
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_SEQ_SPLIT_D(n, seq) (BOOST_PP_SEQ_SPLIT_ ## n seq)
-# else
-# define BOOST_PP_SEQ_SPLIT_D(n, seq) (BOOST_PP_SEQ_SPLIT_ ## n ## seq)
-# endif
-#
-# define BOOST_PP_SEQ_SPLIT_1(x) (x),
-# define BOOST_PP_SEQ_SPLIT_2(x) (x) BOOST_PP_SEQ_SPLIT_1
-# define BOOST_PP_SEQ_SPLIT_3(x) (x) BOOST_PP_SEQ_SPLIT_2
-# define BOOST_PP_SEQ_SPLIT_4(x) (x) BOOST_PP_SEQ_SPLIT_3
-# define BOOST_PP_SEQ_SPLIT_5(x) (x) BOOST_PP_SEQ_SPLIT_4
-# define BOOST_PP_SEQ_SPLIT_6(x) (x) BOOST_PP_SEQ_SPLIT_5
-# define BOOST_PP_SEQ_SPLIT_7(x) (x) BOOST_PP_SEQ_SPLIT_6
-# define BOOST_PP_SEQ_SPLIT_8(x) (x) BOOST_PP_SEQ_SPLIT_7
-# define BOOST_PP_SEQ_SPLIT_9(x) (x) BOOST_PP_SEQ_SPLIT_8
-# define BOOST_PP_SEQ_SPLIT_10(x) (x) BOOST_PP_SEQ_SPLIT_9
-# define BOOST_PP_SEQ_SPLIT_11(x) (x) BOOST_PP_SEQ_SPLIT_10
-# define BOOST_PP_SEQ_SPLIT_12(x) (x) BOOST_PP_SEQ_SPLIT_11
-# define BOOST_PP_SEQ_SPLIT_13(x) (x) BOOST_PP_SEQ_SPLIT_12
-# define BOOST_PP_SEQ_SPLIT_14(x) (x) BOOST_PP_SEQ_SPLIT_13
-# define BOOST_PP_SEQ_SPLIT_15(x) (x) BOOST_PP_SEQ_SPLIT_14
-# define BOOST_PP_SEQ_SPLIT_16(x) (x) BOOST_PP_SEQ_SPLIT_15
-# define BOOST_PP_SEQ_SPLIT_17(x) (x) BOOST_PP_SEQ_SPLIT_16
-# define BOOST_PP_SEQ_SPLIT_18(x) (x) BOOST_PP_SEQ_SPLIT_17
-# define BOOST_PP_SEQ_SPLIT_19(x) (x) BOOST_PP_SEQ_SPLIT_18
-# define BOOST_PP_SEQ_SPLIT_20(x) (x) BOOST_PP_SEQ_SPLIT_19
-# define BOOST_PP_SEQ_SPLIT_21(x) (x) BOOST_PP_SEQ_SPLIT_20
-# define BOOST_PP_SEQ_SPLIT_22(x) (x) BOOST_PP_SEQ_SPLIT_21
-# define BOOST_PP_SEQ_SPLIT_23(x) (x) BOOST_PP_SEQ_SPLIT_22
-# define BOOST_PP_SEQ_SPLIT_24(x) (x) BOOST_PP_SEQ_SPLIT_23
-# define BOOST_PP_SEQ_SPLIT_25(x) (x) BOOST_PP_SEQ_SPLIT_24
-# define BOOST_PP_SEQ_SPLIT_26(x) (x) BOOST_PP_SEQ_SPLIT_25
-# define BOOST_PP_SEQ_SPLIT_27(x) (x) BOOST_PP_SEQ_SPLIT_26
-# define BOOST_PP_SEQ_SPLIT_28(x) (x) BOOST_PP_SEQ_SPLIT_27
-# define BOOST_PP_SEQ_SPLIT_29(x) (x) BOOST_PP_SEQ_SPLIT_28
-# define BOOST_PP_SEQ_SPLIT_30(x) (x) BOOST_PP_SEQ_SPLIT_29
-# define BOOST_PP_SEQ_SPLIT_31(x) (x) BOOST_PP_SEQ_SPLIT_30
-# define BOOST_PP_SEQ_SPLIT_32(x) (x) BOOST_PP_SEQ_SPLIT_31
-# define BOOST_PP_SEQ_SPLIT_33(x) (x) BOOST_PP_SEQ_SPLIT_32
-# define BOOST_PP_SEQ_SPLIT_34(x) (x) BOOST_PP_SEQ_SPLIT_33
-# define BOOST_PP_SEQ_SPLIT_35(x) (x) BOOST_PP_SEQ_SPLIT_34
-# define BOOST_PP_SEQ_SPLIT_36(x) (x) BOOST_PP_SEQ_SPLIT_35
-# define BOOST_PP_SEQ_SPLIT_37(x) (x) BOOST_PP_SEQ_SPLIT_36
-# define BOOST_PP_SEQ_SPLIT_38(x) (x) BOOST_PP_SEQ_SPLIT_37
-# define BOOST_PP_SEQ_SPLIT_39(x) (x) BOOST_PP_SEQ_SPLIT_38
-# define BOOST_PP_SEQ_SPLIT_40(x) (x) BOOST_PP_SEQ_SPLIT_39
-# define BOOST_PP_SEQ_SPLIT_41(x) (x) BOOST_PP_SEQ_SPLIT_40
-# define BOOST_PP_SEQ_SPLIT_42(x) (x) BOOST_PP_SEQ_SPLIT_41
-# define BOOST_PP_SEQ_SPLIT_43(x) (x) BOOST_PP_SEQ_SPLIT_42
-# define BOOST_PP_SEQ_SPLIT_44(x) (x) BOOST_PP_SEQ_SPLIT_43
-# define BOOST_PP_SEQ_SPLIT_45(x) (x) BOOST_PP_SEQ_SPLIT_44
-# define BOOST_PP_SEQ_SPLIT_46(x) (x) BOOST_PP_SEQ_SPLIT_45
-# define BOOST_PP_SEQ_SPLIT_47(x) (x) BOOST_PP_SEQ_SPLIT_46
-# define BOOST_PP_SEQ_SPLIT_48(x) (x) BOOST_PP_SEQ_SPLIT_47
-# define BOOST_PP_SEQ_SPLIT_49(x) (x) BOOST_PP_SEQ_SPLIT_48
-# define BOOST_PP_SEQ_SPLIT_50(x) (x) BOOST_PP_SEQ_SPLIT_49
-# define BOOST_PP_SEQ_SPLIT_51(x) (x) BOOST_PP_SEQ_SPLIT_50
-# define BOOST_PP_SEQ_SPLIT_52(x) (x) BOOST_PP_SEQ_SPLIT_51
-# define BOOST_PP_SEQ_SPLIT_53(x) (x) BOOST_PP_SEQ_SPLIT_52
-# define BOOST_PP_SEQ_SPLIT_54(x) (x) BOOST_PP_SEQ_SPLIT_53
-# define BOOST_PP_SEQ_SPLIT_55(x) (x) BOOST_PP_SEQ_SPLIT_54
-# define BOOST_PP_SEQ_SPLIT_56(x) (x) BOOST_PP_SEQ_SPLIT_55
-# define BOOST_PP_SEQ_SPLIT_57(x) (x) BOOST_PP_SEQ_SPLIT_56
-# define BOOST_PP_SEQ_SPLIT_58(x) (x) BOOST_PP_SEQ_SPLIT_57
-# define BOOST_PP_SEQ_SPLIT_59(x) (x) BOOST_PP_SEQ_SPLIT_58
-# define BOOST_PP_SEQ_SPLIT_60(x) (x) BOOST_PP_SEQ_SPLIT_59
-# define BOOST_PP_SEQ_SPLIT_61(x) (x) BOOST_PP_SEQ_SPLIT_60
-# define BOOST_PP_SEQ_SPLIT_62(x) (x) BOOST_PP_SEQ_SPLIT_61
-# define BOOST_PP_SEQ_SPLIT_63(x) (x) BOOST_PP_SEQ_SPLIT_62
-# define BOOST_PP_SEQ_SPLIT_64(x) (x) BOOST_PP_SEQ_SPLIT_63
-# define BOOST_PP_SEQ_SPLIT_65(x) (x) BOOST_PP_SEQ_SPLIT_64
-# define BOOST_PP_SEQ_SPLIT_66(x) (x) BOOST_PP_SEQ_SPLIT_65
-# define BOOST_PP_SEQ_SPLIT_67(x) (x) BOOST_PP_SEQ_SPLIT_66
-# define BOOST_PP_SEQ_SPLIT_68(x) (x) BOOST_PP_SEQ_SPLIT_67
-# define BOOST_PP_SEQ_SPLIT_69(x) (x) BOOST_PP_SEQ_SPLIT_68
-# define BOOST_PP_SEQ_SPLIT_70(x) (x) BOOST_PP_SEQ_SPLIT_69
-# define BOOST_PP_SEQ_SPLIT_71(x) (x) BOOST_PP_SEQ_SPLIT_70
-# define BOOST_PP_SEQ_SPLIT_72(x) (x) BOOST_PP_SEQ_SPLIT_71
-# define BOOST_PP_SEQ_SPLIT_73(x) (x) BOOST_PP_SEQ_SPLIT_72
-# define BOOST_PP_SEQ_SPLIT_74(x) (x) BOOST_PP_SEQ_SPLIT_73
-# define BOOST_PP_SEQ_SPLIT_75(x) (x) BOOST_PP_SEQ_SPLIT_74
-# define BOOST_PP_SEQ_SPLIT_76(x) (x) BOOST_PP_SEQ_SPLIT_75
-# define BOOST_PP_SEQ_SPLIT_77(x) (x) BOOST_PP_SEQ_SPLIT_76
-# define BOOST_PP_SEQ_SPLIT_78(x) (x) BOOST_PP_SEQ_SPLIT_77
-# define BOOST_PP_SEQ_SPLIT_79(x) (x) BOOST_PP_SEQ_SPLIT_78
-# define BOOST_PP_SEQ_SPLIT_80(x) (x) BOOST_PP_SEQ_SPLIT_79
-# define BOOST_PP_SEQ_SPLIT_81(x) (x) BOOST_PP_SEQ_SPLIT_80
-# define BOOST_PP_SEQ_SPLIT_82(x) (x) BOOST_PP_SEQ_SPLIT_81
-# define BOOST_PP_SEQ_SPLIT_83(x) (x) BOOST_PP_SEQ_SPLIT_82
-# define BOOST_PP_SEQ_SPLIT_84(x) (x) BOOST_PP_SEQ_SPLIT_83
-# define BOOST_PP_SEQ_SPLIT_85(x) (x) BOOST_PP_SEQ_SPLIT_84
-# define BOOST_PP_SEQ_SPLIT_86(x) (x) BOOST_PP_SEQ_SPLIT_85
-# define BOOST_PP_SEQ_SPLIT_87(x) (x) BOOST_PP_SEQ_SPLIT_86
-# define BOOST_PP_SEQ_SPLIT_88(x) (x) BOOST_PP_SEQ_SPLIT_87
-# define BOOST_PP_SEQ_SPLIT_89(x) (x) BOOST_PP_SEQ_SPLIT_88
-# define BOOST_PP_SEQ_SPLIT_90(x) (x) BOOST_PP_SEQ_SPLIT_89
-# define BOOST_PP_SEQ_SPLIT_91(x) (x) BOOST_PP_SEQ_SPLIT_90
-# define BOOST_PP_SEQ_SPLIT_92(x) (x) BOOST_PP_SEQ_SPLIT_91
-# define BOOST_PP_SEQ_SPLIT_93(x) (x) BOOST_PP_SEQ_SPLIT_92
-# define BOOST_PP_SEQ_SPLIT_94(x) (x) BOOST_PP_SEQ_SPLIT_93
-# define BOOST_PP_SEQ_SPLIT_95(x) (x) BOOST_PP_SEQ_SPLIT_94
-# define BOOST_PP_SEQ_SPLIT_96(x) (x) BOOST_PP_SEQ_SPLIT_95
-# define BOOST_PP_SEQ_SPLIT_97(x) (x) BOOST_PP_SEQ_SPLIT_96
-# define BOOST_PP_SEQ_SPLIT_98(x) (x) BOOST_PP_SEQ_SPLIT_97
-# define BOOST_PP_SEQ_SPLIT_99(x) (x) BOOST_PP_SEQ_SPLIT_98
-# define BOOST_PP_SEQ_SPLIT_100(x) (x) BOOST_PP_SEQ_SPLIT_99
-# define BOOST_PP_SEQ_SPLIT_101(x) (x) BOOST_PP_SEQ_SPLIT_100
-# define BOOST_PP_SEQ_SPLIT_102(x) (x) BOOST_PP_SEQ_SPLIT_101
-# define BOOST_PP_SEQ_SPLIT_103(x) (x) BOOST_PP_SEQ_SPLIT_102
-# define BOOST_PP_SEQ_SPLIT_104(x) (x) BOOST_PP_SEQ_SPLIT_103
-# define BOOST_PP_SEQ_SPLIT_105(x) (x) BOOST_PP_SEQ_SPLIT_104
-# define BOOST_PP_SEQ_SPLIT_106(x) (x) BOOST_PP_SEQ_SPLIT_105
-# define BOOST_PP_SEQ_SPLIT_107(x) (x) BOOST_PP_SEQ_SPLIT_106
-# define BOOST_PP_SEQ_SPLIT_108(x) (x) BOOST_PP_SEQ_SPLIT_107
-# define BOOST_PP_SEQ_SPLIT_109(x) (x) BOOST_PP_SEQ_SPLIT_108
-# define BOOST_PP_SEQ_SPLIT_110(x) (x) BOOST_PP_SEQ_SPLIT_109
-# define BOOST_PP_SEQ_SPLIT_111(x) (x) BOOST_PP_SEQ_SPLIT_110
-# define BOOST_PP_SEQ_SPLIT_112(x) (x) BOOST_PP_SEQ_SPLIT_111
-# define BOOST_PP_SEQ_SPLIT_113(x) (x) BOOST_PP_SEQ_SPLIT_112
-# define BOOST_PP_SEQ_SPLIT_114(x) (x) BOOST_PP_SEQ_SPLIT_113
-# define BOOST_PP_SEQ_SPLIT_115(x) (x) BOOST_PP_SEQ_SPLIT_114
-# define BOOST_PP_SEQ_SPLIT_116(x) (x) BOOST_PP_SEQ_SPLIT_115
-# define BOOST_PP_SEQ_SPLIT_117(x) (x) BOOST_PP_SEQ_SPLIT_116
-# define BOOST_PP_SEQ_SPLIT_118(x) (x) BOOST_PP_SEQ_SPLIT_117
-# define BOOST_PP_SEQ_SPLIT_119(x) (x) BOOST_PP_SEQ_SPLIT_118
-# define BOOST_PP_SEQ_SPLIT_120(x) (x) BOOST_PP_SEQ_SPLIT_119
-# define BOOST_PP_SEQ_SPLIT_121(x) (x) BOOST_PP_SEQ_SPLIT_120
-# define BOOST_PP_SEQ_SPLIT_122(x) (x) BOOST_PP_SEQ_SPLIT_121
-# define BOOST_PP_SEQ_SPLIT_123(x) (x) BOOST_PP_SEQ_SPLIT_122
-# define BOOST_PP_SEQ_SPLIT_124(x) (x) BOOST_PP_SEQ_SPLIT_123
-# define BOOST_PP_SEQ_SPLIT_125(x) (x) BOOST_PP_SEQ_SPLIT_124
-# define BOOST_PP_SEQ_SPLIT_126(x) (x) BOOST_PP_SEQ_SPLIT_125
-# define BOOST_PP_SEQ_SPLIT_127(x) (x) BOOST_PP_SEQ_SPLIT_126
-# define BOOST_PP_SEQ_SPLIT_128(x) (x) BOOST_PP_SEQ_SPLIT_127
-# define BOOST_PP_SEQ_SPLIT_129(x) (x) BOOST_PP_SEQ_SPLIT_128
-# define BOOST_PP_SEQ_SPLIT_130(x) (x) BOOST_PP_SEQ_SPLIT_129
-# define BOOST_PP_SEQ_SPLIT_131(x) (x) BOOST_PP_SEQ_SPLIT_130
-# define BOOST_PP_SEQ_SPLIT_132(x) (x) BOOST_PP_SEQ_SPLIT_131
-# define BOOST_PP_SEQ_SPLIT_133(x) (x) BOOST_PP_SEQ_SPLIT_132
-# define BOOST_PP_SEQ_SPLIT_134(x) (x) BOOST_PP_SEQ_SPLIT_133
-# define BOOST_PP_SEQ_SPLIT_135(x) (x) BOOST_PP_SEQ_SPLIT_134
-# define BOOST_PP_SEQ_SPLIT_136(x) (x) BOOST_PP_SEQ_SPLIT_135
-# define BOOST_PP_SEQ_SPLIT_137(x) (x) BOOST_PP_SEQ_SPLIT_136
-# define BOOST_PP_SEQ_SPLIT_138(x) (x) BOOST_PP_SEQ_SPLIT_137
-# define BOOST_PP_SEQ_SPLIT_139(x) (x) BOOST_PP_SEQ_SPLIT_138
-# define BOOST_PP_SEQ_SPLIT_140(x) (x) BOOST_PP_SEQ_SPLIT_139
-# define BOOST_PP_SEQ_SPLIT_141(x) (x) BOOST_PP_SEQ_SPLIT_140
-# define BOOST_PP_SEQ_SPLIT_142(x) (x) BOOST_PP_SEQ_SPLIT_141
-# define BOOST_PP_SEQ_SPLIT_143(x) (x) BOOST_PP_SEQ_SPLIT_142
-# define BOOST_PP_SEQ_SPLIT_144(x) (x) BOOST_PP_SEQ_SPLIT_143
-# define BOOST_PP_SEQ_SPLIT_145(x) (x) BOOST_PP_SEQ_SPLIT_144
-# define BOOST_PP_SEQ_SPLIT_146(x) (x) BOOST_PP_SEQ_SPLIT_145
-# define BOOST_PP_SEQ_SPLIT_147(x) (x) BOOST_PP_SEQ_SPLIT_146
-# define BOOST_PP_SEQ_SPLIT_148(x) (x) BOOST_PP_SEQ_SPLIT_147
-# define BOOST_PP_SEQ_SPLIT_149(x) (x) BOOST_PP_SEQ_SPLIT_148
-# define BOOST_PP_SEQ_SPLIT_150(x) (x) BOOST_PP_SEQ_SPLIT_149
-# define BOOST_PP_SEQ_SPLIT_151(x) (x) BOOST_PP_SEQ_SPLIT_150
-# define BOOST_PP_SEQ_SPLIT_152(x) (x) BOOST_PP_SEQ_SPLIT_151
-# define BOOST_PP_SEQ_SPLIT_153(x) (x) BOOST_PP_SEQ_SPLIT_152
-# define BOOST_PP_SEQ_SPLIT_154(x) (x) BOOST_PP_SEQ_SPLIT_153
-# define BOOST_PP_SEQ_SPLIT_155(x) (x) BOOST_PP_SEQ_SPLIT_154
-# define BOOST_PP_SEQ_SPLIT_156(x) (x) BOOST_PP_SEQ_SPLIT_155
-# define BOOST_PP_SEQ_SPLIT_157(x) (x) BOOST_PP_SEQ_SPLIT_156
-# define BOOST_PP_SEQ_SPLIT_158(x) (x) BOOST_PP_SEQ_SPLIT_157
-# define BOOST_PP_SEQ_SPLIT_159(x) (x) BOOST_PP_SEQ_SPLIT_158
-# define BOOST_PP_SEQ_SPLIT_160(x) (x) BOOST_PP_SEQ_SPLIT_159
-# define BOOST_PP_SEQ_SPLIT_161(x) (x) BOOST_PP_SEQ_SPLIT_160
-# define BOOST_PP_SEQ_SPLIT_162(x) (x) BOOST_PP_SEQ_SPLIT_161
-# define BOOST_PP_SEQ_SPLIT_163(x) (x) BOOST_PP_SEQ_SPLIT_162
-# define BOOST_PP_SEQ_SPLIT_164(x) (x) BOOST_PP_SEQ_SPLIT_163
-# define BOOST_PP_SEQ_SPLIT_165(x) (x) BOOST_PP_SEQ_SPLIT_164
-# define BOOST_PP_SEQ_SPLIT_166(x) (x) BOOST_PP_SEQ_SPLIT_165
-# define BOOST_PP_SEQ_SPLIT_167(x) (x) BOOST_PP_SEQ_SPLIT_166
-# define BOOST_PP_SEQ_SPLIT_168(x) (x) BOOST_PP_SEQ_SPLIT_167
-# define BOOST_PP_SEQ_SPLIT_169(x) (x) BOOST_PP_SEQ_SPLIT_168
-# define BOOST_PP_SEQ_SPLIT_170(x) (x) BOOST_PP_SEQ_SPLIT_169
-# define BOOST_PP_SEQ_SPLIT_171(x) (x) BOOST_PP_SEQ_SPLIT_170
-# define BOOST_PP_SEQ_SPLIT_172(x) (x) BOOST_PP_SEQ_SPLIT_171
-# define BOOST_PP_SEQ_SPLIT_173(x) (x) BOOST_PP_SEQ_SPLIT_172
-# define BOOST_PP_SEQ_SPLIT_174(x) (x) BOOST_PP_SEQ_SPLIT_173
-# define BOOST_PP_SEQ_SPLIT_175(x) (x) BOOST_PP_SEQ_SPLIT_174
-# define BOOST_PP_SEQ_SPLIT_176(x) (x) BOOST_PP_SEQ_SPLIT_175
-# define BOOST_PP_SEQ_SPLIT_177(x) (x) BOOST_PP_SEQ_SPLIT_176
-# define BOOST_PP_SEQ_SPLIT_178(x) (x) BOOST_PP_SEQ_SPLIT_177
-# define BOOST_PP_SEQ_SPLIT_179(x) (x) BOOST_PP_SEQ_SPLIT_178
-# define BOOST_PP_SEQ_SPLIT_180(x) (x) BOOST_PP_SEQ_SPLIT_179
-# define BOOST_PP_SEQ_SPLIT_181(x) (x) BOOST_PP_SEQ_SPLIT_180
-# define BOOST_PP_SEQ_SPLIT_182(x) (x) BOOST_PP_SEQ_SPLIT_181
-# define BOOST_PP_SEQ_SPLIT_183(x) (x) BOOST_PP_SEQ_SPLIT_182
-# define BOOST_PP_SEQ_SPLIT_184(x) (x) BOOST_PP_SEQ_SPLIT_183
-# define BOOST_PP_SEQ_SPLIT_185(x) (x) BOOST_PP_SEQ_SPLIT_184
-# define BOOST_PP_SEQ_SPLIT_186(x) (x) BOOST_PP_SEQ_SPLIT_185
-# define BOOST_PP_SEQ_SPLIT_187(x) (x) BOOST_PP_SEQ_SPLIT_186
-# define BOOST_PP_SEQ_SPLIT_188(x) (x) BOOST_PP_SEQ_SPLIT_187
-# define BOOST_PP_SEQ_SPLIT_189(x) (x) BOOST_PP_SEQ_SPLIT_188
-# define BOOST_PP_SEQ_SPLIT_190(x) (x) BOOST_PP_SEQ_SPLIT_189
-# define BOOST_PP_SEQ_SPLIT_191(x) (x) BOOST_PP_SEQ_SPLIT_190
-# define BOOST_PP_SEQ_SPLIT_192(x) (x) BOOST_PP_SEQ_SPLIT_191
-# define BOOST_PP_SEQ_SPLIT_193(x) (x) BOOST_PP_SEQ_SPLIT_192
-# define BOOST_PP_SEQ_SPLIT_194(x) (x) BOOST_PP_SEQ_SPLIT_193
-# define BOOST_PP_SEQ_SPLIT_195(x) (x) BOOST_PP_SEQ_SPLIT_194
-# define BOOST_PP_SEQ_SPLIT_196(x) (x) BOOST_PP_SEQ_SPLIT_195
-# define BOOST_PP_SEQ_SPLIT_197(x) (x) BOOST_PP_SEQ_SPLIT_196
-# define BOOST_PP_SEQ_SPLIT_198(x) (x) BOOST_PP_SEQ_SPLIT_197
-# define BOOST_PP_SEQ_SPLIT_199(x) (x) BOOST_PP_SEQ_SPLIT_198
-# define BOOST_PP_SEQ_SPLIT_200(x) (x) BOOST_PP_SEQ_SPLIT_199
-# define BOOST_PP_SEQ_SPLIT_201(x) (x) BOOST_PP_SEQ_SPLIT_200
-# define BOOST_PP_SEQ_SPLIT_202(x) (x) BOOST_PP_SEQ_SPLIT_201
-# define BOOST_PP_SEQ_SPLIT_203(x) (x) BOOST_PP_SEQ_SPLIT_202
-# define BOOST_PP_SEQ_SPLIT_204(x) (x) BOOST_PP_SEQ_SPLIT_203
-# define BOOST_PP_SEQ_SPLIT_205(x) (x) BOOST_PP_SEQ_SPLIT_204
-# define BOOST_PP_SEQ_SPLIT_206(x) (x) BOOST_PP_SEQ_SPLIT_205
-# define BOOST_PP_SEQ_SPLIT_207(x) (x) BOOST_PP_SEQ_SPLIT_206
-# define BOOST_PP_SEQ_SPLIT_208(x) (x) BOOST_PP_SEQ_SPLIT_207
-# define BOOST_PP_SEQ_SPLIT_209(x) (x) BOOST_PP_SEQ_SPLIT_208
-# define BOOST_PP_SEQ_SPLIT_210(x) (x) BOOST_PP_SEQ_SPLIT_209
-# define BOOST_PP_SEQ_SPLIT_211(x) (x) BOOST_PP_SEQ_SPLIT_210
-# define BOOST_PP_SEQ_SPLIT_212(x) (x) BOOST_PP_SEQ_SPLIT_211
-# define BOOST_PP_SEQ_SPLIT_213(x) (x) BOOST_PP_SEQ_SPLIT_212
-# define BOOST_PP_SEQ_SPLIT_214(x) (x) BOOST_PP_SEQ_SPLIT_213
-# define BOOST_PP_SEQ_SPLIT_215(x) (x) BOOST_PP_SEQ_SPLIT_214
-# define BOOST_PP_SEQ_SPLIT_216(x) (x) BOOST_PP_SEQ_SPLIT_215
-# define BOOST_PP_SEQ_SPLIT_217(x) (x) BOOST_PP_SEQ_SPLIT_216
-# define BOOST_PP_SEQ_SPLIT_218(x) (x) BOOST_PP_SEQ_SPLIT_217
-# define BOOST_PP_SEQ_SPLIT_219(x) (x) BOOST_PP_SEQ_SPLIT_218
-# define BOOST_PP_SEQ_SPLIT_220(x) (x) BOOST_PP_SEQ_SPLIT_219
-# define BOOST_PP_SEQ_SPLIT_221(x) (x) BOOST_PP_SEQ_SPLIT_220
-# define BOOST_PP_SEQ_SPLIT_222(x) (x) BOOST_PP_SEQ_SPLIT_221
-# define BOOST_PP_SEQ_SPLIT_223(x) (x) BOOST_PP_SEQ_SPLIT_222
-# define BOOST_PP_SEQ_SPLIT_224(x) (x) BOOST_PP_SEQ_SPLIT_223
-# define BOOST_PP_SEQ_SPLIT_225(x) (x) BOOST_PP_SEQ_SPLIT_224
-# define BOOST_PP_SEQ_SPLIT_226(x) (x) BOOST_PP_SEQ_SPLIT_225
-# define BOOST_PP_SEQ_SPLIT_227(x) (x) BOOST_PP_SEQ_SPLIT_226
-# define BOOST_PP_SEQ_SPLIT_228(x) (x) BOOST_PP_SEQ_SPLIT_227
-# define BOOST_PP_SEQ_SPLIT_229(x) (x) BOOST_PP_SEQ_SPLIT_228
-# define BOOST_PP_SEQ_SPLIT_230(x) (x) BOOST_PP_SEQ_SPLIT_229
-# define BOOST_PP_SEQ_SPLIT_231(x) (x) BOOST_PP_SEQ_SPLIT_230
-# define BOOST_PP_SEQ_SPLIT_232(x) (x) BOOST_PP_SEQ_SPLIT_231
-# define BOOST_PP_SEQ_SPLIT_233(x) (x) BOOST_PP_SEQ_SPLIT_232
-# define BOOST_PP_SEQ_SPLIT_234(x) (x) BOOST_PP_SEQ_SPLIT_233
-# define BOOST_PP_SEQ_SPLIT_235(x) (x) BOOST_PP_SEQ_SPLIT_234
-# define BOOST_PP_SEQ_SPLIT_236(x) (x) BOOST_PP_SEQ_SPLIT_235
-# define BOOST_PP_SEQ_SPLIT_237(x) (x) BOOST_PP_SEQ_SPLIT_236
-# define BOOST_PP_SEQ_SPLIT_238(x) (x) BOOST_PP_SEQ_SPLIT_237
-# define BOOST_PP_SEQ_SPLIT_239(x) (x) BOOST_PP_SEQ_SPLIT_238
-# define BOOST_PP_SEQ_SPLIT_240(x) (x) BOOST_PP_SEQ_SPLIT_239
-# define BOOST_PP_SEQ_SPLIT_241(x) (x) BOOST_PP_SEQ_SPLIT_240
-# define BOOST_PP_SEQ_SPLIT_242(x) (x) BOOST_PP_SEQ_SPLIT_241
-# define BOOST_PP_SEQ_SPLIT_243(x) (x) BOOST_PP_SEQ_SPLIT_242
-# define BOOST_PP_SEQ_SPLIT_244(x) (x) BOOST_PP_SEQ_SPLIT_243
-# define BOOST_PP_SEQ_SPLIT_245(x) (x) BOOST_PP_SEQ_SPLIT_244
-# define BOOST_PP_SEQ_SPLIT_246(x) (x) BOOST_PP_SEQ_SPLIT_245
-# define BOOST_PP_SEQ_SPLIT_247(x) (x) BOOST_PP_SEQ_SPLIT_246
-# define BOOST_PP_SEQ_SPLIT_248(x) (x) BOOST_PP_SEQ_SPLIT_247
-# define BOOST_PP_SEQ_SPLIT_249(x) (x) BOOST_PP_SEQ_SPLIT_248
-# define BOOST_PP_SEQ_SPLIT_250(x) (x) BOOST_PP_SEQ_SPLIT_249
-# define BOOST_PP_SEQ_SPLIT_251(x) (x) BOOST_PP_SEQ_SPLIT_250
-# define BOOST_PP_SEQ_SPLIT_252(x) (x) BOOST_PP_SEQ_SPLIT_251
-# define BOOST_PP_SEQ_SPLIT_253(x) (x) BOOST_PP_SEQ_SPLIT_252
-# define BOOST_PP_SEQ_SPLIT_254(x) (x) BOOST_PP_SEQ_SPLIT_253
-# define BOOST_PP_SEQ_SPLIT_255(x) (x) BOOST_PP_SEQ_SPLIT_254
-# define BOOST_PP_SEQ_SPLIT_256(x) (x) BOOST_PP_SEQ_SPLIT_255
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/seq/elem.hpp b/libcutl/cutl/details/boost/preprocessor/seq/elem.hpp
deleted file mode 100644
index 46f045c..0000000
--- a/libcutl/cutl/details/boost/preprocessor/seq/elem.hpp
+++ /dev/null
@@ -1,304 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_SEQ_ELEM_HPP
-# define BOOST_PREPROCESSOR_SEQ_ELEM_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/facilities/empty.hpp>
-#
-# /* BOOST_PP_SEQ_ELEM */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_SEQ_ELEM(i, seq) BOOST_PP_SEQ_ELEM_I(i, seq)
-# else
-# define BOOST_PP_SEQ_ELEM(i, seq) BOOST_PP_SEQ_ELEM_I((i, seq))
-# endif
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II((BOOST_PP_SEQ_ELEM_ ## i seq))
-# define BOOST_PP_SEQ_ELEM_II(res) BOOST_PP_SEQ_ELEM_IV(BOOST_PP_SEQ_ELEM_III res)
-# define BOOST_PP_SEQ_ELEM_III(x, _) x BOOST_PP_EMPTY()
-# define BOOST_PP_SEQ_ELEM_IV(x) x
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_SEQ_ELEM_I(par) BOOST_PP_SEQ_ELEM_II ## par
-# define BOOST_PP_SEQ_ELEM_II(i, seq) BOOST_PP_SEQ_ELEM_III(BOOST_PP_SEQ_ELEM_ ## i ## seq)
-# define BOOST_PP_SEQ_ELEM_III(im) BOOST_PP_SEQ_ELEM_IV(im)
-# define BOOST_PP_SEQ_ELEM_IV(x, _) x
-# else
-# if defined(__IBMC__) || defined(__IBMCPP__)
-# define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_CAT(BOOST_PP_SEQ_ELEM_ ## i, seq))
-# else
-# define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_SEQ_ELEM_ ## i seq)
-# endif
-# define BOOST_PP_SEQ_ELEM_II(im) BOOST_PP_SEQ_ELEM_III(im)
-# define BOOST_PP_SEQ_ELEM_III(x, _) x
-# endif
-#
-# define BOOST_PP_SEQ_ELEM_0(x) x, BOOST_PP_NIL
-# define BOOST_PP_SEQ_ELEM_1(_) BOOST_PP_SEQ_ELEM_0
-# define BOOST_PP_SEQ_ELEM_2(_) BOOST_PP_SEQ_ELEM_1
-# define BOOST_PP_SEQ_ELEM_3(_) BOOST_PP_SEQ_ELEM_2
-# define BOOST_PP_SEQ_ELEM_4(_) BOOST_PP_SEQ_ELEM_3
-# define BOOST_PP_SEQ_ELEM_5(_) BOOST_PP_SEQ_ELEM_4
-# define BOOST_PP_SEQ_ELEM_6(_) BOOST_PP_SEQ_ELEM_5
-# define BOOST_PP_SEQ_ELEM_7(_) BOOST_PP_SEQ_ELEM_6
-# define BOOST_PP_SEQ_ELEM_8(_) BOOST_PP_SEQ_ELEM_7
-# define BOOST_PP_SEQ_ELEM_9(_) BOOST_PP_SEQ_ELEM_8
-# define BOOST_PP_SEQ_ELEM_10(_) BOOST_PP_SEQ_ELEM_9
-# define BOOST_PP_SEQ_ELEM_11(_) BOOST_PP_SEQ_ELEM_10
-# define BOOST_PP_SEQ_ELEM_12(_) BOOST_PP_SEQ_ELEM_11
-# define BOOST_PP_SEQ_ELEM_13(_) BOOST_PP_SEQ_ELEM_12
-# define BOOST_PP_SEQ_ELEM_14(_) BOOST_PP_SEQ_ELEM_13
-# define BOOST_PP_SEQ_ELEM_15(_) BOOST_PP_SEQ_ELEM_14
-# define BOOST_PP_SEQ_ELEM_16(_) BOOST_PP_SEQ_ELEM_15
-# define BOOST_PP_SEQ_ELEM_17(_) BOOST_PP_SEQ_ELEM_16
-# define BOOST_PP_SEQ_ELEM_18(_) BOOST_PP_SEQ_ELEM_17
-# define BOOST_PP_SEQ_ELEM_19(_) BOOST_PP_SEQ_ELEM_18
-# define BOOST_PP_SEQ_ELEM_20(_) BOOST_PP_SEQ_ELEM_19
-# define BOOST_PP_SEQ_ELEM_21(_) BOOST_PP_SEQ_ELEM_20
-# define BOOST_PP_SEQ_ELEM_22(_) BOOST_PP_SEQ_ELEM_21
-# define BOOST_PP_SEQ_ELEM_23(_) BOOST_PP_SEQ_ELEM_22
-# define BOOST_PP_SEQ_ELEM_24(_) BOOST_PP_SEQ_ELEM_23
-# define BOOST_PP_SEQ_ELEM_25(_) BOOST_PP_SEQ_ELEM_24
-# define BOOST_PP_SEQ_ELEM_26(_) BOOST_PP_SEQ_ELEM_25
-# define BOOST_PP_SEQ_ELEM_27(_) BOOST_PP_SEQ_ELEM_26
-# define BOOST_PP_SEQ_ELEM_28(_) BOOST_PP_SEQ_ELEM_27
-# define BOOST_PP_SEQ_ELEM_29(_) BOOST_PP_SEQ_ELEM_28
-# define BOOST_PP_SEQ_ELEM_30(_) BOOST_PP_SEQ_ELEM_29
-# define BOOST_PP_SEQ_ELEM_31(_) BOOST_PP_SEQ_ELEM_30
-# define BOOST_PP_SEQ_ELEM_32(_) BOOST_PP_SEQ_ELEM_31
-# define BOOST_PP_SEQ_ELEM_33(_) BOOST_PP_SEQ_ELEM_32
-# define BOOST_PP_SEQ_ELEM_34(_) BOOST_PP_SEQ_ELEM_33
-# define BOOST_PP_SEQ_ELEM_35(_) BOOST_PP_SEQ_ELEM_34
-# define BOOST_PP_SEQ_ELEM_36(_) BOOST_PP_SEQ_ELEM_35
-# define BOOST_PP_SEQ_ELEM_37(_) BOOST_PP_SEQ_ELEM_36
-# define BOOST_PP_SEQ_ELEM_38(_) BOOST_PP_SEQ_ELEM_37
-# define BOOST_PP_SEQ_ELEM_39(_) BOOST_PP_SEQ_ELEM_38
-# define BOOST_PP_SEQ_ELEM_40(_) BOOST_PP_SEQ_ELEM_39
-# define BOOST_PP_SEQ_ELEM_41(_) BOOST_PP_SEQ_ELEM_40
-# define BOOST_PP_SEQ_ELEM_42(_) BOOST_PP_SEQ_ELEM_41
-# define BOOST_PP_SEQ_ELEM_43(_) BOOST_PP_SEQ_ELEM_42
-# define BOOST_PP_SEQ_ELEM_44(_) BOOST_PP_SEQ_ELEM_43
-# define BOOST_PP_SEQ_ELEM_45(_) BOOST_PP_SEQ_ELEM_44
-# define BOOST_PP_SEQ_ELEM_46(_) BOOST_PP_SEQ_ELEM_45
-# define BOOST_PP_SEQ_ELEM_47(_) BOOST_PP_SEQ_ELEM_46
-# define BOOST_PP_SEQ_ELEM_48(_) BOOST_PP_SEQ_ELEM_47
-# define BOOST_PP_SEQ_ELEM_49(_) BOOST_PP_SEQ_ELEM_48
-# define BOOST_PP_SEQ_ELEM_50(_) BOOST_PP_SEQ_ELEM_49
-# define BOOST_PP_SEQ_ELEM_51(_) BOOST_PP_SEQ_ELEM_50
-# define BOOST_PP_SEQ_ELEM_52(_) BOOST_PP_SEQ_ELEM_51
-# define BOOST_PP_SEQ_ELEM_53(_) BOOST_PP_SEQ_ELEM_52
-# define BOOST_PP_SEQ_ELEM_54(_) BOOST_PP_SEQ_ELEM_53
-# define BOOST_PP_SEQ_ELEM_55(_) BOOST_PP_SEQ_ELEM_54
-# define BOOST_PP_SEQ_ELEM_56(_) BOOST_PP_SEQ_ELEM_55
-# define BOOST_PP_SEQ_ELEM_57(_) BOOST_PP_SEQ_ELEM_56
-# define BOOST_PP_SEQ_ELEM_58(_) BOOST_PP_SEQ_ELEM_57
-# define BOOST_PP_SEQ_ELEM_59(_) BOOST_PP_SEQ_ELEM_58
-# define BOOST_PP_SEQ_ELEM_60(_) BOOST_PP_SEQ_ELEM_59
-# define BOOST_PP_SEQ_ELEM_61(_) BOOST_PP_SEQ_ELEM_60
-# define BOOST_PP_SEQ_ELEM_62(_) BOOST_PP_SEQ_ELEM_61
-# define BOOST_PP_SEQ_ELEM_63(_) BOOST_PP_SEQ_ELEM_62
-# define BOOST_PP_SEQ_ELEM_64(_) BOOST_PP_SEQ_ELEM_63
-# define BOOST_PP_SEQ_ELEM_65(_) BOOST_PP_SEQ_ELEM_64
-# define BOOST_PP_SEQ_ELEM_66(_) BOOST_PP_SEQ_ELEM_65
-# define BOOST_PP_SEQ_ELEM_67(_) BOOST_PP_SEQ_ELEM_66
-# define BOOST_PP_SEQ_ELEM_68(_) BOOST_PP_SEQ_ELEM_67
-# define BOOST_PP_SEQ_ELEM_69(_) BOOST_PP_SEQ_ELEM_68
-# define BOOST_PP_SEQ_ELEM_70(_) BOOST_PP_SEQ_ELEM_69
-# define BOOST_PP_SEQ_ELEM_71(_) BOOST_PP_SEQ_ELEM_70
-# define BOOST_PP_SEQ_ELEM_72(_) BOOST_PP_SEQ_ELEM_71
-# define BOOST_PP_SEQ_ELEM_73(_) BOOST_PP_SEQ_ELEM_72
-# define BOOST_PP_SEQ_ELEM_74(_) BOOST_PP_SEQ_ELEM_73
-# define BOOST_PP_SEQ_ELEM_75(_) BOOST_PP_SEQ_ELEM_74
-# define BOOST_PP_SEQ_ELEM_76(_) BOOST_PP_SEQ_ELEM_75
-# define BOOST_PP_SEQ_ELEM_77(_) BOOST_PP_SEQ_ELEM_76
-# define BOOST_PP_SEQ_ELEM_78(_) BOOST_PP_SEQ_ELEM_77
-# define BOOST_PP_SEQ_ELEM_79(_) BOOST_PP_SEQ_ELEM_78
-# define BOOST_PP_SEQ_ELEM_80(_) BOOST_PP_SEQ_ELEM_79
-# define BOOST_PP_SEQ_ELEM_81(_) BOOST_PP_SEQ_ELEM_80
-# define BOOST_PP_SEQ_ELEM_82(_) BOOST_PP_SEQ_ELEM_81
-# define BOOST_PP_SEQ_ELEM_83(_) BOOST_PP_SEQ_ELEM_82
-# define BOOST_PP_SEQ_ELEM_84(_) BOOST_PP_SEQ_ELEM_83
-# define BOOST_PP_SEQ_ELEM_85(_) BOOST_PP_SEQ_ELEM_84
-# define BOOST_PP_SEQ_ELEM_86(_) BOOST_PP_SEQ_ELEM_85
-# define BOOST_PP_SEQ_ELEM_87(_) BOOST_PP_SEQ_ELEM_86
-# define BOOST_PP_SEQ_ELEM_88(_) BOOST_PP_SEQ_ELEM_87
-# define BOOST_PP_SEQ_ELEM_89(_) BOOST_PP_SEQ_ELEM_88
-# define BOOST_PP_SEQ_ELEM_90(_) BOOST_PP_SEQ_ELEM_89
-# define BOOST_PP_SEQ_ELEM_91(_) BOOST_PP_SEQ_ELEM_90
-# define BOOST_PP_SEQ_ELEM_92(_) BOOST_PP_SEQ_ELEM_91
-# define BOOST_PP_SEQ_ELEM_93(_) BOOST_PP_SEQ_ELEM_92
-# define BOOST_PP_SEQ_ELEM_94(_) BOOST_PP_SEQ_ELEM_93
-# define BOOST_PP_SEQ_ELEM_95(_) BOOST_PP_SEQ_ELEM_94
-# define BOOST_PP_SEQ_ELEM_96(_) BOOST_PP_SEQ_ELEM_95
-# define BOOST_PP_SEQ_ELEM_97(_) BOOST_PP_SEQ_ELEM_96
-# define BOOST_PP_SEQ_ELEM_98(_) BOOST_PP_SEQ_ELEM_97
-# define BOOST_PP_SEQ_ELEM_99(_) BOOST_PP_SEQ_ELEM_98
-# define BOOST_PP_SEQ_ELEM_100(_) BOOST_PP_SEQ_ELEM_99
-# define BOOST_PP_SEQ_ELEM_101(_) BOOST_PP_SEQ_ELEM_100
-# define BOOST_PP_SEQ_ELEM_102(_) BOOST_PP_SEQ_ELEM_101
-# define BOOST_PP_SEQ_ELEM_103(_) BOOST_PP_SEQ_ELEM_102
-# define BOOST_PP_SEQ_ELEM_104(_) BOOST_PP_SEQ_ELEM_103
-# define BOOST_PP_SEQ_ELEM_105(_) BOOST_PP_SEQ_ELEM_104
-# define BOOST_PP_SEQ_ELEM_106(_) BOOST_PP_SEQ_ELEM_105
-# define BOOST_PP_SEQ_ELEM_107(_) BOOST_PP_SEQ_ELEM_106
-# define BOOST_PP_SEQ_ELEM_108(_) BOOST_PP_SEQ_ELEM_107
-# define BOOST_PP_SEQ_ELEM_109(_) BOOST_PP_SEQ_ELEM_108
-# define BOOST_PP_SEQ_ELEM_110(_) BOOST_PP_SEQ_ELEM_109
-# define BOOST_PP_SEQ_ELEM_111(_) BOOST_PP_SEQ_ELEM_110
-# define BOOST_PP_SEQ_ELEM_112(_) BOOST_PP_SEQ_ELEM_111
-# define BOOST_PP_SEQ_ELEM_113(_) BOOST_PP_SEQ_ELEM_112
-# define BOOST_PP_SEQ_ELEM_114(_) BOOST_PP_SEQ_ELEM_113
-# define BOOST_PP_SEQ_ELEM_115(_) BOOST_PP_SEQ_ELEM_114
-# define BOOST_PP_SEQ_ELEM_116(_) BOOST_PP_SEQ_ELEM_115
-# define BOOST_PP_SEQ_ELEM_117(_) BOOST_PP_SEQ_ELEM_116
-# define BOOST_PP_SEQ_ELEM_118(_) BOOST_PP_SEQ_ELEM_117
-# define BOOST_PP_SEQ_ELEM_119(_) BOOST_PP_SEQ_ELEM_118
-# define BOOST_PP_SEQ_ELEM_120(_) BOOST_PP_SEQ_ELEM_119
-# define BOOST_PP_SEQ_ELEM_121(_) BOOST_PP_SEQ_ELEM_120
-# define BOOST_PP_SEQ_ELEM_122(_) BOOST_PP_SEQ_ELEM_121
-# define BOOST_PP_SEQ_ELEM_123(_) BOOST_PP_SEQ_ELEM_122
-# define BOOST_PP_SEQ_ELEM_124(_) BOOST_PP_SEQ_ELEM_123
-# define BOOST_PP_SEQ_ELEM_125(_) BOOST_PP_SEQ_ELEM_124
-# define BOOST_PP_SEQ_ELEM_126(_) BOOST_PP_SEQ_ELEM_125
-# define BOOST_PP_SEQ_ELEM_127(_) BOOST_PP_SEQ_ELEM_126
-# define BOOST_PP_SEQ_ELEM_128(_) BOOST_PP_SEQ_ELEM_127
-# define BOOST_PP_SEQ_ELEM_129(_) BOOST_PP_SEQ_ELEM_128
-# define BOOST_PP_SEQ_ELEM_130(_) BOOST_PP_SEQ_ELEM_129
-# define BOOST_PP_SEQ_ELEM_131(_) BOOST_PP_SEQ_ELEM_130
-# define BOOST_PP_SEQ_ELEM_132(_) BOOST_PP_SEQ_ELEM_131
-# define BOOST_PP_SEQ_ELEM_133(_) BOOST_PP_SEQ_ELEM_132
-# define BOOST_PP_SEQ_ELEM_134(_) BOOST_PP_SEQ_ELEM_133
-# define BOOST_PP_SEQ_ELEM_135(_) BOOST_PP_SEQ_ELEM_134
-# define BOOST_PP_SEQ_ELEM_136(_) BOOST_PP_SEQ_ELEM_135
-# define BOOST_PP_SEQ_ELEM_137(_) BOOST_PP_SEQ_ELEM_136
-# define BOOST_PP_SEQ_ELEM_138(_) BOOST_PP_SEQ_ELEM_137
-# define BOOST_PP_SEQ_ELEM_139(_) BOOST_PP_SEQ_ELEM_138
-# define BOOST_PP_SEQ_ELEM_140(_) BOOST_PP_SEQ_ELEM_139
-# define BOOST_PP_SEQ_ELEM_141(_) BOOST_PP_SEQ_ELEM_140
-# define BOOST_PP_SEQ_ELEM_142(_) BOOST_PP_SEQ_ELEM_141
-# define BOOST_PP_SEQ_ELEM_143(_) BOOST_PP_SEQ_ELEM_142
-# define BOOST_PP_SEQ_ELEM_144(_) BOOST_PP_SEQ_ELEM_143
-# define BOOST_PP_SEQ_ELEM_145(_) BOOST_PP_SEQ_ELEM_144
-# define BOOST_PP_SEQ_ELEM_146(_) BOOST_PP_SEQ_ELEM_145
-# define BOOST_PP_SEQ_ELEM_147(_) BOOST_PP_SEQ_ELEM_146
-# define BOOST_PP_SEQ_ELEM_148(_) BOOST_PP_SEQ_ELEM_147
-# define BOOST_PP_SEQ_ELEM_149(_) BOOST_PP_SEQ_ELEM_148
-# define BOOST_PP_SEQ_ELEM_150(_) BOOST_PP_SEQ_ELEM_149
-# define BOOST_PP_SEQ_ELEM_151(_) BOOST_PP_SEQ_ELEM_150
-# define BOOST_PP_SEQ_ELEM_152(_) BOOST_PP_SEQ_ELEM_151
-# define BOOST_PP_SEQ_ELEM_153(_) BOOST_PP_SEQ_ELEM_152
-# define BOOST_PP_SEQ_ELEM_154(_) BOOST_PP_SEQ_ELEM_153
-# define BOOST_PP_SEQ_ELEM_155(_) BOOST_PP_SEQ_ELEM_154
-# define BOOST_PP_SEQ_ELEM_156(_) BOOST_PP_SEQ_ELEM_155
-# define BOOST_PP_SEQ_ELEM_157(_) BOOST_PP_SEQ_ELEM_156
-# define BOOST_PP_SEQ_ELEM_158(_) BOOST_PP_SEQ_ELEM_157
-# define BOOST_PP_SEQ_ELEM_159(_) BOOST_PP_SEQ_ELEM_158
-# define BOOST_PP_SEQ_ELEM_160(_) BOOST_PP_SEQ_ELEM_159
-# define BOOST_PP_SEQ_ELEM_161(_) BOOST_PP_SEQ_ELEM_160
-# define BOOST_PP_SEQ_ELEM_162(_) BOOST_PP_SEQ_ELEM_161
-# define BOOST_PP_SEQ_ELEM_163(_) BOOST_PP_SEQ_ELEM_162
-# define BOOST_PP_SEQ_ELEM_164(_) BOOST_PP_SEQ_ELEM_163
-# define BOOST_PP_SEQ_ELEM_165(_) BOOST_PP_SEQ_ELEM_164
-# define BOOST_PP_SEQ_ELEM_166(_) BOOST_PP_SEQ_ELEM_165
-# define BOOST_PP_SEQ_ELEM_167(_) BOOST_PP_SEQ_ELEM_166
-# define BOOST_PP_SEQ_ELEM_168(_) BOOST_PP_SEQ_ELEM_167
-# define BOOST_PP_SEQ_ELEM_169(_) BOOST_PP_SEQ_ELEM_168
-# define BOOST_PP_SEQ_ELEM_170(_) BOOST_PP_SEQ_ELEM_169
-# define BOOST_PP_SEQ_ELEM_171(_) BOOST_PP_SEQ_ELEM_170
-# define BOOST_PP_SEQ_ELEM_172(_) BOOST_PP_SEQ_ELEM_171
-# define BOOST_PP_SEQ_ELEM_173(_) BOOST_PP_SEQ_ELEM_172
-# define BOOST_PP_SEQ_ELEM_174(_) BOOST_PP_SEQ_ELEM_173
-# define BOOST_PP_SEQ_ELEM_175(_) BOOST_PP_SEQ_ELEM_174
-# define BOOST_PP_SEQ_ELEM_176(_) BOOST_PP_SEQ_ELEM_175
-# define BOOST_PP_SEQ_ELEM_177(_) BOOST_PP_SEQ_ELEM_176
-# define BOOST_PP_SEQ_ELEM_178(_) BOOST_PP_SEQ_ELEM_177
-# define BOOST_PP_SEQ_ELEM_179(_) BOOST_PP_SEQ_ELEM_178
-# define BOOST_PP_SEQ_ELEM_180(_) BOOST_PP_SEQ_ELEM_179
-# define BOOST_PP_SEQ_ELEM_181(_) BOOST_PP_SEQ_ELEM_180
-# define BOOST_PP_SEQ_ELEM_182(_) BOOST_PP_SEQ_ELEM_181
-# define BOOST_PP_SEQ_ELEM_183(_) BOOST_PP_SEQ_ELEM_182
-# define BOOST_PP_SEQ_ELEM_184(_) BOOST_PP_SEQ_ELEM_183
-# define BOOST_PP_SEQ_ELEM_185(_) BOOST_PP_SEQ_ELEM_184
-# define BOOST_PP_SEQ_ELEM_186(_) BOOST_PP_SEQ_ELEM_185
-# define BOOST_PP_SEQ_ELEM_187(_) BOOST_PP_SEQ_ELEM_186
-# define BOOST_PP_SEQ_ELEM_188(_) BOOST_PP_SEQ_ELEM_187
-# define BOOST_PP_SEQ_ELEM_189(_) BOOST_PP_SEQ_ELEM_188
-# define BOOST_PP_SEQ_ELEM_190(_) BOOST_PP_SEQ_ELEM_189
-# define BOOST_PP_SEQ_ELEM_191(_) BOOST_PP_SEQ_ELEM_190
-# define BOOST_PP_SEQ_ELEM_192(_) BOOST_PP_SEQ_ELEM_191
-# define BOOST_PP_SEQ_ELEM_193(_) BOOST_PP_SEQ_ELEM_192
-# define BOOST_PP_SEQ_ELEM_194(_) BOOST_PP_SEQ_ELEM_193
-# define BOOST_PP_SEQ_ELEM_195(_) BOOST_PP_SEQ_ELEM_194
-# define BOOST_PP_SEQ_ELEM_196(_) BOOST_PP_SEQ_ELEM_195
-# define BOOST_PP_SEQ_ELEM_197(_) BOOST_PP_SEQ_ELEM_196
-# define BOOST_PP_SEQ_ELEM_198(_) BOOST_PP_SEQ_ELEM_197
-# define BOOST_PP_SEQ_ELEM_199(_) BOOST_PP_SEQ_ELEM_198
-# define BOOST_PP_SEQ_ELEM_200(_) BOOST_PP_SEQ_ELEM_199
-# define BOOST_PP_SEQ_ELEM_201(_) BOOST_PP_SEQ_ELEM_200
-# define BOOST_PP_SEQ_ELEM_202(_) BOOST_PP_SEQ_ELEM_201
-# define BOOST_PP_SEQ_ELEM_203(_) BOOST_PP_SEQ_ELEM_202
-# define BOOST_PP_SEQ_ELEM_204(_) BOOST_PP_SEQ_ELEM_203
-# define BOOST_PP_SEQ_ELEM_205(_) BOOST_PP_SEQ_ELEM_204
-# define BOOST_PP_SEQ_ELEM_206(_) BOOST_PP_SEQ_ELEM_205
-# define BOOST_PP_SEQ_ELEM_207(_) BOOST_PP_SEQ_ELEM_206
-# define BOOST_PP_SEQ_ELEM_208(_) BOOST_PP_SEQ_ELEM_207
-# define BOOST_PP_SEQ_ELEM_209(_) BOOST_PP_SEQ_ELEM_208
-# define BOOST_PP_SEQ_ELEM_210(_) BOOST_PP_SEQ_ELEM_209
-# define BOOST_PP_SEQ_ELEM_211(_) BOOST_PP_SEQ_ELEM_210
-# define BOOST_PP_SEQ_ELEM_212(_) BOOST_PP_SEQ_ELEM_211
-# define BOOST_PP_SEQ_ELEM_213(_) BOOST_PP_SEQ_ELEM_212
-# define BOOST_PP_SEQ_ELEM_214(_) BOOST_PP_SEQ_ELEM_213
-# define BOOST_PP_SEQ_ELEM_215(_) BOOST_PP_SEQ_ELEM_214
-# define BOOST_PP_SEQ_ELEM_216(_) BOOST_PP_SEQ_ELEM_215
-# define BOOST_PP_SEQ_ELEM_217(_) BOOST_PP_SEQ_ELEM_216
-# define BOOST_PP_SEQ_ELEM_218(_) BOOST_PP_SEQ_ELEM_217
-# define BOOST_PP_SEQ_ELEM_219(_) BOOST_PP_SEQ_ELEM_218
-# define BOOST_PP_SEQ_ELEM_220(_) BOOST_PP_SEQ_ELEM_219
-# define BOOST_PP_SEQ_ELEM_221(_) BOOST_PP_SEQ_ELEM_220
-# define BOOST_PP_SEQ_ELEM_222(_) BOOST_PP_SEQ_ELEM_221
-# define BOOST_PP_SEQ_ELEM_223(_) BOOST_PP_SEQ_ELEM_222
-# define BOOST_PP_SEQ_ELEM_224(_) BOOST_PP_SEQ_ELEM_223
-# define BOOST_PP_SEQ_ELEM_225(_) BOOST_PP_SEQ_ELEM_224
-# define BOOST_PP_SEQ_ELEM_226(_) BOOST_PP_SEQ_ELEM_225
-# define BOOST_PP_SEQ_ELEM_227(_) BOOST_PP_SEQ_ELEM_226
-# define BOOST_PP_SEQ_ELEM_228(_) BOOST_PP_SEQ_ELEM_227
-# define BOOST_PP_SEQ_ELEM_229(_) BOOST_PP_SEQ_ELEM_228
-# define BOOST_PP_SEQ_ELEM_230(_) BOOST_PP_SEQ_ELEM_229
-# define BOOST_PP_SEQ_ELEM_231(_) BOOST_PP_SEQ_ELEM_230
-# define BOOST_PP_SEQ_ELEM_232(_) BOOST_PP_SEQ_ELEM_231
-# define BOOST_PP_SEQ_ELEM_233(_) BOOST_PP_SEQ_ELEM_232
-# define BOOST_PP_SEQ_ELEM_234(_) BOOST_PP_SEQ_ELEM_233
-# define BOOST_PP_SEQ_ELEM_235(_) BOOST_PP_SEQ_ELEM_234
-# define BOOST_PP_SEQ_ELEM_236(_) BOOST_PP_SEQ_ELEM_235
-# define BOOST_PP_SEQ_ELEM_237(_) BOOST_PP_SEQ_ELEM_236
-# define BOOST_PP_SEQ_ELEM_238(_) BOOST_PP_SEQ_ELEM_237
-# define BOOST_PP_SEQ_ELEM_239(_) BOOST_PP_SEQ_ELEM_238
-# define BOOST_PP_SEQ_ELEM_240(_) BOOST_PP_SEQ_ELEM_239
-# define BOOST_PP_SEQ_ELEM_241(_) BOOST_PP_SEQ_ELEM_240
-# define BOOST_PP_SEQ_ELEM_242(_) BOOST_PP_SEQ_ELEM_241
-# define BOOST_PP_SEQ_ELEM_243(_) BOOST_PP_SEQ_ELEM_242
-# define BOOST_PP_SEQ_ELEM_244(_) BOOST_PP_SEQ_ELEM_243
-# define BOOST_PP_SEQ_ELEM_245(_) BOOST_PP_SEQ_ELEM_244
-# define BOOST_PP_SEQ_ELEM_246(_) BOOST_PP_SEQ_ELEM_245
-# define BOOST_PP_SEQ_ELEM_247(_) BOOST_PP_SEQ_ELEM_246
-# define BOOST_PP_SEQ_ELEM_248(_) BOOST_PP_SEQ_ELEM_247
-# define BOOST_PP_SEQ_ELEM_249(_) BOOST_PP_SEQ_ELEM_248
-# define BOOST_PP_SEQ_ELEM_250(_) BOOST_PP_SEQ_ELEM_249
-# define BOOST_PP_SEQ_ELEM_251(_) BOOST_PP_SEQ_ELEM_250
-# define BOOST_PP_SEQ_ELEM_252(_) BOOST_PP_SEQ_ELEM_251
-# define BOOST_PP_SEQ_ELEM_253(_) BOOST_PP_SEQ_ELEM_252
-# define BOOST_PP_SEQ_ELEM_254(_) BOOST_PP_SEQ_ELEM_253
-# define BOOST_PP_SEQ_ELEM_255(_) BOOST_PP_SEQ_ELEM_254
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/seq/first_n.hpp b/libcutl/cutl/details/boost/preprocessor/seq/first_n.hpp
deleted file mode 100644
index 0831c98..0000000
--- a/libcutl/cutl/details/boost/preprocessor/seq/first_n.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP
-# define BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/control/if.hpp>
-# include <cutl/details/boost/preprocessor/seq/detail/split.hpp>
-# include <cutl/details/boost/preprocessor/tuple/eat.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-#
-# /* BOOST_PP_SEQ_FIRST_N */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil)))
-# else
-# define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_SEQ_FIRST_N_I(n, seq)
-# define BOOST_PP_SEQ_FIRST_N_I(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil)))
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/seq/fold_left.hpp b/libcutl/cutl/details/boost/preprocessor/seq/fold_left.hpp
deleted file mode 100644
index 3081792..0000000
--- a/libcutl/cutl/details/boost/preprocessor/seq/fold_left.hpp
+++ /dev/null
@@ -1,1070 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
-# define BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
-#
-# include <cutl/details/boost/preprocessor/arithmetic/dec.hpp>
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/control/if.hpp>
-# include <cutl/details/boost/preprocessor/debug/error.hpp>
-# include <cutl/details/boost/preprocessor/detail/auto_rec.hpp>
-# include <cutl/details/boost/preprocessor/seq/seq.hpp>
-# include <cutl/details/boost/preprocessor/seq/size.hpp>
-#
-# /* BOOST_PP_SEQ_FOLD_LEFT */
-#
-# if 0
-# define BOOST_PP_SEQ_FOLD_LEFT(op, state, seq) ...
-# endif
-#
-# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))
-# define BOOST_PP_SEQ_FOLD_LEFT_P(n) BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_CHECK_, BOOST_PP_SEQ_FOLD_LEFT_I_ ## n(BOOST_PP_SEQ_FOLD_LEFT_O, BOOST_PP_NIL, (nil), 1))
-# define BOOST_PP_SEQ_FOLD_LEFT_O(s, st, _) st
-#
-# define BOOST_PP_SEQ_FOLD_LEFT_257(op, st, ss) BOOST_PP_ERROR(0x0005)
-# define BOOST_PP_SEQ_FOLD_LEFT_I_257(op, st, ss, sz) BOOST_PP_ERROR(0x0005)
-#
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
-#
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) 0
-# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) 0
-#
-# define BOOST_PP_SEQ_FOLD_LEFT_F(op, st, ss, sz) st
-#
-# define BOOST_PP_SEQ_FOLD_LEFT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_4(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_5(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_6(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_7(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_8(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_9(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_10(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_11(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_12(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_13(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_14(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_15(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_16(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_17(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_18(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_19(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_20(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_21(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_22(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_23(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_24(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_25(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_26(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_27(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_28(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_29(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_30(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_31(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_32(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_33(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_34(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_35(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_36(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_37(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_38(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_39(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_40(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_41(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_42(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_43(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_44(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_45(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_46(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_47(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_48(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_49(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_50(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_51(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_52(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_53(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_54(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_55(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_56(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_57(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_58(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_59(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_60(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_61(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_62(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_63(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_64(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_65(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_66(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_67(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_68(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_69(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_70(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_71(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_72(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_73(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_74(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_75(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_76(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_77(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_78(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_79(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_80(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_81(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_82(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_83(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_84(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_85(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_86(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_87(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_88(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_89(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_90(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_91(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_92(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_93(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_94(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_95(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_96(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_97(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_98(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_99(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_100(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_101(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_102(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_103(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_104(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_105(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_106(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_107(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_108(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_109(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_110(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_111(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_112(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_113(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_114(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_115(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_116(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_117(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_118(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_119(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_120(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_121(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_122(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_123(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_124(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_125(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_126(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_127(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_128(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_129(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_130(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_131(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_132(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_133(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_134(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_135(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_136(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_137(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_138(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_139(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_140(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_141(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_142(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_143(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_144(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_145(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_146(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_147(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_148(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_149(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_150(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_151(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_152(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_153(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_154(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_155(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_156(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_157(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_158(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_159(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_160(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_161(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_162(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_163(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_164(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_165(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_166(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_167(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_168(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_169(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_170(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_171(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_172(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_173(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_174(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_175(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_176(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_177(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_178(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_179(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_180(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_181(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_182(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_183(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_184(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_185(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_186(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_187(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_188(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_189(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_190(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_191(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_192(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_193(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_194(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_195(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_196(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_197(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_198(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_199(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_200(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_201(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_202(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_203(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_204(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_205(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_206(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_207(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_208(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_209(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_210(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_211(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_212(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_213(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_214(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_215(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_216(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_217(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_218(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_219(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_220(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_221(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_222(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_223(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_224(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_225(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_226(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_227(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_228(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_229(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_230(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_231(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_232(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_233(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_234(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_235(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_236(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_237(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_238(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_239(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_240(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_241(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_242(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_243(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_244(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_245(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_246(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_247(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_248(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_249(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_250(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_251(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_252(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_253(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_254(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_255(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-# define BOOST_PP_SEQ_FOLD_LEFT_256(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
-# define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# else
-# define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/seq/rest_n.hpp b/libcutl/cutl/details/boost/preprocessor/seq/rest_n.hpp
deleted file mode 100644
index bbade56..0000000
--- a/libcutl/cutl/details/boost/preprocessor/seq/rest_n.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_SEQ_REST_N_HPP
-# define BOOST_PREPROCESSOR_SEQ_REST_N_HPP
-#
-# include <cutl/details/boost/preprocessor/arithmetic/inc.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/facilities/empty.hpp>
-# include <cutl/details/boost/preprocessor/seq/detail/split.hpp>
-# include <cutl/details/boost/preprocessor/tuple/elem.hpp>
-#
-# /* BOOST_PP_SEQ_REST_N */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_SEQ_REST_N(n, seq) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), (nil) seq BOOST_PP_EMPTY))()
-# else
-# define BOOST_PP_SEQ_REST_N(n, seq) BOOST_PP_SEQ_REST_N_I(n, seq)
-# define BOOST_PP_SEQ_REST_N_I(n, seq) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), (nil) seq BOOST_PP_EMPTY))()
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/seq/seq.hpp b/libcutl/cutl/details/boost/preprocessor/seq/seq.hpp
deleted file mode 100644
index a2354c5..0000000
--- a/libcutl/cutl/details/boost/preprocessor/seq/seq.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_SEQ_SEQ_HPP
-# define BOOST_PREPROCESSOR_SEQ_SEQ_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/seq/elem.hpp>
-#
-# /* BOOST_PP_SEQ_HEAD */
-#
-# define BOOST_PP_SEQ_HEAD(seq) BOOST_PP_SEQ_ELEM(0, seq)
-#
-# /* BOOST_PP_SEQ_TAIL */
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_1((seq))
-# define BOOST_PP_SEQ_TAIL_1(par) BOOST_PP_SEQ_TAIL_2 ## par
-# define BOOST_PP_SEQ_TAIL_2(seq) BOOST_PP_SEQ_TAIL_I ## seq
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_ID(BOOST_PP_SEQ_TAIL_I seq)
-# define BOOST_PP_SEQ_TAIL_ID(id) id
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_D(seq)
-# define BOOST_PP_SEQ_TAIL_D(seq) BOOST_PP_SEQ_TAIL_I seq
-# else
-# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_I seq
-# endif
-#
-# define BOOST_PP_SEQ_TAIL_I(x)
-#
-# /* BOOST_PP_SEQ_NIL */
-#
-# define BOOST_PP_SEQ_NIL(x) (x)
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/seq/size.hpp b/libcutl/cutl/details/boost/preprocessor/seq/size.hpp
deleted file mode 100644
index b26348a..0000000
--- a/libcutl/cutl/details/boost/preprocessor/seq/size.hpp
+++ /dev/null
@@ -1,547 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_SEQ_SIZE_HPP
-# define BOOST_PREPROCESSOR_SEQ_SIZE_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_SEQ_SIZE_I((seq))
-# define BOOST_PP_SEQ_SIZE_I(par) BOOST_PP_SEQ_SIZE_II ## par
-# define BOOST_PP_SEQ_SIZE_II(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 ## seq)
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() || BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_SEQ_SIZE_I(seq)
-# define BOOST_PP_SEQ_SIZE_I(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq)
-# elif defined(__IBMC__) || defined(__IBMCPP__)
-# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq))
-# else
-# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq)
-# endif
-#
-# define BOOST_PP_SEQ_SIZE_0(_) BOOST_PP_SEQ_SIZE_1
-# define BOOST_PP_SEQ_SIZE_1(_) BOOST_PP_SEQ_SIZE_2
-# define BOOST_PP_SEQ_SIZE_2(_) BOOST_PP_SEQ_SIZE_3
-# define BOOST_PP_SEQ_SIZE_3(_) BOOST_PP_SEQ_SIZE_4
-# define BOOST_PP_SEQ_SIZE_4(_) BOOST_PP_SEQ_SIZE_5
-# define BOOST_PP_SEQ_SIZE_5(_) BOOST_PP_SEQ_SIZE_6
-# define BOOST_PP_SEQ_SIZE_6(_) BOOST_PP_SEQ_SIZE_7
-# define BOOST_PP_SEQ_SIZE_7(_) BOOST_PP_SEQ_SIZE_8
-# define BOOST_PP_SEQ_SIZE_8(_) BOOST_PP_SEQ_SIZE_9
-# define BOOST_PP_SEQ_SIZE_9(_) BOOST_PP_SEQ_SIZE_10
-# define BOOST_PP_SEQ_SIZE_10(_) BOOST_PP_SEQ_SIZE_11
-# define BOOST_PP_SEQ_SIZE_11(_) BOOST_PP_SEQ_SIZE_12
-# define BOOST_PP_SEQ_SIZE_12(_) BOOST_PP_SEQ_SIZE_13
-# define BOOST_PP_SEQ_SIZE_13(_) BOOST_PP_SEQ_SIZE_14
-# define BOOST_PP_SEQ_SIZE_14(_) BOOST_PP_SEQ_SIZE_15
-# define BOOST_PP_SEQ_SIZE_15(_) BOOST_PP_SEQ_SIZE_16
-# define BOOST_PP_SEQ_SIZE_16(_) BOOST_PP_SEQ_SIZE_17
-# define BOOST_PP_SEQ_SIZE_17(_) BOOST_PP_SEQ_SIZE_18
-# define BOOST_PP_SEQ_SIZE_18(_) BOOST_PP_SEQ_SIZE_19
-# define BOOST_PP_SEQ_SIZE_19(_) BOOST_PP_SEQ_SIZE_20
-# define BOOST_PP_SEQ_SIZE_20(_) BOOST_PP_SEQ_SIZE_21
-# define BOOST_PP_SEQ_SIZE_21(_) BOOST_PP_SEQ_SIZE_22
-# define BOOST_PP_SEQ_SIZE_22(_) BOOST_PP_SEQ_SIZE_23
-# define BOOST_PP_SEQ_SIZE_23(_) BOOST_PP_SEQ_SIZE_24
-# define BOOST_PP_SEQ_SIZE_24(_) BOOST_PP_SEQ_SIZE_25
-# define BOOST_PP_SEQ_SIZE_25(_) BOOST_PP_SEQ_SIZE_26
-# define BOOST_PP_SEQ_SIZE_26(_) BOOST_PP_SEQ_SIZE_27
-# define BOOST_PP_SEQ_SIZE_27(_) BOOST_PP_SEQ_SIZE_28
-# define BOOST_PP_SEQ_SIZE_28(_) BOOST_PP_SEQ_SIZE_29
-# define BOOST_PP_SEQ_SIZE_29(_) BOOST_PP_SEQ_SIZE_30
-# define BOOST_PP_SEQ_SIZE_30(_) BOOST_PP_SEQ_SIZE_31
-# define BOOST_PP_SEQ_SIZE_31(_) BOOST_PP_SEQ_SIZE_32
-# define BOOST_PP_SEQ_SIZE_32(_) BOOST_PP_SEQ_SIZE_33
-# define BOOST_PP_SEQ_SIZE_33(_) BOOST_PP_SEQ_SIZE_34
-# define BOOST_PP_SEQ_SIZE_34(_) BOOST_PP_SEQ_SIZE_35
-# define BOOST_PP_SEQ_SIZE_35(_) BOOST_PP_SEQ_SIZE_36
-# define BOOST_PP_SEQ_SIZE_36(_) BOOST_PP_SEQ_SIZE_37
-# define BOOST_PP_SEQ_SIZE_37(_) BOOST_PP_SEQ_SIZE_38
-# define BOOST_PP_SEQ_SIZE_38(_) BOOST_PP_SEQ_SIZE_39
-# define BOOST_PP_SEQ_SIZE_39(_) BOOST_PP_SEQ_SIZE_40
-# define BOOST_PP_SEQ_SIZE_40(_) BOOST_PP_SEQ_SIZE_41
-# define BOOST_PP_SEQ_SIZE_41(_) BOOST_PP_SEQ_SIZE_42
-# define BOOST_PP_SEQ_SIZE_42(_) BOOST_PP_SEQ_SIZE_43
-# define BOOST_PP_SEQ_SIZE_43(_) BOOST_PP_SEQ_SIZE_44
-# define BOOST_PP_SEQ_SIZE_44(_) BOOST_PP_SEQ_SIZE_45
-# define BOOST_PP_SEQ_SIZE_45(_) BOOST_PP_SEQ_SIZE_46
-# define BOOST_PP_SEQ_SIZE_46(_) BOOST_PP_SEQ_SIZE_47
-# define BOOST_PP_SEQ_SIZE_47(_) BOOST_PP_SEQ_SIZE_48
-# define BOOST_PP_SEQ_SIZE_48(_) BOOST_PP_SEQ_SIZE_49
-# define BOOST_PP_SEQ_SIZE_49(_) BOOST_PP_SEQ_SIZE_50
-# define BOOST_PP_SEQ_SIZE_50(_) BOOST_PP_SEQ_SIZE_51
-# define BOOST_PP_SEQ_SIZE_51(_) BOOST_PP_SEQ_SIZE_52
-# define BOOST_PP_SEQ_SIZE_52(_) BOOST_PP_SEQ_SIZE_53
-# define BOOST_PP_SEQ_SIZE_53(_) BOOST_PP_SEQ_SIZE_54
-# define BOOST_PP_SEQ_SIZE_54(_) BOOST_PP_SEQ_SIZE_55
-# define BOOST_PP_SEQ_SIZE_55(_) BOOST_PP_SEQ_SIZE_56
-# define BOOST_PP_SEQ_SIZE_56(_) BOOST_PP_SEQ_SIZE_57
-# define BOOST_PP_SEQ_SIZE_57(_) BOOST_PP_SEQ_SIZE_58
-# define BOOST_PP_SEQ_SIZE_58(_) BOOST_PP_SEQ_SIZE_59
-# define BOOST_PP_SEQ_SIZE_59(_) BOOST_PP_SEQ_SIZE_60
-# define BOOST_PP_SEQ_SIZE_60(_) BOOST_PP_SEQ_SIZE_61
-# define BOOST_PP_SEQ_SIZE_61(_) BOOST_PP_SEQ_SIZE_62
-# define BOOST_PP_SEQ_SIZE_62(_) BOOST_PP_SEQ_SIZE_63
-# define BOOST_PP_SEQ_SIZE_63(_) BOOST_PP_SEQ_SIZE_64
-# define BOOST_PP_SEQ_SIZE_64(_) BOOST_PP_SEQ_SIZE_65
-# define BOOST_PP_SEQ_SIZE_65(_) BOOST_PP_SEQ_SIZE_66
-# define BOOST_PP_SEQ_SIZE_66(_) BOOST_PP_SEQ_SIZE_67
-# define BOOST_PP_SEQ_SIZE_67(_) BOOST_PP_SEQ_SIZE_68
-# define BOOST_PP_SEQ_SIZE_68(_) BOOST_PP_SEQ_SIZE_69
-# define BOOST_PP_SEQ_SIZE_69(_) BOOST_PP_SEQ_SIZE_70
-# define BOOST_PP_SEQ_SIZE_70(_) BOOST_PP_SEQ_SIZE_71
-# define BOOST_PP_SEQ_SIZE_71(_) BOOST_PP_SEQ_SIZE_72
-# define BOOST_PP_SEQ_SIZE_72(_) BOOST_PP_SEQ_SIZE_73
-# define BOOST_PP_SEQ_SIZE_73(_) BOOST_PP_SEQ_SIZE_74
-# define BOOST_PP_SEQ_SIZE_74(_) BOOST_PP_SEQ_SIZE_75
-# define BOOST_PP_SEQ_SIZE_75(_) BOOST_PP_SEQ_SIZE_76
-# define BOOST_PP_SEQ_SIZE_76(_) BOOST_PP_SEQ_SIZE_77
-# define BOOST_PP_SEQ_SIZE_77(_) BOOST_PP_SEQ_SIZE_78
-# define BOOST_PP_SEQ_SIZE_78(_) BOOST_PP_SEQ_SIZE_79
-# define BOOST_PP_SEQ_SIZE_79(_) BOOST_PP_SEQ_SIZE_80
-# define BOOST_PP_SEQ_SIZE_80(_) BOOST_PP_SEQ_SIZE_81
-# define BOOST_PP_SEQ_SIZE_81(_) BOOST_PP_SEQ_SIZE_82
-# define BOOST_PP_SEQ_SIZE_82(_) BOOST_PP_SEQ_SIZE_83
-# define BOOST_PP_SEQ_SIZE_83(_) BOOST_PP_SEQ_SIZE_84
-# define BOOST_PP_SEQ_SIZE_84(_) BOOST_PP_SEQ_SIZE_85
-# define BOOST_PP_SEQ_SIZE_85(_) BOOST_PP_SEQ_SIZE_86
-# define BOOST_PP_SEQ_SIZE_86(_) BOOST_PP_SEQ_SIZE_87
-# define BOOST_PP_SEQ_SIZE_87(_) BOOST_PP_SEQ_SIZE_88
-# define BOOST_PP_SEQ_SIZE_88(_) BOOST_PP_SEQ_SIZE_89
-# define BOOST_PP_SEQ_SIZE_89(_) BOOST_PP_SEQ_SIZE_90
-# define BOOST_PP_SEQ_SIZE_90(_) BOOST_PP_SEQ_SIZE_91
-# define BOOST_PP_SEQ_SIZE_91(_) BOOST_PP_SEQ_SIZE_92
-# define BOOST_PP_SEQ_SIZE_92(_) BOOST_PP_SEQ_SIZE_93
-# define BOOST_PP_SEQ_SIZE_93(_) BOOST_PP_SEQ_SIZE_94
-# define BOOST_PP_SEQ_SIZE_94(_) BOOST_PP_SEQ_SIZE_95
-# define BOOST_PP_SEQ_SIZE_95(_) BOOST_PP_SEQ_SIZE_96
-# define BOOST_PP_SEQ_SIZE_96(_) BOOST_PP_SEQ_SIZE_97
-# define BOOST_PP_SEQ_SIZE_97(_) BOOST_PP_SEQ_SIZE_98
-# define BOOST_PP_SEQ_SIZE_98(_) BOOST_PP_SEQ_SIZE_99
-# define BOOST_PP_SEQ_SIZE_99(_) BOOST_PP_SEQ_SIZE_100
-# define BOOST_PP_SEQ_SIZE_100(_) BOOST_PP_SEQ_SIZE_101
-# define BOOST_PP_SEQ_SIZE_101(_) BOOST_PP_SEQ_SIZE_102
-# define BOOST_PP_SEQ_SIZE_102(_) BOOST_PP_SEQ_SIZE_103
-# define BOOST_PP_SEQ_SIZE_103(_) BOOST_PP_SEQ_SIZE_104
-# define BOOST_PP_SEQ_SIZE_104(_) BOOST_PP_SEQ_SIZE_105
-# define BOOST_PP_SEQ_SIZE_105(_) BOOST_PP_SEQ_SIZE_106
-# define BOOST_PP_SEQ_SIZE_106(_) BOOST_PP_SEQ_SIZE_107
-# define BOOST_PP_SEQ_SIZE_107(_) BOOST_PP_SEQ_SIZE_108
-# define BOOST_PP_SEQ_SIZE_108(_) BOOST_PP_SEQ_SIZE_109
-# define BOOST_PP_SEQ_SIZE_109(_) BOOST_PP_SEQ_SIZE_110
-# define BOOST_PP_SEQ_SIZE_110(_) BOOST_PP_SEQ_SIZE_111
-# define BOOST_PP_SEQ_SIZE_111(_) BOOST_PP_SEQ_SIZE_112
-# define BOOST_PP_SEQ_SIZE_112(_) BOOST_PP_SEQ_SIZE_113
-# define BOOST_PP_SEQ_SIZE_113(_) BOOST_PP_SEQ_SIZE_114
-# define BOOST_PP_SEQ_SIZE_114(_) BOOST_PP_SEQ_SIZE_115
-# define BOOST_PP_SEQ_SIZE_115(_) BOOST_PP_SEQ_SIZE_116
-# define BOOST_PP_SEQ_SIZE_116(_) BOOST_PP_SEQ_SIZE_117
-# define BOOST_PP_SEQ_SIZE_117(_) BOOST_PP_SEQ_SIZE_118
-# define BOOST_PP_SEQ_SIZE_118(_) BOOST_PP_SEQ_SIZE_119
-# define BOOST_PP_SEQ_SIZE_119(_) BOOST_PP_SEQ_SIZE_120
-# define BOOST_PP_SEQ_SIZE_120(_) BOOST_PP_SEQ_SIZE_121
-# define BOOST_PP_SEQ_SIZE_121(_) BOOST_PP_SEQ_SIZE_122
-# define BOOST_PP_SEQ_SIZE_122(_) BOOST_PP_SEQ_SIZE_123
-# define BOOST_PP_SEQ_SIZE_123(_) BOOST_PP_SEQ_SIZE_124
-# define BOOST_PP_SEQ_SIZE_124(_) BOOST_PP_SEQ_SIZE_125
-# define BOOST_PP_SEQ_SIZE_125(_) BOOST_PP_SEQ_SIZE_126
-# define BOOST_PP_SEQ_SIZE_126(_) BOOST_PP_SEQ_SIZE_127
-# define BOOST_PP_SEQ_SIZE_127(_) BOOST_PP_SEQ_SIZE_128
-# define BOOST_PP_SEQ_SIZE_128(_) BOOST_PP_SEQ_SIZE_129
-# define BOOST_PP_SEQ_SIZE_129(_) BOOST_PP_SEQ_SIZE_130
-# define BOOST_PP_SEQ_SIZE_130(_) BOOST_PP_SEQ_SIZE_131
-# define BOOST_PP_SEQ_SIZE_131(_) BOOST_PP_SEQ_SIZE_132
-# define BOOST_PP_SEQ_SIZE_132(_) BOOST_PP_SEQ_SIZE_133
-# define BOOST_PP_SEQ_SIZE_133(_) BOOST_PP_SEQ_SIZE_134
-# define BOOST_PP_SEQ_SIZE_134(_) BOOST_PP_SEQ_SIZE_135
-# define BOOST_PP_SEQ_SIZE_135(_) BOOST_PP_SEQ_SIZE_136
-# define BOOST_PP_SEQ_SIZE_136(_) BOOST_PP_SEQ_SIZE_137
-# define BOOST_PP_SEQ_SIZE_137(_) BOOST_PP_SEQ_SIZE_138
-# define BOOST_PP_SEQ_SIZE_138(_) BOOST_PP_SEQ_SIZE_139
-# define BOOST_PP_SEQ_SIZE_139(_) BOOST_PP_SEQ_SIZE_140
-# define BOOST_PP_SEQ_SIZE_140(_) BOOST_PP_SEQ_SIZE_141
-# define BOOST_PP_SEQ_SIZE_141(_) BOOST_PP_SEQ_SIZE_142
-# define BOOST_PP_SEQ_SIZE_142(_) BOOST_PP_SEQ_SIZE_143
-# define BOOST_PP_SEQ_SIZE_143(_) BOOST_PP_SEQ_SIZE_144
-# define BOOST_PP_SEQ_SIZE_144(_) BOOST_PP_SEQ_SIZE_145
-# define BOOST_PP_SEQ_SIZE_145(_) BOOST_PP_SEQ_SIZE_146
-# define BOOST_PP_SEQ_SIZE_146(_) BOOST_PP_SEQ_SIZE_147
-# define BOOST_PP_SEQ_SIZE_147(_) BOOST_PP_SEQ_SIZE_148
-# define BOOST_PP_SEQ_SIZE_148(_) BOOST_PP_SEQ_SIZE_149
-# define BOOST_PP_SEQ_SIZE_149(_) BOOST_PP_SEQ_SIZE_150
-# define BOOST_PP_SEQ_SIZE_150(_) BOOST_PP_SEQ_SIZE_151
-# define BOOST_PP_SEQ_SIZE_151(_) BOOST_PP_SEQ_SIZE_152
-# define BOOST_PP_SEQ_SIZE_152(_) BOOST_PP_SEQ_SIZE_153
-# define BOOST_PP_SEQ_SIZE_153(_) BOOST_PP_SEQ_SIZE_154
-# define BOOST_PP_SEQ_SIZE_154(_) BOOST_PP_SEQ_SIZE_155
-# define BOOST_PP_SEQ_SIZE_155(_) BOOST_PP_SEQ_SIZE_156
-# define BOOST_PP_SEQ_SIZE_156(_) BOOST_PP_SEQ_SIZE_157
-# define BOOST_PP_SEQ_SIZE_157(_) BOOST_PP_SEQ_SIZE_158
-# define BOOST_PP_SEQ_SIZE_158(_) BOOST_PP_SEQ_SIZE_159
-# define BOOST_PP_SEQ_SIZE_159(_) BOOST_PP_SEQ_SIZE_160
-# define BOOST_PP_SEQ_SIZE_160(_) BOOST_PP_SEQ_SIZE_161
-# define BOOST_PP_SEQ_SIZE_161(_) BOOST_PP_SEQ_SIZE_162
-# define BOOST_PP_SEQ_SIZE_162(_) BOOST_PP_SEQ_SIZE_163
-# define BOOST_PP_SEQ_SIZE_163(_) BOOST_PP_SEQ_SIZE_164
-# define BOOST_PP_SEQ_SIZE_164(_) BOOST_PP_SEQ_SIZE_165
-# define BOOST_PP_SEQ_SIZE_165(_) BOOST_PP_SEQ_SIZE_166
-# define BOOST_PP_SEQ_SIZE_166(_) BOOST_PP_SEQ_SIZE_167
-# define BOOST_PP_SEQ_SIZE_167(_) BOOST_PP_SEQ_SIZE_168
-# define BOOST_PP_SEQ_SIZE_168(_) BOOST_PP_SEQ_SIZE_169
-# define BOOST_PP_SEQ_SIZE_169(_) BOOST_PP_SEQ_SIZE_170
-# define BOOST_PP_SEQ_SIZE_170(_) BOOST_PP_SEQ_SIZE_171
-# define BOOST_PP_SEQ_SIZE_171(_) BOOST_PP_SEQ_SIZE_172
-# define BOOST_PP_SEQ_SIZE_172(_) BOOST_PP_SEQ_SIZE_173
-# define BOOST_PP_SEQ_SIZE_173(_) BOOST_PP_SEQ_SIZE_174
-# define BOOST_PP_SEQ_SIZE_174(_) BOOST_PP_SEQ_SIZE_175
-# define BOOST_PP_SEQ_SIZE_175(_) BOOST_PP_SEQ_SIZE_176
-# define BOOST_PP_SEQ_SIZE_176(_) BOOST_PP_SEQ_SIZE_177
-# define BOOST_PP_SEQ_SIZE_177(_) BOOST_PP_SEQ_SIZE_178
-# define BOOST_PP_SEQ_SIZE_178(_) BOOST_PP_SEQ_SIZE_179
-# define BOOST_PP_SEQ_SIZE_179(_) BOOST_PP_SEQ_SIZE_180
-# define BOOST_PP_SEQ_SIZE_180(_) BOOST_PP_SEQ_SIZE_181
-# define BOOST_PP_SEQ_SIZE_181(_) BOOST_PP_SEQ_SIZE_182
-# define BOOST_PP_SEQ_SIZE_182(_) BOOST_PP_SEQ_SIZE_183
-# define BOOST_PP_SEQ_SIZE_183(_) BOOST_PP_SEQ_SIZE_184
-# define BOOST_PP_SEQ_SIZE_184(_) BOOST_PP_SEQ_SIZE_185
-# define BOOST_PP_SEQ_SIZE_185(_) BOOST_PP_SEQ_SIZE_186
-# define BOOST_PP_SEQ_SIZE_186(_) BOOST_PP_SEQ_SIZE_187
-# define BOOST_PP_SEQ_SIZE_187(_) BOOST_PP_SEQ_SIZE_188
-# define BOOST_PP_SEQ_SIZE_188(_) BOOST_PP_SEQ_SIZE_189
-# define BOOST_PP_SEQ_SIZE_189(_) BOOST_PP_SEQ_SIZE_190
-# define BOOST_PP_SEQ_SIZE_190(_) BOOST_PP_SEQ_SIZE_191
-# define BOOST_PP_SEQ_SIZE_191(_) BOOST_PP_SEQ_SIZE_192
-# define BOOST_PP_SEQ_SIZE_192(_) BOOST_PP_SEQ_SIZE_193
-# define BOOST_PP_SEQ_SIZE_193(_) BOOST_PP_SEQ_SIZE_194
-# define BOOST_PP_SEQ_SIZE_194(_) BOOST_PP_SEQ_SIZE_195
-# define BOOST_PP_SEQ_SIZE_195(_) BOOST_PP_SEQ_SIZE_196
-# define BOOST_PP_SEQ_SIZE_196(_) BOOST_PP_SEQ_SIZE_197
-# define BOOST_PP_SEQ_SIZE_197(_) BOOST_PP_SEQ_SIZE_198
-# define BOOST_PP_SEQ_SIZE_198(_) BOOST_PP_SEQ_SIZE_199
-# define BOOST_PP_SEQ_SIZE_199(_) BOOST_PP_SEQ_SIZE_200
-# define BOOST_PP_SEQ_SIZE_200(_) BOOST_PP_SEQ_SIZE_201
-# define BOOST_PP_SEQ_SIZE_201(_) BOOST_PP_SEQ_SIZE_202
-# define BOOST_PP_SEQ_SIZE_202(_) BOOST_PP_SEQ_SIZE_203
-# define BOOST_PP_SEQ_SIZE_203(_) BOOST_PP_SEQ_SIZE_204
-# define BOOST_PP_SEQ_SIZE_204(_) BOOST_PP_SEQ_SIZE_205
-# define BOOST_PP_SEQ_SIZE_205(_) BOOST_PP_SEQ_SIZE_206
-# define BOOST_PP_SEQ_SIZE_206(_) BOOST_PP_SEQ_SIZE_207
-# define BOOST_PP_SEQ_SIZE_207(_) BOOST_PP_SEQ_SIZE_208
-# define BOOST_PP_SEQ_SIZE_208(_) BOOST_PP_SEQ_SIZE_209
-# define BOOST_PP_SEQ_SIZE_209(_) BOOST_PP_SEQ_SIZE_210
-# define BOOST_PP_SEQ_SIZE_210(_) BOOST_PP_SEQ_SIZE_211
-# define BOOST_PP_SEQ_SIZE_211(_) BOOST_PP_SEQ_SIZE_212
-# define BOOST_PP_SEQ_SIZE_212(_) BOOST_PP_SEQ_SIZE_213
-# define BOOST_PP_SEQ_SIZE_213(_) BOOST_PP_SEQ_SIZE_214
-# define BOOST_PP_SEQ_SIZE_214(_) BOOST_PP_SEQ_SIZE_215
-# define BOOST_PP_SEQ_SIZE_215(_) BOOST_PP_SEQ_SIZE_216
-# define BOOST_PP_SEQ_SIZE_216(_) BOOST_PP_SEQ_SIZE_217
-# define BOOST_PP_SEQ_SIZE_217(_) BOOST_PP_SEQ_SIZE_218
-# define BOOST_PP_SEQ_SIZE_218(_) BOOST_PP_SEQ_SIZE_219
-# define BOOST_PP_SEQ_SIZE_219(_) BOOST_PP_SEQ_SIZE_220
-# define BOOST_PP_SEQ_SIZE_220(_) BOOST_PP_SEQ_SIZE_221
-# define BOOST_PP_SEQ_SIZE_221(_) BOOST_PP_SEQ_SIZE_222
-# define BOOST_PP_SEQ_SIZE_222(_) BOOST_PP_SEQ_SIZE_223
-# define BOOST_PP_SEQ_SIZE_223(_) BOOST_PP_SEQ_SIZE_224
-# define BOOST_PP_SEQ_SIZE_224(_) BOOST_PP_SEQ_SIZE_225
-# define BOOST_PP_SEQ_SIZE_225(_) BOOST_PP_SEQ_SIZE_226
-# define BOOST_PP_SEQ_SIZE_226(_) BOOST_PP_SEQ_SIZE_227
-# define BOOST_PP_SEQ_SIZE_227(_) BOOST_PP_SEQ_SIZE_228
-# define BOOST_PP_SEQ_SIZE_228(_) BOOST_PP_SEQ_SIZE_229
-# define BOOST_PP_SEQ_SIZE_229(_) BOOST_PP_SEQ_SIZE_230
-# define BOOST_PP_SEQ_SIZE_230(_) BOOST_PP_SEQ_SIZE_231
-# define BOOST_PP_SEQ_SIZE_231(_) BOOST_PP_SEQ_SIZE_232
-# define BOOST_PP_SEQ_SIZE_232(_) BOOST_PP_SEQ_SIZE_233
-# define BOOST_PP_SEQ_SIZE_233(_) BOOST_PP_SEQ_SIZE_234
-# define BOOST_PP_SEQ_SIZE_234(_) BOOST_PP_SEQ_SIZE_235
-# define BOOST_PP_SEQ_SIZE_235(_) BOOST_PP_SEQ_SIZE_236
-# define BOOST_PP_SEQ_SIZE_236(_) BOOST_PP_SEQ_SIZE_237
-# define BOOST_PP_SEQ_SIZE_237(_) BOOST_PP_SEQ_SIZE_238
-# define BOOST_PP_SEQ_SIZE_238(_) BOOST_PP_SEQ_SIZE_239
-# define BOOST_PP_SEQ_SIZE_239(_) BOOST_PP_SEQ_SIZE_240
-# define BOOST_PP_SEQ_SIZE_240(_) BOOST_PP_SEQ_SIZE_241
-# define BOOST_PP_SEQ_SIZE_241(_) BOOST_PP_SEQ_SIZE_242
-# define BOOST_PP_SEQ_SIZE_242(_) BOOST_PP_SEQ_SIZE_243
-# define BOOST_PP_SEQ_SIZE_243(_) BOOST_PP_SEQ_SIZE_244
-# define BOOST_PP_SEQ_SIZE_244(_) BOOST_PP_SEQ_SIZE_245
-# define BOOST_PP_SEQ_SIZE_245(_) BOOST_PP_SEQ_SIZE_246
-# define BOOST_PP_SEQ_SIZE_246(_) BOOST_PP_SEQ_SIZE_247
-# define BOOST_PP_SEQ_SIZE_247(_) BOOST_PP_SEQ_SIZE_248
-# define BOOST_PP_SEQ_SIZE_248(_) BOOST_PP_SEQ_SIZE_249
-# define BOOST_PP_SEQ_SIZE_249(_) BOOST_PP_SEQ_SIZE_250
-# define BOOST_PP_SEQ_SIZE_250(_) BOOST_PP_SEQ_SIZE_251
-# define BOOST_PP_SEQ_SIZE_251(_) BOOST_PP_SEQ_SIZE_252
-# define BOOST_PP_SEQ_SIZE_252(_) BOOST_PP_SEQ_SIZE_253
-# define BOOST_PP_SEQ_SIZE_253(_) BOOST_PP_SEQ_SIZE_254
-# define BOOST_PP_SEQ_SIZE_254(_) BOOST_PP_SEQ_SIZE_255
-# define BOOST_PP_SEQ_SIZE_255(_) BOOST_PP_SEQ_SIZE_256
-# define BOOST_PP_SEQ_SIZE_256(_) BOOST_PP_SEQ_SIZE_257
-#
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_0 0
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1 1
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_2 2
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_3 3
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4 4
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_5 5
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_6 6
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_7 7
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_8 8
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_9 9
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_10 10
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_11 11
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_12 12
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_13 13
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_14 14
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_15 15
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_16 16
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_17 17
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_18 18
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_19 19
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_20 20
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_21 21
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_22 22
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_23 23
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_24 24
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_25 25
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_26 26
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_27 27
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_28 28
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_29 29
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_30 30
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_31 31
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_32 32
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_33 33
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_34 34
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_35 35
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_36 36
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_37 37
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_38 38
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_39 39
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_40 40
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_41 41
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_42 42
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_43 43
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_44 44
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_45 45
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_46 46
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_47 47
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_48 48
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_49 49
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_50 50
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_51 51
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_52 52
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_53 53
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_54 54
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_55 55
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_56 56
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_57 57
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_58 58
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_59 59
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_60 60
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_61 61
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_62 62
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_63 63
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_64 64
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_65 65
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_66 66
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_67 67
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_68 68
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_69 69
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_70 70
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_71 71
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_72 72
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_73 73
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_74 74
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_75 75
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_76 76
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_77 77
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_78 78
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_79 79
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_80 80
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_81 81
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_82 82
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_83 83
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_84 84
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_85 85
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_86 86
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_87 87
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_88 88
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_89 89
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_90 90
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_91 91
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_92 92
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_93 93
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_94 94
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_95 95
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_96 96
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_97 97
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_98 98
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_99 99
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_100 100
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_101 101
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_102 102
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_103 103
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_104 104
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_105 105
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_106 106
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_107 107
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_108 108
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_109 109
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_110 110
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_111 111
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_112 112
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_113 113
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_114 114
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_115 115
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_116 116
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_117 117
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_118 118
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_119 119
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_120 120
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_121 121
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_122 122
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_123 123
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_124 124
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_125 125
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_126 126
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_127 127
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_128 128
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_129 129
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_130 130
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_131 131
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_132 132
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_133 133
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_134 134
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_135 135
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_136 136
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_137 137
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_138 138
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_139 139
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_140 140
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_141 141
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_142 142
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_143 143
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_144 144
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_145 145
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_146 146
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_147 147
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_148 148
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_149 149
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_150 150
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_151 151
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_152 152
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_153 153
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_154 154
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_155 155
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_156 156
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_157 157
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_158 158
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_159 159
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_160 160
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_161 161
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_162 162
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_163 163
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_164 164
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_165 165
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_166 166
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_167 167
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_168 168
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_169 169
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_170 170
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_171 171
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_172 172
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_173 173
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_174 174
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_175 175
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_176 176
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_177 177
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_178 178
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_179 179
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_180 180
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_181 181
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_182 182
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_183 183
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_184 184
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_185 185
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_186 186
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_187 187
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_188 188
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_189 189
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_190 190
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_191 191
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_192 192
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_193 193
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_194 194
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_195 195
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_196 196
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_197 197
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_198 198
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_199 199
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_200 200
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_201 201
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_202 202
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_203 203
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_204 204
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_205 205
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_206 206
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_207 207
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_208 208
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_209 209
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_210 210
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_211 211
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_212 212
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_213 213
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_214 214
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_215 215
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_216 216
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_217 217
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_218 218
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_219 219
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_220 220
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_221 221
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_222 222
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_223 223
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_224 224
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_225 225
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_226 226
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_227 227
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_228 228
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_229 229
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_230 230
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_231 231
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_232 232
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_233 233
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_234 234
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_235 235
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_236 236
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_237 237
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_238 238
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_239 239
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_240 240
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_241 241
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_242 242
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_243 243
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_244 244
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_245 245
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_246 246
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_247 247
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_248 248
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_249 249
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_250 250
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_251 251
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_252 252
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_253 253
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_254 254
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_255 255
-# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_256 256
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/seq/subseq.hpp b/libcutl/cutl/details/boost/preprocessor/seq/subseq.hpp
deleted file mode 100644
index 53bf877..0000000
--- a/libcutl/cutl/details/boost/preprocessor/seq/subseq.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_SEQ_SUBSEQ_HPP
-# define BOOST_PREPROCESSOR_SEQ_SUBSEQ_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/seq/first_n.hpp>
-# include <cutl/details/boost/preprocessor/seq/rest_n.hpp>
-#
-# /* BOOST_PP_SEQ_SUBSEQ */
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_SEQ_SUBSEQ(seq, i, len) BOOST_PP_SEQ_FIRST_N(len, BOOST_PP_SEQ_REST_N(i, seq))
-# else
-# define BOOST_PP_SEQ_SUBSEQ(seq, i, len) BOOST_PP_SEQ_SUBSEQ_I(seq, i, len)
-# define BOOST_PP_SEQ_SUBSEQ_I(seq, i, len) BOOST_PP_SEQ_FIRST_N(len, BOOST_PP_SEQ_REST_N(i, seq))
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/slot/detail/counter.hpp b/libcutl/cutl/details/boost/preprocessor/slot/detail/counter.hpp
deleted file mode 100644
index bdd83c8..0000000
--- a/libcutl/cutl/details/boost/preprocessor/slot/detail/counter.hpp
+++ /dev/null
@@ -1,269 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2005. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-# * http://www.boost.org/LICENSE_1_0.txt) *
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# define BOOST_PP_VALUE BOOST_PP_COUNTER + 1
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_COUNTER
-#
-# undef BOOST_PP_COUNTER_DIGIT_1
-# undef BOOST_PP_COUNTER_DIGIT_2
-# undef BOOST_PP_COUNTER_DIGIT_3
-# undef BOOST_PP_COUNTER_DIGIT_4
-# undef BOOST_PP_COUNTER_DIGIT_5
-# undef BOOST_PP_COUNTER_DIGIT_6
-# undef BOOST_PP_COUNTER_DIGIT_7
-# undef BOOST_PP_COUNTER_DIGIT_8
-# undef BOOST_PP_COUNTER_DIGIT_9
-# undef BOOST_PP_COUNTER_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_10 == 0
-# define BOOST_PP_COUNTER_DIGIT_10 0
-# elif BOOST_PP_SLOT_TEMP_10 == 1
-# define BOOST_PP_COUNTER_DIGIT_10 1
-# elif BOOST_PP_SLOT_TEMP_10 == 2
-# define BOOST_PP_COUNTER_DIGIT_10 2
-# elif BOOST_PP_SLOT_TEMP_10 == 3
-# define BOOST_PP_COUNTER_DIGIT_10 3
-# elif BOOST_PP_SLOT_TEMP_10 == 4
-# define BOOST_PP_COUNTER_DIGIT_10 4
-# elif BOOST_PP_SLOT_TEMP_10 == 5
-# define BOOST_PP_COUNTER_DIGIT_10 5
-# elif BOOST_PP_SLOT_TEMP_10 == 6
-# define BOOST_PP_COUNTER_DIGIT_10 6
-# elif BOOST_PP_SLOT_TEMP_10 == 7
-# define BOOST_PP_COUNTER_DIGIT_10 7
-# elif BOOST_PP_SLOT_TEMP_10 == 8
-# define BOOST_PP_COUNTER_DIGIT_10 8
-# elif BOOST_PP_SLOT_TEMP_10 == 9
-# define BOOST_PP_COUNTER_DIGIT_10 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_9 == 0
-# define BOOST_PP_COUNTER_DIGIT_9 0
-# elif BOOST_PP_SLOT_TEMP_9 == 1
-# define BOOST_PP_COUNTER_DIGIT_9 1
-# elif BOOST_PP_SLOT_TEMP_9 == 2
-# define BOOST_PP_COUNTER_DIGIT_9 2
-# elif BOOST_PP_SLOT_TEMP_9 == 3
-# define BOOST_PP_COUNTER_DIGIT_9 3
-# elif BOOST_PP_SLOT_TEMP_9 == 4
-# define BOOST_PP_COUNTER_DIGIT_9 4
-# elif BOOST_PP_SLOT_TEMP_9 == 5
-# define BOOST_PP_COUNTER_DIGIT_9 5
-# elif BOOST_PP_SLOT_TEMP_9 == 6
-# define BOOST_PP_COUNTER_DIGIT_9 6
-# elif BOOST_PP_SLOT_TEMP_9 == 7
-# define BOOST_PP_COUNTER_DIGIT_9 7
-# elif BOOST_PP_SLOT_TEMP_9 == 8
-# define BOOST_PP_COUNTER_DIGIT_9 8
-# elif BOOST_PP_SLOT_TEMP_9 == 9
-# define BOOST_PP_COUNTER_DIGIT_9 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_8 == 0
-# define BOOST_PP_COUNTER_DIGIT_8 0
-# elif BOOST_PP_SLOT_TEMP_8 == 1
-# define BOOST_PP_COUNTER_DIGIT_8 1
-# elif BOOST_PP_SLOT_TEMP_8 == 2
-# define BOOST_PP_COUNTER_DIGIT_8 2
-# elif BOOST_PP_SLOT_TEMP_8 == 3
-# define BOOST_PP_COUNTER_DIGIT_8 3
-# elif BOOST_PP_SLOT_TEMP_8 == 4
-# define BOOST_PP_COUNTER_DIGIT_8 4
-# elif BOOST_PP_SLOT_TEMP_8 == 5
-# define BOOST_PP_COUNTER_DIGIT_8 5
-# elif BOOST_PP_SLOT_TEMP_8 == 6
-# define BOOST_PP_COUNTER_DIGIT_8 6
-# elif BOOST_PP_SLOT_TEMP_8 == 7
-# define BOOST_PP_COUNTER_DIGIT_8 7
-# elif BOOST_PP_SLOT_TEMP_8 == 8
-# define BOOST_PP_COUNTER_DIGIT_8 8
-# elif BOOST_PP_SLOT_TEMP_8 == 9
-# define BOOST_PP_COUNTER_DIGIT_8 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_7 == 0
-# define BOOST_PP_COUNTER_DIGIT_7 0
-# elif BOOST_PP_SLOT_TEMP_7 == 1
-# define BOOST_PP_COUNTER_DIGIT_7 1
-# elif BOOST_PP_SLOT_TEMP_7 == 2
-# define BOOST_PP_COUNTER_DIGIT_7 2
-# elif BOOST_PP_SLOT_TEMP_7 == 3
-# define BOOST_PP_COUNTER_DIGIT_7 3
-# elif BOOST_PP_SLOT_TEMP_7 == 4
-# define BOOST_PP_COUNTER_DIGIT_7 4
-# elif BOOST_PP_SLOT_TEMP_7 == 5
-# define BOOST_PP_COUNTER_DIGIT_7 5
-# elif BOOST_PP_SLOT_TEMP_7 == 6
-# define BOOST_PP_COUNTER_DIGIT_7 6
-# elif BOOST_PP_SLOT_TEMP_7 == 7
-# define BOOST_PP_COUNTER_DIGIT_7 7
-# elif BOOST_PP_SLOT_TEMP_7 == 8
-# define BOOST_PP_COUNTER_DIGIT_7 8
-# elif BOOST_PP_SLOT_TEMP_7 == 9
-# define BOOST_PP_COUNTER_DIGIT_7 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_6 == 0
-# define BOOST_PP_COUNTER_DIGIT_6 0
-# elif BOOST_PP_SLOT_TEMP_6 == 1
-# define BOOST_PP_COUNTER_DIGIT_6 1
-# elif BOOST_PP_SLOT_TEMP_6 == 2
-# define BOOST_PP_COUNTER_DIGIT_6 2
-# elif BOOST_PP_SLOT_TEMP_6 == 3
-# define BOOST_PP_COUNTER_DIGIT_6 3
-# elif BOOST_PP_SLOT_TEMP_6 == 4
-# define BOOST_PP_COUNTER_DIGIT_6 4
-# elif BOOST_PP_SLOT_TEMP_6 == 5
-# define BOOST_PP_COUNTER_DIGIT_6 5
-# elif BOOST_PP_SLOT_TEMP_6 == 6
-# define BOOST_PP_COUNTER_DIGIT_6 6
-# elif BOOST_PP_SLOT_TEMP_6 == 7
-# define BOOST_PP_COUNTER_DIGIT_6 7
-# elif BOOST_PP_SLOT_TEMP_6 == 8
-# define BOOST_PP_COUNTER_DIGIT_6 8
-# elif BOOST_PP_SLOT_TEMP_6 == 9
-# define BOOST_PP_COUNTER_DIGIT_6 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_5 == 0
-# define BOOST_PP_COUNTER_DIGIT_5 0
-# elif BOOST_PP_SLOT_TEMP_5 == 1
-# define BOOST_PP_COUNTER_DIGIT_5 1
-# elif BOOST_PP_SLOT_TEMP_5 == 2
-# define BOOST_PP_COUNTER_DIGIT_5 2
-# elif BOOST_PP_SLOT_TEMP_5 == 3
-# define BOOST_PP_COUNTER_DIGIT_5 3
-# elif BOOST_PP_SLOT_TEMP_5 == 4
-# define BOOST_PP_COUNTER_DIGIT_5 4
-# elif BOOST_PP_SLOT_TEMP_5 == 5
-# define BOOST_PP_COUNTER_DIGIT_5 5
-# elif BOOST_PP_SLOT_TEMP_5 == 6
-# define BOOST_PP_COUNTER_DIGIT_5 6
-# elif BOOST_PP_SLOT_TEMP_5 == 7
-# define BOOST_PP_COUNTER_DIGIT_5 7
-# elif BOOST_PP_SLOT_TEMP_5 == 8
-# define BOOST_PP_COUNTER_DIGIT_5 8
-# elif BOOST_PP_SLOT_TEMP_5 == 9
-# define BOOST_PP_COUNTER_DIGIT_5 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_4 == 0
-# define BOOST_PP_COUNTER_DIGIT_4 0
-# elif BOOST_PP_SLOT_TEMP_4 == 1
-# define BOOST_PP_COUNTER_DIGIT_4 1
-# elif BOOST_PP_SLOT_TEMP_4 == 2
-# define BOOST_PP_COUNTER_DIGIT_4 2
-# elif BOOST_PP_SLOT_TEMP_4 == 3
-# define BOOST_PP_COUNTER_DIGIT_4 3
-# elif BOOST_PP_SLOT_TEMP_4 == 4
-# define BOOST_PP_COUNTER_DIGIT_4 4
-# elif BOOST_PP_SLOT_TEMP_4 == 5
-# define BOOST_PP_COUNTER_DIGIT_4 5
-# elif BOOST_PP_SLOT_TEMP_4 == 6
-# define BOOST_PP_COUNTER_DIGIT_4 6
-# elif BOOST_PP_SLOT_TEMP_4 == 7
-# define BOOST_PP_COUNTER_DIGIT_4 7
-# elif BOOST_PP_SLOT_TEMP_4 == 8
-# define BOOST_PP_COUNTER_DIGIT_4 8
-# elif BOOST_PP_SLOT_TEMP_4 == 9
-# define BOOST_PP_COUNTER_DIGIT_4 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_COUNTER_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_COUNTER_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_COUNTER_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_COUNTER_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_COUNTER_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_COUNTER_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_COUNTER_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_COUNTER_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_COUNTER_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_COUNTER_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_COUNTER_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_COUNTER_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_COUNTER_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_COUNTER_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_COUNTER_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_COUNTER_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_COUNTER_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_COUNTER_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_COUNTER_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_COUNTER_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_COUNTER_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_COUNTER_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_COUNTER_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_COUNTER_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_COUNTER_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_COUNTER_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_COUNTER_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_COUNTER_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_COUNTER_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_COUNTER_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_COUNTER_DIGIT_10
-# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_10(BOOST_PP_COUNTER_DIGIT_10, BOOST_PP_COUNTER_DIGIT_9, BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
-# elif BOOST_PP_COUNTER_DIGIT_9
-# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_9(BOOST_PP_COUNTER_DIGIT_9, BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
-# elif BOOST_PP_COUNTER_DIGIT_8
-# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_8(BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
-# elif BOOST_PP_COUNTER_DIGIT_7
-# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_7(BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
-# elif BOOST_PP_COUNTER_DIGIT_6
-# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_6(BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
-# elif BOOST_PP_COUNTER_DIGIT_5
-# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_5(BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
-# elif BOOST_PP_COUNTER_DIGIT_4
-# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_4(BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
-# elif BOOST_PP_COUNTER_DIGIT_3
-# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_3(BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
-# elif BOOST_PP_COUNTER_DIGIT_2
-# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_2(BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
-# else
-# define BOOST_PP_COUNTER BOOST_PP_COUNTER_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/slot/detail/def.hpp b/libcutl/cutl/details/boost/preprocessor/slot/detail/def.hpp
deleted file mode 100644
index 885099e..0000000
--- a/libcutl/cutl/details/boost/preprocessor/slot/detail/def.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_SLOT_DETAIL_DEF_HPP
-# define BOOST_PREPROCESSOR_SLOT_DETAIL_DEF_HPP
-#
-# /* BOOST_PP_SLOT_OFFSET_x */
-#
-# define BOOST_PP_SLOT_OFFSET_10(x) (x) % 1000000000UL
-# define BOOST_PP_SLOT_OFFSET_9(x) BOOST_PP_SLOT_OFFSET_10(x) % 100000000UL
-# define BOOST_PP_SLOT_OFFSET_8(x) BOOST_PP_SLOT_OFFSET_9(x) % 10000000UL
-# define BOOST_PP_SLOT_OFFSET_7(x) BOOST_PP_SLOT_OFFSET_8(x) % 1000000UL
-# define BOOST_PP_SLOT_OFFSET_6(x) BOOST_PP_SLOT_OFFSET_7(x) % 100000UL
-# define BOOST_PP_SLOT_OFFSET_5(x) BOOST_PP_SLOT_OFFSET_6(x) % 10000UL
-# define BOOST_PP_SLOT_OFFSET_4(x) BOOST_PP_SLOT_OFFSET_5(x) % 1000UL
-# define BOOST_PP_SLOT_OFFSET_3(x) BOOST_PP_SLOT_OFFSET_4(x) % 100UL
-# define BOOST_PP_SLOT_OFFSET_2(x) BOOST_PP_SLOT_OFFSET_3(x) % 10UL
-#
-# /* BOOST_PP_SLOT_CC_x */
-#
-# define BOOST_PP_SLOT_CC_2(a, b) BOOST_PP_SLOT_CC_2_D(a, b)
-# define BOOST_PP_SLOT_CC_3(a, b, c) BOOST_PP_SLOT_CC_3_D(a, b, c)
-# define BOOST_PP_SLOT_CC_4(a, b, c, d) BOOST_PP_SLOT_CC_4_D(a, b, c, d)
-# define BOOST_PP_SLOT_CC_5(a, b, c, d, e) BOOST_PP_SLOT_CC_5_D(a, b, c, d, e)
-# define BOOST_PP_SLOT_CC_6(a, b, c, d, e, f) BOOST_PP_SLOT_CC_6_D(a, b, c, d, e, f)
-# define BOOST_PP_SLOT_CC_7(a, b, c, d, e, f, g) BOOST_PP_SLOT_CC_7_D(a, b, c, d, e, f, g)
-# define BOOST_PP_SLOT_CC_8(a, b, c, d, e, f, g, h) BOOST_PP_SLOT_CC_8_D(a, b, c, d, e, f, g, h)
-# define BOOST_PP_SLOT_CC_9(a, b, c, d, e, f, g, h, i) BOOST_PP_SLOT_CC_9_D(a, b, c, d, e, f, g, h, i)
-# define BOOST_PP_SLOT_CC_10(a, b, c, d, e, f, g, h, i, j) BOOST_PP_SLOT_CC_10_D(a, b, c, d, e, f, g, h, i, j)
-#
-# define BOOST_PP_SLOT_CC_2_D(a, b) a ## b
-# define BOOST_PP_SLOT_CC_3_D(a, b, c) a ## b ## c
-# define BOOST_PP_SLOT_CC_4_D(a, b, c, d) a ## b ## c ## d
-# define BOOST_PP_SLOT_CC_5_D(a, b, c, d, e) a ## b ## c ## d ## e
-# define BOOST_PP_SLOT_CC_6_D(a, b, c, d, e, f) a ## b ## c ## d ## e ## f
-# define BOOST_PP_SLOT_CC_7_D(a, b, c, d, e, f, g) a ## b ## c ## d ## e ## f ## g
-# define BOOST_PP_SLOT_CC_8_D(a, b, c, d, e, f, g, h) a ## b ## c ## d ## e ## f ## g ## h
-# define BOOST_PP_SLOT_CC_9_D(a, b, c, d, e, f, g, h, i) a ## b ## c ## d ## e ## f ## g ## h ## i
-# define BOOST_PP_SLOT_CC_10_D(a, b, c, d, e, f, g, h, i, j) a ## b ## c ## d ## e ## f ## g ## h ## i ## j
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/slot/detail/shared.hpp b/libcutl/cutl/details/boost/preprocessor/slot/detail/shared.hpp
deleted file mode 100644
index c97ac54..0000000
--- a/libcutl/cutl/details/boost/preprocessor/slot/detail/shared.hpp
+++ /dev/null
@@ -1,247 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PP_VALUE
-# error BOOST_PP_ERROR: BOOST_PP_VALUE is not defined
-# endif
-#
-# undef BOOST_PP_SLOT_TEMP_1
-# undef BOOST_PP_SLOT_TEMP_2
-# undef BOOST_PP_SLOT_TEMP_3
-# undef BOOST_PP_SLOT_TEMP_4
-# undef BOOST_PP_SLOT_TEMP_5
-# undef BOOST_PP_SLOT_TEMP_6
-# undef BOOST_PP_SLOT_TEMP_7
-# undef BOOST_PP_SLOT_TEMP_8
-# undef BOOST_PP_SLOT_TEMP_9
-# undef BOOST_PP_SLOT_TEMP_10
-#
-# if (BOOST_PP_VALUE) / 1000000000UL == 0
-# define BOOST_PP_SLOT_TEMP_10 0
-# elif (BOOST_PP_VALUE) / 1000000000UL == 1
-# define BOOST_PP_SLOT_TEMP_10 1
-# elif (BOOST_PP_VALUE) / 1000000000UL == 2
-# define BOOST_PP_SLOT_TEMP_10 2
-# elif (BOOST_PP_VALUE) / 1000000000UL == 3
-# define BOOST_PP_SLOT_TEMP_10 3
-# elif (BOOST_PP_VALUE) / 1000000000UL == 4
-# define BOOST_PP_SLOT_TEMP_10 4
-# elif (BOOST_PP_VALUE) / 1000000000UL == 5
-# define BOOST_PP_SLOT_TEMP_10 5
-# elif (BOOST_PP_VALUE) / 1000000000UL == 6
-# define BOOST_PP_SLOT_TEMP_10 6
-# elif (BOOST_PP_VALUE) / 1000000000UL == 7
-# define BOOST_PP_SLOT_TEMP_10 7
-# elif (BOOST_PP_VALUE) / 1000000000UL == 8
-# define BOOST_PP_SLOT_TEMP_10 8
-# elif (BOOST_PP_VALUE) / 1000000000UL == 9
-# define BOOST_PP_SLOT_TEMP_10 9
-# endif
-#
-# if BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 0
-# define BOOST_PP_SLOT_TEMP_9 0
-# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 1
-# define BOOST_PP_SLOT_TEMP_9 1
-# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 2
-# define BOOST_PP_SLOT_TEMP_9 2
-# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 3
-# define BOOST_PP_SLOT_TEMP_9 3
-# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 4
-# define BOOST_PP_SLOT_TEMP_9 4
-# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 5
-# define BOOST_PP_SLOT_TEMP_9 5
-# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 6
-# define BOOST_PP_SLOT_TEMP_9 6
-# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 7
-# define BOOST_PP_SLOT_TEMP_9 7
-# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 8
-# define BOOST_PP_SLOT_TEMP_9 8
-# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 9
-# define BOOST_PP_SLOT_TEMP_9 9
-# endif
-#
-# if BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 0
-# define BOOST_PP_SLOT_TEMP_8 0
-# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 1
-# define BOOST_PP_SLOT_TEMP_8 1
-# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 2
-# define BOOST_PP_SLOT_TEMP_8 2
-# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 3
-# define BOOST_PP_SLOT_TEMP_8 3
-# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 4
-# define BOOST_PP_SLOT_TEMP_8 4
-# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 5
-# define BOOST_PP_SLOT_TEMP_8 5
-# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 6
-# define BOOST_PP_SLOT_TEMP_8 6
-# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 7
-# define BOOST_PP_SLOT_TEMP_8 7
-# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 8
-# define BOOST_PP_SLOT_TEMP_8 8
-# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 9
-# define BOOST_PP_SLOT_TEMP_8 9
-# endif
-#
-# if BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 0
-# define BOOST_PP_SLOT_TEMP_7 0
-# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 1
-# define BOOST_PP_SLOT_TEMP_7 1
-# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 2
-# define BOOST_PP_SLOT_TEMP_7 2
-# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 3
-# define BOOST_PP_SLOT_TEMP_7 3
-# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 4
-# define BOOST_PP_SLOT_TEMP_7 4
-# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 5
-# define BOOST_PP_SLOT_TEMP_7 5
-# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 6
-# define BOOST_PP_SLOT_TEMP_7 6
-# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 7
-# define BOOST_PP_SLOT_TEMP_7 7
-# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 8
-# define BOOST_PP_SLOT_TEMP_7 8
-# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 9
-# define BOOST_PP_SLOT_TEMP_7 9
-# endif
-#
-# if BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 0
-# define BOOST_PP_SLOT_TEMP_6 0
-# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 1
-# define BOOST_PP_SLOT_TEMP_6 1
-# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 2
-# define BOOST_PP_SLOT_TEMP_6 2
-# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 3
-# define BOOST_PP_SLOT_TEMP_6 3
-# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 4
-# define BOOST_PP_SLOT_TEMP_6 4
-# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 5
-# define BOOST_PP_SLOT_TEMP_6 5
-# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 6
-# define BOOST_PP_SLOT_TEMP_6 6
-# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 7
-# define BOOST_PP_SLOT_TEMP_6 7
-# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 8
-# define BOOST_PP_SLOT_TEMP_6 8
-# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 9
-# define BOOST_PP_SLOT_TEMP_6 9
-# endif
-#
-# if BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 0
-# define BOOST_PP_SLOT_TEMP_5 0
-# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 1
-# define BOOST_PP_SLOT_TEMP_5 1
-# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 2
-# define BOOST_PP_SLOT_TEMP_5 2
-# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 3
-# define BOOST_PP_SLOT_TEMP_5 3
-# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 4
-# define BOOST_PP_SLOT_TEMP_5 4
-# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 5
-# define BOOST_PP_SLOT_TEMP_5 5
-# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 6
-# define BOOST_PP_SLOT_TEMP_5 6
-# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 7
-# define BOOST_PP_SLOT_TEMP_5 7
-# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 8
-# define BOOST_PP_SLOT_TEMP_5 8
-# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 9
-# define BOOST_PP_SLOT_TEMP_5 9
-# endif
-#
-# if BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 0
-# define BOOST_PP_SLOT_TEMP_4 0
-# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 1
-# define BOOST_PP_SLOT_TEMP_4 1
-# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 2
-# define BOOST_PP_SLOT_TEMP_4 2
-# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 3
-# define BOOST_PP_SLOT_TEMP_4 3
-# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 4
-# define BOOST_PP_SLOT_TEMP_4 4
-# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 5
-# define BOOST_PP_SLOT_TEMP_4 5
-# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 6
-# define BOOST_PP_SLOT_TEMP_4 6
-# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 7
-# define BOOST_PP_SLOT_TEMP_4 7
-# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 8
-# define BOOST_PP_SLOT_TEMP_4 8
-# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 9
-# define BOOST_PP_SLOT_TEMP_4 9
-# endif
-#
-# if BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 0
-# define BOOST_PP_SLOT_TEMP_3 0
-# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 1
-# define BOOST_PP_SLOT_TEMP_3 1
-# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 2
-# define BOOST_PP_SLOT_TEMP_3 2
-# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 3
-# define BOOST_PP_SLOT_TEMP_3 3
-# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 4
-# define BOOST_PP_SLOT_TEMP_3 4
-# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 5
-# define BOOST_PP_SLOT_TEMP_3 5
-# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 6
-# define BOOST_PP_SLOT_TEMP_3 6
-# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 7
-# define BOOST_PP_SLOT_TEMP_3 7
-# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 8
-# define BOOST_PP_SLOT_TEMP_3 8
-# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 9
-# define BOOST_PP_SLOT_TEMP_3 9
-# endif
-#
-# if BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 0
-# define BOOST_PP_SLOT_TEMP_2 0
-# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 1
-# define BOOST_PP_SLOT_TEMP_2 1
-# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 2
-# define BOOST_PP_SLOT_TEMP_2 2
-# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 3
-# define BOOST_PP_SLOT_TEMP_2 3
-# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 4
-# define BOOST_PP_SLOT_TEMP_2 4
-# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 5
-# define BOOST_PP_SLOT_TEMP_2 5
-# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 6
-# define BOOST_PP_SLOT_TEMP_2 6
-# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 7
-# define BOOST_PP_SLOT_TEMP_2 7
-# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 8
-# define BOOST_PP_SLOT_TEMP_2 8
-# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 9
-# define BOOST_PP_SLOT_TEMP_2 9
-# endif
-#
-# if BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 0
-# define BOOST_PP_SLOT_TEMP_1 0
-# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 1
-# define BOOST_PP_SLOT_TEMP_1 1
-# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 2
-# define BOOST_PP_SLOT_TEMP_1 2
-# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 3
-# define BOOST_PP_SLOT_TEMP_1 3
-# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 4
-# define BOOST_PP_SLOT_TEMP_1 4
-# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 5
-# define BOOST_PP_SLOT_TEMP_1 5
-# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 6
-# define BOOST_PP_SLOT_TEMP_1 6
-# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 7
-# define BOOST_PP_SLOT_TEMP_1 7
-# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 8
-# define BOOST_PP_SLOT_TEMP_1 8
-# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 9
-# define BOOST_PP_SLOT_TEMP_1 9
-# endif
-#
-# undef BOOST_PP_VALUE
diff --git a/libcutl/cutl/details/boost/preprocessor/slot/detail/slot1.hpp b/libcutl/cutl/details/boost/preprocessor/slot/detail/slot1.hpp
deleted file mode 100644
index d40b331..0000000
--- a/libcutl/cutl/details/boost/preprocessor/slot/detail/slot1.hpp
+++ /dev/null
@@ -1,267 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_SLOT_1
-#
-# undef BOOST_PP_SLOT_1_DIGIT_1
-# undef BOOST_PP_SLOT_1_DIGIT_2
-# undef BOOST_PP_SLOT_1_DIGIT_3
-# undef BOOST_PP_SLOT_1_DIGIT_4
-# undef BOOST_PP_SLOT_1_DIGIT_5
-# undef BOOST_PP_SLOT_1_DIGIT_6
-# undef BOOST_PP_SLOT_1_DIGIT_7
-# undef BOOST_PP_SLOT_1_DIGIT_8
-# undef BOOST_PP_SLOT_1_DIGIT_9
-# undef BOOST_PP_SLOT_1_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_10 == 0
-# define BOOST_PP_SLOT_1_DIGIT_10 0
-# elif BOOST_PP_SLOT_TEMP_10 == 1
-# define BOOST_PP_SLOT_1_DIGIT_10 1
-# elif BOOST_PP_SLOT_TEMP_10 == 2
-# define BOOST_PP_SLOT_1_DIGIT_10 2
-# elif BOOST_PP_SLOT_TEMP_10 == 3
-# define BOOST_PP_SLOT_1_DIGIT_10 3
-# elif BOOST_PP_SLOT_TEMP_10 == 4
-# define BOOST_PP_SLOT_1_DIGIT_10 4
-# elif BOOST_PP_SLOT_TEMP_10 == 5
-# define BOOST_PP_SLOT_1_DIGIT_10 5
-# elif BOOST_PP_SLOT_TEMP_10 == 6
-# define BOOST_PP_SLOT_1_DIGIT_10 6
-# elif BOOST_PP_SLOT_TEMP_10 == 7
-# define BOOST_PP_SLOT_1_DIGIT_10 7
-# elif BOOST_PP_SLOT_TEMP_10 == 8
-# define BOOST_PP_SLOT_1_DIGIT_10 8
-# elif BOOST_PP_SLOT_TEMP_10 == 9
-# define BOOST_PP_SLOT_1_DIGIT_10 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_9 == 0
-# define BOOST_PP_SLOT_1_DIGIT_9 0
-# elif BOOST_PP_SLOT_TEMP_9 == 1
-# define BOOST_PP_SLOT_1_DIGIT_9 1
-# elif BOOST_PP_SLOT_TEMP_9 == 2
-# define BOOST_PP_SLOT_1_DIGIT_9 2
-# elif BOOST_PP_SLOT_TEMP_9 == 3
-# define BOOST_PP_SLOT_1_DIGIT_9 3
-# elif BOOST_PP_SLOT_TEMP_9 == 4
-# define BOOST_PP_SLOT_1_DIGIT_9 4
-# elif BOOST_PP_SLOT_TEMP_9 == 5
-# define BOOST_PP_SLOT_1_DIGIT_9 5
-# elif BOOST_PP_SLOT_TEMP_9 == 6
-# define BOOST_PP_SLOT_1_DIGIT_9 6
-# elif BOOST_PP_SLOT_TEMP_9 == 7
-# define BOOST_PP_SLOT_1_DIGIT_9 7
-# elif BOOST_PP_SLOT_TEMP_9 == 8
-# define BOOST_PP_SLOT_1_DIGIT_9 8
-# elif BOOST_PP_SLOT_TEMP_9 == 9
-# define BOOST_PP_SLOT_1_DIGIT_9 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_8 == 0
-# define BOOST_PP_SLOT_1_DIGIT_8 0
-# elif BOOST_PP_SLOT_TEMP_8 == 1
-# define BOOST_PP_SLOT_1_DIGIT_8 1
-# elif BOOST_PP_SLOT_TEMP_8 == 2
-# define BOOST_PP_SLOT_1_DIGIT_8 2
-# elif BOOST_PP_SLOT_TEMP_8 == 3
-# define BOOST_PP_SLOT_1_DIGIT_8 3
-# elif BOOST_PP_SLOT_TEMP_8 == 4
-# define BOOST_PP_SLOT_1_DIGIT_8 4
-# elif BOOST_PP_SLOT_TEMP_8 == 5
-# define BOOST_PP_SLOT_1_DIGIT_8 5
-# elif BOOST_PP_SLOT_TEMP_8 == 6
-# define BOOST_PP_SLOT_1_DIGIT_8 6
-# elif BOOST_PP_SLOT_TEMP_8 == 7
-# define BOOST_PP_SLOT_1_DIGIT_8 7
-# elif BOOST_PP_SLOT_TEMP_8 == 8
-# define BOOST_PP_SLOT_1_DIGIT_8 8
-# elif BOOST_PP_SLOT_TEMP_8 == 9
-# define BOOST_PP_SLOT_1_DIGIT_8 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_7 == 0
-# define BOOST_PP_SLOT_1_DIGIT_7 0
-# elif BOOST_PP_SLOT_TEMP_7 == 1
-# define BOOST_PP_SLOT_1_DIGIT_7 1
-# elif BOOST_PP_SLOT_TEMP_7 == 2
-# define BOOST_PP_SLOT_1_DIGIT_7 2
-# elif BOOST_PP_SLOT_TEMP_7 == 3
-# define BOOST_PP_SLOT_1_DIGIT_7 3
-# elif BOOST_PP_SLOT_TEMP_7 == 4
-# define BOOST_PP_SLOT_1_DIGIT_7 4
-# elif BOOST_PP_SLOT_TEMP_7 == 5
-# define BOOST_PP_SLOT_1_DIGIT_7 5
-# elif BOOST_PP_SLOT_TEMP_7 == 6
-# define BOOST_PP_SLOT_1_DIGIT_7 6
-# elif BOOST_PP_SLOT_TEMP_7 == 7
-# define BOOST_PP_SLOT_1_DIGIT_7 7
-# elif BOOST_PP_SLOT_TEMP_7 == 8
-# define BOOST_PP_SLOT_1_DIGIT_7 8
-# elif BOOST_PP_SLOT_TEMP_7 == 9
-# define BOOST_PP_SLOT_1_DIGIT_7 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_6 == 0
-# define BOOST_PP_SLOT_1_DIGIT_6 0
-# elif BOOST_PP_SLOT_TEMP_6 == 1
-# define BOOST_PP_SLOT_1_DIGIT_6 1
-# elif BOOST_PP_SLOT_TEMP_6 == 2
-# define BOOST_PP_SLOT_1_DIGIT_6 2
-# elif BOOST_PP_SLOT_TEMP_6 == 3
-# define BOOST_PP_SLOT_1_DIGIT_6 3
-# elif BOOST_PP_SLOT_TEMP_6 == 4
-# define BOOST_PP_SLOT_1_DIGIT_6 4
-# elif BOOST_PP_SLOT_TEMP_6 == 5
-# define BOOST_PP_SLOT_1_DIGIT_6 5
-# elif BOOST_PP_SLOT_TEMP_6 == 6
-# define BOOST_PP_SLOT_1_DIGIT_6 6
-# elif BOOST_PP_SLOT_TEMP_6 == 7
-# define BOOST_PP_SLOT_1_DIGIT_6 7
-# elif BOOST_PP_SLOT_TEMP_6 == 8
-# define BOOST_PP_SLOT_1_DIGIT_6 8
-# elif BOOST_PP_SLOT_TEMP_6 == 9
-# define BOOST_PP_SLOT_1_DIGIT_6 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_5 == 0
-# define BOOST_PP_SLOT_1_DIGIT_5 0
-# elif BOOST_PP_SLOT_TEMP_5 == 1
-# define BOOST_PP_SLOT_1_DIGIT_5 1
-# elif BOOST_PP_SLOT_TEMP_5 == 2
-# define BOOST_PP_SLOT_1_DIGIT_5 2
-# elif BOOST_PP_SLOT_TEMP_5 == 3
-# define BOOST_PP_SLOT_1_DIGIT_5 3
-# elif BOOST_PP_SLOT_TEMP_5 == 4
-# define BOOST_PP_SLOT_1_DIGIT_5 4
-# elif BOOST_PP_SLOT_TEMP_5 == 5
-# define BOOST_PP_SLOT_1_DIGIT_5 5
-# elif BOOST_PP_SLOT_TEMP_5 == 6
-# define BOOST_PP_SLOT_1_DIGIT_5 6
-# elif BOOST_PP_SLOT_TEMP_5 == 7
-# define BOOST_PP_SLOT_1_DIGIT_5 7
-# elif BOOST_PP_SLOT_TEMP_5 == 8
-# define BOOST_PP_SLOT_1_DIGIT_5 8
-# elif BOOST_PP_SLOT_TEMP_5 == 9
-# define BOOST_PP_SLOT_1_DIGIT_5 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_4 == 0
-# define BOOST_PP_SLOT_1_DIGIT_4 0
-# elif BOOST_PP_SLOT_TEMP_4 == 1
-# define BOOST_PP_SLOT_1_DIGIT_4 1
-# elif BOOST_PP_SLOT_TEMP_4 == 2
-# define BOOST_PP_SLOT_1_DIGIT_4 2
-# elif BOOST_PP_SLOT_TEMP_4 == 3
-# define BOOST_PP_SLOT_1_DIGIT_4 3
-# elif BOOST_PP_SLOT_TEMP_4 == 4
-# define BOOST_PP_SLOT_1_DIGIT_4 4
-# elif BOOST_PP_SLOT_TEMP_4 == 5
-# define BOOST_PP_SLOT_1_DIGIT_4 5
-# elif BOOST_PP_SLOT_TEMP_4 == 6
-# define BOOST_PP_SLOT_1_DIGIT_4 6
-# elif BOOST_PP_SLOT_TEMP_4 == 7
-# define BOOST_PP_SLOT_1_DIGIT_4 7
-# elif BOOST_PP_SLOT_TEMP_4 == 8
-# define BOOST_PP_SLOT_1_DIGIT_4 8
-# elif BOOST_PP_SLOT_TEMP_4 == 9
-# define BOOST_PP_SLOT_1_DIGIT_4 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_SLOT_1_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_SLOT_1_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_SLOT_1_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_SLOT_1_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_SLOT_1_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_SLOT_1_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_SLOT_1_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_SLOT_1_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_SLOT_1_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_SLOT_1_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_SLOT_1_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_SLOT_1_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_SLOT_1_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_SLOT_1_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_SLOT_1_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_SLOT_1_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_SLOT_1_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_SLOT_1_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_SLOT_1_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_SLOT_1_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_SLOT_1_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_SLOT_1_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_SLOT_1_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_SLOT_1_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_SLOT_1_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_SLOT_1_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_SLOT_1_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_SLOT_1_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_SLOT_1_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_SLOT_1_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_SLOT_1_DIGIT_10
-# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_1_DIGIT_10, BOOST_PP_SLOT_1_DIGIT_9, BOOST_PP_SLOT_1_DIGIT_8, BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
-# elif BOOST_PP_SLOT_1_DIGIT_9
-# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_1_DIGIT_9, BOOST_PP_SLOT_1_DIGIT_8, BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
-# elif BOOST_PP_SLOT_1_DIGIT_8
-# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_1_DIGIT_8, BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
-# elif BOOST_PP_SLOT_1_DIGIT_7
-# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
-# elif BOOST_PP_SLOT_1_DIGIT_6
-# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
-# elif BOOST_PP_SLOT_1_DIGIT_5
-# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
-# elif BOOST_PP_SLOT_1_DIGIT_4
-# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
-# elif BOOST_PP_SLOT_1_DIGIT_3
-# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
-# elif BOOST_PP_SLOT_1_DIGIT_2
-# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
-# else
-# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_1_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/slot/detail/slot2.hpp b/libcutl/cutl/details/boost/preprocessor/slot/detail/slot2.hpp
deleted file mode 100644
index e574651..0000000
--- a/libcutl/cutl/details/boost/preprocessor/slot/detail/slot2.hpp
+++ /dev/null
@@ -1,267 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_SLOT_2
-#
-# undef BOOST_PP_SLOT_2_DIGIT_1
-# undef BOOST_PP_SLOT_2_DIGIT_2
-# undef BOOST_PP_SLOT_2_DIGIT_3
-# undef BOOST_PP_SLOT_2_DIGIT_4
-# undef BOOST_PP_SLOT_2_DIGIT_5
-# undef BOOST_PP_SLOT_2_DIGIT_6
-# undef BOOST_PP_SLOT_2_DIGIT_7
-# undef BOOST_PP_SLOT_2_DIGIT_8
-# undef BOOST_PP_SLOT_2_DIGIT_9
-# undef BOOST_PP_SLOT_2_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_10 == 0
-# define BOOST_PP_SLOT_2_DIGIT_10 0
-# elif BOOST_PP_SLOT_TEMP_10 == 1
-# define BOOST_PP_SLOT_2_DIGIT_10 1
-# elif BOOST_PP_SLOT_TEMP_10 == 2
-# define BOOST_PP_SLOT_2_DIGIT_10 2
-# elif BOOST_PP_SLOT_TEMP_10 == 3
-# define BOOST_PP_SLOT_2_DIGIT_10 3
-# elif BOOST_PP_SLOT_TEMP_10 == 4
-# define BOOST_PP_SLOT_2_DIGIT_10 4
-# elif BOOST_PP_SLOT_TEMP_10 == 5
-# define BOOST_PP_SLOT_2_DIGIT_10 5
-# elif BOOST_PP_SLOT_TEMP_10 == 6
-# define BOOST_PP_SLOT_2_DIGIT_10 6
-# elif BOOST_PP_SLOT_TEMP_10 == 7
-# define BOOST_PP_SLOT_2_DIGIT_10 7
-# elif BOOST_PP_SLOT_TEMP_10 == 8
-# define BOOST_PP_SLOT_2_DIGIT_10 8
-# elif BOOST_PP_SLOT_TEMP_10 == 9
-# define BOOST_PP_SLOT_2_DIGIT_10 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_9 == 0
-# define BOOST_PP_SLOT_2_DIGIT_9 0
-# elif BOOST_PP_SLOT_TEMP_9 == 1
-# define BOOST_PP_SLOT_2_DIGIT_9 1
-# elif BOOST_PP_SLOT_TEMP_9 == 2
-# define BOOST_PP_SLOT_2_DIGIT_9 2
-# elif BOOST_PP_SLOT_TEMP_9 == 3
-# define BOOST_PP_SLOT_2_DIGIT_9 3
-# elif BOOST_PP_SLOT_TEMP_9 == 4
-# define BOOST_PP_SLOT_2_DIGIT_9 4
-# elif BOOST_PP_SLOT_TEMP_9 == 5
-# define BOOST_PP_SLOT_2_DIGIT_9 5
-# elif BOOST_PP_SLOT_TEMP_9 == 6
-# define BOOST_PP_SLOT_2_DIGIT_9 6
-# elif BOOST_PP_SLOT_TEMP_9 == 7
-# define BOOST_PP_SLOT_2_DIGIT_9 7
-# elif BOOST_PP_SLOT_TEMP_9 == 8
-# define BOOST_PP_SLOT_2_DIGIT_9 8
-# elif BOOST_PP_SLOT_TEMP_9 == 9
-# define BOOST_PP_SLOT_2_DIGIT_9 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_8 == 0
-# define BOOST_PP_SLOT_2_DIGIT_8 0
-# elif BOOST_PP_SLOT_TEMP_8 == 1
-# define BOOST_PP_SLOT_2_DIGIT_8 1
-# elif BOOST_PP_SLOT_TEMP_8 == 2
-# define BOOST_PP_SLOT_2_DIGIT_8 2
-# elif BOOST_PP_SLOT_TEMP_8 == 3
-# define BOOST_PP_SLOT_2_DIGIT_8 3
-# elif BOOST_PP_SLOT_TEMP_8 == 4
-# define BOOST_PP_SLOT_2_DIGIT_8 4
-# elif BOOST_PP_SLOT_TEMP_8 == 5
-# define BOOST_PP_SLOT_2_DIGIT_8 5
-# elif BOOST_PP_SLOT_TEMP_8 == 6
-# define BOOST_PP_SLOT_2_DIGIT_8 6
-# elif BOOST_PP_SLOT_TEMP_8 == 7
-# define BOOST_PP_SLOT_2_DIGIT_8 7
-# elif BOOST_PP_SLOT_TEMP_8 == 8
-# define BOOST_PP_SLOT_2_DIGIT_8 8
-# elif BOOST_PP_SLOT_TEMP_8 == 9
-# define BOOST_PP_SLOT_2_DIGIT_8 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_7 == 0
-# define BOOST_PP_SLOT_2_DIGIT_7 0
-# elif BOOST_PP_SLOT_TEMP_7 == 1
-# define BOOST_PP_SLOT_2_DIGIT_7 1
-# elif BOOST_PP_SLOT_TEMP_7 == 2
-# define BOOST_PP_SLOT_2_DIGIT_7 2
-# elif BOOST_PP_SLOT_TEMP_7 == 3
-# define BOOST_PP_SLOT_2_DIGIT_7 3
-# elif BOOST_PP_SLOT_TEMP_7 == 4
-# define BOOST_PP_SLOT_2_DIGIT_7 4
-# elif BOOST_PP_SLOT_TEMP_7 == 5
-# define BOOST_PP_SLOT_2_DIGIT_7 5
-# elif BOOST_PP_SLOT_TEMP_7 == 6
-# define BOOST_PP_SLOT_2_DIGIT_7 6
-# elif BOOST_PP_SLOT_TEMP_7 == 7
-# define BOOST_PP_SLOT_2_DIGIT_7 7
-# elif BOOST_PP_SLOT_TEMP_7 == 8
-# define BOOST_PP_SLOT_2_DIGIT_7 8
-# elif BOOST_PP_SLOT_TEMP_7 == 9
-# define BOOST_PP_SLOT_2_DIGIT_7 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_6 == 0
-# define BOOST_PP_SLOT_2_DIGIT_6 0
-# elif BOOST_PP_SLOT_TEMP_6 == 1
-# define BOOST_PP_SLOT_2_DIGIT_6 1
-# elif BOOST_PP_SLOT_TEMP_6 == 2
-# define BOOST_PP_SLOT_2_DIGIT_6 2
-# elif BOOST_PP_SLOT_TEMP_6 == 3
-# define BOOST_PP_SLOT_2_DIGIT_6 3
-# elif BOOST_PP_SLOT_TEMP_6 == 4
-# define BOOST_PP_SLOT_2_DIGIT_6 4
-# elif BOOST_PP_SLOT_TEMP_6 == 5
-# define BOOST_PP_SLOT_2_DIGIT_6 5
-# elif BOOST_PP_SLOT_TEMP_6 == 6
-# define BOOST_PP_SLOT_2_DIGIT_6 6
-# elif BOOST_PP_SLOT_TEMP_6 == 7
-# define BOOST_PP_SLOT_2_DIGIT_6 7
-# elif BOOST_PP_SLOT_TEMP_6 == 8
-# define BOOST_PP_SLOT_2_DIGIT_6 8
-# elif BOOST_PP_SLOT_TEMP_6 == 9
-# define BOOST_PP_SLOT_2_DIGIT_6 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_5 == 0
-# define BOOST_PP_SLOT_2_DIGIT_5 0
-# elif BOOST_PP_SLOT_TEMP_5 == 1
-# define BOOST_PP_SLOT_2_DIGIT_5 1
-# elif BOOST_PP_SLOT_TEMP_5 == 2
-# define BOOST_PP_SLOT_2_DIGIT_5 2
-# elif BOOST_PP_SLOT_TEMP_5 == 3
-# define BOOST_PP_SLOT_2_DIGIT_5 3
-# elif BOOST_PP_SLOT_TEMP_5 == 4
-# define BOOST_PP_SLOT_2_DIGIT_5 4
-# elif BOOST_PP_SLOT_TEMP_5 == 5
-# define BOOST_PP_SLOT_2_DIGIT_5 5
-# elif BOOST_PP_SLOT_TEMP_5 == 6
-# define BOOST_PP_SLOT_2_DIGIT_5 6
-# elif BOOST_PP_SLOT_TEMP_5 == 7
-# define BOOST_PP_SLOT_2_DIGIT_5 7
-# elif BOOST_PP_SLOT_TEMP_5 == 8
-# define BOOST_PP_SLOT_2_DIGIT_5 8
-# elif BOOST_PP_SLOT_TEMP_5 == 9
-# define BOOST_PP_SLOT_2_DIGIT_5 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_4 == 0
-# define BOOST_PP_SLOT_2_DIGIT_4 0
-# elif BOOST_PP_SLOT_TEMP_4 == 1
-# define BOOST_PP_SLOT_2_DIGIT_4 1
-# elif BOOST_PP_SLOT_TEMP_4 == 2
-# define BOOST_PP_SLOT_2_DIGIT_4 2
-# elif BOOST_PP_SLOT_TEMP_4 == 3
-# define BOOST_PP_SLOT_2_DIGIT_4 3
-# elif BOOST_PP_SLOT_TEMP_4 == 4
-# define BOOST_PP_SLOT_2_DIGIT_4 4
-# elif BOOST_PP_SLOT_TEMP_4 == 5
-# define BOOST_PP_SLOT_2_DIGIT_4 5
-# elif BOOST_PP_SLOT_TEMP_4 == 6
-# define BOOST_PP_SLOT_2_DIGIT_4 6
-# elif BOOST_PP_SLOT_TEMP_4 == 7
-# define BOOST_PP_SLOT_2_DIGIT_4 7
-# elif BOOST_PP_SLOT_TEMP_4 == 8
-# define BOOST_PP_SLOT_2_DIGIT_4 8
-# elif BOOST_PP_SLOT_TEMP_4 == 9
-# define BOOST_PP_SLOT_2_DIGIT_4 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_SLOT_2_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_SLOT_2_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_SLOT_2_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_SLOT_2_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_SLOT_2_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_SLOT_2_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_SLOT_2_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_SLOT_2_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_SLOT_2_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_SLOT_2_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_SLOT_2_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_SLOT_2_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_SLOT_2_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_SLOT_2_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_SLOT_2_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_SLOT_2_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_SLOT_2_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_SLOT_2_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_SLOT_2_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_SLOT_2_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_SLOT_2_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_SLOT_2_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_SLOT_2_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_SLOT_2_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_SLOT_2_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_SLOT_2_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_SLOT_2_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_SLOT_2_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_SLOT_2_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_SLOT_2_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_SLOT_2_DIGIT_10
-# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_2_DIGIT_10, BOOST_PP_SLOT_2_DIGIT_9, BOOST_PP_SLOT_2_DIGIT_8, BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
-# elif BOOST_PP_SLOT_2_DIGIT_9
-# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_2_DIGIT_9, BOOST_PP_SLOT_2_DIGIT_8, BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
-# elif BOOST_PP_SLOT_2_DIGIT_8
-# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_2_DIGIT_8, BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
-# elif BOOST_PP_SLOT_2_DIGIT_7
-# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
-# elif BOOST_PP_SLOT_2_DIGIT_6
-# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
-# elif BOOST_PP_SLOT_2_DIGIT_5
-# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
-# elif BOOST_PP_SLOT_2_DIGIT_4
-# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
-# elif BOOST_PP_SLOT_2_DIGIT_3
-# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
-# elif BOOST_PP_SLOT_2_DIGIT_2
-# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
-# else
-# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_2_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/slot/detail/slot3.hpp b/libcutl/cutl/details/boost/preprocessor/slot/detail/slot3.hpp
deleted file mode 100644
index 7347ded..0000000
--- a/libcutl/cutl/details/boost/preprocessor/slot/detail/slot3.hpp
+++ /dev/null
@@ -1,267 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_SLOT_3
-#
-# undef BOOST_PP_SLOT_3_DIGIT_1
-# undef BOOST_PP_SLOT_3_DIGIT_2
-# undef BOOST_PP_SLOT_3_DIGIT_3
-# undef BOOST_PP_SLOT_3_DIGIT_4
-# undef BOOST_PP_SLOT_3_DIGIT_5
-# undef BOOST_PP_SLOT_3_DIGIT_6
-# undef BOOST_PP_SLOT_3_DIGIT_7
-# undef BOOST_PP_SLOT_3_DIGIT_8
-# undef BOOST_PP_SLOT_3_DIGIT_9
-# undef BOOST_PP_SLOT_3_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_10 == 0
-# define BOOST_PP_SLOT_3_DIGIT_10 0
-# elif BOOST_PP_SLOT_TEMP_10 == 1
-# define BOOST_PP_SLOT_3_DIGIT_10 1
-# elif BOOST_PP_SLOT_TEMP_10 == 2
-# define BOOST_PP_SLOT_3_DIGIT_10 2
-# elif BOOST_PP_SLOT_TEMP_10 == 3
-# define BOOST_PP_SLOT_3_DIGIT_10 3
-# elif BOOST_PP_SLOT_TEMP_10 == 4
-# define BOOST_PP_SLOT_3_DIGIT_10 4
-# elif BOOST_PP_SLOT_TEMP_10 == 5
-# define BOOST_PP_SLOT_3_DIGIT_10 5
-# elif BOOST_PP_SLOT_TEMP_10 == 6
-# define BOOST_PP_SLOT_3_DIGIT_10 6
-# elif BOOST_PP_SLOT_TEMP_10 == 7
-# define BOOST_PP_SLOT_3_DIGIT_10 7
-# elif BOOST_PP_SLOT_TEMP_10 == 8
-# define BOOST_PP_SLOT_3_DIGIT_10 8
-# elif BOOST_PP_SLOT_TEMP_10 == 9
-# define BOOST_PP_SLOT_3_DIGIT_10 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_9 == 0
-# define BOOST_PP_SLOT_3_DIGIT_9 0
-# elif BOOST_PP_SLOT_TEMP_9 == 1
-# define BOOST_PP_SLOT_3_DIGIT_9 1
-# elif BOOST_PP_SLOT_TEMP_9 == 2
-# define BOOST_PP_SLOT_3_DIGIT_9 2
-# elif BOOST_PP_SLOT_TEMP_9 == 3
-# define BOOST_PP_SLOT_3_DIGIT_9 3
-# elif BOOST_PP_SLOT_TEMP_9 == 4
-# define BOOST_PP_SLOT_3_DIGIT_9 4
-# elif BOOST_PP_SLOT_TEMP_9 == 5
-# define BOOST_PP_SLOT_3_DIGIT_9 5
-# elif BOOST_PP_SLOT_TEMP_9 == 6
-# define BOOST_PP_SLOT_3_DIGIT_9 6
-# elif BOOST_PP_SLOT_TEMP_9 == 7
-# define BOOST_PP_SLOT_3_DIGIT_9 7
-# elif BOOST_PP_SLOT_TEMP_9 == 8
-# define BOOST_PP_SLOT_3_DIGIT_9 8
-# elif BOOST_PP_SLOT_TEMP_9 == 9
-# define BOOST_PP_SLOT_3_DIGIT_9 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_8 == 0
-# define BOOST_PP_SLOT_3_DIGIT_8 0
-# elif BOOST_PP_SLOT_TEMP_8 == 1
-# define BOOST_PP_SLOT_3_DIGIT_8 1
-# elif BOOST_PP_SLOT_TEMP_8 == 2
-# define BOOST_PP_SLOT_3_DIGIT_8 2
-# elif BOOST_PP_SLOT_TEMP_8 == 3
-# define BOOST_PP_SLOT_3_DIGIT_8 3
-# elif BOOST_PP_SLOT_TEMP_8 == 4
-# define BOOST_PP_SLOT_3_DIGIT_8 4
-# elif BOOST_PP_SLOT_TEMP_8 == 5
-# define BOOST_PP_SLOT_3_DIGIT_8 5
-# elif BOOST_PP_SLOT_TEMP_8 == 6
-# define BOOST_PP_SLOT_3_DIGIT_8 6
-# elif BOOST_PP_SLOT_TEMP_8 == 7
-# define BOOST_PP_SLOT_3_DIGIT_8 7
-# elif BOOST_PP_SLOT_TEMP_8 == 8
-# define BOOST_PP_SLOT_3_DIGIT_8 8
-# elif BOOST_PP_SLOT_TEMP_8 == 9
-# define BOOST_PP_SLOT_3_DIGIT_8 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_7 == 0
-# define BOOST_PP_SLOT_3_DIGIT_7 0
-# elif BOOST_PP_SLOT_TEMP_7 == 1
-# define BOOST_PP_SLOT_3_DIGIT_7 1
-# elif BOOST_PP_SLOT_TEMP_7 == 2
-# define BOOST_PP_SLOT_3_DIGIT_7 2
-# elif BOOST_PP_SLOT_TEMP_7 == 3
-# define BOOST_PP_SLOT_3_DIGIT_7 3
-# elif BOOST_PP_SLOT_TEMP_7 == 4
-# define BOOST_PP_SLOT_3_DIGIT_7 4
-# elif BOOST_PP_SLOT_TEMP_7 == 5
-# define BOOST_PP_SLOT_3_DIGIT_7 5
-# elif BOOST_PP_SLOT_TEMP_7 == 6
-# define BOOST_PP_SLOT_3_DIGIT_7 6
-# elif BOOST_PP_SLOT_TEMP_7 == 7
-# define BOOST_PP_SLOT_3_DIGIT_7 7
-# elif BOOST_PP_SLOT_TEMP_7 == 8
-# define BOOST_PP_SLOT_3_DIGIT_7 8
-# elif BOOST_PP_SLOT_TEMP_7 == 9
-# define BOOST_PP_SLOT_3_DIGIT_7 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_6 == 0
-# define BOOST_PP_SLOT_3_DIGIT_6 0
-# elif BOOST_PP_SLOT_TEMP_6 == 1
-# define BOOST_PP_SLOT_3_DIGIT_6 1
-# elif BOOST_PP_SLOT_TEMP_6 == 2
-# define BOOST_PP_SLOT_3_DIGIT_6 2
-# elif BOOST_PP_SLOT_TEMP_6 == 3
-# define BOOST_PP_SLOT_3_DIGIT_6 3
-# elif BOOST_PP_SLOT_TEMP_6 == 4
-# define BOOST_PP_SLOT_3_DIGIT_6 4
-# elif BOOST_PP_SLOT_TEMP_6 == 5
-# define BOOST_PP_SLOT_3_DIGIT_6 5
-# elif BOOST_PP_SLOT_TEMP_6 == 6
-# define BOOST_PP_SLOT_3_DIGIT_6 6
-# elif BOOST_PP_SLOT_TEMP_6 == 7
-# define BOOST_PP_SLOT_3_DIGIT_6 7
-# elif BOOST_PP_SLOT_TEMP_6 == 8
-# define BOOST_PP_SLOT_3_DIGIT_6 8
-# elif BOOST_PP_SLOT_TEMP_6 == 9
-# define BOOST_PP_SLOT_3_DIGIT_6 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_5 == 0
-# define BOOST_PP_SLOT_3_DIGIT_5 0
-# elif BOOST_PP_SLOT_TEMP_5 == 1
-# define BOOST_PP_SLOT_3_DIGIT_5 1
-# elif BOOST_PP_SLOT_TEMP_5 == 2
-# define BOOST_PP_SLOT_3_DIGIT_5 2
-# elif BOOST_PP_SLOT_TEMP_5 == 3
-# define BOOST_PP_SLOT_3_DIGIT_5 3
-# elif BOOST_PP_SLOT_TEMP_5 == 4
-# define BOOST_PP_SLOT_3_DIGIT_5 4
-# elif BOOST_PP_SLOT_TEMP_5 == 5
-# define BOOST_PP_SLOT_3_DIGIT_5 5
-# elif BOOST_PP_SLOT_TEMP_5 == 6
-# define BOOST_PP_SLOT_3_DIGIT_5 6
-# elif BOOST_PP_SLOT_TEMP_5 == 7
-# define BOOST_PP_SLOT_3_DIGIT_5 7
-# elif BOOST_PP_SLOT_TEMP_5 == 8
-# define BOOST_PP_SLOT_3_DIGIT_5 8
-# elif BOOST_PP_SLOT_TEMP_5 == 9
-# define BOOST_PP_SLOT_3_DIGIT_5 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_4 == 0
-# define BOOST_PP_SLOT_3_DIGIT_4 0
-# elif BOOST_PP_SLOT_TEMP_4 == 1
-# define BOOST_PP_SLOT_3_DIGIT_4 1
-# elif BOOST_PP_SLOT_TEMP_4 == 2
-# define BOOST_PP_SLOT_3_DIGIT_4 2
-# elif BOOST_PP_SLOT_TEMP_4 == 3
-# define BOOST_PP_SLOT_3_DIGIT_4 3
-# elif BOOST_PP_SLOT_TEMP_4 == 4
-# define BOOST_PP_SLOT_3_DIGIT_4 4
-# elif BOOST_PP_SLOT_TEMP_4 == 5
-# define BOOST_PP_SLOT_3_DIGIT_4 5
-# elif BOOST_PP_SLOT_TEMP_4 == 6
-# define BOOST_PP_SLOT_3_DIGIT_4 6
-# elif BOOST_PP_SLOT_TEMP_4 == 7
-# define BOOST_PP_SLOT_3_DIGIT_4 7
-# elif BOOST_PP_SLOT_TEMP_4 == 8
-# define BOOST_PP_SLOT_3_DIGIT_4 8
-# elif BOOST_PP_SLOT_TEMP_4 == 9
-# define BOOST_PP_SLOT_3_DIGIT_4 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_SLOT_3_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_SLOT_3_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_SLOT_3_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_SLOT_3_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_SLOT_3_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_SLOT_3_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_SLOT_3_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_SLOT_3_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_SLOT_3_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_SLOT_3_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_SLOT_3_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_SLOT_3_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_SLOT_3_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_SLOT_3_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_SLOT_3_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_SLOT_3_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_SLOT_3_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_SLOT_3_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_SLOT_3_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_SLOT_3_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_SLOT_3_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_SLOT_3_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_SLOT_3_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_SLOT_3_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_SLOT_3_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_SLOT_3_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_SLOT_3_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_SLOT_3_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_SLOT_3_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_SLOT_3_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_SLOT_3_DIGIT_10
-# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_3_DIGIT_10, BOOST_PP_SLOT_3_DIGIT_9, BOOST_PP_SLOT_3_DIGIT_8, BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
-# elif BOOST_PP_SLOT_3_DIGIT_9
-# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_3_DIGIT_9, BOOST_PP_SLOT_3_DIGIT_8, BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
-# elif BOOST_PP_SLOT_3_DIGIT_8
-# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_3_DIGIT_8, BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
-# elif BOOST_PP_SLOT_3_DIGIT_7
-# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
-# elif BOOST_PP_SLOT_3_DIGIT_6
-# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
-# elif BOOST_PP_SLOT_3_DIGIT_5
-# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
-# elif BOOST_PP_SLOT_3_DIGIT_4
-# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
-# elif BOOST_PP_SLOT_3_DIGIT_3
-# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
-# elif BOOST_PP_SLOT_3_DIGIT_2
-# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
-# else
-# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_3_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/slot/detail/slot4.hpp b/libcutl/cutl/details/boost/preprocessor/slot/detail/slot4.hpp
deleted file mode 100644
index 9b2d557..0000000
--- a/libcutl/cutl/details/boost/preprocessor/slot/detail/slot4.hpp
+++ /dev/null
@@ -1,267 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_SLOT_4
-#
-# undef BOOST_PP_SLOT_4_DIGIT_1
-# undef BOOST_PP_SLOT_4_DIGIT_2
-# undef BOOST_PP_SLOT_4_DIGIT_3
-# undef BOOST_PP_SLOT_4_DIGIT_4
-# undef BOOST_PP_SLOT_4_DIGIT_5
-# undef BOOST_PP_SLOT_4_DIGIT_6
-# undef BOOST_PP_SLOT_4_DIGIT_7
-# undef BOOST_PP_SLOT_4_DIGIT_8
-# undef BOOST_PP_SLOT_4_DIGIT_9
-# undef BOOST_PP_SLOT_4_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_10 == 0
-# define BOOST_PP_SLOT_4_DIGIT_10 0
-# elif BOOST_PP_SLOT_TEMP_10 == 1
-# define BOOST_PP_SLOT_4_DIGIT_10 1
-# elif BOOST_PP_SLOT_TEMP_10 == 2
-# define BOOST_PP_SLOT_4_DIGIT_10 2
-# elif BOOST_PP_SLOT_TEMP_10 == 3
-# define BOOST_PP_SLOT_4_DIGIT_10 3
-# elif BOOST_PP_SLOT_TEMP_10 == 4
-# define BOOST_PP_SLOT_4_DIGIT_10 4
-# elif BOOST_PP_SLOT_TEMP_10 == 5
-# define BOOST_PP_SLOT_4_DIGIT_10 5
-# elif BOOST_PP_SLOT_TEMP_10 == 6
-# define BOOST_PP_SLOT_4_DIGIT_10 6
-# elif BOOST_PP_SLOT_TEMP_10 == 7
-# define BOOST_PP_SLOT_4_DIGIT_10 7
-# elif BOOST_PP_SLOT_TEMP_10 == 8
-# define BOOST_PP_SLOT_4_DIGIT_10 8
-# elif BOOST_PP_SLOT_TEMP_10 == 9
-# define BOOST_PP_SLOT_4_DIGIT_10 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_9 == 0
-# define BOOST_PP_SLOT_4_DIGIT_9 0
-# elif BOOST_PP_SLOT_TEMP_9 == 1
-# define BOOST_PP_SLOT_4_DIGIT_9 1
-# elif BOOST_PP_SLOT_TEMP_9 == 2
-# define BOOST_PP_SLOT_4_DIGIT_9 2
-# elif BOOST_PP_SLOT_TEMP_9 == 3
-# define BOOST_PP_SLOT_4_DIGIT_9 3
-# elif BOOST_PP_SLOT_TEMP_9 == 4
-# define BOOST_PP_SLOT_4_DIGIT_9 4
-# elif BOOST_PP_SLOT_TEMP_9 == 5
-# define BOOST_PP_SLOT_4_DIGIT_9 5
-# elif BOOST_PP_SLOT_TEMP_9 == 6
-# define BOOST_PP_SLOT_4_DIGIT_9 6
-# elif BOOST_PP_SLOT_TEMP_9 == 7
-# define BOOST_PP_SLOT_4_DIGIT_9 7
-# elif BOOST_PP_SLOT_TEMP_9 == 8
-# define BOOST_PP_SLOT_4_DIGIT_9 8
-# elif BOOST_PP_SLOT_TEMP_9 == 9
-# define BOOST_PP_SLOT_4_DIGIT_9 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_8 == 0
-# define BOOST_PP_SLOT_4_DIGIT_8 0
-# elif BOOST_PP_SLOT_TEMP_8 == 1
-# define BOOST_PP_SLOT_4_DIGIT_8 1
-# elif BOOST_PP_SLOT_TEMP_8 == 2
-# define BOOST_PP_SLOT_4_DIGIT_8 2
-# elif BOOST_PP_SLOT_TEMP_8 == 3
-# define BOOST_PP_SLOT_4_DIGIT_8 3
-# elif BOOST_PP_SLOT_TEMP_8 == 4
-# define BOOST_PP_SLOT_4_DIGIT_8 4
-# elif BOOST_PP_SLOT_TEMP_8 == 5
-# define BOOST_PP_SLOT_4_DIGIT_8 5
-# elif BOOST_PP_SLOT_TEMP_8 == 6
-# define BOOST_PP_SLOT_4_DIGIT_8 6
-# elif BOOST_PP_SLOT_TEMP_8 == 7
-# define BOOST_PP_SLOT_4_DIGIT_8 7
-# elif BOOST_PP_SLOT_TEMP_8 == 8
-# define BOOST_PP_SLOT_4_DIGIT_8 8
-# elif BOOST_PP_SLOT_TEMP_8 == 9
-# define BOOST_PP_SLOT_4_DIGIT_8 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_7 == 0
-# define BOOST_PP_SLOT_4_DIGIT_7 0
-# elif BOOST_PP_SLOT_TEMP_7 == 1
-# define BOOST_PP_SLOT_4_DIGIT_7 1
-# elif BOOST_PP_SLOT_TEMP_7 == 2
-# define BOOST_PP_SLOT_4_DIGIT_7 2
-# elif BOOST_PP_SLOT_TEMP_7 == 3
-# define BOOST_PP_SLOT_4_DIGIT_7 3
-# elif BOOST_PP_SLOT_TEMP_7 == 4
-# define BOOST_PP_SLOT_4_DIGIT_7 4
-# elif BOOST_PP_SLOT_TEMP_7 == 5
-# define BOOST_PP_SLOT_4_DIGIT_7 5
-# elif BOOST_PP_SLOT_TEMP_7 == 6
-# define BOOST_PP_SLOT_4_DIGIT_7 6
-# elif BOOST_PP_SLOT_TEMP_7 == 7
-# define BOOST_PP_SLOT_4_DIGIT_7 7
-# elif BOOST_PP_SLOT_TEMP_7 == 8
-# define BOOST_PP_SLOT_4_DIGIT_7 8
-# elif BOOST_PP_SLOT_TEMP_7 == 9
-# define BOOST_PP_SLOT_4_DIGIT_7 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_6 == 0
-# define BOOST_PP_SLOT_4_DIGIT_6 0
-# elif BOOST_PP_SLOT_TEMP_6 == 1
-# define BOOST_PP_SLOT_4_DIGIT_6 1
-# elif BOOST_PP_SLOT_TEMP_6 == 2
-# define BOOST_PP_SLOT_4_DIGIT_6 2
-# elif BOOST_PP_SLOT_TEMP_6 == 3
-# define BOOST_PP_SLOT_4_DIGIT_6 3
-# elif BOOST_PP_SLOT_TEMP_6 == 4
-# define BOOST_PP_SLOT_4_DIGIT_6 4
-# elif BOOST_PP_SLOT_TEMP_6 == 5
-# define BOOST_PP_SLOT_4_DIGIT_6 5
-# elif BOOST_PP_SLOT_TEMP_6 == 6
-# define BOOST_PP_SLOT_4_DIGIT_6 6
-# elif BOOST_PP_SLOT_TEMP_6 == 7
-# define BOOST_PP_SLOT_4_DIGIT_6 7
-# elif BOOST_PP_SLOT_TEMP_6 == 8
-# define BOOST_PP_SLOT_4_DIGIT_6 8
-# elif BOOST_PP_SLOT_TEMP_6 == 9
-# define BOOST_PP_SLOT_4_DIGIT_6 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_5 == 0
-# define BOOST_PP_SLOT_4_DIGIT_5 0
-# elif BOOST_PP_SLOT_TEMP_5 == 1
-# define BOOST_PP_SLOT_4_DIGIT_5 1
-# elif BOOST_PP_SLOT_TEMP_5 == 2
-# define BOOST_PP_SLOT_4_DIGIT_5 2
-# elif BOOST_PP_SLOT_TEMP_5 == 3
-# define BOOST_PP_SLOT_4_DIGIT_5 3
-# elif BOOST_PP_SLOT_TEMP_5 == 4
-# define BOOST_PP_SLOT_4_DIGIT_5 4
-# elif BOOST_PP_SLOT_TEMP_5 == 5
-# define BOOST_PP_SLOT_4_DIGIT_5 5
-# elif BOOST_PP_SLOT_TEMP_5 == 6
-# define BOOST_PP_SLOT_4_DIGIT_5 6
-# elif BOOST_PP_SLOT_TEMP_5 == 7
-# define BOOST_PP_SLOT_4_DIGIT_5 7
-# elif BOOST_PP_SLOT_TEMP_5 == 8
-# define BOOST_PP_SLOT_4_DIGIT_5 8
-# elif BOOST_PP_SLOT_TEMP_5 == 9
-# define BOOST_PP_SLOT_4_DIGIT_5 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_4 == 0
-# define BOOST_PP_SLOT_4_DIGIT_4 0
-# elif BOOST_PP_SLOT_TEMP_4 == 1
-# define BOOST_PP_SLOT_4_DIGIT_4 1
-# elif BOOST_PP_SLOT_TEMP_4 == 2
-# define BOOST_PP_SLOT_4_DIGIT_4 2
-# elif BOOST_PP_SLOT_TEMP_4 == 3
-# define BOOST_PP_SLOT_4_DIGIT_4 3
-# elif BOOST_PP_SLOT_TEMP_4 == 4
-# define BOOST_PP_SLOT_4_DIGIT_4 4
-# elif BOOST_PP_SLOT_TEMP_4 == 5
-# define BOOST_PP_SLOT_4_DIGIT_4 5
-# elif BOOST_PP_SLOT_TEMP_4 == 6
-# define BOOST_PP_SLOT_4_DIGIT_4 6
-# elif BOOST_PP_SLOT_TEMP_4 == 7
-# define BOOST_PP_SLOT_4_DIGIT_4 7
-# elif BOOST_PP_SLOT_TEMP_4 == 8
-# define BOOST_PP_SLOT_4_DIGIT_4 8
-# elif BOOST_PP_SLOT_TEMP_4 == 9
-# define BOOST_PP_SLOT_4_DIGIT_4 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_SLOT_4_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_SLOT_4_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_SLOT_4_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_SLOT_4_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_SLOT_4_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_SLOT_4_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_SLOT_4_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_SLOT_4_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_SLOT_4_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_SLOT_4_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_SLOT_4_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_SLOT_4_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_SLOT_4_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_SLOT_4_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_SLOT_4_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_SLOT_4_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_SLOT_4_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_SLOT_4_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_SLOT_4_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_SLOT_4_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_SLOT_4_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_SLOT_4_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_SLOT_4_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_SLOT_4_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_SLOT_4_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_SLOT_4_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_SLOT_4_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_SLOT_4_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_SLOT_4_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_SLOT_4_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_SLOT_4_DIGIT_10
-# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_4_DIGIT_10, BOOST_PP_SLOT_4_DIGIT_9, BOOST_PP_SLOT_4_DIGIT_8, BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
-# elif BOOST_PP_SLOT_4_DIGIT_9
-# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_4_DIGIT_9, BOOST_PP_SLOT_4_DIGIT_8, BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
-# elif BOOST_PP_SLOT_4_DIGIT_8
-# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_4_DIGIT_8, BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
-# elif BOOST_PP_SLOT_4_DIGIT_7
-# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
-# elif BOOST_PP_SLOT_4_DIGIT_6
-# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
-# elif BOOST_PP_SLOT_4_DIGIT_5
-# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
-# elif BOOST_PP_SLOT_4_DIGIT_4
-# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
-# elif BOOST_PP_SLOT_4_DIGIT_3
-# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
-# elif BOOST_PP_SLOT_4_DIGIT_2
-# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
-# else
-# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_4_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/slot/detail/slot5.hpp b/libcutl/cutl/details/boost/preprocessor/slot/detail/slot5.hpp
deleted file mode 100644
index c5fce6a..0000000
--- a/libcutl/cutl/details/boost/preprocessor/slot/detail/slot5.hpp
+++ /dev/null
@@ -1,267 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# include <cutl/details/boost/preprocessor/slot/detail/shared.hpp>
-#
-# undef BOOST_PP_SLOT_5
-#
-# undef BOOST_PP_SLOT_5_DIGIT_1
-# undef BOOST_PP_SLOT_5_DIGIT_2
-# undef BOOST_PP_SLOT_5_DIGIT_3
-# undef BOOST_PP_SLOT_5_DIGIT_4
-# undef BOOST_PP_SLOT_5_DIGIT_5
-# undef BOOST_PP_SLOT_5_DIGIT_6
-# undef BOOST_PP_SLOT_5_DIGIT_7
-# undef BOOST_PP_SLOT_5_DIGIT_8
-# undef BOOST_PP_SLOT_5_DIGIT_9
-# undef BOOST_PP_SLOT_5_DIGIT_10
-#
-# if BOOST_PP_SLOT_TEMP_10 == 0
-# define BOOST_PP_SLOT_5_DIGIT_10 0
-# elif BOOST_PP_SLOT_TEMP_10 == 1
-# define BOOST_PP_SLOT_5_DIGIT_10 1
-# elif BOOST_PP_SLOT_TEMP_10 == 2
-# define BOOST_PP_SLOT_5_DIGIT_10 2
-# elif BOOST_PP_SLOT_TEMP_10 == 3
-# define BOOST_PP_SLOT_5_DIGIT_10 3
-# elif BOOST_PP_SLOT_TEMP_10 == 4
-# define BOOST_PP_SLOT_5_DIGIT_10 4
-# elif BOOST_PP_SLOT_TEMP_10 == 5
-# define BOOST_PP_SLOT_5_DIGIT_10 5
-# elif BOOST_PP_SLOT_TEMP_10 == 6
-# define BOOST_PP_SLOT_5_DIGIT_10 6
-# elif BOOST_PP_SLOT_TEMP_10 == 7
-# define BOOST_PP_SLOT_5_DIGIT_10 7
-# elif BOOST_PP_SLOT_TEMP_10 == 8
-# define BOOST_PP_SLOT_5_DIGIT_10 8
-# elif BOOST_PP_SLOT_TEMP_10 == 9
-# define BOOST_PP_SLOT_5_DIGIT_10 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_9 == 0
-# define BOOST_PP_SLOT_5_DIGIT_9 0
-# elif BOOST_PP_SLOT_TEMP_9 == 1
-# define BOOST_PP_SLOT_5_DIGIT_9 1
-# elif BOOST_PP_SLOT_TEMP_9 == 2
-# define BOOST_PP_SLOT_5_DIGIT_9 2
-# elif BOOST_PP_SLOT_TEMP_9 == 3
-# define BOOST_PP_SLOT_5_DIGIT_9 3
-# elif BOOST_PP_SLOT_TEMP_9 == 4
-# define BOOST_PP_SLOT_5_DIGIT_9 4
-# elif BOOST_PP_SLOT_TEMP_9 == 5
-# define BOOST_PP_SLOT_5_DIGIT_9 5
-# elif BOOST_PP_SLOT_TEMP_9 == 6
-# define BOOST_PP_SLOT_5_DIGIT_9 6
-# elif BOOST_PP_SLOT_TEMP_9 == 7
-# define BOOST_PP_SLOT_5_DIGIT_9 7
-# elif BOOST_PP_SLOT_TEMP_9 == 8
-# define BOOST_PP_SLOT_5_DIGIT_9 8
-# elif BOOST_PP_SLOT_TEMP_9 == 9
-# define BOOST_PP_SLOT_5_DIGIT_9 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_8 == 0
-# define BOOST_PP_SLOT_5_DIGIT_8 0
-# elif BOOST_PP_SLOT_TEMP_8 == 1
-# define BOOST_PP_SLOT_5_DIGIT_8 1
-# elif BOOST_PP_SLOT_TEMP_8 == 2
-# define BOOST_PP_SLOT_5_DIGIT_8 2
-# elif BOOST_PP_SLOT_TEMP_8 == 3
-# define BOOST_PP_SLOT_5_DIGIT_8 3
-# elif BOOST_PP_SLOT_TEMP_8 == 4
-# define BOOST_PP_SLOT_5_DIGIT_8 4
-# elif BOOST_PP_SLOT_TEMP_8 == 5
-# define BOOST_PP_SLOT_5_DIGIT_8 5
-# elif BOOST_PP_SLOT_TEMP_8 == 6
-# define BOOST_PP_SLOT_5_DIGIT_8 6
-# elif BOOST_PP_SLOT_TEMP_8 == 7
-# define BOOST_PP_SLOT_5_DIGIT_8 7
-# elif BOOST_PP_SLOT_TEMP_8 == 8
-# define BOOST_PP_SLOT_5_DIGIT_8 8
-# elif BOOST_PP_SLOT_TEMP_8 == 9
-# define BOOST_PP_SLOT_5_DIGIT_8 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_7 == 0
-# define BOOST_PP_SLOT_5_DIGIT_7 0
-# elif BOOST_PP_SLOT_TEMP_7 == 1
-# define BOOST_PP_SLOT_5_DIGIT_7 1
-# elif BOOST_PP_SLOT_TEMP_7 == 2
-# define BOOST_PP_SLOT_5_DIGIT_7 2
-# elif BOOST_PP_SLOT_TEMP_7 == 3
-# define BOOST_PP_SLOT_5_DIGIT_7 3
-# elif BOOST_PP_SLOT_TEMP_7 == 4
-# define BOOST_PP_SLOT_5_DIGIT_7 4
-# elif BOOST_PP_SLOT_TEMP_7 == 5
-# define BOOST_PP_SLOT_5_DIGIT_7 5
-# elif BOOST_PP_SLOT_TEMP_7 == 6
-# define BOOST_PP_SLOT_5_DIGIT_7 6
-# elif BOOST_PP_SLOT_TEMP_7 == 7
-# define BOOST_PP_SLOT_5_DIGIT_7 7
-# elif BOOST_PP_SLOT_TEMP_7 == 8
-# define BOOST_PP_SLOT_5_DIGIT_7 8
-# elif BOOST_PP_SLOT_TEMP_7 == 9
-# define BOOST_PP_SLOT_5_DIGIT_7 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_6 == 0
-# define BOOST_PP_SLOT_5_DIGIT_6 0
-# elif BOOST_PP_SLOT_TEMP_6 == 1
-# define BOOST_PP_SLOT_5_DIGIT_6 1
-# elif BOOST_PP_SLOT_TEMP_6 == 2
-# define BOOST_PP_SLOT_5_DIGIT_6 2
-# elif BOOST_PP_SLOT_TEMP_6 == 3
-# define BOOST_PP_SLOT_5_DIGIT_6 3
-# elif BOOST_PP_SLOT_TEMP_6 == 4
-# define BOOST_PP_SLOT_5_DIGIT_6 4
-# elif BOOST_PP_SLOT_TEMP_6 == 5
-# define BOOST_PP_SLOT_5_DIGIT_6 5
-# elif BOOST_PP_SLOT_TEMP_6 == 6
-# define BOOST_PP_SLOT_5_DIGIT_6 6
-# elif BOOST_PP_SLOT_TEMP_6 == 7
-# define BOOST_PP_SLOT_5_DIGIT_6 7
-# elif BOOST_PP_SLOT_TEMP_6 == 8
-# define BOOST_PP_SLOT_5_DIGIT_6 8
-# elif BOOST_PP_SLOT_TEMP_6 == 9
-# define BOOST_PP_SLOT_5_DIGIT_6 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_5 == 0
-# define BOOST_PP_SLOT_5_DIGIT_5 0
-# elif BOOST_PP_SLOT_TEMP_5 == 1
-# define BOOST_PP_SLOT_5_DIGIT_5 1
-# elif BOOST_PP_SLOT_TEMP_5 == 2
-# define BOOST_PP_SLOT_5_DIGIT_5 2
-# elif BOOST_PP_SLOT_TEMP_5 == 3
-# define BOOST_PP_SLOT_5_DIGIT_5 3
-# elif BOOST_PP_SLOT_TEMP_5 == 4
-# define BOOST_PP_SLOT_5_DIGIT_5 4
-# elif BOOST_PP_SLOT_TEMP_5 == 5
-# define BOOST_PP_SLOT_5_DIGIT_5 5
-# elif BOOST_PP_SLOT_TEMP_5 == 6
-# define BOOST_PP_SLOT_5_DIGIT_5 6
-# elif BOOST_PP_SLOT_TEMP_5 == 7
-# define BOOST_PP_SLOT_5_DIGIT_5 7
-# elif BOOST_PP_SLOT_TEMP_5 == 8
-# define BOOST_PP_SLOT_5_DIGIT_5 8
-# elif BOOST_PP_SLOT_TEMP_5 == 9
-# define BOOST_PP_SLOT_5_DIGIT_5 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_4 == 0
-# define BOOST_PP_SLOT_5_DIGIT_4 0
-# elif BOOST_PP_SLOT_TEMP_4 == 1
-# define BOOST_PP_SLOT_5_DIGIT_4 1
-# elif BOOST_PP_SLOT_TEMP_4 == 2
-# define BOOST_PP_SLOT_5_DIGIT_4 2
-# elif BOOST_PP_SLOT_TEMP_4 == 3
-# define BOOST_PP_SLOT_5_DIGIT_4 3
-# elif BOOST_PP_SLOT_TEMP_4 == 4
-# define BOOST_PP_SLOT_5_DIGIT_4 4
-# elif BOOST_PP_SLOT_TEMP_4 == 5
-# define BOOST_PP_SLOT_5_DIGIT_4 5
-# elif BOOST_PP_SLOT_TEMP_4 == 6
-# define BOOST_PP_SLOT_5_DIGIT_4 6
-# elif BOOST_PP_SLOT_TEMP_4 == 7
-# define BOOST_PP_SLOT_5_DIGIT_4 7
-# elif BOOST_PP_SLOT_TEMP_4 == 8
-# define BOOST_PP_SLOT_5_DIGIT_4 8
-# elif BOOST_PP_SLOT_TEMP_4 == 9
-# define BOOST_PP_SLOT_5_DIGIT_4 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_3 == 0
-# define BOOST_PP_SLOT_5_DIGIT_3 0
-# elif BOOST_PP_SLOT_TEMP_3 == 1
-# define BOOST_PP_SLOT_5_DIGIT_3 1
-# elif BOOST_PP_SLOT_TEMP_3 == 2
-# define BOOST_PP_SLOT_5_DIGIT_3 2
-# elif BOOST_PP_SLOT_TEMP_3 == 3
-# define BOOST_PP_SLOT_5_DIGIT_3 3
-# elif BOOST_PP_SLOT_TEMP_3 == 4
-# define BOOST_PP_SLOT_5_DIGIT_3 4
-# elif BOOST_PP_SLOT_TEMP_3 == 5
-# define BOOST_PP_SLOT_5_DIGIT_3 5
-# elif BOOST_PP_SLOT_TEMP_3 == 6
-# define BOOST_PP_SLOT_5_DIGIT_3 6
-# elif BOOST_PP_SLOT_TEMP_3 == 7
-# define BOOST_PP_SLOT_5_DIGIT_3 7
-# elif BOOST_PP_SLOT_TEMP_3 == 8
-# define BOOST_PP_SLOT_5_DIGIT_3 8
-# elif BOOST_PP_SLOT_TEMP_3 == 9
-# define BOOST_PP_SLOT_5_DIGIT_3 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_2 == 0
-# define BOOST_PP_SLOT_5_DIGIT_2 0
-# elif BOOST_PP_SLOT_TEMP_2 == 1
-# define BOOST_PP_SLOT_5_DIGIT_2 1
-# elif BOOST_PP_SLOT_TEMP_2 == 2
-# define BOOST_PP_SLOT_5_DIGIT_2 2
-# elif BOOST_PP_SLOT_TEMP_2 == 3
-# define BOOST_PP_SLOT_5_DIGIT_2 3
-# elif BOOST_PP_SLOT_TEMP_2 == 4
-# define BOOST_PP_SLOT_5_DIGIT_2 4
-# elif BOOST_PP_SLOT_TEMP_2 == 5
-# define BOOST_PP_SLOT_5_DIGIT_2 5
-# elif BOOST_PP_SLOT_TEMP_2 == 6
-# define BOOST_PP_SLOT_5_DIGIT_2 6
-# elif BOOST_PP_SLOT_TEMP_2 == 7
-# define BOOST_PP_SLOT_5_DIGIT_2 7
-# elif BOOST_PP_SLOT_TEMP_2 == 8
-# define BOOST_PP_SLOT_5_DIGIT_2 8
-# elif BOOST_PP_SLOT_TEMP_2 == 9
-# define BOOST_PP_SLOT_5_DIGIT_2 9
-# endif
-#
-# if BOOST_PP_SLOT_TEMP_1 == 0
-# define BOOST_PP_SLOT_5_DIGIT_1 0
-# elif BOOST_PP_SLOT_TEMP_1 == 1
-# define BOOST_PP_SLOT_5_DIGIT_1 1
-# elif BOOST_PP_SLOT_TEMP_1 == 2
-# define BOOST_PP_SLOT_5_DIGIT_1 2
-# elif BOOST_PP_SLOT_TEMP_1 == 3
-# define BOOST_PP_SLOT_5_DIGIT_1 3
-# elif BOOST_PP_SLOT_TEMP_1 == 4
-# define BOOST_PP_SLOT_5_DIGIT_1 4
-# elif BOOST_PP_SLOT_TEMP_1 == 5
-# define BOOST_PP_SLOT_5_DIGIT_1 5
-# elif BOOST_PP_SLOT_TEMP_1 == 6
-# define BOOST_PP_SLOT_5_DIGIT_1 6
-# elif BOOST_PP_SLOT_TEMP_1 == 7
-# define BOOST_PP_SLOT_5_DIGIT_1 7
-# elif BOOST_PP_SLOT_TEMP_1 == 8
-# define BOOST_PP_SLOT_5_DIGIT_1 8
-# elif BOOST_PP_SLOT_TEMP_1 == 9
-# define BOOST_PP_SLOT_5_DIGIT_1 9
-# endif
-#
-# if BOOST_PP_SLOT_5_DIGIT_10
-# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_5_DIGIT_10, BOOST_PP_SLOT_5_DIGIT_9, BOOST_PP_SLOT_5_DIGIT_8, BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
-# elif BOOST_PP_SLOT_5_DIGIT_9
-# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_5_DIGIT_9, BOOST_PP_SLOT_5_DIGIT_8, BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
-# elif BOOST_PP_SLOT_5_DIGIT_8
-# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_5_DIGIT_8, BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
-# elif BOOST_PP_SLOT_5_DIGIT_7
-# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
-# elif BOOST_PP_SLOT_5_DIGIT_6
-# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
-# elif BOOST_PP_SLOT_5_DIGIT_5
-# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
-# elif BOOST_PP_SLOT_5_DIGIT_4
-# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
-# elif BOOST_PP_SLOT_5_DIGIT_3
-# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
-# elif BOOST_PP_SLOT_5_DIGIT_2
-# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
-# else
-# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_5_DIGIT_1
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/slot/slot.hpp b/libcutl/cutl/details/boost/preprocessor/slot/slot.hpp
deleted file mode 100644
index d923a16..0000000
--- a/libcutl/cutl/details/boost/preprocessor/slot/slot.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_SLOT_SLOT_HPP
-# define BOOST_PREPROCESSOR_SLOT_SLOT_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/slot/detail/def.hpp>
-#
-# /* BOOST_PP_ASSIGN_SLOT */
-#
-# define BOOST_PP_ASSIGN_SLOT(i) BOOST_PP_CAT(BOOST_PP_ASSIGN_SLOT_, i)
-#
-# define BOOST_PP_ASSIGN_SLOT_1 <cutl/details/boost/preprocessor/slot/detail/slot1.hpp>
-# define BOOST_PP_ASSIGN_SLOT_2 <cutl/details/boost/preprocessor/slot/detail/slot2.hpp>
-# define BOOST_PP_ASSIGN_SLOT_3 <cutl/details/boost/preprocessor/slot/detail/slot3.hpp>
-# define BOOST_PP_ASSIGN_SLOT_4 <cutl/details/boost/preprocessor/slot/detail/slot4.hpp>
-# define BOOST_PP_ASSIGN_SLOT_5 <cutl/details/boost/preprocessor/slot/detail/slot5.hpp>
-#
-# /* BOOST_PP_SLOT */
-#
-# define BOOST_PP_SLOT(i) BOOST_PP_CAT(BOOST_PP_SLOT_, i)()
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/stringize.hpp b/libcutl/cutl/details/boost/preprocessor/stringize.hpp
deleted file mode 100644
index 9d78d74..0000000
--- a/libcutl/cutl/details/boost/preprocessor/stringize.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_STRINGIZE_HPP
-# define BOOST_PREPROCESSOR_STRINGIZE_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_STRINGIZE */
-#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_A((text))
-# define BOOST_PP_STRINGIZE_A(arg) BOOST_PP_STRINGIZE_I arg
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_OO((text))
-# define BOOST_PP_STRINGIZE_OO(par) BOOST_PP_STRINGIZE_I ## par
-# else
-# define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_I(text)
-# endif
-#
-# define BOOST_PP_STRINGIZE_I(text) #text
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/tuple/eat.hpp b/libcutl/cutl/details/boost/preprocessor/tuple/eat.hpp
deleted file mode 100644
index ad26bf2..0000000
--- a/libcutl/cutl/details/boost/preprocessor/tuple/eat.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002-2011) */
-# /* Revised by Edward Diener (2011) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_TUPLE_EAT_HPP
-# define BOOST_PREPROCESSOR_TUPLE_EAT_HPP
-#
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_EAT */
-#
-# if BOOST_PP_VARIADICS
-# define BOOST_PP_EAT(...)
-# else
-# define BOOST_PP_EAT(x)
-# endif
-#
-# /* BOOST_PP_TUPLE_EAT */
-#
-# if BOOST_PP_VARIADICS
-# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_EAT
-# else
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_I(size)
-# else
-# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_OO((size))
-# define BOOST_PP_TUPLE_EAT_OO(par) BOOST_PP_TUPLE_EAT_I ## par
-# endif
-# define BOOST_PP_TUPLE_EAT_I(size) BOOST_PP_TUPLE_EAT_ ## size
-# endif
-# define BOOST_PP_TUPLE_EAT_1(e0)
-# define BOOST_PP_TUPLE_EAT_2(e0, e1)
-# define BOOST_PP_TUPLE_EAT_3(e0, e1, e2)
-# define BOOST_PP_TUPLE_EAT_4(e0, e1, e2, e3)
-# define BOOST_PP_TUPLE_EAT_5(e0, e1, e2, e3, e4)
-# define BOOST_PP_TUPLE_EAT_6(e0, e1, e2, e3, e4, e5)
-# define BOOST_PP_TUPLE_EAT_7(e0, e1, e2, e3, e4, e5, e6)
-# define BOOST_PP_TUPLE_EAT_8(e0, e1, e2, e3, e4, e5, e6, e7)
-# define BOOST_PP_TUPLE_EAT_9(e0, e1, e2, e3, e4, e5, e6, e7, e8)
-# define BOOST_PP_TUPLE_EAT_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9)
-# define BOOST_PP_TUPLE_EAT_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10)
-# define BOOST_PP_TUPLE_EAT_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11)
-# define BOOST_PP_TUPLE_EAT_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12)
-# define BOOST_PP_TUPLE_EAT_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13)
-# define BOOST_PP_TUPLE_EAT_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14)
-# define BOOST_PP_TUPLE_EAT_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15)
-# define BOOST_PP_TUPLE_EAT_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16)
-# define BOOST_PP_TUPLE_EAT_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17)
-# define BOOST_PP_TUPLE_EAT_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18)
-# define BOOST_PP_TUPLE_EAT_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19)
-# define BOOST_PP_TUPLE_EAT_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20)
-# define BOOST_PP_TUPLE_EAT_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21)
-# define BOOST_PP_TUPLE_EAT_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22)
-# define BOOST_PP_TUPLE_EAT_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23)
-# define BOOST_PP_TUPLE_EAT_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24)
-# define BOOST_PP_TUPLE_EAT_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25)
-# define BOOST_PP_TUPLE_EAT_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26)
-# define BOOST_PP_TUPLE_EAT_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27)
-# define BOOST_PP_TUPLE_EAT_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28)
-# define BOOST_PP_TUPLE_EAT_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29)
-# define BOOST_PP_TUPLE_EAT_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30)
-# define BOOST_PP_TUPLE_EAT_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31)
-# define BOOST_PP_TUPLE_EAT_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32)
-# define BOOST_PP_TUPLE_EAT_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33)
-# define BOOST_PP_TUPLE_EAT_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34)
-# define BOOST_PP_TUPLE_EAT_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35)
-# define BOOST_PP_TUPLE_EAT_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36)
-# define BOOST_PP_TUPLE_EAT_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37)
-# define BOOST_PP_TUPLE_EAT_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38)
-# define BOOST_PP_TUPLE_EAT_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39)
-# define BOOST_PP_TUPLE_EAT_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40)
-# define BOOST_PP_TUPLE_EAT_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41)
-# define BOOST_PP_TUPLE_EAT_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42)
-# define BOOST_PP_TUPLE_EAT_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43)
-# define BOOST_PP_TUPLE_EAT_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44)
-# define BOOST_PP_TUPLE_EAT_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45)
-# define BOOST_PP_TUPLE_EAT_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46)
-# define BOOST_PP_TUPLE_EAT_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47)
-# define BOOST_PP_TUPLE_EAT_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48)
-# define BOOST_PP_TUPLE_EAT_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49)
-# define BOOST_PP_TUPLE_EAT_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50)
-# define BOOST_PP_TUPLE_EAT_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51)
-# define BOOST_PP_TUPLE_EAT_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52)
-# define BOOST_PP_TUPLE_EAT_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53)
-# define BOOST_PP_TUPLE_EAT_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54)
-# define BOOST_PP_TUPLE_EAT_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55)
-# define BOOST_PP_TUPLE_EAT_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56)
-# define BOOST_PP_TUPLE_EAT_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57)
-# define BOOST_PP_TUPLE_EAT_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58)
-# define BOOST_PP_TUPLE_EAT_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59)
-# define BOOST_PP_TUPLE_EAT_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60)
-# define BOOST_PP_TUPLE_EAT_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61)
-# define BOOST_PP_TUPLE_EAT_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62)
-# define BOOST_PP_TUPLE_EAT_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63)
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/tuple/elem.hpp b/libcutl/cutl/details/boost/preprocessor/tuple/elem.hpp
deleted file mode 100644
index 01b50d2..0000000
--- a/libcutl/cutl/details/boost/preprocessor/tuple/elem.hpp
+++ /dev/null
@@ -1,191 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002-2011) */
-# /* Revised by Edward Diener (2011) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
-# define BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/facilities/overload.hpp>
-# include <cutl/details/boost/preprocessor/tuple/rem.hpp>
-# include <cutl/details/boost/preprocessor/variadic/elem.hpp>
-#
-# if BOOST_PP_VARIADICS
-# if BOOST_PP_VARIADICS_MSVC
-# define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__), (__VA_ARGS__))
-# define BOOST_PP_TUPLE_ELEM_I(m, args) BOOST_PP_TUPLE_ELEM_II(m, args)
-# define BOOST_PP_TUPLE_ELEM_II(m, args) BOOST_PP_CAT(m ## args,)
-# else
-# define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__)(__VA_ARGS__)
-# endif
-# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_REM tuple)
-# define BOOST_PP_TUPLE_ELEM_O_3(size, n, tuple) BOOST_PP_TUPLE_ELEM_O_2(n, tuple)
-# else
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_, n), BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_E_, size), tuple))
-# define BOOST_PP_TUPLE_ELEM_I(m, args) BOOST_PP_TUPLE_ELEM_II(m, args)
-# define BOOST_PP_TUPLE_ELEM_II(m, args) BOOST_PP_CAT(m ## args,)
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I_OO((size, n, tuple))
-# define BOOST_PP_TUPLE_ELEM_I_OO(par) BOOST_PP_TUPLE_ELEM_I ## par
-# define BOOST_PP_TUPLE_ELEM_I(size, n, tuple) BOOST_PP_TUPLE_ELEM_II((n, BOOST_PP_TUPLE_ELEM_E_ ## size ## tuple))
-# define BOOST_PP_TUPLE_ELEM_II(par) BOOST_PP_TUPLE_ELEM_III_OO(par)
-# define BOOST_PP_TUPLE_ELEM_III_OO(par) BOOST_PP_TUPLE_ELEM_III ## par
-# define BOOST_PP_TUPLE_ELEM_III(n, etuple) BOOST_PP_TUPLE_ELEM_ ## n ## etuple
-# else
-# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_, n) BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_E_, size) tuple)
-# define BOOST_PP_TUPLE_ELEM_I(x) x
-# endif
-# define BOOST_PP_TUPLE_ELEM_E_1(e0) (e0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_2(e0, e1) (e0, e1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_3(e0, e1, e2) (e0, e1, e2, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_4(e0, e1, e2, e3) (e0, e1, e2, e3, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_5(e0, e1, e2, e3, e4) (e0, e1, e2, e3, e4, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_6(e0, e1, e2, e3, e4, e5) (e0, e1, e2, e3, e4, e5, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_7(e0, e1, e2, e3, e4, e5, e6) (e0, e1, e2, e3, e4, e5, e6, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0, e1, e2, e3, e4, e5, e6, e7, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, e1, e2, e3, e4, e5, e6, e7, e8, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ?, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ?, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ?, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ?, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ?, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ?, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ?, ?)
-# define BOOST_PP_TUPLE_ELEM_E_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ?)
-# define BOOST_PP_TUPLE_ELEM_E_64
-# define BOOST_PP_TUPLE_ELEM_0(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e0
-# define BOOST_PP_TUPLE_ELEM_1(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e1
-# define BOOST_PP_TUPLE_ELEM_2(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e2
-# define BOOST_PP_TUPLE_ELEM_3(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e3
-# define BOOST_PP_TUPLE_ELEM_4(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e4
-# define BOOST_PP_TUPLE_ELEM_5(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e5
-# define BOOST_PP_TUPLE_ELEM_6(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e6
-# define BOOST_PP_TUPLE_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e7
-# define BOOST_PP_TUPLE_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e8
-# define BOOST_PP_TUPLE_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e9
-# define BOOST_PP_TUPLE_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e10
-# define BOOST_PP_TUPLE_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e11
-# define BOOST_PP_TUPLE_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e12
-# define BOOST_PP_TUPLE_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e13
-# define BOOST_PP_TUPLE_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e14
-# define BOOST_PP_TUPLE_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e15
-# define BOOST_PP_TUPLE_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e16
-# define BOOST_PP_TUPLE_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e17
-# define BOOST_PP_TUPLE_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e18
-# define BOOST_PP_TUPLE_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e19
-# define BOOST_PP_TUPLE_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e20
-# define BOOST_PP_TUPLE_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e21
-# define BOOST_PP_TUPLE_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e22
-# define BOOST_PP_TUPLE_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e23
-# define BOOST_PP_TUPLE_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e24
-# define BOOST_PP_TUPLE_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e25
-# define BOOST_PP_TUPLE_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e26
-# define BOOST_PP_TUPLE_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e27
-# define BOOST_PP_TUPLE_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e28
-# define BOOST_PP_TUPLE_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e29
-# define BOOST_PP_TUPLE_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e30
-# define BOOST_PP_TUPLE_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e31
-# define BOOST_PP_TUPLE_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e32
-# define BOOST_PP_TUPLE_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e33
-# define BOOST_PP_TUPLE_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e34
-# define BOOST_PP_TUPLE_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e35
-# define BOOST_PP_TUPLE_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e36
-# define BOOST_PP_TUPLE_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e37
-# define BOOST_PP_TUPLE_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e38
-# define BOOST_PP_TUPLE_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e39
-# define BOOST_PP_TUPLE_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e40
-# define BOOST_PP_TUPLE_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e41
-# define BOOST_PP_TUPLE_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e42
-# define BOOST_PP_TUPLE_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e43
-# define BOOST_PP_TUPLE_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e44
-# define BOOST_PP_TUPLE_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e45
-# define BOOST_PP_TUPLE_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e46
-# define BOOST_PP_TUPLE_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e47
-# define BOOST_PP_TUPLE_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e48
-# define BOOST_PP_TUPLE_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e49
-# define BOOST_PP_TUPLE_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e50
-# define BOOST_PP_TUPLE_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e51
-# define BOOST_PP_TUPLE_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e52
-# define BOOST_PP_TUPLE_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e53
-# define BOOST_PP_TUPLE_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e54
-# define BOOST_PP_TUPLE_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e55
-# define BOOST_PP_TUPLE_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e56
-# define BOOST_PP_TUPLE_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e57
-# define BOOST_PP_TUPLE_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e58
-# define BOOST_PP_TUPLE_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e59
-# define BOOST_PP_TUPLE_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e60
-# define BOOST_PP_TUPLE_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e61
-# define BOOST_PP_TUPLE_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e62
-# define BOOST_PP_TUPLE_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e63
-# endif
-#
-# /* directly used elsewhere in Boost... */
-#
-# define BOOST_PP_TUPLE_ELEM_1_0(a) a
-#
-# define BOOST_PP_TUPLE_ELEM_2_0(a, b) a
-# define BOOST_PP_TUPLE_ELEM_2_1(a, b) b
-#
-# define BOOST_PP_TUPLE_ELEM_3_0(a, b, c) a
-# define BOOST_PP_TUPLE_ELEM_3_1(a, b, c) b
-# define BOOST_PP_TUPLE_ELEM_3_2(a, b, c) c
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/tuple/rem.hpp b/libcutl/cutl/details/boost/preprocessor/tuple/rem.hpp
deleted file mode 100644
index 5ea1858..0000000
--- a/libcutl/cutl/details/boost/preprocessor/tuple/rem.hpp
+++ /dev/null
@@ -1,134 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Paul Mensonides 2002-2011. *
-# * (C) Copyright Edward Diener 2011. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-# * http://www.boost.org/LICENSE_1_0.txt) *
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_TUPLE_REM_HPP
-# define BOOST_PREPROCESSOR_TUPLE_REM_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/facilities/overload.hpp>
-#
-# /* BOOST_PP_REM */
-#
-# if BOOST_PP_VARIADICS
-# define BOOST_PP_REM(...) __VA_ARGS__
-# else
-# define BOOST_PP_REM(x) x
-# endif
-#
-# /* BOOST_PP_TUPLE_REM */
-#
-# if BOOST_PP_VARIADICS
-# define BOOST_PP_TUPLE_REM(size) BOOST_PP_REM
-# else
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_I(size)
-# else
-# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_OO((size))
-# define BOOST_PP_TUPLE_REM_OO(par) BOOST_PP_TUPLE_REM_I ## par
-# endif
-# define BOOST_PP_TUPLE_REM_I(size) BOOST_PP_TUPLE_REM_ ## size
-# endif
-# define BOOST_PP_TUPLE_REM_1(e0) e0
-# define BOOST_PP_TUPLE_REM_2(e0, e1) e0, e1
-# define BOOST_PP_TUPLE_REM_3(e0, e1, e2) e0, e1, e2
-# define BOOST_PP_TUPLE_REM_4(e0, e1, e2, e3) e0, e1, e2, e3
-# define BOOST_PP_TUPLE_REM_5(e0, e1, e2, e3, e4) e0, e1, e2, e3, e4
-# define BOOST_PP_TUPLE_REM_6(e0, e1, e2, e3, e4, e5) e0, e1, e2, e3, e4, e5
-# define BOOST_PP_TUPLE_REM_7(e0, e1, e2, e3, e4, e5, e6) e0, e1, e2, e3, e4, e5, e6
-# define BOOST_PP_TUPLE_REM_8(e0, e1, e2, e3, e4, e5, e6, e7) e0, e1, e2, e3, e4, e5, e6, e7
-# define BOOST_PP_TUPLE_REM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) e0, e1, e2, e3, e4, e5, e6, e7, e8
-# define BOOST_PP_TUPLE_REM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9
-# define BOOST_PP_TUPLE_REM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10
-# define BOOST_PP_TUPLE_REM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11
-# define BOOST_PP_TUPLE_REM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12
-# define BOOST_PP_TUPLE_REM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13
-# define BOOST_PP_TUPLE_REM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14
-# define BOOST_PP_TUPLE_REM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15
-# define BOOST_PP_TUPLE_REM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16
-# define BOOST_PP_TUPLE_REM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17
-# define BOOST_PP_TUPLE_REM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18
-# define BOOST_PP_TUPLE_REM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19
-# define BOOST_PP_TUPLE_REM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20
-# define BOOST_PP_TUPLE_REM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21
-# define BOOST_PP_TUPLE_REM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22
-# define BOOST_PP_TUPLE_REM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23
-# define BOOST_PP_TUPLE_REM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24
-# define BOOST_PP_TUPLE_REM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25
-# define BOOST_PP_TUPLE_REM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26
-# define BOOST_PP_TUPLE_REM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27
-# define BOOST_PP_TUPLE_REM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28
-# define BOOST_PP_TUPLE_REM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29
-# define BOOST_PP_TUPLE_REM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30
-# define BOOST_PP_TUPLE_REM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31
-# define BOOST_PP_TUPLE_REM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32
-# define BOOST_PP_TUPLE_REM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33
-# define BOOST_PP_TUPLE_REM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34
-# define BOOST_PP_TUPLE_REM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35
-# define BOOST_PP_TUPLE_REM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36
-# define BOOST_PP_TUPLE_REM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37
-# define BOOST_PP_TUPLE_REM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38
-# define BOOST_PP_TUPLE_REM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39
-# define BOOST_PP_TUPLE_REM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40
-# define BOOST_PP_TUPLE_REM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41
-# define BOOST_PP_TUPLE_REM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42
-# define BOOST_PP_TUPLE_REM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43
-# define BOOST_PP_TUPLE_REM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44
-# define BOOST_PP_TUPLE_REM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45
-# define BOOST_PP_TUPLE_REM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46
-# define BOOST_PP_TUPLE_REM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47
-# define BOOST_PP_TUPLE_REM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48
-# define BOOST_PP_TUPLE_REM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49
-# define BOOST_PP_TUPLE_REM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50
-# define BOOST_PP_TUPLE_REM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51
-# define BOOST_PP_TUPLE_REM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52
-# define BOOST_PP_TUPLE_REM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53
-# define BOOST_PP_TUPLE_REM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54
-# define BOOST_PP_TUPLE_REM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55
-# define BOOST_PP_TUPLE_REM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56
-# define BOOST_PP_TUPLE_REM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57
-# define BOOST_PP_TUPLE_REM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58
-# define BOOST_PP_TUPLE_REM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59
-# define BOOST_PP_TUPLE_REM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60
-# define BOOST_PP_TUPLE_REM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61
-# define BOOST_PP_TUPLE_REM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62
-# define BOOST_PP_TUPLE_REM_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63
-#
-# /* BOOST_PP_TUPLE_REM_CTOR */
-#
-# if BOOST_PP_VARIADICS
-# if BOOST_PP_VARIADICS_MSVC
-# define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__), (__VA_ARGS__))
-# define BOOST_PP_TUPLE_REM_CTOR_I(m, args) BOOST_PP_TUPLE_REM_CTOR_II(m, args)
-# define BOOST_PP_TUPLE_REM_CTOR_II(m, args) BOOST_PP_CAT(m ## args,)
-# else
-# define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__)(__VA_ARGS__)
-# endif
-# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_REM tuple
-# define BOOST_PP_TUPLE_REM_CTOR_O_2(size, tuple) BOOST_PP_TUPLE_REM_CTOR_O_1(tuple)
-# else
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple)
-# else
-# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_D(size, tuple)
-# define BOOST_PP_TUPLE_REM_CTOR_D(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple)
-# endif
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) ext tuple
-# else
-# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) BOOST_PP_TUPLE_REM_CTOR_OO((ext, tuple))
-# define BOOST_PP_TUPLE_REM_CTOR_OO(par) BOOST_PP_TUPLE_REM_CTOR_II ## par
-# define BOOST_PP_TUPLE_REM_CTOR_II(ext, tuple) ext ## tuple
-# endif
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/tuple/to_list.hpp b/libcutl/cutl/details/boost/preprocessor/tuple/to_list.hpp
deleted file mode 100644
index 3b9155c..0000000
--- a/libcutl/cutl/details/boost/preprocessor/tuple/to_list.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-# *
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-# */
-#
-# /* Revised by Paul Mensonides (2002-2011) */
-# /* Revised by Edward Diener (2011) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
-# define BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-# include <cutl/details/boost/preprocessor/facilities/overload.hpp>
-# include <cutl/details/boost/preprocessor/variadic/size.hpp>
-#
-# /* BOOST_PP_TUPLE_TO_LIST */
-#
-# if BOOST_PP_VARIADICS
-# if BOOST_PP_VARIADICS_MSVC
-# define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_TUPLE_TO_LIST_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__), (__VA_ARGS__))
-# define BOOST_PP_TUPLE_TO_LIST_I(m, args) BOOST_PP_TUPLE_TO_LIST_II(m, args)
-# define BOOST_PP_TUPLE_TO_LIST_II(m, args) BOOST_PP_CAT(m ## args,)
-# else
-# define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__)(__VA_ARGS__)
-# endif
-# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_VARIADIC_SIZE tuple) tuple
-# define BOOST_PP_TUPLE_TO_LIST_O_2(size, tuple) BOOST_PP_TUPLE_TO_LIST_O_1(tuple)
-# else
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_I(size, tuple)
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s t
-# else
-# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_II(BOOST_PP_TUPLE_TO_LIST_ ## s t)
-# define BOOST_PP_TUPLE_TO_LIST_II(res) res
-# endif
-# else
-# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_OO((size, tuple))
-# define BOOST_PP_TUPLE_TO_LIST_OO(par) BOOST_PP_TUPLE_TO_LIST_I ## par
-# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s ## t
-# endif
-# endif
-#
-# define BOOST_PP_TUPLE_TO_LIST_1(e0) (e0, BOOST_PP_NIL)
-# define BOOST_PP_TUPLE_TO_LIST_2(e0, e1) (e0, (e1, BOOST_PP_NIL))
-# define BOOST_PP_TUPLE_TO_LIST_3(e0, e1, e2) (e0, (e1, (e2, BOOST_PP_NIL)))
-# define BOOST_PP_TUPLE_TO_LIST_4(e0, e1, e2, e3) (e0, (e1, (e2, (e3, BOOST_PP_NIL))))
-# define BOOST_PP_TUPLE_TO_LIST_5(e0, e1, e2, e3, e4) (e0, (e1, (e2, (e3, (e4, BOOST_PP_NIL)))))
-# define BOOST_PP_TUPLE_TO_LIST_6(e0, e1, e2, e3, e4, e5) (e0, (e1, (e2, (e3, (e4, (e5, BOOST_PP_NIL))))))
-# define BOOST_PP_TUPLE_TO_LIST_7(e0, e1, e2, e3, e4, e5, e6) (e0, (e1, (e2, (e3, (e4, (e5, (e6, BOOST_PP_NIL)))))))
-# define BOOST_PP_TUPLE_TO_LIST_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, BOOST_PP_NIL))))))))
-# define BOOST_PP_TUPLE_TO_LIST_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, BOOST_PP_NIL)))))))))
-# define BOOST_PP_TUPLE_TO_LIST_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, BOOST_PP_NIL))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, BOOST_PP_NIL)))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, BOOST_PP_NIL))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, BOOST_PP_NIL)))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, BOOST_PP_NIL))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, BOOST_PP_NIL)))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, BOOST_PP_NIL))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, BOOST_PP_NIL)))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, BOOST_PP_NIL))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, BOOST_PP_NIL)))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, BOOST_PP_NIL))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, BOOST_PP_NIL)))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, BOOST_PP_NIL))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, BOOST_PP_NIL)))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, BOOST_PP_NIL))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, BOOST_PP_NIL)))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, BOOST_PP_NIL))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, BOOST_PP_NIL)))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, BOOST_PP_NIL))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, BOOST_PP_NIL)))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, BOOST_PP_NIL))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, BOOST_PP_NIL)))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, BOOST_PP_NIL))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, BOOST_PP_NIL)))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, BOOST_PP_NIL))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/variadic/elem.hpp b/libcutl/cutl/details/boost/preprocessor/variadic/elem.hpp
deleted file mode 100644
index de9e0d7..0000000
--- a/libcutl/cutl/details/boost/preprocessor/variadic/elem.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Edward Diener 2011. *
-# * (C) Copyright Paul Mensonides 2011. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-# * http://www.boost.org/LICENSE_1_0.txt) *
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_VARIADIC_ELEM_HPP
-# define BOOST_PREPROCESSOR_VARIADIC_ELEM_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_VARIADIC_ELEM */
-#
-# if BOOST_PP_VARIADICS
-# if BOOST_PP_VARIADICS_MSVC
-# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_VARIADIC_ELEM_I(n,__VA_ARGS__)
-# define BOOST_PP_VARIADIC_ELEM_I(n, ...) BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,),)
-# else
-# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,)
-# endif
-# define BOOST_PP_VARIADIC_ELEM_0(e0, ...) e0
-# define BOOST_PP_VARIADIC_ELEM_1(e0, e1, ...) e1
-# define BOOST_PP_VARIADIC_ELEM_2(e0, e1, e2, ...) e2
-# define BOOST_PP_VARIADIC_ELEM_3(e0, e1, e2, e3, ...) e3
-# define BOOST_PP_VARIADIC_ELEM_4(e0, e1, e2, e3, e4, ...) e4
-# define BOOST_PP_VARIADIC_ELEM_5(e0, e1, e2, e3, e4, e5, ...) e5
-# define BOOST_PP_VARIADIC_ELEM_6(e0, e1, e2, e3, e4, e5, e6, ...) e6
-# define BOOST_PP_VARIADIC_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, ...) e7
-# define BOOST_PP_VARIADIC_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, ...) e8
-# define BOOST_PP_VARIADIC_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ...) e9
-# define BOOST_PP_VARIADIC_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ...) e10
-# define BOOST_PP_VARIADIC_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ...) e11
-# define BOOST_PP_VARIADIC_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ...) e12
-# define BOOST_PP_VARIADIC_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ...) e13
-# define BOOST_PP_VARIADIC_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ...) e14
-# define BOOST_PP_VARIADIC_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ...) e15
-# define BOOST_PP_VARIADIC_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ...) e16
-# define BOOST_PP_VARIADIC_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ...) e17
-# define BOOST_PP_VARIADIC_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ...) e18
-# define BOOST_PP_VARIADIC_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ...) e19
-# define BOOST_PP_VARIADIC_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ...) e20
-# define BOOST_PP_VARIADIC_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ...) e21
-# define BOOST_PP_VARIADIC_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ...) e22
-# define BOOST_PP_VARIADIC_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ...) e23
-# define BOOST_PP_VARIADIC_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ...) e24
-# define BOOST_PP_VARIADIC_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ...) e25
-# define BOOST_PP_VARIADIC_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ...) e26
-# define BOOST_PP_VARIADIC_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ...) e27
-# define BOOST_PP_VARIADIC_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ...) e28
-# define BOOST_PP_VARIADIC_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ...) e29
-# define BOOST_PP_VARIADIC_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ...) e30
-# define BOOST_PP_VARIADIC_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ...) e31
-# define BOOST_PP_VARIADIC_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ...) e32
-# define BOOST_PP_VARIADIC_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ...) e33
-# define BOOST_PP_VARIADIC_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ...) e34
-# define BOOST_PP_VARIADIC_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ...) e35
-# define BOOST_PP_VARIADIC_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ...) e36
-# define BOOST_PP_VARIADIC_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ...) e37
-# define BOOST_PP_VARIADIC_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ...) e38
-# define BOOST_PP_VARIADIC_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ...) e39
-# define BOOST_PP_VARIADIC_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ...) e40
-# define BOOST_PP_VARIADIC_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ...) e41
-# define BOOST_PP_VARIADIC_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ...) e42
-# define BOOST_PP_VARIADIC_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ...) e43
-# define BOOST_PP_VARIADIC_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ...) e44
-# define BOOST_PP_VARIADIC_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ...) e45
-# define BOOST_PP_VARIADIC_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ...) e46
-# define BOOST_PP_VARIADIC_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ...) e47
-# define BOOST_PP_VARIADIC_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ...) e48
-# define BOOST_PP_VARIADIC_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ...) e49
-# define BOOST_PP_VARIADIC_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ...) e50
-# define BOOST_PP_VARIADIC_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ...) e51
-# define BOOST_PP_VARIADIC_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ...) e52
-# define BOOST_PP_VARIADIC_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ...) e53
-# define BOOST_PP_VARIADIC_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ...) e54
-# define BOOST_PP_VARIADIC_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ...) e55
-# define BOOST_PP_VARIADIC_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ...) e56
-# define BOOST_PP_VARIADIC_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ...) e57
-# define BOOST_PP_VARIADIC_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ...) e58
-# define BOOST_PP_VARIADIC_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ...) e59
-# define BOOST_PP_VARIADIC_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ...) e60
-# define BOOST_PP_VARIADIC_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ...) e61
-# define BOOST_PP_VARIADIC_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ...) e62
-# define BOOST_PP_VARIADIC_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, ...) e63
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/preprocessor/variadic/size.hpp b/libcutl/cutl/details/boost/preprocessor/variadic/size.hpp
deleted file mode 100644
index e3e2962..0000000
--- a/libcutl/cutl/details/boost/preprocessor/variadic/size.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-# /* **************************************************************************
-# * *
-# * (C) Copyright Edward Diener 2011. *
-# * (C) Copyright Paul Mensonides 2011. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-# * http://www.boost.org/LICENSE_1_0.txt) *
-# * *
-# ************************************************************************** */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-# ifndef BOOST_PREPROCESSOR_VARIADIC_SIZE_HPP
-# define BOOST_PREPROCESSOR_VARIADIC_SIZE_HPP
-#
-# include <cutl/details/boost/preprocessor/cat.hpp>
-# include <cutl/details/boost/preprocessor/config/config.hpp>
-#
-# /* BOOST_PP_VARIADIC_SIZE */
-#
-# if BOOST_PP_VARIADICS
-# if BOOST_PP_VARIADICS_MSVC
-# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,),)
-# else
-# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,)
-# endif
-# define BOOST_PP_VARIADIC_SIZE_I(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, size, ...) size
-# endif
-#
-# endif
diff --git a/libcutl/cutl/details/boost/ref.hpp b/libcutl/cutl/details/boost/ref.hpp
deleted file mode 100644
index 5a377c7..0000000
--- a/libcutl/cutl/details/boost/ref.hpp
+++ /dev/null
@@ -1,189 +0,0 @@
-#ifndef BOOST_REF_HPP_INCLUDED
-#define BOOST_REF_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/utility/addressof.hpp>
-#include <cutl/details/boost/mpl/bool.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-//
-// ref.hpp - ref/cref, useful helper functions
-//
-// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-// Copyright (C) 2001, 2002 Peter Dimov
-// Copyright (C) 2002 David Abrahams
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/bind/ref.html for documentation.
-//
-
-namespace cutl_details_boost
-{
-
-template<class T> class reference_wrapper
-{
-public:
- typedef T type;
-
-#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, < 1300 )
-
- explicit reference_wrapper(T& t): t_(&t) {}
-
-#else
-
- explicit reference_wrapper(T& t): t_(cutl_details_boost::addressof(t)) {}
-
-#endif
-
- operator T& () const { return *t_; }
-
- T& get() const { return *t_; }
-
- T* get_pointer() const { return t_; }
-
-private:
-
- T* t_;
-};
-
-# if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) )
-# define BOOST_REF_CONST
-# else
-# define BOOST_REF_CONST const
-# endif
-
-template<class T> inline reference_wrapper<T> BOOST_REF_CONST ref(T & t)
-{
- return reference_wrapper<T>(t);
-}
-
-template<class T> inline reference_wrapper<T const> BOOST_REF_CONST cref(T const & t)
-{
- return reference_wrapper<T const>(t);
-}
-
-# undef BOOST_REF_CONST
-
-# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-template<typename T>
-class is_reference_wrapper
- : public mpl::false_
-{
-};
-
-template<typename T>
-class unwrap_reference
-{
- public:
- typedef T type;
-};
-
-# define AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(X) \
-template<typename T> \
-class is_reference_wrapper< X > \
- : public mpl::true_ \
-{ \
-}; \
-\
-template<typename T> \
-class unwrap_reference< X > \
-{ \
- public: \
- typedef T type; \
-}; \
-/**/
-
-AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T>)
-#if !defined(BOOST_NO_CV_SPECIALIZATIONS)
-AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T> const)
-AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T> volatile)
-AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T> const volatile)
-#endif
-
-# undef AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF
-
-# else // no partial specialization
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
- typedef char (&yes_reference_wrapper_t)[1];
- typedef char (&no_reference_wrapper_t)[2];
-
- no_reference_wrapper_t is_reference_wrapper_test(...);
-
- template<typename T>
- yes_reference_wrapper_t is_reference_wrapper_test(type< reference_wrapper<T> >);
-
- template<bool wrapped>
- struct reference_unwrapper
- {
- template <class T>
- struct apply
- {
- typedef T type;
- };
- };
-
- template<>
- struct reference_unwrapper<true>
- {
- template <class T>
- struct apply
- {
- typedef typename T::type type;
- };
- };
-}
-
-template<typename T>
-class is_reference_wrapper
-{
- public:
- BOOST_STATIC_CONSTANT(
- bool, value = (
- sizeof(detail::is_reference_wrapper_test(type<T>()))
- == sizeof(detail::yes_reference_wrapper_t)));
-
- typedef ::cutl_details_boost::mpl::bool_<value> type;
-};
-
-template <typename T>
-class unwrap_reference
- : public detail::reference_unwrapper<
- is_reference_wrapper<T>::value
- >::template apply<T>
-{};
-
-# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-template <class T> inline typename unwrap_reference<T>::type&
-unwrap_ref(T& t)
-{
- return t;
-}
-
-template<class T> inline T* get_pointer( reference_wrapper<T> const & r )
-{
- return r.get_pointer();
-}
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_REF_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/regex.hpp b/libcutl/cutl/details/boost/regex.hpp
deleted file mode 100644
index 9ad34c0..0000000
--- a/libcutl/cutl/details/boost/regex.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org/libs/regex for documentation.
- * FILE regex.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares cutl_details_boost::basic_regex<> and associated
- * functions and classes. This header is the main
- * entry point for the template regex code.
- */
-
-
-/* start with C compatibility API */
-
-#ifndef BOOST_RE_REGEX_HPP
-#define BOOST_RE_REGEX_HPP
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-
-#include <cutl/details/boost/regex/v4/regex.hpp>
-
-#endif // include
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/config.hpp b/libcutl/cutl/details/boost/regex/config.hpp
deleted file mode 100644
index a1495ae..0000000
--- a/libcutl/cutl/details/boost/regex/config.hpp
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE config.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: regex extended config setup.
- */
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#define BOOST_REGEX_CONFIG_HPP
-/*
- * Borland C++ Fix/error check
- * this has to go *before* we include any std lib headers:
- */
-#if defined(__BORLANDC__)
-# include <cutl/details/boost/regex/config/borland.hpp>
-#endif
-
-/*****************************************************************************
- *
- * Include all the headers we need here:
- *
- ****************************************************************************/
-
-#ifdef __cplusplus
-
-# ifndef BOOST_REGEX_USER_CONFIG
-# define BOOST_REGEX_USER_CONFIG <cutl/details/boost/regex/user.hpp>
-# endif
-
-# include BOOST_REGEX_USER_CONFIG
-
-# include <cutl/details/boost/config.hpp>
-
-#else
- /*
- * C build,
- * don't include <cutl/details/boost/config.hpp> because that may
- * do C++ specific things in future...
- */
-# include <stdlib.h>
-# include <stddef.h>
-# ifdef _MSC_VER
-# define BOOST_MSVC _MSC_VER
-# endif
-#endif
-
-/*****************************************************************************
- *
- * Boilerplate regex config options:
- *
- ****************************************************************************/
-
-/* Obsolete macro, use BOOST_VERSION instead: */
-#define BOOST_RE_VERSION 320
-
-/* fix: */
-#if defined(_UNICODE) && !defined(UNICODE)
-#define UNICODE
-#endif
-
-/*
- * Fix for gcc prior to 3.4: std::ctype<wchar_t> doesn't allow
- * masks to be combined, for example:
- * std::use_facet<std::ctype<wchar_t> >.is(std::ctype_base::lower|std::ctype_base::upper, L'a');
- * returns *false*.
- */
-#ifdef __GLIBCPP__
-# define BOOST_REGEX_BUGGY_CTYPE_FACET
-#endif
-
-/*
- * Intel C++ before 8.0 ends up with unresolved externals unless we turn off
- * extern template support:
- */
-#if defined(BOOST_INTEL) && defined(__cplusplus) && (BOOST_INTEL <= 800)
-# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
-#endif
-/*
- * Visual C++ doesn't support external templates with C++ extensions turned off:
- */
-#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
-# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
-#endif
-/*
- * Shared regex lib will crash without this, frankly it looks a lot like a gcc bug:
- */
-#if defined(__MINGW32__)
-# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
-#endif
-
-/*
- * If there isn't good enough wide character support then there will
- * be no wide character regular expressions:
- */
-#if (defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING))
-# if !defined(BOOST_NO_WREGEX)
-# define BOOST_NO_WREGEX
-# endif
-#else
-# if defined(__sgi) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
- /* STLPort on IRIX is misconfigured: <cwctype> does not compile
- * as a temporary fix include <wctype.h> instead and prevent inclusion
- * of STLPort version of <cwctype> */
-# include <wctype.h>
-# define __STLPORT_CWCTYPE
-# define _STLP_CWCTYPE
-# endif
-
-#ifdef __cplusplus
-# include <cutl/details/boost/regex/config/cwchar.hpp>
-#endif
-
-#endif
-
-/*
- * If Win32 support has been disabled for boost in general, then
- * it is for regex in particular:
- */
-#if defined(BOOST_DISABLE_WIN32) && !defined(BOOST_REGEX_NO_W32)
-# define BOOST_REGEX_NO_W32
-#endif
-
-/* disable our own file-iterators and mapfiles if we can't
- * support them: */
-#if !defined(BOOST_HAS_DIRENT_H) && !(defined(_WIN32) && !defined(BOOST_REGEX_NO_W32))
-# define BOOST_REGEX_NO_FILEITER
-#endif
-
-/* backwards compatibitity: */
-#if defined(BOOST_RE_NO_LIB)
-# define BOOST_REGEX_NO_LIB
-#endif
-
-#if defined(__GNUC__) && (defined(_WIN32) || defined(__CYGWIN__))
-/* gcc on win32 has problems if you include <windows.h>
- (sporadically generates bad code). */
-# define BOOST_REGEX_NO_W32
-#endif
-#if defined(__COMO__) && !defined(BOOST_REGEX_NO_W32) && !defined(_MSC_EXTENSIONS)
-# define BOOST_REGEX_NO_W32
-#endif
-
-/*****************************************************************************
- *
- * Wide character workarounds:
- *
- ****************************************************************************/
-
-/*
- * define BOOST_REGEX_HAS_OTHER_WCHAR_T when wchar_t is a native type, but the users
- * code may be built with wchar_t as unsigned short: basically when we're building
- * with MSVC and the /Zc:wchar_t option we place some extra unsigned short versions
- * of the non-inline functions in the library, so that users can still link to the lib,
- * irrespective of whether their own code is built with /Zc:wchar_t.
- * Note that this does NOT WORK with VC10 when the C++ locale is in effect as
- * the locale's <unsigned short> facets simply do not compile in that case.
- */
-#if defined(__cplusplus) && (defined(BOOST_MSVC) || defined(__ICL)) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) && defined(BOOST_WINDOWS) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) && !defined(BOOST_RWSTD_VER) && ((_MSC_VER < 1600) || !defined(BOOST_REGEX_USE_CPP_LOCALE))
-# define BOOST_REGEX_HAS_OTHER_WCHAR_T
-# ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable : 4251 4231)
-# if BOOST_MSVC < 1600
-# pragma warning(disable : 4660)
-# endif
-# endif
-# if defined(_DLL) && defined(BOOST_MSVC) && (BOOST_MSVC < 1600)
-# include <string>
- extern template class __declspec(dllimport) std::basic_string<unsigned short>;
-# endif
-# ifdef BOOST_MSVC
-# pragma warning(pop)
-# endif
-#endif
-
-
-/*****************************************************************************
- *
- * Set up dll import/export options:
- *
- ****************************************************************************/
-
-#ifndef BOOST_SYMBOL_EXPORT
-# define BOOST_SYMBOL_EXPORT
-# define BOOST_SYMBOL_IMPORT
-#endif
-
-#if (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK)
-# if defined(BOOST_REGEX_SOURCE)
-# define BOOST_REGEX_DECL BOOST_SYMBOL_EXPORT
-# define BOOST_REGEX_BUILD_DLL
-# else
-# define BOOST_REGEX_DECL BOOST_SYMBOL_IMPORT
-# endif
-#else
-# define BOOST_REGEX_DECL
-#endif
-
-#if !defined(BOOST_REGEX_NO_LIB) && !defined(BOOST_REGEX_SOURCE) && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus)
-# define BOOST_LIB_NAME cutl_details_boost_regex
-# if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
-# define BOOST_DYN_LINK
-# endif
-# ifdef BOOST_REGEX_DIAG
-# define BOOST_LIB_DIAGNOSTIC
-# endif
-# include <cutl/details/boost/config/auto_link.hpp>
-#endif
-
-/*****************************************************************************
- *
- * Set up function call type:
- *
- ****************************************************************************/
-
-#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1200) && defined(_MSC_EXTENSIONS)
-#if defined(_DEBUG) || defined(__MSVC_RUNTIME_CHECKS) || defined(_MANAGED) || defined(BOOST_REGEX_NO_FASTCALL)
-# define BOOST_REGEX_CALL __cdecl
-#else
-# define BOOST_REGEX_CALL __fastcall
-#endif
-# define BOOST_REGEX_CCALL __cdecl
-#endif
-
-#if defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32)
-# define BOOST_REGEX_CALL __fastcall
-# define BOOST_REGEX_CCALL __stdcall
-#endif
-
-#ifndef BOOST_REGEX_CALL
-# define BOOST_REGEX_CALL
-#endif
-#ifndef BOOST_REGEX_CCALL
-#define BOOST_REGEX_CCALL
-#endif
-
-/*****************************************************************************
- *
- * Set up localisation model:
- *
- ****************************************************************************/
-
-/* backwards compatibility: */
-#ifdef BOOST_RE_LOCALE_C
-# define BOOST_REGEX_USE_C_LOCALE
-#endif
-
-#ifdef BOOST_RE_LOCALE_CPP
-# define BOOST_REGEX_USE_CPP_LOCALE
-#endif
-
-#if defined(__CYGWIN__)
-# define BOOST_REGEX_USE_C_LOCALE
-#endif
-
-/* Win32 defaults to native Win32 locale: */
-#if defined(_WIN32) && !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_REGEX_NO_W32)
-# define BOOST_REGEX_USE_WIN32_LOCALE
-#endif
-/* otherwise use C++ locale if supported: */
-#if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_NO_STD_LOCALE)
-# define BOOST_REGEX_USE_CPP_LOCALE
-#endif
-/* otherwise use C+ locale: */
-#if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE)
-# define BOOST_REGEX_USE_C_LOCALE
-#endif
-
-#ifndef BOOST_REGEX_MAX_STATE_COUNT
-# define BOOST_REGEX_MAX_STATE_COUNT 100000000
-#endif
-
-
-/*****************************************************************************
- *
- * Error Handling for exception free compilers:
- *
- ****************************************************************************/
-
-#ifdef BOOST_NO_EXCEPTIONS
-/*
- * If there are no exceptions then we must report critical-errors
- * the only way we know how; by terminating.
- */
-#include <stdexcept>
-#include <string>
-#include <cutl/details/boost/throw_exception.hpp>
-
-# define BOOST_REGEX_NOEH_ASSERT(x)\
-if(0 == (x))\
-{\
- std::string s("Error: critical regex++ failure in: ");\
- s.append(#x);\
- std::runtime_error e(s);\
- cutl_details_boost::throw_exception(e);\
-}
-#else
-/*
- * With exceptions then error handling is taken care of and
- * there is no need for these checks:
- */
-# define BOOST_REGEX_NOEH_ASSERT(x)
-#endif
-
-
-/*****************************************************************************
- *
- * Stack protection under MS Windows:
- *
- ****************************************************************************/
-
-#if !defined(BOOST_REGEX_NO_W32) && !defined(BOOST_REGEX_V3)
-# if(defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \
- && !defined(__GNUC__) \
- && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \
- && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003))
-# define BOOST_REGEX_HAS_MS_STACK_GUARD
-# endif
-#elif defined(BOOST_REGEX_HAS_MS_STACK_GUARD)
-# undef BOOST_REGEX_HAS_MS_STACK_GUARD
-#endif
-
-#if defined(__cplusplus) && defined(BOOST_REGEX_HAS_MS_STACK_GUARD)
-
-namespace cutl_details_boost{
-namespace re_detail{
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page();
-
-}
-}
-
-#endif
-
-
-/*****************************************************************************
- *
- * Algorithm selection and configuration:
- *
- ****************************************************************************/
-
-#if !defined(BOOST_REGEX_RECURSIVE) && !defined(BOOST_REGEX_NON_RECURSIVE)
-# if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && !defined(_STLP_DEBUG) && !defined(__STL_DEBUG) && !(defined(BOOST_MSVC) && (BOOST_MSVC >= 1400))
-# define BOOST_REGEX_RECURSIVE
-# else
-# define BOOST_REGEX_NON_RECURSIVE
-# endif
-#endif
-
-#ifdef BOOST_REGEX_NON_RECURSIVE
-# ifdef BOOST_REGEX_RECURSIVE
-# error "Can't set both BOOST_REGEX_RECURSIVE and BOOST_REGEX_NON_RECURSIVE"
-# endif
-# ifndef BOOST_REGEX_BLOCKSIZE
-# define BOOST_REGEX_BLOCKSIZE 4096
-# endif
-# if BOOST_REGEX_BLOCKSIZE < 512
-# error "BOOST_REGEX_BLOCKSIZE must be at least 512"
-# endif
-# ifndef BOOST_REGEX_MAX_BLOCKS
-# define BOOST_REGEX_MAX_BLOCKS 1024
-# endif
-# ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
-# undef BOOST_REGEX_HAS_MS_STACK_GUARD
-# endif
-# ifndef BOOST_REGEX_MAX_CACHE_BLOCKS
-# define BOOST_REGEX_MAX_CACHE_BLOCKS 16
-# endif
-#endif
-
-
-/*****************************************************************************
- *
- * helper memory allocation functions:
- *
- ****************************************************************************/
-
-#if defined(__cplusplus) && defined(BOOST_REGEX_NON_RECURSIVE)
-namespace cutl_details_boost{ namespace re_detail{
-
-BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block();
-BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void*);
-
-}} /* namespaces */
-#endif
-
-/*****************************************************************************
- *
- * Diagnostics:
- *
- ****************************************************************************/
-
-#ifdef BOOST_REGEX_CONFIG_INFO
-BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info();
-#endif
-
-#if defined(BOOST_REGEX_DIAG)
-# pragma message ("BOOST_REGEX_DECL" BOOST_STRINGIZE(=BOOST_REGEX_DECL))
-# pragma message ("BOOST_REGEX_CALL" BOOST_STRINGIZE(=BOOST_REGEX_CALL))
-# pragma message ("BOOST_REGEX_CCALL" BOOST_STRINGIZE(=BOOST_REGEX_CCALL))
-#ifdef BOOST_REGEX_USE_C_LOCALE
-# pragma message ("Using C locale in regex traits class")
-#elif BOOST_REGEX_USE_CPP_LOCALE
-# pragma message ("Using C++ locale in regex traits class")
-#else
-# pragma message ("Using Win32 locale in regex traits class")
-#endif
-#if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
-# pragma message ("Dynamic linking enabled")
-#endif
-#if defined(BOOST_REGEX_NO_LIB) || defined(BOOST_ALL_NO_LIB)
-# pragma message ("Auto-linking disabled")
-#endif
-#ifdef BOOST_REGEX_NO_EXTERNAL_TEMPLATES
-# pragma message ("Extern templates disabled")
-#endif
-
-#endif
-
-#endif
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/config/cwchar.hpp b/libcutl/cutl/details/boost/regex/config/cwchar.hpp
deleted file mode 100644
index 73cdcce..0000000
--- a/libcutl/cutl/details/boost/regex/config/cwchar.hpp
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE boost/regex/config/cwchar.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: regex wide character string fixes.
- */
-
-#ifndef BOOST_REGEX_CONFIG_CWCHAR_HPP
-#define BOOST_REGEX_CONFIG_CWCHAR_HPP
-
-#include <cwchar>
-#include <cwctype>
-#include <cutl/details/boost/config.hpp>
-
-#if defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
-// apparently this is required for the RW STL on Linux:
-#undef iswalnum
-#undef iswalpha
-#undef iswblank
-#undef iswcntrl
-#undef iswdigit
-#undef iswgraph
-#undef iswlower
-#undef iswprint
-#undef iswprint
-#undef iswpunct
-#undef iswspace
-#undef iswupper
-#undef iswxdigit
-#undef iswctype
-#undef towlower
-#undef towupper
-#undef towctrans
-#undef wctrans
-#undef wctype
-#endif
-
-namespace std{
-
-#ifndef BOOST_NO_STDC_NAMESPACE
-extern "C"{
-#endif
-
-#ifdef iswalnum
-inline int (iswalnum)(wint_t i)
-{ return iswalnum(i); }
-#undef iswalnum
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswalnum;
-#endif
-
-#ifdef iswalpha
-inline int (iswalpha)(wint_t i)
-{ return iswalpha(i); }
-#undef iswalpha
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswalpha;
-#endif
-
-#ifdef iswcntrl
-inline int (iswcntrl)(wint_t i)
-{ return iswcntrl(i); }
-#undef iswcntrl
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswcntrl;
-#endif
-
-#ifdef iswdigit
-inline int (iswdigit)(wint_t i)
-{ return iswdigit(i); }
-#undef iswdigit
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswdigit;
-#endif
-
-#ifdef iswgraph
-inline int (iswgraph)(wint_t i)
-{ return iswgraph(i); }
-#undef iswgraph
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswgraph;
-#endif
-
-#ifdef iswlower
-inline int (iswlower)(wint_t i)
-{ return iswlower(i); }
-#undef iswlower
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswlower;
-#endif
-
-#ifdef iswprint
-inline int (iswprint)(wint_t i)
-{ return iswprint(i); }
-#undef iswprint
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswprint;
-#endif
-
-#ifdef iswpunct
-inline int (iswpunct)(wint_t i)
-{ return iswpunct(i); }
-#undef iswpunct
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswpunct;
-#endif
-
-#ifdef iswspace
-inline int (iswspace)(wint_t i)
-{ return iswspace(i); }
-#undef iswspace
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswspace;
-#endif
-
-#ifdef iswupper
-inline int (iswupper)(wint_t i)
-{ return iswupper(i); }
-#undef iswupper
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswupper;
-#endif
-
-#ifdef iswxdigit
-inline int (iswxdigit)(wint_t i)
-{ return iswxdigit(i); }
-#undef iswxdigit
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::iswxdigit;
-#endif
-
-#ifdef towlower
-inline wint_t (towlower)(wint_t i)
-{ return towlower(i); }
-#undef towlower
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::towlower;
-#endif
-
-#ifdef towupper
-inline wint_t (towupper)(wint_t i)
-{ return towupper(i); }
-#undef towupper
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using :: towupper;
-#endif
-
-#ifdef wcscmp
-inline int (wcscmp)(const wchar_t *p1, const wchar_t *p2)
-{ return wcscmp(p1,p2); }
-#undef wcscmp
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::wcscmp;
-#endif
-
-#ifdef wcscoll
-inline int (wcscoll)(const wchar_t *p1, const wchar_t *p2)
-{ return wcscoll(p1,p2); }
-#undef wcscoll
-#elif defined(BOOST_NO_STDC_NAMESPACE) && !defined(UNDER_CE)
-using ::wcscoll;
-#endif
-
-#ifdef wcscpy
-inline wchar_t *(wcscpy)(wchar_t *p1, const wchar_t *p2)
-{ return wcscpy(p1,p2); }
-#undef wcscpy
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::wcscpy;
-#endif
-
-#ifdef wcslen
-inline size_t (wcslen)(const wchar_t *p)
-{ return wcslen(p); }
-#undef wcslen
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::wcslen;
-#endif
-
-#ifdef wcsxfrm
-size_t wcsxfrm(wchar_t *p1, const wchar_t *p2, size_t s)
-{ return wcsxfrm(p1,p2,s); }
-#undef wcsxfrm
-#elif defined(BOOST_NO_STDC_NAMESPACE)
-using ::wcsxfrm;
-#endif
-
-
-#ifndef BOOST_NO_STDC_NAMESPACE
-} // extern "C"
-#endif
-
-} // namespace std
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/icu.hpp b/libcutl/cutl/details/boost/regex/icu.hpp
deleted file mode 100644
index 7c45c76..0000000
--- a/libcutl/cutl/details/boost/regex/icu.hpp
+++ /dev/null
@@ -1,1031 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE icu.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Unicode regular expressions on top of the ICU Library.
- */
-
-#ifndef BOOST_REGEX_ICU_HPP
-#define BOOST_REGEX_ICU_HPP
-
-#include <unicode/utypes.h>
-#include <unicode/uchar.h>
-#include <unicode/coll.h>
-#include <cutl/details/boost/regex.hpp>
-#include <cutl/details/boost/regex/pending/unicode_iterator.hpp>
-#include <cutl/details/boost/mpl/int_fwd.hpp>
-#include <bitset>
-
-#ifdef BOOST_MSVC
-#pragma warning (push)
-#pragma warning (disable: 4251)
-#endif
-
-namespace cutl_details_boost{
-
-namespace re_detail{
-
-//
-// Implementation details:
-//
-class BOOST_REGEX_DECL icu_regex_traits_implementation
-{
- typedef UChar32 char_type;
- typedef std::size_t size_type;
- typedef std::vector<char_type> string_type;
- typedef U_NAMESPACE_QUALIFIER Locale locale_type;
- typedef cutl_details_boost::uint_least32_t char_class_type;
-public:
- icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& l)
- : m_locale(l)
- {
- UErrorCode success = U_ZERO_ERROR;
- m_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
- if(U_SUCCESS(success) == 0)
- init_error();
- m_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::IDENTICAL);
- success = U_ZERO_ERROR;
- m_primary_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
- if(U_SUCCESS(success) == 0)
- init_error();
- m_primary_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::PRIMARY);
- }
- U_NAMESPACE_QUALIFIER Locale getloc()const
- {
- return m_locale;
- }
- string_type do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const;
- string_type transform(const char_type* p1, const char_type* p2) const
- {
- return do_transform(p1, p2, m_collator.get());
- }
- string_type transform_primary(const char_type* p1, const char_type* p2) const
- {
- return do_transform(p1, p2, m_primary_collator.get());
- }
-private:
- void init_error()
- {
- std::runtime_error e("Could not initialize ICU resources");
- cutl_details_boost::throw_exception(e);
- }
- U_NAMESPACE_QUALIFIER Locale m_locale; // The ICU locale that we're using
- cutl_details_boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_collator; // The full collation object
- cutl_details_boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_primary_collator; // The primary collation object
-};
-
-inline cutl_details_boost::shared_ptr<icu_regex_traits_implementation> get_icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& loc)
-{
- return cutl_details_boost::shared_ptr<icu_regex_traits_implementation>(new icu_regex_traits_implementation(loc));
-}
-
-}
-
-class BOOST_REGEX_DECL icu_regex_traits
-{
-public:
- typedef UChar32 char_type;
- typedef std::size_t size_type;
- typedef std::vector<char_type> string_type;
- typedef U_NAMESPACE_QUALIFIER Locale locale_type;
-#ifdef BOOST_NO_INT64_T
- typedef std::bitset<64> char_class_type;
-#else
- typedef cutl_details_boost::uint64_t char_class_type;
-#endif
-
- struct boost_extensions_tag{};
-
- icu_regex_traits()
- : m_pimpl(re_detail::get_icu_regex_traits_implementation(U_NAMESPACE_QUALIFIER Locale()))
- {
- }
- static size_type length(const char_type* p);
-
- ::cutl_details_boost::regex_constants::syntax_type syntax_type(char_type c)const
- {
- return ((c < 0x7f) && (c > 0)) ? re_detail::get_default_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char;
- }
- ::cutl_details_boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c) const
- {
- return ((c < 0x7f) && (c > 0)) ? re_detail::get_default_escape_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char;
- }
- char_type translate(char_type c) const
- {
- return c;
- }
- char_type translate_nocase(char_type c) const
- {
- return ::u_tolower(c);
- }
- char_type translate(char_type c, bool icase) const
- {
- return icase ? translate_nocase(c) : translate(c);
- }
- char_type tolower(char_type c) const
- {
- return ::u_tolower(c);
- }
- char_type toupper(char_type c) const
- {
- return ::u_toupper(c);
- }
- string_type transform(const char_type* p1, const char_type* p2) const
- {
- return m_pimpl->transform(p1, p2);
- }
- string_type transform_primary(const char_type* p1, const char_type* p2) const
- {
- return m_pimpl->transform_primary(p1, p2);
- }
- char_class_type lookup_classname(const char_type* p1, const char_type* p2) const;
- string_type lookup_collatename(const char_type* p1, const char_type* p2) const;
- bool isctype(char_type c, char_class_type f) const;
- int toi(const char_type*& p1, const char_type* p2, int radix)const
- {
- return re_detail::global_toi(p1, p2, radix, *this);
- }
- int value(char_type c, int radix)const
- {
- return u_digit(c, static_cast< ::int8_t>(radix));
- }
- locale_type imbue(locale_type l)
- {
- locale_type result(m_pimpl->getloc());
- m_pimpl = re_detail::get_icu_regex_traits_implementation(l);
- return result;
- }
- locale_type getloc()const
- {
- return locale_type();
- }
- std::string error_string(::cutl_details_boost::regex_constants::error_type n) const
- {
- return re_detail::get_default_error_string(n);
- }
-private:
- icu_regex_traits(const icu_regex_traits&);
- icu_regex_traits& operator=(const icu_regex_traits&);
-
- //
- // define the bitmasks offsets we need for additional character properties:
- //
- enum{
- offset_blank = U_CHAR_CATEGORY_COUNT,
- offset_space = U_CHAR_CATEGORY_COUNT+1,
- offset_xdigit = U_CHAR_CATEGORY_COUNT+2,
- offset_underscore = U_CHAR_CATEGORY_COUNT+3,
- offset_unicode = U_CHAR_CATEGORY_COUNT+4,
- offset_any = U_CHAR_CATEGORY_COUNT+5,
- offset_ascii = U_CHAR_CATEGORY_COUNT+6,
- offset_horizontal = U_CHAR_CATEGORY_COUNT+7,
- offset_vertical = U_CHAR_CATEGORY_COUNT+8
- };
-
- //
- // and now the masks:
- //
- static const char_class_type mask_blank;
- static const char_class_type mask_space;
- static const char_class_type mask_xdigit;
- static const char_class_type mask_underscore;
- static const char_class_type mask_unicode;
- static const char_class_type mask_any;
- static const char_class_type mask_ascii;
- static const char_class_type mask_horizontal;
- static const char_class_type mask_vertical;
-
- static char_class_type lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2);
-
- cutl_details_boost::shared_ptr< ::cutl_details_boost::re_detail::icu_regex_traits_implementation> m_pimpl;
-};
-
-} // namespace cutl_details_boost
-
-//
-// template instances:
-//
-#define BOOST_REGEX_CHAR_T UChar32
-#undef BOOST_REGEX_TRAITS_T
-#define BOOST_REGEX_TRAITS_T , icu_regex_traits
-#define BOOST_REGEX_ICU_INSTANCES
-#ifdef BOOST_REGEX_ICU_INSTANTIATE
-# define BOOST_REGEX_INSTANTIATE
-#endif
-#include <cutl/details/boost/regex/v4/instances.hpp>
-#undef BOOST_REGEX_CHAR_T
-#undef BOOST_REGEX_TRAITS_T
-#undef BOOST_REGEX_ICU_INSTANCES
-#ifdef BOOST_REGEX_INSTANTIATE
-# undef BOOST_REGEX_INSTANTIATE
-#endif
-
-namespace cutl_details_boost{
-
-// types:
-typedef basic_regex< ::UChar32, icu_regex_traits> u32regex;
-typedef match_results<const ::UChar32*> u32match;
-typedef match_results<const ::UChar*> u16match;
-
-//
-// Construction of 32-bit regex types from UTF-8 and UTF-16 primitives:
-//
-namespace re_detail{
-
-#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
-template <class InputIterator>
-inline u32regex do_make_u32regex(InputIterator i,
- InputIterator j,
- cutl_details_boost::regex_constants::syntax_option_type opt,
- const cutl_details_boost::mpl::int_<1>*)
-{
- typedef cutl_details_boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
- return u32regex(conv_type(i, i, j), conv_type(j, i, j), opt);
-}
-
-template <class InputIterator>
-inline u32regex do_make_u32regex(InputIterator i,
- InputIterator j,
- cutl_details_boost::regex_constants::syntax_option_type opt,
- const cutl_details_boost::mpl::int_<2>*)
-{
- typedef cutl_details_boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
- return u32regex(conv_type(i, i, j), conv_type(j, i, j), opt);
-}
-
-template <class InputIterator>
-inline u32regex do_make_u32regex(InputIterator i,
- InputIterator j,
- cutl_details_boost::regex_constants::syntax_option_type opt,
- const cutl_details_boost::mpl::int_<4>*)
-{
- return u32regex(i, j, opt);
-}
-#else
-template <class InputIterator>
-inline u32regex do_make_u32regex(InputIterator i,
- InputIterator j,
- cutl_details_boost::regex_constants::syntax_option_type opt,
- const cutl_details_boost::mpl::int_<1>*)
-{
- typedef cutl_details_boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
- typedef std::vector<UChar32> vector_type;
- vector_type v;
- conv_type a(i, i, j), b(j, i, j);
- while(a != b)
- {
- v.push_back(*a);
- ++a;
- }
- if(v.size())
- return u32regex(&*v.begin(), v.size(), opt);
- return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
-}
-
-template <class InputIterator>
-inline u32regex do_make_u32regex(InputIterator i,
- InputIterator j,
- cutl_details_boost::regex_constants::syntax_option_type opt,
- const cutl_details_boost::mpl::int_<2>*)
-{
- typedef cutl_details_boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
- typedef std::vector<UChar32> vector_type;
- vector_type v;
- conv_type a(i, i, j), b(j, i, j);
- while(a != b)
- {
- v.push_back(*a);
- ++a;
- }
- if(v.size())
- return u32regex(&*v.begin(), v.size(), opt);
- return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
-}
-
-template <class InputIterator>
-inline u32regex do_make_u32regex(InputIterator i,
- InputIterator j,
- cutl_details_boost::regex_constants::syntax_option_type opt,
- const cutl_details_boost::mpl::int_<4>*)
-{
- typedef std::vector<UChar32> vector_type;
- vector_type v;
- while(i != j)
- {
- v.push_back((UChar32)(*i));
- ++i;
- }
- if(v.size())
- return u32regex(&*v.begin(), v.size(), opt);
- return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
-}
-#endif
-}
-
-//
-// Construction from an iterator pair:
-//
-template <class InputIterator>
-inline u32regex make_u32regex(InputIterator i,
- InputIterator j,
- cutl_details_boost::regex_constants::syntax_option_type opt)
-{
- return re_detail::do_make_u32regex(i, j, opt, static_cast<cutl_details_boost::mpl::int_<sizeof(*i)> const*>(0));
-}
-//
-// construction from UTF-8 nul-terminated strings:
-//
-inline u32regex make_u32regex(const char* p, cutl_details_boost::regex_constants::syntax_option_type opt = cutl_details_boost::regex_constants::perl)
-{
- return re_detail::do_make_u32regex(p, p + std::strlen(p), opt, static_cast<cutl_details_boost::mpl::int_<1> const*>(0));
-}
-inline u32regex make_u32regex(const unsigned char* p, cutl_details_boost::regex_constants::syntax_option_type opt = cutl_details_boost::regex_constants::perl)
-{
- return re_detail::do_make_u32regex(p, p + std::strlen(reinterpret_cast<const char*>(p)), opt, static_cast<cutl_details_boost::mpl::int_<1> const*>(0));
-}
-//
-// construction from UTF-16 nul-terminated strings:
-//
-#ifndef BOOST_NO_WREGEX
-inline u32regex make_u32regex(const wchar_t* p, cutl_details_boost::regex_constants::syntax_option_type opt = cutl_details_boost::regex_constants::perl)
-{
- return re_detail::do_make_u32regex(p, p + std::wcslen(p), opt, static_cast<cutl_details_boost::mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-#endif
-#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
-inline u32regex make_u32regex(const UChar* p, cutl_details_boost::regex_constants::syntax_option_type opt = cutl_details_boost::regex_constants::perl)
-{
- return re_detail::do_make_u32regex(p, p + u_strlen(p), opt, static_cast<cutl_details_boost::mpl::int_<2> const*>(0));
-}
-#endif
-//
-// construction from basic_string class-template:
-//
-template<class C, class T, class A>
-inline u32regex make_u32regex(const std::basic_string<C, T, A>& s, cutl_details_boost::regex_constants::syntax_option_type opt = cutl_details_boost::regex_constants::perl)
-{
- return re_detail::do_make_u32regex(s.begin(), s.end(), opt, static_cast<cutl_details_boost::mpl::int_<sizeof(C)> const*>(0));
-}
-//
-// Construction from ICU string type:
-//
-inline u32regex make_u32regex(const U_NAMESPACE_QUALIFIER UnicodeString& s, cutl_details_boost::regex_constants::syntax_option_type opt = cutl_details_boost::regex_constants::perl)
-{
- return re_detail::do_make_u32regex(s.getBuffer(), s.getBuffer() + s.length(), opt, static_cast<cutl_details_boost::mpl::int_<2> const*>(0));
-}
-
-//
-// regex_match overloads that widen the character type as appropriate:
-//
-namespace re_detail{
-template<class MR1, class MR2>
-void copy_results(MR1& out, MR2 const& in)
-{
- // copy results from an adapted MR2 match_results:
- out.set_size(in.size(), in.prefix().first.base(), in.suffix().second.base());
- out.set_base(in.base().base());
- for(int i = 0; i < (int)in.size(); ++i)
- {
- if(in[i].matched)
- {
- out.set_first(in[i].first.base(), i);
- out.set_second(in[i].second.base(), i);
- }
- }
-}
-
-template <class BidiIterator, class Allocator>
-inline bool do_regex_match(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const u32regex& e,
- match_flag_type flags,
- cutl_details_boost::mpl::int_<4> const*)
-{
- return ::cutl_details_boost::regex_match(first, last, m, e, flags);
-}
-template <class BidiIterator, class Allocator>
-bool do_regex_match(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const u32regex& e,
- match_flag_type flags,
- cutl_details_boost::mpl::int_<2> const*)
-{
- typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type;
- typedef match_results<conv_type> match_type;
- //typedef typename match_type::allocator_type alloc_type;
- match_type what;
- bool result = ::cutl_details_boost::regex_match(conv_type(first, first, last), conv_type(last, first, last), what, e, flags);
- // copy results across to m:
- if(result) copy_results(m, what);
- return result;
-}
-template <class BidiIterator, class Allocator>
-bool do_regex_match(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const u32regex& e,
- match_flag_type flags,
- cutl_details_boost::mpl::int_<1> const*)
-{
- typedef u8_to_u32_iterator<BidiIterator, UChar32> conv_type;
- typedef match_results<conv_type> match_type;
- //typedef typename match_type::allocator_type alloc_type;
- match_type what;
- bool result = ::cutl_details_boost::regex_match(conv_type(first, first, last), conv_type(last, first, last), what, e, flags);
- // copy results across to m:
- if(result) copy_results(m, what);
- return result;
-}
-} // namespace re_detail
-
-template <class BidiIterator, class Allocator>
-inline bool u32regex_match(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_match(first, last, m, e, flags, static_cast<mpl::int_<sizeof(*first)> const*>(0));
-}
-inline bool u32regex_match(const UChar* p,
- match_results<const UChar*>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0));
-}
-#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
-inline bool u32regex_match(const wchar_t* p,
- match_results<const wchar_t*>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-#endif
-inline bool u32regex_match(const char* p,
- match_results<const char*>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
-}
-inline bool u32regex_match(const unsigned char* p,
- match_results<const unsigned char*>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
-}
-inline bool u32regex_match(const std::string& s,
- match_results<std::string::const_iterator>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<1> const*>(0));
-}
-#ifndef BOOST_NO_STD_WSTRING
-inline bool u32regex_match(const std::wstring& s,
- match_results<std::wstring::const_iterator>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-#endif
-inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s,
- match_results<const UChar*>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-//
-// regex_match overloads that do not return what matched:
-//
-template <class BidiIterator>
-inline bool u32regex_match(BidiIterator first, BidiIterator last,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<BidiIterator> m;
- return re_detail::do_regex_match(first, last, m, e, flags, static_cast<mpl::int_<sizeof(*first)> const*>(0));
-}
-inline bool u32regex_match(const UChar* p,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const UChar*> m;
- return re_detail::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0));
-}
-#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
-inline bool u32regex_match(const wchar_t* p,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const wchar_t*> m;
- return re_detail::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-#endif
-inline bool u32regex_match(const char* p,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const char*> m;
- return re_detail::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
-}
-inline bool u32regex_match(const unsigned char* p,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const unsigned char*> m;
- return re_detail::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
-}
-inline bool u32regex_match(const std::string& s,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<std::string::const_iterator> m;
- return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<1> const*>(0));
-}
-#ifndef BOOST_NO_STD_WSTRING
-inline bool u32regex_match(const std::wstring& s,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<std::wstring::const_iterator> m;
- return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-#endif
-inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const UChar*> m;
- return re_detail::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-
-//
-// regex_search overloads that widen the character type as appropriate:
-//
-namespace re_detail{
-template <class BidiIterator, class Allocator>
-inline bool do_regex_search(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const u32regex& e,
- match_flag_type flags,
- BidiIterator base,
- cutl_details_boost::mpl::int_<4> const*)
-{
- return ::cutl_details_boost::regex_search(first, last, m, e, flags, base);
-}
-template <class BidiIterator, class Allocator>
-bool do_regex_search(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const u32regex& e,
- match_flag_type flags,
- BidiIterator base,
- cutl_details_boost::mpl::int_<2> const*)
-{
- typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type;
- typedef match_results<conv_type> match_type;
- //typedef typename match_type::allocator_type alloc_type;
- match_type what;
- bool result = ::cutl_details_boost::regex_search(conv_type(first, first, last), conv_type(last, first, last), what, e, flags, conv_type(base));
- // copy results across to m:
- if(result) copy_results(m, what);
- return result;
-}
-template <class BidiIterator, class Allocator>
-bool do_regex_search(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const u32regex& e,
- match_flag_type flags,
- BidiIterator base,
- cutl_details_boost::mpl::int_<1> const*)
-{
- typedef u8_to_u32_iterator<BidiIterator, UChar32> conv_type;
- typedef match_results<conv_type> match_type;
- //typedef typename match_type::allocator_type alloc_type;
- match_type what;
- bool result = ::cutl_details_boost::regex_search(conv_type(first, first, last), conv_type(last, first, last), what, e, flags, conv_type(base));
- // copy results across to m:
- if(result) copy_results(m, what);
- return result;
-}
-}
-
-template <class BidiIterator, class Allocator>
-inline bool u32regex_search(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_search(first, last, m, e, flags, first, static_cast<mpl::int_<sizeof(*first)> const*>(0));
-}
-template <class BidiIterator, class Allocator>
-inline bool u32regex_search(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const u32regex& e,
- match_flag_type flags,
- BidiIterator base)
-{
- return re_detail::do_regex_search(first, last, m, e, flags, base, static_cast<mpl::int_<sizeof(*first)> const*>(0));
-}
-inline bool u32regex_search(const UChar* p,
- match_results<const UChar*>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0));
-}
-#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
-inline bool u32regex_search(const wchar_t* p,
- match_results<const wchar_t*>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-#endif
-inline bool u32regex_search(const char* p,
- match_results<const char*>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
-}
-inline bool u32regex_search(const unsigned char* p,
- match_results<const unsigned char*>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
-}
-inline bool u32regex_search(const std::string& s,
- match_results<std::string::const_iterator>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<1> const*>(0));
-}
-#ifndef BOOST_NO_STD_WSTRING
-inline bool u32regex_search(const std::wstring& s,
- match_results<std::wstring::const_iterator>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-#endif
-inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s,
- match_results<const UChar*>& m,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- return re_detail::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-template <class BidiIterator>
-inline bool u32regex_search(BidiIterator first, BidiIterator last,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<BidiIterator> m;
- return re_detail::do_regex_search(first, last, m, e, flags, first, static_cast<mpl::int_<sizeof(*first)> const*>(0));
-}
-inline bool u32regex_search(const UChar* p,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const UChar*> m;
- return re_detail::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0));
-}
-#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
-inline bool u32regex_search(const wchar_t* p,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const wchar_t*> m;
- return re_detail::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-#endif
-inline bool u32regex_search(const char* p,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const char*> m;
- return re_detail::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
-}
-inline bool u32regex_search(const unsigned char* p,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const unsigned char*> m;
- return re_detail::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
-}
-inline bool u32regex_search(const std::string& s,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<std::string::const_iterator> m;
- return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<1> const*>(0));
-}
-#ifndef BOOST_NO_STD_WSTRING
-inline bool u32regex_search(const std::wstring& s,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<std::wstring::const_iterator> m;
- return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-#endif
-inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s,
- const u32regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const UChar*> m;
- return re_detail::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
-}
-
-//
-// overloads for regex_replace with utf-8 and utf-16 data types:
-//
-namespace re_detail{
-template <class I>
-inline std::pair< cutl_details_boost::u8_to_u32_iterator<I>, cutl_details_boost::u8_to_u32_iterator<I> >
- make_utf32_seq(I i, I j, mpl::int_<1> const*)
-{
- return std::pair< cutl_details_boost::u8_to_u32_iterator<I>, cutl_details_boost::u8_to_u32_iterator<I> >(cutl_details_boost::u8_to_u32_iterator<I>(i, i, j), cutl_details_boost::u8_to_u32_iterator<I>(j, i, j));
-}
-template <class I>
-inline std::pair< cutl_details_boost::u16_to_u32_iterator<I>, cutl_details_boost::u16_to_u32_iterator<I> >
- make_utf32_seq(I i, I j, mpl::int_<2> const*)
-{
- return std::pair< cutl_details_boost::u16_to_u32_iterator<I>, cutl_details_boost::u16_to_u32_iterator<I> >(cutl_details_boost::u16_to_u32_iterator<I>(i, i, j), cutl_details_boost::u16_to_u32_iterator<I>(j, i, j));
-}
-template <class I>
-inline std::pair< I, I >
- make_utf32_seq(I i, I j, mpl::int_<4> const*)
-{
- return std::pair< I, I >(i, j);
-}
-template <class charT>
-inline std::pair< cutl_details_boost::u8_to_u32_iterator<const charT*>, cutl_details_boost::u8_to_u32_iterator<const charT*> >
- make_utf32_seq(const charT* p, mpl::int_<1> const*)
-{
- std::size_t len = std::strlen((const char*)p);
- return std::pair< cutl_details_boost::u8_to_u32_iterator<const charT*>, cutl_details_boost::u8_to_u32_iterator<const charT*> >(cutl_details_boost::u8_to_u32_iterator<const charT*>(p, p, p+len), cutl_details_boost::u8_to_u32_iterator<const charT*>(p+len, p, p+len));
-}
-template <class charT>
-inline std::pair< cutl_details_boost::u16_to_u32_iterator<const charT*>, cutl_details_boost::u16_to_u32_iterator<const charT*> >
- make_utf32_seq(const charT* p, mpl::int_<2> const*)
-{
- std::size_t len = u_strlen((const UChar*)p);
- return std::pair< cutl_details_boost::u16_to_u32_iterator<const charT*>, cutl_details_boost::u16_to_u32_iterator<const charT*> >(cutl_details_boost::u16_to_u32_iterator<const charT*>(p, p, p + len), cutl_details_boost::u16_to_u32_iterator<const charT*>(p+len, p, p + len));
-}
-template <class charT>
-inline std::pair< const charT*, const charT* >
- make_utf32_seq(const charT* p, mpl::int_<4> const*)
-{
- return std::pair< const charT*, const charT* >(p, p+icu_regex_traits::length((UChar32 const*)p));
-}
-template <class OutputIterator>
-inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> const*)
-{
- return o;
-}
-template <class OutputIterator>
-inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, mpl::int_<2> const*)
-{
- return o;
-}
-template <class OutputIterator>
-inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, mpl::int_<1> const*)
-{
- return o;
-}
-
-template <class OutputIterator, class I1, class I2>
-OutputIterator do_regex_replace(OutputIterator out,
- std::pair<I1, I1> const& in,
- const u32regex& e,
- const std::pair<I2, I2>& fmt,
- match_flag_type flags
- )
-{
- // unfortunately we have to copy the format string in order to pass in onward:
- std::vector<UChar32> f;
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- f.assign(fmt.first, fmt.second);
-#else
- f.clear();
- I2 pos = fmt.first;
- while(pos != fmt.second)
- f.push_back(*pos++);
-#endif
-
- regex_iterator<I1, UChar32, icu_regex_traits> i(in.first, in.second, e, flags);
- regex_iterator<I1, UChar32, icu_regex_traits> j;
- if(i == j)
- {
- if(!(flags & regex_constants::format_no_copy))
- out = re_detail::copy(in.first, in.second, out);
- }
- else
- {
- I1 last_m = in.first;
- while(i != j)
- {
- if(!(flags & regex_constants::format_no_copy))
- out = re_detail::copy(i->prefix().first, i->prefix().second, out);
- if(f.size())
- out = ::cutl_details_boost::re_detail::regex_format_imp(out, *i, &*f.begin(), &*f.begin() + f.size(), flags, e.get_traits());
- else
- out = ::cutl_details_boost::re_detail::regex_format_imp(out, *i, static_cast<UChar32 const*>(0), static_cast<UChar32 const*>(0), flags, e.get_traits());
- last_m = (*i)[0].second;
- if(flags & regex_constants::format_first_only)
- break;
- ++i;
- }
- if(!(flags & regex_constants::format_no_copy))
- out = re_detail::copy(last_m, in.second, out);
- }
- return out;
-}
-template <class BaseIterator>
-inline const BaseIterator& extract_output_base(const BaseIterator& b)
-{
- return b;
-}
-template <class BaseIterator>
-inline BaseIterator extract_output_base(const utf8_output_iterator<BaseIterator>& b)
-{
- return b.base();
-}
-template <class BaseIterator>
-inline BaseIterator extract_output_base(const utf16_output_iterator<BaseIterator>& b)
-{
- return b.base();
-}
-} // re_detail
-
-template <class OutputIterator, class BidirectionalIterator, class charT>
-inline OutputIterator u32regex_replace(OutputIterator out,
- BidirectionalIterator first,
- BidirectionalIterator last,
- const u32regex& e,
- const charT* fmt,
- match_flag_type flags = match_default)
-{
- return re_detail::extract_output_base
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
- <OutputIterator>
-#endif
- (
- re_detail::do_regex_replace(
- re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
- re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
- e,
- re_detail::make_utf32_seq(fmt, static_cast<mpl::int_<sizeof(*fmt)> const*>(0)),
- flags)
- );
-}
-
-template <class OutputIterator, class Iterator, class charT>
-inline OutputIterator u32regex_replace(OutputIterator out,
- Iterator first,
- Iterator last,
- const u32regex& e,
- const std::basic_string<charT>& fmt,
- match_flag_type flags = match_default)
-{
- return re_detail::extract_output_base
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
- <OutputIterator>
-#endif
- (
- re_detail::do_regex_replace(
- re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
- re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
- e,
- re_detail::make_utf32_seq(fmt.begin(), fmt.end(), static_cast<mpl::int_<sizeof(charT)> const*>(0)),
- flags)
- );
-}
-
-template <class OutputIterator, class Iterator>
-inline OutputIterator u32regex_replace(OutputIterator out,
- Iterator first,
- Iterator last,
- const u32regex& e,
- const U_NAMESPACE_QUALIFIER UnicodeString& fmt,
- match_flag_type flags = match_default)
-{
- return re_detail::extract_output_base
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
- <OutputIterator>
-#endif
- (
- re_detail::do_regex_replace(
- re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
- re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
- e,
- re_detail::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<mpl::int_<2> const*>(0)),
- flags)
- );
-}
-
-template <class charT>
-std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s,
- const u32regex& e,
- const charT* fmt,
- match_flag_type flags = match_default)
-{
- std::basic_string<charT> result;
- re_detail::string_out_iterator<std::basic_string<charT> > i(result);
- u32regex_replace(i, s.begin(), s.end(), e, fmt, flags);
- return result;
-}
-
-template <class charT>
-std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s,
- const u32regex& e,
- const std::basic_string<charT>& fmt,
- match_flag_type flags = match_default)
-{
- std::basic_string<charT> result;
- re_detail::string_out_iterator<std::basic_string<charT> > i(result);
- u32regex_replace(i, s.begin(), s.end(), e, fmt.c_str(), flags);
- return result;
-}
-
-namespace re_detail{
-
-class unicode_string_out_iterator
-{
- U_NAMESPACE_QUALIFIER UnicodeString* out;
-public:
- unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s) : out(&s) {}
- unicode_string_out_iterator& operator++() { return *this; }
- unicode_string_out_iterator& operator++(int) { return *this; }
- unicode_string_out_iterator& operator*() { return *this; }
- unicode_string_out_iterator& operator=(UChar v)
- {
- *out += v;
- return *this;
- }
- typedef std::ptrdiff_t difference_type;
- typedef UChar value_type;
- typedef value_type* pointer;
- typedef value_type& reference;
- typedef std::output_iterator_tag iterator_category;
-};
-
-}
-
-inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NAMESPACE_QUALIFIER UnicodeString& s,
- const u32regex& e,
- const UChar* fmt,
- match_flag_type flags = match_default)
-{
- U_NAMESPACE_QUALIFIER UnicodeString result;
- re_detail::unicode_string_out_iterator i(result);
- u32regex_replace(i, s.getBuffer(), s.getBuffer()+s.length(), e, fmt, flags);
- return result;
-}
-
-inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NAMESPACE_QUALIFIER UnicodeString& s,
- const u32regex& e,
- const U_NAMESPACE_QUALIFIER UnicodeString& fmt,
- match_flag_type flags = match_default)
-{
- U_NAMESPACE_QUALIFIER UnicodeString result;
- re_detail::unicode_string_out_iterator i(result);
- re_detail::do_regex_replace(
- re_detail::make_utf32_out(i, static_cast<mpl::int_<2> const*>(0)),
- re_detail::make_utf32_seq(s.getBuffer(), s.getBuffer()+s.length(), static_cast<mpl::int_<2> const*>(0)),
- e,
- re_detail::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<mpl::int_<2> const*>(0)),
- flags);
- return result;
-}
-
-} // namespace cutl_details_boost.
-
-#ifdef BOOST_MSVC
-#pragma warning (pop)
-#endif
-
-#include <cutl/details/boost/regex/v4/u32regex_iterator.hpp>
-#include <cutl/details/boost/regex/v4/u32regex_token_iterator.hpp>
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex/pattern_except.hpp b/libcutl/cutl/details/boost/regex/pattern_except.hpp
deleted file mode 100644
index b81c8e1..0000000
--- a/libcutl/cutl/details/boost/regex/pattern_except.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE pattern_except.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares pattern-matching exception classes.
- */
-
-#ifndef BOOST_RE_PAT_EXCEPT_HPP
-#define BOOST_RE_PAT_EXCEPT_HPP
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-
-#include <stdexcept>
-#include <cstddef>
-#include <cutl/details/boost/regex/v4/error_type.hpp>
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable : 4275)
-#endif
-class BOOST_REGEX_DECL regex_error : public std::runtime_error
-{
-public:
- explicit regex_error(const std::string& s, regex_constants::error_type err = regex_constants::error_unknown, std::ptrdiff_t pos = 0);
- explicit regex_error(regex_constants::error_type err);
- ~regex_error() throw();
- regex_constants::error_type code()const
- { return m_error_code; }
- std::ptrdiff_t position()const
- { return m_position; }
- void raise()const;
-private:
- regex_constants::error_type m_error_code;
- std::ptrdiff_t m_position;
-};
-
-typedef regex_error bad_pattern;
-typedef regex_error bad_expression;
-
-namespace re_detail{
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex);
-
-template <class traits>
-void raise_error(const traits& t, regex_constants::error_type code)
-{
- (void)t; // warning suppression
- std::runtime_error e(t.error_string(code));
- ::cutl_details_boost::re_detail::raise_runtime_error(e);
-}
-
-}
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#endif
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/pending/object_cache.hpp b/libcutl/cutl/details/boost/regex/pending/object_cache.hpp
deleted file mode 100644
index 2bf2754..0000000
--- a/libcutl/cutl/details/boost/regex/pending/object_cache.hpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE object_cache.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Implements a generic object cache.
- */
-
-#ifndef BOOST_REGEX_OBJECT_CACHE_HPP
-#define BOOST_REGEX_OBJECT_CACHE_HPP
-
-#include <map>
-#include <list>
-#include <stdexcept>
-#include <string>
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/shared_ptr.hpp>
-#ifdef BOOST_HAS_THREADS
-#include <cutl/details/boost/regex/pending/static_mutex.hpp>
-#endif
-
-namespace cutl_details_boost{
-
-template <class Key, class Object>
-class object_cache
-{
-public:
- typedef std::pair< ::cutl_details_boost::shared_ptr<Object const>, Key const*> value_type;
- typedef std::list<value_type> list_type;
- typedef typename list_type::iterator list_iterator;
- typedef std::map<Key, list_iterator> map_type;
- typedef typename map_type::iterator map_iterator;
- typedef typename list_type::size_type size_type;
- static cutl_details_boost::shared_ptr<Object const> get(const Key& k, size_type l_max_cache_size);
-
-private:
- static cutl_details_boost::shared_ptr<Object const> do_get(const Key& k, size_type l_max_cache_size);
-
- struct data
- {
- list_type cont;
- map_type index;
- };
-
- // Needed by compilers not implementing the resolution to DR45. For reference,
- // see http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#45.
- friend struct data;
-};
-
-template <class Key, class Object>
-cutl_details_boost::shared_ptr<Object const> object_cache<Key, Object>::get(const Key& k, size_type l_max_cache_size)
-{
-#ifdef BOOST_HAS_THREADS
- static cutl_details_boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT;
-
- cutl_details_boost::static_mutex::scoped_lock l(mut);
- if(l)
- {
- return do_get(k, l_max_cache_size);
- }
- //
- // what do we do if the lock fails?
- // for now just throw, but we should never really get here...
- //
- ::cutl_details_boost::throw_exception(std::runtime_error("Error in thread safety code: could not acquire a lock"));
-#if defined(BOOST_NO_UNREACHABLE_RETURN_DETECTION) || defined(BOOST_NO_EXCEPTIONS)
- return cutl_details_boost::shared_ptr<Object>();
-#endif
-#else
- return do_get(k, l_max_cache_size);
-#endif
-}
-
-template <class Key, class Object>
-cutl_details_boost::shared_ptr<Object const> object_cache<Key, Object>::do_get(const Key& k, size_type l_max_cache_size)
-{
- typedef typename object_cache<Key, Object>::data object_data;
- typedef typename map_type::size_type map_size_type;
- static object_data s_data;
-
- //
- // see if the object is already in the cache:
- //
- map_iterator mpos = s_data.index.find(k);
- if(mpos != s_data.index.end())
- {
- //
- // Eureka!
- // We have a cached item, bump it up the list and return it:
- //
- if(--(s_data.cont.end()) != mpos->second)
- {
- // splice out the item we want to move:
- list_type temp;
- temp.splice(temp.end(), s_data.cont, mpos->second);
- // and now place it at the end of the list:
- s_data.cont.splice(s_data.cont.end(), temp, temp.begin());
- BOOST_ASSERT(*(s_data.cont.back().second) == k);
- // update index with new position:
- mpos->second = --(s_data.cont.end());
- BOOST_ASSERT(&(mpos->first) == mpos->second->second);
- BOOST_ASSERT(&(mpos->first) == s_data.cont.back().second);
- }
- return s_data.cont.back().first;
- }
- //
- // if we get here then the item is not in the cache,
- // so create it:
- //
- cutl_details_boost::shared_ptr<Object const> result(new Object(k));
- //
- // Add it to the list, and index it:
- //
- s_data.cont.push_back(value_type(result, static_cast<Key const*>(0)));
- s_data.index.insert(std::make_pair(k, --(s_data.cont.end())));
- s_data.cont.back().second = &(s_data.index.find(k)->first);
- map_size_type s = s_data.index.size();
- BOOST_ASSERT(s_data.index[k]->first.get() == result.get());
- BOOST_ASSERT(&(s_data.index.find(k)->first) == s_data.cont.back().second);
- BOOST_ASSERT(s_data.index.find(k)->first == k);
- if(s > l_max_cache_size)
- {
- //
- // We have too many items in the list, so we need to start
- // popping them off the back of the list, but only if they're
- // being held uniquely by us:
- //
- list_iterator pos = s_data.cont.begin();
- list_iterator last = s_data.cont.end();
- while((pos != last) && (s > l_max_cache_size))
- {
- if(pos->first.unique())
- {
- list_iterator condemmed(pos);
- ++pos;
- // now remove the items from our containers,
- // then order has to be as follows:
- BOOST_ASSERT(s_data.index.find(*(condemmed->second)) != s_data.index.end());
- s_data.index.erase(*(condemmed->second));
- s_data.cont.erase(condemmed);
- --s;
- }
- else
- ++pos;
- }
- BOOST_ASSERT(s_data.index[k]->first.get() == result.get());
- BOOST_ASSERT(&(s_data.index.find(k)->first) == s_data.cont.back().second);
- BOOST_ASSERT(s_data.index.find(k)->first == k);
- }
- return result;
-}
-
-}
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex/pending/static_mutex.hpp b/libcutl/cutl/details/boost/regex/pending/static_mutex.hpp
deleted file mode 100644
index d3a0307..0000000
--- a/libcutl/cutl/details/boost/regex/pending/static_mutex.hpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE static_mutex.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares static_mutex lock type, there are three different
- * implementations: POSIX pthreads, WIN32 threads, and portable,
- * these are described in more detail below.
- */
-
-#ifndef BOOST_REGEX_STATIC_MUTEX_HPP
-#define BOOST_REGEX_STATIC_MUTEX_HPP
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/regex/config.hpp> // dll import/export options.
-
-#ifdef BOOST_HAS_PTHREADS
-#include <pthread.h>
-#endif
-
-#if defined(BOOST_HAS_PTHREADS) && defined(PTHREAD_MUTEX_INITIALIZER)
-//
-// pthreads version:
-// simple wrap around a pthread_mutex_t initialized with
-// PTHREAD_MUTEX_INITIALIZER.
-//
-namespace cutl_details_boost{
-
-class static_mutex;
-
-#define BOOST_STATIC_MUTEX_INIT { PTHREAD_MUTEX_INITIALIZER, }
-
-class BOOST_REGEX_DECL scoped_static_mutex_lock
-{
-public:
- scoped_static_mutex_lock(static_mutex& mut, bool lk = true);
- ~scoped_static_mutex_lock();
- inline bool locked()const
- {
- return m_have_lock;
- }
- inline operator void const*()const
- {
- return locked() ? this : 0;
- }
- void lock();
- void unlock();
-private:
- static_mutex& m_mutex;
- bool m_have_lock;
-};
-
-class static_mutex
-{
-public:
- typedef scoped_static_mutex_lock scoped_lock;
- pthread_mutex_t m_mutex;
-};
-
-} // namespace cutl_details_boost
-#elif defined(BOOST_HAS_WINTHREADS)
-//
-// Win32 version:
-// Use a 32-bit int as a lock, along with a test-and-set
-// implementation using InterlockedCompareExchange.
-//
-
-#include <cutl/details/boost/cstdint.hpp>
-
-namespace cutl_details_boost{
-
-class BOOST_REGEX_DECL scoped_static_mutex_lock;
-
-class static_mutex
-{
-public:
- typedef scoped_static_mutex_lock scoped_lock;
- cutl_details_boost::int32_t m_mutex;
-};
-
-#define BOOST_STATIC_MUTEX_INIT { 0, }
-
-class BOOST_REGEX_DECL scoped_static_mutex_lock
-{
-public:
- scoped_static_mutex_lock(static_mutex& mut, bool lk = true);
- ~scoped_static_mutex_lock();
- operator void const*()const
- {
- return locked() ? this : 0;
- }
- bool locked()const
- {
- return m_have_lock;
- }
- void lock();
- void unlock();
-private:
- static_mutex& m_mutex;
- bool m_have_lock;
- scoped_static_mutex_lock(const scoped_static_mutex_lock&);
- scoped_static_mutex_lock& operator=(const scoped_static_mutex_lock&);
-};
-
-} // namespace
-
-#else
-//
-// Portable version of a static mutex based on Boost.Thread library:
-// This has to use a single mutex shared by all instances of static_mutex
-// because cutl_details_boost::call_once doesn't alow us to pass instance information
-// down to the initialisation proceedure. In fact the initialisation routine
-// may need to be called more than once - but only once per instance.
-//
-// Since this preprocessor path is almost never taken, we hide these header
-// dependencies so that build tools don't find them.
-//
-#define B1 <cutl/details/boost/thread/once.hpp>
-#define B2 <cutl/details/boost/thread/recursive_mutex.hpp>
-#include B1
-#include B2
-#undef B1
-#undef B2
-
-namespace cutl_details_boost{
-
-class BOOST_REGEX_DECL scoped_static_mutex_lock;
-extern "C" BOOST_REGEX_DECL void cutl_details_boost_regex_free_static_mutex();
-
-class BOOST_REGEX_DECL static_mutex
-{
-public:
- typedef scoped_static_mutex_lock scoped_lock;
- static void init();
- static cutl_details_boost::recursive_mutex* m_pmutex;
- static cutl_details_boost::once_flag m_once;
-};
-
-#define BOOST_STATIC_MUTEX_INIT { }
-
-class BOOST_REGEX_DECL scoped_static_mutex_lock
-{
-public:
- scoped_static_mutex_lock(static_mutex& mut, bool lk = true);
- ~scoped_static_mutex_lock();
- operator void const*()const;
- bool locked()const;
- void lock();
- void unlock();
-private:
- cutl_details_boost::recursive_mutex::scoped_lock* m_plock;
- bool m_have_lock;
-};
-
-inline scoped_static_mutex_lock::operator void const*()const
-{
- return locked() ? this : 0;
-}
-
-inline bool scoped_static_mutex_lock::locked()const
-{
- return m_have_lock;
-}
-
-} // namespace
-
-#endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex/pending/unicode_iterator.hpp b/libcutl/cutl/details/boost/regex/pending/unicode_iterator.hpp
deleted file mode 100644
index 467afc7..0000000
--- a/libcutl/cutl/details/boost/regex/pending/unicode_iterator.hpp
+++ /dev/null
@@ -1,776 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE unicode_iterator.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Iterator adapters for converting between different Unicode encodings.
- */
-
-/****************************************************************************
-
-Contents:
-~~~~~~~~~
-
-1) Read Only, Input Adapters:
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-template <class BaseIterator, class U8Type = ::cutl_details_boost::uint8_t>
-class u32_to_u8_iterator;
-
-Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-8.
-
-template <class BaseIterator, class U32Type = ::cutl_details_boost::uint32_t>
-class u8_to_u32_iterator;
-
-Adapts sequence of UTF-8 code points to "look like" a sequence of UTF-32.
-
-template <class BaseIterator, class U16Type = ::cutl_details_boost::uint16_t>
-class u32_to_u16_iterator;
-
-Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-16.
-
-template <class BaseIterator, class U32Type = ::cutl_details_boost::uint32_t>
-class u16_to_u32_iterator;
-
-Adapts sequence of UTF-16 code points to "look like" a sequence of UTF-32.
-
-2) Single pass output iterator adapters:
-
-template <class BaseIterator>
-class utf8_output_iterator;
-
-Accepts UTF-32 code points and forwards them on as UTF-8 code points.
-
-template <class BaseIterator>
-class utf16_output_iterator;
-
-Accepts UTF-32 code points and forwards them on as UTF-16 code points.
-
-****************************************************************************/
-
-#ifndef BOOST_REGEX_UNICODE_ITERATOR_HPP
-#define BOOST_REGEX_UNICODE_ITERATOR_HPP
-#include <cutl/details/boost/cstdint.hpp>
-#include <cutl/details/boost/assert.hpp>
-#include <cutl/details/boost/iterator/iterator_facade.hpp>
-#include <cutl/details/boost/static_assert.hpp>
-#include <cutl/details/boost/throw_exception.hpp>
-#include <stdexcept>
-#ifndef BOOST_NO_STD_LOCALE
-#include <sstream>
-#include <ios>
-#endif
-#include <limits.h> // CHAR_BIT
-
-namespace cutl_details_boost{
-
-namespace detail{
-
-static const ::cutl_details_boost::uint16_t high_surrogate_base = 0xD7C0u;
-static const ::cutl_details_boost::uint16_t low_surrogate_base = 0xDC00u;
-static const ::cutl_details_boost::uint32_t ten_bit_mask = 0x3FFu;
-
-inline bool is_high_surrogate(::cutl_details_boost::uint16_t v)
-{
- return (v & 0xFFFFFC00u) == 0xd800u;
-}
-inline bool is_low_surrogate(::cutl_details_boost::uint16_t v)
-{
- return (v & 0xFFFFFC00u) == 0xdc00u;
-}
-template <class T>
-inline bool is_surrogate(T v)
-{
- return (v & 0xFFFFF800u) == 0xd800;
-}
-
-inline unsigned utf8_byte_count(cutl_details_boost::uint8_t c)
-{
- // if the most significant bit with a zero in it is in position
- // 8-N then there are N bytes in this UTF-8 sequence:
- cutl_details_boost::uint8_t mask = 0x80u;
- unsigned result = 0;
- while(c & mask)
- {
- ++result;
- mask >>= 1;
- }
- return (result == 0) ? 1 : ((result > 4) ? 4 : result);
-}
-
-inline unsigned utf8_trailing_byte_count(cutl_details_boost::uint8_t c)
-{
- return utf8_byte_count(c) - 1;
-}
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4100)
-#endif
-inline void invalid_utf32_code_point(::cutl_details_boost::uint32_t val)
-{
-#ifndef BOOST_NO_STD_LOCALE
- std::stringstream ss;
- ss << "Invalid UTF-32 code point U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-16 sequence";
- std::out_of_range e(ss.str());
-#else
- std::out_of_range e("Invalid UTF-32 code point encountered while trying to encode UTF-16 sequence");
-#endif
- cutl_details_boost::throw_exception(e);
-}
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-
-} // namespace detail
-
-template <class BaseIterator, class U16Type = ::cutl_details_boost::uint16_t>
-class u32_to_u16_iterator
- : public cutl_details_boost::iterator_facade<u32_to_u16_iterator<BaseIterator, U16Type>, U16Type, std::bidirectional_iterator_tag, const U16Type>
-{
- typedef cutl_details_boost::iterator_facade<u32_to_u16_iterator<BaseIterator, U16Type>, U16Type, std::bidirectional_iterator_tag, const U16Type> base_type;
-
-#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
-
- BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32);
- BOOST_STATIC_ASSERT(sizeof(U16Type)*CHAR_BIT == 16);
-#endif
-
-public:
- typename base_type::reference
- dereference()const
- {
- if(m_current == 2)
- extract_current();
- return m_values[m_current];
- }
- bool equal(const u32_to_u16_iterator& that)const
- {
- if(m_position == that.m_position)
- {
- // Both m_currents must be equal, or both even
- // this is the same as saying their sum must be even:
- return (m_current + that.m_current) & 1u ? false : true;
- }
- return false;
- }
- void increment()
- {
- // if we have a pending read then read now, so that we know whether
- // to skip a position, or move to a low-surrogate:
- if(m_current == 2)
- {
- // pending read:
- extract_current();
- }
- // move to the next surrogate position:
- ++m_current;
- // if we've reached the end skip a position:
- if(m_values[m_current] == 0)
- {
- m_current = 2;
- ++m_position;
- }
- }
- void decrement()
- {
- if(m_current != 1)
- {
- // decrementing an iterator always leads to a valid position:
- --m_position;
- extract_current();
- m_current = m_values[1] ? 1 : 0;
- }
- else
- {
- m_current = 0;
- }
- }
- BaseIterator base()const
- {
- return m_position;
- }
- // construct:
- u32_to_u16_iterator() : m_position(), m_current(0)
- {
- m_values[0] = 0;
- m_values[1] = 0;
- m_values[2] = 0;
- }
- u32_to_u16_iterator(BaseIterator b) : m_position(b), m_current(2)
- {
- m_values[0] = 0;
- m_values[1] = 0;
- m_values[2] = 0;
- }
-private:
-
- void extract_current()const
- {
- // begin by checking for a code point out of range:
- ::cutl_details_boost::uint32_t v = *m_position;
- if(v >= 0x10000u)
- {
- if(v > 0x10FFFFu)
- detail::invalid_utf32_code_point(*m_position);
- // split into two surrogates:
- m_values[0] = static_cast<U16Type>(v >> 10) + detail::high_surrogate_base;
- m_values[1] = static_cast<U16Type>(v & detail::ten_bit_mask) + detail::low_surrogate_base;
- m_current = 0;
- BOOST_ASSERT(detail::is_high_surrogate(m_values[0]));
- BOOST_ASSERT(detail::is_low_surrogate(m_values[1]));
- }
- else
- {
- // 16-bit code point:
- m_values[0] = static_cast<U16Type>(*m_position);
- m_values[1] = 0;
- m_current = 0;
- // value must not be a surrogate:
- if(detail::is_surrogate(m_values[0]))
- detail::invalid_utf32_code_point(*m_position);
- }
- }
- BaseIterator m_position;
- mutable U16Type m_values[3];
- mutable unsigned m_current;
-};
-
-template <class BaseIterator, class U32Type = ::cutl_details_boost::uint32_t>
-class u16_to_u32_iterator
- : public cutl_details_boost::iterator_facade<u16_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type>
-{
- typedef cutl_details_boost::iterator_facade<u16_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type> base_type;
- // special values for pending iterator reads:
- BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu);
-
-#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
-
- BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 16);
- BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32);
-#endif
-
-public:
- typename base_type::reference
- dereference()const
- {
- if(m_value == pending_read)
- extract_current();
- return m_value;
- }
- bool equal(const u16_to_u32_iterator& that)const
- {
- return m_position == that.m_position;
- }
- void increment()
- {
- // skip high surrogate first if there is one:
- if(detail::is_high_surrogate(*m_position)) ++m_position;
- ++m_position;
- m_value = pending_read;
- }
- void decrement()
- {
- --m_position;
- // if we have a low surrogate then go back one more:
- if(detail::is_low_surrogate(*m_position))
- --m_position;
- m_value = pending_read;
- }
- BaseIterator base()const
- {
- return m_position;
- }
- // construct:
- u16_to_u32_iterator() : m_position()
- {
- m_value = pending_read;
- }
- u16_to_u32_iterator(BaseIterator b) : m_position(b)
- {
- m_value = pending_read;
- }
- //
- // Range checked version:
- //
- u16_to_u32_iterator(BaseIterator b, BaseIterator start, BaseIterator end) : m_position(b)
- {
- m_value = pending_read;
- //
- // The range must not start with a low surrogate, or end in a high surrogate,
- // otherwise we run the risk of running outside the underlying input range.
- // Likewise b must not be located at a low surrogate.
- //
- cutl_details_boost::uint16_t val;
- if(start != end)
- {
- if((b != start) && (b != end))
- {
- val = *b;
- if(detail::is_surrogate(val) && ((val & 0xFC00u) == 0xDC00u))
- invalid_code_point(val);
- }
- val = *start;
- if(detail::is_surrogate(val) && ((val & 0xFC00u) == 0xDC00u))
- invalid_code_point(val);
- val = *--end;
- if(detail::is_high_surrogate(val))
- invalid_code_point(val);
- }
- }
-private:
- static void invalid_code_point(::cutl_details_boost::uint16_t val)
- {
-#ifndef BOOST_NO_STD_LOCALE
- std::stringstream ss;
- ss << "Misplaced UTF-16 surrogate U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-32 sequence";
- std::out_of_range e(ss.str());
-#else
- std::out_of_range e("Misplaced UTF-16 surrogate encountered while trying to encode UTF-32 sequence");
-#endif
- cutl_details_boost::throw_exception(e);
- }
- void extract_current()const
- {
- m_value = static_cast<U32Type>(static_cast< ::cutl_details_boost::uint16_t>(*m_position));
- // if the last value is a high surrogate then adjust m_position and m_value as needed:
- if(detail::is_high_surrogate(*m_position))
- {
- // precondition; next value must have be a low-surrogate:
- BaseIterator next(m_position);
- ::cutl_details_boost::uint16_t t = *++next;
- if((t & 0xFC00u) != 0xDC00u)
- invalid_code_point(t);
- m_value = (m_value - detail::high_surrogate_base) << 10;
- m_value |= (static_cast<U32Type>(static_cast< ::cutl_details_boost::uint16_t>(t)) & detail::ten_bit_mask);
- }
- // postcondition; result must not be a surrogate:
- if(detail::is_surrogate(m_value))
- invalid_code_point(static_cast< ::cutl_details_boost::uint16_t>(m_value));
- }
- BaseIterator m_position;
- mutable U32Type m_value;
-};
-
-template <class BaseIterator, class U8Type = ::cutl_details_boost::uint8_t>
-class u32_to_u8_iterator
- : public cutl_details_boost::iterator_facade<u32_to_u8_iterator<BaseIterator, U8Type>, U8Type, std::bidirectional_iterator_tag, const U8Type>
-{
- typedef cutl_details_boost::iterator_facade<u32_to_u8_iterator<BaseIterator, U8Type>, U8Type, std::bidirectional_iterator_tag, const U8Type> base_type;
-
-#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
-
- BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32);
- BOOST_STATIC_ASSERT(sizeof(U8Type)*CHAR_BIT == 8);
-#endif
-
-public:
- typename base_type::reference
- dereference()const
- {
- if(m_current == 4)
- extract_current();
- return m_values[m_current];
- }
- bool equal(const u32_to_u8_iterator& that)const
- {
- if(m_position == that.m_position)
- {
- // either the m_current's must be equal, or one must be 0 and
- // the other 4: which means neither must have bits 1 or 2 set:
- return (m_current == that.m_current)
- || (((m_current | that.m_current) & 3) == 0);
- }
- return false;
- }
- void increment()
- {
- // if we have a pending read then read now, so that we know whether
- // to skip a position, or move to a low-surrogate:
- if(m_current == 4)
- {
- // pending read:
- extract_current();
- }
- // move to the next surrogate position:
- ++m_current;
- // if we've reached the end skip a position:
- if(m_values[m_current] == 0)
- {
- m_current = 4;
- ++m_position;
- }
- }
- void decrement()
- {
- if((m_current & 3) == 0)
- {
- --m_position;
- extract_current();
- m_current = 3;
- while(m_current && (m_values[m_current] == 0))
- --m_current;
- }
- else
- --m_current;
- }
- BaseIterator base()const
- {
- return m_position;
- }
- // construct:
- u32_to_u8_iterator() : m_position(), m_current(0)
- {
- m_values[0] = 0;
- m_values[1] = 0;
- m_values[2] = 0;
- m_values[3] = 0;
- m_values[4] = 0;
- }
- u32_to_u8_iterator(BaseIterator b) : m_position(b), m_current(4)
- {
- m_values[0] = 0;
- m_values[1] = 0;
- m_values[2] = 0;
- m_values[3] = 0;
- m_values[4] = 0;
- }
-private:
-
- void extract_current()const
- {
- cutl_details_boost::uint32_t c = *m_position;
- if(c > 0x10FFFFu)
- detail::invalid_utf32_code_point(c);
- if(c < 0x80u)
- {
- m_values[0] = static_cast<unsigned char>(c);
- m_values[1] = static_cast<unsigned char>(0u);
- m_values[2] = static_cast<unsigned char>(0u);
- m_values[3] = static_cast<unsigned char>(0u);
- }
- else if(c < 0x800u)
- {
- m_values[0] = static_cast<unsigned char>(0xC0u + (c >> 6));
- m_values[1] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
- m_values[2] = static_cast<unsigned char>(0u);
- m_values[3] = static_cast<unsigned char>(0u);
- }
- else if(c < 0x10000u)
- {
- m_values[0] = static_cast<unsigned char>(0xE0u + (c >> 12));
- m_values[1] = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
- m_values[2] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
- m_values[3] = static_cast<unsigned char>(0u);
- }
- else
- {
- m_values[0] = static_cast<unsigned char>(0xF0u + (c >> 18));
- m_values[1] = static_cast<unsigned char>(0x80u + ((c >> 12) & 0x3Fu));
- m_values[2] = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
- m_values[3] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
- }
- m_current= 0;
- }
- BaseIterator m_position;
- mutable U8Type m_values[5];
- mutable unsigned m_current;
-};
-
-template <class BaseIterator, class U32Type = ::cutl_details_boost::uint32_t>
-class u8_to_u32_iterator
- : public cutl_details_boost::iterator_facade<u8_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type>
-{
- typedef cutl_details_boost::iterator_facade<u8_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type> base_type;
- // special values for pending iterator reads:
- BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu);
-
-#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
-
- BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 8);
- BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32);
-#endif
-
-public:
- typename base_type::reference
- dereference()const
- {
- if(m_value == pending_read)
- extract_current();
- return m_value;
- }
- bool equal(const u8_to_u32_iterator& that)const
- {
- return m_position == that.m_position;
- }
- void increment()
- {
- // We must not start with a continuation character:
- if((static_cast<cutl_details_boost::uint8_t>(*m_position) & 0xC0) == 0x80)
- invalid_sequence();
- // skip high surrogate first if there is one:
- unsigned c = detail::utf8_byte_count(*m_position);
- if(m_value == pending_read)
- {
- // Since we haven't read in a value, we need to validate the code points:
- for(unsigned i = 0; i < c; ++i)
- {
- ++m_position;
- // We must have a continuation byte:
- if((i != c - 1) && ((static_cast<cutl_details_boost::uint8_t>(*m_position) & 0xC0) != 0x80))
- invalid_sequence();
- }
- }
- else
- {
- std::advance(m_position, c);
- }
- m_value = pending_read;
- }
- void decrement()
- {
- // Keep backtracking until we don't have a trailing character:
- unsigned count = 0;
- while((*--m_position & 0xC0u) == 0x80u) ++count;
- // now check that the sequence was valid:
- if(count != detail::utf8_trailing_byte_count(*m_position))
- invalid_sequence();
- m_value = pending_read;
- }
- BaseIterator base()const
- {
- return m_position;
- }
- // construct:
- u8_to_u32_iterator() : m_position()
- {
- m_value = pending_read;
- }
- u8_to_u32_iterator(BaseIterator b) : m_position(b)
- {
- m_value = pending_read;
- }
- //
- // Checked constructor:
- //
- u8_to_u32_iterator(BaseIterator b, BaseIterator start, BaseIterator end) : m_position(b)
- {
- m_value = pending_read;
- //
- // We must not start with a continuation character, or end with a
- // truncated UTF-8 sequence otherwise we run the risk of going past
- // the start/end of the underlying sequence:
- //
- if(start != end)
- {
- unsigned char v = *start;
- if((v & 0xC0u) == 0x80u)
- invalid_sequence();
- if((b != start) && (b != end) && ((*b & 0xC0u) == 0x80u))
- invalid_sequence();
- BaseIterator pos = end;
- do
- {
- v = *--pos;
- }
- while((start != pos) && ((v & 0xC0u) == 0x80u));
- std::ptrdiff_t extra = detail::utf8_byte_count(v);
- if(std::distance(pos, end) < extra)
- invalid_sequence();
- }
- }
-private:
- static void invalid_sequence()
- {
- std::out_of_range e("Invalid UTF-8 sequence encountered while trying to encode UTF-32 character");
- cutl_details_boost::throw_exception(e);
- }
- void extract_current()const
- {
- m_value = static_cast<U32Type>(static_cast< ::cutl_details_boost::uint8_t>(*m_position));
- // we must not have a continuation character:
- if((m_value & 0xC0u) == 0x80u)
- invalid_sequence();
- // see how many extra bytes we have:
- unsigned extra = detail::utf8_trailing_byte_count(*m_position);
- // extract the extra bits, 6 from each extra byte:
- BaseIterator next(m_position);
- for(unsigned c = 0; c < extra; ++c)
- {
- ++next;
- m_value <<= 6;
- // We must have a continuation byte:
- if((static_cast<cutl_details_boost::uint8_t>(*next) & 0xC0) != 0x80)
- invalid_sequence();
- m_value += static_cast<cutl_details_boost::uint8_t>(*next) & 0x3Fu;
- }
- // we now need to remove a few of the leftmost bits, but how many depends
- // upon how many extra bytes we've extracted:
- static const cutl_details_boost::uint32_t masks[4] =
- {
- 0x7Fu,
- 0x7FFu,
- 0xFFFFu,
- 0x1FFFFFu,
- };
- m_value &= masks[extra];
- // check the result:
- if(m_value > static_cast<U32Type>(0x10FFFFu))
- invalid_sequence();
- }
- BaseIterator m_position;
- mutable U32Type m_value;
-};
-
-template <class BaseIterator>
-class utf16_output_iterator
-{
-public:
- typedef void difference_type;
- typedef void value_type;
- typedef cutl_details_boost::uint32_t* pointer;
- typedef cutl_details_boost::uint32_t& reference;
- typedef std::output_iterator_tag iterator_category;
-
- utf16_output_iterator(const BaseIterator& b)
- : m_position(b){}
- utf16_output_iterator(const utf16_output_iterator& that)
- : m_position(that.m_position){}
- utf16_output_iterator& operator=(const utf16_output_iterator& that)
- {
- m_position = that.m_position;
- return *this;
- }
- const utf16_output_iterator& operator*()const
- {
- return *this;
- }
- void operator=(cutl_details_boost::uint32_t val)const
- {
- push(val);
- }
- utf16_output_iterator& operator++()
- {
- return *this;
- }
- utf16_output_iterator& operator++(int)
- {
- return *this;
- }
- BaseIterator base()const
- {
- return m_position;
- }
-private:
- void push(cutl_details_boost::uint32_t v)const
- {
- if(v >= 0x10000u)
- {
- // begin by checking for a code point out of range:
- if(v > 0x10FFFFu)
- detail::invalid_utf32_code_point(v);
- // split into two surrogates:
- *m_position++ = static_cast<cutl_details_boost::uint16_t>(v >> 10) + detail::high_surrogate_base;
- *m_position++ = static_cast<cutl_details_boost::uint16_t>(v & detail::ten_bit_mask) + detail::low_surrogate_base;
- }
- else
- {
- // 16-bit code point:
- // value must not be a surrogate:
- if(detail::is_surrogate(v))
- detail::invalid_utf32_code_point(v);
- *m_position++ = static_cast<cutl_details_boost::uint16_t>(v);
- }
- }
- mutable BaseIterator m_position;
-};
-
-template <class BaseIterator>
-class utf8_output_iterator
-{
-public:
- typedef void difference_type;
- typedef void value_type;
- typedef cutl_details_boost::uint32_t* pointer;
- typedef cutl_details_boost::uint32_t& reference;
- typedef std::output_iterator_tag iterator_category;
-
- utf8_output_iterator(const BaseIterator& b)
- : m_position(b){}
- utf8_output_iterator(const utf8_output_iterator& that)
- : m_position(that.m_position){}
- utf8_output_iterator& operator=(const utf8_output_iterator& that)
- {
- m_position = that.m_position;
- return *this;
- }
- const utf8_output_iterator& operator*()const
- {
- return *this;
- }
- void operator=(cutl_details_boost::uint32_t val)const
- {
- push(val);
- }
- utf8_output_iterator& operator++()
- {
- return *this;
- }
- utf8_output_iterator& operator++(int)
- {
- return *this;
- }
- BaseIterator base()const
- {
- return m_position;
- }
-private:
- void push(cutl_details_boost::uint32_t c)const
- {
- if(c > 0x10FFFFu)
- detail::invalid_utf32_code_point(c);
- if(c < 0x80u)
- {
- *m_position++ = static_cast<unsigned char>(c);
- }
- else if(c < 0x800u)
- {
- *m_position++ = static_cast<unsigned char>(0xC0u + (c >> 6));
- *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
- }
- else if(c < 0x10000u)
- {
- *m_position++ = static_cast<unsigned char>(0xE0u + (c >> 12));
- *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
- *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
- }
- else
- {
- *m_position++ = static_cast<unsigned char>(0xF0u + (c >> 18));
- *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 12) & 0x3Fu));
- *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
- *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
- }
- }
- mutable BaseIterator m_position;
-};
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_UNICODE_ITERATOR_HPP
-
diff --git a/libcutl/cutl/details/boost/regex/regex_traits.hpp b/libcutl/cutl/details/boost/regex/regex_traits.hpp
deleted file mode 100644
index df0769b..0000000
--- a/libcutl/cutl/details/boost/regex/regex_traits.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_traits.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares regular expression traits classes.
- */
-
-#ifndef BOOST_REGEX_TRAITS_HPP
-#define BOOST_REGEX_TRAITS_HPP
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-# include <cutl/details/boost/regex/config.hpp>
-#endif
-
-# ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED
-# include <cutl/details/boost/regex/v4/regex_traits.hpp>
-# endif
-
-#endif // include
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/src/c_regex_traits.cxx b/libcutl/cutl/details/boost/regex/src/c_regex_traits.cxx
deleted file mode 100644
index 126e95c..0000000
--- a/libcutl/cutl/details/boost/regex/src/c_regex_traits.cxx
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: c_regex_traits.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Implements out of line c_regex_traits<char> members
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-#include "internals.hpp"
-
-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
-
-#include <cutl/details/boost/regex/v4/c_regex_traits.hpp>
-#include <cutl/details/boost/regex/v4/primary_transform.hpp>
-#include <cutl/details/boost/regex/v4/regex_traits_defaults.hpp>
-
-#ifdef BOOST_NO_STDC_NAMESPACE
-namespace std{
- using ::strxfrm; using ::isspace;
- using ::ispunct; using ::isalpha;
- using ::isalnum; using ::iscntrl;
- using ::isprint; using ::isupper;
- using ::islower; using ::isdigit;
- using ::isxdigit; using ::strtol;
-}
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace cutl_details_boost{
-
-c_regex_traits<char>::string_type BOOST_REGEX_CALL c_regex_traits<char>::transform(const char* p1, const char* p2)
-{
- std::string result(10, ' ');
- std::size_t s = result.size();
- std::size_t r;
- std::string src(p1, p2);
- while(s < (r = std::strxfrm(&*result.begin(), src.c_str(), s)))
- {
- result.append(r - s + 3, ' ');
- s = result.size();
- }
- result.erase(r);
- return result;
-}
-
-c_regex_traits<char>::string_type BOOST_REGEX_CALL c_regex_traits<char>::transform_primary(const char* p1, const char* p2)
-{
- static char s_delim;
- static const int s_collate_type = ::cutl_details_boost::re_detail::find_sort_syntax(static_cast<c_regex_traits<char>*>(0), &s_delim);
- std::string result;
- //
- // What we do here depends upon the format of the sort key returned by
- // sort key returned by this->transform:
- //
- switch(s_collate_type)
- {
- case ::cutl_details_boost::re_detail::sort_C:
- case ::cutl_details_boost::re_detail::sort_unknown:
- // the best we can do is translate to lower case, then get a regular sort key:
- {
- result.assign(p1, p2);
- for(std::string::size_type i = 0; i < result.size(); ++i)
- result[i] = static_cast<char>((std::tolower)(static_cast<unsigned char>(result[i])));
- result = transform(&*result.begin(), &*result.begin() + result.size());
- break;
- }
- case ::cutl_details_boost::re_detail::sort_fixed:
- {
- // get a regular sort key, and then truncate it:
- result = transform(p1, p2);
- result.erase(s_delim);
- break;
- }
- case ::cutl_details_boost::re_detail::sort_delim:
- // get a regular sort key, and then truncate everything after the delim:
- result = transform(p1, p2);
- if(result.size() && (result[0] == s_delim))
- break;
- std::size_t i;
- for(i = 0; i < result.size(); ++i)
- {
- if(result[i] == s_delim)
- break;
- }
- result.erase(i);
- break;
- }
- if(result.empty())
- result = std::string(1, char(0));
- return result;
-}
-
-c_regex_traits<char>::char_class_type BOOST_REGEX_CALL c_regex_traits<char>::lookup_classname(const char* p1, const char* p2)
-{
- static const char_class_type masks[] =
- {
- 0,
- char_class_alnum,
- char_class_alpha,
- char_class_blank,
- char_class_cntrl,
- char_class_digit,
- char_class_digit,
- char_class_graph,
- char_class_horizontal,
- char_class_lower,
- char_class_lower,
- char_class_print,
- char_class_punct,
- char_class_space,
- char_class_space,
- char_class_upper,
- char_class_unicode,
- char_class_upper,
- char_class_vertical,
- char_class_alnum | char_class_word,
- char_class_alnum | char_class_word,
- char_class_xdigit,
- };
-
- int idx = ::cutl_details_boost::re_detail::get_default_class_id(p1, p2);
- if(idx < 0)
- {
- std::string s(p1, p2);
- for(std::string::size_type i = 0; i < s.size(); ++i)
- s[i] = static_cast<char>((std::tolower)(static_cast<unsigned char>(s[i])));
- idx = ::cutl_details_boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
- }
- BOOST_ASSERT(std::size_t(idx+1) < sizeof(masks) / sizeof(masks[0]));
- return masks[idx+1];
-}
-
-bool BOOST_REGEX_CALL c_regex_traits<char>::isctype(char c, char_class_type mask)
-{
- return
- ((mask & char_class_space) && (std::isspace)(static_cast<unsigned char>(c)))
- || ((mask & char_class_print) && (std::isprint)(static_cast<unsigned char>(c)))
- || ((mask & char_class_cntrl) && (std::iscntrl)(static_cast<unsigned char>(c)))
- || ((mask & char_class_upper) && (std::isupper)(static_cast<unsigned char>(c)))
- || ((mask & char_class_lower) && (std::islower)(static_cast<unsigned char>(c)))
- || ((mask & char_class_alpha) && (std::isalpha)(static_cast<unsigned char>(c)))
- || ((mask & char_class_digit) && (std::isdigit)(static_cast<unsigned char>(c)))
- || ((mask & char_class_punct) && (std::ispunct)(static_cast<unsigned char>(c)))
- || ((mask & char_class_xdigit) && (std::isxdigit)(static_cast<unsigned char>(c)))
- || ((mask & char_class_blank) && (std::isspace)(static_cast<unsigned char>(c)) && !::cutl_details_boost::re_detail::is_separator(c))
- || ((mask & char_class_word) && (c == '_'))
- || ((mask & char_class_vertical) && (::cutl_details_boost::re_detail::is_separator(c) || (c == '\v')))
- || ((mask & char_class_horizontal) && (std::isspace)(static_cast<unsigned char>(c)) && !::cutl_details_boost::re_detail::is_separator(c) && (c != '\v'));
-}
-
-c_regex_traits<char>::string_type BOOST_REGEX_CALL c_regex_traits<char>::lookup_collatename(const char* p1, const char* p2)
-{
- std::string s(p1, p2);
- s = ::cutl_details_boost::re_detail::lookup_default_collate_name(s);
- if(s.empty() && (p2-p1 == 1))
- s.append(1, *p1);
- return s;
-}
-
-int BOOST_REGEX_CALL c_regex_traits<char>::value(char c, int radix)
-{
- char b[2] = { c, '\0', };
- char* ep;
- int result = std::strtol(b, &ep, radix);
- if(ep == b)
- return -1;
- return result;
-}
-
-}
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex/src/cpp_regex_traits.cxx b/libcutl/cutl/details/boost/regex/src/cpp_regex_traits.cxx
deleted file mode 100644
index 7124191..0000000
--- a/libcutl/cutl/details/boost/regex/src/cpp_regex_traits.cxx
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE cpp_regex_traits.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Implements cpp_regex_traits<char> (and associated helper classes).
- */
-
-#define BOOST_REGEX_SOURCE
-#include <cutl/details/boost/config.hpp>
-#ifndef BOOST_NO_STD_LOCALE
-#include <cutl/details/boost/regex/regex_traits.hpp>
-#include <cutl/details/boost/regex/pattern_except.hpp>
-
-#ifdef BOOST_NO_STDC_NAMESPACE
-namespace std{
- using ::memset;
-}
-#endif
-
-namespace cutl_details_boost{ namespace re_detail{
-
-void cpp_regex_traits_char_layer<char>::init()
-{
- // we need to start by initialising our syntax map so we know which
- // character is used for which purpose:
- std::memset(m_char_map, 0, sizeof(m_char_map));
-#ifndef BOOST_NO_STD_MESSAGES
-#ifndef __IBMCPP__
- std::messages<char>::catalog cat = static_cast<std::messages<char>::catalog>(-1);
-#else
- std::messages<char>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1);
-#endif
- std::string cat_name(cpp_regex_traits<char>::get_catalog_name());
- if(cat_name.size() && (m_pmessages != 0))
- {
- cat = this->m_pmessages->open(
- cat_name,
- this->m_locale);
- if((int)cat < 0)
- {
- std::string m("Unable to open message catalog: ");
- std::runtime_error err(m + cat_name);
- cutl_details_boost::re_detail::raise_runtime_error(err);
- }
- }
- //
- // if we have a valid catalog then load our messages:
- //
- if((int)cat >= 0)
- {
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
- {
- string_type mss = this->m_pmessages->get(cat, 0, i, get_default_syntax(i));
- for(string_type::size_type j = 0; j < mss.size(); ++j)
- {
- m_char_map[static_cast<unsigned char>(mss[j])] = i;
- }
- }
- this->m_pmessages->close(cat);
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- this->m_pmessages->close(cat);
- throw;
- }
-#endif
- }
- else
- {
-#endif
- for(regex_constants::syntax_type j = 1; j < regex_constants::syntax_max; ++j)
- {
- const char* ptr = get_default_syntax(j);
- while(ptr && *ptr)
- {
- m_char_map[static_cast<unsigned char>(*ptr)] = j;
- ++ptr;
- }
- }
-#ifndef BOOST_NO_STD_MESSAGES
- }
-#endif
- //
- // finish off by calculating our escape types:
- //
- unsigned char i = 'A';
- do
- {
- if(m_char_map[i] == 0)
- {
- if(this->m_pctype->is(std::ctype_base::lower, i))
- m_char_map[i] = regex_constants::escape_type_class;
- else if(this->m_pctype->is(std::ctype_base::upper, i))
- m_char_map[i] = regex_constants::escape_type_not_class;
- }
- }while(0xFF != i++);
-}
-
-} // re_detail
-} // boost
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/src/cregex.cxx b/libcutl/cutl/details/boost/regex/src/cregex.cxx
deleted file mode 100644
index c64f993..0000000
--- a/libcutl/cutl/details/boost/regex/src/cregex.cxx
+++ /dev/null
@@ -1,660 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: cregex.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Implements high level class cutl_details_boost::RexEx
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/regex.hpp>
-#include <cutl/details/boost/cregex.hpp>
-#if !defined(BOOST_NO_STD_STRING)
-#include <map>
-#include <list>
-#include <cutl/details/boost/regex/v4/fileiter.hpp>
-typedef cutl_details_boost::match_flag_type match_flag_type;
-#include <cstdio>
-
-#ifdef BOOST_MSVC
-#pragma warning(disable:4309)
-#endif
-#ifdef BOOST_INTEL
-#pragma warning(disable:981 383)
-#endif
-
-namespace cutl_details_boost{
-
-#ifdef __BORLANDC__
-#if __BORLANDC__ < 0x530
-//
-// we need to instantiate the vector classes we use
-// since declaring a reference to type doesn't seem to
-// do the job...
-std::vector<std::size_t> inst1;
-std::vector<std::string> inst2;
-#endif
-#endif
-
-namespace{
-
-template <class iterator>
-std::string to_string(iterator i, iterator j)
-{
- std::string s;
- while(i != j)
- {
- s.append(1, *i);
- ++i;
- }
- return s;
-}
-
-inline std::string to_string(const char* i, const char* j)
-{
- return std::string(i, j);
-}
-
-}
-namespace re_detail{
-
-class RegExData
-{
-public:
- enum type
- {
- type_pc,
- type_pf,
- type_copy
- };
- regex e;
- cmatch m;
-#ifndef BOOST_REGEX_NO_FILEITER
- match_results<mapfile::iterator> fm;
-#endif
- type t;
- const char* pbase;
-#ifndef BOOST_REGEX_NO_FILEITER
- mapfile::iterator fbase;
-#endif
- std::map<int, std::string, std::less<int> > strings;
- std::map<int, std::ptrdiff_t, std::less<int> > positions;
- void update();
- void clean();
- RegExData() : e(), m(),
-#ifndef BOOST_REGEX_NO_FILEITER
- fm(),
-#endif
- t(type_copy), pbase(0),
-#ifndef BOOST_REGEX_NO_FILEITER
- fbase(),
-#endif
- strings(), positions() {}
-};
-
-void RegExData::update()
-{
- strings.erase(strings.begin(), strings.end());
- positions.erase(positions.begin(), positions.end());
- if(t == type_pc)
- {
- for(unsigned int i = 0; i < m.size(); ++i)
- {
- if(m[i].matched) strings[i] = std::string(m[i].first, m[i].second);
- positions[i] = m[i].matched ? m[i].first - pbase : -1;
- }
- }
-#ifndef BOOST_REGEX_NO_FILEITER
- else
- {
- for(unsigned int i = 0; i < fm.size(); ++i)
- {
- if(fm[i].matched) strings[i] = to_string(fm[i].first, fm[i].second);
- positions[i] = fm[i].matched ? fm[i].first - fbase : -1;
- }
- }
-#endif
- t = type_copy;
-}
-
-void RegExData::clean()
-{
-#ifndef BOOST_REGEX_NO_FILEITER
- fbase = mapfile::iterator();
- fm = match_results<mapfile::iterator>();
-#endif
-}
-
-} // namespace
-
-RegEx::RegEx()
-{
- pdata = new re_detail::RegExData();
-}
-
-RegEx::RegEx(const RegEx& o)
-{
- pdata = new re_detail::RegExData(*(o.pdata));
-}
-
-RegEx::~RegEx()
-{
- delete pdata;
-}
-
-RegEx::RegEx(const char* c, bool icase)
-{
- pdata = new re_detail::RegExData();
- SetExpression(c, icase);
-}
-
-RegEx::RegEx(const std::string& s, bool icase)
-{
- pdata = new re_detail::RegExData();
- SetExpression(s.c_str(), icase);
-}
-
-RegEx& RegEx::operator=(const RegEx& o)
-{
- *pdata = *(o.pdata);
- return *this;
-}
-
-RegEx& RegEx::operator=(const char* p)
-{
- SetExpression(p, false);
- return *this;
-}
-
-unsigned int RegEx::SetExpression(const char* p, bool icase)
-{
- cutl_details_boost::uint_fast32_t f = icase ? regex::normal | regex::icase : regex::normal;
- return pdata->e.set_expression(p, f);
-}
-
-unsigned int RegEx::error_code()const
-{
- return pdata->e.error_code();
-}
-
-
-std::string RegEx::Expression()const
-{
- return pdata->e.expression();
-}
-
-//
-// now matching operators:
-//
-bool RegEx::Match(const char* p, match_flag_type flags)
-{
- pdata->t = re_detail::RegExData::type_pc;
- pdata->pbase = p;
- const char* end = p;
- while(*end)++end;
-
- if(regex_match(p, end, pdata->m, pdata->e, flags))
- {
- pdata->update();
- return true;
- }
- return false;
-}
-
-bool RegEx::Search(const char* p, match_flag_type flags)
-{
- pdata->t = re_detail::RegExData::type_pc;
- pdata->pbase = p;
- const char* end = p;
- while(*end)++end;
-
- if(regex_search(p, end, pdata->m, pdata->e, flags))
- {
- pdata->update();
- return true;
- }
- return false;
-}
-namespace re_detail{
-struct pred1
-{
- GrepCallback cb;
- RegEx* pe;
- pred1(GrepCallback c, RegEx* i) : cb(c), pe(i) {}
- bool operator()(const cmatch& m)
- {
- pe->pdata->m = m;
- return cb(*pe);
- }
-};
-}
-unsigned int RegEx::Grep(GrepCallback cb, const char* p, match_flag_type flags)
-{
- pdata->t = re_detail::RegExData::type_pc;
- pdata->pbase = p;
- const char* end = p;
- while(*end)++end;
-
- unsigned int result = regex_grep(re_detail::pred1(cb, this), p, end, pdata->e, flags);
- if(result)
- pdata->update();
- return result;
-}
-namespace re_detail{
-struct pred2
-{
- std::vector<std::string>& v;
- RegEx* pe;
- pred2(std::vector<std::string>& o, RegEx* e) : v(o), pe(e) {}
- bool operator()(const cmatch& m)
- {
- pe->pdata->m = m;
- v.push_back(std::string(m[0].first, m[0].second));
- return true;
- }
-private:
- pred2& operator=(const pred2&);
-};
-}
-
-unsigned int RegEx::Grep(std::vector<std::string>& v, const char* p, match_flag_type flags)
-{
- pdata->t = re_detail::RegExData::type_pc;
- pdata->pbase = p;
- const char* end = p;
- while(*end)++end;
-
- unsigned int result = regex_grep(re_detail::pred2(v, this), p, end, pdata->e, flags);
- if(result)
- pdata->update();
- return result;
-}
-namespace re_detail{
-struct pred3
-{
- std::vector<std::size_t>& v;
- const char* base;
- RegEx* pe;
- pred3(std::vector<std::size_t>& o, const char* pb, RegEx* p) : v(o), base(pb), pe(p) {}
- bool operator()(const cmatch& m)
- {
- pe->pdata->m = m;
- v.push_back(static_cast<std::size_t>(m[0].first - base));
- return true;
- }
-private:
- pred3& operator=(const pred3&);
-};
-}
-unsigned int RegEx::Grep(std::vector<std::size_t>& v, const char* p, match_flag_type flags)
-{
- pdata->t = re_detail::RegExData::type_pc;
- pdata->pbase = p;
- const char* end = p;
- while(*end)++end;
-
- unsigned int result = regex_grep(re_detail::pred3(v, p, this), p, end, pdata->e, flags);
- if(result)
- pdata->update();
- return result;
-}
-#ifndef BOOST_REGEX_NO_FILEITER
-namespace re_detail{
-struct pred4
-{
- GrepFileCallback cb;
- RegEx* pe;
- const char* file;
- bool ok;
- pred4(GrepFileCallback c, RegEx* i, const char* f) : cb(c), pe(i), file(f), ok(true) {}
- bool operator()(const match_results<mapfile::iterator>& m)
- {
- pe->pdata->t = RegExData::type_pf;
- pe->pdata->fm = m;
- pe->pdata->update();
- ok = cb(file, *pe);
- return ok;
- }
-};
-}
-namespace{
-void BuildFileList(std::list<std::string>* pl, const char* files, bool recurse)
-{
- file_iterator start(files);
- file_iterator end;
- if(recurse)
- {
- // go through sub directories:
- char buf[MAX_PATH];
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(buf, MAX_PATH, start.root()));
- if(*buf == 0)
- {
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(buf, MAX_PATH, "."));
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, directory_iterator::separator()));
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, "*"));
- }
- else
- {
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, directory_iterator::separator()));
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, "*"));
- }
- directory_iterator dstart(buf);
- directory_iterator dend;
-
- // now get the file mask bit of "files":
- const char* ptr = files;
- while(*ptr) ++ptr;
- while((ptr != files) && (*ptr != *directory_iterator::separator()) && (*ptr != '/'))--ptr;
- if(ptr != files) ++ptr;
-
- while(dstart != dend)
- {
- // Verify that sprintf will not overflow:
- if(std::strlen(dstart.path()) + std::strlen(directory_iterator::separator()) + std::strlen(ptr) >= MAX_PATH)
- {
- // Oops overflow, skip this item:
- ++dstart;
- continue;
- }
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- int r = (::sprintf_s)(buf, sizeof(buf), "%s%s%s", dstart.path(), directory_iterator::separator(), ptr);
-#else
- int r = (std::sprintf)(buf, "%s%s%s", dstart.path(), directory_iterator::separator(), ptr);
-#endif
- if(r < 0)
- {
- // sprintf failed, skip this item:
- ++dstart;
- continue;
- }
- BuildFileList(pl, buf, recurse);
- ++dstart;
- }
- }
- while(start != end)
- {
- pl->push_back(*start);
- ++start;
- }
-}
-}
-
-unsigned int RegEx::GrepFiles(GrepFileCallback cb, const char* files, bool recurse, match_flag_type flags)
-{
- unsigned int result = 0;
- std::list<std::string> file_list;
- BuildFileList(&file_list, files, recurse);
- std::list<std::string>::iterator start, end;
- start = file_list.begin();
- end = file_list.end();
-
- while(start != end)
- {
- mapfile map((*start).c_str());
- pdata->t = re_detail::RegExData::type_pf;
- pdata->fbase = map.begin();
- re_detail::pred4 pred(cb, this, (*start).c_str());
- int r = regex_grep(pred, map.begin(), map.end(), pdata->e, flags);
- result += r;
- ++start;
- pdata->clean();
- if(pred.ok == false)
- return result;
- }
-
- return result;
-}
-
-
-unsigned int RegEx::FindFiles(FindFilesCallback cb, const char* files, bool recurse, match_flag_type flags)
-{
- unsigned int result = 0;
- std::list<std::string> file_list;
- BuildFileList(&file_list, files, recurse);
- std::list<std::string>::iterator start, end;
- start = file_list.begin();
- end = file_list.end();
-
- while(start != end)
- {
- mapfile map((*start).c_str());
- pdata->t = re_detail::RegExData::type_pf;
- pdata->fbase = map.begin();
-
- if(regex_search(map.begin(), map.end(), pdata->fm, pdata->e, flags))
- {
- ++result;
- if(false == cb((*start).c_str()))
- return result;
- }
- //pdata->update();
- ++start;
- //pdata->clean();
- }
-
- return result;
-}
-#endif
-
-#ifdef BOOST_REGEX_V3
-#define regex_replace regex_merge
-#endif
-
-std::string RegEx::Merge(const std::string& in, const std::string& fmt,
- bool copy, match_flag_type flags)
-{
- std::string result;
- re_detail::string_out_iterator<std::string> i(result);
- if(!copy) flags |= format_no_copy;
- regex_replace(i, in.begin(), in.end(), pdata->e, fmt.c_str(), flags);
- return result;
-}
-
-std::string RegEx::Merge(const char* in, const char* fmt,
- bool copy, match_flag_type flags)
-{
- std::string result;
- if(!copy) flags |= format_no_copy;
- re_detail::string_out_iterator<std::string> i(result);
- regex_replace(i, in, in + std::strlen(in), pdata->e, fmt, flags);
- return result;
-}
-
-std::size_t RegEx::Split(std::vector<std::string>& v,
- std::string& s,
- match_flag_type flags,
- unsigned max_count)
-{
- return regex_split(std::back_inserter(v), s, pdata->e, flags, max_count);
-}
-
-
-
-//
-// now operators for returning what matched in more detail:
-//
-std::size_t RegEx::Position(int i)const
-{
- switch(pdata->t)
- {
- case re_detail::RegExData::type_pc:
- return pdata->m[i].matched ? pdata->m[i].first - pdata->pbase : RegEx::npos;
-#ifndef BOOST_REGEX_NO_FILEITER
- case re_detail::RegExData::type_pf:
- return pdata->fm[i].matched ? pdata->fm[i].first - pdata->fbase : RegEx::npos;
-#endif
- case re_detail::RegExData::type_copy:
- {
- std::map<int, std::ptrdiff_t, std::less<int> >::iterator pos = pdata->positions.find(i);
- if(pos == pdata->positions.end())
- return RegEx::npos;
- return (*pos).second;
- }
- }
- return RegEx::npos;
-}
-
-std::size_t RegEx::Marks()const
-{
- return pdata->e.mark_count();
-}
-
-
-std::size_t RegEx::Length(int i)const
-{
- switch(pdata->t)
- {
- case re_detail::RegExData::type_pc:
- return pdata->m[i].matched ? pdata->m[i].second - pdata->m[i].first : RegEx::npos;
-#ifndef BOOST_REGEX_NO_FILEITER
- case re_detail::RegExData::type_pf:
- return pdata->fm[i].matched ? pdata->fm[i].second - pdata->fm[i].first : RegEx::npos;
-#endif
- case re_detail::RegExData::type_copy:
- {
- std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
- if(pos == pdata->strings.end())
- return RegEx::npos;
- return (*pos).second.size();
- }
- }
- return RegEx::npos;
-}
-
-bool RegEx::Matched(int i)const
-{
- switch(pdata->t)
- {
- case re_detail::RegExData::type_pc:
- return pdata->m[i].matched;
-#ifndef BOOST_REGEX_NO_FILEITER
- case re_detail::RegExData::type_pf:
- return pdata->fm[i].matched;
-#endif
- case re_detail::RegExData::type_copy:
- {
- std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
- if(pos == pdata->strings.end())
- return false;
- return true;
- }
- }
- return false;
-}
-
-
-std::string RegEx::What(int i)const
-{
- std::string result;
- switch(pdata->t)
- {
- case re_detail::RegExData::type_pc:
- if(pdata->m[i].matched)
- result.assign(pdata->m[i].first, pdata->m[i].second);
- break;
- case re_detail::RegExData::type_pf:
- if(pdata->m[i].matched)
- result.assign(to_string(pdata->m[i].first, pdata->m[i].second));
- break;
- case re_detail::RegExData::type_copy:
- {
- std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
- if(pos != pdata->strings.end())
- result = (*pos).second;
- break;
- }
- }
- return result;
-}
-
-const std::size_t RegEx::npos = ~static_cast<std::size_t>(0);
-
-} // namespace cutl_details_boost
-
-#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x550) && (__BORLANDC__ <= 0x551) && !defined(_RWSTD_COMPILE_INSTANTIATE)
-//
-// this is an ugly hack to work around an ugly problem:
-// by default this file will produce unresolved externals during
-// linking unless _RWSTD_COMPILE_INSTANTIATE is defined (Borland bug).
-// However if _RWSTD_COMPILE_INSTANTIATE is defined then we get separate
-// copies of basic_string's static data in the RTL and this DLL, this messes
-// with basic_string's memory management and results in run-time crashes,
-// Oh sweet joy of Catch 22....
-//
-namespace std{
-template<> template<>
-basic_string<char>& BOOST_REGEX_DECL
-basic_string<char>::replace<const char*>(char* f1, char* f2, const char* i1, const char* i2)
-{
- unsigned insert_pos = f1 - begin();
- unsigned remove_len = f2 - f1;
- unsigned insert_len = i2 - i1;
- unsigned org_size = size();
- if(insert_len > remove_len)
- {
- append(insert_len-remove_len, ' ');
- std::copy_backward(begin() + insert_pos + remove_len, begin() + org_size, end());
- std::copy(i1, i2, begin() + insert_pos);
- }
- else
- {
- std::copy(begin() + insert_pos + remove_len, begin() + org_size, begin() + insert_pos + insert_len);
- std::copy(i1, i2, begin() + insert_pos);
- erase(size() + insert_len - remove_len);
- }
- return *this;
-}
-template<> template<>
-basic_string<wchar_t>& BOOST_REGEX_DECL
-basic_string<wchar_t>::replace<const wchar_t*>(wchar_t* f1, wchar_t* f2, const wchar_t* i1, const wchar_t* i2)
-{
- unsigned insert_pos = f1 - begin();
- unsigned remove_len = f2 - f1;
- unsigned insert_len = i2 - i1;
- unsigned org_size = size();
- if(insert_len > remove_len)
- {
- append(insert_len-remove_len, ' ');
- std::copy_backward(begin() + insert_pos + remove_len, begin() + org_size, end());
- std::copy(i1, i2, begin() + insert_pos);
- }
- else
- {
- std::copy(begin() + insert_pos + remove_len, begin() + org_size, begin() + insert_pos + insert_len);
- std::copy(i1, i2, begin() + insert_pos);
- erase(size() + insert_len - remove_len);
- }
- return *this;
-}
-} // namespace std
-#endif
-
-#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/src/fileiter.cxx b/libcutl/cutl/details/boost/regex/src/fileiter.cxx
deleted file mode 100644
index 9a99222..0000000
--- a/libcutl/cutl/details/boost/regex/src/fileiter.cxx
+++ /dev/null
@@ -1,927 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: fileiter.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Implements file io primitives + directory searching for class cutl_details_boost::RegEx.
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/config.hpp>
-#include <climits>
-#include <stdexcept>
-#include <string>
-#include <cutl/details/boost/throw_exception.hpp>
-#include <cutl/details/boost/regex/v4/fileiter.hpp>
-#include <cutl/details/boost/regex/v4/regex_workaround.hpp>
-#include <cutl/details/boost/regex/pattern_except.hpp>
-
-#include <cstdio>
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::sprintf;
- using ::fseek;
- using ::fread;
- using ::ftell;
- using ::fopen;
- using ::fclose;
- using ::FILE;
- using ::strcpy;
- using ::strcpy;
- using ::strcat;
- using ::strcmp;
- using ::strlen;
-}
-#endif
-
-
-#ifndef BOOST_REGEX_NO_FILEITER
-
-#if defined(__CYGWIN__) || defined(__CYGWIN32__)
-#include <sys/cygwin.h>
-#endif
-
-#ifdef BOOST_MSVC
-# pragma warning(disable: 4800)
-#endif
-
-namespace cutl_details_boost{
- namespace re_detail{
-// start with the operating system specific stuff:
-
-#if (defined(__BORLANDC__) || defined(BOOST_REGEX_FI_WIN32_DIR) || defined(BOOST_MSVC)) && !defined(BOOST_RE_NO_WIN32)
-
-// platform is DOS or Windows
-// directories are separated with '\\'
-// and names are insensitive of case
-
-BOOST_REGEX_DECL const char* _fi_sep = "\\";
-const char* _fi_sep_alt = "/";
-#define BOOST_REGEX_FI_TRANSLATE(c) std::tolower(c)
-
-#else
-
-// platform is not DOS or Windows
-// directories are separated with '/'
-// and names are sensitive of case
-
-BOOST_REGEX_DECL const char* _fi_sep = "/";
-const char* _fi_sep_alt = _fi_sep;
-#define BOOST_REGEX_FI_TRANSLATE(c) c
-
-#endif
-
-#ifdef BOOST_REGEX_FI_WIN32_MAP
-
-void mapfile::open(const char* file)
-{
-#if defined(BOOST_NO_ANSI_APIS)
- int filename_size = strlen(file);
- LPWSTR wide_file = (LPWSTR)_alloca( (filename_size + 1) * sizeof(WCHAR) );
- if(::MultiByteToWideChar(CP_ACP, 0, file, filename_size, wide_file, filename_size + 1) == 0)
- hfile = INVALID_HANDLE_VALUE;
- else
- hfile = CreateFileW(wide_file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
-#elif defined(__CYGWIN__)||defined(__CYGWIN32__)
- char win32file[ MAX_PATH ];
- cygwin_conv_to_win32_path( file, win32file );
- hfile = CreateFileA(win32file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
-#else
- hfile = CreateFileA(file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
-#endif
- if(hfile != INVALID_HANDLE_VALUE)
- {
- hmap = CreateFileMapping(hfile, 0, PAGE_READONLY, 0, 0, 0);
- if((hmap == INVALID_HANDLE_VALUE) || (hmap == NULL))
- {
- CloseHandle(hfile);
- hmap = 0;
- hfile = 0;
- std::runtime_error err("Unable to create file mapping.");
- cutl_details_boost::re_detail::raise_runtime_error(err);
- }
- _first = static_cast<const char*>(MapViewOfFile(hmap, FILE_MAP_READ, 0, 0, 0));
- if(_first == 0)
- {
- CloseHandle(hmap);
- CloseHandle(hfile);
- hmap = 0;
- hfile = 0;
- std::runtime_error err("Unable to create file mapping.");
- }
- _last = _first + GetFileSize(hfile, 0);
- }
- else
- {
- hfile = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- throw std::runtime_error("Unable to open file.");
-#else
- BOOST_REGEX_NOEH_ASSERT(hfile != INVALID_HANDLE_VALUE);
-#endif
- }
-}
-
-void mapfile::close()
-{
- if(hfile != INVALID_HANDLE_VALUE)
- {
- UnmapViewOfFile((void*)_first);
- CloseHandle(hmap);
- CloseHandle(hfile);
- hmap = hfile = 0;
- _first = _last = 0;
- }
-}
-
-#elif !defined(BOOST_RE_NO_STL)
-
-mapfile_iterator& mapfile_iterator::operator = (const mapfile_iterator& i)
-{
- if(file && node)
- file->unlock(node);
- file = i.file;
- node = i.node;
- offset = i.offset;
- if(file)
- file->lock(node);
- return *this;
-}
-
-mapfile_iterator& mapfile_iterator::operator++ ()
-{
- if((++offset == mapfile::buf_size) && file)
- {
- ++node;
- offset = 0;
- file->lock(node);
- file->unlock(node-1);
- }
- return *this;
-}
-
-mapfile_iterator mapfile_iterator::operator++ (int)
-{
- mapfile_iterator temp(*this);
- if((++offset == mapfile::buf_size) && file)
- {
- ++node;
- offset = 0;
- file->lock(node);
- file->unlock(node-1);
- }
- return temp;
-}
-
-mapfile_iterator& mapfile_iterator::operator-- ()
-{
- if((offset == 0) && file)
- {
- --node;
- offset = mapfile::buf_size - 1;
- file->lock(node);
- file->unlock(node + 1);
- }
- else
- --offset;
- return *this;
-}
-
-mapfile_iterator mapfile_iterator::operator-- (int)
-{
- mapfile_iterator temp(*this);
- if((offset == 0) && file)
- {
- --node;
- offset = mapfile::buf_size - 1;
- file->lock(node);
- file->unlock(node + 1);
- }
- else
- --offset;
- return temp;
-}
-
-mapfile_iterator operator + (const mapfile_iterator& i, long off)
-{
- mapfile_iterator temp(i);
- temp += off;
- return temp;
-}
-
-mapfile_iterator operator - (const mapfile_iterator& i, long off)
-{
- mapfile_iterator temp(i);
- temp -= off;
- return temp;
-}
-
-mapfile::iterator mapfile::begin()const
-{
- return mapfile_iterator(this, 0);
-}
-
-mapfile::iterator mapfile::end()const
-{
- return mapfile_iterator(this, _size);
-}
-
-void mapfile::lock(pointer* node)const
-{
- BOOST_ASSERT(node >= _first);
- BOOST_ASSERT(node <= _last);
- if(node < _last)
- {
- if(*node == 0)
- {
- if(condemed.empty())
- {
- *node = new char[sizeof(int) + buf_size];
- *(reinterpret_cast<int*>(*node)) = 1;
- }
- else
- {
- pointer* p = condemed.front();
- condemed.pop_front();
- *node = *p;
- *p = 0;
- *(reinterpret_cast<int*>(*node)) = 1;
- }
-
- std::size_t read_size = 0;
- int read_pos = std::fseek(hfile, (node - _first) * buf_size, SEEK_SET);
-
- if(0 == read_pos && node == _last - 1)
- read_size = std::fread(*node + sizeof(int), _size % buf_size, 1, hfile);
- else
- read_size = std::fread(*node + sizeof(int), buf_size, 1, hfile);
-#ifndef BOOST_NO_EXCEPTIONS
- if((read_size == 0) || (std::ferror(hfile)))
- {
- throw std::runtime_error("Unable to read file.");
- }
-#else
- BOOST_REGEX_NOEH_ASSERT((0 == std::ferror(hfile)) && (read_size != 0));
-#endif
- }
- else
- {
- if(*reinterpret_cast<int*>(*node) == 0)
- {
- *reinterpret_cast<int*>(*node) = 1;
- condemed.remove(node);
- }
- else
- ++(*reinterpret_cast<int*>(*node));
- }
- }
-}
-
-void mapfile::unlock(pointer* node)const
-{
- BOOST_ASSERT(node >= _first);
- BOOST_ASSERT(node <= _last);
- if(node < _last)
- {
- if(--(*reinterpret_cast<int*>(*node)) == 0)
- {
- condemed.push_back(node);
- }
- }
-}
-
-long int get_file_length(std::FILE* hfile)
-{
- long int result;
- std::fseek(hfile, 0, SEEK_END);
- result = std::ftell(hfile);
- std::fseek(hfile, 0, SEEK_SET);
- return result;
-}
-
-
-void mapfile::open(const char* file)
-{
- hfile = std::fopen(file, "rb");
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- if(hfile != 0)
- {
- _size = get_file_length(hfile);
- long cnodes = (_size + buf_size - 1) / buf_size;
-
- // check that number of nodes is not too high:
- if(cnodes > (long)((INT_MAX) / sizeof(pointer*)))
- {
- std::fclose(hfile);
- hfile = 0;
- _size = 0;
- return;
- }
-
- _first = new pointer[(int)cnodes];
- _last = _first + cnodes;
- std::memset(_first, 0, cnodes*sizeof(pointer));
- }
- else
- {
- std::runtime_error err("Unable to open file.");
- }
-#ifndef BOOST_NO_EXCEPTIONS
- }catch(...)
- { close(); throw; }
-#endif
-}
-
-void mapfile::close()
-{
- if(hfile != 0)
- {
- pointer* p = _first;
- while(p != _last)
- {
- if(*p)
- delete[] *p;
- ++p;
- }
- delete[] _first;
- _size = 0;
- _first = _last = 0;
- std::fclose(hfile);
- hfile = 0;
- condemed.erase(condemed.begin(), condemed.end());
- }
-}
-
-
-#endif
-
-inline _fi_find_handle find_first_file(const char* wild, _fi_find_data& data)
-{
-#ifdef BOOST_NO_ANSI_APIS
- std::size_t wild_size = std::strlen(wild);
- LPWSTR wide_wild = (LPWSTR)_alloca( (wild_size + 1) * sizeof(WCHAR) );
- if (::MultiByteToWideChar(CP_ACP, 0, wild, wild_size, wide_wild, wild_size + 1) == 0)
- return _fi_invalid_handle;
-
- return FindFirstFileW(wide_wild, &data);
-#else
- return FindFirstFileA(wild, &data);
-#endif
-}
-
-inline bool find_next_file(_fi_find_handle hf, _fi_find_data& data)
-{
-#ifdef BOOST_NO_ANSI_APIS
- return FindNextFileW(hf, &data);
-#else
- return FindNextFileA(hf, &data);
-#endif
-}
-
-inline void copy_find_file_result_with_overflow_check(const _fi_find_data& data, char* path, size_t max_size)
-{
-#ifdef BOOST_NO_ANSI_APIS
- if (::WideCharToMultiByte(CP_ACP, 0, data.cFileName, -1, path, max_size, NULL, NULL) == 0)
- re_detail::overflow_error_if_not_zero(1);
-#else
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(path, max_size, data.cFileName));
-#endif
-}
-
-inline bool is_not_current_or_parent_path_string(const _fi_find_data& data)
-{
-#ifdef BOOST_NO_ANSI_APIS
- return (std::wcscmp(data.cFileName, L".") && std::wcscmp(data.cFileName, L".."));
-#else
- return (std::strcmp(data.cFileName, ".") && std::strcmp(data.cFileName, ".."));
-#endif
-}
-
-
-file_iterator::file_iterator()
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- ptr = _path;
- *_path = 0;
- *_root = 0;
- ref = new file_iterator_ref();
- BOOST_REGEX_NOEH_ASSERT(ref)
- ref->hf = _fi_invalid_handle;
- ref->count = 1;
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- delete ref;
- throw;
- }
-#endif
-}
-
-file_iterator::file_iterator(const char* wild)
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, wild));
- ptr = _root;
- while(*ptr)++ptr;
- while((ptr > _root) && (*ptr != *_fi_sep) && (*ptr != *_fi_sep_alt))--ptr;
- if((ptr == _root) && ( (*ptr== *_fi_sep) || (*ptr==*_fi_sep_alt) ) )
- {
- _root[1]='\0';
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
- }
- else
- {
- *ptr = 0;
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
- if(*_path == 0)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, "."));
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(_path, MAX_PATH, _fi_sep));
- }
- ptr = _path + std::strlen(_path);
-
- ref = new file_iterator_ref();
- BOOST_REGEX_NOEH_ASSERT(ref)
- ref->hf = find_first_file(wild, ref->_data);
- ref->count = 1;
-
- if(ref->hf == _fi_invalid_handle)
- {
- *_path = 0;
- ptr = _path;
- }
- else
- {
- copy_find_file_result_with_overflow_check(ref->_data, ptr, (MAX_PATH - (ptr - _path)));
- if(ref->_data.dwFileAttributes & _fi_dir)
- next();
- }
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- delete ref;
- throw;
- }
-#endif
-}
-
-file_iterator::file_iterator(const file_iterator& other)
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
- ptr = _path + (other.ptr - other._path);
- ref = other.ref;
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- throw;
- }
-#endif
- ++(ref->count);
-}
-
-file_iterator& file_iterator::operator=(const file_iterator& other)
-{
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
- ptr = _path + (other.ptr - other._path);
- if(--(ref->count) == 0)
- {
- if(ref->hf != _fi_invalid_handle)
- FindClose(ref->hf);
- delete ref;
- }
- ref = other.ref;
- ++(ref->count);
- return *this;
-}
-
-
-file_iterator::~file_iterator()
-{
- delete[] _root;
- delete[] _path;
- if(--(ref->count) == 0)
- {
- if(ref->hf != _fi_invalid_handle)
- FindClose(ref->hf);
- delete ref;
- }
-}
-
-file_iterator file_iterator::operator++(int)
-{
- file_iterator temp(*this);
- next();
- return temp;
-}
-
-
-void file_iterator::next()
-{
- if(ref->hf != _fi_invalid_handle)
- {
- bool cont = true;
- while(cont)
- {
- cont = find_next_file(ref->hf, ref->_data);
- if(cont && ((ref->_data.dwFileAttributes & _fi_dir) == 0))
- break;
- }
- if(!cont)
- {
- // end of sequence
- FindClose(ref->hf);
- ref->hf = _fi_invalid_handle;
- *_path = 0;
- ptr = _path;
- }
- else
- copy_find_file_result_with_overflow_check(ref->_data, ptr, MAX_PATH - (ptr - _path));
- }
-}
-
-
-
-directory_iterator::directory_iterator()
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- ptr = _path;
- *_path = 0;
- *_root = 0;
- ref = new file_iterator_ref();
- BOOST_REGEX_NOEH_ASSERT(ref)
- ref->hf = _fi_invalid_handle;
- ref->count = 1;
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- delete ref;
- throw;
- }
-#endif
-}
-
-directory_iterator::directory_iterator(const char* wild)
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, wild));
- ptr = _root;
- while(*ptr)++ptr;
- while((ptr > _root) && (*ptr != *_fi_sep) && (*ptr != *_fi_sep_alt))--ptr;
-
- if((ptr == _root) && ( (*ptr== *_fi_sep) || (*ptr==*_fi_sep_alt) ) )
- {
- _root[1]='\0';
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
- }
- else
- {
- *ptr = 0;
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
- if(*_path == 0)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, "."));
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(_path, MAX_PATH, _fi_sep));
- }
- ptr = _path + std::strlen(_path);
-
- ref = new file_iterator_ref();
- BOOST_REGEX_NOEH_ASSERT(ref)
- ref->count = 1;
- ref->hf = find_first_file(wild, ref->_data);
- if(ref->hf == _fi_invalid_handle)
- {
- *_path = 0;
- ptr = _path;
- }
- else
- {
- copy_find_file_result_with_overflow_check(ref->_data, ptr, MAX_PATH - (ptr - _path));
- if(((ref->_data.dwFileAttributes & _fi_dir) == 0) || (std::strcmp(ptr, ".") == 0) || (std::strcmp(ptr, "..") == 0))
- next();
- }
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- delete ref;
- throw;
- }
-#endif
-}
-
-directory_iterator::~directory_iterator()
-{
- delete[] _root;
- delete[] _path;
- if(--(ref->count) == 0)
- {
- if(ref->hf != _fi_invalid_handle)
- FindClose(ref->hf);
- delete ref;
- }
-}
-
-directory_iterator::directory_iterator(const directory_iterator& other)
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
- ptr = _path + (other.ptr - other._path);
- ref = other.ref;
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- throw;
- }
-#endif
- ++(ref->count);
-}
-
-directory_iterator& directory_iterator::operator=(const directory_iterator& other)
-{
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
- ptr = _path + (other.ptr - other._path);
- if(--(ref->count) == 0)
- {
- if(ref->hf != _fi_invalid_handle)
- FindClose(ref->hf);
- delete ref;
- }
- ref = other.ref;
- ++(ref->count);
- return *this;
-}
-
-directory_iterator directory_iterator::operator++(int)
-{
- directory_iterator temp(*this);
- next();
- return temp;
-}
-
-void directory_iterator::next()
-{
- if(ref->hf != _fi_invalid_handle)
- {
- bool cont = true;
- while(cont)
- {
- cont = find_next_file(ref->hf, ref->_data);
- if(cont && (ref->_data.dwFileAttributes & _fi_dir))
- {
- if(is_not_current_or_parent_path_string(ref->_data))
- break;
- }
- }
- if(!cont)
- {
- // end of sequence
- FindClose(ref->hf);
- ref->hf = _fi_invalid_handle;
- *_path = 0;
- ptr = _path;
- }
- else
- copy_find_file_result_with_overflow_check(ref->_data, ptr, MAX_PATH - (ptr - _path));
- }
-}
-
-
-#ifdef BOOST_REGEX_FI_POSIX_DIR
-
-struct _fi_priv_data
-{
- char root[MAX_PATH];
- char* mask;
- DIR* d;
- _fi_priv_data(const char* p);
-};
-
-_fi_priv_data::_fi_priv_data(const char* p)
-{
- std::strcpy(root, p);
- mask = root;
- while(*mask) ++mask;
- while((mask > root) && (*mask != *_fi_sep) && (*mask != *_fi_sep_alt)) --mask;
- if(mask == root && ((*mask== *_fi_sep) || (*mask == *_fi_sep_alt)) )
- {
- root[1] = '\0';
- std::strcpy(root+2, p+1);
- mask = root+2;
- }
- else if(mask == root)
- {
- root[0] = '.';
- root[1] = '\0';
- std::strcpy(root+2, p);
- mask = root+2;
- }
- else
- {
- *mask = 0;
- ++mask;
- }
-}
-
-bool iswild(const char* mask, const char* name)
-{
- while(*mask && *name)
- {
- switch(*mask)
- {
- case '?':
- ++name;
- ++mask;
- continue;
- case '*':
- ++mask;
- if(*mask == 0)
- return true;
- while(*name)
- {
- if(iswild(mask, name))
- return true;
- ++name;
- }
- return false;
- case '.':
- if(0 == *name)
- {
- ++mask;
- continue;
- }
- // fall through:
- default:
- if(BOOST_REGEX_FI_TRANSLATE(*mask) != BOOST_REGEX_FI_TRANSLATE(*name))
- return false;
- ++mask;
- ++name;
- continue;
- }
- }
- if(*mask != *name)
- return false;
- return true;
-}
-
-unsigned _fi_attributes(const char* root, const char* name)
-{
- char buf[MAX_PATH];
- // verify that we can not overflow:
- if(std::strlen(root) + std::strlen(_fi_sep) + std::strlen(name) >= MAX_PATH)
- return 0;
- int r;
- if( ( (root[0] == *_fi_sep) || (root[0] == *_fi_sep_alt) ) && (root[1] == '\0') )
- r = (std::sprintf)(buf, "%s%s", root, name);
- else
- r = (std::sprintf)(buf, "%s%s%s", root, _fi_sep, name);
- if(r < 0)
- return 0; // sprintf failed
- DIR* d = opendir(buf);
- if(d)
- {
- closedir(d);
- return _fi_dir;
- }
- return 0;
-}
-
-_fi_find_handle _fi_FindFirstFile(const char* lpFileName, _fi_find_data* lpFindFileData)
-{
- _fi_find_handle dat = new _fi_priv_data(lpFileName);
-
- DIR* h = opendir(dat->root);
- dat->d = h;
- if(h != 0)
- {
- if(_fi_FindNextFile(dat, lpFindFileData))
- return dat;
- closedir(h);
- }
- delete dat;
- return 0;
-}
-
-bool _fi_FindNextFile(_fi_find_handle dat, _fi_find_data* lpFindFileData)
-{
- dirent* d;
- do
- {
- d = readdir(dat->d);
- } while(d && !iswild(dat->mask, d->d_name));
-
- if(d)
- {
- std::strcpy(lpFindFileData->cFileName, d->d_name);
- lpFindFileData->dwFileAttributes = _fi_attributes(dat->root, d->d_name);
- return true;
- }
- return false;
-}
-
-bool _fi_FindClose(_fi_find_handle dat)
-{
- closedir(dat->d);
- delete dat;
- return true;
-}
-
-#endif
-
-} // namespace re_detail
-} // namspace boost
-
-#endif // BOOST_REGEX_NO_FILEITER
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/src/icu.cxx b/libcutl/cutl/details/boost/regex/src/icu.cxx
deleted file mode 100644
index 982b134..0000000
--- a/libcutl/cutl/details/boost/regex/src/icu.cxx
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE icu.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Unicode regular expressions on top of the ICU Library.
- */
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/regex/config.hpp>
-#ifdef BOOST_HAS_ICU
-#define BOOST_REGEX_ICU_INSTANTIATE
-#include <cutl/details/boost/regex/icu.hpp>
-
-#ifdef BOOST_INTEL
-#pragma warning(disable:981 2259 383)
-#endif
-
-namespace cutl_details_boost{
-
-namespace re_detail{
-
-icu_regex_traits_implementation::string_type icu_regex_traits_implementation::do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const
-{
- // TODO make thread safe!!!! :
- typedef u32_to_u16_iterator<const char_type*, ::UChar> itt;
- itt i(p1), j(p2);
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- std::vector< ::UChar> t(i, j);
-#else
- std::vector< ::UChar> t;
- while(i != j)
- t.push_back(*i++);
-#endif
- ::uint8_t result[100];
- ::int32_t len;
- if(t.size())
- len = pcoll->getSortKey(&*t.begin(), static_cast< ::int32_t>(t.size()), result, sizeof(result));
- else
- len = pcoll->getSortKey(static_cast<UChar const*>(0), static_cast< ::int32_t>(0), result, sizeof(result));
- if(std::size_t(len) > sizeof(result))
- {
- scoped_array< ::uint8_t> presult(new ::uint8_t[len+1]);
- if(t.size())
- len = pcoll->getSortKey(&*t.begin(), static_cast< ::int32_t>(t.size()), presult.get(), len+1);
- else
- len = pcoll->getSortKey(static_cast<UChar const*>(0), static_cast< ::int32_t>(0), presult.get(), len+1);
- if((0 == presult[len-1]) && (len > 1))
- --len;
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- return string_type(presult.get(), presult.get()+len);
-#else
- string_type sresult;
- ::uint8_t const* ia = presult.get();
- ::uint8_t const* ib = presult.get()+len;
- while(ia != ib)
- sresult.push_back(*ia++);
- return sresult;
-#endif
- }
- if((0 == result[len-1]) && (len > 1))
- --len;
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- return string_type(result, result+len);
-#else
- string_type sresult;
- ::uint8_t const* ia = result;
- ::uint8_t const* ib = result+len;
- while(ia != ib)
- sresult.push_back(*ia++);
- return sresult;
-#endif
-}
-
-}
-
-icu_regex_traits::size_type icu_regex_traits::length(const char_type* p)
-{
- size_type result = 0;
- while(*p)
- {
- ++p;
- ++result;
- }
- return result;
-}
-
-//
-// define our bitmasks:
-//
-const icu_regex_traits::char_class_type icu_regex_traits::mask_blank = icu_regex_traits::char_class_type(1) << offset_blank;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_space = icu_regex_traits::char_class_type(1) << offset_space;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_xdigit = icu_regex_traits::char_class_type(1) << offset_xdigit;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_underscore = icu_regex_traits::char_class_type(1) << offset_underscore;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_unicode = icu_regex_traits::char_class_type(1) << offset_unicode;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_any = icu_regex_traits::char_class_type(1) << offset_any;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_ascii = icu_regex_traits::char_class_type(1) << offset_ascii;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_horizontal = icu_regex_traits::char_class_type(1) << offset_horizontal;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_vertical = icu_regex_traits::char_class_type(1) << offset_vertical;
-
-icu_regex_traits::char_class_type icu_regex_traits::lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2)
-{
- static const ::UChar32 prop_name_table[] = {
- /* any */ 'a', 'n', 'y',
- /* ascii */ 'a', 's', 'c', 'i', 'i',
- /* assigned */ 'a', 's', 's', 'i', 'g', 'n', 'e', 'd',
- /* c* */ 'c', '*',
- /* cc */ 'c', 'c',
- /* cf */ 'c', 'f',
- /* closepunctuation */ 'c', 'l', 'o', 's', 'e', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* cn */ 'c', 'n',
- /* co */ 'c', 'o',
- /* connectorpunctuation */ 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* control */ 'c', 'o', 'n', 't', 'r', 'o', 'l',
- /* cs */ 'c', 's',
- /* currencysymbol */ 'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', 's', 'y', 'm', 'b', 'o', 'l',
- /* dashpunctuation */ 'd', 'a', 's', 'h', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* decimaldigitnumber */ 'd', 'e', 'c', 'i', 'm', 'a', 'l', 'd', 'i', 'g', 'i', 't', 'n', 'u', 'm', 'b', 'e', 'r',
- /* enclosingmark */ 'e', 'n', 'c', 'l', 'o', 's', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
- /* finalpunctuation */ 'f', 'i', 'n', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* format */ 'f', 'o', 'r', 'm', 'a', 't',
- /* initialpunctuation */ 'i', 'n', 'i', 't', 'i', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* l* */ 'l', '*',
- /* letter */ 'l', 'e', 't', 't', 'e', 'r',
- /* letternumber */ 'l', 'e', 't', 't', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r',
- /* lineseparator */ 'l', 'i', 'n', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
- /* ll */ 'l', 'l',
- /* lm */ 'l', 'm',
- /* lo */ 'l', 'o',
- /* lowercaseletter */ 'l', 'o', 'w', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
- /* lt */ 'l', 't',
- /* lu */ 'l', 'u',
- /* m* */ 'm', '*',
- /* mark */ 'm', 'a', 'r', 'k',
- /* mathsymbol */ 'm', 'a', 't', 'h', 's', 'y', 'm', 'b', 'o', 'l',
- /* mc */ 'm', 'c',
- /* me */ 'm', 'e',
- /* mn */ 'm', 'n',
- /* modifierletter */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r',
- /* modifiersymbol */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l',
- /* n* */ 'n', '*',
- /* nd */ 'n', 'd',
- /* nl */ 'n', 'l',
- /* no */ 'n', 'o',
- /* nonspacingmark */ 'n', 'o', 'n', 's', 'p', 'a', 'c', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
- /* notassigned */ 'n', 'o', 't', 'a', 's', 's', 'i', 'g', 'n', 'e', 'd',
- /* number */ 'n', 'u', 'm', 'b', 'e', 'r',
- /* openpunctuation */ 'o', 'p', 'e', 'n', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* other */ 'o', 't', 'h', 'e', 'r',
- /* otherletter */ 'o', 't', 'h', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r',
- /* othernumber */ 'o', 't', 'h', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r',
- /* otherpunctuation */ 'o', 't', 'h', 'e', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* othersymbol */ 'o', 't', 'h', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l',
- /* p* */ 'p', '*',
- /* paragraphseparator */ 'p', 'a', 'r', 'a', 'g', 'r', 'a', 'p', 'h', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
- /* pc */ 'p', 'c',
- /* pd */ 'p', 'd',
- /* pe */ 'p', 'e',
- /* pf */ 'p', 'f',
- /* pi */ 'p', 'i',
- /* po */ 'p', 'o',
- /* privateuse */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'u', 's', 'e',
- /* ps */ 'p', 's',
- /* punctuation */ 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* s* */ 's', '*',
- /* sc */ 's', 'c',
- /* separator */ 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
- /* sk */ 's', 'k',
- /* sm */ 's', 'm',
- /* so */ 's', 'o',
- /* spaceseparator */ 's', 'p', 'a', 'c', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
- /* spacingcombiningmark */ 's', 'p', 'a', 'c', 'i', 'n', 'g', 'c', 'o', 'm', 'b', 'i', 'n', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
- /* surrogate */ 's', 'u', 'r', 'r', 'o', 'g', 'a', 't', 'e',
- /* symbol */ 's', 'y', 'm', 'b', 'o', 'l',
- /* titlecase */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e',
- /* titlecaseletter */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
- /* uppercaseletter */ 'u', 'p', 'p', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
- /* z* */ 'z', '*',
- /* zl */ 'z', 'l',
- /* zp */ 'z', 'p',
- /* zs */ 'z', 's',
- };
-
- static const re_detail::character_pointer_range< ::UChar32> range_data[] = {
- { prop_name_table+0, prop_name_table+3, }, // any
- { prop_name_table+3, prop_name_table+8, }, // ascii
- { prop_name_table+8, prop_name_table+16, }, // assigned
- { prop_name_table+16, prop_name_table+18, }, // c*
- { prop_name_table+18, prop_name_table+20, }, // cc
- { prop_name_table+20, prop_name_table+22, }, // cf
- { prop_name_table+22, prop_name_table+38, }, // closepunctuation
- { prop_name_table+38, prop_name_table+40, }, // cn
- { prop_name_table+40, prop_name_table+42, }, // co
- { prop_name_table+42, prop_name_table+62, }, // connectorpunctuation
- { prop_name_table+62, prop_name_table+69, }, // control
- { prop_name_table+69, prop_name_table+71, }, // cs
- { prop_name_table+71, prop_name_table+85, }, // currencysymbol
- { prop_name_table+85, prop_name_table+100, }, // dashpunctuation
- { prop_name_table+100, prop_name_table+118, }, // decimaldigitnumber
- { prop_name_table+118, prop_name_table+131, }, // enclosingmark
- { prop_name_table+131, prop_name_table+147, }, // finalpunctuation
- { prop_name_table+147, prop_name_table+153, }, // format
- { prop_name_table+153, prop_name_table+171, }, // initialpunctuation
- { prop_name_table+171, prop_name_table+173, }, // l*
- { prop_name_table+173, prop_name_table+179, }, // letter
- { prop_name_table+179, prop_name_table+191, }, // letternumber
- { prop_name_table+191, prop_name_table+204, }, // lineseparator
- { prop_name_table+204, prop_name_table+206, }, // ll
- { prop_name_table+206, prop_name_table+208, }, // lm
- { prop_name_table+208, prop_name_table+210, }, // lo
- { prop_name_table+210, prop_name_table+225, }, // lowercaseletter
- { prop_name_table+225, prop_name_table+227, }, // lt
- { prop_name_table+227, prop_name_table+229, }, // lu
- { prop_name_table+229, prop_name_table+231, }, // m*
- { prop_name_table+231, prop_name_table+235, }, // mark
- { prop_name_table+235, prop_name_table+245, }, // mathsymbol
- { prop_name_table+245, prop_name_table+247, }, // mc
- { prop_name_table+247, prop_name_table+249, }, // me
- { prop_name_table+249, prop_name_table+251, }, // mn
- { prop_name_table+251, prop_name_table+265, }, // modifierletter
- { prop_name_table+265, prop_name_table+279, }, // modifiersymbol
- { prop_name_table+279, prop_name_table+281, }, // n*
- { prop_name_table+281, prop_name_table+283, }, // nd
- { prop_name_table+283, prop_name_table+285, }, // nl
- { prop_name_table+285, prop_name_table+287, }, // no
- { prop_name_table+287, prop_name_table+301, }, // nonspacingmark
- { prop_name_table+301, prop_name_table+312, }, // notassigned
- { prop_name_table+312, prop_name_table+318, }, // number
- { prop_name_table+318, prop_name_table+333, }, // openpunctuation
- { prop_name_table+333, prop_name_table+338, }, // other
- { prop_name_table+338, prop_name_table+349, }, // otherletter
- { prop_name_table+349, prop_name_table+360, }, // othernumber
- { prop_name_table+360, prop_name_table+376, }, // otherpunctuation
- { prop_name_table+376, prop_name_table+387, }, // othersymbol
- { prop_name_table+387, prop_name_table+389, }, // p*
- { prop_name_table+389, prop_name_table+407, }, // paragraphseparator
- { prop_name_table+407, prop_name_table+409, }, // pc
- { prop_name_table+409, prop_name_table+411, }, // pd
- { prop_name_table+411, prop_name_table+413, }, // pe
- { prop_name_table+413, prop_name_table+415, }, // pf
- { prop_name_table+415, prop_name_table+417, }, // pi
- { prop_name_table+417, prop_name_table+419, }, // po
- { prop_name_table+419, prop_name_table+429, }, // privateuse
- { prop_name_table+429, prop_name_table+431, }, // ps
- { prop_name_table+431, prop_name_table+442, }, // punctuation
- { prop_name_table+442, prop_name_table+444, }, // s*
- { prop_name_table+444, prop_name_table+446, }, // sc
- { prop_name_table+446, prop_name_table+455, }, // separator
- { prop_name_table+455, prop_name_table+457, }, // sk
- { prop_name_table+457, prop_name_table+459, }, // sm
- { prop_name_table+459, prop_name_table+461, }, // so
- { prop_name_table+461, prop_name_table+475, }, // spaceseparator
- { prop_name_table+475, prop_name_table+495, }, // spacingcombiningmark
- { prop_name_table+495, prop_name_table+504, }, // surrogate
- { prop_name_table+504, prop_name_table+510, }, // symbol
- { prop_name_table+510, prop_name_table+519, }, // titlecase
- { prop_name_table+519, prop_name_table+534, }, // titlecaseletter
- { prop_name_table+534, prop_name_table+549, }, // uppercaseletter
- { prop_name_table+549, prop_name_table+551, }, // z*
- { prop_name_table+551, prop_name_table+553, }, // zl
- { prop_name_table+553, prop_name_table+555, }, // zp
- { prop_name_table+555, prop_name_table+557, }, // zs
- };
-
- static const icu_regex_traits::char_class_type icu_class_map[] = {
- icu_regex_traits::mask_any, // any
- icu_regex_traits::mask_ascii, // ascii
- (0x3FFFFFFFu) & ~(U_GC_CN_MASK), // assigned
- U_GC_C_MASK, // c*
- U_GC_CC_MASK, // cc
- U_GC_CF_MASK, // cf
- U_GC_PE_MASK, // closepunctuation
- U_GC_CN_MASK, // cn
- U_GC_CO_MASK, // co
- U_GC_PC_MASK, // connectorpunctuation
- U_GC_CC_MASK, // control
- U_GC_CS_MASK, // cs
- U_GC_SC_MASK, // currencysymbol
- U_GC_PD_MASK, // dashpunctuation
- U_GC_ND_MASK, // decimaldigitnumber
- U_GC_ME_MASK, // enclosingmark
- U_GC_PF_MASK, // finalpunctuation
- U_GC_CF_MASK, // format
- U_GC_PI_MASK, // initialpunctuation
- U_GC_L_MASK, // l*
- U_GC_L_MASK, // letter
- U_GC_NL_MASK, // letternumber
- U_GC_ZL_MASK, // lineseparator
- U_GC_LL_MASK, // ll
- U_GC_LM_MASK, // lm
- U_GC_LO_MASK, // lo
- U_GC_LL_MASK, // lowercaseletter
- U_GC_LT_MASK, // lt
- U_GC_LU_MASK, // lu
- U_GC_M_MASK, // m*
- U_GC_M_MASK, // mark
- U_GC_SM_MASK, // mathsymbol
- U_GC_MC_MASK, // mc
- U_GC_ME_MASK, // me
- U_GC_MN_MASK, // mn
- U_GC_LM_MASK, // modifierletter
- U_GC_SK_MASK, // modifiersymbol
- U_GC_N_MASK, // n*
- U_GC_ND_MASK, // nd
- U_GC_NL_MASK, // nl
- U_GC_NO_MASK, // no
- U_GC_MN_MASK, // nonspacingmark
- U_GC_CN_MASK, // notassigned
- U_GC_N_MASK, // number
- U_GC_PS_MASK, // openpunctuation
- U_GC_C_MASK, // other
- U_GC_LO_MASK, // otherletter
- U_GC_NO_MASK, // othernumber
- U_GC_PO_MASK, // otherpunctuation
- U_GC_SO_MASK, // othersymbol
- U_GC_P_MASK, // p*
- U_GC_ZP_MASK, // paragraphseparator
- U_GC_PC_MASK, // pc
- U_GC_PD_MASK, // pd
- U_GC_PE_MASK, // pe
- U_GC_PF_MASK, // pf
- U_GC_PI_MASK, // pi
- U_GC_PO_MASK, // po
- U_GC_CO_MASK, // privateuse
- U_GC_PS_MASK, // ps
- U_GC_P_MASK, // punctuation
- U_GC_S_MASK, // s*
- U_GC_SC_MASK, // sc
- U_GC_Z_MASK, // separator
- U_GC_SK_MASK, // sk
- U_GC_SM_MASK, // sm
- U_GC_SO_MASK, // so
- U_GC_ZS_MASK, // spaceseparator
- U_GC_MC_MASK, // spacingcombiningmark
- U_GC_CS_MASK, // surrogate
- U_GC_S_MASK, // symbol
- U_GC_LT_MASK, // titlecase
- U_GC_LT_MASK, // titlecaseletter
- U_GC_LU_MASK, // uppercaseletter
- U_GC_Z_MASK, // z*
- U_GC_ZL_MASK, // zl
- U_GC_ZP_MASK, // zp
- U_GC_ZS_MASK, // zs
- };
-
-
- static const re_detail::character_pointer_range< ::UChar32>* ranges_begin = range_data;
- static const re_detail::character_pointer_range< ::UChar32>* ranges_end = range_data + (sizeof(range_data)/sizeof(range_data[0]));
-
- re_detail::character_pointer_range< ::UChar32> t = { p1, p2, };
- const re_detail::character_pointer_range< ::UChar32>* p = std::lower_bound(ranges_begin, ranges_end, t);
- if((p != ranges_end) && (t == *p))
- return icu_class_map[p - ranges_begin];
- return 0;
-}
-
-icu_regex_traits::char_class_type icu_regex_traits::lookup_classname(const char_type* p1, const char_type* p2) const
-{
- static const char_class_type masks[] =
- {
- 0,
- U_GC_L_MASK | U_GC_ND_MASK,
- U_GC_L_MASK,
- mask_blank,
- U_GC_CC_MASK | U_GC_CF_MASK | U_GC_ZL_MASK | U_GC_ZP_MASK,
- U_GC_ND_MASK,
- U_GC_ND_MASK,
- (0x3FFFFFFFu) & ~(U_GC_CC_MASK | U_GC_CF_MASK | U_GC_CS_MASK | U_GC_CN_MASK | U_GC_Z_MASK),
- mask_horizontal,
- U_GC_LL_MASK,
- U_GC_LL_MASK,
- ~(U_GC_C_MASK),
- U_GC_P_MASK,
- char_class_type(U_GC_Z_MASK) | mask_space,
- char_class_type(U_GC_Z_MASK) | mask_space,
- U_GC_LU_MASK,
- mask_unicode,
- U_GC_LU_MASK,
- mask_vertical,
- char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore,
- char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore,
- char_class_type(U_GC_ND_MASK) | mask_xdigit,
- };
-
- int idx = ::cutl_details_boost::re_detail::get_default_class_id(p1, p2);
- if(idx >= 0)
- return masks[idx+1];
- char_class_type result = lookup_icu_mask(p1, p2);
- if(result != 0)
- return result;
-
- if(idx < 0)
- {
- string_type s(p1, p2);
- string_type::size_type i = 0;
- while(i < s.size())
- {
- s[i] = static_cast<char>((::u_tolower)(s[i]));
- if(::u_isspace(s[i]) || (s[i] == '-') || (s[i] == '_'))
- s.erase(s.begin()+i, s.begin()+i+1);
- else
- {
- s[i] = static_cast<char>((::u_tolower)(s[i]));
- ++i;
- }
- }
- if(s.size())
- idx = ::cutl_details_boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
- if(idx >= 0)
- return masks[idx+1];
- if(s.size())
- result = lookup_icu_mask(&*s.begin(), &*s.begin() + s.size());
- if(result != 0)
- return result;
- }
- BOOST_ASSERT(std::size_t(idx+1) < sizeof(masks) / sizeof(masks[0]));
- return masks[idx+1];
-}
-
-icu_regex_traits::string_type icu_regex_traits::lookup_collatename(const char_type* p1, const char_type* p2) const
-{
- string_type result;
- if(std::find_if(p1, p2, std::bind2nd(std::greater< ::UChar32>(), 0x7f)) == p2)
- {
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- std::string s(p1, p2);
-#else
- std::string s;
- const char_type* p3 = p1;
- while(p3 != p2)
- s.append(1, *p3++);
-#endif
- // Try Unicode name:
- UErrorCode err = U_ZERO_ERROR;
- UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, s.c_str(), &err);
- if(U_SUCCESS(err))
- {
- result.push_back(c);
- return result;
- }
- // Try Unicode-extended name:
- err = U_ZERO_ERROR;
- c = ::u_charFromName(U_EXTENDED_CHAR_NAME, s.c_str(), &err);
- if(U_SUCCESS(err))
- {
- result.push_back(c);
- return result;
- }
- // try POSIX name:
- s = ::cutl_details_boost::re_detail::lookup_default_collate_name(s);
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- result.assign(s.begin(), s.end());
-#else
- result.clear();
- std::string::const_iterator si, sj;
- si = s.begin();
- sj = s.end();
- while(si != sj)
- result.push_back(*si++);
-#endif
- }
- if(result.empty() && (p2-p1 == 1))
- result.push_back(*p1);
- return result;
-}
-
-bool icu_regex_traits::isctype(char_type c, char_class_type f) const
-{
- // check for standard catagories first:
- char_class_type m = char_class_type(1u << u_charType(c));
- if((m & f) != 0)
- return true;
- // now check for special cases:
- if(((f & mask_blank) != 0) && u_isblank(c))
- return true;
- if(((f & mask_space) != 0) && u_isspace(c))
- return true;
- if(((f & mask_xdigit) != 0) && (u_digit(c, 16) >= 0))
- return true;
- if(((f & mask_unicode) != 0) && (c >= 0x100))
- return true;
- if(((f & mask_underscore) != 0) && (c == '_'))
- return true;
- if(((f & mask_any) != 0) && (c <= 0x10FFFF))
- return true;
- if(((f & mask_ascii) != 0) && (c <= 0x7F))
- return true;
- if(((f & mask_vertical) != 0) && (::cutl_details_boost::re_detail::is_separator(c) || (c == static_cast<char_type>('\v')) || (m == U_GC_ZL_MASK) || (m == U_GC_ZP_MASK)))
- return true;
- if(((f & mask_horizontal) != 0) && !::cutl_details_boost::re_detail::is_separator(c) && u_isspace(c) && (c != static_cast<char_type>('\v')))
- return true;
- return false;
-}
-
-}
-
-#endif // BOOST_HAS_ICU
diff --git a/libcutl/cutl/details/boost/regex/src/instances.cxx b/libcutl/cutl/details/boost/regex/src/instances.cxx
deleted file mode 100644
index 02d3f36..0000000
--- a/libcutl/cutl/details/boost/regex/src/instances.cxx
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: instances.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: regex narrow character template instances.
- */
-
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/regex/config.hpp>
-
-#if !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
-#define BOOST_REGEX_NARROW_INSTANTIATE
-
-#ifdef __BORLANDC__
-#pragma hrdstop
-#endif
-
-#include <cutl/details/boost/regex.hpp>
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex/src/internals.hpp b/libcutl/cutl/details/boost/regex/src/internals.hpp
deleted file mode 100644
index 3a15cc6..0000000
--- a/libcutl/cutl/details/boost/regex/src/internals.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * Copyright (c) 2011
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
-#ifndef BOOST_REGEX_SRC_INTERNALS_HPP
-#define BOOST_REGEX_SRC_INTERNALS_HPP
-
-enum
-{
- char_class_space=1<<0,
- char_class_print=1<<1,
- char_class_cntrl=1<<2,
- char_class_upper=1<<3,
- char_class_lower=1<<4,
- char_class_alpha=1<<5,
- char_class_digit=1<<6,
- char_class_punct=1<<7,
- char_class_xdigit=1<<8,
- char_class_alnum=char_class_alpha|char_class_digit,
- char_class_graph=char_class_alnum|char_class_punct,
- char_class_blank=1<<9,
- char_class_word=1<<10,
- char_class_unicode=1<<11,
- char_class_horizontal=1<<12,
- char_class_vertical=1<<13
-};
-
-#endif // BOOST_REGEX_SRC_INTERNALS_HPP
diff --git a/libcutl/cutl/details/boost/regex/src/posix_api.cxx b/libcutl/cutl/details/boost/regex/src/posix_api.cxx
deleted file mode 100644
index 02d76bf..0000000
--- a/libcutl/cutl/details/boost/regex/src/posix_api.cxx
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: posix_api.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Implements the Posix API wrappers.
- */
-
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/config.hpp>
-#include <cstdio>
-#include <cutl/details/boost/regex.hpp>
-#include <cutl/details/boost/cregex.hpp>
-
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::sprintf;
- using ::strcpy;
- using ::strcmp;
-}
-#endif
-
-
-namespace cutl_details_boost{
-
-namespace{
-
-unsigned int magic_value = 25631;
-
-const char* names[] = {
- "REG_NOERROR",
- "REG_NOMATCH",
- "REG_BADPAT",
- "REG_ECOLLATE",
- "REG_ECTYPE",
- "REG_EESCAPE",
- "REG_ESUBREG",
- "REG_EBRACK",
- "REG_EPAREN",
- "REG_EBRACE",
- "REG_BADBR",
- "REG_ERANGE",
- "REG_ESPACE",
- "REG_BADRPT",
- "REG_EEND",
- "REG_ESIZE",
- "REG_ERPAREN",
- "REG_EMPTY",
- "REG_ECOMPLEXITY",
- "REG_ESTACK",
- "REG_E_PERL",
- "REG_E_UNKNOWN",
-};
-} // namespace
-
-typedef cutl_details_boost::basic_regex<char, c_regex_traits<char> > c_regex_type;
-
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompA(regex_tA* expression, const char* ptr, int f)
-{
- if(expression->re_magic != magic_value)
- {
- expression->guts = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- expression->guts = new c_regex_type();
-#ifndef BOOST_NO_EXCEPTIONS
- } catch(...)
- {
- return REG_ESPACE;
- }
-#else
- if(0 == expression->guts)
- return REG_E_MEMORY;
-#endif
- }
- // set default flags:
- cutl_details_boost::uint_fast32_t flags = (f & REG_PERLEX) ? 0 : ((f & REG_EXTENDED) ? regex::extended : regex::basic);
- expression->eflags = (f & REG_NEWLINE) ? match_not_dot_newline : match_default;
- // and translate those that are actually set:
-
- if(f & REG_NOCOLLATE)
- {
- flags |= regex::nocollate;
-#ifndef BOOST_REGEX_V3
- flags &= ~regex::collate;
-#endif
- }
-
- if(f & REG_NOSUB)
- {
- //expression->eflags |= match_any;
- flags |= regex::nosubs;
- }
-
- if(f & REG_NOSPEC)
- flags |= regex::literal;
- if(f & REG_ICASE)
- flags |= regex::icase;
- if(f & REG_ESCAPE_IN_LISTS)
- flags &= ~regex::no_escape_in_lists;
- if(f & REG_NEWLINE_ALT)
- flags |= regex::newline_alt;
-
- const char* p2;
- if(f & REG_PEND)
- p2 = expression->re_endp;
- else p2 = ptr + std::strlen(ptr);
-
- int result;
-
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- expression->re_magic = magic_value;
- static_cast<c_regex_type*>(expression->guts)->set_expression(ptr, p2, flags);
- expression->re_nsub = static_cast<c_regex_type*>(expression->guts)->mark_count() - 1;
- result = static_cast<c_regex_type*>(expression->guts)->error_code();
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(const cutl_details_boost::regex_error& be)
- {
- result = be.code();
- }
- catch(...)
- {
- result = REG_E_UNKNOWN;
- }
-#endif
- if(result)
- regfreeA(expression);
- return result;
-
-}
-
-BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int code, const regex_tA* e, char* buf, regsize_t buf_size)
-{
- std::size_t result = 0;
- if(code & REG_ITOA)
- {
- code &= ~REG_ITOA;
- if(code <= (int)REG_E_UNKNOWN)
- {
- result = std::strlen(names[code]) + 1;
- if(buf_size >= result)
- re_detail::strcpy_s(buf, buf_size, names[code]);
- return result;
- }
- return result;
- }
- if(code == REG_ATOI)
- {
- char localbuf[5];
- if(e == 0)
- return 0;
- for(int i = 0; i <= (int)REG_E_UNKNOWN; ++i)
- {
- if(std::strcmp(e->re_endp, names[i]) == 0)
- {
- //
- // We're converting an integer i to a string, and since i <= REG_E_UNKNOWN
- // a five character string is *always* large enough:
- //
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- int r = (::sprintf_s)(localbuf, 5, "%d", i);
-#else
- int r = (std::sprintf)(localbuf, "%d", i);
-#endif
- if(r < 0)
- return 0; // sprintf failed
- if(std::strlen(localbuf) < buf_size)
- re_detail::strcpy_s(buf, buf_size, localbuf);
- return std::strlen(localbuf) + 1;
- }
- }
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- (::sprintf_s)(localbuf, 5, "%d", 0);
-#else
- (std::sprintf)(localbuf, "%d", 0);
-#endif
- if(std::strlen(localbuf) < buf_size)
- re_detail::strcpy_s(buf, buf_size, localbuf);
- return std::strlen(localbuf) + 1;
- }
- if(code <= (int)REG_E_UNKNOWN)
- {
- std::string p;
- if((e) && (e->re_magic == magic_value))
- p = static_cast<c_regex_type*>(e->guts)->get_traits().error_string(static_cast< ::cutl_details_boost::regex_constants::error_type>(code));
- else
- {
- p = re_detail::get_default_error_string(static_cast< ::cutl_details_boost::regex_constants::error_type>(code));
- }
- std::size_t len = p.size();
- if(len < buf_size)
- {
- re_detail::strcpy_s(buf, buf_size, p.c_str());
- }
- return len + 1;
- }
- if(buf_size)
- *buf = 0;
- return 0;
-}
-
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecA(const regex_tA* expression, const char* buf, regsize_t n, regmatch_t* array, int eflags)
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4267)
-#endif
- bool result = false;
- match_flag_type flags = match_default | expression->eflags;
- const char* end;
- const char* start;
- cmatch m;
-
- if(eflags & REG_NOTBOL)
- flags |= match_not_bol;
- if(eflags & REG_NOTEOL)
- flags |= match_not_eol;
- if(eflags & REG_STARTEND)
- {
- start = buf + array[0].rm_so;
- end = buf + array[0].rm_eo;
- }
- else
- {
- start = buf;
- end = buf + std::strlen(buf);
- }
-
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- if(expression->re_magic == magic_value)
- {
- result = regex_search(start, end, m, *static_cast<c_regex_type*>(expression->guts), flags);
- }
- else
- return result;
-#ifndef BOOST_NO_EXCEPTIONS
- } catch(...)
- {
- return REG_E_UNKNOWN;
- }
-#endif
-
- if(result)
- {
- // extract what matched:
- std::size_t i;
- for(i = 0; (i < n) && (i < expression->re_nsub + 1); ++i)
- {
- array[i].rm_so = (m[i].matched == false) ? -1 : (m[i].first - buf);
- array[i].rm_eo = (m[i].matched == false) ? -1 : (m[i].second - buf);
- }
- // and set anything else to -1:
- for(i = expression->re_nsub + 1; i < n; ++i)
- {
- array[i].rm_so = -1;
- array[i].rm_eo = -1;
- }
- return 0;
- }
- return REG_NOMATCH;
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeA(regex_tA* expression)
-{
- if(expression->re_magic == magic_value)
- {
- delete static_cast<c_regex_type*>(expression->guts);
- }
- expression->re_magic = 0;
-}
-
-} // namespace cutl_details_boost
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/src/regex.cxx b/libcutl/cutl/details/boost/regex/src/regex.cxx
deleted file mode 100644
index 28f40d0..0000000
--- a/libcutl/cutl/details/boost/regex/src/regex.cxx
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: regex.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Misc cutl_details_boost::regbase member funnctions.
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/config.hpp>
-#include <new>
-#include <cutl/details/boost/regex.hpp>
-#include <cutl/details/boost/throw_exception.hpp>
-
-#if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && defined(_MSC_VER) && (_MSC_VER >= 1300)
-# include <malloc.h>
-#endif
-#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
-#define WIN32_LEAN_AND_MEAN
-#ifndef NOMINMAX
-# define NOMINMAX
-#endif
-#define NOGDI
-#define NOUSER
-#include <windows.h>
-#endif
-
-#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_REGEX_V3)
-#if BOOST_REGEX_MAX_CACHE_BLOCKS == 0
-#include <new>
-#else
-#include <cutl/details/boost/regex/v4/mem_block_cache.hpp>
-#endif
-#endif
-
-#ifdef BOOST_INTEL
-#pragma warning(disable:383)
-#endif
-
-namespace cutl_details_boost{
-
-//
-// fix: these are declared out of line here to ensure
-// that dll builds contain the Virtual table for these
-// types - this ensures that exceptions can be thrown
-// from the dll and caught in an exe.
-regex_error::regex_error(const std::string& s, regex_constants::error_type err, std::ptrdiff_t pos)
- : std::runtime_error(s)
- , m_error_code(err)
- , m_position(pos)
-{
-}
-
-regex_error::regex_error(regex_constants::error_type err)
- : std::runtime_error(::cutl_details_boost::re_detail::get_default_error_string(err))
- , m_error_code(err)
- , m_position(0)
-{
-}
-
-regex_error::~regex_error() throw()
-{
-}
-
-void regex_error::raise()const
-{
-#ifndef BOOST_NO_EXCEPTIONS
- ::cutl_details_boost::throw_exception(*this);
-#endif
-}
-
-
-
-namespace re_detail{
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex)
-{
- ::cutl_details_boost::throw_exception(ex);
-}
-//
-// error checking API:
-//
-BOOST_REGEX_DECL void BOOST_REGEX_CALL verify_options(cutl_details_boost::regex::flag_type /*ef*/, match_flag_type mf)
-{
-#ifndef BOOST_REGEX_V3
- //
- // can't mix match_extra with POSIX matching rules:
- //
- if((mf & match_extra) && (mf & match_posix))
- {
- std::logic_error msg("Usage Error: Can't mix regular expression captures with POSIX matching rules");
- throw_exception(msg);
- }
-#endif
-}
-
-#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
-
-static void execute_eror()
-{
- // we only get here after a stack overflow,
- // this has to be a separate proceedure because we
- // can't mix __try{}__except block with local objects
- // that have destructors:
- reset_stack_guard_page();
- std::runtime_error err("Out of stack space, while attempting to match a regular expression.");
- raise_runtime_error(err);
-}
-
-bool BOOST_REGEX_CALL abstract_protected_call::execute()const
-{
- __try{
- return this->call();
- }__except(EXCEPTION_STACK_OVERFLOW == GetExceptionCode())
- {
- execute_eror();
- }
- // We never really get here at all:
- return false;
-}
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page()
-{
-#if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && defined(_MSC_VER) && (_MSC_VER >= 1300)
- _resetstkoflw();
-#else
- //
- // We need to locate the current page being used by the stack,
- // move to the page below it and then deallocate and protect
- // that page. Note that ideally we would protect only the lowest
- // stack page that has been allocated: in practice there
- // seems to be no easy way to locate this page, in any case as
- // long as the next page is protected, then Windows will figure
- // the rest out for us...
- //
- SYSTEM_INFO si;
- GetSystemInfo(&si);
- MEMORY_BASIC_INFORMATION mi;
- DWORD previous_protection_status;
- //
- // this is an address in our stack space:
- //
- LPBYTE page = (LPBYTE)&page;
- //
- // Get the current memory page in use:
- //
- VirtualQuery(page, &mi, sizeof(mi));
- //
- // Go to the page one below this:
- //
- page = (LPBYTE)(mi.BaseAddress)-si.dwPageSize;
- //
- // Free and protect everything from the start of the
- // allocation range, to the end of the page below the
- // one in use:
- //
- if (!VirtualFree(mi.AllocationBase, (LPBYTE)page - (LPBYTE)mi.AllocationBase, MEM_DECOMMIT)
- || !VirtualProtect(page, si.dwPageSize, PAGE_GUARD | PAGE_READWRITE, &previous_protection_status))
- {
- throw std::bad_exception();
- }
-#endif
-}
-#endif
-
-#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_REGEX_V3)
-
-#if BOOST_REGEX_MAX_CACHE_BLOCKS == 0
-
-BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block()
-{
- return ::operator new(BOOST_REGEX_BLOCKSIZE);
-}
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void* p)
-{
- ::operator delete(p);
-}
-
-#else
-
-#ifdef BOOST_HAS_THREADS
-mem_block_cache block_cache = { 0, 0, BOOST_STATIC_MUTEX_INIT, };
-#else
-mem_block_cache block_cache = { 0, 0, };
-#endif
-
-BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block()
-{
- return block_cache.get();
-}
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void* p)
-{
- block_cache.put(p);
-}
-
-#endif
-
-#endif
-
-} // namespace re_detail
-
-
-
-} // namespace cutl_details_boost
-
-#if defined(BOOST_RE_USE_VCL) && defined(BOOST_REGEX_DYN_LINK)
-
-int WINAPI DllEntryPoint(HINSTANCE , unsigned long , void*)
-{
- return 1;
-}
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/src/regex_debug.cxx b/libcutl/cutl/details/boost/regex/src/regex_debug.cxx
deleted file mode 100644
index 4b70ec5..0000000
--- a/libcutl/cutl/details/boost/regex/src/regex_debug.cxx
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: regex_debug.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Misc. debugging helpers.
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/regex/config.hpp>
-
-
-//
-// regex configuration information: this prints out the settings used
-// when the library was built - include in debugging builds only:
-//
-#ifdef BOOST_REGEX_CONFIG_INFO
-
-#define print_macro regex_lib_print_macro
-#define print_expression regex_lib_print_expression
-#define print_byte_order regex_lib_print_byte_order
-#define print_sign regex_lib_print_sign
-#define print_compiler_macros regex_lib_print_compiler_macros
-#define print_stdlib_macros regex_lib_print_stdlib_macros
-#define print_platform_macros regex_lib_print_platform_macros
-#define print_boost_macros regex_lib_print_boost_macros
-#define print_separator regex_lib_print_separator
-#define OLD_MAIN regex_lib_main
-#define NEW_MAIN regex_lib_main2
-#define NO_RECURSE
-
-#include <libs/regex/test/config_info/regex_config_info.cpp>
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info()
-{
- std::cout << "\n\n";
- print_separator();
- std::cout << "Regex library build configuration:\n\n";
- regex_lib_main2();
-}
-
-#endif
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/src/regex_raw_buffer.cxx b/libcutl/cutl/details/boost/regex/src/regex_raw_buffer.cxx
deleted file mode 100644
index 7b06725..0000000
--- a/libcutl/cutl/details/boost/regex/src/regex_raw_buffer.cxx
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_raw_buffer.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Member functions for class raw_storage.
- */
-
-
-#define BOOST_REGEX_SOURCE
-#include <cutl/details/boost/config.hpp>
-#include <memory>
-#include <cstring>
-#include <cutl/details/boost/assert.hpp>
-#include <cutl/details/boost/regex/v4/regex_raw_buffer.hpp>
-
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::memcpy;
- using ::memmove;
-}
-#endif
-
-
-namespace cutl_details_boost{ namespace re_detail{
-
-void BOOST_REGEX_CALL raw_storage::resize(size_type n)
-{
- register size_type newsize = start ? last - start : 1024;
- while(newsize < n)
- newsize *= 2;
- register size_type datasize = end - start;
- // extend newsize to WORD/DWORD boundary:
- newsize = (newsize + padding_mask) & ~(padding_mask);
-
- // allocate and copy data:
- register pointer ptr = static_cast<pointer>(::operator new(newsize));
- BOOST_REGEX_NOEH_ASSERT(ptr)
- if(start)
- std::memcpy(ptr, start, datasize);
-
- // get rid of old buffer:
- ::operator delete(start);
-
- // and set up pointers:
- start = ptr;
- end = ptr + datasize;
- last = ptr + newsize;
-}
-
-void* BOOST_REGEX_CALL raw_storage::insert(size_type pos, size_type n)
-{
- BOOST_ASSERT(pos <= size_type(end - start));
- if(size_type(last - end) < n)
- resize(n + (end - start));
- register void* result = start + pos;
- std::memmove(start + pos + n, start + pos, (end - start) - pos);
- end += n;
- return result;
-}
-
-}} // namespaces
diff --git a/libcutl/cutl/details/boost/regex/src/regex_traits_defaults.cxx b/libcutl/cutl/details/boost/regex/src/regex_traits_defaults.cxx
deleted file mode 100644
index fe34bb2..0000000
--- a/libcutl/cutl/details/boost/regex/src/regex_traits_defaults.cxx
+++ /dev/null
@@ -1,692 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_traits_defaults.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares API's for access to regex_traits default properties.
- */
-
-#define BOOST_REGEX_SOURCE
-#include <cutl/details/boost/regex/regex_traits.hpp>
-
-#include <cctype>
-#ifndef BOOST_NO_WREGEX
-#include <cwctype>
-#endif
-
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::tolower;
- using ::toupper;
-#ifndef BOOST_NO_WREGEX
- using ::towlower;
- using ::towupper;
-#endif
-}
-#endif
-
-
-namespace cutl_details_boost{ namespace re_detail{
-
-BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n)
-{
- // if the user hasn't supplied a message catalog, then this supplies
- // default "messages" for us to load in the range 1-100.
- const char* messages[] = {
- "",
- "(",
- ")",
- "$",
- "^",
- ".",
- "*",
- "+",
- "?",
- "[",
- "]",
- "|",
- "\\",
- "#",
- "-",
- "{",
- "}",
- "0123456789",
- "b",
- "B",
- "<",
- ">",
- "",
- "",
- "A`",
- "z'",
- "\n",
- ",",
- "a",
- "f",
- "n",
- "r",
- "t",
- "v",
- "x",
- "c",
- ":",
- "=",
- "e",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "E",
- "Q",
- "X",
- "C",
- "Z",
- "G",
- "!",
- "p",
- "P",
- "N",
- "gk",
- "K",
- "R",
- };
-
- return ((n >= (sizeof(messages) / sizeof(messages[1]))) ? "" : messages[n]);
-}
-
-BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n)
-{
- static const char* const s_default_error_messages[] = {
- "Success", /* REG_NOERROR 0 error_ok */
- "No match", /* REG_NOMATCH 1 error_no_match */
- "Invalid regular expression.", /* REG_BADPAT 2 error_bad_pattern */
- "Invalid collation character.", /* REG_ECOLLATE 3 error_collate */
- "Invalid character class name, collating name, or character range.", /* REG_ECTYPE 4 error_ctype */
- "Invalid or unterminated escape sequence.", /* REG_EESCAPE 5 error_escape */
- "Invalid back reference: specified capturing group does not exist.", /* REG_ESUBREG 6 error_backref */
- "Unmatched [ or [^ in character class declaration.", /* REG_EBRACK 7 error_brack */
- "Unmatched marking parenthesis ( or \\(.", /* REG_EPAREN 8 error_paren */
- "Unmatched quantified repeat operator { or \\{.", /* REG_EBRACE 9 error_brace */
- "Invalid content of repeat range.", /* REG_BADBR 10 error_badbrace */
- "Invalid range end in character class", /* REG_ERANGE 11 error_range */
- "Out of memory.", /* REG_ESPACE 12 error_space NOT USED */
- "Invalid preceding regular expression prior to repetition operator.", /* REG_BADRPT 13 error_badrepeat */
- "Premature end of regular expression", /* REG_EEND 14 error_end NOT USED */
- "Regular expression is too large.", /* REG_ESIZE 15 error_size NOT USED */
- "Unmatched ) or \\)", /* REG_ERPAREN 16 error_right_paren NOT USED */
- "Empty regular expression.", /* REG_EMPTY 17 error_empty */
- "The complexity of matching the regular expression exceeded predefined bounds. "
- "Try refactoring the regular expression to make each choice made by the state machine unambiguous. "
- "This exception is thrown to prevent \"eternal\" matches that take an "
- "indefinite period time to locate.", /* REG_ECOMPLEXITY 18 error_complexity */
- "Ran out of stack space trying to match the regular expression.", /* REG_ESTACK 19 error_stack */
- "Invalid or unterminated Perl (?...) sequence.", /* REG_E_PERL 20 error_perl */
- "Unknown error.", /* REG_E_UNKNOWN 21 error_unknown */
- };
-
- return (n > ::cutl_details_boost::regex_constants::error_unknown) ? s_default_error_messages[ ::cutl_details_boost::regex_constants::error_unknown] : s_default_error_messages[n];
-}
-
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(cutl_details_boost::uint_least16_t c)
-{
- const cutl_details_boost::uint_least16_t combining_ranges[] = { 0x0300, 0x0361,
- 0x0483, 0x0486,
- 0x0903, 0x0903,
- 0x093E, 0x0940,
- 0x0949, 0x094C,
- 0x0982, 0x0983,
- 0x09BE, 0x09C0,
- 0x09C7, 0x09CC,
- 0x09D7, 0x09D7,
- 0x0A3E, 0x0A40,
- 0x0A83, 0x0A83,
- 0x0ABE, 0x0AC0,
- 0x0AC9, 0x0ACC,
- 0x0B02, 0x0B03,
- 0x0B3E, 0x0B3E,
- 0x0B40, 0x0B40,
- 0x0B47, 0x0B4C,
- 0x0B57, 0x0B57,
- 0x0B83, 0x0B83,
- 0x0BBE, 0x0BBF,
- 0x0BC1, 0x0BCC,
- 0x0BD7, 0x0BD7,
- 0x0C01, 0x0C03,
- 0x0C41, 0x0C44,
- 0x0C82, 0x0C83,
- 0x0CBE, 0x0CBE,
- 0x0CC0, 0x0CC4,
- 0x0CC7, 0x0CCB,
- 0x0CD5, 0x0CD6,
- 0x0D02, 0x0D03,
- 0x0D3E, 0x0D40,
- 0x0D46, 0x0D4C,
- 0x0D57, 0x0D57,
- 0x0F7F, 0x0F7F,
- 0x20D0, 0x20E1,
- 0x3099, 0x309A,
- 0xFE20, 0xFE23,
- 0xffff, 0xffff, };
-
- const cutl_details_boost::uint_least16_t* p = combining_ranges + 1;
- while(*p < c) p += 2;
- --p;
- if((c >= *p) && (c <= *(p+1)))
- return true;
- return false;
-}
-
-//
-// these are the POSIX collating names:
-//
-BOOST_REGEX_DECL const char* def_coll_names[] = {
-"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "alert", "backspace", "tab", "newline",
-"vertical-tab", "form-feed", "carriage-return", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK",
-"SYN", "ETB", "CAN", "EM", "SUB", "ESC", "IS4", "IS3", "IS2", "IS1", "space", "exclamation-mark",
-"quotation-mark", "number-sign", "dollar-sign", "percent-sign", "ampersand", "apostrophe",
-"left-parenthesis", "right-parenthesis", "asterisk", "plus-sign", "comma", "hyphen",
-"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
-"colon", "semicolon", "less-than-sign", "equals-sign", "greater-than-sign",
-"question-mark", "commercial-at", "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", "left-square-bracket", "backslash",
-"right-square-bracket", "circumflex", "underscore", "grave-accent", "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", "left-curly-bracket",
-"vertical-line", "right-curly-bracket", "tilde", "DEL", "",
-};
-
-// these multi-character collating elements
-// should keep most Western-European locales
-// happy - we should really localise these a
-// little more - but this will have to do for
-// now:
-
-BOOST_REGEX_DECL const char* def_multi_coll[] = {
- "ae",
- "Ae",
- "AE",
- "ch",
- "Ch",
- "CH",
- "ll",
- "Ll",
- "LL",
- "ss",
- "Ss",
- "SS",
- "nj",
- "Nj",
- "NJ",
- "dz",
- "Dz",
- "DZ",
- "lj",
- "Lj",
- "LJ",
- "",
-};
-
-
-
-BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name)
-{
- unsigned int i = 0;
- while(*def_coll_names[i])
- {
- if(def_coll_names[i] == name)
- {
- return std::string(1, char(i));
- }
- ++i;
- }
- i = 0;
- while(*def_multi_coll[i])
- {
- if(def_multi_coll[i] == name)
- {
- return def_multi_coll[i];
- }
- ++i;
- }
- return std::string();
-}
-
-BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c)
-{
- return static_cast<char>((std::tolower)((unsigned char)c));
-}
-
-BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c)
-{
- return static_cast<char>((std::toupper)((unsigned char)c));
-}
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c)
-{
- return (std::towlower)(c);
-}
-
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c)
-{
- return (std::towupper)(c);
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c)
-{
- return (std::towlower)(c);
-}
-
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c)
-{
- return (std::towupper)(c);
-}
-#endif
-
-#endif
-
-BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c)
-{
- //
- // char_syntax determines how the compiler treats a given character
- // in a regular expression.
- //
- static regex_constants::escape_syntax_type char_syntax[] = {
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /* */ // 32
- regex_constants::escape_type_identity, /*!*/
- regex_constants::escape_type_identity, /*"*/
- regex_constants::escape_type_identity, /*#*/
- regex_constants::escape_type_identity, /*$*/
- regex_constants::escape_type_identity, /*%*/
- regex_constants::escape_type_identity, /*&*/
- regex_constants::escape_type_end_buffer, /*'*/
- regex_constants::syntax_open_mark, /*(*/
- regex_constants::syntax_close_mark, /*)*/
- regex_constants::escape_type_identity, /***/
- regex_constants::syntax_plus, /*+*/
- regex_constants::escape_type_identity, /*,*/
- regex_constants::escape_type_identity, /*-*/
- regex_constants::escape_type_identity, /*.*/
- regex_constants::escape_type_identity, /*/*/
- regex_constants::escape_type_decimal, /*0*/
- regex_constants::escape_type_backref, /*1*/
- regex_constants::escape_type_backref, /*2*/
- regex_constants::escape_type_backref, /*3*/
- regex_constants::escape_type_backref, /*4*/
- regex_constants::escape_type_backref, /*5*/
- regex_constants::escape_type_backref, /*6*/
- regex_constants::escape_type_backref, /*7*/
- regex_constants::escape_type_backref, /*8*/
- regex_constants::escape_type_backref, /*9*/
- regex_constants::escape_type_identity, /*:*/
- regex_constants::escape_type_identity, /*;*/
- regex_constants::escape_type_left_word, /*<*/
- regex_constants::escape_type_identity, /*=*/
- regex_constants::escape_type_right_word, /*>*/
- regex_constants::syntax_question, /*?*/
- regex_constants::escape_type_identity, /*@*/
- regex_constants::escape_type_start_buffer, /*A*/
- regex_constants::escape_type_not_word_assert, /*B*/
- regex_constants::escape_type_C, /*C*/
- regex_constants::escape_type_not_class, /*D*/
- regex_constants::escape_type_E, /*E*/
- regex_constants::escape_type_not_class, /*F*/
- regex_constants::escape_type_G, /*G*/
- regex_constants::escape_type_not_class, /*H*/
- regex_constants::escape_type_not_class, /*I*/
- regex_constants::escape_type_not_class, /*J*/
- regex_constants::escape_type_reset_start_mark, /*K*/
- regex_constants::escape_type_not_class, /*L*/
- regex_constants::escape_type_not_class, /*M*/
- regex_constants::escape_type_named_char, /*N*/
- regex_constants::escape_type_not_class, /*O*/
- regex_constants::escape_type_not_property, /*P*/
- regex_constants::escape_type_Q, /*Q*/
- regex_constants::escape_type_line_ending, /*R*/
- regex_constants::escape_type_not_class, /*S*/
- regex_constants::escape_type_not_class, /*T*/
- regex_constants::escape_type_not_class, /*U*/
- regex_constants::escape_type_not_class, /*V*/
- regex_constants::escape_type_not_class, /*W*/
- regex_constants::escape_type_X, /*X*/
- regex_constants::escape_type_not_class, /*Y*/
- regex_constants::escape_type_Z, /*Z*/
- regex_constants::escape_type_identity, /*[*/
- regex_constants::escape_type_identity, /*\*/
- regex_constants::escape_type_identity, /*]*/
- regex_constants::escape_type_identity, /*^*/
- regex_constants::escape_type_identity, /*_*/
- regex_constants::escape_type_start_buffer, /*`*/
- regex_constants::escape_type_control_a, /*a*/
- regex_constants::escape_type_word_assert, /*b*/
- regex_constants::escape_type_ascii_control, /*c*/
- regex_constants::escape_type_class, /*d*/
- regex_constants::escape_type_e, /*e*/
- regex_constants::escape_type_control_f, /*f*/
- regex_constants::escape_type_extended_backref, /*g*/
- regex_constants::escape_type_class, /*h*/
- regex_constants::escape_type_class, /*i*/
- regex_constants::escape_type_class, /*j*/
- regex_constants::escape_type_extended_backref, /*k*/
- regex_constants::escape_type_class, /*l*/
- regex_constants::escape_type_class, /*m*/
- regex_constants::escape_type_control_n, /*n*/
- regex_constants::escape_type_class, /*o*/
- regex_constants::escape_type_property, /*p*/
- regex_constants::escape_type_class, /*q*/
- regex_constants::escape_type_control_r, /*r*/
- regex_constants::escape_type_class, /*s*/
- regex_constants::escape_type_control_t, /*t*/
- regex_constants::escape_type_class, /*u*/
- regex_constants::escape_type_control_v, /*v*/
- regex_constants::escape_type_class, /*w*/
- regex_constants::escape_type_hex, /*x*/
- regex_constants::escape_type_class, /*y*/
- regex_constants::escape_type_end_buffer, /*z*/
- regex_constants::syntax_open_brace, /*{*/
- regex_constants::syntax_or, /*|*/
- regex_constants::syntax_close_brace, /*}*/
- regex_constants::escape_type_identity, /*~*/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- };
-
- return char_syntax[(unsigned char)c];
-}
-
-BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c)
-{
- //
- // char_syntax determines how the compiler treats a given character
- // in a regular expression.
- //
- static regex_constants::syntax_type char_syntax[] = {
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_newline, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /* */ // 32
- regex_constants::syntax_not, /*!*/
- regex_constants::syntax_char, /*"*/
- regex_constants::syntax_hash, /*#*/
- regex_constants::syntax_dollar, /*$*/
- regex_constants::syntax_char, /*%*/
- regex_constants::syntax_char, /*&*/
- regex_constants::escape_type_end_buffer, /*'*/
- regex_constants::syntax_open_mark, /*(*/
- regex_constants::syntax_close_mark, /*)*/
- regex_constants::syntax_star, /***/
- regex_constants::syntax_plus, /*+*/
- regex_constants::syntax_comma, /*,*/
- regex_constants::syntax_dash, /*-*/
- regex_constants::syntax_dot, /*.*/
- regex_constants::syntax_char, /*/*/
- regex_constants::syntax_digit, /*0*/
- regex_constants::syntax_digit, /*1*/
- regex_constants::syntax_digit, /*2*/
- regex_constants::syntax_digit, /*3*/
- regex_constants::syntax_digit, /*4*/
- regex_constants::syntax_digit, /*5*/
- regex_constants::syntax_digit, /*6*/
- regex_constants::syntax_digit, /*7*/
- regex_constants::syntax_digit, /*8*/
- regex_constants::syntax_digit, /*9*/
- regex_constants::syntax_colon, /*:*/
- regex_constants::syntax_char, /*;*/
- regex_constants::escape_type_left_word, /*<*/
- regex_constants::syntax_equal, /*=*/
- regex_constants::escape_type_right_word, /*>*/
- regex_constants::syntax_question, /*?*/
- regex_constants::syntax_char, /*@*/
- regex_constants::syntax_char, /*A*/
- regex_constants::syntax_char, /*B*/
- regex_constants::syntax_char, /*C*/
- regex_constants::syntax_char, /*D*/
- regex_constants::syntax_char, /*E*/
- regex_constants::syntax_char, /*F*/
- regex_constants::syntax_char, /*G*/
- regex_constants::syntax_char, /*H*/
- regex_constants::syntax_char, /*I*/
- regex_constants::syntax_char, /*J*/
- regex_constants::syntax_char, /*K*/
- regex_constants::syntax_char, /*L*/
- regex_constants::syntax_char, /*M*/
- regex_constants::syntax_char, /*N*/
- regex_constants::syntax_char, /*O*/
- regex_constants::syntax_char, /*P*/
- regex_constants::syntax_char, /*Q*/
- regex_constants::syntax_char, /*R*/
- regex_constants::syntax_char, /*S*/
- regex_constants::syntax_char, /*T*/
- regex_constants::syntax_char, /*U*/
- regex_constants::syntax_char, /*V*/
- regex_constants::syntax_char, /*W*/
- regex_constants::syntax_char, /*X*/
- regex_constants::syntax_char, /*Y*/
- regex_constants::syntax_char, /*Z*/
- regex_constants::syntax_open_set, /*[*/
- regex_constants::syntax_escape, /*\*/
- regex_constants::syntax_close_set, /*]*/
- regex_constants::syntax_caret, /*^*/
- regex_constants::syntax_char, /*_*/
- regex_constants::syntax_char, /*`*/
- regex_constants::syntax_char, /*a*/
- regex_constants::syntax_char, /*b*/
- regex_constants::syntax_char, /*c*/
- regex_constants::syntax_char, /*d*/
- regex_constants::syntax_char, /*e*/
- regex_constants::syntax_char, /*f*/
- regex_constants::syntax_char, /*g*/
- regex_constants::syntax_char, /*h*/
- regex_constants::syntax_char, /*i*/
- regex_constants::syntax_char, /*j*/
- regex_constants::syntax_char, /*k*/
- regex_constants::syntax_char, /*l*/
- regex_constants::syntax_char, /*m*/
- regex_constants::syntax_char, /*n*/
- regex_constants::syntax_char, /*o*/
- regex_constants::syntax_char, /*p*/
- regex_constants::syntax_char, /*q*/
- regex_constants::syntax_char, /*r*/
- regex_constants::syntax_char, /*s*/
- regex_constants::syntax_char, /*t*/
- regex_constants::syntax_char, /*u*/
- regex_constants::syntax_char, /*v*/
- regex_constants::syntax_char, /*w*/
- regex_constants::syntax_char, /*x*/
- regex_constants::syntax_char, /*y*/
- regex_constants::syntax_char, /*z*/
- regex_constants::syntax_open_brace, /*{*/
- regex_constants::syntax_or, /*|*/
- regex_constants::syntax_close_brace, /*}*/
- regex_constants::syntax_char, /*~*/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- };
-
- return char_syntax[(unsigned char)c];
-}
-
-
-} // re_detail
-} // boost
diff --git a/libcutl/cutl/details/boost/regex/src/static_mutex.cxx b/libcutl/cutl/details/boost/regex/src/static_mutex.cxx
deleted file mode 100644
index 4d51551..0000000
--- a/libcutl/cutl/details/boost/regex/src/static_mutex.cxx
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE static_mutex.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares static_mutex lock type.
- */
-
-#define BOOST_REGEX_SOURCE
-#include <cutl/details/boost/config.hpp>
-
-#ifdef BOOST_HAS_THREADS
-
-#include <cutl/details/boost/regex/pending/static_mutex.hpp>
-
-#if defined(BOOST_HAS_WINTHREADS)
-#ifndef NOMINMAX
-# define NOMINMAX
-#endif
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <cutl/details/boost/static_assert.hpp>
-#endif
-
-
-namespace cutl_details_boost{
-
-#if defined(BOOST_HAS_PTHREADS) && defined(PTHREAD_MUTEX_INITIALIZER)
-
-scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& m, bool lk)
-: m_mutex(m), m_have_lock(false)
-{
- if(lk)
- lock();
-}
-
-scoped_static_mutex_lock::~scoped_static_mutex_lock()
-{
- if(m_have_lock)
- unlock();
-}
-
-void scoped_static_mutex_lock::lock()
-{
- if(0 == m_have_lock)
- {
- pthread_mutex_lock(&(m_mutex.m_mutex));
- m_have_lock = true;
- }
-}
-
-void scoped_static_mutex_lock::unlock()
-{
- if(m_have_lock)
- {
- pthread_mutex_unlock(&(m_mutex.m_mutex));
- m_have_lock = false;
- }
-}
-
-#elif defined(BOOST_HAS_WINTHREADS)
-
-BOOST_STATIC_ASSERT(sizeof(LONG) == sizeof(cutl_details_boost::int32_t));
-
-scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& m, bool lk)
-: m_mutex(m), m_have_lock(false)
-{
- if(lk)
- lock();
-}
-
-scoped_static_mutex_lock::~scoped_static_mutex_lock()
-{
- if(m_have_lock)
- unlock();
-}
-
-void scoped_static_mutex_lock::lock()
-{
- if(0 == m_have_lock)
- {
-#if !defined(InterlockedCompareExchangePointer)
- while(0 != InterlockedCompareExchange(reinterpret_cast<void**>((cutl_details_boost::uint_least16_t*)&(m_mutex.m_mutex)), (void*)1, 0))
-#else
- while(0 != InterlockedCompareExchange(reinterpret_cast<LONG*>(&(m_mutex.m_mutex)), 1, 0))
-#endif
- {
- Sleep(0);
- }
- m_have_lock = true;
- }
-}
-
-void scoped_static_mutex_lock::unlock()
-{
- if(m_have_lock)
- {
-#if !defined(InterlockedCompareExchangePointer)
- InterlockedExchange((LONG*)&(m_mutex.m_mutex), 0);
-#else
- InterlockedExchange(reinterpret_cast<LONG*>(&(m_mutex.m_mutex)), 0);
-#endif
- m_have_lock = false;
- }
-}
-
-#else
-//
-// Portable version of a static mutex based on Boost.Thread library:
-//
-#include <stdlib.h>
-#include <cutl/details/boost/assert.hpp>
-
-cutl_details_boost::recursive_mutex* static_mutex::m_pmutex = 0;
-cutl_details_boost::once_flag static_mutex::m_once = BOOST_ONCE_INIT;
-
-extern "C" BOOST_REGEX_DECL void cutl_details_boost_regex_free_static_mutex()
-{
- delete static_mutex::m_pmutex;
- static_mutex::m_pmutex = 0;
-}
-
-void static_mutex::init()
-{
- m_pmutex = new cutl_details_boost::recursive_mutex();
- int r = atexit(cutl_details_boost_regex_free_static_mutex);
- BOOST_ASSERT(0 == r);
-}
-
-scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& , bool lk)
-: m_plock(0), m_have_lock(false)
-{
- if(lk)
- lock();
-}
-
-scoped_static_mutex_lock::~scoped_static_mutex_lock()
-{
- if(m_have_lock)
- unlock();
- delete m_plock;
-}
-
-void scoped_static_mutex_lock::lock()
-{
- if(0 == m_have_lock)
- {
- cutl_details_boost::call_once(static_mutex::m_once,&static_mutex::init);
- if(0 == m_plock)
- m_plock = new cutl_details_boost::recursive_mutex::scoped_lock(*static_mutex::m_pmutex, cutl_details_boost::defer_lock);
- m_plock->lock();
- m_have_lock = true;
- }
-}
-
-void scoped_static_mutex_lock::unlock()
-{
- if(m_have_lock)
- {
- m_plock->unlock();
- m_have_lock = false;
- }
-}
-
-#endif
-
-}
-
-#endif // BOOST_HAS_THREADS
diff --git a/libcutl/cutl/details/boost/regex/src/usinstances.cxx b/libcutl/cutl/details/boost/regex/src/usinstances.cxx
deleted file mode 100644
index ad4c2b8..0000000
--- a/libcutl/cutl/details/boost/regex/src/usinstances.cxx
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: winstances.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: regex unsigned short template instances (MSVC only).
- */
-
-#define BOOST_REGEX_SOURCE
-#ifdef _MSC_VER
-#pragma warning(disable:4506) // 'no definition for inline function'
-#endif
-
-#include <cutl/details/boost/detail/workaround.hpp>
-#include <memory>
-#include <string>
-
-#if defined(_DLL_CPPLIB) && !defined(_M_CEE_PURE) && defined(_NATIVE_WCHAR_T_DEFINED) \
- && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))\
- && BOOST_WORKAROUND(BOOST_MSVC, <1600)
-//
-// This is a horrible workaround, but without declaring these symbols extern we get
-// duplicate symbol errors when linking if the application is built without
-// /Zc:wchar_t
-//
-#ifdef _CRTIMP2_PURE
-# define BOOST_REGEX_STDLIB_DECL _CRTIMP2_PURE
-#else
-# define BOOST_REGEX_STDLIB_DECL _CRTIMP2
-#endif
-
-namespace std{
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-template class BOOST_REGEX_STDLIB_DECL allocator<unsigned short>;
-template class BOOST_REGEX_STDLIB_DECL _String_val<unsigned short, allocator<unsigned short> >;
-template class BOOST_REGEX_STDLIB_DECL basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >;
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400))
-template<> BOOST_REGEX_STDLIB_DECL std::size_t __cdecl char_traits<unsigned short>::length(unsigned short const*);
-#endif
-
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const unsigned short *,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const unsigned short *);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator<(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator>(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-}
-#endif
-
-#include <cutl/details/boost/regex/config.hpp>
-
-#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
-#define BOOST_REGEX_US_INSTANTIATE
-
-#include <cutl/details/boost/regex.hpp>
-
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/regex/src/w32_regex_traits.cxx b/libcutl/cutl/details/boost/regex/src/w32_regex_traits.cxx
deleted file mode 100644
index c9d29e8..0000000
--- a/libcutl/cutl/details/boost/regex/src/w32_regex_traits.cxx
+++ /dev/null
@@ -1,652 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE w32_regex_traits.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Implements w32_regex_traits<char> (and associated helper classes).
- */
-
-#define BOOST_REGEX_SOURCE
-#include <cutl/details/boost/regex/config.hpp>
-
-#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
-#include <cutl/details/boost/regex/regex_traits.hpp>
-#include <cutl/details/boost/regex/pattern_except.hpp>
-
-#define WIN32_LEAN_AND_MEAN
-#ifndef NOMINMAX
-# define NOMINMAX
-#endif
-#define NOGDI
-#include <windows.h>
-
-#if defined(_MSC_VER) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
-#pragma comment(lib, "user32.lib")
-#endif
-
-#ifdef BOOST_NO_STDC_NAMESPACE
-namespace std{
- using ::memset;
-}
-#endif
-
-namespace cutl_details_boost{ namespace re_detail{
-
-#ifdef BOOST_NO_ANSI_APIS
-UINT get_code_page_for_locale_id(lcid_type idx)
-{
- WCHAR code_page_string[7];
- if (::GetLocaleInfoW(idx, LOCALE_IDEFAULTANSICODEPAGE, code_page_string, 7) == 0)
- return 0;
-
- return static_cast<UINT>(_wtol(code_page_string));
-}
-#endif
-
-
-void w32_regex_traits_char_layer<char>::init()
-{
- // we need to start by initialising our syntax map so we know which
- // character is used for which purpose:
- std::memset(m_char_map, 0, sizeof(m_char_map));
- cat_type cat;
- std::string cat_name(w32_regex_traits<char>::get_catalog_name());
- if(cat_name.size())
- {
- cat = ::cutl_details_boost::re_detail::w32_cat_open(cat_name);
- if(!cat)
- {
- std::string m("Unable to open message catalog: ");
- std::runtime_error err(m + cat_name);
- ::cutl_details_boost::re_detail::raise_runtime_error(err);
- }
- }
- //
- // if we have a valid catalog then load our messages:
- //
- if(cat)
- {
- for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
- {
- string_type mss = ::cutl_details_boost::re_detail::w32_cat_get(cat, this->m_locale, i, get_default_syntax(i));
- for(string_type::size_type j = 0; j < mss.size(); ++j)
- {
- m_char_map[static_cast<unsigned char>(mss[j])] = i;
- }
- }
- }
- else
- {
- for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
- {
- const char* ptr = get_default_syntax(i);
- while(ptr && *ptr)
- {
- m_char_map[static_cast<unsigned char>(*ptr)] = i;
- ++ptr;
- }
- }
- }
- //
- // finish off by calculating our escape types:
- //
- unsigned char i = 'A';
- do
- {
- if(m_char_map[i] == 0)
- {
- if(::cutl_details_boost::re_detail::w32_is(this->m_locale, 0x0002u, (char)i))
- m_char_map[i] = regex_constants::escape_type_class;
- else if(::cutl_details_boost::re_detail::w32_is(this->m_locale, 0x0001u, (char)i))
- m_char_map[i] = regex_constants::escape_type_not_class;
- }
- }while(0xFF != i++);
-
- //
- // fill in lower case map:
- //
- char char_map[1 << CHAR_BIT];
- for(int ii = 0; ii < (1 << CHAR_BIT); ++ii)
- char_map[ii] = static_cast<char>(ii);
-#ifndef BOOST_NO_ANSI_APIS
- int r = ::LCMapStringA(this->m_locale, LCMAP_LOWERCASE, char_map, 1 << CHAR_BIT, this->m_lower_map, 1 << CHAR_BIT);
- BOOST_ASSERT(r != 0);
-#else
- UINT code_page = get_code_page_for_locale_id(this->m_locale);
- BOOST_ASSERT(code_page != 0);
-
- WCHAR wide_char_map[1 << CHAR_BIT];
- int conv_r = ::MultiByteToWideChar(code_page, 0, char_map, 1 << CHAR_BIT, wide_char_map, 1 << CHAR_BIT);
- BOOST_ASSERT(conv_r != 0);
-
- WCHAR wide_lower_map[1 << CHAR_BIT];
- int r = ::LCMapStringW(this->m_locale, LCMAP_LOWERCASE, wide_char_map, 1 << CHAR_BIT, wide_lower_map, 1 << CHAR_BIT);
- BOOST_ASSERT(r != 0);
-
- conv_r = ::WideCharToMultiByte(code_page, 0, wide_lower_map, r, this->m_lower_map, 1 << CHAR_BIT, NULL, NULL);
- BOOST_ASSERT(conv_r != 0);
-#endif
- if(r < (1 << CHAR_BIT))
- {
- // if we have multibyte characters then not all may have been given
- // a lower case mapping:
- for(int jj = r; jj < (1 << CHAR_BIT); ++jj)
- this->m_lower_map[jj] = static_cast<char>(jj);
- }
-
-#ifndef BOOST_NO_ANSI_APIS
- r = ::GetStringTypeExA(this->m_locale, CT_CTYPE1, char_map, 1 << CHAR_BIT, this->m_type_map);
-#else
- r = ::GetStringTypeExW(this->m_locale, CT_CTYPE1, wide_char_map, 1 << CHAR_BIT, this->m_type_map);
-#endif
- BOOST_ASSERT(0 != r);
-}
-
-BOOST_REGEX_DECL lcid_type BOOST_REGEX_CALL w32_get_default_locale()
-{
- return ::GetUserDefaultLCID();
-}
-
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char c, lcid_type idx)
-{
-#ifndef BOOST_NO_ANSI_APIS
- WORD mask;
- if(::GetStringTypeExA(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
- return true;
- return false;
-#else
- UINT code_page = get_code_page_for_locale_id(idx);
- if (code_page == 0)
- return false;
-
- WCHAR wide_c;
- if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
- return false;
-
- WORD mask;
- if(::GetStringTypeExW(idx, CT_CTYPE1, &wide_c, 1, &mask) && (mask & C1_LOWER))
- return true;
- return false;
-#endif
-}
-
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t c, lcid_type idx)
-{
- WORD mask;
- if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
- return true;
- return false;
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type idx)
-{
- WORD mask;
- wchar_t c = ca;
- if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
- return true;
- return false;
-}
-#endif
-
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char c, lcid_type idx)
-{
-#ifndef BOOST_NO_ANSI_APIS
- WORD mask;
- if(::GetStringTypeExA(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
- return true;
- return false;
-#else
- UINT code_page = get_code_page_for_locale_id(idx);
- if (code_page == 0)
- return false;
-
- WCHAR wide_c;
- if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
- return false;
-
- WORD mask;
- if(::GetStringTypeExW(idx, CT_CTYPE1, &wide_c, 1, &mask) && (mask & C1_UPPER))
- return true;
- return false;
-#endif
-}
-
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t c, lcid_type idx)
-{
- WORD mask;
- if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
- return true;
- return false;
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type idx)
-{
- WORD mask;
- wchar_t c = ca;
- if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
- return true;
- return false;
-}
-#endif
-
-void free_module(void* mod)
-{
- ::FreeLibrary(static_cast<HMODULE>(mod));
-}
-
-BOOST_REGEX_DECL cat_type BOOST_REGEX_CALL w32_cat_open(const std::string& name)
-{
-#ifndef BOOST_NO_ANSI_APIS
- cat_type result(::LoadLibraryA(name.c_str()), &free_module);
- return result;
-#else
- LPWSTR wide_name = (LPWSTR)_alloca( (name.size() + 1) * sizeof(WCHAR) );
- if (::MultiByteToWideChar(CP_ACP, 0, name.c_str(), name.size(), wide_name, name.size() + 1) == 0)
- return cat_type();
-
- cat_type result(::LoadLibraryW(wide_name), &free_module);
- return result;
-#endif
-}
-
-BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::string& def)
-{
-#ifndef BOOST_NO_ANSI_APIS
- char buf[256];
- if(0 == ::LoadStringA(
- static_cast<HMODULE>(cat.get()),
- i,
- buf,
- 256
- ))
- {
- return def;
- }
-#else
- WCHAR wbuf[256];
- int r = ::LoadStringW(
- static_cast<HMODULE>(cat.get()),
- i,
- wbuf,
- 256
- );
- if (r == 0)
- return def;
-
-
- int buf_size = 1 + ::WideCharToMultiByte(CP_ACP, 0, wbuf, r, NULL, 0, NULL, NULL);
- LPSTR buf = (LPSTR)_alloca(buf_size);
- if (::WideCharToMultiByte(CP_ACP, 0, wbuf, r, buf, buf_size, NULL, NULL) == 0)
- return def; // failed conversion.
-#endif
- return std::string(buf);
-}
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::wstring& def)
-{
- wchar_t buf[256];
- if(0 == ::LoadStringW(
- static_cast<HMODULE>(cat.get()),
- i,
- buf,
- 256
- ))
- {
- return def;
- }
- return std::wstring(buf);
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::basic_string<unsigned short>& def)
-{
- unsigned short buf[256];
- if(0 == ::LoadStringW(
- static_cast<HMODULE>(cat.get()),
- i,
- (LPWSTR)buf,
- 256
- ))
- {
- return def;
- }
- return std::basic_string<unsigned short>(buf);
-}
-#endif
-#endif
-BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type idx, const char* p1, const char* p2)
-{
-#ifndef BOOST_NO_ANSI_APIS
- int bytes = ::LCMapStringA(
- idx, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- 0, // destination buffer
- 0 // size of destination buffer
- );
- if(!bytes)
- return std::string(p1, p2);
- std::string result(++bytes, '\0');
- bytes = ::LCMapStringA(
- idx, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- &*result.begin(), // destination buffer
- bytes // size of destination buffer
- );
-#else
- UINT code_page = get_code_page_for_locale_id(idx);
- if(code_page == 0)
- return std::string(p1, p2);
-
- int src_len = static_cast<int>(p2 - p1);
- LPWSTR wide_p1 = (LPWSTR)_alloca( (src_len + 1) * 2 );
- if(::MultiByteToWideChar(code_page, 0, p1, src_len, wide_p1, src_len + 1) == 0)
- return std::string(p1, p2);
-
- int bytes = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- wide_p1, // source string
- src_len, // number of characters in source string
- 0, // destination buffer
- 0 // size of destination buffer
- );
- if(!bytes)
- return std::string(p1, p2);
- std::string result(++bytes, '\0');
- bytes = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- wide_p1, // source string
- src_len, // number of characters in source string
- (LPWSTR)&*result.begin(), // destination buffer
- bytes // size of destination buffer
- );
-#endif
- if(bytes > static_cast<int>(result.size()))
- return std::string(p1, p2);
- while(result.size() && result[result.size()-1] == '\0')
- {
- result.erase(result.size()-1);
- }
- return result;
-}
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type idx, const wchar_t* p1, const wchar_t* p2)
-{
- int bytes = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- 0, // destination buffer
- 0 // size of destination buffer
- );
- if(!bytes)
- return std::wstring(p1, p2);
- std::string result(++bytes, '\0');
- bytes = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- reinterpret_cast<wchar_t*>(&*result.begin()), // destination buffer *of bytes*
- bytes // size of destination buffer
- );
- if(bytes > static_cast<int>(result.size()))
- return std::wstring(p1, p2);
- while(result.size() && result[result.size()-1] == L'\0')
- {
- result.erase(result.size()-1);
- }
- std::wstring r2;
- for(std::string::size_type i = 0; i < result.size(); ++i)
- r2.append(1, static_cast<wchar_t>(static_cast<unsigned char>(result[i])));
- return r2;
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transform(lcid_type idx, const unsigned short* p1, const unsigned short* p2)
-{
- int bytes = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- (LPCWSTR)p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- 0, // destination buffer
- 0 // size of destination buffer
- );
- if(!bytes)
- return std::basic_string<unsigned short>(p1, p2);
- std::string result(++bytes, '\0');
- bytes = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- (LPCWSTR)p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- reinterpret_cast<wchar_t*>(&*result.begin()), // destination buffer *of bytes*
- bytes // size of destination buffer
- );
- if(bytes > static_cast<int>(result.size()))
- return std::basic_string<unsigned short>(p1, p2);
- while(result.size() && result[result.size()-1] == L'\0')
- {
- result.erase(result.size()-1);
- }
- std::basic_string<unsigned short> r2;
- for(std::string::size_type i = 0; i < result.size(); ++i)
- r2.append(1, static_cast<unsigned short>(static_cast<unsigned char>(result[i])));
- return r2;
-}
-#endif
-#endif
-BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type idx)
-{
- char result[2];
-#ifndef BOOST_NO_ANSI_APIS
- int b = ::LCMapStringA(
- idx, // locale identifier
- LCMAP_LOWERCASE, // mapping transformation type
- &c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
-#else
- UINT code_page = get_code_page_for_locale_id(idx);
- if (code_page == 0)
- return c;
-
- WCHAR wide_c;
- if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
- return c;
-
- WCHAR wide_result;
- int b = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_LOWERCASE, // mapping transformation type
- &wide_c, // source string
- 1, // number of characters in source string
- &wide_result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
-
- if (::WideCharToMultiByte(code_page, 0, &wide_result, 1, result, 2, NULL, NULL) == 0)
- return c; // No single byte lower case equivalent available
-#endif
- return result[0];
-}
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type idx)
-{
- wchar_t result[2];
- int b = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_LOWERCASE, // mapping transformation type
- &c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
- return result[0];
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type idx)
-{
- wchar_t result[2];
- int b = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_LOWERCASE, // mapping transformation type
- (wchar_t const*)&c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
- return result[0];
-}
-#endif
-#endif
-BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type idx)
-{
- char result[2];
-#ifndef BOOST_NO_ANSI_APIS
- int b = ::LCMapStringA(
- idx, // locale identifier
- LCMAP_UPPERCASE, // mapping transformation type
- &c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
-#else
- UINT code_page = get_code_page_for_locale_id(idx);
- if(code_page == 0)
- return c;
-
- WCHAR wide_c;
- if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
- return c;
-
- WCHAR wide_result;
- int b = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_UPPERCASE, // mapping transformation type
- &wide_c, // source string
- 1, // number of characters in source string
- &wide_result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
-
- if (::WideCharToMultiByte(code_page, 0, &wide_result, 1, result, 2, NULL, NULL) == 0)
- return c; // No single byte upper case equivalent available.
-#endif
- return result[0];
-}
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type idx)
-{
- wchar_t result[2];
- int b = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_UPPERCASE, // mapping transformation type
- &c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
- return result[0];
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_toupper(unsigned short c, lcid_type idx)
-{
- wchar_t result[2];
- int b = ::LCMapStringW(
- idx, // locale identifier
- LCMAP_UPPERCASE, // mapping transformation type
- (wchar_t const*)&c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
- return result[0];
-}
-#endif
-#endif
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type idx, cutl_details_boost::uint32_t m, char c)
-{
- WORD mask;
-#ifndef BOOST_NO_ANSI_APIS
- if(::GetStringTypeExA(idx, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation<char>::mask_base))
- return true;
-#else
- UINT code_page = get_code_page_for_locale_id(idx);
- if(code_page == 0)
- return false;
-
- WCHAR wide_c;
- if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
- return false;
-
- if(::GetStringTypeExW(idx, CT_CTYPE1, &wide_c, 1, &mask) && (mask & m & w32_regex_traits_implementation<char>::mask_base))
- return true;
-#endif
- if((m & w32_regex_traits_implementation<char>::mask_word) && (c == '_'))
- return true;
- return false;
-}
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type idx, cutl_details_boost::uint32_t m, wchar_t c)
-{
- WORD mask;
- if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation<wchar_t>::mask_base))
- return true;
- if((m & w32_regex_traits_implementation<wchar_t>::mask_word) && (c == '_'))
- return true;
- if((m & w32_regex_traits_implementation<wchar_t>::mask_unicode) && (c > 0xff))
- return true;
- return false;
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type idx, cutl_details_boost::uint32_t m, unsigned short c)
-{
- WORD mask;
- if(::GetStringTypeExW(idx, CT_CTYPE1, (wchar_t const*)&c, 1, &mask) && (mask & m & w32_regex_traits_implementation<wchar_t>::mask_base))
- return true;
- if((m & w32_regex_traits_implementation<wchar_t>::mask_word) && (c == '_'))
- return true;
- if((m & w32_regex_traits_implementation<wchar_t>::mask_unicode) && (c > 0xff))
- return true;
- return false;
-}
-#endif
-#endif
-
-} // re_detail
-} // boost
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/src/wc_regex_traits.cxx b/libcutl/cutl/details/boost/regex/src/wc_regex_traits.cxx
deleted file mode 100644
index 29d3bd1..0000000
--- a/libcutl/cutl/details/boost/regex/src/wc_regex_traits.cxx
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: wc_regex_traits.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Implements out of line members for c_regex_traits<wchar_t>
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/detail/workaround.hpp>
-#include <memory>
-#include <string>
-#include "internals.hpp"
-
-#if defined(_DLL_CPPLIB) && !defined(_M_CEE_PURE) && defined(_NATIVE_WCHAR_T_DEFINED) \
- && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))\
- && BOOST_WORKAROUND(BOOST_MSVC, <1600)
-//
-// This is a horrible workaround, but without declaring these symbols extern we get
-// duplicate symbol errors when linking if the application is built without
-// /Zc:wchar_t
-//
-#ifdef _CRTIMP2_PURE
-# define BOOST_REGEX_STDLIB_DECL _CRTIMP2_PURE
-#else
-# define BOOST_REGEX_STDLIB_DECL _CRTIMP2
-#endif
-
-namespace std{
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-template class BOOST_REGEX_STDLIB_DECL allocator<unsigned short>;
-template class BOOST_REGEX_STDLIB_DECL _String_val<unsigned short, allocator<unsigned short> >;
-template class BOOST_REGEX_STDLIB_DECL basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >;
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400))
-template<> BOOST_REGEX_STDLIB_DECL std::size_t __cdecl char_traits<unsigned short>::length(unsigned short const*);
-#endif
-
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const unsigned short *,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const unsigned short *);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator<(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator>(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-}
-#endif
-
-#include <cutl/details/boost/regex/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
-
-#include <cutl/details/boost/regex/v4/c_regex_traits.hpp>
-#ifndef BOOST_NO_WREGEX
-#include <cutl/details/boost/regex/v4/primary_transform.hpp>
-#include <cutl/details/boost/regex/v4/regex_traits_defaults.hpp>
-
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::wcstol;
-}
-#endif
-
-namespace cutl_details_boost{
-
-c_regex_traits<wchar_t>::string_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::transform(const wchar_t* p1, const wchar_t* p2)
-{
- std::size_t r;
- std::size_t s = 10;
- std::wstring src(p1, p2);
- std::wstring result(s, L' ');
- while(s < (r = std::wcsxfrm(&*result.begin(), src.c_str(), s)))
- {
- result.append(r - s + 3, L' ');
- s = result.size();
- }
- result.erase(r);
- return result;
-}
-
-c_regex_traits<wchar_t>::string_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::transform_primary(const wchar_t* p1, const wchar_t* p2)
-{
- static wchar_t s_delim;
- static const int s_collate_type = ::cutl_details_boost::re_detail::find_sort_syntax(static_cast<const c_regex_traits<wchar_t>*>(0), &s_delim);
- std::wstring result;
- //
- // What we do here depends upon the format of the sort key returned by
- // sort key returned by this->transform:
- //
- switch(s_collate_type)
- {
- case ::cutl_details_boost::re_detail::sort_C:
- case ::cutl_details_boost::re_detail::sort_unknown:
- // the best we can do is translate to lower case, then get a regular sort key:
- {
- result.assign(p1, p2);
- for(std::wstring::size_type i = 0; i < result.size(); ++i)
- result[i] = (std::towlower)(result[i]);
- result = c_regex_traits<wchar_t>::transform(&*result.begin(), &*result.begin() + result.size());
- break;
- }
- case ::cutl_details_boost::re_detail::sort_fixed:
- {
- // get a regular sort key, and then truncate it:
- result = c_regex_traits<wchar_t>::transform(&*result.begin(), &*result.begin() + result.size());
- result.erase(s_delim);
- break;
- }
- case ::cutl_details_boost::re_detail::sort_delim:
- // get a regular sort key, and then truncate everything after the delim:
- result = c_regex_traits<wchar_t>::transform(&*result.begin(), &*result.begin() + result.size());
- if(result.size() && (result[0] == s_delim))
- break;
- std::size_t i;
- for(i = 0; i < result.size(); ++i)
- {
- if(result[i] == s_delim)
- break;
- }
- result.erase(i);
- break;
- }
- if(result.empty())
- result = std::wstring(1, char(0));
- return result;
-}
-
-c_regex_traits<wchar_t>::char_class_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::lookup_classname(const wchar_t* p1, const wchar_t* p2)
-{
- static const char_class_type masks[] =
- {
- 0,
- char_class_alnum,
- char_class_alpha,
- char_class_blank,
- char_class_cntrl,
- char_class_digit,
- char_class_digit,
- char_class_graph,
- char_class_horizontal,
- char_class_lower,
- char_class_lower,
- char_class_print,
- char_class_punct,
- char_class_space,
- char_class_space,
- char_class_upper,
- char_class_unicode,
- char_class_upper,
- char_class_vertical,
- char_class_alnum | char_class_word,
- char_class_alnum | char_class_word,
- char_class_xdigit,
- };
-
- int idx = ::cutl_details_boost::re_detail::get_default_class_id(p1, p2);
- if(idx < 0)
- {
- std::wstring s(p1, p2);
- for(std::wstring::size_type i = 0; i < s.size(); ++i)
- s[i] = (std::towlower)(s[i]);
- idx = ::cutl_details_boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
- }
- BOOST_ASSERT(idx+1 < static_cast<int>(sizeof(masks) / sizeof(masks[0])));
- return masks[idx+1];
-}
-
-bool BOOST_REGEX_CALL c_regex_traits<wchar_t>::isctype(wchar_t c, char_class_type mask)
-{
- return
- ((mask & char_class_space) && (std::iswspace)(c))
- || ((mask & char_class_print) && (std::iswprint)(c))
- || ((mask & char_class_cntrl) && (std::iswcntrl)(c))
- || ((mask & char_class_upper) && (std::iswupper)(c))
- || ((mask & char_class_lower) && (std::iswlower)(c))
- || ((mask & char_class_alpha) && (std::iswalpha)(c))
- || ((mask & char_class_digit) && (std::iswdigit)(c))
- || ((mask & char_class_punct) && (std::iswpunct)(c))
- || ((mask & char_class_xdigit) && (std::iswxdigit)(c))
- || ((mask & char_class_blank) && (std::iswspace)(c) && !::cutl_details_boost::re_detail::is_separator(c))
- || ((mask & char_class_word) && (c == '_'))
- || ((mask & char_class_unicode) && (c & ~static_cast<wchar_t>(0xff)))
- || ((mask & char_class_vertical) && (::cutl_details_boost::re_detail::is_separator(c) || (c == L'\v')))
- || ((mask & char_class_horizontal) && (std::iswspace)(c) && !::cutl_details_boost::re_detail::is_separator(c) && (c != L'\v'));
-}
-
-c_regex_traits<wchar_t>::string_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::lookup_collatename(const wchar_t* p1, const wchar_t* p2)
-{
-#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
- && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
- && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
- std::string name(p1, p2);
-#else
- std::string name;
- const wchar_t* p0 = p1;
- while(p0 != p2)
- name.append(1, char(*p0++));
-#endif
- name = ::cutl_details_boost::re_detail::lookup_default_collate_name(name);
-#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
- && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
- && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
- if(name.size())
- return string_type(name.begin(), name.end());
-#else
- if(name.size())
- {
- string_type result;
- typedef std::string::const_iterator iter;
- iter b = name.begin();
- iter e = name.end();
- while(b != e)
- result.append(1, wchar_t(*b++));
- return result;
- }
-#endif
- if(p2 - p1 == 1)
- return string_type(1, *p1);
- return string_type();
-}
-
-int BOOST_REGEX_CALL c_regex_traits<wchar_t>::value(wchar_t c, int radix)
-{
-#ifdef __BORLANDC__
- // workaround for broken wcstol:
- if((std::iswxdigit)(c) == 0)
- return -1;
-#endif
- wchar_t b[2] = { c, '\0', };
- wchar_t* ep;
- int result = std::wcstol(b, &ep, radix);
- if(ep == b)
- return -1;
- return result;
-}
-
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-c_regex_traits<unsigned short>::string_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::transform(const unsigned short* p1, const unsigned short* p2)
-{
- std::wstring result = c_regex_traits<wchar_t>::transform((const wchar_t*)p1, (const wchar_t*)p2);
- return string_type(result.begin(), result.end());
-}
-
-c_regex_traits<unsigned short>::string_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::transform_primary(const unsigned short* p1, const unsigned short* p2)
-{
- std::wstring result = c_regex_traits<wchar_t>::transform_primary((const wchar_t*)p1, (const wchar_t*)p2);
- return string_type(result.begin(), result.end());
-}
-
-c_regex_traits<unsigned short>::char_class_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::lookup_classname(const unsigned short* p1, const unsigned short* p2)
-{
- return c_regex_traits<wchar_t>::lookup_classname((const wchar_t*)p1, (const wchar_t*)p2);
-}
-
-c_regex_traits<unsigned short>::string_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::lookup_collatename(const unsigned short* p1, const unsigned short* p2)
-{
- std::wstring result = c_regex_traits<wchar_t>::lookup_collatename((const wchar_t*)p1, (const wchar_t*)p2);
- return string_type(result.begin(), result.end());
-}
-
-bool BOOST_REGEX_CALL c_regex_traits<unsigned short>::isctype(unsigned short c, char_class_type m)
-{
- return c_regex_traits<wchar_t>::isctype(c, m);
-}
-
-int BOOST_REGEX_CALL c_regex_traits<unsigned short>::value(unsigned short c, int radix)
-{
- return c_regex_traits<wchar_t>::value(c, radix);
-}
-
-#endif
-
-}
-
-#endif // BOOST_NO_WREGEX
-
-#endif // __BORLANDC__
-
diff --git a/libcutl/cutl/details/boost/regex/src/wide_posix_api.cxx b/libcutl/cutl/details/boost/regex/src/wide_posix_api.cxx
deleted file mode 100644
index 6c42679..0000000
--- a/libcutl/cutl/details/boost/regex/src/wide_posix_api.cxx
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: wide_posix_api.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Implements the wide character POSIX API wrappers.
- */
-
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/regex/config.hpp>
-
-#ifndef BOOST_NO_WREGEX
-
-#include <cutl/details/boost/regex.hpp>
-#include <cutl/details/boost/cregex.hpp>
-
-#include <cwchar>
-#include <cstring>
-#include <cstdio>
-
-#ifdef BOOST_INTEL
-#pragma warning(disable:981)
-#endif
-
-#if defined(BOOST_NO_STDC_NAMESPACE) || defined(__NetBSD__)
-namespace std{
-# ifndef BOOST_NO_SWPRINTF
- using ::swprintf;
-# endif
-}
-#endif
-
-
-namespace cutl_details_boost{
-
-namespace {
-
-unsigned int wmagic_value = 28631;
-
-const wchar_t* wnames[] = {
- L"REG_NOERROR",
- L"REG_NOMATCH",
- L"REG_BADPAT",
- L"REG_ECOLLATE",
- L"REG_ECTYPE",
- L"REG_EESCAPE",
- L"REG_ESUBREG",
- L"REG_EBRACK",
- L"REG_EPAREN",
- L"REG_EBRACE",
- L"REG_BADBR",
- L"REG_ERANGE",
- L"REG_ESPACE",
- L"REG_BADRPT",
- L"REG_EEND",
- L"REG_ESIZE",
- L"REG_ERPAREN",
- L"REG_EMPTY",
- L"REG_ECOMPLEXITY",
- L"REG_ESTACK",
- L"REG_E_PERL",
- L"REG_E_UNKNOWN",
-};
-}
-
-typedef cutl_details_boost::basic_regex<wchar_t, c_regex_traits<wchar_t> > wc_regex_type;
-
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW* expression, const wchar_t* ptr, int f)
-{
- if(expression->re_magic != wmagic_value)
- {
- expression->guts = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- expression->guts = new wc_regex_type();
-#ifndef BOOST_NO_EXCEPTIONS
- } catch(...)
- {
- return REG_ESPACE;
- }
-#else
- if(0 == expression->guts)
- return REG_E_MEMORY;
-#endif
- }
- // set default flags:
- cutl_details_boost::uint_fast32_t flags = (f & REG_PERLEX) ? 0 : ((f & REG_EXTENDED) ? wregex::extended : wregex::basic);
- expression->eflags = (f & REG_NEWLINE) ? match_not_dot_newline : match_default;
-
- // and translate those that are actually set:
- if(f & REG_NOCOLLATE)
- {
- flags |= wregex::nocollate;
-#ifndef BOOST_REGEX_V3
- flags &= ~wregex::collate;
-#endif
- }
-
- if(f & REG_NOSUB)
- {
- //expression->eflags |= match_any;
- flags |= wregex::nosubs;
- }
-
- if(f & REG_NOSPEC)
- flags |= wregex::literal;
- if(f & REG_ICASE)
- flags |= wregex::icase;
- if(f & REG_ESCAPE_IN_LISTS)
- flags &= ~wregex::no_escape_in_lists;
- if(f & REG_NEWLINE_ALT)
- flags |= wregex::newline_alt;
-
- const wchar_t* p2;
- if(f & REG_PEND)
- p2 = expression->re_endp;
- else p2 = ptr + std::wcslen(ptr);
-
- int result;
-
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- expression->re_magic = wmagic_value;
- static_cast<wc_regex_type*>(expression->guts)->set_expression(ptr, p2, flags);
- expression->re_nsub = static_cast<wc_regex_type*>(expression->guts)->mark_count() - 1;
- result = static_cast<wc_regex_type*>(expression->guts)->error_code();
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(const cutl_details_boost::regex_error& be)
- {
- result = be.code();
- }
- catch(...)
- {
- result = REG_E_UNKNOWN;
- }
-#endif
- if(result)
- regfreeW(expression);
- return result;
-
-}
-
-BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int code, const regex_tW* e, wchar_t* buf, regsize_t buf_size)
-{
- std::size_t result = 0;
- if(code & REG_ITOA)
- {
- code &= ~REG_ITOA;
- if((code <= (int)REG_E_UNKNOWN) && (code >= 0))
- {
- result = std::wcslen(wnames[code]) + 1;
- if(buf_size >= result)
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- ::wcscpy_s(buf, buf_size, wnames[code]);
-#else
- std::wcscpy(buf, wnames[code]);
-#endif
- return result;
- }
- return result;
- }
-#if !defined(BOOST_NO_SWPRINTF)
- if(code == REG_ATOI)
- {
- wchar_t localbuf[5];
- if(e == 0)
- return 0;
- for(int i = 0; i <= (int)REG_E_UNKNOWN; ++i)
- {
- if(std::wcscmp(e->re_endp, wnames[i]) == 0)
- {
-#if defined(_WIN32_WCE) && !defined(UNDER_CE)
- (std::swprintf)(localbuf, L"%d", i);
-#else
- (std::swprintf)(localbuf, 5, L"%d", i);
-#endif
- if(std::wcslen(localbuf) < buf_size)
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- ::wcscpy_s(buf, buf_size, localbuf);
-#else
- std::wcscpy(buf, localbuf);
-#endif
- return std::wcslen(localbuf) + 1;
- }
- }
-#if defined(_WIN32_WCE) && !defined(UNDER_CE)
- (std::swprintf)(localbuf, L"%d", 0);
-#else
- (std::swprintf)(localbuf, 5, L"%d", 0);
-#endif
- if(std::wcslen(localbuf) < buf_size)
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- ::wcscpy_s(buf, buf_size, localbuf);
-#else
- std::wcscpy(buf, localbuf);
-#endif
- return std::wcslen(localbuf) + 1;
- }
-#endif
- if(code <= (int)REG_E_UNKNOWN)
- {
- std::string p;
- if((e) && (e->re_magic == wmagic_value))
- p = static_cast<wc_regex_type*>(e->guts)->get_traits().error_string(static_cast< ::cutl_details_boost::regex_constants::error_type>(code));
- else
- {
- p = re_detail::get_default_error_string(static_cast< ::cutl_details_boost::regex_constants::error_type>(code));
- }
- std::size_t len = p.size();
- if(len < buf_size)
- {
- re_detail::copy(p.c_str(), p.c_str() + p.size() + 1, buf);
- }
- return len + 1;
- }
- if(buf_size)
- *buf = 0;
- return 0;
-}
-
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecW(const regex_tW* expression, const wchar_t* buf, regsize_t n, regmatch_t* array, int eflags)
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4267)
-#endif
- bool result = false;
- match_flag_type flags = match_default | expression->eflags;
- const wchar_t* end;
- const wchar_t* start;
- wcmatch m;
-
- if(eflags & REG_NOTBOL)
- flags |= match_not_bol;
- if(eflags & REG_NOTEOL)
- flags |= match_not_eol;
- if(eflags & REG_STARTEND)
- {
- start = buf + array[0].rm_so;
- end = buf + array[0].rm_eo;
- }
- else
- {
- start = buf;
- end = buf + std::wcslen(buf);
- }
-
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- if(expression->re_magic == wmagic_value)
- {
- result = regex_search(start, end, m, *static_cast<wc_regex_type*>(expression->guts), flags);
- }
- else
- return result;
-#ifndef BOOST_NO_EXCEPTIONS
- } catch(...)
- {
- return REG_E_UNKNOWN;
- }
-#endif
- if(result)
- {
- // extract what matched:
- std::size_t i;
- for(i = 0; (i < n) && (i < expression->re_nsub + 1); ++i)
- {
- array[i].rm_so = (m[i].matched == false) ? -1 : (m[i].first - buf);
- array[i].rm_eo = (m[i].matched == false) ? -1 : (m[i].second - buf);
- }
- // and set anything else to -1:
- for(i = expression->re_nsub + 1; i < n; ++i)
- {
- array[i].rm_so = -1;
- array[i].rm_eo = -1;
- }
- return 0;
- }
- return REG_NOMATCH;
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeW(regex_tW* expression)
-{
- if(expression->re_magic == wmagic_value)
- {
- delete static_cast<wc_regex_type*>(expression->guts);
- }
- expression->re_magic = 0;
-}
-
-} // namespace cutl_details_boost;
-
-#endif
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/src/winstances.cxx b/libcutl/cutl/details/boost/regex/src/winstances.cxx
deleted file mode 100644
index 19ba8a4..0000000
--- a/libcutl/cutl/details/boost/regex/src/winstances.cxx
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: winstances.cpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: regex wide character template instances.
- */
-
-#define BOOST_REGEX_SOURCE
-
-#include <cutl/details/boost/regex/config.hpp>
-
-#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
-#define BOOST_REGEX_WIDE_INSTANTIATE
-
-#ifdef __BORLANDC__
-#pragma hrdstop
-#endif
-
-#include <cutl/details/boost/regex.hpp>
-
-#endif
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/user.hpp b/libcutl/cutl/details/boost/regex/user.hpp
deleted file mode 100644
index 5176b39..0000000
--- a/libcutl/cutl/details/boost/regex/user.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE user.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: User settable options.
- */
-
-// define if you want the regex library to use the C locale
-// even on Win32:
-// #define BOOST_REGEX_USE_C_LOCALE
-
-// define this is you want the regex library to use the C++
-// locale:
-// #define BOOST_REGEX_USE_CPP_LOCALE
-
-// define this if the runtime library is a dll, and you
-// want BOOST_REGEX_DYN_LINK to set up dll exports/imports
-// with __declspec(dllexport)/__declspec(dllimport.)
-// #define BOOST_REGEX_HAS_DLL_RUNTIME
-
-// define this if you want to dynamically link to regex,
-// if the runtime library is also a dll (Probably Win32 specific,
-// and has no effect unless BOOST_REGEX_HAS_DLL_RUNTIME is set):
-// #define BOOST_REGEX_DYN_LINK
-
-// define this if you don't want the lib to automatically
-// select its link libraries:
-// #define BOOST_REGEX_NO_LIB
-
-// define this if templates with switch statements cause problems:
-// #define BOOST_REGEX_NO_TEMPLATE_SWITCH_MERGE
-
-// define this to disable Win32 support when available:
-// #define BOOST_REGEX_NO_W32
-
-// define this if bool is not a real type:
-// #define BOOST_REGEX_NO_BOOL
-
-// define this if no template instances are to be placed in
-// the library rather than users object files:
-// #define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
-
-// define this if the forward declarations in regex_fwd.hpp
-// cause more problems than they are worth:
-// #define BOOST_REGEX_NO_FWD
-
-// define this if your compiler supports MS Windows structured
-// exception handling.
-// #define BOOST_REGEX_HAS_MS_STACK_GUARD
-
-// define this if you want to use the recursive algorithm
-// even if BOOST_REGEX_HAS_MS_STACK_GUARD is not defined.
-// #define BOOST_REGEX_RECURSIVE
-
-// define this if you want to use the non-recursive
-// algorithm, even if the recursive version would be the default.
-// #define BOOST_REGEX_NON_RECURSIVE
-
-// define this if you want to set the size of the memory blocks
-// used by the non-recursive algorithm.
-// #define BOOST_REGEX_BLOCKSIZE 4096
-
-// define this if you want to set the maximum number of memory blocks
-// used by the non-recursive algorithm.
-// #define BOOST_REGEX_MAX_BLOCKS 1024
-
-// define this if you want to set the maximum number of memory blocks
-// cached by the non-recursive algorithm: Normally this is 16, but can be
-// higher if you have multiple threads all using boost.regex, or lower
-// if you don't want boost.regex to cache memory.
-// #define BOOST_REGEX_MAX_CACHE_BLOCKS 16
-
-// define this if you want to be able to access extended capture
-// information in your sub_match's (caution this will slow things
-// down quite a bit).
-// #define BOOST_REGEX_MATCH_EXTRA
-
-// define this if you want to enable support for Unicode via ICU.
-// #define BOOST_HAS_ICU
-
-// define this if you want regex to use __cdecl calling convensions, even when __fastcall is available:
-// #define BOOST_REGEX_NO_FASTCALL
diff --git a/libcutl/cutl/details/boost/regex/v4/basic_regex.hpp b/libcutl/cutl/details/boost/regex/v4/basic_regex.hpp
deleted file mode 100644
index e238d25..0000000
--- a/libcutl/cutl/details/boost/regex/v4/basic_regex.hpp
+++ /dev/null
@@ -1,782 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2004 John Maddock
- * Copyright 2011 Garmin Ltd. or its subsidiaries
- *
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org/ for most recent version.
- * FILE basic_regex.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares template class basic_regex.
- */
-
-#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP
-#define BOOST_REGEX_V4_BASIC_REGEX_HPP
-
-#include <cutl/details/boost/type_traits/is_same.hpp>
-#include <cutl/details/boost/functional/hash.hpp>
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable : 4251 4231 4800)
-#if BOOST_MSVC < 1600
-#pragma warning(disable : 4660)
-#endif
-#endif
-
-namespace re_detail{
-
-//
-// forward declaration, we will need this one later:
-//
-template <class charT, class traits>
-class basic_regex_parser;
-
-template <class I>
-void bubble_down_one(I first, I last)
-{
- if(first != last)
- {
- I next = last - 1;
- while((next != first) && (*next < *(next-1)))
- {
- (next-1)->swap(*next);
- --next;
- }
- }
-}
-
-template <class Iterator>
-inline int hash_value_from_capture_name(Iterator i, Iterator j)
-{
- std::size_t r = cutl_details_boost::hash_range(i, j);
- r %= ((std::numeric_limits<int>::max)() - 10001);
- r += 10000;
- return static_cast<int>(r);
-}
-
-class named_subexpressions
-{
-public:
- struct name
- {
- template <class charT>
- name(const charT* i, const charT* j, int idx)
- : index(idx)
- {
- hash = hash_value_from_capture_name(i, j);
- }
- name(int h, int idx)
- : index(idx), hash(h)
- {
- }
- int index;
- int hash;
- bool operator < (const name& other)const
- {
- return hash < other.hash;
- }
- bool operator == (const name& other)const
- {
- return hash == other.hash;
- }
- void swap(name& other)
- {
- std::swap(index, other.index);
- std::swap(hash, other.hash);
- }
- };
-
- typedef std::vector<name>::const_iterator const_iterator;
- typedef std::pair<const_iterator, const_iterator> range_type;
-
- named_subexpressions(){}
-
- template <class charT>
- void set_name(const charT* i, const charT* j, int index)
- {
- m_sub_names.push_back(name(i, j, index));
- bubble_down_one(m_sub_names.begin(), m_sub_names.end());
- }
- template <class charT>
- int get_id(const charT* i, const charT* j)const
- {
- name t(i, j, 0);
- typename std::vector<name>::const_iterator pos = std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t);
- if((pos != m_sub_names.end()) && (*pos == t))
- {
- return pos->index;
- }
- return -1;
- }
- template <class charT>
- range_type equal_range(const charT* i, const charT* j)const
- {
- name t(i, j, 0);
- return std::equal_range(m_sub_names.begin(), m_sub_names.end(), t);
- }
- int get_id(int h)const
- {
- name t(h, 0);
- std::vector<name>::const_iterator pos = std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t);
- if((pos != m_sub_names.end()) && (*pos == t))
- {
- return pos->index;
- }
- return -1;
- }
- range_type equal_range(int h)const
- {
- name t(h, 0);
- return std::equal_range(m_sub_names.begin(), m_sub_names.end(), t);
- }
-private:
- std::vector<name> m_sub_names;
-};
-
-//
-// class regex_data:
-// represents the data we wish to expose to the matching algorithms.
-//
-template <class charT, class traits>
-struct regex_data : public named_subexpressions
-{
- typedef regex_constants::syntax_option_type flag_type;
- typedef std::size_t size_type;
-
- regex_data(const ::cutl_details_boost::shared_ptr<
- ::cutl_details_boost::regex_traits_wrapper<traits> >& t)
- : m_ptraits(t), m_expression(0), m_expression_len(0) {}
- regex_data()
- : m_ptraits(new ::cutl_details_boost::regex_traits_wrapper<traits>()), m_expression(0), m_expression_len(0) {}
-
- ::cutl_details_boost::shared_ptr<
- ::cutl_details_boost::regex_traits_wrapper<traits>
- > m_ptraits; // traits class instance
- flag_type m_flags; // flags with which we were compiled
- int m_status; // error code (0 implies OK).
- const charT* m_expression; // the original expression
- std::ptrdiff_t m_expression_len; // the length of the original expression
- size_type m_mark_count; // the number of marked sub-expressions
- re_detail::re_syntax_base* m_first_state; // the first state of the machine
- unsigned m_restart_type; // search optimisation type
- unsigned char m_startmap[1 << CHAR_BIT]; // which characters can start a match
- unsigned int m_can_be_null; // whether we can match a null string
- re_detail::raw_storage m_data; // the buffer in which our states are constructed
- typename traits::char_class_type m_word_mask; // mask used to determine if a character is a word character
- std::vector<
- std::pair<
- std::size_t, std::size_t> > m_subs; // Position of sub-expressions within the *string*.
- bool m_has_recursions; // whether we have recursive expressions;
-};
-//
-// class basic_regex_implementation
-// pimpl implementation class for basic_regex.
-//
-template <class charT, class traits>
-class basic_regex_implementation
- : public regex_data<charT, traits>
-{
-public:
- typedef regex_constants::syntax_option_type flag_type;
- typedef std::ptrdiff_t difference_type;
- typedef std::size_t size_type;
- typedef typename traits::locale_type locale_type;
- typedef const charT* const_iterator;
-
- basic_regex_implementation(){}
- basic_regex_implementation(const ::cutl_details_boost::shared_ptr<
- ::cutl_details_boost::regex_traits_wrapper<traits> >& t)
- : regex_data<charT, traits>(t) {}
- void assign(const charT* arg_first,
- const charT* arg_last,
- flag_type f)
- {
- regex_data<charT, traits>* pdat = this;
- basic_regex_parser<charT, traits> parser(pdat);
- parser.parse(arg_first, arg_last, f);
- }
-
- locale_type BOOST_REGEX_CALL imbue(locale_type l)
- {
- return this->m_ptraits->imbue(l);
- }
- locale_type BOOST_REGEX_CALL getloc()const
- {
- return this->m_ptraits->getloc();
- }
- std::basic_string<charT> BOOST_REGEX_CALL str()const
- {
- std::basic_string<charT> result;
- if(this->m_status == 0)
- result = std::basic_string<charT>(this->m_expression, this->m_expression_len);
- return result;
- }
- const_iterator BOOST_REGEX_CALL expression()const
- {
- return this->m_expression;
- }
- std::pair<const_iterator, const_iterator> BOOST_REGEX_CALL subexpression(std::size_t n)const
- {
- if(n == 0)
- cutl_details_boost::throw_exception(std::out_of_range("0 is not a valid subexpression index."));
- const std::pair<std::size_t, std::size_t>& pi = this->m_subs.at(n - 1);
- std::pair<const_iterator, const_iterator> p(expression() + pi.first, expression() + pi.second);
- return p;
- }
- //
- // begin, end:
- const_iterator BOOST_REGEX_CALL begin()const
- {
- return (this->m_status ? 0 : this->m_expression);
- }
- const_iterator BOOST_REGEX_CALL end()const
- {
- return (this->m_status ? 0 : this->m_expression + this->m_expression_len);
- }
- flag_type BOOST_REGEX_CALL flags()const
- {
- return this->m_flags;
- }
- size_type BOOST_REGEX_CALL size()const
- {
- return this->m_expression_len;
- }
- int BOOST_REGEX_CALL status()const
- {
- return this->m_status;
- }
- size_type BOOST_REGEX_CALL mark_count()const
- {
- return this->m_mark_count;
- }
- const re_detail::re_syntax_base* get_first_state()const
- {
- return this->m_first_state;
- }
- unsigned get_restart_type()const
- {
- return this->m_restart_type;
- }
- const unsigned char* get_map()const
- {
- return this->m_startmap;
- }
- const ::cutl_details_boost::regex_traits_wrapper<traits>& get_traits()const
- {
- return *(this->m_ptraits);
- }
- bool can_be_null()const
- {
- return this->m_can_be_null;
- }
- const regex_data<charT, traits>& get_data()const
- {
- basic_regex_implementation<charT, traits> const* p = this;
- return *static_cast<const regex_data<charT, traits>*>(p);
- }
-};
-
-} // namespace re_detail
-//
-// class basic_regex:
-// represents the compiled
-// regular expression:
-//
-
-#ifdef BOOST_REGEX_NO_FWD
-template <class charT, class traits = regex_traits<charT> >
-#else
-template <class charT, class traits >
-#endif
-class basic_regex : public regbase
-{
-public:
- // typedefs:
- typedef std::size_t traits_size_type;
- typedef typename traits::string_type traits_string_type;
- typedef charT char_type;
- typedef traits traits_type;
-
- typedef charT value_type;
- typedef charT& reference;
- typedef const charT& const_reference;
- typedef const charT* const_iterator;
- typedef const_iterator iterator;
- typedef std::ptrdiff_t difference_type;
- typedef std::size_t size_type;
- typedef regex_constants::syntax_option_type flag_type;
- // locale_type
- // placeholder for actual locale type used by the
- // traits class to localise *this.
- typedef typename traits::locale_type locale_type;
-
-public:
- explicit basic_regex(){}
- explicit basic_regex(const charT* p, flag_type f = regex_constants::normal)
- {
- assign(p, f);
- }
- basic_regex(const charT* p1, const charT* p2, flag_type f = regex_constants::normal)
- {
- assign(p1, p2, f);
- }
- basic_regex(const charT* p, size_type len, flag_type f)
- {
- assign(p, len, f);
- }
- basic_regex(const basic_regex& that)
- : m_pimpl(that.m_pimpl) {}
- ~basic_regex(){}
- basic_regex& BOOST_REGEX_CALL operator=(const basic_regex& that)
- {
- return assign(that);
- }
- basic_regex& BOOST_REGEX_CALL operator=(const charT* ptr)
- {
- return assign(ptr);
- }
-
- //
- // assign:
- basic_regex& assign(const basic_regex& that)
- {
- m_pimpl = that.m_pimpl;
- return *this;
- }
- basic_regex& assign(const charT* p, flag_type f = regex_constants::normal)
- {
- return assign(p, p + traits::length(p), f);
- }
- basic_regex& assign(const charT* p, size_type len, flag_type f)
- {
- return assign(p, p + len, f);
- }
-private:
- basic_regex& do_assign(const charT* p1,
- const charT* p2,
- flag_type f);
-public:
- basic_regex& assign(const charT* p1,
- const charT* p2,
- flag_type f = regex_constants::normal)
- {
- return do_assign(p1, p2, f);
- }
-#if !defined(BOOST_NO_MEMBER_TEMPLATES)
-
- template <class ST, class SA>
- unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal)
- {
- return set_expression(p.data(), p.data() + p.size(), f);
- }
-
- template <class ST, class SA>
- explicit basic_regex(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal)
- {
- assign(p, f);
- }
-
- template <class InputIterator>
- basic_regex(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal)
- {
- typedef typename traits::string_type seq_type;
- seq_type a(arg_first, arg_last);
- if(a.size())
- assign(static_cast<const charT*>(&*a.begin()), static_cast<const charT*>(&*a.begin() + a.size()), f);
- else
- assign(static_cast<const charT*>(0), static_cast<const charT*>(0), f);
- }
-
- template <class ST, class SA>
- basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string<charT, ST, SA>& p)
- {
- return assign(p.data(), p.data() + p.size(), regex_constants::normal);
- }
-
- template <class string_traits, class A>
- basic_regex& BOOST_REGEX_CALL assign(
- const std::basic_string<charT, string_traits, A>& s,
- flag_type f = regex_constants::normal)
- {
- return assign(s.data(), s.data() + s.size(), f);
- }
-
- template <class InputIterator>
- basic_regex& BOOST_REGEX_CALL assign(InputIterator arg_first,
- InputIterator arg_last,
- flag_type f = regex_constants::normal)
- {
- typedef typename traits::string_type seq_type;
- seq_type a(arg_first, arg_last);
- if(a.size())
- {
- const charT* p1 = &*a.begin();
- const charT* p2 = &*a.begin() + a.size();
- return assign(p1, p2, f);
- }
- return assign(static_cast<const charT*>(0), static_cast<const charT*>(0), f);
- }
-#else
- unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal)
- {
- return set_expression(p.data(), p.data() + p.size(), f);
- }
-
- basic_regex(const std::basic_string<charT>& p, flag_type f = regex_constants::normal)
- {
- assign(p, f);
- }
-
- basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p)
- {
- return assign(p.data(), p.data() + p.size(), regex_constants::normal);
- }
-
- basic_regex& BOOST_REGEX_CALL assign(
- const std::basic_string<charT>& s,
- flag_type f = regex_constants::normal)
- {
- return assign(s.data(), s.data() + s.size(), f);
- }
-
-#endif
-
- //
- // locale:
- locale_type BOOST_REGEX_CALL imbue(locale_type l);
- locale_type BOOST_REGEX_CALL getloc()const
- {
- return m_pimpl.get() ? m_pimpl->getloc() : locale_type();
- }
- //
- // getflags:
- // retained for backwards compatibility only, "flags"
- // is now the preferred name:
- flag_type BOOST_REGEX_CALL getflags()const
- {
- return flags();
- }
- flag_type BOOST_REGEX_CALL flags()const
- {
- return m_pimpl.get() ? m_pimpl->flags() : 0;
- }
- //
- // str:
- std::basic_string<charT> BOOST_REGEX_CALL str()const
- {
- return m_pimpl.get() ? m_pimpl->str() : std::basic_string<charT>();
- }
- //
- // begin, end, subexpression:
- std::pair<const_iterator, const_iterator> BOOST_REGEX_CALL subexpression(std::size_t n)const
- {
- if(!m_pimpl.get())
- cutl_details_boost::throw_exception(std::logic_error("Can't access subexpressions in an invalid regex."));
- return m_pimpl->subexpression(n);
- }
- const_iterator BOOST_REGEX_CALL begin()const
- {
- return (m_pimpl.get() ? m_pimpl->begin() : 0);
- }
- const_iterator BOOST_REGEX_CALL end()const
- {
- return (m_pimpl.get() ? m_pimpl->end() : 0);
- }
- //
- // swap:
- void BOOST_REGEX_CALL swap(basic_regex& that)throw()
- {
- m_pimpl.swap(that.m_pimpl);
- }
- //
- // size:
- size_type BOOST_REGEX_CALL size()const
- {
- return (m_pimpl.get() ? m_pimpl->size() : 0);
- }
- //
- // max_size:
- size_type BOOST_REGEX_CALL max_size()const
- {
- return UINT_MAX;
- }
- //
- // empty:
- bool BOOST_REGEX_CALL empty()const
- {
- return (m_pimpl.get() ? 0 != m_pimpl->status() : true);
- }
-
- size_type BOOST_REGEX_CALL mark_count()const
- {
- return (m_pimpl.get() ? m_pimpl->mark_count() : 0);
- }
-
- int status()const
- {
- return (m_pimpl.get() ? m_pimpl->status() : regex_constants::error_empty);
- }
-
- int BOOST_REGEX_CALL compare(const basic_regex& that) const
- {
- if(m_pimpl.get() == that.m_pimpl.get())
- return 0;
- if(!m_pimpl.get())
- return -1;
- if(!that.m_pimpl.get())
- return 1;
- if(status() != that.status())
- return status() - that.status();
- if(flags() != that.flags())
- return flags() - that.flags();
- return str().compare(that.str());
- }
- bool BOOST_REGEX_CALL operator==(const basic_regex& e)const
- {
- return compare(e) == 0;
- }
- bool BOOST_REGEX_CALL operator != (const basic_regex& e)const
- {
- return compare(e) != 0;
- }
- bool BOOST_REGEX_CALL operator<(const basic_regex& e)const
- {
- return compare(e) < 0;
- }
- bool BOOST_REGEX_CALL operator>(const basic_regex& e)const
- {
- return compare(e) > 0;
- }
- bool BOOST_REGEX_CALL operator<=(const basic_regex& e)const
- {
- return compare(e) <= 0;
- }
- bool BOOST_REGEX_CALL operator>=(const basic_regex& e)const
- {
- return compare(e) >= 0;
- }
-
- //
- // The following are deprecated as public interfaces
- // but are available for compatibility with earlier versions.
- const charT* BOOST_REGEX_CALL expression()const
- {
- return (m_pimpl.get() && !m_pimpl->status() ? m_pimpl->expression() : 0);
- }
- unsigned int BOOST_REGEX_CALL set_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal)
- {
- assign(p1, p2, f | regex_constants::no_except);
- return status();
- }
- unsigned int BOOST_REGEX_CALL set_expression(const charT* p, flag_type f = regex_constants::normal)
- {
- assign(p, f | regex_constants::no_except);
- return status();
- }
- unsigned int BOOST_REGEX_CALL error_code()const
- {
- return status();
- }
- //
- // private access methods:
- //
- const re_detail::re_syntax_base* get_first_state()const
- {
- BOOST_ASSERT(0 != m_pimpl.get());
- return m_pimpl->get_first_state();
- }
- unsigned get_restart_type()const
- {
- BOOST_ASSERT(0 != m_pimpl.get());
- return m_pimpl->get_restart_type();
- }
- const unsigned char* get_map()const
- {
- BOOST_ASSERT(0 != m_pimpl.get());
- return m_pimpl->get_map();
- }
- const ::cutl_details_boost::regex_traits_wrapper<traits>& get_traits()const
- {
- BOOST_ASSERT(0 != m_pimpl.get());
- return m_pimpl->get_traits();
- }
- bool can_be_null()const
- {
- BOOST_ASSERT(0 != m_pimpl.get());
- return m_pimpl->can_be_null();
- }
- const re_detail::regex_data<charT, traits>& get_data()const
- {
- BOOST_ASSERT(0 != m_pimpl.get());
- return m_pimpl->get_data();
- }
- cutl_details_boost::shared_ptr<re_detail::named_subexpressions > get_named_subs()const
- {
- return m_pimpl;
- }
-
-private:
- shared_ptr<re_detail::basic_regex_implementation<charT, traits> > m_pimpl;
-};
-
-//
-// out of line members;
-// these are the only members that mutate the basic_regex object,
-// and are designed to provide the strong exception guarentee
-// (in the event of a throw, the state of the object remains unchanged).
-//
-template <class charT, class traits>
-basic_regex<charT, traits>& basic_regex<charT, traits>::do_assign(const charT* p1,
- const charT* p2,
- flag_type f)
-{
- shared_ptr<re_detail::basic_regex_implementation<charT, traits> > temp;
- if(!m_pimpl.get())
- {
- temp = shared_ptr<re_detail::basic_regex_implementation<charT, traits> >(new re_detail::basic_regex_implementation<charT, traits>());
- }
- else
- {
- temp = shared_ptr<re_detail::basic_regex_implementation<charT, traits> >(new re_detail::basic_regex_implementation<charT, traits>(m_pimpl->m_ptraits));
- }
- temp->assign(p1, p2, f);
- temp.swap(m_pimpl);
- return *this;
-}
-
-template <class charT, class traits>
-typename basic_regex<charT, traits>::locale_type BOOST_REGEX_CALL basic_regex<charT, traits>::imbue(locale_type l)
-{
- shared_ptr<re_detail::basic_regex_implementation<charT, traits> > temp(new re_detail::basic_regex_implementation<charT, traits>());
- locale_type result = temp->imbue(l);
- temp.swap(m_pimpl);
- return result;
-}
-
-//
-// non-members:
-//
-template <class charT, class traits>
-void swap(basic_regex<charT, traits>& e1, basic_regex<charT, traits>& e2)
-{
- e1.swap(e2);
-}
-
-#ifndef BOOST_NO_STD_LOCALE
-template <class charT, class traits, class traits2>
-std::basic_ostream<charT, traits>&
- operator << (std::basic_ostream<charT, traits>& os,
- const basic_regex<charT, traits2>& e)
-{
- return (os << e.str());
-}
-#else
-template <class traits>
-std::ostream& operator << (std::ostream& os, const basic_regex<char, traits>& e)
-{
- return (os << e.str());
-}
-#endif
-
-//
-// class reg_expression:
-// this is provided for backwards compatibility only,
-// it is deprecated, no not use!
-//
-#ifdef BOOST_REGEX_NO_FWD
-template <class charT, class traits = regex_traits<charT> >
-#else
-template <class charT, class traits >
-#endif
-class reg_expression : public basic_regex<charT, traits>
-{
-public:
- typedef typename basic_regex<charT, traits>::flag_type flag_type;
- typedef typename basic_regex<charT, traits>::size_type size_type;
- explicit reg_expression(){}
- explicit reg_expression(const charT* p, flag_type f = regex_constants::normal)
- : basic_regex<charT, traits>(p, f){}
- reg_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal)
- : basic_regex<charT, traits>(p1, p2, f){}
- reg_expression(const charT* p, size_type len, flag_type f)
- : basic_regex<charT, traits>(p, len, f){}
- reg_expression(const reg_expression& that)
- : basic_regex<charT, traits>(that) {}
- ~reg_expression(){}
- reg_expression& BOOST_REGEX_CALL operator=(const reg_expression& that)
- {
- return this->assign(that);
- }
-
-#if !defined(BOOST_NO_MEMBER_TEMPLATES)
- template <class ST, class SA>
- explicit reg_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal)
- : basic_regex<charT, traits>(p, f)
- {
- }
-
- template <class InputIterator>
- reg_expression(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal)
- : basic_regex<charT, traits>(arg_first, arg_last, f)
- {
- }
-
- template <class ST, class SA>
- reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT, ST, SA>& p)
- {
- this->assign(p);
- return *this;
- }
-#else
- explicit reg_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal)
- : basic_regex<charT, traits>(p, f)
- {
- }
-
- reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p)
- {
- this->assign(p);
- return *this;
- }
-#endif
-
-};
-
-#ifdef BOOST_MSVC
-#pragma warning (pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/v4/basic_regex_creator.hpp b/libcutl/cutl/details/boost/regex/v4/basic_regex_creator.hpp
deleted file mode 100644
index 375d29b..0000000
--- a/libcutl/cutl/details/boost/regex/v4/basic_regex_creator.hpp
+++ /dev/null
@@ -1,1571 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE basic_regex_creator.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares template class basic_regex_creator which fills in
- * the data members of a regex_data object.
- */
-
-#ifndef BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP
-#define BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4800)
-#endif
-
-namespace cutl_details_boost{
-
-namespace re_detail{
-
-template <class charT>
-struct digraph : public std::pair<charT, charT>
-{
- digraph() : std::pair<charT, charT>(0, 0){}
- digraph(charT c1) : std::pair<charT, charT>(c1, 0){}
- digraph(charT c1, charT c2) : std::pair<charT, charT>(c1, c2)
- {}
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- digraph(const digraph<charT>& d) : std::pair<charT, charT>(d.first, d.second){}
-#endif
- template <class Seq>
- digraph(const Seq& s) : std::pair<charT, charT>()
- {
- BOOST_ASSERT(s.size() <= 2);
- BOOST_ASSERT(s.size());
- this->first = s[0];
- this->second = (s.size() > 1) ? s[1] : 0;
- }
-};
-
-template <class charT, class traits>
-class basic_char_set
-{
-public:
- typedef digraph<charT> digraph_type;
- typedef typename traits::string_type string_type;
- typedef typename traits::char_class_type m_type;
-
- basic_char_set()
- {
- m_negate = false;
- m_has_digraphs = false;
- m_classes = 0;
- m_negated_classes = 0;
- m_empty = true;
- }
-
- void add_single(const digraph_type& s)
- {
- m_singles.insert(m_singles.end(), s);
- if(s.second)
- m_has_digraphs = true;
- m_empty = false;
- }
- void add_range(const digraph_type& first, const digraph_type& end)
- {
- m_ranges.insert(m_ranges.end(), first);
- m_ranges.insert(m_ranges.end(), end);
- if(first.second)
- {
- m_has_digraphs = true;
- add_single(first);
- }
- if(end.second)
- {
- m_has_digraphs = true;
- add_single(end);
- }
- m_empty = false;
- }
- void add_class(m_type m)
- {
- m_classes |= m;
- m_empty = false;
- }
- void add_negated_class(m_type m)
- {
- m_negated_classes |= m;
- m_empty = false;
- }
- void add_equivalent(const digraph_type& s)
- {
- m_equivalents.insert(m_equivalents.end(), s);
- if(s.second)
- {
- m_has_digraphs = true;
- add_single(s);
- }
- m_empty = false;
- }
- void negate()
- {
- m_negate = true;
- //m_empty = false;
- }
-
- //
- // accessor functions:
- //
- bool has_digraphs()const
- {
- return m_has_digraphs;
- }
- bool is_negated()const
- {
- return m_negate;
- }
- typedef typename std::vector<digraph_type>::const_iterator list_iterator;
- list_iterator singles_begin()const
- {
- return m_singles.begin();
- }
- list_iterator singles_end()const
- {
- return m_singles.end();
- }
- list_iterator ranges_begin()const
- {
- return m_ranges.begin();
- }
- list_iterator ranges_end()const
- {
- return m_ranges.end();
- }
- list_iterator equivalents_begin()const
- {
- return m_equivalents.begin();
- }
- list_iterator equivalents_end()const
- {
- return m_equivalents.end();
- }
- m_type classes()const
- {
- return m_classes;
- }
- m_type negated_classes()const
- {
- return m_negated_classes;
- }
- bool empty()const
- {
- return m_empty;
- }
-private:
- std::vector<digraph_type> m_singles; // a list of single characters to match
- std::vector<digraph_type> m_ranges; // a list of end points of our ranges
- bool m_negate; // true if the set is to be negated
- bool m_has_digraphs; // true if we have digraphs present
- m_type m_classes; // character classes to match
- m_type m_negated_classes; // negated character classes to match
- bool m_empty; // whether we've added anything yet
- std::vector<digraph_type> m_equivalents; // a list of equivalence classes
-};
-
-template <class charT, class traits>
-class basic_regex_creator
-{
-public:
- basic_regex_creator(regex_data<charT, traits>* data);
- std::ptrdiff_t getoffset(void* addr)
- {
- return getoffset(addr, m_pdata->m_data.data());
- }
- std::ptrdiff_t getoffset(const void* addr, const void* base)
- {
- return static_cast<const char*>(addr) - static_cast<const char*>(base);
- }
- re_syntax_base* getaddress(std::ptrdiff_t off)
- {
- return getaddress(off, m_pdata->m_data.data());
- }
- re_syntax_base* getaddress(std::ptrdiff_t off, void* base)
- {
- return static_cast<re_syntax_base*>(static_cast<void*>(static_cast<char*>(base) + off));
- }
- void init(unsigned l_flags)
- {
- m_pdata->m_flags = l_flags;
- m_icase = l_flags & regex_constants::icase;
- }
- regbase::flag_type flags()
- {
- return m_pdata->m_flags;
- }
- void flags(regbase::flag_type f)
- {
- m_pdata->m_flags = f;
- if(m_icase != static_cast<bool>(f & regbase::icase))
- {
- m_icase = static_cast<bool>(f & regbase::icase);
- }
- }
- re_syntax_base* append_state(syntax_element_type t, std::size_t s = sizeof(re_syntax_base));
- re_syntax_base* insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s = sizeof(re_syntax_base));
- re_literal* append_literal(charT c);
- re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set);
- re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set, mpl::false_*);
- re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set, mpl::true_*);
- void finalize(const charT* p1, const charT* p2);
-protected:
- regex_data<charT, traits>* m_pdata; // pointer to the basic_regex_data struct we are filling in
- const ::cutl_details_boost::regex_traits_wrapper<traits>&
- m_traits; // convenience reference to traits class
- re_syntax_base* m_last_state; // the last state we added
- bool m_icase; // true for case insensitive matches
- unsigned m_repeater_id; // the state_id of the next repeater
- bool m_has_backrefs; // true if there are actually any backrefs
- unsigned m_backrefs; // bitmask of permitted backrefs
- cutl_details_boost::uintmax_t m_bad_repeats; // bitmask of repeats we can't deduce a startmap for;
- bool m_has_recursions; // set when we have recursive expresisons to fixup
- std::vector<bool> m_recursion_checks; // notes which recursions we've followed while analysing this expression
- typename traits::char_class_type m_word_mask; // mask used to determine if a character is a word character
- typename traits::char_class_type m_mask_space; // mask used to determine if a character is a word character
- typename traits::char_class_type m_lower_mask; // mask used to determine if a character is a lowercase character
- typename traits::char_class_type m_upper_mask; // mask used to determine if a character is an uppercase character
- typename traits::char_class_type m_alpha_mask; // mask used to determine if a character is an alphabetic character
-private:
- basic_regex_creator& operator=(const basic_regex_creator&);
- basic_regex_creator(const basic_regex_creator&);
-
- void fixup_pointers(re_syntax_base* state);
- void fixup_recursions(re_syntax_base* state);
- void create_startmaps(re_syntax_base* state);
- int calculate_backstep(re_syntax_base* state);
- void create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask);
- unsigned get_restart_type(re_syntax_base* state);
- void set_all_masks(unsigned char* bits, unsigned char);
- bool is_bad_repeat(re_syntax_base* pt);
- void set_bad_repeat(re_syntax_base* pt);
- syntax_element_type get_repeat_type(re_syntax_base* state);
- void probe_leading_repeat(re_syntax_base* state);
-};
-
-template <class charT, class traits>
-basic_regex_creator<charT, traits>::basic_regex_creator(regex_data<charT, traits>* data)
- : m_pdata(data), m_traits(*(data->m_ptraits)), m_last_state(0), m_repeater_id(0), m_has_backrefs(false), m_backrefs(0), m_has_recursions(false)
-{
- m_pdata->m_data.clear();
- m_pdata->m_status = ::cutl_details_boost::regex_constants::error_ok;
- static const charT w = 'w';
- static const charT s = 's';
- static const charT l[5] = { 'l', 'o', 'w', 'e', 'r', };
- static const charT u[5] = { 'u', 'p', 'p', 'e', 'r', };
- static const charT a[5] = { 'a', 'l', 'p', 'h', 'a', };
- m_word_mask = m_traits.lookup_classname(&w, &w +1);
- m_mask_space = m_traits.lookup_classname(&s, &s +1);
- m_lower_mask = m_traits.lookup_classname(l, l + 5);
- m_upper_mask = m_traits.lookup_classname(u, u + 5);
- m_alpha_mask = m_traits.lookup_classname(a, a + 5);
- m_pdata->m_word_mask = m_word_mask;
- BOOST_ASSERT(m_word_mask != 0);
- BOOST_ASSERT(m_mask_space != 0);
- BOOST_ASSERT(m_lower_mask != 0);
- BOOST_ASSERT(m_upper_mask != 0);
- BOOST_ASSERT(m_alpha_mask != 0);
-}
-
-template <class charT, class traits>
-re_syntax_base* basic_regex_creator<charT, traits>::append_state(syntax_element_type t, std::size_t s)
-{
- // if the state is a backref then make a note of it:
- if(t == syntax_element_backref)
- this->m_has_backrefs = true;
- // append a new state, start by aligning our last one:
- m_pdata->m_data.align();
- // set the offset to the next state in our last one:
- if(m_last_state)
- m_last_state->next.i = m_pdata->m_data.size() - getoffset(m_last_state);
- // now actually extent our data:
- m_last_state = static_cast<re_syntax_base*>(m_pdata->m_data.extend(s));
- // fill in boilerplate options in the new state:
- m_last_state->next.i = 0;
- m_last_state->type = t;
- return m_last_state;
-}
-
-template <class charT, class traits>
-re_syntax_base* basic_regex_creator<charT, traits>::insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s)
-{
- // append a new state, start by aligning our last one:
- m_pdata->m_data.align();
- // set the offset to the next state in our last one:
- if(m_last_state)
- m_last_state->next.i = m_pdata->m_data.size() - getoffset(m_last_state);
- // remember the last state position:
- std::ptrdiff_t off = getoffset(m_last_state) + s;
- // now actually insert our data:
- re_syntax_base* new_state = static_cast<re_syntax_base*>(m_pdata->m_data.insert(pos, s));
- // fill in boilerplate options in the new state:
- new_state->next.i = s;
- new_state->type = t;
- m_last_state = getaddress(off);
- return new_state;
-}
-
-template <class charT, class traits>
-re_literal* basic_regex_creator<charT, traits>::append_literal(charT c)
-{
- re_literal* result;
- // start by seeing if we have an existing re_literal we can extend:
- if((0 == m_last_state) || (m_last_state->type != syntax_element_literal))
- {
- // no existing re_literal, create a new one:
- result = static_cast<re_literal*>(append_state(syntax_element_literal, sizeof(re_literal) + sizeof(charT)));
- result->length = 1;
- *static_cast<charT*>(static_cast<void*>(result+1)) = m_traits.translate(c, m_icase);
- }
- else
- {
- // we have an existing re_literal, extend it:
- std::ptrdiff_t off = getoffset(m_last_state);
- m_pdata->m_data.extend(sizeof(charT));
- m_last_state = result = static_cast<re_literal*>(getaddress(off));
- charT* characters = static_cast<charT*>(static_cast<void*>(result+1));
- characters[result->length] = m_traits.translate(c, m_icase);
- ++(result->length);
- }
- return result;
-}
-
-template <class charT, class traits>
-inline re_syntax_base* basic_regex_creator<charT, traits>::append_set(
- const basic_char_set<charT, traits>& char_set)
-{
- typedef mpl::bool_< (sizeof(charT) == 1) > truth_type;
- return char_set.has_digraphs()
- ? append_set(char_set, static_cast<mpl::false_*>(0))
- : append_set(char_set, static_cast<truth_type*>(0));
-}
-
-template <class charT, class traits>
-re_syntax_base* basic_regex_creator<charT, traits>::append_set(
- const basic_char_set<charT, traits>& char_set, mpl::false_*)
-{
- typedef typename traits::string_type string_type;
- typedef typename basic_char_set<charT, traits>::list_iterator item_iterator;
- typedef typename traits::char_class_type m_type;
-
- re_set_long<m_type>* result = static_cast<re_set_long<m_type>*>(append_state(syntax_element_long_set, sizeof(re_set_long<m_type>)));
- //
- // fill in the basics:
- //
- result->csingles = static_cast<unsigned int>(::cutl_details_boost::re_detail::distance(char_set.singles_begin(), char_set.singles_end()));
- result->cranges = static_cast<unsigned int>(::cutl_details_boost::re_detail::distance(char_set.ranges_begin(), char_set.ranges_end())) / 2;
- result->cequivalents = static_cast<unsigned int>(::cutl_details_boost::re_detail::distance(char_set.equivalents_begin(), char_set.equivalents_end()));
- result->cclasses = char_set.classes();
- result->cnclasses = char_set.negated_classes();
- if(flags() & regbase::icase)
- {
- // adjust classes as needed:
- if(((result->cclasses & m_lower_mask) == m_lower_mask) || ((result->cclasses & m_upper_mask) == m_upper_mask))
- result->cclasses |= m_alpha_mask;
- if(((result->cnclasses & m_lower_mask) == m_lower_mask) || ((result->cnclasses & m_upper_mask) == m_upper_mask))
- result->cnclasses |= m_alpha_mask;
- }
-
- result->isnot = char_set.is_negated();
- result->singleton = !char_set.has_digraphs();
- //
- // remember where the state is for later:
- //
- std::ptrdiff_t offset = getoffset(result);
- //
- // now extend with all the singles:
- //
- item_iterator first, last;
- first = char_set.singles_begin();
- last = char_set.singles_end();
- while(first != last)
- {
- charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (first->second ? 3 : 2)));
- p[0] = m_traits.translate(first->first, m_icase);
- if(first->second)
- {
- p[1] = m_traits.translate(first->second, m_icase);
- p[2] = 0;
- }
- else
- p[1] = 0;
- ++first;
- }
- //
- // now extend with all the ranges:
- //
- first = char_set.ranges_begin();
- last = char_set.ranges_end();
- while(first != last)
- {
- // first grab the endpoints of the range:
- digraph<charT> c1 = *first;
- c1.first = this->m_traits.translate(c1.first, this->m_icase);
- c1.second = this->m_traits.translate(c1.second, this->m_icase);
- ++first;
- digraph<charT> c2 = *first;
- c2.first = this->m_traits.translate(c2.first, this->m_icase);
- c2.second = this->m_traits.translate(c2.second, this->m_icase);
- ++first;
- string_type s1, s2;
- // different actions now depending upon whether collation is turned on:
- if(flags() & regex_constants::collate)
- {
- // we need to transform our range into sort keys:
-#if BOOST_WORKAROUND(__GNUC__, < 3)
- string_type in(3, charT(0));
- in[0] = c1.first;
- in[1] = c1.second;
- s1 = this->m_traits.transform(in.c_str(), (in[1] ? in.c_str()+2 : in.c_str()+1));
- in[0] = c2.first;
- in[1] = c2.second;
- s2 = this->m_traits.transform(in.c_str(), (in[1] ? in.c_str()+2 : in.c_str()+1));
-#else
- charT a1[3] = { c1.first, c1.second, charT(0), };
- charT a2[3] = { c2.first, c2.second, charT(0), };
- s1 = this->m_traits.transform(a1, (a1[1] ? a1+2 : a1+1));
- s2 = this->m_traits.transform(a2, (a2[1] ? a2+2 : a2+1));
-#endif
- if(s1.size() == 0)
- s1 = string_type(1, charT(0));
- if(s2.size() == 0)
- s2 = string_type(1, charT(0));
- }
- else
- {
- if(c1.second)
- {
- s1.insert(s1.end(), c1.first);
- s1.insert(s1.end(), c1.second);
- }
- else
- s1 = string_type(1, c1.first);
- if(c2.second)
- {
- s2.insert(s2.end(), c2.first);
- s2.insert(s2.end(), c2.second);
- }
- else
- s2.insert(s2.end(), c2.first);
- }
- if(s1 > s2)
- {
- // Oops error:
- return 0;
- }
- charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (s1.size() + s2.size() + 2) ) );
- re_detail::copy(s1.begin(), s1.end(), p);
- p[s1.size()] = charT(0);
- p += s1.size() + 1;
- re_detail::copy(s2.begin(), s2.end(), p);
- p[s2.size()] = charT(0);
- }
- //
- // now process the equivalence classes:
- //
- first = char_set.equivalents_begin();
- last = char_set.equivalents_end();
- while(first != last)
- {
- string_type s;
- if(first->second)
- {
-#if BOOST_WORKAROUND(__GNUC__, < 3)
- string_type in(3, charT(0));
- in[0] = first->first;
- in[1] = first->second;
- s = m_traits.transform_primary(in.c_str(), in.c_str()+2);
-#else
- charT cs[3] = { first->first, first->second, charT(0), };
- s = m_traits.transform_primary(cs, cs+2);
-#endif
- }
- else
- s = m_traits.transform_primary(&first->first, &first->first+1);
- if(s.empty())
- return 0; // invalid or unsupported equivalence class
- charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (s.size()+1) ) );
- re_detail::copy(s.begin(), s.end(), p);
- p[s.size()] = charT(0);
- ++first;
- }
- //
- // finally reset the address of our last state:
- //
- m_last_state = result = static_cast<re_set_long<m_type>*>(getaddress(offset));
- return result;
-}
-
-template<class T>
-inline bool char_less(T t1, T t2)
-{
- return t1 < t2;
-}
-inline bool char_less(char t1, char t2)
-{
- return static_cast<unsigned char>(t1) < static_cast<unsigned char>(t2);
-}
-inline bool char_less(signed char t1, signed char t2)
-{
- return static_cast<unsigned char>(t1) < static_cast<unsigned char>(t2);
-}
-
-template <class charT, class traits>
-re_syntax_base* basic_regex_creator<charT, traits>::append_set(
- const basic_char_set<charT, traits>& char_set, mpl::true_*)
-{
- typedef typename traits::string_type string_type;
- typedef typename basic_char_set<charT, traits>::list_iterator item_iterator;
-
- re_set* result = static_cast<re_set*>(append_state(syntax_element_set, sizeof(re_set)));
- bool negate = char_set.is_negated();
- std::memset(result->_map, 0, sizeof(result->_map));
- //
- // handle singles first:
- //
- item_iterator first, last;
- first = char_set.singles_begin();
- last = char_set.singles_end();
- while(first != last)
- {
- for(unsigned int i = 0; i < (1 << CHAR_BIT); ++i)
- {
- if(this->m_traits.translate(static_cast<charT>(i), this->m_icase)
- == this->m_traits.translate(first->first, this->m_icase))
- result->_map[i] = true;
- }
- ++first;
- }
- //
- // OK now handle ranges:
- //
- first = char_set.ranges_begin();
- last = char_set.ranges_end();
- while(first != last)
- {
- // first grab the endpoints of the range:
- charT c1 = this->m_traits.translate(first->first, this->m_icase);
- ++first;
- charT c2 = this->m_traits.translate(first->first, this->m_icase);
- ++first;
- // different actions now depending upon whether collation is turned on:
- if(flags() & regex_constants::collate)
- {
- // we need to transform our range into sort keys:
- charT c3[2] = { c1, charT(0), };
- string_type s1 = this->m_traits.transform(c3, c3+1);
- c3[0] = c2;
- string_type s2 = this->m_traits.transform(c3, c3+1);
- if(s1 > s2)
- {
- // Oops error:
- return 0;
- }
- BOOST_ASSERT(c3[1] == charT(0));
- for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
- {
- c3[0] = static_cast<charT>(i);
- string_type s3 = this->m_traits.transform(c3, c3 +1);
- if((s1 <= s3) && (s3 <= s2))
- result->_map[i] = true;
- }
- }
- else
- {
- if(char_less(c2, c1))
- {
- // Oops error:
- return 0;
- }
- // everything in range matches:
- std::memset(result->_map + static_cast<unsigned char>(c1), true, 1 + static_cast<unsigned char>(c2) - static_cast<unsigned char>(c1));
- }
- }
- //
- // and now the classes:
- //
- typedef typename traits::char_class_type m_type;
- m_type m = char_set.classes();
- if(flags() & regbase::icase)
- {
- // adjust m as needed:
- if(((m & m_lower_mask) == m_lower_mask) || ((m & m_upper_mask) == m_upper_mask))
- m |= m_alpha_mask;
- }
- if(m != 0)
- {
- for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
- {
- if(this->m_traits.isctype(static_cast<charT>(i), m))
- result->_map[i] = true;
- }
- }
- //
- // and now the negated classes:
- //
- m = char_set.negated_classes();
- if(flags() & regbase::icase)
- {
- // adjust m as needed:
- if(((m & m_lower_mask) == m_lower_mask) || ((m & m_upper_mask) == m_upper_mask))
- m |= m_alpha_mask;
- }
- if(m != 0)
- {
- for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
- {
- if(0 == this->m_traits.isctype(static_cast<charT>(i), m))
- result->_map[i] = true;
- }
- }
- //
- // now process the equivalence classes:
- //
- first = char_set.equivalents_begin();
- last = char_set.equivalents_end();
- while(first != last)
- {
- string_type s;
- BOOST_ASSERT(static_cast<charT>(0) == first->second);
- s = m_traits.transform_primary(&first->first, &first->first+1);
- if(s.empty())
- return 0; // invalid or unsupported equivalence class
- for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
- {
- charT c[2] = { (static_cast<charT>(i)), charT(0), };
- string_type s2 = this->m_traits.transform_primary(c, c+1);
- if(s == s2)
- result->_map[i] = true;
- }
- ++first;
- }
- if(negate)
- {
- for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
- {
- result->_map[i] = !(result->_map[i]);
- }
- }
- return result;
-}
-
-template <class charT, class traits>
-void basic_regex_creator<charT, traits>::finalize(const charT* p1, const charT* p2)
-{
- if(this->m_pdata->m_status)
- return;
- // we've added all the states we need, now finish things off.
- // start by adding a terminating state:
- append_state(syntax_element_match);
- // extend storage to store original expression:
- std::ptrdiff_t len = p2 - p1;
- m_pdata->m_expression_len = len;
- charT* ps = static_cast<charT*>(m_pdata->m_data.extend(sizeof(charT) * (1 + (p2 - p1))));
- m_pdata->m_expression = ps;
- re_detail::copy(p1, p2, ps);
- ps[p2 - p1] = 0;
- // fill in our other data...
- // successful parsing implies a zero status:
- m_pdata->m_status = 0;
- // get the first state of the machine:
- m_pdata->m_first_state = static_cast<re_syntax_base*>(m_pdata->m_data.data());
- // fixup pointers in the machine:
- fixup_pointers(m_pdata->m_first_state);
- if(m_has_recursions)
- {
- m_pdata->m_has_recursions = true;
- fixup_recursions(m_pdata->m_first_state);
- if(this->m_pdata->m_status)
- return;
- }
- else
- m_pdata->m_has_recursions = false;
- // create nested startmaps:
- create_startmaps(m_pdata->m_first_state);
- // create main startmap:
- std::memset(m_pdata->m_startmap, 0, sizeof(m_pdata->m_startmap));
- m_pdata->m_can_be_null = 0;
-
- m_bad_repeats = 0;
- if(m_has_recursions)
- m_recursion_checks.assign(1 + m_pdata->m_mark_count, false);
- create_startmap(m_pdata->m_first_state, m_pdata->m_startmap, &(m_pdata->m_can_be_null), mask_all);
- // get the restart type:
- m_pdata->m_restart_type = get_restart_type(m_pdata->m_first_state);
- // optimise a leading repeat if there is one:
- probe_leading_repeat(m_pdata->m_first_state);
-}
-
-template <class charT, class traits>
-void basic_regex_creator<charT, traits>::fixup_pointers(re_syntax_base* state)
-{
- while(state)
- {
- switch(state->type)
- {
- case syntax_element_recurse:
- m_has_recursions = true;
- if(state->next.i)
- state->next.p = getaddress(state->next.i, state);
- else
- state->next.p = 0;
- break;
- case syntax_element_rep:
- case syntax_element_dot_rep:
- case syntax_element_char_rep:
- case syntax_element_short_set_rep:
- case syntax_element_long_set_rep:
- // set the state_id of this repeat:
- static_cast<re_repeat*>(state)->state_id = m_repeater_id++;
- BOOST_FALLTHROUGH;
- case syntax_element_alt:
- std::memset(static_cast<re_alt*>(state)->_map, 0, sizeof(static_cast<re_alt*>(state)->_map));
- static_cast<re_alt*>(state)->can_be_null = 0;
- BOOST_FALLTHROUGH;
- case syntax_element_jump:
- static_cast<re_jump*>(state)->alt.p = getaddress(static_cast<re_jump*>(state)->alt.i, state);
- BOOST_FALLTHROUGH;
- default:
- if(state->next.i)
- state->next.p = getaddress(state->next.i, state);
- else
- state->next.p = 0;
- }
- state = state->next.p;
- }
-}
-
-template <class charT, class traits>
-void basic_regex_creator<charT, traits>::fixup_recursions(re_syntax_base* state)
-{
- re_syntax_base* base = state;
- while(state)
- {
- switch(state->type)
- {
- case syntax_element_assert_backref:
- {
- // just check that the index is valid:
- int idx = static_cast<const re_brace*>(state)->index;
- if(idx < 0)
- {
- idx = -idx-1;
- if(idx >= 10000)
- {
- idx = m_pdata->get_id(idx);
- if(idx <= 0)
- {
- // check of sub-expression that doesn't exist:
- if(0 == this->m_pdata->m_status) // update the error code if not already set
- this->m_pdata->m_status = cutl_details_boost::regex_constants::error_bad_pattern;
- //
- // clear the expression, we should be empty:
- //
- this->m_pdata->m_expression = 0;
- this->m_pdata->m_expression_len = 0;
- //
- // and throw if required:
- //
- if(0 == (this->flags() & regex_constants::no_except))
- {
- std::string message = "Encountered a forward reference to a marked sub-expression that does not exist.";
- cutl_details_boost::regex_error e(message, cutl_details_boost::regex_constants::error_bad_pattern, 0);
- e.raise();
- }
- }
- }
- }
- }
- break;
- case syntax_element_recurse:
- {
- bool ok = false;
- re_syntax_base* p = base;
- std::ptrdiff_t idx = static_cast<re_jump*>(state)->alt.i;
- if(idx > 10000)
- {
- //
- // There may be more than one capture group with this hash, just do what Perl
- // does and recurse to the leftmost:
- //
- idx = m_pdata->get_id(static_cast<int>(idx));
- }
- while(p)
- {
- if((p->type == syntax_element_startmark) && (static_cast<re_brace*>(p)->index == idx))
- {
- //
- // We've found the target of the recursion, set the jump target:
- //
- static_cast<re_jump*>(state)->alt.p = p;
- ok = true;
- //
- // Now scan the target for nested repeats:
- //
- p = p->next.p;
- int next_rep_id = 0;
- while(p)
- {
- switch(p->type)
- {
- case syntax_element_rep:
- case syntax_element_dot_rep:
- case syntax_element_char_rep:
- case syntax_element_short_set_rep:
- case syntax_element_long_set_rep:
- next_rep_id = static_cast<re_repeat*>(p)->state_id;
- break;
- case syntax_element_endmark:
- if(static_cast<const re_brace*>(p)->index == idx)
- next_rep_id = -1;
- break;
- default:
- break;
- }
- if(next_rep_id)
- break;
- p = p->next.p;
- }
- if(next_rep_id > 0)
- {
- static_cast<re_recurse*>(state)->state_id = next_rep_id - 1;
- }
-
- break;
- }
- p = p->next.p;
- }
- if(!ok)
- {
- // recursion to sub-expression that doesn't exist:
- if(0 == this->m_pdata->m_status) // update the error code if not already set
- this->m_pdata->m_status = cutl_details_boost::regex_constants::error_bad_pattern;
- //
- // clear the expression, we should be empty:
- //
- this->m_pdata->m_expression = 0;
- this->m_pdata->m_expression_len = 0;
- //
- // and throw if required:
- //
- if(0 == (this->flags() & regex_constants::no_except))
- {
- std::string message = "Encountered a forward reference to a recursive sub-expression that does not exist.";
- cutl_details_boost::regex_error e(message, cutl_details_boost::regex_constants::error_bad_pattern, 0);
- e.raise();
- }
- }
- }
- break;
- default:
- break;
- }
- state = state->next.p;
- }
-}
-
-template <class charT, class traits>
-void basic_regex_creator<charT, traits>::create_startmaps(re_syntax_base* state)
-{
- // non-recursive implementation:
- // create the last map in the machine first, so that earlier maps
- // can make use of the result...
- //
- // This was originally a recursive implementation, but that caused stack
- // overflows with complex expressions on small stacks (think COM+).
-
- // start by saving the case setting:
- bool l_icase = m_icase;
- std::vector<std::pair<bool, re_syntax_base*> > v;
-
- while(state)
- {
- switch(state->type)
- {
- case syntax_element_toggle_case:
- // we need to track case changes here:
- m_icase = static_cast<re_case*>(state)->icase;
- state = state->next.p;
- continue;
- case syntax_element_alt:
- case syntax_element_rep:
- case syntax_element_dot_rep:
- case syntax_element_char_rep:
- case syntax_element_short_set_rep:
- case syntax_element_long_set_rep:
- // just push the state onto our stack for now:
- v.push_back(std::pair<bool, re_syntax_base*>(m_icase, state));
- state = state->next.p;
- break;
- case syntax_element_backstep:
- // we need to calculate how big the backstep is:
- static_cast<re_brace*>(state)->index
- = this->calculate_backstep(state->next.p);
- if(static_cast<re_brace*>(state)->index < 0)
- {
- // Oops error:
- if(0 == this->m_pdata->m_status) // update the error code if not already set
- this->m_pdata->m_status = cutl_details_boost::regex_constants::error_bad_pattern;
- //
- // clear the expression, we should be empty:
- //
- this->m_pdata->m_expression = 0;
- this->m_pdata->m_expression_len = 0;
- //
- // and throw if required:
- //
- if(0 == (this->flags() & regex_constants::no_except))
- {
- std::string message = "Invalid lookbehind assertion encountered in the regular expression.";
- cutl_details_boost::regex_error e(message, cutl_details_boost::regex_constants::error_bad_pattern, 0);
- e.raise();
- }
- }
- BOOST_FALLTHROUGH;
- default:
- state = state->next.p;
- }
- }
-
- // now work through our list, building all the maps as we go:
- while(v.size())
- {
- // Initialize m_recursion_checks if we need it:
- if(m_has_recursions)
- m_recursion_checks.assign(1 + m_pdata->m_mark_count, false);
-
- const std::pair<bool, re_syntax_base*>& p = v.back();
- m_icase = p.first;
- state = p.second;
- v.pop_back();
-
- // Build maps:
- m_bad_repeats = 0;
- create_startmap(state->next.p, static_cast<re_alt*>(state)->_map, &static_cast<re_alt*>(state)->can_be_null, mask_take);
- m_bad_repeats = 0;
-
- if(m_has_recursions)
- m_recursion_checks.assign(1 + m_pdata->m_mark_count, false);
- create_startmap(static_cast<re_alt*>(state)->alt.p, static_cast<re_alt*>(state)->_map, &static_cast<re_alt*>(state)->can_be_null, mask_skip);
- // adjust the type of the state to allow for faster matching:
- state->type = this->get_repeat_type(state);
- }
- // restore case sensitivity:
- m_icase = l_icase;
-}
-
-template <class charT, class traits>
-int basic_regex_creator<charT, traits>::calculate_backstep(re_syntax_base* state)
-{
- typedef typename traits::char_class_type m_type;
- int result = 0;
- while(state)
- {
- switch(state->type)
- {
- case syntax_element_startmark:
- if((static_cast<re_brace*>(state)->index == -1)
- || (static_cast<re_brace*>(state)->index == -2))
- {
- state = static_cast<re_jump*>(state->next.p)->alt.p->next.p;
- continue;
- }
- else if(static_cast<re_brace*>(state)->index == -3)
- {
- state = state->next.p->next.p;
- continue;
- }
- break;
- case syntax_element_endmark:
- if((static_cast<re_brace*>(state)->index == -1)
- || (static_cast<re_brace*>(state)->index == -2))
- return result;
- break;
- case syntax_element_literal:
- result += static_cast<re_literal*>(state)->length;
- break;
- case syntax_element_wild:
- case syntax_element_set:
- result += 1;
- break;
- case syntax_element_dot_rep:
- case syntax_element_char_rep:
- case syntax_element_short_set_rep:
- case syntax_element_backref:
- case syntax_element_rep:
- case syntax_element_combining:
- case syntax_element_long_set_rep:
- case syntax_element_backstep:
- {
- re_repeat* rep = static_cast<re_repeat *>(state);
- // adjust the type of the state to allow for faster matching:
- state->type = this->get_repeat_type(state);
- if((state->type == syntax_element_dot_rep)
- || (state->type == syntax_element_char_rep)
- || (state->type == syntax_element_short_set_rep))
- {
- if(rep->max != rep->min)
- return -1;
- result += static_cast<int>(rep->min);
- state = rep->alt.p;
- continue;
- }
- else if(state->type == syntax_element_long_set_rep)
- {
- BOOST_ASSERT(rep->next.p->type == syntax_element_long_set);
- if(static_cast<re_set_long<m_type>*>(rep->next.p)->singleton == 0)
- return -1;
- if(rep->max != rep->min)
- return -1;
- result += static_cast<int>(rep->min);
- state = rep->alt.p;
- continue;
- }
- }
- return -1;
- case syntax_element_long_set:
- if(static_cast<re_set_long<m_type>*>(state)->singleton == 0)
- return -1;
- result += 1;
- break;
- case syntax_element_jump:
- state = static_cast<re_jump*>(state)->alt.p;
- continue;
- case syntax_element_alt:
- {
- int r1 = calculate_backstep(state->next.p);
- int r2 = calculate_backstep(static_cast<re_alt*>(state)->alt.p);
- if((r1 < 0) || (r1 != r2))
- return -1;
- return result + r1;
- }
- default:
- break;
- }
- state = state->next.p;
- }
- return -1;
-}
-
-template <class charT, class traits>
-void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask)
-{
- int not_last_jump = 1;
- re_syntax_base* recursion_start = 0;
- int recursion_sub = 0;
- re_syntax_base* recursion_restart = 0;
-
- // track case sensitivity:
- bool l_icase = m_icase;
-
- while(state)
- {
- switch(state->type)
- {
- case syntax_element_toggle_case:
- l_icase = static_cast<re_case*>(state)->icase;
- state = state->next.p;
- break;
- case syntax_element_literal:
- {
- // don't set anything in *pnull, set each element in l_map
- // that could match the first character in the literal:
- if(l_map)
- {
- l_map[0] |= mask_init;
- charT first_char = *static_cast<charT*>(static_cast<void*>(static_cast<re_literal*>(state) + 1));
- for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
- {
- if(m_traits.translate(static_cast<charT>(i), l_icase) == first_char)
- l_map[i] |= mask;
- }
- }
- return;
- }
- case syntax_element_end_line:
- {
- // next character must be a line separator (if there is one):
- if(l_map)
- {
- l_map[0] |= mask_init;
- l_map[static_cast<unsigned>('\n')] |= mask;
- l_map[static_cast<unsigned>('\r')] |= mask;
- l_map[static_cast<unsigned>('\f')] |= mask;
- l_map[0x85] |= mask;
- }
- // now figure out if we can match a NULL string at this point:
- if(pnull)
- create_startmap(state->next.p, 0, pnull, mask);
- return;
- }
- case syntax_element_recurse:
- {
- if(state->type == syntax_element_startmark)
- recursion_sub = static_cast<re_brace*>(state)->index;
- else
- recursion_sub = 0;
- if(m_recursion_checks[recursion_sub])
- {
- // Infinite recursion!!
- if(0 == this->m_pdata->m_status) // update the error code if not already set
- this->m_pdata->m_status = cutl_details_boost::regex_constants::error_bad_pattern;
- //
- // clear the expression, we should be empty:
- //
- this->m_pdata->m_expression = 0;
- this->m_pdata->m_expression_len = 0;
- //
- // and throw if required:
- //
- if(0 == (this->flags() & regex_constants::no_except))
- {
- std::string message = "Encountered an infinite recursion.";
- cutl_details_boost::regex_error e(message, cutl_details_boost::regex_constants::error_bad_pattern, 0);
- e.raise();
- }
- }
- else if(recursion_start == 0)
- {
- recursion_start = state;
- recursion_restart = state->next.p;
- state = static_cast<re_jump*>(state)->alt.p;
- m_recursion_checks[recursion_sub] = true;
- break;
- }
- m_recursion_checks[recursion_sub] = true;
- // can't handle nested recursion here...
- BOOST_FALLTHROUGH;
- }
- case syntax_element_backref:
- // can be null, and any character can match:
- if(pnull)
- *pnull |= mask;
- BOOST_FALLTHROUGH;
- case syntax_element_wild:
- {
- // can't be null, any character can match:
- set_all_masks(l_map, mask);
- return;
- }
- case syntax_element_match:
- {
- // must be null, any character can match:
- set_all_masks(l_map, mask);
- if(pnull)
- *pnull |= mask;
- return;
- }
- case syntax_element_word_start:
- {
- // recurse, then AND with all the word characters:
- create_startmap(state->next.p, l_map, pnull, mask);
- if(l_map)
- {
- l_map[0] |= mask_init;
- for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
- {
- if(!m_traits.isctype(static_cast<charT>(i), m_word_mask))
- l_map[i] &= static_cast<unsigned char>(~mask);
- }
- }
- return;
- }
- case syntax_element_word_end:
- {
- // recurse, then AND with all the word characters:
- create_startmap(state->next.p, l_map, pnull, mask);
- if(l_map)
- {
- l_map[0] |= mask_init;
- for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
- {
- if(m_traits.isctype(static_cast<charT>(i), m_word_mask))
- l_map[i] &= static_cast<unsigned char>(~mask);
- }
- }
- return;
- }
- case syntax_element_buffer_end:
- {
- // we *must be null* :
- if(pnull)
- *pnull |= mask;
- return;
- }
- case syntax_element_long_set:
- if(l_map)
- {
- typedef typename traits::char_class_type m_type;
- if(static_cast<re_set_long<m_type>*>(state)->singleton)
- {
- l_map[0] |= mask_init;
- for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
- {
- charT c = static_cast<charT>(i);
- if(&c != re_is_set_member(&c, &c + 1, static_cast<re_set_long<m_type>*>(state), *m_pdata, l_icase))
- l_map[i] |= mask;
- }
- }
- else
- set_all_masks(l_map, mask);
- }
- return;
- case syntax_element_set:
- if(l_map)
- {
- l_map[0] |= mask_init;
- for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
- {
- if(static_cast<re_set*>(state)->_map[
- static_cast<unsigned char>(m_traits.translate(static_cast<charT>(i), l_icase))])
- l_map[i] |= mask;
- }
- }
- return;
- case syntax_element_jump:
- // take the jump:
- state = static_cast<re_alt*>(state)->alt.p;
- not_last_jump = -1;
- break;
- case syntax_element_alt:
- case syntax_element_rep:
- case syntax_element_dot_rep:
- case syntax_element_char_rep:
- case syntax_element_short_set_rep:
- case syntax_element_long_set_rep:
- {
- re_alt* rep = static_cast<re_alt*>(state);
- if(rep->_map[0] & mask_init)
- {
- if(l_map)
- {
- // copy previous results:
- l_map[0] |= mask_init;
- for(unsigned int i = 0; i <= UCHAR_MAX; ++i)
- {
- if(rep->_map[i] & mask_any)
- l_map[i] |= mask;
- }
- }
- if(pnull)
- {
- if(rep->can_be_null & mask_any)
- *pnull |= mask;
- }
- }
- else
- {
- // we haven't created a startmap for this alternative yet
- // so take the union of the two options:
- if(is_bad_repeat(state))
- {
- set_all_masks(l_map, mask);
- if(pnull)
- *pnull |= mask;
- return;
- }
- set_bad_repeat(state);
- create_startmap(state->next.p, l_map, pnull, mask);
- if((state->type == syntax_element_alt)
- || (static_cast<re_repeat*>(state)->min == 0)
- || (not_last_jump == 0))
- create_startmap(rep->alt.p, l_map, pnull, mask);
- }
- }
- return;
- case syntax_element_soft_buffer_end:
- // match newline or null:
- if(l_map)
- {
- l_map[0] |= mask_init;
- l_map[static_cast<unsigned>('\n')] |= mask;
- l_map[static_cast<unsigned>('\r')] |= mask;
- }
- if(pnull)
- *pnull |= mask;
- return;
- case syntax_element_endmark:
- // need to handle independent subs as a special case:
- if(static_cast<re_brace*>(state)->index < 0)
- {
- // can be null, any character can match:
- set_all_masks(l_map, mask);
- if(pnull)
- *pnull |= mask;
- return;
- }
- else if(recursion_start && (recursion_sub != 0) && (recursion_sub == static_cast<re_brace*>(state)->index))
- {
- // recursion termination:
- recursion_start = 0;
- state = recursion_restart;
- break;
- }
-
- //
- // Normally we just go to the next state... but if this sub-expression is
- // the target of a recursion, then we might be ending a recursion, in which
- // case we should check whatever follows that recursion, as well as whatever
- // follows this state:
- //
- if(m_pdata->m_has_recursions && static_cast<re_brace*>(state)->index)
- {
- bool ok = false;
- re_syntax_base* p = m_pdata->m_first_state;
- while(p)
- {
- if(p->type == syntax_element_recurse)
- {
- re_brace* p2 = static_cast<re_brace*>(static_cast<re_jump*>(p)->alt.p);
- if((p2->type == syntax_element_startmark) && (p2->index == static_cast<re_brace*>(state)->index))
- {
- ok = true;
- break;
- }
- }
- p = p->next.p;
- }
- if(ok)
- {
- create_startmap(p->next.p, l_map, pnull, mask);
- }
- }
- state = state->next.p;
- break;
-
- case syntax_element_startmark:
- // need to handle independent subs as a special case:
- if(static_cast<re_brace*>(state)->index == -3)
- {
- state = state->next.p->next.p;
- break;
- }
- BOOST_FALLTHROUGH;
- default:
- state = state->next.p;
- }
- ++not_last_jump;
- }
-}
-
-template <class charT, class traits>
-unsigned basic_regex_creator<charT, traits>::get_restart_type(re_syntax_base* state)
-{
- //
- // find out how the machine starts, so we can optimise the search:
- //
- while(state)
- {
- switch(state->type)
- {
- case syntax_element_startmark:
- case syntax_element_endmark:
- state = state->next.p;
- continue;
- case syntax_element_start_line:
- return regbase::restart_line;
- case syntax_element_word_start:
- return regbase::restart_word;
- case syntax_element_buffer_start:
- return regbase::restart_buf;
- case syntax_element_restart_continue:
- return regbase::restart_continue;
- default:
- state = 0;
- continue;
- }
- }
- return regbase::restart_any;
-}
-
-template <class charT, class traits>
-void basic_regex_creator<charT, traits>::set_all_masks(unsigned char* bits, unsigned char mask)
-{
- //
- // set mask in all of bits elements,
- // if bits[0] has mask_init not set then we can
- // optimise this to a call to memset:
- //
- if(bits)
- {
- if(bits[0] == 0)
- (std::memset)(bits, mask, 1u << CHAR_BIT);
- else
- {
- for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
- bits[i] |= mask;
- }
- bits[0] |= mask_init;
- }
-}
-
-template <class charT, class traits>
-bool basic_regex_creator<charT, traits>::is_bad_repeat(re_syntax_base* pt)
-{
- switch(pt->type)
- {
- case syntax_element_rep:
- case syntax_element_dot_rep:
- case syntax_element_char_rep:
- case syntax_element_short_set_rep:
- case syntax_element_long_set_rep:
- {
- unsigned state_id = static_cast<re_repeat*>(pt)->state_id;
- if(state_id > sizeof(m_bad_repeats) * CHAR_BIT)
- return true; // run out of bits, assume we can't traverse this one.
- static const cutl_details_boost::uintmax_t one = 1uL;
- return m_bad_repeats & (one << state_id);
- }
- default:
- return false;
- }
-}
-
-template <class charT, class traits>
-void basic_regex_creator<charT, traits>::set_bad_repeat(re_syntax_base* pt)
-{
- switch(pt->type)
- {
- case syntax_element_rep:
- case syntax_element_dot_rep:
- case syntax_element_char_rep:
- case syntax_element_short_set_rep:
- case syntax_element_long_set_rep:
- {
- unsigned state_id = static_cast<re_repeat*>(pt)->state_id;
- static const cutl_details_boost::uintmax_t one = 1uL;
- if(state_id <= sizeof(m_bad_repeats) * CHAR_BIT)
- m_bad_repeats |= (one << state_id);
- }
- break;
- default:
- break;
- }
-}
-
-template <class charT, class traits>
-syntax_element_type basic_regex_creator<charT, traits>::get_repeat_type(re_syntax_base* state)
-{
- typedef typename traits::char_class_type m_type;
- if(state->type == syntax_element_rep)
- {
- // check to see if we are repeating a single state:
- if(state->next.p->next.p->next.p == static_cast<re_alt*>(state)->alt.p)
- {
- switch(state->next.p->type)
- {
- case re_detail::syntax_element_wild:
- return re_detail::syntax_element_dot_rep;
- case re_detail::syntax_element_literal:
- return re_detail::syntax_element_char_rep;
- case re_detail::syntax_element_set:
- return re_detail::syntax_element_short_set_rep;
- case re_detail::syntax_element_long_set:
- if(static_cast<re_detail::re_set_long<m_type>*>(state->next.p)->singleton)
- return re_detail::syntax_element_long_set_rep;
- break;
- default:
- break;
- }
- }
- }
- return state->type;
-}
-
-template <class charT, class traits>
-void basic_regex_creator<charT, traits>::probe_leading_repeat(re_syntax_base* state)
-{
- // enumerate our states, and see if we have a leading repeat
- // for which failed search restarts can be optimised;
- do
- {
- switch(state->type)
- {
- case syntax_element_startmark:
- if(static_cast<re_brace*>(state)->index >= 0)
- {
- state = state->next.p;
- continue;
- }
- if((static_cast<re_brace*>(state)->index == -1)
- || (static_cast<re_brace*>(state)->index == -2))
- {
- // skip past the zero width assertion:
- state = static_cast<const re_jump*>(state->next.p)->alt.p->next.p;
- continue;
- }
- if(static_cast<re_brace*>(state)->index == -3)
- {
- // Have to skip the leading jump state:
- state = state->next.p->next.p;
- continue;
- }
- return;
- case syntax_element_endmark:
- case syntax_element_start_line:
- case syntax_element_end_line:
- case syntax_element_word_boundary:
- case syntax_element_within_word:
- case syntax_element_word_start:
- case syntax_element_word_end:
- case syntax_element_buffer_start:
- case syntax_element_buffer_end:
- case syntax_element_restart_continue:
- state = state->next.p;
- break;
- case syntax_element_dot_rep:
- case syntax_element_char_rep:
- case syntax_element_short_set_rep:
- case syntax_element_long_set_rep:
- if(this->m_has_backrefs == 0)
- static_cast<re_repeat*>(state)->leading = true;
- BOOST_FALLTHROUGH;
- default:
- return;
- }
- }while(state);
-}
-
-
-} // namespace re_detail
-
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/v4/basic_regex_parser.hpp b/libcutl/cutl/details/boost/regex/v4/basic_regex_parser.hpp
deleted file mode 100644
index 9182da2..0000000
--- a/libcutl/cutl/details/boost/regex/v4/basic_regex_parser.hpp
+++ /dev/null
@@ -1,2874 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE basic_regex_parser.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares template class basic_regex_parser.
- */
-
-#ifndef BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP
-#define BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-namespace re_detail{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4244 4800)
-#endif
-
-template <class charT, class traits>
-class basic_regex_parser : public basic_regex_creator<charT, traits>
-{
-public:
- basic_regex_parser(regex_data<charT, traits>* data);
- void parse(const charT* p1, const charT* p2, unsigned flags);
- void fail(regex_constants::error_type error_code, std::ptrdiff_t position);
- void fail(regex_constants::error_type error_code, std::ptrdiff_t position, std::string message, std::ptrdiff_t start_pos);
- void fail(regex_constants::error_type error_code, std::ptrdiff_t position, const std::string& message)
- {
- fail(error_code, position, message, position);
- }
-
- bool parse_all();
- bool parse_basic();
- bool parse_extended();
- bool parse_literal();
- bool parse_open_paren();
- bool parse_basic_escape();
- bool parse_extended_escape();
- bool parse_match_any();
- bool parse_repeat(std::size_t low = 0, std::size_t high = (std::numeric_limits<std::size_t>::max)());
- bool parse_repeat_range(bool isbasic);
- bool parse_alt();
- bool parse_set();
- bool parse_backref();
- void parse_set_literal(basic_char_set<charT, traits>& char_set);
- bool parse_inner_set(basic_char_set<charT, traits>& char_set);
- bool parse_QE();
- bool parse_perl_extension();
- bool add_emacs_code(bool negate);
- bool unwind_alts(std::ptrdiff_t last_paren_start);
- digraph<charT> get_next_set_literal(basic_char_set<charT, traits>& char_set);
- charT unescape_character();
- regex_constants::syntax_option_type parse_options();
-
-private:
- typedef bool (basic_regex_parser::*parser_proc_type)();
- typedef typename traits::string_type string_type;
- typedef typename traits::char_class_type char_class_type;
- parser_proc_type m_parser_proc; // the main parser to use
- const charT* m_base; // the start of the string being parsed
- const charT* m_end; // the end of the string being parsed
- const charT* m_position; // our current parser position
- unsigned m_mark_count; // how many sub-expressions we have
- int m_mark_reset; // used to indicate that we're inside a (?|...) block.
- unsigned m_max_mark; // largest mark count seen inside a (?|...) block.
- std::ptrdiff_t m_paren_start; // where the last seen ')' began (where repeats are inserted).
- std::ptrdiff_t m_alt_insert_point; // where to insert the next alternative
- bool m_has_case_change; // true if somewhere in the current block the case has changed
-#if defined(BOOST_MSVC) && defined(_M_IX86)
- // This is an ugly warning suppression workaround (for warnings *inside* std::vector
- // that can not otherwise be suppressed)...
- BOOST_STATIC_ASSERT(sizeof(long) >= sizeof(void*));
- std::vector<long> m_alt_jumps; // list of alternative in the current scope.
-#else
- std::vector<std::ptrdiff_t> m_alt_jumps; // list of alternative in the current scope.
-#endif
-
- basic_regex_parser& operator=(const basic_regex_parser&);
- basic_regex_parser(const basic_regex_parser&);
-};
-
-template <class charT, class traits>
-basic_regex_parser<charT, traits>::basic_regex_parser(regex_data<charT, traits>* data)
- : basic_regex_creator<charT, traits>(data), m_mark_count(0), m_mark_reset(-1), m_max_mark(0), m_paren_start(0), m_alt_insert_point(0), m_has_case_change(false)
-{
-}
-
-template <class charT, class traits>
-void basic_regex_parser<charT, traits>::parse(const charT* p1, const charT* p2, unsigned l_flags)
-{
- // pass l_flags on to base class:
- this->init(l_flags);
- // set up pointers:
- m_position = m_base = p1;
- m_end = p2;
- // empty strings are errors:
- if((p1 == p2) &&
- (
- ((l_flags & regbase::main_option_type) != regbase::perl_syntax_group)
- || (l_flags & regbase::no_empty_expressions)
- )
- )
- {
- fail(regex_constants::error_empty, 0);
- return;
- }
- // select which parser to use:
- switch(l_flags & regbase::main_option_type)
- {
- case regbase::perl_syntax_group:
- {
- m_parser_proc = &basic_regex_parser<charT, traits>::parse_extended;
- //
- // Add a leading paren with index zero to give recursions a target:
- //
- re_brace* br = static_cast<re_brace*>(this->append_state(syntax_element_startmark, sizeof(re_brace)));
- br->index = 0;
- br->icase = this->flags() & regbase::icase;
- break;
- }
- case regbase::basic_syntax_group:
- m_parser_proc = &basic_regex_parser<charT, traits>::parse_basic;
- break;
- case regbase::literal:
- m_parser_proc = &basic_regex_parser<charT, traits>::parse_literal;
- break;
- default:
- // Ooops, someone has managed to set more than one of the main option flags,
- // so this must be an error:
- fail(regex_constants::error_unknown, 0, "An invalid combination of regular expression syntax flags was used.");
- return;
- }
-
- // parse all our characters:
- bool result = parse_all();
- //
- // Unwind our alternatives:
- //
- unwind_alts(-1);
- // reset l_flags as a global scope (?imsx) may have altered them:
- this->flags(l_flags);
- // if we haven't gobbled up all the characters then we must
- // have had an unexpected ')' :
- if(!result)
- {
- fail(regex_constants::error_paren, ::cutl_details_boost::re_detail::distance(m_base, m_position), "Found a closing ) with no corresponding openening parenthesis.");
- return;
- }
- // if an error has been set then give up now:
- if(this->m_pdata->m_status)
- return;
- // fill in our sub-expression count:
- this->m_pdata->m_mark_count = 1 + m_mark_count;
- this->finalize(p1, p2);
-}
-
-template <class charT, class traits>
-void basic_regex_parser<charT, traits>::fail(regex_constants::error_type error_code, std::ptrdiff_t position)
-{
- // get the error message:
- std::string message = this->m_pdata->m_ptraits->error_string(error_code);
- fail(error_code, position, message);
-}
-
-template <class charT, class traits>
-void basic_regex_parser<charT, traits>::fail(regex_constants::error_type error_code, std::ptrdiff_t position, std::string message, std::ptrdiff_t start_pos)
-{
- if(0 == this->m_pdata->m_status) // update the error code if not already set
- this->m_pdata->m_status = error_code;
- m_position = m_end; // don't bother parsing anything else
-
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- //
- // Augment error message with the regular expression text:
- //
- if(start_pos == position)
- start_pos = (std::max)(static_cast<std::ptrdiff_t>(0), position - static_cast<std::ptrdiff_t>(10));
- std::ptrdiff_t end_pos = (std::min)(position + static_cast<std::ptrdiff_t>(10), static_cast<std::ptrdiff_t>(m_end - m_base));
- if(error_code != regex_constants::error_empty)
- {
- if((start_pos != 0) || (end_pos != (m_end - m_base)))
- message += " The error occurred while parsing the regular expression fragment: '";
- else
- message += " The error occurred while parsing the regular expression: '";
- if(start_pos != end_pos)
- {
- message += std::string(m_base + start_pos, m_base + position);
- message += ">>>HERE>>>";
- message += std::string(m_base + position, m_base + end_pos);
- }
- message += "'.";
- }
-#endif
-
-#ifndef BOOST_NO_EXCEPTIONS
- if(0 == (this->flags() & regex_constants::no_except))
- {
- cutl_details_boost::regex_error e(message, error_code, position);
- e.raise();
- }
-#else
- (void)position; // suppress warnings.
-#endif
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_all()
-{
- bool result = true;
- while(result && (m_position != m_end))
- {
- result = (this->*m_parser_proc)();
- }
- return result;
-}
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4702)
-#endif
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_basic()
-{
- switch(this->m_traits.syntax_type(*m_position))
- {
- case regex_constants::syntax_escape:
- return parse_basic_escape();
- case regex_constants::syntax_dot:
- return parse_match_any();
- case regex_constants::syntax_caret:
- ++m_position;
- this->append_state(syntax_element_start_line);
- break;
- case regex_constants::syntax_dollar:
- ++m_position;
- this->append_state(syntax_element_end_line);
- break;
- case regex_constants::syntax_star:
- if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line))
- return parse_literal();
- else
- {
- ++m_position;
- return parse_repeat();
- }
- case regex_constants::syntax_plus:
- if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line) || !(this->flags() & regbase::emacs_ex))
- return parse_literal();
- else
- {
- ++m_position;
- return parse_repeat(1);
- }
- case regex_constants::syntax_question:
- if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line) || !(this->flags() & regbase::emacs_ex))
- return parse_literal();
- else
- {
- ++m_position;
- return parse_repeat(0, 1);
- }
- case regex_constants::syntax_open_set:
- return parse_set();
- case regex_constants::syntax_newline:
- if(this->flags() & regbase::newline_alt)
- return parse_alt();
- else
- return parse_literal();
- default:
- return parse_literal();
- }
- return true;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_extended()
-{
- bool result = true;
- switch(this->m_traits.syntax_type(*m_position))
- {
- case regex_constants::syntax_open_mark:
- return parse_open_paren();
- case regex_constants::syntax_close_mark:
- return false;
- case regex_constants::syntax_escape:
- return parse_extended_escape();
- case regex_constants::syntax_dot:
- return parse_match_any();
- case regex_constants::syntax_caret:
- ++m_position;
- this->append_state(
- (this->flags() & regex_constants::no_mod_m ? syntax_element_buffer_start : syntax_element_start_line));
- break;
- case regex_constants::syntax_dollar:
- ++m_position;
- this->append_state(
- (this->flags() & regex_constants::no_mod_m ? syntax_element_buffer_end : syntax_element_end_line));
- break;
- case regex_constants::syntax_star:
- if(m_position == this->m_base)
- {
- fail(regex_constants::error_badrepeat, 0, "The repeat operator \"*\" cannot start a regular expression.");
- return false;
- }
- ++m_position;
- return parse_repeat();
- case regex_constants::syntax_question:
- if(m_position == this->m_base)
- {
- fail(regex_constants::error_badrepeat, 0, "The repeat operator \"?\" cannot start a regular expression.");
- return false;
- }
- ++m_position;
- return parse_repeat(0,1);
- case regex_constants::syntax_plus:
- if(m_position == this->m_base)
- {
- fail(regex_constants::error_badrepeat, 0, "The repeat operator \"+\" cannot start a regular expression.");
- return false;
- }
- ++m_position;
- return parse_repeat(1);
- case regex_constants::syntax_open_brace:
- ++m_position;
- return parse_repeat_range(false);
- case regex_constants::syntax_close_brace:
- fail(regex_constants::error_brace, this->m_position - this->m_base, "Found a closing repetition operator } with no corresponding {.");
- return false;
- case regex_constants::syntax_or:
- return parse_alt();
- case regex_constants::syntax_open_set:
- return parse_set();
- case regex_constants::syntax_newline:
- if(this->flags() & regbase::newline_alt)
- return parse_alt();
- else
- return parse_literal();
- case regex_constants::syntax_hash:
- //
- // If we have a mod_x flag set, then skip until
- // we get to a newline character:
- //
- if((this->flags()
- & (regbase::no_perl_ex|regbase::mod_x))
- == regbase::mod_x)
- {
- while((m_position != m_end) && !is_separator(*m_position++)){}
- return true;
- }
- BOOST_FALLTHROUGH;
- default:
- result = parse_literal();
- break;
- }
- return result;
-}
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_literal()
-{
- // append this as a literal provided it's not a space character
- // or the perl option regbase::mod_x is not set:
- if(
- ((this->flags()
- & (regbase::main_option_type|regbase::mod_x|regbase::no_perl_ex))
- != regbase::mod_x)
- || !this->m_traits.isctype(*m_position, this->m_mask_space))
- this->append_literal(*m_position);
- ++m_position;
- return true;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_open_paren()
-{
- //
- // skip the '(' and error check:
- //
- if(++m_position == m_end)
- {
- fail(regex_constants::error_paren, m_position - m_base);
- return false;
- }
- //
- // begin by checking for a perl-style (?...) extension:
- //
- if(
- ((this->flags() & (regbase::main_option_type | regbase::no_perl_ex)) == 0)
- || ((this->flags() & (regbase::main_option_type | regbase::emacs_ex)) == (regbase::basic_syntax_group|regbase::emacs_ex))
- )
- {
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_question)
- return parse_perl_extension();
- }
- //
- // update our mark count, and append the required state:
- //
- unsigned markid = 0;
- if(0 == (this->flags() & regbase::nosubs))
- {
- markid = ++m_mark_count;
-#ifndef BOOST_NO_STD_DISTANCE
- if(this->flags() & regbase::save_subexpression_location)
- this->m_pdata->m_subs.push_back(std::pair<std::size_t, std::size_t>(std::distance(m_base, m_position) - 1, 0));
-#else
- if(this->flags() & regbase::save_subexpression_location)
- this->m_pdata->m_subs.push_back(std::pair<std::size_t, std::size_t>((m_position - m_base) - 1, 0));
-#endif
- }
- re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_startmark, sizeof(re_brace)));
- pb->index = markid;
- pb->icase = this->flags() & regbase::icase;
- std::ptrdiff_t last_paren_start = this->getoffset(pb);
- // back up insertion point for alternations, and set new point:
- std::ptrdiff_t last_alt_point = m_alt_insert_point;
- this->m_pdata->m_data.align();
- m_alt_insert_point = this->m_pdata->m_data.size();
- //
- // back up the current flags in case we have a nested (?imsx) group:
- //
- regex_constants::syntax_option_type opts = this->flags();
- bool old_case_change = m_has_case_change;
- m_has_case_change = false; // no changes to this scope as yet...
- //
- // Back up branch reset data in case we have a nested (?|...)
- //
- int mark_reset = m_mark_reset;
- m_mark_reset = -1;
- //
- // now recursively add more states, this will terminate when we get to a
- // matching ')' :
- //
- parse_all();
- //
- // Unwind pushed alternatives:
- //
- if(0 == unwind_alts(last_paren_start))
- return false;
- //
- // restore flags:
- //
- if(m_has_case_change)
- {
- // the case has changed in one or more of the alternatives
- // within the scoped (...) block: we have to add a state
- // to reset the case sensitivity:
- static_cast<re_case*>(
- this->append_state(syntax_element_toggle_case, sizeof(re_case))
- )->icase = opts & regbase::icase;
- }
- this->flags(opts);
- m_has_case_change = old_case_change;
- //
- // restore branch reset:
- //
- m_mark_reset = mark_reset;
- //
- // we either have a ')' or we have run out of characters prematurely:
- //
- if(m_position == m_end)
- {
- this->fail(regex_constants::error_paren, ::cutl_details_boost::re_detail::distance(m_base, m_end));
- return false;
- }
- BOOST_ASSERT(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark);
-#ifndef BOOST_NO_STD_DISTANCE
- if(markid && (this->flags() & regbase::save_subexpression_location))
- this->m_pdata->m_subs.at(markid - 1).second = std::distance(m_base, m_position);
-#else
- if(markid && (this->flags() & regbase::save_subexpression_location))
- this->m_pdata->m_subs.at(markid - 1).second = (m_position - m_base);
-#endif
- ++m_position;
- //
- // append closing parenthesis state:
- //
- pb = static_cast<re_brace*>(this->append_state(syntax_element_endmark, sizeof(re_brace)));
- pb->index = markid;
- pb->icase = this->flags() & regbase::icase;
- this->m_paren_start = last_paren_start;
- //
- // restore the alternate insertion point:
- //
- this->m_alt_insert_point = last_alt_point;
- //
- // allow backrefs to this mark:
- //
- if((markid > 0) && (markid < sizeof(unsigned) * CHAR_BIT))
- this->m_backrefs |= 1u << (markid - 1);
-
- return true;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_basic_escape()
-{
- ++m_position;
- bool result = true;
- switch(this->m_traits.escape_syntax_type(*m_position))
- {
- case regex_constants::syntax_open_mark:
- return parse_open_paren();
- case regex_constants::syntax_close_mark:
- return false;
- case regex_constants::syntax_plus:
- if(this->flags() & regex_constants::bk_plus_qm)
- {
- ++m_position;
- return parse_repeat(1);
- }
- else
- return parse_literal();
- case regex_constants::syntax_question:
- if(this->flags() & regex_constants::bk_plus_qm)
- {
- ++m_position;
- return parse_repeat(0, 1);
- }
- else
- return parse_literal();
- case regex_constants::syntax_open_brace:
- if(this->flags() & regbase::no_intervals)
- return parse_literal();
- ++m_position;
- return parse_repeat_range(true);
- case regex_constants::syntax_close_brace:
- if(this->flags() & regbase::no_intervals)
- return parse_literal();
- fail(regex_constants::error_brace, this->m_position - this->m_base, "Found a closing repetition operator } with no corresponding {.");
- return false;
- case regex_constants::syntax_or:
- if(this->flags() & regbase::bk_vbar)
- return parse_alt();
- else
- result = parse_literal();
- break;
- case regex_constants::syntax_digit:
- return parse_backref();
- case regex_constants::escape_type_start_buffer:
- if(this->flags() & regbase::emacs_ex)
- {
- ++m_position;
- this->append_state(syntax_element_buffer_start);
- }
- else
- result = parse_literal();
- break;
- case regex_constants::escape_type_end_buffer:
- if(this->flags() & regbase::emacs_ex)
- {
- ++m_position;
- this->append_state(syntax_element_buffer_end);
- }
- else
- result = parse_literal();
- break;
- case regex_constants::escape_type_word_assert:
- if(this->flags() & regbase::emacs_ex)
- {
- ++m_position;
- this->append_state(syntax_element_word_boundary);
- }
- else
- result = parse_literal();
- break;
- case regex_constants::escape_type_not_word_assert:
- if(this->flags() & regbase::emacs_ex)
- {
- ++m_position;
- this->append_state(syntax_element_within_word);
- }
- else
- result = parse_literal();
- break;
- case regex_constants::escape_type_left_word:
- if(this->flags() & regbase::emacs_ex)
- {
- ++m_position;
- this->append_state(syntax_element_word_start);
- }
- else
- result = parse_literal();
- break;
- case regex_constants::escape_type_right_word:
- if(this->flags() & regbase::emacs_ex)
- {
- ++m_position;
- this->append_state(syntax_element_word_end);
- }
- else
- result = parse_literal();
- break;
- default:
- if(this->flags() & regbase::emacs_ex)
- {
- bool negate = true;
- switch(*m_position)
- {
- case 'w':
- negate = false;
- BOOST_FALLTHROUGH;
- case 'W':
- {
- basic_char_set<charT, traits> char_set;
- if(negate)
- char_set.negate();
- char_set.add_class(this->m_word_mask);
- if(0 == this->append_set(char_set))
- {
- fail(regex_constants::error_ctype, m_position - m_base);
- return false;
- }
- ++m_position;
- return true;
- }
- case 's':
- negate = false;
- BOOST_FALLTHROUGH;
- case 'S':
- return add_emacs_code(negate);
- case 'c':
- case 'C':
- // not supported yet:
- fail(regex_constants::error_escape, m_position - m_base, "The \\c and \\C escape sequences are not supported by POSIX basic regular expressions: try the Perl syntax instead.");
- return false;
- default:
- break;
- }
- }
- result = parse_literal();
- break;
- }
- return result;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_extended_escape()
-{
- ++m_position;
- if(m_position == m_end)
- {
- fail(regex_constants::error_escape, m_position - m_base, "Incomplete escape sequence found.");
- return false;
- }
- bool negate = false; // in case this is a character class escape: \w \d etc
- switch(this->m_traits.escape_syntax_type(*m_position))
- {
- case regex_constants::escape_type_not_class:
- negate = true;
- BOOST_FALLTHROUGH;
- case regex_constants::escape_type_class:
- {
-escape_type_class_jump:
- typedef typename traits::char_class_type m_type;
- m_type m = this->m_traits.lookup_classname(m_position, m_position+1);
- if(m != 0)
- {
- basic_char_set<charT, traits> char_set;
- if(negate)
- char_set.negate();
- char_set.add_class(m);
- if(0 == this->append_set(char_set))
- {
- fail(regex_constants::error_ctype, m_position - m_base);
- return false;
- }
- ++m_position;
- return true;
- }
- //
- // not a class, just a regular unknown escape:
- //
- this->append_literal(unescape_character());
- break;
- }
- case regex_constants::syntax_digit:
- return parse_backref();
- case regex_constants::escape_type_left_word:
- ++m_position;
- this->append_state(syntax_element_word_start);
- break;
- case regex_constants::escape_type_right_word:
- ++m_position;
- this->append_state(syntax_element_word_end);
- break;
- case regex_constants::escape_type_start_buffer:
- ++m_position;
- this->append_state(syntax_element_buffer_start);
- break;
- case regex_constants::escape_type_end_buffer:
- ++m_position;
- this->append_state(syntax_element_buffer_end);
- break;
- case regex_constants::escape_type_word_assert:
- ++m_position;
- this->append_state(syntax_element_word_boundary);
- break;
- case regex_constants::escape_type_not_word_assert:
- ++m_position;
- this->append_state(syntax_element_within_word);
- break;
- case regex_constants::escape_type_Z:
- ++m_position;
- this->append_state(syntax_element_soft_buffer_end);
- break;
- case regex_constants::escape_type_Q:
- return parse_QE();
- case regex_constants::escape_type_C:
- return parse_match_any();
- case regex_constants::escape_type_X:
- ++m_position;
- this->append_state(syntax_element_combining);
- break;
- case regex_constants::escape_type_G:
- ++m_position;
- this->append_state(syntax_element_restart_continue);
- break;
- case regex_constants::escape_type_not_property:
- negate = true;
- BOOST_FALLTHROUGH;
- case regex_constants::escape_type_property:
- {
- ++m_position;
- char_class_type m;
- if(m_position == m_end)
- {
- fail(regex_constants::error_escape, m_position - m_base, "Incomplete property escape found.");
- return false;
- }
- // maybe have \p{ddd}
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace)
- {
- const charT* base = m_position;
- // skip forward until we find enclosing brace:
- while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace))
- ++m_position;
- if(m_position == m_end)
- {
- fail(regex_constants::error_escape, m_position - m_base, "Closing } missing from property escape sequence.");
- return false;
- }
- m = this->m_traits.lookup_classname(++base, m_position++);
- }
- else
- {
- m = this->m_traits.lookup_classname(m_position, m_position+1);
- ++m_position;
- }
- if(m != 0)
- {
- basic_char_set<charT, traits> char_set;
- if(negate)
- char_set.negate();
- char_set.add_class(m);
- if(0 == this->append_set(char_set))
- {
- fail(regex_constants::error_ctype, m_position - m_base);
- return false;
- }
- return true;
- }
- fail(regex_constants::error_ctype, m_position - m_base, "Escape sequence was neither a valid property nor a valid character class name.");
- return false;
- }
- case regex_constants::escape_type_reset_start_mark:
- if(0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex)))
- {
- re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_startmark, sizeof(re_brace)));
- pb->index = -5;
- pb->icase = this->flags() & regbase::icase;
- this->m_pdata->m_data.align();
- ++m_position;
- return true;
- }
- goto escape_type_class_jump;
- case regex_constants::escape_type_line_ending:
- if(0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex)))
- {
- const charT* e = get_escape_R_string<charT>();
- const charT* old_position = m_position;
- const charT* old_end = m_end;
- const charT* old_base = m_base;
- m_position = e;
- m_base = e;
- m_end = e + traits::length(e);
- bool r = parse_all();
- m_position = ++old_position;
- m_end = old_end;
- m_base = old_base;
- return r;
- }
- goto escape_type_class_jump;
- case regex_constants::escape_type_extended_backref:
- if(0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex)))
- {
- bool have_brace = false;
- bool negative = false;
- static const char* incomplete_message = "Incomplete \\g escape found.";
- if(++m_position == m_end)
- {
- fail(regex_constants::error_escape, m_position - m_base, incomplete_message);
- return false;
- }
- // maybe have \g{ddd}
- regex_constants::syntax_type syn = this->m_traits.syntax_type(*m_position);
- regex_constants::syntax_type syn_end = 0;
- if((syn == regex_constants::syntax_open_brace)
- || (syn == regex_constants::escape_type_left_word)
- || (syn == regex_constants::escape_type_end_buffer))
- {
- if(++m_position == m_end)
- {
- fail(regex_constants::error_escape, m_position - m_base, incomplete_message);
- return false;
- }
- have_brace = true;
- switch(syn)
- {
- case regex_constants::syntax_open_brace:
- syn_end = regex_constants::syntax_close_brace;
- break;
- case regex_constants::escape_type_left_word:
- syn_end = regex_constants::escape_type_right_word;
- break;
- default:
- syn_end = regex_constants::escape_type_end_buffer;
- break;
- }
- }
- negative = (*m_position == static_cast<charT>('-'));
- if((negative) && (++m_position == m_end))
- {
- fail(regex_constants::error_escape, m_position - m_base, incomplete_message);
- return false;
- }
- const charT* pc = m_position;
- int i = this->m_traits.toi(pc, m_end, 10);
- if((i < 0) && syn_end)
- {
- // Check for a named capture, get the leftmost one if there is more than one:
- const charT* base = m_position;
- while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != syn_end))
- {
- ++m_position;
- }
- i = hash_value_from_capture_name(base, m_position);
- pc = m_position;
- }
- if(negative)
- i = 1 + m_mark_count - i;
- if(((i > 0) && (this->m_backrefs & (1u << (i-1)))) || ((i > 10000) && (this->m_pdata->get_id(i) > 0) && (this->m_backrefs & (1u << (this->m_pdata->get_id(i)-1)))))
- {
- m_position = pc;
- re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_backref, sizeof(re_brace)));
- pb->index = i;
- pb->icase = this->flags() & regbase::icase;
- }
- else
- {
- fail(regex_constants::error_backref, m_position - m_base);
- return false;
- }
- m_position = pc;
- if(have_brace)
- {
- if((m_position == m_end) || (this->m_traits.syntax_type(*m_position) != syn_end))
- {
- fail(regex_constants::error_escape, m_position - m_base, incomplete_message);
- return false;
- }
- ++m_position;
- }
- return true;
- }
- goto escape_type_class_jump;
- case regex_constants::escape_type_control_v:
- if(0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex)))
- goto escape_type_class_jump;
- BOOST_FALLTHROUGH;
- default:
- this->append_literal(unescape_character());
- break;
- }
- return true;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_match_any()
-{
- //
- // we have a '.' that can match any character:
- //
- ++m_position;
- static_cast<re_dot*>(
- this->append_state(syntax_element_wild, sizeof(re_dot))
- )->mask = static_cast<unsigned char>(this->flags() & regbase::no_mod_s
- ? re_detail::force_not_newline
- : this->flags() & regbase::mod_s ?
- re_detail::force_newline : re_detail::dont_care);
- return true;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_repeat(std::size_t low, std::size_t high)
-{
- bool greedy = true;
- bool pocessive = false;
- std::size_t insert_point;
- //
- // when we get to here we may have a non-greedy ? mark still to come:
- //
- if((m_position != m_end)
- && (
- (0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex)))
- || ((regbase::basic_syntax_group|regbase::emacs_ex) == (this->flags() & (regbase::main_option_type | regbase::emacs_ex)))
- )
- )
- {
- // OK we have a perl or emacs regex, check for a '?':
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_question)
- {
- greedy = false;
- ++m_position;
- }
- // for perl regexes only check for pocessive ++ repeats.
- if((m_position != m_end)
- && (0 == (this->flags() & regbase::main_option_type))
- && (this->m_traits.syntax_type(*m_position) == regex_constants::syntax_plus))
- {
- pocessive = true;
- ++m_position;
- }
- }
- if(0 == this->m_last_state)
- {
- fail(regex_constants::error_badrepeat, ::cutl_details_boost::re_detail::distance(m_base, m_position), "Nothing to repeat.");
- return false;
- }
- if(this->m_last_state->type == syntax_element_endmark)
- {
- // insert a repeat before the '(' matching the last ')':
- insert_point = this->m_paren_start;
- }
- else if((this->m_last_state->type == syntax_element_literal) && (static_cast<re_literal*>(this->m_last_state)->length > 1))
- {
- // the last state was a literal with more than one character, split it in two:
- re_literal* lit = static_cast<re_literal*>(this->m_last_state);
- charT c = (static_cast<charT*>(static_cast<void*>(lit+1)))[lit->length - 1];
- --(lit->length);
- // now append new state:
- lit = static_cast<re_literal*>(this->append_state(syntax_element_literal, sizeof(re_literal) + sizeof(charT)));
- lit->length = 1;
- (static_cast<charT*>(static_cast<void*>(lit+1)))[0] = c;
- insert_point = this->getoffset(this->m_last_state);
- }
- else
- {
- // repeat the last state whatever it was, need to add some error checking here:
- switch(this->m_last_state->type)
- {
- case syntax_element_start_line:
- case syntax_element_end_line:
- case syntax_element_word_boundary:
- case syntax_element_within_word:
- case syntax_element_word_start:
- case syntax_element_word_end:
- case syntax_element_buffer_start:
- case syntax_element_buffer_end:
- case syntax_element_alt:
- case syntax_element_soft_buffer_end:
- case syntax_element_restart_continue:
- case syntax_element_jump:
- case syntax_element_startmark:
- case syntax_element_backstep:
- // can't legally repeat any of the above:
- fail(regex_constants::error_badrepeat, m_position - m_base);
- return false;
- default:
- // do nothing...
- break;
- }
- insert_point = this->getoffset(this->m_last_state);
- }
- //
- // OK we now know what to repeat, so insert the repeat around it:
- //
- re_repeat* rep = static_cast<re_repeat*>(this->insert_state(insert_point, syntax_element_rep, re_repeater_size));
- rep->min = low;
- rep->max = high;
- rep->greedy = greedy;
- rep->leading = false;
- // store our repeater position for later:
- std::ptrdiff_t rep_off = this->getoffset(rep);
- // and append a back jump to the repeat:
- re_jump* jmp = static_cast<re_jump*>(this->append_state(syntax_element_jump, sizeof(re_jump)));
- jmp->alt.i = rep_off - this->getoffset(jmp);
- this->m_pdata->m_data.align();
- // now fill in the alt jump for the repeat:
- rep = static_cast<re_repeat*>(this->getaddress(rep_off));
- rep->alt.i = this->m_pdata->m_data.size() - rep_off;
- //
- // If the repeat is pocessive then bracket the repeat with a (?>...)
- // independent sub-expression construct:
- //
- if(pocessive)
- {
- if(m_position != m_end)
- {
- //
- // Check for illegal following quantifier, we have to do this here, because
- // the extra states we insert below circumvents our usual error checking :-(
- //
- switch(this->m_traits.syntax_type(*m_position))
- {
- case regex_constants::syntax_star:
- case regex_constants::syntax_plus:
- case regex_constants::syntax_question:
- case regex_constants::syntax_open_brace:
- fail(regex_constants::error_badrepeat, m_position - m_base);
- return false;
- }
- }
- re_brace* pb = static_cast<re_brace*>(this->insert_state(insert_point, syntax_element_startmark, sizeof(re_brace)));
- pb->index = -3;
- pb->icase = this->flags() & regbase::icase;
- jmp = static_cast<re_jump*>(this->insert_state(insert_point + sizeof(re_brace), syntax_element_jump, sizeof(re_jump)));
- this->m_pdata->m_data.align();
- jmp->alt.i = this->m_pdata->m_data.size() - this->getoffset(jmp);
- pb = static_cast<re_brace*>(this->append_state(syntax_element_endmark, sizeof(re_brace)));
- pb->index = -3;
- pb->icase = this->flags() & regbase::icase;
- }
- return true;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_repeat_range(bool isbasic)
-{
- static const char* incomplete_message = "Missing } in quantified repetition.";
- //
- // parse a repeat-range:
- //
- std::size_t min, max;
- int v;
- // skip whitespace:
- while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
- ++m_position;
- if(this->m_position == this->m_end)
- {
- if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex))
- {
- fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message);
- return false;
- }
- // Treat the opening '{' as a literal character, rewind to start of error:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position;
- return parse_literal();
- }
- // get min:
- v = this->m_traits.toi(m_position, m_end, 10);
- // skip whitespace:
- if(v < 0)
- {
- if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex))
- {
- fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message);
- return false;
- }
- // Treat the opening '{' as a literal character, rewind to start of error:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position;
- return parse_literal();
- }
- while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
- ++m_position;
- if(this->m_position == this->m_end)
- {
- if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex))
- {
- fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message);
- return false;
- }
- // Treat the opening '{' as a literal character, rewind to start of error:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position;
- return parse_literal();
- }
- min = v;
- // see if we have a comma:
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_comma)
- {
- // move on and error check:
- ++m_position;
- // skip whitespace:
- while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
- ++m_position;
- if(this->m_position == this->m_end)
- {
- if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex))
- {
- fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message);
- return false;
- }
- // Treat the opening '{' as a literal character, rewind to start of error:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position;
- return parse_literal();
- }
- // get the value if any:
- v = this->m_traits.toi(m_position, m_end, 10);
- max = (v >= 0) ? (std::size_t)v : (std::numeric_limits<std::size_t>::max)();
- }
- else
- {
- // no comma, max = min:
- max = min;
- }
- // skip whitespace:
- while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
- ++m_position;
- // OK now check trailing }:
- if(this->m_position == this->m_end)
- {
- if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex))
- {
- fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message);
- return false;
- }
- // Treat the opening '{' as a literal character, rewind to start of error:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position;
- return parse_literal();
- }
- if(isbasic)
- {
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_escape)
- {
- ++m_position;
- if(this->m_position == this->m_end)
- {
- fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message);
- return false;
- }
- }
- else
- {
- fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message);
- return false;
- }
- }
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_brace)
- ++m_position;
- else
- {
- // Treat the opening '{' as a literal character, rewind to start of error:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position;
- return parse_literal();
- }
- //
- // finally go and add the repeat, unless error:
- //
- if(min > max)
- {
- // Backtrack to error location:
- m_position -= 2;
- while(this->m_traits.isctype(*m_position, this->m_word_mask)) --m_position;
- ++m_position;
- fail(regex_constants::error_badbrace, m_position - m_base);
- return false;
- }
- return parse_repeat(min, max);
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_alt()
-{
- //
- // error check: if there have been no previous states,
- // or if the last state was a '(' then error:
- //
- if(
- ((this->m_last_state == 0) || (this->m_last_state->type == syntax_element_startmark))
- &&
- !(
- ((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group)
- &&
- ((this->flags() & regbase::no_empty_expressions) == 0)
- )
- )
- {
- fail(regex_constants::error_empty, this->m_position - this->m_base, "A regular expression can start with the alternation operator |.");
- return false;
- }
- //
- // Reset mark count if required:
- //
- if(m_max_mark < m_mark_count)
- m_max_mark = m_mark_count;
- if(m_mark_reset >= 0)
- m_mark_count = m_mark_reset;
-
- ++m_position;
- //
- // we need to append a trailing jump:
- //
- re_syntax_base* pj = this->append_state(re_detail::syntax_element_jump, sizeof(re_jump));
- std::ptrdiff_t jump_offset = this->getoffset(pj);
- //
- // now insert the alternative:
- //
- re_alt* palt = static_cast<re_alt*>(this->insert_state(this->m_alt_insert_point, syntax_element_alt, re_alt_size));
- jump_offset += re_alt_size;
- this->m_pdata->m_data.align();
- palt->alt.i = this->m_pdata->m_data.size() - this->getoffset(palt);
- //
- // update m_alt_insert_point so that the next alternate gets
- // inserted at the start of the second of the two we've just created:
- //
- this->m_alt_insert_point = this->m_pdata->m_data.size();
- //
- // the start of this alternative must have a case changes state
- // if the current block has messed around with case changes:
- //
- if(m_has_case_change)
- {
- static_cast<re_case*>(
- this->append_state(syntax_element_toggle_case, sizeof(re_case))
- )->icase = this->m_icase;
- }
- //
- // push the alternative onto our stack, a recursive
- // implementation here is easier to understand (and faster
- // as it happens), but causes all kinds of stack overflow problems
- // on programs with small stacks (COM+).
- //
- m_alt_jumps.push_back(jump_offset);
- return true;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_set()
-{
- static const char* incomplete_message = "Character set declaration starting with [ terminated prematurely - either no ] was found or the set had no content.";
- ++m_position;
- if(m_position == m_end)
- {
- fail(regex_constants::error_brack, m_position - m_base, incomplete_message);
- return false;
- }
- basic_char_set<charT, traits> char_set;
-
- const charT* base = m_position; // where the '[' was
- const charT* item_base = m_position; // where the '[' or '^' was
-
- while(m_position != m_end)
- {
- switch(this->m_traits.syntax_type(*m_position))
- {
- case regex_constants::syntax_caret:
- if(m_position == base)
- {
- char_set.negate();
- ++m_position;
- item_base = m_position;
- }
- else
- parse_set_literal(char_set);
- break;
- case regex_constants::syntax_close_set:
- if(m_position == item_base)
- {
- parse_set_literal(char_set);
- break;
- }
- else
- {
- ++m_position;
- if(0 == this->append_set(char_set))
- {
- fail(regex_constants::error_ctype, m_position - m_base);
- return false;
- }
- }
- return true;
- case regex_constants::syntax_open_set:
- if(parse_inner_set(char_set))
- break;
- return true;
- case regex_constants::syntax_escape:
- {
- //
- // look ahead and see if this is a character class shortcut
- // \d \w \s etc...
- //
- ++m_position;
- if(this->m_traits.escape_syntax_type(*m_position)
- == regex_constants::escape_type_class)
- {
- char_class_type m = this->m_traits.lookup_classname(m_position, m_position+1);
- if(m != 0)
- {
- char_set.add_class(m);
- ++m_position;
- break;
- }
- }
- else if(this->m_traits.escape_syntax_type(*m_position)
- == regex_constants::escape_type_not_class)
- {
- // negated character class:
- char_class_type m = this->m_traits.lookup_classname(m_position, m_position+1);
- if(m != 0)
- {
- char_set.add_negated_class(m);
- ++m_position;
- break;
- }
- }
- // not a character class, just a regular escape:
- --m_position;
- parse_set_literal(char_set);
- break;
- }
- default:
- parse_set_literal(char_set);
- break;
- }
- }
- return m_position != m_end;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_inner_set(basic_char_set<charT, traits>& char_set)
-{
- static const char* incomplete_message = "Character class declaration starting with [ terminated prematurely - either no ] was found or the set had no content.";
- //
- // we have either a character class [:name:]
- // a collating element [.name.]
- // or an equivalence class [=name=]
- //
- if(m_end == ++m_position)
- {
- fail(regex_constants::error_brack, m_position - m_base, incomplete_message);
- return false;
- }
- switch(this->m_traits.syntax_type(*m_position))
- {
- case regex_constants::syntax_dot:
- //
- // a collating element is treated as a literal:
- //
- --m_position;
- parse_set_literal(char_set);
- return true;
- case regex_constants::syntax_colon:
- {
- // check that character classes are actually enabled:
- if((this->flags() & (regbase::main_option_type | regbase::no_char_classes))
- == (regbase::basic_syntax_group | regbase::no_char_classes))
- {
- --m_position;
- parse_set_literal(char_set);
- return true;
- }
- // skip the ':'
- if(m_end == ++m_position)
- {
- fail(regex_constants::error_brack, m_position - m_base, incomplete_message);
- return false;
- }
- const charT* name_first = m_position;
- // skip at least one character, then find the matching ':]'
- if(m_end == ++m_position)
- {
- fail(regex_constants::error_brack, m_position - m_base, incomplete_message);
- return false;
- }
- while((m_position != m_end)
- && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_colon))
- ++m_position;
- const charT* name_last = m_position;
- if(m_end == m_position)
- {
- fail(regex_constants::error_brack, m_position - m_base, incomplete_message);
- return false;
- }
- if((m_end == ++m_position)
- || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
- {
- fail(regex_constants::error_brack, m_position - m_base, incomplete_message);
- return false;
- }
- //
- // check for negated class:
- //
- bool negated = false;
- if(this->m_traits.syntax_type(*name_first) == regex_constants::syntax_caret)
- {
- ++name_first;
- negated = true;
- }
- typedef typename traits::char_class_type m_type;
- m_type m = this->m_traits.lookup_classname(name_first, name_last);
- if(m == 0)
- {
- if(char_set.empty() && (name_last - name_first == 1))
- {
- // maybe a special case:
- ++m_position;
- if( (m_position != m_end)
- && (this->m_traits.syntax_type(*m_position)
- == regex_constants::syntax_close_set))
- {
- if(this->m_traits.escape_syntax_type(*name_first)
- == regex_constants::escape_type_left_word)
- {
- ++m_position;
- this->append_state(syntax_element_word_start);
- return false;
- }
- if(this->m_traits.escape_syntax_type(*name_first)
- == regex_constants::escape_type_right_word)
- {
- ++m_position;
- this->append_state(syntax_element_word_end);
- return false;
- }
- }
- }
- fail(regex_constants::error_ctype, name_first - m_base);
- return false;
- }
- if(negated == false)
- char_set.add_class(m);
- else
- char_set.add_negated_class(m);
- ++m_position;
- break;
- }
- case regex_constants::syntax_equal:
- {
- // skip the '='
- if(m_end == ++m_position)
- {
- fail(regex_constants::error_brack, m_position - m_base, incomplete_message);
- return false;
- }
- const charT* name_first = m_position;
- // skip at least one character, then find the matching '=]'
- if(m_end == ++m_position)
- {
- fail(regex_constants::error_brack, m_position - m_base, incomplete_message);
- return false;
- }
- while((m_position != m_end)
- && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal))
- ++m_position;
- const charT* name_last = m_position;
- if(m_end == m_position)
- {
- fail(regex_constants::error_brack, m_position - m_base, incomplete_message);
- return false;
- }
- if((m_end == ++m_position)
- || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
- {
- fail(regex_constants::error_brack, m_position - m_base, incomplete_message);
- return false;
- }
- string_type m = this->m_traits.lookup_collatename(name_first, name_last);
- if((0 == m.size()) || (m.size() > 2))
- {
- fail(regex_constants::error_collate, name_first - m_base);
- return false;
- }
- digraph<charT> d;
- d.first = m[0];
- if(m.size() > 1)
- d.second = m[1];
- else
- d.second = 0;
- char_set.add_equivalent(d);
- ++m_position;
- break;
- }
- default:
- --m_position;
- parse_set_literal(char_set);
- break;
- }
- return true;
-}
-
-template <class charT, class traits>
-void basic_regex_parser<charT, traits>::parse_set_literal(basic_char_set<charT, traits>& char_set)
-{
- digraph<charT> start_range(get_next_set_literal(char_set));
- if(m_end == m_position)
- {
- fail(regex_constants::error_brack, m_position - m_base);
- return;
- }
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_dash)
- {
- // we have a range:
- if(m_end == ++m_position)
- {
- fail(regex_constants::error_brack, m_position - m_base);
- return;
- }
- if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)
- {
- digraph<charT> end_range = get_next_set_literal(char_set);
- char_set.add_range(start_range, end_range);
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_dash)
- {
- if(m_end == ++m_position)
- {
- fail(regex_constants::error_brack, m_position - m_base);
- return;
- }
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_set)
- {
- // trailing - :
- --m_position;
- return;
- }
- fail(regex_constants::error_range, m_position - m_base);
- return;
- }
- return;
- }
- --m_position;
- }
- char_set.add_single(start_range);
-}
-
-template <class charT, class traits>
-digraph<charT> basic_regex_parser<charT, traits>::get_next_set_literal(basic_char_set<charT, traits>& char_set)
-{
- digraph<charT> result;
- switch(this->m_traits.syntax_type(*m_position))
- {
- case regex_constants::syntax_dash:
- if(!char_set.empty())
- {
- // see if we are at the end of the set:
- if((++m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
- {
- fail(regex_constants::error_range, m_position - m_base);
- return result;
- }
- --m_position;
- }
- result.first = *m_position++;
- return result;
- case regex_constants::syntax_escape:
- // check to see if escapes are supported first:
- if(this->flags() & regex_constants::no_escape_in_lists)
- {
- result = *m_position++;
- break;
- }
- ++m_position;
- result = unescape_character();
- break;
- case regex_constants::syntax_open_set:
- {
- if(m_end == ++m_position)
- {
- fail(regex_constants::error_collate, m_position - m_base);
- return result;
- }
- if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_dot)
- {
- --m_position;
- result.first = *m_position;
- ++m_position;
- return result;
- }
- if(m_end == ++m_position)
- {
- fail(regex_constants::error_collate, m_position - m_base);
- return result;
- }
- const charT* name_first = m_position;
- // skip at least one character, then find the matching ':]'
- if(m_end == ++m_position)
- {
- fail(regex_constants::error_collate, name_first - m_base);
- return result;
- }
- while((m_position != m_end)
- && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_dot))
- ++m_position;
- const charT* name_last = m_position;
- if(m_end == m_position)
- {
- fail(regex_constants::error_collate, name_first - m_base);
- return result;
- }
- if((m_end == ++m_position)
- || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
- {
- fail(regex_constants::error_collate, name_first - m_base);
- return result;
- }
- ++m_position;
- string_type s = this->m_traits.lookup_collatename(name_first, name_last);
- if(s.empty() || (s.size() > 2))
- {
- fail(regex_constants::error_collate, name_first - m_base);
- return result;
- }
- result.first = s[0];
- if(s.size() > 1)
- result.second = s[1];
- else
- result.second = 0;
- return result;
- }
- default:
- result = *m_position++;
- }
- return result;
-}
-
-//
-// does a value fit in the specified charT type?
-//
-template <class charT>
-bool valid_value(charT, int v, const mpl::true_&)
-{
- return (v >> (sizeof(charT) * CHAR_BIT)) == 0;
-}
-template <class charT>
-bool valid_value(charT, int, const mpl::false_&)
-{
- return true; // v will alsways fit in a charT
-}
-template <class charT>
-bool valid_value(charT c, int v)
-{
- return valid_value(c, v, mpl::bool_<(sizeof(charT) < sizeof(int))>());
-}
-
-template <class charT, class traits>
-charT basic_regex_parser<charT, traits>::unescape_character()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- charT result(0);
- if(m_position == m_end)
- {
- fail(regex_constants::error_escape, m_position - m_base, "Escape sequence terminated prematurely.");
- return false;
- }
- switch(this->m_traits.escape_syntax_type(*m_position))
- {
- case regex_constants::escape_type_control_a:
- result = charT('\a');
- break;
- case regex_constants::escape_type_e:
- result = charT(27);
- break;
- case regex_constants::escape_type_control_f:
- result = charT('\f');
- break;
- case regex_constants::escape_type_control_n:
- result = charT('\n');
- break;
- case regex_constants::escape_type_control_r:
- result = charT('\r');
- break;
- case regex_constants::escape_type_control_t:
- result = charT('\t');
- break;
- case regex_constants::escape_type_control_v:
- result = charT('\v');
- break;
- case regex_constants::escape_type_word_assert:
- result = charT('\b');
- break;
- case regex_constants::escape_type_ascii_control:
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_escape, m_position - m_base, "ASCII escape sequence terminated prematurely.");
- return result;
- }
- result = static_cast<charT>(*m_position % 32);
- break;
- case regex_constants::escape_type_hex:
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_escape, m_position - m_base, "Hexadecimal escape sequence terminated prematurely.");
- return result;
- }
- // maybe have \x{ddd}
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace)
- {
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_escape, m_position - m_base, "Missing } in hexadecimal escape sequence.");
- return result;
- }
- int i = this->m_traits.toi(m_position, m_end, 16);
- if((m_position == m_end)
- || (i < 0)
- || ((std::numeric_limits<charT>::is_specialized) && (i > (int)(std::numeric_limits<charT>::max)()))
- || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace))
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_badbrace, m_position - m_base, "Hexadecimal escape sequence was invalid.");
- return result;
- }
- ++m_position;
- result = charT(i);
- }
- else
- {
- std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), static_cast<std::ptrdiff_t>(m_end - m_position));
- int i = this->m_traits.toi(m_position, m_position + len, 16);
- if((i < 0)
- || !valid_value(charT(0), i))
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_escape, m_position - m_base, "Escape sequence did not encode a valid character.");
- return result;
- }
- result = charT(i);
- }
- return result;
- case regex_constants::syntax_digit:
- {
- // an octal escape sequence, the first character must be a zero
- // followed by up to 3 octal digits:
- std::ptrdiff_t len = (std::min)(::cutl_details_boost::re_detail::distance(m_position, m_end), static_cast<std::ptrdiff_t>(4));
- const charT* bp = m_position;
- int val = this->m_traits.toi(bp, bp + 1, 8);
- if(val != 0)
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- // Oops not an octal escape after all:
- fail(regex_constants::error_escape, m_position - m_base, "Invalid octal escape sequence.");
- return result;
- }
- val = this->m_traits.toi(m_position, m_position + len, 8);
- if(val < 0)
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_escape, m_position - m_base, "Octal escape sequence is invalid.");
- return result;
- }
- return static_cast<charT>(val);
- }
- case regex_constants::escape_type_named_char:
- {
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_escape, m_position - m_base);
- return false;
- }
- // maybe have \N{name}
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace)
- {
- const charT* base = m_position;
- // skip forward until we find enclosing brace:
- while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace))
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_escape, m_position - m_base);
- return false;
- }
- string_type s = this->m_traits.lookup_collatename(++base, m_position++);
- if(s.empty())
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_collate, m_position - m_base);
- return false;
- }
- if(s.size() == 1)
- {
- return s[0];
- }
- }
- // fall through is a failure:
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_escape, m_position - m_base);
- return false;
- }
- default:
- result = *m_position;
- break;
- }
- ++m_position;
- return result;
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_backref()
-{
- BOOST_ASSERT(m_position != m_end);
- const charT* pc = m_position;
- int i = this->m_traits.toi(pc, pc + 1, 10);
- if((i == 0) || (((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group) && (this->flags() & regbase::no_bk_refs)))
- {
- // not a backref at all but an octal escape sequence:
- charT c = unescape_character();
- this->append_literal(c);
- }
- else if((i > 0) && (this->m_backrefs & (1u << (i-1))))
- {
- m_position = pc;
- re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_backref, sizeof(re_brace)));
- pb->index = i;
- pb->icase = this->flags() & regbase::icase;
- }
- else
- {
- // Rewind to start of escape:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_backref, m_position - m_base);
- return false;
- }
- return true;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_QE()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- //
- // parse a \Q...\E sequence:
- //
- ++m_position; // skip the Q
- const charT* start = m_position;
- const charT* end;
- do
- {
- while((m_position != m_end)
- && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape))
- ++m_position;
- if(m_position == m_end)
- {
- // a \Q...\E sequence may terminate with the end of the expression:
- end = m_position;
- break;
- }
- if(++m_position == m_end) // skip the escape
- {
- fail(regex_constants::error_escape, m_position - m_base, "Unterminated \\Q...\\E sequence.");
- return false;
- }
- // check to see if it's a \E:
- if(this->m_traits.escape_syntax_type(*m_position) == regex_constants::escape_type_E)
- {
- ++m_position;
- end = m_position - 2;
- break;
- }
- // otherwise go round again:
- }while(true);
- //
- // now add all the character between the two escapes as literals:
- //
- while(start != end)
- {
- this->append_literal(*start);
- ++start;
- }
- return true;
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::parse_perl_extension()
-{
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- //
- // treat comments as a special case, as these
- // are the only ones that don't start with a leading
- // startmark state:
- //
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_hash)
- {
- while((m_position != m_end)
- && (this->m_traits.syntax_type(*m_position++) != regex_constants::syntax_close_mark))
- {}
- return true;
- }
- //
- // backup some state, and prepare the way:
- //
- int markid = 0;
- std::ptrdiff_t jump_offset = 0;
- re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_startmark, sizeof(re_brace)));
- pb->icase = this->flags() & regbase::icase;
- std::ptrdiff_t last_paren_start = this->getoffset(pb);
- // back up insertion point for alternations, and set new point:
- std::ptrdiff_t last_alt_point = m_alt_insert_point;
- this->m_pdata->m_data.align();
- m_alt_insert_point = this->m_pdata->m_data.size();
- std::ptrdiff_t expected_alt_point = m_alt_insert_point;
- bool restore_flags = true;
- regex_constants::syntax_option_type old_flags = this->flags();
- bool old_case_change = m_has_case_change;
- m_has_case_change = false;
- charT name_delim;
- int mark_reset = m_mark_reset;
- int max_mark = m_max_mark;
- m_mark_reset = -1;
- m_max_mark = m_mark_count;
- int v;
- //
- // select the actual extension used:
- //
- switch(this->m_traits.syntax_type(*m_position))
- {
- case regex_constants::syntax_or:
- m_mark_reset = m_mark_count;
- BOOST_FALLTHROUGH;
- case regex_constants::syntax_colon:
- //
- // a non-capturing mark:
- //
- pb->index = markid = 0;
- ++m_position;
- break;
- case regex_constants::syntax_digit:
- {
- //
- // a recursive subexpression:
- //
- v = this->m_traits.toi(m_position, m_end, 10);
- if((v < 0) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark))
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base, "The recursive sub-expression refers to an invalid marking group, or is unterminated.");
- return false;
- }
-insert_recursion:
- pb->index = markid = 0;
- re_recurse* pr = static_cast<re_recurse*>(this->append_state(syntax_element_recurse, sizeof(re_recurse)));
- pr->alt.i = v;
- pr->state_id = 0;
- static_cast<re_case*>(
- this->append_state(syntax_element_toggle_case, sizeof(re_case))
- )->icase = this->flags() & regbase::icase;
- break;
- }
- case regex_constants::syntax_plus:
- //
- // A forward-relative recursive subexpression:
- //
- ++m_position;
- v = this->m_traits.toi(m_position, m_end, 10);
- if((v <= 0) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark))
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base, "An invalid or unterminated recursive sub-expression.");
- return false;
- }
- v += m_mark_count;
- goto insert_recursion;
- case regex_constants::syntax_dash:
- //
- // Possibly a backward-relative recursive subexpression:
- //
- ++m_position;
- v = this->m_traits.toi(m_position, m_end, 10);
- if(v <= 0)
- {
- --m_position;
- // Oops not a relative recursion at all, but a (?-imsx) group:
- goto option_group_jump;
- }
- v = m_mark_count + 1 - v;
- if(v <= 0)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base, "An invalid or unterminated recursive sub-expression.");
- return false;
- }
- goto insert_recursion;
- case regex_constants::syntax_equal:
- pb->index = markid = -1;
- ++m_position;
- jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
- this->m_pdata->m_data.align();
- m_alt_insert_point = this->m_pdata->m_data.size();
- break;
- case regex_constants::syntax_not:
- pb->index = markid = -2;
- ++m_position;
- jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
- this->m_pdata->m_data.align();
- m_alt_insert_point = this->m_pdata->m_data.size();
- break;
- case regex_constants::escape_type_left_word:
- {
- // a lookbehind assertion:
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- regex_constants::syntax_type t = this->m_traits.syntax_type(*m_position);
- if(t == regex_constants::syntax_not)
- pb->index = markid = -2;
- else if(t == regex_constants::syntax_equal)
- pb->index = markid = -1;
- else
- {
- // Probably a named capture which also starts (?< :
- name_delim = '>';
- --m_position;
- goto named_capture_jump;
- }
- ++m_position;
- jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
- this->append_state(syntax_element_backstep, sizeof(re_brace));
- this->m_pdata->m_data.align();
- m_alt_insert_point = this->m_pdata->m_data.size();
- break;
- }
- case regex_constants::escape_type_right_word:
- //
- // an independent sub-expression:
- //
- pb->index = markid = -3;
- ++m_position;
- jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
- this->m_pdata->m_data.align();
- m_alt_insert_point = this->m_pdata->m_data.size();
- break;
- case regex_constants::syntax_open_mark:
- {
- // a conditional expression:
- pb->index = markid = -4;
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- v = this->m_traits.toi(m_position, m_end, 10);
- if(m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- if(*m_position == charT('R'))
- {
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- if(*m_position == charT('&'))
- {
- const charT* base = ++m_position;
- while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark))
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- v = -static_cast<int>(hash_value_from_capture_name(base, m_position));
- }
- else
- {
- v = -this->m_traits.toi(m_position, m_end, 10);
- }
- re_brace* br = static_cast<re_brace*>(this->append_state(syntax_element_assert_backref, sizeof(re_brace)));
- br->index = v < 0 ? (v - 1) : 0;
- if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- }
- else if((*m_position == charT('\'')) || (*m_position == charT('<')))
- {
- const charT* base = ++m_position;
- while((m_position != m_end) && (*m_position != charT('>')) && (*m_position != charT('\'')))
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- v = static_cast<int>(hash_value_from_capture_name(base, m_position));
- re_brace* br = static_cast<re_brace*>(this->append_state(syntax_element_assert_backref, sizeof(re_brace)));
- br->index = v;
- if(((*m_position != charT('>')) && (*m_position != charT('\''))) || (++m_position == m_end))
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base, "Unterminated named capture.");
- return false;
- }
- if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- }
- else if(*m_position == charT('D'))
- {
- const char* def = "DEFINE";
- while(*def && (m_position != m_end) && (*m_position == charT(*def)))
- ++m_position, ++def;
- if((m_position == m_end) || *def)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- re_brace* br = static_cast<re_brace*>(this->append_state(syntax_element_assert_backref, sizeof(re_brace)));
- br->index = 9999; // special magic value!
- if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- }
- else if(v > 0)
- {
- re_brace* br = static_cast<re_brace*>(this->append_state(syntax_element_assert_backref, sizeof(re_brace)));
- br->index = v;
- if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- }
- else
- {
- // verify that we have a lookahead or lookbehind assert:
- if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_question)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- if(this->m_traits.syntax_type(*m_position) == regex_constants::escape_type_left_word)
- {
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- if((this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal)
- && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_not))
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- m_position -= 3;
- }
- else
- {
- if((this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal)
- && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_not))
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- m_position -= 2;
- }
- }
- break;
- }
- case regex_constants::syntax_close_mark:
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- case regex_constants::escape_type_end_buffer:
- {
- name_delim = *m_position;
-named_capture_jump:
- markid = 0;
- if(0 == (this->flags() & regbase::nosubs))
- {
- markid = ++m_mark_count;
- #ifndef BOOST_NO_STD_DISTANCE
- if(this->flags() & regbase::save_subexpression_location)
- this->m_pdata->m_subs.push_back(std::pair<std::size_t, std::size_t>(std::distance(m_base, m_position) - 2, 0));
- #else
- if(this->flags() & regbase::save_subexpression_location)
- this->m_pdata->m_subs.push_back(std::pair<std::size_t, std::size_t>((m_position - m_base) - 2, 0));
- #endif
- }
- pb->index = markid;
- const charT* base = ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- while((m_position != m_end) && (*m_position != name_delim))
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- this->m_pdata->set_name(base, m_position, markid);
- ++m_position;
- break;
- }
- default:
- if(*m_position == charT('R'))
- {
- ++m_position;
- v = 0;
- if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- goto insert_recursion;
- }
- if(*m_position == charT('&'))
- {
- ++m_position;
- const charT* base = m_position;
- while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark))
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- v = static_cast<int>(hash_value_from_capture_name(base, m_position));
- goto insert_recursion;
- }
- if(*m_position == charT('P'))
- {
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- if(*m_position == charT('>'))
- {
- ++m_position;
- const charT* base = m_position;
- while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark))
- ++m_position;
- if(m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- v = static_cast<int>(hash_value_from_capture_name(base, m_position));
- goto insert_recursion;
- }
- }
- //
- // lets assume that we have a (?imsx) group and try and parse it:
- //
-option_group_jump:
- regex_constants::syntax_option_type opts = parse_options();
- if(m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
- // make a note of whether we have a case change:
- m_has_case_change = ((opts & regbase::icase) != (this->flags() & regbase::icase));
- pb->index = markid = 0;
- if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark)
- {
- // update flags and carry on as normal:
- this->flags(opts);
- restore_flags = false;
- old_case_change |= m_has_case_change; // defer end of scope by one ')'
- }
- else if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_colon)
- {
- // update flags and carry on until the matching ')' is found:
- this->flags(opts);
- ++m_position;
- }
- else
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base);
- return false;
- }
-
- // finally append a case change state if we need it:
- if(m_has_case_change)
- {
- static_cast<re_case*>(
- this->append_state(syntax_element_toggle_case, sizeof(re_case))
- )->icase = opts & regbase::icase;
- }
-
- }
- //
- // now recursively add more states, this will terminate when we get to a
- // matching ')' :
- //
- parse_all();
- //
- // Unwind alternatives:
- //
- if(0 == unwind_alts(last_paren_start))
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base, "Invalid alternation operators within (?...) block.");
- return false;
- }
- //
- // we either have a ')' or we have run out of characters prematurely:
- //
- if(m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- this->fail(regex_constants::error_paren, ::cutl_details_boost::re_detail::distance(m_base, m_end));
- return false;
- }
- BOOST_ASSERT(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark);
- ++m_position;
- //
- // restore the flags:
- //
- if(restore_flags)
- {
- // append a case change state if we need it:
- if(m_has_case_change)
- {
- static_cast<re_case*>(
- this->append_state(syntax_element_toggle_case, sizeof(re_case))
- )->icase = old_flags & regbase::icase;
- }
- this->flags(old_flags);
- }
- //
- // set up the jump pointer if we have one:
- //
- if(jump_offset)
- {
- this->m_pdata->m_data.align();
- re_jump* jmp = static_cast<re_jump*>(this->getaddress(jump_offset));
- jmp->alt.i = this->m_pdata->m_data.size() - this->getoffset(jmp);
- if((this->m_last_state == jmp) && (markid != -2))
- {
- // Oops... we didn't have anything inside the assertion.
- // Note we don't get here for negated forward lookahead as (?!)
- // does have some uses.
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_perl_extension, m_position - m_base, "Invalid or empty zero width assertion.");
- return false;
- }
- }
- //
- // verify that if this is conditional expression, that we do have
- // an alternative, if not add one:
- //
- if(markid == -4)
- {
- re_syntax_base* b = this->getaddress(expected_alt_point);
- // Make sure we have exactly one alternative following this state:
- if(b->type != syntax_element_alt)
- {
- re_alt* alt = static_cast<re_alt*>(this->insert_state(expected_alt_point, syntax_element_alt, sizeof(re_alt)));
- alt->alt.i = this->m_pdata->m_data.size() - this->getoffset(alt);
- }
- else if(this->getaddress(static_cast<re_alt*>(b)->alt.i, b)->type == syntax_element_alt)
- {
- // Can't have seen more than one alternative:
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_bad_pattern, m_position - m_base, "More than one alternation operator | was encountered inside a conditional expression.");
- return false;
- }
- else
- {
- // We must *not* have seen an alternative inside a (DEFINE) block:
- b = this->getaddress(b->next.i, b);
- if((b->type == syntax_element_assert_backref) && (static_cast<re_brace*>(b)->index == 9999))
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_bad_pattern, m_position - m_base, "Alternation operators are not allowed inside a DEFINE block.");
- return false;
- }
- }
- // check for invalid repetition of next state:
- b = this->getaddress(expected_alt_point);
- b = this->getaddress(static_cast<re_alt*>(b)->next.i, b);
- if((b->type != syntax_element_assert_backref)
- && (b->type != syntax_element_startmark))
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_badrepeat, m_position - m_base, "A repetition operator cannot be applied to a zero-width assertion.");
- return false;
- }
- }
- //
- // append closing parenthesis state:
- //
- pb = static_cast<re_brace*>(this->append_state(syntax_element_endmark, sizeof(re_brace)));
- pb->index = markid;
- pb->icase = this->flags() & regbase::icase;
- this->m_paren_start = last_paren_start;
- //
- // restore the alternate insertion point:
- //
- this->m_alt_insert_point = last_alt_point;
- //
- // and the case change data:
- //
- m_has_case_change = old_case_change;
- //
- // And the mark_reset data:
- //
- if(m_max_mark > m_mark_count)
- {
- m_mark_count = m_max_mark;
- }
- m_mark_reset = mark_reset;
- m_max_mark = max_mark;
-
-
- if(markid > 0)
- {
-#ifndef BOOST_NO_STD_DISTANCE
- if(this->flags() & regbase::save_subexpression_location)
- this->m_pdata->m_subs.at(markid - 1).second = std::distance(m_base, m_position) - 1;
-#else
- if(this->flags() & regbase::save_subexpression_location)
- this->m_pdata->m_subs.at(markid - 1).second = (m_position - m_base) - 1;
-#endif
- //
- // allow backrefs to this mark:
- //
- if((markid > 0) && (markid < (int)(sizeof(unsigned) * CHAR_BIT)))
- this->m_backrefs |= 1u << (markid - 1);
- }
- return true;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::add_emacs_code(bool negate)
-{
- //
- // parses an emacs style \sx or \Sx construct.
- //
- if(++m_position == m_end)
- {
- // Rewind to start of sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position;
- fail(regex_constants::error_escape, m_position - m_base);
- return false;
- }
- basic_char_set<charT, traits> char_set;
- if(negate)
- char_set.negate();
-
- static const charT s_punct[5] = { 'p', 'u', 'n', 'c', 't', };
-
- switch(*m_position)
- {
- case 's':
- case ' ':
- char_set.add_class(this->m_mask_space);
- break;
- case 'w':
- char_set.add_class(this->m_word_mask);
- break;
- case '_':
- char_set.add_single(digraph<charT>(charT('$')));
- char_set.add_single(digraph<charT>(charT('&')));
- char_set.add_single(digraph<charT>(charT('*')));
- char_set.add_single(digraph<charT>(charT('+')));
- char_set.add_single(digraph<charT>(charT('-')));
- char_set.add_single(digraph<charT>(charT('_')));
- char_set.add_single(digraph<charT>(charT('<')));
- char_set.add_single(digraph<charT>(charT('>')));
- break;
- case '.':
- char_set.add_class(this->m_traits.lookup_classname(s_punct, s_punct+5));
- break;
- case '(':
- char_set.add_single(digraph<charT>(charT('(')));
- char_set.add_single(digraph<charT>(charT('[')));
- char_set.add_single(digraph<charT>(charT('{')));
- break;
- case ')':
- char_set.add_single(digraph<charT>(charT(')')));
- char_set.add_single(digraph<charT>(charT(']')));
- char_set.add_single(digraph<charT>(charT('}')));
- break;
- case '"':
- char_set.add_single(digraph<charT>(charT('"')));
- char_set.add_single(digraph<charT>(charT('\'')));
- char_set.add_single(digraph<charT>(charT('`')));
- break;
- case '\'':
- char_set.add_single(digraph<charT>(charT('\'')));
- char_set.add_single(digraph<charT>(charT(',')));
- char_set.add_single(digraph<charT>(charT('#')));
- break;
- case '<':
- char_set.add_single(digraph<charT>(charT(';')));
- break;
- case '>':
- char_set.add_single(digraph<charT>(charT('\n')));
- char_set.add_single(digraph<charT>(charT('\f')));
- break;
- default:
- fail(regex_constants::error_ctype, m_position - m_base);
- return false;
- }
- if(0 == this->append_set(char_set))
- {
- fail(regex_constants::error_ctype, m_position - m_base);
- return false;
- }
- ++m_position;
- return true;
-}
-
-template <class charT, class traits>
-regex_constants::syntax_option_type basic_regex_parser<charT, traits>::parse_options()
-{
- // we have a (?imsx-imsx) group, convert it into a set of flags:
- regex_constants::syntax_option_type f = this->flags();
- bool breakout = false;
- do
- {
- switch(*m_position)
- {
- case 's':
- f |= regex_constants::mod_s;
- f &= ~regex_constants::no_mod_s;
- break;
- case 'm':
- f &= ~regex_constants::no_mod_m;
- break;
- case 'i':
- f |= regex_constants::icase;
- break;
- case 'x':
- f |= regex_constants::mod_x;
- break;
- default:
- breakout = true;
- continue;
- }
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_paren, m_position - m_base);
- return false;
- }
- }
- while(!breakout);
-
- breakout = false;
-
- if(*m_position == static_cast<charT>('-'))
- {
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_paren, m_position - m_base);
- return false;
- }
- do
- {
- switch(*m_position)
- {
- case 's':
- f &= ~regex_constants::mod_s;
- f |= regex_constants::no_mod_s;
- break;
- case 'm':
- f |= regex_constants::no_mod_m;
- break;
- case 'i':
- f &= ~regex_constants::icase;
- break;
- case 'x':
- f &= ~regex_constants::mod_x;
- break;
- default:
- breakout = true;
- continue;
- }
- if(++m_position == m_end)
- {
- // Rewind to start of (? sequence:
- --m_position;
- while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
- fail(regex_constants::error_paren, m_position - m_base);
- return false;
- }
- }
- while(!breakout);
- }
- return f;
-}
-
-template <class charT, class traits>
-bool basic_regex_parser<charT, traits>::unwind_alts(std::ptrdiff_t last_paren_start)
-{
- //
- // If we didn't actually add any states after the last
- // alternative then that's an error:
- //
- if((this->m_alt_insert_point == static_cast<std::ptrdiff_t>(this->m_pdata->m_data.size()))
- && m_alt_jumps.size() && (m_alt_jumps.back() > last_paren_start)
- &&
- !(
- ((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group)
- &&
- ((this->flags() & regbase::no_empty_expressions) == 0)
- )
- )
- {
- fail(regex_constants::error_empty, this->m_position - this->m_base, "Can't terminate a sub-expression with an alternation operator |.");
- return false;
- }
- //
- // Fix up our alternatives:
- //
- while(m_alt_jumps.size() && (m_alt_jumps.back() > last_paren_start))
- {
- //
- // fix up the jump to point to the end of the states
- // that we've just added:
- //
- std::ptrdiff_t jump_offset = m_alt_jumps.back();
- m_alt_jumps.pop_back();
- this->m_pdata->m_data.align();
- re_jump* jmp = static_cast<re_jump*>(this->getaddress(jump_offset));
- BOOST_ASSERT(jmp->type == syntax_element_jump);
- jmp->alt.i = this->m_pdata->m_data.size() - jump_offset;
- }
- return true;
-}
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace re_detail
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex/v4/c_regex_traits.hpp b/libcutl/cutl/details/boost/regex/v4/c_regex_traits.hpp
deleted file mode 100644
index d4f4c30..0000000
--- a/libcutl/cutl/details/boost/regex/v4/c_regex_traits.hpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE c_regex_traits.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares regular expression traits class that wraps the global C locale.
- */
-
-#ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED
-#define BOOST_C_REGEX_TRAITS_HPP_INCLUDED
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-#ifndef BOOST_REGEX_WORKAROUND_HPP
-#include <cutl/details/boost/regex/v4/regex_workaround.hpp>
-#endif
-
-#include <cctype>
-
-#ifdef BOOST_NO_STDC_NAMESPACE
-namespace std{
- using ::strlen; using ::tolower;
-}
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-
-template <class charT>
-struct c_regex_traits;
-
-template<>
-struct BOOST_REGEX_DECL c_regex_traits<char>
-{
- c_regex_traits(){}
- typedef char char_type;
- typedef std::size_t size_type;
- typedef std::string string_type;
- struct locale_type{};
- typedef cutl_details_boost::uint32_t char_class_type;
-
- static size_type length(const char_type* p)
- {
- return (std::strlen)(p);
- }
-
- char translate(char c) const
- {
- return c;
- }
- char translate_nocase(char c) const
- {
- return static_cast<char>((std::tolower)(static_cast<unsigned char>(c)));
- }
-
- static string_type BOOST_REGEX_CALL transform(const char* p1, const char* p2);
- static string_type BOOST_REGEX_CALL transform_primary(const char* p1, const char* p2);
-
- static char_class_type BOOST_REGEX_CALL lookup_classname(const char* p1, const char* p2);
- static string_type BOOST_REGEX_CALL lookup_collatename(const char* p1, const char* p2);
-
- static bool BOOST_REGEX_CALL isctype(char, char_class_type);
- static int BOOST_REGEX_CALL value(char, int);
-
- locale_type imbue(locale_type l)
- { return l; }
- locale_type getloc()const
- { return locale_type(); }
-
-private:
- // this type is not copyable:
- c_regex_traits(const c_regex_traits&);
- c_regex_traits& operator=(const c_regex_traits&);
-};
-
-#ifndef BOOST_NO_WREGEX
-template<>
-struct BOOST_REGEX_DECL c_regex_traits<wchar_t>
-{
- c_regex_traits(){}
- typedef wchar_t char_type;
- typedef std::size_t size_type;
- typedef std::wstring string_type;
- struct locale_type{};
- typedef cutl_details_boost::uint32_t char_class_type;
-
- static size_type length(const char_type* p)
- {
- return (std::wcslen)(p);
- }
-
- wchar_t translate(wchar_t c) const
- {
- return c;
- }
- wchar_t translate_nocase(wchar_t c) const
- {
- return (std::towlower)(c);
- }
-
- static string_type BOOST_REGEX_CALL transform(const wchar_t* p1, const wchar_t* p2);
- static string_type BOOST_REGEX_CALL transform_primary(const wchar_t* p1, const wchar_t* p2);
-
- static char_class_type BOOST_REGEX_CALL lookup_classname(const wchar_t* p1, const wchar_t* p2);
- static string_type BOOST_REGEX_CALL lookup_collatename(const wchar_t* p1, const wchar_t* p2);
-
- static bool BOOST_REGEX_CALL isctype(wchar_t, char_class_type);
- static int BOOST_REGEX_CALL value(wchar_t, int);
-
- locale_type imbue(locale_type l)
- { return l; }
- locale_type getloc()const
- { return locale_type(); }
-
-private:
- // this type is not copyable:
- c_regex_traits(const c_regex_traits&);
- c_regex_traits& operator=(const c_regex_traits&);
-};
-
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-//
-// Provide an unsigned short version as well, so the user can link to this
-// no matter whether they build with /Zc:wchar_t or not (MSVC specific).
-//
-template<>
-struct BOOST_REGEX_DECL c_regex_traits<unsigned short>
-{
- c_regex_traits(){}
- typedef unsigned short char_type;
- typedef std::size_t size_type;
- typedef std::basic_string<unsigned short> string_type;
- struct locale_type{};
- typedef cutl_details_boost::uint32_t char_class_type;
-
- static size_type length(const char_type* p)
- {
- return (std::wcslen)((const wchar_t*)p);
- }
-
- unsigned short translate(unsigned short c) const
- {
- return c;
- }
- unsigned short translate_nocase(unsigned short c) const
- {
- return (std::towlower)((wchar_t)c);
- }
-
- static string_type BOOST_REGEX_CALL transform(const unsigned short* p1, const unsigned short* p2);
- static string_type BOOST_REGEX_CALL transform_primary(const unsigned short* p1, const unsigned short* p2);
-
- static char_class_type BOOST_REGEX_CALL lookup_classname(const unsigned short* p1, const unsigned short* p2);
- static string_type BOOST_REGEX_CALL lookup_collatename(const unsigned short* p1, const unsigned short* p2);
-
- static bool BOOST_REGEX_CALL isctype(unsigned short, char_class_type);
- static int BOOST_REGEX_CALL value(unsigned short, int);
-
- locale_type imbue(locale_type l)
- { return l; }
- locale_type getloc()const
- { return locale_type(); }
-
-private:
- // this type is not copyable:
- c_regex_traits(const c_regex_traits&);
- c_regex_traits& operator=(const c_regex_traits&);
-};
-
-#endif
-
-#endif // BOOST_NO_WREGEX
-
-}
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/char_regex_traits.hpp b/libcutl/cutl/details/boost/regex/v4/char_regex_traits.hpp
deleted file mode 100644
index 4bae0ec..0000000
--- a/libcutl/cutl/details/boost/regex/v4/char_regex_traits.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *
- * Copyright (c) 2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE char_regex_traits.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares deprecated traits classes char_regex_traits<>.
- */
-
-
-#ifndef BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP
-#define BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-
-namespace deprecated{
-//
-// class char_regex_traits_i
-// provides case insensitive traits classes (deprecated):
-template <class charT>
-class char_regex_traits_i : public regex_traits<charT> {};
-
-template<>
-class char_regex_traits_i<char> : public regex_traits<char>
-{
-public:
- typedef char char_type;
- typedef unsigned char uchar_type;
- typedef unsigned int size_type;
- typedef regex_traits<char> base_type;
-
-};
-
-#ifndef BOOST_NO_WREGEX
-template<>
-class char_regex_traits_i<wchar_t> : public regex_traits<wchar_t>
-{
-public:
- typedef wchar_t char_type;
- typedef unsigned short uchar_type;
- typedef unsigned int size_type;
- typedef regex_traits<wchar_t> base_type;
-
-};
-#endif
-} // namespace deprecated
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif // include
-
diff --git a/libcutl/cutl/details/boost/regex/v4/cpp_regex_traits.hpp b/libcutl/cutl/details/boost/regex/v4/cpp_regex_traits.hpp
deleted file mode 100644
index 654f668..0000000
--- a/libcutl/cutl/details/boost/regex/v4/cpp_regex_traits.hpp
+++ /dev/null
@@ -1,1099 +0,0 @@
-/*
- *
- * Copyright (c) 2004 John Maddock
- * Copyright 2011 Garmin Ltd. or its subsidiaries
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE cpp_regex_traits.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares regular expression traits class cpp_regex_traits.
- */
-
-#ifndef BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED
-#define BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/integer.hpp>
-
-#ifndef BOOST_NO_STD_LOCALE
-
-#ifndef BOOST_RE_PAT_EXCEPT_HPP
-#include <cutl/details/boost/regex/pattern_except.hpp>
-#endif
-#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
-#include <cutl/details/boost/regex/v4/regex_traits_defaults.hpp>
-#endif
-#ifdef BOOST_HAS_THREADS
-#include <cutl/details/boost/regex/pending/static_mutex.hpp>
-#endif
-#ifndef BOOST_REGEX_PRIMARY_TRANSFORM
-#include <cutl/details/boost/regex/v4/primary_transform.hpp>
-#endif
-#ifndef BOOST_REGEX_OBJECT_CACHE_HPP
-#include <cutl/details/boost/regex/pending/object_cache.hpp>
-#endif
-
-#include <istream>
-#include <ios>
-#include <climits>
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4786 4251)
-#endif
-
-namespace cutl_details_boost{
-
-//
-// forward declaration is needed by some compilers:
-//
-template <class charT>
-class cpp_regex_traits;
-
-namespace re_detail{
-
-//
-// class parser_buf:
-// acts as a stream buffer which wraps around a pair of pointers:
-//
-template <class charT,
- class traits = ::std::char_traits<charT> >
-class parser_buf : public ::std::basic_streambuf<charT, traits>
-{
- typedef ::std::basic_streambuf<charT, traits> base_type;
- typedef typename base_type::int_type int_type;
- typedef typename base_type::char_type char_type;
- typedef typename base_type::pos_type pos_type;
- typedef ::std::streamsize streamsize;
- typedef typename base_type::off_type off_type;
-public:
- parser_buf() : base_type() { setbuf(0, 0); }
- const charT* getnext() { return this->gptr(); }
-protected:
- std::basic_streambuf<charT, traits>* setbuf(char_type* s, streamsize n);
- typename parser_buf<charT, traits>::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which);
- typename parser_buf<charT, traits>::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which);
-private:
- parser_buf& operator=(const parser_buf&);
- parser_buf(const parser_buf&);
-};
-
-template<class charT, class traits>
-std::basic_streambuf<charT, traits>*
-parser_buf<charT, traits>::setbuf(char_type* s, streamsize n)
-{
- this->setg(s, s, s + n);
- return this;
-}
-
-template<class charT, class traits>
-typename parser_buf<charT, traits>::pos_type
-parser_buf<charT, traits>::seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which)
-{
- typedef typename cutl_details_boost::int_t<sizeof(way) * CHAR_BIT>::least cast_type;
-
- if(which & ::std::ios_base::out)
- return pos_type(off_type(-1));
- std::ptrdiff_t size = this->egptr() - this->eback();
- std::ptrdiff_t pos = this->gptr() - this->eback();
- charT* g = this->eback();
- switch(static_cast<cast_type>(way))
- {
- case ::std::ios_base::beg:
- if((off < 0) || (off > size))
- return pos_type(off_type(-1));
- else
- this->setg(g, g + off, g + size);
- break;
- case ::std::ios_base::end:
- if((off < 0) || (off > size))
- return pos_type(off_type(-1));
- else
- this->setg(g, g + size - off, g + size);
- break;
- case ::std::ios_base::cur:
- {
- std::ptrdiff_t newpos = static_cast<std::ptrdiff_t>(pos + off);
- if((newpos < 0) || (newpos > size))
- return pos_type(off_type(-1));
- else
- this->setg(g, g + newpos, g + size);
- break;
- }
- default: ;
- }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4244)
-#endif
- return static_cast<pos_type>(this->gptr() - this->eback());
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template<class charT, class traits>
-typename parser_buf<charT, traits>::pos_type
-parser_buf<charT, traits>::seekpos(pos_type sp, ::std::ios_base::openmode which)
-{
- if(which & ::std::ios_base::out)
- return pos_type(off_type(-1));
- off_type size = static_cast<off_type>(this->egptr() - this->eback());
- charT* g = this->eback();
- if(off_type(sp) <= size)
- {
- this->setg(g, g + off_type(sp), g + size);
- }
- return pos_type(off_type(-1));
-}
-
-//
-// class cpp_regex_traits_base:
-// acts as a container for locale and the facets we are using.
-//
-template <class charT>
-struct cpp_regex_traits_base
-{
- cpp_regex_traits_base(const std::locale& l)
- { imbue(l); }
- std::locale imbue(const std::locale& l);
-
- std::locale m_locale;
- std::ctype<charT> const* m_pctype;
-#ifndef BOOST_NO_STD_MESSAGES
- std::messages<charT> const* m_pmessages;
-#endif
- std::collate<charT> const* m_pcollate;
-
- bool operator<(const cpp_regex_traits_base& b)const
- {
- if(m_pctype == b.m_pctype)
- {
-#ifndef BOOST_NO_STD_MESSAGES
- if(m_pmessages == b.m_pmessages)
- {
- return m_pcollate < b.m_pcollate;
- }
- return m_pmessages < b.m_pmessages;
-#else
- return m_pcollate < b.m_pcollate;
-#endif
- }
- return m_pctype < b.m_pctype;
- }
- bool operator==(const cpp_regex_traits_base& b)const
- {
- return (m_pctype == b.m_pctype)
-#ifndef BOOST_NO_STD_MESSAGES
- && (m_pmessages == b.m_pmessages)
-#endif
- && (m_pcollate == b.m_pcollate);
- }
-};
-
-template <class charT>
-std::locale cpp_regex_traits_base<charT>::imbue(const std::locale& l)
-{
- std::locale result(m_locale);
- m_locale = l;
- m_pctype = &BOOST_USE_FACET(std::ctype<charT>, l);
-#ifndef BOOST_NO_STD_MESSAGES
- m_pmessages = BOOST_HAS_FACET(std::messages<charT>, l) ? &BOOST_USE_FACET(std::messages<charT>, l) : 0;
-#endif
- m_pcollate = &BOOST_USE_FACET(std::collate<charT>, l);
- return result;
-}
-
-//
-// class cpp_regex_traits_char_layer:
-// implements methods that require specialisation for narrow characters:
-//
-template <class charT>
-class cpp_regex_traits_char_layer : public cpp_regex_traits_base<charT>
-{
- typedef std::basic_string<charT> string_type;
- typedef std::map<charT, regex_constants::syntax_type> map_type;
- typedef typename map_type::const_iterator map_iterator_type;
-public:
- cpp_regex_traits_char_layer(const std::locale& l)
- : cpp_regex_traits_base<charT>(l)
- {
- init();
- }
- cpp_regex_traits_char_layer(const cpp_regex_traits_base<charT>& b)
- : cpp_regex_traits_base<charT>(b)
- {
- init();
- }
- void init();
-
- regex_constants::syntax_type syntax_type(charT c)const
- {
- map_iterator_type i = m_char_map.find(c);
- return ((i == m_char_map.end()) ? 0 : i->second);
- }
- regex_constants::escape_syntax_type escape_syntax_type(charT c) const
- {
- map_iterator_type i = m_char_map.find(c);
- if(i == m_char_map.end())
- {
- if(this->m_pctype->is(std::ctype_base::lower, c)) return regex_constants::escape_type_class;
- if(this->m_pctype->is(std::ctype_base::upper, c)) return regex_constants::escape_type_not_class;
- return 0;
- }
- return i->second;
- }
-
-private:
- string_type get_default_message(regex_constants::syntax_type);
- // TODO: use a hash table when available!
- map_type m_char_map;
-};
-
-template <class charT>
-void cpp_regex_traits_char_layer<charT>::init()
-{
- // we need to start by initialising our syntax map so we know which
- // character is used for which purpose:
-#ifndef BOOST_NO_STD_MESSAGES
-#ifndef __IBMCPP__
- typename std::messages<charT>::catalog cat = static_cast<std::messages<char>::catalog>(-1);
-#else
- typename std::messages<charT>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1);
-#endif
- std::string cat_name(cpp_regex_traits<charT>::get_catalog_name());
- if(cat_name.size() && (this->m_pmessages != 0))
- {
- cat = this->m_pmessages->open(
- cat_name,
- this->m_locale);
- if((int)cat < 0)
- {
- std::string m("Unable to open message catalog: ");
- std::runtime_error err(m + cat_name);
- cutl_details_boost::re_detail::raise_runtime_error(err);
- }
- }
- //
- // if we have a valid catalog then load our messages:
- //
- if((int)cat >= 0)
- {
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
- {
- string_type mss = this->m_pmessages->get(cat, 0, i, get_default_message(i));
- for(typename string_type::size_type j = 0; j < mss.size(); ++j)
- {
- m_char_map[mss[j]] = i;
- }
- }
- this->m_pmessages->close(cat);
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- if(this->m_pmessages)
- this->m_pmessages->close(cat);
- throw;
- }
-#endif
- }
- else
- {
-#endif
- for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
- {
- const char* ptr = get_default_syntax(i);
- while(ptr && *ptr)
- {
- m_char_map[this->m_pctype->widen(*ptr)] = i;
- ++ptr;
- }
- }
-#ifndef BOOST_NO_STD_MESSAGES
- }
-#endif
-}
-
-template <class charT>
-typename cpp_regex_traits_char_layer<charT>::string_type
- cpp_regex_traits_char_layer<charT>::get_default_message(regex_constants::syntax_type i)
-{
- const char* ptr = get_default_syntax(i);
- string_type result;
- while(ptr && *ptr)
- {
- result.append(1, this->m_pctype->widen(*ptr));
- ++ptr;
- }
- return result;
-}
-
-//
-// specialised version for narrow characters:
-//
-template <>
-class BOOST_REGEX_DECL cpp_regex_traits_char_layer<char> : public cpp_regex_traits_base<char>
-{
- typedef std::string string_type;
-public:
- cpp_regex_traits_char_layer(const std::locale& l)
- : cpp_regex_traits_base<char>(l)
- {
- init();
- }
- cpp_regex_traits_char_layer(const cpp_regex_traits_base<char>& l)
- : cpp_regex_traits_base<char>(l)
- {
- init();
- }
-
- regex_constants::syntax_type syntax_type(char c)const
- {
- return m_char_map[static_cast<unsigned char>(c)];
- }
- regex_constants::escape_syntax_type escape_syntax_type(char c) const
- {
- return m_char_map[static_cast<unsigned char>(c)];
- }
-
-private:
- regex_constants::syntax_type m_char_map[1u << CHAR_BIT];
- void init();
-};
-
-#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
-enum
-{
- char_class_space=1<<0,
- char_class_print=1<<1,
- char_class_cntrl=1<<2,
- char_class_upper=1<<3,
- char_class_lower=1<<4,
- char_class_alpha=1<<5,
- char_class_digit=1<<6,
- char_class_punct=1<<7,
- char_class_xdigit=1<<8,
- char_class_alnum=char_class_alpha|char_class_digit,
- char_class_graph=char_class_alnum|char_class_punct,
- char_class_blank=1<<9,
- char_class_word=1<<10,
- char_class_unicode=1<<11,
- char_class_horizontal_space=1<<12,
- char_class_vertical_space=1<<13
-};
-
-#endif
-
-//
-// class cpp_regex_traits_implementation:
-// provides pimpl implementation for cpp_regex_traits.
-//
-template <class charT>
-class cpp_regex_traits_implementation : public cpp_regex_traits_char_layer<charT>
-{
-public:
- typedef typename cpp_regex_traits<charT>::char_class_type char_class_type;
- typedef typename std::ctype<charT>::mask native_mask_type;
-#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
- BOOST_STATIC_CONSTANT(char_class_type, mask_blank = 1u << 24);
- BOOST_STATIC_CONSTANT(char_class_type, mask_word = 1u << 25);
- BOOST_STATIC_CONSTANT(char_class_type, mask_unicode = 1u << 26);
- BOOST_STATIC_CONSTANT(char_class_type, mask_horizontal = 1u << 27);
- BOOST_STATIC_CONSTANT(char_class_type, mask_vertical = 1u << 28);
-#endif
-
- typedef std::basic_string<charT> string_type;
- typedef charT char_type;
- //cpp_regex_traits_implementation();
- cpp_regex_traits_implementation(const std::locale& l)
- : cpp_regex_traits_char_layer<charT>(l)
- {
- init();
- }
- cpp_regex_traits_implementation(const cpp_regex_traits_base<charT>& l)
- : cpp_regex_traits_char_layer<charT>(l)
- {
- init();
- }
- std::string error_string(regex_constants::error_type n) const
- {
- if(!m_error_strings.empty())
- {
- std::map<int, std::string>::const_iterator p = m_error_strings.find(n);
- return (p == m_error_strings.end()) ? std::string(get_default_error_string(n)) : p->second;
- }
- return get_default_error_string(n);
- }
- char_class_type lookup_classname(const charT* p1, const charT* p2) const
- {
- char_class_type result = lookup_classname_imp(p1, p2);
- if(result == 0)
- {
- string_type temp(p1, p2);
- this->m_pctype->tolower(&*temp.begin(), &*temp.begin() + temp.size());
- result = lookup_classname_imp(&*temp.begin(), &*temp.begin() + temp.size());
- }
- return result;
- }
- string_type lookup_collatename(const charT* p1, const charT* p2) const;
- string_type transform_primary(const charT* p1, const charT* p2) const;
- string_type transform(const charT* p1, const charT* p2) const;
-private:
- std::map<int, std::string> m_error_strings; // error messages indexed by numberic ID
- std::map<string_type, char_class_type> m_custom_class_names; // character class names
- std::map<string_type, string_type> m_custom_collate_names; // collating element names
- unsigned m_collate_type; // the form of the collation string
- charT m_collate_delim; // the collation group delimiter
- //
- // helpers:
- //
- char_class_type lookup_classname_imp(const charT* p1, const charT* p2) const;
- void init();
-#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
-public:
- bool isctype(charT c, char_class_type m)const;
-#endif
-};
-
-#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
-#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
-
-template <class charT>
-typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_blank;
-template <class charT>
-typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_word;
-template <class charT>
-typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_unicode;
-template <class charT>
-typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_vertical;
-template <class charT>
-typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_horizontal;
-
-#endif
-#endif
-
-template <class charT>
-typename cpp_regex_traits_implementation<charT>::string_type
- cpp_regex_traits_implementation<charT>::transform_primary(const charT* p1, const charT* p2) const
-{
- //
- // PRECONDITIONS:
- //
- // A bug in gcc 3.2 (and maybe other versions as well) treats
- // p1 as a null terminated string, for efficiency reasons
- // we work around this elsewhere, but just assert here that
- // we adhere to gcc's (buggy) preconditions...
- //
- BOOST_ASSERT(*p2 == 0);
-
- string_type result;
- //
- // swallowing all exceptions here is a bad idea
- // however at least one std lib will always throw
- // std::bad_alloc for certain arguments...
- //
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- //
- // What we do here depends upon the format of the sort key returned by
- // sort key returned by this->transform:
- //
- switch(m_collate_type)
- {
- case sort_C:
- case sort_unknown:
- // the best we can do is translate to lower case, then get a regular sort key:
- {
- result.assign(p1, p2);
- this->m_pctype->tolower(&*result.begin(), &*result.begin() + result.size());
- result = this->m_pcollate->transform(&*result.begin(), &*result.begin() + result.size());
- break;
- }
- case sort_fixed:
- {
- // get a regular sort key, and then truncate it:
- result.assign(this->m_pcollate->transform(p1, p2));
- result.erase(this->m_collate_delim);
- break;
- }
- case sort_delim:
- // get a regular sort key, and then truncate everything after the delim:
- result.assign(this->m_pcollate->transform(p1, p2));
- std::size_t i;
- for(i = 0; i < result.size(); ++i)
- {
- if(result[i] == m_collate_delim)
- break;
- }
- result.erase(i);
- break;
- }
-#ifndef BOOST_NO_EXCEPTIONS
- }catch(...){}
-#endif
- while(result.size() && (charT(0) == *result.rbegin()))
- result.erase(result.size() - 1);
- if(result.empty())
- {
- // character is ignorable at the primary level:
- result = string_type(1, charT(0));
- }
- return result;
-}
-
-template <class charT>
-typename cpp_regex_traits_implementation<charT>::string_type
- cpp_regex_traits_implementation<charT>::transform(const charT* p1, const charT* p2) const
-{
- //
- // PRECONDITIONS:
- //
- // A bug in gcc 3.2 (and maybe other versions as well) treats
- // p1 as a null terminated string, for efficiency reasons
- // we work around this elsewhere, but just assert here that
- // we adhere to gcc's (buggy) preconditions...
- //
- BOOST_ASSERT(*p2 == 0);
- //
- // swallowing all exceptions here is a bad idea
- // however at least one std lib will always throw
- // std::bad_alloc for certain arguments...
- //
- string_type result;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- result = this->m_pcollate->transform(p1, p2);
- //
- // Borland's STLPort version returns a NULL-terminated
- // string that has garbage at the end - each call to
- // std::collate<wchar_t>::transform returns a different string!
- // So as a workaround, we'll truncate the string at the first NULL
- // which _seems_ to work....
-#if BOOST_WORKAROUND(__BORLANDC__, < 0x580)
- result.erase(result.find(charT(0)));
-#else
- //
- // some implementations (Dinkumware) append unnecessary trailing \0's:
- while(result.size() && (charT(0) == *result.rbegin()))
- result.erase(result.size() - 1);
-#endif
- BOOST_ASSERT(std::find(result.begin(), result.end(), charT(0)) == result.end());
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- }
-#endif
- return result;
-}
-
-
-template <class charT>
-typename cpp_regex_traits_implementation<charT>::string_type
- cpp_regex_traits_implementation<charT>::lookup_collatename(const charT* p1, const charT* p2) const
-{
- typedef typename std::map<string_type, string_type>::const_iterator iter_type;
- if(m_custom_collate_names.size())
- {
- iter_type pos = m_custom_collate_names.find(string_type(p1, p2));
- if(pos != m_custom_collate_names.end())
- return pos->second;
- }
-#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
- && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
- && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
- std::string name(p1, p2);
-#else
- std::string name;
- const charT* p0 = p1;
- while(p0 != p2)
- name.append(1, char(*p0++));
-#endif
- name = lookup_default_collate_name(name);
-#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
- && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
- && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
- if(name.size())
- return string_type(name.begin(), name.end());
-#else
- if(name.size())
- {
- string_type result;
- typedef std::string::const_iterator iter;
- iter b = name.begin();
- iter e = name.end();
- while(b != e)
- result.append(1, charT(*b++));
- return result;
- }
-#endif
- if(p2 - p1 == 1)
- return string_type(1, *p1);
- return string_type();
-}
-
-template <class charT>
-void cpp_regex_traits_implementation<charT>::init()
-{
-#ifndef BOOST_NO_STD_MESSAGES
-#ifndef __IBMCPP__
- typename std::messages<charT>::catalog cat = static_cast<std::messages<char>::catalog>(-1);
-#else
- typename std::messages<charT>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1);
-#endif
- std::string cat_name(cpp_regex_traits<charT>::get_catalog_name());
- if(cat_name.size() && (this->m_pmessages != 0))
- {
- cat = this->m_pmessages->open(
- cat_name,
- this->m_locale);
- if((int)cat < 0)
- {
- std::string m("Unable to open message catalog: ");
- std::runtime_error err(m + cat_name);
- cutl_details_boost::re_detail::raise_runtime_error(err);
- }
- }
- //
- // if we have a valid catalog then load our messages:
- //
- if((int)cat >= 0)
- {
- //
- // Error messages:
- //
- for(cutl_details_boost::regex_constants::error_type i = static_cast<cutl_details_boost::regex_constants::error_type>(0);
- i <= cutl_details_boost::regex_constants::error_unknown;
- i = static_cast<cutl_details_boost::regex_constants::error_type>(i + 1))
- {
- const char* p = get_default_error_string(i);
- string_type default_message;
- while(*p)
- {
- default_message.append(1, this->m_pctype->widen(*p));
- ++p;
- }
- string_type s = this->m_pmessages->get(cat, 0, i+200, default_message);
- std::string result;
- for(std::string::size_type j = 0; j < s.size(); ++j)
- {
- result.append(1, this->m_pctype->narrow(s[j], 0));
- }
- m_error_strings[i] = result;
- }
- //
- // Custom class names:
- //
-#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
- static const char_class_type masks[16] =
- {
- std::ctype<charT>::alnum,
- std::ctype<charT>::alpha,
- std::ctype<charT>::cntrl,
- std::ctype<charT>::digit,
- std::ctype<charT>::graph,
- cpp_regex_traits_implementation<charT>::mask_horizontal,
- std::ctype<charT>::lower,
- std::ctype<charT>::print,
- std::ctype<charT>::punct,
- std::ctype<charT>::space,
- std::ctype<charT>::upper,
- cpp_regex_traits_implementation<charT>::mask_vertical,
- std::ctype<charT>::xdigit,
- cpp_regex_traits_implementation<charT>::mask_blank,
- cpp_regex_traits_implementation<charT>::mask_word,
- cpp_regex_traits_implementation<charT>::mask_unicode,
- };
-#else
- static const char_class_type masks[16] =
- {
- ::cutl_details_boost::re_detail::char_class_alnum,
- ::cutl_details_boost::re_detail::char_class_alpha,
- ::cutl_details_boost::re_detail::char_class_cntrl,
- ::cutl_details_boost::re_detail::char_class_digit,
- ::cutl_details_boost::re_detail::char_class_graph,
- ::cutl_details_boost::re_detail::char_class_horizontal_space,
- ::cutl_details_boost::re_detail::char_class_lower,
- ::cutl_details_boost::re_detail::char_class_print,
- ::cutl_details_boost::re_detail::char_class_punct,
- ::cutl_details_boost::re_detail::char_class_space,
- ::cutl_details_boost::re_detail::char_class_upper,
- ::cutl_details_boost::re_detail::char_class_vertical_space,
- ::cutl_details_boost::re_detail::char_class_xdigit,
- ::cutl_details_boost::re_detail::char_class_blank,
- ::cutl_details_boost::re_detail::char_class_word,
- ::cutl_details_boost::re_detail::char_class_unicode,
- };
-#endif
- static const string_type null_string;
- for(unsigned int j = 0; j <= 13; ++j)
- {
- string_type s(this->m_pmessages->get(cat, 0, j+300, null_string));
- if(s.size())
- this->m_custom_class_names[s] = masks[j];
- }
- }
-#endif
- //
- // get the collation format used by m_pcollate:
- //
- m_collate_type = re_detail::find_sort_syntax(this, &m_collate_delim);
-}
-
-template <class charT>
-typename cpp_regex_traits_implementation<charT>::char_class_type
- cpp_regex_traits_implementation<charT>::lookup_classname_imp(const charT* p1, const charT* p2) const
-{
-#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
- static const char_class_type masks[22] =
- {
- 0,
- std::ctype<char>::alnum,
- std::ctype<char>::alpha,
- cpp_regex_traits_implementation<charT>::mask_blank,
- std::ctype<char>::cntrl,
- std::ctype<char>::digit,
- std::ctype<char>::digit,
- std::ctype<char>::graph,
- cpp_regex_traits_implementation<charT>::mask_horizontal,
- std::ctype<char>::lower,
- std::ctype<char>::lower,
- std::ctype<char>::print,
- std::ctype<char>::punct,
- std::ctype<char>::space,
- std::ctype<char>::space,
- std::ctype<char>::upper,
- cpp_regex_traits_implementation<charT>::mask_unicode,
- std::ctype<char>::upper,
- cpp_regex_traits_implementation<charT>::mask_vertical,
- std::ctype<char>::alnum | cpp_regex_traits_implementation<charT>::mask_word,
- std::ctype<char>::alnum | cpp_regex_traits_implementation<charT>::mask_word,
- std::ctype<char>::xdigit,
- };
-#else
- static const char_class_type masks[22] =
- {
- 0,
- ::cutl_details_boost::re_detail::char_class_alnum,
- ::cutl_details_boost::re_detail::char_class_alpha,
- ::cutl_details_boost::re_detail::char_class_blank,
- ::cutl_details_boost::re_detail::char_class_cntrl,
- ::cutl_details_boost::re_detail::char_class_digit,
- ::cutl_details_boost::re_detail::char_class_digit,
- ::cutl_details_boost::re_detail::char_class_graph,
- ::cutl_details_boost::re_detail::char_class_horizontal_space,
- ::cutl_details_boost::re_detail::char_class_lower,
- ::cutl_details_boost::re_detail::char_class_lower,
- ::cutl_details_boost::re_detail::char_class_print,
- ::cutl_details_boost::re_detail::char_class_punct,
- ::cutl_details_boost::re_detail::char_class_space,
- ::cutl_details_boost::re_detail::char_class_space,
- ::cutl_details_boost::re_detail::char_class_upper,
- ::cutl_details_boost::re_detail::char_class_unicode,
- ::cutl_details_boost::re_detail::char_class_upper,
- ::cutl_details_boost::re_detail::char_class_vertical_space,
- ::cutl_details_boost::re_detail::char_class_alnum | ::cutl_details_boost::re_detail::char_class_word,
- ::cutl_details_boost::re_detail::char_class_alnum | ::cutl_details_boost::re_detail::char_class_word,
- ::cutl_details_boost::re_detail::char_class_xdigit,
- };
-#endif
- if(m_custom_class_names.size())
- {
- typedef typename std::map<std::basic_string<charT>, char_class_type>::const_iterator map_iter;
- map_iter pos = m_custom_class_names.find(string_type(p1, p2));
- if(pos != m_custom_class_names.end())
- return pos->second;
- }
- std::size_t state_id = 1 + re_detail::get_default_class_id(p1, p2);
- BOOST_ASSERT(state_id < sizeof(masks) / sizeof(masks[0]));
- return masks[state_id];
-}
-
-#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
-template <class charT>
-bool cpp_regex_traits_implementation<charT>::isctype(const charT c, char_class_type mask) const
-{
- return
- ((mask & ::cutl_details_boost::re_detail::char_class_space) && (this->m_pctype->is(std::ctype<charT>::space, c)))
- || ((mask & ::cutl_details_boost::re_detail::char_class_print) && (this->m_pctype->is(std::ctype<charT>::print, c)))
- || ((mask & ::cutl_details_boost::re_detail::char_class_cntrl) && (this->m_pctype->is(std::ctype<charT>::cntrl, c)))
- || ((mask & ::cutl_details_boost::re_detail::char_class_upper) && (this->m_pctype->is(std::ctype<charT>::upper, c)))
- || ((mask & ::cutl_details_boost::re_detail::char_class_lower) && (this->m_pctype->is(std::ctype<charT>::lower, c)))
- || ((mask & ::cutl_details_boost::re_detail::char_class_alpha) && (this->m_pctype->is(std::ctype<charT>::alpha, c)))
- || ((mask & ::cutl_details_boost::re_detail::char_class_digit) && (this->m_pctype->is(std::ctype<charT>::digit, c)))
- || ((mask & ::cutl_details_boost::re_detail::char_class_punct) && (this->m_pctype->is(std::ctype<charT>::punct, c)))
- || ((mask & ::cutl_details_boost::re_detail::char_class_xdigit) && (this->m_pctype->is(std::ctype<charT>::xdigit, c)))
- || ((mask & ::cutl_details_boost::re_detail::char_class_blank) && (this->m_pctype->is(std::ctype<charT>::space, c)) && !::cutl_details_boost::re_detail::is_separator(c))
- || ((mask & ::cutl_details_boost::re_detail::char_class_word) && (c == '_'))
- || ((mask & ::cutl_details_boost::re_detail::char_class_unicode) && ::cutl_details_boost::re_detail::is_extended(c))
- || ((mask & ::cutl_details_boost::re_detail::char_class_vertical_space) && (is_separator(c) || (c == '\v')))
- || ((mask & ::cutl_details_boost::re_detail::char_class_horizontal_space) && this->m_pctype->is(std::ctype<charT>::space, c) && !(is_separator(c) || (c == '\v')));
-}
-#endif
-
-
-template <class charT>
-inline cutl_details_boost::shared_ptr<const cpp_regex_traits_implementation<charT> > create_cpp_regex_traits(const std::locale& l BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(charT))
-{
- cpp_regex_traits_base<charT> key(l);
- return ::cutl_details_boost::object_cache<cpp_regex_traits_base<charT>, cpp_regex_traits_implementation<charT> >::get(key, 5);
-}
-
-} // re_detail
-
-template <class charT>
-class cpp_regex_traits
-{
-private:
- typedef std::ctype<charT> ctype_type;
-public:
- typedef charT char_type;
- typedef std::size_t size_type;
- typedef std::basic_string<char_type> string_type;
- typedef std::locale locale_type;
- typedef cutl_details_boost::uint_least32_t char_class_type;
-
- struct boost_extensions_tag{};
-
- cpp_regex_traits()
- : m_pimpl(re_detail::create_cpp_regex_traits<charT>(std::locale()))
- { }
- static size_type length(const char_type* p)
- {
- return std::char_traits<charT>::length(p);
- }
- regex_constants::syntax_type syntax_type(charT c)const
- {
- return m_pimpl->syntax_type(c);
- }
- regex_constants::escape_syntax_type escape_syntax_type(charT c) const
- {
- return m_pimpl->escape_syntax_type(c);
- }
- charT translate(charT c) const
- {
- return c;
- }
- charT translate_nocase(charT c) const
- {
- return m_pimpl->m_pctype->tolower(c);
- }
- charT translate(charT c, bool icase) const
- {
- return icase ? m_pimpl->m_pctype->tolower(c) : c;
- }
- charT tolower(charT c) const
- {
- return m_pimpl->m_pctype->tolower(c);
- }
- charT toupper(charT c) const
- {
- return m_pimpl->m_pctype->toupper(c);
- }
- string_type transform(const charT* p1, const charT* p2) const
- {
- return m_pimpl->transform(p1, p2);
- }
- string_type transform_primary(const charT* p1, const charT* p2) const
- {
- return m_pimpl->transform_primary(p1, p2);
- }
- char_class_type lookup_classname(const charT* p1, const charT* p2) const
- {
- return m_pimpl->lookup_classname(p1, p2);
- }
- string_type lookup_collatename(const charT* p1, const charT* p2) const
- {
- return m_pimpl->lookup_collatename(p1, p2);
- }
- bool isctype(charT c, char_class_type f) const
- {
-#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
- typedef typename std::ctype<charT>::mask ctype_mask;
-
- static const ctype_mask mask_base =
- static_cast<ctype_mask>(
- std::ctype<charT>::alnum
- | std::ctype<charT>::alpha
- | std::ctype<charT>::cntrl
- | std::ctype<charT>::digit
- | std::ctype<charT>::graph
- | std::ctype<charT>::lower
- | std::ctype<charT>::print
- | std::ctype<charT>::punct
- | std::ctype<charT>::space
- | std::ctype<charT>::upper
- | std::ctype<charT>::xdigit);
-
- if((f & mask_base)
- && (m_pimpl->m_pctype->is(
- static_cast<ctype_mask>(f & mask_base), c)))
- return true;
- else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_unicode) && re_detail::is_extended(c))
- return true;
- else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_word) && (c == '_'))
- return true;
- else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_blank)
- && m_pimpl->m_pctype->is(std::ctype<charT>::space, c)
- && !re_detail::is_separator(c))
- return true;
- else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_vertical)
- && (::cutl_details_boost::re_detail::is_separator(c) || (c == '\v')))
- return true;
- else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_horizontal)
- && this->isctype(c, std::ctype<charT>::space) && !this->isctype(c, re_detail::cpp_regex_traits_implementation<charT>::mask_vertical))
- return true;
- return false;
-#else
- return m_pimpl->isctype(c, f);
-#endif
- }
- int toi(const charT*& p1, const charT* p2, int radix)const;
- int value(charT c, int radix)const
- {
- const charT* pc = &c;
- return toi(pc, pc + 1, radix);
- }
- locale_type imbue(locale_type l)
- {
- std::locale result(getloc());
- m_pimpl = re_detail::create_cpp_regex_traits<charT>(l);
- return result;
- }
- locale_type getloc()const
- {
- return m_pimpl->m_locale;
- }
- std::string error_string(regex_constants::error_type n) const
- {
- return m_pimpl->error_string(n);
- }
-
- //
- // extension:
- // set the name of the message catalog in use (defaults to "boost_regex").
- //
- static std::string catalog_name(const std::string& name);
- static std::string get_catalog_name();
-
-private:
- cutl_details_boost::shared_ptr<const re_detail::cpp_regex_traits_implementation<charT> > m_pimpl;
- //
- // catalog name handler:
- //
- static std::string& get_catalog_name_inst();
-
-#ifdef BOOST_HAS_THREADS
- static static_mutex& get_mutex_inst();
-#endif
-};
-
-
-template <class charT>
-int cpp_regex_traits<charT>::toi(const charT*& first, const charT* last, int radix)const
-{
- re_detail::parser_buf<charT> sbuf; // buffer for parsing numbers.
- std::basic_istream<charT> is(&sbuf); // stream for parsing numbers.
-
- // we do NOT want to parse any thousands separators inside the stream:
- last = std::find(first, last, BOOST_USE_FACET(std::numpunct<charT>, is.getloc()).thousands_sep());
-
- sbuf.pubsetbuf(const_cast<charT*>(static_cast<const charT*>(first)), static_cast<std::streamsize>(last-first));
- is.clear();
- if(std::abs(radix) == 16) is >> std::hex;
- else if(std::abs(radix) == 8) is >> std::oct;
- else is >> std::dec;
- int val;
- if(is >> val)
- {
- first = first + ((last - first) - sbuf.in_avail());
- return val;
- }
- else
- return -1;
-}
-
-template <class charT>
-std::string cpp_regex_traits<charT>::catalog_name(const std::string& name)
-{
-#ifdef BOOST_HAS_THREADS
- static_mutex::scoped_lock lk(get_mutex_inst());
-#endif
- std::string result(get_catalog_name_inst());
- get_catalog_name_inst() = name;
- return result;
-}
-
-template <class charT>
-std::string& cpp_regex_traits<charT>::get_catalog_name_inst()
-{
- static std::string s_name;
- return s_name;
-}
-
-template <class charT>
-std::string cpp_regex_traits<charT>::get_catalog_name()
-{
-#ifdef BOOST_HAS_THREADS
- static_mutex::scoped_lock lk(get_mutex_inst());
-#endif
- std::string result(get_catalog_name_inst());
- return result;
-}
-
-#ifdef BOOST_HAS_THREADS
-template <class charT>
-static_mutex& cpp_regex_traits<charT>::get_mutex_inst()
-{
- static static_mutex s_mutex = BOOST_STATIC_MUTEX_INIT;
- return s_mutex;
-}
-#endif
-
-
-} // boost
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/cregex.hpp b/libcutl/cutl/details/boost/regex/v4/cregex.hpp
deleted file mode 100644
index 0930a84..0000000
--- a/libcutl/cutl/details/boost/regex/v4/cregex.hpp
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE cregex.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares POSIX API functions
- * + cutl_details_boost::RegEx high level wrapper.
- */
-
-#ifndef BOOST_RE_CREGEX_HPP_INCLUDED
-#define BOOST_RE_CREGEX_HPP_INCLUDED
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-#include <cutl/details/boost/regex/v4/match_flags.hpp>
-#include <cutl/details/boost/regex/v4/error_type.hpp>
-
-#ifdef __cplusplus
-#include <cstddef>
-#else
-#include <stddef.h>
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-/* include these defs only for POSIX compatablity */
-#ifdef __cplusplus
-namespace cutl_details_boost{
-extern "C" {
-#endif
-
-#if defined(__cplusplus) && !defined(BOOST_NO_STDC_NAMESPACE)
-typedef std::ptrdiff_t regoff_t;
-typedef std::size_t regsize_t;
-#else
-typedef ptrdiff_t regoff_t;
-typedef size_t regsize_t;
-#endif
-
-typedef struct
-{
- unsigned int re_magic;
-#ifdef __cplusplus
- std::size_t re_nsub; /* number of parenthesized subexpressions */
-#else
- size_t re_nsub;
-#endif
- const char* re_endp; /* end pointer for REG_PEND */
- void* guts; /* none of your business :-) */
- match_flag_type eflags; /* none of your business :-) */
-} regex_tA;
-
-#ifndef BOOST_NO_WREGEX
-typedef struct
-{
- unsigned int re_magic;
-#ifdef __cplusplus
- std::size_t re_nsub; /* number of parenthesized subexpressions */
-#else
- size_t re_nsub;
-#endif
- const wchar_t* re_endp; /* end pointer for REG_PEND */
- void* guts; /* none of your business :-) */
- match_flag_type eflags; /* none of your business :-) */
-} regex_tW;
-#endif
-
-typedef struct
-{
- regoff_t rm_so; /* start of match */
- regoff_t rm_eo; /* end of match */
-} regmatch_t;
-
-/* regcomp() flags */
-typedef enum{
- REG_BASIC = 0000,
- REG_EXTENDED = 0001,
- REG_ICASE = 0002,
- REG_NOSUB = 0004,
- REG_NEWLINE = 0010,
- REG_NOSPEC = 0020,
- REG_PEND = 0040,
- REG_DUMP = 0200,
- REG_NOCOLLATE = 0400,
- REG_ESCAPE_IN_LISTS = 01000,
- REG_NEWLINE_ALT = 02000,
- REG_PERLEX = 04000,
-
- REG_PERL = REG_EXTENDED | REG_NOCOLLATE | REG_ESCAPE_IN_LISTS | REG_PERLEX,
- REG_AWK = REG_EXTENDED | REG_ESCAPE_IN_LISTS,
- REG_GREP = REG_BASIC | REG_NEWLINE_ALT,
- REG_EGREP = REG_EXTENDED | REG_NEWLINE_ALT,
-
- REG_ASSERT = 15,
- REG_INVARG = 16,
- REG_ATOI = 255, /* convert name to number (!) */
- REG_ITOA = 0400 /* convert number to name (!) */
-} reg_comp_flags;
-
-/* regexec() flags */
-typedef enum{
- REG_NOTBOL = 00001,
- REG_NOTEOL = 00002,
- REG_STARTEND = 00004
-} reg_exec_flags;
-
-/*
- * POSIX error codes:
- */
-typedef unsigned reg_error_t;
-typedef reg_error_t reg_errcode_t; /* backwards compatibility */
-
-static const reg_error_t REG_NOERROR = 0; /* Success. */
-static const reg_error_t REG_NOMATCH = 1; /* Didn't find a match (for regexec). */
-
- /* POSIX regcomp return error codes. (In the order listed in the
- standard.) */
-static const reg_error_t REG_BADPAT = 2; /* Invalid pattern. */
-static const reg_error_t REG_ECOLLATE = 3; /* Undefined collating element. */
-static const reg_error_t REG_ECTYPE = 4; /* Invalid character class name. */
-static const reg_error_t REG_EESCAPE = 5; /* Trailing backslash. */
-static const reg_error_t REG_ESUBREG = 6; /* Invalid back reference. */
-static const reg_error_t REG_EBRACK = 7; /* Unmatched left bracket. */
-static const reg_error_t REG_EPAREN = 8; /* Parenthesis imbalance. */
-static const reg_error_t REG_EBRACE = 9; /* Unmatched \{. */
-static const reg_error_t REG_BADBR = 10; /* Invalid contents of \{\}. */
-static const reg_error_t REG_ERANGE = 11; /* Invalid range end. */
-static const reg_error_t REG_ESPACE = 12; /* Ran out of memory. */
-static const reg_error_t REG_BADRPT = 13; /* No preceding re for repetition op. */
-static const reg_error_t REG_EEND = 14; /* unexpected end of expression */
-static const reg_error_t REG_ESIZE = 15; /* expression too big */
-static const reg_error_t REG_ERPAREN = 8; /* = REG_EPAREN : unmatched right parenthesis */
-static const reg_error_t REG_EMPTY = 17; /* empty expression */
-static const reg_error_t REG_E_MEMORY = 15; /* = REG_ESIZE : out of memory */
-static const reg_error_t REG_ECOMPLEXITY = 18; /* complexity too high */
-static const reg_error_t REG_ESTACK = 19; /* out of stack space */
-static const reg_error_t REG_E_PERL = 20; /* Perl (?...) error */
-static const reg_error_t REG_E_UNKNOWN = 21; /* unknown error */
-static const reg_error_t REG_ENOSYS = 21; /* = REG_E_UNKNOWN : Reserved. */
-
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompA(regex_tA*, const char*, int);
-BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int, const regex_tA*, char*, regsize_t);
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecA(const regex_tA*, const char*, regsize_t, regmatch_t*, int);
-BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeA(regex_tA*);
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW*, const wchar_t*, int);
-BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int, const regex_tW*, wchar_t*, regsize_t);
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecW(const regex_tW*, const wchar_t*, regsize_t, regmatch_t*, int);
-BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeW(regex_tW*);
-#endif
-
-#ifdef UNICODE
-#define regcomp regcompW
-#define regerror regerrorW
-#define regexec regexecW
-#define regfree regfreeW
-#define regex_t regex_tW
-#else
-#define regcomp regcompA
-#define regerror regerrorA
-#define regexec regexecA
-#define regfree regfreeA
-#define regex_t regex_tA
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-} /* namespace */
-#endif
-
-#if defined(__cplusplus)
-/*
- * C++ high level wrapper goes here:
- */
-#include <string>
-#include <vector>
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-class RegEx;
-
-namespace re_detail{
-
-class RegExData;
-struct pred1;
-struct pred2;
-struct pred3;
-struct pred4;
-
-} /* namespace re_detail */
-
-#if (defined(BOOST_MSVC) || defined(__BORLANDC__)) && !defined(BOOST_DISABLE_WIN32)
-typedef bool (__cdecl *GrepCallback)(const RegEx& expression);
-typedef bool (__cdecl *GrepFileCallback)(const char* file, const RegEx& expression);
-typedef bool (__cdecl *FindFilesCallback)(const char* file);
-#else
-typedef bool (*GrepCallback)(const RegEx& expression);
-typedef bool (*GrepFileCallback)(const char* file, const RegEx& expression);
-typedef bool (*FindFilesCallback)(const char* file);
-#endif
-
-class BOOST_REGEX_DECL RegEx
-{
-private:
- re_detail::RegExData* pdata;
-public:
- RegEx();
- RegEx(const RegEx& o);
- ~RegEx();
- explicit RegEx(const char* c, bool icase = false);
- explicit RegEx(const std::string& s, bool icase = false);
- RegEx& operator=(const RegEx& o);
- RegEx& operator=(const char* p);
- RegEx& operator=(const std::string& s){ return this->operator=(s.c_str()); }
- unsigned int SetExpression(const char* p, bool icase = false);
- unsigned int SetExpression(const std::string& s, bool icase = false){ return SetExpression(s.c_str(), icase); }
- std::string Expression()const;
- unsigned int error_code()const;
- /*
- * now matching operators:
- */
- bool Match(const char* p, match_flag_type flags = match_default);
- bool Match(const std::string& s, match_flag_type flags = match_default) { return Match(s.c_str(), flags); }
- bool Search(const char* p, match_flag_type flags = match_default);
- bool Search(const std::string& s, match_flag_type flags = match_default) { return Search(s.c_str(), flags); }
- unsigned int Grep(GrepCallback cb, const char* p, match_flag_type flags = match_default);
- unsigned int Grep(GrepCallback cb, const std::string& s, match_flag_type flags = match_default) { return Grep(cb, s.c_str(), flags); }
- unsigned int Grep(std::vector<std::string>& v, const char* p, match_flag_type flags = match_default);
- unsigned int Grep(std::vector<std::string>& v, const std::string& s, match_flag_type flags = match_default) { return Grep(v, s.c_str(), flags); }
- unsigned int Grep(std::vector<std::size_t>& v, const char* p, match_flag_type flags = match_default);
- unsigned int Grep(std::vector<std::size_t>& v, const std::string& s, match_flag_type flags = match_default) { return Grep(v, s.c_str(), flags); }
-#ifndef BOOST_REGEX_NO_FILEITER
- unsigned int GrepFiles(GrepFileCallback cb, const char* files, bool recurse = false, match_flag_type flags = match_default);
- unsigned int GrepFiles(GrepFileCallback cb, const std::string& files, bool recurse = false, match_flag_type flags = match_default) { return GrepFiles(cb, files.c_str(), recurse, flags); }
- unsigned int FindFiles(FindFilesCallback cb, const char* files, bool recurse = false, match_flag_type flags = match_default);
- unsigned int FindFiles(FindFilesCallback cb, const std::string& files, bool recurse = false, match_flag_type flags = match_default) { return FindFiles(cb, files.c_str(), recurse, flags); }
-#endif
-
- std::string Merge(const std::string& in, const std::string& fmt,
- bool copy = true, match_flag_type flags = match_default);
- std::string Merge(const char* in, const char* fmt,
- bool copy = true, match_flag_type flags = match_default);
-
- std::size_t Split(std::vector<std::string>& v, std::string& s, match_flag_type flags = match_default, unsigned max_count = ~0);
- /*
- * now operators for returning what matched in more detail:
- */
- std::size_t Position(int i = 0)const;
- std::size_t Length(int i = 0)const;
- bool Matched(int i = 0)const;
- std::size_t Marks()const;
- std::string What(int i = 0)const;
- std::string operator[](int i)const { return What(i); }
-
- static const std::size_t npos;
-
- friend struct re_detail::pred1;
- friend struct re_detail::pred2;
- friend struct re_detail::pred3;
- friend struct re_detail::pred4;
-};
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} /* namespace cutl_details_boost */
-
-#endif /* __cplusplus */
-
-#endif /* include guard */
-
-
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/error_type.hpp b/libcutl/cutl/details/boost/regex/v4/error_type.hpp
deleted file mode 100644
index db00e46..0000000
--- a/libcutl/cutl/details/boost/regex/v4/error_type.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *
- * Copyright (c) 2003-2005
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE error_type.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares regular expression error type enumerator.
- */
-
-#ifndef BOOST_REGEX_ERROR_TYPE_HPP
-#define BOOST_REGEX_ERROR_TYPE_HPP
-
-#ifdef __cplusplus
-namespace cutl_details_boost{
-#endif
-
-#ifdef __cplusplus
-namespace regex_constants{
-
-enum error_type{
-
- error_ok = 0, /* not used */
- error_no_match = 1, /* not used */
- error_bad_pattern = 2,
- error_collate = 3,
- error_ctype = 4,
- error_escape = 5,
- error_backref = 6,
- error_brack = 7,
- error_paren = 8,
- error_brace = 9,
- error_badbrace = 10,
- error_range = 11,
- error_space = 12,
- error_badrepeat = 13,
- error_end = 14, /* not used */
- error_size = 15,
- error_right_paren = 16, /* not used */
- error_empty = 17,
- error_complexity = 18,
- error_stack = 19,
- error_perl_extension = 20,
- error_unknown = 21
-};
-
-}
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex/v4/fileiter.hpp b/libcutl/cutl/details/boost/regex/v4/fileiter.hpp
deleted file mode 100644
index 8474f0a..0000000
--- a/libcutl/cutl/details/boost/regex/v4/fileiter.hpp
+++ /dev/null
@@ -1,455 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE fileiter.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares various platform independent file and
- * directory iterators, plus binary file input in
- * the form of class map_file.
- */
-
-#ifndef BOOST_RE_FILEITER_HPP_INCLUDED
-#define BOOST_RE_FILEITER_HPP_INCLUDED
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-#include <cutl/details/boost/assert.hpp>
-
-#ifndef BOOST_REGEX_NO_FILEITER
-
-#if (defined(__CYGWIN__) || defined(__CYGWIN32__)) && !defined(BOOST_REGEX_NO_W32)
-#error "Sorry, can't mix <windows.h> with STL code and gcc compiler: if you ran configure, try again with configure --disable-ms-windows"
-#define BOOST_REGEX_FI_WIN32_MAP
-#define BOOST_REGEX_FI_POSIX_DIR
-#elif (defined(__WIN32__) || defined(_WIN32) || defined(WIN32)) && !defined(BOOST_REGEX_NO_W32)
-#define BOOST_REGEX_FI_WIN32_MAP
-#define BOOST_REGEX_FI_WIN32_DIR
-#else
-#define BOOST_REGEX_FI_POSIX_MAP
-#define BOOST_REGEX_FI_POSIX_DIR
-#endif
-
-#if defined(BOOST_REGEX_FI_WIN32_MAP)||defined(BOOST_REGEX_FI_WIN32_DIR)
-#include <windows.h>
-#endif
-
-#if defined(BOOST_REGEX_FI_WIN32_DIR)
-
-#include <cstddef>
-
-namespace cutl_details_boost{
- namespace re_detail{
-
-#ifndef BOOST_NO_ANSI_APIS
-typedef WIN32_FIND_DATAA _fi_find_data;
-#else
-typedef WIN32_FIND_DATAW _fi_find_data;
-#endif
-typedef HANDLE _fi_find_handle;
-
- } // namespace re_detail
-
-} // namespace cutl_details_boost
-
-#define _fi_invalid_handle INVALID_HANDLE_VALUE
-#define _fi_dir FILE_ATTRIBUTE_DIRECTORY
-
-#elif defined(BOOST_REGEX_FI_POSIX_DIR)
-
-#include <cstddef>
-#include <cstdio>
-#include <cctype>
-#include <iterator>
-#include <list>
-#include <cassert>
-#include <dirent.h>
-
-#if defined(__SUNPRO_CC)
-using std::list;
-#endif
-
-#ifndef MAX_PATH
-#define MAX_PATH 256
-#endif
-
-namespace cutl_details_boost{
- namespace re_detail{
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-struct _fi_find_data
-{
- unsigned dwFileAttributes;
- char cFileName[MAX_PATH];
-};
-
-struct _fi_priv_data;
-
-typedef _fi_priv_data* _fi_find_handle;
-#define _fi_invalid_handle 0
-#define _fi_dir 1
-
-_fi_find_handle _fi_FindFirstFile(const char* lpFileName, _fi_find_data* lpFindFileData);
-bool _fi_FindNextFile(_fi_find_handle hFindFile, _fi_find_data* lpFindFileData);
-bool _fi_FindClose(_fi_find_handle hFindFile);
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
- } // namespace re_detail
-} // namespace cutl_details_boost
-
-#ifdef FindFirstFile
- #undef FindFirstFile
-#endif
-#ifdef FindNextFile
- #undef FindNextFile
-#endif
-#ifdef FindClose
- #undef FindClose
-#endif
-
-#define FindFirstFileA _fi_FindFirstFile
-#define FindNextFileA _fi_FindNextFile
-#define FindClose _fi_FindClose
-
-#endif
-
-namespace cutl_details_boost{
- namespace re_detail{
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef BOOST_REGEX_FI_WIN32_MAP // win32 mapfile
-
-class BOOST_REGEX_DECL mapfile
-{
- HANDLE hfile;
- HANDLE hmap;
- const char* _first;
- const char* _last;
-public:
-
- typedef const char* iterator;
-
- mapfile(){ hfile = hmap = 0; _first = _last = 0; }
- mapfile(const char* file){ hfile = hmap = 0; _first = _last = 0; open(file); }
- ~mapfile(){ close(); }
- void open(const char* file);
- void close();
- const char* begin(){ return _first; }
- const char* end(){ return _last; }
- size_t size(){ return _last - _first; }
- bool valid(){ return (hfile != 0) && (hfile != INVALID_HANDLE_VALUE); }
-};
-
-
-#else
-
-class BOOST_REGEX_DECL mapfile_iterator;
-
-class BOOST_REGEX_DECL mapfile
-{
- typedef char* pointer;
- std::FILE* hfile;
- long int _size;
- pointer* _first;
- pointer* _last;
- mutable std::list<pointer*> condemed;
- enum sizes
- {
- buf_size = 4096
- };
- void lock(pointer* node)const;
- void unlock(pointer* node)const;
-public:
-
- typedef mapfile_iterator iterator;
-
- mapfile(){ hfile = 0; _size = 0; _first = _last = 0; }
- mapfile(const char* file){ hfile = 0; _size = 0; _first = _last = 0; open(file); }
- ~mapfile(){ close(); }
- void open(const char* file);
- void close();
- iterator begin()const;
- iterator end()const;
- unsigned long size()const{ return _size; }
- bool valid()const{ return hfile != 0; }
- friend class mapfile_iterator;
-};
-
-class BOOST_REGEX_DECL mapfile_iterator
-#if !defined(BOOST_NO_STD_ITERATOR) || defined(BOOST_MSVC_STD_ITERATOR)
-: public std::iterator<std::random_access_iterator_tag, char>
-#endif
-{
- typedef mapfile::pointer internal_pointer;
- internal_pointer* node;
- const mapfile* file;
- unsigned long offset;
- long position()const
- {
- return file ? ((node - file->_first) * mapfile::buf_size + offset) : 0;
- }
- void position(long pos)
- {
- if(file)
- {
- node = file->_first + (pos / mapfile::buf_size);
- offset = pos % mapfile::buf_size;
- }
- }
-public:
- typedef std::ptrdiff_t difference_type;
- typedef char value_type;
- typedef const char* pointer;
- typedef const char& reference;
- typedef std::random_access_iterator_tag iterator_category;
-
- mapfile_iterator() { node = 0; file = 0; offset = 0; }
- mapfile_iterator(const mapfile* f, long arg_position)
- {
- file = f;
- node = f->_first + arg_position / mapfile::buf_size;
- offset = arg_position % mapfile::buf_size;
- if(file)
- file->lock(node);
- }
- mapfile_iterator(const mapfile_iterator& i)
- {
- file = i.file;
- node = i.node;
- offset = i.offset;
- if(file)
- file->lock(node);
- }
- ~mapfile_iterator()
- {
- if(file && node)
- file->unlock(node);
- }
- mapfile_iterator& operator = (const mapfile_iterator& i);
- char operator* ()const
- {
- BOOST_ASSERT(node >= file->_first);
- BOOST_ASSERT(node < file->_last);
- return file ? *(*node + sizeof(int) + offset) : char(0);
- }
- char operator[] (long off)const
- {
- mapfile_iterator tmp(*this);
- tmp += off;
- return *tmp;
- }
- mapfile_iterator& operator++ ();
- mapfile_iterator operator++ (int);
- mapfile_iterator& operator-- ();
- mapfile_iterator operator-- (int);
-
- mapfile_iterator& operator += (long off)
- {
- position(position() + off);
- return *this;
- }
- mapfile_iterator& operator -= (long off)
- {
- position(position() - off);
- return *this;
- }
-
- friend inline bool operator==(const mapfile_iterator& i, const mapfile_iterator& j)
- {
- return (i.file == j.file) && (i.node == j.node) && (i.offset == j.offset);
- }
-
- friend inline bool operator!=(const mapfile_iterator& i, const mapfile_iterator& j)
- {
- return !(i == j);
- }
-
- friend inline bool operator<(const mapfile_iterator& i, const mapfile_iterator& j)
- {
- return i.position() < j.position();
- }
- friend inline bool operator>(const mapfile_iterator& i, const mapfile_iterator& j)
- {
- return i.position() > j.position();
- }
- friend inline bool operator<=(const mapfile_iterator& i, const mapfile_iterator& j)
- {
- return i.position() <= j.position();
- }
- friend inline bool operator>=(const mapfile_iterator& i, const mapfile_iterator& j)
- {
- return i.position() >= j.position();
- }
-
- friend mapfile_iterator operator + (const mapfile_iterator& i, long off);
- friend mapfile_iterator operator + (long off, const mapfile_iterator& i)
- {
- mapfile_iterator tmp(i);
- return tmp += off;
- }
- friend mapfile_iterator operator - (const mapfile_iterator& i, long off);
- friend inline long operator - (const mapfile_iterator& i, const mapfile_iterator& j)
- {
- return i.position() - j.position();
- }
-};
-
-#endif
-
-// _fi_sep determines the directory separator, either '\\' or '/'
-BOOST_REGEX_DECL extern const char* _fi_sep;
-
-struct file_iterator_ref
-{
- _fi_find_handle hf;
- _fi_find_data _data;
- long count;
-};
-
-
-class BOOST_REGEX_DECL file_iterator
-{
- char* _root;
- char* _path;
- char* ptr;
- file_iterator_ref* ref;
-
-public:
- typedef std::ptrdiff_t difference_type;
- typedef const char* value_type;
- typedef const char** pointer;
- typedef const char*& reference;
- typedef std::input_iterator_tag iterator_category;
-
- file_iterator();
- file_iterator(const char* wild);
- ~file_iterator();
- file_iterator(const file_iterator&);
- file_iterator& operator=(const file_iterator&);
- const char* root()const { return _root; }
- const char* path()const { return _path; }
- const char* name()const { return ptr; }
- _fi_find_data* data() { return &(ref->_data); }
- void next();
- file_iterator& operator++() { next(); return *this; }
- file_iterator operator++(int);
- const char* operator*() { return path(); }
-
- friend inline bool operator == (const file_iterator& f1, const file_iterator& f2)
- {
- return ((f1.ref->hf == _fi_invalid_handle) && (f2.ref->hf == _fi_invalid_handle));
- }
-
- friend inline bool operator != (const file_iterator& f1, const file_iterator& f2)
- {
- return !(f1 == f2);
- }
-
-};
-
-// dwa 9/13/00 - suppress unused parameter warning
-inline bool operator < (const file_iterator&, const file_iterator&)
-{
- return false;
-}
-
-
-class BOOST_REGEX_DECL directory_iterator
-{
- char* _root;
- char* _path;
- char* ptr;
- file_iterator_ref* ref;
-
-public:
- typedef std::ptrdiff_t difference_type;
- typedef const char* value_type;
- typedef const char** pointer;
- typedef const char*& reference;
- typedef std::input_iterator_tag iterator_category;
-
- directory_iterator();
- directory_iterator(const char* wild);
- ~directory_iterator();
- directory_iterator(const directory_iterator& other);
- directory_iterator& operator=(const directory_iterator& other);
-
- const char* root()const { return _root; }
- const char* path()const { return _path; }
- const char* name()const { return ptr; }
- _fi_find_data* data() { return &(ref->_data); }
- void next();
- directory_iterator& operator++() { next(); return *this; }
- directory_iterator operator++(int);
- const char* operator*() { return path(); }
-
- static const char* separator() { return _fi_sep; }
-
- friend inline bool operator == (const directory_iterator& f1, const directory_iterator& f2)
- {
- return ((f1.ref->hf == _fi_invalid_handle) && (f2.ref->hf == _fi_invalid_handle));
- }
-
-
- friend inline bool operator != (const directory_iterator& f1, const directory_iterator& f2)
- {
- return !(f1 == f2);
- }
-
- };
-
-inline bool operator < (const directory_iterator&, const directory_iterator&)
-{
- return false;
-}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-
-} // namespace re_detail
-using cutl_details_boost::re_detail::directory_iterator;
-using cutl_details_boost::re_detail::file_iterator;
-using cutl_details_boost::re_detail::mapfile;
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_NO_FILEITER
-#endif // BOOST_RE_FILEITER_HPP
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/instances.hpp b/libcutl/cutl/details/boost/regex/v4/instances.hpp
deleted file mode 100644
index 831d6ad..0000000
--- a/libcutl/cutl/details/boost/regex/v4/instances.hpp
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE instances.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Defines those template instances that are placed in the
- * library rather than in the users object files.
- */
-
-//
-// note no include guard, we may include this multiple times:
-//
-#ifndef BOOST_REGEX_NO_EXTERNAL_TEMPLATES
-
-namespace cutl_details_boost{
-
-//
-// this header can be included multiple times, each time with
-// a different character type, BOOST_REGEX_CHAR_T must be defined
-// first:
-//
-#ifndef BOOST_REGEX_CHAR_T
-# error "BOOST_REGEX_CHAR_T not defined"
-#endif
-
-#ifndef BOOST_REGEX_TRAITS_T
-# define BOOST_REGEX_TRAITS_T , cutl_details_boost::regex_traits<BOOST_REGEX_CHAR_T >
-#endif
-
-//
-// what follows is compiler specific:
-//
-
-#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-# ifndef BOOST_REGEX_INSTANTIATE
-# pragma option push -Jgx
-# endif
-
-template class BOOST_REGEX_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >;
-template class BOOST_REGEX_DECL match_results< const BOOST_REGEX_CHAR_T* >;
-#ifndef BOOST_NO_STD_ALLOCATOR
-template class BOOST_REGEX_DECL ::cutl_details_boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >;
-#endif
-
-# ifndef BOOST_REGEX_INSTANTIATE
-# pragma option pop
-# endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#elif defined(BOOST_MSVC) || defined(__ICL)
-
-# ifndef BOOST_REGEX_INSTANTIATE
-# ifdef __GNUC__
-# define template __extension__ extern template
-# else
-# if BOOST_MSVC > 1310
-# define BOOST_REGEX_TEMPLATE_DECL
-# endif
-# define template extern template
-# endif
-# endif
-
-#ifndef BOOST_REGEX_TEMPLATE_DECL
-# define BOOST_REGEX_TEMPLATE_DECL BOOST_REGEX_DECL
-#endif
-
-# ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable : 4251 4231)
-# if BOOST_MSVC < 1600
-# pragma warning(disable : 4660)
-# endif
-# endif
-
-template class BOOST_REGEX_TEMPLATE_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >;
-
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-template class BOOST_REGEX_TEMPLATE_DECL match_results< const BOOST_REGEX_CHAR_T* >;
-#endif
-#ifndef BOOST_NO_STD_ALLOCATOR
-template class BOOST_REGEX_TEMPLATE_DECL ::cutl_details_boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >;
-#endif
-#if !(defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB <= 1))\
- && !(defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 800))\
- && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))\
- && !defined(BOOST_REGEX_ICU_INSTANCES)
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-template class BOOST_REGEX_TEMPLATE_DECL match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >;
-#endif
-#ifndef BOOST_NO_STD_ALLOCATOR
-template class BOOST_REGEX_TEMPLATE_DECL ::cutl_details_boost::re_detail::perl_matcher< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, cutl_details_boost::regex_traits<BOOST_REGEX_CHAR_T > >;
-#endif
-#endif
-
-
-# ifdef BOOST_MSVC
-# pragma warning(pop)
-# endif
-
-# ifdef template
-# undef template
-# endif
-
-#undef BOOST_REGEX_TEMPLATE_DECL
-
-#elif (defined(__GNUC__) && (__GNUC__ >= 3)) || !defined(BOOST_NO_CXX11_EXTERN_TEMPLATE)
-
-# ifndef BOOST_REGEX_INSTANTIATE
-# ifdef __GNUC__
-# define template __extension__ extern template
-# else
-# define template extern template
-# endif
-# endif
-
-#if !defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_REGEX_ICU_INSTANCES)
-namespace re_detail{
-template BOOST_REGEX_DECL
-std::locale cpp_regex_traits_base<BOOST_REGEX_CHAR_T>::imbue(const std::locale& l);
-
-template BOOST_REGEX_DECL
-cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type
- cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::transform_primary(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
-template BOOST_REGEX_DECL
-cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type
- cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::transform(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
-template BOOST_REGEX_DECL
-cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type
- cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::lookup_collatename(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
-template BOOST_REGEX_DECL
-void cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::init();
-template BOOST_REGEX_DECL
-cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::char_class_type
- cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::lookup_classname_imp(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
-#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
-template BOOST_REGEX_DECL
-bool cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::isctype(const BOOST_REGEX_CHAR_T c, char_class_type mask) const;
-#endif
-} // namespace
-template BOOST_REGEX_DECL
-int cpp_regex_traits<BOOST_REGEX_CHAR_T>::toi(const BOOST_REGEX_CHAR_T*& first, const BOOST_REGEX_CHAR_T* last, int radix)const;
-template BOOST_REGEX_DECL
-std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::catalog_name(const std::string& name);
-template BOOST_REGEX_DECL
-std::string& cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_catalog_name_inst();
-template BOOST_REGEX_DECL
-std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_catalog_name();
-#ifdef BOOST_HAS_THREADS
-template BOOST_REGEX_DECL
-static_mutex& cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_mutex_inst();
-#endif
-#endif
-
-template BOOST_REGEX_DECL basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >&
- basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::do_assign(
- const BOOST_REGEX_CHAR_T* p1,
- const BOOST_REGEX_CHAR_T* p2,
- flag_type f);
-template BOOST_REGEX_DECL basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::locale_type BOOST_REGEX_CALL
- basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::imbue(locale_type l);
-
-template BOOST_REGEX_DECL void BOOST_REGEX_CALL
- match_results<const BOOST_REGEX_CHAR_T*>::maybe_assign(
- const match_results<const BOOST_REGEX_CHAR_T*>& m);
-
-namespace re_detail{
-template BOOST_REGEX_DECL void perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::construct_init(
- const basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >& e, match_flag_type f);
-template BOOST_REGEX_DECL bool perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::match();
-template BOOST_REGEX_DECL bool perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::find();
-} // namespace
-
-#if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) \
- && !defined(BOOST_REGEX_ICU_INSTANCES)\
- && !defined(__SGI_STL_PORT)\
- && !defined(_STLPORT_VERSION)
-// std:basic_string<>::const_iterator instances as well:
-template BOOST_REGEX_DECL void BOOST_REGEX_CALL
- match_results<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>::maybe_assign(
- const match_results<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>& m);
-
-namespace re_detail{
-template BOOST_REGEX_DECL void perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, cutl_details_boost::regex_traits<BOOST_REGEX_CHAR_T > >::construct_init(
- const basic_regex<BOOST_REGEX_CHAR_T>& e, match_flag_type f);
-template BOOST_REGEX_DECL bool perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, cutl_details_boost::regex_traits<BOOST_REGEX_CHAR_T > >::match();
-template BOOST_REGEX_DECL bool perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, cutl_details_boost::regex_traits<BOOST_REGEX_CHAR_T > >::find();
-} // namespace
-#endif
-
-# ifdef template
-# undef template
-# endif
-
-
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_NO_EXTERNAL_TEMPLATES
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/iterator_category.hpp b/libcutl/cutl/details/boost/regex/v4/iterator_category.hpp
deleted file mode 100644
index 18b1291..0000000
--- a/libcutl/cutl/details/boost/regex/v4/iterator_category.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *
- * Copyright (c) 2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_match.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Iterator traits for selecting an iterator type as
- * an integral constant expression.
- */
-
-
-#ifndef BOOST_REGEX_ITERATOR_CATEGORY_HPP
-#define BOOST_REGEX_ITERATOR_CATEGORY_HPP
-
-#include <iterator>
-#include <cutl/details/boost/type_traits/is_convertible.hpp>
-#include <cutl/details/boost/type_traits/is_pointer.hpp>
-
-namespace cutl_details_boost{
-namespace detail{
-
-template <class I>
-struct is_random_imp
-{
-#ifndef BOOST_NO_STD_ITERATOR_TRAITS
-private:
- typedef typename std::iterator_traits<I>::iterator_category cat;
-public:
- BOOST_STATIC_CONSTANT(bool, value = (::cutl_details_boost::is_convertible<cat*, std::random_access_iterator_tag*>::value));
-#else
- BOOST_STATIC_CONSTANT(bool, value = false);
-#endif
-};
-
-template <class I>
-struct is_random_pointer_imp
-{
- BOOST_STATIC_CONSTANT(bool, value = true);
-};
-
-template <bool is_pointer_type>
-struct is_random_imp_selector
-{
- template <class I>
- struct rebind
- {
- typedef is_random_imp<I> type;
- };
-};
-
-template <>
-struct is_random_imp_selector<true>
-{
- template <class I>
- struct rebind
- {
- typedef is_random_pointer_imp<I> type;
- };
-};
-
-}
-
-template <class I>
-struct is_random_access_iterator
-{
-private:
- typedef detail::is_random_imp_selector< ::cutl_details_boost::is_pointer<I>::value> selector;
- typedef typename selector::template rebind<I> bound_type;
- typedef typename bound_type::type answer;
-public:
- BOOST_STATIC_CONSTANT(bool, value = answer::value);
-};
-
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-template <class I>
-const bool is_random_access_iterator<I>::value;
-#endif
-
-}
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/v4/iterator_traits.hpp b/libcutl/cutl/details/boost/regex/v4/iterator_traits.hpp
deleted file mode 100644
index 146db8a..0000000
--- a/libcutl/cutl/details/boost/regex/v4/iterator_traits.hpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE iterator_traits.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares iterator traits workarounds.
- */
-
-#ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
-#define BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-namespace re_detail{
-
-#if defined(BOOST_NO_STD_ITERATOR_TRAITS) || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-template <class T>
-struct regex_iterator_traits
-{
- typedef typename T::iterator_category iterator_category;
- typedef typename T::value_type value_type;
-#if !defined(BOOST_NO_STD_ITERATOR)
- typedef typename T::difference_type difference_type;
- typedef typename T::pointer pointer;
- typedef typename T::reference reference;
-#else
- typedef std::ptrdiff_t difference_type;
- typedef value_type* pointer;
- typedef value_type& reference;
-#endif
-};
-
-template <class T>
-struct pointer_iterator_traits
-{
- typedef std::ptrdiff_t difference_type;
- typedef T value_type;
- typedef T* pointer;
- typedef T& reference;
- typedef std::random_access_iterator_tag iterator_category;
-};
-template <class T>
-struct const_pointer_iterator_traits
-{
- typedef std::ptrdiff_t difference_type;
- typedef T value_type;
- typedef const T* pointer;
- typedef const T& reference;
- typedef std::random_access_iterator_tag iterator_category;
-};
-
-template<>
-struct regex_iterator_traits<char*> : pointer_iterator_traits<char>{};
-template<>
-struct regex_iterator_traits<const char*> : const_pointer_iterator_traits<char>{};
-template<>
-struct regex_iterator_traits<wchar_t*> : pointer_iterator_traits<wchar_t>{};
-template<>
-struct regex_iterator_traits<const wchar_t*> : const_pointer_iterator_traits<wchar_t>{};
-//
-// the follwoing are needed for ICU support:
-//
-template<>
-struct regex_iterator_traits<unsigned char*> : pointer_iterator_traits<char>{};
-template<>
-struct regex_iterator_traits<const unsigned char*> : const_pointer_iterator_traits<char>{};
-template<>
-struct regex_iterator_traits<int*> : pointer_iterator_traits<int>{};
-template<>
-struct regex_iterator_traits<const int*> : const_pointer_iterator_traits<int>{};
-
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-template<>
-struct regex_iterator_traits<unsigned short*> : pointer_iterator_traits<unsigned short>{};
-template<>
-struct regex_iterator_traits<const unsigned short*> : const_pointer_iterator_traits<unsigned short>{};
-#endif
-
-#if defined(__SGI_STL_PORT) && defined(__STL_DEBUG)
-template<>
-struct regex_iterator_traits<std::string::iterator> : pointer_iterator_traits<char>{};
-template<>
-struct regex_iterator_traits<std::string::const_iterator> : const_pointer_iterator_traits<char>{};
-#ifndef BOOST_NO_STD_WSTRING
-template<>
-struct regex_iterator_traits<std::wstring::iterator> : pointer_iterator_traits<wchar_t>{};
-template<>
-struct regex_iterator_traits<std::wstring::const_iterator> : const_pointer_iterator_traits<wchar_t>{};
-#endif // BOOST_NO_WSTRING
-#endif // stport
-
-#else
-
-template <class T>
-struct regex_iterator_traits : public std::iterator_traits<T> {};
-
-#endif
-
-} // namespace re_detail
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/v4/match_flags.hpp b/libcutl/cutl/details/boost/regex/v4/match_flags.hpp
deleted file mode 100644
index ac6fe21..0000000
--- a/libcutl/cutl/details/boost/regex/v4/match_flags.hpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE match_flags.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares match_flags type.
- */
-
-#ifndef BOOST_REGEX_V4_MATCH_FLAGS
-#define BOOST_REGEX_V4_MATCH_FLAGS
-
-#ifdef __cplusplus
-# include <cutl/details/boost/cstdint.hpp>
-#endif
-
-#ifdef __cplusplus
-namespace cutl_details_boost{
- namespace regex_constants{
-#endif
-
-typedef enum _match_flags
-{
- match_default = 0,
- match_not_bol = 1, /* first is not start of line */
- match_not_eol = match_not_bol << 1, /* last is not end of line */
- match_not_bob = match_not_eol << 1, /* first is not start of buffer */
- match_not_eob = match_not_bob << 1, /* last is not end of buffer */
- match_not_bow = match_not_eob << 1, /* first is not start of word */
- match_not_eow = match_not_bow << 1, /* last is not end of word */
- match_not_dot_newline = match_not_eow << 1, /* \n is not matched by '.' */
- match_not_dot_null = match_not_dot_newline << 1, /* '\0' is not matched by '.' */
- match_prev_avail = match_not_dot_null << 1, /* *--first is a valid expression */
- match_init = match_prev_avail << 1, /* internal use */
- match_any = match_init << 1, /* don't care what we match */
- match_not_null = match_any << 1, /* string can't be null */
- match_continuous = match_not_null << 1, /* each grep match must continue from */
- /* uninterupted from the previous one */
- match_partial = match_continuous << 1, /* find partial matches */
-
- match_stop = match_partial << 1, /* stop after first match (grep) V3 only */
- match_not_initial_null = match_stop, /* don't match initial null, V4 only */
- match_all = match_stop << 1, /* must find the whole of input even if match_any is set */
- match_perl = match_all << 1, /* Use perl matching rules */
- match_posix = match_perl << 1, /* Use POSIX matching rules */
- match_nosubs = match_posix << 1, /* don't trap marked subs */
- match_extra = match_nosubs << 1, /* include full capture information for repeated captures */
- match_single_line = match_extra << 1, /* treat text as single line and ignor any \n's when matching ^ and $. */
- match_unused1 = match_single_line << 1, /* unused */
- match_unused2 = match_unused1 << 1, /* unused */
- match_unused3 = match_unused2 << 1, /* unused */
- match_max = match_unused3,
-
- format_perl = 0, /* perl style replacement */
- format_default = 0, /* ditto. */
- format_sed = match_max << 1, /* sed style replacement. */
- format_all = format_sed << 1, /* enable all extentions to sytax. */
- format_no_copy = format_all << 1, /* don't copy non-matching segments. */
- format_first_only = format_no_copy << 1, /* Only replace first occurance. */
- format_is_if = format_first_only << 1, /* internal use only. */
- format_literal = format_is_if << 1 /* treat string as a literal */
-
-} match_flags;
-
-#if (defined(_MSC_VER) && (_MSC_VER < 1300)) || defined(__BORLANDC__)
-typedef unsigned long match_flag_type;
-#else
-typedef match_flags match_flag_type;
-
-
-#ifdef __cplusplus
-inline match_flags operator&(match_flags m1, match_flags m2)
-{ return static_cast<match_flags>(static_cast<cutl_details_boost::int32_t>(m1) & static_cast<cutl_details_boost::int32_t>(m2)); }
-inline match_flags operator|(match_flags m1, match_flags m2)
-{ return static_cast<match_flags>(static_cast<cutl_details_boost::int32_t>(m1) | static_cast<cutl_details_boost::int32_t>(m2)); }
-inline match_flags operator^(match_flags m1, match_flags m2)
-{ return static_cast<match_flags>(static_cast<cutl_details_boost::int32_t>(m1) ^ static_cast<cutl_details_boost::int32_t>(m2)); }
-inline match_flags operator~(match_flags m1)
-{ return static_cast<match_flags>(~static_cast<cutl_details_boost::int32_t>(m1)); }
-inline match_flags& operator&=(match_flags& m1, match_flags m2)
-{ m1 = m1&m2; return m1; }
-inline match_flags& operator|=(match_flags& m1, match_flags m2)
-{ m1 = m1|m2; return m1; }
-inline match_flags& operator^=(match_flags& m1, match_flags m2)
-{ m1 = m1^m2; return m1; }
-#endif
-#endif
-
-#ifdef __cplusplus
-} /* namespace regex_constants */
-/*
- * import names into boost for backwards compatiblity:
- */
-using regex_constants::match_flag_type;
-using regex_constants::match_default;
-using regex_constants::match_not_bol;
-using regex_constants::match_not_eol;
-using regex_constants::match_not_bob;
-using regex_constants::match_not_eob;
-using regex_constants::match_not_bow;
-using regex_constants::match_not_eow;
-using regex_constants::match_not_dot_newline;
-using regex_constants::match_not_dot_null;
-using regex_constants::match_prev_avail;
-/* using regex_constants::match_init; */
-using regex_constants::match_any;
-using regex_constants::match_not_null;
-using regex_constants::match_continuous;
-using regex_constants::match_partial;
-/*using regex_constants::match_stop; */
-using regex_constants::match_all;
-using regex_constants::match_perl;
-using regex_constants::match_posix;
-using regex_constants::match_nosubs;
-using regex_constants::match_extra;
-using regex_constants::match_single_line;
-/*using regex_constants::match_max; */
-using regex_constants::format_all;
-using regex_constants::format_sed;
-using regex_constants::format_perl;
-using regex_constants::format_default;
-using regex_constants::format_no_copy;
-using regex_constants::format_first_only;
-/*using regex_constants::format_is_if;*/
-
-} /* namespace cutl_details_boost */
-#endif /* __cplusplus */
-#endif /* include guard */
-
diff --git a/libcutl/cutl/details/boost/regex/v4/match_results.hpp b/libcutl/cutl/details/boost/regex/v4/match_results.hpp
deleted file mode 100644
index 8046cfd..0000000
--- a/libcutl/cutl/details/boost/regex/v4/match_results.hpp
+++ /dev/null
@@ -1,702 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2009
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE match_results.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares template class match_results.
- */
-
-#ifndef BOOST_REGEX_V4_MATCH_RESULTS_HPP
-#define BOOST_REGEX_V4_MATCH_RESULTS_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable : 4251 4231)
-# if BOOST_MSVC < 1600
-# pragma warning(disable : 4660)
-# endif
-#endif
-
-namespace re_detail{
-
-class named_subexpressions;
-
-}
-
-template <class BidiIterator, class Allocator>
-class match_results
-{
-private:
-#ifndef BOOST_NO_STD_ALLOCATOR
- typedef std::vector<sub_match<BidiIterator>, Allocator> vector_type;
-#else
- typedef std::vector<sub_match<BidiIterator> > vector_type;
-#endif
-public:
- typedef sub_match<BidiIterator> value_type;
-#if !defined(BOOST_NO_STD_ALLOCATOR) && !(defined(BOOST_MSVC) && defined(_STLPORT_VERSION))
- typedef typename Allocator::const_reference const_reference;
-#else
- typedef const value_type& const_reference;
-#endif
- typedef const_reference reference;
- typedef typename vector_type::const_iterator const_iterator;
- typedef const_iterator iterator;
- typedef typename re_detail::regex_iterator_traits<
- BidiIterator>::difference_type difference_type;
- typedef typename Allocator::size_type size_type;
- typedef Allocator allocator_type;
- typedef typename re_detail::regex_iterator_traits<
- BidiIterator>::value_type char_type;
- typedef std::basic_string<char_type> string_type;
- typedef re_detail::named_subexpressions named_sub_type;
-
- // construct/copy/destroy:
- explicit match_results(const Allocator& a = Allocator())
-#ifndef BOOST_NO_STD_ALLOCATOR
- : m_subs(a), m_base(), m_last_closed_paren(0), m_is_singular(true) {}
-#else
- : m_subs(), m_base(), m_last_closed_paren(0), m_is_singular(true) { (void)a; }
-#endif
- match_results(const match_results& m)
- : m_subs(m.m_subs), m_named_subs(m.m_named_subs), m_last_closed_paren(m.m_last_closed_paren), m_is_singular(m.m_is_singular)
- {
- if(!m_is_singular)
- {
- m_base = m.m_base;
- m_null = m.m_null;
- }
- }
- match_results& operator=(const match_results& m)
- {
- m_subs = m.m_subs;
- m_named_subs = m.m_named_subs;
- m_last_closed_paren = m.m_last_closed_paren;
- m_is_singular = m.m_is_singular;
- if(!m_is_singular)
- {
- m_base = m.m_base;
- m_null = m.m_null;
- }
- return *this;
- }
- ~match_results(){}
-
- // size:
- size_type size() const
- { return empty() ? 0 : m_subs.size() - 2; }
- size_type max_size() const
- { return m_subs.max_size(); }
- bool empty() const
- { return m_subs.size() < 2; }
- // element access:
- difference_type length(int sub = 0) const
- {
- if(m_is_singular)
- raise_logic_error();
- sub += 2;
- if((sub < (int)m_subs.size()) && (sub > 0))
- return m_subs[sub].length();
- return 0;
- }
- difference_type length(const char_type* sub) const
- {
- if(m_is_singular)
- raise_logic_error();
- const char_type* sub_end = sub;
- while(*sub_end) ++sub_end;
- return length(named_subexpression_index(sub, sub_end));
- }
- template <class charT>
- difference_type length(const charT* sub) const
- {
- if(m_is_singular)
- raise_logic_error();
- const charT* sub_end = sub;
- while(*sub_end) ++sub_end;
- return length(named_subexpression_index(sub, sub_end));
- }
- template <class charT, class Traits, class A>
- difference_type length(const std::basic_string<charT, Traits, A>& sub) const
- {
- return length(sub.c_str());
- }
- difference_type position(size_type sub = 0) const
- {
- if(m_is_singular)
- raise_logic_error();
- sub += 2;
- if(sub < m_subs.size())
- {
- const sub_match<BidiIterator>& s = m_subs[sub];
- if(s.matched || (sub == 2))
- {
- return ::cutl_details_boost::re_detail::distance((BidiIterator)(m_base), (BidiIterator)(s.first));
- }
- }
- return ~static_cast<difference_type>(0);
- }
- difference_type position(const char_type* sub) const
- {
- const char_type* sub_end = sub;
- while(*sub_end) ++sub_end;
- return position(named_subexpression_index(sub, sub_end));
- }
- template <class charT>
- difference_type position(const charT* sub) const
- {
- const charT* sub_end = sub;
- while(*sub_end) ++sub_end;
- return position(named_subexpression_index(sub, sub_end));
- }
- template <class charT, class Traits, class A>
- difference_type position(const std::basic_string<charT, Traits, A>& sub) const
- {
- return position(sub.c_str());
- }
- string_type str(int sub = 0) const
- {
- if(m_is_singular)
- raise_logic_error();
- sub += 2;
- string_type result;
- if(sub < (int)m_subs.size() && (sub > 0))
- {
- const sub_match<BidiIterator>& s = m_subs[sub];
- if(s.matched)
- {
- result = s.str();
- }
- }
- return result;
- }
- string_type str(const char_type* sub) const
- {
- return (*this)[sub].str();
- }
- template <class Traits, class A>
- string_type str(const std::basic_string<char_type, Traits, A>& sub) const
- {
- return (*this)[sub].str();
- }
- template <class charT>
- string_type str(const charT* sub) const
- {
- return (*this)[sub].str();
- }
- template <class charT, class Traits, class A>
- string_type str(const std::basic_string<charT, Traits, A>& sub) const
- {
- return (*this)[sub].str();
- }
- const_reference operator[](int sub) const
- {
- if(m_is_singular && m_subs.empty())
- raise_logic_error();
- sub += 2;
- if(sub < (int)m_subs.size() && (sub >= 0))
- {
- return m_subs[sub];
- }
- return m_null;
- }
- //
- // Named sub-expressions:
- //
- const_reference named_subexpression(const char_type* i, const char_type* j) const
- {
- //
- // Scan for the leftmost *matched* subexpression with the specified named:
- //
- if(m_is_singular)
- raise_logic_error();
- re_detail::named_subexpressions::range_type r = m_named_subs->equal_range(i, j);
- while((r.first != r.second) && ((*this)[r.first->index].matched == false))
- ++r.first;
- return r.first != r.second ? (*this)[r.first->index] : m_null;
- }
- template <class charT>
- const_reference named_subexpression(const charT* i, const charT* j) const
- {
- BOOST_STATIC_ASSERT(sizeof(charT) <= sizeof(char_type));
- if(i == j)
- return m_null;
- std::vector<char_type> s;
- while(i != j)
- s.insert(s.end(), *i++);
- return named_subexpression(&*s.begin(), &*s.begin() + s.size());
- }
- int named_subexpression_index(const char_type* i, const char_type* j) const
- {
- //
- // Scan for the leftmost *matched* subexpression with the specified named.
- // If none found then return the leftmost expression with that name,
- // otherwise an invalid index:
- //
- if(m_is_singular)
- raise_logic_error();
- re_detail::named_subexpressions::range_type s, r;
- s = r = m_named_subs->equal_range(i, j);
- while((r.first != r.second) && ((*this)[r.first->index].matched == false))
- ++r.first;
- if(r.first == r.second)
- r = s;
- return r.first != r.second ? r.first->index : -20;
- }
- template <class charT>
- int named_subexpression_index(const charT* i, const charT* j) const
- {
- BOOST_STATIC_ASSERT(sizeof(charT) <= sizeof(char_type));
- if(i == j)
- return -20;
- std::vector<char_type> s;
- while(i != j)
- s.insert(s.end(), *i++);
- return named_subexpression_index(&*s.begin(), &*s.begin() + s.size());
- }
- template <class Traits, class A>
- const_reference operator[](const std::basic_string<char_type, Traits, A>& s) const
- {
- return named_subexpression(s.c_str(), s.c_str() + s.size());
- }
- const_reference operator[](const char_type* p) const
- {
- const char_type* e = p;
- while(*e) ++e;
- return named_subexpression(p, e);
- }
-
- template <class charT>
- const_reference operator[](const charT* p) const
- {
- BOOST_STATIC_ASSERT(sizeof(charT) <= sizeof(char_type));
- if(*p == 0)
- return m_null;
- std::vector<char_type> s;
- while(*p)
- s.insert(s.end(), *p++);
- return named_subexpression(&*s.begin(), &*s.begin() + s.size());
- }
- template <class charT, class Traits, class A>
- const_reference operator[](const std::basic_string<charT, Traits, A>& ns) const
- {
- BOOST_STATIC_ASSERT(sizeof(charT) <= sizeof(char_type));
- if(ns.empty())
- return m_null;
- std::vector<char_type> s;
- for(unsigned i = 0; i < ns.size(); ++i)
- s.insert(s.end(), ns[i]);
- return named_subexpression(&*s.begin(), &*s.begin() + s.size());
- }
-
- const_reference prefix() const
- {
- if(m_is_singular)
- raise_logic_error();
- return (*this)[-1];
- }
-
- const_reference suffix() const
- {
- if(m_is_singular)
- raise_logic_error();
- return (*this)[-2];
- }
- const_iterator begin() const
- {
- return (m_subs.size() > 2) ? (m_subs.begin() + 2) : m_subs.end();
- }
- const_iterator end() const
- {
- return m_subs.end();
- }
- // format:
- template <class OutputIterator, class Functor>
- OutputIterator format(OutputIterator out,
- Functor fmt,
- match_flag_type flags = format_default) const
- {
- if(m_is_singular)
- raise_logic_error();
- typedef typename re_detail::compute_functor_type<Functor, match_results<BidiIterator, Allocator>, OutputIterator>::type F;
- F func(fmt);
- return func(*this, out, flags);
- }
- template <class Functor>
- string_type format(Functor fmt, match_flag_type flags = format_default) const
- {
- if(m_is_singular)
- raise_logic_error();
- std::basic_string<char_type> result;
- re_detail::string_out_iterator<std::basic_string<char_type> > i(result);
-
- typedef typename re_detail::compute_functor_type<Functor, match_results<BidiIterator, Allocator>, re_detail::string_out_iterator<std::basic_string<char_type> > >::type F;
- F func(fmt);
-
- func(*this, i, flags);
- return result;
- }
- // format with locale:
- template <class OutputIterator, class Functor, class RegexT>
- OutputIterator format(OutputIterator out,
- Functor fmt,
- match_flag_type flags,
- const RegexT& re) const
- {
- if(m_is_singular)
- raise_logic_error();
- typedef ::cutl_details_boost::regex_traits_wrapper<typename RegexT::traits_type> traits_type;
- typedef typename re_detail::compute_functor_type<Functor, match_results<BidiIterator, Allocator>, OutputIterator, traits_type>::type F;
- F func(fmt);
- return func(*this, out, flags, re.get_traits());
- }
- template <class RegexT, class Functor>
- string_type format(Functor fmt,
- match_flag_type flags,
- const RegexT& re) const
- {
- if(m_is_singular)
- raise_logic_error();
- typedef ::cutl_details_boost::regex_traits_wrapper<typename RegexT::traits_type> traits_type;
- std::basic_string<char_type> result;
- re_detail::string_out_iterator<std::basic_string<char_type> > i(result);
-
- typedef typename re_detail::compute_functor_type<Functor, match_results<BidiIterator, Allocator>, re_detail::string_out_iterator<std::basic_string<char_type> >, traits_type >::type F;
- F func(fmt);
-
- func(*this, i, flags, re.get_traits());
- return result;
- }
-
- const_reference get_last_closed_paren()const
- {
- if(m_is_singular)
- raise_logic_error();
- return m_last_closed_paren == 0 ? m_null : (*this)[m_last_closed_paren];
- }
-
- allocator_type get_allocator() const
- {
-#ifndef BOOST_NO_STD_ALLOCATOR
- return m_subs.get_allocator();
-#else
- return allocator_type();
-#endif
- }
- void swap(match_results& that)
- {
- std::swap(m_subs, that.m_subs);
- std::swap(m_named_subs, that.m_named_subs);
- std::swap(m_last_closed_paren, that.m_last_closed_paren);
- if(m_is_singular)
- {
- if(!that.m_is_singular)
- {
- m_base = that.m_base;
- m_null = that.m_null;
- }
- }
- else if(that.m_is_singular)
- {
- that.m_base = m_base;
- that.m_null = m_null;
- }
- else
- {
- std::swap(m_base, that.m_base);
- std::swap(m_null, that.m_null);
- }
- std::swap(m_is_singular, that.m_is_singular);
- }
- bool operator==(const match_results& that)const
- {
- if(m_is_singular)
- {
- return that.m_is_singular;
- }
- else if(that.m_is_singular)
- {
- return false;
- }
- return (m_subs == that.m_subs) && (m_base == that.m_base) && (m_last_closed_paren == that.m_last_closed_paren);
- }
- bool operator!=(const match_results& that)const
- { return !(*this == that); }
-
-#ifdef BOOST_REGEX_MATCH_EXTRA
- typedef typename sub_match<BidiIterator>::capture_sequence_type capture_sequence_type;
-
- const capture_sequence_type& captures(int i)const
- {
- if(m_is_singular)
- raise_logic_error();
- return (*this)[i].captures();
- }
-#endif
-
- //
- // private access functions:
- void BOOST_REGEX_CALL set_second(BidiIterator i)
- {
- BOOST_ASSERT(m_subs.size() > 2);
- m_subs[2].second = i;
- m_subs[2].matched = true;
- m_subs[0].first = i;
- m_subs[0].matched = (m_subs[0].first != m_subs[0].second);
- m_null.first = i;
- m_null.second = i;
- m_null.matched = false;
- m_is_singular = false;
- }
-
- void BOOST_REGEX_CALL set_second(BidiIterator i, size_type pos, bool m = true, bool escape_k = false)
- {
- if(pos)
- m_last_closed_paren = static_cast<int>(pos);
- pos += 2;
- BOOST_ASSERT(m_subs.size() > pos);
- m_subs[pos].second = i;
- m_subs[pos].matched = m;
- if((pos == 2) && !escape_k)
- {
- m_subs[0].first = i;
- m_subs[0].matched = (m_subs[0].first != m_subs[0].second);
- m_null.first = i;
- m_null.second = i;
- m_null.matched = false;
- m_is_singular = false;
- }
- }
- void BOOST_REGEX_CALL set_size(size_type n, BidiIterator i, BidiIterator j)
- {
- value_type v(j);
- size_type len = m_subs.size();
- if(len > n + 2)
- {
- m_subs.erase(m_subs.begin()+n+2, m_subs.end());
- std::fill(m_subs.begin(), m_subs.end(), v);
- }
- else
- {
- std::fill(m_subs.begin(), m_subs.end(), v);
- if(n+2 != len)
- m_subs.insert(m_subs.end(), n+2-len, v);
- }
- m_subs[1].first = i;
- m_last_closed_paren = 0;
- }
- void BOOST_REGEX_CALL set_base(BidiIterator pos)
- {
- m_base = pos;
- }
- BidiIterator base()const
- {
- return m_base;
- }
- void BOOST_REGEX_CALL set_first(BidiIterator i)
- {
- BOOST_ASSERT(m_subs.size() > 2);
- // set up prefix:
- m_subs[1].second = i;
- m_subs[1].matched = (m_subs[1].first != i);
- // set up $0:
- m_subs[2].first = i;
- // zero out everything else:
- for(size_type n = 3; n < m_subs.size(); ++n)
- {
- m_subs[n].first = m_subs[n].second = m_subs[0].second;
- m_subs[n].matched = false;
- }
- }
- void BOOST_REGEX_CALL set_first(BidiIterator i, size_type pos, bool escape_k = false)
- {
- BOOST_ASSERT(pos+2 < m_subs.size());
- if(pos || escape_k)
- {
- m_subs[pos+2].first = i;
- if(escape_k)
- {
- m_subs[1].second = i;
- m_subs[1].matched = (m_subs[1].first != m_subs[1].second);
- }
- }
- else
- set_first(i);
- }
- void BOOST_REGEX_CALL maybe_assign(const match_results<BidiIterator, Allocator>& m);
-
- void BOOST_REGEX_CALL set_named_subs(cutl_details_boost::shared_ptr<named_sub_type> subs)
- {
- m_named_subs = subs;
- }
-
-private:
- //
- // Error handler called when an uninitialized match_results is accessed:
- //
- static void raise_logic_error()
- {
- std::logic_error e("Attempt to access an uninitialzed cutl_details_boost::match_results<> class.");
- cutl_details_boost::throw_exception(e);
- }
-
-
- vector_type m_subs; // subexpressions
- BidiIterator m_base; // where the search started from
- sub_match<BidiIterator> m_null; // a null match
- cutl_details_boost::shared_ptr<named_sub_type> m_named_subs; // Shared copy of named subs in the regex object
- int m_last_closed_paren; // Last ) to be seen - used for formatting
- bool m_is_singular; // True if our stored iterators are singular
-};
-
-template <class BidiIterator, class Allocator>
-void BOOST_REGEX_CALL match_results<BidiIterator, Allocator>::maybe_assign(const match_results<BidiIterator, Allocator>& m)
-{
- if(m_is_singular)
- {
- *this = m;
- return;
- }
- const_iterator p1, p2;
- p1 = begin();
- p2 = m.begin();
- //
- // Distances are measured from the start of *this* match, unless this isn't
- // a valid match in which case we use the start of the whole sequence. Note that
- // no subsequent match-candidate can ever be to the left of the first match found.
- // This ensures that when we are using bidirectional iterators, that distances
- // measured are as short as possible, and therefore as efficient as possible
- // to compute. Finally note that we don't use the "matched" data member to test
- // whether a sub-expression is a valid match, because partial matches set this
- // to false for sub-expression 0.
- //
- BidiIterator l_end = this->suffix().second;
- BidiIterator l_base = (p1->first == l_end) ? this->prefix().first : (*this)[0].first;
- difference_type len1 = 0;
- difference_type len2 = 0;
- difference_type base1 = 0;
- difference_type base2 = 0;
- std::size_t i;
- for(i = 0; i < size(); ++i, ++p1, ++p2)
- {
- //
- // Leftmost takes priority over longest; handle special cases
- // where distances need not be computed first (an optimisation
- // for bidirectional iterators: ensure that we don't accidently
- // compute the length of the whole sequence, as this can be really
- // expensive).
- //
- if(p1->first == l_end)
- {
- if(p2->first != l_end)
- {
- // p2 must be better than p1, and no need to calculate
- // actual distances:
- base1 = 1;
- base2 = 0;
- break;
- }
- else
- {
- // *p1 and *p2 are either unmatched or match end-of sequence,
- // either way no need to calculate distances:
- if((p1->matched == false) && (p2->matched == true))
- break;
- if((p1->matched == true) && (p2->matched == false))
- return;
- continue;
- }
- }
- else if(p2->first == l_end)
- {
- // p1 better than p2, and no need to calculate distances:
- return;
- }
- base1 = ::cutl_details_boost::re_detail::distance(l_base, p1->first);
- base2 = ::cutl_details_boost::re_detail::distance(l_base, p2->first);
- BOOST_ASSERT(base1 >= 0);
- BOOST_ASSERT(base2 >= 0);
- if(base1 < base2) return;
- if(base2 < base1) break;
-
- len1 = ::cutl_details_boost::re_detail::distance((BidiIterator)p1->first, (BidiIterator)p1->second);
- len2 = ::cutl_details_boost::re_detail::distance((BidiIterator)p2->first, (BidiIterator)p2->second);
- BOOST_ASSERT(len1 >= 0);
- BOOST_ASSERT(len2 >= 0);
- if((len1 != len2) || ((p1->matched == false) && (p2->matched == true)))
- break;
- if((p1->matched == true) && (p2->matched == false))
- return;
- }
- if(i == size())
- return;
- if(base2 < base1)
- *this = m;
- else if((len2 > len1) || ((p1->matched == false) && (p2->matched == true)) )
- *this = m;
-}
-
-template <class BidiIterator, class Allocator>
-void swap(match_results<BidiIterator, Allocator>& a, match_results<BidiIterator, Allocator>& b)
-{
- a.swap(b);
-}
-
-#ifndef BOOST_NO_STD_LOCALE
-template <class charT, class traits, class BidiIterator, class Allocator>
-std::basic_ostream<charT, traits>&
- operator << (std::basic_ostream<charT, traits>& os,
- const match_results<BidiIterator, Allocator>& s)
-{
- return (os << s.str());
-}
-#else
-template <class BidiIterator, class Allocator>
-std::ostream& operator << (std::ostream& os,
- const match_results<BidiIterator, Allocator>& s)
-{
- return (os << s.str());
-}
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/mem_block_cache.hpp b/libcutl/cutl/details/boost/regex/v4/mem_block_cache.hpp
deleted file mode 100644
index 98e7e8a..0000000
--- a/libcutl/cutl/details/boost/regex/v4/mem_block_cache.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
- /*
- * Copyright (c) 2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE mem_block_cache.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: memory block cache used by the non-recursive matcher.
- */
-
-#ifndef BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP
-#define BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP
-
-#include <new>
-#ifdef BOOST_HAS_THREADS
-#include <cutl/details/boost/regex/pending/static_mutex.hpp>
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace cutl_details_boost{
-namespace re_detail{
-
-struct mem_block_node
-{
- mem_block_node* next;
-};
-
-struct mem_block_cache
-{
- // this member has to be statically initialsed:
- mem_block_node* next;
- unsigned cached_blocks;
-#ifdef BOOST_HAS_THREADS
- cutl_details_boost::static_mutex mut;
-#endif
-
- ~mem_block_cache()
- {
- while(next)
- {
- mem_block_node* old = next;
- next = next->next;
- ::operator delete(old);
- }
- }
- void* get()
- {
-#ifdef BOOST_HAS_THREADS
- cutl_details_boost::static_mutex::scoped_lock g(mut);
-#endif
- if(next)
- {
- mem_block_node* result = next;
- next = next->next;
- --cached_blocks;
- return result;
- }
- return ::operator new(BOOST_REGEX_BLOCKSIZE);
- }
- void put(void* p)
- {
-#ifdef BOOST_HAS_THREADS
- cutl_details_boost::static_mutex::scoped_lock g(mut);
-#endif
- if(cached_blocks >= BOOST_REGEX_MAX_CACHE_BLOCKS)
- {
- ::operator delete(p);
- }
- else
- {
- mem_block_node* old = static_cast<mem_block_node*>(p);
- old->next = next;
- next = old;
- ++cached_blocks;
- }
- }
-};
-
-extern mem_block_cache block_cache;
-
-}
-} // namespace cutl_details_boost
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/v4/perl_matcher.hpp b/libcutl/cutl/details/boost/regex/v4/perl_matcher.hpp
deleted file mode 100644
index 3ef87be..0000000
--- a/libcutl/cutl/details/boost/regex/v4/perl_matcher.hpp
+++ /dev/null
@@ -1,587 +0,0 @@
-/*
- *
- * Copyright (c) 2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
-#ifndef BOOST_REGEX_MATCHER_HPP
-#define BOOST_REGEX_MATCHER_HPP
-
-#include <cutl/details/boost/regex/v4/iterator_category.hpp>
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4800)
-#endif
-
-namespace cutl_details_boost{
-namespace re_detail{
-
-//
-// error checking API:
-//
-BOOST_REGEX_DECL void BOOST_REGEX_CALL verify_options(cutl_details_boost::regex_constants::syntax_option_type ef, match_flag_type mf);
-//
-// function can_start:
-//
-template <class charT>
-inline bool can_start(charT c, const unsigned char* map, unsigned char mask)
-{
- return ((c < static_cast<charT>(0)) ? true : ((c >= static_cast<charT>(1 << CHAR_BIT)) ? true : map[c] & mask));
-}
-inline bool can_start(char c, const unsigned char* map, unsigned char mask)
-{
- return map[(unsigned char)c] & mask;
-}
-inline bool can_start(signed char c, const unsigned char* map, unsigned char mask)
-{
- return map[(unsigned char)c] & mask;
-}
-inline bool can_start(unsigned char c, const unsigned char* map, unsigned char mask)
-{
- return map[c] & mask;
-}
-inline bool can_start(unsigned short c, const unsigned char* map, unsigned char mask)
-{
- return ((c >= (1 << CHAR_BIT)) ? true : map[c] & mask);
-}
-#if !defined(__hpux) && !defined(__WINSCW__)// WCHAR_MIN not usable in pp-directives.
-#if defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
-inline bool can_start(wchar_t c, const unsigned char* map, unsigned char mask)
-{
- return ((c >= static_cast<wchar_t>(1u << CHAR_BIT)) ? true : map[c] & mask);
-}
-#endif
-#endif
-#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
-inline bool can_start(unsigned int c, const unsigned char* map, unsigned char mask)
-{
- return (((c >= static_cast<unsigned int>(1u << CHAR_BIT)) ? true : map[c] & mask));
-}
-#endif
-
-
-//
-// Unfortunately Rogue Waves standard library appears to have a bug
-// in std::basic_string::compare that results in eroneous answers
-// in some cases (tested with Borland C++ 5.1, Rogue Wave lib version
-// 0x020101) the test case was:
-// {39135,0} < {0xff,0}
-// which succeeds when it should not.
-//
-#ifndef _RWSTD_VER
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
-template <class C, class T, class A>
-inline int string_compare(const std::basic_string<C,T,A>& s, const C* p)
-{
- if(0 == *p)
- {
- if(s.empty() || ((s.size() == 1) && (s[0] == 0)))
- return 0;
- }
- return s.compare(p);
-}
-#endif
-#else
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
-template <class C, class T, class A>
-inline int string_compare(const std::basic_string<C,T,A>& s, const C* p)
-{
- if(0 == *p)
- {
- if(s.empty() || ((s.size() == 1) && (s[0] == 0)))
- return 0;
- }
- return s.compare(p);
-}
-#endif
-inline int string_compare(const std::string& s, const char* p)
-{ return std::strcmp(s.c_str(), p); }
-# ifndef BOOST_NO_WREGEX
-inline int string_compare(const std::wstring& s, const wchar_t* p)
-{ return std::wcscmp(s.c_str(), p); }
-#endif
-#endif
-template <class Seq, class C>
-inline int string_compare(const Seq& s, const C* p)
-{
- std::size_t i = 0;
- while((i < s.size()) && (p[i] == s[i]))
- {
- ++i;
- }
- return (i == s.size()) ? -p[i] : s[i] - p[i];
-}
-# define STR_COMP(s,p) string_compare(s,p)
-
-template<class charT>
-inline const charT* re_skip_past_null(const charT* p)
-{
- while (*p != static_cast<charT>(0)) ++p;
- return ++p;
-}
-
-template <class iterator, class charT, class traits_type, class char_classT>
-iterator BOOST_REGEX_CALL re_is_set_member(iterator next,
- iterator last,
- const re_set_long<char_classT>* set_,
- const regex_data<charT, traits_type>& e, bool icase)
-{
- const charT* p = reinterpret_cast<const charT*>(set_+1);
- iterator ptr;
- unsigned int i;
- //bool icase = e.m_flags & regex_constants::icase;
-
- if(next == last) return next;
-
- typedef typename traits_type::string_type traits_string_type;
- const ::cutl_details_boost::regex_traits_wrapper<traits_type>& traits_inst = *(e.m_ptraits);
-
- // dwa 9/13/00 suppress incorrect MSVC warning - it claims this is never
- // referenced
- (void)traits_inst;
-
- // try and match a single character, could be a multi-character
- // collating element...
- for(i = 0; i < set_->csingles; ++i)
- {
- ptr = next;
- if(*p == static_cast<charT>(0))
- {
- // treat null string as special case:
- if(traits_inst.translate(*ptr, icase) != *p)
- {
- while(*p == static_cast<charT>(0))++p;
- continue;
- }
- return set_->isnot ? next : (ptr == next) ? ++next : ptr;
- }
- else
- {
- while(*p && (ptr != last))
- {
- if(traits_inst.translate(*ptr, icase) != *p)
- break;
- ++p;
- ++ptr;
- }
-
- if(*p == static_cast<charT>(0)) // if null we've matched
- return set_->isnot ? next : (ptr == next) ? ++next : ptr;
-
- p = re_skip_past_null(p); // skip null
- }
- }
-
- charT col = traits_inst.translate(*next, icase);
-
-
- if(set_->cranges || set_->cequivalents)
- {
- traits_string_type s1;
- //
- // try and match a range, NB only a single character can match
- if(set_->cranges)
- {
- if((e.m_flags & regex_constants::collate) == 0)
- s1.assign(1, col);
- else
- {
- charT a[2] = { col, charT(0), };
- s1 = traits_inst.transform(a, a + 1);
- }
- for(i = 0; i < set_->cranges; ++i)
- {
- if(STR_COMP(s1, p) >= 0)
- {
- do{ ++p; }while(*p);
- ++p;
- if(STR_COMP(s1, p) <= 0)
- return set_->isnot ? next : ++next;
- }
- else
- {
- // skip first string
- do{ ++p; }while(*p);
- ++p;
- }
- // skip second string
- do{ ++p; }while(*p);
- ++p;
- }
- }
- //
- // try and match an equivalence class, NB only a single character can match
- if(set_->cequivalents)
- {
- charT a[2] = { col, charT(0), };
- s1 = traits_inst.transform_primary(a, a +1);
- for(i = 0; i < set_->cequivalents; ++i)
- {
- if(STR_COMP(s1, p) == 0)
- return set_->isnot ? next : ++next;
- // skip string
- do{ ++p; }while(*p);
- ++p;
- }
- }
- }
- if(traits_inst.isctype(col, set_->cclasses) == true)
- return set_->isnot ? next : ++next;
- if((set_->cnclasses != 0) && (traits_inst.isctype(col, set_->cnclasses) == false))
- return set_->isnot ? next : ++next;
- return set_->isnot ? ++next : next;
-}
-
-template <class BidiIterator>
-class repeater_count
-{
- repeater_count** stack;
- repeater_count* next;
- int state_id;
- std::size_t count; // the number of iterations so far
- BidiIterator start_pos; // where the last repeat started
-public:
- repeater_count(repeater_count** s)
- {
- stack = s;
- next = 0;
- state_id = -1;
- count = 0;
- }
- repeater_count(int i, repeater_count** s, BidiIterator start)
- : start_pos(start)
- {
- state_id = i;
- stack = s;
- next = *stack;
- *stack = this;
- if(state_id > next->state_id)
- count = 0;
- else
- {
- repeater_count* p = next;
- while(p && (p->state_id != state_id))
- p = p->next;
- if(p)
- {
- count = p->count;
- start_pos = p->start_pos;
- }
- else
- count = 0;
- }
- }
- ~repeater_count()
- {
- if(next)
- *stack = next;
- }
- std::size_t get_count() { return count; }
- int get_id() { return state_id; }
- std::size_t operator++() { return ++count; }
- bool check_null_repeat(const BidiIterator& pos, std::size_t max)
- {
- // this is called when we are about to start a new repeat,
- // if the last one was NULL move our count to max,
- // otherwise save the current position.
- bool result = (count == 0) ? false : (pos == start_pos);
- if(result)
- count = max;
- else
- start_pos = pos;
- return result;
- }
-};
-
-struct saved_state;
-
-enum saved_state_type
-{
- saved_type_end = 0,
- saved_type_paren = 1,
- saved_type_recurse = 2,
- saved_type_assertion = 3,
- saved_state_alt = 4,
- saved_state_repeater_count = 5,
- saved_state_extra_block = 6,
- saved_state_greedy_single_repeat = 7,
- saved_state_rep_slow_dot = 8,
- saved_state_rep_fast_dot = 9,
- saved_state_rep_char = 10,
- saved_state_rep_short_set = 11,
- saved_state_rep_long_set = 12,
- saved_state_non_greedy_long_repeat = 13,
- saved_state_count = 14
-};
-
-template <class Results>
-struct recursion_info
-{
- typedef typename Results::value_type value_type;
- typedef typename value_type::iterator iterator;
- int idx;
- const re_syntax_base* preturn_address;
- Results results;
- repeater_count<iterator>* repeater_stack;
-};
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable : 4251 4231)
-# if BOOST_MSVC < 1600
-# pragma warning(disable : 4660)
-# endif
-#endif
-
-template <class BidiIterator, class Allocator, class traits>
-class perl_matcher
-{
-public:
- typedef typename traits::char_type char_type;
- typedef perl_matcher<BidiIterator, Allocator, traits> self_type;
- typedef bool (self_type::*matcher_proc_type)(void);
- typedef std::size_t traits_size_type;
- typedef typename is_byte<char_type>::width_type width_type;
- typedef typename regex_iterator_traits<BidiIterator>::difference_type difference_type;
- typedef match_results<BidiIterator, Allocator> results_type;
-
- perl_matcher(BidiIterator first, BidiIterator end,
- match_results<BidiIterator, Allocator>& what,
- const basic_regex<char_type, traits>& e,
- match_flag_type f,
- BidiIterator l_base)
- : m_result(what), base(first), last(end),
- position(first), backstop(l_base), re(e), traits_inst(e.get_traits()),
- m_independent(false), next_count(&rep_obj), rep_obj(&next_count)
- {
- construct_init(e, f);
- }
-
- bool match();
- bool find();
-
- void setf(match_flag_type f)
- { m_match_flags |= f; }
- void unsetf(match_flag_type f)
- { m_match_flags &= ~f; }
-
-private:
- void construct_init(const basic_regex<char_type, traits>& e, match_flag_type f);
-
- bool find_imp();
- bool match_imp();
-#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
- typedef bool (perl_matcher::*protected_proc_type)();
- bool protected_call(protected_proc_type);
-#endif
- void estimate_max_state_count(std::random_access_iterator_tag*);
- void estimate_max_state_count(void*);
- bool match_prefix();
- bool match_all_states();
-
- // match procs, stored in s_match_vtable:
- bool match_startmark();
- bool match_endmark();
- bool match_literal();
- bool match_start_line();
- bool match_end_line();
- bool match_wild();
- bool match_match();
- bool match_word_boundary();
- bool match_within_word();
- bool match_word_start();
- bool match_word_end();
- bool match_buffer_start();
- bool match_buffer_end();
- bool match_backref();
- bool match_long_set();
- bool match_set();
- bool match_jump();
- bool match_alt();
- bool match_rep();
- bool match_combining();
- bool match_soft_buffer_end();
- bool match_restart_continue();
- bool match_long_set_repeat();
- bool match_set_repeat();
- bool match_char_repeat();
- bool match_dot_repeat_fast();
- bool match_dot_repeat_slow();
- bool match_dot_repeat_dispatch()
- {
- return ::cutl_details_boost::is_random_access_iterator<BidiIterator>::value ? match_dot_repeat_fast() : match_dot_repeat_slow();
- }
- bool match_backstep();
- bool match_assert_backref();
- bool match_toggle_case();
-#ifdef BOOST_REGEX_RECURSIVE
- bool backtrack_till_match(std::size_t count);
-#endif
- bool match_recursion();
-
- // find procs stored in s_find_vtable:
- bool find_restart_any();
- bool find_restart_word();
- bool find_restart_line();
- bool find_restart_buf();
- bool find_restart_lit();
-
-private:
- // final result structure to be filled in:
- match_results<BidiIterator, Allocator>& m_result;
- // temporary result for POSIX matches:
- scoped_ptr<match_results<BidiIterator, Allocator> > m_temp_match;
- // pointer to actual result structure to fill in:
- match_results<BidiIterator, Allocator>* m_presult;
- // start of sequence being searched:
- BidiIterator base;
- // end of sequence being searched:
- BidiIterator last;
- // current character being examined:
- BidiIterator position;
- // where to restart next search after failed match attempt:
- BidiIterator restart;
- // where the current search started from, acts as base for $` during grep:
- BidiIterator search_base;
- // how far we can go back when matching lookbehind:
- BidiIterator backstop;
- // the expression being examined:
- const basic_regex<char_type, traits>& re;
- // the expression's traits class:
- const ::cutl_details_boost::regex_traits_wrapper<traits>& traits_inst;
- // the next state in the machine being matched:
- const re_syntax_base* pstate;
- // matching flags in use:
- match_flag_type m_match_flags;
- // how many states we have examined so far:
- std::ptrdiff_t state_count;
- // max number of states to examine before giving up:
- std::ptrdiff_t max_state_count;
- // whether we should ignore case or not:
- bool icase;
- // set to true when (position == last), indicates that we may have a partial match:
- bool m_has_partial_match;
- // set to true whenever we get a match:
- bool m_has_found_match;
- // set to true whenever we're inside an independent sub-expression:
- bool m_independent;
- // the current repeat being examined:
- repeater_count<BidiIterator>* next_count;
- // the first repeat being examined (top of linked list):
- repeater_count<BidiIterator> rep_obj;
- // the mask to pass when matching word boundaries:
- typename traits::char_class_type m_word_mask;
- // the bitmask to use when determining whether a match_any matches a newline or not:
- unsigned char match_any_mask;
- // recursion information:
- std::vector<recursion_info<results_type> > recursion_stack;
-
-#ifdef BOOST_REGEX_NON_RECURSIVE
- //
- // additional members for non-recursive version:
- //
- typedef bool (self_type::*unwind_proc_type)(bool);
-
- void extend_stack();
- bool unwind(bool);
- bool unwind_end(bool);
- bool unwind_paren(bool);
- bool unwind_recursion_stopper(bool);
- bool unwind_assertion(bool);
- bool unwind_alt(bool);
- bool unwind_repeater_counter(bool);
- bool unwind_extra_block(bool);
- bool unwind_greedy_single_repeat(bool);
- bool unwind_slow_dot_repeat(bool);
- bool unwind_fast_dot_repeat(bool);
- bool unwind_char_repeat(bool);
- bool unwind_short_set_repeat(bool);
- bool unwind_long_set_repeat(bool);
- bool unwind_non_greedy_repeat(bool);
- bool unwind_recursion(bool);
- bool unwind_recursion_pop(bool);
- void destroy_single_repeat();
- void push_matched_paren(int index, const sub_match<BidiIterator>& sub);
- void push_recursion_stopper();
- void push_assertion(const re_syntax_base* ps, bool positive);
- void push_alt(const re_syntax_base* ps);
- void push_repeater_count(int i, repeater_count<BidiIterator>** s);
- void push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int state_id);
- void push_non_greedy_repeat(const re_syntax_base* ps);
- void push_recursion(int idx, const re_syntax_base* p, results_type* presults);
- void push_recursion_pop();
-
- // pointer to base of stack:
- saved_state* m_stack_base;
- // pointer to current stack position:
- saved_state* m_backup_state;
- // determines what value to return when unwinding from recursion,
- // allows for mixed recursive/non-recursive algorithm:
- bool m_recursive_result;
- // how many memory blocks have we used up?:
- unsigned used_block_count;
-#endif
-
- // these operations aren't allowed, so are declared private,
- // bodies are provided to keep explicit-instantiation requests happy:
- perl_matcher& operator=(const perl_matcher&)
- {
- return *this;
- }
- perl_matcher(const perl_matcher& that)
- : m_result(that.m_result), re(that.re), traits_inst(that.traits_inst), rep_obj(0) {}
-};
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace re_detail
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-//
-// include the implementation of perl_matcher:
-//
-#ifdef BOOST_REGEX_RECURSIVE
-#include <cutl/details/boost/regex/v4/perl_matcher_recursive.hpp>
-#else
-#include <cutl/details/boost/regex/v4/perl_matcher_non_recursive.hpp>
-#endif
-// this one has to be last:
-#include <cutl/details/boost/regex/v4/perl_matcher_common.hpp>
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/v4/perl_matcher_common.hpp b/libcutl/cutl/details/boost/regex/v4/perl_matcher_common.hpp
deleted file mode 100644
index e5dbfd2..0000000
--- a/libcutl/cutl/details/boost/regex/v4/perl_matcher_common.hpp
+++ /dev/null
@@ -1,996 +0,0 @@
-/*
- *
- * Copyright (c) 2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE perl_matcher_common.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Definitions of perl_matcher member functions that are
- * common to both the recursive and non-recursive versions.
- */
-
-#ifndef BOOST_REGEX_V4_PERL_MATCHER_COMMON_HPP
-#define BOOST_REGEX_V4_PERL_MATCHER_COMMON_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef __BORLANDC__
-# pragma option push -w-8008 -w-8066
-#endif
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4800)
-#endif
-
-namespace cutl_details_boost{
-namespace re_detail{
-
-template <class BidiIterator, class Allocator, class traits>
-void perl_matcher<BidiIterator, Allocator, traits>::construct_init(const basic_regex<char_type, traits>& e, match_flag_type f)
-{
- typedef typename regex_iterator_traits<BidiIterator>::iterator_category category;
- typedef typename basic_regex<char_type, traits>::flag_type expression_flag_type;
-
- if(e.empty())
- {
- // precondition failure: e is not a valid regex.
- std::invalid_argument ex("Invalid regular expression object");
- cutl_details_boost::throw_exception(ex);
- }
- pstate = 0;
- m_match_flags = f;
- estimate_max_state_count(static_cast<category*>(0));
- expression_flag_type re_f = re.flags();
- icase = re_f & regex_constants::icase;
- if(!(m_match_flags & (match_perl|match_posix)))
- {
- if((re_f & (regbase::main_option_type|regbase::no_perl_ex)) == 0)
- m_match_flags |= match_perl;
- else if((re_f & (regbase::main_option_type|regbase::emacs_ex)) == (regbase::basic_syntax_group|regbase::emacs_ex))
- m_match_flags |= match_perl;
- else if((re_f & (regbase::main_option_type|regbase::literal)) == (regbase::literal))
- m_match_flags |= match_perl;
- else
- m_match_flags |= match_posix;
- }
- if(m_match_flags & match_posix)
- {
- m_temp_match.reset(new match_results<BidiIterator, Allocator>());
- m_presult = m_temp_match.get();
- }
- else
- m_presult = &m_result;
-#ifdef BOOST_REGEX_NON_RECURSIVE
- m_stack_base = 0;
- m_backup_state = 0;
-#endif
- // find the value to use for matching word boundaries:
- m_word_mask = re.get_data().m_word_mask;
- // find bitmask to use for matching '.':
- match_any_mask = static_cast<unsigned char>((f & match_not_dot_newline) ? re_detail::test_not_newline : re_detail::test_newline);
-}
-
-template <class BidiIterator, class Allocator, class traits>
-void perl_matcher<BidiIterator, Allocator, traits>::estimate_max_state_count(std::random_access_iterator_tag*)
-{
- //
- // How many states should we allow our machine to visit before giving up?
- // This is a heuristic: it takes the greater of O(N^2) and O(NS^2)
- // where N is the length of the string, and S is the number of states
- // in the machine. It's tempting to up this to O(N^2S) or even O(N^2S^2)
- // but these take unreasonably amounts of time to bale out in pathological
- // cases.
- //
- // Calculate NS^2 first:
- //
- static const std::ptrdiff_t k = 100000;
- std::ptrdiff_t dist = cutl_details_boost::re_detail::distance(base, last);
- if(dist == 0)
- dist = 1;
- std::ptrdiff_t states = re.size();
- if(states == 0)
- states = 1;
- states *= states;
- if((std::numeric_limits<std::ptrdiff_t>::max)() / dist < states)
- {
- max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits<std::ptrdiff_t>::max)() - 2);
- return;
- }
- states *= dist;
- if((std::numeric_limits<std::ptrdiff_t>::max)() - k < states)
- {
- max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits<std::ptrdiff_t>::max)() - 2);
- return;
- }
- states += k;
-
- max_state_count = states;
-
- //
- // Now calculate N^2:
- //
- states = dist;
- if((std::numeric_limits<std::ptrdiff_t>::max)() / dist < states)
- {
- max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits<std::ptrdiff_t>::max)() - 2);
- return;
- }
- states *= dist;
- if((std::numeric_limits<std::ptrdiff_t>::max)() - k < states)
- {
- max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits<std::ptrdiff_t>::max)() - 2);
- return;
- }
- states += k;
- //
- // N^2 can be a very large number indeed, to prevent things getting out
- // of control, cap the max states:
- //
- if(states > BOOST_REGEX_MAX_STATE_COUNT)
- states = BOOST_REGEX_MAX_STATE_COUNT;
- //
- // If (the possibly capped) N^2 is larger than our first estimate,
- // use this instead:
- //
- if(states > max_state_count)
- max_state_count = states;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::estimate_max_state_count(void*)
-{
- // we don't know how long the sequence is:
- max_state_count = BOOST_REGEX_MAX_STATE_COUNT;
-}
-
-#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
-template <class BidiIterator, class Allocator, class traits>
-inline bool perl_matcher<BidiIterator, Allocator, traits>::protected_call(
- protected_proc_type proc)
-{
- ::cutl_details_boost::re_detail::concrete_protected_call
- <perl_matcher<BidiIterator, Allocator, traits> >
- obj(this, proc);
- return obj.execute();
-
-}
-#endif
-
-template <class BidiIterator, class Allocator, class traits>
-inline bool perl_matcher<BidiIterator, Allocator, traits>::match()
-{
-#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
- return protected_call(&perl_matcher<BidiIterator, Allocator, traits>::match_imp);
-#else
- return match_imp();
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_imp()
-{
- // initialise our stack if we are non-recursive:
-#ifdef BOOST_REGEX_NON_RECURSIVE
- save_state_init init(&m_stack_base, &m_backup_state);
- used_block_count = BOOST_REGEX_MAX_BLOCKS;
-#if !defined(BOOST_NO_EXCEPTIONS)
- try{
-#endif
-#endif
-
- // reset our state machine:
- position = base;
- search_base = base;
- state_count = 0;
- m_match_flags |= regex_constants::match_all;
- m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), search_base, last);
- m_presult->set_base(base);
- m_presult->set_named_subs(this->re.get_named_subs());
- if(m_match_flags & match_posix)
- m_result = *m_presult;
- verify_options(re.flags(), m_match_flags);
- if(0 == match_prefix())
- return false;
- return (m_result[0].second == last) && (m_result[0].first == base);
-
-#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_NO_EXCEPTIONS)
- }
- catch(...)
- {
- // unwind all pushed states, apart from anything else this
- // ensures that all the states are correctly destructed
- // not just the memory freed.
- while(unwind(true)){}
- throw;
- }
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline bool perl_matcher<BidiIterator, Allocator, traits>::find()
-{
-#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
- return protected_call(&perl_matcher<BidiIterator, Allocator, traits>::find_imp);
-#else
- return find_imp();
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::find_imp()
-{
- static matcher_proc_type const s_find_vtable[7] =
- {
- &perl_matcher<BidiIterator, Allocator, traits>::find_restart_any,
- &perl_matcher<BidiIterator, Allocator, traits>::find_restart_word,
- &perl_matcher<BidiIterator, Allocator, traits>::find_restart_line,
- &perl_matcher<BidiIterator, Allocator, traits>::find_restart_buf,
- &perl_matcher<BidiIterator, Allocator, traits>::match_prefix,
- &perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit,
- &perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit,
- };
-
- // initialise our stack if we are non-recursive:
-#ifdef BOOST_REGEX_NON_RECURSIVE
- save_state_init init(&m_stack_base, &m_backup_state);
- used_block_count = BOOST_REGEX_MAX_BLOCKS;
-#if !defined(BOOST_NO_EXCEPTIONS)
- try{
-#endif
-#endif
-
- state_count = 0;
- if((m_match_flags & regex_constants::match_init) == 0)
- {
- // reset our state machine:
- search_base = position = base;
- pstate = re.get_first_state();
- m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), base, last);
- m_presult->set_base(base);
- m_presult->set_named_subs(this->re.get_named_subs());
- m_match_flags |= regex_constants::match_init;
- }
- else
- {
- // start again:
- search_base = position = m_result[0].second;
- // If last match was null and match_not_null was not set then increment
- // our start position, otherwise we go into an infinite loop:
- if(((m_match_flags & match_not_null) == 0) && (m_result.length() == 0))
- {
- if(position == last)
- return false;
- else
- ++position;
- }
- // reset $` start:
- m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), search_base, last);
- //if((base != search_base) && (base == backstop))
- // m_match_flags |= match_prev_avail;
- }
- if(m_match_flags & match_posix)
- {
- m_result.set_size(re.mark_count(), base, last);
- m_result.set_base(base);
- }
-
- verify_options(re.flags(), m_match_flags);
- // find out what kind of expression we have:
- unsigned type = (m_match_flags & match_continuous) ?
- static_cast<unsigned int>(regbase::restart_continue)
- : static_cast<unsigned int>(re.get_restart_type());
-
- // call the appropriate search routine:
- matcher_proc_type proc = s_find_vtable[type];
- return (this->*proc)();
-
-#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_NO_EXCEPTIONS)
- }
- catch(...)
- {
- // unwind all pushed states, apart from anything else this
- // ensures that all the states are correctly destructed
- // not just the memory freed.
- while(unwind(true)){}
- throw;
- }
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_prefix()
-{
- m_has_partial_match = false;
- m_has_found_match = false;
- pstate = re.get_first_state();
- m_presult->set_first(position);
- restart = position;
- match_all_states();
- if(!m_has_found_match && m_has_partial_match && (m_match_flags & match_partial))
- {
- m_has_found_match = true;
- m_presult->set_second(last, 0, false);
- position = last;
- if((m_match_flags & match_posix) == match_posix)
- {
- m_result.maybe_assign(*m_presult);
- }
- }
-#ifdef BOOST_REGEX_MATCH_EXTRA
- if(m_has_found_match && (match_extra & m_match_flags))
- {
- //
- // we have a match, reverse the capture information:
- //
- for(unsigned i = 0; i < m_presult->size(); ++i)
- {
- typename sub_match<BidiIterator>::capture_sequence_type & seq = ((*m_presult)[i]).get_captures();
- std::reverse(seq.begin(), seq.end());
- }
- }
-#endif
- if(!m_has_found_match)
- position = restart; // reset search postion
- return m_has_found_match;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_literal()
-{
- unsigned int len = static_cast<const re_literal*>(pstate)->length;
- const char_type* what = reinterpret_cast<const char_type*>(static_cast<const re_literal*>(pstate) + 1);
- //
- // compare string with what we stored in
- // our records:
- for(unsigned int i = 0; i < len; ++i, ++position)
- {
- if((position == last) || (traits_inst.translate(*position, icase) != what[i]))
- return false;
- }
- pstate = pstate->next.p;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_start_line()
-{
- if(position == backstop)
- {
- if((m_match_flags & match_prev_avail) == 0)
- {
- if((m_match_flags & match_not_bol) == 0)
- {
- pstate = pstate->next.p;
- return true;
- }
- return false;
- }
- }
- else if(m_match_flags & match_single_line)
- return false;
-
- // check the previous value character:
- BidiIterator t(position);
- --t;
- if(position != last)
- {
- if(is_separator(*t) && !((*t == static_cast<char_type>('\r')) && (*position == static_cast<char_type>('\n'))) )
- {
- pstate = pstate->next.p;
- return true;
- }
- }
- else if(is_separator(*t))
- {
- pstate = pstate->next.p;
- return true;
- }
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_end_line()
-{
- if(position != last)
- {
- if(m_match_flags & match_single_line)
- return false;
- // we're not yet at the end so *first is always valid:
- if(is_separator(*position))
- {
- if((position != backstop) || (m_match_flags & match_prev_avail))
- {
- // check that we're not in the middle of \r\n sequence
- BidiIterator t(position);
- --t;
- if((*t == static_cast<char_type>('\r')) && (*position == static_cast<char_type>('\n')))
- {
- return false;
- }
- }
- pstate = pstate->next.p;
- return true;
- }
- }
- else if((m_match_flags & match_not_eol) == 0)
- {
- pstate = pstate->next.p;
- return true;
- }
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_wild()
-{
- if(position == last)
- return false;
- if(is_separator(*position) && ((match_any_mask & static_cast<const re_dot*>(pstate)->mask) == 0))
- return false;
- if((*position == char_type(0)) && (m_match_flags & match_not_dot_null))
- return false;
- pstate = pstate->next.p;
- ++position;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary()
-{
- bool b; // indcates whether next character is a word character
- if(position != last)
- {
- // prev and this character must be opposites:
- #if defined(BOOST_REGEX_USE_C_LOCALE) && defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ < 95)
- b = traits::isctype(*position, m_word_mask);
- #else
- b = traits_inst.isctype(*position, m_word_mask);
- #endif
- }
- else
- {
- b = (m_match_flags & match_not_eow) ? true : false;
- }
- if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
- {
- if(m_match_flags & match_not_bow)
- b ^= true;
- else
- b ^= false;
- }
- else
- {
- --position;
- b ^= traits_inst.isctype(*position, m_word_mask);
- ++position;
- }
- if(b)
- {
- pstate = pstate->next.p;
- return true;
- }
- return false; // no match if we get to here...
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_within_word()
-{
- if(position == last)
- return false;
- // both prev and this character must be m_word_mask:
- bool prev = traits_inst.isctype(*position, m_word_mask);
- {
- bool b;
- if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
- return false;
- else
- {
- --position;
- b = traits_inst.isctype(*position, m_word_mask);
- ++position;
- }
- if(b == prev)
- {
- pstate = pstate->next.p;
- return true;
- }
- }
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_word_start()
-{
- if(position == last)
- return false; // can't be starting a word if we're already at the end of input
- if(!traits_inst.isctype(*position, m_word_mask))
- return false; // next character isn't a word character
- if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
- {
- if(m_match_flags & match_not_bow)
- return false; // no previous input
- }
- else
- {
- // otherwise inside buffer:
- BidiIterator t(position);
- --t;
- if(traits_inst.isctype(*t, m_word_mask))
- return false; // previous character not non-word
- }
- // OK we have a match:
- pstate = pstate->next.p;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_word_end()
-{
- if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
- return false; // start of buffer can't be end of word
- BidiIterator t(position);
- --t;
- if(traits_inst.isctype(*t, m_word_mask) == false)
- return false; // previous character wasn't a word character
-
- if(position == last)
- {
- if(m_match_flags & match_not_eow)
- return false; // end of buffer but not end of word
- }
- else
- {
- // otherwise inside buffer:
- if(traits_inst.isctype(*position, m_word_mask))
- return false; // next character is a word character
- }
- pstate = pstate->next.p;
- return true; // if we fall through to here then we've succeeded
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start()
-{
- if((position != backstop) || (m_match_flags & match_not_bob))
- return false;
- // OK match:
- pstate = pstate->next.p;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end()
-{
- if((position != last) || (m_match_flags & match_not_eob))
- return false;
- // OK match:
- pstate = pstate->next.p;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_backref()
-{
- //
- // Compare with what we previously matched.
- // Note that this succeeds if the backref did not partisipate
- // in the match, this is in line with ECMAScript, but not Perl
- // or PCRE.
- //
- int index = static_cast<const re_brace*>(pstate)->index;
- if(index >= 10000)
- {
- named_subexpressions::range_type r = re.get_data().equal_range(index);
- BOOST_ASSERT(r.first != r.second);
- do
- {
- index = r.first->index;
- ++r.first;
- }while((r.first != r.second) && ((*m_presult)[index].matched != true));
- }
-
- if((m_match_flags & match_perl) && !(*m_presult)[index].matched)
- return false;
-
- BidiIterator i = (*m_presult)[index].first;
- BidiIterator j = (*m_presult)[index].second;
- while(i != j)
- {
- if((position == last) || (traits_inst.translate(*position, icase) != traits_inst.translate(*i, icase)))
- return false;
- ++i;
- ++position;
- }
- pstate = pstate->next.p;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set()
-{
- typedef typename traits::char_class_type char_class_type;
- // let the traits class do the work:
- if(position == last)
- return false;
- BidiIterator t = re_is_set_member(position, last, static_cast<const re_set_long<char_class_type>*>(pstate), re.get_data(), icase);
- if(t != position)
- {
- pstate = pstate->next.p;
- position = t;
- return true;
- }
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_set()
-{
- if(position == last)
- return false;
- if(static_cast<const re_set*>(pstate)->_map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
- {
- pstate = pstate->next.p;
- ++position;
- return true;
- }
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_jump()
-{
- pstate = static_cast<const re_jump*>(pstate)->alt.p;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_combining()
-{
- if(position == last)
- return false;
- if(is_combining(traits_inst.translate(*position, icase)))
- return false;
- ++position;
- while((position != last) && is_combining(traits_inst.translate(*position, icase)))
- ++position;
- pstate = pstate->next.p;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end()
-{
- if(m_match_flags & match_not_eob)
- return false;
- BidiIterator p(position);
- while((p != last) && is_separator(traits_inst.translate(*p, icase)))++p;
- if(p != last)
- return false;
- pstate = pstate->next.p;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue()
-{
- if(position == search_base)
- {
- pstate = pstate->next.p;
- return true;
- }
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_backstep()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- if( ::cutl_details_boost::is_random_access_iterator<BidiIterator>::value)
- {
- std::ptrdiff_t maxlen = ::cutl_details_boost::re_detail::distance(backstop, position);
- if(maxlen < static_cast<const re_brace*>(pstate)->index)
- return false;
- std::advance(position, -static_cast<const re_brace*>(pstate)->index);
- }
- else
- {
- int c = static_cast<const re_brace*>(pstate)->index;
- while(c--)
- {
- if(position == backstop)
- return false;
- --position;
- }
- }
- pstate = pstate->next.p;
- return true;
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline bool perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref()
-{
- // return true if marked sub-expression N has been matched:
- int index = static_cast<const re_brace*>(pstate)->index;
- bool result = false;
- if(index == 9999)
- {
- // Magic value for a (DEFINE) block:
- return false;
- }
- else if(index > 0)
- {
- // Have we matched subexpression "index"?
- // Check if index is a hash value:
- if(index >= 10000)
- {
- named_subexpressions::range_type r = re.get_data().equal_range(index);
- while(r.first != r.second)
- {
- if((*m_presult)[r.first->index].matched)
- {
- result = true;
- break;
- }
- ++r.first;
- }
- }
- else
- {
- result = (*m_presult)[index].matched;
- }
- pstate = pstate->next.p;
- }
- else
- {
- // Have we recursed into subexpression "index"?
- // If index == 0 then check for any recursion at all, otherwise for recursion to -index-1.
- int idx = -index-1;
- if(idx >= 10000)
- {
- named_subexpressions::range_type r = re.get_data().equal_range(idx);
- int stack_index = recursion_stack.empty() ? -1 : recursion_stack.back().idx;
- while(r.first != r.second)
- {
- result |= (stack_index == r.first->index);
- if(result)break;
- ++r.first;
- }
- }
- else
- {
- result = !recursion_stack.empty() && ((recursion_stack.back().idx == idx) || (index == 0));
- }
- pstate = pstate->next.p;
- }
- return result;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case()
-{
- // change our case sensitivity:
- this->icase = static_cast<const re_case*>(pstate)->icase;
- pstate = pstate->next.p;
- return true;
-}
-
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_any()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- const unsigned char* _map = re.get_map();
- while(true)
- {
- // skip everything we can't match:
- while((position != last) && !can_start(*position, _map, (unsigned char)mask_any) )
- ++position;
- if(position == last)
- {
- // run out of characters, try a null match if possible:
- if(re.can_be_null())
- return match_prefix();
- break;
- }
- // now try and obtain a match:
- if(match_prefix())
- return true;
- if(position == last)
- return false;
- ++position;
- }
- return false;
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_word()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- // do search optimised for word starts:
- const unsigned char* _map = re.get_map();
- if((m_match_flags & match_prev_avail) || (position != base))
- --position;
- else if(match_prefix())
- return true;
- do
- {
- while((position != last) && traits_inst.isctype(*position, m_word_mask))
- ++position;
- while((position != last) && !traits_inst.isctype(*position, m_word_mask))
- ++position;
- if(position == last)
- break;
-
- if(can_start(*position, _map, (unsigned char)mask_any) )
- {
- if(match_prefix())
- return true;
- }
- if(position == last)
- break;
- } while(true);
- return false;
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_line()
-{
- // do search optimised for line starts:
- const unsigned char* _map = re.get_map();
- if(match_prefix())
- return true;
- while(position != last)
- {
- while((position != last) && !is_separator(*position))
- ++position;
- if(position == last)
- return false;
- ++position;
- if(position == last)
- {
- if(re.can_be_null() && match_prefix())
- return true;
- return false;
- }
-
- if( can_start(*position, _map, (unsigned char)mask_any) )
- {
- if(match_prefix())
- return true;
- }
- if(position == last)
- return false;
- //++position;
- }
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_buf()
-{
- if((position == base) && ((m_match_flags & match_not_bob) == 0))
- return match_prefix();
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit()
-{
-#if 0
- if(position == last)
- return false; // can't possibly match if we're at the end already
-
- unsigned type = (m_match_flags & match_continuous) ?
- static_cast<unsigned int>(regbase::restart_continue)
- : static_cast<unsigned int>(re.get_restart_type());
-
- const kmp_info<char_type>* info = access::get_kmp(re);
- int len = info->len;
- const char_type* x = info->pstr;
- int j = 0;
- while (position != last)
- {
- while((j > -1) && (x[j] != traits_inst.translate(*position, icase)))
- j = info->kmp_next[j];
- ++position;
- ++j;
- if(j >= len)
- {
- if(type == regbase::restart_fixed_lit)
- {
- std::advance(position, -j);
- restart = position;
- std::advance(restart, len);
- m_result.set_first(position);
- m_result.set_second(restart);
- position = restart;
- return true;
- }
- else
- {
- restart = position;
- std::advance(position, -j);
- if(match_prefix())
- return true;
- else
- {
- for(int k = 0; (restart != position) && (k < j); ++k, --restart)
- {} // dwa 10/20/2000 - warning suppression for MWCW
- if(restart != last)
- ++restart;
- position = restart;
- j = 0; //we could do better than this...
- }
- }
- }
- }
- if((m_match_flags & match_partial) && (position == last) && j)
- {
- // we need to check for a partial match:
- restart = position;
- std::advance(position, -j);
- return match_prefix();
- }
-#endif
- return false;
-}
-
-} // namespace re_detail
-
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-#ifdef __BORLANDC__
-# pragma option pop
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/v4/perl_matcher_non_recursive.hpp b/libcutl/cutl/details/boost/regex/v4/perl_matcher_non_recursive.hpp
deleted file mode 100644
index 9e3d74d..0000000
--- a/libcutl/cutl/details/boost/regex/v4/perl_matcher_non_recursive.hpp
+++ /dev/null
@@ -1,1642 +0,0 @@
-/*
- *
- * Copyright (c) 2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE perl_matcher_common.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Definitions of perl_matcher member functions that are
- * specific to the non-recursive implementation.
- */
-
-#ifndef BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP
-#define BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP
-
-#include <new>
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4800)
-#endif
-
-namespace cutl_details_boost{
-namespace re_detail{
-
-template <class T>
-inline void inplace_destroy(T* p)
-{
- (void)p; // warning suppression
- p->~T();
-}
-
-struct saved_state
-{
- union{
- unsigned int state_id;
- // this padding ensures correct alignment on 64-bit platforms:
- std::size_t padding1;
- std::ptrdiff_t padding2;
- void* padding3;
- };
- saved_state(unsigned i) : state_id(i) {}
-};
-
-template <class BidiIterator>
-struct saved_matched_paren : public saved_state
-{
- int index;
- sub_match<BidiIterator> sub;
- saved_matched_paren(int i, const sub_match<BidiIterator>& s) : saved_state(1), index(i), sub(s){};
-};
-
-template <class BidiIterator>
-struct saved_position : public saved_state
-{
- const re_syntax_base* pstate;
- BidiIterator position;
- saved_position(const re_syntax_base* ps, BidiIterator pos, int i) : saved_state(i), pstate(ps), position(pos){};
-};
-
-template <class BidiIterator>
-struct saved_assertion : public saved_position<BidiIterator>
-{
- bool positive;
- saved_assertion(bool p, const re_syntax_base* ps, BidiIterator pos)
- : saved_position<BidiIterator>(ps, pos, saved_type_assertion), positive(p){};
-};
-
-template <class BidiIterator>
-struct saved_repeater : public saved_state
-{
- repeater_count<BidiIterator> count;
- saved_repeater(int i, repeater_count<BidiIterator>** s, BidiIterator start)
- : saved_state(saved_state_repeater_count), count(i,s,start){}
-};
-
-struct saved_extra_block : public saved_state
-{
- saved_state *base, *end;
- saved_extra_block(saved_state* b, saved_state* e)
- : saved_state(saved_state_extra_block), base(b), end(e) {}
-};
-
-struct save_state_init
-{
- saved_state** stack;
- save_state_init(saved_state** base, saved_state** end)
- : stack(base)
- {
- *base = static_cast<saved_state*>(get_mem_block());
- *end = reinterpret_cast<saved_state*>(reinterpret_cast<char*>(*base)+BOOST_REGEX_BLOCKSIZE);
- --(*end);
- (void) new (*end)saved_state(0);
- BOOST_ASSERT(*end > *base);
- }
- ~save_state_init()
- {
- put_mem_block(*stack);
- *stack = 0;
- }
-};
-
-template <class BidiIterator>
-struct saved_single_repeat : public saved_state
-{
- std::size_t count;
- const re_repeat* rep;
- BidiIterator last_position;
- saved_single_repeat(std::size_t c, const re_repeat* r, BidiIterator lp, int arg_id)
- : saved_state(arg_id), count(c), rep(r), last_position(lp){}
-};
-
-template <class Results>
-struct saved_recursion : public saved_state
-{
- saved_recursion(int idx, const re_syntax_base* p, Results* pr)
- : saved_state(14), recursion_id(idx), preturn_address(p), results(*pr)
- {}
- int recursion_id;
- const re_syntax_base* preturn_address;
- Results results;
-};
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_all_states()
-{
- static matcher_proc_type const s_match_vtable[30] =
- {
- (&perl_matcher<BidiIterator, Allocator, traits>::match_startmark),
- &perl_matcher<BidiIterator, Allocator, traits>::match_endmark,
- &perl_matcher<BidiIterator, Allocator, traits>::match_literal,
- &perl_matcher<BidiIterator, Allocator, traits>::match_start_line,
- &perl_matcher<BidiIterator, Allocator, traits>::match_end_line,
- &perl_matcher<BidiIterator, Allocator, traits>::match_wild,
- &perl_matcher<BidiIterator, Allocator, traits>::match_match,
- &perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary,
- &perl_matcher<BidiIterator, Allocator, traits>::match_within_word,
- &perl_matcher<BidiIterator, Allocator, traits>::match_word_start,
- &perl_matcher<BidiIterator, Allocator, traits>::match_word_end,
- &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start,
- &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end,
- &perl_matcher<BidiIterator, Allocator, traits>::match_backref,
- &perl_matcher<BidiIterator, Allocator, traits>::match_long_set,
- &perl_matcher<BidiIterator, Allocator, traits>::match_set,
- &perl_matcher<BidiIterator, Allocator, traits>::match_jump,
- &perl_matcher<BidiIterator, Allocator, traits>::match_alt,
- &perl_matcher<BidiIterator, Allocator, traits>::match_rep,
- &perl_matcher<BidiIterator, Allocator, traits>::match_combining,
- &perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end,
- &perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue,
- // Although this next line *should* be evaluated at compile time, in practice
- // some compilers (VC++) emit run-time initialisation which breaks thread
- // safety, so use a dispatch function instead:
- //(::cutl_details_boost::is_random_access_iterator<BidiIterator>::value ? &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast : &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow),
- &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_dispatch,
- &perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::match_backstep,
- &perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref,
- &perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case,
- &perl_matcher<BidiIterator, Allocator, traits>::match_recursion,
- };
-
- push_recursion_stopper();
- do{
- while(pstate)
- {
- matcher_proc_type proc = s_match_vtable[pstate->type];
- ++state_count;
- if(!(this->*proc)())
- {
- if(state_count > max_state_count)
- raise_error(traits_inst, regex_constants::error_complexity);
- if((m_match_flags & match_partial) && (position == last) && (position != search_base))
- m_has_partial_match = true;
- bool successful_unwind = unwind(false);
- if((m_match_flags & match_partial) && (position == last) && (position != search_base))
- m_has_partial_match = true;
- if(false == successful_unwind)
- return m_recursive_result;
- }
- }
- }while(unwind(true));
- return m_recursive_result;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-void perl_matcher<BidiIterator, Allocator, traits>::extend_stack()
-{
- if(used_block_count)
- {
- --used_block_count;
- saved_state* stack_base;
- saved_state* backup_state;
- stack_base = static_cast<saved_state*>(get_mem_block());
- backup_state = reinterpret_cast<saved_state*>(reinterpret_cast<char*>(stack_base)+BOOST_REGEX_BLOCKSIZE);
- saved_extra_block* block = static_cast<saved_extra_block*>(backup_state);
- --block;
- (void) new (block) saved_extra_block(m_stack_base, m_backup_state);
- m_stack_base = stack_base;
- m_backup_state = block;
- }
- else
- raise_error(traits_inst, regex_constants::error_stack);
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::push_matched_paren(int index, const sub_match<BidiIterator>& sub)
-{
- //BOOST_ASSERT(index);
- saved_matched_paren<BidiIterator>* pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state);
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state);
- --pmp;
- }
- (void) new (pmp)saved_matched_paren<BidiIterator>(index, sub);
- m_backup_state = pmp;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion_stopper()
-{
- saved_state* pmp = m_backup_state;
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = m_backup_state;
- --pmp;
- }
- (void) new (pmp)saved_state(saved_type_recurse);
- m_backup_state = pmp;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::push_assertion(const re_syntax_base* ps, bool positive)
-{
- saved_assertion<BidiIterator>* pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state);
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state);
- --pmp;
- }
- (void) new (pmp)saved_assertion<BidiIterator>(positive, ps, position);
- m_backup_state = pmp;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::push_alt(const re_syntax_base* ps)
-{
- saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
- --pmp;
- }
- (void) new (pmp)saved_position<BidiIterator>(ps, position, saved_state_alt);
- m_backup_state = pmp;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::push_non_greedy_repeat(const re_syntax_base* ps)
-{
- saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
- --pmp;
- }
- (void) new (pmp)saved_position<BidiIterator>(ps, position, saved_state_non_greedy_long_repeat);
- m_backup_state = pmp;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::push_repeater_count(int i, repeater_count<BidiIterator>** s)
-{
- saved_repeater<BidiIterator>* pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state);
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state);
- --pmp;
- }
- (void) new (pmp)saved_repeater<BidiIterator>(i, s, position);
- m_backup_state = pmp;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int state_id)
-{
- saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
- --pmp;
- }
- (void) new (pmp)saved_single_repeat<BidiIterator>(c, r, last_position, state_id);
- m_backup_state = pmp;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion(int idx, const re_syntax_base* p, results_type* presults)
-{
- saved_recursion<results_type>* pmp = static_cast<saved_recursion<results_type>*>(m_backup_state);
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = static_cast<saved_recursion<results_type>*>(m_backup_state);
- --pmp;
- }
- (void) new (pmp)saved_recursion<results_type>(idx, p, presults);
- m_backup_state = pmp;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
-{
- int index = static_cast<const re_brace*>(pstate)->index;
- icase = static_cast<const re_brace*>(pstate)->icase;
- switch(index)
- {
- case 0:
- pstate = pstate->next.p;
- break;
- case -1:
- case -2:
- {
- // forward lookahead assert:
- const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
- pstate = pstate->next.p->next.p;
- push_assertion(next_pstate, index == -1);
- break;
- }
- case -3:
- {
- // independent sub-expression, currently this is always recursive:
- bool old_independent = m_independent;
- m_independent = true;
- const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
- pstate = pstate->next.p->next.p;
- bool r = match_all_states();
- pstate = next_pstate;
- m_independent = old_independent;
-#ifdef BOOST_REGEX_MATCH_EXTRA
- if(r && (m_match_flags & match_extra))
- {
- //
- // our captures have been stored in *m_presult
- // we need to unpack them, and insert them
- // back in the right order when we unwind the stack:
- //
- match_results<BidiIterator, Allocator> temp_match(*m_presult);
- unsigned i;
- for(i = 0; i < temp_match.size(); ++i)
- (*m_presult)[i].get_captures().clear();
- // match everything else:
- r = match_all_states();
- // now place the stored captures back:
- for(i = 0; i < temp_match.size(); ++i)
- {
- typedef typename sub_match<BidiIterator>::capture_sequence_type seq;
- seq& s1 = (*m_presult)[i].get_captures();
- const seq& s2 = temp_match[i].captures();
- s1.insert(
- s1.end(),
- s2.begin(),
- s2.end());
- }
- }
-#endif
- return r;
- }
- case -4:
- {
- // conditional expression:
- const re_alt* alt = static_cast<const re_alt*>(pstate->next.p);
- BOOST_ASSERT(alt->type == syntax_element_alt);
- pstate = alt->next.p;
- if(pstate->type == syntax_element_assert_backref)
- {
- if(!match_assert_backref())
- pstate = alt->alt.p;
- break;
- }
- else
- {
- // zero width assertion, have to match this recursively:
- BOOST_ASSERT(pstate->type == syntax_element_startmark);
- bool negated = static_cast<const re_brace*>(pstate)->index == -2;
- BidiIterator saved_position = position;
- const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
- pstate = pstate->next.p->next.p;
- bool r = match_all_states();
- position = saved_position;
- if(negated)
- r = !r;
- if(r)
- pstate = next_pstate;
- else
- pstate = alt->alt.p;
- break;
- }
- }
- case -5:
- {
- push_matched_paren(0, (*m_presult)[0]);
- m_presult->set_first(position, 0, true);
- pstate = pstate->next.p;
- break;
- }
- default:
- {
- BOOST_ASSERT(index > 0);
- if((m_match_flags & match_nosubs) == 0)
- {
- push_matched_paren(index, (*m_presult)[index]);
- m_presult->set_first(position, index);
- }
- pstate = pstate->next.p;
- break;
- }
- }
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_alt()
-{
- bool take_first, take_second;
- const re_alt* jmp = static_cast<const re_alt*>(pstate);
-
- // find out which of these two alternatives we need to take:
- if(position == last)
- {
- take_first = jmp->can_be_null & mask_take;
- take_second = jmp->can_be_null & mask_skip;
- }
- else
- {
- take_first = can_start(*position, jmp->_map, (unsigned char)mask_take);
- take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip);
- }
-
- if(take_first)
- {
- // we can take the first alternative,
- // see if we need to push next alternative:
- if(take_second)
- {
- push_alt(jmp->alt.p);
- }
- pstate = pstate->next.p;
- return true;
- }
- if(take_second)
- {
- pstate = jmp->alt.p;
- return true;
- }
- return false; // neither option is possible
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_rep()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127 4244)
-#endif
-#ifdef __BORLANDC__
-#pragma option push -w-8008 -w-8066 -w-8004
-#endif
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
-
- // find out which of these two alternatives we need to take:
- bool take_first, take_second;
- if(position == last)
- {
- take_first = rep->can_be_null & mask_take;
- take_second = rep->can_be_null & mask_skip;
- }
- else
- {
- take_first = can_start(*position, rep->_map, (unsigned char)mask_take);
- take_second = can_start(*position, rep->_map, (unsigned char)mask_skip);
- }
-
- if((m_backup_state->state_id != saved_state_repeater_count)
- || (static_cast<saved_repeater<BidiIterator>*>(m_backup_state)->count.get_id() != rep->state_id)
- || (next_count->get_id() != rep->state_id))
- {
- // we're moving to a different repeat from the last
- // one, so set up a counter object:
- push_repeater_count(rep->state_id, &next_count);
- }
- //
- // If we've had at least one repeat already, and the last one
- // matched the NULL string then set the repeat count to
- // maximum:
- //
- next_count->check_null_repeat(position, rep->max);
-
- if(next_count->get_count() < rep->min)
- {
- // we must take the repeat:
- if(take_first)
- {
- // increase the counter:
- ++(*next_count);
- pstate = rep->next.p;
- return true;
- }
- return false;
- }
-
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- if(greedy)
- {
- // try and take the repeat if we can:
- if((next_count->get_count() < rep->max) && take_first)
- {
- if(take_second)
- {
- // store position in case we fail:
- push_alt(rep->alt.p);
- }
- // increase the counter:
- ++(*next_count);
- pstate = rep->next.p;
- return true;
- }
- else if(take_second)
- {
- pstate = rep->alt.p;
- return true;
- }
- return false; // can't take anything, fail...
- }
- else // non-greedy
- {
- // try and skip the repeat if we can:
- if(take_second)
- {
- if((next_count->get_count() < rep->max) && take_first)
- {
- // store position in case we fail:
- push_non_greedy_repeat(rep->next.p);
- }
- pstate = rep->alt.p;
- return true;
- }
- if((next_count->get_count() < rep->max) && take_first)
- {
- // increase the counter:
- ++(*next_count);
- pstate = rep->next.p;
- return true;
- }
- }
- return false;
-#ifdef __BORLANDC__
-#pragma option pop
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow()
-{
- unsigned count = 0;
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- re_syntax_base* psingle = rep->next.p;
- // match compulsary repeats first:
- while(count < rep->min)
- {
- pstate = psingle;
- if(!match_wild())
- return false;
- ++count;
- }
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- if(greedy)
- {
- // repeat for as long as we can:
- while(count < rep->max)
- {
- pstate = psingle;
- if(!match_wild())
- break;
- ++count;
- }
- // remember where we got to if this is a leading repeat:
- if((rep->leading) && (count < rep->max))
- restart = position;
- // push backtrack info if available:
- if(count - rep->min)
- push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
- // jump to next state:
- pstate = rep->alt.p;
- return true;
- }
- else
- {
- // non-greedy, push state and return true if we can skip:
- if(count < rep->max)
- push_single_repeat(count, rep, position, saved_state_rep_slow_dot);
- pstate = rep->alt.p;
- return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
- }
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast()
-{
- if(m_match_flags & match_not_dot_null)
- return match_dot_repeat_slow();
- if((static_cast<const re_dot*>(pstate->next.p)->mask & match_any_mask) == 0)
- return match_dot_repeat_slow();
-
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- unsigned count = static_cast<unsigned>((std::min)(static_cast<unsigned>(::cutl_details_boost::re_detail::distance(position, last)), static_cast<unsigned>(greedy ? rep->max : rep->min)));
- if(rep->min > count)
- {
- position = last;
- return false; // not enough text left to match
- }
- std::advance(position, count);
-
- if(greedy)
- {
- if((rep->leading) && (count < rep->max))
- restart = position;
- // push backtrack info if available:
- if(count - rep->min)
- push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
- // jump to next state:
- pstate = rep->alt.p;
- return true;
- }
- else
- {
- // non-greedy, push state and return true if we can skip:
- if(count < rep->max)
- push_single_repeat(count, rep, position, saved_state_rep_fast_dot);
- pstate = rep->alt.p;
- return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
- }
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
-#ifdef __BORLANDC__
-#pragma option push -w-8008 -w-8066 -w-8004
-#endif
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- BOOST_ASSERT(1 == static_cast<const re_literal*>(rep->next.p)->length);
- const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(rep->next.p) + 1);
- std::size_t count = 0;
- //
- // start by working out how much we can skip:
- //
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- std::size_t desired = greedy ? rep->max : rep->min;
- if(::cutl_details_boost::is_random_access_iterator<BidiIterator>::value)
- {
- BidiIterator end = position;
- std::advance(end, (std::min)((std::size_t)::cutl_details_boost::re_detail::distance(position, last), desired));
- BidiIterator origin(position);
- while((position != end) && (traits_inst.translate(*position, icase) == what))
- {
- ++position;
- }
- count = (unsigned)::cutl_details_boost::re_detail::distance(origin, position);
- }
- else
- {
- while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what))
- {
- ++position;
- ++count;
- }
- }
-
- if(count < rep->min)
- return false;
-
- if(greedy)
- {
- if((rep->leading) && (count < rep->max))
- restart = position;
- // push backtrack info if available:
- if(count - rep->min)
- push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
- // jump to next state:
- pstate = rep->alt.p;
- return true;
- }
- else
- {
- // non-greedy, push state and return true if we can skip:
- if(count < rep->max)
- push_single_repeat(count, rep, position, saved_state_rep_char);
- pstate = rep->alt.p;
- return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
- }
-#ifdef __BORLANDC__
-#pragma option pop
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
-#ifdef __BORLANDC__
-#pragma option push -w-8008 -w-8066 -w-8004
-#endif
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map;
- std::size_t count = 0;
- //
- // start by working out how much we can skip:
- //
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- std::size_t desired = greedy ? rep->max : rep->min;
- if(::cutl_details_boost::is_random_access_iterator<BidiIterator>::value)
- {
- BidiIterator end = position;
- std::advance(end, (std::min)((std::size_t)::cutl_details_boost::re_detail::distance(position, last), desired));
- BidiIterator origin(position);
- while((position != end) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
- {
- ++position;
- }
- count = (unsigned)::cutl_details_boost::re_detail::distance(origin, position);
- }
- else
- {
- while((count < desired) && (position != last) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
- {
- ++position;
- ++count;
- }
- }
-
- if(count < rep->min)
- return false;
-
- if(greedy)
- {
- if((rep->leading) && (count < rep->max))
- restart = position;
- // push backtrack info if available:
- if(count - rep->min)
- push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
- // jump to next state:
- pstate = rep->alt.p;
- return true;
- }
- else
- {
- // non-greedy, push state and return true if we can skip:
- if(count < rep->max)
- push_single_repeat(count, rep, position, saved_state_rep_short_set);
- pstate = rep->alt.p;
- return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
- }
-#ifdef __BORLANDC__
-#pragma option pop
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
-#ifdef __BORLANDC__
-#pragma option push -w-8008 -w-8066 -w-8004
-#endif
- typedef typename traits::char_class_type m_type;
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- const re_set_long<m_type>* set = static_cast<const re_set_long<m_type>*>(pstate->next.p);
- std::size_t count = 0;
- //
- // start by working out how much we can skip:
- //
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- std::size_t desired = greedy ? rep->max : rep->min;
- if(::cutl_details_boost::is_random_access_iterator<BidiIterator>::value)
- {
- BidiIterator end = position;
- std::advance(end, (std::min)((std::size_t)::cutl_details_boost::re_detail::distance(position, last), desired));
- BidiIterator origin(position);
- while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
- {
- ++position;
- }
- count = (unsigned)::cutl_details_boost::re_detail::distance(origin, position);
- }
- else
- {
- while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
- {
- ++position;
- ++count;
- }
- }
-
- if(count < rep->min)
- return false;
-
- if(greedy)
- {
- if((rep->leading) && (count < rep->max))
- restart = position;
- // push backtrack info if available:
- if(count - rep->min)
- push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
- // jump to next state:
- pstate = rep->alt.p;
- return true;
- }
- else
- {
- // non-greedy, push state and return true if we can skip:
- if(count < rep->max)
- push_single_repeat(count, rep, position, saved_state_rep_long_set);
- pstate = rep->alt.p;
- return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
- }
-#ifdef __BORLANDC__
-#pragma option pop
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
-{
- BOOST_ASSERT(pstate->type == syntax_element_recurse);
- //
- // Backup call stack:
- //
- push_recursion_pop();
- //
- // Set new call stack:
- //
- if(recursion_stack.capacity() == 0)
- {
- recursion_stack.reserve(50);
- }
- recursion_stack.push_back(recursion_info<results_type>());
- recursion_stack.back().preturn_address = pstate->next.p;
- recursion_stack.back().results = *m_presult;
- if(static_cast<const re_recurse*>(pstate)->state_id > 0)
- {
- push_repeater_count(static_cast<const re_recurse*>(pstate)->state_id, &next_count);
- }
- pstate = static_cast<const re_jump*>(pstate)->alt.p;
- recursion_stack.back().idx = static_cast<const re_brace*>(pstate)->index;
-
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark()
-{
- int index = static_cast<const re_brace*>(pstate)->index;
- icase = static_cast<const re_brace*>(pstate)->icase;
- if(index > 0)
- {
- if((m_match_flags & match_nosubs) == 0)
- {
- m_presult->set_second(position, index);
- }
- if(!recursion_stack.empty())
- {
- if(index == recursion_stack.back().idx)
- {
- pstate = recursion_stack.back().preturn_address;
- *m_presult = recursion_stack.back().results;
- push_recursion(recursion_stack.back().idx, recursion_stack.back().preturn_address, &recursion_stack.back().results);
- recursion_stack.pop_back();
- }
- }
- }
- else if((index < 0) && (index != -4))
- {
- // matched forward lookahead:
- pstate = 0;
- return true;
- }
- pstate = pstate->next.p;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_match()
-{
- if(!recursion_stack.empty())
- {
- BOOST_ASSERT(0 == recursion_stack.back().idx);
- pstate = recursion_stack.back().preturn_address;
- *m_presult = recursion_stack.back().results;
- push_recursion(recursion_stack.back().idx, recursion_stack.back().preturn_address, &recursion_stack.back().results);
- recursion_stack.pop_back();
- return true;
- }
- if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first))
- return false;
- if((m_match_flags & match_all) && (position != last))
- return false;
- if((m_match_flags & regex_constants::match_not_initial_null) && (position == search_base))
- return false;
- m_presult->set_second(position);
- pstate = 0;
- m_has_found_match = true;
- if((m_match_flags & match_posix) == match_posix)
- {
- m_result.maybe_assign(*m_presult);
- if((m_match_flags & match_any) == 0)
- return false;
- }
-#ifdef BOOST_REGEX_MATCH_EXTRA
- if(match_extra & m_match_flags)
- {
- for(unsigned i = 0; i < m_presult->size(); ++i)
- if((*m_presult)[i].matched)
- ((*m_presult)[i]).get_captures().push_back((*m_presult)[i]);
- }
-#endif
- return true;
-}
-
-/****************************************************************************
-
-Unwind and associated proceedures follow, these perform what normal stack
-unwinding does in the recursive implementation.
-
-****************************************************************************/
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind(bool have_match)
-{
- static unwind_proc_type const s_unwind_table[18] =
- {
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_end,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_paren,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_stopper,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_assertion,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_alt,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_repeater_counter,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_extra_block,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_greedy_single_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_slow_dot_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_fast_dot_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_char_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_short_set_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_long_set_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_non_greedy_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion,
- &perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_pop,
- };
-
- m_recursive_result = have_match;
- unwind_proc_type unwinder;
- bool cont;
- //
- // keep unwinding our stack until we have something to do:
- //
- do
- {
- unwinder = s_unwind_table[m_backup_state->state_id];
- cont = (this->*unwinder)(m_recursive_result);
- }while(cont);
- //
- // return true if we have more states to try:
- //
- return pstate ? true : false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_end(bool)
-{
- pstate = 0; // nothing left to search
- return false; // end of stack nothing more to search
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_paren(bool have_match)
-{
- saved_matched_paren<BidiIterator>* pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state);
- // restore previous values if no match was found:
- if(have_match == false)
- {
- m_presult->set_first(pmp->sub.first, pmp->index, pmp->index == 0);
- m_presult->set_second(pmp->sub.second, pmp->index, pmp->sub.matched, pmp->index == 0);
- }
-#ifdef BOOST_REGEX_MATCH_EXTRA
- //
- // we have a match, push the capture information onto the stack:
- //
- else if(pmp->sub.matched && (match_extra & m_match_flags))
- ((*m_presult)[pmp->index]).get_captures().push_back(pmp->sub);
-#endif
- // unwind stack:
- m_backup_state = pmp+1;
- cutl_details_boost::re_detail::inplace_destroy(pmp);
- return true; // keep looking
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_stopper(bool)
-{
- cutl_details_boost::re_detail::inplace_destroy(m_backup_state++);
- pstate = 0; // nothing left to search
- return false; // end of stack nothing more to search
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_assertion(bool r)
-{
- saved_assertion<BidiIterator>* pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state);
- pstate = pmp->pstate;
- position = pmp->position;
- bool result = (r == pmp->positive);
- m_recursive_result = pmp->positive ? r : !r;
- cutl_details_boost::re_detail::inplace_destroy(pmp++);
- m_backup_state = pmp;
- return !result; // return false if the assertion was matched to stop search.
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_alt(bool r)
-{
- saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
- if(!r)
- {
- pstate = pmp->pstate;
- position = pmp->position;
- }
- cutl_details_boost::re_detail::inplace_destroy(pmp++);
- m_backup_state = pmp;
- return r;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_repeater_counter(bool)
-{
- saved_repeater<BidiIterator>* pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state);
- cutl_details_boost::re_detail::inplace_destroy(pmp++);
- m_backup_state = pmp;
- return true; // keep looking
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_extra_block(bool)
-{
- saved_extra_block* pmp = static_cast<saved_extra_block*>(m_backup_state);
- void* condemmed = m_stack_base;
- m_stack_base = pmp->base;
- m_backup_state = pmp->end;
- cutl_details_boost::re_detail::inplace_destroy(pmp);
- put_mem_block(condemmed);
- return true; // keep looking
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::destroy_single_repeat()
-{
- saved_single_repeat<BidiIterator>* p = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
- cutl_details_boost::re_detail::inplace_destroy(p++);
- m_backup_state = p;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_greedy_single_repeat(bool r)
-{
- saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
-
- // if we have a match, just discard this state:
- if(r)
- {
- destroy_single_repeat();
- return true;
- }
-
- const re_repeat* rep = pmp->rep;
- std::size_t count = pmp->count;
- BOOST_ASSERT(rep->next.p != 0);
- BOOST_ASSERT(rep->alt.p != 0);
-
- count -= rep->min;
-
- if((m_match_flags & match_partial) && (position == last))
- m_has_partial_match = true;
-
- BOOST_ASSERT(count);
- position = pmp->last_position;
-
- // backtrack till we can skip out:
- do
- {
- --position;
- --count;
- ++state_count;
- }while(count && !can_start(*position, rep->_map, mask_skip));
-
- // if we've hit base, destroy this state:
- if(count == 0)
- {
- destroy_single_repeat();
- if(!can_start(*position, rep->_map, mask_skip))
- return true;
- }
- else
- {
- pmp->count = count + rep->min;
- pmp->last_position = position;
- }
- pstate = rep->alt.p;
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_slow_dot_repeat(bool r)
-{
- saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
-
- // if we have a match, just discard this state:
- if(r)
- {
- destroy_single_repeat();
- return true;
- }
-
- const re_repeat* rep = pmp->rep;
- std::size_t count = pmp->count;
- BOOST_ASSERT(rep->type == syntax_element_dot_rep);
- BOOST_ASSERT(rep->next.p != 0);
- BOOST_ASSERT(rep->alt.p != 0);
- BOOST_ASSERT(rep->next.p->type == syntax_element_wild);
-
- BOOST_ASSERT(count < rep->max);
- pstate = rep->next.p;
- position = pmp->last_position;
-
- if(position != last)
- {
- // wind forward until we can skip out of the repeat:
- do
- {
- if(!match_wild())
- {
- // failed repeat match, discard this state and look for another:
- destroy_single_repeat();
- return true;
- }
- ++count;
- ++state_count;
- pstate = rep->next.p;
- }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
- }
- if(position == last)
- {
- // can't repeat any more, remove the pushed state:
- destroy_single_repeat();
- if((m_match_flags & match_partial) && (position == last) && (position != search_base))
- m_has_partial_match = true;
- if(0 == (rep->can_be_null & mask_skip))
- return true;
- }
- else if(count == rep->max)
- {
- // can't repeat any more, remove the pushed state:
- destroy_single_repeat();
- if(!can_start(*position, rep->_map, mask_skip))
- return true;
- }
- else
- {
- pmp->count = count;
- pmp->last_position = position;
- }
- pstate = rep->alt.p;
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_fast_dot_repeat(bool r)
-{
- saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
-
- // if we have a match, just discard this state:
- if(r)
- {
- destroy_single_repeat();
- return true;
- }
-
- const re_repeat* rep = pmp->rep;
- std::size_t count = pmp->count;
-
- BOOST_ASSERT(count < rep->max);
- position = pmp->last_position;
- if(position != last)
- {
-
- // wind forward until we can skip out of the repeat:
- do
- {
- ++position;
- ++count;
- ++state_count;
- }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
- }
-
- // remember where we got to if this is a leading repeat:
- if((rep->leading) && (count < rep->max))
- restart = position;
- if(position == last)
- {
- // can't repeat any more, remove the pushed state:
- destroy_single_repeat();
- if((m_match_flags & match_partial) && (position == last) && (position != search_base))
- m_has_partial_match = true;
- if(0 == (rep->can_be_null & mask_skip))
- return true;
- }
- else if(count == rep->max)
- {
- // can't repeat any more, remove the pushed state:
- destroy_single_repeat();
- if(!can_start(*position, rep->_map, mask_skip))
- return true;
- }
- else
- {
- pmp->count = count;
- pmp->last_position = position;
- }
- pstate = rep->alt.p;
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_char_repeat(bool r)
-{
- saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
-
- // if we have a match, just discard this state:
- if(r)
- {
- destroy_single_repeat();
- return true;
- }
-
- const re_repeat* rep = pmp->rep;
- std::size_t count = pmp->count;
- pstate = rep->next.p;
- const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(pstate) + 1);
- position = pmp->last_position;
-
- BOOST_ASSERT(rep->type == syntax_element_char_rep);
- BOOST_ASSERT(rep->next.p != 0);
- BOOST_ASSERT(rep->alt.p != 0);
- BOOST_ASSERT(rep->next.p->type == syntax_element_literal);
- BOOST_ASSERT(count < rep->max);
-
- if(position != last)
- {
- // wind forward until we can skip out of the repeat:
- do
- {
- if(traits_inst.translate(*position, icase) != what)
- {
- // failed repeat match, discard this state and look for another:
- destroy_single_repeat();
- return true;
- }
- ++count;
- ++ position;
- ++state_count;
- pstate = rep->next.p;
- }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
- }
- // remember where we got to if this is a leading repeat:
- if((rep->leading) && (count < rep->max))
- restart = position;
- if(position == last)
- {
- // can't repeat any more, remove the pushed state:
- destroy_single_repeat();
- if((m_match_flags & match_partial) && (position == last) && (position != search_base))
- m_has_partial_match = true;
- if(0 == (rep->can_be_null & mask_skip))
- return true;
- }
- else if(count == rep->max)
- {
- // can't repeat any more, remove the pushed state:
- destroy_single_repeat();
- if(!can_start(*position, rep->_map, mask_skip))
- return true;
- }
- else
- {
- pmp->count = count;
- pmp->last_position = position;
- }
- pstate = rep->alt.p;
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_short_set_repeat(bool r)
-{
- saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
-
- // if we have a match, just discard this state:
- if(r)
- {
- destroy_single_repeat();
- return true;
- }
-
- const re_repeat* rep = pmp->rep;
- std::size_t count = pmp->count;
- pstate = rep->next.p;
- const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map;
- position = pmp->last_position;
-
- BOOST_ASSERT(rep->type == syntax_element_short_set_rep);
- BOOST_ASSERT(rep->next.p != 0);
- BOOST_ASSERT(rep->alt.p != 0);
- BOOST_ASSERT(rep->next.p->type == syntax_element_set);
- BOOST_ASSERT(count < rep->max);
-
- if(position != last)
- {
- // wind forward until we can skip out of the repeat:
- do
- {
- if(!map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
- {
- // failed repeat match, discard this state and look for another:
- destroy_single_repeat();
- return true;
- }
- ++count;
- ++ position;
- ++state_count;
- pstate = rep->next.p;
- }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
- }
- // remember where we got to if this is a leading repeat:
- if((rep->leading) && (count < rep->max))
- restart = position;
- if(position == last)
- {
- // can't repeat any more, remove the pushed state:
- destroy_single_repeat();
- if((m_match_flags & match_partial) && (position == last) && (position != search_base))
- m_has_partial_match = true;
- if(0 == (rep->can_be_null & mask_skip))
- return true;
- }
- else if(count == rep->max)
- {
- // can't repeat any more, remove the pushed state:
- destroy_single_repeat();
- if(!can_start(*position, rep->_map, mask_skip))
- return true;
- }
- else
- {
- pmp->count = count;
- pmp->last_position = position;
- }
- pstate = rep->alt.p;
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_long_set_repeat(bool r)
-{
- typedef typename traits::char_class_type m_type;
- saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
-
- // if we have a match, just discard this state:
- if(r)
- {
- destroy_single_repeat();
- return true;
- }
-
- const re_repeat* rep = pmp->rep;
- std::size_t count = pmp->count;
- pstate = rep->next.p;
- const re_set_long<m_type>* set = static_cast<const re_set_long<m_type>*>(pstate);
- position = pmp->last_position;
-
- BOOST_ASSERT(rep->type == syntax_element_long_set_rep);
- BOOST_ASSERT(rep->next.p != 0);
- BOOST_ASSERT(rep->alt.p != 0);
- BOOST_ASSERT(rep->next.p->type == syntax_element_long_set);
- BOOST_ASSERT(count < rep->max);
-
- if(position != last)
- {
- // wind forward until we can skip out of the repeat:
- do
- {
- if(position == re_is_set_member(position, last, set, re.get_data(), icase))
- {
- // failed repeat match, discard this state and look for another:
- destroy_single_repeat();
- return true;
- }
- ++position;
- ++count;
- ++state_count;
- pstate = rep->next.p;
- }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
- }
- // remember where we got to if this is a leading repeat:
- if((rep->leading) && (count < rep->max))
- restart = position;
- if(position == last)
- {
- // can't repeat any more, remove the pushed state:
- destroy_single_repeat();
- if((m_match_flags & match_partial) && (position == last) && (position != search_base))
- m_has_partial_match = true;
- if(0 == (rep->can_be_null & mask_skip))
- return true;
- }
- else if(count == rep->max)
- {
- // can't repeat any more, remove the pushed state:
- destroy_single_repeat();
- if(!can_start(*position, rep->_map, mask_skip))
- return true;
- }
- else
- {
- pmp->count = count;
- pmp->last_position = position;
- }
- pstate = rep->alt.p;
- return false;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_non_greedy_repeat(bool r)
-{
- saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
- if(!r)
- {
- position = pmp->position;
- pstate = pmp->pstate;
- ++(*next_count);
- }
- cutl_details_boost::re_detail::inplace_destroy(pmp++);
- m_backup_state = pmp;
- return r;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion(bool r)
-{
- saved_recursion<results_type>* pmp = static_cast<saved_recursion<results_type>*>(m_backup_state);
- if(!r)
- {
- recursion_stack.push_back(recursion_info<results_type>());
- recursion_stack.back().idx = pmp->recursion_id;
- recursion_stack.back().preturn_address = pmp->preturn_address;
- recursion_stack.back().results = pmp->results;
- }
- cutl_details_boost::re_detail::inplace_destroy(pmp++);
- m_backup_state = pmp;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_pop(bool r)
-{
- saved_state* pmp = static_cast<saved_state*>(m_backup_state);
- if(!r)
- {
- recursion_stack.pop_back();
- }
- cutl_details_boost::re_detail::inplace_destroy(pmp++);
- m_backup_state = pmp;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-void perl_matcher<BidiIterator, Allocator, traits>::push_recursion_pop()
-{
- saved_state* pmp = static_cast<saved_state*>(m_backup_state);
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = static_cast<saved_state*>(m_backup_state);
- --pmp;
- }
- (void) new (pmp)saved_state(15);
- m_backup_state = pmp;
-}
-/*
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_parenthesis_pop(bool r)
-{
- saved_state* pmp = static_cast<saved_state*>(m_backup_state);
- if(!r)
- {
- --parenthesis_stack_position;
- }
- cutl_details_boost::re_detail::inplace_destroy(pmp++);
- m_backup_state = pmp;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-void perl_matcher<BidiIterator, Allocator, traits>::push_parenthesis_pop()
-{
- saved_state* pmp = static_cast<saved_state*>(m_backup_state);
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = static_cast<saved_state*>(m_backup_state);
- --pmp;
- }
- (void) new (pmp)saved_state(16);
- m_backup_state = pmp;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::unwind_parenthesis_push(bool r)
-{
- saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
- if(!r)
- {
- parenthesis_stack[parenthesis_stack_position++] = pmp->position;
- }
- cutl_details_boost::re_detail::inplace_destroy(pmp++);
- m_backup_state = pmp;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-inline void perl_matcher<BidiIterator, Allocator, traits>::push_parenthesis_push(BidiIterator p)
-{
- saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
- --pmp;
- if(pmp < m_stack_base)
- {
- extend_stack();
- pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
- --pmp;
- }
- (void) new (pmp)saved_position<BidiIterator>(0, p, 17);
- m_backup_state = pmp;
-}
-*/
-} // namespace re_detail
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/perl_matcher_recursive.hpp b/libcutl/cutl/details/boost/regex/v4/perl_matcher_recursive.hpp
deleted file mode 100644
index 6b4492c..0000000
--- a/libcutl/cutl/details/boost/regex/v4/perl_matcher_recursive.hpp
+++ /dev/null
@@ -1,991 +0,0 @@
-/*
- *
- * Copyright (c) 2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE perl_matcher_common.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Definitions of perl_matcher member functions that are
- * specific to the recursive implementation.
- */
-
-#ifndef BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP
-#define BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4800)
-#endif
-
-namespace cutl_details_boost{
-namespace re_detail{
-
-template <class BidiIterator>
-class backup_subex
-{
- int index;
- sub_match<BidiIterator> sub;
-public:
- template <class A>
- backup_subex(const match_results<BidiIterator, A>& w, int i)
- : index(i), sub(w[i], false) {}
- template <class A>
- void restore(match_results<BidiIterator, A>& w)
- {
- w.set_first(sub.first, index, index == 0);
- w.set_second(sub.second, index, sub.matched, index == 0);
- }
- const sub_match<BidiIterator>& get() { return sub; }
-};
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_all_states()
-{
- static matcher_proc_type const s_match_vtable[30] =
- {
- (&perl_matcher<BidiIterator, Allocator, traits>::match_startmark),
- &perl_matcher<BidiIterator, Allocator, traits>::match_endmark,
- &perl_matcher<BidiIterator, Allocator, traits>::match_literal,
- &perl_matcher<BidiIterator, Allocator, traits>::match_start_line,
- &perl_matcher<BidiIterator, Allocator, traits>::match_end_line,
- &perl_matcher<BidiIterator, Allocator, traits>::match_wild,
- &perl_matcher<BidiIterator, Allocator, traits>::match_match,
- &perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary,
- &perl_matcher<BidiIterator, Allocator, traits>::match_within_word,
- &perl_matcher<BidiIterator, Allocator, traits>::match_word_start,
- &perl_matcher<BidiIterator, Allocator, traits>::match_word_end,
- &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start,
- &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end,
- &perl_matcher<BidiIterator, Allocator, traits>::match_backref,
- &perl_matcher<BidiIterator, Allocator, traits>::match_long_set,
- &perl_matcher<BidiIterator, Allocator, traits>::match_set,
- &perl_matcher<BidiIterator, Allocator, traits>::match_jump,
- &perl_matcher<BidiIterator, Allocator, traits>::match_alt,
- &perl_matcher<BidiIterator, Allocator, traits>::match_rep,
- &perl_matcher<BidiIterator, Allocator, traits>::match_combining,
- &perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end,
- &perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue,
- // Although this next line *should* be evaluated at compile time, in practice
- // some compilers (VC++) emit run-time initialisation which breaks thread
- // safety, so use a dispatch function instead:
- //(::cutl_details_boost::is_random_access_iterator<BidiIterator>::value ? &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast : &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow),
- &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_dispatch,
- &perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat,
- &perl_matcher<BidiIterator, Allocator, traits>::match_backstep,
- &perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref,
- &perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case,
- &perl_matcher<BidiIterator, Allocator, traits>::match_recursion,
- };
-
- if(state_count > max_state_count)
- raise_error(traits_inst, regex_constants::error_complexity);
- while(pstate)
- {
- matcher_proc_type proc = s_match_vtable[pstate->type];
- ++state_count;
- if(!(this->*proc)())
- {
- if((m_match_flags & match_partial) && (position == last) && (position != search_base))
- m_has_partial_match = true;
- return 0;
- }
- }
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
-{
- int index = static_cast<const re_brace*>(pstate)->index;
- icase = static_cast<const re_brace*>(pstate)->icase;
- bool r = true;
- switch(index)
- {
- case 0:
- pstate = pstate->next.p;
- break;
- case -1:
- case -2:
- {
- // forward lookahead assert:
- BidiIterator old_position(position);
- const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
- pstate = pstate->next.p->next.p;
- r = match_all_states();
- pstate = next_pstate;
- position = old_position;
- if((r && (index != -1)) || (!r && (index != -2)))
- r = false;
- else
- r = true;
- break;
- }
- case -3:
- {
- // independent sub-expression:
- bool old_independent = m_independent;
- m_independent = true;
- const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
- pstate = pstate->next.p->next.p;
- r = match_all_states();
- pstate = next_pstate;
- m_independent = old_independent;
-#ifdef BOOST_REGEX_MATCH_EXTRA
- if(r && (m_match_flags & match_extra))
- {
- //
- // our captures have been stored in *m_presult
- // we need to unpack them, and insert them
- // back in the right order when we unwind the stack:
- //
- unsigned i;
- match_results<BidiIterator, Allocator> tm(*m_presult);
- for(i = 0; i < tm.size(); ++i)
- (*m_presult)[i].get_captures().clear();
- // match everything else:
- r = match_all_states();
- // now place the stored captures back:
- for(i = 0; i < tm.size(); ++i)
- {
- typedef typename sub_match<BidiIterator>::capture_sequence_type seq;
- seq& s1 = (*m_presult)[i].get_captures();
- const seq& s2 = tm[i].captures();
- s1.insert(
- s1.end(),
- s2.begin(),
- s2.end());
- }
- }
-#endif
- break;
- }
- case -4:
- {
- // conditional expression:
- const re_alt* alt = static_cast<const re_alt*>(pstate->next.p);
- BOOST_ASSERT(alt->type == syntax_element_alt);
- pstate = alt->next.p;
- if(pstate->type == syntax_element_assert_backref)
- {
- if(!match_assert_backref())
- pstate = alt->alt.p;
- break;
- }
- else
- {
- // zero width assertion, have to match this recursively:
- BOOST_ASSERT(pstate->type == syntax_element_startmark);
- bool negated = static_cast<const re_brace*>(pstate)->index == -2;
- BidiIterator saved_position = position;
- const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
- pstate = pstate->next.p->next.p;
- bool res = match_all_states();
- position = saved_position;
- if(negated)
- res = !res;
- if(res)
- pstate = next_pstate;
- else
- pstate = alt->alt.p;
- break;
- }
- }
- case -5:
- {
- // Reset start of $0, since we have a \K escape
- backup_subex<BidiIterator> sub(*m_presult, 0);
- m_presult->set_first(position, 0, true);
- pstate = pstate->next.p;
- r = match_all_states();
- if(r == false)
- sub.restore(*m_presult);
- break;
- }
- default:
- {
- BOOST_ASSERT(index > 0);
- if((m_match_flags & match_nosubs) == 0)
- {
- backup_subex<BidiIterator> sub(*m_presult, index);
- m_presult->set_first(position, index);
- pstate = pstate->next.p;
- r = match_all_states();
- if(r == false)
- sub.restore(*m_presult);
-#ifdef BOOST_REGEX_MATCH_EXTRA
- //
- // we have a match, push the capture information onto the stack:
- //
- else if(sub.get().matched && (match_extra & m_match_flags))
- ((*m_presult)[index]).get_captures().push_back(sub.get());
-#endif
- }
- else
- {
- pstate = pstate->next.p;
- }
- break;
- }
- }
- return r;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_alt()
-{
- bool take_first, take_second;
- const re_alt* jmp = static_cast<const re_alt*>(pstate);
-
- // find out which of these two alternatives we need to take:
- if(position == last)
- {
- take_first = jmp->can_be_null & mask_take;
- take_second = jmp->can_be_null & mask_skip;
- }
- else
- {
- take_first = can_start(*position, jmp->_map, (unsigned char)mask_take);
- take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip);
- }
-
- if(take_first)
- {
- // we can take the first alternative,
- // see if we need to push next alternative:
- if(take_second)
- {
- BidiIterator oldposition(position);
- const re_syntax_base* old_pstate = jmp->alt.p;
- pstate = pstate->next.p;
- if(!match_all_states())
- {
- pstate = old_pstate;
- position = oldposition;
- }
- return true;
- }
- pstate = pstate->next.p;
- return true;
- }
- if(take_second)
- {
- pstate = jmp->alt.p;
- return true;
- }
- return false; // neither option is possible
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_rep()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127 4244)
-#endif
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- //
- // Always copy the repeat count, so that the state is restored
- // when we exit this scope:
- //
- repeater_count<BidiIterator> r(rep->state_id, &next_count, position);
- //
- // If we've had at least one repeat already, and the last one
- // matched the NULL string then set the repeat count to
- // maximum:
- //
- next_count->check_null_repeat(position, rep->max);
-
- // find out which of these two alternatives we need to take:
- bool take_first, take_second;
- if(position == last)
- {
- take_first = rep->can_be_null & mask_take;
- take_second = rep->can_be_null & mask_skip;
- }
- else
- {
- take_first = can_start(*position, rep->_map, (unsigned char)mask_take);
- take_second = can_start(*position, rep->_map, (unsigned char)mask_skip);
- }
-
- if(next_count->get_count() < rep->min)
- {
- // we must take the repeat:
- if(take_first)
- {
- // increase the counter:
- ++(*next_count);
- pstate = rep->next.p;
- return match_all_states();
- }
- return false;
- }
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- if(greedy)
- {
- // try and take the repeat if we can:
- if((next_count->get_count() < rep->max) && take_first)
- {
- // store position in case we fail:
- BidiIterator pos = position;
- // increase the counter:
- ++(*next_count);
- pstate = rep->next.p;
- if(match_all_states())
- return true;
- // failed repeat, reset posistion and fall through for alternative:
- position = pos;
- }
- if(take_second)
- {
- pstate = rep->alt.p;
- return true;
- }
- return false; // can't take anything, fail...
- }
- else // non-greedy
- {
- // try and skip the repeat if we can:
- if(take_second)
- {
- // store position in case we fail:
- BidiIterator pos = position;
- pstate = rep->alt.p;
- if(match_all_states())
- return true;
- // failed alternative, reset posistion and fall through for repeat:
- position = pos;
- }
- if((next_count->get_count() < rep->max) && take_first)
- {
- // increase the counter:
- ++(*next_count);
- pstate = rep->next.p;
- return match_all_states();
- }
- }
- return false;
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- unsigned count = 0;
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- re_syntax_base* psingle = rep->next.p;
- // match compulsary repeats first:
- while(count < rep->min)
- {
- pstate = psingle;
- if(!match_wild())
- return false;
- ++count;
- }
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- if(greedy)
- {
- // normal repeat:
- while(count < rep->max)
- {
- pstate = psingle;
- if(!match_wild())
- break;
- ++count;
- }
- if((rep->leading) && (count < rep->max))
- restart = position;
- pstate = rep;
- return backtrack_till_match(count - rep->min);
- }
- else
- {
- // non-greedy, keep trying till we get a match:
- BidiIterator save_pos;
- do
- {
- if((rep->leading) && (rep->max == UINT_MAX))
- restart = position;
- pstate = rep->alt.p;
- save_pos = position;
- ++state_count;
- if(match_all_states())
- return true;
- if(count >= rep->max)
- return false;
- ++count;
- pstate = psingle;
- position = save_pos;
- if(!match_wild())
- return false;
- }while(true);
- }
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- if(m_match_flags & match_not_dot_null)
- return match_dot_repeat_slow();
- if((static_cast<const re_dot*>(pstate->next.p)->mask & match_any_mask) == 0)
- return match_dot_repeat_slow();
- //
- // start by working out how much we can skip:
- //
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4267)
-#endif
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- std::size_t count = (std::min)(static_cast<std::size_t>(::cutl_details_boost::re_detail::distance(position, last)), static_cast<std::size_t>(greedy ? rep->max : rep->min));
- if(rep->min > count)
- {
- position = last;
- return false; // not enough text left to match
- }
- std::advance(position, count);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
- if((rep->leading) && (count < rep->max) && greedy)
- restart = position;
- if(greedy)
- return backtrack_till_match(count - rep->min);
-
- // non-greedy, keep trying till we get a match:
- BidiIterator save_pos;
- do
- {
- while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
- {
- ++position;
- ++count;
- }
- if((rep->leading) && (rep->max == UINT_MAX))
- restart = position;
- pstate = rep->alt.p;
- save_pos = position;
- ++state_count;
- if(match_all_states())
- return true;
- if(count >= rep->max)
- return false;
- if(save_pos == last)
- return false;
- position = ++save_pos;
- ++count;
- }while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#pragma warning(disable:4267)
-#endif
-#ifdef __BORLANDC__
-#pragma option push -w-8008 -w-8066 -w-8004
-#endif
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- BOOST_ASSERT(1 == static_cast<const re_literal*>(rep->next.p)->length);
- const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(rep->next.p) + 1);
- //
- // start by working out how much we can skip:
- //
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- std::size_t count, desired;
- if(::cutl_details_boost::is_random_access_iterator<BidiIterator>::value)
- {
- desired =
- (std::min)(
- (std::size_t)(greedy ? rep->max : rep->min),
- (std::size_t)::cutl_details_boost::re_detail::distance(position, last));
- count = desired;
- ++desired;
- if(icase)
- {
- while(--desired && (traits_inst.translate_nocase(*position) == what))
- {
- ++position;
- }
- }
- else
- {
- while(--desired && (traits_inst.translate(*position) == what))
- {
- ++position;
- }
- }
- count = count - desired;
- }
- else
- {
- count = 0;
- desired = greedy ? rep->max : rep->min;
- while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what))
- {
- ++position;
- ++count;
- }
- }
- if((rep->leading) && (count < rep->max) && greedy)
- restart = position;
- if(count < rep->min)
- return false;
-
- if(greedy)
- return backtrack_till_match(count - rep->min);
-
- // non-greedy, keep trying till we get a match:
- BidiIterator save_pos;
- do
- {
- while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
- {
- if((traits_inst.translate(*position, icase) == what))
- {
- ++position;
- ++count;
- }
- else
- return false; // counldn't repeat even though it was the only option
- }
- if((rep->leading) && (rep->max == UINT_MAX))
- restart = position;
- pstate = rep->alt.p;
- save_pos = position;
- ++state_count;
- if(match_all_states())
- return true;
- if(count >= rep->max)
- return false;
- position = save_pos;
- if(position == last)
- return false;
- if(traits_inst.translate(*position, icase) == what)
- {
- ++position;
- ++count;
- }
- else
- {
- return false;
- }
- }while(true);
-#ifdef __BORLANDC__
-#pragma option pop
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
-#ifdef __BORLANDC__
-#pragma option push -w-8008 -w-8066 -w-8004
-#endif
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map;
- unsigned count = 0;
- //
- // start by working out how much we can skip:
- //
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- std::size_t desired = greedy ? rep->max : rep->min;
- if(::cutl_details_boost::is_random_access_iterator<BidiIterator>::value)
- {
- BidiIterator end = position;
- std::advance(end, (std::min)((std::size_t)::cutl_details_boost::re_detail::distance(position, last), desired));
- BidiIterator origin(position);
- while((position != end) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
- {
- ++position;
- }
- count = (unsigned)::cutl_details_boost::re_detail::distance(origin, position);
- }
- else
- {
- while((count < desired) && (position != last) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
- {
- ++position;
- ++count;
- }
- }
- if((rep->leading) && (count < rep->max) && greedy)
- restart = position;
- if(count < rep->min)
- return false;
-
- if(greedy)
- return backtrack_till_match(count - rep->min);
-
- // non-greedy, keep trying till we get a match:
- BidiIterator save_pos;
- do
- {
- while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
- {
- if(map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
- {
- ++position;
- ++count;
- }
- else
- return false; // counldn't repeat even though it was the only option
- }
- if((rep->leading) && (rep->max == UINT_MAX))
- restart = position;
- pstate = rep->alt.p;
- save_pos = position;
- ++state_count;
- if(match_all_states())
- return true;
- if(count >= rep->max)
- return false;
- position = save_pos;
- if(position == last)
- return false;
- if(map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
- {
- ++position;
- ++count;
- }
- else
- {
- return false;
- }
- }while(true);
-#ifdef __BORLANDC__
-#pragma option pop
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat()
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
-#ifdef __BORLANDC__
-#pragma option push -w-8008 -w-8066 -w-8004
-#endif
- typedef typename traits::char_class_type char_class_type;
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- const re_set_long<char_class_type>* set = static_cast<const re_set_long<char_class_type>*>(pstate->next.p);
- unsigned count = 0;
- //
- // start by working out how much we can skip:
- //
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
- std::size_t desired = greedy ? rep->max : rep->min;
- if(::cutl_details_boost::is_random_access_iterator<BidiIterator>::value)
- {
- BidiIterator end = position;
- std::advance(end, (std::min)((std::size_t)::cutl_details_boost::re_detail::distance(position, last), desired));
- BidiIterator origin(position);
- while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
- {
- ++position;
- }
- count = (unsigned)::cutl_details_boost::re_detail::distance(origin, position);
- }
- else
- {
- while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
- {
- ++position;
- ++count;
- }
- }
- if((rep->leading) && (count < rep->max) && greedy)
- restart = position;
- if(count < rep->min)
- return false;
-
- if(greedy)
- return backtrack_till_match(count - rep->min);
-
- // non-greedy, keep trying till we get a match:
- BidiIterator save_pos;
- do
- {
- while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
- {
- if(position != re_is_set_member(position, last, set, re.get_data(), icase))
- {
- ++position;
- ++count;
- }
- else
- return false; // counldn't repeat even though it was the only option
- }
- if((rep->leading) && (rep->max == UINT_MAX))
- restart = position;
- pstate = rep->alt.p;
- save_pos = position;
- ++state_count;
- if(match_all_states())
- return true;
- if(count >= rep->max)
- return false;
- position = save_pos;
- if(position == last)
- return false;
- if(position != re_is_set_member(position, last, set, re.get_data(), icase))
- {
- ++position;
- ++count;
- }
- else
- {
- return false;
- }
- }while(true);
-#ifdef __BORLANDC__
-#pragma option pop
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::backtrack_till_match(std::size_t count)
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- if((m_match_flags & match_partial) && (position == last))
- m_has_partial_match = true;
-
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
- BidiIterator backtrack = position;
- if(position == last)
- {
- if(rep->can_be_null & mask_skip)
- {
- pstate = rep->alt.p;
- if(match_all_states())
- return true;
- }
- if(count)
- {
- position = --backtrack;
- --count;
- }
- else
- return false;
- }
- do
- {
- while(count && !can_start(*position, rep->_map, mask_skip))
- {
- --position;
- --count;
- ++state_count;
- }
- pstate = rep->alt.p;
- backtrack = position;
- if(match_all_states())
- return true;
- if(count == 0)
- return false;
- position = --backtrack;
- ++state_count;
- --count;
- }while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
-{
- BOOST_ASSERT(pstate->type == syntax_element_recurse);
- //
- // Set new call stack:
- //
- if(recursion_stack.capacity() == 0)
- {
- recursion_stack.reserve(50);
- }
- recursion_stack.push_back(recursion_info<results_type>());
- recursion_stack.back().preturn_address = pstate->next.p;
- recursion_stack.back().results = *m_presult;
- recursion_stack.back().repeater_stack = next_count;
- pstate = static_cast<const re_jump*>(pstate)->alt.p;
- recursion_stack.back().idx = static_cast<const re_brace*>(pstate)->index;
-
- repeater_count<BidiIterator>* saved = next_count;
- repeater_count<BidiIterator> r(&next_count); // resets all repeat counts since we're recursing and starting fresh on those
- next_count = &r;
- bool result = match_all_states();
- next_count = saved;
-
- if(!result)
- {
- next_count = recursion_stack.back().repeater_stack;
- *m_presult = recursion_stack.back().results;
- recursion_stack.pop_back();
- return false;
- }
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark()
-{
- int index = static_cast<const re_brace*>(pstate)->index;
- icase = static_cast<const re_brace*>(pstate)->icase;
- if(index > 0)
- {
- if((m_match_flags & match_nosubs) == 0)
- {
- m_presult->set_second(position, index);
- }
- if(!recursion_stack.empty())
- {
- if(index == recursion_stack.back().idx)
- {
- recursion_info<results_type> saved = recursion_stack.back();
- recursion_stack.pop_back();
- pstate = saved.preturn_address;
- repeater_count<BidiIterator>* saved_count = next_count;
- next_count = saved.repeater_stack;
- *m_presult = saved.results;
- if(!match_all_states())
- {
- recursion_stack.push_back(saved);
- next_count = saved_count;
- return false;
- }
- }
- }
- }
- else if((index < 0) && (index != -4))
- {
- // matched forward lookahead:
- pstate = 0;
- return true;
- }
- pstate = pstate ? pstate->next.p : 0;
- return true;
-}
-
-template <class BidiIterator, class Allocator, class traits>
-bool perl_matcher<BidiIterator, Allocator, traits>::match_match()
-{
- if(!recursion_stack.empty())
- {
- BOOST_ASSERT(0 == recursion_stack.back().idx);
- const re_syntax_base* saved_state = pstate = recursion_stack.back().preturn_address;
- *m_presult = recursion_stack.back().results;
- recursion_stack.pop_back();
- if(!match_all_states())
- {
- recursion_stack.push_back(recursion_info<results_type>());
- recursion_stack.back().preturn_address = saved_state;
- recursion_stack.back().results = *m_presult;
- return false;
- }
- return true;
- }
- if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first))
- return false;
- if((m_match_flags & match_all) && (position != last))
- return false;
- if((m_match_flags & regex_constants::match_not_initial_null) && (position == search_base))
- return false;
- m_presult->set_second(position);
- pstate = 0;
- m_has_found_match = true;
- if((m_match_flags & match_posix) == match_posix)
- {
- m_result.maybe_assign(*m_presult);
- if((m_match_flags & match_any) == 0)
- return false;
- }
-#ifdef BOOST_REGEX_MATCH_EXTRA
- if(match_extra & m_match_flags)
- {
- for(unsigned i = 0; i < m_presult->size(); ++i)
- if((*m_presult)[i].matched)
- ((*m_presult)[i]).get_captures().push_back((*m_presult)[i]);
- }
-#endif
- return true;
-}
-
-
-
-} // namespace re_detail
-} // namespace cutl_details_boost
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/v4/primary_transform.hpp b/libcutl/cutl/details/boost/regex/v4/primary_transform.hpp
deleted file mode 100644
index ae59e5b..0000000
--- a/libcutl/cutl/details/boost/regex/v4/primary_transform.hpp
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE: primary_transform.hpp
- * VERSION: see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Heuristically determines the sort string format in use
- * by the current locale.
- */
-
-#ifndef BOOST_REGEX_PRIMARY_TRANSFORM
-#define BOOST_REGEX_PRIMARY_TRANSFORM
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
- namespace re_detail{
-
-
-enum{
- sort_C,
- sort_fixed,
- sort_delim,
- sort_unknown
-};
-
-template <class S, class charT>
-unsigned count_chars(const S& s, charT c)
-{
- //
- // Count how many occurances of character c occur
- // in string s: if c is a delimeter between collation
- // fields, then this should be the same value for all
- // sort keys:
- //
- unsigned int count = 0;
- for(unsigned pos = 0; pos < s.size(); ++pos)
- {
- if(s[pos] == c) ++count;
- }
- return count;
-}
-
-
-template <class traits, class charT>
-unsigned find_sort_syntax(const traits* pt, charT* delim)
-{
- //
- // compare 'a' with 'A' to see how similar they are,
- // should really use a-accute but we can't portably do that,
- //
- typedef typename traits::string_type string_type;
- typedef typename traits::char_type char_type;
-
- // Suppress incorrect warning for MSVC
- (void)pt;
-
- char_type a[2] = {'a', '\0', };
- string_type sa(pt->transform(a, a+1));
- if(sa == a)
- {
- *delim = 0;
- return sort_C;
- }
- char_type A[2] = { 'A', '\0', };
- string_type sA(pt->transform(A, A+1));
- char_type c[2] = { ';', '\0', };
- string_type sc(pt->transform(c, c+1));
-
- int pos = 0;
- while((pos <= static_cast<int>(sa.size())) && (pos <= static_cast<int>(sA.size())) && (sa[pos] == sA[pos])) ++pos;
- --pos;
- if(pos < 0)
- {
- *delim = 0;
- return sort_unknown;
- }
- //
- // at this point sa[pos] is either the end of a fixed width field
- // or the character that acts as a delimiter:
- //
- charT maybe_delim = sa[pos];
- if((pos != 0) && (count_chars(sa, maybe_delim) == count_chars(sA, maybe_delim)) && (count_chars(sa, maybe_delim) == count_chars(sc, maybe_delim)))
- {
- *delim = maybe_delim;
- return sort_delim;
- }
- //
- // OK doen't look like a delimiter, try for fixed width field:
- //
- if((sa.size() == sA.size()) && (sa.size() == sc.size()))
- {
- // note assumes that the fixed width field is less than
- // (numeric_limits<charT>::max)(), should be true for all types
- // I can't imagine 127 character fields...
- *delim = static_cast<charT>(++pos);
- return sort_fixed;
- }
- //
- // don't know what it is:
- //
- *delim = 0;
- return sort_unknown;
-}
-
-
- } // namespace re_detail
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/protected_call.hpp b/libcutl/cutl/details/boost/regex/v4/protected_call.hpp
deleted file mode 100644
index fbf2a31..0000000
--- a/libcutl/cutl/details/boost/regex/v4/protected_call.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE basic_regex_creator.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares template class basic_regex_creator which fills in
- * the data members of a regex_data object.
- */
-
-#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP
-#define BOOST_REGEX_V4_PROTECTED_CALL_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-namespace re_detail{
-
-class BOOST_REGEX_DECL abstract_protected_call
-{
-public:
- bool BOOST_REGEX_CALL execute()const;
- // this stops gcc-4 from complaining:
- virtual ~abstract_protected_call(){}
-private:
- virtual bool call()const = 0;
-};
-
-template <class T>
-class concrete_protected_call
- : public abstract_protected_call
-{
-public:
- typedef bool (T::*proc_type)();
- concrete_protected_call(T* o, proc_type p)
- : obj(o), proc(p) {}
-private:
- virtual bool call()const;
- T* obj;
- proc_type proc;
-};
-
-template <class T>
-bool concrete_protected_call<T>::call()const
-{
- return (obj->*proc)();
-}
-
-}
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex/v4/regbase.hpp b/libcutl/cutl/details/boost/regex/v4/regbase.hpp
deleted file mode 100644
index 0c6f7ae..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regbase.hpp
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regbase.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares class regbase.
- */
-
-#ifndef BOOST_REGEX_V4_REGBASE_HPP
-#define BOOST_REGEX_V4_REGBASE_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-//
-// class regbase
-// handles error codes and flags
-//
-class BOOST_REGEX_DECL regbase
-{
-public:
- enum flag_type_
- {
- //
- // Divide the flags up into logical groups:
- // bits 0-7 indicate main synatx type.
- // bits 8-15 indicate syntax subtype.
- // bits 16-31 indicate options that are common to all
- // regex syntaxes.
- // In all cases the default is 0.
- //
- // Main synatx group:
- //
- perl_syntax_group = 0, // default
- basic_syntax_group = 1, // POSIX basic
- literal = 2, // all characters are literals
- main_option_type = literal | basic_syntax_group | perl_syntax_group, // everything!
- //
- // options specific to perl group:
- //
- no_bk_refs = 1 << 8, // \d not allowed
- no_perl_ex = 1 << 9, // disable perl extensions
- no_mod_m = 1 << 10, // disable Perl m modifier
- mod_x = 1 << 11, // Perl x modifier
- mod_s = 1 << 12, // force s modifier on (overrides match_not_dot_newline)
- no_mod_s = 1 << 13, // force s modifier off (overrides match_not_dot_newline)
-
- //
- // options specific to basic group:
- //
- no_char_classes = 1 << 8, // [[:CLASS:]] not allowed
- no_intervals = 1 << 9, // {x,y} not allowed
- bk_plus_qm = 1 << 10, // uses \+ and \?
- bk_vbar = 1 << 11, // use \| for alternatives
- emacs_ex = 1 << 12, // enables emacs extensions
-
- //
- // options common to all groups:
- //
- no_escape_in_lists = 1 << 16, // '\' not special inside [...]
- newline_alt = 1 << 17, // \n is the same as |
- no_except = 1 << 18, // no exception on error
- failbit = 1 << 19, // error flag
- icase = 1 << 20, // characters are matched regardless of case
- nocollate = 0, // don't use locale specific collation (deprecated)
- collate = 1 << 21, // use locale specific collation
- nosubs = 1 << 22, // don't mark sub-expressions
- save_subexpression_location = 1 << 23, // save subexpression locations
- no_empty_expressions = 1 << 24, // no empty expressions allowed
- optimize = 0, // not really supported
-
-
-
- basic = basic_syntax_group | collate | no_escape_in_lists,
- extended = no_bk_refs | collate | no_perl_ex | no_escape_in_lists,
- normal = 0,
- emacs = basic_syntax_group | collate | emacs_ex | bk_vbar,
- awk = no_bk_refs | collate | no_perl_ex,
- grep = basic | newline_alt,
- egrep = extended | newline_alt,
- sed = basic,
- perl = normal,
- ECMAScript = normal,
- JavaScript = normal,
- JScript = normal
- };
- typedef unsigned int flag_type;
-
- enum restart_info
- {
- restart_any = 0,
- restart_word = 1,
- restart_line = 2,
- restart_buf = 3,
- restart_continue = 4,
- restart_lit = 5,
- restart_fixed_lit = 6,
- restart_count = 7
- };
-};
-
-//
-// provide std lib proposal compatible constants:
-//
-namespace regex_constants{
-
- enum flag_type_
- {
-
- no_except = ::cutl_details_boost::regbase::no_except,
- failbit = ::cutl_details_boost::regbase::failbit,
- literal = ::cutl_details_boost::regbase::literal,
- icase = ::cutl_details_boost::regbase::icase,
- nocollate = ::cutl_details_boost::regbase::nocollate,
- collate = ::cutl_details_boost::regbase::collate,
- nosubs = ::cutl_details_boost::regbase::nosubs,
- optimize = ::cutl_details_boost::regbase::optimize,
- bk_plus_qm = ::cutl_details_boost::regbase::bk_plus_qm,
- bk_vbar = ::cutl_details_boost::regbase::bk_vbar,
- no_intervals = ::cutl_details_boost::regbase::no_intervals,
- no_char_classes = ::cutl_details_boost::regbase::no_char_classes,
- no_escape_in_lists = ::cutl_details_boost::regbase::no_escape_in_lists,
- no_mod_m = ::cutl_details_boost::regbase::no_mod_m,
- mod_x = ::cutl_details_boost::regbase::mod_x,
- mod_s = ::cutl_details_boost::regbase::mod_s,
- no_mod_s = ::cutl_details_boost::regbase::no_mod_s,
- save_subexpression_location = ::cutl_details_boost::regbase::save_subexpression_location,
- no_empty_expressions = ::cutl_details_boost::regbase::no_empty_expressions,
-
- basic = ::cutl_details_boost::regbase::basic,
- extended = ::cutl_details_boost::regbase::extended,
- normal = ::cutl_details_boost::regbase::normal,
- emacs = ::cutl_details_boost::regbase::emacs,
- awk = ::cutl_details_boost::regbase::awk,
- grep = ::cutl_details_boost::regbase::grep,
- egrep = ::cutl_details_boost::regbase::egrep,
- sed = basic,
- perl = normal,
- ECMAScript = normal,
- JavaScript = normal,
- JScript = normal
- };
- typedef ::cutl_details_boost::regbase::flag_type syntax_option_type;
-
-} // namespace regex_constants
-
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex.hpp b/libcutl/cutl/details/boost/regex/v4/regex.hpp
deleted file mode 100644
index a442970..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex.hpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares cutl_details_boost::basic_regex<> and associated
- * functions and classes. This header is the main
- * entry point for the template regex code.
- */
-
-#ifndef BOOST_RE_REGEX_HPP_INCLUDED
-#define BOOST_RE_REGEX_HPP_INCLUDED
-
-#ifdef __cplusplus
-
-// what follows is all C++ don't include in C builds!!
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-#ifndef BOOST_REGEX_WORKAROUND_HPP
-#include <cutl/details/boost/regex/v4/regex_workaround.hpp>
-#endif
-
-#ifndef BOOST_REGEX_FWD_HPP
-#include <cutl/details/boost/regex_fwd.hpp>
-#endif
-#ifndef BOOST_REGEX_TRAITS_HPP
-#include <cutl/details/boost/regex/regex_traits.hpp>
-#endif
-#ifndef BOOST_REGEX_RAW_BUFFER_HPP
-#include <cutl/details/boost/regex/v4/error_type.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_MATCH_FLAGS
-#include <cutl/details/boost/regex/v4/match_flags.hpp>
-#endif
-#ifndef BOOST_REGEX_RAW_BUFFER_HPP
-#include <cutl/details/boost/regex/v4/regex_raw_buffer.hpp>
-#endif
-#ifndef BOOST_RE_PAT_EXCEPT_HPP
-#include <cutl/details/boost/regex/pattern_except.hpp>
-#endif
-
-#ifndef BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP
-#include <cutl/details/boost/regex/v4/char_regex_traits.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_STATES_HPP
-#include <cutl/details/boost/regex/v4/states.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_REGBASE_HPP
-#include <cutl/details/boost/regex/v4/regbase.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
-#include <cutl/details/boost/regex/v4/iterator_traits.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP
-#include <cutl/details/boost/regex/v4/basic_regex.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP
-#include <cutl/details/boost/regex/v4/basic_regex_creator.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP
-#include <cutl/details/boost/regex/v4/basic_regex_parser.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_SUB_MATCH_HPP
-#include <cutl/details/boost/regex/v4/sub_match.hpp>
-#endif
-#ifndef BOOST_REGEX_FORMAT_HPP
-#include <cutl/details/boost/regex/v4/regex_format.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_MATCH_RESULTS_HPP
-#include <cutl/details/boost/regex/v4/match_results.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP
-#include <cutl/details/boost/regex/v4/protected_call.hpp>
-#endif
-#ifndef BOOST_REGEX_MATCHER_HPP
-#include <cutl/details/boost/regex/v4/perl_matcher.hpp>
-#endif
-//
-// template instances:
-//
-#define BOOST_REGEX_CHAR_T char
-#ifdef BOOST_REGEX_NARROW_INSTANTIATE
-# define BOOST_REGEX_INSTANTIATE
-#endif
-#include <cutl/details/boost/regex/v4/instances.hpp>
-#undef BOOST_REGEX_CHAR_T
-#ifdef BOOST_REGEX_INSTANTIATE
-# undef BOOST_REGEX_INSTANTIATE
-#endif
-
-#ifndef BOOST_NO_WREGEX
-#define BOOST_REGEX_CHAR_T wchar_t
-#ifdef BOOST_REGEX_WIDE_INSTANTIATE
-# define BOOST_REGEX_INSTANTIATE
-#endif
-#include <cutl/details/boost/regex/v4/instances.hpp>
-#undef BOOST_REGEX_CHAR_T
-#ifdef BOOST_REGEX_INSTANTIATE
-# undef BOOST_REGEX_INSTANTIATE
-#endif
-#endif
-
-#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T)
-#define BOOST_REGEX_CHAR_T unsigned short
-#ifdef BOOST_REGEX_US_INSTANTIATE
-# define BOOST_REGEX_INSTANTIATE
-#endif
-#include <cutl/details/boost/regex/v4/instances.hpp>
-#undef BOOST_REGEX_CHAR_T
-#ifdef BOOST_REGEX_INSTANTIATE
-# undef BOOST_REGEX_INSTANTIATE
-#endif
-#endif
-
-
-namespace cutl_details_boost{
-#ifdef BOOST_REGEX_NO_FWD
-typedef basic_regex<char, regex_traits<char> > regex;
-#ifndef BOOST_NO_WREGEX
-typedef basic_regex<wchar_t, regex_traits<wchar_t> > wregex;
-#endif
-#endif
-
-typedef match_results<const char*> cmatch;
-typedef match_results<std::string::const_iterator> smatch;
-#ifndef BOOST_NO_WREGEX
-typedef match_results<const wchar_t*> wcmatch;
-typedef match_results<std::wstring::const_iterator> wsmatch;
-#endif
-
-} // namespace cutl_details_boost
-#ifndef BOOST_REGEX_MATCH_HPP
-#include <cutl/details/boost/regex/v4/regex_match.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_REGEX_SEARCH_HPP
-#include <cutl/details/boost/regex/v4/regex_search.hpp>
-#endif
-#ifndef BOOST_REGEX_ITERATOR_HPP
-#include <cutl/details/boost/regex/v4/regex_iterator.hpp>
-#endif
-#ifndef BOOST_REGEX_TOKEN_ITERATOR_HPP
-#include <cutl/details/boost/regex/v4/regex_token_iterator.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_REGEX_GREP_HPP
-#include <cutl/details/boost/regex/v4/regex_grep.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP
-#include <cutl/details/boost/regex/v4/regex_replace.hpp>
-#endif
-#ifndef BOOST_REGEX_V4_REGEX_MERGE_HPP
-#include <cutl/details/boost/regex/v4/regex_merge.hpp>
-#endif
-#ifndef BOOST_REGEX_SPLIT_HPP
-#include <cutl/details/boost/regex/v4/regex_split.hpp>
-#endif
-
-#endif // __cplusplus
-
-#endif // include
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_format.hpp b/libcutl/cutl/details/boost/regex/v4/regex_format.hpp
deleted file mode 100644
index c4a60f9..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_format.hpp
+++ /dev/null
@@ -1,1156 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2009 John Maddock
- * Copyright 2008 Eric Niebler.
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_format.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Provides formatting output routines for search and replace
- * operations. Note this is an internal header file included
- * by regex.hpp, do not include on its own.
- */
-
-#ifndef BOOST_REGEX_FORMAT_HPP
-#define BOOST_REGEX_FORMAT_HPP
-
-#include <cutl/details/boost/type_traits/is_pointer.hpp>
-#include <cutl/details/boost/type_traits/is_function.hpp>
-#include <cutl/details/boost/type_traits/is_class.hpp>
-#include <cutl/details/boost/type_traits/is_same.hpp>
-#include <cutl/details/boost/type_traits/is_convertible.hpp>
-#include <cutl/details/boost/type_traits/remove_pointer.hpp>
-#include <cutl/details/boost/type_traits/remove_cv.hpp>
-#include <cutl/details/boost/mpl/if.hpp>
-#include <cutl/details/boost/mpl/and.hpp>
-#include <cutl/details/boost/mpl/not.hpp>
-#ifndef BOOST_NO_SFINAE
-#include <cutl/details/boost/mpl/has_xxx.hpp>
-#endif
-#include <cutl/details/boost/ref.hpp>
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-//
-// Forward declaration:
-//
- template <class BidiIterator, class Allocator = BOOST_DEDUCED_TYPENAME std::vector<sub_match<BidiIterator> >::allocator_type >
-class match_results;
-
-namespace re_detail{
-
-//
-// struct trivial_format_traits:
-// defines minimum localisation support for formatting
-// in the case that the actual regex traits is unavailable.
-//
-template <class charT>
-struct trivial_format_traits
-{
- typedef charT char_type;
-
- static std::ptrdiff_t length(const charT* p)
- {
- return global_length(p);
- }
- static charT tolower(charT c)
- {
- return ::cutl_details_boost::re_detail::global_lower(c);
- }
- static charT toupper(charT c)
- {
- return ::cutl_details_boost::re_detail::global_upper(c);
- }
- static int value(const charT c, int radix)
- {
- int result = global_value(c);
- return result >= radix ? -1 : result;
- }
- int toi(const charT*& p1, const charT* p2, int radix)const
- {
- return global_toi(p1, p2, radix, *this);
- }
-};
-
-template <class OutputIterator, class Results, class traits, class ForwardIter>
-class basic_regex_formatter
-{
-public:
- typedef typename traits::char_type char_type;
- basic_regex_formatter(OutputIterator o, const Results& r, const traits& t)
- : m_traits(t), m_results(r), m_out(o), m_state(output_copy), m_restore_state(output_copy), m_have_conditional(false) {}
- OutputIterator format(ForwardIter p1, ForwardIter p2, match_flag_type f);
- OutputIterator format(ForwardIter p1, match_flag_type f)
- {
- return format(p1, p1 + m_traits.length(p1), f);
- }
-private:
- typedef typename Results::value_type sub_match_type;
- enum output_state
- {
- output_copy,
- output_next_lower,
- output_next_upper,
- output_lower,
- output_upper,
- output_none
- };
-
- void put(char_type c);
- void put(const sub_match_type& sub);
- void format_all();
- void format_perl();
- void format_escape();
- void format_conditional();
- void format_until_scope_end();
- bool handle_perl_verb(bool have_brace);
-
- inline typename Results::value_type const& get_named_sub(ForwardIter i, ForwardIter j, const mpl::false_&)
- {
- std::vector<char_type> v(i, j);
- return (i != j) ? this->m_results.named_subexpression(&v[0], &v[0] + v.size())
- : this->m_results.named_subexpression(static_cast<const char_type*>(0), static_cast<const char_type*>(0));
- }
- inline typename Results::value_type const& get_named_sub(ForwardIter i, ForwardIter j, const mpl::true_&)
- {
- return this->m_results.named_subexpression(i, j);
- }
- inline typename Results::value_type const& get_named_sub(ForwardIter i, ForwardIter j)
- {
- typedef typename cutl_details_boost::is_convertible<ForwardIter, const char_type*>::type tag_type;
- return get_named_sub(i, j, tag_type());
- }
- inline int get_named_sub_index(ForwardIter i, ForwardIter j, const mpl::false_&)
- {
- std::vector<char_type> v(i, j);
- return (i != j) ? this->m_results.named_subexpression_index(&v[0], &v[0] + v.size())
- : this->m_results.named_subexpression_index(static_cast<const char_type*>(0), static_cast<const char_type*>(0));
- }
- inline int get_named_sub_index(ForwardIter i, ForwardIter j, const mpl::true_&)
- {
- return this->m_results.named_subexpression_index(i, j);
- }
- inline int get_named_sub_index(ForwardIter i, ForwardIter j)
- {
- typedef typename cutl_details_boost::is_convertible<ForwardIter, const char_type*>::type tag_type;
- return get_named_sub_index(i, j, tag_type());
- }
-#ifdef BOOST_MSVC
- // msvc-8.0 issues a spurious warning on the call to std::advance here:
-#pragma warning(push)
-#pragma warning(disable:4244)
-#endif
- inline int toi(ForwardIter& i, ForwardIter j, int base, const cutl_details_boost::mpl::false_&)
- {
- if(i != j)
- {
- std::vector<char_type> v(i, j);
- const char_type* start = &v[0];
- const char_type* pos = start;
- int r = m_traits.toi(pos, &v[0] + v.size(), base);
- std::advance(i, pos - start);
- return r;
- }
- return -1;
- }
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
- inline int toi(ForwardIter& i, ForwardIter j, int base, const cutl_details_boost::mpl::true_&)
- {
- return m_traits.toi(i, j, base);
- }
- inline int toi(ForwardIter& i, ForwardIter j, int base)
- {
-#if defined(_MSC_VER) && defined(__INTEL_COMPILER) && ((__INTEL_COMPILER == 9999) || (__INTEL_COMPILER == 1210))
- // Workaround for Intel support issue #656654.
- // See also https://svn.boost.org/trac/boost/ticket/6359
- return toi(i, j, base, mpl::false_());
-#else
- typedef typename cutl_details_boost::is_convertible<ForwardIter, const char_type*&>::type tag_type;
- return toi(i, j, base, tag_type());
-#endif
- }
-
- const traits& m_traits; // the traits class for localised formatting operations
- const Results& m_results; // the match_results being used.
- OutputIterator m_out; // where to send output.
- ForwardIter m_position; // format string, current position
- ForwardIter m_end; // format string end
- match_flag_type m_flags; // format flags to use
- output_state m_state; // what to do with the next character
- output_state m_restore_state; // what state to restore to.
- bool m_have_conditional; // we are parsing a conditional
-private:
- basic_regex_formatter(const basic_regex_formatter&);
- basic_regex_formatter& operator=(const basic_regex_formatter&);
-};
-
-template <class OutputIterator, class Results, class traits, class ForwardIter>
-OutputIterator basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format(ForwardIter p1, ForwardIter p2, match_flag_type f)
-{
- m_position = p1;
- m_end = p2;
- m_flags = f;
- format_all();
- return m_out;
-}
-
-template <class OutputIterator, class Results, class traits, class ForwardIter>
-void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format_all()
-{
- // over and over:
- while(m_position != m_end)
- {
- switch(*m_position)
- {
- case '&':
- if(m_flags & ::cutl_details_boost::regex_constants::format_sed)
- {
- ++m_position;
- put(m_results[0]);
- break;
- }
- put(*m_position++);
- break;
- case '\\':
- format_escape();
- break;
- case '(':
- if(m_flags & cutl_details_boost::regex_constants::format_all)
- {
- ++m_position;
- bool have_conditional = m_have_conditional;
- m_have_conditional = false;
- format_until_scope_end();
- m_have_conditional = have_conditional;
- if(m_position == m_end)
- return;
- BOOST_ASSERT(*m_position == static_cast<char_type>(')'));
- ++m_position; // skip the closing ')'
- break;
- }
- put(*m_position);
- ++m_position;
- break;
- case ')':
- if(m_flags & cutl_details_boost::regex_constants::format_all)
- {
- return;
- }
- put(*m_position);
- ++m_position;
- break;
- case ':':
- if((m_flags & cutl_details_boost::regex_constants::format_all) && m_have_conditional)
- {
- return;
- }
- put(*m_position);
- ++m_position;
- break;
- case '?':
- if(m_flags & cutl_details_boost::regex_constants::format_all)
- {
- ++m_position;
- format_conditional();
- break;
- }
- put(*m_position);
- ++m_position;
- break;
- case '$':
- if((m_flags & format_sed) == 0)
- {
- format_perl();
- break;
- }
- // not a special character:
- BOOST_FALLTHROUGH;
- default:
- put(*m_position);
- ++m_position;
- break;
- }
- }
-}
-
-template <class OutputIterator, class Results, class traits, class ForwardIter>
-void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format_perl()
-{
- //
- // On entry *m_position points to a '$' character
- // output the information that goes with it:
- //
- BOOST_ASSERT(*m_position == '$');
- //
- // see if this is a trailing '$':
- //
- if(++m_position == m_end)
- {
- --m_position;
- put(*m_position);
- ++m_position;
- return;
- }
- //
- // OK find out what kind it is:
- //
- bool have_brace = false;
- ForwardIter save_position = m_position;
- switch(*m_position)
- {
- case '&':
- ++m_position;
- put(this->m_results[0]);
- break;
- case '`':
- ++m_position;
- put(this->m_results.prefix());
- break;
- case '\'':
- ++m_position;
- put(this->m_results.suffix());
- break;
- case '$':
- put(*m_position++);
- break;
- case '+':
- if((++m_position != m_end) && (*m_position == '{'))
- {
- ForwardIter base = ++m_position;
- while((m_position != m_end) && (*m_position != '}')) ++m_position;
- if(m_position != m_end)
- {
- // Named sub-expression:
- put(get_named_sub(base, m_position));
- ++m_position;
- break;
- }
- else
- {
- m_position = --base;
- }
- }
- put((this->m_results)[this->m_results.size() > 1 ? static_cast<int>(this->m_results.size() - 1) : 1]);
- break;
- case '{':
- have_brace = true;
- ++m_position;
- BOOST_FALLTHROUGH;
- default:
- // see if we have a number:
- {
- std::ptrdiff_t len = ::cutl_details_boost::re_detail::distance(m_position, m_end);
- //len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
- int v = this->toi(m_position, m_position + len, 10);
- if((v < 0) || (have_brace && ((m_position == m_end) || (*m_position != '}'))))
- {
- // Look for a Perl-5.10 verb:
- if(!handle_perl_verb(have_brace))
- {
- // leave the $ as is, and carry on:
- m_position = --save_position;
- put(*m_position);
- ++m_position;
- }
- break;
- }
- // otherwise output sub v:
- put(this->m_results[v]);
- if(have_brace)
- ++m_position;
- }
- }
-}
-
-template <class OutputIterator, class Results, class traits, class ForwardIter>
-bool basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::handle_perl_verb(bool have_brace)
-{
- //
- // We may have a capitalised string containing a Perl action:
- //
- static const char_type MATCH[] = { 'M', 'A', 'T', 'C', 'H' };
- static const char_type PREMATCH[] = { 'P', 'R', 'E', 'M', 'A', 'T', 'C', 'H' };
- static const char_type POSTMATCH[] = { 'P', 'O', 'S', 'T', 'M', 'A', 'T', 'C', 'H' };
- static const char_type LAST_PAREN_MATCH[] = { 'L', 'A', 'S', 'T', '_', 'P', 'A', 'R', 'E', 'N', '_', 'M', 'A', 'T', 'C', 'H' };
- static const char_type LAST_SUBMATCH_RESULT[] = { 'L', 'A', 'S', 'T', '_', 'S', 'U', 'B', 'M', 'A', 'T', 'C', 'H', '_', 'R', 'E', 'S', 'U', 'L', 'T' };
- static const char_type LAST_SUBMATCH_RESULT_ALT[] = { '^', 'N' };
-
- if(m_position == m_end)
- return false;
- if(have_brace && (*m_position == '^'))
- ++m_position;
-
- std::ptrdiff_t max_len = m_end - m_position;
-
- if((max_len >= 5) && std::equal(m_position, m_position + 5, MATCH))
- {
- m_position += 5;
- if(have_brace)
- {
- if((m_position != m_end) && (*m_position == '}'))
- ++m_position;
- else
- {
- m_position -= 5;
- return false;
- }
- }
- put(this->m_results[0]);
- return true;
- }
- if((max_len >= 8) && std::equal(m_position, m_position + 8, PREMATCH))
- {
- m_position += 8;
- if(have_brace)
- {
- if((m_position != m_end) && (*m_position == '}'))
- ++m_position;
- else
- {
- m_position -= 8;
- return false;
- }
- }
- put(this->m_results.prefix());
- return true;
- }
- if((max_len >= 9) && std::equal(m_position, m_position + 9, POSTMATCH))
- {
- m_position += 9;
- if(have_brace)
- {
- if((m_position != m_end) && (*m_position == '}'))
- ++m_position;
- else
- {
- m_position -= 9;
- return false;
- }
- }
- put(this->m_results.suffix());
- return true;
- }
- if((max_len >= 16) && std::equal(m_position, m_position + 16, LAST_PAREN_MATCH))
- {
- m_position += 16;
- if(have_brace)
- {
- if((m_position != m_end) && (*m_position == '}'))
- ++m_position;
- else
- {
- m_position -= 16;
- return false;
- }
- }
- put((this->m_results)[this->m_results.size() > 1 ? static_cast<int>(this->m_results.size() - 1) : 1]);
- return true;
- }
- if((max_len >= 20) && std::equal(m_position, m_position + 20, LAST_SUBMATCH_RESULT))
- {
- m_position += 20;
- if(have_brace)
- {
- if((m_position != m_end) && (*m_position == '}'))
- ++m_position;
- else
- {
- m_position -= 20;
- return false;
- }
- }
- put(this->m_results.get_last_closed_paren());
- return true;
- }
- if((max_len >= 2) && std::equal(m_position, m_position + 2, LAST_SUBMATCH_RESULT_ALT))
- {
- m_position += 2;
- if(have_brace)
- {
- if((m_position != m_end) && (*m_position == '}'))
- ++m_position;
- else
- {
- m_position -= 2;
- return false;
- }
- }
- put(this->m_results.get_last_closed_paren());
- return true;
- }
- return false;
-}
-
-template <class OutputIterator, class Results, class traits, class ForwardIter>
-void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format_escape()
-{
- // skip the escape and check for trailing escape:
- if(++m_position == m_end)
- {
- put(static_cast<char_type>('\\'));
- return;
- }
- // now switch on the escape type:
- switch(*m_position)
- {
- case 'a':
- put(static_cast<char_type>('\a'));
- ++m_position;
- break;
- case 'f':
- put(static_cast<char_type>('\f'));
- ++m_position;
- break;
- case 'n':
- put(static_cast<char_type>('\n'));
- ++m_position;
- break;
- case 'r':
- put(static_cast<char_type>('\r'));
- ++m_position;
- break;
- case 't':
- put(static_cast<char_type>('\t'));
- ++m_position;
- break;
- case 'v':
- put(static_cast<char_type>('\v'));
- ++m_position;
- break;
- case 'x':
- if(++m_position == m_end)
- {
- put(static_cast<char_type>('x'));
- return;
- }
- // maybe have \x{ddd}
- if(*m_position == static_cast<char_type>('{'))
- {
- ++m_position;
- int val = this->toi(m_position, m_end, 16);
- if(val < 0)
- {
- // invalid value treat everything as literals:
- put(static_cast<char_type>('x'));
- put(static_cast<char_type>('{'));
- return;
- }
- if((m_position == m_end) || (*m_position != static_cast<char_type>('}')))
- {
- --m_position;
- while(*m_position != static_cast<char_type>('\\'))
- --m_position;
- ++m_position;
- put(*m_position++);
- return;
- }
- ++m_position;
- put(static_cast<char_type>(val));
- return;
- }
- else
- {
- std::ptrdiff_t len = ::cutl_details_boost::re_detail::distance(m_position, m_end);
- len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
- int val = this->toi(m_position, m_position + len, 16);
- if(val < 0)
- {
- --m_position;
- put(*m_position++);
- return;
- }
- put(static_cast<char_type>(val));
- }
- break;
- case 'c':
- if(++m_position == m_end)
- {
- --m_position;
- put(*m_position++);
- return;
- }
- put(static_cast<char_type>(*m_position++ % 32));
- break;
- case 'e':
- put(static_cast<char_type>(27));
- ++m_position;
- break;
- default:
- // see if we have a perl specific escape:
- if((m_flags & cutl_details_boost::regex_constants::format_sed) == 0)
- {
- bool breakout = false;
- switch(*m_position)
- {
- case 'l':
- ++m_position;
- m_restore_state = m_state;
- m_state = output_next_lower;
- breakout = true;
- break;
- case 'L':
- ++m_position;
- m_state = output_lower;
- breakout = true;
- break;
- case 'u':
- ++m_position;
- m_restore_state = m_state;
- m_state = output_next_upper;
- breakout = true;
- break;
- case 'U':
- ++m_position;
- m_state = output_upper;
- breakout = true;
- break;
- case 'E':
- ++m_position;
- m_state = output_copy;
- breakout = true;
- break;
- }
- if(breakout)
- break;
- }
- // see if we have a \n sed style backreference:
- std::ptrdiff_t len = ::cutl_details_boost::re_detail::distance(m_position, m_end);
- len = (std::min)(static_cast<std::ptrdiff_t>(1), len);
- int v = this->toi(m_position, m_position+len, 10);
- if((v > 0) || ((v == 0) && (m_flags & ::cutl_details_boost::regex_constants::format_sed)))
- {
- put(m_results[v]);
- break;
- }
- else if(v == 0)
- {
- // octal ecape sequence:
- --m_position;
- len = ::cutl_details_boost::re_detail::distance(m_position, m_end);
- len = (std::min)(static_cast<std::ptrdiff_t>(4), len);
- v = this->toi(m_position, m_position + len, 8);
- BOOST_ASSERT(v >= 0);
- put(static_cast<char_type>(v));
- break;
- }
- // Otherwise output the character "as is":
- put(*m_position++);
- break;
- }
-}
-
-template <class OutputIterator, class Results, class traits, class ForwardIter>
-void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format_conditional()
-{
- if(m_position == m_end)
- {
- // oops trailing '?':
- put(static_cast<char_type>('?'));
- return;
- }
- int v;
- if(*m_position == '{')
- {
- ForwardIter base = m_position;
- ++m_position;
- v = this->toi(m_position, m_end, 10);
- if(v < 0)
- {
- // Try a named subexpression:
- while((m_position != m_end) && (*m_position != '}'))
- ++m_position;
- v = this->get_named_sub_index(base + 1, m_position);
- }
- if((v < 0) || (*m_position != '}'))
- {
- m_position = base;
- // oops trailing '?':
- put(static_cast<char_type>('?'));
- return;
- }
- // Skip trailing '}':
- ++m_position;
- }
- else
- {
- std::ptrdiff_t len = ::cutl_details_boost::re_detail::distance(m_position, m_end);
- len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
- v = this->toi(m_position, m_position + len, 10);
- }
- if(v < 0)
- {
- // oops not a number:
- put(static_cast<char_type>('?'));
- return;
- }
-
- // output varies depending upon whether sub-expression v matched or not:
- if(m_results[v].matched)
- {
- m_have_conditional = true;
- format_all();
- m_have_conditional = false;
- if((m_position != m_end) && (*m_position == static_cast<char_type>(':')))
- {
- // skip the ':':
- ++m_position;
- // save output state, then turn it off:
- output_state saved_state = m_state;
- m_state = output_none;
- // format the rest of this scope:
- format_until_scope_end();
- // restore output state:
- m_state = saved_state;
- }
- }
- else
- {
- // save output state, then turn it off:
- output_state saved_state = m_state;
- m_state = output_none;
- // format until ':' or ')':
- m_have_conditional = true;
- format_all();
- m_have_conditional = false;
- // restore state:
- m_state = saved_state;
- if((m_position != m_end) && (*m_position == static_cast<char_type>(':')))
- {
- // skip the ':':
- ++m_position;
- // format the rest of this scope:
- format_until_scope_end();
- }
- }
-}
-
-template <class OutputIterator, class Results, class traits, class ForwardIter>
-void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format_until_scope_end()
-{
- do
- {
- format_all();
- if((m_position == m_end) || (*m_position == static_cast<char_type>(')')))
- return;
- put(*m_position++);
- }while(m_position != m_end);
-}
-
-template <class OutputIterator, class Results, class traits, class ForwardIter>
-void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::put(char_type c)
-{
- // write a single character to output
- // according to which case translation mode we are in:
- switch(this->m_state)
- {
- case output_none:
- return;
- case output_next_lower:
- c = m_traits.tolower(c);
- this->m_state = m_restore_state;
- break;
- case output_next_upper:
- c = m_traits.toupper(c);
- this->m_state = m_restore_state;
- break;
- case output_lower:
- c = m_traits.tolower(c);
- break;
- case output_upper:
- c = m_traits.toupper(c);
- break;
- default:
- break;
- }
- *m_out = c;
- ++m_out;
-}
-
-template <class OutputIterator, class Results, class traits, class ForwardIter>
-void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::put(const sub_match_type& sub)
-{
- typedef typename sub_match_type::iterator iterator_type;
- iterator_type i = sub.first;
- while(i != sub.second)
- {
- put(*i);
- ++i;
- }
-}
-
-template <class S>
-class string_out_iterator
-#ifndef BOOST_NO_STD_ITERATOR
- : public std::iterator<std::output_iterator_tag, typename S::value_type>
-#endif
-{
- S* out;
-public:
- string_out_iterator(S& s) : out(&s) {}
- string_out_iterator& operator++() { return *this; }
- string_out_iterator& operator++(int) { return *this; }
- string_out_iterator& operator*() { return *this; }
- string_out_iterator& operator=(typename S::value_type v)
- {
- out->append(1, v);
- return *this;
- }
-
-#ifdef BOOST_NO_STD_ITERATOR
- typedef std::ptrdiff_t difference_type;
- typedef typename S::value_type value_type;
- typedef value_type* pointer;
- typedef value_type& reference;
- typedef std::output_iterator_tag iterator_category;
-#endif
-};
-
-template <class OutputIterator, class Iterator, class Alloc, class ForwardIter, class traits>
-OutputIterator regex_format_imp(OutputIterator out,
- const match_results<Iterator, Alloc>& m,
- ForwardIter p1, ForwardIter p2,
- match_flag_type flags,
- const traits& t
- )
-{
- if(flags & regex_constants::format_literal)
- {
- return re_detail::copy(p1, p2, out);
- }
-
- re_detail::basic_regex_formatter<
- OutputIterator,
- match_results<Iterator, Alloc>,
- traits, ForwardIter> f(out, m, t);
- return f.format(p1, p2, flags);
-}
-
-#ifndef BOOST_NO_SFINAE
-
-BOOST_MPL_HAS_XXX_TRAIT_DEF(const_iterator)
-
-struct any_type
-{
- template <class T>
- any_type(const T&);
- template <class T, class U>
- any_type(const T&, const U&);
- template <class T, class U, class V>
- any_type(const T&, const U&, const V&);
-};
-typedef char no_type;
-typedef char (&unary_type)[2];
-typedef char (&binary_type)[3];
-typedef char (&ternary_type)[4];
-
-no_type check_is_formatter(unary_type, binary_type, ternary_type);
-template<typename T>
-unary_type check_is_formatter(T const &, binary_type, ternary_type);
-template<typename T>
-binary_type check_is_formatter(unary_type, T const &, ternary_type);
-template<typename T, typename U>
-binary_type check_is_formatter(T const &, U const &, ternary_type);
-template<typename T>
-ternary_type check_is_formatter(unary_type, binary_type, T const &);
-template<typename T, typename U>
-ternary_type check_is_formatter(T const &, binary_type, U const &);
-template<typename T, typename U>
-ternary_type check_is_formatter(unary_type, T const &, U const &);
-template<typename T, typename U, typename V>
-ternary_type check_is_formatter(T const &, U const &, V const &);
-
-struct unary_binary_ternary
-{
- typedef unary_type (*unary_fun)(any_type);
- typedef binary_type (*binary_fun)(any_type, any_type);
- typedef ternary_type (*ternary_fun)(any_type, any_type, any_type);
- operator unary_fun();
- operator binary_fun();
- operator ternary_fun();
-};
-
-template<typename Formatter, bool IsFunction = cutl_details_boost::is_function<Formatter>::value>
-struct formatter_wrapper
- : Formatter
- , unary_binary_ternary
-{
- formatter_wrapper(){}
-};
-
-template<typename Formatter>
-struct formatter_wrapper<Formatter, true>
- : unary_binary_ternary
-{
- operator Formatter *();
-};
-
-template<typename Formatter>
-struct formatter_wrapper<Formatter *, false>
- : unary_binary_ternary
-{
- operator Formatter *();
-};
-
-template <class F, class M, class O>
-struct format_traits_imp
-{
-private:
- //
- // F must be a pointer, a function, or a class with a function call operator:
- //
- BOOST_STATIC_ASSERT((::cutl_details_boost::is_pointer<F>::value || ::cutl_details_boost::is_function<F>::value || ::cutl_details_boost::is_class<F>::value));
- static formatter_wrapper<typename unwrap_reference<F>::type> f;
- static M m;
- static O out;
- static cutl_details_boost::regex_constants::match_flag_type flags;
-public:
- BOOST_STATIC_CONSTANT(int, value = sizeof(check_is_formatter(f(m), f(m, out), f(m, out, flags))));
-};
-
-template <class F, class M, class O>
-struct format_traits
-{
-public:
- //
- // Type is mpl::int_<N> where N is one of:
- //
- // 0 : F is a pointer to a presumably null-terminated string.
- // 1 : F is a character-container such as a std::string.
- // 2 : F is a Unary Functor.
- // 3 : F is a Binary Functor.
- // 4 : F is a Ternary Functor.
- //
- typedef typename cutl_details_boost::mpl::if_<
- cutl_details_boost::mpl::and_<cutl_details_boost::is_pointer<F>, cutl_details_boost::mpl::not_<cutl_details_boost::is_function<typename cutl_details_boost::remove_pointer<F>::type> > >,
- cutl_details_boost::mpl::int_<0>,
- typename cutl_details_boost::mpl::if_<
- has_const_iterator<F>,
- cutl_details_boost::mpl::int_<1>,
- cutl_details_boost::mpl::int_<format_traits_imp<F, M, O>::value>
- >::type
- >::type type;
- //
- // This static assertion will fail if the functor passed does not accept
- // the same type of arguments passed.
- //
- BOOST_STATIC_ASSERT( cutl_details_boost::is_class<F>::value && !has_const_iterator<F>::value ? (type::value > 1) : true);
-};
-
-#else // BOOST_NO_SFINAE
-
-template <class F, class M, class O>
-struct format_traits
-{
-public:
- //
- // Type is mpl::int_<N> where N is one of:
- //
- // 0 : F is a pointer to a presumably null-terminated string.
- // 1 : F is a character-container such as a std::string.
- //
- // Other options such as F being a Functor are not supported without
- // SFINAE support.
- //
- typedef typename cutl_details_boost::mpl::if_<
- cutl_details_boost::is_pointer<F>,
- cutl_details_boost::mpl::int_<0>,
- cutl_details_boost::mpl::int_<1>
- >::type type;
-};
-
-#endif // BOOST_NO_SFINAE
-
-template <class Base, class Match>
-struct format_functor3
-{
- format_functor3(Base b) : func(b) {}
- template <class OutputIter>
- OutputIter operator()(const Match& m, OutputIter i, cutl_details_boost::regex_constants::match_flag_type f)
- {
- return cutl_details_boost::unwrap_ref(func)(m, i, f);
- }
- template <class OutputIter, class Traits>
- OutputIter operator()(const Match& m, OutputIter i, cutl_details_boost::regex_constants::match_flag_type f, const Traits&)
- {
- return (*this)(m, i, f);
- }
-private:
- Base func;
- format_functor3(const format_functor3&);
- format_functor3& operator=(const format_functor3&);
-};
-
-template <class Base, class Match>
-struct format_functor2
-{
- format_functor2(Base b) : func(b) {}
- template <class OutputIter>
- OutputIter operator()(const Match& m, OutputIter i, cutl_details_boost::regex_constants::match_flag_type /*f*/)
- {
- return cutl_details_boost::unwrap_ref(func)(m, i);
- }
- template <class OutputIter, class Traits>
- OutputIter operator()(const Match& m, OutputIter i, cutl_details_boost::regex_constants::match_flag_type f, const Traits&)
- {
- return (*this)(m, i, f);
- }
-private:
- Base func;
- format_functor2(const format_functor2&);
- format_functor2& operator=(const format_functor2&);
-};
-
-template <class Base, class Match>
-struct format_functor1
-{
- format_functor1(Base b) : func(b) {}
-
- template <class S, class OutputIter>
- OutputIter do_format_string(const S& s, OutputIter i)
- {
- return re_detail::copy(s.begin(), s.end(), i);
- }
- template <class S, class OutputIter>
- inline OutputIter do_format_string(const S* s, OutputIter i)
- {
- while(s && *s)
- {
- *i = *s;
- ++i;
- ++s;
- }
- return i;
- }
- template <class OutputIter>
- OutputIter operator()(const Match& m, OutputIter i, cutl_details_boost::regex_constants::match_flag_type /*f*/)
- {
- return do_format_string(cutl_details_boost::unwrap_ref(func)(m), i);
- }
- template <class OutputIter, class Traits>
- OutputIter operator()(const Match& m, OutputIter i, cutl_details_boost::regex_constants::match_flag_type f, const Traits&)
- {
- return (*this)(m, i, f);
- }
-private:
- Base func;
- format_functor1(const format_functor1&);
- format_functor1& operator=(const format_functor1&);
-};
-
-template <class charT, class Match, class Traits>
-struct format_functor_c_string
-{
- format_functor_c_string(const charT* ps) : func(ps) {}
-
- template <class OutputIter>
- OutputIter operator()(const Match& m, OutputIter i, cutl_details_boost::regex_constants::match_flag_type f, const Traits& t = Traits())
- {
- //typedef typename Match::char_type char_type;
- const charT* end = func;
- while(*end) ++end;
- return regex_format_imp(i, m, func, end, f, t);
- }
-private:
- const charT* func;
- format_functor_c_string(const format_functor_c_string&);
- format_functor_c_string& operator=(const format_functor_c_string&);
-};
-
-template <class Container, class Match, class Traits>
-struct format_functor_container
-{
- format_functor_container(const Container& c) : func(c) {}
-
- template <class OutputIter>
- OutputIter operator()(const Match& m, OutputIter i, cutl_details_boost::regex_constants::match_flag_type f, const Traits& t = Traits())
- {
- //typedef typename Match::char_type char_type;
- return re_detail::regex_format_imp(i, m, func.begin(), func.end(), f, t);
- }
-private:
- const Container& func;
- format_functor_container(const format_functor_container&);
- format_functor_container& operator=(const format_functor_container&);
-};
-
-template <class Func, class Match, class OutputIterator, class Traits = re_detail::trivial_format_traits<typename Match::char_type> >
-struct compute_functor_type
-{
- typedef typename format_traits<Func, Match, OutputIterator>::type tag;
- typedef typename cutl_details_boost::remove_cv< typename cutl_details_boost::remove_pointer<Func>::type>::type maybe_char_type;
-
- typedef typename mpl::if_<
- ::cutl_details_boost::is_same<tag, mpl::int_<0> >, format_functor_c_string<maybe_char_type, Match, Traits>,
- typename mpl::if_<
- ::cutl_details_boost::is_same<tag, mpl::int_<1> >, format_functor_container<Func, Match, Traits>,
- typename mpl::if_<
- ::cutl_details_boost::is_same<tag, mpl::int_<2> >, format_functor1<Func, Match>,
- typename mpl::if_<
- ::cutl_details_boost::is_same<tag, mpl::int_<3> >, format_functor2<Func, Match>,
- format_functor3<Func, Match>
- >::type
- >::type
- >::type
- >::type type;
-};
-
-} // namespace re_detail
-
-template <class OutputIterator, class Iterator, class Allocator, class Functor>
-inline OutputIterator regex_format(OutputIterator out,
- const match_results<Iterator, Allocator>& m,
- Functor fmt,
- match_flag_type flags = format_all
- )
-{
- return m.format(out, fmt, flags);
-}
-
-template <class Iterator, class Allocator, class Functor>
-inline std::basic_string<typename match_results<Iterator, Allocator>::char_type> regex_format(const match_results<Iterator, Allocator>& m,
- Functor fmt,
- match_flag_type flags = format_all)
-{
- return m.format(fmt, flags);
-}
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_FORMAT_HPP
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_fwd.hpp b/libcutl/cutl/details/boost/regex/v4/regex_fwd.hpp
deleted file mode 100644
index da2d66b..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_fwd.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_fwd.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Forward declares cutl_details_boost::basic_regex<> and
- * associated typedefs.
- */
-
-#ifndef BOOST_REGEX_FWD_HPP_INCLUDED
-#define BOOST_REGEX_FWD_HPP_INCLUDED
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-
-//
-// define BOOST_REGEX_NO_FWD if this
-// header doesn't work!
-//
-#ifdef BOOST_REGEX_NO_FWD
-# ifndef BOOST_RE_REGEX_HPP
-# include <cutl/details/boost/regex.hpp>
-# endif
-#else
-
-namespace cutl_details_boost{
-
-template <class charT>
-class cpp_regex_traits;
-template <class charT>
-struct c_regex_traits;
-template <class charT>
-class w32_regex_traits;
-
-#ifdef BOOST_REGEX_USE_WIN32_LOCALE
-template <class charT, class implementationT = w32_regex_traits<charT> >
-struct regex_traits;
-#elif defined(BOOST_REGEX_USE_CPP_LOCALE)
-template <class charT, class implementationT = cpp_regex_traits<charT> >
-struct regex_traits;
-#else
-template <class charT, class implementationT = c_regex_traits<charT> >
-struct regex_traits;
-#endif
-
-template <class charT, class traits = regex_traits<charT> >
-class basic_regex;
-
-typedef basic_regex<char, regex_traits<char> > regex;
-#ifndef BOOST_NO_WREGEX
-typedef basic_regex<wchar_t, regex_traits<wchar_t> > wregex;
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_NO_FWD
-
-#endif
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_grep.hpp b/libcutl/cutl/details/boost/regex/v4/regex_grep.hpp
deleted file mode 100644
index f3f3eec..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_grep.hpp
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_grep.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Provides regex_grep implementation.
- */
-
-#ifndef BOOST_REGEX_V4_REGEX_GREP_HPP
-#define BOOST_REGEX_V4_REGEX_GREP_HPP
-
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-//
-// regex_grep:
-// find all non-overlapping matches within the sequence first last:
-//
-template <class Predicate, class BidiIterator, class charT, class traits>
-inline unsigned int regex_grep(Predicate foo,
- BidiIterator first,
- BidiIterator last,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- if(e.flags() & regex_constants::failbit)
- return false;
-
- typedef typename match_results<BidiIterator>::allocator_type match_allocator_type;
-
- match_results<BidiIterator> m;
- re_detail::perl_matcher<BidiIterator, match_allocator_type, traits> matcher(first, last, m, e, flags, first);
- unsigned int count = 0;
- while(matcher.find())
- {
- ++count;
- if(0 == foo(m))
- return count; // caller doesn't want to go on
- if(m[0].second == last)
- return count; // we've reached the end, don't try and find an extra null match.
- if(m.length() == 0)
- {
- if(m[0].second == last)
- return count;
- // we found a NULL-match, now try to find
- // a non-NULL one at the same position:
- match_results<BidiIterator, match_allocator_type> m2(m);
- matcher.setf(match_not_null | match_continuous);
- if(matcher.find())
- {
- ++count;
- if(0 == foo(m))
- return count;
- }
- else
- {
- // reset match back to where it was:
- m = m2;
- }
- matcher.unsetf((match_not_null | match_continuous) & ~flags);
- }
- }
- return count;
-}
-
-//
-// regex_grep convenience interfaces:
-#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-//
-// this isn't really a partial specialisation, but template function
-// overloading - if the compiler doesn't support partial specialisation
-// then it really won't support this either:
-template <class Predicate, class charT, class traits>
-inline unsigned int regex_grep(Predicate foo, const charT* str,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- return regex_grep(foo, str, str + traits::length(str), e, flags);
-}
-
-template <class Predicate, class ST, class SA, class charT, class traits>
-inline unsigned int regex_grep(Predicate foo, const std::basic_string<charT, ST, SA>& s,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- return regex_grep(foo, s.begin(), s.end(), e, flags);
-}
-#else // partial specialisation
-inline unsigned int regex_grep(bool (*foo)(const cmatch&), const char* str,
- const regex& e,
- match_flag_type flags = match_default)
-{
- return regex_grep(foo, str, str + regex::traits_type::length(str), e, flags);
-}
-#ifndef BOOST_NO_WREGEX
-inline unsigned int regex_grep(bool (*foo)(const wcmatch&), const wchar_t* str,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- return regex_grep(foo, str, str + wregex::traits_type::length(str), e, flags);
-}
-#endif
-inline unsigned int regex_grep(bool (*foo)(const match_results<std::string::const_iterator>&), const std::string& s,
- const regex& e,
- match_flag_type flags = match_default)
-{
- return regex_grep(foo, s.begin(), s.end(), e, flags);
-}
-#if !defined(BOOST_NO_WREGEX)
-inline unsigned int regex_grep(bool (*foo)(const match_results<std::basic_string<wchar_t>::const_iterator>&),
- const std::basic_string<wchar_t>& s,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- return regex_grep(foo, s.begin(), s.end(), e, flags);
-}
-#endif
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_V4_REGEX_GREP_HPP
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_iterator.hpp b/libcutl/cutl/details/boost/regex/v4/regex_iterator.hpp
deleted file mode 100644
index 82d0d09..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_iterator.hpp
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- *
- * Copyright (c) 2003
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_iterator.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Provides regex_iterator implementation.
- */
-
-#ifndef BOOST_REGEX_V4_REGEX_ITERATOR_HPP
-#define BOOST_REGEX_V4_REGEX_ITERATOR_HPP
-
-#include <cutl/details/boost/shared_ptr.hpp>
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-template <class BidirectionalIterator,
- class charT,
- class traits>
-class regex_iterator_implementation
-{
- typedef basic_regex<charT, traits> regex_type;
-
- match_results<BidirectionalIterator> what; // current match
- BidirectionalIterator base; // start of sequence
- BidirectionalIterator end; // end of sequence
- const regex_type re; // the expression
- match_flag_type flags; // flags for matching
-
-public:
- regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f)
- : base(), end(last), re(*p), flags(f){}
- bool init(BidirectionalIterator first)
- {
- base = first;
- return regex_search(first, end, what, re, flags);
- }
- bool compare(const regex_iterator_implementation& that)
- {
- if(this == &that) return true;
- return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second);
- }
- const match_results<BidirectionalIterator>& get()
- { return what; }
- bool next()
- {
- //if(what.prefix().first != what[0].second)
- // flags |= match_prev_avail;
- BidirectionalIterator next_start = what[0].second;
- match_flag_type f(flags);
- if(!what.length() || (f & regex_constants::match_posix))
- f |= regex_constants::match_not_initial_null;
- //if(base != next_start)
- // f |= regex_constants::match_not_bob;
- bool result = regex_search(next_start, end, what, re, f, base);
- if(result)
- what.set_base(base);
- return result;
- }
-private:
- regex_iterator_implementation& operator=(const regex_iterator_implementation&);
-};
-
-template <class BidirectionalIterator,
- class charT = BOOST_DEDUCED_TYPENAME re_detail::regex_iterator_traits<BidirectionalIterator>::value_type,
- class traits = regex_traits<charT> >
-class regex_iterator
-#ifndef BOOST_NO_STD_ITERATOR
- : public std::iterator<
- std::forward_iterator_tag,
- match_results<BidirectionalIterator>,
- typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
- const match_results<BidirectionalIterator>*,
- const match_results<BidirectionalIterator>& >
-#endif
-{
-private:
- typedef regex_iterator_implementation<BidirectionalIterator, charT, traits> impl;
- typedef shared_ptr<impl> pimpl;
-public:
- typedef basic_regex<charT, traits> regex_type;
- typedef match_results<BidirectionalIterator> value_type;
- typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
- difference_type;
- typedef const value_type* pointer;
- typedef const value_type& reference;
- typedef std::forward_iterator_tag iterator_category;
-
- regex_iterator(){}
- regex_iterator(BidirectionalIterator a, BidirectionalIterator b,
- const regex_type& re,
- match_flag_type m = match_default)
- : pdata(new impl(&re, b, m))
- {
- if(!pdata->init(a))
- {
- pdata.reset();
- }
- }
- regex_iterator(const regex_iterator& that)
- : pdata(that.pdata) {}
- regex_iterator& operator=(const regex_iterator& that)
- {
- pdata = that.pdata;
- return *this;
- }
- bool operator==(const regex_iterator& that)const
- {
- if((pdata.get() == 0) || (that.pdata.get() == 0))
- return pdata.get() == that.pdata.get();
- return pdata->compare(*(that.pdata.get()));
- }
- bool operator!=(const regex_iterator& that)const
- { return !(*this == that); }
- const value_type& operator*()const
- { return pdata->get(); }
- const value_type* operator->()const
- { return &(pdata->get()); }
- regex_iterator& operator++()
- {
- cow();
- if(0 == pdata->next())
- {
- pdata.reset();
- }
- return *this;
- }
- regex_iterator operator++(int)
- {
- regex_iterator result(*this);
- ++(*this);
- return result;
- }
-private:
-
- pimpl pdata;
-
- void cow()
- {
- // copy-on-write
- if(pdata.get() && !pdata.unique())
- {
- pdata.reset(new impl(*(pdata.get())));
- }
- }
-};
-
-typedef regex_iterator<const char*> cregex_iterator;
-typedef regex_iterator<std::string::const_iterator> sregex_iterator;
-#ifndef BOOST_NO_WREGEX
-typedef regex_iterator<const wchar_t*> wcregex_iterator;
-typedef regex_iterator<std::wstring::const_iterator> wsregex_iterator;
-#endif
-
-// make_regex_iterator:
-template <class charT, class traits>
-inline regex_iterator<const charT*, charT, traits> make_regex_iterator(const charT* p, const basic_regex<charT, traits>& e, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return regex_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, m);
-}
-template <class charT, class traits, class ST, class SA>
-inline regex_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return regex_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, m);
-}
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_V4_REGEX_ITERATOR_HPP
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_match.hpp b/libcutl/cutl/details/boost/regex/v4/regex_match.hpp
deleted file mode 100644
index 045c4bc..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_match.hpp
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_match.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Regular expression matching algorithms.
- * Note this is an internal header file included
- * by regex.hpp, do not include on its own.
- */
-
-
-#ifndef BOOST_REGEX_MATCH_HPP
-#define BOOST_REGEX_MATCH_HPP
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-//
-// proc regex_match
-// returns true if the specified regular expression matches
-// the whole of the input. Fills in what matched in m.
-//
-template <class BidiIterator, class Allocator, class charT, class traits>
-bool regex_match(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- re_detail::perl_matcher<BidiIterator, Allocator, traits> matcher(first, last, m, e, flags, first);
- return matcher.match();
-}
-template <class iterator, class charT, class traits>
-bool regex_match(iterator first, iterator last,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- match_results<iterator> m;
- return regex_match(first, last, m, e, flags | regex_constants::match_any);
-}
-//
-// query_match convenience interfaces:
-#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-//
-// this isn't really a partial specialisation, but template function
-// overloading - if the compiler doesn't support partial specialisation
-// then it really won't support this either:
-template <class charT, class Allocator, class traits>
-inline bool regex_match(const charT* str,
- match_results<const charT*, Allocator>& m,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- return regex_match(str, str + traits::length(str), m, e, flags);
-}
-
-template <class ST, class SA, class Allocator, class charT, class traits>
-inline bool regex_match(const std::basic_string<charT, ST, SA>& s,
- match_results<typename std::basic_string<charT, ST, SA>::const_iterator, Allocator>& m,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- return regex_match(s.begin(), s.end(), m, e, flags);
-}
-template <class charT, class traits>
-inline bool regex_match(const charT* str,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- match_results<const charT*> m;
- return regex_match(str, str + traits::length(str), m, e, flags | regex_constants::match_any);
-}
-
-template <class ST, class SA, class charT, class traits>
-inline bool regex_match(const std::basic_string<charT, ST, SA>& s,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- typedef typename std::basic_string<charT, ST, SA>::const_iterator iterator;
- match_results<iterator> m;
- return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-#else // partial ordering
-inline bool regex_match(const char* str,
- cmatch& m,
- const regex& e,
- match_flag_type flags = match_default)
-{
- return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
-}
-inline bool regex_match(const char* str,
- const regex& e,
- match_flag_type flags = match_default)
-{
- match_results<const char*> m;
- return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
-}
-#ifndef BOOST_NO_STD_LOCALE
-inline bool regex_match(const char* str,
- cmatch& m,
- const basic_regex<char, cpp_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
-}
-inline bool regex_match(const char* str,
- const basic_regex<char, cpp_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- match_results<const char*> m;
- return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
-}
-#endif
-inline bool regex_match(const char* str,
- cmatch& m,
- const basic_regex<char, c_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
-}
-inline bool regex_match(const char* str,
- const basic_regex<char, c_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- match_results<const char*> m;
- return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
-}
-#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
-inline bool regex_match(const char* str,
- cmatch& m,
- const basic_regex<char, w32_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
-}
-inline bool regex_match(const char* str,
- const basic_regex<char, w32_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- match_results<const char*> m;
- return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
-}
-#endif
-#ifndef BOOST_NO_WREGEX
-inline bool regex_match(const wchar_t* str,
- wcmatch& m,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
-}
-inline bool regex_match(const wchar_t* str,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- match_results<const wchar_t*> m;
- return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
-}
-#ifndef BOOST_NO_STD_LOCALE
-inline bool regex_match(const wchar_t* str,
- wcmatch& m,
- const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
-}
-inline bool regex_match(const wchar_t* str,
- const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- match_results<const wchar_t*> m;
- return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
-}
-#endif
-inline bool regex_match(const wchar_t* str,
- wcmatch& m,
- const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
-}
-inline bool regex_match(const wchar_t* str,
- const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- match_results<const wchar_t*> m;
- return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
-}
-#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
-inline bool regex_match(const wchar_t* str,
- wcmatch& m,
- const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
-}
-inline bool regex_match(const wchar_t* str,
- const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- match_results<const wchar_t*> m;
- return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
-}
-#endif
-#endif
-inline bool regex_match(const std::string& s,
- smatch& m,
- const regex& e,
- match_flag_type flags = match_default)
-{
- return regex_match(s.begin(), s.end(), m, e, flags);
-}
-inline bool regex_match(const std::string& s,
- const regex& e,
- match_flag_type flags = match_default)
-{
- match_results<std::string::const_iterator> m;
- return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-#ifndef BOOST_NO_STD_LOCALE
-inline bool regex_match(const std::string& s,
- smatch& m,
- const basic_regex<char, cpp_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(s.begin(), s.end(), m, e, flags);
-}
-inline bool regex_match(const std::string& s,
- const basic_regex<char, cpp_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- match_results<std::string::const_iterator> m;
- return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-#endif
-inline bool regex_match(const std::string& s,
- smatch& m,
- const basic_regex<char, c_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(s.begin(), s.end(), m, e, flags);
-}
-inline bool regex_match(const std::string& s,
- const basic_regex<char, c_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- match_results<std::string::const_iterator> m;
- return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
-inline bool regex_match(const std::string& s,
- smatch& m,
- const basic_regex<char, w32_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(s.begin(), s.end(), m, e, flags);
-}
-inline bool regex_match(const std::string& s,
- const basic_regex<char, w32_regex_traits<char> >& e,
- match_flag_type flags = match_default)
-{
- match_results<std::string::const_iterator> m;
- return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-#endif
-#if !defined(BOOST_NO_WREGEX)
-inline bool regex_match(const std::basic_string<wchar_t>& s,
- match_results<std::basic_string<wchar_t>::const_iterator>& m,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- return regex_match(s.begin(), s.end(), m, e, flags);
-}
-inline bool regex_match(const std::basic_string<wchar_t>& s,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- match_results<std::basic_string<wchar_t>::const_iterator> m;
- return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-#ifndef BOOST_NO_STD_LOCALE
-inline bool regex_match(const std::basic_string<wchar_t>& s,
- match_results<std::basic_string<wchar_t>::const_iterator>& m,
- const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(s.begin(), s.end(), m, e, flags);
-}
-inline bool regex_match(const std::basic_string<wchar_t>& s,
- const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- match_results<std::basic_string<wchar_t>::const_iterator> m;
- return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-#endif
-inline bool regex_match(const std::basic_string<wchar_t>& s,
- match_results<std::basic_string<wchar_t>::const_iterator>& m,
- const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(s.begin(), s.end(), m, e, flags);
-}
-inline bool regex_match(const std::basic_string<wchar_t>& s,
- const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- match_results<std::basic_string<wchar_t>::const_iterator> m;
- return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
-inline bool regex_match(const std::basic_string<wchar_t>& s,
- match_results<std::basic_string<wchar_t>::const_iterator>& m,
- const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- return regex_match(s.begin(), s.end(), m, e, flags);
-}
-inline bool regex_match(const std::basic_string<wchar_t>& s,
- const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
- match_flag_type flags = match_default)
-{
- match_results<std::basic_string<wchar_t>::const_iterator> m;
- return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-#endif
-#endif
-
-#endif
-
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_MATCH_HPP
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_merge.hpp b/libcutl/cutl/details/boost/regex/v4/regex_merge.hpp
deleted file mode 100644
index 80f00ac..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_merge.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_format.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Provides formatting output routines for search and replace
- * operations. Note this is an internal header file included
- * by regex.hpp, do not include on its own.
- */
-
-#ifndef BOOST_REGEX_V4_REGEX_MERGE_HPP
-#define BOOST_REGEX_V4_REGEX_MERGE_HPP
-
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-template <class OutputIterator, class Iterator, class traits, class charT>
-inline OutputIterator regex_merge(OutputIterator out,
- Iterator first,
- Iterator last,
- const basic_regex<charT, traits>& e,
- const charT* fmt,
- match_flag_type flags = match_default)
-{
- return regex_replace(out, first, last, e, fmt, flags);
-}
-
-template <class OutputIterator, class Iterator, class traits, class charT>
-inline OutputIterator regex_merge(OutputIterator out,
- Iterator first,
- Iterator last,
- const basic_regex<charT, traits>& e,
- const std::basic_string<charT>& fmt,
- match_flag_type flags = match_default)
-{
- return regex_merge(out, first, last, e, fmt.c_str(), flags);
-}
-
-template <class traits, class charT>
-inline std::basic_string<charT> regex_merge(const std::basic_string<charT>& s,
- const basic_regex<charT, traits>& e,
- const charT* fmt,
- match_flag_type flags = match_default)
-{
- return regex_replace(s, e, fmt, flags);
-}
-
-template <class traits, class charT>
-inline std::basic_string<charT> regex_merge(const std::basic_string<charT>& s,
- const basic_regex<charT, traits>& e,
- const std::basic_string<charT>& fmt,
- match_flag_type flags = match_default)
-{
- return regex_replace(s, e, fmt, flags);
-}
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_V4_REGEX_MERGE_HPP
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_raw_buffer.hpp b/libcutl/cutl/details/boost/regex/v4/regex_raw_buffer.hpp
deleted file mode 100644
index 5aba83d..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_raw_buffer.hpp
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_raw_buffer.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Raw character buffer for regex code.
- * Note this is an internal header file included
- * by regex.hpp, do not include on its own.
- */
-
-#ifndef BOOST_REGEX_RAW_BUFFER_HPP
-#define BOOST_REGEX_RAW_BUFFER_HPP
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-
-#include <algorithm>
-#include <cstddef>
-
-namespace cutl_details_boost{
- namespace re_detail{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-struct empty_padding{};
-
-union padding
-{
- void* p;
- unsigned int i;
-};
-
-template <int N>
-struct padding3
-{
- enum{
- padding_size = 8,
- padding_mask = 7
- };
-};
-
-template<>
-struct padding3<2>
-{
- enum{
- padding_size = 2,
- padding_mask = 1
- };
-};
-
-template<>
-struct padding3<4>
-{
- enum{
- padding_size = 4,
- padding_mask = 3
- };
-};
-
-template<>
-struct padding3<8>
-{
- enum{
- padding_size = 8,
- padding_mask = 7
- };
-};
-
-template<>
-struct padding3<16>
-{
- enum{
- padding_size = 16,
- padding_mask = 15
- };
-};
-
-enum{
- padding_size = padding3<sizeof(padding)>::padding_size,
- padding_mask = padding3<sizeof(padding)>::padding_mask
-};
-
-//
-// class raw_storage
-// basically this is a simplified vector<unsigned char>
-// this is used by basic_regex for expression storage
-//
-
-class BOOST_REGEX_DECL raw_storage
-{
-public:
- typedef std::size_t size_type;
- typedef unsigned char* pointer;
-private:
- pointer last, start, end;
-public:
-
- raw_storage();
- raw_storage(size_type n);
-
- ~raw_storage()
- {
- ::operator delete(start);
- }
-
- void BOOST_REGEX_CALL resize(size_type n);
-
- void* BOOST_REGEX_CALL extend(size_type n)
- {
- if(size_type(last - end) < n)
- resize(n + (end - start));
- register pointer result = end;
- end += n;
- return result;
- }
-
- void* BOOST_REGEX_CALL insert(size_type pos, size_type n);
-
- size_type BOOST_REGEX_CALL size()
- {
- return end - start;
- }
-
- size_type BOOST_REGEX_CALL capacity()
- {
- return last - start;
- }
-
- void* BOOST_REGEX_CALL data()const
- {
- return start;
- }
-
- size_type BOOST_REGEX_CALL index(void* ptr)
- {
- return static_cast<pointer>(ptr) - static_cast<pointer>(data());
- }
-
- void BOOST_REGEX_CALL clear()
- {
- end = start;
- }
-
- void BOOST_REGEX_CALL align()
- {
- // move end up to a boundary:
- end = start + (((end - start) + padding_mask) & ~padding_mask);
- }
- void swap(raw_storage& that)
- {
- std::swap(start, that.start);
- std::swap(end, that.end);
- std::swap(last, that.last);
- }
-};
-
-inline raw_storage::raw_storage()
-{
- last = start = end = 0;
-}
-
-inline raw_storage::raw_storage(size_type n)
-{
- start = end = static_cast<pointer>(::operator new(n));
- BOOST_REGEX_NOEH_ASSERT(start)
- last = start + n;
-}
-
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace re_detail
-} // namespace cutl_details_boost
-
-#endif
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_replace.hpp b/libcutl/cutl/details/boost/regex/v4/regex_replace.hpp
deleted file mode 100644
index 24867da..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_replace.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2009
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_format.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Provides formatting output routines for search and replace
- * operations. Note this is an internal header file included
- * by regex.hpp, do not include on its own.
- */
-
-#ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP
-#define BOOST_REGEX_V4_REGEX_REPLACE_HPP
-
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-template <class OutputIterator, class BidirectionalIterator, class traits, class charT, class Formatter>
-OutputIterator regex_replace(OutputIterator out,
- BidirectionalIterator first,
- BidirectionalIterator last,
- const basic_regex<charT, traits>& e,
- Formatter fmt,
- match_flag_type flags = match_default)
-{
- regex_iterator<BidirectionalIterator, charT, traits> i(first, last, e, flags);
- regex_iterator<BidirectionalIterator, charT, traits> j;
- if(i == j)
- {
- if(!(flags & regex_constants::format_no_copy))
- out = re_detail::copy(first, last, out);
- }
- else
- {
- BidirectionalIterator last_m(first);
- while(i != j)
- {
- if(!(flags & regex_constants::format_no_copy))
- out = re_detail::copy(i->prefix().first, i->prefix().second, out);
- out = i->format(out, fmt, flags, e);
- last_m = (*i)[0].second;
- if(flags & regex_constants::format_first_only)
- break;
- ++i;
- }
- if(!(flags & regex_constants::format_no_copy))
- out = re_detail::copy(last_m, last, out);
- }
- return out;
-}
-
-template <class traits, class charT, class Formatter>
-std::basic_string<charT> regex_replace(const std::basic_string<charT>& s,
- const basic_regex<charT, traits>& e,
- Formatter fmt,
- match_flag_type flags = match_default)
-{
- std::basic_string<charT> result;
- re_detail::string_out_iterator<std::basic_string<charT> > i(result);
- regex_replace(i, s.begin(), s.end(), e, fmt, flags);
- return result;
-}
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_V4_REGEX_REPLACE_HPP
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_search.hpp b/libcutl/cutl/details/boost/regex/v4/regex_search.hpp
deleted file mode 100644
index e6de6b6..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_search.hpp
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_search.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Provides regex_search implementation.
- */
-
-#ifndef BOOST_REGEX_V4_REGEX_SEARCH_HPP
-#define BOOST_REGEX_V4_REGEX_SEARCH_HPP
-
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-template <class BidiIterator, class Allocator, class charT, class traits>
-bool regex_search(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- return regex_search(first, last, m, e, flags, first);
-}
-
-template <class BidiIterator, class Allocator, class charT, class traits>
-bool regex_search(BidiIterator first, BidiIterator last,
- match_results<BidiIterator, Allocator>& m,
- const basic_regex<charT, traits>& e,
- match_flag_type flags,
- BidiIterator base)
-{
- if(e.flags() & regex_constants::failbit)
- return false;
-
- re_detail::perl_matcher<BidiIterator, Allocator, traits> matcher(first, last, m, e, flags, base);
- return matcher.find();
-}
-
-//
-// regex_search convenience interfaces:
-#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-//
-// this isn't really a partial specialisation, but template function
-// overloading - if the compiler doesn't support partial specialisation
-// then it really won't support this either:
-template <class charT, class Allocator, class traits>
-inline bool regex_search(const charT* str,
- match_results<const charT*, Allocator>& m,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- return regex_search(str, str + traits::length(str), m, e, flags);
-}
-
-template <class ST, class SA, class Allocator, class charT, class traits>
-inline bool regex_search(const std::basic_string<charT, ST, SA>& s,
- match_results<typename std::basic_string<charT, ST, SA>::const_iterator, Allocator>& m,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- return regex_search(s.begin(), s.end(), m, e, flags);
-}
-#else // partial overloads:
-inline bool regex_search(const char* str,
- cmatch& m,
- const regex& e,
- match_flag_type flags = match_default)
-{
- return regex_search(str, str + regex::traits_type::length(str), m, e, flags);
-}
-inline bool regex_search(const char* first, const char* last,
- const regex& e,
- match_flag_type flags = match_default)
-{
- cmatch m;
- return regex_search(first, last, m, e, flags | regex_constants::match_any);
-}
-
-#ifndef BOOST_NO_WREGEX
-inline bool regex_search(const wchar_t* str,
- wcmatch& m,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- return regex_search(str, str + wregex::traits_type::length(str), m, e, flags);
-}
-inline bool regex_search(const wchar_t* first, const wchar_t* last,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- wcmatch m;
- return regex_search(first, last, m, e, flags | regex_constants::match_any);
-}
-#endif
-inline bool regex_search(const std::string& s,
- smatch& m,
- const regex& e,
- match_flag_type flags = match_default)
-{
- return regex_search(s.begin(), s.end(), m, e, flags);
-}
-#if !defined(BOOST_NO_WREGEX)
-inline bool regex_search(const std::basic_string<wchar_t>& s,
- wsmatch& m,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- return regex_search(s.begin(), s.end(), m, e, flags);
-}
-#endif
-
-#endif
-
-template <class BidiIterator, class charT, class traits>
-bool regex_search(BidiIterator first, BidiIterator last,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- if(e.flags() & regex_constants::failbit)
- return false;
-
- match_results<BidiIterator> m;
- typedef typename match_results<BidiIterator>::allocator_type match_alloc_type;
- re_detail::perl_matcher<BidiIterator, match_alloc_type, traits> matcher(first, last, m, e, flags | regex_constants::match_any, first);
- return matcher.find();
-}
-
-#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
-template <class charT, class traits>
-inline bool regex_search(const charT* str,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- return regex_search(str, str + traits::length(str), e, flags);
-}
-
-template <class ST, class SA, class charT, class traits>
-inline bool regex_search(const std::basic_string<charT, ST, SA>& s,
- const basic_regex<charT, traits>& e,
- match_flag_type flags = match_default)
-{
- return regex_search(s.begin(), s.end(), e, flags);
-}
-#else // non-template function overloads
-inline bool regex_search(const char* str,
- const regex& e,
- match_flag_type flags = match_default)
-{
- cmatch m;
- return regex_search(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
-}
-#ifndef BOOST_NO_WREGEX
-inline bool regex_search(const wchar_t* str,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- wcmatch m;
- return regex_search(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
-}
-#endif
-inline bool regex_search(const std::string& s,
- const regex& e,
- match_flag_type flags = match_default)
-{
- smatch m;
- return regex_search(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-#if !defined(BOOST_NO_WREGEX)
-inline bool regex_search(const std::basic_string<wchar_t>& s,
- const wregex& e,
- match_flag_type flags = match_default)
-{
- wsmatch m;
- return regex_search(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
-}
-
-#endif // BOOST_NO_WREGEX
-
-#endif // partial overload
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_V4_REGEX_SEARCH_HPP
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_split.hpp b/libcutl/cutl/details/boost/regex/v4/regex_split.hpp
deleted file mode 100644
index db1bac0..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_split.hpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_split.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Implements regex_split and associated functions.
- * Note this is an internal header file included
- * by regex.hpp, do not include on its own.
- */
-
-#ifndef BOOST_REGEX_SPLIT_HPP
-#define BOOST_REGEX_SPLIT_HPP
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4800)
-#endif
-
-namespace re_detail{
-
-template <class charT>
-const basic_regex<charT>& get_default_expression(charT)
-{
- static const charT expression_text[4] = { '\\', 's', '+', '\00', };
- static const basic_regex<charT> e(expression_text);
- return e;
-}
-
-template <class OutputIterator, class charT, class Traits1, class Alloc1>
-class split_pred
-{
- typedef std::basic_string<charT, Traits1, Alloc1> string_type;
- typedef typename string_type::const_iterator iterator_type;
- iterator_type* p_last;
- OutputIterator* p_out;
- std::size_t* p_max;
- std::size_t initial_max;
-public:
- split_pred(iterator_type* a, OutputIterator* b, std::size_t* c)
- : p_last(a), p_out(b), p_max(c), initial_max(*c) {}
-
- bool operator()(const match_results<iterator_type>& what);
-};
-
-template <class OutputIterator, class charT, class Traits1, class Alloc1>
-bool split_pred<OutputIterator, charT, Traits1, Alloc1>::operator()
- (const match_results<iterator_type>& what)
-{
- *p_last = what[0].second;
- if(what.size() > 1)
- {
- // output sub-expressions only:
- for(unsigned i = 1; i < what.size(); ++i)
- {
- *(*p_out) = what.str(i);
- ++(*p_out);
- if(0 == --*p_max) return false;
- }
- return *p_max != 0;
- }
- else
- {
- // output $` only if it's not-null or not at the start of the input:
- const sub_match<iterator_type>& sub = what[-1];
- if((sub.first != sub.second) || (*p_max != initial_max))
- {
- *(*p_out) = sub.str();
- ++(*p_out);
- return --*p_max;
- }
- }
- //
- // initial null, do nothing:
- return true;
-}
-
-} // namespace re_detail
-
-template <class OutputIterator, class charT, class Traits1, class Alloc1, class Traits2>
-std::size_t regex_split(OutputIterator out,
- std::basic_string<charT, Traits1, Alloc1>& s,
- const basic_regex<charT, Traits2>& e,
- match_flag_type flags,
- std::size_t max_split)
-{
- typedef typename std::basic_string<charT, Traits1, Alloc1>::const_iterator ci_t;
- //typedef typename match_results<ci_t>::allocator_type match_allocator;
- ci_t last = s.begin();
- std::size_t init_size = max_split;
- re_detail::split_pred<OutputIterator, charT, Traits1, Alloc1> pred(&last, &out, &max_split);
- ci_t i, j;
- i = s.begin();
- j = s.end();
- regex_grep(pred, i, j, e, flags);
- //
- // if there is still input left, do a final push as long as max_split
- // is not exhausted, and we're not splitting sub-expressions rather
- // than whitespace:
- if(max_split && (last != s.end()) && (e.mark_count() == 1))
- {
- *out = std::basic_string<charT, Traits1, Alloc1>((ci_t)last, (ci_t)s.end());
- ++out;
- last = s.end();
- --max_split;
- }
- //
- // delete from the string everything that has been processed so far:
- s.erase(0, last - s.begin());
- //
- // return the number of new records pushed:
- return init_size - max_split;
-}
-
-template <class OutputIterator, class charT, class Traits1, class Alloc1, class Traits2>
-inline std::size_t regex_split(OutputIterator out,
- std::basic_string<charT, Traits1, Alloc1>& s,
- const basic_regex<charT, Traits2>& e,
- match_flag_type flags = match_default)
-{
- return regex_split(out, s, e, flags, UINT_MAX);
-}
-
-template <class OutputIterator, class charT, class Traits1, class Alloc1>
-inline std::size_t regex_split(OutputIterator out,
- std::basic_string<charT, Traits1, Alloc1>& s)
-{
- return regex_split(out, s, re_detail::get_default_expression(charT(0)), match_default, UINT_MAX);
-}
-
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_token_iterator.hpp b/libcutl/cutl/details/boost/regex/v4/regex_token_iterator.hpp
deleted file mode 100644
index 608862e..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_token_iterator.hpp
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
- *
- * Copyright (c) 2003
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_token_iterator.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Provides regex_token_iterator implementation.
- */
-
-#ifndef BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
-#define BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
-
-#include <cutl/details/boost/shared_ptr.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
- || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
- || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
-//
-// Borland C++ Builder 6, and Visual C++ 6,
-// can't cope with the array template constructor
-// so we have a template member that will accept any type as
-// argument, and then assert that is really is an array:
-//
-#include <cutl/details/boost/static_assert.hpp>
-#include <cutl/details/boost/type_traits/is_array.hpp>
-#endif
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
-# pragma warning(push)
-# pragma warning(disable:4700)
-#endif
-
-template <class BidirectionalIterator,
- class charT,
- class traits>
-class regex_token_iterator_implementation
-{
- typedef basic_regex<charT, traits> regex_type;
- typedef sub_match<BidirectionalIterator> value_type;
-
- match_results<BidirectionalIterator> what; // current match
- BidirectionalIterator base; // start of search area
- BidirectionalIterator end; // end of search area
- const regex_type re; // the expression
- match_flag_type flags; // match flags
- value_type result; // the current string result
- int N; // the current sub-expression being enumerated
- std::vector<int> subs; // the sub-expressions to enumerate
-
-public:
- regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, int sub, match_flag_type f)
- : end(last), re(*p), flags(f){ subs.push_back(sub); }
- regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector<int>& v, match_flag_type f)
- : end(last), re(*p), flags(f), subs(v){}
-#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
-#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
- || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
- || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
- || BOOST_WORKAROUND(__HP_aCC, < 60700)
- template <class T>
- regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const T& submatches, match_flag_type f)
- : end(last), re(*p), flags(f)
- {
- // assert that T really is an array:
- BOOST_STATIC_ASSERT(::cutl_details_boost::is_array<T>::value);
- const std::size_t array_size = sizeof(T) / sizeof(submatches[0]);
- for(std::size_t i = 0; i < array_size; ++i)
- {
- subs.push_back(submatches[i]);
- }
- }
-#else
- template <std::size_t CN>
- regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const int (&submatches)[CN], match_flag_type f)
- : end(last), re(*p), flags(f)
- {
- for(std::size_t i = 0; i < CN; ++i)
- {
- subs.push_back(submatches[i]);
- }
- }
-#endif
-#endif
- bool init(BidirectionalIterator first)
- {
- N = 0;
- base = first;
- if(regex_search(first, end, what, re, flags, base) == true)
- {
- N = 0;
- result = ((subs[N] == -1) ? what.prefix() : what[(int)subs[N]]);
- return true;
- }
- else if((subs[N] == -1) && (first != end))
- {
- result.first = first;
- result.second = end;
- result.matched = (first != end);
- N = -1;
- return true;
- }
- return false;
- }
- bool compare(const regex_token_iterator_implementation& that)
- {
- if(this == &that) return true;
- return (&re.get_data() == &that.re.get_data())
- && (end == that.end)
- && (flags == that.flags)
- && (N == that.N)
- && (what[0].first == that.what[0].first)
- && (what[0].second == that.what[0].second);
- }
- const value_type& get()
- { return result; }
- bool next()
- {
- if(N == -1)
- return false;
- if(N+1 < (int)subs.size())
- {
- ++N;
- result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
- return true;
- }
- //if(what.prefix().first != what[0].second)
- // flags |= /*match_prev_avail |*/ regex_constants::match_not_bob;
- BidirectionalIterator last_end(what[0].second);
- if(regex_search(last_end, end, what, re, ((what[0].first == what[0].second) ? flags | regex_constants::match_not_initial_null : flags), base))
- {
- N =0;
- result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
- return true;
- }
- else if((last_end != end) && (subs[0] == -1))
- {
- N =-1;
- result.first = last_end;
- result.second = end;
- result.matched = (last_end != end);
- return true;
- }
- return false;
- }
-private:
- regex_token_iterator_implementation& operator=(const regex_token_iterator_implementation&);
-};
-
-template <class BidirectionalIterator,
- class charT = BOOST_DEDUCED_TYPENAME re_detail::regex_iterator_traits<BidirectionalIterator>::value_type,
- class traits = regex_traits<charT> >
-class regex_token_iterator
-#ifndef BOOST_NO_STD_ITERATOR
- : public std::iterator<
- std::forward_iterator_tag,
- sub_match<BidirectionalIterator>,
- typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
- const sub_match<BidirectionalIterator>*,
- const sub_match<BidirectionalIterator>& >
-#endif
-{
-private:
- typedef regex_token_iterator_implementation<BidirectionalIterator, charT, traits> impl;
- typedef shared_ptr<impl> pimpl;
-public:
- typedef basic_regex<charT, traits> regex_type;
- typedef sub_match<BidirectionalIterator> value_type;
- typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
- difference_type;
- typedef const value_type* pointer;
- typedef const value_type& reference;
- typedef std::forward_iterator_tag iterator_category;
-
- regex_token_iterator(){}
- regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
- int submatch = 0, match_flag_type m = match_default)
- : pdata(new impl(&re, b, submatch, m))
- {
- if(!pdata->init(a))
- pdata.reset();
- }
- regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
- const std::vector<int>& submatches, match_flag_type m = match_default)
- : pdata(new impl(&re, b, submatches, m))
- {
- if(!pdata->init(a))
- pdata.reset();
- }
-#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
-#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
- || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
- || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
- || BOOST_WORKAROUND(__HP_aCC, < 60700)
- template <class T>
- regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
- const T& submatches, match_flag_type m = match_default)
- : pdata(new impl(&re, b, submatches, m))
- {
- if(!pdata->init(a))
- pdata.reset();
- }
-#else
- template <std::size_t N>
- regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
- const int (&submatches)[N], match_flag_type m = match_default)
- : pdata(new impl(&re, b, submatches, m))
- {
- if(!pdata->init(a))
- pdata.reset();
- }
-#endif
-#endif
- regex_token_iterator(const regex_token_iterator& that)
- : pdata(that.pdata) {}
- regex_token_iterator& operator=(const regex_token_iterator& that)
- {
- pdata = that.pdata;
- return *this;
- }
- bool operator==(const regex_token_iterator& that)const
- {
- if((pdata.get() == 0) || (that.pdata.get() == 0))
- return pdata.get() == that.pdata.get();
- return pdata->compare(*(that.pdata.get()));
- }
- bool operator!=(const regex_token_iterator& that)const
- { return !(*this == that); }
- const value_type& operator*()const
- { return pdata->get(); }
- const value_type* operator->()const
- { return &(pdata->get()); }
- regex_token_iterator& operator++()
- {
- cow();
- if(0 == pdata->next())
- {
- pdata.reset();
- }
- return *this;
- }
- regex_token_iterator operator++(int)
- {
- regex_token_iterator result(*this);
- ++(*this);
- return result;
- }
-private:
-
- pimpl pdata;
-
- void cow()
- {
- // copy-on-write
- if(pdata.get() && !pdata.unique())
- {
- pdata.reset(new impl(*(pdata.get())));
- }
- }
-};
-
-typedef regex_token_iterator<const char*> cregex_token_iterator;
-typedef regex_token_iterator<std::string::const_iterator> sregex_token_iterator;
-#ifndef BOOST_NO_WREGEX
-typedef regex_token_iterator<const wchar_t*> wcregex_token_iterator;
-typedef regex_token_iterator<std::wstring::const_iterator> wsregex_token_iterator;
-#endif
-
-template <class charT, class traits>
-inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m);
-}
-template <class charT, class traits, class ST, class SA>
-inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
-}
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-template <class charT, class traits, std::size_t N>
-inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m);
-}
-template <class charT, class traits, class ST, class SA, std::size_t N>
-inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
-}
-#endif
-template <class charT, class traits>
-inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m);
-}
-template <class charT, class traits, class ST, class SA>
-inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
-}
-
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
-# pragma warning(pop)
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_traits.hpp b/libcutl/cutl/details/boost/regex/v4/regex_traits.hpp
deleted file mode 100644
index b632864..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_traits.hpp
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- *
- * Copyright (c) 2003
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_traits.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares regular expression traits classes.
- */
-
-#ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED
-#define BOOST_REGEX_TRAITS_HPP_INCLUDED
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-#ifndef BOOST_REGEX_WORKAROUND_HPP
-#include <cutl/details/boost/regex/v4/regex_workaround.hpp>
-#endif
-#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP
-#include <cutl/details/boost/regex/v4/syntax_type.hpp>
-#endif
-#ifndef BOOST_REGEX_ERROR_TYPE_HPP
-#include <cutl/details/boost/regex/v4/error_type.hpp>
-#endif
-#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
-#include <cutl/details/boost/regex/v4/regex_traits_defaults.hpp>
-#endif
-#ifndef BOOST_NO_STD_LOCALE
-# ifndef BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED
-# include <cutl/details/boost/regex/v4/cpp_regex_traits.hpp>
-# endif
-#endif
-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
-# ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED
-# include <cutl/details/boost/regex/v4/c_regex_traits.hpp>
-# endif
-#endif
-#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
-# ifndef BOOST_W32_REGEX_TRAITS_HPP_INCLUDED
-# include <cutl/details/boost/regex/v4/w32_regex_traits.hpp>
-# endif
-#endif
-#ifndef BOOST_REGEX_FWD_HPP_INCLUDED
-#include <cutl/details/boost/regex_fwd.hpp>
-#endif
-
-#include "cutl/details/boost/mpl/has_xxx.hpp"
-#include <cutl/details/boost/static_assert.hpp>
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-
-template <class charT, class implementationT >
-struct regex_traits : public implementationT
-{
- regex_traits() : implementationT() {}
-};
-
-//
-// class regex_traits_wrapper.
-// this is what our implementation will actually store;
-// it provides default implementations of the "optional"
-// interfaces that we support, in addition to the
-// required "standard" ones:
-//
-namespace re_detail{
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__HP_aCC, < 60000)
-BOOST_MPL_HAS_XXX_TRAIT_DEF(boost_extensions_tag)
-#else
-template<class T>
-struct has_boost_extensions_tag
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#endif
-
-template <class BaseT>
-struct default_wrapper : public BaseT
-{
- typedef typename BaseT::char_type char_type;
- std::string error_string(::cutl_details_boost::regex_constants::error_type e)const
- {
- return ::cutl_details_boost::re_detail::get_default_error_string(e);
- }
- ::cutl_details_boost::regex_constants::syntax_type syntax_type(char_type c)const
- {
- return ((c & 0x7f) == c) ? get_default_syntax_type(static_cast<char>(c)) : ::cutl_details_boost::regex_constants::syntax_char;
- }
- ::cutl_details_boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c)const
- {
- return ((c & 0x7f) == c) ? get_default_escape_syntax_type(static_cast<char>(c)) : ::cutl_details_boost::regex_constants::escape_type_identity;
- }
- int toi(const char_type*& p1, const char_type* p2, int radix)const
- {
- return ::cutl_details_boost::re_detail::global_toi(p1, p2, radix, *this);
- }
- char_type translate(char_type c, bool icase)const
- {
- return (icase ? this->translate_nocase(c) : this->translate(c));
- }
- char_type translate(char_type c)const
- {
- return BaseT::translate(c);
- }
- char_type tolower(char_type c)const
- {
- return ::cutl_details_boost::re_detail::global_lower(c);
- }
- char_type toupper(char_type c)const
- {
- return ::cutl_details_boost::re_detail::global_upper(c);
- }
-};
-
-template <class BaseT, bool has_extensions>
-struct compute_wrapper_base
-{
- typedef BaseT type;
-};
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__HP_aCC, < 60000)
-template <class BaseT>
-struct compute_wrapper_base<BaseT, false>
-{
- typedef default_wrapper<BaseT> type;
-};
-#else
-template <>
-struct compute_wrapper_base<c_regex_traits<char>, false>
-{
- typedef default_wrapper<c_regex_traits<char> > type;
-};
-#ifndef BOOST_NO_WREGEX
-template <>
-struct compute_wrapper_base<c_regex_traits<wchar_t>, false>
-{
- typedef default_wrapper<c_regex_traits<wchar_t> > type;
-};
-#endif
-#endif
-
-} // namespace re_detail
-
-template <class BaseT>
-struct regex_traits_wrapper
- : public ::cutl_details_boost::re_detail::compute_wrapper_base<
- BaseT,
- ::cutl_details_boost::re_detail::has_boost_extensions_tag<BaseT>::value
- >::type
-{
- regex_traits_wrapper(){}
-private:
- regex_traits_wrapper(const regex_traits_wrapper&);
- regex_traits_wrapper& operator=(const regex_traits_wrapper&);
-};
-
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif // include
-
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_traits_defaults.hpp b/libcutl/cutl/details/boost/regex/v4/regex_traits_defaults.hpp
deleted file mode 100644
index eeb0f2e..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_traits_defaults.hpp
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_traits_defaults.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares API's for access to regex_traits default properties.
- */
-
-#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
-#define BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP
-#include <cutl/details/boost/regex/v4/syntax_type.hpp>
-#endif
-#ifndef BOOST_REGEX_ERROR_TYPE_HPP
-#include <cutl/details/boost/regex/v4/error_type.hpp>
-#endif
-
-#ifdef BOOST_NO_STDC_NAMESPACE
-namespace std{
- using ::strlen;
-}
-#endif
-
-namespace cutl_details_boost{ namespace re_detail{
-
-
-//
-// helpers to suppress warnings:
-//
-template <class charT>
-inline bool is_extended(charT c)
-{ return c > 256; }
-inline bool is_extended(char)
-{ return false; }
-
-
-BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n);
-BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n);
-BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c);
-BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c);
-
-// is charT c a combining character?
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(uint_least16_t s);
-
-template <class charT>
-inline bool is_combining(charT c)
-{
- return (c <= static_cast<charT>(0)) ? false : ((c >= static_cast<charT>((std::numeric_limits<uint_least16_t>::max)())) ? false : is_combining_implementation(static_cast<unsigned short>(c)));
-}
-template <>
-inline bool is_combining<char>(char)
-{
- return false;
-}
-template <>
-inline bool is_combining<signed char>(signed char)
-{
- return false;
-}
-template <>
-inline bool is_combining<unsigned char>(unsigned char)
-{
- return false;
-}
-#if !defined(__hpux) && !defined(__WINSCW__) // can't use WCHAR_MAX/MIN in pp-directives
-#ifdef _MSC_VER
-template<>
-inline bool is_combining<wchar_t>(wchar_t c)
-{
- return is_combining_implementation(static_cast<unsigned short>(c));
-}
-#elif !defined(__DECCXX) && !defined(__osf__) && !defined(__OSF__) && defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
-#if defined(WCHAR_MAX) && (WCHAR_MAX <= USHRT_MAX)
-template<>
-inline bool is_combining<wchar_t>(wchar_t c)
-{
- return is_combining_implementation(static_cast<unsigned short>(c));
-}
-#else
-template<>
-inline bool is_combining<wchar_t>(wchar_t c)
-{
- return (c >= (std::numeric_limits<uint_least16_t>::max)()) ? false : is_combining_implementation(static_cast<unsigned short>(c));
-}
-#endif
-#endif
-#endif
-
-//
-// is a charT c a line separator?
-//
-template <class charT>
-inline bool is_separator(charT c)
-{
- return BOOST_REGEX_MAKE_BOOL(
- (c == static_cast<charT>('\n'))
- || (c == static_cast<charT>('\r'))
- || (c == static_cast<charT>('\f'))
- || (static_cast<cutl_details_boost::uint16_t>(c) == 0x2028u)
- || (static_cast<cutl_details_boost::uint16_t>(c) == 0x2029u)
- || (static_cast<cutl_details_boost::uint16_t>(c) == 0x85u));
-}
-template <>
-inline bool is_separator<char>(char c)
-{
- return BOOST_REGEX_MAKE_BOOL((c == '\n') || (c == '\r') || (c == '\f'));
-}
-
-//
-// get a default collating element:
-//
-BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name);
-
-//
-// get the state_id of a character clasification, the individual
-// traits classes then transform that state_id into a bitmask:
-//
-template <class charT>
-struct character_pointer_range
-{
- const charT* p1;
- const charT* p2;
-
- bool operator < (const character_pointer_range& r)const
- {
- return std::lexicographical_compare(p1, p2, r.p1, r.p2);
- }
- bool operator == (const character_pointer_range& r)const
- {
- // Not only do we check that the ranges are of equal size before
- // calling std::equal, but there is no other algorithm available:
- // not even a non-standard MS one. So forward to unchecked_equal
- // in the MS case.
- return ((p2 - p1) == (r.p2 - r.p1)) && re_detail::equal(p1, p2, r.p1);
- }
-};
-template <class charT>
-int get_default_class_id(const charT* p1, const charT* p2)
-{
- static const charT data[73] = {
- 'a', 'l', 'n', 'u', 'm',
- 'a', 'l', 'p', 'h', 'a',
- 'b', 'l', 'a', 'n', 'k',
- 'c', 'n', 't', 'r', 'l',
- 'd', 'i', 'g', 'i', 't',
- 'g', 'r', 'a', 'p', 'h',
- 'l', 'o', 'w', 'e', 'r',
- 'p', 'r', 'i', 'n', 't',
- 'p', 'u', 'n', 'c', 't',
- 's', 'p', 'a', 'c', 'e',
- 'u', 'n', 'i', 'c', 'o', 'd', 'e',
- 'u', 'p', 'p', 'e', 'r',
- 'v',
- 'w', 'o', 'r', 'd',
- 'x', 'd', 'i', 'g', 'i', 't',
- };
-
- static const character_pointer_range<charT> ranges[21] =
- {
- {data+0, data+5,}, // alnum
- {data+5, data+10,}, // alpha
- {data+10, data+15,}, // blank
- {data+15, data+20,}, // cntrl
- {data+20, data+21,}, // d
- {data+20, data+25,}, // digit
- {data+25, data+30,}, // graph
- {data+29, data+30,}, // h
- {data+30, data+31,}, // l
- {data+30, data+35,}, // lower
- {data+35, data+40,}, // print
- {data+40, data+45,}, // punct
- {data+45, data+46,}, // s
- {data+45, data+50,}, // space
- {data+57, data+58,}, // u
- {data+50, data+57,}, // unicode
- {data+57, data+62,}, // upper
- {data+62, data+63,}, // v
- {data+63, data+64,}, // w
- {data+63, data+67,}, // word
- {data+67, data+73,}, // xdigit
- };
- static const character_pointer_range<charT>* ranges_begin = ranges;
- static const character_pointer_range<charT>* ranges_end = ranges + (sizeof(ranges)/sizeof(ranges[0]));
-
- character_pointer_range<charT> t = { p1, p2, };
- const character_pointer_range<charT>* p = std::lower_bound(ranges_begin, ranges_end, t);
- if((p != ranges_end) && (t == *p))
- return static_cast<int>(p - ranges);
- return -1;
-}
-
-//
-// helper functions:
-//
-template <class charT>
-std::ptrdiff_t global_length(const charT* p)
-{
- std::ptrdiff_t n = 0;
- while(*p)
- {
- ++p;
- ++n;
- }
- return n;
-}
-template<>
-inline std::ptrdiff_t global_length<char>(const char* p)
-{
- return (std::strlen)(p);
-}
-#ifndef BOOST_NO_WREGEX
-template<>
-inline std::ptrdiff_t global_length<wchar_t>(const wchar_t* p)
-{
- return (std::wcslen)(p);
-}
-#endif
-template <class charT>
-inline charT BOOST_REGEX_CALL global_lower(charT c)
-{
- return c;
-}
-template <class charT>
-inline charT BOOST_REGEX_CALL global_upper(charT c)
-{
- return c;
-}
-
-BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c);
-BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c);
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c);
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c);
-#endif
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c);
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c);
-#endif
-//
-// This sucks: declare template specialisations of global_lower/global_upper
-// that just forward to the non-template implementation functions. We do
-// this because there is one compiler (Compaq Tru64 C++) that doesn't seem
-// to differentiate between templates and non-template overloads....
-// what's more, the primary template, plus all overloads have to be
-// defined in the same translation unit (if one is inline they all must be)
-// otherwise the "local template instantiation" compiler option can pick
-// the wrong instantiation when linking:
-//
-template<> inline char BOOST_REGEX_CALL global_lower<char>(char c){ return do_global_lower(c); }
-template<> inline char BOOST_REGEX_CALL global_upper<char>(char c){ return do_global_upper(c); }
-#ifndef BOOST_NO_WREGEX
-template<> inline wchar_t BOOST_REGEX_CALL global_lower<wchar_t>(wchar_t c){ return do_global_lower(c); }
-template<> inline wchar_t BOOST_REGEX_CALL global_upper<wchar_t>(wchar_t c){ return do_global_upper(c); }
-#endif
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-template<> inline unsigned short BOOST_REGEX_CALL global_lower<unsigned short>(unsigned short c){ return do_global_lower(c); }
-template<> inline unsigned short BOOST_REGEX_CALL global_upper<unsigned short>(unsigned short c){ return do_global_upper(c); }
-#endif
-
-template <class charT>
-int global_value(charT c)
-{
- static const charT zero = '0';
- static const charT nine = '9';
- static const charT a = 'a';
- static const charT f = 'f';
- static const charT A = 'A';
- static const charT F = 'F';
-
- if(c > f) return -1;
- if(c >= a) return 10 + (c - a);
- if(c > F) return -1;
- if(c >= A) return 10 + (c - A);
- if(c > nine) return -1;
- if(c >= zero) return c - zero;
- return -1;
-}
-template <class charT, class traits>
-int global_toi(const charT*& p1, const charT* p2, int radix, const traits& t)
-{
- (void)t; // warning suppression
- int next_value = t.value(*p1, radix);
- if((p1 == p2) || (next_value < 0) || (next_value >= radix))
- return -1;
- int result = 0;
- while(p1 != p2)
- {
- next_value = t.value(*p1, radix);
- if((next_value < 0) || (next_value >= radix))
- break;
- result *= radix;
- result += next_value;
- ++p1;
- }
- return result;
-}
-
-template <class charT>
-inline const charT* get_escape_R_string()
-{
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable:4309 4245)
-#endif
- static const charT e1[] = { '(', '?', '>', '\x0D', '\x0A', '?',
- '|', '[', '\x0A', '\x0B', '\x0C', static_cast<unsigned char>('\x85'), '\\', 'x', '{', '2', '0', '2', '8', '}',
- '\\', 'x', '{', '2', '0', '2', '9', '}', ']', ')', '\0' };
- static const charT e2[] = { '(', '?', '>', '\x0D', '\x0A', '?',
- '|', '[', '\x0A', '\x0B', '\x0C', static_cast<unsigned char>('\x85'), ']', ')', '\0' };
-
- charT c = static_cast<charT>(0x2029u);
- bool b = (static_cast<unsigned>(c) == 0x2029u);
-
- return (b ? e1 : e2);
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-}
-
-template <>
-inline const char* get_escape_R_string<char>()
-{
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable:4309)
-#endif
- static const char e2[] = { '(', '?', '>', '\x0D', '\x0A', '?',
- '|', '[', '\x0A', '\x0B', '\x0C', '\x85', ']', ')', '\0' };
- return e2;
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-}
-
-} // re_detail
-} // boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex/v4/regex_workaround.hpp b/libcutl/cutl/details/boost/regex/v4/regex_workaround.hpp
deleted file mode 100644
index 496ab8c..0000000
--- a/libcutl/cutl/details/boost/regex/v4/regex_workaround.hpp
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2005
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_workarounds.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares Misc workarounds.
- */
-
-#ifndef BOOST_REGEX_WORKAROUND_HPP
-#define BOOST_REGEX_WORKAROUND_HPP
-
-
-#include <new>
-#include <cstring>
-#include <cstdlib>
-#include <cstddef>
-#include <cassert>
-#include <cstdio>
-#include <climits>
-#include <string>
-#include <stdexcept>
-#include <iterator>
-#include <algorithm>
-#include <iosfwd>
-#include <vector>
-#include <map>
-#include <cutl/details/boost/limits.hpp>
-#include <cutl/details/boost/assert.hpp>
-#include <cutl/details/boost/cstdint.hpp>
-#include <cutl/details/boost/throw_exception.hpp>
-#include <cutl/details/boost/scoped_ptr.hpp>
-#include <cutl/details/boost/scoped_array.hpp>
-#include <cutl/details/boost/shared_ptr.hpp>
-#include <cutl/details/boost/mpl/bool_fwd.hpp>
-#ifndef BOOST_NO_STD_LOCALE
-# include <locale>
-#endif
-
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::sprintf; using ::strcpy; using ::strcat; using ::strlen;
-}
-#endif
-
-namespace cutl_details_boost{ namespace re_detail{
-#ifdef BOOST_NO_STD_DISTANCE
-template <class T>
-std::ptrdiff_t distance(const T& x, const T& y)
-{ return y - x; }
-#else
-using std::distance;
-#endif
-}}
-
-
-#ifdef BOOST_REGEX_NO_BOOL
-# define BOOST_REGEX_MAKE_BOOL(x) static_cast<bool>((x) ? true : false)
-#else
-# define BOOST_REGEX_MAKE_BOOL(x) static_cast<bool>(x)
-#endif
-
-/*****************************************************************************
- *
- * Fix broken broken namespace support:
- *
- ****************************************************************************/
-
-#if defined(BOOST_NO_STDC_NAMESPACE) && defined(__cplusplus)
-
-namespace std{
- using ::ptrdiff_t;
- using ::size_t;
- using ::abs;
- using ::memset;
- using ::memcpy;
-}
-
-#endif
-
-/*****************************************************************************
- *
- * helper functions pointer_construct/pointer_destroy:
- *
- ****************************************************************************/
-
-#ifdef __cplusplus
-namespace cutl_details_boost{ namespace re_detail{
-
-#ifdef BOOST_MSVC
-#pragma warning (push)
-#pragma warning (disable : 4100)
-#endif
-
-template <class T>
-inline void pointer_destroy(T* p)
-{ p->~T(); (void)p; }
-
-#ifdef BOOST_MSVC
-#pragma warning (pop)
-#endif
-
-template <class T>
-inline void pointer_construct(T* p, const T& t)
-{ new (p) T(t); }
-
-}} // namespaces
-#endif
-
-/*****************************************************************************
- *
- * helper function copy:
- *
- ****************************************************************************/
-
-#ifdef __cplusplus
-namespace cutl_details_boost{ namespace re_detail{
-#if BOOST_WORKAROUND(BOOST_MSVC,>=1400) && BOOST_WORKAROUND(BOOST_MSVC, <1600) && defined(_CPPLIB_VER) && defined(BOOST_DINKUMWARE_STDLIB) && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
- //
- // MSVC 8 will either emit warnings or else refuse to compile
- // code that makes perfectly legitimate use of std::copy, when
- // the OutputIterator type is a user-defined class (apparently all user
- // defined iterators are "unsafe"). This code works around that:
- //
- template<class InputIterator, class OutputIterator>
- inline OutputIterator copy(
- InputIterator first,
- InputIterator last,
- OutputIterator dest
- )
- {
- return stdext::unchecked_copy(first, last, dest);
- }
- template<class InputIterator1, class InputIterator2>
- inline bool equal(
- InputIterator1 first,
- InputIterator1 last,
- InputIterator2 with
- )
- {
- return stdext::unchecked_equal(first, last, with);
- }
-#elif BOOST_WORKAROUND(BOOST_MSVC, > 1500)
- //
- // MSVC 10 will either emit warnings or else refuse to compile
- // code that makes perfectly legitimate use of std::copy, when
- // the OutputIterator type is a user-defined class (apparently all user
- // defined iterators are "unsafe"). What's more Microsoft have removed their
- // non-standard "unchecked" versions, even though their still in the MS
- // documentation!! Work around this as best we can:
- //
- template<class InputIterator, class OutputIterator>
- inline OutputIterator copy(
- InputIterator first,
- InputIterator last,
- OutputIterator dest
- )
- {
- while(first != last)
- *dest++ = *first++;
- return dest;
- }
- template<class InputIterator1, class InputIterator2>
- inline bool equal(
- InputIterator1 first,
- InputIterator1 last,
- InputIterator2 with
- )
- {
- while(first != last)
- if(*first++ != *with++) return false;
- return true;
- }
-#else
- using std::copy;
- using std::equal;
-#endif
-#if BOOST_WORKAROUND(BOOST_MSVC,>=1400) && defined(__STDC_WANT_SECURE_LIB__) && __STDC_WANT_SECURE_LIB__
-
- // use safe versions of strcpy etc:
- using ::strcpy_s;
- using ::strcat_s;
-#else
- inline std::size_t strcpy_s(
- char *strDestination,
- std::size_t sizeInBytes,
- const char *strSource
- )
- {
- if(std::strlen(strSource)+1 > sizeInBytes)
- return 1;
- std::strcpy(strDestination, strSource);
- return 0;
- }
- inline std::size_t strcat_s(
- char *strDestination,
- std::size_t sizeInBytes,
- const char *strSource
- )
- {
- if(std::strlen(strSource) + std::strlen(strDestination) + 1 > sizeInBytes)
- return 1;
- std::strcat(strDestination, strSource);
- return 0;
- }
-
-#endif
-
- inline void overflow_error_if_not_zero(std::size_t i)
- {
- if(i)
- {
- std::overflow_error e("String buffer too small");
- cutl_details_boost::throw_exception(e);
- }
- }
-
-}} // namespaces
-
-#endif // __cplusplus
-
-#endif // include guard
-
diff --git a/libcutl/cutl/details/boost/regex/v4/states.hpp b/libcutl/cutl/details/boost/regex/v4/states.hpp
deleted file mode 100644
index 8f1152a..0000000
--- a/libcutl/cutl/details/boost/regex/v4/states.hpp
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE states.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares internal state machine structures.
- */
-
-#ifndef BOOST_REGEX_V4_STATES_HPP
-#define BOOST_REGEX_V4_STATES_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-namespace re_detail{
-
-/*** mask_type *******************************************************
-Whenever we have a choice of two alternatives, we use an array of bytes
-to indicate which of the two alternatives it is possible to take for any
-given input character. If mask_take is set, then we can take the next
-state, and if mask_skip is set then we can take the alternative.
-***********************************************************************/
-enum mask_type
-{
- mask_take = 1,
- mask_skip = 2,
- mask_init = 4,
- mask_any = mask_skip | mask_take,
- mask_all = mask_any
-};
-
-/*** helpers **********************************************************
-These helpers let us use function overload resolution to detect whether
-we have narrow or wide character strings:
-***********************************************************************/
-struct _narrow_type{};
-struct _wide_type{};
-template <class charT> struct is_byte;
-template<> struct is_byte<char> { typedef _narrow_type width_type; };
-template<> struct is_byte<unsigned char>{ typedef _narrow_type width_type; };
-template<> struct is_byte<signed char> { typedef _narrow_type width_type; };
-template <class charT> struct is_byte { typedef _wide_type width_type; };
-
-/*** enum syntax_element_type ******************************************
-Every record in the state machine falls into one of the following types:
-***********************************************************************/
-enum syntax_element_type
-{
- // start of a marked sub-expression, or perl-style (?...) extension
- syntax_element_startmark = 0,
- // end of a marked sub-expression, or perl-style (?...) extension
- syntax_element_endmark = syntax_element_startmark + 1,
- // any sequence of literal characters
- syntax_element_literal = syntax_element_endmark + 1,
- // start of line assertion: ^
- syntax_element_start_line = syntax_element_literal + 1,
- // end of line assertion $
- syntax_element_end_line = syntax_element_start_line + 1,
- // match any character: .
- syntax_element_wild = syntax_element_end_line + 1,
- // end of expression: we have a match when we get here
- syntax_element_match = syntax_element_wild + 1,
- // perl style word boundary: \b
- syntax_element_word_boundary = syntax_element_match + 1,
- // perl style within word boundary: \B
- syntax_element_within_word = syntax_element_word_boundary + 1,
- // start of word assertion: \<
- syntax_element_word_start = syntax_element_within_word + 1,
- // end of word assertion: \>
- syntax_element_word_end = syntax_element_word_start + 1,
- // start of buffer assertion: \`
- syntax_element_buffer_start = syntax_element_word_end + 1,
- // end of buffer assertion: \'
- syntax_element_buffer_end = syntax_element_buffer_start + 1,
- // backreference to previously matched sub-expression
- syntax_element_backref = syntax_element_buffer_end + 1,
- // either a wide character set [..] or one with multicharacter collating elements:
- syntax_element_long_set = syntax_element_backref + 1,
- // narrow character set: [...]
- syntax_element_set = syntax_element_long_set + 1,
- // jump to a new state in the machine:
- syntax_element_jump = syntax_element_set + 1,
- // choose between two production states:
- syntax_element_alt = syntax_element_jump + 1,
- // a repeat
- syntax_element_rep = syntax_element_alt + 1,
- // match a combining character sequence
- syntax_element_combining = syntax_element_rep + 1,
- // perl style soft buffer end: \z
- syntax_element_soft_buffer_end = syntax_element_combining + 1,
- // perl style continuation: \G
- syntax_element_restart_continue = syntax_element_soft_buffer_end + 1,
- // single character repeats:
- syntax_element_dot_rep = syntax_element_restart_continue + 1,
- syntax_element_char_rep = syntax_element_dot_rep + 1,
- syntax_element_short_set_rep = syntax_element_char_rep + 1,
- syntax_element_long_set_rep = syntax_element_short_set_rep + 1,
- // a backstep for lookbehind repeats:
- syntax_element_backstep = syntax_element_long_set_rep + 1,
- // an assertion that a mark was matched:
- syntax_element_assert_backref = syntax_element_backstep + 1,
- syntax_element_toggle_case = syntax_element_assert_backref + 1,
- // a recursive expression:
- syntax_element_recurse = syntax_element_toggle_case + 1
-};
-
-#ifdef BOOST_REGEX_DEBUG
-// dwa 09/26/00 - This is needed to suppress warnings about an ambiguous conversion
-std::ostream& operator<<(std::ostream&, syntax_element_type);
-#endif
-
-struct re_syntax_base;
-
-/*** union offset_type ************************************************
-Points to another state in the machine. During machine construction
-we use integral offsets, but these are converted to pointers before
-execution of the machine.
-***********************************************************************/
-union offset_type
-{
- re_syntax_base* p;
- std::ptrdiff_t i;
-};
-
-/*** struct re_syntax_base ********************************************
-Base class for all states in the machine.
-***********************************************************************/
-struct re_syntax_base
-{
- syntax_element_type type; // what kind of state this is
- offset_type next; // next state in the machine
-};
-
-/*** struct re_brace **************************************************
-A marked parenthesis.
-***********************************************************************/
-struct re_brace : public re_syntax_base
-{
- // The index to match, can be zero (don't mark the sub-expression)
- // or negative (for perl style (?...) extentions):
- int index;
- bool icase;
-};
-
-/*** struct re_dot **************************************************
-Match anything.
-***********************************************************************/
-enum
-{
- dont_care = 1,
- force_not_newline = 0,
- force_newline = 2,
-
- test_not_newline = 2,
- test_newline = 3
-};
-struct re_dot : public re_syntax_base
-{
- unsigned char mask;
-};
-
-/*** struct re_literal ************************************************
-A string of literals, following this structure will be an
-array of characters: charT[length]
-***********************************************************************/
-struct re_literal : public re_syntax_base
-{
- unsigned int length;
-};
-
-/*** struct re_case ************************************************
-Indicates whether we are moving to a case insensive block or not
-***********************************************************************/
-struct re_case : public re_syntax_base
-{
- bool icase;
-};
-
-/*** struct re_set_long ***********************************************
-A wide character set of characters, following this structure will be
-an array of type charT:
-First csingles null-terminated strings
-Then 2 * cranges NULL terminated strings
-Then cequivalents NULL terminated strings
-***********************************************************************/
-template <class mask_type>
-struct re_set_long : public re_syntax_base
-{
- unsigned int csingles, cranges, cequivalents;
- mask_type cclasses;
- mask_type cnclasses;
- bool isnot;
- bool singleton;
-};
-
-/*** struct re_set ****************************************************
-A set of narrow-characters, matches any of _map which is none-zero
-***********************************************************************/
-struct re_set : public re_syntax_base
-{
- unsigned char _map[1 << CHAR_BIT];
-};
-
-/*** struct re_jump ***************************************************
-Jump to a new location in the machine (not next).
-***********************************************************************/
-struct re_jump : public re_syntax_base
-{
- offset_type alt; // location to jump to
-};
-
-/*** struct re_alt ***************************************************
-Jump to a new location in the machine (possibly next).
-***********************************************************************/
-struct re_alt : public re_jump
-{
- unsigned char _map[1 << CHAR_BIT]; // which characters can take the jump
- unsigned int can_be_null; // true if we match a NULL string
-};
-
-/*** struct re_repeat *************************************************
-Repeat a section of the machine
-***********************************************************************/
-struct re_repeat : public re_alt
-{
- std::size_t min, max; // min and max allowable repeats
- int state_id; // Unique identifier for this repeat
- bool leading; // True if this repeat is at the start of the machine (lets us optimize some searches)
- bool greedy; // True if this is a greedy repeat
-};
-
-/*** struct re_recurse ************************************************
-Recurse to a particular subexpression.
-**********************************************************************/
-struct re_recurse : public re_jump
-{
- int state_id; // identifier of first nested repeat within the recursion.
-};
-
-/*** enum re_jump_size_type *******************************************
-Provides compiled size of re_jump structure (allowing for trailing alignment).
-We provide this so we know how manybytes to insert when constructing the machine
-(The value of padding_mask is defined in regex_raw_buffer.hpp).
-***********************************************************************/
-enum re_jump_size_type
-{
- re_jump_size = (sizeof(re_jump) + padding_mask) & ~(padding_mask),
- re_repeater_size = (sizeof(re_repeat) + padding_mask) & ~(padding_mask),
- re_alt_size = (sizeof(re_alt) + padding_mask) & ~(padding_mask)
-};
-
-/*** proc re_is_set_member *********************************************
-Forward declaration: we'll need this one later...
-***********************************************************************/
-
-template<class charT, class traits>
-struct regex_data;
-
-template <class iterator, class charT, class traits_type, class char_classT>
-iterator BOOST_REGEX_CALL re_is_set_member(iterator next,
- iterator last,
- const re_set_long<char_classT>* set_,
- const regex_data<charT, traits_type>& e, bool icase);
-
-} // namespace re_detail
-
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/sub_match.hpp b/libcutl/cutl/details/boost/regex/v4/sub_match.hpp
deleted file mode 100644
index 53f0b27..0000000
--- a/libcutl/cutl/details/boost/regex/v4/sub_match.hpp
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE sub_match.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares template class sub_match.
- */
-
-#ifndef BOOST_REGEX_V4_SUB_MATCH_HPP
-#define BOOST_REGEX_V4_SUB_MATCH_HPP
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-namespace cutl_details_boost{
-
-template <class BidiIterator>
-struct sub_match : public std::pair<BidiIterator, BidiIterator>
-{
- typedef typename re_detail::regex_iterator_traits<BidiIterator>::value_type value_type;
-#if defined(BOOST_NO_STD_ITERATOR_TRAITS) || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- typedef std::ptrdiff_t difference_type;
-#else
- typedef typename re_detail::regex_iterator_traits<BidiIterator>::difference_type difference_type;
-#endif
- typedef BidiIterator iterator_type;
- typedef BidiIterator iterator;
- typedef BidiIterator const_iterator;
-
- bool matched;
-
- sub_match() : std::pair<BidiIterator, BidiIterator>(), matched(false) {}
- sub_match(BidiIterator i) : std::pair<BidiIterator, BidiIterator>(i, i), matched(false) {}
-#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
- && !BOOST_WORKAROUND(BOOST_MSVC, < 1310)\
- && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)\
- && !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042))
- template <class T, class A>
- operator std::basic_string<value_type, T, A> ()const
- {
- return matched ? std::basic_string<value_type, T, A>(this->first, this->second) : std::basic_string<value_type, T, A>();
- }
-#else
- operator std::basic_string<value_type> ()const
- {
- return str();
- }
-#endif
- difference_type BOOST_REGEX_CALL length()const
- {
- difference_type n = matched ? ::cutl_details_boost::re_detail::distance((BidiIterator)this->first, (BidiIterator)this->second) : 0;
- return n;
- }
- std::basic_string<value_type> str()const
- {
- std::basic_string<value_type> result;
- if(matched)
- {
- std::size_t len = ::cutl_details_boost::re_detail::distance((BidiIterator)this->first, (BidiIterator)this->second);
- result.reserve(len);
- BidiIterator i = this->first;
- while(i != this->second)
- {
- result.append(1, *i);
- ++i;
- }
- }
- return result;
- }
- int compare(const sub_match& s)const
- {
- if(matched != s.matched)
- return static_cast<int>(matched) - static_cast<int>(s.matched);
- return str().compare(s.str());
- }
- int compare(const std::basic_string<value_type>& s)const
- {
- return str().compare(s);
- }
- int compare(const value_type* p)const
- {
- return str().compare(p);
- }
-
- bool operator==(const sub_match& that)const
- { return compare(that) == 0; }
- bool BOOST_REGEX_CALL operator !=(const sub_match& that)const
- { return compare(that) != 0; }
- bool operator<(const sub_match& that)const
- { return compare(that) < 0; }
- bool operator>(const sub_match& that)const
- { return compare(that) > 0; }
- bool operator<=(const sub_match& that)const
- { return compare(that) <= 0; }
- bool operator>=(const sub_match& that)const
- { return compare(that) >= 0; }
-
-#ifdef BOOST_REGEX_MATCH_EXTRA
- typedef std::vector<sub_match<BidiIterator> > capture_sequence_type;
-
- const capture_sequence_type& captures()const
- {
- if(!m_captures)
- m_captures.reset(new capture_sequence_type());
- return *m_captures;
- }
- //
- // Private implementation API: DO NOT USE!
- //
- capture_sequence_type& get_captures()const
- {
- if(!m_captures)
- m_captures.reset(new capture_sequence_type());
- return *m_captures;
- }
-
-private:
- mutable cutl_details_boost::scoped_ptr<capture_sequence_type> m_captures;
-public:
-
-#endif
- sub_match(const sub_match& that, bool
-#ifdef BOOST_REGEX_MATCH_EXTRA
- deep_copy
-#endif
- = true
- )
- : std::pair<BidiIterator, BidiIterator>(that),
- matched(that.matched)
- {
-#ifdef BOOST_REGEX_MATCH_EXTRA
- if(that.m_captures)
- if(deep_copy)
- m_captures.reset(new capture_sequence_type(*(that.m_captures)));
-#endif
- }
- sub_match& operator=(const sub_match& that)
- {
- this->first = that.first;
- this->second = that.second;
- matched = that.matched;
-#ifdef BOOST_REGEX_MATCH_EXTRA
- if(that.m_captures)
- get_captures() = *(that.m_captures);
-#endif
- return *this;
- }
-
-
-#ifdef BOOST_OLD_REGEX_H
- //
- // the following are deprecated, do not use!!
- //
- operator int()const;
- operator unsigned int()const;
- operator short()const
- {
- return (short)(int)(*this);
- }
- operator unsigned short()const
- {
- return (unsigned short)(unsigned int)(*this);
- }
-#endif
-};
-
-typedef sub_match<const char*> csub_match;
-typedef sub_match<std::string::const_iterator> ssub_match;
-#ifndef BOOST_NO_WREGEX
-typedef sub_match<const wchar_t*> wcsub_match;
-typedef sub_match<std::wstring::const_iterator> wssub_match;
-#endif
-
-// comparison to std::basic_string<> part 1:
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator == (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
- const sub_match<RandomAccessIterator>& m)
-{ return s.compare(m.str()) == 0; }
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator != (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
- const sub_match<RandomAccessIterator>& m)
-{ return s.compare(m.str()) != 0; }
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator < (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
- const sub_match<RandomAccessIterator>& m)
-{ return s.compare(m.str()) < 0; }
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator <= (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
- const sub_match<RandomAccessIterator>& m)
-{ return s.compare(m.str()) <= 0; }
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator >= (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
- const sub_match<RandomAccessIterator>& m)
-{ return s.compare(m.str()) >= 0; }
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator > (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
- const sub_match<RandomAccessIterator>& m)
-{ return s.compare(m.str()) > 0; }
-// comparison to std::basic_string<> part 2:
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator == (const sub_match<RandomAccessIterator>& m,
- const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
-{ return m.str().compare(s) == 0; }
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator != (const sub_match<RandomAccessIterator>& m,
- const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
-{ return m.str().compare(s) != 0; }
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator < (const sub_match<RandomAccessIterator>& m,
- const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
-{ return m.str().compare(s) < 0; }
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator > (const sub_match<RandomAccessIterator>& m,
- const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
-{ return m.str().compare(s) > 0; }
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator <= (const sub_match<RandomAccessIterator>& m,
- const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
-{ return m.str().compare(s) <= 0; }
-template <class RandomAccessIterator, class traits, class Allocator>
-inline bool operator >= (const sub_match<RandomAccessIterator>& m,
- const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
-{ return m.str().compare(s) >= 0; }
-// comparison to const charT* part 1:
-template <class RandomAccessIterator>
-inline bool operator == (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
-{ return m.str().compare(s) == 0; }
-template <class RandomAccessIterator>
-inline bool operator != (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
-{ return m.str().compare(s) != 0; }
-template <class RandomAccessIterator>
-inline bool operator > (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
-{ return m.str().compare(s) > 0; }
-template <class RandomAccessIterator>
-inline bool operator < (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
-{ return m.str().compare(s) < 0; }
-template <class RandomAccessIterator>
-inline bool operator >= (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
-{ return m.str().compare(s) >= 0; }
-template <class RandomAccessIterator>
-inline bool operator <= (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
-{ return m.str().compare(s) <= 0; }
-// comparison to const charT* part 2:
-template <class RandomAccessIterator>
-inline bool operator == (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(s) == 0; }
-template <class RandomAccessIterator>
-inline bool operator != (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(s) != 0; }
-template <class RandomAccessIterator>
-inline bool operator < (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(s) > 0; }
-template <class RandomAccessIterator>
-inline bool operator > (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(s) < 0; }
-template <class RandomAccessIterator>
-inline bool operator <= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(s) >= 0; }
-template <class RandomAccessIterator>
-inline bool operator >= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(s) <= 0; }
-
-// comparison to const charT& part 1:
-template <class RandomAccessIterator>
-inline bool operator == (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
-{ return m.str().compare(0, m.length(), &s, 1) == 0; }
-template <class RandomAccessIterator>
-inline bool operator != (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
-{ return m.str().compare(0, m.length(), &s, 1) != 0; }
-template <class RandomAccessIterator>
-inline bool operator > (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
-{ return m.str().compare(0, m.length(), &s, 1) > 0; }
-template <class RandomAccessIterator>
-inline bool operator < (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
-{ return m.str().compare(0, m.length(), &s, 1) < 0; }
-template <class RandomAccessIterator>
-inline bool operator >= (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
-{ return m.str().compare(0, m.length(), &s, 1) >= 0; }
-template <class RandomAccessIterator>
-inline bool operator <= (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
-{ return m.str().compare(0, m.length(), &s, 1) <= 0; }
-// comparison to const charT* part 2:
-template <class RandomAccessIterator>
-inline bool operator == (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(0, m.length(), &s, 1) == 0; }
-template <class RandomAccessIterator>
-inline bool operator != (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(0, m.length(), &s, 1) != 0; }
-template <class RandomAccessIterator>
-inline bool operator < (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(0, m.length(), &s, 1) > 0; }
-template <class RandomAccessIterator>
-inline bool operator > (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(0, m.length(), &s, 1) < 0; }
-template <class RandomAccessIterator>
-inline bool operator <= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(0, m.length(), &s, 1) >= 0; }
-template <class RandomAccessIterator>
-inline bool operator >= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
- const sub_match<RandomAccessIterator>& m)
-{ return m.str().compare(0, m.length(), &s, 1) <= 0; }
-
-// addition operators:
-template <class RandomAccessIterator, class traits, class Allocator>
-inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>
-operator + (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
- const sub_match<RandomAccessIterator>& m)
-{
- std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> result;
- result.reserve(s.size() + m.length() + 1);
- return result.append(s).append(m.first, m.second);
-}
-template <class RandomAccessIterator, class traits, class Allocator>
-inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>
-operator + (const sub_match<RandomAccessIterator>& m,
- const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
-{
- std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> result;
- result.reserve(s.size() + m.length() + 1);
- return result.append(m.first, m.second).append(s);
-}
-#if !(defined(__GNUC__) && defined(BOOST_NO_STD_LOCALE))
-template <class RandomAccessIterator>
-inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
-operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
- const sub_match<RandomAccessIterator>& m)
-{
- std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
- result.reserve(std::char_traits<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>::length(s) + m.length() + 1);
- return result.append(s).append(m.first, m.second);
-}
-template <class RandomAccessIterator>
-inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
-operator + (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const * s)
-{
- std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
- result.reserve(std::char_traits<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>::length(s) + m.length() + 1);
- return result.append(m.first, m.second).append(s);
-}
-#else
-// worwaround versions:
-template <class RandomAccessIterator>
-inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
-operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
- const sub_match<RandomAccessIterator>& m)
-{
- return s + m.str();
-}
-template <class RandomAccessIterator>
-inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
-operator + (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const * s)
-{
- return m.str() + s;
-}
-#endif
-template <class RandomAccessIterator>
-inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
-operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
- const sub_match<RandomAccessIterator>& m)
-{
- std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
- result.reserve(m.length() + 2);
- return result.append(1, s).append(m.first, m.second);
-}
-template <class RandomAccessIterator>
-inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
-operator + (const sub_match<RandomAccessIterator>& m,
- typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
-{
- std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
- result.reserve(m.length() + 2);
- return result.append(m.first, m.second).append(1, s);
-}
-template <class RandomAccessIterator>
-inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
-operator + (const sub_match<RandomAccessIterator>& m1,
- const sub_match<RandomAccessIterator>& m2)
-{
- std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
- result.reserve(m1.length() + m2.length() + 1);
- return result.append(m1.first, m1.second).append(m2.first, m2.second);
-}
-#ifndef BOOST_NO_STD_LOCALE
-template <class charT, class traits, class RandomAccessIterator>
-std::basic_ostream<charT, traits>&
- operator << (std::basic_ostream<charT, traits>& os,
- const sub_match<RandomAccessIterator>& s)
-{
- return (os << s.str());
-}
-#else
-template <class RandomAccessIterator>
-std::ostream& operator << (std::ostream& os,
- const sub_match<RandomAccessIterator>& s)
-{
- return (os << s.str());
-}
-#endif
-
-#ifdef BOOST_OLD_REGEX_H
-namespace re_detail{
-template <class BidiIterator, class charT>
-int do_toi(BidiIterator i, BidiIterator j, char c, int radix)
-{
- std::string s(i, j);
- char* p;
- int result = std::strtol(s.c_str(), &p, radix);
- if(*p)raise_regex_exception("Bad sub-expression");
- return result;
-}
-
-//
-// helper:
-template <class I, class charT>
-int do_toi(I& i, I j, charT c)
-{
- int result = 0;
- while((i != j) && (isdigit(*i)))
- {
- result = result*10 + (*i - '0');
- ++i;
- }
- return result;
-}
-}
-
-
-template <class BidiIterator>
-sub_match<BidiIterator>::operator int()const
-{
- BidiIterator i = first;
- BidiIterator j = second;
- if(i == j)raise_regex_exception("Bad sub-expression");
- int neg = 1;
- if((i != j) && (*i == '-'))
- {
- neg = -1;
- ++i;
- }
- neg *= re_detail::do_toi(i, j, *i);
- if(i != j)raise_regex_exception("Bad sub-expression");
- return neg;
-}
-template <class BidiIterator>
-sub_match<BidiIterator>::operator unsigned int()const
-{
- BidiIterator i = first;
- BidiIterator j = second;
- if(i == j)
- raise_regex_exception("Bad sub-expression");
- return re_detail::do_toi(i, j, *first);
-}
-#endif
-
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
-
diff --git a/libcutl/cutl/details/boost/regex/v4/syntax_type.hpp b/libcutl/cutl/details/boost/regex/v4/syntax_type.hpp
deleted file mode 100644
index 4794c32..0000000
--- a/libcutl/cutl/details/boost/regex/v4/syntax_type.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- *
- * Copyright (c) 2003
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE syntax_type.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares regular expression synatx type enumerator.
- */
-
-#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP
-#define BOOST_REGEX_SYNTAX_TYPE_HPP
-
-namespace cutl_details_boost{
-namespace regex_constants{
-
-typedef unsigned char syntax_type;
-
-//
-// values chosen are binary compatible with previous version:
-//
-static const syntax_type syntax_char = 0;
-static const syntax_type syntax_open_mark = 1;
-static const syntax_type syntax_close_mark = 2;
-static const syntax_type syntax_dollar = 3;
-static const syntax_type syntax_caret = 4;
-static const syntax_type syntax_dot = 5;
-static const syntax_type syntax_star = 6;
-static const syntax_type syntax_plus = 7;
-static const syntax_type syntax_question = 8;
-static const syntax_type syntax_open_set = 9;
-static const syntax_type syntax_close_set = 10;
-static const syntax_type syntax_or = 11;
-static const syntax_type syntax_escape = 12;
-static const syntax_type syntax_dash = 14;
-static const syntax_type syntax_open_brace = 15;
-static const syntax_type syntax_close_brace = 16;
-static const syntax_type syntax_digit = 17;
-static const syntax_type syntax_comma = 27;
-static const syntax_type syntax_equal = 37;
-static const syntax_type syntax_colon = 36;
-static const syntax_type syntax_not = 53;
-
-// extensions:
-
-static const syntax_type syntax_hash = 13;
-static const syntax_type syntax_newline = 26;
-
-// escapes:
-
-typedef syntax_type escape_syntax_type;
-
-static const escape_syntax_type escape_type_word_assert = 18;
-static const escape_syntax_type escape_type_not_word_assert = 19;
-static const escape_syntax_type escape_type_control_f = 29;
-static const escape_syntax_type escape_type_control_n = 30;
-static const escape_syntax_type escape_type_control_r = 31;
-static const escape_syntax_type escape_type_control_t = 32;
-static const escape_syntax_type escape_type_control_v = 33;
-static const escape_syntax_type escape_type_ascii_control = 35;
-static const escape_syntax_type escape_type_hex = 34;
-static const escape_syntax_type escape_type_unicode = 0; // not used
-static const escape_syntax_type escape_type_identity = 0; // not used
-static const escape_syntax_type escape_type_backref = syntax_digit;
-static const escape_syntax_type escape_type_decimal = syntax_digit; // not used
-static const escape_syntax_type escape_type_class = 22;
-static const escape_syntax_type escape_type_not_class = 23;
-
-// extensions:
-
-static const escape_syntax_type escape_type_left_word = 20;
-static const escape_syntax_type escape_type_right_word = 21;
-static const escape_syntax_type escape_type_start_buffer = 24; // for \`
-static const escape_syntax_type escape_type_end_buffer = 25; // for \'
-static const escape_syntax_type escape_type_control_a = 28; // for \a
-static const escape_syntax_type escape_type_e = 38; // for \e
-static const escape_syntax_type escape_type_E = 47; // for \Q\E
-static const escape_syntax_type escape_type_Q = 48; // for \Q\E
-static const escape_syntax_type escape_type_X = 49; // for \X
-static const escape_syntax_type escape_type_C = 50; // for \C
-static const escape_syntax_type escape_type_Z = 51; // for \Z
-static const escape_syntax_type escape_type_G = 52; // for \G
-
-static const escape_syntax_type escape_type_property = 54; // for \p
-static const escape_syntax_type escape_type_not_property = 55; // for \P
-static const escape_syntax_type escape_type_named_char = 56; // for \N
-static const escape_syntax_type escape_type_extended_backref = 57; // for \g
-static const escape_syntax_type escape_type_reset_start_mark = 58; // for \K
-static const escape_syntax_type escape_type_line_ending = 59; // for \R
-
-static const escape_syntax_type syntax_max = 60;
-
-}
-}
-
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex/v4/u32regex_iterator.hpp b/libcutl/cutl/details/boost/regex/v4/u32regex_iterator.hpp
deleted file mode 100644
index 4a3068b..0000000
--- a/libcutl/cutl/details/boost/regex/v4/u32regex_iterator.hpp
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- *
- * Copyright (c) 2003
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE u32regex_iterator.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Provides u32regex_iterator implementation.
- */
-
-#ifndef BOOST_REGEX_V4_U32REGEX_ITERATOR_HPP
-#define BOOST_REGEX_V4_U32REGEX_ITERATOR_HPP
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-template <class BidirectionalIterator>
-class u32regex_iterator_implementation
-{
- typedef u32regex regex_type;
-
- match_results<BidirectionalIterator> what; // current match
- BidirectionalIterator base; // start of sequence
- BidirectionalIterator end; // end of sequence
- const regex_type re; // the expression
- match_flag_type flags; // flags for matching
-
-public:
- u32regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f)
- : base(), end(last), re(*p), flags(f){}
- bool init(BidirectionalIterator first)
- {
- base = first;
- return u32regex_search(first, end, what, re, flags, base);
- }
- bool compare(const u32regex_iterator_implementation& that)
- {
- if(this == &that) return true;
- return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second);
- }
- const match_results<BidirectionalIterator>& get()
- { return what; }
- bool next()
- {
- //if(what.prefix().first != what[0].second)
- // flags |= match_prev_avail;
- BidirectionalIterator next_start = what[0].second;
- match_flag_type f(flags);
- if(!what.length())
- f |= regex_constants::match_not_initial_null;
- //if(base != next_start)
- // f |= regex_constants::match_not_bob;
- bool result = u32regex_search(next_start, end, what, re, f, base);
- if(result)
- what.set_base(base);
- return result;
- }
-private:
- u32regex_iterator_implementation& operator=(const u32regex_iterator_implementation&);
-};
-
-template <class BidirectionalIterator>
-class u32regex_iterator
-#ifndef BOOST_NO_STD_ITERATOR
- : public std::iterator<
- std::forward_iterator_tag,
- match_results<BidirectionalIterator>,
- typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
- const match_results<BidirectionalIterator>*,
- const match_results<BidirectionalIterator>& >
-#endif
-{
-private:
- typedef u32regex_iterator_implementation<BidirectionalIterator> impl;
- typedef shared_ptr<impl> pimpl;
-public:
- typedef u32regex regex_type;
- typedef match_results<BidirectionalIterator> value_type;
- typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
- difference_type;
- typedef const value_type* pointer;
- typedef const value_type& reference;
- typedef std::forward_iterator_tag iterator_category;
-
- u32regex_iterator(){}
- u32regex_iterator(BidirectionalIterator a, BidirectionalIterator b,
- const regex_type& re,
- match_flag_type m = match_default)
- : pdata(new impl(&re, b, m))
- {
- if(!pdata->init(a))
- {
- pdata.reset();
- }
- }
- u32regex_iterator(const u32regex_iterator& that)
- : pdata(that.pdata) {}
- u32regex_iterator& operator=(const u32regex_iterator& that)
- {
- pdata = that.pdata;
- return *this;
- }
- bool operator==(const u32regex_iterator& that)const
- {
- if((pdata.get() == 0) || (that.pdata.get() == 0))
- return pdata.get() == that.pdata.get();
- return pdata->compare(*(that.pdata.get()));
- }
- bool operator!=(const u32regex_iterator& that)const
- { return !(*this == that); }
- const value_type& operator*()const
- { return pdata->get(); }
- const value_type* operator->()const
- { return &(pdata->get()); }
- u32regex_iterator& operator++()
- {
- cow();
- if(0 == pdata->next())
- {
- pdata.reset();
- }
- return *this;
- }
- u32regex_iterator operator++(int)
- {
- u32regex_iterator result(*this);
- ++(*this);
- return result;
- }
-private:
-
- pimpl pdata;
-
- void cow()
- {
- // copy-on-write
- if(pdata.get() && !pdata.unique())
- {
- pdata.reset(new impl(*(pdata.get())));
- }
- }
-};
-
-typedef u32regex_iterator<const char*> utf8regex_iterator;
-typedef u32regex_iterator<const UChar*> utf16regex_iterator;
-typedef u32regex_iterator<const UChar32*> utf32regex_iterator;
-
-inline u32regex_iterator<const char*> make_u32regex_iterator(const char* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_iterator<const char*>(p, p+std::strlen(p), e, m);
-}
-#ifndef BOOST_NO_WREGEX
-inline u32regex_iterator<const wchar_t*> make_u32regex_iterator(const wchar_t* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_iterator<const wchar_t*>(p, p+std::wcslen(p), e, m);
-}
-#endif
-#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
-inline u32regex_iterator<const UChar*> make_u32regex_iterator(const UChar* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_iterator<const UChar*>(p, p+u_strlen(p), e, m);
-}
-#endif
-template <class charT, class Traits, class Alloc>
-inline u32regex_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
- return u32regex_iterator<iter_type>(p.begin(), p.end(), e, m);
-}
-inline u32regex_iterator<const UChar*> make_u32regex_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, m);
-}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_V4_REGEX_ITERATOR_HPP
-
diff --git a/libcutl/cutl/details/boost/regex/v4/u32regex_token_iterator.hpp b/libcutl/cutl/details/boost/regex/v4/u32regex_token_iterator.hpp
deleted file mode 100644
index 0c7a533..0000000
--- a/libcutl/cutl/details/boost/regex/v4/u32regex_token_iterator.hpp
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- *
- * Copyright (c) 2003
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE u32regex_token_iterator.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Provides u32regex_token_iterator implementation.
- */
-
-#ifndef BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP
-#define BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP
-
-#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
- || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
- || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
-//
-// Borland C++ Builder 6, and Visual C++ 6,
-// can't cope with the array template constructor
-// so we have a template member that will accept any type as
-// argument, and then assert that is really is an array:
-//
-#include <cutl/details/boost/static_assert.hpp>
-#include <cutl/details/boost/type_traits/is_array.hpp>
-#endif
-
-namespace cutl_details_boost{
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
-# pragma warning(push)
-# pragma warning(disable:4700)
-#endif
-
-template <class BidirectionalIterator>
-class u32regex_token_iterator_implementation
-{
- typedef u32regex regex_type;
- typedef sub_match<BidirectionalIterator> value_type;
-
- match_results<BidirectionalIterator> what; // current match
- BidirectionalIterator end; // end of search area
- BidirectionalIterator base; // start of search area
- const regex_type re; // the expression
- match_flag_type flags; // match flags
- value_type result; // the current string result
- int N; // the current sub-expression being enumerated
- std::vector<int> subs; // the sub-expressions to enumerate
-
-public:
- u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, int sub, match_flag_type f)
- : end(last), re(*p), flags(f){ subs.push_back(sub); }
- u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector<int>& v, match_flag_type f)
- : end(last), re(*p), flags(f), subs(v){}
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- // can't reliably get this to work....
-#elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
- || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
- || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
- || BOOST_WORKAROUND(__HP_aCC, < 60700)
- template <class T>
- u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const T& submatches, match_flag_type f)
- : end(last), re(*p), flags(f)
- {
- // assert that T really is an array:
- BOOST_STATIC_ASSERT(::cutl_details_boost::is_array<T>::value);
- const std::size_t array_size = sizeof(T) / sizeof(submatches[0]);
- for(std::size_t i = 0; i < array_size; ++i)
- {
- subs.push_back(submatches[i]);
- }
- }
-#else
- template <std::size_t CN>
- u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const int (&submatches)[CN], match_flag_type f)
- : end(last), re(*p), flags(f)
- {
- for(std::size_t i = 0; i < CN; ++i)
- {
- subs.push_back(submatches[i]);
- }
- }
-#endif
-
- bool init(BidirectionalIterator first)
- {
- base = first;
- N = 0;
- if(u32regex_search(first, end, what, re, flags, base) == true)
- {
- N = 0;
- result = ((subs[N] == -1) ? what.prefix() : what[(int)subs[N]]);
- return true;
- }
- else if((subs[N] == -1) && (first != end))
- {
- result.first = first;
- result.second = end;
- result.matched = (first != end);
- N = -1;
- return true;
- }
- return false;
- }
- bool compare(const u32regex_token_iterator_implementation& that)
- {
- if(this == &that) return true;
- return (&re.get_data() == &that.re.get_data())
- && (end == that.end)
- && (flags == that.flags)
- && (N == that.N)
- && (what[0].first == that.what[0].first)
- && (what[0].second == that.what[0].second);
- }
- const value_type& get()
- { return result; }
- bool next()
- {
- if(N == -1)
- return false;
- if(N+1 < (int)subs.size())
- {
- ++N;
- result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
- return true;
- }
- //if(what.prefix().first != what[0].second)
- // flags |= match_prev_avail | regex_constants::match_not_bob;
- BidirectionalIterator last_end(what[0].second);
- if(u32regex_search(last_end, end, what, re, ((what[0].first == what[0].second) ? flags | regex_constants::match_not_initial_null : flags), base))
- {
- N =0;
- result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
- return true;
- }
- else if((last_end != end) && (subs[0] == -1))
- {
- N =-1;
- result.first = last_end;
- result.second = end;
- result.matched = (last_end != end);
- return true;
- }
- return false;
- }
-private:
- u32regex_token_iterator_implementation& operator=(const u32regex_token_iterator_implementation&);
-};
-
-template <class BidirectionalIterator>
-class u32regex_token_iterator
-#ifndef BOOST_NO_STD_ITERATOR
- : public std::iterator<
- std::forward_iterator_tag,
- sub_match<BidirectionalIterator>,
- typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
- const sub_match<BidirectionalIterator>*,
- const sub_match<BidirectionalIterator>& >
-#endif
-{
-private:
- typedef u32regex_token_iterator_implementation<BidirectionalIterator> impl;
- typedef shared_ptr<impl> pimpl;
-public:
- typedef u32regex regex_type;
- typedef sub_match<BidirectionalIterator> value_type;
- typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
- difference_type;
- typedef const value_type* pointer;
- typedef const value_type& reference;
- typedef std::forward_iterator_tag iterator_category;
-
- u32regex_token_iterator(){}
- u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
- int submatch = 0, match_flag_type m = match_default)
- : pdata(new impl(&re, b, submatch, m))
- {
- if(!pdata->init(a))
- pdata.reset();
- }
- u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
- const std::vector<int>& submatches, match_flag_type m = match_default)
- : pdata(new impl(&re, b, submatches, m))
- {
- if(!pdata->init(a))
- pdata.reset();
- }
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- // can't reliably get this to work....
-#elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
- || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
- || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
- || BOOST_WORKAROUND(__HP_aCC, < 60700)
- template <class T>
- u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
- const T& submatches, match_flag_type m = match_default)
- : pdata(new impl(&re, b, submatches, m))
- {
- if(!pdata->init(a))
- pdata.reset();
- }
-#else
- template <std::size_t N>
- u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
- const int (&submatches)[N], match_flag_type m = match_default)
- : pdata(new impl(&re, b, submatches, m))
- {
- if(!pdata->init(a))
- pdata.reset();
- }
-#endif
- u32regex_token_iterator(const u32regex_token_iterator& that)
- : pdata(that.pdata) {}
- u32regex_token_iterator& operator=(const u32regex_token_iterator& that)
- {
- pdata = that.pdata;
- return *this;
- }
- bool operator==(const u32regex_token_iterator& that)const
- {
- if((pdata.get() == 0) || (that.pdata.get() == 0))
- return pdata.get() == that.pdata.get();
- return pdata->compare(*(that.pdata.get()));
- }
- bool operator!=(const u32regex_token_iterator& that)const
- { return !(*this == that); }
- const value_type& operator*()const
- { return pdata->get(); }
- const value_type* operator->()const
- { return &(pdata->get()); }
- u32regex_token_iterator& operator++()
- {
- cow();
- if(0 == pdata->next())
- {
- pdata.reset();
- }
- return *this;
- }
- u32regex_token_iterator operator++(int)
- {
- u32regex_token_iterator result(*this);
- ++(*this);
- return result;
- }
-private:
-
- pimpl pdata;
-
- void cow()
- {
- // copy-on-write
- if(pdata.get() && !pdata.unique())
- {
- pdata.reset(new impl(*(pdata.get())));
- }
- }
-};
-
-typedef u32regex_token_iterator<const char*> utf8regex_token_iterator;
-typedef u32regex_token_iterator<const UChar*> utf16regex_token_iterator;
-typedef u32regex_token_iterator<const UChar32*> utf32regex_token_iterator;
-
-// construction from an integral sub_match state_id:
-inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m);
-}
-#ifndef BOOST_NO_WREGEX
-inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
-}
-#endif
-#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
-inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, submatch, m);
-}
-#endif
-template <class charT, class Traits, class Alloc>
-inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
- return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, submatch, m);
-}
-inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
-}
-
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-// construction from a reference to an array:
-template <std::size_t N>
-inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m);
-}
-#ifndef BOOST_NO_WREGEX
-template <std::size_t N>
-inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
-}
-#endif
-#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
-template <std::size_t N>
-inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, submatch, m);
-}
-#endif
-template <class charT, class Traits, class Alloc, std::size_t N>
-inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
-{
- typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
- return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, submatch, m);
-}
-template <std::size_t N>
-inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
-}
-#endif // BOOST_MSVC < 1300
-
-// construction from a vector of sub_match state_id's:
-inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m);
-}
-#ifndef BOOST_NO_WREGEX
-inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
-}
-#endif
-#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
-inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, submatch, m);
-}
-#endif
-template <class charT, class Traits, class Alloc>
-inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
- return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, submatch, m);
-}
-inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
-{
- return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
-}
-
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
-# pragma warning(pop)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
-
-
-
-
diff --git a/libcutl/cutl/details/boost/regex/v4/w32_regex_traits.hpp b/libcutl/cutl/details/boost/regex/v4/w32_regex_traits.hpp
deleted file mode 100644
index 454c915..0000000
--- a/libcutl/cutl/details/boost/regex/v4/w32_regex_traits.hpp
+++ /dev/null
@@ -1,741 +0,0 @@
-/*
- *
- * Copyright (c) 2004
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE w32_regex_traits.hpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Declares regular expression traits class w32_regex_traits.
- */
-
-#ifndef BOOST_W32_REGEX_TRAITS_HPP_INCLUDED
-#define BOOST_W32_REGEX_TRAITS_HPP_INCLUDED
-
-#ifndef BOOST_RE_PAT_EXCEPT_HPP
-#include <cutl/details/boost/regex/pattern_except.hpp>
-#endif
-#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
-#include <cutl/details/boost/regex/v4/regex_traits_defaults.hpp>
-#endif
-#ifdef BOOST_HAS_THREADS
-#include <cutl/details/boost/regex/pending/static_mutex.hpp>
-#endif
-#ifndef BOOST_REGEX_PRIMARY_TRANSFORM
-#include <cutl/details/boost/regex/v4/primary_transform.hpp>
-#endif
-#ifndef BOOST_REGEX_OBJECT_CACHE_HPP
-#include <cutl/details/boost/regex/pending/object_cache.hpp>
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4786)
-#pragma warning(disable:4800)
-#endif
-
-namespace cutl_details_boost{
-
-//
-// forward declaration is needed by some compilers:
-//
-template <class charT>
-class w32_regex_traits;
-
-namespace re_detail{
-
-//
-// start by typedeffing the types we'll need:
-//
-typedef ::cutl_details_boost::uint32_t lcid_type; // placeholder for LCID.
-typedef ::cutl_details_boost::shared_ptr<void> cat_type; // placeholder for dll HANDLE.
-
-//
-// then add wrappers around the actual Win32 API's (ie implementation hiding):
-//
-BOOST_REGEX_DECL lcid_type BOOST_REGEX_CALL w32_get_default_locale();
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char, lcid_type);
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t, lcid_type);
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type state_id);
-#endif
-#endif
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char, lcid_type);
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t, lcid_type);
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type state_id);
-#endif
-#endif
-BOOST_REGEX_DECL cat_type BOOST_REGEX_CALL w32_cat_open(const std::string& name);
-BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type state_id, int i, const std::string& def);
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type state_id, int i, const std::wstring& def);
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::basic_string<unsigned short>& def);
-#endif
-#endif
-BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type state_id, const char* p1, const char* p2);
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type state_id, const wchar_t* p1, const wchar_t* p2);
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transform(lcid_type state_id, const unsigned short* p1, const unsigned short* p2);
-#endif
-#endif
-BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type);
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type);
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type state_id);
-#endif
-#endif
-BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type);
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type);
-#endif
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type, cutl_details_boost::uint32_t mask, char c);
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type, cutl_details_boost::uint32_t mask, wchar_t c);
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type state_id, cutl_details_boost::uint32_t m, unsigned short c);
-#endif
-#endif
-//
-// class w32_regex_traits_base:
-// acts as a container for locale and the facets we are using.
-//
-template <class charT>
-struct w32_regex_traits_base
-{
- w32_regex_traits_base(lcid_type l)
- { imbue(l); }
- lcid_type imbue(lcid_type l);
-
- lcid_type m_locale;
-};
-
-template <class charT>
-inline lcid_type w32_regex_traits_base<charT>::imbue(lcid_type l)
-{
- lcid_type result(m_locale);
- m_locale = l;
- return result;
-}
-
-//
-// class w32_regex_traits_char_layer:
-// implements methods that require specialisation for narrow characters:
-//
-template <class charT>
-class w32_regex_traits_char_layer : public w32_regex_traits_base<charT>
-{
- typedef std::basic_string<charT> string_type;
- typedef std::map<charT, regex_constants::syntax_type> map_type;
- typedef typename map_type::const_iterator map_iterator_type;
-public:
- w32_regex_traits_char_layer(const lcid_type l);
-
- regex_constants::syntax_type syntax_type(charT c)const
- {
- map_iterator_type i = m_char_map.find(c);
- return ((i == m_char_map.end()) ? 0 : i->second);
- }
- regex_constants::escape_syntax_type escape_syntax_type(charT c) const
- {
- map_iterator_type i = m_char_map.find(c);
- if(i == m_char_map.end())
- {
- if(::cutl_details_boost::re_detail::w32_is_lower(c, this->m_locale)) return regex_constants::escape_type_class;
- if(::cutl_details_boost::re_detail::w32_is_upper(c, this->m_locale)) return regex_constants::escape_type_not_class;
- return 0;
- }
- return i->second;
- }
- charT tolower(charT c)const
- {
- return ::cutl_details_boost::re_detail::w32_tolower(c, this->m_locale);
- }
- bool isctype(cutl_details_boost::uint32_t mask, charT c)const
- {
- return ::cutl_details_boost::re_detail::w32_is(this->m_locale, mask, c);
- }
-
-private:
- string_type get_default_message(regex_constants::syntax_type);
- // TODO: use a hash table when available!
- map_type m_char_map;
-};
-
-template <class charT>
-w32_regex_traits_char_layer<charT>::w32_regex_traits_char_layer(::cutl_details_boost::re_detail::lcid_type l)
- : w32_regex_traits_base<charT>(l)
-{
- // we need to start by initialising our syntax map so we know which
- // character is used for which purpose:
- cat_type cat;
- std::string cat_name(w32_regex_traits<charT>::get_catalog_name());
- if(cat_name.size())
- {
- cat = ::cutl_details_boost::re_detail::w32_cat_open(cat_name);
- if(!cat)
- {
- std::string m("Unable to open message catalog: ");
- std::runtime_error err(m + cat_name);
- cutl_details_boost::re_detail::raise_runtime_error(err);
- }
- }
- //
- // if we have a valid catalog then load our messages:
- //
- if(cat)
- {
- for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
- {
- string_type mss = ::cutl_details_boost::re_detail::w32_cat_get(cat, this->m_locale, i, get_default_message(i));
- for(typename string_type::size_type j = 0; j < mss.size(); ++j)
- {
- this->m_char_map[mss[j]] = i;
- }
- }
- }
- else
- {
- for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
- {
- const char* ptr = get_default_syntax(i);
- while(ptr && *ptr)
- {
- this->m_char_map[static_cast<charT>(*ptr)] = i;
- ++ptr;
- }
- }
- }
-}
-
-template <class charT>
-typename w32_regex_traits_char_layer<charT>::string_type
- w32_regex_traits_char_layer<charT>::get_default_message(regex_constants::syntax_type i)
-{
- const char* ptr = get_default_syntax(i);
- string_type result;
- while(ptr && *ptr)
- {
- result.append(1, static_cast<charT>(*ptr));
- ++ptr;
- }
- return result;
-}
-
-//
-// specialised version for narrow characters:
-//
-template <>
-class BOOST_REGEX_DECL w32_regex_traits_char_layer<char> : public w32_regex_traits_base<char>
-{
- typedef std::string string_type;
-public:
- w32_regex_traits_char_layer(::cutl_details_boost::re_detail::lcid_type l)
- : w32_regex_traits_base<char>(l)
- {
- init();
- }
-
- regex_constants::syntax_type syntax_type(char c)const
- {
- return m_char_map[static_cast<unsigned char>(c)];
- }
- regex_constants::escape_syntax_type escape_syntax_type(char c) const
- {
- return m_char_map[static_cast<unsigned char>(c)];
- }
- char tolower(char c)const
- {
- return m_lower_map[static_cast<unsigned char>(c)];
- }
- bool isctype(cutl_details_boost::uint32_t mask, char c)const
- {
- return m_type_map[static_cast<unsigned char>(c)] & mask;
- }
-
-private:
- regex_constants::syntax_type m_char_map[1u << CHAR_BIT];
- char m_lower_map[1u << CHAR_BIT];
- cutl_details_boost::uint16_t m_type_map[1u << CHAR_BIT];
- void init();
-};
-
-//
-// class w32_regex_traits_implementation:
-// provides pimpl implementation for w32_regex_traits.
-//
-template <class charT>
-class w32_regex_traits_implementation : public w32_regex_traits_char_layer<charT>
-{
-public:
- typedef typename w32_regex_traits<charT>::char_class_type char_class_type;
- BOOST_STATIC_CONSTANT(char_class_type, mask_word = 0x0400); // must be C1_DEFINED << 1
- BOOST_STATIC_CONSTANT(char_class_type, mask_unicode = 0x0800); // must be C1_DEFINED << 2
- BOOST_STATIC_CONSTANT(char_class_type, mask_horizontal = 0x1000); // must be C1_DEFINED << 3
- BOOST_STATIC_CONSTANT(char_class_type, mask_vertical = 0x2000); // must be C1_DEFINED << 4
- BOOST_STATIC_CONSTANT(char_class_type, mask_base = 0x3ff); // all the masks used by the CT_CTYPE1 group
-
- typedef std::basic_string<charT> string_type;
- typedef charT char_type;
- w32_regex_traits_implementation(::cutl_details_boost::re_detail::lcid_type l);
- std::string error_string(regex_constants::error_type n) const
- {
- if(!m_error_strings.empty())
- {
- std::map<int, std::string>::const_iterator p = m_error_strings.find(n);
- return (p == m_error_strings.end()) ? std::string(get_default_error_string(n)) : p->second;
- }
- return get_default_error_string(n);
- }
- char_class_type lookup_classname(const charT* p1, const charT* p2) const
- {
- char_class_type result = lookup_classname_imp(p1, p2);
- if(result == 0)
- {
- typedef typename string_type::size_type size_type;
- string_type temp(p1, p2);
- for(size_type i = 0; i < temp.size(); ++i)
- temp[i] = this->tolower(temp[i]);
- result = lookup_classname_imp(&*temp.begin(), &*temp.begin() + temp.size());
- }
- return result;
- }
- string_type lookup_collatename(const charT* p1, const charT* p2) const;
- string_type transform_primary(const charT* p1, const charT* p2) const;
- string_type transform(const charT* p1, const charT* p2) const
- {
- return ::cutl_details_boost::re_detail::w32_transform(this->m_locale, p1, p2);
- }
-private:
- std::map<int, std::string> m_error_strings; // error messages indexed by numberic ID
- std::map<string_type, char_class_type> m_custom_class_names; // character class names
- std::map<string_type, string_type> m_custom_collate_names; // collating element names
- unsigned m_collate_type; // the form of the collation string
- charT m_collate_delim; // the collation group delimiter
- //
- // helpers:
- //
- char_class_type lookup_classname_imp(const charT* p1, const charT* p2) const;
-};
-
-template <class charT>
-typename w32_regex_traits_implementation<charT>::string_type
- w32_regex_traits_implementation<charT>::transform_primary(const charT* p1, const charT* p2) const
-{
- string_type result;
- //
- // What we do here depends upon the format of the sort key returned by
- // sort key returned by this->transform:
- //
- switch(m_collate_type)
- {
- case sort_C:
- case sort_unknown:
- // the best we can do is translate to lower case, then get a regular sort key:
- {
- result.assign(p1, p2);
- typedef typename string_type::size_type size_type;
- for(size_type i = 0; i < result.size(); ++i)
- result[i] = this->tolower(result[i]);
- result = this->transform(&*result.begin(), &*result.begin() + result.size());
- break;
- }
- case sort_fixed:
- {
- // get a regular sort key, and then truncate it:
- result.assign(this->transform(p1, p2));
- result.erase(this->m_collate_delim);
- break;
- }
- case sort_delim:
- // get a regular sort key, and then truncate everything after the delim:
- result.assign(this->transform(p1, p2));
- std::size_t i;
- for(i = 0; i < result.size(); ++i)
- {
- if(result[i] == m_collate_delim)
- break;
- }
- result.erase(i);
- break;
- }
- if(result.empty())
- result = string_type(1, charT(0));
- return result;
-}
-
-template <class charT>
-typename w32_regex_traits_implementation<charT>::string_type
- w32_regex_traits_implementation<charT>::lookup_collatename(const charT* p1, const charT* p2) const
-{
- typedef typename std::map<string_type, string_type>::const_iterator iter_type;
- if(m_custom_collate_names.size())
- {
- iter_type pos = m_custom_collate_names.find(string_type(p1, p2));
- if(pos != m_custom_collate_names.end())
- return pos->second;
- }
-#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
- && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
- && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
- std::string name(p1, p2);
-#else
- std::string name;
- const charT* p0 = p1;
- while(p0 != p2)
- name.append(1, char(*p0++));
-#endif
- name = lookup_default_collate_name(name);
-#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
- && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
- && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
- if(name.size())
- return string_type(name.begin(), name.end());
-#else
- if(name.size())
- {
- string_type result;
- typedef std::string::const_iterator iter;
- iter b = name.begin();
- iter e = name.end();
- while(b != e)
- result.append(1, charT(*b++));
- return result;
- }
-#endif
- if(p2 - p1 == 1)
- return string_type(1, *p1);
- return string_type();
-}
-
-template <class charT>
-w32_regex_traits_implementation<charT>::w32_regex_traits_implementation(::cutl_details_boost::re_detail::lcid_type l)
-: w32_regex_traits_char_layer<charT>(l)
-{
- cat_type cat;
- std::string cat_name(w32_regex_traits<charT>::get_catalog_name());
- if(cat_name.size())
- {
- cat = ::cutl_details_boost::re_detail::w32_cat_open(cat_name);
- if(!cat)
- {
- std::string m("Unable to open message catalog: ");
- std::runtime_error err(m + cat_name);
- cutl_details_boost::re_detail::raise_runtime_error(err);
- }
- }
- //
- // if we have a valid catalog then load our messages:
- //
- if(cat)
- {
- //
- // Error messages:
- //
- for(cutl_details_boost::regex_constants::error_type i = static_cast<cutl_details_boost::regex_constants::error_type>(0);
- i <= cutl_details_boost::regex_constants::error_unknown;
- i = static_cast<cutl_details_boost::regex_constants::error_type>(i + 1))
- {
- const char* p = get_default_error_string(i);
- string_type default_message;
- while(*p)
- {
- default_message.append(1, static_cast<charT>(*p));
- ++p;
- }
- string_type s = ::cutl_details_boost::re_detail::w32_cat_get(cat, this->m_locale, i+200, default_message);
- std::string result;
- for(std::string::size_type j = 0; j < s.size(); ++j)
- {
- result.append(1, static_cast<char>(s[j]));
- }
- m_error_strings[i] = result;
- }
- //
- // Custom class names:
- //
- static const char_class_type masks[14] =
- {
- 0x0104u, // C1_ALPHA | C1_DIGIT
- 0x0100u, // C1_ALPHA
- 0x0020u, // C1_CNTRL
- 0x0004u, // C1_DIGIT
- (~(0x0020u|0x0008u) & 0x01ffu) | 0x0400u, // not C1_CNTRL or C1_SPACE
- 0x0002u, // C1_LOWER
- (~0x0020u & 0x01ffu) | 0x0400, // not C1_CNTRL
- 0x0010u, // C1_PUNCT
- 0x0008u, // C1_SPACE
- 0x0001u, // C1_UPPER
- 0x0080u, // C1_XDIGIT
- 0x0040u, // C1_BLANK
- w32_regex_traits_implementation<charT>::mask_word,
- w32_regex_traits_implementation<charT>::mask_unicode,
- };
- static const string_type null_string;
- for(unsigned int j = 0; j <= 13; ++j)
- {
- string_type s(::cutl_details_boost::re_detail::w32_cat_get(cat, this->m_locale, j+300, null_string));
- if(s.size())
- this->m_custom_class_names[s] = masks[j];
- }
- }
- //
- // get the collation format used by m_pcollate:
- //
- m_collate_type = re_detail::find_sort_syntax(this, &m_collate_delim);
-}
-
-template <class charT>
-typename w32_regex_traits_implementation<charT>::char_class_type
- w32_regex_traits_implementation<charT>::lookup_classname_imp(const charT* p1, const charT* p2) const
-{
- static const char_class_type masks[22] =
- {
- 0,
- 0x0104u, // C1_ALPHA | C1_DIGIT
- 0x0100u, // C1_ALPHA
- 0x0040u, // C1_BLANK
- 0x0020u, // C1_CNTRL
- 0x0004u, // C1_DIGIT
- 0x0004u, // C1_DIGIT
- (~(0x0020u|0x0008u|0x0040) & 0x01ffu) | 0x0400u, // not C1_CNTRL or C1_SPACE or C1_BLANK
- w32_regex_traits_implementation<charT>::mask_horizontal,
- 0x0002u, // C1_LOWER
- 0x0002u, // C1_LOWER
- (~0x0020u & 0x01ffu) | 0x0400, // not C1_CNTRL
- 0x0010u, // C1_PUNCT
- 0x0008u, // C1_SPACE
- 0x0008u, // C1_SPACE
- 0x0001u, // C1_UPPER
- w32_regex_traits_implementation<charT>::mask_unicode,
- 0x0001u, // C1_UPPER
- w32_regex_traits_implementation<charT>::mask_vertical,
- 0x0104u | w32_regex_traits_implementation<charT>::mask_word,
- 0x0104u | w32_regex_traits_implementation<charT>::mask_word,
- 0x0080u, // C1_XDIGIT
- };
- if(m_custom_class_names.size())
- {
- typedef typename std::map<std::basic_string<charT>, char_class_type>::const_iterator map_iter;
- map_iter pos = m_custom_class_names.find(string_type(p1, p2));
- if(pos != m_custom_class_names.end())
- return pos->second;
- }
- std::size_t state_id = 1 + re_detail::get_default_class_id(p1, p2);
- if(state_id < sizeof(masks) / sizeof(masks[0]))
- return masks[state_id];
- return masks[0];
-}
-
-
-template <class charT>
-cutl_details_boost::shared_ptr<const w32_regex_traits_implementation<charT> > create_w32_regex_traits(::cutl_details_boost::re_detail::lcid_type l BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(charT))
-{
- // TODO: create a cache for previously constructed objects.
- return cutl_details_boost::object_cache< ::cutl_details_boost::re_detail::lcid_type, w32_regex_traits_implementation<charT> >::get(l, 5);
-}
-
-} // re_detail
-
-template <class charT>
-class w32_regex_traits
-{
-public:
- typedef charT char_type;
- typedef std::size_t size_type;
- typedef std::basic_string<char_type> string_type;
- typedef ::cutl_details_boost::re_detail::lcid_type locale_type;
- typedef cutl_details_boost::uint_least32_t char_class_type;
-
- struct boost_extensions_tag{};
-
- w32_regex_traits()
- : m_pimpl(re_detail::create_w32_regex_traits<charT>(::cutl_details_boost::re_detail::w32_get_default_locale()))
- { }
- static size_type length(const char_type* p)
- {
- return std::char_traits<charT>::length(p);
- }
- regex_constants::syntax_type syntax_type(charT c)const
- {
- return m_pimpl->syntax_type(c);
- }
- regex_constants::escape_syntax_type escape_syntax_type(charT c) const
- {
- return m_pimpl->escape_syntax_type(c);
- }
- charT translate(charT c) const
- {
- return c;
- }
- charT translate_nocase(charT c) const
- {
- return this->m_pimpl->tolower(c);
- }
- charT translate(charT c, bool icase) const
- {
- return icase ? this->m_pimpl->tolower(c) : c;
- }
- charT tolower(charT c) const
- {
- return this->m_pimpl->tolower(c);
- }
- charT toupper(charT c) const
- {
- return ::cutl_details_boost::re_detail::w32_toupper(c, this->m_pimpl->m_locale);
- }
- string_type transform(const charT* p1, const charT* p2) const
- {
- return ::cutl_details_boost::re_detail::w32_transform(this->m_pimpl->m_locale, p1, p2);
- }
- string_type transform_primary(const charT* p1, const charT* p2) const
- {
- return m_pimpl->transform_primary(p1, p2);
- }
- char_class_type lookup_classname(const charT* p1, const charT* p2) const
- {
- return m_pimpl->lookup_classname(p1, p2);
- }
- string_type lookup_collatename(const charT* p1, const charT* p2) const
- {
- return m_pimpl->lookup_collatename(p1, p2);
- }
- bool isctype(charT c, char_class_type f) const
- {
- if((f & re_detail::w32_regex_traits_implementation<charT>::mask_base)
- && (this->m_pimpl->isctype(f & re_detail::w32_regex_traits_implementation<charT>::mask_base, c)))
- return true;
- else if((f & re_detail::w32_regex_traits_implementation<charT>::mask_unicode) && re_detail::is_extended(c))
- return true;
- else if((f & re_detail::w32_regex_traits_implementation<charT>::mask_word) && (c == '_'))
- return true;
- else if((f & re_detail::w32_regex_traits_implementation<charT>::mask_vertical)
- && (::cutl_details_boost::re_detail::is_separator(c) || (c == '\v')))
- return true;
- else if((f & re_detail::w32_regex_traits_implementation<charT>::mask_horizontal)
- && this->isctype(c, 0x0008u) && !this->isctype(c, re_detail::w32_regex_traits_implementation<charT>::mask_vertical))
- return true;
- return false;
- }
- int toi(const charT*& p1, const charT* p2, int radix)const
- {
- return ::cutl_details_boost::re_detail::global_toi(p1, p2, radix, *this);
- }
- int value(charT c, int radix)const
- {
- int result = ::cutl_details_boost::re_detail::global_value(c);
- return result < radix ? result : -1;
- }
- locale_type imbue(locale_type l)
- {
- ::cutl_details_boost::re_detail::lcid_type result(getloc());
- m_pimpl = re_detail::create_w32_regex_traits<charT>(l);
- return result;
- }
- locale_type getloc()const
- {
- return m_pimpl->m_locale;
- }
- std::string error_string(regex_constants::error_type n) const
- {
- return m_pimpl->error_string(n);
- }
-
- //
- // extension:
- // set the name of the message catalog in use (defaults to "boost_regex").
- //
- static std::string catalog_name(const std::string& name);
- static std::string get_catalog_name();
-
-private:
- cutl_details_boost::shared_ptr<const re_detail::w32_regex_traits_implementation<charT> > m_pimpl;
- //
- // catalog name handler:
- //
- static std::string& get_catalog_name_inst();
-
-#ifdef BOOST_HAS_THREADS
- static static_mutex& get_mutex_inst();
-#endif
-};
-
-template <class charT>
-std::string w32_regex_traits<charT>::catalog_name(const std::string& name)
-{
-#ifdef BOOST_HAS_THREADS
- static_mutex::scoped_lock lk(get_mutex_inst());
-#endif
- std::string result(get_catalog_name_inst());
- get_catalog_name_inst() = name;
- return result;
-}
-
-template <class charT>
-std::string& w32_regex_traits<charT>::get_catalog_name_inst()
-{
- static std::string s_name;
- return s_name;
-}
-
-template <class charT>
-std::string w32_regex_traits<charT>::get_catalog_name()
-{
-#ifdef BOOST_HAS_THREADS
- static_mutex::scoped_lock lk(get_mutex_inst());
-#endif
- std::string result(get_catalog_name_inst());
- return result;
-}
-
-#ifdef BOOST_HAS_THREADS
-template <class charT>
-static_mutex& w32_regex_traits<charT>::get_mutex_inst()
-{
- static static_mutex s_mutex = BOOST_STATIC_MUTEX_INIT;
- return s_mutex;
-}
-#endif
-
-
-} // boost
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable: 4103)
-#endif
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/regex_fwd.hpp b/libcutl/cutl/details/boost/regex_fwd.hpp
deleted file mode 100644
index d186a05..0000000
--- a/libcutl/cutl/details/boost/regex_fwd.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
-
- /*
- * LOCATION: see http://www.boost.org/libs/regex for documentation.
- * FILE regex_fwd.cpp
- * VERSION see <cutl/details/boost/version.hpp>
- * DESCRIPTION: Forward declares cutl_details_boost::basic_regex<> and
- * associated typedefs.
- */
-
-#ifndef BOOST_REGEX_FWD_HPP
-#define BOOST_REGEX_FWD_HPP
-
-#ifndef BOOST_REGEX_CONFIG_HPP
-#include <cutl/details/boost/regex/config.hpp>
-#endif
-
-#include <cutl/details/boost/regex/v4/regex_fwd.hpp>
-
-#endif
-
-
-
-
diff --git a/libcutl/cutl/details/boost/scoped_array.hpp b/libcutl/cutl/details/boost/scoped_array.hpp
deleted file mode 100644
index 882d949..0000000
--- a/libcutl/cutl/details/boost/scoped_array.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef BOOST_SCOPED_ARRAY_HPP_INCLUDED
-#define BOOST_SCOPED_ARRAY_HPP_INCLUDED
-
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001, 2002 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// http://www.boost.org/libs/smart_ptr/scoped_array.htm
-//
-
-#include <cutl/details/boost/smart_ptr/scoped_array.hpp>
-
-#endif // #ifndef BOOST_SCOPED_ARRAY_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/scoped_ptr.hpp b/libcutl/cutl/details/boost/scoped_ptr.hpp
deleted file mode 100644
index 8e78023..0000000
--- a/libcutl/cutl/details/boost/scoped_ptr.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef BOOST_SCOPED_PTR_HPP_INCLUDED
-#define BOOST_SCOPED_PTR_HPP_INCLUDED
-
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001, 2002 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// http://www.boost.org/libs/smart_ptr/scoped_ptr.htm
-//
-
-#include <cutl/details/boost/smart_ptr/scoped_ptr.hpp>
-
-#endif // #ifndef BOOST_SCOPED_PTR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/shared_ptr.hpp b/libcutl/cutl/details/boost/shared_ptr.hpp
deleted file mode 100644
index 169ca6c..0000000
--- a/libcutl/cutl/details/boost/shared_ptr.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef BOOST_SHARED_PTR_HPP_INCLUDED
-#define BOOST_SHARED_PTR_HPP_INCLUDED
-
-//
-// shared_ptr.hpp
-//
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001-2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/smart_ptr/shared_ptr.htm for documentation.
-//
-
-#include <cutl/details/boost/smart_ptr/shared_ptr.hpp>
-
-#endif // #ifndef BOOST_SHARED_PTR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/bad_weak_ptr.hpp b/libcutl/cutl/details/boost/smart_ptr/bad_weak_ptr.hpp
deleted file mode 100644
index 7d4cdf5..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/bad_weak_ptr.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef BOOST_SMART_PTR_BAD_WEAK_PTR_HPP_INCLUDED
-#define BOOST_SMART_PTR_BAD_WEAK_PTR_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/smart_ptr/bad_weak_ptr.hpp
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <exception>
-
-#ifdef __BORLANDC__
-# pragma warn -8026 // Functions with excep. spec. are not expanded inline
-#endif
-
-namespace cutl_details_boost
-{
-
-// The standard library that comes with Borland C++ 5.5.1, 5.6.4
-// defines std::exception and its members as having C calling
-// convention (-pc). When the definition of bad_weak_ptr
-// is compiled with -ps, the compiler issues an error.
-// Hence, the temporary #pragma option -pc below.
-
-#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564
-# pragma option push -pc
-#endif
-
-class bad_weak_ptr: public std::exception
-{
-public:
-
- virtual char const * what() const throw()
- {
- return "tr1::bad_weak_ptr";
- }
-};
-
-#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564
-# pragma option pop
-#endif
-
-} // namespace cutl_details_boost
-
-#ifdef __BORLANDC__
-# pragma warn .8026 // Functions with excep. spec. are not expanded inline
-#endif
-
-#endif // #ifndef BOOST_SMART_PTR_BAD_WEAK_PTR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count.hpp
deleted file mode 100644
index f9de4a4..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count.hpp
+++ /dev/null
@@ -1,119 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/detail/atomic_count.hpp - thread/SMP safe reference counter
-//
-// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// typedef <implementation-defined> cutl_details_boost::detail::atomic_count;
-//
-// atomic_count a(n);
-//
-// (n is convertible to long)
-//
-// Effects: Constructs an atomic_count with an initial value of n
-//
-// a;
-//
-// Returns: (long) the current value of a
-//
-// ++a;
-//
-// Effects: Atomically increments the value of a
-// Returns: (long) the new value of a
-//
-// --a;
-//
-// Effects: Atomically decrements the value of a
-// Returns: (long) the new value of a
-//
-// Important note: when --a returns zero, it must act as a
-// read memory barrier (RMB); i.e. the calling thread must
-// have a synchronized view of the memory
-//
-// On Intel IA-32 (x86) memory is always synchronized, so this
-// is not a problem.
-//
-// On many architectures the atomic instructions already act as
-// a memory barrier.
-//
-// This property is necessary for proper reference counting, since
-// a thread can update the contents of a shared object, then
-// release its reference, and another thread may immediately
-// release the last reference causing object destruction.
-//
-// The destructor needs to have a synchronized view of the
-// object to perform proper cleanup.
-//
-// Original example by Alexander Terekhov:
-//
-// Given:
-//
-// - a mutable shared object OBJ;
-// - two threads THREAD1 and THREAD2 each holding
-// a private smart_ptr object pointing to that OBJ.
-//
-// t1: THREAD1 updates OBJ (thread-safe via some synchronization)
-// and a few cycles later (after "unlock") destroys smart_ptr;
-//
-// t2: THREAD2 destroys smart_ptr WITHOUT doing any synchronization
-// with respect to shared mutable object OBJ; OBJ destructors
-// are called driven by smart_ptr interface...
-//
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/smart_ptr/detail/sp_has_sync.hpp>
-
-#ifndef BOOST_HAS_THREADS
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-typedef long atomic_count;
-
-}
-
-}
-
-#elif defined(BOOST_AC_USE_PTHREADS)
-# include <cutl/details/boost/smart_ptr/detail/atomic_count_pthreads.hpp>
-
-#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) )
-# include <cutl/details/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp>
-
-#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-# include <cutl/details/boost/smart_ptr/detail/atomic_count_win32.hpp>
-
-#elif defined( BOOST_SP_HAS_SYNC )
-# include <cutl/details/boost/smart_ptr/detail/atomic_count_sync.hpp>
-
-#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
-# include <cutl/details/boost/smart_ptr/detail/atomic_count_gcc.hpp>
-
-#elif defined(BOOST_HAS_PTHREADS)
-
-# define BOOST_AC_USE_PTHREADS
-# include <cutl/details/boost/smart_ptr/detail/atomic_count_pthreads.hpp>
-
-#else
-
-// Use #define BOOST_DISABLE_THREADS to avoid the error
-#error Unrecognized threading platform
-
-#endif
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_gcc.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_gcc.hpp
deleted file mode 100644
index 6ea6dc2..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_gcc.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
-
-//
-// boost/detail/atomic_count_gcc.hpp
-//
-// atomic_count for GNU libstdc++ v3
-//
-// http://gcc.gnu.org/onlinedocs/porting/Thread-safety.html
-//
-// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org>
-// Copyright 2003-2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#if __GNUC__ * 100 + __GNUC_MINOR__ >= 402
-# include <ext/atomicity.h>
-#else
-# include <bits/atomicity.h>
-#endif
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-#if defined(__GLIBCXX__) // g++ 3.4+
-
-using __gnu_cxx::__atomic_add;
-using __gnu_cxx::__exchange_and_add;
-
-#endif
-
-class atomic_count
-{
-public:
-
- explicit atomic_count( long v ) : value_( v ) {}
-
- long operator++()
- {
- return __exchange_and_add( &value_, +1 ) + 1;
- }
-
- long operator--()
- {
- return __exchange_and_add( &value_, -1 ) - 1;
- }
-
- operator long() const
- {
- return __exchange_and_add( &value_, 0 );
- }
-
-private:
-
- atomic_count(atomic_count const &);
- atomic_count & operator=(atomic_count const &);
-
- mutable _Atomic_word value_;
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp
deleted file mode 100644
index 68a1388..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
-
-//
-// boost/detail/atomic_count_gcc_x86.hpp
-//
-// atomic_count for g++ on 486+/AMD64
-//
-// Copyright 2007 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class atomic_count
-{
-public:
-
- explicit atomic_count( long v ) : value_( static_cast< int >( v ) ) {}
-
- long operator++()
- {
- return atomic_exchange_and_add( &value_, +1 ) + 1;
- }
-
- long operator--()
- {
- return atomic_exchange_and_add( &value_, -1 ) - 1;
- }
-
- operator long() const
- {
- return atomic_exchange_and_add( &value_, 0 );
- }
-
-private:
-
- atomic_count(atomic_count const &);
- atomic_count & operator=(atomic_count const &);
-
- mutable int value_;
-
-private:
-
- static int atomic_exchange_and_add( int * pw, int dv )
- {
- // int r = *pw;
- // *pw += dv;
- // return r;
-
- int r;
-
- __asm__ __volatile__
- (
- "lock\n\t"
- "xadd %1, %0":
- "+m"( *pw ), "=r"( r ): // outputs (%0, %1)
- "1"( dv ): // inputs (%2 == %1)
- "memory", "cc" // clobbers
- );
-
- return r;
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_pthreads.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_pthreads.hpp
deleted file mode 100644
index 711494d..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_pthreads.hpp
+++ /dev/null
@@ -1,96 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
-
-//
-// boost/detail/atomic_count_pthreads.hpp
-//
-// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <pthread.h>
-
-//
-// The generic pthread_mutex-based implementation sometimes leads to
-// inefficiencies. Example: a class with two atomic_count members
-// can get away with a single mutex.
-//
-// Users can detect this situation by checking BOOST_AC_USE_PTHREADS.
-//
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class atomic_count
-{
-private:
-
- class scoped_lock
- {
- public:
-
- scoped_lock(pthread_mutex_t & m): m_(m)
- {
- pthread_mutex_lock(&m_);
- }
-
- ~scoped_lock()
- {
- pthread_mutex_unlock(&m_);
- }
-
- private:
-
- pthread_mutex_t & m_;
- };
-
-public:
-
- explicit atomic_count(long v): value_(v)
- {
- pthread_mutex_init(&mutex_, 0);
- }
-
- ~atomic_count()
- {
- pthread_mutex_destroy(&mutex_);
- }
-
- long operator++()
- {
- scoped_lock lock(mutex_);
- return ++value_;
- }
-
- long operator--()
- {
- scoped_lock lock(mutex_);
- return --value_;
- }
-
- operator long() const
- {
- scoped_lock lock(mutex_);
- return value_;
- }
-
-private:
-
- atomic_count(atomic_count const &);
- atomic_count & operator=(atomic_count const &);
-
- mutable pthread_mutex_t mutex_;
- long value_;
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_sync.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_sync.hpp
deleted file mode 100644
index 3be0447..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_sync.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
-
-//
-// boost/detail/atomic_count_sync.hpp
-//
-// atomic_count for g++ 4.1+
-//
-// http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Atomic-Builtins.html
-//
-// Copyright 2007 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#if defined( __ia64__ ) && defined( __INTEL_COMPILER )
-# include <ia64intrin.h>
-#endif
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class atomic_count
-{
-public:
-
- explicit atomic_count( long v ) : value_( v ) {}
-
- long operator++()
- {
- return __sync_add_and_fetch( &value_, 1 );
- }
-
- long operator--()
- {
- return __sync_add_and_fetch( &value_, -1 );
- }
-
- operator long() const
- {
- return __sync_fetch_and_add( &value_, 0 );
- }
-
-private:
-
- atomic_count(atomic_count const &);
- atomic_count & operator=(atomic_count const &);
-
- mutable long value_;
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_win32.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_win32.hpp
deleted file mode 100644
index e3ec802..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/atomic_count_win32.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/detail/atomic_count_win32.hpp
-//
-// Copyright (c) 2001-2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/detail/interlocked.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class atomic_count
-{
-public:
-
- explicit atomic_count( long v ): value_( v )
- {
- }
-
- long operator++()
- {
- return BOOST_INTERLOCKED_INCREMENT( &value_ );
- }
-
- long operator--()
- {
- return BOOST_INTERLOCKED_DECREMENT( &value_ );
- }
-
- operator long() const
- {
- return static_cast<long const volatile &>( value_ );
- }
-
-private:
-
- atomic_count( atomic_count const & );
- atomic_count & operator=( atomic_count const & );
-
- long value_;
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/lightweight_mutex.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/lightweight_mutex.hpp
deleted file mode 100644
index 48595b2..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/lightweight_mutex.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/detail/lightweight_mutex.hpp - lightweight mutex
-//
-// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// typedef <unspecified> cutl_details_boost::detail::lightweight_mutex;
-//
-// cutl_details_boost::detail::lightweight_mutex is a header-only implementation of
-// a subset of the Mutex concept requirements:
-//
-// http://www.boost.org/doc/html/threads/concepts.html#threads.concepts.Mutex
-//
-// It maps to a CRITICAL_SECTION on Windows or a pthread_mutex on POSIX.
-//
-
-#include <cutl/details/boost/config.hpp>
-
-#if !defined(BOOST_HAS_THREADS)
-# include <cutl/details/boost/smart_ptr/detail/lwm_nop.hpp>
-#elif defined(BOOST_HAS_PTHREADS)
-# include <cutl/details/boost/smart_ptr/detail/lwm_pthreads.hpp>
-#elif defined(BOOST_HAS_WINTHREADS) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-# include <cutl/details/boost/smart_ptr/detail/lwm_win32_cs.hpp>
-#else
-// Use #define BOOST_DISABLE_THREADS to avoid the error
-# error Unrecognized threading platform
-#endif
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/lwm_nop.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/lwm_nop.hpp
deleted file mode 100644
index dd8c992..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/lwm_nop.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_LWM_NOP_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_LWM_NOP_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/detail/lwm_nop.hpp
-//
-// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class lightweight_mutex
-{
-public:
-
- typedef lightweight_mutex scoped_lock;
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_LWM_NOP_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/lwm_pthreads.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/lwm_pthreads.hpp
deleted file mode 100644
index c3509f5..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/lwm_pthreads.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_LWM_PTHREADS_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_LWM_PTHREADS_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/detail/lwm_pthreads.hpp
-//
-// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/assert.hpp>
-#include <pthread.h>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class lightweight_mutex
-{
-private:
-
- pthread_mutex_t m_;
-
- lightweight_mutex(lightweight_mutex const &);
- lightweight_mutex & operator=(lightweight_mutex const &);
-
-public:
-
- lightweight_mutex()
- {
-
-// HPUX 10.20 / DCE has a nonstandard pthread_mutex_init
-
-#if defined(__hpux) && defined(_DECTHREADS_)
- BOOST_VERIFY( pthread_mutex_init( &m_, pthread_mutexattr_default ) == 0 );
-#else
- BOOST_VERIFY( pthread_mutex_init( &m_, 0 ) == 0 );
-#endif
- }
-
- ~lightweight_mutex()
- {
- BOOST_VERIFY( pthread_mutex_destroy( &m_ ) == 0 );
- }
-
- class scoped_lock;
- friend class scoped_lock;
-
- class scoped_lock
- {
- private:
-
- pthread_mutex_t & m_;
-
- scoped_lock(scoped_lock const &);
- scoped_lock & operator=(scoped_lock const &);
-
- public:
-
- scoped_lock(lightweight_mutex & m): m_(m.m_)
- {
- BOOST_VERIFY( pthread_mutex_lock( &m_ ) == 0 );
- }
-
- ~scoped_lock()
- {
- BOOST_VERIFY( pthread_mutex_unlock( &m_ ) == 0 );
- }
- };
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_LWM_PTHREADS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/lwm_win32_cs.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/lwm_win32_cs.hpp
deleted file mode 100644
index 3e8eb59..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/lwm_win32_cs.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_LWM_WIN32_CS_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_LWM_WIN32_CS_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/detail/lwm_win32_cs.hpp
-//
-// Copyright (c) 2002, 2003 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifdef BOOST_USE_WINDOWS_H
-# include <windows.h>
-#endif
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-#ifndef BOOST_USE_WINDOWS_H
-
-struct critical_section
-{
- struct critical_section_debug * DebugInfo;
- long LockCount;
- long RecursionCount;
- void * OwningThread;
- void * LockSemaphore;
-#if defined(_WIN64)
- unsigned __int64 SpinCount;
-#else
- unsigned long SpinCount;
-#endif
-};
-
-extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(critical_section *);
-extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(critical_section *);
-extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(critical_section *);
-extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(critical_section *);
-
-#else
-
-typedef ::CRITICAL_SECTION critical_section;
-
-#endif // #ifndef BOOST_USE_WINDOWS_H
-
-class lightweight_mutex
-{
-private:
-
- critical_section cs_;
-
- lightweight_mutex(lightweight_mutex const &);
- lightweight_mutex & operator=(lightweight_mutex const &);
-
-public:
-
- lightweight_mutex()
- {
- InitializeCriticalSection(&cs_);
- }
-
- ~lightweight_mutex()
- {
- DeleteCriticalSection(&cs_);
- }
-
- class scoped_lock;
- friend class scoped_lock;
-
- class scoped_lock
- {
- private:
-
- lightweight_mutex & m_;
-
- scoped_lock(scoped_lock const &);
- scoped_lock & operator=(scoped_lock const &);
-
- public:
-
- explicit scoped_lock(lightweight_mutex & m): m_(m)
- {
- EnterCriticalSection(&m_.cs_);
- }
-
- ~scoped_lock()
- {
- LeaveCriticalSection(&m_.cs_);
- }
- };
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_LWM_WIN32_CS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/operator_bool.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/operator_bool.hpp
deleted file mode 100644
index 8ae1527..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/operator_bool.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-// This header intentionally has no include guards.
-//
-// Copyright (c) 2001-2009, 2012 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-
-#if !defined( BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS ) && !defined( BOOST_NO_CXX11_NULLPTR )
-
- explicit operator bool () const BOOST_NOEXCEPT
- {
- return px != 0;
- }
-
-#elif ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, < 0x570) ) || defined(__CINT__)
-
- operator bool () const BOOST_NOEXCEPT
- {
- return px != 0;
- }
-
-#elif defined( _MANAGED )
-
- static void unspecified_bool( this_type*** )
- {
- }
-
- typedef void (*unspecified_bool_type)( this_type*** );
-
- operator unspecified_bool_type() const BOOST_NOEXCEPT
- {
- return px == 0? 0: unspecified_bool;
- }
-
-#elif \
- ( defined(__MWERKS__) && BOOST_WORKAROUND(__MWERKS__, < 0x3200) ) || \
- ( defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 304) ) || \
- ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) )
-
- typedef element_type * (this_type::*unspecified_bool_type)() const;
-
- operator unspecified_bool_type() const BOOST_NOEXCEPT
- {
- return px == 0? 0: &this_type::get;
- }
-
-#else
-
- typedef element_type * this_type::*unspecified_bool_type;
-
- operator unspecified_bool_type() const BOOST_NOEXCEPT
- {
- return px == 0? 0: &this_type::px;
- }
-
-#endif
-
- // operator! is redundant, but some compilers need it
- bool operator! () const BOOST_NOEXCEPT
- {
- return px == 0;
- }
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/quick_allocator.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/quick_allocator.hpp
deleted file mode 100644
index 77e4731..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/quick_allocator.hpp
+++ /dev/null
@@ -1,199 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_QUICK_ALLOCATOR_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_QUICK_ALLOCATOR_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/quick_allocator.hpp
-//
-// Copyright (c) 2003 David Abrahams
-// Copyright (c) 2003 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/config.hpp>
-
-#include <cutl/details/boost/smart_ptr/detail/lightweight_mutex.hpp>
-#include <cutl/details/boost/type_traits/type_with_alignment.hpp>
-#include <cutl/details/boost/type_traits/alignment_of.hpp>
-
-#include <new> // ::operator new, ::operator delete
-#include <cstddef> // std::size_t
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-template<unsigned size, unsigned align_> union freeblock
-{
- typedef typename cutl_details_boost::type_with_alignment<align_>::type aligner_type;
- aligner_type aligner;
- char bytes[size];
- freeblock * next;
-};
-
-template<unsigned size, unsigned align_> struct allocator_impl
-{
- typedef freeblock<size, align_> block;
-
- // It may seem odd to use such small pages.
- //
- // However, on a typical Windows implementation that uses
- // the OS allocator, "normal size" pages interact with the
- // "ordinary" operator new, slowing it down dramatically.
- //
- // 512 byte pages are handled by the small object allocator,
- // and don't interfere with ::new.
- //
- // The other alternative is to use much bigger pages (1M.)
- //
- // It is surprisingly easy to hit pathological behavior by
- // varying the page size. g++ 2.96 on Red Hat Linux 7.2,
- // for example, passionately dislikes 496. 512 seems OK.
-
-#if defined(BOOST_QA_PAGE_SIZE)
-
- enum { items_per_page = BOOST_QA_PAGE_SIZE / size };
-
-#else
-
- enum { items_per_page = 512 / size }; // 1048560 / size
-
-#endif
-
-#ifdef BOOST_HAS_THREADS
-
- static lightweight_mutex & mutex()
- {
- static freeblock< sizeof( lightweight_mutex ), cutl_details_boost::alignment_of< lightweight_mutex >::value > fbm;
- static lightweight_mutex * pm = new( &fbm ) lightweight_mutex;
- return *pm;
- }
-
- static lightweight_mutex * mutex_init;
-
-#endif
-
- static block * free;
- static block * page;
- static unsigned last;
-
- static inline void * alloc()
- {
-#ifdef BOOST_HAS_THREADS
- lightweight_mutex::scoped_lock lock( mutex() );
-#endif
- if(block * x = free)
- {
- free = x->next;
- return x;
- }
- else
- {
- if(last == items_per_page)
- {
- // "Listen to me carefully: there is no memory leak"
- // -- Scott Meyers, Eff C++ 2nd Ed Item 10
- page = ::new block[items_per_page];
- last = 0;
- }
-
- return &page[last++];
- }
- }
-
- static inline void * alloc(std::size_t n)
- {
- if(n != size) // class-specific new called for a derived object
- {
- return ::operator new(n);
- }
- else
- {
-#ifdef BOOST_HAS_THREADS
- lightweight_mutex::scoped_lock lock( mutex() );
-#endif
- if(block * x = free)
- {
- free = x->next;
- return x;
- }
- else
- {
- if(last == items_per_page)
- {
- page = ::new block[items_per_page];
- last = 0;
- }
-
- return &page[last++];
- }
- }
- }
-
- static inline void dealloc(void * pv)
- {
- if(pv != 0) // 18.4.1.1/13
- {
-#ifdef BOOST_HAS_THREADS
- lightweight_mutex::scoped_lock lock( mutex() );
-#endif
- block * pb = static_cast<block *>(pv);
- pb->next = free;
- free = pb;
- }
- }
-
- static inline void dealloc(void * pv, std::size_t n)
- {
- if(n != size) // class-specific delete called for a derived object
- {
- ::operator delete(pv);
- }
- else if(pv != 0) // 18.4.1.1/13
- {
-#ifdef BOOST_HAS_THREADS
- lightweight_mutex::scoped_lock lock( mutex() );
-#endif
- block * pb = static_cast<block *>(pv);
- pb->next = free;
- free = pb;
- }
- }
-};
-
-#ifdef BOOST_HAS_THREADS
-
-template<unsigned size, unsigned align_>
- lightweight_mutex * allocator_impl<size, align_>::mutex_init = &allocator_impl<size, align_>::mutex();
-
-#endif
-
-template<unsigned size, unsigned align_>
- freeblock<size, align_> * allocator_impl<size, align_>::free = 0;
-
-template<unsigned size, unsigned align_>
- freeblock<size, align_> * allocator_impl<size, align_>::page = 0;
-
-template<unsigned size, unsigned align_>
- unsigned allocator_impl<size, align_>::last = allocator_impl<size, align_>::items_per_page;
-
-template<class T>
-struct quick_allocator: public allocator_impl< sizeof(T), cutl_details_boost::alignment_of<T>::value >
-{
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_QUICK_ALLOCATOR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/shared_count.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/shared_count.hpp
deleted file mode 100644
index 77aea5c..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/shared_count.hpp
+++ /dev/null
@@ -1,603 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SHARED_COUNT_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SHARED_COUNT_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/shared_count.hpp
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifdef __BORLANDC__
-# pragma warn -8027 // Functions containing try are not expanded inline
-#endif
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/checked_delete.hpp>
-#include <cutl/details/boost/throw_exception.hpp>
-#include <cutl/details/boost/smart_ptr/bad_weak_ptr.hpp>
-#include <cutl/details/boost/smart_ptr/detail/sp_counted_base.hpp>
-#include <cutl/details/boost/smart_ptr/detail/sp_counted_impl.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-// In order to avoid circular dependencies with Boost.TR1
-// we make sure that our include of <memory> doesn't try to
-// pull in the TR1 headers: that's why we use this header
-// rather than including <memory> directly:
-#include <cutl/details/boost/config/no_tr1/memory.hpp> // std::auto_ptr
-#include <functional> // std::less
-
-#ifdef BOOST_NO_EXCEPTIONS
-# include <new> // std::bad_alloc
-#endif
-
-#if !defined( BOOST_NO_CXX11_SMART_PTR )
-# include <cutl/details/boost/utility/addressof.hpp>
-#endif
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
-
-int const shared_count_id = 0x2C35F101;
-int const weak_count_id = 0x298C38A4;
-
-#endif
-
-struct sp_nothrow_tag {};
-
-template< class D > struct sp_inplace_tag
-{
-};
-
-#if !defined( BOOST_NO_CXX11_SMART_PTR )
-
-template< class T > class sp_reference_wrapper
-{
-public:
-
- explicit sp_reference_wrapper( T & t): t_( cutl_details_boost::addressof( t ) )
- {
- }
-
- template< class Y > void operator()( Y * p ) const
- {
- (*t_)( p );
- }
-
-private:
-
- T * t_;
-};
-
-template< class D > struct sp_convert_reference
-{
- typedef D type;
-};
-
-template< class D > struct sp_convert_reference< D& >
-{
- typedef sp_reference_wrapper< D > type;
-};
-
-#endif
-
-class weak_count;
-
-class shared_count
-{
-private:
-
- sp_counted_base * pi_;
-
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- int id_;
-#endif
-
- friend class weak_count;
-
-public:
-
- shared_count(): pi_(0) // nothrow
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
- {
- }
-
- template<class Y> explicit shared_count( Y * p ): pi_( 0 )
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
- {
-#ifndef BOOST_NO_EXCEPTIONS
-
- try
- {
- pi_ = new sp_counted_impl_p<Y>( p );
- }
- catch(...)
- {
- cutl_details_boost::checked_delete( p );
- throw;
- }
-
-#else
-
- pi_ = new sp_counted_impl_p<Y>( p );
-
- if( pi_ == 0 )
- {
- cutl_details_boost::checked_delete( p );
- cutl_details_boost::throw_exception( std::bad_alloc() );
- }
-
-#endif
- }
-
-#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, <= 1200 )
- template<class Y, class D> shared_count( Y * p, D d ): pi_(0)
-#else
- template<class P, class D> shared_count( P p, D d ): pi_(0)
-#endif
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
- {
-#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, <= 1200 )
- typedef Y* P;
-#endif
-#ifndef BOOST_NO_EXCEPTIONS
-
- try
- {
- pi_ = new sp_counted_impl_pd<P, D>(p, d);
- }
- catch(...)
- {
- d(p); // delete p
- throw;
- }
-
-#else
-
- pi_ = new sp_counted_impl_pd<P, D>(p, d);
-
- if(pi_ == 0)
- {
- d(p); // delete p
- cutl_details_boost::throw_exception(std::bad_alloc());
- }
-
-#endif
- }
-
-#if !defined( BOOST_NO_FUNCTION_TEMPLATE_ORDERING )
-
- template< class P, class D > shared_count( P p, sp_inplace_tag<D> ): pi_( 0 )
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
- {
-#ifndef BOOST_NO_EXCEPTIONS
-
- try
- {
- pi_ = new sp_counted_impl_pd< P, D >( p );
- }
- catch( ... )
- {
- D::operator_fn( p ); // delete p
- throw;
- }
-
-#else
-
- pi_ = new sp_counted_impl_pd< P, D >( p );
-
- if( pi_ == 0 )
- {
- D::operator_fn( p ); // delete p
- cutl_details_boost::throw_exception( std::bad_alloc() );
- }
-
-#endif // #ifndef BOOST_NO_EXCEPTIONS
- }
-
-#endif // !defined( BOOST_NO_FUNCTION_TEMPLATE_ORDERING )
-
- template<class P, class D, class A> shared_count( P p, D d, A a ): pi_( 0 )
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
- {
- typedef sp_counted_impl_pda<P, D, A> impl_type;
- typedef typename A::template rebind< impl_type >::other A2;
-
- A2 a2( a );
-
-#ifndef BOOST_NO_EXCEPTIONS
-
- try
- {
- pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
- new( static_cast< void* >( pi_ ) ) impl_type( p, d, a );
- }
- catch(...)
- {
- d( p );
-
- if( pi_ != 0 )
- {
- a2.deallocate( static_cast< impl_type* >( pi_ ), 1 );
- }
-
- throw;
- }
-
-#else
-
- pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
-
- if( pi_ != 0 )
- {
- new( static_cast< void* >( pi_ ) ) impl_type( p, d, a );
- }
- else
- {
- d( p );
- cutl_details_boost::throw_exception( std::bad_alloc() );
- }
-
-#endif
- }
-
-#if !defined( BOOST_NO_FUNCTION_TEMPLATE_ORDERING )
-
- template< class P, class D, class A > shared_count( P p, sp_inplace_tag< D >, A a ): pi_( 0 )
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
- {
- typedef sp_counted_impl_pda< P, D, A > impl_type;
- typedef typename A::template rebind< impl_type >::other A2;
-
- A2 a2( a );
-
-#ifndef BOOST_NO_EXCEPTIONS
-
- try
- {
- pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
- new( static_cast< void* >( pi_ ) ) impl_type( p, a );
- }
- catch(...)
- {
- D::operator_fn( p );
-
- if( pi_ != 0 )
- {
- a2.deallocate( static_cast< impl_type* >( pi_ ), 1 );
- }
-
- throw;
- }
-
-#else
-
- pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
-
- if( pi_ != 0 )
- {
- new( static_cast< void* >( pi_ ) ) impl_type( p, a );
- }
- else
- {
- D::operator_fn( p );
- cutl_details_boost::throw_exception( std::bad_alloc() );
- }
-
-#endif // #ifndef BOOST_NO_EXCEPTIONS
- }
-
-#endif // !defined( BOOST_NO_FUNCTION_TEMPLATE_ORDERING )
-
-#ifndef BOOST_NO_AUTO_PTR
-
- // auto_ptr<Y> is special cased to provide the strong guarantee
-
- template<class Y>
- explicit shared_count( std::auto_ptr<Y> & r ): pi_( new sp_counted_impl_p<Y>( r.get() ) )
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
- {
-#ifdef BOOST_NO_EXCEPTIONS
-
- if( pi_ == 0 )
- {
- cutl_details_boost::throw_exception(std::bad_alloc());
- }
-
-#endif
-
- r.release();
- }
-
-#endif
-
-#if !defined( BOOST_NO_CXX11_SMART_PTR )
-
- template<class Y, class D>
- explicit shared_count( std::unique_ptr<Y, D> & r ): pi_( 0 )
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
- {
- typedef typename sp_convert_reference<D>::type D2;
-
- D2 d2( r.get_deleter() );
- pi_ = new sp_counted_impl_pd< typename std::unique_ptr<Y, D>::pointer, D2 >( r.get(), d2 );
-
-#ifdef BOOST_NO_EXCEPTIONS
-
- if( pi_ == 0 )
- {
- cutl_details_boost::throw_exception( std::bad_alloc() );
- }
-
-#endif
-
- r.release();
- }
-
-#endif
-
- ~shared_count() // nothrow
- {
- if( pi_ != 0 ) pi_->release();
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- id_ = 0;
-#endif
- }
-
- shared_count(shared_count const & r): pi_(r.pi_) // nothrow
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
- {
- if( pi_ != 0 ) pi_->add_ref_copy();
- }
-
-#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
-
- shared_count(shared_count && r): pi_(r.pi_) // nothrow
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
- {
- r.pi_ = 0;
- }
-
-#endif
-
- explicit shared_count(weak_count const & r); // throws bad_weak_ptr when r.use_count() == 0
- shared_count( weak_count const & r, sp_nothrow_tag ); // constructs an empty *this when r.use_count() == 0
-
- shared_count & operator= (shared_count const & r) // nothrow
- {
- sp_counted_base * tmp = r.pi_;
-
- if( tmp != pi_ )
- {
- if( tmp != 0 ) tmp->add_ref_copy();
- if( pi_ != 0 ) pi_->release();
- pi_ = tmp;
- }
-
- return *this;
- }
-
- void swap(shared_count & r) // nothrow
- {
- sp_counted_base * tmp = r.pi_;
- r.pi_ = pi_;
- pi_ = tmp;
- }
-
- long use_count() const // nothrow
- {
- return pi_ != 0? pi_->use_count(): 0;
- }
-
- bool unique() const // nothrow
- {
- return use_count() == 1;
- }
-
- bool empty() const // nothrow
- {
- return pi_ == 0;
- }
-
- friend inline bool operator==(shared_count const & a, shared_count const & b)
- {
- return a.pi_ == b.pi_;
- }
-
- friend inline bool operator<(shared_count const & a, shared_count const & b)
- {
- return std::less<sp_counted_base *>()( a.pi_, b.pi_ );
- }
-
- void * get_deleter( sp_typeinfo const & ti ) const
- {
- return pi_? pi_->get_deleter( ti ): 0;
- }
-
- void * get_untyped_deleter() const
- {
- return pi_? pi_->get_untyped_deleter(): 0;
- }
-};
-
-
-class weak_count
-{
-private:
-
- sp_counted_base * pi_;
-
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- int id_;
-#endif
-
- friend class shared_count;
-
-public:
-
- weak_count(): pi_(0) // nothrow
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(weak_count_id)
-#endif
- {
- }
-
- weak_count(shared_count const & r): pi_(r.pi_) // nothrow
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(weak_count_id)
-#endif
- {
- if(pi_ != 0) pi_->weak_add_ref();
- }
-
- weak_count(weak_count const & r): pi_(r.pi_) // nothrow
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(weak_count_id)
-#endif
- {
- if(pi_ != 0) pi_->weak_add_ref();
- }
-
-// Move support
-
-#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
-
- weak_count(weak_count && r): pi_(r.pi_) // nothrow
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(weak_count_id)
-#endif
- {
- r.pi_ = 0;
- }
-
-#endif
-
- ~weak_count() // nothrow
- {
- if(pi_ != 0) pi_->weak_release();
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- id_ = 0;
-#endif
- }
-
- weak_count & operator= (shared_count const & r) // nothrow
- {
- sp_counted_base * tmp = r.pi_;
-
- if( tmp != pi_ )
- {
- if(tmp != 0) tmp->weak_add_ref();
- if(pi_ != 0) pi_->weak_release();
- pi_ = tmp;
- }
-
- return *this;
- }
-
- weak_count & operator= (weak_count const & r) // nothrow
- {
- sp_counted_base * tmp = r.pi_;
-
- if( tmp != pi_ )
- {
- if(tmp != 0) tmp->weak_add_ref();
- if(pi_ != 0) pi_->weak_release();
- pi_ = tmp;
- }
-
- return *this;
- }
-
- void swap(weak_count & r) // nothrow
- {
- sp_counted_base * tmp = r.pi_;
- r.pi_ = pi_;
- pi_ = tmp;
- }
-
- long use_count() const // nothrow
- {
- return pi_ != 0? pi_->use_count(): 0;
- }
-
- bool empty() const // nothrow
- {
- return pi_ == 0;
- }
-
- friend inline bool operator==(weak_count const & a, weak_count const & b)
- {
- return a.pi_ == b.pi_;
- }
-
- friend inline bool operator<(weak_count const & a, weak_count const & b)
- {
- return std::less<sp_counted_base *>()(a.pi_, b.pi_);
- }
-};
-
-inline shared_count::shared_count( weak_count const & r ): pi_( r.pi_ )
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
-{
- if( pi_ == 0 || !pi_->add_ref_lock() )
- {
- cutl_details_boost::throw_exception( cutl_details_boost::bad_weak_ptr() );
- }
-}
-
-inline shared_count::shared_count( weak_count const & r, sp_nothrow_tag ): pi_( r.pi_ )
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- , id_(shared_count_id)
-#endif
-{
- if( pi_ != 0 && !pi_->add_ref_lock() )
- {
- pi_ = 0;
- }
-}
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#ifdef __BORLANDC__
-# pragma warn .8027 // Functions containing try are not expanded inline
-#endif
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SHARED_COUNT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/shared_ptr_nmt.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/shared_ptr_nmt.hpp
deleted file mode 100644
index e84e696..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/shared_ptr_nmt.hpp
+++ /dev/null
@@ -1,182 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SHARED_PTR_NMT_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SHARED_PTR_NMT_HPP_INCLUDED
-
-//
-// detail/shared_ptr_nmt.hpp - shared_ptr.hpp without member templates
-//
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001, 2002 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/smart_ptr/shared_ptr.htm for documentation.
-//
-
-#include <cutl/details/boost/assert.hpp>
-#include <cutl/details/boost/checked_delete.hpp>
-#include <cutl/details/boost/throw_exception.hpp>
-#include <cutl/details/boost/smart_ptr/detail/atomic_count.hpp>
-
-#ifndef BOOST_NO_AUTO_PTR
-# include <memory> // for std::auto_ptr
-#endif
-
-#include <algorithm> // for std::swap
-#include <functional> // for std::less
-#include <new> // for std::bad_alloc
-
-namespace cutl_details_boost
-{
-
-template<class T> class shared_ptr
-{
-private:
-
- typedef detail::atomic_count count_type;
-
-public:
-
- typedef T element_type;
- typedef T value_type;
-
- explicit shared_ptr(T * p = 0): px(p)
- {
-#ifndef BOOST_NO_EXCEPTIONS
-
- try // prevent leak if new throws
- {
- pn = new count_type(1);
- }
- catch(...)
- {
- cutl_details_boost::checked_delete(p);
- throw;
- }
-
-#else
-
- pn = new count_type(1);
-
- if(pn == 0)
- {
- cutl_details_boost::checked_delete(p);
- cutl_details_boost::throw_exception(std::bad_alloc());
- }
-
-#endif
- }
-
- ~shared_ptr()
- {
- if(--*pn == 0)
- {
- cutl_details_boost::checked_delete(px);
- delete pn;
- }
- }
-
- shared_ptr(shared_ptr const & r): px(r.px) // never throws
- {
- pn = r.pn;
- ++*pn;
- }
-
- shared_ptr & operator=(shared_ptr const & r)
- {
- shared_ptr(r).swap(*this);
- return *this;
- }
-
-#ifndef BOOST_NO_AUTO_PTR
-
- explicit shared_ptr(std::auto_ptr<T> & r)
- {
- pn = new count_type(1); // may throw
- px = r.release(); // fix: moved here to stop leak if new throws
- }
-
- shared_ptr & operator=(std::auto_ptr<T> & r)
- {
- shared_ptr(r).swap(*this);
- return *this;
- }
-
-#endif
-
- void reset(T * p = 0)
- {
- BOOST_ASSERT(p == 0 || p != px);
- shared_ptr(p).swap(*this);
- }
-
- T & operator*() const // never throws
- {
- BOOST_ASSERT(px != 0);
- return *px;
- }
-
- T * operator->() const // never throws
- {
- BOOST_ASSERT(px != 0);
- return px;
- }
-
- T * get() const // never throws
- {
- return px;
- }
-
- long use_count() const // never throws
- {
- return *pn;
- }
-
- bool unique() const // never throws
- {
- return *pn == 1;
- }
-
- void swap(shared_ptr<T> & other) // never throws
- {
- std::swap(px, other.px);
- std::swap(pn, other.pn);
- }
-
-private:
-
- T * px; // contained pointer
- count_type * pn; // ptr to reference counter
-};
-
-template<class T, class U> inline bool operator==(shared_ptr<T> const & a, shared_ptr<U> const & b)
-{
- return a.get() == b.get();
-}
-
-template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<U> const & b)
-{
- return a.get() != b.get();
-}
-
-template<class T> inline bool operator<(shared_ptr<T> const & a, shared_ptr<T> const & b)
-{
- return std::less<T*>()(a.get(), b.get());
-}
-
-template<class T> void swap(shared_ptr<T> & a, shared_ptr<T> & b)
-{
- a.swap(b);
-}
-
-// get_pointer() enables cutl_details_boost::mem_fn to recognize shared_ptr
-
-template<class T> inline T * get_pointer(shared_ptr<T> const & p)
-{
- return p.get();
-}
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SHARED_PTR_NMT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_convertible.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_convertible.hpp
deleted file mode 100644
index f9ee9e0..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_convertible.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_CONVERTIBLE_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_CONVERTIBLE_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-// detail/sp_convertible.hpp
-//
-// Copyright 2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-
-#include <cutl/details/boost/config.hpp>
-
-#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( BOOST_NO_SFINAE )
-# define BOOST_SP_NO_SP_CONVERTIBLE
-#endif
-
-#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ < 303 )
-# define BOOST_SP_NO_SP_CONVERTIBLE
-#endif
-
-#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x630 )
-# define BOOST_SP_NO_SP_CONVERTIBLE
-#endif
-
-#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-template< class Y, class T > struct sp_convertible
-{
- typedef char (&yes) [1];
- typedef char (&no) [2];
-
- static yes f( T* );
- static no f( ... );
-
- enum _vt { value = sizeof( (f)( static_cast<Y*>(0) ) ) == sizeof(yes) };
-};
-
-template< class Y, class T > struct sp_convertible< Y, T[] >
-{
- enum _vt { value = false };
-};
-
-template< class Y, class T > struct sp_convertible< Y[], T[] >
-{
- enum _vt { value = sp_convertible< Y[1], T[1] >::value };
-};
-
-template< class Y, std::size_t N, class T > struct sp_convertible< Y[N], T[] >
-{
- enum _vt { value = sp_convertible< Y[1], T[1] >::value };
-};
-
-struct sp_empty
-{
-};
-
-template< bool > struct sp_enable_if_convertible_impl;
-
-template<> struct sp_enable_if_convertible_impl<true>
-{
- typedef sp_empty type;
-};
-
-template<> struct sp_enable_if_convertible_impl<false>
-{
-};
-
-template< class Y, class T > struct sp_enable_if_convertible: public sp_enable_if_convertible_impl< sp_convertible< Y, T >::value >
-{
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // !defined( BOOST_SP_NO_SP_CONVERTIBLE )
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_CONVERTIBLE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base.hpp
deleted file mode 100644
index 9a36bf9..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/sp_counted_base.hpp
-//
-// Copyright 2005, 2006 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/smart_ptr/detail/sp_has_sync.hpp>
-
-#if defined( BOOST_SP_DISABLE_THREADS )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_nt.hpp>
-
-#elif defined( BOOST_SP_USE_SPINLOCK )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_spin.hpp>
-
-#elif defined( BOOST_SP_USE_PTHREADS )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_pt.hpp>
-
-#elif defined( BOOST_DISABLE_THREADS ) && !defined( BOOST_SP_ENABLE_THREADS ) && !defined( BOOST_DISABLE_WIN32 )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_nt.hpp>
-
-#elif defined( __SNC__ )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp>
-
-#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) ) && !defined(__PATHSCALE__)
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp>
-
-#elif defined(__HP_aCC) && defined(__ia64)
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp>
-
-#elif defined( __GNUC__ ) && defined( __ia64__ ) && !defined( __INTEL_COMPILER ) && !defined(__PATHSCALE__)
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp>
-
-#elif defined( __IBMCPP__ ) && defined( __powerpc )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp>
-
-#elif defined( __MWERKS__ ) && defined( __POWERPC__ )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp>
-
-#elif defined( __GNUC__ ) && ( defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc ) ) && !defined(__PATHSCALE__) && !defined( _AIX )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp>
-
-#elif defined( __GNUC__ ) && ( defined( __mips__ ) || defined( _mips ) ) && !defined(__PATHSCALE__)
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp>
-
-#elif defined( BOOST_SP_HAS_SYNC )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_sync.hpp>
-
-#elif defined(__GNUC__) && ( defined( __sparcv9 ) || ( defined( __sparcv8 ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 402 ) ) )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp>
-
-#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined(__CYGWIN__)
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_w32.hpp>
-
-#elif defined( _AIX )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_aix.hpp>
-
-#elif !defined( BOOST_HAS_THREADS )
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_nt.hpp>
-
-#else
-# include <cutl/details/boost/smart_ptr/detail/sp_counted_base_spin.hpp>
-
-#endif
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp
deleted file mode 100644
index 6b3b551..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp
+++ /dev/null
@@ -1,151 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_ACC_IA64_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_ACC_IA64_HPP_INCLUDED
-
-//
-// detail/sp_counted_base_acc_ia64.hpp - aC++ on HP-UX IA64
-//
-// Copyright 2007 Baruch Zilber
-// Copyright 2007 Boris Gubenko
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-//
-// Lock-free algorithm by Alexander Terekhov
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-#include <machine/sys/inline.h>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline void atomic_increment( int * pw )
-{
- // ++*pw;
-
- _Asm_fetchadd(_FASZ_W, _SEM_REL, pw, +1, _LDHINT_NONE);
-}
-
-inline int atomic_decrement( int * pw )
-{
- // return --*pw;
-
- int r = static_cast<int>(_Asm_fetchadd(_FASZ_W, _SEM_REL, pw, -1, _LDHINT_NONE));
- if (1 == r)
- {
- _Asm_mf();
- }
-
- return r - 1;
-}
-
-inline int atomic_conditional_increment( int * pw )
-{
- // if( *pw != 0 ) ++*pw;
- // return *pw;
-
- int v = *pw;
-
- for (;;)
- {
- if (0 == v)
- {
- return 0;
- }
-
- _Asm_mov_to_ar(_AREG_CCV,
- v,
- (_UP_CALL_FENCE | _UP_SYS_FENCE | _DOWN_CALL_FENCE | _DOWN_SYS_FENCE));
- int r = static_cast<int>(_Asm_cmpxchg(_SZ_W, _SEM_ACQ, pw, v + 1, _LDHINT_NONE));
- if (r == v)
- {
- return r + 1;
- }
-
- v = r;
- }
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- int use_count_; // #shared
- int weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_decrement( &use_count_ ) == 0 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_decrement( &weak_count_ ) == 0 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return static_cast<int const volatile &>( use_count_ ); // TODO use ld.acq here
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_ACC_IA64_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_aix.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_aix.hpp
deleted file mode 100644
index 6b66a7b..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_aix.hpp
+++ /dev/null
@@ -1,143 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_AIX_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_AIX_HPP_INCLUDED
-
-//
-// detail/sp_counted_base_aix.hpp
-// based on: detail/sp_counted_base_w32.hpp
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-// Copyright 2006 Michael van der Westhuizen
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-//
-// Lock-free algorithm by Alexander Terekhov
-//
-// Thanks to Ben Hitchings for the #weak + (#shared != 0)
-// formulation
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-#include <builtins.h>
-#include <sys/atomic_op.h>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline void atomic_increment( int32_t* pw )
-{
- // ++*pw;
-
- fetch_and_add( pw, 1 );
-}
-
-inline int32_t atomic_decrement( int32_t * pw )
-{
- // return --*pw;
-
- int32_t originalValue;
-
- __lwsync();
- originalValue = fetch_and_add( pw, -1 );
- __isync();
-
- return (originalValue - 1);
-}
-
-inline int32_t atomic_conditional_increment( int32_t * pw )
-{
- // if( *pw != 0 ) ++*pw;
- // return *pw;
-
- int32_t tmp = fetch_and_add( pw, 0 );
- for( ;; )
- {
- if( tmp == 0 ) return 0;
- if( compare_and_swap( pw, &tmp, tmp + 1 ) ) return (tmp + 1);
- }
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- int32_t use_count_; // #shared
- int32_t weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_decrement( &use_count_ ) == 0 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_decrement( &weak_count_ ) == 0 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return fetch_and_add( const_cast<int32_t*>(&use_count_), 0 );
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_AIX_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp
deleted file mode 100644
index 4500914..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp
+++ /dev/null
@@ -1,171 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CW_PPC_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CW_PPC_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/sp_counted_base_cw_ppc.hpp - CodeWarrior on PowerPC
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-//
-// Lock-free algorithm by Alexander Terekhov
-//
-// Thanks to Ben Hitchings for the #weak + (#shared != 0)
-// formulation
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline void atomic_increment( register long * pw )
-{
- register int a;
-
- asm
- {
-loop:
-
- lwarx a, 0, pw
- addi a, a, 1
- stwcx. a, 0, pw
- bne- loop
- }
-}
-
-inline long atomic_decrement( register long * pw )
-{
- register int a;
-
- asm
- {
- sync
-
-loop:
-
- lwarx a, 0, pw
- addi a, a, -1
- stwcx. a, 0, pw
- bne- loop
-
- isync
- }
-
- return a;
-}
-
-inline long atomic_conditional_increment( register long * pw )
-{
- register int a;
-
- asm
- {
-loop:
-
- lwarx a, 0, pw
- cmpwi a, 0
- beq store
-
- addi a, a, 1
-
-store:
-
- stwcx. a, 0, pw
- bne- loop
- }
-
- return a;
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- long use_count_; // #shared
- long weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_decrement( &use_count_ ) == 0 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_decrement( &weak_count_ ) == 0 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return static_cast<long const volatile &>( use_count_ );
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CW_PPC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp
deleted file mode 100644
index d04f19f..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp
+++ /dev/null
@@ -1,158 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_IA64_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_IA64_HPP_INCLUDED
-
-//
-// detail/sp_counted_base_gcc_ia64.hpp - g++ on IA64
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2006 Peter Dimov
-// Copyright 2005 Ben Hutchings
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-//
-// Lock-free algorithm by Alexander Terekhov
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline void atomic_increment( int * pw )
-{
- // ++*pw;
-
- int tmp;
-
- // No barrier is required here but fetchadd always has an acquire or
- // release barrier associated with it. We choose release as it should be
- // cheaper.
- __asm__ ("fetchadd4.rel %0=%1,1" :
- "=r"(tmp), "=m"(*pw) :
- "m"( *pw ));
-}
-
-inline int atomic_decrement( int * pw )
-{
- // return --*pw;
-
- int rv;
-
- __asm__ (" fetchadd4.rel %0=%1,-1 ;; \n"
- " cmp.eq p7,p0=1,%0 ;; \n"
- "(p7) ld4.acq %0=%1 " :
- "=&r"(rv), "=m"(*pw) :
- "m"( *pw ) :
- "p7");
-
- return rv;
-}
-
-inline int atomic_conditional_increment( int * pw )
-{
- // if( *pw != 0 ) ++*pw;
- // return *pw;
-
- int rv, tmp, tmp2;
-
- __asm__ ("0: ld4 %0=%3 ;; \n"
- " cmp.eq p7,p0=0,%0 ;; \n"
- "(p7) br.cond.spnt 1f \n"
- " mov ar.ccv=%0 \n"
- " add %1=1,%0 ;; \n"
- " cmpxchg4.acq %2=%3,%1,ar.ccv ;; \n"
- " cmp.ne p7,p0=%0,%2 ;; \n"
- "(p7) br.cond.spnt 0b \n"
- " mov %0=%1 ;; \n"
- "1:" :
- "=&r"(rv), "=&r"(tmp), "=&r"(tmp2), "=m"(*pw) :
- "m"( *pw ) :
- "ar.ccv", "p7");
-
- return rv;
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- int use_count_; // #shared
- int weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_decrement( &use_count_ ) == 0 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_decrement( &weak_count_ ) == 0 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return static_cast<int const volatile &>( use_count_ ); // TODO use ld.acq here
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_IA64_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp
deleted file mode 100644
index 0fd16f3..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp
+++ /dev/null
@@ -1,182 +0,0 @@
-#ifndef BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
-#define BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/sp_counted_base_gcc_mips.hpp - g++ on MIPS
-//
-// Copyright (c) 2009, Spirent Communications, Inc.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-//
-// Lock-free algorithm by Alexander Terekhov
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline void atomic_increment( int * pw )
-{
- // ++*pw;
-
- int tmp;
-
- __asm__ __volatile__
- (
- "0:\n\t"
- ".set push\n\t"
- ".set mips2\n\t"
- "ll %0, %1\n\t"
- "addiu %0, 1\n\t"
- "sc %0, %1\n\t"
- ".set pop\n\t"
- "beqz %0, 0b":
- "=&r"( tmp ), "=m"( *pw ):
- "m"( *pw )
- );
-}
-
-inline int atomic_decrement( int * pw )
-{
- // return --*pw;
-
- int rv, tmp;
-
- __asm__ __volatile__
- (
- "0:\n\t"
- ".set push\n\t"
- ".set mips2\n\t"
- "ll %1, %2\n\t"
- "addiu %0, %1, -1\n\t"
- "sc %0, %2\n\t"
- ".set pop\n\t"
- "beqz %0, 0b\n\t"
- "addiu %0, %1, -1":
- "=&r"( rv ), "=&r"( tmp ), "=m"( *pw ):
- "m"( *pw ):
- "memory"
- );
-
- return rv;
-}
-
-inline int atomic_conditional_increment( int * pw )
-{
- // if( *pw != 0 ) ++*pw;
- // return *pw;
-
- int rv, tmp;
-
- __asm__ __volatile__
- (
- "0:\n\t"
- ".set push\n\t"
- ".set mips2\n\t"
- "ll %0, %2\n\t"
- "beqz %0, 1f\n\t"
- "addiu %1, %0, 1\n\t"
- "sc %1, %2\n\t"
- ".set pop\n\t"
- "beqz %1, 0b\n\t"
- "addiu %0, %0, 1\n\t"
- "1:":
- "=&r"( rv ), "=&r"( tmp ), "=m"( *pw ):
- "m"( *pw ):
- "memory"
- );
-
- return rv;
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- int use_count_; // #shared
- int weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_decrement( &use_count_ ) == 0 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_decrement( &weak_count_ ) == 0 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return static_cast<int const volatile &>( use_count_ );
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp
deleted file mode 100644
index a302b3a..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp
+++ /dev/null
@@ -1,182 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_PPC_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_PPC_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/sp_counted_base_gcc_ppc.hpp - g++ on PowerPC
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-//
-// Lock-free algorithm by Alexander Terekhov
-//
-// Thanks to Ben Hitchings for the #weak + (#shared != 0)
-// formulation
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline void atomic_increment( int * pw )
-{
- // ++*pw;
-
- int tmp;
-
- __asm__
- (
- "0:\n\t"
- "lwarx %1, 0, %2\n\t"
- "addi %1, %1, 1\n\t"
- "stwcx. %1, 0, %2\n\t"
- "bne- 0b":
-
- "=m"( *pw ), "=&b"( tmp ):
- "r"( pw ), "m"( *pw ):
- "cc"
- );
-}
-
-inline int atomic_decrement( int * pw )
-{
- // return --*pw;
-
- int rv;
-
- __asm__ __volatile__
- (
- "sync\n\t"
- "0:\n\t"
- "lwarx %1, 0, %2\n\t"
- "addi %1, %1, -1\n\t"
- "stwcx. %1, 0, %2\n\t"
- "bne- 0b\n\t"
- "isync":
-
- "=m"( *pw ), "=&b"( rv ):
- "r"( pw ), "m"( *pw ):
- "memory", "cc"
- );
-
- return rv;
-}
-
-inline int atomic_conditional_increment( int * pw )
-{
- // if( *pw != 0 ) ++*pw;
- // return *pw;
-
- int rv;
-
- __asm__
- (
- "0:\n\t"
- "lwarx %1, 0, %2\n\t"
- "cmpwi %1, 0\n\t"
- "beq 1f\n\t"
- "addi %1, %1, 1\n\t"
- "1:\n\t"
- "stwcx. %1, 0, %2\n\t"
- "bne- 0b":
-
- "=m"( *pw ), "=&b"( rv ):
- "r"( pw ), "m"( *pw ):
- "cc"
- );
-
- return rv;
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- int use_count_; // #shared
- int weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_decrement( &use_count_ ) == 0 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_decrement( &weak_count_ ) == 0 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return static_cast<int const volatile &>( use_count_ );
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_PPC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp
deleted file mode 100644
index 8121760..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_SPARC_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_SPARC_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-// detail/sp_counted_base_gcc_sparc.hpp - g++ on Sparc V8+
-//
-// Copyright (c) 2006 Piotr Wyderski
-// Copyright (c) 2006 Tomas Puverle
-// Copyright (c) 2006 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-//
-// Thanks to Michael van der Westhuizen
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-#include <inttypes.h> // int32_t
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline int32_t compare_and_swap( int32_t * dest_, int32_t compare_, int32_t swap_ )
-{
- __asm__ __volatile__( "cas [%1], %2, %0"
- : "+r" (swap_)
- : "r" (dest_), "r" (compare_)
- : "memory" );
-
- return swap_;
-}
-
-inline int32_t atomic_fetch_and_add( int32_t * pw, int32_t dv )
-{
- // long r = *pw;
- // *pw += dv;
- // return r;
-
- for( ;; )
- {
- int32_t r = *pw;
-
- if( __builtin_expect((compare_and_swap(pw, r, r + dv) == r), 1) )
- {
- return r;
- }
- }
-}
-
-inline void atomic_increment( int32_t * pw )
-{
- atomic_fetch_and_add( pw, 1 );
-}
-
-inline int32_t atomic_decrement( int32_t * pw )
-{
- return atomic_fetch_and_add( pw, -1 );
-}
-
-inline int32_t atomic_conditional_increment( int32_t * pw )
-{
- // long r = *pw;
- // if( r != 0 ) ++*pw;
- // return r;
-
- for( ;; )
- {
- int32_t r = *pw;
-
- if( r == 0 )
- {
- return r;
- }
-
- if( __builtin_expect( ( compare_and_swap( pw, r, r + 1 ) == r ), 1 ) )
- {
- return r;
- }
- }
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- int32_t use_count_; // #shared
- int32_t weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_decrement( &use_count_ ) == 1 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_decrement( &weak_count_ ) == 1 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return const_cast< int32_t const volatile & >( use_count_ );
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_SPARC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp
deleted file mode 100644
index fc3d72b..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp
+++ /dev/null
@@ -1,174 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_X86_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_X86_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/sp_counted_base_gcc_x86.hpp - g++ on 486+ or AMD64
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-//
-// Lock-free algorithm by Alexander Terekhov
-//
-// Thanks to Ben Hitchings for the #weak + (#shared != 0)
-// formulation
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline int atomic_exchange_and_add( int * pw, int dv )
-{
- // int r = *pw;
- // *pw += dv;
- // return r;
-
- int r;
-
- __asm__ __volatile__
- (
- "lock\n\t"
- "xadd %1, %0":
- "=m"( *pw ), "=r"( r ): // outputs (%0, %1)
- "m"( *pw ), "1"( dv ): // inputs (%2, %3 == %1)
- "memory", "cc" // clobbers
- );
-
- return r;
-}
-
-inline void atomic_increment( int * pw )
-{
- //atomic_exchange_and_add( pw, 1 );
-
- __asm__
- (
- "lock\n\t"
- "incl %0":
- "=m"( *pw ): // output (%0)
- "m"( *pw ): // input (%1)
- "cc" // clobbers
- );
-}
-
-inline int atomic_conditional_increment( int * pw )
-{
- // int rv = *pw;
- // if( rv != 0 ) ++*pw;
- // return rv;
-
- int rv, tmp;
-
- __asm__
- (
- "movl %0, %%eax\n\t"
- "0:\n\t"
- "test %%eax, %%eax\n\t"
- "je 1f\n\t"
- "movl %%eax, %2\n\t"
- "incl %2\n\t"
- "lock\n\t"
- "cmpxchgl %2, %0\n\t"
- "jne 0b\n\t"
- "1:":
- "=m"( *pw ), "=&a"( rv ), "=&r"( tmp ): // outputs (%0, %1, %2)
- "m"( *pw ): // input (%3)
- "cc" // clobbers
- );
-
- return rv;
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- int use_count_; // #shared
- int weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_exchange_and_add( &use_count_, -1 ) == 1 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_exchange_and_add( &weak_count_, -1 ) == 1 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return static_cast<int const volatile &>( use_count_ );
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_X86_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_nt.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_nt.hpp
deleted file mode 100644
index 92c1ee2..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_nt.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_NT_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_NT_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/sp_counted_base_nt.hpp
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- long use_count_; // #shared
- long weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- ++use_count_;
- }
-
- bool add_ref_lock() // true on success
- {
- if( use_count_ == 0 ) return false;
- ++use_count_;
- return true;
- }
-
- void release() // nothrow
- {
- if( --use_count_ == 0 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- ++weak_count_;
- }
-
- void weak_release() // nothrow
- {
- if( --weak_count_ == 0 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return use_count_;
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_NT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_pt.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_pt.hpp
deleted file mode 100644
index 7ba3867..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_pt.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_PT_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_PT_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/sp_counted_base_pt.hpp
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-#include <pthread.h>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- long use_count_; // #shared
- long weak_count_; // #weak + (#shared != 0)
-
- mutable pthread_mutex_t m_;
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
-// HPUX 10.20 / DCE has a nonstandard pthread_mutex_init
-
-#if defined(__hpux) && defined(_DECTHREADS_)
- pthread_mutex_init( &m_, pthread_mutexattr_default );
-#else
- pthread_mutex_init( &m_, 0 );
-#endif
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- pthread_mutex_destroy( &m_ );
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- pthread_mutex_lock( &m_ );
- ++use_count_;
- pthread_mutex_unlock( &m_ );
- }
-
- bool add_ref_lock() // true on success
- {
- pthread_mutex_lock( &m_ );
- bool r = use_count_ == 0? false: ( ++use_count_, true );
- pthread_mutex_unlock( &m_ );
- return r;
- }
-
- void release() // nothrow
- {
- pthread_mutex_lock( &m_ );
- long new_use_count = --use_count_;
- pthread_mutex_unlock( &m_ );
-
- if( new_use_count == 0 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- pthread_mutex_lock( &m_ );
- ++weak_count_;
- pthread_mutex_unlock( &m_ );
- }
-
- void weak_release() // nothrow
- {
- pthread_mutex_lock( &m_ );
- long new_weak_count = --weak_count_;
- pthread_mutex_unlock( &m_ );
-
- if( new_weak_count == 0 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- pthread_mutex_lock( &m_ );
- long r = use_count_;
- pthread_mutex_unlock( &m_ );
-
- return r;
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_PT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp
deleted file mode 100644
index 56fce3d..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp
+++ /dev/null
@@ -1,162 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SNC_PS3_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SNC_PS3_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-// detail/sp_counted_base_gcc_sparc.hpp - g++ on Sparc V8+
-//
-// Copyright (c) 2006 Piotr Wyderski
-// Copyright (c) 2006 Tomas Puverle
-// Copyright (c) 2006 Peter Dimov
-// Copyright (c) 2011 Emil Dotchevski
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-//
-// Thanks to Michael van der Westhuizen
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-#include <inttypes.h> // uint32_t
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline uint32_t compare_and_swap( uint32_t * dest_, uint32_t compare_, uint32_t swap_ )
-{
- return __builtin_cellAtomicCompareAndSwap32(dest_,compare_,swap_);
-}
-
-inline uint32_t atomic_fetch_and_add( uint32_t * pw, uint32_t dv )
-{
- // long r = *pw;
- // *pw += dv;
- // return r;
-
- for( ;; )
- {
- uint32_t r = *pw;
-
- if( __builtin_expect((compare_and_swap(pw, r, r + dv) == r), 1) )
- {
- return r;
- }
- }
-}
-
-inline void atomic_increment( uint32_t * pw )
-{
- (void) __builtin_cellAtomicIncr32( pw );
-}
-
-inline uint32_t atomic_decrement( uint32_t * pw )
-{
- return __builtin_cellAtomicDecr32( pw );
-}
-
-inline uint32_t atomic_conditional_increment( uint32_t * pw )
-{
- // long r = *pw;
- // if( r != 0 ) ++*pw;
- // return r;
-
- for( ;; )
- {
- uint32_t r = *pw;
-
- if( r == 0 )
- {
- return r;
- }
-
- if( __builtin_expect( ( compare_and_swap( pw, r, r + 1 ) == r ), 1 ) )
- {
- return r;
- }
- }
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- uint32_t use_count_; // #shared
- uint32_t weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_decrement( &use_count_ ) == 1 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_decrement( &weak_count_ ) == 1 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return const_cast< uint32_t const volatile & >( use_count_ );
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SNC_PS3_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_spin.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_spin.hpp
deleted file mode 100644
index 0f95421..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_spin.hpp
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SPIN_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SPIN_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/sp_counted_base_spin.hpp - spinlock pool atomic emulation
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-#include <cutl/details/boost/smart_ptr/detail/spinlock_pool.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline int atomic_exchange_and_add( int * pw, int dv )
-{
- spinlock_pool<1>::scoped_lock lock( pw );
-
- int r = *pw;
- *pw += dv;
- return r;
-}
-
-inline void atomic_increment( int * pw )
-{
- spinlock_pool<1>::scoped_lock lock( pw );
- ++*pw;
-}
-
-inline int atomic_conditional_increment( int * pw )
-{
- spinlock_pool<1>::scoped_lock lock( pw );
-
- int rv = *pw;
- if( rv != 0 ) ++*pw;
- return rv;
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- int use_count_; // #shared
- int weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_exchange_and_add( &use_count_, -1 ) == 1 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_exchange_and_add( &weak_count_, -1 ) == 1 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- spinlock_pool<1>::scoped_lock lock( &use_count_ );
- return use_count_;
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SPIN_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_sync.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_sync.hpp
deleted file mode 100644
index b1a0b35..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_sync.hpp
+++ /dev/null
@@ -1,156 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-// detail/sp_counted_base_sync.hpp - g++ 4.1+ __sync intrinsics
-//
-// Copyright (c) 2007 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-#include <limits.h>
-
-#if defined( __ia64__ ) && defined( __INTEL_COMPILER )
-# include <ia64intrin.h>
-#endif
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-#if INT_MAX >= 2147483647
-
-typedef int sp_int32_t;
-
-#else
-
-typedef long sp_int32_t;
-
-#endif
-
-inline void atomic_increment( sp_int32_t * pw )
-{
- __sync_fetch_and_add( pw, 1 );
-}
-
-inline sp_int32_t atomic_decrement( sp_int32_t * pw )
-{
- return __sync_fetch_and_add( pw, -1 );
-}
-
-inline sp_int32_t atomic_conditional_increment( sp_int32_t * pw )
-{
- // long r = *pw;
- // if( r != 0 ) ++*pw;
- // return r;
-
- sp_int32_t r = *pw;
-
- for( ;; )
- {
- if( r == 0 )
- {
- return r;
- }
-
- sp_int32_t r2 = __sync_val_compare_and_swap( pw, r, r + 1 );
-
- if( r2 == r )
- {
- return r;
- }
- else
- {
- r = r2;
- }
- }
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- sp_int32_t use_count_; // #shared
- sp_int32_t weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_decrement( &use_count_ ) == 1 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_decrement( &weak_count_ ) == 1 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return const_cast< sp_int32_t const volatile & >( use_count_ );
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp
deleted file mode 100644
index 3973606..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp
+++ /dev/null
@@ -1,151 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_VACPP_PPC_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_VACPP_PPC_HPP_INCLUDED
-
-//
-// detail/sp_counted_base_vacpp_ppc.hpp - xlC(vacpp) on POWER
-// based on: detail/sp_counted_base_w32.hpp
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-// Copyright 2006 Michael van der Westhuizen
-// Copyright 2012 IBM Corp.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-//
-// Lock-free algorithm by Alexander Terekhov
-//
-// Thanks to Ben Hitchings for the #weak + (#shared != 0)
-// formulation
-//
-
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-
-extern "builtin" void __lwsync(void);
-extern "builtin" void __isync(void);
-extern "builtin" int __fetch_and_add(volatile int* addr, int val);
-extern "builtin" int __compare_and_swap(volatile int*, int*, int);
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline void atomic_increment( int *pw )
-{
- // ++*pw;
- __lwsync();
- __fetch_and_add(pw, 1);
- __isync();
-}
-
-inline int atomic_decrement( int *pw )
-{
- // return --*pw;
- __lwsync();
- int originalValue = __fetch_and_add(pw, -1);
- __isync();
-
- return (originalValue - 1);
-}
-
-inline int atomic_conditional_increment( int *pw )
-{
- // if( *pw != 0 ) ++*pw;
- // return *pw;
-
- __lwsync();
- int v = *const_cast<volatile int*>(pw);
- for (;;)
- // loop until state is known
- {
- if (v == 0) return 0;
- if (__compare_and_swap(pw, &v, v + 1))
- {
- __isync(); return (v + 1);
- }
- }
-}
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- int use_count_; // #shared
- int weak_count_; // #weak + (#shared != 0)
- char pad[64] __attribute__((__aligned__(64)));
- // pad to prevent false sharing
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- atomic_increment( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- return atomic_conditional_increment( &use_count_ ) != 0;
- }
-
- void release() // nothrow
- {
- if( atomic_decrement( &use_count_ ) == 0 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- atomic_increment( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( atomic_decrement( &weak_count_ ) == 0 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return *const_cast<volatile int*>(&use_count_);
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_VACPP_PPC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_w32.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_w32.hpp
deleted file mode 100644
index 63c7d7e..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_base_w32.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_W32_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_W32_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/sp_counted_base_w32.hpp
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-//
-// Lock-free algorithm by Alexander Terekhov
-//
-// Thanks to Ben Hitchings for the #weak + (#shared != 0)
-// formulation
-//
-
-#include <cutl/details/boost/detail/interlocked.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-#include <cutl/details/boost/detail/sp_typeinfo.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class sp_counted_base
-{
-private:
-
- sp_counted_base( sp_counted_base const & );
- sp_counted_base & operator= ( sp_counted_base const & );
-
- long use_count_; // #shared
- long weak_count_; // #weak + (#shared != 0)
-
-public:
-
- sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
- {
- }
-
- virtual ~sp_counted_base() // nothrow
- {
- }
-
- // dispose() is called when use_count_ drops to zero, to release
- // the resources managed by *this.
-
- virtual void dispose() = 0; // nothrow
-
- // destroy() is called when weak_count_ drops to zero.
-
- virtual void destroy() // nothrow
- {
- delete this;
- }
-
- virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
- virtual void * get_untyped_deleter() = 0;
-
- void add_ref_copy()
- {
- BOOST_INTERLOCKED_INCREMENT( &use_count_ );
- }
-
- bool add_ref_lock() // true on success
- {
- for( ;; )
- {
- long tmp = static_cast< long const volatile& >( use_count_ );
- if( tmp == 0 ) return false;
-
-#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, == 1200 )
-
- // work around a code generation bug
-
- long tmp2 = tmp + 1;
- if( BOOST_INTERLOCKED_COMPARE_EXCHANGE( &use_count_, tmp2, tmp ) == tmp2 - 1 ) return true;
-
-#else
-
- if( BOOST_INTERLOCKED_COMPARE_EXCHANGE( &use_count_, tmp + 1, tmp ) == tmp ) return true;
-
-#endif
- }
- }
-
- void release() // nothrow
- {
- if( BOOST_INTERLOCKED_DECREMENT( &use_count_ ) == 0 )
- {
- dispose();
- weak_release();
- }
- }
-
- void weak_add_ref() // nothrow
- {
- BOOST_INTERLOCKED_INCREMENT( &weak_count_ );
- }
-
- void weak_release() // nothrow
- {
- if( BOOST_INTERLOCKED_DECREMENT( &weak_count_ ) == 0 )
- {
- destroy();
- }
- }
-
- long use_count() const // nothrow
- {
- return static_cast<long const volatile &>( use_count_ );
- }
-};
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_W32_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_impl.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_impl.hpp
deleted file mode 100644
index d958544..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_counted_impl.hpp
+++ /dev/null
@@ -1,254 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_IMPL_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_IMPL_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// detail/sp_counted_impl.hpp
-//
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/config.hpp>
-
-#if defined(BOOST_SP_USE_STD_ALLOCATOR) && defined(BOOST_SP_USE_QUICK_ALLOCATOR)
-# error BOOST_SP_USE_STD_ALLOCATOR and BOOST_SP_USE_QUICK_ALLOCATOR are incompatible.
-#endif
-
-#include <cutl/details/boost/checked_delete.hpp>
-#include <cutl/details/boost/smart_ptr/detail/sp_counted_base.hpp>
-
-#if defined(BOOST_SP_USE_QUICK_ALLOCATOR)
-#include <cutl/details/boost/smart_ptr/detail/quick_allocator.hpp>
-#endif
-
-#if defined(BOOST_SP_USE_STD_ALLOCATOR)
-#include <memory> // std::allocator
-#endif
-
-#include <cstddef> // std::size_t
-
-namespace cutl_details_boost
-{
-
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
-
-void sp_scalar_constructor_hook( void * px, std::size_t size, void * pn );
-void sp_scalar_destructor_hook( void * px, std::size_t size, void * pn );
-
-#endif
-
-namespace detail
-{
-
-template<class X> class sp_counted_impl_p: public sp_counted_base
-{
-private:
-
- X * px_;
-
- sp_counted_impl_p( sp_counted_impl_p const & );
- sp_counted_impl_p & operator= ( sp_counted_impl_p const & );
-
- typedef sp_counted_impl_p<X> this_type;
-
-public:
-
- explicit sp_counted_impl_p( X * px ): px_( px )
- {
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- cutl_details_boost::sp_scalar_constructor_hook( px, sizeof(X), this );
-#endif
- }
-
- virtual void dispose() // nothrow
- {
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- cutl_details_boost::sp_scalar_destructor_hook( px_, sizeof(X), this );
-#endif
- cutl_details_boost::checked_delete( px_ );
- }
-
- virtual void * get_deleter( detail::sp_typeinfo const & )
- {
- return 0;
- }
-
- virtual void * get_untyped_deleter()
- {
- return 0;
- }
-
-#if defined(BOOST_SP_USE_STD_ALLOCATOR)
-
- void * operator new( std::size_t )
- {
- return std::allocator<this_type>().allocate( 1, static_cast<this_type *>(0) );
- }
-
- void operator delete( void * p )
- {
- std::allocator<this_type>().deallocate( static_cast<this_type *>(p), 1 );
- }
-
-#endif
-
-#if defined(BOOST_SP_USE_QUICK_ALLOCATOR)
-
- void * operator new( std::size_t )
- {
- return quick_allocator<this_type>::alloc();
- }
-
- void operator delete( void * p )
- {
- quick_allocator<this_type>::dealloc( p );
- }
-
-#endif
-};
-
-//
-// Borland's Codeguard trips up over the -Vx- option here:
-//
-#ifdef __CODEGUARD__
-# pragma option push -Vx-
-#endif
-
-template<class P, class D> class sp_counted_impl_pd: public sp_counted_base
-{
-private:
-
- P ptr; // copy constructor must not throw
- D del; // copy constructor must not throw
-
- sp_counted_impl_pd( sp_counted_impl_pd const & );
- sp_counted_impl_pd & operator= ( sp_counted_impl_pd const & );
-
- typedef sp_counted_impl_pd<P, D> this_type;
-
-public:
-
- // pre: d(p) must not throw
-
- sp_counted_impl_pd( P p, D & d ): ptr( p ), del( d )
- {
- }
-
- sp_counted_impl_pd( P p ): ptr( p ), del()
- {
- }
-
- virtual void dispose() // nothrow
- {
- del( ptr );
- }
-
- virtual void * get_deleter( detail::sp_typeinfo const & ti )
- {
- return ti == BOOST_SP_TYPEID(D)? &reinterpret_cast<char&>( del ): 0;
- }
-
- virtual void * get_untyped_deleter()
- {
- return &reinterpret_cast<char&>( del );
- }
-
-#if defined(BOOST_SP_USE_STD_ALLOCATOR)
-
- void * operator new( std::size_t )
- {
- return std::allocator<this_type>().allocate( 1, static_cast<this_type *>(0) );
- }
-
- void operator delete( void * p )
- {
- std::allocator<this_type>().deallocate( static_cast<this_type *>(p), 1 );
- }
-
-#endif
-
-#if defined(BOOST_SP_USE_QUICK_ALLOCATOR)
-
- void * operator new( std::size_t )
- {
- return quick_allocator<this_type>::alloc();
- }
-
- void operator delete( void * p )
- {
- quick_allocator<this_type>::dealloc( p );
- }
-
-#endif
-};
-
-template<class P, class D, class A> class sp_counted_impl_pda: public sp_counted_base
-{
-private:
-
- P p_; // copy constructor must not throw
- D d_; // copy constructor must not throw
- A a_; // copy constructor must not throw
-
- sp_counted_impl_pda( sp_counted_impl_pda const & );
- sp_counted_impl_pda & operator= ( sp_counted_impl_pda const & );
-
- typedef sp_counted_impl_pda<P, D, A> this_type;
-
-public:
-
- // pre: d( p ) must not throw
-
- sp_counted_impl_pda( P p, D & d, A a ): p_( p ), d_( d ), a_( a )
- {
- }
-
- sp_counted_impl_pda( P p, A a ): p_( p ), d_(), a_( a )
- {
- }
-
- virtual void dispose() // nothrow
- {
- d_( p_ );
- }
-
- virtual void destroy() // nothrow
- {
- typedef typename A::template rebind< this_type >::other A2;
-
- A2 a2( a_ );
-
- this->~this_type();
- a2.deallocate( this, 1 );
- }
-
- virtual void * get_deleter( detail::sp_typeinfo const & ti )
- {
- return ti == BOOST_SP_TYPEID( D )? &reinterpret_cast<char&>( d_ ): 0;
- }
-
- virtual void * get_untyped_deleter()
- {
- return &reinterpret_cast<char&>( d_ );
- }
-};
-
-#ifdef __CODEGUARD__
-# pragma option pop
-#endif
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_IMPL_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_has_sync.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_has_sync.hpp
deleted file mode 100644
index 16de21d..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_has_sync.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/smart_ptr/detail/sp_has_sync.hpp
-//
-// Copyright (c) 2008, 2009 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// Defines the BOOST_SP_HAS_SYNC macro if the __sync_* intrinsics
-// are available.
-//
-
-#ifndef BOOST_SP_NO_SYNC
-
-#if defined( __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 )
-
-# define BOOST_SP_HAS_SYNC
-
-#elif defined( __IBMCPP__ ) && ( __IBMCPP__ >= 1210 )
-
-# define BOOST_SP_HAS_SYNC
-
-#elif defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )
-
-#define BOOST_SP_HAS_SYNC
-
-#if defined( __arm__ ) || defined( __armel__ )
-#undef BOOST_SP_HAS_SYNC
-#endif
-
-#if defined( __hppa ) || defined( __hppa__ )
-#undef BOOST_SP_HAS_SYNC
-#endif
-
-#if defined( __m68k__ )
-#undef BOOST_SP_HAS_SYNC
-#endif
-
-#if defined( __sh__ )
-#undef BOOST_SP_HAS_SYNC
-#endif
-
-#if defined( __sparc__ )
-#undef BOOST_SP_HAS_SYNC
-#endif
-
-#if defined( __INTEL_COMPILER ) && !defined( __ia64__ ) && ( __INTEL_COMPILER < 1110 )
-#undef BOOST_SP_HAS_SYNC
-#endif
-
-#if defined(__PATHSCALE__) && ((__PATHCC__ == 4) && (__PATHCC_MINOR__ < 9))
-#undef BOOST_SP_HAS_SYNC
-#endif
-
-#endif
-
-#endif // #ifndef BOOST_SP_NO_SYNC
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/sp_nullptr_t.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/sp_nullptr_t.hpp
deleted file mode 100644
index 245dd22..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/sp_nullptr_t.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SP_NULLPTR_T_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SP_NULLPTR_T_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-// detail/sp_nullptr_t.hpp
-//
-// Copyright 2013 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-
-#include <cutl/details/boost/config.hpp>
-#include <cstddef>
-
-#if !defined( BOOST_NO_CXX11_NULLPTR )
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-#if defined( __clang__ ) && !defined( _LIBCPP_VERSION ) && !defined( BOOST_NO_CXX11_DECLTYPE )
-
- typedef decltype(nullptr) sp_nullptr_t;
-
-#else
-
- typedef std::nullptr_t sp_nullptr_t;
-
-#endif
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif // !defined( BOOST_NO_CXX11_NULLPTR )
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_NULLPTR_T_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/spinlock.hpp
deleted file mode 100644
index ffc70c5..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/detail/spinlock.hpp
-//
-// Copyright (c) 2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// struct spinlock
-// {
-// void lock();
-// bool try_lock();
-// void unlock();
-//
-// class scoped_lock;
-// };
-//
-// #define BOOST_DETAIL_SPINLOCK_INIT <unspecified>
-//
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/smart_ptr/detail/sp_has_sync.hpp>
-
-#if defined( BOOST_SP_USE_PTHREADS )
-# include <cutl/details/boost/smart_ptr/detail/spinlock_pt.hpp>
-
-#elif defined(__GNUC__) && defined( __arm__ ) && !defined( __thumb__ )
-# include <cutl/details/boost/smart_ptr/detail/spinlock_gcc_arm.hpp>
-
-#elif defined( BOOST_SP_HAS_SYNC )
-# include <cutl/details/boost/smart_ptr/detail/spinlock_sync.hpp>
-
-#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-# include <cutl/details/boost/smart_ptr/detail/spinlock_w32.hpp>
-
-#elif defined(BOOST_HAS_PTHREADS)
-# include <cutl/details/boost/smart_ptr/detail/spinlock_pt.hpp>
-
-#elif !defined(BOOST_HAS_THREADS)
-# include <cutl/details/boost/smart_ptr/detail/spinlock_nt.hpp>
-
-#else
-# error Unrecognized threading platform
-#endif
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_gcc_arm.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_gcc_arm.hpp
deleted file mode 100644
index 752c830..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_gcc_arm.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ARM_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ARM_HPP_INCLUDED
-
-//
-// Copyright (c) 2008, 2011 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/smart_ptr/detail/yield_k.hpp>
-
-#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7S__)
-
-# define BOOST_SP_ARM_BARRIER "dmb"
-# define BOOST_SP_ARM_HAS_LDREX
-
-#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__)
-
-# define BOOST_SP_ARM_BARRIER "mcr p15, 0, r0, c7, c10, 5"
-# define BOOST_SP_ARM_HAS_LDREX
-
-#else
-
-# define BOOST_SP_ARM_BARRIER ""
-
-#endif
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class spinlock
-{
-public:
-
- int v_;
-
-public:
-
- bool try_lock()
- {
- int r;
-
-#ifdef BOOST_SP_ARM_HAS_LDREX
-
- __asm__ __volatile__(
- "ldrex %0, [%2]; \n"
- "cmp %0, %1; \n"
- "strexne %0, %1, [%2]; \n"
- BOOST_SP_ARM_BARRIER :
- "=&r"( r ): // outputs
- "r"( 1 ), "r"( &v_ ): // inputs
- "memory", "cc" );
-
-#else
-
- __asm__ __volatile__(
- "swp %0, %1, [%2];\n"
- BOOST_SP_ARM_BARRIER :
- "=&r"( r ): // outputs
- "r"( 1 ), "r"( &v_ ): // inputs
- "memory", "cc" );
-
-#endif
-
- return r == 0;
- }
-
- void lock()
- {
- for( unsigned k = 0; !try_lock(); ++k )
- {
- cutl_details_boost::detail::yield( k );
- }
- }
-
- void unlock()
- {
- __asm__ __volatile__( BOOST_SP_ARM_BARRIER ::: "memory" );
- *const_cast< int volatile* >( &v_ ) = 0;
- }
-
-public:
-
- class scoped_lock
- {
- private:
-
- spinlock & sp_;
-
- scoped_lock( scoped_lock const & );
- scoped_lock & operator=( scoped_lock const & );
-
- public:
-
- explicit scoped_lock( spinlock & sp ): sp_( sp )
- {
- sp.lock();
- }
-
- ~scoped_lock()
- {
- sp_.unlock();
- }
- };
-};
-
-} // namespace detail
-} // namespace cutl_details_boost
-
-#define BOOST_DETAIL_SPINLOCK_INIT {0}
-
-#undef BOOST_SP_ARM_BARRIER
-#undef BOOST_SP_ARM_HAS_LDREX
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ARM_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_nt.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_nt.hpp
deleted file mode 100644
index 5ccad17..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_nt.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_NT_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SPINLOCK_NT_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// Copyright (c) 2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/assert.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class spinlock
-{
-public:
-
- bool locked_;
-
-public:
-
- inline bool try_lock()
- {
- if( locked_ )
- {
- return false;
- }
- else
- {
- locked_ = true;
- return true;
- }
- }
-
- inline void lock()
- {
- BOOST_ASSERT( !locked_ );
- locked_ = true;
- }
-
- inline void unlock()
- {
- BOOST_ASSERT( locked_ );
- locked_ = false;
- }
-
-public:
-
- class scoped_lock
- {
- private:
-
- spinlock & sp_;
-
- scoped_lock( scoped_lock const & );
- scoped_lock & operator=( scoped_lock const & );
-
- public:
-
- explicit scoped_lock( spinlock & sp ): sp_( sp )
- {
- sp.lock();
- }
-
- ~scoped_lock()
- {
- sp_.unlock();
- }
- };
-};
-
-} // namespace detail
-} // namespace cutl_details_boost
-
-#define BOOST_DETAIL_SPINLOCK_INIT { false }
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_NT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_pool.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_pool.hpp
deleted file mode 100644
index 8ae09e3..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_pool.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_POOL_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SPINLOCK_POOL_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/detail/spinlock_pool.hpp
-//
-// Copyright (c) 2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// spinlock_pool<0> is reserved for atomic<>, when/if it arrives
-// spinlock_pool<1> is reserved for shared_ptr reference counts
-// spinlock_pool<2> is reserved for shared_ptr atomic access
-//
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/smart_ptr/detail/spinlock.hpp>
-#include <cstddef>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-template< int I > class spinlock_pool
-{
-private:
-
- static spinlock pool_[ 41 ];
-
-public:
-
- static spinlock & spinlock_for( void const * pv )
- {
-#if defined(__VMS) && __INITIAL_POINTER_SIZE == 64
- std::size_t i = reinterpret_cast< unsigned long long >( pv ) % 41;
-#else
- std::size_t i = reinterpret_cast< std::size_t >( pv ) % 41;
-#endif
- return pool_[ i ];
- }
-
- class scoped_lock
- {
- private:
-
- spinlock & sp_;
-
- scoped_lock( scoped_lock const & );
- scoped_lock & operator=( scoped_lock const & );
-
- public:
-
- explicit scoped_lock( void const * pv ): sp_( spinlock_for( pv ) )
- {
- sp_.lock();
- }
-
- ~scoped_lock()
- {
- sp_.unlock();
- }
- };
-};
-
-template< int I > spinlock spinlock_pool< I >::pool_[ 41 ] =
-{
- BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
- BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
- BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
- BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
- BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
- BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
- BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
- BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
- BOOST_DETAIL_SPINLOCK_INIT
-};
-
-} // namespace detail
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_POOL_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_pt.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_pt.hpp
deleted file mode 100644
index 20c483c..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_pt.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_PT_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SPINLOCK_PT_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// Copyright (c) 2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <pthread.h>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class spinlock
-{
-public:
-
- pthread_mutex_t v_;
-
-public:
-
- bool try_lock()
- {
- return pthread_mutex_trylock( &v_ ) == 0;
- }
-
- void lock()
- {
- pthread_mutex_lock( &v_ );
- }
-
- void unlock()
- {
- pthread_mutex_unlock( &v_ );
- }
-
-public:
-
- class scoped_lock
- {
- private:
-
- spinlock & sp_;
-
- scoped_lock( scoped_lock const & );
- scoped_lock & operator=( scoped_lock const & );
-
- public:
-
- explicit scoped_lock( spinlock & sp ): sp_( sp )
- {
- sp.lock();
- }
-
- ~scoped_lock()
- {
- sp_.unlock();
- }
- };
-};
-
-} // namespace detail
-} // namespace cutl_details_boost
-
-#define BOOST_DETAIL_SPINLOCK_INIT { PTHREAD_MUTEX_INITIALIZER }
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_PT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_sync.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_sync.hpp
deleted file mode 100644
index 1e0abf8..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_sync.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_SYNC_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SPINLOCK_SYNC_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// Copyright (c) 2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/smart_ptr/detail/yield_k.hpp>
-
-#if defined( __ia64__ ) && defined( __INTEL_COMPILER )
-# include <ia64intrin.h>
-#endif
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class spinlock
-{
-public:
-
- int v_;
-
-public:
-
- bool try_lock()
- {
- int r = __sync_lock_test_and_set( &v_, 1 );
- return r == 0;
- }
-
- void lock()
- {
- for( unsigned k = 0; !try_lock(); ++k )
- {
- cutl_details_boost::detail::yield( k );
- }
- }
-
- void unlock()
- {
- __sync_lock_release( &v_ );
- }
-
-public:
-
- class scoped_lock
- {
- private:
-
- spinlock & sp_;
-
- scoped_lock( scoped_lock const & );
- scoped_lock & operator=( scoped_lock const & );
-
- public:
-
- explicit scoped_lock( spinlock & sp ): sp_( sp )
- {
- sp.lock();
- }
-
- ~scoped_lock()
- {
- sp_.unlock();
- }
- };
-};
-
-} // namespace detail
-} // namespace cutl_details_boost
-
-#define BOOST_DETAIL_SPINLOCK_INIT {0}
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_SYNC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_w32.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_w32.hpp
deleted file mode 100644
index 89031c7..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/spinlock_w32.hpp
+++ /dev/null
@@ -1,113 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_W32_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_SPINLOCK_W32_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// Copyright (c) 2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include <cutl/details/boost/detail/interlocked.hpp>
-#include <cutl/details/boost/smart_ptr/detail/yield_k.hpp>
-
-// BOOST_COMPILER_FENCE
-
-#if defined(__INTEL_COMPILER)
-
-#define BOOST_COMPILER_FENCE __memory_barrier();
-
-#elif defined( _MSC_VER ) && _MSC_VER >= 1310
-
-extern "C" void _ReadWriteBarrier();
-#pragma intrinsic( _ReadWriteBarrier )
-
-#define BOOST_COMPILER_FENCE _ReadWriteBarrier();
-
-#elif defined(__GNUC__)
-
-#define BOOST_COMPILER_FENCE __asm__ __volatile__( "" : : : "memory" );
-
-#else
-
-#define BOOST_COMPILER_FENCE
-
-#endif
-
-//
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-class spinlock
-{
-public:
-
- long v_;
-
-public:
-
- bool try_lock()
- {
- long r = BOOST_INTERLOCKED_EXCHANGE( &v_, 1 );
-
- BOOST_COMPILER_FENCE
-
- return r == 0;
- }
-
- void lock()
- {
- for( unsigned k = 0; !try_lock(); ++k )
- {
- cutl_details_boost::detail::yield( k );
- }
- }
-
- void unlock()
- {
- BOOST_COMPILER_FENCE
- *const_cast< long volatile* >( &v_ ) = 0;
- }
-
-public:
-
- class scoped_lock
- {
- private:
-
- spinlock & sp_;
-
- scoped_lock( scoped_lock const & );
- scoped_lock & operator=( scoped_lock const & );
-
- public:
-
- explicit scoped_lock( spinlock & sp ): sp_( sp )
- {
- sp.lock();
- }
-
- ~scoped_lock()
- {
- sp_.unlock();
- }
- };
-};
-
-} // namespace detail
-} // namespace cutl_details_boost
-
-#define BOOST_DETAIL_SPINLOCK_INIT {0}
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_W32_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/detail/yield_k.hpp b/libcutl/cutl/details/boost/smart_ptr/detail/yield_k.hpp
deleted file mode 100644
index 31f639d..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/detail/yield_k.hpp
+++ /dev/null
@@ -1,149 +0,0 @@
-#ifndef BOOST_SMART_PTR_DETAIL_YIELD_K_HPP_INCLUDED
-#define BOOST_SMART_PTR_DETAIL_YIELD_K_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// yield_k.hpp
-//
-// Copyright (c) 2008 Peter Dimov
-//
-// void yield( unsigned k );
-//
-// Typical use:
-//
-// for( unsigned k = 0; !try_lock(); ++k ) yield( k );
-//
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-//
-
-#include <cutl/details/boost/config.hpp>
-
-// BOOST_SMT_PAUSE
-
-#if defined(_MSC_VER) && _MSC_VER >= 1310 && ( defined(_M_IX86) || defined(_M_X64) )
-
-extern "C" void _mm_pause();
-#pragma intrinsic( _mm_pause )
-
-#define BOOST_SMT_PAUSE _mm_pause();
-
-#elif defined(__GNUC__) && ( defined(__i386__) || defined(__x86_64__) )
-
-#define BOOST_SMT_PAUSE __asm__ __volatile__( "rep; nop" : : : "memory" );
-
-#endif
-
-//
-
-#if defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ )
-
-#if defined( BOOST_USE_WINDOWS_H )
-# include <windows.h>
-#endif
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-#if !defined( BOOST_USE_WINDOWS_H )
- extern "C" void __stdcall Sleep( unsigned long ms );
-#endif
-
-inline void yield( unsigned k )
-{
- if( k < 4 )
- {
- }
-#if defined( BOOST_SMT_PAUSE )
- else if( k < 16 )
- {
- BOOST_SMT_PAUSE
- }
-#endif
- else if( k < 32 )
- {
- Sleep( 0 );
- }
- else
- {
- Sleep( 1 );
- }
-}
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#elif defined( BOOST_HAS_PTHREADS )
-
-#include <sched.h>
-#include <time.h>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline void yield( unsigned k )
-{
- if( k < 4 )
- {
- }
-#if defined( BOOST_SMT_PAUSE )
- else if( k < 16 )
- {
- BOOST_SMT_PAUSE
- }
-#endif
- else if( k < 32 || k & 1 )
- {
- sched_yield();
- }
- else
- {
- // g++ -Wextra warns on {} or {0}
- struct timespec rqtp = { 0, 0 };
-
- // POSIX says that timespec has tv_sec and tv_nsec
- // But it doesn't guarantee order or placement
-
- rqtp.tv_sec = 0;
- rqtp.tv_nsec = 1000;
-
- nanosleep( &rqtp, 0 );
- }
-}
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#else
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-inline void yield( unsigned )
-{
-}
-
-} // namespace detail
-
-} // namespace cutl_details_boost
-
-#endif
-
-#endif // #ifndef BOOST_SMART_PTR_DETAIL_YIELD_K_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/scoped_array.hpp b/libcutl/cutl/details/boost/smart_ptr/scoped_array.hpp
deleted file mode 100644
index 60b4c0c..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/scoped_array.hpp
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef BOOST_SMART_PTR_SCOPED_ARRAY_HPP_INCLUDED
-#define BOOST_SMART_PTR_SCOPED_ARRAY_HPP_INCLUDED
-
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001, 2002 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// http://www.boost.org/libs/smart_ptr/scoped_array.htm
-//
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/assert.hpp>
-#include <cutl/details/boost/checked_delete.hpp>
-#include <cutl/details/boost/smart_ptr/detail/sp_nullptr_t.hpp>
-
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#include <cstddef> // for std::ptrdiff_t
-
-namespace cutl_details_boost
-{
-
-// Debug hooks
-
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
-
-void sp_array_constructor_hook(void * p);
-void sp_array_destructor_hook(void * p);
-
-#endif
-
-// scoped_array extends scoped_ptr to arrays. Deletion of the array pointed to
-// is guaranteed, either on destruction of the scoped_array or via an explicit
-// reset(). Use shared_array or std::vector if your needs are more complex.
-
-template<class T> class scoped_array // noncopyable
-{
-private:
-
- T * px;
-
- scoped_array(scoped_array const &);
- scoped_array & operator=(scoped_array const &);
-
- typedef scoped_array<T> this_type;
-
- void operator==( scoped_array const& ) const;
- void operator!=( scoped_array const& ) const;
-
-public:
-
- typedef T element_type;
-
- explicit scoped_array( T * p = 0 ) BOOST_NOEXCEPT : px( p )
- {
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- cutl_details_boost::sp_array_constructor_hook( px );
-#endif
- }
-
- ~scoped_array() // never throws
- {
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- cutl_details_boost::sp_array_destructor_hook( px );
-#endif
- cutl_details_boost::checked_array_delete( px );
- }
-
- void reset(T * p = 0) // never throws (but has a BOOST_ASSERT in it, so not marked with BOOST_NOEXCEPT)
- {
- BOOST_ASSERT( p == 0 || p != px ); // catch self-reset errors
- this_type(p).swap(*this);
- }
-
- T & operator[](std::ptrdiff_t i) const // never throws (but has a BOOST_ASSERT in it, so not marked with BOOST_NOEXCEPT)
- {
- BOOST_ASSERT( px != 0 );
- BOOST_ASSERT( i >= 0 );
- return px[i];
- }
-
- T * get() const BOOST_NOEXCEPT
- {
- return px;
- }
-
-// implicit conversion to "bool"
-#include <cutl/details/boost/smart_ptr/detail/operator_bool.hpp>
-
- void swap(scoped_array & b) BOOST_NOEXCEPT
- {
- T * tmp = b.px;
- b.px = px;
- px = tmp;
- }
-};
-
-#if !defined( BOOST_NO_CXX11_NULLPTR )
-
-template<class T> inline bool operator==( scoped_array<T> const & p, cutl_details_boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
-{
- return p.get() == 0;
-}
-
-template<class T> inline bool operator==( cutl_details_boost::detail::sp_nullptr_t, scoped_array<T> const & p ) BOOST_NOEXCEPT
-{
- return p.get() == 0;
-}
-
-template<class T> inline bool operator!=( scoped_array<T> const & p, cutl_details_boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
-{
- return p.get() != 0;
-}
-
-template<class T> inline bool operator!=( cutl_details_boost::detail::sp_nullptr_t, scoped_array<T> const & p ) BOOST_NOEXCEPT
-{
- return p.get() != 0;
-}
-
-#endif
-
-template<class T> inline void swap(scoped_array<T> & a, scoped_array<T> & b) BOOST_NOEXCEPT
-{
- a.swap(b);
-}
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_SCOPED_ARRAY_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/scoped_ptr.hpp b/libcutl/cutl/details/boost/smart_ptr/scoped_ptr.hpp
deleted file mode 100644
index 4ddda13..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/scoped_ptr.hpp
+++ /dev/null
@@ -1,157 +0,0 @@
-#ifndef BOOST_SMART_PTR_SCOPED_PTR_HPP_INCLUDED
-#define BOOST_SMART_PTR_SCOPED_PTR_HPP_INCLUDED
-
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001, 2002 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// http://www.boost.org/libs/smart_ptr/scoped_ptr.htm
-//
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/assert.hpp>
-#include <cutl/details/boost/checked_delete.hpp>
-#include <cutl/details/boost/smart_ptr/detail/sp_nullptr_t.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#ifndef BOOST_NO_AUTO_PTR
-# include <memory> // for std::auto_ptr
-#endif
-
-namespace cutl_details_boost
-{
-
-// Debug hooks
-
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
-
-void sp_scalar_constructor_hook(void * p);
-void sp_scalar_destructor_hook(void * p);
-
-#endif
-
-// scoped_ptr mimics a built-in pointer except that it guarantees deletion
-// of the object pointed to, either on destruction of the scoped_ptr or via
-// an explicit reset(). scoped_ptr is a simple solution for simple needs;
-// use shared_ptr or std::auto_ptr if your needs are more complex.
-
-template<class T> class scoped_ptr // noncopyable
-{
-private:
-
- T * px;
-
- scoped_ptr(scoped_ptr const &);
- scoped_ptr & operator=(scoped_ptr const &);
-
- typedef scoped_ptr<T> this_type;
-
- void operator==( scoped_ptr const& ) const;
- void operator!=( scoped_ptr const& ) const;
-
-public:
-
- typedef T element_type;
-
- explicit scoped_ptr( T * p = 0 ): px( p ) // never throws
- {
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- cutl_details_boost::sp_scalar_constructor_hook( px );
-#endif
- }
-
-#ifndef BOOST_NO_AUTO_PTR
-
- explicit scoped_ptr( std::auto_ptr<T> p ) BOOST_NOEXCEPT : px( p.release() )
- {
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- cutl_details_boost::sp_scalar_constructor_hook( px );
-#endif
- }
-
-#endif
-
- ~scoped_ptr() // never throws
- {
-#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
- cutl_details_boost::sp_scalar_destructor_hook( px );
-#endif
- cutl_details_boost::checked_delete( px );
- }
-
- void reset(T * p = 0) // never throws
- {
- BOOST_ASSERT( p == 0 || p != px ); // catch self-reset errors
- this_type(p).swap(*this);
- }
-
- T & operator*() const // never throws
- {
- BOOST_ASSERT( px != 0 );
- return *px;
- }
-
- T * operator->() const // never throws
- {
- BOOST_ASSERT( px != 0 );
- return px;
- }
-
- T * get() const BOOST_NOEXCEPT
- {
- return px;
- }
-
-// implicit conversion to "bool"
-#include <cutl/details/boost/smart_ptr/detail/operator_bool.hpp>
-
- void swap(scoped_ptr & b) BOOST_NOEXCEPT
- {
- T * tmp = b.px;
- b.px = px;
- px = tmp;
- }
-};
-
-#if !defined( BOOST_NO_CXX11_NULLPTR )
-
-template<class T> inline bool operator==( scoped_ptr<T> const & p, cutl_details_boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
-{
- return p.get() == 0;
-}
-
-template<class T> inline bool operator==( cutl_details_boost::detail::sp_nullptr_t, scoped_ptr<T> const & p ) BOOST_NOEXCEPT
-{
- return p.get() == 0;
-}
-
-template<class T> inline bool operator!=( scoped_ptr<T> const & p, cutl_details_boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
-{
- return p.get() != 0;
-}
-
-template<class T> inline bool operator!=( cutl_details_boost::detail::sp_nullptr_t, scoped_ptr<T> const & p ) BOOST_NOEXCEPT
-{
- return p.get() != 0;
-}
-
-#endif
-
-template<class T> inline void swap(scoped_ptr<T> & a, scoped_ptr<T> & b) BOOST_NOEXCEPT
-{
- a.swap(b);
-}
-
-// get_pointer(p) is a generic way to say p.get()
-
-template<class T> inline T * get_pointer(scoped_ptr<T> const & p) BOOST_NOEXCEPT
-{
- return p.get();
-}
-
-} // namespace cutl_details_boost
-
-#endif // #ifndef BOOST_SMART_PTR_SCOPED_PTR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/smart_ptr/shared_ptr.hpp b/libcutl/cutl/details/boost/smart_ptr/shared_ptr.hpp
deleted file mode 100644
index f528a7a..0000000
--- a/libcutl/cutl/details/boost/smart_ptr/shared_ptr.hpp
+++ /dev/null
@@ -1,1035 +0,0 @@
-#ifndef BOOST_SMART_PTR_SHARED_PTR_HPP_INCLUDED
-#define BOOST_SMART_PTR_SHARED_PTR_HPP_INCLUDED
-
-//
-// shared_ptr.hpp
-//
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001-2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/smart_ptr/shared_ptr.htm for documentation.
-//
-
-#include <cutl/details/boost/config.hpp> // for broken compiler workarounds
-
-#if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
-#include <cutl/details/boost/smart_ptr/detail/shared_ptr_nmt.hpp>
-#else
-
-// In order to avoid circular dependencies with Boost.TR1
-// we make sure that our include of <memory> doesn't try to
-// pull in the TR1 headers: that's why we use this header
-// rather than including <memory> directly:
-#include <cutl/details/boost/config/no_tr1/memory.hpp> // std::auto_ptr
-
-#include <cutl/details/boost/assert.hpp>
-#include <cutl/details/boost/checked_delete.hpp>
-#include <cutl/details/boost/throw_exception.hpp>
-#include <cutl/details/boost/smart_ptr/detail/shared_count.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-#include <cutl/details/boost/smart_ptr/detail/sp_convertible.hpp>
-#include <cutl/details/boost/smart_ptr/detail/sp_nullptr_t.hpp>
-
-#if !defined(BOOST_SP_NO_ATOMIC_ACCESS)
-#include <cutl/details/boost/smart_ptr/detail/spinlock_pool.hpp>
-#include <cutl/details/boost/memory_order.hpp>
-#endif
-
-#include <algorithm> // for std::swap
-#include <functional> // for std::less
-#include <typeinfo> // for std::bad_cast
-#include <cstddef> // for std::size_t
-
-#if !defined(BOOST_NO_IOSTREAM)
-#if !defined(BOOST_NO_IOSFWD)
-#include <iosfwd> // for std::basic_ostream
-#else
-#include <ostream>
-#endif
-#endif
-
-namespace cutl_details_boost
-{
-
-template<class T> class shared_ptr;
-template<class T> class weak_ptr;
-template<class T> class enable_shared_from_this;
-class enable_shared_from_raw;
-
-namespace detail
-{
-
-// sp_element, element_type
-
-template< class T > struct sp_element
-{
- typedef T type;
-};
-
-#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-template< class T > struct sp_element< T[] >
-{
- typedef T type;
-};
-
-#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 )
-
-template< class T, std::size_t N > struct sp_element< T[N] >
-{
- typedef T type;
-};
-
-#endif
-
-#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-// sp_dereference, return type of operator*
-
-template< class T > struct sp_dereference
-{
- typedef T & type;
-};
-
-template<> struct sp_dereference< void >
-{
- typedef void type;
-};
-
-#if !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
-
-template<> struct sp_dereference< void const >
-{
- typedef void type;
-};
-
-template<> struct sp_dereference< void volatile >
-{
- typedef void type;
-};
-
-template<> struct sp_dereference< void const volatile >
-{
- typedef void type;
-};
-
-#endif // !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
-
-#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-template< class T > struct sp_dereference< T[] >
-{
- typedef void type;
-};
-
-#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 )
-
-template< class T, std::size_t N > struct sp_dereference< T[N] >
-{
- typedef void type;
-};
-
-#endif
-
-#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-// sp_member_access, return type of operator->
-
-template< class T > struct sp_member_access
-{
- typedef T * type;
-};
-
-#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-template< class T > struct sp_member_access< T[] >
-{
- typedef void type;
-};
-
-#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 )
-
-template< class T, std::size_t N > struct sp_member_access< T[N] >
-{
- typedef void type;
-};
-
-#endif
-
-#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-// sp_array_access, return type of operator[]
-
-template< class T > struct sp_array_access
-{
- typedef void type;
-};
-
-#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-template< class T > struct sp_array_access< T[] >
-{
- typedef T & type;
-};
-
-#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 )
-
-template< class T, std::size_t N > struct sp_array_access< T[N] >
-{
- typedef T & type;
-};
-
-#endif
-
-#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-// sp_extent, for operator[] index check
-
-template< class T > struct sp_extent
-{
- enum _vt { value = 0 };
-};
-
-#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-template< class T, std::size_t N > struct sp_extent< T[N] >
-{
- enum _vt { value = N };
-};
-
-#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-// enable_shared_from_this support
-
-template< class X, class Y, class T > inline void sp_enable_shared_from_this( cutl_details_boost::shared_ptr<X> const * ppx, Y const * py, cutl_details_boost::enable_shared_from_this< T > const * pe )
-{
- if( pe != 0 )
- {
- pe->_internal_accept_owner( ppx, const_cast< Y* >( py ) );
- }
-}
-
-template< class X, class Y > inline void sp_enable_shared_from_this( cutl_details_boost::shared_ptr<X> * ppx, Y const * py, cutl_details_boost::enable_shared_from_raw const * pe );
-
-#ifdef _MANAGED
-
-// Avoid C4793, ... causes native code generation
-
-struct sp_any_pointer
-{
- template<class T> sp_any_pointer( T* ) {}
-};
-
-inline void sp_enable_shared_from_this( sp_any_pointer, sp_any_pointer, sp_any_pointer )
-{
-}
-
-#else // _MANAGED
-
-inline void sp_enable_shared_from_this( ... )
-{
-}
-
-#endif // _MANAGED
-
-#if !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( BOOST_NO_AUTO_PTR )
-
-// rvalue auto_ptr support based on a technique by Dave Abrahams
-
-template< class T, class R > struct sp_enable_if_auto_ptr
-{
-};
-
-template< class T, class R > struct sp_enable_if_auto_ptr< std::auto_ptr< T >, R >
-{
- typedef R type;
-};
-
-#endif
-
-// sp_assert_convertible
-
-template< class Y, class T > inline void sp_assert_convertible()
-{
-#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
-
- // static_assert( sp_convertible< Y, T >::value );
- typedef char tmp[ sp_convertible< Y, T >::value? 1: -1 ];
- (void)sizeof( tmp );
-
-#else
-
- T* p = static_cast< Y* >( 0 );
- (void)p;
-
-#endif
-}
-
-// pointer constructor helper
-
-template< class T, class Y > inline void sp_pointer_construct( cutl_details_boost::shared_ptr< T > * ppx, Y * p, cutl_details_boost::detail::shared_count & pn )
-{
- cutl_details_boost::detail::shared_count( p ).swap( pn );
- cutl_details_boost::detail::sp_enable_shared_from_this( ppx, p, p );
-}
-
-#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-template< class T, class Y > inline void sp_pointer_construct( cutl_details_boost::shared_ptr< T[] > * /*ppx*/, Y * p, cutl_details_boost::detail::shared_count & pn )
-{
- sp_assert_convertible< Y[], T[] >();
- cutl_details_boost::detail::shared_count( p, cutl_details_boost::checked_array_deleter< T >() ).swap( pn );
-}
-
-template< class T, std::size_t N, class Y > inline void sp_pointer_construct( cutl_details_boost::shared_ptr< T[N] > * /*ppx*/, Y * p, cutl_details_boost::detail::shared_count & pn )
-{
- sp_assert_convertible< Y[N], T[N] >();
- cutl_details_boost::detail::shared_count( p, cutl_details_boost::checked_array_deleter< T >() ).swap( pn );
-}
-
-#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-// deleter constructor helper
-
-template< class T, class Y > inline void sp_deleter_construct( cutl_details_boost::shared_ptr< T > * ppx, Y * p )
-{
- cutl_details_boost::detail::sp_enable_shared_from_this( ppx, p, p );
-}
-
-#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-template< class T, class Y > inline void sp_deleter_construct( cutl_details_boost::shared_ptr< T[] > * /*ppx*/, Y * /*p*/ )
-{
- sp_assert_convertible< Y[], T[] >();
-}
-
-template< class T, std::size_t N, class Y > inline void sp_deleter_construct( cutl_details_boost::shared_ptr< T[N] > * /*ppx*/, Y * /*p*/ )
-{
- sp_assert_convertible< Y[N], T[N] >();
-}
-
-#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
-} // namespace detail
-
-
-//
-// shared_ptr
-//
-// An enhanced relative of scoped_ptr with reference counted copy semantics.
-// The object pointed to is deleted when the last shared_ptr pointing to it
-// is destroyed or reset.
-//
-
-template<class T> class shared_ptr
-{
-private:
-
- // Borland 5.5.1 specific workaround
- typedef shared_ptr<T> this_type;
-
-public:
-
- typedef typename cutl_details_boost::detail::sp_element< T >::type element_type;
-
- shared_ptr() BOOST_NOEXCEPT : px( 0 ), pn() // never throws in 1.30+
- {
- }
-
-#if !defined( BOOST_NO_CXX11_NULLPTR )
-
- shared_ptr( cutl_details_boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT : px( 0 ), pn() // never throws
- {
- }
-
-#endif
-
- template<class Y>
- explicit shared_ptr( Y * p ): px( p ), pn() // Y must be complete
- {
- cutl_details_boost::detail::sp_pointer_construct( this, p, pn );
- }
-
- //
- // Requirements: D's copy constructor must not throw
- //
- // shared_ptr will release p by calling d(p)
- //
-
- template<class Y, class D> shared_ptr( Y * p, D d ): px( p ), pn( p, d )
- {
- cutl_details_boost::detail::sp_deleter_construct( this, p );
- }
-
-#if !defined( BOOST_NO_CXX11_NULLPTR )
-
- template<class D> shared_ptr( cutl_details_boost::detail::sp_nullptr_t p, D d ): px( p ), pn( p, d )
- {
- }
-
-#endif
-
- // As above, but with allocator. A's copy constructor shall not throw.
-
- template<class Y, class D, class A> shared_ptr( Y * p, D d, A a ): px( p ), pn( p, d, a )
- {
- cutl_details_boost::detail::sp_deleter_construct( this, p );
- }
-
-#if !defined( BOOST_NO_CXX11_NULLPTR )
-
- template<class D, class A> shared_ptr( cutl_details_boost::detail::sp_nullptr_t p, D d, A a ): px( p ), pn( p, d, a )
- {
- }
-
-#endif
-
-// generated copy constructor, destructor are fine...
-
-#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
-
-// ... except in C++0x, move disables the implicit copy
-
- shared_ptr( shared_ptr const & r ) BOOST_NOEXCEPT : px( r.px ), pn( r.pn )
- {
- }
-
-#endif
-
- template<class Y>
- explicit shared_ptr( weak_ptr<Y> const & r ): pn( r.pn ) // may throw
- {
- cutl_details_boost::detail::sp_assert_convertible< Y, T >();
-
- // it is now safe to copy r.px, as pn(r.pn) did not throw
- px = r.px;
- }
-
- template<class Y>
- shared_ptr( weak_ptr<Y> const & r, cutl_details_boost::detail::sp_nothrow_tag )
- BOOST_NOEXCEPT : px( 0 ), pn( r.pn, cutl_details_boost::detail::sp_nothrow_tag() )
- {
- if( !pn.empty() )
- {
- px = r.px;
- }
- }
-
- template<class Y>
-#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
-
- shared_ptr( shared_ptr<Y> const & r, typename cutl_details_boost::detail::sp_enable_if_convertible<Y,T>::type = cutl_details_boost::detail::sp_empty() )
-
-#else
-
- shared_ptr( shared_ptr<Y> const & r )
-
-#endif
- BOOST_NOEXCEPT : px( r.px ), pn( r.pn )
- {
- cutl_details_boost::detail::sp_assert_convertible< Y, T >();
- }
-
- // aliasing
- template< class Y >
- shared_ptr( shared_ptr<Y> const & r, element_type * p ) BOOST_NOEXCEPT : px( p ), pn( r.pn )
- {
- }
-
-#ifndef BOOST_NO_AUTO_PTR
-
- template<class Y>
- explicit shared_ptr( std::auto_ptr<Y> & r ): px(r.get()), pn()
- {
- cutl_details_boost::detail::sp_assert_convertible< Y, T >();
-
- Y * tmp = r.get();
- pn = cutl_details_boost::detail::shared_count( r );
-
- cutl_details_boost::detail::sp_deleter_construct( this, tmp );
- }
-
-#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
-
- template<class Y>
- shared_ptr( std::auto_ptr<Y> && r ): px(r.get()), pn()
- {
- cutl_details_boost::detail::sp_assert_convertible< Y, T >();
-
- Y * tmp = r.get();
- pn = cutl_details_boost::detail::shared_count( r );
-
- cutl_details_boost::detail::sp_deleter_construct( this, tmp );
- }
-
-#elif !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
- template<class Ap>
- explicit shared_ptr( Ap r, typename cutl_details_boost::detail::sp_enable_if_auto_ptr<Ap, int>::type = 0 ): px( r.get() ), pn()
- {
- typedef typename Ap::element_type Y;
-
- cutl_details_boost::detail::sp_assert_convertible< Y, T >();
-
- Y * tmp = r.get();
- pn = cutl_details_boost::detail::shared_count( r );
-
- cutl_details_boost::detail::sp_deleter_construct( this, tmp );
- }
-
-#endif // BOOST_NO_SFINAE, BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-#endif // BOOST_NO_AUTO_PTR
-
-#if !defined( BOOST_NO_CXX11_SMART_PTR ) && !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
-
- template< class Y, class D >
- shared_ptr( std::unique_ptr< Y, D > && r ): px( r.get() ), pn()
- {
- cutl_details_boost::detail::sp_assert_convertible< Y, T >();
-
- typename std::unique_ptr< Y, D >::pointer tmp = r.get();
- pn = cutl_details_boost::detail::shared_count( r );
-
- cutl_details_boost::detail::sp_deleter_construct( this, tmp );
- }
-
-#endif
-
- // assignment
-
- shared_ptr & operator=( shared_ptr const & r ) BOOST_NOEXCEPT
- {
- this_type(r).swap(*this);
- return *this;
- }
-
-#if !defined(BOOST_MSVC) || (BOOST_MSVC >= 1400)
-
- template<class Y>
- shared_ptr & operator=(shared_ptr<Y> const & r) BOOST_NOEXCEPT
- {
- this_type(r).swap(*this);
- return *this;
- }
-
-#endif
-
-#ifndef BOOST_NO_AUTO_PTR
-
- template<class Y>
- shared_ptr & operator=( std::auto_ptr<Y> & r )
- {
- this_type( r ).swap( *this );
- return *this;
- }
-
-#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
-
- template<class Y>
- shared_ptr & operator=( std::auto_ptr<Y> && r )
- {
- this_type( static_cast< std::auto_ptr<Y> && >( r ) ).swap( *this );
- return *this;
- }
-
-#elif !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
-
- template<class Ap>
- typename cutl_details_boost::detail::sp_enable_if_auto_ptr< Ap, shared_ptr & >::type operator=( Ap r )
- {
- this_type( r ).swap( *this );
- return *this;
- }
-
-#endif // BOOST_NO_SFINAE, BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-#endif // BOOST_NO_AUTO_PTR
-
-#if !defined( BOOST_NO_CXX11_SMART_PTR ) && !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
-
- template<class Y, class D>
- shared_ptr & operator=( std::unique_ptr<Y, D> && r )
- {
- this_type( static_cast< std::unique_ptr<Y, D> && >( r ) ).swap(*this);
- return *this;
- }
-
-#endif
-
-// Move support
-
-#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
-
- shared_ptr( shared_ptr && r ) BOOST_NOEXCEPT : px( r.px ), pn()
- {
- pn.swap( r.pn );
- r.px = 0;
- }
-
- template<class Y>
-#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
-
- shared_ptr( shared_ptr<Y> && r, typename cutl_details_boost::detail::sp_enable_if_convertible<Y,T>::type = cutl_details_boost::detail::sp_empty() )
-
-#else
-
- shared_ptr( shared_ptr<Y> && r )
-
-#endif
- BOOST_NOEXCEPT : px( r.px ), pn()
- {
- cutl_details_boost::detail::sp_assert_convertible< Y, T >();
-
- pn.swap( r.pn );
- r.px = 0;
- }
-
- shared_ptr & operator=( shared_ptr && r ) BOOST_NOEXCEPT
- {
- this_type( static_cast< shared_ptr && >( r ) ).swap( *this );
- return *this;
- }
-
- template<class Y>
- shared_ptr & operator=( shared_ptr<Y> && r ) BOOST_NOEXCEPT
- {
- this_type( static_cast< shared_ptr<Y> && >( r ) ).swap( *this );
- return *this;
- }
-
-#endif
-
-#if !defined( BOOST_NO_CXX11_NULLPTR )
-
- shared_ptr & operator=( cutl_details_boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT // never throws
- {
- this_type().swap(*this);
- return *this;
- }
-
-#endif
-
- void reset() BOOST_NOEXCEPT // never throws in 1.30+
- {
- this_type().swap(*this);
- }
-
- template<class Y> void reset( Y * p ) // Y must be complete
- {
- BOOST_ASSERT( p == 0 || p != px ); // catch self-reset errors
- this_type( p ).swap( *this );
- }
-
- template<class Y, class D> void reset( Y * p, D d )
- {
- this_type( p, d ).swap( *this );
- }
-
- template<class Y, class D, class A> void reset( Y * p, D d, A a )
- {
- this_type( p, d, a ).swap( *this );
- }
-
- template<class Y> void reset( shared_ptr<Y> const & r, element_type * p )
- {
- this_type( r, p ).swap( *this );
- }
-
- // never throws (but has a BOOST_ASSERT in it, so not marked with BOOST_NOEXCEPT)
- typename cutl_details_boost::detail::sp_dereference< T >::type operator* () const
- {
- BOOST_ASSERT( px != 0 );
- return *px;
- }
-
- // never throws (but has a BOOST_ASSERT in it, so not marked with BOOST_NOEXCEPT)
- typename cutl_details_boost::detail::sp_member_access< T >::type operator-> () const
- {
- BOOST_ASSERT( px != 0 );
- return px;
- }
-
- // never throws (but has a BOOST_ASSERT in it, so not marked with BOOST_NOEXCEPT)
- typename cutl_details_boost::detail::sp_array_access< T >::type operator[] ( std::ptrdiff_t i ) const
- {
- BOOST_ASSERT( px != 0 );
- BOOST_ASSERT( i >= 0 && ( i < cutl_details_boost::detail::sp_extent< T >::value || cutl_details_boost::detail::sp_extent< T >::value == 0 ) );
-
- return px[ i ];
- }
-
- element_type * get() const BOOST_NOEXCEPT
- {
- return px;
- }
-
-// implicit conversion to "bool"
-#include <cutl/details/boost/smart_ptr/detail/operator_bool.hpp>
-
- bool unique() const BOOST_NOEXCEPT
- {
- return pn.unique();
- }
-
- long use_count() const BOOST_NOEXCEPT
- {
- return pn.use_count();
- }
-
- void swap( shared_ptr & other ) BOOST_NOEXCEPT
- {
- std::swap(px, other.px);
- pn.swap(other.pn);
- }
-
- template<class Y> bool owner_before( shared_ptr<Y> const & rhs ) const BOOST_NOEXCEPT
- {
- return pn < rhs.pn;
- }
-
- template<class Y> bool owner_before( weak_ptr<Y> const & rhs ) const BOOST_NOEXCEPT
- {
- return pn < rhs.pn;
- }
-
- void * _internal_get_deleter( cutl_details_boost::detail::sp_typeinfo const & ti ) const BOOST_NOEXCEPT
- {
- return pn.get_deleter( ti );
- }
-
- void * _internal_get_untyped_deleter() const BOOST_NOEXCEPT
- {
- return pn.get_untyped_deleter();
- }
-
- bool _internal_equiv( shared_ptr const & r ) const BOOST_NOEXCEPT
- {
- return px == r.px && pn == r.pn;
- }
-
-// Tasteless as this may seem, making all members public allows member templates
-// to work in the absence of member template friends. (Matthew Langston)
-
-#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-
-private:
-
- template<class Y> friend class shared_ptr;
- template<class Y> friend class weak_ptr;
-
-
-#endif
-
- element_type * px; // contained pointer
- cutl_details_boost::detail::shared_count pn; // reference counter
-
-}; // shared_ptr
-
-template<class T, class U> inline bool operator==(shared_ptr<T> const & a, shared_ptr<U> const & b) BOOST_NOEXCEPT
-{
- return a.get() == b.get();
-}
-
-template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<U> const & b) BOOST_NOEXCEPT
-{
- return a.get() != b.get();
-}
-
-#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96
-
-// Resolve the ambiguity between our op!= and the one in rel_ops
-
-template<class T> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<T> const & b) BOOST_NOEXCEPT
-{
- return a.get() != b.get();
-}
-
-#endif
-
-#if !defined( BOOST_NO_CXX11_NULLPTR )
-
-template<class T> inline bool operator==( shared_ptr<T> const & p, cutl_details_boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
-{
- return p.get() == 0;
-}
-
-template<class T> inline bool operator==( cutl_details_boost::detail::sp_nullptr_t, shared_ptr<T> const & p ) BOOST_NOEXCEPT
-{
- return p.get() == 0;
-}
-
-template<class T> inline bool operator!=( shared_ptr<T> const & p, cutl_details_boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
-{
- return p.get() != 0;
-}
-
-template<class T> inline bool operator!=( cutl_details_boost::detail::sp_nullptr_t, shared_ptr<T> const & p ) BOOST_NOEXCEPT
-{
- return p.get() != 0;
-}
-
-#endif
-
-template<class T, class U> inline bool operator<(shared_ptr<T> const & a, shared_ptr<U> const & b) BOOST_NOEXCEPT
-{
- return a.owner_before( b );
-}
-
-template<class T> inline void swap(shared_ptr<T> & a, shared_ptr<T> & b) BOOST_NOEXCEPT
-{
- a.swap(b);
-}
-
-template<class T, class U> shared_ptr<T> static_pointer_cast( shared_ptr<U> const & r ) BOOST_NOEXCEPT
-{
- (void) static_cast< T* >( static_cast< U* >( 0 ) );
-
- typedef typename shared_ptr<T>::element_type E;
-
- E * p = static_cast< E* >( r.get() );
- return shared_ptr<T>( r, p );
-}
-
-template<class T, class U> shared_ptr<T> const_pointer_cast( shared_ptr<U> const & r ) BOOST_NOEXCEPT
-{
- (void) const_cast< T* >( static_cast< U* >( 0 ) );
-
- typedef typename shared_ptr<T>::element_type E;
-
- E * p = const_cast< E* >( r.get() );
- return shared_ptr<T>( r, p );
-}
-
-template<class T, class U> shared_ptr<T> dynamic_pointer_cast( shared_ptr<U> const & r ) BOOST_NOEXCEPT
-{
- (void) dynamic_cast< T* >( static_cast< U* >( 0 ) );
-
- typedef typename shared_ptr<T>::element_type E;
-
- E * p = dynamic_cast< E* >( r.get() );
- return p? shared_ptr<T>( r, p ): shared_ptr<T>();
-}
-
-template<class T, class U> shared_ptr<T> reinterpret_pointer_cast( shared_ptr<U> const & r ) BOOST_NOEXCEPT
-{
- (void) reinterpret_cast< T* >( static_cast< U* >( 0 ) );
-
- typedef typename shared_ptr<T>::element_type E;
-
- E * p = reinterpret_cast< E* >( r.get() );
- return shared_ptr<T>( r, p );
-}
-
-// get_pointer() enables cutl_details_boost::mem_fn to recognize shared_ptr
-
-template<class T> inline typename shared_ptr<T>::element_type * get_pointer(shared_ptr<T> const & p) BOOST_NOEXCEPT
-{
- return p.get();
-}
-
-// operator<<
-
-#if !defined(BOOST_NO_IOSTREAM)
-
-#if defined(BOOST_NO_TEMPLATED_IOSTREAMS) || ( defined(__GNUC__) && (__GNUC__ < 3) )
-
-template<class Y> std::ostream & operator<< (std::ostream & os, shared_ptr<Y> const & p)
-{
- os << p.get();
- return os;
-}
-
-#else
-
-// in STLport's no-iostreams mode no iostream symbols can be used
-#ifndef _STLP_NO_IOSTREAMS
-
-# if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, < 1300 && __SGI_STL_PORT)
-// MSVC6 has problems finding std::basic_ostream through the using declaration in namespace _STL
-using std::basic_ostream;
-template<class E, class T, class Y> basic_ostream<E, T> & operator<< (basic_ostream<E, T> & os, shared_ptr<Y> const & p)
-# else
-template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::basic_ostream<E, T> & os, shared_ptr<Y> const & p)
-# endif
-{
- os << p.get();
- return os;
-}
-
-#endif // _STLP_NO_IOSTREAMS
-
-#endif // __GNUC__ < 3
-
-#endif // !defined(BOOST_NO_IOSTREAM)
-
-// get_deleter
-
-namespace detail
-{
-
-#if ( defined(__GNUC__) && BOOST_WORKAROUND(__GNUC__, < 3) ) || \
- ( defined(__EDG_VERSION__) && BOOST_WORKAROUND(__EDG_VERSION__, <= 238) ) || \
- ( defined(__HP_aCC) && BOOST_WORKAROUND(__HP_aCC, <= 33500) )
-
-// g++ 2.9x doesn't allow static_cast<X const *>(void *)
-// apparently EDG 2.38 and HP aCC A.03.35 also don't accept it
-
-template<class D, class T> D * basic_get_deleter(shared_ptr<T> const & p)
-{
- void const * q = p._internal_get_deleter(BOOST_SP_TYPEID(D));
- return const_cast<D *>(static_cast<D const *>(q));
-}
-
-#else
-
-template<class D, class T> D * basic_get_deleter( shared_ptr<T> const & p ) BOOST_NOEXCEPT
-{
- return static_cast<D *>( p._internal_get_deleter(BOOST_SP_TYPEID(D)) );
-}
-
-#endif
-
-class esft2_deleter_wrapper
-{
-private:
-
- shared_ptr<void> deleter_;
-
-public:
-
- esft2_deleter_wrapper()
- {
- }
-
- template< class T > void set_deleter( shared_ptr<T> const & deleter )
- {
- deleter_ = deleter;
- }
-
- template<typename D> D* get_deleter() const BOOST_NOEXCEPT
- {
- return cutl_details_boost::detail::basic_get_deleter<D>( deleter_ );
- }
-
- template< class T> void operator()( T* )
- {
- BOOST_ASSERT( deleter_.use_count() <= 1 );
- deleter_.reset();
- }
-};
-
-} // namespace detail
-
-template<class D, class T> D * get_deleter( shared_ptr<T> const & p ) BOOST_NOEXCEPT
-{
- D *del = cutl_details_boost::detail::basic_get_deleter<D>(p);
-
- if(del == 0)
- {
- cutl_details_boost::detail::esft2_deleter_wrapper *del_wrapper = cutl_details_boost::detail::basic_get_deleter<cutl_details_boost::detail::esft2_deleter_wrapper>(p);
-// The following get_deleter method call is fully qualified because
-// older versions of gcc (2.95, 3.2.3) fail to compile it when written del_wrapper->get_deleter<D>()
- if(del_wrapper) del = del_wrapper->::cutl_details_boost::detail::esft2_deleter_wrapper::get_deleter<D>();
- }
-
- return del;
-}
-
-// atomic access
-
-#if !defined(BOOST_SP_NO_ATOMIC_ACCESS)
-
-template<class T> inline bool atomic_is_lock_free( shared_ptr<T> const * /*p*/ ) BOOST_NOEXCEPT
-{
- return false;
-}
-
-template<class T> shared_ptr<T> atomic_load( shared_ptr<T> const * p )
-{
- cutl_details_boost::detail::spinlock_pool<2>::scoped_lock lock( p );
- return *p;
-}
-
-template<class T> inline shared_ptr<T> atomic_load_explicit( shared_ptr<T> const * p, memory_order /*mo*/ )
-{
- return atomic_load( p );
-}
-
-template<class T> void atomic_store( shared_ptr<T> * p, shared_ptr<T> r )
-{
- cutl_details_boost::detail::spinlock_pool<2>::scoped_lock lock( p );
- p->swap( r );
-}
-
-template<class T> inline void atomic_store_explicit( shared_ptr<T> * p, shared_ptr<T> r, memory_order /*mo*/ )
-{
- atomic_store( p, r ); // std::move( r )
-}
-
-template<class T> shared_ptr<T> atomic_exchange( shared_ptr<T> * p, shared_ptr<T> r )
-{
- cutl_details_boost::detail::spinlock & sp = cutl_details_boost::detail::spinlock_pool<2>::spinlock_for( p );
-
- sp.lock();
- p->swap( r );
- sp.unlock();
-
- return r; // return std::move( r )
-}
-
-template<class T> shared_ptr<T> atomic_exchange_explicit( shared_ptr<T> * p, shared_ptr<T> r, memory_order /*mo*/ )
-{
- return atomic_exchange( p, r ); // std::move( r )
-}
-
-template<class T> bool atomic_compare_exchange( shared_ptr<T> * p, shared_ptr<T> * v, shared_ptr<T> w )
-{
- cutl_details_boost::detail::spinlock & sp = cutl_details_boost::detail::spinlock_pool<2>::spinlock_for( p );
-
- sp.lock();
-
- if( p->_internal_equiv( *v ) )
- {
- p->swap( w );
-
- sp.unlock();
-
- return true;
- }
- else
- {
- shared_ptr<T> tmp( *p );
-
- sp.unlock();
-
- tmp.swap( *v );
- return false;
- }
-}
-
-template<class T> inline bool atomic_compare_exchange_explicit( shared_ptr<T> * p, shared_ptr<T> * v, shared_ptr<T> w, memory_order /*success*/, memory_order /*failure*/ )
-{
- return atomic_compare_exchange( p, v, w ); // std::move( w )
-}
-
-#endif // !defined(BOOST_SP_NO_ATOMIC_ACCESS)
-
-// hash_value
-
-template< class T > struct hash;
-
-template< class T > std::size_t hash_value( cutl_details_boost::shared_ptr<T> const & p ) BOOST_NOEXCEPT
-{
- return cutl_details_boost::hash< T* >()( p.get() );
-}
-
-} // namespace cutl_details_boost
-
-#endif // #if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
-
-#endif // #ifndef BOOST_SMART_PTR_SHARED_PTR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/static_assert.hpp b/libcutl/cutl/details/boost/static_assert.hpp
deleted file mode 100644
index c7467fb..0000000
--- a/libcutl/cutl/details/boost/static_assert.hpp
+++ /dev/null
@@ -1,195 +0,0 @@
-// (C) Copyright John Maddock 2000.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/static_assert for documentation.
-
-/*
- Revision history:
- 02 August 2000
- Initial version.
-*/
-
-#ifndef BOOST_STATIC_ASSERT_HPP
-#define BOOST_STATIC_ASSERT_HPP
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__)
-//
-// This is horrible, but it seems to be the only we can shut up the
-// "anonymous variadic macros were introduced in C99 [-Wvariadic-macros]"
-// warning that get spewed out otherwise in non-C++11 mode.
-//
-#pragma GCC system_header
-#endif
-
-#ifndef BOOST_NO_CXX11_STATIC_ASSERT
-# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-# define BOOST_STATIC_ASSERT_MSG( ... ) static_assert(__VA_ARGS__)
-# else
-# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
-# endif
-#else
-# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
-#endif
-
-#ifdef __BORLANDC__
-//
-// workaround for buggy integral-constant expression support:
-#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS
-#endif
-
-#if defined(__GNUC__) && (__GNUC__ == 3) && ((__GNUC_MINOR__ == 3) || (__GNUC_MINOR__ == 4))
-// gcc 3.3 and 3.4 don't produce good error messages with the default version:
-# define BOOST_SA_GCC_WORKAROUND
-#endif
-
-//
-// If the compiler issues warnings about old C style casts,
-// then enable this:
-//
-#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)))
-# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) ((__VA_ARGS__) == 0 ? false : true)
-# else
-# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) == 0 ? false : true)
-# endif
-#else
-# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) (bool)(__VA_ARGS__)
-# else
-# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
-# endif
-#endif
-//
-// If the compiler warns about unused typedefs then enable this:
-//
-#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
-# define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
-#else
-# define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
-#endif
-
-#ifndef BOOST_NO_CXX11_STATIC_ASSERT
-# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-# define BOOST_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__)
-# else
-# define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
-# endif
-#else
-
-namespace cutl_details_boost{
-
-// HP aCC cannot deal with missing names for template value parameters
-template <bool x> struct STATIC_ASSERTION_FAILURE;
-
-template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
-
-// HP aCC cannot deal with missing names for template value parameters
-template<int x> struct static_assert_test{};
-
-}
-
-//
-// Implicit instantiation requires that all member declarations be
-// instantiated, but that the definitions are *not* instantiated.
-//
-// It's not particularly clear how this applies to enum's or typedefs;
-// both are described as declarations [7.1.3] and [7.2] in the standard,
-// however some compilers use "delayed evaluation" of one or more of
-// these when implicitly instantiating templates. We use typedef declarations
-// by default, but try defining BOOST_USE_ENUM_STATIC_ASSERT if the enum
-// version gets better results from your compiler...
-//
-// Implementation:
-// Both of these versions rely on sizeof(incomplete_type) generating an error
-// message containing the name of the incomplete type. We use
-// "STATIC_ASSERTION_FAILURE" as the type name here to generate
-// an eye catching error message. The result of the sizeof expression is either
-// used as an enum initialiser, or as a template argument depending which version
-// is in use...
-// Note that the argument to the assert is explicitly cast to bool using old-
-// style casts: too many compilers currently have problems with static_cast
-// when used inside integral constant expressions.
-//
-#if !defined(BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS)
-
-#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
-// __LINE__ macro broken when -ZI is used see Q199057
-// fortunately MSVC ignores duplicate typedef's.
-#define BOOST_STATIC_ASSERT( B ) \
- typedef ::cutl_details_boost::static_assert_test<\
- sizeof(::cutl_details_boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)\
- > boost_static_assert_typedef_
-#elif defined(BOOST_MSVC) && defined(BOOST_NO_CXX11_VARIADIC_MACROS)
-#define BOOST_STATIC_ASSERT( B ) \
- typedef ::cutl_details_boost::static_assert_test<\
- sizeof(::cutl_details_boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST ( B ) >)>\
- BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
-#elif defined(BOOST_MSVC)
-#define BOOST_STATIC_ASSERT(...) \
- typedef ::cutl_details_boost::static_assert_test<\
- sizeof(::cutl_details_boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST (__VA_ARGS__) >)>\
- BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
-#elif (defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)) && defined(BOOST_NO_CXX11_VARIADIC_MACROS)
-// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error
-// instead of warning in case of failure
-# define BOOST_STATIC_ASSERT( B ) \
- typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
- [ ::cutl_details_boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >::value ]
-#elif (defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)) && !defined(BOOST_NO_CXX11_VARIADIC_MACROS)
-// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error
-// instead of warning in case of failure
-# define BOOST_STATIC_ASSERT(...) \
- typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
- [ ::cutl_details_boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >::value ]
-#elif defined(__sgi)
-// special version for SGI MIPSpro compiler
-#define BOOST_STATIC_ASSERT( B ) \
- BOOST_STATIC_CONSTANT(bool, \
- BOOST_JOIN(boost_static_assert_test_, __LINE__) = ( B )); \
- typedef ::cutl_details_boost::static_assert_test<\
- sizeof(::cutl_details_boost::STATIC_ASSERTION_FAILURE< \
- BOOST_JOIN(boost_static_assert_test_, __LINE__) >)>\
- BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
-#elif BOOST_WORKAROUND(__MWERKS__, <= 0x3003)
-// special version for CodeWarrior <= 8.x
-#define BOOST_STATIC_ASSERT( B ) \
- BOOST_STATIC_CONSTANT(int, \
- BOOST_JOIN(boost_static_assert_test_, __LINE__) = \
- sizeof(::cutl_details_boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >) )
-#else
-// generic version
-# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-# define BOOST_STATIC_ASSERT( ... ) \
- typedef ::cutl_details_boost::static_assert_test<\
- sizeof(::cutl_details_boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\
- BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
-# else
-# define BOOST_STATIC_ASSERT( B ) \
- typedef ::cutl_details_boost::static_assert_test<\
- sizeof(::cutl_details_boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
- BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
-# endif
-#endif
-
-#else
-// alternative enum based implementation:
-# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-# define BOOST_STATIC_ASSERT( ... ) \
- enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
- = sizeof(::cutl_details_boost::STATIC_ASSERTION_FAILURE< (bool)( __VA_ARGS__ ) >) }
-# else
-# define BOOST_STATIC_ASSERT(B) \
- enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
- = sizeof(::cutl_details_boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) }
-# endif
-#endif
-#endif // defined(BOOST_NO_CXX11_STATIC_ASSERT)
-
-#endif // BOOST_STATIC_ASSERT_HPP
-
-
diff --git a/libcutl/cutl/details/boost/throw_exception.hpp b/libcutl/cutl/details/boost/throw_exception.hpp
deleted file mode 100644
index 6de96d8..0000000
--- a/libcutl/cutl/details/boost/throw_exception.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-#ifndef UUID_AA15E74A856F11E08B8D93F24824019B
-#define UUID_AA15E74A856F11E08B8D93F24824019B
-#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma GCC system_header
-#endif
-#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma warning(push,1)
-#endif
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-// boost/throw_exception.hpp
-//
-// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// http://www.boost.org/libs/utility/throw_exception.html
-//
-
-#include <cutl/details/boost/exception/detail/attribute_noreturn.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-#include <cutl/details/boost/config.hpp>
-#include <exception>
-
-#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x593) )
-# define BOOST_EXCEPTION_DISABLE
-#endif
-
-#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, < 1310 )
-# define BOOST_EXCEPTION_DISABLE
-#endif
-
-#if !defined( BOOST_EXCEPTION_DISABLE )
-# include <cutl/details/boost/exception/exception.hpp>
-# include <cutl/details/boost/current_function.hpp>
-# define BOOST_THROW_EXCEPTION(x) ::cutl_details_boost::exception_detail::throw_exception_(x,BOOST_CURRENT_FUNCTION,__FILE__,__LINE__)
-#else
-# define BOOST_THROW_EXCEPTION(x) ::cutl_details_boost::throw_exception(x)
-#endif
-
-namespace cutl_details_boost
-{
-#ifdef BOOST_NO_EXCEPTIONS
-
-void throw_exception( std::exception const & e ); // user defined
-
-#else
-
-inline void throw_exception_assert_compatibility( std::exception const & ) { }
-
-template<class E> BOOST_ATTRIBUTE_NORETURN inline void throw_exception( E const & e )
-{
- //All boost exceptions are required to derive from std::exception,
- //to ensure compatibility with BOOST_NO_EXCEPTIONS.
- throw_exception_assert_compatibility(e);
-
-#ifndef BOOST_EXCEPTION_DISABLE
- throw enable_current_exception(enable_error_info(e));
-#else
- throw e;
-#endif
-}
-
-#endif
-
-#if !defined( BOOST_EXCEPTION_DISABLE )
- namespace
- exception_detail
- {
- template <class E>
- BOOST_ATTRIBUTE_NORETURN
- void
- throw_exception_( E const & x, char const * current_function, char const * file, int line )
- {
- cutl_details_boost::throw_exception(
- set_info(
- set_info(
- set_info(
- enable_error_info(x),
- throw_function(current_function)),
- throw_file(file)),
- throw_line(line)));
- }
- }
-#endif
-} // namespace cutl_details_boost
-
-#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma warning(pop)
-#endif
-#endif
diff --git a/libcutl/cutl/details/boost/tr1/detail/config.hpp b/libcutl/cutl/details/boost/tr1/detail/config.hpp
deleted file mode 100644
index 6231886..0000000
--- a/libcutl/cutl/details/boost/tr1/detail/config.hpp
+++ /dev/null
@@ -1,169 +0,0 @@
-// (C) Copyright John Maddock 2005-7.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
-# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
-
-#include <cstddef>
-
-#if (defined(__GNUC__) && !(defined(linux) || defined(__linux) || defined(__linux__))) \
- || (!defined(_AIX) && defined(__IBMCPP__) && (__IBMCPP__ >= 800))
- // Disable use of #include_next on Linux as typically we are installed in a
- // directory that is searched *after* the std lib include path.
-#if !defined(BOOST_HAS_INCLUDE_NEXT)
-# define BOOST_HAS_INCLUDE_NEXT
-#endif
-// Need to find out if we're using GLIBC:
-#ifdef BOOST_TR1_UTILITY_INCLUDED
-// Oops we're in a recursive include path!!
-// Need to include utility, or some std lib header,
-// but *not* via <utility> or <cutl/details/boost/config/no_tr1/utility.hpp>
-# ifndef BOOST_TR1_NO_RECURSION
-# define BOOST_TR1_NO_RECURSION
-# define BOOST_TR1_NO_CONFIG_RECURSION
-# endif
-# if defined(BOOST_HAS_INCLUDE_NEXT) && !defined(BOOST_TR1_DISABLE_INCLUDE_NEXT)
-# include_next <utility>
-# else
-# include BOOST_TR1_STD_HEADER(utility)
-# endif
-# ifdef BOOST_TR1_NO_CONFIG_RECURSION
-# undef BOOST_TR1_NO_CONFIG_RECURSION
-# undef BOOST_TR1_NO_RECURSION
-# endif
-#else
-#include <cutl/details/boost/config/no_tr1/utility.hpp>
-#endif
-#endif
-
-#if defined(__GLIBCXX__) && !defined(BOOST_TR1_PATH)
-# define BOOST_TR1_PATH(name) tr1/name
-#endif
-#if !defined(BOOST_TR1_PATH)
-# define BOOST_TR1_PATH(name) name
-#endif
-
-#define BOOST_TR1_HEADER(name) <BOOST_TR1_PATH(name)>
-
-// Can't use BOOST_WORKAROUND here, it leads to recursive includes:
-#if (defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)) || (defined(_MSC_VER) && (_MSC_VER < 1310))
-# define BOOST_TR1_USE_OLD_TUPLE
-#endif
-
-#ifdef __IBMCPP_TR1__
- // turn on support for everything:
-# define BOOST_HAS_TR1
-#endif
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-# define BOOST_HAS_TR1_COMPLEX_OVERLOADS
-# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
-#endif
-
-#ifdef BOOST_HAS_TR1
- // turn on support for everything:
-# define BOOST_HAS_TR1_ARRAY
-# define BOOST_HAS_TR1_COMPLEX_OVERLOADS
-# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
-# define BOOST_HAS_TR1_REFERENCE_WRAPPER
-# define BOOST_HAS_TR1_RESULT_OF
-# define BOOST_HAS_TR1_MEM_FN
-# define BOOST_HAS_TR1_BIND
-# define BOOST_HAS_TR1_FUNCTION
-# define BOOST_HAS_TR1_HASH
-# define BOOST_HAS_TR1_SHARED_PTR
-# define BOOST_HAS_TR1_RANDOM
-# define BOOST_HAS_TR1_REGEX
-# define BOOST_HAS_TR1_TUPLE
-# define BOOST_HAS_TR1_TYPE_TRAITS
-# define BOOST_HAS_TR1_UTILITY
-# define BOOST_HAS_TR1_UNORDERED_MAP
-# define BOOST_HAS_TR1_UNORDERED_SET
-# define BOOST_HAS_TR1_CMATH
-
-#endif
-
-#if defined(__MWERKS__) && (__MWERKS__ >= 0x3205)
-//
-// Very preliminary MWCW support, may not be right:
-//
-# define BOOST_HAS_TR1_SHARED_PTR
-# define BOOST_HAS_TR1_REFERENCE_WRAPPER
-# define BOOST_HAS_TR1_FUNCTION
-# define BOOST_HAS_TR1_TUPLE
-# define BOOST_HAS_TR1_RESULT_OF
-#endif
-
-#ifdef BOOST_HAS_GCC_TR1
- // turn on support for everything in gcc 4.0.x:
-# define BOOST_HAS_TR1_ARRAY
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403
-//# define BOOST_HAS_TR1_COMPLEX_OVERLOADS
-# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
-#endif
-# define BOOST_HAS_TR1_REFERENCE_WRAPPER
-# define BOOST_HAS_TR1_RESULT_OF
-# define BOOST_HAS_TR1_MEM_FN
-# define BOOST_HAS_TR1_BIND
-# define BOOST_HAS_TR1_FUNCTION
-# define BOOST_HAS_TR1_HASH
-# define BOOST_HAS_TR1_SHARED_PTR
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403
-# define BOOST_HAS_TR1_RANDOM
-//# define BOOST_HAS_TR1_REGEX
-#ifdef _GLIBCXX_USE_C99_MATH_TR1
-# define BOOST_HAS_TR1_CMATH
-#endif
-#endif
-# define BOOST_HAS_TR1_TUPLE
-# define BOOST_HAS_TR1_TYPE_TRAITS
-# define BOOST_HAS_TR1_UTILITY
-# define BOOST_HAS_TR1_UNORDERED_MAP
-# define BOOST_HAS_TR1_UNORDERED_SET
-
-#endif
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1500) \
- && defined(_MSC_FULL_VER) && \
- !defined(__SGI_STL_PORT) && \
- !defined(_STLPORT_VERSION) && \
- !defined(_RWSTD_VER_STR) && \
- !defined(_RWSTD_VER)
-//
-// MSVC-9.0 defines a not-quite TR1 conforming hash
-// function object in <functional>, so we must define
-// this here, in addition the feature pack for VC9
-// provides a more or less full TR1 implementation:
-//
-# if defined(_HAS_TR1) && (_HAS_TR1 + 0)
-# define BOOST_HAS_TR1_ARRAY
-# define BOOST_HAS_TR1_REFERENCE_WRAPPER
-# define BOOST_HAS_TR1_RESULT_OF
-# define BOOST_HAS_TR1_MEM_FN
-# define BOOST_HAS_TR1_BIND
-# define BOOST_HAS_TR1_FUNCTION
-# define BOOST_HAS_TR1_HASH
-# define BOOST_HAS_TR1_SHARED_PTR
-# define BOOST_HAS_TR1_RANDOM
-# define BOOST_HAS_TR1_REGEX
-# define BOOST_HAS_TR1_TUPLE
-# define BOOST_HAS_TR1_TYPE_TRAITS
-# define BOOST_HAS_TR1_UTILITY
-# define BOOST_HAS_TR1_UNORDERED_MAP
-# define BOOST_HAS_TR1_UNORDERED_SET
-# else
-# define BOOST_HAS_TR1_HASH
-# endif
-# if _MSC_VER >= 1600
-# define BOOST_HAS_CPP_0X
-# endif
-#endif
-
-#include <cutl/details/boost/config.hpp>
-
-#endif
-
-
-
diff --git a/libcutl/cutl/details/boost/tr1/detail/config_all.hpp b/libcutl/cutl/details/boost/tr1/detail/config_all.hpp
deleted file mode 100644
index 0ee5c8d..0000000
--- a/libcutl/cutl/details/boost/tr1/detail/config_all.hpp
+++ /dev/null
@@ -1,168 +0,0 @@
-// (C) Copyright John Maddock 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-/*
- * The gcc include path logic is derived from STLport:
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Copyright (c) 1996-1999
- * Silicon Graphics Computer Systems, Inc.
- *
- * Copyright (c) 1997
- * Moscow Center for SPARC Technology
- *
- * Copyright (c) 1999-2003
- * Boris Fomitchev
- *
- * This material is provided "as is", with absolutely no warranty expressed
- * or implied. Any use is at your own risk.
- *
- * Permission to use or copy this software for any purpose is hereby granted
- * without fee, provided the above notices are retained on all copies.
- * Permission to modify the code and to distribute modified code is granted,
- * provided the above notices are retained, and a notice that the code was
- * modified is included with the above copyright notice.
- *
- */
-
-#ifndef BOOST_TR1_DETAIL_CONFIG_ALL_HPP_INCLUDED
-# define BOOST_TR1_DETAIL_CONFIG_ALL_HPP_INCLUDED
-
-//
-// IMPORTANT: we must figure out the basics, such as how to
-// forward to the real std lib headers *without* including
-// boost/config.hpp or any of the std lib headers. A classic
-// chicken and the egg problem....
-//
-// Including <cstddef> at least lets us detect STLport:
-//
-#include <cstddef>
-
-// Including <cstdlib> allows us to use __GLIBCXX__ to
-// determine the version of the stdc++ library in use
-// under Darwin.
-#include <cstdlib>
-
-# if defined(_RWSTD_VER) && _RWSTD_VER >= 0x04010200
-# if !defined (__SUNPRO_CC) && !defined (__DECCXX)
-# define BOOST_TR1_STD_CHEADER(name) <../include/ansi/name>
-# endif
-# endif
-
-
-# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && !defined(__BORLANDC__)
-# ifdef __SUNPRO_CC
- // can't use <../stlport/name> since some compilers put stlport in a different directory:
-# define BOOST_TR1_STD_HEADER(name) <../stlport4/name>
-# elif defined(__PGI)
-# define BOOST_TR1_STD_HEADER(name) <../CC/name>
-# else
-# define BOOST_TR1_STD_HEADER(name) <../stlport/name>
-# endif
-# elif defined(__PATHSCALE__) && (defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))
-# define BOOST_TR1_STD_HEADER(name) <../include/name>
-
-# elif defined(__SUNPRO_CC) && (defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))
-# define BOOST_TR1_STD_HEADER(name) <../stdcxx4/name>
-
-# elif defined(__HP_aCC)
- // HP aCC include path:
-# define BOOST_TR1_STD_HEADER(name) <../include_std/name>
-
-# elif defined(__DECCXX)
-# define BOOST_TR1_STD_HEADER(name) <../cxx/name>
-
-# elif defined(__BORLANDC__) && __BORLANDC__ >= 0x570
-# define BOOST_TR1_STD_HEADER(name) <../include/dinkumware/name>
-
-# elif defined(__clang__)
-# define BOOST_TR1_STD_HEADER(name) <../include/name>
-
-# elif defined(__GNUC__) && __GNUC__ >= 3
-# if defined(BOOST_TR1_GCC_INCLUDE_PATH)
-# define BOOST_TR1_STD_HEADER(name) <../BOOST_TR1_GCC_INCLUDE_PATH/name>
-# elif ( (__GNUC__ == 3 ) && ((__GNUC_MINOR__ == 0) || ((__GNUC_MINOR__ < 3) && defined(__APPLE_CC__))))
-# define BOOST_TR1_STD_HEADER(name) <../g++-v3/name>
-# else
-# if ( ((__GNUC__ == 3 ) && (__GNUC_MINOR__ >= 3)) && (defined(__APPLE_CC__) || defined(__CYGWIN__)))
-# define BOOST_TR1_STD_HEADER(name) <../c++/name>
-# elif ((__GLIBCXX__ == 20050421) && defined(__APPLE_CC__))
- // Some Darwin tools fix libstdc++ at 4.0.0 irrespective of the actual
- // compiler version:
-# define BOOST_TR1_STD_HEADER(name) <../4.0.0/name>
- /*
- * Before version 3.4.0 the 0 patch level was not part of the include path:
- */
-# elif defined (__GNUC_PATCHLEVEL__) && ((__GNUC_PATCHLEVEL__ > 0) || \
- (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
- (__GNUC__ > 3))
-# define BOOST_TR1_STD_HEADER(name) <../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__/name>
-# else
-# define BOOST_TR1_STD_HEADER(name) <../__GNUC__.__GNUC_MINOR__/name>
-# endif
-# endif
-
-# if !defined(BOOST_TR1_DISABLE_INCLUDE_NEXT) && !defined(__ICC) \
- && (defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__))
- // Disable use of #include_next on Linux as typically we are installed in a directory that is searched
- // *after* the std lib include path:
-# define BOOST_TR1_DISABLE_INCLUDE_NEXT
-# endif
-
-# else
-# define BOOST_TR1_STD_HEADER(name) <../include/name>
-# endif
-
-#if !defined(BOOST_TR1_STD_CHEADER)
-# define BOOST_TR1_STD_CHEADER(name) BOOST_TR1_STD_HEADER(name)
-#endif
-
-#if defined(__GNUC__) && !defined(BOOST_HAS_INCLUDE_NEXT)
-# define BOOST_HAS_INCLUDE_NEXT
-#endif
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-# define BOOST_HAS_CPP_0X
-#endif
-#if defined(_MSC_VER) && (_MSC_VER >= 1600) && !defined(BOOST_HAS_CPP_0X)
-# define BOOST_HAS_CPP_0X
-#endif
-//
-// We may be in the middle of parsing boost/config.hpp
-// when this header is included, so don't rely on config
-// stuff in the rest of this header...
-//
-// Find our actual std lib:
-//
-#if defined(BOOST_HAS_INCLUDE_NEXT) && !defined(BOOST_TR1_DISABLE_INCLUDE_NEXT)
-//
-// We don't take this branch if BOOST_TR1_DISABLE_INCLUDE_NEXT
-// is defined as we may be installed in
-// /usr/include, in which case #include_next won't work as our
-// include path will occur AFTER the regular std lib one :-(
-//
-# ifndef BOOST_TR1_NO_RECURSION
-# define BOOST_TR1_NO_RECURSION
-# define BOOST_TR1_NO_CONFIG_ALL_RECURSION
-# endif
-# include_next <utility>
-# if (__GNUC__ < 3)
-# include_next <algorithm>
-# include_next <iterator>
-# endif
-# ifdef BOOST_TR1_NO_CONFIG_ALL_RECURSION
-# undef BOOST_TR1_NO_CONFIG_ALL_RECURSION
-# undef BOOST_TR1_NO_RECURSION
-# endif
-#else
-# include BOOST_TR1_STD_HEADER(utility)
-#endif
-
-#include <cutl/details/boost/tr1/detail/config.hpp>
-
-#endif
-
-
diff --git a/libcutl/cutl/details/boost/tr1/regex.hpp b/libcutl/cutl/details/boost/tr1/regex.hpp
deleted file mode 100644
index 156228d..0000000
--- a/libcutl/cutl/details/boost/tr1/regex.hpp
+++ /dev/null
@@ -1,147 +0,0 @@
-// (C) Copyright John Maddock 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_TR1_REGEX_HPP_INCLUDED
-# define BOOST_TR1_REGEX_HPP_INCLUDED
-# include <cutl/details/boost/tr1/detail/config.hpp>
-
-#ifdef BOOST_HAS_TR1_REGEX
-
-# if defined(BOOST_HAS_INCLUDE_NEXT) && !defined(BOOST_TR1_DISABLE_INCLUDE_NEXT)
-# include_next BOOST_TR1_HEADER(regex)
-# else
-# include <cutl/details/boost/tr1/detail/config_all.hpp>
-# include BOOST_TR1_STD_HEADER(BOOST_TR1_PATH(regex))
-# endif
-
-#else
-
-#include <cutl/details/boost/regex.hpp>
-
-namespace std{ namespace tr1{
-
-// [7.5] Regex constants
-namespace regex_constants {
-
-using ::cutl_details_boost::regex_constants::syntax_option_type;
-using ::cutl_details_boost::regex_constants::icase;
-using ::cutl_details_boost::regex_constants::nosubs;
-using ::cutl_details_boost::regex_constants::optimize;
-using ::cutl_details_boost::regex_constants::collate;
-using ::cutl_details_boost::regex_constants::ECMAScript;
-using ::cutl_details_boost::regex_constants::basic;
-using ::cutl_details_boost::regex_constants::extended;
-using ::cutl_details_boost::regex_constants::awk;
-using ::cutl_details_boost::regex_constants::grep;
-using ::cutl_details_boost::regex_constants::egrep;
-
-using ::cutl_details_boost::regex_constants::match_flag_type;
-using ::cutl_details_boost::regex_constants::match_default;
-using ::cutl_details_boost::regex_constants::match_not_bol;
-using ::cutl_details_boost::regex_constants::match_not_eol;
-using ::cutl_details_boost::regex_constants::match_not_bow;
-using ::cutl_details_boost::regex_constants::match_not_eow;
-using ::cutl_details_boost::regex_constants::match_any;
-using ::cutl_details_boost::regex_constants::match_not_null;
-using ::cutl_details_boost::regex_constants::match_continuous;
-using ::cutl_details_boost::regex_constants::match_prev_avail;
-using ::cutl_details_boost::regex_constants::format_default;
-using ::cutl_details_boost::regex_constants::format_sed;
-using ::cutl_details_boost::regex_constants::format_no_copy;
-using ::cutl_details_boost::regex_constants::format_first_only;
-
-using ::cutl_details_boost::regex_constants::error_type;
-using ::cutl_details_boost::regex_constants::error_collate;
-using ::cutl_details_boost::regex_constants::error_ctype;
-using ::cutl_details_boost::regex_constants::error_escape;
-using ::cutl_details_boost::regex_constants::error_backref;
-using ::cutl_details_boost::regex_constants::error_brack;
-using ::cutl_details_boost::regex_constants::error_paren;
-using ::cutl_details_boost::regex_constants::error_brace;
-using ::cutl_details_boost::regex_constants::error_badbrace;
-using ::cutl_details_boost::regex_constants::error_range;
-using ::cutl_details_boost::regex_constants::error_space;
-using ::cutl_details_boost::regex_constants::error_badrepeat;
-using ::cutl_details_boost::regex_constants::error_complexity;
-using ::cutl_details_boost::regex_constants::error_stack;
-
-} // namespace regex_constants
-
-// [7.6] Class regex_error
-using ::cutl_details_boost::regex_error;
-
-// [7.7] Class template regex_traits
-using ::cutl_details_boost::regex_traits;
-
-// [7.8] Class template basic_regex
-using ::cutl_details_boost::basic_regex;
-using ::cutl_details_boost::regex;
-#ifndef BOOST_NO_WREGEX
-using ::cutl_details_boost::wregex;
-#endif
-
-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x0582)
-// [7.8.6] basic_regex swap
-using ::cutl_details_boost::swap;
-#endif
-
-// [7.9] Class template sub_match
-using ::cutl_details_boost::sub_match;
-
-using ::cutl_details_boost::csub_match;
-#ifndef BOOST_NO_WREGEX
-using ::cutl_details_boost::wcsub_match;
-#endif
-using ::cutl_details_boost::ssub_match;
-#ifndef BOOST_NO_WREGEX
-using ::cutl_details_boost::wssub_match;
-#endif
-
-// [7.10] Class template match_results
-using ::cutl_details_boost::match_results;
-using ::cutl_details_boost::cmatch;
-#ifndef BOOST_NO_WREGEX
-using ::cutl_details_boost::wcmatch;
-#endif
-using ::cutl_details_boost::smatch;
-#ifndef BOOST_NO_WREGEX
-using ::cutl_details_boost::wsmatch;
-#endif
-
-using ::cutl_details_boost::regex_match;
-
-// [7.11.3] Function template regex_search
-using ::cutl_details_boost::regex_search;
-
-// [7.11.4] Function template regex_replace
-using ::cutl_details_boost::regex_replace;
-
-// [7.12.1] Class template regex_iterator
-using ::cutl_details_boost::regex_iterator;
-using ::cutl_details_boost::cregex_iterator;
-#ifndef BOOST_NO_WREGEX
-using ::cutl_details_boost::wcregex_iterator;
-#endif
-using ::cutl_details_boost::sregex_iterator;
-#ifndef BOOST_NO_WREGEX
-using ::cutl_details_boost::wsregex_iterator;
-#endif
-
-// [7.12.2] Class template regex_token_iterator
-using ::cutl_details_boost::regex_token_iterator;
-using ::cutl_details_boost::cregex_token_iterator;
-#ifndef BOOST_NO_WREGEX
-using ::cutl_details_boost::wcregex_token_iterator;
-#endif
-using ::cutl_details_boost::sregex_token_iterator;
-#ifndef BOOST_NO_WREGEX
-using ::cutl_details_boost::wsregex_token_iterator;
-#endif
-
-} } // namespaces
-
-#endif
-
-#endif
diff --git a/libcutl/cutl/details/boost/type.hpp b/libcutl/cutl/details/boost/type.hpp
deleted file mode 100644
index ddf7a1b..0000000
--- a/libcutl/cutl/details/boost/type.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// (C) Copyright David Abrahams 2001.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_TYPE_DWA20010120_HPP
-# define BOOST_TYPE_DWA20010120_HPP
-
-namespace cutl_details_boost {
-
- // Just a simple "type envelope". Useful in various contexts, mostly to work
- // around some MSVC deficiencies.
- template <class T>
- struct type {};
-
-}
-
-#endif // BOOST_TYPE_DWA20010120_HPP
diff --git a/libcutl/cutl/details/boost/type_traits/add_const.hpp b/libcutl/cutl/details/boost/type_traits/add_const.hpp
deleted file mode 100644
index aef71e8..0000000
--- a/libcutl/cutl/details/boost/type_traits/add_const.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_ADD_CONST_HPP_INCLUDED
-#define BOOST_TT_ADD_CONST_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/type_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-// * convert a type T to const type - add_const<T>
-// this is not required since the result is always
-// the same as "T const", but it does suppress warnings
-// from some compilers:
-
-#if defined(BOOST_MSVC)
-// This bogus warning will appear when add_const is applied to a
-// const volatile reference because we can't detect const volatile
-// references with MSVC6.
-# pragma warning(push)
-# pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
-#endif
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_const,T,T const)
-
-#if defined(BOOST_MSVC)
-# pragma warning(pop)
-#endif
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_const,T&,T&)
-#endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_TT_ADD_CONST_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/add_lvalue_reference.hpp b/libcutl/cutl/details/boost/type_traits/add_lvalue_reference.hpp
deleted file mode 100644
index a258255..0000000
--- a/libcutl/cutl/details/boost/type_traits/add_lvalue_reference.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 John Maddock
-
-// Distributed under the Boost Software License, Version 1.0.
-// See http://www.boost.org/LICENSE_1_0.txt
-
-#ifndef BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP
-#define BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP
-
-#include <cutl/details/boost/type_traits/add_reference.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/type_trait_def.hpp>
-
-namespace cutl_details_boost{
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_lvalue_reference,T,typename cutl_details_boost::add_reference<T>::type)
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_lvalue_reference,T&&,T&)
-#endif
-
-}
-
-#include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP
diff --git a/libcutl/cutl/details/boost/type_traits/add_pointer.hpp b/libcutl/cutl/details/boost/type_traits/add_pointer.hpp
deleted file mode 100644
index f428c3f..0000000
--- a/libcutl/cutl/details/boost/type_traits/add_pointer.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_ADD_POINTER_HPP_INCLUDED
-#define BOOST_TT_ADD_POINTER_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/remove_reference.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/type_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-namespace detail {
-
-#if defined(__BORLANDC__) && (__BORLANDC__ < 0x5A0)
-//
-// For some reason this implementation stops Borlands compiler
-// from dropping cv-qualifiers, it still fails with references
-// to arrays for some reason though (shrug...) (JM 20021104)
-//
-template <typename T>
-struct add_pointer_impl
-{
- typedef T* type;
-};
-template <typename T>
-struct add_pointer_impl<T&>
-{
- typedef T* type;
-};
-template <typename T>
-struct add_pointer_impl<T&const>
-{
- typedef T* type;
-};
-template <typename T>
-struct add_pointer_impl<T&volatile>
-{
- typedef T* type;
-};
-template <typename T>
-struct add_pointer_impl<T&const volatile>
-{
- typedef T* type;
-};
-
-#else
-
-template <typename T>
-struct add_pointer_impl
-{
- typedef typename remove_reference<T>::type no_ref_type;
- typedef no_ref_type* type;
-};
-
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_pointer,T,typename cutl_details_boost::detail::add_pointer_impl<T>::type)
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_TT_ADD_POINTER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/add_reference.hpp b/libcutl/cutl/details/boost/type_traits/add_reference.hpp
deleted file mode 100644
index 2467326..0000000
--- a/libcutl/cutl/details/boost/type_traits/add_reference.hpp
+++ /dev/null
@@ -1,107 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
-#define BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/is_reference.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-#include <cutl/details/boost/config.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/type_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-namespace detail {
-
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && defined(BOOST_MSVC6_MEMBER_TEMPLATES)
-
-template <bool x>
-struct reference_adder
-{
- template <typename T> struct result_
- {
- typedef T& type;
- };
-};
-
-template <>
-struct reference_adder<true>
-{
- template <typename T> struct result_
- {
- typedef T type;
- };
-};
-
-template <typename T>
-struct add_reference_impl
-{
- typedef typename reference_adder<
- ::cutl_details_boost::is_reference<T>::value
- >::template result_<T> result;
-
- typedef typename result::type type;
-};
-
-#else
-//
-// We can't filter out rvalue_references at the same level as
-// references or we get ambiguities from msvc:
-//
-
-template <typename T>
-struct add_reference_rvalue_layer
-{
- typedef T& type;
-};
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-template <typename T>
-struct add_reference_rvalue_layer<T&&>
-{
- typedef T&& type;
-};
-#endif
-
-template <typename T>
-struct add_reference_impl
-{
- typedef typename add_reference_rvalue_layer<T>::type type;
-};
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-BOOST_TT_AUX_TYPE_TRAIT_IMPL_PARTIAL_SPEC1_1(typename T,add_reference,T&,T&)
-#endif
-
-#endif
-
-// these full specialisations are always required:
-BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(add_reference,void,void)
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(add_reference,void const,void const)
-BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(add_reference,void volatile,void volatile)
-BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(add_reference,void const volatile,void const volatile)
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_reference,T,typename cutl_details_boost::detail::add_reference_impl<T>::type)
-
-// agurt, 07/mar/03: workaround Borland's ill-formed sensitivity to an additional
-// level of indirection, here
-#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_reference,T&,T&)
-#endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/add_rvalue_reference.hpp b/libcutl/cutl/details/boost/type_traits/add_rvalue_reference.hpp
deleted file mode 100644
index 2adb737..0000000
--- a/libcutl/cutl/details/boost/type_traits/add_rvalue_reference.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-// add_rvalue_reference.hpp ---------------------------------------------------------//
-
-// Copyright 2010 Vicente J. Botet Escriba
-
-// Distributed under the Boost Software License, Version 1.0.
-// See http://www.boost.org/LICENSE_1_0.txt
-
-#ifndef BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
-#define BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
-
-#include <cutl/details/boost/config.hpp>
-
-//----------------------------------------------------------------------------//
-
-#include <cutl/details/boost/type_traits/is_void.hpp>
-#include <cutl/details/boost/type_traits/is_reference.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/type_trait_def.hpp>
-
-//----------------------------------------------------------------------------//
-// //
-// C++03 implementation of //
-// 20.9.7.2 Reference modifications [meta.trans.ref] //
-// Written by Vicente J. Botet Escriba //
-// //
-// If T names an object or function type then the member typedef type
-// shall name T&&; otherwise, type shall name T. [ Note: This rule reflects
-// the semantics of reference collapsing. For example, when a type T names
-// a type T1&, the type add_rvalue_reference<T>::type is not an rvalue
-// reference. -end note ]
-//----------------------------------------------------------------------------//
-
-namespace cutl_details_boost {
-
-namespace type_traits_detail {
-
- template <typename T, bool b>
- struct add_rvalue_reference_helper
- { typedef T type; };
-
-#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- template <typename T>
- struct add_rvalue_reference_helper<T, true>
- {
- typedef T&& type;
- };
-#endif
-
- template <typename T>
- struct add_rvalue_reference_imp
- {
- typedef typename cutl_details_boost::type_traits_detail::add_rvalue_reference_helper
- <T, (is_void<T>::value == false && is_reference<T>::value == false) >::type type;
- };
-
-}
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_rvalue_reference,T,typename cutl_details_boost::type_traits_detail::add_rvalue_reference_imp<T>::type)
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
-
diff --git a/libcutl/cutl/details/boost/type_traits/alignment_of.hpp b/libcutl/cutl/details/boost/type_traits/alignment_of.hpp
deleted file mode 100644
index 70fd3be..0000000
--- a/libcutl/cutl/details/boost/type_traits/alignment_of.hpp
+++ /dev/null
@@ -1,128 +0,0 @@
-
-// (C) Copyright John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_ALIGNMENT_OF_HPP_INCLUDED
-#define BOOST_TT_ALIGNMENT_OF_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-#include <cstddef>
-
-#include <cutl/details/boost/type_traits/intrinsics.hpp>
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/size_t_trait_def.hpp>
-
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4121 4512) // alignment is sensitive to packing
-#endif
-#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
-#pragma option push -Vx- -Ve-
-#endif
-
-namespace cutl_details_boost {
-
-template <typename T> struct alignment_of;
-
-// get the alignment of some arbitrary type:
-namespace detail {
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4324) // structure was padded due to __declspec(align())
-#endif
-template <typename T>
-struct alignment_of_hack
-{
- char c;
- T t;
- alignment_of_hack();
-};
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-template <unsigned A, unsigned S>
-struct alignment_logic
-{
- BOOST_STATIC_CONSTANT(std::size_t, value = A < S ? A : S);
-};
-
-
-template< typename T >
-struct alignment_of_impl
-{
-#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1400)
- //
- // With MSVC both the native __alignof operator
- // and our own logic gets things wrong from time to time :-(
- // Using a combination of the two seems to make the most of a bad job:
- //
- BOOST_STATIC_CONSTANT(std::size_t, value =
- (::cutl_details_boost::detail::alignment_logic<
- sizeof(::cutl_details_boost::detail::alignment_of_hack<T>) - sizeof(T),
- __alignof(T)
- >::value));
-#elif !defined(BOOST_ALIGNMENT_OF)
- BOOST_STATIC_CONSTANT(std::size_t, value =
- (::cutl_details_boost::detail::alignment_logic<
- sizeof(::cutl_details_boost::detail::alignment_of_hack<T>) - sizeof(T),
- sizeof(T)
- >::value));
-#else
- //
- // We put this here, rather than in the definition of
- // alignment_of below, because MSVC's __alignof doesn't
- // always work in that context for some unexplained reason.
- // (See type_with_alignment tests for test cases).
- //
- BOOST_STATIC_CONSTANT(std::size_t, value = BOOST_ALIGNMENT_OF(T));
-#endif
-};
-
-} // namespace detail
-
-BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(alignment_of,T,::cutl_details_boost::detail::alignment_of_impl<T>::value)
-
-// references have to be treated specially, assume
-// that a reference is just a special pointer:
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <typename T>
-struct alignment_of<T&>
- : public alignment_of<T*>
-{
-};
-#endif
-#ifdef __BORLANDC__
-// long double gives an incorrect value of 10 (!)
-// unless we do this...
-struct long_double_wrapper{ long double ld; };
-template<> struct alignment_of<long double>
- : public alignment_of<long_double_wrapper>{};
-#endif
-
-// void has to be treated specially:
-BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void,0)
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void const,0)
-BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void volatile,0)
-BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void const volatile,0)
-#endif
-
-} // namespace cutl_details_boost
-
-#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
-#pragma option pop
-#endif
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-#include <cutl/details/boost/type_traits/detail/size_t_trait_undef.hpp>
-
-#endif // BOOST_TT_ALIGNMENT_OF_HPP_INCLUDED
-
diff --git a/libcutl/cutl/details/boost/type_traits/broken_compiler_spec.hpp b/libcutl/cutl/details/boost/type_traits/broken_compiler_spec.hpp
deleted file mode 100644
index a656b56..0000000
--- a/libcutl/cutl/details/boost/type_traits/broken_compiler_spec.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-
-// Copyright 2001-2003 Aleksey Gurtovoy.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED
-#define BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED
-
-#include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-#include <cutl/details/boost/config.hpp>
-
-// these are needed regardless of BOOST_TT_NO_BROKEN_COMPILER_SPEC
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-namespace cutl_details_boost { namespace detail {
-template< typename T > struct remove_const_impl { typedef T type; };
-template< typename T > struct remove_volatile_impl { typedef T type; };
-template< typename T > struct remove_pointer_impl { typedef T type; };
-template< typename T > struct remove_reference_impl { typedef T type; };
-typedef int invoke_BOOST_TT_BROKEN_COMPILER_SPEC_outside_all_namespaces;
-}}
-#endif
-
-// agurt, 27/jun/03: disable the workaround if user defined
-// BOOST_TT_NO_BROKEN_COMPILER_SPEC
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- || defined(BOOST_TT_NO_BROKEN_COMPILER_SPEC)
-
-# define BOOST_TT_BROKEN_COMPILER_SPEC(T) /**/
-
-#else
-
-// same as BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1 macro, except that it
-// never gets #undef-ined
-# define BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(trait,spec,result) \
-template<> struct trait##_impl<spec> \
-{ \
- typedef result type; \
-}; \
-/**/
-
-# define BOOST_TT_AUX_REMOVE_CONST_VOLATILE_RANK1_SPEC(T) \
- BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_const,T const,T) \
- BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_const,T const volatile,T volatile) \
- BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_volatile,T volatile,T) \
- BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_volatile,T const volatile,T const) \
- /**/
-
-# define BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T) \
- BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*,T) \
- BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*const,T) \
- BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*volatile,T) \
- BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*const volatile,T) \
- BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_reference,T&,T) \
- /**/
-
-# define BOOST_TT_AUX_REMOVE_PTR_REF_RANK_2_SPEC(T) \
- BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T) \
- BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T const) \
- BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T volatile) \
- BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T const volatile) \
- /**/
-
-# define BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T) \
- BOOST_TT_AUX_REMOVE_PTR_REF_RANK_2_SPEC(T) \
- BOOST_TT_AUX_REMOVE_CONST_VOLATILE_RANK1_SPEC(T) \
- /**/
-
-# define BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T) \
- BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T*) \
- BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T const*) \
- BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T volatile*) \
- BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T const volatile*) \
- /**/
-
-# define BOOST_TT_BROKEN_COMPILER_SPEC(T) \
- namespace cutl_details_boost { namespace detail { \
- typedef invoke_BOOST_TT_BROKEN_COMPILER_SPEC_outside_all_namespaces \
- please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_outside_all_namespaces; \
- BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T) \
- BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T) \
- BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T*) \
- BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T const*) \
- BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T volatile*) \
- BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T const volatile*) \
- }} \
- /**/
-
-# include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-BOOST_TT_BROKEN_COMPILER_SPEC(bool)
-BOOST_TT_BROKEN_COMPILER_SPEC(char)
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-BOOST_TT_BROKEN_COMPILER_SPEC(wchar_t)
-#endif
-BOOST_TT_BROKEN_COMPILER_SPEC(signed char)
-BOOST_TT_BROKEN_COMPILER_SPEC(unsigned char)
-BOOST_TT_BROKEN_COMPILER_SPEC(signed short)
-BOOST_TT_BROKEN_COMPILER_SPEC(unsigned short)
-BOOST_TT_BROKEN_COMPILER_SPEC(signed int)
-BOOST_TT_BROKEN_COMPILER_SPEC(unsigned int)
-BOOST_TT_BROKEN_COMPILER_SPEC(signed long)
-BOOST_TT_BROKEN_COMPILER_SPEC(unsigned long)
-BOOST_TT_BROKEN_COMPILER_SPEC(float)
-BOOST_TT_BROKEN_COMPILER_SPEC(double)
-//BOOST_TT_BROKEN_COMPILER_SPEC(long double)
-
-// for backward compatibility
-#define BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(T) \
- BOOST_TT_BROKEN_COMPILER_SPEC(T) \
-/**/
-
-#endif // BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/config.hpp b/libcutl/cutl/details/boost/type_traits/config.hpp
deleted file mode 100644
index 7a687b2..0000000
--- a/libcutl/cutl/details/boost/type_traits/config.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_CONFIG_HPP_INCLUDED
-#define BOOST_TT_CONFIG_HPP_INCLUDED
-
-#ifndef BOOST_CONFIG_HPP
-#include <cutl/details/boost/config.hpp>
-#endif
-
-#include <cutl/details/boost/detail/workaround.hpp>
-
-//
-// whenever we have a conversion function with ellipses
-// it needs to be declared __cdecl to suppress compiler
-// warnings from MS and Borland compilers (this *must*
-// appear before we include is_same.hpp below):
-#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32))
-# define BOOST_TT_DECL __cdecl
-#else
-# define BOOST_TT_DECL /**/
-#endif
-
-# if (BOOST_WORKAROUND(__MWERKS__, < 0x3000) \
- || BOOST_WORKAROUND(BOOST_MSVC, <= 1301) \
- || !defined(__EDG_VERSION__) && BOOST_WORKAROUND(__GNUC__, < 3) \
- || BOOST_WORKAROUND(__IBMCPP__, < 600 ) \
- || BOOST_WORKAROUND(__BORLANDC__, < 0x5A0) \
- || defined(__ghs) \
- || BOOST_WORKAROUND(__HP_aCC, < 60700) \
- || BOOST_WORKAROUND(MPW_CPLUS, BOOST_TESTED_AT(0x890)) \
- || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x580))) \
- && defined(BOOST_NO_IS_ABSTRACT)
-
-# define BOOST_TT_NO_CONFORMING_IS_CLASS_IMPLEMENTATION 1
-
-#endif
-
-#ifndef BOOST_TT_NO_CONFORMING_IS_CLASS_IMPLEMENTATION
-# define BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION 1
-#endif
-
-//
-// Define BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-// when we can't test for function types with elipsis:
-//
-#if BOOST_WORKAROUND(__GNUC__, < 3)
-# define BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-#endif
-
-//
-// define BOOST_TT_TEST_MS_FUNC_SIGS
-// when we want to test __stdcall etc function types with is_function etc
-// (Note, does not work with Borland, even though it does support __stdcall etc):
-//
-#if defined(_MSC_EXTENSIONS) && !defined(__BORLANDC__)
-# define BOOST_TT_TEST_MS_FUNC_SIGS
-#endif
-
-//
-// define BOOST_TT_NO_CV_FUNC_TEST
-// if tests for cv-qualified member functions don't
-// work in is_member_function_pointer
-//
-#if BOOST_WORKAROUND(__MWERKS__, < 0x3000) || BOOST_WORKAROUND(__IBMCPP__, <= 600)
-# define BOOST_TT_NO_CV_FUNC_TEST
-#endif
-
-#endif // BOOST_TT_CONFIG_HPP_INCLUDED
-
-
diff --git a/libcutl/cutl/details/boost/type_traits/detail/bool_trait_def.hpp b/libcutl/cutl/details/boost/type_traits/detail/bool_trait_def.hpp
deleted file mode 100644
index cd2971a..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/bool_trait_def.hpp
+++ /dev/null
@@ -1,196 +0,0 @@
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// $Source$
-// $Date: 2011-10-09 15:28:33 -0700 (Sun, 09 Oct 2011) $
-// $Revision: 74865 $
-
-#include <cutl/details/boost/type_traits/detail/template_arity_spec.hpp>
-#include <cutl/details/boost/type_traits/integral_constant.hpp>
-#include <cutl/details/boost/mpl/bool.hpp>
-#include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-#include <cutl/details/boost/config.hpp>
-
-//
-// Unfortunately some libraries have started using this header without
-// cleaning up afterwards: so we'd better undef the macros just in case
-// they've been defined already....
-//
-#ifdef BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL
-#undef BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL
-#undef BOOST_TT_AUX_BOOL_C_BASE
-#undef BOOST_TT_AUX_BOOL_TRAIT_DEF1
-#undef BOOST_TT_AUX_BOOL_TRAIT_DEF2
-#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC1
-#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC2
-#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1
-#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2
-#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1
-#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2
-#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1
-#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2
-#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1
-#undef BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1
-#endif
-
-#if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x570)
-# define BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
- typedef ::cutl_details_boost::integral_constant<bool,C> type; \
- enum { value = type::value }; \
- /**/
-# define BOOST_TT_AUX_BOOL_C_BASE(C)
-
-#elif defined(BOOST_MSVC) && BOOST_MSVC < 1300
-
-# define BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
- typedef ::cutl_details_boost::integral_constant<bool,C> base_; \
- using base_::value; \
- /**/
-
-#endif
-
-#ifndef BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL
-# define BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) /**/
-#endif
-
-#ifndef BOOST_TT_AUX_BOOL_C_BASE
-# define BOOST_TT_AUX_BOOL_C_BASE(C) : public ::cutl_details_boost::integral_constant<bool,C>
-#endif
-
-
-#define BOOST_TT_AUX_BOOL_TRAIT_DEF1(trait,T,C) \
-template< typename T > struct trait \
- BOOST_TT_AUX_BOOL_C_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
-}; \
-\
-BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
-/**/
-
-
-#define BOOST_TT_AUX_BOOL_TRAIT_DEF2(trait,T1,T2,C) \
-template< typename T1, typename T2 > struct trait \
- BOOST_TT_AUX_BOOL_C_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT(2,trait,(T1,T2)) \
-}; \
-\
-BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(2,trait) \
-/**/
-
-#define BOOST_TT_AUX_BOOL_TRAIT_DEF3(trait,T1,T2,T3,C) \
-template< typename T1, typename T2, typename T3 > struct trait \
- BOOST_TT_AUX_BOOL_C_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT(3,trait,(T1,T2,T3)) \
-}; \
-\
-BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(3,trait) \
-/**/
-
-#define BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,C) \
-template<> struct trait< sp > \
- BOOST_TT_AUX_BOOL_C_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(sp)) \
-}; \
-/**/
-
-#define BOOST_TT_AUX_BOOL_TRAIT_SPEC2(trait,sp1,sp2,C) \
-template<> struct trait< sp1,sp2 > \
- BOOST_TT_AUX_BOOL_C_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,trait,(sp1,sp2)) \
-}; \
-/**/
-
-#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(trait,sp,C) \
-template<> struct trait##_impl< sp > \
-{ \
-public:\
- BOOST_STATIC_CONSTANT(bool, value = (C)); \
-}; \
-/**/
-
-#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,sp1,sp2,C) \
-template<> struct trait##_impl< sp1,sp2 > \
-{ \
-public:\
- BOOST_STATIC_CONSTANT(bool, value = (C)); \
-}; \
-/**/
-
-#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(param,trait,sp,C) \
-template< param > struct trait< sp > \
- BOOST_TT_AUX_BOOL_C_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
-}; \
-/**/
-
-#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(param1,param2,trait,sp,C) \
-template< param1, param2 > struct trait< sp > \
- BOOST_TT_AUX_BOOL_C_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
-}; \
-/**/
-
-#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(param,trait,sp1,sp2,C) \
-template< param > struct trait< sp1,sp2 > \
- BOOST_TT_AUX_BOOL_C_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,trait,(sp1,sp2)) \
-}; \
-/**/
-
-#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(param1,param2,trait,sp1,sp2,C) \
-template< param1, param2 > struct trait< sp1,sp2 > \
- BOOST_TT_AUX_BOOL_C_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
-}; \
-/**/
-
-#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(param,trait,sp1,sp2,C) \
-template< param > struct trait##_impl< sp1,sp2 > \
-{ \
-public:\
- BOOST_STATIC_CONSTANT(bool, value = (C)); \
-}; \
-/**/
-
-#ifndef BOOST_NO_CV_SPECIALIZATIONS
-# define BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(trait,sp,value) \
- BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,value) \
- BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp const,value) \
- BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp volatile,value) \
- BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp const volatile,value) \
- /**/
-#else
-# define BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(trait,sp,value) \
- BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,value) \
- /**/
-#endif
diff --git a/libcutl/cutl/details/boost/type_traits/detail/bool_trait_undef.hpp b/libcutl/cutl/details/boost/type_traits/detail/bool_trait_undef.hpp
deleted file mode 100644
index 008febe..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/bool_trait_undef.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// $Source$
-// $Date: 2011-10-09 15:28:33 -0700 (Sun, 09 Oct 2011) $
-// $Revision: 74865 $
-
-#undef BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL
-#undef BOOST_TT_AUX_BOOL_C_BASE
-#undef BOOST_TT_AUX_BOOL_TRAIT_DEF1
-#undef BOOST_TT_AUX_BOOL_TRAIT_DEF2
-#undef BOOST_TT_AUX_BOOL_TRAIT_DEF3
-#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC1
-#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC2
-#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1
-#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2
-#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1
-#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2
-#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1
-#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2
-#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1
-#undef BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1
diff --git a/libcutl/cutl/details/boost/type_traits/detail/cv_traits_impl.hpp b/libcutl/cutl/details/boost/type_traits/detail/cv_traits_impl.hpp
deleted file mode 100644
index d0ea7e3..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/cv_traits_impl.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED
-#define BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-// implementation helper:
-
-
-#if !(BOOST_WORKAROUND(__GNUC__,== 3) && BOOST_WORKAROUND(__GNUC_MINOR__, <= 2))
-namespace cutl_details_boost {
-namespace detail {
-#else
-#include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-namespace cutl_details_boost {
-namespace type_traits {
-namespace gcc8503 {
-#endif
-
-template <typename T> struct cv_traits_imp {};
-
-template <typename T>
-struct cv_traits_imp<T*>
-{
- BOOST_STATIC_CONSTANT(bool, is_const = false);
- BOOST_STATIC_CONSTANT(bool, is_volatile = false);
- typedef T unqualified_type;
-};
-
-template <typename T>
-struct cv_traits_imp<const T*>
-{
- BOOST_STATIC_CONSTANT(bool, is_const = true);
- BOOST_STATIC_CONSTANT(bool, is_volatile = false);
- typedef T unqualified_type;
-};
-
-template <typename T>
-struct cv_traits_imp<volatile T*>
-{
- BOOST_STATIC_CONSTANT(bool, is_const = false);
- BOOST_STATIC_CONSTANT(bool, is_volatile = true);
- typedef T unqualified_type;
-};
-
-template <typename T>
-struct cv_traits_imp<const volatile T*>
-{
- BOOST_STATIC_CONSTANT(bool, is_const = true);
- BOOST_STATIC_CONSTANT(bool, is_volatile = true);
- typedef T unqualified_type;
-};
-
-#if BOOST_WORKAROUND(__GNUC__,== 3) && BOOST_WORKAROUND(__GNUC_MINOR__, <= 2)
-// We have to exclude function pointers
-// (see http://gcc.gnu.org/bugzilla/show_bug.cgi?8503)
-yes_type mini_funcptr_tester(...);
-no_type mini_funcptr_tester(const volatile void*);
-
-} // namespace gcc8503
-} // namespace type_traits
-
-namespace detail {
-
-// Use the implementation above for non function pointers
-template <typename T, unsigned Select
- = (unsigned)sizeof(::cutl_details_boost::type_traits::gcc8503::mini_funcptr_tester((T)0)) >
-struct cv_traits_imp : public ::cutl_details_boost::type_traits::gcc8503::cv_traits_imp<T> { };
-
-// Functions are never cv-qualified
-template <typename T> struct cv_traits_imp<T*,1>
-{
- BOOST_STATIC_CONSTANT(bool, is_const = false);
- BOOST_STATIC_CONSTANT(bool, is_volatile = false);
- typedef T unqualified_type;
-};
-
-#endif
-
-} // namespace detail
-} // namespace cutl_details_boost
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-#endif // BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/detail/false_result.hpp b/libcutl/cutl/details/boost/type_traits/detail/false_result.hpp
deleted file mode 100644
index 62c7340..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/false_result.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright David Abrahams 2002.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_DETAIL_FALSE_RESULT_HPP_INCLUDED
-#define BOOST_TT_DETAIL_FALSE_RESULT_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-// Utility class which always "returns" false
-struct false_result
-{
- template <typename T> struct result_
- {
- BOOST_STATIC_CONSTANT(bool, value = false);
- };
-};
-
-}} // namespace cutl_details_boost::type_traits
-
-#endif // BOOST_TT_DETAIL_FALSE_RESULT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/detail/ice_and.hpp b/libcutl/cutl/details/boost/type_traits/detail/ice_and.hpp
deleted file mode 100644
index c1cb873..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/ice_and.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// (C) Copyright John Maddock and Steve Cleary 2000.
-//
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_DETAIL_ICE_AND_HPP_INCLUDED
-#define BOOST_TT_DETAIL_ICE_AND_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-template <bool b1, bool b2, bool b3 = true, bool b4 = true, bool b5 = true, bool b6 = true, bool b7 = true>
-struct ice_and;
-
-template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
-struct ice_and
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-template <>
-struct ice_and<true, true, true, true, true, true, true>
-{
- BOOST_STATIC_CONSTANT(bool, value = true);
-};
-
-} // namespace type_traits
-} // namespace cutl_details_boost
-
-#endif // BOOST_TT_DETAIL_ICE_AND_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/detail/ice_eq.hpp b/libcutl/cutl/details/boost/type_traits/detail/ice_eq.hpp
deleted file mode 100644
index c4f7226..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/ice_eq.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// (C) Copyright John Maddock and Steve Cleary 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_DETAIL_ICE_EQ_HPP_INCLUDED
-#define BOOST_TT_DETAIL_ICE_EQ_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-template <int b1, int b2>
-struct ice_eq
-{
- BOOST_STATIC_CONSTANT(bool, value = (b1 == b2));
-};
-
-template <int b1, int b2>
-struct ice_ne
-{
- BOOST_STATIC_CONSTANT(bool, value = (b1 != b2));
-};
-
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-template <int b1, int b2> bool const ice_eq<b1,b2>::value;
-template <int b1, int b2> bool const ice_ne<b1,b2>::value;
-#endif
-
-} // namespace type_traits
-} // namespace cutl_details_boost
-
-#endif // BOOST_TT_DETAIL_ICE_EQ_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/detail/ice_not.hpp b/libcutl/cutl/details/boost/type_traits/detail/ice_not.hpp
deleted file mode 100644
index 3606bfc..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/ice_not.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// (C) Copyright John Maddock and Steve Cleary 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_DETAIL_ICE_NOT_HPP_INCLUDED
-#define BOOST_TT_DETAIL_ICE_NOT_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-template <bool b>
-struct ice_not
-{
- BOOST_STATIC_CONSTANT(bool, value = true);
-};
-
-template <>
-struct ice_not<true>
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-} // namespace type_traits
-} // namespace cutl_details_boost
-
-#endif // BOOST_TT_DETAIL_ICE_NOT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/detail/ice_or.hpp b/libcutl/cutl/details/boost/type_traits/detail/ice_or.hpp
deleted file mode 100644
index 0f33638..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/ice_or.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// (C) Copyright John Maddock and Steve Cleary 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_DETAIL_ICE_OR_HPP_INCLUDED
-#define BOOST_TT_DETAIL_ICE_OR_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false>
-struct ice_or;
-
-template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
-struct ice_or
-{
- BOOST_STATIC_CONSTANT(bool, value = true);
-};
-
-template <>
-struct ice_or<false, false, false, false, false, false, false>
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-} // namespace type_traits
-} // namespace cutl_details_boost
-
-#endif // BOOST_TT_DETAIL_ICE_OR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/detail/is_function_ptr_helper.hpp b/libcutl/cutl/details/boost/type_traits/detail/is_function_ptr_helper.hpp
deleted file mode 100644
index f153c0e..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/is_function_ptr_helper.hpp
+++ /dev/null
@@ -1,220 +0,0 @@
-
-// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
-// Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
-//
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
-#define BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/config.hpp>
-
-#if defined(BOOST_TT_PREPROCESSING_MODE)
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/enum_params.hpp>
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-#endif
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-template <class R>
-struct is_function_ptr_helper
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-#if !defined(BOOST_TT_PREPROCESSING_MODE)
-// preprocessor-generated part, don't edit by hand!
-
-template <class R >
-struct is_function_ptr_helper<R (*)()> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R >
-struct is_function_ptr_helper<R (*)( ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0>
-struct is_function_ptr_helper<R (*)( T0)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0>
-struct is_function_ptr_helper<R (*)( T0 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1>
-struct is_function_ptr_helper<R (*)( T0 , T1)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1>
-struct is_function_ptr_helper<R (*)( T0 , T1 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
-struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#else
-
-#undef BOOST_STATIC_CONSTANT
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3, (0, 25, "cutl/details/boost/type_traits/detail/is_function_ptr_helper.hpp"))
-#include BOOST_PP_ITERATE()
-
-#endif // BOOST_TT_PREPROCESSING_MODE
-
-} // namespace type_traits
-} // namespace cutl_details_boost
-
-#endif // BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
-
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_function_ptr_helper<R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T))> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_function_ptr_helper<R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#endif
-#undef BOOST_PP_COUNTER
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/type_traits/detail/is_function_ptr_tester.hpp b/libcutl/cutl/details/boost/type_traits/detail/is_function_ptr_tester.hpp
deleted file mode 100644
index 5e3e336..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/is_function_ptr_tester.hpp
+++ /dev/null
@@ -1,654 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
-#define BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-#include <cutl/details/boost/type_traits/config.hpp>
-
-#if defined(BOOST_TT_PREPROCESSING_MODE)
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/enum_params.hpp>
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-#endif
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-// Note it is acceptable to use ellipsis here, since the argument will
-// always be a pointer type of some sort (JM 2005/06/04):
-no_type BOOST_TT_DECL is_function_ptr_tester(...);
-
-#if !defined(BOOST_TT_PREPROCESSING_MODE)
-// pre-processed code, don't edit, try GNU cpp with
-// cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename
-
-template <class R >
-yes_type is_function_ptr_tester(R (*)());
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R >
-yes_type is_function_ptr_tester(R (*)( ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R >
-yes_type is_function_ptr_tester(R (__stdcall*)());
-template <class R >
-yes_type is_function_ptr_tester(R (__stdcall*)( ...));
-#ifndef _MANAGED
-template <class R >
-yes_type is_function_ptr_tester(R (__fastcall*)());
-template <class R >
-yes_type is_function_ptr_tester(R (__fastcall*)( ...));
-#endif
-template <class R >
-yes_type is_function_ptr_tester(R (__cdecl*)());
-template <class R >
-yes_type is_function_ptr_tester(R (__cdecl*)( ...));
-#endif
-template <class R , class T0 >
-yes_type is_function_ptr_tester(R (*)( T0));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 >
-yes_type is_function_ptr_tester(R (*)( T0 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0));
-template <class R , class T0 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 ...));
-#ifndef _MANAGED
-template <class R , class T0 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0));
-template <class R , class T0 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 ...));
-#endif
-template <class R , class T0 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0));
-template <class R , class T0 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 ...));
-#endif
-template <class R , class T0 , class T1 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1));
-template <class R , class T0 , class T1 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1));
-template <class R , class T0 , class T1 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 ...));
-#endif
-template <class R , class T0 , class T1 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1));
-template <class R , class T0 , class T1 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2));
-template <class R , class T0 , class T1 , class T2 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2));
-template <class R , class T0 , class T1 , class T2 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2));
-template <class R , class T0 , class T1 , class T2 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3));
-template <class R , class T0 , class T1 , class T2 , class T3 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3));
-template <class R , class T0 , class T1 , class T2 , class T3 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3));
-template <class R , class T0 , class T1 , class T2 , class T3 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-#ifndef _MANAGED
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-#endif
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-#endif
-#else
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3, (0, 25, "cutl/details/boost/type_traits/detail/is_function_ptr_tester.hpp"))
-#include BOOST_PP_ITERATE()
-
-#endif // BOOST_TT_PREPROCESSING_MODE
-
-} // namespace type_traits
-} // namespace cutl_details_boost
-
-#endif // BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
-#undef __stdcall
-#undef __fastcall
-#undef __cdecl
-
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
-@#endif
-@#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (__stdcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (__stdcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
-@#ifndef _MANAGED
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (__fastcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (__fastcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
-@#endif
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (__cdecl*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (__cdecl*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
-@#endif
-
-#undef BOOST_PP_COUNTER
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp b/libcutl/cutl/details/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
deleted file mode 100644
index c8e8bf0..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
+++ /dev/null
@@ -1,817 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
-#define BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-
-#if defined(BOOST_TT_PREPROCESSING_MODE)
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/enum_params.hpp>
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-#endif
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-template <typename T>
-struct is_mem_fun_pointer_impl
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-#if !defined(BOOST_TT_PREPROCESSING_MODE)
-// pre-processed code, don't edit, try GNU cpp with
-// cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename
-
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R (T::*)() > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R (T::*)( ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R (T::*)() const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R (T::*)() volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R (T::*)() const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R (T::*)( ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R (T::*)( ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R (T::*)( ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0>
-struct is_mem_fun_pointer_impl<R (T::*)( T0) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0>
-struct is_mem_fun_pointer_impl<R (T::*)( T0) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0>
-struct is_mem_fun_pointer_impl<R (T::*)( T0) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0>
-struct is_mem_fun_pointer_impl<R (T::*)( T0) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
-struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-
-#else
-
-#undef BOOST_STATIC_CONSTANT
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3, (0, 25, "cutl/details/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp"))
-#include BOOST_PP_ITERATE()
-
-#endif // BOOST_TT_PREPROCESSING_MODE
-
-} // namespace type_traits
-} // namespace cutl_details_boost
-
-#endif // BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#endif
-
-@#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#endif
-@#endif
-
-#undef BOOST_PP_COUNTER
-#endif // BOOST_PP_IS_ITERATING
-
diff --git a/libcutl/cutl/details/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp b/libcutl/cutl/details/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
deleted file mode 100644
index db21f85..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
+++ /dev/null
@@ -1,2759 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_TESTER_HPP_INCLUDED
-#define BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_TESTER_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-#include <cutl/details/boost/type_traits/config.hpp>
-
-#if defined(BOOST_TT_PREPROCESSING_MODE)
-# include <cutl/details/boost/preprocessor/iterate.hpp>
-# include <cutl/details/boost/preprocessor/enum_params.hpp>
-# include <cutl/details/boost/preprocessor/comma_if.hpp>
-#endif
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-no_type BOOST_TT_DECL is_mem_fun_pointer_tester(...);
-
-#if !defined(BOOST_TT_PREPROCESSING_MODE)
-// pre-processed code, don't edit, try GNU cpp with
-// cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)());
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() const);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...));
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) const);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)());
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() const);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() const volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...));
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) const);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)());
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() const);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() const volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...));
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) const);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) const volatile);
-#endif
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)());
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() const);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() const volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...));
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) const);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) volatile);
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) const volatile);
-#endif
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0));
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) const);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...));
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) const);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0));
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) const);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) const volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...));
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) const);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0));
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) const);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) const volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...));
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) const);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0));
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) const);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) const volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...));
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) const);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) volatile);
-
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1));
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) const);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...));
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) const);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1));
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) const);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) const volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...));
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) const);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1));
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) const);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) const volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...));
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) const);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1));
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) const);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) const volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...));
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) const);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) volatile);
-
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2));
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) const);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2));
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) const);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2));
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) const);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2));
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) const);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
-#endif
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
-
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
-
-#ifndef _MANAGED
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
-#endif
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
-
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
-#endif
-
-#else
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
- (3, (0, 25, "cutl/details/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp"))
-#include BOOST_PP_ITERATE()
-
-#endif // BOOST_TT_PREPROCESSING_MODE
-
-} // namespace type_traits
-} // namespace cutl_details_boost
-
-#endif // BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_TESTER_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
-#undef __stdcall
-#undef __fastcall
-#undef __cdecl
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
-
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile);
-@#endif
-@#ifdef BOOST_TT_TEST_MS_FUNC_SIGS // Other calling conventions used by MS compatible compilers:
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile);
-
-@#ifndef _MANAGED
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile);
-@#endif
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile);
-@#endif
-
-#undef BOOST_PP_COUNTER
-#endif // BOOST_PP_IS_ITERATING
diff --git a/libcutl/cutl/details/boost/type_traits/detail/size_t_trait_def.hpp b/libcutl/cutl/details/boost/type_traits/detail/size_t_trait_def.hpp
deleted file mode 100644
index c823263..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/size_t_trait_def.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// $Source$
-// $Date: 2011-04-25 05:26:48 -0700 (Mon, 25 Apr 2011) $
-// $Revision: 71481 $
-
-#include <cutl/details/boost/type_traits/detail/template_arity_spec.hpp>
-#include <cutl/details/boost/type_traits/integral_constant.hpp>
-#include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-#include <cutl/details/boost/mpl/size_t.hpp>
-
-#include <cstddef>
-
-#if !defined(BOOST_MSVC) || BOOST_MSVC >= 1300
-# define BOOST_TT_AUX_SIZE_T_BASE(C) public ::cutl_details_boost::integral_constant<std::size_t,C>
-# define BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) /**/
-#else
-# define BOOST_TT_AUX_SIZE_T_BASE(C) public ::cutl_details_boost::mpl::size_t<C>
-# define BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
- typedef ::cutl_details_boost::mpl::size_t<C> base_; \
- using base_::value; \
- /**/
-#endif
-
-
-#define BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(trait,T,C) \
-template< typename T > struct trait \
- : BOOST_TT_AUX_SIZE_T_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
-}; \
-\
-BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
-/**/
-
-#define BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(trait,spec,C) \
-template<> struct trait<spec> \
- : BOOST_TT_AUX_SIZE_T_BASE(C) \
-{ \
-public:\
- BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
- BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(spec)) \
-}; \
-/**/
-
-#define BOOST_TT_AUX_SIZE_T_TRAIT_PARTIAL_SPEC1_1(param,trait,spec,C) \
-template< param > struct trait<spec> \
- : BOOST_TT_AUX_SIZE_T_BASE(C) \
-{ \
-}; \
-/**/
diff --git a/libcutl/cutl/details/boost/type_traits/detail/size_t_trait_undef.hpp b/libcutl/cutl/details/boost/type_traits/detail/size_t_trait_undef.hpp
deleted file mode 100644
index 967fd91..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/size_t_trait_undef.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// $Source$
-// $Date: 2004-09-02 08:41:37 -0700 (Thu, 02 Sep 2004) $
-// $Revision: 24874 $
-
-#undef BOOST_TT_AUX_SIZE_T_TRAIT_DEF1
-#undef BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1
-#undef BOOST_TT_AUX_SIZE_T_TRAIT_PARTIAL_SPEC1_1
diff --git a/libcutl/cutl/details/boost/type_traits/detail/template_arity_spec.hpp b/libcutl/cutl/details/boost/type_traits/detail/template_arity_spec.hpp
deleted file mode 100644
index 81f8892..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/template_arity_spec.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#include <cutl/details/boost/mpl/int.hpp>
-#include <cutl/details/boost/mpl/aux_/template_arity_fwd.hpp>
-#include <cutl/details/boost/mpl/aux_/preprocessor/params.hpp>
-#include <cutl/details/boost/mpl/aux_/config/lambda.hpp>
-#include <cutl/details/boost/mpl/aux_/config/overload_resolution.hpp>
-
-#if defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
- && defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION)
-# define BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(i, name) \
-namespace mpl { namespace aux { \
-template< BOOST_MPL_PP_PARAMS(i, typename T) > \
-struct template_arity< \
- name< BOOST_MPL_PP_PARAMS(i, T) > \
- > \
- : int_<i> \
-{ \
-}; \
-}} \
-/**/
-#else
-# define BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/
-#endif
diff --git a/libcutl/cutl/details/boost/type_traits/detail/type_trait_def.hpp b/libcutl/cutl/details/boost/type_traits/detail/type_trait_def.hpp
deleted file mode 100644
index f3abdfc..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/type_trait_def.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// $Source$
-// $Date: 2011-04-25 05:26:48 -0700 (Mon, 25 Apr 2011) $
-// $Revision: 71481 $
-
-#include <cutl/details/boost/type_traits/detail/template_arity_spec.hpp>
-#include <cutl/details/boost/mpl/aux_/lambda_support.hpp>
-
-#define BOOST_TT_AUX_TYPE_TRAIT_DEF1(trait,T,result) \
-template< typename T > struct trait \
-{ \
-public:\
- typedef result type; \
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
-}; \
-\
-BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
-/**/
-
-#define BOOST_TT_AUX_TYPE_TRAIT_SPEC1(trait,spec,result) \
-template<> struct trait<spec> \
-{ \
-public:\
- typedef result type; \
- BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(spec)) \
-}; \
-/**/
-
-#define BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(trait,spec,result) \
-template<> struct trait##_impl<spec> \
-{ \
-public:\
- typedef result type; \
-}; \
-/**/
-
-#define BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(param,trait,spec,result) \
-template< param > struct trait<spec> \
-{ \
-public:\
- typedef result type; \
-}; \
-/**/
-
-#define BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(param1,param2,trait,spec,result) \
-template< param1, param2 > struct trait<spec> \
-{ \
-public:\
- typedef result; \
-}; \
-/**/
-
-#define BOOST_TT_AUX_TYPE_TRAIT_IMPL_PARTIAL_SPEC1_1(param,trait,spec,result) \
-template< param > struct trait##_impl<spec> \
-{ \
-public:\
- typedef result type; \
-}; \
-/**/
diff --git a/libcutl/cutl/details/boost/type_traits/detail/type_trait_undef.hpp b/libcutl/cutl/details/boost/type_traits/detail/type_trait_undef.hpp
deleted file mode 100644
index c4f14ff..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/type_trait_undef.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-
-// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// $Source$
-// $Date: 2004-09-02 08:41:37 -0700 (Thu, 02 Sep 2004) $
-// $Revision: 24874 $
-
-#undef BOOST_TT_AUX_TYPE_TRAIT_DEF1
-#undef BOOST_TT_AUX_TYPE_TRAIT_SPEC1
-#undef BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1
-#undef BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1
-#undef BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2
-#undef BOOST_TT_AUX_TYPE_TRAIT_IMPL_PARTIAL_SPEC1_1
diff --git a/libcutl/cutl/details/boost/type_traits/detail/wrap.hpp b/libcutl/cutl/details/boost/type_traits/detail/wrap.hpp
deleted file mode 100644
index 7528565..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/wrap.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// (C) Copyright David Abrahams 2002.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_DETAIL_WRAP_HPP_INCLUDED
-#define BOOST_TT_DETAIL_WRAP_HPP_INCLUDED
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-template <class T> struct wrap {};
-
-}} // namespace cutl_details_boost::type_traits
-
-#endif // BOOST_TT_DETAIL_WRAP_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/detail/yes_no_type.hpp b/libcutl/cutl/details/boost/type_traits/detail/yes_no_type.hpp
deleted file mode 100644
index a5221eb..0000000
--- a/libcutl/cutl/details/boost/type_traits/detail/yes_no_type.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-
-// (C) Copyright John Maddock and Steve Cleary 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-//
-// macros and helpers for working with integral-constant-expressions.
-
-#ifndef BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
-#define BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
-
-namespace cutl_details_boost {
-namespace type_traits {
-
-typedef char yes_type;
-struct no_type
-{
- char padding[8];
-};
-
-} // namespace type_traits
-} // namespace cutl_details_boost
-
-#endif // BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/ice.hpp b/libcutl/cutl/details/boost/type_traits/ice.hpp
deleted file mode 100644
index 2843ef6..0000000
--- a/libcutl/cutl/details/boost/type_traits/ice.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-
-// (C) Copyright John Maddock and Steve Cleary 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-//
-// macros and helpers for working with integral-constant-expressions.
-
-#ifndef BOOST_TT_ICE_HPP_INCLUDED
-#define BOOST_TT_ICE_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_or.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_and.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_not.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_eq.hpp>
-
-#endif // BOOST_TT_ICE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/integral_constant.hpp b/libcutl/cutl/details/boost/type_traits/integral_constant.hpp
deleted file mode 100644
index e284cb6..0000000
--- a/libcutl/cutl/details/boost/type_traits/integral_constant.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// (C) Copyright John Maddock 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
-#define BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/mpl/bool.hpp>
-#include <cutl/details/boost/mpl/integral_c.hpp>
-
-namespace cutl_details_boost{
-
-#if defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) || defined(__BORLANDC__)
-template <class T, int val>
-#else
-template <class T, T val>
-#endif
-struct integral_constant : public mpl::integral_c<T, val>
-{
- typedef integral_constant<T,val> type;
-};
-
-template<> struct integral_constant<bool,true> : public mpl::true_
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-# pragma warning(push)
-# pragma warning(disable:4097)
- typedef mpl::true_ base_;
- using base_::value;
-# pragma warning(pop)
-#endif
- typedef integral_constant<bool,true> type;
-};
-template<> struct integral_constant<bool,false> : public mpl::false_
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-# pragma warning(push)
-# pragma warning(disable:4097)
- typedef mpl::false_ base_;
- using base_::value;
-# pragma warning(pop)
-#endif
- typedef integral_constant<bool,false> type;
-};
-
-typedef integral_constant<bool,true> true_type;
-typedef integral_constant<bool,false> false_type;
-
-}
-
-#endif
diff --git a/libcutl/cutl/details/boost/type_traits/intrinsics.hpp b/libcutl/cutl/details/boost/type_traits/intrinsics.hpp
deleted file mode 100644
index 7912320..0000000
--- a/libcutl/cutl/details/boost/type_traits/intrinsics.hpp
+++ /dev/null
@@ -1,305 +0,0 @@
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_INTRINSICS_HPP_INCLUDED
-#define BOOST_TT_INTRINSICS_HPP_INCLUDED
-
-#ifndef BOOST_TT_CONFIG_HPP_INCLUDED
-#include <cutl/details/boost/type_traits/config.hpp>
-#endif
-
-//
-// Helper macros for builtin compiler support.
-// If your compiler has builtin support for any of the following
-// traits concepts, then redefine the appropriate macros to pick
-// up on the compiler support:
-//
-// (these should largely ignore cv-qualifiers)
-// BOOST_IS_UNION(T) should evaluate to true if T is a union type
-// BOOST_IS_POD(T) should evaluate to true if T is a POD type
-// BOOST_IS_EMPTY(T) should evaluate to true if T is an empty class type (and not a union)
-// BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) should evaluate to true if "T x;" has no effect
-// BOOST_HAS_TRIVIAL_COPY(T) should evaluate to true if T(t) <==> memcpy
-// BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) should evaluate to true if T(cutl_details_boost::move(t)) <==> memcpy
-// BOOST_HAS_TRIVIAL_ASSIGN(T) should evaluate to true if t = u <==> memcpy
-// BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) should evaluate to true if t = cutl_details_boost::move(u) <==> memcpy
-// BOOST_HAS_TRIVIAL_DESTRUCTOR(T) should evaluate to true if ~T() has no effect
-// BOOST_HAS_NOTHROW_CONSTRUCTOR(T) should evaluate to true if "T x;" can not throw
-// BOOST_HAS_NOTHROW_COPY(T) should evaluate to true if T(t) can not throw
-// BOOST_HAS_NOTHROW_ASSIGN(T) should evaluate to true if t = u can not throw
-// BOOST_HAS_VIRTUAL_DESTRUCTOR(T) should evaluate to true T has a virtual destructor
-//
-// The following can also be defined: when detected our implementation is greatly simplified.
-//
-// BOOST_IS_ABSTRACT(T) true if T is an abstract type
-// BOOST_IS_BASE_OF(T,U) true if T is a base class of U
-// BOOST_IS_CLASS(T) true if T is a class type (and not a union)
-// BOOST_IS_CONVERTIBLE(T,U) true if T is convertible to U
-// BOOST_IS_ENUM(T) true is T is an enum
-// BOOST_IS_POLYMORPHIC(T) true if T is a polymorphic type
-// BOOST_ALIGNMENT_OF(T) should evaluate to the alignment requirements of type T.
-
-#ifdef BOOST_HAS_SGI_TYPE_TRAITS
- // Hook into SGI's __type_traits class, this will pick up user supplied
- // specializations as well as SGI - compiler supplied specializations.
-# include <cutl/details/boost/type_traits/is_same.hpp>
-# ifdef __NetBSD__
- // There are two different versions of type_traits.h on NetBSD on Spark
- // use an implicit include via algorithm instead, to make sure we get
- // the same version as the std lib:
-# include <algorithm>
-# else
-# include <type_traits.h>
-# endif
-# define BOOST_IS_POD(T) ::cutl_details_boost::is_same< typename ::__type_traits<T>::is_POD_type, ::__true_type>::value
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) ::cutl_details_boost::is_same< typename ::__type_traits<T>::has_trivial_default_constructor, ::__true_type>::value
-# define BOOST_HAS_TRIVIAL_COPY(T) ::cutl_details_boost::is_same< typename ::__type_traits<T>::has_trivial_copy_constructor, ::__true_type>::value
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) ::cutl_details_boost::is_same< typename ::__type_traits<T>::has_trivial_assignment_operator, ::__true_type>::value
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) ::cutl_details_boost::is_same< typename ::__type_traits<T>::has_trivial_destructor, ::__true_type>::value
-
-# ifdef __sgi
-# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-# endif
-#endif
-
-#if defined(__MSL_CPP__) && (__MSL_CPP__ >= 0x8000)
- // Metrowerks compiler is acquiring intrinsic type traits support
- // post version 8. We hook into the published interface to pick up
- // user defined specializations as well as compiler intrinsics as
- // and when they become available:
-# include <msl_utility>
-# define BOOST_IS_UNION(T) BOOST_STD_EXTENSION_NAMESPACE::is_union<T>::value
-# define BOOST_IS_POD(T) BOOST_STD_EXTENSION_NAMESPACE::is_POD<T>::value
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_default_ctor<T>::value
-# define BOOST_HAS_TRIVIAL_COPY(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_copy_ctor<T>::value
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_assignment<T>::value
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_dtor<T>::value
-# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if (defined(BOOST_MSVC) && defined(BOOST_MSVC_FULL_VER) && (BOOST_MSVC_FULL_VER >=140050215))\
- || (defined(BOOST_INTEL) && defined(_MSC_VER) && (_MSC_VER >= 1500))
-# include <cutl/details/boost/type_traits/is_same.hpp>
-# include <cutl/details/boost/type_traits/is_function.hpp>
-
-# define BOOST_IS_UNION(T) __is_union(T)
-# define BOOST_IS_POD(T) (__is_pod(T) && __has_trivial_constructor(T))
-# define BOOST_IS_EMPTY(T) __is_empty(T)
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T)|| ( ::cutl_details_boost::is_pod<T>::value && !::cutl_details_boost::is_volatile<T>::value))
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) || ( ::cutl_details_boost::is_pod<T>::value && ! ::cutl_details_boost::is_const<T>::value && !::cutl_details_boost::is_volatile<T>::value))
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || ::cutl_details_boost::is_pod<T>::value)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) || ::cutl_details_boost::has_trivial_constructor<T>::value)
-# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) || ::cutl_details_boost::has_trivial_copy<T>::value)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) || ::cutl_details_boost::has_trivial_assign<T>::value)
-# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-
-# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
-# define BOOST_IS_CLASS(T) __is_class(T)
-# define BOOST_IS_CONVERTIBLE(T,U) ((__is_convertible_to(T,U) || (is_same<T,U>::value && !is_function<U>::value)) && !__is_abstract(U))
-# define BOOST_IS_ENUM(T) __is_enum(T)
-// This one doesn't quite always do the right thing:
-// # define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-// This one fails if the default alignment has been changed with /Zp:
-// # define BOOST_ALIGNMENT_OF(T) __alignof(T)
-
-# if defined(_MSC_VER) && (_MSC_VER >= 1700)
-# define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) ((__has_trivial_move_constructor(T) || ::cutl_details_boost::is_pod<T>::value) && !::cutl_details_boost::is_volatile<T>::value)
-# define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) ((__has_trivial_move_assign(T) || ::cutl_details_boost::is_pod<T>::value) && ! ::cutl_details_boost::is_const<T>::value && !::cutl_details_boost::is_volatile<T>::value)
-# endif
-
-# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if defined(__DMC__) && (__DMC__ >= 0x848)
-// For Digital Mars C++, www.digitalmars.com
-# define BOOST_IS_UNION(T) (__typeinfo(T) & 0x400)
-# define BOOST_IS_POD(T) (__typeinfo(T) & 0x800)
-# define BOOST_IS_EMPTY(T) (__typeinfo(T) & 0x1000)
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__typeinfo(T) & 0x10)
-# define BOOST_HAS_TRIVIAL_COPY(T) (__typeinfo(T) & 0x20)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__typeinfo(T) & 0x40)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__typeinfo(T) & 0x8)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__typeinfo(T) & 0x80)
-# define BOOST_HAS_NOTHROW_COPY(T) (__typeinfo(T) & 0x100)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) (__typeinfo(T) & 0x200)
-# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) (__typeinfo(T) & 0x4)
-# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if defined(BOOST_CLANG) && defined(__has_feature)
-# include <cstddef>
-# include <cutl/details/boost/type_traits/is_same.hpp>
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_volatile.hpp>
-
-# if __has_feature(is_union)
-# define BOOST_IS_UNION(T) __is_union(T)
-# endif
-# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_pod)
-# define BOOST_IS_POD(T) __is_pod(T)
-# endif
-# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_empty)
-# define BOOST_IS_EMPTY(T) __is_empty(T)
-# endif
-# if __has_feature(has_trivial_constructor)
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-# endif
-# if __has_feature(has_trivial_copy)
-# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value && !is_volatile<T>::value)
-# endif
-# if __has_feature(has_trivial_assign)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
-# endif
-# if __has_feature(has_trivial_destructor)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
-# endif
-# if __has_feature(has_nothrow_constructor)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
-# endif
-# if __has_feature(has_nothrow_copy)
-# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
-# endif
-# if __has_feature(has_nothrow_assign)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
-# endif
-# if __has_feature(has_virtual_destructor)
-# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-# endif
-# if __has_feature(is_abstract)
-# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-# endif
-# if __has_feature(is_base_of)
-# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
-# endif
-# if __has_feature(is_class)
-# define BOOST_IS_CLASS(T) __is_class(T)
-# endif
-# if __has_feature(is_convertible_to)
-# include <cutl/details/boost/type_traits/is_abstract.hpp>
-# define BOOST_IS_CONVERTIBLE(T,U) (__is_convertible_to(T,U) && !::cutl_details_boost::is_abstract<U>::value)
-# endif
-# if __has_feature(is_enum)
-# define BOOST_IS_ENUM(T) __is_enum(T)
-# endif
-# if __has_feature(is_polymorphic)
-# define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-# endif
-# if __has_feature(has_trivial_move_constructor)
-# define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) __has_trivial_move_constructor(T)
-# endif
-# if __has_feature(has_trivial_move_assign)
-# define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) __has_trivial_move_assign(T)
-# endif
-# define BOOST_ALIGNMENT_OF(T) __alignof(T)
-
-# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) && !defined(__GCCXML__))) && !defined(BOOST_CLANG)
-# include <cutl/details/boost/type_traits/is_same.hpp>
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_volatile.hpp>
-
-#ifdef BOOST_INTEL
-# define BOOST_INTEL_TT_OPTS || is_pod<T>::value
-#else
-# define BOOST_INTEL_TT_OPTS
-#endif
-
-# define BOOST_IS_UNION(T) __is_union(T)
-# define BOOST_IS_POD(T) __is_pod(T)
-# define BOOST_IS_EMPTY(T) __is_empty(T)
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) ((__has_trivial_constructor(T) BOOST_INTEL_TT_OPTS) && ! ::cutl_details_boost::is_volatile<T>::value)
-# define BOOST_HAS_TRIVIAL_COPY(T) ((__has_trivial_copy(T) BOOST_INTEL_TT_OPTS) && !is_reference<T>::value && ! ::cutl_details_boost::is_volatile<T>::value)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) ((__has_trivial_assign(T) BOOST_INTEL_TT_OPTS) && ! ::cutl_details_boost::is_volatile<T>::value && ! ::cutl_details_boost::is_const<T>::value)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) BOOST_INTEL_TT_OPTS)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) BOOST_INTEL_TT_OPTS)
-# define BOOST_HAS_NOTHROW_COPY(T) ((__has_nothrow_copy(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_reference<T>::value)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) ((__has_nothrow_assign(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_const<T>::value)
-# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-
-# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
-# define BOOST_IS_CLASS(T) __is_class(T)
-# define BOOST_IS_ENUM(T) __is_enum(T)
-# define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-# if (!defined(unix) && !defined(__unix__)) || defined(__LP64__)
- // GCC sometimes lies about alignment requirements
- // of type double on 32-bit unix platforms, use the
- // old implementation instead in that case:
-# define BOOST_ALIGNMENT_OF(T) __alignof__(T)
-# endif
-
-# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if defined(__ghs__) && (__GHS_VERSION_NUMBER >= 600)
-# include <cutl/details/boost/type_traits/is_same.hpp>
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_volatile.hpp>
-
-# define BOOST_IS_UNION(T) __is_union(T)
-# define BOOST_IS_POD(T) __is_pod(T)
-# define BOOST_IS_EMPTY(T) __is_empty(T)
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value && !is_volatile<T>::value)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
-# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
-# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-
-# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
-# define BOOST_IS_CLASS(T) __is_class(T)
-# define BOOST_IS_ENUM(T) __is_enum(T)
-# define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-# define BOOST_ALIGNMENT_OF(T) __alignof__(T)
-
-# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-# if defined(__CODEGEARC__)
-# include <cutl/details/boost/type_traits/is_same.hpp>
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_volatile.hpp>
-# include <cutl/details/boost/type_traits/is_void.hpp>
-
-# define BOOST_IS_UNION(T) __is_union(T)
-# define BOOST_IS_POD(T) __is_pod(T)
-# define BOOST_IS_EMPTY(T) __is_empty(T)
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T))
-# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T))
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T))
-# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
-# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-
-# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_void<T>::value && !is_void<U>::value)
-# define BOOST_IS_CLASS(T) __is_class(T)
-# define BOOST_IS_CONVERTIBLE(T,U) (__is_convertible(T,U) || is_void<U>::value)
-# define BOOST_IS_ENUM(T) __is_enum(T)
-# define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-# define BOOST_ALIGNMENT_OF(T) alignof(T)
-
-# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#endif // BOOST_TT_INTRINSICS_HPP_INCLUDED
-
-
-
-
-
-
-
diff --git a/libcutl/cutl/details/boost/type_traits/is_abstract.hpp b/libcutl/cutl/details/boost/type_traits/is_abstract.hpp
deleted file mode 100644
index 193ffc2..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_abstract.hpp
+++ /dev/null
@@ -1,153 +0,0 @@
-#ifndef BOOST_TT_IS_ABSTRACT_CLASS_HPP
-#define BOOST_TT_IS_ABSTRACT_CLASS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// is_abstract_class.hpp:
-//
-// (C) Copyright 2002 Rani Sharoni (rani_sharoni@hotmail.com) and Robert Ramey
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org for updates, documentation, and revision history.
-//
-
-// Compile type discovery whether given type is abstract class or not.
-//
-// Requires DR 337 to be supported by compiler
-// (http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_active.html#337).
-//
-//
-// Believed (Jan 2004) to work on:
-// - GCC 3.4
-// - VC++ 7.1
-// - compilers with new EDG frontend (Intel C++ 7, Comeau 4.3.2)
-//
-// Doesn't work on:
-// - VC++6, VC++7.0 and less
-// - GCC 3.3.X and less
-// - Borland C++ 6 and less
-//
-//
-// History:
-// - Originally written by Rani Sharoni, see
-// http://groups.google.com/groups?selm=df893da6.0207110613.75b2fe90%40posting.google.com
-// At this time supported by EDG (Intel C++ 7, Comeau 4.3.2) and VC7.1.
-// - Adapted and added into Boost.Serialization library by Robert Ramey
-// (starting with submission #10).
-// - Jan 2004: GCC 3.4 fixed to support DR337 (Giovanni Bajo).
-// - Jan 2004: modified to be part of Boost.TypeTraits (Pavel Vozenilek).
-// - Nov 2004: Christoph Ludwig found that the implementation did not work with
-// template types and gcc-3.4 or VC7.1, fix due to Christoph Ludwig
-// and John Maddock.
-// - Dec 2004: Added new config macro BOOST_NO_IS_ABSTRACT which causes the template
-// to degrade gracefully, rather than trash the compiler (John Maddock).
-//
-
-#include <cutl/details/boost/type_traits/intrinsics.hpp>
-#ifndef BOOST_IS_ABSTRACT
-#include <cutl/details/boost/static_assert.hpp>
-#include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-#include <cutl/details/boost/type_traits/is_class.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_and.hpp>
-#ifdef BOOST_NO_IS_ABSTRACT
-#include <cutl/details/boost/type_traits/is_polymorphic.hpp>
-#endif
-#endif
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-
-namespace cutl_details_boost {
-namespace detail{
-
-#ifdef BOOST_IS_ABSTRACT
-template <class T>
-struct is_abstract_imp
-{
- BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_ABSTRACT(T));
-};
-#elif !defined(BOOST_NO_IS_ABSTRACT)
-template<class T>
-struct is_abstract_imp2
-{
- // Deduction fails if T is void, function type,
- // reference type (14.8.2/2)or an abstract class type
- // according to review status issue #337
- //
- template<class U>
- static type_traits::no_type check_sig(U (*)[1]);
- template<class U>
- static type_traits::yes_type check_sig(...);
- //
- // T must be a complete type, further if T is a template then
- // it must be instantiated in order for us to get the right answer:
- //
- BOOST_STATIC_ASSERT(sizeof(T) != 0);
-
- // GCC2 won't even parse this template if we embed the computation
- // of s1 in the computation of value.
-#ifdef __GNUC__
- BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(is_abstract_imp2<T>::template check_sig<T>(0)));
-#else
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(push)
-#pragma warning(disable:6334)
-#endif
- BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(check_sig<T>(0)));
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(pop)
-#endif
-#endif
-
- BOOST_STATIC_CONSTANT(bool, value =
- (s1 == sizeof(type_traits::yes_type)));
-};
-
-template <bool v>
-struct is_abstract_select
-{
- template <class T>
- struct rebind
- {
- typedef is_abstract_imp2<T> type;
- };
-};
-template <>
-struct is_abstract_select<false>
-{
- template <class T>
- struct rebind
- {
- typedef false_type type;
- };
-};
-
-template <class T>
-struct is_abstract_imp
-{
- typedef is_abstract_select< ::cutl_details_boost::is_class<T>::value> selector;
- typedef typename selector::template rebind<T> binder;
- typedef typename binder::type type;
-
- BOOST_STATIC_CONSTANT(bool, value = type::value);
-};
-
-#endif
-}
-
-#ifndef BOOST_NO_IS_ABSTRACT
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_abstract,T,::cutl_details_boost::detail::is_abstract_imp<T>::value)
-#else
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_abstract,T,::cutl_details_boost::detail::is_polymorphic_imp<T>::value)
-#endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif //BOOST_TT_IS_ABSTRACT_CLASS_HPP
diff --git a/libcutl/cutl/details/boost/type_traits/is_arithmetic.hpp b/libcutl/cutl/details/boost/type_traits/is_arithmetic.hpp
deleted file mode 100644
index 4d8ff91..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_arithmetic.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
-#define BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
-
-#if !defined( __CODEGEARC__ )
-#include <cutl/details/boost/type_traits/is_integral.hpp>
-#include <cutl/details/boost/type_traits/is_float.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_or.hpp>
-#include <cutl/details/boost/config.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#if !defined(__CODEGEARC__)
-namespace detail {
-
-template< typename T >
-struct is_arithmetic_impl
-{
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_integral<T>::value,
- ::cutl_details_boost::is_float<T>::value
- >::value));
-};
-
-} // namespace detail
-#endif
-
-//* is a type T an arithmetic type described in the standard (3.9.1p8)
-#if defined(__CODEGEARC__)
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_arithmetic,T,__is_arithmetic(T))
-#else
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_arithmetic,T,::cutl_details_boost::detail::is_arithmetic_impl<T>::value)
-#endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_array.hpp b/libcutl/cutl/details/boost/type_traits/is_array.hpp
deleted file mode 100644
index c4e6b3f..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_array.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-// Some fixes for is_array are based on a newsgroup posting by Jonathan Lundquist.
-
-
-#ifndef BOOST_TT_IS_ARRAY_HPP_INCLUDED
-#define BOOST_TT_IS_ARRAY_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/config.hpp>
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-# include <cutl/details/boost/type_traits/detail/wrap.hpp>
-#endif
-
-#include <cstddef>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#if defined( __CODEGEARC__ )
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,__is_array(T))
-#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,false)
-#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T[N],true)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T const[N],true)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T volatile[N],true)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T const volatile[N],true)
-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T[],true)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T const[],true)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T volatile[],true)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T const volatile[],true)
-#endif
-#endif
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-namespace detail {
-
-using ::cutl_details_boost::type_traits::yes_type;
-using ::cutl_details_boost::type_traits::no_type;
-using ::cutl_details_boost::type_traits::wrap;
-
-template< typename T > T(* is_array_tester1(wrap<T>) )(wrap<T>);
-char BOOST_TT_DECL is_array_tester1(...);
-
-template< typename T> no_type is_array_tester2(T(*)(wrap<T>));
-yes_type BOOST_TT_DECL is_array_tester2(...);
-
-template< typename T >
-struct is_array_impl
-{
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof(::cutl_details_boost::detail::is_array_tester2(
- ::cutl_details_boost::detail::is_array_tester1(
- ::cutl_details_boost::type_traits::wrap<T>()
- )
- )) == 1
- );
-};
-
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_array,void,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_array,void const,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_array,void volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_array,void const volatile,false)
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,::cutl_details_boost::detail::is_array_impl<T>::value)
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_ARRAY_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_base_and_derived.hpp b/libcutl/cutl/details/boost/type_traits/is_base_and_derived.hpp
deleted file mode 100644
index 2268820..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_base_and_derived.hpp
+++ /dev/null
@@ -1,254 +0,0 @@
-
-// (C) Copyright Rani Sharoni 2003.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
-#define BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/intrinsics.hpp>
-#ifndef BOOST_IS_BASE_OF
-#include <cutl/details/boost/type_traits/is_class.hpp>
-#include <cutl/details/boost/type_traits/is_same.hpp>
-#include <cutl/details/boost/type_traits/is_convertible.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_and.hpp>
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/static_assert.hpp>
-#endif
-#include <cutl/details/boost/type_traits/remove_cv.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-namespace detail {
-
-#ifndef BOOST_IS_BASE_OF
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581)) \
- && !BOOST_WORKAROUND(__SUNPRO_CC , <= 0x540) \
- && !BOOST_WORKAROUND(__EDG_VERSION__, <= 243) \
- && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-
- // The EDG version number is a lower estimate.
- // It is not currently known which EDG version
- // exactly fixes the problem.
-
-/*************************************************************************
-
-This version detects ambiguous base classes and private base classes
-correctly, and was devised by Rani Sharoni.
-
-Explanation by Terje Slettebo and Rani Sharoni.
-
-Let's take the multiple base class below as an example, and the following
-will also show why there's not a problem with private or ambiguous base
-class:
-
-struct B {};
-struct B1 : B {};
-struct B2 : B {};
-struct D : private B1, private B2 {};
-
-is_base_and_derived<B, D>::value;
-
-First, some terminology:
-
-SC - Standard conversion
-UDC - User-defined conversion
-
-A user-defined conversion sequence consists of an SC, followed by an UDC,
-followed by another SC. Either SC may be the identity conversion.
-
-When passing the default-constructed Host object to the overloaded check_sig()
-functions (initialization 8.5/14/4/3), we have several viable implicit
-conversion sequences:
-
-For "static no_type check_sig(B const volatile *, int)" we have the conversion
-sequences:
-
-C -> C const (SC - Qualification Adjustment) -> B const volatile* (UDC)
-C -> D const volatile* (UDC) -> B1 const volatile* / B2 const volatile* ->
- B const volatile* (SC - Conversion)
-
-For "static yes_type check_sig(D const volatile *, T)" we have the conversion
-sequence:
-
-C -> D const volatile* (UDC)
-
-According to 13.3.3.1/4, in context of user-defined conversion only the
-standard conversion sequence is considered when selecting the best viable
-function, so it only considers up to the user-defined conversion. For the
-first function this means choosing between C -> C const and C -> C, and it
-chooses the latter, because it's a proper subset (13.3.3.2/3/2) of the
-former. Therefore, we have:
-
-C -> D const volatile* (UDC) -> B1 const volatile* / B2 const volatile* ->
- B const volatile* (SC - Conversion)
-C -> D const volatile* (UDC)
-
-Here, the principle of the "shortest subsequence" applies again, and it
-chooses C -> D const volatile*. This shows that it doesn't even need to
-consider the multiple paths to B, or accessibility, as that possibility is
-eliminated before it could possibly cause ambiguity or access violation.
-
-If D is not derived from B, it has to choose between C -> C const -> B const
-volatile* for the first function, and C -> D const volatile* for the second
-function, which are just as good (both requires a UDC, 13.3.3.2), had it not
-been for the fact that "static no_type check_sig(B const volatile *, int)" is
-not templated, which makes C -> C const -> B const volatile* the best choice
-(13.3.3/1/4), resulting in "no".
-
-Also, if Host::operator B const volatile* hadn't been const, the two
-conversion sequences for "static no_type check_sig(B const volatile *, int)", in
-the case where D is derived from B, would have been ambiguous.
-
-See also
-http://groups.google.com/groups?selm=df893da6.0301280859.522081f7%40posting.
-google.com and links therein.
-
-*************************************************************************/
-
-template <typename B, typename D>
-struct bd_helper
-{
- //
- // This VC7.1 specific workaround stops the compiler from generating
- // an internal compiler error when compiling with /vmg (thanks to
- // Aleksey Gurtovoy for figuring out the workaround).
- //
-#if !BOOST_WORKAROUND(BOOST_MSVC, == 1310)
- template <typename T>
- static type_traits::yes_type check_sig(D const volatile *, T);
- static type_traits::no_type check_sig(B const volatile *, int);
-#else
- static type_traits::yes_type check_sig(D const volatile *, long);
- static type_traits::no_type check_sig(B const volatile * const&, int);
-#endif
-};
-
-template<typename B, typename D>
-struct is_base_and_derived_impl2
-{
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(push)
-#pragma warning(disable:6334)
-#endif
- //
- // May silently do the wrong thing with incomplete types
- // unless we trap them here:
- //
- BOOST_STATIC_ASSERT(sizeof(B) != 0);
- BOOST_STATIC_ASSERT(sizeof(D) != 0);
-
- struct Host
- {
-#if !BOOST_WORKAROUND(BOOST_MSVC, == 1310)
- operator B const volatile *() const;
-#else
- operator B const volatile * const&() const;
-#endif
- operator D const volatile *();
- };
-
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof(bd_helper<B,D>::check_sig(Host(), 0)) == sizeof(type_traits::yes_type));
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(pop)
-#endif
-};
-
-#else
-
-//
-// broken version:
-//
-template<typename B, typename D>
-struct is_base_and_derived_impl2
-{
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::is_convertible<D*,B*>::value));
-};
-
-#define BOOST_BROKEN_IS_BASE_AND_DERIVED
-
-#endif
-
-template <typename B, typename D>
-struct is_base_and_derived_impl3
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-template <bool ic1, bool ic2, bool iss>
-struct is_base_and_derived_select
-{
- template <class T, class U>
- struct rebind
- {
- typedef is_base_and_derived_impl3<T,U> type;
- };
-};
-
-template <>
-struct is_base_and_derived_select<true,true,false>
-{
- template <class T, class U>
- struct rebind
- {
- typedef is_base_and_derived_impl2<T,U> type;
- };
-};
-
-template <typename B, typename D>
-struct is_base_and_derived_impl
-{
- typedef typename remove_cv<B>::type ncvB;
- typedef typename remove_cv<D>::type ncvD;
-
- typedef is_base_and_derived_select<
- ::cutl_details_boost::is_class<B>::value,
- ::cutl_details_boost::is_class<D>::value,
- ::cutl_details_boost::is_same<ncvB,ncvD>::value> selector;
- typedef typename selector::template rebind<ncvB,ncvD> binder;
- typedef typename binder::type bound_type;
-
- BOOST_STATIC_CONSTANT(bool, value = bound_type::value);
-};
-#else
-template <typename B, typename D>
-struct is_base_and_derived_impl
-{
- typedef typename remove_cv<B>::type ncvB;
- typedef typename remove_cv<D>::type ncvD;
-
- BOOST_STATIC_CONSTANT(bool, value = (BOOST_IS_BASE_OF(B,D) && ! ::cutl_details_boost::is_same<ncvB,ncvD>::value));
-};
-#endif
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF2(
- is_base_and_derived
- , Base
- , Derived
- , (::cutl_details_boost::detail::is_base_and_derived_impl<Base,Derived>::value)
- )
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base&,Derived,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base,Derived&,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base&,Derived&,false)
-#endif
-
-#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename Base,is_base_and_derived,Base,Base,false)
-#endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_class.hpp b/libcutl/cutl/details/boost/type_traits/is_class.hpp
deleted file mode 100644
index 4f5f6f8..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_class.hpp
+++ /dev/null
@@ -1,140 +0,0 @@
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000-2003.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_CLASS_HPP_INCLUDED
-#define BOOST_TT_IS_CLASS_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/config.hpp>
-#include <cutl/details/boost/type_traits/intrinsics.hpp>
-#ifndef BOOST_IS_CLASS
-# include <cutl/details/boost/type_traits/is_union.hpp>
-# include <cutl/details/boost/type_traits/detail/ice_and.hpp>
-# include <cutl/details/boost/type_traits/detail/ice_not.hpp>
-
-#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
-# include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-#else
-# include <cutl/details/boost/type_traits/is_scalar.hpp>
-# include <cutl/details/boost/type_traits/is_array.hpp>
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_void.hpp>
-# include <cutl/details/boost/type_traits/is_function.hpp>
-#endif
-
-#endif // BOOST_IS_CLASS
-
-#ifdef __EDG_VERSION__
-# include <cutl/details/boost/type_traits/remove_cv.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-namespace detail {
-
-#ifndef BOOST_IS_CLASS
-#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
-
-// This is actually the conforming implementation which works with
-// abstract classes. However, enough compilers have trouble with
-// it that most will use the one in
-// boost/type_traits/object_traits.hpp. This implementation
-// actually works with VC7.0, but other interactions seem to fail
-// when we use it.
-
-// is_class<> metafunction due to Paul Mensonides
-// (leavings@attbi.com). For more details:
-// http://groups.google.com/groups?hl=en&selm=000001c1cc83%24e154d5e0%247772e50c%40c161550a&rnum=1
-#if defined(__GNUC__) && !defined(__EDG_VERSION__)
-
-template <class U> ::cutl_details_boost::type_traits::yes_type is_class_tester(void(U::*)(void));
-template <class U> ::cutl_details_boost::type_traits::no_type is_class_tester(...);
-
-template <typename T>
-struct is_class_impl
-{
-
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_and<
- sizeof(is_class_tester<T>(0)) == sizeof(::cutl_details_boost::type_traits::yes_type),
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_union<T>::value >::value
- >::value)
- );
-};
-
-#else
-
-template <typename T>
-struct is_class_impl
-{
- template <class U> static ::cutl_details_boost::type_traits::yes_type is_class_tester(void(U::*)(void));
- template <class U> static ::cutl_details_boost::type_traits::no_type is_class_tester(...);
-
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_and<
- sizeof(is_class_tester<T>(0)) == sizeof(::cutl_details_boost::type_traits::yes_type),
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_union<T>::value >::value
- >::value)
- );
-};
-
-#endif
-
-#else
-
-template <typename T>
-struct is_class_impl
-{
-# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_and<
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_union<T>::value >::value,
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_scalar<T>::value >::value,
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_array<T>::value >::value,
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_reference<T>::value>::value,
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_void<T>::value >::value,
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_function<T>::value >::value
- >::value));
-# else
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_and<
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_union<T>::value >::value,
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_scalar<T>::value >::value,
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_array<T>::value >::value,
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_reference<T>::value>::value,
- ::cutl_details_boost::type_traits::ice_not< ::cutl_details_boost::is_void<T>::value >::value
- >::value));
-# endif
-};
-
-# endif // BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
-# else // BOOST_IS_CLASS
-template <typename T>
-struct is_class_impl
-{
- BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_CLASS(T));
-};
-# endif // BOOST_IS_CLASS
-
-} // namespace detail
-
-# ifdef __EDG_VERSION__
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(
- is_class,T, cutl_details_boost::detail::is_class_impl<typename cutl_details_boost::remove_cv<T>::type>::value)
-# else
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_class,T,::cutl_details_boost::detail::is_class_impl<T>::value)
-# endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_CLASS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_const.hpp b/libcutl/cutl/details/boost/type_traits/is_const.hpp
deleted file mode 100644
index 2828ed8..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_const.hpp
+++ /dev/null
@@ -1,165 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Howard Hinnant and John Maddock 2000.
-// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
-
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
-// is_member_pointer based on the Simulated Partial Specialization work
-// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
-// http://groups.yahoo.com/group/boost/message/5441
-// Some workarounds in here use ideas suggested from "Generic<Programming>:
-// Mappings between Types and Values"
-// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_CONST_HPP_INCLUDED
-#define BOOST_TT_IS_CONST_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# include <cutl/details/boost/type_traits/detail/cv_traits_impl.hpp>
-# ifdef __GNUC__
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# endif
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
-# include <cutl/details/boost/type_traits/remove_bounds.hpp>
-# endif
-#else
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_array.hpp>
-# include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-# include <cutl/details/boost/type_traits/detail/false_result.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#if defined( __CODEGEARC__ )
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,__is_const(T))
-
-#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-namespace detail{
-//
-// We can't filter out rvalue_references at the same level as
-// references or we get ambiguities from msvc:
-//
-template <class T>
-struct is_const_rvalue_filter
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
- BOOST_STATIC_CONSTANT(bool, value = ::cutl_details_boost::detail::cv_traits_imp<typename cutl_details_boost::remove_bounds<T>::type*>::is_const);
-#else
- BOOST_STATIC_CONSTANT(bool, value = ::cutl_details_boost::detail::cv_traits_imp<T*>::is_const);
-#endif
-};
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-template <class T>
-struct is_const_rvalue_filter<T&&>
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#endif
-}
-
-//* is a type T declared const - is_const<T>
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::cutl_details_boost::detail::is_const_rvalue_filter<T>::value)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T&,false)
-
-#if defined(BOOST_ILLEGAL_CV_REFERENCES)
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T& const,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T& volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T& const volatile,false)
-#endif
-
-#if defined(__GNUC__) && (__GNUC__ < 3)
-// special case for gcc where illegally cv-qualified reference types can be
-// generated in some corner cases:
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T const,!(::cutl_details_boost::is_reference<T>::value))
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T volatile const,!(::cutl_details_boost::is_reference<T>::value))
-#endif
-
-#else
-
-namespace detail {
-
-using ::cutl_details_boost::type_traits::yes_type;
-using ::cutl_details_boost::type_traits::no_type;
-
-yes_type is_const_tester(const volatile void*);
-no_type is_const_tester(volatile void *);
-
-template <bool is_ref, bool array>
-struct is_const_helper
- : public ::cutl_details_boost::type_traits::false_result
-{
-};
-
-template <>
-struct is_const_helper<false,false>
-{
- template <typename T> struct result_
- {
- static T* t;
- BOOST_STATIC_CONSTANT(bool, value = (
- sizeof(cutl_details_boost::detail::yes_type) == sizeof(cutl_details_boost::detail::is_const_tester(t))
- ));
- };
-};
-
-template <>
-struct is_const_helper<false,true>
-{
- template <typename T> struct result_
- {
- static T t;
- BOOST_STATIC_CONSTANT(bool, value = (
- sizeof(cutl_details_boost::detail::yes_type) == sizeof(cutl_details_boost::detail::is_const_tester(&t))
- ));
- };
-};
-
-template <typename T>
-struct is_const_impl
- : public is_const_helper<
- is_reference<T>::value
- , is_array<T>::value
- >::template result_<T>
-{
-};
-
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_const,void,false)
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_const,void const,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_const,void volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_const,void const volatile,true)
-#endif
-
-} // namespace detail
-
-//* is a type T declared const - is_const<T>
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::cutl_details_boost::detail::is_const_impl<T>::value)
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_CONST_HPP_INCLUDED
-
diff --git a/libcutl/cutl/details/boost/type_traits/is_convertible.hpp b/libcutl/cutl/details/boost/type_traits/is_convertible.hpp
deleted file mode 100644
index 6f0a110..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_convertible.hpp
+++ /dev/null
@@ -1,492 +0,0 @@
-
-// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
-// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
-// Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-//
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
-#define BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/intrinsics.hpp>
-#ifndef BOOST_IS_CONVERTIBLE
-#include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-#include <cutl/details/boost/type_traits/config.hpp>
-#include <cutl/details/boost/type_traits/is_array.hpp>
-#include <cutl/details/boost/type_traits/ice.hpp>
-#include <cutl/details/boost/type_traits/is_arithmetic.hpp>
-#include <cutl/details/boost/type_traits/is_void.hpp>
-#ifndef BOOST_NO_IS_ABSTRACT
-#include <cutl/details/boost/type_traits/is_abstract.hpp>
-#endif
-#include <cutl/details/boost/type_traits/add_lvalue_reference.hpp>
-#include <cutl/details/boost/type_traits/add_rvalue_reference.hpp>
-#include <cutl/details/boost/type_traits/is_function.hpp>
-
-#if defined(__MWERKS__)
-#include <cutl/details/boost/type_traits/remove_reference.hpp>
-#endif
-
-#endif // BOOST_IS_CONVERTIBLE
-
-// should be always the last #include directive
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#ifndef BOOST_IS_CONVERTIBLE
-
-// is one type convertible to another?
-//
-// there are multiple versions of the is_convertible
-// template, almost every compiler seems to require its
-// own version.
-//
-// Thanks to Andrei Alexandrescu for the original version of the
-// conversion detection technique!
-//
-
-namespace detail {
-
-// MS specific version:
-
-#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
-
-// This workaround is necessary to handle when From is void
-// which is normally taken care of by the partial specialization
-// of the is_convertible typename.
-using ::cutl_details_boost::type_traits::yes_type;
-using ::cutl_details_boost::type_traits::no_type;
-
-template< typename From >
-struct does_conversion_exist
-{
- template< typename To > struct result_
- {
- static no_type BOOST_TT_DECL _m_check(...);
- static yes_type BOOST_TT_DECL _m_check(To);
- static typename add_lvalue_reference<From>::type _m_from;
- enum { value = sizeof( _m_check(_m_from) ) == sizeof(yes_type) };
- };
-};
-
-template<>
-struct does_conversion_exist<void>
-{
- template< typename To > struct result_
- {
- enum { value = ::cutl_details_boost::is_void<To>::value };
- };
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl
- : public does_conversion_exist<From>::template result_<To>
-{
-};
-
-#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x560)
-//
-// special version for Borland compilers
-// this version breaks when used for some
-// UDT conversions:
-//
-template <typename From, typename To>
-struct is_convertible_impl
-{
-#pragma option push -w-8074
- // This workaround for Borland breaks the EDG C++ frontend,
- // so we only use it for Borland.
- template <typename T> struct checker
- {
- static ::cutl_details_boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
- static ::cutl_details_boost::type_traits::yes_type BOOST_TT_DECL _m_check(T);
- };
-
- static typename add_lvalue_reference<From>::type _m_from;
- static bool const value = sizeof( checker<To>::_m_check(_m_from) )
- == sizeof(::cutl_details_boost::type_traits::yes_type);
-#pragma option pop
-};
-
-#elif defined(__GNUC__) || defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
-// special version for gcc compiler + recent Borland versions
-// note that this does not pass UDT's through (...)
-
-struct any_conversion
-{
- template <typename T> any_conversion(const volatile T&);
- template <typename T> any_conversion(const T&);
- template <typename T> any_conversion(volatile T&);
- template <typename T> any_conversion(T&);
-};
-
-template <typename T> struct checker
-{
- static cutl_details_boost::type_traits::no_type _m_check(any_conversion ...);
- static cutl_details_boost::type_traits::yes_type _m_check(T, int);
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl
-{
- typedef typename add_lvalue_reference<From>::type lvalue_type;
- typedef typename add_rvalue_reference<From>::type rvalue_type;
- static lvalue_type _m_from;
-#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6)))
- static bool const value =
- sizeof( cutl_details_boost::detail::checker<To>::_m_check(static_cast<rvalue_type>(_m_from), 0) )
- == sizeof(::cutl_details_boost::type_traits::yes_type);
-#else
- static bool const value =
- sizeof( cutl_details_boost::detail::checker<To>::_m_check(_m_from, 0) )
- == sizeof(::cutl_details_boost::type_traits::yes_type);
-#endif
-};
-
-#elif (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 245) && !defined(__ICL)) \
- || defined(__IBMCPP__) || defined(__HP_aCC)
-//
-// This is *almost* an ideal world implementation as it doesn't rely
-// on undefined behaviour by passing UDT's through (...).
-// Unfortunately it doesn't quite pass all the tests for most compilers (sigh...)
-// Enable this for your compiler if is_convertible_test.cpp will compile it...
-//
-// Note we do not enable this for VC7.1, because even though it passes all the
-// type_traits tests it is known to cause problems when instantiation occurs
-// deep within the instantiation tree :-(
-//
-struct any_conversion
-{
- template <typename T> any_conversion(const volatile T&);
- template <typename T> any_conversion(const T&);
- template <typename T> any_conversion(volatile T&);
- // we need this constructor to catch references to functions
- // (which can not be cv-qualified):
- template <typename T> any_conversion(T&);
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl
-{
- static ::cutl_details_boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
- static ::cutl_details_boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
- typedef typename add_lvalue_reference<From>::type lvalue_type;
- typedef typename add_rvalue_reference<From>::type rvalue_type;
- static lvalue_type _m_from;
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0) ) == sizeof(::cutl_details_boost::type_traits::yes_type)
- );
-#else
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof( _m_check(_m_from, 0) ) == sizeof(::cutl_details_boost::type_traits::yes_type)
- );
-#endif
-};
-
-#elif defined(__DMC__)
-
-struct any_conversion
-{
- template <typename T> any_conversion(const volatile T&);
- template <typename T> any_conversion(const T&);
- template <typename T> any_conversion(volatile T&);
- // we need this constructor to catch references to functions
- // (which can not be cv-qualified):
- template <typename T> any_conversion(T&);
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl
-{
- // Using '...' doesn't always work on Digital Mars. This version seems to.
- template <class T>
- static ::cutl_details_boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion, float, T);
- static ::cutl_details_boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int, int);
- typedef typename add_lvalue_reference<From>::type lvalue_type;
- typedef typename add_rvalue_reference<From>::type rvalue_type;
- static lvalue_type _m_from;
-
- // Static constants sometime cause the conversion of _m_from to To to be
- // called. This doesn't happen with an enum.
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
- enum { value =
- sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0, 0) ) == sizeof(::cutl_details_boost::type_traits::yes_type)
- };
-#else
- enum { value =
- sizeof( _m_check(_m_from, 0, 0) ) == sizeof(::cutl_details_boost::type_traits::yes_type)
- };
-#endif
-};
-
-#elif defined(__MWERKS__)
-//
-// CW works with the technique implemented above for EDG, except when From
-// is a function type (or a reference to such a type), in which case
-// any_conversion won't be accepted as a valid conversion. We detect this
-// exceptional situation and channel it through an alternative algorithm.
-//
-
-template <typename From, typename To,bool FromIsFunctionRef>
-struct is_convertible_basic_impl_aux;
-
-struct any_conversion
-{
- template <typename T> any_conversion(const volatile T&);
- template <typename T> any_conversion(const T&);
- template <typename T> any_conversion(volatile T&);
- template <typename T> any_conversion(T&);
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl_aux<From,To,false /*FromIsFunctionRef*/>
-{
- static ::cutl_details_boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
- static ::cutl_details_boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
- typedef typename add_lvalue_reference<From>::type lvalue_type;
- typedef typename add_rvalue_reference<From>::type rvalue_type;
- static lvalue_type _m_from;
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0) ) == sizeof(::cutl_details_boost::type_traits::yes_type)
- );
-#else
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof( _m_check(_m_from, 0) ) == sizeof(::cutl_details_boost::type_traits::yes_type)
- );
-#endif
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl_aux<From,To,true /*FromIsFunctionRef*/>
-{
- static ::cutl_details_boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
- static ::cutl_details_boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
- typedef typename add_lvalue_reference<From>::type lvalue_type;
- typedef typename add_rvalue_reference<From>::type rvalue_type;
- static lvalue_type _m_from;
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof( _m_check(static_cast<rvalue_type>(_m_from)) ) == sizeof(::cutl_details_boost::type_traits::yes_type)
- );
-#else
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof( _m_check(_m_from) ) == sizeof(::cutl_details_boost::type_traits::yes_type)
- );
-#endif
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl:
- is_convertible_basic_impl_aux<
- From,To,
- ::cutl_details_boost::is_function<typename ::cutl_details_boost::remove_reference<From>::type>::value
- >
-{};
-
-#else
-//
-// This version seems to work pretty well for a wide spectrum of compilers,
-// however it does rely on undefined behaviour by passing UDT's through (...).
-//
-template <typename From, typename To>
-struct is_convertible_basic_impl
-{
- static ::cutl_details_boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
- static ::cutl_details_boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
- typedef typename add_lvalue_reference<From>::type lvalue_type;
- typedef typename add_rvalue_reference<From>::type rvalue_type;
- static lvalue_type _m_from;
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4244)
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(disable:6334)
-#endif
-#endif
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof( _m_check(static_cast<rvalue_type>(_m_from)) ) == sizeof(::cutl_details_boost::type_traits::yes_type)
- );
-#else
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof( _m_check(_m_from) ) == sizeof(::cutl_details_boost::type_traits::yes_type)
- );
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-};
-
-#endif // is_convertible_impl
-
-#if defined(__DMC__)
-// As before, a static constant sometimes causes errors on Digital Mars.
-template <typename From, typename To>
-struct is_convertible_impl
-{
- enum { value =
- (::cutl_details_boost::type_traits::ice_and<
- ::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::detail::is_convertible_basic_impl<From,To>::value,
- ::cutl_details_boost::is_void<To>::value
- >::value,
- ::cutl_details_boost::type_traits::ice_not<
- ::cutl_details_boost::is_array<To>::value
- >::value,
- ::cutl_details_boost::type_traits::ice_not<
- ::cutl_details_boost::is_function<To>::value
- >::value
- >::value) };
-};
-#elif !defined(__BORLANDC__) || __BORLANDC__ > 0x551
-template <typename From, typename To>
-struct is_convertible_impl
-{
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_and<
- ::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::detail::is_convertible_basic_impl<From,To>::value,
- ::cutl_details_boost::is_void<To>::value
- >::value,
- ::cutl_details_boost::type_traits::ice_not<
- ::cutl_details_boost::is_array<To>::value
- >::value,
- ::cutl_details_boost::type_traits::ice_not<
- ::cutl_details_boost::is_function<To>::value
- >::value
- >::value)
- );
-};
-#endif
-
-template <bool trivial1, bool trivial2, bool abstract_target>
-struct is_convertible_impl_select
-{
- template <class From, class To>
- struct rebind
- {
- typedef is_convertible_impl<From, To> type;
- };
-};
-
-template <>
-struct is_convertible_impl_select<true, true, false>
-{
- template <class From, class To>
- struct rebind
- {
- typedef true_type type;
- };
-};
-
-template <>
-struct is_convertible_impl_select<false, false, true>
-{
- template <class From, class To>
- struct rebind
- {
- typedef false_type type;
- };
-};
-
-template <>
-struct is_convertible_impl_select<true, false, true>
-{
- template <class From, class To>
- struct rebind
- {
- typedef false_type type;
- };
-};
-
-template <typename From, typename To>
-struct is_convertible_impl_dispatch_base
-{
-#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
- typedef is_convertible_impl_select<
- ::cutl_details_boost::is_arithmetic<From>::value,
- ::cutl_details_boost::is_arithmetic<To>::value,
-#ifndef BOOST_NO_IS_ABSTRACT
- ::cutl_details_boost::is_abstract<To>::value
-#else
- false
-#endif
- > selector;
-#else
- typedef is_convertible_impl_select<false, false, false> selector;
-#endif
- typedef typename selector::template rebind<From, To> isc_binder;
- typedef typename isc_binder::type type;
-};
-
-template <typename From, typename To>
-struct is_convertible_impl_dispatch
- : public is_convertible_impl_dispatch_base<From, To>::type
-{};
-
-//
-// Now add the full and partial specialisations
-// for void types, these are common to all the
-// implementation above:
-//
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-# define TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1,spec2,value) \
- BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2,value) \
- BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 const,value) \
- BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 volatile,value) \
- BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 const volatile,value) \
- /**/
-
-# define TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2(trait,spec1,spec2,value) \
- TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1,spec2,value) \
- TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 const,spec2,value) \
- TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 volatile,spec2,value) \
- TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 const volatile,spec2,value) \
- /**/
-
- TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2(is_convertible,void,void,true)
-
-# undef TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2
-# undef TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1
-
-#else
- BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(is_convertible,void,void,true)
-#endif // BOOST_NO_CV_VOID_SPECIALIZATIONS
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void,To,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void,false)
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const,To,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void volatile,To,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const volatile,To,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const volatile,false)
-#endif
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_convertible,From,To,(::cutl_details_boost::detail::is_convertible_impl_dispatch<From,To>::value))
-
-#else
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_convertible,From,To,BOOST_IS_CONVERTIBLE(From,To))
-
-#endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_enum.hpp b/libcutl/cutl/details/boost/type_traits/is_enum.hpp
deleted file mode 100644
index a837de5..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_enum.hpp
+++ /dev/null
@@ -1,189 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_ENUM_HPP_INCLUDED
-#define BOOST_TT_IS_ENUM_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/intrinsics.hpp>
-#ifndef BOOST_IS_ENUM
-#include <cutl/details/boost/type_traits/add_reference.hpp>
-#include <cutl/details/boost/type_traits/is_arithmetic.hpp>
-#include <cutl/details/boost/type_traits/is_reference.hpp>
-#include <cutl/details/boost/type_traits/is_convertible.hpp>
-#include <cutl/details/boost/type_traits/is_array.hpp>
-#ifdef __GNUC__
-#include <cutl/details/boost/type_traits/is_function.hpp>
-#endif
-#include <cutl/details/boost/type_traits/config.hpp>
-#if defined(BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION)
-# include <cutl/details/boost/type_traits/is_class.hpp>
-# include <cutl/details/boost/type_traits/is_union.hpp>
-#endif
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#ifndef BOOST_IS_ENUM
-#if !(defined(__BORLANDC__) && (__BORLANDC__ <= 0x551))
-
-namespace detail {
-
-#if defined(BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION)
-
-template <typename T>
-struct is_class_or_union
-{
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_class<T>::value
- , ::cutl_details_boost::is_union<T>::value
- >::value));
-};
-
-#else
-
-template <typename T>
-struct is_class_or_union
-{
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581))// we simply can't detect it this way.
- BOOST_STATIC_CONSTANT(bool, value = false);
-# else
- template <class U> static ::cutl_details_boost::type_traits::yes_type is_class_or_union_tester(void(U::*)(void));
-
-# if BOOST_WORKAROUND(BOOST_MSVC, == 1300) \
- || BOOST_WORKAROUND(__MWERKS__, <= 0x3000) // no SFINAE
- static ::cutl_details_boost::type_traits::no_type is_class_or_union_tester(...);
- BOOST_STATIC_CONSTANT(
- bool, value = sizeof(is_class_or_union_tester(0)) == sizeof(::cutl_details_boost::type_traits::yes_type));
-# else
- template <class U>
- static ::cutl_details_boost::type_traits::no_type is_class_or_union_tester(...);
- BOOST_STATIC_CONSTANT(
- bool, value = sizeof(is_class_or_union_tester<T>(0)) == sizeof(::cutl_details_boost::type_traits::yes_type));
-# endif
-# endif
-};
-#endif
-
-struct int_convertible
-{
- int_convertible(int);
-};
-
-// Don't evaluate convertibility to int_convertible unless the type
-// is non-arithmetic. This suppresses warnings with GCC.
-template <bool is_typename_arithmetic_or_reference = true>
-struct is_enum_helper
-{
- template <typename T> struct type
- {
- BOOST_STATIC_CONSTANT(bool, value = false);
- };
-};
-
-template <>
-struct is_enum_helper<false>
-{
- template <typename T> struct type
- : public ::cutl_details_boost::is_convertible<typename cutl_details_boost::add_reference<T>::type,::cutl_details_boost::detail::int_convertible>
- {
- };
-};
-
-template <typename T> struct is_enum_impl
-{
- //typedef ::cutl_details_boost::add_reference<T> ar_t;
- //typedef typename ar_t::type r_type;
-
-#if defined(__GNUC__)
-
-#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
-
- // We MUST check for is_class_or_union on conforming compilers in
- // order to correctly deduce that noncopyable types are not enums
- // (dwa 2002/04/15)...
- BOOST_STATIC_CONSTANT(bool, selector =
- (::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_arithmetic<T>::value
- , ::cutl_details_boost::is_reference<T>::value
- , ::cutl_details_boost::is_function<T>::value
- , is_class_or_union<T>::value
- , is_array<T>::value
- >::value));
-#else
- // ...however, not checking is_class_or_union on non-conforming
- // compilers prevents a dependency recursion.
- BOOST_STATIC_CONSTANT(bool, selector =
- (::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_arithmetic<T>::value
- , ::cutl_details_boost::is_reference<T>::value
- , ::cutl_details_boost::is_function<T>::value
- , is_array<T>::value
- >::value));
-#endif // BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
-
-#else // !defined(__GNUC__):
-
- BOOST_STATIC_CONSTANT(bool, selector =
- (::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_arithmetic<T>::value
- , ::cutl_details_boost::is_reference<T>::value
- , is_class_or_union<T>::value
- , is_array<T>::value
- >::value));
-
-#endif
-
-#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
- typedef ::cutl_details_boost::detail::is_enum_helper<
- ::cutl_details_boost::detail::is_enum_impl<T>::selector
- > se_t;
-#else
- typedef ::cutl_details_boost::detail::is_enum_helper<selector> se_t;
-#endif
-
- typedef typename se_t::template type<T> helper;
- BOOST_STATIC_CONSTANT(bool, value = helper::value);
-};
-
-// these help on compilers with no partial specialization support:
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void,false)
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void const,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void const volatile,false)
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,::cutl_details_boost::detail::is_enum_impl<T>::value)
-
-#else // __BORLANDC__
-//
-// buggy is_convertible prevents working
-// implementation of is_enum:
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,false)
-
-#endif
-
-#else // BOOST_IS_ENUM
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,BOOST_IS_ENUM(T))
-
-#endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_ENUM_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_float.hpp b/libcutl/cutl/details/boost/type_traits/is_float.hpp
deleted file mode 100644
index b1882b5..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_float.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
-#define BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-//* is a type T a floating-point type described in the standard (3.9.1p8)
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_float,T,false)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_float,float,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_float,double,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_float,long double,true)
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_function.hpp b/libcutl/cutl/details/boost/type_traits/is_function.hpp
deleted file mode 100644
index 2d39150..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_function.hpp
+++ /dev/null
@@ -1,111 +0,0 @@
-
-// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
-// Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
-//
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_FUNCTION_HPP_INCLUDED
-#define BOOST_TT_IS_FUNCTION_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/is_reference.hpp>
-#include <cutl/details/boost/type_traits/detail/false_result.hpp>
-#include <cutl/details/boost/config.hpp>
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
-# include <cutl/details/boost/type_traits/detail/is_function_ptr_helper.hpp>
-#else
-# include <cutl/details/boost/type_traits/detail/is_function_ptr_tester.hpp>
-# include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-// is a type a function?
-// Please note that this implementation is unnecessarily complex:
-// we could just use !is_convertible<T*, const volatile void*>::value,
-// except that some compilers erroneously allow conversions from
-// function pointers to void*.
-
-namespace cutl_details_boost {
-
-#if !defined( __CODEGEARC__ )
-
-namespace detail {
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
-template<bool is_ref = true>
-struct is_function_chooser
- : public ::cutl_details_boost::type_traits::false_result
-{
-};
-
-template <>
-struct is_function_chooser<false>
-{
- template< typename T > struct result_
- : public ::cutl_details_boost::type_traits::is_function_ptr_helper<T*>
- {
- };
-};
-
-template <typename T>
-struct is_function_impl
- : public is_function_chooser< ::cutl_details_boost::is_reference<T>::value >
- ::BOOST_NESTED_TEMPLATE result_<T>
-{
-};
-
-#else
-
-template <typename T>
-struct is_function_impl
-{
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(push)
-#pragma warning(disable:6334)
-#endif
- static T* t;
- BOOST_STATIC_CONSTANT(
- bool, value = sizeof(::cutl_details_boost::type_traits::is_function_ptr_tester(t))
- == sizeof(::cutl_details_boost::type_traits::yes_type)
- );
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(pop)
-#endif
-};
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-template <typename T>
-struct is_function_impl<T&> : public false_type
-{};
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-template <typename T>
-struct is_function_impl<T&&> : public false_type
-{};
-#endif
-#endif
-
-#endif
-
-} // namespace detail
-
-#endif // !defined( __CODEGEARC__ )
-
-#if defined( __CODEGEARC__ )
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,__is_function(T))
-#else
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,::cutl_details_boost::detail::is_function_impl<T>::value)
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_function,T&&,false)
-#endif
-#endif
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_FUNCTION_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_integral.hpp b/libcutl/cutl/details/boost/type_traits/is_integral.hpp
deleted file mode 100644
index f5203bb..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_integral.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
-#define BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-//* is a type T an [cv-qualified-] integral type described in the standard (3.9.1p3)
-// as an extension we include long long, as this is likely to be added to the
-// standard at a later date
-#if defined( __CODEGEARC__ )
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_integral,T,__is_integral(T))
-#else
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_integral,T,false)
-
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned char,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned short,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned int,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned long,true)
-
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed char,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed short,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed int,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed long,true)
-
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,bool,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,char,true)
-
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-// If the following line fails to compile and you're using the Intel
-// compiler, see http://lists.boost.org/MailArchives/boost-users/msg06567.php,
-// and define BOOST_NO_INTRINSIC_WCHAR_T on the command line.
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,wchar_t,true)
-#endif
-
-// Same set of integral types as in boost/type_traits/integral_promotion.hpp.
-// Please, keep in sync. -- Alexander Nasonov
-#if (defined(BOOST_MSVC) && (BOOST_MSVC < 1300)) \
- || (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \
- || (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER < 1300))
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int8,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int8,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int16,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int16,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int32,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int32,true)
-#ifdef __BORLANDC__
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int64,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int64,true)
-#endif
-#endif
-
-# if defined(BOOST_HAS_LONG_LONG)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral, ::cutl_details_boost::ulong_long_type,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral, ::cutl_details_boost::long_long_type,true)
-#elif defined(BOOST_HAS_MS_INT64)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int64,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int64,true)
-#endif
-
-#ifdef BOOST_HAS_INT128
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,cutl_details_boost::int128_type,true)
-BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,cutl_details_boost::uint128_type,true)
-#endif
-
-#endif // non-CodeGear implementation
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_lvalue_reference.hpp b/libcutl/cutl/details/boost/type_traits/is_lvalue_reference.hpp
deleted file mode 100644
index f4103d9..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_lvalue_reference.hpp
+++ /dev/null
@@ -1,118 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Howard Hinnant and John Maddock 2000.
-// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
-
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-// Fixed is_pointer, is_lvalue_reference, is_const, is_volatile, is_same,
-// is_member_pointer based on the Simulated Partial Specialization work
-// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
-// http://groups.yahoo.com/group/boost/message/5441
-// Some workarounds in here use ideas suggested from "Generic<Programming>:
-// Mappings between Types and Values"
-// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_LVALUE_REFERENCE_HPP_INCLUDED
-#define BOOST_TT_IS_LVALUE_REFERENCE_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/config.hpp>
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-# include <cutl/details/boost/type_traits/detail/wrap.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#if defined( __CODEGEARC__ )
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_lvalue_reference,T,__is_reference(T))
-#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_lvalue_reference,T,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T&,true)
-
-#if defined(BOOST_ILLEGAL_CV_REFERENCES)
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T& const,true)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T& volatile,true)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T& const volatile,true)
-#endif
-
-#if defined(__GNUC__) && (__GNUC__ < 3)
-// these allow us to work around illegally cv-qualified reference
-// types.
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T const ,::cutl_details_boost::is_lvalue_reference<T>::value)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T volatile ,::cutl_details_boost::is_lvalue_reference<T>::value)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T const volatile ,::cutl_details_boost::is_lvalue_reference<T>::value)
-// However, the above specializations confuse gcc 2.96 unless we also
-// supply these specializations for array types
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_lvalue_reference,T[N],false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_lvalue_reference,const T[N],false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_lvalue_reference,volatile T[N],false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_lvalue_reference,const volatile T[N],false)
-#endif
-
-#else
-
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4181 4097)
-#endif
-
-namespace detail {
-
-using ::cutl_details_boost::type_traits::yes_type;
-using ::cutl_details_boost::type_traits::no_type;
-using ::cutl_details_boost::type_traits::wrap;
-
-template <class T> T&(* is_lvalue_reference_helper1(wrap<T>) )(wrap<T>);
-char is_lvalue_reference_helper1(...);
-
-template <class T> no_type is_lvalue_reference_helper2(T&(*)(wrap<T>));
-yes_type is_lvalue_reference_helper2(...);
-
-template <typename T>
-struct is_lvalue_reference_impl
-{
- BOOST_STATIC_CONSTANT(
- bool, value = sizeof(
- ::cutl_details_boost::detail::is_lvalue_reference_helper2(
- ::cutl_details_boost::detail::is_lvalue_reference_helper1(::cutl_details_boost::type_traits::wrap<T>()))) == 1
- );
-};
-
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_lvalue_reference,void,false)
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_lvalue_reference,void const,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_lvalue_reference,void volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_lvalue_reference,void const volatile,false)
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_lvalue_reference,T,::cutl_details_boost::detail::is_lvalue_reference_impl<T>::value)
-
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-
diff --git a/libcutl/cutl/details/boost/type_traits/is_member_function_pointer.hpp b/libcutl/cutl/details/boost/type_traits/is_member_function_pointer.hpp
deleted file mode 100644
index ffea213..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_member_function_pointer.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
-#define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
- //
- // Note: we use the "workaround" version for MSVC because it works for
- // __stdcall etc function types, where as the partial specialisation
- // version does not do so.
- //
-# include <cutl/details/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp>
-# include <cutl/details/boost/type_traits/remove_cv.hpp>
-#else
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_array.hpp>
-# include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-# include <cutl/details/boost/type_traits/detail/false_result.hpp>
-# include <cutl/details/boost/type_traits/detail/ice_or.hpp>
-# include <cutl/details/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#if defined( __CODEGEARC__ )
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_function_pointer,T,__is_member_function_pointer( T ))
-#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(
- is_member_function_pointer
- , T
- , ::cutl_details_boost::type_traits::is_mem_fun_pointer_impl<typename remove_cv<T>::type>::value
- )
-
-#else
-
-namespace detail {
-
-#ifndef __BORLANDC__
-
-template <bool>
-struct is_mem_fun_pointer_select
- : public ::cutl_details_boost::type_traits::false_result
-{
-};
-
-template <>
-struct is_mem_fun_pointer_select<false>
-{
- template <typename T> struct result_
- {
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(push)
-#pragma warning(disable:6334)
-#endif
- static T* make_t;
- typedef result_<T> self_type;
-
- BOOST_STATIC_CONSTANT(
- bool, value = (
- 1 == sizeof(::cutl_details_boost::type_traits::is_mem_fun_pointer_tester(self_type::make_t))
- ));
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(pop)
-#endif
- };
-};
-
-template <typename T>
-struct is_member_function_pointer_impl
- : public is_mem_fun_pointer_select<
- ::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_reference<T>::value
- , ::cutl_details_boost::is_array<T>::value
- >::value
- >::template result_<T>
-{
-};
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <typename T>
-struct is_member_function_pointer_impl<T&> : public false_type{};
-#endif
-
-#else // Borland C++
-
-template <typename T>
-struct is_member_function_pointer_impl
-{
- static T* m_t;
- BOOST_STATIC_CONSTANT(
- bool, value =
- (1 == sizeof(type_traits::is_mem_fun_pointer_tester(m_t))) );
-};
-
-template <typename T>
-struct is_member_function_pointer_impl<T&>
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-#endif
-
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_function_pointer,void,false)
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_function_pointer,void const,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_function_pointer,void volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_function_pointer,void const volatile,false)
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_function_pointer,T,::cutl_details_boost::detail::is_member_function_pointer_impl<T>::value)
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_member_pointer.hpp b/libcutl/cutl/details/boost/type_traits/is_member_pointer.hpp
deleted file mode 100644
index 8e5acf0..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_member_pointer.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Howard Hinnant and John Maddock 2000.
-// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
-
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
-// is_member_pointer based on the Simulated Partial Specialization work
-// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
-// http://groups.yahoo.com/group/boost/message/5441
-// Some workarounds in here use ideas suggested from "Generic<Programming>:
-// Mappings between Types and Values"
-// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
-#define BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__BORLANDC__, < 0x600)
-# include <cutl/details/boost/type_traits/is_member_function_pointer.hpp>
-#else
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_array.hpp>
-# include <cutl/details/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp>
-# include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-# include <cutl/details/boost/type_traits/detail/false_result.hpp>
-# include <cutl/details/boost/type_traits/detail/ice_or.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#if defined( __CODEGEARC__ )
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,__is_member_pointer(T))
-#elif BOOST_WORKAROUND(__BORLANDC__, < 0x600)
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true)
-
-#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,::cutl_details_boost::is_member_function_pointer<T>::value)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true)
-
-#if !BOOST_WORKAROUND(__MWERKS__,<=0x3003) && !BOOST_WORKAROUND(__IBMCPP__, <=600)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*const,true)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*volatile,true)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*const volatile,true)
-#endif
-
-#else // no partial template specialization
-
-namespace detail {
-
-template <typename R, typename T>
-::cutl_details_boost::type_traits::yes_type BOOST_TT_DECL is_member_pointer_tester(R T::*const volatile*);
-::cutl_details_boost::type_traits::no_type BOOST_TT_DECL is_member_pointer_tester(...);
-
-template <bool>
-struct is_member_pointer_select
- : public ::cutl_details_boost::type_traits::false_result
-{
-};
-
-template <>
-struct is_member_pointer_select<false>
-{
- template <typename T> struct result_
- {
- static T* make_t();
- BOOST_STATIC_CONSTANT(
- bool, value =
- (::cutl_details_boost::type_traits::ice_or<
- (1 == sizeof(::cutl_details_boost::type_traits::is_mem_fun_pointer_tester(make_t()))),
- (1 == sizeof(is_member_pointer_tester(make_t())))
- >::value) );
- };
-};
-
-template <typename T>
-struct is_member_pointer_impl
- : public is_member_pointer_select<
- ::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_reference<T>::value
- , ::cutl_details_boost::is_array<T>::value
- >::value
- >::template result_<T>
-{
-};
-
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_pointer,void,false)
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_pointer,void const,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_pointer,void volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_pointer,void const volatile,false)
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,::cutl_details_boost::detail::is_member_pointer_impl<T>::value)
-
-#endif // __BORLANDC__
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_pod.hpp b/libcutl/cutl/details/boost/type_traits/is_pod.hpp
deleted file mode 100644
index 6cb954e..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_pod.hpp
+++ /dev/null
@@ -1,145 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_POD_HPP_INCLUDED
-#define BOOST_TT_IS_POD_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/config.hpp>
-#include <cutl/details/boost/type_traits/is_void.hpp>
-#include <cutl/details/boost/type_traits/is_scalar.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_or.hpp>
-#include <cutl/details/boost/type_traits/intrinsics.hpp>
-
-#include <cstddef>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-#ifndef BOOST_IS_POD
-#define BOOST_INTERNAL_IS_POD(T) false
-#else
-#define BOOST_INTERNAL_IS_POD(T) BOOST_IS_POD(T)
-#endif
-
-namespace cutl_details_boost {
-
-// forward declaration, needed by 'is_pod_array_helper' template below
-template< typename T > struct is_POD;
-
-namespace detail {
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-template <typename T> struct is_pod_impl
-{
- BOOST_STATIC_CONSTANT(
- bool, value =
- (::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_scalar<T>::value,
- ::cutl_details_boost::is_void<T>::value,
- BOOST_INTERNAL_IS_POD(T)
- >::value));
-};
-
-#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
-template <typename T, std::size_t sz>
-struct is_pod_impl<T[sz]>
- : public is_pod_impl<T>
-{
-};
-#endif
-
-#else
-
-template <bool is_array = false>
-struct is_pod_helper
-{
- template <typename T> struct result_
- {
- BOOST_STATIC_CONSTANT(
- bool, value =
- (::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_scalar<T>::value,
- ::cutl_details_boost::is_void<T>::value,
- BOOST_INTERNAL_IS_POD(T)
- >::value));
- };
-};
-
-template <bool b>
-struct bool_to_yes_no_type
-{
- typedef ::cutl_details_boost::type_traits::no_type type;
-};
-
-template <>
-struct bool_to_yes_no_type<true>
-{
- typedef ::cutl_details_boost::type_traits::yes_type type;
-};
-
-template <typename ArrayType>
-struct is_pod_array_helper
-{
- enum { is_pod = ::cutl_details_boost::is_POD<ArrayType>::value }; // MSVC workaround
- typedef typename bool_to_yes_no_type<is_pod>::type type;
- type instance() const;
-};
-
-template <typename T>
-is_pod_array_helper<T> is_POD_array(T*);
-
-template <>
-struct is_pod_helper<true>
-{
- template <typename T> struct result_
- {
- static T& help();
- BOOST_STATIC_CONSTANT(bool, value =
- sizeof(is_POD_array(help()).instance()) == sizeof(::cutl_details_boost::type_traits::yes_type)
- );
- };
-};
-
-
-template <typename T> struct is_pod_impl
-{
- BOOST_STATIC_CONSTANT(
- bool, value = (
- ::cutl_details_boost::detail::is_pod_helper<
- ::cutl_details_boost::is_array<T>::value
- >::template result_<T>::value
- )
- );
-};
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-// the following help compilers without partial specialization support:
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,void,true)
-
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,void const,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,void volatile,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,void const volatile,true)
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pod,T,::cutl_details_boost::detail::is_pod_impl<T>::value)
-// is_POD is the old depricated name for this trait, do not use this as it may
-// be removed in future without warning!!
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_POD,T,::cutl_details_boost::is_pod<T>::value)
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#undef BOOST_INTERNAL_IS_POD
-
-#endif // BOOST_TT_IS_POD_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_pointer.hpp b/libcutl/cutl/details/boost/type_traits/is_pointer.hpp
deleted file mode 100644
index 6e3779f..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_pointer.hpp
+++ /dev/null
@@ -1,162 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Howard Hinnant and John Maddock 2000.
-// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
-
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
-// is_member_pointer based on the Simulated Partial Specialization work
-// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
-// http://groups.yahoo.com/group/boost/message/5441
-// Some workarounds in here use ideas suggested from "Generic<Programming>:
-// Mappings between Types and Values"
-// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_POINTER_HPP_INCLUDED
-#define BOOST_TT_IS_POINTER_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/is_member_pointer.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_and.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_not.hpp>
-#include <cutl/details/boost/type_traits/config.hpp>
-#if !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-#include <cutl/details/boost/type_traits/remove_cv.hpp>
-#endif
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_array.hpp>
-# include <cutl/details/boost/type_traits/detail/is_function_ptr_tester.hpp>
-# include <cutl/details/boost/type_traits/detail/false_result.hpp>
-# include <cutl/details/boost/type_traits/detail/ice_or.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#if defined( __CODEGEARC__ )
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,__is_pointer(T))
-#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-namespace detail {
-
-template< typename T > struct is_pointer_helper
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-# define TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC(helper,sp,result) \
-template< typename T > struct helper<sp> \
-{ \
- BOOST_STATIC_CONSTANT(bool, value = result); \
-}; \
-/**/
-
-TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC(is_pointer_helper,T*,true)
-
-# undef TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC
-
-template< typename T >
-struct is_pointer_impl
-{
-#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_and<
- ::cutl_details_boost::detail::is_pointer_helper<T>::value
- , ::cutl_details_boost::type_traits::ice_not<
- ::cutl_details_boost::is_member_pointer<T>::value
- >::value
- >::value)
- );
-#else
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_and<
- ::cutl_details_boost::detail::is_pointer_helper<typename remove_cv<T>::type>::value
- , ::cutl_details_boost::type_traits::ice_not<
- ::cutl_details_boost::is_member_pointer<T>::value
- >::value
- >::value)
- );
-#endif
-};
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,::cutl_details_boost::detail::is_pointer_impl<T>::value)
-
-#if defined(__BORLANDC__) && !defined(__COMO__) && (__BORLANDC__ < 0x600)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_pointer,T&,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_pointer,T& const,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_pointer,T& volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_pointer,T& const volatile,false)
-#endif
-
-#else // no partial template specialization
-
-namespace detail {
-
-struct pointer_helper
-{
- pointer_helper(const volatile void*);
-};
-
-yes_type BOOST_TT_DECL is_pointer_tester(pointer_helper);
-no_type BOOST_TT_DECL is_pointer_tester(...);
-
-template <bool>
-struct is_pointer_select
- : public ::cutl_details_boost::type_traits::false_result
-{
-};
-
-template <>
-struct is_pointer_select<false>
-{
- template <typename T> struct result_
- {
- static T& make_t();
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_or<
- (1 == sizeof(is_pointer_tester(make_t()))),
- (1 == sizeof(type_traits::is_function_ptr_tester(make_t())))
- >::value));
- };
-};
-
-template <typename T>
-struct is_pointer_impl
- : public is_pointer_select<
- ::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_reference<T>::value
- , ::cutl_details_boost::is_array<T>::value
- >::value
- >::template result_<T>
-{
-};
-
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pointer,void,false)
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pointer,void const,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pointer,void volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pointer,void const volatile,false)
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,::cutl_details_boost::detail::is_pointer_impl<T>::value)
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_POINTER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_polymorphic.hpp b/libcutl/cutl/details/boost/type_traits/is_polymorphic.hpp
deleted file mode 100644
index b2a4a0d..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_polymorphic.hpp
+++ /dev/null
@@ -1,114 +0,0 @@
-// (C) Copyright John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_POLYMORPHIC_HPP
-#define BOOST_TT_IS_POLYMORPHIC_HPP
-
-#include <cutl/details/boost/type_traits/intrinsics.hpp>
-#ifndef BOOST_IS_POLYMORPHIC
-#include <cutl/details/boost/type_traits/is_class.hpp>
-#include <cutl/details/boost/type_traits/remove_cv.hpp>
-#endif
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-namespace cutl_details_boost{
-
-#ifndef BOOST_IS_POLYMORPHIC
-
-namespace detail{
-
-template <class T>
-struct is_polymorphic_imp1
-{
-# if BOOST_WORKAROUND(__MWERKS__, <= 0x2407) // CWPro7 should return false always.
- typedef char d1, (&d2)[2];
-# else
- typedef typename remove_cv<T>::type ncvT;
- struct d1 : public ncvT
- {
- d1();
-# if !defined(__GNUC__) // this raises warnings with some classes, and buys nothing with GCC
- ~d1()throw();
-# endif
- char padding[256];
- private:
- // keep some picky compilers happy:
- d1(const d1&);
- d1& operator=(const d1&);
- };
- struct d2 : public ncvT
- {
- d2();
- virtual ~d2()throw();
-# if !defined(BOOST_MSVC) && !defined(__ICL)
- // for some reason this messes up VC++ when T has virtual bases,
- // probably likewise for compilers that use the same ABI:
- struct unique{};
- virtual void unique_name_to_boost5487629(unique*);
-# endif
- char padding[256];
- private:
- // keep some picky compilers happy:
- d2(const d2&);
- d2& operator=(const d2&);
- };
-# endif
- BOOST_STATIC_CONSTANT(bool, value = (sizeof(d2) == sizeof(d1)));
-};
-
-template <class T>
-struct is_polymorphic_imp2
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-template <bool is_class>
-struct is_polymorphic_selector
-{
- template <class T>
- struct rebind
- {
- typedef is_polymorphic_imp2<T> type;
- };
-};
-
-template <>
-struct is_polymorphic_selector<true>
-{
- template <class T>
- struct rebind
- {
- typedef is_polymorphic_imp1<T> type;
- };
-};
-
-template <class T>
-struct is_polymorphic_imp
-{
- typedef is_polymorphic_selector< ::cutl_details_boost::is_class<T>::value> selector;
- typedef typename selector::template rebind<T> binder;
- typedef typename binder::type imp_type;
- BOOST_STATIC_CONSTANT(bool, value = imp_type::value);
-};
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_polymorphic,T,::cutl_details_boost::detail::is_polymorphic_imp<T>::value)
-
-#else // BOOST_IS_POLYMORPHIC
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_polymorphic,T,BOOST_IS_POLYMORPHIC(T))
-
-#endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif
diff --git a/libcutl/cutl/details/boost/type_traits/is_reference.hpp b/libcutl/cutl/details/boost/type_traits/is_reference.hpp
deleted file mode 100644
index d2bbf4e..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_reference.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Howard Hinnant and John Maddock 2000, 2010.
-// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
-
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-#define BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/config.hpp>
-#include <cutl/details/boost/type_traits/is_lvalue_reference.hpp>
-#include <cutl/details/boost/type_traits/is_rvalue_reference.hpp>
-#include <cutl/details/boost/type_traits/ice.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-namespace detail {
-
-template <typename T>
-struct is_reference_impl
-{
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_lvalue_reference<T>::value, ::cutl_details_boost::is_rvalue_reference<T>::value
- >::value));
-};
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,::cutl_details_boost::detail::is_reference_impl<T>::value)
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-
diff --git a/libcutl/cutl/details/boost/type_traits/is_rvalue_reference.hpp b/libcutl/cutl/details/boost/type_traits/is_rvalue_reference.hpp
deleted file mode 100644
index fbf600b..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_rvalue_reference.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-
-// (C) John Maddock 2010.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_RVALUE_REFERENCE_HPP_INCLUDED
-#define BOOST_TT_IS_RVALUE_REFERENCE_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/config.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_rvalue_reference,T,false)
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_rvalue_reference,T&&,true)
-#endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-
diff --git a/libcutl/cutl/details/boost/type_traits/is_same.hpp b/libcutl/cutl/details/boost/type_traits/is_same.hpp
deleted file mode 100644
index 7f121c2..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_same.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Howard Hinnant and John Maddock 2000.
-// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
-
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
-// is_member_pointer based on the Simulated Partial Specialization work
-// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
-// http://groups.yahoo.com/group/boost/message/5441
-// Some workarounds in here use ideas suggested from "Generic<Programming>:
-// Mappings between Types and Values"
-// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_SAME_HPP_INCLUDED
-#define BOOST_TT_IS_SAME_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/config.hpp>
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-#include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_and.hpp>
-#include <cutl/details/boost/type_traits/is_reference.hpp>
-#endif
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_same,T,U,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename T,is_same,T,T,true)
-#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
-// without this, Borland's compiler gives the wrong answer for
-// references to arrays:
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename T,is_same,T&,T&,true)
-#endif
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-namespace detail {
-
-#ifdef BOOST_MSVC
-// the following VC6 specific implementation is *NOT* legal
-// C++, but has the advantage that it works for incomplete
-// types.
-
-template< typename T1 >
-struct is_same_part_1
-{
- template<typename T2> struct part_2 { enum { value = false }; };
- template<> struct part_2<T1> { enum { value = true }; };
-};
-
-template< typename T1, typename T2 >
-struct is_same_impl
-{
- enum { value = cutl_details_boost::detail::is_same_part_1<T1>::template part_2<T2>::value };
-};
-
-#else // generic "no-partial-specialization" version
-
-template <typename T>
-::cutl_details_boost::type_traits::yes_type
-BOOST_TT_DECL is_same_tester(T*, T*);
-
-::cutl_details_boost::type_traits::no_type
-BOOST_TT_DECL is_same_tester(...);
-
-template <typename T, typename U>
-struct is_same_impl
-{
- static T t;
- static U u;
-
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_and<
- (sizeof(type_traits::yes_type) == sizeof(cutl_details_boost::detail::is_same_tester(&t,&u))),
- (::cutl_details_boost::is_reference<T>::value == ::cutl_details_boost::is_reference<U>::value),
- (sizeof(T) == sizeof(U))
- >::value));
-};
-
-#endif // BOOST_MSVC
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_same,T,U,(::cutl_details_boost::detail::is_same_impl<T,U>::value))
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_SAME_HPP_INCLUDED
-
diff --git a/libcutl/cutl/details/boost/type_traits/is_scalar.hpp b/libcutl/cutl/details/boost/type_traits/is_scalar.hpp
deleted file mode 100644
index 12f9a85..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_scalar.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_SCALAR_HPP_INCLUDED
-#define BOOST_TT_IS_SCALAR_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/is_arithmetic.hpp>
-#include <cutl/details/boost/type_traits/is_enum.hpp>
-#include <cutl/details/boost/type_traits/is_pointer.hpp>
-#include <cutl/details/boost/type_traits/is_member_pointer.hpp>
-#include <cutl/details/boost/type_traits/detail/ice_or.hpp>
-#include <cutl/details/boost/config.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-namespace detail {
-
-template <typename T>
-struct is_scalar_impl
-{
- BOOST_STATIC_CONSTANT(bool, value =
- (::cutl_details_boost::type_traits::ice_or<
- ::cutl_details_boost::is_arithmetic<T>::value,
- ::cutl_details_boost::is_enum<T>::value,
- ::cutl_details_boost::is_pointer<T>::value,
- ::cutl_details_boost::is_member_pointer<T>::value
- >::value));
-};
-
-// these specializations are only really needed for compilers
-// without partial specialization support:
-template <> struct is_scalar_impl<void>{ BOOST_STATIC_CONSTANT(bool, value = false ); };
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <> struct is_scalar_impl<void const>{ BOOST_STATIC_CONSTANT(bool, value = false ); };
-template <> struct is_scalar_impl<void volatile>{ BOOST_STATIC_CONSTANT(bool, value = false ); };
-template <> struct is_scalar_impl<void const volatile>{ BOOST_STATIC_CONSTANT(bool, value = false ); };
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_scalar,T,::cutl_details_boost::detail::is_scalar_impl<T>::value)
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_SCALAR_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_union.hpp b/libcutl/cutl/details/boost/type_traits/is_union.hpp
deleted file mode 100644
index 2a4e482..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_union.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_UNION_HPP_INCLUDED
-#define BOOST_TT_IS_UNION_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/remove_cv.hpp>
-#include <cutl/details/boost/type_traits/config.hpp>
-#include <cutl/details/boost/type_traits/intrinsics.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-namespace detail {
-#ifndef __GNUC__
-template <typename T> struct is_union_impl
-{
- typedef typename remove_cv<T>::type cvt;
-#ifdef BOOST_IS_UNION
- BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(cvt));
-#else
- BOOST_STATIC_CONSTANT(bool, value = false);
-#endif
-};
-#else
-//
-// using remove_cv here generates a whole load of needless
-// warnings with gcc, since it doesn't do any good with gcc
-// in any case (at least at present), just remove it:
-//
-template <typename T> struct is_union_impl
-{
-#ifdef BOOST_IS_UNION
- BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(T));
-#else
- BOOST_STATIC_CONSTANT(bool, value = false);
-#endif
-};
-#endif
-} // namespace detail
-
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_union,T,::cutl_details_boost::detail::is_union_impl<T>::value)
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_UNION_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_void.hpp b/libcutl/cutl/details/boost/type_traits/is_void.hpp
deleted file mode 100644
index a6a97db..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_void.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_VOID_HPP_INCLUDED
-#define BOOST_TT_IS_VOID_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-//* is a type T void - is_void<T>
-#if defined( __CODEGEARC__ )
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,__is_void(T))
-#else
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,false)
-BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void,true)
-
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void const,true)
-BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void volatile,true)
-BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void const volatile,true)
-#endif
-
-#endif // non-CodeGear implementation
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_VOID_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/is_volatile.hpp b/libcutl/cutl/details/boost/type_traits/is_volatile.hpp
deleted file mode 100644
index 32e8403..0000000
--- a/libcutl/cutl/details/boost/type_traits/is_volatile.hpp
+++ /dev/null
@@ -1,152 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Howard Hinnant and John Maddock 2000.
-// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
-
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
-// is_member_pointer based on the Simulated Partial Specialization work
-// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
-// http://groups.yahoo.com/group/boost/message/5441
-// Some workarounds in here use ideas suggested from "Generic<Programming>:
-// Mappings between Types and Values"
-// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_VOLATILE_HPP_INCLUDED
-#define BOOST_TT_IS_VOLATILE_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# include <cutl/details/boost/type_traits/detail/cv_traits_impl.hpp>
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
-# include <cutl/details/boost/type_traits/remove_bounds.hpp>
-# endif
-#else
-# include <cutl/details/boost/type_traits/is_reference.hpp>
-# include <cutl/details/boost/type_traits/is_array.hpp>
-# include <cutl/details/boost/type_traits/detail/yes_no_type.hpp>
-# include <cutl/details/boost/type_traits/detail/false_result.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-namespace detail{
-template <class T>
-struct is_volatile_rval_filter
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
- BOOST_STATIC_CONSTANT(bool, value = ::cutl_details_boost::detail::cv_traits_imp<typename cutl_details_boost::remove_bounds<T>::type*>::is_volatile);
-#else
- BOOST_STATIC_CONSTANT(bool, value = ::cutl_details_boost::detail::cv_traits_imp<T*>::is_volatile);
-#endif
-};
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-//
-// We can't filter out rvalue_references at the same level as
-// references or we get ambiguities from msvc:
-//
-template <class T>
-struct is_volatile_rval_filter<T&&>
-{
- BOOST_STATIC_CONSTANT(bool, value = false);
-};
-#endif
-}
-
-#if defined( __CODEGEARC__ )
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,__is_volatile(T))
-#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-//* is a type T declared volatile - is_volatile<T>
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,::cutl_details_boost::detail::is_volatile_rval_filter<T>::value)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T&,false)
-
-#if defined(BOOST_ILLEGAL_CV_REFERENCES)
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T& const,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T& volatile,false)
-BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T& const volatile,false)
-#endif
-
-#else
-
-namespace detail {
-
-using ::cutl_details_boost::type_traits::yes_type;
-using ::cutl_details_boost::type_traits::no_type;
-
-yes_type is_volatile_tester(void const volatile*);
-no_type is_volatile_tester(void const*);
-
-template <bool is_ref, bool array>
-struct is_volatile_helper
- : public ::cutl_details_boost::type_traits::false_result
-{
-};
-
-template <>
-struct is_volatile_helper<false,false>
-{
- template <typename T> struct result_
- {
- static T* t;
- BOOST_STATIC_CONSTANT(bool, value = (
- sizeof(cutl_details_boost::detail::yes_type) == sizeof(cutl_details_boost::detail::is_volatile_tester(t))
- ));
- };
-};
-
-template <>
-struct is_volatile_helper<false,true>
-{
- template <typename T> struct result_
- {
- static T t;
- BOOST_STATIC_CONSTANT(bool, value = (
- sizeof(cutl_details_boost::detail::yes_type) == sizeof(cutl_details_boost::detail::is_volatile_tester(&t))
- ));
- };
-};
-
-template <typename T>
-struct is_volatile_impl
- : public is_volatile_helper<
- is_reference<T>::value
- , is_array<T>::value
- >::template result_<T>
-{
-};
-
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_volatile,void,false)
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_volatile,void const,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_volatile,void volatile,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_volatile,void const volatile,true)
-#endif
-
-} // namespace detail
-
-//* is a type T declared volatile - is_volatile<T>
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,::cutl_details_boost::detail::is_volatile_impl<T>::value)
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_IS_VOLATILE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/msvc/remove_bounds.hpp b/libcutl/cutl/details/boost/type_traits/msvc/remove_bounds.hpp
deleted file mode 100644
index 9aeb9f4..0000000
--- a/libcutl/cutl/details/boost/type_traits/msvc/remove_bounds.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (C) 2004 Peder Holt
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_BOUNDS_HOLT_2004_0827
-#define BOOST_TYPE_TRAITS_MSVC_REMOVE_BOUNDS_HOLT_2004_0827
-
-#include <cutl/details/boost/type_traits/msvc/typeof.hpp>
-#include <cutl/details/boost/type_traits/is_array.hpp>
-
-namespace cutl_details_boost {
- namespace detail {
- template<bool IsArray>
- struct remove_bounds_impl_typeof {
- template<typename T,typename ID>
- struct inner {
- typedef T type;
- };
- };
- template<>
- struct remove_bounds_impl_typeof<true> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(U[]);
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( *((T*)NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- };
- } //namespace detail
-
- template<typename T>
- struct remove_bounds {
- typedef typename cutl_details_boost::detail::remove_bounds_impl_typeof<
- cutl_details_boost::is_array<T>::value
- >::template inner<T,remove_bounds<T> >::type type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_bounds,T)
- };
-} //namespace cutl_details_boost
-
-#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_BOUNDS_HOLT_2004_0827
-
diff --git a/libcutl/cutl/details/boost/type_traits/msvc/remove_const.hpp b/libcutl/cutl/details/boost/type_traits/msvc/remove_const.hpp
deleted file mode 100644
index a9650ee..0000000
--- a/libcutl/cutl/details/boost/type_traits/msvc/remove_const.hpp
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright (C) 2004 Peder Holt
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_CONST_HOLT_2004_0828
-#define BOOST_TYPE_TRAITS_MSVC_REMOVE_CONST_HOLT_2004_0828
-
-#include <cutl/details/boost/type_traits/msvc/typeof.hpp>
-#include <cutl/details/boost/type_traits/is_volatile.hpp>
-#include <cutl/details/boost/type_traits/is_const.hpp>
-#include <cutl/details/boost/type_traits/is_pointer.hpp>
-#include <cutl/details/boost/type_traits/is_array.hpp>
-
-namespace cutl_details_boost {
- namespace detail {
- template<bool IsPointer,bool IsArray,bool IsConst,bool IsVolatile>
- struct remove_const_impl_typeof {
- template<typename T,typename ID>
- struct inner {
- typedef T type;
- };
- template<typename T>
- struct transform_type {
- typedef T type;
- };
- };
- template<> //Const
- struct remove_const_impl_typeof<false,false,true,false> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(U const&(*)());
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T& type;
- };
- };
- template<> //CV
- struct remove_const_impl_typeof<false,false,true,true> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U volatile,ID> test(U const volatile&(*)());
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T& type;
- };
- };
- template<> //Const Pointer
- struct remove_const_impl_typeof<true,false,true,false> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(void(*)(U const[]));
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T type[];
- };
- };
- template<> //CV Pointer
- struct remove_const_impl_typeof<true,false,true,true> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U volatile,ID> test(void(*)(U const volatile[]));
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T type[];
- };
- };
- template<> //Const Array
- struct remove_const_impl_typeof<false,true,true,false> {
- template<typename T,typename ID>
- struct inner {
- BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
-
- template<typename U>
- static msvc_register_type<U[value],ID> test(void(*)(U const[]));
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T type;
- };
- };
-
- template<> //CV Array
- struct remove_const_impl_typeof<false,true,true,true> {
- template<typename T,typename ID>
- struct inner {
- BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
-
- template<typename U>
- static msvc_register_type<U volatile[value],ID> test(void(*)(U const volatile[]));
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T type;
- };
- };
-
- } //namespace detail
-
- template<typename T>
- struct remove_const {
- typedef cutl_details_boost::detail::remove_const_impl_typeof<
- cutl_details_boost::is_pointer<T>::value,
- cutl_details_boost::is_array<T>::value,
- cutl_details_boost::is_const<T>::value,
- cutl_details_boost::is_volatile<T>::value
- > remove_const_type;
- typedef typename
- remove_const_type::template inner<
- typename remove_const_type::template transform_type<T>::type,
- remove_const<T>
- >::type
- type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_const,T)
- };
-}//namespace cutl_details_boost
-
-#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_CONST_HOLT_2004_0828
diff --git a/libcutl/cutl/details/boost/type_traits/msvc/remove_cv.hpp b/libcutl/cutl/details/boost/type_traits/msvc/remove_cv.hpp
deleted file mode 100644
index bb43bb7..0000000
--- a/libcutl/cutl/details/boost/type_traits/msvc/remove_cv.hpp
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright (C) 2004 Peder Holt
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_CV_HOLT_2004_0901
-#define BOOST_TYPE_TRAITS_MSVC_REMOVE_CV_HOLT_2004_0901
-
-#include <cutl/details/boost/type_traits/msvc/typeof.hpp>
-#include <cutl/details/boost/type_traits/is_volatile.hpp>
-#include <cutl/details/boost/type_traits/is_const.hpp>
-#include <cutl/details/boost/type_traits/is_pointer.hpp>
-#include <cutl/details/boost/type_traits/is_array.hpp>
-
-namespace cutl_details_boost {
- namespace detail {
- template<bool IsPointer,bool IsArray,bool IsConst,bool IsVolatile>
- struct remove_cv_impl_typeof {
- template<typename T,typename ID>
- struct inner {
- typedef T type;
- };
- template<typename T>
- struct transform_type {
- typedef T type;
- };
- };
- template<> //Volatile
- struct remove_cv_impl_typeof<false,false,false,true> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(U volatile&(*)());
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T& type;
- };
- };
- template<> //Const
- struct remove_cv_impl_typeof<false,false,true,false> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(U const&(*)());
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T& type;
- };
- };
- template<> //CV
- struct remove_cv_impl_typeof<false,false,true,true> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(U const volatile&(*)());
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T& type;
- };
- };
- template<> //Volatile Pointer
- struct remove_cv_impl_typeof<true,false,false,true> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(void(*)(U volatile[]));
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T type[];
- };
- };
- template<> //Const Pointer
- struct remove_cv_impl_typeof<true,false,true,false> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(void(*)(U const[]));
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T type[];
- };
- };
- template<> //CV Pointer
- struct remove_cv_impl_typeof<true,false,true,true> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(void(*)(U const volatile[]));
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T type[];
- };
- };
- template<> //Volatile Array
- struct remove_cv_impl_typeof<false,true,false,true> {
- template<typename T,typename ID>
- struct inner {
- BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
-
- template<typename U>
- static msvc_register_type<U[value],ID> test(void(*)(U volatile[]));
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T type;
- };
- };
- template<> //Const Array
- struct remove_cv_impl_typeof<false,true,true,false> {
- template<typename T,typename ID>
- struct inner {
- BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
-
- template<typename U>
- static msvc_register_type<U[value],ID> test(void(*)(U const[]));
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T type;
- };
- };
-
- template<> //CV Array
- struct remove_cv_impl_typeof<false,true,true,true> {
- template<typename T,typename ID>
- struct inner {
- BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
-
- template<typename U>
- static msvc_register_type<U[value],ID> test(void(*)(U const volatile[]));
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- template<typename T>
- struct transform_type {
- typedef T type;
- };
- };
-
- } //namespace detail
-
- template<typename T>
- struct remove_cv {
- typedef cutl_details_boost::detail::remove_cv_impl_typeof<
- cutl_details_boost::is_pointer<T>::value,
- cutl_details_boost::is_array<T>::value,
- cutl_details_boost::is_const<T>::value,
- cutl_details_boost::is_volatile<T>::value
- > remove_cv_type;
- typedef typename
- remove_cv_type::template inner<
- typename remove_cv_type::template transform_type<T>::type,
- remove_cv<T>
- >::type
- type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_cv,T)
- };
-}//namespace cutl_details_boost
-
-#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_CV_HOLT_2004_0901
diff --git a/libcutl/cutl/details/boost/type_traits/msvc/remove_pointer.hpp b/libcutl/cutl/details/boost/type_traits/msvc/remove_pointer.hpp
deleted file mode 100644
index 3e557b5..0000000
--- a/libcutl/cutl/details/boost/type_traits/msvc/remove_pointer.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (C) 2004 Peder Holt
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_POINTER_HOLT_2004_0827
-#define BOOST_TYPE_TRAITS_MSVC_REMOVE_POINTER_HOLT_2004_0827
-
-#include <cutl/details/boost/type_traits/msvc/typeof.hpp>
-#include <cutl/details/boost/type_traits/is_pointer.hpp>
-
-namespace cutl_details_boost {
- namespace detail {
- template<int IsPointer>
- struct remove_pointer_impl_typeof {
- template<typename T,typename ID>
- struct inner {
- typedef T type;
- };
- };
- template<>
- struct remove_pointer_impl_typeof<true> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(U*);
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( *((T*)NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- };
- } //namespace detail
-
- template<typename T>
- struct remove_pointer {
- typedef typename cutl_details_boost::detail::remove_pointer_impl_typeof<
- cutl_details_boost::is_pointer<T>::value
- >::template inner<T,remove_pointer<T> >::type type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_pointer,T)
- };
-} //namespace cutl_details_boost
-
-#endif //BOOST_TYPE_TRAITS_REMOVE_POINTER_HOLT_2004_0827
diff --git a/libcutl/cutl/details/boost/type_traits/msvc/remove_reference.hpp b/libcutl/cutl/details/boost/type_traits/msvc/remove_reference.hpp
deleted file mode 100644
index ffd42ef..0000000
--- a/libcutl/cutl/details/boost/type_traits/msvc/remove_reference.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (C) 2004 Peder Holt
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_REFERENCE_HOLT_2004_0827
-#define BOOST_TYPE_TRAITS_MSVC_REMOVE_REFERENCE_HOLT_2004_0827
-
-#include <cutl/details/boost/type_traits/msvc/typeof.hpp>
-#include <cutl/details/boost/type_traits/is_reference.hpp>
-
-namespace cutl_details_boost {
- namespace detail {
- template<bool IsReference>
- struct remove_reference_impl_typeof {
- template<typename T,typename ID>
- struct inner {
- typedef T type;
- };
- };
- template<>
- struct remove_reference_impl_typeof<true> {
- template<typename T,typename ID>
- struct inner {
- template<typename U>
- static msvc_register_type<U,ID> test(U&(*)());
- static msvc_register_type<T,ID> test(...);
- BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
- typedef typename msvc_extract_type<ID>::id2type::type type;
- };
- };
- } //namespace detail
-
- template<typename T>
- struct remove_reference {
- typedef typename cutl_details_boost::detail::remove_reference_impl_typeof<
- cutl_details_boost::is_reference<T>::value
- >::template inner<T,remove_reference<T> >::type type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_reference,T)
- };
-} //namespace cutl_details_boost
-
-#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_REFERENCE_HOLT_2004_0827
diff --git a/libcutl/cutl/details/boost/type_traits/msvc/typeof.hpp b/libcutl/cutl/details/boost/type_traits/msvc/typeof.hpp
deleted file mode 100644
index 942166c..0000000
--- a/libcutl/cutl/details/boost/type_traits/msvc/typeof.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (C) 2004 Peder Holt
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_TYPETRAITS_MSVC_TYPEOF_HPP
-#define BOOST_TYPETRAITS_MSVC_TYPEOF_HPP
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-namespace cutl_details_boost { namespace detail {
-# if BOOST_WORKAROUND(BOOST_MSVC,==1300)
- template<typename ID>
- struct msvc_extract_type
- {
- template<bool>
- struct id2type_impl;
-
- typedef id2type_impl<true> id2type;
- };
-
- template<typename T, typename ID>
- struct msvc_register_type : public msvc_extract_type<ID>
- {
- template<>
- struct id2type_impl<true> //VC7.0 specific bugfeature
- {
- typedef T type;
- };
- };
-# else
- template<typename ID>
- struct msvc_extract_type
- {
- struct id2type;
- };
-
- template<typename T, typename ID>
- struct msvc_register_type : public msvc_extract_type<ID>
- {
- typedef msvc_extract_type<ID> base_type;
- struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature
- {
- typedef T type;
- };
- };
-# endif
-}}
-
-#endif //BOOST_TYPETRAITS_MSVC_TYPEOF_IMPL_HPP
diff --git a/libcutl/cutl/details/boost/type_traits/remove_bounds.hpp b/libcutl/cutl/details/boost/type_traits/remove_bounds.hpp
deleted file mode 100644
index 5f5b993..0000000
--- a/libcutl/cutl/details/boost/type_traits/remove_bounds.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
-#define BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-#include <cstddef>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-#include <cutl/details/boost/type_traits/msvc/remove_bounds.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/type_trait_def.hpp>
-
-#if !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-
-namespace cutl_details_boost {
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_bounds,T,T)
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T[N],T type)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const[N],T const type)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T volatile[N],T volatile type)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const volatile[N],T const volatile type)
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T[],T)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T const[],T const)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T volatile[],T volatile)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T const volatile[],T const volatile)
-#endif
-#endif
-
-} // namespace cutl_details_boost
-
-#endif
-
-#include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/remove_const.hpp b/libcutl/cutl/details/boost/type_traits/remove_const.hpp
deleted file mode 100644
index 46fd2ca..0000000
--- a/libcutl/cutl/details/boost/type_traits/remove_const.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_REMOVE_CONST_HPP_INCLUDED
-#define BOOST_TT_REMOVE_CONST_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/is_volatile.hpp>
-#include <cutl/details/boost/type_traits/broken_compiler_spec.hpp>
-#include <cutl/details/boost/type_traits/detail/cv_traits_impl.hpp>
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#include <cstddef>
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-#include <cutl/details/boost/type_traits/msvc/remove_const.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/type_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-namespace detail {
-
-template <typename T, bool is_vol>
-struct remove_const_helper
-{
- typedef T type;
-};
-
-template <typename T>
-struct remove_const_helper<T, true>
-{
- typedef T volatile type;
-};
-
-
-template <typename T>
-struct remove_const_impl
-{
- typedef typename remove_const_helper<
- typename cv_traits_imp<T*>::unqualified_type
- , ::cutl_details_boost::is_volatile<T>::value
- >::type type;
-};
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-//
-// We can't filter out rvalue_references at the same level as
-// references or we get ambiguities from msvc:
-//
-template <typename T>
-struct remove_const_impl<T&&>
-{
- typedef T&& type;
-};
-#endif
-
-} // namespace detail
-
-// * convert a type T to non-const type - remove_const<T>
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_const,T,typename cutl_details_boost::detail::remove_const_impl<T>::type)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_const,T&,T&)
-#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_const,T const[N],T type[N])
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_const,T const volatile[N],T volatile type[N])
-#endif
-
-#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_const,T,typename cutl_details_boost::detail::remove_const_impl<T>::type)
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_TT_REMOVE_CONST_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/remove_cv.hpp b/libcutl/cutl/details/boost/type_traits/remove_cv.hpp
deleted file mode 100644
index 987edee..0000000
--- a/libcutl/cutl/details/boost/type_traits/remove_cv.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_REMOVE_CV_HPP_INCLUDED
-#define BOOST_TT_REMOVE_CV_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/broken_compiler_spec.hpp>
-#include <cutl/details/boost/type_traits/detail/cv_traits_impl.hpp>
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#include <cstddef>
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-#include <cutl/details/boost/type_traits/msvc/remove_cv.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/type_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-namespace detail{
-
-template <class T>
-struct rvalue_ref_filter_rem_cv
-{
- typedef typename cutl_details_boost::detail::cv_traits_imp<T*>::unqualified_type type;
-};
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-//
-// We can't filter out rvalue_references at the same level as
-// references or we get ambiguities from msvc:
-//
-template <class T>
-struct rvalue_ref_filter_rem_cv<T&&>
-{
- typedef T&& type;
-};
-#endif
-
-}
-
-
-// convert a type T to a non-cv-qualified type - remove_cv<T>
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename cutl_details_boost::detail::rvalue_ref_filter_rem_cv<T>::type)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_cv,T&,T&)
-#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T const[N],T type[N])
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T volatile[N],T type[N])
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T const volatile[N],T type[N])
-#endif
-
-#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-
-namespace detail {
-template <typename T>
-struct remove_cv_impl
-{
- typedef typename remove_volatile_impl<
- typename remove_const_impl<T>::type
- >::type type;
-};
-}
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename cutl_details_boost::detail::remove_cv_impl<T>::type)
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_TT_REMOVE_CV_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/remove_pointer.hpp b/libcutl/cutl/details/boost/type_traits/remove_pointer.hpp
deleted file mode 100644
index 6aa2c0e..0000000
--- a/libcutl/cutl/details/boost/type_traits/remove_pointer.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
-#define BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
-
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-#include <cutl/details/boost/type_traits/broken_compiler_spec.hpp>
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-#include <cutl/details/boost/type_traits/msvc/remove_pointer.hpp>
-#elif defined(BOOST_MSVC)
-#include <cutl/details/boost/type_traits/remove_cv.hpp>
-#include <cutl/details/boost/type_traits/is_pointer.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/type_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#ifdef BOOST_MSVC
-
-namespace detail{
-
- //
- // We need all this crazy indirection because a type such as:
- //
- // T (*const)(U)
- //
- // Does not bind to a <T*> or <T*const> partial specialization with VC10 and earlier
- //
- template <class T>
- struct remove_pointer_imp
- {
- typedef T type;
- };
-
- template <class T>
- struct remove_pointer_imp<T*>
- {
- typedef T type;
- };
-
- template <class T, bool b>
- struct remove_pointer_imp3
- {
- typedef typename remove_pointer_imp<typename cutl_details_boost::remove_cv<T>::type>::type type;
- };
-
- template <class T>
- struct remove_pointer_imp3<T, false>
- {
- typedef T type;
- };
-
- template <class T>
- struct remove_pointer_imp2
- {
- typedef typename remove_pointer_imp3<T, ::cutl_details_boost::is_pointer<T>::value>::type type;
- };
-}
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_pointer,T,typename cutl_details_boost::detail::remove_pointer_imp2<T>::type)
-
-#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_pointer,T,T)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T*,T)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T* const,T)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T* volatile,T)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T* const volatile,T)
-
-#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_pointer,T,typename cutl_details_boost::detail::remove_pointer_impl<T>::type)
-
-#endif
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/remove_reference.hpp b/libcutl/cutl/details/boost/type_traits/remove_reference.hpp
deleted file mode 100644
index fcc37d0..0000000
--- a/libcutl/cutl/details/boost/type_traits/remove_reference.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
-#define BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
-
-#include <cutl/details/boost/type_traits/broken_compiler_spec.hpp>
-#include <cutl/details/boost/config.hpp>
-#include <cutl/details/boost/detail/workaround.hpp>
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-#include <cutl/details/boost/type_traits/msvc/remove_reference.hpp>
-#endif
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/type_trait_def.hpp>
-
-namespace cutl_details_boost {
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-namespace detail{
-//
-// We can't filter out rvalue_references at the same level as
-// references or we get ambiguities from msvc:
-//
-template <class T>
-struct remove_rvalue_ref
-{
- typedef T type;
-};
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-template <class T>
-struct remove_rvalue_ref<T&&>
-{
- typedef T type;
-};
-#endif
-
-} // namespace detail
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_reference,T,typename cutl_details_boost::detail::remove_rvalue_ref<T>::type)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T&,T)
-
-#if defined(BOOST_ILLEGAL_CV_REFERENCES)
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T& const,T)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T& volatile,T)
-BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T& const volatile,T)
-#endif
-
-#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_reference,T,typename cutl_details_boost::detail::remove_reference_impl<T>::type)
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-} // namespace cutl_details_boost
-
-#include <cutl/details/boost/type_traits/detail/type_trait_undef.hpp>
-
-#endif // BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
diff --git a/libcutl/cutl/details/boost/type_traits/type_with_alignment.hpp b/libcutl/cutl/details/boost/type_traits/type_with_alignment.hpp
deleted file mode 100644
index 6545cc1..0000000
--- a/libcutl/cutl/details/boost/type_traits/type_with_alignment.hpp
+++ /dev/null
@@ -1,399 +0,0 @@
-// (C) Copyright John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED
-#define BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED
-
-#include <cutl/details/boost/mpl/if.hpp>
-#include <cutl/details/boost/preprocessor/list/for_each_i.hpp>
-#include <cutl/details/boost/preprocessor/tuple/to_list.hpp>
-#include <cutl/details/boost/preprocessor/cat.hpp>
-#include <cutl/details/boost/preprocessor/list/transform.hpp>
-#include <cutl/details/boost/preprocessor/list/append.hpp>
-#include <cutl/details/boost/type_traits/alignment_of.hpp>
-#include <cutl/details/boost/type_traits/is_pod.hpp>
-#include <cutl/details/boost/static_assert.hpp>
-#include <cutl/details/boost/config.hpp>
-
-// should be the last #include
-#include <cutl/details/boost/type_traits/detail/bool_trait_def.hpp>
-
-#include <cstddef>
-
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4121) // alignment is sensitive to packing
-#endif
-
-namespace cutl_details_boost {
-
-#ifndef __BORLANDC__
-
-namespace detail {
-
-class alignment_dummy;
-typedef void (*function_ptr)();
-typedef int (alignment_dummy::*member_ptr);
-typedef int (alignment_dummy::*member_function_ptr)();
-
-#ifdef BOOST_HAS_LONG_LONG
-#define BOOST_TT_ALIGNMENT_BASE_TYPES BOOST_PP_TUPLE_TO_LIST( \
- 12, ( \
- char, short, int, long, ::cutl_details_boost::long_long_type, float, double, long double \
- , void*, function_ptr, member_ptr, member_function_ptr))
-#else
-#define BOOST_TT_ALIGNMENT_BASE_TYPES BOOST_PP_TUPLE_TO_LIST( \
- 11, ( \
- char, short, int, long, float, double, long double \
- , void*, function_ptr, member_ptr, member_function_ptr))
-#endif
-
-#define BOOST_TT_HAS_ONE_T(D,Data,T) cutl_details_boost::detail::has_one_T< T >
-
-#define BOOST_TT_ALIGNMENT_STRUCT_TYPES \
- BOOST_PP_LIST_TRANSFORM(BOOST_TT_HAS_ONE_T, \
- X, \
- BOOST_TT_ALIGNMENT_BASE_TYPES)
-
-#define BOOST_TT_ALIGNMENT_TYPES \
- BOOST_PP_LIST_APPEND(BOOST_TT_ALIGNMENT_BASE_TYPES, \
- BOOST_TT_ALIGNMENT_STRUCT_TYPES)
-
-//
-// lower_alignment_helper --
-//
-// This template gets instantiated a lot, so use partial
-// specialization when available to reduce the compiler burden.
-//
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <bool found = true>
-struct lower_alignment_helper_impl
-{
- template <std::size_t, class>
- struct apply
- {
- typedef char type;
- enum { value = true };
- };
-};
-
-template <>
-struct lower_alignment_helper_impl<false>
-{
- template <std::size_t target, class TestType>
- struct apply
- : public mpl::if_c<(alignment_of<TestType>::value == target), TestType, char>
- {
- enum { value = (alignment_of<TestType>::value == target) };
- };
-};
-
-template <bool found, std::size_t target, class TestType>
-struct lower_alignment_helper
- : public lower_alignment_helper_impl<found>::template apply<target,TestType>
-{
-};
-#else
-template <bool found, std::size_t target, class TestType>
-struct lower_alignment_helper
-{
- typedef char type;
- enum { value = true };
-};
-
-template <std::size_t target, class TestType>
-struct lower_alignment_helper<false,target,TestType>
-{
- enum { value = (alignment_of<TestType>::value == target) };
- typedef typename mpl::if_c<value, TestType, char>::type type;
-};
-#endif
-
-#define BOOST_TT_CHOOSE_MIN_ALIGNMENT(R,P,I,T) \
- typename lower_alignment_helper< \
- BOOST_PP_CAT(found,I),target,T \
- >::type BOOST_PP_CAT(t,I); \
- enum { \
- BOOST_PP_CAT(found,BOOST_PP_INC(I)) \
- = lower_alignment_helper<BOOST_PP_CAT(found,I),target,T >::value \
- };
-
-#define BOOST_TT_CHOOSE_T(R,P,I,T) T BOOST_PP_CAT(t,I);
-
-template <typename T>
-struct has_one_T
-{
- T data;
-};
-
-template <std::size_t target>
-union lower_alignment
-{
- enum { found0 = false };
-
- BOOST_PP_LIST_FOR_EACH_I(
- BOOST_TT_CHOOSE_MIN_ALIGNMENT
- , ignored
- , BOOST_TT_ALIGNMENT_TYPES
- )
-};
-
-union max_align
-{
- BOOST_PP_LIST_FOR_EACH_I(
- BOOST_TT_CHOOSE_T
- , ignored
- , BOOST_TT_ALIGNMENT_TYPES
- )
-};
-
-#undef BOOST_TT_ALIGNMENT_BASE_TYPES
-#undef BOOST_TT_HAS_ONE_T
-#undef BOOST_TT_ALIGNMENT_STRUCT_TYPES
-#undef BOOST_TT_ALIGNMENT_TYPES
-#undef BOOST_TT_CHOOSE_MIN_ALIGNMENT
-#undef BOOST_TT_CHOOSE_T
-
-template<std::size_t TAlign, std::size_t Align>
-struct is_aligned
-{
- BOOST_STATIC_CONSTANT(bool,
- value = (TAlign >= Align) & (TAlign % Align == 0)
- );
-};
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::detail::max_align,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::detail::lower_alignment<1> ,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::detail::lower_alignment<2> ,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::detail::lower_alignment<4> ,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::detail::lower_alignment<8> ,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::detail::lower_alignment<10> ,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::detail::lower_alignment<16> ,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::detail::lower_alignment<32> ,true)
-#endif
-
-} // namespace detail
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template<std::size_t Align>
-struct is_pod< ::cutl_details_boost::detail::lower_alignment<Align> >
-{
- BOOST_STATIC_CONSTANT(std::size_t, value = true);
-};
-#endif
-
-// This alignment method originally due to Brian Parker, implemented by David
-// Abrahams, and then ported here by Doug Gregor.
-namespace detail{
-
-template <std::size_t Align>
-class type_with_alignment_imp
-{
- typedef ::cutl_details_boost::detail::lower_alignment<Align> t1;
- typedef typename mpl::if_c<
- ::cutl_details_boost::detail::is_aligned< ::cutl_details_boost::alignment_of<t1>::value,Align >::value
- , t1
- , ::cutl_details_boost::detail::max_align
- >::type align_t;
-
- BOOST_STATIC_CONSTANT(std::size_t, found = alignment_of<align_t>::value);
-
- BOOST_STATIC_ASSERT(found >= Align);
- BOOST_STATIC_ASSERT(found % Align == 0);
-
- public:
- typedef align_t type;
-};
-
-}
-
-template <std::size_t Align>
-class type_with_alignment
- : public ::cutl_details_boost::detail::type_with_alignment_imp<Align>
-{
-};
-
-#if defined(__GNUC__)
-namespace align {
-struct __attribute__((__aligned__(2))) a2 {};
-struct __attribute__((__aligned__(4))) a4 {};
-struct __attribute__((__aligned__(8))) a8 {};
-struct __attribute__((__aligned__(16))) a16 {};
-struct __attribute__((__aligned__(32))) a32 {};
-struct __attribute__((__aligned__(64))) a64 {};
-struct __attribute__((__aligned__(128))) a128 {};
-}
-
-template<> class type_with_alignment<1> { public: typedef char type; };
-template<> class type_with_alignment<2> { public: typedef align::a2 type; };
-template<> class type_with_alignment<4> { public: typedef align::a4 type; };
-template<> class type_with_alignment<8> { public: typedef align::a8 type; };
-template<> class type_with_alignment<16> { public: typedef align::a16 type; };
-template<> class type_with_alignment<32> { public: typedef align::a32 type; };
-template<> class type_with_alignment<64> { public: typedef align::a64 type; };
-template<> class type_with_alignment<128> { public: typedef align::a128 type; };
-
-namespace detail {
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a2,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a4,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a8,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a16,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a32,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a64,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a128,true)
-}
-#endif
-#if (defined(BOOST_MSVC) || (defined(BOOST_INTEL) && defined(_MSC_VER))) && _MSC_VER >= 1300
-//
-// MSVC supports types which have alignments greater than the normal
-// maximum: these are used for example in the types __m64 and __m128
-// to provide types with alignment requirements which match the SSE
-// registers. Therefore we extend type_with_alignment<> to support
-// such types, however, we have to be careful to use a builtin type
-// whenever possible otherwise we break previously working code:
-// see http://article.gmane.org/gmane.comp.lib.boost.devel/173011
-// for an example and test case. Thus types like a8 below will
-// be used *only* if the existing implementation can't provide a type
-// with suitable alignment. This does mean however, that type_with_alignment<>
-// may return a type which cannot be passed through a function call
-// by value (and neither can any type containing such a type like
-// Boost.Optional). However, this only happens when we have no choice
-// in the matter because no other "ordinary" type is available.
-//
-namespace align {
-struct __declspec(align(8)) a8 {
- char m[8];
- typedef a8 type;
-};
-struct __declspec(align(16)) a16 {
- char m[16];
- typedef a16 type;
-};
-struct __declspec(align(32)) a32 {
- char m[32];
- typedef a32 type;
-};
-struct __declspec(align(64)) a64
-{
- char m[64];
- typedef a64 type;
-};
-struct __declspec(align(128)) a128 {
- char m[128];
- typedef a128 type;
-};
-}
-
-template<> class type_with_alignment<8>
-{
- typedef mpl::if_c<
- ::cutl_details_boost::alignment_of<cutl_details_boost::detail::max_align>::value < 8,
- align::a8,
- cutl_details_boost::detail::type_with_alignment_imp<8> >::type t1;
-public:
- typedef t1::type type;
-};
-template<> class type_with_alignment<16>
-{
- typedef mpl::if_c<
- ::cutl_details_boost::alignment_of<cutl_details_boost::detail::max_align>::value < 16,
- align::a16,
- cutl_details_boost::detail::type_with_alignment_imp<16> >::type t1;
-public:
- typedef t1::type type;
-};
-template<> class type_with_alignment<32>
-{
- typedef mpl::if_c<
- ::cutl_details_boost::alignment_of<cutl_details_boost::detail::max_align>::value < 32,
- align::a32,
- cutl_details_boost::detail::type_with_alignment_imp<32> >::type t1;
-public:
- typedef t1::type type;
-};
-template<> class type_with_alignment<64> {
- typedef mpl::if_c<
- ::cutl_details_boost::alignment_of<cutl_details_boost::detail::max_align>::value < 64,
- align::a64,
- cutl_details_boost::detail::type_with_alignment_imp<64> >::type t1;
-public:
- typedef t1::type type;
-};
-template<> class type_with_alignment<128> {
- typedef mpl::if_c<
- ::cutl_details_boost::alignment_of<cutl_details_boost::detail::max_align>::value < 128,
- align::a128,
- cutl_details_boost::detail::type_with_alignment_imp<128> >::type t1;
-public:
- typedef t1::type type;
-};
-
-namespace detail {
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a8,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a16,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a32,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a64,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a128,true)
-}
-#endif
-
-#else
-
-//
-// Borland specific version, we have this for two reasons:
-// 1) The version above doesn't always compile (with the new test cases for example)
-// 2) Because of Borlands #pragma option we can create types with alignments that are
-// greater that the largest aligned builtin type.
-
-namespace align{
-#pragma option push -a16
-struct a2{ short s; };
-struct a4{ int s; };
-struct a8{ double s; };
-struct a16{ long double s; };
-#pragma option pop
-}
-
-namespace detail {
-
-typedef ::cutl_details_boost::align::a16 max_align;
-
-//#if ! BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a2,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a4,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a8,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::cutl_details_boost::align::a16,true)
-//#endif
-}
-
-template <std::size_t N> struct type_with_alignment
-{
- // We should never get to here, but if we do use the maximally
- // aligned type:
- // BOOST_STATIC_ASSERT(0);
- typedef align::a16 type;
-};
-template <> struct type_with_alignment<1>{ typedef char type; };
-template <> struct type_with_alignment<2>{ typedef align::a2 type; };
-template <> struct type_with_alignment<4>{ typedef align::a4 type; };
-template <> struct type_with_alignment<8>{ typedef align::a8 type; };
-template <> struct type_with_alignment<16>{ typedef align::a16 type; };
-
-#endif
-
-} // namespace cutl_details_boost
-
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-#include <cutl/details/boost/type_traits/detail/bool_trait_undef.hpp>
-
-#endif // BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED
-
-
diff --git a/libcutl/cutl/details/boost/utility/addressof.hpp b/libcutl/cutl/details/boost/utility/addressof.hpp
deleted file mode 100644
index 286312d..0000000
--- a/libcutl/cutl/details/boost/utility/addressof.hpp
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright (C) 2002 Brad King (brad.king@kitware.com)
-// Douglas Gregor (gregod@cs.rpi.edu)
-//
-// Copyright (C) 2002, 2008 Peter Dimov
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// For more information, see http://www.boost.org
-
-#ifndef BOOST_UTILITY_ADDRESSOF_HPP
-# define BOOST_UTILITY_ADDRESSOF_HPP
-
-# include <cutl/details/boost/config.hpp>
-# include <cutl/details/boost/detail/workaround.hpp>
-
-namespace cutl_details_boost
-{
-
-namespace detail
-{
-
-template<class T> struct addr_impl_ref
-{
- T & v_;
-
- inline addr_impl_ref( T & v ): v_( v ) {}
- inline operator T& () const { return v_; }
-
-private:
- addr_impl_ref & operator=(const addr_impl_ref &);
-};
-
-template<class T> struct addressof_impl
-{
- static inline T * f( T & v, long )
- {
- return reinterpret_cast<T*>(
- &const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
- }
-
- static inline T * f( T * v, int )
- {
- return v;
- }
-};
-
-} // namespace detail
-
-template<class T> T * addressof( T & v )
-{
-#if (defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) ) ) || defined( __SUNPRO_CC )
-
- return cutl_details_boost::detail::addressof_impl<T>::f( v, 0 );
-
-#else
-
- return cutl_details_boost::detail::addressof_impl<T>::f( cutl_details_boost::detail::addr_impl_ref<T>( v ), 0 );
-
-#endif
-}
-
-#if defined( __SUNPRO_CC ) && BOOST_WORKAROUND( __SUNPRO_CC, BOOST_TESTED_AT( 0x590 ) )
-
-namespace detail
-{
-
-template<class T> struct addressof_addp
-{
- typedef T * type;
-};
-
-} // namespace detail
-
-template< class T, std::size_t N >
-typename detail::addressof_addp< T[N] >::type addressof( T (&t)[N] )
-{
- return &t;
-}
-
-#endif
-
-// Borland doesn't like casting an array reference to a char reference
-// but these overloads work around the problem.
-#if defined( __BORLANDC__ ) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
-template<typename T,std::size_t N>
-T (*addressof(T (&t)[N]))[N]
-{
- return reinterpret_cast<T(*)[N]>(&t);
-}
-
-template<typename T,std::size_t N>
-const T (*addressof(const T (&t)[N]))[N]
-{
- return reinterpret_cast<const T(*)[N]>(&t);
-}
-#endif
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_UTILITY_ADDRESSOF_HPP
diff --git a/libcutl/cutl/details/boost/utility/enable_if.hpp b/libcutl/cutl/details/boost/utility/enable_if.hpp
deleted file mode 100644
index b01210a..0000000
--- a/libcutl/cutl/details/boost/utility/enable_if.hpp
+++ /dev/null
@@ -1,119 +0,0 @@
-// Boost enable_if library
-
-// Copyright 2003 (c) The Trustees of Indiana University.
-
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
-// Jeremiah Willcock (jewillco at osl.iu.edu)
-// Andrew Lumsdaine (lums at osl.iu.edu)
-
-
-#ifndef BOOST_UTILITY_ENABLE_IF_HPP
-#define BOOST_UTILITY_ENABLE_IF_HPP
-
-#include "cutl/details/boost/config.hpp"
-
-// Even the definition of enable_if causes problems on some compilers,
-// so it's macroed out for all compilers that do not support SFINAE
-
-#ifndef BOOST_NO_SFINAE
-
-namespace cutl_details_boost
-{
-
- template <bool B, class T = void>
- struct enable_if_c {
- typedef T type;
- };
-
- template <class T>
- struct enable_if_c<false, T> {};
-
- template <class Cond, class T = void>
- struct enable_if : public enable_if_c<Cond::value, T> {};
-
- template <bool B, class T>
- struct lazy_enable_if_c {
- typedef typename T::type type;
- };
-
- template <class T>
- struct lazy_enable_if_c<false, T> {};
-
- template <class Cond, class T>
- struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
-
-
- template <bool B, class T = void>
- struct disable_if_c {
- typedef T type;
- };
-
- template <class T>
- struct disable_if_c<true, T> {};
-
- template <class Cond, class T = void>
- struct disable_if : public disable_if_c<Cond::value, T> {};
-
- template <bool B, class T>
- struct lazy_disable_if_c {
- typedef typename T::type type;
- };
-
- template <class T>
- struct lazy_disable_if_c<true, T> {};
-
- template <class Cond, class T>
- struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
-
-} // namespace cutl_details_boost
-
-#else
-
-namespace cutl_details_boost {
-
- namespace detail { typedef void enable_if_default_T; }
-
- template <typename T>
- struct enable_if_does_not_work_on_this_compiler;
-
- template <bool B, class T = detail::enable_if_default_T>
- struct enable_if_c : enable_if_does_not_work_on_this_compiler<T>
- { };
-
- template <bool B, class T = detail::enable_if_default_T>
- struct disable_if_c : enable_if_does_not_work_on_this_compiler<T>
- { };
-
- template <bool B, class T = detail::enable_if_default_T>
- struct lazy_enable_if_c : enable_if_does_not_work_on_this_compiler<T>
- { };
-
- template <bool B, class T = detail::enable_if_default_T>
- struct lazy_disable_if_c : enable_if_does_not_work_on_this_compiler<T>
- { };
-
- template <class Cond, class T = detail::enable_if_default_T>
- struct enable_if : enable_if_does_not_work_on_this_compiler<T>
- { };
-
- template <class Cond, class T = detail::enable_if_default_T>
- struct disable_if : enable_if_does_not_work_on_this_compiler<T>
- { };
-
- template <class Cond, class T = detail::enable_if_default_T>
- struct lazy_enable_if : enable_if_does_not_work_on_this_compiler<T>
- { };
-
- template <class Cond, class T = detail::enable_if_default_T>
- struct lazy_disable_if : enable_if_does_not_work_on_this_compiler<T>
- { };
-
-} // namespace cutl_details_boost
-
-#endif // BOOST_NO_SFINAE
-
-#endif
diff --git a/libcutl/cutl/details/boost/version.hpp b/libcutl/cutl/details/boost/version.hpp
deleted file mode 100644
index d3826c2..0000000
--- a/libcutl/cutl/details/boost/version.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost version.hpp configuration header file ------------------------------//
-
-// (C) Copyright John maddock 1999. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/config for documentation
-
-#ifndef BOOST_VERSION_HPP
-#define BOOST_VERSION_HPP
-
-//
-// Caution, this is the only boost header that is guarenteed
-// to change with every boost release, including this header
-// will cause a recompile every time a new boost version is
-// released.
-//
-// BOOST_VERSION % 100 is the patch level
-// BOOST_VERSION / 100 % 1000 is the minor version
-// BOOST_VERSION / 100000 is the major version
-
-#define BOOST_VERSION 105400
-
-//
-// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
-// but as a *string* in the form "x_y[_z]" where x is the major version
-// number, y is the minor version number, and z is the patch level if not 0.
-// This is used by <config/auto_link.hpp> to select which library version to link to.
-
-#define BOOST_LIB_VERSION "1_54"
-
-#endif
diff --git a/libcutl/cutl/details/config-vc.h b/libcutl/cutl/details/config-vc.h
deleted file mode 100644
index 184cdc7..0000000
--- a/libcutl/cutl/details/config-vc.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* file : cutl/details/config-vc.h
- * copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
- * license : MIT; see accompanying LICENSE file
- */
-
-/* Configuration file for Windows/VC++. */
-
-#ifndef CUTL_DETAILS_CONFIG_VC_H
-#define CUTL_DETAILS_CONFIG_VC_H
-
-#define LIBCUTL_BYTEORDER 1234
-
-#endif /* CUTL_DETAILS_CONFIG_VC_H */
diff --git a/libcutl/cutl/details/config.h.in b/libcutl/cutl/details/config.h.in
deleted file mode 100644
index 9c1a482..0000000
--- a/libcutl/cutl/details/config.h.in
+++ /dev/null
@@ -1,17 +0,0 @@
-/* file : cutl/details/config.h.in
- * copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
- * license : MIT; see accompanying LICENSE file
- */
-
-/* This file is automatically processed by configure. */
-
-#ifndef CUTL_DETAILS_CONFIG_H
-#define CUTL_DETAILS_CONFIG_H
-
-#undef LIBCUTL_DISABLE_THREADS
-#undef LIBCUTL_STATIC_LIB
-#undef LIBCUTL_EXTERNAL_BOOST
-#undef LIBCUTL_EXTERNAL_EXPAT
-#undef LIBCUTL_BYTEORDER
-
-#endif /* CUTL_DETAILS_CONFIG_H */
diff --git a/libcutl/cutl/details/config.hxx b/libcutl/cutl/details/config.hxx
deleted file mode 100644
index 8a4adc0..0000000
--- a/libcutl/cutl/details/config.hxx
+++ /dev/null
@@ -1,14 +0,0 @@
-// file : cutl/details/config.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_DETAILS_CONFIG_HXX
-#define CUTL_DETAILS_CONFIG_HXX
-
-#ifdef _MSC_VER
-# include <cutl/details/config-vc.h>
-#else
-# include <cutl/details/config.h>
-#endif
-
-#endif // CUTL_DETAILS_CONFIG_HXX
diff --git a/libcutl/cutl/details/expat/LICENSE b/libcutl/cutl/details/expat/LICENSE
deleted file mode 100644
index dcb4506..0000000
--- a/libcutl/cutl/details/expat/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
- and Clark Cooper
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/libcutl/cutl/details/expat/README b/libcutl/cutl/details/expat/README
deleted file mode 100644
index 2b3dca5..0000000
--- a/libcutl/cutl/details/expat/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory contains the Expat XML parser library for internal
-use by libcutl.
diff --git a/libcutl/cutl/details/expat/ascii.h b/libcutl/cutl/details/expat/ascii.h
deleted file mode 100644
index d10530b..0000000
--- a/libcutl/cutl/details/expat/ascii.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-#define ASCII_A 0x41
-#define ASCII_B 0x42
-#define ASCII_C 0x43
-#define ASCII_D 0x44
-#define ASCII_E 0x45
-#define ASCII_F 0x46
-#define ASCII_G 0x47
-#define ASCII_H 0x48
-#define ASCII_I 0x49
-#define ASCII_J 0x4A
-#define ASCII_K 0x4B
-#define ASCII_L 0x4C
-#define ASCII_M 0x4D
-#define ASCII_N 0x4E
-#define ASCII_O 0x4F
-#define ASCII_P 0x50
-#define ASCII_Q 0x51
-#define ASCII_R 0x52
-#define ASCII_S 0x53
-#define ASCII_T 0x54
-#define ASCII_U 0x55
-#define ASCII_V 0x56
-#define ASCII_W 0x57
-#define ASCII_X 0x58
-#define ASCII_Y 0x59
-#define ASCII_Z 0x5A
-
-#define ASCII_a 0x61
-#define ASCII_b 0x62
-#define ASCII_c 0x63
-#define ASCII_d 0x64
-#define ASCII_e 0x65
-#define ASCII_f 0x66
-#define ASCII_g 0x67
-#define ASCII_h 0x68
-#define ASCII_i 0x69
-#define ASCII_j 0x6A
-#define ASCII_k 0x6B
-#define ASCII_l 0x6C
-#define ASCII_m 0x6D
-#define ASCII_n 0x6E
-#define ASCII_o 0x6F
-#define ASCII_p 0x70
-#define ASCII_q 0x71
-#define ASCII_r 0x72
-#define ASCII_s 0x73
-#define ASCII_t 0x74
-#define ASCII_u 0x75
-#define ASCII_v 0x76
-#define ASCII_w 0x77
-#define ASCII_x 0x78
-#define ASCII_y 0x79
-#define ASCII_z 0x7A
-
-#define ASCII_0 0x30
-#define ASCII_1 0x31
-#define ASCII_2 0x32
-#define ASCII_3 0x33
-#define ASCII_4 0x34
-#define ASCII_5 0x35
-#define ASCII_6 0x36
-#define ASCII_7 0x37
-#define ASCII_8 0x38
-#define ASCII_9 0x39
-
-#define ASCII_TAB 0x09
-#define ASCII_SPACE 0x20
-#define ASCII_EXCL 0x21
-#define ASCII_QUOT 0x22
-#define ASCII_AMP 0x26
-#define ASCII_APOS 0x27
-#define ASCII_MINUS 0x2D
-#define ASCII_PERIOD 0x2E
-#define ASCII_COLON 0x3A
-#define ASCII_SEMI 0x3B
-#define ASCII_LT 0x3C
-#define ASCII_EQUALS 0x3D
-#define ASCII_GT 0x3E
-#define ASCII_LSQB 0x5B
-#define ASCII_RSQB 0x5D
-#define ASCII_UNDERSCORE 0x5F
-#define ASCII_LPAREN 0x28
-#define ASCII_RPAREN 0x29
-#define ASCII_FF 0x0C
-#define ASCII_SLASH 0x2F
-#define ASCII_HASH 0x23
-#define ASCII_PIPE 0x7C
-#define ASCII_COMMA 0x2C
diff --git a/libcutl/cutl/details/expat/asciitab.h b/libcutl/cutl/details/expat/asciitab.h
deleted file mode 100644
index 79a15c2..0000000
--- a/libcutl/cutl/details/expat/asciitab.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
-/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML,
-/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
-/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
-/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
-/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
-/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
-/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
-/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
-/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
-/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,
diff --git a/libcutl/cutl/details/expat/config.h b/libcutl/cutl/details/expat/config.h
deleted file mode 100644
index a9f29f4..0000000
--- a/libcutl/cutl/details/expat/config.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef EXPAT_CONFIG_H
-#define EXPAT_CONFIG_H
-
-#ifdef _MSC_VER
-# include <cutl/details/config-vc.h>
-#else
-# include <cutl/details/config.h>
-#endif
-
-#define BYTEORDER LIBCUTL_BYTEORDER
-
-#define XML_NS 1
-#define XML_DTD 1
-#define XML_CONTEXT_BYTES 1024
-
-#define UNUSED(x) (void)x;
-
-#ifdef _WIN32
-/* Windows
- *
- */
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#undef WIN32_LEAN_AND_MEAN
-
-#define HAVE_MEMMOVE 1
-
-#else
-/* POSIX
- *
- */
-#define HAVE_MEMMOVE 1
-#endif
-
-#endif /* EXPAT_CONFIG_H */
diff --git a/libcutl/cutl/details/expat/expat.h b/libcutl/cutl/details/expat/expat.h
deleted file mode 100644
index f5dd736..0000000
--- a/libcutl/cutl/details/expat/expat.h
+++ /dev/null
@@ -1,1047 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-#ifndef Expat_INCLUDED
-#define Expat_INCLUDED 1
-
-#ifdef __VMS
-/* 0 1 2 3 0 1 2 3
- 1234567890123456789012345678901 1234567890123456789012345678901 */
-#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler
-#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler
-#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler
-#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg
-#endif
-
-#include <stdlib.h>
-#include <cutl/details/expat/expat_external.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct XML_ParserStruct;
-typedef struct XML_ParserStruct *XML_Parser;
-
-/* Should this be defined using stdbool.h when C99 is available? */
-typedef unsigned char XML_Bool;
-#define XML_TRUE ((XML_Bool) 1)
-#define XML_FALSE ((XML_Bool) 0)
-
-/* The XML_Status enum gives the possible return values for several
- API functions. The preprocessor #defines are included so this
- stanza can be added to code that still needs to support older
- versions of Expat 1.95.x:
-
- #ifndef XML_STATUS_OK
- #define XML_STATUS_OK 1
- #define XML_STATUS_ERROR 0
- #endif
-
- Otherwise, the #define hackery is quite ugly and would have been
- dropped.
-*/
-enum XML_Status {
- XML_STATUS_ERROR = 0,
-#define XML_STATUS_ERROR XML_STATUS_ERROR
- XML_STATUS_OK = 1,
-#define XML_STATUS_OK XML_STATUS_OK
- XML_STATUS_SUSPENDED = 2
-#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED
-};
-
-enum XML_Error {
- XML_ERROR_NONE,
- XML_ERROR_NO_MEMORY,
- XML_ERROR_SYNTAX,
- XML_ERROR_NO_ELEMENTS,
- XML_ERROR_INVALID_TOKEN,
- XML_ERROR_UNCLOSED_TOKEN,
- XML_ERROR_PARTIAL_CHAR,
- XML_ERROR_TAG_MISMATCH,
- XML_ERROR_DUPLICATE_ATTRIBUTE,
- XML_ERROR_JUNK_AFTER_DOC_ELEMENT,
- XML_ERROR_PARAM_ENTITY_REF,
- XML_ERROR_UNDEFINED_ENTITY,
- XML_ERROR_RECURSIVE_ENTITY_REF,
- XML_ERROR_ASYNC_ENTITY,
- XML_ERROR_BAD_CHAR_REF,
- XML_ERROR_BINARY_ENTITY_REF,
- XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF,
- XML_ERROR_MISPLACED_XML_PI,
- XML_ERROR_UNKNOWN_ENCODING,
- XML_ERROR_INCORRECT_ENCODING,
- XML_ERROR_UNCLOSED_CDATA_SECTION,
- XML_ERROR_EXTERNAL_ENTITY_HANDLING,
- XML_ERROR_NOT_STANDALONE,
- XML_ERROR_UNEXPECTED_STATE,
- XML_ERROR_ENTITY_DECLARED_IN_PE,
- XML_ERROR_FEATURE_REQUIRES_XML_DTD,
- XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING,
- /* Added in 1.95.7. */
- XML_ERROR_UNBOUND_PREFIX,
- /* Added in 1.95.8. */
- XML_ERROR_UNDECLARING_PREFIX,
- XML_ERROR_INCOMPLETE_PE,
- XML_ERROR_XML_DECL,
- XML_ERROR_TEXT_DECL,
- XML_ERROR_PUBLICID,
- XML_ERROR_SUSPENDED,
- XML_ERROR_NOT_SUSPENDED,
- XML_ERROR_ABORTED,
- XML_ERROR_FINISHED,
- XML_ERROR_SUSPEND_PE,
- /* Added in 2.0. */
- XML_ERROR_RESERVED_PREFIX_XML,
- XML_ERROR_RESERVED_PREFIX_XMLNS,
- XML_ERROR_RESERVED_NAMESPACE_URI
-};
-
-enum XML_Content_Type {
- XML_CTYPE_EMPTY = 1,
- XML_CTYPE_ANY,
- XML_CTYPE_MIXED,
- XML_CTYPE_NAME,
- XML_CTYPE_CHOICE,
- XML_CTYPE_SEQ
-};
-
-enum XML_Content_Quant {
- XML_CQUANT_NONE,
- XML_CQUANT_OPT,
- XML_CQUANT_REP,
- XML_CQUANT_PLUS
-};
-
-/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be
- XML_CQUANT_NONE, and the other fields will be zero or NULL.
- If type == XML_CTYPE_MIXED, then quant will be NONE or REP and
- numchildren will contain number of elements that may be mixed in
- and children point to an array of XML_Content cells that will be
- all of XML_CTYPE_NAME type with no quantification.
-
- If type == XML_CTYPE_NAME, then the name points to the name, and
- the numchildren field will be zero and children will be NULL. The
- quant fields indicates any quantifiers placed on the name.
-
- CHOICE and SEQ will have name NULL, the number of children in
- numchildren and children will point, recursively, to an array
- of XML_Content cells.
-
- The EMPTY, ANY, and MIXED types will only occur at top level.
-*/
-
-typedef struct XML_cp XML_Content;
-
-struct XML_cp {
- enum XML_Content_Type type;
- enum XML_Content_Quant quant;
- XML_Char * name;
- unsigned int numchildren;
- XML_Content * children;
-};
-
-
-/* This is called for an element declaration. See above for
- description of the model argument. It's the caller's responsibility
- to free model when finished with it.
-*/
-typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData,
- const XML_Char *name,
- XML_Content *model);
-
-XMLPARSEAPI(void)
-XML_SetElementDeclHandler(XML_Parser parser,
- XML_ElementDeclHandler eldecl);
-
-/* The Attlist declaration handler is called for *each* attribute. So
- a single Attlist declaration with multiple attributes declared will
- generate multiple calls to this handler. The "default" parameter
- may be NULL in the case of the "#IMPLIED" or "#REQUIRED"
- keyword. The "isrequired" parameter will be true and the default
- value will be NULL in the case of "#REQUIRED". If "isrequired" is
- true and default is non-NULL, then this is a "#FIXED" default.
-*/
-typedef void (XMLCALL *XML_AttlistDeclHandler) (
- void *userData,
- const XML_Char *elname,
- const XML_Char *attname,
- const XML_Char *att_type,
- const XML_Char *dflt,
- int isrequired);
-
-XMLPARSEAPI(void)
-XML_SetAttlistDeclHandler(XML_Parser parser,
- XML_AttlistDeclHandler attdecl);
-
-/* The XML declaration handler is called for *both* XML declarations
- and text declarations. The way to distinguish is that the version
- parameter will be NULL for text declarations. The encoding
- parameter may be NULL for XML declarations. The standalone
- parameter will be -1, 0, or 1 indicating respectively that there
- was no standalone parameter in the declaration, that it was given
- as no, or that it was given as yes.
-*/
-typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData,
- const XML_Char *version,
- const XML_Char *encoding,
- int standalone);
-
-XMLPARSEAPI(void)
-XML_SetXmlDeclHandler(XML_Parser parser,
- XML_XmlDeclHandler xmldecl);
-
-
-typedef struct {
- void *(*malloc_fcn)(size_t size);
- void *(*realloc_fcn)(void *ptr, size_t size);
- void (*free_fcn)(void *ptr);
-} XML_Memory_Handling_Suite;
-
-/* Constructs a new parser; encoding is the encoding specified by the
- external protocol or NULL if there is none specified.
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ParserCreate(const XML_Char *encoding);
-
-/* Constructs a new parser and namespace processor. Element type
- names and attribute names that belong to a namespace will be
- expanded; unprefixed attribute names are never expanded; unprefixed
- element type names are expanded only if there is a default
- namespace. The expanded name is the concatenation of the namespace
- URI, the namespace separator character, and the local part of the
- name. If the namespace separator is '\0' then the namespace URI
- and the local part will be concatenated without any separator.
- It is a programming error to use the separator '\0' with namespace
- triplets (see XML_SetReturnNSTriplet).
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
-
-
-/* Constructs a new parser using the memory management suite referred to
- by memsuite. If memsuite is NULL, then use the standard library memory
- suite. If namespaceSeparator is non-NULL it creates a parser with
- namespace processing as described above. The character pointed at
- will serve as the namespace separator.
-
- All further memory operations used for the created parser will come from
- the given suite.
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ParserCreate_MM(const XML_Char *encoding,
- const XML_Memory_Handling_Suite *memsuite,
- const XML_Char *namespaceSeparator);
-
-/* Prepare a parser object to be re-used. This is particularly
- valuable when memory allocation overhead is disproportionatly high,
- such as when a large number of small documnents need to be parsed.
- All handlers are cleared from the parser, except for the
- unknownEncodingHandler. The parser's external state is re-initialized
- except for the values of ns and ns_triplets.
-
- Added in Expat 1.95.3.
-*/
-XMLPARSEAPI(XML_Bool)
-XML_ParserReset(XML_Parser parser, const XML_Char *encoding);
-
-/* atts is array of name/value pairs, terminated by 0;
- names and values are 0 terminated.
-*/
-typedef void (XMLCALL *XML_StartElementHandler) (void *userData,
- const XML_Char *name,
- const XML_Char **atts);
-
-typedef void (XMLCALL *XML_EndElementHandler) (void *userData,
- const XML_Char *name);
-
-
-/* s is not 0 terminated. */
-typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData,
- const XML_Char *s,
- int len);
-
-/* target and data are 0 terminated */
-typedef void (XMLCALL *XML_ProcessingInstructionHandler) (
- void *userData,
- const XML_Char *target,
- const XML_Char *data);
-
-/* data is 0 terminated */
-typedef void (XMLCALL *XML_CommentHandler) (void *userData,
- const XML_Char *data);
-
-typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData);
-typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData);
-
-/* This is called for any characters in the XML document for which
- there is no applicable handler. This includes both characters that
- are part of markup which is of a kind that is not reported
- (comments, markup declarations), or characters that are part of a
- construct which could be reported but for which no handler has been
- supplied. The characters are passed exactly as they were in the XML
- document except that they will be encoded in UTF-8 or UTF-16.
- Line boundaries are not normalized. Note that a byte order mark
- character is not passed to the default handler. There are no
- guarantees about how characters are divided between calls to the
- default handler: for example, a comment might be split between
- multiple calls.
-*/
-typedef void (XMLCALL *XML_DefaultHandler) (void *userData,
- const XML_Char *s,
- int len);
-
-/* This is called for the start of the DOCTYPE declaration, before
- any DTD or internal subset is parsed.
-*/
-typedef void (XMLCALL *XML_StartDoctypeDeclHandler) (
- void *userData,
- const XML_Char *doctypeName,
- const XML_Char *sysid,
- const XML_Char *pubid,
- int has_internal_subset);
-
-/* This is called for the start of the DOCTYPE declaration when the
- closing > is encountered, but after processing any external
- subset.
-*/
-typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
-
-/* This is called for entity declarations. The is_parameter_entity
- argument will be non-zero if the entity is a parameter entity, zero
- otherwise.
-
- For internal entities (<!ENTITY foo "bar">), value will
- be non-NULL and systemId, publicID, and notationName will be NULL.
- The value string is NOT nul-terminated; the length is provided in
- the value_length argument. Since it is legal to have zero-length
- values, do not use this argument to test for internal entities.
-
- For external entities, value will be NULL and systemId will be
- non-NULL. The publicId argument will be NULL unless a public
- identifier was provided. The notationName argument will have a
- non-NULL value only for unparsed entity declarations.
-
- Note that is_parameter_entity can't be changed to XML_Bool, since
- that would break binary compatibility.
-*/
-typedef void (XMLCALL *XML_EntityDeclHandler) (
- void *userData,
- const XML_Char *entityName,
- int is_parameter_entity,
- const XML_Char *value,
- int value_length,
- const XML_Char *base,
- const XML_Char *systemId,
- const XML_Char *publicId,
- const XML_Char *notationName);
-
-XMLPARSEAPI(void)
-XML_SetEntityDeclHandler(XML_Parser parser,
- XML_EntityDeclHandler handler);
-
-/* OBSOLETE -- OBSOLETE -- OBSOLETE
- This handler has been superceded by the EntityDeclHandler above.
- It is provided here for backward compatibility.
-
- This is called for a declaration of an unparsed (NDATA) entity.
- The base argument is whatever was set by XML_SetBase. The
- entityName, systemId and notationName arguments will never be
- NULL. The other arguments may be.
-*/
-typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) (
- void *userData,
- const XML_Char *entityName,
- const XML_Char *base,
- const XML_Char *systemId,
- const XML_Char *publicId,
- const XML_Char *notationName);
-
-/* This is called for a declaration of notation. The base argument is
- whatever was set by XML_SetBase. The notationName will never be
- NULL. The other arguments can be.
-*/
-typedef void (XMLCALL *XML_NotationDeclHandler) (
- void *userData,
- const XML_Char *notationName,
- const XML_Char *base,
- const XML_Char *systemId,
- const XML_Char *publicId);
-
-/* When namespace processing is enabled, these are called once for
- each namespace declaration. The call to the start and end element
- handlers occur between the calls to the start and end namespace
- declaration handlers. For an xmlns attribute, prefix will be
- NULL. For an xmlns="" attribute, uri will be NULL.
-*/
-typedef void (XMLCALL *XML_StartNamespaceDeclHandler) (
- void *userData,
- const XML_Char *prefix,
- const XML_Char *uri);
-
-typedef void (XMLCALL *XML_EndNamespaceDeclHandler) (
- void *userData,
- const XML_Char *prefix);
-
-/* This is called if the document is not standalone, that is, it has an
- external subset or a reference to a parameter entity, but does not
- have standalone="yes". If this handler returns XML_STATUS_ERROR,
- then processing will not continue, and the parser will return a
- XML_ERROR_NOT_STANDALONE error.
- If parameter entity parsing is enabled, then in addition to the
- conditions above this handler will only be called if the referenced
- entity was actually read.
-*/
-typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData);
-
-/* This is called for a reference to an external parsed general
- entity. The referenced entity is not automatically parsed. The
- application can parse it immediately or later using
- XML_ExternalEntityParserCreate.
-
- The parser argument is the parser parsing the entity containing the
- reference; it can be passed as the parser argument to
- XML_ExternalEntityParserCreate. The systemId argument is the
- system identifier as specified in the entity declaration; it will
- not be NULL.
-
- The base argument is the system identifier that should be used as
- the base for resolving systemId if systemId was relative; this is
- set by XML_SetBase; it may be NULL.
-
- The publicId argument is the public identifier as specified in the
- entity declaration, or NULL if none was specified; the whitespace
- in the public identifier will have been normalized as required by
- the XML spec.
-
- The context argument specifies the parsing context in the format
- expected by the context argument to XML_ExternalEntityParserCreate;
- context is valid only until the handler returns, so if the
- referenced entity is to be parsed later, it must be copied.
- context is NULL only when the entity is a parameter entity.
-
- The handler should return XML_STATUS_ERROR if processing should not
- continue because of a fatal error in the handling of the external
- entity. In this case the calling parser will return an
- XML_ERROR_EXTERNAL_ENTITY_HANDLING error.
-
- Note that unlike other handlers the first argument is the parser,
- not userData.
-*/
-typedef int (XMLCALL *XML_ExternalEntityRefHandler) (
- XML_Parser parser,
- const XML_Char *context,
- const XML_Char *base,
- const XML_Char *systemId,
- const XML_Char *publicId);
-
-/* This is called in two situations:
- 1) An entity reference is encountered for which no declaration
- has been read *and* this is not an error.
- 2) An internal entity reference is read, but not expanded, because
- XML_SetDefaultHandler has been called.
- Note: skipped parameter entities in declarations and skipped general
- entities in attribute values cannot be reported, because
- the event would be out of sync with the reporting of the
- declarations or attribute values
-*/
-typedef void (XMLCALL *XML_SkippedEntityHandler) (
- void *userData,
- const XML_Char *entityName,
- int is_parameter_entity);
-
-/* This structure is filled in by the XML_UnknownEncodingHandler to
- provide information to the parser about encodings that are unknown
- to the parser.
-
- The map[b] member gives information about byte sequences whose
- first byte is b.
-
- If map[b] is c where c is >= 0, then b by itself encodes the
- Unicode scalar value c.
-
- If map[b] is -1, then the byte sequence is malformed.
-
- If map[b] is -n, where n >= 2, then b is the first byte of an
- n-byte sequence that encodes a single Unicode scalar value.
-
- The data member will be passed as the first argument to the convert
- function.
-
- The convert function is used to convert multibyte sequences; s will
- point to a n-byte sequence where map[(unsigned char)*s] == -n. The
- convert function must return the Unicode scalar value represented
- by this byte sequence or -1 if the byte sequence is malformed.
-
- The convert function may be NULL if the encoding is a single-byte
- encoding, that is if map[b] >= -1 for all bytes b.
-
- When the parser is finished with the encoding, then if release is
- not NULL, it will call release passing it the data member; once
- release has been called, the convert function will not be called
- again.
-
- Expat places certain restrictions on the encodings that are supported
- using this mechanism.
-
- 1. Every ASCII character that can appear in a well-formed XML document,
- other than the characters
-
- $@\^`{}~
-
- must be represented by a single byte, and that byte must be the
- same byte that represents that character in ASCII.
-
- 2. No character may require more than 4 bytes to encode.
-
- 3. All characters encoded must have Unicode scalar values <=
- 0xFFFF, (i.e., characters that would be encoded by surrogates in
- UTF-16 are not allowed). Note that this restriction doesn't
- apply to the built-in support for UTF-8 and UTF-16.
-
- 4. No Unicode character may be encoded by more than one distinct
- sequence of bytes.
-*/
-typedef struct {
- int map[256];
- void *data;
- int (XMLCALL *convert)(void *data, const char *s);
- void (XMLCALL *release)(void *data);
-} XML_Encoding;
-
-/* This is called for an encoding that is unknown to the parser.
-
- The encodingHandlerData argument is that which was passed as the
- second argument to XML_SetUnknownEncodingHandler.
-
- The name argument gives the name of the encoding as specified in
- the encoding declaration.
-
- If the callback can provide information about the encoding, it must
- fill in the XML_Encoding structure, and return XML_STATUS_OK.
- Otherwise it must return XML_STATUS_ERROR.
-
- If info does not describe a suitable encoding, then the parser will
- return an XML_UNKNOWN_ENCODING error.
-*/
-typedef int (XMLCALL *XML_UnknownEncodingHandler) (
- void *encodingHandlerData,
- const XML_Char *name,
- XML_Encoding *info);
-
-XMLPARSEAPI(void)
-XML_SetElementHandler(XML_Parser parser,
- XML_StartElementHandler start,
- XML_EndElementHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartElementHandler(XML_Parser parser,
- XML_StartElementHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetEndElementHandler(XML_Parser parser,
- XML_EndElementHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetCharacterDataHandler(XML_Parser parser,
- XML_CharacterDataHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetProcessingInstructionHandler(XML_Parser parser,
- XML_ProcessingInstructionHandler handler);
-XMLPARSEAPI(void)
-XML_SetCommentHandler(XML_Parser parser,
- XML_CommentHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetCdataSectionHandler(XML_Parser parser,
- XML_StartCdataSectionHandler start,
- XML_EndCdataSectionHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartCdataSectionHandler(XML_Parser parser,
- XML_StartCdataSectionHandler start);
-
-XMLPARSEAPI(void)
-XML_SetEndCdataSectionHandler(XML_Parser parser,
- XML_EndCdataSectionHandler end);
-
-/* This sets the default handler and also inhibits expansion of
- internal entities. These entity references will be passed to the
- default handler, or to the skipped entity handler, if one is set.
-*/
-XMLPARSEAPI(void)
-XML_SetDefaultHandler(XML_Parser parser,
- XML_DefaultHandler handler);
-
-/* This sets the default handler but does not inhibit expansion of
- internal entities. The entity reference will not be passed to the
- default handler.
-*/
-XMLPARSEAPI(void)
-XML_SetDefaultHandlerExpand(XML_Parser parser,
- XML_DefaultHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetDoctypeDeclHandler(XML_Parser parser,
- XML_StartDoctypeDeclHandler start,
- XML_EndDoctypeDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartDoctypeDeclHandler(XML_Parser parser,
- XML_StartDoctypeDeclHandler start);
-
-XMLPARSEAPI(void)
-XML_SetEndDoctypeDeclHandler(XML_Parser parser,
- XML_EndDoctypeDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
- XML_UnparsedEntityDeclHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetNotationDeclHandler(XML_Parser parser,
- XML_NotationDeclHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetNamespaceDeclHandler(XML_Parser parser,
- XML_StartNamespaceDeclHandler start,
- XML_EndNamespaceDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartNamespaceDeclHandler(XML_Parser parser,
- XML_StartNamespaceDeclHandler start);
-
-XMLPARSEAPI(void)
-XML_SetEndNamespaceDeclHandler(XML_Parser parser,
- XML_EndNamespaceDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetNotStandaloneHandler(XML_Parser parser,
- XML_NotStandaloneHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetExternalEntityRefHandler(XML_Parser parser,
- XML_ExternalEntityRefHandler handler);
-
-/* If a non-NULL value for arg is specified here, then it will be
- passed as the first argument to the external entity ref handler
- instead of the parser object.
-*/
-XMLPARSEAPI(void)
-XML_SetExternalEntityRefHandlerArg(XML_Parser parser,
- void *arg);
-
-XMLPARSEAPI(void)
-XML_SetSkippedEntityHandler(XML_Parser parser,
- XML_SkippedEntityHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetUnknownEncodingHandler(XML_Parser parser,
- XML_UnknownEncodingHandler handler,
- void *encodingHandlerData);
-
-/* This can be called within a handler for a start element, end
- element, processing instruction or character data. It causes the
- corresponding markup to be passed to the default handler.
-*/
-XMLPARSEAPI(void)
-XML_DefaultCurrent(XML_Parser parser);
-
-/* If do_nst is non-zero, and namespace processing is in effect, and
- a name has a prefix (i.e. an explicit namespace qualifier) then
- that name is returned as a triplet in a single string separated by
- the separator character specified when the parser was created: URI
- + sep + local_name + sep + prefix.
-
- If do_nst is zero, then namespace information is returned in the
- default manner (URI + sep + local_name) whether or not the name
- has a prefix.
-
- Note: Calling XML_SetReturnNSTriplet after XML_Parse or
- XML_ParseBuffer has no effect.
-*/
-
-XMLPARSEAPI(void)
-XML_SetReturnNSTriplet(XML_Parser parser, int do_nst);
-
-/* This value is passed as the userData argument to callbacks. */
-XMLPARSEAPI(void)
-XML_SetUserData(XML_Parser parser, void *userData);
-
-/* Returns the last value set by XML_SetUserData or NULL. */
-#define XML_GetUserData(parser) (*(void **)(parser))
-
-/* This is equivalent to supplying an encoding argument to
- XML_ParserCreate. On success XML_SetEncoding returns non-zero,
- zero otherwise.
- Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer
- has no effect and returns XML_STATUS_ERROR.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
-
-/* If this function is called, then the parser will be passed as the
- first argument to callbacks instead of userData. The userData will
- still be accessible using XML_GetUserData.
-*/
-XMLPARSEAPI(void)
-XML_UseParserAsHandlerArg(XML_Parser parser);
-
-/* If useDTD == XML_TRUE is passed to this function, then the parser
- will assume that there is an external subset, even if none is
- specified in the document. In such a case the parser will call the
- externalEntityRefHandler with a value of NULL for the systemId
- argument (the publicId and context arguments will be NULL as well).
- Note: For the purpose of checking WFC: Entity Declared, passing
- useDTD == XML_TRUE will make the parser behave as if the document
- had a DTD with an external subset.
- Note: If this function is called, then this must be done before
- the first call to XML_Parse or XML_ParseBuffer, since it will
- have no effect after that. Returns
- XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING.
- Note: If the document does not have a DOCTYPE declaration at all,
- then startDoctypeDeclHandler and endDoctypeDeclHandler will not
- be called, despite an external subset being parsed.
- Note: If XML_DTD is not defined when Expat is compiled, returns
- XML_ERROR_FEATURE_REQUIRES_XML_DTD.
-*/
-XMLPARSEAPI(enum XML_Error)
-XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
-
-
-/* Sets the base to be used for resolving relative URIs in system
- identifiers in declarations. Resolving relative identifiers is
- left to the application: this value will be passed through as the
- base argument to the XML_ExternalEntityRefHandler,
- XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base
- argument will be copied. Returns XML_STATUS_ERROR if out of memory,
- XML_STATUS_OK otherwise.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_SetBase(XML_Parser parser, const XML_Char *base);
-
-XMLPARSEAPI(const XML_Char *)
-XML_GetBase(XML_Parser parser);
-
-/* Returns the number of the attribute/value pairs passed in last call
- to the XML_StartElementHandler that were specified in the start-tag
- rather than defaulted. Each attribute/value pair counts as 2; thus
- this correspondds to an index into the atts array passed to the
- XML_StartElementHandler.
-*/
-XMLPARSEAPI(int)
-XML_GetSpecifiedAttributeCount(XML_Parser parser);
-
-/* Returns the index of the ID attribute passed in the last call to
- XML_StartElementHandler, or -1 if there is no ID attribute. Each
- attribute/value pair counts as 2; thus this correspondds to an
- index into the atts array passed to the XML_StartElementHandler.
-*/
-XMLPARSEAPI(int)
-XML_GetIdAttributeIndex(XML_Parser parser);
-
-#ifdef XML_ATTR_INFO
-/* Source file byte offsets for the start and end of attribute names and values.
- The value indices are exclusive of surrounding quotes; thus in a UTF-8 source
- file an attribute value of "blah" will yield:
- info->valueEnd - info->valueStart = 4 bytes.
-*/
-typedef struct {
- XML_Index nameStart; /* Offset to beginning of the attribute name. */
- XML_Index nameEnd; /* Offset after the attribute name's last byte. */
- XML_Index valueStart; /* Offset to beginning of the attribute value. */
- XML_Index valueEnd; /* Offset after the attribute value's last byte. */
-} XML_AttrInfo;
-
-/* Returns an array of XML_AttrInfo structures for the attribute/value pairs
- passed in last call to the XML_StartElementHandler that were specified
- in the start-tag rather than defaulted. Each attribute/value pair counts
- as 1; thus the number of entries in the array is
- XML_GetSpecifiedAttributeCount(parser) / 2.
-*/
-XMLPARSEAPI(const XML_AttrInfo *)
-XML_GetAttributeInfo(XML_Parser parser);
-#endif
-
-/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is
- detected. The last call to XML_Parse must have isFinal true; len
- may be zero for this call (or any other).
-
- Though the return values for these functions has always been
- described as a Boolean value, the implementation, at least for the
- 1.95.x series, has always returned exactly one of the XML_Status
- values.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
-
-XMLPARSEAPI(void *)
-XML_GetBuffer(XML_Parser parser, int len);
-
-XMLPARSEAPI(enum XML_Status)
-XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
-
-/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return.
- Must be called from within a call-back handler, except when aborting
- (resumable = 0) an already suspended parser. Some call-backs may
- still follow because they would otherwise get lost. Examples:
- - endElementHandler() for empty elements when stopped in
- startElementHandler(),
- - endNameSpaceDeclHandler() when stopped in endElementHandler(),
- and possibly others.
-
- Can be called from most handlers, including DTD related call-backs,
- except when parsing an external parameter entity and resumable != 0.
- Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise.
- Possible error codes:
- - XML_ERROR_SUSPENDED: when suspending an already suspended parser.
- - XML_ERROR_FINISHED: when the parser has already finished.
- - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE.
-
- When resumable != 0 (true) then parsing is suspended, that is,
- XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED.
- Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer()
- return XML_STATUS_ERROR with error code XML_ERROR_ABORTED.
-
- *Note*:
- This will be applied to the current parser instance only, that is, if
- there is a parent parser then it will continue parsing when the
- externalEntityRefHandler() returns. It is up to the implementation of
- the externalEntityRefHandler() to call XML_StopParser() on the parent
- parser (recursively), if one wants to stop parsing altogether.
-
- When suspended, parsing can be resumed by calling XML_ResumeParser().
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_StopParser(XML_Parser parser, XML_Bool resumable);
-
-/* Resumes parsing after it has been suspended with XML_StopParser().
- Must not be called from within a handler call-back. Returns same
- status codes as XML_Parse() or XML_ParseBuffer().
- Additional error code XML_ERROR_NOT_SUSPENDED possible.
-
- *Note*:
- This must be called on the most deeply nested child parser instance
- first, and on its parent parser only after the child parser has finished,
- to be applied recursively until the document entity's parser is restarted.
- That is, the parent parser will not resume by itself and it is up to the
- application to call XML_ResumeParser() on it at the appropriate moment.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_ResumeParser(XML_Parser parser);
-
-enum XML_Parsing {
- XML_INITIALIZED,
- XML_PARSING,
- XML_FINISHED,
- XML_SUSPENDED
-};
-
-typedef struct {
- enum XML_Parsing parsing;
- XML_Bool finalBuffer;
-} XML_ParsingStatus;
-
-/* Returns status of parser with respect to being initialized, parsing,
- finished, or suspended and processing the final buffer.
- XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus,
- XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED
-*/
-XMLPARSEAPI(void)
-XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
-
-/* Creates an XML_Parser object that can parse an external general
- entity; context is a '\0'-terminated string specifying the parse
- context; encoding is a '\0'-terminated string giving the name of
- the externally specified encoding, or NULL if there is no
- externally specified encoding. The context string consists of a
- sequence of tokens separated by formfeeds (\f); a token consisting
- of a name specifies that the general entity of the name is open; a
- token of the form prefix=uri specifies the namespace for a
- particular prefix; a token of the form =uri specifies the default
- namespace. This can be called at any point after the first call to
- an ExternalEntityRefHandler so longer as the parser has not yet
- been freed. The new parser is completely independent and may
- safely be used in a separate thread. The handlers and userData are
- initialized from the parser argument. Returns NULL if out of memory.
- Otherwise returns a new XML_Parser object.
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ExternalEntityParserCreate(XML_Parser parser,
- const XML_Char *context,
- const XML_Char *encoding);
-
-enum XML_ParamEntityParsing {
- XML_PARAM_ENTITY_PARSING_NEVER,
- XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE,
- XML_PARAM_ENTITY_PARSING_ALWAYS
-};
-
-/* Controls parsing of parameter entities (including the external DTD
- subset). If parsing of parameter entities is enabled, then
- references to external parameter entities (including the external
- DTD subset) will be passed to the handler set with
- XML_SetExternalEntityRefHandler. The context passed will be 0.
-
- Unlike external general entities, external parameter entities can
- only be parsed synchronously. If the external parameter entity is
- to be parsed, it must be parsed during the call to the external
- entity ref handler: the complete sequence of
- XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and
- XML_ParserFree calls must be made during this call. After
- XML_ExternalEntityParserCreate has been called to create the parser
- for the external parameter entity (context must be 0 for this
- call), it is illegal to make any calls on the old parser until
- XML_ParserFree has been called on the newly created parser.
- If the library has been compiled without support for parameter
- entity parsing (ie without XML_DTD being defined), then
- XML_SetParamEntityParsing will return 0 if parsing of parameter
- entities is requested; otherwise it will return non-zero.
- Note: If XML_SetParamEntityParsing is called after XML_Parse or
- XML_ParseBuffer, then it has no effect and will always return 0.
-*/
-XMLPARSEAPI(int)
-XML_SetParamEntityParsing(XML_Parser parser,
- enum XML_ParamEntityParsing parsing);
-
-/* Sets the hash salt to use for internal hash calculations.
- Helps in preventing DoS attacks based on predicting hash
- function behavior. This must be called before parsing is started.
- Returns 1 if successful, 0 when called after parsing has started.
-*/
-XMLPARSEAPI(int)
-XML_SetHashSalt(XML_Parser parser,
- unsigned long hash_salt);
-
-/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
- XML_GetErrorCode returns information about the error.
-*/
-XMLPARSEAPI(enum XML_Error)
-XML_GetErrorCode(XML_Parser parser);
-
-/* These functions return information about the current parse
- location. They may be called from any callback called to report
- some parse event; in this case the location is the location of the
- first of the sequence of characters that generated the event. When
- called from callbacks generated by declarations in the document
- prologue, the location identified isn't as neatly defined, but will
- be within the relevant markup. When called outside of the callback
- functions, the position indicated will be just past the last parse
- event (regardless of whether there was an associated callback).
-
- They may also be called after returning from a call to XML_Parse
- or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then
- the location is the location of the character at which the error
- was detected; otherwise the location is the location of the last
- parse event, as described above.
-*/
-XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser);
-XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser);
-XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser);
-
-/* Return the number of bytes in the current event.
- Returns 0 if the event is in an internal entity.
-*/
-XMLPARSEAPI(int)
-XML_GetCurrentByteCount(XML_Parser parser);
-
-/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets
- the integer pointed to by offset to the offset within this buffer
- of the current parse position, and sets the integer pointed to by size
- to the size of this buffer (the number of input bytes). Otherwise
- returns a NULL pointer. Also returns a NULL pointer if a parse isn't
- active.
-
- NOTE: The character pointer returned should not be used outside
- the handler that makes the call.
-*/
-XMLPARSEAPI(const char *)
-XML_GetInputContext(XML_Parser parser,
- int *offset,
- int *size);
-
-/* For backwards compatibility with previous versions. */
-#define XML_GetErrorLineNumber XML_GetCurrentLineNumber
-#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
-#define XML_GetErrorByteIndex XML_GetCurrentByteIndex
-
-/* Frees the content model passed to the element declaration handler */
-XMLPARSEAPI(void)
-XML_FreeContentModel(XML_Parser parser, XML_Content *model);
-
-/* Exposing the memory handling functions used in Expat */
-XMLPARSEAPI(void *)
-XML_MemMalloc(XML_Parser parser, size_t size);
-
-XMLPARSEAPI(void *)
-XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
-
-XMLPARSEAPI(void)
-XML_MemFree(XML_Parser parser, void *ptr);
-
-/* Frees memory used by the parser. */
-XMLPARSEAPI(void)
-XML_ParserFree(XML_Parser parser);
-
-/* Returns a string describing the error. */
-XMLPARSEAPI(const XML_LChar *)
-XML_ErrorString(enum XML_Error code);
-
-/* Return a string containing the version number of this expat */
-XMLPARSEAPI(const XML_LChar *)
-XML_ExpatVersion(void);
-
-typedef struct {
- int major;
- int minor;
- int micro;
-} XML_Expat_Version;
-
-/* Return an XML_Expat_Version structure containing numeric version
- number information for this version of expat.
-*/
-XMLPARSEAPI(XML_Expat_Version)
-XML_ExpatVersionInfo(void);
-
-/* Added in Expat 1.95.5. */
-enum XML_FeatureEnum {
- XML_FEATURE_END = 0,
- XML_FEATURE_UNICODE,
- XML_FEATURE_UNICODE_WCHAR_T,
- XML_FEATURE_DTD,
- XML_FEATURE_CONTEXT_BYTES,
- XML_FEATURE_MIN_SIZE,
- XML_FEATURE_SIZEOF_XML_CHAR,
- XML_FEATURE_SIZEOF_XML_LCHAR,
- XML_FEATURE_NS,
- XML_FEATURE_LARGE_SIZE,
- XML_FEATURE_ATTR_INFO
- /* Additional features must be added to the end of this enum. */
-};
-
-typedef struct {
- enum XML_FeatureEnum feature;
- const XML_LChar *name;
- long int value;
-} XML_Feature;
-
-XMLPARSEAPI(const XML_Feature *)
-XML_GetFeatureList(void);
-
-
-/* Expat follows the GNU/Linux convention of odd number minor version for
- beta/development releases and even number minor version for stable
- releases. Micro is bumped with each release, and set to 0 with each
- change to major or minor version.
-*/
-#define XML_MAJOR_VERSION 2
-#define XML_MINOR_VERSION 1
-#define XML_MICRO_VERSION 0
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not Expat_INCLUDED */
diff --git a/libcutl/cutl/details/expat/expat_external.h b/libcutl/cutl/details/expat/expat_external.h
deleted file mode 100644
index 926e32c..0000000
--- a/libcutl/cutl/details/expat/expat_external.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-#ifndef Expat_External_INCLUDED
-#define Expat_External_INCLUDED 1
-
-/* Link to Expat API statically */
-
-#define XML_STATIC 1
-
-/* External API definitions */
-
-#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
-#define XML_USE_MSC_EXTENSIONS 1
-#endif
-
-/* Expat tries very hard to make the API boundary very specifically
- defined. There are two macros defined to control this boundary;
- each of these can be defined before including this header to
- achieve some different behavior, but doing so it not recommended or
- tested frequently.
-
- XMLCALL - The calling convention to use for all calls across the
- "library boundary." This will default to cdecl, and
- try really hard to tell the compiler that's what we
- want.
-
- XMLIMPORT - Whatever magic is needed to note that a function is
- to be imported from a dynamically loaded library
- (.dll, .so, or .sl, depending on your platform).
-
- The XMLCALL macro was added in Expat 1.95.7. The only one which is
- expected to be directly useful in client code is XMLCALL.
-
- Note that on at least some Unix versions, the Expat library must be
- compiled with the cdecl calling convention as the default since
- system headers may assume the cdecl convention.
-*/
-#ifndef XMLCALL
-#if defined(_MSC_VER)
-#define XMLCALL __cdecl
-#elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER)
-#define XMLCALL __attribute__((cdecl))
-#else
-/* For any platform which uses this definition and supports more than
- one calling convention, we need to extend this definition to
- declare the convention used on that platform, if it's possible to
- do so.
-
- If this is the case for your platform, please file a bug report
- with information on how to identify your platform via the C
- pre-processor and how to specify the same calling convention as the
- platform's malloc() implementation.
-*/
-#define XMLCALL
-#endif
-#endif /* not defined XMLCALL */
-
-
-#if !defined(XML_STATIC) && !defined(XMLIMPORT)
-#ifndef XML_BUILDING_EXPAT
-/* using Expat from an application */
-
-#ifdef XML_USE_MSC_EXTENSIONS
-#define XMLIMPORT __declspec(dllimport)
-#endif
-
-#endif
-#endif /* not defined XML_STATIC */
-
-
-/* If we didn't define it above, define it away: */
-#ifndef XMLIMPORT
-#define XMLIMPORT
-#endif
-
-
-#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef XML_UNICODE_WCHAR_T
-#define XML_UNICODE
-#endif
-
-#ifdef XML_UNICODE /* Information is UTF-16 encoded. */
-#ifdef XML_UNICODE_WCHAR_T
-typedef wchar_t XML_Char;
-typedef wchar_t XML_LChar;
-#else
-typedef unsigned short XML_Char;
-typedef char XML_LChar;
-#endif /* XML_UNICODE_WCHAR_T */
-#else /* Information is UTF-8 encoded. */
-typedef char XML_Char;
-typedef char XML_LChar;
-#endif /* XML_UNICODE */
-
-#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */
-#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
-typedef __int64 XML_Index;
-typedef unsigned __int64 XML_Size;
-#else
-typedef long long XML_Index;
-typedef unsigned long long XML_Size;
-#endif
-#else
-typedef long XML_Index;
-typedef unsigned long XML_Size;
-#endif /* XML_LARGE_SIZE */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not Expat_External_INCLUDED */
diff --git a/libcutl/cutl/details/expat/iasciitab.h b/libcutl/cutl/details/expat/iasciitab.h
deleted file mode 100644
index 24a1d5c..0000000
--- a/libcutl/cutl/details/expat/iasciitab.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */
-/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
-/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML,
-/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
-/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
-/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
-/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
-/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
-/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
-/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
-/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
-/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,
diff --git a/libcutl/cutl/details/expat/internal.h b/libcutl/cutl/details/expat/internal.h
deleted file mode 100644
index dd54548..0000000
--- a/libcutl/cutl/details/expat/internal.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* internal.h
-
- Internal definitions used by Expat. This is not needed to compile
- client code.
-
- The following calling convention macros are defined for frequently
- called functions:
-
- FASTCALL - Used for those internal functions that have a simple
- body and a low number of arguments and local variables.
-
- PTRCALL - Used for functions called though function pointers.
-
- PTRFASTCALL - Like PTRCALL, but for low number of arguments.
-
- inline - Used for selected internal functions for which inlining
- may improve performance on some platforms.
-
- Note: Use of these macros is based on judgement, not hard rules,
- and therefore subject to change.
-*/
-
-#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__)
-/* We'll use this version by default only where we know it helps.
-
- regparm() generates warnings on Solaris boxes. See SF bug #692878.
-
- Instability reported with egcs on a RedHat Linux 7.3.
- Let's comment out:
- #define FASTCALL __attribute__((stdcall, regparm(3)))
- and let's try this:
-*/
-#define FASTCALL __attribute__((regparm(3)))
-#define PTRFASTCALL __attribute__((regparm(3)))
-#endif
-
-/* Using __fastcall seems to have an unexpected negative effect under
- MS VC++, especially for function pointers, so we won't use it for
- now on that platform. It may be reconsidered for a future release
- if it can be made more effective.
- Likely reason: __fastcall on Windows is like stdcall, therefore
- the compiler cannot perform stack optimizations for call clusters.
-*/
-
-/* Make sure all of these are defined if they aren't already. */
-
-#ifndef FASTCALL
-#define FASTCALL
-#endif
-
-#ifndef PTRCALL
-#define PTRCALL
-#endif
-
-#ifndef PTRFASTCALL
-#define PTRFASTCALL
-#endif
-
-#ifndef XML_MIN_SIZE
-#if !defined(__cplusplus) && !defined(inline)
-#ifdef __GNUC__
-#define inline __inline
-#endif /* __GNUC__ */
-#endif
-#endif /* XML_MIN_SIZE */
-
-#ifdef __cplusplus
-#define inline inline
-#else
-#ifndef inline
-#define inline
-#endif
-#endif
diff --git a/libcutl/cutl/details/expat/latin1tab.h b/libcutl/cutl/details/expat/latin1tab.h
deleted file mode 100644
index 53c25d7..0000000
--- a/libcutl/cutl/details/expat/latin1tab.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
-/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME,
-/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
-/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
diff --git a/libcutl/cutl/details/expat/nametab.h b/libcutl/cutl/details/expat/nametab.h
deleted file mode 100644
index b05e62c..0000000
--- a/libcutl/cutl/details/expat/nametab.h
+++ /dev/null
@@ -1,150 +0,0 @@
-static const unsigned namingBitmap[] = {
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,
-0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
-0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,
-0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
-0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
-0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
-0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
-0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
-0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,
-0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,
-0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
-0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,
-0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,
-0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
-0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,
-0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,
-0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
-0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,
-0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,
-0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,
-0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
-0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,
-0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,
-0x40000000, 0xF580C900, 0x00000007, 0x02010800,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
-0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
-0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
-0x00000000, 0x00004C40, 0x00000000, 0x00000000,
-0x00000007, 0x00000000, 0x00000000, 0x00000000,
-0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,
-0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,
-0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
-0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
-0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,
-0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
-0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,
-0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
-0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
-0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
-0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
-0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
-0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,
-0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,
-0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
-0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,
-0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,
-0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
-0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,
-0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,
-0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
-0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,
-0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,
-0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,
-0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
-0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
-0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
-0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF,
-};
-static const unsigned char nmstrtPages[] = {
-0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,
-0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
-0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
-0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-static const unsigned char namePages[] = {
-0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,
-0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
-0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
-0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
diff --git a/libcutl/cutl/details/expat/utf8tab.h b/libcutl/cutl/details/expat/utf8tab.h
deleted file mode 100644
index 7bb3e77..0000000
--- a/libcutl/cutl/details/expat/utf8tab.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-
-/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4,
-/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM,
diff --git a/libcutl/cutl/details/expat/xmlparse.c b/libcutl/cutl/details/expat/xmlparse.c
deleted file mode 100644
index d469102..0000000
--- a/libcutl/cutl/details/expat/xmlparse.c
+++ /dev/null
@@ -1,6397 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-#include <stddef.h>
-#include <string.h> /* memset(), memcpy() */
-#include <assert.h>
-#include <limits.h> /* UINT_MAX */
-#include <time.h> /* time() */
-
-#define XML_BUILDING_EXPAT 1
-
-#include <cutl/details/expat/config.h>
-
-#include <cutl/details/expat/ascii.h>
-#include <cutl/details/expat/expat.h>
-
-#ifdef XML_UNICODE
-#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX
-#define XmlConvert XmlUtf16Convert
-#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding
-#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS
-#define XmlEncode XmlUtf16Encode
-/* Using pointer subtraction to convert to integer type. */
-#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((char *)(s) - (char *)NULL) & 1))
-typedef unsigned short ICHAR;
-#else
-#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX
-#define XmlConvert XmlUtf8Convert
-#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding
-#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS
-#define XmlEncode XmlUtf8Encode
-#define MUST_CONVERT(enc, s) (!(enc)->isUtf8)
-typedef char ICHAR;
-#endif
-
-
-#ifndef XML_NS
-
-#define XmlInitEncodingNS XmlInitEncoding
-#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding
-#undef XmlGetInternalEncodingNS
-#define XmlGetInternalEncodingNS XmlGetInternalEncoding
-#define XmlParseXmlDeclNS XmlParseXmlDecl
-
-#endif
-
-#ifdef XML_UNICODE
-
-#ifdef XML_UNICODE_WCHAR_T
-#define XML_T(x) (const wchar_t)x
-#define XML_L(x) L ## x
-#else
-#define XML_T(x) (const unsigned short)x
-#define XML_L(x) x
-#endif
-
-#else
-
-#define XML_T(x) x
-#define XML_L(x) x
-
-#endif
-
-/* Round up n to be a multiple of sz, where sz is a power of 2. */
-#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1))
-
-/* Handle the case where memmove() doesn't exist. */
-#ifndef HAVE_MEMMOVE
-#ifdef HAVE_BCOPY
-#define memmove(d,s,l) bcopy((s),(d),(l))
-#else
-#error memmove does not exist on this platform, nor is a substitute available
-#endif /* HAVE_BCOPY */
-#endif /* HAVE_MEMMOVE */
-
-#include <cutl/details/expat/internal.h>
-#include <cutl/details/expat/xmltok.h>
-#include <cutl/details/expat/xmlrole.h>
-
-typedef const XML_Char *KEY;
-
-typedef struct {
- KEY name;
-} NAMED;
-
-typedef struct {
- NAMED **v;
- unsigned char power;
- size_t size;
- size_t used;
- const XML_Memory_Handling_Suite *mem;
-} HASH_TABLE;
-
-/* Basic character hash algorithm, taken from Python's string hash:
- h = h * 1000003 ^ character, the constant being a prime number.
-
-*/
-#ifdef XML_UNICODE
-#define CHAR_HASH(h, c) \
- (((h) * 0xF4243) ^ (unsigned short)(c))
-#else
-#define CHAR_HASH(h, c) \
- (((h) * 0xF4243) ^ (unsigned char)(c))
-#endif
-
-/* For probing (after a collision) we need a step size relative prime
- to the hash table size, which is a power of 2. We use double-hashing,
- since we can calculate a second hash value cheaply by taking those bits
- of the first hash value that were discarded (masked out) when the table
- index was calculated: index = hash & mask, where mask = table->size - 1.
- We limit the maximum step size to table->size / 4 (mask >> 2) and make
- it odd, since odd numbers are always relative prime to a power of 2.
-*/
-#define SECOND_HASH(hash, mask, power) \
- ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2))
-#define PROBE_STEP(hash, mask, power) \
- ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1))
-
-typedef struct {
- NAMED **p;
- NAMED **end;
-} HASH_TABLE_ITER;
-
-#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */
-#define INIT_DATA_BUF_SIZE 1024
-#define INIT_ATTS_SIZE 16
-#define INIT_ATTS_VERSION 0xFFFFFFFF
-#define INIT_BLOCK_SIZE 1024
-#define INIT_BUFFER_SIZE 1024
-
-#define EXPAND_SPARE 24
-
-typedef struct binding {
- struct prefix *prefix;
- struct binding *nextTagBinding;
- struct binding *prevPrefixBinding;
- const struct attribute_id *attId;
- XML_Char *uri;
- int uriLen;
- int uriAlloc;
-} BINDING;
-
-typedef struct prefix {
- const XML_Char *name;
- BINDING *binding;
-} PREFIX;
-
-typedef struct {
- const XML_Char *str;
- const XML_Char *localPart;
- const XML_Char *prefix;
- int strLen;
- int uriLen;
- int prefixLen;
-} TAG_NAME;
-
-/* TAG represents an open element.
- The name of the element is stored in both the document and API
- encodings. The memory buffer 'buf' is a separately-allocated
- memory area which stores the name. During the XML_Parse()/
- XMLParseBuffer() when the element is open, the memory for the 'raw'
- version of the name (in the document encoding) is shared with the
- document buffer. If the element is open across calls to
- XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to
- contain the 'raw' name as well.
-
- A parser re-uses these structures, maintaining a list of allocated
- TAG objects in a free list.
-*/
-typedef struct tag {
- struct tag *parent; /* parent of this element */
- const char *rawName; /* tagName in the original encoding */
- int rawNameLength;
- TAG_NAME name; /* tagName in the API encoding */
- char *buf; /* buffer for name components */
- char *bufEnd; /* end of the buffer */
- BINDING *bindings;
-} TAG;
-
-typedef struct {
- const XML_Char *name;
- const XML_Char *textPtr;
- int textLen; /* length in XML_Chars */
- int processed; /* # of processed bytes - when suspended */
- const XML_Char *systemId;
- const XML_Char *base;
- const XML_Char *publicId;
- const XML_Char *notation;
- XML_Bool open;
- XML_Bool is_param;
- XML_Bool is_internal; /* true if declared in internal subset outside PE */
-} ENTITY;
-
-typedef struct {
- enum XML_Content_Type type;
- enum XML_Content_Quant quant;
- const XML_Char * name;
- int firstchild;
- int lastchild;
- int childcnt;
- int nextsib;
-} CONTENT_SCAFFOLD;
-
-#define INIT_SCAFFOLD_ELEMENTS 32
-
-typedef struct block {
- struct block *next;
- int size;
- XML_Char s[1];
-} BLOCK;
-
-typedef struct {
- BLOCK *blocks;
- BLOCK *freeBlocks;
- const XML_Char *end;
- XML_Char *ptr;
- XML_Char *start;
- const XML_Memory_Handling_Suite *mem;
-} STRING_POOL;
-
-/* The XML_Char before the name is used to determine whether
- an attribute has been specified. */
-typedef struct attribute_id {
- XML_Char *name;
- PREFIX *prefix;
- XML_Bool maybeTokenized;
- XML_Bool xmlns;
-} ATTRIBUTE_ID;
-
-typedef struct {
- const ATTRIBUTE_ID *id;
- XML_Bool isCdata;
- const XML_Char *value;
-} DEFAULT_ATTRIBUTE;
-
-typedef struct {
- unsigned long version;
- unsigned long hash;
- const XML_Char *uriName;
-} NS_ATT;
-
-typedef struct {
- const XML_Char *name;
- PREFIX *prefix;
- const ATTRIBUTE_ID *idAtt;
- int nDefaultAtts;
- int allocDefaultAtts;
- DEFAULT_ATTRIBUTE *defaultAtts;
-} ELEMENT_TYPE;
-
-typedef struct {
- HASH_TABLE generalEntities;
- HASH_TABLE elementTypes;
- HASH_TABLE attributeIds;
- HASH_TABLE prefixes;
- STRING_POOL pool;
- STRING_POOL entityValuePool;
- /* false once a parameter entity reference has been skipped */
- XML_Bool keepProcessing;
- /* true once an internal or external PE reference has been encountered;
- this includes the reference to an external subset */
- XML_Bool hasParamEntityRefs;
- XML_Bool standalone;
-#ifdef XML_DTD
- /* indicates if external PE has been read */
- XML_Bool paramEntityRead;
- HASH_TABLE paramEntities;
-#endif /* XML_DTD */
- PREFIX defaultPrefix;
- /* === scaffolding for building content model === */
- XML_Bool in_eldecl;
- CONTENT_SCAFFOLD *scaffold;
- unsigned contentStringLen;
- unsigned scaffSize;
- unsigned scaffCount;
- int scaffLevel;
- int *scaffIndex;
-} DTD;
-
-typedef struct open_internal_entity {
- const char *internalEventPtr;
- const char *internalEventEndPtr;
- struct open_internal_entity *next;
- ENTITY *entity;
- int startTagLevel;
- XML_Bool betweenDecl; /* WFC: PE Between Declarations */
-} OPEN_INTERNAL_ENTITY;
-
-typedef enum XML_Error PTRCALL Processor(XML_Parser parser,
- const char *start,
- const char *end,
- const char **endPtr);
-
-static Processor prologProcessor;
-static Processor prologInitProcessor;
-static Processor contentProcessor;
-static Processor cdataSectionProcessor;
-#ifdef XML_DTD
-static Processor ignoreSectionProcessor;
-static Processor externalParEntProcessor;
-static Processor externalParEntInitProcessor;
-static Processor entityValueProcessor;
-static Processor entityValueInitProcessor;
-#endif /* XML_DTD */
-static Processor epilogProcessor;
-static Processor errorProcessor;
-static Processor externalEntityInitProcessor;
-static Processor externalEntityInitProcessor2;
-static Processor externalEntityInitProcessor3;
-static Processor externalEntityContentProcessor;
-static Processor internalEntityProcessor;
-
-static enum XML_Error
-handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName);
-static enum XML_Error
-processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
- const char *s, const char *next);
-static enum XML_Error
-initializeEncoding(XML_Parser parser);
-static enum XML_Error
-doProlog(XML_Parser parser, const ENCODING *enc, const char *s,
- const char *end, int tok, const char *next, const char **nextPtr,
- XML_Bool haveMore);
-static enum XML_Error
-processInternalEntity(XML_Parser parser, ENTITY *entity,
- XML_Bool betweenDecl);
-static enum XML_Error
-doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
- const char *start, const char *end, const char **endPtr,
- XML_Bool haveMore);
-static enum XML_Error
-doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr,
- const char *end, const char **nextPtr, XML_Bool haveMore);
-#ifdef XML_DTD
-static enum XML_Error
-doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr,
- const char *end, const char **nextPtr, XML_Bool haveMore);
-#endif /* XML_DTD */
-
-static enum XML_Error
-storeAtts(XML_Parser parser, const ENCODING *, const char *s,
- TAG_NAME *tagNamePtr, BINDING **bindingsPtr);
-static enum XML_Error
-addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
- const XML_Char *uri, BINDING **bindingsPtr);
-static int
-defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata,
- XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser);
-static enum XML_Error
-storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
- const char *, const char *, STRING_POOL *);
-static enum XML_Error
-appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
- const char *, const char *, STRING_POOL *);
-static ATTRIBUTE_ID *
-getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start,
- const char *end);
-static int
-setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *);
-static enum XML_Error
-storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start,
- const char *end);
-static int
-reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
- const char *start, const char *end);
-static int
-reportComment(XML_Parser parser, const ENCODING *enc, const char *start,
- const char *end);
-static void
-reportDefault(XML_Parser parser, const ENCODING *enc, const char *start,
- const char *end);
-
-static const XML_Char * getContext(XML_Parser parser);
-static XML_Bool
-setContext(XML_Parser parser, const XML_Char *context);
-
-static void FASTCALL normalizePublicId(XML_Char *s);
-
-static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms);
-/* do not call if parentParser != NULL */
-static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms);
-static void
-dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms);
-static int
-dtdCopy(XML_Parser oldParser,
- DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms);
-static int
-copyEntityTable(XML_Parser oldParser,
- HASH_TABLE *, STRING_POOL *, const HASH_TABLE *);
-static NAMED *
-lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize);
-static void FASTCALL
-hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms);
-static void FASTCALL hashTableClear(HASH_TABLE *);
-static void FASTCALL hashTableDestroy(HASH_TABLE *);
-static void FASTCALL
-hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *);
-static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *);
-
-static void FASTCALL
-poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms);
-static void FASTCALL poolClear(STRING_POOL *);
-static void FASTCALL poolDestroy(STRING_POOL *);
-static XML_Char *
-poolAppend(STRING_POOL *pool, const ENCODING *enc,
- const char *ptr, const char *end);
-static XML_Char *
-poolStoreString(STRING_POOL *pool, const ENCODING *enc,
- const char *ptr, const char *end);
-static XML_Bool FASTCALL poolGrow(STRING_POOL *pool);
-static const XML_Char * FASTCALL
-poolCopyString(STRING_POOL *pool, const XML_Char *s);
-static const XML_Char *
-poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n);
-static const XML_Char * FASTCALL
-poolAppendString(STRING_POOL *pool, const XML_Char *s);
-
-static int FASTCALL nextScaffoldPart(XML_Parser parser);
-static XML_Content * build_model(XML_Parser parser);
-static ELEMENT_TYPE *
-getElementType(XML_Parser parser, const ENCODING *enc,
- const char *ptr, const char *end);
-
-static unsigned long generate_hash_secret_salt(void);
-static XML_Bool startParsing(XML_Parser parser);
-
-static XML_Parser
-parserCreate(const XML_Char *encodingName,
- const XML_Memory_Handling_Suite *memsuite,
- const XML_Char *nameSep,
- DTD *dtd);
-
-static void
-parserInit(XML_Parser parser, const XML_Char *encodingName);
-
-#define poolStart(pool) ((pool)->start)
-#define poolEnd(pool) ((pool)->ptr)
-#define poolLength(pool) ((pool)->ptr - (pool)->start)
-#define poolChop(pool) ((void)--(pool->ptr))
-#define poolLastChar(pool) (((pool)->ptr)[-1])
-#define poolDiscard(pool) ((pool)->ptr = (pool)->start)
-#define poolFinish(pool) ((pool)->start = (pool)->ptr)
-#define poolAppendChar(pool, c) \
- (((pool)->ptr == (pool)->end && !poolGrow(pool)) \
- ? 0 \
- : ((*((pool)->ptr)++ = c), 1))
-
-struct XML_ParserStruct {
- /* The first member must be userData so that the XML_GetUserData
- macro works. */
- void *m_userData;
- void *m_handlerArg;
- char *m_buffer;
- const XML_Memory_Handling_Suite m_mem;
- /* first character to be parsed */
- const char *m_bufferPtr;
- /* past last character to be parsed */
- char *m_bufferEnd;
- /* allocated end of buffer */
- const char *m_bufferLim;
- XML_Index m_parseEndByteIndex;
- const char *m_parseEndPtr;
- XML_Char *m_dataBuf;
- XML_Char *m_dataBufEnd;
- XML_StartElementHandler m_startElementHandler;
- XML_EndElementHandler m_endElementHandler;
- XML_CharacterDataHandler m_characterDataHandler;
- XML_ProcessingInstructionHandler m_processingInstructionHandler;
- XML_CommentHandler m_commentHandler;
- XML_StartCdataSectionHandler m_startCdataSectionHandler;
- XML_EndCdataSectionHandler m_endCdataSectionHandler;
- XML_DefaultHandler m_defaultHandler;
- XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler;
- XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler;
- XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler;
- XML_NotationDeclHandler m_notationDeclHandler;
- XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler;
- XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler;
- XML_NotStandaloneHandler m_notStandaloneHandler;
- XML_ExternalEntityRefHandler m_externalEntityRefHandler;
- XML_Parser m_externalEntityRefHandlerArg;
- XML_SkippedEntityHandler m_skippedEntityHandler;
- XML_UnknownEncodingHandler m_unknownEncodingHandler;
- XML_ElementDeclHandler m_elementDeclHandler;
- XML_AttlistDeclHandler m_attlistDeclHandler;
- XML_EntityDeclHandler m_entityDeclHandler;
- XML_XmlDeclHandler m_xmlDeclHandler;
- const ENCODING *m_encoding;
- INIT_ENCODING m_initEncoding;
- const ENCODING *m_internalEncoding;
- const XML_Char *m_protocolEncodingName;
- XML_Bool m_ns;
- XML_Bool m_ns_triplets;
- void *m_unknownEncodingMem;
- void *m_unknownEncodingData;
- void *m_unknownEncodingHandlerData;
- void (XMLCALL *m_unknownEncodingRelease)(void *);
- PROLOG_STATE m_prologState;
- Processor *m_processor;
- enum XML_Error m_errorCode;
- const char *m_eventPtr;
- const char *m_eventEndPtr;
- const char *m_positionPtr;
- OPEN_INTERNAL_ENTITY *m_openInternalEntities;
- OPEN_INTERNAL_ENTITY *m_freeInternalEntities;
- XML_Bool m_defaultExpandInternalEntities;
- int m_tagLevel;
- ENTITY *m_declEntity;
- const XML_Char *m_doctypeName;
- const XML_Char *m_doctypeSysid;
- const XML_Char *m_doctypePubid;
- const XML_Char *m_declAttributeType;
- const XML_Char *m_declNotationName;
- const XML_Char *m_declNotationPublicId;
- ELEMENT_TYPE *m_declElementType;
- ATTRIBUTE_ID *m_declAttributeId;
- XML_Bool m_declAttributeIsCdata;
- XML_Bool m_declAttributeIsId;
- DTD *m_dtd;
- const XML_Char *m_curBase;
- TAG *m_tagStack;
- TAG *m_freeTagList;
- BINDING *m_inheritedBindings;
- BINDING *m_freeBindingList;
- int m_attsSize;
- int m_nSpecifiedAtts;
- int m_idAttIndex;
- ATTRIBUTE *m_atts;
- NS_ATT *m_nsAtts;
- unsigned long m_nsAttsVersion;
- unsigned char m_nsAttsPower;
-#ifdef XML_ATTR_INFO
- XML_AttrInfo *m_attInfo;
-#endif
- POSITION m_position;
- STRING_POOL m_tempPool;
- STRING_POOL m_temp2Pool;
- char *m_groupConnector;
- unsigned int m_groupSize;
- XML_Char m_namespaceSeparator;
- XML_Parser m_parentParser;
- XML_ParsingStatus m_parsingStatus;
-#ifdef XML_DTD
- XML_Bool m_isParamEntity;
- XML_Bool m_useForeignDTD;
- enum XML_ParamEntityParsing m_paramEntityParsing;
-#endif
- unsigned long m_hash_secret_salt;
-};
-
-#define MALLOC(s) (parser->m_mem.malloc_fcn((s)))
-#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s)))
-#define FREE(p) (parser->m_mem.free_fcn((p)))
-
-#define userData (parser->m_userData)
-#define handlerArg (parser->m_handlerArg)
-#define startElementHandler (parser->m_startElementHandler)
-#define endElementHandler (parser->m_endElementHandler)
-#define characterDataHandler (parser->m_characterDataHandler)
-#define processingInstructionHandler \
- (parser->m_processingInstructionHandler)
-#define commentHandler (parser->m_commentHandler)
-#define startCdataSectionHandler \
- (parser->m_startCdataSectionHandler)
-#define endCdataSectionHandler (parser->m_endCdataSectionHandler)
-#define defaultHandler (parser->m_defaultHandler)
-#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler)
-#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler)
-#define unparsedEntityDeclHandler \
- (parser->m_unparsedEntityDeclHandler)
-#define notationDeclHandler (parser->m_notationDeclHandler)
-#define startNamespaceDeclHandler \
- (parser->m_startNamespaceDeclHandler)
-#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler)
-#define notStandaloneHandler (parser->m_notStandaloneHandler)
-#define externalEntityRefHandler \
- (parser->m_externalEntityRefHandler)
-#define externalEntityRefHandlerArg \
- (parser->m_externalEntityRefHandlerArg)
-#define internalEntityRefHandler \
- (parser->m_internalEntityRefHandler)
-#define skippedEntityHandler (parser->m_skippedEntityHandler)
-#define unknownEncodingHandler (parser->m_unknownEncodingHandler)
-#define elementDeclHandler (parser->m_elementDeclHandler)
-#define attlistDeclHandler (parser->m_attlistDeclHandler)
-#define entityDeclHandler (parser->m_entityDeclHandler)
-#define xmlDeclHandler (parser->m_xmlDeclHandler)
-#define encoding (parser->m_encoding)
-#define initEncoding (parser->m_initEncoding)
-#define internalEncoding (parser->m_internalEncoding)
-#define unknownEncodingMem (parser->m_unknownEncodingMem)
-#define unknownEncodingData (parser->m_unknownEncodingData)
-#define unknownEncodingHandlerData \
- (parser->m_unknownEncodingHandlerData)
-#define unknownEncodingRelease (parser->m_unknownEncodingRelease)
-#define protocolEncodingName (parser->m_protocolEncodingName)
-#define ns (parser->m_ns)
-#define ns_triplets (parser->m_ns_triplets)
-#define prologState (parser->m_prologState)
-#define processor (parser->m_processor)
-#define errorCode (parser->m_errorCode)
-#define eventPtr (parser->m_eventPtr)
-#define eventEndPtr (parser->m_eventEndPtr)
-#define positionPtr (parser->m_positionPtr)
-#define position (parser->m_position)
-#define openInternalEntities (parser->m_openInternalEntities)
-#define freeInternalEntities (parser->m_freeInternalEntities)
-#define defaultExpandInternalEntities \
- (parser->m_defaultExpandInternalEntities)
-#define tagLevel (parser->m_tagLevel)
-#define buffer (parser->m_buffer)
-#define bufferPtr (parser->m_bufferPtr)
-#define bufferEnd (parser->m_bufferEnd)
-#define parseEndByteIndex (parser->m_parseEndByteIndex)
-#define parseEndPtr (parser->m_parseEndPtr)
-#define bufferLim (parser->m_bufferLim)
-#define dataBuf (parser->m_dataBuf)
-#define dataBufEnd (parser->m_dataBufEnd)
-#define _dtd (parser->m_dtd)
-#define curBase (parser->m_curBase)
-#define declEntity (parser->m_declEntity)
-#define doctypeName (parser->m_doctypeName)
-#define doctypeSysid (parser->m_doctypeSysid)
-#define doctypePubid (parser->m_doctypePubid)
-#define declAttributeType (parser->m_declAttributeType)
-#define declNotationName (parser->m_declNotationName)
-#define declNotationPublicId (parser->m_declNotationPublicId)
-#define declElementType (parser->m_declElementType)
-#define declAttributeId (parser->m_declAttributeId)
-#define declAttributeIsCdata (parser->m_declAttributeIsCdata)
-#define declAttributeIsId (parser->m_declAttributeIsId)
-#define freeTagList (parser->m_freeTagList)
-#define freeBindingList (parser->m_freeBindingList)
-#define inheritedBindings (parser->m_inheritedBindings)
-#define tagStack (parser->m_tagStack)
-#define atts (parser->m_atts)
-#define attsSize (parser->m_attsSize)
-#define nSpecifiedAtts (parser->m_nSpecifiedAtts)
-#define idAttIndex (parser->m_idAttIndex)
-#define nsAtts (parser->m_nsAtts)
-#define nsAttsVersion (parser->m_nsAttsVersion)
-#define nsAttsPower (parser->m_nsAttsPower)
-#define attInfo (parser->m_attInfo)
-#define tempPool (parser->m_tempPool)
-#define temp2Pool (parser->m_temp2Pool)
-#define groupConnector (parser->m_groupConnector)
-#define groupSize (parser->m_groupSize)
-#define namespaceSeparator (parser->m_namespaceSeparator)
-#define parentParser (parser->m_parentParser)
-#define ps_parsing (parser->m_parsingStatus.parsing)
-#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer)
-#ifdef XML_DTD
-#define isParamEntity (parser->m_isParamEntity)
-#define useForeignDTD (parser->m_useForeignDTD)
-#define paramEntityParsing (parser->m_paramEntityParsing)
-#endif /* XML_DTD */
-#define hash_secret_salt (parser->m_hash_secret_salt)
-
-XML_Parser XMLCALL
-XML_ParserCreate(const XML_Char *encodingName)
-{
- return XML_ParserCreate_MM(encodingName, NULL, NULL);
-}
-
-XML_Parser XMLCALL
-XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep)
-{
- XML_Char tmp[2];
- *tmp = nsSep;
- return XML_ParserCreate_MM(encodingName, NULL, tmp);
-}
-
-static const XML_Char implicitContext[] = {
- ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, ASCII_t, ASCII_t, ASCII_p,
- ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w,
- ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g,
- ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9,
- ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e,
- ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0'
-};
-
-static unsigned long
-generate_hash_secret_salt(void)
-{
- unsigned int seed = time(NULL) % UINT_MAX;
- srand(seed);
- return rand();
-}
-
-static XML_Bool /* only valid for root parser */
-startParsing(XML_Parser parser)
-{
- /* hash functions must be initialized before setContext() is called */
- if (hash_secret_salt == 0)
- hash_secret_salt = generate_hash_secret_salt();
- if (ns) {
- /* implicit context only set for root parser, since child
- parsers (i.e. external entity parsers) will inherit it
- */
- return setContext(parser, implicitContext);
- }
- return XML_TRUE;
-}
-
-XML_Parser XMLCALL
-XML_ParserCreate_MM(const XML_Char *encodingName,
- const XML_Memory_Handling_Suite *memsuite,
- const XML_Char *nameSep)
-{
- return parserCreate(encodingName, memsuite, nameSep, NULL);
-}
-
-static XML_Parser
-parserCreate(const XML_Char *encodingName,
- const XML_Memory_Handling_Suite *memsuite,
- const XML_Char *nameSep,
- DTD *dtd)
-{
- XML_Parser parser;
-
- if (memsuite) {
- XML_Memory_Handling_Suite *mtemp;
- parser = (XML_Parser)
- memsuite->malloc_fcn(sizeof(struct XML_ParserStruct));
- if (parser != NULL) {
- mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);
- mtemp->malloc_fcn = memsuite->malloc_fcn;
- mtemp->realloc_fcn = memsuite->realloc_fcn;
- mtemp->free_fcn = memsuite->free_fcn;
- }
- }
- else {
- XML_Memory_Handling_Suite *mtemp;
- parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct));
- if (parser != NULL) {
- mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);
- mtemp->malloc_fcn = malloc;
- mtemp->realloc_fcn = realloc;
- mtemp->free_fcn = free;
- }
- }
-
- if (!parser)
- return parser;
-
- buffer = NULL;
- bufferLim = NULL;
-
- attsSize = INIT_ATTS_SIZE;
- atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE));
- if (atts == NULL) {
- FREE(parser);
- return NULL;
- }
-#ifdef XML_ATTR_INFO
- attInfo = (XML_AttrInfo*)MALLOC(attsSize * sizeof(XML_AttrInfo));
- if (attInfo == NULL) {
- FREE(atts);
- FREE(parser);
- return NULL;
- }
-#endif
- dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char));
- if (dataBuf == NULL) {
- FREE(atts);
-#ifdef XML_ATTR_INFO
- FREE(attInfo);
-#endif
- FREE(parser);
- return NULL;
- }
- dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE;
-
- if (dtd)
- _dtd = dtd;
- else {
- _dtd = dtdCreate(&parser->m_mem);
- if (_dtd == NULL) {
- FREE(dataBuf);
- FREE(atts);
-#ifdef XML_ATTR_INFO
- FREE(attInfo);
-#endif
- FREE(parser);
- return NULL;
- }
- }
-
- freeBindingList = NULL;
- freeTagList = NULL;
- freeInternalEntities = NULL;
-
- groupSize = 0;
- groupConnector = NULL;
-
- unknownEncodingHandler = NULL;
- unknownEncodingHandlerData = NULL;
-
- namespaceSeparator = ASCII_EXCL;
- ns = XML_FALSE;
- ns_triplets = XML_FALSE;
-
- nsAtts = NULL;
- nsAttsVersion = 0;
- nsAttsPower = 0;
-
- poolInit(&tempPool, &(parser->m_mem));
- poolInit(&temp2Pool, &(parser->m_mem));
- parserInit(parser, encodingName);
-
- if (encodingName && !protocolEncodingName) {
- XML_ParserFree(parser);
- return NULL;
- }
-
- if (nameSep) {
- ns = XML_TRUE;
- internalEncoding = XmlGetInternalEncodingNS();
- namespaceSeparator = *nameSep;
- }
- else {
- internalEncoding = XmlGetInternalEncoding();
- }
-
- return parser;
-}
-
-static void
-parserInit(XML_Parser parser, const XML_Char *encodingName)
-{
- processor = prologInitProcessor;
- XmlPrologStateInit(&prologState);
- protocolEncodingName = (encodingName != NULL
- ? poolCopyString(&tempPool, encodingName)
- : NULL);
- curBase = NULL;
- XmlInitEncoding(&initEncoding, &encoding, 0);
- userData = NULL;
- handlerArg = NULL;
- startElementHandler = NULL;
- endElementHandler = NULL;
- characterDataHandler = NULL;
- processingInstructionHandler = NULL;
- commentHandler = NULL;
- startCdataSectionHandler = NULL;
- endCdataSectionHandler = NULL;
- defaultHandler = NULL;
- startDoctypeDeclHandler = NULL;
- endDoctypeDeclHandler = NULL;
- unparsedEntityDeclHandler = NULL;
- notationDeclHandler = NULL;
- startNamespaceDeclHandler = NULL;
- endNamespaceDeclHandler = NULL;
- notStandaloneHandler = NULL;
- externalEntityRefHandler = NULL;
- externalEntityRefHandlerArg = parser;
- skippedEntityHandler = NULL;
- elementDeclHandler = NULL;
- attlistDeclHandler = NULL;
- entityDeclHandler = NULL;
- xmlDeclHandler = NULL;
- bufferPtr = buffer;
- bufferEnd = buffer;
- parseEndByteIndex = 0;
- parseEndPtr = NULL;
- declElementType = NULL;
- declAttributeId = NULL;
- declEntity = NULL;
- doctypeName = NULL;
- doctypeSysid = NULL;
- doctypePubid = NULL;
- declAttributeType = NULL;
- declNotationName = NULL;
- declNotationPublicId = NULL;
- declAttributeIsCdata = XML_FALSE;
- declAttributeIsId = XML_FALSE;
- memset(&position, 0, sizeof(POSITION));
- errorCode = XML_ERROR_NONE;
- eventPtr = NULL;
- eventEndPtr = NULL;
- positionPtr = NULL;
- openInternalEntities = NULL;
- defaultExpandInternalEntities = XML_TRUE;
- tagLevel = 0;
- tagStack = NULL;
- inheritedBindings = NULL;
- nSpecifiedAtts = 0;
- unknownEncodingMem = NULL;
- unknownEncodingRelease = NULL;
- unknownEncodingData = NULL;
- parentParser = NULL;
- ps_parsing = XML_INITIALIZED;
-#ifdef XML_DTD
- isParamEntity = XML_FALSE;
- useForeignDTD = XML_FALSE;
- paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
-#endif
- hash_secret_salt = 0;
-}
-
-/* moves list of bindings to freeBindingList */
-static void FASTCALL
-moveToFreeBindingList(XML_Parser parser, BINDING *bindings)
-{
- while (bindings) {
- BINDING *b = bindings;
- bindings = bindings->nextTagBinding;
- b->nextTagBinding = freeBindingList;
- freeBindingList = b;
- }
-}
-
-XML_Bool XMLCALL
-XML_ParserReset(XML_Parser parser, const XML_Char *encodingName)
-{
- TAG *tStk;
- OPEN_INTERNAL_ENTITY *openEntityList;
- if (parentParser)
- return XML_FALSE;
- /* move tagStack to freeTagList */
- tStk = tagStack;
- while (tStk) {
- TAG *tag = tStk;
- tStk = tStk->parent;
- tag->parent = freeTagList;
- moveToFreeBindingList(parser, tag->bindings);
- tag->bindings = NULL;
- freeTagList = tag;
- }
- /* move openInternalEntities to freeInternalEntities */
- openEntityList = openInternalEntities;
- while (openEntityList) {
- OPEN_INTERNAL_ENTITY *openEntity = openEntityList;
- openEntityList = openEntity->next;
- openEntity->next = freeInternalEntities;
- freeInternalEntities = openEntity;
- }
- moveToFreeBindingList(parser, inheritedBindings);
- FREE(unknownEncodingMem);
- if (unknownEncodingRelease)
- unknownEncodingRelease(unknownEncodingData);
- poolClear(&tempPool);
- poolClear(&temp2Pool);
- parserInit(parser, encodingName);
- dtdReset(_dtd, &parser->m_mem);
- return XML_TRUE;
-}
-
-enum XML_Status XMLCALL
-XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName)
-{
- /* Block after XML_Parse()/XML_ParseBuffer() has been called.
- XXX There's no way for the caller to determine which of the
- XXX possible error cases caused the XML_STATUS_ERROR return.
- */
- if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
- return XML_STATUS_ERROR;
- if (encodingName == NULL)
- protocolEncodingName = NULL;
- else {
- protocolEncodingName = poolCopyString(&tempPool, encodingName);
- if (!protocolEncodingName)
- return XML_STATUS_ERROR;
- }
- return XML_STATUS_OK;
-}
-
-XML_Parser XMLCALL
-XML_ExternalEntityParserCreate(XML_Parser oldParser,
- const XML_Char *context,
- const XML_Char *encodingName)
-{
- XML_Parser parser = oldParser;
- DTD *newDtd = NULL;
- DTD *oldDtd = _dtd;
- XML_StartElementHandler oldStartElementHandler = startElementHandler;
- XML_EndElementHandler oldEndElementHandler = endElementHandler;
- XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler;
- XML_ProcessingInstructionHandler oldProcessingInstructionHandler
- = processingInstructionHandler;
- XML_CommentHandler oldCommentHandler = commentHandler;
- XML_StartCdataSectionHandler oldStartCdataSectionHandler
- = startCdataSectionHandler;
- XML_EndCdataSectionHandler oldEndCdataSectionHandler
- = endCdataSectionHandler;
- XML_DefaultHandler oldDefaultHandler = defaultHandler;
- XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler
- = unparsedEntityDeclHandler;
- XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler;
- XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler
- = startNamespaceDeclHandler;
- XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler
- = endNamespaceDeclHandler;
- XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler;
- XML_ExternalEntityRefHandler oldExternalEntityRefHandler
- = externalEntityRefHandler;
- XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler;
- XML_UnknownEncodingHandler oldUnknownEncodingHandler
- = unknownEncodingHandler;
- XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler;
- XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler;
- XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler;
- XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler;
- ELEMENT_TYPE * oldDeclElementType = declElementType;
-
- void *oldUserData = userData;
- void *oldHandlerArg = handlerArg;
- XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities;
- XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg;
-#ifdef XML_DTD
- enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing;
- int oldInEntityValue = prologState.inEntityValue;
-#endif
- XML_Bool oldns_triplets = ns_triplets;
- /* Note that the new parser shares the same hash secret as the old
- parser, so that dtdCopy and copyEntityTable can lookup values
- from hash tables associated with either parser without us having
- to worry which hash secrets each table has.
- */
- unsigned long oldhash_secret_salt = hash_secret_salt;
-
-#ifdef XML_DTD
- if (!context)
- newDtd = oldDtd;
-#endif /* XML_DTD */
-
- /* Note that the magical uses of the pre-processor to make field
- access look more like C++ require that `parser' be overwritten
- here. This makes this function more painful to follow than it
- would be otherwise.
- */
- if (ns) {
- XML_Char tmp[2];
- *tmp = namespaceSeparator;
- parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd);
- }
- else {
- parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd);
- }
-
- if (!parser)
- return NULL;
-
- startElementHandler = oldStartElementHandler;
- endElementHandler = oldEndElementHandler;
- characterDataHandler = oldCharacterDataHandler;
- processingInstructionHandler = oldProcessingInstructionHandler;
- commentHandler = oldCommentHandler;
- startCdataSectionHandler = oldStartCdataSectionHandler;
- endCdataSectionHandler = oldEndCdataSectionHandler;
- defaultHandler = oldDefaultHandler;
- unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler;
- notationDeclHandler = oldNotationDeclHandler;
- startNamespaceDeclHandler = oldStartNamespaceDeclHandler;
- endNamespaceDeclHandler = oldEndNamespaceDeclHandler;
- notStandaloneHandler = oldNotStandaloneHandler;
- externalEntityRefHandler = oldExternalEntityRefHandler;
- skippedEntityHandler = oldSkippedEntityHandler;
- unknownEncodingHandler = oldUnknownEncodingHandler;
- elementDeclHandler = oldElementDeclHandler;
- attlistDeclHandler = oldAttlistDeclHandler;
- entityDeclHandler = oldEntityDeclHandler;
- xmlDeclHandler = oldXmlDeclHandler;
- declElementType = oldDeclElementType;
- userData = oldUserData;
- if (oldUserData == oldHandlerArg)
- handlerArg = userData;
- else
- handlerArg = parser;
- if (oldExternalEntityRefHandlerArg != oldParser)
- externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg;
- defaultExpandInternalEntities = oldDefaultExpandInternalEntities;
- ns_triplets = oldns_triplets;
- hash_secret_salt = oldhash_secret_salt;
- parentParser = oldParser;
-#ifdef XML_DTD
- paramEntityParsing = oldParamEntityParsing;
- prologState.inEntityValue = oldInEntityValue;
- if (context) {
-#endif /* XML_DTD */
- if (!dtdCopy(oldParser, _dtd, oldDtd, &parser->m_mem)
- || !setContext(parser, context)) {
- XML_ParserFree(parser);
- return NULL;
- }
- processor = externalEntityInitProcessor;
-#ifdef XML_DTD
- }
- else {
- /* The DTD instance referenced by _dtd is shared between the document's
- root parser and external PE parsers, therefore one does not need to
- call setContext. In addition, one also *must* not call setContext,
- because this would overwrite existing prefix->binding pointers in
- _dtd with ones that get destroyed with the external PE parser.
- This would leave those prefixes with dangling pointers.
- */
- isParamEntity = XML_TRUE;
- XmlPrologStateInitExternalEntity(&prologState);
- processor = externalParEntInitProcessor;
- }
-#endif /* XML_DTD */
- return parser;
-}
-
-static void FASTCALL
-destroyBindings(BINDING *bindings, XML_Parser parser)
-{
- for (;;) {
- BINDING *b = bindings;
- if (!b)
- break;
- bindings = b->nextTagBinding;
- FREE(b->uri);
- FREE(b);
- }
-}
-
-void XMLCALL
-XML_ParserFree(XML_Parser parser)
-{
- TAG *tagList;
- OPEN_INTERNAL_ENTITY *entityList;
- if (parser == NULL)
- return;
- /* free tagStack and freeTagList */
- tagList = tagStack;
- for (;;) {
- TAG *p;
- if (tagList == NULL) {
- if (freeTagList == NULL)
- break;
- tagList = freeTagList;
- freeTagList = NULL;
- }
- p = tagList;
- tagList = tagList->parent;
- FREE(p->buf);
- destroyBindings(p->bindings, parser);
- FREE(p);
- }
- /* free openInternalEntities and freeInternalEntities */
- entityList = openInternalEntities;
- for (;;) {
- OPEN_INTERNAL_ENTITY *openEntity;
- if (entityList == NULL) {
- if (freeInternalEntities == NULL)
- break;
- entityList = freeInternalEntities;
- freeInternalEntities = NULL;
- }
- openEntity = entityList;
- entityList = entityList->next;
- FREE(openEntity);
- }
-
- destroyBindings(freeBindingList, parser);
- destroyBindings(inheritedBindings, parser);
- poolDestroy(&tempPool);
- poolDestroy(&temp2Pool);
-#ifdef XML_DTD
- /* external parameter entity parsers share the DTD structure
- parser->m_dtd with the root parser, so we must not destroy it
- */
- if (!isParamEntity && _dtd)
-#else
- if (_dtd)
-#endif /* XML_DTD */
- dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem);
- FREE((void *)atts);
-#ifdef XML_ATTR_INFO
- FREE((void *)attInfo);
-#endif
- FREE(groupConnector);
- FREE(buffer);
- FREE(dataBuf);
- FREE(nsAtts);
- FREE(unknownEncodingMem);
- if (unknownEncodingRelease)
- unknownEncodingRelease(unknownEncodingData);
- FREE(parser);
-}
-
-void XMLCALL
-XML_UseParserAsHandlerArg(XML_Parser parser)
-{
- handlerArg = parser;
-}
-
-enum XML_Error XMLCALL
-XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD)
-{
-#ifdef XML_DTD
- /* block after XML_Parse()/XML_ParseBuffer() has been called */
- if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
- return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING;
- useForeignDTD = useDTD;
- return XML_ERROR_NONE;
-#else
- return XML_ERROR_FEATURE_REQUIRES_XML_DTD;
-#endif
-}
-
-void XMLCALL
-XML_SetReturnNSTriplet(XML_Parser parser, int do_nst)
-{
- /* block after XML_Parse()/XML_ParseBuffer() has been called */
- if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
- return;
- ns_triplets = do_nst ? XML_TRUE : XML_FALSE;
-}
-
-void XMLCALL
-XML_SetUserData(XML_Parser parser, void *p)
-{
- if (handlerArg == userData)
- handlerArg = userData = p;
- else
- userData = p;
-}
-
-enum XML_Status XMLCALL
-XML_SetBase(XML_Parser parser, const XML_Char *p)
-{
- if (p) {
- p = poolCopyString(&_dtd->pool, p);
- if (!p)
- return XML_STATUS_ERROR;
- curBase = p;
- }
- else
- curBase = NULL;
- return XML_STATUS_OK;
-}
-
-const XML_Char * XMLCALL
-XML_GetBase(XML_Parser parser)
-{
- return curBase;
-}
-
-int XMLCALL
-XML_GetSpecifiedAttributeCount(XML_Parser parser)
-{
- return nSpecifiedAtts;
-}
-
-int XMLCALL
-XML_GetIdAttributeIndex(XML_Parser parser)
-{
- return idAttIndex;
-}
-
-#ifdef XML_ATTR_INFO
-const XML_AttrInfo * XMLCALL
-XML_GetAttributeInfo(XML_Parser parser)
-{
- return attInfo;
-}
-#endif
-
-void XMLCALL
-XML_SetElementHandler(XML_Parser parser,
- XML_StartElementHandler start,
- XML_EndElementHandler end)
-{
- startElementHandler = start;
- endElementHandler = end;
-}
-
-void XMLCALL
-XML_SetStartElementHandler(XML_Parser parser,
- XML_StartElementHandler start) {
- startElementHandler = start;
-}
-
-void XMLCALL
-XML_SetEndElementHandler(XML_Parser parser,
- XML_EndElementHandler end) {
- endElementHandler = end;
-}
-
-void XMLCALL
-XML_SetCharacterDataHandler(XML_Parser parser,
- XML_CharacterDataHandler handler)
-{
- characterDataHandler = handler;
-}
-
-void XMLCALL
-XML_SetProcessingInstructionHandler(XML_Parser parser,
- XML_ProcessingInstructionHandler handler)
-{
- processingInstructionHandler = handler;
-}
-
-void XMLCALL
-XML_SetCommentHandler(XML_Parser parser,
- XML_CommentHandler handler)
-{
- commentHandler = handler;
-}
-
-void XMLCALL
-XML_SetCdataSectionHandler(XML_Parser parser,
- XML_StartCdataSectionHandler start,
- XML_EndCdataSectionHandler end)
-{
- startCdataSectionHandler = start;
- endCdataSectionHandler = end;
-}
-
-void XMLCALL
-XML_SetStartCdataSectionHandler(XML_Parser parser,
- XML_StartCdataSectionHandler start) {
- startCdataSectionHandler = start;
-}
-
-void XMLCALL
-XML_SetEndCdataSectionHandler(XML_Parser parser,
- XML_EndCdataSectionHandler end) {
- endCdataSectionHandler = end;
-}
-
-void XMLCALL
-XML_SetDefaultHandler(XML_Parser parser,
- XML_DefaultHandler handler)
-{
- defaultHandler = handler;
- defaultExpandInternalEntities = XML_FALSE;
-}
-
-void XMLCALL
-XML_SetDefaultHandlerExpand(XML_Parser parser,
- XML_DefaultHandler handler)
-{
- defaultHandler = handler;
- defaultExpandInternalEntities = XML_TRUE;
-}
-
-void XMLCALL
-XML_SetDoctypeDeclHandler(XML_Parser parser,
- XML_StartDoctypeDeclHandler start,
- XML_EndDoctypeDeclHandler end)
-{
- startDoctypeDeclHandler = start;
- endDoctypeDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetStartDoctypeDeclHandler(XML_Parser parser,
- XML_StartDoctypeDeclHandler start) {
- startDoctypeDeclHandler = start;
-}
-
-void XMLCALL
-XML_SetEndDoctypeDeclHandler(XML_Parser parser,
- XML_EndDoctypeDeclHandler end) {
- endDoctypeDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
- XML_UnparsedEntityDeclHandler handler)
-{
- unparsedEntityDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetNotationDeclHandler(XML_Parser parser,
- XML_NotationDeclHandler handler)
-{
- notationDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetNamespaceDeclHandler(XML_Parser parser,
- XML_StartNamespaceDeclHandler start,
- XML_EndNamespaceDeclHandler end)
-{
- startNamespaceDeclHandler = start;
- endNamespaceDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetStartNamespaceDeclHandler(XML_Parser parser,
- XML_StartNamespaceDeclHandler start) {
- startNamespaceDeclHandler = start;
-}
-
-void XMLCALL
-XML_SetEndNamespaceDeclHandler(XML_Parser parser,
- XML_EndNamespaceDeclHandler end) {
- endNamespaceDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetNotStandaloneHandler(XML_Parser parser,
- XML_NotStandaloneHandler handler)
-{
- notStandaloneHandler = handler;
-}
-
-void XMLCALL
-XML_SetExternalEntityRefHandler(XML_Parser parser,
- XML_ExternalEntityRefHandler handler)
-{
- externalEntityRefHandler = handler;
-}
-
-void XMLCALL
-XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg)
-{
- if (arg)
- externalEntityRefHandlerArg = (XML_Parser)arg;
- else
- externalEntityRefHandlerArg = parser;
-}
-
-void XMLCALL
-XML_SetSkippedEntityHandler(XML_Parser parser,
- XML_SkippedEntityHandler handler)
-{
- skippedEntityHandler = handler;
-}
-
-void XMLCALL
-XML_SetUnknownEncodingHandler(XML_Parser parser,
- XML_UnknownEncodingHandler handler,
- void *data)
-{
- unknownEncodingHandler = handler;
- unknownEncodingHandlerData = data;
-}
-
-void XMLCALL
-XML_SetElementDeclHandler(XML_Parser parser,
- XML_ElementDeclHandler eldecl)
-{
- elementDeclHandler = eldecl;
-}
-
-void XMLCALL
-XML_SetAttlistDeclHandler(XML_Parser parser,
- XML_AttlistDeclHandler attdecl)
-{
- attlistDeclHandler = attdecl;
-}
-
-void XMLCALL
-XML_SetEntityDeclHandler(XML_Parser parser,
- XML_EntityDeclHandler handler)
-{
- entityDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetXmlDeclHandler(XML_Parser parser,
- XML_XmlDeclHandler handler) {
- xmlDeclHandler = handler;
-}
-
-int XMLCALL
-XML_SetParamEntityParsing(XML_Parser parser,
- enum XML_ParamEntityParsing peParsing)
-{
- /* block after XML_Parse()/XML_ParseBuffer() has been called */
- if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
- return 0;
-#ifdef XML_DTD
- paramEntityParsing = peParsing;
- return 1;
-#else
- return peParsing == XML_PARAM_ENTITY_PARSING_NEVER;
-#endif
-}
-
-int XMLCALL
-XML_SetHashSalt(XML_Parser parser,
- unsigned long hash_salt)
-{
- /* block after XML_Parse()/XML_ParseBuffer() has been called */
- if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
- return 0;
- hash_secret_salt = hash_salt;
- return 1;
-}
-
-enum XML_Status XMLCALL
-XML_Parse(XML_Parser parser, const char *s, int len, int isFinal)
-{
- switch (ps_parsing) {
- case XML_SUSPENDED:
- errorCode = XML_ERROR_SUSPENDED;
- return XML_STATUS_ERROR;
- case XML_FINISHED:
- errorCode = XML_ERROR_FINISHED;
- return XML_STATUS_ERROR;
- case XML_INITIALIZED:
- if (parentParser == NULL && !startParsing(parser)) {
- errorCode = XML_ERROR_NO_MEMORY;
- return XML_STATUS_ERROR;
- }
- default:
- ps_parsing = XML_PARSING;
- }
-
- if (len == 0) {
- ps_finalBuffer = (XML_Bool)isFinal;
- if (!isFinal)
- return XML_STATUS_OK;
- positionPtr = bufferPtr;
- parseEndPtr = bufferEnd;
-
- /* If data are left over from last buffer, and we now know that these
- data are the final chunk of input, then we have to check them again
- to detect errors based on that fact.
- */
- errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr);
-
- if (errorCode == XML_ERROR_NONE) {
- switch (ps_parsing) {
- case XML_SUSPENDED:
- XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
- positionPtr = bufferPtr;
- return XML_STATUS_SUSPENDED;
- case XML_INITIALIZED:
- case XML_PARSING:
- ps_parsing = XML_FINISHED;
- /* fall through */
- default:
- return XML_STATUS_OK;
- }
- }
- eventEndPtr = eventPtr;
- processor = errorProcessor;
- return XML_STATUS_ERROR;
- }
-#ifndef XML_CONTEXT_BYTES
- else if (bufferPtr == bufferEnd) {
- const char *end;
- int nLeftOver;
- enum XML_Error result;
- parseEndByteIndex += len;
- positionPtr = s;
- ps_finalBuffer = (XML_Bool)isFinal;
-
- errorCode = processor(parser, s, parseEndPtr = s + len, &end);
-
- if (errorCode != XML_ERROR_NONE) {
- eventEndPtr = eventPtr;
- processor = errorProcessor;
- return XML_STATUS_ERROR;
- }
- else {
- switch (ps_parsing) {
- case XML_SUSPENDED:
- result = XML_STATUS_SUSPENDED;
- break;
- case XML_INITIALIZED:
- case XML_PARSING:
- if (isFinal) {
- ps_parsing = XML_FINISHED;
- return XML_STATUS_OK;
- }
- /* fall through */
- default:
- result = XML_STATUS_OK;
- }
- }
-
- XmlUpdatePosition(encoding, positionPtr, end, &position);
- nLeftOver = s + len - end;
- if (nLeftOver) {
- if (buffer == NULL || nLeftOver > bufferLim - buffer) {
- /* FIXME avoid integer overflow */
- char *temp;
- temp = (buffer == NULL
- ? (char *)MALLOC(len * 2)
- : (char *)REALLOC(buffer, len * 2));
- if (temp == NULL) {
- errorCode = XML_ERROR_NO_MEMORY;
- eventPtr = eventEndPtr = NULL;
- processor = errorProcessor;
- return XML_STATUS_ERROR;
- }
- buffer = temp;
- bufferLim = buffer + len * 2;
- }
- memcpy(buffer, end, nLeftOver);
- }
- bufferPtr = buffer;
- bufferEnd = buffer + nLeftOver;
- positionPtr = bufferPtr;
- parseEndPtr = bufferEnd;
- eventPtr = bufferPtr;
- eventEndPtr = bufferPtr;
- return result;
- }
-#endif /* not defined XML_CONTEXT_BYTES */
- else {
- void *buff = XML_GetBuffer(parser, len);
- if (buff == NULL)
- return XML_STATUS_ERROR;
- else {
- memcpy(buff, s, len);
- return XML_ParseBuffer(parser, len, isFinal);
- }
- }
-}
-
-enum XML_Status XMLCALL
-XML_ParseBuffer(XML_Parser parser, int len, int isFinal)
-{
- const char *start;
- enum XML_Status result = XML_STATUS_OK;
-
- switch (ps_parsing) {
- case XML_SUSPENDED:
- errorCode = XML_ERROR_SUSPENDED;
- return XML_STATUS_ERROR;
- case XML_FINISHED:
- errorCode = XML_ERROR_FINISHED;
- return XML_STATUS_ERROR;
- case XML_INITIALIZED:
- if (parentParser == NULL && !startParsing(parser)) {
- errorCode = XML_ERROR_NO_MEMORY;
- return XML_STATUS_ERROR;
- }
- default:
- ps_parsing = XML_PARSING;
- }
-
- start = bufferPtr;
- positionPtr = start;
- bufferEnd += len;
- parseEndPtr = bufferEnd;
- parseEndByteIndex += len;
- ps_finalBuffer = (XML_Bool)isFinal;
-
- errorCode = processor(parser, start, parseEndPtr, &bufferPtr);
-
- if (errorCode != XML_ERROR_NONE) {
- eventEndPtr = eventPtr;
- processor = errorProcessor;
- return XML_STATUS_ERROR;
- }
- else {
- switch (ps_parsing) {
- case XML_SUSPENDED:
- result = XML_STATUS_SUSPENDED;
- break;
- case XML_INITIALIZED:
- case XML_PARSING:
- if (isFinal) {
- ps_parsing = XML_FINISHED;
- return result;
- }
- default: ; /* should not happen */
- }
- }
-
- XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
- positionPtr = bufferPtr;
- return result;
-}
-
-void * XMLCALL
-XML_GetBuffer(XML_Parser parser, int len)
-{
- switch (ps_parsing) {
- case XML_SUSPENDED:
- errorCode = XML_ERROR_SUSPENDED;
- return NULL;
- case XML_FINISHED:
- errorCode = XML_ERROR_FINISHED;
- return NULL;
- default: ;
- }
-
- if (len > bufferLim - bufferEnd) {
- /* FIXME avoid integer overflow */
- int neededSize = len + (int)(bufferEnd - bufferPtr);
-#ifdef XML_CONTEXT_BYTES
- int keep = (int)(bufferPtr - buffer);
-
- if (keep > XML_CONTEXT_BYTES)
- keep = XML_CONTEXT_BYTES;
- neededSize += keep;
-#endif /* defined XML_CONTEXT_BYTES */
- if (neededSize <= bufferLim - buffer) {
-#ifdef XML_CONTEXT_BYTES
- if (keep < bufferPtr - buffer) {
- int offset = (int)(bufferPtr - buffer) - keep;
- memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep);
- bufferEnd -= offset;
- bufferPtr -= offset;
- }
-#else
- memmove(buffer, bufferPtr, bufferEnd - bufferPtr);
- bufferEnd = buffer + (bufferEnd - bufferPtr);
- bufferPtr = buffer;
-#endif /* not defined XML_CONTEXT_BYTES */
- }
- else {
- char *newBuf;
- int bufferSize = (int)(bufferLim - bufferPtr);
- if (bufferSize == 0)
- bufferSize = INIT_BUFFER_SIZE;
- do {
- bufferSize *= 2;
- } while (bufferSize < neededSize);
- newBuf = (char *)MALLOC(bufferSize);
- if (newBuf == 0) {
- errorCode = XML_ERROR_NO_MEMORY;
- return NULL;
- }
- bufferLim = newBuf + bufferSize;
-#ifdef XML_CONTEXT_BYTES
- if (bufferPtr) {
- int keep = (int)(bufferPtr - buffer);
- if (keep > XML_CONTEXT_BYTES)
- keep = XML_CONTEXT_BYTES;
- memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep);
- FREE(buffer);
- buffer = newBuf;
- bufferEnd = buffer + (bufferEnd - bufferPtr) + keep;
- bufferPtr = buffer + keep;
- }
- else {
- bufferEnd = newBuf + (bufferEnd - bufferPtr);
- bufferPtr = buffer = newBuf;
- }
-#else
- if (bufferPtr) {
- memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr);
- FREE(buffer);
- }
- bufferEnd = newBuf + (bufferEnd - bufferPtr);
- bufferPtr = buffer = newBuf;
-#endif /* not defined XML_CONTEXT_BYTES */
- }
- eventPtr = eventEndPtr = NULL;
- positionPtr = NULL;
- }
- return bufferEnd;
-}
-
-enum XML_Status XMLCALL
-XML_StopParser(XML_Parser parser, XML_Bool resumable)
-{
- switch (ps_parsing) {
- case XML_SUSPENDED:
- if (resumable) {
- errorCode = XML_ERROR_SUSPENDED;
- return XML_STATUS_ERROR;
- }
- ps_parsing = XML_FINISHED;
- break;
- case XML_FINISHED:
- errorCode = XML_ERROR_FINISHED;
- return XML_STATUS_ERROR;
- default:
- if (resumable) {
-#ifdef XML_DTD
- if (isParamEntity) {
- errorCode = XML_ERROR_SUSPEND_PE;
- return XML_STATUS_ERROR;
- }
-#endif
- ps_parsing = XML_SUSPENDED;
- }
- else
- ps_parsing = XML_FINISHED;
- }
- return XML_STATUS_OK;
-}
-
-enum XML_Status XMLCALL
-XML_ResumeParser(XML_Parser parser)
-{
- enum XML_Status result = XML_STATUS_OK;
-
- if (ps_parsing != XML_SUSPENDED) {
- errorCode = XML_ERROR_NOT_SUSPENDED;
- return XML_STATUS_ERROR;
- }
- ps_parsing = XML_PARSING;
-
- errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr);
-
- if (errorCode != XML_ERROR_NONE) {
- eventEndPtr = eventPtr;
- processor = errorProcessor;
- return XML_STATUS_ERROR;
- }
- else {
- switch (ps_parsing) {
- case XML_SUSPENDED:
- result = XML_STATUS_SUSPENDED;
- break;
- case XML_INITIALIZED:
- case XML_PARSING:
- if (ps_finalBuffer) {
- ps_parsing = XML_FINISHED;
- return result;
- }
- default: ;
- }
- }
-
- XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
- positionPtr = bufferPtr;
- return result;
-}
-
-void XMLCALL
-XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status)
-{
- assert(status != NULL);
- *status = parser->m_parsingStatus;
-}
-
-enum XML_Error XMLCALL
-XML_GetErrorCode(XML_Parser parser)
-{
- return errorCode;
-}
-
-XML_Index XMLCALL
-XML_GetCurrentByteIndex(XML_Parser parser)
-{
- if (eventPtr)
- return parseEndByteIndex - (parseEndPtr - eventPtr);
- return -1;
-}
-
-int XMLCALL
-XML_GetCurrentByteCount(XML_Parser parser)
-{
- if (eventEndPtr && eventPtr)
- return (int)(eventEndPtr - eventPtr);
- return 0;
-}
-
-const char * XMLCALL
-XML_GetInputContext(XML_Parser parser, int *offset, int *size)
-{
-#ifdef XML_CONTEXT_BYTES
- if (eventPtr && buffer) {
- *offset = (int)(eventPtr - buffer);
- *size = (int)(bufferEnd - buffer);
- return buffer;
- }
-#endif /* defined XML_CONTEXT_BYTES */
- return (char *) 0;
-}
-
-XML_Size XMLCALL
-XML_GetCurrentLineNumber(XML_Parser parser)
-{
- if (eventPtr && eventPtr >= positionPtr) {
- XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);
- positionPtr = eventPtr;
- }
- return position.lineNumber + 1;
-}
-
-XML_Size XMLCALL
-XML_GetCurrentColumnNumber(XML_Parser parser)
-{
- if (eventPtr && eventPtr >= positionPtr) {
- XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);
- positionPtr = eventPtr;
- }
- return position.columnNumber;
-}
-
-void XMLCALL
-XML_FreeContentModel(XML_Parser parser, XML_Content *model)
-{
- FREE(model);
-}
-
-void * XMLCALL
-XML_MemMalloc(XML_Parser parser, size_t size)
-{
- return MALLOC(size);
-}
-
-void * XMLCALL
-XML_MemRealloc(XML_Parser parser, void *ptr, size_t size)
-{
- return REALLOC(ptr, size);
-}
-
-void XMLCALL
-XML_MemFree(XML_Parser parser, void *ptr)
-{
- FREE(ptr);
-}
-
-void XMLCALL
-XML_DefaultCurrent(XML_Parser parser)
-{
- if (defaultHandler) {
- if (openInternalEntities)
- reportDefault(parser,
- internalEncoding,
- openInternalEntities->internalEventPtr,
- openInternalEntities->internalEventEndPtr);
- else
- reportDefault(parser, encoding, eventPtr, eventEndPtr);
- }
-}
-
-const XML_LChar * XMLCALL
-XML_ErrorString(enum XML_Error code)
-{
- static const XML_LChar* const message[] = {
- 0,
- XML_L("out of memory"),
- XML_L("syntax error"),
- XML_L("no element found"),
- XML_L("not well-formed (invalid token)"),
- XML_L("unclosed token"),
- XML_L("partial character"),
- XML_L("mismatched tag"),
- XML_L("duplicate attribute"),
- XML_L("junk after document element"),
- XML_L("illegal parameter entity reference"),
- XML_L("undefined entity"),
- XML_L("recursive entity reference"),
- XML_L("asynchronous entity"),
- XML_L("reference to invalid character number"),
- XML_L("reference to binary entity"),
- XML_L("reference to external entity in attribute"),
- XML_L("XML or text declaration not at start of entity"),
- XML_L("unknown encoding"),
- XML_L("encoding specified in XML declaration is incorrect"),
- XML_L("unclosed CDATA section"),
- XML_L("error in processing external entity reference"),
- XML_L("document is not standalone"),
- XML_L("unexpected parser state - please send a bug report"),
- XML_L("entity declared in parameter entity"),
- XML_L("requested feature requires XML_DTD support in Expat"),
- XML_L("cannot change setting once parsing has begun"),
- XML_L("unbound prefix"),
- XML_L("must not undeclare prefix"),
- XML_L("incomplete markup in parameter entity"),
- XML_L("XML declaration not well-formed"),
- XML_L("text declaration not well-formed"),
- XML_L("illegal character(s) in public id"),
- XML_L("parser suspended"),
- XML_L("parser not suspended"),
- XML_L("parsing aborted"),
- XML_L("parsing finished"),
- XML_L("cannot suspend in external parameter entity"),
- XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"),
- XML_L("reserved prefix (xmlns) must not be declared or undeclared"),
- XML_L("prefix must not be bound to one of the reserved namespace names")
- };
- if (code > 0 && code < sizeof(message)/sizeof(message[0]))
- return message[code];
- return NULL;
-}
-
-const XML_LChar * XMLCALL
-XML_ExpatVersion(void) {
-
- /* V1 is used to string-ize the version number. However, it would
- string-ize the actual version macro *names* unless we get them
- substituted before being passed to V1. CPP is defined to expand
- a macro, then rescan for more expansions. Thus, we use V2 to expand
- the version macros, then CPP will expand the resulting V1() macro
- with the correct numerals. */
- /* ### I'm assuming cpp is portable in this respect... */
-
-#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c)
-#define V2(a,b,c) XML_L("expat_")V1(a,b,c)
-
- return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION);
-
-#undef V1
-#undef V2
-}
-
-XML_Expat_Version XMLCALL
-XML_ExpatVersionInfo(void)
-{
- XML_Expat_Version version;
-
- version.major = XML_MAJOR_VERSION;
- version.minor = XML_MINOR_VERSION;
- version.micro = XML_MICRO_VERSION;
-
- return version;
-}
-
-const XML_Feature * XMLCALL
-XML_GetFeatureList(void)
-{
- static const XML_Feature features[] = {
- {XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"),
- sizeof(XML_Char)},
- {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"),
- sizeof(XML_LChar)},
-#ifdef XML_UNICODE
- {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0},
-#endif
-#ifdef XML_UNICODE_WCHAR_T
- {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0},
-#endif
-#ifdef XML_DTD
- {XML_FEATURE_DTD, XML_L("XML_DTD"), 0},
-#endif
-#ifdef XML_CONTEXT_BYTES
- {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"),
- XML_CONTEXT_BYTES},
-#endif
-#ifdef XML_MIN_SIZE
- {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0},
-#endif
-#ifdef XML_NS
- {XML_FEATURE_NS, XML_L("XML_NS"), 0},
-#endif
-#ifdef XML_LARGE_SIZE
- {XML_FEATURE_LARGE_SIZE, XML_L("XML_LARGE_SIZE"), 0},
-#endif
-#ifdef XML_ATTR_INFO
- {XML_FEATURE_ATTR_INFO, XML_L("XML_ATTR_INFO"), 0},
-#endif
- {XML_FEATURE_END, NULL, 0}
- };
-
- return features;
-}
-
-/* Initially tag->rawName always points into the parse buffer;
- for those TAG instances opened while the current parse buffer was
- processed, and not yet closed, we need to store tag->rawName in a more
- permanent location, since the parse buffer is about to be discarded.
-*/
-static XML_Bool
-storeRawNames(XML_Parser parser)
-{
- TAG *tag = tagStack;
- while (tag) {
- int bufSize;
- int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1);
- char *rawNameBuf = tag->buf + nameLen;
- /* Stop if already stored. Since tagStack is a stack, we can stop
- at the first entry that has already been copied; everything
- below it in the stack is already been accounted for in a
- previous call to this function.
- */
- if (tag->rawName == rawNameBuf)
- break;
- /* For re-use purposes we need to ensure that the
- size of tag->buf is a multiple of sizeof(XML_Char).
- */
- bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char));
- if (bufSize > tag->bufEnd - tag->buf) {
- char *temp = (char *)REALLOC(tag->buf, bufSize);
- if (temp == NULL)
- return XML_FALSE;
- /* if tag->name.str points to tag->buf (only when namespace
- processing is off) then we have to update it
- */
- if (tag->name.str == (XML_Char *)tag->buf)
- tag->name.str = (XML_Char *)temp;
- /* if tag->name.localPart is set (when namespace processing is on)
- then update it as well, since it will always point into tag->buf
- */
- if (tag->name.localPart)
- tag->name.localPart = (XML_Char *)temp + (tag->name.localPart -
- (XML_Char *)tag->buf);
- tag->buf = temp;
- tag->bufEnd = temp + bufSize;
- rawNameBuf = temp + nameLen;
- }
- memcpy(rawNameBuf, tag->rawName, tag->rawNameLength);
- tag->rawName = rawNameBuf;
- tag = tag->parent;
- }
- return XML_TRUE;
-}
-
-static enum XML_Error PTRCALL
-contentProcessor(XML_Parser parser,
- const char *start,
- const char *end,
- const char **endPtr)
-{
- enum XML_Error result = doContent(parser, 0, encoding, start, end,
- endPtr, (XML_Bool)!ps_finalBuffer);
- if (result == XML_ERROR_NONE) {
- if (!storeRawNames(parser))
- return XML_ERROR_NO_MEMORY;
- }
- return result;
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor(XML_Parser parser,
- const char *start,
- const char *end,
- const char **endPtr)
-{
- enum XML_Error result = initializeEncoding(parser);
- if (result != XML_ERROR_NONE)
- return result;
- processor = externalEntityInitProcessor2;
- return externalEntityInitProcessor2(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor2(XML_Parser parser,
- const char *start,
- const char *end,
- const char **endPtr)
-{
- const char *next = start; /* XmlContentTok doesn't always set the last arg */
- int tok = XmlContentTok(encoding, start, end, &next);
- switch (tok) {
- case XML_TOK_BOM:
- /* If we are at the end of the buffer, this would cause the next stage,
- i.e. externalEntityInitProcessor3, to pass control directly to
- doContent (by detecting XML_TOK_NONE) without processing any xml text
- declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent.
- */
- if (next == end && !ps_finalBuffer) {
- *endPtr = next;
- return XML_ERROR_NONE;
- }
- start = next;
- break;
- case XML_TOK_PARTIAL:
- if (!ps_finalBuffer) {
- *endPtr = start;
- return XML_ERROR_NONE;
- }
- eventPtr = start;
- return XML_ERROR_UNCLOSED_TOKEN;
- case XML_TOK_PARTIAL_CHAR:
- if (!ps_finalBuffer) {
- *endPtr = start;
- return XML_ERROR_NONE;
- }
- eventPtr = start;
- return XML_ERROR_PARTIAL_CHAR;
- }
- processor = externalEntityInitProcessor3;
- return externalEntityInitProcessor3(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor3(XML_Parser parser,
- const char *start,
- const char *end,
- const char **endPtr)
-{
- int tok;
- const char *next = start; /* XmlContentTok doesn't always set the last arg */
- eventPtr = start;
- tok = XmlContentTok(encoding, start, end, &next);
- eventEndPtr = next;
-
- switch (tok) {
- case XML_TOK_XML_DECL:
- {
- enum XML_Error result;
- result = processXmlDecl(parser, 1, start, next);
- if (result != XML_ERROR_NONE)
- return result;
- switch (ps_parsing) {
- case XML_SUSPENDED:
- *endPtr = next;
- return XML_ERROR_NONE;
- case XML_FINISHED:
- return XML_ERROR_ABORTED;
- default:
- start = next;
- }
- }
- break;
- case XML_TOK_PARTIAL:
- if (!ps_finalBuffer) {
- *endPtr = start;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_UNCLOSED_TOKEN;
- case XML_TOK_PARTIAL_CHAR:
- if (!ps_finalBuffer) {
- *endPtr = start;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_PARTIAL_CHAR;
- }
- processor = externalEntityContentProcessor;
- tagLevel = 1;
- return externalEntityContentProcessor(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityContentProcessor(XML_Parser parser,
- const char *start,
- const char *end,
- const char **endPtr)
-{
- enum XML_Error result = doContent(parser, 1, encoding, start, end,
- endPtr, (XML_Bool)!ps_finalBuffer);
- if (result == XML_ERROR_NONE) {
- if (!storeRawNames(parser))
- return XML_ERROR_NO_MEMORY;
- }
- return result;
-}
-
-static enum XML_Error
-doContent(XML_Parser parser,
- int startTagLevel,
- const ENCODING *enc,
- const char *s,
- const char *end,
- const char **nextPtr,
- XML_Bool haveMore)
-{
- /* save one level of indirection */
- DTD * const dtd = _dtd;
-
- const char **eventPP;
- const char **eventEndPP;
- if (enc == encoding) {
- eventPP = &eventPtr;
- eventEndPP = &eventEndPtr;
- }
- else {
- eventPP = &(openInternalEntities->internalEventPtr);
- eventEndPP = &(openInternalEntities->internalEventEndPtr);
- }
- *eventPP = s;
-
- for (;;) {
- const char *next = s; /* XmlContentTok doesn't always set the last arg */
- int tok = XmlContentTok(enc, s, end, &next);
- *eventEndPP = next;
- switch (tok) {
- case XML_TOK_TRAILING_CR:
- if (haveMore) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- *eventEndPP = end;
- if (characterDataHandler) {
- XML_Char c = 0xA;
- characterDataHandler(handlerArg, &c, 1);
- }
- else if (defaultHandler)
- reportDefault(parser, enc, s, end);
- /* We are at the end of the final buffer, should we check for
- XML_SUSPENDED, XML_FINISHED?
- */
- if (startTagLevel == 0)
- return XML_ERROR_NO_ELEMENTS;
- if (tagLevel != startTagLevel)
- return XML_ERROR_ASYNC_ENTITY;
- *nextPtr = end;
- return XML_ERROR_NONE;
- case XML_TOK_NONE:
- if (haveMore) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- if (startTagLevel > 0) {
- if (tagLevel != startTagLevel)
- return XML_ERROR_ASYNC_ENTITY;
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_NO_ELEMENTS;
- case XML_TOK_INVALID:
- *eventPP = next;
- return XML_ERROR_INVALID_TOKEN;
- case XML_TOK_PARTIAL:
- if (haveMore) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_UNCLOSED_TOKEN;
- case XML_TOK_PARTIAL_CHAR:
- if (haveMore) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_PARTIAL_CHAR;
- case XML_TOK_ENTITY_REF:
- {
- const XML_Char *name;
- ENTITY *entity;
- XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (ch) {
- if (characterDataHandler)
- characterDataHandler(handlerArg, &ch, 1);
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- break;
- }
- name = poolStoreString(&dtd->pool, enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (!name)
- return XML_ERROR_NO_MEMORY;
- entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0);
- poolDiscard(&dtd->pool);
- /* First, determine if a check for an existing declaration is needed;
- if yes, check that the entity exists, and that it is internal,
- otherwise call the skipped entity or default handler.
- */
- if (!dtd->hasParamEntityRefs || dtd->standalone) {
- if (!entity)
- return XML_ERROR_UNDEFINED_ENTITY;
- else if (!entity->is_internal)
- return XML_ERROR_ENTITY_DECLARED_IN_PE;
- }
- else if (!entity) {
- if (skippedEntityHandler)
- skippedEntityHandler(handlerArg, name, 0);
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- break;
- }
- if (entity->open)
- return XML_ERROR_RECURSIVE_ENTITY_REF;
- if (entity->notation)
- return XML_ERROR_BINARY_ENTITY_REF;
- if (entity->textPtr) {
- enum XML_Error result;
- if (!defaultExpandInternalEntities) {
- if (skippedEntityHandler)
- skippedEntityHandler(handlerArg, entity->name, 0);
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- break;
- }
- result = processInternalEntity(parser, entity, XML_FALSE);
- if (result != XML_ERROR_NONE)
- return result;
- }
- else if (externalEntityRefHandler) {
- const XML_Char *context;
- entity->open = XML_TRUE;
- context = getContext(parser);
- entity->open = XML_FALSE;
- if (!context)
- return XML_ERROR_NO_MEMORY;
- if (!externalEntityRefHandler(externalEntityRefHandlerArg,
- context,
- entity->base,
- entity->systemId,
- entity->publicId))
- return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
- poolDiscard(&tempPool);
- }
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- break;
- }
- case XML_TOK_START_TAG_NO_ATTS:
- /* fall through */
- case XML_TOK_START_TAG_WITH_ATTS:
- {
- TAG *tag;
- enum XML_Error result;
- XML_Char *toPtr;
- if (freeTagList) {
- tag = freeTagList;
- freeTagList = freeTagList->parent;
- }
- else {
- tag = (TAG *)MALLOC(sizeof(TAG));
- if (!tag)
- return XML_ERROR_NO_MEMORY;
- tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE);
- if (!tag->buf) {
- FREE(tag);
- return XML_ERROR_NO_MEMORY;
- }
- tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE;
- }
- tag->bindings = NULL;
- tag->parent = tagStack;
- tagStack = tag;
- tag->name.localPart = NULL;
- tag->name.prefix = NULL;
- tag->rawName = s + enc->minBytesPerChar;
- tag->rawNameLength = XmlNameLength(enc, tag->rawName);
- ++tagLevel;
- {
- const char *rawNameEnd = tag->rawName + tag->rawNameLength;
- const char *fromPtr = tag->rawName;
- toPtr = (XML_Char *)tag->buf;
- for (;;) {
- int bufSize;
- int convLen;
- XmlConvert(enc,
- &fromPtr, rawNameEnd,
- (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1);
- convLen = (int)(toPtr - (XML_Char *)tag->buf);
- if (fromPtr == rawNameEnd) {
- tag->name.strLen = convLen;
- break;
- }
- bufSize = (int)(tag->bufEnd - tag->buf) << 1;
- {
- char *temp = (char *)REALLOC(tag->buf, bufSize);
- if (temp == NULL)
- return XML_ERROR_NO_MEMORY;
- tag->buf = temp;
- tag->bufEnd = temp + bufSize;
- toPtr = (XML_Char *)temp + convLen;
- }
- }
- }
- tag->name.str = (XML_Char *)tag->buf;
- *toPtr = XML_T('\0');
- result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings));
- if (result)
- return result;
- if (startElementHandler)
- startElementHandler(handlerArg, tag->name.str,
- (const XML_Char **)atts);
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- poolClear(&tempPool);
- break;
- }
- case XML_TOK_EMPTY_ELEMENT_NO_ATTS:
- /* fall through */
- case XML_TOK_EMPTY_ELEMENT_WITH_ATTS:
- {
- const char *rawName = s + enc->minBytesPerChar;
- enum XML_Error result;
- BINDING *bindings = NULL;
- XML_Bool noElmHandlers = XML_TRUE;
- TAG_NAME name;
- name.str = poolStoreString(&tempPool, enc, rawName,
- rawName + XmlNameLength(enc, rawName));
- if (!name.str)
- return XML_ERROR_NO_MEMORY;
- poolFinish(&tempPool);
- result = storeAtts(parser, enc, s, &name, &bindings);
- if (result)
- return result;
- poolFinish(&tempPool);
- if (startElementHandler) {
- startElementHandler(handlerArg, name.str, (const XML_Char **)atts);
- noElmHandlers = XML_FALSE;
- }
- if (endElementHandler) {
- if (startElementHandler)
- *eventPP = *eventEndPP;
- endElementHandler(handlerArg, name.str);
- noElmHandlers = XML_FALSE;
- }
- if (noElmHandlers && defaultHandler)
- reportDefault(parser, enc, s, next);
- poolClear(&tempPool);
- while (bindings) {
- BINDING *b = bindings;
- if (endNamespaceDeclHandler)
- endNamespaceDeclHandler(handlerArg, b->prefix->name);
- bindings = bindings->nextTagBinding;
- b->nextTagBinding = freeBindingList;
- freeBindingList = b;
- b->prefix->binding = b->prevPrefixBinding;
- }
- }
- if (tagLevel == 0)
- return epilogProcessor(parser, next, end, nextPtr);
- break;
- case XML_TOK_END_TAG:
- if (tagLevel == startTagLevel)
- return XML_ERROR_ASYNC_ENTITY;
- else {
- int len;
- const char *rawName;
- TAG *tag = tagStack;
- tagStack = tag->parent;
- tag->parent = freeTagList;
- freeTagList = tag;
- rawName = s + enc->minBytesPerChar*2;
- len = XmlNameLength(enc, rawName);
- if (len != tag->rawNameLength
- || memcmp(tag->rawName, rawName, len) != 0) {
- *eventPP = rawName;
- return XML_ERROR_TAG_MISMATCH;
- }
- --tagLevel;
- if (endElementHandler) {
- const XML_Char *localPart;
- const XML_Char *prefix;
- XML_Char *uri;
- localPart = tag->name.localPart;
- if (ns && localPart) {
- /* localPart and prefix may have been overwritten in
- tag->name.str, since this points to the binding->uri
- buffer which gets re-used; so we have to add them again
- */
- uri = (XML_Char *)tag->name.str + tag->name.uriLen;
- /* don't need to check for space - already done in storeAtts() */
- while (*localPart) *uri++ = *localPart++;
- prefix = (XML_Char *)tag->name.prefix;
- if (ns_triplets && prefix) {
- *uri++ = namespaceSeparator;
- while (*prefix) *uri++ = *prefix++;
- }
- *uri = XML_T('\0');
- }
- endElementHandler(handlerArg, tag->name.str);
- }
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- while (tag->bindings) {
- BINDING *b = tag->bindings;
- if (endNamespaceDeclHandler)
- endNamespaceDeclHandler(handlerArg, b->prefix->name);
- tag->bindings = tag->bindings->nextTagBinding;
- b->nextTagBinding = freeBindingList;
- freeBindingList = b;
- b->prefix->binding = b->prevPrefixBinding;
- }
- if (tagLevel == 0)
- return epilogProcessor(parser, next, end, nextPtr);
- }
- break;
- case XML_TOK_CHAR_REF:
- {
- int n = XmlCharRefNumber(enc, s);
- if (n < 0)
- return XML_ERROR_BAD_CHAR_REF;
- if (characterDataHandler) {
- XML_Char buf[XML_ENCODE_MAX];
- characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf));
- }
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- }
- break;
- case XML_TOK_XML_DECL:
- return XML_ERROR_MISPLACED_XML_PI;
- case XML_TOK_DATA_NEWLINE:
- if (characterDataHandler) {
- XML_Char c = 0xA;
- characterDataHandler(handlerArg, &c, 1);
- }
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- break;
- case XML_TOK_CDATA_SECT_OPEN:
- {
- enum XML_Error result;
- if (startCdataSectionHandler)
- startCdataSectionHandler(handlerArg);
-#if 0
- /* Suppose you doing a transformation on a document that involves
- changing only the character data. You set up a defaultHandler
- and a characterDataHandler. The defaultHandler simply copies
- characters through. The characterDataHandler does the
- transformation and writes the characters out escaping them as
- necessary. This case will fail to work if we leave out the
- following two lines (because & and < inside CDATA sections will
- be incorrectly escaped).
-
- However, now we have a start/endCdataSectionHandler, so it seems
- easier to let the user deal with this.
- */
- else if (characterDataHandler)
- characterDataHandler(handlerArg, dataBuf, 0);
-#endif
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore);
- if (result != XML_ERROR_NONE)
- return result;
- else if (!next) {
- processor = cdataSectionProcessor;
- return result;
- }
- }
- break;
- case XML_TOK_TRAILING_RSQB:
- if (haveMore) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- if (characterDataHandler) {
- if (MUST_CONVERT(enc, s)) {
- ICHAR *dataPtr = (ICHAR *)dataBuf;
- XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
- characterDataHandler(handlerArg, dataBuf,
- (int)(dataPtr - (ICHAR *)dataBuf));
- }
- else
- characterDataHandler(handlerArg,
- (XML_Char *)s,
- (int)((XML_Char *)end - (XML_Char *)s));
- }
- else if (defaultHandler)
- reportDefault(parser, enc, s, end);
- /* We are at the end of the final buffer, should we check for
- XML_SUSPENDED, XML_FINISHED?
- */
- if (startTagLevel == 0) {
- *eventPP = end;
- return XML_ERROR_NO_ELEMENTS;
- }
- if (tagLevel != startTagLevel) {
- *eventPP = end;
- return XML_ERROR_ASYNC_ENTITY;
- }
- *nextPtr = end;
- return XML_ERROR_NONE;
- case XML_TOK_DATA_CHARS:
- {
- XML_CharacterDataHandler charDataHandler = characterDataHandler;
- if (charDataHandler) {
- if (MUST_CONVERT(enc, s)) {
- for (;;) {
- ICHAR *dataPtr = (ICHAR *)dataBuf;
- XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
- *eventEndPP = s;
- charDataHandler(handlerArg, dataBuf,
- (int)(dataPtr - (ICHAR *)dataBuf));
- if (s == next)
- break;
- *eventPP = s;
- }
- }
- else
- charDataHandler(handlerArg,
- (XML_Char *)s,
- (int)((XML_Char *)next - (XML_Char *)s));
- }
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- }
- break;
- case XML_TOK_PI:
- if (!reportProcessingInstruction(parser, enc, s, next))
- return XML_ERROR_NO_MEMORY;
- break;
- case XML_TOK_COMMENT:
- if (!reportComment(parser, enc, s, next))
- return XML_ERROR_NO_MEMORY;
- break;
- default:
- if (defaultHandler)
- reportDefault(parser, enc, s, next);
- break;
- }
- *eventPP = s = next;
- switch (ps_parsing) {
- case XML_SUSPENDED:
- *nextPtr = next;
- return XML_ERROR_NONE;
- case XML_FINISHED:
- return XML_ERROR_ABORTED;
- default: ;
- }
- }
- /* not reached */
-}
-
-/* Precondition: all arguments must be non-NULL;
- Purpose:
- - normalize attributes
- - check attributes for well-formedness
- - generate namespace aware attribute names (URI, prefix)
- - build list of attributes for startElementHandler
- - default attributes
- - process namespace declarations (check and report them)
- - generate namespace aware element name (URI, prefix)
-*/
-static enum XML_Error
-storeAtts(XML_Parser parser, const ENCODING *enc,
- const char *attStr, TAG_NAME *tagNamePtr,
- BINDING **bindingsPtr)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- ELEMENT_TYPE *elementType;
- int nDefaultAtts;
- const XML_Char **appAtts; /* the attribute list for the application */
- int attIndex = 0;
- int prefixLen;
- int i;
- int n;
- XML_Char *uri;
- int nPrefixes = 0;
- BINDING *binding;
- const XML_Char *localPart;
-
- /* lookup the element type name */
- elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0);
- if (!elementType) {
- const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str);
- if (!name)
- return XML_ERROR_NO_MEMORY;
- elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name,
- sizeof(ELEMENT_TYPE));
- if (!elementType)
- return XML_ERROR_NO_MEMORY;
- if (ns && !setElementTypePrefix(parser, elementType))
- return XML_ERROR_NO_MEMORY;
- }
- nDefaultAtts = elementType->nDefaultAtts;
-
- /* get the attributes from the tokenizer */
- n = XmlGetAttributes(enc, attStr, attsSize, atts);
- if (n + nDefaultAtts > attsSize) {
- int oldAttsSize = attsSize;
- ATTRIBUTE *temp;
-#ifdef XML_ATTR_INFO
- XML_AttrInfo *temp2;
-#endif
- attsSize = n + nDefaultAtts + INIT_ATTS_SIZE;
- temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE));
- if (temp == NULL)
- return XML_ERROR_NO_MEMORY;
- atts = temp;
-#ifdef XML_ATTR_INFO
- temp2 = (XML_AttrInfo *)REALLOC((void *)attInfo, attsSize * sizeof(XML_AttrInfo));
- if (temp2 == NULL)
- return XML_ERROR_NO_MEMORY;
- attInfo = temp2;
-#endif
- if (n > oldAttsSize)
- XmlGetAttributes(enc, attStr, n, atts);
- }
-
- appAtts = (const XML_Char **)atts;
- for (i = 0; i < n; i++) {
- ATTRIBUTE *currAtt = &atts[i];
-#ifdef XML_ATTR_INFO
- XML_AttrInfo *currAttInfo = &attInfo[i];
-#endif
- /* add the name and value to the attribute list */
- ATTRIBUTE_ID *attId = getAttributeId(parser, enc, currAtt->name,
- currAtt->name
- + XmlNameLength(enc, currAtt->name));
- if (!attId)
- return XML_ERROR_NO_MEMORY;
-#ifdef XML_ATTR_INFO
- currAttInfo->nameStart = parseEndByteIndex - (parseEndPtr - currAtt->name);
- currAttInfo->nameEnd = currAttInfo->nameStart +
- XmlNameLength(enc, currAtt->name);
- currAttInfo->valueStart = parseEndByteIndex -
- (parseEndPtr - currAtt->valuePtr);
- currAttInfo->valueEnd = parseEndByteIndex - (parseEndPtr - currAtt->valueEnd);
-#endif
- /* Detect duplicate attributes by their QNames. This does not work when
- namespace processing is turned on and different prefixes for the same
- namespace are used. For this case we have a check further down.
- */
- if ((attId->name)[-1]) {
- if (enc == encoding)
- eventPtr = atts[i].name;
- return XML_ERROR_DUPLICATE_ATTRIBUTE;
- }
- (attId->name)[-1] = 1;
- appAtts[attIndex++] = attId->name;
- if (!atts[i].normalized) {
- enum XML_Error result;
- XML_Bool isCdata = XML_TRUE;
-
- /* figure out whether declared as other than CDATA */
- if (attId->maybeTokenized) {
- int j;
- for (j = 0; j < nDefaultAtts; j++) {
- if (attId == elementType->defaultAtts[j].id) {
- isCdata = elementType->defaultAtts[j].isCdata;
- break;
- }
- }
- }
-
- /* normalize the attribute value */
- result = storeAttributeValue(parser, enc, isCdata,
- atts[i].valuePtr, atts[i].valueEnd,
- &tempPool);
- if (result)
- return result;
- appAtts[attIndex] = poolStart(&tempPool);
- poolFinish(&tempPool);
- }
- else {
- /* the value did not need normalizing */
- appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr,
- atts[i].valueEnd);
- if (appAtts[attIndex] == 0)
- return XML_ERROR_NO_MEMORY;
- poolFinish(&tempPool);
- }
- /* handle prefixed attribute names */
- if (attId->prefix) {
- if (attId->xmlns) {
- /* deal with namespace declarations here */
- enum XML_Error result = addBinding(parser, attId->prefix, attId,
- appAtts[attIndex], bindingsPtr);
- if (result)
- return result;
- --attIndex;
- }
- else {
- /* deal with other prefixed names later */
- attIndex++;
- nPrefixes++;
- (attId->name)[-1] = 2;
- }
- }
- else
- attIndex++;
- }
-
- /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */
- nSpecifiedAtts = attIndex;
- if (elementType->idAtt && (elementType->idAtt->name)[-1]) {
- for (i = 0; i < attIndex; i += 2)
- if (appAtts[i] == elementType->idAtt->name) {
- idAttIndex = i;
- break;
- }
- }
- else
- idAttIndex = -1;
-
- /* do attribute defaulting */
- for (i = 0; i < nDefaultAtts; i++) {
- const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i;
- if (!(da->id->name)[-1] && da->value) {
- if (da->id->prefix) {
- if (da->id->xmlns) {
- enum XML_Error result = addBinding(parser, da->id->prefix, da->id,
- da->value, bindingsPtr);
- if (result)
- return result;
- }
- else {
- (da->id->name)[-1] = 2;
- nPrefixes++;
- appAtts[attIndex++] = da->id->name;
- appAtts[attIndex++] = da->value;
- }
- }
- else {
- (da->id->name)[-1] = 1;
- appAtts[attIndex++] = da->id->name;
- appAtts[attIndex++] = da->value;
- }
- }
- }
- appAtts[attIndex] = 0;
-
- /* expand prefixed attribute names, check for duplicates,
- and clear flags that say whether attributes were specified */
- i = 0;
- if (nPrefixes) {
- int j; /* hash table index */
- unsigned long version = nsAttsVersion;
- int nsAttsSize = (int)1 << nsAttsPower;
- /* size of hash table must be at least 2 * (# of prefixed attributes) */
- if ((nPrefixes << 1) >> nsAttsPower) { /* true for nsAttsPower = 0 */
- NS_ATT *temp;
- /* hash table size must also be a power of 2 and >= 8 */
- while (nPrefixes >> nsAttsPower++);
- if (nsAttsPower < 3)
- nsAttsPower = 3;
- nsAttsSize = (int)1 << nsAttsPower;
- temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT));
- if (!temp)
- return XML_ERROR_NO_MEMORY;
- nsAtts = temp;
- version = 0; /* force re-initialization of nsAtts hash table */
- }
- /* using a version flag saves us from initializing nsAtts every time */
- if (!version) { /* initialize version flags when version wraps around */
- version = INIT_ATTS_VERSION;
- for (j = nsAttsSize; j != 0; )
- nsAtts[--j].version = version;
- }
- nsAttsVersion = --version;
-
- /* expand prefixed names and check for duplicates */
- for (; i < attIndex; i += 2) {
- const XML_Char *s = appAtts[i];
- if (s[-1] == 2) { /* prefixed */
- ATTRIBUTE_ID *id;
- const BINDING *b;
- unsigned long uriHash = hash_secret_salt;
- ((XML_Char *)s)[-1] = 0; /* clear flag */
- id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0);
- b = id->prefix->binding;
- if (!b)
- return XML_ERROR_UNBOUND_PREFIX;
-
- /* as we expand the name we also calculate its hash value */
- for (j = 0; j < b->uriLen; j++) {
- const XML_Char c = b->uri[j];
- if (!poolAppendChar(&tempPool, c))
- return XML_ERROR_NO_MEMORY;
- uriHash = CHAR_HASH(uriHash, c);
- }
- while (*s++ != XML_T(ASCII_COLON))
- ;
- do { /* copies null terminator */
- const XML_Char c = *s;
- if (!poolAppendChar(&tempPool, *s))
- return XML_ERROR_NO_MEMORY;
- uriHash = CHAR_HASH(uriHash, c);
- } while (*s++);
-
- { /* Check hash table for duplicate of expanded name (uriName).
- Derived from code in lookup(parser, HASH_TABLE *table, ...).
- */
- unsigned char step = 0;
- unsigned long mask = nsAttsSize - 1;
- j = uriHash & mask; /* index into hash table */
- while (nsAtts[j].version == version) {
- /* for speed we compare stored hash values first */
- if (uriHash == nsAtts[j].hash) {
- const XML_Char *s1 = poolStart(&tempPool);
- const XML_Char *s2 = nsAtts[j].uriName;
- /* s1 is null terminated, but not s2 */
- for (; *s1 == *s2 && *s1 != 0; s1++, s2++);
- if (*s1 == 0)
- return XML_ERROR_DUPLICATE_ATTRIBUTE;
- }
- if (!step)
- step = PROBE_STEP(uriHash, mask, nsAttsPower);
- j < step ? (j += nsAttsSize - step) : (j -= step);
- }
- }
-
- if (ns_triplets) { /* append namespace separator and prefix */
- tempPool.ptr[-1] = namespaceSeparator;
- s = b->prefix->name;
- do {
- if (!poolAppendChar(&tempPool, *s))
- return XML_ERROR_NO_MEMORY;
- } while (*s++);
- }
-
- /* store expanded name in attribute list */
- s = poolStart(&tempPool);
- poolFinish(&tempPool);
- appAtts[i] = s;
-
- /* fill empty slot with new version, uriName and hash value */
- nsAtts[j].version = version;
- nsAtts[j].hash = uriHash;
- nsAtts[j].uriName = s;
-
- if (!--nPrefixes) {
- i += 2;
- break;
- }
- }
- else /* not prefixed */
- ((XML_Char *)s)[-1] = 0; /* clear flag */
- }
- }
- /* clear flags for the remaining attributes */
- for (; i < attIndex; i += 2)
- ((XML_Char *)(appAtts[i]))[-1] = 0;
- for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding)
- binding->attId->name[-1] = 0;
-
- if (!ns)
- return XML_ERROR_NONE;
-
- /* expand the element type name */
- if (elementType->prefix) {
- binding = elementType->prefix->binding;
- if (!binding)
- return XML_ERROR_UNBOUND_PREFIX;
- localPart = tagNamePtr->str;
- while (*localPart++ != XML_T(ASCII_COLON))
- ;
- }
- else if (dtd->defaultPrefix.binding) {
- binding = dtd->defaultPrefix.binding;
- localPart = tagNamePtr->str;
- }
- else
- return XML_ERROR_NONE;
- prefixLen = 0;
- if (ns_triplets && binding->prefix->name) {
- for (; binding->prefix->name[prefixLen++];)
- ; /* prefixLen includes null terminator */
- }
- tagNamePtr->localPart = localPart;
- tagNamePtr->uriLen = binding->uriLen;
- tagNamePtr->prefix = binding->prefix->name;
- tagNamePtr->prefixLen = prefixLen;
- for (i = 0; localPart[i++];)
- ; /* i includes null terminator */
- n = i + binding->uriLen + prefixLen;
- if (n > binding->uriAlloc) {
- TAG *p;
- uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char));
- if (!uri)
- return XML_ERROR_NO_MEMORY;
- binding->uriAlloc = n + EXPAND_SPARE;
- memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char));
- for (p = tagStack; p; p = p->parent)
- if (p->name.str == binding->uri)
- p->name.str = uri;
- FREE(binding->uri);
- binding->uri = uri;
- }
- /* if namespaceSeparator != '\0' then uri includes it already */
- uri = binding->uri + binding->uriLen;
- memcpy(uri, localPart, i * sizeof(XML_Char));
- /* we always have a namespace separator between localPart and prefix */
- if (prefixLen) {
- uri += i - 1;
- *uri = namespaceSeparator; /* replace null terminator */
- memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char));
- }
- tagNamePtr->str = binding->uri;
- return XML_ERROR_NONE;
-}
-
-/* addBinding() overwrites the value of prefix->binding without checking.
- Therefore one must keep track of the old value outside of addBinding().
-*/
-static enum XML_Error
-addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
- const XML_Char *uri, BINDING **bindingsPtr)
-{
- static const XML_Char xmlNamespace[] = {
- ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH,
- ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD,
- ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L,
- ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, ASCII_SLASH,
- ASCII_n, ASCII_a, ASCII_m, ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c,
- ASCII_e, '\0'
- };
- static const int xmlLen =
- (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1;
- static const XML_Char xmlnsNamespace[] = {
- ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH,
- ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD,
- ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0,
- ASCII_0, ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s,
- ASCII_SLASH, '\0'
- };
- static const int xmlnsLen =
- (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1;
-
- XML_Bool mustBeXML = XML_FALSE;
- XML_Bool isXML = XML_TRUE;
- XML_Bool isXMLNS = XML_TRUE;
-
- BINDING *b;
- int len;
-
- /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */
- if (*uri == XML_T('\0') && prefix->name)
- return XML_ERROR_UNDECLARING_PREFIX;
-
- if (prefix->name
- && prefix->name[0] == XML_T(ASCII_x)
- && prefix->name[1] == XML_T(ASCII_m)
- && prefix->name[2] == XML_T(ASCII_l)) {
-
- /* Not allowed to bind xmlns */
- if (prefix->name[3] == XML_T(ASCII_n)
- && prefix->name[4] == XML_T(ASCII_s)
- && prefix->name[5] == XML_T('\0'))
- return XML_ERROR_RESERVED_PREFIX_XMLNS;
-
- if (prefix->name[3] == XML_T('\0'))
- mustBeXML = XML_TRUE;
- }
-
- for (len = 0; uri[len]; len++) {
- if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len]))
- isXML = XML_FALSE;
-
- if (!mustBeXML && isXMLNS
- && (len > xmlnsLen || uri[len] != xmlnsNamespace[len]))
- isXMLNS = XML_FALSE;
- }
- isXML = isXML && len == xmlLen;
- isXMLNS = isXMLNS && len == xmlnsLen;
-
- if (mustBeXML != isXML)
- return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML
- : XML_ERROR_RESERVED_NAMESPACE_URI;
-
- if (isXMLNS)
- return XML_ERROR_RESERVED_NAMESPACE_URI;
-
- if (namespaceSeparator)
- len++;
- if (freeBindingList) {
- b = freeBindingList;
- if (len > b->uriAlloc) {
- XML_Char *temp = (XML_Char *)REALLOC(b->uri,
- sizeof(XML_Char) * (len + EXPAND_SPARE));
- if (temp == NULL)
- return XML_ERROR_NO_MEMORY;
- b->uri = temp;
- b->uriAlloc = len + EXPAND_SPARE;
- }
- freeBindingList = b->nextTagBinding;
- }
- else {
- b = (BINDING *)MALLOC(sizeof(BINDING));
- if (!b)
- return XML_ERROR_NO_MEMORY;
- b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE));
- if (!b->uri) {
- FREE(b);
- return XML_ERROR_NO_MEMORY;
- }
- b->uriAlloc = len + EXPAND_SPARE;
- }
- b->uriLen = len;
- memcpy(b->uri, uri, len * sizeof(XML_Char));
- if (namespaceSeparator)
- b->uri[len - 1] = namespaceSeparator;
- b->prefix = prefix;
- b->attId = attId;
- b->prevPrefixBinding = prefix->binding;
- /* NULL binding when default namespace undeclared */
- if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix)
- prefix->binding = NULL;
- else
- prefix->binding = b;
- b->nextTagBinding = *bindingsPtr;
- *bindingsPtr = b;
- /* if attId == NULL then we are not starting a namespace scope */
- if (attId && startNamespaceDeclHandler)
- startNamespaceDeclHandler(handlerArg, prefix->name,
- prefix->binding ? uri : 0);
- return XML_ERROR_NONE;
-}
-
-/* The idea here is to avoid using stack for each CDATA section when
- the whole file is parsed with one call.
-*/
-static enum XML_Error PTRCALL
-cdataSectionProcessor(XML_Parser parser,
- const char *start,
- const char *end,
- const char **endPtr)
-{
- enum XML_Error result = doCdataSection(parser, encoding, &start, end,
- endPtr, (XML_Bool)!ps_finalBuffer);
- if (result != XML_ERROR_NONE)
- return result;
- if (start) {
- if (parentParser) { /* we are parsing an external entity */
- processor = externalEntityContentProcessor;
- return externalEntityContentProcessor(parser, start, end, endPtr);
- }
- else {
- processor = contentProcessor;
- return contentProcessor(parser, start, end, endPtr);
- }
- }
- return result;
-}
-
-/* startPtr gets set to non-null if the section is closed, and to null if
- the section is not yet closed.
-*/
-static enum XML_Error
-doCdataSection(XML_Parser parser,
- const ENCODING *enc,
- const char **startPtr,
- const char *end,
- const char **nextPtr,
- XML_Bool haveMore)
-{
- const char *s = *startPtr;
- const char **eventPP;
- const char **eventEndPP;
- if (enc == encoding) {
- eventPP = &eventPtr;
- *eventPP = s;
- eventEndPP = &eventEndPtr;
- }
- else {
- eventPP = &(openInternalEntities->internalEventPtr);
- eventEndPP = &(openInternalEntities->internalEventEndPtr);
- }
- *eventPP = s;
- *startPtr = NULL;
-
- for (;;) {
- const char *next;
- int tok = XmlCdataSectionTok(enc, s, end, &next);
- *eventEndPP = next;
- switch (tok) {
- case XML_TOK_CDATA_SECT_CLOSE:
- if (endCdataSectionHandler)
- endCdataSectionHandler(handlerArg);
-#if 0
- /* see comment under XML_TOK_CDATA_SECT_OPEN */
- else if (characterDataHandler)
- characterDataHandler(handlerArg, dataBuf, 0);
-#endif
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- *startPtr = next;
- *nextPtr = next;
- if (ps_parsing == XML_FINISHED)
- return XML_ERROR_ABORTED;
- else
- return XML_ERROR_NONE;
- case XML_TOK_DATA_NEWLINE:
- if (characterDataHandler) {
- XML_Char c = 0xA;
- characterDataHandler(handlerArg, &c, 1);
- }
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- break;
- case XML_TOK_DATA_CHARS:
- {
- XML_CharacterDataHandler charDataHandler = characterDataHandler;
- if (charDataHandler) {
- if (MUST_CONVERT(enc, s)) {
- for (;;) {
- ICHAR *dataPtr = (ICHAR *)dataBuf;
- XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
- *eventEndPP = next;
- charDataHandler(handlerArg, dataBuf,
- (int)(dataPtr - (ICHAR *)dataBuf));
- if (s == next)
- break;
- *eventPP = s;
- }
- }
- else
- charDataHandler(handlerArg,
- (XML_Char *)s,
- (int)((XML_Char *)next - (XML_Char *)s));
- }
- else if (defaultHandler)
- reportDefault(parser, enc, s, next);
- }
- break;
- case XML_TOK_INVALID:
- *eventPP = next;
- return XML_ERROR_INVALID_TOKEN;
- case XML_TOK_PARTIAL_CHAR:
- if (haveMore) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_PARTIAL_CHAR;
- case XML_TOK_PARTIAL:
- case XML_TOK_NONE:
- if (haveMore) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_UNCLOSED_CDATA_SECTION;
- default:
- *eventPP = next;
- return XML_ERROR_UNEXPECTED_STATE;
- }
-
- *eventPP = s = next;
- switch (ps_parsing) {
- case XML_SUSPENDED:
- *nextPtr = next;
- return XML_ERROR_NONE;
- case XML_FINISHED:
- return XML_ERROR_ABORTED;
- default: ;
- }
- }
- /* not reached */
-}
-
-#ifdef XML_DTD
-
-/* The idea here is to avoid using stack for each IGNORE section when
- the whole file is parsed with one call.
-*/
-static enum XML_Error PTRCALL
-ignoreSectionProcessor(XML_Parser parser,
- const char *start,
- const char *end,
- const char **endPtr)
-{
- enum XML_Error result = doIgnoreSection(parser, encoding, &start, end,
- endPtr, (XML_Bool)!ps_finalBuffer);
- if (result != XML_ERROR_NONE)
- return result;
- if (start) {
- processor = prologProcessor;
- return prologProcessor(parser, start, end, endPtr);
- }
- return result;
-}
-
-/* startPtr gets set to non-null is the section is closed, and to null
- if the section is not yet closed.
-*/
-static enum XML_Error
-doIgnoreSection(XML_Parser parser,
- const ENCODING *enc,
- const char **startPtr,
- const char *end,
- const char **nextPtr,
- XML_Bool haveMore)
-{
- const char *next;
- int tok;
- const char *s = *startPtr;
- const char **eventPP;
- const char **eventEndPP;
- if (enc == encoding) {
- eventPP = &eventPtr;
- *eventPP = s;
- eventEndPP = &eventEndPtr;
- }
- else {
- eventPP = &(openInternalEntities->internalEventPtr);
- eventEndPP = &(openInternalEntities->internalEventEndPtr);
- }
- *eventPP = s;
- *startPtr = NULL;
- tok = XmlIgnoreSectionTok(enc, s, end, &next);
- *eventEndPP = next;
- switch (tok) {
- case XML_TOK_IGNORE_SECT:
- if (defaultHandler)
- reportDefault(parser, enc, s, next);
- *startPtr = next;
- *nextPtr = next;
- if (ps_parsing == XML_FINISHED)
- return XML_ERROR_ABORTED;
- else
- return XML_ERROR_NONE;
- case XML_TOK_INVALID:
- *eventPP = next;
- return XML_ERROR_INVALID_TOKEN;
- case XML_TOK_PARTIAL_CHAR:
- if (haveMore) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_PARTIAL_CHAR;
- case XML_TOK_PARTIAL:
- case XML_TOK_NONE:
- if (haveMore) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */
- default:
- *eventPP = next;
- return XML_ERROR_UNEXPECTED_STATE;
- }
- /* not reached */
-}
-
-#endif /* XML_DTD */
-
-static enum XML_Error
-initializeEncoding(XML_Parser parser)
-{
- const char *s;
-#ifdef XML_UNICODE
- char encodingBuf[128];
- if (!protocolEncodingName)
- s = NULL;
- else {
- int i;
- for (i = 0; protocolEncodingName[i]; i++) {
- if (i == sizeof(encodingBuf) - 1
- || (protocolEncodingName[i] & ~0x7f) != 0) {
- encodingBuf[0] = '\0';
- break;
- }
- encodingBuf[i] = (char)protocolEncodingName[i];
- }
- encodingBuf[i] = '\0';
- s = encodingBuf;
- }
-#else
- s = protocolEncodingName;
-#endif
- if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s))
- return XML_ERROR_NONE;
- return handleUnknownEncoding(parser, protocolEncodingName);
-}
-
-static enum XML_Error
-processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
- const char *s, const char *next)
-{
- const char *encodingName = NULL;
- const XML_Char *storedEncName = NULL;
- const ENCODING *newEncoding = NULL;
- const char *version = NULL;
- const char *versionend;
- const XML_Char *storedversion = NULL;
- int standalone = -1;
- if (!(ns
- ? XmlParseXmlDeclNS
- : XmlParseXmlDecl)(isGeneralTextEntity,
- encoding,
- s,
- next,
- &eventPtr,
- &version,
- &versionend,
- &encodingName,
- &newEncoding,
- &standalone)) {
- if (isGeneralTextEntity)
- return XML_ERROR_TEXT_DECL;
- else
- return XML_ERROR_XML_DECL;
- }
- if (!isGeneralTextEntity && standalone == 1) {
- _dtd->standalone = XML_TRUE;
-#ifdef XML_DTD
- if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE)
- paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
-#endif /* XML_DTD */
- }
- if (xmlDeclHandler) {
- if (encodingName != NULL) {
- storedEncName = poolStoreString(&temp2Pool,
- encoding,
- encodingName,
- encodingName
- + XmlNameLength(encoding, encodingName));
- if (!storedEncName)
- return XML_ERROR_NO_MEMORY;
- poolFinish(&temp2Pool);
- }
- if (version) {
- storedversion = poolStoreString(&temp2Pool,
- encoding,
- version,
- versionend - encoding->minBytesPerChar);
- if (!storedversion)
- return XML_ERROR_NO_MEMORY;
- }
- xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone);
- }
- else if (defaultHandler)
- reportDefault(parser, encoding, s, next);
- if (protocolEncodingName == NULL) {
- if (newEncoding) {
- if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) {
- eventPtr = encodingName;
- return XML_ERROR_INCORRECT_ENCODING;
- }
- encoding = newEncoding;
- }
- else if (encodingName) {
- enum XML_Error result;
- if (!storedEncName) {
- storedEncName = poolStoreString(
- &temp2Pool, encoding, encodingName,
- encodingName + XmlNameLength(encoding, encodingName));
- if (!storedEncName)
- return XML_ERROR_NO_MEMORY;
- }
- result = handleUnknownEncoding(parser, storedEncName);
- poolClear(&temp2Pool);
- if (result == XML_ERROR_UNKNOWN_ENCODING)
- eventPtr = encodingName;
- return result;
- }
- }
-
- if (storedEncName || storedversion)
- poolClear(&temp2Pool);
-
- return XML_ERROR_NONE;
-}
-
-static enum XML_Error
-handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName)
-{
- if (unknownEncodingHandler) {
- XML_Encoding info;
- int i;
- for (i = 0; i < 256; i++)
- info.map[i] = -1;
- info.convert = NULL;
- info.data = NULL;
- info.release = NULL;
- if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName,
- &info)) {
- ENCODING *enc;
- unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding());
- if (!unknownEncodingMem) {
- if (info.release)
- info.release(info.data);
- return XML_ERROR_NO_MEMORY;
- }
- enc = (ns
- ? XmlInitUnknownEncodingNS
- : XmlInitUnknownEncoding)(unknownEncodingMem,
- info.map,
- info.convert,
- info.data);
- if (enc) {
- unknownEncodingData = info.data;
- unknownEncodingRelease = info.release;
- encoding = enc;
- return XML_ERROR_NONE;
- }
- }
- if (info.release != NULL)
- info.release(info.data);
- }
- return XML_ERROR_UNKNOWN_ENCODING;
-}
-
-static enum XML_Error PTRCALL
-prologInitProcessor(XML_Parser parser,
- const char *s,
- const char *end,
- const char **nextPtr)
-{
- enum XML_Error result = initializeEncoding(parser);
- if (result != XML_ERROR_NONE)
- return result;
- processor = prologProcessor;
- return prologProcessor(parser, s, end, nextPtr);
-}
-
-#ifdef XML_DTD
-
-static enum XML_Error PTRCALL
-externalParEntInitProcessor(XML_Parser parser,
- const char *s,
- const char *end,
- const char **nextPtr)
-{
- enum XML_Error result = initializeEncoding(parser);
- if (result != XML_ERROR_NONE)
- return result;
-
- /* we know now that XML_Parse(Buffer) has been called,
- so we consider the external parameter entity read */
- _dtd->paramEntityRead = XML_TRUE;
-
- if (prologState.inEntityValue) {
- processor = entityValueInitProcessor;
- return entityValueInitProcessor(parser, s, end, nextPtr);
- }
- else {
- processor = externalParEntProcessor;
- return externalParEntProcessor(parser, s, end, nextPtr);
- }
-}
-
-static enum XML_Error PTRCALL
-entityValueInitProcessor(XML_Parser parser,
- const char *s,
- const char *end,
- const char **nextPtr)
-{
- int tok;
- const char *start = s;
- const char *next = start;
- eventPtr = start;
-
- for (;;) {
- tok = XmlPrologTok(encoding, start, end, &next);
- eventEndPtr = next;
- if (tok <= 0) {
- if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- switch (tok) {
- case XML_TOK_INVALID:
- return XML_ERROR_INVALID_TOKEN;
- case XML_TOK_PARTIAL:
- return XML_ERROR_UNCLOSED_TOKEN;
- case XML_TOK_PARTIAL_CHAR:
- return XML_ERROR_PARTIAL_CHAR;
- case XML_TOK_NONE: /* start == end */
- default:
- break;
- }
- /* found end of entity value - can store it now */
- return storeEntityValue(parser, encoding, s, end);
- }
- else if (tok == XML_TOK_XML_DECL) {
- enum XML_Error result;
- result = processXmlDecl(parser, 0, start, next);
- if (result != XML_ERROR_NONE)
- return result;
- switch (ps_parsing) {
- case XML_SUSPENDED:
- *nextPtr = next;
- return XML_ERROR_NONE;
- case XML_FINISHED:
- return XML_ERROR_ABORTED;
- default:
- *nextPtr = next;
- }
- /* stop scanning for text declaration - we found one */
- processor = entityValueProcessor;
- return entityValueProcessor(parser, next, end, nextPtr);
- }
- /* If we are at the end of the buffer, this would cause XmlPrologTok to
- return XML_TOK_NONE on the next call, which would then cause the
- function to exit with *nextPtr set to s - that is what we want for other
- tokens, but not for the BOM - we would rather like to skip it;
- then, when this routine is entered the next time, XmlPrologTok will
- return XML_TOK_INVALID, since the BOM is still in the buffer
- */
- else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) {
- *nextPtr = next;
- return XML_ERROR_NONE;
- }
- start = next;
- eventPtr = start;
- }
-}
-
-static enum XML_Error PTRCALL
-externalParEntProcessor(XML_Parser parser,
- const char *s,
- const char *end,
- const char **nextPtr)
-{
- const char *next = s;
- int tok;
-
- tok = XmlPrologTok(encoding, s, end, &next);
- if (tok <= 0) {
- if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- switch (tok) {
- case XML_TOK_INVALID:
- return XML_ERROR_INVALID_TOKEN;
- case XML_TOK_PARTIAL:
- return XML_ERROR_UNCLOSED_TOKEN;
- case XML_TOK_PARTIAL_CHAR:
- return XML_ERROR_PARTIAL_CHAR;
- case XML_TOK_NONE: /* start == end */
- default:
- break;
- }
- }
- /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM.
- However, when parsing an external subset, doProlog will not accept a BOM
- as valid, and report a syntax error, so we have to skip the BOM
- */
- else if (tok == XML_TOK_BOM) {
- s = next;
- tok = XmlPrologTok(encoding, s, end, &next);
- }
-
- processor = prologProcessor;
- return doProlog(parser, encoding, s, end, tok, next,
- nextPtr, (XML_Bool)!ps_finalBuffer);
-}
-
-static enum XML_Error PTRCALL
-entityValueProcessor(XML_Parser parser,
- const char *s,
- const char *end,
- const char **nextPtr)
-{
- const char *start = s;
- const char *next = s;
- const ENCODING *enc = encoding;
- int tok;
-
- for (;;) {
- tok = XmlPrologTok(enc, start, end, &next);
- if (tok <= 0) {
- if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- switch (tok) {
- case XML_TOK_INVALID:
- return XML_ERROR_INVALID_TOKEN;
- case XML_TOK_PARTIAL:
- return XML_ERROR_UNCLOSED_TOKEN;
- case XML_TOK_PARTIAL_CHAR:
- return XML_ERROR_PARTIAL_CHAR;
- case XML_TOK_NONE: /* start == end */
- default:
- break;
- }
- /* found end of entity value - can store it now */
- return storeEntityValue(parser, enc, s, end);
- }
- start = next;
- }
-}
-
-#endif /* XML_DTD */
-
-static enum XML_Error PTRCALL
-prologProcessor(XML_Parser parser,
- const char *s,
- const char *end,
- const char **nextPtr)
-{
- const char *next = s;
- int tok = XmlPrologTok(encoding, s, end, &next);
- return doProlog(parser, encoding, s, end, tok, next,
- nextPtr, (XML_Bool)!ps_finalBuffer);
-}
-
-static enum XML_Error
-doProlog(XML_Parser parser,
- const ENCODING *enc,
- const char *s,
- const char *end,
- int tok,
- const char *next,
- const char **nextPtr,
- XML_Bool haveMore)
-{
-#ifdef XML_DTD
- static const XML_Char externalSubsetName[] = { ASCII_HASH , '\0' };
-#endif /* XML_DTD */
- static const XML_Char atypeCDATA[] =
- { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
- static const XML_Char atypeID[] = { ASCII_I, ASCII_D, '\0' };
- static const XML_Char atypeIDREF[] =
- { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' };
- static const XML_Char atypeIDREFS[] =
- { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' };
- static const XML_Char atypeENTITY[] =
- { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' };
- static const XML_Char atypeENTITIES[] = { ASCII_E, ASCII_N,
- ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' };
- static const XML_Char atypeNMTOKEN[] = {
- ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' };
- static const XML_Char atypeNMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T,
- ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' };
- static const XML_Char notationPrefix[] = { ASCII_N, ASCII_O, ASCII_T,
- ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0' };
- static const XML_Char enumValueSep[] = { ASCII_PIPE, '\0' };
- static const XML_Char enumValueStart[] = { ASCII_LPAREN, '\0' };
-
- /* save one level of indirection */
- DTD * const dtd = _dtd;
-
- const char **eventPP;
- const char **eventEndPP;
- enum XML_Content_Quant quant;
-
- if (enc == encoding) {
- eventPP = &eventPtr;
- eventEndPP = &eventEndPtr;
- }
- else {
- eventPP = &(openInternalEntities->internalEventPtr);
- eventEndPP = &(openInternalEntities->internalEventEndPtr);
- }
-
- for (;;) {
- int role;
- XML_Bool handleDefault = XML_TRUE;
- *eventPP = s;
- *eventEndPP = next;
- if (tok <= 0) {
- if (haveMore && tok != XML_TOK_INVALID) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- switch (tok) {
- case XML_TOK_INVALID:
- *eventPP = next;
- return XML_ERROR_INVALID_TOKEN;
- case XML_TOK_PARTIAL:
- return XML_ERROR_UNCLOSED_TOKEN;
- case XML_TOK_PARTIAL_CHAR:
- return XML_ERROR_PARTIAL_CHAR;
- case -XML_TOK_PROLOG_S:
- tok = -tok;
- break;
- case XML_TOK_NONE:
-#ifdef XML_DTD
- /* for internal PE NOT referenced between declarations */
- if (enc != encoding && !openInternalEntities->betweenDecl) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- /* WFC: PE Between Declarations - must check that PE contains
- complete markup, not only for external PEs, but also for
- internal PEs if the reference occurs between declarations.
- */
- if (isParamEntity || enc != encoding) {
- if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc)
- == XML_ROLE_ERROR)
- return XML_ERROR_INCOMPLETE_PE;
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
-#endif /* XML_DTD */
- return XML_ERROR_NO_ELEMENTS;
- default:
- tok = -tok;
- next = end;
- break;
- }
- }
- role = XmlTokenRole(&prologState, tok, s, next, enc);
- switch (role) {
- case XML_ROLE_XML_DECL:
- {
- enum XML_Error result = processXmlDecl(parser, 0, s, next);
- if (result != XML_ERROR_NONE)
- return result;
- enc = encoding;
- handleDefault = XML_FALSE;
- }
- break;
- case XML_ROLE_DOCTYPE_NAME:
- if (startDoctypeDeclHandler) {
- doctypeName = poolStoreString(&tempPool, enc, s, next);
- if (!doctypeName)
- return XML_ERROR_NO_MEMORY;
- poolFinish(&tempPool);
- doctypePubid = NULL;
- handleDefault = XML_FALSE;
- }
- doctypeSysid = NULL; /* always initialize to NULL */
- break;
- case XML_ROLE_DOCTYPE_INTERNAL_SUBSET:
- if (startDoctypeDeclHandler) {
- startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid,
- doctypePubid, 1);
- doctypeName = NULL;
- poolClear(&tempPool);
- handleDefault = XML_FALSE;
- }
- break;
-#ifdef XML_DTD
- case XML_ROLE_TEXT_DECL:
- {
- enum XML_Error result = processXmlDecl(parser, 1, s, next);
- if (result != XML_ERROR_NONE)
- return result;
- enc = encoding;
- handleDefault = XML_FALSE;
- }
- break;
-#endif /* XML_DTD */
- case XML_ROLE_DOCTYPE_PUBLIC_ID:
-#ifdef XML_DTD
- useForeignDTD = XML_FALSE;
- declEntity = (ENTITY *)lookup(parser,
- &dtd->paramEntities,
- externalSubsetName,
- sizeof(ENTITY));
- if (!declEntity)
- return XML_ERROR_NO_MEMORY;
-#endif /* XML_DTD */
- dtd->hasParamEntityRefs = XML_TRUE;
- if (startDoctypeDeclHandler) {
- XML_Char *pubId;
- if (!XmlIsPublicId(enc, s, next, eventPP))
- return XML_ERROR_PUBLICID;
- pubId = poolStoreString(&tempPool, enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (!pubId)
- return XML_ERROR_NO_MEMORY;
- normalizePublicId(pubId);
- poolFinish(&tempPool);
- doctypePubid = pubId;
- handleDefault = XML_FALSE;
- goto alreadyChecked;
- }
- /* fall through */
- case XML_ROLE_ENTITY_PUBLIC_ID:
- if (!XmlIsPublicId(enc, s, next, eventPP))
- return XML_ERROR_PUBLICID;
- alreadyChecked:
- if (dtd->keepProcessing && declEntity) {
- XML_Char *tem = poolStoreString(&dtd->pool,
- enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (!tem)
- return XML_ERROR_NO_MEMORY;
- normalizePublicId(tem);
- declEntity->publicId = tem;
- poolFinish(&dtd->pool);
- if (entityDeclHandler)
- handleDefault = XML_FALSE;
- }
- break;
- case XML_ROLE_DOCTYPE_CLOSE:
- if (doctypeName) {
- startDoctypeDeclHandler(handlerArg, doctypeName,
- doctypeSysid, doctypePubid, 0);
- poolClear(&tempPool);
- handleDefault = XML_FALSE;
- }
- /* doctypeSysid will be non-NULL in the case of a previous
- XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler
- was not set, indicating an external subset
- */
-#ifdef XML_DTD
- if (doctypeSysid || useForeignDTD) {
- XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
- dtd->hasParamEntityRefs = XML_TRUE;
- if (paramEntityParsing && externalEntityRefHandler) {
- ENTITY *entity = (ENTITY *)lookup(parser,
- &dtd->paramEntities,
- externalSubsetName,
- sizeof(ENTITY));
- if (!entity)
- return XML_ERROR_NO_MEMORY;
- if (useForeignDTD)
- entity->base = curBase;
- dtd->paramEntityRead = XML_FALSE;
- if (!externalEntityRefHandler(externalEntityRefHandlerArg,
- 0,
- entity->base,
- entity->systemId,
- entity->publicId))
- return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
- if (dtd->paramEntityRead) {
- if (!dtd->standalone &&
- notStandaloneHandler &&
- !notStandaloneHandler(handlerArg))
- return XML_ERROR_NOT_STANDALONE;
- }
- /* if we didn't read the foreign DTD then this means that there
- is no external subset and we must reset dtd->hasParamEntityRefs
- */
- else if (!doctypeSysid)
- dtd->hasParamEntityRefs = hadParamEntityRefs;
- /* end of DTD - no need to update dtd->keepProcessing */
- }
- useForeignDTD = XML_FALSE;
- }
-#endif /* XML_DTD */
- if (endDoctypeDeclHandler) {
- endDoctypeDeclHandler(handlerArg);
- handleDefault = XML_FALSE;
- }
- break;
- case XML_ROLE_INSTANCE_START:
-#ifdef XML_DTD
- /* if there is no DOCTYPE declaration then now is the
- last chance to read the foreign DTD
- */
- if (useForeignDTD) {
- XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
- dtd->hasParamEntityRefs = XML_TRUE;
- if (paramEntityParsing && externalEntityRefHandler) {
- ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities,
- externalSubsetName,
- sizeof(ENTITY));
- if (!entity)
- return XML_ERROR_NO_MEMORY;
- entity->base = curBase;
- dtd->paramEntityRead = XML_FALSE;
- if (!externalEntityRefHandler(externalEntityRefHandlerArg,
- 0,
- entity->base,
- entity->systemId,
- entity->publicId))
- return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
- if (dtd->paramEntityRead) {
- if (!dtd->standalone &&
- notStandaloneHandler &&
- !notStandaloneHandler(handlerArg))
- return XML_ERROR_NOT_STANDALONE;
- }
- /* if we didn't read the foreign DTD then this means that there
- is no external subset and we must reset dtd->hasParamEntityRefs
- */
- else
- dtd->hasParamEntityRefs = hadParamEntityRefs;
- /* end of DTD - no need to update dtd->keepProcessing */
- }
- }
-#endif /* XML_DTD */
- processor = contentProcessor;
- return contentProcessor(parser, s, end, nextPtr);
- case XML_ROLE_ATTLIST_ELEMENT_NAME:
- declElementType = getElementType(parser, enc, s, next);
- if (!declElementType)
- return XML_ERROR_NO_MEMORY;
- goto checkAttListDeclHandler;
- case XML_ROLE_ATTRIBUTE_NAME:
- declAttributeId = getAttributeId(parser, enc, s, next);
- if (!declAttributeId)
- return XML_ERROR_NO_MEMORY;
- declAttributeIsCdata = XML_FALSE;
- declAttributeType = NULL;
- declAttributeIsId = XML_FALSE;
- goto checkAttListDeclHandler;
- case XML_ROLE_ATTRIBUTE_TYPE_CDATA:
- declAttributeIsCdata = XML_TRUE;
- declAttributeType = atypeCDATA;
- goto checkAttListDeclHandler;
- case XML_ROLE_ATTRIBUTE_TYPE_ID:
- declAttributeIsId = XML_TRUE;
- declAttributeType = atypeID;
- goto checkAttListDeclHandler;
- case XML_ROLE_ATTRIBUTE_TYPE_IDREF:
- declAttributeType = atypeIDREF;
- goto checkAttListDeclHandler;
- case XML_ROLE_ATTRIBUTE_TYPE_IDREFS:
- declAttributeType = atypeIDREFS;
- goto checkAttListDeclHandler;
- case XML_ROLE_ATTRIBUTE_TYPE_ENTITY:
- declAttributeType = atypeENTITY;
- goto checkAttListDeclHandler;
- case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES:
- declAttributeType = atypeENTITIES;
- goto checkAttListDeclHandler;
- case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN:
- declAttributeType = atypeNMTOKEN;
- goto checkAttListDeclHandler;
- case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS:
- declAttributeType = atypeNMTOKENS;
- checkAttListDeclHandler:
- if (dtd->keepProcessing && attlistDeclHandler)
- handleDefault = XML_FALSE;
- break;
- case XML_ROLE_ATTRIBUTE_ENUM_VALUE:
- case XML_ROLE_ATTRIBUTE_NOTATION_VALUE:
- if (dtd->keepProcessing && attlistDeclHandler) {
- const XML_Char *prefix;
- if (declAttributeType) {
- prefix = enumValueSep;
- }
- else {
- prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE
- ? notationPrefix
- : enumValueStart);
- }
- if (!poolAppendString(&tempPool, prefix))
- return XML_ERROR_NO_MEMORY;
- if (!poolAppend(&tempPool, enc, s, next))
- return XML_ERROR_NO_MEMORY;
- declAttributeType = tempPool.start;
- handleDefault = XML_FALSE;
- }
- break;
- case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE:
- case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE:
- if (dtd->keepProcessing) {
- if (!defineAttribute(declElementType, declAttributeId,
- declAttributeIsCdata, declAttributeIsId,
- 0, parser))
- return XML_ERROR_NO_MEMORY;
- if (attlistDeclHandler && declAttributeType) {
- if (*declAttributeType == XML_T(ASCII_LPAREN)
- || (*declAttributeType == XML_T(ASCII_N)
- && declAttributeType[1] == XML_T(ASCII_O))) {
- /* Enumerated or Notation type */
- if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN))
- || !poolAppendChar(&tempPool, XML_T('\0')))
- return XML_ERROR_NO_MEMORY;
- declAttributeType = tempPool.start;
- poolFinish(&tempPool);
- }
- *eventEndPP = s;
- attlistDeclHandler(handlerArg, declElementType->name,
- declAttributeId->name, declAttributeType,
- 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE);
- poolClear(&tempPool);
- handleDefault = XML_FALSE;
- }
- }
- break;
- case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE:
- case XML_ROLE_FIXED_ATTRIBUTE_VALUE:
- if (dtd->keepProcessing) {
- const XML_Char *attVal;
- enum XML_Error result =
- storeAttributeValue(parser, enc, declAttributeIsCdata,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar,
- &dtd->pool);
- if (result)
- return result;
- attVal = poolStart(&dtd->pool);
- poolFinish(&dtd->pool);
- /* ID attributes aren't allowed to have a default */
- if (!defineAttribute(declElementType, declAttributeId,
- declAttributeIsCdata, XML_FALSE, attVal, parser))
- return XML_ERROR_NO_MEMORY;
- if (attlistDeclHandler && declAttributeType) {
- if (*declAttributeType == XML_T(ASCII_LPAREN)
- || (*declAttributeType == XML_T(ASCII_N)
- && declAttributeType[1] == XML_T(ASCII_O))) {
- /* Enumerated or Notation type */
- if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN))
- || !poolAppendChar(&tempPool, XML_T('\0')))
- return XML_ERROR_NO_MEMORY;
- declAttributeType = tempPool.start;
- poolFinish(&tempPool);
- }
- *eventEndPP = s;
- attlistDeclHandler(handlerArg, declElementType->name,
- declAttributeId->name, declAttributeType,
- attVal,
- role == XML_ROLE_FIXED_ATTRIBUTE_VALUE);
- poolClear(&tempPool);
- handleDefault = XML_FALSE;
- }
- }
- break;
- case XML_ROLE_ENTITY_VALUE:
- if (dtd->keepProcessing) {
- enum XML_Error result = storeEntityValue(parser, enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (declEntity) {
- declEntity->textPtr = poolStart(&dtd->entityValuePool);
- declEntity->textLen = (int)(poolLength(&dtd->entityValuePool));
- poolFinish(&dtd->entityValuePool);
- if (entityDeclHandler) {
- *eventEndPP = s;
- entityDeclHandler(handlerArg,
- declEntity->name,
- declEntity->is_param,
- declEntity->textPtr,
- declEntity->textLen,
- curBase, 0, 0, 0);
- handleDefault = XML_FALSE;
- }
- }
- else
- poolDiscard(&dtd->entityValuePool);
- if (result != XML_ERROR_NONE)
- return result;
- }
- break;
- case XML_ROLE_DOCTYPE_SYSTEM_ID:
-#ifdef XML_DTD
- useForeignDTD = XML_FALSE;
-#endif /* XML_DTD */
- dtd->hasParamEntityRefs = XML_TRUE;
- if (startDoctypeDeclHandler) {
- doctypeSysid = poolStoreString(&tempPool, enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (doctypeSysid == NULL)
- return XML_ERROR_NO_MEMORY;
- poolFinish(&tempPool);
- handleDefault = XML_FALSE;
- }
-#ifdef XML_DTD
- else
- /* use externalSubsetName to make doctypeSysid non-NULL
- for the case where no startDoctypeDeclHandler is set */
- doctypeSysid = externalSubsetName;
-#endif /* XML_DTD */
- if (!dtd->standalone
-#ifdef XML_DTD
- && !paramEntityParsing
-#endif /* XML_DTD */
- && notStandaloneHandler
- && !notStandaloneHandler(handlerArg))
- return XML_ERROR_NOT_STANDALONE;
-#ifndef XML_DTD
- break;
-#else /* XML_DTD */
- if (!declEntity) {
- declEntity = (ENTITY *)lookup(parser,
- &dtd->paramEntities,
- externalSubsetName,
- sizeof(ENTITY));
- if (!declEntity)
- return XML_ERROR_NO_MEMORY;
- declEntity->publicId = NULL;
- }
- /* fall through */
-#endif /* XML_DTD */
- case XML_ROLE_ENTITY_SYSTEM_ID:
- if (dtd->keepProcessing && declEntity) {
- declEntity->systemId = poolStoreString(&dtd->pool, enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (!declEntity->systemId)
- return XML_ERROR_NO_MEMORY;
- declEntity->base = curBase;
- poolFinish(&dtd->pool);
- if (entityDeclHandler)
- handleDefault = XML_FALSE;
- }
- break;
- case XML_ROLE_ENTITY_COMPLETE:
- if (dtd->keepProcessing && declEntity && entityDeclHandler) {
- *eventEndPP = s;
- entityDeclHandler(handlerArg,
- declEntity->name,
- declEntity->is_param,
- 0,0,
- declEntity->base,
- declEntity->systemId,
- declEntity->publicId,
- 0);
- handleDefault = XML_FALSE;
- }
- break;
- case XML_ROLE_ENTITY_NOTATION_NAME:
- if (dtd->keepProcessing && declEntity) {
- declEntity->notation = poolStoreString(&dtd->pool, enc, s, next);
- if (!declEntity->notation)
- return XML_ERROR_NO_MEMORY;
- poolFinish(&dtd->pool);
- if (unparsedEntityDeclHandler) {
- *eventEndPP = s;
- unparsedEntityDeclHandler(handlerArg,
- declEntity->name,
- declEntity->base,
- declEntity->systemId,
- declEntity->publicId,
- declEntity->notation);
- handleDefault = XML_FALSE;
- }
- else if (entityDeclHandler) {
- *eventEndPP = s;
- entityDeclHandler(handlerArg,
- declEntity->name,
- 0,0,0,
- declEntity->base,
- declEntity->systemId,
- declEntity->publicId,
- declEntity->notation);
- handleDefault = XML_FALSE;
- }
- }
- break;
- case XML_ROLE_GENERAL_ENTITY_NAME:
- {
- if (XmlPredefinedEntityName(enc, s, next)) {
- declEntity = NULL;
- break;
- }
- if (dtd->keepProcessing) {
- const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
- if (!name)
- return XML_ERROR_NO_MEMORY;
- declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, name,
- sizeof(ENTITY));
- if (!declEntity)
- return XML_ERROR_NO_MEMORY;
- if (declEntity->name != name) {
- poolDiscard(&dtd->pool);
- declEntity = NULL;
- }
- else {
- poolFinish(&dtd->pool);
- declEntity->publicId = NULL;
- declEntity->is_param = XML_FALSE;
- /* if we have a parent parser or are reading an internal parameter
- entity, then the entity declaration is not considered "internal"
- */
- declEntity->is_internal = !(parentParser || openInternalEntities);
- if (entityDeclHandler)
- handleDefault = XML_FALSE;
- }
- }
- else {
- poolDiscard(&dtd->pool);
- declEntity = NULL;
- }
- }
- break;
- case XML_ROLE_PARAM_ENTITY_NAME:
-#ifdef XML_DTD
- if (dtd->keepProcessing) {
- const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
- if (!name)
- return XML_ERROR_NO_MEMORY;
- declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities,
- name, sizeof(ENTITY));
- if (!declEntity)
- return XML_ERROR_NO_MEMORY;
- if (declEntity->name != name) {
- poolDiscard(&dtd->pool);
- declEntity = NULL;
- }
- else {
- poolFinish(&dtd->pool);
- declEntity->publicId = NULL;
- declEntity->is_param = XML_TRUE;
- /* if we have a parent parser or are reading an internal parameter
- entity, then the entity declaration is not considered "internal"
- */
- declEntity->is_internal = !(parentParser || openInternalEntities);
- if (entityDeclHandler)
- handleDefault = XML_FALSE;
- }
- }
- else {
- poolDiscard(&dtd->pool);
- declEntity = NULL;
- }
-#else /* not XML_DTD */
- declEntity = NULL;
-#endif /* XML_DTD */
- break;
- case XML_ROLE_NOTATION_NAME:
- declNotationPublicId = NULL;
- declNotationName = NULL;
- if (notationDeclHandler) {
- declNotationName = poolStoreString(&tempPool, enc, s, next);
- if (!declNotationName)
- return XML_ERROR_NO_MEMORY;
- poolFinish(&tempPool);
- handleDefault = XML_FALSE;
- }
- break;
- case XML_ROLE_NOTATION_PUBLIC_ID:
- if (!XmlIsPublicId(enc, s, next, eventPP))
- return XML_ERROR_PUBLICID;
- if (declNotationName) { /* means notationDeclHandler != NULL */
- XML_Char *tem = poolStoreString(&tempPool,
- enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (!tem)
- return XML_ERROR_NO_MEMORY;
- normalizePublicId(tem);
- declNotationPublicId = tem;
- poolFinish(&tempPool);
- handleDefault = XML_FALSE;
- }
- break;
- case XML_ROLE_NOTATION_SYSTEM_ID:
- if (declNotationName && notationDeclHandler) {
- const XML_Char *systemId
- = poolStoreString(&tempPool, enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (!systemId)
- return XML_ERROR_NO_MEMORY;
- *eventEndPP = s;
- notationDeclHandler(handlerArg,
- declNotationName,
- curBase,
- systemId,
- declNotationPublicId);
- handleDefault = XML_FALSE;
- }
- poolClear(&tempPool);
- break;
- case XML_ROLE_NOTATION_NO_SYSTEM_ID:
- if (declNotationPublicId && notationDeclHandler) {
- *eventEndPP = s;
- notationDeclHandler(handlerArg,
- declNotationName,
- curBase,
- 0,
- declNotationPublicId);
- handleDefault = XML_FALSE;
- }
- poolClear(&tempPool);
- break;
- case XML_ROLE_ERROR:
- switch (tok) {
- case XML_TOK_PARAM_ENTITY_REF:
- /* PE references in internal subset are
- not allowed within declarations. */
- return XML_ERROR_PARAM_ENTITY_REF;
- case XML_TOK_XML_DECL:
- return XML_ERROR_MISPLACED_XML_PI;
- default:
- return XML_ERROR_SYNTAX;
- }
-#ifdef XML_DTD
- case XML_ROLE_IGNORE_SECT:
- {
- enum XML_Error result;
- if (defaultHandler)
- reportDefault(parser, enc, s, next);
- handleDefault = XML_FALSE;
- result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore);
- if (result != XML_ERROR_NONE)
- return result;
- else if (!next) {
- processor = ignoreSectionProcessor;
- return result;
- }
- }
- break;
-#endif /* XML_DTD */
- case XML_ROLE_GROUP_OPEN:
- if (prologState.level >= groupSize) {
- if (groupSize) {
- char *temp = (char *)REALLOC(groupConnector, groupSize *= 2);
- if (temp == NULL)
- return XML_ERROR_NO_MEMORY;
- groupConnector = temp;
- if (dtd->scaffIndex) {
- int *temp = (int *)REALLOC(dtd->scaffIndex,
- groupSize * sizeof(int));
- if (temp == NULL)
- return XML_ERROR_NO_MEMORY;
- dtd->scaffIndex = temp;
- }
- }
- else {
- groupConnector = (char *)MALLOC(groupSize = 32);
- if (!groupConnector)
- return XML_ERROR_NO_MEMORY;
- }
- }
- groupConnector[prologState.level] = 0;
- if (dtd->in_eldecl) {
- int myindex = nextScaffoldPart(parser);
- if (myindex < 0)
- return XML_ERROR_NO_MEMORY;
- dtd->scaffIndex[dtd->scaffLevel] = myindex;
- dtd->scaffLevel++;
- dtd->scaffold[myindex].type = XML_CTYPE_SEQ;
- if (elementDeclHandler)
- handleDefault = XML_FALSE;
- }
- break;
- case XML_ROLE_GROUP_SEQUENCE:
- if (groupConnector[prologState.level] == ASCII_PIPE)
- return XML_ERROR_SYNTAX;
- groupConnector[prologState.level] = ASCII_COMMA;
- if (dtd->in_eldecl && elementDeclHandler)
- handleDefault = XML_FALSE;
- break;
- case XML_ROLE_GROUP_CHOICE:
- if (groupConnector[prologState.level] == ASCII_COMMA)
- return XML_ERROR_SYNTAX;
- if (dtd->in_eldecl
- && !groupConnector[prologState.level]
- && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
- != XML_CTYPE_MIXED)
- ) {
- dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
- = XML_CTYPE_CHOICE;
- if (elementDeclHandler)
- handleDefault = XML_FALSE;
- }
- groupConnector[prologState.level] = ASCII_PIPE;
- break;
- case XML_ROLE_PARAM_ENTITY_REF:
-#ifdef XML_DTD
- case XML_ROLE_INNER_PARAM_ENTITY_REF:
- dtd->hasParamEntityRefs = XML_TRUE;
- if (!paramEntityParsing)
- dtd->keepProcessing = dtd->standalone;
- else {
- const XML_Char *name;
- ENTITY *entity;
- name = poolStoreString(&dtd->pool, enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (!name)
- return XML_ERROR_NO_MEMORY;
- entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0);
- poolDiscard(&dtd->pool);
- /* first, determine if a check for an existing declaration is needed;
- if yes, check that the entity exists, and that it is internal,
- otherwise call the skipped entity handler
- */
- if (prologState.documentEntity &&
- (dtd->standalone
- ? !openInternalEntities
- : !dtd->hasParamEntityRefs)) {
- if (!entity)
- return XML_ERROR_UNDEFINED_ENTITY;
- else if (!entity->is_internal)
- return XML_ERROR_ENTITY_DECLARED_IN_PE;
- }
- else if (!entity) {
- dtd->keepProcessing = dtd->standalone;
- /* cannot report skipped entities in declarations */
- if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) {
- skippedEntityHandler(handlerArg, name, 1);
- handleDefault = XML_FALSE;
- }
- break;
- }
- if (entity->open)
- return XML_ERROR_RECURSIVE_ENTITY_REF;
- if (entity->textPtr) {
- enum XML_Error result;
- XML_Bool betweenDecl =
- (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE);
- result = processInternalEntity(parser, entity, betweenDecl);
- if (result != XML_ERROR_NONE)
- return result;
- handleDefault = XML_FALSE;
- break;
- }
- if (externalEntityRefHandler) {
- dtd->paramEntityRead = XML_FALSE;
- entity->open = XML_TRUE;
- if (!externalEntityRefHandler(externalEntityRefHandlerArg,
- 0,
- entity->base,
- entity->systemId,
- entity->publicId)) {
- entity->open = XML_FALSE;
- return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
- }
- entity->open = XML_FALSE;
- handleDefault = XML_FALSE;
- if (!dtd->paramEntityRead) {
- dtd->keepProcessing = dtd->standalone;
- break;
- }
- }
- else {
- dtd->keepProcessing = dtd->standalone;
- break;
- }
- }
-#endif /* XML_DTD */
- if (!dtd->standalone &&
- notStandaloneHandler &&
- !notStandaloneHandler(handlerArg))
- return XML_ERROR_NOT_STANDALONE;
- break;
-
- /* Element declaration stuff */
-
- case XML_ROLE_ELEMENT_NAME:
- if (elementDeclHandler) {
- declElementType = getElementType(parser, enc, s, next);
- if (!declElementType)
- return XML_ERROR_NO_MEMORY;
- dtd->scaffLevel = 0;
- dtd->scaffCount = 0;
- dtd->in_eldecl = XML_TRUE;
- handleDefault = XML_FALSE;
- }
- break;
-
- case XML_ROLE_CONTENT_ANY:
- case XML_ROLE_CONTENT_EMPTY:
- if (dtd->in_eldecl) {
- if (elementDeclHandler) {
- XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content));
- if (!content)
- return XML_ERROR_NO_MEMORY;
- content->quant = XML_CQUANT_NONE;
- content->name = NULL;
- content->numchildren = 0;
- content->children = NULL;
- content->type = ((role == XML_ROLE_CONTENT_ANY) ?
- XML_CTYPE_ANY :
- XML_CTYPE_EMPTY);
- *eventEndPP = s;
- elementDeclHandler(handlerArg, declElementType->name, content);
- handleDefault = XML_FALSE;
- }
- dtd->in_eldecl = XML_FALSE;
- }
- break;
-
- case XML_ROLE_CONTENT_PCDATA:
- if (dtd->in_eldecl) {
- dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
- = XML_CTYPE_MIXED;
- if (elementDeclHandler)
- handleDefault = XML_FALSE;
- }
- break;
-
- case XML_ROLE_CONTENT_ELEMENT:
- quant = XML_CQUANT_NONE;
- goto elementContent;
- case XML_ROLE_CONTENT_ELEMENT_OPT:
- quant = XML_CQUANT_OPT;
- goto elementContent;
- case XML_ROLE_CONTENT_ELEMENT_REP:
- quant = XML_CQUANT_REP;
- goto elementContent;
- case XML_ROLE_CONTENT_ELEMENT_PLUS:
- quant = XML_CQUANT_PLUS;
- elementContent:
- if (dtd->in_eldecl) {
- ELEMENT_TYPE *el;
- const XML_Char *name;
- int nameLen;
- const char *nxt = (quant == XML_CQUANT_NONE
- ? next
- : next - enc->minBytesPerChar);
- int myindex = nextScaffoldPart(parser);
- if (myindex < 0)
- return XML_ERROR_NO_MEMORY;
- dtd->scaffold[myindex].type = XML_CTYPE_NAME;
- dtd->scaffold[myindex].quant = quant;
- el = getElementType(parser, enc, s, nxt);
- if (!el)
- return XML_ERROR_NO_MEMORY;
- name = el->name;
- dtd->scaffold[myindex].name = name;
- nameLen = 0;
- for (; name[nameLen++]; );
- dtd->contentStringLen += nameLen;
- if (elementDeclHandler)
- handleDefault = XML_FALSE;
- }
- break;
-
- case XML_ROLE_GROUP_CLOSE:
- quant = XML_CQUANT_NONE;
- goto closeGroup;
- case XML_ROLE_GROUP_CLOSE_OPT:
- quant = XML_CQUANT_OPT;
- goto closeGroup;
- case XML_ROLE_GROUP_CLOSE_REP:
- quant = XML_CQUANT_REP;
- goto closeGroup;
- case XML_ROLE_GROUP_CLOSE_PLUS:
- quant = XML_CQUANT_PLUS;
- closeGroup:
- if (dtd->in_eldecl) {
- if (elementDeclHandler)
- handleDefault = XML_FALSE;
- dtd->scaffLevel--;
- dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant;
- if (dtd->scaffLevel == 0) {
- if (!handleDefault) {
- XML_Content *model = build_model(parser);
- if (!model)
- return XML_ERROR_NO_MEMORY;
- *eventEndPP = s;
- elementDeclHandler(handlerArg, declElementType->name, model);
- }
- dtd->in_eldecl = XML_FALSE;
- dtd->contentStringLen = 0;
- }
- }
- break;
- /* End element declaration stuff */
-
- case XML_ROLE_PI:
- if (!reportProcessingInstruction(parser, enc, s, next))
- return XML_ERROR_NO_MEMORY;
- handleDefault = XML_FALSE;
- break;
- case XML_ROLE_COMMENT:
- if (!reportComment(parser, enc, s, next))
- return XML_ERROR_NO_MEMORY;
- handleDefault = XML_FALSE;
- break;
- case XML_ROLE_NONE:
- switch (tok) {
- case XML_TOK_BOM:
- handleDefault = XML_FALSE;
- break;
- }
- break;
- case XML_ROLE_DOCTYPE_NONE:
- if (startDoctypeDeclHandler)
- handleDefault = XML_FALSE;
- break;
- case XML_ROLE_ENTITY_NONE:
- if (dtd->keepProcessing && entityDeclHandler)
- handleDefault = XML_FALSE;
- break;
- case XML_ROLE_NOTATION_NONE:
- if (notationDeclHandler)
- handleDefault = XML_FALSE;
- break;
- case XML_ROLE_ATTLIST_NONE:
- if (dtd->keepProcessing && attlistDeclHandler)
- handleDefault = XML_FALSE;
- break;
- case XML_ROLE_ELEMENT_NONE:
- if (elementDeclHandler)
- handleDefault = XML_FALSE;
- break;
- } /* end of big switch */
-
- if (handleDefault && defaultHandler)
- reportDefault(parser, enc, s, next);
-
- switch (ps_parsing) {
- case XML_SUSPENDED:
- *nextPtr = next;
- return XML_ERROR_NONE;
- case XML_FINISHED:
- return XML_ERROR_ABORTED;
- default:
- s = next;
- tok = XmlPrologTok(enc, s, end, &next);
- }
- }
- /* not reached */
-}
-
-static enum XML_Error PTRCALL
-epilogProcessor(XML_Parser parser,
- const char *s,
- const char *end,
- const char **nextPtr)
-{
- processor = epilogProcessor;
- eventPtr = s;
- for (;;) {
- const char *next = NULL;
- int tok = XmlPrologTok(encoding, s, end, &next);
- eventEndPtr = next;
- switch (tok) {
- /* report partial linebreak - it might be the last token */
- case -XML_TOK_PROLOG_S:
- if (defaultHandler) {
- reportDefault(parser, encoding, s, next);
- if (ps_parsing == XML_FINISHED)
- return XML_ERROR_ABORTED;
- }
- *nextPtr = next;
- return XML_ERROR_NONE;
- case XML_TOK_NONE:
- *nextPtr = s;
- return XML_ERROR_NONE;
- case XML_TOK_PROLOG_S:
- if (defaultHandler)
- reportDefault(parser, encoding, s, next);
- break;
- case XML_TOK_PI:
- if (!reportProcessingInstruction(parser, encoding, s, next))
- return XML_ERROR_NO_MEMORY;
- break;
- case XML_TOK_COMMENT:
- if (!reportComment(parser, encoding, s, next))
- return XML_ERROR_NO_MEMORY;
- break;
- case XML_TOK_INVALID:
- eventPtr = next;
- return XML_ERROR_INVALID_TOKEN;
- case XML_TOK_PARTIAL:
- if (!ps_finalBuffer) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_UNCLOSED_TOKEN;
- case XML_TOK_PARTIAL_CHAR:
- if (!ps_finalBuffer) {
- *nextPtr = s;
- return XML_ERROR_NONE;
- }
- return XML_ERROR_PARTIAL_CHAR;
- default:
- return XML_ERROR_JUNK_AFTER_DOC_ELEMENT;
- }
- eventPtr = s = next;
- switch (ps_parsing) {
- case XML_SUSPENDED:
- *nextPtr = next;
- return XML_ERROR_NONE;
- case XML_FINISHED:
- return XML_ERROR_ABORTED;
- default: ;
- }
- }
-}
-
-static enum XML_Error
-processInternalEntity(XML_Parser parser, ENTITY *entity,
- XML_Bool betweenDecl)
-{
- const char *textStart, *textEnd;
- const char *next;
- enum XML_Error result;
- OPEN_INTERNAL_ENTITY *openEntity;
-
- if (freeInternalEntities) {
- openEntity = freeInternalEntities;
- freeInternalEntities = openEntity->next;
- }
- else {
- openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY));
- if (!openEntity)
- return XML_ERROR_NO_MEMORY;
- }
- entity->open = XML_TRUE;
- entity->processed = 0;
- openEntity->next = openInternalEntities;
- openInternalEntities = openEntity;
- openEntity->entity = entity;
- openEntity->startTagLevel = tagLevel;
- openEntity->betweenDecl = betweenDecl;
- openEntity->internalEventPtr = NULL;
- openEntity->internalEventEndPtr = NULL;
- textStart = (char *)entity->textPtr;
- textEnd = (char *)(entity->textPtr + entity->textLen);
-
-#ifdef XML_DTD
- if (entity->is_param) {
- int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next);
- result = doProlog(parser, internalEncoding, textStart, textEnd, tok,
- next, &next, XML_FALSE);
- }
- else
-#endif /* XML_DTD */
- result = doContent(parser, tagLevel, internalEncoding, textStart,
- textEnd, &next, XML_FALSE);
-
- if (result == XML_ERROR_NONE) {
- if (textEnd != next && ps_parsing == XML_SUSPENDED) {
- entity->processed = (int)(next - textStart);
- processor = internalEntityProcessor;
- }
- else {
- entity->open = XML_FALSE;
- openInternalEntities = openEntity->next;
- /* put openEntity back in list of free instances */
- openEntity->next = freeInternalEntities;
- freeInternalEntities = openEntity;
- }
- }
- return result;
-}
-
-static enum XML_Error PTRCALL
-internalEntityProcessor(XML_Parser parser,
- const char *s,
- const char *end,
- const char **nextPtr)
-{
- ENTITY *entity;
- const char *textStart, *textEnd;
- const char *next;
- enum XML_Error result;
- OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities;
- if (!openEntity)
- return XML_ERROR_UNEXPECTED_STATE;
-
- entity = openEntity->entity;
- textStart = ((char *)entity->textPtr) + entity->processed;
- textEnd = (char *)(entity->textPtr + entity->textLen);
-
-#ifdef XML_DTD
- if (entity->is_param) {
- int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next);
- result = doProlog(parser, internalEncoding, textStart, textEnd, tok,
- next, &next, XML_FALSE);
- }
- else
-#endif /* XML_DTD */
- result = doContent(parser, openEntity->startTagLevel, internalEncoding,
- textStart, textEnd, &next, XML_FALSE);
-
- if (result != XML_ERROR_NONE)
- return result;
- else if (textEnd != next && ps_parsing == XML_SUSPENDED) {
- entity->processed = (int)(next - (char *)entity->textPtr);
- return result;
- }
- else {
- entity->open = XML_FALSE;
- openInternalEntities = openEntity->next;
- /* put openEntity back in list of free instances */
- openEntity->next = freeInternalEntities;
- freeInternalEntities = openEntity;
- }
-
-#ifdef XML_DTD
- if (entity->is_param) {
- int tok;
- processor = prologProcessor;
- tok = XmlPrologTok(encoding, s, end, &next);
- return doProlog(parser, encoding, s, end, tok, next, nextPtr,
- (XML_Bool)!ps_finalBuffer);
- }
- else
-#endif /* XML_DTD */
- {
- processor = contentProcessor;
- /* see externalEntityContentProcessor vs contentProcessor */
- return doContent(parser, parentParser ? 1 : 0, encoding, s, end,
- nextPtr, (XML_Bool)!ps_finalBuffer);
- }
-}
-
-static enum XML_Error PTRCALL
-errorProcessor(XML_Parser parser,
- const char *s,
- const char *end,
- const char **nextPtr)
-{
- UNUSED(s);
- UNUSED(end);
- UNUSED(nextPtr);
-
- return errorCode;
-}
-
-static enum XML_Error
-storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
- const char *ptr, const char *end,
- STRING_POOL *pool)
-{
- enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr,
- end, pool);
- if (result)
- return result;
- if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20)
- poolChop(pool);
- if (!poolAppendChar(pool, XML_T('\0')))
- return XML_ERROR_NO_MEMORY;
- return XML_ERROR_NONE;
-}
-
-static enum XML_Error
-appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
- const char *ptr, const char *end,
- STRING_POOL *pool)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- for (;;) {
- const char *next;
- int tok = XmlAttributeValueTok(enc, ptr, end, &next);
- switch (tok) {
- case XML_TOK_NONE:
- return XML_ERROR_NONE;
- case XML_TOK_INVALID:
- if (enc == encoding)
- eventPtr = next;
- return XML_ERROR_INVALID_TOKEN;
- case XML_TOK_PARTIAL:
- if (enc == encoding)
- eventPtr = ptr;
- return XML_ERROR_INVALID_TOKEN;
- case XML_TOK_CHAR_REF:
- {
- XML_Char buf[XML_ENCODE_MAX];
- int i;
- int n = XmlCharRefNumber(enc, ptr);
- if (n < 0) {
- if (enc == encoding)
- eventPtr = ptr;
- return XML_ERROR_BAD_CHAR_REF;
- }
- if (!isCdata
- && n == 0x20 /* space */
- && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20))
- break;
- n = XmlEncode(n, (ICHAR *)buf);
- if (!n) {
- if (enc == encoding)
- eventPtr = ptr;
- return XML_ERROR_BAD_CHAR_REF;
- }
- for (i = 0; i < n; i++) {
- if (!poolAppendChar(pool, buf[i]))
- return XML_ERROR_NO_MEMORY;
- }
- }
- break;
- case XML_TOK_DATA_CHARS:
- if (!poolAppend(pool, enc, ptr, next))
- return XML_ERROR_NO_MEMORY;
- break;
- case XML_TOK_TRAILING_CR:
- next = ptr + enc->minBytesPerChar;
- /* fall through */
- case XML_TOK_ATTRIBUTE_VALUE_S:
- case XML_TOK_DATA_NEWLINE:
- if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20))
- break;
- if (!poolAppendChar(pool, 0x20))
- return XML_ERROR_NO_MEMORY;
- break;
- case XML_TOK_ENTITY_REF:
- {
- const XML_Char *name;
- ENTITY *entity;
- char checkEntityDecl;
- XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc,
- ptr + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (ch) {
- if (!poolAppendChar(pool, ch))
- return XML_ERROR_NO_MEMORY;
- break;
- }
- name = poolStoreString(&temp2Pool, enc,
- ptr + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (!name)
- return XML_ERROR_NO_MEMORY;
- entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0);
- poolDiscard(&temp2Pool);
- /* First, determine if a check for an existing declaration is needed;
- if yes, check that the entity exists, and that it is internal.
- */
- if (pool == &dtd->pool) /* are we called from prolog? */
- checkEntityDecl =
-#ifdef XML_DTD
- prologState.documentEntity &&
-#endif /* XML_DTD */
- (dtd->standalone
- ? !openInternalEntities
- : !dtd->hasParamEntityRefs);
- else /* if (pool == &tempPool): we are called from content */
- checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone;
- if (checkEntityDecl) {
- if (!entity)
- return XML_ERROR_UNDEFINED_ENTITY;
- else if (!entity->is_internal)
- return XML_ERROR_ENTITY_DECLARED_IN_PE;
- }
- else if (!entity) {
- /* Cannot report skipped entity here - see comments on
- skippedEntityHandler.
- if (skippedEntityHandler)
- skippedEntityHandler(handlerArg, name, 0);
- */
- /* Cannot call the default handler because this would be
- out of sync with the call to the startElementHandler.
- if ((pool == &tempPool) && defaultHandler)
- reportDefault(parser, enc, ptr, next);
- */
- break;
- }
- if (entity->open) {
- if (enc == encoding)
- eventPtr = ptr;
- return XML_ERROR_RECURSIVE_ENTITY_REF;
- }
- if (entity->notation) {
- if (enc == encoding)
- eventPtr = ptr;
- return XML_ERROR_BINARY_ENTITY_REF;
- }
- if (!entity->textPtr) {
- if (enc == encoding)
- eventPtr = ptr;
- return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF;
- }
- else {
- enum XML_Error result;
- const XML_Char *textEnd = entity->textPtr + entity->textLen;
- entity->open = XML_TRUE;
- result = appendAttributeValue(parser, internalEncoding, isCdata,
- (char *)entity->textPtr,
- (char *)textEnd, pool);
- entity->open = XML_FALSE;
- if (result)
- return result;
- }
- }
- break;
- default:
- if (enc == encoding)
- eventPtr = ptr;
- return XML_ERROR_UNEXPECTED_STATE;
- }
- ptr = next;
- }
- /* not reached */
-}
-
-static enum XML_Error
-storeEntityValue(XML_Parser parser,
- const ENCODING *enc,
- const char *entityTextPtr,
- const char *entityTextEnd)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- STRING_POOL *pool = &(dtd->entityValuePool);
- enum XML_Error result = XML_ERROR_NONE;
-#ifdef XML_DTD
- int oldInEntityValue = prologState.inEntityValue;
- prologState.inEntityValue = 1;
-#endif /* XML_DTD */
- /* never return Null for the value argument in EntityDeclHandler,
- since this would indicate an external entity; therefore we
- have to make sure that entityValuePool.start is not null */
- if (!pool->blocks) {
- if (!poolGrow(pool))
- return XML_ERROR_NO_MEMORY;
- }
-
- for (;;) {
- const char *next;
- int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next);
- switch (tok) {
- case XML_TOK_PARAM_ENTITY_REF:
-#ifdef XML_DTD
- if (isParamEntity || enc != encoding) {
- const XML_Char *name;
- ENTITY *entity;
- name = poolStoreString(&tempPool, enc,
- entityTextPtr + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
- if (!name) {
- result = XML_ERROR_NO_MEMORY;
- goto endEntityValue;
- }
- entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0);
- poolDiscard(&tempPool);
- if (!entity) {
- /* not a well-formedness error - see XML 1.0: WFC Entity Declared */
- /* cannot report skipped entity here - see comments on
- skippedEntityHandler
- if (skippedEntityHandler)
- skippedEntityHandler(handlerArg, name, 0);
- */
- dtd->keepProcessing = dtd->standalone;
- goto endEntityValue;
- }
- if (entity->open) {
- if (enc == encoding)
- eventPtr = entityTextPtr;
- result = XML_ERROR_RECURSIVE_ENTITY_REF;
- goto endEntityValue;
- }
- if (entity->systemId) {
- if (externalEntityRefHandler) {
- dtd->paramEntityRead = XML_FALSE;
- entity->open = XML_TRUE;
- if (!externalEntityRefHandler(externalEntityRefHandlerArg,
- 0,
- entity->base,
- entity->systemId,
- entity->publicId)) {
- entity->open = XML_FALSE;
- result = XML_ERROR_EXTERNAL_ENTITY_HANDLING;
- goto endEntityValue;
- }
- entity->open = XML_FALSE;
- if (!dtd->paramEntityRead)
- dtd->keepProcessing = dtd->standalone;
- }
- else
- dtd->keepProcessing = dtd->standalone;
- }
- else {
- entity->open = XML_TRUE;
- result = storeEntityValue(parser,
- internalEncoding,
- (char *)entity->textPtr,
- (char *)(entity->textPtr
- + entity->textLen));
- entity->open = XML_FALSE;
- if (result)
- goto endEntityValue;
- }
- break;
- }
-#endif /* XML_DTD */
- /* In the internal subset, PE references are not legal
- within markup declarations, e.g entity values in this case. */
- eventPtr = entityTextPtr;
- result = XML_ERROR_PARAM_ENTITY_REF;
- goto endEntityValue;
- case XML_TOK_NONE:
- result = XML_ERROR_NONE;
- goto endEntityValue;
- case XML_TOK_ENTITY_REF:
- case XML_TOK_DATA_CHARS:
- if (!poolAppend(pool, enc, entityTextPtr, next)) {
- result = XML_ERROR_NO_MEMORY;
- goto endEntityValue;
- }
- break;
- case XML_TOK_TRAILING_CR:
- next = entityTextPtr + enc->minBytesPerChar;
- /* fall through */
- case XML_TOK_DATA_NEWLINE:
- if (pool->end == pool->ptr && !poolGrow(pool)) {
- result = XML_ERROR_NO_MEMORY;
- goto endEntityValue;
- }
- *(pool->ptr)++ = 0xA;
- break;
- case XML_TOK_CHAR_REF:
- {
- XML_Char buf[XML_ENCODE_MAX];
- int i;
- int n = XmlCharRefNumber(enc, entityTextPtr);
- if (n < 0) {
- if (enc == encoding)
- eventPtr = entityTextPtr;
- result = XML_ERROR_BAD_CHAR_REF;
- goto endEntityValue;
- }
- n = XmlEncode(n, (ICHAR *)buf);
- if (!n) {
- if (enc == encoding)
- eventPtr = entityTextPtr;
- result = XML_ERROR_BAD_CHAR_REF;
- goto endEntityValue;
- }
- for (i = 0; i < n; i++) {
- if (pool->end == pool->ptr && !poolGrow(pool)) {
- result = XML_ERROR_NO_MEMORY;
- goto endEntityValue;
- }
- *(pool->ptr)++ = buf[i];
- }
- }
- break;
- case XML_TOK_PARTIAL:
- if (enc == encoding)
- eventPtr = entityTextPtr;
- result = XML_ERROR_INVALID_TOKEN;
- goto endEntityValue;
- case XML_TOK_INVALID:
- if (enc == encoding)
- eventPtr = next;
- result = XML_ERROR_INVALID_TOKEN;
- goto endEntityValue;
- default:
- if (enc == encoding)
- eventPtr = entityTextPtr;
- result = XML_ERROR_UNEXPECTED_STATE;
- goto endEntityValue;
- }
- entityTextPtr = next;
- }
-endEntityValue:
-#ifdef XML_DTD
- prologState.inEntityValue = oldInEntityValue;
-#endif /* XML_DTD */
- return result;
-}
-
-static void FASTCALL
-normalizeLines(XML_Char *s)
-{
- XML_Char *p;
- for (;; s++) {
- if (*s == XML_T('\0'))
- return;
- if (*s == 0xD)
- break;
- }
- p = s;
- do {
- if (*s == 0xD) {
- *p++ = 0xA;
- if (*++s == 0xA)
- s++;
- }
- else
- *p++ = *s++;
- } while (*s);
- *p = XML_T('\0');
-}
-
-static int
-reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
- const char *start, const char *end)
-{
- const XML_Char *target;
- XML_Char *data;
- const char *tem;
- if (!processingInstructionHandler) {
- if (defaultHandler)
- reportDefault(parser, enc, start, end);
- return 1;
- }
- start += enc->minBytesPerChar * 2;
- tem = start + XmlNameLength(enc, start);
- target = poolStoreString(&tempPool, enc, start, tem);
- if (!target)
- return 0;
- poolFinish(&tempPool);
- data = poolStoreString(&tempPool, enc,
- XmlSkipS(enc, tem),
- end - enc->minBytesPerChar*2);
- if (!data)
- return 0;
- normalizeLines(data);
- processingInstructionHandler(handlerArg, target, data);
- poolClear(&tempPool);
- return 1;
-}
-
-static int
-reportComment(XML_Parser parser, const ENCODING *enc,
- const char *start, const char *end)
-{
- XML_Char *data;
- if (!commentHandler) {
- if (defaultHandler)
- reportDefault(parser, enc, start, end);
- return 1;
- }
- data = poolStoreString(&tempPool,
- enc,
- start + enc->minBytesPerChar * 4,
- end - enc->minBytesPerChar * 3);
- if (!data)
- return 0;
- normalizeLines(data);
- commentHandler(handlerArg, data);
- poolClear(&tempPool);
- return 1;
-}
-
-static void
-reportDefault(XML_Parser parser, const ENCODING *enc,
- const char *s, const char *end)
-{
- if (MUST_CONVERT(enc, s)) {
- const char **eventPP;
- const char **eventEndPP;
- if (enc == encoding) {
- eventPP = &eventPtr;
- eventEndPP = &eventEndPtr;
- }
- else {
- eventPP = &(openInternalEntities->internalEventPtr);
- eventEndPP = &(openInternalEntities->internalEventEndPtr);
- }
- do {
- ICHAR *dataPtr = (ICHAR *)dataBuf;
- XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
- *eventEndPP = s;
- defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf));
- *eventPP = s;
- } while (s != end);
- }
- else
- defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s));
-}
-
-
-static int
-defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata,
- XML_Bool isId, const XML_Char *value, XML_Parser parser)
-{
- DEFAULT_ATTRIBUTE *att;
- if (value || isId) {
- /* The handling of default attributes gets messed up if we have
- a default which duplicates a non-default. */
- int i;
- for (i = 0; i < type->nDefaultAtts; i++)
- if (attId == type->defaultAtts[i].id)
- return 1;
- if (isId && !type->idAtt && !attId->xmlns)
- type->idAtt = attId;
- }
- if (type->nDefaultAtts == type->allocDefaultAtts) {
- if (type->allocDefaultAtts == 0) {
- type->allocDefaultAtts = 8;
- type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts
- * sizeof(DEFAULT_ATTRIBUTE));
- if (!type->defaultAtts)
- return 0;
- }
- else {
- DEFAULT_ATTRIBUTE *temp;
- int count = type->allocDefaultAtts * 2;
- temp = (DEFAULT_ATTRIBUTE *)
- REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE)));
- if (temp == NULL)
- return 0;
- type->allocDefaultAtts = count;
- type->defaultAtts = temp;
- }
- }
- att = type->defaultAtts + type->nDefaultAtts;
- att->id = attId;
- att->value = value;
- att->isCdata = isCdata;
- if (!isCdata)
- attId->maybeTokenized = XML_TRUE;
- type->nDefaultAtts += 1;
- return 1;
-}
-
-static int
-setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- const XML_Char *name;
- for (name = elementType->name; *name; name++) {
- if (*name == XML_T(ASCII_COLON)) {
- PREFIX *prefix;
- const XML_Char *s;
- for (s = elementType->name; s != name; s++) {
- if (!poolAppendChar(&dtd->pool, *s))
- return 0;
- }
- if (!poolAppendChar(&dtd->pool, XML_T('\0')))
- return 0;
- prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool),
- sizeof(PREFIX));
- if (!prefix)
- return 0;
- if (prefix->name == poolStart(&dtd->pool))
- poolFinish(&dtd->pool);
- else
- poolDiscard(&dtd->pool);
- elementType->prefix = prefix;
-
- }
- }
- return 1;
-}
-
-static ATTRIBUTE_ID *
-getAttributeId(XML_Parser parser, const ENCODING *enc,
- const char *start, const char *end)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- ATTRIBUTE_ID *id;
- const XML_Char *name;
- if (!poolAppendChar(&dtd->pool, XML_T('\0')))
- return NULL;
- name = poolStoreString(&dtd->pool, enc, start, end);
- if (!name)
- return NULL;
- /* skip quotation mark - its storage will be re-used (like in name[-1]) */
- ++name;
- id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, sizeof(ATTRIBUTE_ID));
- if (!id)
- return NULL;
- if (id->name != name)
- poolDiscard(&dtd->pool);
- else {
- poolFinish(&dtd->pool);
- if (!ns)
- ;
- else if (name[0] == XML_T(ASCII_x)
- && name[1] == XML_T(ASCII_m)
- && name[2] == XML_T(ASCII_l)
- && name[3] == XML_T(ASCII_n)
- && name[4] == XML_T(ASCII_s)
- && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) {
- if (name[5] == XML_T('\0'))
- id->prefix = &dtd->defaultPrefix;
- else
- id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, sizeof(PREFIX));
- id->xmlns = XML_TRUE;
- }
- else {
- int i;
- for (i = 0; name[i]; i++) {
- /* attributes without prefix are *not* in the default namespace */
- if (name[i] == XML_T(ASCII_COLON)) {
- int j;
- for (j = 0; j < i; j++) {
- if (!poolAppendChar(&dtd->pool, name[j]))
- return NULL;
- }
- if (!poolAppendChar(&dtd->pool, XML_T('\0')))
- return NULL;
- id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool),
- sizeof(PREFIX));
- if (id->prefix->name == poolStart(&dtd->pool))
- poolFinish(&dtd->pool);
- else
- poolDiscard(&dtd->pool);
- break;
- }
- }
- }
- }
- return id;
-}
-
-#define CONTEXT_SEP XML_T(ASCII_FF)
-
-static const XML_Char *
-getContext(XML_Parser parser)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- HASH_TABLE_ITER iter;
- XML_Bool needSep = XML_FALSE;
-
- if (dtd->defaultPrefix.binding) {
- int i;
- int len;
- if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS)))
- return NULL;
- len = dtd->defaultPrefix.binding->uriLen;
- if (namespaceSeparator)
- len--;
- for (i = 0; i < len; i++)
- if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i]))
- return NULL;
- needSep = XML_TRUE;
- }
-
- hashTableIterInit(&iter, &(dtd->prefixes));
- for (;;) {
- int i;
- int len;
- const XML_Char *s;
- PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter);
- if (!prefix)
- break;
- if (!prefix->binding)
- continue;
- if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP))
- return NULL;
- for (s = prefix->name; *s; s++)
- if (!poolAppendChar(&tempPool, *s))
- return NULL;
- if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS)))
- return NULL;
- len = prefix->binding->uriLen;
- if (namespaceSeparator)
- len--;
- for (i = 0; i < len; i++)
- if (!poolAppendChar(&tempPool, prefix->binding->uri[i]))
- return NULL;
- needSep = XML_TRUE;
- }
-
-
- hashTableIterInit(&iter, &(dtd->generalEntities));
- for (;;) {
- const XML_Char *s;
- ENTITY *e = (ENTITY *)hashTableIterNext(&iter);
- if (!e)
- break;
- if (!e->open)
- continue;
- if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP))
- return NULL;
- for (s = e->name; *s; s++)
- if (!poolAppendChar(&tempPool, *s))
- return 0;
- needSep = XML_TRUE;
- }
-
- if (!poolAppendChar(&tempPool, XML_T('\0')))
- return NULL;
- return tempPool.start;
-}
-
-static XML_Bool
-setContext(XML_Parser parser, const XML_Char *context)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- const XML_Char *s = context;
-
- while (*context != XML_T('\0')) {
- if (*s == CONTEXT_SEP || *s == XML_T('\0')) {
- ENTITY *e;
- if (!poolAppendChar(&tempPool, XML_T('\0')))
- return XML_FALSE;
- e = (ENTITY *)lookup(parser, &dtd->generalEntities, poolStart(&tempPool), 0);
- if (e)
- e->open = XML_TRUE;
- if (*s != XML_T('\0'))
- s++;
- context = s;
- poolDiscard(&tempPool);
- }
- else if (*s == XML_T(ASCII_EQUALS)) {
- PREFIX *prefix;
- if (poolLength(&tempPool) == 0)
- prefix = &dtd->defaultPrefix;
- else {
- if (!poolAppendChar(&tempPool, XML_T('\0')))
- return XML_FALSE;
- prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&tempPool),
- sizeof(PREFIX));
- if (!prefix)
- return XML_FALSE;
- if (prefix->name == poolStart(&tempPool)) {
- prefix->name = poolCopyString(&dtd->pool, prefix->name);
- if (!prefix->name)
- return XML_FALSE;
- }
- poolDiscard(&tempPool);
- }
- for (context = s + 1;
- *context != CONTEXT_SEP && *context != XML_T('\0');
- context++)
- if (!poolAppendChar(&tempPool, *context))
- return XML_FALSE;
- if (!poolAppendChar(&tempPool, XML_T('\0')))
- return XML_FALSE;
- if (addBinding(parser, prefix, NULL, poolStart(&tempPool),
- &inheritedBindings) != XML_ERROR_NONE)
- return XML_FALSE;
- poolDiscard(&tempPool);
- if (*context != XML_T('\0'))
- ++context;
- s = context;
- }
- else {
- if (!poolAppendChar(&tempPool, *s))
- return XML_FALSE;
- s++;
- }
- }
- return XML_TRUE;
-}
-
-static void FASTCALL
-normalizePublicId(XML_Char *publicId)
-{
- XML_Char *p = publicId;
- XML_Char *s;
- for (s = publicId; *s; s++) {
- switch (*s) {
- case 0x20:
- case 0xD:
- case 0xA:
- if (p != publicId && p[-1] != 0x20)
- *p++ = 0x20;
- break;
- default:
- *p++ = *s;
- }
- }
- if (p != publicId && p[-1] == 0x20)
- --p;
- *p = XML_T('\0');
-}
-
-static DTD *
-dtdCreate(const XML_Memory_Handling_Suite *ms)
-{
- DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD));
- if (p == NULL)
- return p;
- poolInit(&(p->pool), ms);
- poolInit(&(p->entityValuePool), ms);
- hashTableInit(&(p->generalEntities), ms);
- hashTableInit(&(p->elementTypes), ms);
- hashTableInit(&(p->attributeIds), ms);
- hashTableInit(&(p->prefixes), ms);
-#ifdef XML_DTD
- p->paramEntityRead = XML_FALSE;
- hashTableInit(&(p->paramEntities), ms);
-#endif /* XML_DTD */
- p->defaultPrefix.name = NULL;
- p->defaultPrefix.binding = NULL;
-
- p->in_eldecl = XML_FALSE;
- p->scaffIndex = NULL;
- p->scaffold = NULL;
- p->scaffLevel = 0;
- p->scaffSize = 0;
- p->scaffCount = 0;
- p->contentStringLen = 0;
-
- p->keepProcessing = XML_TRUE;
- p->hasParamEntityRefs = XML_FALSE;
- p->standalone = XML_FALSE;
- return p;
-}
-
-static void
-dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms)
-{
- HASH_TABLE_ITER iter;
- hashTableIterInit(&iter, &(p->elementTypes));
- for (;;) {
- ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter);
- if (!e)
- break;
- if (e->allocDefaultAtts != 0)
- ms->free_fcn(e->defaultAtts);
- }
- hashTableClear(&(p->generalEntities));
-#ifdef XML_DTD
- p->paramEntityRead = XML_FALSE;
- hashTableClear(&(p->paramEntities));
-#endif /* XML_DTD */
- hashTableClear(&(p->elementTypes));
- hashTableClear(&(p->attributeIds));
- hashTableClear(&(p->prefixes));
- poolClear(&(p->pool));
- poolClear(&(p->entityValuePool));
- p->defaultPrefix.name = NULL;
- p->defaultPrefix.binding = NULL;
-
- p->in_eldecl = XML_FALSE;
-
- ms->free_fcn(p->scaffIndex);
- p->scaffIndex = NULL;
- ms->free_fcn(p->scaffold);
- p->scaffold = NULL;
-
- p->scaffLevel = 0;
- p->scaffSize = 0;
- p->scaffCount = 0;
- p->contentStringLen = 0;
-
- p->keepProcessing = XML_TRUE;
- p->hasParamEntityRefs = XML_FALSE;
- p->standalone = XML_FALSE;
-}
-
-static void
-dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms)
-{
- HASH_TABLE_ITER iter;
- hashTableIterInit(&iter, &(p->elementTypes));
- for (;;) {
- ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter);
- if (!e)
- break;
- if (e->allocDefaultAtts != 0)
- ms->free_fcn(e->defaultAtts);
- }
- hashTableDestroy(&(p->generalEntities));
-#ifdef XML_DTD
- hashTableDestroy(&(p->paramEntities));
-#endif /* XML_DTD */
- hashTableDestroy(&(p->elementTypes));
- hashTableDestroy(&(p->attributeIds));
- hashTableDestroy(&(p->prefixes));
- poolDestroy(&(p->pool));
- poolDestroy(&(p->entityValuePool));
- if (isDocEntity) {
- ms->free_fcn(p->scaffIndex);
- ms->free_fcn(p->scaffold);
- }
- ms->free_fcn(p);
-}
-
-/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise.
- The new DTD has already been initialized.
-*/
-static int
-dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms)
-{
- HASH_TABLE_ITER iter;
-
- /* Copy the prefix table. */
-
- hashTableIterInit(&iter, &(oldDtd->prefixes));
- for (;;) {
- const XML_Char *name;
- const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter);
- if (!oldP)
- break;
- name = poolCopyString(&(newDtd->pool), oldP->name);
- if (!name)
- return 0;
- if (!lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX)))
- return 0;
- }
-
- hashTableIterInit(&iter, &(oldDtd->attributeIds));
-
- /* Copy the attribute id table. */
-
- for (;;) {
- ATTRIBUTE_ID *newA;
- const XML_Char *name;
- const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter);
-
- if (!oldA)
- break;
- /* Remember to allocate the scratch byte before the name. */
- if (!poolAppendChar(&(newDtd->pool), XML_T('\0')))
- return 0;
- name = poolCopyString(&(newDtd->pool), oldA->name);
- if (!name)
- return 0;
- ++name;
- newA = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), name,
- sizeof(ATTRIBUTE_ID));
- if (!newA)
- return 0;
- newA->maybeTokenized = oldA->maybeTokenized;
- if (oldA->prefix) {
- newA->xmlns = oldA->xmlns;
- if (oldA->prefix == &oldDtd->defaultPrefix)
- newA->prefix = &newDtd->defaultPrefix;
- else
- newA->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes),
- oldA->prefix->name, 0);
- }
- }
-
- /* Copy the element type table. */
-
- hashTableIterInit(&iter, &(oldDtd->elementTypes));
-
- for (;;) {
- int i;
- ELEMENT_TYPE *newE;
- const XML_Char *name;
- const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter);
- if (!oldE)
- break;
- name = poolCopyString(&(newDtd->pool), oldE->name);
- if (!name)
- return 0;
- newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name,
- sizeof(ELEMENT_TYPE));
- if (!newE)
- return 0;
- if (oldE->nDefaultAtts) {
- newE->defaultAtts = (DEFAULT_ATTRIBUTE *)
- ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE));
- if (!newE->defaultAtts) {
- ms->free_fcn(newE);
- return 0;
- }
- }
- if (oldE->idAtt)
- newE->idAtt = (ATTRIBUTE_ID *)
- lookup(oldParser, &(newDtd->attributeIds), oldE->idAtt->name, 0);
- newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts;
- if (oldE->prefix)
- newE->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes),
- oldE->prefix->name, 0);
- for (i = 0; i < newE->nDefaultAtts; i++) {
- newE->defaultAtts[i].id = (ATTRIBUTE_ID *)
- lookup(oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0);
- newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata;
- if (oldE->defaultAtts[i].value) {
- newE->defaultAtts[i].value
- = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value);
- if (!newE->defaultAtts[i].value)
- return 0;
- }
- else
- newE->defaultAtts[i].value = NULL;
- }
- }
-
- /* Copy the entity tables. */
- if (!copyEntityTable(oldParser,
- &(newDtd->generalEntities),
- &(newDtd->pool),
- &(oldDtd->generalEntities)))
- return 0;
-
-#ifdef XML_DTD
- if (!copyEntityTable(oldParser,
- &(newDtd->paramEntities),
- &(newDtd->pool),
- &(oldDtd->paramEntities)))
- return 0;
- newDtd->paramEntityRead = oldDtd->paramEntityRead;
-#endif /* XML_DTD */
-
- newDtd->keepProcessing = oldDtd->keepProcessing;
- newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs;
- newDtd->standalone = oldDtd->standalone;
-
- /* Don't want deep copying for scaffolding */
- newDtd->in_eldecl = oldDtd->in_eldecl;
- newDtd->scaffold = oldDtd->scaffold;
- newDtd->contentStringLen = oldDtd->contentStringLen;
- newDtd->scaffSize = oldDtd->scaffSize;
- newDtd->scaffLevel = oldDtd->scaffLevel;
- newDtd->scaffIndex = oldDtd->scaffIndex;
-
- return 1;
-} /* End dtdCopy */
-
-static int
-copyEntityTable(XML_Parser oldParser,
- HASH_TABLE *newTable,
- STRING_POOL *newPool,
- const HASH_TABLE *oldTable)
-{
- HASH_TABLE_ITER iter;
- const XML_Char *cachedOldBase = NULL;
- const XML_Char *cachedNewBase = NULL;
-
- hashTableIterInit(&iter, oldTable);
-
- for (;;) {
- ENTITY *newE;
- const XML_Char *name;
- const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter);
- if (!oldE)
- break;
- name = poolCopyString(newPool, oldE->name);
- if (!name)
- return 0;
- newE = (ENTITY *)lookup(oldParser, newTable, name, sizeof(ENTITY));
- if (!newE)
- return 0;
- if (oldE->systemId) {
- const XML_Char *tem = poolCopyString(newPool, oldE->systemId);
- if (!tem)
- return 0;
- newE->systemId = tem;
- if (oldE->base) {
- if (oldE->base == cachedOldBase)
- newE->base = cachedNewBase;
- else {
- cachedOldBase = oldE->base;
- tem = poolCopyString(newPool, cachedOldBase);
- if (!tem)
- return 0;
- cachedNewBase = newE->base = tem;
- }
- }
- if (oldE->publicId) {
- tem = poolCopyString(newPool, oldE->publicId);
- if (!tem)
- return 0;
- newE->publicId = tem;
- }
- }
- else {
- const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr,
- oldE->textLen);
- if (!tem)
- return 0;
- newE->textPtr = tem;
- newE->textLen = oldE->textLen;
- }
- if (oldE->notation) {
- const XML_Char *tem = poolCopyString(newPool, oldE->notation);
- if (!tem)
- return 0;
- newE->notation = tem;
- }
- newE->is_param = oldE->is_param;
- newE->is_internal = oldE->is_internal;
- }
- return 1;
-}
-
-#define INIT_POWER 6
-
-static XML_Bool FASTCALL
-keyeq(KEY s1, KEY s2)
-{
- for (; *s1 == *s2; s1++, s2++)
- if (*s1 == 0)
- return XML_TRUE;
- return XML_FALSE;
-}
-
-static unsigned long FASTCALL
-hash(XML_Parser parser, KEY s)
-{
- unsigned long h = hash_secret_salt;
- while (*s)
- h = CHAR_HASH(h, *s++);
- return h;
-}
-
-static NAMED *
-lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize)
-{
- size_t i;
- if (table->size == 0) {
- size_t tsize;
- if (!createSize)
- return NULL;
- table->power = INIT_POWER;
- /* table->size is a power of 2 */
- table->size = (size_t)1 << INIT_POWER;
- tsize = table->size * sizeof(NAMED *);
- table->v = (NAMED **)table->mem->malloc_fcn(tsize);
- if (!table->v) {
- table->size = 0;
- return NULL;
- }
- memset(table->v, 0, tsize);
- i = hash(parser, name) & ((unsigned long)table->size - 1);
- }
- else {
- unsigned long h = hash(parser, name);
- unsigned long mask = (unsigned long)table->size - 1;
- unsigned char step = 0;
- i = h & mask;
- while (table->v[i]) {
- if (keyeq(name, table->v[i]->name))
- return table->v[i];
- if (!step)
- step = PROBE_STEP(h, mask, table->power);
- i < step ? (i += table->size - step) : (i -= step);
- }
- if (!createSize)
- return NULL;
-
- /* check for overflow (table is half full) */
- if (table->used >> (table->power - 1)) {
- unsigned char newPower = table->power + 1;
- size_t newSize = (size_t)1 << newPower;
- unsigned long newMask = (unsigned long)newSize - 1;
- size_t tsize = newSize * sizeof(NAMED *);
- NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize);
- if (!newV)
- return NULL;
- memset(newV, 0, tsize);
- for (i = 0; i < table->size; i++)
- if (table->v[i]) {
- unsigned long newHash = hash(parser, table->v[i]->name);
- size_t j = newHash & newMask;
- step = 0;
- while (newV[j]) {
- if (!step)
- step = PROBE_STEP(newHash, newMask, newPower);
- j < step ? (j += newSize - step) : (j -= step);
- }
- newV[j] = table->v[i];
- }
- table->mem->free_fcn(table->v);
- table->v = newV;
- table->power = newPower;
- table->size = newSize;
- i = h & newMask;
- step = 0;
- while (table->v[i]) {
- if (!step)
- step = PROBE_STEP(h, newMask, newPower);
- i < step ? (i += newSize - step) : (i -= step);
- }
- }
- }
- table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize);
- if (!table->v[i])
- return NULL;
- memset(table->v[i], 0, createSize);
- table->v[i]->name = name;
- (table->used)++;
- return table->v[i];
-}
-
-static void FASTCALL
-hashTableClear(HASH_TABLE *table)
-{
- size_t i;
- for (i = 0; i < table->size; i++) {
- table->mem->free_fcn(table->v[i]);
- table->v[i] = NULL;
- }
- table->used = 0;
-}
-
-static void FASTCALL
-hashTableDestroy(HASH_TABLE *table)
-{
- size_t i;
- for (i = 0; i < table->size; i++)
- table->mem->free_fcn(table->v[i]);
- table->mem->free_fcn(table->v);
-}
-
-static void FASTCALL
-hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms)
-{
- p->power = 0;
- p->size = 0;
- p->used = 0;
- p->v = NULL;
- p->mem = ms;
-}
-
-static void FASTCALL
-hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table)
-{
- iter->p = table->v;
- iter->end = iter->p + table->size;
-}
-
-static NAMED * FASTCALL
-hashTableIterNext(HASH_TABLE_ITER *iter)
-{
- while (iter->p != iter->end) {
- NAMED *tem = *(iter->p)++;
- if (tem)
- return tem;
- }
- return NULL;
-}
-
-static void FASTCALL
-poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms)
-{
- pool->blocks = NULL;
- pool->freeBlocks = NULL;
- pool->start = NULL;
- pool->ptr = NULL;
- pool->end = NULL;
- pool->mem = ms;
-}
-
-static void FASTCALL
-poolClear(STRING_POOL *pool)
-{
- if (!pool->freeBlocks)
- pool->freeBlocks = pool->blocks;
- else {
- BLOCK *p = pool->blocks;
- while (p) {
- BLOCK *tem = p->next;
- p->next = pool->freeBlocks;
- pool->freeBlocks = p;
- p = tem;
- }
- }
- pool->blocks = NULL;
- pool->start = NULL;
- pool->ptr = NULL;
- pool->end = NULL;
-}
-
-static void FASTCALL
-poolDestroy(STRING_POOL *pool)
-{
- BLOCK *p = pool->blocks;
- while (p) {
- BLOCK *tem = p->next;
- pool->mem->free_fcn(p);
- p = tem;
- }
- p = pool->freeBlocks;
- while (p) {
- BLOCK *tem = p->next;
- pool->mem->free_fcn(p);
- p = tem;
- }
-}
-
-static XML_Char *
-poolAppend(STRING_POOL *pool, const ENCODING *enc,
- const char *ptr, const char *end)
-{
- if (!pool->ptr && !poolGrow(pool))
- return NULL;
- for (;;) {
- XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end);
- if (ptr == end)
- break;
- if (!poolGrow(pool))
- return NULL;
- }
- return pool->start;
-}
-
-static const XML_Char * FASTCALL
-poolCopyString(STRING_POOL *pool, const XML_Char *s)
-{
- do {
- if (!poolAppendChar(pool, *s))
- return NULL;
- } while (*s++);
- s = pool->start;
- poolFinish(pool);
- return s;
-}
-
-static const XML_Char *
-poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n)
-{
- if (!pool->ptr && !poolGrow(pool))
- return NULL;
- for (; n > 0; --n, s++) {
- if (!poolAppendChar(pool, *s))
- return NULL;
- }
- s = pool->start;
- poolFinish(pool);
- return s;
-}
-
-static const XML_Char * FASTCALL
-poolAppendString(STRING_POOL *pool, const XML_Char *s)
-{
- while (*s) {
- if (!poolAppendChar(pool, *s))
- return NULL;
- s++;
- }
- return pool->start;
-}
-
-static XML_Char *
-poolStoreString(STRING_POOL *pool, const ENCODING *enc,
- const char *ptr, const char *end)
-{
- if (!poolAppend(pool, enc, ptr, end))
- return NULL;
- if (pool->ptr == pool->end && !poolGrow(pool))
- return NULL;
- *(pool->ptr)++ = 0;
- return pool->start;
-}
-
-static XML_Bool FASTCALL
-poolGrow(STRING_POOL *pool)
-{
- if (pool->freeBlocks) {
- if (pool->start == 0) {
- pool->blocks = pool->freeBlocks;
- pool->freeBlocks = pool->freeBlocks->next;
- pool->blocks->next = NULL;
- pool->start = pool->blocks->s;
- pool->end = pool->start + pool->blocks->size;
- pool->ptr = pool->start;
- return XML_TRUE;
- }
- if (pool->end - pool->start < pool->freeBlocks->size) {
- BLOCK *tem = pool->freeBlocks->next;
- pool->freeBlocks->next = pool->blocks;
- pool->blocks = pool->freeBlocks;
- pool->freeBlocks = tem;
- memcpy(pool->blocks->s, pool->start,
- (pool->end - pool->start) * sizeof(XML_Char));
- pool->ptr = pool->blocks->s + (pool->ptr - pool->start);
- pool->start = pool->blocks->s;
- pool->end = pool->start + pool->blocks->size;
- return XML_TRUE;
- }
- }
- if (pool->blocks && pool->start == pool->blocks->s) {
- int blockSize = (int)(pool->end - pool->start)*2;
- BLOCK *temp = (BLOCK *)
- pool->mem->realloc_fcn(pool->blocks,
- (offsetof(BLOCK, s)
- + blockSize * sizeof(XML_Char)));
- if (temp == NULL)
- return XML_FALSE;
- pool->blocks = temp;
- pool->blocks->size = blockSize;
- pool->ptr = pool->blocks->s + (pool->ptr - pool->start);
- pool->start = pool->blocks->s;
- pool->end = pool->start + blockSize;
- }
- else {
- BLOCK *tem;
- int blockSize = (int)(pool->end - pool->start);
- if (blockSize < INIT_BLOCK_SIZE)
- blockSize = INIT_BLOCK_SIZE;
- else
- blockSize *= 2;
- tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s)
- + blockSize * sizeof(XML_Char));
- if (!tem)
- return XML_FALSE;
- tem->size = blockSize;
- tem->next = pool->blocks;
- pool->blocks = tem;
- if (pool->ptr != pool->start)
- memcpy(tem->s, pool->start,
- (pool->ptr - pool->start) * sizeof(XML_Char));
- pool->ptr = tem->s + (pool->ptr - pool->start);
- pool->start = tem->s;
- pool->end = tem->s + blockSize;
- }
- return XML_TRUE;
-}
-
-static int FASTCALL
-nextScaffoldPart(XML_Parser parser)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- CONTENT_SCAFFOLD * me;
- int next;
-
- if (!dtd->scaffIndex) {
- dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int));
- if (!dtd->scaffIndex)
- return -1;
- dtd->scaffIndex[0] = 0;
- }
-
- if (dtd->scaffCount >= dtd->scaffSize) {
- CONTENT_SCAFFOLD *temp;
- if (dtd->scaffold) {
- temp = (CONTENT_SCAFFOLD *)
- REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD));
- if (temp == NULL)
- return -1;
- dtd->scaffSize *= 2;
- }
- else {
- temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS
- * sizeof(CONTENT_SCAFFOLD));
- if (temp == NULL)
- return -1;
- dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS;
- }
- dtd->scaffold = temp;
- }
- next = dtd->scaffCount++;
- me = &dtd->scaffold[next];
- if (dtd->scaffLevel) {
- CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]];
- if (parent->lastchild) {
- dtd->scaffold[parent->lastchild].nextsib = next;
- }
- if (!parent->childcnt)
- parent->firstchild = next;
- parent->lastchild = next;
- parent->childcnt++;
- }
- me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0;
- return next;
-}
-
-static void
-build_node(XML_Parser parser,
- int src_node,
- XML_Content *dest,
- XML_Content **contpos,
- XML_Char **strpos)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- dest->type = dtd->scaffold[src_node].type;
- dest->quant = dtd->scaffold[src_node].quant;
- if (dest->type == XML_CTYPE_NAME) {
- const XML_Char *src;
- dest->name = *strpos;
- src = dtd->scaffold[src_node].name;
- for (;;) {
- *(*strpos)++ = *src;
- if (!*src)
- break;
- src++;
- }
- dest->numchildren = 0;
- dest->children = NULL;
- }
- else {
- unsigned int i;
- int cn;
- dest->numchildren = dtd->scaffold[src_node].childcnt;
- dest->children = *contpos;
- *contpos += dest->numchildren;
- for (i = 0, cn = dtd->scaffold[src_node].firstchild;
- i < dest->numchildren;
- i++, cn = dtd->scaffold[cn].nextsib) {
- build_node(parser, cn, &(dest->children[i]), contpos, strpos);
- }
- dest->name = NULL;
- }
-}
-
-static XML_Content *
-build_model (XML_Parser parser)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- XML_Content *ret;
- XML_Content *cpos;
- XML_Char * str;
- int allocsize = (dtd->scaffCount * sizeof(XML_Content)
- + (dtd->contentStringLen * sizeof(XML_Char)));
-
- ret = (XML_Content *)MALLOC(allocsize);
- if (!ret)
- return NULL;
-
- str = (XML_Char *) (&ret[dtd->scaffCount]);
- cpos = &ret[1];
-
- build_node(parser, 0, ret, &cpos, &str);
- return ret;
-}
-
-static ELEMENT_TYPE *
-getElementType(XML_Parser parser,
- const ENCODING *enc,
- const char *ptr,
- const char *end)
-{
- DTD * const dtd = _dtd; /* save one level of indirection */
- const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end);
- ELEMENT_TYPE *ret;
-
- if (!name)
- return NULL;
- ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE));
- if (!ret)
- return NULL;
- if (ret->name != name)
- poolDiscard(&dtd->pool);
- else {
- poolFinish(&dtd->pool);
- if (!setElementTypePrefix(parser, ret))
- return NULL;
- }
- return ret;
-}
diff --git a/libcutl/cutl/details/expat/xmlrole.c b/libcutl/cutl/details/expat/xmlrole.c
deleted file mode 100644
index bd75f87..0000000
--- a/libcutl/cutl/details/expat/xmlrole.c
+++ /dev/null
@@ -1,1470 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-#include <stddef.h>
-
-#include <cutl/details/expat/config.h>
-
-#include <cutl/details/expat/expat_external.h>
-#include <cutl/details/expat/internal.h>
-#include <cutl/details/expat/xmlrole.h>
-#include <cutl/details/expat/ascii.h>
-
-/* Doesn't check:
-
- that ,| are not mixed in a model group
- content of literals
-
-*/
-
-static const char KW_ANY[] = {
- ASCII_A, ASCII_N, ASCII_Y, '\0' };
-static const char KW_ATTLIST[] = {
- ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' };
-static const char KW_CDATA[] = {
- ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
-static const char KW_DOCTYPE[] = {
- ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' };
-static const char KW_ELEMENT[] = {
- ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' };
-static const char KW_EMPTY[] = {
- ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' };
-static const char KW_ENTITIES[] = {
- ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S,
- '\0' };
-static const char KW_ENTITY[] = {
- ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' };
-static const char KW_FIXED[] = {
- ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' };
-static const char KW_ID[] = {
- ASCII_I, ASCII_D, '\0' };
-static const char KW_IDREF[] = {
- ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' };
-static const char KW_IDREFS[] = {
- ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' };
-#ifdef XML_DTD
-static const char KW_IGNORE[] = {
- ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' };
-#endif
-static const char KW_IMPLIED[] = {
- ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' };
-#ifdef XML_DTD
-static const char KW_INCLUDE[] = {
- ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' };
-#endif
-static const char KW_NDATA[] = {
- ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
-static const char KW_NMTOKEN[] = {
- ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' };
-static const char KW_NMTOKENS[] = {
- ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S,
- '\0' };
-static const char KW_NOTATION[] =
- { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N,
- '\0' };
-static const char KW_PCDATA[] = {
- ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
-static const char KW_PUBLIC[] = {
- ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' };
-static const char KW_REQUIRED[] = {
- ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D,
- '\0' };
-static const char KW_SYSTEM[] = {
- ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' };
-
-#ifndef MIN_BYTES_PER_CHAR
-#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar)
-#endif
-
-#ifdef XML_DTD
-#define setTopLevel(state) \
- ((state)->handler = ((state)->documentEntity \
- ? internalSubset \
- : externalSubset1))
-#else /* not XML_DTD */
-#define setTopLevel(state) ((state)->handler = internalSubset)
-#endif /* not XML_DTD */
-
-typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc);
-
-static PROLOG_HANDLER
- prolog0, prolog1, prolog2,
- doctype0, doctype1, doctype2, doctype3, doctype4, doctype5,
- internalSubset,
- entity0, entity1, entity2, entity3, entity4, entity5, entity6,
- entity7, entity8, entity9, entity10,
- notation0, notation1, notation2, notation3, notation4,
- attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6,
- attlist7, attlist8, attlist9,
- element0, element1, element2, element3, element4, element5, element6,
- element7,
-#ifdef XML_DTD
- externalSubset0, externalSubset1,
- condSect0, condSect1, condSect2,
-#endif /* XML_DTD */
- declClose,
- error;
-
-static int FASTCALL common(PROLOG_STATE *state, int tok);
-
-static int PTRCALL
-prolog0(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- state->handler = prolog1;
- return XML_ROLE_NONE;
- case XML_TOK_XML_DECL:
- state->handler = prolog1;
- return XML_ROLE_XML_DECL;
- case XML_TOK_PI:
- state->handler = prolog1;
- return XML_ROLE_PI;
- case XML_TOK_COMMENT:
- state->handler = prolog1;
- return XML_ROLE_COMMENT;
- case XML_TOK_BOM:
- return XML_ROLE_NONE;
- case XML_TOK_DECL_OPEN:
- if (!XmlNameMatchesAscii(enc,
- ptr + 2 * MIN_BYTES_PER_CHAR(enc),
- end,
- KW_DOCTYPE))
- break;
- state->handler = doctype0;
- return XML_ROLE_DOCTYPE_NONE;
- case XML_TOK_INSTANCE_START:
- state->handler = error;
- return XML_ROLE_INSTANCE_START;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-prolog1(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
- case XML_TOK_PI:
- return XML_ROLE_PI;
- case XML_TOK_COMMENT:
- return XML_ROLE_COMMENT;
- case XML_TOK_BOM:
- return XML_ROLE_NONE;
- case XML_TOK_DECL_OPEN:
- if (!XmlNameMatchesAscii(enc,
- ptr + 2 * MIN_BYTES_PER_CHAR(enc),
- end,
- KW_DOCTYPE))
- break;
- state->handler = doctype0;
- return XML_ROLE_DOCTYPE_NONE;
- case XML_TOK_INSTANCE_START:
- state->handler = error;
- return XML_ROLE_INSTANCE_START;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-prolog2(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
- case XML_TOK_PI:
- return XML_ROLE_PI;
- case XML_TOK_COMMENT:
- return XML_ROLE_COMMENT;
- case XML_TOK_INSTANCE_START:
- state->handler = error;
- return XML_ROLE_INSTANCE_START;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-doctype0(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_DOCTYPE_NONE;
- case XML_TOK_NAME:
- case XML_TOK_PREFIXED_NAME:
- state->handler = doctype1;
- return XML_ROLE_DOCTYPE_NAME;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-doctype1(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_DOCTYPE_NONE;
- case XML_TOK_OPEN_BRACKET:
- state->handler = internalSubset;
- return XML_ROLE_DOCTYPE_INTERNAL_SUBSET;
- case XML_TOK_DECL_CLOSE:
- state->handler = prolog2;
- return XML_ROLE_DOCTYPE_CLOSE;
- case XML_TOK_NAME:
- if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
- state->handler = doctype3;
- return XML_ROLE_DOCTYPE_NONE;
- }
- if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
- state->handler = doctype2;
- return XML_ROLE_DOCTYPE_NONE;
- }
- break;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-doctype2(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_DOCTYPE_NONE;
- case XML_TOK_LITERAL:
- state->handler = doctype3;
- return XML_ROLE_DOCTYPE_PUBLIC_ID;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-doctype3(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_DOCTYPE_NONE;
- case XML_TOK_LITERAL:
- state->handler = doctype4;
- return XML_ROLE_DOCTYPE_SYSTEM_ID;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-doctype4(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_DOCTYPE_NONE;
- case XML_TOK_OPEN_BRACKET:
- state->handler = internalSubset;
- return XML_ROLE_DOCTYPE_INTERNAL_SUBSET;
- case XML_TOK_DECL_CLOSE:
- state->handler = prolog2;
- return XML_ROLE_DOCTYPE_CLOSE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-doctype5(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_DOCTYPE_NONE;
- case XML_TOK_DECL_CLOSE:
- state->handler = prolog2;
- return XML_ROLE_DOCTYPE_CLOSE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-internalSubset(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
- case XML_TOK_DECL_OPEN:
- if (XmlNameMatchesAscii(enc,
- ptr + 2 * MIN_BYTES_PER_CHAR(enc),
- end,
- KW_ENTITY)) {
- state->handler = entity0;
- return XML_ROLE_ENTITY_NONE;
- }
- if (XmlNameMatchesAscii(enc,
- ptr + 2 * MIN_BYTES_PER_CHAR(enc),
- end,
- KW_ATTLIST)) {
- state->handler = attlist0;
- return XML_ROLE_ATTLIST_NONE;
- }
- if (XmlNameMatchesAscii(enc,
- ptr + 2 * MIN_BYTES_PER_CHAR(enc),
- end,
- KW_ELEMENT)) {
- state->handler = element0;
- return XML_ROLE_ELEMENT_NONE;
- }
- if (XmlNameMatchesAscii(enc,
- ptr + 2 * MIN_BYTES_PER_CHAR(enc),
- end,
- KW_NOTATION)) {
- state->handler = notation0;
- return XML_ROLE_NOTATION_NONE;
- }
- break;
- case XML_TOK_PI:
- return XML_ROLE_PI;
- case XML_TOK_COMMENT:
- return XML_ROLE_COMMENT;
- case XML_TOK_PARAM_ENTITY_REF:
- return XML_ROLE_PARAM_ENTITY_REF;
- case XML_TOK_CLOSE_BRACKET:
- state->handler = doctype5;
- return XML_ROLE_DOCTYPE_NONE;
- case XML_TOK_NONE:
- return XML_ROLE_NONE;
- }
- return common(state, tok);
-}
-
-#ifdef XML_DTD
-
-static int PTRCALL
-externalSubset0(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- state->handler = externalSubset1;
- if (tok == XML_TOK_XML_DECL)
- return XML_ROLE_TEXT_DECL;
- return externalSubset1(state, tok, ptr, end, enc);
-}
-
-static int PTRCALL
-externalSubset1(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_COND_SECT_OPEN:
- state->handler = condSect0;
- return XML_ROLE_NONE;
- case XML_TOK_COND_SECT_CLOSE:
- if (state->includeLevel == 0)
- break;
- state->includeLevel -= 1;
- return XML_ROLE_NONE;
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
- case XML_TOK_CLOSE_BRACKET:
- break;
- case XML_TOK_NONE:
- if (state->includeLevel)
- break;
- return XML_ROLE_NONE;
- default:
- return internalSubset(state, tok, ptr, end, enc);
- }
- return common(state, tok);
-}
-
-#endif /* XML_DTD */
-
-static int PTRCALL
-entity0(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_PERCENT:
- state->handler = entity1;
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_NAME:
- state->handler = entity2;
- return XML_ROLE_GENERAL_ENTITY_NAME;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-entity1(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_NAME:
- state->handler = entity7;
- return XML_ROLE_PARAM_ENTITY_NAME;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-entity2(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_NAME:
- if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
- state->handler = entity4;
- return XML_ROLE_ENTITY_NONE;
- }
- if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
- state->handler = entity3;
- return XML_ROLE_ENTITY_NONE;
- }
- break;
- case XML_TOK_LITERAL:
- state->handler = declClose;
- state->role_none = XML_ROLE_ENTITY_NONE;
- return XML_ROLE_ENTITY_VALUE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-entity3(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_LITERAL:
- state->handler = entity4;
- return XML_ROLE_ENTITY_PUBLIC_ID;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-entity4(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_LITERAL:
- state->handler = entity5;
- return XML_ROLE_ENTITY_SYSTEM_ID;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-entity5(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_DECL_CLOSE:
- setTopLevel(state);
- return XML_ROLE_ENTITY_COMPLETE;
- case XML_TOK_NAME:
- if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) {
- state->handler = entity6;
- return XML_ROLE_ENTITY_NONE;
- }
- break;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-entity6(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_NAME:
- state->handler = declClose;
- state->role_none = XML_ROLE_ENTITY_NONE;
- return XML_ROLE_ENTITY_NOTATION_NAME;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-entity7(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_NAME:
- if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
- state->handler = entity9;
- return XML_ROLE_ENTITY_NONE;
- }
- if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
- state->handler = entity8;
- return XML_ROLE_ENTITY_NONE;
- }
- break;
- case XML_TOK_LITERAL:
- state->handler = declClose;
- state->role_none = XML_ROLE_ENTITY_NONE;
- return XML_ROLE_ENTITY_VALUE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-entity8(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_LITERAL:
- state->handler = entity9;
- return XML_ROLE_ENTITY_PUBLIC_ID;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-entity9(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_LITERAL:
- state->handler = entity10;
- return XML_ROLE_ENTITY_SYSTEM_ID;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-entity10(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ENTITY_NONE;
- case XML_TOK_DECL_CLOSE:
- setTopLevel(state);
- return XML_ROLE_ENTITY_COMPLETE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-notation0(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NOTATION_NONE;
- case XML_TOK_NAME:
- state->handler = notation1;
- return XML_ROLE_NOTATION_NAME;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-notation1(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NOTATION_NONE;
- case XML_TOK_NAME:
- if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
- state->handler = notation3;
- return XML_ROLE_NOTATION_NONE;
- }
- if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
- state->handler = notation2;
- return XML_ROLE_NOTATION_NONE;
- }
- break;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-notation2(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NOTATION_NONE;
- case XML_TOK_LITERAL:
- state->handler = notation4;
- return XML_ROLE_NOTATION_PUBLIC_ID;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-notation3(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NOTATION_NONE;
- case XML_TOK_LITERAL:
- state->handler = declClose;
- state->role_none = XML_ROLE_NOTATION_NONE;
- return XML_ROLE_NOTATION_SYSTEM_ID;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-notation4(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NOTATION_NONE;
- case XML_TOK_LITERAL:
- state->handler = declClose;
- state->role_none = XML_ROLE_NOTATION_NONE;
- return XML_ROLE_NOTATION_SYSTEM_ID;
- case XML_TOK_DECL_CLOSE:
- setTopLevel(state);
- return XML_ROLE_NOTATION_NO_SYSTEM_ID;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-attlist0(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_NAME:
- case XML_TOK_PREFIXED_NAME:
- state->handler = attlist1;
- return XML_ROLE_ATTLIST_ELEMENT_NAME;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-attlist1(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_DECL_CLOSE:
- setTopLevel(state);
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_NAME:
- case XML_TOK_PREFIXED_NAME:
- state->handler = attlist2;
- return XML_ROLE_ATTRIBUTE_NAME;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-attlist2(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_NAME:
- {
- static const char * const types[] = {
- KW_CDATA,
- KW_ID,
- KW_IDREF,
- KW_IDREFS,
- KW_ENTITY,
- KW_ENTITIES,
- KW_NMTOKEN,
- KW_NMTOKENS,
- };
- int i;
- for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++)
- if (XmlNameMatchesAscii(enc, ptr, end, types[i])) {
- state->handler = attlist8;
- return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i;
- }
- }
- if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) {
- state->handler = attlist5;
- return XML_ROLE_ATTLIST_NONE;
- }
- break;
- case XML_TOK_OPEN_PAREN:
- state->handler = attlist3;
- return XML_ROLE_ATTLIST_NONE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-attlist3(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_NMTOKEN:
- case XML_TOK_NAME:
- case XML_TOK_PREFIXED_NAME:
- state->handler = attlist4;
- return XML_ROLE_ATTRIBUTE_ENUM_VALUE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-attlist4(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_CLOSE_PAREN:
- state->handler = attlist8;
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_OR:
- state->handler = attlist3;
- return XML_ROLE_ATTLIST_NONE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-attlist5(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_OPEN_PAREN:
- state->handler = attlist6;
- return XML_ROLE_ATTLIST_NONE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-attlist6(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_NAME:
- state->handler = attlist7;
- return XML_ROLE_ATTRIBUTE_NOTATION_VALUE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-attlist7(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_CLOSE_PAREN:
- state->handler = attlist8;
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_OR:
- state->handler = attlist6;
- return XML_ROLE_ATTLIST_NONE;
- }
- return common(state, tok);
-}
-
-/* default value */
-static int PTRCALL
-attlist8(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_POUND_NAME:
- if (XmlNameMatchesAscii(enc,
- ptr + MIN_BYTES_PER_CHAR(enc),
- end,
- KW_IMPLIED)) {
- state->handler = attlist1;
- return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE;
- }
- if (XmlNameMatchesAscii(enc,
- ptr + MIN_BYTES_PER_CHAR(enc),
- end,
- KW_REQUIRED)) {
- state->handler = attlist1;
- return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE;
- }
- if (XmlNameMatchesAscii(enc,
- ptr + MIN_BYTES_PER_CHAR(enc),
- end,
- KW_FIXED)) {
- state->handler = attlist9;
- return XML_ROLE_ATTLIST_NONE;
- }
- break;
- case XML_TOK_LITERAL:
- state->handler = attlist1;
- return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-attlist9(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ATTLIST_NONE;
- case XML_TOK_LITERAL:
- state->handler = attlist1;
- return XML_ROLE_FIXED_ATTRIBUTE_VALUE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-element0(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ELEMENT_NONE;
- case XML_TOK_NAME:
- case XML_TOK_PREFIXED_NAME:
- state->handler = element1;
- return XML_ROLE_ELEMENT_NAME;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-element1(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ELEMENT_NONE;
- case XML_TOK_NAME:
- if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) {
- state->handler = declClose;
- state->role_none = XML_ROLE_ELEMENT_NONE;
- return XML_ROLE_CONTENT_EMPTY;
- }
- if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) {
- state->handler = declClose;
- state->role_none = XML_ROLE_ELEMENT_NONE;
- return XML_ROLE_CONTENT_ANY;
- }
- break;
- case XML_TOK_OPEN_PAREN:
- state->handler = element2;
- state->level = 1;
- return XML_ROLE_GROUP_OPEN;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-element2(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ELEMENT_NONE;
- case XML_TOK_POUND_NAME:
- if (XmlNameMatchesAscii(enc,
- ptr + MIN_BYTES_PER_CHAR(enc),
- end,
- KW_PCDATA)) {
- state->handler = element3;
- return XML_ROLE_CONTENT_PCDATA;
- }
- break;
- case XML_TOK_OPEN_PAREN:
- state->level = 2;
- state->handler = element6;
- return XML_ROLE_GROUP_OPEN;
- case XML_TOK_NAME:
- case XML_TOK_PREFIXED_NAME:
- state->handler = element7;
- return XML_ROLE_CONTENT_ELEMENT;
- case XML_TOK_NAME_QUESTION:
- state->handler = element7;
- return XML_ROLE_CONTENT_ELEMENT_OPT;
- case XML_TOK_NAME_ASTERISK:
- state->handler = element7;
- return XML_ROLE_CONTENT_ELEMENT_REP;
- case XML_TOK_NAME_PLUS:
- state->handler = element7;
- return XML_ROLE_CONTENT_ELEMENT_PLUS;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-element3(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ELEMENT_NONE;
- case XML_TOK_CLOSE_PAREN:
- state->handler = declClose;
- state->role_none = XML_ROLE_ELEMENT_NONE;
- return XML_ROLE_GROUP_CLOSE;
- case XML_TOK_CLOSE_PAREN_ASTERISK:
- state->handler = declClose;
- state->role_none = XML_ROLE_ELEMENT_NONE;
- return XML_ROLE_GROUP_CLOSE_REP;
- case XML_TOK_OR:
- state->handler = element4;
- return XML_ROLE_ELEMENT_NONE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-element4(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ELEMENT_NONE;
- case XML_TOK_NAME:
- case XML_TOK_PREFIXED_NAME:
- state->handler = element5;
- return XML_ROLE_CONTENT_ELEMENT;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-element5(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ELEMENT_NONE;
- case XML_TOK_CLOSE_PAREN_ASTERISK:
- state->handler = declClose;
- state->role_none = XML_ROLE_ELEMENT_NONE;
- return XML_ROLE_GROUP_CLOSE_REP;
- case XML_TOK_OR:
- state->handler = element4;
- return XML_ROLE_ELEMENT_NONE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-element6(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ELEMENT_NONE;
- case XML_TOK_OPEN_PAREN:
- state->level += 1;
- return XML_ROLE_GROUP_OPEN;
- case XML_TOK_NAME:
- case XML_TOK_PREFIXED_NAME:
- state->handler = element7;
- return XML_ROLE_CONTENT_ELEMENT;
- case XML_TOK_NAME_QUESTION:
- state->handler = element7;
- return XML_ROLE_CONTENT_ELEMENT_OPT;
- case XML_TOK_NAME_ASTERISK:
- state->handler = element7;
- return XML_ROLE_CONTENT_ELEMENT_REP;
- case XML_TOK_NAME_PLUS:
- state->handler = element7;
- return XML_ROLE_CONTENT_ELEMENT_PLUS;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-element7(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_ELEMENT_NONE;
- case XML_TOK_CLOSE_PAREN:
- state->level -= 1;
- if (state->level == 0) {
- state->handler = declClose;
- state->role_none = XML_ROLE_ELEMENT_NONE;
- }
- return XML_ROLE_GROUP_CLOSE;
- case XML_TOK_CLOSE_PAREN_ASTERISK:
- state->level -= 1;
- if (state->level == 0) {
- state->handler = declClose;
- state->role_none = XML_ROLE_ELEMENT_NONE;
- }
- return XML_ROLE_GROUP_CLOSE_REP;
- case XML_TOK_CLOSE_PAREN_QUESTION:
- state->level -= 1;
- if (state->level == 0) {
- state->handler = declClose;
- state->role_none = XML_ROLE_ELEMENT_NONE;
- }
- return XML_ROLE_GROUP_CLOSE_OPT;
- case XML_TOK_CLOSE_PAREN_PLUS:
- state->level -= 1;
- if (state->level == 0) {
- state->handler = declClose;
- state->role_none = XML_ROLE_ELEMENT_NONE;
- }
- return XML_ROLE_GROUP_CLOSE_PLUS;
- case XML_TOK_COMMA:
- state->handler = element6;
- return XML_ROLE_GROUP_SEQUENCE;
- case XML_TOK_OR:
- state->handler = element6;
- return XML_ROLE_GROUP_CHOICE;
- }
- return common(state, tok);
-}
-
-#ifdef XML_DTD
-
-static int PTRCALL
-condSect0(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
- case XML_TOK_NAME:
- if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) {
- state->handler = condSect1;
- return XML_ROLE_NONE;
- }
- if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) {
- state->handler = condSect2;
- return XML_ROLE_NONE;
- }
- break;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-condSect1(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
- case XML_TOK_OPEN_BRACKET:
- state->handler = externalSubset1;
- state->includeLevel += 1;
- return XML_ROLE_NONE;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-condSect2(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
- case XML_TOK_OPEN_BRACKET:
- state->handler = externalSubset1;
- return XML_ROLE_IGNORE_SECT;
- }
- return common(state, tok);
-}
-
-#endif /* XML_DTD */
-
-static int PTRCALL
-declClose(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- switch (tok) {
- case XML_TOK_PROLOG_S:
- return state->role_none;
- case XML_TOK_DECL_CLOSE:
- setTopLevel(state);
- return state->role_none;
- }
- return common(state, tok);
-}
-
-static int PTRCALL
-error(PROLOG_STATE *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc)
-{
- UNUSED(state);
- UNUSED(tok);
- UNUSED(ptr);
- UNUSED(end);
- UNUSED(enc);
-
- return XML_ROLE_NONE;
-}
-
-static int FASTCALL
-common(PROLOG_STATE *state, int tok)
-{
-#ifdef XML_DTD
- if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF)
- return XML_ROLE_INNER_PARAM_ENTITY_REF;
-#endif
- state->handler = error;
- return XML_ROLE_ERROR;
-}
-
-void
-XmlPrologStateInit(PROLOG_STATE *state)
-{
- state->handler = prolog0;
-#ifdef XML_DTD
- state->documentEntity = 1;
- state->includeLevel = 0;
- state->inEntityValue = 0;
-#endif /* XML_DTD */
-}
-
-#ifdef XML_DTD
-
-void
-XmlPrologStateInitExternalEntity(PROLOG_STATE *state)
-{
- state->handler = externalSubset0;
- state->documentEntity = 0;
- state->includeLevel = 0;
-}
-
-#endif /* XML_DTD */
diff --git a/libcutl/cutl/details/expat/xmlrole.h b/libcutl/cutl/details/expat/xmlrole.h
deleted file mode 100644
index af3f796..0000000
--- a/libcutl/cutl/details/expat/xmlrole.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-#ifndef XmlRole_INCLUDED
-#define XmlRole_INCLUDED 1
-
-#ifdef __VMS
-/* 0 1 2 3 0 1 2 3
- 1234567890123456789012345678901 1234567890123456789012345678901 */
-#define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt
-#endif
-
-#include <cutl/details/expat/xmltok.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-enum {
- XML_ROLE_ERROR = -1,
- XML_ROLE_NONE = 0,
- XML_ROLE_XML_DECL,
- XML_ROLE_INSTANCE_START,
- XML_ROLE_DOCTYPE_NONE,
- XML_ROLE_DOCTYPE_NAME,
- XML_ROLE_DOCTYPE_SYSTEM_ID,
- XML_ROLE_DOCTYPE_PUBLIC_ID,
- XML_ROLE_DOCTYPE_INTERNAL_SUBSET,
- XML_ROLE_DOCTYPE_CLOSE,
- XML_ROLE_GENERAL_ENTITY_NAME,
- XML_ROLE_PARAM_ENTITY_NAME,
- XML_ROLE_ENTITY_NONE,
- XML_ROLE_ENTITY_VALUE,
- XML_ROLE_ENTITY_SYSTEM_ID,
- XML_ROLE_ENTITY_PUBLIC_ID,
- XML_ROLE_ENTITY_COMPLETE,
- XML_ROLE_ENTITY_NOTATION_NAME,
- XML_ROLE_NOTATION_NONE,
- XML_ROLE_NOTATION_NAME,
- XML_ROLE_NOTATION_SYSTEM_ID,
- XML_ROLE_NOTATION_NO_SYSTEM_ID,
- XML_ROLE_NOTATION_PUBLIC_ID,
- XML_ROLE_ATTRIBUTE_NAME,
- XML_ROLE_ATTRIBUTE_TYPE_CDATA,
- XML_ROLE_ATTRIBUTE_TYPE_ID,
- XML_ROLE_ATTRIBUTE_TYPE_IDREF,
- XML_ROLE_ATTRIBUTE_TYPE_IDREFS,
- XML_ROLE_ATTRIBUTE_TYPE_ENTITY,
- XML_ROLE_ATTRIBUTE_TYPE_ENTITIES,
- XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN,
- XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS,
- XML_ROLE_ATTRIBUTE_ENUM_VALUE,
- XML_ROLE_ATTRIBUTE_NOTATION_VALUE,
- XML_ROLE_ATTLIST_NONE,
- XML_ROLE_ATTLIST_ELEMENT_NAME,
- XML_ROLE_IMPLIED_ATTRIBUTE_VALUE,
- XML_ROLE_REQUIRED_ATTRIBUTE_VALUE,
- XML_ROLE_DEFAULT_ATTRIBUTE_VALUE,
- XML_ROLE_FIXED_ATTRIBUTE_VALUE,
- XML_ROLE_ELEMENT_NONE,
- XML_ROLE_ELEMENT_NAME,
- XML_ROLE_CONTENT_ANY,
- XML_ROLE_CONTENT_EMPTY,
- XML_ROLE_CONTENT_PCDATA,
- XML_ROLE_GROUP_OPEN,
- XML_ROLE_GROUP_CLOSE,
- XML_ROLE_GROUP_CLOSE_REP,
- XML_ROLE_GROUP_CLOSE_OPT,
- XML_ROLE_GROUP_CLOSE_PLUS,
- XML_ROLE_GROUP_CHOICE,
- XML_ROLE_GROUP_SEQUENCE,
- XML_ROLE_CONTENT_ELEMENT,
- XML_ROLE_CONTENT_ELEMENT_REP,
- XML_ROLE_CONTENT_ELEMENT_OPT,
- XML_ROLE_CONTENT_ELEMENT_PLUS,
- XML_ROLE_PI,
- XML_ROLE_COMMENT,
-#ifdef XML_DTD
- XML_ROLE_TEXT_DECL,
- XML_ROLE_IGNORE_SECT,
- XML_ROLE_INNER_PARAM_ENTITY_REF,
-#endif /* XML_DTD */
- XML_ROLE_PARAM_ENTITY_REF
-};
-
-typedef struct prolog_state {
- int (PTRCALL *handler) (struct prolog_state *state,
- int tok,
- const char *ptr,
- const char *end,
- const ENCODING *enc);
- unsigned level;
- int role_none;
-#ifdef XML_DTD
- unsigned includeLevel;
- int documentEntity;
- int inEntityValue;
-#endif /* XML_DTD */
-} PROLOG_STATE;
-
-void XmlPrologStateInit(PROLOG_STATE *);
-#ifdef XML_DTD
-void XmlPrologStateInitExternalEntity(PROLOG_STATE *);
-#endif /* XML_DTD */
-
-#define XmlTokenRole(state, tok, ptr, end, enc) \
- (((state)->handler)(state, tok, ptr, end, enc))
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not XmlRole_INCLUDED */
diff --git a/libcutl/cutl/details/expat/xmltok.c b/libcutl/cutl/details/expat/xmltok.c
deleted file mode 100644
index 634db9e..0000000
--- a/libcutl/cutl/details/expat/xmltok.c
+++ /dev/null
@@ -1,1681 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-#include <stddef.h>
-
-#include <cutl/details/expat/config.h>
-
-#include <cutl/details/expat/expat_external.h>
-#include <cutl/details/expat/internal.h>
-#include <cutl/details/expat/xmltok.h>
-#include <cutl/details/expat/nametab.h>
-
-#ifdef XML_DTD
-#define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok)
-#else
-#define IGNORE_SECTION_TOK_VTABLE /* as nothing */
-#endif
-
-#define VTABLE1 \
- { PREFIX(prologTok), PREFIX(contentTok), \
- PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \
- { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \
- PREFIX(sameName), \
- PREFIX(nameMatchesAscii), \
- PREFIX(nameLength), \
- PREFIX(skipS), \
- PREFIX(getAtts), \
- PREFIX(charRefNumber), \
- PREFIX(predefinedEntityName), \
- PREFIX(updatePosition), \
- PREFIX(isPublicId)
-
-#define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16)
-
-#define UCS2_GET_NAMING(pages, hi, lo) \
- (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F)))
-
-/* A 2 byte UTF-8 representation splits the characters 11 bits between
- the bottom 5 and 6 bits of the bytes. We need 8 bits to index into
- pages, 3 bits to add to that index and 5 bits to generate the mask.
-*/
-#define UTF8_GET_NAMING2(pages, byte) \
- (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \
- + ((((byte)[0]) & 3) << 1) \
- + ((((byte)[1]) >> 5) & 1)] \
- & (1 << (((byte)[1]) & 0x1F)))
-
-/* A 3 byte UTF-8 representation splits the characters 16 bits between
- the bottom 4, 6 and 6 bits of the bytes. We need 8 bits to index
- into pages, 3 bits to add to that index and 5 bits to generate the
- mask.
-*/
-#define UTF8_GET_NAMING3(pages, byte) \
- (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \
- + ((((byte)[1]) >> 2) & 0xF)] \
- << 3) \
- + ((((byte)[1]) & 3) << 1) \
- + ((((byte)[2]) >> 5) & 1)] \
- & (1 << (((byte)[2]) & 0x1F)))
-
-#define UTF8_GET_NAMING(pages, p, n) \
- ((n) == 2 \
- ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \
- : ((n) == 3 \
- ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \
- : 0))
-
-/* Detection of invalid UTF-8 sequences is based on Table 3.1B
- of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/
- with the additional restriction of not allowing the Unicode
- code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE).
- Implementation details:
- (A & 0x80) == 0 means A < 0x80
- and
- (A & 0xC0) == 0xC0 means A > 0xBF
-*/
-
-#define UTF8_INVALID2(p) \
- ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0)
-
-#define UTF8_INVALID3(p) \
- (((p)[2] & 0x80) == 0 \
- || \
- ((*p) == 0xEF && (p)[1] == 0xBF \
- ? \
- (p)[2] > 0xBD \
- : \
- ((p)[2] & 0xC0) == 0xC0) \
- || \
- ((*p) == 0xE0 \
- ? \
- (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \
- : \
- ((p)[1] & 0x80) == 0 \
- || \
- ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0)))
-
-#define UTF8_INVALID4(p) \
- (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \
- || \
- ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \
- || \
- ((*p) == 0xF0 \
- ? \
- (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \
- : \
- ((p)[1] & 0x80) == 0 \
- || \
- ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0)))
-
-static int PTRFASTCALL
-isNever(const ENCODING *enc, const char *p)
-{
- UNUSED(enc);
- UNUSED(p);
-
- return 0;
-}
-
-static int PTRFASTCALL
-utf8_isName2(const ENCODING *enc, const char *p)
-{
- UNUSED(enc);
-
- return UTF8_GET_NAMING2(namePages, (const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isName3(const ENCODING *enc, const char *p)
-{
- UNUSED(enc);
-
- return UTF8_GET_NAMING3(namePages, (const unsigned char *)p);
-}
-
-#define utf8_isName4 isNever
-
-static int PTRFASTCALL
-utf8_isNmstrt2(const ENCODING *enc, const char *p)
-{
- UNUSED(enc);
-
- return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isNmstrt3(const ENCODING *enc, const char *p)
-{
- UNUSED(enc);
-
- return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p);
-}
-
-#define utf8_isNmstrt4 isNever
-
-static int PTRFASTCALL
-utf8_isInvalid2(const ENCODING *enc, const char *p)
-{
- UNUSED(enc);
-
- return UTF8_INVALID2((const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isInvalid3(const ENCODING *enc, const char *p)
-{
- UNUSED(enc);
-
- return UTF8_INVALID3((const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isInvalid4(const ENCODING *enc, const char *p)
-{
- UNUSED(enc);
-
- return UTF8_INVALID4((const unsigned char *)p);
-}
-
-struct normal_encoding {
- ENCODING enc;
- unsigned char type[256];
-#ifdef XML_MIN_SIZE
- int (PTRFASTCALL *byteType)(const ENCODING *, const char *);
- int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *);
- int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *);
- int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *);
- int (PTRCALL *charMatches)(const ENCODING *, const char *, int);
-#endif /* XML_MIN_SIZE */
- int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
- int (PTRFASTCALL *isName3)(const ENCODING *, const char *);
- int (PTRFASTCALL *isName4)(const ENCODING *, const char *);
- int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *);
- int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *);
- int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *);
- int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *);
- int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *);
- int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *);
-};
-
-#define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *) (enc))
-
-#ifdef XML_MIN_SIZE
-
-#define STANDARD_VTABLE(E) \
- E ## byteType, \
- E ## isNameMin, \
- E ## isNmstrtMin, \
- E ## byteToAscii, \
- E ## charMatches,
-
-#define ZERO_VTABLE /* as nothing */
-
-#else
-
-#define STANDARD_VTABLE(E) /* as nothing */
-
-#define ZERO_VTABLE \
- 0, \
- 0, \
- 0, \
- 0, \
- 0, \
- 0, \
- 0, \
- 0, \
- 0
-
-#endif
-
-#define NORMAL_VTABLE(E) \
- E ## isName2, \
- E ## isName3, \
- E ## isName4, \
- E ## isNmstrt2, \
- E ## isNmstrt3, \
- E ## isNmstrt4, \
- E ## isInvalid2, \
- E ## isInvalid3, \
- E ## isInvalid4
-
-static int FASTCALL checkCharRefNumber(int);
-
-#include <cutl/details/expat/xmltok_impl.h>
-#include <cutl/details/expat/ascii.h>
-
-#ifdef XML_MIN_SIZE
-#define sb_isNameMin isNever
-#define sb_isNmstrtMin isNever
-#endif
-
-#ifdef XML_MIN_SIZE
-#define MINBPC(enc) ((enc)->minBytesPerChar)
-#else
-/* minimum bytes per character */
-#define MINBPC(enc) 1
-#endif
-
-#define SB_BYTE_TYPE(enc, p) \
- (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)])
-
-#ifdef XML_MIN_SIZE
-static int PTRFASTCALL
-sb_byteType(const ENCODING *enc, const char *p)
-{
- return SB_BYTE_TYPE(enc, p);
-}
-#define BYTE_TYPE(enc, p) \
- (AS_NORMAL_ENCODING(enc)->byteType(enc, p))
-#else
-#define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p)
-#endif
-
-#ifdef XML_MIN_SIZE
-#define BYTE_TO_ASCII(enc, p) \
- (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p))
-static int PTRFASTCALL
-sb_byteToAscii(const ENCODING *enc, const char *p)
-{
- return *p;
-}
-#else
-#define BYTE_TO_ASCII(enc, p) (*(p))
-#endif
-
-#define IS_NAME_CHAR(enc, p, n) \
- (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p))
-#define IS_NMSTRT_CHAR(enc, p, n) \
- (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p))
-#define IS_INVALID_CHAR(enc, p, n) \
- (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p))
-
-#ifdef XML_MIN_SIZE
-#define IS_NAME_CHAR_MINBPC(enc, p) \
- (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p))
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) \
- (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p))
-#else
-#define IS_NAME_CHAR_MINBPC(enc, p) (0)
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) (0)
-#endif
-
-#ifdef XML_MIN_SIZE
-#define CHAR_MATCHES(enc, p, c) \
- (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c))
-static int PTRCALL
-sb_charMatches(const ENCODING *enc, const char *p, int c)
-{
- return *p == c;
-}
-#else
-/* c is an ASCII character */
-#define CHAR_MATCHES(enc, p, c) (*(p) == c)
-#endif
-
-#define PREFIX(ident) normal_ ## ident
-#define XML_TOK_IMPL_C
-#include <cutl/details/expat/xmltok_impl.c>
-#undef XML_TOK_IMPL_C
-
-#undef MINBPC
-#undef BYTE_TYPE
-#undef BYTE_TO_ASCII
-#undef CHAR_MATCHES
-#undef IS_NAME_CHAR
-#undef IS_NAME_CHAR_MINBPC
-#undef IS_NMSTRT_CHAR
-#undef IS_NMSTRT_CHAR_MINBPC
-#undef IS_INVALID_CHAR
-
-enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */
- UTF8_cval1 = 0x00,
- UTF8_cval2 = 0xc0,
- UTF8_cval3 = 0xe0,
- UTF8_cval4 = 0xf0
-};
-
-static void PTRCALL
-utf8_toUtf8(const ENCODING *enc,
- const char **fromP, const char *fromLim,
- char **toP, const char *toLim)
-{
- char *to;
- const char *from;
-
- UNUSED(enc);
-
- if (fromLim - *fromP > toLim - *toP) {
- /* Avoid copying partial characters. */
- for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--)
- if (((unsigned char)fromLim[-1] & 0xc0) != 0x80)
- break;
- }
- for (to = *toP, from = *fromP; from != fromLim; from++, to++)
- *to = *from;
- *fromP = from;
- *toP = to;
-}
-
-static void PTRCALL
-utf8_toUtf16(const ENCODING *enc,
- const char **fromP, const char *fromLim,
- unsigned short **toP, const unsigned short *toLim)
-{
- unsigned short *to = *toP;
- const char *from = *fromP;
- while (from != fromLim && to != toLim) {
- switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) {
- case BT_LEAD2:
- *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f));
- from += 2;
- break;
- case BT_LEAD3:
- *to++ = (unsigned short)(((from[0] & 0xf) << 12)
- | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f));
- from += 3;
- break;
- case BT_LEAD4:
- {
- unsigned long n;
- if (to + 1 == toLim)
- goto after;
- n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12)
- | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f);
- n -= 0x10000;
- to[0] = (unsigned short)((n >> 10) | 0xD800);
- to[1] = (unsigned short)((n & 0x3FF) | 0xDC00);
- to += 2;
- from += 4;
- }
- break;
- default:
- *to++ = *from++;
- break;
- }
- }
-after:
- *fromP = from;
- *toP = to;
-}
-
-#ifdef XML_NS
-static const struct normal_encoding utf8_encoding_ns = {
- { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
- {
-#include <cutl/details/expat/asciitab.h>
-#include <cutl/details/expat/utf8tab.h>
- },
- STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-#endif
-
-static const struct normal_encoding utf8_encoding = {
- { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
- {
-#define BT_COLON BT_NMSTRT
-#include <cutl/details/expat/asciitab.h>
-#undef BT_COLON
-#include <cutl/details/expat/utf8tab.h>
- },
- STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-
-#ifdef XML_NS
-
-static const struct normal_encoding internal_utf8_encoding_ns = {
- { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
- {
-#include <cutl/details/expat/iasciitab.h>
-#include <cutl/details/expat/utf8tab.h>
- },
- STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-
-#endif
-
-static const struct normal_encoding internal_utf8_encoding = {
- { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
- {
-#define BT_COLON BT_NMSTRT
-#include <cutl/details/expat/iasciitab.h>
-#undef BT_COLON
-#include <cutl/details/expat/utf8tab.h>
- },
- STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-
-static void PTRCALL
-latin1_toUtf8(const ENCODING *enc,
- const char **fromP, const char *fromLim,
- char **toP, const char *toLim)
-{
- UNUSED(enc);
-
- for (;;) {
- unsigned char c;
- if (*fromP == fromLim)
- break;
- c = (unsigned char)**fromP;
- if (c & 0x80) {
- if (toLim - *toP < 2)
- break;
- *(*toP)++ = (char)((c >> 6) | UTF8_cval2);
- *(*toP)++ = (char)((c & 0x3f) | 0x80);
- (*fromP)++;
- }
- else {
- if (*toP == toLim)
- break;
- *(*toP)++ = *(*fromP)++;
- }
- }
-}
-
-static void PTRCALL
-latin1_toUtf16(const ENCODING *enc,
- const char **fromP, const char *fromLim,
- unsigned short **toP, const unsigned short *toLim)
-{
- UNUSED(enc);
-
- while (*fromP != fromLim && *toP != toLim)
- *(*toP)++ = (unsigned char)*(*fromP)++;
-}
-
-#ifdef XML_NS
-
-static const struct normal_encoding latin1_encoding_ns = {
- { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 },
- {
-#include <cutl/details/expat/asciitab.h>
-#include <cutl/details/expat/latin1tab.h>
- },
- STANDARD_VTABLE(sb_) ZERO_VTABLE
-};
-
-#endif
-
-static const struct normal_encoding latin1_encoding = {
- { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 },
- {
-#define BT_COLON BT_NMSTRT
-#include <cutl/details/expat/asciitab.h>
-#undef BT_COLON
-#include <cutl/details/expat/latin1tab.h>
- },
- STANDARD_VTABLE(sb_) ZERO_VTABLE
-};
-
-static void PTRCALL
-ascii_toUtf8(const ENCODING *enc,
- const char **fromP, const char *fromLim,
- char **toP, const char *toLim)
-{
- UNUSED(enc);
-
- while (*fromP != fromLim && *toP != toLim)
- *(*toP)++ = *(*fromP)++;
-}
-
-#ifdef XML_NS
-
-static const struct normal_encoding ascii_encoding_ns = {
- { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 },
- {
-#include <cutl/details/expat/asciitab.h>
-/* BT_NONXML == 0 */
- },
- STANDARD_VTABLE(sb_) ZERO_VTABLE
-};
-
-#endif
-
-static const struct normal_encoding ascii_encoding = {
- { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 },
- {
-#define BT_COLON BT_NMSTRT
-#include <cutl/details/expat/asciitab.h>
-#undef BT_COLON
-/* BT_NONXML == 0 */
- },
- STANDARD_VTABLE(sb_) ZERO_VTABLE
-};
-
-static int PTRFASTCALL
-unicode_byte_type(char hi, char lo)
-{
- switch ((unsigned char)hi) {
- case 0xD8: case 0xD9: case 0xDA: case 0xDB:
- return BT_LEAD4;
- case 0xDC: case 0xDD: case 0xDE: case 0xDF:
- return BT_TRAIL;
- case 0xFF:
- switch ((unsigned char)lo) {
- case 0xFF:
- case 0xFE:
- return BT_NONXML;
- }
- break;
- }
- return BT_NONASCII;
-}
-
-#define DEFINE_UTF16_TO_UTF8(E) \
-static void PTRCALL \
-E ## toUtf8(const ENCODING *enc, \
- const char **fromP, const char *fromLim, \
- char **toP, const char *toLim) \
-{ \
- const char *from; \
- UNUSED(enc); \
- for (from = *fromP; from != fromLim; from += 2) { \
- int plane; \
- unsigned char lo2; \
- unsigned char lo = GET_LO(from); \
- unsigned char hi = GET_HI(from); \
- switch (hi) { \
- case 0: \
- if (lo < 0x80) { \
- if (*toP == toLim) { \
- *fromP = from; \
- return; \
- } \
- *(*toP)++ = lo; \
- break; \
- } \
- /* fall through */ \
- case 0x1: case 0x2: case 0x3: \
- case 0x4: case 0x5: case 0x6: case 0x7: \
- if (toLim - *toP < 2) { \
- *fromP = from; \
- return; \
- } \
- *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \
- *(*toP)++ = ((lo & 0x3f) | 0x80); \
- break; \
- default: \
- if (toLim - *toP < 3) { \
- *fromP = from; \
- return; \
- } \
- /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \
- *(*toP)++ = ((hi >> 4) | UTF8_cval3); \
- *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \
- *(*toP)++ = ((lo & 0x3f) | 0x80); \
- break; \
- case 0xD8: case 0xD9: case 0xDA: case 0xDB: \
- if (toLim - *toP < 4) { \
- *fromP = from; \
- return; \
- } \
- plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \
- *(*toP)++ = ((plane >> 2) | UTF8_cval4); \
- *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \
- from += 2; \
- lo2 = GET_LO(from); \
- *(*toP)++ = (((lo & 0x3) << 4) \
- | ((GET_HI(from) & 0x3) << 2) \
- | (lo2 >> 6) \
- | 0x80); \
- *(*toP)++ = ((lo2 & 0x3f) | 0x80); \
- break; \
- } \
- } \
- *fromP = from; \
-}
-
-#define DEFINE_UTF16_TO_UTF16(E) \
-static void PTRCALL \
-E ## toUtf16(const ENCODING *enc, \
- const char **fromP, const char *fromLim, \
- unsigned short **toP, const unsigned short *toLim) \
-{ \
- UNUSED(enc); \
- /* Avoid copying first half only of surrogate */ \
- if (fromLim - *fromP > ((toLim - *toP) << 1) \
- && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \
- fromLim -= 2; \
- for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \
- *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \
-}
-
-#define SET2(ptr, ch) \
- (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8)))
-#define GET_LO(ptr) ((unsigned char)(ptr)[0])
-#define GET_HI(ptr) ((unsigned char)(ptr)[1])
-
-DEFINE_UTF16_TO_UTF8(little2_)
-DEFINE_UTF16_TO_UTF16(little2_)
-
-#undef SET2
-#undef GET_LO
-#undef GET_HI
-
-#define SET2(ptr, ch) \
- (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF)))
-#define GET_LO(ptr) ((unsigned char)(ptr)[1])
-#define GET_HI(ptr) ((unsigned char)(ptr)[0])
-
-DEFINE_UTF16_TO_UTF8(big2_)
-DEFINE_UTF16_TO_UTF16(big2_)
-
-#undef SET2
-#undef GET_LO
-#undef GET_HI
-
-#define LITTLE2_BYTE_TYPE(enc, p) \
- ((p)[1] == 0 \
- ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \
- : unicode_byte_type((p)[1], (p)[0]))
-#define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1)
-#define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c)
-#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \
- UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0])
-#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \
- UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0])
-
-#ifdef XML_MIN_SIZE
-
-static int PTRFASTCALL
-little2_byteType(const ENCODING *enc, const char *p)
-{
- return LITTLE2_BYTE_TYPE(enc, p);
-}
-
-static int PTRFASTCALL
-little2_byteToAscii(const ENCODING *enc, const char *p)
-{
- return LITTLE2_BYTE_TO_ASCII(enc, p);
-}
-
-static int PTRCALL
-little2_charMatches(const ENCODING *enc, const char *p, int c)
-{
- return LITTLE2_CHAR_MATCHES(enc, p, c);
-}
-
-static int PTRFASTCALL
-little2_isNameMin(const ENCODING *enc, const char *p)
-{
- return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p);
-}
-
-static int PTRFASTCALL
-little2_isNmstrtMin(const ENCODING *enc, const char *p)
-{
- return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p);
-}
-
-#undef VTABLE
-#define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16
-
-#else /* not XML_MIN_SIZE */
-
-#undef PREFIX
-#define PREFIX(ident) little2_ ## ident
-#define MINBPC(enc) 2
-/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */
-#define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p)
-#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p)
-#define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c)
-#define IS_NAME_CHAR(enc, p, n) 0
-#define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p)
-#define IS_NMSTRT_CHAR(enc, p, n) (0)
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p)
-
-#define XML_TOK_IMPL_C
-#include <cutl/details/expat/xmltok_impl.c>
-#undef XML_TOK_IMPL_C
-
-#undef MINBPC
-#undef BYTE_TYPE
-#undef BYTE_TO_ASCII
-#undef CHAR_MATCHES
-#undef IS_NAME_CHAR
-#undef IS_NAME_CHAR_MINBPC
-#undef IS_NMSTRT_CHAR
-#undef IS_NMSTRT_CHAR_MINBPC
-#undef IS_INVALID_CHAR
-
-#endif /* not XML_MIN_SIZE */
-
-#ifdef XML_NS
-
-static const struct normal_encoding little2_encoding_ns = {
- { VTABLE, 2, 0,
-#if BYTEORDER == 1234
- 1
-#else
- 0
-#endif
- },
- {
-#include <cutl/details/expat/asciitab.h>
-#include <cutl/details/expat/latin1tab.h>
- },
- STANDARD_VTABLE(little2_) ZERO_VTABLE
-};
-
-#endif
-
-static const struct normal_encoding little2_encoding = {
- { VTABLE, 2, 0,
-#if BYTEORDER == 1234
- 1
-#else
- 0
-#endif
- },
- {
-#define BT_COLON BT_NMSTRT
-#include <cutl/details/expat/asciitab.h>
-#undef BT_COLON
-#include <cutl/details/expat/latin1tab.h>
- },
- STANDARD_VTABLE(little2_) ZERO_VTABLE
-};
-
-#if BYTEORDER != 4321
-
-#ifdef XML_NS
-
-static const struct normal_encoding internal_little2_encoding_ns = {
- { VTABLE, 2, 0, 1 },
- {
-#include <cutl/details/expat/iasciitab.h>
-#include <cutl/details/expat/latin1tab.h>
- },
- STANDARD_VTABLE(little2_) ZERO_VTABLE
-};
-
-#endif
-
-static const struct normal_encoding internal_little2_encoding = {
- { VTABLE, 2, 0, 1 },
- {
-#define BT_COLON BT_NMSTRT
-#include <cutl/details/expat/iasciitab.h>
-#undef BT_COLON
-#include <cutl/details/expat/latin1tab.h>
- },
- STANDARD_VTABLE(little2_) ZERO_VTABLE
-};
-
-#endif
-
-
-#define BIG2_BYTE_TYPE(enc, p) \
- ((p)[0] == 0 \
- ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \
- : unicode_byte_type((p)[0], (p)[1]))
-#define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1)
-#define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c)
-#define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \
- UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1])
-#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \
- UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1])
-
-#ifdef XML_MIN_SIZE
-
-static int PTRFASTCALL
-big2_byteType(const ENCODING *enc, const char *p)
-{
- return BIG2_BYTE_TYPE(enc, p);
-}
-
-static int PTRFASTCALL
-big2_byteToAscii(const ENCODING *enc, const char *p)
-{
- return BIG2_BYTE_TO_ASCII(enc, p);
-}
-
-static int PTRCALL
-big2_charMatches(const ENCODING *enc, const char *p, int c)
-{
- return BIG2_CHAR_MATCHES(enc, p, c);
-}
-
-static int PTRFASTCALL
-big2_isNameMin(const ENCODING *enc, const char *p)
-{
- return BIG2_IS_NAME_CHAR_MINBPC(enc, p);
-}
-
-static int PTRFASTCALL
-big2_isNmstrtMin(const ENCODING *enc, const char *p)
-{
- return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p);
-}
-
-#undef VTABLE
-#define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16
-
-#else /* not XML_MIN_SIZE */
-
-#undef PREFIX
-#define PREFIX(ident) big2_ ## ident
-#define MINBPC(enc) 2
-/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */
-#define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p)
-#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p)
-#define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c)
-#define IS_NAME_CHAR(enc, p, n) 0
-#define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p)
-#define IS_NMSTRT_CHAR(enc, p, n) (0)
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p)
-
-#define XML_TOK_IMPL_C
-#include <cutl/details/expat/xmltok_impl.c>
-#undef XML_TOK_IMPL_C
-
-#undef MINBPC
-#undef BYTE_TYPE
-#undef BYTE_TO_ASCII
-#undef CHAR_MATCHES
-#undef IS_NAME_CHAR
-#undef IS_NAME_CHAR_MINBPC
-#undef IS_NMSTRT_CHAR
-#undef IS_NMSTRT_CHAR_MINBPC
-#undef IS_INVALID_CHAR
-
-#endif /* not XML_MIN_SIZE */
-
-#ifdef XML_NS
-
-static const struct normal_encoding big2_encoding_ns = {
- { VTABLE, 2, 0,
-#if BYTEORDER == 4321
- 1
-#else
- 0
-#endif
- },
- {
-#include <cutl/details/expat/asciitab.h>
-#include <cutl/details/expat/latin1tab.h>
- },
- STANDARD_VTABLE(big2_) ZERO_VTABLE
-};
-
-#endif
-
-static const struct normal_encoding big2_encoding = {
- { VTABLE, 2, 0,
-#if BYTEORDER == 4321
- 1
-#else
- 0
-#endif
- },
- {
-#define BT_COLON BT_NMSTRT
-#include <cutl/details/expat/asciitab.h>
-#undef BT_COLON
-#include <cutl/details/expat/latin1tab.h>
- },
- STANDARD_VTABLE(big2_) ZERO_VTABLE
-};
-
-#if BYTEORDER != 1234
-
-#ifdef XML_NS
-
-static const struct normal_encoding internal_big2_encoding_ns = {
- { VTABLE, 2, 0, 1 },
- {
-#include <cutl/details/expat/iasciitab.h>
-#include <cutl/details/expat/latin1tab.h>
- },
- STANDARD_VTABLE(big2_) ZERO_VTABLE
-};
-
-#endif
-
-static const struct normal_encoding internal_big2_encoding = {
- { VTABLE, 2, 0, 1 },
- {
-#define BT_COLON BT_NMSTRT
-#include <cutl/details/expat/iasciitab.h>
-#undef BT_COLON
-#include <cutl/details/expat/latin1tab.h>
- },
- STANDARD_VTABLE(big2_) ZERO_VTABLE
-};
-
-#endif
-
-#undef PREFIX
-
-static int FASTCALL
-streqci(const char *s1, const char *s2)
-{
- for (;;) {
- char c1 = *s1++;
- char c2 = *s2++;
- if (ASCII_a <= c1 && c1 <= ASCII_z)
- c1 += ASCII_A - ASCII_a;
- if (ASCII_a <= c2 && c2 <= ASCII_z)
- c2 += ASCII_A - ASCII_a;
- if (c1 != c2)
- return 0;
- if (!c1)
- break;
- }
- return 1;
-}
-
-static void PTRCALL
-initUpdatePosition(const ENCODING *enc, const char *ptr,
- const char *end, POSITION *pos)
-{
- UNUSED(enc);
- normal_updatePosition(&utf8_encoding.enc, ptr, end, pos);
-}
-
-static int
-toAscii(const ENCODING *enc, const char *ptr, const char *end)
-{
- char buf[1];
- char *p = buf;
- XmlUtf8Convert(enc, &ptr, end, &p, p + 1);
- if (p == buf)
- return -1;
- else
- return buf[0];
-}
-
-static int FASTCALL
-isSpace(int c)
-{
- switch (c) {
- case 0x20:
- case 0xD:
- case 0xA:
- case 0x9:
- return 1;
- }
- return 0;
-}
-
-/* Return 1 if there's just optional white space or there's an S
- followed by name=val.
-*/
-static int
-parsePseudoAttribute(const ENCODING *enc,
- const char *ptr,
- const char *end,
- const char **namePtr,
- const char **nameEndPtr,
- const char **valPtr,
- const char **nextTokPtr)
-{
- int c;
- char open;
- if (ptr == end) {
- *namePtr = NULL;
- return 1;
- }
- if (!isSpace(toAscii(enc, ptr, end))) {
- *nextTokPtr = ptr;
- return 0;
- }
- do {
- ptr += enc->minBytesPerChar;
- } while (isSpace(toAscii(enc, ptr, end)));
- if (ptr == end) {
- *namePtr = NULL;
- return 1;
- }
- *namePtr = ptr;
- for (;;) {
- c = toAscii(enc, ptr, end);
- if (c == -1) {
- *nextTokPtr = ptr;
- return 0;
- }
- if (c == ASCII_EQUALS) {
- *nameEndPtr = ptr;
- break;
- }
- if (isSpace(c)) {
- *nameEndPtr = ptr;
- do {
- ptr += enc->minBytesPerChar;
- } while (isSpace(c = toAscii(enc, ptr, end)));
- if (c != ASCII_EQUALS) {
- *nextTokPtr = ptr;
- return 0;
- }
- break;
- }
- ptr += enc->minBytesPerChar;
- }
- if (ptr == *namePtr) {
- *nextTokPtr = ptr;
- return 0;
- }
- ptr += enc->minBytesPerChar;
- c = toAscii(enc, ptr, end);
- while (isSpace(c)) {
- ptr += enc->minBytesPerChar;
- c = toAscii(enc, ptr, end);
- }
- if (c != ASCII_QUOT && c != ASCII_APOS) {
- *nextTokPtr = ptr;
- return 0;
- }
- open = (char)c;
- ptr += enc->minBytesPerChar;
- *valPtr = ptr;
- for (;; ptr += enc->minBytesPerChar) {
- c = toAscii(enc, ptr, end);
- if (c == open)
- break;
- if (!(ASCII_a <= c && c <= ASCII_z)
- && !(ASCII_A <= c && c <= ASCII_Z)
- && !(ASCII_0 <= c && c <= ASCII_9)
- && c != ASCII_PERIOD
- && c != ASCII_MINUS
- && c != ASCII_UNDERSCORE) {
- *nextTokPtr = ptr;
- return 0;
- }
- }
- *nextTokPtr = ptr + enc->minBytesPerChar;
- return 1;
-}
-
-static const char KW_version[] = {
- ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0'
-};
-
-static const char KW_encoding[] = {
- ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0'
-};
-
-static const char KW_standalone[] = {
- ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o,
- ASCII_n, ASCII_e, '\0'
-};
-
-static const char KW_yes[] = {
- ASCII_y, ASCII_e, ASCII_s, '\0'
-};
-
-static const char KW_no[] = {
- ASCII_n, ASCII_o, '\0'
-};
-
-static int
-doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *,
- const char *,
- const char *),
- int isGeneralTextEntity,
- const ENCODING *enc,
- const char *ptr,
- const char *end,
- const char **badPtr,
- const char **versionPtr,
- const char **versionEndPtr,
- const char **encodingName,
- const ENCODING **encoding,
- int *standalone)
-{
- const char *val = NULL;
- const char *name = NULL;
- const char *nameEnd = NULL;
- ptr += 5 * enc->minBytesPerChar;
- end -= 2 * enc->minBytesPerChar;
- if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)
- || !name) {
- *badPtr = ptr;
- return 0;
- }
- if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) {
- if (!isGeneralTextEntity) {
- *badPtr = name;
- return 0;
- }
- }
- else {
- if (versionPtr)
- *versionPtr = val;
- if (versionEndPtr)
- *versionEndPtr = ptr;
- if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
- *badPtr = ptr;
- return 0;
- }
- if (!name) {
- if (isGeneralTextEntity) {
- /* a TextDecl must have an EncodingDecl */
- *badPtr = ptr;
- return 0;
- }
- return 1;
- }
- }
- if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) {
- int c = toAscii(enc, val, end);
- if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) {
- *badPtr = val;
- return 0;
- }
- if (encodingName)
- *encodingName = val;
- if (encoding)
- *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar);
- if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
- *badPtr = ptr;
- return 0;
- }
- if (!name)
- return 1;
- }
- if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone)
- || isGeneralTextEntity) {
- *badPtr = name;
- return 0;
- }
- if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) {
- if (standalone)
- *standalone = 1;
- }
- else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) {
- if (standalone)
- *standalone = 0;
- }
- else {
- *badPtr = val;
- return 0;
- }
- while (isSpace(toAscii(enc, ptr, end)))
- ptr += enc->minBytesPerChar;
- if (ptr != end) {
- *badPtr = ptr;
- return 0;
- }
- return 1;
-}
-
-static int FASTCALL
-checkCharRefNumber(int result)
-{
- switch (result >> 8) {
- case 0xD8: case 0xD9: case 0xDA: case 0xDB:
- case 0xDC: case 0xDD: case 0xDE: case 0xDF:
- return -1;
- case 0:
- if (latin1_encoding.type[result] == BT_NONXML)
- return -1;
- break;
- case 0xFF:
- if (result == 0xFFFE || result == 0xFFFF)
- return -1;
- break;
- }
- return result;
-}
-
-int FASTCALL
-XmlUtf8Encode(int c, char *buf)
-{
- enum {
- /* minN is minimum legal resulting value for N byte sequence */
- min2 = 0x80,
- min3 = 0x800,
- min4 = 0x10000
- };
-
- if (c < 0)
- return 0;
- if (c < min2) {
- buf[0] = (char)(c | UTF8_cval1);
- return 1;
- }
- if (c < min3) {
- buf[0] = (char)((c >> 6) | UTF8_cval2);
- buf[1] = (char)((c & 0x3f) | 0x80);
- return 2;
- }
- if (c < min4) {
- buf[0] = (char)((c >> 12) | UTF8_cval3);
- buf[1] = (char)(((c >> 6) & 0x3f) | 0x80);
- buf[2] = (char)((c & 0x3f) | 0x80);
- return 3;
- }
- if (c < 0x110000) {
- buf[0] = (char)((c >> 18) | UTF8_cval4);
- buf[1] = (char)(((c >> 12) & 0x3f) | 0x80);
- buf[2] = (char)(((c >> 6) & 0x3f) | 0x80);
- buf[3] = (char)((c & 0x3f) | 0x80);
- return 4;
- }
- return 0;
-}
-
-int FASTCALL
-XmlUtf16Encode(int charNum, unsigned short *buf)
-{
- if (charNum < 0)
- return 0;
- if (charNum < 0x10000) {
- buf[0] = (unsigned short)charNum;
- return 1;
- }
- if (charNum < 0x110000) {
- charNum -= 0x10000;
- buf[0] = (unsigned short)((charNum >> 10) + 0xD800);
- buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00);
- return 2;
- }
- return 0;
-}
-
-struct unknown_encoding {
- struct normal_encoding normal;
- CONVERTER convert;
- void *userData;
- unsigned short utf16[256];
- char utf8[256][4];
-};
-
-#define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *) (enc))
-
-int
-XmlSizeOfUnknownEncoding(void)
-{
- return sizeof(struct unknown_encoding);
-}
-
-static int PTRFASTCALL
-unknown_isName(const ENCODING *enc, const char *p)
-{
- const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
- int c = uenc->convert(uenc->userData, p);
- if (c & ~0xFFFF)
- return 0;
- return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF);
-}
-
-static int PTRFASTCALL
-unknown_isNmstrt(const ENCODING *enc, const char *p)
-{
- const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
- int c = uenc->convert(uenc->userData, p);
- if (c & ~0xFFFF)
- return 0;
- return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF);
-}
-
-static int PTRFASTCALL
-unknown_isInvalid(const ENCODING *enc, const char *p)
-{
- const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
- int c = uenc->convert(uenc->userData, p);
- return (c & ~0xFFFF) || checkCharRefNumber(c) < 0;
-}
-
-static void PTRCALL
-unknown_toUtf8(const ENCODING *enc,
- const char **fromP, const char *fromLim,
- char **toP, const char *toLim)
-{
- const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
- char buf[XML_UTF8_ENCODE_MAX];
- for (;;) {
- const char *utf8;
- int n;
- if (*fromP == fromLim)
- break;
- utf8 = uenc->utf8[(unsigned char)**fromP];
- n = *utf8++;
- if (n == 0) {
- int c = uenc->convert(uenc->userData, *fromP);
- n = XmlUtf8Encode(c, buf);
- if (n > toLim - *toP)
- break;
- utf8 = buf;
- *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP]
- - (BT_LEAD2 - 2));
- }
- else {
- if (n > toLim - *toP)
- break;
- (*fromP)++;
- }
- do {
- *(*toP)++ = *utf8++;
- } while (--n != 0);
- }
-}
-
-static void PTRCALL
-unknown_toUtf16(const ENCODING *enc,
- const char **fromP, const char *fromLim,
- unsigned short **toP, const unsigned short *toLim)
-{
- const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
- while (*fromP != fromLim && *toP != toLim) {
- unsigned short c = uenc->utf16[(unsigned char)**fromP];
- if (c == 0) {
- c = (unsigned short)
- uenc->convert(uenc->userData, *fromP);
- *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP]
- - (BT_LEAD2 - 2));
- }
- else
- (*fromP)++;
- *(*toP)++ = c;
- }
-}
-
-ENCODING *
-XmlInitUnknownEncoding(void *mem,
- int *table,
- CONVERTER convert,
- void *userData)
-{
- int i;
- struct unknown_encoding *e = (struct unknown_encoding *)mem;
- for (i = 0; i < (int)sizeof(struct normal_encoding); i++)
- ((char *)mem)[i] = ((char *)&latin1_encoding)[i];
- for (i = 0; i < 128; i++)
- if (latin1_encoding.type[i] != BT_OTHER
- && latin1_encoding.type[i] != BT_NONXML
- && table[i] != i)
- return 0;
- for (i = 0; i < 256; i++) {
- int c = table[i];
- if (c == -1) {
- e->normal.type[i] = BT_MALFORM;
- /* This shouldn't really get used. */
- e->utf16[i] = 0xFFFF;
- e->utf8[i][0] = 1;
- e->utf8[i][1] = 0;
- }
- else if (c < 0) {
- if (c < -4)
- return 0;
- e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2));
- e->utf8[i][0] = 0;
- e->utf16[i] = 0;
- }
- else if (c < 0x80) {
- if (latin1_encoding.type[c] != BT_OTHER
- && latin1_encoding.type[c] != BT_NONXML
- && c != i)
- return 0;
- e->normal.type[i] = latin1_encoding.type[c];
- e->utf8[i][0] = 1;
- e->utf8[i][1] = (char)c;
- e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c);
- }
- else if (checkCharRefNumber(c) < 0) {
- e->normal.type[i] = BT_NONXML;
- /* This shouldn't really get used. */
- e->utf16[i] = 0xFFFF;
- e->utf8[i][0] = 1;
- e->utf8[i][1] = 0;
- }
- else {
- if (c > 0xFFFF)
- return 0;
- if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff))
- e->normal.type[i] = BT_NMSTRT;
- else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff))
- e->normal.type[i] = BT_NAME;
- else
- e->normal.type[i] = BT_OTHER;
- e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1);
- e->utf16[i] = (unsigned short)c;
- }
- }
- e->userData = userData;
- e->convert = convert;
- if (convert) {
- e->normal.isName2 = unknown_isName;
- e->normal.isName3 = unknown_isName;
- e->normal.isName4 = unknown_isName;
- e->normal.isNmstrt2 = unknown_isNmstrt;
- e->normal.isNmstrt3 = unknown_isNmstrt;
- e->normal.isNmstrt4 = unknown_isNmstrt;
- e->normal.isInvalid2 = unknown_isInvalid;
- e->normal.isInvalid3 = unknown_isInvalid;
- e->normal.isInvalid4 = unknown_isInvalid;
- }
- e->normal.enc.utf8Convert = unknown_toUtf8;
- e->normal.enc.utf16Convert = unknown_toUtf16;
- return &(e->normal.enc);
-}
-
-/* If this enumeration is changed, getEncodingIndex and encodings
-must also be changed. */
-enum {
- UNKNOWN_ENC = -1,
- ISO_8859_1_ENC = 0,
- US_ASCII_ENC,
- UTF_8_ENC,
- UTF_16_ENC,
- UTF_16BE_ENC,
- UTF_16LE_ENC,
- /* must match encodingNames up to here */
- NO_ENC
-};
-
-static const char KW_ISO_8859_1[] = {
- ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9,
- ASCII_MINUS, ASCII_1, '\0'
-};
-static const char KW_US_ASCII[] = {
- ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I,
- '\0'
-};
-static const char KW_UTF_8[] = {
- ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0'
-};
-static const char KW_UTF_16[] = {
- ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0'
-};
-static const char KW_UTF_16BE[] = {
- ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E,
- '\0'
-};
-static const char KW_UTF_16LE[] = {
- ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E,
- '\0'
-};
-
-static int FASTCALL
-getEncodingIndex(const char *name)
-{
- static const char * const encodingNames[] = {
- KW_ISO_8859_1,
- KW_US_ASCII,
- KW_UTF_8,
- KW_UTF_16,
- KW_UTF_16BE,
- KW_UTF_16LE,
- };
- int i;
- if (name == NULL)
- return NO_ENC;
- for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++)
- if (streqci(name, encodingNames[i]))
- return i;
- return UNKNOWN_ENC;
-}
-
-/* For binary compatibility, we store the index of the encoding
- specified at initialization in the isUtf16 member.
-*/
-
-#define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16)
-#define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i)
-
-/* This is what detects the encoding. encodingTable maps from
- encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of
- the external (protocol) specified encoding; state is
- XML_CONTENT_STATE if we're parsing an external text entity, and
- XML_PROLOG_STATE otherwise.
-*/
-
-
-static int
-initScan(const ENCODING * const *encodingTable,
- const INIT_ENCODING *enc,
- int state,
- const char *ptr,
- const char *end,
- const char **nextTokPtr)
-{
- const ENCODING **encPtr;
-
- if (ptr == end)
- return XML_TOK_NONE;
- encPtr = enc->encPtr;
- if (ptr + 1 == end) {
- /* only a single byte available for auto-detection */
-#ifndef XML_DTD /* FIXME */
- /* a well-formed document entity must have more than one byte */
- if (state != XML_CONTENT_STATE)
- return XML_TOK_PARTIAL;
-#endif
- /* so we're parsing an external text entity... */
- /* if UTF-16 was externally specified, then we need at least 2 bytes */
- switch (INIT_ENC_INDEX(enc)) {
- case UTF_16_ENC:
- case UTF_16LE_ENC:
- case UTF_16BE_ENC:
- return XML_TOK_PARTIAL;
- }
- switch ((unsigned char)*ptr) {
- case 0xFE:
- case 0xFF:
- case 0xEF: /* possibly first byte of UTF-8 BOM */
- if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
- && state == XML_CONTENT_STATE)
- break;
- /* fall through */
- case 0x00:
- case 0x3C:
- return XML_TOK_PARTIAL;
- }
- }
- else {
- switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) {
- case 0xFEFF:
- if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
- && state == XML_CONTENT_STATE)
- break;
- *nextTokPtr = ptr + 2;
- *encPtr = encodingTable[UTF_16BE_ENC];
- return XML_TOK_BOM;
- /* 00 3C is handled in the default case */
- case 0x3C00:
- if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC
- || INIT_ENC_INDEX(enc) == UTF_16_ENC)
- && state == XML_CONTENT_STATE)
- break;
- *encPtr = encodingTable[UTF_16LE_ENC];
- return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
- case 0xFFFE:
- if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
- && state == XML_CONTENT_STATE)
- break;
- *nextTokPtr = ptr + 2;
- *encPtr = encodingTable[UTF_16LE_ENC];
- return XML_TOK_BOM;
- case 0xEFBB:
- /* Maybe a UTF-8 BOM (EF BB BF) */
- /* If there's an explicitly specified (external) encoding
- of ISO-8859-1 or some flavour of UTF-16
- and this is an external text entity,
- don't look for the BOM,
- because it might be a legal data.
- */
- if (state == XML_CONTENT_STATE) {
- int e = INIT_ENC_INDEX(enc);
- if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC
- || e == UTF_16LE_ENC || e == UTF_16_ENC)
- break;
- }
- if (ptr + 2 == end)
- return XML_TOK_PARTIAL;
- if ((unsigned char)ptr[2] == 0xBF) {
- *nextTokPtr = ptr + 3;
- *encPtr = encodingTable[UTF_8_ENC];
- return XML_TOK_BOM;
- }
- break;
- default:
- if (ptr[0] == '\0') {
- /* 0 isn't a legal data character. Furthermore a document
- entity can only start with ASCII characters. So the only
- way this can fail to be big-endian UTF-16 if it it's an
- external parsed general entity that's labelled as
- UTF-16LE.
- */
- if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC)
- break;
- *encPtr = encodingTable[UTF_16BE_ENC];
- return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
- }
- else if (ptr[1] == '\0') {
- /* We could recover here in the case:
- - parsing an external entity
- - second byte is 0
- - no externally specified encoding
- - no encoding declaration
- by assuming UTF-16LE. But we don't, because this would mean when
- presented just with a single byte, we couldn't reliably determine
- whether we needed further bytes.
- */
- if (state == XML_CONTENT_STATE)
- break;
- *encPtr = encodingTable[UTF_16LE_ENC];
- return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
- }
- break;
- }
- }
- *encPtr = encodingTable[INIT_ENC_INDEX(enc)];
- return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
-}
-
-
-#define NS(x) x
-#define ns(x) x
-#define XML_TOK_NS_C
-#include <cutl/details/expat/xmltok_ns.c>
-#undef XML_TOK_NS_C
-#undef NS
-#undef ns
-
-#ifdef XML_NS
-
-#define NS(x) x ## NS
-#define ns(x) x ## _ns
-
-#define XML_TOK_NS_C
-#include <cutl/details/expat/xmltok_ns.c>
-#undef XML_TOK_NS_C
-
-#undef NS
-#undef ns
-
-ENCODING *
-XmlInitUnknownEncodingNS(void *mem,
- int *table,
- CONVERTER convert,
- void *userData)
-{
- ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData);
- if (enc)
- ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON;
- return enc;
-}
-
-#endif /* XML_NS */
diff --git a/libcutl/cutl/details/expat/xmltok.h b/libcutl/cutl/details/expat/xmltok.h
deleted file mode 100644
index ca867aa..0000000
--- a/libcutl/cutl/details/expat/xmltok.h
+++ /dev/null
@@ -1,316 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-#ifndef XmlTok_INCLUDED
-#define XmlTok_INCLUDED 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The following token may be returned by XmlContentTok */
-#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be
- start of illegal ]]> sequence */
-/* The following tokens may be returned by both XmlPrologTok and
- XmlContentTok.
-*/
-#define XML_TOK_NONE -4 /* The string to be scanned is empty */
-#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan;
- might be part of CRLF sequence */
-#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */
-#define XML_TOK_PARTIAL -1 /* only part of a token */
-#define XML_TOK_INVALID 0
-
-/* The following tokens are returned by XmlContentTok; some are also
- returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok.
-*/
-#define XML_TOK_START_TAG_WITH_ATTS 1
-#define XML_TOK_START_TAG_NO_ATTS 2
-#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag <e/> */
-#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4
-#define XML_TOK_END_TAG 5
-#define XML_TOK_DATA_CHARS 6
-#define XML_TOK_DATA_NEWLINE 7
-#define XML_TOK_CDATA_SECT_OPEN 8
-#define XML_TOK_ENTITY_REF 9
-#define XML_TOK_CHAR_REF 10 /* numeric character reference */
-
-/* The following tokens may be returned by both XmlPrologTok and
- XmlContentTok.
-*/
-#define XML_TOK_PI 11 /* processing instruction */
-#define XML_TOK_XML_DECL 12 /* XML decl or text decl */
-#define XML_TOK_COMMENT 13
-#define XML_TOK_BOM 14 /* Byte order mark */
-
-/* The following tokens are returned only by XmlPrologTok */
-#define XML_TOK_PROLOG_S 15
-#define XML_TOK_DECL_OPEN 16 /* <!foo */
-#define XML_TOK_DECL_CLOSE 17 /* > */
-#define XML_TOK_NAME 18
-#define XML_TOK_NMTOKEN 19
-#define XML_TOK_POUND_NAME 20 /* #name */
-#define XML_TOK_OR 21 /* | */
-#define XML_TOK_PERCENT 22
-#define XML_TOK_OPEN_PAREN 23
-#define XML_TOK_CLOSE_PAREN 24
-#define XML_TOK_OPEN_BRACKET 25
-#define XML_TOK_CLOSE_BRACKET 26
-#define XML_TOK_LITERAL 27
-#define XML_TOK_PARAM_ENTITY_REF 28
-#define XML_TOK_INSTANCE_START 29
-
-/* The following occur only in element type declarations */
-#define XML_TOK_NAME_QUESTION 30 /* name? */
-#define XML_TOK_NAME_ASTERISK 31 /* name* */
-#define XML_TOK_NAME_PLUS 32 /* name+ */
-#define XML_TOK_COND_SECT_OPEN 33 /* <![ */
-#define XML_TOK_COND_SECT_CLOSE 34 /* ]]> */
-#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */
-#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */
-#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */
-#define XML_TOK_COMMA 38
-
-/* The following token is returned only by XmlAttributeValueTok */
-#define XML_TOK_ATTRIBUTE_VALUE_S 39
-
-/* The following token is returned only by XmlCdataSectionTok */
-#define XML_TOK_CDATA_SECT_CLOSE 40
-
-/* With namespace processing this is returned by XmlPrologTok for a
- name with a colon.
-*/
-#define XML_TOK_PREFIXED_NAME 41
-
-#ifdef XML_DTD
-#define XML_TOK_IGNORE_SECT 42
-#endif /* XML_DTD */
-
-#ifdef XML_DTD
-#define XML_N_STATES 4
-#else /* not XML_DTD */
-#define XML_N_STATES 3
-#endif /* not XML_DTD */
-
-#define XML_PROLOG_STATE 0
-#define XML_CONTENT_STATE 1
-#define XML_CDATA_SECTION_STATE 2
-#ifdef XML_DTD
-#define XML_IGNORE_SECTION_STATE 3
-#endif /* XML_DTD */
-
-#define XML_N_LITERAL_TYPES 2
-#define XML_ATTRIBUTE_VALUE_LITERAL 0
-#define XML_ENTITY_VALUE_LITERAL 1
-
-/* The size of the buffer passed to XmlUtf8Encode must be at least this. */
-#define XML_UTF8_ENCODE_MAX 4
-/* The size of the buffer passed to XmlUtf16Encode must be at least this. */
-#define XML_UTF16_ENCODE_MAX 2
-
-typedef struct position {
- /* first line and first column are 0 not 1 */
- XML_Size lineNumber;
- XML_Size columnNumber;
-} POSITION;
-
-typedef struct {
- const char *name;
- const char *valuePtr;
- const char *valueEnd;
- char normalized;
-} ATTRIBUTE;
-
-struct encoding;
-typedef struct encoding ENCODING;
-
-typedef int (PTRCALL *SCANNER)(const ENCODING *,
- const char *,
- const char *,
- const char **);
-
-struct encoding {
- SCANNER scanners[XML_N_STATES];
- SCANNER literalScanners[XML_N_LITERAL_TYPES];
- int (PTRCALL *sameName)(const ENCODING *,
- const char *,
- const char *);
- int (PTRCALL *nameMatchesAscii)(const ENCODING *,
- const char *,
- const char *,
- const char *);
- int (PTRFASTCALL *nameLength)(const ENCODING *, const char *);
- const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *);
- int (PTRCALL *getAtts)(const ENCODING *enc,
- const char *ptr,
- int attsMax,
- ATTRIBUTE *atts);
- int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr);
- int (PTRCALL *predefinedEntityName)(const ENCODING *,
- const char *,
- const char *);
- void (PTRCALL *updatePosition)(const ENCODING *,
- const char *ptr,
- const char *end,
- POSITION *);
- int (PTRCALL *isPublicId)(const ENCODING *enc,
- const char *ptr,
- const char *end,
- const char **badPtr);
- void (PTRCALL *utf8Convert)(const ENCODING *enc,
- const char **fromP,
- const char *fromLim,
- char **toP,
- const char *toLim);
- void (PTRCALL *utf16Convert)(const ENCODING *enc,
- const char **fromP,
- const char *fromLim,
- unsigned short **toP,
- const unsigned short *toLim);
- int minBytesPerChar;
- char isUtf8;
- char isUtf16;
-};
-
-/* Scan the string starting at ptr until the end of the next complete
- token, but do not scan past eptr. Return an integer giving the
- type of token.
-
- Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set.
-
- Return XML_TOK_PARTIAL when the string does not contain a complete
- token; nextTokPtr will not be set.
-
- Return XML_TOK_INVALID when the string does not start a valid
- token; nextTokPtr will be set to point to the character which made
- the token invalid.
-
- Otherwise the string starts with a valid token; nextTokPtr will be
- set to point to the character following the end of that token.
-
- Each data character counts as a single token, but adjacent data
- characters may be returned together. Similarly for characters in
- the prolog outside literals, comments and processing instructions.
-*/
-
-
-#define XmlTok(enc, state, ptr, end, nextTokPtr) \
- (((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
-
-#define XmlPrologTok(enc, ptr, end, nextTokPtr) \
- XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)
-
-#define XmlContentTok(enc, ptr, end, nextTokPtr) \
- XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)
-
-#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \
- XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)
-
-#ifdef XML_DTD
-
-#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \
- XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr)
-
-#endif /* XML_DTD */
-
-/* This is used for performing a 2nd-level tokenization on the content
- of a literal that has already been returned by XmlTok.
-*/
-#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \
- (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))
-
-#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \
- XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)
-
-#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \
- XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)
-
-#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2))
-
-#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \
- (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
-
-#define XmlNameLength(enc, ptr) \
- (((enc)->nameLength)(enc, ptr))
-
-#define XmlSkipS(enc, ptr) \
- (((enc)->skipS)(enc, ptr))
-
-#define XmlGetAttributes(enc, ptr, attsMax, atts) \
- (((enc)->getAtts)(enc, ptr, attsMax, atts))
-
-#define XmlCharRefNumber(enc, ptr) \
- (((enc)->charRefNumber)(enc, ptr))
-
-#define XmlPredefinedEntityName(enc, ptr, end) \
- (((enc)->predefinedEntityName)(enc, ptr, end))
-
-#define XmlUpdatePosition(enc, ptr, end, pos) \
- (((enc)->updatePosition)(enc, ptr, end, pos))
-
-#define XmlIsPublicId(enc, ptr, end, badPtr) \
- (((enc)->isPublicId)(enc, ptr, end, badPtr))
-
-#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \
- (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))
-
-#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \
- (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))
-
-typedef struct {
- ENCODING initEnc;
- const ENCODING **encPtr;
-} INIT_ENCODING;
-
-int XmlParseXmlDecl(int isGeneralTextEntity,
- const ENCODING *enc,
- const char *ptr,
- const char *end,
- const char **badPtr,
- const char **versionPtr,
- const char **versionEndPtr,
- const char **encodingNamePtr,
- const ENCODING **namedEncodingPtr,
- int *standalonePtr);
-
-int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name);
-const ENCODING *XmlGetUtf8InternalEncoding(void);
-const ENCODING *XmlGetUtf16InternalEncoding(void);
-int FASTCALL XmlUtf8Encode(int charNumber, char *buf);
-int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf);
-int XmlSizeOfUnknownEncoding(void);
-
-
-typedef int (XMLCALL *CONVERTER) (void *userData, const char *p);
-
-ENCODING *
-XmlInitUnknownEncoding(void *mem,
- int *table,
- CONVERTER convert,
- void *userData);
-
-int XmlParseXmlDeclNS(int isGeneralTextEntity,
- const ENCODING *enc,
- const char *ptr,
- const char *end,
- const char **badPtr,
- const char **versionPtr,
- const char **versionEndPtr,
- const char **encodingNamePtr,
- const ENCODING **namedEncodingPtr,
- int *standalonePtr);
-
-int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name);
-const ENCODING *XmlGetUtf8InternalEncodingNS(void);
-const ENCODING *XmlGetUtf16InternalEncodingNS(void);
-ENCODING *
-XmlInitUnknownEncodingNS(void *mem,
- int *table,
- CONVERTER convert,
- void *userData);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not XmlTok_INCLUDED */
diff --git a/libcutl/cutl/details/expat/xmltok_impl.c b/libcutl/cutl/details/expat/xmltok_impl.c
deleted file mode 100644
index de4d21a..0000000
--- a/libcutl/cutl/details/expat/xmltok_impl.c
+++ /dev/null
@@ -1,1796 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-/* This file is included! */
-#ifdef XML_TOK_IMPL_C
-
-#ifndef IS_INVALID_CHAR
-#define IS_INVALID_CHAR(enc, ptr, n) (0)
-#endif
-
-#define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \
- case BT_LEAD ## n: \
- if (end - ptr < n) \
- return XML_TOK_PARTIAL_CHAR; \
- if (IS_INVALID_CHAR(enc, ptr, n)) { \
- *(nextTokPtr) = (ptr); \
- return XML_TOK_INVALID; \
- } \
- ptr += n; \
- break;
-
-#define INVALID_CASES(ptr, nextTokPtr) \
- INVALID_LEAD_CASE(2, ptr, nextTokPtr) \
- INVALID_LEAD_CASE(3, ptr, nextTokPtr) \
- INVALID_LEAD_CASE(4, ptr, nextTokPtr) \
- case BT_NONXML: \
- case BT_MALFORM: \
- case BT_TRAIL: \
- *(nextTokPtr) = (ptr); \
- return XML_TOK_INVALID;
-
-#define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \
- case BT_LEAD ## n: \
- if (end - ptr < n) \
- return XML_TOK_PARTIAL_CHAR; \
- if (!IS_NAME_CHAR(enc, ptr, n)) { \
- *nextTokPtr = ptr; \
- return XML_TOK_INVALID; \
- } \
- ptr += n; \
- break;
-
-#define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \
- case BT_NONASCII: \
- if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \
- *nextTokPtr = ptr; \
- return XML_TOK_INVALID; \
- } \
- case BT_NMSTRT: \
- case BT_HEX: \
- case BT_DIGIT: \
- case BT_NAME: \
- case BT_MINUS: \
- ptr += MINBPC(enc); \
- break; \
- CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \
- CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \
- CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr)
-
-#define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \
- case BT_LEAD ## n: \
- if (end - ptr < n) \
- return XML_TOK_PARTIAL_CHAR; \
- if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \
- *nextTokPtr = ptr; \
- return XML_TOK_INVALID; \
- } \
- ptr += n; \
- break;
-
-#define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \
- case BT_NONASCII: \
- if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \
- *nextTokPtr = ptr; \
- return XML_TOK_INVALID; \
- } \
- case BT_NMSTRT: \
- case BT_HEX: \
- ptr += MINBPC(enc); \
- break; \
- CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \
- CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \
- CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr)
-
-#ifndef PREFIX
-#define PREFIX(ident) ident
-#endif
-
-/* ptr points to character following "<!-" */
-
-static int PTRCALL
-PREFIX(scanComment)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- if (ptr != end) {
- if (!CHAR_MATCHES(enc, ptr, ASCII_MINUS)) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- ptr += MINBPC(enc);
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- INVALID_CASES(ptr, nextTokPtr)
- case BT_MINUS:
- if ((ptr += MINBPC(enc)) == end)
- return XML_TOK_PARTIAL;
- if (CHAR_MATCHES(enc, ptr, ASCII_MINUS)) {
- if ((ptr += MINBPC(enc)) == end)
- return XML_TOK_PARTIAL;
- if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_COMMENT;
- }
- break;
- default:
- ptr += MINBPC(enc);
- break;
- }
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "<!" */
-
-static int PTRCALL
-PREFIX(scanDecl)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_MINUS:
- return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- case BT_LSQB:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_COND_SECT_OPEN;
- case BT_NMSTRT:
- case BT_HEX:
- ptr += MINBPC(enc);
- break;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_PERCNT:
- if (ptr + MINBPC(enc) == end)
- return XML_TOK_PARTIAL;
- /* don't allow <!ENTITY% foo "whatever"> */
- switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) {
- case BT_S: case BT_CR: case BT_LF: case BT_PERCNT:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- /* fall through */
- case BT_S: case BT_CR: case BT_LF:
- *nextTokPtr = ptr;
- return XML_TOK_DECL_OPEN;
- case BT_NMSTRT:
- case BT_HEX:
- ptr += MINBPC(enc);
- break;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr,
- const char *end, int *tokPtr)
-{
- int upper = 0;
-
- UNUSED(enc);
-
- *tokPtr = XML_TOK_PI;
- if (end - ptr != MINBPC(enc)*3)
- return 1;
- switch (BYTE_TO_ASCII(enc, ptr)) {
- case ASCII_x:
- break;
- case ASCII_X:
- upper = 1;
- break;
- default:
- return 1;
- }
- ptr += MINBPC(enc);
- switch (BYTE_TO_ASCII(enc, ptr)) {
- case ASCII_m:
- break;
- case ASCII_M:
- upper = 1;
- break;
- default:
- return 1;
- }
- ptr += MINBPC(enc);
- switch (BYTE_TO_ASCII(enc, ptr)) {
- case ASCII_l:
- break;
- case ASCII_L:
- upper = 1;
- break;
- default:
- return 1;
- }
- if (upper)
- return 0;
- *tokPtr = XML_TOK_XML_DECL;
- return 1;
-}
-
-/* ptr points to character following "<?" */
-
-static int PTRCALL
-PREFIX(scanPi)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- int tok;
- const char *target = ptr;
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
- case BT_S: case BT_CR: case BT_LF:
- if (!PREFIX(checkPiTarget)(enc, target, ptr, &tok)) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- ptr += MINBPC(enc);
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- INVALID_CASES(ptr, nextTokPtr)
- case BT_QUEST:
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
- *nextTokPtr = ptr + MINBPC(enc);
- return tok;
- }
- break;
- default:
- ptr += MINBPC(enc);
- break;
- }
- }
- return XML_TOK_PARTIAL;
- case BT_QUEST:
- if (!PREFIX(checkPiTarget)(enc, target, ptr, &tok)) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
- *nextTokPtr = ptr + MINBPC(enc);
- return tok;
- }
- /* fall through */
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(scanCdataSection)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- static const char CDATA_LSQB[] = { ASCII_C, ASCII_D, ASCII_A,
- ASCII_T, ASCII_A, ASCII_LSQB };
- int i;
-
- UNUSED(enc);
-
- /* CDATA[ */
- if (end - ptr < 6 * MINBPC(enc))
- return XML_TOK_PARTIAL;
- for (i = 0; i < 6; i++, ptr += MINBPC(enc)) {
- if (!CHAR_MATCHES(enc, ptr, CDATA_LSQB[i])) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- *nextTokPtr = ptr;
- return XML_TOK_CDATA_SECT_OPEN;
-}
-
-static int PTRCALL
-PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- if (ptr == end)
- return XML_TOK_NONE;
- if (MINBPC(enc) > 1) {
- size_t n = end - ptr;
- if (n & (MINBPC(enc) - 1)) {
- n &= ~(MINBPC(enc) - 1);
- if (n == 0)
- return XML_TOK_PARTIAL;
- end = ptr + n;
- }
- }
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_RSQB:
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
- break;
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
- ptr -= MINBPC(enc);
- break;
- }
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_CDATA_SECT_CLOSE;
- case BT_CR:
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- if (BYTE_TYPE(enc, ptr) == BT_LF)
- ptr += MINBPC(enc);
- *nextTokPtr = ptr;
- return XML_TOK_DATA_NEWLINE;
- case BT_LF:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_DATA_NEWLINE;
- INVALID_CASES(ptr, nextTokPtr)
- default:
- ptr += MINBPC(enc);
- break;
- }
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
- case BT_LEAD ## n: \
- if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
- *nextTokPtr = ptr; \
- return XML_TOK_DATA_CHARS; \
- } \
- ptr += n; \
- break;
- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
- case BT_NONXML:
- case BT_MALFORM:
- case BT_TRAIL:
- case BT_CR:
- case BT_LF:
- case BT_RSQB:
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
- default:
- ptr += MINBPC(enc);
- break;
- }
- }
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
-}
-
-/* ptr points to character following "</" */
-
-static int PTRCALL
-PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
- case BT_S: case BT_CR: case BT_LF:
- for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_S: case BT_CR: case BT_LF:
- break;
- case BT_GT:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_END_TAG;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- return XML_TOK_PARTIAL;
-#ifdef XML_NS
- case BT_COLON:
- /* no need to check qname syntax here,
- since end-tag must match exactly */
- ptr += MINBPC(enc);
- break;
-#endif
- case BT_GT:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_END_TAG;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "&#X" */
-
-static int PTRCALL
-PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- if (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_DIGIT:
- case BT_HEX:
- break;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_DIGIT:
- case BT_HEX:
- break;
- case BT_SEMI:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_CHAR_REF;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "&#" */
-
-static int PTRCALL
-PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- if (ptr != end) {
- if (CHAR_MATCHES(enc, ptr, ASCII_x))
- return PREFIX(scanHexCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_DIGIT:
- break;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_DIGIT:
- break;
- case BT_SEMI:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_CHAR_REF;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "&" */
-
-static int PTRCALL
-PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end,
- const char **nextTokPtr)
-{
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
- case BT_NUM:
- return PREFIX(scanCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
- case BT_SEMI:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_ENTITY_REF;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following first character of attribute name */
-
-static int PTRCALL
-PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
- const char **nextTokPtr)
-{
-#ifdef XML_NS
- int hadColon = 0;
-#endif
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-#ifdef XML_NS
- case BT_COLON:
- if (hadColon) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- hadColon = 1;
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- break;
-#endif
- case BT_S: case BT_CR: case BT_LF:
- for (;;) {
- int t;
-
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- t = BYTE_TYPE(enc, ptr);
- if (t == BT_EQUALS)
- break;
- switch (t) {
- case BT_S:
- case BT_LF:
- case BT_CR:
- break;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- /* fall through */
- case BT_EQUALS:
- {
- int open;
-#ifdef XML_NS
- hadColon = 0;
-#endif
- for (;;) {
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- open = BYTE_TYPE(enc, ptr);
- if (open == BT_QUOT || open == BT_APOS)
- break;
- switch (open) {
- case BT_S:
- case BT_LF:
- case BT_CR:
- break;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- ptr += MINBPC(enc);
- /* in attribute value */
- for (;;) {
- int t;
- if (ptr == end)
- return XML_TOK_PARTIAL;
- t = BYTE_TYPE(enc, ptr);
- if (t == open)
- break;
- switch (t) {
- INVALID_CASES(ptr, nextTokPtr)
- case BT_AMP:
- {
- int tok = PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, &ptr);
- if (tok <= 0) {
- if (tok == XML_TOK_INVALID)
- *nextTokPtr = ptr;
- return tok;
- }
- break;
- }
- case BT_LT:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- default:
- ptr += MINBPC(enc);
- break;
- }
- }
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_S:
- case BT_CR:
- case BT_LF:
- break;
- case BT_SOL:
- goto sol;
- case BT_GT:
- goto gt;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- /* ptr points to closing quote */
- for (;;) {
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
- case BT_S: case BT_CR: case BT_LF:
- continue;
- case BT_GT:
- gt:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_START_TAG_WITH_ATTS;
- case BT_SOL:
- sol:
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_EMPTY_ELEMENT_WITH_ATTS;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- break;
- }
- break;
- }
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "<" */
-
-static int PTRCALL
-PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
- const char **nextTokPtr)
-{
-#ifdef XML_NS
- int hadColon;
-#endif
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
- case BT_EXCL:
- if ((ptr += MINBPC(enc)) == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_MINUS:
- return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- case BT_LSQB:
- return PREFIX(scanCdataSection)(enc, ptr + MINBPC(enc),
- end, nextTokPtr);
- }
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- case BT_QUEST:
- return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- case BT_SOL:
- return PREFIX(scanEndTag)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
-#ifdef XML_NS
- hadColon = 0;
-#endif
- /* we have a start-tag */
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-#ifdef XML_NS
- case BT_COLON:
- if (hadColon) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- hadColon = 1;
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- break;
-#endif
- case BT_S: case BT_CR: case BT_LF:
- {
- ptr += MINBPC(enc);
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
- case BT_GT:
- goto gt;
- case BT_SOL:
- goto sol;
- case BT_S: case BT_CR: case BT_LF:
- ptr += MINBPC(enc);
- continue;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- return PREFIX(scanAtts)(enc, ptr, end, nextTokPtr);
- }
- return XML_TOK_PARTIAL;
- }
- case BT_GT:
- gt:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_START_TAG_NO_ATTS;
- case BT_SOL:
- sol:
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_EMPTY_ELEMENT_NO_ATTS;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end,
- const char **nextTokPtr)
-{
- if (ptr == end)
- return XML_TOK_NONE;
- if (MINBPC(enc) > 1) {
- size_t n = end - ptr;
- if (n & (MINBPC(enc) - 1)) {
- n &= ~(MINBPC(enc) - 1);
- if (n == 0)
- return XML_TOK_PARTIAL;
- end = ptr + n;
- }
- }
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_LT:
- return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- case BT_AMP:
- return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- case BT_CR:
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_TRAILING_CR;
- if (BYTE_TYPE(enc, ptr) == BT_LF)
- ptr += MINBPC(enc);
- *nextTokPtr = ptr;
- return XML_TOK_DATA_NEWLINE;
- case BT_LF:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_DATA_NEWLINE;
- case BT_RSQB:
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_TRAILING_RSQB;
- if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
- break;
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_TRAILING_RSQB;
- if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
- ptr -= MINBPC(enc);
- break;
- }
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- INVALID_CASES(ptr, nextTokPtr)
- default:
- ptr += MINBPC(enc);
- break;
- }
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
- case BT_LEAD ## n: \
- if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
- *nextTokPtr = ptr; \
- return XML_TOK_DATA_CHARS; \
- } \
- ptr += n; \
- break;
- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
- case BT_RSQB:
- if (ptr + MINBPC(enc) != end) {
- if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) {
- ptr += MINBPC(enc);
- break;
- }
- if (ptr + 2*MINBPC(enc) != end) {
- if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) {
- ptr += MINBPC(enc);
- break;
- }
- *nextTokPtr = ptr + 2*MINBPC(enc);
- return XML_TOK_INVALID;
- }
- }
- /* fall through */
- case BT_AMP:
- case BT_LT:
- case BT_NONXML:
- case BT_MALFORM:
- case BT_TRAIL:
- case BT_CR:
- case BT_LF:
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
- default:
- ptr += MINBPC(enc);
- break;
- }
- }
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
-}
-
-/* ptr points to character following "%" */
-
-static int PTRCALL
-PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end,
- const char **nextTokPtr)
-{
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
- case BT_S: case BT_LF: case BT_CR: case BT_PERCNT:
- *nextTokPtr = ptr;
- return XML_TOK_PERCENT;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
- case BT_SEMI:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_PARAM_ENTITY_REF;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end,
- const char **nextTokPtr)
-{
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
- case BT_CR: case BT_LF: case BT_S:
- case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR:
- *nextTokPtr = ptr;
- return XML_TOK_POUND_NAME;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- return -XML_TOK_POUND_NAME;
-}
-
-static int PTRCALL
-PREFIX(scanLit)(int open, const ENCODING *enc,
- const char *ptr, const char *end,
- const char **nextTokPtr)
-{
- while (ptr != end) {
- int t = BYTE_TYPE(enc, ptr);
- switch (t) {
- INVALID_CASES(ptr, nextTokPtr)
- case BT_QUOT:
- case BT_APOS:
- ptr += MINBPC(enc);
- if (t != open)
- break;
- if (ptr == end)
- return -XML_TOK_LITERAL;
- *nextTokPtr = ptr;
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_S: case BT_CR: case BT_LF:
- case BT_GT: case BT_PERCNT: case BT_LSQB:
- return XML_TOK_LITERAL;
- default:
- return XML_TOK_INVALID;
- }
- default:
- ptr += MINBPC(enc);
- break;
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
- const char **nextTokPtr)
-{
- int tok;
- if (ptr == end)
- return XML_TOK_NONE;
- if (MINBPC(enc) > 1) {
- size_t n = end - ptr;
- if (n & (MINBPC(enc) - 1)) {
- n &= ~(MINBPC(enc) - 1);
- if (n == 0)
- return XML_TOK_PARTIAL;
- end = ptr + n;
- }
- }
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_QUOT:
- return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr);
- case BT_APOS:
- return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr);
- case BT_LT:
- {
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_PARTIAL;
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_EXCL:
- return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- case BT_QUEST:
- return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- case BT_NMSTRT:
- case BT_HEX:
- case BT_NONASCII:
- case BT_LEAD2:
- case BT_LEAD3:
- case BT_LEAD4:
- *nextTokPtr = ptr - MINBPC(enc);
- return XML_TOK_INSTANCE_START;
- }
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- case BT_CR:
- if (ptr + MINBPC(enc) == end) {
- *nextTokPtr = end;
- /* indicate that this might be part of a CR/LF pair */
- return -XML_TOK_PROLOG_S;
- }
- /* fall through */
- case BT_S: case BT_LF:
- for (;;) {
- ptr += MINBPC(enc);
- if (ptr == end)
- break;
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_S: case BT_LF:
- break;
- case BT_CR:
- /* don't split CR/LF pair */
- if (ptr + MINBPC(enc) != end)
- break;
- /* fall through */
- default:
- *nextTokPtr = ptr;
- return XML_TOK_PROLOG_S;
- }
- }
- *nextTokPtr = ptr;
- return XML_TOK_PROLOG_S;
- case BT_PERCNT:
- return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- case BT_COMMA:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_COMMA;
- case BT_LSQB:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_OPEN_BRACKET;
- case BT_RSQB:
- ptr += MINBPC(enc);
- if (ptr == end)
- return -XML_TOK_CLOSE_BRACKET;
- if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) {
- if (ptr + MINBPC(enc) == end)
- return XML_TOK_PARTIAL;
- if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) {
- *nextTokPtr = ptr + 2*MINBPC(enc);
- return XML_TOK_COND_SECT_CLOSE;
- }
- }
- *nextTokPtr = ptr;
- return XML_TOK_CLOSE_BRACKET;
- case BT_LPAR:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_OPEN_PAREN;
- case BT_RPAR:
- ptr += MINBPC(enc);
- if (ptr == end)
- return -XML_TOK_CLOSE_PAREN;
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_AST:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_CLOSE_PAREN_ASTERISK;
- case BT_QUEST:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_CLOSE_PAREN_QUESTION;
- case BT_PLUS:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_CLOSE_PAREN_PLUS;
- case BT_CR: case BT_LF: case BT_S:
- case BT_GT: case BT_COMMA: case BT_VERBAR:
- case BT_RPAR:
- *nextTokPtr = ptr;
- return XML_TOK_CLOSE_PAREN;
- }
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- case BT_VERBAR:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_OR;
- case BT_GT:
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_DECL_CLOSE;
- case BT_NUM:
- return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-#define LEAD_CASE(n) \
- case BT_LEAD ## n: \
- if (end - ptr < n) \
- return XML_TOK_PARTIAL_CHAR; \
- if (IS_NMSTRT_CHAR(enc, ptr, n)) { \
- ptr += n; \
- tok = XML_TOK_NAME; \
- break; \
- } \
- if (IS_NAME_CHAR(enc, ptr, n)) { \
- ptr += n; \
- tok = XML_TOK_NMTOKEN; \
- break; \
- } \
- *nextTokPtr = ptr; \
- return XML_TOK_INVALID;
- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
- case BT_NMSTRT:
- case BT_HEX:
- tok = XML_TOK_NAME;
- ptr += MINBPC(enc);
- break;
- case BT_DIGIT:
- case BT_NAME:
- case BT_MINUS:
-#ifdef XML_NS
- case BT_COLON:
-#endif
- tok = XML_TOK_NMTOKEN;
- ptr += MINBPC(enc);
- break;
- case BT_NONASCII:
- if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) {
- ptr += MINBPC(enc);
- tok = XML_TOK_NAME;
- break;
- }
- if (IS_NAME_CHAR_MINBPC(enc, ptr)) {
- ptr += MINBPC(enc);
- tok = XML_TOK_NMTOKEN;
- break;
- }
- /* fall through */
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
- case BT_GT: case BT_RPAR: case BT_COMMA:
- case BT_VERBAR: case BT_LSQB: case BT_PERCNT:
- case BT_S: case BT_CR: case BT_LF:
- *nextTokPtr = ptr;
- return tok;
-#ifdef XML_NS
- case BT_COLON:
- ptr += MINBPC(enc);
- switch (tok) {
- case XML_TOK_NAME:
- if (ptr == end)
- return XML_TOK_PARTIAL;
- tok = XML_TOK_PREFIXED_NAME;
- switch (BYTE_TYPE(enc, ptr)) {
- CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
- default:
- tok = XML_TOK_NMTOKEN;
- break;
- }
- break;
- case XML_TOK_PREFIXED_NAME:
- tok = XML_TOK_NMTOKEN;
- break;
- }
- break;
-#endif
- case BT_PLUS:
- if (tok == XML_TOK_NMTOKEN) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_NAME_PLUS;
- case BT_AST:
- if (tok == XML_TOK_NMTOKEN) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_NAME_ASTERISK;
- case BT_QUEST:
- if (tok == XML_TOK_NMTOKEN) {
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_NAME_QUESTION;
- default:
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- }
- }
- return -tok;
-}
-
-static int PTRCALL
-PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- const char *start;
- if (ptr == end)
- return XML_TOK_NONE;
- start = ptr;
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
- case BT_LEAD ## n: ptr += n; break;
- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
- case BT_AMP:
- if (ptr == start)
- return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
- case BT_LT:
- /* this is for inside entity references */
- *nextTokPtr = ptr;
- return XML_TOK_INVALID;
- case BT_LF:
- if (ptr == start) {
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_DATA_NEWLINE;
- }
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
- case BT_CR:
- if (ptr == start) {
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_TRAILING_CR;
- if (BYTE_TYPE(enc, ptr) == BT_LF)
- ptr += MINBPC(enc);
- *nextTokPtr = ptr;
- return XML_TOK_DATA_NEWLINE;
- }
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
- case BT_S:
- if (ptr == start) {
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_ATTRIBUTE_VALUE_S;
- }
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
- default:
- ptr += MINBPC(enc);
- break;
- }
- }
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
-}
-
-static int PTRCALL
-PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- const char *start;
- if (ptr == end)
- return XML_TOK_NONE;
- start = ptr;
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
- case BT_LEAD ## n: ptr += n; break;
- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
- case BT_AMP:
- if (ptr == start)
- return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
- case BT_PERCNT:
- if (ptr == start) {
- int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc),
- end, nextTokPtr);
- return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok;
- }
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
- case BT_LF:
- if (ptr == start) {
- *nextTokPtr = ptr + MINBPC(enc);
- return XML_TOK_DATA_NEWLINE;
- }
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
- case BT_CR:
- if (ptr == start) {
- ptr += MINBPC(enc);
- if (ptr == end)
- return XML_TOK_TRAILING_CR;
- if (BYTE_TYPE(enc, ptr) == BT_LF)
- ptr += MINBPC(enc);
- *nextTokPtr = ptr;
- return XML_TOK_DATA_NEWLINE;
- }
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
- default:
- ptr += MINBPC(enc);
- break;
- }
- }
- *nextTokPtr = ptr;
- return XML_TOK_DATA_CHARS;
-}
-
-#ifdef XML_DTD
-
-static int PTRCALL
-PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr,
- const char *end, const char **nextTokPtr)
-{
- int level = 0;
- if (MINBPC(enc) > 1) {
- size_t n = end - ptr;
- if (n & (MINBPC(enc) - 1)) {
- n &= ~(MINBPC(enc) - 1);
- end = ptr + n;
- }
- }
- while (ptr != end) {
- switch (BYTE_TYPE(enc, ptr)) {
- INVALID_CASES(ptr, nextTokPtr)
- case BT_LT:
- if ((ptr += MINBPC(enc)) == end)
- return XML_TOK_PARTIAL;
- if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) {
- if ((ptr += MINBPC(enc)) == end)
- return XML_TOK_PARTIAL;
- if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) {
- ++level;
- ptr += MINBPC(enc);
- }
- }
- break;
- case BT_RSQB:
- if ((ptr += MINBPC(enc)) == end)
- return XML_TOK_PARTIAL;
- if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) {
- if ((ptr += MINBPC(enc)) == end)
- return XML_TOK_PARTIAL;
- if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
- ptr += MINBPC(enc);
- if (level == 0) {
- *nextTokPtr = ptr;
- return XML_TOK_IGNORE_SECT;
- }
- --level;
- }
- }
- break;
- default:
- ptr += MINBPC(enc);
- break;
- }
- }
- return XML_TOK_PARTIAL;
-}
-
-#endif /* XML_DTD */
-
-static int PTRCALL
-PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end,
- const char **badPtr)
-{
- ptr += MINBPC(enc);
- end -= MINBPC(enc);
- for (; ptr != end; ptr += MINBPC(enc)) {
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_DIGIT:
- case BT_HEX:
- case BT_MINUS:
- case BT_APOS:
- case BT_LPAR:
- case BT_RPAR:
- case BT_PLUS:
- case BT_COMMA:
- case BT_SOL:
- case BT_EQUALS:
- case BT_QUEST:
- case BT_CR:
- case BT_LF:
- case BT_SEMI:
- case BT_EXCL:
- case BT_AST:
- case BT_PERCNT:
- case BT_NUM:
-#ifdef XML_NS
- case BT_COLON:
-#endif
- break;
- case BT_S:
- if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) {
- *badPtr = ptr;
- return 0;
- }
- break;
- case BT_NAME:
- case BT_NMSTRT:
- if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f))
- break;
- default:
- switch (BYTE_TO_ASCII(enc, ptr)) {
- case 0x24: /* $ */
- case 0x40: /* @ */
- break;
- default:
- *badPtr = ptr;
- return 0;
- }
- break;
- }
- }
- return 1;
-}
-
-/* This must only be called for a well-formed start-tag or empty
- element tag. Returns the number of attributes. Pointers to the
- first attsMax attributes are stored in atts.
-*/
-
-static int PTRCALL
-PREFIX(getAtts)(const ENCODING *enc, const char *ptr,
- int attsMax, ATTRIBUTE *atts)
-{
- enum { other, inName, inValue } state = inName;
- int nAtts = 0;
- int open = 0; /* defined when state == inValue;
- initialization just to shut up compilers */
-
- for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) {
- switch (BYTE_TYPE(enc, ptr)) {
-#define START_NAME \
- if (state == other) { \
- if (nAtts < attsMax) { \
- atts[nAtts].name = ptr; \
- atts[nAtts].normalized = 1; \
- } \
- state = inName; \
- }
-#define LEAD_CASE(n) \
- case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break;
- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
- case BT_NONASCII:
- case BT_NMSTRT:
- case BT_HEX:
- START_NAME
- break;
-#undef START_NAME
- case BT_QUOT:
- if (state != inValue) {
- if (nAtts < attsMax)
- atts[nAtts].valuePtr = ptr + MINBPC(enc);
- state = inValue;
- open = BT_QUOT;
- }
- else if (open == BT_QUOT) {
- state = other;
- if (nAtts < attsMax)
- atts[nAtts].valueEnd = ptr;
- nAtts++;
- }
- break;
- case BT_APOS:
- if (state != inValue) {
- if (nAtts < attsMax)
- atts[nAtts].valuePtr = ptr + MINBPC(enc);
- state = inValue;
- open = BT_APOS;
- }
- else if (open == BT_APOS) {
- state = other;
- if (nAtts < attsMax)
- atts[nAtts].valueEnd = ptr;
- nAtts++;
- }
- break;
- case BT_AMP:
- if (nAtts < attsMax)
- atts[nAtts].normalized = 0;
- break;
- case BT_S:
- if (state == inName)
- state = other;
- else if (state == inValue
- && nAtts < attsMax
- && atts[nAtts].normalized
- && (ptr == atts[nAtts].valuePtr
- || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE
- || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE
- || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open))
- atts[nAtts].normalized = 0;
- break;
- case BT_CR: case BT_LF:
- /* This case ensures that the first attribute name is counted
- Apart from that we could just change state on the quote. */
- if (state == inName)
- state = other;
- else if (state == inValue && nAtts < attsMax)
- atts[nAtts].normalized = 0;
- break;
- case BT_GT:
- case BT_SOL:
- if (state != inValue)
- return nAtts;
- break;
- default:
- break;
- }
- }
- /* not reached */
-}
-
-static int PTRFASTCALL
-PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr)
-{
- int result = 0;
-
- UNUSED(enc);
-
- /* skip &# */
- ptr += 2*MINBPC(enc);
- if (CHAR_MATCHES(enc, ptr, ASCII_x)) {
- for (ptr += MINBPC(enc);
- !CHAR_MATCHES(enc, ptr, ASCII_SEMI);
- ptr += MINBPC(enc)) {
- int c = BYTE_TO_ASCII(enc, ptr);
- switch (c) {
- case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4:
- case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9:
- result <<= 4;
- result |= (c - ASCII_0);
- break;
- case ASCII_A: case ASCII_B: case ASCII_C:
- case ASCII_D: case ASCII_E: case ASCII_F:
- result <<= 4;
- result += 10 + (c - ASCII_A);
- break;
- case ASCII_a: case ASCII_b: case ASCII_c:
- case ASCII_d: case ASCII_e: case ASCII_f:
- result <<= 4;
- result += 10 + (c - ASCII_a);
- break;
- }
- if (result >= 0x110000)
- return -1;
- }
- }
- else {
- for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) {
- int c = BYTE_TO_ASCII(enc, ptr);
- result *= 10;
- result += (c - ASCII_0);
- if (result >= 0x110000)
- return -1;
- }
- }
- return checkCharRefNumber(result);
-}
-
-static int PTRCALL
-PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr,
- const char *end)
-{
- UNUSED(enc);
-
- switch ((end - ptr)/MINBPC(enc)) {
- case 2:
- if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) {
- switch (BYTE_TO_ASCII(enc, ptr)) {
- case ASCII_l:
- return ASCII_LT;
- case ASCII_g:
- return ASCII_GT;
- }
- }
- break;
- case 3:
- if (CHAR_MATCHES(enc, ptr, ASCII_a)) {
- ptr += MINBPC(enc);
- if (CHAR_MATCHES(enc, ptr, ASCII_m)) {
- ptr += MINBPC(enc);
- if (CHAR_MATCHES(enc, ptr, ASCII_p))
- return ASCII_AMP;
- }
- }
- break;
- case 4:
- switch (BYTE_TO_ASCII(enc, ptr)) {
- case ASCII_q:
- ptr += MINBPC(enc);
- if (CHAR_MATCHES(enc, ptr, ASCII_u)) {
- ptr += MINBPC(enc);
- if (CHAR_MATCHES(enc, ptr, ASCII_o)) {
- ptr += MINBPC(enc);
- if (CHAR_MATCHES(enc, ptr, ASCII_t))
- return ASCII_QUOT;
- }
- }
- break;
- case ASCII_a:
- ptr += MINBPC(enc);
- if (CHAR_MATCHES(enc, ptr, ASCII_p)) {
- ptr += MINBPC(enc);
- if (CHAR_MATCHES(enc, ptr, ASCII_o)) {
- ptr += MINBPC(enc);
- if (CHAR_MATCHES(enc, ptr, ASCII_s))
- return ASCII_APOS;
- }
- }
- break;
- }
- }
- return 0;
-}
-
-static int PTRCALL
-PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2)
-{
- for (;;) {
- switch (BYTE_TYPE(enc, ptr1)) {
-#define LEAD_CASE(n) \
- case BT_LEAD ## n: \
- if (*ptr1++ != *ptr2++) \
- return 0;
- LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2)
-#undef LEAD_CASE
- /* fall through */
- if (*ptr1++ != *ptr2++)
- return 0;
- break;
- case BT_NONASCII:
- case BT_NMSTRT:
-#ifdef XML_NS
- case BT_COLON:
-#endif
- case BT_HEX:
- case BT_DIGIT:
- case BT_NAME:
- case BT_MINUS:
- if (*ptr2++ != *ptr1++)
- return 0;
- if (MINBPC(enc) > 1) {
- if (*ptr2++ != *ptr1++)
- return 0;
- if (MINBPC(enc) > 2) {
- if (*ptr2++ != *ptr1++)
- return 0;
- if (MINBPC(enc) > 3) {
- if (*ptr2++ != *ptr1++)
- return 0;
- }
- }
- }
- break;
- default:
- if (MINBPC(enc) == 1 && *ptr1 == *ptr2)
- return 1;
- switch (BYTE_TYPE(enc, ptr2)) {
- case BT_LEAD2:
- case BT_LEAD3:
- case BT_LEAD4:
- case BT_NONASCII:
- case BT_NMSTRT:
-#ifdef XML_NS
- case BT_COLON:
-#endif
- case BT_HEX:
- case BT_DIGIT:
- case BT_NAME:
- case BT_MINUS:
- return 0;
- default:
- return 1;
- }
- }
- }
- /* not reached */
-}
-
-static int PTRCALL
-PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1,
- const char *end1, const char *ptr2)
-{
- UNUSED(enc);
-
- for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) {
- if (ptr1 == end1)
- return 0;
- if (!CHAR_MATCHES(enc, ptr1, *ptr2))
- return 0;
- }
- return ptr1 == end1;
-}
-
-static int PTRFASTCALL
-PREFIX(nameLength)(const ENCODING *enc, const char *ptr)
-{
- const char *start = ptr;
- for (;;) {
- switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
- case BT_LEAD ## n: ptr += n; break;
- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
- case BT_NONASCII:
- case BT_NMSTRT:
-#ifdef XML_NS
- case BT_COLON:
-#endif
- case BT_HEX:
- case BT_DIGIT:
- case BT_NAME:
- case BT_MINUS:
- ptr += MINBPC(enc);
- break;
- default:
- return (int)(ptr - start);
- }
- }
-}
-
-static const char * PTRFASTCALL
-PREFIX(skipS)(const ENCODING *enc, const char *ptr)
-{
- for (;;) {
- switch (BYTE_TYPE(enc, ptr)) {
- case BT_LF:
- case BT_CR:
- case BT_S:
- ptr += MINBPC(enc);
- break;
- default:
- return ptr;
- }
- }
-}
-
-static void PTRCALL
-PREFIX(updatePosition)(const ENCODING *enc,
- const char *ptr,
- const char *end,
- POSITION *pos)
-{
- while (ptr < end) {
- switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
- case BT_LEAD ## n: \
- ptr += n; \
- break;
- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
- case BT_LF:
- pos->columnNumber = (XML_Size)-1;
- pos->lineNumber++;
- ptr += MINBPC(enc);
- break;
- case BT_CR:
- pos->lineNumber++;
- ptr += MINBPC(enc);
- if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF)
- ptr += MINBPC(enc);
- pos->columnNumber = (XML_Size)-1;
- break;
- default:
- ptr += MINBPC(enc);
- break;
- }
- pos->columnNumber++;
- }
-}
-
-#undef DO_LEAD_CASE
-#undef MULTIBYTE_CASES
-#undef INVALID_CASES
-#undef CHECK_NAME_CASE
-#undef CHECK_NAME_CASES
-#undef CHECK_NMSTRT_CASE
-#undef CHECK_NMSTRT_CASES
-
-#endif /* XML_TOK_IMPL_C */
diff --git a/libcutl/cutl/details/expat/xmltok_impl.h b/libcutl/cutl/details/expat/xmltok_impl.h
deleted file mode 100644
index da0ea60..0000000
--- a/libcutl/cutl/details/expat/xmltok_impl.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-See the file COPYING for copying permission.
-*/
-
-enum {
- BT_NONXML,
- BT_MALFORM,
- BT_LT,
- BT_AMP,
- BT_RSQB,
- BT_LEAD2,
- BT_LEAD3,
- BT_LEAD4,
- BT_TRAIL,
- BT_CR,
- BT_LF,
- BT_GT,
- BT_QUOT,
- BT_APOS,
- BT_EQUALS,
- BT_QUEST,
- BT_EXCL,
- BT_SOL,
- BT_SEMI,
- BT_NUM,
- BT_LSQB,
- BT_S,
- BT_NMSTRT,
- BT_COLON,
- BT_HEX,
- BT_DIGIT,
- BT_NAME,
- BT_MINUS,
- BT_OTHER, /* known not to be a name or name start character */
- BT_NONASCII, /* might be a name or name start character */
- BT_PERCNT,
- BT_LPAR,
- BT_RPAR,
- BT_AST,
- BT_PLUS,
- BT_COMMA,
- BT_VERBAR
-};
-
-#include <stddef.h>
diff --git a/libcutl/cutl/details/expat/xmltok_ns.c b/libcutl/cutl/details/expat/xmltok_ns.c
deleted file mode 100644
index c3b88fd..0000000
--- a/libcutl/cutl/details/expat/xmltok_ns.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
-*/
-
-/* This file is included! */
-#ifdef XML_TOK_NS_C
-
-const ENCODING *
-NS(XmlGetUtf8InternalEncoding)(void)
-{
- return &ns(internal_utf8_encoding).enc;
-}
-
-const ENCODING *
-NS(XmlGetUtf16InternalEncoding)(void)
-{
-#if BYTEORDER == 1234
- return &ns(internal_little2_encoding).enc;
-#elif BYTEORDER == 4321
- return &ns(internal_big2_encoding).enc;
-#else
- const short n = 1;
- return (*(const char *)&n
- ? &ns(internal_little2_encoding).enc
- : &ns(internal_big2_encoding).enc);
-#endif
-}
-
-static const ENCODING * const NS(encodings)[] = {
- &ns(latin1_encoding).enc,
- &ns(ascii_encoding).enc,
- &ns(utf8_encoding).enc,
- &ns(big2_encoding).enc,
- &ns(big2_encoding).enc,
- &ns(little2_encoding).enc,
- &ns(utf8_encoding).enc /* NO_ENC */
-};
-
-static int PTRCALL
-NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
- const char **nextTokPtr)
-{
- return initScan(NS(encodings), (const INIT_ENCODING *)enc,
- XML_PROLOG_STATE, ptr, end, nextTokPtr);
-}
-
-static int PTRCALL
-NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
- const char **nextTokPtr)
-{
- return initScan(NS(encodings), (const INIT_ENCODING *)enc,
- XML_CONTENT_STATE, ptr, end, nextTokPtr);
-}
-
-int
-NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
- const char *name)
-{
- int i = getEncodingIndex(name);
- if (i == UNKNOWN_ENC)
- return 0;
- SET_INIT_ENC_INDEX(p, i);
- p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
- p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
- p->initEnc.updatePosition = initUpdatePosition;
- p->encPtr = encPtr;
- *encPtr = &(p->initEnc);
- return 1;
-}
-
-static const ENCODING *
-NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
-{
-#define ENCODING_MAX 128
- char buf[ENCODING_MAX];
- char *p = buf;
- int i;
- XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);
- if (ptr != end)
- return 0;
- *p = 0;
- if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2)
- return enc;
- i = getEncodingIndex(buf);
- if (i == UNKNOWN_ENC)
- return 0;
- return NS(encodings)[i];
-}
-
-int
-NS(XmlParseXmlDecl)(int isGeneralTextEntity,
- const ENCODING *enc,
- const char *ptr,
- const char *end,
- const char **badPtr,
- const char **versionPtr,
- const char **versionEndPtr,
- const char **encodingName,
- const ENCODING **encoding,
- int *standalone)
-{
- return doParseXmlDecl(NS(findEncoding),
- isGeneralTextEntity,
- enc,
- ptr,
- end,
- badPtr,
- versionPtr,
- versionEndPtr,
- encodingName,
- encoding,
- standalone);
-}
-
-#endif /* XML_TOK_NS_C */
diff --git a/libcutl/cutl/details/export.hxx b/libcutl/cutl/details/export.hxx
deleted file mode 100644
index f9f764f..0000000
--- a/libcutl/cutl/details/export.hxx
+++ /dev/null
@@ -1,36 +0,0 @@
-// file : cutl/details/export.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_DETAILS_EXPORT_HXX
-#define CUTL_DETAILS_EXPORT_HXX
-
-#include <cutl/details/config.hxx>
-
-#ifdef LIBCUTL_STATIC_LIB
-# define LIBCUTL_EXPORT
-#else
-# ifdef _WIN32
-# ifdef _MSC_VER
-# ifdef LIBCUTL_DYNAMIC_LIB
-# define LIBCUTL_EXPORT __declspec(dllexport)
-# else
-# define LIBCUTL_EXPORT __declspec(dllimport)
-# endif
-# else
-# ifdef LIBCUTL_DYNAMIC_LIB
-# ifdef DLL_EXPORT
-# define LIBCUTL_EXPORT __declspec(dllexport)
-# else
-# define LIBCUTL_EXPORT
-# endif
-# else
-# define LIBCUTL_EXPORT __declspec(dllimport)
-# endif
-# endif
-# else
-# define LIBCUTL_EXPORT
-# endif
-#endif
-
-#endif // CUTL_DETAILS_EXPORT_HXX
diff --git a/libcutl/cutl/details/genx/LICENSE b/libcutl/cutl/details/genx/LICENSE
deleted file mode 100644
index 0248bdb..0000000
--- a/libcutl/cutl/details/genx/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2007-2013 Code Synthesis Tools CC.
-Copyright (c) Tim Bray and Sun Microsystems, 2004.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
diff --git a/libcutl/cutl/details/genx/README b/libcutl/cutl/details/genx/README
deleted file mode 100644
index 8735e62..0000000
--- a/libcutl/cutl/details/genx/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory contains a customized version of the Genx XML generator
-library for internal use by libcutl.
diff --git a/libcutl/cutl/details/genx/char-props.c b/libcutl/cutl/details/genx/char-props.c
deleted file mode 100644
index 66aaf97..0000000
--- a/libcutl/cutl/details/genx/char-props.c
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Copyright (c) 2007-2013 Code Synthesis Tools CC.
- * Copyright (c) 2004 by Tim Bray and Sun Microsystems.
- *
- * For copying permission, see the accompanying COPYING file.
- */
-
-/*
- * Construct character-properties tables for genx.
- * Quite likely there's a better way.
- * This version is generated semi-automatically from the source code of the
- * XML specification via emacs global replace and keyboard macros
- */
-#include <cutl/details/genx/genx.h>
-
-static void charProp(char * p, int c, int prop)
-{
- p[c] |= prop;
-}
-
-static void rangeProp(char * p, int start, int end, int prop)
-{
- int i;
- for (i = start; i <= end; i++)
- p[i] |= prop;
-}
-
-void genxSetCharProps(char * p)
-{
- int i;
-
- for (i = 0; i < GENX_CHAR_TABLE_SIZE; i++)
- p[i] = 0;
-
- /* per XML 1.0 */
- charProp(p, 0x9, GENX_XML_CHAR);
- charProp(p, 0xa, GENX_XML_CHAR);
- charProp(p, 0xd, GENX_XML_CHAR);
- rangeProp(p, 0x20, 0xff, GENX_XML_CHAR);
-
-#if GENX_CHAR_TABLE_SIZE == 0x10000
- rangeProp(p, 0x0100, 0xd7ff, GENX_XML_CHAR);
- rangeProp(p, 0xe000, 0xfffd, GENX_XML_CHAR);
-#endif
-
- /* Letter ::= BaseChar | Ideographic */
- rangeProp(p, 0x0041, 0x005A, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0061, 0x007A, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x00C0, 0x00D6, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x00D8, 0x00F6, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x00F8, 0x00FF, GENX_LETTER|GENX_NAMECHAR);
-
-#if GENX_CHAR_TABLE_SIZE == 0x10000
-
- rangeProp(p, 0x0100, 0x0131, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0134, 0x013E, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0141, 0x0148, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x014A, 0x017E, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0180, 0x01C3, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x01CD, 0x01F0, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x01F4, 0x01F5, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x01FA, 0x0217, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0250, 0x02A8, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x02BB, 0x02C1, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0386, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0388, 0x038A, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x038C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x038E, 0x03A1, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x03A3, 0x03CE, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x03D0, 0x03D6, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x03DA, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x03DC, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x03DE, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x03E0, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x03E2, 0x03F3, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0401, 0x040C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x040E, 0x044F, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0451, 0x045C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x045E, 0x0481, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0490, 0x04C4, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x04C7, 0x04C8, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x04CB, 0x04CC, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x04D0, 0x04EB, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x04EE, 0x04F5, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x04F8, 0x04F9, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0531, 0x0556, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0559, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0561, 0x0586, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x05D0, 0x05EA, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x05F0, 0x05F2, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0621, 0x063A, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0641, 0x064A, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0671, 0x06B7, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x06BA, 0x06BE, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x06C0, 0x06CE, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x06D0, 0x06D3, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x06D5, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x06E5, 0x06E6, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0905, 0x0939, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x093D, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0958, 0x0961, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0985, 0x098C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x098F, 0x0990, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0993, 0x09A8, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x09AA, 0x09B0, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x09B2, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x09B6, 0x09B9, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x09DC, 0x09DD, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x09DF, 0x09E1, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x09F0, 0x09F1, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A05, 0x0A0A, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A0F, 0x0A10, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A13, 0x0A28, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A2A, 0x0A30, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A32, 0x0A33, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A35, 0x0A36, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A38, 0x0A39, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A59, 0x0A5C, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0A5E, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A72, 0x0A74, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A85, 0x0A8B, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0A8D, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A8F, 0x0A91, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A93, 0x0AA8, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0AAA, 0x0AB0, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0AB2, 0x0AB3, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0AB5, 0x0AB9, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0ABD, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0AE0, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B05, 0x0B0C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B0F, 0x0B10, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B13, 0x0B28, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B2A, 0x0B30, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B32, 0x0B33, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B36, 0x0B39, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0B3D, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B5C, 0x0B5D, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B5F, 0x0B61, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B85, 0x0B8A, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B8E, 0x0B90, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B92, 0x0B95, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B99, 0x0B9A, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0B9C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B9E, 0x0B9F, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0BA3, 0x0BA4, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0BA8, 0x0BAA, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0BAE, 0x0BB5, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0BB7, 0x0BB9, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0C05, 0x0C0C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0C0E, 0x0C10, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0C12, 0x0C28, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0C2A, 0x0C33, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0C35, 0x0C39, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0C60, 0x0C61, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0C85, 0x0C8C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0C8E, 0x0C90, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0C92, 0x0CA8, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0CAA, 0x0CB3, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0CB5, 0x0CB9, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0CDE, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0CE0, 0x0CE1, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0D05, 0x0D0C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0D0E, 0x0D10, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0D12, 0x0D28, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0D2A, 0x0D39, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0D60, 0x0D61, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0E01, 0x0E2E, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0E30, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0E32, 0x0E33, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0E40, 0x0E45, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0E81, 0x0E82, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0E84, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0E87, 0x0E88, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0E8A, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0E8D, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0E94, 0x0E97, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0E99, 0x0E9F, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0EA1, 0x0EA3, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0EA5, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0EA7, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0EAA, 0x0EAB, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0EAD, 0x0EAE, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0EB0, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0EB2, 0x0EB3, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0EBD, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0EC0, 0x0EC4, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0F40, 0x0F47, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0F49, 0x0F69, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x10A0, 0x10C5, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x10D0, 0x10F6, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1100, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1102, 0x1103, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1105, 0x1107, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1109, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x110B, 0x110C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x110E, 0x1112, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x113C, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x113E, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1140, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x114C, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x114E, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1150, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1154, 0x1155, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1159, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x115F, 0x1161, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1163, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1165, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1167, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1169, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x116D, 0x116E, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1172, 0x1173, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1175, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x119E, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x11A8, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x11AB, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x11AE, 0x11AF, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x11B7, 0x11B8, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x11BA, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x11BC, 0x11C2, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x11EB, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x11F0, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x11F9, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1E00, 0x1E9B, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1EA0, 0x1EF9, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1F00, 0x1F15, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1F18, 0x1F1D, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1F20, 0x1F45, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1F48, 0x1F4D, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1F50, 0x1F57, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1F59, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1F5B, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1F5D, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1F5F, 0x1F7D, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1F80, 0x1FB4, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1FB6, 0x1FBC, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x1FBE, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1FC2, 0x1FC4, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1FC6, 0x1FCC, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1FD0, 0x1FD3, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1FD6, 0x1FDB, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1FE0, 0x1FEC, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1FF2, 0x1FF4, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x1FF6, 0x1FFC, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x2126, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x212A, 0x212B, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x212E, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x2180, 0x2182, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x3041, 0x3094, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x30A1, 0x30FA, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x3105, 0x312C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0xAC00, 0xD7A3, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x4E00, 0x9FA5, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x3007, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x3021, 0x3029, GENX_LETTER|GENX_NAMECHAR);
-
-#endif /* GENX_CHAR_TABLE_SIZE == 0x10000 */
-
- /*
- * NameChar ::=
- * Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
- */
-
- charProp(p, '.', GENX_NAMECHAR);
- charProp(p, '-', GENX_NAMECHAR);
- charProp(p, '_', GENX_NAMECHAR);
-
- rangeProp(p, 0x0030, 0x0039, GENX_NAMECHAR);
- charProp(p, 0x00B7, GENX_LETTER|GENX_NAMECHAR);
-
-#if GENX_CHAR_TABLE_SIZE == 0x10000
-
- rangeProp(p, 0x0660, 0x0669, GENX_NAMECHAR);
- rangeProp(p, 0x06F0, 0x06F9, GENX_NAMECHAR);
- rangeProp(p, 0x0966, 0x096F, GENX_NAMECHAR);
- rangeProp(p, 0x09E6, 0x09EF, GENX_NAMECHAR);
- rangeProp(p, 0x0A66, 0x0A6F, GENX_NAMECHAR);
- rangeProp(p, 0x0AE6, 0x0AEF, GENX_NAMECHAR);
- rangeProp(p, 0x0B66, 0x0B6F, GENX_NAMECHAR);
- rangeProp(p, 0x0BE7, 0x0BEF, GENX_NAMECHAR);
- rangeProp(p, 0x0C66, 0x0C6F, GENX_NAMECHAR);
- rangeProp(p, 0x0CE6, 0x0CEF, GENX_NAMECHAR);
- rangeProp(p, 0x0D66, 0x0D6F, GENX_NAMECHAR);
- rangeProp(p, 0x0E50, 0x0E59, GENX_NAMECHAR);
- rangeProp(p, 0x0ED0, 0x0ED9, GENX_NAMECHAR);
- rangeProp(p, 0x0F20, 0x0F29, GENX_NAMECHAR);
- rangeProp(p, 0x0300, 0x0345, GENX_NAMECHAR);
- rangeProp(p, 0x0360, 0x0361, GENX_NAMECHAR);
- rangeProp(p, 0x0483, 0x0486, GENX_NAMECHAR);
- rangeProp(p, 0x0591, 0x05A1, GENX_NAMECHAR);
- rangeProp(p, 0x05A3, 0x05B9, GENX_NAMECHAR);
- rangeProp(p, 0x05BB, 0x05BD, GENX_NAMECHAR);
- charProp(p, 0x05BF, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x05C1, 0x05C2, GENX_NAMECHAR);
- charProp(p, 0x05C4, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x064B, 0x0652, GENX_NAMECHAR);
- charProp(p, 0x0670, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x06D6, 0x06DC, GENX_NAMECHAR);
- rangeProp(p, 0x06DD, 0x06DF, GENX_NAMECHAR);
- rangeProp(p, 0x06E0, 0x06E4, GENX_NAMECHAR);
- rangeProp(p, 0x06E7, 0x06E8, GENX_NAMECHAR);
- rangeProp(p, 0x06EA, 0x06ED, GENX_NAMECHAR);
- rangeProp(p, 0x0901, 0x0903, GENX_NAMECHAR);
- charProp(p, 0x093C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x093E, 0x094C, GENX_NAMECHAR);
- charProp(p, 0x094D, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0951, 0x0954, GENX_NAMECHAR);
- rangeProp(p, 0x0962, 0x0963, GENX_NAMECHAR);
- rangeProp(p, 0x0981, 0x0983, GENX_NAMECHAR);
- charProp(p, 0x09BC, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x09BE, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x09BF, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x09C0, 0x09C4, GENX_NAMECHAR);
- rangeProp(p, 0x09C7, 0x09C8, GENX_NAMECHAR);
- rangeProp(p, 0x09CB, 0x09CD, GENX_NAMECHAR);
- charProp(p, 0x09D7, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x09E2, 0x09E3, GENX_NAMECHAR);
- charProp(p, 0x0A02, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0A3C, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0A3E, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0A3F, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0A40, 0x0A42, GENX_NAMECHAR);
- rangeProp(p, 0x0A47, 0x0A48, GENX_NAMECHAR);
- rangeProp(p, 0x0A4B, 0x0A4D, GENX_NAMECHAR);
- rangeProp(p, 0x0A70, 0x0A71, GENX_NAMECHAR);
- rangeProp(p, 0x0A81, 0x0A83, GENX_NAMECHAR);
- charProp(p, 0x0ABC, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0ABE, 0x0AC5, GENX_NAMECHAR);
- rangeProp(p, 0x0AC7, 0x0AC9, GENX_NAMECHAR);
- rangeProp(p, 0x0ACB, 0x0ACD, GENX_NAMECHAR);
- rangeProp(p, 0x0B01, 0x0B03, GENX_NAMECHAR);
- charProp(p, 0x0B3C, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0B3E, 0x0B43, GENX_NAMECHAR);
- rangeProp(p, 0x0B47, 0x0B48, GENX_NAMECHAR);
- rangeProp(p, 0x0B4B, 0x0B4D, GENX_NAMECHAR);
- rangeProp(p, 0x0B56, 0x0B57, GENX_NAMECHAR);
- rangeProp(p, 0x0B82, 0x0B83, GENX_NAMECHAR);
- rangeProp(p, 0x0BBE, 0x0BC2, GENX_NAMECHAR);
- rangeProp(p, 0x0BC6, 0x0BC8, GENX_NAMECHAR);
- rangeProp(p, 0x0BCA, 0x0BCD, GENX_NAMECHAR);
- charProp(p, 0x0BD7, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0C01, 0x0C03, GENX_NAMECHAR);
- rangeProp(p, 0x0C3E, 0x0C44, GENX_NAMECHAR);
- rangeProp(p, 0x0C46, 0x0C48, GENX_NAMECHAR);
- rangeProp(p, 0x0C4A, 0x0C4D, GENX_NAMECHAR);
- rangeProp(p, 0x0C55, 0x0C56, GENX_NAMECHAR);
- rangeProp(p, 0x0C82, 0x0C83, GENX_NAMECHAR);
- rangeProp(p, 0x0CBE, 0x0CC4, GENX_NAMECHAR);
- rangeProp(p, 0x0CC6, 0x0CC8, GENX_NAMECHAR);
- rangeProp(p, 0x0CCA, 0x0CCD, GENX_NAMECHAR);
- rangeProp(p, 0x0CD5, 0x0CD6, GENX_NAMECHAR);
- rangeProp(p, 0x0D02, 0x0D03, GENX_NAMECHAR);
- rangeProp(p, 0x0D3E, 0x0D43, GENX_NAMECHAR);
- rangeProp(p, 0x0D46, 0x0D48, GENX_NAMECHAR);
- rangeProp(p, 0x0D4A, 0x0D4D, GENX_NAMECHAR);
- charProp(p, 0x0D57, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0E31, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0E34, 0x0E3A, GENX_NAMECHAR);
- rangeProp(p, 0x0E47, 0x0E4E, GENX_NAMECHAR);
- charProp(p, 0x0EB1, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0EB4, 0x0EB9, GENX_NAMECHAR);
- rangeProp(p, 0x0EBB, 0x0EBC, GENX_NAMECHAR);
- rangeProp(p, 0x0EC8, 0x0ECD, GENX_NAMECHAR);
- rangeProp(p, 0x0F18, 0x0F19, GENX_NAMECHAR);
- charProp(p, 0x0F35, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0F37, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0F39, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0F3E, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0F3F, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0F71, 0x0F84, GENX_NAMECHAR);
- rangeProp(p, 0x0F86, 0x0F8B, GENX_NAMECHAR);
- rangeProp(p, 0x0F90, 0x0F95, GENX_NAMECHAR);
- charProp(p, 0x0F97, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x0F99, 0x0FAD, GENX_NAMECHAR);
- rangeProp(p, 0x0FB1, 0x0FB7, GENX_NAMECHAR);
- charProp(p, 0x0FB9, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x20D0, 0x20DC, GENX_NAMECHAR);
- charProp(p, 0x20E1, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x302A, 0x302F, GENX_NAMECHAR);
- charProp(p, 0x3099, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x309A, GENX_LETTER|GENX_NAMECHAR);
-
- charProp(p, 0x02D0, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x02D1, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0387, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0640, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0E46, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x0EC6, GENX_LETTER|GENX_NAMECHAR);
- charProp(p, 0x3005, GENX_LETTER|GENX_NAMECHAR);
- rangeProp(p, 0x3031, 0x3035, GENX_NAMECHAR);
- rangeProp(p, 0x309D, 0x309E, GENX_NAMECHAR);
- rangeProp(p, 0x30FC, 0x30FE, GENX_NAMECHAR);
-
-#endif /* GENX_CHAR_TABLE_SIZE == 0x10000 */
-}
-
diff --git a/libcutl/cutl/details/genx/genx.c b/libcutl/cutl/details/genx/genx.c
deleted file mode 100644
index 6ad55f0..0000000
--- a/libcutl/cutl/details/genx/genx.c
+++ /dev/null
@@ -1,2324 +0,0 @@
-/*
- * Copyright (c) 2007-2013 Code Synthesis Tools CC.
- * Copyright (c) 2004 by Tim Bray and Sun Microsystems.
- *
- * For copying permission, see the accompanying COPYING file.
- */
-
-#define GENX_VERSION "cs-1"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <cutl/details/genx/genx.h>
-
-#define Boolean int
-#define True 1
-#define False 0
-#define STRLEN_XMLNS_COLON 6
-
-
-/*******************************
- * writer state
- */
-typedef enum
-{
- SEQUENCE_NO_DOC,
- SEQUENCE_PRE_DOC,
- SEQUENCE_POST_DOC,
- SEQUENCE_START_TAG,
- SEQUENCE_ATTRIBUTES,
- SEQUENCE_START_ATTR,
- SEQUENCE_CONTENT
-} writerSequence;
-
-/*******************************
- * generic pointer list
- */
-typedef struct
-{
- genxWriter writer;
- int count;
- int space;
- void * * pointers;
-} plist;
-
-/*******************************
- * text collector, for attribute values
- */
-typedef struct
-{
- utf8 buf;
- int used;
- int space;
-} collector;
-
-/*******************************
- * Structs with opaquely-exposed handles
- */
-
-/*
- * This one's tricky, to handle stacking namespaces
- * 'declaration' is the current attribute which would be used to
- * declare the currently-effective prefix
- * 'defDeclaration' is a appropriate declaration when this is being
- * used with the default prefix as passed to genxDeclareNamespace
- * baroque is true if this namespace has been used with more than one
- * prefix, or is the default namespace but has been unset
- */
-struct genxNamespace_rec
-{
- genxWriter writer;
- utf8 name;
- int declCount;
- Boolean baroque;
- genxAttribute declaration;
- genxAttribute defaultDecl;
-};
-
-struct genxElement_rec
-{
- genxWriter writer;
- utf8 type;
- genxNamespace ns;
-};
-
-typedef enum
-{
- ATTR_NSDECL,
- ATTR_NAKED,
- ATTR_PREFIXED
-} attrType;
-
-struct genxAttribute_rec
-{
- genxWriter writer;
- utf8 name;
- genxNamespace ns;
- collector value;
- int provided; /* provided for current element? */
- attrType atype;
- genxAttribute next; /* Attribute order chain if not canonical. */
-};
-
-/*******************************
- * genx's sandbox
- */
-struct genxWriter_rec
-{
- genxSender * sender;
- genxStatus status;
- writerSequence sequence;
- char xmlChars[GENX_CHAR_TABLE_SIZE];
- void * userData;
- int nextPrefix;
- utf8 empty;
- Boolean defaultNsDeclared;
- genxAttribute xmlnsEquals;
- genxElement nowStarting;
- genxAttribute nowStartingAttr;
- plist namespaces;
- plist elements;
- plist attributes;
- plist prefixes;
- plist stack;
- struct genxAttribute_rec arec; /* Dummy attribute used for lookup. */
- char * etext[100];
- genxAlloc alloc;
- genxDealloc dealloc;
-
- /* Pretty-printing state */
- int ppIndent;
- int ppDepth;
- Boolean ppSimple;
-
- /* Canonicalization. */
- Boolean canonical;
-
- /* Attrbute order when not canonical. */
- genxAttribute firstAttribute;
- genxAttribute lastAttribute;
-};
-
-/*******************************
- * Forward declarations
- */
-static genxAttribute declareAttribute(genxWriter w, genxNamespace ns,
- constUtf8 name, constUtf8 valuestr,
- genxStatus * statusP);
-static genxStatus addNamespace(genxNamespace ns, constUtf8 prefix);
-static genxStatus unsetDefaultNamespace(genxWriter w);
-static genxStatus addAttribute(genxAttribute a, constUtf8 valuestr);
-void genxSetCharProps(char * p);
-
-/*******************************
- * End of declarations
- */
-
-/*******************************
- * private memory utilities
- */
-static void * allocate(genxWriter w, int bytes)
-{
- if (w->alloc)
- return (void *) (*w->alloc)(w->userData, bytes);
- else
- return (void *) malloc(bytes);
-}
-
-static void deallocate(genxWriter w, void * data)
-{
- if (w->dealloc)
- (*w->dealloc)(w->userData, data);
- else if (w->alloc == NULL)
- free(data);
-}
-
-static utf8 copy(genxWriter w, constUtf8 from)
-{
- utf8 temp;
-
- if ((temp = (utf8) allocate(w, strlen((const char *) from) + 1)) == NULL)
- return NULL;
- strcpy((char *) temp, (const char *) from);
- return temp;
-}
-
-static genxStatus initCollector(genxWriter w, collector * c)
-{
- c->space = 100;
- if ((c->buf = (utf8) allocate(w, c->space)) == NULL)
- return GENX_ALLOC_FAILED;
- c->used = 0;
- return GENX_SUCCESS;
-}
-
-static genxStatus growCollector(genxWriter w, collector * c, int size)
-{
- utf8 newSpace;
-
- c->space = size * 2;
- if ((newSpace = (utf8) allocate(w, c->space)) == NULL)
- return GENX_ALLOC_FAILED;
-
- strncpy((char *) newSpace, (const char *) c->buf, c->used);
- newSpace[c->used] = 0;
- deallocate(w, c->buf);
- c->buf = newSpace;
- return GENX_SUCCESS;
-}
-
-static void startCollect(collector * c)
-{
- c->used = 0;
-}
-static void endCollect(collector * c)
-{
- c->buf[c->used] = 0;
-}
-
-static genxStatus collectString(genxWriter w, collector * c, constUtf8 string)
-{
- int sl = strlen((const char *) string);
-
- if (sl >= c->space)
- if ((w->status = growCollector(w, c, sl)) != GENX_SUCCESS)
- return GENX_ALLOC_FAILED;
-
- strcpy((char *) c->buf, (const char *) string);
- return GENX_SUCCESS;
-}
-
-#define collectPiece(w,c,d,size) {if (((c)->used+(size))>=(c)->space){if (((w)->status=growCollector(w,c,(c)->used+(size)))!=GENX_SUCCESS) return (w)->status;}strncpy((char *)(c)->buf+(c)->used,d,size);(c)->used+=size;}
-
-/*******************************
- * private list utilities
- */
-static genxStatus initPlist(genxWriter w, plist * pl)
-{
- pl->writer = w;
- pl->count = 0;
- pl->space = 10;
- pl->pointers = (void * *) allocate(w, pl->space * sizeof(void *));
- if (pl->pointers == NULL)
- return GENX_ALLOC_FAILED;
-
- return GENX_SUCCESS;
-}
-
-/*
- * make room in a plist
- */
-static Boolean checkExpand(plist * pl)
-{
- void * * newlist;
- int i;
-
- if (pl->count < pl->space)
- return True;
-
- pl->space *= 2;
- newlist = (void * *) allocate(pl->writer, pl->space * sizeof(void *));
- if (newlist == NULL)
- return False;
- for (i = 0; i < pl->count; i++)
- newlist[i] = pl->pointers[i];
- deallocate(pl->writer, pl->pointers);
- pl->pointers = newlist;
-
- return True;
-}
-
-/*
- * stick something on the end of a plist
- */
-static genxStatus listAppend(plist * pl, void * pointer)
-{
- if (!checkExpand(pl))
- return GENX_ALLOC_FAILED;
-
- pl->pointers[pl->count++] = pointer;
- return GENX_SUCCESS;
-}
-
-/*
- * insert in place, shuffling up
- */
-static genxStatus listInsert(plist * pl, void * pointer, int at)
-{
- int i;
-
- if (!checkExpand(pl))
- return GENX_ALLOC_FAILED;
-
- for (i = pl->count; i > at; i--)
- pl->pointers[i] = pl->pointers[i - 1];
- pl->count++;
-
- pl->pointers[at] = pointer;
- return GENX_SUCCESS;
-}
-
-/*******************************
- * list lookups
- */
-
-static genxNamespace findNamespace(plist * pl, constUtf8 uri)
-{
- int i;
- genxNamespace * nn = (genxNamespace *) pl->pointers;
-
- for (i = 0; i < pl->count; i++)
- if (strcmp((char *) uri, (const char *) nn[i]->name) == 0)
- return nn[i];
-
- return NULL;
-}
-
-static genxElement findElement(plist * pl, constUtf8 xmlns, constUtf8 type)
-{
- int i;
- genxElement * ee = (genxElement *) pl->pointers;
-
- for (i = 0; i < pl->count; i++)
- {
- if (xmlns == NULL)
- {
- if (ee[i]->ns == NULL && strcmp((const char *) type,
- (const char *) ee[i]->type) == 0)
- return ee[i];
- }
- else
- {
- if (ee[i]->ns != NULL &&
- strcmp((const char *) xmlns, (const char *) ee[i]->ns->name) == 0 &&
- strcmp((const char *) type, (const char *) ee[i]->type) == 0)
- return ee[i];
- }
- }
-
- return NULL;
-}
-
-/*
- * store & intern a prefix, after giving it the
- * "xmlns:" prefix. Don't allow storing the same one twice unless 'force'
- * is set.
- */
-static utf8 storePrefix(genxWriter w, constUtf8 prefix, Boolean force)
-{
- int high, low;
- utf8 * pp = (utf8 *) w->prefixes.pointers;
- unsigned char buf[1024];
-
- if (prefix[0] == 0)
- prefix = (utf8) "xmlns";
- else
- {
- sprintf((char *) buf, "xmlns:%s", prefix);
- prefix = buf;
- }
-
- high = w->prefixes.count; low = -1;
- while (high - low > 1)
- {
- int probe = (high + low) / 2;
- if (strcmp((const char *) prefix, (const char *) pp[probe]) < 0)
- high = probe;
- else
- low = probe;
- }
-
- /* already there? */
- if (low != -1 && strcmp((const char *) prefix, (const char *) pp[low]) == 0)
- {
- if (force)
- return pp[low];
-
- w->status = GENX_DUPLICATE_PREFIX;
- return NULL;
- }
-
- /* copy & insert */
- if ((prefix = copy(w, prefix)) == NULL)
- {
- w->status = GENX_ALLOC_FAILED;
- return NULL;
- }
-
- w->status = listInsert(&w->prefixes, (void *) prefix, high);
- if (w->status != GENX_SUCCESS)
- return NULL;
-
- return (utf8) prefix;
-}
-
-/*******************************
- * UTF8 bit-banging
- */
-
-/*
- * Retrieve the character pointed at, and advance the pointer; return -1 on
- * error
- */
-int genxNextUnicodeChar(constUtf8 * sp)
-{
- utf8 s = (utf8) *sp;
- int c;
-
- if (*s == 0)
- return -1;
-
- if (*s < 0x80)
- c = *s++;
-
- /* all this encoding sanity-checking taken from section 3.10 of Unicode 4 */
- else if (*s < 0xc2)
- goto malformed;
-
- /* 2-byte encodings, first byte c2 .. df */
- else if (*s < 0xe0)
- {
- c = (*s++ & 0x1f) << 6;
-
- /*
- * for this common idiom, if ((c & 0xc0) != 0x80) is slightly faster
- * on MacOS (PPC)
- */
- if (*s < 0x80 || *s > 0xbf)
- goto malformed;
-
- c |= *s++ & 0x3f;
- }
-
- /* 3-byte encodings, first byte e0 .. ef */
- else if (*s < 0xf0)
- {
- int b0 = *s;
- c = (*s++ & 0x0f) << 12;
-
- if ((b0 == 0xe0 && (*s < 0xa0 || *s > 0xbf)) ||
- (b0 < 0xed && (*s < 0x80 || *s > 0xbf)) ||
- (b0 == 0xed && (*s < 0x80 || *s > 0x9f)) ||
- (b0 > 0xed && (*s < 0x80 || *s > 0xbf)))
- goto malformed;
-
- c |= (*s++ & 0x3f) << 6;
-
- if (*s < 0x80 || *s > 0xbf)
- goto malformed;
-
- c |= *s++ & 0x3f;
- }
-
- /* 4-byte encodings, first byte f0 .. f4 */
- else if (*s < 0xf5)
- {
- int b0 = *s;
- c = (*s++ & 0x07) << 18;
-
- if ((b0 == 0xf0 && (*s < 0x90 || *s > 0xbf)) ||
- (b0 < 0xf4 && (*s < 0x80 || *s > 0xbf)) ||
- (b0 >= 0xf4 && (*s < 0x80 || *s > 0x8f)))
- goto malformed;
-
- c |= (*s++ & 0x3f) << 12;
-
- if (*s < 0x80 || *s > 0xbf)
- goto malformed;
-
- c |= (*s++ & 0x3f) << 6;
-
- if (*s < 0x80 || *s > 0xbf)
- goto malformed;
-
- c |= *s++ & 0x3f;
- }
- else
- goto malformed;
-
- *sp = s;
- return c;
-
- /*
- * this is needed by scrubText, which wants to get the pointer moved
- * past the problem area.
- */
-malformed:
- if (*s)
- ++s;
- *sp = s;
- return -1;
-}
-
-static Boolean isXMLChar(genxWriter w, int c)
-{
- if (c < 0)
- return False;
- else if (c < GENX_CHAR_TABLE_SIZE)
- return (int) w->xmlChars[c];
- else
- return (c <= 0x10ffff);
-}
-
-static Boolean isLetter(genxWriter w, int c)
-{
- if (c < 0 || c > 0xffff)
- return False;
- else
- {
-#if GENX_CHAR_TABLE_SIZE == 0x10000
- return w->xmlChars[c] & GENX_LETTER;
-#else
- return c < GENX_CHAR_TABLE_SIZE ? (w->xmlChars[c] & GENX_LETTER) : True;
-#endif
- }
-}
-
-static Boolean isNameChar(genxWriter w, int c)
-{
- if (c < 0 || c > 0xffff)
- return False;
- else
- {
-#if GENX_CHAR_TABLE_SIZE == 0x10000
- return w->xmlChars[c] & GENX_NAMECHAR;
-#else
- return c < GENX_CHAR_TABLE_SIZE ? (w->xmlChars[c] & GENX_NAMECHAR) : True;
-#endif
- }
-}
-
-/*******************************
- * Constructors, setters/getters
- */
-
-/*
- * Construct a new genxWriter
- */
-genxWriter genxNew(genxAlloc alloc, genxDealloc dealloc, void * userData)
-{
- genxWriter w;
- genxNamespace xml;
-
- if (alloc)
- w = (genxWriter) (*alloc)(userData, sizeof(struct genxWriter_rec));
- else
- w = (genxWriter) malloc(sizeof(struct genxWriter_rec));
-
- if (w == NULL)
- return NULL;
-
- w->status = GENX_SUCCESS;
- w->alloc = alloc;
- w->dealloc = dealloc;
- w->userData = userData;
- w->sequence = SEQUENCE_NO_DOC;
-
- if (initPlist(w, &w->namespaces) != GENX_SUCCESS ||
- initPlist(w, &w->elements) != GENX_SUCCESS ||
- initPlist(w, &w->attributes) != GENX_SUCCESS ||
- initPlist(w, &w->prefixes) != GENX_SUCCESS ||
- initPlist(w, &w->stack) != GENX_SUCCESS)
- return NULL;
-
- if ((w->status = initCollector(w, &w->arec.value)) != GENX_SUCCESS)
- return NULL;
-
- if ((w->empty = copy(w, (utf8) "")) == NULL)
- {
- w->status = GENX_ALLOC_FAILED;
- return NULL;
- }
-
- w->xmlnsEquals = declareAttribute(w, NULL, (utf8) "xmlns", NULL, &w->status);
- if (w->xmlnsEquals == NULL || w->status != GENX_SUCCESS)
- return NULL;
- w->defaultNsDeclared = False;
-
- w->nextPrefix = 1;
-
- genxSetCharProps(w->xmlChars);
-
- w->etext[GENX_SUCCESS] = "success";
- w->etext[GENX_BAD_UTF8] = "invalid UTF-8";
- w->etext[GENX_NON_XML_CHARACTER] = "non-XML character";
- w->etext[GENX_BAD_NAME] = "invalid name";
- w->etext[GENX_ALLOC_FAILED] = "memory allocation failed";
- w->etext[GENX_BAD_NAMESPACE_NAME] = "invalid namespace name";
- w->etext[GENX_INTERNAL_ERROR] = "internal error";
- w->etext[GENX_DUPLICATE_PREFIX] = "duplicate prefix";
- w->etext[GENX_SEQUENCE_ERROR] = "call out of sequence";
- w->etext[GENX_NO_START_TAG] = "no start tag for end element call";
- w->etext[GENX_IO_ERROR] = "io error";
- w->etext[GENX_MISSING_VALUE] = "missing attribute value";
- w->etext[GENX_MALFORMED_COMMENT] = "malformed comment body";
- w->etext[GENX_MALFORMED_PI] = "?> in PI";
- w->etext[GENX_XML_PI_TARGET] = "target of PI matches [xX][mM][lL]";
- w->etext[GENX_DUPLICATE_ATTRIBUTE] = "duplicate attribute";
- w->etext[GENX_ATTRIBUTE_IN_DEFAULT_NAMESPACE] =
- "attribute is default namespace";
- w->etext[GENX_DUPLICATE_NAMESPACE] =
- "namespace declared twice with different prefixes";
- w->etext[GENX_BAD_DEFAULT_DECLARATION] =
- "default namespace declared on an element which is not in a namespace";
-
- /* the xml: namespace is pre-wired */
- xml = genxDeclareNamespace(w, (utf8) "http://www.w3.org/XML/1998/namespace",
- (utf8) "xml", &w->status);
- if (xml == NULL)
- return NULL;
- xml->declCount = 1;
- xml->declaration = xml->defaultDecl;
-
- w->ppIndent = 0; /* Pretty-printing is disabled by default. */
- w->canonical = False; /* No canonicalization by default. */
-
- w->firstAttribute = NULL;
- w->lastAttribute = NULL;
- return w;
-}
-
-genxStatus genxReset (genxWriter w)
-{
- int i;
-
- /* Clean up the stack. */
- w->stack.count = 0;
-
- /* Reset namespace declaration counts. The first entry is the pre-wired
- xml namespace. */
- ((genxNamespace) w->namespaces.pointers[0])->declCount = 1;
-
- for (i = 1; i < w->namespaces.count; i++)
- {
- ((genxNamespace) w->namespaces.pointers[i])->declCount = 0;
- ((genxNamespace) w->namespaces.pointers[i])->baroque = False;
- }
-
- /* Clear provided attributes. */
- for (i = 0; i < w->attributes.count; i++)
- ((genxAttribute) w->attributes.pointers[i])->provided = False;
-
- /* Clear attribute list. */
- if (!w->canonical)
- {
- while (w->firstAttribute != NULL)
- {
- genxAttribute t = w->firstAttribute->next;
- w->firstAttribute->next = NULL;
- w->firstAttribute = t;
- }
-
- w->lastAttribute = NULL;
- }
-
- w->status = GENX_SUCCESS;
- w->sequence = SEQUENCE_NO_DOC;
-
- return w->status;
-}
-
-
-/*
- * get/set userData
- */
-void genxSetUserData(genxWriter w, void * userData)
-{
- w->userData = userData;
-}
-void * genxGetUserData(genxWriter w)
-{
- return w->userData;
-}
-
-/*
- * get/set pretty-printing
- */
-genxStatus genxSetPrettyPrint(genxWriter w, int ind)
-{
- if (w->sequence == SEQUENCE_NO_DOC)
- w->ppIndent = ind;
- else
- w->status = GENX_SEQUENCE_ERROR;
-
- return w->status;
-}
-
-int genxGetPrettyPrint(genxWriter w)
-{
- return w->ppIndent;
-}
-
-/*
- * get/set canonicalization.
- */
-genxStatus genxSetCanonical(genxWriter w, int flag)
-{
- if (w->sequence == SEQUENCE_NO_DOC)
- w->canonical = flag;
- else
- w->status = GENX_SEQUENCE_ERROR;
-
- return w->status;
-}
-
-int genxGetCanonical(genxWriter w)
-{
- return w->canonical;
-}
-
-/*
- * get/set allocator
- */
-void genxSetAlloc(genxWriter w, genxAlloc alloc)
-{
- w->alloc = alloc;
-}
-
-void genxSetDealloc(genxWriter w, genxDealloc dealloc)
-{
- w->dealloc = dealloc;
-}
-
-genxAlloc genxGetAlloc(genxWriter w)
-{
- return w->alloc;
-}
-
-genxDealloc genxGetDealloc(genxWriter w)
-{
- return w->dealloc;
-}
-
-/*
- * Clean up
- */
-void genxDispose(genxWriter w)
-{
- int i;
- genxNamespace * nn = (genxNamespace *) w->namespaces.pointers;
- genxElement * ee = (genxElement *) w->elements.pointers;
- genxAttribute * aa = (genxAttribute *) w->attributes.pointers;
- utf8 * pp = (utf8 *) w->prefixes.pointers;
-
- for (i = 0; i < w->namespaces.count; i++)
- {
- deallocate(w, nn[i]->name);
- deallocate(w, nn[i]);
- }
-
- for (i = 0; i < w->elements.count; i++)
- {
- deallocate(w, ee[i]->type);
- deallocate(w, ee[i]);
- }
-
- for (i = 0; i < w->attributes.count; i++)
- {
- deallocate(w, aa[i]->name);
- deallocate(w, aa[i]->value.buf);
- deallocate(w, aa[i]);
- }
-
- for(i = 0; i < w->prefixes.count; i++)
- deallocate(w, pp[i]);
-
- deallocate(w, w->namespaces.pointers);
- deallocate(w, w->elements.pointers);
- deallocate(w, w->attributes.pointers);
- deallocate(w, w->prefixes.pointers);
- deallocate(w, w->stack.pointers);
-
- deallocate(w, w->arec.value.buf);
-
- deallocate(w, w->empty);
-
- /* how Oscar dealt with Igli */
- deallocate(w, w);
-}
-
-/*******************************
- * External utility routines
- */
-
-/*
- * scan a buffer and report problems with UTF-8 encoding or non-XML characters
- */
-genxStatus genxCheckText(genxWriter w, constUtf8 s)
-{
- while (*s)
- {
- int c = genxNextUnicodeChar(&s);
- if (c == -1)
- return GENX_BAD_UTF8;
-
- if (!isXMLChar(w, c))
- return GENX_NON_XML_CHARACTER;
- }
- return GENX_SUCCESS;
-}
-
-/*
- * Purify some text
- */
-int genxScrubText(genxWriter w, constUtf8 in, utf8 out)
-{
- int problems = 0;
- constUtf8 last = in;
-
- while (*in)
- {
- int c = genxNextUnicodeChar(&in);
- if (c == -1)
- {
- problems++;
- last = in;
- continue;
- }
-
- if (!isXMLChar(w, c))
- {
- problems++;
- last = in;
- continue;
- }
-
- while (last < in)
- *out++ = *last++;
- }
- *out = 0;
- return problems;
-}
-
-/*
- * check one character
- */
-int genxCharClass(genxWriter w, int c)
-{
- int ret = 0;
-
- if (isXMLChar(w, c))
- ret |= GENX_XML_CHAR;
- if (isNameChar(w, c))
- ret |= GENX_NAMECHAR;
- if (isLetter(w, c))
- ret |= GENX_LETTER;
- return ret;
-}
-
-static genxStatus checkNCName(genxWriter w, constUtf8 name)
-{
- int c;
-
- if (name == NULL || *name == 0)
- return GENX_BAD_NAME;
-
- c = genxNextUnicodeChar(&name);
- if (!isLetter(w, c) && c != ':' && c != '_')
- return GENX_BAD_NAME;
-
- while (*name)
- {
- c = genxNextUnicodeChar(&name);
- if (c == -1)
- return GENX_BAD_UTF8;
- if (!isNameChar(w, c))
- return GENX_BAD_NAME;
- }
- return GENX_SUCCESS;
-}
-
-char * genxGetErrorMessage(genxWriter w, genxStatus status)
-{
- return w->etext[status];
-}
-char * genxLastErrorMessage(genxWriter w)
-{
- return w->etext[w->status];
-}
-
-/*******************************
- * Declarations: namespace/element/attribute
- */
-
-/*
- * DeclareNamespace - by far the most complex routine in Genx
- */
-genxNamespace genxDeclareNamespace(genxWriter w, constUtf8 uri,
- constUtf8 defaultPref,
- genxStatus * statusP)
-{
- genxNamespace ns;
- genxAttribute defaultDecl;
- unsigned char newPrefix[100];
-
- if (uri == NULL || uri[0] == 0)
- {
- w->status = GENX_BAD_NAMESPACE_NAME;
- goto busted;
- }
-
- if ((w->status = genxCheckText(w, uri)) != GENX_SUCCESS)
- goto busted;
-
- /* if a prefix is provided, it has to be an NCname */
- if (defaultPref != NULL && defaultPref[0] != 0 &&
- (w->status = checkNCName(w, defaultPref)) != GENX_SUCCESS)
- goto busted;
-
- /* previously declared? */
- if ((ns = findNamespace(&w->namespaces, uri)))
- {
- /* just a lookup, really */
- if ((defaultPref == NULL) ||
- (defaultPref[0] == 0 && ns->defaultDecl == w->xmlnsEquals) ||
- (strcmp((const char *) ns->defaultDecl->name + STRLEN_XMLNS_COLON,
- (const char *) defaultPref) == 0))
- {
- w->status = *statusP = GENX_SUCCESS;
- return ns;
- }
- }
-
- /* wasn't already declared */
- else
- {
-
- /* make a default prefix if none provided */
- if (defaultPref == NULL)
- {
- sprintf((char *) newPrefix, "g%d", w->nextPrefix++);
- defaultPref = newPrefix;
- }
-
- ns = (genxNamespace) allocate(w, sizeof(struct genxNamespace_rec));
- if (ns == NULL)
- {
- w->status = GENX_ALLOC_FAILED;
- goto busted;
- }
- ns->writer = w;
- ns->baroque = False;
-
- if ((ns->name = copy(w, uri)) == NULL)
- {
- w->status = GENX_ALLOC_FAILED;
- goto busted;
- }
-
- if ((w->status = listAppend(&w->namespaces, ns)) != GENX_SUCCESS)
- goto busted;
- ns->defaultDecl = ns->declaration = NULL;
- ns->declCount = 0;
- }
-
- if (defaultPref[0] == 0)
- {
- if (w->defaultNsDeclared)
- {
- w->status = GENX_DUPLICATE_PREFIX;
- goto busted;
- }
- defaultDecl = w->xmlnsEquals;
- w->defaultNsDeclared = True;
- }
- else
- {
- /* this catches dupes too */
- if ((defaultPref = storePrefix(w, defaultPref, False)) == NULL)
- goto busted;
-
- defaultDecl = declareAttribute(w, NULL, defaultPref, ns->name, statusP);
- if (defaultDecl == NULL || *statusP != GENX_SUCCESS)
- {
- w->status = *statusP;
- return NULL;
- }
- }
-
- if (ns->defaultDecl != NULL && defaultDecl != ns->defaultDecl)
- ns->baroque = True;
- ns->defaultDecl = defaultDecl;
-
- *statusP = GENX_SUCCESS;
- return ns;
-
-busted:
- *statusP = w->status;
- return NULL;
-}
-
-/*
- * get namespace prefix
- */
-utf8 genxGetNamespacePrefix(genxNamespace ns)
-{
- if (ns->declaration == NULL)
- return NULL;
-
- if (ns->declaration == ns->writer->xmlnsEquals)
- return ns->writer->empty;
-
- return ns->declaration->name + STRLEN_XMLNS_COLON;
-}
-
-/*
- * DeclareElement - see genx.h for details
- */
-genxElement genxDeclareElement(genxWriter w,
- genxNamespace ns, constUtf8 type,
- genxStatus * statusP)
-{
- genxElement old;
- genxElement el;
-
- if ((w->status = checkNCName(w, type)) != GENX_SUCCESS)
- {
- *statusP = w->status;
- return NULL;
- }
-
- /* already declared? */
- old = findElement(&w->elements, (ns == NULL) ? NULL : ns->name, type);
- if (old)
- return old;
-
- if ((el = (genxElement) allocate(w, sizeof(struct genxElement_rec))) == NULL)
- {
- w->status = *statusP = GENX_ALLOC_FAILED;
- return NULL;
- }
-
- el->writer = w;
- el->ns = ns;
- if ((el->type = copy(w, type)) == NULL)
- {
- w->status = *statusP = GENX_ALLOC_FAILED;
- return NULL;
- }
-
- if ((w->status = listAppend(&w->elements, el)) != GENX_SUCCESS)
- {
- *statusP = w->status;
- return NULL;
- }
-
- *statusP = GENX_SUCCESS;
- return el;
-}
-
-/*
- * C14n ordering for attributes:
- * - first, namespace declarations by the prefix being declared
- * - second, unprefixed attributes by attr name
- * - third, prefixed attrs by ns uri then local part
- */
-static int orderAttributes(genxAttribute a1, genxAttribute a2)
-{
- if (a1->atype == a2->atype)
- {
- if (a1->atype == ATTR_PREFIXED && a1->ns != a2->ns)
- return strcmp((const char *) a1->ns->name, (const char *) a2->ns->name);
- else
- return strcmp((const char *) a1->name, (const char *) a2->name);
- }
-
- else if (a1->atype == ATTR_NSDECL)
- return -1;
-
- else if (a1->atype == ATTR_NAKED)
- {
- if (a2->atype == ATTR_NSDECL)
- return 1;
- else
- return -1;
- }
-
- else
- return 1;
-}
-
-/*
- * internal declare-attribute. This one allows colonized values for
- * names, so that you can declare xmlns:-type attributes
- */
-static genxAttribute declareAttribute(genxWriter w, genxNamespace ns,
- constUtf8 name, constUtf8 valuestr,
- genxStatus * statusP)
-{
- int high, low;
- genxAttribute * aa = (genxAttribute *) w->attributes.pointers;
- genxAttribute a;
-
- w->arec.ns = ns;
- w->arec.name = (utf8) name;
-
- if (ns)
- w->arec.atype = ATTR_PREFIXED;
- else if (strncmp((const char *) name, "xmlns", STRLEN_XMLNS_COLON - 1) == 0)
- w->arec.atype = ATTR_NSDECL;
- else
- w->arec.atype = ATTR_NAKED;
-
- if (ns && (ns->defaultDecl == w->xmlnsEquals))
- {
- w->status = GENX_ATTRIBUTE_IN_DEFAULT_NAMESPACE;
- goto busted;
- }
-
- /* attribute list has to be kept sorted per c14n rules */
- high = w->attributes.count; low = -1;
- while (high - low > 1)
- {
- int probe = (high + low) / 2;
- if (orderAttributes(&w->arec, aa[probe]) < 0)
- high = probe;
- else
- low = probe;
- }
-
- /* if it was already there */
- if (low != -1 && orderAttributes(&w->arec, aa[low]) == 0)
- return aa[low];
-
- /* not there, build it */
- a = (genxAttribute) allocate(w, sizeof(struct genxAttribute_rec));
- if (a == NULL)
- {
- w->status = GENX_ALLOC_FAILED;
- goto busted;
- }
-
- a->writer = w;
- a->ns = ns;
- a->provided = False;
- a->atype = w->arec.atype;
- a->next = NULL;
-
- if ((a->name = copy(w, name)) == NULL)
- {
- w->status = GENX_ALLOC_FAILED;
- goto busted;
- }
-
- if ((w->status = initCollector(w, &a->value)) != GENX_SUCCESS)
- goto busted;
-
- if (valuestr)
- if ((w->status = collectString(w, &a->value, valuestr)) != GENX_SUCCESS)
- goto busted;
-
- w->status = listInsert(&w->attributes, a, high);
- if (w->status != GENX_SUCCESS)
- goto busted;
-
- *statusP = GENX_SUCCESS;
- return a;
-
-busted:
- *statusP = w->status;
- return NULL;
-}
-
-/*
- * genxDeclareAttribute - see genx.h for details
- */
-genxAttribute genxDeclareAttribute(genxWriter w,
- genxNamespace ns, constUtf8 name,
- genxStatus * statusP)
-{
- if ((w->status = checkNCName(w, name)) != GENX_SUCCESS)
- {
- *statusP = w->status;
- return NULL;
- }
-
- return declareAttribute(w, ns, name, NULL, statusP);
-}
-
-/*******************************
- * I/O
- */
-static genxStatus sendx(genxWriter w, constUtf8 s)
-{
- if (w->sender)
- return (*w->sender->send)(w->userData, s);
- else
- return GENX_IO_ERROR;
-}
-
-static genxStatus sendxBounded(genxWriter w, constUtf8 start, constUtf8 end)
-{
- if (w->sender)
- return (*w->sender->sendBounded)(w->userData, start, end);
- else
- return GENX_IO_ERROR;
-}
-
-#define SendCheck(w,s) if ((w->status=sendx(w,(constUtf8)s))!=GENX_SUCCESS) return w->status
-
-/*******************************
- * XML writing routines. The semantics of the externally-facing ones are
- * written up in genx.h. Commentary here is implementation notes and
- * for internal routines.
- */
-
-genxStatus genxStartDocSender(genxWriter w, genxSender * sender)
-{
- if (w->sequence != SEQUENCE_NO_DOC)
- return w->status = GENX_SEQUENCE_ERROR;
-
- w->sequence = SEQUENCE_PRE_DOC;
- w->sender = sender;
-
- if (w->ppIndent)
- {
- w->ppSimple = True;
- w->ppDepth = 0;
- }
-
- return GENX_SUCCESS;
-}
-
-/*
- * Output new line and indentation.
- */
-static genxStatus writeIndentation(genxWriter w)
-{
- int i, n;
- SendCheck(w, "\n");
- n = w->ppDepth * w->ppIndent;
-
- for (i = 0; i < n; i++)
- SendCheck(w, " ");
-
- return w->status;
-}
-
-/*
- * Output attribute.
- */
-static genxStatus writeAttribute(genxAttribute a)
-{
- genxWriter w = a->writer;
-
- if (a->ns && a->ns->baroque && a->ns->declaration == w->xmlnsEquals)
- return w->status = GENX_ATTRIBUTE_IN_DEFAULT_NAMESPACE;
-
- SendCheck(w, " ");
-
- if (a->ns)
- {
- SendCheck(w, a->ns->declaration->name + STRLEN_XMLNS_COLON);
- SendCheck(w, ":");
- }
-
- SendCheck(w, a->name);
- SendCheck(w, "=\"");
- SendCheck(w, a->value.buf);
- SendCheck(w, "\"");
-
- return w->status;
-}
-
-/*
- * Write out the attributes we've been gathering up for an element. We save
- * them until we've gathered them all so they can be writen in canonical
- * order.
- * Also, we end the start-tag.
- * The trick here is that we keep the attribute list properly sorted as
- * we build it, then as each attribute is added, we fill in its value and
- * mark the fact that it's been added, in the "provided" field.
- */
-static genxStatus writeStartTag(genxWriter w, Boolean close)
-{
- int i;
- genxAttribute * aa = (genxAttribute *) w->attributes.pointers;
- genxElement e = w->nowStarting;
-
- /*
- * make sure the right namespace decls are in effect;
- * if they are these might create an error, so ignore it
- */
- if (e->ns)
- addNamespace(e->ns, NULL);
- else
- unsetDefaultNamespace(w);
- w->status = GENX_SUCCESS;
-
- if (w->ppIndent)
- {
- if (w->ppDepth)
- if (writeIndentation (w) != GENX_SUCCESS)
- return w->status;
-
- if (!close)
- {
- w->ppDepth++;
- w->ppSimple = True;
- }
- }
-
- SendCheck(w, "<");
- if (e->ns && (e->ns->declaration != w->xmlnsEquals))
- {
- SendCheck(w, e->ns->declaration->name + STRLEN_XMLNS_COLON);
- SendCheck(w, ":");
- }
- SendCheck(w, e->type);
-
- /* If we are canonicalizing, then write sorted attributes. Otherwise
- write them in the order specified. */
- if (w->canonical)
- {
- for (i = 0; i < w->attributes.count; i++)
- {
- if (aa[i]->provided)
- {
- if (writeAttribute (aa[i]) != GENX_SUCCESS)
- return w->status;
-
- aa[i]->provided = False;
- }
- }
- }
- else
- {
- /* Keep the chain consistent even if we bail out mid way because of
- an error. This way we will still be able to clear it in reset().*/
- while (w->firstAttribute != NULL)
- {
- genxAttribute t = w->firstAttribute->next;
-
- if (writeAttribute (w->firstAttribute) != GENX_SUCCESS)
- return w->status;
-
- w->firstAttribute->provided = False;
- w->firstAttribute->next = NULL;
- w->firstAttribute = t;
- }
-
- w->lastAttribute = NULL;
- }
-
- if (close)
- SendCheck(w, "/");
- SendCheck(w, ">");
- return GENX_SUCCESS;
-}
-
-/*
- * internal clear-er; no sequence checking
- */
-static genxStatus unsetDefaultNamespace(genxWriter w)
-{
- int i;
- Boolean found = False;
-
- /* don't put it in if not needed */
- i = w->stack.count - 1;
- while (found == False && i > 0)
- {
- while (w->stack.pointers[i] != NULL)
- {
- genxAttribute decl = (genxAttribute) w->stack.pointers[i--];
- genxNamespace ns = (genxNamespace) w->stack.pointers[i--];
-
- /* if already unset */
- if (ns == NULL)
- return w->status = GENX_SUCCESS;
-
- /*
- * the default namespace was declared. This namespace now
- * becomes baroque
- */
- if (decl == w->xmlnsEquals)
- {
- ns->baroque = True;
- found = True;
- break;
- }
- }
- i -= 2;
- }
-
- if (!found)
- return GENX_SUCCESS;
-
- /*
- * push a signal on the stack
- */
- if ((w->status = listAppend(&w->stack, NULL)) != GENX_SUCCESS)
- return w->status;
- w->status = listAppend(&w->stack, w->xmlnsEquals);
- if (w->status != GENX_SUCCESS)
- return w->status;
-
- /* add the xmlns= attribute, it must be the first one */
- return addAttribute(w->xmlnsEquals, w->empty);
-}
-
-/*
- * clear the default namespace declaration
- */
-genxStatus genxUnsetDefaultNamespace(genxWriter w)
-{
-
- /* can only do this while in start-tag mode */
- if (w->sequence != SEQUENCE_START_TAG)
- return w->status = GENX_SEQUENCE_ERROR;
-
- return unsetDefaultNamespace(w);
-}
-
-genxStatus genxStartElement(genxElement e)
-{
- genxWriter w = e->writer;
-
- switch (w->sequence)
- {
- case SEQUENCE_NO_DOC:
- case SEQUENCE_POST_DOC:
- case SEQUENCE_START_ATTR:
- return w->status = GENX_SEQUENCE_ERROR;
- case SEQUENCE_START_TAG:
- case SEQUENCE_ATTRIBUTES:
- if ((w->status = writeStartTag(w, False)) != GENX_SUCCESS)
- return w->status;
- break;
- case SEQUENCE_PRE_DOC:
- case SEQUENCE_CONTENT:
- break;
- }
-
- w->sequence = SEQUENCE_START_TAG;
-
- /*
- * push the stack. We push a NULL after a pointer to this element
- * because the stack will also contain pointers to the namespace
- * attributes that got declared here, so we can keep track of what's
- * in effect. I.e. a single stack entry consists logically of a pointer
- * to an element object, a NULL, then zero or more pairs of pointers to
- * namespace objects/declarations
- */
- if ((w->status = listAppend(&w->stack, e)) != GENX_SUCCESS)
- return w->status;
- if ((w->status = listAppend(&w->stack, NULL)) != GENX_SUCCESS)
- return w->status;
-
- w->nowStarting = e;
-
- return GENX_SUCCESS;
-}
-
-/*
- * internal namespace adder; no sequence checking
- */
-static genxStatus addNamespace(genxNamespace ns, constUtf8 prefix)
-{
- genxWriter w = ns->writer;
- genxAttribute decl;
- int i;
- genxElement e;
-
- /*
- * first, we'll find the declaring attribute
- */
- if (prefix == NULL)
- decl = ns->defaultDecl;
- else
- {
- if (prefix[0] == 0)
- decl = w->xmlnsEquals;
- else
- {
- if ((prefix = storePrefix(w, prefix, True)) == NULL)
- return w->status;
- decl = declareAttribute(w, NULL, prefix, ns->name, &w->status);
- if (decl == NULL || w->status != GENX_SUCCESS)
- return w->status;
- }
- }
-
- if (decl != ns->defaultDecl)
- ns->baroque = True;
-
- /*
- * avoid doing anything if this namespace is already declared. If
- * they've shown good taste we can do this cheaply
- */
- if (!ns->baroque)
- {
- if (ns->declCount > 0)
- return w->status = GENX_SUCCESS;
- }
- else
- {
-
- /*
- * First, we'll run all the way up the stack to see if there is
- * another declaration for this namespace/prefix in scope, in which
- * case it's a no-op; or, if there's another declaration for this
- * prefix on another namespace, in which case we have to over-ride
- */
- i = w->stack.count - 1;
- while (i > 0)
- {
- while (w->stack.pointers[i] != NULL)
- {
- genxAttribute otherDecl = (genxAttribute) w->stack.pointers[i--];
- genxNamespace otherNs = (genxNamespace) w->stack.pointers[i--];
-
- if (ns == otherNs)
- {
- if (decl == otherDecl)
- return w->status = GENX_SUCCESS;
- else
- {
- i = 0;
- break;
- }
- }
- else
- {
- /* different namespace, same prefix? */
- if (decl == otherDecl)
- {
- i = 0;
- break;
- }
- }
- }
- i -= 2;
- }
- }
-
- /*
- * If this namespace is already declared on
- * this element (with different prefix/decl) which is an error.
- */
- i = w->stack.count - 1;
- while (w->stack.pointers[i] != NULL)
- {
- genxNamespace otherNs;
- i--; /* don't need declaration */
- otherNs = (genxNamespace) w->stack.pointers[i--];
-
- if (ns == otherNs)
- return w->status = GENX_DUPLICATE_NAMESPACE;
- }
-
- /* move pointer from NULL to element */
- --i;
-
- /*
- * It's also an error if this is a default-namespace declaration and the
- * element is in no namespace.
- */
- e = (genxElement) w->stack.pointers[i];
- if (e->ns == NULL && decl == w->xmlnsEquals)
- return w->status = GENX_BAD_DEFAULT_DECLARATION;
-
- if ((w->status = listAppend(&w->stack, ns)) != GENX_SUCCESS)
- return w->status;
- if ((w->status = listAppend(&w->stack, decl)) != GENX_SUCCESS)
- return w->status;
-
- ns->declaration = decl;
- ns->declCount++;
- return addAttribute(decl, ns->name);
-}
-
-/*
- * Add a namespace declaration
- */
-genxStatus genxAddNamespace(genxNamespace ns, constUtf8 prefix)
-{
- if (ns->writer->sequence != SEQUENCE_START_TAG)
- return ns->writer->status = GENX_SEQUENCE_ERROR;
-
- return addNamespace(ns, prefix);
-}
-
-/*
- * Private attribute-adding code
- * most of the work here is normalizing the value, which is the same
- * as regular normalization except for " is replaced by "&quot;"
- */
-static genxStatus collectAttributeValue (genxWriter w, collector* value,
- constUtf8 start, constUtf8 end)
-{
- /* If end is NULL then the length of the value is unknown and
- the value is 0-terminated. */
-
- utf8 last = (utf8) start;
-
- while (end != NULL ? start < end : *start)
- {
- int c = genxNextUnicodeChar(&start);
-
- if (c == -1)
- return w->status = GENX_BAD_UTF8;
-
- if (!isXMLChar(w, c))
- return w->status = GENX_NON_XML_CHARACTER;
-
- switch(c)
- {
- case 9:
- collectPiece(w, value, "&#x9;", 5);
- break;
- case 0xa:
- collectPiece(w, value, "&#xA;", 5);
- break;
- case 0xd:
- collectPiece(w, value, "&#xD;", 5);
- break;
- case '"':
- collectPiece(w, value, "&quot;", 6);
- break;
- case '<':
- collectPiece(w, value, "&lt;", 4);
- break;
- case '&':
- collectPiece(w, value, "&amp;", 5);
- break;
- /*
- case '>':
- collectPiece(w, value, "&gt;", 4);
- break;
- */
- default:
- collectPiece(w, value, (const char *) last, start - last);
- break;
- }
- last = (utf8) start;
- }
-
- return GENX_SUCCESS;
-}
-
-static genxStatus addAttribute(genxAttribute a, constUtf8 valuestr)
-{
- genxWriter w = a->writer;
-
- /* if valuestr not provided, this is an xmlns with a pre-cooked value */
- if (valuestr)
- {
- startCollect(&a->value);
-
- if (collectAttributeValue (w, &a->value, valuestr, NULL) != GENX_SUCCESS)
- return w->status;
-
- endCollect(&a->value);
- }
-
- /* now add the namespace attribute; might fail if it's been hand-declared */
- if (a->ns)
- addNamespace(a->ns, NULL);
-
- if (valuestr && a->provided)
- return w->status = GENX_DUPLICATE_ATTRIBUTE;
-
- a->provided = True;
-
- /* Add the attribute to the ordered list if not canonical. */
- if (!w->canonical)
- {
- if (w->lastAttribute != NULL)
- w->lastAttribute = w->lastAttribute->next = a;
- else
- w->lastAttribute = w->firstAttribute = a;
- }
-
- return GENX_SUCCESS;
-}
-
-/*
- * public attribute adder.
- * The only difference is that it doesn't allow a NULL value
- */
-genxStatus genxAddAttribute(genxAttribute a, constUtf8 valuestr)
-{
- if (a->writer->sequence != SEQUENCE_START_TAG &&
- a->writer->sequence != SEQUENCE_ATTRIBUTES)
- return a->writer->status = GENX_SEQUENCE_ERROR;
- a->writer->sequence = SEQUENCE_ATTRIBUTES;
-
- if (valuestr == NULL)
- return a->writer->status = GENX_MISSING_VALUE;
-
- return addAttribute(a, valuestr);
-}
-
-genxStatus genxStartAttribute(genxAttribute a)
-{
- genxWriter w = a->writer;
-
- if (w->sequence != SEQUENCE_START_TAG &&
- w->sequence != SEQUENCE_ATTRIBUTES)
- return w->status = GENX_SEQUENCE_ERROR;
-
- w->sequence = SEQUENCE_START_ATTR;
- w->nowStartingAttr = a;
-
- startCollect(&a->value);
-
- return GENX_SUCCESS;
-}
-
-genxStatus genxEndAttribute(genxWriter w)
-{
- genxAttribute a;
-
- if (w->sequence != SEQUENCE_START_ATTR)
- return w->status = GENX_SEQUENCE_ERROR;
-
- a = w->nowStartingAttr;
- w->sequence = SEQUENCE_ATTRIBUTES;
-
- endCollect(&a->value);
-
- /* now add the namespace attribute; might fail if it's been hand-declared */
- if (a->ns)
- addNamespace(a->ns, NULL);
-
- if (a->provided)
- return w->status = GENX_DUPLICATE_ATTRIBUTE;
-
- a->provided = True;
-
- /* Add the attribute to the ordered list if not canonical. */
- if (!w->canonical)
- {
- if (w->lastAttribute != NULL)
- w->lastAttribute = w->lastAttribute->next = a;
- else
- w->lastAttribute = w->firstAttribute = a;
- }
-
- return GENX_SUCCESS;
-}
-
-genxStatus genxEndElement(genxWriter w)
-{
- int i;
- Boolean close = True;
-
- switch (w->sequence)
- {
- case SEQUENCE_NO_DOC:
- case SEQUENCE_PRE_DOC:
- case SEQUENCE_POST_DOC:
- case SEQUENCE_START_ATTR:
- return w->status = GENX_SEQUENCE_ERROR;
- case SEQUENCE_START_TAG:
- case SEQUENCE_ATTRIBUTES:
- if ((w->status = writeStartTag(w, !w->canonical)) != GENX_SUCCESS)
- return w->status;
- close = w->canonical;
- break;
- case SEQUENCE_CONTENT:
- break;
- }
-
- /*
- * Output the closing tag.
- */
- if (close)
- {
- genxElement e;
-
- /*
- * first peek into the stack to find the right namespace declaration
- * (if any) so we can properly prefix the end-tag. Have to do this
- * before unwinding the stack because that might reset some xmlns
- * prefixes to the context in the parent element
- */
- for (i = w->stack.count - 1; w->stack.pointers[i] != NULL; i -= 2)
- ;
- e = (genxElement) w->stack.pointers[--i];
-
- if (w->ppIndent)
- {
- w->ppDepth--;
-
- if (!w->ppSimple)
- if (writeIndentation (w) != GENX_SUCCESS)
- return w->status;
- }
-
- SendCheck(w, "</");
- if (e->ns && e->ns->declaration != w->xmlnsEquals)
- {
- SendCheck(w, e->ns->declaration->name + STRLEN_XMLNS_COLON);
- SendCheck(w, ":");
- }
- SendCheck(w, e->type);
- SendCheck(w, ">");
- }
-
- if (w->ppIndent)
- w->ppSimple = False;
-
- /*
- * pop zero or more namespace declarations, then a null, then the
- * start-element declaration off the stack
- */
- w->stack.count--;
- while (w->stack.pointers[w->stack.count] != NULL)
- {
- genxNamespace ns = (genxNamespace) w->stack.pointers[--w->stack.count];
- w->stack.count--; /* don't need decl */
-
- /* if not a fake unset-default namespace */
- if (ns)
- {
- /*
- * if they've stupidly jammed in their own namespace-prefix
- * declarations, we have to go looking to see if there's another
- * one in effect
- */
- if (ns->baroque)
- {
- i = w->stack.count;
- while (i > 0)
- {
- while (w->stack.pointers[i] != NULL)
- {
- genxAttribute otherDecl = (genxAttribute) w->stack.pointers[i--];
- genxNamespace otherNs = (genxNamespace) w->stack.pointers[i--];
-
- if (otherNs == ns)
- {
- ns->declaration = otherDecl;
- i = 0;
- break;
- }
- }
-
- /* skip NULL & element */
- i -= 2;
- }
- }
- ns->declCount--;
- if (ns->declCount == 0)
- ns->baroque = False;
- }
- }
-
- /* pop the NULL */
- --w->stack.count;
- if (w->stack.count < 0)
- return w->status = GENX_NO_START_TAG;
-
- if (w->stack.count == 0)
- w->sequence = SEQUENCE_POST_DOC;
- else
- w->sequence = SEQUENCE_CONTENT;
-
- return GENX_SUCCESS;
-}
-
-/*
- * Internal character-adder. It tries to keep the number of sendx()
- * calls down by looking at each character but only doing the output
- * when it has to escape something; ordinary text gets saved up in
- * chunks the start of which is indicated by *breaker.
- * c is the character, next points to the UTF8 representing the next
- * lastsP indirectly points to the UTF8 representing the
- * character, breakerP* indirectly points to the last place genx
- * changed the UTF8, e.g. by escaping a '<'
- */
-static genxStatus addChar(genxWriter w, int c, constUtf8 next,
- constUtf8 * lastsP, constUtf8 * breakerP)
-{
- if (c == -1)
- return GENX_BAD_UTF8;
-
- if (!isXMLChar(w, c))
- return GENX_NON_XML_CHARACTER;
-
- switch(c)
- {
- case 0xd:
- if ((w->status = sendxBounded(w, *breakerP, *lastsP)) != GENX_SUCCESS)
- return w->status;
- *breakerP = next;
- sendx(w, (utf8) "&#xD;");
- break;
- case '<':
- if ((w->status = sendxBounded(w, *breakerP, *lastsP)) != GENX_SUCCESS)
- return w->status;
- *breakerP = next;
- sendx(w, (utf8) "&lt;");
- break;
- case '&':
- if ((w->status = sendxBounded(w, *breakerP, *lastsP)) != GENX_SUCCESS)
- return w->status;
- *breakerP = next;
- sendx(w, (utf8) "&amp;");
- break;
- case '>':
- if ((w->status = sendxBounded(w, *breakerP, *lastsP)) != GENX_SUCCESS)
- return w->status;
- *breakerP = next;
- sendx(w, (utf8) "&gt;");
- break;
- default:
- break;
- }
- *lastsP = next;
- return GENX_SUCCESS;
-}
-
-genxStatus genxAddText(genxWriter w, constUtf8 start)
-{
- constUtf8 lasts = start;
- constUtf8 breaker = start;
-
- if (w->sequence == SEQUENCE_START_TAG ||
- w->sequence == SEQUENCE_ATTRIBUTES)
- {
- if ((w->status = writeStartTag(w, False)) != GENX_SUCCESS)
- return w->status;
- w->sequence = SEQUENCE_CONTENT;
- }
-
- if (w->sequence == SEQUENCE_CONTENT)
- {
- while (*start)
- {
- int c = genxNextUnicodeChar(&start);
-
- w->status = addChar(w, c, start, &lasts, &breaker);
- if (w->status != GENX_SUCCESS)
- return w->status;
- }
- return sendxBounded(w, breaker, (utf8) start);
- }
- else if (w->sequence == SEQUENCE_START_ATTR)
- {
- return collectAttributeValue (w, &w->nowStartingAttr->value, start, NULL);
- }
- else
- return w->status = GENX_SEQUENCE_ERROR;
-}
-
-genxStatus genxAddBoundedText(genxWriter w, constUtf8 start, constUtf8 end)
-{
- constUtf8 lasts = start;
- constUtf8 breaker = start;
-
- if (w->sequence == SEQUENCE_START_TAG ||
- w->sequence == SEQUENCE_ATTRIBUTES)
- {
- if ((w->status = writeStartTag(w, False)) != GENX_SUCCESS)
- return w->status;
- w->sequence = SEQUENCE_CONTENT;
- }
-
- if (w->sequence == SEQUENCE_CONTENT)
- {
- while (start < end)
- {
- int c = genxNextUnicodeChar(&start);
-
- w->status = addChar(w, c, (utf8) start, &lasts, &breaker);
- if (w->status != GENX_SUCCESS)
- return w->status;
- }
- return sendxBounded(w, breaker, (utf8) start);
- }
- else if (w->sequence == SEQUENCE_START_ATTR)
- {
- return collectAttributeValue (w, &w->nowStartingAttr->value, start, end);
- }
- else
- return w->status = GENX_SEQUENCE_ERROR;
-}
-
-genxStatus genxAddCountedText(genxWriter w, constUtf8 start, int byteCount)
-{
- utf8 end = (utf8) (start + byteCount);
-
- return genxAddBoundedText(w, start, end);
-}
-
-genxStatus genxAddCharacter(genxWriter w, int c)
-{
- unsigned char cUTF8[10];
- utf8 lasts, breaker, next;
-
- if (w->sequence == SEQUENCE_START_TAG ||
- w->sequence == SEQUENCE_ATTRIBUTES)
- {
- if ((w->status = writeStartTag(w, False)) != GENX_SUCCESS)
- return w->status;
- w->sequence = SEQUENCE_CONTENT;
- }
-
- if (!isXMLChar(w, c))
- return w->status = GENX_NON_XML_CHARACTER;
-
- if (w->sequence == SEQUENCE_START_ATTR)
- {
- int done = 1;
- collector* value = &w->nowStartingAttr->value;
-
- switch(c)
- {
- case 9:
- collectPiece(w, value, "&#x9;", 5);
- break;
- case 0xa:
- collectPiece(w, value, "&#xA;", 5);
- break;
- case 0xd:
- collectPiece(w, value, "&#xD;", 5);
- break;
- case '"':
- collectPiece(w, value, "&quot;", 6);
- break;
- case '<':
- collectPiece(w, value, "&lt;", 4);
- break;
- case '&':
- collectPiece(w, value, "&amp;", 5);
- break;
- /*
- case '>':
- collectPiece(w, value, "&gt;", 4);
- break;
- */
- default:
- done = 0;
- break;
- }
-
- if (done)
- return GENX_SUCCESS;
- }
-
- /* make UTF8 representation of character */
- lasts = breaker = next = cUTF8;
-
- if (c < 0x80)
- *next++ = c;
- else if (c < 0x800)
- {
- *next++ = 0xc0 | (c >> 6);
- *next++ = 0x80 | (c & 0x3f);
- }
- else if (c < 0x10000)
- {
- *next++ = 0xe0 | (c >> 12);
- *next++ = 0x80 | ((c & 0xfc0) >> 6);
- *next++ = 0x80 | (c & 0x3f);
- }
- else
- {
- *next++ = 0xf0 | (c >> 18);
- *next++ = 0x80 | ((c & 0x3f000) >> 12);
- *next++ = 0x80 | ((c & 0xfc0) >> 6);
- *next++ = 0x80 | (c & 0x3f);
- }
- *next = 0;
-
- if (w->sequence == SEQUENCE_CONTENT)
- {
- w->status =
- addChar(w, c, next, (constUtf8 *) &lasts, (constUtf8 *) &breaker);
-
- if (w->status != GENX_SUCCESS)
- return w->status;
-
- return sendxBounded(w, breaker, next);
- }
- else if (w->sequence == SEQUENCE_START_ATTR)
- {
- collectPiece(w, &w->nowStartingAttr->value,
- (const char *) cUTF8, next - cUTF8);
- return GENX_SUCCESS;
- }
- else
- return w->status = GENX_SEQUENCE_ERROR;
-}
-
-genxStatus genxEndDocument(genxWriter w)
-{
- if (w->sequence != SEQUENCE_POST_DOC)
- return w->status = GENX_SEQUENCE_ERROR;
-
- /* Write a newline after the closing tag. */
- SendCheck (w, "\n");
-
- if ((w->status = (*w->sender->flush)(w->userData)) != GENX_SUCCESS)
- return w->status;
-
- w->sequence = SEQUENCE_NO_DOC;
- return GENX_SUCCESS;
-}
-
-genxStatus genxXmlDeclaration(genxWriter w,
- constUtf8 ver,
- constUtf8 enc,
- constUtf8 stl)
-{
- if (w->sequence != SEQUENCE_PRE_DOC)
- return w->status = GENX_SEQUENCE_ERROR;
-
- if ((w->status = genxCheckText(w, ver)) != GENX_SUCCESS)
- return w->status;
-
- if (enc != NULL && (w->status = genxCheckText(w, enc)) != GENX_SUCCESS)
- return w->status;
-
- if (stl != NULL && (w->status = genxCheckText(w, stl)) != GENX_SUCCESS)
- return w->status;
-
- SendCheck (w, "<?xml version=\"");
- SendCheck (w, ver);
-
- if (enc != NULL)
- {
- SendCheck (w, "\" encoding=\"");
- SendCheck (w, enc);
- }
-
- if (stl != NULL)
- {
- SendCheck (w, "\" standalone=\"");
- SendCheck (w, stl);
- }
-
- SendCheck (w, "\" ?>\n");
-
- return GENX_SUCCESS;
-}
-
-genxStatus genxComment(genxWriter w, constUtf8 text)
-{
- int i;
-
- if (w->sequence == SEQUENCE_NO_DOC ||
- w->sequence == SEQUENCE_START_ATTR)
- return w->status = GENX_SEQUENCE_ERROR;
-
- if ((w->status = genxCheckText(w, text)) != GENX_SUCCESS)
- return w->status;
-
- /* no leading '-', no trailing '-', no '--' */
- if (text[0] == '-')
- return w->status = GENX_MALFORMED_COMMENT;
- for (i = 0; text[i]; i++)
- if (text[i] == '-' && (text[i + 1] == '-' || text[i + 1] == 0))
- return w->status = GENX_MALFORMED_COMMENT;
-
- if (w->sequence == SEQUENCE_START_TAG ||
- w->sequence == SEQUENCE_ATTRIBUTES)
- {
- if ((w->status = writeStartTag(w, False)) != GENX_SUCCESS)
- return w->status;
- w->sequence = SEQUENCE_CONTENT;
- }
-
- else if (w->sequence == SEQUENCE_POST_DOC)
- if ((w->status = sendx(w, (utf8) "\n")) != GENX_SUCCESS)
- return w->status;
-
- if ((w->status = sendx(w, (utf8) "<!--")) != GENX_SUCCESS)
- return w->status;
- if ((w->status = sendx(w, (utf8) text)) != GENX_SUCCESS)
- return w->status;
- if ((w->status = sendx(w, (utf8) "-->")) != GENX_SUCCESS)
- return w->status;
-
- if (w->sequence == SEQUENCE_PRE_DOC)
- if ((w->status = sendx(w, (utf8) "\n")) != GENX_SUCCESS)
- return w->status;
-
- return GENX_SUCCESS;
-}
-
-genxStatus genxPI(genxWriter w, constUtf8 target, constUtf8 text)
-{
- int i;
-
- if (w->sequence == SEQUENCE_NO_DOC ||
- w->sequence == SEQUENCE_START_ATTR)
- return w->status = GENX_SEQUENCE_ERROR;
-
- if ((w->status = genxCheckText(w, target)) != GENX_SUCCESS)
- return w->status;
- if ((w->status = checkNCName(w, target)) != GENX_SUCCESS)
- return w->status;
- if ((strlen((const char *) target) >= 3) &&
- (target[0] == 'x' || target[0] == 'X') &&
- (target[1] == 'm' || target[1] == 'M') &&
- (target[2] == 'l' || target[2] == 'L') &&
- (target[3] == 0))
- return w->status = GENX_XML_PI_TARGET;
-
- if ((w->status = genxCheckText(w, text)) != GENX_SUCCESS)
- return w->status;
-
- /* no ?> within */
- for (i = 1; text[i]; i++)
- if (text[i] == '>' && text[i - 1] == '?')
- return w->status = GENX_MALFORMED_PI;
-
- if (w->sequence == SEQUENCE_START_TAG ||
- w->sequence == SEQUENCE_ATTRIBUTES)
- {
- if ((w->status = writeStartTag(w, False)) != GENX_SUCCESS)
- return w->status;
- w->sequence = SEQUENCE_CONTENT;
- }
-
- else if (w->sequence == SEQUENCE_POST_DOC)
- if ((w->status = sendx(w, (utf8) "\n")) != GENX_SUCCESS)
- return w->status;
-
- if ((w->status = sendx(w, (utf8) "<?")) != GENX_SUCCESS)
- return w->status;
- if ((w->status = sendx(w, target)) != GENX_SUCCESS)
- return w->status;
- if (text[0])
- {
- if ((w->status = sendx(w, (utf8) " ")) != GENX_SUCCESS)
- return w->status;
- if ((w->status = sendx(w, text)) != GENX_SUCCESS)
- return w->status;
- }
- if ((w->status = sendx(w, (utf8) "?>")) != GENX_SUCCESS)
- return w->status;
-
- if (w->sequence == SEQUENCE_PRE_DOC)
- if ((w->status = sendx(w, (utf8) "\n")) != GENX_SUCCESS)
- return w->status;
-
- return GENX_SUCCESS;
-}
-
-/*******************************
- * Literal versions of the writing routines
- */
-genxStatus genxStartElementLiteral(genxWriter w,
- constUtf8 xmlns, constUtf8 type)
-{
- genxNamespace ns = NULL;
- genxElement e;
-
- if (xmlns)
- {
- ns = genxDeclareNamespace(w, xmlns, NULL, &w->status);
- if (ns == NULL || w->status != GENX_SUCCESS)
- return w->status;
- }
- e = genxDeclareElement(w, ns, type, &w->status);
- if (e == NULL || w->status != GENX_SUCCESS)
- return w->status;
-
- return genxStartElement(e);
-}
-
-genxStatus genxAddAttributeLiteral(genxWriter w, constUtf8 xmlns,
- constUtf8 name, constUtf8 value)
-{
- genxNamespace ns = NULL;
- genxAttribute a;
-
- if (xmlns)
- {
- ns = genxDeclareNamespace(w, xmlns, NULL, &w->status);
- if (ns == NULL && w->status != GENX_SUCCESS)
- return w->status;
- }
-
- a = genxDeclareAttribute(w, ns, name, &w->status);
- if (a == NULL || w->status != GENX_SUCCESS)
- return w->status;
-
- return genxAddAttribute(a, value);
-}
-
-genxStatus genxStartAttributeLiteral(genxWriter w,
- constUtf8 xmlns, constUtf8 name)
-{
- genxNamespace ns = NULL;
- genxAttribute a;
-
- if (xmlns)
- {
- ns = genxDeclareNamespace(w, xmlns, NULL, &w->status);
- if (ns == NULL && w->status != GENX_SUCCESS)
- return w->status;
- }
-
- a = genxDeclareAttribute(w, ns, name, &w->status);
- if (a == NULL || w->status != GENX_SUCCESS)
- return w->status;
-
- return genxStartAttribute(a);
-}
-
-genxStatus genxAddNamespaceLiteral(genxWriter w,
- constUtf8 uri, constUtf8 prefix)
-{
- genxNamespace ns = genxDeclareNamespace(w, uri, prefix, &w->status);
- if (ns == NULL && w->status != GENX_SUCCESS)
- return w->status;
-
- return genxAddNamespace(ns, NULL);
-}
-
-/*
- * return version
- */
-char * genxGetVersion()
-{
- return GENX_VERSION;
-}
diff --git a/libcutl/cutl/details/genx/genx.h b/libcutl/cutl/details/genx/genx.h
deleted file mode 100644
index d41c4d0..0000000
--- a/libcutl/cutl/details/genx/genx.h
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * genx - C-callable library for generating XML documents
- */
-
-/*
- * Copyright (c) 2007-2013 Code Synthesis Tools CC.
- * Copyright (c) 2004 by Tim Bray and Sun Microsystems.
- *
- * For copying permission, see the accompanying COPYING file.
- */
-
-#ifndef GENX_H
-#define GENX_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Note on error handling: genx routines mostly return
- * GENX_SUCCESS (guaranteed to be zero) in normal circumstances, one of
- * these other GENX_ values on a memory allocation or I/O failure or if the
- * call would result in non-well-formed output.
- * You can associate an error message with one of these codes explicitly
- * or with the most recent error using genxGetErrorMessage() and
- * genxLastErrorMessage(); see below.
- */
-typedef enum
-{
- GENX_SUCCESS = 0,
- GENX_BAD_UTF8,
- GENX_NON_XML_CHARACTER,
- GENX_BAD_NAME,
- GENX_ALLOC_FAILED,
- GENX_BAD_NAMESPACE_NAME,
- GENX_INTERNAL_ERROR,
- GENX_DUPLICATE_PREFIX,
- GENX_SEQUENCE_ERROR,
- GENX_NO_START_TAG,
- GENX_IO_ERROR,
- GENX_MISSING_VALUE,
- GENX_MALFORMED_COMMENT,
- GENX_XML_PI_TARGET,
- GENX_MALFORMED_PI,
- GENX_DUPLICATE_ATTRIBUTE,
- GENX_ATTRIBUTE_IN_DEFAULT_NAMESPACE,
- GENX_DUPLICATE_NAMESPACE,
- GENX_BAD_DEFAULT_DECLARATION
-} genxStatus;
-
-/* character types */
-#define GENX_XML_CHAR 1
-#define GENX_LETTER 2
-#define GENX_NAMECHAR 4
-
-/* The size of the character table. Valid values are 0x100 (first 255
- chars are checked) and 0x10000 (all chars are checked). */
-#ifndef GENX_CHAR_TABLE_SIZE
-# define GENX_CHAR_TABLE_SIZE 0x100
-#endif
-
-/* a UTF-8 string */
-typedef unsigned char * utf8;
-typedef const unsigned char * constUtf8;
-
-/*
- * genx's own types
- */
-typedef struct genxWriter_rec * genxWriter;
-typedef struct genxNamespace_rec * genxNamespace;
-typedef struct genxElement_rec * genxElement;
-typedef struct genxAttribute_rec * genxAttribute;
-
-typedef void * (*genxAlloc) (void * userData, int bytes);
-typedef void (*genxDealloc) (void * userData, void* data);
-
-/*
- * Constructors, set/get
- */
-
-/*
- * Create a new writer. For generating multiple XML documents, it's most
- * efficient to re-use the same genx object. However, you can only write
- * one document at a time with a writer.
- * Returns NULL if it fails, which can only be due to an allocation failure.
- */
-genxWriter genxNew(genxAlloc alloc, genxDealloc dealloc, void * userData);
-
-/*
- * Reset the writer object back into usable state after an error or
- * interruption.
- */
-genxStatus genxReset (genxWriter w);
-
-/*
- * Dispose of a writer, freeing all associated memory
- */
-void genxDispose(genxWriter w);
-
-/*
- * Set/get
- */
-
-/*
- * The userdata pointer will be passed to memory-allocation
- * and I/O callbacks. If not set, genx will pass NULL
- */
-void genxSetUserData(genxWriter w, void * userData);
-void * genxGetUserData(genxWriter w);
-
-/*
- * Set/get pretty-printing. If indentation is set to 0, then no pretty-
- * printing is performed.
- */
-genxStatus genxSetPrettyPrint(genxWriter w, int indentation);
-int genxGetPrettyPrint(genxWriter w);
-
-/*
- * Set/get canonicalization. If true, then output explicit closing
- * tags and sort attributes. Default is false.
- */
-genxStatus genxSetCanonical(genxWriter w, int flag);
-int genxGetCanonical(genxWriter w);
-
-/*
- * User-provided memory allocator, if desired. For example, if you were
- * in an Apache module, you could arrange for genx to use ap_palloc by
- * making the pool accessible via the userData call.
- * The "dealloc" is to be used to free memory allocated with "alloc". If
- * alloc is provided but dealloc is NULL, genx will not attempt to free
- * the memory; this would be appropriate in an Apache context.
- * If "alloc" is not provided, genx routines use malloc() to allocate memory
- */
-void genxSetAlloc(genxWriter w, genxAlloc alloc);
-void genxSetDealloc(genxWriter w, genxDealloc dealloc);
-genxAlloc genxGetAlloc(genxWriter w);
-genxDealloc genxGetDealloc(genxWriter w);
-
-/*
- * Get the prefix associated with a namespace
- */
-utf8 genxGetNamespacePrefix(genxNamespace ns);
-
-/*
- * Declaration functions
- */
-
-/*
- * Declare a namespace. The provided prefix is the default but can be
- * overridden by genxAddNamespace. If no default prefiix is provided,
- * genx will generate one of the form g-%d.
- * On error, returns NULL and signals via statusp
- */
-genxNamespace genxDeclareNamespace(genxWriter w,
- constUtf8 uri, constUtf8 prefix,
- genxStatus * statusP);
-
-/*
- * Declare an element
- * If something failed, returns NULL and sets the status code via statusP
- */
-genxElement genxDeclareElement(genxWriter w,
- genxNamespace ns, constUtf8 type,
- genxStatus * statusP);
-
-/*
- * Declare an attribute
- */
-genxAttribute genxDeclareAttribute(genxWriter w,
- genxNamespace ns,
- constUtf8 name, genxStatus * statusP);
-
-/*
- * Writing XML
- */
-
-/*
- * Caller-provided I/O package.
- * First form is for a null-terminated string.
- * for second, if you have s="abcdef" and want to send "abc", you'd call
- * sendBounded(userData, s, s + 3)
- */
-typedef struct
-{
- genxStatus (* send)(void * userData, constUtf8 s);
- genxStatus (* sendBounded)(void * userData, constUtf8 start, constUtf8 end);
- genxStatus (* flush)(void * userData);
-} genxSender;
-
-genxStatus genxStartDocSender(genxWriter w, genxSender * sender);
-
-/*
- * End a document. Calls "flush"
- */
-genxStatus genxEndDocument(genxWriter w);
-
-/*
- * Write XML declaration. If encoding or standalone are NULL, then those
- * attributes are omitted.
- */
-genxStatus genxXmlDeclaration(genxWriter w,
- constUtf8 version,
- constUtf8 encoding,
- constUtf8 standalone);
-/*
- * Write a comment
- */
-genxStatus genxComment(genxWriter w, constUtf8 text);
-
-/*
- * Write a PI
- */
-genxStatus genxPI(genxWriter w, constUtf8 target, constUtf8 text);
-
-/*
- * Start an element
- */
-genxStatus genxStartElementLiteral(genxWriter w,
- constUtf8 xmlns, constUtf8 type);
-
-/*
- * Start a predeclared element
- * - element must have been declared
- */
-genxStatus genxStartElement(genxElement e);
-
-/*
- * Write an attribute
- */
-genxStatus genxAddAttributeLiteral(genxWriter w, constUtf8 xmlns,
- constUtf8 name, constUtf8 value);
-
-/*
- * Start an attribute
- */
-genxStatus genxStartAttributeLiteral(genxWriter w,
- constUtf8 xmlns, constUtf8 name);
-
-/*
- * Write a predeclared attribute
- */
-genxStatus genxAddAttribute(genxAttribute a, constUtf8 value);
-
-/*
- * Start a predeclared attribute
- */
-genxStatus genxStartAttribute(genxAttribute a);
-
-/*
- * End an attribute
- */
-genxStatus genxEndAttribute(genxWriter w);
-
-/*
- * add a namespace declaration
- */
-genxStatus genxAddNamespaceLiteral(genxWriter w,
- constUtf8 uri, constUtf8 prefix);
-
-/*
- * add a predefined namespace declaration
- */
-genxStatus genxAddNamespace(genxNamespace ns, constUtf8 prefix);
-
-/*
- * Clear default namespace declaration
- */
-genxStatus genxUnsetDefaultNamespace(genxWriter w);
-
-/*
- * Write an end tag
- */
-genxStatus genxEndElement(genxWriter w);
-
-/*
- * Write some text
- * You can't write any text outside the root element, except with
- * genxComment and genxPI
- */
-genxStatus genxAddText(genxWriter w, constUtf8 start);
-genxStatus genxAddCountedText(genxWriter w, constUtf8 start, int byteCount);
-genxStatus genxAddBoundedText(genxWriter w, constUtf8 start, constUtf8 end);
-
-/*
- * Write one character. The integer value is the Unicode character
- * value, as usually expressed in U+XXXX notation.
- */
-genxStatus genxAddCharacter(genxWriter w, int c);
-
-/*
- * Utility routines
- */
-
-/*
- * Return the Unicode character encoded by the UTF-8 pointed-to by the
- * argument, and advance the argument past the encoding of the character.
- * Returns -1 if the UTF-8 is malformed, in which case advances the
- * argument to point at the first byte past the point past the malformed
- * ones.
- */
-int genxNextUnicodeChar(constUtf8 * sp);
-
-/*
- * Scan a buffer allegedly full of UTF-8 encoded XML characters; return
- * one of GENX_SUCCESS, GENX_BAD_UTF8, or GENX_NON_XML_CHARACTER
- */
-genxStatus genxCheckText(genxWriter w, constUtf8 s);
-
-/*
- * return character status, the OR of GENX_XML_CHAR,
- * GENX_LETTER, and GENX_NAMECHAR
- */
-int genxCharClass(genxWriter w, int c);
-
-/*
- * Silently wipe any non-XML characters out of a chunk of text.
- * If you call this on a string before you pass it addText or
- * addAttribute, you will never get an error from genx unless
- * (a) there's a bug in your software, e.g. a malformed element name, or
- * (b) there's a memory allocation or I/O error
- * The output can never be longer than the input.
- * Returns true if any changes were made.
- */
-int genxScrubText(genxWriter w, constUtf8 in, utf8 out);
-
-/*
- * return error messages
- */
-char * genxGetErrorMessage(genxWriter w, genxStatus status);
-char * genxLastErrorMessage(genxWriter w);
-
-/*
- * return version
- */
-char * genxGetVersion();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GENX_H */
diff --git a/libcutl/cutl/exception.cxx b/libcutl/cutl/exception.cxx
deleted file mode 100644
index 6f69aa7..0000000
--- a/libcutl/cutl/exception.cxx
+++ /dev/null
@@ -1,16 +0,0 @@
-// file : cutl/exception.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <typeinfo>
-
-#include <cutl/exception.hxx>
-
-namespace cutl
-{
- char const* exception::
- what () const throw ()
- {
- return typeid (*this).name ();
- }
-}
diff --git a/libcutl/cutl/exception.hxx b/libcutl/cutl/exception.hxx
deleted file mode 100644
index e8952fd..0000000
--- a/libcutl/cutl/exception.hxx
+++ /dev/null
@@ -1,23 +0,0 @@
-// file : cutl/exception.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_EXCEPTION_HXX
-#define CUTL_EXCEPTION_HXX
-
-#include <exception>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- struct LIBCUTL_EXPORT exception: std::exception
- {
- // By default return the exception type name ( typeid (*this).name () ).
- //
- virtual char const*
- what () const throw ();
- };
-}
-
-#endif // CUTL_EXCEPTION_HXX
diff --git a/libcutl/cutl/fs/auto-remove.cxx b/libcutl/cutl/fs/auto-remove.cxx
deleted file mode 100644
index c790c29..0000000
--- a/libcutl/cutl/fs/auto-remove.cxx
+++ /dev/null
@@ -1,37 +0,0 @@
-// file : cutl/fs/auto-remove.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cstdio> // std::remove
-#include <cerrno>
-
-#include <cutl/fs/auto-remove.hxx>
-
-namespace cutl
-{
- namespace fs
- {
- auto_remove::
- ~auto_remove ()
- {
- if (!canceled_)
- {
- if (std::remove (path_.string ().c_str ()) == -1)
- throw error (errno);
- }
- }
-
- auto_removes::
- ~auto_removes ()
- {
- if (!canceled_)
- {
- for (paths::iterator i (paths_.begin ()); i != paths_.end (); ++i)
- {
- if (std::remove (i->string ().c_str ()) == -1)
- throw error (errno);
- }
- }
- }
- }
-}
diff --git a/libcutl/cutl/fs/auto-remove.hxx b/libcutl/cutl/fs/auto-remove.hxx
deleted file mode 100644
index c0319e8..0000000
--- a/libcutl/cutl/fs/auto-remove.hxx
+++ /dev/null
@@ -1,83 +0,0 @@
-// file : cutl/fs/auto-remove.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_FS_AUTO_REMOVE_HXX
-#define CUTL_FS_AUTO_REMOVE_HXX
-
-#include <vector>
-
-#include <cutl/fs/path.hxx>
-#include <cutl/fs/exception.hxx>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace fs
- {
- // Remove a file or an empty directory on destruction unless canceled.
- //
- struct LIBCUTL_EXPORT auto_remove
- {
- explicit
- auto_remove (path const& p)
- : path_ (p), canceled_ (false)
- {
- }
-
- ~auto_remove ();
-
- void
- cancel ()
- {
- canceled_ = true;
- }
-
- private:
- auto_remove (auto_remove const&);
-
- auto_remove&
- operator= (auto_remove const&);
-
- private:
- path path_;
- bool canceled_;
- };
-
- // Remove a list of file or aempty directories on destruction unless
- // canceled.
- //
- struct LIBCUTL_EXPORT auto_removes
- {
- auto_removes (): canceled_ (false) {}
- ~auto_removes ();
-
- void
- add (path const& p)
- {
- paths_.push_back (p);
- }
-
- void
- cancel ()
- {
- canceled_ = true;
- }
-
- private:
- auto_removes (auto_removes const&);
-
- auto_removes&
- operator= (auto_removes const&);
-
- private:
- typedef std::vector<path> paths;
-
- paths paths_;
- bool canceled_;
- };
- }
-}
-
-#endif // CUTL_FS_AUTO_REMOVE_HXX
diff --git a/libcutl/cutl/fs/exception.cxx b/libcutl/cutl/fs/exception.cxx
deleted file mode 100644
index 3fbd26b..0000000
--- a/libcutl/cutl/fs/exception.cxx
+++ /dev/null
@@ -1,17 +0,0 @@
-// file : cutl/fs/exception.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/fs/exception.hxx>
-
-namespace cutl
-{
- namespace fs
- {
- char const* error::
- what () const throw ()
- {
- return "filesystem error";
- }
- }
-}
diff --git a/libcutl/cutl/fs/exception.hxx b/libcutl/cutl/fs/exception.hxx
deleted file mode 100644
index d6c9601..0000000
--- a/libcutl/cutl/fs/exception.hxx
+++ /dev/null
@@ -1,35 +0,0 @@
-// file : cutl/fs/exception.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_FS_EXCEPTION_HXX
-#define CUTL_FS_EXCEPTION_HXX
-
-#include <cutl/exception.hxx>
-
-namespace cutl
-{
- namespace fs
- {
- struct LIBCUTL_EXPORT error: exception
- {
- error (int code): code_ (code) {}
-
- // Error code (errno).
- //
- int
- code () const
- {
- return code_;
- }
-
- virtual char const*
- what () const throw ();
-
- private:
- int code_;
- };
- }
-}
-
-#endif // CUTL_FS_EXCEPTION_HXX
diff --git a/libcutl/cutl/fs/path.cxx b/libcutl/cutl/fs/path.cxx
deleted file mode 100644
index 87b7f5f..0000000
--- a/libcutl/cutl/fs/path.cxx
+++ /dev/null
@@ -1,115 +0,0 @@
-// file : cutl/fs/path.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifdef _WIN32
-# include <stdlib.h> // _MAX_PATH
-# include <direct.h> // _[w]getcwd, _[w]chdir
-#else
-# include <stdlib.h> // mbstowcs, wcstombs
-# include <limits.h> // PATH_MAX
-# include <unistd.h> // getcwd, chdir
-#endif
-
-#include <cutl/fs/path.hxx>
-
-namespace cutl
-{
- namespace fs
- {
- char const* invalid_path_base::
- what () const throw ()
- {
- return "invalid filesystem path";
- }
-
- //
- // char
- //
-
- template <>
- basic_path<char> basic_path<char>::
- current ()
- {
-#ifdef _WIN32
- char cwd[_MAX_PATH];
- if(_getcwd(cwd, _MAX_PATH) == 0)
- throw invalid_basic_path<char> (".");
-#else
- char cwd[PATH_MAX];
- if (getcwd (cwd, PATH_MAX) == 0)
- throw invalid_basic_path<char> (".");
-#endif
-
- return basic_path<char> (cwd);
- }
-
- template <>
- void basic_path<char>::
- current (basic_path const& p)
- {
- string_type const& s (p.string ());
-
- if (p.empty ())
- throw invalid_basic_path<char> (s);
-
-#ifdef _WIN32
- if(_chdir(s.c_str ()) != 0)
- throw invalid_basic_path<char> (s);
-#else
- if (chdir (s.c_str ()) != 0)
- throw invalid_basic_path<char> (s);
-#endif
- }
-
- //
- // wchar_t
- //
-
- template <>
- basic_path<wchar_t> basic_path<wchar_t>::
- current ()
- {
-#ifdef _WIN32
- wchar_t wcwd[_MAX_PATH];
- if(_wgetcwd(wcwd, _MAX_PATH) == 0)
- throw invalid_basic_path<wchar_t> (L".");
-#else
- char cwd[PATH_MAX];
- if (getcwd (cwd, PATH_MAX) == 0)
- throw invalid_basic_path<wchar_t> (L".");
-
- wchar_t wcwd[PATH_MAX];
- if (mbstowcs (wcwd, cwd, PATH_MAX) == size_type (-1))
- throw invalid_basic_path<wchar_t> (L".");
-#endif
-
- return basic_path<wchar_t> (wcwd);
- }
-
- template <>
- void basic_path<wchar_t>::
- current (basic_path const& p)
- {
- string_type const& s (p.string ());
-
- if (p.empty ())
- throw invalid_basic_path<wchar_t> (s);
-
-#ifdef _WIN32
- if(_wchdir(s.c_str ()) != 0)
- throw invalid_basic_path<wchar_t> (s);
-#else
- char ns[PATH_MAX + 1];
-
- if (wcstombs (ns, s.c_str (), PATH_MAX) == size_type (-1))
- throw invalid_basic_path<wchar_t> (s);
-
- ns[PATH_MAX] = '\0';
-
- if (chdir (ns) != 0)
- throw invalid_basic_path<wchar_t> (s);
-#endif
- }
- }
-}
diff --git a/libcutl/cutl/fs/path.hxx b/libcutl/cutl/fs/path.hxx
deleted file mode 100644
index cbe71a6..0000000
--- a/libcutl/cutl/fs/path.hxx
+++ /dev/null
@@ -1,311 +0,0 @@
-// file : cutl/fs/path.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_FS_PATH_HXX
-#define CUTL_FS_PATH_HXX
-
-#include <string>
-#include <iosfwd>
-
-#include <cutl/exception.hxx>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace fs
- {
- template <typename C>
- class basic_path;
-
- template <typename C>
- struct path_traits
- {
- typedef std::basic_string<C> string_type;
- typedef typename string_type::size_type size_type;
-
- // Canonical directory and path seperators.
- //
-#ifdef _WIN32
- static C const directory_separator = '\\';
- static C const path_separator = ';';
-#else
- static C const directory_separator = '/';
- static C const path_separator = ':';
-#endif
-
- // Directory separator tests. On some platforms there
- // could be multiple seperators. For example, on Windows
- // we check for both '/' and '\'.
- //
-
- static bool
- is_separator (C c)
- {
-#ifdef _WIN32
- return c == '\\' || c == '/';
-#else
- return c == '/';
-#endif
- }
-
- static size_type
- find_separator (string_type const& s, size_type pos = 0)
- {
- for (size_type n (s.size ()); pos < n; ++pos)
- {
- if (is_separator (s[pos]))
- return pos;
- }
-
- return string_type::npos;
- }
-
- static size_type
- rfind_separator (string_type const& s, size_type pos = string_type::npos)
- {
- if (pos == string_type::npos)
- pos = s.size ();
- else
- pos++;
-
- for (; pos > 0; --pos)
- {
- if (is_separator (s[pos - 1]))
- return pos - 1;
- }
-
- return string_type::npos;
- }
- };
-
- template <typename C>
- class invalid_basic_path;
-
- typedef basic_path<char> path;
- typedef invalid_basic_path<char> invalid_path;
-
- typedef basic_path<wchar_t> wpath;
- typedef invalid_basic_path<wchar_t> invalid_wpath;
-
- //
- //
- class LIBCUTL_EXPORT invalid_path_base: exception
- {
- public:
- virtual char const*
- what () const throw ();
- };
-
- template <typename C>
- class invalid_basic_path: public invalid_path_base
- {
- public:
- typedef std::basic_string<C> string_type;
-
- invalid_basic_path (C const* p): path_ (p) {}
- invalid_basic_path (string_type const& p): path_ (p) {}
- ~invalid_basic_path () throw () {}
-
- string_type const&
- path () const
- {
- return path_;
- }
-
- private:
- string_type path_;
- };
-
- template <typename C>
- class basic_path
- {
- public:
- typedef std::basic_string<C> string_type;
- typedef typename string_type::size_type size_type;
-
- typedef path_traits<C> traits;
-
- // Construct special empty path.
- //
- basic_path ()
- {
- }
-
- explicit
- basic_path (C const* s)
- : path_ (s)
- {
- init ();
- }
-
- basic_path (C const* s, size_type n)
- : path_ (s, n)
- {
- init ();
- }
-
- explicit
- basic_path (string_type const& s)
- : path_ (s)
- {
- init ();
- }
-
- void
- swap (basic_path& p)
- {
- path_.swap (p.path_);
- }
-
- void
- clear ()
- {
- path_.clear ();
- }
-
- static basic_path
- current ();
-
- static void
- current (basic_path const&);
-
- public:
- bool
- empty () const
- {
- return path_.empty ();
- }
-
- bool
- absolute () const;
-
- bool
- relative () const
- {
- return !absolute ();
- }
-
- bool
- root () const;
-
- public:
- // Return the path without the directory part.
- //
- basic_path
- leaf () const;
-
- // Return the directory part of the path or empty path if
- // there is no directory.
- //
- basic_path
- directory () const;
-
- // Return the path without the extension, if any.
- //
- basic_path
- base () const;
-
- public:
- // Normalize the path. This includes collapsing the '.' and '..'
- // directories if possible, collapsing multiple directory
- // separators, converting all directory separators to the
- // canonical form, and making the path lower-case if the
- // filesystem is not case-sensitive (e.g., Windows). Returns
- // *this.
- //
- basic_path&
- normalize ();
-
- // Make the path absolute using the current directory unless
- // it is already absolute.
- //
- basic_path&
- complete ();
-
- public:
- basic_path
- operator/ (basic_path const& x) const
- {
- basic_path r (*this);
- r /= x;
- return r;
- }
-
- basic_path&
- operator/= (basic_path const&);
-
- basic_path
- operator+ (string_type const& s) const
- {
- return basic_path (path_ + s);
- }
-
- basic_path&
- operator+= (string_type const& s)
- {
- path_ += s;
- return *this;
- }
-
- bool
- operator== (basic_path const& x) const
- {
- return path_ == x.path_;
- }
-
- bool
- operator!= (basic_path const& x) const
- {
- return !(*this == x);
- }
-
- bool
- operator< (basic_path const& x) const
- {
- return path_ < x.path_;
- }
-
- public:
- string_type
- string () const
- {
- return path_;
- }
-
- // If possible, return a POSIX representation of the path. For example,
- // for a Windows path in the form foo\bar this function will return
- // foo/bar. If it is not possible to create a POSIX representation for
- // this path (e.g., c:\foo), this function will throw the invalid_path
- // exception.
- //
- string_type
- posix_string () const;
-
- private:
- void
- init ();
-
-#ifdef _WIN32
- static C
- tolower (C);
-#endif
-
- private:
- string_type path_;
- };
-
- template <typename C>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, basic_path<C> const& p)
- {
- return os << p.string ();
- }
- }
-}
-
-#include <cutl/fs/path.ixx>
-#include <cutl/fs/path.txx>
-
-#endif // CUTL_FS_PATH_HXX
diff --git a/libcutl/cutl/fs/path.ixx b/libcutl/cutl/fs/path.ixx
deleted file mode 100644
index 80d3bb3..0000000
--- a/libcutl/cutl/fs/path.ixx
+++ /dev/null
@@ -1,71 +0,0 @@
-// file : cutl/fs/path.ixx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifdef _WIN32
-# include <cctype> // std::tolower
-# include <cwctype> // std::towlower
-#endif
-
-namespace cutl
-{
- namespace fs
- {
- template <typename C>
- inline bool basic_path<C>::
- absolute () const
- {
-#ifdef _WIN32
- return path_.size () > 1 && path_[1] == ':';
-#else
- return !path_.empty () && traits::is_separator (path_[0]);
-#endif
- }
-
- template <typename C>
- inline bool basic_path<C>::
- root () const
- {
-#ifdef _WIN32
- return path_.size () == 2 && path_[1] == ':';
-#else
- return path_.size () == 1 && traits::is_separator (path_[0]);
-#endif
- }
-
- template <typename C>
- inline basic_path<C>& basic_path<C>::
- complete ()
- {
- if (relative ())
- *this = current () / *this;
-
- return *this;
- }
-
-#ifndef _WIN32
- template <typename C>
- inline typename basic_path<C>::string_type basic_path<C>::
- posix_string () const
- {
- return string ();
- }
-#endif
-
-#ifdef _WIN32
- template <>
- inline char basic_path<char>::
- tolower (char c)
- {
- return std::tolower (c);
- }
-
- template <>
- inline wchar_t basic_path<wchar_t>::
- tolower (wchar_t c)
- {
- return std::towlower (c);
- }
-#endif
- }
-}
diff --git a/libcutl/cutl/fs/path.txx b/libcutl/cutl/fs/path.txx
deleted file mode 100644
index e95c890..0000000
--- a/libcutl/cutl/fs/path.txx
+++ /dev/null
@@ -1,216 +0,0 @@
-// file : cutl/fs/path.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <vector>
-
-namespace cutl
-{
- namespace fs
- {
- template <typename C>
- basic_path<C> basic_path<C>::
- leaf () const
- {
- size_type p (traits::rfind_separator (path_));
-
- return p != string_type::npos
- ? basic_path (path_.c_str () + p + 1, path_.size () - p - 1)
- : *this;
- }
-
- template <typename C>
- basic_path<C> basic_path<C>::
- directory () const
- {
- if (root ())
- return basic_path ();
-
- size_type p (traits::rfind_separator (path_));
-
- // Include the trailing slash so that we get correct behavior
- // if directory is root.
- //
- return p != string_type::npos
- ? basic_path (path_.c_str (), p + 1)
- : basic_path ();
- }
-
- template <typename C>
- basic_path<C> basic_path<C>::
- base () const
- {
- size_type i (path_.size ());
-
- for (; i > 0; --i)
- {
- if (path_[i - 1] == '.')
- break;
-
- if (traits::is_separator (path_[i - 1]))
- {
- i = 0;
- break;
- }
- }
-
- // Weed out paths like ".txt" and "/.txt"
- //
- if (i > 1 && !traits::is_separator (path_[i - 2]))
- {
- return basic_path (path_.c_str (), i - 1);
- }
- else
- return *this;
- }
-
-#ifdef _WIN32
- template <typename C>
- typename basic_path<C>::string_type basic_path<C>::
- posix_string () const
- {
- if (absolute ())
- throw invalid_basic_path<C> (path_);
-
- string_type r (path_);
-
- // Translate Windows-style separators to the POSIX ones.
- //
- for (size_type i (0), n (r.size ()); i != n; ++i)
- if (r[i] == '\\')
- r[i] = '/';
-
- return r;
- }
-#endif
-
- template <typename C>
- basic_path<C>& basic_path<C>::
- operator/= (basic_path<C> const& r)
- {
- if (r.absolute ())
- throw invalid_basic_path<C> (r.path_);
-
- if (path_.empty () || r.path_.empty ())
- {
- path_ += r.path_;
- return *this;
- }
-
- if (!traits::is_separator (path_[path_.size () - 1]))
- path_ += traits::directory_separator;
-
- path_ += r.path_;
-
- return *this;
- }
-
- template <typename C>
- basic_path<C>& basic_path<C>::
- normalize ()
- {
- if (empty ())
- return *this;
-
- bool abs (absolute ());
-
- typedef std::vector<string_type> paths;
- paths ps;
-
- for (size_type b (0), e (traits::find_separator (path_)),
- n (path_.size ());;
- e = traits::find_separator (path_, b))
- {
- string_type s (path_, b, e == string_type::npos ? e : e - b);
- ps.push_back (s);
-
- if (e == string_type::npos)
- break;
-
- ++e;
-
- while (e < n && traits::is_separator (path_[e]))
- ++e;
-
- if (e == n)
- break;
-
- b = e;
- }
-
- // First collapse '.' and '..'.
- //
- paths r;
-
- for (typename paths::const_iterator i (ps.begin ()), e (ps.end ());
- i != e; ++i)
- {
- string_type const& s (*i);
- size_type n (s.size ());
-
- if (n == 1 && s[0] == '.')
- continue;
-
- if (n == 2 && s[0] == '.' && s[1] == '.')
- {
- // Pop the last directory from r unless it is '..'.
- //
- if (!r.empty ())
- {
- string_type const& s1 (r.back ());
-
- if (!(s1.size () == 2 && s1[0] == '.' && s1[1] == '.'))
- {
- // Cannot go past the root directory.
- //
- if (abs && r.size () == 1)
- throw invalid_basic_path<C> (path_);
-
- r.pop_back ();
- continue;
- }
- }
- }
-
- r.push_back (s);
- }
-
- // Reassemble the path.
- //
- string_type p;
-
- for (typename paths::const_iterator i (r.begin ()), e (r.end ());
- i != e;)
- {
-#ifdef _WIN32
- for (size_type j (0), n (i->size ()); j < n; ++j)
- p += tolower ((*i)[j]);
-#else
- p += *i;
-#endif
- ++i;
-
- if (i != e)
- p += traits::directory_separator;
- }
-
- if (p.empty () && !r.empty ())
- p += traits::directory_separator; // Root directory.
-
- path_.swap (p);
- return *this;
- }
-
- template <typename C>
- void basic_path<C>::
- init ()
- {
- // Strip trailing slashes except for the case where the single
- // slash represents the root directory.
- //
- size_type n (path_.size ());
- for (; n > 1 && traits::is_separator (path_[n - 1]); --n) ;
- path_.resize (n);
- }
- }
-}
diff --git a/libcutl/cutl/libcutl-vc10.vcxproj b/libcutl/cutl/libcutl-vc10.vcxproj
deleted file mode 100644
index 35231a3..0000000
--- a/libcutl/cutl/libcutl-vc10.vcxproj
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{A3903F70-CC9F-4D1C-9793-221EAE08DBB5}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>libcutl</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>..\bin\</OutDir>
- <TargetName>cutl-d-__value__(interface_version)-vc10</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>..\bin64\</OutDir>
- <TargetName>cutl-d-__value__(interface_version)-vc10</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>..\bin\</OutDir>
- <TargetName>cutl-__value__(interface_version)-vc10</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>..\bin64\</OutDir>
- <TargetName>cutl-__value__(interface_version)-vc10</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;LIBCUTL_DYNAMIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4355;4800;4290;4251;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OutputFile>$(TargetPath)</OutputFile>
- <ImportLibrary>..\lib\cutl-d.lib</ImportLibrary>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;LIBCUTL_DYNAMIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4355;4800;4290;4251;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <OutputFile>$(TargetPath)</OutputFile>
- <ImportLibrary>..\lib64\cutl-d.lib</ImportLibrary>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;LIBCUTL_DYNAMIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4355;4800;4290;4251;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <OutputFile>$(TargetPath)</OutputFile>
- <ImportLibrary>..\lib\cutl.lib</ImportLibrary>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;LIBCUTL_DYNAMIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4355;4800;4290;4251;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <OutputFile>$(TargetPath)</OutputFile>
- <ImportLibrary>..\lib64\cutl.lib</ImportLibrary>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
-__header_entries__(headers)
-__header_entries__(expat_headers)
-__header_entries__(genx_headers)
- </ItemGroup>
- <ItemGroup>
-__source_entries__(sources)
-__source_entries__(boost_sources)
-__source_entries__(expat_sources)
-__source_entries__(genx_sources)
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
diff --git a/libcutl/cutl/libcutl-vc10.vcxproj.filters b/libcutl/cutl/libcutl-vc10.vcxproj.filters
deleted file mode 100644
index 19aca44..0000000
--- a/libcutl/cutl/libcutl-vc10.vcxproj.filters
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{A4EE4929-6BF6-4B45-8BF1-3187A81F096E}</UniqueIdentifier>
- <Extensions>c;cxx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{D965C189-96AF-4E9F-9C05-D815464A588F}</UniqueIdentifier>
- <Extensions>h;hxx;ixx;txx</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
-__header_filter_entries__(headers)
-__header_filter_entries__(expat_headers)
-__header_filter_entries__(genx_headers)
- </ItemGroup>
- <ItemGroup>
-__source_filter_entries__(sources)
-__source_filter_entries__(boost_sources)
-__source_filter_entries__(expat_sources)
-__source_filter_entries__(genx_sources)
- </ItemGroup>
-</Project>
diff --git a/libcutl/cutl/libcutl-vc9.vcproj b/libcutl/cutl/libcutl-vc9.vcproj
deleted file mode 100644
index 5a48c81..0000000
--- a/libcutl/cutl/libcutl-vc9.vcproj
+++ /dev/null
@@ -1,360 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="libcutl"
- ProjectGUID="{E12E5299-8AFB-43F3-832F-9919A26C4F9C}"
- RootNamespace="libcutl"
- Keyword="Win32Proj"
- TargetFrameworkVersion="196613"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".."
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="2"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4355 /wd4800 /wd4290 /wd4251"
- Optimization="0"
- AdditionalIncludeDirectories=".."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;LIBCUTL_DYNAMIC_LIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- CommandLine="if not exist ..\lib mkdir ..\lib"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\bin\cutl-d-__value__(interface_version)-vc9.dll"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="2"
- ImportLibrary="$(OutDir)\lib\cutl-d.lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory=".."
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="2"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4355 /wd4800 /wd4290 /wd4251"
- Optimization="0"
- AdditionalIncludeDirectories=".."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;LIBCUTL_DYNAMIC_LIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- CommandLine="if not exist ..\lib64 mkdir ..\lib64"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\bin64\cutl-d-__value__(interface_version)-vc9.dll"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="2"
- ImportLibrary="$(OutDir)\lib64\cutl-d.lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".."
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="2"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4355 /wd4800 /wd4290 /wd4251"
- Optimization="2"
- EnableIntrinsicFunctions="true"
- AdditionalIncludeDirectories=".."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;LIBCUTL_DYNAMIC_LIB"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- CommandLine="if not exist ..\lib mkdir ..\lib"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\bin\cutl-__value__(interface_version)-vc9.dll"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- ImportLibrary="$(OutDir)\lib\cutl.lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory=".."
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="2"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4355 /wd4800 /wd4290 /wd4251"
- Optimization="2"
- EnableIntrinsicFunctions="true"
- AdditionalIncludeDirectories=".."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;LIBCUTL_DYNAMIC_LIB"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- CommandLine="if not exist ..\lib64 mkdir ..\lib64"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\bin64\cutl-__value__(interface_version)-vc9.dll"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- ImportLibrary="$(OutDir)\lib64\cutl.lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="c;cxx"
- UniqueIdentifier="{08953974-D0EB-4BDD-B84E-F78FBE580362}"
- >
-__source_entries__(sources)
-__source_entries__(boost_sources)
-__source_entries__(expat_sources)
-__source_entries__(genx_sources)
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hxx;ixx;txx"
- UniqueIdentifier="{A8A5593E-EED1-407F-BA73-490CD9747712}"
- >
-__file_entries__(headers)
-__file_entries__(expat_headers)
-__file_entries__(genx_headers)
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libcutl/cutl/makefile b/libcutl/cutl/makefile
deleted file mode 100644
index 369b2ca..0000000
--- a/libcutl/cutl/makefile
+++ /dev/null
@@ -1,175 +0,0 @@
-# file : cutl/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-sources := exception.cxx shared-ptr/base.cxx
-
-sources += fs/exception.cxx fs/path.cxx fs/auto-remove.cxx
-
-sources += re/re.cxx
-
-sources += \
-xml/qname.cxx \
-xml/parser.cxx \
-xml/serializer.cxx \
-xml/value-traits.cxx
-
-sources += \
-compiler/context.cxx \
-compiler/type-info.cxx \
-compiler/cxx-indenter.cxx
-
-boost_sources := \
-details/boost/regex/src/regex.cxx \
-details/boost/regex/src/usinstances.cxx \
-details/boost/regex/src/regex_raw_buffer.cxx \
-details/boost/regex/src/fileiter.cxx \
-details/boost/regex/src/cpp_regex_traits.cxx \
-details/boost/regex/src/instances.cxx \
-details/boost/regex/src/wide_posix_api.cxx \
-details/boost/regex/src/regex_debug.cxx \
-details/boost/regex/src/c_regex_traits.cxx \
-details/boost/regex/src/posix_api.cxx \
-details/boost/regex/src/wc_regex_traits.cxx \
-details/boost/regex/src/cregex.cxx \
-details/boost/regex/src/w32_regex_traits.cxx \
-details/boost/regex/src/regex_traits_defaults.cxx \
-details/boost/regex/src/static_mutex.cxx \
-details/boost/regex/src/icu.cxx \
-details/boost/regex/src/winstances.cxx
-
-# Expat.
-#
-expat_sources := xmlparse.c xmlrole.c xmltok.c
-expat_headers := expat.h expat_external.h
-expat_dist := ascii.h asciitab.h config.h iasciitab.h internal.h \
-latin1tab.h nametab.h utf8tab.h xmlrole.h xmltok.h xmltok_impl.c \
-xmltok_impl.h xmltok_ns.c README LICENSE
-
-expat_sources := $(addprefix details/expat/,$(expat_sources))
-expat_headers := $(addprefix details/expat/,$(expat_headers))
-expat_dist := $(addprefix details/expat/,$(expat_dist))
-
-# Genx.
-#
-genx_sources := details/genx/genx.c details/genx/char-props.c
-genx_headers := details/genx/genx.h
-genx_dist := details/genx/README details/genx/LICENSE
-
-c_tun := $(expat_sources) $(genx_sources)
-c_obj := $(addprefix $(out_base)/,$(c_tun:.c=.o))
-c_od := $(c_obj:.o=.o.d)
-
-cxx_tun := $(sources) $(boost_sources)
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_base)/cutl.l
-cutl.l.cpp-options := $(out_base)/cutl.l.cpp-options
-
-default := $(out_base)/
-dist := $(out_base)/.dist
-install := $(out_base)/.install
-clean := $(out_base)/.clean
-
-
-# Build.
-#
-$(cutl.l): $(c_obj) $(cxx_obj)
-
-$(c_obj) $(cxx_obj) $(c_od) $(cxx_od): $(cutl.l.cpp-options) $(out_base)/details/config.h
-$(cutl.l.cpp-options): value := -I$(out_root) -I$(src_root)
-
-$(call include,$(bld_root)/ld/configuration-lib.make) # ld_lib_type
-
-$(out_base)/details/config.h: | $(out_base)/details/.
- @echo '/* file : cutl/details/config.h' >$@
- @echo ' * note : automatically generated' >>$@
- @echo ' */' >>$@
- @echo '#ifndef CUTL_DETAILS_CONFIG_H' >>$@
- @echo '#define CUTL_DETAILS_CONFIG_H' >>$@
- @echo '' >>$@
- @echo '#define LIBCUTL_BYTEORDER 1234' >>$@
-ifeq ($(ld_lib_type),archive)
- @echo '#define LIBCUTL_STATIC_LIB' >>$@
-endif
- @echo '' >>$@
- @echo '#endif /* CUTL_DETAILS_CONFIG_H */' >>$@
-
-$(call include-dep,$(c_od) $(cxx_od),$(c_obj) $(cxx_obj),$(out_base)/details/config.h)
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(cutl.l)
-
-# Dist.
-#
-$(dist): export sources := $(sources)
-$(dist): export boost_sources := $(boost_sources)
-$(dist): export expat_sources := $(expat_sources)
-$(dist): export expat_headers := $(expat_headers)
-$(dist): export genx_sources := $(genx_sources)
-$(dist): export genx_headers := $(genx_headers)
-$(dist): export headers := $(subst $(src_base)/,,$(shell find $(src_base) \
--name '*.hxx' -o -name '*.ixx' -o -name '*.txx'))
-$(dist): data_dist := details/config-vc.h $(subst $(src_base)/,,$(shell find \
-$(src_base)/details/boost -type f -name '*.hpp')) details/boost/LICENSE \
-details/boost/README $(expat_dist) $(genx_dist)
-$(dist): export extra_dist := $(data_dist) libcutl-vc9.vcproj \
-libcutl-vc10.vcxproj libcutl-vc10.vcxproj.filters
-$(dist): export interface_version = $(shell sed -e \
-'s/^\([0-9]*\.[0-9]*\).*/\1/' $(src_root)/version)
-
-$(dist):
- $(call dist-data,$(sources) $(boost_sources) $(expat_sources) $(genx_sources))
- $(call dist-data,$(headers) $(expat_headers) $(genx_headers))
- $(call dist-data,$(data_dist) details/config.h.in)
- $(call meta-vc9proj,libcutl-vc9.vcproj)
- $(call meta-vc10proj,libcutl-vc10.vcxproj)
- $(call meta-automake)
-
-# Install.
-#
-$(install): $(cutl.l)
- $(call install-lib,$<,$(install_lib_dir)/$(ld_lib_prefix)cutl$(ld_lib_suffix))
- $(call install-dir,$(src_base),$(install_inc_dir)/cutl,\
-'(' -name '*.hxx' -o -name '*.ixx' -o -name '*.txx' ')')
- $(call install-data,$(out_base)/details/config.h,\
-$(install_inc_dir)/cutl/details/config.h)
-
-# Clean.
-#
-$(clean): $(cutl.l).o.clean \
- $(cutl.l.cpp-options).clean \
- $(addsuffix .cxx.clean,$(c_obj)) \
- $(addsuffix .cxx.clean,$(c_od)) \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
- $(call message,rm $$1,rm -f $$1,$(out_base)/details/config.h)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(cutl.l): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := details/config.h
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/c/c-o.make)
-$(call include,$(bld_root)/c/c-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/o-l.make)
diff --git a/libcutl/cutl/meta/answer.hxx b/libcutl/cutl/meta/answer.hxx
deleted file mode 100644
index 96a3911..0000000
--- a/libcutl/cutl/meta/answer.hxx
+++ /dev/null
@@ -1,24 +0,0 @@
-// file : cutl/meta/answer.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_META_ANSWER_HXX
-#define CUTL_META_ANSWER_HXX
-
-namespace cutl
-{
- namespace meta
- {
- struct yes
- {
- char filling;
- };
-
- struct no
- {
- char filling[2];
- };
- }
-}
-
-#endif // CUTL_META_ANSWER_HXX
diff --git a/libcutl/cutl/meta/class-p.hxx b/libcutl/cutl/meta/class-p.hxx
deleted file mode 100644
index fec5a59..0000000
--- a/libcutl/cutl/meta/class-p.hxx
+++ /dev/null
@@ -1,27 +0,0 @@
-// file : cutl/meta/class-p.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_META_CLASS_HXX
-#define CUTL_META_CLASS_HXX
-
-#include <cutl/meta/answer.hxx>
-
-namespace cutl
-{
- namespace meta
- {
- // g++ cannot have these inside class_p.
- //
- template <typename Y> no class_p_test (...);
- template <typename Y> yes class_p_test (void (Y::*) ());
-
- template <typename X>
- struct class_p
- {
- static bool const r = sizeof (class_p_test<X> (0)) == sizeof (yes);
- };
- }
-}
-
-#endif // CUTL_META_CLASS_HXX
diff --git a/libcutl/cutl/meta/polymorphic-p.hxx b/libcutl/cutl/meta/polymorphic-p.hxx
deleted file mode 100644
index dd820db..0000000
--- a/libcutl/cutl/meta/polymorphic-p.hxx
+++ /dev/null
@@ -1,50 +0,0 @@
-// file : cutl/meta/polymorphic-p.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_META_POLYMORPHIC_HXX
-#define CUTL_META_POLYMORPHIC_HXX
-
-#include <cutl/meta/class-p.hxx>
-#include <cutl/meta/remove-cv.hxx>
-
-namespace cutl
-{
- namespace meta
- {
- template <typename CVX>
- struct polymorphic_p
- {
- typedef typename remove_cv<CVX>::r X;
-
- template <typename Y, bool C>
- struct impl
- {
- static const bool r = false;
- };
-
- template <typename Y>
- struct impl<Y, true>
- {
- struct t1: Y
- {
- t1 ();
- };
-
- struct t2: Y
- {
- t2 ();
-
- virtual
- ~t2 () throw ();
- };
-
- static const bool r = sizeof (t1) == sizeof (t2);
- };
-
- static const bool r = impl<X, class_p<X>::r>::r;
- };
- }
-}
-
-#endif // CUTL_META_POLYMORPHIC_HXX
diff --git a/libcutl/cutl/meta/remove-c.hxx b/libcutl/cutl/meta/remove-c.hxx
deleted file mode 100644
index 0f67488..0000000
--- a/libcutl/cutl/meta/remove-c.hxx
+++ /dev/null
@@ -1,26 +0,0 @@
-// file : cutl/meta/remove-c.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_META_REMOVE_C_HXX
-#define CUTL_META_REMOVE_C_HXX
-
-namespace cutl
-{
- namespace meta
- {
- template <typename X>
- struct remove_c
- {
- typedef X r;
- };
-
- template <typename X>
- struct remove_c<X const>
- {
- typedef X r;
- };
- }
-}
-
-#endif // CUTL_META_REMOVE_C_HXX
diff --git a/libcutl/cutl/meta/remove-cv.hxx b/libcutl/cutl/meta/remove-cv.hxx
deleted file mode 100644
index 1d825da..0000000
--- a/libcutl/cutl/meta/remove-cv.hxx
+++ /dev/null
@@ -1,23 +0,0 @@
-// file : cutl/meta/remove-cv.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_META_REMOVE_CV_HXX
-#define CUTL_META_REMOVE_CV_HXX
-
-#include <cutl/meta/remove-c.hxx>
-#include <cutl/meta/remove-v.hxx>
-
-namespace cutl
-{
- namespace meta
- {
- template <typename X>
- struct remove_cv
- {
- typedef typename remove_v<typename remove_c<X>::r>::r r;
- };
- }
-}
-
-#endif // CUTL_META_REMOVE_CV_HXX
diff --git a/libcutl/cutl/meta/remove-p.hxx b/libcutl/cutl/meta/remove-p.hxx
deleted file mode 100644
index f032dc2..0000000
--- a/libcutl/cutl/meta/remove-p.hxx
+++ /dev/null
@@ -1,26 +0,0 @@
-// file : cutl/meta/remove-p.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_META_REMOVE_P_HXX
-#define CUTL_META_REMOVE_P_HXX
-
-namespace cutl
-{
- namespace meta
- {
- template <typename X>
- struct remove_p
- {
- typedef X r;
- };
-
- template <typename X>
- struct remove_p<X*>
- {
- typedef X r;
- };
- }
-}
-
-#endif // CUTL_META_REMOVE_P_HXX
diff --git a/libcutl/cutl/meta/remove-v.hxx b/libcutl/cutl/meta/remove-v.hxx
deleted file mode 100644
index ac05f28..0000000
--- a/libcutl/cutl/meta/remove-v.hxx
+++ /dev/null
@@ -1,26 +0,0 @@
-// file : cutl/meta/remove-v.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_META_REMOVE_V_HXX
-#define CUTL_META_REMOVE_V_HXX
-
-namespace cutl
-{
- namespace meta
- {
- template <typename X>
- struct remove_v
- {
- typedef X r;
- };
-
- template <typename X>
- struct remove_v<X volatile>
- {
- typedef X r;
- };
- }
-}
-
-#endif // CUTL_META_REMOVE_V_HXX
diff --git a/libcutl/cutl/re.hxx b/libcutl/cutl/re.hxx
deleted file mode 100644
index b5bbdb9..0000000
--- a/libcutl/cutl/re.hxx
+++ /dev/null
@@ -1,284 +0,0 @@
-// file : cutl/re.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_RE_HXX
-#define CUTL_RE_HXX
-
-#include <string>
-#include <ostream>
-
-#include <cutl/exception.hxx>
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace re
- {
- struct LIBCUTL_EXPORT format_base: exception
- {
- virtual
- ~format_base () throw ();
-
- format_base (std::string const& d): description_ (d) {}
-
- std::string const&
- description () const
- {
- return description_;
- }
-
- virtual char const*
- what () const throw ();
-
- protected:
- std::string description_;
- };
-
- template <typename C>
- struct basic_format: format_base
- {
- virtual
- ~basic_format () throw () {}
-
- basic_format (std::basic_string<C> const& e, std::string const& d)
- : format_base (d), regex_ (e) {}
-
- std::basic_string<C> const&
- regex () const
- {
- return regex_;
- }
-
- private:
- std::basic_string<C> regex_;
- };
-
- typedef basic_format<char> format;
- typedef basic_format<wchar_t> wformat;
-
- // Regular expression pattern.
- //
- template <typename C>
- struct basic_regex
- {
- typedef std::basic_string<C> string_type;
-
- ~basic_regex ();
-
- basic_regex (): impl_ (0) {init (0, false);}
-
- explicit
- basic_regex (string_type const& s, bool icase = false)
- : impl_ (0)
- {
- init (&s, icase);
- }
-
- basic_regex&
- operator= (string_type const& s)
- {
- init (&s, false);
- return *this;
- }
-
- basic_regex&
- assign (string_type const& s, bool icase = false)
- {
- init (&s, icase);
- return *this;
- }
-
- basic_regex (basic_regex const&);
-
- basic_regex&
- operator= (basic_regex const&);
-
- public:
- bool
- match (string_type const&) const;
-
- bool
- search (string_type const&) const;
-
- string_type
- replace (string_type const& s,
- string_type const& sub,
- bool first_only = false) const;
-
- public:
- string_type const&
- str () const
- {
- return str_;
- }
-
- bool
- empty () const
- {
- return str_.empty ();
- }
-
- private:
- void
- init (string_type const*, bool);
-
- private:
- struct impl;
-
- string_type str_; // Text representation of regex.
- impl* impl_;
- };
-
- template <typename C>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, basic_regex<C> const& r)
- {
- return os << r.str ();
- }
-
- typedef basic_regex<char> regex;
- typedef basic_regex<wchar_t> wregex;
-
- // Regular expression pattern and substituation.
- //
- template <typename C>
- struct basic_regexsub
- {
- typedef basic_regex<C> regex_type;
- typedef std::basic_string<C> string_type;
-
- basic_regexsub () {}
-
- // Expression is of the form /regex/substitution/ where '/' can
- // be replaced with any delimiter. Delimiters must be escaped in
- // regex and substitution using back slashes (e.g., "\/"). Back
- // slashes themselves can be escaped using the double back slash
- // sequence (e.g., "\\").
- //
- explicit
- basic_regexsub (string_type const& e) {init (e);}
-
- basic_regexsub (string_type const& regex, string_type const& sub)
- : regex_ (regex), sub_ (sub)
- {
- }
-
- basic_regexsub (regex_type const& regex, string_type const& sub)
- : regex_ (regex), sub_ (sub)
- {
- }
-
- basic_regexsub&
- operator= (string_type const& e)
- {
- init (e);
- return *this;
- }
-
- public:
- bool
- match (string_type const& s) const
- {
- return regex_.match (s);
- }
-
- bool
- search (string_type const& s) const
- {
- return regex_.search (s);
- }
-
- string_type
- replace (string_type const& s, bool first_only = false) const
- {
- return regex_.replace (s, sub_, first_only);
- }
-
- public:
- const regex_type&
- regex () const
- {
- return regex_;
- }
-
- const string_type&
- substitution () const
- {
- return sub_;
- }
-
- bool
- empty () const
- {
- return sub_.empty () && regex_.empty ();
- }
-
- private:
- void
- init (string_type const&);
-
- private:
- regex_type regex_;
- string_type sub_;
- };
-
- typedef basic_regexsub<char> regexsub;
- typedef basic_regexsub<wchar_t> wregexsub;
-
- // Once-off regex execution.
- //
- template <typename C>
- inline bool
- match (std::basic_string<C> const& s, std::basic_string<C> const& regex)
- {
- basic_regex<C> r (regex);
- return r.match (s);
- }
-
- template <typename C>
- inline bool
- search (std::basic_string<C> const& s, std::basic_string<C> const& regex)
- {
- basic_regex<C> r (regex);
- return r.search (s);
- }
-
- template <typename C>
- inline std::basic_string<C>
- replace (std::basic_string<C> const& s,
- std::basic_string<C> const& regex,
- std::basic_string<C> const& sub,
- bool first_only = false)
- {
- basic_regex<C> r (regex);
- return r.replace (s, sub, first_only);
- }
-
- template <typename C>
- inline std::basic_string<C>
- replace (std::basic_string<C> const& s,
- std::basic_string<C> const& regexsub, // /regex/subst/
- bool first_only = false)
- {
- basic_regexsub<C> r (regexsub);
- return r.replace (s, first_only);
- }
-
- // Utility function for parsing expressions in the form /regex/subst/
- // where '/' can be replaced with any delimiter. This function handles
- // escaping. It return the position of the next delimiter and stores
- // the unescaped chunk in result or throws the format exception if
- // the expression is invalid.
- //
- template <typename C>
- typename std::basic_string<C>::size_type
- parse (std::basic_string<C> const& s,
- typename std::basic_string<C>::size_type start,
- std::basic_string<C>& result);
- }
-}
-
-#include <cutl/re/re.txx>
-
-#endif // CUTL_RE_HXX
diff --git a/libcutl/cutl/re/re.cxx b/libcutl/cutl/re/re.cxx
deleted file mode 100644
index 3b132ab..0000000
--- a/libcutl/cutl/re/re.cxx
+++ /dev/null
@@ -1,223 +0,0 @@
-// file : cutl/re/re.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/re.hxx>
-
-#include <cutl/details/config.hxx> // LIBCUTL_EXTERNAL_BOOST
-
-#ifndef LIBCUTL_EXTERNAL_BOOST
-# include <cutl/details/boost/tr1/regex.hpp>
-#else
-# include <boost/tr1/regex.hpp>
-#endif
-
-using namespace std;
-
-namespace cutl
-{
- namespace re
- {
- //
- // format_base
- //
-
- format_base::
- ~format_base () throw ()
- {
- }
-
- char const* format_base::
- what () const throw ()
- {
- return description_.c_str ();
- }
-
- //
- // basic_regex
- //
- template <typename C>
- struct basic_regex<C>::impl
- {
- typedef basic_string<C> string_type;
- typedef tr1::basic_regex<C> regex_type;
- typedef typename regex_type::flag_type flag_type;
-
- impl () {}
- impl (regex_type const& r): r (r) {}
- impl (string_type const& s, bool icase)
- {
- flag_type f (tr1::regex_constants::ECMAScript);
-
- if (icase)
- f |= tr1::regex_constants::icase;
-
- r.assign (s, f);
- }
-
- regex_type r;
- };
-
- template <>
- basic_regex<char>::
- ~basic_regex ()
- {
- delete impl_;
- }
-
- template <>
- basic_regex<wchar_t>::
- ~basic_regex ()
- {
- delete impl_;
- }
-
- template <>
- basic_regex<char>::
- basic_regex (basic_regex const& r)
- : str_ (r.str_), impl_ (new impl (r.impl_->r))
- {
- }
-
- template <>
- basic_regex<wchar_t>::
- basic_regex (basic_regex const& r)
- : str_ (r.str_), impl_ (new impl (r.impl_->r))
- {
- }
-
- template <>
- basic_regex<char>& basic_regex<char>::
- operator= (basic_regex const& r)
- {
- string_type tmp (r.str_);
- impl_->r = r.impl_->r;
- str_.swap (tmp);
- return *this;
- }
-
- template <>
- basic_regex<wchar_t>& basic_regex<wchar_t>::
- operator= (basic_regex const& r)
- {
- string_type tmp (r.str_);
- impl_->r = r.impl_->r;
- str_.swap (tmp);
- return *this;
- }
-
- template <>
- void basic_regex<char>::
- init (string_type const* s, bool icase)
- {
- string_type tmp (s == 0 ? string_type () : *s);
-
- try
- {
- if (impl_ == 0)
- impl_ = s == 0 ? new impl : new impl (*s, icase);
- else
- {
- impl::flag_type f (tr1::regex_constants::ECMAScript);
-
- if (icase)
- f |= tr1::regex_constants::icase;
-
- impl_->r.assign (*s, f);
- }
- }
- catch (tr1::regex_error const& e)
- {
- throw basic_format<char> (s == 0 ? "" : *s, e.what ());
- }
-
- str_.swap (tmp);
- }
-
- template <>
- void basic_regex<wchar_t>::
- init (string_type const* s, bool icase)
- {
- string_type tmp (s == 0 ? string_type () : *s);
-
- try
- {
- if (impl_ == 0)
- impl_ = s == 0 ? new impl : new impl (*s, icase);
- else
- {
- impl::flag_type f (tr1::regex_constants::ECMAScript);
-
- if (icase)
- f |= tr1::regex_constants::icase;
-
- impl_->r.assign (*s, f);
- }
- }
- catch (tr1::regex_error const& e)
- {
- throw basic_format<wchar_t> (s == 0 ? L"" : *s, e.what ());
- }
-
- str_.swap (tmp);
- }
-
- template <>
- bool basic_regex<char>::
- match (string_type const& s) const
- {
- return tr1::regex_match (s, impl_->r);
- }
-
- template <>
- bool basic_regex<wchar_t>::
- match (string_type const& s) const
- {
- return tr1::regex_match (s, impl_->r);
- }
-
- template <>
- bool basic_regex<char>::
- search (string_type const& s) const
- {
- return tr1::regex_search (s, impl_->r);
- }
-
- template <>
- bool basic_regex<wchar_t>::
- search (string_type const& s) const
- {
- return tr1::regex_search (s, impl_->r);
- }
-
- template <>
- string basic_regex<char>::
- replace (string_type const& s,
- string_type const& sub,
- bool first_only) const
- {
- tr1::regex_constants::match_flag_type f (
- tr1::regex_constants::format_default);
-
- if (first_only)
- f |= tr1::regex_constants::format_first_only;
-
- return tr1::regex_replace (s, impl_->r, sub, f);
- }
-
- template <>
- wstring basic_regex<wchar_t>::
- replace (string_type const& s,
- string_type const& sub,
- bool first_only) const
- {
- tr1::regex_constants::match_flag_type f (
- tr1::regex_constants::format_default);
-
- if (first_only)
- f |= tr1::regex_constants::format_first_only;
-
- return tr1::regex_replace (s, impl_->r, sub, f);
- }
- }
-}
diff --git a/libcutl/cutl/re/re.txx b/libcutl/cutl/re/re.txx
deleted file mode 100644
index 174e0d4..0000000
--- a/libcutl/cutl/re/re.txx
+++ /dev/null
@@ -1,69 +0,0 @@
-// file : cutl/re/re.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- namespace re
- {
- //
- // basic_regexsub
- //
- template <typename C>
- void basic_regexsub<C>::
- init (string_type const& s)
- {
- string_type r;
- typename string_type::size_type p (parse (s, 0, r));
- regex_ = r;
- p = parse (s, p, sub_);
- if (p + 1 < s.size ())
- throw basic_format<C> (s, "junk after third delimiter");
- }
-
- //
- // parse()
- //
- template <typename C>
- typename std::basic_string<C>::size_type
- parse (std::basic_string<C> const& s,
- typename std::basic_string<C>::size_type p,
- std::basic_string<C>& r)
- {
- r.clear ();
- typename std::basic_string<C>::size_type n (s.size ());
-
- if (p >= n)
- throw basic_format<C> (s, "empty expression");
-
- char d (s[p++]);
-
- for (; p < n; ++p)
- {
- if (s[p] == d)
- break;
-
- if (s[p] == '\\')
- {
- if (++p < n)
- {
- // Pass the escape sequence through unless it is the delimiter.
- //
- if (s[p] != d)
- r += '\\';
-
- r += s[p];
- }
- // else {We ran out of stuff before finding the delimiter.}
- }
- else
- r += s[p];
- }
-
- if (p == n)
- throw basic_format<C> (s, "missing closing delimiter");
-
- return p;
- }
- }
-}
diff --git a/libcutl/cutl/shared-ptr.hxx b/libcutl/cutl/shared-ptr.hxx
deleted file mode 100644
index d6d7cf9..0000000
--- a/libcutl/cutl/shared-ptr.hxx
+++ /dev/null
@@ -1,158 +0,0 @@
-// file : cutl/shared-ptr.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_SHARED_PTR_HXX
-#define CUTL_SHARED_PTR_HXX
-
-#include <cutl/shared-ptr/base.hxx>
-
-namespace cutl
-{
- template <typename X>
- class shared_ptr: bits::counter_ops<typename bits::counter_type<X>::r, X>
- {
- typedef bits::counter_ops<typename bits::counter_type<X>::r, X> base;
-
- public:
- ~shared_ptr ()
- {
- if (x_ != 0)
- base::dec (x_);
- }
-
- explicit
- shared_ptr (X* x = 0)
- : base (x), x_ (x)
- {
- }
-
- shared_ptr (shared_ptr const& x)
- : base (x), x_ (x.x_)
- {
- if (x_ != 0)
- base::inc (x_);
- }
-
- template <typename Y>
- shared_ptr (shared_ptr<Y> const& x)
- : base (x), x_ (x.x_)
- {
- if (x_ != 0)
- base::inc (x_);
- }
-
- shared_ptr&
- operator= (shared_ptr const& x)
- {
- if (x_ != x.x_)
- {
- if (x_ != 0)
- base::dec (x_);
-
- static_cast<base&> (*this) = x;
- x_ = x.x_;
-
- if (x_ != 0)
- base::inc (x_);
- }
-
- return *this;
- }
-
- template <typename Y>
- shared_ptr&
- operator= (shared_ptr<Y> const& x)
- {
- if (x_ != x.x_)
- {
- if (x_ != 0)
- base::dec (x_);
-
- static_cast<base&> (*this) = x;
- x_ = x.x_;
-
- if (x_ != 0)
- base::inc (x_);
- }
-
- return *this;
- }
-
- public:
- X*
- operator-> () const
- {
- return x_;
- }
-
- X&
- operator* () const
- {
- return *x_;
- }
-
- // Conversion to bool.
- //
- typedef void (shared_ptr::*boolean_convertible)();
- void true_value () {};
-
- operator boolean_convertible () const
- {
- return x_ ? &shared_ptr<X>::true_value : 0;
- }
-
- public:
- X*
- get () const
- {
- return x_;
- }
-
- X*
- release ()
- {
- X* r (x_);
- x_ = 0;
- return r;
- }
-
- void
- reset (X* x = 0)
- {
- if (x_ != 0)
- base::dec (x_);
-
- base::reset (x);
- x_ = x;
- }
-
- std::size_t
- count () const
- {
- return x_ != 0 ? base::count (x_) : 0;
- }
-
- private:
- template <typename>
- friend class shared_ptr;
-
- X* x_;
- };
-
- template <typename X, typename Y>
- inline bool
- operator== (const shared_ptr<X>& x, const shared_ptr<Y>& y)
- {
- return x.get () == y.get ();
- }
-
- template <typename X, typename Y>
- inline bool
- operator!= (const shared_ptr<X>& x, const shared_ptr<Y>& y)
- {
- return x.get () != y.get ();
- }
-}
-
-#endif // CUTL_SHARED_PTR_HXX
diff --git a/libcutl/cutl/shared-ptr/base.cxx b/libcutl/cutl/shared-ptr/base.cxx
deleted file mode 100644
index 1ff8469..0000000
--- a/libcutl/cutl/shared-ptr/base.cxx
+++ /dev/null
@@ -1,62 +0,0 @@
-// file : cutl/shared-ptr/base.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/shared-ptr/base.hxx>
-
-using std::size_t;
-
-//
-//
-cutl::share shared = cutl::share (1);
-cutl::share exclusive = cutl::share (2);
-
-//
-//
-namespace cutl
-{
- char const* not_shared::
- what () const throw ()
- {
- return "object is not shared";
- }
-}
-
-//
-//
-void*
-operator new (size_t n, cutl::share s) throw (std::bad_alloc)
-{
- if (s == shared)
- {
- // Here we need to make sure we don't break the alignment of the
- // returned block. For that we need to know the maximum alignment
- // of this platform. Twice the pointer size is a good guess for
- // most platforms.
- //
- size_t* p = static_cast<size_t*> (operator new (n + 2 * sizeof (size_t)));
- *p++ = 1; // Initial count.
- *p++ = 0xDEADBEEF; // Signature.
- return p;
- }
- else
- return operator new (n);
-
-}
-
-void
-operator delete (void* p, cutl::share s) throw ()
-{
- // This version of operator delete is only called when the c-tor
- // fails. In this case there is no object and we can just free the
- // memory.
- //
- if (s == shared)
- {
- size_t* sp = static_cast<size_t*> (p);
- sp -= 2;
- operator delete (sp);
- }
- else
- operator delete (p);
-}
diff --git a/libcutl/cutl/shared-ptr/base.hxx b/libcutl/cutl/shared-ptr/base.hxx
deleted file mode 100644
index f2bfecc..0000000
--- a/libcutl/cutl/shared-ptr/base.hxx
+++ /dev/null
@@ -1,92 +0,0 @@
-// file : cutl/shared-ptr/base.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_SHARED_PTR_BASE_HXX
-#define CUTL_SHARED_PTR_BASE_HXX
-
-#include <new>
-#include <cstddef> // std::size_t
-
-#include <cutl/exception.hxx>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- struct LIBCUTL_EXPORT share
- {
- explicit
- share (char id);
-
- bool
- operator== (share) const;
-
- private:
- char id_;
- };
-}
-
-extern LIBCUTL_EXPORT cutl::share shared;
-extern LIBCUTL_EXPORT cutl::share exclusive;
-
-LIBCUTL_EXPORT void*
-operator new (std::size_t, cutl::share) throw (std::bad_alloc);
-
-LIBCUTL_EXPORT void
-operator delete (void*, cutl::share) throw ();
-
-namespace cutl
-{
- struct LIBCUTL_EXPORT not_shared: exception
- {
- virtual char const*
- what () const throw ();
- };
-
- struct LIBCUTL_EXPORT shared_base
- {
- shared_base ();
- shared_base (shared_base const&);
- shared_base&
- operator= (shared_base const&);
-
- void
- _inc_ref ();
-
- bool
- _dec_ref ();
-
- std::size_t
- _ref_count () const;
-
- void*
- operator new (std::size_t, share) throw (std::bad_alloc);
-
- void
- operator delete (void*, share) throw ();
-
- void
- operator delete (void*) throw ();
-
- protected:
- std::size_t counter_;
- };
-
- template <typename X>
- inline X*
- inc_ref (X*);
-
- template <typename X>
- inline void
- dec_ref (X*);
-
- template <typename X>
- inline std::size_t
- ref_count (X const*);
-}
-
-#include <cutl/shared-ptr/base.ixx>
-#include <cutl/shared-ptr/base.txx>
-
-#endif // CUTL_SHARED_PTR_BASE_HXX
diff --git a/libcutl/cutl/shared-ptr/base.ixx b/libcutl/cutl/shared-ptr/base.ixx
deleted file mode 100644
index 14dd0ac..0000000
--- a/libcutl/cutl/shared-ptr/base.ixx
+++ /dev/null
@@ -1,78 +0,0 @@
-// file : cutl/shared-ptr/base.ixx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-namespace cutl
-{
- // share
- //
-
- inline share::
- share (char id)
- : id_ (id)
- {
- }
-
- inline bool share::
- operator== (share x) const
- {
- return id_ == x.id_;
- }
-
- // shared_base
- //
-
- inline shared_base::
- shared_base ()
- : counter_ (1)
- {
- }
-
- inline shared_base::
- shared_base (shared_base const&)
- : counter_ (1)
- {
- }
-
- inline shared_base& shared_base::
- operator= (shared_base const&)
- {
- return *this;
- }
-
- inline void shared_base::
- _inc_ref ()
- {
- counter_++;
- }
-
- inline bool shared_base::
- _dec_ref ()
- {
- return --counter_ == 0;
- }
-
- inline std::size_t shared_base::
- _ref_count () const
- {
- return counter_;
- }
-
- inline void* shared_base::
- operator new (std::size_t n, share) throw (std::bad_alloc)
- {
- return ::operator new (n);
- }
-
- inline void shared_base::
- operator delete (void* p, share) throw ()
- {
- ::operator delete (p);
- }
-
- inline void shared_base::
- operator delete (void* p) throw ()
- {
- ::operator delete (p);
- }
-}
diff --git a/libcutl/cutl/shared-ptr/base.txx b/libcutl/cutl/shared-ptr/base.txx
deleted file mode 100644
index 5096284..0000000
--- a/libcutl/cutl/shared-ptr/base.txx
+++ /dev/null
@@ -1,199 +0,0 @@
-// file : cutl/shared-ptr/base.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/meta/answer.hxx>
-#include <cutl/meta/polymorphic-p.hxx>
-
-namespace cutl
-{
- namespace bits
- {
- // Support for locating the counter in the memory block.
- //
- template <typename X, bool poly = meta::polymorphic_p<X>::r>
- struct locator;
-
- template <typename X>
- struct locator<X, false>
- {
- static std::size_t*
- counter (X* x)
- {
- std::size_t* p (reinterpret_cast<std::size_t*> (x));
-
- if (*(--p) != 0xDEADBEEF)
- throw not_shared ();
-
- return --p;
- }
- };
-
- template <typename X>
- struct locator<X, true>
- {
- static std::size_t*
- counter (X* x)
- {
- std::size_t* p (
- static_cast<std::size_t*> (
- dynamic_cast<void*> (x)));
-
- if (*(--p) != 0xDEADBEEF)
- throw not_shared ();
-
- return --p;
- }
- };
-
- template <typename X>
- std::size_t*
- counter (X const* p)
- {
- return bits::locator<X>::counter (const_cast<X*> (p));
- }
-
- // Counter type and operations.
- //
- meta::no test (...);
- meta::yes test (shared_base*);
-
- template <typename X,
- std::size_t A = sizeof (bits::test (reinterpret_cast<X*> (0)))>
- struct counter_type;
-
- template <typename X>
- struct counter_type<X, sizeof (meta::no)>
- {
- typedef X r;
- };
-
- template <typename X>
- struct counter_type<X, sizeof (meta::yes)>
- {
- typedef shared_base r;
- };
-
- template <typename X, typename Y>
- struct counter_ops;
-
- template <typename X>
- struct counter_ops<X, X>
- {
- counter_ops (X const* p) : counter_ (p ? bits::counter (p) : 0) {}
- counter_ops (counter_ops const& x) : counter_ (x.counter_) {}
-
- template <typename Z>
- counter_ops (counter_ops<Z, Z> const& x) : counter_ (x.counter_) {}
-
- counter_ops&
- operator= (counter_ops const& x)
- {
- counter_ = x.counter_;
- return *this;
- }
-
- template <typename Z>
- counter_ops&
- operator= (counter_ops<Z, Z> const& x)
- {
- counter_ = x.counter_;
- return *this;
- }
-
- void
- reset (X const* p)
- {
- counter_ = p ? bits::counter (p) : 0;
- }
-
- void
- inc (X*)
- {
- (*counter_)++;
- }
-
- void
- dec (X* p)
- {
- if (--(*counter_) == 0)
- {
- p->~X ();
- operator delete (counter_); // Counter is the top of the memory block.
- }
- }
-
- std::size_t
- count (X const*) const
- {
- return *counter_;
- }
-
- std::size_t* counter_;
- };
-
- template <typename Y>
- struct counter_ops<shared_base, Y>
- {
- counter_ops (Y const*) {}
- counter_ops (counter_ops const&) {}
-
- template <typename Z>
- counter_ops (counter_ops<shared_base, Z> const&) {}
-
- counter_ops&
- operator= (counter_ops const&)
- {
- return *this;
- }
-
- template <typename Z>
- counter_ops&
- operator= (counter_ops<shared_base, Z> const&)
- {
- return *this;
- }
-
- void
- reset (Y const*) {}
-
- void
- inc (shared_base* p) {p->_inc_ref ();}
-
- void
- dec (Y* p)
- {
- if (static_cast<shared_base*> (p)->_dec_ref ())
- delete p;
- }
-
- std::size_t
- count (shared_base const* p) const {return p->_ref_count ();}
- };
- }
-
- template <typename X>
- inline X*
- inc_ref (X* p)
- {
- bits::counter_ops<typename bits::counter_type<X>::r, X> c (p);
- c.inc (p);
- return p;
- }
-
- template <typename X>
- inline void
- dec_ref (X* p)
- {
- bits::counter_ops<typename bits::counter_type<X>::r, X> c (p);
- c.dec (p);
- }
-
- template <typename X>
- inline std::size_t
- ref_count (X const* p)
- {
- bits::counter_ops<typename bits::counter_type<X>::r, X> c (p);
- return c.count (p);
- }
-}
diff --git a/libcutl/cutl/static-ptr.hxx b/libcutl/cutl/static-ptr.hxx
deleted file mode 100644
index 6c907c8..0000000
--- a/libcutl/cutl/static-ptr.hxx
+++ /dev/null
@@ -1,74 +0,0 @@
-// file : cutl/static-ptr.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_STATIC_PTR_HXX
-#define CUTL_STATIC_PTR_HXX
-
-#include <cstddef> // std::size_t
-
-namespace cutl
-{
- // This class template implements Jerry Schwarz's static
- // initialization technique commonly found in iostream
- // implementations.
- //
- // The second template argument is used to make sure the
- // instantiation of static_ptr is unique.
- //
- template <typename X, typename ID>
- class static_ptr
- {
- public:
- static_ptr ()
- {
- if (count_ == 0)
- x_ = new X;
-
- ++count_;
- }
-
- ~static_ptr ()
- {
- if (--count_ == 0)
- delete x_;
- }
-
- private:
- static_ptr (static_ptr const&);
-
- static_ptr&
- operator= (static_ptr const&);
-
- public:
- X*
- operator-> () const
- {
- return x_;
- }
-
- X&
- operator* () const
- {
- return *x_;
- }
-
- X*
- get () const
- {
- return x_;
- }
-
- private:
- static X* x_;
- static std::size_t count_;
- };
-
- template <typename X, typename ID>
- X* static_ptr<X, ID>::x_ = 0;
-
- template <typename X, typename ID>
- std::size_t static_ptr<X, ID>::count_ = 0;
-}
-
-#endif // CUTL_STATIC_PTR_HXX
diff --git a/libcutl/cutl/xml/exception.hxx b/libcutl/cutl/xml/exception.hxx
deleted file mode 100644
index c4d3c0d..0000000
--- a/libcutl/cutl/xml/exception.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : cutl/xml/exception.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_XML_EXCEPTION_HXX
-#define CUTL_XML_EXCEPTION_HXX
-
-#include <cutl/exception.hxx>
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace xml
- {
- struct LIBCUTL_EXPORT exception: cutl::exception {};
- }
-}
-
-#endif // CUTL_XML_EXCEPTION_HXX
diff --git a/libcutl/cutl/xml/parser.cxx b/libcutl/cutl/xml/parser.cxx
deleted file mode 100644
index 219fb00..0000000
--- a/libcutl/cutl/xml/parser.cxx
+++ /dev/null
@@ -1,827 +0,0 @@
-// file : cutl/xml/parser.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <new> // std::bad_alloc
-#include <cassert>
-#include <cstring> // std::strchr
-#include <istream>
-#include <ostream>
-#include <sstream>
-
-#include <cutl/xml/parser.hxx>
-
-using namespace std;
-
-namespace cutl
-{
- namespace xml
- {
- // parsing
- //
- parsing::
- ~parsing () throw () {}
-
- parsing::
- parsing (const string& n,
- unsigned long long l,
- unsigned long long c,
- const string& d)
- : name_ (n), line_ (l), column_ (c), description_ (d)
- {
- init ();
- }
-
- parsing::
- parsing (const parser& p, const std::string& d)
- : name_ (p.input_name ()),
- line_ (p.line ()),
- column_ (p.column ()),
- description_ (d)
- {
- init ();
- }
-
- void parsing::
- init ()
- {
- ostringstream os;
- if (!name_.empty ())
- os << name_ << ':';
- os << line_ << ':' << column_ << ": error: " << description_;
- what_ = os.str ();
- }
-
- char const* parsing::
- what () const throw ()
- {
- return what_.c_str ();
- }
-
- // parser::event_type
- //
- static const char* parser_event_str[] =
- {
- "start element",
- "end element",
- "start attribute",
- "end attribute",
- "characters",
- "start namespace declaration",
- "end namespace declaration",
- "end of file"
- };
-
- ostream&
- operator<< (ostream& os, parser::event_type e)
- {
- return os << parser_event_str[e];
- }
-
- // parser
- //
- parser::
- ~parser ()
- {
- if (p_ != 0)
- XML_ParserFree (p_);
- }
-
- parser::
- parser (istream& is, const string& iname, feature_type f)
- : is_ (is), iname_ (iname), feature_ (f),
- depth_ (0), state_ (state_next), event_ (eof), queue_ (eof),
- pqname_ (&qname_), pvalue_ (&value_),
- attr_i_ (0), start_ns_i_ (0), end_ns_i_ (0)
- {
- if ((feature_ & receive_attributes_map) != 0 &&
- (feature_ & receive_attributes_event) != 0)
- feature_ &= ~receive_attributes_map;
-
- // Allocate the parser. Make sure nothing else can throw after
- // this call since otherwise we will leak it.
- //
- p_ = XML_ParserCreateNS (0, XML_Char (' '));
-
- if (p_ == 0)
- throw bad_alloc ();
-
- // Get prefixes in addition to namespaces and local names.
- //
- XML_SetReturnNSTriplet (p_, true);
-
- // Set handlers.
- //
- XML_SetUserData(p_, this);
-
- if ((f & receive_elements) != 0)
- {
- XML_SetStartElementHandler (p_, &start_element_);
- XML_SetEndElementHandler (p_, &end_element_);
- }
-
- if ((f & receive_characters) != 0)
- XML_SetCharacterDataHandler (p_, &characters_);
-
- if ((f & receive_namespace_decls) != 0)
- XML_SetNamespaceDeclHandler (p_,
- &start_namespace_decl_,
- &end_namespace_decl_);
- }
-
- void parser::
- handle_error ()
- {
- XML_Error e (XML_GetErrorCode (p_));
-
- if (e == XML_ERROR_ABORTED)
- {
- // For now we only abort the parser in the characters_() handler.
- //
- switch (content ())
- {
- case empty:
- throw parsing (*this, "character in empty content");
- case complex:
- throw parsing (*this, "character in complex content");
- default:
- assert (false);
- }
- }
- else
- throw parsing (iname_,
- XML_GetCurrentLineNumber (p_),
- XML_GetCurrentColumnNumber (p_),
- XML_ErrorString (e));
- }
-
- struct stream_exception_controller
- {
- ~stream_exception_controller ()
- {
- istream::iostate s = is_.rdstate ();
- s &= ~istream::failbit;
-
- // If our error state (sans failbit) intersects with the
- // exception state then that means we have an active
- // exception and changing error/exception state will
- // cause another to be thrown.
- //
- if (!(old_state_ & s))
- {
- // Clear failbit if it was caused by eof.
- //
- if (is_.fail () && is_.eof ())
- is_.clear (s);
-
- is_.exceptions (old_state_);
- }
- }
-
- stream_exception_controller (istream& is)
- : is_ (is), old_state_ (is_.exceptions ())
- {
- is_.exceptions (old_state_ & ~istream::failbit);
- }
-
- private:
- stream_exception_controller (const stream_exception_controller&);
-
- stream_exception_controller&
- operator= (const stream_exception_controller&);
-
- private:
- istream& is_;
- istream::iostate old_state_;
- };
-
- const string& parser::
- attribute (const qname_type& qn) const
- {
- if (const element_entry* e = get_element ())
- {
- attribute_map_type::const_iterator i (e->attr_map_.find (qn));
-
- if (i != e->attr_map_.end ())
- {
- if (!i->second.handled)
- {
- i->second.handled = true;
- e->attr_unhandled_--;
- }
- return i->second.value;
- }
- }
-
- throw parsing (*this, "attribute '" + qn.string () + "' expected");
- }
-
- string parser::
- attribute (const qname_type& qn, const string& dv) const
- {
- if (const element_entry* e = get_element ())
- {
- attribute_map_type::const_iterator i (e->attr_map_.find (qn));
-
- if (i != e->attr_map_.end ())
- {
- if (!i->second.handled)
- {
- i->second.handled = true;
- e->attr_unhandled_--;
- }
- return i->second.value;
- }
- }
-
- return dv;
- }
-
- bool parser::
- attribute_present (const qname_type& qn) const
- {
- if (const element_entry* e = get_element ())
- {
- attribute_map_type::const_iterator i (e->attr_map_.find (qn));
-
- if (i != e->attr_map_.end ())
- {
- if (!i->second.handled)
- {
- i->second.handled = true;
- e->attr_unhandled_--;
- }
- return true;
- }
- }
-
- return false;
- }
-
- void parser::
- next_expect (event_type e)
- {
- if (next () != e)
- throw parsing (*this, string (parser_event_str[e]) + " expected");
- }
-
- void parser::
- next_expect (event_type e, const string& ns, const string& n)
- {
- if (next () != e || namespace_ () != ns || name () != n)
- throw parsing (*this,
- string (parser_event_str[e]) + " '" +
- qname_type (ns, n).string () + "' expected");
- }
-
- const parser::element_entry* parser::
- get_element () const
- {
- // The start_element_() Expat handler may have already provisioned
- // an entry in the element stack. In this case, we need to get the
- // one before it, if any.
- //
- const element_entry* r (0);
- element_state::size_type n (element_state_.size ());
- if (n != 0)
- {
- n--;
- if (element_state_[n].depth == depth_)
- r = &element_state_[n];
- else if (n != 0 && element_state_[n].depth > depth_)
- {
- n--;
- if (element_state_[n].depth == depth_)
- r = &element_state_[n];
- }
- }
- return r;
- }
-
- void parser::
- pop_element ()
- {
- // Make sure there are no unhandled attributes left.
- //
- const element_entry& e (element_state_.back ());
- if (e.attr_unhandled_ != 0)
- {
- // Find the first unhandled attribute and report it.
- //
- for (attribute_map_type::const_iterator i (e.attr_map_.begin ());
- i != e.attr_map_.end (); ++i)
- {
- if (!i->second.handled)
- throw parsing (
- *this, "unexpected attribute '" + i->first.string () + "'");
- }
- assert (false);
- }
-
- element_state_.pop_back ();
- }
-
- parser::event_type parser::
- next_ (bool peek)
- {
- event_type e (next_body ());
-
- // Content-specific processing. Note that we handle characters in the
- // characters_() Expat handler for two reasons. Firstly, it is faster
- // to ignore the whitespaces at the source. Secondly, this allows us
- // to distinguish between element and attribute characters. We can
- // move this processing to the handler because the characters event
- // is never queued.
- //
- switch (e)
- {
- case end_element:
- {
- // If this is a peek, then avoid popping the stack just yet.
- // This way, the attribute map will still be valid until we
- // call next().
- //
- if (!peek)
- {
- if (!element_state_.empty () &&
- element_state_.back ().depth == depth_)
- pop_element ();
-
- depth_--;
- }
- break;
- }
- case start_element:
- {
- const element_entry* e (get_element ());
- switch (e != 0 ? e->content : mixed)
- {
- case empty:
- throw parsing (*this, "element in empty content");
- case simple:
- throw parsing (*this, "element in simple content");
- default:
- break;
- }
-
- // If this is a peek, then delay adjusting the depth.
- //
- if (!peek)
- depth_++;
-
- break;
- }
- default:
- break;
- }
-
- return e;
- }
-
- parser::event_type parser::
- next_body ()
- {
- // See if we have any start namespace declarations we need to return.
- //
- if (start_ns_i_ < start_ns_.size ())
- {
- // Based on the previous event determine what's the next one must be.
- //
- switch (event_)
- {
- case start_namespace_decl:
- {
- if (++start_ns_i_ == start_ns_.size ())
- {
- start_ns_i_ = 0;
- start_ns_.clear ();
- pqname_ = &qname_;
- break; // No more declarations.
- }
- // Fall through.
- }
- case start_element:
- {
- event_ = start_namespace_decl;
- pqname_ = &start_ns_[start_ns_i_];
- return event_;
- }
- default:
- {
- assert (false);
- return event_ = eof;
- }
- }
- }
-
- // See if we have any attributes we need to return as events.
- //
- if (attr_i_ < attr_.size ())
- {
- // Based on the previous event determine what's the next one must be.
- //
- switch (event_)
- {
- case start_attribute:
- {
- event_ = characters;
- pvalue_ = &attr_[attr_i_].value;
- return event_;
- }
- case characters:
- {
- event_ = end_attribute; // Name is already set.
- return event_;
- }
- case end_attribute:
- {
- if (++attr_i_ == attr_.size ())
- {
- attr_i_ = 0;
- attr_.clear ();
- pqname_ = &qname_;
- pvalue_ = &value_;
- break; // No more attributes.
- }
- // Fall through.
- }
- case start_element:
- case start_namespace_decl:
- {
- event_ = start_attribute;
- pqname_ = &attr_[attr_i_].qname;
- return event_;
- }
- default:
- {
- assert (false);
- return event_ = eof;
- }
- }
- }
-
- // See if we have any end namespace declarations we need to return.
- //
- if (end_ns_i_ < end_ns_.size ())
- {
- // Based on the previous event determine what's the next one must be.
- //
- switch (event_)
- {
- case end_namespace_decl:
- {
- if (++end_ns_i_ == end_ns_.size ())
- {
- end_ns_i_ = 0;
- end_ns_.clear ();
- pqname_ = &qname_;
- break; // No more declarations.
- }
- // Fall through.
- }
- // The end namespace declaration comes before the end element
- // which means it can follow pretty much any other event.
- //
- default:
- {
- event_ = end_namespace_decl;
- pqname_ = &end_ns_[end_ns_i_];
- return event_;
- }
- }
- }
-
- // Check the queue.
- //
- if (queue_ != eof)
- {
- event_ = queue_;
- queue_ = eof;
- return event_;
- }
-
- XML_ParsingStatus ps;
- XML_GetParsingStatus (p_, &ps);
-
- switch (ps.parsing)
- {
- case XML_INITIALIZED:
- {
- // As if we finished the previous chunk.
- break;
- }
- case XML_PARSING:
- {
- assert (false);
- return event_ = eof;
- }
- case XML_FINISHED:
- {
- return event_ = eof;
- }
- case XML_SUSPENDED:
- {
- switch (XML_ResumeParser (p_))
- {
- case XML_STATUS_SUSPENDED:
- {
- // If the parser is again in the suspended state, then
- // that means we have the next event.
- //
- return event_;
- }
- case XML_STATUS_OK:
- {
- // Otherwise, we need to get and parse the next chunk of data
- // unless this was the last chunk, in which case this is eof.
- //
- if (ps.finalBuffer)
- return event_ = eof;
-
- break;
- }
- case XML_STATUS_ERROR:
- handle_error ();
- }
-
- break;
- }
- }
-
- // Get and parse the next chunk of data until we get the next event
- // or reach eof.
- //
- event_ = eof;
- XML_Status s;
- do
- {
- const size_t cap (4096);
-
- char* b (static_cast<char*> (XML_GetBuffer (p_, cap)));
- if (b == 0)
- throw bad_alloc ();
-
- // Temporarily unset the exception failbit. Also clear the fail bit
- // when we reset the old state if it was caused by eof.
- //
- {
- stream_exception_controller sec (is_);
- is_.read (b, static_cast<streamsize> (cap));
- }
-
- s = XML_ParseBuffer (p_, static_cast<int> (is_.gcount ()), is_.eof ());
-
- if (s == XML_STATUS_ERROR)
- handle_error ();
-
- } while (s != XML_STATUS_SUSPENDED && !is_.eof ());
-
- return event_;
- }
-
- static void
- split_name (const XML_Char* s, qname& qn)
- {
- string& ns (qn.namespace_ ());
- string& name (qn.name ());
- string& prefix (qn.prefix ());
-
- const char* p (strchr (s, ' '));
-
- if (p == 0)
- {
- ns.clear ();
- name = s;
- prefix.clear ();
- }
- else
- {
- ns.assign (s, 0, p - s);
-
- s = p + 1;
- p = strchr (s, ' ');
-
- if (p == 0)
- {
- name = s;
- prefix.clear ();
- }
- else
- {
- name.assign (s, 0, p - s);
- prefix = p + 1;
- }
- }
- }
-
- void XMLCALL parser::
- start_element_ (void* v, const XML_Char* name, const XML_Char** atts)
- {
- parser& p (*static_cast<parser*> (v));
-
- XML_ParsingStatus ps;
- XML_GetParsingStatus (p.p_, &ps);
-
- // Expat has a (mis)-feature of a possibily calling handlers even
- // after the non-resumable XML_StopParser call.
- //
- if (ps.parsing == XML_FINISHED)
- return;
-
- // Cannot be a followup event.
- //
- assert (ps.parsing == XML_PARSING);
-
- p.event_ = start_element;
- split_name (name, p.qname_);
-
- p.line_ = XML_GetCurrentLineNumber (p.p_);
- p.column_ = XML_GetCurrentColumnNumber (p.p_);
-
- // Handle attributes.
- //
- if (*atts != 0)
- {
- bool am ((p.feature_ & receive_attributes_map) != 0);
- bool ae ((p.feature_ & receive_attributes_event) != 0);
-
- // Provision an entry for this element.
- //
- element_entry* pe (0);
- if (am)
- {
- p.element_state_.push_back (element_entry (p.depth_ + 1));
- pe = &p.element_state_.back ();
- }
-
- if (am || ae)
- {
- for (; *atts != 0; atts += 2)
- {
- if (am)
- {
- qname_type qn;
- split_name (*atts, qn);
- attribute_map_type::value_type v (qn, attribute_value_type ());
- v.second.value = *(atts + 1);
- v.second.handled = false;
- pe->attr_map_.insert (v);
- }
- else
- {
- p.attr_.push_back (attribute_type ());
- split_name (*atts, p.attr_.back ().qname);
- p.attr_.back ().value = *(atts + 1);
- }
- }
-
- if (am)
- pe->attr_unhandled_ = pe->attr_map_.size ();
- }
- }
-
- XML_StopParser (p.p_, true);
- }
-
- void XMLCALL parser::
- end_element_ (void* v, const XML_Char* name)
- {
- parser& p (*static_cast<parser*> (v));
-
- XML_ParsingStatus ps;
- XML_GetParsingStatus (p.p_, &ps);
-
- // Expat has a (mis)-feature of a possibily calling handlers even
- // after the non-resumable XML_StopParser call.
- //
- if (ps.parsing == XML_FINISHED)
- return;
-
- // This can be a followup event for empty elements (<foo/>). In this
- // case the element name is already set.
- //
- if (ps.parsing != XML_PARSING)
- p.queue_ = end_element;
- else
- {
- // We may also have the end namespace declaration events which
- // should come before the end element. If that's the case, then
- // queue the end element and return the end namespace as the next
- // event.
- //
- if (p.end_ns_i_ < p.end_ns_.size ())
- {
- p.event_ = end_namespace_decl;
- p.queue_ = end_element;
- }
- else
- p.event_ = end_element;
-
- split_name (name, p.qname_);
-
- p.line_ = XML_GetCurrentLineNumber (p.p_);
- p.column_ = XML_GetCurrentColumnNumber (p.p_);
-
- XML_StopParser (p.p_, true);
- }
- }
-
- void XMLCALL parser::
- characters_ (void* v, const XML_Char* s, int n)
- {
- parser& p (*static_cast<parser*> (v));
-
- XML_ParsingStatus ps;
- XML_GetParsingStatus (p.p_, &ps);
-
- // Expat has a (mis)-feature of a possibily calling handlers even
- // after the non-resumable XML_StopParser call.
- //
- if (ps.parsing == XML_FINISHED)
- return;
-
- // If this is empty or complex content, see if these are whitespaces.
- //
- switch (p.content ())
- {
- case empty:
- case complex:
- {
- for (int i (0); i != n; ++i)
- {
- char c (s[i]);
- if (c == 0x20 || c == 0x0A || c == 0x0D || c == 0x09)
- continue;
-
- // It would have been easier to throw the exception directly,
- // however, the Expat code is most likely not exception safe.
- //
- p.line_ = XML_GetCurrentLineNumber (p.p_);
- p.column_ = XML_GetCurrentColumnNumber (p.p_);
- XML_StopParser (p.p_, false);
- break;
- }
- return;
- }
- default:
- break;
- }
-
- // This can be a followup event for another character event. In
- // this case simply append the data.
- //
- if (ps.parsing != XML_PARSING)
- {
- assert (p.event_ == characters);
- p.value_.append (s, n);
- }
- else
- {
- p.event_ = characters;
- p.value_.assign (s, n);
-
- p.line_ = XML_GetCurrentLineNumber (p.p_);
- p.column_ = XML_GetCurrentColumnNumber (p.p_);
-
- XML_StopParser (p.p_, true);
- }
- }
-
- void XMLCALL parser::
- start_namespace_decl_ (void* v, const XML_Char* prefix, const XML_Char* ns)
- {
- parser& p (*static_cast<parser*> (v));
-
- XML_ParsingStatus ps;
- XML_GetParsingStatus (p.p_, &ps);
-
- // Expat has a (mis)-feature of a possibily calling handlers even
- // after the non-resumable XML_StopParser call.
- //
- if (ps.parsing == XML_FINISHED)
- return;
-
- p.start_ns_.push_back (qname_type ());
- p.start_ns_.back ().prefix () = (prefix != 0 ? prefix : "");
- p.start_ns_.back ().namespace_ () = (ns != 0 ? ns : "");
- }
-
- void XMLCALL parser::
- end_namespace_decl_ (void* v, const XML_Char* prefix)
- {
- parser& p (*static_cast<parser*> (v));
-
- XML_ParsingStatus ps;
- XML_GetParsingStatus (p.p_, &ps);
-
- // Expat has a (mis)-feature of a possibily calling handlers even
- // after the non-resumable XML_StopParser call.
- //
- if (ps.parsing == XML_FINISHED)
- return;
-
- p.end_ns_.push_back (qname_type ());
- p.end_ns_.back ().prefix () = (prefix != 0 ? prefix : "");
- }
- }
-}
diff --git a/libcutl/cutl/xml/parser.hxx b/libcutl/cutl/xml/parser.hxx
deleted file mode 100644
index 5c3c959..0000000
--- a/libcutl/cutl/xml/parser.hxx
+++ /dev/null
@@ -1,419 +0,0 @@
-// file : cutl/xml/parser.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_XML_PARSER_HXX
-#define CUTL_XML_PARSER_HXX
-
-#include <map>
-#include <vector>
-#include <string>
-#include <iosfwd>
-#include <cstddef> // std::size_t
-#include <cassert>
-
-#include <cutl/details/config.hxx> // LIBCUTL_EXTERNAL_EXPAT
-
-#ifndef LIBCUTL_EXTERNAL_EXPAT
-# include <cutl/details/expat/expat.h>
-#else
-# include <expat.h>
-#endif
-
-// We only support UTF-8 expat.
-//
-#ifdef XML_UNICODE
-# error UTF-16 expat (XML_UNICODE defined) is not supported
-#endif
-
-#include <cutl/xml/qname.hxx>
-#include <cutl/xml/exception.hxx>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace xml
- {
- class parser;
-
- struct LIBCUTL_EXPORT parsing: exception
- {
- virtual
- ~parsing () throw ();
-
- parsing (const std::string& name,
- unsigned long long line,
- unsigned long long column,
- const std::string& description);
-
- parsing (const parser&, const std::string& description);
-
- const std::string&
- name () const {return name_;}
-
- unsigned long long
- line () const {return line_;}
-
- unsigned long long
- column () const {return column_;}
-
- const std::string&
- description () const {return description_;}
-
- virtual const char*
- what () const throw ();
-
- private:
- void
- init ();
-
- private:
- std::string name_;
- unsigned long long line_;
- unsigned long long column_;
- std::string description_;
- std::string what_;
- };
-
- class LIBCUTL_EXPORT parser
- {
- public:
- ~parser ();
-
- typedef xml::qname qname_type;
- typedef unsigned short feature_type;
-
- // If both receive_attributes_event and receive_attributes_map are
- // specified, then receive_attributes_event is assumed.
- //
- static const feature_type receive_elements = 0x0001;
- static const feature_type receive_characters = 0x0002;
- static const feature_type receive_attributes_map = 0x0004;
- static const feature_type receive_attributes_event = 0x0008;
- static const feature_type receive_namespace_decls = 0x0010;
-
- static const feature_type receive_default = receive_elements |
- receive_characters |
- receive_attributes_map;
-
- // Parse std::istream. Input name is used in diagnostics to identify
- // the document being parsed. std::ios_base::failure exception is
- // used to report io errors (badbit and failbit).
- //
- parser (std::istream&,
- const std::string& input_name,
- feature_type = receive_default);
-
- const std::string&
- input_name () const {return iname_;}
-
- // Parsing events.
- //
- public:
- enum event_type
- {
- // If adding new events, also update the stream insertion operator.
- //
- start_element,
- end_element,
- start_attribute,
- end_attribute,
- characters,
- start_namespace_decl,
- end_namespace_decl,
- eof
- };
-
- event_type
- next ()
- {
- if (state_ == state_next)
- return next_ (false);
- else
- {
- // If we previously peeked at start/end_element, then adjust
- // state accordingly.
- //
- switch (event_)
- {
- case end_element:
- {
- if (!element_state_.empty () &&
- element_state_.back ().depth == depth_)
- pop_element ();
-
- depth_--;
- break;
- }
- case start_element:
- {
- depth_++;
- break;
- }
- default:
- break;
- }
-
- state_ = state_next;
- return event_;
- }
- }
-
- // Get the next event and make sure that it's what's expected. If it
- // is not, then throw an appropriate parsing exception.
- //
- void
- next_expect (event_type);
-
- void
- next_expect (event_type, const qname_type& qname);
-
- void
- next_expect (event_type, const std::string& name);
-
- void
- next_expect (event_type, const std::string& ns, const std::string& name);
-
- event_type
- peek ()
- {
- if (state_ == state_peek)
- return event_;
- else
- {
- event_type e (next_ (true));
- state_ = state_peek; // Set it after the call to next_().
- return e;
- }
- }
-
- // Return the even that was last returned by the call to next() or
- // peek().
- //
- event_type
- event () {return event_;}
-
- // Event data.
- //
- public:
- const qname_type& qname () const {return *pqname_;}
-
- const std::string& namespace_ () const {return pqname_->namespace_ ();}
- const std::string& name () const {return pqname_->name ();}
- const std::string& prefix () const {return pqname_->prefix ();}
-
- const std::string& value () const {return *pvalue_;}
-
- unsigned long long line () const {return line_;}
- unsigned long long column () const {return column_;}
-
- // Attribute map lookup. If attribute is not found, then the version
- // without the default value throws an appropriate parsing exception
- // while the version with the default value returns that value.
- //
- // Note also that there is no attribute(ns,name) version since it
- // would conflict with attribute(name,dv) (qualified attributes
- // are not very common).
- //
- // Attribute map is valid throughout at the "element level" until
- // end_element and not just during start_element. As a special case,
- // the map is still valid after peek() that returned end_element until
- // this end_element event is retrieved with next().
- //
- const std::string&
- attribute (const std::string& name) const;
-
- template <typename T>
- T
- attribute (const std::string& name) const;
-
- std::string
- attribute (const std::string& name, const std::string& dv) const;
-
- template <typename T>
- T
- attribute (const std::string& name, const T& dv) const;
-
- const std::string&
- attribute (const qname_type& qname) const;
-
- template <typename T>
- T
- attribute (const qname_type& qname) const;
-
- std::string
- attribute (const qname_type& qname, const std::string& dv) const;
-
- template <typename T>
- T
- attribute (const qname_type& qname, const T& dv) const;
-
- bool
- attribute_present (const std::string& name) const;
-
- bool
- attribute_present (const qname_type& qname) const;
-
- // Low-level attribute map access. Note that this API assumes
- // all attributes are handled.
- //
- struct attribute_value_type
- {
- std::string value;
- mutable bool handled;
- };
-
- typedef std::map<qname_type, attribute_value_type> attribute_map_type;
-
- const attribute_map_type&
- attribute_map () const;
-
- // Optional content processing.
- //
- public:
- enum content_type
- {
- // element characters whitespaces
- empty, // no no ignored
- simple, // no yes preserved
- complex, // yes no ignored
- mixed // yes yes preserved
- };
-
- // Note that you cannot get/set content while peeking.
- //
- void
- content (content_type c)
- {
- assert (state_ == state_next);
-
- if (!element_state_.empty () && element_state_.back ().depth == depth_)
- element_state_.back ().content = c;
- else
- element_state_.push_back (element_entry (depth_, c));
- }
-
- content_type
- content () const
- {
- assert (state_ == state_next);
-
- return
- !element_state_.empty () && element_state_.back ().depth == depth_
- ? element_state_.back ().content
- : mixed;
- }
-
- private:
- static void XMLCALL
- start_element_ (void*, const XML_Char*, const XML_Char**);
-
- static void XMLCALL
- end_element_ (void*, const XML_Char*);
-
- static void XMLCALL
- characters_ (void*, const XML_Char*, int);
-
- static void XMLCALL
- start_namespace_decl_ (void*, const XML_Char*, const XML_Char*);
-
- static void XMLCALL
- end_namespace_decl_ (void*, const XML_Char*);
-
- private:
- event_type
- next_ (bool peek);
-
- event_type
- next_body ();
-
- void
- handle_error ();
-
- private:
- std::istream& is_;
- const std::string iname_;
- feature_type feature_;
-
- XML_Parser p_;
- std::size_t depth_;
- enum {state_next, state_peek} state_;
- event_type event_;
- event_type queue_;
-
- qname_type qname_;
- std::string value_;
-
- // These are used to avoid copying when we are handling attributes
- // and namespace decls.
- //
- const qname_type* pqname_;
- const std::string* pvalue_;
-
- unsigned long long line_;
- unsigned long long column_;
-
- // Attributes as events.
- //
- struct attribute_type
- {
- qname_type qname;
- std::string value;
- };
-
- typedef std::vector<attribute_type> attributes;
-
- attributes attr_;
- attributes::size_type attr_i_; // Index of the current attribute.
-
- // Namespace declarations.
- //
- typedef std::vector<qname_type> namespace_decls;
-
- namespace_decls start_ns_;
- namespace_decls::size_type start_ns_i_; // Index of the current decl.
-
- namespace_decls end_ns_;
- namespace_decls::size_type end_ns_i_; // Index of the current decl.
-
- // Element state consisting of the content model and attribute map.
- //
- struct element_entry
- {
- element_entry (std::size_t d, content_type c = mixed)
- : depth (d), content (c), attr_unhandled_ (0) {}
-
- std::size_t depth;
- content_type content;
- attribute_map_type attr_map_;
- mutable attribute_map_type::size_type attr_unhandled_;
- };
-
- typedef std::vector<element_entry> element_state;
- std::vector<element_entry> element_state_;
-
- // Empty attribute map to return when an element has no attributes.
- //
- const attribute_map_type empty_attr_map_;
-
- // Return the element entry corresponding to the current depth, if
- // exists, and NULL otherwise.
- //
- const element_entry*
- get_element () const;
-
- void
- pop_element ();
- };
-
- LIBCUTL_EXPORT
- std::ostream&
- operator<< (std::ostream&, parser::event_type);
- }
-}
-
-#include <cutl/xml/parser.ixx>
-#include <cutl/xml/parser.txx>
-
-#endif // CUTL_XML_PARSER_HXX
diff --git a/libcutl/cutl/xml/parser.ixx b/libcutl/cutl/xml/parser.ixx
deleted file mode 100644
index 65834b6..0000000
--- a/libcutl/cutl/xml/parser.ixx
+++ /dev/null
@@ -1,74 +0,0 @@
-// file : cutl/xml/parser.ixx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/xml/value-traits.hxx>
-
-namespace cutl
-{
- namespace xml
- {
- inline const std::string& parser::
- attribute (const std::string& n) const
- {
- return attribute (qname_type (n));
- }
-
- template <typename T>
- inline T parser::
- attribute (const std::string& n) const
- {
- return attribute<T> (qname_type (n));
- }
-
- inline std::string parser::
- attribute (const std::string& n, const std::string& dv) const
- {
- return attribute (qname_type (n), dv);
- }
-
- template <typename T>
- inline T parser::
- attribute (const std::string& n, const T& dv) const
- {
- return attribute<T> (qname_type (n), dv);
- }
-
- template <typename T>
- inline T parser::
- attribute (const qname_type& qn) const
- {
- return value_traits<T>::parse (attribute (qn), *this);
- }
-
- inline bool parser::
- attribute_present (const std::string& n) const
- {
- return attribute_present (qname_type (n));
- }
-
- inline const parser::attribute_map_type& parser::
- attribute_map () const
- {
- if (const element_entry* e = get_element ())
- {
- e->attr_unhandled_ = 0; // Assume all handled.
- return e->attr_map_;
- }
-
- return empty_attr_map_;
- }
-
- inline void parser::
- next_expect (event_type e, const qname_type& qn)
- {
- return next_expect (e, qn.namespace_ (), qn.name ());
- }
-
- inline void parser::
- next_expect (event_type e, const std::string& n)
- {
- return next_expect (e, std::string (), n);
- }
- }
-}
diff --git a/libcutl/cutl/xml/parser.txx b/libcutl/cutl/xml/parser.txx
deleted file mode 100644
index 8189883..0000000
--- a/libcutl/cutl/xml/parser.txx
+++ /dev/null
@@ -1,33 +0,0 @@
-// file : cutl/xml/parser.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/xml/value-traits.hxx>
-
-namespace cutl
-{
- namespace xml
- {
- template <typename T>
- T parser::
- attribute (const qname_type& qn, const T& dv) const
- {
- if (const element_entry* e = get_element ())
- {
- attribute_map_type::const_iterator i (e->attr_map_.find (qn));
-
- if (i != e->attr_map_.end ())
- {
- if (!i->second.handled)
- {
- i->second.handled = true;
- e->attr_unhandled_--;
- }
- return value_traits<T>::parse (i->second.value, *this);
- }
- }
-
- return dv;
- }
- }
-}
diff --git a/libcutl/cutl/xml/qname.cxx b/libcutl/cutl/xml/qname.cxx
deleted file mode 100644
index a32add2..0000000
--- a/libcutl/cutl/xml/qname.cxx
+++ /dev/null
@@ -1,35 +0,0 @@
-// file : cutl/xml/qname.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <ostream>
-
-#include <cutl/xml/qname.hxx>
-
-using namespace std;
-
-namespace cutl
-{
- namespace xml
- {
- string qname::
- string () const
- {
- std::string r;
- if (!ns_.empty ())
- {
- r += ns_;
- r += '#';
- }
-
- r += name_;
- return r;
- }
-
- ostream&
- operator<< (ostream& os, const qname& qn)
- {
- return os << qn.string ();
- }
- }
-}
diff --git a/libcutl/cutl/xml/qname.hxx b/libcutl/cutl/xml/qname.hxx
deleted file mode 100644
index 0964705..0000000
--- a/libcutl/cutl/xml/qname.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-// file : cutl/xml/qname.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_XML_QNAME_HXX
-#define CUTL_XML_QNAME_HXX
-
-#include <string>
-#include <iosfwd>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace xml
- {
- // Note that the optional prefix is just a "syntactic sugar". In
- // particular, it is ignored by the comparison operators and the
- // std::ostream insertion operator.
- //
- class LIBCUTL_EXPORT qname
- {
- public:
- qname () {}
- qname (const std::string& name): name_ (name) {}
- qname (const std::string& ns, const std::string& name)
- : ns_ (ns), name_ (name) {}
- qname (const std::string& ns,
- const std::string& name,
- const std::string& prefix)
- : ns_ (ns), name_ (name), prefix_ (prefix) {}
-
- const std::string& namespace_ () const {return ns_;}
- const std::string& name () const {return name_;}
- const std::string& prefix () const {return prefix_;}
-
- std::string& namespace_ () {return ns_;}
- std::string& name () {return name_;}
- std::string& prefix () {return prefix_;}
-
- // Printable representation in the [<namespace>#]<name> form.
- //
- std::string
- string () const;
-
- // Note that comparison operators
- //
- public:
- friend bool
- operator< (const qname& x, const qname& y)
- {
- return x.ns_ < y.ns_ || (x.ns_ == y.ns_ && x.name_ < y.name_);
- }
-
- friend bool
- operator== (const qname& x, const qname& y)
- {
- return x.ns_ == y.ns_ && x.name_ == y.name_;
- }
-
- friend bool
- operator!= (const qname& x, const qname& y)
- {
- return !(x == y);
- }
-
- private:
- std::string ns_;
- std::string name_;
- std::string prefix_;
- };
-
- LIBCUTL_EXPORT
- std::ostream&
- operator<< (std::ostream&, const qname&);
- }
-}
-
-#endif // CUTL_XML_QNAME_HXX
diff --git a/libcutl/cutl/xml/serializer.cxx b/libcutl/cutl/xml/serializer.cxx
deleted file mode 100644
index 8da3df5..0000000
--- a/libcutl/cutl/xml/serializer.cxx
+++ /dev/null
@@ -1,258 +0,0 @@
-// file : cutl/xml/serializer.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <new> // std::bad_alloc
-#include <cstring> // std::strlen
-
-#include <cutl/xml/serializer.hxx>
-
-using namespace std;
-
-namespace cutl
-{
- namespace xml
- {
- // serialization
- //
- serialization::
- ~serialization () throw () {}
-
- serialization::
- serialization (const string& n, const string& d)
- : name_ (n), description_ (d)
- {
- init ();
- }
-
- serialization::
- serialization (const serializer& s, const std::string& d)
- : name_ (s.output_name ()), description_ (d)
- {
- init ();
- }
-
- void serialization::
- init ()
- {
- if (!name_.empty ())
- {
- what_ += name_;
- what_ += ": ";
- }
-
- what_ += "error: ";
- what_ += description_;
- }
-
- char const* serialization::
- what () const throw ()
- {
- return what_.c_str ();
- }
-
- // serializer
- //
- extern "C" genxStatus
- genx_write (void* p, constUtf8 us)
- {
- // It would have been easier to throw the exception directly,
- // however, the Genx code is most likely not exception safe.
- //
- ostream* os (static_cast<ostream*> (p));
- const char* s (reinterpret_cast<const char*> (us));
- os->write (s, static_cast<streamsize> (strlen (s)));
- return os->good () ? GENX_SUCCESS : GENX_IO_ERROR;
- }
-
- extern "C" genxStatus
- genx_write_bound (void* p, constUtf8 start, constUtf8 end)
- {
- ostream* os (static_cast<ostream*> (p));
- const char* s (reinterpret_cast<const char*> (start));
- streamsize n (static_cast<streamsize> (end - start));
- os->write (s, n);
- return os->good () ? GENX_SUCCESS : GENX_IO_ERROR;
- }
-
- extern "C" genxStatus
- genx_flush (void* p)
- {
- ostream* os (static_cast<ostream*> (p));
- os->flush ();
- return os->good () ? GENX_SUCCESS : GENX_IO_ERROR;
- }
-
- serializer::
- ~serializer ()
- {
- if (s_ != 0)
- genxDispose (s_);
- }
-
- serializer::
- serializer (ostream& os, const string& oname, unsigned short ind)
- : os_ (os), os_state_ (os.exceptions ()), oname_ (oname), depth_ (0)
- {
- // Temporarily disable exceptions on the stream.
- //
- os_.exceptions (ostream::goodbit);
-
- // Allocate the serializer. Make sure nothing else can throw after
- // this call since otherwise we will leak it.
- //
- s_ = genxNew (0, 0, 0);
-
- if (s_ == 0)
- throw bad_alloc ();
-
- genxSetUserData (s_, &os_);
-
- if (ind != 0)
- genxSetPrettyPrint (s_, ind);
-
- sender_.send = &genx_write;
- sender_.sendBounded = &genx_write_bound;
- sender_.flush = &genx_flush;
-
- if (genxStatus e = genxStartDocSender (s_, &sender_))
- {
- string m (genxGetErrorMessage (s_, e));
- genxDispose (s_);
- throw serialization (oname, m);
- }
- }
-
- void serializer::
- handle_error (genxStatus e)
- {
- switch (e)
- {
- case GENX_ALLOC_FAILED:
- throw bad_alloc ();
- case GENX_IO_ERROR:
- // Restoring the original exception state should trigger the
- // exception. If it doesn't (e.g., because the user didn't
- // configure the stream to throw), then fall back to the
- // serialiation exception.
- //
- os_.exceptions (os_state_);
- // Fall through.
- default:
- throw serialization (oname_, genxGetErrorMessage (s_, e));
- }
- }
-
- void serializer::
- start_element (const string& ns, const string& name)
- {
- if (genxStatus e = genxStartElementLiteral (
- s_,
- reinterpret_cast<constUtf8> (ns.empty () ? 0 : ns.c_str ()),
- reinterpret_cast<constUtf8> (name.c_str ())))
- handle_error (e);
-
- depth_++;
- }
-
- void serializer::
- end_element ()
- {
- if (genxStatus e = genxEndElement (s_))
- handle_error (e);
-
- // Call EndDocument() if we are past the root element.
- //
- if (--depth_ == 0)
- {
- if (genxStatus e = genxEndDocument (s_))
- handle_error (e);
-
- // Also restore the original exception state on the stream.
- //
- os_.exceptions (os_state_);
- }
- }
-
- void serializer::
- start_attribute (const string& ns, const string& name)
- {
- if (genxStatus e = genxStartAttributeLiteral (
- s_,
- reinterpret_cast<constUtf8> (ns.empty () ? 0 : ns.c_str ()),
- reinterpret_cast<constUtf8> (name.c_str ())))
- handle_error (e);
- }
-
- void serializer::
- end_attribute ()
- {
- if (genxStatus e = genxEndAttribute (s_))
- handle_error (e);
- }
-
- void serializer::
- attribute (const string& ns,
- const string& name,
- const string& value)
- {
- if (genxStatus e = genxAddAttributeLiteral (
- s_,
- reinterpret_cast<constUtf8> (ns.empty () ? 0 : ns.c_str ()),
- reinterpret_cast<constUtf8> (name.c_str ()),
- reinterpret_cast<constUtf8> (value.c_str ())))
- handle_error (e);
- }
-
- void serializer::
- characters (const string& value)
- {
- if (genxStatus e = genxAddCountedText (
- s_,
- reinterpret_cast<constUtf8> (value.c_str ()),
- static_cast<int> (value.size ())))
- handle_error (e);
- }
-
- void serializer::
- namespace_decl (const string& ns, const string& p)
- {
- if (genxStatus e = ns.empty () && p.empty ()
- ? genxUnsetDefaultNamespace (s_)
- : genxAddNamespaceLiteral (
- s_,
- reinterpret_cast<constUtf8> (ns.c_str ()),
- reinterpret_cast<constUtf8> (p.c_str ())))
- handle_error (e);
- }
-
- void serializer::
- xml_decl (const string& ver, const string& enc, const string& stl)
- {
- if (genxStatus e = genxXmlDeclaration (
- s_,
- reinterpret_cast<constUtf8> (ver.c_str ()),
- (enc.empty () ? 0 : reinterpret_cast<constUtf8> (enc.c_str ())),
- (stl.empty () ? 0 : reinterpret_cast<constUtf8> (stl.c_str ()))))
- handle_error (e);
- }
-
- bool serializer::
- lookup_namespace_prefix (const string& ns, string& p)
- {
- // Currently Genx will create a namespace mapping if one doesn't
- // already exist.
- //
- genxStatus e;
- genxNamespace gns (
- genxDeclareNamespace (
- s_, reinterpret_cast<constUtf8> (ns.c_str ()), 0, &e));
-
- if (e != GENX_SUCCESS)
- handle_error (e);
-
- p = reinterpret_cast<const char*> (genxGetNamespacePrefix (gns));
- return true;
- }
- }
-}
diff --git a/libcutl/cutl/xml/serializer.hxx b/libcutl/cutl/xml/serializer.hxx
deleted file mode 100644
index 88164e2..0000000
--- a/libcutl/cutl/xml/serializer.hxx
+++ /dev/null
@@ -1,183 +0,0 @@
-// file : cutl/xml/serializer.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_XML_SERIALIZER_HXX
-#define CUTL_XML_SERIALIZER_HXX
-
-#include <string>
-#include <ostream>
-#include <cstddef> // std::size_t
-
-#include <cutl/details/genx/genx.h>
-
-#include <cutl/xml/qname.hxx>
-#include <cutl/xml/exception.hxx>
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace xml
- {
- class serializer;
-
- struct LIBCUTL_EXPORT serialization: exception
- {
- virtual
- ~serialization () throw ();
-
- serialization (const std::string& name,
- const std::string& description);
-
- serialization (const serializer&, const std::string& description);
-
- const std::string&
- name () const {return name_;}
-
- const std::string&
- description () const {return description_;}
-
- virtual const char*
- what () const throw ();
-
- private:
- void
- init ();
-
- private:
- std::string name_;
- std::string description_;
- std::string what_;
- };
-
- class LIBCUTL_EXPORT serializer
- {
- public:
- ~serializer ();
-
- typedef xml::qname qname_type;
-
- // Serialize to std::ostream. Output name is used in diagnostics to
- // identify the document being serialized. std::ios_base::failure
- // exception is used to report io errors (badbit and failbit). The
- // indentation argument specifies the number of indentation spaces
- // that should be used for pretty-printing. If 0 is passed, no
- // pretty-printing is performed.
- //
- serializer (std::ostream&,
- const std::string& output_name,
- unsigned short indentation = 2);
-
- const std::string&
- output_name () const {return oname_;}
-
- // Serialization functions.
- //
- public:
-
- // Elements.
- //
- void
- start_element (const qname_type& qname);
-
- void
- start_element (const std::string& name);
-
- void
- start_element (const std::string& ns, const std::string& name);
-
- void
- end_element ();
-
- // Attributes.
- //
- void
- start_attribute (const qname_type& qname);
-
- void
- start_attribute (const std::string& name);
-
- void
- start_attribute (const std::string& ns, const std::string& name);
-
- void
- end_attribute ();
-
- void
- attribute (const qname_type& qname, const std::string& value);
-
- template <typename T>
- void
- attribute (const qname_type& qname, const T& value);
-
- void
- attribute (const std::string& name, const std::string& value);
-
- template <typename T>
- void
- attribute (const std::string& name, const T& value);
-
- void
- attribute (const std::string& ns,
- const std::string& name,
- const std::string& value);
-
- template <typename T>
- void
- attribute (const std::string& ns,
- const std::string& name,
- const T& value);
-
- // Characters.
- //
- void
- characters (const std::string& value);
-
- template <typename T>
- void
- characters (const T& value);
-
- // Namespaces declaration. If prefix is empty, then the default
- // namespace is declared. If both prefix and namespace are empty,
- // then the default namespace declaration is cleared (xmlns="").
- //
- void
- namespace_decl (const std::string& ns, const std::string& prefix);
-
- // XML Declaration. If encoding or standalone are not specified,
- // then these attributes are omitted from the output.
- //
- void
- xml_decl (const std::string& version = "1.0",
- const std::string& encoding = "UTF-8",
- const std::string& standalone = "");
-
- // Other functions.
- //
- public:
- // Return true if there is a mapping. In this case, prefix contains
- // the mapped prefix.
- //
- bool
- lookup_namespace_prefix (const std::string& ns, std::string& prefix);
-
- private:
- void
- handle_error (genxStatus);
-
- private:
- std::ostream& os_;
- std::ostream::iostate os_state_; // Original exception state.
- const std::string oname_;
-
- genxWriter s_;
- genxSender sender_;
- std::size_t depth_;
- };
- }
-}
-
-#include <cutl/xml/serializer.ixx>
-
-#endif // CUTL_XML_SERIALIZER_HXX
diff --git a/libcutl/cutl/xml/serializer.ixx b/libcutl/cutl/xml/serializer.ixx
deleted file mode 100644
index 11ff33a..0000000
--- a/libcutl/cutl/xml/serializer.ixx
+++ /dev/null
@@ -1,75 +0,0 @@
-// file : cutl/xml/serializer.ixx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/xml/value-traits.hxx>
-
-namespace cutl
-{
- namespace xml
- {
- inline void serializer::
- start_element (const qname_type& qname)
- {
- start_element (qname.namespace_ (), qname.name ());
- }
-
- inline void serializer::
- start_element (const std::string& name)
- {
- start_element (std::string (), name);
- }
-
- inline void serializer::
- start_attribute (const qname_type& qname)
- {
- start_attribute (qname.namespace_ (), qname.name ());
- }
-
- inline void serializer::
- start_attribute (const std::string& name)
- {
- start_attribute (std::string (), name);
- }
-
- inline void serializer::
- attribute (const qname_type& qname, const std::string& value)
- {
- attribute (qname.namespace_ (), qname.name (), value);
- }
-
- template <typename T>
- inline void serializer::
- attribute (const qname_type& qname, const T& value)
- {
- attribute (qname, value_traits<T>::serialize (value, *this));
- }
-
- inline void serializer::
- attribute (const std::string& name, const std::string& value)
- {
- attribute (std::string (), name, value);
- }
-
- template <typename T>
- inline void serializer::
- attribute (const std::string& name, const T& value)
- {
- attribute (name, value_traits<T>::serialize (value, *this));
- }
-
- template <typename T>
- inline void serializer::
- attribute (const std::string& ns, const std::string& name, const T& value)
- {
- attribute (ns, name, value_traits<T>::serialize (value, *this));
- }
-
- template <typename T>
- inline void serializer::
- characters (const T& value)
- {
- characters (value_traits<T>::serialize (value, *this));
- }
- }
-}
diff --git a/libcutl/cutl/xml/value-traits.cxx b/libcutl/cutl/xml/value-traits.cxx
deleted file mode 100644
index 7598645..0000000
--- a/libcutl/cutl/xml/value-traits.cxx
+++ /dev/null
@@ -1,25 +0,0 @@
-// file : cutl/xml/value-traits.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cutl/xml/parser.hxx>
-#include <cutl/xml/serializer.hxx>
-
-using namespace std;
-
-namespace cutl
-{
- namespace xml
- {
- bool default_value_traits<bool>::
- parse (string s, const parser& p)
- {
- if (s == "true" || s == "1" || s == "True" || s == "TRUE")
- return true;
- else if (s == "false" || s == "0" || s == "False" || s == "FALSE")
- return false;
- else
- throw parsing (p, "invalid bool value '" + s + "'");
- }
- }
-}
diff --git a/libcutl/cutl/xml/value-traits.hxx b/libcutl/cutl/xml/value-traits.hxx
deleted file mode 100644
index 0b95205..0000000
--- a/libcutl/cutl/xml/value-traits.hxx
+++ /dev/null
@@ -1,53 +0,0 @@
-// file : cutl/xml/value-traits.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#ifndef CUTL_XML_VALUE_TRAITS_HXX
-#define CUTL_XML_VALUE_TRAITS_HXX
-
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <cutl/details/export.hxx>
-
-namespace cutl
-{
- namespace xml
- {
- class parser;
- class serializer;
-
- template <typename T>
- struct default_value_traits
- {
- static T
- parse (std::string, const parser&);
-
- static std::string
- serialize (const T&, const serializer&);
- };
-
- template <>
- struct LIBCUTL_EXPORT default_value_traits<bool>
- {
- static bool
- parse (std::string, const parser&);
-
- static std::string
- serialize (bool v, const serializer&)
- {
- return v ? "true" : "false";
- }
- };
-
- template <typename T>
- struct value_traits: default_value_traits<T> {};
-
- template <typename T, std::size_t N>
- struct value_traits<T[N]>: default_value_traits<const T*> {};
- }
-}
-
-#include <cutl/xml/value-traits.txx>
-
-#endif // CUTL_XML_VALUE_TRAITS_HXX
diff --git a/libcutl/cutl/xml/value-traits.txx b/libcutl/cutl/xml/value-traits.txx
deleted file mode 100644
index 4868dba..0000000
--- a/libcutl/cutl/xml/value-traits.txx
+++ /dev/null
@@ -1,35 +0,0 @@
-// file : cutl/xml/value-traits.txx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <sstream>
-
-#include <cutl/xml/parser.hxx>
-#include <cutl/xml/serializer.hxx>
-
-namespace cutl
-{
- namespace xml
- {
- template <typename T>
- T default_value_traits<T>::
- parse (std::string s, const parser& p)
- {
- T r;
- std::istringstream is (s);
- if (!(is >> r && is.eof ()) )
- throw parsing (p, "invalid value '" + s + "'");
- return r;
- }
-
- template <typename T>
- std::string default_value_traits<T>::
- serialize (const T& v, const serializer& s)
- {
- std::ostringstream os;
- if (!(os << v))
- throw serialization (s, "invalid value");
- return os.str ();
- }
- }
-}
diff --git a/libcutl/doc/components.txt b/libcutl/doc/components.txt
deleted file mode 100644
index 993488a..0000000
--- a/libcutl/doc/components.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Components
-
- core: meta/ shared-ptr/ shared-ptr.hxx exception.hxx
- container: container/
- compiler: compiler/
- fs: fs/
-
-
diff --git a/libcutl/libcutl-vc10.sln b/libcutl/libcutl-vc10.sln
deleted file mode 100644
index d28c0b2..0000000
--- a/libcutl/libcutl-vc10.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcutl", "cutl\libcutl-vc10.vcxproj", "{A3903F70-CC9F-4D1C-9793-221EAE08DBB5}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {A3903F70-CC9F-4D1C-9793-221EAE08DBB5}.Debug|Win32.ActiveCfg = Debug|Win32
- {A3903F70-CC9F-4D1C-9793-221EAE08DBB5}.Debug|Win32.Build.0 = Debug|Win32
- {A3903F70-CC9F-4D1C-9793-221EAE08DBB5}.Debug|x64.ActiveCfg = Debug|x64
- {A3903F70-CC9F-4D1C-9793-221EAE08DBB5}.Debug|x64.Build.0 = Debug|x64
- {A3903F70-CC9F-4D1C-9793-221EAE08DBB5}.Release|Win32.ActiveCfg = Release|Win32
- {A3903F70-CC9F-4D1C-9793-221EAE08DBB5}.Release|Win32.Build.0 = Release|Win32
- {A3903F70-CC9F-4D1C-9793-221EAE08DBB5}.Release|x64.ActiveCfg = Release|x64
- {A3903F70-CC9F-4D1C-9793-221EAE08DBB5}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libcutl/libcutl-vc9.sln b/libcutl/libcutl-vc9.sln
deleted file mode 100644
index 164db43..0000000
--- a/libcutl/libcutl-vc9.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcutl", "cutl\libcutl-vc9.vcproj", "{E12E5299-8AFB-43F3-832F-9919A26C4F9C}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {E12E5299-8AFB-43F3-832F-9919A26C4F9C}.Debug|Win32.ActiveCfg = Debug|Win32
- {E12E5299-8AFB-43F3-832F-9919A26C4F9C}.Debug|Win32.Build.0 = Debug|Win32
- {E12E5299-8AFB-43F3-832F-9919A26C4F9C}.Debug|x64.ActiveCfg = Debug|x64
- {E12E5299-8AFB-43F3-832F-9919A26C4F9C}.Debug|x64.Build.0 = Debug|x64
- {E12E5299-8AFB-43F3-832F-9919A26C4F9C}.Release|Win32.ActiveCfg = Release|Win32
- {E12E5299-8AFB-43F3-832F-9919A26C4F9C}.Release|Win32.Build.0 = Release|Win32
- {E12E5299-8AFB-43F3-832F-9919A26C4F9C}.Release|x64.ActiveCfg = Release|x64
- {E12E5299-8AFB-43F3-832F-9919A26C4F9C}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libcutl/libcutl.pc.in b/libcutl/libcutl.pc.in
deleted file mode 100644
index 0fe9614..0000000
--- a/libcutl/libcutl.pc.in
+++ /dev/null
@@ -1,15 +0,0 @@
-# file : libcutl.pc.in
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: libcutl
-Description: C++ utility library
-URL: http://www.codesynthesis.com/projects/libcutl/
-Version: @VERSION@
-Libs: -L${libdir} -lcutl
-Cflags: -I${includedir}
diff --git a/libcutl/m4/acx-pthread.m4 b/libcutl/m4/acx-pthread.m4
deleted file mode 100644
index 204b32d..0000000
--- a/libcutl/m4/acx-pthread.m4
+++ /dev/null
@@ -1,259 +0,0 @@
-dnl
-dnl NOTE: This file was modified. See the comments starting with 'CS:'
-dnl for more information. In particular, it was changed to use C++
-dnl instead of C.
-dnl
-dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-dnl
-dnl @summary figure out how to build C++ programs using POSIX threads
-dnl
-dnl This macro figures out how to build C++ programs using POSIX threads.
-dnl It sets the PTHREAD_LIBS output variable to the threads library and
-dnl linker flags, and the PTHREAD_CXXFLAGS output variable to any special
-dnl C++ compiler flags that are needed. (The user can also force certain
-dnl compiler flags/libs to be tested by setting these environment
-dnl variables.)
-dnl
-dnl Also sets PTHREAD_CXX to any special C++ compiler that is needed for
-dnl multi-threaded programs (defaults to the value of CXX otherwise).
-dnl (This is necessary on AIX to use the special xlC_r compiler alias.)
-dnl
-dnl NOTE: You are assumed to not only compile your program with these
-dnl flags, but also link it with them as well. e.g. you should link
-dnl with $PTHREAD_CXX $CXXFLAGS $PTHREAD_CXXFLAGS $LDFLAGS ... $PTHREAD_LIBS
-dnl $LIBS
-dnl
-dnl If you are only building threads programs, you may wish to use
-dnl these variables in your default LIBS, CXXFLAGS, and CXX:
-dnl
-dnl LIBS="$PTHREAD_LIBS $LIBS"
-dnl CXXFLAGS="$CXXFLAGS $PTHREAD_CXXFLAGS"
-dnl CXX="$PTHREAD_CXX"
-dnl
-dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
-dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
-dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
-dnl
-dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
-dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
-dnl default action will define HAVE_PTHREAD.
-dnl
-dnl Please let the authors know if this macro fails on any platform, or
-dnl if you have any other suggestions or comments. This macro was based
-dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
-dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
-dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
-dnl We are also grateful for the helpful feedback of numerous users.
-dnl
-dnl @category InstalledPackages
-dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
-dnl @version 2006-05-29
-dnl @license GPLWithACException
-
-AC_DEFUN([ACX_PTHREAD], [
-AC_REQUIRE([AC_CANONICAL_HOST])
-AC_LANG_SAVE
-AC_LANG(C++)
-acx_pthread_ok=no
-
-# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
-# It gets checked for in the link test anyway.
-
-# First of all, check if the user has set any of the PTHREAD_LIBS,
-# etcetera environment variables, and if threads linking works using
-# them:
-if test x"$PTHREAD_LIBS$PTHREAD_CXXFLAGS" != x; then
- save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="$CXXFLAGS $PTHREAD_CXXFLAGS"
- save_LIBS="$LIBS"
- LIBS="$PTHREAD_LIBS $LIBS"
- AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CXXFLAGS=$PTHREAD_CXXFLAGS])
- AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
- AC_MSG_RESULT($acx_pthread_ok)
- if test x"$acx_pthread_ok" = xno; then
- PTHREAD_LIBS=""
- PTHREAD_CXXFLAGS=""
- fi
- LIBS="$save_LIBS"
- CXXFLAGS="$save_CXXFLAGS"
-fi
-
-# We must check for the threads library under a number of different
-# names; the ordering is very important because some systems
-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
-# libraries is broken (non-POSIX).
-
-# Create a list of thread flags to try. Items starting with a "-" are
-# C compiler flags, and other items are library names, except for "none"
-# which indicates that we try without any flags at all, and "pthread-config"
-# which is a program returning the flags for the Pth emulation library.
-
-# CS: On GNU/Linux with gcc both -pthread and -lpthread are valid.
-# However, libtool links libraries with -nostdlib which results in
-# -pthread being stripped from the linker command line. To resolve
-# this we move pthread from after -mthreads to after pthreads.
-#
-acx_pthread_flags="pthreads pthread none -Kthread -kthread lthread -pthread -pthreads -mthreads --thread-safe -mt pthread-config"
-
-# The ordering *is* (sometimes) important. Some notes on the
-# individual items follow:
-
-# pthreads: AIX (must check this before -lpthread)
-# none: in case threads are in libc; should be tried before -Kthread and
-# other compiler flags to prevent continual compiler warnings
-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-# doesn't hurt to check since this sometimes defines pthreads too;
-# also defines -D_REENTRANT)
-# ... -mt is also the pthreads flag for HP/aCC
-# pthread: Linux, etcetera
-# --thread-safe: KAI C++
-# pthread-config: use pthread-config program (for GNU Pth library)
-
-case "${host_cpu}-${host_os}" in
- *solaris*)
-
- # On Solaris (at least, for some versions), libc contains stubbed
- # (non-functional) versions of the pthreads routines, so link-based
- # tests will erroneously succeed. (We need to link with -pthreads/-mt/
- # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
- # a function called by this macro, so we could check for that, but
- # who knows whether they'll stub that too in a future libc.) So,
- # we'll just look for -pthreads and -lpthread first:
-
- # CS: Move -mt to the front of the list; Sun CC will use -mt,
- # gcc will use -pthreads.
- #
- acx_pthread_flags="-mt -pthreads pthread -pthread $acx_pthread_flags"
- ;;
-esac
-
-if test x"$acx_pthread_ok" = xno; then
-for flag in $acx_pthread_flags; do
-
- case $flag in
- none)
- AC_MSG_CHECKING([whether pthreads work without any flags])
- ;;
-
- -*)
- AC_MSG_CHECKING([whether pthreads work with $flag])
- PTHREAD_CXXFLAGS="$flag"
- ;;
-
- pthread-config)
- AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
- if test x"$acx_pthread_config" = xno; then continue; fi
- PTHREAD_CXXFLAGS="`pthread-config --cflags`"
- PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
- ;;
-
- *)
- AC_MSG_CHECKING([for the pthreads library -l$flag])
- PTHREAD_LIBS="-l$flag"
- ;;
- esac
-
- save_LIBS="$LIBS"
- save_CXXFLAGS="$CXXFLAGS"
- LIBS="$PTHREAD_LIBS $LIBS"
- CXXFLAGS="$CXXFLAGS $PTHREAD_CXXFLAGS"
-
- # Check for various functions. We must include pthread.h,
- # since some functions may be macros. (On the Sequent, we
- # need a special flag -Kthread to make this header compile.)
- # We check for pthread_join because it is in -lpthread on IRIX
- # while pthread_create is in libc. We check for pthread_attr_init
- # due to DEC craziness with -lpthreads. We check for
- # pthread_cleanup_push because it is one of the few pthread
- # functions on Solaris that doesn't have a non-functional libc stub.
- # We try pthread_create on general principles.
- #
- AC_TRY_LINK([#include <pthread.h>],
- [pthread_t th; pthread_join(th, 0);
- pthread_attr_init(0); pthread_cleanup_push(0, 0);
- pthread_create(0,0,0,0); pthread_cleanup_pop(0);],
- [acx_pthread_ok=yes])
-
- LIBS="$save_LIBS"
- CXXFLAGS="$save_CXXFLAGS"
-
- AC_MSG_RESULT($acx_pthread_ok)
- if test "x$acx_pthread_ok" = xyes; then
- break;
- fi
-
- PTHREAD_LIBS=""
- PTHREAD_CXXFLAGS=""
-done
-fi
-
-# Various other checks:
-if test "x$acx_pthread_ok" = xyes; then
- save_LIBS="$LIBS"
- LIBS="$PTHREAD_LIBS $LIBS"
- save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="$CXXFLAGS $PTHREAD_CXXFLAGS"
-
-dnl # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-dnl AC_MSG_CHECKING([for joinable pthread attribute])
-dnl attr_name=unknown
-dnl for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-dnl AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
-dnl [attr_name=$attr; break])
-dnl done
-dnl AC_MSG_RESULT($attr_name)
-dnl if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
-dnl AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
-dnl [Define to necessary symbol if this constant
-dnl uses a non-standard name on your system.])
-dnl fi
-
- AC_MSG_CHECKING([if more special flags are required for pthreads])
- flag=no
- case "${host_cpu}-${host_os}" in
- *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
- # CS: Add _REENTRANT in Linux to emulate -pthread.
- #
- *-linux* | *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
- esac
- AC_MSG_RESULT(${flag})
- if test "x$flag" != xno; then
- PTHREAD_CXXFLAGS="$flag $PTHREAD_CXXFLAGS"
- fi
-
- LIBS="$save_LIBS"
- CXXFLAGS="$save_CXXFLAGS"
-
-dnl # More AIX lossage: must compile with xlC_r
-dnl if test x"$GXX" != xyes; then
-dnl AC_CHECK_PROGS(PTHREAD_CXX, xlC_r, ${CXX})
-dnl else
-dnl PTHREAD_CXX=$CXX
-dnl fi
-
-else
- PTHREAD_CXX="$CXX"
-fi
-
-AC_SUBST(PTHREAD_LIBS)
-AC_SUBST(PTHREAD_CXXFLAGS)
-AC_SUBST(PTHREAD_CXX)
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$acx_pthread_ok" = xyes; then
- ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
- :
-else
- acx_pthread_ok=no
- $2
-fi
-AC_LANG_RESTORE
-])dnl ACX_PTHREAD
diff --git a/libcutl/m4/disable-rpath.m4 b/libcutl/m4/disable-rpath.m4
deleted file mode 100644
index 68495b9..0000000
--- a/libcutl/m4/disable-rpath.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-dnl file : m4/disable-rpath.m4
-dnl copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-dnl license : MIT; see accompanying LICENSE file
-dnl
-AC_DEFUN([DISABLE_RPATH],[
-
-AC_MSG_CHECKING([whether to use rpath])
-AC_ARG_ENABLE(
- [rpath],
- [AC_HELP_STRING([--disable-rpath], [patch libtool to not use rpath])],
- [libtool_rpath="$enable_rpath"],
- [libtool_rpath="yes"])
-AC_MSG_RESULT($libtool_rpath)
-
-# Patch libtool to not use rpath if requested.
-#
-AC_CONFIG_COMMANDS(
- [libtool-rpath-patch],
- [if test "$libtool_use_rpath" = "no"; then
- sed < libtool > libtool-2 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_NO_RPATH__ "/'
- mv libtool-2 libtool
- chmod 755 libtool
- fi],
- [libtool_use_rpath=$libtool_rpath])
-])dnl
diff --git a/libcutl/m4/libboost.m4 b/libcutl/m4/libboost.m4
deleted file mode 100644
index a0b5a06..0000000
--- a/libcutl/m4/libboost.m4
+++ /dev/null
@@ -1,143 +0,0 @@
-dnl file : m4/libboost.m4
-dnl copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-dnl license : MIT; see accompanying LICENSE file
-dnl
-dnl LIBBOOST([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-dnl
-dnl
-AC_DEFUN([LIBBOOST], [
-libboost_found=no
-
-AC_MSG_CHECKING([for boost base headers])
-
-AC_ARG_WITH(
- [boost],
- [AC_HELP_STRING([--with-boost=DIR],[location of boost build directory])],
- [libboost_dir=${withval}],
- [libboost_dir=])
-
-# If libboost_dir was given, add the necessary preprocessor and linker flags.
-#
-if test x"$libboost_dir" != x; then
- save_CPPFLAGS="$CPPFLAGS"
- save_LDFLAGS="$LDFLAGS"
-
- AS_SET_CATFILE([abs_libboost_dir], [$ac_pwd], [$libboost_dir])
-
- CPPFLAGS="$CPPFLAGS -I$abs_libboost_dir"
- LDFLAGS="$LDFLAGS -L$abs_libboost_dir/stage/lib"
-fi
-
-CXX_LIBTOOL_LINK_IFELSE([
-AC_LANG_SOURCE([
-#include <boost/version.hpp>
-
-#ifndef BOOST_VERSION
-# error BOOST_VERSION not defined
-#endif
-
-int
-main ()
-{
-}
-])],
-[
-libboost_found=yes
-])
-
-if test x"$libboost_found" = xno; then
- if test x"$libboost_dir" != x; then
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- fi
-fi
-
-if test x"$libboost_found" = xyes; then
- AC_MSG_RESULT([yes])
- $1
-else
- AC_MSG_RESULT([no])
- $2
-fi
-])dnl
-dnl
-dnl LIBBOOST_HEADER_LIB(NAME, SOURCE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
-dnl
-AC_DEFUN([LIBBOOST_HEADER_LIB], [
-libboost_$1_found=no
-
-AC_MSG_CHECKING([for boost $1 library])
-CXX_LIBTOOL_LINK_IFELSE([$2],[libboost_$1_found=yes])
-
-if test x"$libboost_$1_found" = xyes; then
- AC_MSG_RESULT([yes])
- [$3]
-else
- AC_MSG_RESULT([no])
- [$4]
-fi
-])dnl
-dnl
-dnl LIBBOOST_LIB(NAME, SOURCE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
-dnl
-AC_DEFUN([LIBBOOST_LIB], [
-libboost_$1_found=no
-
-AC_MSG_CHECKING([for boost $1 library])
-
-save_LIBS="$LIBS"
-LIBS="-lboost_$1 $LIBS"
-
-CXX_LIBTOOL_LINK_IFELSE([$2],[libboost_$1_found=yes])
-
-# Try to fall back on the -mt version for backwards-compatibility.
-#
-if test x"$libboost_$1_found" = xno; then
- LIBS="-lboost_$1-mt $save_LIBS"
- CXX_LIBTOOL_LINK_IFELSE([$2],[libboost_$1_found=yes])
-fi
-
-if test x"$libboost_$1_found" = xno; then
- LIBS="$save_LIBS"
-fi
-
-if test x"$libboost_$1_found" = xyes; then
- AC_MSG_RESULT([yes])
- [$3]
-else
- AC_MSG_RESULT([no])
- [$4]
-fi
-])dnl
-dnl
-dnl LIBBOOST_SYSTEM([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-dnl
-AC_DEFUN([LIBBOOST_SYSTEM], [
-LIBBOOST_LIB([system],[
-AC_LANG_SOURCE([
-int
-main ()
-{
-}
-])],
-[$1],
-[$2])
-])dnl
-dnl
-dnl LIBBOOST_REGEX([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-dnl
-AC_DEFUN([LIBBOOST_REGEX], [
-LIBBOOST_LIB([regex],[
-AC_LANG_SOURCE([
-#include <boost/tr1/regex.hpp>
-
-int
-main ()
-{
- std::tr1::regex r ("te.t", std::tr1::regex_constants::ECMAScript);
- return std::tr1::regex_match ("test", r) ? 0 : 1;
-}
-])],
-[$1],
-[$2])
-])dnl
diff --git a/libcutl/m4/libexpat.m4 b/libcutl/m4/libexpat.m4
deleted file mode 100644
index 67a9132..0000000
--- a/libcutl/m4/libexpat.m4
+++ /dev/null
@@ -1,39 +0,0 @@
-dnl file : m4/libexpat.m4
-dnl copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-dnl license : MIT; see accompanying LICENSE file
-dnl
-dnl LIBEXPAT([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-dnl
-dnl
-AC_DEFUN([LIBEXPAT], [
-libexpat_found=no
-
-AC_MSG_CHECKING([for expat])
-
-save_LIBS="$LIBS"
-LIBS="-lexpat $LIBS"
-
-CXX_LIBTOOL_LINK_IFELSE([
-AC_LANG_SOURCE([
-#include <expat.h>
-
-int
-main ()
-{
- XML_Parser p (XML_ParserCreateNS (0, XML_Char (' ')));
- XML_ParserFree (p);
-}
-])],
-[
-libexpat_found=yes
-])
-
-if test x"$libexpat_found" = xyes; then
- AC_MSG_RESULT([yes])
- [$1]
-else
- LIBS="$save_LIBS"
- AC_MSG_RESULT([no])
- [$2]
-fi
-])dnl
diff --git a/libcutl/m4/libtool-link.m4 b/libcutl/m4/libtool-link.m4
deleted file mode 100644
index f02811f..0000000
--- a/libcutl/m4/libtool-link.m4
+++ /dev/null
@@ -1,46 +0,0 @@
-dnl file : m4/libtool-link.m4
-dnl copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-dnl license : MIT; see accompanying LICENSE file
-dnl
-dnl
-dnl CXX_LIBTOOL_LINK_IFELSE (input, [action-if-true], [action-if-false])
-dnl
-dnl Similar to AC_LINK_IFELSE except it uses libtool to perform the
-dnl linking and it does this using the C++ compiler.
-dnl
-AC_DEFUN([CXX_LIBTOOL_LINK_IFELSE],[
-AC_LANG_SAVE
-AC_LANG(C++)
-
-if test -d .libs; then
- delete_libs_dir=no
-else
- delete_libs_dir=yes
-fi
-
-AC_COMPILE_IFELSE([$1],
-[
- ac_try='./libtool --tag=CXX --mode=link $CXX -no-install $CXXFLAGS $LDFLAGS -o conftest conftest.$OBJEXT $LIBS >&AS_MESSAGE_LOG_FD'
- if _AC_DO_VAR(ac_try); then
- libtool_link_ok=yes
- else
- libtool_link_ok=no
- fi
-],
-[
- libtool_link_ok=no
-])
-
-if test x"$delete_libs_dir" = xyes; then
- rm -rf .libs
-fi
-
-if test x"$libtool_link_ok" = xyes; then
-[$2]
-:
-else
-[$3]
-:
-fi
-
-AC_LANG_RESTORE])dnl
diff --git a/libcutl/m4/pkgconfig.m4 b/libcutl/m4/pkgconfig.m4
deleted file mode 100644
index 59439fc..0000000
--- a/libcutl/m4/pkgconfig.m4
+++ /dev/null
@@ -1,12 +0,0 @@
-dnl file : m4/pkgconfig.m4
-dnl copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-dnl license : MIT; see accompanying LICENSE file
-dnl
-AC_DEFUN([PKGCONFIG],[
-AC_ARG_WITH(
- [pkgconfigdir],
- [AC_HELP_STRING([--with-pkgconfigdir=DIR],[location of pkgconfig dir (default is libdir/pkgconfig)])],
- [pkgconfigdir=${withval}],
- [pkgconfigdir='${libdir}/pkgconfig'])
-AC_SUBST([pkgconfigdir])
-])dnl
diff --git a/libcutl/m4/static-lib.m4 b/libcutl/m4/static-lib.m4
deleted file mode 100644
index 802902a..0000000
--- a/libcutl/m4/static-lib.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-dnl file : m4/static-lib.m4
-dnl copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-dnl license : MIT; see accompanying LICENSE file
-dnl
-dnl STATIC_LIB(MACRO, DESCRIPTION)
-dnl
-dnl Define MACRO if we are on MinGW and are only building static library.
-dnl
-AC_DEFUN([STATIC_LIB],
-[
-if test x$enable_shared = xno; then
- case $host_os in
- mingw*)
- AC_DEFINE([$1], [1], [$2])
- ;;
- esac
-fi
-])dnl
diff --git a/libcutl/m4/threads.m4 b/libcutl/m4/threads.m4
deleted file mode 100644
index 1609a04..0000000
--- a/libcutl/m4/threads.m4
+++ /dev/null
@@ -1,69 +0,0 @@
-dnl file : m4/threads.m4
-dnl copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-dnl license : GNU GPL v2; see accompanying LICENSE file
-dnl
-AC_DEFUN([THREADS],[
-
-threads_thread_keyword=no
-
-AC_ARG_ENABLE(
- [threads],
- AS_HELP_STRING([--disable-threads], [disable threads (enabled by default)]),
- [AS_IF([test x"$enableval" = xno], [threads=none], [threads=check])],
- [threads=check])
-
-# If thread support is not disabled by the user, figure out what we can use.
-#
-if test x$threads = xcheck; then
- case $host_os in
- windows* | mingw*)
- case $host_os in
- mingw*)
- CXXFLAGS="$CXXFLAGS -mthreads"
- ;;
- esac
-
- # Newer versions of GCC can be configured to use either Win32 or POSIX
- # threads. It appears that -mthreads should be used in both cases but
- # if the model is POSIX then GCC will also link -lpthread by default.
- # Use that fact to test which model we have.
- #
- AC_TRY_LINK([#include <pthread.h>],
- [pthread_create(0,0,0,0);],
- [threads=posix],
- [threads=win32])
- ;;
- *)
- ACX_PTHREAD
-
- if test x$acx_pthread_ok = xyes; then
- threads=posix
- LIBS="$LIBS $PTHREAD_LIBS"
- CXXFLAGS="$CXXFLAGS $PTHREAD_CXXFLAGS"
-
- # Check if we can use the __thread keyword.
- #
- AC_MSG_CHECKING([for __thread keyword])
-
- CXX_LIBTOOL_LINK_IFELSE([
- AC_LANG_SOURCE([
- __thread int tls_var;
-
- int
- main ()
- {
- tls_var = 0;
- }
- ])],
- [threads_thread_keyword=yes])
-
- AC_MSG_RESULT([$threads_thread_keyword])
- fi
- ;;
- esac
-fi
-
-if test x$threads = xcheck; then
- AC_MSG_ERROR([thread support not available; use --disable-threads to force single-threaded mode])
-fi
-])dnl
diff --git a/libcutl/makefile b/libcutl/makefile
deleted file mode 100644
index 3dec817..0000000
--- a/libcutl/makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-# file : makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))build/bootstrap.make
-
-dirs := cutl tests
-
-default := $(out_base)/
-test := $(out_base)/.test
-dist := $(out_base)/.dist
-install := $(out_base)/.install
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(dirs)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(dirs)))
-
-# No dist support for tests for now.
-dist_dirs := $(filter-out tests,$(dirs))
-
-$(dist): export dirs := $(dist_dirs)
-$(dist): export docs := LICENSE NEWS README INSTALL version
-$(dist): data_dist := libcutl-vc9.sln libcutl-vc10.sln
-$(dist): exec_dist := bootstrap
-$(dist): export extra_dist := $(data_dist) $(exec_dist)
-$(dist): export version = $(shell cat $(src_root)/version)
-
-$(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(dist_dirs)))
- $(call dist-data,$(docs) $(data_dist) libcutl.pc.in)
- $(call dist-exec,$(exec_dist))
- $(call dist-dir,m4)
- $(call meta-automake)
- $(call meta-autoconf)
-
-$(install): $(out_base)/cutl/.install
- $(call install-data,$(src_base)/LICENSE,$(install_doc_dir)/libcutl/LICENSE)
- $(call install-data,$(src_base)/NEWS,$(install_doc_dir)/libcutl/NEWS)
- $(call install-data,$(src_base)/README,$(install_doc_dir)/libcutl/README)
-
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(dirs)))
-
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/automake.make)
-$(call include,$(bld_root)/meta/autoconf.make)
-
-$(foreach d,$(dirs),$(call import,$(src_base)/$d/makefile))
diff --git a/libcutl/tests/Makefile.am b/libcutl/tests/Makefile.am
deleted file mode 100644
index 8c4a4c8..0000000
--- a/libcutl/tests/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-# file : Makefile.am
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-SUBDIRS = __path__(dirs)
diff --git a/libcutl/tests/compiler/cxx-indenter/driver.cxx b/libcutl/tests/compiler/cxx-indenter/driver.cxx
deleted file mode 100644
index 665c6ab..0000000
--- a/libcutl/tests/compiler/cxx-indenter/driver.cxx
+++ /dev/null
@@ -1,168 +0,0 @@
-// file : tests/compiler/cxx-indenter/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <fstream>
-#include <iostream>
-
-#include <cutl/compiler/code-stream.hxx>
-#include <cutl/compiler/cxx-indenter.hxx>
-
-using namespace std;
-using namespace cutl::compiler;
-
-int
-main ()
-{
- //std::wostream& os (wcout);
- //ostream_filter<cxx_indenter, wchar_t> filt (os);
-
- std::ostream& os (cout);
- ostream_filter<cxx_indenter, char> filt (os);
-
- os << "if (true)"
- << "{"
- << "// Hello there" << endl
- << "//" << endl
- << "a ();"
- << "}"
- << "else"
- << "{"
- << "b ();"
- << "}";
-
- os << "if (true)" << endl
- << "// Hello there" << endl
- << "//" << endl
- << "a ();"
- << "else" << endl
- << "b ();"
- << endl;
-
- os << "if (false)"
- << "{"
- << "if (true)"
- << "{"
- << "// test" << endl
- << "}"
- << "else"
- << "{"
- << "// test" << endl
- << "b ();"
- << "}"
- << "}";
-
- os << "namespace a"
- << "{"
- << "void f ();"
- << "}"
- << "#if defined(__HP_aCC) && __HP_aCC <= 39999" << endl
- << "#include <foo.h>" << endl
- << "#endif" << endl
- << endl
- << "namespace b"
- << "{"
- << "void f ();"
- << "}";
-
- // Test do-while handling.
- //
- os << "do" << endl
- << "f ();"
- << "while (false);"
- << endl;
-
- os << "do"
- << "{"
- << "f ();"
- << "}"
- << "while (false);"
- << endl;
-
- os << "do"
- << "{"
- << "if (f ())"
- << "{"
- << "g ();"
- << "}"
- << "}"
- << "while (false);"
- << endl;
-
- os << "do"
- << "{"
- << "do" << endl
- << "f ();"
- << "while (false);"
- << "}"
- << "while (false);"
- << endl;
-
- os << "do"
- << "{"
- << "do"
- << "{"
- << "f ();"
- << "}"
- << "while (false);"
- << "}"
- << "while (false);"
- << endl;
-
- os << "{"
- << "f (\"CREATE TABLE \\\"test\\\" (\"" << endl
- << "\"'id',\"" << endl
- << "\"'name')\");"
- << "}";
-
- os << "namespace N"
- << "{"
- << "static int i[] = {{0,\n0},{1,\n1}};"
- << "}";
-
-/*
- @@ TODO: still misindents (if-else association problem)
-
- os << "{"
- << "if (foo != bar)" << endl
- << "if (foo (bar))" << endl
- << "baz = true;"
- << "else" << endl
- << "baz = false;"
- << "else" << endl
- << "biz = true;"
- << endl
- << "biz = false;"
- << "}";
-
- os << "{"
- << "if (foo != bar)" << endl
- << "if (foo (bar))"
- << "{"
- << "baz = true;"
-
- << "if (x)" << endl
- << "test ();"
- << "else" << endl
- << "test ();"
- << endl
-
- << "if (x)" << endl
- << "if (y)"
- << "{"
- << "test ();"
- << "}"
- << "else"
- << "{"
- << "test ();"
- << "}"
-
- << "}"
- << "else"
- << "{"
- << "test ();"
- << "}"
- << "biz = false;"
- << "}";
-*/
-}
diff --git a/libcutl/tests/compiler/cxx-indenter/makefile b/libcutl/tests/compiler/cxx-indenter/makefile
deleted file mode 100644
index da5dbe0..0000000
--- a/libcutl/tests/compiler/cxx-indenter/makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# file : tests/compiler/cxx-indenter/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-
-#
-#
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_root)/cutl/cutl.l
-cutl.l.cpp-options := $(out_root)/cutl/cutl.l.cpp-options
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(cutl.l)
-$(cxx_obj) $(cxx_od): $(cutl.l.cpp-options)
-
-
-$(call include-dep,$(cxx_od))
-
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/output.std
- $(call message,test $$1,$$1 | diff -u $(src_base)/output.std -,$(driver))
-
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/cutl/makefile)
diff --git a/libcutl/tests/compiler/cxx-indenter/output.std b/libcutl/tests/compiler/cxx-indenter/output.std
deleted file mode 100644
index 79e74f4..0000000
--- a/libcutl/tests/compiler/cxx-indenter/output.std
+++ /dev/null
@@ -1,103 +0,0 @@
-if (true)
-{
- // Hello there
- //
- a ();
-}
-else
-{
- b ();
-}
-
-if (true)
- // Hello there
- //
- a ();
-else
- b ();
-
-if (false)
-{
- if (true)
- {
- // test
- }
- else
- {
- // test
- b ();
- }
-}
-
-namespace a
-{
- void f ();
-}
-
-#if defined(__HP_aCC) && __HP_aCC <= 39999
-#include <foo.h>
-#endif
-
-namespace b
-{
- void f ();
-}
-
-do
- f ();
-while (false);
-
-do
-{
- f ();
-}
-while (false);
-
-do
-{
- if (f ())
- {
- g ();
- }
-}
-while (false);
-
-do
-{
- do
- f ();
- while (false);
-}
-while (false);
-
-do
-{
- do
- {
- f ();
- }
- while (false);
-}
-while (false);
-
-{
- f ("CREATE TABLE \"test\" ("
- "'id',"
- "'name')");
-}
-
-namespace N
-{
- static int i[] =
- {
- {
- 0,
- 0
- },
- {
- 1,
- 1
- }
- };
-}
-
diff --git a/libcutl/tests/compiler/makefile b/libcutl/tests/compiler/makefile
deleted file mode 100644
index 11506fd..0000000
--- a/libcutl/tests/compiler/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/compiler/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-tests := cxx-indenter sloc-counter traversal
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/libcutl/tests/compiler/sloc-counter/driver.cxx b/libcutl/tests/compiler/sloc-counter/driver.cxx
deleted file mode 100644
index 504fbb7..0000000
--- a/libcutl/tests/compiler/sloc-counter/driver.cxx
+++ /dev/null
@@ -1,36 +0,0 @@
-// file : tests/compiler/sloc-counter/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <fstream>
-#include <iostream>
-
-#include <cutl/compiler/code-stream.hxx>
-#include <cutl/compiler/sloc-counter.hxx>
-
-using namespace std;
-using namespace cutl::compiler;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " <file>" << endl;
- return 1;
- }
-
- ostream_filter<sloc_counter, char> filt (cout);
-
- ifstream ifs(argv[1]);
-
- for (istream::int_type c (ifs.get ());
- c != istream::traits_type::eof ();
- c = ifs.get ())
- {
- cout.put (istream::traits_type::to_char_type (c));
- }
-
- cout << endl
- << filt.stream ().count () << endl;
-}
diff --git a/libcutl/tests/compiler/sloc-counter/makefile b/libcutl/tests/compiler/sloc-counter/makefile
deleted file mode 100644
index 74c9a4a..0000000
--- a/libcutl/tests/compiler/sloc-counter/makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# file : tests/compiler/sloc-counter/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-
-#
-#
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_root)/cutl/cutl.l
-cutl.l.cpp-options := $(out_root)/cutl/cutl.l.cpp-options
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(cutl.l)
-$(cxx_obj) $(cxx_od): $(cutl.l.cpp-options)
-
-
-$(call include-dep,$(cxx_od))
-
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.cxx $(src_base)/test.std
- $(call message,test $$1,$$1 $(src_base)/test.cxx | diff -u $(src_base)/test.std -,$(driver))
-
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/cutl/makefile)
diff --git a/libcutl/tests/compiler/sloc-counter/test.cxx b/libcutl/tests/compiler/sloc-counter/test.cxx
deleted file mode 100644
index ff0f5b2..0000000
--- a/libcutl/tests/compiler/sloc-counter/test.cxx
+++ /dev/null
@@ -1,34 +0,0 @@
-// C++ comment
- // C++ comment
-
-/* C comment */
-
-/* Multiline
- C
- Comment
-
-
-*/
-
-#include <iostream>
-
-char str[] = "multi\
-line\
-string\
-literal";
-
-using namespace std;
-
-
-int main(
- int argc /*count*/,
- char* argv[] /*array*/)
-{
- /* comment start */ int x = 0;
- char* s =
- /* comment start */"foo";
- int y = 2
- /* tricky stuff *//
- 2;
- cerr << "Hello, \"world!" << '\'' << endl;
-}
diff --git a/libcutl/tests/compiler/sloc-counter/test.std b/libcutl/tests/compiler/sloc-counter/test.std
deleted file mode 100644
index 00b9c31..0000000
--- a/libcutl/tests/compiler/sloc-counter/test.std
+++ /dev/null
@@ -1,36 +0,0 @@
-// C++ comment
- // C++ comment
-
-/* C comment */
-
-/* Multiline
- C
- Comment
-
-
-*/
-
-#include <iostream>
-
-char str[] = "multi\
-line\
-string\
-literal";
-
-using namespace std;
-
-
-int main(
- int argc /*count*/,
- char* argv[] /*array*/)
-{
- /* comment start */ int x = 0;
- char* s =
- /* comment start */"foo";
- int y = 2
- /* tricky stuff *//
- 2;
- cerr << "Hello, \"world!" << '\'' << endl;
-}
-
-18
diff --git a/libcutl/tests/compiler/traversal/driver.cxx b/libcutl/tests/compiler/traversal/driver.cxx
deleted file mode 100644
index b1fea74..0000000
--- a/libcutl/tests/compiler/traversal/driver.cxx
+++ /dev/null
@@ -1,139 +0,0 @@
-// file : tests/compiler/traversal/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <vector>
-#include <iostream>
-
-#include <cutl/shared-ptr.hxx>
-
-#include <cutl/compiler/type-info.hxx>
-#include <cutl/compiler/traversal.hxx>
-
-using namespace std;
-using namespace cutl;
-
-// Data types.
-//
-struct base
-{
- virtual ~base () {}
-};
-
-struct derived1: base {};
-struct derived2: base {};
-
-typedef vector<shared_ptr<base> > objects;
-
-struct init
-{
- init ()
- {
- using compiler::type_info;
-
- {
- type_info ti (typeid (base));
- insert (ti);
- }
-
- {
- type_info ti (typeid (derived1));
- ti.add_base (typeid (base));
- insert (ti);
- }
-
- {
- type_info ti (typeid (derived2));
- ti.add_base (typeid (base));
- insert (ti);
- }
- }
-} init_;
-
-// Traversers.
-//
-template <typename X>
-struct traverser: compiler::traverser_impl<X, base>,
- virtual compiler::dispatcher<base>
-{
- void
- add_traverser (compiler::traverser_map<base>& m)
- {
- compiler::dispatcher<base>::traverser (m);
- }
-};
-
-typedef traverser<base> base_trav;
-typedef traverser<derived1> derived1_trav;
-typedef traverser<derived2> derived2_trav;
-
-struct base_impl: base_trav
-{
- virtual void
- traverse (type&)
- {
- cout << "base_impl: base" << endl;
- }
-};
-
-struct derived1_impl: derived1_trav
-{
- virtual void
- traverse (type&)
- {
- cout << "derived1_impl: derived1" << endl;
- }
-};
-
-struct combined_impl: derived1_trav, derived2_trav
-{
- virtual void
- traverse (derived1&)
- {
- cout << "combined_impl: derived1" << endl;
- }
-
- virtual void
- traverse (derived2&)
- {
- cout << "combined_impl: derived2" << endl;
- }
-};
-
-int
-main ()
-{
- objects o;
- o.push_back (shared_ptr<base> (new (shared) base));
- o.push_back (shared_ptr<base> (new (shared) derived1));
- o.push_back (shared_ptr<base> (new (shared) derived2));
-
- base_impl base;
- derived1_impl derived1;
- combined_impl combined;
-
- for (objects::iterator i (o.begin ()); i != o.end (); ++i)
- base.dispatch (**i);
-
- cout << endl;
-
- for (objects::iterator i (o.begin ()); i != o.end (); ++i)
- derived1.dispatch (**i);
-
- cout << endl;
-
- for (objects::iterator i (o.begin ()); i != o.end (); ++i)
- combined.dispatch (**i);
-
- cout << endl;
-
- base.add_traverser (derived1);
- for (objects::iterator i (o.begin ()); i != o.end (); ++i)
- base.dispatch (**i);
-
- cout << endl;
-
- derived1.add_traverser (combined);
- for (objects::iterator i (o.begin ()); i != o.end (); ++i)
- derived1.dispatch (**i);
-}
diff --git a/libcutl/tests/compiler/traversal/makefile b/libcutl/tests/compiler/traversal/makefile
deleted file mode 100644
index f1c0fcf..0000000
--- a/libcutl/tests/compiler/traversal/makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# file : tests/compiler/traversal/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-
-#
-#
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_root)/cutl/cutl.l
-cutl.l.cpp-options := $(out_root)/cutl/cutl.l.cpp-options
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(cutl.l)
-$(cxx_obj) $(cxx_od): $(cutl.l.cpp-options)
-
-
-$(call include-dep,$(cxx_od))
-
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/output.std
- $(call message,test $$1,$$1 | diff -u $(src_base)/output.std -,$(driver))
-
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/cutl/makefile)
diff --git a/libcutl/tests/compiler/traversal/output.std b/libcutl/tests/compiler/traversal/output.std
deleted file mode 100644
index 095739c..0000000
--- a/libcutl/tests/compiler/traversal/output.std
+++ /dev/null
@@ -1,16 +0,0 @@
-base_impl: base
-base_impl: base
-base_impl: base
-
-derived1_impl: derived1
-
-combined_impl: derived1
-combined_impl: derived2
-
-base_impl: base
-derived1_impl: derived1
-base_impl: base
-
-derived1_impl: derived1
-combined_impl: derived1
-combined_impl: derived2
diff --git a/libcutl/tests/container/makefile b/libcutl/tests/container/makefile
deleted file mode 100644
index b81d01e..0000000
--- a/libcutl/tests/container/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/container/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-tests := multi-index
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/libcutl/tests/container/multi-index/driver.cxx b/libcutl/tests/container/multi-index/driver.cxx
deleted file mode 100644
index 289ec4a..0000000
--- a/libcutl/tests/container/multi-index/driver.cxx
+++ /dev/null
@@ -1,292 +0,0 @@
-// file : tests/container/multi-index/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <map>
-#include <list>
-#include <string>
-#include <cassert>
-#include <iostream>
-
-#include <cutl/container/multi-index.hxx>
-
-using namespace std;
-using namespace cutl::container;
-
-struct person
-{
- person (const string& e, const string& f, const string& l, unsigned short a)
- : email (e), first (f), last (l), age (a) {}
-
- const string email;
- const string first;
- const string last;
- unsigned short age;
-};
-
-struct person_email_set
-{
- typedef map<key<string>, person> email_map;
- typedef map_const_iterator<email_map> const_iterator;
-
- pair<const_iterator, bool>
- insert (const person& v)
- {
- pair<email_map::iterator, bool> r (
- email_map_.insert (email_map::value_type (v.email, v)));
-
- const_iterator i (r.first);
-
- if (r.second)
- r.first->first.assign (i->email);
-
- return make_pair (i, r.second);
- }
-
- const_iterator
- find (const string& email) const
- {
- return email_map_.find (email);
- }
-
- const_iterator begin () const {return email_map_.begin ();}
- const_iterator end () const {return email_map_.end ();}
-
-private:
- email_map email_map_;
-};
-
-struct person_name_set
-{
- typedef key<string, string> name_key;
- typedef map<name_key, person> name_map;
- typedef map_const_iterator<name_map> const_iterator;
-
- pair<const_iterator, bool>
- insert (const person& v)
- {
- pair<name_map::iterator, bool> r (
- name_map_.insert (
- name_map::value_type (name_key (v.first, v.last), v)));
-
- const_iterator i (r.first);
-
- if (r.second)
- r.first->first.assign (i->first, i->last);
-
- return make_pair (i, r.second);
- }
-
- const_iterator
- find (const string& first, const string& last) const
- {
- return name_map_.find (name_key (first, last));
- }
-
- const_iterator begin () const {return name_map_.begin ();}
- const_iterator end () const {return name_map_.end ();}
-
-private:
- name_map name_map_;
-};
-
-struct person_email_name_set
-{
- typedef key<string, string> name_key;
- typedef map<name_key, person> name_map;
- typedef map_iterator<name_map> iterator;
- typedef map_const_iterator<name_map> const_iterator;
-
- typedef map<key<string>, iterator> email_map;
-
- pair<iterator, bool>
- insert (const person& v)
- {
- // First check that we don't have any collisions in the secondary
- // indexes.
- //
- {
- email_map::iterator i (email_map_.find (v.email));
-
- if (i != email_map_.end ())
- return make_pair (i->second, false);
- }
-
- pair<name_map::iterator, bool> r (
- name_map_.insert (
- name_map::value_type (name_key (v.first, v.last), v)));
-
- iterator i (r.first);
-
- if (r.second)
- {
- r.first->first.assign (i->first, i->last);
- email_map_.insert (email_map::value_type (i->email, i));
- }
-
- return make_pair (i, r.second);
- }
-
- iterator
- find (const string& first, const string& last)
- {
- return name_map_.find (name_key (first, last));
- }
-
- const_iterator
- find (const string& first, const string& last) const
- {
- return name_map_.find (name_key (first, last));
- }
-
- iterator
- find (const string& email)
- {
- email_map::iterator i (email_map_.find (email));
- return i != email_map_.end () ? i->second : end ();
- }
-
- const_iterator
- find (const string& email) const
- {
- email_map::const_iterator i (email_map_.find (email));
- return i != email_map_.end () ? i->second : end ();
- }
-
- void
- erase (iterator i )
- {
- email_map_.erase (i->email);
- name_map_.erase (i);
- }
-
- iterator begin () {return name_map_.begin ();}
- const_iterator begin () const {return name_map_.begin ();}
-
- iterator end () {return name_map_.end ();}
- const_iterator end () const {return name_map_.end ();}
-
-private:
- name_map name_map_;
- email_map email_map_;
-};
-
-struct person_list_email_set
-{
- typedef list<person> person_list;
- typedef person_list::iterator iterator;
- typedef person_list::const_iterator const_iterator;
-
- typedef map<key<string>, iterator> email_map;
-
- pair<iterator, bool>
- insert (const person& v)
- {
- // First check that we don't have any collisions in the secondary
- // indexes.
- //
- {
- email_map::iterator i (email_map_.find (v.email));
-
- if (i != email_map_.end ())
- return make_pair (i->second, false);
- }
-
- iterator i (person_list_.insert (end (), v));
- email_map_.insert (email_map::value_type (i->email, i));
- return make_pair (i, true);
- }
-
- iterator
- find (const string& email)
- {
- email_map::iterator i (email_map_.find (email));
- return i != email_map_.end () ? i->second : end ();
- }
-
- const_iterator
- find (const string& email) const
- {
- email_map::const_iterator i (email_map_.find (email));
- return i != email_map_.end () ? i->second : end ();
- }
-
- iterator begin () {return person_list_.begin ();}
- const_iterator begin () const {return person_list_.begin ();}
-
- iterator end () {return person_list_.end ();}
- const_iterator end () const {return person_list_.end ();}
-
-private:
- person_list person_list_;
- email_map email_map_;
-};
-
-int
-main ()
-{
- {
- person_email_set s;
-
- assert (s.insert (person ("john@doe.com", "John", "Doe", 20)).second);
- assert (s.insert (person ("jane@doe.com", "Jane", "Doe", 21)).second);
- assert (!s.insert (person ("john@doe.com", "Johnny", "Doe", 22)).second);
-
- assert (s.find ("john@doe.com") != s.end ());
- assert (s.find ("jane@doe.com") != s.end ());
- assert (s.find ("john@doe.org") == s.end ());
- }
-
- {
- person_name_set s;
-
- assert (s.insert (person ("john@doe.com", "John", "Doe", 20)).second);
- assert (s.insert (person ("jane@doe.com", "Jane", "Doe", 21)).second);
- assert (!s.insert (person ("john@doe.org", "John", "Doe", 22)).second);
-
- assert (s.find ("John", "Doe") != s.end ());
- assert (s.find ("Jane", "Doe") != s.end ());
- assert (s.find ("Johnny", "Doe") == s.end ());
- }
-
- {
- person_email_name_set s;
- person_email_name_set const& cs (s);
-
- assert (s.insert (person ("john@doe.com", "John", "Doe", 20)).second);
- assert (s.insert (person ("jane@doe.com", "Jane", "Doe", 21)).second);
- assert (!s.insert (person ("john@doe.org", "John", "Doe", 22)).second);
- assert (!s.insert (person ("john@doe.com", "Johnny", "Doe", 23)).second);
-
- assert (s.find ("John", "Doe") != s.end ());
- assert (cs.find ("Jane", "Doe") != cs.end ());
- assert (s.find ("john@doe.com") != s.end ());
- assert (cs.find ("jane@doe.com") != s.end ());
- assert (s.find ("Johnny", "Doe") == s.end ());
- assert (cs.find ("john@doe.org") == s.end ());
-
- person_email_name_set::iterator i (s.find ("John", "Doe"));
- i->age++;
-
- s.erase (i);
- assert (s.find ("John", "Doe") == s.end ());
- assert (s.find ("john@doe.com") == s.end ());
- }
-
- {
- person_list_email_set s;
-
- assert (s.insert (person ("john@doe.com", "John", "Doe", 20)).second);
- assert (s.insert (person ("jane@doe.com", "Jane", "Doe", 21)).second);
- assert (!s.insert (person ("john@doe.com", "Johnny", "Doe", 22)).second);
-
- assert (s.find ("john@doe.com") != s.end ());
- assert (s.find ("jane@doe.com") != s.end ());
- assert (s.find ("jane@doe.org") == s.end ());
-
- person_list_email_set::iterator i (s.begin ());
- assert (i != s.end () && i->email == "john@doe.com");
- assert (++i != s.end () && i->email == "jane@doe.com");
- assert (++i == s.end ());
- }
-}
diff --git a/libcutl/tests/container/multi-index/makefile b/libcutl/tests/container/multi-index/makefile
deleted file mode 100644
index d5b805f..0000000
--- a/libcutl/tests/container/multi-index/makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# file : tests/container/multi-index/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-
-#
-#
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_root)/cutl/cutl.l
-cutl.l.cpp-options := $(out_root)/cutl/cutl.l.cpp-options
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(cutl.l)
-$(cxx_obj) $(cxx_od): $(cutl.l.cpp-options)
-
-
-$(call include-dep,$(cxx_od))
-
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): $(driver)
- $(call message,test $<,$<)
-
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/cutl/makefile)
diff --git a/libcutl/tests/fs/makefile b/libcutl/tests/fs/makefile
deleted file mode 100644
index 9bf1523..0000000
--- a/libcutl/tests/fs/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/fs/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-tests := path
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/libcutl/tests/fs/path/driver.cxx b/libcutl/tests/fs/path/driver.cxx
deleted file mode 100644
index 6c77e67..0000000
--- a/libcutl/tests/fs/path/driver.cxx
+++ /dev/null
@@ -1,144 +0,0 @@
-// file : tests/fs/path/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <cassert>
-#include <iostream>
-
-#include <cutl/fs/path.hxx>
-
-using std::cerr;
-using std::endl;
-
-using namespace cutl::fs;
-
-int
-main ()
-{
- assert (path ("/").string () == "/");
- assert (path ("//").string () == "/");
- assert (path ("/tmp/foo/").string () == "/tmp/foo");
-#ifdef _WIN32
- assert (path ("\\\\").string () == "\\");
- assert (path ("/\\").string () == "/");
- assert (path ("C:").string () == "C:");
- assert (path ("C:\\").string () == "C:");
- assert (path ("C:\\tmp\\foo\\").string () == "C:\\tmp\\foo");
-#endif
-
- // abslote/relative/root
- //
-#ifndef _WIN32
- assert (path ("/").root ());
- assert (path ("//").root ());
- assert (path ("/").absolute ());
- assert (path ("/foo/bar").absolute ());
- assert (path ("bar/baz").relative ());
-#else
- assert (path ("C:").root ());
- assert (path ("C:\\").root ());
- assert (path ("C:\\").absolute ());
- assert (path ("C:\\foo\\bar").absolute ());
- assert (path ("bar\\baz").relative ());
-#endif
-
-
- // leaf
- //
-#ifndef _WIN32
- assert (path ("/").leaf ().string () == "");
- assert (path ("/tmp").leaf ().string () == "tmp");
- assert (path ("//tmp").leaf ().string () == "tmp");
-#else
- assert (path ("C:").leaf ().string () == "C:");
- assert (path ("C:\\tmp").leaf ().string () == "tmp");
- assert (path ("C:\\\\tmp").leaf ().string () == "tmp");
-#endif
-
- // directory
- //
-#ifndef _WIN32
- assert (path ("/").directory ().string () == "");
- assert (path ("/tmp").directory ().string () == "/");
- assert (path ("//tmp").directory ().string () == "/");
-#else
- assert (path ("C:").directory ().string () == "");
- assert (path ("C:\\tmp").directory ().string () == "C:");
- assert (path ("C:\\\\tmp").directory ().string () == "C:");
-#endif
-
- // base
- //
- assert (path ("/").base ().string () == "/");
- assert (path ("/foo.txt").base ().string () == "/foo");
- assert (path (".txt").base ().string () == ".txt");
- assert (path ("/.txt").base ().string () == "/.txt");
- assert (path ("foo.txt.orig").base ().string () == "foo.txt");
-#ifdef _WIN32
- assert (path ("C:").base ().string () == "C:");
- assert (path ("C:\\foo.txt").base ().string () == "C:\\foo");
-#endif
-
- // operator/
- //
-#ifndef _WIN32
- assert ((path ("/") / path ("tmp")).string () == "/tmp");
- assert ((path ("foo") / path ("bar")).string () == "foo/bar");
-#else
- assert ((path ("\\") / path ("tmp")).string () == "\\tmp");
- assert ((path ("C:\\") / path ("tmp")).string () == "C:\\tmp");
- assert ((path ("foo") / path ("bar")).string () == "foo\\bar");
-#endif
-
- // normalize
- //
-#ifndef _WIN32
- assert (path ("../foo").normalize ().string () == "../foo");
- assert (path ("..///foo").normalize ().string () == "../foo");
- assert (path ("../../foo").normalize ().string () == "../../foo");
- assert (path (".././foo").normalize ().string () == "../foo");
- assert (path (".").normalize ().string () == "");
- assert (path ("./..").normalize ().string () == "..");
- assert (path ("../.").normalize ().string () == "..");
- assert (path ("foo/./..").normalize ().string () == "");
- assert (path ("/foo/./..").normalize ().string () == "/");
- assert (path ("./foo").normalize ().string () == "foo");
-#else
- assert (path ("../foo").normalize ().string () == "..\\foo");
- assert (path ("..///foo").normalize ().string () == "..\\foo");
- assert (path ("..\\../foo").normalize ().string () == "..\\..\\foo");
- assert (path (".././foo").normalize ().string () == "..\\foo");
- assert (path (".").normalize ().string () == "");
- assert (path ("./..").normalize ().string () == "..");
- assert (path ("../.").normalize ().string () == "..");
- assert (path ("foo/./..").normalize ().string () == "");
- assert (path ("C:/foo/./..").normalize ().string () == "c:");
- assert (path ("./foo").normalize ().string () == "foo");
-
- assert (path ("C:").normalize ().string () == "c:");
- assert (path ("C:\\Foo12//Bar").normalize ().string () == "c:\\foo12\\bar");
-#endif
-
- // posix_string
- //
- assert (path ("foo/bar/../baz").posix_string () == "foo/bar/../baz");
-#ifdef _WIN32
- assert (path ("foo\\bar\\..\\baz").posix_string () == "foo/bar/../baz");
- try
- {
- path ("c:\\foo\\bar\\..\\baz").posix_string ();
- assert (false);
- }
- catch (const invalid_path&) {}
-#endif
-
- /*
- path p ("../foo");
- p.complete ();
-
- cerr << path::current () << endl;
- cerr << p << endl;
- p.normalize ();
- cerr << p << endl;
- */
-}
diff --git a/libcutl/tests/fs/path/makefile b/libcutl/tests/fs/path/makefile
deleted file mode 100644
index 184510b..0000000
--- a/libcutl/tests/fs/path/makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# file : tests/fs/path/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-
-#
-#
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_root)/cutl/cutl.l
-cutl.l.cpp-options := $(out_root)/cutl/cutl.l.cpp-options
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(cutl.l)
-$(cxx_obj) $(cxx_od): $(cutl.l.cpp-options)
-
-
-$(call include-dep,$(cxx_od))
-
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): $(driver)
- $(call message,test $<,$<)
-
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/cutl/makefile)
diff --git a/libcutl/tests/makefile b/libcutl/tests/makefile
deleted file mode 100644
index 3735414..0000000
--- a/libcutl/tests/makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-# file : tests/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-tests := compiler container fs re shared-ptr
-
-default := $(out_base)/
-test := $(out_base)/.test
-dist := $(out_base)/.dist
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-
-$(dist): export dirs :=
-$(dist): #$(addprefix $(out_base)/,$(addsuffix /.dist,$(tests)))
- $(call meta-automake)
-
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/libcutl/tests/re/driver.cxx b/libcutl/tests/re/driver.cxx
deleted file mode 100644
index 4b070dd..0000000
--- a/libcutl/tests/re/driver.cxx
+++ /dev/null
@@ -1,83 +0,0 @@
-// file : tests/re/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <string>
-#include <cassert>
-#include <iostream>
-
-#include <cutl/re.hxx>
-
-using namespace cutl::re;
-
-int
-main ()
-{
- // empty() and str().
- //
- {
- regex r;
- assert (r.empty ());
- r = "['`]foo([^ ]*)bar['`]";
- assert (!r.empty ());
- assert (r.str () == "['`]foo([^ ]*)bar['`]");
- }
-
- // Error handling.
- //
- try
- {
- regex r ("['`]foo([^ ]*bar['`]");
- assert (false);
- }
- catch (format const& e)
- {
- assert (e.regex () == "['`]foo([^ ]*bar['`]");
- assert (!e.description ().empty ());
- //std::cerr << e.description () << std::endl;
- }
-
- // match(), search(), and replace().
- //
- {
- regex r ("['`]foo([^ ]*)bar['`]");
-
- assert (r.match ("'foofoxbar'"));
- assert (!r.match ("'foof xbar'"));
-
- assert (r.search ("prefix 'foofoxbar' suffix"));
- assert (!r.search ("prefix 'foof xbar' suffix"));
-
- assert (r.replace ("'foofoxbar'", "\\u$1") == "Fox");
- }
-
- // regexsub
- //
- {
- regexsub r ("/['`]foo([^ ]*)bar['`]/\\u$1/");
-
- assert (r.replace ("'foofoxbar'") == "Fox");
- }
-
- // regexsub escaping
- //
- {
- regexsub r ("#a\\#\\\\#a?\\\\#");
-
- assert (r.replace ("a#\\") == "a?\\");
- }
-
- // regexsub error handling.
- //
- try
- {
- regexsub r ("/['`]foo([^ ]*)bar['`]#\\u$1/");
- assert (false);
- }
- catch (format const& e)
- {
- assert (e.regex () == "/['`]foo([^ ]*)bar['`]#\\u$1/");
- assert (!e.description ().empty ());
- //std::cerr << e.description () << std::endl;
- }
-}
diff --git a/libcutl/tests/re/makefile b/libcutl/tests/re/makefile
deleted file mode 100644
index 3d22640..0000000
--- a/libcutl/tests/re/makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# file : tests/re/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-
-#
-#
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_root)/cutl/cutl.l
-cutl.l.cpp-options := $(out_root)/cutl/cutl.l.cpp-options
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(cutl.l)
-$(cxx_obj) $(cxx_od): $(cutl.l.cpp-options)
-
-
-$(call include-dep,$(cxx_od))
-
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): $(driver)
- $(call message,test $<,$<)
-
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/cutl/makefile)
diff --git a/libcutl/tests/shared-ptr/driver.cxx b/libcutl/tests/shared-ptr/driver.cxx
deleted file mode 100644
index 3e763a0..0000000
--- a/libcutl/tests/shared-ptr/driver.cxx
+++ /dev/null
@@ -1,185 +0,0 @@
-// file : tests/shared-ptr/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <string>
-#include <cassert>
-
-#include <cutl/shared-ptr.hxx>
-
-using namespace cutl;
-
-struct type
-{
- type (int x, char const* y) : x_ (x), y_ (y) {}
-
- int x_;
- std::string y_;
-};
-
-struct base1
-{
- virtual
- ~base1 () {}
- base1 (int x) : x_ (x) {}
-
- int x_;
-};
-
-struct base2
-{
- virtual
- ~base2 () {}
- base2 (char const* y) : y_ (y) {}
-
- std::string y_;
-};
-
-struct derived: base1, base2
-{
- derived (int x, char const* y) : base1 (x), base2 (y) {}
-};
-
-struct shared_type: shared_base
-{
- shared_type (int x, char const* y)
- : x_ (x), y_ (y)
- {
- assert (ref_count (this) == 1);
- }
-
- int x_;
- std::string y_;
-};
-
-int
-main ()
-{
- //
- // inc_ref, dec_ref, ref_count
- //
-
- // Non-polymorphic type.
- //
- {
- type* x (new (shared) type (5, "foo"));
- assert (ref_count (x) == 1);
- inc_ref (x);
- assert (ref_count (x) == 2);
- dec_ref (x);
- assert (ref_count (x) == 1);
- dec_ref (x);
- }
-
- // Polymorphic type.
- //
- {
- base2* x (new (shared) derived (5, "foo"));
- assert (ref_count (x) == 1);
- inc_ref (x);
- assert (ref_count (x) == 2);
- dec_ref (x);
- assert (ref_count (x) == 1);
- dec_ref (x);
- }
-
- // Shared type.
- //
- {
- shared_type* x (new (shared) shared_type (5, "foo"));
- assert (ref_count (x) == 1);
- inc_ref (x);
- assert (ref_count (x) == 2);
- dec_ref (x);
- assert (ref_count (x) == 1);
- dec_ref (x);
- }
-
- // Error handling (this theoretically can segfault).
- //
- {
- type* x (new type (5, "foo"));
-
- try
- {
- inc_ref (x);
- assert (false);
- }
- catch (not_shared const&)
- {
- }
-
- delete x;
- }
-
- //
- // shared_ptr
- //
-
- // Non-polymorphic type.
- //
- {
- shared_ptr<type> x (new (shared) type (5, "foo"));
- assert (x.count () == 1);
- assert (x);
- assert (x->x_ == 5);
- assert ((*x).y_ == "foo");
- {
- shared_ptr<type> y (x);
- assert (y.count () == 2);
- }
- {
- shared_ptr<type> y;
- y = x;
- assert (y.count () == 2);
- }
- assert (x.count () == 1);
- shared_ptr<type> y (x.release ());
- assert (y.count () == 1);
- }
-
- // Polymorphic type.
- //
- {
- shared_ptr<derived> x (new (shared) derived (5, "foo"));
- assert (x.count () == 1);
- {
- shared_ptr<base2> y (x);
- assert (y.count () == 2);
- assert (y->y_ == "foo");
- }
- {
- shared_ptr<base2> y;
- y = x;
- assert (y.count () == 2);
- }
- assert (x.count () == 1);
- }
-
- // Non-polymorphic type.
- //
- {
- shared_ptr<shared_type> x (new (shared) shared_type (5, "foo"));
- assert (x.count () == 1);
- assert (x);
- assert (x->x_ == 5);
- assert ((*x).y_ == "foo");
- assert (x->_ref_count () == 1);
- x->_inc_ref ();
- assert (x.count () == 2);
- x->_dec_ref ();
- assert (x.count () == 1);
- {
- shared_ptr<shared_type> y (x);
- assert (y.count () == 2);
- }
- {
- shared_ptr<shared_type> y;
- y = x;
- assert (y.count () == 2);
- }
- assert (x.count () == 1);
- shared_ptr<shared_type> y (x.release ());
- assert (y.count () == 1);
- }
-}
diff --git a/libcutl/tests/shared-ptr/makefile b/libcutl/tests/shared-ptr/makefile
deleted file mode 100644
index 2303d78..0000000
--- a/libcutl/tests/shared-ptr/makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# file : tests/shared-ptr/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-
-#
-#
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_root)/cutl/cutl.l
-cutl.l.cpp-options := $(out_root)/cutl/cutl.l.cpp-options
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(cutl.l)
-$(cxx_obj) $(cxx_od): $(cutl.l.cpp-options)
-
-
-$(call include-dep,$(cxx_od))
-
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): $(driver)
- $(call message,test $<,$<)
-
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/cutl/makefile)
diff --git a/libcutl/tests/xml/makefile b/libcutl/tests/xml/makefile
deleted file mode 100644
index 2073182..0000000
--- a/libcutl/tests/xml/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/xml/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-tests := parser serializer roundtrip
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/libcutl/tests/xml/parser/driver.cxx b/libcutl/tests/xml/parser/driver.cxx
deleted file mode 100644
index 39d5994..0000000
--- a/libcutl/tests/xml/parser/driver.cxx
+++ /dev/null
@@ -1,310 +0,0 @@
-// file : tests/xml/parser/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <string>
-#include <cassert>
-#include <iostream>
-#include <sstream>
-
-#include <cutl/xml/parser.hxx>
-
-using namespace std;
-namespace xml = cutl::xml;
-using namespace xml;
-
-int
-main ()
-{
- // Test error handling.
- //
- try
- {
- istringstream is ("<root><nested>X</nasted></root>");
- parser p (is, "test");
-
- assert (p.next () == parser::start_element);
- assert (p.next () == parser::start_element);
- assert (p.next () == parser::characters && p.value () == "X");
- p.next ();
- assert (false);
- }
- catch (const xml::exception& e)
- {
- // cerr << e.what () << endl;
- }
-
- try
- {
- istringstream is ("<root/>");
- is.exceptions (ios_base::badbit | ios_base::failbit);
- parser p (is, "test");
-
- is.setstate (ios_base::badbit);
- p.next ();
- assert (false);
- }
- catch (const ios_base::failure& e)
- {
- }
-
- // Test the next_expect() functionality.
- //
- {
- istringstream is ("<root/>");
- parser p (is, "test");
- p.next_expect (parser::start_element, "root");
- p.next_expect (parser::end_element);
- }
-
- try
- {
- istringstream is ("<root/>");
- parser p (is, "test");
- p.next_expect (parser::end_element);
- assert (false);
- }
- catch (const xml::exception& e)
- {
- // cerr << e.what () << endl;
- }
-
- try
- {
- istringstream is ("<root/>");
- parser p (is, "test");
- p.next_expect (parser::start_element, "root1");
- assert (false);
- }
- catch (const xml::exception& e)
- {
- // cerr << e.what () << endl;
- }
-
- // Test attribute maps.
- //
- {
- istringstream is ("<root a='a' b='b' d='123' t='true'/>");
- parser p (is, "test");
- p.next_expect (parser::start_element, "root");
-
- assert (p.attribute ("a") == "a");
- assert (p.attribute ("b", "B") == "b");
- assert (p.attribute ("c", "C") == "C");
- assert (p.attribute<int> ("d") == 123);
- assert (p.attribute<bool> ("t") == true);
- assert (p.attribute ("f", false) == false);
-
- p.next_expect (parser::end_element);
- }
-
- {
- istringstream is ("<root a='a'><nested a='A'><inner/></nested></root>");
- parser p (is, "test");
- p.next_expect (parser::start_element, "root");
- assert (p.attribute ("a") == "a");
- assert (p.peek () == parser::start_element && p.name () == "nested");
- assert (p.attribute ("a") == "a");
- p.next_expect (parser::start_element, "nested");
- assert (p.attribute ("a") == "A");
- p.next_expect (parser::start_element, "inner");
- assert (p.attribute ("a", "") == "");
- p.next_expect (parser::end_element);
- assert (p.attribute ("a") == "A");
- assert (p.peek () == parser::end_element);
- assert (p.attribute ("a") == "A"); // Still valid.
- p.next_expect (parser::end_element);
- assert (p.attribute ("a") == "a");
- p.next_expect (parser::end_element);
- assert (p.attribute ("a", "") == "");
- }
-
- try
- {
- istringstream is ("<root a='a' b='b'/>");
- parser p (is, "test");
- p.next_expect (parser::start_element, "root");
- assert (p.attribute ("a") == "a");
- p.next_expect (parser::end_element);
- assert (false);
- }
- catch (const xml::exception& e)
- {
- // cerr << e.what () << endl;
- }
-
- try
- {
- istringstream is ("<root a='abc'/>");
- parser p (is, "test");
- p.next_expect (parser::start_element, "root");
- p.attribute<int> ("a");
- assert (false);
- }
- catch (const xml::exception& e)
- {
- // cerr << e.what () << endl;
- }
-
- // Test peeking and getting the current event.
- //
- {
- istringstream is ("<root x='x'>x<nested/></root>");
- parser p (is, "peek",
- parser::receive_default | parser::receive_attributes_event);
-
- assert (p.event () == parser::eof);
-
- assert (p.peek () == parser::start_element);
- assert (p.next () == parser::start_element);
- assert (p.event () == parser::start_element);
-
- assert (p.peek () == parser::start_attribute);
- assert (p.event () == parser::start_attribute);
- assert (p.next () == parser::start_attribute);
-
- assert (p.peek () == parser::characters && p.value () == "x");
- assert (p.next () == parser::characters && p.value () == "x");
- assert (p.event () == parser::characters && p.value () == "x");
-
- assert (p.peek () == parser::end_attribute);
- assert (p.event () == parser::end_attribute);
- assert (p.next () == parser::end_attribute);
-
- assert (p.peek () == parser::characters && p.value () == "x");
- assert (p.next () == parser::characters && p.value () == "x");
- assert (p.event () == parser::characters && p.value () == "x");
-
- assert (p.peek () == parser::start_element);
- assert (p.next () == parser::start_element);
- assert (p.event () == parser::start_element);
-
- assert (p.peek () == parser::end_element);
- assert (p.next () == parser::end_element);
- assert (p.event () == parser::end_element);
-
- assert (p.peek () == parser::end_element);
- assert (p.next () == parser::end_element);
- assert (p.event () == parser::end_element);
-
- assert (p.peek () == parser::eof);
- assert (p.next () == parser::eof);
- assert (p.event () == parser::eof);
- }
-
- // Test content processing.
- //
-
- // empty
- //
- {
- istringstream is ("<root x=' x '> \n\t </root>");
- parser p (is, "empty",
- parser::receive_default | parser::receive_attributes_event);
-
- assert (p.next () == parser::start_element);
- p.content (parser::empty);
- assert (p.next () == parser::start_attribute);
- assert (p.next () == parser::characters && p.value () == " x ");
- assert (p.next () == parser::end_attribute);
- assert (p.next () == parser::end_element);
- assert (p.next () == parser::eof);
- }
-
- try
- {
- istringstream is ("<root> \n &amp; X \t </root>");
- parser p (is, "empty");
-
- assert (p.next () == parser::start_element);
- p.content (parser::empty);
- p.next ();
- assert (false);
- }
- catch (const xml::exception& e)
- {
- // cerr << e.what () << endl;
- }
-
- // simple
- //
- {
- istringstream is ("<root> X </root>");
- parser p (is, "simple");
-
- assert (p.next () == parser::start_element);
- p.content (parser::simple);
- assert (p.next () == parser::characters && p.value () == " X ");
- assert (p.next () == parser::end_element);
- assert (p.next () == parser::eof);
- }
-
- try
- {
- istringstream is ("<root> ? <nested/></root>");
- parser p (is, "simple");
-
- assert (p.next () == parser::start_element);
- p.content (parser::simple);
- assert (p.next () == parser::characters && p.value () == " ? ");
- p.next ();
- assert (false);
- }
- catch (const xml::exception& e)
- {
- // cerr << e.what () << endl;
- }
-
- // complex
- //
- {
- istringstream is ("<root x=' x '>\n"
- " <nested>\n"
- " <inner/>\n"
- " <inner> X </inner>\n"
- " </nested>\n"
- "</root>\n");
- parser p (is, "complex",
- parser::receive_default | parser::receive_attributes_event);
-
- assert (p.next () == parser::start_element); // root
- p.content (parser::complex);
-
- assert (p.next () == parser::start_attribute);
- assert (p.next () == parser::characters && p.value () == " x ");
- assert (p.next () == parser::end_attribute);
-
- assert (p.next () == parser::start_element); // nested
- p.content (parser::complex);
-
- assert (p.next () == parser::start_element); // inner
- p.content (parser::empty);
- assert (p.next () == parser::end_element); // inner
-
- assert (p.next () == parser::start_element); // inner
- p.content (parser::simple);
- assert (p.next () == parser::characters && p.value () == " X ");
- assert (p.next () == parser::end_element); // inner
-
- assert (p.next () == parser::end_element); // nested
- assert (p.next () == parser::end_element); // root
- assert (p.next () == parser::eof);
- }
-
- try
- {
- istringstream is ("<root> \n<n/> X <n> X </n> </root>");
- parser p (is, "complex");
-
- assert (p.next () == parser::start_element);
- p.content (parser::complex);
- assert (p.next () == parser::start_element);
- assert (p.next () == parser::end_element);
- p.next ();
- assert (false);
- }
- catch (const xml::exception& e)
- {
- // cerr << e.what () << endl;
- }
-}
diff --git a/libcutl/tests/xml/parser/makefile b/libcutl/tests/xml/parser/makefile
deleted file mode 100644
index f654976..0000000
--- a/libcutl/tests/xml/parser/makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# file : tests/xml/parser/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-
-#
-#
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_root)/cutl/cutl.l
-cutl.l.cpp-options := $(out_root)/cutl/cutl.l.cpp-options
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(cutl.l)
-$(cxx_obj) $(cxx_od): $(cutl.l.cpp-options)
-
-
-$(call include-dep,$(cxx_od))
-
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): $(driver)
- $(call message,test $<,$<)
-
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/cutl/makefile)
diff --git a/libcutl/tests/xml/roundtrip/attribute.xml b/libcutl/tests/xml/roundtrip/attribute.xml
deleted file mode 100644
index ca32460..0000000
--- a/libcutl/tests/xml/roundtrip/attribute.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<root xmlns="foo" xmlns:b="bar" x="x" b:y="y">
- <nested b:x="x" y="y"/>
-</root>
diff --git a/libcutl/tests/xml/roundtrip/characters.xml b/libcutl/tests/xml/roundtrip/characters.xml
deleted file mode 100644
index fab909b..0000000
--- a/libcutl/tests/xml/roundtrip/characters.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<root x="aaaaaaaa&quot;bbbbbbbbbb">
- <nested>
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- </nested>
-</root>
diff --git a/libcutl/tests/xml/roundtrip/driver.cxx b/libcutl/tests/xml/roundtrip/driver.cxx
deleted file mode 100644
index b0b6497..0000000
--- a/libcutl/tests/xml/roundtrip/driver.cxx
+++ /dev/null
@@ -1,127 +0,0 @@
-// file : tests/xml/roundtrip/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <string>
-#include <fstream>
-#include <cassert>
-#include <iostream>
-
-#include <cutl/xml/parser.hxx>
-#include <cutl/xml/serializer.hxx>
-
-using namespace std;
-namespace xml = cutl::xml;
-using namespace xml;
-
-const bool trace = false;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " <xml-file>" << endl;
- return 1;
- }
-
- try
- {
- ifstream ifs;
- ifs.exceptions (ifstream::badbit | ifstream::failbit);
- ifs.open (argv[1], ifstream::in | ifstream::binary);
-
- parser p (ifs,
- argv[1],
- parser::receive_default |
- parser::receive_attributes_event |
- parser::receive_namespace_decls);
-
- serializer s (cout, "out", 0);
-
- bool in_attr (false);
- for (parser::event_type e (p.next ()); e != parser::eof; e = p.next ())
- {
- switch (e)
- {
- case parser::start_element:
- {
- if (trace)
- cerr << p.line () << ':' << p.column () << ": " << e << " "
- << p.namespace_() << (p.namespace_().empty () ? "" : "#")
- << p.prefix () << (p.prefix ().empty () ? "" : ":")
- << p.name () << endl;
-
- s.start_element (p.qname ());
- break;
- }
- case parser::end_element:
- {
- if (trace)
- cerr << p.line () << ':' << p.column () << ": " << e << " "
- << p.namespace_() << (p.namespace_().empty () ? "" : "#")
- << p.prefix () << (p.prefix ().empty () ? "" : ":")
- << p.name () << endl;
-
- s.end_element ();
- break;
- }
- case parser::start_namespace_decl:
- {
- if (trace)
- cerr << " " << p.prefix () << "->" << p.namespace_ () << endl;
-
- s.namespace_decl (p.namespace_ (), p.prefix ());
- break;
- }
- case parser::end_namespace_decl:
- {
- if (trace)
- cerr << " " << p.prefix () << "-x" << endl;
-
- break;
- }
- case parser::start_attribute:
- {
- if (trace)
- cerr << " " << p.qname () << "=";
-
- s.start_attribute (p.qname ());
- in_attr = true;
- break;
- }
- case parser::end_attribute:
- {
- s.end_attribute ();
- in_attr = false;
- break;
- }
- case parser::characters:
- {
- if (trace)
- {
- if (!in_attr)
- cerr << p.line () << ':' << p.column () << ": " << e << " ";
-
- cerr << "'" << p.value () << "'" << endl;
- }
-
- s.characters (p.value ());
- break;
- }
- default:
- break;
- }
- }
- }
- catch (const ios_base::failure& e)
- {
- cerr << "io failure" << endl;
- return 1;
- }
- catch (const xml::exception& e)
- {
- cerr << e.what () << endl;
- return 1;
- }
-}
diff --git a/libcutl/tests/xml/roundtrip/followup-1.xml b/libcutl/tests/xml/roundtrip/followup-1.xml
deleted file mode 100644
index c2a3b22..0000000
--- a/libcutl/tests/xml/roundtrip/followup-1.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<root xmlns="foo" xmlns:b="bar">
- <nested xmlns:c="cox">
- <c:inner>x</c:inner>
- </nested>
- <empty/>
- <empty x="x"/>
- <split>foo&amp;bar</split>
-</root>
diff --git a/libcutl/tests/xml/roundtrip/followup-2.xml b/libcutl/tests/xml/roundtrip/followup-2.xml
deleted file mode 100644
index 70171eb..0000000
--- a/libcutl/tests/xml/roundtrip/followup-2.xml
+++ /dev/null
@@ -1 +0,0 @@
-<empty x="x"/>
diff --git a/libcutl/tests/xml/roundtrip/makefile b/libcutl/tests/xml/roundtrip/makefile
deleted file mode 100644
index 9769593..0000000
--- a/libcutl/tests/xml/roundtrip/makefile
+++ /dev/null
@@ -1,74 +0,0 @@
-# file : tests/xml/roundtrip/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-
-#
-#
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_root)/cutl/cutl.l
-cutl.l.cpp-options := $(out_root)/cutl/cutl.l.cpp-options
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(cutl.l)
-$(cxx_obj) $(cxx_od): $(cutl.l.cpp-options)
-
-
-$(call include-dep,$(cxx_od))
-
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): tests := attribute.xml namespace.xml followup-1.xml followup-2.xml \
-characters.xml
-
-$(test): test_body = $(call message,test $< $1,$< $(src_base)/$1 >$(out_base)/test.out)$(literal_newline)\
-$(literal_tab)$(call message,,diff -u $(src_base)/$1 $(out_base)/test.out)$(literal_newline)\
-$(literal_tab)$(call message,,rm -f $(out_base)/test.out)$(literal_newline)
-$(test): $(driver)
- $(foreach t,$(tests),$(call test_body,$t))
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/cutl/makefile)
diff --git a/libcutl/tests/xml/roundtrip/namespace.xml b/libcutl/tests/xml/roundtrip/namespace.xml
deleted file mode 100644
index 4a5642e..0000000
--- a/libcutl/tests/xml/roundtrip/namespace.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<root xmlns="foo" xmlns:b="bar" b:a="a">
- <nested>
- <inner xmlns="">X</inner>
- </nested>
- <f:nested xmlns:f="fox"/>
-</root>
diff --git a/libcutl/tests/xml/serializer/driver.cxx b/libcutl/tests/xml/serializer/driver.cxx
deleted file mode 100644
index 869bb8e..0000000
--- a/libcutl/tests/xml/serializer/driver.cxx
+++ /dev/null
@@ -1,63 +0,0 @@
-// file : tests/xml/serializer/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <string>
-#include <cassert>
-#include <iostream>
-#include <sstream>
-
-#include <cutl/xml/serializer.hxx>
-
-using namespace std;
-namespace xml = cutl::xml;
-using namespace xml;
-
-int
-main ()
-{
- // Test error handling.
- //
- try
- {
- ostringstream os;
- serializer s (os, "test");
-
- s.attribute ("foo", "bar");
- assert (false);
- }
- catch (const xml::exception& e)
- {
- // cerr << e.what () << endl;
- }
-
- try
- {
- ostringstream os;
- os.exceptions (ios_base::badbit | ios_base::failbit);
- serializer s (os, "test");
-
- s.start_element ("root");
- s.characters ("one");
- os.setstate (ios_base::badbit);
- s.characters ("two");
- assert (false);
- }
- catch (const ios_base::failure& e)
- {
- }
-
- // Test value serialization.
- //
- {
- ostringstream os;
- serializer s (os, "test", 0);
-
- s.start_element ("root");
- s.attribute ("version", 123);
- s.characters (true);
- s.end_element ();
-
- assert (os.str () == "<root version=\"123\">true</root>\n");
- }
-}
diff --git a/libcutl/tests/xml/serializer/makefile b/libcutl/tests/xml/serializer/makefile
deleted file mode 100644
index 8bd1a4a..0000000
--- a/libcutl/tests/xml/serializer/makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# file : tests/xml/serializer/makefile
-# copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-
-#
-#
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-cutl.l := $(out_root)/cutl/cutl.l
-cutl.l.cpp-options := $(out_root)/cutl/cutl.l.cpp-options
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(cutl.l)
-$(cxx_obj) $(cxx_od): $(cutl.l.cpp-options)
-
-
-$(call include-dep,$(cxx_od))
-
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): $(driver)
- $(call message,test $<,$<)
-
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/cutl/makefile)
diff --git a/libcutl/version b/libcutl/version
deleted file mode 100644
index a8fdfda..0000000
--- a/libcutl/version
+++ /dev/null
@@ -1 +0,0 @@
-1.8.1
diff --git a/libxsd-frontend/INSTALL b/libxsd-frontend/INSTALL
deleted file mode 100644
index 0d0b70d..0000000
--- a/libxsd-frontend/INSTALL
+++ /dev/null
@@ -1,25 +0,0 @@
-Prerequisites
-
- build-time:
-
- - g++ >= 3.4.3 http://gcc.gnu.org
- - build >= 0.3.10 http://www.codesynthesis.com/projects/build/
-
- run-time:
-
- - libxerces-c >= 3.0.0 http://xerces.apache.org/xerces-c/
- - libcutl >= 1.8.0 http://www.codesynthesis.com/projects/libcutl/
-
-Building libxsd-frontend
-
- To build in the source directory simply run 'make'. You can also
- build in a separate directory, e.g.,
-
- $ mkdir libxsd-frontend-i686-pc-linux-gnu
- $ cd libxsd-frontend-i686-pc-linux-gnu
- $ make -f ../libxsd-frontend-x.y.z/makefile
-
-
-Installing libxsd-frontend
-
- Not supported in this version.
diff --git a/libxsd-frontend/LICENSE b/libxsd-frontend/LICENSE
deleted file mode 100644
index 33b4cbc..0000000
--- a/libxsd-frontend/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License version 2 as
-published by the Free Software Foundation.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-In addition, as a special exception, Code Synthesis Tools CC gives
-permission to link this program with the Xerces-C++ library (or with
-modified versions of Xerces-C++ that use the same license as Xerces-C++),
-and distribute linked combinations including the two. You must obey
-the GNU General Public License version 2 in all respects for all of
-the code used other than Xerces-C++. If you modify this copy of the
-program, you may extend this exception to your version of the program,
-but you are not obligated to do so. If you do not wish to do so, delete
-this exception statement from your version.
diff --git a/libxsd-frontend/NEWS b/libxsd-frontend/NEWS
deleted file mode 100644
index 1e216ef..0000000
--- a/libxsd-frontend/NEWS
+++ /dev/null
@@ -1,298 +0,0 @@
-Version 2.0.0
-
- * New major version with removed dependencies (now only depends on
- libcutl) and no longer supports Xerces-C++ 2-series.
-
- * Support for fat type files.
-
- * Generator that returns list of included/imported schemas.
-
-Version 1.18.0
-
- * Add support for multiple pattern facets.
-
- * Use normalized base path to construct absolute path.
-
- * Trim leading and trailing whitespaces in XML Schema attributes.
-
-Version 1.17.0
-
- * Add support for resolving default/fixed values of QName type. Now
- the qualified value is represented in the <namespace>#<qname> form.
-
- * Anonymous transformation now passes the actual file path instead of
- the empty string to the AnonymousNameTranslator::translate() function
- for the translation unit.
-
- * Anonymous transformation now names anonymous union member types.
-
- * Do not copy ref'ed default values for non-optional attributes.
-
- * Change predicate names in the semantic graph to consistently end
- with _p.
-
- * New transformation: enum synthesis.
-
- * Add union information to the semantics graph.
-
- * Add support for translating schema file paths.
-
-Version 1.16.0
-
- * New transformation: simplifier. It simplifies the schema graph
- by, for example, removing empty compositors where it would not
- change the semantics of the schema.
-
- * Added min() and max() accessors to the Particle and Compositor
- semantic graph nodes.
-
- * Added optional strong include key to the schema-per-type
- transformation.
-
-Version 1.15.0
-
- * Support for the simple type/simple content restriction facets.
-
- * Support for suppressing frontend warnings.
-
- * Support for suppressing full schema checking.
-
- * Support for the interface changes introduced in Xerces-C++ 3.0.0.b2.
-
-Version 1.14.0
-
- * Support for referencing names in including schema in chameleon inclusion.
-
- * Support for native paths in include/import directives.
-
- * Support for UTF-32 and UTF-16 in wchar_t.
-
- * Fixed a bug in import stubs.
-
- * Got rid of warnings reported by g++-4.3.
-
-Version 1.13.0
-
- * Support for anonymous list item and simple type restriction base
- in both parser and anonymous transformation.
-
-Version 1.12.0
-
- * New transformations: anonymous and schema-per-type.
-
- * Optional location translator can now be passed to parser's
- c-tor to translate included and imported schema locations.
-
- * Support for the upcoming Xerces-C++ 3.0.0 release.
-
- * Upgraded to the new boost import stub.
-
- * Upgraded to the new xerces-c import stub.
-
-Version 1.11.0
-
- * New transformation, xsd-frontend/transformations/restriction.hxx,
- copies omitted attributes and establishes associations between
- attributes, elements, and wildcards in complex type inheritance
- by restriction.
-
- * Upgraded to the new boost import stub.
-
-Version 1.10.1
-
- * Add XML Schema error detection that is missing in Xerces-C++.
-
- * Update Xerces-C++ import stub to use the include directory
- instead of src for header inclusion.
-
-Version 1.10.0
-
- * New semantic graph node Annotation and edge Annotates. The parser
- now handles XML Schema annotations and builds the corresponding
- representation in the semantic graph.
-
- * The library no longer depends on the internal Xerces-C++ headers
- and can be built against an installed version of Xerces-C++.
-
-Version 1.9.1
-
- * Element wildcard (SemanticGraph::Any) is now present in the complex
- type scope with an auto-generated name.
-
- * Additional regression tests for wildcard parsing.
-
-Version 1.9.0
-
- * Upgraded to build-0.3.0.
-
-Version 1.8.3
-
- * Fix for a bug in the edge case of empty prefix namespace resolution.
-
-Version 1.8.2
-
- * Fix for a bug in element ordering.
-
-
-Version 1.8.1
-
- * Fix for a bug in element group forward reference resolution.
-
- * Set of regression tests.
-
-
-Version 1.8.0
-
- * Support for the anyAttribute wildcard.
-
- * Substitution edge is now propagated to referenced elements.
-
- * Special parsing method which returns a graph that virtually
- corresponds to the XML Schema namespace definition with all
- the built-in type.
-
- * Mixed content flag in SemanticGraph::Complex.
-
- * Optional proper handling of inheritance by restriction.
-
-
-Version 1.7.0
-
- * Added Restricts and Extends edges that model XML Schema inheritance
- by restriction and inheritance by extension, respectively. The parser
- was adjusted to use these edges instead of the generic Inherits edge.
-
- * Implemented handling of the complex content inheritance by restriction.
-
- * Fixed the chameleon inclusion code to create one Schema node per each
- unique namespace.
-
- * Removed support for multiple inheritance in Complex.
-
- * Added a constructor that takes one node traverser to all edge traversers.
-
-
-Version 1.6.1
-
- * Bug fixes in the parser.
-
-
-Version 1.6.0
-
- * Support for traversing inheritance graph of enumerations.
-
- * Support for removal of Names edges.
-
-
-Version 1.5.0
-
- * Semantic graph now captures containment relations for elements. New
- semantic graph nodes: particle, compositor, all, choice, sequence.
-
- * Element and attribute groups are not first-class semantic graph
- nodes: element-group and attribute-group. References to groups
- are still fully resolved (i.e., their content is copied into
- referencing constructs).
-
-
-Version 1.4.1
-
- * Upgraded to the version-aware libboost import stub.
-
-
-Version 1.4.0
-
- * Moved to the build 0.2 series.
-
- * Support for the default and fixed values in attribute and element
- definitions.
-
-
-Version 1.3.0
-
- * Several bug fixes in the parser.
-
- * Basic support for union. Union member types are not yet tracked.
-
-
-Version 1.2.0
-
- * Bug fixes in the parser.
-
- * Support for the 'substitutes' relation.
-
- * A flag that indicates whether an element is global.
-
-
-Version 1.1.0
-
- * Basic support for inheritance-by-restriction of complex types.
-
- * Support for mixed content model by simply ignoring the attribute.
-
- * Support for xsd:anyAttribute by simply ignoring the declaration.
-
- * Support for xsd:any.
-
- * Support for the element/attribute-belongs-to-a-namespace relation
- for qualified elements and attributes.
-
-
-Version 1.0.6
-
- * Bug fixes in the parser.
-
- * Support for xsd:list.
-
- * Support for the 'refType' extension attribute which allows to specify
- referenced type for IDREF/IDREFS data types.
-
-
-Version 1.0.5
-
- * Bug fixes in the parser.
-
- * SemanticGraph::Scope::NamesList uses List container instead of Vector.
- This allows changing the semantic graph while traversing it.
-
- * SemanticGraph::Schema graph node supports multiple incoming Contains
- edges.
-
- * Traversal::Scope has been extended to support traversal of changing
- semantic graphs.
-
-
-Version 1.0.4
-
- * Diagnostics improvements.
-
- * Bug fixes in the filesystem path handling logic.
-
-
-Version 1.0.3
-
- * Bug fixes in the filesystem path handling logic.
-
-
-Version 1.0.2
-
- * Parser now handles subsequent inclusion/importing of the same
- schema by creating an appropriate edge in the semantic graph.
- Note that this may result in the semantic graph having cycles
- of Includes/Imports/Sources edges.
-
- * Support for iteration over Belongs edges in SemanticGraph::Type.
-
-
-Version 1.0.1
-
- * Diagnostics improvements.
-
- * Build system improvements.
-
- * Code cleanups.
-
-
-Version 1.0.0
-
- * First public release.
diff --git a/libxsd-frontend/README b/libxsd-frontend/README
deleted file mode 100644
index afc6e58..0000000
--- a/libxsd-frontend/README
+++ /dev/null
@@ -1,13 +0,0 @@
-libxsd-frontend is a compiler frontend for the W3C XML Schema definition
-language. It includes parser, semantic graph types and traversal mechanism.
-
-See the NEWS file for the user-visible changes from the previous release.
-
-See the LICENSE file for distribution conditions.
-
-See the INSTALL file for prerequisites and installation instructions.
-
-The project page is at http://codesynthesis.com/projects/libxsd-frontend/.
-
-Send bug reports or any other feedback to the
-libxsd-frontend-users@codesynthesis.com mailing list.
diff --git a/libxsd-frontend/build/bootstrap.make b/libxsd-frontend/build/bootstrap.make
deleted file mode 100644
index bb1a5aa..0000000
--- a/libxsd-frontend/build/bootstrap.make
+++ /dev/null
@@ -1,49 +0,0 @@
-# file : build/bootstrap.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-project_name := libxsd-frontend
-
-# First try to include the bundled bootstrap.make if it exist. If that
-# fails, let make search for the external bootstrap.make.
-#
-build := build-0.3
-
--include $(dir $(lastword $(MAKEFILE_LIST)))../../$(build)/bootstrap.make
-
-ifeq ($(patsubst %build/bootstrap.make,,$(lastword $(MAKEFILE_LIST))),)
-include $(build)/bootstrap.make
-endif
-
-# Configuration (optional; only used in the +dep packages).
-#
-$(call -include,$(dcf_root)/configuration-dynamic.make)
-
-# Aliases
-#
-.PHONY: $(out_base)/ \
- $(out_base)/.test \
- $(out_base)/.clean
-
-ifdef %interactive%
-
-.PHONY: test clean
-
-test: $(out_base)/.test
-clean: $(out_base)/.clean
-
-ifneq ($(filter $(.DEFAULT_GOAL),test clean),)
-.DEFAULT_GOAL :=
-endif
-
-endif
-
-# Don't include dependency info for certain targets.
-#
-define include-dep
-$(call -include,$1)
-endef
-
-ifneq ($(filter $(MAKECMDGOALS),clean disfigure),)
-include-dep =
-endif
diff --git a/libxsd-frontend/build/configuration-dynamic.make b/libxsd-frontend/build/configuration-dynamic.make
deleted file mode 100644
index d681b0b..0000000
--- a/libxsd-frontend/build/configuration-dynamic.make
+++ /dev/null
@@ -1 +0,0 @@
-libxsd_frontend_clean_gen := n
diff --git a/libxsd-frontend/build/cxx/configuration-dynamic.make b/libxsd-frontend/build/cxx/configuration-dynamic.make
deleted file mode 100644
index 83cf860..0000000
--- a/libxsd-frontend/build/cxx/configuration-dynamic.make
+++ /dev/null
@@ -1,11 +0,0 @@
-cxx_id := generic
-cxx_pp_extra_options := $(CPPFLAGS)
-cxx_extra_options := $(CXXFLAGS)
-cxx_ld_extra_options := $(LDFLAGS)
-cxx_extra_libs := $(LIBS)
-
-r := $(shell echo $(LDFLAGS) | sed -e 's/-L *\([^ ]*\)/-L\1/g')
-r := $(patsubst -L%,%,$(filter -L%,$(r)))
-r := $(shell echo $(r) | sed -e 's/ /:/g')
-
-cxx_extra_lib_paths := $(r)
diff --git a/libxsd-frontend/build/cxx/generic/configuration-dynamic.make b/libxsd-frontend/build/cxx/generic/configuration-dynamic.make
deleted file mode 100644
index c43865a..0000000
--- a/libxsd-frontend/build/cxx/generic/configuration-dynamic.make
+++ /dev/null
@@ -1,5 +0,0 @@
-ifeq ($(filter $(origin CXX),undefined default),)
-cxx_generic := $(CXX)
-else
-cxx_generic := g++
-endif
diff --git a/libxsd-frontend/build/export/libxsd-frontend/stub.make b/libxsd-frontend/build/export/libxsd-frontend/stub.make
deleted file mode 100644
index 8575358..0000000
--- a/libxsd-frontend/build/export/libxsd-frontend/stub.make
+++ /dev/null
@@ -1,9 +0,0 @@
-# file : build/import/libxsd-frontend/stub.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-$(call include-once,$(src_root)/xsd-frontend/makefile,$(out_root))
-
-$(call export,\
- l: $(out_root)/xsd-frontend/xsd-frontend.l,\
- cpp-options: $(out_root)/xsd-frontend/xsd-frontend.l.cpp-options)
diff --git a/libxsd-frontend/build/import/libcutl/LICENSE b/libxsd-frontend/build/import/libcutl/LICENSE
deleted file mode 100644
index 6b90d44..0000000
--- a/libxsd-frontend/build/import/libcutl/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-Code found in the cutl/details/boost/ directory is distributed under
-the Boost Software License (see the accompanying LICENSE file).
-
-The rest is Copyright (c) 2009-2011 Code Synthesis Tools CC and is
-distributed under the following license (MIT License):
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/libxsd-frontend/build/import/libcutl/configuration-dynamic.make b/libxsd-frontend/build/import/libcutl/configuration-dynamic.make
deleted file mode 100644
index 4e4bb83..0000000
--- a/libxsd-frontend/build/import/libcutl/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-ifeq ($(EXTERNAL_LIBCUTL),y)
-libcutl_installed := y
-else
-libcutl_installed := n
-src_root := $(abspath $(src_root)/../libcutl)
-scf_root := $(src_root)/build
-out_root := $(src_root)
-endif
diff --git a/libxsd-frontend/build/import/libcutl/configuration-rules.make b/libxsd-frontend/build/import/libcutl/configuration-rules.make
deleted file mode 100644
index b9fcabc..0000000
--- a/libxsd-frontend/build/import/libcutl/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libcutl/configuration-rules.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(dcf_root)/import/libcutl/configuration-dynamic.make: | $(dcf_root)/import/libcutl/.
- $(call message,,$(scf_root)/import/libcutl/configure $@)
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/import/libcutl/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libcutl/configuration-dynamic.make)
-
-endif
diff --git a/libxsd-frontend/build/import/libcutl/configure b/libxsd-frontend/build/import/libcutl/configure
deleted file mode 100755
index 8adb631..0000000
--- a/libxsd-frontend/build/import/libcutl/configure
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libcutl/configure
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-
-# $1 - out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'libcutl' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed "
-$echo "version of 'libcutl' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-
-if [ "$installed" = "n" ]; then
-
-$echo
-$echo "Please enter the src_root for 'libcutl'."
-$echo
-
-src_root=`read_path --directory --exist`
-
-$echo
-$echo "Please enter the out_root for 'libcutl'."
-$echo
-
-out_root=`read_path --directory $src_root`
-
-fi
-
-echo libcutl_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
-echo src_root := $src_root >>$1
-echo scf_root := \$\(src_root\)/build >>$1
-echo out_root := $out_root >>$1
-
-fi
diff --git a/libxsd-frontend/build/import/libcutl/stub.make b/libxsd-frontend/build/import/libcutl/stub.make
deleted file mode 100644
index 1ec4716..0000000
--- a/libxsd-frontend/build/import/libcutl/stub.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/import/libcutl/stub.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libcutl/configuration-rules.make,$(dcf_root))
-
-libcutl_installed :=
-
-$(call -include,$(dcf_root)/import/libcutl/configuration-dynamic.make)
-
-ifdef libcutl_installed
-
-ifeq ($(libcutl_installed),y)
-
-$(call export,l: -lcutl,cpp-options: )
-
-else
-
-# Include export stub.
-#
-$(call include,$(scf_root)/export/libcutl/stub.make)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/libxsd-frontend/build/import/libxerces-c/LICENSE b/libxsd-frontend/build/import/libxerces-c/LICENSE
deleted file mode 100644
index 3912109..0000000
--- a/libxsd-frontend/build/import/libxerces-c/LICENSE
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/libxsd-frontend/build/import/libxerces-c/configuration-dynamic.make b/libxsd-frontend/build/import/libxerces-c/configuration-dynamic.make
deleted file mode 100644
index 91f61b2..0000000
--- a/libxsd-frontend/build/import/libxerces-c/configuration-dynamic.make
+++ /dev/null
@@ -1 +0,0 @@
-libxerces_c_installed := y
diff --git a/libxsd-frontend/build/import/libxerces-c/configuration-rules.make b/libxsd-frontend/build/import/libxerces-c/configuration-rules.make
deleted file mode 100644
index 995e6bd..0000000
--- a/libxsd-frontend/build/import/libxerces-c/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libxerces-c/configuration-rules.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libxerces-c/configuration-dynamic.make: | $(dcf_root)/import/libxerces-c/.
- $(call message,,$(scf_root)/import/libxerces-c/configure $@)
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libxerces-c/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libxerces-c/configuration-dynamic.make)
-
-endif
diff --git a/libxsd-frontend/build/import/libxerces-c/configure b/libxsd-frontend/build/import/libxerces-c/configure
deleted file mode 100755
index 45cd3da..0000000
--- a/libxsd-frontend/build/import/libxerces-c/configure
+++ /dev/null
@@ -1,72 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libxerces-c/configure
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-
-# $1 - out config file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'libxerces-c' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed version"
-$echo "of 'libxerces-c' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-type=
-
-if [ "$installed" = "n" ]; then
-
- version=
-
- while [ -z "$version" ]; do
-
- $echo
- $echo "Please enter the 'libxerces-c' root directory."
- $echo
-
- root=`read_path --directory --exist`
-
- version=`sed -e 's/^VER=\([^_]*\)_\([^_]*\)_\([^_]*\)[ ]*$/\1.\2.\3/' \
--e t -e d $root/version.incl 2>/dev/null`
-
- if [ $? != 0 -o -z "$version" ]; then
-
- version=
- echo "Unable to read version information from $root/version.incl"
- fi
- done
-
- $echo
- $echo "Please select the library type you would like to use:"
- $echo
- $echo "(1) archive"
- $echo "(2) shared object"
- $echo
-
- type=`read_option "archive shared" "shared"`
-
-fi
-
-echo libxerces_c_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
- echo libxerces_c_root := $root >>$1
- echo libxerces_c_type := $type >>$1
- echo libxerces_c_version := $version >>$1
-
-fi
diff --git a/libxsd-frontend/build/import/libxerces-c/rules.make b/libxsd-frontend/build/import/libxerces-c/rules.make
deleted file mode 100644
index 21ac145..0000000
--- a/libxsd-frontend/build/import/libxerces-c/rules.make
+++ /dev/null
@@ -1,51 +0,0 @@
-# file : build/import/libxerces-c/rules.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libxerces-c/%: root := $(libxerces_c_root)
-
-ifneq ($(filter 3.%,$(libxerces_c_version)),)
-
-# 3.x.y
-#
-ifeq ($(libxerces_c_type),archive)
-
-$(dcf_root)/import/libxerces-c/xerces-c.l: $(libxerces_c_root)/src/.libs/libxerces-c.a
- @echo $< >$@
-else
-
-$(dcf_root)/import/libxerces-c/xerces-c.l: $(libxerces_c_root)/src/.libs/libxerces-c.so
- @echo $< >$@
- @echo rpath:$(root)/src/.libs >>$@
-endif
-
-$(dcf_root)/import/libxerces-c/xerces-c.l.cpp-options:
- @echo include: -I$(root)/src >$@
-else
-
-# 2.x.y
-#
-ifeq ($(libxerces_c_type),archive)
-
-$(dcf_root)/import/libxerces-c/xerces-c.l: $(libxerces_c_root)/lib/libxerces-c.a
- @echo $< >$@
-else
-
-$(dcf_root)/import/libxerces-c/xerces-c.l: $(libxerces_c_root)/lib/libxerces-c.so
- @echo $< >$@
- @echo rpath:$(root)/lib >>$@
-endif
-
-$(dcf_root)/import/libxerces-c/xerces-c.l.cpp-options:
- @echo include: -I$(root)/include >$@
-endif
-
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libxerces-c/xerces-c.l,\
-rm -f $(dcf_root)/import/libxerces-c/xerces-c.l)
- $(call message,,rm -f $(dcf_root)/import/libxerces-c/xerces-c.l.cpp-options)
-
-endif
diff --git a/libxsd-frontend/build/import/libxerces-c/stub.make b/libxsd-frontend/build/import/libxerces-c/stub.make
deleted file mode 100644
index 745200d..0000000
--- a/libxsd-frontend/build/import/libxerces-c/stub.make
+++ /dev/null
@@ -1,31 +0,0 @@
-# file : build/import/libxerces-c/stub.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libxerces-c/configuration-rules.make,$(dcf_root))
-
-libxerces_c_installed :=
-
-$(call -include,$(dcf_root)/import/libxerces-c/configuration-dynamic.make)
-
-ifdef libxerces_c_installed
-
-ifeq ($(libxerces_c_installed),y)
-
-$(call export,l: -lxerces-c,cpp-options: )
-
-else
-
-$(call include-once,$(scf_root)/import/libxerces-c/rules.make,$(dcf_root))
-
-$(call export,\
- l: $(dcf_root)/import/libxerces-c/xerces-c.l,\
- cpp-options: $(dcf_root)/import/libxerces-c/xerces-c.l.cpp-options)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/libxsd-frontend/build/import/libxerces-c/version b/libxsd-frontend/build/import/libxerces-c/version
deleted file mode 100644
index a918a2a..0000000
--- a/libxsd-frontend/build/import/libxerces-c/version
+++ /dev/null
@@ -1 +0,0 @@
-0.6.0
diff --git a/libxsd-frontend/build/import/libxsd-frontend/LICENSE b/libxsd-frontend/build/import/libxsd-frontend/LICENSE
deleted file mode 120000
index 5853aae..0000000
--- a/libxsd-frontend/build/import/libxsd-frontend/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-../../../LICENSE \ No newline at end of file
diff --git a/libxsd-frontend/build/import/libxsd-frontend/configuration-rules.make b/libxsd-frontend/build/import/libxsd-frontend/configuration-rules.make
deleted file mode 100644
index 05a312a..0000000
--- a/libxsd-frontend/build/import/libxsd-frontend/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libxsd-frontend/configuration-rules.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-$(dcf_root)/import/libxsd-frontend/configuration-dynamic.make: | $(dcf_root)/import/libxsd-frontend/.
- $(call message,,$(scf_root)/import/libxsd-frontend/configure $@)
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libxsd-frontend/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libxsd-frontend/configuration-dynamic.make)
-
-endif
diff --git a/libxsd-frontend/build/import/libxsd-frontend/configure b/libxsd-frontend/build/import/libxsd-frontend/configure
deleted file mode 100755
index 0c34062..0000000
--- a/libxsd-frontend/build/import/libxsd-frontend/configure
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libxsd-frontend/configure
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-
-# $1 - out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'libxsd-frontend' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed "
-$echo "version of 'libxsd-frontend' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-
-if [ "$installed" = "n" ]; then
-
-$echo
-$echo "Please enter the src_root for 'libxsd-frontend'."
-$echo
-
-src_root=`read_path --directory --exist`
-
-$echo
-$echo "Please enter the out_root for 'libxsd-frontend'."
-$echo
-
-out_root=`read_path --directory $src_root`
-
-fi
-
-echo libxsd_frontend_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
-echo src_root := $src_root >>$1
-echo scf_root := \$\(src_root\)/build >>$1
-echo out_root := $out_root >>$1
-
-fi
diff --git a/libxsd-frontend/build/import/libxsd-frontend/stub.make b/libxsd-frontend/build/import/libxsd-frontend/stub.make
deleted file mode 100644
index cb57cef..0000000
--- a/libxsd-frontend/build/import/libxsd-frontend/stub.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/import/libxsd-frontend/stub.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libxsd-frontend/configuration-rules.make,$(dcf_root))
-
-libxsd_frontend_installed :=
-
-$(call -include,$(dcf_root)/import/libxsd-frontend/configuration-dynamic.make)
-
-ifdef libxsd_frontend_installed
-
-ifeq ($(libxsd_frontend_installed),y)
-
-$(call export,l: -lxsd-frontend -lcutl -lxerces-c,cpp_options: )
-
-else
-
-# Include export stub.
-#
-$(call include,$(scf_root)/export/libxsd-frontend/stub.make)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/libxsd-frontend/build/ld/configuration-lib-dynamic.make b/libxsd-frontend/build/ld/configuration-lib-dynamic.make
deleted file mode 100644
index 63d2ed3..0000000
--- a/libxsd-frontend/build/ld/configuration-lib-dynamic.make
+++ /dev/null
@@ -1,13 +0,0 @@
-ld_lib_type := archive
-
-ifeq ($(filter $(origin AR),undefined default),)
-ld_lib_ar := $(AR)
-else
-ld_lib_ar := ar
-endif
-
-ifeq ($(filter $(origin RANLIB),undefined default),)
-ld_lib_ranlib := $(RANLIB)
-else
-ld_lib_ranlib := ranlib
-endif
diff --git a/libxsd-frontend/makefile b/libxsd-frontend/makefile
deleted file mode 100644
index b92bfdf..0000000
--- a/libxsd-frontend/makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-# file : makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))build/bootstrap.make
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(out_base)/xsd-frontend/ $(out_base)/tests/
-$(test): $(out_base)/tests/.test
-$(clean): $(out_base)/xsd-frontend/.clean $(out_base)/tests/.clean
-
-$(call import,$(src_base)/xsd-frontend/makefile)
-$(call import,$(src_base)/tests/makefile)
diff --git a/libxsd-frontend/tests/dump/driver.cxx b/libxsd-frontend/tests/dump/driver.cxx
deleted file mode 100644
index dd925a9..0000000
--- a/libxsd-frontend/tests/dump/driver.cxx
+++ /dev/null
@@ -1,725 +0,0 @@
-// file : tests/dump/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/types.hxx>
-#include <xsd-frontend/parser.hxx>
-#include <xsd-frontend/transformations/anonymous.hxx>
-#include <xsd-frontend/transformations/enum-synthesis.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <iostream>
-
-using namespace std;
-using namespace XSDFrontend;
-
-static unsigned long indent;
-
-std::wostream&
-ind (std::wostream& os)
-{
- for (unsigned long n (0); n < indent; ++n)
- os << L" ";
-
- return os;
-}
-
-namespace
-{
- // Nameable which is named in the namespace scope.
- //
- String
- ref_name (SemanticGraph::Nameable& n)
- {
- String const& scope (n.scope ().name ());
-
- return scope + (scope.empty () ? L"" : L"#") + n.name ();
- }
-
- struct List: Traversal::List
- {
- virtual void
- traverse (Type& l)
- {
- if (l.annotated_p ())
- wcout << ind << "<" << l.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "list " <<
- (l.named_p () ? l.name () : String ("<anonymous>"));
-
- SemanticGraph::Type& t (l.argumented ().type ());
-
- if (t.named_p ())
- wcout << " " << ref_name (t) << endl;
- else
- {
- wcout << endl
- << ind << "{" << endl;
- indent++;
-
- edge_traverser ().dispatch (l.argumented ());
-
- indent--;
- wcout << ind << "}" << endl;
- }
- }
- };
-
- struct Union: Traversal::Union
- {
- virtual void
- traverse (Type& u)
- {
- if (u.annotated_p ())
- wcout << ind << "<" << u.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "union " <<
- (u.named_p () ? u.name () : String ("<anonymous>")) << " ";
-
- for (Type::ArgumentedIterator i (u.argumented_begin ());
- i != u.argumented_end (); ++i)
- {
- SemanticGraph::Type& t (i->type ());
-
- if (t.named_p ())
- wcout << ref_name (t) << " ";
- else
- {
- wcout << endl
- << ind << "{" << endl;
- indent++;
-
- edge_traverser ().dispatch (*i);
-
- indent--;
- wcout << ind << "}" << endl;
- }
- }
-
- wcout << endl;
- }
- };
-
- struct Enumerator: Traversal::Enumerator
- {
- virtual void
- traverse (Type& e)
- {
- if (e.annotated_p ())
- wcout << ind << "<" << e.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "enumerator " << e.name () << endl;
- }
- };
-
- struct Enumeration: Traversal::Enumeration
- {
- virtual void
- traverse (Type& e)
- {
- if (e.annotated_p ())
- wcout << ind << "<" << e.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "enumeration " <<
- (e.named_p () ? e.name () : String ("<anonymous>")) << ": " <<
- ref_name (e.inherits ().base ()) << endl
- << ind << "{" << endl;
-
- indent++;
- Traversal::Enumeration::traverse (e);
- indent--;
-
- wcout << ind << "}" << endl;
- }
- };
-
- struct ContainsParticle: Traversal::ContainsParticle
- {
- virtual void
- traverse (Type& cp)
- {
- wcout << ind << "[" << cp.min () << ", ";
-
- if (cp.max () == 0)
- wcout << "unbounded] ";
- else
- wcout << cp.max () << "] ";
-
- Traversal::ContainsParticle::traverse (cp);
- }
- };
-
- struct ContainsCompositor: Traversal::ContainsCompositor
- {
- virtual void
- traverse (Type& cc)
- {
- wcout << ind << "[" << cc.min () << ", ";
-
- if (cc.max () == 0)
- wcout << "unbounded] ";
- else
- wcout << cc.max () << "] ";
-
- Traversal::ContainsCompositor::traverse (cc);
- }
- };
-
- struct Compositor: Traversal::All,
- Traversal::Choice,
- Traversal::Sequence
- {
- virtual void
- traverse (SemanticGraph::All& a)
- {
- wcout << "all" << endl
- << ind << "{" << endl;
-
- indent++;
-
- Traversal::All::traverse (a);
-
- indent--;
-
- wcout << ind << "}" << endl;
- }
-
- virtual void
- traverse (SemanticGraph::Choice& c)
- {
- wcout << "choice" << endl
- << ind << "{" << endl;
-
- indent++;
-
- Traversal::Choice::traverse (c);
-
- indent--;
-
- wcout << ind << "}" << endl;
- }
-
- virtual void
- traverse (SemanticGraph::Sequence& s)
- {
- wcout << "sequence" << endl
- << ind << "{" << endl;
-
- indent++;
-
- Traversal::Sequence::traverse (s);
-
- indent--;
-
- wcout << ind << "}" << endl;
- }
- };
-
- struct Attribute: Traversal::Attribute
- {
- virtual void
- traverse (Type& a)
- {
- if (a.annotated_p ())
- wcout << ind << "<" << a.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << (a.optional_p () ? "optional" : "required")
- << " attribute " << a.name ();
-
- if (a.fixed_p ())
- wcout << "==" << a.value ();
- else if (a.default_p ())
- wcout << "=" << a.value ();
-
- SemanticGraph::Type& t (a.type ());
-
- if (t.named_p ())
- wcout << " " << ref_name (t) << endl;
- else
- {
- wcout << endl
- << ind << "{" << endl;
- indent++;
-
- belongs (a);
-
- indent--;
- wcout << ind << "}" << endl;
- }
- }
- };
-
- struct AnyAttribute: Traversal::AnyAttribute
- {
- virtual void
- traverse (Type& a)
- {
- if (a.annotated_p ())
- wcout << ind << "<" << a.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "any-attribute '" << a.name () << "'" << endl;
- }
- };
-
- struct Element: Traversal::Element
- {
- virtual void
- traverse (Type& e)
- {
- wcout << "element " << e.name ();
-
- if (e.fixed_p ())
- wcout << "==" << e.value ();
- else if (e.default_p ())
- wcout << "=" << e.value ();
-
- SemanticGraph::Type& t (e.type ());
-
- if (t.named_p ())
- wcout << " " << ref_name (t) << endl;
- else
- {
- wcout << endl
- << ind << "{" << endl;
- indent++;
-
- belongs (e);
-
- indent--;
- wcout << ind << "}" << endl;
- }
- }
- };
-
- struct ElementFlat: Traversal::Element
- {
- virtual void
- traverse (Type& e)
- {
- if (e.annotated_p ())
- wcout << ind << "<" << e.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "element " << e.name ();
-
- if (e.fixed_p ())
- wcout << "==" << e.value ();
- else if (e.default_p ())
- wcout << "=" << e.value ();
-
- wcout << endl;
- }
- };
-
- struct Any: Traversal::Any
- {
- virtual void
- traverse (Type& a)
- {
- wcout << "any '" << a.name () << "'" << endl;
- }
- };
-
- struct AnyFlat: Traversal::Any
- {
- virtual void
- traverse (Type& a)
- {
- if (a.annotated_p ())
- wcout << ind << "<" << a.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "any '" << a.name () << "'" << endl;
- }
- };
-
- struct Complex: Traversal::Complex
- {
- virtual void
- traverse (Type& c)
- {
- // Anonymous type definition can recursively refer to itself.
- //
- if (c.context ().count ("seen"))
- {
- wcout << ind << "complex <recursive-anonymous>" << endl;
- return;
- }
-
- c.context ().set ("seen", true);
-
- if (c.annotated_p ())
- wcout << ind << "<" << c.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "complex " <<
- (c.named_p () ? c.name () : String ("<anonymous>"));
-
- if (c.inherits_p ())
- wcout << ": " << ref_name (c.inherits ().base ());
-
- wcout << endl
- << ind << "{" << endl;
- indent++;
-
- Traversal::Complex::traverse (c);
-
- indent--;
- wcout << ind << "}" << endl;
-
- c.context ().remove ("seen");
- }
- };
-
- struct GlobalAttribute: Traversal::Attribute
- {
- virtual void
- traverse (Type& a)
- {
- if (a.annotated_p ())
- wcout << ind << "<" << a.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "attribute " << a.name ();
-
- if (a.fixed_p ())
- wcout << "==" << a.value ();
- else if (a.default_p ())
- wcout << "=" << a.value ();
-
- SemanticGraph::Type& t (a.type ());
-
- if (t.named_p ())
- wcout << " " << ref_name (t) << endl;
- else
- {
- wcout << endl
- << ind << "{" << endl;
- indent++;
-
- belongs (a);
-
- indent--;
- wcout << ind << "}" << endl;
- }
- }
- };
-
- struct GlobalElement: Traversal::Element
- {
- virtual void
- traverse (Type& e)
- {
- if (e.annotated_p ())
- wcout << ind << "<" << e.annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "element " << e.name ();
-
- if (e.fixed_p ())
- wcout << "==" << e.value ();
- else if (e.default_p ())
- wcout << "=" << e.value ();
-
- SemanticGraph::Type& t (e.type ());
-
- if (t.named_p ())
- wcout << " " << ref_name (t) << endl;
- else
- {
- wcout << endl
- << ind << "{" << endl;
- indent++;
-
- belongs (e);
-
- indent--;
- wcout << ind << "}" << endl;
- }
- }
- };
-
- struct Namespace: Traversal::Namespace
- {
- virtual void
- traverse (Type& n)
- {
- wcout << ind << "namespace " << n.name () << endl
- << ind << "{" << endl;
- indent++;
- Traversal::Namespace::traverse (n);
- indent--;
- wcout << ind << "}" << endl;
- }
- };
-
- // Go into implied/included/imported schemas while making sure
- // we don't recurse forever.
- //
- struct Uses: Traversal::Imports,
- Traversal::Includes,
- Traversal::Sources
- //Traversal::Implies @@ Need a --with-implies option
- {
- virtual void
- traverse (SemanticGraph::Imports& i)
- {
- if (traverse_uses (i, "imports"))
- Traversal::Imports::traverse (i);
- }
-
- virtual void
- traverse (SemanticGraph::Includes& i)
- {
- if (traverse_uses (i, "includes"))
- Traversal::Includes::traverse (i);
- }
-
- virtual void
- traverse (SemanticGraph::Sources& s)
- {
- if (traverse_uses (s, "sources"))
- Traversal::Sources::traverse (s);
- }
-
- /*
- virtual void
- traverse (SemanticGraph::Implies& i)
- {
- if (traverse_uses (i, "implies"))
- Traversal::Implies::traverse (i);
- }
- */
-
- bool
- traverse_uses (SemanticGraph::Uses& u, String const& type)
- {
- SemanticGraph::Schema& s (u.schema ());
-
- if (s.context ().count ("seen"))
- {
- wcout << ind << "recursively " << type << " " << u.path () << endl;
- return false;
- }
-
- s.context ().set ("seen", true);
-
- if (s.annotated_p ())
- wcout << ind << "<" << s.annotation ().documentation () << ">" << endl;
-
- wcout << ind << type << " " << u.path () << endl;
-
- return true;
- }
- };
-
- struct Schema: Traversal::Schema
- {
- virtual void
- traverse (Type& s)
- {
- wcout << ind << "{" << endl;
- indent++;
- Traversal::Schema::traverse (s);
- indent--;
- wcout << ind << "}" << endl;
- }
- };
-}
-
-struct AnonymousNameTranslator: Transformations::AnonymousNameTranslator
-{
- virtual String
- translate (String const& /*file*/,
- String const& ns,
- String const& name,
- String const& xpath)
- {
- wcout << "anonymous: " << ns << " " << name << " " << xpath << endl;
- return name;
- }
-};
-
-int
-main (int argc, char* argv[])
-{
- try
- {
- if (argc < 2)
- {
- wcerr << argv[0] << ": error: no input file." << endl;
- return 1;
- }
-
- // Parse options.
- //
- int i (1);
- bool anon (false);
- bool enum_synth (false);
-
- for (; i < argc; ++i)
- {
- if (argv[i] == NarrowString ("--anonymous"))
- anon = true;
- else if (argv[i] == NarrowString ("--enum-synthesis"))
- enum_synth = true;
- else
- break;
- }
-
- // Parse schema.
- //
- SemanticGraph::Path path (argv[i]);
-
- Parser parser (true, false, true);
- auto_ptr<SemanticGraph::Schema> tu (parser.parse (path));
-
- //
- //
- if (anon)
- {
- try
- {
- AnonymousNameTranslator transl;
- Transformations::Anonymous transf (transl);
- transf.transform (*tu, path, true);
- }
- catch (Transformations::Anonymous::Failed const&)
- {
- // Diagnostics has already been issued.
- //
- return 1;
- }
- }
-
- //
- //
- if (enum_synth)
- {
- Transformations::EnumSynthesis transf;
- transf.transform (*tu, path);
- }
-
- //
- //
- Schema schema;
- Uses uses;
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- Namespace ns;
- Traversal::Names ns_names;
-
- schema >> schema_names >> ns >> ns_names;
-
- //
- //
- List list;
- Union union_;
- Complex complex;
- Enumeration enumeration;
- GlobalElement global_element;
- GlobalAttribute global_attribute;
-
- Traversal::Names complex_names;
- Traversal::Names enumeration_names;
- ContainsCompositor contains_compositor;
-
- ns_names >> list;
- ns_names >> union_;
- ns_names >> complex;
- ns_names >> enumeration;
- ns_names >> global_attribute;
- ns_names >> global_element;
-
- complex >> complex_names;
- complex >> contains_compositor;
-
- enumeration >> enumeration_names;
-
- //
- //
- Compositor compositor;
- ContainsParticle contains_particle;
-
- contains_compositor >> compositor;
- compositor >> contains_particle >> compositor;
-
- //
- //
- Any any;
- AnyFlat any_flat;
- Element element;
- ElementFlat element_flat;
- Attribute attribute;
- AnyAttribute any_attribute;
- Traversal::Belongs belongs;
-
- element >> belongs;
- attribute >> belongs;
-
- global_element >> belongs;
- global_attribute >> belongs;
-
- complex_names >> attribute;
- complex_names >> any_attribute;
- complex_names >> any_flat;
- complex_names >> element_flat;
-
- contains_particle >> any;
- contains_particle >> element;
-
- belongs >> list;
- belongs >> union_;
- belongs >> complex;
- belongs >> enumeration;
-
- //
- //
- Traversal::Argumented argumented;
- list >> argumented;
- union_ >> argumented;
-
- argumented >> list;
- argumented >> union_;
- argumented >> complex;
- argumented >> enumeration;
-
- //
- //
- Enumerator enumerator;
- enumeration_names >> enumerator;
-
- //
- //
- if (tu->annotated_p ())
- wcout << ind << "<" << tu->annotation ().documentation () << ">"
- << endl;
-
- wcout << ind << "primary" << endl;
- tu->context ().set ("seen", true);
- schema.dispatch (*tu);
-
- return 0;
- }
- catch (InvalidSchema const&)
- {
- // Diagnostic has already been issued.
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- wcerr << argv[0] << ": error: '" << argv[1] << "' is not a valid "
- << "filesystem path" << endl;
- }
-
- return 1;
-}
diff --git a/libxsd-frontend/tests/dump/makefile b/libxsd-frontend/tests/dump/makefile
deleted file mode 100644
index 707c9cc..0000000
--- a/libxsd-frontend/tests/dump/makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# file : tests/dump/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-xsd-fe.l := $(out_root)/xsd-frontend/xsd-frontend.l
-xsd-fe.l.cpp-options := $(out_root)/xsd-frontend/xsd-frontend.l.cpp-options
-
-driver := $(out_base)/driver
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(xsd-fe.l)
-
-$(cxx_obj) $(cxx_od): $(xsd-fe.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd-frontend/makefile)
diff --git a/libxsd-frontend/tests/makefile b/libxsd-frontend/tests/makefile
deleted file mode 100644
index 7ed5300..0000000
--- a/libxsd-frontend/tests/makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-# file : tests/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(out_base)/dump/ $(out_base)/schema/
-$(test): $(out_base)/schema/.test
-$(clean): $(out_base)/dump/.clean $(out_base)/schema/.clean
-
-$(call import,$(src_base)/dump/makefile)
-$(call import,$(src_base)/schema/makefile)
diff --git a/libxsd-frontend/tests/schema/annotation/makefile b/libxsd-frontend/tests/schema/annotation/makefile
deleted file mode 100644
index 7705ba8..0000000
--- a/libxsd-frontend/tests/schema/annotation/makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# file : tests/schema/annotation/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/libxsd-frontend/tests/schema/annotation/test-000.std b/libxsd-frontend/tests/schema/annotation/test-000.std
deleted file mode 100644
index 15f3e89..0000000
--- a/libxsd-frontend/tests/schema/annotation/test-000.std
+++ /dev/null
@@ -1,67 +0,0 @@
-<schema documentation>
-primary
-{
- namespace test
- {
- <list type documentation>
- list list http://www.w3.org/2001/XMLSchema#string
- <union type documentation>
- union union http://www.w3.org/2001/XMLSchema#int http://www.w3.org/2001/XMLSchema#string
- <enumeration type documentation>
- enumeration enum: http://www.w3.org/2001/XMLSchema#string
- {
- <enumerator documentation (male)>
- enumerator male
- <enumerator documentation (female)>
- enumerator female
- }
- <complex type documentation>
- complex type
- {
- <local element efoo documentation>
- element efoo
- <local element ebar documentation>
- element ebar
- <local element ebaz documentation>
- element ebaz
- <any documentation>
- any 'any #0'
- <local attribute afoo documentation>
- optional attribute afoo http://www.w3.org/2001/XMLSchema#string
- <local attribute abar documentation>
- optional attribute abar
- {
- <list type documentation>
- list <anonymous> http://www.w3.org/2001/XMLSchema#string
- }
- <local attribute abaz documentation>
- optional attribute abaz http://www.w3.org/2001/XMLSchema#string
- <anyAttribute documentation>
- any-attribute 'any-attribute #0'
- [1, 1] sequence
- {
- [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string
- [1, 1] element ebar
- {
- complex <anonymous>
- {
- <nested local element efoo documentation>
- element efoo
- <nested local attribute afoo documentation>
- optional attribute afoo http://www.w3.org/2001/XMLSchema#string
- [1, 1] sequence
- {
- [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string
- }
- }
- }
- [1, 1] element ebaz http://www.w3.org/2001/XMLSchema#string
- [1, 1] any 'any #0'
- }
- }
- <global element documentation>
- element ebaz http://www.w3.org/2001/XMLSchema#string
- <global attribute documentation>
- attribute abaz http://www.w3.org/2001/XMLSchema#string
- }
-}
diff --git a/libxsd-frontend/tests/schema/annotation/test-000.xsd b/libxsd-frontend/tests/schema/annotation/test-000.xsd
deleted file mode 100644
index f768b45..0000000
--- a/libxsd-frontend/tests/schema/annotation/test-000.xsd
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <annotation>
- <documentation>schema documentation</documentation>
- </annotation>
-
- <simpleType name="list">
- <annotation>
- <documentation>list type documentation</documentation>
- </annotation>
- <list itemType="string"/>
- </simpleType>
-
- <simpleType name="union">
- <annotation>
- <documentation>union type documentation</documentation>
- </annotation>
- <union memberTypes="int string"/>
- </simpleType>
-
- <simpleType name="enum">
- <annotation>
- <documentation>enumeration type documentation</documentation>
- </annotation>
- <restriction base="string">
- <enumeration value="male">
- <annotation>
- <documentation>enumerator documentation (male)</documentation>
- </annotation>
- </enumeration>
- <enumeration value="female">
- <annotation>
- <documentation>enumerator documentation (female)</documentation>
- </annotation>
- </enumeration>
- </restriction>
- </simpleType>
-
- <complexType name="type">
- <annotation>
- <documentation>complex type documentation</documentation>
- </annotation>
- <sequence>
- <element name="efoo" type="string">
- <annotation>
- <documentation>local element efoo documentation</documentation>
- </annotation>
- </element>
- <element name="ebar">
- <annotation>
- <documentation>local element ebar documentation</documentation>
- </annotation>
- <complexType>
- <sequence>
- <element name="efoo" type="string">
- <annotation>
- <documentation>nested local element efoo documentation</documentation>
- </annotation>
- </element>
- </sequence>
- <attribute name="afoo" type="string">
- <annotation>
- <documentation>nested local attribute afoo documentation</documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
- <element ref="t:ebaz">
- <annotation>
- <documentation>local element ebaz documentation</documentation>
- </annotation>
- </element>
- <any namespace="##other">
- <annotation>
- <documentation>any documentation</documentation>
- </annotation>
- </any>
- </sequence>
- <attribute name="afoo" type="string">
- <annotation>
- <documentation>local attribute afoo documentation</documentation>
- </annotation>
- </attribute>
- <attribute name="abar">
- <annotation>
- <documentation>local attribute abar documentation</documentation>
- </annotation>
- <simpleType>
- <annotation>
- <documentation>list type documentation</documentation>
- </annotation>
- <list itemType="string"/>
- </simpleType>
- </attribute>
- <attribute ref="t:abaz">
- <annotation>
- <documentation>local attribute abaz documentation</documentation>
- </annotation>
- </attribute>
- <anyAttribute namespace="##other">
- <annotation>
- <documentation>anyAttribute documentation</documentation>
- </annotation>
- </anyAttribute>
- </complexType>
-
- <element name="ebaz" type="string">
- <annotation>
- <documentation>global element documentation</documentation>
- </annotation>
- </element>
-
- <attribute name="abaz" type="string">
- <annotation>
- <documentation>global attribute documentation</documentation>
- </annotation>
- </attribute>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/annotation/test-001.std b/libxsd-frontend/tests/schema/annotation/test-001.std
deleted file mode 100644
index 9e2c99a..0000000
--- a/libxsd-frontend/tests/schema/annotation/test-001.std
+++ /dev/null
@@ -1,36 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- <global element ebar documentation>
- element ebar
- <group element efoo documentation>
- element efoo
- <global element ebar documentation>
- element ebar
- <global attribute abar documentation>
- optional attribute abar http://www.w3.org/2001/XMLSchema#string
- <group attribute afoo documentation>
- optional attribute afoo http://www.w3.org/2001/XMLSchema#string
- <global attribute abaz documentation>
- optional attribute abaz http://www.w3.org/2001/XMLSchema#string
- [1, 1] sequence
- {
- [1, 1] element ebar http://www.w3.org/2001/XMLSchema#string
- [1, 1] choice
- {
- [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string
- [1, 1] element ebar http://www.w3.org/2001/XMLSchema#string
- }
- }
- }
- <global element ebar documentation>
- element ebar http://www.w3.org/2001/XMLSchema#string
- <global attribute abar documentation>
- attribute abar http://www.w3.org/2001/XMLSchema#string
- <global attribute abaz documentation>
- attribute abaz http://www.w3.org/2001/XMLSchema#string
- }
-}
diff --git a/libxsd-frontend/tests/schema/annotation/test-001.xsd b/libxsd-frontend/tests/schema/annotation/test-001.xsd
deleted file mode 100644
index 286f63a..0000000
--- a/libxsd-frontend/tests/schema/annotation/test-001.xsd
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Test various ref constructs. -->
-
- <complexType name="type">
- <sequence>
- <element ref="t:ebar"/>
- <group ref="t:eg"/>
- </sequence>
- <attribute ref="t:abar"/>
- <attributeGroup ref="t:ag"/>
- </complexType>
-
- <group name="eg">
- <choice>
- <element name="efoo" type="string">
- <annotation>
- <documentation>group element efoo documentation</documentation>
- </annotation>
- </element>
- <element ref="t:ebar"/>
- </choice>
- </group>
-
- <element name="ebar" type="string">
- <annotation>
- <documentation>global element ebar documentation</documentation>
- </annotation>
- </element>
-
- <attributeGroup name="ag">
- <attribute name="afoo" type="string">
- <annotation>
- <documentation>group attribute afoo documentation</documentation>
- </annotation>
- </attribute>
- <attribute ref="t:abaz"/>
- </attributeGroup>
-
- <attribute name="abar" type="string">
- <annotation>
- <documentation>global attribute abar documentation</documentation>
- </annotation>
- </attribute>
-
- <attribute name="abaz" type="string">
- <annotation>
- <documentation>global attribute abaz documentation</documentation>
- </annotation>
- </attribute>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/anonymous/makefile b/libxsd-frontend/tests/schema/anonymous/makefile
deleted file mode 100644
index 5d2cfe2..0000000
--- a/libxsd-frontend/tests/schema/anonymous/makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# file : tests/schema/annotation/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) --anonymous $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/libxsd-frontend/tests/schema/anonymous/test-000.std b/libxsd-frontend/tests/schema/anonymous/test-000.std
deleted file mode 100644
index 1f33cb0..0000000
--- a/libxsd-frontend/tests/schema/anonymous/test-000.std
+++ /dev/null
@@ -1,30 +0,0 @@
-anonymous: test anon_item anon
-anonymous: test anon_nested_item anon_nested
-anonymous: test anon_nested_item_base anon_nested_item
-primary
-{
- namespace test
- {
- list named http://www.w3.org/2001/XMLSchema#string
- enumeration anon_item: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator male
- enumerator female
- }
- list anon test#anon_item1
- list anon_nested test#anon_nested_item
- enumeration anon_item1: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator male
- enumerator female
- }
- enumeration anon_nested_item: test#anon_nested_item_base
- {
- enumerator male
- enumerator female
- }
- complex anon_nested_item_base: http://www.w3.org/2001/XMLSchema#string
- {
- }
- }
-}
diff --git a/libxsd-frontend/tests/schema/anonymous/test-000.xsd b/libxsd-frontend/tests/schema/anonymous/test-000.xsd
deleted file mode 100644
index ece8f4a..0000000
--- a/libxsd-frontend/tests/schema/anonymous/test-000.xsd
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="named">
- <list itemType="string"/>
- </simpleType>
-
- <simpleType name="anon_item">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <simpleType name="anon">
- <list>
- <simpleType>
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
- </list>
- </simpleType>
-
- <simpleType name="anon_nested">
- <list>
- <simpleType>
- <restriction>
- <simpleType>
- <restriction base="string">
- <maxLength value="20"/>
- </restriction>
- </simpleType>
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
- </list>
- </simpleType>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/anonymous/test-001.std b/libxsd-frontend/tests/schema/anonymous/test-001.std
deleted file mode 100644
index cc3f2d1..0000000
--- a/libxsd-frontend/tests/schema/anonymous/test-001.std
+++ /dev/null
@@ -1,38 +0,0 @@
-anonymous: test anon_base anon
-anonymous: test anon_nested_base anon_nested
-anonymous: test anon_nested_base_base anon_nested_base
-primary
-{
- namespace test
- {
- enumeration named: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator male
- enumerator female
- }
- enumeration anon_base: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator male
- enumerator female
- }
- enumeration anon: test#anon_base1
- {
- enumerator male
- enumerator female
- }
- enumeration anon_nested: test#anon_nested_base
- {
- enumerator male
- enumerator female
- }
- complex anon_base1: http://www.w3.org/2001/XMLSchema#string
- {
- }
- complex anon_nested_base: test#anon_nested_base_base
- {
- }
- complex anon_nested_base_base: http://www.w3.org/2001/XMLSchema#string
- {
- }
- }
-}
diff --git a/libxsd-frontend/tests/schema/anonymous/test-001.xsd b/libxsd-frontend/tests/schema/anonymous/test-001.xsd
deleted file mode 100644
index 4a8414f..0000000
--- a/libxsd-frontend/tests/schema/anonymous/test-001.xsd
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="named">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <simpleType name="anon_base">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <simpleType name="anon">
- <restriction>
- <simpleType>
- <restriction base="string">
- <maxLength value="20"/>
- </restriction>
- </simpleType>
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <simpleType name="anon_nested">
- <restriction>
- <simpleType>
- <restriction>
- <simpleType>
- <restriction base="string">
- <maxLength value="40"/>
- </restriction>
- </simpleType>
- <maxLength value="20"/>
- </restriction>
- </simpleType>
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/attribute-group/makefile b/libxsd-frontend/tests/schema/attribute-group/makefile
deleted file mode 100644
index 00746a3..0000000
--- a/libxsd-frontend/tests/schema/attribute-group/makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# file : tests/schema/attribute-group/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/libxsd-frontend/tests/schema/attribute-group/test-000.std b/libxsd-frontend/tests/schema/attribute-group/test-000.std
deleted file mode 100644
index 61ad802..0000000
--- a/libxsd-frontend/tests/schema/attribute-group/test-000.std
+++ /dev/null
@@ -1,17 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- optional attribute foo2 http://www.w3.org/2001/XMLSchema#string
- required attribute bar2 http://www.w3.org/2001/XMLSchema#string
- optional attribute foo3 http://www.w3.org/2001/XMLSchema#string
- required attribute bar3 http://www.w3.org/2001/XMLSchema#string
- }
- attribute foo2 http://www.w3.org/2001/XMLSchema#string
- attribute bar2 http://www.w3.org/2001/XMLSchema#string
- attribute foo3 http://www.w3.org/2001/XMLSchema#string
- attribute bar3 http://www.w3.org/2001/XMLSchema#string
- }
-}
diff --git a/libxsd-frontend/tests/schema/attribute-group/test-000.xsd b/libxsd-frontend/tests/schema/attribute-group/test-000.xsd
deleted file mode 100644
index 9087a2b..0000000
--- a/libxsd-frontend/tests/schema/attribute-group/test-000.xsd
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Multiple levels of forward reference. -->
-
- <complexType name="type">
- <attributeGroup ref="t:g1"/>
- </complexType>
-
- <attributeGroup name="g1">
- <attributeGroup ref="t:g2"/>
- <attributeGroup ref="t:g3"/>
- </attributeGroup>
-
- <attributeGroup name="g2">
- <attribute ref="t:foo2"/>
- <attribute ref="t:bar2" use="required"/>
- </attributeGroup>
-
- <attributeGroup name="g3">
- <attribute ref="t:foo3"/>
- <attribute ref="t:bar3" use="required"/>
- </attributeGroup>
-
- <attribute name="foo2" type="string"/>
- <attribute name="bar2" type="string"/>
-
- <attribute name="foo3" type="string"/>
- <attribute name="bar3" type="string"/>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/attribute-group/test-001.std b/libxsd-frontend/tests/schema/attribute-group/test-001.std
deleted file mode 100644
index 54a1e96..0000000
--- a/libxsd-frontend/tests/schema/attribute-group/test-001.std
+++ /dev/null
@@ -1,12 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- any-attribute 'any-attribute #1'
- optional attribute foo http://www.w3.org/2001/XMLSchema#string
- any-attribute 'any-attribute #0'
- }
- }
-}
diff --git a/libxsd-frontend/tests/schema/attribute-group/test-001.xsd b/libxsd-frontend/tests/schema/attribute-group/test-001.xsd
deleted file mode 100644
index dc44a70..0000000
--- a/libxsd-frontend/tests/schema/attribute-group/test-001.xsd
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- AnyAttribute in attribute groups. -->
-
- <complexType name="type">
- <attributeGroup ref="t:g1"/>
- <attributeGroup ref="t:g2"/>
- </complexType>
-
- <attributeGroup name="g1">
- <anyAttribute namespace="http://www.foo.com"/>
- </attributeGroup>
-
- <attributeGroup name="g2">
- <attribute name="foo" type="string"/>
- <anyAttribute namespace="http://www.bar.com"/>
- </attributeGroup>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/default/makefile b/libxsd-frontend/tests/schema/default/makefile
deleted file mode 100644
index d2ab540..0000000
--- a/libxsd-frontend/tests/schema/default/makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# file : tests/schema/default/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) --anonymous $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/libxsd-frontend/tests/schema/default/test-000.std b/libxsd-frontend/tests/schema/default/test-000.std
deleted file mode 100644
index efa1140..0000000
--- a/libxsd-frontend/tests/schema/default/test-000.std
+++ /dev/null
@@ -1,28 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- element e1=123
- element e2==456
- element e3=unqual
- element e4==test#t:foo
- element e5=foo#x:bar
- optional attribute a1=123 http://www.w3.org/2001/XMLSchema#int
- optional attribute a2==456 http://www.w3.org/2001/XMLSchema#int
- optional attribute a3=foo#x:bar test#qname
- [1, 1] sequence
- {
- [1, 1] element e1=123 http://www.w3.org/2001/XMLSchema#int
- [1, 1] element e2==456 http://www.w3.org/2001/XMLSchema#int
- [1, 1] element e3=unqual http://www.w3.org/2001/XMLSchema#QName
- [1, 1] element e4==test#t:foo http://www.w3.org/2001/XMLSchema#QName
- [1, 1] element e5=foo#x:bar http://www.w3.org/2001/XMLSchema#QName
- }
- }
- complex qname: http://www.w3.org/2001/XMLSchema#QName
- {
- }
- }
-}
diff --git a/libxsd-frontend/tests/schema/default/test-000.xsd b/libxsd-frontend/tests/schema/default/test-000.xsd
deleted file mode 100644
index bfaedc5..0000000
--- a/libxsd-frontend/tests/schema/default/test-000.xsd
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:t="test" xmlns:x="foo" targetNamespace="test">
-
- <xs:complexType name="type">
- <xs:sequence>
- <xs:element name="e1" type="xs:int" default="123"/>
- <xs:element name="e2" type="xs:int" fixed="456"/>
-
- <xs:element name="e3" type="xs:QName" default="unqual"/>
- <xs:element name="e4" type="xs:QName" fixed="t:foo"/>
- <xs:element name="e5" type="xs:QName" default="x:bar"/>
- </xs:sequence>
- <xs:attribute name="a1" type="xs:int" default="123"/>
- <xs:attribute name="a2" type="xs:int" fixed="456"/>
-
- <xs:attribute name="a3" type="t:qname" default="x:bar"/>
- </xs:complexType>
-
- <xs:simpleType name="qname">
- <xs:restriction base="xs:QName"/>
- </xs:simpleType>
-
-</xs:schema>
diff --git a/libxsd-frontend/tests/schema/default/test-001.std b/libxsd-frontend/tests/schema/default/test-001.std
deleted file mode 100644
index 1b84a07..0000000
--- a/libxsd-frontend/tests/schema/default/test-001.std
+++ /dev/null
@@ -1,15 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- element e=foo#unqual
- optional attribute a=foo#unqual http://www.w3.org/2001/XMLSchema#QName
- [1, 1] sequence
- {
- [1, 1] element e=foo#unqual http://www.w3.org/2001/XMLSchema#QName
- }
- }
- }
-}
diff --git a/libxsd-frontend/tests/schema/default/test-001.xsd b/libxsd-frontend/tests/schema/default/test-001.xsd
deleted file mode 100644
index 5ee0507..0000000
--- a/libxsd-frontend/tests/schema/default/test-001.xsd
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:t="test" xmlns="foo" targetNamespace="test">
-
- <xs:complexType name="type">
- <xs:sequence>
- <xs:element name="e" type="xs:QName" default="unqual"/>
- </xs:sequence>
- <xs:attribute name="a" type="xs:QName" default="unqual"/>
- </xs:complexType>
-
-</xs:schema>
diff --git a/libxsd-frontend/tests/schema/element-group/makefile b/libxsd-frontend/tests/schema/element-group/makefile
deleted file mode 100644
index 3271b94..0000000
--- a/libxsd-frontend/tests/schema/element-group/makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# file : tests/schema/element-group/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001 002
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/libxsd-frontend/tests/schema/element-group/test-000.std b/libxsd-frontend/tests/schema/element-group/test-000.std
deleted file mode 100644
index 1652b68..0000000
--- a/libxsd-frontend/tests/schema/element-group/test-000.std
+++ /dev/null
@@ -1,33 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- element foo2
- element bar2
- element foo3
- element bar3
- [1, 1] sequence
- {
- [0, unbounded] choice
- {
- [0, 1] choice
- {
- [1, 1] element foo2 http://www.w3.org/2001/XMLSchema#string
- [0, 1] element bar2 http://www.w3.org/2001/XMLSchema#string
- }
- [1, unbounded] choice
- {
- [1, unbounded] element foo3 http://www.w3.org/2001/XMLSchema#string
- [0, unbounded] element bar3 http://www.w3.org/2001/XMLSchema#string
- }
- }
- }
- }
- element foo2 http://www.w3.org/2001/XMLSchema#string
- element bar2 http://www.w3.org/2001/XMLSchema#string
- element foo3 http://www.w3.org/2001/XMLSchema#string
- element bar3 http://www.w3.org/2001/XMLSchema#string
- }
-}
diff --git a/libxsd-frontend/tests/schema/element-group/test-000.xsd b/libxsd-frontend/tests/schema/element-group/test-000.xsd
deleted file mode 100644
index 1864b28..0000000
--- a/libxsd-frontend/tests/schema/element-group/test-000.xsd
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Multiple levels of forward reference. -->
-
- <complexType name="type">
- <sequence>
- <group ref="t:g1" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <group name="g1">
- <choice>
- <group ref="t:g2" minOccurs="0"/>
- <group ref="t:g3" maxOccurs="unbounded"/>
- </choice>
- </group>
-
- <group name="g2">
- <choice>
- <element ref="t:foo2"/>
- <element ref="t:bar2" minOccurs="0"/>
- </choice>
- </group>
-
- <group name="g3">
- <choice>
- <element ref="t:foo3" maxOccurs="unbounded"/>
- <element ref="t:bar3" minOccurs="0" maxOccurs="unbounded"/>
- </choice>
- </group>
-
- <element name="foo2" type="string"/>
- <element name="bar2" type="string"/>
-
- <element name="foo3" type="string"/>
- <element name="bar3" type="string"/>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/element-group/test-001.std b/libxsd-frontend/tests/schema/element-group/test-001.std
deleted file mode 100644
index ae8c1fc..0000000
--- a/libxsd-frontend/tests/schema/element-group/test-001.std
+++ /dev/null
@@ -1,137 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <recursive-anonymous>
- }
- [1, 1] element bar
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <recursive-anonymous>
- }
- [1, 1] element bar
- {
- complex <recursive-anonymous>
- }
- }
- }
- }
- }
- }
- }
- }
- }
- [1, 1] element bar
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <recursive-anonymous>
- }
- [1, 1] element bar
- {
- complex <recursive-anonymous>
- }
- }
- }
- }
- }
- [1, 1] element bar
- {
- complex <recursive-anonymous>
- }
- }
- }
- }
- }
- }
- }
- }
- element bar
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <recursive-anonymous>
- }
- [1, 1] element bar
- {
- complex <recursive-anonymous>
- }
- }
- }
- }
- }
- [1, 1] element bar
- {
- complex <recursive-anonymous>
- }
- }
- }
- }
- }
- }
-}
diff --git a/libxsd-frontend/tests/schema/element-group/test-001.xsd b/libxsd-frontend/tests/schema/element-group/test-001.xsd
deleted file mode 100644
index c6059af..0000000
--- a/libxsd-frontend/tests/schema/element-group/test-001.xsd
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Recursive reference: g1->element->type->g1 -->
-
- <complexType name="type">
- <sequence>
- <group ref="t:g1"/>
- </sequence>
- </complexType>
-
- <group name="g1">
- <choice>
- <element name="foo">
- <complexType>
- <sequence>
- <group ref="t:g1"/>
- </sequence>
- </complexType>
- </element>
- <element ref="t:bar"/>
- </choice>
- </group>
-
- <element name="bar">
- <complexType>
- <sequence>
- <group ref="t:g1"/>
- </sequence>
- </complexType>
- </element>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/element-group/test-002.std b/libxsd-frontend/tests/schema/element-group/test-002.std
deleted file mode 100644
index d2c60fe..0000000
--- a/libxsd-frontend/tests/schema/element-group/test-002.std
+++ /dev/null
@@ -1,24 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- any 'any #1'
- element foo
- any 'any #0'
- [1, 1] sequence
- {
- [0, unbounded] sequence
- {
- [1, 1] any 'any #1'
- }
- [0, unbounded] sequence
- {
- [1, 1] element foo http://www.w3.org/2001/XMLSchema#int
- [1, 1] any 'any #0'
- }
- }
- }
- }
-}
diff --git a/libxsd-frontend/tests/schema/element-group/test-002.xsd b/libxsd-frontend/tests/schema/element-group/test-002.xsd
deleted file mode 100644
index bc1bd70..0000000
--- a/libxsd-frontend/tests/schema/element-group/test-002.xsd
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Any in groups. -->
-
- <complexType name="type">
- <sequence>
- <group ref="t:g1" minOccurs="0" maxOccurs="unbounded"/>
- <group ref="t:g2" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <group name="g1">
- <sequence>
- <any namespace="http://www.foo.com"/>
- </sequence>
- </group>
-
- <group name="g2">
- <sequence>
- <element name="foo" type="int"/>
- <any namespace="http://www.bar.com"/>
- </sequence>
- </group>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/enumeration/makefile b/libxsd-frontend/tests/schema/enumeration/makefile
deleted file mode 100644
index bd55e0f..0000000
--- a/libxsd-frontend/tests/schema/enumeration/makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# file : tests/schema/enumeration/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) --enum-synthesis $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/libxsd-frontend/tests/schema/enumeration/test-000.std b/libxsd-frontend/tests/schema/enumeration/test-000.std
deleted file mode 100644
index 64e3065..0000000
--- a/libxsd-frontend/tests/schema/enumeration/test-000.std
+++ /dev/null
@@ -1,62 +0,0 @@
-primary
-{
- namespace test
- {
- complex common-base: http://www.w3.org/2001/XMLSchema#string
- {
- }
- complex base: test#common-base
- {
- }
- enumeration one: test#base
- {
- <romance documentation>
- enumerator romance
- enumerator fiction
- enumerator horror
- }
- enumeration two: test#common-base
- {
- enumerator horror
- enumerator history
- enumerator philosophy
- }
- enumeration three: http://www.w3.org/2001/XMLSchema#anyURI
- {
- enumerator foo
- enumerator bar
- }
- enumeration union0: test#common-base
- {
- <romance documentation>
- enumerator romance
- enumerator fiction
- enumerator horror
- enumerator history
- enumerator philosophy
- }
- <union1 documentation>
- enumeration union1: test#common-base
- {
- <romance documentation>
- enumerator romance
- enumerator fiction
- enumerator horror
- enumerator history
- enumerator philosophy
- }
- union union2 test#one test#union1 test#common-base
- union union3 test#one test#three
- complex complex1
- {
- element a
- [1, 1] sequence
- {
- [1, 1] element a test#union1
- }
- }
- complex complex2: test#union1
- {
- }
- }
-}
diff --git a/libxsd-frontend/tests/schema/enumeration/test-000.xsd b/libxsd-frontend/tests/schema/enumeration/test-000.xsd
deleted file mode 100644
index 08539bf..0000000
--- a/libxsd-frontend/tests/schema/enumeration/test-000.xsd
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Enumeration synthesis -->
-
- <simpleType name="common-base">
- <restriction base="string"/>
- </simpleType>
-
- <simpleType name="base">
- <restriction base="t:common-base"/>
- </simpleType>
-
- <simpleType name="one">
- <restriction base="t:base">
- <enumeration value="romance">
- <annotation>
- <documentation>romance documentation</documentation>
- </annotation>
- </enumeration>
- <enumeration value="fiction"/>
- <enumeration value="horror"/>
- </restriction>
- </simpleType>
-
- <simpleType name="two">
- <restriction base="t:common-base">
- <enumeration value="horror"/>
- <enumeration value="history"/>
- <enumeration value="philosophy"/>
- </restriction>
- </simpleType>
-
- <simpleType name="three">
- <restriction base="anyURI">
- <enumeration value="foo"/>
- <enumeration value="bar"/>
- </restriction>
- </simpleType>
-
- <simpleType name="union0">
- <union memberTypes="t:one t:two t:union1"/>
- </simpleType>
-
- <simpleType name="union1">
- <annotation>
- <documentation>union1 documentation</documentation>
- </annotation>
- <union memberTypes="t:one t:two"/>
- </simpleType>
-
- <simpleType name="union2">
- <union memberTypes="t:one t:union1 t:common-base"/>
- </simpleType>
-
- <simpleType name="union3">
- <union memberTypes="t:one t:three"/>
- </simpleType>
-
- <complexType name="complex1">
- <sequence>
- <element name="a" type="t:union1"/>
- </sequence>
- </complexType>
-
- <complexType name="complex2">
- <simpleContent>
- <extension base="t:union1"/>
- </simpleContent>
- </complexType>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/makefile b/libxsd-frontend/tests/schema/makefile
deleted file mode 100644
index 3a6d048..0000000
--- a/libxsd-frontend/tests/schema/makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-# file : tests/schema
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-tests := \
-annotation \
-anonymous \
-attribute-group \
-default \
-element-group \
-enumeration \
-union
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/libxsd-frontend/tests/schema/union/makefile b/libxsd-frontend/tests/schema/union/makefile
deleted file mode 100644
index b0a83e3..0000000
--- a/libxsd-frontend/tests/schema/union/makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# file : tests/schema/union/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/libxsd-frontend/tests/schema/union/test-000.std b/libxsd-frontend/tests/schema/union/test-000.std
deleted file mode 100644
index 6f95b0c..0000000
--- a/libxsd-frontend/tests/schema/union/test-000.std
+++ /dev/null
@@ -1,37 +0,0 @@
-primary
-{
- namespace test
- {
- union u1 http://www.w3.org/2001/XMLSchema#int http://www.w3.org/2001/XMLSchema#string
- union u2
- {
- enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#token
- {
- enumerator one
- }
- }
-
- {
- enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator two
- }
- }
-
- union u3 http://www.w3.org/2001/XMLSchema#int test#u1
- {
- enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#token
- {
- enumerator one
- }
- }
-
- {
- enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator two
- }
- }
-
- }
-}
diff --git a/libxsd-frontend/tests/schema/union/test-000.xsd b/libxsd-frontend/tests/schema/union/test-000.xsd
deleted file mode 100644
index 99535de..0000000
--- a/libxsd-frontend/tests/schema/union/test-000.xsd
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="u1">
- <union memberTypes="int string"/>
- </simpleType>
-
- <simpleType name="u2">
- <union>
- <simpleType>
- <restriction base="token">
- <enumeration value="one"/>
- </restriction>
- </simpleType>
- <simpleType>
- <restriction base="string">
- <enumeration value="two"/>
- </restriction>
- </simpleType>
- </union>
- </simpleType>
-
- <simpleType name="u3">
- <union memberTypes=" int
-
-t:u1 ">
- <simpleType>
- <restriction base="token">
- <enumeration value="one"/>
- </restriction>
- </simpleType>
- <simpleType>
- <restriction base="string">
- <enumeration value="two"/>
- </restriction>
- </simpleType>
- </union>
- </simpleType>
-
-</schema>
diff --git a/libxsd-frontend/tests/schema/union/test-001.std b/libxsd-frontend/tests/schema/union/test-001.std
deleted file mode 100644
index f407b30..0000000
--- a/libxsd-frontend/tests/schema/union/test-001.std
+++ /dev/null
@@ -1,15 +0,0 @@
-primary
-{
- namespace test
- {
- list list
- {
- union <anonymous> http://www.w3.org/2001/XMLSchema#int test#enum
- }
- enumeration enum: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator male
- enumerator female
- }
- }
-}
diff --git a/libxsd-frontend/tests/schema/union/test-001.xsd b/libxsd-frontend/tests/schema/union/test-001.xsd
deleted file mode 100644
index 00fd8ce..0000000
--- a/libxsd-frontend/tests/schema/union/test-001.xsd
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Test resolution of anonymous argument types. -->
-
- <simpleType name="list">
- <list>
- <simpleType>
- <union memberTypes="int t:enum"/>
- </simpleType>
- </list>
- </simpleType>
-
- <simpleType name="enum">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
-</schema>
diff --git a/libxsd-frontend/version b/libxsd-frontend/version
deleted file mode 100644
index 227cea2..0000000
--- a/libxsd-frontend/version
+++ /dev/null
@@ -1 +0,0 @@
-2.0.0
diff --git a/libxsd-frontend/xsd-frontend/generators/dependencies.cxx b/libxsd-frontend/xsd-frontend/generators/dependencies.cxx
deleted file mode 100644
index 55e7ae8..0000000
--- a/libxsd-frontend/xsd-frontend/generators/dependencies.cxx
+++ /dev/null
@@ -1,70 +0,0 @@
-// file : xsd-frontend/generators/dependencies.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <xsd-frontend/generators/dependencies.hxx>
-
-namespace XSDFrontend
-{
- typedef std::vector<SemanticGraph::Path> Paths;
-
- namespace
- {
- // Go into included/imported (but not implied) schemas while making
- // sure we don't process the same stuff more than once.
- //
- struct Uses: Traversal::Uses
- {
- Uses (Paths& p): paths_ (p) {}
-
- virtual void
- traverse (Type& u)
- {
- if (u.is_a<SemanticGraph::Implies> ())
- return;
-
- SemanticGraph::Schema& s (u.schema ());
-
- if (!s.context ().count ("xsd-frontend-dependencies-seen"))
- {
- s.context ().set ("xsd-frontend-dependencies-seen", true);
-
- // While the edge contains the exact path that was found in the
- // schema, the schema node itself has the reative to the including
- // or importing schema path, which is what we want.
- //
- paths_.push_back (s.file ());
- Traversal::Uses::traverse (u);
- }
- }
-
- private:
- Paths& paths_;
- };
- }
-
- namespace Generators
- {
- Paths Dependencies::
- generate (SemanticGraph::Schema& s, SemanticGraph::Path const& p)
- {
- Paths r;
- r.push_back (p);
-
- Traversal::Schema schema;
- Uses uses (r);
-
- schema >> uses >> schema;
-
- // Some twisted schemas do recusive inclusions.
- //
- s.context ().set ("xsd-frontend-dependencies-seen", true);
-
- schema.dispatch (s);
- return r;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/generators/dependencies.hxx b/libxsd-frontend/xsd-frontend/generators/dependencies.hxx
deleted file mode 100644
index 5a7624f..0000000
--- a/libxsd-frontend/xsd-frontend/generators/dependencies.hxx
+++ /dev/null
@@ -1,32 +0,0 @@
-// file : xsd-frontend/generators/dependencies.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_GENERATORS_DEPENDENCIES_HXX
-#define XSD_FRONTEND_GENERATORS_DEPENDENCIES_HXX
-
-#include <vector>
-
-#include <xsd-frontend/types.hxx>
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-namespace XSDFrontend
-{
- namespace Generators
- {
- // Return the list of included/imported schema paths (transitively and
- // including the main schema file) which can then be used to produce
- // make dependencies, etc.
- //
- class Dependencies
- {
- public:
- std::vector<SemanticGraph::Path>
- generate (SemanticGraph::Schema&, SemanticGraph::Path const&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_GENERATORS_DEPENDENCIES_HXX
diff --git a/libxsd-frontend/xsd-frontend/makefile b/libxsd-frontend/xsd-frontend/makefile
deleted file mode 100644
index 4dbffcd..0000000
--- a/libxsd-frontend/xsd-frontend/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : xsd-frontend/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-cxx_tun := semantic-graph/annotation.cxx \
- semantic-graph/any.cxx \
- semantic-graph/any-attribute.cxx \
- semantic-graph/attribute.cxx \
- semantic-graph/attribute-group.cxx \
- semantic-graph/complex.cxx \
- semantic-graph/compositors.cxx \
- semantic-graph/element.cxx \
- semantic-graph/element-group.cxx \
- semantic-graph/elements.cxx \
- semantic-graph/enumeration.cxx \
- semantic-graph/fundamental.cxx \
- semantic-graph/list.cxx \
- semantic-graph/namespace.cxx \
- semantic-graph/particle.cxx \
- semantic-graph/schema.cxx \
- semantic-graph/union.cxx
-
-cxx_tun += traversal/attribute.cxx \
- traversal/attribute-group.cxx \
- traversal/complex.cxx \
- traversal/compositors.cxx \
- traversal/element.cxx \
- traversal/element-group.cxx \
- traversal/elements.cxx \
- traversal/enumeration.cxx \
- traversal/fundamental.cxx \
- traversal/list.cxx \
- traversal/namespace.cxx \
- traversal/particle.cxx \
- traversal/schema.cxx \
- traversal/union.cxx
-
-cxx_tun += transformations/anonymous.cxx \
- transformations/enum-synthesis.cxx \
- transformations/restriction.cxx \
- transformations/schema-per-type.cxx \
- transformations/simplifier.cxx
-
-cxx_tun += generators/dependencies.cxx
-
-cxx_tun += types.cxx parser.cxx schema-dom-parser.cxx
-
-
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-m4_cxx := $(out_base)/semantic-graph/fundamental.hxx \
- $(out_base)/semantic-graph/fundamental.cxx
-
-xsd_frontend.l := $(out_base)/xsd-frontend.l
-xsd_frontend.l.cpp-options := $(out_base)/xsd-frontend.l.cpp-options
-
-clean := $(out_base)/.clean
-
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-$(call import,\
- $(scf_root)/import/libcutl/stub.make,\
- l: cutl.l,cpp-options: cutl.l.cpp-options)
-
-# What to build.
-#
-$(xsd_frontend.l): $(cxx_obj) $(cutl.l) $(xerces_c.l)
-
-$(xsd_frontend.l.cpp-options): prefix := xsd-frontend/ $(out_root)/
-$(xsd_frontend.l.cpp-options): value := -I$(src_root) -I$(out_root)
-$(xsd_frontend.l.cpp-options): $(cutl.l.cpp-options)
-
-#@@ This can be further optimized since only parser depends on xerces.
-#
-$(cxx_obj) $(cxx_od): $(xsd_frontend.l.cpp-options) $(xerces_c.l.cpp-options)
-
-$(m4_cxx): $(src_base)/semantic-graph/fundamental.m4
-$(m4_cxx): m4_options := -I $(src_base)/semantic-graph
-
-$(call include-dep,$(cxx_od))
-
-# Alias for default target.
-#
-$(out_base)/: $(xsd_frontend.l)
-
-# Clean
-#
-$(clean): $(xsd_frontend.l).o.clean \
- $(xsd_frontend.l.cpp-options).clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-ifneq ($(libxsd_frontend_clean_gen),n)
-$(clean): $(addsuffix .m4.clean,$(m4_cxx))
-endif
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(xsd_frontend.l): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := semantic-graph/fundamental.hxx semantic-graph/fundamental.cxx
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-l.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/m4/m4.make)
diff --git a/libxsd-frontend/xsd-frontend/parser.cxx b/libxsd-frontend/xsd-frontend/parser.cxx
deleted file mode 100644
index 6b582ab..0000000
--- a/libxsd-frontend/xsd-frontend/parser.cxx
+++ /dev/null
@@ -1,5164 +0,0 @@
-// file : xsd-frontend/parser.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <map>
-#include <stack>
-#include <vector>
-#include <iostream>
-#include <sstream>
-
-#include <cutl/compiler/type-id.hxx>
-
-#include <xsd-frontend/version.hxx> // Check Xerces-C++ version.
-#include <xsd-frontend/xml.hxx>
-#include <xsd-frontend/parser.hxx>
-#include <xsd-frontend/schema-dom-parser.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-//@@ Do i need this?
-//
-#include <xercesc/dom/DOM.hpp>
-
-#include <xercesc/sax/ErrorHandler.hpp>
-#include <xercesc/sax/SAXParseException.hpp>
-
-#include <xercesc/sax2/SAX2XMLReader.hpp>
-#include <xercesc/sax2/XMLReaderFactory.hpp>
-
-#include <xercesc/util/XMLUniDefs.hpp>
-#include <xercesc/util/XMLString.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-#include <xercesc/util/BinInputStream.hpp>
-#include <xercesc/util/BinFileInputStream.hpp>
-
-#include <xercesc/validators/common/Grammar.hpp>
-
-#include <xercesc/sax/InputSource.hpp>
-#include <xercesc/framework/LocalFileInputSource.hpp>
-#include <xercesc/framework/Wrapper4InputSource.hpp>
-
-using namespace std;
-
-using cutl::compiler::type_id;
-
-namespace XSDFrontend
-{
- namespace Xerces = XML::Xerces;
- using namespace SemanticGraph;
-
- //@@ Port to tracing facility.
- //
- bool trace_ = false;
-
- String const xsd = L"http://www.w3.org/2001/XMLSchema";
- String const xse = L"http://www.codesynthesis.com/xmlns/xml-schema-extension";
-
- namespace
- {
- //
- // Exceptions.
- //
-
- struct NotNamespace
- {
- NotNamespace (String const& ns)
- : ns_ (ns)
- {
- }
-
- String const&
- ns () const
- {
- return ns_;
- }
-
- private:
- String ns_;
- };
-
- struct NotName
- {
- NotName (String const& ns, String const& name)
- : ns_ (ns), name_ (name)
- {
- }
-
- String const&
- ns () const
- {
- return ns_;
- }
-
- String const&
- name () const
- {
- return name_;
- }
-
- private:
- String ns_;
- String name_;
- };
-
- // Trim leading and trailing whitespaces.
- //
- template <typename C>
- StringTemplate<C>
- trim (StringTemplate<C> const& s)
- {
- typedef StringTemplate<C> String;
-
- size_t size (s.size ());
-
- if (size == 0)
- return s;
-
- C const* f (s.c_str ());
- C const* l (f + size);
-
- C const* of (f);
-
- while (f < l &&
- (*f == C (0x20) || *f == C (0x0A) ||
- *f == C (0x0D) || *f == C (0x09)))
- ++f;
-
- --l;
-
- C const* ol (l);
-
- while (l > f &&
- (*l == C (0x20) || *l == C (0x0A) ||
- *l == C (0x0D) || *l == C (0x09)))
- --l;
-
- if (f != of || l != ol)
- return f <= l ? String (f, l - f + 1) : String ();
- else
- return s;
- }
-
- // Name cache. We only support maximum two nodes with the same
- // name in the cache (e.g., element and type). For (rare) cases
- // where there is three or more names, there will be a cache miss.
- //
- struct CacheNodes
- {
- CacheNodes () : first (0), second (0) {}
-
- Nameable* first;
- Nameable* second;
- };
-
- typedef std::map<String, CacheNodes> NodeMap;
- typedef std::map<String, NodeMap> NamespaceMap;
- typedef std::vector<SemanticGraph::Member*> DefaultValues;
-
- template <typename X>
- X&
- resolve (String const& ns_name,
- String const& uq_name,
- Schema& s_,
- NamespaceMap& cache)
- {
- // First check the cache.
- //
- NamespaceMap::iterator i (cache.find (ns_name));
-
- if (i != cache.end ())
- {
- NodeMap::iterator j (i->second.find (uq_name));
-
- if (j != i->second.end ())
- {
- X* x;
-
- if ((x = dynamic_cast<X*> (j->second.first)) ||
- (x = dynamic_cast<X*> (j->second.second)))
- return *x;
- }
- }
-
- Scope::NamesIteratorPair nss (s_.find (ns_name));
-
- if (nss.first == nss.second)
- throw NotNamespace (ns_name);
-
- for (; nss.first != nss.second; ++nss.first)
- {
- Namespace& ns (dynamic_cast<Namespace&> (nss.first->named ()));
-
- Scope::NamesIteratorPair types (ns.find (uq_name));
-
- for (; types.first != types.second; ++types.first)
- {
- if (X* x = dynamic_cast<X*> (&types.first->named ()))
- {
- if (trace_)
- wcout << "successfully resolved '" << ns_name << '#' << uq_name
- << "'" << endl;
-
- // Add to the cache if there are free slots.
- //
- NodeMap& m (i != cache.end () ? i->second : cache[ns_name]);
- CacheNodes& n (m[uq_name]);
-
- if (n.first == 0)
- n.first = x;
- else if (n.second == 0)
- n.second = x;
-
- return *x;
- }
- }
- }
-
- throw NotName (ns_name, uq_name);
- }
-
- //
- //
- typedef std::map<String, String> Facets;
-
- void
- copy_facets (Restricts& r, Facets const& f)
- {
- for (Facets::const_iterator i (f.begin ()), e (f.end ()); i != e; ++i)
- r.facet_insert (i->first, i->second);
- }
-
- //
- //
- struct UnionMemberType
- {
- UnionMemberType (String const& ns, String const& uq)
- : ns_name (ns), uq_name (uq)
- {
- }
-
- String ns_name;
- String uq_name;
- };
-
- typedef std::vector<UnionMemberType> UnionMemberTypes;
-
- //
- //
- struct ElementGroupRef
- {
- ElementGroupRef (String const& uq_name_, String const& ns_name_,
- unsigned long min_, unsigned long max_,
- Compositor& compositor, Scope& scope)
- : uq_name (uq_name_), ns_name (ns_name_),
- min (min_), max (max_)
- {
- contains_pos = compositor.contains_end ();
- if (compositor.contains_begin () != contains_pos)
- --contains_pos;
-
- names_pos = scope.names_end ();
- if (scope.names_begin () != names_pos)
- --names_pos;
- }
-
- ElementGroupRef (String const& uq_name_, String const& ns_name_,
- unsigned long min_, unsigned long max_,
- Scope& scope)
- : uq_name (uq_name_), ns_name (ns_name_),
- min (min_), max (max_)
- {
- names_pos = scope.names_end ();
- if (scope.names_begin () != names_pos)
- --names_pos;
- }
-
- String uq_name;
- String ns_name;
- unsigned long min, max;
- Compositor::ContainsIterator contains_pos;
- Scope::NamesIterator names_pos;
- };
-
- typedef std::vector<ElementGroupRef> ElementGroupRefs;
-
- //
- //
- struct AttributeGroupRef
- {
- AttributeGroupRef (String const& uq_name_,
- String const& ns_name_,
- Scope& scope)
- : uq_name (uq_name_), ns_name (ns_name_)
- {
- names_pos = scope.names_end ();
- if (scope.names_begin () != names_pos)
- --names_pos;
- }
-
- String uq_name;
- String ns_name;
- Scope::NamesIterator names_pos;
- };
-
- typedef std::vector<AttributeGroupRef> AttributeGroupRefs;
-
-
- //
- //
- template <typename N, typename A>
- struct NodeArgs
- {
- NodeArgs (N& node, A arg)
- : node_ (node), arg_ (arg)
- {
- }
-
- operator N& () const
- {
- return node_;
- }
-
- template <typename E>
- void
- add_edge_left (E& e)
- {
- node_.add_edge_left (e, arg_);
- }
-
- template <typename E>
- void
- add_edge_right (E& e)
- {
- node_.add_edge_right (e, arg_);
- }
-
- private:
- N& node_;
- A arg_;
- };
-
-
- //
- //
- struct Resolver : Traversal::Element,
- Traversal::Attribute,
- Traversal::Fundamental::IdRef,
- Traversal::Fundamental::IdRefs,
- Traversal::List,
- Traversal::Union,
- Traversal::Complex,
- Traversal::Enumeration,
- Traversal::ElementGroup,
- Traversal::AttributeGroup,
- Traversal::Compositor
- {
- Resolver (Schema& s,
- bool& valid,
- NamespaceMap& cache,
- DefaultValues& default_values)
- : s_ (s),
- valid_ (valid),
- cache_ (cache),
- default_values_ (default_values)
- {
- *this >> contains_compositor >> *this;
- }
-
- void
- traverse (SemanticGraph::Attribute& a)
- {
- // Avoid traversing attribute more than once.
- //
- if (!a.context ().count ("attribute-traversed"))
- {
- a.context ().set ("attribute-traversed", true);
- SemanticGraph::Member& m (a);
- resolve_member (m);
- }
- }
-
- void
- traverse (SemanticGraph::Element& e)
- {
- resolve_element (e);
- }
-
- void
- resolve_element (SemanticGraph::Element& e)
- {
- // Avoid resolving element more than once.
- //
- if (e.context ().count ("element-resolved"))
- return;
-
- e.context ().set ("element-resolved", true);
-
- {
- SemanticGraph::Member& m (e);
- resolve_member (m);
- }
-
- if (e.context ().count ("substitution-ns-name"))
- {
- String ns_name (e.context ().get<String> ("substitution-ns-name"));
- String uq_name (e.context ().get<String> ("substitution-uq-name"));
-
- e.context ().remove ("substitution-ns-name");
- e.context ().remove ("substitution-uq-name");
-
- try
- {
- SemanticGraph::Element& root (
- resolve<SemanticGraph::Element> (ns_name, uq_name, s_, cache_));
-
- s_.new_edge<Substitutes> (e, root);
-
- // See if we need to derive the type of this element from the
- // one it substitutes.
- //
- if (!e.typed_p ())
- {
- resolve_member (root); // Make sure the type is resolved.
- s_.new_edge<Belongs> (e, root.type ());
- }
- }
- catch (NotNamespace const& ex)
- {
- if (valid_)
- {
- wcerr << "ice: unable to resolve namespace '" << ex.ns () << "'"
- << endl;
- abort ();
- }
- }
- catch (NotName const& ex)
- {
- if (valid_)
- {
- wcerr << "ice: unable to resolve name '" << ex.name ()
- << "' inside namespace '" << ex.ns () << "'" <<endl;
- abort ();
- }
- }
- }
- }
-
- void
- resolve_member (SemanticGraph::Member& m)
- {
- using SemanticGraph::Member;
- using SemanticGraph::Element;
- using SemanticGraph::Attribute;
-
- try
- {
- String ns_name;
- String uq_name;
-
- if (m.context ().count ("type-ns-name"))
- {
- ns_name = m.context ().get<String> ("type-ns-name");
- uq_name = m.context ().get<String> ("type-uq-name");
-
- m.context ().remove ("type-ns-name");
- m.context ().remove ("type-uq-name");
- m.context ().remove ("edge-type-id");
-
- s_.new_edge<Belongs> (
- m, resolve<SemanticGraph::Type> (ns_name, uq_name, s_, cache_));
- }
- else if (m.context ().count ("instance-ns-name"))
- {
- ns_name = m.context ().get<String> ("instance-ns-name");
- uq_name = m.context ().get<String> ("instance-uq-name");
-
- m.context ().remove ("instance-ns-name");
- m.context ().remove ("instance-uq-name");
-
- // Resolve the name to the same type. It is legal to have
- // an element and an attribute with the same name.
- //
- Member& ref (
- m.is_a<Element> ()
- ? static_cast<Member&> (
- resolve<Element> (ns_name, uq_name, s_, cache_))
- : static_cast<Member&> (
- resolve<Attribute> (ns_name, uq_name, s_, cache_)));
-
- // Make sure the referenced member is fully resolved.
- // @@ Substitutes edge won't be resolved.
- //
- resolve_member (ref);
-
-
- // Substitution group info. We have to test for both resolved
- // and unresolved cases since we don't know whether it was
- // resolved or not.
- //
- if (ref.is_a<Element> ())
- {
- Element& m_e (dynamic_cast<Element&> (m));
- Element& ref_e (dynamic_cast<Element&> (ref));
-
- if (ref_e.substitutes_p ())
- {
- s_.new_edge<Substitutes> (m_e, ref_e.substitutes ().root ());
- }
- else if (ref_e.context ().count ("substitution-ns-name"))
- {
- m_e.context ().set (
- "substitution-ns-name",
- ref_e.context ().get<String> ("substitution-ns-name"));
-
- m_e.context ().set (
- "substitution-uq-name",
- ref_e.context ().get<String> ("substitution-uq-name"));
- }
- }
-
- //
- //
- s_.new_edge<BelongsToNamespace> (m, ref.namespace_ ());
-
- // Transfer default and fixed values if we haven't already
- // gotten them.
- //
- if (!m.default_p ())
- {
- if (ref.fixed_p ())
- m.fixed (ref.value ());
- else if (ref.default_p ())
- {
- // Default value applies only if the attribute is optional.
- //
- if (Attribute* a = dynamic_cast<Attribute*> (&m))
- {
- if (a->optional_p ())
- m.default_ (ref.value ());
- }
- else
- m.default_ (ref.value ());
- }
-
- if (m.default_p ())
- {
- m.context ().set (
- "dom-node",
- ref.context ().get<Xerces::DOMElement*> ("dom-node"));
- default_values_.push_back (&m);
- }
- }
-
- // Transfer annotation if we haven't already gotten it.
- //
- if (!m.annotated_p () && ref.annotated_p ())
- s_.new_edge<Annotates> (ref.annotation (), m);
-
- // Type info. Can be missing for a substitution group member.
- //
- if (ref.typed_p ())
- s_.new_edge<Belongs> (m, ref.type ());
- }
- }
- catch (NotNamespace const& ex)
- {
- if (valid_)
- {
- wcerr << "ice: unable to resolve namespace '" << ex.ns () << "'"
- << endl;
- abort ();
- }
- }
- catch (NotName const& ex)
- {
- if (valid_)
- {
- wcerr << "ice: unable to resolve name '" << ex.name ()
- << "' inside namespace '" << ex.ns () << "'" <<endl;
- abort ();
- }
- }
- }
-
- void
- traverse (SemanticGraph::Fundamental::IdRef& i)
- {
- ref_type (i);
- }
-
- void
- traverse (SemanticGraph::Fundamental::IdRefs& i)
- {
- ref_type (i);
- }
-
- void
- ref_type (SemanticGraph::Specialization& s)
- {
- if (s.context ().count ("type-ns-name"))
- {
- String ns_name (s.context ().get<String> ("type-ns-name"));
- String uq_name (s.context ().get<String> ("type-uq-name"));
-
- s.context ().remove ("type-ns-name");
- s.context ().remove ("type-uq-name");
- s.context ().remove ("edge-type-id");
-
- try
- {
- s_.new_edge<Arguments> (
- resolve<SemanticGraph::Type> (ns_name, uq_name, s_, cache_), s);
- }
- catch (NotName const& ex)
- {
- wcerr << s.file () << ":" << s.line () << ":" << s.column () << ": "
- << "error: unable to resolve type '" << uq_name << "' "
- << "in namespace '" << ns_name << "'" << endl;
-
- valid_ = false;
- }
- }
- }
-
- void
- traverse (SemanticGraph::List& l)
- {
- if (l.context ().count ("type-ns-name"))
- {
- String ns_name (l.context ().get<String> ("type-ns-name"));
- String uq_name (l.context ().get<String> ("type-uq-name"));
-
- l.context ().remove ("type-ns-name");
- l.context ().remove ("type-uq-name");
- l.context ().remove ("edge-type-id");
-
- try
- {
- s_.new_edge<Arguments> (
- resolve<SemanticGraph::Type> (ns_name, uq_name, s_, cache_), l);
- }
- catch (NotName const& ex)
- {
- wcerr << l.file () << ":" << l.line () << ":" << l.column () << ": "
- << "error: unable to resolve item type '" << uq_name << "' "
- << "in namespace '" << ns_name << "'" << endl;
-
- valid_ = false;
- }
- }
-
- Traversal::List::traverse (l);
- }
-
- void
- traverse (SemanticGraph::Union& u)
- {
- using SemanticGraph::Union;
-
- if (u.context ().count ("union-member-types"))
- {
- UnionMemberTypes const& m (
- u.context ().get<UnionMemberTypes> ("union-member-types"));
-
- // Process it backwards so that we can just insert each
- // edge in the front.
- //
- for (UnionMemberTypes::const_reverse_iterator i (m.rbegin ());
- i != m.rend (); i++)
- {
- try
- {
- NodeArgs<Union, Union::ArgumentedIterator> na (
- u, u.argumented_begin ());
-
- s_.new_edge<Arguments> (
- resolve<SemanticGraph::Type> (
- i->ns_name, i->uq_name, s_, cache_), na);
- }
- catch (NotName const& ex)
- {
- wcerr << u.file () << ":" << u.line () << ":" << u.column () << ": "
- << "error: unable to resolve item type '" << i->uq_name << "' "
- << "in namespace '" << i->ns_name << "'" << endl;
-
- valid_ = false;
- }
- }
-
- u.context ().remove ("union-member-types");
- }
-
- Traversal::Union::traverse (u);
- }
-
- void
- traverse (SemanticGraph::Complex& c)
- {
- // Avoid traversing complex type more than once.
- //
- if (c.context ().count ("complex-type-resolved"))
- return;
-
- c.context ().set ("complex-type-resolved", true);
-
- // Resolve base type if any.
- //
- if (c.context ().count ("type-ns-name"))
- {
- String ns_name (c.context ().get<String> ("type-ns-name"));
- String uq_name (c.context ().get<String> ("type-uq-name"));
- type_id edge_id (c.context ().get<type_id> ("edge-type-id"));
-
- c.context ().remove ("type-ns-name");
- c.context ().remove ("type-uq-name");
- c.context ().remove ("edge-type-id");
-
- try
- {
- if (edge_id == typeid (Extends))
- {
- s_.new_edge<Extends> (
- c, resolve<SemanticGraph::Type> (
- ns_name, uq_name, s_, cache_));
- }
- else if (edge_id == typeid (Restricts))
- {
- Restricts& r (
- s_.new_edge<Restricts> (
- c, resolve<SemanticGraph::Type> (
- ns_name, uq_name, s_, cache_)));
-
- if (c.context ().count ("facets"))
- {
- Facets const& f (c.context ().get<Facets> ("facets"));
- copy_facets (r, f);
- c.context ().remove ("facets");
- }
- }
- else
- assert (false);
- }
- catch (NotName const& ex)
- {
- wcerr << c.file () << ":" << c.line () << ":" << c.column () << ": "
- << "error: unable to resolve base type '" << uq_name << "' "
- << "in namespace '" << ns_name << "'" << endl;
-
- valid_ = false;
- }
- }
-
- // Resolve attribute-group-refs. Do it before element-group-refs
- // so that if the scope was empty they end up at the end.
- //
- if (c.context ().count ("attribute-group-refs"))
- {
- AttributeGroupRefs& refs (
- c.context ().get<AttributeGroupRefs> ("attribute-group-refs"));
-
- // Handle refs from last to first so that multiple insertions
- // to an empty list (always front) end up in proper order.
- //
- for (AttributeGroupRefs::reverse_iterator i (refs.rbegin ());
- i != refs.rend (); ++i)
- {
- clone_attribute_group_content (*i, c);
- }
-
- c.context ().remove ("attribute-group-refs");
- }
-
- // Resolve element-group-ref if any.
- //
- if (c.context ().count ("element-group-ref"))
- {
- using SemanticGraph::Compositor;
-
- ElementGroupRef& ref (
- c.context ().get<ElementGroupRef> ("element-group-ref"));
-
- Compositor* comp (clone_element_group_content (c, ref));
-
- // Create ContainsCompositor edge.
- //
- if (comp)
- s_.new_edge<ContainsCompositor> (c, *comp, ref.min, ref.max);
-
- c.context ().remove ("element-group-ref");
- }
-
- Traversal::Complex::traverse (c);
- }
-
- void
- traverse (SemanticGraph::Enumeration& e)
- {
- // Resolve base type if any.
- //
- if (e.context ().count ("type-ns-name"))
- {
- String ns_name (e.context ().get<String> ("type-ns-name"));
- String uq_name (e.context ().get<String> ("type-uq-name"));
-
- e.context ().remove ("type-ns-name");
- e.context ().remove ("type-uq-name");
- e.context ().remove ("edge-type-id");
-
- try
- {
- Restricts& r (
- s_.new_edge<Restricts> (
- e, resolve<SemanticGraph::Type> (
- ns_name, uq_name, s_, cache_)));
-
- if (e.context ().count ("facets"))
- {
- Facets const& f (e.context ().get<Facets> ("facets"));
- copy_facets (r, f);
- e.context ().remove ("facets");
- }
- }
- catch (NotName const& ex)
- {
- wcerr << e.file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unable to resolve base type '" << uq_name << "' "
- << "in namespace '" << ns_name << "'" << endl;
-
- valid_ = false;
- }
- }
-
- Traversal::Enumeration::traverse (e);
- }
-
- void
- traverse (SemanticGraph::ElementGroup& g)
- {
- // Avoid traversing groups more than once.
- //
- if (!g.context ().count ("element-group-traversed"))
- {
- g.context ().set ("element-group-traversed", true);
- Traversal::ElementGroup::traverse (g);
-
- // Note that setting element-group-resolved after traversing
- // the group allows for a recursive shallow resolution using
- // resolve_element_group.
- //
- g.context ().set ("element-group-resolved", true);
- }
- }
-
- // We need a "shallow" resolve to break possible recursing:
- // group->element->complexType->group.
- //
- void
- resolve_element_group (SemanticGraph::ElementGroup& g)
- {
- using SemanticGraph::Scope;
- using SemanticGraph::Element;
-
- // Avoid resolving groups more than once.
- //
- if (!g.context ().count ("element-group-resolved"))
- {
- g.context ().set ("element-group-resolved", true);
-
- for (Scope::NamesIterator i (g.names_begin ());
- i != g.names_end (); ++i)
- {
- if (Element* e = dynamic_cast<Element*> (&i->named ()))
- resolve_element (*e);
- }
-
- traverse (g.contains_compositor ().compositor ());
- }
- }
-
- void
- traverse (SemanticGraph::AttributeGroup& g)
- {
- // Avoid traversing groups more than once.
- //
- if (g.context ().count ("attribute-group-resolved"))
- return;
-
- g.context ().set ("attribute-group-resolved", true);
-
- // Resolve attribute-group-refs.
- //
- if (g.context ().count ("attribute-group-refs"))
- {
- AttributeGroupRefs& refs (
- g.context ().get<AttributeGroupRefs> ("attribute-group-refs"));
-
- // Handle refs from last to first so that multiple insertions
- // to an empty list (always front) end up in proper order.
- //
- for (AttributeGroupRefs::reverse_iterator i (refs.rbegin ());
- i != refs.rend (); ++i)
- {
- clone_attribute_group_content (*i, g);
- }
-
- g.context ().remove ("attribute-group-refs");
- }
-
- Traversal::AttributeGroup::traverse (g);
- }
-
- void
- traverse (SemanticGraph::Compositor& c)
- {
- using SemanticGraph::Compositor;
-
- // Resolve element-group-refs if any.
- //
- if (c.context ().count ("element-group-refs"))
- {
- using SemanticGraph::Scope;
-
- ElementGroupRefs& refs (
- c.context ().get<ElementGroupRefs> ("element-group-refs"));
-
- // Handle refs from last to first so that multiple insertions
- // to an empty list (always front) end up in proper order.
- //
- for (ElementGroupRefs::reverse_iterator i (refs.rbegin ());
- i != refs.rend (); ++i)
- {
- // Find our scope.
- //
- Compositor* j (&c);
-
- while(!j->contained_compositor_p ())
- j = &j->contained_particle ().compositor ();
-
- Compositor* comp (
- clone_element_group_content (
- dynamic_cast<Scope&> (j->contained_compositor ().container ()),
- *i));
-
- // Create ContainsParticle edge.
- //
- if (comp)
- {
- NodeArgs<Compositor, Compositor::ContainsIterator> na (
- c, i->contains_pos);
- s_.new_edge<ContainsParticle> (na, *comp, i->min, i->max);
- }
- }
-
- c.context ().remove ("element-group-refs");
- }
-
- // Traverse recursively but only particles that are compositors.
- // This way we won't trigger anonymous type traversal (via member)
- // and therefore can call this functions from resolve_element_group
- // to completely resolve a group.
- //
- for (Compositor::ContainsIterator i (c.contains_begin ()),
- e (c.contains_end ()); i != e; ++i)
- {
- SemanticGraph::Particle& p (i->particle ());
-
- if (p.is_a<Compositor> ())
- dispatch (p);
- }
-
- // Traversal::Compositor::traverse (c);
- }
-
- SemanticGraph::Compositor*
- clone_element_group_content (SemanticGraph::Scope& s,
- ElementGroupRef const& ref)
- {
- using SemanticGraph::Scope;
- using SemanticGraph::Compositor;
- using SemanticGraph::ElementGroup;
-
- try
- {
- ElementGroup& g (
- resolve<ElementGroup> (ref.ns_name, ref.uq_name, s_, cache_));
-
- // Make sure the group and all its content are fully resolved.
- //
- resolve_element_group (g);
-
- Scope::NamesIterator pos (ref.names_pos);
- Compositor& root (g.contains_compositor ().compositor ());
- Compositor& copy (clone_compositor (root, s, pos));
-
- return &copy;
- }
- catch (NotNamespace const& ex)
- {
- if (valid_)
- {
- wcerr << "ice: unable to resolve namespace '" << ex.ns () << "'"
- << endl;
- abort ();
- }
- }
- catch (NotName const& ex)
- {
- if (valid_)
- {
- wcerr << "ice: unable to resolve name '" << ex.name ()
- << "' inside namespace '" << ex.ns () << "'" << endl;
- abort ();
- }
- }
-
- return 0;
- }
-
- SemanticGraph::Compositor&
- clone_compositor (SemanticGraph::Compositor& c,
- SemanticGraph::Scope& scope,
- SemanticGraph::Scope::NamesIterator& pos)
- {
- using SemanticGraph::Any;
- using SemanticGraph::Element;
- using SemanticGraph::Particle;
- using SemanticGraph::Compositor;
-
- Compositor* tmp (0);
-
- if (c.is_a<All> ())
- tmp = &s_.new_node<All> (c.file (), c.line (), c.column ());
- else if (c.is_a<Choice> ())
- tmp = &s_.new_node<Choice> (c.file (), c.line (), c.column ());
- else if (c.is_a<Sequence> ())
- tmp = &s_.new_node<Sequence> (c.file (), c.line (), c.column ());
- else
- assert (false);
-
- Compositor& copy (*tmp);
-
- // Copy annotation.
- //
- if (c.annotated_p ())
- s_.new_edge<Annotates> (c.annotation (), copy);
-
- for (Compositor::ContainsIterator i (c.contains_begin ());
- i != c.contains_end (); ++i)
- {
- Particle& p (i->particle ());
-
- if (p.is_a<Compositor> ())
- {
- Compositor& c (dynamic_cast<Compositor&> (p));
- Compositor& cc (clone_compositor (c, scope, pos));
-
- s_.new_edge<ContainsParticle> (copy, cc, i->min (), i->max ());
- }
- else if (p.is_a<Element> ())
- {
- Element& e (dynamic_cast<Element&> (p));
- Element& ec (clone_element (e));
-
- s_.new_edge<ContainsParticle> (copy, ec, i->min (), i->max ());
-
- NodeArgs<Scope, Scope::NamesIterator> na (scope, pos);
- s_.new_edge<Names> (na, ec, e.name ());
- ++pos;
- }
- else if (p.is_a<Any> ())
- {
- Any& a (dynamic_cast<Any&> (p));
- Any& ac (
- s_.new_node<Any> (a.file (), a.line (), a.column (),
- a.namespace_begin (), a.namespace_end ()));
-
- ac.prototype (a);
-
- s_.new_edge<ContainsParticle> (copy, ac, i->min (), i->max ());
-
- // Transfer annotation.
- //
- if (a.annotated_p ())
- s_.new_edge<Annotates> (a.annotation (), ac);
-
- // Any has no name so we have to come up with a fake one in
- // order to put it into the scope. Note that we cannot reuse
- // the name from the prototype.
-
- unsigned long count;
- SemanticGraph::Context& ctx (scope.context ());
-
- if (!ctx.count ("any-name-count"))
- {
- count = 0;
- ctx.set ("any-name-count", count);
- }
- else
- count = ++(ctx.get<unsigned long> ("any-name-count"));
-
- std::basic_ostringstream<wchar_t> os;
- os << "any #" << count;
-
- NodeArgs<Scope, Scope::NamesIterator> na (scope, pos);
- s_.new_edge<Names> (na, ac, os.str ());
- ++pos;
- }
- else
- assert (false);
- }
-
- return copy;
- }
-
- // Clone a fully-resolved element. Note that it cannot be used as
- // is to clone ref'ed element (default/fixed value, etc).
- //
- SemanticGraph::Element&
- clone_element (SemanticGraph::Element& e)
- {
- using SemanticGraph::Element;
-
- Element& copy (
- s_.new_node<Element> (
- e.file (), e.line (), e.column (), e.global_p (), e.qualified_p ()));
-
- if (e.qualified_p ())
- s_.new_edge<BelongsToNamespace> (copy, e.namespace_ ());
-
- // Transfer default and fixed values.
- //
- if (e.fixed_p ())
- copy.fixed (e.value ());
- else if (e.default_p ())
- copy.default_ (e.value ());
-
- if (copy.default_p ())
- {
- copy.context ().set (
- "dom-node",
- e.context ().get<Xerces::DOMElement*> ("dom-node"));
- default_values_.push_back (&copy);
- }
-
- // Transfer annotation.
- //
- if (e.annotated_p ())
- s_.new_edge<Annotates> (e.annotation (), copy);
-
- // Belongs edge.
- //
- if (e.typed_p ())
- s_.new_edge<Belongs> (copy, e.type ());
- else
- assert (!valid_);
-
- // Substitutes edge.
- //
- if (e.substitutes_p ())
- s_.new_edge<Substitutes> (copy, e.substitutes ().root ());
-
- return copy;
- }
-
- void
- clone_attribute_group_content (AttributeGroupRef& ref,
- SemanticGraph::Scope& s)
- {
- using SemanticGraph::Scope;
- using SemanticGraph::Attribute;
- using SemanticGraph::AttributeGroup;
-
- try
- {
- AttributeGroup& g (
- resolve<AttributeGroup> (ref.ns_name, ref.uq_name, s_, cache_));
-
- // Make sure the group and all its content are fully resolved.
- //
- traverse (g);
-
- Scope::NamesIterator pos (ref.names_pos);
-
- for (Scope::NamesIterator i (g.names_begin ());
- i != g.names_end (); ++i)
- {
- if (Attribute* p = dynamic_cast<Attribute*> (&i->named ()))
- {
- Attribute& a (
- s_.new_node<Attribute> (p->file (),
- p->line (),
- p->column (),
- p->optional_p (),
- p->global_p (),
- p->qualified_p ()));
-
- NodeArgs<Scope, Scope::NamesIterator> na (s, pos);
- s_.new_edge<Names> (na, a, p->name ());
- ++pos;
-
- if (p->qualified_p ())
- s_.new_edge<BelongsToNamespace> (a, p->namespace_ ());
-
- // Transfer default and fixed values if any.
- //
- if (p->fixed_p ())
- a.fixed (p->value ());
- else if (p->default_p ())
- a.default_ (p->value ());
-
- if (a.default_p ())
- {
- a.context ().set (
- "dom-node",
- p->context ().get<Xerces::DOMElement*> ("dom-node"));
- default_values_.push_back (&a);
- }
-
- // Transfer annotation.
- //
- if (p->annotated_p ())
- s_.new_edge<Annotates> (p->annotation (), a);
-
- // Belongs edge.
- //
- if (p->typed_p ())
- s_.new_edge<Belongs> (a, p->type ());
- else
- assert (!valid_);
- }
- else if (
- AnyAttribute* p = dynamic_cast<AnyAttribute*> (&i->named ()))
- {
- AnyAttribute& any (
- s_.new_node<AnyAttribute> (p->file (),
- p->line (),
- p->column (),
- p->namespace_begin (),
- p->namespace_end ()));
-
- any.prototype (*p);
-
- // Transfer annotation.
- //
- if (p->annotated_p ())
- s_.new_edge<Annotates> (p->annotation (), any);
-
- // AnyAttribute has no name so we have to come up with a fake
- // one in order to put it into the scope. Note that we cannot
- // reuse the name from the attribute group.
-
- unsigned long count;
- SemanticGraph::Context& ctx (s.context ());
-
- if (!ctx.count ("any-attribute-name-count"))
- {
- count = 0;
- ctx.set ("any-attribute-name-count", count);
- }
- else
- count = ++(ctx.get<unsigned long> ("any-attribute-name-count"));
-
- std::basic_ostringstream<wchar_t> os;
- os << "any-attribute #" << count;
-
- NodeArgs<Scope, Scope::NamesIterator> na (s, pos);
- s_.new_edge<Names> (na, any, os.str ());
- ++pos;
- }
- }
- }
- catch (NotNamespace const& ex)
- {
- if (valid_)
- {
- wcerr << "ice: unable to resolve namespace '" << ex.ns () << "'"
- << endl;
- abort ();
- }
- }
- catch (NotName const& ex)
- {
- if (valid_)
- {
- wcerr << "ice: unable to resolve attribute group name '"
- << ex.name () << "' inside namespace '" << ex.ns () << "'"
- << endl;
- abort ();
- }
- }
- }
-
- private:
- Schema& s_;
- bool& valid_;
- NamespaceMap& cache_;
- DefaultValues& default_values_;
-
- private:
- //Traversal::ContainsParticle contains_particle;
- Traversal::ContainsCompositor contains_compositor;
- };
- }
-
- // Parser::Impl
- //
-
- class Parser::Impl
- {
- Impl (Impl const&);
- Impl& operator= (Impl const&);
-
- public:
- ~Impl ();
-
- Impl (bool proper_restriction,
- bool multiple_imports,
- bool full_schema_check,
- LocationTranslator*,
- const WarningSet*);
-
- auto_ptr<Schema>
- parse (Path const&);
-
- auto_ptr<Schema>
- parse (Paths const&);
-
- auto_ptr<Schema>
- xml_schema (Path const&);
-
- private:
- void
- fill_xml_schema (Schema&, Path const&);
-
- private:
- XML::AutoPtr<Xerces::DOMDocument>
- dom (SemanticGraph::Path const&, bool validate);
-
- void
- schema (XML::Element const&);
-
- SemanticGraph::Annotation*
- annotation (bool process);
-
- void
- import (XML::Element const&);
-
- void
- include (XML::Element const&);
-
- void
- element_group (XML::Element const&, bool in_compositor);
-
- SemanticGraph::Type*
- simple_type (XML::Element const&);
-
- SemanticGraph::Type*
- list (XML::Element const& l, XML::Element const& type);
-
- SemanticGraph::Type*
- union_ (XML::Element const& u, XML::Element const& type);
-
- SemanticGraph::Type*
- restriction (XML::Element const& r, XML::Element const& type);
-
- void
- enumeration (XML::Element const&);
-
- SemanticGraph::Type*
- complex_type (XML::Element const&);
-
- All*
- all (XML::Element const&);
-
- Choice*
- choice (XML::Element const&, bool in_compositor);
-
- Sequence*
- sequence (XML::Element const&, bool in_compositor);
-
- void
- simple_content (XML::Element const&);
-
- void
- complex_content (XML::Element const&, Complex&);
-
- void
- simple_content_extension (XML::Element const&);
-
- void
- simple_content_restriction (XML::Element const&);
-
- void
- complex_content_extension (XML::Element const&, Complex&);
-
- void
- complex_content_restriction (XML::Element const&, Complex&);
-
- void
- element (XML::Element const&, bool global);
-
- void
- attribute (XML::Element const&, bool global);
-
- void
- attribute_group (XML::Element const&);
-
- void
- any (XML::Element const&);
-
- void
- any_attribute (XML::Element const&);
-
- private:
- bool
- is_disabled (char const* warning)
- {
- return disabled_warnings_all_ ||
- (disabled_warnings_ &&
- disabled_warnings_->find (warning) != disabled_warnings_->end ());
- }
-
- private:
- bool
- more () const
- {
- iterator const& it (iteration_state_.top ());
-
- return it.l_->getLength () > it.i_;
- }
-
- XML::Element
- next ()
- {
- iterator& it (iteration_state_.top ());
-
- return XML::Element (
- dynamic_cast<Xerces::DOMElement*> (it.l_->item (it.i_++)));
- }
-
- void
- prev ()
- {
- iterator& it (iteration_state_.top ());
-
- if (it.i_)
- --it.i_;
- }
-
- void
- push (XML::Element const& e)
- {
- iteration_state_.push (e.dom_element ());
- }
-
- void
- pop ()
- {
- iteration_state_.pop ();
- }
-
- private:
- void
- push_scope (SemanticGraph::Scope& s)
- {
- scope_stack_.push (&s);
- }
-
- void
- pop_scope ()
- {
- scope_stack_.pop ();
- }
-
- SemanticGraph::Scope&
- scope () const
- {
- return *(scope_stack_.top ());
- }
-
- private:
- void
- push_compositor (SemanticGraph::Compositor& c)
- {
- compositor_stack_.push (&c);
- }
-
- void
- pop_compositor ()
- {
- assert (!compositor_stack_.empty ());
- compositor_stack_.pop ();
- }
-
- SemanticGraph::Compositor&
- compositor () const
- {
- assert (!compositor_stack_.empty ());
- return *(compositor_stack_.top ());
- }
-
- private:
- static unsigned long const unbounded = ~static_cast<unsigned long> (0);
-
- unsigned long
- parse_min (String const& m)
- {
- if (m.empty ())
- return 1;
-
- unsigned long v;
- std::basic_istringstream<wchar_t> is (m);
-
- is >> v;
- return v;
- }
-
- unsigned long
- parse_max (String const& m)
- {
- if (m.empty ())
- return 1;
-
- if (m == L"unbounded")
- return unbounded;
-
- unsigned long v;
- std::basic_istringstream<wchar_t> is (m);
-
- is >> v;
- return v;
- }
-
- private:
- SemanticGraph::Namespace&
- cur_ns () const
- {
- // Here I am using the fact that each Schema Names only one
- // Namespace.
- //
- return dynamic_cast<Namespace&> (cur_->names_begin ()->named ());
- }
-
- private:
- String
- unqualified_name (String const& n)
- {
- return XML::uq_name (n);
- }
-
- String
- namespace_name (XML::Element const& e, String const& n)
- {
- try
- {
- String p (XML::prefix (n));
-
- // If we are currently handling a chameleon-included schema then
- // the empty prefix is logically translated into acquired target
- // namespace.
- //
- if (cur_chameleon_ && p.empty ())
- return cur_ns ().name ();
-
- // We have to try to resolve even the empty prefix since it can
- // be assigned to a namespace (which takes precedence over names
- // without a namespace).
- //
- return XML::ns_name (e.dom_element (), p);
- }
- catch (XML::NoMapping const& ex)
- {
- if (ex.prefix ().empty ())
- return String ();
- else
- throw;
- }
- }
-
- SemanticGraph::Type&
- ultimate_base (SemanticGraph::Type& t)
- {
- using namespace SemanticGraph;
-
- Complex* c = dynamic_cast<Complex*> (&t);
-
- if (c != 0 && c->inherits_p ())
- {
- Type* b (&c->inherits ().base ());
-
- while (true)
- {
- Complex* cb (dynamic_cast<Complex*> (b));
-
- if (cb != 0 && cb->inherits_p ())
- {
- b = &cb->inherits ().base ();
- continue;
- }
-
- break;
- }
-
- return *b;
- }
- else
- return t;
- }
-
- private:
- template <typename Edge, typename Node>
- Edge*
- set_type (String const& type, XML::Element const& e, Node& node);
-
- private:
- XML::PtrVector<Xerces::DOMDocument>* dom_docs_;
-
- struct iterator
- {
- iterator (Xerces::DOMElement* e)
- : l_ (e->getChildNodes ()), i_ (0)
- {
- }
-
- Xerces::DOMNodeList* l_;
- size_t i_;
- };
-
- std::stack<iterator> iteration_state_;
- SemanticGraph::Schema* s_; // root schema file
- SemanticGraph::Schema* cur_; // current schema file
- bool cur_chameleon_; // whethere cur_ is chameleon
-
- SemanticGraph::Schema* xml_schema_; // XML Schema file
- SemanticGraph::Path xml_schema_path_;
-
- //
- //
- std::stack<SemanticGraph::Scope*> scope_stack_;
-
- //
- //
- std::stack<SemanticGraph::Compositor*> compositor_stack_;
-
-
- // Map of absolute file path and namespace pair to a Schema node.
- //
- struct SchemaId
- {
- SchemaId (SemanticGraph::Path const& path, String const& ns)
- : path_ (path), ns_ (ns)
- {
- }
-
-
- friend bool
- operator< (SchemaId const& x, SchemaId const& y)
- {
- return x.path_ < y.path_ || (x.path_ == y.path_ && x.ns_ < y.ns_);
- }
-
- private:
- SemanticGraph::Path path_;
- String ns_;
- };
-
-
- typedef std::map<SchemaId, SemanticGraph::Schema*> SchemaMap;
- SchemaMap schema_map_;
-
- // Path stack for diagnostic.
- //
- struct PathPair
- {
- PathPair (SemanticGraph::Path const& r, SemanticGraph::Path const& a)
- : rel (r), abs (a)
- {
- }
-
- SemanticGraph::Path rel, abs;
- };
-
- std::stack<PathPair> file_stack_;
-
- SemanticGraph::Path const&
- file ()
- {
- return file_stack_.top ().rel;
- }
-
- SemanticGraph::Path const&
- abs_file ()
- {
- return file_stack_.top ().abs;
- }
-
- // Members with default/fixed values (needed for QName handling).
- //
- DefaultValues default_values_;
-
- private:
- bool qualify_attribute_;
- bool qualify_element_;
-
- bool valid_;
-
- bool proper_restriction_;
- bool multiple_imports_;
- bool full_schema_check_;
- LocationTranslator* loc_translator_;
- const WarningSet* disabled_warnings_;
- bool disabled_warnings_all_;
-
- NamespaceMap* cache_;
- };
-
-
- Parser::Impl::
- Impl (bool proper_restriction,
- bool multiple_imports,
- bool full_schema_check,
- LocationTranslator* t,
- const WarningSet* dw)
- : s_ (0),
- cur_ (0),
- cur_chameleon_ (false),
- xml_schema_path_ ("XMLSchema.xsd"),
- qualify_attribute_ (false),
- qualify_element_ (false),
- proper_restriction_ (proper_restriction),
- multiple_imports_ (multiple_imports),
- full_schema_check_ (full_schema_check),
- loc_translator_ (t),
- disabled_warnings_ (dw),
- disabled_warnings_all_ (false)
- {
- if (dw && dw->find ("all") != dw->end ())
- disabled_warnings_all_ = true;
-
- // Initialize the Xerces-C++ runtime.
- //
- Xerces::XMLPlatformUtils::Initialize ();
- }
-
- Parser::Impl::
- ~Impl ()
- {
- // Terminate the Xerces-C++ runtime.
- //
- Xerces::XMLPlatformUtils::Terminate ();
- }
-
- template<typename T> T&
- add_type (Schema& s, Namespace& ns, String name)
- {
- Path path ("XMLSchema.xsd");
- T& node (s.new_node<T> (path, 0, 0));
- s.new_edge<Names> (ns, node, name);
-
- return node;
- }
-
- void Parser::Impl::
- fill_xml_schema (Schema& s, Path const& path)
- {
- Namespace& ns (s.new_node<Namespace> (path, 1, 1));
- s.new_edge<Names> (s, ns, xsd);
-
- // anyType and & anySimpleType
- //
- AnyType& any_type (
- add_type<AnyType> (s, ns, L"anyType"));
- add_type<AnySimpleType> (s, ns, L"anySimpleType");
-
- // Integers.
- //
- add_type<Fundamental::Byte> (s, ns, L"byte");
- add_type<Fundamental::UnsignedByte> (s, ns, L"unsignedByte");
- add_type<Fundamental::Short> (s, ns, L"short");
- add_type<Fundamental::UnsignedShort> (s, ns, L"unsignedShort");
- add_type<Fundamental::Int> (s, ns, L"int");
- add_type<Fundamental::UnsignedInt> (s, ns, L"unsignedInt");
- add_type<Fundamental::Long> (s, ns, L"long");
- add_type<Fundamental::UnsignedLong> (s, ns, L"unsignedLong");
- add_type<Fundamental::Integer> (s, ns, L"integer");
- add_type<Fundamental::NonPositiveInteger> (s, ns, L"nonPositiveInteger");
- add_type<Fundamental::NonNegativeInteger> (s, ns, L"nonNegativeInteger");
- add_type<Fundamental::PositiveInteger> (s, ns, L"positiveInteger");
- add_type<Fundamental::NegativeInteger> (s, ns, L"negativeInteger");
-
- // Boolean.
- //
- add_type<Fundamental::Boolean> (s, ns, L"boolean");
-
- // Floats.
- //
- add_type<Fundamental::Float> (s, ns, L"float");
- add_type<Fundamental::Double> (s, ns, L"double");
- add_type<Fundamental::Decimal> (s, ns, L"decimal");
-
- // Strings
- //
- add_type<Fundamental::String> (s, ns, L"string");
- add_type<Fundamental::NormalizedString> (s, ns, L"normalizedString");
- add_type<Fundamental::Token> (s, ns, L"token");
- add_type<Fundamental::Name> (s, ns, L"Name");
- add_type<Fundamental::NameToken> (s, ns, L"NMTOKEN");
- add_type<Fundamental::NameTokens> (s, ns, L"NMTOKENS");
- add_type<Fundamental::NCName> (s, ns, L"NCName");
- add_type<Fundamental::Language> (s, ns, L"language");
-
- // ID/IDREF.
- //
- add_type<Fundamental::Id> (s, ns, L"ID");
-
- Fundamental::IdRef& id_ref (
- s.new_node<Fundamental::IdRef> (path, 0, 0));
- s.new_edge<Names> (ns, id_ref, L"IDREF");
- s.new_edge<Arguments> (any_type, id_ref);
-
- Fundamental::IdRefs& id_refs (
- s.new_node<Fundamental::IdRefs> (path, 0, 0));
- s.new_edge<Names> (ns, id_refs, L"IDREFS");
- s.new_edge<Arguments> (any_type, id_refs);
-
- // URI.
- //
- add_type<Fundamental::AnyURI> (s, ns, L"anyURI");
-
- // Qualified name.
- //
- add_type<Fundamental::QName> (s, ns, L"QName");
-
- // Binary.
- //
- add_type<Fundamental::Base64Binary> (s, ns, L"base64Binary");
- add_type<Fundamental::HexBinary> (s, ns, L"hexBinary");
-
- // Date/time.
- //
- add_type<Fundamental::Date> (s, ns, L"date");
- add_type<Fundamental::DateTime> (s, ns, L"dateTime");
- add_type<Fundamental::Duration> (s, ns, L"duration");
- add_type<Fundamental::Day> (s, ns, L"gDay");
- add_type<Fundamental::Month> (s, ns, L"gMonth");
- add_type<Fundamental::MonthDay> (s, ns, L"gMonthDay");
- add_type<Fundamental::Year> (s, ns, L"gYear");
- add_type<Fundamental::YearMonth> (s, ns, L"gYearMonth");
- add_type<Fundamental::Time> (s, ns, L"time");
-
- // Entity.
- //
- add_type<Fundamental::Entity> (s, ns, L"ENTITY");
- add_type<Fundamental::Entities> (s, ns, L"ENTITIES");
-
- // Notation.
- //
- add_type<Fundamental::Notation> (s, ns, L"NOTATION");
- }
-
-
- auto_ptr<Schema> Parser::Impl::
- xml_schema (Path const& tu)
- {
- valid_ = true;
-
- auto_ptr<Schema> rs (new Schema (tu, 1, 1));
- fill_xml_schema (*rs, tu);
-
- if (!valid_)
- throw InvalidSchema ();
-
- return rs;
- }
- auto_ptr<Schema> Parser::Impl::
- parse (Path const& tu)
- {
- valid_ = true;
- schema_map_.clear ();
- default_values_.clear ();
-
- XML::PtrVector<Xerces::DOMDocument> dom_docs;
- dom_docs_ = &dom_docs;
-
- NamespaceMap cache;
- cache_ = &cache;
-
- XML::AutoPtr<Xerces::DOMDocument> d (dom (tu, true));
-
- if (!d)
- throw InvalidSchema ();
-
- XML::Element root (d->getDocumentElement ());
- String ns (trim (root["targetNamespace"]));
-
- if (trace_)
- wcout << "target namespace: " << ns << endl;
-
- auto_ptr<Schema> rs (new Schema (tu, root.line (), root.column ()));
-
- // Implied schema with fundamental types.
- //
- xml_schema_ = &rs->new_node<Schema> (xml_schema_path_, 1, 1);
- rs->new_edge<Implies> (*rs, *xml_schema_, xml_schema_path_);
-
- fill_xml_schema (*xml_schema_, xml_schema_path_);
-
- // Parse.
- //
- {
- // Enter the file into schema_map_. Do normalize() before
- // complete() to avoid hitting system path limits with '..'
- // directories.
- //
- Path abs_path (tu);
- abs_path.normalize ().complete ();
- schema_map_[SchemaId (abs_path, ns)] = rs.get ();
- rs->context ().set ("absolute-path", abs_path);
-
- s_ = cur_ = rs.get ();
- {
- file_stack_.push (PathPair (tu, abs_path));
-
- {
- push_scope (
- s_->new_node<Namespace> (
- file (), root.line (), root.column ()));
- s_->new_edge<Names> (*cur_, scope (), ns);
-
- {
- schema (root);
- }
-
- pop_scope ();
- }
-
- file_stack_.pop ();
- }
-
- s_ = cur_ = 0;
- }
-
- dom_docs_->push_back (d);
-
- // Second pass to resolve forward references to types, elements,
- // attributes and groups.
- //
- if (valid_)
- {
- Traversal::Schema schema;
-
- struct Uses: Traversal::Uses
- {
- virtual void
- traverse (Type& u)
- {
- Schema& s (u.schema ());
-
- if (!s.context ().count ("schema-resolved"))
- {
- s.context ().set ("schema-resolved", true);
- Traversal::Uses::traverse (u);
- }
- }
- } uses;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
-
- schema >> uses >> schema;
- schema >> schema_names >> ns >> ns_names;
-
- Resolver resolver (*rs, valid_, *cache_, default_values_);
-
- struct AnonymousMember: Traversal::Attribute,
- Traversal::Element,
- Traversal::Member
- {
- AnonymousMember (Traversal::NodeDispatcher& d)
- {
- belongs_.node_traverser (d);
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- traverse_member (a);
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- traverse_member (e);
- }
-
- void
- traverse_member (SemanticGraph::Member& m)
- {
- if (m.typed_p () &&
- !m.type ().named_p () &&
- !m.type ().context ().count ("seen"))
- {
- m.type().context ().set ("seen", true);
-
- Traversal::Member::belongs (m, belongs_);
-
- m.type ().context ().remove ("seen");
- }
- }
-
- private:
- Traversal::Belongs belongs_;
- } anonymous_member (resolver);
-
- struct AnonymousBase: Traversal::Type
- {
- AnonymousBase (Traversal::NodeDispatcher& d)
- : base_ (d)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- if (!t.named_p ())
- base_.dispatch (t);
- }
-
- private:
- Traversal::NodeDispatcher& base_;
- } anonymous_base (resolver);
-
- ns_names >> resolver;
- ns_names >> anonymous_member;
-
- Traversal::Names names;
- Traversal::Inherits inherits;
- Traversal::Argumented argumented;
- resolver >> names >> resolver;
- names >> anonymous_member;
- resolver >> inherits >> anonymous_base;
- resolver >> argumented >> anonymous_base;
-
- if (trace_)
- wcout << "starting resolution pass" << endl;
-
- schema.dispatch (*rs);
- }
-
- // Resolve default/fixed values of QName type.
- //
- if (valid_)
- {
- for (DefaultValues::const_iterator i (default_values_.begin ()),
- e (default_values_.end ()); i != e; ++i)
- {
- SemanticGraph::Member& m (**i);
- SemanticGraph::Type& t (m.type ());
- SemanticGraph::Context& c (m.context ());
-
- if (ultimate_base (t).is_a<SemanticGraph::Fundamental::QName> ())
- {
- String v (m.value ());
- Xerces::DOMElement* e (c.get<Xerces::DOMElement*> ("dom-node"));
-
- try
- {
- // We have to try to resolve even the empty prefix since it can
- // be assigned to a namespace (which takes precedence over names
- // without a namespace).
- //
- String ns (XML::ns_name (e, XML::prefix (v)));
-
- if (m.fixed_p ())
- m.fixed (ns + L'#' + v);
- else
- m.default_ (ns + L'#' + v);
- }
- catch (XML::NoMapping const& ex)
- {
- if (!ex.prefix ().empty ())
- {
- wcerr << m.file () << ":" << m.line () << ":" << m.column ()
- << ": error: unable to resolve namespace for prefix '"
- << ex.prefix () << "'" << endl;
-
- valid_ = false;
- }
- }
- }
-
- c.remove ("dom-node");
- }
- }
-
- if (!valid_)
- throw InvalidSchema ();
-
- return rs;
- }
-
- auto_ptr<Schema> Parser::Impl::
- parse (Paths const& paths)
- {
- valid_ = true;
- schema_map_.clear ();
- default_values_.clear ();
-
- XML::PtrVector<Xerces::DOMDocument> dom_docs;
- dom_docs_ = &dom_docs;
-
- NamespaceMap cache;
- cache_ = &cache;
-
- auto_ptr<Schema> rs (new Schema (Path (), 0, 0));
-
- // Implied schema with fundamental types.
- //
- xml_schema_ = &rs->new_node<Schema> (xml_schema_path_, 1, 1);
- rs->new_edge<Implies> (*rs, *xml_schema_, xml_schema_path_);
-
- fill_xml_schema (*xml_schema_, xml_schema_path_);
-
- // Parse individual schemas.
- //
- s_ = rs.get ();
-
- for (Paths::const_iterator i (paths.begin ()); i != paths.end (); ++i)
- {
- Path const& tu (*i);
- XML::AutoPtr<Xerces::DOMDocument> d (dom (tu, true));
-
- if (!d)
- throw InvalidSchema ();
-
- XML::Element root (d->getDocumentElement ());
- String ns (trim (root["targetNamespace"]));
-
- if (trace_)
- wcout << "target namespace: " << ns << endl;
-
- // Check if we already have this schema. Do normalize() before
- // complete() to avoid hitting system path limits with '..'
- // directories.
- //
- Path abs_path (tu);
- abs_path.normalize ().complete ();
- SchemaId schema_id (abs_path, ns);
-
- if (schema_map_.find (schema_id) != schema_map_.end ())
- continue;
-
- Schema& s (s_->new_node<Schema> (tu, root.line (), root.column ()));
- s_->new_edge<Implies> (s, *xml_schema_, xml_schema_path_);
- s_->new_edge<Imports> (*s_, s, tu);
-
- // Enter the file into schema_map_.
- //
- schema_map_[schema_id] = &s;
- s.context ().set ("absolute-path", abs_path);
-
- cur_ = &s;
-
- {
- file_stack_.push (PathPair (tu, abs_path));
-
- {
- push_scope (
- s_->new_node<Namespace> (
- file (), root.line (), root.column ()));
- s_->new_edge<Names> (*cur_, scope (), ns);
-
- {
- schema (root);
- }
-
- pop_scope ();
- }
-
- file_stack_.pop ();
- }
-
- cur_ = 0;
-
- dom_docs_->push_back (d);
-
- if (!valid_)
- break;
- }
-
- s_ = 0;
-
- // Second pass to resolve forward references to types, elements,
- // attributes and groups.
- //
- if (valid_)
- {
- Traversal::Schema schema;
-
- struct Uses: Traversal::Uses
- {
- virtual void
- traverse (Type& u)
- {
- Schema& s (u.schema ());
-
- if (!s.context ().count ("schema-resolved"))
- {
- s.context ().set ("schema-resolved", true);
- Traversal::Uses::traverse (u);
- }
- }
- } uses;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
-
- schema >> uses >> schema;
- schema >> schema_names >> ns >> ns_names;
-
- Resolver resolver (*rs, valid_, *cache_, default_values_);
-
- struct AnonymousMember: Traversal::Attribute,
- Traversal::Element,
- Traversal::Member
- {
- AnonymousMember (Traversal::NodeDispatcher& d)
- {
- belongs_.node_traverser (d);
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- traverse_member (a);
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- traverse_member (e);
- }
-
- virtual void
- traverse_member (SemanticGraph::Member& m)
- {
- if (m.typed_p () &&
- !m.type ().named_p () &&
- !m.type ().context ().count ("seen"))
- {
- m.type().context ().set ("seen", true);
-
- Traversal::Member::belongs (m, belongs_);
-
- m.type ().context ().remove ("seen");
- }
- }
-
- private:
- Traversal::Belongs belongs_;
- } anonymous_member (resolver);
-
- struct AnonymousBase: Traversal::Type
- {
- AnonymousBase (Traversal::NodeDispatcher& d)
- : base_ (d)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- if (!t.named_p ())
- base_.dispatch (t);
- }
-
- private:
- Traversal::NodeDispatcher& base_;
- } anonymous_base (resolver);
-
- ns_names >> resolver;
- ns_names >> anonymous_member;
-
- Traversal::Names names;
- Traversal::Inherits inherits;
- Traversal::Argumented argumented;
- resolver >> names >> resolver;
- names >> anonymous_member;
- resolver >> inherits >> anonymous_base;
- resolver >> argumented >> anonymous_base;
-
- if (trace_)
- wcout << "starting resolution pass" << endl;
-
- schema.dispatch (*rs);
- }
-
- // Resolve default/fixed values of QName type.
- //
- if (valid_)
- {
- for (DefaultValues::const_iterator i (default_values_.begin ()),
- e (default_values_.end ()); i != e; ++i)
- {
- SemanticGraph::Member& m (**i);
- SemanticGraph::Type& t (m.type ());
- SemanticGraph::Context& c (m.context ());
-
- if (ultimate_base (t).is_a<SemanticGraph::Fundamental::QName> ())
- {
- String v (m.value ());
- Xerces::DOMElement* e (c.get<Xerces::DOMElement*> ("dom-node"));
-
- try
- {
- // We have to try to resolve even the empty prefix since it can
- // be assigned to a namespace (which takes precedence over names
- // without a namespace).
- //
- String ns (XML::ns_name (e, XML::prefix (v)));
-
- if (m.fixed_p ())
- m.fixed (ns + L'#' + v);
- else
- m.default_ (ns + L'#' + v);
- }
- catch (XML::NoMapping const& ex)
- {
- if (!ex.prefix ().empty ())
- {
- wcerr << m.file () << ":" << m.line () << ":" << m.column ()
- << ": error: unable to resolve namespace for prefix '"
- << ex.prefix () << "'" << endl;
-
- valid_ = false;
- }
- }
- }
-
- c.remove ("dom-node");
- }
- }
-
- if (!valid_)
- throw InvalidSchema ();
-
- return rs;
- }
-
- void Parser::Impl::
- schema (XML::Element const& s)
- {
- bool old_qa (qualify_attribute_);
- bool old_qe (qualify_element_);
-
- if (String af = trim (s["attributeFormDefault"]))
- qualify_attribute_ = af == L"qualified";
- else
- qualify_attribute_ = false;
-
- if (String ef = trim (s["elementFormDefault"]))
- qualify_element_ = ef == L"qualified";
- else
- qualify_element_ = false;
-
- push (s);
-
- // Parse leading annotation if any and add it as an annotation for
- // this schema.
- //
- if (Annotation* a = annotation (true))
- s_->new_edge<Annotates> (*a, *cur_);
-
- while (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
-
- if (trace_)
- wcout << name << endl;
-
- if (name == L"import") import (e); else
- if (name == L"include") include (e); else
- if (name == L"element") element (e, true); else
- if (name == L"attribute") attribute (e, true); else
- if (name == L"simpleType") simple_type (e); else
- if (name == L"annotation"); else
- if (name == L"complexType") complex_type (e); else
- if (name == L"group") element_group (e, false); else
- if (name == L"attributeGroup") attribute_group (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unexpected top-level element: '" << name << "'"
- << endl;
-
- valid_ = false;
- }
- }
-
- pop ();
-
- qualify_attribute_ = old_qa;
- qualify_element_ = old_qe;
- }
-
- void Parser::Impl::
- import (XML::Element const& i)
- {
- NarrowString loc (
- trim (
- XML::transcode_to_narrow (
- i.dom_element ()->getAttribute (
- XML::XMLChString ("schemaLocation").c_str ()))));
-
- if (loc_translator_)
- loc = loc_translator_->translate (loc);
-
- String ins (trim (i["namespace"]));
-
- // Ignore empty <import>.
- //
- if (!loc && !ins)
- return;
-
- Path path, rel_path, abs_path;
- try
- {
- path = Path (loc);
-
- if (path.absolute ())
- {
- abs_path = rel_path = path;
- abs_path.normalize ();
- }
- else
- {
- // Do normalize() before complete() to avoid hitting system path
- // limits with '..' directories.
- //
- abs_path = rel_path = file ().directory () / path;
- abs_path.normalize ().complete ();
- }
- }
- catch (InvalidPath const&)
- {
- wcerr << file () << ":" << i.line () << ":" << i.column () << ": "
- << "error: '" << loc.c_str () << "' is not a valid "
- << "filesystem path" << endl;
-
- valid_ = false;
- return;
- }
-
- SchemaId schema_id (abs_path, ins);
-
- if (schema_map_.find (schema_id) != schema_map_.end ())
- {
- s_->new_edge<Imports> (*cur_, *schema_map_[schema_id], path);
- return;
- }
-
- if (trace_)
- wcout << "importing " << rel_path << endl;
-
- if (XML::AutoPtr<Xerces::DOMDocument> d = dom (abs_path, false))
- {
- XML::Element r (d->getDocumentElement ());
- String ns (trim (r["targetNamespace"]));
-
- if (trace_)
- wcout << "target namespace: " << ns << endl;
-
- Schema& s (s_->new_node<Schema> (rel_path, r.line (), r.column ()));
- s_->new_edge<Implies> (s, *xml_schema_, xml_schema_path_);
- s_->new_edge<Imports> (*cur_, s, path);
-
- schema_map_[schema_id] = &s;
- s.context ().set ("absolute-path", abs_path);
-
- Schema* old_cur (cur_);
- bool old_cur_chameleon (cur_chameleon_);
- cur_ = &s;
- cur_chameleon_ = false;
-
- {
- file_stack_.push (PathPair (rel_path, abs_path));
-
- {
- push_scope (
- s_->new_node<Namespace> (file (), r.line (), r.column ()));
- s_->new_edge<Names> (*cur_, scope (), ns);
-
- {
- schema (r);
- }
-
- pop_scope ();
- }
-
- file_stack_.pop ();
- }
-
- cur_chameleon_ = old_cur_chameleon;
- cur_ = old_cur;
-
- dom_docs_->push_back (d);
- }
- }
-
- void Parser::Impl::
- include (XML::Element const& i)
- {
- NarrowString loc (
- trim (
- XML::transcode_to_narrow (
- i.dom_element ()->getAttribute (
- XML::XMLChString ("schemaLocation").c_str ()))));
-
- if (loc_translator_)
- loc = loc_translator_->translate (loc);
-
- Path path, rel_path, abs_path;
- try
- {
- path = Path (loc);
-
- if (path.absolute ())
- {
- abs_path = rel_path = path;
- abs_path.normalize ();
- }
- else
- {
- // Do normalize() before complete() to avoid hitting system path
- // limits with '..' directories.
- //
- abs_path = rel_path = file ().directory () / path;
- abs_path.normalize ().complete ();
- }
- }
- catch (InvalidPath const&)
- {
- wcerr << file () << ":" << i.line () << ":" << i.column () << ": "
- << "error: '" << loc.c_str () << "' is not a valid "
- << "filesystem path" << endl;
-
- valid_ = false;
- return;
- }
-
- // Included schema should have the same namespace as ours.
- //
- SchemaId schema_id (abs_path, cur_ns ().name ());
-
- if (schema_map_.find (schema_id) != schema_map_.end ())
- {
- Schema& s (*schema_map_[schema_id]);
-
- // Chemeleon inclusion results in a new Schema node for every
- // namespace. As a result, such a Schema node can only be
- // Source'ed. I use this property to decide which edge to use.
- //
-
- if (s.used_p () && s.used_begin ()->is_a<Sources> ())
- s_->new_edge<Sources> (*cur_, s, path);
- else
- s_->new_edge<Includes> (*cur_, s, path);
-
- return;
- }
-
- if (trace_)
- wcout << "including " << rel_path << endl;
-
- if (XML::AutoPtr<Xerces::DOMDocument> d = dom (abs_path, false))
- {
- XML::Element r (d->getDocumentElement ());
- String ns (trim (r["targetNamespace"])), cur_ns;
-
- Schema& s (s_->new_node<Schema> (rel_path, r.line (), r.column ()));
- s_->new_edge<Implies> (s, *xml_schema_, xml_schema_path_);
-
- schema_map_[schema_id] = &s;
- s.context ().set ("absolute-path", abs_path);
-
- bool chameleon (false);
-
- if (ns.empty () && !(cur_ns = (cur_->names_begin ())->name ()).empty ())
- {
- // Chameleon.
- //
- ns = cur_ns;
- s_->new_edge<Sources> (*cur_, s, path);
- chameleon = true;
-
- if (trace_)
- wcout << "handling chameleon schema" << endl;
- }
- else
- s_->new_edge<Includes> (*cur_, s, path);
-
- if (trace_)
- wcout << "target namespace: " << ns << endl;
-
- Schema* old_cur (cur_);
- bool old_cur_chameleon (cur_chameleon_);
- cur_ = &s;
- cur_chameleon_ = chameleon;
-
- {
- file_stack_.push (PathPair (rel_path, abs_path));
-
- {
- push_scope (
- s_->new_node<Namespace> (file (), r.line (), r.column ()));
- s_->new_edge<Names> (*cur_, scope (), ns);
-
- {
- schema (r);
- }
-
- pop_scope ();
- }
-
- file_stack_.pop ();
- }
-
- cur_chameleon_ = old_cur_chameleon;
- cur_ = old_cur;
-
- dom_docs_->push_back (d);
- }
- }
-
- void Parser::Impl::
- element_group (XML::Element const& g, bool in_compositor)
- {
- if (String name = trim (g["name"]))
- {
- ElementGroup& group (
- s_->new_node<ElementGroup> (file (), g.line (), g.column ()));
-
- s_->new_edge<Names> (scope (), group, name);
-
- push_scope (group);
- push (g);
-
- annotation (false);
-
- XML::Element e (next ());
-
- name = e.name ();
-
- if (trace_)
- wcout << name << endl;
-
- Compositor* c (0);
-
- if (name == L"all") c = all (e); else
- if (name == L"choice") c = choice (e, false); else
- if (name == L"sequence") c = sequence (e, false); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'all', 'choice' or 'sequence' "
- << "instead of '" << name << "'" << endl;
-
- valid_ = false;
- }
-
- // Group's immediate compositor always has cardinality 1,1.
- //
- if (c)
- s_->new_edge<ContainsCompositor> (group, *c, 1, 1);
-
- pop ();
- pop_scope ();
- }
- else if (String ref = trim (g["ref"]))
- {
- if (trace_)
- wcout << "element-group-ref " << ref << endl;
-
- try
- {
- String uq_name (unqualified_name (ref));
- String ns_name (namespace_name (g, ref));
-
- // In order to avoid code duplication we are going to let the
- // resolver handle this case.
- //
- if (trace_)
- wcout << "deferring resolution of group name '" << uq_name
- << "' inside namespace '" << ns_name << "'"
- << " until later" << endl;
-
- if (in_compositor)
- {
- Compositor& c (compositor ());
-
- unsigned long min (parse_min (trim (g["minOccurs"])));
- unsigned long max (parse_max (trim (g["maxOccurs"])));
-
- ElementGroupRef ref (
- uq_name, ns_name,
- min,
- max == unbounded ? 0 : max,
- c,
- scope ());
-
- if (!c.context ().count ("element-group-refs"))
- c.context ().set ("element-group-refs", ElementGroupRefs ());
-
- c.context ().get<ElementGroupRefs> (
- "element-group-refs").push_back (ref);
- }
- else
- {
- // This is a group-ref directly in complexType.
- //
-
- Scope& s (scope ());
-
- unsigned long min (parse_min (trim (g["minOccurs"])));
- unsigned long max (parse_max (trim (g["maxOccurs"])));
-
- ElementGroupRef ref (
- uq_name, ns_name, min, max == unbounded ? 0 : max, s);
-
- s.context ().set ("element-group-ref", ref);
- }
- }
- catch (NotNamespace const& ex)
- {
- if (valid_)
- {
- wcerr << file () << ":" << g.line () << ":" << g.column () << ": "
- << "ice: unable to resolve namespace '" << ex.ns () << "'"
- << endl;
-
- abort ();
- }
- }
- catch (XML::NoMapping const& ex)
- {
- wcerr << file () << ":" << g.line () << ":" << g.column () << ": "
- << "error: unable to resolve namespace prefix '" << ex.prefix ()
- << "' in '" << ref << "'" << endl;
-
- valid_ = false;
- }
- }
- else
- {
- wcerr << file () << ":" << g.line () << ":" << g.column () << ": "
- << "error: 'name' or 'ref' attribute is missing in group "
- << "declaration" << endl;
-
- valid_ = false;
-
- return;
- }
- }
-
- //@@ Need RAII for push/pop.
- //
-
- Type* Parser::Impl::
- simple_type (XML::Element const& t)
- {
- Type* r (0);
-
- push (t);
-
- Annotation* a (annotation (true));
-
- XML::Element e (next ());
-
- String name (e.name ());
-
- if (name == L"list") r = list (e, t); else
- if (name == L"union") r = union_ (e, t); else
- if (name == L"restriction") r = restriction (e, t); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'list', 'union', or 'restriction' "
- << "instead of '" << name << "'" << endl;
-
- valid_ = false;
- }
-
- if (r != 0 && a != 0)
- s_->new_edge<Annotates> (*a, *r);
-
- pop ();
-
- return r;
- }
-
- SemanticGraph::Type* Parser::Impl::
- list (XML::Element const& l, XML::Element const& t)
- {
- if (trace_)
- wcout << "list" << endl;
-
- List& node (s_->new_node<List> (file (), t.line (), t.column ()));
-
- if (String item_type = trim (l["itemType"]))
- {
- if (trace_)
- wcout << "item type: " << fq_name (l, item_type) << endl;
-
- set_type<Arguments> (item_type, l, node);
- }
- else
- {
- // Anonymous list item type.
- //
- push (l);
-
- annotation (false);
-
- if (more ())
- {
- XML::Element e (next ());
-
- String name (e.name ());
-
- if (trace_)
- wcout << name << endl;
-
- Type* t (0);
-
- if (name == L"simpleType") t = simple_type (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'simpleType' instead of "
- << "'" << e.name () << "'" << endl;
-
- valid_ = false;
- }
-
- if (t)
- s_->new_edge<Arguments> (*t, node);
- }
- else
- {
- wcerr << file () << ":" << l.line () << ":" << l.column () << ": "
- << "error: expected 'itemType' attribute or 'simpleType' "
- << "nested element" << endl;
-
- valid_ = false;
- }
-
- pop ();
- }
-
- if (String name = trim (t["name"]))
- s_->new_edge<Names> (scope (), node, name);
-
- return &node;
- }
-
- namespace
- {
- //
- // List parsing utility functions.
- //
-
- // Find first non-space character.
- //
- size_t
- find_ns (const wchar_t* s, size_t size, size_t pos)
- {
- while (pos < size &&
- (s[pos] == 0x20 || // space
- s[pos] == 0x0D || // carriage return
- s[pos] == 0x09 || // tab
- s[pos] == 0x0A))
- ++pos;
-
- return pos < size ? pos : String::npos;
- }
-
- // Find first space character.
- //
- size_t
- find_s (const wchar_t* s, size_t size, size_t pos)
- {
- while (pos < size &&
- s[pos] != 0x20 && // space
- s[pos] != 0x0D && // carriage return
- s[pos] != 0x09 && // tab
- s[pos] != 0x0A)
- ++pos;
-
- return pos < size ? pos : String::npos;
- }
- }
-
- SemanticGraph::Type* Parser::Impl::
- union_ (XML::Element const& u, XML::Element const& t)
- {
- if (trace_)
- wcout << "union" << endl;
-
- Union& node (s_->new_node<Union> (file (), t.line (), t.column ()));
-
- bool has_members (false);
-
- if (String members = trim (u["memberTypes"]))
- {
- // Don't bother trying to resolve member types at this point
- // since the order is important so we would have to insert
- // the late resolutions into specific places. It is simpler
- // to just do the whole resolution later.
- //
- const wchar_t* data (members.c_str ());
- size_t size (members.size ());
-
- UnionMemberTypes* m (0);
-
- // Traverse the type list while logically collapsing spaces.
- //
- for (size_t i (find_ns (data, size, 0)); i != String::npos;)
- {
- String s;
- size_t j (find_s (data, size, i));
-
- if (j != String::npos)
- {
- s = String (data + i, j - i);
- i = find_ns (data, size, j);
- }
- else
- {
- // Last item.
- //
- s = String (data + i, size - i);
- i = String::npos;
- }
-
- if (trace_)
- wcout << "member type: " << fq_name (u, s) << endl;
-
- if (m == 0)
- {
- node.context ().set ("union-member-types", UnionMemberTypes ());
- m = &node.context ().get<UnionMemberTypes> ("union-member-types");
- }
-
- try
- {
- m->push_back (
- UnionMemberType (
- namespace_name (u, s), unqualified_name (s)));
- }
- catch (XML::NoMapping const& ex)
- {
- wcerr << file () << ":" << u.line () << ":" << u.column () << ": "
- << "error: unable to resolve namespace prefix "
- << "'" << ex.prefix () << "' in '" << s << "'" << endl;
-
- valid_ = false;
- }
- }
-
- has_members = (m != 0);
- }
-
- // Handle anonymous members.
- //
- push (u);
-
- annotation (false);
-
- while (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
-
- if (trace_)
- wcout << name << endl;
-
- Type* t (0);
-
- if (name == L"simpleType") t = simple_type (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'simpleType' instead of "
- << "'" << e.name () << "'" << endl;
-
- valid_ = false;
- }
-
- if (t)
- s_->new_edge<Arguments> (*t, node);
- }
-
- pop ();
-
- if (node.argumented_begin () == node.argumented_end () && !has_members)
- {
- wcerr << file () << ":" << u.line () << ":" << u.column () << ": "
- << "error: expected 'memberTypes' attribute or 'simpleType' "
- << "nested element" << endl;
-
- valid_ = false;
- }
-
- if (String name = trim (t["name"]))
- s_->new_edge<Names> (scope (), node, name);
-
- return &node;
- }
-
- Type* Parser::Impl::
- restriction (XML::Element const& r, XML::Element const& t)
- {
- String base (trim (r["base"]));
- Type* base_type (0);
-
- if (base)
- {
- if (trace_)
- wcout << "restriction base: " << fq_name (r, base) << endl;
- }
-
- Type* rv (0);
-
- push (r);
-
- annotation (false);
-
- bool enum_ (false);
-
- if (!base)
- {
- // Anonymous base type.
- //
- if (more ())
- {
- XML::Element e (next ());
-
- String name (e.name ());
-
- if (trace_)
- wcout << name << endl;
-
- if (name == L"simpleType") base_type = simple_type (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'simpleType' instead of "
- << "'" << e.name () << "'" << endl;
-
- valid_ = false;
- }
- }
- else
- {
- wcerr << file () << ":" << r.line () << ":" << r.column () << ": "
- << "error: expected 'base' attribute or 'simpleType' "
- << "nested element" << endl;
-
- valid_ = false;
- }
-
- if (!valid_)
- {
- pop ();
- return 0;
- }
- }
-
- Facets facets;
- Restricts* restricts (0);
- String pattern;
-
- while (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
-
- if (name == L"enumeration")
- {
- // Enumeration
- //
- if (enum_)
- enumeration (e);
- else
- {
- // First
- //
- enum_ = true;
-
- Enumeration& node (
- s_->new_node<Enumeration> (file (), t.line (), t.column ()));
-
- if (base_type)
- restricts = &s_->new_edge<Restricts> (node, *base_type);
- else
- restricts = set_type<Restricts> (base, r, node);
-
- if (String name = trim (t["name"]))
- s_->new_edge<Names> (scope (), static_cast<Nameable&> (node), name);
-
- rv = &node;
- push_scope (node);
- enumeration (e);
- }
- }
- else if (name == L"minExclusive" ||
- name == L"minInclusive" ||
- name == L"maxExclusive" ||
- name == L"maxInclusive" ||
- name == L"totalDigits" ||
- name == L"fractionDigits" ||
- name == L"length" ||
- name == L"minLength" ||
- name == L"maxLength" ||
- name == L"whiteSpace")
- {
- facets[name] = trim (e["value"]);
- }
- else if (name == L"pattern")
- {
- if (pattern)
- pattern += L'|';
-
- pattern += e["value"];
- }
- else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unexpected element '" << name << "' in "
- << "simple type restriction" << endl;
-
- valid_ = false;
- }
- }
-
- if (pattern)
- facets[L"pattern"] = pattern;
-
- if (enum_)
- pop_scope ();
- else
- {
- Complex& node (s_->new_node<Complex> (file (), t.line (), t.column ()));
-
- if (base_type)
- restricts = &s_->new_edge<Restricts> (node, *base_type);
- else
- restricts = set_type<Restricts> (base, r, node);
-
- if (String name = trim (t["name"]))
- s_->new_edge<Names> (scope (), node, name);
-
- rv = &node;
- }
-
- if (!facets.empty ())
- {
- if (restricts)
- copy_facets (*restricts, facets);
- else
- rv->context ().set ("facets", facets);
- }
-
- pop ();
-
- return rv;
- }
-
- void Parser::Impl::
- enumeration (XML::Element const& e)
- {
- String value (e["value"]);
-
- if (trace_)
- wcout << "enumeration value: " << value << endl;
-
- push (e);
- Annotation* a (annotation (true));
- pop ();
-
- Enumerator& node (
- s_->new_node<Enumerator> (file (), e.line (), e.column ()));
-
- s_->new_edge<Names> (scope (), node, value);
- s_->new_edge<Belongs> (node, dynamic_cast<Type&>(scope ()));
-
- if (a != 0)
- s_->new_edge<Annotates> (*a, node);
-
- }
-
- Type* Parser::Impl::
- complex_type (XML::Element const& t)
- {
- Type* r (0);
-
- Complex& node (s_->new_node<Complex> (file (), t.line (), t.column ()));
-
- if (String m = trim (t["mixed"]))
- node.mixed_p (m == L"true" || m == L"1");
-
- if (String name = trim (t["name"]))
- s_->new_edge<Names> (scope (), node, name);
-
- r = &node;
-
- push_scope (node);
- push (t);
-
- if (Annotation* a = annotation (true))
- s_->new_edge<Annotates> (*a, node);
-
- if (more ())
- {
- XML::Element e (next ());
-
- String name (e.name ());
-
- if (trace_)
- wcout << name << endl;
-
- if (name == L"simpleContent") simple_content (e); else
- if (name == L"complexContent") complex_content (e, node); else
- {
- Compositor* c (0);
-
- if (name == L"all") c = all (e); else
- if (name == L"choice") c = choice (e, false); else
- if (name == L"sequence") c = sequence (e, false); else
- if (name == L"attribute") attribute (e, false); else
- if (name == L"anyAttribute") any_attribute (e); else
- if (name == L"group") element_group (e, false); else
- if (name == L"attributeGroup") attribute_group (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unexpected element '" << name << "'" << endl;
-
- valid_ = false;
- }
-
- if (c)
- {
- unsigned long min (parse_min (trim (e["minOccurs"])));
- unsigned long max (parse_max (trim (e["maxOccurs"])));
-
- if (!(min == 0 && max == 0))
- s_->new_edge<ContainsCompositor> (
- node, *c, min, max == unbounded ? 0 : max);
- }
-
- while (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
-
- if (name == L"attribute") attribute (e, false); else
- if (name == L"anyAttribute") any_attribute (e); else
- if (name == L"attributeGroup") attribute_group (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'attribute', 'anyAttribute', or "
- << "'attributeGroup' instead of '" << name << "'" << endl;
-
- valid_ = false;
- }
- }
- }
- }
-
- pop ();
- pop_scope ();
-
- return r;
- }
-
- All* Parser::Impl::
- all (XML::Element const& a)
- {
- // 'all' cannot be nested inside 'choice' or 'sequence', nor
- // can it contain any of those. The only valid cardinality
- // values for 'all' are min=0,1 and max=1.
- //
- All& node (s_->new_node<All> (file (), a.line (), a.column ()));
-
- push_compositor (node);
- push (a);
-
- if (Annotation* a = annotation (true))
- s_->new_edge<Annotates> (*a, node);
-
- while (more ())
- {
- XML::Element e (next ());
-
- String name (e.name ());
-
- if (name == L"element") element (e, false); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'element' "
- << "instead of '" << name << "'" << endl;
-
- valid_ = false;
- }
- }
-
- pop ();
- pop_compositor ();
-
- return &node;
- }
-
- Choice* Parser::Impl::
- choice (XML::Element const& c, bool in_compositor)
- {
- Choice& node (s_->new_node<Choice> (file (), c.line (), c.column ()));
-
- if (in_compositor)
- {
- unsigned long min (parse_min (trim (c["minOccurs"])));
- unsigned long max (parse_max (trim (c["maxOccurs"])));
-
- if (!(min == 0 && max == 0))
- s_->new_edge<ContainsParticle> (
- compositor (), node, min, max == unbounded ? 0 : max);
- }
-
- push_compositor (node);
- push (c);
-
- if (Annotation* a = annotation (true))
- s_->new_edge<Annotates> (*a, node);
-
- while (more ())
- {
- XML::Element e (next ());
-
- String name (e.name ());
-
- if (name == L"any") any (e); else
- if (name == L"choice") choice (e, true); else
- if (name == L"element") element (e, false); else
- if (name == L"sequence") sequence (e, true); else
- if (name == L"group") element_group (e, true); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'any', 'group', 'choice', 'sequence', "
- << "or 'element' instead of '" << name << "'" << endl;
-
- valid_ = false;
- }
- }
-
- pop ();
- pop_compositor ();
-
- return &node;
- }
-
- Sequence* Parser::Impl::
- sequence (XML::Element const& s, bool in_compositor)
- {
- Sequence& node (s_->new_node<Sequence> (file (), s.line (), s.column ()));
-
- if (in_compositor)
- {
- unsigned long min (parse_min (trim (s["minOccurs"])));
- unsigned long max (parse_max (trim (s["maxOccurs"])));
-
- if (!(min == 0 && max == 0))
- s_->new_edge<ContainsParticle> (
- compositor (), node, min, max == unbounded ? 0 : max);
- }
-
- push_compositor (node);
- push (s);
-
- if (Annotation* a = annotation (true))
- s_->new_edge<Annotates> (*a, node);
-
- while (more ())
- {
- XML::Element e (next ());
-
- String name (e.name ());
-
- if (name == L"any") any (e); else
- if (name == L"choice") choice (e, true); else
- if (name == L"element") element (e, false); else
- if (name == L"sequence") sequence (e, true); else
- if (name == L"group") element_group (e, true); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'any', 'group', 'choice', 'sequence', "
- << "or 'element' instead of '" << name << "'" << endl;
-
- valid_ = false;
- }
- }
-
- pop ();
- pop_compositor ();
-
- return &node;
- }
-
- void Parser::Impl::
- simple_content (XML::Element const& c)
- {
- push (c);
-
- annotation (false);
-
- XML::Element e (next ());
- String name (e.name ());
-
- if (name == L"extension") simple_content_extension (e); else
- if (name == L"restriction") simple_content_restriction (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'extension' or 'restriction' instead of "
- << "'" << name << "'" << endl;
-
- valid_ = false;
- }
-
- pop ();
- }
-
- void Parser::Impl::
- complex_content (XML::Element const& c, Complex& type)
- {
- if (String m = trim (c["mixed"]))
- type.mixed_p (m == L"true" || m == L"1");
-
- push (c);
-
- annotation (false);
-
- XML::Element e (next ());
- String name (e.name ());
-
- if (name == L"extension") complex_content_extension (e, type); else
- if (name == L"restriction") complex_content_restriction (e, type); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'extension' or 'restriction' instead of "
- << "'" << name << "'" << endl;
-
- valid_ = false;
- }
-
- pop ();
- }
-
- void Parser::Impl::
- simple_content_extension (XML::Element const& e)
- {
- if (trace_)
- wcout << "extension base: " << fq_name (e, e["base"]) << endl;
-
- set_type<Extends> (trim (e["base"]), e, dynamic_cast<Complex&> (scope ()));
-
- push (e);
-
- annotation (false);
-
- while (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
-
- if (name == L"attribute") attribute (e, false); else
- if (name == L"anyAttribute") any_attribute (e); else
- if (name == L"attributeGroup") attribute_group (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'attribute', 'anyAttribute', or "
- << "'attributeGroup' instead of '" << name << "'" << endl;
-
- valid_ = false;
- }
- }
-
- pop ();
- }
-
- void Parser::Impl::
- simple_content_restriction (XML::Element const& r)
- {
- String base (trim (r["base"]));
-
- if (trace_ && base)
- wcout << "restriction base: " << fq_name (r, base) << endl;
-
- push (r);
- annotation (false);
-
- if (!base)
- {
- // Anonymous base type.
- //
- if (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
-
- if (trace_)
- wcout << name << endl;
-
- if (name == L"simpleType") simple_type (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'simpleType' instead of "
- << "'" << e.name () << "'" << endl;
-
- valid_ = false;
- }
- }
- else
- {
- wcerr << file () << ":" << r.line () << ":" << r.column () << ": "
- << "error: expected 'base' attribute or 'simpleType' "
- << "nested element" << endl;
-
- valid_ = false;
- }
-
- if (!valid_)
- {
- pop ();
- return;
- }
- }
-
- Facets facets;
- String pattern;
-
- while (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
-
- if (name == L"simpleType")
- {
- // This is a "superimposed" restriction where the base
- // content is restricted by specifying another simple
- // type. The attributes are restricted in the ussual
- // way. So in effect we have kind of two base classes.
- // I guess the way to handle this one day would be to
- // copy all the facets from the base-to-this-type
- // part of the hierarchy (will need to "know" facets
- // for the built-in type restrictions as well). For
- // now just ignore it.
- //
- }
- else if (name == L"enumeration")
- {
- // Right now our sementic graph cannot represent enumerations
- // with attributes so we are going to ignore enumerators for
- // now.
- //
- }
- else if (name == L"minExclusive" ||
- name == L"minInclusive" ||
- name == L"maxExclusive" ||
- name == L"maxInclusive" ||
- name == L"totalDigits" ||
- name == L"fractionDigits" ||
- name == L"length" ||
- name == L"minLength" ||
- name == L"maxLength" ||
- name == L"whiteSpace")
- {
- facets[name] = trim (e["value"]);
- }
- else if (name == L"pattern")
- {
- if (pattern)
- pattern += L'|';
-
- pattern += e["value"];
- }
- else if (name == L"attribute")
- {
- if (proper_restriction_)
- attribute (e, false);
- }
- else if (name == L"anyAttribute")
- {
- if (proper_restriction_)
- any_attribute (e);
- }
- else if (name == L"attributeGroup")
- {
- if (proper_restriction_)
- attribute_group (e);
- }
- else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unexpected element '" << name << "' in "
- << "simple content restriction" << endl;
-
- valid_ = false;
- }
- }
-
- if (pattern)
- facets[L"pattern"] = pattern;
-
- Complex& type (dynamic_cast<Complex&> (scope ()));
- Restricts* restricts = set_type<Restricts> (base, r, type);
-
- if (!facets.empty ())
- {
- if (restricts)
- copy_facets (*restricts, facets);
- else
- type.context ().set ("facets", facets);
- }
-
- pop ();
- }
-
- void Parser::Impl::
- complex_content_extension (XML::Element const& e, Complex& type)
- {
- if (trace_)
- wcout << "extension base: " << fq_name (e, e["base"]) << endl;
-
- set_type<Extends> (trim (e["base"]), e, dynamic_cast<Complex&> (scope ()));
-
- push (e);
-
- annotation (false);
-
- if (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
- Compositor* c (0);
-
- if (name == L"all") c = all (e); else
- if (name == L"choice") c = choice (e, false); else
- if (name == L"sequence") c = sequence (e, false); else
- if (name == L"attribute") attribute (e, false); else
- if (name == L"anyAttribute") any_attribute (e); else
- if (name == L"group") element_group (e, false); else
- if (name == L"attributeGroup") attribute_group (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unexpected element '" << name << "'" << endl;
-
- valid_ = false;
- }
-
- if (c)
- {
- unsigned long min (parse_min (trim (e["minOccurs"])));
- unsigned long max (parse_max (trim (e["maxOccurs"])));
-
- if (!(min == 0 && max == 0))
- s_->new_edge<ContainsCompositor> (
- type, *c, min, max == unbounded ? 0 : max);
- }
-
- while (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
-
- if (name == L"attribute") attribute (e, false); else
- if (name == L"anyAttribute") any_attribute (e); else
- if (name == L"attributeGroup") attribute_group (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'attribute', 'anyAttribute', or "
- << "'attributeGroup' instead of '" << name << "'" << endl;
-
- valid_ = false;
- }
- }
- }
-
- pop ();
- }
-
- void Parser::Impl::
- complex_content_restriction (XML::Element const& e, Complex& type)
- {
- if (trace_)
- wcout << "restriction base: " << fq_name (e, e["base"]) << endl;
-
- set_type<Restricts> (
- trim (e["base"]),
- e,
- dynamic_cast<Complex&> (scope ()));
-
- // @@
- // For now we simply skip the contents unless the base is anyType
- // (or a trivial alias thereof). Checking for the trivial alias
- // is further complicated by the fact that it might not be defined
- // at this stage (forward inheritnace) so we will ignore that case
- // as well for now.
- //
- if (!proper_restriction_)
- {
- String base (trim (e["base"]));
- String uq_name (unqualified_name (base));
- String ns_name (namespace_name (e, base));
-
- if (ns_name != xsd || uq_name != L"anyType")
- return;
- }
-
- push (e);
-
- annotation (false);
-
- if (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
- Compositor* c (0);
-
- if (name == L"all") c = all (e); else
- if (name == L"choice") c = choice (e, false); else
- if (name == L"sequence") c = sequence (e, false); else
- if (name == L"attribute") attribute (e, false); else
- if (name == L"anyAttribute") any_attribute (e); else
- if (name == L"group") element_group (e, false); else
- if (name == L"attributeGroup") attribute_group (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unexpected element '" << name << "'" << endl;
-
- valid_ = false;
- }
-
- if (c)
- {
- unsigned long min (parse_min (trim (e["minOccurs"])));
- unsigned long max (parse_max (trim (e["maxOccurs"])));
-
- if (!(min == 0 && max == 0))
- s_->new_edge<ContainsCompositor> (
- type, *c, min, max == unbounded ? 0 : max);
- }
-
- while (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
-
- if (name == L"attribute") attribute (e, false); else
- if (name == L"anyAttribute") any_attribute (e); else
- if (name == L"attributeGroup") attribute_group (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'attribute', 'anyAttribute', or "
- << "'attributeGroup' instead of '" << name << "'" << endl;
-
- valid_ = false;
- }
- }
- }
-
- pop ();
- }
-
- void Parser::Impl::
- element (XML::Element const& e, bool global)
- {
- bool qualified (global ? true : qualify_element_);
-
- if (String form = trim (e["form"]))
- qualified = form == L"qualified";
-
- if (trace_)
- wcout << "element qualified: " << qualified << endl;
-
- if (String name = trim (e["name"]))
- {
- if (trace_)
- wcout << "element name '" << name << "'" << endl;
-
- Element& node (
- s_->new_node<Element> (
- file (), e.line (), e.column (), global, qualified));
-
- if (!global)
- {
- unsigned long min (parse_min (trim (e["minOccurs"])));
- unsigned long max (parse_max (trim (e["maxOccurs"])));
-
- if (!(min == 0 && max == 0))
- {
- s_->new_edge<Names> (scope (), node, name);
-
- s_->new_edge<ContainsParticle> (
- compositor (), node, min, max == unbounded ? 0 : max);
- }
- }
- else
- s_->new_edge<Names> (scope (), node, name);
-
- if (qualified)
- s_->new_edge<BelongsToNamespace> (node, cur_ns ());
-
- // Default and fixed values are mutually exclusive.
- //
- if (e.attribute_p ("fixed"))
- node.fixed (e.attribute ("fixed"));
- else if (e.attribute_p ("default"))
- node.default_ (e.attribute ("default"));
-
- if (node.default_p ())
- {
- node.context ().set ("dom-node", e.dom_element ());
- default_values_.push_back (&node);
- }
-
- bool subst (false);
- if (global)
- {
- if (String sg = trim (e["substitutionGroup"]))
- {
- if (trace_)
- wcout << "substitutes " << sg << endl;
-
- subst = true;
-
- try
- {
- String uq_name (unqualified_name (sg));
- String ns_name (namespace_name (e, sg));
-
- node.context ().set ("substitution-ns-name", ns_name);
- node.context ().set ("substitution-uq-name", uq_name);
- }
- catch (XML::NoMapping const& ex)
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unable to resolve namespace prefix '"
- << ex.prefix () << "' in '" << sg << "'" << endl;
-
- valid_ = false;
- }
- }
- }
-
- if (String type = trim (e["type"]))
- {
- if (trace_)
- wcout << "element type " << fq_name (e, type) << endl;
-
- set_type<Belongs> (type, e, node);
-
- // Parse annotation.
- //
- push (e);
-
- if (Annotation* a = annotation (true))
- s_->new_edge<Annotates> (*a, node);
-
- pop ();
- }
- else
- {
- // Looks like an anonymous type.
- //
- push (e);
-
- if (Annotation* a = annotation (true))
- s_->new_edge<Annotates> (*a, node);
-
- if (more ())
- {
- XML::Element e (next ());
-
- String name (e.name ());
-
- if (trace_)
- wcout << name << endl;
-
- Type* t (0);
-
- if (name == L"simpleType") t = simple_type (e); else
- if (name == L"complexType") t = complex_type (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'simpleType' or 'complexType' "
- << "instead of '" << e.name () << "'" << endl;
-
- valid_ = false;
- }
-
- if (t)
- s_->new_edge<Belongs> (node, *t);
- }
- // By default the type is anyType unless this element is a
- // member of a substitution group, in which case it has the
- // same type as the element it substiutes.
- //
- else if (!subst)
- {
- if (!is_disabled ("F001"))
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "warning F001: element '" << name << "' is implicitly "
- << "of anyType" << endl;
-
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "info: did you forget to specify 'type' attribute?"
- << endl;
- }
-
- String prefix (ns_prefix (e, xsd));
- type = prefix + (prefix.empty () ? L"" : L":") + L"anyType";
-
- set_type<Belongs> (type, e, node);
- }
-
- pop ();
- }
- }
- else if (String ref = trim (e["ref"]))
- {
- Element& node (
- s_->new_node<Element> (
- file (), e.line (), e.column (), true, true));
-
- unsigned long min (parse_min (trim (e["minOccurs"])));
- unsigned long max (parse_max (trim (e["maxOccurs"])));
-
- // Default and fixed values are mutually exclusive.
- //
- if (e.attribute_p ("fixed"))
- node.fixed (e.attribute ("fixed"));
- else if (e.attribute_p ("default"))
- node.default_ (e.attribute ("default"));
-
- if (node.default_p ())
- {
- node.context ().set ("dom-node", e.dom_element ());
- default_values_.push_back (&node);
- }
-
- // Parse annotation.
- //
- push (e);
-
- if (Annotation* a = annotation (true))
- s_->new_edge<Annotates> (*a, node);
-
- pop ();
-
- if (!(min == 0 && max == 0))
- {
- // Ref can only be in compositor.
- //
- s_->new_edge<ContainsParticle> (
- compositor (), node, min, max == unbounded ? 0 : max);
-
- // Try to resolve the prototype.
- //
- try
- {
- String uq_name (unqualified_name (ref));
- String ns_name (namespace_name (e, ref));
-
- s_->new_edge<Names> (scope (), node, uq_name);
-
- Element& prot (resolve<Element> (ns_name, uq_name, *s_, *cache_));
- s_->new_edge<BelongsToNamespace> (node, prot.namespace_ ());
-
- // Copy substitution group information if any.
- //
- if (prot.context ().count ("substitution-ns-name"))
- {
- node.context ().set (
- "substitution-ns-name",
- prot.context ().get<String> ("substitution-ns-name"));
-
- node.context ().set (
- "substitution-uq-name",
- prot.context ().get<String> ("substitution-uq-name"));
- }
-
- // Transfer default and fixed values if the ref declaration hasn't
- // defined its own.
- //
- if (!node.default_p ())
- {
- if (prot.fixed_p ())
- node.fixed (prot.value ());
- else if (prot.default_p ())
- node.default_ (prot.value ());
-
- if (node.default_p ())
- {
- node.context ().set (
- "dom-node",
- prot.context ().get<Xerces::DOMElement*> ("dom-node"));
- default_values_.push_back (&node);
- }
- }
-
- // Transfer annotation if the ref declaration hasn't defined its own.
- //
- if (!node.annotated_p () && prot.annotated_p ())
- s_->new_edge<Annotates> (prot.annotation (), node);
-
- // Set type information.
- //
- if (prot.typed_p ())
- {
- s_->new_edge<Belongs> (node, prot.type ());
- }
- else if (prot.context ().count ("type-ns-name"))
- {
- String ns_name (prot.context ().get<String> ("type-ns-name"));
- String uq_name (prot.context ().get<String> ("type-uq-name"));
-
- node.context ().set ("type-ns-name", ns_name);
- node.context ().set ("type-uq-name", uq_name);
- node.context ().set ("edge-type-id", type_id (typeid (Belongs)));
-
- if (trace_)
- wcout << "element '" << ref << "' is not typed" << endl
- << "deferring resolution until later" << endl;
- }
- else
- {
- // This could be a recursive reference to an element who's
- // (anonymous) type is being defined. We are going to let
- // resolver sort out this case.
- //
- node.context ().set ("instance-ns-name", ns_name);
- node.context ().set ("instance-uq-name", uq_name);
-
- if (trace_)
- wcout << "looks like a recursive reference to an element '"
- << ns_name << "#" << uq_name << "' which is being "
- << "defined" << endl
- << "deferring resolution until later" << endl;
- }
- }
- catch (NotNamespace const& ex)
- {
- if (valid_)
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "ice: unable to resolve namespace '" << ex.ns () << "'"
- << endl;
-
- abort ();
- }
- }
- catch (NotName const& ex)
- {
- node.context ().set ("instance-ns-name", ex.ns ());
- node.context ().set ("instance-uq-name", ex.name ());
-
- if (trace_)
- wcout << "unable to resolve name '" << ex.name ()
- << "' inside namespace '" << ex.ns () << "'" << endl
- << "deferring resolution until later" << endl;
- }
- catch (XML::NoMapping const& ex)
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unable to resolve namespace prefix '"
- << ex.prefix () << "' in '" << ref << "'" << endl;
-
- valid_ = false;
- }
- }
- }
- else
- {
- if (valid_)
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: 'name' or 'ref' attribute is missing in element "
- << "declaration" << endl;
- }
- }
- }
-
- SemanticGraph::Annotation* Parser::Impl::
- annotation (bool process)
- {
- Annotation* r (0);
-
- if (more ())
- {
- XML::Element e (next ());
-
- if (e.name () == L"annotation")
- {
- if (process)
- {
- push (e);
-
- while (more ())
- {
- XML::Element doc (next ());
-
- if (doc.name () == L"documentation")
- {
- using Xerces::DOMNode;
- using Xerces::DOMText;
- using Xerces::DOMElement;
-
- // Use first non-structured (text only) documentation element.
- //
- String text;
- bool struc (false);
- DOMElement* de (doc.dom_element());
-
- for (DOMNode* n (de->getFirstChild ());
- n != 0 && !struc;
- n = n->getNextSibling ())
- {
- switch (n->getNodeType ())
- {
- case DOMNode::TEXT_NODE:
- case DOMNode::CDATA_SECTION_NODE:
- {
- DOMText* t (static_cast<DOMText*> (n));
- text += XML::transcode (t->getData ());
- break;
- }
- case DOMNode::ELEMENT_NODE:
- {
- struc = true;
- break;
- }
- default:
- break; // ignore
- }
- }
-
- if (struc)
- continue;
-
- r = &s_->new_node<Annotation> (
- file (), e.line (), e.column (), text);
- break;
- }
- }
-
- pop ();
- }
- }
- else
- prev ();
- }
-
- return r;
- }
-
-
- void Parser::Impl::
- attribute (XML::Element const& a, bool global)
- {
- bool optional (true);
-
- String use (trim (a["use"]));
-
- if (use == L"prohibited")
- return;
- else if (use == L"required")
- optional = false;
-
- bool qualified (global ? true : qualify_attribute_);
-
- if (String form = trim (a["form"]))
- qualified = form == L"qualified";
-
- if (String name = trim (a["name"]))
- {
- if (trace_)
- wcout << "attribute '" << name << "'" << endl;
-
- Attribute& node (
- s_->new_node<Attribute> (
- file (), a.line (), a.column (), optional, global, qualified));
-
- s_->new_edge<Names> (scope (), node, name);
-
- if (qualified)
- s_->new_edge<BelongsToNamespace> (node, cur_ns ());
-
-
- // Default and fixed values are mutually exclusive.
- //
- if (a.attribute_p ("fixed"))
- node.fixed (a.attribute ("fixed"));
- else if (a.attribute_p ("default"))
- node.default_ (a.attribute ("default"));
-
- if (node.default_p ())
- {
- node.context ().set ("dom-node", a.dom_element ());
- default_values_.push_back (&node);
- }
-
- if (String type = trim (a["type"]))
- {
- if (trace_)
- wcout << "attribute type: '" << fq_name (a, type) << "'" << endl;
-
- set_type<Belongs> (type, a, node);
-
- // Parse annotation.
- //
- push (a);
-
- if (Annotation* ann = annotation (true))
- s_->new_edge<Annotates> (*ann, node);
-
- pop ();
- }
- else
- {
- // Looks like an anonymous type.
- //
- push (a);
-
- if (Annotation* ann = annotation (true))
- s_->new_edge<Annotates> (*ann, node);
-
- if (more ())
- {
- XML::Element e (next ());
-
- String name (e.name ());
-
- if (trace_)
- wcout << name << endl;
-
- Type* t (0);
-
- if (name == L"simpleType") t = simple_type (e); else
- {
- wcerr << file () << ":" << a.line () << ":" << a.column () << ": "
- << "error: expected 'simpleType' instead of '" << e.name ()
- << "'" << endl;
-
- valid_ = false;
- }
-
- if (t)
- s_->new_edge<Belongs> (node, *t);
- }
- else
- {
- if (!is_disabled ("F002"))
- {
- wcerr << file () << ":" << a.line () << ":" << a.column () << ": "
- << "warning F002: attribute '" << name << "' is implicitly "
- << "of anySimpleType" << endl;
-
- wcerr << file () << ":" << a.line () << ":" << a.column () << ": "
- << "info: did you forget to specify 'type' attribute?"
- << endl;
- }
-
- // anySimpleType
- //
- String prefix (ns_prefix (a, xsd));
- type = prefix + (prefix.empty () ? L"" : L":") + L"anySimpleType";
-
- set_type<Belongs> (type, a, node);
- }
-
- pop ();
- }
- }
- else if (String ref = trim (a["ref"]))
- {
- Attribute& node (
- s_->new_node<Attribute> (
- file (), a.line (), a.column (), optional, true, true));
-
-
- // Default and fixed values are mutually exclusive.
- //
- if (a.attribute_p ("fixed"))
- node.fixed (a.attribute ("fixed"));
- else if (a.attribute_p ("default"))
- node.default_ (a.attribute ("default"));
-
- if (node.default_p ())
- {
- node.context ().set ("dom-node", a.dom_element ());
- default_values_.push_back (&node);
- }
-
- // Parse annotation.
- //
- push (a);
-
- if (Annotation* ann = annotation (true))
- s_->new_edge<Annotates> (*ann, node);
-
- pop ();
-
- try
- {
- String uq_name (unqualified_name (ref));
- String ns_name (namespace_name (a, ref));
-
- s_->new_edge<Names> (scope (), node, uq_name);
-
- Attribute& prot (resolve<Attribute> (ns_name, uq_name, *s_, *cache_));
- s_->new_edge<BelongsToNamespace> (node, prot.namespace_ ());
-
- // Transfer default and fixed values if the ref declaration hasn't
- // defined its own.
- //
- if (!node.default_p ())
- {
- // Default value applies only if this attribute is optional.
- //
- if (prot.fixed_p ())
- node.fixed (prot.value ());
- else if (optional && prot.default_p ())
- node.default_ (prot.value ());
-
- if (node.default_p ())
- {
- node.context ().set (
- "dom-node",
- prot.context ().get<Xerces::DOMElement*> ("dom-node"));
- default_values_.push_back (&node);
- }
- }
-
- // Transfer annotation if the ref declaration hasn't defined its own.
- //
- if (!node.annotated_p () && prot.annotated_p ())
- s_->new_edge<Annotates> (prot.annotation (), node);
-
- // Set type.
- //
- if (prot.typed_p ())
- {
- s_->new_edge<Belongs> (node, prot.type ());
- }
- else if (prot.context ().count ("type-ns-name"))
- {
- String ns_name (prot.context ().get<String> ("type-ns-name"));
- String uq_name (prot.context ().get<String> ("type-uq-name"));
-
- node.context ().set ("type-ns-name", ns_name);
- node.context ().set ("type-uq-name", uq_name);
- node.context ().set ("edge-type-id", type_id (typeid (Belongs)));
-
- if (trace_)
- wcout << "attribute '" << ref << "' is not typed" << endl
- << "deferring resolution until later" << endl;
- }
- else
- {
- // This could be a recursive reference to an attribute who's
- // (anonymous) type is being defined. We are going to let
- // resolver sort out this case.
- //
- node.context ().set ("instance-ns-name", ns_name);
- node.context ().set ("instance-uq-name", uq_name);
-
- if (trace_)
- wcout << "looks like a recursive reference to an attribute '"
- << ns_name << "#" << uq_name << "' which is being "
- << "defined" << endl
- << "deferring resolution until later" << endl;
- }
- }
- catch (NotNamespace const& ex)
- {
- if (valid_)
- {
- wcerr << file () << ":" << a.line () << ":" << a.column () << ": "
- << "ice: unable to resolve namespace '" << ex.ns () << "'"
- << endl;
- abort ();
- }
- }
- catch (NotName const& ex)
- {
- node.context ().set ("instance-ns-name", ex.ns ());
- node.context ().set ("instance-uq-name", ex.name ());
-
- if (trace_)
- wcout << "unable to resolve name '" << ex.name ()
- << "' inside namespace '" << ex.ns () << "'" << endl
- << "deferring resolution until later" << endl;
- }
- catch (XML::NoMapping const& ex)
- {
- wcerr << file () << ":" << a.line () << ":" << a.column () << ": "
- << "error: unable to resolve namespace prefix '"
- << ex.prefix () << "' in '" << ref << "'" << endl;
-
- valid_ = false;
- }
- }
- else
- {
- if (valid_)
- {
- wcerr << file () << ":" << a.line () << ":" << a.column () << ": "
- << "error: 'name' or 'ref' attribute is missing in attribute "
- << "declaration" << endl;
- }
- }
- }
-
- void Parser::Impl::
- attribute_group (XML::Element const& g)
- {
- if (String name = trim (g["name"]))
- {
- // Global definition.
- //
- if (trace_)
- wcout << "attributeGroup '" << name << "'" << endl;
-
- AttributeGroup& group (
- s_->new_node<AttributeGroup> (file (), g.line (), g.column ()));
- s_->new_edge<Names> (scope (), group, name);
-
- push_scope (group);
- push (g);
-
- annotation (false);
-
- while (more ())
- {
- XML::Element e (next ());
- String name (e.name ());
-
- if (trace_)
- wcout << name << endl;
-
- if (name == L"attribute") attribute (e, false); else
- if (name == L"anyAttribute") any_attribute (e); else
- if (name == L"attributeGroup") attribute_group (e); else
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: expected 'attribute', 'anyAttribute', or "
- << "'attributeGroup' instead of '" << name << "'" << endl;
-
- valid_ = false;
- }
- }
-
- pop ();
- pop_scope ();
- }
- else if (String ref = trim (g["ref"]))
- {
- if (trace_)
- wcout << "attribute-group-ref " << ref << endl;
-
- try
- {
- String uq_name (unqualified_name (ref));
- String ns_name (namespace_name (g, ref));
-
- // In order to avoid code duplication we are going to let the
- // resolver handle this case.
- //
- if (trace_)
- wcout << "deferring resolution of group name '" << uq_name
- << "' inside namespace '" << ns_name << "'"
- << " until later" << endl;
-
- Scope& s (scope ());
- AttributeGroupRef ref (uq_name, ns_name, s);
-
- if (!s.context ().count ("attribute-group-refs"))
- s.context ().set ("attribute-group-refs", AttributeGroupRefs ());
-
- s.context ().get<AttributeGroupRefs> (
- "attribute-group-refs").push_back (ref);
- }
- catch (NotNamespace const& ex)
- {
- if (valid_)
- {
- wcerr << file () << ":" << g.line () << ":" << g.column () << ": "
- << "ice: unable to resolve namespace '" << ex.ns () << "'"
- << endl;
- abort ();
- }
- }
- catch (XML::NoMapping const& ex)
- {
- wcerr << file () << ":" << g.line () << ":" << g.column () << ": "
- << "error: unable to resolve namespace prefix '"
- << ex.prefix () << "' in '" << ref << "'" << endl;
-
- valid_ = false;
- }
- }
- else
- {
- wcerr << file () << ":" << g.line () << ":" << g.column () << ": "
- << "error: 'name' or 'ref' attribute is missing in "
- << "attributeGroup declaration" << endl;
-
- valid_ = false;
- return;
- }
- }
-
- void Parser::Impl::
- any (XML::Element const& a)
- {
- if (trace_)
- wcout << "any" << endl;
-
- String namespaces (trim (a["namespace"]));
-
- if (!namespaces)
- namespaces = L"##any";
-
- Any& any (
- s_->new_node<Any> (file (), a.line (), a.column (), namespaces));
-
- unsigned long min (parse_min (trim (a["minOccurs"])));
- unsigned long max (parse_max (trim (a["maxOccurs"])));
-
- // Parse annotation.
- //
- push (a);
-
- if (Annotation* ann = annotation (true))
- s_->new_edge<Annotates> (*ann, any);
-
- pop ();
-
- if (!(min == 0 && max == 0))
- {
- s_->new_edge<ContainsParticle> (
- compositor (), any, min, max == unbounded ? 0 : max);
-
- // Any has no name so we have to come up with a fake one in order to
- // put it into the scope.
- //
- unsigned long count;
- SemanticGraph::Context& ctx (scope ().context ());
-
- if (!ctx.count ("any-name-count"))
- {
- count = 0;
- ctx.set ("any-name-count", count);
- }
- else
- count = ++(ctx.get<unsigned long> ("any-name-count"));
-
- std::basic_ostringstream<wchar_t> os;
- os << "any #" << count;
-
- s_->new_edge<Names> (scope (), any, os.str ());
- }
- }
-
- void Parser::Impl::
- any_attribute (XML::Element const& a)
- {
- if (trace_)
- wcout << "anyAttribute" << endl;
-
- String namespaces (trim (a["namespace"]));
-
- if (!namespaces)
- namespaces = L"##any";
-
- AnyAttribute& any (
- s_->new_node<AnyAttribute> (
- file (), a.line (), a.column (), namespaces));
-
- // Parse annotation.
- //
- push (a);
-
- if (Annotation* ann = annotation (true))
- s_->new_edge<Annotates> (*ann, any);
-
- pop ();
-
- // AnyAttribute has no name so we have to come up with a fake one
- // in order to put it into the scope.
- //
-
- unsigned long count;
- SemanticGraph::Context& ctx (scope ().context ());
-
- if (!ctx.count ("any-attribute-name-count"))
- {
- count = 0;
- ctx.set ("any-attribute-name-count", count);
- }
- else
- count = ++(ctx.get<unsigned long> ("any-attribute-name-count"));
-
- std::basic_ostringstream<wchar_t> os;
- os << "any-attribute #" << count;
-
- s_->new_edge<Names> (scope (), any, os.str ());
- }
-
- // Some specializations to get edge orientations right.
- //
-
- template <typename Edge, typename Node>
- struct Orientation
- {
- static Edge&
- set_edge (Schema& s, Node& node, Type& type)
- {
- // By default it is node->edge
- //
- return s.template new_edge<Edge> (node, type);
- }
- };
-
- template <typename Node>
- struct Orientation<Arguments, Node>
- {
- static Arguments&
- set_edge (Schema& s, Node& node, Type& type)
- {
- // For Arguments it is type->node.
- //
- return s.template new_edge<Arguments> (type, node);
- }
- };
-
- template <typename Edge, typename Node>
- Edge* Parser::Impl::
- set_type (String const& type, XML::Element const& e, Node& node)
- {
- Edge* r (0);
-
- try
- {
- String uq_name (unqualified_name (type));
- String ns_name (namespace_name (e, type));
-
- Type& t (resolve<Type> (ns_name, uq_name, *s_, *cache_));
-
- // See if it is an IDREF specialization.
- //
- if (ns_name == xsd && (uq_name == L"IDREF" || uq_name == L"IDREFS"))
- {
- // See if we've got 'xse:refType' attribute.
- //
- if (String ref_type = trim (e.attribute (xse, "refType")))
- {
- if (trace_)
- wcout << "found refType attribute '" << ref_type << "'" << endl;
-
- //@@ It is a bit wasteful to create a new spcialization for
- // each refType. Instead we could lookup the target type
- // and then navigate through Arguments edges to see if this
- // type already arguments specialization that we are intersted
- // in. But for now I will simplify the logic by creating a new
- // specialization every time.
- //
-
- Specialization* spec (0);
-
- if (uq_name == L"IDREF")
- spec = &s_->new_node<Fundamental::IdRef> (
- file (), e.line (), e.column ());
- else
- spec = &s_->new_node<Fundamental::IdRefs> (
- file (), e.line (), e.column ());
-
- r = &Orientation<Edge, Node>::set_edge (*s_, node, *spec);
-
- set_type<Arguments> (ref_type, e, *spec);
- }
- else
- r = &Orientation<Edge, Node>::set_edge (*s_, node, t);
- }
- else
- r = &Orientation<Edge, Node>::set_edge (*s_, node, t);
- }
- catch (NotNamespace const& ex)
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unable to resolve namespace '" << ex.ns () << "'"
- << endl;
-
- valid_ = false;
-
- }
- catch (NotName const& ex)
- {
- node.context ().set ("type-ns-name", ex.ns ());
- node.context ().set ("type-uq-name", ex.name ());
- node.context ().set ("edge-type-id", type_id (typeid (Edge)));
-
- if (trace_)
- wcout << "unable to resolve name '" << ex.name ()
- << "' inside namespace '" << ex.ns () << "'" << endl
- << "deferring resolution until later" << endl;
- }
- catch (XML::NoMapping const& ex)
- {
- wcerr << file () << ":" << e.line () << ":" << e.column () << ": "
- << "error: unable to resolve namespace prefix "
- << "'" << ex.prefix () << "' in '" << type << "'" << endl;
-
- valid_ = false;
- }
-
- return r;
- }
-
- // Xerces has a provision to associate a public id with input streams
- // that can later be used in diagnostics. Unfortunately, it doesn't
- // work. So we will have to keep our own track.
- //
- struct Context
- {
- Context () {}
-
- // File map for diagnostic.
- //
- Path const&
- file (Path const& abs) const
- {
- FileMap::const_iterator i (file_map_.find (abs));
-
- if (i != file_map_.end ())
- {
- return i->second;
- }
- else
- {
- return abs;
- }
- }
-
- void
- map_file (Path const& abs, Path const& rel)
- {
- file_map_[abs] = rel;
- }
-
- private:
- Context (Context const&);
- Context& operator= (Context const&);
-
- private:
- typedef std::map<Path, Path> FileMap;
- FileMap file_map_;
- };
-
- //
- //
- class ErrorHandler : public Xerces::DOMErrorHandler
- {
- public:
- ErrorHandler (bool& valid, XSDFrontend::Context const& ctx)
- : valid_ (valid),
- ctx_ (ctx)
- {
- }
-
- virtual bool
- handleError (Xerces::DOMError const& e)
- {
- // Xerces likes to say "Fatal error encountered during schema scan".
- // We don't need this junk.
- //
- if (!valid_
- && e.getLocation ()->getLineNumber () == 0
- && e.getLocation ()->getColumnNumber () == 0)
- return true;
-
-
- XSDFrontend::SemanticGraph::Path abs_path (
- XML::transcode_to_narrow (e.getLocation ()->getURI ()));
-
- XSDFrontend::SemanticGraph::Path rel_path (ctx_.file (abs_path));
-
- wcerr << rel_path << ':'
- << e.getLocation ()->getLineNumber () << ':'
- << e.getLocation ()->getColumnNumber () << ": ";
-
- switch (e.getSeverity ())
- {
- case Xerces::DOMError::DOM_SEVERITY_WARNING:
- {
- wcerr << "warning: ";
- break;
- }
- default:
- {
- wcerr << "error: ";
- valid_ = false;
- break;
- }
- }
-
- wcerr << e.getMessage () << endl;
-
- return true;
- }
-
- private:
- bool& valid_;
- XSDFrontend::Context const& ctx_;
- };
-
-
- // Failed to open resource.
- //
- struct Open {};
-
- class InputSource: public Xerces::InputSource
- {
- public:
- InputSource (
- Path const& abs,
- Path const& rel,
- Path const& base,
- XSDFrontend::Context const& ctx,
- Xerces::MemoryManager* mm = Xerces::XMLPlatformUtils::fgMemoryManager)
- : Xerces::InputSource (mm),
- abs_ (abs),
- rel_ (rel),
- base_ (base),
- ctx_ (ctx)
- {
- setSystemId (XML::XMLChString (String (abs_.string ())).c_str ());
- }
-
- virtual Xerces::BinInputStream*
- makeStream () const
- {
- using namespace Xerces;
-
- BinFileInputStream* is (
- new (getMemoryManager ())
- BinFileInputStream (getSystemId (), getMemoryManager ()));
-
- if (!is->getIsOpen ())
- {
- delete is;
-
- wcerr << ctx_.file (base_) << ": error: "
- << "'" << rel_ << "': unable to open in read mode"
- << endl;
-
- throw Open ();
- }
-
- return is;
- }
-
- private:
- Path abs_;
- Path rel_;
- Path base_;
- XSDFrontend::Context const& ctx_;
- };
-
-
- class EntityResolver: public Xerces::XMemory,
- public Xerces::DOMLSResourceResolver
- {
- public:
- EntityResolver (XSDFrontend::Context& ctx, LocationTranslator* t)
- : ctx_ (ctx), loc_translator_ (t)
- {
- }
-
- virtual Xerces::DOMLSInput*
- resolveResource(XMLCh const* const,
- XMLCh const* const,
- XMLCh const* const /*pub_id*/,
- XMLCh const* const prv_id,
- XMLCh const* const base_uri)
- {
- /*
- XMLCh empty[1];
- empty[0] = 0;
-
- wcerr << "resolve entity:" << endl
- << " pub_id " << (pub_id ? pub_id : empty) << endl
- << " prv_id " << (prv_id ? prv_id : empty) << endl
- << " uri " << (base_uri ? base_uri : empty) << endl;
- */
-
- // base_uri should be a valid path by now.
- //
- Path base (XML::transcode_to_narrow (base_uri));
-
- if (prv_id == 0)
- {
- //@@ How can I get the line/column numbers for this?
- //
- wcerr << ctx_.file (base) << ": error: "
- << "unable to guess which schema to open"
- << endl;
-
- wcerr << ctx_.file (base) << ": info: "
- << "did you forget to specify schemaLocation for import/include?"
- << endl;
-
- throw Open ();
- }
-
- NarrowString path_str (XML::transcode_to_narrow (prv_id));
-
- if (loc_translator_)
- path_str = loc_translator_->translate (path_str);
-
- try
- {
- Path path (path_str);
- Path base_dir (base.directory ());
-
- Path abs_path, rel_path;
-
- if (path.absolute ())
- {
- abs_path = rel_path = path;
- }
- else
- {
- abs_path = base_dir / path;
- rel_path = ctx_.file (base).directory () / path;
- }
-
- abs_path.normalize ();
-
- ctx_.map_file (abs_path, rel_path);
-
- using namespace Xerces;
-
- InputSource* is (
- new (XMLPlatformUtils::fgMemoryManager)
- InputSource (abs_path, rel_path, base, ctx_));
-
- // Note that I can't use XMLPlatformUtils::fgMemoryManager here
- // since Wrapper4InputSource is-not-an XMemory.
- //
- return new Wrapper4InputSource (is);
- }
- catch (InvalidPath const&)
- {
- wcerr << ctx_.file (base) << ": error: "
- << "'" << path_str.c_str () << "' is not a valid filesystem path"
- << endl;
- throw;
- }
-
- // Will never reach.
- //
- return 0;
- }
-
- private:
- XSDFrontend::Context& ctx_;
- LocationTranslator* loc_translator_;
- };
-
-
- XML::AutoPtr<Xerces::DOMDocument> Parser::Impl::
- dom (Path const& tu, bool validate)
- {
- using namespace Xerces;
-
- try
- {
- XSDFrontend::Context ctx;
-
- // Do normalize() before complete() to avoid hitting system path
- // limits with '..' directories.
- //
- Path abs_path (tu);
- abs_path.normalize ().complete ();
- ctx.map_file (abs_path, tu);
-
- InputSource input_source (abs_path, tu, abs_path, ctx);
-
- // First validate the schema with Xerces.
- //
- if (validate)
- {
- // Instantiate the DOM parser.
- //
- XMLCh const gLS[] = {chLatin_L, chLatin_S, chNull };
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- DOMImplementationLS* impl (
- static_cast<DOMImplementationLS*> (
- DOMImplementationRegistry::getDOMImplementation (gLS)));
-
- // Create a DOMBuilder.
- //
- XML::AutoPtr<DOMLSParser> parser (
- impl->createLSParser (DOMImplementationLS::MODE_SYNCHRONOUS, 0));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- conf->setParameter (XMLUni::fgDOMComments, false);
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
- conf->setParameter (XMLUni::fgDOMEntities, false);
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
- conf->setParameter (XMLUni::fgDOMValidate, true);
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
- conf->setParameter (XMLUni::fgXercesSchema, true);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, multiple_imports_);
-#endif
-
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, full_schema_check_);
- conf->setParameter (XMLUni::fgXercesValidationErrorAsFatal, true);
-
- ErrorHandler eh (valid_, ctx);
- conf->setParameter (XMLUni::fgDOMErrorHandler, &eh);
-
- EntityResolver er (ctx, loc_translator_);
- conf->setParameter (XMLUni::fgDOMResourceResolver, &er);
-
- Wrapper4InputSource wrap (&input_source, false);
- parser->loadGrammar (&wrap, Grammar::SchemaGrammarType);
- }
-
- if (!valid_)
- return XML::AutoPtr<DOMDocument> (0);
-
- // Now do our own parsing.
- //
- std::auto_ptr<XML::SchemaDOMParser> xsd_parser (
- new (XMLPlatformUtils::fgMemoryManager) XML::SchemaDOMParser ());
-
- xsd_parser->parse (input_source);
-
- XML::AutoPtr<DOMDocument> doc (xsd_parser->adoptDocument());
-
- return doc;
- }
- catch (Xerces::XMLException const& e)
- {
- wcerr << tu << ": ice: Xerces::XMLException: " << e.getMessage ()
- << endl;
-
- abort ();
- }
- catch (Xerces::DOMException const& e)
- {
- size_t const size = 2047;
- XMLCh text[size + 1];
-
- wcerr << tu << ": ice: Xerces::DOMException: ";
-
- if (DOMImplementation::loadDOMExceptionMsg (e.code, text, size))
- wcerr << text << endl;
- else
- wcerr << "no message available, error code: " << e.code << endl;
-
- abort ();
- }
- catch (InvalidPath const&)
- {
- // Diagnostics has already been issued.
- //
- valid_ = false;
- }
- catch (Open const&)
- {
- // Diagnostics has already been issued.
- //
- valid_ = false;
- }
-
- return XML::AutoPtr<DOMDocument> (0);
- }
-
- // LocationTranslator
- //
- LocationTranslator::
- ~LocationTranslator ()
- {
- }
-
- // Parser
- //
- Parser::
- ~Parser ()
- {
- }
-
- Parser::
- Parser (bool proper_restriction,
- bool multiple_imports,
- bool full_schema_check)
- : impl_ (new Impl (proper_restriction,
- multiple_imports,
- full_schema_check,
- 0,
- 0))
- {
- }
-
- Parser::
- Parser (bool proper_restriction,
- bool multiple_imports,
- bool full_schema_check,
- LocationTranslator& t,
- const WarningSet& d)
- : impl_ (new Impl (proper_restriction,
- multiple_imports,
- full_schema_check,
- &t,
- &d))
- {
- }
-
- auto_ptr<SemanticGraph::Schema> Parser::
- parse (SemanticGraph::Path const& path)
- {
- return impl_->parse (path);
- }
-
- auto_ptr<SemanticGraph::Schema> Parser::
- parse (SemanticGraph::Paths const& paths)
- {
- return impl_->parse (paths);
- }
-
- auto_ptr<SemanticGraph::Schema> Parser::
- xml_schema (SemanticGraph::Path const& path)
- {
- return impl_->xml_schema (path);
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/parser.hxx b/libxsd-frontend/xsd-frontend/parser.hxx
deleted file mode 100644
index 746aa97..0000000
--- a/libxsd-frontend/xsd-frontend/parser.hxx
+++ /dev/null
@@ -1,78 +0,0 @@
-// file : xsd-frontend/parser.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_PARSER_HXX
-#define XSD_FRONTEND_PARSER_HXX
-
-#include <set>
-#include <memory> // std::auto_ptr
-
-#include <xsd-frontend/types.hxx>
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-namespace XSDFrontend
-{
- struct InvalidSchema {};
-
- class LocationTranslator
- {
- public:
- virtual
- ~LocationTranslator ();
-
- virtual NarrowString
- translate (NarrowString const& location) = 0;
- };
-
- // Set of disabled warning IDs. Special ID "all" disables all
- // warnings.
- //
- typedef std::set<NarrowString> WarningSet;
-
- class Parser
- {
- public:
- ~Parser ();
-
- Parser (bool proper_restriction,
- bool multiple_imports,
- bool full_schema_check);
-
- Parser (bool proper_restriction,
- bool multiple_imports,
- bool full_schema_check,
- LocationTranslator&,
- const WarningSet& disabled);
-
- private:
- Parser (Parser const&);
- Parser& operator= (Parser const&);
-
- public:
- // Parse a schema file. Throws InvalidSchema in case of a failure.
- //
- std::auto_ptr<SemanticGraph::Schema>
- parse (SemanticGraph::Path const&);
-
- // Parse a number of schema files all into one semantic graph.
- // Each schema file is imported from an unnamed root translation
- // unit. Throws InvalidSchema in case of a failure.
- //
- std::auto_ptr<SemanticGraph::Schema>
- parse (SemanticGraph::Paths const&);
-
- // Returns a schema graph that corresponds to the XML Schema
- // namespace with built-in type definitions. The path is fake
- // and is only used as a lable.
- //
- std::auto_ptr<SemanticGraph::Schema>
- xml_schema (SemanticGraph::Path const&);
-
- private:
- class Impl;
- std::auto_ptr<Impl> impl_;
- };
-}
-
-#endif // XSD_FRONTEND_PARSER_HXX
diff --git a/libxsd-frontend/xsd-frontend/schema-dom-parser.cxx b/libxsd-frontend/xsd-frontend/schema-dom-parser.cxx
deleted file mode 100644
index 73a0f83..0000000
--- a/libxsd-frontend/xsd-frontend/schema-dom-parser.cxx
+++ /dev/null
@@ -1,173 +0,0 @@
-// file : xsd-frontend/schema-dom-parser.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/schema-dom-parser.hxx>
-
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMText.hpp>
-
-#include <xercesc/framework/XMLValidityCodes.hpp>
-#include <xercesc/validators/schema/SchemaSymbols.hpp>
-
-#include <xercesc/util/XMLString.hpp>
-
-#include <xercesc/internal/XMLScanner.hpp>
-#include <xercesc/internal/ElemStack.hpp>
-
-namespace XSDFrontend
-{
- namespace XML
- {
- using namespace Xerces;
-
- const XMLCh line_key[2] = {chLatin_l, chNull};
- const XMLCh column_key[2] = {chLatin_c, chNull};
-
- SchemaDOMParser::
- SchemaDOMParser (MemoryManager* mgr)
- : XercesDOMParser(0, mgr, 0),
- depth_ (-1),
- ann_depth_ (-1),
- inner_ann_depth_ (-1)
- {
- error_reporter_.setErrorReporter (this);
- setValidationScheme (XercesDOMParser::Val_Never);
- setDoNamespaces (true);
- }
-
- void SchemaDOMParser::
- startElement (const XMLElementDecl& decl,
- const unsigned int url_id,
- const XMLCh* const prefix,
- const RefVectorOf<XMLAttr>& attributes,
- const XMLSize_t attr_count,
- const bool empty,
- const bool root)
- {
- depth_++;
-
- if (ann_depth_ == -1)
- {
- if (XMLString::equals(decl.getBaseName(),
- SchemaSymbols::fgELT_ANNOTATION) &&
- XMLString::equals(getURIText(url_id),
- SchemaSymbols::fgURI_SCHEMAFORSCHEMA))
- {
- ann_depth_ = depth_;
- }
- }
- else if (depth_ == ann_depth_ + 1)
- {
- inner_ann_depth_ = depth_;
- }
-
- XercesDOMParser::startElement (
- decl, url_id, prefix, attributes, attr_count, false, root);
-
- // Set the line/column info.
- //
- ReaderMgr::LastExtEntityInfo info;
- ((ReaderMgr*) fScanner->getLocator())->getLastExtEntityInfo(info);
-
- unsigned long l (static_cast<unsigned long> (info.lineNumber));
- unsigned long c (static_cast<unsigned long> (info.colNumber));
-
- fCurrentNode->setUserData (line_key, reinterpret_cast<void*> (l), 0);
- fCurrentNode->setUserData (column_key, reinterpret_cast<void*> (c), 0);
-
- // If an empty element, call the endElement() now.
- //
- if (empty)
- endElement (decl, url_id, root, prefix);
- }
-
- void SchemaDOMParser::
- endElement (const XMLElementDecl& decl,
- const unsigned int url_id,
- const bool root,
- const XMLCh* const prefix)
- {
- if(ann_depth_ > -1)
- {
- if (inner_ann_depth_ == depth_)
- {
- inner_ann_depth_ = -1;
- }
- else if (ann_depth_ == depth_)
- {
- ann_depth_ = -1;
- }
- }
-
- depth_--;
-
- XercesDOMParser::endElement (decl, url_id, root, prefix);
- }
-
- void SchemaDOMParser::
- docCharacters (const XMLCh* const s,
- const XMLSize_t length,
- const bool cdata)
- {
- // Ignore chars outside of content.
- //
- if (!fWithinElement)
- return;
-
- if (inner_ann_depth_ == -1)
- {
- if (!((ReaderMgr*) fScanner->getReaderMgr())->getCurrentReader()->
- isAllSpaces(s, length))
- {
- ReaderMgr::LastExtEntityInfo lastInfo;
- fScanner->getReaderMgr()->getLastExtEntityInfo(lastInfo);
- locator_.setValues(lastInfo.systemId, lastInfo.publicId,
- lastInfo.lineNumber, lastInfo.colNumber);
- error_reporter_.emitError(XMLValid::NonWSContent,
- XMLUni::fgValidityDomain,
- &locator_);
- }
- }
- else
- {
- // When it's within either of the 2 annotation sub-elements,
- // characters are allowed and we need to store them.
- //
- XercesDOMParser::docCharacters (s, length, cdata);
- }
- }
-
- void SchemaDOMParser::
- docComment (const XMLCh* const)
- {
- // We don't want any comments.
- }
-
- void SchemaDOMParser::
- startEntityReference (const XMLEntityDecl&)
- {
- }
-
- void SchemaDOMParser::
- endEntityReference (const XMLEntityDecl&)
- {
- }
-
- void SchemaDOMParser::
- ignorableWhitespace (const XMLCh* const s,
- const XMLSize_t length,
- const bool cdata)
- {
- // Ignore chars before the root element.
- //
- if (!fWithinElement || !fIncludeIgnorableWhitespace)
- return;
-
- if (ann_depth_ > -1)
- XercesDOMParser::ignorableWhitespace (s, length, cdata);
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/schema-dom-parser.hxx b/libxsd-frontend/xsd-frontend/schema-dom-parser.hxx
deleted file mode 100644
index 344065a..0000000
--- a/libxsd-frontend/xsd-frontend/schema-dom-parser.hxx
+++ /dev/null
@@ -1,82 +0,0 @@
-// file : xsd-frontend/schema-dom-parser.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SCHEMA_DOM_PARSER_HXX
-#define XSD_FRONTEND_SCHEMA_DOM_PARSER_HXX
-
-#include <xercesc/parsers/XercesDOMParser.hpp>
-
-#include <xercesc/dom/DOMElement.hpp>
-
-#include <xercesc/validators/schema/XSDLocator.hpp>
-#include <xercesc/validators/schema/XSDErrorReporter.hpp>
-
-#include <xsd-frontend/version.hxx> // Check Xerces-C++ version.
-
-namespace XSDFrontend
-{
- namespace XML
- {
- namespace Xerces = xercesc;
-
- extern const XMLCh line_key[2];
- extern const XMLCh column_key[2];
-
- class SchemaDOMParser: public Xerces::XercesDOMParser
- {
- public :
- SchemaDOMParser (
- Xerces::MemoryManager* = Xerces::XMLPlatformUtils::fgMemoryManager);
-
- // Callbacks.
- //
- virtual void
- startElement (const Xerces::XMLElementDecl&,
- const unsigned int url_id,
- const XMLCh* const prefix,
- const Xerces::RefVectorOf<Xerces::XMLAttr>& attributes,
- const XMLSize_t attribute_count,
- const bool empty,
- const bool root);
-
- virtual void
- endElement (const Xerces::XMLElementDecl&,
- const unsigned int url_id,
- const bool root,
- const XMLCh* const prefix);
-
- virtual void
- docCharacters (const XMLCh* const,
- const XMLSize_t length,
- const bool cdata);
-
- virtual void
- docComment (const XMLCh* const);
-
- virtual void
- startEntityReference (const Xerces::XMLEntityDecl&);
-
- virtual void
- endEntityReference (const Xerces::XMLEntityDecl&);
-
- virtual void
- ignorableWhitespace (const XMLCh* const,
- const XMLSize_t length,
- const bool cdata);
- private:
- SchemaDOMParser (SchemaDOMParser const&);
- SchemaDOMParser&
- operator=(SchemaDOMParser const&);
-
- private:
- int depth_;
- int ann_depth_;
- int inner_ann_depth_;
- Xerces::XSDLocator locator_;
- Xerces::XSDErrorReporter error_reporter_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SCHEMA_DOM_PARSER_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph.hxx b/libxsd-frontend/xsd-frontend/semantic-graph.hxx
deleted file mode 100644
index 36d42c3..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph.hxx
+++ /dev/null
@@ -1,26 +0,0 @@
-// file : xsd-frontend/semantic-graph.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_HXX
-
-#include <xsd-frontend/semantic-graph/annotation.hxx>
-#include <xsd-frontend/semantic-graph/any.hxx>
-#include <xsd-frontend/semantic-graph/any-attribute.hxx>
-#include <xsd-frontend/semantic-graph/attribute.hxx>
-#include <xsd-frontend/semantic-graph/attribute-group.hxx>
-#include <xsd-frontend/semantic-graph/complex.hxx>
-#include <xsd-frontend/semantic-graph/compositors.hxx>
-#include <xsd-frontend/semantic-graph/element.hxx>
-#include <xsd-frontend/semantic-graph/element-group.hxx>
-#include <xsd-frontend/semantic-graph/elements.hxx>
-#include <xsd-frontend/semantic-graph/enumeration.hxx>
-#include <xsd-frontend/semantic-graph/fundamental.hxx>
-#include <xsd-frontend/semantic-graph/list.hxx>
-#include <xsd-frontend/semantic-graph/namespace.hxx>
-#include <xsd-frontend/semantic-graph/particle.hxx>
-#include <xsd-frontend/semantic-graph/schema.hxx>
-#include <xsd-frontend/semantic-graph/union.hxx>
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/annotation.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/annotation.cxx
deleted file mode 100644
index 17a0f03..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/annotation.cxx
+++ /dev/null
@@ -1,45 +0,0 @@
-// file : xsd-frontend/semantic-graph/annotation.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/annotation.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- using compiler::type_info;
-
- // Annotates
- //
- namespace
- {
- struct AnnotatesInit
- {
- AnnotatesInit ()
- {
- type_info ti (typeid (Annotates));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } annotates_init_;
- }
-
- // Annotation
- //
- namespace
- {
- struct AnnotationInit
- {
- AnnotationInit ()
- {
- type_info ti (typeid (Annotation));
- ti.add_base (typeid (Node));
- insert (ti);
- }
- } annotation_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/annotation.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/annotation.hxx
deleted file mode 100644
index 0464f4f..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/annotation.hxx
+++ /dev/null
@@ -1,75 +0,0 @@
-// file : xsd-frontend/semantic-graph/annotation.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_ANNOTATION_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_ANNOTATION_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- //
- //
- class Annotation;
-
- class Annotates: public virtual Edge
- {
- public:
- Annotation&
- annotation ()
- {
- return *annotation_;
- }
-
- public:
- Annotates (): annotation_ (0) {}
-
- void
- set_left_node (Annotation& a)
- {
- annotation_ = &a;
- }
-
- void
- set_right_node (Node&) {}
-
- void
- set_right_node (Edge&) {}
-
- private:
- Annotation* annotation_;
- };
-
- //
- //
- class Annotation: public virtual Node
- {
- public:
- String const&
- documentation () const
- {
- return documentation_;
- }
-
- public:
- Annotation (Path const& file,
- unsigned long line,
- unsigned long column,
- String const& documentation)
- : Node (file, line, column), documentation_ (documentation)
- {
- }
-
- void
- add_edge_left (Annotates&) {}
-
- private:
- String documentation_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_ANNOTATION_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/any-attribute.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/any-attribute.cxx
deleted file mode 100644
index 19b9df2..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/any-attribute.cxx
+++ /dev/null
@@ -1,111 +0,0 @@
-// file : xsd-frontend/semantic-graph/any-attribute.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/any-attribute.hxx>
-#include <xsd-frontend/semantic-graph/compositors.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- AnyAttribute::
- AnyAttribute (Path const& file,
- unsigned long line,
- unsigned long column,
- String const& namespaces)
- : Node (file, line, column),
- prototype_ (0)
- {
- // Not sure if the separator is just space or any white-space
- // chararcter.
- //
-
- for (size_t i (0), j (namespaces.find (L' '));;)
- {
- if (j != String::npos)
- {
- namespaces_.push_back (String (namespaces, i, j - i));
-
- i = j + 1;
- j = namespaces.find (L' ', i);
- }
- else
- {
- // Last element.
- //
- namespaces_.push_back (String (namespaces, i));
- break;
- }
- }
- }
-
- AnyAttribute::
- AnyAttribute (Path const& file,
- unsigned long line,
- unsigned long column,
- NamespaceIterator begin,
- NamespaceIterator end)
- : Node (file, line, column),
- prototype_ (0)
- {
- for (; begin != end; ++begin)
- namespaces_.push_back (*begin);
- }
-
- namespace
- {
- Namespace&
- namespace_ (Nameable& n)
- {
- // The basic idea goes like this: go up Names edges until you
- // reach Namespace. There are, however, anonymous types which
- // need special handling. In the case of an anonymous type we
- // will go up the first Belongs edge (because the first edge
- // is where the type was defined.
- //
-
- if (n.named_p ())
- {
- Scope& s (n.scope ());
- Namespace* ns (dynamic_cast<Namespace*> (&n));
-
- return ns ? *ns : namespace_ (s);
- }
- else
- {
- Type& t (dynamic_cast<Type&> (n));
- Belongs& b (*t.classifies_begin ());
-
- return namespace_ (b.instance ());
- }
- }
- }
-
- Namespace& AnyAttribute::
- definition_namespace ()
- {
- if (prototype_p ())
- return prototype ().definition_namespace ();
-
- return namespace_ (scope ());
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct AnyAttributeInit
- {
- AnyAttributeInit ()
- {
- type_info ti (typeid (AnyAttribute));
- ti.add_base (typeid (Nameable));
- insert (ti);
- }
- } any_attribute_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/any-attribute.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/any-attribute.hxx
deleted file mode 100644
index bb3d761..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/any-attribute.hxx
+++ /dev/null
@@ -1,80 +0,0 @@
-// file : xsd-frontend/semantic-graph/any-attribute.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_ANY_ATTRIBUTE_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_ANY_ATTRIBUTE_HXX
-
-#include <vector>
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-#include <xsd-frontend/semantic-graph/namespace.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class AnyAttribute: public virtual Nameable
- {
- typedef std::vector<String> Namespaces;
-
- public:
- typedef Namespaces::const_iterator NamespaceIterator;
-
- NamespaceIterator
- namespace_begin () const
- {
- return namespaces_.begin ();
- }
-
- NamespaceIterator
- namespace_end () const
- {
- return namespaces_.end ();
- }
-
- public:
- bool
- prototype_p ()
- {
- return prototype_ != 0;
- }
-
- AnyAttribute&
- prototype ()
- {
- assert (prototype_ != 0);
- return *prototype_;
- }
-
- void
- prototype (AnyAttribute& a)
- {
- assert (prototype_ == 0);
- prototype_ = &a;
- }
-
- public:
- Namespace&
- definition_namespace ();
-
- public:
- AnyAttribute (Path const& file,
- unsigned long line,
- unsigned long column,
- String const& namespaces);
-
- AnyAttribute (Path const& file,
- unsigned long line,
- unsigned long column,
- NamespaceIterator begin,
- NamespaceIterator end);
-
- private:
- AnyAttribute* prototype_;
- Namespaces namespaces_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_ANY_ATTRIBUTE_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/any.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/any.cxx
deleted file mode 100644
index c8ebc93..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/any.cxx
+++ /dev/null
@@ -1,122 +0,0 @@
-// file : xsd-frontend/semantic-graph/any.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/any.hxx>
-#include <xsd-frontend/semantic-graph/compositors.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- Any::
- Any (Path const& file,
- unsigned long line,
- unsigned long column,
- String const& namespaces)
- : Node (file, line, column),
- prototype_ (0)
- {
- // Not sure if the separator is just space or any white-space
- // chararcter.
- //
-
- for (size_t i (0), j (namespaces.find (L' '));;)
- {
- if (j != String::npos)
- {
- namespaces_.push_back (String (namespaces, i, j - i));
-
- i = j + 1;
- j = namespaces.find (L' ', i);
- }
- else
- {
- // Last element.
- //
- namespaces_.push_back (String (namespaces, i));
- break;
- }
- }
- }
-
- Any::
- Any (Path const& file,
- unsigned long line,
- unsigned long column,
- NamespaceIterator begin,
- NamespaceIterator end)
- : Node (file, line, column),
- prototype_ (0)
- {
- for (; begin != end; ++begin)
- namespaces_.push_back (*begin);
- }
-
- namespace
- {
- Namespace&
- namespace_ (Nameable& n)
- {
- // The basic idea goes like this: go up Names edges until you
- // reach Namespace. There are, however, anonymous types which
- // need special handling. In the case of an anonymous type we
- // will go up the first Belongs edge (because the first edge
- // is where the type was defined.
- //
-
- if (n.named_p ())
- {
- Scope& s (n.scope ());
- Namespace* ns (dynamic_cast<Namespace*> (&n));
-
- return ns ? *ns : namespace_ (s);
- }
- else
- {
- Type& t (dynamic_cast<Type&> (n));
- Belongs& b (*t.classifies_begin ());
-
- return namespace_ (b.instance ());
- }
- }
- }
-
- Namespace& Any::
- definition_namespace ()
- {
- if (prototype_p ())
- return prototype ().definition_namespace ();
-
- // Get to our scope.
- //
- Compositor* c (&contained_particle ().compositor ());
-
- while(!c->contained_compositor_p ())
- c = &c->contained_particle ().compositor ();
-
- Scope& scope (
- dynamic_cast<Scope&> (c->contained_compositor ().container ()));
-
- return namespace_ (scope);
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct AnyInit
- {
- AnyInit ()
- {
- type_info ti (typeid (Any));
- ti.add_base (typeid (Nameable));
- ti.add_base (typeid (Particle));
- insert (ti);
- }
- } any_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/any.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/any.hxx
deleted file mode 100644
index 8e42762..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/any.hxx
+++ /dev/null
@@ -1,85 +0,0 @@
-// file : xsd-frontend/semantic-graph/any.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_ANY_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_ANY_HXX
-
-#include <vector>
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-#include <xsd-frontend/semantic-graph/particle.hxx>
-#include <xsd-frontend/semantic-graph/namespace.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class Any: public virtual Nameable,
- public virtual Particle
- {
- typedef std::vector<String> Namespaces;
-
- public:
- typedef Namespaces::const_iterator NamespaceIterator;
-
- NamespaceIterator
- namespace_begin () const
- {
- return namespaces_.begin ();
- }
-
- NamespaceIterator
- namespace_end () const
- {
- return namespaces_.end ();
- }
-
- public:
- bool
- prototype_p ()
- {
- return prototype_ != 0;
- }
-
- Any&
- prototype ()
- {
- assert (prototype_ != 0);
- return *prototype_;
- }
-
- void
- prototype (Any& a)
- {
- assert (prototype_ == 0);
- prototype_ = &a;
- }
-
- public:
- Namespace&
- definition_namespace ();
-
- public:
- Any (Path const& file,
- unsigned long line,
- unsigned long column,
- String const& namespaces);
-
- Any (Path const& file,
- unsigned long line,
- unsigned long column,
- NamespaceIterator begin,
- NamespaceIterator end);
-
- using Nameable::add_edge_right;
- using Particle::add_edge_right;
-
- private:
- Any* prototype_;
- Namespaces namespaces_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_ANY_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/attribute-group.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/attribute-group.cxx
deleted file mode 100644
index f61fa39..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/attribute-group.cxx
+++ /dev/null
@@ -1,34 +0,0 @@
-// file : xsd-frontend/semantic-graph/attribute-group.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/attribute-group.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- AttributeGroup::
- AttributeGroup (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct AttributeGroupInit
- {
- AttributeGroupInit ()
- {
- type_info ti (typeid (AttributeGroup));
- ti.add_base (typeid (Scope));
- insert (ti);
- }
- } attribute_group_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/attribute-group.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/attribute-group.hxx
deleted file mode 100644
index 62a1f81..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/attribute-group.hxx
+++ /dev/null
@@ -1,24 +0,0 @@
-// file : xsd-frontend/semantic-graph/attribute-group.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_ATTRIBUTE_GROUP_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_ATTRIBUTE_GROUP_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class AttributeGroup: public virtual Scope
- {
- public:
- AttributeGroup (Path const& file,
- unsigned long line,
- unsigned long column);
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_ATTRIBUTE_GROUP_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/attribute.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/attribute.cxx
deleted file mode 100644
index 624b16a..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/attribute.cxx
+++ /dev/null
@@ -1,41 +0,0 @@
-// file : xsd-frontend/semantic-graph/attribute.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/attribute.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- Attribute::
- Attribute (Path const& file,
- unsigned long line,
- unsigned long column,
- bool optional,
- bool global,
- bool qualified)
- : Node (file, line, column),
- Member (global, qualified),
- optional_ (optional)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct AttributeInit
- {
- AttributeInit ()
- {
- type_info ti (typeid (Attribute));
- ti.add_base (typeid (Member));
- insert (ti);
- }
- } attribute_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/attribute.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/attribute.hxx
deleted file mode 100644
index 9d9b0fb..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/attribute.hxx
+++ /dev/null
@@ -1,36 +0,0 @@
-// file : xsd-frontend/semantic-graph/attribute.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_ATTRIBUTE_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_ATTRIBUTE_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class Attribute: public virtual Member
- {
- public:
- bool
- optional_p () const
- {
- return optional_;
- }
-
- public:
- Attribute (Path const& file,
- unsigned long line,
- unsigned long column,
- bool optional,
- bool global,
- bool qualified);
- private:
- bool optional_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_ATTRIBUTE_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/complex.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/complex.cxx
deleted file mode 100644
index 8433a0e..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/complex.cxx
+++ /dev/null
@@ -1,42 +0,0 @@
-// file : xsd-frontend/semantic-graph/complex.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/complex.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- Complex::
- Complex ()
- : mixed_ (false), contains_compositor_ (0)
- {
- }
-
- Complex::
- Complex (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column),
- mixed_ (false), contains_compositor_ (0)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct ComplexInit
- {
- ComplexInit ()
- {
- type_info ti (typeid (Complex));
- ti.add_base (typeid (Type));
- ti.add_base (typeid (Scope));
- insert (ti);
- }
- } complex_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/complex.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/complex.hxx
deleted file mode 100644
index ac47810..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/complex.hxx
+++ /dev/null
@@ -1,87 +0,0 @@
-// file : xsd-frontend/semantic-graph/complex.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_COMPLEX_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_COMPLEX_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-#include <xsd-frontend/semantic-graph/compositors.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class Complex: public virtual Type, public virtual Scope
- {
- public:
- bool
- mixed_p () const
- {
- if (mixed_)
- return true;
-
- // If we have empty content, then we have the same content
- // type as our base.
- //
- if (!contains_compositor_p () && inherits_p ())
- {
- if (Complex* b = dynamic_cast<Complex*> (&inherits ().base ()))
- return b->mixed_p ();
- }
-
- return false;
- }
-
- public:
- bool
- contains_compositor_p () const
- {
- return contains_compositor_ != 0;
- }
-
- ContainsCompositor&
- contains_compositor ()
- {
- assert (contains_compositor_ != 0);
- return *contains_compositor_;
- }
-
- public:
- void
- mixed_p (bool m)
- {
- mixed_ = m;
- }
-
- public:
- Complex (Path const& file, unsigned long line, unsigned long column);
-
- void
- add_edge_left (ContainsCompositor& e)
- {
- contains_compositor_ = &e;
- }
-
- void
- remove_edge_left (ContainsCompositor& e)
- {
- assert (contains_compositor_ == &e);
- contains_compositor_ = 0;
- }
-
- using Type::add_edge_right;
- using Type::add_edge_left;
- using Scope::add_edge_left;
-
- protected:
- Complex (); // For virtual inheritance (Enumeration).
-
- private:
- bool mixed_;
- ContainsCompositor* contains_compositor_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_COMPLEX_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/compositors.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/compositors.cxx
deleted file mode 100644
index dd65e56..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/compositors.cxx
+++ /dev/null
@@ -1,100 +0,0 @@
-// file : xsd-frontend/semantic-graph/compositor.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/compositors.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- // ContainsCompositor
- //
- ContainsCompositor::
- ContainsCompositor (unsigned long min, unsigned long max)
- : compositor_ (0), container_ (0), min_ (min), max_ (max)
- {
- }
-
- // All
- //
- All::
- All (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- // Choice
- //
- Choice::
- Choice (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- // Sequence
- //
- Sequence::
- Sequence (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct ContainsCompositorInit
- {
- ContainsCompositorInit ()
- {
- type_info ti (typeid (ContainsCompositor));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } contains_compositor_init_;
-
- struct CompositorInit
- {
- CompositorInit ()
- {
- type_info ti (typeid (Compositor));
- ti.add_base (typeid (Particle));
- insert (ti);
- }
- } compositor_init_;
-
- struct AllInit
- {
- AllInit ()
- {
- type_info ti (typeid (All));
- ti.add_base (typeid (Compositor));
- insert (ti);
- }
- } all_init_;
-
- struct ChoiceInit
- {
- ChoiceInit ()
- {
- type_info ti (typeid (Choice));
- ti.add_base (typeid (Compositor));
- insert (ti);
- }
- } choice_init_;
-
- struct SequenceInit
- {
- SequenceInit ()
- {
- type_info ti (typeid (Sequence));
- ti.add_base (typeid (Compositor));
- insert (ti);
- }
- } sequence_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/compositors.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/compositors.hxx
deleted file mode 100644
index 3573c24..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/compositors.hxx
+++ /dev/null
@@ -1,234 +0,0 @@
-// file : xsd-frontend/semantic-graph/compositors.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_COMPOSITORS_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_COMPOSITORS_HXX
-
-#include <list>
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-#include <xsd-frontend/semantic-graph/particle.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- //
- //
- class ContainsCompositor: public virtual Edge
- {
- public:
- Compositor&
- compositor () const
- {
- return *compositor_;
- }
-
- Node&
- container () const
- {
- return *container_;
- }
-
- public:
- unsigned long
- min () const
- {
- return min_;
- }
-
- unsigned long
- max () const
- {
- return max_;
- }
-
- public:
- ContainsCompositor (unsigned long min, unsigned long max);
-
- void
- set_left_node (Node& n)
- {
- container_ = &n;
- }
-
- void
- set_right_node (Compositor& n)
- {
- compositor_ = &n;
- }
-
- void
- clear_left_node (Node& n)
- {
- assert (container_ == &n);
- container_ = 0;
- }
-
- void
- clear_right_node (Compositor& n)
- {
- assert (compositor_ == &n);
- compositor_ = 0;
- }
-
- private:
- Compositor* compositor_;
- Node* container_;
- unsigned long min_, max_;
- };
-
- //
- //
- class Compositor: public virtual Particle
- {
- typedef std::list<ContainsParticle*> ContainsList;
-
- public:
- typedef pointer_iterator<ContainsList::iterator> ContainsIterator;
- typedef
- pointer_iterator<ContainsList::const_iterator>
- ContainsConstIterator;
-
- ContainsIterator
- contains_begin ()
- {
- return contains_.begin ();
- }
-
- ContainsIterator
- contains_end ()
- {
- return contains_.end ();
- }
-
- ContainsConstIterator
- contains_begin () const
- {
- return contains_.begin ();
- }
-
- ContainsConstIterator
- contains_end () const
- {
- return contains_.end ();
- }
-
- public:
- bool
- contained_compositor_p ()
- {
- return contained_compositor_ != 0;
- }
-
- ContainsCompositor&
- contained_compositor ()
- {
- assert (contained_compositor_ != 0);
- return *contained_compositor_;
- }
-
- public:
- unsigned long
- min () const
- {
- if (contained_compositor_ != 0)
- return contained_compositor_->min ();
- else
- return Particle::min ();
- }
-
- unsigned long
- max () const
- {
- if (contained_compositor_ != 0)
- return contained_compositor_->max ();
- else
- return Particle::max ();
- }
-
- public:
- Compositor (): contained_compositor_ (0) {}
-
- void
- add_edge_left (ContainsParticle& e)
- {
- contains_.push_back (&e);
- }
-
- void
- add_edge_left (ContainsParticle& e, ContainsIterator const& after)
- {
- if (after.base () == contains_.end ())
- contains_.push_front (&e);
- else
- {
- ContainsList::iterator i (after.base ());
- contains_.insert (++i, &e);
- }
- }
-
- void
- remove_edge_left (ContainsParticle& e)
- {
- for (ContainsList::iterator i (contains_.begin ());
- i != contains_.end (); ++i)
- {
- if (*i == &e)
- {
- contains_.erase (i);
- break;
- }
- }
- }
-
- void
- add_edge_right (ContainsCompositor& e)
- {
- contained_compositor_ = &e;
- }
-
- void
- remove_edge_right (ContainsCompositor& e)
- {
- assert (contained_compositor_ == &e);
- contained_compositor_ = 0;
- }
-
- using Node::add_edge_right;
- using Particle::add_edge_right;
- using Particle::remove_edge_right;
-
- private:
- ContainsList contains_;
- ContainsCompositor* contained_compositor_;
- };
-
- //
- //
- class All: public virtual Compositor
- {
- public:
- All (Path const& file, unsigned long line, unsigned long column);
- };
-
- //
- //
- class Choice: public virtual Compositor
- {
- public:
- Choice (Path const& file, unsigned long line, unsigned long column);
- };
-
- //
- //
- class Sequence: public virtual Compositor
- {
- public:
- Sequence (Path const& file, unsigned long line, unsigned long column);
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_COMPOSITORS_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/element-group.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/element-group.cxx
deleted file mode 100644
index a02d751..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/element-group.cxx
+++ /dev/null
@@ -1,34 +0,0 @@
-// file : xsd-frontend/semantic-graph/element-group.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/element-group.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- ElementGroup::
- ElementGroup (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column), contains_compositor_ (0)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct ElementGroupInit
- {
- ElementGroupInit ()
- {
- type_info ti (typeid (ElementGroup));
- ti.add_base (typeid (Scope));
- insert (ti);
- }
- } element_group_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/element-group.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/element-group.hxx
deleted file mode 100644
index ee7772c..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/element-group.hxx
+++ /dev/null
@@ -1,42 +0,0 @@
-// file : xsd-frontend/semantic-graph/element-group.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_ELEMENT_GROUP_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_ELEMENT_GROUP_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-#include <xsd-frontend/semantic-graph/compositors.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class ElementGroup: public virtual Scope
- {
- public:
- ContainsCompositor&
- contains_compositor ()
- {
- assert (contains_compositor_ != 0);
- return *contains_compositor_;
- }
-
- public:
- ElementGroup (Path const& file, unsigned long line, unsigned long column);
-
- void
- add_edge_left (ContainsCompositor& e)
- {
- contains_compositor_ = &e;
- }
-
- using Scope::add_edge_left;
-
- private:
- ContainsCompositor* contains_compositor_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_ELEMENT_GROUP_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/element.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/element.cxx
deleted file mode 100644
index fb7d3a7..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/element.cxx
+++ /dev/null
@@ -1,53 +0,0 @@
-// file : xsd-frontend/semantic-graph/element.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/element.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- // Element
- //
- Element::
- Element (Path const& file,
- unsigned long line,
- unsigned long column,
- bool global,
- bool qualified)
- : Node (file, line, column),
- Member (global, qualified),
- substitutes_ (0)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct SubstitutesInit
- {
- SubstitutesInit ()
- {
- type_info ti (typeid (Substitutes));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } substitutes_init_;
-
- struct ElementInit
- {
- ElementInit ()
- {
- type_info ti (typeid (Element));
- ti.add_base (typeid (Member));
- ti.add_base (typeid (Particle));
- insert (ti);
- }
- } element_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/element.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/element.hxx
deleted file mode 100644
index 0af164e..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/element.hxx
+++ /dev/null
@@ -1,94 +0,0 @@
-// file : xsd-frontend/semantic-graph/element.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_ELEMENT_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_ELEMENT_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-#include <xsd-frontend/semantic-graph/particle.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class Element;
-
- class Substitutes: public virtual Edge
- {
- public:
- Element&
- substitution () const
- {
- return *substitution_;
- }
-
- Element&
- root () const
- {
- return *root_;
- }
-
- public:
- void
- set_left_node (Element& n)
- {
- substitution_ = &n;
- }
-
- void
- set_right_node (Element& n)
- {
- root_ = &n;
- }
-
- private:
- Element* root_;
- Element* substitution_;
- };
-
-
- class Element: public virtual Member,
- public virtual Particle
- {
- public:
- bool
- substitutes_p () const
- {
- return substitutes_ != 0;
- }
-
- Substitutes&
- substitutes () const
- {
- assert (substitutes_ != 0);
- return *substitutes_;
- }
-
- public:
- Element (Path const& file,
- unsigned long line,
- unsigned long column,
- bool global,
- bool qualified);
-
- void
- add_edge_left (Substitutes& e)
- {
- substitutes_ = &e;
- }
-
- void
- add_edge_right (Substitutes&) {}
-
- using Member::add_edge_left;
- using Member::add_edge_right;
- using Particle::add_edge_right;
-
- private:
- Substitutes* substitutes_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_ELEMENT_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/elements.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/elements.cxx
deleted file mode 100644
index fa48a9a..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/elements.cxx
+++ /dev/null
@@ -1,299 +0,0 @@
-// file : xsd-frontend/semantic-graph/elements.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <algorithm>
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-#include <xsd-frontend/semantic-graph/annotation.hxx>
-
-using namespace std;
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- // Node
- //
- Annotation& Node::
- annotation ()
- {
- return annotates_->annotation ();
- }
-
- // Type
- //
- void Type::
- remove_edge_left (Arguments& a)
- {
- ArgumentsSet::iterator i (arguments_.find (&a));
- assert (i != arguments_.end ());
- arguments_.erase (i);
- }
-
- // Specialization
- //
- void Specialization::
- remove_edge_right (Arguments& a)
- {
- // The number of entries should be small so linear search will do.
- //
- Argumented::iterator i (
- std::find (argumented_.begin (), argumented_.end (), &a));
-
- assert (i != argumented_.end ());
- argumented_.erase (i);
- }
-
- using compiler::type_info;
-
- namespace
- {
- // Edge
- //
- struct EdgeInit
- {
- EdgeInit ()
- {
- type_info ti (typeid (Edge));
- insert (ti);
- }
- } edge_init_;
-
- // Node
- //
- struct NodeInit
- {
- NodeInit ()
- {
- type_info ti (typeid (Node));
- insert (ti);
- }
- } node_init_;
-
- // Names
- //
- struct NamesInit
- {
- NamesInit ()
- {
- type_info ti (typeid (Names));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } names_init_;
-
- // Nameable
- //
- struct NameableInit
- {
- NameableInit ()
- {
- type_info ti (typeid (Nameable));
- ti.add_base (typeid (Node));
- insert (ti);
- }
- } nameable_init_;
-
- // Scope
- //
- struct ScopeInit
- {
- ScopeInit ()
- {
- type_info ti (typeid (Scope));
- ti.add_base (typeid (Nameable));
- insert (ti);
- }
- } scope_init_;
-
- // Type
- //
- struct TypeInit
- {
- TypeInit ()
- {
- type_info ti (typeid (Type));
- ti.add_base (typeid (Nameable));
- insert (ti);
- }
- } type_init_;
-
- // Instance
- //
- struct InstanceInit
- {
- InstanceInit ()
- {
- type_info ti (typeid (Instance));
- ti.add_base (typeid (Nameable));
- insert (ti);
- }
- } instance_init_;
-
- // Belongs
- //
- struct BelongsInit
- {
- BelongsInit ()
- {
- type_info ti (typeid (Belongs));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } belongs_init_;
-
- // Inherits
- //
- struct InheritsInit
- {
- InheritsInit ()
- {
- type_info ti (typeid (Inherits));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } inherits_init_;
-
- // Extends
- //
- struct ExtendsInit
- {
- ExtendsInit ()
- {
- type_info ti (typeid (Extends));
- ti.add_base (typeid (Inherits));
- insert (ti);
- }
- } extends_init_;
-
- // Restricts
- //
- struct RestrictsInit
- {
- RestrictsInit ()
- {
- type_info ti (typeid (Restricts));
- ti.add_base (typeid (Inherits));
- insert (ti);
- }
- } restricts_init_;
-
- // BelongsToNamespace
- //
- struct BelongsToNamespaceInit
- {
- BelongsToNamespaceInit ()
- {
- type_info ti (typeid (BelongsToNamespace));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } belongs_to_namespace_init_;
-
- // Member
- //
- struct MemberInit
- {
- MemberInit ()
- {
- type_info ti (typeid (Member));
- ti.add_base (typeid (Instance));
- insert (ti);
- }
- } member_init_;
-
- // Specialization
- //
- struct SpecializationInit
- {
- SpecializationInit ()
- {
- type_info ti (typeid (Specialization));
- ti.add_base (typeid (Type));
- insert (ti);
- }
- } specialization_init_;
-
- // Arguments
- //
- struct ArgumentsInit
- {
- ArgumentsInit ()
- {
- type_info ti (typeid (Arguments));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } arguments_init_;
-
- /*
- // Contains
- //
- struct ContainsInit
- {
- ContainsInit ()
- {
- type_info ti (typeid (Contains));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } contains_init_;
-
- // Container
- //
- struct ContainerInit
- {
- ContainerInit ()
- {
- type_info ti (typeid (Container));
- ti.add_base (typeid (Node));
- insert (ti);
- }
- } container_init_;
- */
-
- // AnyType
- //
- struct AnyTypeInit
- {
- AnyTypeInit ()
- {
- type_info ti (typeid (AnyType));
- ti.add_base (typeid (SemanticGraph::Type));
- insert (ti);
- }
- } any_type_init_;
-
- // AnySimpleType
- //
- struct AnySimpleTypeInit
- {
- AnySimpleTypeInit ()
- {
- type_info ti (typeid (AnySimpleType));
- ti.add_base (typeid (Type));
- insert (ti);
- }
- } any_simple_type_init_;
- }
-
- // Instance
- //
- Type& Instance::
- type () const
- {
- return belongs ().type ();
- }
- }
-}
-
-// Path
-//
-std::wostream&
-operator<< (std::wostream& os, XSDFrontend::SemanticGraph::Path const& path)
-{
- return os << path.string ().c_str ();
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/elements.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/elements.hxx
deleted file mode 100644
index 98fb180..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/elements.hxx
+++ /dev/null
@@ -1,997 +0,0 @@
-// file : xsd-frontend/semantic-graph/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_ELEMENTS_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_ELEMENTS_HXX
-
-#include <set>
-#include <map>
-#include <list>
-#include <vector>
-#include <iosfwd>
-#include <utility> // std::pair
-#include <cstdlib> // abort
-#include <cassert>
-
-#include <cutl/container/graph.hxx>
-#include <cutl/container/pointer-iterator.hxx>
-#include <cutl/compiler/context.hxx>
-#include <cutl/fs/path.hxx>
-
-#include <xsd-frontend/types.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- using namespace cutl;
-
- using container::pointer_iterator;
-
- //
- //
- typedef fs::path Path;
- typedef fs::invalid_path InvalidPath;
- typedef std::vector<Path> Paths;
-
- typedef compiler::context Context;
-
- //
- //
- class Node;
- class Edge;
-
- //
- //
- class Annotates;
- class Annotation;
-
- //
- //
- class Edge
- {
- public:
- Context&
- context () const
- {
- return context_;
- }
-
- virtual
- ~Edge ()
- {
- }
-
- public:
- template <typename X>
- bool
- is_a () const
- {
- return dynamic_cast<X const*> (this) != 0;
- }
-
- private:
- mutable Context context_;
- };
-
- inline bool
- operator== (Edge const& x, Edge const& y)
- {
- return &x == &y;
- }
-
-
- //
- //
- class Node
- {
- public:
- Context&
- context () const
- {
- return context_;
- }
-
- public:
- Path const&
- file () const
- {
- return file_;
- }
-
- unsigned long
- line () const
- {
- return line_;
- }
-
- unsigned long
- column () const
- {
- return column_;
- }
-
- public:
- bool
- annotated_p () const
- {
- return annotates_ != 0;
- }
-
- Annotates&
- annotated () const
- {
- return *annotates_;
- }
-
- Annotation&
- annotation ();
-
- public:
- template <typename X>
- bool
- is_a () const
- {
- return dynamic_cast<X const*> (this) != 0;
- }
-
- public:
- virtual
- ~Node () {}
-
- Node (Path const& file, unsigned long line, unsigned long column)
- : annotates_ (0), file_ (file), line_ (line), column_ (column)
- {
- }
-
- void
- add_edge_right (Annotates& a)
- {
- annotates_ = &a;
- }
-
- protected:
- Node () // For virtual inheritance.
- {
- abort (); // Told you so!
- }
-
- private:
- mutable Context context_;
- Annotates* annotates_;
- Path file_;
- unsigned long line_;
- unsigned long column_;
- };
-
- inline bool
- operator== (Node const& x, Node const& y)
- {
- return &x == &y;
- }
-
- //
- //
- typedef container::graph<Node, Edge> graph;
-
- //
- //
- typedef String Name;
-
-
- //
- //
- class Scope;
- class Nameable;
-
-
- //
- //
- class Names: public virtual Edge
- {
- public:
- Name
- name () const
- {
- return name_;
- }
-
- Scope&
- scope () const
- {
- return *scope_;
- }
-
- Nameable&
- named () const
- {
- return *named_;
- }
-
- public:
- Names (Name const& name): name_ (name) {}
-
- void
- set_left_node (Scope& n)
- {
- scope_ = &n;
- }
-
- void
- set_right_node (Nameable& n)
- {
- named_ = &n;
- }
-
- void
- clear_left_node (Scope& n)
- {
- assert (scope_ == &n);
- scope_ = 0;
- }
-
- void
- clear_right_node (Nameable& n)
- {
- assert (named_ == &n);
- named_ = 0;
- }
-
- private:
- Scope* scope_;
- Nameable* named_;
- Name name_;
- };
-
-
- class Nameable: public virtual Node
- {
- public:
- bool
- named_p () const
- {
- return named_ != 0;
- }
-
- Name
- name () const
- {
- assert (named_p ());
- return named_->name ();
- }
-
- Scope&
- scope ()
- {
- assert (named_p ());
- return named_->scope ();
- }
-
- Names&
- named ()
- {
- assert (named_p ());
- return *named_;
- }
-
- public:
- Nameable (): named_ (0) {}
-
- void
- add_edge_right (Names& e)
- {
- named_ = &e;
- }
-
- void
- remove_edge_right (Names& e)
- {
- assert (named_ == &e);
- named_ = 0;
- }
-
- using Node::add_edge_right;
-
- private:
- Names* named_;
- };
-
- //
- //
- typedef std::set<Nameable*> Nameables;
-
- //
- //
- class Scope: public virtual Nameable
- {
- protected:
- typedef std::list<Names*> NamesList;
- typedef std::map<Names*, NamesList::iterator> ListIteratorMap;
- typedef std::map<Name, NamesList> NamesMap;
-
- public:
- typedef pointer_iterator<NamesList::iterator> NamesIterator;
- typedef pointer_iterator<NamesList::const_iterator> NamesConstIterator;
-
- typedef
- std::pair<NamesConstIterator, NamesConstIterator>
- NamesIteratorPair;
-
- NamesIterator
- names_begin ()
- {
- return names_.begin ();
- }
-
- NamesIterator
- names_end ()
- {
- return names_.end ();
- }
-
- NamesConstIterator
- names_begin () const
- {
- return names_.begin ();
- }
-
- NamesConstIterator
- names_end () const
- {
- return names_.end ();
- }
-
- virtual NamesIteratorPair
- find (Name const& name) const
- {
- NamesMap::const_iterator i (names_map_.find (name));
-
- if (i == names_map_.end ())
- return NamesIteratorPair (names_.end (), names_.end ());
- else
- return NamesIteratorPair (i->second.begin (), i->second.end ());
- }
-
- NamesIterator
- find (Names& e)
- {
- ListIteratorMap::iterator i (iterator_map_.find (&e));
- return i != iterator_map_.end () ? i->second : names_.end ();
- }
-
- public:
- Scope (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- void
- add_edge_left (Names& e)
- {
- NamesList::iterator i (names_.insert (names_.end (), &e));
- iterator_map_[&e] = i;
- names_map_[e.name ()].push_back (&e);
- }
-
- void
- remove_edge_left (Names& e)
- {
- ListIteratorMap::iterator i (iterator_map_.find (&e));
- assert (i != iterator_map_.end ());
-
- names_.erase (i->second);
- iterator_map_.erase (i);
-
- NamesMap::iterator j (names_map_.find (e.name ()));
-
- for (NamesList::iterator i (j->second.begin ());
- i != j->second.end (); ++i)
- {
- if (*i == &e)
- i = j->second.erase (i);
- }
- }
-
- void
- add_edge_left (Names& e, NamesIterator const& after)
- {
- NamesList::iterator i;
-
- if (after.base () == names_.end ())
- i = names_.insert (names_.begin (), &e);
- else
- {
- NamesList::iterator j (after.base ());
- i = names_.insert (++j, &e);
- }
-
- iterator_map_[&e] = i;
- names_map_[e.name ()].push_back (&e);
- }
-
- using Nameable::add_edge_right;
-
- protected:
- Scope () {}
-
- private:
- NamesList names_;
- ListIteratorMap iterator_map_;
- NamesMap names_map_;
- };
-
-
- //
- //
- class Belongs;
- class Inherits;
- class Arguments;
-
- class Type: public virtual Nameable
- {
- protected:
- typedef std::vector<Belongs*> Classifies;
- typedef std::vector<Inherits*> Begets;
- typedef std::set<Arguments*> ArgumentsSet;
-
- public:
- typedef pointer_iterator<Classifies::const_iterator> ClassifiesIterator;
-
- ClassifiesIterator
- classifies_begin () const
- {
- return classifies_.begin ();
- }
-
- ClassifiesIterator
- classifies_end () const
- {
- return classifies_.end ();
- }
-
- //
- //
- bool
- inherits_p () const
- {
- return inherits_ != 0;
- }
-
- Inherits&
- inherits () const
- {
- assert (inherits_ != 0);
- return *inherits_;
- }
-
- //
- //
- typedef pointer_iterator<Begets::const_iterator> BegetsIterator;
-
- BegetsIterator
- begets_begin () const
- {
- return begets_.begin ();
- }
-
- BegetsIterator
- begets_end () const
- {
- return begets_.end ();
- }
-
- //
- //
- typedef pointer_iterator<ArgumentsSet::const_iterator> ArgumentsIterator;
-
- ArgumentsIterator
- arguments_begin () const
- {
- return arguments_.begin ();
- }
-
- ArgumentsIterator
- arguments_end () const
- {
- return arguments_.end ();
- }
-
- public:
- Type (): inherits_ (0) {}
-
- void
- add_edge_right (Belongs& e)
- {
- classifies_.push_back (&e);
- }
-
- void
- add_edge_right (Inherits& e)
- {
- begets_.push_back (&e);
- }
-
- using Nameable::add_edge_right;
-
- void
- add_edge_left (Arguments& a)
- {
- arguments_.insert (&a);
- }
-
- void
- remove_edge_left (Arguments&);
-
- void
- add_edge_left (Inherits& e)
- {
- inherits_ = &e;
- }
-
- private:
- Inherits* inherits_;
- Begets begets_;
- Classifies classifies_;
- ArgumentsSet arguments_;
- };
-
- class Instance: public virtual Nameable
- {
- public:
- Belongs&
- belongs () const
- {
- return *belongs_;
- }
-
- Type&
- type () const;
-
- bool
- typed_p () const
- {
- return belongs_ != 0;
- }
-
- public:
- Instance (): belongs_ (0) {}
-
- void
- add_edge_left (Belongs& e)
- {
- belongs_ = &e;
- }
-
- private:
- Belongs* belongs_;
- };
-
-
- class Belongs: public virtual Edge
- {
- public:
- Instance&
- instance () const
- {
- return *instance_;
- }
-
- Type&
- type () const
- {
- return *type_;
- }
-
- public:
- void
- set_left_node (Instance& n)
- {
- instance_ = &n;
- }
-
- void
- set_right_node (Type& n)
- {
- type_ = &n;
- }
-
- private:
- Instance* instance_;
- Type* type_;
- };
-
-
- //
- //
- class Inherits: public virtual Edge
- {
- public:
- Type&
- base () const
- {
- return *base_;
- }
-
- Type&
- derived () const
- {
- return *derived_;
- }
-
- public:
- void
- set_left_node (Type& n)
- {
- derived_ = &n;
- }
-
- void
- set_right_node (Type& n)
- {
- base_ = &n;
- }
-
- private:
- Type* base_;
- Type* derived_;
- };
-
- class Extends: public virtual Inherits
- {
- };
-
- class Restricts: public virtual Inherits
- {
- public:
- typedef std::map<String, String> Facets;
- typedef Facets::iterator FacetIterator;
-
- bool
- facet_empty ()
- {
- return facets_.empty ();
- }
-
- FacetIterator
- facet_begin ()
- {
- return facets_.begin ();
- }
-
- FacetIterator
- facet_end ()
- {
- return facets_.end ();
- }
-
- FacetIterator
- facet_find (String const& name)
- {
- return facets_.find (name);
- }
-
- void
- facet_insert (String const& name, String const& value)
- {
- facets_[name] = value;
- }
-
- Facets const&
- facets () const
- {
- return facets_;
- }
-
- protected:
- Facets facets_;
- };
-
-
- //
- //
- class Member;
- class Namespace;
-
- class BelongsToNamespace: public virtual Edge
- {
- public:
- Member&
- member () const
- {
- assert (member_ != 0);
- return *member_;
- }
-
- Namespace&
- namespace_ () const
- {
- assert (namespace__ != 0);
- return *namespace__;
- }
-
- public:
- BelongsToNamespace (): member_ (0), namespace__ (0) {}
-
- void
- set_left_node (Member& n)
- {
- member_ = &n;
- }
-
- void
- set_right_node (Namespace& n)
- {
- namespace__ = &n;
- }
-
- private:
- Member* member_;
- Namespace* namespace__;
- };
-
- //
- //
- class Member: public virtual Instance
- {
- public:
- // Member is global either if it is defined outside any type
- // or it is a ref="" of a global member.
- //
- bool
- global_p () const
- {
- return global_;
- }
-
- bool
- qualified_p () const
- {
- return qualified_;
- }
-
- // Note that only qualified members belong to a namespace.
- //
- Namespace&
- namespace_ () const
- {
- assert (belongs_to_namespace_ != 0);
- return belongs_to_namespace_->namespace_ ();
- }
-
-
- // Default and fixed value API. Note that the fixed value semantics
- // is a superset of the default value semantics. As such setting the
- // fixed value appears as if the default value was also set.
- //
- bool
- default_p () const
- {
- return value_type_ != ValueType::none;
- }
-
- bool
- fixed_p () const
- {
- return value_type_ == ValueType::fixed;
- }
-
- struct NoValue {};
-
- String
- value () const
- {
- if (value_type_ != ValueType::none)
- return value_;
- else
- throw NoValue ();
- }
-
- //
- //
- void
- default_ (String const& v)
- {
- value_ = v;
- value_type_ = ValueType::default_;
- }
-
- void
- fixed (String const& v)
- {
- value_ = v;
- value_type_ = ValueType::fixed;
- }
-
- public:
- Member (bool global, bool qualified)
- : global_ (global),
- qualified_ (qualified),
- belongs_to_namespace_ (0),
- value_type_ (ValueType::none)
- {
- }
-
- void
- add_edge_left (BelongsToNamespace& e)
- {
- // In the parser we sometimes re-add the same adge.
- //
- belongs_to_namespace_ = &e;
- }
-
- using Instance::add_edge_left;
-
- private:
- bool global_;
- bool qualified_;
- BelongsToNamespace* belongs_to_namespace_;
-
- struct ValueType
- {
- enum Value
- {
- none,
- default_,
- fixed
- };
- };
-
- String value_;
- ValueType::Value value_type_;
- };
-
-
- // Parametric types.
- //
-
- class Specialization: public virtual Type
- {
- typedef std::vector<Arguments*> Argumented;
-
- public:
- typedef pointer_iterator<Argumented::iterator> ArgumentedIterator;
- typedef
- pointer_iterator<Argumented::const_iterator>
- ArgumentedConstIterator;
-
- ArgumentedIterator
- argumented_begin ()
- {
- return argumented_.begin ();
- }
-
- ArgumentedConstIterator
- argumented_begin () const
- {
- return argumented_.begin ();
- }
-
- ArgumentedIterator
- argumented_end ()
- {
- return argumented_.end ();
- }
-
- ArgumentedConstIterator
- argumented_end () const
- {
- return argumented_.end ();
- }
-
- // Shortcut for one-argument specializations.
- //
- Arguments&
- argumented () const
- {
- return *argumented_[0];
- }
-
- public:
- using Type::add_edge_right;
-
- void
- add_edge_right (Arguments& a)
- {
- argumented_.push_back (&a);
- }
-
- void
- add_edge_right (Arguments& a, ArgumentedIterator const& pos)
- {
- argumented_.insert (pos.base (), &a);
- }
-
- void
- remove_edge_right (Arguments&);
-
- private:
- Argumented argumented_;
- };
-
- class Arguments: public virtual Edge
- {
- public:
- Type&
- type () const
- {
- return *type_;
- }
-
- Specialization&
- specialization () const
- {
- return *specialization_;
- }
-
- public:
- void
- set_left_node (Type& n)
- {
- type_ = &n;
- }
-
- void
- clear_left_node (Type& n)
- {
- assert (type_ == &n);
- type_ = 0;
- }
-
- void
- set_right_node (Specialization& s)
- {
- specialization_ = &s;
- }
-
- void
- clear_right_node (Specialization& s)
- {
- assert (specialization_ == &s);
- specialization_ = 0;
- }
-
- private:
- Type* type_;
- Specialization* specialization_;
- };
-
-
- //
- //
- class AnyType: public virtual Type
- {
- public:
- AnyType (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- protected:
- AnyType () {} // For virtual inheritance.
- };
-
-
- //
- //
- class AnySimpleType: public virtual Type
- {
- public:
- AnySimpleType (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- protected:
- AnySimpleType () {} // For virtual inheritance.
- };
- }
-}
-
-// ADL won't find it because Path is a typedef. Note that this
-// function prints in native format.
-//
-std::wostream&
-operator<< (std::wostream& os, XSDFrontend::SemanticGraph::Path const& path);
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_ELEMENTS_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/enumeration.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/enumeration.cxx
deleted file mode 100644
index 93bcf79..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/enumeration.cxx
+++ /dev/null
@@ -1,59 +0,0 @@
-// file : xsd-frontend/semantic-graph/enumeration.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/enumeration.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- // Enumeration
- //
- Enumeration::
- Enumeration (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- // Enumerator
- //
- Enumerator::
- Enumerator (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- // Enumeration
- //
- struct EnumerationInit
- {
- EnumerationInit ()
- {
- type_info ti (typeid (Enumeration));
- ti.add_base (typeid (Complex));
- insert (ti);
- }
- } enumeration_init_;
-
-
- // Enumerator
- //
- struct EnumeratorInit
- {
- EnumeratorInit ()
- {
- type_info ti (typeid (Enumerator));
- ti.add_base (typeid (Instance));
- insert (ti);
- }
- } enumerator_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/enumeration.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/enumeration.hxx
deleted file mode 100644
index 90a33d1..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/enumeration.hxx
+++ /dev/null
@@ -1,30 +0,0 @@
-// file : xsd-frontend/semantic-graph/enumeration.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_ENUMERATION_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_ENUMERATION_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-#include <xsd-frontend/semantic-graph/complex.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class Enumeration: public virtual Complex
- {
- public:
- Enumeration (Path const& file, unsigned long line, unsigned long column);
- };
-
-
- class Enumerator: public virtual Instance
- {
- public:
- Enumerator (Path const& file, unsigned long line, unsigned long column);
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_ENUMERATION_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.cxx
deleted file mode 100644
index cc98449..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.cxx
+++ /dev/null
@@ -1,1143 +0,0 @@
-// file : xsd-frontend/semantic-graph/fundamental.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Note, that this file is automatically generated!
-//
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/fundamental.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- namespace Fundamental
- {
- using compiler::type_info;
-
- // Type
- //
- namespace
- {
- struct TypeInit
- {
- TypeInit ()
- {
- type_info ti (typeid (Type));
- ti.add_base (typeid (SemanticGraph::Type));
- insert (ti);
- }
- } any_type_init_;
- }
-
- Type::
- Type ()
- {
- }
-
-
- // Byte
- //
- namespace
- {
- struct ByteInit
- {
- ByteInit ()
- {
- type_info ti (typeid (Byte));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } byte_init_;
- }
-
- Byte::
- Byte (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // UnsignedByte
- //
- namespace
- {
- struct UnsignedByteInit
- {
- UnsignedByteInit ()
- {
- type_info ti (typeid (UnsignedByte));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } unsigned_byte_init_;
- }
-
- UnsignedByte::
- UnsignedByte (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Short
- //
- namespace
- {
- struct ShortInit
- {
- ShortInit ()
- {
- type_info ti (typeid (Short));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } short_init_;
- }
-
- Short::
- Short (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // UnsignedShort
- //
- namespace
- {
- struct UnsignedShortInit
- {
- UnsignedShortInit ()
- {
- type_info ti (typeid (UnsignedShort));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } unsigned_short_init_;
- }
-
- UnsignedShort::
- UnsignedShort (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Int
- //
- namespace
- {
- struct IntInit
- {
- IntInit ()
- {
- type_info ti (typeid (Int));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } int_init_;
- }
-
- Int::
- Int (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // UnsignedInt
- //
- namespace
- {
- struct UnsignedIntInit
- {
- UnsignedIntInit ()
- {
- type_info ti (typeid (UnsignedInt));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } unsigned_int_init_;
- }
-
- UnsignedInt::
- UnsignedInt (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Long
- //
- namespace
- {
- struct LongInit
- {
- LongInit ()
- {
- type_info ti (typeid (Long));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } long_init_;
- }
-
- Long::
- Long (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // UnsignedLong
- //
- namespace
- {
- struct UnsignedLongInit
- {
- UnsignedLongInit ()
- {
- type_info ti (typeid (UnsignedLong));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } unsigned_long_init_;
- }
-
- UnsignedLong::
- UnsignedLong (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Integer
- //
- namespace
- {
- struct IntegerInit
- {
- IntegerInit ()
- {
- type_info ti (typeid (Integer));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } integer_init_;
- }
-
- Integer::
- Integer (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // NonPositiveInteger
- //
- namespace
- {
- struct NonPositiveIntegerInit
- {
- NonPositiveIntegerInit ()
- {
- type_info ti (typeid (NonPositiveInteger));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } non_positive_integer_init_;
- }
-
- NonPositiveInteger::
- NonPositiveInteger (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // NonNegativeInteger
- //
- namespace
- {
- struct NonNegativeIntegerInit
- {
- NonNegativeIntegerInit ()
- {
- type_info ti (typeid (NonNegativeInteger));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } non_negative_integer_init_;
- }
-
- NonNegativeInteger::
- NonNegativeInteger (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // PositiveInteger
- //
- namespace
- {
- struct PositiveIntegerInit
- {
- PositiveIntegerInit ()
- {
- type_info ti (typeid (PositiveInteger));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } positive_integer_init_;
- }
-
- PositiveInteger::
- PositiveInteger (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // NegativeInteger
- //
- namespace
- {
- struct NegativeIntegerInit
- {
- NegativeIntegerInit ()
- {
- type_info ti (typeid (NegativeInteger));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } negative_integer_init_;
- }
-
- NegativeInteger::
- NegativeInteger (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Boolean
- //
- namespace
- {
- struct BooleanInit
- {
- BooleanInit ()
- {
- type_info ti (typeid (Boolean));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } boolean_init_;
- }
-
- Boolean::
- Boolean (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Float
- //
- namespace
- {
- struct FloatInit
- {
- FloatInit ()
- {
- type_info ti (typeid (Float));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } float_init_;
- }
-
- Float::
- Float (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Double
- //
- namespace
- {
- struct DoubleInit
- {
- DoubleInit ()
- {
- type_info ti (typeid (Double));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } double_init_;
- }
-
- Double::
- Double (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Decimal
- //
- namespace
- {
- struct DecimalInit
- {
- DecimalInit ()
- {
- type_info ti (typeid (Decimal));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } decimal_init_;
- }
-
- Decimal::
- Decimal (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // String
- //
- namespace
- {
- struct StringInit
- {
- StringInit ()
- {
- type_info ti (typeid (String));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } string_init_;
- }
-
- String::
- String (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // NormalizedString
- //
- namespace
- {
- struct NormalizedStringInit
- {
- NormalizedStringInit ()
- {
- type_info ti (typeid (NormalizedString));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } normalized_string_init_;
- }
-
- NormalizedString::
- NormalizedString (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Token
- //
- namespace
- {
- struct TokenInit
- {
- TokenInit ()
- {
- type_info ti (typeid (Token));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } token_init_;
- }
-
- Token::
- Token (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Name
- //
- namespace
- {
- struct NameInit
- {
- NameInit ()
- {
- type_info ti (typeid (Name));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } name_init_;
- }
-
- Name::
- Name (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // NameToken
- //
- namespace
- {
- struct NameTokenInit
- {
- NameTokenInit ()
- {
- type_info ti (typeid (NameToken));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } name_token_init_;
- }
-
- NameToken::
- NameToken (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // NameTokens
- //
- namespace
- {
- struct NameTokensInit
- {
- NameTokensInit ()
- {
- type_info ti (typeid (NameTokens));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } name_tokens_init_;
- }
-
- NameTokens::
- NameTokens (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // NCName
- //
- namespace
- {
- struct NCNameInit
- {
- NCNameInit ()
- {
- type_info ti (typeid (NCName));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } NC_name_init_;
- }
-
- NCName::
- NCName (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Language
- //
- namespace
- {
- struct LanguageInit
- {
- LanguageInit ()
- {
- type_info ti (typeid (Language));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } language_init_;
- }
-
- Language::
- Language (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // QName
- //
- namespace
- {
- struct QNameInit
- {
- QNameInit ()
- {
- type_info ti (typeid (QName));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } q_name_init_;
- }
-
- QName::
- QName (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Id
- //
- namespace
- {
- struct IdInit
- {
- IdInit ()
- {
- type_info ti (typeid (Id));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } id_init_;
- }
-
- Id::
- Id (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // IdRef
- //
- namespace
- {
- struct IdRefInit
- {
- IdRefInit ()
- {
- type_info ti (typeid (IdRef));
- ti.add_base (typeid (Type));
- ti.add_base (typeid (Specialization));
- insert (ti);
- }
-
- } id_ref_init_;
- }
-
- IdRef::
- IdRef (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // IdRefs
- //
- namespace
- {
- struct IdRefsInit
- {
- IdRefsInit ()
- {
- type_info ti (typeid (IdRefs));
- ti.add_base (typeid (Type));
- ti.add_base (typeid (Specialization));
- insert (ti);
- }
-
- } id_refs_init_;
- }
-
- IdRefs::
- IdRefs (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // AnyURI
- //
- namespace
- {
- struct AnyURIInit
- {
- AnyURIInit ()
- {
- type_info ti (typeid (AnyURI));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } any_URI_init_;
- }
-
- AnyURI::
- AnyURI (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Base64Binary
- //
- namespace
- {
- struct Base64BinaryInit
- {
- Base64BinaryInit ()
- {
- type_info ti (typeid (Base64Binary));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } base_64_binary_init_;
- }
-
- Base64Binary::
- Base64Binary (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // HexBinary
- //
- namespace
- {
- struct HexBinaryInit
- {
- HexBinaryInit ()
- {
- type_info ti (typeid (HexBinary));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } hex_binary_init_;
- }
-
- HexBinary::
- HexBinary (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Date
- //
- namespace
- {
- struct DateInit
- {
- DateInit ()
- {
- type_info ti (typeid (Date));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } date_init_;
- }
-
- Date::
- Date (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // DateTime
- //
- namespace
- {
- struct DateTimeInit
- {
- DateTimeInit ()
- {
- type_info ti (typeid (DateTime));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } date_time_init_;
- }
-
- DateTime::
- DateTime (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Duration
- //
- namespace
- {
- struct DurationInit
- {
- DurationInit ()
- {
- type_info ti (typeid (Duration));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } duration_init_;
- }
-
- Duration::
- Duration (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Day
- //
- namespace
- {
- struct DayInit
- {
- DayInit ()
- {
- type_info ti (typeid (Day));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } day_init_;
- }
-
- Day::
- Day (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Month
- //
- namespace
- {
- struct MonthInit
- {
- MonthInit ()
- {
- type_info ti (typeid (Month));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } month_init_;
- }
-
- Month::
- Month (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // MonthDay
- //
- namespace
- {
- struct MonthDayInit
- {
- MonthDayInit ()
- {
- type_info ti (typeid (MonthDay));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } month_day_init_;
- }
-
- MonthDay::
- MonthDay (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Year
- //
- namespace
- {
- struct YearInit
- {
- YearInit ()
- {
- type_info ti (typeid (Year));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } year_init_;
- }
-
- Year::
- Year (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // YearMonth
- //
- namespace
- {
- struct YearMonthInit
- {
- YearMonthInit ()
- {
- type_info ti (typeid (YearMonth));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } year_month_init_;
- }
-
- YearMonth::
- YearMonth (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Time
- //
- namespace
- {
- struct TimeInit
- {
- TimeInit ()
- {
- type_info ti (typeid (Time));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } time_init_;
- }
-
- Time::
- Time (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Entity
- //
- namespace
- {
- struct EntityInit
- {
- EntityInit ()
- {
- type_info ti (typeid (Entity));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } entity_init_;
- }
-
- Entity::
- Entity (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Entities
- //
- namespace
- {
- struct EntitiesInit
- {
- EntitiesInit ()
- {
- type_info ti (typeid (Entities));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } entities_init_;
- }
-
- Entities::
- Entities (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // Notation
- //
- namespace
- {
- struct NotationInit
- {
- NotationInit ()
- {
- type_info ti (typeid (Notation));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } notation_init_;
- }
-
- Notation::
- Notation (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.cxx.m4 b/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.cxx.m4
deleted file mode 100644
index c336ab8..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.cxx.m4
+++ /dev/null
@@ -1,211 +0,0 @@
-divert(-1)
-
-# file : xsd-frontend/semantic-graph/fundamental.cxx.m4
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include(`fundamental.m4')
-
-define(`fundamental_type',
- `fundamental_type_impl(`make_class_name(`$1')', `make_var_name(`$1')')')
-
-
-define(`fundamental_type_impl', `
-
- // $1
- //
- namespace
- {
- struct $1Init
- {
- $1Init ()
- {
- type_info ti (typeid ($1));
- ti.add_base (typeid (Type));
- insert (ti);
- }
-
- } $2_init_;
- }
-
- $1::
- $1 (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }')
-
-divert(0)dnl
-dnl
-dnl
-dnl
-// file : xsd-frontend/semantic-graph/fundamental.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Note, that this file is automatically generated!
-//
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/fundamental.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- namespace Fundamental
- {
- using compiler::type_info;
-
- // Type
- //
- namespace
- {
- struct TypeInit
- {
- TypeInit ()
- {
- type_info ti (typeid (Type));
- ti.add_base (typeid (SemanticGraph::Type));
- insert (ti);
- }
- } any_type_init_;
- }
-
- Type::
- Type ()
- {
- }
-dnl
-dnl Integers.
-dnl
-fundamental_type(`byte')
-fundamental_type(`unsigned byte')
-fundamental_type(`short')
-fundamental_type(`unsigned short')
-fundamental_type(`int')
-fundamental_type(`unsigned int')
-fundamental_type(`long')
-fundamental_type(`unsigned long')
-fundamental_type(`integer')
-fundamental_type(`non positive integer')
-fundamental_type(`non negative integer')
-fundamental_type(`positive integer')
-fundamental_type(`negative integer')
-dnl
-dnl Boolean.
-dnl
-fundamental_type(`boolean')
-dnl
-dnl Floats.
-dnl
-fundamental_type(`float')
-fundamental_type(`double')
-fundamental_type(`decimal')
-dnl
-dnl Strings.
-dnl
-fundamental_type(`string')
-fundamental_type(`normalized string')
-fundamental_type(`token')
-fundamental_type(`name')
-fundamental_type(`name token')
-fundamental_type(`name tokens')
-fundamental_type(`NC name')
-fundamental_type(`language')
-dnl
-dnl Qualified name.
-dnl
-fundamental_type(`q name')
-dnl
-dnl ID/IDREF.
-dnl
-fundamental_type(`id')
-
-
- // IdRef
- //
- namespace
- {
- struct IdRefInit
- {
- IdRefInit ()
- {
- type_info ti (typeid (IdRef));
- ti.add_base (typeid (Type));
- ti.add_base (typeid (Specialization));
- insert (ti);
- }
-
- } id_ref_init_;
- }
-
- IdRef::
- IdRef (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-
-
- // IdRefs
- //
- namespace
- {
- struct IdRefsInit
- {
- IdRefsInit ()
- {
- type_info ti (typeid (IdRefs));
- ti.add_base (typeid (Type));
- ti.add_base (typeid (Specialization));
- insert (ti);
- }
-
- } id_refs_init_;
- }
-
- IdRefs::
- IdRefs (Path const& file,
- unsigned long line,
- unsigned long column)
- : Node (file, line, column)
- {
- }
-dnl
-dnl URI.
-dnl
-fundamental_type(`any URI')
-dnl
-dnl Binary.
-dnl
-fundamental_type(`base 64 binary')
-fundamental_type(`hex binary')
-dnl
-dnl Date/time.
-dnl
-fundamental_type(`date')
-fundamental_type(`date time')
-fundamental_type(`duration')
-fundamental_type(`day')
-fundamental_type(`month')
-fundamental_type(`month day')
-fundamental_type(`year')
-fundamental_type(`year month')
-fundamental_type(`time')
-dnl
-dnl Entity.
-dnl
-fundamental_type(`entity')
-fundamental_type(`entities')
-dnl
-dnl Notation.
-dnl
-fundamental_type(`notation')
-dnl
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.hxx
deleted file mode 100644
index d810824..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.hxx
+++ /dev/null
@@ -1,516 +0,0 @@
-// file : xsd-frontend/semantic-graph/fundamental.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Note, that this file is automatically generated!
-//
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_FUNDAMENTAL_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_FUNDAMENTAL_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- namespace Fundamental
- {
- //
- //
- class Type: public virtual SemanticGraph::Type
- {
- protected:
- Type ();
- };
-
-
- //
- //
- class Byte: public virtual Type
- {
- public:
- Byte (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class UnsignedByte: public virtual Type
- {
- public:
- UnsignedByte (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Short: public virtual Type
- {
- public:
- Short (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class UnsignedShort: public virtual Type
- {
- public:
- UnsignedShort (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Int: public virtual Type
- {
- public:
- Int (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class UnsignedInt: public virtual Type
- {
- public:
- UnsignedInt (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Long: public virtual Type
- {
- public:
- Long (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class UnsignedLong: public virtual Type
- {
- public:
- UnsignedLong (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Integer: public virtual Type
- {
- public:
- Integer (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class NonPositiveInteger: public virtual Type
- {
- public:
- NonPositiveInteger (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class NonNegativeInteger: public virtual Type
- {
- public:
- NonNegativeInteger (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class PositiveInteger: public virtual Type
- {
- public:
- PositiveInteger (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class NegativeInteger: public virtual Type
- {
- public:
- NegativeInteger (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Boolean: public virtual Type
- {
- public:
- Boolean (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Float: public virtual Type
- {
- public:
- Float (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Double: public virtual Type
- {
- public:
- Double (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Decimal: public virtual Type
- {
- public:
- Decimal (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class String: public virtual Type
- {
- public:
- String (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class NormalizedString: public virtual Type
- {
- public:
- NormalizedString (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Token: public virtual Type
- {
- public:
- Token (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Name: public virtual Type
- {
- public:
- Name (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class NameToken: public virtual Type
- {
- public:
- NameToken (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class NameTokens: public virtual Type
- {
- public:
- NameTokens (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class NCName: public virtual Type
- {
- public:
- NCName (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Language: public virtual Type
- {
- public:
- Language (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class QName: public virtual Type
- {
- public:
- QName (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Id: public virtual Type
- {
- public:
- Id (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class IdRef: public virtual Type,
- public virtual Specialization
- {
- public:
- IdRef (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class IdRefs: public virtual Type,
- public virtual Specialization
- {
- public:
- IdRefs (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class AnyURI: public virtual Type
- {
- public:
- AnyURI (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Base64Binary: public virtual Type
- {
- public:
- Base64Binary (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class HexBinary: public virtual Type
- {
- public:
- HexBinary (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Date: public virtual Type
- {
- public:
- Date (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class DateTime: public virtual Type
- {
- public:
- DateTime (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Duration: public virtual Type
- {
- public:
- Duration (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Day: public virtual Type
- {
- public:
- Day (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Month: public virtual Type
- {
- public:
- Month (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class MonthDay: public virtual Type
- {
- public:
- MonthDay (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Year: public virtual Type
- {
- public:
- Year (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class YearMonth: public virtual Type
- {
- public:
- YearMonth (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Time: public virtual Type
- {
- public:
- Time (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Entity: public virtual Type
- {
- public:
- Entity (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Entities: public virtual Type
- {
- public:
- Entities (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class Notation: public virtual Type
- {
- public:
- Notation (Path const& file,
- unsigned long line,
- unsigned long column);
- };
- }
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_FUNDAMENTAL_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.hxx.m4 b/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.hxx.m4
deleted file mode 100644
index 52c9c89..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.hxx.m4
+++ /dev/null
@@ -1,155 +0,0 @@
-divert(-1)
-
-# file : xsd-frontend/semantic-graph/fundamental.hxx.m4
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include(`fundamental.m4')
-
-define(`fundamental_type', `fundamental_type_impl(`make_class_name(`$1')', `$1')')
-
-define(`fundamental_type_impl', `
-
- //
- //
- class $1: public virtual Type
- {
- public:
- $1 (Path const& file,
- unsigned long line,
- unsigned long column);
- };')
-divert(0)dnl
-dnl
-dnl
-dnl
-// file : xsd-frontend/semantic-graph/fundamental.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Note, that this file is automatically generated!
-//
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_FUNDAMENTAL_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_FUNDAMENTAL_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- namespace Fundamental
- {
- //
- //
- class Type: public virtual SemanticGraph::Type
- {
- protected:
- Type ();
- };
-dnl
-dnl Integers.
-dnl
-fundamental_type(`byte')
-fundamental_type(`unsigned byte')
-fundamental_type(`short')
-fundamental_type(`unsigned short')
-fundamental_type(`int')
-fundamental_type(`unsigned int')
-fundamental_type(`long')
-fundamental_type(`unsigned long')
-fundamental_type(`integer')
-fundamental_type(`non positive integer')
-fundamental_type(`non negative integer')
-fundamental_type(`positive integer')
-fundamental_type(`negative integer')
-dnl
-dnl Boolean.
-dnl
-fundamental_type(`boolean')
-dnl
-dnl Floats.
-dnl
-fundamental_type(`float')
-fundamental_type(`double')
-fundamental_type(`decimal')
-dnl
-dnl Strings.
-dnl
-fundamental_type(`string')
-fundamental_type(`normalized string')
-fundamental_type(`token')
-fundamental_type(`name')
-fundamental_type(`name token')
-fundamental_type(`name tokens')
-fundamental_type(`NC name')
-fundamental_type(`language')
-dnl
-dnl Qualified name.
-dnl
-fundamental_type(`q name')
-dnl
-dnl ID/IDREF.
-dnl
-fundamental_type(`id')
-
-
- //
- //
- class IdRef: public virtual Type,
- public virtual Specialization
- {
- public:
- IdRef (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-
-
- //
- //
- class IdRefs: public virtual Type,
- public virtual Specialization
- {
- public:
- IdRefs (Path const& file,
- unsigned long line,
- unsigned long column);
- };
-dnl
-dnl URI.
-dnl
-fundamental_type(`any URI')
-dnl
-dnl Binary.
-dnl
-fundamental_type(`base 64 binary')
-fundamental_type(`hex binary')
-dnl
-dnl Date/time.
-dnl
-fundamental_type(`date')
-fundamental_type(`date time')
-fundamental_type(`duration')
-fundamental_type(`day')
-fundamental_type(`month')
-fundamental_type(`month day')
-fundamental_type(`year')
-fundamental_type(`year month')
-fundamental_type(`time')
-dnl
-dnl Entity.
-dnl
-fundamental_type(`entity')
-fundamental_type(`entities')
-dnl
-dnl Notation.
-dnl
-fundamental_type(`notation')
-dnl
- }
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_FUNDAMENTAL_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.m4 b/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.m4
deleted file mode 100644
index b9243f7..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/fundamental.m4
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : xsd-frontend/semantic-graph/fundamental.m4
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-define(`upcase', `translit(`$*', `a-z', `A-Z')')
-
-
-define(`capitalize_word',
- `regexp(`$1', `^\(.\)\(.*\)', `upcase(`\1')`\2'')')
-
-
-define(`capitalize',
- `patsubst(`$1', `\w+', `capitalize_word(`\&')')')
-
-define(`make_class_name', `patsubst(capitalize(`$1'), ` ')')
-
-define(`make_var_name', `patsubst(`$1', ` ', `_')')
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/list.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/list.cxx
deleted file mode 100644
index f62f617..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/list.cxx
+++ /dev/null
@@ -1,34 +0,0 @@
-// file : xsd-frontend/semantic-graph/list.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/list.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- List::
- List (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct ListInit
- {
- ListInit ()
- {
- type_info ti (typeid (List));
- ti.add_base (typeid (Specialization));
- insert (ti);
- }
- } list_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/list.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/list.hxx
deleted file mode 100644
index d7f370f..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/list.hxx
+++ /dev/null
@@ -1,22 +0,0 @@
-// file : xsd-frontend/semantic-graph/list.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_LIST_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_LIST_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class List: public virtual Specialization
- {
- public:
- List (Path const& file, unsigned long line, unsigned long column);
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_LIST_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/namespace.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/namespace.cxx
deleted file mode 100644
index e33a892..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/namespace.cxx
+++ /dev/null
@@ -1,34 +0,0 @@
-// file : xsd-frontend/semantic-graph/namespace.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/namespace.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- Namespace::
- Namespace (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct NamespaceInit
- {
- NamespaceInit ()
- {
- type_info ti (typeid (Namespace));
- ti.add_base (typeid (Scope));
- insert (ti);
- }
- } namespace_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/namespace.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/namespace.hxx
deleted file mode 100644
index ccc9d61..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/namespace.hxx
+++ /dev/null
@@ -1,27 +0,0 @@
-// file : xsd-frontend/semantic-graph/namespace.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_NAMESPACE_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_NAMESPACE_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class Namespace : public virtual Scope
- {
- public:
- Namespace (Path const& file, unsigned long line, unsigned long column);
-
- void
- add_edge_right (BelongsToNamespace&) {}
-
- using Scope::add_edge_right;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_NAMESPACE_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/particle.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/particle.cxx
deleted file mode 100644
index c3269e6..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/particle.cxx
+++ /dev/null
@@ -1,54 +0,0 @@
-// file : xsd-frontend/semantic-graph/particle.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/particle.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- // ContainsParticle
- //
- ContainsParticle::
- ContainsParticle (unsigned long min, unsigned long max)
- : particle_ (0), compositor_ (0), min_ (min), max_ (max)
- {
- }
-
- // Particle
- //
- Particle::
- Particle ()
- : contained_particle_ (0)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct ContainsParticleInit
- {
- ContainsParticleInit ()
- {
- type_info ti (typeid (ContainsParticle));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } contains_particle_init_;
-
- struct ParticleInit
- {
- ParticleInit ()
- {
- type_info ti (typeid (Particle));
- ti.add_base (typeid (Node));
- insert (ti);
- }
- } particle_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/particle.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/particle.hxx
deleted file mode 100644
index a7f0755..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/particle.hxx
+++ /dev/null
@@ -1,140 +0,0 @@
-// file : xsd-frontend/semantic-graph/particle.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_PARTICLE_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_PARTICLE_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- //
- //
- class Particle;
- class Compositor;
-
-
- //
- //
- class ContainsParticle: public virtual Edge
- {
- public:
- Particle&
- particle () const
- {
- return *particle_;
- }
-
- Compositor&
- compositor () const
- {
- return *compositor_;
- }
-
- public:
- unsigned long
- min () const
- {
- return min_;
- }
-
- unsigned long
- max () const
- {
- return max_;
- }
-
- public:
- ContainsParticle (unsigned long min, unsigned long max);
-
- void
- set_left_node (Compositor& n)
- {
- compositor_ = &n;
- }
-
- void
- set_right_node (Particle& n)
- {
- particle_ = &n;
- }
-
- void
- clear_left_node (Compositor& n)
- {
- assert (compositor_ == &n);
- compositor_ = 0;
- }
-
- void
- clear_right_node (Particle& n)
- {
- assert (particle_ == &n);
- particle_ = 0;
- }
-
- private:
- Particle* particle_;
- Compositor* compositor_;
- unsigned long min_, max_;
- };
-
- //
- //
- class Particle: public virtual Node
- {
- public:
- bool
- contained_particle_p ()
- {
- return contained_particle_ != 0;
- }
-
- ContainsParticle&
- contained_particle ()
- {
- assert (contained_particle_ != 0);
- return *contained_particle_;
- }
-
- public:
- unsigned long
- min () const
- {
- assert (contained_particle_ != 0);
- return contained_particle_->min ();
- }
-
- unsigned long
- max () const
- {
- assert (contained_particle_ != 0);
- return contained_particle_->max ();
- }
-
- public:
- Particle ();
-
- void
- add_edge_right (ContainsParticle& e)
- {
- contained_particle_ = &e;
- }
-
- void
- remove_edge_right (ContainsParticle& e)
- {
- assert (contained_particle_ == &e);
- contained_particle_ = 0;
- }
-
- private:
- ContainsParticle* contained_particle_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_PARTICLE_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/schema.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/schema.cxx
deleted file mode 100644
index d1cbf25..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/schema.cxx
+++ /dev/null
@@ -1,130 +0,0 @@
-// file : xsd-frontend/semantic-graph/schema.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- // Schema
- //
- Schema::NamesIteratorPair Schema::
- find (Name const& name) const
- {
- // Here we are going to create an illusion that the namespace
- // hierarchy is flat.
- names_.clear ();
- schemas_.clear ();
-
- find_ (name, names_, schemas_);
-
- return NamesIteratorPair (NamesConstIterator (names_.begin ()),
- NamesConstIterator (names_.end ()));
- }
-
- void Schema::
- find_ (Name const& name, NamesList& names, SchemaSet& set) const
- {
- set.insert (this);
-
- // Check our own namespace first so it will end up first in the list.
- //
- NamesIteratorPair pair (Scope::find (name));
- names.insert (names.end (), pair.first.base (), pair.second.base ());
-
- for (UsesIterator i (uses_begin ()), end (uses_end ()); i != end; ++i)
- {
- Schema& s (i->schema ());
-
- if (set.find (&s) == set.end ())
- s.find_ (name, names, set);
- }
- }
-
- namespace
- {
- using compiler::type_info;
-
- // Uses
- //
- struct UsesInit
- {
- UsesInit ()
- {
- type_info ti (typeid (Uses));
- ti.add_base (typeid (Edge));
- insert (ti);
- }
- } uses_init_;
-
-
- // Implies
- //
- struct ImpliesInit
- {
- ImpliesInit ()
- {
- type_info ti (typeid (Implies));
- ti.add_base (typeid (Uses));
- insert (ti);
- }
- } implies_init_;
-
-
- // Sources
- //
- struct SourcesInit
- {
- SourcesInit ()
- {
- type_info ti (typeid (Sources));
- ti.add_base (typeid (Uses));
- insert (ti);
- }
- } sources_init_;
-
-
- // Includes
- //
- struct IncludesInit
- {
- IncludesInit ()
- {
- type_info ti (typeid (Includes));
- ti.add_base (typeid (Uses));
- insert (ti);
- }
- } includes_init_;
-
-
- // Imports
- //
- struct ImportsInit
- {
- ImportsInit ()
- {
- type_info ti (typeid (Imports));
- ti.add_base (typeid (Uses));
- insert (ti);
- }
- } imports_init_;
-
-
- // Schema
- //
- struct SchemaInit
- {
- SchemaInit ()
- {
- type_info ti (typeid (Schema));
- ti.add_base (typeid (Scope));
- insert (ti);
- }
- } schema_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/schema.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/schema.hxx
deleted file mode 100644
index 803c870..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/schema.hxx
+++ /dev/null
@@ -1,237 +0,0 @@
-// file : xsd-frontend/semantic-graph/schema.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_SCHEMA_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_SCHEMA_HXX
-
-#include <set>
-#include <vector>
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-#include <xsd-frontend/semantic-graph/namespace.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class Schema;
-
- class Uses: public virtual Edge
- {
- public:
- Schema&
- user () const
- {
- return *user_;
- }
-
- Schema&
- schema () const
- {
- return *schema_;
- }
-
- Path
- path () const
- {
- return path_;
- }
-
- public:
- Uses (Path const& path): path_ (path) {}
-
- void
- set_left_node (Schema& s)
- {
- user_ = &s;
- }
-
- void
- set_right_node (Schema& s)
- {
- schema_ = &s;
- }
-
- private:
- Path path_;
- Schema* user_;
- Schema* schema_;
- };
-
-
- //
- //
- class Implies: public virtual Uses
- {
- public:
- Implies (Path const& path): Uses (path) {}
- };
-
-
- //
- //
- class Sources: public virtual Uses
- {
- public:
- Sources (Path const& path): Uses (path) {}
- };
-
-
- //
- //
- class Includes: public virtual Uses
- {
- public:
- Includes (Path const& path): Uses (path) {}
- };
-
-
- //
- //
- class Imports: public virtual Uses
- {
- public:
- Imports (Path const& path): Uses (path) {}
- };
-
- //
- //
- class Schema: public graph, public virtual Scope
- {
- typedef std::vector<Uses*> UsesList;
- typedef std::vector<Uses*> UsedList;
-
- public:
- Schema (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column), graph_ (*this)
- {
- }
-
- private:
- Schema (Schema const&);
- Schema& operator= (Schema const&);
-
- public:
- typedef pointer_iterator<UsesList::const_iterator> UsesIterator;
-
- UsesIterator
- uses_begin () const
- {
- return uses_.begin ();
- }
-
- UsesIterator
- uses_end () const
- {
- return uses_.end ();
- }
-
- public:
- typedef pointer_iterator<UsedList::const_iterator> UsedIterator;
-
- UsedIterator
- used_begin () const
- {
- return used_.begin ();
- }
-
- UsedIterator
- used_end () const
- {
- return used_.end ();
- }
-
- bool
- used_p () const
- {
- return used_begin () != used_end ();
- }
-
- virtual NamesIteratorPair
- find (Name const& name) const;
-
- public:
- using graph::new_edge;
- using graph::reset_left_node;
- using graph::reset_right_node;
- using graph::add_edge_left;
- using graph::add_edge_right;
- using graph::delete_node;
- using graph::delete_edge;
-
- template <typename T>
- T&
- new_node (Path const& file, unsigned long line, unsigned long column)
- {
- return graph_.new_node<T> (file, line, column);
- }
-
- template <typename T, typename A0>
- T&
- new_node (Path const& file, unsigned long line, unsigned long column,
- A0 const& a0)
- {
- return graph_.new_node<T> (file, line, column, a0);
- }
-
- template <typename T, typename A0, typename A1>
- T&
- new_node (Path const& file, unsigned long line, unsigned long column,
- A0 const& a0, A1 const& a1)
- {
- return graph_.new_node<T> (file, line, column, a0, a1);
- }
-
- template <typename T, typename A0, typename A1, typename A2>
- T&
- new_node (Path const& file, unsigned long line, unsigned long column,
- A0 const& a0, A1 const& a1, A2 const& a2)
- {
- return graph_.new_node<T> (file, line, column, a0, a1, a2);
- }
-
- template <typename T, typename A0, typename A1, typename A2,
- typename A3>
- T&
- new_node (Path const& file, unsigned long line, unsigned long column,
- A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3)
- {
- return graph_.new_node<T> (file, line, column, a0, a1, a2, a3);
- }
-
- public:
- using Scope::add_edge_left;
- using Node::add_edge_right;
-
- void
- add_edge_left (Uses& e)
- {
- uses_.push_back (&e);
- }
-
- void
- add_edge_right (Uses& e)
- {
- used_.push_back (&e);
- }
-
- private:
- typedef std::set<Schema const*> SchemaSet;
-
- void
- find_ (Name const& name, NamesList&, SchemaSet&) const;
-
- private:
- graph& graph_;
-
- UsesList uses_;
- UsedList used_;
-
- mutable NamesList names_;
- mutable SchemaSet schemas_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_SCHEMA_HXX
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/union.cxx b/libxsd-frontend/xsd-frontend/semantic-graph/union.cxx
deleted file mode 100644
index 4e7436d..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/union.cxx
+++ /dev/null
@@ -1,34 +0,0 @@
-// file : xsd-frontend/semantic-graph/union.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cutl/compiler/type-info.hxx>
-
-#include <xsd-frontend/semantic-graph/union.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- Union::
- Union (Path const& file, unsigned long line, unsigned long column)
- : Node (file, line, column)
- {
- }
-
- namespace
- {
- using compiler::type_info;
-
- struct UnionInit
- {
- UnionInit ()
- {
- type_info ti (typeid (Union));
- ti.add_base (typeid (Specialization));
- insert (ti);
- }
- } union_init_;
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/semantic-graph/union.hxx b/libxsd-frontend/xsd-frontend/semantic-graph/union.hxx
deleted file mode 100644
index d7ba385..0000000
--- a/libxsd-frontend/xsd-frontend/semantic-graph/union.hxx
+++ /dev/null
@@ -1,22 +0,0 @@
-// file : xsd-frontend/semantic-graph/union.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_UNION_HXX
-#define XSD_FRONTEND_SEMANTIC_GRAPH_UNION_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace SemanticGraph
- {
- class Union: public virtual Specialization
- {
- public:
- Union (Path const& file, unsigned long line, unsigned long column);
- };
- }
-}
-
-#endif // XSD_FRONTEND_SEMANTIC_GRAPH_UNION_HXX
diff --git a/libxsd-frontend/xsd-frontend/transformations/anonymous.cxx b/libxsd-frontend/xsd-frontend/transformations/anonymous.cxx
deleted file mode 100644
index 1c42d98..0000000
--- a/libxsd-frontend/xsd-frontend/transformations/anonymous.cxx
+++ /dev/null
@@ -1,1016 +0,0 @@
-// file : xsd-frontend/transformations/anonymous.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/transformations/anonymous.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <iostream>
-#include <sstream>
-#include <typeinfo>
-
-using std::wcerr;
-using std::endl;
-
-namespace XSDFrontend
-{
- namespace
- {
- using Transformations::AnonymousNameTranslator;
-
- //
- //
- struct CompareMembers: Traversal::Element,
- Traversal::Attribute,
- Traversal::Any,
- Traversal::AnyAttribute
- {
- CompareMembers (SemanticGraph::Nameable& m, bool& r)
- : member_ (m), result_ (r)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Element& x)
- {
- using SemanticGraph::Element;
-
- Element& y (dynamic_cast<Element&> (member_));
-
- // Check cardinalities.
- //
- if (x.min () != y.min () || x.max () != y.max ())
- return;
-
- traverse_member (x);
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& x)
- {
- using SemanticGraph::Attribute;
-
- Attribute& y (dynamic_cast<Attribute&> (member_));
-
- // Check cardinalities.
- //
- if (x.optional_p () != y.optional_p ())
- return;
-
- traverse_member (x);
- }
-
- virtual void
- traverse_member (SemanticGraph::Member& x)
- {
- using SemanticGraph::Member;
-
- Member& y (dynamic_cast<Member&> (member_));
-
- // Check name.
- //
- if (x.name () != y.name ())
- return;
-
- // Check namespace.
- //
- if (x.qualified_p () || y.qualified_p ())
- {
- if (!x.qualified_p () || !y.qualified_p ())
- return;
-
- if (x.namespace_ ().name () != y.namespace_ ().name ())
- return;
- }
-
- // Check type.
- //
- // @@ What if types are anonymous and structurally equal?
- //
- if (&x.type () != &y.type ())
- return;
-
- // Check default/fixed values.
- //
- if (x.default_p () != y.default_p () || x.fixed_p () != y.fixed_p ())
- return;
-
- if (x.default_p () && x.value () != y.value ())
- return;
-
- result_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Any&)
- {
- //@@ TODO
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute&)
- {
- //@@ TODO
- }
-
- private:
- SemanticGraph::Nameable& member_;
- bool& result_;
- };
-
- // Compare two types for structural equality.
- //
- struct CompareTypes: Traversal::List,
- Traversal::Union,
- Traversal::Enumeration,
- Traversal::Complex
- {
- CompareTypes (SemanticGraph::Type& t, bool& r)
- : type_ (t), result_ (r)
- {
- }
-
-
- virtual void
- traverse (SemanticGraph::List&)
- {
- using SemanticGraph::List;
-
- //List& y (dynamic_cast<List&> (type_));
- }
-
- virtual void
- traverse (SemanticGraph::Union& x)
- {
- using SemanticGraph::Union;
-
- Union& y (dynamic_cast<Union&> (type_));
-
- Union::ArgumentedIterator ix (x.argumented_begin ()),
- iy (y.argumented_begin ());
-
- for (; ix != x.argumented_end () && iy != y.argumented_end ();
- ++ix, ++iy)
- {
- // @@ Anon structurally equivalent.
- //
- if (&iy->type () != &ix->type ())
- return;
- }
-
- result_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Enumeration& x)
- {
- using SemanticGraph::Enumeration;
-
- Enumeration& y (dynamic_cast<Enumeration&> (type_));
-
- // Bases should be the same.
- //
- if (&x.inherits ().base () != &y.inherits ().base ())
- return;
-
- // Make sure facets match.
- //
- using SemanticGraph::Restricts;
-
- Restricts& rx (dynamic_cast<Restricts&> (x.inherits ()));
- Restricts& ry (dynamic_cast<Restricts&> (y.inherits ()));
-
- if (rx.facets () != ry.facets ())
- return;
-
- // Compare enumerators.
- //
- using SemanticGraph::Scope;
-
- Scope::NamesIterator ix (x.names_begin ()), iy (y.names_begin ());
- for (; ix != x.names_end () && iy != y.names_end (); ++ix, ++iy)
- {
- if (ix->name () != iy->name ())
- return;
- }
-
- if (ix != x.names_end () || iy != y.names_end ())
- return;
-
- result_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Complex& x)
- {
- using SemanticGraph::Complex;
-
- Complex& y (dynamic_cast<Complex&> (type_));
-
- // Check inheritance.
- //
- if (x.inherits_p () || y.inherits_p ())
- {
- // They both must inherits.
- //
- if (!x.inherits_p () || !y.inherits_p ())
- return;
-
- // With the same kind of inheritance (restriction or extension).
- //
- if (typeid (x.inherits ()) != typeid (y.inherits ()))
- return;
-
- // Bases should be the same.
- //
- // @@ What if bases are anonymous?
- //
- if (&x.inherits ().base () != &y.inherits ().base ())
- return;
-
- // If it is a restriction, make sure facets match.
- //
- using SemanticGraph::Restricts;
-
- if (x.inherits ().is_a<Restricts> ())
- {
- Restricts& rx (dynamic_cast<Restricts&> (x.inherits ()));
- Restricts& ry (dynamic_cast<Restricts&> (y.inherits ()));
-
- if (rx.facets () != ry.facets ())
- return;
- }
- }
-
- // Check the member list.
- //
- // @@ Ignoring compositors at the moment.
- //
- using SemanticGraph::Scope;
-
- Scope::NamesIterator ix (x.names_begin ()), iy (y.names_begin ());
- for (; ix != x.names_end () && iy != y.names_end (); ++ix, ++iy)
- {
- if (typeid (ix->named ()) != typeid (iy->named ()))
- return;
-
- bool equal (false);
- CompareMembers t (iy->named (), equal);
- t.dispatch (ix->named ());
-
- if (!equal)
- return;
- }
-
- if (ix != x.names_end () || iy != y.names_end ())
- return;
-
- result_ = true;
- }
-
- private:
- SemanticGraph::Type& type_;
- bool& result_;
- };
-
- //
- //
- class Context
- {
- public:
- Context (SemanticGraph::Schema& schema_,
- SemanticGraph::Path const& file,
- AnonymousNameTranslator& trans_,
- bool du)
- : schema_path_ (file),
- ns_ (0),
- failed_ (false),
- trans (trans_),
- detect_unstable (du),
- schema (schema_),
- schema_path (schema_path_),
- ns (ns_),
- failed (failed_)
- {
-
- }
-
- protected:
- Context (Context& c)
- : trans (c.trans),
- detect_unstable (c.detect_unstable),
- schema (c.schema),
- schema_path (c.schema_path),
- ns (c.ns),
- failed (c.failed)
- {
- }
-
- public:
-
- bool
- structurally_equal (SemanticGraph::Type& x, SemanticGraph::Type& y)
- {
- if (typeid (x) != typeid (y))
- return false;
-
- bool r (false);
- CompareTypes t (y, r);
- t.dispatch (x);
- return r;
- }
-
- struct UnstableConflict
- {
- UnstableConflict (SemanticGraph::Type& type)
- : type_ (type)
- {
- }
-
- SemanticGraph::Type&
- type () const
- {
- return type_;
- }
-
- private:
- SemanticGraph::Type& type_;
- };
-
- SemanticGraph::Type*
- conflict (String const& name)
- {
- using SemanticGraph::Type;
- using SemanticGraph::Schema;
-
- if (Type* t1 = find (schema, name))
- {
- // Check if this is a stable conflict. A conflict is unstable
- // if a conflicting type is visible from the root schema but
- // is not visible from the schema where the conflicting
- // element is defined.
- //
- if (detect_unstable)
- {
- Schema& s (dynamic_cast<Schema&> (ns->scope ()));
-
- Type* t2 (find (s, name));
-
- if (t1 != t2)
- throw UnstableConflict (*t1);
- }
-
- return t1;
- }
-
- return 0;
- }
-
- SemanticGraph::Type*
- find (SemanticGraph::Schema& schema, String const& name)
- {
- using SemanticGraph::Type;
- using SemanticGraph::Scope;
- using SemanticGraph::Namespace;
-
- String ns_name (ns->name ());
-
- // Get all namespaces across include/import hierarchy with
- // our namespace name.
- //
- Scope::NamesIteratorPair nip (schema.find (ns_name));
-
- for (; nip.first != nip.second; ++nip.first)
- {
- Namespace& ns (dynamic_cast<Namespace&> (nip.first->named ()));
-
- Scope::NamesIteratorPair types (ns.find (name));
-
- for (; types.first != types.second; ++types.first)
- {
- if (Type* t = dynamic_cast<Type*> (&types.first->named ()))
- {
- return t;
- }
- }
- }
-
- return 0;
- }
-
- public:
- SemanticGraph::Path
- path (SemanticGraph::Nameable& n)
- {
- using SemanticGraph::Scope;
- using SemanticGraph::Schema;
- using SemanticGraph::Uses;
-
- Schema* schema (0);
-
- for (Scope* s (dynamic_cast<Scope*> (&n)
- ? dynamic_cast<Scope*> (&n) : &n.scope ());;
- s = &s->scope ())
- {
- if ((schema = dynamic_cast<Schema*> (s)))
- break;
- }
-
- if (!schema->used_p ())
- return schema_path;
-
- Uses& u (*schema->used_begin ());
- return u.path ();
- }
-
- public:
- String
- xpath (SemanticGraph::Nameable& n)
- {
- if (dynamic_cast<SemanticGraph::Namespace*> (&n) != 0)
- return L"<namespace-level>"; // There is a bug if you see this.
-
- assert (n.named_p ());
-
- SemanticGraph::Scope& scope (n.scope ());
-
- if (dynamic_cast<SemanticGraph::Namespace*> (&scope) != 0)
- return n.name ();
-
- return xpath (scope) + L"/" + n.name ();
- }
-
- private:
- SemanticGraph::Path const schema_path_;
- SemanticGraph::Namespace* ns_;
- bool failed_;
-
- public:
- AnonymousNameTranslator& trans;
- bool detect_unstable;
-
- public:
- SemanticGraph::Schema& schema;
- SemanticGraph::Path const& schema_path;
- SemanticGraph::Namespace*& ns;
- bool& failed;
- };
-
-
- // Go into implied/included/imported schemas while making sure
- // we don't process the same stuff more than once.
- //
- struct Uses: Traversal::Uses
- {
- virtual void
- traverse (Type& u)
- {
- SemanticGraph::Schema& s (u.schema ());
-
- if (!s.context ().count ("xsd-frontend-anonymous-seen"))
- {
- s.context ().set ("xsd-frontend-anonymous-seen", true);
- Traversal::Uses::traverse (u);
- }
- }
- };
-
- // Keep track which namespace we are in.
- //
- struct Namespace: Traversal::Namespace
- {
- Namespace (SemanticGraph::Namespace*& ns)
- : ns_ (ns)
- {
- }
-
- void
- pre (SemanticGraph::Namespace& ns)
- {
- ns_ = &ns;
- }
-
- void
- post (SemanticGraph::Namespace&)
- {
- ns_ = 0;
- }
-
- private:
- SemanticGraph::Namespace*& ns_;
- };
-
- //
- //
- struct Type: Traversal::List,
- Traversal::Union,
- Traversal::Complex,
- protected virtual Context
- {
- Type (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::List& l)
- {
- SemanticGraph::Type& t (l.argumented ().type ());
-
- //@@ This IDREF stuff is really ugly!
- //
- if (!t.named_p () &&
- !t.is_a<SemanticGraph::Fundamental::IdRef> () &&
- !t.is_a<SemanticGraph::Fundamental::IdRefs> ())
- {
- try
- {
- // Run the name through the translation service.
- //
- SemanticGraph::Path file (path (l));
- file.normalize ();
- String file_str;
-
- // Try to use the portable representation of the path. If that
- // fails, fall back to the native representation.
- //
- try
- {
- file_str = file.posix_string ();
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- file_str = file.string ();
- }
-
- String name (
- trans.translate (
- file_str, ns->name (), l.name () + L"_item", xpath (l)));
-
- // Make sure the name is unique.
- //
- unsigned long n (1);
- String escaped (name);
-
- while (conflict (escaped))
- {
- std::wostringstream os;
- os << n++;
- escaped = name + os.str ();
- }
-
- t.context ().set ("anonymous", true);
- schema.new_edge<SemanticGraph::Names> (*ns, t, escaped);
- }
- catch (UnstableConflict const& ex)
- {
- SemanticGraph::Type& t (ex.type ());
-
- wcerr << l.file () << ":" << l.line () << ":" << l.column ()
- << ": error: list type name '" << xpath (l) << "' "
- << "creates an unstable conflict when used as a base "
- << "for the item type name"
- << endl;
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << ": info: conflicting type is defined here" << endl;
-
- wcerr << l.file () << ":" << l.line () << ":" << l.column ()
- << ": info: "
- << "use --anonymous-regex to resolve this conflict"
- << endl;
-
- wcerr << l.file () << ":" << l.line () << ":" << l.column ()
- << ": info: "
- << "and don't forget to pass the same option when "
- << "translating '" << l.file ().leaf () << "' and all "
- << "the schemas that refer to it" << endl;
-
- failed = true;
- }
- }
- }
-
- virtual void
- traverse (SemanticGraph::Union& u)
- {
- String file_str;
-
- for (SemanticGraph::Union::ArgumentedIterator i (
- u.argumented_begin ()); i != u.argumented_end (); ++i)
- {
- SemanticGraph::Type& t (i->type ());
-
- if (!t.named_p () &&
- !t.is_a<SemanticGraph::Fundamental::IdRef> () &&
- !t.is_a<SemanticGraph::Fundamental::IdRefs> ())
- {
- try
- {
- // Run the name through the translation service.
- //
-
- if (!file_str)
- {
- SemanticGraph::Path file (path (u));
- file.normalize ();
-
- // Try to use the portable representation of the path. If
- // that fails, fall back to the native representation.
- //
- try
- {
- file_str = file.posix_string ();
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- file_str = file.string ();
- }
- }
-
- String name (
- trans.translate (
- file_str, ns->name (), u.name () + L"_member", xpath (u)));
-
- // Make sure the name is unique.
- //
- unsigned long n (1);
- String escaped (name);
-
- while (conflict (escaped))
- {
- std::wostringstream os;
- os << n++;
- escaped = name + os.str ();
- }
-
- t.context ().set ("anonymous", true);
- schema.new_edge<SemanticGraph::Names> (*ns, t, escaped);
- }
- catch (UnstableConflict const& ex)
- {
- SemanticGraph::Type& t (ex.type ());
-
- wcerr << u.file () << ":" << u.line () << ":" << u.column ()
- << ": error: union type name '" << xpath (u) << "' "
- << "creates an unstable conflict when used as a base "
- << "for the member type name"
- << endl;
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << ": info: conflicting type is defined here" << endl;
-
- wcerr << u.file () << ":" << u.line () << ":" << u.column ()
- << ": info: "
- << "use --anonymous-regex to resolve this conflict"
- << endl;
-
- wcerr << u.file () << ":" << u.line () << ":" << u.column ()
- << ": info: "
- << "and don't forget to pass the same option when "
- << "translating '" << u.file ().leaf () << "' and all "
- << "the schemas that refer to it" << endl;
-
- failed = true;
- }
- }
- }
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- if (!c.inherits_p ())
- return;
-
- SemanticGraph::Type& t (c.inherits ().base ());
-
- //@@ This IDREF stuff is really ugly!
- //
- if (!t.named_p () &&
- !t.is_a<SemanticGraph::Fundamental::IdRef> () &&
- !t.is_a<SemanticGraph::Fundamental::IdRefs> ())
- {
- try
- {
- // Run the name through the translation service.
- //
- SemanticGraph::Path file (path (c));
- file.normalize ();
- String file_str;
-
- // Try to use the portable representation of the path. If that
- // fails, fall back to the native representation.
- //
- try
- {
- file_str = file.posix_string ();
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- file_str = file.string ();
- }
-
- String name (
- trans.translate (
- file_str, ns->name (), c.name () + L"_base", xpath (c)));
-
- // Make sure the name is unique.
- //
- unsigned long n (1);
- String escaped (name);
-
- while (conflict (escaped))
- {
- std::wostringstream os;
- os << n++;
- escaped = name + os.str ();
- }
-
- t.context ().set ("anonymous", true);
- schema.new_edge<SemanticGraph::Names> (*ns, t, escaped);
- }
- catch (UnstableConflict const& ex)
- {
- SemanticGraph::Type& t (ex.type ());
-
- wcerr << c.file () << ":" << c.line () << ":" << c.column ()
- << ": error: simple type name '" << xpath (c) << "' "
- << "creates an unstable conflict when used as a base "
- << "for the base type name"
- << endl;
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << ": info: conflicting type is defined here" << endl;
-
- wcerr << c.file () << ":" << c.line () << ":" << c.column ()
- << ": info: "
- << "use --anonymous-regex to resolve this conflict"
- << endl;
-
- wcerr << c.file () << ":" << c.line () << ":" << c.column ()
- << ": info: "
- << "and don't forget to pass the same option when "
- << "translating '" << c.file ().leaf () << "' and all "
- << "the schemas that refer to it" << endl;
-
- failed = true;
- }
- }
- }
- };
-
-
- //
- //
- struct Member: Traversal::Element,
- Traversal::Attribute,
- protected virtual Context
- {
- Member (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- SemanticGraph::Type& t (e.type ());
-
- //@@ This IDREF stuff is really ugly!
- //
- if (!t.named_p () &&
- !t.is_a<SemanticGraph::Fundamental::IdRef> () &&
- !t.is_a<SemanticGraph::Fundamental::IdRefs> ())
- {
- try
- {
- traverse_ (e);
- }
- catch (UnstableConflict const& ex)
- {
- SemanticGraph::Type& t (ex.type ());
-
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": error: element name '" << xpath (e) << "' "
- << "creates an unstable conflict when used as a type name"
- << endl;
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << ": info: conflicting type is defined here" << endl;
-
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": info: "
- << "use --anonymous-regex to resolve this conflict"
- << endl;
-
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": info: "
- << "and don't forget to pass the same option when "
- << "translating '" << e.file ().leaf () << "' and all "
- << "the schemas that refer to it" << endl;
-
- failed = true;
- }
- }
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- SemanticGraph::Type& t (a.type ());
-
- //@@ This IDREF stuff us really ugly!
- //
- if (!t.named_p () &&
- !t.is_a<SemanticGraph::Fundamental::IdRef> () &&
- !t.is_a<SemanticGraph::Fundamental::IdRefs> ())
- {
- try
- {
- traverse_ (a);
- }
- catch (UnstableConflict const& ex)
- {
- SemanticGraph::Type& t (ex.type ());
-
- wcerr << a.file () << ":" << a.line () << ":" << a.column ()
- << ": error: attribute name '" << xpath (a) << "' "
- << "creates an unstable conflict when used as a type name"
- << endl;
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << ": info: conflicting type is defined here" << endl;
-
- wcerr << a.file () << ":" << a.line () << ":" << a.column ()
- << ": info: "
- << "use --anonymous-regex to resolve this conflict"
- << endl;
-
- wcerr << a.file () << ":" << a.line () << ":" << a.column ()
- << ": info: "
- << "and don't forget to pass the same option when "
- << "translating '" << a.file ().leaf () << "' and all "
- << "the schemas that refer to it" << endl;
-
- failed = true;
- }
- }
- }
-
- void
- traverse_ (SemanticGraph::Member& m)
- {
- using SemanticGraph::Type;
-
- Type& t (m.type ());
-
- // Normally this will be the member which also "defined" the type.
- // However, in some cases of cyclic schema inclusion, this does
- // not happen. As a result we need an extra check that will make
- // sure we create the Names edge in the same Schema node as the
- // one which contains the member which initially defined this
- // type. See the cyclic-inclusion test for an example.
- //
-
- // Find the first member that this type classifies.
- //
- for (Type::ClassifiesIterator i (t.classifies_begin ());
- i != t.classifies_end (); ++i)
- {
- SemanticGraph::Instance& inst (i->instance ());
-
- if (inst.is_a<SemanticGraph::Member> ())
- {
- // If it is the same member as the one we are traversing,
- // then continue.
- //
- if (&inst == &m)
- break;
- else
- return;
- }
- }
-
- // Run the name through the translation service.
- //
- SemanticGraph::Path file (path (m));
- file.normalize ();
- String file_str;
-
- // Try to use the portable representation of the path. If that
- // fails, fall back to the native representation.
- //
- try
- {
- file_str = file.posix_string ();
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- file_str = file.string ();
- }
-
- String name (
- trans.translate (file_str, ns->name (), m.name (), xpath (m)));
-
- // Check if this name conflicts.
- //
- unsigned long n (1);
- String escaped (name);
-
- while (SemanticGraph::Type* other = conflict (escaped))
- {
- // First see if we should just use the other type. It should
- // also have been anonymous and structurally equal to our type.
- //
- if (other->context ().count ("anonymous"))
- {
- if (structurally_equal (t, *other))
- {
- // Reset the elements that are classified by this type to point
- // to the other type.
- //
- for (Type::ClassifiesIterator i (t.classifies_begin ());
- i != t.classifies_end (); ++i)
- {
- schema.reset_right_node (*i, *other);
- }
-
- //wcerr << "equal " << name << endl;
- return;
- }
- //else
- //wcerr << "unequal " << name << endl;
- }
-
- std::wostringstream os;
- os << n++;
- escaped = name + os.str ();
- }
-
- t.context ().set ("anonymous", true);
- schema.new_edge<SemanticGraph::Names> (*ns, t, escaped);
- }
- };
- }
-
- namespace Transformations
- {
- Anonymous::
- Anonymous (AnonymousNameTranslator& trans)
- : trans_ (trans)
- {
- }
-
- void Anonymous::
- transform (SemanticGraph::Schema& s,
- SemanticGraph::Path const& f,
- bool duc)
- {
- Context ctx (s, f, trans_, duc);
-
- Traversal::Schema schema;
- Uses uses;
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- Namespace ns (ctx.ns);
- Traversal::Names ns_names_member;
- Traversal::Names ns_names_type;
-
- schema >> schema_names >> ns;
- ns >> ns_names_member;
- ns >> ns_names_type;
-
- Type type (ctx);
- ns_names_type >> type;
-
- Traversal::Scope scope; // Goes to both types and groups.
- Member member (ctx);
-
- ns_names_member >> scope;
- ns_names_member >> member;
-
- Traversal::Names names;
-
- scope >> names >> member;
-
- // Some twisted schemas do recusive inclusions.
- //
- s.context ().set ("xsd-frontend-anonymous-seen", true);
-
- schema.dispatch (s);
-
- if (ctx.failed)
- throw Failed ();
- }
-
- AnonymousNameTranslator::
- ~AnonymousNameTranslator ()
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/transformations/anonymous.hxx b/libxsd-frontend/xsd-frontend/transformations/anonymous.hxx
deleted file mode 100644
index cafd187..0000000
--- a/libxsd-frontend/xsd-frontend/transformations/anonymous.hxx
+++ /dev/null
@@ -1,57 +0,0 @@
-// file : xsd-frontend/transformations/anonymous.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRANSFORMATIONS_ANONYMOUS_HXX
-#define XSD_FRONTEND_TRANSFORMATIONS_ANONYMOUS_HXX
-
-#include <xsd-frontend/types.hxx>
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-namespace XSDFrontend
-{
- namespace Transformations
- {
- class AnonymousNameTranslator
- {
- public:
- virtual
- ~AnonymousNameTranslator ();
-
- // The file argument is empty for the currect translation
- // unit.
- //
- virtual String
- translate (String const& file,
- String const& ns,
- String const& name,
- String const& xpath) = 0;
- };
-
- // This transformation morphs anonymous types into named ones
- // with the names derived from the enclosing attributes and
- // elements. If the detect_unstable_conflicts argument is true
- // then the transformation detects and reports unstable conflicts
- // in name assignment.
- //
- class Anonymous
- {
- public:
- struct Failed {};
-
- Anonymous (AnonymousNameTranslator&);
-
- void
- transform (SemanticGraph::Schema&,
- SemanticGraph::Path const&,
- bool detect_unstable_conflicts);
-
- private:
- AnonymousNameTranslator& trans_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRANSFORMATIONS_ANONYMOUS_HXX
diff --git a/libxsd-frontend/xsd-frontend/transformations/enum-synthesis.cxx b/libxsd-frontend/xsd-frontend/transformations/enum-synthesis.cxx
deleted file mode 100644
index 26ad16c..0000000
--- a/libxsd-frontend/xsd-frontend/transformations/enum-synthesis.cxx
+++ /dev/null
@@ -1,245 +0,0 @@
-// file : xsd-frontend/transformations/enum-synthesis.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <set>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <xsd-frontend/transformations/enum-synthesis.hxx>
-
-namespace XSDFrontend
-{
- namespace
- {
- typedef std::set<String> Enumerators;
-
- struct Enumerator: Traversal::Enumerator
- {
- Enumerator (SemanticGraph::Schema& s,
- SemanticGraph::Enumeration& e,
- Enumerators& enumerators)
- : schema_ (s), enum_ (e), enumerators_ (enumerators)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- String const& name (e.name ());
-
- if (enumerators_.find (name) == enumerators_.end ())
- {
- enumerators_.insert (name);
-
- // Clone the enumerator and add it to enum_.
- //
- Type& c (schema_.new_node<Type> (e.file (), e.line (), e.column ()));
-
- schema_.new_edge<SemanticGraph::Names> (enum_, c, name);
- schema_.new_edge<SemanticGraph::Belongs> (c, enum_);
-
- if (e.annotated_p ())
- schema_.new_edge<SemanticGraph::Annotates> (e.annotation (), c);
- }
- }
-
- private:
- SemanticGraph::Schema& schema_;
- SemanticGraph::Enumeration& enum_;
- Enumerators& enumerators_;
- };
-
- //
- //
- struct Union: Traversal::Union
- {
- Union (SemanticGraph::Schema& schema)
- : schema_ (schema)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- using SemanticGraph::Enumeration;
-
- SemanticGraph::Context& uc (u.context ());
-
- if (uc.count ("xsd-frontend-enum-synthesis-processed"))
- return;
-
- uc.set ("xsd-frontend-enum-synthesis-processed", true);
-
- // First see if this union is suitable for synthesis.
- //
- SemanticGraph::Type* base (0);
-
- for (Type::ArgumentedIterator i (u.argumented_begin ());
- i != u.argumented_end (); ++i)
- {
- if (i->type ().is_a<SemanticGraph::Union> ())
- {
- // See if we can synthesize an enum for this union. This
- // call can change the value i->type() returns.
- //
- dispatch (i->type ());
- }
-
- SemanticGraph::Type& t (i->type ());
-
- if (!t.is_a<Enumeration> ())
- return;
-
- // Make sure all the enums have a common base.
- //
- if (base == 0)
- base = &t;
- else
- {
- // Traverse the inheritance hierarchy until we fine a
- // common base.
- //
- while (base != 0)
- {
- SemanticGraph::Type* b (&t);
-
- for (; b != base && b->inherits_p ();
- b = &b->inherits ().base ()) ;
-
- if (base == b)
- break;
-
- // Could not find any match on this level. Go one step
- // lower and try again.
- //
- base = base->inherits_p () ? &base->inherits ().base () : 0;
- }
-
- if (base == 0)
- return; // No common base.
- }
- }
-
- if (base == 0)
- return; // Empty union.
-
- // So this union is suitable for synthesis. Base variable points
- // to the "most-derived" common base type.
- //
- Enumeration& e (schema_.new_node<Enumeration> (
- u.file (), u.line (), u.column ()));
-
- schema_.new_edge<SemanticGraph::Restricts> (e, *base);
-
- // Copy enumerators from the member enums.
- //
- {
- Enumerators set;
- Traversal::Enumeration en;
- Traversal::Names names;
- Enumerator er (schema_, e, set);
- en >> names >> er;
-
- for (Type::ArgumentedIterator i (u.argumented_begin ());
- i != u.argumented_end (); ++i)
- {
- en.dispatch (i->type ());
- }
- }
-
- // Reset edges pointing to union to point to enum.
- //
- if (u.annotated_p ())
- {
- schema_.reset_right_node (u.annotated (), e);
- schema_.add_edge_right (e, u.annotated ());
- }
-
- schema_.reset_right_node (u.named (), e);
- schema_.add_edge_right (e, u.named ());
-
- for (Type::ClassifiesIterator i (u.classifies_begin ()),
- end (u.classifies_end ()); i != end; ++i)
- {
- schema_.reset_right_node (*i, e);
- schema_.add_edge_right (e, *i);
- }
-
- for (Type::BegetsIterator i (u.begets_begin ()),
- end (u.begets_end ()); i != end; ++i)
- {
- schema_.reset_right_node (*i, e);
- schema_.add_edge_right (e, *i);
- }
-
- for (Type::ArgumentsIterator i (u.arguments_begin ()),
- end (u.arguments_end ()); i != end; ++i)
- {
- schema_.reset_left_node (*i, e);
- schema_.add_edge_left (e, *i);
- }
-
- // Remove Arguments edges pointing to the union.
- //
- while (u.argumented_begin () != u.argumented_end ())
- {
- SemanticGraph::Arguments& a (*u.argumented_begin ());
- schema_.delete_edge (a.type (), a.specialization (), a);
- }
-
- // Copy context and delete the union node.
- //
- e.context ().swap (uc);
- schema_.delete_node (u);
- }
-
- private:
- SemanticGraph::Schema& schema_;
- };
-
- // Go into implied/included/imported schemas while making sure
- // we don't process the same stuff more than once.
- //
- struct Uses: Traversal::Uses
- {
- virtual void
- traverse (Type& u)
- {
- SemanticGraph::Schema& s (u.schema ());
-
- if (!s.context ().count ("xsd-frontend-enum-synthesis-seen"))
- {
- s.context ().set ("xsd-frontend-enum-synthesis-seen", true);
- Traversal::Uses::traverse (u);
- }
- }
- };
- }
-
- namespace Transformations
- {
- void EnumSynthesis::
- transform (SemanticGraph::Schema& s, SemanticGraph::Path const&)
- {
- Traversal::Schema schema;
- Uses uses;
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- Union u (s);
-
- schema >> schema_names >> ns >> ns_names >> u;
-
- // Some twisted schemas do recusive inclusions.
- //
- s.context ().set ("xsd-frontend-enum-synthesis-seen", true);
-
- schema.dispatch (s);
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/transformations/enum-synthesis.hxx b/libxsd-frontend/xsd-frontend/transformations/enum-synthesis.hxx
deleted file mode 100644
index 9f0f970..0000000
--- a/libxsd-frontend/xsd-frontend/transformations/enum-synthesis.hxx
+++ /dev/null
@@ -1,30 +0,0 @@
-// file : xsd-frontend/transformations/enum-synthesis.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRANSFORMATIONS_ENUM_SYNTHESIS_HXX
-#define XSD_FRONTEND_TRANSFORMATIONS_ENUM_SYNTHESIS_HXX
-
-#include <xsd-frontend/types.hxx>
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-namespace XSDFrontend
-{
- namespace Transformations
- {
- // This transformation replaces unions of one or more enumerations
- // with the same base with an equivalent synthesized enumeration.
- // This transformation assumes that there are no anonymous types.
- //
- class EnumSynthesis
- {
- public:
- void
- transform (SemanticGraph::Schema&, SemanticGraph::Path const&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRANSFORMATIONS_ENUM_SYNTHESIS_HXX
diff --git a/libxsd-frontend/xsd-frontend/transformations/restriction.cxx b/libxsd-frontend/xsd-frontend/transformations/restriction.cxx
deleted file mode 100644
index edd74be..0000000
--- a/libxsd-frontend/xsd-frontend/transformations/restriction.cxx
+++ /dev/null
@@ -1,576 +0,0 @@
-// file : xsd-frontend/transformations/restriction.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <vector>
-#include <iostream>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <xsd-frontend/transformations/restriction.hxx>
-
-using namespace std;
-
-namespace XSDFrontend
-{
- typedef Transformations::Restriction::Failed Failed;
- typedef std::vector<SemanticGraph::Complex*> BaseList;
-
- namespace
- {
- //
- //
- struct Complex: Traversal::Complex
- {
- Complex (SemanticGraph::Schema& schema)
- : schema_ (schema)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- using namespace SemanticGraph;
- using SemanticGraph::Complex;
-
- if (c.context ().count ("xsd-frontend-restriction-seen"))
- return;
-
- c.context ().set ("xsd-frontend-restriction-seen", true);
-
- // The base content model can be spread over several types
- // in the inheritance-by-extension hierarchy.
- //
- BaseList base_model;
-
- // Since attribute wildcards don't have names, we will have
- // to rely on their relative position to find association.
- //
- BaseList base_list;
-
- // Current implementation of semantic graph uses the same Restricts
- // edge for both simple type/content restriction and complex content
- // restriction. Here we are interested in the complex content only.
- //
- //
- if (c.inherits_p () &&
- c.inherits ().is_a<Restricts> () &&
- !c.inherits ().base ().is_a<AnyType> ())
- {
- // Go down our inheritance hierarchy until the end or the previous
- // restriction.
- //
- Complex* base (&c);
-
- while ((base = dynamic_cast<Complex*> (&base->inherits ().base ())))
- {
- traverse (*base); // Make sure our base is processed.
-
- // Handle attributes.
- //
- merge_attributes (c, *base);
-
- base_list.push_back (base);
-
- // Collect types that have complex content.
- //
- if (base->contains_compositor_p ())
- base_model.push_back (base);
-
- if (!base->inherits_p () || base->inherits ().is_a<Restricts> ())
- break;
- }
-
- // Handle attribute wildcards.
- //
- handle_any_attributes (c, base_list);
-
- // Handle complex content (not for the faint of heart).
- //
- if (c.contains_compositor_p ())
- {
- // Traverse both restricted content model and base content
- // model (in base_model) while looking for matches.
- //
- Compositor& root (c.contains_compositor ().compositor ());
-
- if (base_model.size () == 1)
- handle (root,
- base_model[0]->contains_compositor ().compositor ());
- else
- {
- Compositor::ContainsIterator i (root.contains_begin ());
- BaseList::reverse_iterator j (base_model.rbegin ());
-
- for (; i != root.contains_end (); ++i, ++j)
- {
- Particle& p (i->particle ());
-
- if (!p.is_a<Compositor> ())
- {
- wcerr << p.file () << ":" << p.line () << ":" << p.column ()
- << ": error: expected compositor instead of particle"
- << endl;
- throw Failed ();
- }
-
- for (; j != base_model.rend (); ++j)
- {
- if (match (p, (*j)->contains_compositor ().compositor ()))
- {
- handle (p, (*j)->contains_compositor ().compositor ());
- break;
- }
- }
-
- if (j == base_model.rend ())
- break;
- }
-
- if (i != root.contains_end ())
- {
- Particle& p (i->particle ());
-
- wcerr << p.file () << ":" << p.line () << ":" << p.column ()
- << ": error: unable to match restricted compositor"
- << endl;
- throw Failed ();
- }
- }
- }
- }
-
- // Traverse anonymous types (via elements & attributes).
- //
- Traversal::Complex::names (c);
- }
-
- private:
- void
- handle (SemanticGraph::Particle& r, SemanticGraph::Particle& b)
- {
- using namespace SemanticGraph;
-
- if (r.is_a<Compositor> ())
- {
- Compositor& rc (dynamic_cast<Compositor&> (r));
- Compositor& bc (dynamic_cast<Compositor&> (b));
-
- Compositor::ContainsIterator i (rc.contains_begin ());
- Compositor::ContainsIterator j (bc.contains_begin ());
-
- for (; i != rc.contains_end (); ++i, ++j)
- {
- for (; j != bc.contains_end (); ++j)
- {
- Particle& rp (i->particle ());
- Particle& bp (j->particle ());
-
- if (typeid (rp) != typeid (bp))
- continue;
-
- if (match (rp, bp))
- {
- handle (rp, bp);
- break;
- }
- }
-
- if (j == bc.contains_end ())
- break;
- }
-
- if (i != rc.contains_end ())
- {
- Particle& p (i->particle ());
-
- wcerr << p.file () << ":" << p.line () << ":" << p.column ()
- << ": error: unable to match restricted particle"
- << endl;
- throw Failed ();
- }
-
- rc.context ().set ("xsd-frontend-restriction-correspondence", &bc);
- }
- else if (r.is_a<Element> ())
- {
- // Element
- //
- r.context ().set ("xsd-frontend-restriction-correspondence",
- dynamic_cast<Element*> (&b));
- }
- else
- {
- // Wildcard
- //
- r.context ().set ("xsd-frontend-restriction-correspondence",
- dynamic_cast<Any*> (&b));
- }
- }
-
- bool
- match (SemanticGraph::Particle& r, SemanticGraph::Particle& b)
- {
- using namespace SemanticGraph;
-
- if (typeid (r) != typeid (b))
- return false;
-
- if (r.is_a<Compositor> ())
- {
- Compositor& rc (dynamic_cast<Compositor&> (r));
- Compositor& bc (dynamic_cast<Compositor&> (b));
-
- Compositor::ContainsIterator i (rc.contains_begin ());
-
- if (i == rc.contains_end ())
- return true;
-
- Particle& rp (i->particle ());
-
- for (Compositor::ContainsIterator j (bc.contains_begin ());
- j != bc.contains_end (); ++j)
- {
- Particle& bp (j->particle ());
-
- if (typeid (rp) != typeid (bp))
- continue;
-
- if (match (rp, bp))
- return true;
- }
- }
- else if (r.is_a<Element> ())
- {
- Element& re (dynamic_cast<Element&> (r));
- Element& be (dynamic_cast<Element&> (b));
-
- if (re.qualified_p ())
- {
- if (be.qualified_p () &&
- re.name () == be.name () &&
- re.namespace_ ().name () == be.namespace_ ().name ())
- return true;
- }
- else
- {
- if (!be.qualified_p () && re.name () == be.name ())
- return true;
- }
-
- // @@ Need to take into account substitution groups.
- //
- }
- else
- {
- // Wildcard.
- //
-
- // @@ To handle this properly we will need to analyze
- // namespaces.
- //
- return true;
- }
-
- return false;
- }
-
- void
- merge_attributes (SemanticGraph::Complex& c,
- SemanticGraph::Complex& base)
- {
- using namespace SemanticGraph;
-
- for (Scope::NamesIterator i (base.names_begin ()),
- e (base.names_end ()); i != e; ++i)
- {
- Attribute* prot (dynamic_cast<Attribute*> (&i->named ()));
-
- if (prot == 0)
- continue;
-
- Name name (prot->name ());
- Scope::NamesIteratorPair r (c.find (name));
-
- Attribute* a (0);
-
- for (; r.first != r.second; ++r.first)
- {
- a = dynamic_cast<Attribute*> (&r.first->named ());
-
- if (a == 0)
- continue;
-
- if (prot->qualified_p ())
- {
- if (a->qualified_p () &&
- prot->namespace_ ().name () == a->namespace_ ().name ())
- {
- break;
- }
- }
- else
- {
- if (!a->qualified_p ())
- break;
- }
-
- a = 0;
- }
-
- if (a == 0)
- {
- a = &schema_.new_node<Attribute> (prot->file (),
- prot->line (),
- prot->column (),
- prot->optional_p (),
- prot->global_p (),
- prot->qualified_p ());
-
- schema_.new_edge<Names> (c, *a, name);
-
- // Transfer namespace.
- //
- if (prot->qualified_p ())
- {
- schema_.new_edge<BelongsToNamespace> (*a, prot->namespace_ ());
- }
-
- // Default and fixed values if any.
- //
- if (prot->fixed_p ())
- a->fixed (prot->value ());
- else if (prot->default_p ())
- a->default_ (prot->value ());
-
- // Belongs edge.
- //
- schema_.new_edge<Belongs> (*a, prot->type ());
-
- // Transfer annotation.
- //
- if (prot->annotated_p ())
- schema_.new_edge<Annotates> (prot->annotation (), *a);
- }
-
- a->context ().set ("xsd-frontend-restriction-correspondence", prot);
- }
- }
-
- void
- handle_any_attributes (SemanticGraph::Complex& c, BaseList& bl)
- {
- using namespace SemanticGraph;
-
- BaseList::reverse_iterator bi (bl.rbegin ()), be (bl.rend ());
- Scope::NamesIterator si;
-
- if (bi != be)
- si = (*bi)->names_begin ();
-
- for (Scope::NamesIterator i (c.names_begin ()),
- e (c.names_end ()); i != e; ++i)
- {
- AnyAttribute* a (dynamic_cast<AnyAttribute*> (&i->named ()));
-
- if (a == 0)
- continue;
-
- AnyAttribute* p (0);
-
- while (bi != be)
- {
- for (; si != (*bi)->names_end (); ++si)
- {
- p = dynamic_cast<AnyAttribute*> (&si->named ());
-
- if (p != 0)
- {
- ++si;
- break;
- }
- }
-
- if (p != 0)
- break;
-
- // Didn't find anything in this base. Move on to the next.
- //
- ++bi;
-
- if (bi != be)
- si = (*bi)->names_begin ();
- }
-
- if (p != 0)
- {
- a->context ().set ("xsd-frontend-restriction-correspondence", p);
- }
- else
- {
- wcerr << a->file () << ":" << a->line () << ":" << a->column ()
- << ": error: unable to find matching wildcard in base type"
- << endl;
- throw Failed ();
- }
- }
- }
-
- private:
- SemanticGraph::Schema& schema_;
- };
-
- //
- //
- struct Anonymous : Traversal::Element,
- Traversal::Attribute
- {
- Anonymous (Traversal::NodeDispatcher& d1)
- : complex_ (&d1, 0)
- {
- *this >> belongs_ >> complex_;
- }
-
- Anonymous (Traversal::NodeDispatcher& d1,
- Traversal::NodeDispatcher& d2)
- : complex_ (&d1, &d2)
- {
- *this >> belongs_ >> complex_;
- }
-
- // Hooks.
- //
- public:
- virtual void
- member_pre (SemanticGraph::Member&)
- {
- }
-
- virtual void
- member_post (SemanticGraph::Member&)
- {
- }
-
- public:
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- SemanticGraph::Type& t (e.type ());
-
- if (!t.named_p () && !t.context ().count ("seen"))
- {
- t.context ().set ("seen", true);
-
- member_pre (e);
-
- Element::belongs (e, belongs_);
-
- member_post (e);
-
- t.context ().remove ("seen");
- }
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- SemanticGraph::Type& t (a.type ());
-
- if (!t.named_p () && !t.context ().count ("seen"))
- {
- t.context ().set ("seen", true);
-
- member_pre (a);
-
- Attribute::belongs (a, belongs_);
-
- member_post (a);
-
- t.context ().remove ("seen");
- }
- }
-
- private:
- struct Complex : Traversal::Complex
- {
- Complex (Traversal::NodeDispatcher* d1,
- Traversal::NodeDispatcher* d2)
- : d1_ (d1), d2_ (d2)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- if (d1_)
- d1_->dispatch (c);
-
- if (d2_)
- d2_->dispatch (c);
- }
-
- private:
- Traversal::NodeDispatcher* d1_;
- Traversal::NodeDispatcher* d2_;
-
- } complex_;
-
- Traversal::Belongs belongs_;
- };
-
-
- // Go into implied/included/imported schemas while making sure
- // we don't process the same stuff more than once.
- //
- struct Uses: Traversal::Uses
- {
- virtual void
- traverse (Type& u)
- {
- SemanticGraph::Schema& s (u.schema ());
-
- if (!s.context ().count ("xsd-frontend-restriction-seen"))
- {
- s.context ().set ("xsd-frontend-restriction-seen", true);
- Traversal::Uses::traverse (u);
- }
- }
- };
- }
-
- namespace Transformations
- {
- void Restriction::
- transform (SemanticGraph::Schema& s, SemanticGraph::Path const&)
- {
- Traversal::Schema schema;
- Uses uses;
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
-
- schema >> schema_names >> ns >> ns_names;
-
- Complex complex_type (s);
- Anonymous anonymous (complex_type);
-
- ns_names >> complex_type;
- ns_names >> anonymous;
-
- Traversal::Names names;
-
- complex_type >> names >> anonymous;
-
- // Some twisted schemas do recusive inclusions.
- //
- s.context ().set ("xsd-frontend-restriction-seen", true);
-
- schema.dispatch (s);
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/transformations/restriction.hxx b/libxsd-frontend/xsd-frontend/transformations/restriction.hxx
deleted file mode 100644
index 6d7410c..0000000
--- a/libxsd-frontend/xsd-frontend/transformations/restriction.hxx
+++ /dev/null
@@ -1,36 +0,0 @@
-// file : xsd-frontend/transformations/restriction.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRANSFORMATIONS_RESTRICTION_HXX
-#define XSD_FRONTEND_TRANSFORMATIONS_RESTRICTION_HXX
-
-#include <xsd-frontend/types.hxx>
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-namespace XSDFrontend
-{
- namespace Transformations
- {
- // This transformation performs two major tasks. It transfers omitted
- // attribute declarations from the base to derived-by-restriction type
- // and establishes correspondence between particles and compositors by
- // adding the "xsd-frontend-restriction-correspondence" key-value pair
- // in the context that contains a pointer to the corresponding particle
- // or compositor in the base. Note that restriction of anyType is
- // a special case and is not handled by this transformation.
- //
- class Restriction
- {
- public:
- struct Failed {};
-
- void
- transform (SemanticGraph::Schema&, SemanticGraph::Path const&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRANSFORMATIONS_RESTRICTION_HXX
diff --git a/libxsd-frontend/xsd-frontend/transformations/schema-per-type.cxx b/libxsd-frontend/xsd-frontend/transformations/schema-per-type.cxx
deleted file mode 100644
index 2fc14b5..0000000
--- a/libxsd-frontend/xsd-frontend/transformations/schema-per-type.cxx
+++ /dev/null
@@ -1,469 +0,0 @@
-// file : xsd-frontend/transformations/schema-per-type.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <strings.h> // strcasecmp
-
-#include <map>
-#include <set>
-#include <vector>
-
-#include <sstream>
-#include <iostream>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <xsd-frontend/transformations/schema-per-type.hxx>
-
-using std::wcerr;
-using std::endl;
-
-namespace XSDFrontend
-{
- typedef Transformations::SchemaPerType::Failed Failed;
- typedef std::vector<SemanticGraph::Schema*> Schemas;
- typedef std::map<SemanticGraph::Type*, SemanticGraph::Schema*> TypeSchemaMap;
-
- // Compare file paths case-insensitively.
- //
- struct FileComparator
- {
- bool
- operator() (NarrowString const& x, NarrowString const& y) const
- {
- return strcasecmp (x.c_str (), y.c_str ()) < 0;
- }
- };
-
- typedef std::set<NarrowString, FileComparator> FileSet;
-
- namespace
- {
- // Go into included and imported schemas while making sure
- // we don't process the same stuff more than once.
- //
- struct Uses: Traversal::Includes,
- Traversal::Imports,
- Traversal::Implies
- {
- Uses (Schemas& schemas, SemanticGraph::Schema*& xsd)
- : schemas_ (schemas), xsd_ (xsd)
- {
- xsd_ = 0;
- }
-
- virtual void
- traverse (SemanticGraph::Includes& i)
- {
- SemanticGraph::Schema& s (i.schema ());
-
- if (!s.context ().count ("xsd-frontend-schema-per-type-seen"))
- {
- schemas_.push_back (&s);
- s.context ().set ("xsd-frontend-schema-per-type-seen", true);
- Traversal::Includes::traverse (i);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Imports& i)
- {
- SemanticGraph::Schema& s (i.schema ());
-
- if (!s.context ().count ("xsd-frontend-schema-per-type-seen"))
- {
- schemas_.push_back (&s);
- s.context ().set ("xsd-frontend-schema-per-type-seen", true);
- Traversal::Imports::traverse (i);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Implies& i)
- {
- if (xsd_ == 0)
- xsd_ = &i.schema ();
- }
-
- private:
- Schemas& schemas_;
- SemanticGraph::Schema*& xsd_;
- };
-
- void
- process_schema (SemanticGraph::Schema& s,
- SemanticGraph::Schema& root,
- SemanticGraph::Schema& xsd,
- TypeSchemaMap& tsm,
- FileSet& file_set,
- bool fat_type_file,
- Transformations::SchemaPerTypeTranslator& trans)
- {
- using namespace SemanticGraph;
-
- Path xsd_path ("XMLSchema.xsd");
- Namespace& ns (dynamic_cast<Namespace&> (s.names_begin ()->named ()));
-
- // We should be careful with iterator caching since we are going to
- // remove some of the nodes.
- //
- for (Scope::NamesIterator i (ns.names_begin ()); i != ns.names_end ();)
- {
- Nameable& n (i->named ());
-
- if (n.is_a<Type> ())
- {
- String name (n.name ());
-
- // Remove from the namespace.
- //
- Scope::NamesIterator tmp (i++);
- root.delete_edge (ns, n, *tmp);
-
- // Add a new schema node.
- //
- Path path;
- String tn (trans.translate_type (ns.name (), name));
- String wbase (tn ? tn : name);
-
- try
- {
- NarrowString base (wbase.to_narrow ());
-
- // Escape directory separators unless they came from the
- // translator.
- //
- if (!tn)
- {
- for (NarrowString::iterator i (base.begin ()), e (base.end ());
- i != e; ++i)
- {
- if (*i == '/' || *i == '\\')
- *i = '_';
- }
- }
-
- // Make sure it is unique.
- //
- NarrowString file_name (base);
-
- for (unsigned long i (1);
- file_set.find (file_name) != file_set.end ();
- ++i)
- {
- std::ostringstream os;
- os << i;
- file_name = base + os.str ();
- }
-
- file_set.insert (file_name);
- file_name += ".xsd";
-
- try
- {
- path = Path (file_name);
- }
- catch (InvalidPath const&)
- {
- wcerr << "error: '" << file_name.c_str () << "' is not a valid "
- << "filesystem path" << endl;
-
- wcerr << "info: use type to file name translation mechanism "
- << "to resolve this" << endl;
-
- throw Failed ();
- }
- }
- catch (NonRepresentable const&)
- {
- wcerr << "error: '" << wbase << "' cannot be represented as a "
- << "narrow string" << endl;
-
- wcerr << "info: use type to file name translation mechanism "
- << "to resolve this" << endl;
-
- throw Failed ();
- }
-
- Type& t (dynamic_cast<Type&> (n));
-
- Schema& ts (root.new_node<Schema> (path, 1, 1));
- root.new_edge<Implies> (ts, xsd, xsd_path);
-
- Namespace& tns (root.new_node<Namespace> (path, 1, 1));
- root.new_edge<Names> (ts, tns, ns.name ());
- root.new_edge<Names> (tns, n, name);
-
- // If we are generating fat type files, then also move the global
- // elements this type classifies to the new schema.
- //
- if (fat_type_file)
- {
- for (Type::ClassifiesIterator j (t.classifies_begin ());
- j != t.classifies_end (); ++j)
- {
- Instance& e (j->instance ());
-
- // We can only move a global element from the same namespace.
- //
- if (e.is_a<Element> () &&
- e.scope ().is_a<Namespace> () &&
- e.scope ().name () == ns.name ())
- {
- Names& n (e.named ());
- String name (n.name ());
-
- // Watch out for the iterator validity: the edge we are
- // about to remove can be from the same list we are
- // currently iterating.
- //
- if (i != ns.names_end () && &*i == &n)
- ++i;
-
- root.delete_edge (n.scope (), e, n);
- root.new_edge<Names> (tns, e, name);
- }
- }
- }
-
- // Add include to the original schema and enter into the
- // type-schema map.
- //
- root.new_edge<Includes> (s, ts, path);
- tsm[&t] = &ts;
- }
- else
- ++i;
- }
- }
-
- struct Type: Traversal::List,
- Traversal::Complex,
- Traversal::Member
- {
- Type (SemanticGraph::Schema& schema,
- SemanticGraph::Schema& root,
- char const* by_value_key,
- TypeSchemaMap& tsm)
- : schema_ (schema),
- root_ (root),
- by_value_key_ (by_value_key),
- tsm_ (tsm)
- {
- *this >> names_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::List& l)
- {
- // Treat item type as base type since it is impossible
- // to create recursive constructs using list.
- //
- SemanticGraph::Type& t (l.argumented ().type ());
- set_dep (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- if (c.inherits_p ())
- set_dep (c.inherits ().base (), false);
-
- Traversal::Complex::names (c);
- }
-
- virtual void
- traverse (SemanticGraph::Member& m)
- {
- SemanticGraph::Type& t (m.type ());
-
- bool weak (
- by_value_key_ == 0 ||
- !t.context ().count (by_value_key_) ||
- !t.context ().get<bool> (by_value_key_));
-
- set_dep (t, weak);
- }
-
- private:
- void
- set_dep (SemanticGraph::Type& t, bool weak)
- {
- using namespace SemanticGraph;
-
- TypeSchemaMap::iterator i (tsm_.find (&t));
-
- // If a type is not present in the map then it must be
- // a built-in type.
- //
- if (i == tsm_.end ())
- return;
-
- // Check if we already saw this type. Theoretically, it could
- // be that we need to upgrade the type of include from weak to
- // strong. But because inheritance is handled first, the type
- // in the set will already be with the right type.
- //
- if (type_set_.find (&t) != type_set_.end ())
- return;
-
- type_set_.insert (&t);
-
- Schema& s (*i->second);
- Path path (s.used_begin ()->path ());
- SemanticGraph::Uses* u;
-
- if (s.names_begin ()->name () == schema_.names_begin ()->name ())
- u = &root_.new_edge<Includes> (schema_, s, path);
- else
- u = &root_.new_edge<Imports> (schema_, s, path);
-
- if (weak)
- u->context().set ("weak", true);
- }
-
- private:
- SemanticGraph::Schema& schema_;
- SemanticGraph::Schema& root_;
- char const* by_value_key_;
- TypeSchemaMap& tsm_;
- std::set<SemanticGraph::Type*> type_set_;
-
- Traversal::Names names_;
- };
- }
-
- namespace Transformations
- {
- SchemaPerType::
- SchemaPerType (SchemaPerTypeTranslator& trans,
- bool fat,
- char const* key)
- : fat_type_file_ (fat), by_value_key_ (key), trans_ (trans)
- {
- }
-
- Schemas SchemaPerType::
- transform (SemanticGraph::Schema& root)
- {
- // Collect initial schema nodes.
- //
- Schemas schemas;
- SemanticGraph::Schema* xsd;
-
- {
- Traversal::Schema schema;
- Uses uses (schemas, xsd);
-
- schema >> uses >> schema;
-
- // Some twisted schemas do recusive inclusions.
- //
- root.context ().set ("xsd-frontend-schema-per-type-seen", true);
-
- schema.dispatch (root);
- }
-
- // wcerr << schemas.size () << " initial schema nodes" << endl;
-
- // Add the schema file names to the file set.
- //
- FileSet file_set;
-
- for (Schemas::iterator i (schemas.begin ()); i != schemas.end (); ++i)
- {
- // This path was already normalized by the parser.
- //
- SemanticGraph::Path const& path (
- (*i)->context ().get<SemanticGraph::Path> ("absolute-path"));
-
- // Translate the schema file name.
- //
- NarrowString abs_path;
-
- // Try to use the portable representation of the path. If that
- // fails, fall back to the native representation.
- //
- try
- {
- abs_path = path.posix_string ();
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- abs_path = path.string ();
- }
-
- NarrowString tf (trans_.translate_schema (abs_path));
- NarrowString file (tf ? tf : path.leaf ().string ());
-
- size_t p (file.rfind ('.'));
- NarrowString ext (
- p != NarrowString::npos ? NarrowString (file, p) : "");
-
- NarrowString base (
- p != NarrowString::npos ? NarrowString (file, 0, p) : file);
-
- // Make sure it is unique.
- //
- NarrowString new_name (base);
-
- for (unsigned long n (1);
- file_set.find (new_name) != file_set.end ();
- ++n)
- {
- std::ostringstream os;
- os << n;
- new_name = base + os.str ();
- }
-
- file_set.insert (new_name);
- new_name += ext;
-
- try
- {
- (*i)->context ().set ("renamed", SemanticGraph::Path (new_name));
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- wcerr << "error: '" << new_name.c_str () << "' is not a valid "
- << "filesystem path" << endl;
-
- wcerr << "info: use schema file name translation mechanism "
- << "to resolve this" << endl;
-
- throw Failed ();
- }
- }
-
- // Process each schema node.
- //
- TypeSchemaMap tsm;
-
- for (Schemas::iterator i (schemas.begin ()); i != schemas.end (); ++i)
- {
- process_schema (**i, root, *xsd, tsm, file_set, fat_type_file_, trans_);
- }
-
- // wcerr << tsm.size () << " type schema nodes" << endl;
-
- // Establish include/import dependencies. While at it add the
- // new schemas to the list which we will return.
- //
- for (TypeSchemaMap::iterator i (tsm.begin ()); i != tsm.end (); ++i)
- {
- SemanticGraph::Schema& s (*i->second);
- Type t (s, root, by_value_key_, tsm);
- t.dispatch (*i->first);
- schemas.push_back (&s);
- }
-
- return schemas;
- }
-
- SchemaPerTypeTranslator::
- ~SchemaPerTypeTranslator ()
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/transformations/schema-per-type.hxx b/libxsd-frontend/xsd-frontend/transformations/schema-per-type.hxx
deleted file mode 100644
index 8b6a69e..0000000
--- a/libxsd-frontend/xsd-frontend/transformations/schema-per-type.hxx
+++ /dev/null
@@ -1,62 +0,0 @@
-// file : xsd-frontend/transformations/schema-per-type.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRANSFORMATIONS_SCHEMA_PER_TYPE_HXX
-#define XSD_FRONTEND_TRANSFORMATIONS_SCHEMA_PER_TYPE_HXX
-
-#include <vector>
-
-#include <xsd-frontend/types.hxx>
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-namespace XSDFrontend
-{
- namespace Transformations
- {
- class SchemaPerTypeTranslator
- {
- public:
- virtual
- ~SchemaPerTypeTranslator ();
-
- // The following two functions should return empty string if
- // there is no match.
- //
- virtual String
- translate_type (String const& ns, String const& name) = 0;
-
- virtual NarrowString
- translate_schema (NarrowString const& abs_path) = 0;
- };
-
- // This transformation restructures the semantic graph to have
- // each type definition in a seperate schema file.
- //
- class SchemaPerType
- {
- public:
- struct Failed {};
-
- // If a type of an element or attribute has a context entry
- // with the by_value_key key and it is true, then the schema
- // for this type is included "strongly".
- //
- SchemaPerType (SchemaPerTypeTranslator&,
- bool fat_type_file,
- char const* by_value_key = 0);
-
- std::vector<SemanticGraph::Schema*>
- transform (SemanticGraph::Schema&);
-
- private:
- bool fat_type_file_;
- char const* by_value_key_;
- SchemaPerTypeTranslator& trans_;
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRANSFORMATIONS_SCHEMA_PER_TYPE_HXX
diff --git a/libxsd-frontend/xsd-frontend/transformations/simplifier.cxx b/libxsd-frontend/xsd-frontend/transformations/simplifier.cxx
deleted file mode 100644
index 9372a4a..0000000
--- a/libxsd-frontend/xsd-frontend/transformations/simplifier.cxx
+++ /dev/null
@@ -1,162 +0,0 @@
-// file : xsd-frontend/transformations/simplifier.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <xsd-frontend/transformations/simplifier.hxx>
-
-namespace XSDFrontend
-{
- namespace
- {
- struct Compositor: Traversal::All,
- Traversal::Choice,
- Traversal::Sequence
- {
- Compositor (SemanticGraph::Schema& root)
- : root_ (root)
- {
- }
-
- virtual void
- traverse (SemanticGraph::All& a)
- {
- // The all compositor cannot contain compositors.
- //
- if (a.contains_begin () == a.contains_end ())
- remove (a);
- }
-
- virtual void
- traverse (SemanticGraph::Choice& c)
- {
- // Do the depth-first traversal so that we take into account
- // the potential removal of nested compositors.
- //
- using SemanticGraph::Compositor;
-
- for (Compositor::ContainsIterator i (c.contains_begin ());
- i != c.contains_end ();)
- {
- edge_traverser ().dispatch (*i++);
- }
-
- Choice::contains (c);
-
- if (c.contains_begin () == c.contains_end ())
- remove (c);
- }
-
- virtual void
- traverse (SemanticGraph::Sequence& s)
- {
- // Do the depth-first traversal so that we take into account
- // the potential removal of nested compositors.
- //
- using SemanticGraph::Compositor;
-
- for (Compositor::ContainsIterator i (s.contains_begin ());
- i != s.contains_end ();)
- {
- edge_traverser ().dispatch (*i++);
- }
-
- if (s.contains_begin () == s.contains_end ())
- remove (s);
- }
-
- private:
- virtual void
- remove (SemanticGraph::Compositor& c)
- {
- using SemanticGraph::Node;
- using SemanticGraph::Choice;
- using SemanticGraph::Complex;
- using SemanticGraph::Compositor;
-
- if (c.contained_particle_p ())
- {
- Compositor& com (c.contained_particle ().compositor ());
-
- // Empty compositors in choice are important.
- //
- if (!com.is_a<Choice> ())
- root_.delete_edge (com, c, c.contained_particle ());
- }
- else
- {
- Complex& con (
- dynamic_cast<Complex&> (c.contained_compositor ().container ()));
- root_.delete_edge (con, c, c.contained_compositor ());
- }
- }
-
- private:
- SemanticGraph::Schema& root_;
- };
-
- //
- //
- struct Type: Traversal::Complex
- {
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- if (c.contains_compositor_p ())
- Complex::contains_compositor (c);
- }
- };
-
- // Go into implied/included/imported schemas while making sure
- // we don't process the same stuff more than once.
- //
- struct Uses: Traversal::Uses
- {
- virtual void
- traverse (Type& u)
- {
- SemanticGraph::Schema& s (u.schema ());
-
- if (!s.context ().count ("xsd-frontend-simplifier-seen"))
- {
- s.context ().set ("xsd-frontend-simplifier-seen", true);
- Traversal::Uses::traverse (u);
- }
- }
- };
- }
-
- namespace Transformations
- {
- void Simplifier::
- transform (SemanticGraph::Schema& s, SemanticGraph::Path const&)
- {
- Traversal::Schema schema;
- Uses uses;
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- Type type;
-
- schema >> schema_names >> ns >> ns_names >> type;
-
- Compositor compositor (s);
- Traversal::ContainsCompositor contains_compositor;
- Traversal::ContainsParticle contains_particle;
-
- type >> contains_compositor >> compositor;
- compositor >> contains_particle >> compositor;
-
- // Some twisted schemas do recusive inclusions.
- //
- s.context ().set ("xsd-frontend-simplifier-seen", true);
-
- schema.dispatch (s);
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/transformations/simplifier.hxx b/libxsd-frontend/xsd-frontend/transformations/simplifier.hxx
deleted file mode 100644
index 674ee45..0000000
--- a/libxsd-frontend/xsd-frontend/transformations/simplifier.hxx
+++ /dev/null
@@ -1,30 +0,0 @@
-// file : xsd-frontend/transformations/simplifier.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRANSFORMATIONS_SIMPLIFIER_HXX
-#define XSD_FRONTEND_TRANSFORMATIONS_SIMPLIFIER_HXX
-
-#include <xsd-frontend/types.hxx>
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-namespace XSDFrontend
-{
- namespace Transformations
- {
- // This transformation performs various schema simplifications
- // (e.g., removing empty compositors, etc). This transformation
- // assumes that there are no anonymous types.
- //
- class Simplifier
- {
- public:
- void
- transform (SemanticGraph::Schema&, SemanticGraph::Path const&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRANSFORMATIONS_SIMPLIFIER_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal.hxx b/libxsd-frontend/xsd-frontend/traversal.hxx
deleted file mode 100644
index 10190a1..0000000
--- a/libxsd-frontend/xsd-frontend/traversal.hxx
+++ /dev/null
@@ -1,25 +0,0 @@
-// file : xsd-frontend/traversal.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_HXX
-#define XSD_FRONTEND_TRAVERSAL_HXX
-
-#include <xsd-frontend/traversal/any.hxx>
-#include <xsd-frontend/traversal/any-attribute.hxx>
-#include <xsd-frontend/traversal/attribute.hxx>
-#include <xsd-frontend/traversal/attribute-group.hxx>
-#include <xsd-frontend/traversal/complex.hxx>
-#include <xsd-frontend/traversal/compositors.hxx>
-#include <xsd-frontend/traversal/element.hxx>
-#include <xsd-frontend/traversal/element-group.hxx>
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/traversal/enumeration.hxx>
-#include <xsd-frontend/traversal/fundamental.hxx>
-#include <xsd-frontend/traversal/list.hxx>
-#include <xsd-frontend/traversal/namespace.hxx>
-#include <xsd-frontend/traversal/particle.hxx>
-#include <xsd-frontend/traversal/schema.hxx>
-#include <xsd-frontend/traversal/union.hxx>
-
-#endif // XSD_FRONTEND_TRAVERSAL_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/any-attribute.hxx b/libxsd-frontend/xsd-frontend/traversal/any-attribute.hxx
deleted file mode 100644
index 50655dd..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/any-attribute.hxx
+++ /dev/null
@@ -1,21 +0,0 @@
-// file : xsd-frontend/traversal/any-attribute.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_ANY_ATTRIBUTE_HXX
-#define XSD_FRONTEND_TRAVERSAL_ANY_ATTRIBUTE_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/any-attribute.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- typedef
- Node<SemanticGraph::AnyAttribute>
- AnyAttribute;
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_ANY_ATTRIBUTE_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/any.hxx b/libxsd-frontend/xsd-frontend/traversal/any.hxx
deleted file mode 100644
index 85a320d..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/any.hxx
+++ /dev/null
@@ -1,21 +0,0 @@
-// file : xsd-frontend/traversal/any.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_ANY_HXX
-#define XSD_FRONTEND_TRAVERSAL_ANY_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/any.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- typedef
- Node<SemanticGraph::Any>
- Any;
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_ANY_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/attribute-group.cxx b/libxsd-frontend/xsd-frontend/traversal/attribute-group.cxx
deleted file mode 100644
index a40afd7..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/attribute-group.cxx
+++ /dev/null
@@ -1,29 +0,0 @@
-// file : xsd-frontend/traversal/attribute-group.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/attribute-group.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- void AttributeGroup::
- traverse (Type& g)
- {
- pre (g);
- names (g);
- post (g);
- }
-
- void AttributeGroup::
- pre (Type&)
- {
- }
-
- void AttributeGroup::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/attribute-group.hxx b/libxsd-frontend/xsd-frontend/traversal/attribute-group.hxx
deleted file mode 100644
index 03fee14..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/attribute-group.hxx
+++ /dev/null
@@ -1,29 +0,0 @@
-// file : xsd-frontend/traversal/attribute-group.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_ATTRIBUTE_GROUP_HXX
-#define XSD_FRONTEND_TRAVERSAL_ATTRIBUTE_GROUP_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/attribute-group.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- struct AttributeGroup: ScopeTemplate<SemanticGraph::AttributeGroup>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- post (Type&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_ATTRIBUTE_GROUP_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/attribute.cxx b/libxsd-frontend/xsd-frontend/traversal/attribute.cxx
deleted file mode 100644
index e61eeb2..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/attribute.cxx
+++ /dev/null
@@ -1,47 +0,0 @@
-// file : xsd-frontend/traversal/attribute.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/attribute.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- void Attribute::
- traverse (Type& a)
- {
- pre (a);
- belongs (a);
- name (a);
- post (a);
- }
-
- void Attribute::
- pre (Type&)
- {
- }
-
- void Attribute::
- belongs (Type& a, EdgeDispatcher& d)
- {
- d.dispatch (a.belongs ());
- }
-
- void Attribute::
- belongs (Type& a)
- {
- belongs (a, *this);
- }
-
- void Attribute::
- name (Type&)
- {
- }
-
- void Attribute::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/attribute.hxx b/libxsd-frontend/xsd-frontend/traversal/attribute.hxx
deleted file mode 100644
index f3962e4..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/attribute.hxx
+++ /dev/null
@@ -1,40 +0,0 @@
-// file : xsd-frontend/traversal/attribute.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_ATTRIBUTE_HXX
-#define XSD_FRONTEND_TRAVERSAL_ATTRIBUTE_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-
-#include <xsd-frontend/semantic-graph/attribute.hxx>
-
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- struct Attribute : Node<SemanticGraph::Attribute>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- belongs (Type&, EdgeDispatcher&);
-
- virtual void
- belongs (Type&);
-
- virtual void
- name (Type&);
-
- virtual void
- post (Type&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_ATTRIBUTE_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/complex.cxx b/libxsd-frontend/xsd-frontend/traversal/complex.cxx
deleted file mode 100644
index 6e936ab..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/complex.cxx
+++ /dev/null
@@ -1,63 +0,0 @@
-// file : xsd-frontend/traversal/complex.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/complex.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- void Complex::
- traverse (Type& c)
- {
- pre (c);
- name (c);
- inherits (c);
- names (c);
- contains_compositor (c);
- post (c);
- }
-
- void Complex::
- pre (Type&)
- {
- }
-
- void Complex::
- name (Type&)
- {
- }
-
- void Complex::
- inherits (Type& c)
- {
- inherits (c, *this);
- }
-
- void Complex::
- inherits (Type& c, EdgeDispatcher& d)
- {
- if (c.inherits_p ())
- d.dispatch (c.inherits ());
- }
-
- void Complex::
- contains_compositor (Type& c)
- {
- contains_compositor (c, *this);
- }
-
- void Complex::
- contains_compositor (Type& c, EdgeDispatcher& d)
- {
- if (c.contains_compositor_p ())
- d.dispatch (c.contains_compositor ());
- }
-
- void Complex::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/complex.hxx b/libxsd-frontend/xsd-frontend/traversal/complex.hxx
deleted file mode 100644
index 1f55730..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/complex.hxx
+++ /dev/null
@@ -1,44 +0,0 @@
-// file : xsd-frontend/traversal/complex.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_COMPLEX_HXX
-#define XSD_FRONTEND_TRAVERSAL_COMPLEX_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/complex.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- struct Complex : ScopeTemplate<SemanticGraph::Complex>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- name (Type&);
-
- virtual void
- inherits (Type&);
-
- void
- inherits (Type&, EdgeDispatcher&);
-
- virtual void
- contains_compositor (Type&);
-
- void
- contains_compositor (Type&, EdgeDispatcher&);
-
- virtual void
- post (Type&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_COMPLEX_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/compositors.cxx b/libxsd-frontend/xsd-frontend/traversal/compositors.cxx
deleted file mode 100644
index f2b3dcd..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/compositors.cxx
+++ /dev/null
@@ -1,164 +0,0 @@
-// file : xsd-frontend/traversal/compositors.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/compositors.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- // ContainsParticle
- //
- void ContainsParticle::
- traverse (Type& c)
- {
- dispatch (c.particle ());
- }
-
-
- // ContainsCompositor
- //
- void ContainsCompositor::
- traverse (Type& c)
- {
- dispatch (c.compositor ());
- }
-
-
- // Compositor
- //
- void Compositor::
- traverse (Type& c)
- {
- pre (c);
- contains (c);
- post (c);
- }
-
- void Compositor::
- pre (Type&)
- {
- }
-
- void Compositor::
- contains (Type& c)
- {
- iterate_and_dispatch (
- c.contains_begin (), c.contains_end (), edge_traverser ());
- }
-
- void Compositor::
- contains (Type& c, EdgeDispatcher& d)
- {
- iterate_and_dispatch (c.contains_begin (), c.contains_end (), d);
- }
-
- void Compositor::
- post (Type&)
- {
- }
-
-
- // All
- //
- void All::
- traverse (Type& c)
- {
- pre (c);
- contains (c);
- post (c);
- }
-
- void All::
- pre (Type&)
- {
- }
-
- void All::
- contains (Type& c)
- {
- iterate_and_dispatch (
- c.contains_begin (), c.contains_end (), edge_traverser ());
- }
-
- void All::
- contains (Type& c, EdgeDispatcher& d)
- {
- iterate_and_dispatch (c.contains_begin (), c.contains_end (), d);
- }
-
- void All::
- post (Type&)
- {
- }
-
-
- // Choice
- //
- void Choice::
- traverse (Type& c)
- {
- pre (c);
- contains (c);
- post (c);
- }
-
- void Choice::
- pre (Type&)
- {
- }
-
- void Choice::
- contains (Type& c)
- {
- iterate_and_dispatch (
- c.contains_begin (), c.contains_end (), edge_traverser ());
- }
-
- void Choice::
- contains (Type& c, EdgeDispatcher& d)
- {
- iterate_and_dispatch (c.contains_begin (), c.contains_end (), d);
- }
-
- void Choice::
- post (Type&)
- {
- }
-
-
- // Sequence
- //
- void Sequence::
- traverse (Type& c)
- {
- pre (c);
- contains (c);
- post (c);
- }
-
- void Sequence::
- pre (Type&)
- {
- }
-
- void Sequence::
- contains (Type& c)
- {
- iterate_and_dispatch (
- c.contains_begin (), c.contains_end (), edge_traverser ());
- }
-
- void Sequence::
- contains (Type& c, EdgeDispatcher& d)
- {
- iterate_and_dispatch (c.contains_begin (), c.contains_end (), d);
- }
-
- void Sequence::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/compositors.hxx b/libxsd-frontend/xsd-frontend/traversal/compositors.hxx
deleted file mode 100644
index 4761b99..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/compositors.hxx
+++ /dev/null
@@ -1,135 +0,0 @@
-// file : xsd-frontend/traversal/compositors.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_COMPOSITORS_HXX
-#define XSD_FRONTEND_TRAVERSAL_COMPOSITORS_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/compositors.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- //
- //
- struct ContainsParticle: Edge<SemanticGraph::ContainsParticle>
- {
- ContainsParticle ()
- {
- }
-
- ContainsParticle (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type&);
- };
-
-
- //
- //
- struct ContainsCompositor: Edge<SemanticGraph::ContainsCompositor>
- {
- ContainsCompositor ()
- {
- }
-
- ContainsCompositor (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type&);
- };
-
- //
- //
- struct Compositor : Node<SemanticGraph::Compositor>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- contains (Type&);
-
- virtual void
- contains (Type&, EdgeDispatcher&);
-
- virtual void
- post (Type&);
- };
-
-
- //
- //
- struct All : Node<SemanticGraph::All>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- contains (Type&);
-
- virtual void
- contains (Type&, EdgeDispatcher&);
-
- virtual void
- post (Type&);
- };
-
-
- //
- //
- struct Choice : Node<SemanticGraph::Choice>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- contains (Type&);
-
- virtual void
- contains (Type&, EdgeDispatcher&);
-
- virtual void
- post (Type&);
- };
-
-
- //
- //
- struct Sequence : Node<SemanticGraph::Sequence>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- contains (Type&);
-
- virtual void
- contains (Type&, EdgeDispatcher&);
-
- virtual void
- post (Type&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_COMPOSITORS_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/element-group.cxx b/libxsd-frontend/xsd-frontend/traversal/element-group.cxx
deleted file mode 100644
index 0b253dd..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/element-group.cxx
+++ /dev/null
@@ -1,42 +0,0 @@
-// file : xsd-frontend/traversal/element-group.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/element-group.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- void ElementGroup::
- traverse (Type& g)
- {
- pre (g);
- names (g);
- contains_compositor (g);
- post (g);
- }
-
- void ElementGroup::
- pre (Type&)
- {
- }
-
- void ElementGroup::
- contains_compositor (Type& g, EdgeDispatcher& d)
- {
- d.dispatch (g.contains_compositor ());
- }
-
- void ElementGroup::
- contains_compositor (Type& g)
- {
- contains_compositor (g, *this);
- }
-
- void ElementGroup::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/element-group.hxx b/libxsd-frontend/xsd-frontend/traversal/element-group.hxx
deleted file mode 100644
index df13b26..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/element-group.hxx
+++ /dev/null
@@ -1,35 +0,0 @@
-// file : xsd-frontend/traversal/element-group.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_ELEMENT_GROUP_HXX
-#define XSD_FRONTEND_TRAVERSAL_ELEMENT_GROUP_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/element-group.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- struct ElementGroup: ScopeTemplate<SemanticGraph::ElementGroup>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- contains_compositor (Type&);
-
- virtual void
- contains_compositor (Type&, EdgeDispatcher&);
-
- virtual void
- post (Type&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_ELEMENT_GROUP_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/element.cxx b/libxsd-frontend/xsd-frontend/traversal/element.cxx
deleted file mode 100644
index efdb0a6..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/element.cxx
+++ /dev/null
@@ -1,47 +0,0 @@
-// file : xsd-frontend/traversal/element.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/element.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- void Element::
- traverse (Type& m)
- {
- pre (m);
- belongs (m);
- name (m);
- post (m);
- }
-
- void Element::
- pre (Type&)
- {
- }
-
- void Element::
- belongs (Type& m, EdgeDispatcher& d)
- {
- d.dispatch (m.belongs ());
- }
-
- void Element::
- belongs (Type& m)
- {
- belongs (m, edge_traverser ());
- }
-
- void Element::
- name (Type&)
- {
- }
-
- void Element::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/element.hxx b/libxsd-frontend/xsd-frontend/traversal/element.hxx
deleted file mode 100644
index e1af29a..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/element.hxx
+++ /dev/null
@@ -1,38 +0,0 @@
-// file : xsd-frontend/traversal/element.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_ELEMENT_HXX
-#define XSD_FRONTEND_TRAVERSAL_ELEMENT_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/element.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- struct Element : Node<SemanticGraph::Element>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- belongs (Type&, EdgeDispatcher&);
-
- virtual void
- belongs (Type&);
-
- virtual void
- name (Type&);
-
- virtual void
- post (Type&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_ELEMENT_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/elements.cxx b/libxsd-frontend/xsd-frontend/traversal/elements.cxx
deleted file mode 100644
index e64e3b9..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/elements.cxx
+++ /dev/null
@@ -1,76 +0,0 @@
-// file : xsd-frontend/traversal/elements.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- // Instance
- //
- void Instance::
- traverse (Type& a)
- {
- pre (a);
- belongs (a);
- post (a);
- }
-
- void Instance::
- pre (Type&)
- {
- }
-
- void Instance::
- belongs (Type& a, EdgeDispatcher& d)
- {
- d.dispatch (a.belongs ());
- }
-
- void Instance::
- belongs (Type& a)
- {
- belongs (a, edge_traverser ());
- }
-
- void Instance::
- post (Type&)
- {
- }
-
-
- // Member
- //
- void Member::
- traverse (Type& a)
- {
- pre (a);
- belongs (a);
- post (a);
- }
-
- void Member::
- pre (Type&)
- {
- }
-
- void Member::
- belongs (Type& a, EdgeDispatcher& d)
- {
- d.dispatch (a.belongs ());
- }
-
- void Member::
- belongs (Type& a)
- {
- belongs (a, edge_traverser ());
- }
-
- void Member::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/elements.hxx b/libxsd-frontend/xsd-frontend/traversal/elements.hxx
deleted file mode 100644
index bd1dd70..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/elements.hxx
+++ /dev/null
@@ -1,411 +0,0 @@
-// file : xsd-frontend/traversal/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_ELEMENTS_HXX
-#define XSD_FRONTEND_TRAVERSAL_ELEMENTS_HXX
-
-#include <cutl/compiler/traversal.hxx>
-
-#include <xsd-frontend/types.hxx>
-#include <xsd-frontend/semantic-graph/elements.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- using namespace cutl;
-
- typedef compiler::dispatcher<SemanticGraph::Node> NodeDispatcher;
- typedef compiler::dispatcher<SemanticGraph::Edge> EdgeDispatcher;
-
- //
- //
- struct NodeBase: NodeDispatcher, EdgeDispatcher
- {
- void
- edge_traverser (EdgeDispatcher& d)
- {
- EdgeDispatcher::traverser (d);
- }
-
- EdgeDispatcher&
- edge_traverser ()
- {
- return *this;
- }
-
- using NodeDispatcher::dispatch;
- using EdgeDispatcher::dispatch;
-
- using EdgeDispatcher::iterate_and_dispatch;
- };
-
- struct EdgeBase: EdgeDispatcher, NodeDispatcher
- {
- void
- node_traverser (NodeDispatcher& d)
- {
- NodeDispatcher::traverser (d);
- }
-
- NodeDispatcher&
- node_traverser ()
- {
- return *this;
- }
-
- using EdgeDispatcher::dispatch;
- using NodeDispatcher::dispatch;
-
- using NodeDispatcher::iterate_and_dispatch;
- };
-
- inline EdgeBase&
- operator>> (NodeBase& n, EdgeBase& e)
- {
- n.edge_traverser (e);
- return e;
- }
-
- inline NodeBase&
- operator>> (EdgeBase& e, NodeBase& n)
- {
- e.node_traverser (n);
- return n;
- }
-
- //
- //
- template <typename T>
- struct Node: compiler::traverser_impl<T, SemanticGraph::Node>,
- virtual NodeBase
- {
- typedef T Type;
- };
-
- template <typename T>
- struct Edge: compiler::traverser_impl<T, SemanticGraph::Edge>,
- virtual EdgeBase
- {
- typedef T Type;
- };
-
- //
- // Edges
- //
-
- //
- //
- struct Names : Edge<SemanticGraph::Names>
- {
- Names ()
- {
- }
-
- Names (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& e)
- {
- dispatch (e.named ());
- }
- };
-
-
- //
- //
- struct Belongs : Edge<SemanticGraph::Belongs>
- {
- Belongs ()
- {
- }
-
- Belongs (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& e)
- {
- dispatch (e.type ());
- }
- };
-
- //
- // Nodes
- //
-
- //
- //
- struct Nameable : Node<SemanticGraph::Nameable>
- {
- };
-
-
- //
- //
- template <typename T>
- struct ScopeTemplate : Node<T>
- {
- public:
- virtual void
- traverse (T& s)
- {
- names (s);
- }
-
- template<typename X>
- void
- names (T& s,
- EdgeDispatcher& d,
- void (X::*pre_) (T&) = (void (ScopeTemplate<T>::*)(T&)) (0),
- void (X::*post_) (T&) = (void (ScopeTemplate<T>::*)(T&)) (0),
- void (X::*none_) (T&) = (void (ScopeTemplate<T>::*)(T&)) (0),
- void (X::*next_) (T&) = (void (ScopeTemplate<T>::*)(T&)) (0))
- {
- X* this_ (dynamic_cast<X*> (this));
-
- typename T::NamesIterator b (s.names_begin ()), e (s.names_end ());
-
- if (b != e)
- {
- if (pre_)
- (this_->*pre_) (s);
-
- //iterate_and_dispatch (b, e, d, *this_, next_, s);
-
- for (; b != s.names_end ();)
- {
- d.dispatch (*b);
-
- if (++b != s.names_end () && next_ != 0)
- (this_->*next_) (s);
- }
-
- if (post_)
- (this_->*post_) (s);
- }
- else
- {
- if (none_)
- (this_->*none_) (s);
- }
- }
-
- virtual void
- names (T& s, EdgeDispatcher& d)
- {
- names<ScopeTemplate<T> > (s, d);
- }
-
- virtual void
- names (T& s)
- {
- names (s,
- *this,
- &ScopeTemplate<T>::names_pre,
- &ScopeTemplate<T>::names_post,
- &ScopeTemplate<T>::names_none,
- &ScopeTemplate<T>::names_next);
- }
-
- virtual void
- names_pre (T&)
- {
- }
-
- virtual void
- names_next (T&)
- {
- }
-
- virtual void
- names_post (T&)
- {
- }
-
- virtual void
- names_none (T&)
- {
- }
- };
-
-
- //
- //
- typedef
- ScopeTemplate<SemanticGraph::Scope>
- Scope;
-
-
- //
- //
- struct Type : Node<SemanticGraph::Type>
- {
- virtual void
- traverse (SemanticGraph::Type&) = 0;
- };
-
-
- //
- //
- struct Instance : Node<SemanticGraph::Instance>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- belongs (Type&, EdgeDispatcher&);
-
- virtual void
- belongs (Type&);
-
- virtual void
- post (Type&);
- };
-
-
- //
- //
- struct Member : Node<SemanticGraph::Member>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- belongs (Type&, EdgeDispatcher&);
-
- virtual void
- belongs (Type&);
-
- virtual void
- post (Type&);
- };
-
-
- //
- //
- struct Inherits : Edge<SemanticGraph::Inherits>
- {
- Inherits ()
- {
- }
-
- Inherits (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& e)
- {
- dispatch (e.base ());
- }
- };
-
-
- //
- //
- struct Extends : Edge<SemanticGraph::Extends>
- {
- Extends ()
- {
- }
-
- Extends (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& e)
- {
- dispatch (e.base ());
- }
- };
-
-
- //
- //
- struct Restricts : Edge<SemanticGraph::Restricts>
- {
- Restricts ()
- {
- }
-
- Restricts (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& e)
- {
- dispatch (e.base ());
- }
- };
-
-
- //
- //
- struct Argumented : Edge<SemanticGraph::Arguments>
- {
- Argumented ()
- {
- }
-
- Argumented (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& a)
- {
- dispatch (a.type ());
- }
- };
-
-
- /*
- //
- //
- struct Contains : Edge<SemanticGraph::Contains>
- {
- virtual void
- traverse (Type& e)
- {
- dispatch (e.element ());
- }
- };
- */
-
- //
- //
- typedef
- Node<SemanticGraph::AnyType>
- AnyType;
-
-
- //
- //
- typedef
- Node<SemanticGraph::AnySimpleType>
- AnySimpleType;
- }
-}
-
-#include <xsd-frontend/traversal/elements.txx>
-
-#endif // XSD_FRONTEND_TRAVERSAL_ELEMENTS_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/elements.txx b/libxsd-frontend/xsd-frontend/traversal/elements.txx
deleted file mode 100644
index 5b1aec0..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/elements.txx
+++ /dev/null
@@ -1,10 +0,0 @@
-// file : xsd-frontend/traversal/elements.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/enumeration.cxx b/libxsd-frontend/xsd-frontend/traversal/enumeration.cxx
deleted file mode 100644
index 124606f..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/enumeration.cxx
+++ /dev/null
@@ -1,90 +0,0 @@
-// file : xsd-frontend/traversal/enumeration.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/enumeration.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- // Enumeration
- //
- void Enumeration::
- traverse (Type& e)
- {
- pre (e);
- name (e);
- inherits (e);
- names (e);
- post (e);
- }
-
- void Enumeration::
- pre (Type&)
- {
- }
-
- void Enumeration::
- name (Type&)
- {
- }
-
- void Enumeration::
- inherits (Type& e)
- {
- inherits (e, *this);
- }
-
- void Enumeration::
- inherits (Type& e, EdgeDispatcher& d)
- {
- if (e.inherits_p ())
- d.dispatch (e.inherits ());
- }
-
- void Enumeration::
- post (Type&)
- {
- }
-
-
- // Enumerator
- //
- void Enumerator::
- traverse (Type& e)
- {
- pre (e);
- belongs (e);
- name (e);
- post (e);
- }
-
- void Enumerator::
- pre (Type&)
- {
- }
-
- void Enumerator::
- belongs (Type& e, EdgeDispatcher& d)
- {
- d.dispatch (e.belongs ());
- }
-
- void Enumerator::
- belongs (Type& e)
- {
- belongs (e, edge_traverser ());
- }
-
- void Enumerator::
- name (Type&)
- {
- }
-
- void Enumerator::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/enumeration.hxx b/libxsd-frontend/xsd-frontend/traversal/enumeration.hxx
deleted file mode 100644
index 960b11c..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/enumeration.hxx
+++ /dev/null
@@ -1,59 +0,0 @@
-// file : xsd-frontend/traversal/enumeration.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_ENUMERATION_HXX
-#define XSD_FRONTEND_TRAVERSAL_ENUMERATION_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/enumeration.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- struct Enumeration : ScopeTemplate<SemanticGraph::Enumeration>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- name (Type&);
-
- virtual void
- inherits (Type&);
-
- void
- inherits (Type&, EdgeDispatcher&);
-
- virtual void
- post (Type&);
- };
-
- struct Enumerator : Node<SemanticGraph::Enumerator>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- belongs (Type&, EdgeDispatcher&);
-
- virtual void
- belongs (Type&);
-
- virtual void
- name (Type&);
-
- virtual void
- post (Type&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_ENUMERATION_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/fundamental.cxx b/libxsd-frontend/xsd-frontend/traversal/fundamental.cxx
deleted file mode 100644
index 5202adf..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/fundamental.cxx
+++ /dev/null
@@ -1,12 +0,0 @@
-// file : xsd-frontend/traversal/fundamental.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/fundamental.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/fundamental.hxx b/libxsd-frontend/xsd-frontend/traversal/fundamental.hxx
deleted file mode 100644
index 0b771cd..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/fundamental.hxx
+++ /dev/null
@@ -1,233 +0,0 @@
-// file : xsd-frontend/traversal/fundamental.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_FUNDAMENTAL_HXX
-#define XSD_FRONTEND_TRAVERSAL_FUNDAMENTAL_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/fundamental.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- namespace Fundamental
- {
- typedef
- Node<SemanticGraph::Fundamental::Type>
- Type;
-
- // Integers.
- //
- typedef
- Node<SemanticGraph::Fundamental::Byte>
- Byte;
-
- typedef
- Node<SemanticGraph::Fundamental::UnsignedByte>
- UnsignedByte;
-
- typedef
- Node<SemanticGraph::Fundamental::Short>
- Short;
-
- typedef
- Node<SemanticGraph::Fundamental::UnsignedShort>
- UnsignedShort;
-
- typedef
- Node<SemanticGraph::Fundamental::Int>
- Int;
-
- typedef
- Node<SemanticGraph::Fundamental::UnsignedInt>
- UnsignedInt;
-
- typedef
- Node<SemanticGraph::Fundamental::Long>
- Long;
-
- typedef
- Node<SemanticGraph::Fundamental::UnsignedLong>
- UnsignedLong;
-
- typedef
- Node<SemanticGraph::Fundamental::Integer>
- Integer;
-
- typedef
- Node<SemanticGraph::Fundamental::NonPositiveInteger>
- NonPositiveInteger;
-
- typedef
- Node<SemanticGraph::Fundamental::NonNegativeInteger>
- NonNegativeInteger;
-
- typedef
- Node<SemanticGraph::Fundamental::PositiveInteger>
- PositiveInteger;
-
- typedef
- Node<SemanticGraph::Fundamental::NegativeInteger>
- NegativeInteger;
-
-
- // Boolean.
- //
- typedef
- Node<SemanticGraph::Fundamental::Boolean>
- Boolean;
-
-
- // Floats.
- //
- typedef
- Node<SemanticGraph::Fundamental::Float>
- Float;
-
- typedef
- Node<SemanticGraph::Fundamental::Double>
- Double;
-
- typedef
- Node<SemanticGraph::Fundamental::Decimal>
- Decimal;
-
-
- // Strings.
- //
- typedef
- Node<SemanticGraph::Fundamental::String>
- String;
-
- typedef
- Node<SemanticGraph::Fundamental::NormalizedString>
- NormalizedString;
-
- typedef
- Node<SemanticGraph::Fundamental::Token>
- Token;
-
- typedef
- Node<SemanticGraph::Fundamental::Name>
- Name;
-
- typedef
- Node<SemanticGraph::Fundamental::NameToken>
- NameToken;
-
- typedef
- Node<SemanticGraph::Fundamental::NameTokens>
- NameTokens;
-
- typedef
- Node<SemanticGraph::Fundamental::NCName>
- NCName;
-
- typedef
- Node<SemanticGraph::Fundamental::Language>
- Language;
-
-
- // Qualified name.
- //
- typedef
- Node<SemanticGraph::Fundamental::QName>
- QName;
-
-
- // ID/IDREF.
- //
- typedef
- Node<SemanticGraph::Fundamental::Id>
- Id;
-
- typedef
- Node<SemanticGraph::Fundamental::IdRef>
- IdRef;
-
- typedef
- Node<SemanticGraph::Fundamental::IdRefs>
- IdRefs;
-
-
- // URI.
- //
- typedef
- Node<SemanticGraph::Fundamental::AnyURI>
- AnyURI;
-
-
- // Binary.
- //
- typedef
- Node<SemanticGraph::Fundamental::Base64Binary>
- Base64Binary;
-
- typedef
- Node<SemanticGraph::Fundamental::HexBinary>
- HexBinary;
-
-
- // Date/time.
- //
- typedef
- Node<SemanticGraph::Fundamental::Date>
- Date;
-
- typedef
- Node<SemanticGraph::Fundamental::DateTime>
- DateTime;
-
- typedef
- Node<SemanticGraph::Fundamental::Duration>
- Duration;
-
- typedef
- Node<SemanticGraph::Fundamental::Day>
- Day;
-
- typedef
- Node<SemanticGraph::Fundamental::Month>
- Month;
-
- typedef
- Node<SemanticGraph::Fundamental::MonthDay>
- MonthDay;
-
- typedef
- Node<SemanticGraph::Fundamental::Year>
- Year;
-
- typedef
- Node<SemanticGraph::Fundamental::YearMonth>
- YearMonth;
-
- typedef
- Node<SemanticGraph::Fundamental::Time>
- Time;
-
-
- // Entity.
- //
- typedef
- Node<SemanticGraph::Fundamental::Entity>
- Entity;
-
- typedef
- Node<SemanticGraph::Fundamental::Entities>
- Entities;
-
-
- // Notation.
- //
- typedef
- Node<SemanticGraph::Fundamental::Notation>
- Notation;
- }
- }
-}
-
-
-#endif // XSD_FRONTEND_TRAVERSAL_FUNDAMENTAL_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/list.cxx b/libxsd-frontend/xsd-frontend/traversal/list.cxx
deleted file mode 100644
index 9241af1..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/list.cxx
+++ /dev/null
@@ -1,47 +0,0 @@
-// file : xsd-frontend/traversal/list.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/list.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- void List::
- traverse (Type& l)
- {
- pre (l);
- argumented (l);
- name (l);
- post (l);
- }
-
- void List::
- pre (Type&)
- {
- }
-
- void List::
- argumented (Type& l)
- {
- argumented (l, *this);
- }
-
- void List::
- argumented (Type& l, EdgeDispatcher& d)
- {
- d.dispatch (l.argumented ());
- }
-
- void List::
- name (Type&)
- {
- }
-
- void List::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/list.hxx b/libxsd-frontend/xsd-frontend/traversal/list.hxx
deleted file mode 100644
index 06aa154..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/list.hxx
+++ /dev/null
@@ -1,38 +0,0 @@
-// file : xsd-frontend/traversal/list.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_LIST_HXX
-#define XSD_FRONTEND_TRAVERSAL_LIST_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/list.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- struct List: Node<SemanticGraph::List>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- argumented (Type&);
-
- virtual void
- argumented (Type&, EdgeDispatcher& d);
-
- virtual void
- name (Type&);
-
- virtual void
- post (Type&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_LIST_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/namespace.cxx b/libxsd-frontend/xsd-frontend/traversal/namespace.cxx
deleted file mode 100644
index fbf1105..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/namespace.cxx
+++ /dev/null
@@ -1,12 +0,0 @@
-// file : xsd-frontend/traversal/namespace.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/namespace.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/namespace.hxx b/libxsd-frontend/xsd-frontend/traversal/namespace.hxx
deleted file mode 100644
index 0dd0901..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/namespace.hxx
+++ /dev/null
@@ -1,44 +0,0 @@
-// file : xsd-frontend/traversal/namespace.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_NAMESPACE_HXX
-#define XSD_FRONTEND_TRAVERSAL_NAMESPACE_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/namespace.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- struct Namespace: ScopeTemplate<SemanticGraph::Namespace>
- {
- virtual void
- traverse (Type& m)
- {
- pre (m);
- name (m);
- names (m);
- post (m);
- }
-
- virtual void
- pre (Type&)
- {
- }
-
- virtual void
- name (Type&)
- {
- }
-
- virtual void
- post (Type&)
- {
- }
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_NAMESPACE_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/particle.cxx b/libxsd-frontend/xsd-frontend/traversal/particle.cxx
deleted file mode 100644
index 1dd0ce0..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/particle.cxx
+++ /dev/null
@@ -1,30 +0,0 @@
-// file : xsd-frontend/traversal/particle.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/particle.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- // Particle
- //
- void Particle::
- traverse (Type& c)
- {
- pre (c);
- post (c);
- }
-
- void Particle::
- pre (Type&)
- {
- }
-
- void Particle::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/particle.hxx b/libxsd-frontend/xsd-frontend/traversal/particle.hxx
deleted file mode 100644
index 5346ae9..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/particle.hxx
+++ /dev/null
@@ -1,29 +0,0 @@
-// file : xsd-frontend/traversal/particle.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_PARTICLE_HXX
-#define XSD_FRONTEND_TRAVERSAL_PARTICLE_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/particle.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- struct Particle : Node<SemanticGraph::Particle>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- post (Type&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_PARTICLE_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/schema.cxx b/libxsd-frontend/xsd-frontend/traversal/schema.cxx
deleted file mode 100644
index 090e964..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/schema.cxx
+++ /dev/null
@@ -1,12 +0,0 @@
-// file : xsd-frontend/traversal/schema.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/schema.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/schema.hxx b/libxsd-frontend/xsd-frontend/traversal/schema.hxx
deleted file mode 100644
index a38ddfd..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/schema.hxx
+++ /dev/null
@@ -1,149 +0,0 @@
-// file : xsd-frontend/traversal/schema.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_SCHEMA_HXX
-#define XSD_FRONTEND_TRAVERSAL_SCHEMA_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- //
- //
- struct Uses: Edge<SemanticGraph::Uses>
- {
- Uses ()
- {
- }
-
- Uses (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& e)
- {
- dispatch (e.schema ());
- }
- };
-
- //
- //
- struct Implies: Edge<SemanticGraph::Implies>
- {
- Implies ()
- {
- }
-
- Implies (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& e)
- {
- dispatch (e.schema ());
- }
- };
-
-
- //
- //
- struct Sources: Edge<SemanticGraph::Sources>
- {
- Sources ()
- {
- }
-
- Sources (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& e)
- {
- dispatch (e.schema ());
- }
- };
-
-
- //
- //
- struct Includes: Edge<SemanticGraph::Includes>
- {
- Includes ()
- {
- }
-
- Includes (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& e)
- {
- dispatch (e.schema ());
- }
- };
-
-
- //
- //
- struct Imports: Edge<SemanticGraph::Imports>
- {
- Imports ()
- {
- }
-
- Imports (NodeBase& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (Type& e)
- {
- dispatch (e.schema ());
- }
- };
-
-
- //
- //
- struct Schema: ScopeTemplate<SemanticGraph::Schema>
- {
- virtual void
- traverse (Type& s)
- {
- pre (s);
-
- iterate_and_dispatch (
- s.uses_begin (), s.uses_end (), edge_traverser ());
-
- names (s);
-
- post (s);
- }
-
- virtual void
- pre (Type&)
- {
- }
-
- virtual void
- post (Type&)
- {
- }
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_SCHEMA_HXX
diff --git a/libxsd-frontend/xsd-frontend/traversal/union.cxx b/libxsd-frontend/xsd-frontend/traversal/union.cxx
deleted file mode 100644
index fe8f7d0..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/union.cxx
+++ /dev/null
@@ -1,47 +0,0 @@
-// file : xsd-frontend/traversal/union.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/traversal/union.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- void Union::
- traverse (Type& u)
- {
- pre (u);
- argumented (u);
- name (u);
- post (u);
- }
-
- void Union::
- pre (Type&)
- {
- }
-
- void Union::
- argumented (Type& u)
- {
- argumented (u, *this);
- }
-
- void Union::
- argumented (Type& u, EdgeDispatcher& d)
- {
- iterate_and_dispatch (u.argumented_begin (), u.argumented_end (), d);
- }
-
- void Union::
- name (Type&)
- {
- }
-
- void Union::
- post (Type&)
- {
- }
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/traversal/union.hxx b/libxsd-frontend/xsd-frontend/traversal/union.hxx
deleted file mode 100644
index 8012036..0000000
--- a/libxsd-frontend/xsd-frontend/traversal/union.hxx
+++ /dev/null
@@ -1,38 +0,0 @@
-// file : xsd-frontend/traversal/union.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TRAVERSAL_UNION_HXX
-#define XSD_FRONTEND_TRAVERSAL_UNION_HXX
-
-#include <xsd-frontend/traversal/elements.hxx>
-#include <xsd-frontend/semantic-graph/union.hxx>
-
-namespace XSDFrontend
-{
- namespace Traversal
- {
- struct Union: Node<SemanticGraph::Union>
- {
- virtual void
- traverse (Type&);
-
- virtual void
- pre (Type&);
-
- virtual void
- argumented (Type&);
-
- virtual void
- argumented (Type&, EdgeDispatcher& d);
-
- virtual void
- name (Type&);
-
- virtual void
- post (Type&);
- };
- }
-}
-
-#endif // XSD_FRONTEND_TRAVERSAL_UNION_HXX
diff --git a/libxsd-frontend/xsd-frontend/types.cxx b/libxsd-frontend/xsd-frontend/types.cxx
deleted file mode 100644
index 49faf92..0000000
--- a/libxsd-frontend/xsd-frontend/types.cxx
+++ /dev/null
@@ -1,61 +0,0 @@
-// file : xsd-frontend/types.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cstdlib> // std::mbstowcs
-
-#include <xsd-frontend/types.hxx>
-
-namespace XSDFrontend
-{
- // NonRepresentable
- //
- char const* NonRepresentable::
- what () const throw ()
- {
- return "character is not representable in the narrower encoding";
- }
-
- // StringTemplate
- //
-
- // Specialization for char to wchar_t conversion.
- //
- template <>
- void StringTemplate<wchar_t, char>::
- from_narrow (char const* s)
- {
- size_type size (std::mbstowcs (0, s, 0) + 1);
-
- // I dare to change the guts!
- //
- resize (size - 1);
-
- wchar_t* p (const_cast<wchar_t*> (data ()));
-
- std::mbstowcs (p, s, size);
- }
-
- // Specialization for wchar_t to char conversion.
- //
- template <>
- StringTemplate<char> StringTemplate<wchar_t, char>::
- to_narrow () const
- {
- size_type size (std::wcstombs (0, c_str (), 0));
-
- if (size == size_type (-1))
- throw NonRepresentable ();
-
- // I dare to change the guts!
- //
- StringTemplate<char> r;
- r.resize (size);
-
- char* p (const_cast<char*> (r.data ()));
-
- std::wcstombs (p, c_str (), size + 1);
-
- return r;
- }
-}
diff --git a/libxsd-frontend/xsd-frontend/types.hxx b/libxsd-frontend/xsd-frontend/types.hxx
deleted file mode 100644
index 0cd1ad1..0000000
--- a/libxsd-frontend/xsd-frontend/types.hxx
+++ /dev/null
@@ -1,250 +0,0 @@
-// file : xsd-frontend/types.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_TYPES_HXX
-#define XSD_FRONTEND_TYPES_HXX
-
-#include <string>
-#include <cstddef> // std::size_t
-
-namespace XSDFrontend
-{
- using std::size_t;
-
- namespace Bits
- {
- struct None {};
-
- template <typename C>
- struct NarrowerChar
- {
- typedef None Type;
- };
-
- template <>
- struct NarrowerChar<wchar_t>
- {
- typedef char Type;
- };
- }
-
- struct NonRepresentable: std::exception
- {
- virtual char const*
- what () const throw ();
- };
-
- template <typename C, typename NC = typename Bits::NarrowerChar<C>::Type>
- class StringTemplate;
-
- template <>
- class StringTemplate<Bits::None, Bits::None>
- {
- };
-
- template <typename C, typename NC>
- class StringTemplate : public std::basic_string<C>
- {
- typedef std::basic_string<C> Base;
- typedef std::basic_string<NC> NarrowerBase;
-
- Base&
- base ()
- {
- return *this;
- }
-
- Base const&
- base () const
- {
- return *this;
- }
-
- public:
- typedef typename Base::size_type size_type;
-
- using Base::npos;
-
- public:
- StringTemplate ()
- {
- }
-
- StringTemplate (StringTemplate const& str,
- size_type pos,
- size_type n = npos)
- : Base (str, pos, n)
- {
- }
-
- StringTemplate (C const* s, size_type n)
- : Base (s, n)
- {
- }
-
- StringTemplate (C const* s)
- : Base (s)
- {
- }
-
- StringTemplate (size_type n, C c)
- : Base (n, c)
- {
- }
-
- template <typename I>
- StringTemplate(I begin, I end)
- : Base (begin, end)
- {
- }
-
- StringTemplate (StringTemplate const& other)
- : Base (other)
- {
- }
-
- // Conversion from Base.
- //
- StringTemplate (Base const& str)
- : Base (str)
- {
- }
-
- // Conversion from the Narrower type. Experimental.
- //
- StringTemplate (NC const* s)
- {
- from_narrow (s);
- }
-
- StringTemplate (StringTemplate<NC> const& other)
- {
- from_narrow (other.c_str ());
- }
-
- StringTemplate (NarrowerBase const& other)
- {
- from_narrow (other.c_str ());
- }
-
- // Assignment.
- //
- StringTemplate&
- operator= (StringTemplate const& str)
- {
- base () = str;
- return *this;
- }
-
- StringTemplate&
- operator= (C const* s)
- {
- base () = s;
- return *this;
- }
-
- StringTemplate&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- // Assignment from Base.
- //
- StringTemplate&
- operator= (Base const& str)
- {
- base () = str;
- return *this;
- }
-
- public:
- StringTemplate&
- operator+= (StringTemplate const& str)
- {
- base () += str;
- return *this;
- }
-
- StringTemplate&
- operator+= (C const* s)
- {
- base () += s;
- return *this;
- }
-
- StringTemplate&
- operator+= (C c)
- {
- base () += c;
- return *this;
- }
-
- // Conversion to the Narrower type.
- //
- public:
- StringTemplate<NC>
- to_narrow () const;
-
- // Conversion to bool.
- //
- private:
- typedef void (StringTemplate::*BooleanConvertible)();
- void true_ () {}
-
- public:
- operator BooleanConvertible () const
- {
- return this->empty () ? 0 : &StringTemplate::true_;
- }
-
- private:
- void
- from_narrow (NC const* s);
- };
-
-
- template<typename C>
- StringTemplate<C>
- operator+ (StringTemplate<C> const& lhs, StringTemplate<C> const& rhs)
- {
- return StringTemplate<C> (lhs) += rhs;
- }
-
- template<typename C>
- StringTemplate<C>
- operator+ (C const* lhs, StringTemplate<C> const& rhs)
- {
- return StringTemplate<C> (lhs) += rhs;
- }
-
- template<typename C>
- StringTemplate<C>
- operator+ (StringTemplate<C> const& lhs, C const* rhs)
- {
- return StringTemplate<C> (lhs) += rhs;
- }
-
- template<typename C>
- StringTemplate<C>
- operator+ (C lhs, StringTemplate<C> const& rhs)
- {
- return StringTemplate<C> (1, lhs) += rhs;
- }
-
- template<typename C>
- StringTemplate<C>
- operator+ (StringTemplate<C> const& lhs, C rhs)
- {
- return StringTemplate<C> (lhs) += rhs;
- }
-
- typedef StringTemplate<char> NarrowString;
- typedef StringTemplate<wchar_t> WideString;
-
- typedef WideString String;
-}
-
-#endif // XSD_FRONTEND_TYPES_HXX
diff --git a/libxsd-frontend/xsd-frontend/version.hxx b/libxsd-frontend/xsd-frontend/version.hxx
deleted file mode 100644
index fa6d1de..0000000
--- a/libxsd-frontend/xsd-frontend/version.hxx
+++ /dev/null
@@ -1,14 +0,0 @@
-// file : xsd-frontend/version.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_VERSION_HXX
-#define XSD_FRONTEND_VERSION_HXX
-
-#include <xercesc/util/XercesVersion.hpp>
-
-#if _XERCES_VERSION < 30000
-# error Xerces-C++ 2-series is not supported
-#endif
-
-#endif // XSD_FRONTEND_VERSION_HXX
diff --git a/libxsd-frontend/xsd-frontend/xml.hxx b/libxsd-frontend/xsd-frontend/xml.hxx
deleted file mode 100644
index d33f6bf..0000000
--- a/libxsd-frontend/xsd-frontend/xml.hxx
+++ /dev/null
@@ -1,559 +0,0 @@
-// file : xsd-frontend/xml.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_FRONTEND_XML_HXX
-#define XSD_FRONTEND_XML_HXX
-
-#include <vector>
-#include <ostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/XMLString.hpp>
-
-#include <xsd-frontend/version.hxx> // Check Xerces-C++ version.
-#include <xsd-frontend/types.hxx>
-#include <xsd-frontend/schema-dom-parser.hxx>
-
-namespace XSDFrontend
-{
- namespace XML
- {
- namespace Xerces = xercesc;
-
- inline
- String
- transcode (XMLCh const* s, size_t length)
- {
- if (sizeof (wchar_t) == 4)
- {
- // UTF-32
- //
- XMLCh const* end (s + length);
-
- // Find what the resulting buffer size will be.
- //
- size_t rl (0);
- bool valid (true);
-
- for (XMLCh const* p (s); p < end; ++p)
- {
- rl++;
-
- if ((*p >= 0xD800) && (*p <= 0xDBFF))
- {
- // Make sure we have one more char and it has a valid
- // value for the second char in a surrogate pair.
- //
- if (++p == end || !((*p >= 0xDC00) && (*p <= 0xDFFF)))
- {
- valid = false;
- break;
- }
- }
- }
-
- if (!valid)
- return String ();
-
- String r;
- r.reserve (rl + 1);
- r.resize (rl);
- wchar_t* rs (const_cast<wchar_t*> (r.c_str ()));
-
- size_t i (0);
-
- for (XMLCh const* p (s); p < end; ++p)
- {
- XMLCh x (*p);
-
- if (x < 0xD800 || x > 0xDBFF)
- rs[i++] = wchar_t (x);
- else
- rs[i++] = ((x - 0xD800) << 10) + (*++p - 0xDC00) + 0x10000;
- }
-
- return r;
- }
- else if (sizeof (wchar_t) == 2)
- {
- // UTF-16
- //
- return String (reinterpret_cast<const wchar_t*> (s), length);
- }
- else
- return String ();
- }
-
- inline
- String
- transcode (XMLCh const* s)
- {
- return transcode (s, Xerces::XMLString::stringLen (s));
- }
-
- inline
- NarrowString
- transcode_to_narrow (XMLCh const* xs)
- {
- char* s (Xerces::XMLString::transcode (xs));
- NarrowString r (s);
- Xerces::XMLString::release (&s);
- return r;
- }
-
- inline
- XMLCh*
- transcode (String const& str)
- {
- size_t l (str.size ());
- wchar_t const* s (str.c_str ());
-
- if (sizeof (wchar_t) == 4)
- {
- // Find what the resulting buffer size will be.
- //
- size_t rl (0);
-
- for (wchar_t const* p (s); p < s + l; ++p)
- {
- rl += (*p & 0xFFFF0000) ? 2 : 1;
- }
-
- XMLCh* r (new XMLCh[rl + 1]);
- XMLCh* ir (r);
-
- for (wchar_t const* p (s); p < s + l; ++p)
- {
- wchar_t w (*p);
-
- if (w & 0xFFFF0000)
- {
- // Surrogate pair.
- //
- *ir++ = static_cast<XMLCh> (((w - 0x10000) >> 10) + 0xD800);
- *ir++ = static_cast<XMLCh> ((w & 0x3FF) + 0xDC00);
- }
- else
- *ir++ = static_cast<XMLCh> (w);
- }
-
- *ir = XMLCh (0);
-
- return r;
- }
- else if (sizeof (wchar_t) == 2)
- {
- XMLCh* r (new XMLCh[l + 1]);
- XMLCh* ir (r);
-
- for (size_t i (0); i < l; ++ir, ++i)
- *ir = static_cast<XMLCh> (s[i]);
-
- *ir = XMLCh (0);
-
- return r;
- }
- else
- return 0;
- }
-
- class XMLChString
- {
- public :
- XMLChString (String const& s)
- : s_ (transcode (s))
- {
- }
-
- XMLChString (wchar_t const* s)
- : s_ (transcode (String (s)))
- {
- }
-
- ~XMLChString ()
- {
- delete[] s_;
- }
-
- XMLCh const*
- c_str () const
- {
- return s_;
- }
-
- private:
- XMLChString (XMLChString const&);
-
- XMLChString&
- operator= (XMLChString const&);
-
- private:
- XMLCh* s_;
- };
-
-
- class Element
- {
- public:
- Element (Xerces::DOMElement* e)
- : e_ (e),
- name_ (transcode (e->getLocalName ())),
- namespace__ (transcode (e->getNamespaceURI ()))
- {
- }
-
- String
- name () const
- {
- return name_;
- }
-
- String
- namespace_ () const
- {
- return namespace__;
- }
-
- public:
- unsigned long
- line () const
- {
- //@@ cache
- //
- return reinterpret_cast<unsigned long> (e_->getUserData (line_key));
- }
-
- unsigned long
- column () const
- {
- //@@ cache
- //
- return reinterpret_cast<unsigned long> (e_->getUserData (column_key));
- }
-
- public:
- Element
- parent () const
- {
- return dynamic_cast<Xerces::DOMElement*>(e_->getParentNode ());
- }
-
- public:
- // Attribute identified by a name.
- //
- bool
- attribute_p (String const& name) const
- {
- return attribute_p ("", name);
- }
-
- String
- attribute (String const& name) const
- {
- return attribute ("", name);
- }
-
- String
- operator[] (String const& name) const
- {
- return attribute (name);
- }
-
- // Attribute identified by namespace and name.
- //
-
- bool
- attribute_p (String const& namespace_, String const& name) const
- {
- Xerces::DOMAttr* a (
- e_->getAttributeNodeNS (
- XMLChString (namespace_).c_str (),
- XMLChString (name).c_str ()));
-
- return a != 0;
- }
-
- String
- attribute (String const& namespace_, String const& name) const
- {
- XMLCh const* value (
- e_->getAttributeNS (
- XMLChString (namespace_).c_str (),
- XMLChString (name).c_str ()));
-
- return transcode (value);
- }
-
- public:
- Xerces::DOMElement*
- dom_element () const
- {
- return e_;
- }
-
- private:
- Xerces::DOMElement* e_;
-
- String name_;
- String namespace__;
- };
-
- inline String
- prefix (String const& n)
- {
- size_t i (0);
- while (i < n.length () && n[i] != L':') ++i;
-
- //std::wcerr << "prefix " << n << " "
- // << String (n, i == n.length () ? i : 0, i) << std::endl;
-
- return String (n, i == n.length () ? i : 0, i);
- }
-
- inline String
- uq_name (String const& n)
- {
- size_t i (0);
- while (i < n.length () && n[i] != L':') ++i;
-
- return String (n.c_str () + (i == n.length () ? 0 : i + 1));
- }
-
- struct NoMapping
- {
- NoMapping (String const& prefix)
- : prefix_ (prefix)
- {
- }
-
- String const&
- prefix () const
- {
- return prefix_;
- }
-
- private:
- String prefix_;
- };
-
- // Throws NoMapping if there is no prefix-namespace association.
- //
- inline String
- ns_name (Xerces::DOMElement const* e, String const& prefix)
- {
- // 'xml' prefix requires special handling and Xerces folks refuse
- // to handle this in DOM so I have to do it myself.
- //
- if (prefix == L"xml")
- return L"http://www.w3.org/XML/1998/namespace";
-
- // 0 means "no prefix" to Xerces.
- //
- XMLCh const* xns (
- e->lookupNamespaceURI (
- prefix.empty () ? 0 : XMLChString (prefix).c_str ()));
-
- if (xns == 0)
- throw NoMapping (prefix);
-
- return transcode (xns);
- }
-
- class NoPrefix {};
-
- inline String
- ns_prefix (Element const& e, String const& wns)
- {
- XMLChString ns (wns);
- XMLCh const* p (e.dom_element ()->lookupPrefix (ns.c_str ()));
-
- if (p == 0)
- {
- bool r (e.dom_element ()->isDefaultNamespace (ns.c_str ()));
-
- if (r)
- return L"";
- else
- {
- // 'xml' prefix requires special handling and Xerces folks refuse
- // to handle this in DOM so I have to do it myself.
- //
- if (wns == L"http://www.w3.org/XML/1998/namespace")
- return L"xml";
-
- throw NoPrefix ();
- }
- }
-
- return transcode (p);
- }
-
- inline String
- fq_name (Element const& e, String const& n)
- {
- String un (uq_name (n));
-
- try
- {
- String ns (ns_name (e.dom_element (), prefix (n)));
- return ns + L'#' + un;
- }
- catch (XML::NoMapping const&)
- {
- return un;
- }
- }
-
-
- // Simple auto_ptr version that calls release() instead of delete.
- //
-
- template <typename X>
- struct AutoPtrRef
- {
- X* x_;
-
- explicit
- AutoPtrRef (X* x)
- : x_ (x)
- {
- }
- };
-
- template <typename X>
- struct AutoPtr
- {
- ~AutoPtr ()
- {
- reset ();
- }
-
- explicit
- AutoPtr (X* x = 0)
- : x_ (x)
- {
- }
-
- AutoPtr (AutoPtr& y)
- : x_ (y.release ())
- {
- }
-
- AutoPtr (AutoPtrRef<X> r)
- : x_ (r.x_)
- {
- }
-
- AutoPtr&
- operator= (AutoPtr& y)
- {
- if (this != &y)
- {
- reset (y.release ());
- }
-
- return *this;
- }
-
- AutoPtr&
- operator= (AutoPtrRef<X> r)
- {
- if (r.x_ != x_)
- {
- reset (r.x_);
- }
-
- return *this;
- }
-
- operator AutoPtrRef<X> ()
- {
- return AutoPtrRef<X> (release ());
- }
-
- public:
- X&
- operator* () const
- {
- return *x_;
- }
-
- X*
- operator-> () const
- {
- return x_;
- }
-
- X*
- get () const
- {
- return x_;
- }
-
- X*
- release ()
- {
- X* x (x_);
- x_ = 0;
- return x;
- }
-
- void
- reset (X* x = 0)
- {
- if (x_)
- x_->release ();
-
- x_ = x;
- }
-
- // Conversion to bool.
- //
- typedef X* (AutoPtr::*boolConvertible)() const;
-
- operator boolConvertible () const throw ()
- {
- return x_ ? &AutoPtr<X>::operator-> : 0;
- }
-
- private:
- X* x_;
- };
-
- template <typename X>
- struct PtrVector: std::vector<X*>
- {
- typedef std::vector<X*> Base;
-
- ~PtrVector ()
- {
- for (typename Base::iterator i (this->begin ()), e (this->end ());
- i != e; ++i)
- {
- if (*i)
- (*i)->release ();
- }
- }
-
- void
- push_back (AutoPtr<X>& x)
- {
- Base::push_back (0);
- this->back () = x.release ();
- }
- };
- }
-}
-
-// Xerces DOoM.
-//
-//
-inline
-std::wostream&
-operator<< (std::wostream& o, XMLCh const* s)
-{
- return o << XSDFrontend::XML::transcode (s);
-}
-
-#endif // XSD_FRONTEND_XML_HXX
diff --git a/makefile b/makefile
deleted file mode 100644
index 056cb89..0000000
--- a/makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# file : makefile
-# copyright : Copyright (c) 2009-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))/build-0.3/bootstrap.make
-
-default := $(out_base)/
-
-.PHONY: $(default) test install dist dist-win clean
-
-# Build.
-#
-$(default): $(out_base)/xsd/xsd/
-
-# Test.
-#
-test: $(out_base)/xsd/.test
-
-# Install.
-#
-install: $(out_base)/xsd/.install
-
-# Dist.
-#
-dist: $(out_base)/xsd/.dist
-dist-win: $(out_base)/xsd/.dist-win
-
-# Clean.
-#
-clean: $(out_base)/libxsd-frontend/.clean \
- $(out_base)/xsd/.clean
-
-ifneq ($(EXTERNAL_LIBCUTL),y)
-src_root := $(src_base)/libcutl
-scf_root := $(src_root)/build
-out_root := $(src_root)
-$(call import,$(src_base)/libcutl/makefile)
-
-clean: $(out_base)/libcutl/.clean
-endif
-
-src_root := $(src_base)/libxsd-frontend
-scf_root := $(src_root)/build
-out_root := $(src_root)
-$(call import,$(src_base)/libxsd-frontend/makefile)
-
-src_root := $(src_base)/xsd
-scf_root := $(src_root)/build
-out_root := $(src_root)
-
-ifneq ($(filter $(MAKECMDGOALS),clean test install dist dist-win),)
-$(call import,$(src_base)/xsd/makefile)
-else
-$(call import,$(src_base)/xsd/xsd/makefile)
-endif
diff --git a/manifest b/manifest
new file mode 100644
index 0000000..4373575
--- /dev/null
+++ b/manifest
@@ -0,0 +1,164 @@
+: 1
+name: xsd
+version: 4.2.0
+language: c++
+summary: XML Schema to C++ data binding compiler
+license: other: GPL-2.0-only with Xerces-C++ linking exception and FLOSS exception
+topics: C++, XML, XML Schema, XML parser, source code generation
+description-file: README.md
+package-description-file: PACKAGE-README.md
+changes-file: NEWS
+url: https://www.codesynthesis.com/products/xsd/
+doc-url: https://www.codesynthesis.com/products/xsd/
+src-url: https://git.codesynthesis.com/cgit/xsd/xsd/
+email: xsd-users@codesynthesis.com ; Mailing list
+build-warning-email: builds@codesynthesis.com
+requires: host
+requires: c++11
+depends: * build2 >= 0.16.0
+depends: * bpkg >= 0.16.0
+depends: libxsd-frontend ^2.1.0
+depends: libcutl ^1.11.0
+depends: libxerces-c ^3.0.0
+depends: * cli ^1.2.0- ? ($config.xsd.develop)
+tests: * xsd-tests == $
+examples: * xsd-examples == $
+
+# Binary distribution packages. Overall notes:
+#
+# - Link dependencies that don't come from system packages statically.
+#
+# - We suppress generating binary packages for dependecies (libcutl,
+# libxsd-frontend) with --recursive=auto since they are linked statically.
+#
+# - For archives we strip the default compiler name from metadata since
+# it's unimportant (we link the C++ runtime statically).
+#
+# - We disable warning emails for configurations that build Xerces-C++.
+
+# Note that the Xerces-C++ package is in the unsupported `universe` section on
+# Ubuntu so we have a separate configuration for it where we build Xerces-C++
+# ourselves.
+#
+bindist-debian-builds: bindist
+bindist-debian-build-include: linux_debian*-**
+bindist-debian-build-exclude: **
+bindist-debian-build-config:
+\
++bpkg.bindist.debian:
++bbot.bindist.upload:
+bpkg.bindist.debian:--recursive=auto
+bpkg.create:config.bin.lib=static
+bpkg.create:config.bin.liba.lib="shared static"
+?sys:libxerces-c
+\
+
+bindist-ubuntu-builds: bindist
+bindist-ubuntu-build-include: linux_ubuntu*-**
+bindist-ubuntu-build-exclude: **
+bindist-ubuntu-build-config:
+\
++bpkg.bindist.debian:
++bbot.bindist.upload:
+bpkg.bindist.debian:--recursive=auto
+bpkg.create:config.bin.lib=static
+bpkg.create:config.bin.liba.lib="shared static"
+?sys:libicuuc
+?sys:libicui18n
+\
+#bindist-ubuntu-build-error-email: builds@codesynthesis.com
+
+# Note that there is no Xerces-C++ package in RHEL (only in EPEL) so we
+# have a separate configuration for RHEL.
+#
+bindist-fedora-builds: bindist
+bindist-fedora-build-include: linux_fedora*-**
+bindist-fedora-build-exclude: **
+bindist-fedora-build-config:
+\
++bpkg.bindist.fedora:
++bbot.bindist.upload:
+bpkg.bindist.fedora:--recursive=auto
+bpkg.create:config.bin.lib=static
+bpkg.create:config.bin.liba.lib="shared static"
+?sys:libxerces-c
+\
+
+bindist-rhel-builds: bindist
+bindist-rhel-build-include: linux_rhel*-**
+bindist-rhel-build-exclude: **
+bindist-rhel-build-config:
+\
++bpkg.bindist.fedora:
++bbot.bindist.upload:
+bpkg.bindist.fedora:--recursive=auto
+bpkg.create:config.bin.lib=static
+bpkg.create:config.bin.liba.lib="shared static"
+?sys:libicuuc
+?sys:libicui18n
+\
+#bindist-rhel-build-error-email: builds@codesynthesis.com
+
+# Note: use static runtime since the DLL runtime is not universally
+# pre-installed.
+#
+bindist-windows-builds: bindist
+bindist-windows-build-include: windows*-**
+bindist-windows-build-exclude: **
+bindist-windows-build-config:
+\
++bpkg.bindist.archive:
++bbot.bindist.upload:
+bpkg.bindist.archive:--recursive=auto
+bpkg.bindist.archive:--archive-lang-impl=cc=
+bpkg.bindist.archive:config.install.relocatable=true
+bpkg.create:config.bin.lib=static
+bpkg.create:config.bin.liba.lib="shared static"
+bpkg.create:config.cc.coptions+="/MT"
+b.create:config.cc.coptions="/W2 /O2"
+\
+#bindist-windows-build-error-email: builds@codesynthesis.com
+
+# Note that /usr/lib/libc++.1.dylib is pre-installed and appears to be
+# reasonably compatible (even forward-compatible) so we don't bother
+# with linking it statically for now.
+#
+bindist-macos-builds: bindist
+bindist-macos-build-include: macos*-**
+bindist-macos-build-exclude: **
+bindist-macos-build-config:
+\
++bpkg.bindist.archive:
++bbot.bindist.upload:
+bpkg.bindist.archive:--recursive=auto
+bpkg.bindist.archive:--archive-lang-impl=cc=
+bpkg.bindist.archive:config.install.relocatable=true
+bpkg.create:config.bin.lib=static
+bpkg.create:config.bin.liba.lib="shared static"
+b.create:config.cc.coptions="-Wall -O3"
+\
+#bindist-macos-build-error-email: builds@codesynthesis.com
+
+# Generic linux package (built using oldest Debian we support).
+#
+# Note: update glibc version if changing build configuration.
+#
+# @@ TMP glibc2_31
+#
+bindist-linux-glibc2_31-builds: bindist
+bindist-linux-glibc2_31-build-include: linux_debian_11-gcc_10.2-bindist
+bindist-linux-glibc2_31-build-exclude: **
+bindist-linux-glibc2_31-build-config:
+\
++bpkg.bindist.archive:
++bbot.bindist.upload:
+bpkg.bindist.archive:--recursive=auto
+bpkg.bindist.archive:--archive-no-os
+bpkg.bindist.archive:--archive-lang-impl=cc=
+bpkg.bindist.archive:--archive-build-meta=+linux-glibc2.31
+bpkg.bindist.archive:config.install.relocatable=true
+bpkg.create:config.bin.lib=static
+bpkg.create:config.bin.liba.lib="shared static"
+config.cc.loptions+="-static-libstdc++ -static-libgcc"
+\
+#bindist-linux-glibc2_31-build-error-email: builds@codesynthesis.com
diff --git a/tests/build/bootstrap.build b/tests/build/bootstrap.build
new file mode 100644
index 0000000..33c8d02
--- /dev/null
+++ b/tests/build/bootstrap.build
@@ -0,0 +1,8 @@
+# file : tests/build/bootstrap.build
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+project = # Unnamed subproject.
+
+using config
+using dist
+using test
diff --git a/tests/build/root.build b/tests/build/root.build
new file mode 100644
index 0000000..dd7abe5
--- /dev/null
+++ b/tests/build/root.build
@@ -0,0 +1,16 @@
+# file : tests/build/root.build
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+# We need to configure C++ module to obtain the target information (see
+# below).
+#
+using cxx.config
+
+# Import the XSD compiler we will be testing.
+#
+import! [metadata] xsd = xsd%exe{xsd}
+testscript{*}: test = $xsd
+
+# Specify the test target for cross-testing.
+#
+test.target = $cxx.target
diff --git a/tests/buildfile b/tests/buildfile
new file mode 100644
index 0000000..201b1d7
--- /dev/null
+++ b/tests/buildfile
@@ -0,0 +1,4 @@
+# file : tests/buildfile
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+./: testscript $xsd
diff --git a/tests/testscript b/tests/testscript
new file mode 100644
index 0000000..7570d4d
--- /dev/null
+++ b/tests/testscript
@@ -0,0 +1,26 @@
+# file : tests/testscript
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+: version
+:
+$* --version >>~/EOO/
+/CodeSynthesis XSD XML Schema to C\+\+ compiler .+/
+/.*/*
+EOO
+
+: basics
+:
+cat <<EOI >=test.xsd;
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:complexType name="hello_t">
+ <xsd:sequence>
+ <xsd:element name="greeting" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="hello" type="hello_t"/>
+</xsd:schema>
+EOI
+$* cxx-tree --generate-inline test.xsd &test.hxx &test.ixx &test.cxx;
+test -f test.hxx && test -f test.ixx && test -f test.cxx
diff --git a/xsd/GPLv2 b/xsd/GPLv2
deleted file mode 100644
index 3912109..0000000
--- a/xsd/GPLv2
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/xsd/INSTALL b/xsd/INSTALL
deleted file mode 100644
index 96e63f9..0000000
--- a/xsd/INSTALL
+++ /dev/null
@@ -1,71 +0,0 @@
-Compiler Prerequisites
-
- build-time:
-
- - g++ >= 3.4.3 http://gcc.gnu.org
- - build >= 0.3.10 http://www.codesynthesis.com/projects/build/
- - cli >= 1.2.0 http://www.codesynthesis.com/projects/cli/
-
- run-time:
-
- - libxerces-c >= 3.0.0 http://xerces.apache.org/xerces-c/
- - libcutl >= 1.8.0 http://www.codesynthesis.com/projects/libcutl/
- - libxsd-frontend >= 2.0.0 http://www.codesynthesis.com/projects/libxsd-frontend/
-
-
-Generated Code Prerequisites
-
- build-time:
-
- - libxsd (header-only XSD runtime library, part of the XSD distribution)
-
- run-time:
-
- - libxerces-c >= 3.0.0 (C++/Tree and C++/Parser mappings)
- http://xerces.apache.org/xerces-c/
-
- - libexpat >= 1.95.8 (C++/Parser mapping, alternative to libxerces-c)
- http://www.libexpat.org
-
-
-Building XSD
-
- First build (and optionally install) all the prerequisites listed above.
- Alternatively, you can use the xsd+dep package that includes all the
- prerequisites (except g++ and libxerces-c) and can be built with a
- single 'make' invocation.
-
- Once the prerequisites are ready, to build the XSD compiler in source
- directory simply run 'make'. You can also build in a separate directory,
- for example:
-
- $ mkdir xsd-i686-pc-linux-gnu
- $ cd xsd-i686-pc-linux-gnu
- $ make -f ../xsd-x.y.z/makefile
-
-
-Installing XSD
-
- To install XSD, run 'make install'. Use the install_prefix command
- line variable to specify installation location (default is /usr/local),
- for example:
-
- $ make install_prefix=/usr install
-
- You can fine-tune the installation locations with the following make
- variables:
-
- install_prefix default is /usr/local
- install_data_prefix default is install_prefix
- install_exec_prefix default is install_prefix
-
- install_bin_dir default is install_exec_prefix/bin
- install_sbin_dir default is install_exec_prefix/sbin
- install_lib_dir default is install_exec_prefix/lib
-
- install_data_dir default is install_data_prefix/share
- install_inc_dir default is install_data_prefix/include
-
- install_doc_dir default is install_data_dir/doc
- install_man_dir default is install_data_dir/man
- install_info_dir default is install_data_dir/info
diff --git a/xsd/LICENSE b/xsd/LICENSE
deleted file mode 100644
index 42346bf..0000000
--- a/xsd/LICENSE
+++ /dev/null
@@ -1,26 +0,0 @@
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License version 2 as
-published by the Free Software Foundation.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-In addition, as a special exception, Code Synthesis Tools CC gives
-permission to link this program with the Xerces-C++ library (or with
-modified versions of Xerces-C++ that use the same license as Xerces-C++),
-and distribute linked combinations including the two. You must obey
-the GNU General Public License version 2 in all respects for all of
-the code used other than Xerces-C++. If you modify this copy of the
-program, you may extend this exception to your version of the program,
-but you are not obligated to do so. If you do not wish to do so, delete
-this exception statement from your version.
-
-In addition, Code Synthesis Tools CC makes a special exception for
-the Free/Libre and Open Source Software (FLOSS) which is described
-in the accompanying FLOSSE file.
diff --git a/xsd/NEWS b/xsd/NEWS
deleted file mode 100644
index 5bb59d7..0000000
--- a/xsd/NEWS
+++ /dev/null
@@ -1,1208 +0,0 @@
-Version 4.0.0
-
- * Xerces-C++ 2-series (2.8.0 and earlier) is no longer supported.
-
- * Visual Studio 2003 (7.1) is no longer supported.
-
- * HP aCC3 (HP-UX/PA-RISC) is no longer supported.
-
- * Oracle/Berkeley DB XML support has been removed since it no longer
- supports the Xerces-C++-based document access.
-
- * New option, --std, specifies the C++ standard that the generated code
- should conform to. Valid values are c++98 (default) and c++11.
-
- The C++ standard affects various aspects of the generated code that are
- discussed in more detail in mapping-specific documentation (guides and
- manuals). Overall, when C++11 is selected, the generated code relies on
- the move semantics and uses std::unique_ptr instead of deprecated
- std::auto_ptr. See also the documentation for the --std option in the
- XSD compiler command line manual (man pages).
-
- * New option, --fat-type-file, triggers the placement of code corresponding
- to global elements into type files instead of schema files in the file-
- per-type mode. This option is primarily useful when trying to minimize
- the amount of object code that is linked to an executable by packaging
- compiled generated code into a static (archive) library.
-
-C++/Tree
-
- * Support for ordered types. C++/Tree flattens nested compositors which
- sometimes can result in the loss of element ordering information that
- could be significant to the application. Ordered types address this
- problem. For more information, refer to Section 2.8.4, "Element Order"
- in the C++/Tree Mapping User Manual.
-
- * Support for mixed content in ordered types. For more information, refer
- to Section 2.13, "Mapping for Mixed Content Models" in the C++/Tree
- Mapping User Manual.
-
- * xml_schema::type represents anyType content as a DOM fragment, similar
- to wildcards. For more information, refer to Section 2.5.2, "Mapping
- for anyType" in the C++/Tree Mapping User Manual.
-
- * xml_schema::simple_type represents anySimpleType content as a text
- string. For more information, refer to Section 2.5.3, "Mapping for
- anySimpleType" in the C++/Tree Mapping User Manual.
-
- * New option, --generate-dep, triggers the generation of the make
- dependency files (.d) for the generated C++ files. Other options
- controlling dependency generation are: --generate-dep-only,
- --dep-phony, --dep-target, --dep-suffix, and --dep-regex. For
- details on this functionality, refer to the XSD compiler command
- line manual (man pages).
-
- * New option, --suppress-assignment, suppresses the generation of copy
- assignment operators for complex types. If this option is specified,
- the copy assignment operators for such types are declared private and
- left unimplemented.
-
- * Binary representation now stores string-based enumerations as integer
- values corresponding to C++ enumerators instead of string literals.
-
- * Binary representation now pools polymorphic type-id strings in an
- implicit string pool. The string pool support can also be used to
- pool strings in other situations. For example, you can implement
- string insertion/extraction operators for your stream to pool all
- strings. This can be useful if your documents contain a large number
- of repetitive strings.
-
- * New option, --polymorphic-plate, allows the creation of multiple
- polymorphic map plates in the same application. For details, refer
- to the XSD compiler command line manual (man pages).
-
- * To get the DOM association in the copy of an object model tree one
- now needs to explicitly pass the xml_schema::flags::keep_dom flag as
- the second argument to the copy constructor or clone() function.
-
-Version 3.3.0
-
- * New option, --char-encoding, allows you to specify the character encoding
- that should be used in the generated code. Valid values for the 'char'
- character type are 'utf8' (default), 'iso8859-1' (new), 'lcp' (Xerces-C++
- local code page), and 'custom' (provides support for custom encodings).
- Note that if you use a non-default character encoding and include some
- libxsd headers (e.g., xsd/cxx/xml/string.hxx) directly, then you will
- need to first include the correct xsd/cxx/xml/char-<enc>.hxx header,
- where <enc> is iso8859-1, lcp, etc. This mechanism replaces the
- XSD_USE_LCP macro.
-
- For the wchar_t character type the only valid value for this option is
- 'auto' and the encoding is automatically selected between UTF-16 and
- UTF-32, depending on the wchar_t type size.
-
- * When the XSD compiler is built with Xerces-C++ 3.1.0 or later, the
- handling of multiple imports for the same namespace is enabled. Before,
- all subsequent imports for a namespace were ignored which caused errors
- in some schemas. Note that if your application has XML Schema validation
- enabled, then you will also need to build it with Xerces-C++ 3.1.0 or
- later to take advantage of this feature.
-
- * Automatic mapping for the urn-style XML namespaces. The last component
- in the urn name is used to derive the C++ namespace name.
-
- * New option, --schema-file-regex, in combination with the existing
- --type-file-regex, can be used to place the generated files into
- subdirectories or to resolve file name conflicts in the file-per-
- type mode (--file-per-type).
-
- * Warning id's have changed to start with a letter identifying the
- component issuing the warning. F - compiler frontend, D - compiler
- driver, P - C++/Parser mapping, T - C++/Tree mapping.
-
- * Strings used to match regular expressions supplied with the
- --namespace-regex and --anonymous-regex options now include the file
- component for the schema being compiled.
-
- * The XSD_NO_EXPORT macro can be used to omit code generated with the
- --export/import-maps and, for C++/Tree, --generate-xml-schema options
- during C++ compilation. This may be useful if you would like to use
- the same generated code across multiple platforms.
-
- C++/Tree
-
- * New option, --generate-element-type, triggers the generation of types
- instead of parsing/serialization functions for root elements. This
- is primarily useful to distinguish object models with the same root
- type but with different root elements. For more information, refer
- to the messaging example and Section 2.9.1, "Element Types" in the
- C++/Tree Mapping User Manual. To support the customization of the
- element type naming the --element-type-regex option has been added.
- See the NAMING CONVENTION section in the compiler command line manual
- (man pages) for details.
-
- * New option, --generate-element-map, triggers the generation of a root
- element map. The element map allows uniform parsing and serialization
- of multiple root elements. This option can only be used together with
- --generate-element-type. For more information, refer to the messaging
- example and Section 2.9.2, "Element Map" in the C++/Tree Mapping
- User Manual.
-
- * Prior to this version, if the --generate-polymorphic option is
- specified, the compiler treats all types as potentially polymorphic.
- Now by default only type hierarchies used in substitution groups and
- those explicitly declared polymorphic with the new --polymorphic-type
- option are treated as polymorphic. This results in smaller and faster
- generated code. If you would like to continue using the old behavior,
- you will need to specify --polymorphic-type-all. For more information,
- on this change see Section 2.11, "Mapping for xsi:type and Substitution
- Groups" in the C++/Tree Mapping User Manual.
-
- * New option, --generate-detach, triggers the generation of detach
- functions for required elements and attributes. For optional and
- sequence cardinalities the detach functions are now provided by the
- respective containers even without this option. These functions, for
- example, allow one to move sub-trees in the object model either within
- the same tree or between different trees without copying. For more
- information, refer to Section 2.8 "Mapping for Local Elements and
- Attributes" in the C++/Tree Mapping User Manual.
-
- * New option, --export-xml-schema, causes the compiler to export/import
- types in the XML Schema namespace using the export symbol provided
- with the --export-symbol option.
-
- * New example, embedded, shows how to embed the binary representation of
- the schema grammar into an application and then use it to parse and
- validate XML documents.
-
- * New example, compression, shows how to compress an XML document during
- serialization and decompress it during parsing using the zlib library.
-
- * New example, custom/mixed, shows how to use type customization to parse
- and serialize mixed content.
-
- * The streaming example has been extended to show how to perform stream-
- oriented, partially in-memory XML processing using the C++/Tree mapping.
- With the partially in-memory parsing and serialization only a part of
- the object model is in memory at any given time. With this approach one
- can process parts of the document as they become available as well as
- handle documents that are too large to fit into memory.
-
- * New default/fixed value initialization code. Now the default/fixed values
- are parsed by the XSD compiler at compile time instead of the standard
- parsing code at runtime. This will allow the compilation of schemas that
- use the default/fixed values without support for XML parsing
- (--suppress-parsing option).
-
- * Empty XML Schema enumeration values are now mapped to the 'empty' C++
- enumerator name instead of 'cxx'.
-
- * XML Schema union types with members that are enumeration types are
- automatically converted to equivalent enumeration types with a union
- of all the members' enumerators.
-
-Version 3.2.0
-
- * New option, --disable-warning, disables printing of a warning with
- the specified id. Specifying 'all' for the warning id disables all
- warnings.
-
- * New options, --export-maps and --import-maps, provide support for
- splitting a polymorphic type hierarchy across several Win32 DLLs.
- See the compiler command line manual (man pages) for details.
-
- C++/Tree
-
- * During serialization the generated code automatically assigns
- generic prefixes (p1, p2, etc) to XML namespaces used in the
- vocabulary and for which no custom prefix-namespace mapping
- was provided via the xml_schema::namespace_infomap argument.
- The xml_schema::namespace_infomap argument in the serialization
- functions is now default-initialized to an empty map. The
- xml_schema::no_namespace_mapping and xml_schema::xsi_already_in_use
- exceptions have been removed.
-
- * New example, performance, measures the performance of parsing and
- serialization. This example also shows how to structure your code
- to achieve the maximum performance for these two operations.
-
- * New example, xpath, shows how to use the C++/Tree mapping together
- with XPath.
-
- * New options, --one-accessor-regex, --opt-accessor-regex,
- --seq-accessor-regex, --one-modifier-regex, --opt-modifier-regex,
- and --seq-modifier-regex, allow specification of transformations
- for accessor and modifier function names for elements and attributes
- with specific cardinalities. For more information see the NAMING
- CONVENTION section in the compiler command line manual (man pages).
-
- * Support for comparison (--generate-comparison) and printing
- (--generate-ostream) of polymorphic object models.
-
- * New serialization flag, xml_schema::flags::dont_pretty_print,
- disables extra spaces and new lines that make the resulting XML
- slightly bigger but easier to read.
-
- * New example, custom/double, shows how to customize parsing and
- serialization code for the xsd:double XML Schema built-in type.
- It can be used as a guide on how to customize built-in XML Schema
- types that are mapped to fundamental C++ types.
-
- * Support for fractionDigits and totalDigits facets in serialization
- of types derived from xsd:decimal.
-
- * New set of compile-time macros that control how the xsd:float,
- xsd:double, and xsd:decimal types are serialized. The following
- macros control the format:
-
- XSD_CXX_TREE_FLOAT_FIXED
- XSD_CXX_TREE_FLOAT_SCIENTIFIC
- XSD_CXX_TREE_DOUBLE_FIXED
- XSD_CXX_TREE_DOUBLE_SCIENTIFIC
-
- The following macros control the precision:
-
- XSD_CXX_TREE_FLOAT_PRECISION_MAX
- XSD_CXX_TREE_FLOAT_PRECISION
- XSD_CXX_TREE_DOUBLE_PRECISION_MAX
- XSD_CXX_TREE_DOUBLE_PRECISION
- XSD_CXX_TREE_DECIMAL_PRECISION_MAX
- XSD_CXX_TREE_DECIMAL_PRECISION
-
- If the *_PRECISION_MAX macro is defined then the maximum number of
- potentially significant decimal digits that the type can represent
- is used. Otherwise, if the *_PRECISION macro is defined then its
- value is used. By default the precision is set to the number of
- decimal digits that the type can represent without change. For
- more information on these options, refer to the following paper:
-
- http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf
-
- The old macro, XSD_FP_ALL_DIGITS, that was equivalent to defining
- all three *_PRECISION_MAX macros has been removed.
-
- An alternative to using these macros is to customize the floating
- point type as shown in the custom/double example.
-
- * An additional constructor is generated in situations where a type
- contains one or more required element of complex type (that is,
- it itself contains elements or attributes). In this constructor,
- initializers for such elements are passed as std::auto_ptr and the
- newly created instance is directly initialized with and assumes
- ownership of the pointed to objects. This constructor is a logical
- addition to the non-copying modifiers that were introduced in the
- previous version.
-
- * Extra conversion operators in the fundamental_base class template
- which is used to emulate inheritance from fundamental types are now
- disabled by default since they cause problems on several compilers.
- To enable them compile your code with the XSD_TREE_EXTRA_FUND_CONV
- macro defined.
-
- C++/Parser
-
- * New options, --generate-xml-schema and --extern-xml-schema, trigger
- generation of the mapping for the XML Schema namespace to a separate
- header file and inclusion of that header into other generated header
- files instead of generating the necessary declarations inline,
- respectively. See the compiler command line manual (man pages) for
- details.
-
- * New example, performance, measures the performance of XML parsing.
- This example also shows how to structure your code to achieve the
- maximum performance for this operation.
-
- * Type map files can now include comments. A comment starts with #
- and ends with a new line or end of file. To specify a name that
- contains # enclose it in "".
-
- * In type map files the optional argument type now defaults to the
- return type if the return type ends with * or & (that is, it is
- a pointer or a reference) and 'const return type&' otherwise.
-
- * The interface for polymorphic parsing has been simplified. Calling the
- *_parser() functions multiple times to specify several parsers is no
- longer supported. Instead you need to pass the xml_schema::parser_map
- object which contains the parsers. For more information refer to
- Section 5.4, "Support for Polymorphism" in the C++/Parser Mapping
- Getting Started Guide.
-
- * The use of virtual inheritance has been reduced which results in a
- much smaller object code size (more than factor of 2 on some tests)
- and faster C++ compilation with less RAM used.
-
- * The low-level Expat-specific parsing API (parse_begin() and parse_end())
- has been extended to provide XML and XML Schema error translation to
- exceptions or error handler calls. See Section 7.2, "Expat Document
- Parser" in the C++/Parser Mapping Getting Started Guide for more
- information.
-
-Version 3.1.0
-
- * New option, --file-per-type, triggers generation of a separate set
- of C++ files for each type defined in XML Schema. This compilation
- mode is primarily useful when some of your schemas cannot be compiled
- separately or have cyclic dependencies which involve inheritance.
- Other new options that are useful in this compilation mode are
- --type-file-regex, --type-file-regex-trace, and --file-list. See the
- compiler command line manual (man pages) for more information.
-
- * New option, --options-file, allows additional command line options
- to be provided in files, with one option per line.
-
- * New option, --reserved-name, allows insertion of additional names
- with optional replacements to the list of names that should not be
- used as identifiers. See the compiler command line manual (man pages)
- for details.
-
- * New options, --location-map, --location-regex, and
- --location-regex-trace, allow re-mapping of schema locations
- specified in the include and import elements without modifying the
- schema files. See the compiler command line manual (man pages) for
- more information.
-
- * New option, --guard-prefix, allows specification of a prefix that
- should be added to generated header inclusion guards.
-
- * New option, --file-list, triggers creation of a file with a list of
- generated C++ files. This option is primarily useful in the file-per-
- type compilation mode (--file-per-type) to create a list of generated
- C++ files, for example, as a makefile fragment. Other new options
- that are useful with --file-list are --file-list-prologue,
- --file-list-epilogue, and --file-list-delim. See the compiler command
- line manual (man pages) for more information.
-
- * Support for the upcoming Xerces-C++ 3.0.0 release.
-
- C++/Tree
-
- * New option, --generate-intellisense, triggers generation of workarounds
- for IntelliSense bugs in Visual Studio 2005 (8.0). When this option is
- used, the resulting code is slightly more verbose. IntelliSense in
- Visual Studio 2008 (9.0) does not require these workarounds. Support
- for IntelliSense in Visual Studio 2003 (7.1) is improved with this
- option but is still incomplete.
-
- * New options, --type-naming and --function-naming, allow specification
- of the type and function naming conventions that should be used in the
- generated code. Supported values for --type-naming are: knr (K&R), ucc
- (upper-camel-case), and java. Supported values for --function-naming
- are: knr (K&R), lcc (lower-camel-case), and java. For more information
- see the NAMING CONVENTION section in the compiler command line manual
- (man pages).
-
- * New options, --type-regex, --accessor-regex, --modifier-regex,
- --parser-regex, --serializer-regex, and --enumerator-regex, allow
- specification of transformations for type, accessor function,
- modifier function, parsing function, serialization function, and
- enumerator names in order to produce the generated code using a
- custom naming convention. For more information see the NAMING
- CONVENTION section in the compiler command line manual (man pages).
-
- * Generated list classes now provide a complete set of constructors and
- conform to the standard C++ sequence interface.
-
- * String-based types now provide two extra constructors that expect a
- C string and std::string as their arguments. This allows direct
- initialization of string-based types from string literals.
-
- * New implementations of the XML Schema date/time types (date, dateTime,
- duration, gDay, gMonth, gMonthDay, gYear, gYearMonth, and time) that
- represent the information in the numerical form.
-
- * New binary serialization examples: binary/boost, which shows how to
- save/load the object model to/from a custom format using the Boost
- serialization library as an example, and binary/xdr, which shows how to
- save/load the object model to/from XDR (eXternal Data Representation)
- binary format using the XDR API provided as part of Sun RPC.
-
- * The non-copying modifier functions can now be used to assemble object
- models from scratch. For more information see Section 4.4, "Creating
- the Object Model from Scratch" in the C++/Tree Mapping Getting Started
- Guide as well as Section 2.8, "Mapping for Local Elements and Attributes"
- in the C++/Tree Mapping User Manual.
-
- * Doxygen documentation was added to the XSD runtime for the built-in XML
- Schema types, exceptions, etc. This allows linking of the generated
- documentation to the XSD runtime documentation using the Doxygen tags
- mechanism. The Doxygen configuration file for the XSD runtime is
- provided in the documentation/cxx/tree/reference/ directory.
-
- * Support for customization of anyType. Because anyType is a base type
- for every generated type, customizing it allows one to implement custom
- functionality that spans the entire type system. See the comments
- example in the examples/cxx/tree/custom/ directory.
-
- * New option, --omit-default-attributes, triggers generation of extra
- checks that exclude attributes with default and fixed values from the
- serialized XML documents.
-
- * The parsing functions that used to read from DOMInputSource were changed
- to use InputSource to ease support of Xerces-C++ 3 and 2 series in the
- same code base.
-
- * The parsing function that used to parse DOMDocument* was changed to
- parse xml_schema::dom::auto_ptr<DOMDocument>& instead. If the keep_dom
- and own_dom flags are specified then this parsing function resets the
- passed automatic pointer and the returned object model assumes
- ownership of the DOM document. xml_schema::dom::auto_ptr is a simple
- automatic pointer for Xerces-C++ DOM with the same interface as
- std::auto_ptr.
-
- * The xml_schema::tree_node_key DOM user data key was moved to
- xml_schema::dom::tree_node_key.
-
- C++/Parser
-
- * New option, --generate-polymorphic, triggers generation of polymorphism-
- aware code. This option should be used on XML vocabularies which use
- xsi:type and/or substitution groups. For more information see Section
- 5.4, "Support for Polymorphism" in the C++/Parser Mapping Getting
- Started Guide we well as the polymorphism and polyroot examples in the
- examples/cxx/parser/ directory.
-
- * The date/time types (date, dateTime, gDay, gMonth, gMonthDay, gYear,
- gYearMonth, and time) now represent time zone in the numerical form.
-
- * In order to support parsing of polymorphic XML documents, the signatures
- of the start_* functions (_start_element, _start_any_element, and
- start_root_element) have changed to include a third argument of type
- const ro_string<C>*. This argument contains the resolved type name and
- namespace in case the xsi:type attribute was specified.
-
-Version 3.0.0
-
- * Anonymous type morphing (automatic type naming) is now performed by
- default in both mappings. The --morph-anonymous option does not have
- any effect but is preserved for backwards compatibility. A new option,
- --preserve-anonymous, disables anonymous type morphing. This option is
- useful together with --show-anonymous if you want to make sure your
- schemas do not have any anonymous types.
-
- * A number of bugs fixed in both C++/Tree and C++/Parser mappings.
-
- C++/Tree
-
- * The new C++/Tree Mapping Getting Started Guide is available in the
- documentation/cxx/tree/guide/ directory.
-
- * The type definitions for local elements and attributes in the form
- name::type have been changed to name_type. For example, an element
- bar in type foo with maxOccurs="unbounded" used to have its iterator
- type defined as foo::bar::iterator. With this change it becomes
- foo::bar_iterator. Furthermore, the container type name for sequence
- elements has changed from foo::bar::container to foo::bar_sequence
- and for optional elements and attributes from foo::bar::container
- to foo::bar_optional. This is a backwards incompatible change and
- may require application code adjustments (the C++ compiler will
- pinpoint the affected places).
-
- * New option, --generate-doxygen, triggers generation of documentation
- comments suitable for extraction by the Doxygen documentation system.
- Documentation from annotations is added to the comments if present in
- the schema.
-
- * New option, --generate-wildcard, triggers generation of the new
- wildcard (any and anyAttribute) mapping. This mapping represents the
- content matched by wildcards as DOM fragments. For more information on
- the new mapping see Section 2.12, "Mapping for any and anyAttribute"
- in the C++/Tree Mapping User Manual as well as the wildcard example in
- the examples/cxx/tree/ directory.
-
- * New option, --generate-comparison, triggers generation of comparison
- operators (== and !=) for complex types. Comparison is performed
- memberwise.
-
- * Support for the RPC XDR binary stream in addition to ACE CDR.
-
- * New constructor is generated for complex types with ultimate bases
- that are simple types and can be default-initialized. This constructor
- includes initializers for all required members but omits the initializer
- for the base type. See Section 2.7, "Mapping for Complex Types" in the
- C++/Tree Mapping User Manual for more information.
-
- * Support for polymorphic binary serialization and extraction. Note that
- the semantics of the --generate-insertion and --generate-extraction
- options has changed. See the the compiler command line manual (man
- pages) for details.
-
- * New parsing function with the DOMDocument* argument and the own_dom
- flag allow the tree to assume the ownership of the DOM document
- being parsed when DOM association is requested (keep_dom flag).
- See the C++/Tree Mapping User Manual for more information.
-
- * New example, multiroot, shows how to handle XML vocabularies with
- multiple root elements.
-
- * New example, caching, shows how to parse several XML documents while
- reusing the underlying XML parser and caching the schemas used for
- validation.
-
- * The mapping of built-in XML Schema type decimal has changed from
- long double to double. The old mapping can be obtained by providing
- a custom mapping for this type.
-
- * The xml_schema::errors type which is used in the xml_schema::parsing
- and xml_schema::serialization exceptions has been renamed to
- xml_schema::diagnostics and extended to include warnings in addition
- to errors.
-
- * Serialization operators now clear the element being serialized to from
- existing child nodes and attributes (except for special attributes such
- as prefix-namespace mappings, etc.).
-
- * Improved built-in type parsing, including support for normalization and
- whitespace collapsing.
-
- * Optimizations for the generated code size and compilation time,
- including space optimizations for polymorphic parsing and
- serialization. Optimizations for XML parsing speed.
-
- C++/Parser
-
- * The C++/Parser mapping have been significantly redesigned. See the new
- Getting Started Guide in documentation/cxx/parser/guide/ for details.
-
- * The new C++/Parser Mapping Getting Started Guide is available in the
- documentation/cxx/parser/guide/ directory.
-
- * The mapping now provides parser implementations for all built-in XML
- Schema types. See Chapter 6, "Built-In XML Schema Type Parsers" in
- the C++/Parser Mapping Getting Started Guide for more information.
-
- * The mapping now supports automatic generation of sample parser
- implementations and a test driver. The --generate-noop-impl option
- triggers generation of a sample implementation with empty function
- bodies. The --generate-print-impl option triggers generation of a
- sample implementation that prints the data stored in XML to STDOUT.
- The --generate-test-driver option trigger generation of a test driver.
- For more information on this feature see the compiler command line
- manual (man pages) and the generated example in the examples/cxx/parser/
- directory. Other relevant options include: --force-overwrite,
- --root-element-first, --root-element-last, and --root-element.
-
- * New example, wildcard, shows how to parse the XML data matched by
- XML Schema wildcards (any and anyAttribute).
-
- * The xml_schema::document parser has been extended with overridable
- virtual functions start_root_element and end_root_element to support
- parsing of XML vocabularies with multiple document roots. See the
- multiroot example in the examples/cxx/parser/ directory for more
- information.
-
- * The xml_schema::errors type which is used in the xml_schema::parsing
- exception has been renamed to xml_schema::diagnostics and extended to
- include warnings in addition to errors.
-
-Version 2.3.1
-
- * The compiler is now capable of translating multiple schemas with
- one invocation.
-
- * New option, --sloc-limit, allows one to limit the amount of the
- generated code.
-
- * New option, --proprietary-license, instructs the compiler not to
- include the GPL banner in each generated file. Instead a short
- notice about a required proprietary license is generated. You
- should not use this option unless you have obtained a proprietary
- license from Code Synthesis Tools CC.
-
- * The default encoding for the 'char' character type is now UTF-8.
- To get the previous behavior (local code page via the Xerces-C++
- transcode functions) define the XSD_USE_LCP preprocessor macro
- when compiling your source code.
-
- C++/Tree
-
- * The --parts option has been improved to split generated code more
- evenly by analyzing the complexity of the generated schema constructs.
-
- * Ability to customize serialization, std::ostream, and binary
- insertion/extraction operators. See examples/cxx/tree/custom/wildcard
- for an example on how to handle XML Schema wildcards (xsd:any and
- xsd:anyAttribute) by customizing the parsing constructor and
- serialization operators.
-
- * Optimizations for the run-time memory consumption.
-
- * Optimizations for space in the generated code.
-
- * Number of bug fixes.
-
- C++/Parser
-
- * Proper handling of an xsd:any nested content. Nested elements,
- attributes, and text are reported via _any_* hooks of the current
- parser.
-
- * Number of bug fixes, mostly in the generated validation code.
-
-
-Version 2.3.0
-
- * Name conflicts across type inheritance hierarchies are now detected
- and resolved via name escaping.
-
- C++/Tree
-
- * New option, --suppress-parsing, suppresses generation of the parsing
- constructors and functions. This can be used to minimize the generated
- code footprint when parsing from XML is not used.
-
- * New option, --generate-forward, triggers generation of a forward
- declaration header file for types defined in the schema. A set of
- --fwd-* options that control the resulting file name as well as
- prologue and epilogue code are available.
-
- * New option, --generate-xml-schema, triggers generation of the mapping
- for the XML Schema namespace to a separate header file. See the man
- pages for details and examples/cxx/tree/custom/calendar for an example.
-
- * New option, --extern-xml-schema, triggers inclusion of a header
- file for the XML Schema namespace instead of generating the
- necessary declarations inline. See the man pages for details and
- examples/cxx/tree/custom/calendar for an example.
-
- * New options, --custom-type and --custom-type-regex, instruct the
- compiler to use custom C++ type for a type defined in the schema.
- The standard mapping can still be generated (with a different name)
- usually to be used as a base. Built-in XML Schema types can be
- customized using this mechanism. See the man pages for details and
- examples/cxx/tree/custom/* for examples.
-
- * The generated parsing constructors and serialization operators have
- been changed to use the Xerces-C++ DOM elements and attributes
- instead of the internal wrapper types. This should provide easier
- integration with other code and libraries that use the Xerces-C++
- DOM types such as Berkeley DB XML.
-
- * New example, examples/cxx/tree/dbxml, shows how to use the C++/Tree
- mapping on top of the Berkeley DB XML database.
-
- C++/Parser
-
- * Validation of the attribute structure in the generated code.
-
- * Validation of the character content models including mixed content in
- the generated code.
-
- * Validation of the built-in XML Schema types.
-
- * Optimizations for space and time in the generated code. In particular
- data coping during parsing and validation was significantly reduced.
-
-
-Version 2.2.0
-
- * Detection of a version mismatch between the generated code and
- the runtime.
-
- C++/Tree
-
- * Escaping of a global element name that conflicts with a global type
- name. This is a backwards-incompatible change. Previous versions
- map them to the same name.
-
- * New options, --generate--insertion and --generate-extraction,
- trigger generation of (binary) data representation stream
- insertion and extraction operators, respectively. This allows
- one to serialize/deserialize in-memory representation to/from
- data representation streams such as XSD, CDR, etc. ACE CDR
- streams are supported out of the box (see the binary example).
- User-supplied streams can be used via an adaptation layer.
-
- * New serialization flag, no_xml_declaration, instructs the XML
- serialization functions to omit an XML declaration. This is useful
- for streaming serialization (see the streaming example).
-
- * Optimizations to reduce generated code size.
-
-
- C++/Parser
-
- * New options, --generate-validation and --suppress-validation,
- trigger and suppress generation of the validation code,
- respectively. The validation code is the implementation of the
- XML Schema validation in the generated code (also known as
- "perfect" parser). In this version validation of the element
- structure has been implemented.
-
- * New architecture for underlying XML parsers. This is a backwards-
- incompatible change. Existing applications will have to be
- modified. See examples for details.
-
-
-Version 2.1.1
-
- C++/Tree
-
- * New option, --namespace-map, allows direct mapping of XML Schema
- namespaces to C++ namespaces without the use of regular expressions.
-
- * Further optimizations in the container code and enum mapping to
- reduce generated code size.
-
- * Number of bug fixes in the generated code.
-
-
- C++/Parser
-
- * New option, --namespace-map, allows direct mapping of XML Schema
- namespaces to C++ namespaces without the use of regular expressions.
-
-
-Version 2.1.0
-
- * Automatic handling of forward inheritance. XML Schema allows
- inheritance from yet undefined types while it is illegal to do
- so in C++. Now the translator automatically handles forward
- inheritance by re-arranging the schema during compilation.
-
-
- C++/Tree
-
- * New enum mapping with support for inheritance. Enumerators are
- now parsed using binary search instead of linear search.
-
- * Associated DOM nodes now retain "back" pointers to tree nodes.
-
- * Optimizations to reduce generated code size.
-
-
- C++/Parser
-
- * Specialization for void. You can now use void as a hook argument
- type if you don't want to pass any data between parsers.
-
- * Support for re-use of implementations of base parsers in derived
- parsers using the mixin C++ idiom. See the examples/cxx/parser/mixin
- for more information.
-
- * Support for uninitialized parser. If you don't provide a parser
- for element/attribute, that element/attribute will be ignored
- during parsing.
-
-
-Version 2.0.0
-
- * New cardinality calculator. This improves support for schemas that
- use complex structures with repeated elements, e.g.,
-
- <complexType name="Type">
- <choice>
- <sequence>
- <element name="a" type="string"/>
- <element name="c" type="string"/>
- </sequence>
- <sequence>
- <element name="b" type="string"/>
- <element name="c" type="string"/>
- </sequence>
- </choice>
- </complexType>
-
-
- * New identifier escaping code. With this feature xsd generates proper
- code for schemas that use the same name for an element and an attribute
- in the same type or use several elements/attributes with different
- qualified names but with the same local name, e.g.,
-
- <!-- base.xsd -->
- <schema xmlns="http://codesynthesis.com/xmlns/test/foo"
- targetNamespace="http://codesynthesis.com/xmlns/test/foo">
-
- <element name="foo" type="int"/>
- </schema>
-
- <schema xmlns="http://codesynthesis.com/xmlns/test/bar"
- xmlns:f="http://codesynthesis.com/xmlns/test/foo"
- targetNamespace="http://codesynthesis.com/xmlns/test/bar">
-
- <import namespace="http://codesynthesis.com/xmlns/test/foo"
- schemaLocation="base.xsd"/>
-
- <element name="foo" type="string"/>
-
- <complexType name="Foo">
- <sequence>
- <element ref="foo"/>
- <element name="foo" type="long"/>
- <element ref="f:foo"/>
- <element ref="f:foo"/>
- </sequence>
- <attribute name="foo" type="string"/>
- </complexType>
- </schema>
-
-
- C++/Tree
-
- * New option, --generate-polymorphic, triggers generation of
- polymorphism-aware code. Before this release xsd used to always
- generate polymorphism-aware code. However, it appears to be quite
- wasteful in terms of the generated code size (up to 40%). You will
- now need to explicitly specify this option if you use substitution
- groups or xsi:type. A warning is issued if this option is not
- specified but the schema makes use of substitution groups.
-
- * New options, --root-element-first, --root-element-last,
- --root-element-all, --root-element-none, and --root-element, control
- generation of parsing and serialization functions. With these options
- you can avoid generating extra code for global elements that are not
- document roots. See the man pages for details.
-
- * New options, --parts and -parts-suffix, allows you to split generated
- source code into a number of parts. This is useful when translating
- large, monolithic schemas and a C++ compiler is not able to compile
- the resulting source code at once (usually due to insufficient memory).
-
- * New option, --generate-default-ctor, triggers generation of default
- constructors even for types that have required members. Required
- members of an instance constructed using such a constructor are not
- initialized and accessing them results in undefined behavior. Thanks
- to Jean-Francois Dube <jf at magnu.polymtl.ca> for suggesting this
- feature.
-
- * New option, --generate-from-base-ctor, triggers generation of
- constructors that expect an instance of a base type followed by all
- required members. Thanks to Jean-Francois Dube <jf at magnu.polymtl.ca>
- for suggesting this feature.
-
- * Information scopes for attributes and elements with default/fixed values
- now define the public static default_value function which allows one to
- obtain the default/fixed value for the element/attribute. Thanks to
- Dave Moss <david.r.moss at selex-comm.com> for suggesting this feature.
-
- * MSVC 7.1 has a limit on the length of the "if else if" chain. This
- results in ICE when compiling generated code for enumerations with
- a large number of values. This version addresses this issue. Thanks
- to Cyrille Chépélov <cyrille at chepelov.org> for reporting this and
- suggesting a fix.
-
-
- C++/Parser
-
- * The parser construction API has changed. Now, for element 'foo',
- the name of the parser modifier function is 'foo_parser'. Likewise,
- operator() for setting all parsers at once has been changed to the
- 'parsers' function.
-
-
-Version 1.9.0
-
- C++/Tree
-
- * The size modifier function in the base64_binary and hex_binary
- built-in types automatically adjusts capacity if needed.
-
- * More internal names (names that start with _xsd_) were made
- private or protected.
-
- C++/Parser
-
- * Typedef for the parser base in the xml_schema namespace.
-
- C++/Parser-E
-
- * C++/Parser mapping optimized for embedded systems. For now it
- is equivalent to 'cxx-parser --xml-parser expat'.
-
-
-Version 1.8.0
-
- * Moved to the build 0.2 series.
-
- C++/Tree
-
- * Support for default and fixed values in attributes. An optional
- attribute with a default or fixed value is mapped to the One
- cardinality class instead of the Optional cardinality class.
-
- * Mapping for base64Binary and hexBinary has improved. Now these
- types support a basic buffer abstraction and perform automatic
- encoding and decoding.
-
- * Internal names are protected. We've noticed (via bug reports) a
- wide use of internal names (names that start with _xsd_) in user
- code. This is not portable and instead you should use public
- names. To prevent this from happening in the future we've made
- all internal names protected.
-
- C++/Parser
-
- * Support for Expat as the underlying XML parser in addition to
- Xerces-C++. This allows one to use the C++/Parser mapping in
- memory-constrained environments such as embedded systems. To
- select Expat instead of Xerces-C++ (default) add
- '--xml-parser expat' to the command line. At the moment only
- 'char' (UTF-8) is supported as the base character type when
- Expat is selected.
-
- * The invalid_instance exception has been renamed to parsing.
-
- * Generic error_handler interface has been added in addition
- to Xerces-C++-specific DOMErrorHandler. It allows you to
- handle parsing errors and warnings without having to deal
- with Xerces-C++ specifics.
-
- * The default error handling behavior has changed in parsing
- functions. Instead of printing errors and warnings to STDERR,
- the errors are now collected and thrown as part of the parsing
- exception.
-
- * In parsing functions, the name, namespace arguments order has
- been reversed to be consistent with the one used in parsing
- hooks.
-
-Version 1.7.0
-
- * Number of bug fixes in libxsd and the generated code.
-
- C++/Tree
-
- * Comprehensive XML Schema C++/Tree Mapping User Manual.
-
- * Basic support for union. A simple type that is defined using
- derivation by union is mapped to a C++ class that derives from
- string.
-
- * The _clone function has its arguments default-initialized.
-
- * The invalid_instance exception has been renamed to parsing.
-
- * Generic error_handler interface has been added in addition
- to Xerces-C++-specific DOMErrorHandler. It allows you to
- handle parsing/serialization errors and warnings without
- having to deal with Xerces-C++ specifics. See the user
- manual for more information.
-
- * The default error handling behavior has changed in parsing
- and serialization functions. Instead of printing errors and
- warnings to STDERR, the errors are now collected and thrown
- as part of the parsing/serialization exception. See the user
- manual for more information.
-
- * The optional and sequence containers now support operators ==,
- !=, <, >, <=, and >=.
-
- * Flags argument has been added to serialization functions. The
- only flag that is currently supported is dont_initialize.
-
- * Generated code cleanups.
-
- C++/Parser
-
- * Basic support for union. A simple type that is defined using
- derivation by union is mapped to a C++ class template that
- is just an alias for the generic parser. You are expected to
- override the _characters function in your implementation.
-
- * Properties argument to parsing functions which allows to
- programmatically specify schemas for instance document
- validation.
-
- * Flags argument to parsing functions. The following flags
- are supported:
-
- dont_validate - do not validate instance documents
- dont_initialize - do not initialize the Xerces-C++ runtime
-
-Version 1.6.0
-
- * Number of bug fixes in libxsd and the generated code.
-
- C++/Tree
-
- * Support for xsi:type and substitution groups in parsing and
- serialization. See examples/cxx/tree/polymorphism for a code
- sample.
-
- * Properties argument to parsing functions which allows to
- programmatically specify schemas for instance document
- validation.
-
- * Extra checks in parsing code which prevents construction
- of inconsistent in-memory representation from invalid
- instance documents. Should be useful when validation is
- disabled.
-
- * Accessors and modifier were made normal member functions.
- Before they were implemented via functors.
-
- * Workaround for g++-3.3 bug# 16650:
-
- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16650
-
- C++/Parser
-
- * All "service" functions were renamed to start with '_'.
- This should prevent hiding of service functions by
- elements/attributes with the same names.
-
-Version 1.5.0
-
- * Number of bug fixes in libxsd and the generated code.
-
- C++/Tree
-
- * Basic support for inheritance-by-restriction in complex types.
-
- * The following parsing flags have been introduced:
-
- keep_dom - keep association with underlying DOM nodes
- dont_validate - do not validate instance documents
- dont_initialize - do not initialize the Xerces-C++ runtime
-
- * "Type-less content" such as mixed content models, xsd:anyType/
- xsd:anySimpleType, and xsd:any/xsd:anyAttribute is supported by
- exposing corresponding DOM nodes (see the keep_dom parsing flag).
- Note that only a subset of XML Schema xsd:any functionality is
- supported. The compiler will issue diagnostics for unsupported
- cases. See examples/cxx/tree/mixed for a code sample.
-
- C++/Parser
-
- * Support for inheritance-by-restriction in complex types.
-
- * "Type-less content" such as mixed content models, xsd:anyType/
- xsd:anySimpleType, and xsd:any/xsd:anyAttribute is supported
- by forwarding parsing events to a set of "unexpected" hooks.
- Note that only a subset of XML Schema xsd:any functionality is
- supported. The compiler will issue diagnostics for unsupported
- cases. See examples/cxx/parser/mixed for a code sample.
-
-Version 1.4.0
-
- * Number of improvements and bug fixes in the diagnostics code.
-
- * libxsd has been reorganized to provide a clean split of code with
- regards to char/wchar_t use. It should be possible to use libxsd
- and the xsd-generated code on platforms that lack wchar_t support,
- such as mingw.
-
- C++/Tree
-
- * Work around for g++ bug# 23206.
-
- * Support for xsd:list.
-
- * Type/member name conflicts are auto-resolved. Such conflicts
- occur when a type and an element or attribute withing this type
- share the same name.
-
- * XML Schema extension, the 'refType' attribute, allows one to
- specify referenced type for xsd:IDREF and xsd:IDREFS data types.
- See examples/cxx/tree/library for details.
-
- * New option, --morph-anonymous, allows automatic morphing
- of anonymous types to named ones. See the man pages for
- details.
-
- * New option, --namespace-regex-trace, allows one to trace the
- namespace mapping process. See the man pages for details.
-
- * Mapping for optional elements/attributes (cardinality 0..1)
- has changed in a backwards-incompatible way. In the previous
- version you would write:
-
- Bar& bar = ...
-
- if (bar.foo.present ()) // test
- {
- Foo& foo (bar.foo ()); // get
-
- bar.foo (Foo (...)); // set
-
- bar.foo.reset (); // reset
- }
-
- Now you would write it like this:
-
- if (bar.foo ().present ()) // test
- {
- Foo& foo (bar.foo ().get ()); // get
-
- bar.foo (Foo (...)); // set
-
- bar.foo ().reset (); // reset
- }
-
- Or using the pointer notation:
-
- if (bar.foo ()) // test
- {
- Foo& foo (*bar.foo ()); // get
-
- bar.foo (Foo (...)); // set
-
- bar.foo ().reset (); // reset
- }
-
- C++/Parser
-
- * Support for xsd:list.
-
- * Type/member name conflicts are auto-resolved. Such conflicts
- occur when a type and an element or attribute withing this type
- share the same name.
-
- * New option, --namespace-regex-trace, allows one to trace the
- namespace mapping process. See the man pages for details.
-
-Version 1.3.0
-
- * Numerous bug fixes.
-
- * The XML subsystem of libxsd has been reorganized to provide
- a clean split of DOM and SAX functionalities.
-
- C++/Parser
-
- * New option, --morph-anonymous, allows automatic morphing
- of anonymous types to named ones. See the man pages for
- details.
-
- C++/Tree
-
- * Additional parser functions provide support for reading
- from std::istream.
-
-Version 1.2.0
-
- C++/Parser
-
- * New backend that generates the C++/Parser mapping.
-
-Version 1.1.1
-
- all backends
-
- * Bug fixes in the filesystem path handling logic.
-
-Version 1.1.0
-
- C++/Tree
-
- * New option, --generate-serialization, triggers generation of
- serialization functions. Serialization functions convert an in-memory
- representation back to XML.
-
- * xsd::cxx::tree::vector has been extended to closely follow std::vector
- API. This allows you to access and modify element sequences as if they
- were of type std::vector.
-
- * Generated constructors from xml::attribute and xml::element are made
- explicit.
-
- * The library example was extended to showcase modification and
- serialization of the in-memory representation.
-
- * New "XML Schema C++/Tree Mapping Serialization Guide" has an in-depth
- treatment of the serialization mechanisms provided by xsd.
-
-Version 1.0.1
-
- all backends
-
- * Improved diagnostics.
-
- * Bug fixes in the schema inclusion/importing logic.
-
- C++/Tree
-
- * Two new options: --include-with-brackets and --include-prefix
-
-Version 1.0.0
-
- * First public release.
diff --git a/xsd/README b/xsd/README
deleted file mode 100644
index ee60cce..0000000
--- a/xsd/README
+++ /dev/null
@@ -1,27 +0,0 @@
-CodeSynthesis XSD is a W3C XML Schema to C++ data binding compiler.
-It generates vocabulary-specific, statically-typed C++ mappings (also
-called bindings) from XML Schema definitions. XSD supports two C++
-mappings: in-memory C++/Tree and event-driven C++/Parser.
-
-The C++/Tree mapping consists of types that represent the given
-vocabulary, a set of parsing functions that convert XML instance
-documents to a tree-like in-memory object model, and a set of
-serialization functions that convert the object model back to XML.
-
-The C++/Parser mapping provides parser templates for data types
-defined in XML Schema. Using these parser templates you can build
-your own in-memory representations or perform immediate processing
-of XML instance documents.
-
-See the NEWS file for the user-visible changes from the previous release.
-
-See the LICENSE file for distribution conditions.
-
-See the INSTALL file for prerequisites and installation instructions.
-
-See the doc/ directory for documentation.
-
-The project page is at http://www.codesynthesis.com/projects/xsd/.
-
-Send bug reports or any other feedback to the xsd-users@codesynthesis.com
-mailing list.
diff --git a/xsd/build/bootstrap.make b/xsd/build/bootstrap.make
deleted file mode 100644
index 56c20b3..0000000
--- a/xsd/build/bootstrap.make
+++ /dev/null
@@ -1,102 +0,0 @@
-# file : build/bootstrap.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-project_name := xsd
-
-# First try to include the bundled bootstrap.make if it exist. If that
-# fails, let make search for the external bootstrap.make.
-#
-build := build-0.3
-
--include $(dir $(lastword $(MAKEFILE_LIST)))../../$(build)/bootstrap.make
-
-ifeq ($(patsubst %build/bootstrap.make,,$(lastword $(MAKEFILE_LIST))),)
-include $(build)/bootstrap.make
-endif
-
-def_goal := $(.DEFAULT_GOAL)
-
-# Configuration
-#
-$(call include,$(scf_root)/configuration.make)
-
-# Include C++ configuration. We need to know if we are using the generic
-# C++ compiler in which case we need to compensate for missing dependency
-# auto-generation (see below).
-#
-$(call include,$(bld_root)/cxx/configuration.make)
-
-# Aliases
-#
-.PHONY: $(out_base)/ \
- $(out_base)/.test \
- $(out_base)/.install \
- $(out_base)/.dist \
- $(out_base)/.dist-win \
- $(out_base)/.dist-common \
- $(out_base)/.clean
-
-ifdef %interactive%
-
-.PHONY: test install dist dist-win clean
-
-test: $(out_base)/.test
-install: $(out_base)/.install
-dist: $(out_base)/.dist
-dist-win: $(out_base)/.dist-win
-clean: $(out_base)/.clean
-
-endif
-
-
-# Make sure the distribution prefix is set if the goal is dist or dist-win.
-#
-ifneq ($(filter $(MAKECMDGOALS),dist dist-win),)
-ifeq ($(dist_prefix),)
-$(error dist_prefix is not set)
-endif
-endif
-
-# If we don't have dependency auto-generation then we need to manually
-# make sure that generated files are generated before C++ file are
-# compiler. To do this we make the object files ($2) depend in order-
-# only on generated files ($3).
-#
-ifeq ($(cxx_id),generic)
-
-define include-dep
-$(if $2,$(eval $2: | $3))
-endef
-
-else
-
-define include-dep
-$(call -include,$1)
-endef
-
-endif
-
-# Don't include dependency info for certain targets.
-#
-ifneq ($(filter $(MAKECMDGOALS),clean disfigure),)
-include-dep =
-endif
-
-
-# For dist, install don't include dependencies in examples, and tests
-# since we might be cross-compiling.
-#
-ifneq ($(filter $(MAKECMDGOALS),dist dist-win install),)
-
-ifneq ($(subst $(src_root)/tests/,,$(src_base)),$(src_base))
-include-dep =
-endif
-
-ifneq ($(subst $(src_root)/examples/,,$(src_base)),$(src_base))
-include-dep =
-endif
-
-endif
-
-.DEFAULT_GOAL := $(def_goal)
diff --git a/xsd/build/configuration-dynamic.make b/xsd/build/configuration-dynamic.make
deleted file mode 100644
index 8bebd90..0000000
--- a/xsd/build/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-xsd_with_zlib := n
-xsd_with_ace := n
-xsd_with_xdr := n
-xsd_with_xqilla := n
-xsd_with_boost_date_time := n
-xsd_with_boost_serialization := n
-
-xsd_clean_gen := n
diff --git a/xsd/build/configuration-rules.make b/xsd/build/configuration-rules.make
deleted file mode 100644
index 1cf21d0..0000000
--- a/xsd/build/configuration-rules.make
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : build/configuration-rules.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-$(dcf_root)/configuration-dynamic.make: | $(dcf_root)/.
- $(call message,,$(scf_root)/configure $@)
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $$1,rm -f $$1,$(dcf_root)/configuration-dynamic.make)
-
-endif
-
-ifeq ($(.DEFAULT_GOAL),$(dcf_root)/configuration-dynamic.make)
-.DEFAULT_GOAL :=
-endif
diff --git a/xsd/build/configuration.make b/xsd/build/configuration.make
deleted file mode 100644
index 3d739b9..0000000
--- a/xsd/build/configuration.make
+++ /dev/null
@@ -1,31 +0,0 @@
-# file : build/configuration.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/configuration-rules.make,$(dcf_root))
-
-# Dynamic configuration.
-#
-xsd_with_zlib :=
-xsd_with_ace :=
-xsd_with_xdr :=
-xsd_with_xqilla :=
-xsd_with_boost_date_time :=
-xsd_with_boost_serialization :=
-
-$(call -include,$(dcf_root)/configuration-dynamic.make)
-
-ifdef xsd_with_zlib
-
-$(out_root)/%: xsd_with_zlib := $(xsd_with_zlib)
-$(out_root)/%: xsd_with_ace := $(xsd_with_ace)
-$(out_root)/%: xsd_with_xdr := $(xsd_with_xdr)
-$(out_root)/%: xsd_with_xqilla := $(xsd_with_xqilla)
-$(out_root)/%: xsd_with_boost_date_time := $(xsd_with_boost_date_time)
-$(out_root)/%: xsd_with_boost_serialization := $(xsd_with_boost_serialization)
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/xsd/build/configure b/xsd/build/configure
deleted file mode 100755
index df57f07..0000000
--- a/xsd/build/configure
+++ /dev/null
@@ -1,70 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/configure
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-# $1 out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo
-$echo "configuring '$project_name'"
-$echo
-$echo
-
-$echo
-$echo "Would you like to build optional parts of '$project_name' that require"
-$echo "the 'zlib' library?"
-$echo
-
-with_zlib=`read_y_n n`
-
-$echo
-$echo "Would you like to build optional parts of '$project_name' that require"
-$echo "the 'ACE' library?"
-$echo
-
-with_ace=`read_y_n n`
-
-$echo
-$echo "Would you like to build optional parts of '$project_name' that require"
-$echo "the 'XDR' library (part of the system in most GNU/Linux and"
-$echo "UNIX distributions)?"
-$echo
-
-with_xdr=`read_y_n n`
-
-$echo
-$echo "Would you like to build optional parts of '$project_name' that require"
-$echo "the boost 'serialization' library?"
-$echo
-
-with_boost_serialization=`read_y_n n`
-
-$echo
-$echo "Would you like to build optional parts of '$project_name' that require"
-$echo "the boost 'date_time' library?"
-$echo
-
-with_boost_date_time=`read_y_n n`
-
-$echo
-$echo "Would you like to build optional parts of '$project_name' that require"
-$echo "the XQilla library?"
-$echo
-
-with_xqilla=`read_y_n n`
-
-echo "xsd_with_zlib := $with_zlib" >$1
-echo "xsd_with_ace := $with_ace" >>$1
-echo "xsd_with_xdr := $with_xdr" >>$1
-echo "xsd_with_xqilla := $with_xqilla" >>$1
-echo "xsd_with_boost_date_time := $with_boost_date_time" >>$1
-echo "xsd_with_boost_serialization := $with_boost_serialization" >>$1
diff --git a/xsd/build/cxx/configuration-dynamic.make b/xsd/build/cxx/configuration-dynamic.make
deleted file mode 100644
index 83cf860..0000000
--- a/xsd/build/cxx/configuration-dynamic.make
+++ /dev/null
@@ -1,11 +0,0 @@
-cxx_id := generic
-cxx_pp_extra_options := $(CPPFLAGS)
-cxx_extra_options := $(CXXFLAGS)
-cxx_ld_extra_options := $(LDFLAGS)
-cxx_extra_libs := $(LIBS)
-
-r := $(shell echo $(LDFLAGS) | sed -e 's/-L *\([^ ]*\)/-L\1/g')
-r := $(patsubst -L%,%,$(filter -L%,$(r)))
-r := $(shell echo $(r) | sed -e 's/ /:/g')
-
-cxx_extra_lib_paths := $(r)
diff --git a/xsd/build/cxx/generic/configuration-dynamic.make b/xsd/build/cxx/generic/configuration-dynamic.make
deleted file mode 100644
index f35ea66..0000000
--- a/xsd/build/cxx/generic/configuration-dynamic.make
+++ /dev/null
@@ -1,16 +0,0 @@
-ifeq ($(filter $(origin CXX),undefined default),)
-cxx_generic := $(CXX)
-else
-cxx_generic := g++
-endif
-
-r := $(shell $(cxx_generic) $(cxx_extra_options) $(cxx_ld_extra_options) \
--print-search-dirs 2>&1 | sed -e 's/libraries: =//p' -e d)
-
-ifneq ($r,)
- ifeq ($(cxx_extra_lib_paths),)
- cxx_extra_lib_paths := $r
- else
- cxx_extra_lib_paths := $(cxx_extra_lib_paths):$r
- endif
-endif
diff --git a/xsd/build/import/cli/LICENSE b/xsd/build/import/cli/LICENSE
deleted file mode 100644
index 57ee246..0000000
--- a/xsd/build/import/cli/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright (c) 2009-2012 Code Synthesis Tools CC.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
diff --git a/xsd/build/import/cli/cli-cxx.make b/xsd/build/import/cli/cli-cxx.make
deleted file mode 100644
index cd009d9..0000000
--- a/xsd/build/import/cli/cli-cxx.make
+++ /dev/null
@@ -1,48 +0,0 @@
-# file : build/import/cli/cli-cxx.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-# Here we are operating in the importing project's space, not in
-# cli's.
-#
-
-# Get the C++ file extensions.
-#
-$(call include,$(bld_root)/cxx/configuration-static.make)
-
-cli_pattern := \
-$(out_base)/%.$(cxx_s_suffix) \
-$(out_base)/%.$(cxx_h_suffix) \
-$(out_base)/%.$(cxx_i_suffix)
-
-$(cli_pattern): cli_options := \
---hxx-suffix .$(cxx_h_suffix) \
---ixx-suffix .$(cxx_i_suffix) \
---cxx-suffix .$(cxx_s_suffix)
-
-.PRECIOUS: $(cli_pattern)
-
-ifeq ($(out_base),$(src_base))
-
-$(cli_pattern): $(src_base)/%.cli
- $(call message,cli $<,$(cli) $(cli_options) --output-dir $(dir $@) $<)
-
-else
-
-$(cli_pattern): $(src_base)/%.cli | $$(dir $$@).
- $(call message,cli $<,$(cli) $(cli_options) --output-dir $(dir $@) $<)
-
-$(cli_pattern): $(out_base)/%.cli | $$(dir $$@).
- $(call message,cli $<,$(cli) $(cli_options) --output-dir $(dir $@) $<)
-endif
-
-.PHONY: $(out_base)/%.cxx.cli.clean
-
-$(out_base)/%.cxx.cli.clean: cxx_s_suffix := $(cxx_s_suffix)
-$(out_base)/%.cxx.cli.clean: cxx_h_suffix := $(cxx_h_suffix)
-$(out_base)/%.cxx.cli.clean: cxx_i_suffix := $(cxx_i_suffix)
-
-$(out_base)/%.cxx.cli.clean:
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.cli.clean=.$(cxx_s_suffix)))
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.cli.clean=.$(cxx_h_suffix)))
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.cli.clean=.$(cxx_i_suffix)))
diff --git a/xsd/build/import/cli/configuration-dynamic.make b/xsd/build/import/cli/configuration-dynamic.make
deleted file mode 100644
index 908d979..0000000
--- a/xsd/build/import/cli/configuration-dynamic.make
+++ /dev/null
@@ -1,3 +0,0 @@
-# We ship up-to-date generated files so cli normally won't be invoked.
-#
-cli_installed := y
diff --git a/xsd/build/import/cli/configuration-rules.make b/xsd/build/import/cli/configuration-rules.make
deleted file mode 100644
index 5fb2485..0000000
--- a/xsd/build/import/cli/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/cli/configuration-rules.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(dcf_root)/import/cli/configuration-dynamic.make: | $(dcf_root)/import/cli/.
- $(call message,,$(scf_root)/import/cli/configure $@)
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/import/cli/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/cli/configuration-dynamic.make)
-
-endif
diff --git a/xsd/build/import/cli/configure b/xsd/build/import/cli/configure
deleted file mode 100755
index ae1e512..0000000
--- a/xsd/build/import/cli/configure
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/cli/configure
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-
-# $1 - out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'cli' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed "
-$echo "version of 'cli' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-
-if [ "$installed" = "n" ]; then
-
-$echo
-$echo "Please enter the src_root for 'cli'."
-$echo
-
-src_root=`read_path --directory --exist`
-
-$echo
-$echo "Please enter the out_root for 'cli'."
-$eche
-
-out_root=`read_path --directory $src_root`
-
-fi
-
-echo cli_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
-echo src_root := $src_root >>$1
-echo scf_root := \$\(src_root\)/build >>$1
-echo out_root := $out_root >>$1
-
-fi
diff --git a/xsd/build/import/cli/stub.make b/xsd/build/import/cli/stub.make
deleted file mode 100644
index 3704723..0000000
--- a/xsd/build/import/cli/stub.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/import/cli/stub.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/cli/configuration-rules.make,$(dcf_root))
-
-cli_installed :=
-
-$(call -include,$(dcf_root)/import/cli/configuration-dynamic.make)
-
-ifdef cli_installed
-
-ifeq ($(cli_installed),y)
-
-$(call export,cli: cli,cli-rules: $(scf_root)/import/cli/cli-cxx.make)
-
-else
-
-# Include export stub.
-#
-$(call include,$(scf_root)/export/cli/stub.make)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/xsd/build/import/libace/LICENSE b/xsd/build/import/libace/LICENSE
deleted file mode 100644
index 3912109..0000000
--- a/xsd/build/import/libace/LICENSE
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/xsd/build/import/libace/configuration-rules.make b/xsd/build/import/libace/configuration-rules.make
deleted file mode 100644
index 9073dc5..0000000
--- a/xsd/build/import/libace/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libace/configuration-rules.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libace/configuration-dynamic.make: | $(dcf_root)/import/libace/.
- $(call message,,$(scf_root)/import/libace/configure $@)
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libace/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libace/configuration-dynamic.make)
-
-endif
diff --git a/xsd/build/import/libace/configure b/xsd/build/import/libace/configure
deleted file mode 100755
index 5f35228..0000000
--- a/xsd/build/import/libace/configure
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libace/configure
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-
-# $1 - out config file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'ACE' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed version"
-$echo "of 'ACE' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-type=
-
-if [ "$installed" = "n" ]; then
-
- $echo
- $echo "Please enter the 'ACE' root directory (ACE_ROOT)."
- $echo
-
- root=`read_path --directory --exist`
-
- $echo
- $echo "Please select the library type you would like to use:"
- $echo
- $echo "(1) archive"
- $echo "(2) shared object"
- $echo
-
- type=`read_option "archive shared" "shared"`
-
-fi
-
-echo libace_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
- echo libace_root := $root >>$1
- echo libace_type := $type >>$1
-
-fi
diff --git a/xsd/build/import/libace/rules.make b/xsd/build/import/libace/rules.make
deleted file mode 100644
index c04724d..0000000
--- a/xsd/build/import/libace/rules.make
+++ /dev/null
@@ -1,28 +0,0 @@
-# file : build/import/libace/rules.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libace/%: root := $(libace_root)
-
-ifeq ($(libace_type),archive)
-
-$(dcf_root)/import/libace/ace.l: $(libace_root)/lib/libACE.a
- @echo $< >$@
-else
-
-$(dcf_root)/import/libace/ace.l: $(libace_root)/lib/libACE.so
- @echo $< >$@
- @echo rpath:$(root)/lib >>$@
-endif
-
-$(dcf_root)/import/libace/ace.l.cpp-options:
- @echo include: -I$(root) >$@
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libace/ace.l,\
-rm -f $(dcf_root)/import/libace/ace.l)
- $(call message,,rm -f $(dcf_root)/import/libace/ace.l.cpp-options)
-
-endif
diff --git a/xsd/build/import/libace/stub.make b/xsd/build/import/libace/stub.make
deleted file mode 100644
index ba4946d..0000000
--- a/xsd/build/import/libace/stub.make
+++ /dev/null
@@ -1,31 +0,0 @@
-# file : build/import/libace/stub.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libace/configuration-rules.make,$(dcf_root))
-
-libace_installed :=
-
-$(call -include,$(dcf_root)/import/libace/configuration-dynamic.make)
-
-ifdef libace_installed
-
-ifeq ($(libace_installed),y)
-
-$(call export,l: -lACE,cpp-options: )
-
-else
-
-$(call include-once,$(scf_root)/import/libace/rules.make,$(dcf_root))
-
-$(call export,\
- l: $(dcf_root)/import/libace/ace.l,\
- cpp-options: $(dcf_root)/import/libace/ace.l.cpp-options)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/xsd/build/import/libace/version b/xsd/build/import/libace/version
deleted file mode 100644
index 0d91a54..0000000
--- a/xsd/build/import/libace/version
+++ /dev/null
@@ -1 +0,0 @@
-0.3.0
diff --git a/xsd/build/import/libboost/LICENSE b/xsd/build/import/libboost/LICENSE
deleted file mode 100644
index 3912109..0000000
--- a/xsd/build/import/libboost/LICENSE
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/xsd/build/import/libboost/configuration-rules.make b/xsd/build/import/libboost/configuration-rules.make
deleted file mode 100644
index 88a3b38..0000000
--- a/xsd/build/import/libboost/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libboost/configuration-rules.make
-# copyright : Copyright (c) 2005-2011 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libboost/configuration-dynamic.make: | $(dcf_root)/import/libboost/.
- $(call message,,$(scf_root)/import/libboost/configure $@)
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libboost/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libboost/configuration-dynamic.make)
-
-endif
diff --git a/xsd/build/import/libboost/configure b/xsd/build/import/libboost/configure
deleted file mode 100755
index 361be81..0000000
--- a/xsd/build/import/libboost/configure
+++ /dev/null
@@ -1,73 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libboost/configure
-# copyright : Copyright (c) 2005-2011 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-
-# $1 - out config file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'boost libraries' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed version"
-$echo "of 'boost libraries' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-if [ "$installed" = "n" ]; then
-
- $echo
- $echo "Please enter the 'boost' root directory."
- $echo
-
- root=`read_path --directory --exist`
-
- $echo
- $echo "Please select the library type you would like to use:"
- $echo
- $echo "(1) archive"
- $echo "(2) shared object"
- $echo
-
- type=`read_option "archive shared" "shared"`
-fi
-
-$echo
-$echo "Link explicitly to the boost system library? This library"
-$echo "is available since boost 1.35.0 and linking to it explicitly"
-$echo "may be required by newer linkers."
-$echo
-
-link_system=`read_y_n y`
-
-$echo
-$echo "Please enter optional suffix that may be embedded into the"
-$echo "boost library names. For example, if your library names are in"
-$echo "the libboost_regex-gcc41-mt-d.so form, then enter -gcc41-mt-d"
-$echo "Otherwise leave this field blank."
-$echo
-
-suffix=
-read -e -p "[]: " suffix
-
-echo libboost_installed := $installed >$1
-echo libboost_suffix := $suffix >>$1
-echo libboost_system := $link_system >>$1
-
-if [ "$installed" = "n" ]; then
-
- echo libboost_root := $root >>$1
- echo libboost_type := $type >>$1
-
-fi
diff --git a/xsd/build/import/libboost/date-time/rules.make b/xsd/build/import/libboost/date-time/rules.make
deleted file mode 100644
index 7f862f5..0000000
--- a/xsd/build/import/libboost/date-time/rules.make
+++ /dev/null
@@ -1,50 +0,0 @@
-# file : build/import/libboost/date-time/rules.make
-# copyright : Copyright (c) 2005-2011 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libboost/%: root := $(libboost_root)
-
-$(dcf_root)/import/libboost/date-time/date-time.l: \
- | $(dcf_root)/import/libboost/date-time/.
-
-ifeq ($(libboost_type),archive)
-
-ifeq ($(libboost_system),y)
-$(dcf_root)/import/libboost/date-time/date-time.l: \
- $(libboost_root)/stage/lib/libboost_date_time$(libboost_suffix).a \
- $(libboost_root)/stage/lib/libboost_system$(libboost_suffix).a
-else
-$(dcf_root)/import/libboost/date-time/date-time.l: \
- $(libboost_root)/stage/lib/libboost_date_time$(libboost_suffix).a
-endif
- @echo $^ >$@
-
-else
-
-ifeq ($(libboost_system),y)
-$(dcf_root)/import/libboost/date-time/date-time.l: \
- $(libboost_root)/stage/lib/libboost_date_time$(libboost_suffix).so \
- $(libboost_root)/stage/lib/libboost_system$(libboost_suffix).so
-else
-$(dcf_root)/import/libboost/date-time/date-time.l: \
- $(libboost_root)/stage/lib/libboost_date_time$(libboost_suffix).so
-endif
- @echo $^ >$@
- @echo rpath:$(root)/stage/lib >>$@
-
-endif
-
-
-$(dcf_root)/import/libboost/date-time/date-time.l.cpp-options: \
- | $(dcf_root)/import/libboost/date-time/.
- @echo include: -I$(root) >$@
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libboost/date-time/date-time.l,\
-rm -f $(dcf_root)/import/libboost/date-time/date-time.l)
- $(call message,,\
-rm -f $(dcf_root)/import/libboost/date-time/date-time.l.cpp-options)
-
-endif
diff --git a/xsd/build/import/libboost/date-time/stub.make b/xsd/build/import/libboost/date-time/stub.make
deleted file mode 100644
index 64deb54..0000000
--- a/xsd/build/import/libboost/date-time/stub.make
+++ /dev/null
@@ -1,35 +0,0 @@
-# file : build/import/libboost/date-time/stub.make
-# copyright : Copyright (c) 2005-2011 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libboost/configuration-rules.make,$(dcf_root))
-
-libboost_installed :=
-
-$(call -include,$(dcf_root)/import/libboost/configuration-dynamic.make)
-
-ifdef libboost_installed
-
-ifeq ($(libboost_installed),y)
-
-ifeq ($(libboost_system),y)
-$(call export,l: -lboost_date_time$(libboost_suffix) -lboost_system$(libboost_suffix),cpp_options: )
-else
-$(call export,l: -lboost_date_time$(libboost_suffix),cpp_options: )
-endif
-
-else
-
-$(call include-once,$(scf_root)/import/libboost/date-time/rules.make,$(dcf_root))
-
-$(call export,\
- l: $(dcf_root)/import/libboost/date-time/date-time.l,\
- cpp-options: $(dcf_root)/import/libboost/date-time/date-time.l.cpp-options)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/xsd/build/import/libboost/serialization/rules.make b/xsd/build/import/libboost/serialization/rules.make
deleted file mode 100644
index 6d02b86..0000000
--- a/xsd/build/import/libboost/serialization/rules.make
+++ /dev/null
@@ -1,49 +0,0 @@
-# file : build/import/libboost/serialization/rules.make
-# copyright : Copyright (c) 2005-2011 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libboost/%: root := $(libboost_root)
-
-$(dcf_root)/import/libboost/serialization/serialization.l: \
- | $(dcf_root)/import/libboost/serialization/.
-
-ifeq ($(libboost_type),archive)
-
-ifeq ($(libboost_system),y)
-$(dcf_root)/import/libboost/serialization/serialization.l: \
- $(libboost_root)/stage/lib/libboost_serialization$(libboost_suffix).a \
- $(libboost_root)/stage/lib/libboost_system$(libboost_suffix).a
-else
-$(dcf_root)/import/libboost/serialization/serialization.l: \
- $(libboost_root)/stage/lib/libboost_serialization$(libboost_suffix).a
-endif
- @echo $^ >$@
-
-else
-
-ifeq ($(libboost_system),y)
-$(dcf_root)/import/libboost/serialization/serialization.l: \
- $(libboost_root)/stage/lib/libboost_serialization$(libboost_suffix).so \
- $(libboost_root)/stage/lib/libboost_system$(libboost_suffix).so
-else
-$(dcf_root)/import/libboost/serialization/serialization.l: \
- $(libboost_root)/stage/lib/libboost_serialization$(libboost_suffix).so
-endif
- @echo $^ >$@
- @echo rpath:$(root)/stage/lib >>$@
-
-endif
-
-
-$(dcf_root)/import/libboost/serialization/serialization.l.cpp-options: \
- | $(dcf_root)/import/libboost/serialization/.
- @echo include: -I$(root) >$@
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libboost/serialization/serialization.l,\
-rm -f $(dcf_root)/import/libboost/serialization/serialization.l)
- $(call message,,rm -f $(dcf_root)/import/libboost/serialization/serialization.l.cpp-options)
-
-endif
diff --git a/xsd/build/import/libboost/serialization/stub.make b/xsd/build/import/libboost/serialization/stub.make
deleted file mode 100644
index b63db81..0000000
--- a/xsd/build/import/libboost/serialization/stub.make
+++ /dev/null
@@ -1,35 +0,0 @@
-# file : build/import/libboost/serialization/stub.make
-# copyright : Copyright (c) 2005-2011 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libboost/configuration-rules.make,$(dcf_root))
-
-libboost_installed :=
-
-$(call -include,$(dcf_root)/import/libboost/configuration-dynamic.make)
-
-ifdef libboost_installed
-
-ifeq ($(libboost_installed),y)
-
-ifeq ($(libboost_system),y)
-$(call export,l: -lboost_serialization$(libboost_suffix) -lboost_system$(libboost_suffix),cpp_options: )
-else
-$(call export,l: -lboost_serialization$(libboost_suffix),cpp_options: )
-endif
-
-else
-
-$(call include-once,$(scf_root)/import/libboost/serialization/rules.make,$(dcf_root))
-
-$(call export,\
- l: $(dcf_root)/import/libboost/serialization/serialization.l,\
- cpp-options: $(dcf_root)/import/libboost/serialization/serialization.l.cpp-options)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/xsd/build/import/libboost/version b/xsd/build/import/libboost/version
deleted file mode 100644
index faef31a..0000000
--- a/xsd/build/import/libboost/version
+++ /dev/null
@@ -1 +0,0 @@
-0.7.0
diff --git a/xsd/build/import/libcutl/LICENSE b/xsd/build/import/libcutl/LICENSE
deleted file mode 100644
index 6b90d44..0000000
--- a/xsd/build/import/libcutl/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-Code found in the cutl/details/boost/ directory is distributed under
-the Boost Software License (see the accompanying LICENSE file).
-
-The rest is Copyright (c) 2009-2011 Code Synthesis Tools CC and is
-distributed under the following license (MIT License):
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/xsd/build/import/libcutl/configuration-dynamic.make b/xsd/build/import/libcutl/configuration-dynamic.make
deleted file mode 100644
index 4e4bb83..0000000
--- a/xsd/build/import/libcutl/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-ifeq ($(EXTERNAL_LIBCUTL),y)
-libcutl_installed := y
-else
-libcutl_installed := n
-src_root := $(abspath $(src_root)/../libcutl)
-scf_root := $(src_root)/build
-out_root := $(src_root)
-endif
diff --git a/xsd/build/import/libcutl/configuration-rules.make b/xsd/build/import/libcutl/configuration-rules.make
deleted file mode 100644
index b9fcabc..0000000
--- a/xsd/build/import/libcutl/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libcutl/configuration-rules.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(dcf_root)/import/libcutl/configuration-dynamic.make: | $(dcf_root)/import/libcutl/.
- $(call message,,$(scf_root)/import/libcutl/configure $@)
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/import/libcutl/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libcutl/configuration-dynamic.make)
-
-endif
diff --git a/xsd/build/import/libcutl/configure b/xsd/build/import/libcutl/configure
deleted file mode 100755
index 8adb631..0000000
--- a/xsd/build/import/libcutl/configure
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libcutl/configure
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-
-# $1 - out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'libcutl' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed "
-$echo "version of 'libcutl' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-
-if [ "$installed" = "n" ]; then
-
-$echo
-$echo "Please enter the src_root for 'libcutl'."
-$echo
-
-src_root=`read_path --directory --exist`
-
-$echo
-$echo "Please enter the out_root for 'libcutl'."
-$echo
-
-out_root=`read_path --directory $src_root`
-
-fi
-
-echo libcutl_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
-echo src_root := $src_root >>$1
-echo scf_root := \$\(src_root\)/build >>$1
-echo out_root := $out_root >>$1
-
-fi
diff --git a/xsd/build/import/libcutl/stub.make b/xsd/build/import/libcutl/stub.make
deleted file mode 100644
index 1ec4716..0000000
--- a/xsd/build/import/libcutl/stub.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/import/libcutl/stub.make
-# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libcutl/configuration-rules.make,$(dcf_root))
-
-libcutl_installed :=
-
-$(call -include,$(dcf_root)/import/libcutl/configuration-dynamic.make)
-
-ifdef libcutl_installed
-
-ifeq ($(libcutl_installed),y)
-
-$(call export,l: -lcutl,cpp-options: )
-
-else
-
-# Include export stub.
-#
-$(call include,$(scf_root)/export/libcutl/stub.make)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/xsd/build/import/libxerces-c/LICENSE b/xsd/build/import/libxerces-c/LICENSE
deleted file mode 100644
index 3912109..0000000
--- a/xsd/build/import/libxerces-c/LICENSE
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/xsd/build/import/libxerces-c/configuration-dynamic.make b/xsd/build/import/libxerces-c/configuration-dynamic.make
deleted file mode 100644
index 91f61b2..0000000
--- a/xsd/build/import/libxerces-c/configuration-dynamic.make
+++ /dev/null
@@ -1 +0,0 @@
-libxerces_c_installed := y
diff --git a/xsd/build/import/libxerces-c/configuration-rules.make b/xsd/build/import/libxerces-c/configuration-rules.make
deleted file mode 100644
index 995e6bd..0000000
--- a/xsd/build/import/libxerces-c/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libxerces-c/configuration-rules.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libxerces-c/configuration-dynamic.make: | $(dcf_root)/import/libxerces-c/.
- $(call message,,$(scf_root)/import/libxerces-c/configure $@)
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libxerces-c/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libxerces-c/configuration-dynamic.make)
-
-endif
diff --git a/xsd/build/import/libxerces-c/configure b/xsd/build/import/libxerces-c/configure
deleted file mode 100755
index 45cd3da..0000000
--- a/xsd/build/import/libxerces-c/configure
+++ /dev/null
@@ -1,72 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libxerces-c/configure
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-
-# $1 - out config file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'libxerces-c' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed version"
-$echo "of 'libxerces-c' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-type=
-
-if [ "$installed" = "n" ]; then
-
- version=
-
- while [ -z "$version" ]; do
-
- $echo
- $echo "Please enter the 'libxerces-c' root directory."
- $echo
-
- root=`read_path --directory --exist`
-
- version=`sed -e 's/^VER=\([^_]*\)_\([^_]*\)_\([^_]*\)[ ]*$/\1.\2.\3/' \
--e t -e d $root/version.incl 2>/dev/null`
-
- if [ $? != 0 -o -z "$version" ]; then
-
- version=
- echo "Unable to read version information from $root/version.incl"
- fi
- done
-
- $echo
- $echo "Please select the library type you would like to use:"
- $echo
- $echo "(1) archive"
- $echo "(2) shared object"
- $echo
-
- type=`read_option "archive shared" "shared"`
-
-fi
-
-echo libxerces_c_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
- echo libxerces_c_root := $root >>$1
- echo libxerces_c_type := $type >>$1
- echo libxerces_c_version := $version >>$1
-
-fi
diff --git a/xsd/build/import/libxerces-c/rules.make b/xsd/build/import/libxerces-c/rules.make
deleted file mode 100644
index 21ac145..0000000
--- a/xsd/build/import/libxerces-c/rules.make
+++ /dev/null
@@ -1,51 +0,0 @@
-# file : build/import/libxerces-c/rules.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libxerces-c/%: root := $(libxerces_c_root)
-
-ifneq ($(filter 3.%,$(libxerces_c_version)),)
-
-# 3.x.y
-#
-ifeq ($(libxerces_c_type),archive)
-
-$(dcf_root)/import/libxerces-c/xerces-c.l: $(libxerces_c_root)/src/.libs/libxerces-c.a
- @echo $< >$@
-else
-
-$(dcf_root)/import/libxerces-c/xerces-c.l: $(libxerces_c_root)/src/.libs/libxerces-c.so
- @echo $< >$@
- @echo rpath:$(root)/src/.libs >>$@
-endif
-
-$(dcf_root)/import/libxerces-c/xerces-c.l.cpp-options:
- @echo include: -I$(root)/src >$@
-else
-
-# 2.x.y
-#
-ifeq ($(libxerces_c_type),archive)
-
-$(dcf_root)/import/libxerces-c/xerces-c.l: $(libxerces_c_root)/lib/libxerces-c.a
- @echo $< >$@
-else
-
-$(dcf_root)/import/libxerces-c/xerces-c.l: $(libxerces_c_root)/lib/libxerces-c.so
- @echo $< >$@
- @echo rpath:$(root)/lib >>$@
-endif
-
-$(dcf_root)/import/libxerces-c/xerces-c.l.cpp-options:
- @echo include: -I$(root)/include >$@
-endif
-
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libxerces-c/xerces-c.l,\
-rm -f $(dcf_root)/import/libxerces-c/xerces-c.l)
- $(call message,,rm -f $(dcf_root)/import/libxerces-c/xerces-c.l.cpp-options)
-
-endif
diff --git a/xsd/build/import/libxerces-c/stub.make b/xsd/build/import/libxerces-c/stub.make
deleted file mode 100644
index 745200d..0000000
--- a/xsd/build/import/libxerces-c/stub.make
+++ /dev/null
@@ -1,31 +0,0 @@
-# file : build/import/libxerces-c/stub.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libxerces-c/configuration-rules.make,$(dcf_root))
-
-libxerces_c_installed :=
-
-$(call -include,$(dcf_root)/import/libxerces-c/configuration-dynamic.make)
-
-ifdef libxerces_c_installed
-
-ifeq ($(libxerces_c_installed),y)
-
-$(call export,l: -lxerces-c,cpp-options: )
-
-else
-
-$(call include-once,$(scf_root)/import/libxerces-c/rules.make,$(dcf_root))
-
-$(call export,\
- l: $(dcf_root)/import/libxerces-c/xerces-c.l,\
- cpp-options: $(dcf_root)/import/libxerces-c/xerces-c.l.cpp-options)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/xsd/build/import/libxerces-c/version b/xsd/build/import/libxerces-c/version
deleted file mode 100644
index a918a2a..0000000
--- a/xsd/build/import/libxerces-c/version
+++ /dev/null
@@ -1 +0,0 @@
-0.6.0
diff --git a/xsd/build/import/libxqilla/LICENSE b/xsd/build/import/libxqilla/LICENSE
deleted file mode 100644
index 3912109..0000000
--- a/xsd/build/import/libxqilla/LICENSE
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/xsd/build/import/libxqilla/configuration-rules.make b/xsd/build/import/libxqilla/configuration-rules.make
deleted file mode 100644
index 1c5578e..0000000
--- a/xsd/build/import/libxqilla/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libxqilla/configuration-rules.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libxqilla/configuration-dynamic.make: | $(dcf_root)/import/libxqilla/.
- $(call message,,$(scf_root)/import/libxqilla/configure $@)
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libxqilla/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libxqilla/configuration-dynamic.make)
-
-endif
diff --git a/xsd/build/import/libxqilla/configure b/xsd/build/import/libxqilla/configure
deleted file mode 100755
index 1105838..0000000
--- a/xsd/build/import/libxqilla/configure
+++ /dev/null
@@ -1,56 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libxqilla/configure
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-
-# $1 - out config file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'libxqilla' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed version"
-$echo "of 'libxqilla' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-type=
-
-if [ "$installed" = "n" ]; then
-
- $echo
- $echo "Please enter the 'libxqilla' root directory."
- $echo
-
- root=`read_path --directory --exist`
-
- $echo
- $echo "Please select the library type you would like to use:"
- $echo
- $echo "(1) archive"
- $echo "(2) shared object"
- $echo
-
- type=`read_option "archive shared" "shared"`
-fi
-
-echo libxqilla_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
- echo libxqilla_root := $root >>$1
- echo libxqilla_type := $type >>$1
-
-fi
diff --git a/xsd/build/import/libxqilla/rules.make b/xsd/build/import/libxqilla/rules.make
deleted file mode 100644
index 11f442d..0000000
--- a/xsd/build/import/libxqilla/rules.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/import/libxqilla/rules.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libxqilla/%: root := $(libxqilla_root)
-
-ifeq ($(libxqilla_type),archive)
-
-$(dcf_root)/import/libxqilla/xqilla.l: $(libxqilla_root)/.libs/libxqilla.a
- @echo $< >$@
-else
-
-$(dcf_root)/import/libxqilla/xqilla.l: $(libxqilla_root)/.libs/libxqilla.so
- @echo $< >$@
- @echo rpath:$(root)/.libs >>$@
-endif
-
-$(dcf_root)/import/libxqilla/xqilla.l.cpp-options:
- @echo include: -I$(root)/include >$@
-
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libxqilla/xqilla.l,\
-rm -f $(dcf_root)/import/libxqilla/xqilla.l)
- $(call message,,rm -f $(dcf_root)/import/libxqilla/xqilla.l.cpp-options)
-
-endif
diff --git a/xsd/build/import/libxqilla/stub.make b/xsd/build/import/libxqilla/stub.make
deleted file mode 100644
index b7ee956..0000000
--- a/xsd/build/import/libxqilla/stub.make
+++ /dev/null
@@ -1,31 +0,0 @@
-# file : build/import/libxqilla/stub.make
-# copyright : Copyright (c) 2005-2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libxqilla/configuration-rules.make,$(dcf_root))
-
-libxqilla_installed :=
-
-$(call -include,$(dcf_root)/import/libxqilla/configuration-dynamic.make)
-
-ifdef libxqilla_installed
-
-ifeq ($(libxqilla_installed),y)
-
-$(call export,l: -lxqilla,cpp-options: )
-
-else
-
-$(call include-once,$(scf_root)/import/libxqilla/rules.make,$(dcf_root))
-
-$(call export,\
- l: $(dcf_root)/import/libxqilla/xqilla.l,\
- cpp-options: $(dcf_root)/import/libxqilla/xqilla.l.cpp-options)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/xsd/build/import/libxqilla/version b/xsd/build/import/libxqilla/version
deleted file mode 100644
index 6e8bf73..0000000
--- a/xsd/build/import/libxqilla/version
+++ /dev/null
@@ -1 +0,0 @@
-0.1.0
diff --git a/xsd/build/import/libxsd-frontend/LICENSE b/xsd/build/import/libxsd-frontend/LICENSE
deleted file mode 100644
index 33b4cbc..0000000
--- a/xsd/build/import/libxsd-frontend/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License version 2 as
-published by the Free Software Foundation.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-In addition, as a special exception, Code Synthesis Tools CC gives
-permission to link this program with the Xerces-C++ library (or with
-modified versions of Xerces-C++ that use the same license as Xerces-C++),
-and distribute linked combinations including the two. You must obey
-the GNU General Public License version 2 in all respects for all of
-the code used other than Xerces-C++. If you modify this copy of the
-program, you may extend this exception to your version of the program,
-but you are not obligated to do so. If you do not wish to do so, delete
-this exception statement from your version.
diff --git a/xsd/build/import/libxsd-frontend/configuration-dynamic.make b/xsd/build/import/libxsd-frontend/configuration-dynamic.make
deleted file mode 100644
index 5033ade..0000000
--- a/xsd/build/import/libxsd-frontend/configuration-dynamic.make
+++ /dev/null
@@ -1,4 +0,0 @@
-libxsd_frontend_installed := n
-src_root := $(abspath $(src_root)/../libxsd-frontend)
-scf_root := $(src_root)/build
-out_root := $(src_root)
diff --git a/xsd/build/import/libxsd-frontend/configuration-rules.make b/xsd/build/import/libxsd-frontend/configuration-rules.make
deleted file mode 100644
index 05a312a..0000000
--- a/xsd/build/import/libxsd-frontend/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libxsd-frontend/configuration-rules.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-$(dcf_root)/import/libxsd-frontend/configuration-dynamic.make: | $(dcf_root)/import/libxsd-frontend/.
- $(call message,,$(scf_root)/import/libxsd-frontend/configure $@)
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libxsd-frontend/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libxsd-frontend/configuration-dynamic.make)
-
-endif
diff --git a/xsd/build/import/libxsd-frontend/configure b/xsd/build/import/libxsd-frontend/configure
deleted file mode 100755
index 0c34062..0000000
--- a/xsd/build/import/libxsd-frontend/configure
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libxsd-frontend/configure
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-
-# $1 - out file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'libxsd-frontend' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed "
-$echo "version of 'libxsd-frontend' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-
-if [ "$installed" = "n" ]; then
-
-$echo
-$echo "Please enter the src_root for 'libxsd-frontend'."
-$echo
-
-src_root=`read_path --directory --exist`
-
-$echo
-$echo "Please enter the out_root for 'libxsd-frontend'."
-$echo
-
-out_root=`read_path --directory $src_root`
-
-fi
-
-echo libxsd_frontend_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
-echo src_root := $src_root >>$1
-echo scf_root := \$\(src_root\)/build >>$1
-echo out_root := $out_root >>$1
-
-fi
diff --git a/xsd/build/import/libxsd-frontend/stub.make b/xsd/build/import/libxsd-frontend/stub.make
deleted file mode 100644
index cb57cef..0000000
--- a/xsd/build/import/libxsd-frontend/stub.make
+++ /dev/null
@@ -1,29 +0,0 @@
-# file : build/import/libxsd-frontend/stub.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libxsd-frontend/configuration-rules.make,$(dcf_root))
-
-libxsd_frontend_installed :=
-
-$(call -include,$(dcf_root)/import/libxsd-frontend/configuration-dynamic.make)
-
-ifdef libxsd_frontend_installed
-
-ifeq ($(libxsd_frontend_installed),y)
-
-$(call export,l: -lxsd-frontend -lcutl -lxerces-c,cpp_options: )
-
-else
-
-# Include export stub.
-#
-$(call include,$(scf_root)/export/libxsd-frontend/stub.make)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/xsd/build/import/libz/LICENSE b/xsd/build/import/libz/LICENSE
deleted file mode 100644
index 3912109..0000000
--- a/xsd/build/import/libz/LICENSE
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/xsd/build/import/libz/configuration-rules.make b/xsd/build/import/libz/configuration-rules.make
deleted file mode 100644
index 180d3f3..0000000
--- a/xsd/build/import/libz/configuration-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : build/import/libz/configuration-rules.make
-# copyright : Copyright (c) 2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libz/configuration-dynamic.make: | $(dcf_root)/import/libz/.
- $(call message,,$(scf_root)/import/libz/configure $@)
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libz/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/libz/configuration-dynamic.make)
-
-endif
diff --git a/xsd/build/import/libz/configure b/xsd/build/import/libz/configure
deleted file mode 100755
index b937a6c..0000000
--- a/xsd/build/import/libz/configure
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/libz/configure
-# copyright : Copyright (c) 2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-
-# $1 - out config file
-#
-# bld_root - build root
-# project_name - project name
-#
-
-source $bld_root/dialog.bash
-
-
-$echo
-$echo "Configuring external dependency on 'zlib' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed version"
-$echo "of 'zlib' as opposed to the development build?"
-$echo
-
-installed=`read_y_n y`
-
-path=
-type=
-
-if [ "$installed" = "n" ]; then
-
- $echo
- $echo "Please enter the 'zlib' root directory."
- $echo
-
- root=`read_path --directory --exist`
-
- $echo
- $echo "Please select the library type you would like to use:"
- $echo
- $echo "(1) archive"
- $echo "(2) shared object"
- $echo
-
- type=`read_option "archive shared" "shared"`
-
-fi
-
-echo libz_installed := $installed >$1
-
-if [ "$installed" = "n" ]; then
-
- echo libz_root := $root >>$1
- echo libz_type := $type >>$1
-
-fi
diff --git a/xsd/build/import/libz/rules.make b/xsd/build/import/libz/rules.make
deleted file mode 100644
index f28a280..0000000
--- a/xsd/build/import/libz/rules.make
+++ /dev/null
@@ -1,28 +0,0 @@
-# file : build/import/libz/rules.make
-# copyright : Copyright (c) 2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(dcf_root)/import/libz/%: root := $(libz_root)
-
-ifeq ($(libz_type),archive)
-
-$(dcf_root)/import/libz/z.l: $(libz_root)/libz.a
- @echo $< >$@
-else
-
-$(dcf_root)/import/libz/z.l: $(libz_root)/libz.so
- @echo $< >$@
- @echo rpath:$(root) >>$@
-endif
-
-$(dcf_root)/import/libz/z.l.cpp-options:
- @echo include: -I$(root) >$@
-
-ifndef %foreign%
-
-disfigure::
- $(call message,rm $(dcf_root)/import/libz/z.l,\
-rm -f $(dcf_root)/import/libz/z.l)
- $(call message,,rm -f $(dcf_root)/import/libz/z.l.cpp-options)
-
-endif
diff --git a/xsd/build/import/libz/stub.make b/xsd/build/import/libz/stub.make
deleted file mode 100644
index 8d0f8fb..0000000
--- a/xsd/build/import/libz/stub.make
+++ /dev/null
@@ -1,31 +0,0 @@
-# file : build/import/libz/stub.make
-# copyright : Copyright (c) 2009 Boris Kolpackov
-# license : GNU GPL v2; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/libz/configuration-rules.make,$(dcf_root))
-
-libz_installed :=
-
-$(call -include,$(dcf_root)/import/libz/configuration-dynamic.make)
-
-ifdef libz_installed
-
-ifeq ($(libz_installed),y)
-
-$(call export,l: -lz,cpp-options: )
-
-else
-
-$(call include-once,$(scf_root)/import/libz/rules.make,$(dcf_root))
-
-$(call export,\
- l: $(dcf_root)/import/libz/z.l,\
- cpp-options: $(dcf_root)/import/libz/z.l.cpp-options)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/xsd/build/import/libz/version b/xsd/build/import/libz/version
deleted file mode 100644
index 6e8bf73..0000000
--- a/xsd/build/import/libz/version
+++ /dev/null
@@ -1 +0,0 @@
-0.1.0
diff --git a/xsd/build/xsd/parser/xsd-cxx.make b/xsd/build/xsd/parser/xsd-cxx.make
deleted file mode 100644
index 185718f..0000000
--- a/xsd/build/xsd/parser/xsd-cxx.make
+++ /dev/null
@@ -1,76 +0,0 @@
-# file : build/xsd/parser/xsd-cxx.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#@@ Need to use extensions from cxx config.
-#
-
-# C++/Parser mapping.
-#
-ifeq ($(xsd_parser_skel_suffix),)
-xsd_parser_skel_suffix := -pskel
-endif
-
-xsd_parser_pattern := \
-$(out_base)/%$(xsd_parser_skel_suffix).cxx \
-$(out_base)/%$(xsd_parser_skel_suffix).hxx \
-$(out_base)/%$(xsd_parser_skel_suffix).ixx
-
-ifneq ($(xsd_parser_impl_suffix),)
-xsd_parser_pattern += \
-$(out_base)/%$(xsd_parser_impl_suffix).cxx \
-$(out_base)/%$(xsd_parser_impl_suffix).hxx \
-$(out_base)/%-driver.cxx
-endif
-
-
-$(xsd_parser_pattern): xsd := xsd
-$(xsd_parser_pattern): xsd_command := cxx-parser
-
-ops := --generate-inline --skel-file-suffix $(xsd_parser_skel_suffix)
-
-ifneq ($(xsd_pimpl_suffix),)
-ops += --impl-file-suffix $(xsd_parser_impl_suffix)
-endif
-
-$(xsd_parser_pattern): xsd_options := $(ops)
-
-
-.PRECIOUS: $(xsd_parser_pattern)
-
-ifeq ($(out_base),$(src_base))
-
-$(xsd_parser_pattern): $(src_base)/%.xsd
- $(call message,xsd $<,$(xsd) $(xsd_command) $(xsd_options) --output-dir $(dir $@) $<)
-
-else
-
-$(xsd_parser_pattern): $(src_base)/%.xsd | $$(dir $$@).
- $(call message,xsd $<,$(xsd) $(xsd_command) $(xsd_options) --output-dir $(dir $@) $<)
-
-$(xsd_parser_pattern): $(out_base)/%.xsd | $$(dir $$@).
- $(call message,xsd $<,$(xsd) $(xsd_command) $(xsd_options) --output-dir $(dir $@) $<)
-
-endif
-
-
-.PHONY: $(out_base)/%$(xsd_parser_skel_suffix).cxx.xsd.clean
-
-$(out_base)/%$(xsd_parser_skel_suffix).cxx.xsd.clean:
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.xsd.clean=.cxx))
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.xsd.clean=.hxx))
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.xsd.clean=.ixx))
-
-ifneq ($(xsd_parser_impl_suffix),)
-.PHONY: $(out_base)/%$(xsd_parser_impl_suffix).cxx.xsd.clean
-
-$(out_base)/%$(xsd_parser_impl_suffix).cxx.xsd.clean:
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.xsd.clean=.cxx))
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.xsd.clean=.hxx))
- $(call message,rm $$1,rm -f $$1,$(out_base)/$*-driver.cxx)
-endif
-
-# Reset the config variables so they won't take effect in other places.
-#
-xsd_parser_skel_suffix :=
-xsd_parser_impl_suffix :=
diff --git a/xsd/build/xsd/tree/xsd-cxx.make b/xsd/build/xsd/tree/xsd-cxx.make
deleted file mode 100644
index 0411820..0000000
--- a/xsd/build/xsd/tree/xsd-cxx.make
+++ /dev/null
@@ -1,47 +0,0 @@
-# file : build/xsd/tree/xsd-cxx.make
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#@@ Need to use extensions from cxx config.
-#
-
-# C++/Tree mapping.
-#
-xsd_tree_pattern := \
-$(out_base)/%$(xsd_tree_suffix).cxx \
-$(out_base)/%$(xsd_tree_suffix).hxx \
-$(out_base)/%$(xsd_tree_suffix).ixx \
-$(out_base)/%$(xsd_tree_suffix)-fwd.hxx
-
-$(xsd_tree_pattern): xsd := xsd
-$(xsd_tree_pattern): xsd_command := cxx-tree
-$(xsd_tree_pattern): xsd_options := --generate-inline
-
-.PRECIOUS: $(xsd_tree_pattern)
-
-ifeq ($(out_base),$(src_base))
-
-$(xsd_tree_pattern): $(src_base)/%.xsd
- $(call message,xsd $<,$(xsd) $(xsd_command) $(xsd_options) --output-dir $(dir $@) $<)
-
-else
-
-$(xsd_tree_pattern): $(src_base)/%.xsd | $$(dir $$@).
- $(call message,xsd $<,$(xsd) $(xsd_command) $(xsd_options) --output-dir $(dir $@) $<)
-
-$(xsd_tree_pattern): $(out_base)/%.xsd | $$(dir $$@).
- $(call message,xsd $<,$(xsd) $(xsd_command) $(xsd_options) --output-dir $(dir $@) $<)
-
-endif
-
-.PHONY: $(out_base)/%$(xsd_tree_suffix).cxx.xsd.clean
-
-$(out_base)/%$(xsd_tree_suffix).cxx.xsd.clean:
- $(call message,rm $(@:.cxx.xsd.clean=.cxx),rm -f $(@:.cxx.xsd.clean=.cxx))
- $(call message,rm $(@:.cxx.xsd.clean=.hxx),rm -f $(@:.cxx.xsd.clean=.hxx))
- $(call message,rm $(@:.cxx.xsd.clean=.ixx),rm -f $(@:.cxx.xsd.clean=.ixx))
- $(call message,rm $(@:.cxx.xsd.clean=-fwd.hxx),rm -f $(@:.cxx.xsd.clean=-fwd.hxx))
-
-# Reset the config variables so they won't take effect in other places.
-#
-xsd_tree_suffix :=
diff --git a/xsd/buildfile b/xsd/buildfile
new file mode 100644
index 0000000..d4e7af5
--- /dev/null
+++ b/xsd/buildfile
@@ -0,0 +1,121 @@
+# file : xsd/buildfile
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+import libs = libxsd-frontend%lib{xsd-frontend}
+import libs += libcutl%lib{cutl}
+import libs += libxerces-c%lib{xerces-c}
+
+ops = options cxx/options cxx/parser/options cxx/tree/options
+
+./: exe{xsd}: {hxx ixx txx cxx}{** -version -{$ops} -pregenerated/**} \
+ {hxx}{version} \
+ $libs
+
+# Target metadata, see also --build2-metadata in xsd.cxx.
+#
+# Note that xsd does not query any environment variables.
+#
+exe{xsd}:
+{
+ export.metadata = 1 xsd
+ xsd.name = [string] xsd
+ xsd.version = [string] $version
+ xsd.checksum = [string] $version
+}
+
+hxx{version}: in{version} $src_root/manifest
+
+## Consumption build ($develop == false).
+#
+
+# Use pregenerated versions in the consumption build.
+#
+exe{xsd}: pregenerated/{hxx ixx cxx}{**}: include = (!$develop)
+
+if! $develop
+ cxx.poptions =+ "-I($src_base/pregenerated)" # Note: must come first.
+
+# Distribute pregenerated versions only in the consumption build.
+#
+pregenerated/{hxx ixx cxx}{*}: dist = (!$develop)
+
+#
+##
+
+## Development build ($develop == true).
+#
+
+exe{xsd}: {hxx ixx cxx}{$ops}: include = $develop
+
+if $develop
+ import! [metadata] cli = cli%exe{cli}
+
+# In the development build distribute regenerated {hxx ixx cxx}{options},
+# remapping their locations to the paths of the pregenerated versions (which
+# are only distributed in the consumption build; see above). This way we make
+# sure that the distributed files are always up-to-date.
+#
+for f: $ops
+{
+ d = $directory($f) # empty, cxx/, etc.
+
+ <{hxx ixx cxx}{$f}>: cli{$f}
+ {
+ dist = ($develop ? $relative([dir_path] "pregenerated/xsd/$d", $d) : false)
+
+ # Symlink the generated code in src for convenience of development.
+ #
+ backlink = true
+ }
+}
+
+<hxx{~'/(.*)/'} ixx{~'/\1/'} cxx{~'/\1/'}>: cli{~'/\1/'} $cli
+%
+if $develop
+{{
+ t = $path($>[0]).t
+
+ depdb dyndep --byproduct --file $t
+
+ h = $path($>[0])
+ i = $path($>[1])
+ c = $path($>[2])
+
+ d = $directory($h)
+ p = $string($leaf($d, $out_root)) # xsd, xsd/cxx, etc
+
+ options = --std c++11 -I $src_root --include-prefix $p \
+ --guard-prefix $regex.replace($ucase($p), '[/\\]', '_') \
+ --generate-specifier --generate-file-scanner \
+ --suppress-undocumented --ostream-type ::std::wostream \
+ --exclude-base --include-with-brackets --option-length 28 \
+ --cxx-prologue '#include <xsd/options-parser.hxx>'
+
+ $cli $options --generate-dep --dep-file $t -o $d $path($<[0])
+
+ # If the result differs from the pregenerated version, copy it over.
+ #
+ d = [dir_path] $src_base/pregenerated/$p
+
+ dh = $d/$leaf($h)
+ di = $d/$leaf($i)
+ dc = $d/$leaf($c)
+
+ if diff $dh $h >- && \
+ diff $di $i >- && \
+ diff $dc $c >-
+ exit
+ end
+
+ cp $h $dh
+ cp $i $di
+ cp $c $dc
+}}
+
+#
+##
+
+# Pass the copyright notice extracted from the LICENSE file.
+#
+obj{xsd cxx/parser/generator cxx/tree/generator}: \
+ cxx.poptions += -DXSD_COPYRIGHT=\"$copyright\"
diff --git a/xsd/cxx/elements.cxx b/xsd/cxx/elements.cxx
new file mode 100644
index 0000000..02a768e
--- /dev/null
+++ b/xsd/cxx/elements.cxx
@@ -0,0 +1,1365 @@
+// file : xsd/cxx/elements.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/elements.hxx>
+
+#include <cctype> // std::toupper
+#include <memory>
+#include <sstream>
+#include <fstream>
+#include <cassert>
+#include <iostream>
+
+using std::wcerr;
+using std::endl;
+
+namespace CXX
+{
+ //
+ //
+ wchar_t
+ upcase (wchar_t c)
+ {
+ return std::toupper (c);
+ }
+
+ namespace
+ {
+ wchar_t const* keywords[] = {
+ L"NULL",
+ L"and",
+ L"asm",
+ L"auto",
+ L"bitand",
+ L"bitor",
+ L"bool",
+ L"break",
+ L"case",
+ L"catch",
+ L"char",
+ L"class",
+ L"compl",
+ L"const",
+ L"const_cast",
+ L"continue",
+ L"default",
+ L"delete",
+ L"do",
+ L"double",
+ L"dynamic_cast",
+ L"else",
+ L"end_eq",
+ L"enum",
+ L"explicit",
+ L"export",
+ L"extern",
+ L"false",
+ L"float",
+ L"for",
+ L"friend",
+ L"goto",
+ L"if",
+ L"inline",
+ L"int",
+ L"long",
+ L"mutable",
+ L"namespace",
+ L"new",
+ L"not",
+ L"not_eq",
+ L"operator",
+ L"or",
+ L"or_eq",
+ L"private",
+ L"protected",
+ L"public",
+ L"register",
+ L"reinterpret_cast",
+ L"return",
+ L"short",
+ L"signed",
+ L"sizeof",
+ L"static",
+ L"static_cast",
+ L"struct",
+ L"switch",
+ L"template",
+ L"this",
+ L"throw",
+ L"true",
+ L"try",
+ L"typedef",
+ L"typeid",
+ L"typename",
+ L"union",
+ L"unsigned",
+ L"using",
+ L"virtual",
+ L"void",
+ L"volatile",
+ L"wchar_t",
+ L"while",
+ L"xor",
+ L"xor_eq"
+ };
+
+ // Note: excluding "identifiers with special meaning" in certain contexts
+ // ("final", "override") since they shouldn't cause any issues.
+ //
+ wchar_t const* keywords_cxx11[] = {
+ L"alignas",
+ L"alignof",
+ L"char16_t",
+ L"char32_t",
+ L"constexpr",
+ L"decltype",
+ L"noexcept",
+ L"nullptr",
+ L"static_assert",
+ L"thread_local"
+ };
+
+ // Note: excluding "identifiers with special meaning" in certain contexts
+ // ("import", "module") since they shouldn't cause any issues.
+ //
+ wchar_t const* keywords_cxx20[] = {
+ L"char8_t",
+ L"concept",
+ L"consteval",
+ L"constinit",
+ L"co_await",
+ L"co_return",
+ L"co_yield",
+ L"requires"
+ };
+ }
+
+ // Context
+ //
+
+ Context::
+ Context (std::wostream& o,
+ SemanticGraph::Schema& root,
+ SemanticGraph::Path const& path,
+ options_type const& ops,
+ StringLiteralMap const* string_literal_map_)
+ : os (o),
+ schema_root (root),
+ schema_path (schema_path_),
+ options (ops),
+ std (ops.std ()),
+ char_type (char_type_),
+ char_encoding (char_encoding_),
+ L (L_),
+ string_type (string_type_),
+ auto_ptr (auto_ptr_),
+ string_literal_map (string_literal_map_),
+ type_exp (type_exp_),
+ inst_exp (inst_exp_),
+ inl (inl_),
+ ns_mapping_cache (ns_mapping_cache_),
+ schema_path_ (path),
+ xs_ns_ (0),
+ char_type_ (ops.char_type ()),
+ char_encoding_ (ops.char_encoding ()),
+ L_ (char_type == L"wchar_t" ? L"L" : L""),
+ inl_ (ops.generate_inline () ? L"inline\n" : L""),
+ cxx_id_expr_ (L"^(::)?([a-zA-Z_]\\w*)(::[a-zA-Z_]\\w*)*$"),
+ cxx_id_expr (cxx_id_expr_),
+ urn_mapping_ (L"#^urn.*:([a-zA-Z_].*)$#$1#"),
+ urn_mapping (urn_mapping_),
+ nsr_mapping (nsr_mapping_),
+ nsm_mapping (nsm_mapping_),
+ include_mapping (include_mapping_),
+ reserved_name_map (reserved_name_map_),
+ keyword_set (keyword_set_)
+ {
+ // Export symbol.
+ //
+ {
+ String es (ops.export_symbol ());
+ type_exp_ = es ? es + L" " : es;
+ inst_exp_ = es ? es + L"\n" : es;
+ }
+
+ // Resolve and cache XML Schema namespace.
+ //
+ {
+ SemanticGraph::Nameable* n;
+
+ if (schema_root.names_begin ()->name () ==
+ L"http://www.w3.org/2001/XMLSchema")
+ {
+ // schema_root is the XML Schema itself.
+ //
+ n = &schema_root.names_begin ()->named ();
+ }
+ else
+ {
+ // Otherwise, the first used schema is implied XML Schema.
+ //
+ SemanticGraph::Uses& u = *schema_root.uses_begin ();
+ assert (u.is_a<SemanticGraph::Implies> ());
+ n = &u.schema ().names_begin ()->named ();
+ }
+
+ xs_ns_ = dynamic_cast<SemanticGraph::Namespace*> (n);
+ }
+
+ // String type.
+ //
+ if (char_type == L"char")
+ string_type_ = L"::std::string";
+ else if (char_type == L"wchar_t")
+ string_type_ = L"::std::wstring";
+ else
+ string_type_ = L"::std::basic_string< " + char_type + L" >";
+
+ // Automatic pointer type.
+ //
+ auto_ptr_ = std >= cxx_version::cxx11
+ ? "::std::unique_ptr"
+ : "::std::auto_ptr";
+
+ // Default encoding.
+ //
+ if (!char_encoding)
+ {
+ if (char_type == L"char")
+ char_encoding = L"utf8";
+ else
+ char_encoding = L"auto";
+ }
+
+ // Default mapping.
+ //
+ nsr_mapping_.push_back (
+ Regex (L"#^.* (.*?/)??" L"(([a-zA-Z_]\\w*)(/[a-zA-Z_]\\w*)*)/?$#$2#"));
+ nsr_mapping_.push_back (
+ Regex (L"#^.* http://www\\.w3\\.org/2001/XMLSchema$#xml_schema#"));
+
+ // Custom regex mapping.
+ //
+ for (NarrowStrings::const_iterator i (ops.namespace_regex ().begin ()),
+ e (ops.namespace_regex ().end ()); i != e; ++i)
+ {
+ nsr_mapping_.push_back (Regex (String (*i)));
+ }
+
+ // Custom direct mapping.
+ //
+ for (NarrowStrings::const_iterator i (ops.namespace_map ().begin ()),
+ e (ops.namespace_map ().end ()); i != e; ++i)
+ {
+ String s (*i);
+
+ // Split the string in two parts at the last '='.
+ //
+ size_t pos (s.rfind ('='));
+
+ if (pos == String::npos)
+ throw InvalidNamespaceMapping (s, "delimiter ('=') not found");
+
+ // Empty xml_ns designates the no-namespace case.
+ //
+ String xml_ns (s, 0, pos);
+ String cxx_ns (s, pos + 1);
+
+ if (!cxx_ns.empty () && !cxx_id_expr.match (cxx_ns))
+ throw InvalidNamespaceMapping (s, "invalid C++ identifier");
+
+ nsm_mapping_[xml_ns] = cxx_ns;
+ }
+
+ // Include path regex
+ //
+ for (NarrowStrings::const_iterator i (ops.include_regex ().begin ()),
+ e (ops.include_regex ().end ()); i != e; ++i)
+ {
+ include_mapping_.push_back (Regex (String (*i)));
+ }
+
+ // Reserved names.
+ //
+ for (NarrowStrings::const_iterator i (ops.reserved_name ().begin ()),
+ e (ops.reserved_name ().end ()); i != e; ++i)
+ {
+ String s (*i);
+
+ // Split the string in two parts at '='.
+ //
+ size_t pos (s.find ('='));
+
+ if (pos == String::npos)
+ reserved_name_map_[s] = L"";
+ else
+ reserved_name_map_[String (s, 0, pos)] = String (s, pos + 1);
+ }
+
+ // Populate the keyword set.
+ //
+ for (size_t i (0); i < sizeof (keywords) / sizeof (wchar_t*); ++i)
+ keyword_set_.insert (keywords[i]);
+
+ if (std >= cxx_version::cxx11)
+ {
+ for (size_t i (0); i < sizeof (keywords_cxx11) / sizeof (wchar_t*); ++i)
+ keyword_set_.insert (keywords_cxx11[i]);
+ }
+
+ if (std >= cxx_version::cxx20)
+ {
+ for (size_t i (0); i < sizeof (keywords_cxx20) / sizeof (wchar_t*); ++i)
+ keyword_set_.insert (keywords_cxx20[i]);
+ }
+
+ }
+
+ String Context::
+ ns_name (SemanticGraph::Namespace& ns)
+ {
+ using SemanticGraph::Schema;
+ using SemanticGraph::Includes;
+ using SemanticGraph::Imports;
+ using SemanticGraph::Implies;
+ using SemanticGraph::Sources;
+
+ String tmp;
+ MapMapping::const_iterator i (nsm_mapping.find (ns.name ()));
+
+ if (i != nsm_mapping.end ())
+ {
+ tmp = i->second;
+ }
+ else
+ {
+ SemanticGraph::Path path;
+ Schema& schema (dynamic_cast<Schema&> (ns.scope ()));
+
+ if (schema.used_p ())
+ {
+ // Here we need to detect a special multi-schema compilation
+ // case where the root schemas are imported into a special
+ // schema that doesn't have a namespace.
+ //
+ SemanticGraph::Uses& u (*schema.used_begin ());
+ SemanticGraph::Schema& s (u.user ());
+
+ if (s.names_begin () != s.names_end ())
+ path = u.path ();
+ }
+ else
+ path = schema_path;
+
+ String pair;
+
+ if (!path.empty ())
+ {
+ path.normalize ();
+
+ // Try to use the portable representation of the path. If that
+ // fails, fall back to the native representation.
+ //
+ try
+ {
+ pair = path.posix_string ();
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
+ pair = path.string ();
+ }
+ }
+
+ pair += L' ' + ns.name ();
+
+ // Check cache first
+ //
+ MappingCache::const_iterator i (ns_mapping_cache.find (pair));
+
+ if (i != ns_mapping_cache.end ())
+ {
+ tmp = i->second;
+ }
+ else
+ {
+ bool trace (options.namespace_regex_trace ());
+
+ if (trace)
+ wcerr << "namespace: '" << pair << "'" << endl;
+
+ bool found (false);
+ Regex colon (L"#/#::#");
+
+ for (RegexMapping::const_reverse_iterator e (nsr_mapping.rbegin ());
+ e != nsr_mapping.rend (); ++e)
+ {
+ if (trace)
+ wcerr << "try: '" << e->regex () << "' : ";
+
+ if (e->match (pair))
+ {
+ tmp = e->replace (pair);
+ tmp = colon.replace (tmp); // replace `/' with `::'
+
+ // Check the result.
+ //
+ found = cxx_id_expr.match (tmp);
+
+ if (trace)
+ wcerr << "'" << tmp << "' : ";
+ }
+
+ if (trace)
+ wcerr << (found ? '+' : '-') << endl;
+
+ if (found)
+ break;
+ }
+
+ if (!found)
+ {
+ String const& n (ns.name ());
+
+ // Check if the name is valid by itself.
+ //
+ if (n.empty ())
+ {
+ // Empty name denotes a no-namespace case.
+ //
+ tmp = n;
+ }
+ else
+ {
+ tmp = colon.replace (n); // replace `/' with `::'
+
+ if (!cxx_id_expr.match (tmp))
+ {
+ // See if this is a urn-style namespace.
+ //
+ if (urn_mapping.match (n))
+ {
+ Regex filter (L"#[.:-]#_#");
+ tmp = urn_mapping.replace (n);
+ tmp = filter.replace (tmp);
+
+ if (!cxx_id_expr.match (tmp))
+ throw NoNamespaceMapping (
+ ns.file (), ns.line (), ns.column (), ns.name ());
+ }
+ else
+ throw NoNamespaceMapping (
+ ns.file (), ns.line (), ns.column (), ns.name ());
+ }
+ }
+ }
+
+ // Add the mapping to the cache.
+ //
+ ns_mapping_cache[pair] = tmp;
+ }
+ }
+
+
+ // Parse resulting namespace string and id() each name.
+ //
+ String r;
+ String::size_type b (0), e;
+
+ do
+ {
+ e = tmp.find (L"::", b);
+
+ String name (tmp, b, e == tmp.npos ? e : e - b);
+
+ if (!name.empty ())
+ r += L"::" + escape (name);
+
+ b = e;
+
+ if (b == tmp.npos)
+ break;
+
+ b += 2;
+
+ } while (true);
+
+ return r;
+ }
+
+ SemanticGraph::Namespace& Context::
+ xs_ns ()
+ {
+ return *xs_ns_;
+ }
+
+ String Context::
+ xs_ns_name ()
+ {
+ return ns_name (*xs_ns_);
+ }
+
+ SemanticGraph::Namespace& Context::
+ namespace_ (SemanticGraph::Nameable& n)
+ {
+ // The basic idea goes like this: go up Names edges until you
+ // reach Namespace. There are, however, anonymous types which
+ // need special handling. In the case of an anonymous type we
+ // will go up the first Belongs edge (because the first edge
+ // is where the type was defined.
+ //
+
+ if (n.named_p ())
+ {
+ SemanticGraph::Scope& s (n.scope ());
+
+ SemanticGraph::Namespace* ns (
+ dynamic_cast<SemanticGraph::Namespace*> (&n));
+
+ return ns ? *ns : namespace_ (s);
+ }
+ else
+ {
+ SemanticGraph::Type& t (dynamic_cast<SemanticGraph::Type&> (n));
+
+ SemanticGraph::Belongs& b (*t.classifies_begin ());
+
+ return namespace_ (b.instance ());
+ }
+ }
+
+ String Context::
+ xml_ns_name (SemanticGraph::Nameable& n)
+ {
+ return namespace_ (n).name ();
+ }
+
+ String Context::
+ fq_name (SemanticGraph::Nameable& n, char const* name_key)
+ {
+ using namespace SemanticGraph;
+
+ String r;
+
+ if (dynamic_cast<Schema*> (&n))
+ {
+ return L""; // Map to global namespace.
+ }
+ else if (SemanticGraph::Namespace* ns =
+ dynamic_cast<SemanticGraph::Namespace*> (&n))
+ {
+ r = ns_name (*ns);
+ }
+ else
+ {
+ r = fq_name (n.scope ());
+ r += L"::";
+ r += n.context ().get<String> (name_key);
+ }
+
+ return r;
+ }
+
+ SemanticGraph::Type& Context::
+ ultimate_base (SemanticGraph::Complex& c)
+ {
+ using namespace SemanticGraph;
+
+ Type* b (&c.inherits ().base ());
+
+ while (true)
+ {
+ Complex* cb (dynamic_cast<Complex*> (b));
+
+ if (cb != 0 && cb->inherits_p ())
+ {
+ b = &cb->inherits ().base ();
+ continue;
+ }
+
+ break;
+ }
+
+ return *b;
+ }
+
+ String Context::
+ escape (String const& name)
+ {
+ String r;
+ size_t n (name.size ());
+
+ // In most common cases we will have that many chars.
+ //
+ r.reserve (n);
+
+ for (size_t i (0); i < n; ++i)
+ {
+ bool first (i == 0);
+
+ unsigned int u (unicode_char (name, i)); // May advance i.
+
+ if (first)
+ {
+ if (!((u >= 'a' && u <= 'z') ||
+ (u >= 'A' && u <= 'Z') ||
+ u == '_'))
+ r = (u >= '0' && u <= '9') ? L"cxx_" : L"cxx";
+ }
+
+ if (!((u >= 'a' && u <= 'z') ||
+ (u >= 'A' && u <= 'Z') ||
+ (u >= '0' && u <= '9') ||
+ u == '_'))
+ r.push_back ('_');
+ else
+ r.push_back (static_cast<wchar_t> (u));
+ }
+
+ if (r.empty ())
+ r = L"cxx";
+
+ // Custom reserved words.
+ //
+ ReservedNameMap::const_iterator i (reserved_name_map.find (r));
+
+ if (i != reserved_name_map.end ())
+ {
+ if (i->second)
+ return i->second;
+ else
+ r += L'_';
+ }
+
+ // Keywords
+ //
+ if (keyword_set.find (r) != keyword_set.end ())
+ {
+ r += L'_';
+
+ // Re-run custom words.
+ //
+ i = reserved_name_map.find (r);
+
+ if (i != reserved_name_map.end ())
+ {
+ if (i->second)
+ return i->second;
+ else
+ r += L'_';
+ }
+ }
+
+ return r;
+ }
+
+ // String escaping.
+ //
+
+ String
+ charlit (unsigned int u)
+ {
+ String r ("\\x");
+ bool lead (true);
+
+ for (int i (7); i >= 0; --i)
+ {
+ unsigned int x ((u >> (i * 4)) & 0x0F);
+
+ if (lead)
+ {
+ if (x == 0)
+ continue;
+
+ lead = false;
+ }
+
+ r += x < 10 ? ('0' + x) : ('A' + x - 10);
+ }
+
+ return r;
+ }
+
+ String
+ strlit_ascii (String const& str)
+ {
+ String r;
+ size_t n (str.size ());
+
+ // In most common cases we will have that many chars.
+ //
+ r.reserve (n + 2);
+
+ r += '"';
+
+ bool escape (false);
+
+ for (size_t i (0); i < n; ++i)
+ {
+ unsigned int u (Context::unicode_char (str, i)); // May advance i.
+
+ // [128 - ] - unrepresentable
+ // 127 - \x7F
+ // [32 - 126] - as is
+ // [0 - 31] - \X or \xXX
+ //
+
+ if (u < 32 || u == 127)
+ {
+ switch (u)
+ {
+ case L'\n':
+ {
+ r += L"\\n";
+ break;
+ }
+ case L'\t':
+ {
+ r += L"\\t";
+ break;
+ }
+ case L'\v':
+ {
+ r += L"\\v";
+ break;
+ }
+ case L'\b':
+ {
+ r += L"\\b";
+ break;
+ }
+ case L'\r':
+ {
+ r += L"\\r";
+ break;
+ }
+ case L'\f':
+ {
+ r += L"\\f";
+ break;
+ }
+ case L'\a':
+ {
+ r += L"\\a";
+ break;
+ }
+ default:
+ {
+ r += charlit (u);
+ escape = true;
+ break;
+ }
+ }
+ }
+ else if (u < 127)
+ {
+ if (escape)
+ {
+ // Close and open the string so there are no clashes.
+ //
+ r += '"';
+ r += '"';
+
+ escape = false;
+ }
+
+ switch (u)
+ {
+ case L'"':
+ {
+ r += L"\\\"";
+ break;
+ }
+ case L'\\':
+ {
+ r += L"\\\\";
+ break;
+ }
+ default:
+ {
+ r += static_cast<wchar_t> (u);
+ break;
+ }
+ }
+ }
+ else
+ {
+ // Unrepresentable character.
+ //
+ throw UnrepresentableCharacter (str, i + 1);
+ }
+ }
+
+ r += '"';
+
+ return r;
+ }
+
+ const unsigned int utf8_first_char_mask[5] =
+ {
+ 0x00, 0x00, 0xC0, 0xE0, 0xF0
+ };
+
+ String
+ strlit_utf8 (String const& str)
+ {
+ String r;
+ size_t n (str.size ());
+
+ // In most common cases we will have that many chars.
+ //
+ r.reserve (n + 2);
+
+ r += '"';
+
+ bool escape (false);
+
+ for (size_t i (0); i < n; ++i)
+ {
+ unsigned int u (Context::unicode_char (str, i)); // May advance i.
+
+ // [128 - ] - UTF-8
+ // 127 - \x7F
+ // [32 - 126] - as is
+ // [0 - 31] - \X or \xXX
+ //
+
+ if (u < 32 || u == 127)
+ {
+ switch (u)
+ {
+ case L'\n':
+ {
+ r += L"\\n";
+ break;
+ }
+ case L'\t':
+ {
+ r += L"\\t";
+ break;
+ }
+ case L'\v':
+ {
+ r += L"\\v";
+ break;
+ }
+ case L'\b':
+ {
+ r += L"\\b";
+ break;
+ }
+ case L'\r':
+ {
+ r += L"\\r";
+ break;
+ }
+ case L'\f':
+ {
+ r += L"\\f";
+ break;
+ }
+ case L'\a':
+ {
+ r += L"\\a";
+ break;
+ }
+ default:
+ {
+ r += charlit (u);
+ escape = true;
+ break;
+ }
+ }
+ }
+ else if (u < 127)
+ {
+ if (escape)
+ {
+ // Close and open the string so there are no clashes.
+ //
+ r += '"';
+ r += '"';
+
+ escape = false;
+ }
+
+ switch (u)
+ {
+ case L'"':
+ {
+ r += L"\\\"";
+ break;
+ }
+ case L'\\':
+ {
+ r += L"\\\\";
+ break;
+ }
+ default:
+ {
+ r += static_cast<wchar_t> (u);
+ break;
+ }
+ }
+ }
+ else
+ {
+ unsigned int count (0);
+ unsigned int tmp[4];
+
+ if (u < 0x800)
+ count = 2;
+ else if (u < 0x10000)
+ count = 3;
+ else if (u < 0x110000)
+ count = 4;
+
+ switch (count)
+ {
+ case 4:
+ {
+ tmp[3] = (u | 0x80UL) & 0xBFUL;
+ u >>= 6;
+ }
+ // Fall through.
+ case 3:
+ {
+ tmp[2] = (u | 0x80UL) & 0xBFUL;
+ u >>= 6;
+ }
+ // Fall through.
+ case 2:
+ {
+ tmp[1] = (u | 0x80UL) & 0xBFUL;
+ u >>= 6;
+ }
+ // Fall through.
+ case 1:
+ {
+ tmp[0] = u | utf8_first_char_mask[count];
+ break;
+ }
+ default:
+ assert (false);
+ }
+
+ for (unsigned int j (0); j < count; ++j)
+ r += charlit (tmp[j]);
+
+ escape = true;
+ }
+ }
+
+ r += '"';
+
+ return r;
+ }
+
+ String
+ strlit_iso8859_1 (String const& str)
+ {
+ String r;
+ size_t n (str.size ());
+
+ // In most common cases we will have that many chars.
+ //
+ r.reserve (n + 2);
+
+ r += '"';
+
+ bool escape (false);
+
+ for (size_t i (0); i < n; ++i)
+ {
+ unsigned int u (Context::unicode_char (str, i)); // May advance i.
+
+ // [256 - ] - unrepresentable
+ // [127 - 255] - \xXX
+ // [32 - 126] - as is
+ // [0 - 31] - \X or \xXX
+ //
+
+ if (u < 32)
+ {
+ switch (u)
+ {
+ case L'\n':
+ {
+ r += L"\\n";
+ break;
+ }
+ case L'\t':
+ {
+ r += L"\\t";
+ break;
+ }
+ case L'\v':
+ {
+ r += L"\\v";
+ break;
+ }
+ case L'\b':
+ {
+ r += L"\\b";
+ break;
+ }
+ case L'\r':
+ {
+ r += L"\\r";
+ break;
+ }
+ case L'\f':
+ {
+ r += L"\\f";
+ break;
+ }
+ case L'\a':
+ {
+ r += L"\\a";
+ break;
+ }
+ default:
+ {
+ r += charlit (u);
+ escape = true;
+ break;
+ }
+ }
+ }
+ else if (u < 127)
+ {
+ if (escape)
+ {
+ // Close and open the string so there are no clashes.
+ //
+ r += '"';
+ r += '"';
+
+ escape = false;
+ }
+
+ switch (u)
+ {
+ case L'"':
+ {
+ r += L"\\\"";
+ break;
+ }
+ case L'\\':
+ {
+ r += L"\\\\";
+ break;
+ }
+ default:
+ {
+ r += static_cast<wchar_t> (u);
+ break;
+ }
+ }
+ }
+ else if (u < 256)
+ {
+ r += charlit (u);
+ escape = true;
+ }
+ else
+ {
+ // Unrepresentable character.
+ //
+ throw UnrepresentableCharacter (str, i + 1);
+ }
+ }
+
+ r += '"';
+
+ return r;
+ }
+
+ String
+ strlit_utf32 (String const& str)
+ {
+ String r;
+ size_t n (str.size ());
+
+ // In most common cases we will have that many chars.
+ //
+ r.reserve (n + 3);
+
+ r += L"L\"";
+
+ bool escape (false);
+
+ for (size_t i (0); i < n; ++i)
+ {
+ unsigned int u (Context::unicode_char (str, i)); // May advance i.
+
+ // [128 - ] - \xUUUUUUUU
+ // 127 - \x7F
+ // [32 - 126] - as is
+ // [0 - 31] - \X or \xXX
+ //
+
+ if (u < 32 || u == 127)
+ {
+ switch (u)
+ {
+ case L'\n':
+ {
+ r += L"\\n";
+ break;
+ }
+ case L'\t':
+ {
+ r += L"\\t";
+ break;
+ }
+ case L'\v':
+ {
+ r += L"\\v";
+ break;
+ }
+ case L'\b':
+ {
+ r += L"\\b";
+ break;
+ }
+ case L'\r':
+ {
+ r += L"\\r";
+ break;
+ }
+ case L'\f':
+ {
+ r += L"\\f";
+ break;
+ }
+ case L'\a':
+ {
+ r += L"\\a";
+ break;
+ }
+ default:
+ {
+ r += charlit (u);
+ escape = true;
+ break;
+ }
+ }
+ }
+ else if (u < 127)
+ {
+ if (escape)
+ {
+ // Close and open the string so there are no clashes. C++11
+ // requires a space between " and L.
+ //
+ r += L"\" L\"";
+ escape = false;
+ }
+
+ switch (u)
+ {
+ case L'"':
+ {
+ r += L"\\\"";
+ break;
+ }
+ case L'\\':
+ {
+ r += L"\\\\";
+ break;
+ }
+ default:
+ {
+ r += static_cast<wchar_t> (u);
+ break;
+ }
+ }
+ }
+ else
+ {
+ r += charlit (u);
+ escape = true;
+ }
+ }
+
+ r += '"';
+
+ return r;
+ }
+
+ String Context::
+ strlit (String const& str)
+ {
+ // First see if we have a custom mapping.
+ //
+ assert (string_literal_map != 0);
+ StringLiteralMap::const_iterator i (string_literal_map->find (str));
+
+ if (i != string_literal_map->end ())
+ return i->second;
+
+ if (char_type == L"char")
+ {
+ if (char_encoding == L"utf8")
+ return strlit_utf8 (str);
+ else if (char_encoding == L"iso8859-1")
+ return strlit_iso8859_1 (str);
+ else
+ {
+ // For LCP, custom, and other unknown encodings, use ASCII.
+ //
+ return strlit_ascii (str);
+ }
+ }
+ else
+ return strlit_utf32 (str);
+ }
+
+ String Context::
+ comment (String const& str)
+ {
+ String r;
+
+ wchar_t const* s (str.c_str ());
+ size_t size (str.size ());
+
+ // In most common cases we will have that many chars.
+ //
+ r.reserve (size);
+
+ for (wchar_t const* p (s); p < s + size; ++p)
+ {
+ unsigned int u (unicode_char (p)); // May advance p.
+
+ // We are going to treat \v, \f and \n as unrepresentable
+ // here even though they can be present in C++ source code.
+ //
+ if (u > 127 || (u < 32 && u != '\t'))
+ r += L'?';
+ else
+ r += static_cast<wchar_t> (u);
+ }
+
+ return r;
+ }
+
+ String Context::
+ process_include_path (String const& name) const
+ {
+ String path (String (options.include_prefix ()) + name);
+ bool trace (options.include_regex_trace ());
+
+ if (trace)
+ wcerr << "include: '" << path << "'" << endl;
+
+ String r;
+ bool found (false);
+
+ for (RegexMapping::const_reverse_iterator e (include_mapping.rbegin ());
+ e != include_mapping.rend (); ++e)
+ {
+ if (trace)
+ wcerr << "try: '" << e->regex () << "' : ";
+
+ if (e->match (path))
+ {
+ r = e->replace (path);
+ found = true;
+
+ if (trace)
+ wcerr << "'" << r << "' : ";
+ }
+
+ if (trace)
+ wcerr << (found ? '+' : '-') << endl;
+
+ if (found)
+ break;
+ }
+
+ if (!found)
+ r = path;
+
+ if (!r.empty () && r[0] != L'"' && r[0] != L'<')
+ {
+ wchar_t op (options.include_with_brackets () ? L'<' : L'"');
+ wchar_t cl (options.include_with_brackets () ? L'>' : L'"');
+ r = op + r + cl;
+ }
+
+ return r;
+ }
+
+ // Namespace
+ //
+
+ void Namespace::
+ pre (Type& n)
+ {
+ String ns (ctx_.ns_name (n));
+
+ String::size_type b (0), e;
+
+ if (st_)
+ st_->enter (n, L"", ns ? false : true);
+
+ do
+ {
+ e = ns.find (L"::", b);
+
+ String name (ns, b, e == ns.npos ? e : e - b);
+
+ if (!name.empty ())
+ {
+ if (st_)
+ st_->enter (n, name, e == ns.npos);
+
+ ctx_.os << "namespace " << name << "{";
+ }
+
+ b = e;
+
+ if (b == ns.npos)
+ break;
+
+ b += 2;
+
+ } while (true);
+ }
+
+ void Namespace::
+ post (Type& n)
+ {
+ String ns (ctx_.ns_name (n));
+
+ String::size_type b (0), e;
+
+ do
+ {
+ e = ns.find (L"::", b);
+
+ String name (ns, b, e == ns.npos ? e : e - b);
+
+ if (!name.empty ())
+ {
+ ctx_.os << "}";
+
+ if (st_)
+ st_->leave ();
+ }
+
+
+ b = e;
+
+ if (b == ns.npos)
+ break;
+
+ b += 2;
+
+ }
+ while (true);
+
+ if (st_)
+ st_->leave ();
+ }
+}
diff --git a/xsd/cxx/elements.hxx b/xsd/cxx/elements.hxx
new file mode 100644
index 0000000..62ba97c
--- /dev/null
+++ b/xsd/cxx/elements.hxx
@@ -0,0 +1,626 @@
+// file : xsd/cxx/elements.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_ELEMENTS_HXX
+#define XSD_CXX_ELEMENTS_HXX
+
+#include <set>
+#include <map>
+#include <vector>
+#include <ostream>
+
+#include <libcutl/re.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/types.hxx>
+#include <xsd/elements.hxx>
+
+#include <xsd/cxx/options.hxx>
+#include <xsd/cxx/literal-map.hxx>
+
+namespace CXX
+{
+ using std::endl;
+
+ // On some platforms std::toupper can be something other than a
+ // function with C++ linkage.
+ //
+ wchar_t
+ upcase (wchar_t c);
+
+
+ // Exceptions.
+ //
+
+ struct UnrepresentableCharacter
+ {
+ UnrepresentableCharacter (String const& str, size_t pos)
+ : str_ (str), pos_ (pos)
+ {
+ }
+
+ String const&
+ string () const
+ {
+ return str_;
+ }
+
+ size_t
+ position () const
+ {
+ return pos_;
+ }
+
+ private:
+ String str_;
+ size_t pos_;
+ };
+
+ struct NoNamespaceMapping
+ {
+ NoNamespaceMapping (SemanticGraph::Path const& file,
+ size_t line,
+ size_t column,
+ String const& ns)
+ : file_ (file),
+ line_ (line),
+ column_ (column),
+ ns_ (ns)
+ {
+ }
+
+
+ SemanticGraph::Path const&
+ file () const
+ {
+ return file_;
+ }
+
+ size_t
+ line () const
+ {
+ return line_;
+ }
+
+ size_t
+ column () const
+ {
+ return column_;
+ }
+
+ String const&
+ ns () const
+ {
+ return ns_;
+ }
+
+ private:
+ SemanticGraph::Path file_;
+ size_t line_;
+ size_t column_;
+ String ns_;
+ };
+
+ struct InvalidNamespaceMapping
+ {
+ InvalidNamespaceMapping (String const& mapping,
+ String const& reason)
+ : mapping_ (mapping), reason_ (reason)
+ {
+ }
+
+ String const&
+ mapping () const
+ {
+ return mapping_;
+ }
+
+ String const&
+ reason () const
+ {
+ return reason_;
+ }
+
+ private:
+ String mapping_;
+ String reason_;
+ };
+
+ //
+ //
+ class Context
+ {
+ public:
+ typedef cutl::re::wregex RegexPat;
+ typedef cutl::re::wregexsub Regex;
+ typedef std::vector<Regex> RegexMapping;
+ typedef std::map<String, String> MapMapping;
+ typedef std::map<String, String> MappingCache;
+
+ typedef std::map<String, String> ReservedNameMap;
+ typedef std::set<String> KeywordSet;
+
+ typedef CXX::options options_type;
+
+ public:
+ Context (std::wostream& o,
+ SemanticGraph::Schema& root,
+ SemanticGraph::Path const& path,
+ options_type const& ops,
+ StringLiteralMap const* custom_literals_map);
+
+ protected:
+ Context (Context& c)
+ : os (c.os),
+ schema_root (c.schema_root),
+ schema_path (c.schema_path),
+ options (c.options),
+ std (c.std),
+ char_type (c.char_type),
+ char_encoding (c.char_encoding),
+ L (c.L),
+ string_type (c.string_type),
+ auto_ptr (c.auto_ptr),
+ string_literal_map (c.string_literal_map),
+ type_exp (c.type_exp),
+ inst_exp (c.inst_exp),
+ inl (c.inl),
+ ns_mapping_cache (c.ns_mapping_cache),
+ xs_ns_ (c.xs_ns_),
+ cxx_id_expr (c.cxx_id_expr),
+ urn_mapping (c.urn_mapping),
+ nsr_mapping (c.nsr_mapping),
+ nsm_mapping (c.nsm_mapping),
+ include_mapping (c.include_mapping),
+ reserved_name_map (c.reserved_name_map),
+ keyword_set (c.keyword_set)
+ {
+ }
+
+ Context (Context& c, std::wostream& o)
+ : os (o),
+ schema_root (c.schema_root),
+ schema_path (c.schema_path),
+ options (c.options),
+ std (c.std),
+ char_type (c.char_type),
+ char_encoding (c.char_encoding),
+ L (c.L),
+ string_type (c.string_type),
+ auto_ptr (c.auto_ptr),
+ string_literal_map (c.string_literal_map),
+ type_exp (c.type_exp),
+ inst_exp (c.inst_exp),
+ inl (c.inl),
+ ns_mapping_cache (c.ns_mapping_cache),
+ xs_ns_ (c.xs_ns_),
+ cxx_id_expr (c.cxx_id_expr),
+ urn_mapping (c.urn_mapping),
+ nsr_mapping (c.nsr_mapping),
+ nsm_mapping (c.nsm_mapping),
+ include_mapping (c.include_mapping),
+ reserved_name_map (c.reserved_name_map),
+ keyword_set (c.keyword_set)
+ {
+ }
+
+ public:
+ static String
+ unclash (String const& name, String const& new_name)
+ {
+ return name == new_name ? (new_name + L'_') : new_name;
+ }
+
+ public:
+ // Return UTF-32 character starting at this position. Position is
+ // advanced by 1 if this Unicode character takes more than one
+ // underlying character.
+ //
+ static unsigned int
+ unicode_char (String const& str, size_t& pos);
+
+ static unsigned int
+ unicode_char (wchar_t const*& p);
+
+ // Escape C++ keywords and illegal characters.
+ //
+ String
+ escape (String const&);
+
+ // Create a string literal so that it can be used in C++ source
+ // code. It includes "".
+ //
+ String
+ strlit (String const&);
+
+ // Escape the string so that it can be used in C++ comment.
+ //
+ String
+ comment (String const&);
+
+ // Translate XML namespace name to a C++ identifier.
+ //
+ String
+ ns_name (SemanticGraph::Namespace&);
+
+ // XML Schema namespace.
+ //
+ SemanticGraph::Namespace&
+ xs_ns ();
+
+ // C++ namespace for XML Schema.
+ //
+ String
+ xs_ns_name ();
+
+ //
+ //
+ SemanticGraph::Namespace&
+ namespace_ (SemanticGraph::Nameable& n);
+
+ // Original XML namespace name.
+ //
+ String
+ xml_ns_name (SemanticGraph::Nameable& ns);
+
+
+ // Fully-qualified C++ name.
+ //
+ String
+ fq_name (SemanticGraph::Nameable& n, char const* name_key = "name");
+
+ public:
+ static SemanticGraph::Type&
+ ultimate_base (SemanticGraph::Complex&);
+
+ public:
+ String
+ process_include_path (String const&) const;
+
+ public:
+ static bool
+ skip (SemanticGraph::Member& m)
+ {
+ // "Subsequent" local element.
+ //
+ return !m.scope ().is_a<SemanticGraph::Namespace> () &&
+ m.context ().count ("min") == 0;
+ }
+
+ static size_t
+ min (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<size_t> ("min");
+ }
+
+ static size_t
+ min (SemanticGraph::Any const& a)
+ {
+ return a.context ().get<size_t> ("min");
+ }
+
+ static size_t
+ max (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<size_t> ("max");
+ }
+
+ static size_t
+ max (SemanticGraph::Any const& a)
+ {
+ return a.context ().get<size_t> ("max");
+ }
+
+ public:
+ // Get escaped name.
+ //
+ static String const&
+ ename (SemanticGraph::Nameable const& n)
+ {
+ return n.context ().get<String> ("name");
+ }
+
+ public:
+ std::wostream& os;
+
+ SemanticGraph::Schema& schema_root;
+ SemanticGraph::Path const& schema_path;
+
+ options_type const& options;
+
+ cxx_version std;
+
+ String& char_type;
+ String& char_encoding;
+ String& L; // string literal prefix
+ String& string_type;
+ String& auto_ptr;
+
+ StringLiteralMap const* string_literal_map;
+
+ String& type_exp;
+ String& inst_exp;
+ String& inl;
+
+ public:
+ MappingCache& ns_mapping_cache;
+
+ private:
+ SemanticGraph::Path const schema_path_;
+
+ SemanticGraph::Namespace* xs_ns_;
+
+ String char_type_;
+ String char_encoding_;
+ String L_;
+ String string_type_;
+ String auto_ptr_;
+
+ String type_exp_;
+ String inst_exp_;
+ String inl_;
+
+ private:
+ RegexPat const cxx_id_expr_;
+ RegexPat const& cxx_id_expr;
+ Regex urn_mapping_;
+ RegexMapping nsr_mapping_;
+ MapMapping nsm_mapping_;
+ Regex const& urn_mapping;
+ RegexMapping const& nsr_mapping;
+ MapMapping const& nsm_mapping;
+ MappingCache ns_mapping_cache_;
+
+ RegexMapping include_mapping_;
+ RegexMapping const& include_mapping;
+
+ ReservedNameMap const& reserved_name_map;
+ ReservedNameMap reserved_name_map_;
+
+ KeywordSet const& keyword_set;
+ KeywordSet keyword_set_;
+ };
+
+ inline unsigned int Context::
+ unicode_char (String const& str, size_t& pos)
+ {
+ if (sizeof (wchar_t) == 4)
+ {
+ return str[pos];
+ }
+ else if (sizeof (wchar_t) == 2)
+ {
+ wchar_t x (str[pos]);
+
+ if (x < 0xD800 || x > 0xDBFF)
+ return x;
+ else
+ return ((x - 0xD800) << 10) + (str[++pos] - 0xDC00) + 0x10000;
+ }
+ else
+ return 0;
+ }
+
+ inline unsigned int Context::
+ unicode_char (wchar_t const*& p)
+ {
+ if (sizeof (wchar_t) == 4)
+ {
+ return *p;
+ }
+ else if (sizeof (wchar_t) == 2)
+ {
+ wchar_t x (*p);
+
+ if (x < 0xD800 || x > 0xDBFF)
+ return x;
+ else
+ return ((x - 0xD800) << 10) + (*(++p) - 0xDC00) + 0x10000;
+ }
+ else
+ return 0;
+ }
+
+ // Sources traverser that goes into each schema only once.
+ //
+ struct Sources: Traversal::Sources
+ {
+ virtual void
+ traverse (SemanticGraph::Sources& s)
+ {
+ if (schemas_.insert (&s.schema ()).second)
+ Traversal::Sources::traverse (s);
+ }
+
+ private:
+ std::set<SemanticGraph::Schema*> schemas_;
+ };
+
+ // Usual namespace mapping.
+ //
+ struct Namespace: Traversal::Namespace
+ {
+ struct ScopeTracker
+ {
+ // First scope name if always empty (global scope). The last flag
+ // signals the last scope.
+ //
+ virtual void
+ enter (Type&, String const& name, bool last) = 0;
+
+ virtual void
+ leave () = 0;
+ };
+
+
+ Namespace (Context& c)
+ : ctx_ (c), st_ (0)
+ {
+ }
+
+ Namespace (Context& c, ScopeTracker& st)
+ : ctx_ (c), st_ (&st)
+ {
+ }
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ post (Type&);
+
+ private:
+ Context& ctx_;
+ ScopeTracker* st_;
+ };
+
+ //
+ //
+ template <typename X>
+ struct Has : X
+ {
+ Has (bool& result)
+ : result_ (result)
+ {
+ }
+
+ virtual void
+ traverse (typename X::Type&)
+ {
+ result_ = true;
+ }
+
+ private:
+ bool& result_;
+ };
+
+ // Checks if scope 'Y' names any of 'X'
+ //
+ template <typename X, typename Y>
+ bool
+ has (Y& y)
+ {
+ using SemanticGraph::Scope;
+
+ bool result (false);
+ Has<X> t (result);
+
+ for (Scope::NamesIterator i (y.names_begin ()), e (y.names_end ());
+ !result && i != e; ++i)
+ t.dispatch (i->named ());
+
+ return result;
+ }
+
+ // Checks if the compositor has any particle of 'X'
+ //
+ template <typename X>
+ bool
+ has_particle (SemanticGraph::Compositor& y)
+ {
+ using SemanticGraph::Compositor;
+
+ bool result (false);
+ Has<X> t (result);
+
+ for (Compositor::ContainsIterator i (y.contains_begin ()),
+ e (y.contains_end ()); !result && i != e; ++i)
+ {
+ SemanticGraph::Particle& p (i->particle ());
+
+ t.dispatch (p);
+
+ if (!result && p.is_a<Compositor> ())
+ result = has_particle<X> (dynamic_cast<Compositor&> (p));
+ }
+
+ return result;
+ }
+
+ // Specialization for Complex
+ //
+ template <typename X>
+ bool
+ has_particle (SemanticGraph::Complex& c)
+ {
+ return c.contains_compositor_p () &&
+ has_particle<X> (c.contains_compositor ().compositor ());
+ }
+
+ // Fundamental type mapping helper.
+ //
+ struct Fundamental: Traversal::Fundamental::Type,
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Id,
+ Traversal::Fundamental::IdRef
+ {
+ virtual void
+ fundamental_type (SemanticGraph::Fundamental::Type& t) = 0;
+
+ virtual void
+ fundamental_template (SemanticGraph::Fundamental::Type& t) = 0;
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Type& t)
+ {
+ fundamental_type (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::String& t)
+ {
+ fundamental_template (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString& t)
+ {
+ fundamental_template (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token& t)
+ {
+ fundamental_template (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name& t)
+ {
+ fundamental_template (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken& t)
+ {
+ fundamental_template (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName& t)
+ {
+ fundamental_template (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Id& t)
+ {
+ fundamental_template (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRef& t)
+ {
+ fundamental_template (t);
+ }
+ };
+}
+
+#endif // XSD_CXX_TREE_ELEMENTS_HXX
diff --git a/xsd/cxx/literal-map.cxx b/xsd/cxx/literal-map.cxx
new file mode 100644
index 0000000..b81f249
--- /dev/null
+++ b/xsd/cxx/literal-map.cxx
@@ -0,0 +1,261 @@
+// file : xsd/cxx/literal-map.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <memory> // std::unique_ptr
+#include <cstddef> // std::size_t
+#include <fstream>
+#include <iostream>
+
+#include <xercesc/util/XMLUni.hpp>
+
+#include <xercesc/framework/LocalFileInputSource.hpp>
+
+#include <xercesc/sax/Locator.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
+#include <xercesc/sax2/DefaultHandler.hpp>
+#include <xercesc/sax2/SAX2XMLReader.hpp>
+#include <xercesc/sax2/XMLReaderFactory.hpp>
+
+#include <libxsd-frontend/xml.hxx>
+
+#include <xsd/cxx/literal-map.hxx>
+
+using namespace std;
+using namespace xercesc;
+namespace XML = XSDFrontend::XML;
+
+namespace CXX
+{
+ class Handler: public DefaultHandler
+ {
+ public:
+ struct Failed {};
+
+ Handler (String const& file, StringLiteralMap& map)
+ : state_ (s_init), file_ (file), map_ (map)
+ {
+ }
+
+ virtual void
+ setDocumentLocator (const Locator* const l)
+ {
+ locator_ = l;
+ }
+
+ virtual void
+ startElement (const XMLCh* const,
+ const XMLCh* const lname,
+ const XMLCh* const,
+ const xercesc::Attributes&)
+ {
+ String n (XML::transcode (lname));
+
+ if (n == L"string-literal-map" && state_ == s_init)
+ state_ = s_map;
+ else if (n == L"entry" && state_ == s_map)
+ {
+ str_seen_ = false;
+ lit_seen_ = false;
+ state_ = s_entry;
+ }
+ else if (n == L"string" && state_ == s_entry)
+ {
+ str_seen_ = true;
+ str_.clear ();
+ state_ = s_string;
+ }
+ else if (n == L"literal" && state_ == s_entry)
+ {
+ lit_seen_ = true;
+ lit_.clear ();
+ state_ = s_literal;
+ }
+ else
+ {
+ wcerr << file_ << ":" << line () << ":" << col () << ": error: "
+ << "unexpected element '" << n << "'" << endl;
+ throw Failed ();
+ }
+ }
+
+ virtual void
+ endElement (const XMLCh* const,
+ const XMLCh* const lname,
+ const XMLCh* const)
+ {
+ String n (XML::transcode (lname));
+
+ if (n == L"string-literal-map")
+ state_ = s_init;
+ else if (n == L"entry")
+ {
+ if (!str_seen_)
+ {
+ wcerr << file_ << ":" << line () << ":" << col () << ": error: "
+ << "expected 'string' element" << endl;
+ throw Failed ();
+ }
+
+ if (!lit_seen_)
+ {
+ wcerr << file_ << ":" << line () << ":" << col () << ": error: "
+ << "expected 'literal' element" << endl;
+ throw Failed ();
+ }
+
+ map_[str_] = lit_;
+ state_ = s_map;
+ }
+ else if (n == L"string")
+ state_ = s_entry;
+ else if (n == L"literal")
+ state_ = s_entry;
+ }
+
+ virtual void
+ characters (const XMLCh* const s, const XMLSize_t length)
+ {
+ String str (XML::transcode (s, length));
+
+ if (state_ == s_string)
+ str_ += str;
+ else if (state_ == s_literal)
+ lit_ += str;
+ else
+ {
+ for (size_t i (0); i < str.size (); ++i)
+ {
+ wchar_t c (str[i]);
+
+ if (c != 0x20 && c != 0x0A && c != 0x0D && c != 0x09)
+ {
+ wcerr << file_ << ":" << line () << ":" << col () << ": error: "
+ << "unexpected character data" << endl;
+ throw Failed ();
+ }
+ }
+ }
+ }
+
+ // Error hanlding.
+ //
+ enum Severity {s_warning, s_error, s_fatal};
+
+ virtual void
+ warning (const SAXParseException& e)
+ {
+ handle (e, s_warning);
+ }
+
+ virtual void
+ error (const SAXParseException& e)
+ {
+ handle (e, s_error);
+ }
+
+ virtual void
+ fatalError (const SAXParseException& e)
+ {
+ handle (e, s_fatal);
+ }
+
+ virtual void
+ resetErrors ()
+ {
+ }
+
+ void
+ handle (const SAXParseException& e, Severity s)
+ {
+ String msg (XML::transcode (e.getMessage ()));
+
+ wcerr << file_ << ":"
+ << e.getLineNumber () << ":" << e.getColumnNumber () << ": "
+ << (s == s_warning ? "warning: " : "error: ") << msg << endl;
+
+ if (s != s_warning)
+ throw Failed ();
+ }
+
+ size_t
+ line () const
+ {
+ return locator_ != 0
+ ? static_cast<size_t> (locator_->getLineNumber ())
+ : 0;
+ }
+
+ size_t
+ col () const
+ {
+ return locator_ != 0
+ ? static_cast<size_t> (locator_->getColumnNumber ())
+ : 0;
+ }
+
+ private:
+ const Locator* locator_;
+
+ enum
+ {
+ s_init,
+ s_map,
+ s_entry,
+ s_string,
+ s_literal
+ } state_;
+
+ String file_;
+ StringLiteralMap& map_;
+
+ bool str_seen_;
+ bool lit_seen_;
+
+ String str_;
+ String lit_;
+ };
+
+ bool
+ read_literal_map (NarrowString const& file, StringLiteralMap& map)
+ {
+ try
+ {
+ // Try to open the file with fstream. This way we get to
+ // report the error in a consistent manner.
+ //
+ {
+ ifstream ifs (file.c_str ());
+ if (!ifs.is_open ())
+ {
+ wcerr << file.c_str () << ": unable to open in read mode" << endl;
+ return false;
+ }
+ }
+
+ String wfile (file);
+
+ LocalFileInputSource is (XML::XMLChString (wfile).c_str ());
+ Handler h (wfile, map);
+
+ unique_ptr<SAX2XMLReader> parser (
+ XMLReaderFactory::createXMLReader ());
+
+ parser->setFeature (XMLUni::fgSAX2CoreNameSpaces, true);
+ parser->setFeature (XMLUni::fgSAX2CoreNameSpacePrefixes, true);
+ parser->setFeature (XMLUni::fgSAX2CoreValidation, false);
+ parser->setFeature (XMLUni::fgXercesSchema, false);
+ parser->setFeature (XMLUni::fgXercesSchemaFullChecking, false);
+
+ parser->setErrorHandler (&h);
+ parser->setContentHandler (&h);
+
+ parser->parse (is);
+ }
+ catch (Handler::Failed const&)
+ {
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/xsd/cxx/literal-map.hxx b/xsd/cxx/literal-map.hxx
new file mode 100644
index 0000000..bc8fabb
--- /dev/null
+++ b/xsd/cxx/literal-map.hxx
@@ -0,0 +1,19 @@
+// file : xsd/cxx/literal-map.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_LITERAL_MAP_HXX
+#define XSD_CXX_LITERAL_MAP_HXX
+
+#include <map>
+
+#include <xsd/types.hxx>
+
+namespace CXX
+{
+ typedef std::map<String, String> StringLiteralMap;
+
+ bool
+ read_literal_map (NarrowString const& file, StringLiteralMap& map);
+}
+
+#endif // XSD_CXX_LITERAL_MAP_HXX
diff --git a/xsd/cxx/option-types.cxx b/xsd/cxx/option-types.cxx
new file mode 100644
index 0000000..8744d7f
--- /dev/null
+++ b/xsd/cxx/option-types.cxx
@@ -0,0 +1,59 @@
+// file : xsd/cxx/option-types.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <istream>
+#include <ostream>
+
+#include <xsd/cxx/option-types.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ //
+ // cxx_version
+ //
+
+ static const char* cxx_version_[] =
+ {
+ "c++98",
+ "c++11",
+ "c++14",
+ "c++17",
+ "c++20",
+ "c++23",
+ };
+
+ string cxx_version::
+ string () const
+ {
+ return cxx_version_[v_];
+ }
+
+ istream&
+ operator>> (istream& is, cxx_version& v)
+ {
+ string s;
+ is >> s;
+
+ if (!is.fail ())
+ {
+ if (s == "c++98")
+ v = cxx_version::cxx98;
+ else if (s == "c++11")
+ v = cxx_version::cxx11;
+ else if (s == "c++14")
+ v = cxx_version::cxx14;
+ else if (s == "c++17")
+ v = cxx_version::cxx17;
+ else if (s == "c++20")
+ v = cxx_version::cxx20;
+ else if (s == "c++23")
+ v = cxx_version::cxx23;
+ else
+ is.setstate (istream::failbit);
+ }
+
+ return is;
+ }
+}
diff --git a/xsd/cxx/option-types.hxx b/xsd/cxx/option-types.hxx
new file mode 100644
index 0000000..98a493a
--- /dev/null
+++ b/xsd/cxx/option-types.hxx
@@ -0,0 +1,38 @@
+// file : xsd/cxx/option-types.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_XSD_OPTION_TYPES_HXX
+#define XSD_XSD_OPTION_TYPES_HXX
+
+#include <iosfwd>
+#include <string>
+
+namespace CXX
+{
+ struct cxx_version
+ {
+ enum value
+ {
+ cxx98,
+ cxx11,
+ cxx14,
+ cxx17,
+ cxx20,
+ cxx23
+ };
+
+ cxx_version (value v) : v_ (v) {}
+ operator value () const {return v_;}
+
+ std::string
+ string () const;
+
+ private:
+ value v_;
+ };
+
+ std::istream&
+ operator>> (std::istream&, cxx_version&);
+}
+
+#endif // XSD_XSD_OPTION_TYPES_HXX
diff --git a/xsd/cxx/options.cli b/xsd/cxx/options.cli
new file mode 100644
index 0000000..1be7607
--- /dev/null
+++ b/xsd/cxx/options.cli
@@ -0,0 +1,560 @@
+// file : xsd/cxx/options.cli
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+include <cstddef>; // std::size_t
+
+include <xsd/types.hxx>; // NarrowString, NarrowStrings
+
+include <xsd/cxx/option-types.hxx>;
+
+include <xsd/options.cli>;
+
+namespace CXX
+{
+ class options: ::options = 0
+ {
+ // Language.
+ //
+ cxx_version --std = cxx_version::cxx11
+ {
+ "<version>",
+ "Specify the C++ standard that the generated code should conform to.
+ Valid values are \cb{c++98}, \cb{c++11} (default), \cb{c++14},
+ \cb{c++17}, \cb{c++20}, and \cb{c++23}.
+
+ The C++ standard affects various aspects of the generated code that
+ are discussed in more detail in various mapping-specific
+ documentation. Overall, when C++11 is selected, the generated
+ code relies on the move semantics and uses \cb{std::unique_ptr}
+ instead of deprecated \cb{std::auto_ptr}. Currently, there is no
+ difference between the C++11 and the later standards modes.
+
+ When the C++11 mode is selected, you normally don't need to
+ perform any extra steps other than enable C++11 in your C++
+ compiler, if required. The XSD compiler will automatically
+ add the necessary macro defines to the generated header files
+ that will switch the header-only XSD runtime library (\cb{libxsd})
+ to the C++11 mode. However, if you include any of the XSD runtime
+ headers directly in your application (normally you just include
+ the generated headers), then you will need to define the
+ \cb{XSD_CXX11} macro for your entire project."
+ };
+
+ // Character type and encoding.
+ //
+ NarrowString --char-type = "char"
+ {
+ "<type>",
+ "Generate code using the provided character <type> instead of the
+ default \cb{char}. Valid values are \cb{char} and \cb{wchar_t}."
+ };
+
+ NarrowString --char-encoding
+ {
+ "<enc>",
+ "Specify the character encoding that should be used in the generated
+ code. Valid values for the \cb{char} character type are \cb{utf8}
+ (default), \cb{iso8859-1}, \cb{lcp} (Xerces-C++ local code page),
+ and \cb{custom}. If you pass \cb{custom} as the value then you will
+ need to include the transcoder implementation header for your
+ encoding at the beginning of the generated header files (see the
+ \cb{--hxx-prologue} option).
+
+ For the \cb{wchar_t} character type the only valid value is \cb{auto}
+ and the encoding is automatically selected between UTF-16 and
+ UTF-32/UCS-4, depending on the \cb{wchar_t} type size."
+ };
+
+ // Output options.
+ //
+ NarrowString --output-dir
+ {
+ "<dir>",
+ "Write generated files to <dir> instead of the current directory."
+ };
+
+ bool --generate-inline
+ {
+ "Generate simple functions inline. This option triggers creation of
+ the inline file."
+ };
+
+ // Extern XML Schema.
+ //
+ bool --generate-xml-schema
+ {
+ "Generate a C++ header file as if the schema being compiled defines the
+ XML Schema namespace. For the C++/Tree mapping, the resulting file will
+ contain definitions for all XML Schema built-in types. For the
+ C++/Parser mapping, the resulting file will contain definitions for
+ all the parser skeletons and implementations corresponding to the
+ XML Schema built-in types.
+
+ The schema file provided to the compiler need not exist and is only
+ used to derive the name of the resulting header file. Use the
+ \cb{--extern-xml-schema} option to include this file in the
+ generated files for other schemas."
+ };
+
+ NarrowString --extern-xml-schema
+ {
+ "<file>",
+ "Include a header file derived from <file> instead of generating the
+ XML Schema namespace mapping inline. The provided file need not
+ exist and is only used to derive the name of the included header
+ file. Use the \cb{--generate-xml-schema} option to generate this
+ header file."
+ };
+
+ // Namespace mapping.
+ //
+ NarrowStrings --namespace-map
+ {
+ "<xns>=<cns>",
+ "Map XML Schema namespace <xns> to C++ namespace <cns>. Repeat
+ this option to specify mapping for more than one XML Schema namespace.
+ For example, the following option:
+
+ \cb{--namespace-map http://example.com/foo/bar=foo::bar}
+
+ Will map the \cb{http://example.com/foo/bar} XML Schema namespace to
+ the \cb{foo::bar} C++ namespace."
+ };
+
+ NarrowStrings --namespace-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate XML
+ Schema namespace names to C++ namespace names. <regex> is a Perl-like
+ regular expression in the form
+ \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. Any character can be
+ used as a delimiter instead of '\cb{/}'. Escaping of the delimiter
+ character in \ci{pattern} or \ci{replacement} is not supported.
+
+ All the regular expressions are pushed into a stack with the last
+ specified expression considered first. The first match that
+ succeeds is used. Regular expressions are applied to a string in
+ the form
+
+ \c{\i{filename} \i{namespace}}
+
+ For example, if you have file \cb{hello.xsd} with namespace
+ \cb{http://example.com/hello} and you run \cb{xsd} on this file,
+ then the string in question will be:
+
+ \cb{hello.xsd. http://example.com/hello}
+
+ For the built-in XML Schema namespace the string is:
+
+ \cb{XMLSchema.xsd http://www.w3.org/2001/XMLSchema}
+
+ The following three steps are performed for each regular expression
+ until the match is found:
+
+ 1. The expression is applied and if the result is empty the next
+ expression is considered.
+
+ 2. All '\cb{/}' are replaced with '\cb{::}'.
+
+ 3. The result is verified to be a valid C++ scope name (e.g.,
+ \cb{foo::bar}). If this test succeeds, the result is used as a
+ C++ namespace name.
+
+ As an example, the following expression maps XML Schema namespaces
+ in the form \cb{http://example.com/foo/bar} to C++ namespaces in the
+ form \cb{foo::bar}:
+
+ \cb{%.* http://example.com/(.+)%$1%}
+
+ See also the REGEX AND SHELL QUOTING section below."
+ };
+
+ bool --namespace-regex-trace
+ {
+ "Trace the process of applying regular expressions specified with the
+ \cb{--namespace-regex} option. Use this option to find out why your
+ regular expressions don't do what you expected them to do."
+ };
+
+ // Reserved names.
+ //
+ NarrowStrings --reserved-name
+ {
+ "<n>[=<r>]",
+ "Add name <n> to the list of names that should not be used as
+ identifiers. The name can optionally be followed by \cb{=} and the
+ replacement name <r> that should be used instead. All the C++ keywords
+ are already in this list."
+ };
+
+ // Include options.
+ //
+ bool --include-with-brackets
+ {
+ "Use angle brackets (<>) instead of quotes (\"\") in generated
+ \cb{#include} directives."
+ };
+
+ NarrowString --include-prefix
+ {
+ "<prefix>",
+ "Add <prefix> to generated \cb{#include} directive paths.
+
+ For example, if you had the following import element in your schema
+
+ \cb{<import namespace=\"...\" schemaLocation=\"base.xsd\"/>}
+
+ and compiled this fragment with \cb{--include-prefix schemas/}, then
+ the include directive in the generated code would be:
+
+ \cb{#include \"schemas/base.hxx\"}"
+ };
+
+ NarrowStrings --include-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to transform
+ \cb{#include} directive paths. <regex> is a Perl-like regular
+ expression in the form \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}.
+ Any character can be used as a delimiter instead of '\cb{/}'. Escaping
+ of the delimiter character in \ci{pattern} or \ci{replacement} is not
+ supported.
+
+ All the regular expressions are pushed into a stack with the last
+ specified expression considered first. The first match that succeeds
+ is used.
+
+ As an example, the following expression transforms paths in the form
+ \cb{schemas/foo/bar} to paths in the form \cb{generated/foo/bar}:
+
+ \cb{%schemas/(.+)%generated/$1%}
+
+ See also the REGEX AND SHELL QUOTING section below."
+ };
+
+ bool --include-regex-trace
+ {
+ "Trace the process of applying regular expressions specified with the
+ \cb{--include-regex} option. Use this option to find out why your
+ regular expressions don't do what you expected them to do."
+ };
+
+ NarrowString --guard-prefix
+ {
+ "<prefix>",
+ "Add <prefix> to generated header inclusion guards. The prefix is
+ transformed to upper case and characters that are illegal in a
+ preprocessor macro name are replaced with underscores. If this
+ option is not specified then the directory part of the input schema
+ file is used as a prefix."
+ };
+
+ // File suffixes.
+ //
+ NarrowString --hxx-suffix = ".hxx"
+ {
+ "<suffix>",
+ "Use the provided <suffix> instead of the default \cb{.hxx} to
+ construct the name of the header file. Note that this suffix is also
+ used to construct names of header files corresponding to
+ included/imported schemas."
+ };
+
+ NarrowString --ixx-suffix = ".ixx"
+ {
+ "<suffix>",
+ "Use the provided <suffix> instead of the default \cb{.ixx} to
+ construct the name of the inline file."
+ };
+
+ NarrowString --cxx-suffix = ".cxx"
+ {
+ "<suffix>",
+ "Use the provided <suffix> instead of the default \cb{.cxx} to
+ construct the name of the source file."
+ };
+
+ NarrowString --fwd-suffix = "-fwd.hxx"
+ {
+ "<suffix>",
+ "Use the provided <suffix> instead of the default \cb{-fwd.hxx} to
+ construct the name of the forward declaration file."
+ };
+
+ NarrowString --hxx-regex
+ {
+ "<regex>",
+ "Use the provided expression to construct the name of the header file.
+ <regex> is a Perl-like regular expression in the form
+ \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}.
+ Note that this expression is also used to construct names of header
+ files corresponding to included/imported schemas. See also the REGEX
+ AND SHELL QUOTING section below."
+ };
+
+ NarrowString --ixx-regex
+ {
+ "<regex>",
+ "Use the provided expression to construct the name of the inline file.
+ <regex> is a Perl-like regular expression in the form
+ \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. See also the REGEX AND
+ SHELL QUOTING section below."
+ };
+
+ NarrowString --cxx-regex
+ {
+ "<regex>",
+ "Use the provided expression to construct the name of the source file.
+ <regex> is a Perl-like regular expression in the form
+ \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. See also the REGEX AND
+ SHELL QUOTING section below."
+ };
+
+ NarrowString --fwd-regex
+ {
+ "<regex>",
+ "Use the provided expression to construct the name of the forward
+ declaration file. <regex> is a Perl-like regular expression in the
+ form \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. See also the REGEX
+ AND SHELL QUOTING section below."
+ };
+
+ // Prologues/epilogues.
+ //
+ NarrowStrings --hxx-prologue
+ {
+ "<text>",
+ "Insert <text> at the beginning of the header file."
+ };
+
+ NarrowStrings --ixx-prologue
+ {
+ "<text>",
+ "Insert <text> at the beginning of the inline file."
+ };
+
+ NarrowStrings --cxx-prologue
+ {
+ "<text>",
+ "Insert <text> at the beginning of the source file."
+ };
+
+ NarrowStrings --fwd-prologue
+ {
+ "<text>",
+ "Insert <text> at the beginning of the forward declaration file."
+ };
+
+ NarrowStrings --prologue
+ {
+ "<text>",
+ "Insert <text> at the beginning of each generated file for which
+ there is no file-specific prologue."
+ };
+
+ NarrowStrings --hxx-epilogue
+ {
+ "<text>",
+ "Insert <text> at the end of the header file."
+ };
+
+ NarrowStrings --ixx-epilogue
+ {
+ "<text>",
+ "Insert <text> at the end of the inline file."
+ };
+
+ NarrowStrings --cxx-epilogue
+ {
+ "<text>",
+ "Insert <text> at the end of the source file."
+ };
+
+ NarrowStrings --fwd-epilogue
+ {
+ "<text>",
+ "Insert <text> at the end of the forward declaration file."
+ };
+
+ NarrowStrings --epilogue
+ {
+ "<text>",
+ "Insert <text> at the end of each generated file for which there
+ is no file-specific epilogue."
+ };
+
+ NarrowString --hxx-prologue-file
+ {
+ "<file>",
+ "Insert the content of the <file> at the beginning of the header file."
+ };
+
+ NarrowString --ixx-prologue-file
+ {
+ "<file>",
+ "Insert the content of the <file> at the beginning of the inline file."
+ };
+
+ NarrowString --cxx-prologue-file
+ {
+ "<file>",
+ "Insert the content of the <file> at the beginning of the source file."
+ };
+
+ NarrowString --fwd-prologue-file
+ {
+ "<file>",
+ "Insert the content of the <file> at the beginning of the forward
+ declaration file."
+ };
+
+ NarrowString --prologue-file
+ {
+ "<file>",
+ "Insert the content of the <file> at the beginning of each generated
+ file for which there is no file-specific prologue file."
+ };
+
+ NarrowString --hxx-epilogue-file
+ {
+ "<file>",
+ "Insert the content of the <file> at the end of the header file."
+ };
+
+ NarrowString --ixx-epilogue-file
+ {
+ "<file>",
+ "Insert the content of the <file> at the end of the inline file."
+ };
+
+ NarrowString --cxx-epilogue-file
+ {
+ "<file>",
+ "Insert the content of the <file> at the end of the source file."
+ };
+
+ NarrowString --fwd-epilogue-file
+ {
+ "<file>",
+ "Insert the content of the <file> at the end of the forward declaration
+ file."
+ };
+
+ NarrowString --epilogue-file
+ {
+ "<file>",
+ "Insert the content of the <file> at the end of each generated file
+ for which there is no file-specific epilogue file."
+ };
+
+ // Export options.
+ //
+ NarrowString --export-symbol
+ {
+ "<symbol>",
+ "Insert <symbol> in places where DLL export/import control statements
+ (\cb{__declspec(dllexport/dllimport)}) are necessary."
+ };
+
+ bool --export-xml-schema
+ {
+ "Export/import types in the XML Schema namespace using the export
+ symbol provided with the \cb{--export-symbol} option. The
+ \cb{XSD_NO_EXPORT} macro can be used to omit this code during C++
+ compilation, which may be useful if you would like to use the same
+ generated code across multiple platforms."
+ };
+
+ bool --export-maps
+ {
+ "Export polymorphism support maps from a Win32 DLL into which this
+ generated code is placed. This is necessary when your type hierarchy
+ is split across several DLLs since otherwise each DLL will have its
+ own set of maps. In this situation the generated code for the DLL
+ which contains base types and/or substitution group heads should be
+ compiled with this option and the generated code for all other DLLs
+ should be compiled with \cb{--import-maps}. This option is only valid
+ together with \cb{--generate-polymorphic}. The \cb{XSD_NO_EXPORT}
+ macro can be used to omit this code during C++ compilation, which may
+ be useful if you would like to use the same generated code across
+ multiple platforms."
+ };
+
+ bool --import-maps
+ {
+ "Import polymorphism support maps to a Win32 DLL or executable into
+ which this generated code is linked. See the \cb{--export-maps}
+ option documentation for details. This options is only valid together
+ with \cb{--generate-polymorphic}. The \cb{XSD_NO_EXPORT} macro can be
+ used to omit this code during C++ compilation, which may be useful if
+ you would like to use the same generated code across multiple
+ platforms."
+ };
+
+ // Make dependency generation.
+ //
+ bool --generate-dep
+ {
+ "Generate \cb{make} dependency information. This option triggers the
+ creation of the \cb{.d} file containing the dependencies of the
+ generated files on the main schema file as well as all the schema
+ files that it includes/imports, transitively. This dependency file
+ is then normally included into the main \cb{makefile} to implement
+ automatic dependency tracking. See also the \cb{--dep-*} options.
+
+ Note also that automatic dependency generation is not supported in
+ the file-per-type mode (\cb{--file-per-type}). In this case, all
+ the generated files are produced with a single compiler invocation
+ and depend on all the schemas. As a result, it is easier to establish
+ such a dependency manually, perhaps with the help of the
+ \cb{--file-list*} options."
+ };
+
+ bool --generate-dep-only
+ {
+ "Generate \cb{make} dependency information only."
+ };
+
+ bool --dep-phony
+ {
+ "Generate phony targets for included/imported schema files, causing
+ each to depend on nothing. Such dummy rules work around \cb{make}
+ errors caused by the removal of schema files without also updating
+ the dependency file to match."
+ };
+
+ NarrowStrings --dep-target
+ {
+ "<target>",
+ "Change the target of the dependency rule. By default it contains
+ all the generated C++ files as well as the dependency file itself,
+ without any directory prefixes. If you require multiple targets,
+ then you can specify them as a single, space-separated argument or
+ you can repeat this option multiple times."
+ };
+
+ NarrowString --dep-suffix = ".d"
+ {
+ "<suffix>",
+ "Use <suffix> instead of the default \cb{.d} to construct the name of
+ the dependency file. See also \cb{--dep-file}."
+ };
+
+ NarrowString --dep-file
+ {
+ "<path>",
+ "Use <path> as the generated dependency file path instead of deriving
+ it from the input file name. Write the dependency information to
+ \cb{stdout} if <path> is \cb{-}. See also \cb{--dep-regex}."
+ };
+
+ NarrowString --dep-regex
+ {
+ "<regex>",
+ "Use the provided expression to construct the name of the dependency
+ file. <regex> is a Perl-like regular expression in the form
+ \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. See also the REGEX
+ AND SHELL QUOTING section below."
+ };
+ };
+}
diff --git a/xsd/cxx/parser/attribute-validation-source.cxx b/xsd/cxx/parser/attribute-validation-source.cxx
new file mode 100644
index 0000000..1c873fd
--- /dev/null
+++ b/xsd/cxx/parser/attribute-validation-source.cxx
@@ -0,0 +1,412 @@
+// file : xsd/cxx/parser/attribute-validation-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/parser/attribute-validation-source.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ struct Test: Traversal::Attribute,
+ Traversal::AnyAttribute,
+ Context
+ {
+ Test (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Attribute& a)
+ {
+ String const& name (a.name ());
+
+ if (a.qualified_p () && a.namespace_ ().name ())
+ {
+ String const& ns (a.namespace_ ().name ());
+
+ os << "n == " << strlit (name) << " &&" << endl
+ << "ns == " << strlit (ns);
+ }
+ else
+ os << "n == " << strlit (name) << " && ns.empty ()";
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& ns (a.definition_namespace ().name ());
+
+ for (SemanticGraph::AnyAttribute::NamespaceIterator
+ i (a.namespace_begin ()), e (a.namespace_end ()); i != e;)
+ {
+ if (*i == L"##any")
+ {
+ os << "!n.empty ()";
+ }
+ else if (*i == L"##other")
+ {
+ if (ns)
+ {
+ // Note that here I assume that ##other does not include
+ // unqualified names in a schema with target namespace.
+ // This is not what the spec says but that seems to be
+ // the consensus.
+ //
+ os << "(!ns.empty () && ns != " << strlit (ns) << ")";
+ }
+ else
+ os << "!ns.empty ()";
+ }
+ else if (*i == L"##local")
+ {
+ os << "(ns.empty () && !n.empty ())";
+ }
+ else if (*i == L"##targetNamespace")
+ {
+ os << "ns == " << strlit (ns);
+ }
+ else
+ {
+ os << "ns == " << strlit (*i);
+ }
+
+ if (++i != e)
+ os << " ||" << endl;
+ }
+ }
+ };
+
+ //
+ //
+ struct PhaseOne: Traversal::Attribute, Context
+ {
+ PhaseOne (Context& c)
+ : Context (c), test_ (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& name (ename (a));
+ String const& inst (emember (a));
+
+ SemanticGraph::Type& type (a.type ());
+ String const& post (post_name (type));
+ String const& ret (ret_type (type));
+
+ os << "if (";
+
+ test_.traverse (a);
+
+ os << ")"
+ << "{"
+ << "if (this->" << inst << ")"
+ << "{"
+ << "this->" << inst << "->pre ();"
+ << "this->" << inst << "->_pre_impl ();"
+ << "this->" << inst << "->_characters (s);"
+ << "this->" << inst << "->_post_impl ();";
+
+ if (ret == L"void")
+ os << "this->" << inst << "->" << post << " ();"
+ << "this->" << name << " ();";
+ else
+ {
+ // Don't create an lvalue in C++11 (think std::unique_ptr).
+ // In C++98 we do it for compatibility with older/broken
+ // compilers (e.g., IBM xlC that needs an lvalue to pass
+ // std::auto_ptr).
+ //
+ if (std == cxx_version::cxx98)
+ os << arg_type (type) << " tmp (this->" << inst << "->" <<
+ post << " ());"
+ << "this->" << name << " (tmp);";
+ else
+ os << "this->" << name << " (this->" << inst << "->" <<
+ post << " ());";
+ }
+
+ os << "}";
+
+ if (!a.optional_p ())
+ os << "static_cast< v_state_attr_* > (" <<
+ "this->v_state_attr_stack_.top ())->" << name << " = true;";
+
+ os << "return true;"
+ << "}";
+ }
+
+ private:
+ Test test_;
+ };
+
+
+ //
+ //
+ struct PhaseTwo: Traversal::AnyAttribute, Context
+ {
+ PhaseTwo (Context& c)
+ : Context (c), test_ (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ os << "if (";
+
+ test_.traverse (a);
+
+ os << ")" << endl
+ << "{"
+ << "this->_any_attribute (ns, n, s);"
+ << "return true;"
+ << "}";
+ }
+
+ private:
+ Test test_;
+ };
+
+
+ //
+ //
+ struct AttributeStateInit: Traversal::Attribute, Context
+ {
+ AttributeStateInit (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ if (!a.optional_p ())
+ os << "as." << ename (a) << " = false;";
+ }
+ };
+
+
+ //
+ //
+ struct AttributeStateCheck: Traversal::Attribute, Context
+ {
+ AttributeStateCheck (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ if (!a.optional_p ())
+ {
+ String ns (a.qualified_p () ? a.namespace_ ().name () : String ());
+
+ os << "if (!as." << ename (a) << ")" << endl
+ << "this->_expected_attribute (" << endl
+ << strlit (ns) << ", " << strlit (a.name ()) << ");";
+ }
+ }
+ };
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c),
+ phase_one_ (c),
+ phase_two_ (c),
+ attribute_state_init_ (c),
+ attribute_state_check_ (c)
+ {
+ names_phase_one_ >> phase_one_;
+ names_phase_two_ >> phase_two_;
+
+ names_attribute_state_init_ >> attribute_state_init_;
+ names_attribute_state_check_ >> attribute_state_check_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ bool has_att (has<Traversal::Attribute> (c));
+ bool has_any (has<Traversal::AnyAttribute> (c));
+
+ if (!has_att && !has_any)
+ return;
+
+ bool has_req_att (false);
+ if (has_att)
+ {
+ RequiredAttributeTest test (has_req_att);
+ Traversal::Names names_test (test);
+ names (c, names_test);
+ }
+
+ String const& name (ename (c));
+
+ os <<"// Attribute validation and dispatch functions for " <<
+ name << "." << endl
+ <<"//" << endl;
+
+ if (has_att)
+ {
+ // _attribute_impl_phase_one
+ //
+ os << "bool " << name << "::" << endl
+ << "_attribute_impl_phase_one (const " << string_type <<
+ "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "& s)" << endl
+ << "{";
+
+ names (c, names_phase_one_);
+
+ // Nothing matched - call our base (extension) or return false
+ // if there is no base (or restriction (even from anyType)).
+ //
+ os << "return ";
+
+ if (c.inherits_p () &&
+ !c.inherits ().is_a<SemanticGraph::Restricts> ())
+ {
+ os << "this->" << fq_name (c.inherits ().base ()) <<
+ "::_attribute_impl_phase_one (ns, n, s);";
+ }
+ else
+ os << "false;";
+
+ os << "}";
+ }
+
+
+ if (has_any)
+ {
+ // _attribute_impl_phase_two
+ //
+ os << "bool " << name << "::" << endl
+ << "_attribute_impl_phase_two (const " << string_type <<
+ "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "& s)"
+ << "{";
+
+ names (c, names_phase_two_);
+
+ // Nothing matched - call our base (extension) or return false
+ // if there is no base (or restriction (even from anyType)).
+ //
+ os << "return ";
+
+ if (c.inherits_p () &&
+ !c.inherits ().is_a<SemanticGraph::Restricts> ())
+ {
+ os << "this->" << fq_name (c.inherits ().base ()) <<
+ "::_attribute_impl_phase_two (ns, n, s);";
+ }
+ else
+ os << "false;";
+
+ os << "}";
+ }
+
+ if (has_req_att)
+ {
+ // _pre_a_validate
+ //
+ os << "void " << name << "::" << endl
+ << "_pre_a_validate ()"
+ << "{"
+ << "this->v_state_attr_stack_.push ();"
+ << "v_state_attr_& as = *static_cast< v_state_attr_* > (" <<
+ "this->v_state_attr_stack_.top ());"
+ << endl;
+
+ names (c, names_attribute_state_init_);
+
+ // Call our base (extension) last.
+ //
+ if (c.inherits_p () &&
+ !c.inherits ().is_a<SemanticGraph::Restricts> ())
+ {
+ os << "this->" << fq_name (c.inherits ().base ()) <<
+ "::_pre_a_validate ();";
+ }
+
+ os << "}";
+
+
+ // _post_a_validate
+ //
+ os << "void " << name << "::" << endl
+ << "_post_a_validate ()"
+ << "{";
+
+ // Call our base (extension) first.
+ //
+ if (c.inherits_p () &&
+ !c.inherits ().is_a<SemanticGraph::Restricts> ())
+ {
+ os << "this->" << fq_name (c.inherits ().base ()) <<
+ "::_post_a_validate ();"
+ << endl;
+ }
+
+ os << "v_state_attr_& as = *static_cast< v_state_attr_* > (" <<
+ "this->v_state_attr_stack_.top ());"
+ << endl;
+
+ names (c, names_attribute_state_check_);
+
+ os << endl
+ << "this->v_state_attr_stack_.pop ();"
+ << "}";
+ }
+ }
+
+ private:
+ PhaseOne phase_one_;
+ Traversal::Names names_phase_one_;
+
+ PhaseTwo phase_two_;
+ Traversal::Names names_phase_two_;
+
+ AttributeStateInit attribute_state_init_;
+ Traversal::Names names_attribute_state_init_;
+
+ AttributeStateCheck attribute_state_check_;
+ Traversal::Names names_attribute_state_check_;
+ };
+ }
+
+ void
+ generate_attribute_validation_source (Context& ctx)
+ {
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names schema_names;
+
+ Namespace ns (ctx);
+ Traversal::Names names;
+
+ schema >> sources >> schema;
+ schema >> schema_names >> ns >> names;
+
+ Complex complex (ctx);
+
+ names >> complex;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/parser/attribute-validation-source.hxx b/xsd/cxx/parser/attribute-validation-source.hxx
new file mode 100644
index 0000000..1f19bed
--- /dev/null
+++ b/xsd/cxx/parser/attribute-validation-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/parser/attribute-validation-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_ATTRIBUTE_VALIDATION_SOURCE_HXX
+#define XSD_CXX_PARSER_ATTRIBUTE_VALIDATION_SOURCE_HXX
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ void
+ generate_attribute_validation_source (Context&);
+ }
+}
+
+#endif // XSD_CXX_PARSER_ATTRIBUTE_VALIDATION_SOURCE_HXX
diff --git a/xsd/cxx/parser/characters-validation-source.cxx b/xsd/cxx/parser/characters-validation-source.cxx
new file mode 100644
index 0000000..749a4cc
--- /dev/null
+++ b/xsd/cxx/parser/characters-validation-source.cxx
@@ -0,0 +1,73 @@
+// file : xsd/cxx/parser/characters-validation-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/parser/characters-validation-source.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ if (!c.mixed_p ())
+ return;
+
+ String const& name (ename (c));
+
+ os <<"// Character validation functions for " << name << "." << endl
+ <<"//" << endl;
+
+ // _characters_impl
+ //
+ os << "bool " << name << "::" << endl
+ << "_characters_impl (const " << string_type << "& s)"
+ << "{"
+ << "this->_any_characters (s);"
+ << "return true;"
+ << "}";
+ }
+ };
+ }
+
+ void
+ generate_characters_validation_source (Context& ctx)
+ {
+ //@@ Most of the time there is no mixed content type so
+ // we generate an empty namespace which looks ugly. Will
+ // need to implement smart namespace to handle this at
+ // some point.
+ //
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names schema_names;
+
+ Namespace ns (ctx);
+ Traversal::Names names;
+
+ schema >> sources >> schema;
+ schema >> schema_names >> ns >> names;
+
+ Complex complex (ctx);
+
+ names >> complex;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/parser/characters-validation-source.hxx b/xsd/cxx/parser/characters-validation-source.hxx
new file mode 100644
index 0000000..909901b
--- /dev/null
+++ b/xsd/cxx/parser/characters-validation-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/parser/characters-validation-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_CHARACTERS_VALIDATION_SOURCE_HXX
+#define XSD_CXX_PARSER_CHARACTERS_VALIDATION_SOURCE_HXX
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ void
+ generate_characters_validation_source (Context&);
+ }
+}
+
+#endif // XSD_CXX_PARSER_CHARACTERS_VALIDATION_SOURCE_HXX
diff --git a/xsd/cxx/parser/driver-source.cxx b/xsd/cxx/parser/driver-source.cxx
new file mode 100644
index 0000000..d1e6b7f
--- /dev/null
+++ b/xsd/cxx/parser/driver-source.cxx
@@ -0,0 +1,775 @@
+// file : xsd/cxx/parser/driver-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <set>
+#include <map>
+#include <sstream>
+
+#include <xsd/cxx/parser/driver-source.hxx>
+#include <xsd/cxx/parser/print-impl-common.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ typedef map<SemanticGraph::Type*, String> TypeInstanceMap;
+ typedef set<String> InstanceSet;
+
+ // For base types we only want member's types, but not the
+ // base itself.
+ //
+ struct BaseType: Traversal::Complex,
+ Traversal::List,
+ Context
+ {
+ BaseType (Context& c, Traversal::NodeBase& def)
+ : Context (c), def_ (def)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ inherits (c);
+
+ if (!restriction_p (c))
+ names (c);
+ }
+
+ virtual void
+ traverse (SemanticGraph::List& l)
+ {
+ def_.dispatch (l.argumented ().type ());
+ }
+
+ private:
+ Traversal::NodeBase& def_;
+ };
+
+ struct ParserDef: Traversal::Type,
+ Traversal::List,
+ Traversal::Complex,
+
+ Traversal::AnyType,
+ Traversal::AnySimpleType,
+
+ Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal,
+
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Language,
+
+ Traversal::Fundamental::QName,
+
+ Traversal::Fundamental::Id,
+ Traversal::Fundamental::IdRef,
+ Traversal::Fundamental::IdRefs,
+
+ Traversal::Fundamental::AnyURI,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary,
+
+ Traversal::Fundamental::Date,
+ Traversal::Fundamental::DateTime,
+ Traversal::Fundamental::Duration,
+ Traversal::Fundamental::Day,
+ Traversal::Fundamental::Month,
+ Traversal::Fundamental::MonthDay,
+ Traversal::Fundamental::Year,
+ Traversal::Fundamental::YearMonth,
+ Traversal::Fundamental::Time,
+
+ Traversal::Fundamental::Entity,
+ Traversal::Fundamental::Entities,
+
+ Context
+ {
+ ParserDef (Context& c, TypeInstanceMap& map, InstanceSet& set)
+ : Context (c), map_ (map), set_ (set), base_ (c, *this)
+ {
+ *this >> inherits_ >> base_ >> inherits_;
+
+ *this >> names_;
+ base_ >> names_;
+
+ names_ >> member_ >> belongs_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ if (map_.find (&t) == map_.end ())
+ {
+ String inst (find_instance_name (t));
+ map_[&t] = inst;
+
+ os << fq_name (t, "impl") << " " << inst << ";";
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::List& l)
+ {
+ if (map_.find (&l) == map_.end ())
+ {
+ String inst (find_instance_name (l));
+ map_[&l] = inst;
+
+ os << fq_name (l, "impl") << " " << inst << ";";
+
+ dispatch (l.argumented ().type ());
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ if (map_.find (&c) == map_.end ())
+ {
+ String inst (find_instance_name (c));
+ map_[&c] = inst;
+
+ os << fq_name (c, "impl") << " " << inst << ";";
+
+ inherits (c);
+
+ if (!restriction_p (c))
+ names (c);
+ }
+ }
+
+ // anyType & anySimpleType.
+ //
+ virtual void
+ traverse (SemanticGraph::AnyType& t)
+ {
+ fund_type (t, "any_type");
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnySimpleType& t)
+ {
+ fund_type (t, "any_simple_type");
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean& t)
+ {
+ fund_type (t, "boolean");
+ }
+
+ // Integral types.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte& t)
+ {
+ fund_type (t, "byte");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte& t)
+ {
+ fund_type (t, "unsigned_byte");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short& t)
+ {
+ fund_type (t, "short");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort& t)
+ {
+ fund_type (t, "unsigned_short");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int& t)
+ {
+ fund_type (t, "int");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt& t)
+ {
+ fund_type (t, "unsigned_int");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long& t)
+ {
+ fund_type (t, "long");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong& t)
+ {
+ fund_type (t, "unsigned_long");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer& t)
+ {
+ fund_type (t, "integer");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
+ {
+ fund_type (t, "non_positive_integer");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
+ {
+ fund_type (t, "non_negative_integer");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger& t)
+ {
+ fund_type (t, "positive_integer");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger& t)
+ {
+ fund_type (t, "negative_integer");
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ fund_type (t, "float");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ fund_type (t, "double");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal& t)
+ {
+ fund_type (t, "decimal");
+ }
+
+ // Strings.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::String& t)
+ {
+ fund_type (t, "string");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString& t)
+ {
+ fund_type (t, "normalized_string");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token& t)
+ {
+ fund_type (t, "token");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken& t)
+ {
+ fund_type (t, "nmtoken");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens& t)
+ {
+ fund_type (t, "nmtokens");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name& t)
+ {
+ fund_type (t, "name");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName& t)
+ {
+ fund_type (t, "ncname");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Language& t)
+ {
+ fund_type (t, "language");
+ }
+
+
+ // Qualified name.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::QName& t)
+ {
+ fund_type (t, "qname");
+ }
+
+
+ // ID/IDREF.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Id& t)
+ {
+ fund_type (t, "id");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRef& t)
+ {
+ fund_type (t, "idref");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs& t)
+ {
+ fund_type (t, "idrefs");
+ }
+
+ // URI.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::AnyURI& t)
+ {
+ fund_type (t, "uri");
+ }
+
+ // Binary.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary& t)
+ {
+ fund_type (t, "base64_binary");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary& t)
+ {
+ fund_type (t, "hex_binary");
+ }
+
+
+ // Date/time.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Date& t)
+ {
+ fund_type (t, "date");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::DateTime& t)
+ {
+ fund_type (t, "date_time");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Duration& t)
+ {
+ fund_type (t, "duration");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Day& t)
+ {
+ fund_type (t, "day");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Month& t)
+ {
+ fund_type (t, "month");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::MonthDay& t)
+ {
+ fund_type (t, "month_day");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Year& t)
+ {
+ fund_type (t, "year");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::YearMonth& t)
+ {
+ fund_type (t, "year_month");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Time& t)
+ {
+ fund_type (t, "time");
+ }
+
+ // Entity.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entity& t)
+ {
+ fund_type (t, "entity");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entities& t)
+ {
+ fund_type (t, "entities");
+ }
+
+ private:
+ virtual void
+ fund_type (SemanticGraph::Type& t, String const& name)
+ {
+ if (map_.find (&t) == map_.end ())
+ {
+ String inst (find_instance_name (name));
+ map_[&t] = inst;
+
+ os << fq_name (t, "impl") << " " << inst << ";";
+ }
+ }
+
+ String
+ find_instance_name (String const& raw_name)
+ {
+ String base_name (escape (raw_name + L"_p"));
+ String name (base_name);
+
+ for (size_t i (1); set_.find (name) != set_.end (); ++i)
+ {
+ std::wostringstream os;
+ os << i;
+ name = base_name + os.str ();
+ }
+
+ set_.insert (name);
+ return name;
+ }
+
+ String
+ find_instance_name (SemanticGraph::Type& t)
+ {
+ return find_instance_name (t.name ());
+ }
+
+ TypeInstanceMap& map_;
+ InstanceSet& set_;
+
+ BaseType base_;
+ Traversal::Inherits inherits_;
+
+ Traversal::Names names_;
+ Traversal::Member member_;
+ Traversal::Belongs belongs_;
+ };
+
+ struct ArgList: Traversal::Complex,
+ Traversal::List,
+ Traversal::Member,
+ Context
+ {
+ ArgList (Context& c, TypeInstanceMap& map)
+ : Context (c), map_ (map), first_ (true)
+ {
+ inherits_ >> *this;
+ names_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ inherits (c, inherits_);
+
+ if (!restriction_p (c))
+ names (c, names_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::List& l)
+ {
+ if (!first_)
+ os << "," << endl;
+ else
+ first_ = false;
+
+ os << map_[&l.argumented ().type ()];
+ }
+
+ virtual void
+ traverse (SemanticGraph::Member& m)
+ {
+ if (skip (m))
+ return;
+
+ if (!first_)
+ os << "," << endl;
+ else
+ first_ = false;
+
+ os << map_[&m.type ()];
+ }
+
+ private:
+ TypeInstanceMap& map_;
+
+ Traversal::Inherits inherits_;
+ Traversal::Names names_;
+
+ bool first_;
+ };
+
+ struct ParserConnect: Traversal::List,
+ Traversal::Complex,
+ Context
+ {
+ ParserConnect (Context& c, TypeInstanceMap& map)
+ : Context (c), map_ (map), base_ (c, *this)
+ {
+ *this >> inherits_ >> base_ >> inherits_;
+
+ *this >> names_;
+ base_ >> names_;
+
+ names_ >> member_ >> belongs_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::List& l)
+ {
+ if (type_set_.find (&l) == type_set_.end ())
+ {
+ os << map_[&l] << ".parsers (" <<
+ map_[&l.argumented ().type ()] << ");"
+ << endl;
+
+ type_set_.insert (&l);
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ if (type_set_.find (&c) == type_set_.end ())
+ {
+ if (has_members (c))
+ {
+ os << map_[&c] << ".parsers (";
+
+ ArgList args (*this, map_);
+ args.dispatch (c);
+
+ os << ");"
+ << endl;
+ }
+
+ type_set_.insert (&c);
+
+ inherits (c);
+
+ if (!restriction_p (c))
+ names (c);
+ }
+ }
+
+ private:
+ bool
+ has_members (SemanticGraph::Complex& c)
+ {
+ using SemanticGraph::Complex;
+
+ if (has<Traversal::Member> (c))
+ return true;
+
+ if (c.inherits_p ())
+ {
+ SemanticGraph::Type& b (c.inherits ().base ());
+
+ if (Complex* cb = dynamic_cast<Complex*> (&b))
+ return has_members (*cb);
+
+ return b.is_a<SemanticGraph::List> ();
+ }
+
+ return false;
+ }
+
+ private:
+ TypeInstanceMap& map_;
+ set<SemanticGraph::Type*> type_set_;
+
+ BaseType base_;
+ Traversal::Inherits inherits_;
+
+ Traversal::Names names_;
+ Traversal::Member member_;
+ Traversal::Belongs belongs_;
+ };
+ }
+
+ void
+ generate_driver_source (Context& ctx)
+ {
+ // Figure out the root element. Validator should have made sure
+ // it is unique.
+ //
+ SemanticGraph::Element* root (0);
+ {
+ Traversal::Schema schema;
+ Sources sources;
+
+ schema >> sources >> schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ RootElement root_element (ctx.options, root);
+
+ schema >> schema_names >> ns >> ns_names >> root_element;
+
+ schema.dispatch (ctx.schema_root);
+ }
+
+ std::wostream& os (ctx.os);
+ String const& L (ctx.L);
+ String const& cerr (ctx.cerr_inst);
+
+ InstanceSet set;
+ TypeInstanceMap map;
+ SemanticGraph::Type& root_type (root->type ());
+
+ set.insert ("doc_p");
+
+ os << "#include <iostream>" << endl
+ << endl
+ << "int" << endl
+ << "main (int argc, char* argv[])"
+ << "{"
+ << "if (argc != 2)"
+ << "{"
+ << cerr << " << " << L << "\"usage: \" << argv[0] << " <<
+ L << "\" file.xml\" << std::endl;"
+ << "return 1;"
+ << "}"
+ << "try"
+ << "{"
+ << "// Instantiate individual parsers." << endl
+ << "//" << endl;
+
+ {
+ ParserDef def (ctx, map, set);
+ def.dispatch (root_type);
+ }
+
+ os << endl
+ << "// Connect the parsers together." << endl
+ << "//" << endl;
+
+ {
+ ParserConnect connect (ctx, map);
+ connect.dispatch (root_type);
+ }
+
+ String const& root_p (map[&root_type]);
+
+ os << "// Parse the XML document." << endl
+ << "//" << endl;
+
+ if (root->namespace_().name ())
+ os << ctx.xs_ns_name () << "::document doc_p (" << endl
+ << root_p << "," << endl
+ << ctx.strlit (root->namespace_().name ()) << "," << endl
+ << ctx.strlit (root->name ()) << ");"
+ << endl;
+ else
+ os << ctx.xs_ns_name () << "::document doc_p (" << root_p << ", " <<
+ ctx.strlit (root->name ()) << ");"
+ << endl;
+
+ os << root_p << ".pre ();"
+ << "doc_p.parse (argv[1]);";
+
+ String const& ret (Context::ret_type (root_type));
+ String const& post (Context::post_name (root_type));
+
+ if (ret == L"void")
+ os << root_p << "." << post << " ();";
+ else
+ {
+ os << Context::arg_type (root_type) << " v (" <<
+ root_p << "." << post << " ());"
+ << endl;
+
+ if (ctx.options.generate_print_impl ())
+ {
+ PrintCall t (ctx, root->name (), "v");
+ t.dispatch (root_type);
+ }
+ else
+ os << "// TODO" << endl
+ << "//" << endl;
+ }
+
+ os << "}" // try
+ << "catch (const " << ctx.xs_ns_name () << "::exception& e)"
+ << "{"
+ << cerr << " << e << std::endl;"
+ << "return 1;"
+ << "}"
+ << "catch (const std::ios_base::failure&)"
+ << "{"
+ << cerr << " << argv[1] << " <<
+ L << "\": error: io failure\" << std::endl;"
+ << "return 1;"
+ << "}"
+ << "}";
+ }
+ }
+}
diff --git a/xsd/cxx/parser/driver-source.hxx b/xsd/cxx/parser/driver-source.hxx
new file mode 100644
index 0000000..154091f
--- /dev/null
+++ b/xsd/cxx/parser/driver-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/parser/driver-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_DRIVER_SOURCE_HXX
+#define XSD_CXX_PARSER_DRIVER_SOURCE_HXX
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ void
+ generate_driver_source (Context&);
+ }
+}
+
+#endif // XSD_CXX_PARSER_DRIVER_SOURCE_HXX
diff --git a/xsd/cxx/parser/element-validation-source.cxx b/xsd/cxx/parser/element-validation-source.cxx
new file mode 100644
index 0000000..b5e1e9d
--- /dev/null
+++ b/xsd/cxx/parser/element-validation-source.cxx
@@ -0,0 +1,1600 @@
+// file : xsd/cxx/parser/element-validation-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <vector>
+
+#include <xsd/cxx/parser/element-validation-source.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ typedef vector<SemanticGraph::Particle*> Particles;
+
+ //
+ //
+ struct ParticleTest: Traversal::Compositor,
+ Traversal::Element,
+ Traversal::Any,
+ Context
+ {
+ ParticleTest (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ String const& name (e.name ());
+
+ if (polymorphic && e.global_p ())
+ os << "(";
+
+ if (e.qualified_p () && e.namespace_ ().name ())
+ {
+ String const& ns (e.namespace_ ().name ());
+
+ os << "n == " << strlit (name) << " &&" << endl
+ << "ns == " << strlit (ns);
+ }
+ else
+ os << "n == " << strlit (name) << " && ns.empty ()";
+
+
+ // Only a globally-defined element can be a subst-group root.
+ //
+ if (polymorphic && e.global_p ())
+ {
+ os << ") ||" << endl
+ << "::xsd::cxx::parser::substitution_map_instance< " <<
+ char_type << " > ().check (" << endl
+ << "ns, n, " << strlit (e.namespace_ ().name ()) <<
+ ", " << strlit (name) << ", t)";
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& ns (a.definition_namespace ().name ());
+
+ // Note that we need to make sure the "flush" element (both name
+ // and namespace are empty) does not match any compositor.
+ //
+ for (SemanticGraph::Any::NamespaceIterator i (a.namespace_begin ()),
+ e (a.namespace_end ()); i != e;)
+ {
+ if (*i == L"##any")
+ {
+ os << "!n.empty ()";
+ }
+ else if (*i == L"##other")
+ {
+ if (ns)
+ {
+ // Note that here I assume that ##other does not include
+ // unqualified names in a schema with target namespace.
+ // This is not what the spec says but that seems to be
+ // the consensus.
+ //
+ os << "(!ns.empty () && ns != " << strlit (ns) << ")";
+ }
+ else
+ os << "!ns.empty ()";
+ }
+ else if (*i == L"##local")
+ {
+ os << "(ns.empty () && !n.empty ())";
+ }
+ else if (*i == L"##targetNamespace")
+ {
+ os << "ns == " << strlit (ns);
+ }
+ else
+ {
+ os << "ns == " << strlit (*i);
+ }
+
+ if (++i != e)
+ os << " ||" << endl;
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Compositor& c)
+ {
+ // This compositor should already have been tested for
+ // triviality (empty).
+ //
+ Particles const& p (c.context ().get<Particles> ("prefixes"));
+
+ bool paren (p.size () != 1);
+
+ for (Particles::const_iterator i (p.begin ()), e (p.end ());
+ i != e;)
+ {
+ if (paren)
+ os << "(";
+
+ dispatch (**i);
+
+ if (paren)
+ os << ")";
+
+ if (++i != e)
+ os << " ||" << endl;
+ }
+ }
+ };
+
+
+ // Generates particle namespace-name pair. Used to generate
+ // the _expected_element call.
+ //
+ struct ParticleName: Traversal::Compositor,
+ Traversal::Element,
+ Traversal::Any,
+ Context
+ {
+ ParticleName (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ String ns (e.qualified_p () ? e.namespace_ ().name () : String ());
+ os << strlit (ns) << ", " << strlit (e.name ());
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& ns (*a.namespace_begin ());
+ os << strlit (ns) << ", " << L << "\"*\"";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Compositor& c)
+ {
+ Particles const& p (c.context ().get<Particles> ("prefixes"));
+
+ dispatch (**p.begin ());
+ }
+ };
+
+
+ // Common base for the ParticleIn{All, Choice, Sequence} treversers.
+ //
+ struct ParticleInCompositor: Context
+ {
+ protected:
+ ParticleInCompositor (Context& c, SemanticGraph::Complex& type)
+ : Context (c), type_ (type), particle_test_ (c)
+ {
+ }
+
+
+ // Generate sub-parser setup code as well as the pre/post calls.
+ //
+ void
+ pre_post_calls (SemanticGraph::Particle& p)
+ {
+ using SemanticGraph::Element;
+ using SemanticGraph::Complex;
+
+ if (Element* e = dynamic_cast<Element*> (&p))
+ {
+ SemanticGraph::Type& type (e->type ());
+ String const& fq_type (fq_name (type));
+ bool poly (polymorphic && !anonymous (type));
+
+ String name, inst, def_parser, map;
+
+ if (e->context ().count("name"))
+ {
+ name = ename (*e);
+
+ if (poly)
+ {
+ def_parser = emember (*e);
+ map = emember_map (*e);
+ inst = "p";
+ }
+ else
+ inst = L"this->" + emember (*e);
+ }
+ else
+ {
+ // This is the subsequent mentioning of this element in the
+ // content. We need to find the first one in order to get
+ // to the escaped names.
+ //
+ Complex::NamesIteratorPair ip (type_.find (e->name ()));
+ assert (ip.first != ip.second);
+ Element& fe (dynamic_cast<Element&>(ip.first->named ()));
+
+ name = ename (fe);
+
+ if (poly)
+ {
+ def_parser = emember (fe);
+ map = emember_map (fe);
+ inst = "p";
+ }
+ else
+ inst = L"this->" + emember (fe);
+ }
+
+ if (poly)
+ {
+ // For pre-computing length.
+ //
+ String type_id (type.name ());
+
+ if (String type_ns = xml_ns_name (type))
+ {
+ type_id += L' ';
+ type_id += type_ns;
+ }
+
+ os << fq_type << "* p = 0;"
+ << endl
+ << "if (t == 0 && this->" << def_parser << " != 0)" << endl
+ << inst << " = this->" << def_parser << ";"
+ << "else"
+ << "{"
+ << string_type << " ts (" << fq_name (type) <<
+ "::_static_type (), " << type_id.size () << "UL);"
+ << endl
+ << "if (t == 0)" << endl
+ << "t = &ts;"
+ << endl
+ << "if (this->" << def_parser << " != 0 && *t == ts)" << endl
+ << inst << " = this->" << def_parser << ";"
+ << "else"
+ << "{";
+
+ // Check that the types are related by inheritance.
+ //
+ os << "if (t != &ts &&" << endl
+ << "!::xsd::cxx::parser::validating::" <<
+ "inheritance_map_instance< " << char_type <<
+ " > ().check (" << endl
+ << "t->data (), ts))" << endl
+ << "throw ::xsd::cxx::parser::dynamic_type< " << char_type <<
+ " > (*t);"
+ << endl
+ << "if (this->" << map << " != 0)" << endl
+ << inst << " = dynamic_cast< " << fq_type << "* > (" << endl
+ << "this->" << map << "->find (*t));"
+ << "}"
+ << "}";
+ }
+
+ os << "this->" << complex_base << "::context_.top ()." <<
+ "parser_ = " << inst << ";"
+ << endl
+ << "if (" << inst << ")" << endl
+ << inst << "->pre ();"
+ << "}"
+ << "else" // start
+ << "{";
+
+ if (poly)
+ os << fq_type << "* p =" << endl
+ << "dynamic_cast< " << fq_type << "* > (" << endl
+ << "this->" << complex_base << "::context_.top ().parser_);"
+ << endl;
+
+ os << "if (" << inst << ")"
+ << "{";
+
+ String const& ret (ret_type (type));
+ String const& post (post_name (type));
+
+ if (ret == L"void")
+ os << inst << "->" << post << " ();"
+ << "this->" << name << " ();";
+ else
+ {
+ // Don't create an lvalue in C++11 (think std::unique_ptr).
+ // In C++98 we do it for compatibility with older/broken
+ // compilers (e.g., IBM xlC that needs an lvalue to pass
+ // std::auto_ptr).
+ //
+ if (std == cxx_version::cxx98)
+ os << arg_type (type) << " tmp (" << inst << "->" <<
+ post << " ());"
+ << "this->" << name << " (tmp);";
+ else
+ os << "this->" << name << " (" << inst << "->" <<
+ post << " ());";
+ }
+
+ os << "}";
+ }
+ else
+ {
+ os << "this->_start_any_element (ns, n, t);"
+ << "this->" << complex_base << "::context_.top ().any_ = true;"
+ << "}"
+ << "else" // start
+ << "{"
+ << "this->" << complex_base << "::context_.top ().any_ = false;"
+ << "this->_end_any_element (ns, n);";
+ }
+ }
+
+ protected:
+ SemanticGraph::Complex& type_;
+ ParticleTest particle_test_;
+ };
+
+
+
+ // The 'all' compositor can only contain elements with min={0,1}, max=1.
+ //
+ struct ParticleInAll: Traversal::Element,
+ ParticleInCompositor
+ {
+ ParticleInAll (Context& c, SemanticGraph::Complex& type)
+ : ParticleInCompositor (c, type)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ size_t state (e.context ().get<size_t> ("state"));
+
+ if (state != 0)
+ os << "else ";
+
+ os << "if (";
+
+ particle_test_.traverse (e);
+
+ os << ")"
+ << "{"
+ << "if (count[" << state << "UL] == 0)"
+ << "{"
+ << "if (start)"
+ << "{";
+
+ pre_post_calls (e);
+
+ os << "count[" << state << "UL] = 1;"
+ << "}"
+ << "}"
+ << "else" // count != 0
+ << "{"
+ << "assert (start);" // Assuming well-formed XML.
+
+ // Since there is never more content after 'all', we could have
+ // as well thrown here. But instead we will let the code in
+ // start_element handle this along with other unexpected
+ // elements.
+ //
+ << "state = ~0UL;"
+ << "}"
+ << "}";
+ }
+ };
+
+
+ //
+ //
+ struct ParticleInChoice: Traversal::Particle,
+ Traversal::Compositor,
+ ParticleInCompositor
+ {
+ ParticleInChoice (Context& c, SemanticGraph::Complex& type)
+ : ParticleInCompositor (c, type), particle_name_ (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Particle& p)
+ {
+ using SemanticGraph::Element;
+
+ size_t state (p.context ().get<size_t> ("state"));
+
+ size_t min (p.min ()), max (p.max ());
+
+ os << "case " << state << "UL:" << endl
+ << "{";
+
+ if (max != 1) // We don't need the test if max == 1.
+ {
+ os << "if (";
+
+ particle_test_.dispatch (p);
+
+ os << ")"
+ << "{";
+ }
+
+ os << "if (start)"
+ << "{";
+
+ pre_post_calls (p);
+
+ switch (max)
+ {
+ case 0:
+ {
+ os << "count++;";
+ break;
+ }
+ case 1:
+ {
+ // We do not need to increment count because min <= max and
+ // we do not generate min check for min <= 1 (see below).
+ //
+ os << "state = ~0UL;";
+ break;
+ }
+ default:
+ {
+ os << "if (++count == " << max << "UL)" << endl
+ << "state = ~0UL;";
+ }
+ };
+
+ os << "}"; // start
+
+ // We've already moved to the final state if max == 1.
+ //
+ if (max != 1)
+ {
+ os << "}"
+ << "else"
+ << "{"
+ << "assert (start);"; // Assuming well-formed XML
+
+ // Check if min cardinality requirements have been met. Since
+ // count is always >= 1, don't generate dead code if min <= 1.
+ //
+ if (min > 1)
+ {
+ os << "if (count < " << min << "UL)" << endl
+ << "this->_expected_element (" << endl;
+
+ particle_name_.dispatch (p);
+
+ os << "," << endl
+ << "ns, n);";
+ }
+
+
+ os << "state = ~0UL;"
+ << "}";
+ }
+
+ os << "break;"
+ << "}"; // case
+ }
+
+ virtual void
+ traverse (SemanticGraph::Compositor& c)
+ {
+ using SemanticGraph::Compositor;
+
+ size_t max (c.max ());
+ size_t min (c.context ().get<size_t> ("effective-min"));
+ size_t n (c.context ().get<size_t> ("comp-number"));
+ size_t state (c.context ().get<size_t> ("state"));
+
+ String func (c.is_a<SemanticGraph::Choice> () ?
+ "choice_" : "sequence_");
+
+ os << "case " << state << "UL:" << endl
+ << "{"
+ << "unsigned long s (~0UL);"
+ << endl;
+
+ bool first (true);
+
+ for (Compositor::ContainsIterator ci (c.contains_begin ());
+ ci != c.contains_end (); ++ci)
+ {
+ SemanticGraph::Particle& p (ci->particle ());
+
+ if (p.is_a<Compositor> () && !c.context ().count ("comp-number"))
+ continue; // Empty compositor.
+
+ if (!p.context ().count ("prefix"))
+ break;
+
+ size_t state (p.context ().get<size_t> ("state"));
+
+ if (first)
+ first = false;
+ else
+ os << "else ";
+
+ os << "if (";
+
+ particle_test_.dispatch (p);
+
+ os << ")" << endl
+ << "s = " << state << "UL;";
+ }
+
+ // This compositor.
+ //
+ os << endl
+ << "if (s != ~0UL)"
+ << "{"
+ << "assert (start);"; // End is handled by the sub-machine.
+
+ switch (max)
+ {
+ case 0:
+ {
+ os << "count++;";
+ break;
+ }
+ case 1:
+ {
+ // We do not need to increment count because min <= max and
+ // we do not generate min check for min <= 1 (see below).
+ //
+ os << "state = ~0UL;";
+ break;
+ }
+ default:
+ {
+ os << "if (++count == " << max << "UL)" << endl
+ << "state = ~0UL;";
+ }
+ };
+
+ // Delegate to the sub-machine.
+ //
+
+ os << endl
+ << "v_state_& vs = *static_cast< v_state_* > (" <<
+ "this->v_state_stack_.top ());"
+ << "v_state_descr_& vd = vs.data[vs.size++];" // push
+ << endl
+ << "vd.func = &" << ename (type_) << "::" << func << n << ";"
+ << "vd.state = s;"
+ << "vd.count = 0;"
+ << endl
+ << "this->" << func << n << " (vd.state, vd.count, ns, n, t, true);"
+ << "}";
+
+
+ // Not this compositor. We've elready moved to the final state
+ // if max == 1.
+ //
+ if (max != 1)
+ {
+ os << "else"
+ << "{"
+ << "assert (start);"; // Assuming well-formed XML
+
+ // Check if min cardinality requirements have been met. Since
+ // count is always >= 1, don't generate dead code if min <= 1.
+ //
+ if (min > 1)
+ {
+ os << "if (count < " << min << "UL)" << endl
+ << "this->_expected_element (" << endl;
+
+ particle_name_.dispatch (c);
+
+ os << "," << endl
+ << "ns, n);";
+ }
+
+ os << "state = ~0UL;"
+ << "}";
+ }
+
+ os << "break;"
+ << "}"; // case
+ }
+
+ private:
+ ParticleName particle_name_;
+ };
+
+
+ //
+ //
+ struct ParticleInSequence: Traversal::Particle,
+ Traversal::Compositor,
+ ParticleInCompositor
+ {
+ ParticleInSequence (Context& c,
+ size_t state,
+ size_t next_state,
+ SemanticGraph::Complex& type)
+ : ParticleInCompositor (c, type),
+ state_ (state), particle_name_ (c)
+ {
+ // next_state == 0 indicates the terminal state (~0UL).
+ //
+ if (next_state != 0)
+ {
+ std::wostringstream ostr;
+ ostr << next_state;
+ next_state_ = ostr.str ();
+ }
+ else
+ next_state_ = L"~0";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Particle& p)
+ {
+ size_t min (p.min ()), max (p.max ());
+
+ os << "case " << state_ << "UL:" << endl
+ << "{"
+ << "if (";
+
+ particle_test_.dispatch (p);
+
+ os << ")"
+ << "{";
+
+ // This element.
+ //
+
+ os << "if (start)"
+ << "{";
+
+ pre_post_calls (p);
+
+ switch (max)
+ {
+ case 0:
+ {
+ os << "count++;";
+ break;
+ }
+ case 1:
+ {
+ os << "count = 0;"
+ << "state = " << next_state_ << "UL;";
+ break;
+ }
+ default:
+ {
+ os << "if (++count == " << max << "UL)"
+ << "{"
+ << "count = 0;"
+ << "state = " << next_state_ << "UL;"
+ << "}";
+ }
+ };
+
+ os << "}" // start
+ << "break;"
+ << "}";
+
+ // Not this element.
+ //
+
+ os << "else"
+ << "{"
+ << "assert (start);"; // Assuming well-formed XML.
+
+ // Check if min cardinality requirements have been met. Since
+ // count is always >= 0, don't generate dead code if min == 0.
+ //
+ if (min != 0)
+ {
+ os << "if (count < " << min << "UL)" << endl
+ << "this->_expected_element (" << endl;
+
+ particle_name_.dispatch (p);
+
+ os << "," << endl
+ << "ns, n);";
+ }
+
+ os << "count = 0;"
+ << "state = " << next_state_ << "UL;"
+ << "}" // else
+ << "}" // case
+ << "// Fall through." << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Compositor& c)
+ {
+ using SemanticGraph::Compositor;
+
+ size_t max (c.max ());
+ size_t min (c.context ().get<size_t> ("effective-min"));
+ size_t n (c.context ().get<size_t> ("comp-number"));
+
+ String func (c.is_a<SemanticGraph::Choice> () ?
+ "choice_" : "sequence_");
+
+ os << "case " << state_ << "UL:" << endl
+ << "{"
+ << "unsigned long s (~0UL);"
+ << endl;
+
+ bool first (true);
+
+ for (Compositor::ContainsIterator ci (c.contains_begin ());
+ ci != c.contains_end (); ++ci)
+ {
+ SemanticGraph::Particle& p (ci->particle ());
+
+ if (p.is_a<Compositor> () && !c.context ().count ("comp-number"))
+ continue; // Empty compositor.
+
+ if (!p.context ().count ("prefix"))
+ break;
+
+ size_t state (p.context ().get<size_t> ("state"));
+
+ if (first)
+ first = false;
+ else
+ os << "else ";
+
+ os << "if (";
+
+ particle_test_.dispatch (p);
+
+ os << ")" << endl
+ << "s = " << state << "UL;";
+ }
+
+ // This element.
+ //
+
+ os << endl
+ << "if (s != ~0UL)"
+ << "{"
+ << "assert (start);"; // End is handled by the sub-machine.
+
+ switch (max)
+ {
+ case 0:
+ {
+ os << "count++;"
+ << endl;
+ break;
+ }
+ case 1:
+ {
+ os << "count = 0;"
+ << "state = " << next_state_ << "UL;"
+ << endl;
+ break;
+ }
+ default:
+ {
+ os << "if (++count == " << max << "UL)"
+ << "{"
+ << "count = 0;"
+ << "state = " << next_state_ << "UL;"
+ << "}";
+ }
+ };
+
+ // Delegate to the sub-machine.
+ //
+
+ os << "v_state_& vs = *static_cast< v_state_* > (" <<
+ "this->v_state_stack_.top ());"
+ << "v_state_descr_& vd = vs.data[vs.size++];" // push
+ << endl
+ << "vd.func = &" << ename (type_) << "::" << func << n << ";"
+ << "vd.state = s;"
+ << "vd.count = 0;"
+ << endl
+ << "this->" << func << n << " (vd.state, vd.count, ns, n, t, true);"
+ << "break;"
+ << "}";
+
+ // Not this compositor.
+ //
+
+ os << "else"
+ << "{"
+ << "assert (start);"; // Assuming well-formed XML
+
+ // Check if min cardinality requirements have been met. Since
+ // count is always >= 0, don't generate dead code if min == 0.
+ //
+ if (min != 0)
+ {
+ os << "if (count < " << min << "UL)" << endl
+ << "this->_expected_element (" << endl;
+
+ particle_name_.dispatch (c);
+
+ os << "," << endl
+ << "ns, n);";
+ }
+
+ os << "count = 0;"
+ << "state = " << next_state_ << "UL;"
+ << "}" // else
+ << "}" // case
+ << "// Fall through." << endl;
+ }
+
+ private:
+ size_t state_;
+ String next_state_;
+
+ ParticleName particle_name_;
+ };
+
+
+ //
+ //
+ struct ParticleFunction: Traversal::All,
+ Traversal::Choice,
+ Traversal::Sequence,
+ Context
+ {
+ ParticleFunction (Context& c, SemanticGraph::Complex& type)
+ : Context (c), type_ (type)
+ {
+ *this >> contains_particle_ >> *this;
+ }
+
+
+ virtual void
+ traverse (SemanticGraph::All& a)
+ {
+ if (!a.context().count ("comp-number")) // Empty compositor.
+ return;
+
+ using SemanticGraph::Element;
+ using SemanticGraph::Compositor;
+
+
+ os << "void " << ename (type_) << "::" << endl
+ << "all_0 (unsigned long& state," << endl
+ << "unsigned char* count," << endl
+ << "const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "* t," << endl
+ << "bool start)"
+ << "{"
+ << "XSD_UNUSED (t);"
+ << endl;
+
+ for (Compositor::ContainsIterator ci (a.contains_begin ()),
+ ce (a.contains_end ()); ci != ce; ++ci)
+ {
+ ParticleInAll t (*this, type_);
+ t.dispatch (ci->particle ());
+ }
+
+ // Handle the flush.
+ //
+ os << "else if (n.empty () && ns.empty ())"
+ << "{";
+
+ for (Compositor::ContainsIterator ci (a.contains_begin ()),
+ ce (a.contains_end ()); ci != ce; ++ci)
+ {
+ if (ci->min () == 0)
+ continue;
+
+ Element& e (dynamic_cast<Element&> (ci->particle ()));
+ String ns (e.qualified_p () ? e.namespace_ ().name () : String ());
+ size_t state (e.context ().get<size_t> ("state"));
+
+ os << "if (count[" << state << "UL] == 0)" << endl
+ << "this->_expected_element (" << endl
+ << strlit (ns) << ", " <<
+ strlit (e.name ()) << ");"
+ << endl;
+ }
+
+ os << "state = ~0UL;"
+ << "}"
+ << "else" << endl
+ << "state = ~0UL;"
+ << "}";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Choice& c)
+ {
+ if (!c.context().count ("comp-number")) // Empty compositor.
+ return;
+
+ using SemanticGraph::Compositor;
+
+ size_t n (c.context ().get<size_t> ("comp-number"));
+
+ os << "void " << ename (type_) << "::" << endl
+ << "choice_" << n << " (unsigned long& state," << endl
+ << "unsigned long& count," << endl
+ << "const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "* t," << endl
+ << "bool start)"
+ << "{"
+ << "XSD_UNUSED (count);"
+ << "XSD_UNUSED (ns);"
+ << "XSD_UNUSED (n);"
+ << "XSD_UNUSED (t);"
+ << endl
+ << "switch (state)"
+ << "{";
+
+ for (Compositor::ContainsIterator ci (c.contains_begin ()),
+ ce (c.contains_end ()); ci != ce; ++ci)
+ {
+ SemanticGraph::Particle& p (ci->particle ());
+
+ if (p.is_a<Compositor> () && !p.context().count ("comp-number"))
+ continue; // Empty compositor.
+
+ ParticleInChoice t (*this, type_);
+ t.dispatch (p);
+ }
+
+ os << "}" // switch
+ << "}";
+
+ // Generate nested compositor functions.
+ //
+ Traversal::Choice::traverse (c);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Sequence& s)
+ {
+ if (!s.context().count ("comp-number")) // Empty compositor.
+ return;
+
+ using SemanticGraph::Compositor;
+
+ size_t n (s.context ().get<size_t> ("comp-number"));
+
+ os << "void " << ename (type_) << "::" << endl
+ << "sequence_" << n << " (unsigned long& state," << endl
+ << "unsigned long& count," << endl
+ << "const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "* t," << endl
+ << "bool start)"
+ << "{"
+ << "XSD_UNUSED (t);"
+ << endl
+ << "switch (state)"
+ << "{";
+
+ size_t state (0);
+
+ for (Compositor::ContainsIterator ci (s.contains_begin ()),
+ ce (s.contains_end ()); ci != ce;)
+ {
+ SemanticGraph::Particle& p (ci->particle ());
+
+ if (p.is_a<Compositor> () && !p.context().count ("comp-number"))
+ {
+ // Empty compositor.
+ //
+ ++ci;
+ continue;
+ }
+
+ // Find the next state.
+ //
+ do
+ ++ci;
+ while (ci != ce &&
+ ci->particle ().is_a<Compositor> () &&
+ !ci->particle ().context().count ("comp-number"));
+
+ size_t next (ci == ce ? 0 : state + 1);
+
+ ParticleInSequence t (*this, state++, next, type_);
+ t.dispatch (p);
+ }
+
+ os << "case ~0UL:" << endl
+ << "break;"
+ << "}" // switch
+ << "}";
+
+ // Generate nested compositor functions.
+ //
+ Traversal::Sequence::traverse (s);
+ }
+
+ private:
+ SemanticGraph::Complex& type_;
+ Traversal::ContainsParticle contains_particle_;
+ };
+
+
+ //
+ //
+ struct CompositorPre: Traversal::All,
+ Traversal::Compositor,
+ Context
+ {
+ CompositorPre (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::All& a)
+ {
+ // Clear the counts and push the initial state.
+ //
+ os << "v_all_count_.push ();"
+ << endl;
+
+ SemanticGraph::Compositor& c (a);
+ traverse (c);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Compositor&) // Choice and sequence.
+ {
+ os << "v_state_& vs = *static_cast< v_state_* > (" <<
+ "this->v_state_stack_.top ());"
+ << "v_state_descr_& vd = vs.data[vs.size++];" // push
+ << endl
+ << "vd.func = 0;"
+ << "vd.state = 0;"
+ << "vd.count = 0;";
+ }
+ };
+
+
+ //
+ //
+ struct CompositorStartElement: Traversal::All,
+ Traversal::Compositor,
+ Context
+ {
+ CompositorStartElement (Context& c, SemanticGraph::Complex& type)
+ : Context (c), type_ (type),
+ particle_test_ (c), particle_name_ (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::All&)
+ {
+ // The 'all' state machine reaches the final state only
+ // on an unknown element, in which case we won't get here
+ // again (it would be a validation error). Note that 'all'
+ // compositor cannot contain nested compositors so we don't
+ // need to re-set vd.
+ //
+ os << "all_0 (vd->state, v_all_count_.top (), ns, n, t, true);"
+ << endl
+ << "if (vd->state != ~0UL)" << endl
+ << "vd->count++;"
+ << "else" << endl
+ << "return false;" // Let our parent handle this.
+ << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Compositor& c) // Choice and sequence.
+ {
+ using SemanticGraph::Compositor;
+
+ size_t max (c.max ());
+ size_t min (c.context ().get<size_t> ("effective-min"));
+ size_t n (c.context ().get<size_t> ("comp-number"));
+
+ String func (c.is_a<SemanticGraph::Choice> () ?
+ "choice_" : "sequence_");
+
+ // Invoke the current state machine. If it reaches its
+ // terminal state, pop it and invoke the next one until
+ // we reach the top, which requires special handling.
+ //
+ os << "while (vd->func != 0)"
+ << "{"
+ << "(this->*vd->func) (vd->state, vd->count, ns, n, t, true);"
+ << endl
+ << "vd = vs.data + (vs.size - 1);" // re-acquire
+ << endl
+ << "if (vd->state == ~0UL)" << endl
+ << "vd = vs.data + (--vs.size - 1);" // pop
+ << "else" << endl
+ << "break;"
+ << "}";
+
+
+ // Check if we got to the top. This code is pretty much the
+ // same as the one found in ParticleInSequence.
+ //
+ os << "if (vd->func == 0)"
+ << "{"
+ << "if (vd->state != ~0UL)"
+ << "{"
+ << "unsigned long s = ~0UL;"
+ << endl;
+
+ bool first (true);
+
+ // Note that we don't need to worry about the compositor
+ // being empty - this case is handled by our caller.
+ //
+ for (Compositor::ContainsIterator ci (c.contains_begin ());
+ ci != c.contains_end (); ++ci)
+ {
+ SemanticGraph::Particle& p (ci->particle ());
+
+ if (p.is_a<Compositor> () && !c.context ().count ("comp-number"))
+ continue; // Empty compositor.
+
+ if (!p.context ().count ("prefix"))
+ break;
+
+ size_t state (p.context ().get<size_t> ("state"));
+
+ if (first)
+ first = false;
+ else
+ os << "else ";
+
+ os << "if (";
+
+ particle_test_.dispatch (p);
+
+ os << ")" << endl
+ << "s = " << state << "UL;";
+ }
+
+ os << endl
+ << "if (s != ~0UL)"
+ << "{";
+
+ // This element is a prefix of the root compositor.
+ //
+
+ switch (max)
+ {
+ case 0:
+ {
+ os << "vd->count++;";
+ break;
+ }
+ case 1:
+ {
+ os << "vd->count++;"
+ << "vd->state = ~0UL;";
+ break;
+ }
+ default:
+ {
+ os << "if (++vd->count == " << max << "UL)" << endl
+ << "vd->state = ~0UL;";
+ }
+ };
+
+ // Delegate to the sub-machine.
+ //
+
+ os << endl
+ << "vd = vs.data + vs.size++;" // push
+ << "vd->func = &" << ename (type_) << "::" << func << n << ";"
+ << "vd->state = s;"
+ << "vd->count = 0;"
+ << endl
+ << "this->" << func << n << " (vd->state, vd->count, ns, n, t, true);"
+ << "}";
+
+ // This element is not our prefix.
+ //
+
+ os << "else"
+ << "{";
+
+ // Check if min cardinality requirements have been met. Since
+ // count is always >= 0, don't generate dead code if min == 0.
+ //
+ if (min != 0)
+ {
+ os << "if (vd->count < " << min << "UL)" << endl
+ << "this->_expected_element (" << endl;
+
+ particle_name_.dispatch (c);
+
+ os << "," << endl
+ << "ns, n);";
+ }
+
+ // Return false to indicate that we are not handling this element.
+ //
+ os << "return false;"
+ << "}"
+ << "}" // if (state != ~0)
+ << "else" << endl
+ << "return false;"
+ << "}"; // if (function == 0)
+ }
+
+ private:
+ SemanticGraph::Complex& type_;
+ ParticleTest particle_test_;
+ ParticleName particle_name_;
+ };
+
+
+ //
+ //
+ struct CompositorEndElement: Traversal::All,
+ Traversal::Compositor,
+ Context
+ {
+ CompositorEndElement (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::All&)
+ {
+ os << "all_0 (vd.state, v_all_count_.top (), " <<
+ "ns, n, 0, false);"
+ << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Compositor&) // Choice and sequence.
+ {
+ os << "assert (vd.func != 0);"
+ << "(this->*vd.func) (vd.state, vd.count, ns, n, 0, false);"
+ << endl
+ << "if (vd.state == ~0UL)" << endl
+ << "vs.size--;" // pop
+ << endl;
+ }
+ };
+
+
+ //
+ //
+ struct CompositorPost: Traversal::All,
+ Traversal::Compositor,
+ Context
+ {
+ CompositorPost (Context& c)
+ : Context (c), particle_name_ (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::All& a)
+ {
+ using SemanticGraph::Element;
+
+ os << "v_state_& vs = *static_cast< v_state_* > (" <<
+ "this->v_state_stack_.top ());"
+ << "v_state_descr_& vd = vs.data[vs.size - 1];"
+ << endl;
+
+ // Flush the state machine with the empty element name. This
+ // allows us to detect missing content.
+ //
+ os << "if (vd.count != 0)"
+ << "{"
+ << string_type << " empty;"
+ << "all_0 (vd.state, v_all_count_.top (), empty, empty, 0, true);"
+ << "}";
+
+ if (a.context ().get<size_t> ("effective-min") != 0)
+ {
+ os << "else" << endl
+ << "this->_expected_element (" << endl;
+
+ particle_name_.dispatch (a);
+
+ os << ");";
+ }
+
+ os << endl
+ << "vs.size--;" // pop
+ << "v_all_count_.pop ();";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Compositor& c) // Choice and sequence.
+ {
+ size_t min (c.context ().get<size_t> ("effective-min"));
+
+ os << "v_state_& vs = *static_cast< v_state_* > (" <<
+ "this->v_state_stack_.top ());"
+ << "v_state_descr_* vd = vs.data + (vs.size - 1);"
+ << endl;
+
+
+ // Flush unfinished state machines with the empty element name.
+ // This allows us to detect missing content. Note that I am
+ // not re-setting vd since no new compositors are pushed on
+ // flush.
+ //
+ os << string_type << " empty;"
+ << "while (vd->func != 0)"
+ << "{"
+ << "(this->*vd->func) (vd->state, vd->count, empty, empty, 0, true);"
+ << "assert (vd->state == ~0UL);"
+ << "vd = vs.data + (--vs.size - 1);" // pop
+ << "}";
+
+ // Check if min cardinality requirements have been met. Since
+ // count is always >= 0, don't generate dead code if min == 0.
+ //
+ if (min != 0)
+ {
+ os << "if (vd->count < " << min << "UL)" << endl
+ << "this->_expected_element (" << endl;
+
+ particle_name_.dispatch (c);
+
+ os << ");";
+ }
+ }
+
+ private:
+ ParticleName particle_name_;
+ };
+
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ // Nothing to generate if we don't have any elements and wildcards.
+ //
+ if (!has<Traversal::Element> (c) &&
+ !has_particle<Traversal::Any> (c))
+ return;
+
+ using SemanticGraph::Compositor;
+
+ String const& name (ename (c));
+ Compositor& comp (c.contains_compositor ().compositor ());
+
+ // Don't use restriction_p here since we don't want special
+ // treatment of anyType.
+ //
+ bool restriction (
+ c.inherits_p () &&
+ c.inherits ().is_a<SemanticGraph::Restricts> ());
+
+ os <<"// Element validation and dispatch functions for " <<
+ name << "." << endl
+ <<"//" << endl;
+
+ // _start_element_impl
+ //
+
+ os << "bool " << name << "::" << endl
+ << "_start_element_impl (const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "* t)"
+ << "{"
+ << "XSD_UNUSED (t);"
+ << endl;
+
+ os << "v_state_& vs = *static_cast< v_state_* > (" <<
+ "this->v_state_stack_.top ());"
+ << "v_state_descr_* vd = vs.data + (vs.size - 1);"
+ << endl;
+
+ //@@ OPT: I don't really need to call parser_base since it always
+ // returns false.
+ //
+ // In case of an inheritance-by-extension, call our base first.
+ // We don't need to generate this code for the 'all' compositor
+ // because it can only inherit from the empty content model.
+ // States of the root machine for sequence and choice:
+ //
+ // 0 - calling base
+ // 1 - base returned false
+ // ~0 - terminal state
+ //
+ if (!restriction && !comp.is_a<SemanticGraph::All> ())
+ {
+ os << "if (vd->func == 0 && vd->state == 0)"
+ << "{"
+ << "if (this->";
+
+ if (c.inherits_p ())
+ os << fq_name (c.inherits ().base ());
+ else
+ os << complex_base;
+
+
+ os << "::_start_element_impl (ns, n, t))" << endl
+ << "return true;"
+ << "else" << endl
+ << "vd->state = 1;"
+ << "}";
+ }
+
+ {
+ CompositorStartElement t (*this, c);
+ t.dispatch (comp);
+ }
+
+ os << "return true;"
+ << "}";
+
+
+ // _end_element_impl
+ //
+
+ os << "bool " << name << "::" << endl
+ << "_end_element_impl (const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n)"
+ << "{";
+
+ os << "v_state_& vs = *static_cast< v_state_* > (" <<
+ "this->v_state_stack_.top ());"
+ << "v_state_descr_& vd = vs.data[vs.size - 1];"
+ << endl;
+
+ //@@ OPT: I don't really need to call parser_base since it always
+ // returns false.
+ //
+ // In case of an inheritance-by-extension, call our base first.
+ // We don't need to generate this code for the 'all' compositor
+ // because it can only inherit from the empty content model.
+ //
+ if (!restriction && !comp.is_a<SemanticGraph::All> ())
+ {
+ os << "if (vd.func == 0 && vd.state == 0)"
+ << "{"
+ << "if (!";
+
+ if (c.inherits_p ())
+ os << fq_name (c.inherits ().base ());
+ else
+ os << complex_base;
+
+ os << "::_end_element_impl (ns, n))" << endl
+ << "assert (false);" // Start and end should match.
+ << "return true;"
+ << "}";
+ }
+
+ {
+ CompositorEndElement t (*this);
+ t.dispatch (comp);
+ }
+
+ os << "return true;"
+ << "}";
+
+
+ // _pre_e_validate
+ //
+ os << "void " << name << "::" << endl
+ << "_pre_e_validate ()"
+ << "{"
+ << "this->v_state_stack_.push ();"
+ << "static_cast< v_state_* > (this->v_state_stack_.top ())->" <<
+ "size = 0;"
+ << endl;
+
+ {
+ CompositorPre t (*this);
+ t.dispatch (comp);
+ }
+
+ // In case of an inheritance-by-extension, call our base
+ // _pre_e_validate. We don't need to generate this code for the
+ // 'all' compositor because it can only inherit from the empty
+ // content model.
+ //
+ if (!restriction && !comp.is_a<SemanticGraph::All> ())
+ {
+ // We don't need to call parser_base's implementation
+ // since it does nothing.
+ //
+ if (c.inherits_p ())
+ {
+ os << endl
+ << fq_name (c.inherits ().base ()) << "::_pre_e_validate ();";
+ }
+ }
+
+ os << "}";
+
+
+ // _post_e_validate
+ //
+ os << "void " << name << "::" << endl
+ << "_post_e_validate ()"
+ << "{";
+
+ // In case of an inheritance-by-extension, call our base
+ // _post_e_validate. We don't need to generate this code for
+ // the 'all' compositor because it can only inherit from
+ // the empty content model.
+ //
+ if (!restriction && !comp.is_a<SemanticGraph::All> ())
+ {
+ // We don't need to call parser_base's implementation
+ // since it does nothing.
+ //
+ if (c.inherits_p ())
+ {
+ os << fq_name (c.inherits ().base ()) << "::_post_e_validate ();"
+ << endl;
+ }
+ }
+
+ {
+ CompositorPost t (*this);
+ t.dispatch (c.contains_compositor ().compositor ());
+ }
+
+ os << endl
+ << "this->v_state_stack_.pop ();"
+ << "}";
+
+ //
+ //
+ ParticleFunction t (*this, c);
+ t.dispatch (c.contains_compositor ().compositor ());
+ }
+ };
+ }
+
+ void
+ generate_element_validation_source (Context& ctx)
+ {
+ ctx.os << "#include <cassert>" << endl
+ << endl;
+
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names schema_names;
+
+ Namespace ns (ctx);
+ Traversal::Names names;
+
+ schema >> sources >> schema;
+ schema >> schema_names >> ns >> names;
+
+ Complex complex (ctx);
+
+ names >> complex;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/parser/element-validation-source.hxx b/xsd/cxx/parser/element-validation-source.hxx
new file mode 100644
index 0000000..b358aee
--- /dev/null
+++ b/xsd/cxx/parser/element-validation-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/parser/element-validation-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_ELEMENT_VALIDATION_SOURCE_HXX
+#define XSD_CXX_PARSER_ELEMENT_VALIDATION_SOURCE_HXX
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ void
+ generate_element_validation_source (Context&);
+ }
+}
+
+#endif // XSD_CXX_PARSER_ELEMENT_VALIDATION_SOURCE_HXX
diff --git a/xsd/cxx/parser/elements.cxx b/xsd/cxx/parser/elements.cxx
new file mode 100644
index 0000000..63fb3d5
--- /dev/null
+++ b/xsd/cxx/parser/elements.cxx
@@ -0,0 +1,247 @@
+// file : xsd/cxx/parser/elements.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ Context::
+ Context (std::wostream& o,
+ SemanticGraph::Schema& root,
+ SemanticGraph::Path const& path,
+ options_type const& ops,
+ StringLiteralMap const* map,
+ Regex const* he,
+ Regex const* ie,
+ Regex const* hie)
+ : CXX::Context (o, root, path, ops, map),
+ options (ops),
+ xml_parser (xml_parser_),
+ simple_base (simple_base_),
+ complex_base (complex_base_),
+ list_base (list_base_),
+ cout_inst (cout_inst_),
+ cerr_inst (cerr_inst_),
+ parser_map (parser_map_),
+ std_string_type (std_string_type_),
+ validation (validation_),
+ polymorphic (polymorphic_),
+ hxx_expr (he),
+ ixx_expr (ie),
+ hxx_impl_expr (hie),
+ xml_parser_ (ops.xml_parser ()),
+ validation_ ((ops.xml_parser () == "expat" ||
+ ops.generate_validation ()) &&
+ !ops.suppress_validation ()),
+ polymorphic_ (ops.generate_polymorphic ())
+ {
+ if (char_type == L"char")
+ std_string_type = L"::std::string";
+ else if (char_type == L"wchar_t")
+ std_string_type = L"::std::wstring";
+ else
+ std_string_type = L"::std::basic_string< " + char_type + L" >";
+
+ String xs_ns (xs_ns_name ());
+
+ string_type = xs_ns + L"::ro_string";
+ simple_base = xs_ns + L"::simple_content";
+ complex_base = xs_ns + L"::complex_content";
+ list_base = xs_ns + L"::list_base";
+
+ cout_inst = (char_type == L"char" ? L"std::cout" : L"std::wcout");
+ cerr_inst = (char_type == L"char" ? L"std::cerr" : L"std::wcerr");
+
+ if (polymorphic)
+ parser_map_ = xs_ns + L"::parser_map";
+ }
+
+ Context::
+ Context (Context& c)
+ : CXX::Context (c),
+ options (c.options),
+ xml_parser (c.xml_parser),
+ simple_base (c.simple_base),
+ complex_base (c.complex_base),
+ list_base (c.list_base),
+ cout_inst (c.cout_inst),
+ cerr_inst (c.cerr_inst),
+ parser_map (c.parser_map),
+ std_string_type (c.std_string_type),
+ validation (c.validation),
+ polymorphic (c.polymorphic),
+ hxx_expr (c.hxx_expr),
+ ixx_expr (c.ixx_expr),
+ hxx_impl_expr (c.hxx_impl_expr)
+ {
+ }
+
+ Context::
+ Context (Context& c, std::wostream& o)
+ : CXX::Context (c, o),
+ options (c.options),
+ xml_parser (c.xml_parser),
+ simple_base (c.simple_base),
+ complex_base (c.complex_base),
+ list_base (c.list_base),
+ cout_inst (c.cout_inst),
+ cerr_inst (c.cerr_inst),
+ parser_map (c.parser_map),
+ std_string_type (c.std_string_type),
+ validation (c.validation),
+ polymorphic (c.polymorphic),
+ hxx_expr (c.hxx_expr),
+ ixx_expr (c.ixx_expr),
+ hxx_impl_expr (c.hxx_impl_expr)
+ {
+ }
+
+ Content::Value Context::
+ content (SemanticGraph::Complex& c)
+ {
+ using namespace SemanticGraph;
+
+ if (c.mixed_p ())
+ return Content::mixed;
+
+ if (c.inherits_p ())
+ {
+ Type& base (c.inherits ().base ());
+
+ if (Complex* cb = dynamic_cast<Complex*> (&base))
+ return content (*cb);
+
+ if (base.is_a<AnyType> ())
+ return Content::complex;
+
+ // Everyhting else (built-in type and AnySimpleType) is simple
+ // content.
+ //
+ return Content::simple;
+ }
+ else
+ return Content::complex;
+ }
+
+ bool Context::
+ anonymous (SemanticGraph::Type& t)
+ {
+ return t.context ().count ("anonymous");
+ }
+
+ String const& Context::
+ ret_type (SemanticGraph::Type& t)
+ {
+ return t.context ().get<String> ("ret-type");
+ }
+
+ String const& Context::
+ arg_type (SemanticGraph::Type& t)
+ {
+ return t.context ().get<String> ("arg-type");
+ }
+
+ String const& Context::
+ post_name (SemanticGraph::Type& t)
+ {
+ return t.context ().get<String> ("post");
+ }
+
+ String const& Context::
+ eparser (SemanticGraph::Member& m)
+ {
+ return m.context ().get<String> ("parser");
+ }
+
+ String const& Context::
+ emember (SemanticGraph::Member& m)
+ {
+ return m.context ().get<String> ("member");
+ }
+
+ String const& Context::
+ emember_map (SemanticGraph::Member& m)
+ {
+ return m.context ().get<String> ("member-map");
+ }
+
+ String const& Context::
+ eimpl (SemanticGraph::Type& t)
+ {
+ return t.context ().get<String> ("impl");
+ }
+
+ // Includes
+ //
+ void TypeForward::
+ traverse (SemanticGraph::Type& t)
+ {
+ os << "class " << t.context ().get<String> (name_key_) << ";";
+ }
+
+ void Includes::
+ traverse_ (SemanticGraph::Uses& u)
+ {
+ // Support for weak (forward) inclusion used in the file-per-type
+ // compilation model.
+ //
+ SemanticGraph::Schema& s (u.schema ());
+ bool weak (u.context ().count ("weak"));
+
+ if (weak && (type_ == header || type_ == impl_header))
+ {
+ // Generate forward declarations. We don't really need them
+ // in the impl files.
+ //
+ if (type_ == header)
+ schema_.dispatch (s);
+
+ return;
+ }
+
+ if (type_ == source && !weak)
+ return;
+
+ SemanticGraph::Path path (
+ s.context ().count ("renamed")
+ ? s.context ().get<SemanticGraph::Path> ("renamed")
+ : u.path ());
+ path.normalize ();
+
+ // Try to use the portable representation of the path. If that
+ // fails, fall back to the native representation.
+ //
+ NarrowString path_str;
+ try
+ {
+ path_str = path.posix_string ();
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
+ path_str = path.string ();
+ }
+
+ String inc_path;
+
+ switch (type_)
+ {
+ case header:
+ case source:
+ {
+ inc_path = ctx_.hxx_expr->replace (path_str);
+ break;
+ }
+ case impl_header:
+ {
+ inc_path = ctx_.hxx_impl_expr->replace (path_str);
+ break;
+ }
+ }
+
+ ctx_.os << "#include " << ctx_.process_include_path (inc_path) << endl
+ << endl;
+ }
+ }
+}
diff --git a/xsd/cxx/parser/elements.hxx b/xsd/cxx/parser/elements.hxx
new file mode 100644
index 0000000..0015923
--- /dev/null
+++ b/xsd/cxx/parser/elements.hxx
@@ -0,0 +1,315 @@
+// file : xsd/cxx/parser/elements.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_ELEMENTS_HXX
+#define XSD_CXX_PARSER_ELEMENTS_HXX
+
+#include <sstream>
+
+#include <libcutl/re.hxx>
+
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/elements.hxx>
+
+#include <xsd/cxx/parser/options.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ struct Content
+ {
+ enum Value
+ {
+ simple,
+ complex,
+ mixed
+ };
+ };
+
+ //
+ //
+ class Context: public CXX::Context
+ {
+ public:
+ typedef cutl::re::regexsub Regex;
+
+ typedef Parser::options options_type;
+
+ public:
+ Context (std::wostream&,
+ SemanticGraph::Schema&,
+ SemanticGraph::Path const& path,
+ options_type const&,
+ StringLiteralMap const*,
+ Regex const* hxx_expr,
+ Regex const* ixx_expr,
+ Regex const* hxx_impl_expr);
+
+ protected:
+ Context (Context& c);
+ Context (Context& c, std::wostream& o);
+
+ public:
+ bool
+ restriction_p (SemanticGraph::Complex& c) const
+ {
+ if (c.inherits_p () &&
+ c.inherits ().is_a<SemanticGraph::Restricts> ())
+ {
+ // Restriction of anyType is a special case.
+ //
+ return !c.inherits ().base ().is_a<SemanticGraph::AnyType> ();
+ }
+
+ return false;
+ }
+
+ public:
+ static Content::Value
+ content (SemanticGraph::Complex&);
+
+ public:
+ static bool
+ anonymous (SemanticGraph::Type&);
+
+ public:
+ static String const&
+ ret_type (SemanticGraph::Type&);
+
+ static String const&
+ arg_type (SemanticGraph::Type&);
+
+ static String const&
+ post_name (SemanticGraph::Type&);
+
+ public:
+ static String const&
+ eparser (SemanticGraph::Member&);
+
+ static String const&
+ emember (SemanticGraph::Member&);
+
+ static String const&
+ emember_map (SemanticGraph::Member&);
+
+ public:
+ static String const&
+ eimpl (SemanticGraph::Type&);
+
+ public:
+ options_type const& options;
+ String& xml_parser;
+ String& simple_base;
+ String& complex_base;
+ String& list_base;
+ String& cout_inst;
+ String& cerr_inst;
+ String& parser_map;
+ String& std_string_type;
+ bool& validation;
+ bool& polymorphic;
+
+ Regex const* hxx_expr;
+ Regex const* ixx_expr;
+ Regex const* hxx_impl_expr;
+
+ private:
+ String xml_parser_;
+ String simple_base_;
+ String complex_base_;
+ String list_base_;
+ String cout_inst_;
+ String cerr_inst_;
+ String parser_map_;
+ String std_string_type_;
+ bool validation_;
+ bool polymorphic_;
+ };
+
+ //
+ //
+ struct RequiredAttributeTest: Traversal::Attribute
+ {
+ RequiredAttributeTest (bool& result)
+ : result_ (result)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ if (!result_ && !a.optional_p ())
+ result_ = true;
+ }
+
+ private:
+ bool& result_;
+ };
+
+ //
+ //
+ struct ParserParamDecl: Traversal::Complex,
+ Traversal::List,
+ Traversal::Member,
+ Context
+ {
+ ParserParamDecl (Context& c, bool name_arg)
+ : Context (c), first_ (true), name_arg_ (name_arg)
+ {
+ inherits_ >> *this;
+ names_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ inherits (c, inherits_);
+
+ if (!restriction_p (c))
+ names (c, names_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::List& l)
+ {
+ if (!first_)
+ os << "," << endl;
+ else
+ first_ = false;
+
+ os << fq_name (l.argumented ().type ()) << "&";
+
+ if (name_arg_)
+ os << " " << ename (l) << "_item";
+ else
+ os << " /* " << comment (l.name ()) << " item */";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Member& m)
+ {
+ if (skip (m)) return;
+
+ if (!first_)
+ os << "," << endl;
+ else
+ first_ = false;
+
+ os << fq_name (m.type ()) << "&";
+
+ if (name_arg_)
+ os << " " << ename (m);
+ else
+ os << " /* " << comment (m.name ()) << " */";
+ }
+
+ private:
+ Traversal::Inherits inherits_;
+ Traversal::Names names_;
+
+ bool first_;
+ bool name_arg_;
+ };
+
+
+ //
+ //
+ struct TypeForward: Traversal::Type, Context
+ {
+ TypeForward (Context& c, char const* name_key)
+ : Context (c), name_key_ (name_key)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t);
+
+ private:
+ char const* name_key_;
+ };
+
+ struct Includes: Traversal::Imports,
+ Traversal::Includes
+ {
+ enum Type
+ {
+ header,
+ source,
+ impl_header
+ };
+
+ Includes (Context& c, Type t)
+ : ctx_ (c),
+ type_ (t),
+ namespace_ (c),
+ type_forward_ (c, t == header ? "name" : "impl")
+ {
+ schema_ >> schema_names_ >> namespace_ >> names_ >> type_forward_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Imports& i)
+ {
+ traverse_ (i);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Includes& i)
+ {
+ traverse_ (i);
+ }
+
+ private:
+ void
+ traverse_ (SemanticGraph::Uses&);
+
+ private:
+ Context& ctx_;
+ Type type_;
+
+ Traversal::Schema schema_;
+ Traversal::Names schema_names_;
+ Namespace namespace_;
+ Traversal::Names names_;
+ TypeForward type_forward_;
+ };
+
+ // Find root element for the test driver.
+ //
+ struct RootElement: Traversal::Element
+ {
+ typedef Parser::options options_type;
+
+ RootElement (options_type const& options,
+ SemanticGraph::Element*& element)
+ : options_ (options), element_ (element)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (options_.root_element_first ())
+ {
+ if (element_ == 0)
+ element_ = &e;
+ }
+ else if (String name = options_.root_element ())
+ {
+ if (e.name () == name)
+ element_ = &e;
+ }
+ else
+ element_ = &e; // Cover root-element-last and no option.
+ }
+
+ private:
+ options_type const& options_;
+ SemanticGraph::Element*& element_;
+ };
+ }
+}
+
+#endif // XSD_CXX_PARSER_ELEMENTS_HXX
diff --git a/xsd/cxx/parser/generator.cxx b/xsd/cxx/parser/generator.cxx
new file mode 100644
index 0000000..b1acdbb
--- /dev/null
+++ b/xsd/cxx/parser/generator.cxx
@@ -0,0 +1,1133 @@
+// file : xsd/cxx/parser/generator.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <algorithm>
+#include <iostream>
+#include <fstream>
+
+#include <libcutl/re.hxx>
+
+#include <libcutl/compiler/code-stream.hxx>
+#include <libcutl/compiler/cxx-indenter.hxx>
+#include <libcutl/compiler/sloc-counter.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+
+#include <xsd/version.hxx>
+
+#include <xsd/type-map/lexer.hxx>
+#include <xsd/type-map/parser.hxx>
+#include <xsd/type-map/type-map.hxx>
+
+#include <xsd/cxx/parser/elements.hxx>
+#include <xsd/cxx/parser/generator.hxx>
+
+#include <xsd/cxx/parser/validator.hxx>
+#include <xsd/cxx/parser/name-processor.hxx>
+#include <xsd/cxx/parser/state-processor.hxx>
+#include <xsd/cxx/parser/type-processor.hxx>
+
+#include <xsd/cxx/parser/parser-header.hxx>
+#include <xsd/cxx/parser/parser-inline.hxx>
+#include <xsd/cxx/parser/parser-source.hxx>
+#include <xsd/cxx/parser/parser-forward.hxx>
+
+#include <xsd/cxx/parser/impl-header.hxx>
+#include <xsd/cxx/parser/impl-source.hxx>
+#include <xsd/cxx/parser/driver-source.hxx>
+
+#include <xsd/cxx/parser/element-validation-source.hxx>
+#include <xsd/cxx/parser/attribute-validation-source.hxx>
+#include <xsd/cxx/parser/characters-validation-source.hxx>
+
+#include <xsd/cxx/parser/options.hxx>
+
+using std::endl;
+using std::wcerr;
+using std::wcout;
+
+using namespace XSDFrontend::SemanticGraph;
+
+//
+//
+typedef std::wifstream WideInputFileStream;
+typedef std::wofstream WideOutputFileStream;
+typedef std::ifstream NarrowInputFileStream;
+
+namespace CXX
+{
+ namespace
+ {
+ char const copyright_gpl[] =
+ "// Copyright (c) " XSD_COPYRIGHT ".\n"
+ "//\n"
+ "// This program was generated by CodeSynthesis XSD, an XML Schema to\n"
+ "// C++ data binding compiler.\n"
+ "//\n"
+ "// This program is free software; you can redistribute it and/or modify\n"
+ "// it under the terms of the GNU General Public License version 2 as\n"
+ "// published by the Free Software Foundation.\n"
+ "//\n"
+ "// This program is distributed in the hope that it will be useful,\n"
+ "// but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+ "// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+ "// GNU General Public License for more details.\n"
+ "//\n"
+ "// You should have received a copy of the GNU General Public License\n"
+ "// along with this program; if not, write to the Free Software\n"
+ "// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n"
+ "//\n"
+ "// In addition, as a special exception, Code Synthesis gives permission\n"
+ "// to link this program with the Xerces-C++ library (or with modified\n"
+ "// versions of Xerces-C++ that use the same license as Xerces-C++), and\n"
+ "// distribute linked combinations including the two. You must obey the GNU\n"
+ "// General Public License version 2 in all respects for all of the code\n"
+ "// used other than Xerces-C++. If you modify this copy of the program, you\n"
+ "// may extend this exception to your version of the program, but you are\n"
+ "// not obligated to do so. If you do not wish to do so, delete this\n"
+ "// exception statement from your version.\n"
+ "//\n"
+ "// Furthermore, Code Synthesis makes a special exception for the Free/Libre\n"
+ "// and Open Source Software (FLOSS) which is described in the accompanying\n"
+ "// FLOSSE file.\n"
+ "//\n\n";
+
+ char const copyright_proprietary[] =
+ "// Copyright (c) " XSD_COPYRIGHT ".\n"
+ "//\n"
+ "// This program was generated by CodeSynthesis XSD, an XML Schema\n"
+ "// to C++ data binding compiler, in the Proprietary License mode.\n"
+ "// You should have received a proprietary license from Code Synthesis\n"
+ "// prior to generating this code. See the license text for conditions.\n"
+ "//\n\n";
+
+ char const copyright_impl[] =
+ "// Not copyrighted - public domain.\n"
+ "//\n"
+ "// This sample parser implementation was generated by CodeSynthesis XSD,\n"
+ "// an XML Schema to C++ data binding compiler. You may use it in your\n"
+ "// programs without any restrictions.\n"
+ "//\n\n";
+ }
+
+ void Parser::Generator::
+ usage ()
+ {
+ CXX::Parser::options::print_usage (wcout);
+ CXX::options::print_usage (wcout);
+ }
+
+ namespace
+ {
+ template <typename S>
+ void
+ open (S& ifs, NarrowString const& path)
+ {
+ try
+ {
+ Path fs_path (path);
+ ifs.open (fs_path.string ().c_str (),
+ std::ios_base::in | std::ios_base::binary);
+
+ if (!ifs.is_open ())
+ {
+ wcerr << path.c_str () << ": error: unable to open in read mode"
+ << endl;
+
+ throw Parser::Generator::Failed ();
+ }
+ }
+ catch (InvalidPath const&)
+ {
+ wcerr << "error: '" << path.c_str () << "' is not a valid "
+ << "filesystem path" << endl;
+
+ throw Parser::Generator::Failed ();
+ }
+ }
+
+ void
+ append (WideOutputFileStream& os,
+ NarrowString const& path,
+ WideInputFileStream& default_is)
+ {
+ using std::ios_base;
+
+ if (path)
+ {
+ WideInputFileStream is;
+ open (is, path);
+ os << is.rdbuf ();
+ }
+ else if (default_is.is_open ())
+ {
+ os << default_is.rdbuf ();
+ default_is.seekg (0, ios_base::beg);
+ }
+ }
+
+ void
+ append (WideOutputFileStream& os,
+ NarrowStrings const& primary,
+ NarrowStrings const& def)
+ {
+ NarrowStrings const& v (primary.empty () ? def : primary);
+
+ for (NarrowStrings::const_iterator i (v.begin ()), e (v.end ());
+ i != e; ++i)
+ {
+ os << i->c_str () << endl;
+ }
+ }
+ }
+
+
+ size_t Parser::Generator::
+ generate (Parser::options const& ops,
+ Schema& schema,
+ Path const& file_path,
+ bool fpt,
+ StringLiteralMap const& string_literal_map,
+ bool gen_driver,
+ const WarningSet& disabled_warnings,
+ FileList& file_list,
+ AutoUnlinks& unlinks)
+ {
+ using std::ios_base;
+
+ typedef cutl::re::regexsub Regex;
+
+ try
+ {
+ bool generate_xml_schema (ops.generate_xml_schema ());
+
+ // We could be compiling several schemas at once in which case
+ // handling of the --generate-xml-schema option gets tricky: we
+ // will need to rely on the presence of the --extern-xml-schema
+ // to tell us which (fake) schema file corresponds to XML Schema.
+ //
+ if (generate_xml_schema)
+ {
+ if (NarrowString name = ops.extern_xml_schema ())
+ {
+ if (file_path.string () != name)
+ generate_xml_schema = false;
+ }
+ }
+
+ bool impl (!generate_xml_schema &&
+ (ops.generate_noop_impl () ||
+ ops.generate_print_impl ()));
+
+ bool driver (gen_driver && !generate_xml_schema &&
+ ops.generate_test_driver ());
+
+ // Evaluate the graph for possibility of generating something useful.
+ //
+ {
+ Validator validator;
+ if (!validator.validate (
+ ops, schema, file_path, driver, disabled_warnings))
+ throw Failed ();
+ }
+
+ bool gen_cxx (!ops.file_list_only ());
+
+ // Process names.
+ //
+ if (gen_cxx)
+ {
+ NameProcessor proc;
+ proc.process (ops, schema, file_path, string_literal_map);
+ }
+
+ bool validation ((ops.xml_parser () == "expat" ||
+ ops.generate_validation ()) &&
+ !ops.suppress_validation ());
+
+ // Compute state machine info.
+ //
+ if (gen_cxx && validation)
+ {
+ StateProcessor proc;
+ proc.process (schema, file_path);
+ }
+
+ // Read-in type maps.
+ //
+ TypeMap::Namespaces type_map;
+ if (gen_cxx)
+ {
+ using namespace TypeMap;
+
+ NarrowStrings const& files (ops.type_map ());
+
+ for (NarrowStrings::const_iterator f (files.begin ());
+ f != files.end (); ++f )
+ {
+ NarrowInputFileStream ifs;
+ open (ifs, *f);
+
+ Lexer l (ifs, *f);
+ TypeMap::Parser p (l, *f);
+
+ if (!p.parse (type_map))
+ throw Failed ();
+ }
+
+ // Add the built-in mappings at the end.
+ //
+
+ // String-based types.
+ //
+ String char_type (ops.char_type ());
+ String string_type;
+
+ if (char_type == L"char")
+ string_type = L"::std::string";
+ else if (char_type == L"wchar_t")
+ string_type = L"::std::wstring";
+ else
+ string_type = L"::std::basic_string< " + char_type + L" >";
+
+ String xns;
+ String auto_ptr;
+ {
+ Context ctx (std::wcerr, schema, file_path, ops, 0, 0, 0, 0);
+ xns = ctx.xs_ns_name ();
+ auto_ptr = ctx.auto_ptr;
+ }
+
+ String buffer (auto_ptr + L"< " + xns + L"::buffer >");
+ TypeMap::Namespace xsd ("http://www\\.w3\\.org/2001/XMLSchema");
+
+ xsd.types_push_back ("string", string_type);
+ xsd.types_push_back ("normalizedString", string_type);
+ xsd.types_push_back ("token", string_type);
+ xsd.types_push_back ("Name", string_type);
+ xsd.types_push_back ("NMTOKEN", string_type);
+ xsd.types_push_back ("NMTOKENS", xns + L"::string_sequence");
+ xsd.types_push_back ("NCName", string_type);
+
+ xsd.types_push_back ("ID", string_type);
+ xsd.types_push_back ("IDREF", string_type);
+ xsd.types_push_back ("IDREFS", xns + L"::string_sequence");
+
+ xsd.types_push_back ("language", string_type);
+ xsd.types_push_back ("anyURI", string_type);
+ xsd.types_push_back ("QName", xns + L"::qname");
+
+ xsd.types_push_back ("base64Binary", buffer, buffer);
+ xsd.types_push_back ("hexBinary", buffer, buffer);
+
+ xsd.types_push_back ("gDay", xns + L"::gday");
+ xsd.types_push_back ("gMonth", xns + L"::gmonth");
+ xsd.types_push_back ("gYear", xns + L"::gyear");
+ xsd.types_push_back ("gMonthDay", xns + L"::gmonth_day");
+ xsd.types_push_back ("gYearMonth", xns + L"::gyear_month");
+ xsd.types_push_back ("date", xns + L"::date");
+ xsd.types_push_back ("time", xns + L"::time");
+ xsd.types_push_back ("dateTime", xns + L"::date_time");
+ xsd.types_push_back ("duration", xns + L"::duration");
+
+ // Fundamental C++ types.
+ //
+ xsd.types_push_back ("boolean", "bool", "bool");
+
+ xsd.types_push_back ("byte", "signed char", "signed char");
+ xsd.types_push_back ("unsignedByte",
+ "unsigned char",
+ "unsigned char");
+
+ xsd.types_push_back ("short", "short", "short");
+ xsd.types_push_back ("unsignedShort",
+ "unsigned short",
+ "unsigned short");
+
+ xsd.types_push_back ("int", "int", "int");
+ xsd.types_push_back ("unsignedInt", "unsigned int", "unsigned int");
+
+ xsd.types_push_back ("long", "long long", "long long");
+ xsd.types_push_back ("unsignedLong",
+ "unsigned long long",
+ "unsigned long long");
+
+ xsd.types_push_back ("integer", "long long", "long long");
+
+ xsd.types_push_back ("negativeInteger", "long long", "long long");
+ xsd.types_push_back ("nonPositiveInteger", "long long", "long long");
+
+ xsd.types_push_back ("positiveInteger",
+ "unsigned long long",
+ "unsigned long long");
+ xsd.types_push_back ("nonNegativeInteger",
+ "unsigned long long",
+ "unsigned long long");
+
+ xsd.types_push_back ("float", "float", "float");
+ xsd.types_push_back ("double", "double", "double");
+ xsd.types_push_back ("decimal", "double", "double");
+
+ type_map.push_back (xsd);
+
+ // Everything else maps to void.
+ //
+ TypeMap::Namespace rest (".*");
+ rest.types_push_back (".*", "void", "void");
+ type_map.push_back (rest);
+ }
+
+ // Process types.
+ //
+ if (gen_cxx)
+ {
+ TypeProcessor proc;
+ proc.process (ops, schema, gen_driver, type_map);
+ }
+
+ //
+ //
+ bool inline_ (ops.generate_inline () && !generate_xml_schema);
+ bool source (!generate_xml_schema);
+
+ // Generate code.
+ //
+ NarrowString name (file_path.leaf ().string ());
+ NarrowString skel_suffix (ops.skel_file_suffix ());
+ NarrowString impl_suffix (ops.impl_file_suffix ());
+
+ NarrowString hxx_suffix (ops.hxx_suffix ());
+ NarrowString ixx_suffix (ops.ixx_suffix ());
+ NarrowString cxx_suffix (ops.cxx_suffix ());
+
+ Regex hxx_expr (
+ ops.hxx_regex ().empty ()
+ ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + skel_suffix + hxx_suffix + "#"
+ : ops.hxx_regex ());
+
+ Regex ixx_expr (
+ ops.ixx_regex ().empty ()
+ ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + skel_suffix + ixx_suffix + "#"
+ : ops.ixx_regex ());
+
+ Regex cxx_expr (
+ ops.cxx_regex ().empty ()
+ ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + skel_suffix + cxx_suffix + "#"
+ : ops.cxx_regex ());
+
+
+ Regex hxx_impl_expr;
+ Regex cxx_impl_expr;
+ Regex cxx_driver_expr;
+
+ if (impl || driver)
+ {
+ hxx_impl_expr =
+ "#^(.+?)(\\.[^./\\\\]+)?$#$1" + impl_suffix + hxx_suffix + "#";
+
+ cxx_impl_expr =
+ "#^(.+?)(\\.[^./\\\\]+)?$#$1" + impl_suffix + cxx_suffix + "#";
+
+ cxx_driver_expr =
+ "#^(.+?)(\\.[^./\\\\]+)?$#$1-driver" + cxx_suffix + "#";
+ }
+
+ if (!hxx_expr.match (name))
+ {
+ wcerr << "error: header expression '" <<
+ hxx_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ if (inline_ && !ixx_expr.match (name))
+ {
+ wcerr << "error: inline expression '" <<
+ ixx_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ if (source && !cxx_expr.match (name))
+ {
+ wcerr << "error: source expression '" <<
+ cxx_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ if (impl || driver)
+ {
+ if (!hxx_impl_expr.match (name))
+ {
+ wcerr << "error: implementation header expression '" <<
+ hxx_impl_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ if (!cxx_impl_expr.match (name))
+ {
+ wcerr << "error: implementation source expression '" <<
+ cxx_impl_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ if (!cxx_driver_expr.match (name))
+ {
+ wcerr << "error: driver source expression '" <<
+ cxx_driver_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+ }
+
+ NarrowString hxx_name (hxx_expr.replace (name));
+ NarrowString ixx_name (inline_ ? ixx_expr.replace (name) : NarrowString ());
+ NarrowString cxx_name (source ? cxx_expr.replace (name) : NarrowString ());
+
+ NarrowString hxx_impl_name;
+ NarrowString cxx_impl_name;
+ NarrowString cxx_driver_name;
+
+ if (impl || driver)
+ {
+ hxx_impl_name = hxx_impl_expr.replace (name);
+ cxx_impl_name = cxx_impl_expr.replace (name);
+ cxx_driver_name = cxx_driver_expr.replace (name);
+ }
+
+ Path hxx_path (hxx_name);
+ Path ixx_path (ixx_name);
+ Path cxx_path (cxx_name);
+
+ Path hxx_impl_path;
+ Path cxx_impl_path;
+ Path cxx_driver_path;
+
+ if (impl || driver)
+ {
+ hxx_impl_path = Path (hxx_impl_name);
+ cxx_impl_path = Path (cxx_impl_name);
+ cxx_driver_path = Path (cxx_driver_name);
+ }
+
+ Path out_dir;
+
+ if (NarrowString dir = ops.output_dir ())
+ {
+ try
+ {
+ out_dir = Path (dir);
+ }
+ catch (InvalidPath const&)
+ {
+ wcerr << dir.c_str () << ": error: invalid path" << endl;
+ throw Failed ();
+ }
+ }
+
+ if (fpt && !generate_xml_schema)
+ {
+ // In the file-per-type mode the schema files are always local
+ // unless the user added the directory so that we propagate this
+ // to the output files.
+ //
+ Path fpt_dir (file_path.directory ());
+
+ if (!fpt_dir.empty ())
+ out_dir /= fpt_dir;
+ }
+
+ if (!out_dir.empty ())
+ {
+ hxx_path = out_dir / hxx_path;
+ ixx_path = out_dir / ixx_path;
+ cxx_path = out_dir / cxx_path;
+
+ if (impl || driver)
+ {
+ hxx_impl_path = out_dir / hxx_impl_path;
+ cxx_impl_path = out_dir / cxx_impl_path;
+ cxx_driver_path = out_dir /cxx_driver_path;
+ }
+ }
+
+ // Open the impl files first so that if open fails, the skel files
+ // are not deleted.
+ //
+ WideOutputFileStream hxx_impl;
+ WideOutputFileStream cxx_impl;
+ WideOutputFileStream cxx_driver;
+
+ if (impl)
+ {
+ if (gen_cxx)
+ {
+ if (!ops.force_overwrite ())
+ {
+ WideInputFileStream tmp (
+ hxx_impl_path.string ().c_str (), ios_base::in);
+
+ if (tmp.is_open ())
+ {
+ wcerr << hxx_impl_path << ": error: cowardly refusing to " <<
+ "overwrite an existing file" << endl;
+ throw Failed ();
+ }
+
+ tmp.close ();
+ }
+
+ hxx_impl.open (hxx_impl_path.string ().c_str (), ios_base::out);
+
+ if (!hxx_impl.is_open ())
+ {
+ wcerr << hxx_impl_path << ": error: unable to open in write mode"
+ << endl;
+ throw Failed ();
+ }
+
+ unlinks.add (hxx_impl_path);
+ }
+
+ file_list.push_back (hxx_impl_path.string ());
+
+ if (gen_cxx)
+ {
+ if (!ops.force_overwrite ())
+ {
+ WideInputFileStream tmp (
+ cxx_impl_path.string ().c_str (), ios_base::in);
+
+ if (tmp.is_open ())
+ {
+ wcerr << cxx_impl_path << ": error: cowardly refusing to " <<
+ "overwrite an existing file" << endl;
+ throw Failed ();
+ }
+
+ tmp.close ();
+ }
+
+ cxx_impl.open (cxx_impl_path.string ().c_str (), ios_base::out);
+
+ if (!cxx_impl.is_open ())
+ {
+ wcerr << cxx_impl_path << ": error: unable to open in write mode"
+ << endl;
+ throw Failed ();
+ }
+
+ unlinks.add (cxx_impl_path);
+ }
+
+ file_list.push_back (cxx_impl_path.string ());
+ }
+
+ if (driver)
+ {
+ if (gen_cxx)
+ {
+ if (!ops.force_overwrite ())
+ {
+ WideInputFileStream tmp (
+ cxx_driver_path.string ().c_str (), ios_base::in);
+
+ if (tmp.is_open ())
+ {
+ wcerr << cxx_driver_path << ": error: cowardly refusing to " <<
+ "overwrite an existing file" << endl;
+ throw Failed ();
+ }
+
+ tmp.close ();
+ }
+
+ cxx_driver.open (cxx_driver_path.string ().c_str (), ios_base::out);
+
+ if (!cxx_driver.is_open ())
+ {
+ wcerr << cxx_driver_path << ": error: unable to open in write " <<
+ "mode" << endl;
+ throw Failed ();
+ }
+
+ unlinks.add (cxx_driver_path);
+ }
+
+ file_list.push_back (cxx_driver_path.string ());
+ }
+
+ // Open the skel files.
+ //
+ WideOutputFileStream hxx;
+ WideOutputFileStream ixx;
+ WideOutputFileStream cxx;
+
+ if (gen_cxx)
+ {
+ hxx.open (hxx_path.string ().c_str (), ios_base::out);
+
+ if (!hxx.is_open ())
+ {
+ wcerr << hxx_path << ": error: unable to open in write mode" << endl;
+ throw Failed ();
+ }
+
+ unlinks.add (hxx_path);
+ }
+
+ file_list.push_back (hxx_path.string ());
+
+ if (inline_)
+ {
+ if (gen_cxx)
+ {
+ ixx.open (ixx_path.string ().c_str (), ios_base::out);
+
+ if (!ixx.is_open ())
+ {
+ wcerr << ixx_path << ": error: unable to open in write mode"
+ << endl;
+ throw Failed ();
+ }
+
+ unlinks.add (ixx_path);
+ }
+
+ file_list.push_back (ixx_path.string ());
+ }
+
+ if (source)
+ {
+ if (gen_cxx)
+ {
+ cxx.open (cxx_path.string ().c_str (), ios_base::out);
+
+ if (!cxx.is_open ())
+ {
+ wcerr << cxx_path << ": error: unable to open in write mode"
+ << endl;
+ throw Failed ();
+ }
+
+ unlinks.add (cxx_path);
+ }
+
+ file_list.push_back (cxx_path.string ());
+ }
+
+ if (!gen_cxx)
+ return 0;
+
+ // Print copyright and license.
+ //
+ char const* copyright (
+ ops.proprietary_license () ? copyright_proprietary : copyright_gpl);
+
+ hxx << copyright;
+
+ if (inline_)
+ ixx << copyright;
+
+ if (source)
+ cxx << copyright;
+
+ if (impl)
+ {
+ hxx_impl << copyright_impl;
+ cxx_impl << copyright_impl;
+ }
+
+ if (driver)
+ cxx_driver << copyright_impl;
+
+ // Prologue.
+ //
+ WideInputFileStream prologue;
+ {
+ NarrowString name (ops.prologue_file ());
+
+ if (name)
+ open (prologue, name);
+ }
+
+ // Epilogue.
+ //
+ WideInputFileStream epilogue;
+ {
+ NarrowString name (ops.epilogue_file ());
+
+ if (name)
+ open (epilogue, name);
+ }
+
+ // SLOC counter.
+ //
+ size_t sloc_total (0);
+ bool show_sloc (ops.show_sloc ());
+
+ typedef
+ compiler::ostream_filter<compiler::cxx_indenter, wchar_t>
+ ind_filter;
+
+ typedef
+ compiler::ostream_filter<compiler::sloc_counter, wchar_t>
+ sloc_filter;
+
+ //
+ //
+ Regex guard_expr ("/([a-z])([A-Z])/$1_$2/"); // Split words.
+
+ NarrowString guard_prefix (ops.guard_prefix ());
+
+ if (!guard_prefix)
+ guard_prefix = file_path.directory ().string ();
+
+ if (guard_prefix)
+ guard_prefix += '_';
+
+ // HXX
+ //
+ {
+ Context ctx (hxx,
+ schema,
+ file_path,
+ ops,
+ &string_literal_map,
+ &hxx_expr,
+ &ixx_expr,
+ &hxx_impl_expr);
+
+ sloc_filter sloc (hxx);
+
+ String guard (guard_expr.replace (guard_prefix + hxx_name));
+ guard = ctx.escape (guard); // Make it a C++ id.
+ std::transform (guard.begin (), guard.end(), guard.begin (), upcase);
+
+ hxx << "#ifndef " << guard << endl
+ << "#define " << guard << endl
+ << endl;
+
+ if (ctx.std >= cxx_version::cxx11)
+ {
+ hxx << "#ifndef XSD_CXX11" << endl
+ << "#define XSD_CXX11" << endl
+ << "#endif" << endl
+ << endl;
+ }
+
+ // Copy prologue.
+ //
+ hxx << "// Begin prologue." << endl
+ << "//" << endl;
+
+ append (hxx, ops.hxx_prologue (), ops.prologue ());
+ append (hxx, ops.hxx_prologue_file (), prologue);
+
+ hxx << "//" << endl
+ << "// End prologue." << endl
+ << endl;
+
+ // Version check.
+ //
+ hxx << "#include <xsd/cxx/config.hxx>" << endl
+ << endl
+ << "#if (LIBXSD_VERSION != " << XSD_VERSION << "L)" << endl
+ << "#error XSD runtime version mismatch" << endl
+ << "#endif" << endl
+ << endl;
+
+ hxx << "#include <xsd/cxx/pre.hxx>" << endl
+ << endl;
+
+ // Generate.
+ //
+ {
+ ind_filter ind (hxx); // We don't want to indent prologues/epilogues.
+
+ if (!generate_xml_schema)
+ generate_parser_forward (ctx);
+
+ generate_parser_header (ctx, generate_xml_schema);
+ }
+
+ if (inline_)
+ hxx << "#include " << ctx.process_include_path (ixx_name) << endl;
+
+ hxx << "#include <xsd/cxx/post.hxx>" << endl
+ << endl;
+
+ // Copy epilogue.
+ //
+ hxx << "// Begin epilogue." << endl
+ << "//" << endl;
+
+ append (hxx, ops.hxx_epilogue_file (), epilogue);
+ append (hxx, ops.hxx_epilogue (), ops.epilogue ());
+
+ hxx << "//" << endl
+ << "// End epilogue." << endl
+ << endl;
+
+ hxx << "#endif // " << guard << endl;
+
+ if (show_sloc)
+ wcerr << hxx_path << ": " << sloc.stream ().count () << endl;
+
+ sloc_total += sloc.stream ().count ();
+ }
+
+
+ // IXX
+ //
+ if (inline_)
+ {
+ Context ctx (ixx,
+ schema,
+ file_path,
+ ops,
+ &string_literal_map,
+ &hxx_expr,
+ &ixx_expr,
+ &hxx_impl_expr);
+
+ sloc_filter sloc (ixx);
+
+ // Copy prologue.
+ //
+ ixx << "// Begin prologue." << endl
+ << "//" << endl;
+
+ append (ixx, ops.ixx_prologue (), ops.prologue ());
+ append (ixx, ops.ixx_prologue_file (), prologue);
+
+ ixx << "//" << endl
+ << "// End prologue." << endl
+ << endl;
+
+ // Generate.
+ //
+ {
+ ind_filter ind (ixx); // We don't want to indent prologues/epilogues.
+ generate_parser_inline (ctx);
+ }
+
+ // Copy epilogue.
+ //
+ ixx << "// Begin epilogue." << endl
+ << "//" << endl;
+
+ append (ixx, ops.ixx_epilogue_file (), epilogue);
+ append (ixx, ops.ixx_epilogue (), ops.epilogue ());
+
+ ixx << "//" << endl
+ << "// End epilogue." << endl
+ << endl;
+
+ if (show_sloc)
+ wcerr << ixx_path << ": " << sloc.stream ().count () << endl;
+
+ sloc_total += sloc.stream ().count ();
+ }
+
+
+ // CXX
+ //
+ if (source)
+ {
+ Context ctx (cxx,
+ schema,
+ file_path,
+ ops,
+ &string_literal_map,
+ &hxx_expr,
+ &ixx_expr,
+ &hxx_impl_expr);
+
+ sloc_filter sloc (cxx);
+
+ // Copy prologue.
+ //
+ cxx << "// Begin prologue." << endl
+ << "//" << endl;
+
+ append (cxx, ops.cxx_prologue (), ops.prologue ());
+ append (cxx, ops.cxx_prologue_file (), prologue);
+
+ cxx << "//" << endl
+ << "// End prologue." << endl
+ << endl;
+
+ cxx << "#include <xsd/cxx/pre.hxx>" << endl
+ << endl;
+
+ cxx << "#include " << ctx.process_include_path (hxx_name) << endl
+ << endl;
+
+ // Generate.
+ //
+ {
+ ind_filter ind (cxx); // We don't want to indent prologues/epilogues.
+
+ if (!inline_)
+ generate_parser_inline (ctx);
+
+ generate_parser_source (ctx);
+
+ if (validation)
+ {
+ generate_element_validation_source (ctx);
+ generate_attribute_validation_source (ctx);
+ generate_characters_validation_source (ctx);
+ }
+ }
+
+ cxx << "#include <xsd/cxx/post.hxx>" << endl
+ << endl;
+
+ // Copy epilogue.
+ //
+ cxx << "// Begin epilogue." << endl
+ << "//" << endl;
+
+ append (cxx, ops.cxx_epilogue_file (), epilogue);
+ append (cxx, ops.cxx_epilogue (), ops.epilogue ());
+
+ cxx << "//" << endl
+ << "// End epilogue." << endl
+ << endl;
+
+ if (show_sloc)
+ wcerr << cxx_path << ": " << sloc.stream ().count () << endl;
+
+ sloc_total += sloc.stream ().count ();
+ }
+
+ // HXX impl
+ //
+ if (impl)
+ {
+ Context ctx (hxx_impl,
+ schema,
+ file_path,
+ ops,
+ &string_literal_map,
+ &hxx_expr,
+ &ixx_expr,
+ &hxx_impl_expr);
+
+ String guard (guard_expr.replace (guard_prefix + hxx_impl_name));
+ guard = ctx.escape (guard); // Make it a C++ id.
+ std::transform (guard.begin (), guard.end(), guard.begin (), upcase);
+
+ hxx_impl << "#ifndef " << guard << endl
+ << "#define " << guard << endl
+ << endl;
+
+ hxx_impl << "#include " << ctx.process_include_path (hxx_name)
+ << endl << endl;
+
+ {
+ ind_filter ind (hxx_impl);
+ generate_impl_header (ctx);
+ }
+
+ hxx_impl << "#endif // " << guard << endl;
+ }
+
+ // CXX impl
+ //
+ if (impl)
+ {
+ Context ctx (cxx_impl,
+ schema,
+ file_path,
+ ops,
+ &string_literal_map,
+ &hxx_expr,
+ &ixx_expr,
+ &hxx_impl_expr);
+
+ cxx_impl << "#include " << ctx.process_include_path (hxx_impl_name)
+ << endl << endl;
+
+ {
+ ind_filter ind (cxx_impl);
+ generate_impl_source (ctx);
+ }
+ }
+
+ // CXX driver
+ //
+ if (driver)
+ {
+ Context ctx (cxx_driver,
+ schema,
+ file_path,
+ ops,
+ &string_literal_map,
+ &hxx_expr,
+ &ixx_expr,
+ &hxx_impl_expr);
+
+ cxx_driver << "#include " << ctx.process_include_path (hxx_impl_name)
+ << endl << endl;
+
+ {
+ ind_filter ind (cxx_driver);
+ generate_driver_source (ctx);
+ }
+ }
+
+ return sloc_total;
+ }
+ catch (UnrepresentableCharacter const& e)
+ {
+ wcerr << "error: character at position " << e.position () << " "
+ << "in string '" << e.string () << "' is unrepresentable in "
+ << "the target encoding" << endl;
+
+ wcerr << "info: use the --custom-literals option to provide custom "
+ << "string literals mapping" << endl;
+
+ throw Failed ();
+ }
+ catch (NoNamespaceMapping const& e)
+ {
+ wcerr << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": error: unable to map XML Schema namespace '" << e.ns ()
+ << "' to C++ namespace" << endl;
+
+ wcerr << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": info: use the --namespace-map or --namespace-regex option "
+ << "to provide custom mapping" << endl;
+
+ throw Failed ();
+ }
+ catch (InvalidNamespaceMapping const& e)
+ {
+ wcerr << "error: invalid XML to C++ namespace mapping specified: "
+ << "'" << e.mapping () << "': " << e.reason () << endl;
+
+ throw Failed ();
+ }
+ catch (cutl::re::format const& e)
+ {
+ wcerr << "error: invalid regex: '" <<
+ e.regex ().c_str () << "': " <<
+ e.description ().c_str () << endl;
+
+ throw Failed ();
+ }
+ catch (cutl::re::wformat const& e)
+ {
+ wcerr << "error: invalid regex: '" <<
+ e.regex () << "': " << e.description ().c_str () << endl;
+
+ throw Failed ();
+ }
+ }
+}
diff --git a/xsd/cxx/parser/generator.hxx b/xsd/cxx/parser/generator.hxx
new file mode 100644
index 0000000..150cd74
--- /dev/null
+++ b/xsd/cxx/parser/generator.hxx
@@ -0,0 +1,45 @@
+// file : xsd/cxx/parser/generator.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_GENERATOR_HXX
+#define XSD_CXX_PARSER_GENERATOR_HXX
+
+#include <libxsd-frontend/semantic-graph/elements.hxx> // Path
+#include <libxsd-frontend/semantic-graph/schema.hxx>
+
+#include <xsd/xsd.hxx>
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/literal-map.hxx>
+#include <xsd/cxx/parser/options.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ class Generator
+ {
+ public:
+ static void
+ usage ();
+
+ struct Failed {};
+
+ static size_t
+ generate (options const&,
+ XSDFrontend::SemanticGraph::Schema&,
+ XSDFrontend::SemanticGraph::Path const& file,
+ bool file_per_type,
+ StringLiteralMap const&,
+ bool gen_driver,
+ const WarningSet& disabled_warnings,
+ FileList& file_list,
+ AutoUnlinks& unlinks);
+
+ private:
+ Generator ();
+ };
+ }
+}
+
+#endif // XSD_CXX_PARSER_GENERATOR_HXX
diff --git a/xsd/cxx/parser/impl-header.cxx b/xsd/cxx/parser/impl-header.cxx
new file mode 100644
index 0000000..be14dfa
--- /dev/null
+++ b/xsd/cxx/parser/impl-header.cxx
@@ -0,0 +1,232 @@
+// file : xsd/cxx/parser/impl-header.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/parser/impl-header.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String const& name (eimpl (e));
+ String const& ret (ret_type (e));
+ SemanticGraph::Type& base (e.inherits ().base ());
+
+ os << "class " << type_exp << name << ": " <<
+ "public virtual " << ename (e) << "," << endl
+ << " public " << fq_name (base, "impl")
+ << "{"
+ << "public:" << endl
+ << "virtual void" << endl
+ << "pre ();"
+ << endl
+ << "virtual " << ret << endl
+ << post_name (e) << " ();"
+ << "};";
+ }
+ };
+
+ //
+ //
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String const& name (eimpl (l));
+ SemanticGraph::Type& t (l.argumented ().type ());
+
+ String item (unclash (ename (l), "item"));
+
+ os << "class " << type_exp << name << ": public virtual " <<
+ ename (l)
+ << "{"
+ << "public:" << endl
+ << "virtual void" << endl
+ << "pre ();"
+ << endl;
+
+ // item
+ //
+ String const& arg (arg_type (t));
+
+ os << "virtual void" << endl
+ << item;
+
+ if (arg == L"void")
+ os << " ();";
+ else
+ os << " (" << arg << ");";
+
+ os << endl;
+
+ // post
+ //
+ String const& ret (ret_type (l));
+
+ os << "virtual " << ret << endl
+ << post_name (l) << " ();"
+ << "};";
+ }
+ };
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String const& name (eimpl (u));
+ String const& ret (ret_type (u));
+
+ os << "class " << type_exp << name << ": public virtual " <<
+ ename (u)
+ << "{"
+ << "public:" << endl
+ << "virtual void" << endl
+ << "pre ();"
+ << endl
+ << "virtual void" << endl
+ << "_characters (const " << string_type << "&);"
+ << endl
+ << "virtual " << ret << endl
+ << post_name (u) << " ();"
+ << "};";
+ }
+ };
+
+
+ //
+ //
+ struct ParserCallback: Traversal::Member, Context
+ {
+ ParserCallback (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ String const& arg (arg_type (m.type ()));
+
+ os << "virtual void" << endl
+ << ename (m);
+
+ if (arg == L"void")
+ os << " ();";
+ else
+ os << " (" << arg << ");";
+
+ os << endl;
+ }
+ };
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c),
+ parser_callback_ (c)
+ {
+ names_parser_callback_ >> parser_callback_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ String const& name (eimpl (c));
+ String const& ret (ret_type (c));
+
+ os << "class " << type_exp << name << ": public virtual " <<
+ ename (c);
+
+ if (c.inherits_p ())
+ os << "," << endl
+ << " public " << fq_name (c.inherits ().base (), "impl");
+
+ os << "{"
+ << "public:" << endl
+ << "virtual void" << endl
+ << "pre ();"
+ << endl;
+
+ // In case of an inheritance-by-restriction, we don't need to
+ // generate parser callbacks, etc. since they are the same as in
+ // the base.
+ //
+ if (!restriction_p (c))
+ {
+ names (c, names_parser_callback_);
+ }
+
+ os << "virtual " << ret << endl
+ << post_name (c) << " ();"
+ << "};";
+ }
+
+ private:
+ //
+ //
+ ParserCallback parser_callback_;
+ Traversal::Names names_parser_callback_;
+ };
+ }
+
+ void
+ generate_impl_header (Context& ctx)
+ {
+ Traversal::Schema schema;
+
+ Sources sources;
+ Includes includes (ctx, Includes::impl_header);
+ Traversal::Names schema_names;
+
+ Namespace ns (ctx);
+ Traversal::Names names;
+
+ schema >> includes;
+ schema >> sources >> schema;
+ schema >> schema_names >> ns >> names;
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/parser/impl-header.hxx b/xsd/cxx/parser/impl-header.hxx
new file mode 100644
index 0000000..1939e05
--- /dev/null
+++ b/xsd/cxx/parser/impl-header.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/parser/impl-header.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_IMPL_HEADER_HXX
+#define XSD_CXX_PARSER_IMPL_HEADER_HXX
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ void
+ generate_impl_header (Context&);
+ }
+}
+
+#endif // XSD_CXX_PARSER_IMPL_HEADER_HXX
diff --git a/xsd/cxx/parser/impl-source.cxx b/xsd/cxx/parser/impl-source.cxx
new file mode 100644
index 0000000..80a9644
--- /dev/null
+++ b/xsd/cxx/parser/impl-source.cxx
@@ -0,0 +1,384 @@
+// file : xsd/cxx/parser/impl-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/parser/impl-source.hxx>
+#include <xsd/cxx/parser/print-impl-common.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String const& name (eimpl (e));
+ String const& ret (ret_type (e));
+ SemanticGraph::Type& base (e.inherits ().base ());
+ String const& base_ret (ret_type (base));
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // pre
+ //
+ os << "void " << name << "::" << endl
+ << "pre ()"
+ << "{"
+ << "}";
+
+ // post
+ //
+ os << ret << " " << name << "::" << endl
+ << post_name (e) << " ()"
+ << "{";
+
+ if (ret == base_ret)
+ {
+ os << (ret != L"void" ? "return " : "") <<
+ post_name (base) << " ();";
+ }
+ else if (ret == L"void")
+ {
+ os << arg_type (base) << " v (" << post_name (base) << " ());"
+ << endl;
+
+ if (options.generate_print_impl ())
+ {
+ PrintCall t (*this, e.name (), "v");
+ t.dispatch (base);
+ }
+ else
+ os << "// TODO" << endl
+ << "//" << endl;
+ }
+ else
+ {
+ if (base_ret == L"void")
+ os << post_name (base) << " ();";
+ else
+ os << arg_type (base) << " v (" << post_name (base) << " ());"
+ << endl
+ << "// TODO" << endl
+ << "//" << endl
+ << "// return ... ;" << endl;
+ }
+
+ os << "}";
+ }
+ };
+
+ //
+ //
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String const& name (eimpl (l));
+ SemanticGraph::Type& type (l.argumented ().type ());
+
+ String item (unclash (ename (l), "item"));
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // pre
+ //
+ os << "void " << name << "::" << endl
+ << "pre ()"
+ << "{"
+ << "}";
+
+ // item
+ //
+ String const& arg (arg_type (type));
+
+ os << "void " << name << "::" << endl
+ << item;
+
+ if (arg == L"void")
+ os << " ()";
+ else
+ os << " (" << arg << " " << item << ")";
+
+ os << "{";
+
+ if (arg != L"void")
+ {
+ if (options.generate_print_impl ())
+ {
+ PrintCall t (*this, type.name (), item);
+ t.dispatch (type);
+ }
+ else
+ os << "// TODO" << endl
+ << "//" << endl;
+ }
+
+ os << "}";
+
+ // post
+ //
+ String const& ret (ret_type (l));
+
+ os << ret << " " << name << "::" << endl
+ << post_name (l) << " ()"
+ << "{";
+
+ if (ret != L"void")
+ os << "// TODO" << endl
+ << "//" << endl
+ << "// return ... ;" << endl;
+
+ os << "}";
+ }
+ };
+
+ //
+ //
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String const& name (eimpl (u));
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // pre
+ //
+ os << "void " << name << "::" << endl
+ << "pre ()"
+ << "{"
+ << "}";
+
+ // _characters
+ //
+ os << "void " << name << "::" << endl
+ << "_characters (const " << string_type << "& s)"
+ << "{";
+
+ if (options.generate_print_impl ())
+ os << cout_inst << " << " << strlit (u.name () + L": ") <<
+ " << s << std::endl;";
+ else
+ os << "// TODO" << endl
+ << "//" << endl;
+
+ os << "}";
+
+ // post
+ //
+ String const& ret (ret_type (u));
+
+ os << ret << " " << name << "::" << endl
+ << post_name (u) << " ()"
+ << "{";
+
+ if (ret != L"void")
+ os << "// TODO" << endl
+ << "//" << endl
+ << "// return ... ;" << endl;
+
+ os << "}";
+ }
+ };
+
+ //
+ //
+ struct ParserCallback: Traversal::Member, Context
+ {
+ ParserCallback (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ String const& name (ename (m));
+ String const& arg (arg_type (m.type ()));
+
+ os << "void " <<
+ eimpl (dynamic_cast<SemanticGraph::Complex&> (m.scope ())) <<
+ "::" << endl
+ << name;
+
+ if (arg == L"void")
+ os << " ()";
+ else
+ os << " (" << arg << " " << name << ")";
+
+ os << "{";
+
+ if (arg != L"void")
+ {
+ if (options.generate_print_impl ())
+ {
+ PrintCall t (*this, m.name (), name);
+ t.dispatch (m.type ());
+ }
+ else
+ os << "// TODO" << endl
+ << "//" << endl;
+ }
+
+ os << "}";
+ }
+ };
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c), parser_callback_ (c)
+ {
+ names_parser_callback_ >> parser_callback_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ String const& name (eimpl (c));
+
+ bool restriction (restriction_p (c));
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // pre
+ //
+ os << "void " << name << "::" << endl
+ << "pre ()"
+ << "{"
+ << "}";
+
+ // Parser callbacks.
+ //
+ if (!restriction)
+ names (c, names_parser_callback_);
+
+ // post
+ //
+ String const& ret (ret_type (c));
+
+ os << ret << " " << name << "::" << endl
+ << post_name (c) << " ()"
+ << "{";
+
+ if (c.inherits_p ())
+ {
+ SemanticGraph::Type& base (c.inherits ().base ());
+ String const& base_ret (ret_type (base));
+
+ if (ret == base_ret)
+ {
+ os << (ret != L"void" ? "return " : "") <<
+ post_name (base) << " ();";
+ }
+ else if (ret == L"void")
+ {
+ os << arg_type (base) << " v (" << post_name (base) << " ());"
+ << endl;
+
+ if (options.generate_print_impl ())
+ {
+ PrintCall t (*this, c.name (), "v");
+ t.dispatch (base);
+ }
+ else
+ os << "// TODO" << endl
+ << "//" << endl;
+ }
+ else
+ {
+ if (base_ret == L"void")
+ os << post_name (base) << " ();";
+ else
+ os << arg_type (base) << " v (" << post_name (base) << " ());"
+ << endl
+ << "// TODO" << endl
+ << "//" << endl
+ << "// return ... ;" << endl;
+ }
+ }
+ else
+ {
+ if (ret != L"void")
+ os << "// TODO" << endl
+ << "//" << endl
+ << "// return ... ;" << endl;
+ }
+
+ os << "}";
+ }
+
+ private:
+ //
+ //
+ ParserCallback parser_callback_;
+ Traversal::Names names_parser_callback_;
+ };
+ }
+
+ void
+ generate_impl_source (Context& ctx)
+ {
+ if (ctx.options.generate_print_impl ())
+ ctx.os << "#include <iostream>" << endl
+ << endl;
+
+ Traversal::Schema schema;
+ Sources sources;
+ Traversal::Names schema_names;
+ Namespace ns (ctx);
+ Traversal::Names names;
+
+ schema >> sources >> schema;
+ schema >> schema_names >> ns >> names;
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/parser/impl-source.hxx b/xsd/cxx/parser/impl-source.hxx
new file mode 100644
index 0000000..0fc8060
--- /dev/null
+++ b/xsd/cxx/parser/impl-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/parser/impl-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_IMPL_SOURCE_HXX
+#define XSD_CXX_PARSER_IMPL_SOURCE_HXX
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ void
+ generate_impl_source (Context&);
+ }
+}
+
+#endif // XSD_CXX_PARSER_IMPL_SOURCE_HXX
diff --git a/xsd/cxx/parser/name-processor.cxx b/xsd/cxx/parser/name-processor.cxx
new file mode 100644
index 0000000..73710ba
--- /dev/null
+++ b/xsd/cxx/parser/name-processor.cxx
@@ -0,0 +1,1175 @@
+// file : xsd/cxx/parser/name-processor.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <set>
+#include <map>
+#include <sstream>
+#include <iostream>
+
+#include <xsd/cxx/parser/name-processor.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ //
+ //
+ typedef set<String> NameSet;
+
+ class Context: public CXX::Context
+ {
+ public:
+ Context (Parser::options const& ops,
+ SemanticGraph::Schema& root,
+ SemanticGraph::Path const& path,
+ StringLiteralMap const* map)
+ : CXX::Context (std::wcerr, root, path, ops, map),
+ skel_suffix_ (ops.skel_type_suffix ()),
+ impl_suffix_ (ops.impl_type_suffix ()),
+ impl (ops.generate_noop_impl () ||
+ ops.generate_print_impl () ||
+ ops.generate_test_driver ()),
+ skel_suffix (skel_suffix_),
+ impl_suffix (impl_suffix_),
+ global_type_names (global_type_names_),
+ polymorphic (ops.generate_polymorphic ())
+ {
+ }
+
+ protected:
+ Context (Context& c)
+ : CXX::Context (c),
+ impl (c.impl),
+ skel_suffix (c.skel_suffix),
+ impl_suffix (c.impl_suffix),
+ global_type_names (c.global_type_names),
+ polymorphic (c.polymorphic)
+ {
+ }
+
+ public:
+ String
+ find_name (String const& n, NameSet& set)
+ {
+ String base_name (escape (n));
+ String name (base_name);
+
+ for (size_t i (1); set.find (name) != set.end (); ++i)
+ {
+ std::wostringstream os;
+ os << i;
+ name = base_name + os.str ();
+ }
+
+ set.insert (name);
+ return name;
+ }
+
+ private:
+ String const skel_suffix_;
+ String const impl_suffix_;
+
+ map<String, NameSet> global_type_names_;
+
+ public:
+ bool const impl;
+ String const& skel_suffix;
+ String const& impl_suffix;
+
+ map<String, NameSet>& global_type_names;
+
+ bool polymorphic;
+ };
+
+
+ //
+ //
+ struct PrimaryMember: Traversal::Member, Context
+ {
+ PrimaryMember (Context& c, NameSet& set)
+ : Context (c), set_ (set)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (Parser::Context::skip (m))
+ return;
+
+ m.context ().set ("name", find_name (m.name (), set_));
+ }
+
+ private:
+ NameSet& set_;
+ };
+
+ struct DerivedMember: Traversal::Member, Context
+ {
+ DerivedMember (Context& c, NameSet& set)
+ : Context (c), set_ (set)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (Parser::Context::skip (m))
+ return;
+
+ m.context ().set ("parser",
+ find_name (m.name () + L"_parser", set_));
+
+ String const& base (m.context ().get<String> ("name"));
+ m.context ().set ("member", find_name (base + L"_parser_", set_));
+
+ if (polymorphic &&
+ m.is_a<SemanticGraph::Element> () &&
+ !m.type ().context ().count ("anonymous"))
+ {
+ m.context ().set (
+ "member-map", find_name (base + L"_parser_map_", set_));
+
+ m.context ().set (
+ "member-map-impl",
+ find_name (base + L"_parser_map_impl_", set_));
+ }
+ }
+
+ private:
+ NameSet& set_;
+ };
+
+
+ //
+ //
+ struct MemberInRestrictionBase: Traversal::Member
+ {
+ protected:
+ MemberInRestrictionBase (NameSet& set, SemanticGraph::Complex& base)
+ : set_ (set), base_ (base)
+ {
+ }
+
+ struct NotFound {};
+
+ Type&
+ find_member (SemanticGraph::Complex& c, Type& m)
+ {
+ using SemanticGraph::Complex;
+
+ Complex::NamesIteratorPair r (c.find (m.name ()));
+
+ for (; r.first != r.second; ++r.first)
+ {
+ if (r.first->named ().is_a<Type> ())
+ {
+ Type& bm (dynamic_cast<Type&> (r.first->named ()));
+
+ if (typeid (bm) != typeid (m))
+ continue;
+
+ if (m.qualified_p ())
+ {
+ if (bm.qualified_p () &&
+ m.name () == bm.name () &&
+ m.namespace_ ().name () == bm.namespace_ ().name ())
+ return bm;
+ }
+ else
+ {
+ if (!bm.qualified_p () && m.name () == bm.name ())
+ return bm;
+ }
+ }
+ }
+
+ // If we didn't find anything, try our base.
+ //
+ if (c.inherits_p ())
+ {
+ SemanticGraph::Type& base (c.inherits ().base ());
+
+ if (base.is_a<Complex> ())
+ return find_member (dynamic_cast<Complex&> (base), m);
+ }
+
+ //std::wcerr << "unable to find member " << m.name () << " in "
+ // << c.name () << std::endl;
+
+ throw NotFound ();
+ }
+
+ protected:
+ NameSet& set_;
+ SemanticGraph::Complex& base_;
+ };
+
+ struct PrimaryMemberInRestriction: MemberInRestrictionBase, Context
+ {
+ PrimaryMemberInRestriction (Context& c,
+ NameSet& set,
+ SemanticGraph::Complex& base)
+ : MemberInRestrictionBase (set, base), Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (Parser::Context::skip (m))
+ return;
+
+ String name;
+
+ try
+ {
+ // Try to find corresponding member in one of our bases.
+ // This may fail if we use an element that substitutes
+ // one in our base.
+ //
+ Type& bm (find_member (base_, m));
+ name = bm.context ().get<String> ("name");
+ }
+ catch (NotFound const&)
+ {
+ // Fall back to the standard name assignment.
+ //
+ name = find_name (m.name (), set_);
+ }
+
+ m.context ().set ("name", name);
+ }
+ };
+
+ struct DerivedMemberInRestriction: MemberInRestrictionBase, Context
+ {
+ DerivedMemberInRestriction (Context& c,
+ NameSet& set,
+ SemanticGraph::Complex& base)
+ : MemberInRestrictionBase (set, base), Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (Parser::Context::skip (m))
+ return;
+
+ bool poly (polymorphic &&
+ m.is_a<SemanticGraph::Element> () &&
+ !m.type ().context ().count ("anonymous"));
+
+ String parser, member, member_map, member_map_impl;
+
+ try
+ {
+ // Try to find corresponding member in one of our bases.
+ // This may fail if we use an element that substitutes
+ // one in our base.
+ //
+ Type& bm (find_member (base_, m));
+ parser = bm.context ().get<String> ("parser");
+ member = bm.context ().get<String> ("member");
+
+ if (poly)
+ {
+ member_map = bm.context ().get<String> ("member-map");
+ member_map_impl = bm.context ().get<String> ("member-map-impl");
+ }
+ }
+ catch (NotFound const&)
+ {
+ // Fall back to the standard name assignment.
+ //
+ String const& base (m.context ().get<String> ("name"));
+
+ parser = find_name (m.name () + L"_parser", set_);
+ member = find_name (base + L"_parser_", set_);
+
+ if (poly)
+ {
+ member_map = find_name (base + L"_parser_map_", set_);
+ member_map_impl = find_name (base + L"_parser_map_impl_", set_);
+ }
+ }
+
+ m.context ().set ("parser", parser);
+ m.context ().set ("member", member);
+
+ if (poly)
+ {
+ m.context ().set ("member-map", member_map);
+ m.context ().set ("member-map-impl", member_map_impl);
+ }
+ }
+ };
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ SemanticGraph::Context& cc (c.context ());
+
+ // Use processed name.
+ //
+ String const& name (cc.get<String> ("name"));
+
+ // We leave this set around to allow other mappings to use
+ // this information.
+ //
+ cc.set ("cxx-parser-name-processor-member-set", NameSet ());
+ NameSet& member_set (
+ cc.get<NameSet> ("cxx-parser-name-processor-member-set"));
+
+ member_set.insert (name);
+
+ // Add our base's members to the initial list unless we are
+ // inheriting by restriction in which case we need to have
+ // the same names as our base.
+ //
+ bool restriction (false);
+
+ if (c.inherits_p ())
+ {
+ // @@ What if this types name is the same as one of base's
+ // members?
+ //
+ SemanticGraph::Type& base (c.inherits ().base ());
+
+ if (base.is_a<SemanticGraph::Complex> ())
+ {
+ if (!base.context ().count (
+ "cxx-parser-name-processor-member-set"))
+ {
+ dispatch (base);
+ }
+
+ NameSet const& base_set (
+ base.context ().get<NameSet> (
+ "cxx-parser-name-processor-member-set"));
+
+ member_set.insert (base_set.begin (), base_set.end ());
+
+ // Inheritance by restriction from anyType is a special case.
+ //
+ restriction = c.inherits ().is_a<SemanticGraph::Restricts> () &&
+ !c.inherits ().base ().is_a<SemanticGraph::AnyType> ();
+ }
+ }
+
+ if (restriction)
+ {
+ // First assign the "primary" names.
+ //
+ {
+ PrimaryMemberInRestriction member (
+ *this,
+ member_set,
+ dynamic_cast<SemanticGraph::Complex&> (
+ c.inherits ().base ()));
+
+ Traversal::Names names (member);
+
+ Complex::names (c, names);
+ }
+
+ // Assign "derived" names.
+ //
+ {
+ DerivedMemberInRestriction member (
+ *this,
+ member_set,
+ dynamic_cast<SemanticGraph::Complex&> (
+ c.inherits ().base ()));
+
+ Traversal::Names names (member);
+
+ Complex::names (c, names);
+ }
+ }
+ else
+ {
+ // First assign the "primary" names.
+ //
+ {
+ PrimaryMember member (*this, member_set);
+ Traversal::Names names (member);
+
+ Complex::names (c, names);
+ }
+
+ // Assign "derived" names.
+ //
+ {
+ DerivedMember member (*this, member_set);
+ Traversal::Names names (member);
+
+ Complex::names (c, names);
+ }
+ }
+ }
+ };
+
+
+ //
+ //
+ struct GlobalType: Traversal::Type, Context
+ {
+ GlobalType (Context& c, NameSet& set)
+ : Context (c), set_ (set)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ SemanticGraph::Context& c (t.context ());
+ String const& n (t.name ());
+
+ String name (find_name (n + skel_suffix, set_));
+ c.set ("name", name);
+
+ // Assign the post_* name.
+ //
+ c.set ("post", find_post_name (t));
+
+ // Note that we do not add this name to the set so that it
+ // does not influence other names.
+ //
+ if (impl)
+ c.set ("impl", escape (n + impl_suffix));
+ }
+
+ private:
+ String
+ find_post_name (SemanticGraph::Type& t)
+ {
+ String const& n (t.name ());
+
+ // It is possible that our base has the same type name (just
+ // in a different namespaces). Avoid name clash in this case.
+ //
+ using SemanticGraph::Complex;
+
+ Complex* c = dynamic_cast<Complex*> (&t);
+
+ if (c == 0 || !c->inherits_p ())
+ {
+ return escape (L"post_" + n);
+ }
+ else
+ {
+ NameSet set;
+
+ // Collect all base's post_*. In some mutual inclusion cases it
+ // is possible that our base won't have the post name assigned
+ // yet. In this situation will will have to figure it out
+ // ourselves (we can do it since we use the "raw" type name).
+ //
+ SemanticGraph::Type* b (&c->inherits ().base ());
+
+ while (true)
+ {
+ if (b->context ().count ("post"))
+ set.insert (b->context ().get<String> ("post"));
+ else
+ set.insert (find_post_name (*b));
+
+ Complex* cb (dynamic_cast<Complex*> (b));
+
+ if (cb != 0 && cb->inherits_p ())
+ {
+ b = &cb->inherits ().base ();
+ continue;
+ }
+
+ break;
+ }
+
+ String base_name (escape (L"post_" + n));
+ String post (base_name);
+
+ for (size_t i (1); set.find (post) != set.end (); ++i)
+ {
+ std::wostringstream os;
+ os << i;
+ post = base_name + os.str ();
+ }
+
+ return post;
+ }
+ }
+
+ private:
+ NameSet& set_;
+ };
+
+
+ struct Namespace: Traversal::Namespace, Context
+ {
+ Namespace (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& ns)
+ {
+ NameSet& type_set (global_type_names[ns.name ()]);
+
+ GlobalType type (*this, type_set);
+ Traversal::Names names (type);
+
+ Traversal::Namespace::names (ns, names);
+ }
+ };
+
+
+ struct FundType: Traversal::AnyType,
+ Traversal::AnySimpleType,
+
+ Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal,
+
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Language,
+
+ Traversal::Fundamental::QName,
+
+ Traversal::Fundamental::Id,
+ Traversal::Fundamental::IdRef,
+ Traversal::Fundamental::IdRefs,
+
+ Traversal::Fundamental::AnyURI,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary,
+
+ Traversal::Fundamental::Date,
+ Traversal::Fundamental::DateTime,
+ Traversal::Fundamental::Duration,
+ Traversal::Fundamental::Day,
+ Traversal::Fundamental::Month,
+ Traversal::Fundamental::MonthDay,
+ Traversal::Fundamental::Year,
+ Traversal::Fundamental::YearMonth,
+ Traversal::Fundamental::Time,
+
+ Traversal::Fundamental::Entity,
+ Traversal::Fundamental::Entities,
+
+ Context
+ {
+ FundType (Context& c)
+ : Context (c)
+ {
+ }
+
+ // anyType & anySimpleType.
+ //
+ virtual void
+ traverse (SemanticGraph::AnyType& t)
+ {
+ t.context ().set ("name", make_skel_name ("any_type"));
+ t.context ().set ("impl", make_impl_name ("any_type"));
+ t.context ().set ("post", String ("post_any_type"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnySimpleType& t)
+ {
+ t.context ().set ("name", make_skel_name ("any_simple_type"));
+ t.context ().set ("impl", make_impl_name ("any_simple_type"));
+ t.context ().set ("post", String ("post_any_simple_type"));
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean& t)
+ {
+ t.context ().set ("name", make_skel_name ("boolean"));
+ t.context ().set ("impl", make_impl_name ("boolean"));
+ t.context ().set ("post", String ("post_boolean"));
+ }
+
+ // Integral types.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte& t)
+ {
+ t.context ().set ("name", make_skel_name ("byte"));
+ t.context ().set ("impl", make_impl_name ("byte"));
+ t.context ().set ("post", String ("post_byte"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte& t)
+ {
+ t.context ().set ("name", make_skel_name ("unsigned_byte"));
+ t.context ().set ("impl", make_impl_name ("unsigned_byte"));
+ t.context ().set ("post", String ("post_unsigned_byte"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short& t)
+ {
+ t.context ().set ("name", make_skel_name ("short"));
+ t.context ().set ("impl", make_impl_name ("short"));
+ t.context ().set ("post", String ("post_short"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort& t)
+ {
+ t.context ().set ("name", make_skel_name ("unsigned_short"));
+ t.context ().set ("impl", make_impl_name ("unsigned_short"));
+ t.context ().set ("post", String ("post_unsigned_short"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int& t)
+ {
+ t.context ().set ("name", make_skel_name ("int"));
+ t.context ().set ("impl", make_impl_name ("int"));
+ t.context ().set ("post", String ("post_int"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt& t)
+ {
+ t.context ().set ("name", make_skel_name ("unsigned_int"));
+ t.context ().set ("impl", make_impl_name ("unsigned_int"));
+ t.context ().set ("post", String ("post_unsigned_int"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long& t)
+ {
+ t.context ().set ("name", make_skel_name ("long"));
+ t.context ().set ("impl", make_impl_name ("long"));
+ t.context ().set ("post", String ("post_long"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong& t)
+ {
+ t.context ().set ("name", make_skel_name ("unsigned_long"));
+ t.context ().set ("impl", make_impl_name ("unsigned_long"));
+ t.context ().set ("post", String ("post_unsigned_long"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer& t)
+ {
+ t.context ().set ("name", make_skel_name ("integer"));
+ t.context ().set ("impl", make_impl_name ("integer"));
+ t.context ().set ("post", String ("post_integer"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
+ {
+ t.context ().set ("name", make_skel_name ("non_positive_integer"));
+ t.context ().set ("impl", make_impl_name ("non_positive_integer"));
+ t.context ().set ("post", String ("post_non_positive_integer"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
+ {
+ t.context ().set ("name", make_skel_name ("non_negative_integer"));
+ t.context ().set ("impl", make_impl_name ("non_negative_integer"));
+ t.context ().set ("post", String ("post_non_negative_integer"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger& t)
+ {
+ t.context ().set ("name", make_skel_name ("positive_integer"));
+ t.context ().set ("impl", make_impl_name ("positive_integer"));
+ t.context ().set ("post", String ("post_positive_integer"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger& t)
+ {
+ t.context ().set ("name", make_skel_name ("negative_integer"));
+ t.context ().set ("impl", make_impl_name ("negative_integer"));
+ t.context ().set ("post", String ("post_negative_integer"));
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ t.context ().set ("name", make_skel_name ("float"));
+ t.context ().set ("impl", make_impl_name ("float"));
+ t.context ().set ("post", String ("post_float"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ t.context ().set ("name", make_skel_name ("double"));
+ t.context ().set ("impl", make_impl_name ("double"));
+ t.context ().set ("post", String ("post_double"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal& t)
+ {
+ t.context ().set ("name", make_skel_name ("decimal"));
+ t.context ().set ("impl", make_impl_name ("decimal"));
+ t.context ().set ("post", String ("post_decimal"));
+ }
+
+ // Strings.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::String& t)
+ {
+ t.context ().set ("name", make_skel_name ("string"));
+ t.context ().set ("impl", make_impl_name ("string"));
+ t.context ().set ("post", String ("post_string"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString& t)
+ {
+ t.context ().set ("name", make_skel_name ("normalized_string"));
+ t.context ().set ("impl", make_impl_name ("normalized_string"));
+ t.context ().set ("post", String ("post_normalized_string"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token& t)
+ {
+ t.context ().set ("name", make_skel_name ("token"));
+ t.context ().set ("impl", make_impl_name ("token"));
+ t.context ().set ("post", String ("post_token"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken& t)
+ {
+ t.context ().set ("name", make_skel_name ("nmtoken"));
+ t.context ().set ("impl", make_impl_name ("nmtoken"));
+ t.context ().set ("post", String ("post_nmtoken"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens& t)
+ {
+ t.context ().set ("name", make_skel_name ("nmtokens"));
+ t.context ().set ("impl", make_impl_name ("nmtokens"));
+ t.context ().set ("post", String ("post_nmtokens"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name& t)
+ {
+ t.context ().set ("name", make_skel_name ("name"));
+ t.context ().set ("impl", make_impl_name ("name"));
+ t.context ().set ("post", String ("post_name"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName& t)
+ {
+ t.context ().set ("name", make_skel_name ("ncname"));
+ t.context ().set ("impl", make_impl_name ("ncname"));
+ t.context ().set ("post", String ("post_ncname"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Language& t)
+ {
+ t.context ().set ("name", make_skel_name ("language"));
+ t.context ().set ("impl", make_impl_name ("language"));
+ t.context ().set ("post", String ("post_language"));
+ }
+
+
+ // Qualified name.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::QName& t)
+ {
+ t.context ().set ("name", make_skel_name ("qname"));
+ t.context ().set ("impl", make_impl_name ("qname"));
+ t.context ().set ("post", String ("post_qname"));
+ }
+
+
+ // ID/IDREF.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Id& t)
+ {
+ t.context ().set ("name", make_skel_name ("id"));
+ t.context ().set ("impl", make_impl_name ("id"));
+ t.context ().set ("post", String ("post_id"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRef& t)
+ {
+ t.context ().set ("name", make_skel_name ("idref"));
+ t.context ().set ("impl", make_impl_name ("idref"));
+ t.context ().set ("post", String ("post_idref"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs& t)
+ {
+ t.context ().set ("name", make_skel_name ("idrefs"));
+ t.context ().set ("impl", make_impl_name ("idrefs"));
+ t.context ().set ("post", String ("post_idrefs"));
+ }
+
+ // URI.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::AnyURI& t)
+ {
+ t.context ().set ("name", make_skel_name ("uri"));
+ t.context ().set ("impl", make_impl_name ("uri"));
+ t.context ().set ("post", String ("post_uri"));
+ }
+
+ // Binary.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary& t)
+ {
+ t.context ().set ("name", make_skel_name ("base64_binary"));
+ t.context ().set ("impl", make_impl_name ("base64_binary"));
+ t.context ().set ("post", String ("post_base64_binary"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary& t)
+ {
+ t.context ().set ("name", make_skel_name ("hex_binary"));
+ t.context ().set ("impl", make_impl_name ("hex_binary"));
+ t.context ().set ("post", String ("post_hex_binary"));
+ }
+
+
+ // Date/time.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Date& t)
+ {
+ t.context ().set ("name", make_skel_name ("date"));
+ t.context ().set ("impl", make_impl_name ("date"));
+ t.context ().set ("post", String ("post_date"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::DateTime& t)
+ {
+ t.context ().set ("name", make_skel_name ("date_time"));
+ t.context ().set ("impl", make_impl_name ("date_time"));
+ t.context ().set ("post", String ("post_date_time"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Duration& t)
+ {
+ t.context ().set ("name", make_skel_name ("duration"));
+ t.context ().set ("impl", make_impl_name ("duration"));
+ t.context ().set ("post", String ("post_duration"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Day& t)
+ {
+ t.context ().set ("name", make_skel_name ("gday"));
+ t.context ().set ("impl", make_impl_name ("gday"));
+ t.context ().set ("post", String ("post_gday"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Month& t)
+ {
+ t.context ().set ("name", make_skel_name ("gmonth"));
+ t.context ().set ("impl", make_impl_name ("gmonth"));
+ t.context ().set ("post", String ("post_gmonth"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::MonthDay& t)
+ {
+ t.context ().set ("name", make_skel_name ("gmonth_day"));
+ t.context ().set ("impl", make_impl_name ("gmonth_day"));
+ t.context ().set ("post", String ("post_gmonth_day"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Year& t)
+ {
+ t.context ().set ("name", make_skel_name ("gyear"));
+ t.context ().set ("impl", make_impl_name ("gyear"));
+ t.context ().set ("post", String ("post_gyear"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::YearMonth& t)
+ {
+ t.context ().set ("name", make_skel_name ("gyear_month"));
+ t.context ().set ("impl", make_impl_name ("gyear_month"));
+ t.context ().set ("post", String ("post_gyear_month"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Time& t)
+ {
+ t.context ().set ("name", make_skel_name ("time"));
+ t.context ().set ("impl", make_impl_name ("time"));
+ t.context ().set ("post", String ("post_time"));
+ }
+
+ // Entity.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entity& t)
+ {
+ t.context ().set ("name", make_skel_name ("entity"));
+ t.context ().set ("impl", make_impl_name ("entity"));
+ t.context ().set ("post", String ("post_entity"));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entities& t)
+ {
+ t.context ().set ("name", make_skel_name ("entities"));
+ t.context ().set ("impl", make_impl_name ("entities"));
+ t.context ().set ("post", String ("post_entities"));
+ }
+
+ private:
+ String
+ make_skel_name (String const& base)
+ {
+ return escape (base + skel_suffix);
+ }
+
+ String
+ make_impl_name (String const& base)
+ {
+ return escape (base + impl_suffix);
+ }
+ };
+
+ // Go into sourced/included/imported schemas while making sure
+ // we don't process the same stuff more than once.
+ //
+ struct Uses: Traversal::Sources,
+ Traversal::Includes,
+ Traversal::Imports
+ {
+ virtual void
+ traverse (SemanticGraph::Sources& sr)
+ {
+ SemanticGraph::Schema& s (sr.schema ());
+
+ if (!s.context ().count ("cxx-parser-name-processor-seen"))
+ {
+ s.context ().set ("cxx-parser-name-processor-seen", true);
+ Traversal::Sources::traverse (sr);
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Includes& i)
+ {
+ SemanticGraph::Schema& s (i.schema ());
+
+ if (!s.context ().count ("cxx-parser-name-processor-seen"))
+ {
+ s.context ().set ("cxx-parser-name-processor-seen", true);
+ Traversal::Includes::traverse (i);
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Imports& i)
+ {
+ SemanticGraph::Schema& s (i.schema ());
+
+ if (!s.context ().count ("cxx-parser-name-processor-seen"))
+ {
+ s.context ().set ("cxx-parser-name-processor-seen", true);
+ Traversal::Imports::traverse (i);
+ }
+ }
+ };
+
+ // Go into implied schemas while making sure we don't process
+ // the same stuff more than once.
+ //
+ struct Implies: Traversal::Implies
+ {
+ virtual void
+ traverse (SemanticGraph::Implies& i)
+ {
+ SemanticGraph::Schema& s (i.schema ());
+
+ if (!s.context ().count ("cxx-parser-name-processor-seen"))
+ {
+ s.context ().set ("cxx-parser-name-processor-seen", true);
+ Traversal::Implies::traverse (i);
+ }
+ }
+ };
+
+ void
+ process_impl (options const& ops,
+ SemanticGraph::Schema& tu,
+ SemanticGraph::Path const& file,
+ StringLiteralMap const& map)
+ {
+ Context ctx (ops, tu, file, &map);
+
+ if (tu.names_begin ()->named ().name () ==
+ L"http://www.w3.org/2001/XMLSchema")
+ {
+ // XML Schema namespace.
+ //
+ Traversal::Schema schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ FundType fund_type (ctx);
+
+ schema >> schema_names >> ns >> ns_names >> fund_type;
+
+ schema.dispatch (tu);
+ }
+ else
+ {
+
+ // Pass one - assign names to fundamental types.
+ //
+ {
+ Traversal::Schema schema;
+ Implies implies;
+ Traversal::Schema xs_schema;
+
+ schema >> implies >> xs_schema;
+
+ Traversal::Names xs_schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ FundType fund_type (ctx);
+
+ xs_schema >> xs_schema_names >> ns >> ns_names >> fund_type;
+
+ schema.dispatch (tu);
+ }
+
+ // Pass two - assign names to global types. This pass cannot
+ // be combined with pass three because of possible recursive
+ // schema inclusions. Also note that we check first if this
+ // schema has already been processed which may happen in the
+ // file-per-type compilation mode.
+ //
+ if (!tu.context ().count ("cxx-parser-name-processor-seen"))
+ {
+ Traversal::Schema schema;
+ Uses uses;
+
+ schema >> uses >> schema;
+
+ Traversal::Names schema_names;
+ Namespace ns (ctx);
+
+ schema >> schema_names >> ns;
+
+ // Some twisted schemas do recusive self-inclusion.
+ //
+ tu.context ().set ("cxx-parser-name-processor-seen", true);
+
+ schema.dispatch (tu);
+ }
+
+ // Pass three - assign names inside complex types. Here we don't
+ // need to go into included/imported schemas.
+ //
+ {
+ Traversal::Schema schema;
+ Sources sources;
+
+ schema >> sources >> schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+
+ schema >> schema_names >> ns >> ns_names;
+
+ Complex complex (ctx);
+
+ ns_names >> complex;
+
+ schema.dispatch (tu);
+ }
+ }
+ }
+ }
+
+ void NameProcessor::
+ process (options const& ops,
+ SemanticGraph::Schema& tu,
+ SemanticGraph::Path const& file,
+ StringLiteralMap const& map)
+ {
+ process_impl (ops, tu, file, map);
+ }
+ }
+}
diff --git a/xsd/cxx/parser/name-processor.hxx b/xsd/cxx/parser/name-processor.hxx
new file mode 100644
index 0000000..f8ac28c
--- /dev/null
+++ b/xsd/cxx/parser/name-processor.hxx
@@ -0,0 +1,30 @@
+// file : xsd/cxx/parser/name-processor.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_NAME_PROCESSOR_HXX
+#define XSD_CXX_PARSER_NAME_PROCESSOR_HXX
+
+#include <libxsd-frontend/semantic-graph.hxx>
+
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/elements.hxx>
+#include <xsd/cxx/parser/options.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ class NameProcessor
+ {
+ public:
+ void
+ process (options const&,
+ XSDFrontend::SemanticGraph::Schema&,
+ XSDFrontend::SemanticGraph::Path const& file,
+ StringLiteralMap const& map);
+ };
+ }
+}
+
+#endif // XSD_CXX_PARSER_NAME_PROCESSOR_HXX
diff --git a/xsd/cxx/parser/options.cli b/xsd/cxx/parser/options.cli
new file mode 100644
index 0000000..e430333
--- /dev/null
+++ b/xsd/cxx/parser/options.cli
@@ -0,0 +1,147 @@
+// file : xsd/cxx/parser/options.cli
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+include <cstddef>; // std::size_t
+
+include <xsd/types.hxx>; // NarrowString, NarrowStrings
+
+include <xsd/cxx/options.cli>;
+
+namespace CXX
+{
+ namespace Parser
+ {
+ class options: CXX::options
+ {
+ NarrowStrings --type-map
+ {
+ "<mapfile>",
+ "Read XML Schema to C++ type mapping information from <mapfile>.
+ Repeat this option to specify several type maps. Type maps are
+ considered in order of appearance and the first match is used. By
+ default all user-defined types are mapped to \cb{void}. See the
+ TYPE MAP section below for more information."
+ };
+
+ NarrowString --xml-parser = "xerces"
+ {
+ "<parser>",
+ "Use <parser> as the underlying XML parser. Valid values are
+ \cb{xerces} for Xerces-C++ (default) and \cb{expat} for Expat."
+ };
+
+ // Features.
+ //
+ bool --generate-validation
+ {
+ "Generate validation code. The validation code (\"perfect parser\")
+ ensures that instance documents conform to the schema. Validation
+ code is generated by default when the selected underlying XML parser
+ is non-validating (\cb{expat})."
+ };
+
+ bool --suppress-validation
+ {
+ "Suppress the generation of validation code. Validation is suppressed
+ by default when the selected underlying XML parser is validating
+ (\cb{xerces})."
+ };
+
+ bool --generate-polymorphic
+ {
+ "Generate polymorphism-aware code. Specify this option if you use
+ substitution groups or \cb{xsi:type}."
+ };
+
+ bool --generate-noop-impl
+ {
+ "Generate a sample parser implementation that does nothing (no
+ operation). The sample implementation can then be filled with
+ the application-specific code. For an input file in the form
+ \cb{name.xsd} this option triggers the generation of two
+ additional C++ files in the form: \cb{name-pimpl.hxx} (parser
+ implementation header file) and \cb{name-pimpl.cxx} (parser
+ implementation source file)."
+ };
+
+ bool --generate-print-impl
+ {
+ "Generate a sample parser implementation that prints the XML data
+ to \c{STDOUT}. For an input file in the form \cb{name.xsd} this
+ option triggers the generation of two additional C++ files in the
+ form: \cb{name-pimpl.hxx} (parser implementation header file) and
+ \cb{name-pimpl.cxx} (parser implementation source file)."
+ };
+
+ bool --generate-test-driver
+ {
+ "Generate a test driver for the sample parser implementation. For an
+ input file in the form \cb{name.xsd} this option triggers the
+ generation of an additional C++ file in the form
+ \cb{name-driver.cxx}."
+ };
+
+ bool --force-overwrite
+ {
+ "Force overwriting of the existing implementation and test driver
+ files. Use this option only if you do not mind loosing the changes
+ you have made in the sample implementation or test driver files."
+ };
+
+ // Root element.
+ //
+ bool --root-element-first
+ {
+ "Indicate that the first global element is the document root. This
+ information is used to generate the test driver for the sample
+ implementation."
+ };
+
+ bool --root-element-last
+ {
+ "Indicate that the last global element is the document root. This
+ information is used to generate the test driver for the sample
+ implementation."
+ };
+
+ NarrowString --root-element
+ {
+ "<element>",
+ "Indicate that <element> is the document root. This information is
+ used to generate the test driver for the sample implementation."
+ };
+
+ // Suffixes.
+ //
+ NarrowString --skel-type-suffix = "_pskel"
+ {
+ "<suffix>",
+ "Use the provided <suffix> instead of the default \cb{_pskel} to
+ construct the names of the generated parser skeletons."
+ };
+
+ NarrowString --skel-file-suffix = "-pskel"
+ {
+ "<suffix>",
+ "Use the provided <suffix> instead of the default \cb{-pskel} to
+ construct the names of the generated parser skeleton files."
+ };
+
+ NarrowString --impl-type-suffix = "_pimpl"
+ {
+ "<suffix>",
+ "Use the provided <suffix> instead of the default \cb{_pimpl} to
+ construct the names of the parser implementations for the built-in
+ XML Schema types as well as sample parser implementations."
+ };
+
+ NarrowString --impl-file-suffix = "-pimpl"
+ {
+ "<suffix>",
+ "Use the provided <suffix> instead of the default \cb{-pimpl} to
+ construct the names of the generated sample parser implementation
+ files."
+ };
+ };
+ }
+}
diff --git a/xsd/cxx/parser/parser-forward.cxx b/xsd/cxx/parser/parser-forward.cxx
new file mode 100644
index 0000000..65603fd
--- /dev/null
+++ b/xsd/cxx/parser/parser-forward.cxx
@@ -0,0 +1,110 @@
+// file : xsd/cxx/parser/parser-forward.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/parser/parser-forward.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ os << "class " << ename (e) << ";";
+ }
+ };
+
+ //
+ //
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ os << "class " << ename (l) << ";";
+ }
+ };
+
+ //
+ //
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ os << "class " << ename (u) << ";";
+ }
+ };
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ os << "class " << ename (c) << ";";
+ }
+ };
+ }
+
+ void
+ generate_parser_forward (Context& ctx)
+ {
+ ctx.os << "// Forward declarations" << endl
+ << "//" << endl;
+
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names schema_names;
+
+ Namespace ns (ctx);
+ Traversal::Names names;
+
+ schema >> sources >> schema;
+ schema >> schema_names >> ns >> names;
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ schema.dispatch (ctx.schema_root);
+
+ ctx.os << endl;
+ }
+ }
+}
diff --git a/xsd/cxx/parser/parser-forward.hxx b/xsd/cxx/parser/parser-forward.hxx
new file mode 100644
index 0000000..b5345a5
--- /dev/null
+++ b/xsd/cxx/parser/parser-forward.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/parser/parser-forward.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_PARSER_FORWARD_HXX
+#define XSD_CXX_PARSER_PARSER_FORWARD_HXX
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ void
+ generate_parser_forward (Context&);
+ }
+}
+
+#endif // XSD_CXX_PARSER_PARSER_FORWARD_HXX
diff --git a/xsd/cxx/parser/parser-header.cxx b/xsd/cxx/parser/parser-header.cxx
new file mode 100644
index 0000000..327bb07
--- /dev/null
+++ b/xsd/cxx/parser/parser-header.cxx
@@ -0,0 +1,1440 @@
+// file : xsd/cxx/parser/parser-header.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <set>
+
+#include <xsd/cxx/parser/parser-header.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String const& name (ename (e));
+ SemanticGraph::Type& base (e.inherits ().base ());
+
+ os << "class " << type_exp << name << ": public virtual " <<
+ fq_name (base)
+ << "{"
+ << "public:" << endl
+ << "// Parser callbacks. Override them in your " <<
+ "implementation." << endl
+ << "//" << endl;
+
+ os << "// virtual void" << endl
+ << "// pre ();" << endl
+ << endl;
+
+ String const& ret (ret_type (e));
+
+ bool same (ret == ret_type (base));
+
+ os << "virtual " << ret << endl
+ << post_name (e) << " ()" <<
+ (same || ret == L"void" ? ";" : " = 0;");
+
+ if (polymorphic)
+ {
+ os << endl
+ << "public:" << endl
+ << "static const " << char_type << "*" << endl
+ << "_static_type ();"
+ << endl
+ << "virtual const " << char_type << "*" << endl
+ << "_dynamic_type () const;";
+ }
+
+ os << "};";
+ }
+ };
+
+ //
+ //
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String const& name (ename (l));
+ SemanticGraph::Type& t (l.argumented ().type ());
+
+ String item (unclash (name, "item"));
+
+ os << "class " << type_exp << name << ": public " << list_base
+ << "{"
+ << "public:" << endl
+ << "// Parser callbacks. Override them in your " <<
+ "implementation." << endl
+ << "//" << endl;
+
+ // pre
+ //
+ os << "// virtual void" << endl
+ << "// pre ();" << endl
+ << endl;
+
+ // item
+ //
+ String const& arg (arg_type (t));
+
+ os << "virtual void" << endl
+ << item;
+
+ if (arg == L"void")
+ os << " ();";
+ else
+ os << " (" << arg << ");";
+
+ os << endl;
+
+ // post
+ //
+ String const& ret (ret_type (l));
+
+ os << "virtual " << ret << endl
+ << post_name (l) << " ()" << (ret == L"void" ? ";" : " = 0;")
+ << endl;
+
+ //
+ //
+ os << "// Parser construction API." << endl
+ << "//" << endl;
+
+ // item_parser
+ //
+ os << "void" << endl
+ << unclash (name, "item_parser") << " (" << fq_name (t) << "&);"
+ << endl;
+
+ // parsers
+ //
+ os << "void" << endl
+ << "parsers (" << fq_name (t) << "& /* item */);"
+ << endl;
+
+ // c-tor
+ //
+ os << "// Constructor." << endl
+ << "//" << endl
+ << name << " ();"
+ << endl;
+
+
+ if (polymorphic)
+ {
+ os << "public:" << endl
+ << "static const " << char_type << "*" << endl
+ << "_static_type ();"
+ << endl
+ << "virtual const " << char_type << "*" << endl
+ << "_dynamic_type () const;"
+ << endl;
+ }
+
+ //
+ //
+ os << "// Implementation." << endl
+ << "//" << endl
+ << "protected:" << endl;
+
+ os << "virtual void" << endl
+ << "_xsd_parse_item (const " << string_type << "&);"
+ << endl;
+
+ os << "protected:" << endl
+ << fq_name (t) << "* _xsd_" << item << "_;"
+ << "};";
+ }
+ };
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String const& name (ename (u));
+
+ os << "class " << type_exp << name << ": public " << simple_base
+ << "{"
+ << "public:" << endl
+ << "// Parser callbacks. Override them in your " <<
+ "implementation." << endl
+ << "//" << endl;
+
+ os << "// virtual void" << endl
+ << "// pre ();" << endl
+ << "//" << endl
+ << "// virtual void" << endl
+ << "// _characters (const " << string_type << "&);" << endl
+ << endl;
+
+ String const& ret (ret_type (u));
+
+ os << "virtual " << ret << endl
+ << post_name (u) << " ()" << (ret == L"void" ? ";" : " = 0;");
+
+ if (polymorphic)
+ {
+ os << endl
+ << "public:" << endl
+ << "static const " << char_type << "*" << endl
+ << "_static_type ();"
+ << endl
+ << "virtual const " << char_type << "*" << endl
+ << "_dynamic_type () const;";
+ }
+
+ os << "};";
+ }
+ };
+
+
+ //
+ //
+ struct ParserCallback: Traversal::Member, Context
+ {
+ ParserCallback (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m)) return;
+
+ String const& arg (arg_type (m.type ()));
+
+ os << "virtual void" << endl
+ << ename (m);
+
+ if (arg == L"void")
+ os << " ();";
+ else
+ os << " (" << arg << ");";
+
+ os << endl;
+ }
+ };
+
+
+ //
+ //
+ struct ParserModifier: Traversal::Member, Context
+ {
+ ParserModifier (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ os << "void" << endl
+ << eparser (m) << " (" << fq_name (m.type ()) << "&);"
+ << endl;
+
+ if (polymorphic &&
+ m.is_a<SemanticGraph::Element> () &&
+ !anonymous (m.type ()))
+ {
+ os << "void" << endl
+ << eparser (m) << " (const " << parser_map << "&);"
+ << endl;
+ }
+ }
+ };
+
+ //
+ //
+ struct ParserMember: Traversal::Member, Context
+ {
+ ParserMember (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ String type (fq_name (m.type ()));
+
+ os << type << "* " << emember (m) << ";";
+
+ if (polymorphic &&
+ m.is_a<SemanticGraph::Element> () &&
+ !anonymous (m.type ()))
+ {
+ os << "const " << parser_map << "* " << emember_map (m) << ";"
+ << endl;
+ }
+ }
+ };
+
+ //
+ //
+ struct Particle: Traversal::All,
+ Traversal::Choice,
+ Traversal::Sequence,
+ Context
+ {
+ Particle (Context& c)
+ : Context (c)
+ {
+ *this >> contains_particle_ >> *this;
+ }
+
+
+ virtual void
+ traverse (SemanticGraph::All& a)
+ {
+ if (!a.context().count ("comp-number"))
+ return;
+
+ size_t state_count (a.context().get<size_t> ("state-count"));
+
+ os << "void" << endl
+ << "all_0 (unsigned long& state," << endl
+ << "unsigned char* count," << endl
+ << "const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "* t," << endl
+ << "bool start);"
+ << endl
+ << "unsigned char v_all_first_[" << state_count << "UL];"
+ << "::xsd::cxx::parser::validating::all_stack v_all_count_;"
+ << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Choice& c)
+ {
+ if (!c.context().count ("comp-number"))
+ return;
+
+ size_t n (c.context ().get<size_t> ("comp-number"));
+
+ os << "void" << endl
+ << "choice_" << n << " (unsigned long& state," << endl
+ << "unsigned long& count," << endl
+ << "const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "* t," << endl
+ << "bool start);"
+ << endl;
+
+ Traversal::Choice::traverse (c);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Sequence& s)
+ {
+ if (!s.context().count ("comp-number"))
+ return;
+
+ size_t n (s.context ().get<size_t> ("comp-number"));
+
+ os << "void" << endl
+ << "sequence_" << n << " (unsigned long& state," << endl
+ << "unsigned long& count," << endl
+ << "const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "* t," << endl
+ << "bool start);"
+ << endl;
+
+ Traversal::Sequence::traverse (s);
+ }
+
+ private:
+ Traversal::ContainsParticle contains_particle_;
+ };
+
+
+ //
+ //
+ struct AttributeValidationState: Traversal::Attribute, Context
+ {
+ AttributeValidationState (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ if (!a.optional_p ())
+ {
+ os << "bool " << ename (a) << ";";
+ }
+ }
+ };
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c),
+ parser_callback_ (c),
+ parser_member_ (c),
+ parser_modifier_ (c),
+ attribute_validation_state_ (c)
+ {
+ names_parser_callback_ >> parser_callback_;
+ names_parser_member_ >> parser_member_;
+ names_parser_modifier_ >> parser_modifier_;
+ names_attribute_validation_state_ >> attribute_validation_state_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ String const& name (ename (c));
+
+ // In case of an inheritance-by-restriction, we don't need to
+ // generate parser callbacks, etc. since they are the same as in
+ // the base. We only need the parsing/validation code.
+ //
+ bool restriction (restriction_p (c));
+
+ bool he (has<Traversal::Element> (c));
+ bool ha (has<Traversal::Attribute> (c));
+
+ bool hae (has_particle<Traversal::Any> (c));
+ bool haa (has<Traversal::AnyAttribute> (c));
+
+ bool hra (false); // Has required attribute.
+ if (ha)
+ {
+ RequiredAttributeTest test (hra);
+ Traversal::Names names_test (test);
+ names (c, names_test);
+ }
+
+
+ //
+ //
+ os << "class " << type_exp << name << ": public ";
+
+ if (c.inherits_p ())
+ os << "virtual " << fq_name (c.inherits ().base ());
+ else
+ os << complex_base;
+
+ os << "{"
+ << "public:" << endl
+ << "// Parser callbacks. Override them in your " <<
+ "implementation." << endl
+ << "//" << endl;
+
+ os << "// virtual void" << endl
+ << "// pre ();" << endl
+ << endl;
+
+
+ if (!restriction && (ha || he))
+ {
+ names (c, names_parser_callback_);
+ }
+
+ String const& ret (ret_type (c));
+
+ bool same (c.inherits_p () &&
+ ret == ret_type (c.inherits ().base ()));
+
+ os << "virtual " << ret << endl
+ << post_name (c) << " ()" <<
+ (same || ret == L"void" ? ";" : " = 0;")
+ << endl;
+
+ //
+ //
+ if (!restriction && (he || ha))
+ {
+ os << "// Parser construction API." << endl
+ << "//" << endl;
+
+ names (c, names_parser_modifier_);
+
+ os << "void" << endl
+ << "parsers (";
+
+ {
+ ParserParamDecl decl (*this, false);
+ decl.traverse (c);
+ }
+
+ os << ");"
+ << endl;
+ }
+
+ // Default c-tor.
+ //
+ if ((!restriction && (he || ha)) ||
+ (validation && (he || hae || hra)))
+ {
+ os << "// Constructor." << endl
+ << "//" << endl
+ << name << " ();"
+ << endl;
+ }
+
+ if (polymorphic)
+ {
+ os << "public:" << endl
+ << "static const " << char_type << "*" << endl
+ << "_static_type ();"
+ << endl
+ << "virtual const " << char_type << "*" << endl
+ << "_dynamic_type () const;"
+ << endl;
+ }
+
+ // Implementation.
+ //
+ if (he || ha || (validation && (hae || haa)))
+ {
+ os << "// Implementation." << endl
+ << "//" << endl
+ << "protected:" << endl;
+ }
+
+ // element
+ //
+ if (he || (validation && hae))
+ {
+ // _start_element_impl
+ //
+ os << "virtual bool" << endl
+ << "_start_element_impl (const " << string_type << "&," << endl
+ << "const " << string_type << "&," << endl
+ << "const " << string_type << "*);"
+ << endl;
+
+ // end_element
+ //
+ os << "virtual bool" << endl
+ << "_end_element_impl (const " << string_type << "&," << endl
+ << "const " << string_type << "&);"
+ << endl;
+ }
+
+ // attribute
+ //
+ if (validation)
+ {
+ if (ha)
+ {
+ os << "virtual bool" << endl
+ << "_attribute_impl_phase_one (const " << string_type <<
+ "&," << endl
+ << "const " << string_type << "&," << endl
+ << "const " << string_type << "&);" << endl
+ << endl;
+ }
+
+ if (haa)
+ {
+ os << "virtual bool" << endl
+ << "_attribute_impl_phase_two (const " << string_type <<
+ "&," << endl
+ << "const " << string_type << "&," << endl
+ << "const " << string_type << "&);"
+ << endl;
+ }
+ }
+ else
+ {
+ if (ha)
+ {
+ os << "virtual bool" << endl
+ << "_attribute_impl (const " << string_type << "&," << endl
+ << "const " << string_type << "&," << endl
+ << "const " << string_type << "&);"
+ << endl;
+ }
+ }
+
+ // characters
+ //
+ if (validation && c.mixed_p ())
+ {
+ os << "virtual bool" << endl
+ << "_characters_impl (const " << string_type << "&);"
+ << endl;
+ }
+
+ if (!restriction && (he || ha))
+ {
+ os << "protected:" << endl;
+ names (c, names_parser_member_);
+ os << endl;
+ }
+
+ if (validation && (he || hae))
+ {
+ size_t depth (c.context ().get<size_t> ("depth"));
+
+ os << "protected:" << endl;
+
+ os << "struct v_state_descr_"
+ << "{"
+ << "void (" << fq_name (c) << "::*func) (" << endl
+ << "unsigned long&," << endl
+ << "unsigned long&," << endl
+ << "const " << string_type << "&," << endl
+ << "const " << string_type << "&," << endl
+ << "const " << string_type << "*," << endl
+ << "bool);"
+ << "unsigned long state;"
+ << "unsigned long count;"
+ << "};";
+
+ // Allocate one extra slot for the special state.
+ //
+ os << "struct v_state_"
+ << "{"
+ << "v_state_descr_ data[" << depth + 1 << "UL];"
+ << "unsigned long size;"
+ << "};";
+
+ os << "v_state_ v_state_first_;"
+ << "::xsd::cxx::parser::pod_stack v_state_stack_;"
+ << endl;
+
+ os << "virtual void" << endl
+ << "_pre_e_validate ();"
+ << endl;
+
+ os << "virtual void" << endl
+ << "_post_e_validate ();"
+ << endl;
+
+ Particle t (*this);
+ t.dispatch (c.contains_compositor ().compositor ());
+ }
+
+ if (validation && hra)
+ {
+ os << "protected:" << endl;
+
+ os << "struct v_state_attr_"
+ << "{";
+
+ names (c, names_attribute_validation_state_);
+
+ os << "};";
+
+ os << "v_state_attr_ v_state_attr_first_;"
+ << "::xsd::cxx::parser::pod_stack v_state_attr_stack_;"
+ << endl;
+
+ os << "virtual void" << endl
+ << "_pre_a_validate ();"
+ << endl;
+
+ os << "virtual void" << endl
+ << "_post_a_validate ();"
+ << endl;
+ }
+
+ os << "};";
+ }
+
+ private:
+ //
+ //
+ ParserCallback parser_callback_;
+ Traversal::Names names_parser_callback_;
+
+ //
+ //
+ ParserMember parser_member_;
+ Traversal::Names names_parser_member_;
+
+ //
+ //
+ ParserModifier parser_modifier_;
+ Traversal::Names names_parser_modifier_;
+
+ //
+ //
+ AttributeValidationState attribute_validation_state_;
+ Traversal::Names names_attribute_validation_state_;
+ };
+
+ struct FundType : Context,
+
+ Traversal::AnyType,
+ Traversal::AnySimpleType,
+
+ Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal,
+
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Language,
+
+ Traversal::Fundamental::QName,
+
+ Traversal::Fundamental::Id,
+ Traversal::Fundamental::IdRef,
+ Traversal::Fundamental::IdRefs,
+
+ Traversal::Fundamental::AnyURI,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary,
+
+ Traversal::Fundamental::Date,
+ Traversal::Fundamental::DateTime,
+ Traversal::Fundamental::Duration,
+ Traversal::Fundamental::Day,
+ Traversal::Fundamental::Month,
+ Traversal::Fundamental::MonthDay,
+ Traversal::Fundamental::Year,
+ Traversal::Fundamental::YearMonth,
+ Traversal::Fundamental::Time,
+
+ Traversal::Fundamental::Entity,
+ Traversal::Fundamental::Entities
+ {
+ FundType (Context& c)
+ : Context (c), xs_ns_ (xs_ns_name ())
+ {
+ impl_ns_ = "::xsd::cxx::parser::";
+ impl_ns_ += (validation ? L"validating" : L"non_validating");
+
+ if (char_type == L"char")
+ string_type_ = L"::std::string";
+ else if (char_type == L"wchar_t")
+ string_type_ = L"::std::wstring";
+ else
+ string_type_ = L"::std::basic_string< " + char_type + L" >";
+ }
+
+ // anyType & anySimpleType.
+ //
+ virtual void
+ traverse (SemanticGraph::AnyType& t)
+ {
+ gen_typedef (t, "void", "any_type_pskel", "any_type_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnySimpleType& t)
+ {
+ gen_typedef (t, "void",
+ "any_simple_type_pskel", "any_simple_type_pimpl");
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean& t)
+ {
+ gen_typedef (t, "bool", "boolean_pskel", "boolean_pimpl");
+ }
+
+ // Integral types.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte& t)
+ {
+ gen_typedef (t, "signed char", "byte_pskel", "byte_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte& t)
+ {
+ gen_typedef (t, "unsigned char",
+ "unsigned_byte_pskel", "unsigned_byte_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short& t)
+ {
+ gen_typedef (t, "short", "short_pskel", "short_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort& t)
+ {
+ gen_typedef (t, "unsigned short",
+ "unsigned_short_pskel", "unsigned_short_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int& t)
+ {
+ gen_typedef (t, "int", "int_pskel", "int_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt& t)
+ {
+ gen_typedef (t, "unsigned int",
+ "unsigned_int_pskel", "unsigned_int_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long& t)
+ {
+ gen_typedef (t, "long long", "long_pskel", "long_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong& t)
+ {
+ gen_typedef (t, "unsigned long long",
+ "unsigned_long_pskel", "unsigned_long_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer& t)
+ {
+ gen_typedef (t, "long long", "integer_pskel", "integer_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger& t)
+ {
+ gen_typedef (t, "long long",
+ "negative_integer_pskel", "negative_integer_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
+ {
+ gen_typedef (t, "long long",
+ "non_positive_integer_pskel",
+ "non_positive_integer_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger& t)
+ {
+ gen_typedef (t, "unsigned long long",
+ "positive_integer_pskel", "positive_integer_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
+ {
+ gen_typedef (t, "unsigned long long",
+ "non_negative_integer_pskel",
+ "non_negative_integer_pimpl");
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ gen_typedef (t, "float", "float_pskel", "float_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ gen_typedef (t, "double", "double_pskel", "double_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal& t)
+ {
+ gen_typedef (t, "double", "decimal_pskel", "decimal_pimpl");
+ }
+
+ // Strings.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::String& t)
+ {
+ gen_typedef (t, string_type_, "string_pskel", "string_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString& t)
+ {
+ gen_typedef (t, string_type_,
+ "normalized_string_pskel", "normalized_string_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token& t)
+ {
+ gen_typedef (t, string_type_, "token_pskel", "token_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken& t)
+ {
+ nmtoken_ = gen_typedef (t, string_type_,
+ "nmtoken_pskel", "nmtoken_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens& t)
+ {
+ // NMTOKENS uses NMTOKEN implementation to parse individual items.
+ // As a result, we don't generate NMTOKENS if we didn't generate
+ // NMTOKEN. Here we assume NMTOKEN is handled before NMTOKENS.
+ //
+ if(nmtoken_)
+ gen_typedef (t, xs_ns_ + L"::string_sequence",
+ "nmtokens_pskel", "nmtokens_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name& t)
+ {
+ gen_typedef (t, string_type_, "name_pskel", "name_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName& t)
+ {
+ gen_typedef (t, string_type_, "ncname_pskel", "ncname_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Language& t)
+ {
+ gen_typedef (t, string_type_, "language_pskel", "language_pimpl");
+ }
+
+ // Qualified name.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::QName& t)
+ {
+ gen_typedef (t, xs_ns_ + L"::qname", "qname_pskel", "qname_pimpl");
+ }
+
+ // ID/IDREF.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Id& t)
+ {
+ gen_typedef (t, string_type_, "id_pskel", "id_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRef& t)
+ {
+ idref_ = gen_typedef (t, string_type_, "idref_pskel", "idref_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs& t)
+ {
+ // IDREFS uses IDREF implementation to parse individual items.
+ // As a result, we don't generate IDREFS if we didn't generate
+ // IDREF. Here we assume IDREF is handled before IDREFS.
+ //
+ if (idref_)
+ gen_typedef (t, xs_ns_ + L"::string_sequence",
+ "idrefs_pskel", "idrefs_pimpl");
+ }
+
+ // URI.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::AnyURI& t)
+ {
+ gen_typedef (t, string_type_, "uri_pskel", "uri_pimpl");
+ }
+
+ // Binary.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary& t)
+ {
+ String buffer (auto_ptr + L"< " + xs_ns_ + L"::buffer >");
+ gen_typedef (t, buffer,
+ "base64_binary_pskel", "base64_binary_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary& t)
+ {
+ String buffer (auto_ptr + L"< " + xs_ns_ + L"::buffer >");
+ gen_typedef (t, buffer, "hex_binary_pskel", "hex_binary_pimpl");
+ }
+
+
+ // Date/time.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Date& t)
+ {
+ gen_typedef (t, xs_ns_ + L"::date", "date_pskel", "date_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::DateTime& t)
+ {
+ gen_typedef (t, xs_ns_ + L"::date_time",
+ "date_time_pskel", "date_time_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Duration& t)
+ {
+ gen_typedef (t, xs_ns_ + L"::duration",
+ "duration_pskel", "duration_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Day& t)
+ {
+ gen_typedef (t, xs_ns_ + L"::gday", "gday_pskel", "gday_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Month& t)
+ {
+ gen_typedef (t, xs_ns_ + L"::gmonth",
+ "gmonth_pskel", "gmonth_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::MonthDay& t)
+ {
+ gen_typedef (t, xs_ns_ + L"::gmonth_day",
+ "gmonth_day_pskel", "gmonth_day_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Year& t)
+ {
+ gen_typedef (t, xs_ns_ + L"::gyear", "gyear_pskel", "gyear_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::YearMonth& t)
+ {
+ gen_typedef (t, xs_ns_ + L"::gyear_month",
+ "gyear_month_pskel", "gyear_month_pimpl");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Time& t)
+ {
+ gen_typedef (t, xs_ns_ + L"::time", "time_pskel", "time_pimpl");
+ }
+
+ // Entity.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entity&)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entities&)
+ {
+ }
+
+ private:
+ bool
+ gen_typedef (SemanticGraph::Type& t,
+ String const& type,
+ String const& pskel,
+ String const& pimpl)
+ {
+ if (ret_type (t) == type)
+ {
+ os << "typedef " << impl_ns_ << "::" << pskel << "< " <<
+ char_type << " > " << ename (t) << ";";
+
+ String const& pimpl_name (t.context ().get<String> ("impl"));
+
+ os << "typedef " << impl_ns_ << "::" << pimpl << "< " <<
+ char_type << " > " << pimpl_name << ";"
+ << endl;
+
+ return true;
+ }
+
+ return false;
+ }
+
+ String xs_ns_;
+ String impl_ns_;
+ String string_type_;
+
+ bool idref_;
+ bool nmtoken_;
+ };
+
+ struct FundNamespace: Namespace, Context
+ {
+ FundNamespace (Context& c)
+ : Namespace (c), Context (c)
+ {
+ }
+
+ void
+ traverse (Type& ns)
+ {
+ pre (ns);
+
+ String impl ("::xsd::cxx::parser::");
+ impl += (validation ? L"validating" : L"non_validating");
+
+ String const c (char_type);
+
+ os << "// Built-in XML Schema types mapping." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::parser::string_sequence< " << c <<
+ " > string_sequence;"
+ << "typedef ::xsd::cxx::parser::qname< " << c << " > qname;"
+ << "typedef ::xsd::cxx::parser::buffer buffer;"
+ << "typedef ::xsd::cxx::parser::time_zone time_zone;"
+ << "typedef ::xsd::cxx::parser::gday gday;"
+ << "typedef ::xsd::cxx::parser::gmonth gmonth;"
+ << "typedef ::xsd::cxx::parser::gyear gyear;"
+ << "typedef ::xsd::cxx::parser::gmonth_day gmonth_day;"
+ << "typedef ::xsd::cxx::parser::gyear_month gyear_month;"
+ << "typedef ::xsd::cxx::parser::date date;"
+ << "typedef ::xsd::cxx::parser::time time;"
+ << "typedef ::xsd::cxx::parser::date_time date_time;"
+ << "typedef ::xsd::cxx::parser::duration duration;"
+ << endl;
+
+ os << "// Base parser skeletons." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::parser::parser_base< " << c <<
+ " > parser_base;"
+ << "typedef " << impl << "::empty_content< " << c <<
+ " > empty_content;"
+ << "typedef " << impl << "::simple_content< " << c <<
+ " > simple_content;"
+ << "typedef " << impl << "::complex_content< " << c <<
+ " > complex_content;"
+ << "typedef " << impl << "::list_base< " << c << " > list_base;"
+ << endl;
+
+ if (polymorphic)
+ {
+ os << "// Parser map interface and default implementation." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::parser::parser_map< " << c <<
+ " > parser_map;"
+ << "typedef ::xsd::cxx::parser::parser_map_impl< " << c <<
+ " > parser_map_impl;"
+ << endl;
+ }
+
+ os << "// Parser skeletons and implementations for the XML Schema" << endl
+ << "// built-in types." << endl
+ << "//" << endl;
+
+ names (ns);
+
+ os << "// Exceptions. See xsd/cxx/parser/exceptions.hxx " <<
+ "for details." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::parser::exception< " <<
+ char_type << " > exception;"
+ << endl
+ << "// Parsing diagnostics." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::parser::severity severity;"
+ << "typedef ::xsd::cxx::parser::error< " << c << " > error;"
+ << "typedef ::xsd::cxx::parser::diagnostics< " << c <<
+ " > diagnostics;"
+ << "typedef ::xsd::cxx::parser::parsing< " << c << " > parsing;"
+ << endl;
+
+ os << "// Error handler. See " <<
+ "xsd/cxx/xml/error-handler.hxx for details." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::xml::error_handler< " << c <<
+ " > error_handler;"
+ << endl;
+
+ os << "// Read-only string." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::ro_string< " << c << " > ro_string;"
+ << endl;
+
+ if (xml_parser == L"xerces")
+ {
+ os << "// Parsing flags. See " <<
+ "xsd/cxx/parser/xerces/elements.hxx" << endl
+ << "// for details." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::parser::xerces::flags flags;"
+ << endl;
+
+ os << "// Parsing properties. See " <<
+ "xsd/cxx/parser/xerces/elements.hxx" << endl
+ << "// for details." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::parser::xerces::properties< " << c <<
+ " > properties;"
+ << endl;
+
+ os << "// Document type. See " <<
+ "xsd/cxx/parser/xerces/elements.hxx" << endl
+ << "// for details." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::parser::xerces::document< " << c <<
+ " > document;"
+ << endl;
+
+ }
+ else if (xml_parser == L"expat")
+ {
+ os << "// Document type. See " <<
+ "xsd/cxx/parser/expat/elements.hxx" << endl
+ << "// for details." << endl
+ << "//" << endl
+ << "typedef ::xsd::cxx::parser::expat::document< " << c <<
+ " > document;"
+ << endl;
+ }
+
+ post (ns);
+ }
+ };
+ }
+
+ void
+ generate_parser_header (Context& ctx, bool generate_xml_schema)
+ {
+ String c (ctx.char_type);
+
+ //
+ //
+ if (c == L"char")
+ {
+ ctx.os << "#ifndef XSD_USE_CHAR" << endl
+ << "#define XSD_USE_CHAR" << endl
+ << "#endif" << endl
+ << endl;
+
+ ctx.os << "#ifndef XSD_CXX_PARSER_USE_CHAR" << endl
+ << "#define XSD_CXX_PARSER_USE_CHAR" << endl
+ << "#endif" << endl
+ << endl;
+ }
+ else if (c == L"wchar_t")
+ {
+ ctx.os << "#ifndef XSD_USE_WCHAR" << endl
+ << "#define XSD_USE_WCHAR" << endl
+ << "#endif" << endl
+ << endl;
+
+ ctx.os << "#ifndef XSD_CXX_PARSER_USE_WCHAR" << endl
+ << "#define XSD_CXX_PARSER_USE_WCHAR" << endl
+ << "#endif" << endl
+ << endl;
+ }
+
+ //
+ //
+ NarrowString extern_xml_schema;
+
+ if (!generate_xml_schema)
+ extern_xml_schema = ctx.options.extern_xml_schema ();
+
+ if (extern_xml_schema)
+ {
+ String name (ctx.hxx_expr->replace (extern_xml_schema));
+
+ ctx.os << "#include " << ctx.process_include_path (name) << endl
+ << endl;
+
+ // Generate includes that came from the type map.
+ //
+ if (ctx.schema_root.context ().count ("includes"))
+ {
+ typedef set<String> Includes;
+
+ Includes const& is (
+ ctx.schema_root.context ().get<Includes> ("includes"));
+
+ for (Includes::const_reverse_iterator i (is.rbegin ());
+ i != is.rend (); ++i)
+ {
+ ctx.os << "#include " << *i << endl;
+ }
+
+ ctx.os << endl;
+ }
+ }
+ else
+ {
+ if (ctx.char_type == L"char" &&
+ ctx.xml_parser == L"xerces" &&
+ ctx.char_encoding != L"custom")
+ {
+ ctx.os << "#include <xsd/cxx/xml/char-" << ctx.char_encoding << ".hxx>" << endl;
+ }
+
+ ctx.os << "#include <xsd/cxx/xml/error-handler.hxx>" << endl
+ << "#include <xsd/cxx/parser/exceptions.hxx>" << endl
+ << "#include <xsd/cxx/parser/elements.hxx>" << endl
+ << "#include <xsd/cxx/parser/xml-schema.hxx>" << endl;
+
+ if (ctx.polymorphic)
+ ctx.os << "#include <xsd/cxx/parser/map.hxx>" << endl;
+
+ if (ctx.validation)
+ ctx.os << "#include <xsd/cxx/parser/validating/parser.hxx>" << endl
+ << "#include <xsd/cxx/parser/validating/exceptions.hxx>" << endl
+ << "#include <xsd/cxx/parser/validating/xml-schema-pskel.hxx>" << endl
+ << "#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>" << endl;
+ else
+ ctx.os << "#include <xsd/cxx/parser/non-validating/parser.hxx>" << endl
+ << "#include <xsd/cxx/parser/non-validating/xml-schema-pskel.hxx>" << endl
+ << "#include <xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx>" << endl;
+
+ ctx.os << "#include <xsd/cxx/parser/" << ctx.xml_parser <<
+ "/elements.hxx>" << endl
+ << endl;
+
+ // Generate includes that came from the type map.
+ //
+ if (ctx.schema_root.context ().count ("includes"))
+ {
+ typedef set<String> Includes;
+
+ Includes const& is (
+ ctx.schema_root.context ().get<Includes> ("includes"));
+
+ for (Includes::const_reverse_iterator i (is.rbegin ());
+ i != is.rend (); ++i)
+ {
+ ctx.os << "#include " << *i << endl;
+ }
+
+ ctx.os << endl;
+ }
+
+ // Generate fundamental types.
+ //
+ if (generate_xml_schema)
+ {
+ Traversal::Schema schema;
+ Traversal::Names names;
+ FundNamespace ns (ctx);
+
+ schema >> names >> ns;
+
+ Traversal::Names ns_names;
+ FundType type (ctx);
+
+ ns >> ns_names >> type;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ else
+ {
+ Traversal::Schema schema, xsd;
+ Traversal::Implies implies;
+ Traversal::Names names;
+ FundNamespace ns (ctx);
+
+ schema >> implies >> xsd >> names >> ns;
+
+ Traversal::Names ns_names;
+ FundType type (ctx);
+
+ ns >> ns_names >> type;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+
+ // Generate user type mapping.
+ //
+ if (!generate_xml_schema)
+ {
+ Traversal::Schema schema;
+
+ Sources sources;
+ Includes includes (ctx, Includes::header);
+ Traversal::Names schema_names;
+
+ Namespace ns (ctx);
+ Traversal::Names names;
+
+ schema >> includes;
+ schema >> sources >> schema;
+ schema >> schema_names >> ns >> names;
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+ }
+}
diff --git a/xsd/cxx/parser/parser-header.hxx b/xsd/cxx/parser/parser-header.hxx
new file mode 100644
index 0000000..642da40
--- /dev/null
+++ b/xsd/cxx/parser/parser-header.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/parser/parser-header.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_PARSER_HEADER_HXX
+#define XSD_CXX_PARSER_PARSER_HEADER_HXX
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ void
+ generate_parser_header (Context&, bool generate_xml_schema);
+ }
+}
+
+#endif // XSD_CXX_PARSER_PARSER_HEADER_HXX
diff --git a/xsd/cxx/parser/parser-inline.cxx b/xsd/cxx/parser/parser-inline.cxx
new file mode 100644
index 0000000..6705d5b
--- /dev/null
+++ b/xsd/cxx/parser/parser-inline.cxx
@@ -0,0 +1,399 @@
+// file : xsd/cxx/parser/parser-inline.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/parser/parser-inline.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ //
+ //
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String const& name (ename (l));
+ SemanticGraph::Type& t (l.argumented ().type ());
+
+ String item (unclash (name, "item"));
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // item_parser
+ //
+ os << inl
+ << "void " << name << "::" << endl
+ << unclash (name, "item_parser") << " (" <<
+ fq_name (t) << "& " << item << ")"
+ << "{"
+ << "this->_xsd_" << item << "_ = &" << item << ";"
+ << "}";
+
+ // parsers
+ //
+ os << inl
+ << "void " << name << "::" << endl
+ << "parsers (" << fq_name (t) << "& " << item << ")"
+ << "{"
+ << "this->_xsd_" << item << "_ = &" << item << ";"
+ << "}";
+
+ // c-tor
+ //
+ os << inl
+ << name << "::" << endl
+ << name << " ()" << endl
+ << ": _xsd_" << item << "_ (0)"
+ << "{"
+ << "}";
+ }
+ };
+
+
+ //
+ //
+ struct ParserModifier: Traversal::Member, Context
+ {
+ ParserModifier (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ String const& scope (ename (m.scope ()));
+ String const& parser (eparser (m));
+
+ bool poly (polymorphic &&
+ m.is_a<SemanticGraph::Element> () &&
+ !anonymous (m.type ()));
+
+ os << inl
+ << "void " << scope << "::" << endl
+ << parser << " (" << fq_name (m.type ()) << "& p)"
+ << "{"
+ << "this->" << emember (m) << " = &p;"
+ << "}";
+
+ if (poly)
+ {
+ os << inl
+ << "void " << scope << "::" << endl
+ << parser << " (const " << parser_map << "& m)"
+ << "{"
+ << "this->" << emember_map (m) << " = &m;"
+ << "}";
+ }
+ }
+ };
+
+
+ //
+ //
+ struct ParserMemberSet: Traversal::Member, Context
+ {
+ ParserMemberSet (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m)) return;
+
+ String const& name (ename (m));
+
+ os << "this->" << emember (m) << " = &" << name << ";";
+ }
+ };
+
+
+ //
+ //
+ struct ParserMemberInit: Traversal::Member, Context
+ {
+ ParserMemberInit (Context& c)
+ : Context (c), first_ (true)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m)) return;
+
+ if (first_)
+ first_ = false;
+ else
+ os << "," << endl << " ";
+
+ os << emember (m) << " (0)";
+
+ if (polymorphic &&
+ m.is_a<SemanticGraph::Element> () &&
+ !anonymous (m.type ()))
+ {
+ os << "," << endl
+ << " " << emember_map (m) << " (0)";
+ }
+ }
+
+ bool
+ comma () const
+ {
+ return !first_;
+ }
+
+ private:
+ bool first_;
+ };
+
+ struct ParserBaseSet: Traversal::Complex,
+ Traversal::List,
+ Context
+ {
+ ParserBaseSet (Context& c)
+ : Context (c), member_ (c)
+ {
+ inherits_ >> *this;
+ names_ >> member_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ inherits (c, inherits_);
+
+ if (!restriction_p (c))
+ names (c, names_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::List& l)
+ {
+ String const& name (ename (l));
+ String item (unclash (name, "item"));
+
+ os << "this->_xsd_" << item << "_ = &" << name << "_item;";
+ }
+
+ private:
+ Traversal::Inherits inherits_;
+
+ ParserMemberSet member_;
+ Traversal::Names names_;
+ };
+
+ struct Particle: Traversal::All, Context
+ {
+ Particle (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::All& a)
+ {
+ if (!a.context().count ("comp-number"))
+ return;
+
+ size_t state_count (a.context().get<size_t> ("state-count"));
+
+ os << "," << endl
+ << " v_all_count_ (" << state_count << "UL, v_all_first_)";
+ }
+ };
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c),
+ parser_modifier_ (c),
+ parser_base_set_ (c),
+ parser_member_set_ (c),
+ particle_ (c)
+ {
+ names_parser_modifier_ >> parser_modifier_;
+ inherits_parser_base_set_ >> parser_base_set_;
+ names_parser_member_set_ >> parser_member_set_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ bool he (has<Traversal::Element> (c));
+ bool ha (has<Traversal::Attribute> (c));
+
+ bool hae (has_particle<Traversal::Any> (c));
+
+ bool hra (false); // Has required attribute.
+ if (ha)
+ {
+ RequiredAttributeTest test (hra);
+ Traversal::Names names_test (test);
+ names (c, names_test);
+ }
+
+ bool restriction (restriction_p (c));
+
+ if (!((!restriction && (he || ha)) ||
+ (validation && (he || hae || hra))))
+ return;
+
+ String const& name (ename (c));
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ if (!restriction && (he || ha))
+ {
+ // <name>_parser ()
+ //
+ names (c, names_parser_modifier_);
+
+
+ // parsers ()
+ //
+
+ os << inl
+ << "void " << name << "::" << endl
+ << "parsers (";
+
+ {
+ ParserParamDecl decl (*this, true);
+ decl.traverse (c);
+ }
+
+ os << ")"
+ << "{";
+
+ inherits (c, inherits_parser_base_set_);
+ names (c, names_parser_member_set_);
+
+ os << "}";
+ }
+
+ // Default c-tor.
+ //
+ os << inl
+ << name << "::" << endl
+ << name << " ()" << endl
+ << ": ";
+
+ bool comma (false);
+
+ if (!restriction && (he || ha))
+ {
+ ParserMemberInit member_init (*this);
+ Traversal::Names names_member_init (member_init);
+
+ names (c, names_member_init);
+
+ comma = member_init.comma ();
+ }
+
+ if (validation && (he || hae))
+ {
+ if (comma)
+ os << "," << endl << " ";
+
+ os << "v_state_stack_ (sizeof (v_state_), &v_state_first_)";
+
+ particle_.dispatch (c.contains_compositor ().compositor ());
+
+ comma = true;
+ }
+
+ if (validation && (hra))
+ {
+ if (comma)
+ os << "," << endl << " ";
+
+ os << "v_state_attr_stack_ (sizeof (v_state_attr_), " <<
+ "&v_state_attr_first_)";
+ }
+
+ os << "{"
+ << "}";
+ }
+
+ private:
+ //
+ //
+ ParserModifier parser_modifier_;
+ Traversal::Names names_parser_modifier_;
+
+ //
+ //
+ ParserBaseSet parser_base_set_;
+ Traversal::Inherits inherits_parser_base_set_;
+
+ //
+ //
+ ParserMemberSet parser_member_set_;
+ Traversal::Names names_parser_member_set_;
+
+ //
+ //
+ Particle particle_;
+ };
+ }
+
+ void
+ generate_parser_inline (Context& ctx)
+ {
+ // Emit "weak" header includes that are used in the file-per-type
+ // compilation model.
+ //
+ if (!ctx.options.generate_inline ())
+ {
+ Traversal::Schema schema;
+ Includes includes (ctx, Includes::source);
+
+ schema >> includes;
+ schema.dispatch (ctx.schema_root);
+ }
+
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names schema_names;
+
+ Namespace ns (ctx);
+ Traversal::Names names;
+
+ schema >> sources >> schema;
+ schema >> schema_names >> ns >> names;
+
+ List list (ctx);
+ Complex complex (ctx);
+
+ names >> list;
+ names >> complex;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/parser/parser-inline.hxx b/xsd/cxx/parser/parser-inline.hxx
new file mode 100644
index 0000000..aee0cdf
--- /dev/null
+++ b/xsd/cxx/parser/parser-inline.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/parser/parser-inline.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_PARSER_INLINE_HXX
+#define XSD_CXX_PARSER_PARSER_INLINE_HXX
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ void
+ generate_parser_inline (Context&);
+ }
+}
+
+#endif // XSD_CXX_PARSER_PARSER_INLINE_HXX
diff --git a/xsd/cxx/parser/parser-source.cxx b/xsd/cxx/parser/parser-source.cxx
new file mode 100644
index 0000000..2887f96
--- /dev/null
+++ b/xsd/cxx/parser/parser-source.cxx
@@ -0,0 +1,957 @@
+// file : xsd/cxx/parser/parser-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/parser/parser-source.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String const& name (ename (e));
+ String const& ret (ret_type (e));
+
+ SemanticGraph::Type& base (e.inherits ().base ());
+
+ bool same (ret == ret_type (base));
+
+ if (same || ret == L"void" || polymorphic)
+ {
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (same || ret == L"void")
+ {
+ os << ret << " " << name << "::" << endl
+ << post_name (e) << " ()"
+ << "{";
+
+ if (same)
+ {
+ if (ret == L"void")
+ os << post_name (base) << " ();";
+ else
+ os << "return " << post_name (base) << " ();";
+ }
+
+ os << "}";
+ }
+
+ if (polymorphic)
+ {
+ String id (e.name ());
+
+ if (String ns = xml_ns_name (e))
+ {
+ id += L' ';
+ id += ns;
+ }
+
+ os << "const " << char_type << "* " << name << "::" << endl
+ << "_static_type ()"
+ << "{"
+ << "return " << strlit (id) << ";"
+ << "}";
+
+ os << "const " << char_type << "* " << name << "::" << endl
+ << "_dynamic_type () const"
+ << "{"
+ << "return _static_type ();"
+ << "}";
+
+ if (validation)
+ {
+ bool gen (!anonymous (e));
+
+ // We normally don't need to enter anonymous types into
+ // the inheritance map. The only exception is when an
+ // anonymous types is defined inside an element that
+ // is a member of a substitution group.
+ //
+ if (!gen)
+ {
+ // The first instance that this anonymous type classifies
+ // is the prototype for others if any. If this type does
+ // not classify anything (e.g., it is a base), then we
+ // don't need to do anything.
+ //
+ if (e.classifies_begin () != e.classifies_end ())
+ {
+ SemanticGraph::Instance& i (
+ e.classifies_begin ()->instance ());
+
+ if (SemanticGraph::Element* e =
+ dynamic_cast<SemanticGraph::Element*> (&i))
+ {
+ if (e->substitutes_p ())
+ gen = true;
+ }
+ }
+ }
+
+ if (gen)
+ {
+ os << "static" << endl
+ << "const ::xsd::cxx::parser::validating::inheritance_map_entry< " <<
+ char_type << " >" << endl
+ << "_xsd_" << name << "_inheritance_map_entry_ (" << endl
+ << name << "::_static_type ()," << endl
+ << fq_name (base) << "::_static_type ());"
+ << endl;
+ }
+ }
+ }
+ }
+ };
+
+ //
+ //
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String const& name (ename (l));
+ SemanticGraph::Type& t (l.argumented ().type ());
+
+ String item (unclash (name, "item"));
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // item
+ //
+ String const& arg (arg_type (t));
+
+ os << "void " << name << "::" << endl
+ << item;
+
+ if (arg == L"void")
+ os << " ()";
+ else
+ os << " (" << arg << ")";
+
+ os << "{"
+ << "}";
+
+ // post
+ //
+ if (ret_type (l) == L"void")
+ os << "void " << name << "::" << endl
+ << post_name (l) << " ()"
+ << "{"
+ << "}";
+
+ // parse_item
+ //
+ String inst (L"_xsd_" + item + L"_");
+ String const& post (post_name (t));
+
+ os << "void " << name << "::" << endl
+ << "_xsd_parse_item (const " << string_type << "& v)"
+ << "{"
+ << "if (this->" << inst << ")"
+ << "{"
+ << "this->" << inst << "->pre ();"
+ << "this->" << inst << "->_pre_impl ();"
+ << "this->" << inst << "->_characters (v);"
+ << "this->" << inst << "->_post_impl ();";
+
+ if (ret_type (t) == L"void")
+ os << "this->" << inst << "->" << post << " ();"
+ << "this->" << item << " ();";
+ else
+ os << "this->" << item << " (this->" << inst << "->" <<
+ post << " ());";
+
+ os << "}"
+ << "}";
+
+ //
+ //
+ if (polymorphic)
+ {
+ String id (l.name ());
+
+ if (String ns = xml_ns_name (l))
+ {
+ id += L' ';
+ id += ns;
+ }
+
+ os << "const " << char_type << "* " << name << "::" << endl
+ << "_static_type ()"
+ << "{"
+ << "return " << strlit (id) << ";"
+ << "}";
+
+ os << "const " << char_type << "* " << name << "::" << endl
+ << "_dynamic_type () const"
+ << "{"
+ << "return _static_type ();"
+ << "}";
+ }
+ }
+ };
+
+ //
+ //
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String const& name (ename (u));
+ String const& ret (ret_type (u));
+
+ if (ret == L"void" || polymorphic)
+ {
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (ret == L"void")
+ {
+ os << "void " << name << "::" << endl
+ << post_name (u) << " ()"
+ << "{"
+ << "}";
+ }
+
+ if (polymorphic)
+ {
+ String id (u.name ());
+
+ if (String ns = xml_ns_name (u))
+ {
+ id += L' ';
+ id += ns;
+ }
+
+ os << "const " << char_type << "* " << name << "::" << endl
+ << "_static_type ()"
+ << "{"
+ << "return " << strlit (id) << ";"
+ << "}";
+
+ os << "const " << char_type << "* " << name << "::" << endl
+ << "_dynamic_type () const"
+ << "{"
+ << "return _static_type ();"
+ << "}";
+ }
+ }
+ };
+
+ //
+ //
+ struct StartElement: Traversal::Element, Context
+ {
+ StartElement (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (skip (e))
+ return;
+
+ bool poly (polymorphic && !anonymous (e.type ()));
+
+ os << "if (";
+
+ if (poly && e.global_p ())
+ os << "(";
+
+ if (e.qualified_p () && e.namespace_ ().name ())
+ {
+ os << "n == " << strlit (e.name ()) << " && " <<
+ "ns == " << strlit (e.namespace_ ().name ());
+ }
+ else
+ {
+ os << "n == " << strlit (e.name ()) << " && ns.empty ()";
+ }
+
+ // Only a globally-defined element can be a subst-group root.
+ //
+ if (poly && e.global_p ())
+ {
+ os << ") ||" << endl
+ << "::xsd::cxx::parser::substitution_map_instance< " <<
+ char_type << " > ().check (" << endl
+ << "ns, n, " << strlit (e.namespace_ ().name ()) <<
+ ", " << strlit (e.name ()) << ", t)";
+ }
+
+ os << ")"
+ << "{";
+
+ String inst;
+
+ if (poly)
+ {
+ SemanticGraph::Type& t (e.type ());
+ inst = "p";
+
+ // For pre-computing length.
+ //
+ String type_id (t.name ());
+
+ if (String type_ns = xml_ns_name (t))
+ {
+ type_id += L' ';
+ type_id += type_ns;
+ }
+
+ String fq_type (fq_name (t));
+ String const& member (emember (e));
+ String const& member_map (emember_map (e));
+
+ os << fq_type << "* p = 0;"
+ << endl
+ << "if (t == 0 && this->" << member << " != 0)" << endl
+ << inst << " = this->" << member << ";"
+ << "else"
+ << "{"
+ << string_type << " ts (" << fq_type <<
+ "::_static_type (), " << type_id.size () << "UL);"
+ << endl
+ << "if (t == 0)" << endl
+ << "t = &ts;"
+ << endl
+ << "if (this->" << member << " != 0 && *t == ts)" << endl
+ << inst << " = this->" << member << ";"
+ << "else if (this->" << member_map << " != 0)" << endl
+ << inst << " = dynamic_cast< " << fq_type <<
+ "* > (" << endl
+ << "this->" << member_map << "->find (*t));"
+ << "}";
+ }
+ else
+ inst = L"this->" + emember (e);
+
+ os << "this->" << complex_base << "::context_.top ().parser_ = " <<
+ inst << ";"
+ << endl
+ << "if (" << inst << ")" << endl
+ << inst << "->pre ();" // _start_element calls _pre
+ << endl
+ << "return true;"
+ << "}";
+ }
+ };
+
+
+ //
+ //
+ struct EndElement: Traversal::Element, Context
+ {
+ EndElement (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (skip (e))
+ return;
+
+ bool poly (polymorphic && !anonymous (e.type ()));
+ String const& name (ename (e));
+
+ os << "if (";
+
+ if (poly && e.global_p ())
+ os << "(";
+
+ if (e.qualified_p () && e.namespace_ ().name ())
+ {
+ os << "n == " << strlit (e.name ()) << " && " <<
+ "ns == " << strlit (e.namespace_ ().name ());
+ }
+ else
+ {
+ os << "n == " << strlit (e.name ()) << " && ns.empty ()";
+ }
+
+ // Only a globally-defined element can be a subst-group root.
+ //
+ if (poly && e.global_p ())
+ {
+ os << ") ||" << endl
+ << "::xsd::cxx::parser::substitution_map_instance< " <<
+ char_type << " > ().check (" << endl
+ << "ns, n, " << strlit (e.namespace_ ().name ()) <<
+ ", " << strlit (e.name ()) << ")";
+ }
+
+ os << ")"
+ << "{";
+
+ // _end_element calls post
+ //
+
+ SemanticGraph::Type& type (e.type ());
+ String const& post (post_name (type));
+ String inst;
+
+ if (poly)
+ {
+ String const& fq_type (fq_name (type));
+ inst = "p";
+
+ os << fq_type << "* p =" << endl
+ << "dynamic_cast< " << fq_type << "* > (" << endl
+ << "this->" << complex_base << "::context_.top ().parser_);"
+ << endl;
+ }
+ else
+ inst = L"this->" + emember (e);
+
+ os << "if (" << inst << ")";
+
+ if (ret_type (type) == L"void")
+ os << "{"
+ << inst << "->" << post << " ();"
+ << "this->" << name << " ();"
+ << "}";
+ else
+ os << endl
+ << "this->" << name << " (" << inst << "->" << post << " ());"
+ << endl;
+
+ os << "return true;"
+ << "}";
+ }
+ };
+
+ //
+ //
+ struct Attribute: Traversal::Attribute, Context
+ {
+ Attribute (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& name (ename (a));
+ String const& inst (emember (a));
+
+ if (a.qualified_p () && a.namespace_ ().name ())
+ {
+ os << "if (n == " << strlit (a.name ()) << " && " <<
+ "ns == " << strlit (a.namespace_ ().name ()) << ")"
+ << "{";
+ }
+ else
+ {
+ os << "if (n == " << strlit (a.name ()) << " && ns.empty ())"
+ << "{";
+ }
+
+ SemanticGraph::Type& type (a.type ());
+ String const& post (post_name (type));
+ String const& ret (ret_type (type));
+
+ os << "if (this->" << inst << ")"
+ << "{"
+ << "this->" << inst << "->pre ();"
+ << "this->" << inst << "->_pre_impl ();"
+ << "this->" << inst << "->_characters (v);"
+ << "this->" << inst << "->_post_impl ();";
+
+ if (ret == L"void")
+ os << "this->" << inst << "->" << post << " ();"
+ << "this->" << name << " ();";
+ else
+ os << "this->" << name << " (this->" << inst << "->" <<
+ post << " ());";
+
+ os << "}"
+ << "return true;"
+ << "}";
+ }
+ };
+
+ //
+ //
+ struct ParserCallback: Traversal::Member, Context
+ {
+ ParserCallback (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ String const& arg (arg_type (m.type ()));
+
+ os << "void " << ename (m.scope ()) << "::" << endl
+ << ename (m);
+
+ if (arg == L"void")
+ os << " ()";
+ else
+ os << " (" << arg << ")";
+
+ os << "{"
+ << "}";
+ }
+ };
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c),
+ parser_callback_ (c),
+ start_element_ (c),
+ end_element_ (c),
+ attribute_ (c)
+ {
+ names_parser_callback_ >> parser_callback_;
+ names_start_element_ >> start_element_;
+ names_end_element_ >> end_element_;
+ names_attribute_ >> attribute_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ bool he (has<Traversal::Element> (c));
+ bool ha (has<Traversal::Attribute> (c));
+
+ String const& ret (ret_type (c));
+ bool same (c.inherits_p () &&
+ ret == ret_type (c.inherits ().base ()));
+
+ String const& name (ename (c));
+
+ if ((he || ha || same || ret == L"void") || polymorphic)
+ {
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (polymorphic)
+ {
+ String id (c.name ());
+
+ if (String ns = xml_ns_name (c))
+ {
+ id += L' ';
+ id += ns;
+ }
+
+ os << "const " << char_type << "* " << name << "::" << endl
+ << "_static_type ()"
+ << "{"
+ << "return " << strlit (id) << ";"
+ << "}";
+
+ os << "const " << char_type << "* " << name << "::" << endl
+ << "_dynamic_type () const"
+ << "{"
+ << "return _static_type ();"
+ << "}";
+
+ if (c.inherits_p () && validation)
+ {
+ bool gen (!anonymous (c));
+
+ // We normally don't need to enter anonymous types into
+ // the inheritance map. The only exception is when an
+ // anonymous types is defined inside an element that
+ // is a member of a substitution group.
+ //
+ if (!gen)
+ {
+ // The first instance that this anonymous type classifies
+ // is the prototype for others if any. If this type does
+ // not classify anything (e.g., it is a base), then we
+ // don't need to do anything.
+ //
+ if (c.classifies_begin () != c.classifies_end ())
+ {
+ SemanticGraph::Instance& i (
+ c.classifies_begin ()->instance ());
+
+ if (SemanticGraph::Element* e =
+ dynamic_cast<SemanticGraph::Element*> (&i))
+ {
+ if (e->substitutes_p ())
+ gen = true;
+ }
+ }
+ }
+
+ if (gen)
+ {
+ SemanticGraph::Type& base (c.inherits ().base ());
+
+ os << "static" << endl
+ << "const ::xsd::cxx::parser::validating::inheritance_map_entry< " <<
+ char_type << " >" << endl
+ << "_xsd_" << name << "_inheritance_map_entry_ (" << endl
+ << name << "::_static_type ()," << endl
+ << fq_name (base) << "::_static_type ());"
+ << endl;
+ }
+ }
+ }
+
+ if (!(he || ha || same || ret == L"void"))
+ return;
+
+ // Parser callbacks.
+ //
+ if (!restriction_p (c))
+ names (c, names_parser_callback_);
+
+ if (same || ret == L"void")
+ {
+ os << ret << " " << name << "::" << endl
+ << post_name (c) << " ()"
+ << "{";
+
+ if (same)
+ {
+ SemanticGraph::Type& base (c.inherits ().base ());
+
+ if (ret == L"void")
+ os << post_name (base) << " ();";
+ else
+ os << "return " << post_name (base) << " ();";
+ }
+
+ os << "}";
+ }
+
+ // The rest is parsing/validation code which is generated in
+ // *-validation-source.cxx.
+ //
+ if (validation)
+ return;
+
+ // Don't use restriction_p here since we don't want special
+ // treatment of anyType.
+ //
+ bool restriction (
+ c.inherits_p () &&
+ c.inherits ().is_a<SemanticGraph::Restricts> ());
+
+ // _start_element_impl & _end_element_impl
+ //
+ if (he)
+ {
+ os << "bool " << name << "::" << endl
+ << "_start_element_impl (const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "* t)"
+ << "{"
+ << "XSD_UNUSED (t);"
+ << endl;
+
+ if (!restriction)
+ {
+ os << "if (this->";
+
+ if (c.inherits_p ())
+ os << fq_name (c.inherits ().base ());
+ else
+ os << complex_base;
+
+ os << "::_start_element_impl (ns, n, t))" << endl
+ << "return true;"
+ << endl;
+ }
+
+ names (c, names_start_element_);
+
+ os << "return false;"
+ << "}";
+
+
+ // _end_element_impl
+ //
+ os << "bool " << name << "::" << endl
+ << "_end_element_impl (const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n)"
+ << "{";
+
+ if (!restriction)
+ {
+ os << "if (this->";
+
+ if (c.inherits_p () && !restriction)
+ os << fq_name (c.inherits ().base ());
+ else
+ os << complex_base;
+
+ os << "::_end_element_impl (ns, n))" << endl
+ << "return true;"
+ << endl;
+ }
+
+ names (c, names_end_element_);
+
+ os << "return false;"
+ << "}";
+ }
+
+
+ if (ha)
+ {
+ // _attribute_impl
+ //
+ os << "bool " << name << "::" << endl
+ << "_attribute_impl (const " << string_type << "& ns," << endl
+ << "const " << string_type << "& n," << endl
+ << "const " << string_type << "& v)"
+ << "{";
+
+ if (!restriction)
+ {
+ os << "if (this->";
+
+ if (c.inherits_p ())
+ os << fq_name (c.inherits ().base ());
+ else
+ os << complex_base;
+
+ os << "::_attribute_impl (ns, n, v))" << endl
+ << "return true;"
+ << endl;
+ }
+
+ names (c, names_attribute_);
+
+ os << "return false;"
+ << "}";
+ }
+ }
+
+ private:
+ //
+ //
+ ParserCallback parser_callback_;
+ Traversal::Names names_parser_callback_;
+
+ //
+ //
+ StartElement start_element_;
+ Traversal::Names names_start_element_;
+
+ //
+ //
+ EndElement end_element_;
+ Traversal::Names names_end_element_;
+
+ //
+ //
+ Attribute attribute_;
+ Traversal::Names names_attribute_;
+ };
+
+
+ // Generate substitution group map entries.
+ //
+ struct GlobalElement: Traversal::Element, Context
+ {
+ GlobalElement (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (e.substitutes_p ())
+ {
+ String name (escape (e.name ()));
+ Type& r (e.substitutes ().root ());
+
+ SemanticGraph::Type& type (e.type ());
+
+ os << "// Substitution map entry for " << comment (e.name ()) << "." << endl
+ << "//" << endl
+ << "static" << endl
+ << "const ::xsd::cxx::parser::substitution_map_entry< " <<
+ char_type << " >" << endl
+ << "_xsd_" << name << "_substitution_map_entry_ (" << endl
+ << strlit (e.namespace_ ().name ()) << "," << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (r.namespace_ ().name ()) << "," << endl
+ << strlit (r.name ()) << "," << endl
+ << fq_name (type) << "::_static_type ());"
+ << endl;
+ }
+ }
+ };
+ }
+
+ void
+ generate_parser_source (Context& ctx)
+ {
+ if (ctx.polymorphic)
+ {
+ ctx.os << "#include <xsd/cxx/parser/substitution-map.hxx>" << endl;
+
+ if (ctx.validation)
+ ctx.os << "#include <xsd/cxx/parser/validating/inheritance-map.hxx>" << endl
+ << endl;
+ else
+ ctx.os << endl;
+
+ bool import_maps (ctx.options.import_maps ());
+ bool export_maps (ctx.options.export_maps ());
+
+ if (import_maps || export_maps)
+ {
+ ctx.os << "#ifndef XSD_NO_EXPORT" << endl
+ << endl
+ << "namespace xsd"
+ << "{"
+ << "namespace cxx"
+ << "{"
+ << "namespace parser"
+ << "{"
+ << "#ifdef _MSC_VER" << endl;
+
+ if (export_maps)
+ ctx.os << "template struct __declspec (dllexport) " <<
+ "substitution_map_init< " << ctx.char_type << " >;";
+
+ if (import_maps)
+ ctx.os << "template struct __declspec (dllimport) " <<
+ "substitution_map_init< " << ctx.char_type << " >;";
+
+ if (ctx.validation && export_maps)
+ ctx.os << "template struct __declspec (dllexport) " <<
+ "inheritance_map_init< " << ctx.char_type << " >;";
+
+ if (ctx.validation && import_maps)
+ ctx.os << "template struct __declspec (dllimport) " <<
+ "inheritance_map_init< " << ctx.char_type << " >;";
+
+ ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl
+ << "template struct __attribute__ ((visibility(\"default\"))) " <<
+ "substitution_map_init< " << ctx.char_type << " >;";
+
+ if (ctx.validation)
+ ctx.os << "template struct __attribute__ ((visibility(\"default\"))) " <<
+ "inheritance_map_init< " << ctx.char_type << " >;";
+
+ ctx.os << "#elif defined(XSD_MAP_VISIBILITY)" << endl
+ << "template struct XSD_MAP_VISIBILITY " <<
+ "substitution_map_init< " << ctx.char_type << " >;";
+
+ if (ctx.validation)
+ ctx.os << "template struct XSD_MAP_VISIBILITY " <<
+ "inheritance_map_init< " << ctx.char_type << " >;";
+
+ ctx.os << "#endif" << endl
+ << "}" // parser
+ << "}" // cxx
+ << "}" // xsd
+ << "#endif // XSD_NO_EXPORT" << endl
+ << endl;
+ }
+
+ ctx.os << "static" << endl
+ << "const ::xsd::cxx::parser::substitution_map_init< " <<
+ ctx.char_type << " >" << endl
+ << "_xsd_substitution_map_init_;"
+ << endl;
+
+ if (ctx.validation)
+ {
+ ctx.os << "static" << endl
+ << "const ::xsd::cxx::parser::validating::inheritance_map_init< " <<
+ ctx.char_type << " >" << endl
+ << "_xsd_inheritance_map_init_;"
+ << endl;
+ }
+ }
+
+ // Emit "weak" header includes that are used in the file-per-type
+ // compilation model.
+ //
+ if (ctx.options.generate_inline ())
+ {
+ Traversal::Schema schema;
+ Includes includes (ctx, Includes::source);
+
+ schema >> includes;
+ schema.dispatch (ctx.schema_root);
+ }
+
+ Traversal::Schema schema;
+ Sources sources;
+ Traversal::Names schema_names;
+
+ Namespace ns (ctx);
+ Traversal::Names names;
+
+ schema >> sources >> schema;
+ schema >> schema_names >> ns >> names;
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+ GlobalElement global_element (ctx);
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ if (ctx.polymorphic)
+ names >> global_element;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/parser/parser-source.hxx b/xsd/cxx/parser/parser-source.hxx
new file mode 100644
index 0000000..3598a00
--- /dev/null
+++ b/xsd/cxx/parser/parser-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/parser/parser-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_PARSER_SOURCE_HXX
+#define XSD_CXX_PARSER_PARSER_SOURCE_HXX
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ void
+ generate_parser_source (Context&);
+ }
+}
+
+#endif // XSD_CXX_PARSER_PARSER_SOURCE_HXX
diff --git a/xsd/cxx/parser/print-impl-common.hxx b/xsd/cxx/parser/print-impl-common.hxx
new file mode 100644
index 0000000..14bfbc2
--- /dev/null
+++ b/xsd/cxx/parser/print-impl-common.hxx
@@ -0,0 +1,641 @@
+// file : xsd/cxx/parser/print-impl-common.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_PRINT_IMPL_COMMON_HXX
+#define XSD_CXX_PARSER_PRINT_IMPL_COMMON_HXX
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/cxx/parser/elements.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ struct PrintCall: Traversal::Type,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal,
+
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Language,
+
+ Traversal::Fundamental::QName,
+
+ Traversal::Fundamental::Id,
+ Traversal::Fundamental::IdRef,
+ Traversal::Fundamental::IdRefs,
+
+ Traversal::Fundamental::AnyURI,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary,
+
+ Traversal::Fundamental::Date,
+ Traversal::Fundamental::DateTime,
+ Traversal::Fundamental::Duration,
+ Traversal::Fundamental::Day,
+ Traversal::Fundamental::Month,
+ Traversal::Fundamental::MonthDay,
+ Traversal::Fundamental::Year,
+ Traversal::Fundamental::YearMonth,
+ Traversal::Fundamental::Time,
+
+ Context
+ {
+ PrintCall (Context& c, String const& tag, String const& arg)
+ : Context (c), tag_ (tag), arg_ (arg)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type&)
+ {
+ gen_user_type ();
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean& t)
+ {
+ if (default_type (t, "bool"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ // Integral types.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte& t)
+ {
+ if (default_type (t, "signed char"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") <<
+ " << static_cast<short> (" << arg_ << ") << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte& t)
+ {
+ if (default_type (t, "unsigned char"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") <<
+ " << static_cast<unsigned short> (" << arg_ << ") << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short& t)
+ {
+ if (default_type (t, "short"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort& t)
+ {
+ if (default_type (t, "unsigned short"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int& t)
+ {
+ if (default_type (t, "int"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt& t)
+ {
+ if (default_type (t, "unsigned int"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long& t)
+ {
+ if (default_type (t, "long long"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong& t)
+ {
+ if (default_type (t, "unsigned long long"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer& t)
+ {
+ if (default_type (t, "long long"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger& t)
+ {
+ if (default_type (t, "long long"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
+ {
+ if (default_type (t, "long long"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger& t)
+ {
+ if (default_type (t, "unsigned long long"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
+ {
+ if (default_type (t, "unsigned long long"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ if (default_type (t, "float"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ if (default_type (t, "double"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal& t)
+ {
+ if (default_type (t, "double"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ // Strings.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::String& t)
+ {
+ gen_string (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString& t)
+ {
+ gen_string (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token& t)
+ {
+ gen_string (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken& t)
+ {
+ gen_string (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name& t)
+ {
+ gen_string (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName& t)
+ {
+ gen_string (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Language& t)
+ {
+ gen_string (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Id& t)
+ {
+ gen_string (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRef& t)
+ {
+ gen_string (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::AnyURI& t)
+ {
+ gen_string (t);
+ }
+
+ // String sequences.
+ //
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens& t)
+ {
+ gen_sequence (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs& t)
+ {
+ gen_sequence (t);
+ }
+
+ // QName
+ //
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::QName& t)
+ {
+ if (default_type (t, xs_ns_name () + L"::qname"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << ";"
+ << endl
+ << "if (" << arg_ << ".prefix ().empty ())" << endl
+ << cout_inst << " << " << arg_ << ".name ();"
+ << "else" << endl
+ << cout_inst << " << " << arg_ << ".prefix () << " << L <<
+ "':' << " << arg_ << ".name ();"
+ << endl
+ << cout_inst << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ // Binary.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary& t)
+ {
+ gen_buffer (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary& t)
+ {
+ gen_buffer (t);
+ }
+
+ // Date/time.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Date& t)
+ {
+ if (default_type (t, xs_ns_name () + L"::date"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << endl
+ << " << " << arg_ << ".year () << '-'" << endl
+ << " << " << arg_ << ".month () << '-'" << endl
+ << " << " << arg_ << ".day ();";
+
+ gen_time_zone ();
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::DateTime& t)
+ {
+ if (default_type (t, xs_ns_name () + L"::date_time"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << endl
+ << " << " << arg_ << ".year () << '-'" << endl
+ << " << " << arg_ << ".month () << '-'" << endl
+ << " << " << arg_ << ".day () << 'T'" << endl
+ << " << " << arg_ << ".hours () << ':'" << endl
+ << " << " << arg_ << ".minutes () << ':'" << endl
+ << " << " << arg_ << ".seconds ();";
+
+ gen_time_zone ();
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Duration& t)
+ {
+ if (default_type (t, xs_ns_name () + L"::duration"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << ";"
+ << endl
+ << "if (" << arg_ << ".negative ())" << endl
+ << cout_inst << " << '-';"
+ << endl
+ << cout_inst << " << 'P'" << endl
+ << " << " << arg_ << ".years () << 'Y'" << endl
+ << " << " << arg_ << ".months () << 'M'" << endl
+ << " << " << arg_ << ".days () << " << L << "\"DT\"" << endl
+ << " << " << arg_ << ".hours () << 'H'" << endl
+ << " << " << arg_ << ".minutes () << 'M'" << endl
+ << " << " << arg_ << ".seconds () << 'S'"
+ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Day& t)
+ {
+ if (default_type (t, xs_ns_name () + L"::gday"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ---") <<
+ " << " << arg_ << ".day ();";
+
+ gen_time_zone ();
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Month& t)
+ {
+ if (default_type (t, xs_ns_name () + L"::gmonth"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": --") <<
+ " << " << arg_ << ".month ();";
+
+ gen_time_zone ();
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::MonthDay& t)
+ {
+ if (default_type (t, xs_ns_name () + L"::gmonth_day"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": --") << endl
+ << " << " << arg_ << ".month () << '-'" << endl
+ << " << " << arg_ << ".day ();";
+
+ gen_time_zone ();
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Year& t)
+ {
+ if (default_type (t, xs_ns_name () + L"::gyear"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << ".year ();";
+
+ gen_time_zone ();
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::YearMonth& t)
+ {
+ if (default_type (t, xs_ns_name () + L"::gyear_month"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << endl
+ << " << " << arg_ << ".year () << '-'" << endl
+ << " << " << arg_ << ".month ();";
+
+ gen_time_zone ();
+ }
+ else
+ gen_user_type ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Time& t)
+ {
+ if (default_type (t, xs_ns_name () + L"::time"))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << endl
+ << " << " << arg_ << ".hours () << ':'" << endl
+ << " << " << arg_ << ".minutes () << ':'" << endl
+ << " << " << arg_ << ".seconds ();";
+
+ gen_time_zone ();
+ }
+ else
+ gen_user_type ();
+ }
+
+ private:
+ bool
+ default_type (SemanticGraph::Type& t, String const& def_type)
+ {
+ return ret_type (t) == def_type;
+ }
+
+ void
+ gen_user_type ()
+ {
+ os << "// TODO" << endl
+ << "//" << endl;
+ }
+
+ void
+ gen_string (SemanticGraph::Type& t)
+ {
+ if ((char_type == L"char" && default_type (t, "::std::string")) ||
+ (char_type == L"wchar_t" && default_type (t, "::std::wstring")))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
+ arg_ << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ void
+ gen_sequence (SemanticGraph::Type& t)
+ {
+ String type (xs_ns_name () + L"::string_sequence");
+
+ if (default_type (t, type))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << ";"
+ << endl;
+
+ os << "for (" << type << "::const_iterator i (" << arg_ <<
+ ".begin ()), e (" << arg_ << ".end ());" << endl
+ << "i != e;)"
+ << "{"
+ << cout_inst << " << *i++;"
+ << "if (i != e)" << endl
+ << cout_inst << " << ' ';"
+ << "}"
+ << cout_inst << " << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ void
+ gen_buffer (SemanticGraph::Type& t)
+ {
+ String type (auto_ptr + L"< " + xs_ns_name () + L"::buffer >");
+
+ if (default_type (t, type))
+ {
+ os << cout_inst << " << " << strlit (tag_ + L": ") << " << "
+ << arg_ << "->size () << " << L << "\" bytes\" << std::endl;";
+ }
+ else
+ gen_user_type ();
+ }
+
+ void
+ gen_time_zone ()
+ {
+ os << endl
+ << "if (" << arg_ << ".zone_present ())"
+ << "{"
+ << "if (" << arg_ << ".zone_hours () < 0)" << endl
+ << cout_inst << " << " << arg_ << ".zone_hours () << ':' << -" <<
+ arg_ << ".zone_minutes ();"
+ << "else" << endl
+ << cout_inst << " << '+' << " << arg_ << ".zone_hours () << " <<
+ "':' << " << arg_ << ".zone_minutes ();";
+
+ os << "}"
+ << cout_inst << " << std::endl;";
+ }
+
+ private:
+ String tag_;
+ String arg_;
+ };
+ }
+}
+
+#endif // XSD_CXX_PARSER_PRINT_IMPL_COMMON_HXX
diff --git a/xsd/cxx/parser/state-processor.cxx b/xsd/cxx/parser/state-processor.cxx
new file mode 100644
index 0000000..a2b8fbf
--- /dev/null
+++ b/xsd/cxx/parser/state-processor.cxx
@@ -0,0 +1,319 @@
+// file : xsd/cxx/parser/state-processor.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <vector>
+#include <iostream>
+
+#include <xsd/cxx/parser/state-processor.hxx>
+
+#include <xsd/cxx/parser/elements.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ typedef vector<SemanticGraph::Particle*> Particles;
+
+ /*
+ void
+ print (Particles const& p)
+ {
+ using std::wcerr;
+ using std::endl;
+
+ wcerr << "prefixes: " << endl;
+
+ for (Particles::const_iterator i (p.begin ()); i != p.end (); ++i)
+ {
+ if (SemanticGraph::Element* e =
+ dynamic_cast<SemanticGraph::Element*> (*i))
+ {
+ wcerr << e->name () << endl;
+ }
+ else
+ {
+ wcerr << "<any>" << endl;
+ }
+ }
+
+ wcerr << endl;
+ }
+ */
+
+ //
+ //
+ struct Particle: Traversal::All,
+ Traversal::Choice,
+ Traversal::Sequence
+ {
+ Particle (size_t& all,
+ size_t& choice,
+ size_t& sequence,
+ size_t& depth)
+ : all_ (all),
+ choice_ (choice),
+ sequence_ (sequence),
+ depth_ (depth)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::All& a)
+ {
+ using SemanticGraph::Compositor;
+
+ // Go over particles, collecting "prefix" particles in prefixes_,
+ // assigning state numbers and calculating effective minOccurs.
+ // If all prefixes of this compositor have minOccurs = 0, then
+ // the compositor itself effectively has minOccurs = 0 regardless
+ // of the actual value specified in the schema.
+ //
+ // Note that we don't need to care about depth since the 'all'
+ // compositor cannot contain any nested compositors.
+ //
+
+ size_t state (0);
+ size_t min (0);
+
+ for (Compositor::ContainsIterator ci (a.contains_begin ());
+ ci != a.contains_end (); ++ci)
+ {
+ SemanticGraph::Particle& p (ci->particle ());
+
+ // The 'all' compositor can only include elements.
+ //
+ prefixes_.push_back (&p);
+
+ if (min == 0 && ci->min () != 0)
+ min = 1;
+
+ p.context ().set ("prefix", true);
+ p.context ().set ("state", state++);
+ }
+
+ if (!prefixes_.empty ())
+ {
+ a.context ().set ("comp-number", choice_++);
+ a.context ().set ("prefixes", prefixes_);
+ a.context ().set ("state-count", size_t (prefixes_.size ()));
+
+ // effective-min = min * actual-min
+ //
+ if (min == 1)
+ min = a.min ();
+
+ a.context ().set ("effective-min", min);
+
+ // print (prefixes_);
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Choice& c)
+ {
+ using SemanticGraph::Compositor;
+
+ // Go over particles, collecting "prefix" particles in prefixes_,
+ // assigning state numbers and calculating effective minOccurs.
+ // If any prefix of this compositor have minOccurs = 0, then the
+ // compositor itself effectively has minOccurs = 0 regardless of
+ // the actual value specified in the schema.
+ //
+
+ size_t state (0);
+ size_t min (1);
+
+ for (Compositor::ContainsIterator ci (c.contains_begin ());
+ ci != c.contains_end (); ++ci)
+ {
+ SemanticGraph::Particle& p (ci->particle ());
+
+ if (p.is_a<SemanticGraph::Element> () ||
+ p.is_a<SemanticGraph::Any> ())
+ {
+ prefixes_.push_back (&p);
+
+ if (min == 1 && ci->min () == 0)
+ min = 0;
+ }
+ else
+ {
+ size_t depth (0);
+ Particle t (all_, choice_, sequence_, depth);
+ t.dispatch (p);
+
+ if (t.prefixes_.empty ())
+ continue; // Skip empty compositors.
+
+ if (++depth > depth_) // One for this compositor.
+ depth_ = depth;
+
+ prefixes_.insert (prefixes_.end (),
+ t.prefixes_.begin (),
+ t.prefixes_.end ());
+
+ if (min == 1 &&
+ p.context ().get<size_t> ("effective-min") == 0)
+ min = 0;
+ }
+
+ p.context ().set ("prefix", true);
+ p.context ().set ("state", state++);
+ }
+
+ if (!prefixes_.empty ())
+ {
+ c.context ().set ("comp-number", choice_++);
+ c.context ().set ("prefixes", prefixes_);
+
+ // effective-min = min * actual-min
+ //
+ if (min == 1)
+ min = c.min ();
+
+ c.context ().set ("effective-min", min);
+
+ // print (prefixes_);
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Sequence& s)
+ {
+ using SemanticGraph::Compositor;
+
+ // Go over particles, collecting "prefix" particles in prefixes_,
+ // assigning state numbers and calculating effective minOccurs.
+ // If all prefixes of this compositor have minOccurs = 0, then
+ // the compositor itself effectively has minOccurs = 0 regardless
+ // of the actual value specified in the schema.
+ //
+
+ bool prefix (true);
+ size_t state (0);
+ size_t min (0);
+
+ for (Compositor::ContainsIterator ci (s.contains_begin ());
+ ci != s.contains_end (); ++ci)
+ {
+ SemanticGraph::Particle& p (ci->particle ());
+
+ if (p.is_a<SemanticGraph::Element> () ||
+ p.is_a<SemanticGraph::Any> ())
+ {
+ if (prefix)
+ {
+ prefixes_.push_back (&p);
+
+ if (ci->min () != 0)
+ min = 1;
+ }
+ }
+ else
+ {
+ size_t depth (0);
+ Particle t (all_, choice_, sequence_, depth);
+ t.dispatch (p);
+
+ if (t.prefixes_.empty ())
+ continue; // Skip empty compositors.
+
+ if (++depth > depth_) // One for this compositor.
+ depth_ = depth;
+
+ if (prefix)
+ {
+ prefixes_.insert (prefixes_.end (),
+ t.prefixes_.begin (),
+ t.prefixes_.end ());
+
+ if (p.context ().get<size_t> ("effective-min") != 0)
+ min = 1;
+ }
+ }
+
+ p.context ().set ("state", state++);
+
+ if (prefix)
+ p.context ().set ("prefix", true);
+
+ if (prefix && min != 0)
+ prefix = false;
+ }
+
+ if (!prefixes_.empty ())
+ {
+ s.context ().set ("comp-number", sequence_++);
+ s.context ().set ("prefixes", prefixes_);
+
+ // effective-min = min * actual-min
+ //
+ if (min == 1)
+ min = s.min ();
+
+ s.context ().set ("effective-min", min);
+
+ // print (prefixes_);
+ }
+ }
+
+ private:
+ Particles prefixes_;
+
+ size_t& all_;
+ size_t& choice_;
+ size_t& sequence_;
+
+ size_t& depth_;
+ };
+
+
+ //
+ //
+ struct Complex: Traversal::Complex
+ {
+ virtual void
+ traverse (Type& c)
+ {
+ if (c.contains_compositor_p ())
+ {
+ size_t all (0), choice (0), sequence (0), depth (0);
+ Particle t (all, choice, sequence, depth);
+ t.dispatch (c.contains_compositor ().compositor ());
+
+ // Set the maximum stack depth for this type. Used to
+ // allocate fixed-size state stack.
+ //
+ c.context ().set ("depth", depth + 1);
+ }
+ }
+ };
+ }
+
+ void StateProcessor::
+ process (SemanticGraph::Schema& tu, SemanticGraph::Path const&)
+ {
+ Traversal::Schema schema;
+ Sources sources;
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+
+ schema >> sources >> schema;
+ schema >> schema_names >> ns >> ns_names;
+
+ Complex complex_type;
+
+ ns_names >> complex_type;
+
+ schema.dispatch (tu);
+ }
+ }
+}
diff --git a/xsd/cxx/parser/state-processor.hxx b/xsd/cxx/parser/state-processor.hxx
new file mode 100644
index 0000000..eacc14a
--- /dev/null
+++ b/xsd/cxx/parser/state-processor.hxx
@@ -0,0 +1,25 @@
+// file : xsd/cxx/parser/state-processor.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_STATE_PROCESSOR_HXX
+#define XSD_CXX_PARSER_STATE_PROCESSOR_HXX
+
+#include <libxsd-frontend/semantic-graph.hxx>
+
+#include <xsd/types.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ class StateProcessor
+ {
+ public:
+ void
+ process (XSDFrontend::SemanticGraph::Schema&,
+ XSDFrontend::SemanticGraph::Path const& file);
+ };
+ }
+}
+
+#endif // XSD_CXX_PARSER_STATE_PROCESSOR_HXX
diff --git a/xsd/cxx/parser/type-processor.cxx b/xsd/cxx/parser/type-processor.cxx
new file mode 100644
index 0000000..6496b2a
--- /dev/null
+++ b/xsd/cxx/parser/type-processor.cxx
@@ -0,0 +1,347 @@
+// file : xsd/cxx/parser/type-processor.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <set>
+
+#include <xsd/cxx/parser/elements.hxx>
+#include <xsd/cxx/parser/type-processor.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ //
+ //
+ struct Type: Traversal::Type
+ {
+ Type (SemanticGraph::Schema& schema,
+ TypeMap::Namespaces& type_map,
+ bool add_includes)
+ : schema_ (schema),
+ type_map_ (type_map),
+ add_includes_ (add_includes)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& type)
+ {
+ using TypeMap::Namespace;
+ using TypeMap::Namespaces;
+
+ SemanticGraph::Context& tc (type.context ());
+
+ // There are two situations where we may try to process the
+ // same type more than once. The first is when the type is
+ // used in several element declarations in the same schema.
+ // The second situation only occurs when we are in the file-
+ // per-type mode. In this case the type was processed as part
+ // of another root schema. In the second case, while the ret
+ // and arg types are assumed to be the same, we need to re-
+ // match the type in order to add include directives to the
+ // new root schema.
+ //
+ bool set (true);
+
+ if (tc.count ("ret-type"))
+ {
+ SemanticGraph::Schema* s (
+ tc.get<SemanticGraph::Schema*> ("root-schema"));
+
+ if (&schema_ == s)
+ return;
+
+ set = false;
+ }
+
+ SemanticGraph::Namespace& ns (
+ dynamic_cast<SemanticGraph::Namespace&> (type.scope ()));
+
+ String ns_name (ns.name ());
+ String t_name (type.name ());
+
+ //std::wcerr << "traversing: " << ns_name << "#" << t_name << endl;
+
+ for (Namespaces::const_iterator n (type_map_.begin ());
+ n != type_map_.end (); ++n)
+ {
+ // Check if the namespace matches.
+ //
+ bool ns_match;
+
+ if (!n->xsd_name ().empty ())
+ {
+ ns_match = n->xsd_name ().match (ns_name);
+ }
+ else
+ ns_match = ns_name.empty ();
+
+ //std::wcerr << "considering ns expr: " << n->xsd_name ()
+ // << " for " << ns_name
+ // << ": " << (ns_match ? "+" : "-") << endl;
+
+ if (ns_match)
+ {
+ // Namespace matched. See if there is a type that matches.
+ //
+ for (Namespace::TypesIterator t (n->types_begin ());
+ t != n->types_end (); ++t)
+ {
+ if (t->xsd_name ().match (t_name))
+ {
+ if (set)
+ {
+ // Got a match. See if the namespace has the C++
+ // namespace mapping.
+ //
+ String cxx_ns;
+
+ if (n->has_cxx_name ())
+ {
+ if (!n->xsd_name ().empty ())
+ {
+ cxx_ns = n->xsd_name ().replace (
+ ns_name, n->cxx_name (), true);
+ }
+ else
+ cxx_ns = n->cxx_name ();
+
+ cxx_ns += L"::";
+ }
+
+ // Figure out ret and arg type names.
+ //
+ String ret_type (cxx_ns);
+
+ ret_type += t->xsd_name ().replace (
+ t_name, t->cxx_ret_name (), true);
+
+ String arg_type;
+
+ if (t->cxx_arg_name ())
+ {
+ arg_type = cxx_ns;
+ arg_type += t->xsd_name ().replace (
+ t_name, t->cxx_arg_name (), true);
+ }
+ else
+ {
+ if (ret_type == L"void")
+ arg_type = ret_type;
+ else
+ {
+ wchar_t last (ret_type[ret_type.size () - 1]);
+
+ // If it is already a pointer or reference then use
+ // it as is.
+ //
+ if (last == L'*' || last == L'&')
+ arg_type = ret_type;
+ else
+ arg_type = L"const " + ret_type + L"&";
+ }
+ }
+
+ tc.set ("ret-type", ret_type);
+ tc.set ("arg-type", arg_type);
+
+ //std::wcerr << t_name << " -> " << ret_type << endl;
+ }
+
+ tc.set ("root-schema", &schema_);
+
+ // See of we need to add any includes to the translations
+ // unit.
+ //
+ if (add_includes_)
+ {
+ if (n->includes_begin () != n->includes_end ())
+ {
+ typedef std::set<String> Includes;
+
+ if (!schema_.context ().count ("includes"))
+ schema_.context ().set ("includes", Includes ());
+
+ Includes& is (
+ schema_.context ().get<Includes> ("includes"));
+
+ for (Namespace::IncludesIterator i (n->includes_begin ());
+ i != n->includes_end (); ++i)
+ {
+ is.insert (*i);
+ }
+ }
+ }
+
+ return;
+ }
+ }
+ }
+ }
+ }
+
+ private:
+ SemanticGraph::Schema& schema_;
+ TypeMap::Namespaces& type_map_;
+ bool add_includes_;
+ };
+
+
+ //
+ //
+ struct GlobalType: Traversal::Type,
+ Traversal::List,
+ Traversal::Complex,
+ Traversal::Enumeration
+ {
+ GlobalType (SemanticGraph::Schema& schema,
+ TypeMap::Namespaces& type_map,
+ bool add_includes)
+ : type_ (schema, type_map, add_includes)
+ {
+ inherits_ >> type_;
+ names_ >> instance_ >> belongs_ >> type_;
+ argumented_ >> type_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ type_.traverse (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::List& l)
+ {
+ type_.traverse (l);
+ Traversal::List::argumented (l, argumented_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ type_.traverse (c);
+ Complex::inherits (c, inherits_);
+ Complex::names (c, names_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Enumeration& e)
+ {
+ type_.traverse (e);
+ Complex::inherits (e, inherits_);
+ }
+
+ private:
+ Parser::Type type_;
+ Traversal::Names names_;
+ Traversal::Instance instance_;
+ Traversal::Inherits inherits_;
+ Traversal::Belongs belongs_;
+ Traversal::Argumented argumented_;
+ };
+
+ void
+ process_impl (options const& ops,
+ XSDFrontend::SemanticGraph::Schema& tu,
+ bool gen_driver,
+ TypeMap::Namespaces& type_map)
+ {
+ if (tu.names_begin ()->named ().name () ==
+ L"http://www.w3.org/2001/XMLSchema")
+ {
+ // XML Schema namespace.
+ //
+ Traversal::Schema schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ GlobalType global_type (tu, type_map, true);
+
+ schema >> schema_names >> ns >> ns_names >> global_type;
+
+ schema.dispatch (tu);
+ }
+ else
+ {
+ // If --extern-xml-schema is specified, then we don't want
+ // includes from the XML Schema type map.
+ //
+ bool extern_xml_schema (ops.extern_xml_schema ());
+
+ //
+ //
+ Traversal::Schema schema;
+ Traversal::Schema xs_schema;
+ Sources sources;
+ Traversal::Implies implies;
+
+ schema >> sources >> schema;
+ schema >> implies >> xs_schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ GlobalType global_type (tu, type_map, true);
+
+ schema >> schema_names >> ns >> ns_names >> global_type;
+
+ Traversal::Names xs_schema_names;
+ Traversal::Namespace xs_ns;
+ Traversal::Names xs_ns_names;
+ GlobalType xs_global_type (tu, type_map, !extern_xml_schema);
+
+ xs_schema >> xs_schema_names >> xs_ns >> xs_ns_names >>
+ xs_global_type;
+
+ schema.dispatch (tu);
+
+ // If we are generating the test driver, make sure the root
+ // element type is processed.
+ //
+ if (gen_driver && ops.generate_test_driver ())
+ {
+ // Figure out the root element. Validator should have made sure
+ // it is unique.
+ //
+ SemanticGraph::Element* root (0);
+ {
+ Traversal::Schema schema;
+ Sources sources;
+
+ schema >> sources >> schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ RootElement root_element (ops, root);
+
+ schema >> schema_names >> ns >> ns_names >> root_element;
+
+ schema.dispatch (tu);
+ }
+
+ global_type.dispatch (root->type ());
+ }
+ }
+ }
+ }
+
+ void TypeProcessor::
+ process (options const& ops,
+ XSDFrontend::SemanticGraph::Schema& s,
+ bool gen_driver,
+ TypeMap::Namespaces& tm)
+ {
+ process_impl (ops, s, gen_driver, tm);
+ }
+ }
+}
diff --git a/xsd/cxx/parser/type-processor.hxx b/xsd/cxx/parser/type-processor.hxx
new file mode 100644
index 0000000..6800024
--- /dev/null
+++ b/xsd/cxx/parser/type-processor.hxx
@@ -0,0 +1,31 @@
+// file : xsd/cxx/parser/type-processor.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_TYPE_PROCESSOR_HXX
+#define XSD_CXX_PARSER_TYPE_PROCESSOR_HXX
+
+#include <libxsd-frontend/semantic-graph.hxx>
+
+#include <xsd/types.hxx>
+
+#include <xsd/type-map/type-map.hxx>
+
+#include <xsd/cxx/parser/options.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ class TypeProcessor
+ {
+ public:
+ void
+ process (options const&,
+ XSDFrontend::SemanticGraph::Schema&,
+ bool gen_driver,
+ TypeMap::Namespaces&);
+ };
+ }
+}
+
+#endif // XSD_CXX_PARSER_TYPE_PROCESSOR_HXX
diff --git a/xsd/cxx/parser/validator.cxx b/xsd/cxx/parser/validator.cxx
new file mode 100644
index 0000000..8e8161a
--- /dev/null
+++ b/xsd/cxx/parser/validator.cxx
@@ -0,0 +1,723 @@
+// file : xsd/cxx/parser/validator.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <set>
+#include <iostream>
+
+#include <xsd/cxx/parser/validator.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/cxx/parser/elements.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Parser
+ {
+ namespace
+ {
+ class ValidationContext: public Context
+ {
+ public:
+ ValidationContext (SemanticGraph::Schema& root,
+ SemanticGraph::Path const& path,
+ Parser::options const& ops,
+ const WarningSet& disabled_warnings,
+ bool& valid_)
+ : Context (std::wcerr, root, path, ops, 0, 0, 0, 0),
+ disabled_warnings_ (disabled_warnings),
+ disabled_warnings_all_ (false),
+ valid (valid_),
+ subst_group_warning_issued (subst_group_warning_issued_),
+ subst_group_warning_issued_ (false)
+ {
+ }
+
+ public:
+ bool
+ is_disabled (char const* w)
+ {
+ return disabled_warnings_all_ ||
+ disabled_warnings_.find (w) != disabled_warnings_.end ();
+ }
+
+ public:
+ String
+ xpath (SemanticGraph::Nameable& n)
+ {
+ if (n.is_a<SemanticGraph::Namespace> ())
+ return L"<namespace-level>"; // There is a bug if you see this.
+
+ assert (n.named_p ());
+
+ SemanticGraph::Scope& scope (n.scope ());
+
+ if (scope.is_a<SemanticGraph::Namespace> ())
+ return n.name ();
+
+ return xpath (scope) + L"/" + n.name ();
+ }
+
+ protected:
+ ValidationContext (ValidationContext& c)
+ : Context (c),
+ disabled_warnings_ (c.disabled_warnings_),
+ disabled_warnings_all_ (c.disabled_warnings_all_),
+ valid (c.valid),
+ subst_group_warning_issued (c.subst_group_warning_issued)
+ {
+ }
+
+ protected:
+ const WarningSet& disabled_warnings_;
+ bool disabled_warnings_all_;
+ bool& valid;
+ bool& subst_group_warning_issued;
+ bool subst_group_warning_issued_;
+ };
+
+ //
+ //
+ struct Any: Traversal::Any, ValidationContext
+ {
+ Any (ValidationContext& c)
+ : ValidationContext (c)
+ {
+ }
+
+ struct Element: Traversal::Element, ValidationContext
+ {
+ Element (ValidationContext& c, SemanticGraph::Any& any)
+ : ValidationContext (c),
+ any_ (any),
+ ns_ (any.definition_namespace ().name ())
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (skip (e)) return;
+
+ using SemanticGraph::Any;
+
+ bool q (e.qualified_p ());
+ String ns (q ? e.namespace_ ().name () : "");
+
+ for (Any::NamespaceIterator i (any_.namespace_begin ());
+ i != any_.namespace_end (); ++i)
+ {
+ bool failed (false);
+
+ if (*i == L"##any")
+ {
+ failed = true;
+ }
+ else if (*i == L"##other")
+ {
+ if (ns_)
+ {
+ // Note that here I assume that ##other does not
+ // include names without target namespace. This
+ // is not what the spec says but that seems to be
+ // the consensus.
+ //
+ failed = q && ns != ns_;
+ }
+ else
+ {
+ // No target namespace.
+ //
+ failed = q && ns != L"";
+ }
+ }
+ else if (*i == L"##local")
+ {
+ failed = !q || ns == L"";
+ }
+ else if (*i == L"##targetNamespace")
+ {
+ failed = (q && ns_ == ns) || (!q && ns_ == L"");
+ }
+ else
+ {
+ failed = q && *i == ns;
+ }
+
+ if (failed)
+ {
+ Any& a (any_);
+
+ os << a.file () << ":" << a.line () << ":" << a.column ()
+ << ": warning P001: namespace '" << *i << "' allows for "
+ << "element '" << e.name () << "'" << endl;
+
+ os << a.file () << ":" << a.line () << ":" << a.column ()
+ << ": warning P001: generated code may not associate element '"
+ << e.name () << "' correctly if it appears in place of "
+ << "this wildcard" << endl;
+
+ os << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": info: element '" << e.name () << "' is defined "
+ << "here" << endl;
+
+ os << a.file () << ":" << a.line () << ":" << a.column ()
+ << ": info: turn on validation to ensure correct "
+ << "association" << endl;
+ }
+ }
+ }
+
+ private:
+ SemanticGraph::Any& any_;
+ String ns_;
+ };
+
+ struct Complex: Traversal::Complex
+ {
+ Complex ()
+ : up_ (true), down_ (true)
+ {
+ }
+
+ virtual void
+ post (Type& c)
+ {
+ // Go down the inheritance hierarchy.
+ //
+ if (down_)
+ {
+ bool up = up_;
+ up_ = false;
+
+ if (c.inherits_p ())
+ dispatch (c.inherits ().base ());
+
+ up_ = up;
+ }
+
+ // Go up the inheritance hierarchy.
+ //
+ if (up_)
+ {
+ bool down = down_;
+ down_ = false;
+
+ for (Type::BegetsIterator i (c.begets_begin ());
+ i != c.begets_end (); ++i)
+ {
+ dispatch (i->derived ());
+ }
+
+ down_ = down;
+ }
+ }
+
+ private:
+ bool up_, down_;
+ };
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ using SemanticGraph::Compositor;
+
+ // Find our complex type.
+ //
+ Compositor* c (&a.contained_particle ().compositor ());
+
+ while(!c->contained_compositor_p ())
+ c = &c->contained_particle ().compositor ();
+
+ SemanticGraph::Complex& type (
+ dynamic_cast<SemanticGraph::Complex&> (
+ c->contained_compositor ().container ()));
+
+ Complex complex;
+ Traversal::Names names;
+ Element element (*this, a);
+
+ complex >> names >> element;
+
+ complex.dispatch (type);
+ }
+ };
+
+
+ //
+ //
+ struct Traverser: Traversal::Schema,
+ Traversal::Complex,
+ Traversal::Type,
+ Traversal::Element,
+ ValidationContext
+ {
+ using Schema::traverse;
+
+ Traverser (ValidationContext& c)
+ : ValidationContext (c),
+ any_ (c)
+ {
+ *this >> sources_ >> *this;
+ *this >> schema_names_ >> ns_ >> names_ >> *this;
+
+ // Any
+ //
+ if (!validation && !is_disabled ("P001"))
+ {
+ *this >> contains_compositor_ >> compositor_ >> contains_particle_;
+ contains_particle_ >> compositor_;
+ contains_particle_ >> any_;
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ using SemanticGraph::Schema;
+
+ traverse (static_cast<SemanticGraph::Type&> (c));
+
+ if (c.inherits_p ())
+ {
+ SemanticGraph::Type& t (c.inherits ().base ());
+
+ if (t.named_p () &&
+ types_.find (
+ t.scope ().name () + L"#" + t.name ()) == types_.end ())
+ {
+ // Don't worry about types that are in included/imported
+ // schemas.
+ //
+ Schema& s (dynamic_cast<Schema&> (t.scope ().scope ()));
+
+ if (&s == &schema_root || sources_p (schema_root, s))
+ {
+ valid = false;
+
+ wcerr << c.file () << ":" << c.line () << ":" << c.column ()
+ << ": error: type '" << xpath (c) << "' inherits from "
+ << "yet undefined type '" << xpath (t) << "'" << endl;
+
+ wcerr << t.file () << ":" << t.line () << ":" << t.column ()
+ << ": info: '" << xpath (t) << "' is defined here"
+ << endl;
+
+ wcerr << c.file () << ":" << c.line () << ":" << c.column ()
+ << ": info: inheritance from a yet-undefined type is "
+ << "not supported" << endl;
+
+ wcerr << c.file () << ":" << c.line () << ":" << c.column ()
+ << ": info: re-arrange your schema and try again"
+ << endl;
+ }
+ }
+ }
+
+ Complex::traverse (c);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ if (t.named_p ())
+ {
+ types_.insert (t.scope ().name () + L"#" + t.name ());
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (is_disabled ("P002"))
+ return;
+
+ if (e.substitutes_p () &&
+ !options.generate_polymorphic () &&
+ !subst_group_warning_issued)
+ {
+ subst_group_warning_issued = true;
+
+ os << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": warning P002: substitution groups are used but "
+ << "--generate-polymorphic was not specified" << endl;
+
+ os << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": info: generated code may not be able to parse "
+ << "some conforming instances" << endl;
+ }
+ }
+
+ // Return true if root sources s.
+ //
+ bool
+ sources_p (SemanticGraph::Schema& root, SemanticGraph::Schema& s)
+ {
+ using SemanticGraph::Schema;
+ using SemanticGraph::Sources;
+
+ for (Schema::UsesIterator i (root.uses_begin ());
+ i != root.uses_end (); ++i)
+ {
+ if (i->is_a<Sources> ())
+ {
+ if (&i->schema () == &s || sources_p (i->schema (), s))
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private:
+ set<String> types_;
+
+ Sources sources_;
+
+ Traversal::Names schema_names_;
+ Traversal::Namespace ns_;
+
+ Traversal::Names names_;
+
+ // Any.
+ //
+ Any any_;
+ Traversal::Compositor compositor_;
+ Traversal::ContainsParticle contains_particle_;
+ Traversal::ContainsCompositor contains_compositor_;
+ };
+
+
+ struct AnonymousType: Traversal::Schema,
+ Traversal::Complex,
+ Traversal::Element,
+ Traversal::Attribute,
+ ValidationContext
+ {
+ using Schema::traverse;
+ using Complex::traverse;
+
+ AnonymousType (ValidationContext& c)
+ : ValidationContext (c),
+ anonymous_error_issued_ (false)
+ {
+ *this >> sources_ >> *this;
+ *this >> schema_names_ >> ns_ >> names_ >> *this;
+ *this >> names_;
+ }
+
+ bool
+ traverse_common (SemanticGraph::Member& m)
+ {
+ SemanticGraph::Type& t (m.type ());
+
+ if (!t.named_p ()
+ && !t.is_a<SemanticGraph::Fundamental::IdRef> ()
+ && !t.is_a<SemanticGraph::Fundamental::IdRefs> ())
+ {
+ if (!anonymous_error_issued_)
+ {
+ valid = false;
+ anonymous_error_issued_ = true;
+
+ wcerr << t.file ()
+ << ": error: anonymous types detected"
+ << endl;
+
+ wcerr << t.file ()
+ << ": info: "
+ << "anonymous types are not supported in this mapping"
+ << endl;
+
+ wcerr << t.file ()
+ << ": info: consider explicitly naming these types or "
+ << "remove the --preserve-anonymous option to "
+ << "automatically name them"
+ << endl;
+
+ if (!options.show_anonymous ())
+ wcerr << t.file ()
+ << ": info: use --show-anonymous option to see these "
+ << "types" << endl;
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (skip (e)) return;
+
+ if (traverse_common (e))
+ {
+ if (options.show_anonymous ())
+ {
+ wcerr << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": error: element '" << xpath (e) << "' "
+ << "is of anonymous type" << endl;
+ }
+ }
+ else
+ Traversal::Element::traverse (e);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Attribute& a)
+ {
+ if (traverse_common (a))
+ {
+ if (options.show_anonymous ())
+ {
+ wcerr << a.file () << ":" << a.line () << ":" << a.column ()
+ << ": error: attribute '" << xpath (a) << "' "
+ << "is of anonymous type" << endl;
+ }
+ }
+ else
+ Traversal::Attribute::traverse (a);
+ }
+
+ private:
+ bool anonymous_error_issued_;
+
+ set<String> types_;
+
+ Sources sources_;
+
+ Traversal::Names schema_names_;
+ Traversal::Namespace ns_;
+
+ Traversal::Names names_;
+ };
+
+ struct GlobalElement: Traversal::Element, ValidationContext
+ {
+ GlobalElement (ValidationContext& c, SemanticGraph::Element*& element)
+ : ValidationContext (c), element_ (element)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (!valid)
+ return;
+
+ if (options.root_element_first ())
+ {
+ if (element_ == 0)
+ element_ = &e;
+ }
+ else if (options.root_element_last ())
+ {
+ element_ = &e;
+ }
+ else if (String name = options.root_element ())
+ {
+ if (e.name () == name)
+ element_ = &e;
+ }
+ else
+ {
+ if (element_ == 0)
+ element_ = &e;
+ else
+ {
+ wcerr << schema_root.file () << ": error: unable to generate "
+ << "the test driver without a unique document root"
+ << endl;
+
+ wcerr << schema_root.file () << ": info: use --root-element-* "
+ << "options to specify the document root" << endl;
+
+ valid = false;
+ }
+ }
+ }
+
+ private:
+ SemanticGraph::Element*& element_;
+ };
+
+ }
+
+ bool Validator::
+ validate (options const& ops,
+ SemanticGraph::Schema& root,
+ SemanticGraph::Path const& path,
+ bool gen_driver,
+ const WarningSet& disabled_warnings)
+ {
+ bool valid (true);
+ ValidationContext ctx (root, path, ops, disabled_warnings, valid);
+
+ //
+ //
+ if (ops.char_type () != "char" &&
+ ops.char_type () != "wchar_t" &&
+ !ctx.is_disabled ("P003"))
+ {
+ wcerr << "warning P003: unknown base character type '" <<
+ ops.char_type ().c_str () << "'" << endl;
+ }
+
+ //
+ //
+ if (ops.xml_parser () != "xerces" &&
+ ops.xml_parser () != "expat" &&
+ !ctx.is_disabled ("P004"))
+ {
+ wcerr << "warning P004: unknown underlying XML parser '" <<
+ ops.xml_parser ().c_str () << "'" << endl;
+ }
+
+ //
+ //
+ if (ops.xml_parser () == "expat" &&
+ ops.char_type () == "wchar_t")
+ {
+ wcerr << "error: using expat with wchar_t is not supported"
+ << endl;
+
+ return false;
+ }
+
+ //
+ //
+ if (ops.xml_parser () == "expat" &&
+ !ops.char_encoding ().empty () &&
+ ops.char_encoding () != "utf8")
+ {
+ wcerr << "error: using expat with character encoding other than "
+ << "utf8 is not supported"
+ << endl;
+
+ return false;
+ }
+
+ //
+ //
+ if (ops.generate_validation () && ops.suppress_validation ())
+ {
+ wcerr << "error: mutually exclusive options specified: "
+ << "--generate-validation and --suppress-validation"
+ << endl;
+
+ return false;
+ }
+
+ //
+ //
+ if (ops.generate_noop_impl () && ops.generate_print_impl ())
+ {
+ wcerr << "error: mutually exclusive options specified: "
+ << "--generate-noop-impl and --generate-print-impl"
+ << endl;
+
+ return false;
+ }
+
+ //
+ //
+ {
+ bool ref (ops.root_element_first ());
+ bool rel (ops.root_element_last ());
+ bool re (ops.root_element ());
+
+ if ((ref && rel) || (ref && re) || (rel && re))
+ {
+ wcerr << "error: mutually exclusive options specified: "
+ << "--root-element-last, --root-element-first, and "
+ << "--root-element"
+ << endl;
+
+ return false;
+ }
+ }
+
+ //
+ //
+ bool import_maps (ops.import_maps ());
+ bool export_maps (ops.export_maps ());
+
+ if (import_maps && export_maps)
+ {
+ wcerr << "error: --import-maps and --export-maps are "
+ << "mutually exclusive" << endl;
+
+ return false;
+ }
+
+ if (import_maps && !ctx.polymorphic)
+ {
+ wcerr << "error: --import-maps can only be specified together with "
+ << "--generate-polymorphic" << endl;
+
+ return false;
+ }
+
+ if (export_maps && !ctx.polymorphic)
+ {
+ wcerr << "error: --export-maps can only be specified together with "
+ << "--generate-polymorphic" << endl;
+
+ return false;
+ }
+
+ // Test for anonymout types.
+ //
+ {
+ AnonymousType traverser (ctx);
+ traverser.dispatch (root);
+ }
+
+
+ // Test the rest.
+ //
+ if (valid)
+ {
+ Traverser traverser (ctx);
+ traverser.dispatch (root);
+ }
+
+ // Test that the document root is unique.
+ //
+ if (valid && gen_driver)
+ {
+ SemanticGraph::Element* element (0);
+
+ Traversal::Schema schema;
+ Sources sources;
+
+ schema >> sources >> schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ GlobalElement global_element (ctx, element);
+
+ schema >> schema_names >> ns >> ns_names >> global_element;
+
+ schema.dispatch (root);
+
+ if (valid && element == 0)
+ {
+ wcerr << root.file () << ": error: unable to generate the "
+ << "test driver without a global element (document root)"
+ << endl;
+
+ valid = false;
+ }
+ }
+
+ return valid;
+ }
+ }
+}
diff --git a/xsd/cxx/parser/validator.hxx b/xsd/cxx/parser/validator.hxx
new file mode 100644
index 0000000..daffdc8
--- /dev/null
+++ b/xsd/cxx/parser/validator.hxx
@@ -0,0 +1,30 @@
+// file : xsd/cxx/parser/validator.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_PARSER_VALIDATOR_HXX
+#define XSD_CXX_PARSER_VALIDATOR_HXX
+
+#include <xsd/xsd.hxx>
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/parser/elements.hxx>
+#include <xsd/cxx/parser/options.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ class Validator
+ {
+ public:
+ bool
+ validate (options const&,
+ SemanticGraph::Schema&,
+ SemanticGraph::Path const& tu,
+ bool gen_driver,
+ const WarningSet& disabled_warnings);
+ };
+ }
+}
+
+#endif // XSD_CXX_PARSER_VALIDATOR_HXX
diff --git a/xsd/cxx/tree/counter.cxx b/xsd/cxx/tree/counter.cxx
new file mode 100644
index 0000000..3fee0b1
--- /dev/null
+++ b/xsd/cxx/tree/counter.cxx
@@ -0,0 +1,265 @@
+// file : xsd/cxx/tree/counter.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/counter.hxx>
+
+#include <iostream>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct Member: Traversal::Member
+ {
+ Member (size_t& complexity)
+ : complexity_ (complexity)
+ {
+ }
+
+ virtual void
+ traverse (Type&)
+ {
+ complexity_++;
+ }
+
+ size_t& complexity_;
+ };
+
+ struct Any: Traversal::Any, Traversal::AnyAttribute
+ {
+ Any (size_t& complexity)
+ : complexity_ (complexity)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any&)
+ {
+ complexity_++;
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute&)
+ {
+ complexity_++;
+ }
+
+ size_t& complexity_;
+ };
+
+ struct TypeBase: Traversal::List,
+ Traversal::Union,
+ Traversal::Enumeration,
+ Traversal::Complex,
+ Context
+ {
+ TypeBase (Context& c, size_t& complexity)
+ : Context (c), complexity_ (complexity)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::List&)
+ {
+ complexity_++;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Union&)
+ {
+ complexity_++;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Enumeration& e)
+ {
+ bool string_based (false);
+ {
+ IsStringBasedType t (string_based);
+ t.dispatch (e);
+ }
+
+ complexity_ += (string_based ? 1 : 2);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ complexity_++; // One for the type itself.
+
+ // Plus some for each member.
+ //
+ Any any (complexity_);
+ Member member (complexity_);
+ Traversal::Names names;
+
+ names >> member;
+
+ if (options.generate_wildcard ())
+ names >> any;
+
+ Complex::names (c, names);
+ }
+
+ private:
+ size_t& complexity_;
+ };
+
+
+ //
+ //
+ struct GlobalType: Traversal::Type, Context
+
+ {
+ GlobalType (Context& c, Counts& counts)
+ : Context (c), counts_ (counts)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ counts_.global_types++;
+
+ size_t complexity (0);
+ TypeBase type (*this, complexity);
+ type.dispatch (t);
+
+ counts_.complexity_total += complexity;
+ counts_.complexity.push_back (complexity);
+ }
+
+ private:
+ Counts& counts_;
+ };
+
+ //
+ //
+ struct GlobalElement: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ GlobalElement (Context& c, Counts& counts)
+ : GlobalElementBase (c),
+ Context (c),
+ counts_ (counts),
+ last_ (0)
+ {
+ }
+
+ ~GlobalElement ()
+ {
+ if (last_ != 0)
+ {
+ last_->context ().set ("last", true);
+ count_last ();
+ }
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ // Check if the previous element we saw needs to be generated.
+ //
+ if (last_ != 0)
+ count_last ();
+
+ last_ = &e;
+
+ if (counts_.global_elements == 0)
+ e.context ().set ("first", true);
+
+ counts_.global_elements++;
+ }
+
+ private:
+ void
+ count_last ()
+ {
+ if (generate_p (*last_))
+ {
+ counts_.generated_global_elements++;
+
+ size_t complexity (0);
+
+ if (doc_root_p (*last_))
+ {
+ if (options.generate_element_type ())
+ {
+ complexity += 1; // For c-tors and d-tor.
+
+ if (!options.suppress_parsing ())
+ complexity += 1;
+
+ if (options.generate_serialization ())
+ complexity += 1;
+ }
+ else
+ {
+ if (!options.suppress_parsing ())
+ complexity += 6; // 13 parsing functions.
+
+ if (options.generate_serialization ())
+ complexity += 4; // 8 serialization functions.
+ }
+ }
+
+ if (complexity == 0)
+ {
+ // This element must be a substitution group members. For
+ // such elements we are only generating an entry in a map.
+ // We will assign it a complexity of 1 so that we don't
+ // end up with the total complexity that is less than the
+ // number of elements and types.
+ //
+ complexity = 1;
+ }
+
+ counts_.complexity_total += complexity;
+ counts_.complexity.push_back (complexity);
+ }
+ }
+
+ private:
+ Counts& counts_;
+ SemanticGraph::Element* last_;
+ };
+ }
+
+ Counts Counter::
+ count (options const& ops,
+ SemanticGraph::Schema& tu,
+ SemanticGraph::Path const& path)
+ {
+ Counts counts;
+ Context ctx (std::wcerr, tu, path, ops, counts, false, 0, 0, 0, 0);
+
+ Traversal::Schema schema;
+ Sources sources;
+
+ schema >> sources >> schema;
+
+ // The GlobalElement object destructor updates the counts, so make sure
+ // that this object is destroyed before we return the counts.
+ //
+ {
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ GlobalType global_type (ctx, counts);
+ GlobalElement global_element (ctx, counts);
+
+ schema >> schema_names >> ns >> ns_names;
+
+ ns_names >> global_element;
+ ns_names >> global_type;
+
+ schema.dispatch (tu);
+ }
+
+ return counts;
+ }
+ }
+}
diff --git a/xsd/cxx/tree/counter.hxx b/xsd/cxx/tree/counter.hxx
new file mode 100644
index 0000000..bc1dc79
--- /dev/null
+++ b/xsd/cxx/tree/counter.hxx
@@ -0,0 +1,25 @@
+// file : xsd/cxx/tree/counter.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_COUNTER_HXX
+#define XSD_CXX_TREE_COUNTER_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+#include <xsd/cxx/tree/options.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ class Counter
+ {
+ public:
+ Counts
+ count (options const&,
+ SemanticGraph::Schema&,
+ SemanticGraph::Path const&);
+ };
+ }
+}
+
+#endif // XSD_CXX_TREE_COUNTER_HXX
diff --git a/xsd/cxx/tree/default-value.cxx b/xsd/cxx/tree/default-value.cxx
new file mode 100644
index 0000000..fd1c8c4
--- /dev/null
+++ b/xsd/cxx/tree/default-value.cxx
@@ -0,0 +1,1273 @@
+// file : xsd/cxx/tree/default-value.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/default-value.hxx>
+
+using std::hex;
+using std::dec;
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ void
+ normalize (String& s)
+ {
+ size_t n (s.size ());
+
+ for (size_t i (0); i < n; ++i)
+ {
+ wchar_t& c (s[i]);
+
+ if (c == 0x0D || // carriage return
+ c == 0x09 || // tab
+ c == 0x0A)
+ c = 0x20;
+ }
+ }
+
+ void
+ collapse (String& s)
+ {
+ size_t n (s.size ()), j (0);
+ bool subs (false), trim (true);
+
+ for (size_t i (0); i < n; ++i)
+ {
+ wchar_t c (s[i]);
+
+ if (c == 0x20 || c == 0x09 || c == 0x0A)
+ subs = true;
+ else
+ {
+ if (subs)
+ {
+ subs = false;
+
+ if (!trim)
+ s[j++] = 0x20;
+ }
+
+ if (trim)
+ trim = false;
+
+ s[j++] = c;
+ }
+ }
+
+ s.resize (j);
+ }
+
+ void
+ strip_zeros (String& s)
+ {
+ size_t n (s.size ()), i (0);
+
+ if (n > 0 && (s[i] == '-' || s[i] == '+'))
+ i++;
+
+ size_t j (i);
+
+ bool strip (true);
+
+ for (; i < n; ++i)
+ {
+ wchar_t c (s[i]);
+
+ if (c == '0')
+ {
+ if (!strip)
+ s[j++] = c;
+ }
+ else
+ {
+ s[j++] = c;
+
+ if (strip)
+ strip = false;
+ }
+ }
+
+ if (strip && j < n)
+ s[j++] = '0'; // There was nothing except zeros so add one back.
+
+ s.resize (j);
+ }
+
+ void
+ make_float (String& s)
+ {
+ if (s.find ('.') == String::npos &&
+ s.find ('e') == String::npos &&
+ s.find ('E') == String::npos)
+ s += L".0";
+ }
+ }
+
+ //
+ // IsLiteralValue
+ //
+
+ IsLiteralValue::
+ IsLiteralValue (bool& r)
+ : IsFundamentalType (r)
+ {
+ *this >> inherits_ >> *this;
+ }
+
+ void IsLiteralValue::
+ traverse (SemanticGraph::Complex& c)
+ {
+ inherits (c);
+ }
+
+ //
+ // LiteralValue
+ //
+
+ LiteralValue::
+ LiteralValue (Context& c)
+ : Context (c)
+ {
+ *this >> inherits_ >> *this;
+ }
+
+ String LiteralValue::
+ dispatch (SemanticGraph::Node& type, String const& value)
+ {
+ literal_.clear ();
+ value_ = value;
+ Traversal::NodeBase::dispatch (type);
+ return literal_;
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Complex& c)
+ {
+ inherits (c);
+ }
+
+ // Boolean.
+ //
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::Boolean&)
+ {
+ collapse (value_);
+ literal_ = (value_ == L"true" || value_ == L"1") ? L"true" : L"false";
+ }
+
+ // Integral types.
+ //
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::Byte&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_;
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::UnsignedByte&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_ + L"U";
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::Short&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_;
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::UnsignedShort&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_ + L"U";
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::Int&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_;
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::UnsignedInt&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_ + L"U";
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::Long&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_;
+ literal_ += L"LL";
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::UnsignedLong&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_;
+ literal_ += L"ULL";
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::Integer&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_ + L"LL";
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_ + L"LL";
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_ + L"ULL";
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::PositiveInteger&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_ + L"ULL";
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::NegativeInteger&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ literal_ = value_ + L"LL";
+ }
+
+ // Floats.
+ //
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ collapse (value_);
+
+ if (value_ == L"NaN")
+ {
+ literal_ = L"::std::numeric_limits< " + fq_name (t) +
+ L" >::quiet_NaN ()";
+ }
+ else if (value_ == L"INF")
+ {
+ literal_ = L"::std::numeric_limits< " + fq_name (t) +
+ L" >::infinity ()";
+ }
+ else if (value_ == L"-INF")
+ {
+ literal_ = L"- ::std::numeric_limits< " + fq_name (t) +
+ L" >::infinity ()";
+ }
+ else
+ {
+ strip_zeros (value_);
+ make_float (value_);
+ literal_ = value_ + L"F";
+ }
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ collapse (value_);
+
+ if (value_ == L"NaN")
+ {
+ literal_ = L"::std::numeric_limits< " + fq_name (t) +
+ L" >::quiet_NaN ()";
+ }
+ else if (value_ == L"INF")
+ {
+ literal_ = L"::std::numeric_limits< " + fq_name (t) +
+ L" >::infinity ()";
+ }
+ else if (value_ == L"-INF")
+ {
+ literal_ = L"- ::std::numeric_limits< " + fq_name (t) +
+ L" >::infinity ()";
+ }
+ else
+ {
+ strip_zeros (value_);
+ make_float (value_);
+ literal_ = value_;
+ }
+ }
+
+ void LiteralValue::
+ traverse (SemanticGraph::Fundamental::Decimal&)
+ {
+ collapse (value_);
+ strip_zeros (value_);
+ make_float (value_);
+ literal_ = value_;
+ }
+
+ //
+ // InitKind
+ //
+
+ InitKind::
+ InitKind (Kind& r)
+ : r_ (r)
+ {
+ *this >> inherits_ >> *this;
+ }
+
+ void InitKind::
+ traverse (SemanticGraph::List&)
+ {
+ r_ = function;
+ }
+
+ void InitKind::
+ traverse (SemanticGraph::Complex& c)
+ {
+ inherits (c);
+ }
+
+ void InitKind::
+ traverse (SemanticGraph::Fundamental::Base64Binary&)
+ {
+ r_ = data;
+ }
+
+ void InitKind::
+ traverse (SemanticGraph::Fundamental::HexBinary&)
+ {
+ r_ = data;
+ }
+
+ void InitKind::
+ traverse (SemanticGraph::Fundamental::NameTokens&)
+ {
+ r_ = function;
+ }
+
+ void InitKind::
+ traverse (SemanticGraph::Fundamental::IdRefs&)
+ {
+ r_ = function;
+ }
+
+ void InitKind::
+ traverse (SemanticGraph::Fundamental::Entities&)
+ {
+ r_ = function;
+ }
+
+ //
+ // InitValue
+ //
+
+ InitValue::
+ InitValue (Context& c)
+ : Context (c), type_name_ (c), literal_value_ (c)
+ {
+ }
+
+ void InitValue::
+ dispatch (SemanticGraph::Node& type, String const& value)
+ {
+ value_ = value;
+ Traversal::NodeBase::dispatch (type);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::List& l)
+ {
+ collapse (value_);
+
+ if (!value_)
+ return;
+
+ SemanticGraph::Type& t (l.argumented ().type ());
+
+ String ov (value_);
+ size_t b (0);
+
+ for (size_t e (ov.find (' ')); ; e = ov.find (' ', b))
+ {
+ String v (ov, b, e != String::npos ? e - b : e);
+
+ os << "{";
+ type_name_.dispatch (t);
+ os << " tmp (";
+
+ String lit (literal_value_.dispatch (t, v));
+
+ if (lit)
+ os << lit;
+ else
+ {
+ value_ = v;
+ Traversal::NodeBase::dispatch (t);
+ }
+
+ os << ");"
+ << "r.push_back (tmp);"
+ << "}";
+
+ if (e == String::npos)
+ break;
+
+ b = e + 1;
+ }
+
+ value_ = ov;
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Union&)
+ {
+ os << strlit (value_);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Complex& c)
+ {
+ Traversal::NodeBase::dispatch (ultimate_base (c));
+ }
+
+ // anyType & anySimpleType.
+ //
+ void InitValue::
+ traverse (SemanticGraph::AnyType& t)
+ {
+ os << fq_name (t) << " (" << strlit (value_) << ")";
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::AnySimpleType& t)
+ {
+ os << fq_name (t) << " (" << strlit (value_) << ")";
+ }
+
+ // Strings.
+ //
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::String&)
+ {
+ os << strlit (value_);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::NormalizedString&)
+ {
+ normalize (value_);
+ os << strlit (value_);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Token&)
+ {
+ collapse (value_);
+ os << strlit (value_);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::NameToken&)
+ {
+ collapse (value_);
+ os << strlit (value_);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::NameTokens&)
+ {
+ string_sequence_type (
+ dynamic_cast<SemanticGraph::Type&> (
+ xs_ns ().find ("NMTOKEN").first->named ()));
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Name&)
+ {
+ collapse (value_);
+ os << strlit (value_);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::NCName&)
+ {
+ collapse (value_);
+ os << strlit (value_);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Language&)
+ {
+ collapse (value_);
+ os << strlit (value_);
+ }
+
+ // Qualified name.
+ //
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::QName& t)
+ {
+ size_t p (value_.rfind ('#'));
+
+ if (p != String::npos)
+ {
+ String ns (value_, 0, p);
+ String qname (value_, p + 1, String::npos);
+
+ collapse (ns);
+ collapse (qname);
+
+ p = qname.find (':');
+
+ String name;
+ if (p != String::npos)
+ name.assign (qname, p + 1, String::npos);
+ else
+ name = qname;
+
+ os << fq_name (t) << " (" << strlit (ns) << ", " <<
+ strlit (name) << ")";
+ }
+ else
+ {
+ // Unqualified name.
+ //
+ collapse (value_);
+ os << fq_name (t) << " (" << strlit (value_) << ")";
+ }
+ }
+
+ // ID/IDREF.
+ //
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Id&)
+ {
+ collapse (value_);
+ os << strlit (value_);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::IdRef&)
+ {
+ collapse (value_);
+ os << strlit (value_);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::IdRefs&)
+ {
+ string_sequence_type (
+ dynamic_cast<SemanticGraph::Type&> (
+ xs_ns ().find ("IDREF").first->named ()));
+ }
+
+ // URI.
+ //
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::AnyURI&)
+ {
+ collapse (value_);
+ os << strlit (value_);
+ }
+
+ // Binary.
+ //
+ static unsigned char
+ base64_decode (wchar_t c)
+ {
+ unsigned char r = 0xFF;
+
+ if (c >= 'A' && c <= 'Z')
+ r = static_cast<unsigned char> (c - 'A');
+ else if (c >= 'a' && c <= 'z')
+ r = static_cast<unsigned char> (c - 'a' + 26);
+ else if (c >= '0' && c <= '9')
+ r = static_cast<unsigned char> (c - '0' + 52);
+ else if (c == '+')
+ r = 62;
+ else if (c == '/')
+ r = 63;
+
+ return r;
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Base64Binary& t)
+ {
+ collapse (value_);
+
+ if (dispatch_count_++ == 0)
+ {
+ if (value_)
+ {
+ os << "unsigned char " << data_ << "[] = {";
+
+ // Decode.
+ //
+ size_t size (value_.size ());
+
+ // Remove all whitespaces.
+ //
+ {
+ size_t j (0);
+ bool subs (false);
+
+ for (size_t i (0); i < size; ++i)
+ {
+ wchar_t c (value_[i]);
+
+ if (c == 0x20 || c == 0x0A || c == 0x0D || c == 0x09)
+ subs = true;
+ else
+ {
+ if (subs)
+ subs = false;
+
+ value_[j++] = c;
+ }
+ }
+
+ size = j;
+ value_.resize (size, '\0');
+ }
+
+ // Our length should be a multiple of four.
+ //
+ size_t quad_count (size / 4);
+
+ // Source and destination indexes.
+ //
+ size_t si (0), di (0);
+
+ // Process all quads except the last one.
+ //
+ unsigned short v;
+ unsigned char b1, b2, b3, b4;
+
+ wchar_t prev_fill (os.fill ('0'));
+
+ for (size_t q (0); q < quad_count - 1; ++q)
+ {
+ b1 = base64_decode (value_[si++]);
+ b2 = base64_decode (value_[si++]);
+ b3 = base64_decode (value_[si++]);
+ b4 = base64_decode (value_[si++]);
+
+ if (q != 0)
+ os << ", ";
+
+ if (di % 9 == 0)
+ os << endl;
+
+ os << hex;
+
+ v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
+ os.width (2);
+ os << "0x" << v;
+
+ v = static_cast<unsigned char> ((b2 << 4) | (b3 >> 2));
+ os.width (2);
+ os << ", 0x" << v;
+
+ v = static_cast<unsigned char> ((b3 << 6) | b4);
+ os.width (2);
+ os << ", 0x" << v;
+
+ os << dec;
+
+ di += 3;
+ }
+
+ // Process the last quad. The first two octets are always there.
+ //
+ b1 = base64_decode (value_[si++]);
+ b2 = base64_decode (value_[si++]);
+
+ wchar_t e3 (value_[si++]), e4 (value_[si++]);
+
+ if (quad_count != 1)
+ os << ", ";
+
+ if (di % 9 == 0)
+ os << endl;
+
+ if (e4 == '=')
+ {
+ if (e3 == '=')
+ {
+ // Two pads. Last 4 bits in b2 should be zero.
+ //
+ v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
+ os << "0x" << hex << v << dec;
+ di++;
+ }
+ else
+ {
+ // One pad. Last 2 bits in b3 should be zero.
+ //
+ b3 = base64_decode (e3);
+
+ os << hex;
+
+ v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
+ os.width (2);
+ os << "0x" << v;
+
+ v = static_cast<unsigned char> ((b2 << 4) | (b3 >> 2));
+ os.width (2);
+ os << ", 0x" << v;
+
+ os << dec;
+
+ di += 2;
+ }
+ }
+ else
+ {
+ // No pads.
+ //
+ b3 = base64_decode (e3);
+ b4 = base64_decode (e4);
+
+ os << hex;
+
+ v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
+ os.width (2);
+ os << "0x" << v;
+
+ v = static_cast<unsigned char> ((b2 << 4) | (b3 >> 2));
+ os.width (2);
+ os << ", 0x" << v;
+
+ v = static_cast<unsigned char> ((b3 << 6) | b4);
+ os.width (2);
+ os << ", 0x" << v;
+
+ os << dec;
+
+ di += 3;
+ }
+
+ os.fill (prev_fill);
+
+ os << "};";
+ }
+ }
+ else
+ {
+ os << fq_name (t) << " (";
+
+ if (value_)
+ os << data_ << "," << endl
+ << "sizeof (" << data_ << ")," << endl
+ << "sizeof (" << data_ << ")," << endl
+ << "false";
+ else
+ os << "0";
+
+
+ os << ")";
+ }
+ }
+
+ static unsigned char
+ hex_decode (wchar_t c)
+ {
+ unsigned char r = 0xFF;
+
+ if (c >= '0' && c <= '9')
+ r = static_cast<unsigned char> (c - '0');
+ else if (c >= 'A' && c <= 'F')
+ r = static_cast<unsigned char> (10 + (c - 'A'));
+ else if (c >= 'a' && c <= 'f')
+ r = static_cast<unsigned char> (10 + (c - 'a'));
+
+ return r;
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::HexBinary& t)
+ {
+ collapse (value_);
+
+ if (dispatch_count_++ == 0)
+ {
+ if (value_)
+ {
+ os << "unsigned char " << data_ << "[] = {";
+
+ // Decode.
+ //
+ size_t n (value_.size () / 2);
+ wchar_t prev_fill (os.fill ('0'));
+
+ for (size_t i (0); i < n; ++i)
+ {
+ unsigned char h (hex_decode (value_[2 * i]));
+ unsigned char l (hex_decode (value_[2 * i + 1]));
+
+ if (h == 0xFF || l == 0xFF)
+ break;
+
+ if (i != 0)
+ os << ", ";
+
+ if (i % 9 == 0)
+ os << endl;
+
+ unsigned short v = static_cast<unsigned char> ((h << 4) | l);
+ os.width (2);
+ os << "0x" << hex << v << dec;
+ }
+
+ os.fill (prev_fill);
+
+ os << "};";
+ }
+ }
+ else
+ {
+ os << fq_name (t) << " (";
+
+ if (value_)
+ os << data_ << "," << endl
+ << "sizeof (" << data_ << ")," << endl
+ << "sizeof (" << data_ << ")," << endl
+ << "false";
+ else
+ os << "0";
+
+
+ os << ")";
+ }
+ }
+
+ // Date/time.
+ //
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Date& t)
+ {
+ // date := [-]CCYY[N]*-MM-DD[Z|(+|-)HH:MM]
+ //
+ collapse (value_);
+
+ size_t b (0);
+ size_t e (value_.find ('-', value_[0] == '-' ? 5 : 4));
+ String year (value_, 0, e);
+
+ b = e + 1;
+ String month (value_, b, 2);
+
+ b += 3;
+ String day (value_, b, 2);
+
+ strip_zeros (year);
+ strip_zeros (month);
+ strip_zeros (day);
+
+ os << fq_name (t) << " (" << year << ", " << month << ", " << day;
+ time_zone (b + 2);
+ os << ")";
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::DateTime& t)
+ {
+ // date_time := [-]CCYY[N]*-MM-DDTHH:MM:SS[.S+][Z|(+|-)HH:MM]
+ //
+ collapse (value_);
+
+ size_t b (0);
+ size_t e (value_.find ('-', value_[0] == '-' ? 5 : 4));
+ String year (value_, 0, e);
+ b = e + 1;
+
+ String month (value_, b, 2);
+ b += 3;
+
+ String day (value_, b, 2);
+ b += 3;
+
+ String hours (value_, b, 2);
+ b += 3;
+
+ String minutes (value_, b, 2);
+ b += 3;
+
+ e = b + 2;
+ for (; e < value_.size (); ++e)
+ {
+ wchar_t c (value_[e]);
+
+ if (c == 'Z' || c == '+' || c == '-')
+ break;
+ }
+
+ String seconds (value_, b, e - b);
+
+ strip_zeros (year);
+ strip_zeros (month);
+ strip_zeros (day);
+ strip_zeros (hours);
+ strip_zeros (minutes);
+ strip_zeros (seconds);
+ make_float (seconds);
+
+ os << fq_name (t) << " ("
+ << year << ", " << month << ", " << day << ", "
+ << hours << ", " << minutes << ", " << seconds;
+ time_zone (e);
+ os << ")";
+ }
+
+ namespace
+ {
+ size_t
+ find_delim (String const& s, size_t pos)
+ {
+ for (; pos < s.size (); ++pos)
+ {
+ wchar_t c (s[pos]);
+
+ if (c == 'Y' || c == 'D' || c == 'M' || c == 'H' ||
+ c == 'M' || c == 'S' || c == 'T')
+ break;
+ }
+
+ return pos;
+ }
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Duration& t)
+ {
+ // duration := [-]P[nY][nM][nD][TnHnMn[.n+]S]
+ //
+ collapse (value_);
+
+ size_t b (1), e, n (value_.size ());
+
+ os << fq_name (t) << " (";
+
+ if (value_[0] == '-')
+ {
+ os << "true, ";
+ b++;
+ }
+ else
+ os << "false, ";
+
+ e = find_delim (value_, b);
+
+ if (e < n && value_[e] == 'Y')
+ {
+ String v (value_, b, e - b);
+ strip_zeros (v);
+ os << v << ", ";
+
+ b = e + 1;
+ e = find_delim (value_, b);
+ }
+ else
+ os << "0, ";
+
+ if (e < n && value_[e] == 'M')
+ {
+ String v (value_, b, e - b);
+ strip_zeros (v);
+ os << v << ", ";
+
+ b = e + 1;
+ e = find_delim (value_, b);
+ }
+ else
+ os << "0, ";
+
+ if (e < n && value_[e] == 'D')
+ {
+ String v (value_, b, e - b);
+ strip_zeros (v);
+ os << v << ", ";
+
+ b = e + 1;
+ e = find_delim (value_, b);
+ }
+ else
+ os << "0, ";
+
+ if (e < n && value_[e] == 'T')
+ {
+ b = e + 1;
+ e = find_delim (value_, b);
+ }
+
+ if (e < n && value_[e] == 'H')
+ {
+ String v (value_, b, e - b);
+ strip_zeros (v);
+ os << v << ", ";
+
+ b = e + 1;
+ e = find_delim (value_, b);
+ }
+ else
+ os << "0, ";
+
+ if (e < n && value_[e] == 'M')
+ {
+ String v (value_, b, e - b);
+ strip_zeros (v);
+ os << v << ", ";
+
+ b = e + 1;
+ e = find_delim (value_, b);
+ }
+ else
+ os << "0, ";
+
+ if (e < n && value_[e] == 'S')
+ {
+ String v (value_, b, e - b);
+ strip_zeros (v);
+ make_float (v);
+ os << v;
+
+ b = e + 1;
+ e = find_delim (value_, b);
+ }
+ else
+ os << "0.0";
+
+ os << ")";
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Day& t)
+ {
+ // gday := ---DD[Z|(+|-)HH:MM]
+ //
+ collapse (value_);
+
+ String day (value_, 3, 2);
+ strip_zeros (day);
+
+ os << fq_name (t) << " (" << day;
+ time_zone (5);
+ os << ")";
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Month& t)
+ {
+ // gmonth := --MM[Z|(+|-)HH:MM]
+ //
+ collapse (value_);
+
+ String month (value_, 2, 2);
+ strip_zeros (month);
+
+ os << fq_name (t) << " (" << month;
+ time_zone (4);
+ os << ")";
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::MonthDay& t)
+ {
+ // gmonth_day := --MM-DD[Z|(+|-)HH:MM]
+ //
+ collapse (value_);
+
+ String month (value_, 2, 2);
+ String day (value_, 5, 2);
+
+ strip_zeros (month);
+ strip_zeros (day);
+
+ os << fq_name (t) << " (" << month << ", " << day;
+ time_zone (7);
+ os << ")";
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Year& t)
+ {
+ // gyear := [-]CCYY[N]*[Z|(+|-)HH:MM]
+ //
+ collapse (value_);
+
+ size_t pos (value_[0] == '-' ? 5 : 4);
+ for (; pos < value_.size (); ++pos)
+ {
+ wchar_t c (value_[pos]);
+
+ if (c == 'Z' || c == '+' || c == '-')
+ break;
+ }
+
+ String year (value_, 0, pos);
+ strip_zeros (year);
+
+ os << fq_name (t) << " (" << year;
+ time_zone (pos);
+ os << ")";
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::YearMonth& t)
+ {
+ // gyear_month := [-]CCYY[N]*-MM[Z|(+|-)HH:MM]
+ //
+ collapse (value_);
+
+ size_t pos (value_.find ('-', value_[0] == '-' ? 5 : 4));
+
+ String year (value_, 0, pos);
+ String month (value_, pos + 1, 2);
+
+ strip_zeros (year);
+ strip_zeros (month);
+
+ os << fq_name (t) << " (" << year << ", " << month;
+ time_zone (pos + 3);
+ os << ")";
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Time& t)
+ {
+ // time := HH:MM:SS[.S+][Z|(+|-)HH:MM]
+ //
+ collapse (value_);
+
+ String hours (value_, 0, 2);
+ String minutes (value_, 3, 2);
+
+ size_t e (8);
+ for (; e < value_.size (); ++e)
+ {
+ wchar_t c (value_[e]);
+
+ if (c == 'Z' || c == '+' || c == '-')
+ break;
+ }
+
+ String seconds (value_, 6, e - 6);
+
+ strip_zeros (hours);
+ strip_zeros (minutes);
+ strip_zeros (seconds);
+ make_float (seconds);
+
+ os << fq_name (t) << " (" << hours << ", " << minutes << ", " << seconds;
+ time_zone (e);
+ os << ")";
+ }
+
+ void InitValue::
+ time_zone (size_t pos)
+ {
+ // time_zone := Z|(+|-)HH:MM
+ //
+ if (pos < value_.size ())
+ {
+ String h, m;
+
+ if (value_[pos] == 'Z')
+ {
+ h = "0";
+ m = "0";
+ }
+ else
+ {
+ if (value_[pos] == '-')
+ {
+ h = "-";
+ m = "-";
+ }
+
+ h.append (value_, pos + 1, 2);
+ m.append (value_, pos + 4, 2);
+
+ strip_zeros (h);
+ strip_zeros (m);
+ }
+
+ os << ", " << h << ", " << m;
+ }
+ }
+
+ // Entity.
+ //
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Entity&)
+ {
+ collapse (value_);
+ os << strlit (value_);
+ }
+
+ void InitValue::
+ traverse (SemanticGraph::Fundamental::Entities&)
+ {
+ string_sequence_type (
+ dynamic_cast<SemanticGraph::Type&> (
+ xs_ns ().find ("ENTITY").first->named ()));
+ }
+
+ void InitValue::
+ string_sequence_type (SemanticGraph::Type& t)
+ {
+ collapse (value_);
+
+ if (!value_)
+ return;
+
+ size_t b (0);
+
+ for (size_t e (value_.find (' ')); ; e = value_.find (' ', b))
+ {
+ String v (value_, b, e != String::npos ? e - b : e);
+
+ os << "{";
+ type_name_.dispatch (t);
+ os << " tmp (" << strlit (v) << ");"
+ << "r.push_back (tmp);"
+ << "}";
+
+ if (e == String::npos)
+ break;
+
+ b = e + 1;
+ }
+ }
+ }
+}
diff --git a/xsd/cxx/tree/default-value.hxx b/xsd/cxx/tree/default-value.hxx
new file mode 100644
index 0000000..149982f
--- /dev/null
+++ b/xsd/cxx/tree/default-value.hxx
@@ -0,0 +1,363 @@
+// file : xsd/cxx/tree/default-value.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_DEFAULT_VALUE_HXX
+#define XSD_CXX_TREE_DEFAULT_VALUE_HXX
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ struct IsLiteralValue: IsFundamentalType, Traversal::Complex
+ {
+ using IsFundamentalType::traverse;
+
+ IsLiteralValue (bool& r);
+
+ virtual void
+ traverse (SemanticGraph::Complex&);
+
+ private:
+ Traversal::Inherits inherits_;
+ };
+
+ struct LiteralValue: Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal,
+
+ Traversal::Complex,
+
+ Context
+ {
+ using Traversal::NodeDispatcher::dispatch;
+ using Traversal::EdgeDispatcher::dispatch;
+
+ LiteralValue (Context&);
+
+ String
+ dispatch (SemanticGraph::Node& type, String const& value);
+
+ // Handle inheritance.
+ //
+ virtual void
+ traverse (SemanticGraph::Complex&);
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean&);
+
+ // Integral types.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger&);
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal&);
+
+ private:
+ String value_;
+ String literal_;
+
+ Traversal::Inherits inherits_;
+ };
+
+ // Some initialization (e.g., list) need a function body while others
+ // (e.g., *binary) require extra data.
+ //
+ struct InitKind: Traversal::List,
+ Traversal::Complex,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary,
+
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::IdRefs,
+ Traversal::Fundamental::Entities
+ {
+ enum Kind
+ {
+ simple,
+ data,
+ function
+ };
+
+ // Should be simple initially.
+ //
+ InitKind (Kind& r);
+
+ virtual void
+ traverse (SemanticGraph::List&);
+
+ virtual void
+ traverse (SemanticGraph::Complex&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entities&);
+
+ private:
+ Kind& r_;
+ Traversal::Inherits inherits_;
+ };
+
+ struct InitValue: Traversal::List,
+ Traversal::Union,
+ Traversal::Complex,
+
+ Traversal::AnyType,
+ Traversal::AnySimpleType,
+
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Language,
+
+ Traversal::Fundamental::QName,
+
+ Traversal::Fundamental::Id,
+ Traversal::Fundamental::IdRef,
+ Traversal::Fundamental::IdRefs,
+
+ Traversal::Fundamental::AnyURI,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary,
+
+ Traversal::Fundamental::Date,
+ Traversal::Fundamental::DateTime,
+ Traversal::Fundamental::Duration,
+ Traversal::Fundamental::Day,
+ Traversal::Fundamental::Month,
+ Traversal::Fundamental::MonthDay,
+ Traversal::Fundamental::Year,
+ Traversal::Fundamental::YearMonth,
+ Traversal::Fundamental::Time,
+
+ Traversal::Fundamental::Entity,
+ Traversal::Fundamental::Entities,
+
+ Context
+ {
+ using Traversal::NodeDispatcher::dispatch;
+ using Traversal::EdgeDispatcher::dispatch;
+
+ InitValue (Context&);
+
+ void
+ data (String const& data)
+ {
+ data_ = data;
+ dispatch_count_ = 0;
+ }
+
+ void
+ dispatch (SemanticGraph::Node& type, String const& value);
+
+ virtual void
+ traverse (SemanticGraph::List&);
+
+ virtual void
+ traverse (SemanticGraph::Union&);
+
+ virtual void
+ traverse (SemanticGraph::Complex&);
+
+ // anyType & anySimpleType.
+ //
+ virtual void
+ traverse (SemanticGraph::AnyType&);
+
+ virtual void
+ traverse (SemanticGraph::AnySimpleType&);
+
+ // Strings.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::String&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Language&);
+
+ // Qualified name.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::QName&);
+
+ // ID/IDREF.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Id&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRef&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs&);
+
+ // URI.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::AnyURI&);
+
+ // Binary.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary&);
+
+ // Date/time.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Date&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::DateTime&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Duration&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Day&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Month&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::MonthDay&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Year&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::YearMonth&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Time&);
+
+ // Entity.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entity&);
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entities&);
+
+ private:
+ void
+ string_sequence_type (SemanticGraph::Type& element_type);
+
+ void
+ time_zone (size_t pos);
+
+ private:
+ String value_;
+ String data_;
+ size_t dispatch_count_;
+ MemberTypeName type_name_;
+ LiteralValue literal_value_;
+ };
+ }
+}
+
+#endif // XSD_CXX_TREE_DEFAULT_VALUE_HXX
diff --git a/xsd/cxx/tree/elements.cxx b/xsd/cxx/tree/elements.cxx
new file mode 100644
index 0000000..fc080c8
--- /dev/null
+++ b/xsd/cxx/tree/elements.cxx
@@ -0,0 +1,1409 @@
+// file : xsd/cxx/tree/elements.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ // Context
+ //
+ Context::
+ Context (std::wostream& o,
+ SemanticGraph::Schema& root,
+ SemanticGraph::Path const& path,
+ options_type const& ops,
+ Counts const& counts_,
+ bool generate_xml_schema__,
+ StringLiteralMap const* map,
+ Regex const* fe,
+ Regex const* he,
+ Regex const* ie)
+ : CXX::Context (o, root, path, ops, map),
+ options (ops),
+ counts (counts_),
+ any_type (any_type_),
+ any_simple_type (any_simple_type_),
+ element_type (element_type_),
+ container (container_),
+ flags_type (flags_type_),
+ qname_type (qname_type_),
+ xs_string_type (xs_string_type_),
+ properties_type (properties_type_),
+ error_handler_type (error_handler_type_),
+ list_stream_type (list_stream_type_),
+ namespace_infomap_type (namespace_infomap_type_),
+ parser_type (parser_type_),
+ std_ostream_type (std_ostream_type_),
+ ostream_type (ostream_type_),
+ istream_type (istream_type_),
+ xerces_ns (xerces_ns_),
+ dom_auto_ptr (dom_auto_ptr_),
+ dom_node_key (dom_node_key_),
+ as_double_type (as_double_type_),
+ as_decimal_type (as_decimal_type_),
+ generate_xml_schema (generate_xml_schema_),
+ doxygen (doxygen_),
+ polymorphic (ops.generate_polymorphic ()),
+ polymorphic_all (ops.polymorphic_type_all ()),
+ poly_plate (ops.polymorphic_plate ()),
+ detach (ops.generate_detach ()),
+ fwd_expr (fe),
+ hxx_expr (he),
+ ixx_expr (ie),
+ ns_scope (ns_scope_),
+ regex_custom_type_map (regex_custom_type_map_),
+ direct_custom_type_map (direct_custom_type_map_),
+ qname_type_ (L"::xsd::cxx::xml::qualified_name< " + char_type + L" >"),
+ parser_type_ (L"::xsd::cxx::xml::dom::parser< " + char_type + L" >"),
+ generate_xml_schema_ (generate_xml_schema__),
+ doxygen_ (ops.generate_doxygen ()),
+ ns_scope_stack (ns_scope_stack_),
+ cxx_uq_id_expr_ (L"^[a-zA-Z_]\\w*$"),
+ cxx_uq_id_expr (cxx_uq_id_expr_)
+ {
+ SemanticGraph::Namespace& xs (xs_ns ());
+ SemanticGraph::Context& xsc (xs.context ());
+
+ // Cache some often-used names from the XML Schema namespace
+ // if names have already been processed.
+ //
+ if (xsc.count ("container"))
+ {
+ String xs_name (ns_name (xs));
+
+ any_type = fq_name (xs.find ("anyType").first->named ());
+ any_simple_type = fq_name (xs.find ("anySimpleType").first->named ());
+ xs_string_type = fq_name (xs.find ("string").first->named ());
+
+ container = xs_name + L"::" + xsc.get<String> ("container");
+ flags_type = xs_name + L"::" + xsc.get<String> ("flags");
+
+ if (ops.generate_element_type ())
+ element_type = xs_name + L"::" + xsc.get<String> ("element-type");
+
+ properties_type = xs_name + L"::" + xsc.get<String> ("properties");
+
+ if (!ops.suppress_parsing () || ops.generate_serialization ())
+ {
+ error_handler_type = xs_name + L"::" +
+ xsc.get<String> ("error-handler");
+ }
+
+ dom_auto_ptr_ = xs_name + (std >= cxx_version::cxx11
+ ? L"::dom::unique_ptr"
+ : L"::dom::auto_ptr");
+
+ dom_node_key_ = xs_name + L"::dom::" +
+ xsc.get<String> ("tree-node-key");
+
+ if (ops.generate_serialization ())
+ {
+ as_double_type_ = xs_name + L"::" +
+ xsc.get<String> ("as-double");
+
+ as_decimal_type_ = xs_name + L"::" +
+ xsc.get<String> ("as-decimal");
+
+ list_stream_type = xs_name + L"::" +
+ xsc.get<String> ("list-stream");
+
+ namespace_infomap_type = xs_name + L"::" +
+ xsc.get<String> ("namespace-infomap");
+ }
+
+ // istream and ostream are templates and for now use the same
+ // names regardless of the naming convention.
+ //
+ if (!ops.generate_extraction ().empty ())
+ istream_type = xs_name + L"::istream";
+
+ if (!ops.generate_insertion ().empty ())
+ ostream_type = xs_name + L"::ostream";
+ }
+
+ // Xerces-C++ namespace. IntelliSense for some reason does not like
+ // it fully-qualified (maybe because it's a namespace alias).
+ //
+ if (ops.generate_intellisense ())
+ xerces_ns = "xercesc";
+ else
+ xerces_ns = "::xercesc";
+
+ //
+ //
+ if (char_type == L"char")
+ std_ostream_type_ = L"::std::ostream";
+ else if (char_type == L"wchar_t")
+ std_ostream_type_ = L"::std::wostream";
+ else
+ std_ostream_type_ = L"::std::basic_ostream< " + char_type + L" >";
+
+ // Custom type mapping.
+ //
+
+ // Direct custom type mapping.
+ //
+ {
+ NarrowStrings const& v (ops.custom_type ());
+
+ for (NarrowStrings::const_iterator i (v.begin ()),
+ e (v.end ()); i != e; ++i)
+ {
+ String s (*i);
+
+ if (s.empty ())
+ throw InvalidCustomTypeMapping (s, "mapping string is empty");
+
+ // Split the string in two parts at the last '='.
+ //
+ size_t pos (s.rfind ('='));
+
+ // If no delimiter found then both type and base are empty.
+ //
+ if (pos == String::npos)
+ {
+ direct_custom_type_map[s].type.clear ();
+ direct_custom_type_map[s].base.clear ();
+ continue;
+ }
+
+ String name (s, 0, pos);
+ String rest (s, pos + 1);
+
+ // See if we've got the base part after '/'.
+ //
+ pos = rest.rfind ('/');
+
+ String type, base;
+
+ if (pos != String::npos)
+ {
+ type.assign (rest, 0, pos);
+ base.assign (rest, pos + 1, String::npos);
+ }
+ else
+ type = rest;
+
+ // type can be a potentially-qualified template-id. base is
+ // an unqualified C++ name.
+ //
+
+ if (!base.empty () && !cxx_uq_id_expr.match (base))
+ throw InvalidCustomTypeMapping (s, "invalid C++ identifier");
+
+ direct_custom_type_map[name].type = type;
+ direct_custom_type_map[name].base = base;
+ }
+ }
+
+ // Regex custom type mapping.
+ //
+ {
+ NarrowStrings const& v (ops.custom_type_regex ());
+
+ for (NarrowStrings::const_iterator i (v.begin ()),
+ e (v.end ()); i != e; ++i)
+ {
+ String s (*i);
+
+ if (s.empty ())
+ throw InvalidCustomTypeMapping (s, "mapping string is empty");
+
+ wchar_t delimiter (s[0]);
+
+ // First get pattern.
+ //
+ size_t pos (s.find (delimiter, 1));
+
+ if (pos == String::npos)
+ throw InvalidCustomTypeMapping (
+ s, "missing pattern-substitution separator");
+
+ String pat (s, 1, pos - 1);
+ String rest (s, pos + 1);
+
+ String type, base;
+
+ // See if we've got type and base.
+ //
+ if (!rest.empty ())
+ {
+ pos = rest.find (delimiter);
+
+ if (pos == String::npos)
+ throw InvalidCustomTypeMapping (
+ s, "missing pattern-substitution separator");
+
+ type.assign (rest, 0, pos);
+ rest = String (rest, pos + 1);
+
+ if (!rest.empty ())
+ {
+ pos = rest.find (delimiter);
+
+ if (pos == String::npos)
+ throw InvalidCustomTypeMapping (
+ s, "missing pattern-substitution separator");
+
+ base.assign (rest, 0, pos);
+ rest = String (rest, pos + 1);
+
+ if (!rest.empty ())
+ throw InvalidCustomTypeMapping (s, "invalid format");
+ }
+ }
+
+ regex_custom_type_map.push_back (
+ RegexCustomTypeMapInfo (WideRegexPat (pat), type, base));
+ }
+ }
+ }
+
+ Context::
+ Context (Context& c)
+ : CXX::Context (c),
+ options (c.options),
+ counts (c.counts),
+ any_type (c.any_type),
+ any_simple_type (c.any_simple_type),
+ element_type (c.element_type),
+ container (c.container),
+ flags_type (c.flags_type),
+ qname_type (c.qname_type),
+ xs_string_type (c.xs_string_type),
+ properties_type (c.properties_type),
+ error_handler_type (c.error_handler_type),
+ list_stream_type (c.list_stream_type),
+ namespace_infomap_type (c.namespace_infomap_type),
+ parser_type (c.parser_type),
+ std_ostream_type (c.std_ostream_type),
+ ostream_type (c.ostream_type),
+ istream_type (c.istream_type),
+ xerces_ns (c.xerces_ns),
+ dom_auto_ptr (c.dom_auto_ptr),
+ dom_node_key (c.dom_node_key),
+ as_double_type (c.as_double_type),
+ as_decimal_type (c.as_decimal_type),
+ generate_xml_schema (c.generate_xml_schema),
+ doxygen (c.doxygen),
+ polymorphic (c.polymorphic),
+ polymorphic_all (c.polymorphic_all),
+ poly_plate (c.poly_plate),
+ detach (c.detach),
+ fwd_expr (c.fwd_expr),
+ hxx_expr (c.hxx_expr),
+ ixx_expr (c.ixx_expr),
+ ns_scope (c.ns_scope),
+ regex_custom_type_map (c.regex_custom_type_map),
+ direct_custom_type_map (c.direct_custom_type_map),
+ ns_scope_stack (c.ns_scope_stack),
+ cxx_uq_id_expr (c.cxx_uq_id_expr)
+ {
+ }
+
+ Context::
+ Context (Context& c, std::wostream& o)
+ : CXX::Context (c, o),
+ options (c.options),
+ counts (c.counts),
+ any_type (c.any_type),
+ any_simple_type (c.any_simple_type),
+ element_type (c.element_type),
+ container (c.container),
+ flags_type (c.flags_type),
+ qname_type (c.qname_type),
+ xs_string_type (c.xs_string_type),
+ properties_type (c.properties_type),
+ error_handler_type (c.error_handler_type),
+ list_stream_type (c.list_stream_type),
+ namespace_infomap_type (c.namespace_infomap_type),
+ parser_type (c.parser_type),
+ std_ostream_type (c.std_ostream_type),
+ ostream_type (c.ostream_type),
+ istream_type (c.istream_type),
+ xerces_ns (c.xerces_ns),
+ dom_auto_ptr (c.dom_auto_ptr),
+ dom_node_key (c.dom_node_key),
+ as_double_type (c.as_double_type),
+ as_decimal_type (c.as_decimal_type),
+ generate_xml_schema (c.generate_xml_schema),
+ doxygen (c.doxygen),
+ polymorphic (c.polymorphic),
+ polymorphic_all (c.polymorphic_all),
+ poly_plate (c.poly_plate),
+ detach (c.detach),
+ fwd_expr (c.fwd_expr),
+ hxx_expr (c.hxx_expr),
+ ixx_expr (c.ixx_expr),
+ ns_scope (c.ns_scope),
+ regex_custom_type_map (c.regex_custom_type_map),
+ direct_custom_type_map (c.direct_custom_type_map),
+ ns_scope_stack (c.ns_scope_stack),
+ cxx_uq_id_expr (c.cxx_uq_id_expr)
+ {
+ }
+
+ void Context::
+ update_ns_scope ()
+ {
+ ns_scope.clear ();
+
+ bool first (true);
+
+ for (NamespaceStack::iterator i (ns_scope_stack.begin ());
+ i != ns_scope_stack.end ();
+ ++i)
+ {
+ // We only qualify names until the namespace level.
+ //
+ if (first)
+ first = false;
+ else
+ ns_scope += L"::";
+
+ ns_scope += *i;
+ }
+ }
+
+ bool Context::
+ custom_type (SemanticGraph::Type const& t, String& r) const
+ {
+ String const& name (t.name ());
+
+ // First search the direct mapping.
+ //
+ {
+ DirectCustomTypeMap::const_iterator i (
+ direct_custom_type_map.find (name));
+
+ if (i != direct_custom_type_map.end ())
+ {
+ r = i->second.type;
+ return true;
+ }
+ }
+
+
+ // Second search the regex mapping.
+ //
+ for (RegexCustomTypeMap::const_iterator
+ i (regex_custom_type_map.begin ()),
+ e (regex_custom_type_map.end ());
+ i != e; ++i)
+ {
+ if (i->pat.match (name))
+ {
+ // Empty type sub tells us to use the original name.
+ //
+ if (i->type_sub.empty ())
+ {
+ r.clear ();
+ return true;
+ }
+
+ r = i->pat.replace (name, i->type_sub);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ String Context::
+ custom_type (SemanticGraph::Type const& t) const
+ {
+ String r;
+ if (custom_type (t, r))
+ {
+ // Empty type name tells us to use the original name.
+ //
+ if (r.empty ())
+ r = ename (t);
+ }
+
+ return r;
+ }
+
+ bool Context::
+ renamed_type (SemanticGraph::Type const& t, String& r) const
+ {
+ String const& name (t.name ());
+
+ // First search the direct mapping.
+ //
+ {
+ DirectCustomTypeMap::const_iterator i (
+ direct_custom_type_map.find (name));
+
+ if (i != direct_custom_type_map.end ())
+ {
+ r = i->second.base;
+ return true;
+ }
+ }
+
+
+ // Second search the regex mapping.
+ //
+ for (RegexCustomTypeMap::const_iterator
+ i (regex_custom_type_map.begin ()),
+ e (regex_custom_type_map.end ());
+ i != e; ++i)
+ {
+ if (i->pat.match (name))
+ {
+ if (!i->base_sub.empty ())
+ {
+ r = i->pat.replace (name, i->base_sub);
+ }
+ else
+ r.clear ();
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ void Context::
+ write_annotation (SemanticGraph::Annotation& a)
+ {
+ String const& doc (a.documentation ());
+ wchar_t const* s (doc.c_str ());
+ size_t size (doc.size ());
+
+ // Remove leading and trailing whitespaces.
+ //
+ while (*s == wchar_t (0x20) || *s == wchar_t (0x0A) ||
+ *s == wchar_t (0x0D) || *s == wchar_t (0x09))
+ {
+ s++;
+ size--;
+ }
+
+ if (size != 0)
+ {
+ wchar_t const* e (s + size - 1);
+
+ while (e > s &&
+ (*e == wchar_t (0x20) || *e == wchar_t (0x0A) ||
+ *e == wchar_t (0x0D) || *e == wchar_t (0x09)))
+ --e;
+
+ size = s <= e ? e - s + 1 : 0;
+ }
+
+ if (size != 0)
+ {
+ os << " * ";
+
+ // Go over the data, forcing newline after 80 chars and adding
+ // ' * ' after each new line.
+ //
+ wchar_t const* last_space (0);
+ wchar_t const* b (s);
+ wchar_t const* e (s);
+ bool after_newline (false);
+ bool rogue (false);
+
+ for (; e < s + size; ++e)
+ {
+ unsigned int u (unicode_char (e)); // May advance e.
+
+ // We are going to treat \v and \f as rogue here even though
+ // they can be present in C++ source code.
+ //
+ if (u > 127 || (u < 32 && u != '\t' && u != '\n'))
+ rogue = true;
+
+ if (u == ' ' || u == '\t')
+ {
+ if (after_newline)
+ {
+ if (e == b)
+ b++; // Skip leading spaces after newline.
+
+ continue;
+ }
+ else
+ last_space = e;
+ }
+ else if (after_newline)
+ {
+ os << " * ";
+ after_newline = false;
+ }
+
+ if (u == '\n')
+ {
+ write_rogue_text (b, e - b + 1, rogue);
+
+ b = e + 1;
+ last_space = 0;
+ after_newline = true;
+ rogue = false;
+ continue;
+ }
+
+ if (e - b >= 70 && last_space != 0)
+ {
+ write_rogue_text (b, last_space - b, rogue);
+ os << endl;
+
+ b = last_space + 1;
+ last_space = 0;
+ after_newline = true;
+ // Cannot reset rogue since we don't output the whole string.
+ }
+ }
+
+ if (e != b)
+ write_rogue_text (b, e - b, rogue);
+
+ if (!after_newline)
+ os << endl;
+ }
+ }
+
+ void Context::
+ write_rogue_text (wchar_t const* s, size_t size, bool rogue)
+ {
+ if (!rogue)
+ os.write (s, size);
+ else
+ {
+ for (wchar_t const* p (s); p < s + size; ++p)
+ {
+ unsigned int u (unicode_char (p)); // May advance p.
+
+ // We are going to treat \v and \f as rogue here even though
+ // they can be present in C++ source code.
+ //
+ if (u > 127 || (u < 32 && u != '\t' && u != '\n'))
+ os.put ('?');
+ else
+ os.put (static_cast<wchar_t> (u));
+ }
+ }
+ }
+
+ bool Context::
+ polymorphic_p (SemanticGraph::Type& t)
+ {
+ // IDREF templates cannot be polymorphic.
+ //
+ if (!t.named_p () &&
+ (t.is_a<SemanticGraph::Fundamental::IdRef> () ||
+ t.is_a<SemanticGraph::Fundamental::IdRefs> ()))
+ return false;
+
+ if (polymorphic_all)
+ {
+ bool fund (false);
+ IsFundamentalType test (fund);
+ test.dispatch (t);
+ return !fund;
+ }
+ else
+ return t.context ().get<bool> ("polymorphic");
+ }
+
+ bool Context::
+ anonymous_substitutes_p (SemanticGraph::Type& t)
+ {
+ // IDREF templates cannot match.
+ //
+ if (!t.named_p () &&
+ (t.is_a<SemanticGraph::Fundamental::IdRef> () ||
+ t.is_a<SemanticGraph::Fundamental::IdRefs> ()))
+ return false;
+
+ // See which elements this type classifies.
+ //
+ for (SemanticGraph::Type::ClassifiesIterator i (t.classifies_begin ()),
+ e (t.classifies_end ()); i != e; ++i)
+ {
+ if (SemanticGraph::Element* e =
+ dynamic_cast<SemanticGraph::Element*> (&i->instance ()))
+ {
+ if (e->substitutes_p ())
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ // GenerateDefautCtor
+ //
+ GenerateDefaultCtor::
+ GenerateDefaultCtor (Context& c, bool& generate, bool no_base)
+ : Context (c), generate_ (generate), no_base_ (no_base)
+ {
+ *this >> inherits_ >> *this;
+ *this >> names_ >> *this;
+ }
+
+ void GenerateDefaultCtor::
+ traverse (SemanticGraph::Complex& c)
+ {
+ // Make sure we figure out if we have any required members before
+ // we base our decision on the base type.
+ //
+ Complex::names (c, names_);
+
+ if (!generate_)
+ Complex::inherits (c, inherits_);
+ }
+
+ void GenerateDefaultCtor::
+ traverse (SemanticGraph::Type&)
+ {
+ if (!no_base_)
+ generate_ = true;
+ }
+
+ void GenerateDefaultCtor::
+ traverse (SemanticGraph::Enumeration&)
+ {
+ if (!no_base_)
+ generate_ = true;
+ }
+
+ void GenerateDefaultCtor::
+ traverse (SemanticGraph::Element& e)
+ {
+ if (!skip (e) && min (e) == 1 && max (e) == 1)
+ generate_ = true;
+ }
+
+ void GenerateDefaultCtor::
+ traverse (SemanticGraph::Attribute& a)
+ {
+ if (min (a) == 1 && !a.fixed_p ())
+ generate_ = true;
+ }
+
+ void GenerateDefaultCtor::
+ traverse (SemanticGraph::Any& a)
+ {
+ if (options.generate_wildcard () &&
+ min (a) == 1 && max (a) == 1)
+ generate_ = true;
+ }
+
+
+ // GenerateFromBaseCtor
+ //
+ GenerateFromBaseCtor::
+ GenerateFromBaseCtor (Context& c, bool& generate)
+ : generate_ (generate),
+ custom_ (false),
+ traverser_ (c, generate, custom_)
+ {
+ inherits_ >> traverser_;
+ }
+
+ void GenerateFromBaseCtor::
+ traverse (SemanticGraph::Complex& c)
+ {
+ inherits (c, inherits_);
+
+ if (!generate_ && custom_)
+ {
+ // We have a customized type in the hierarchy. In this case we
+ // want to generate the c-tor unless base and ultimate-base are
+ // the same (see CtorArgs).
+ //
+ SemanticGraph::Type& b (c.inherits ().base ());
+ generate_ = b.is_a<SemanticGraph::Complex> () &&
+ !b.is_a<SemanticGraph::Enumeration> ();
+ }
+ }
+
+ GenerateFromBaseCtor::Traverser::
+ Traverser (Context& c, bool& generate, bool& custom)
+ : Context (c), generate_ (generate), custom_ (custom)
+ {
+ *this >> inherits_ >> *this;
+ *this >> names_ >> *this;
+ }
+
+ void GenerateFromBaseCtor::Traverser::
+ traverse (SemanticGraph::Type& t)
+ {
+ if (!custom_)
+ {
+ String tmp;
+ custom_ = custom_type (t, tmp);
+ }
+ }
+
+ void GenerateFromBaseCtor::Traverser::
+ traverse (SemanticGraph::Complex& c)
+ {
+ names (c, names_);
+
+ if (!generate_)
+ inherits (c, inherits_);
+
+ if (!generate_)
+ traverse (static_cast<SemanticGraph::Type&> (c));
+ }
+
+ void GenerateFromBaseCtor::Traverser::
+ traverse (SemanticGraph::Element& e)
+ {
+ if (!skip (e) && min (e) == 1 && max (e) == 1)
+ generate_ = true;
+ }
+
+ void GenerateFromBaseCtor::Traverser::
+ traverse (SemanticGraph::Attribute& a)
+ {
+ if (min (a) == 1 && !a.fixed_p ())
+ generate_ = true;
+ }
+
+ void GenerateFromBaseCtor::Traverser::
+ traverse (SemanticGraph::Any& a)
+ {
+ if (options.generate_wildcard () &&
+ min (a) == 1 && max (a) == 1)
+ generate_ = true;
+ }
+
+ // HasComplexNonOptArgs
+ //
+ HasComplexPolyNonOptArgs::
+ HasComplexPolyNonOptArgs (Context& c,
+ bool base,
+ bool& complex,
+ bool& poly,
+ bool& clash)
+ : Context (c),
+ complex_ (complex),
+ poly_ (poly),
+ clash_ (clash)
+ {
+ if (base)
+ *this >> inherits_ >> *this;
+
+ *this >> names_ >> *this;
+ }
+
+ void HasComplexPolyNonOptArgs::
+ traverse (SemanticGraph::Complex& c)
+ {
+ // No optimizations: need to check every arg for clashes.
+ //
+ inherits (c, inherits_);
+ names (c, names_);
+ }
+
+ void HasComplexPolyNonOptArgs::
+ traverse (SemanticGraph::Element& e)
+ {
+ if (!skip (e) && min (e) == 1 && max (e) == 1)
+ {
+ bool poly (polymorphic && polymorphic_p (e.type ()));
+
+ bool simple (true);
+ IsSimpleType t (simple);
+ t.dispatch (e.type ());
+
+ if (poly)
+ poly_ = true;
+
+ if (!simple)
+ complex_ = true;
+
+ if (poly && simple)
+ clash_ = false;
+ }
+ }
+
+ // FromBaseCtorArg
+ //
+ FromBaseCtorArg::
+ FromBaseCtorArg (Context& c, CtorArgType at, bool arg)
+ : Context (c), arg_type_ (at), arg_ (arg)
+ {
+ }
+
+ void FromBaseCtorArg::
+ traverse (SemanticGraph::Any& a)
+ {
+ if (!options.generate_wildcard ())
+ return;
+
+ if (min (a) == 1 && max (a) == 1)
+ {
+ String const& name (ename (a));
+
+ os << "," << endl
+ << "const " << xerces_ns << "::DOMElement&";
+
+ if (arg_)
+ os << " " << name;
+ }
+ }
+
+ void FromBaseCtorArg::
+ traverse (SemanticGraph::Element& e)
+ {
+ if (skip (e))
+ return;
+
+ if (min (e) == 1 && max (e) == 1)
+ {
+ String const& name (ename (e));
+
+ os << "," << endl;
+
+ bool ptr (false);
+
+ switch (arg_type_)
+ {
+ case CtorArgType::complex_auto_ptr:
+ {
+ bool simple (true);
+ IsSimpleType t (simple);
+ t.dispatch (e.type ());
+ ptr = !simple;
+ break;
+ }
+ case CtorArgType::poly_auto_ptr:
+ {
+ ptr = polymorphic && polymorphic_p (e.type ());
+ break;
+ }
+ case CtorArgType::type:
+ break;
+ }
+
+ if (ptr)
+ os << auto_ptr << "< " << etype (e) << " >";
+ else
+ os << "const " << etype (e) << "&";
+
+ if (arg_)
+ os << " " << name;
+ }
+ }
+
+ void FromBaseCtorArg::
+ traverse (SemanticGraph::Attribute& a)
+ {
+ // Note that we are not going to include attributes with
+ // default or required fixed values here. Instead we are
+ // going to default-initialize them.
+ //
+ if (min (a) == 1 && !a.fixed_p ())
+ {
+ String const& name (ename (a));
+
+ os << "," << endl
+ << "const " << etype (a) << "&";
+
+ if (arg_)
+ os << " " << name;
+ }
+ }
+
+ // CtorArgs
+ //
+ CtorArgs::
+ CtorArgs (Context& c, CtorArgType at)
+ : Context (c),
+ arg_type_ (at),
+ base_arg_ (0),
+ first_ (true),
+ member_name_ (c)
+ {
+ *this >> inherits_ >> *this;
+ *this >> names_ >> *this;
+ }
+
+ CtorArgs::
+ CtorArgs (Context& c, CtorArgType at, String& base_arg)
+ : Context (c),
+ arg_type_ (at),
+ base_arg_ (&base_arg),
+ first_ (true),
+ member_name_ (c)
+ {
+ *this >> inherits_ >> *this;
+ *this >> names_ >> *this;
+ }
+
+ void CtorArgs::
+ traverse (SemanticGraph::Type& t)
+ {
+ os << comma () << "const ";
+
+ member_name_.dispatch (t);
+
+ os << "&";
+
+ if (base_arg_ != 0)
+ {
+ // IDREF templates don't have a name.
+ //
+ *base_arg_ = t.named_p ()
+ ? (L"_xsd_" + ename (t) + L"_base")
+ : L"_xsd_base";
+
+ os << " " << *base_arg_;
+ }
+ }
+
+ void CtorArgs::
+ traverse (SemanticGraph::Enumeration& e)
+ {
+ os << comma () << "const ";
+
+ member_name_.traverse (e);
+
+ os << "&";
+
+ if (base_arg_ != 0)
+ {
+ *base_arg_ = L"_xsd_" + ename (e) + L"_base";
+
+ os << " " << *base_arg_;
+ }
+ }
+
+ void CtorArgs::
+ traverse (SemanticGraph::Any& a)
+ {
+ if (!options.generate_wildcard ())
+ return;
+
+ if (min (a) == 1 && max (a) == 1)
+ {
+ os << comma () << "const " << xerces_ns << "::DOMElement&";
+
+ if (base_arg_ != 0)
+ os << " " << ename (a);
+ }
+ }
+
+ void CtorArgs::
+ traverse (SemanticGraph::Element& e)
+ {
+ if (skip (e))
+ return;
+
+ if (min (e) == 1 && max (e) == 1)
+ {
+ bool ptr (false);
+
+ switch (arg_type_)
+ {
+ case CtorArgType::complex_auto_ptr:
+ {
+ bool simple (true);
+ IsSimpleType t (simple);
+ t.dispatch (e.type ());
+ ptr = !simple;
+ break;
+ }
+ case CtorArgType::poly_auto_ptr:
+ {
+ ptr = polymorphic && polymorphic_p (e.type ());
+ break;
+ }
+ case CtorArgType::type:
+ break;
+ }
+
+ if (ptr)
+ os << comma () << auto_ptr << "< " << etype (e) << " >";
+ else
+ os << comma () << "const " << etype (e) << "&";
+
+ if (base_arg_ != 0)
+ os << " " << ename (e);
+ }
+ }
+
+ void CtorArgs::
+ traverse (SemanticGraph::Attribute& a)
+ {
+ // Note that we are not going to include attributes with
+ // default or required fixed values here. Instead we are
+ // going to default-initialize them.
+ //
+ if (min (a) == 1 && !a.fixed_p ())
+ {
+ os << comma () << "const " << etype (a) << "&";
+
+ if (base_arg_ != 0)
+ os << " " << ename (a);
+ }
+ }
+
+ String CtorArgs::
+ comma ()
+ {
+ bool tmp (first_);
+ first_ = false;
+ return tmp ? "" : ",\n";
+ }
+
+
+ // CtorArgsWithoutBase
+ //
+ CtorArgsWithoutBase::
+ CtorArgsWithoutBase (Context& c, CtorArgType at, bool arg, bool first)
+ : Context (c), arg_type_ (at), arg_ (arg), first_ (first)
+ {
+ *this >> inherits_ >> *this;
+ *this >> names_ >> *this;
+ }
+
+ void CtorArgsWithoutBase::
+ traverse (SemanticGraph::Any& a)
+ {
+ if (!options.generate_wildcard ())
+ return;
+
+ if (min (a) == 1 && max (a) == 1)
+ {
+ os << comma () << "const " << xerces_ns << "::DOMElement&";
+
+ if (arg_)
+ os << " " << ename (a);
+ }
+ }
+
+ void CtorArgsWithoutBase::
+ traverse (SemanticGraph::Element& e)
+ {
+ if (skip (e))
+ return;
+
+ if (min (e) == 1 && max (e) == 1)
+ {
+ bool ptr (false);
+
+ switch (arg_type_)
+ {
+ case CtorArgType::complex_auto_ptr:
+ {
+ bool simple (true);
+ IsSimpleType t (simple);
+ t.dispatch (e.type ());
+ ptr = !simple;
+ break;
+ }
+ case CtorArgType::poly_auto_ptr:
+ {
+ ptr = polymorphic && polymorphic_p (e.type ());
+ break;
+ }
+ case CtorArgType::type:
+ break;
+ }
+
+ if (ptr)
+ os << comma () << auto_ptr << "< " << etype (e) << " >";
+ else
+ os << comma () << "const " << etype (e) << "&";
+
+ if (arg_)
+ os << " " << ename (e);
+ }
+ }
+
+ void CtorArgsWithoutBase::
+ traverse (SemanticGraph::Attribute& a)
+ {
+ // Note that we are not going to include attributes with
+ // default or required fixed values here. Instead we are
+ // going to default-initialize them.
+ //
+ if (min (a) == 1 && !a.fixed_p ())
+ {
+ os << comma () << "const " << etype (a) << "&";
+
+ if (arg_)
+ os << " " << ename (a);
+ }
+ }
+
+ String CtorArgsWithoutBase::
+ comma ()
+ {
+ bool tmp (first_);
+ first_ = false;
+ return tmp ? "" : ",\n";
+ }
+
+ // GlobalElementBase
+ //
+ bool GlobalElementBase::
+ generate_p (SemanticGraph::Element& e)
+ {
+ if (e.substitutes_p () && ctx_.polymorphic)
+ return true;
+
+ if (!doc_root_p (e))
+ return false;
+
+ // If we are not generating element types nor parsing/serialization
+ // code then we won't generate anything from it.
+ //
+ if (!ctx_.options.generate_element_type () &&
+ ctx_.options.suppress_parsing () &&
+ !ctx_.options.generate_serialization ())
+ return false;
+
+ return true;
+ }
+
+ bool GlobalElementBase::
+ doc_root_p (SemanticGraph::Element& e)
+ {
+ if (!ctx_.options.root_element_first () &&
+ !ctx_.options.root_element_last () &&
+ !ctx_.options.root_element_all () &&
+ !ctx_.options.root_element_none () &&
+ ctx_.options.root_element ().empty ())
+ return true; // By default treat them all.
+
+ if (ctx_.options.root_element_none ())
+ return false;
+
+ if (ctx_.options.root_element_all ())
+ return true;
+
+ if (ctx_.options.root_element_first () &&
+ e.context ().count ("first") != 0)
+ return true;
+
+ if (ctx_.options.root_element_last () &&
+ e.context ().count ("last") != 0)
+ return true;
+
+ NarrowStrings const& names (ctx_.options.root_element ());
+
+ // Hopefully nobody will specify more than a handful of names ;-).
+ //
+ for (NarrowStrings::const_iterator i (names.begin ());
+ i != names.end (); ++i)
+ {
+ String name (*i);
+
+ if (e.name () == name)
+ return true;
+ }
+
+ return false;
+ }
+
+ // Namespace
+ //
+ Namespace::
+ Namespace (Context& c,
+ size_t first,
+ size_t last)
+ : CXX::Namespace (c, *this),
+ GlobalElementBase (c),
+ ctx_ (c),
+ first_ (first),
+ last_ (last),
+ count_ (0)
+ {
+ }
+
+ void Namespace::
+ traverse (Type& ns)
+ {
+ using SemanticGraph::Element;
+
+ if (first_ > last_)
+ CXX::Namespace::traverse (ns);
+ else
+ {
+ bool opened (false);
+
+ for (Type::NamesIterator i (ns.names_begin ());
+ i != ns.names_end (); ++i)
+ {
+ SemanticGraph::Nameable& n (i->named ());
+
+ if (n.is_a<SemanticGraph::Type> () ||
+ (n.is_a<Element> () && generate_p (dynamic_cast<Element&> (n))))
+ {
+ if (count_ >= first_ && count_ <= last_)
+ {
+ if (!opened)
+ {
+ opened = true;
+ pre (ns);
+ }
+
+ edge_traverser ().dispatch (*i);
+ }
+
+ ++count_;
+ }
+ }
+
+ if (opened)
+ post (ns);
+ }
+ }
+
+ void Namespace::
+ enter (Type&, String const& name, bool)
+ {
+ ctx_.enter_ns_scope (name);
+ }
+
+ void Namespace::
+ leave ()
+ {
+ ctx_.leave_ns_scope ();
+ }
+
+ // Includes
+ //
+ void TypeForward::
+ traverse (SemanticGraph::Type& t)
+ {
+ String const& name (ename (t));
+
+ if (String custom = custom_type (t))
+ {
+ String new_name;
+ renamed_type (t, new_name);
+
+ if (new_name)
+ os << "class " << new_name << ";";
+
+ if (custom == name)
+ os << "class " << name << ";";
+ else
+ os << "typedef " << custom << " " << name << ";";
+ }
+ else
+ os << "class " << name << ";";
+ }
+
+ void Includes::
+ traverse_ (SemanticGraph::Uses& u)
+ {
+ // Support for weak (forward) inclusion used in the file-per-type
+ // compilation model.
+ //
+ Type t (type_);
+ bool weak (u.context ().count ("weak"));
+ SemanticGraph::Schema& s (u.schema ());
+
+ if (weak && t == header)
+ {
+ // Generate forward declarations.
+ //
+ if (forward_)
+ t = forward;
+ else
+ {
+ schema_.dispatch (s);
+ return;
+ }
+ }
+
+ if (t == source && !weak)
+ {
+ if (u.user ().context ().count ("type-schema"))
+ {
+ // Strong include into a type schema -- this is a base class.
+ // We have already included its header in our header so it
+ // would seem we don't need to do anything here. There is one
+ // subtle issue, however: Our constructors include arguments
+ // for base members which we simply pass to the base. The base
+ // header has only forward declarations for its members. This
+ // is not a problem if we pass references to base members --
+ // forward declarations are sufficient for this case. The
+ // problematic case is when we pass them as auto/unique_ptr.
+ // Because we pass them by value (which is done to support
+ // unique_ptr move semantics), the compiler needs to be able
+ // to destroy the member, presumably if an exception is thrown.
+ // And for that forward declarations are not enough.
+ //
+ // So what we are going to do here is include all the base
+ // member headers (transitively), just like the base's source
+ // file does.
+ //
+ // Note that we only do this for source since in the inline
+ // case the necessary files are already pulled via the the
+ // .ixx file includes.
+ //
+ Traversal::Schema schema;
+ schema >> *this;
+ schema.dispatch (s);
+ }
+
+ return;
+ }
+
+ SemanticGraph::Path path (
+ s.context ().count ("renamed")
+ ? s.context ().get<SemanticGraph::Path> ("renamed")
+ : u.path ());
+ path.normalize ();
+
+ // Try to use the portable representation of the path. If that
+ // fails, fall back to the native representation.
+ //
+ NarrowString path_str;
+ try
+ {
+ path_str = path.posix_string ();
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
+ path_str = path.string ();
+ }
+
+ String inc_path;
+
+ switch (t)
+ {
+ case forward:
+ {
+ inc_path = ctx_.fwd_expr->replace (path_str);
+ break;
+ }
+ case header:
+ case source:
+ {
+ inc_path = ctx_.hxx_expr->replace (path_str);
+ break;
+ }
+ case inline_:
+ {
+ if (weak)
+ {
+ inc_path = ctx_.hxx_expr->replace (path_str);
+ ctx_.os << "#include " << ctx_.process_include_path (inc_path)
+ << endl;
+ }
+
+ inc_path = ctx_.ixx_expr->replace (path_str);
+ break;
+ }
+ }
+
+ ctx_.os << "#include " << ctx_.process_include_path (inc_path) << endl
+ << endl;
+ }
+ }
+}
diff --git a/xsd/cxx/tree/elements.hxx b/xsd/cxx/tree/elements.hxx
new file mode 100644
index 0000000..4d10def
--- /dev/null
+++ b/xsd/cxx/tree/elements.hxx
@@ -0,0 +1,2122 @@
+// file : xsd/cxx/tree/elements.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_ELEMENTS_HXX
+#define XSD_CXX_TREE_ELEMENTS_HXX
+
+#include <map>
+#include <set>
+#include <deque>
+#include <vector>
+#include <sstream>
+
+#include <libcutl/re.hxx>
+
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/elements.hxx>
+
+#include <xsd/cxx/tree/options.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ struct Counts
+ {
+ Counts ()
+ : global_types (0),
+ global_elements (0),
+ generated_global_elements (0),
+ complexity_total (0)
+ {
+ }
+
+ size_t global_types;
+ size_t global_elements;
+ size_t generated_global_elements;
+
+ // Complexity value for each global type and generated global
+ // element, in order.
+ //
+ std::vector<size_t> complexity;
+ size_t complexity_total;
+ };
+
+ struct InvalidCustomTypeMapping
+ {
+ InvalidCustomTypeMapping (String const& mapping,
+ String const& reason)
+ : mapping_ (mapping), reason_ (reason)
+ {
+ }
+
+ String const&
+ mapping () const
+ {
+ return mapping_;
+ }
+
+ String const&
+ reason () const
+ {
+ return reason_;
+ }
+
+ private:
+ String mapping_;
+ String reason_;
+ };
+
+ // A set of potentially qualified XML Schema type names.
+ //
+ struct TypeNameSet
+ {
+ template <typename I>
+ TypeNameSet (I begin, I end)
+ {
+ for (; begin != end; ++begin)
+ insert (*begin);
+ }
+
+ void
+ insert (String const& name)
+ {
+ size_t p (name.rfind ('#'));
+
+ if (p == String::npos)
+ unames_.insert (name);
+ else
+ qnames_.insert (name);
+ }
+
+ bool
+ find (SemanticGraph::Type& t)
+ {
+ if (!unames_.empty ())
+ {
+ if (unames_.find (t.name ()) != unames_.end ())
+ return true;
+ }
+
+ if (!qnames_.empty ())
+ {
+ if (qnames_.find (t.scope ().name () + L"#" + t.name ()) !=
+ qnames_.end ())
+ return true;
+ }
+
+ return false;
+ }
+
+ private:
+ typedef std::set<String> StringSet;
+
+ StringSet unames_;
+ StringSet qnames_;
+ };
+
+ //
+ //
+ class Context: public CXX::Context
+ {
+ public:
+ typedef cutl::re::regexsub Regex;
+ typedef cutl::re::wregex WideRegexPat;
+
+ typedef Tree::options options_type;
+
+ struct DirectCustomTypeMapInfo
+ {
+ DirectCustomTypeMapInfo (String const& t = L"",
+ String const& b = L"")
+ : type (t), base (b)
+ {
+ }
+
+ String type;
+ String base;
+ };
+
+ struct RegexCustomTypeMapInfo
+ {
+ RegexCustomTypeMapInfo (WideRegexPat const& p,
+ String const& t,
+ String const& b)
+ : pat (p), type_sub (t), base_sub (b)
+ {
+ }
+
+ WideRegexPat pat;
+ String type_sub;
+ String base_sub;
+ };
+
+ typedef std::vector<RegexCustomTypeMapInfo> RegexCustomTypeMap;
+ typedef std::map<String, DirectCustomTypeMapInfo> DirectCustomTypeMap;
+
+ public:
+ Context (std::wostream& o,
+ SemanticGraph::Schema& root,
+ SemanticGraph::Path const& path,
+ options_type const& ops,
+ Counts const& counts_,
+ bool generate_xml_schema,
+ StringLiteralMap const*,
+ Regex const* fwd_expr,
+ Regex const* hxx_expr,
+ Regex const* ixx_expr);
+
+ protected:
+ Context (Context& c);
+ Context (Context& c, std::wostream& o);
+
+ // Custom type mapping.
+ //
+ public:
+ // Returns empty string if custom mapping is not required.
+ //
+ String
+ custom_type (SemanticGraph::Type const&) const;
+
+ // Returns true if custom mapping is required. name is
+ // populated with the custom type name or empty if the
+ // original name should be used.
+ //
+ bool
+ custom_type (SemanticGraph::Type const&, String& name) const;
+
+ // Returns true if this type has been renamed as part of the
+ // customization process. If the function returns true, the
+ // name string is populated with the new name or empty if
+ // the type should not be generated at all.
+ //
+ bool
+ renamed_type (SemanticGraph::Type const&, String& name) const;
+
+ public:
+ // Performs a number of processing steps, including forcing a new
+ // line after 80 characters as well as "commentizing" the text by
+ // adding '* ' after each newline.
+ //
+ void
+ write_annotation (SemanticGraph::Annotation&);
+
+ //
+ //
+ public:
+ static bool
+ ordered_p (SemanticGraph::Type const& t)
+ {
+ return t.context ().count ("ordered") &&
+ t.context ().get<bool> ("ordered");
+ }
+
+ // Check if we are generating mixed support for this type. We only
+ // do it for ordered types.
+ //
+ static bool
+ mixed_p (SemanticGraph::Complex const& c)
+ {
+ return c.mixed_p () && ordered_p (c);
+ }
+
+ bool
+ polymorphic_p (SemanticGraph::Type&);
+
+ bool
+ anonymous_p (SemanticGraph::Type const& t)
+ {
+ return t.context ().count ("anonymous");
+ }
+
+ // Return true if this anonymous type is defined in an element
+ // that belongs to a substitution group.
+ //
+ bool
+ anonymous_substitutes_p (SemanticGraph::Type&);
+
+ // Escaped names.
+ //
+ public:
+ // Accessor name.
+ //
+ static String const&
+ eaname (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("aname");
+ }
+
+ static String const&
+ eaname (SemanticGraph::Any const& a)
+ {
+ return a.context ().get<String> ("aname");
+ }
+
+ static String const&
+ eaname (SemanticGraph::AnyAttribute const& a)
+ {
+ return a.context ().get<String> ("aname");
+ }
+
+ // Modifier name.
+ //
+ static String const&
+ emname (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("mname");
+ }
+
+ static String const&
+ emname (SemanticGraph::Any const& a)
+ {
+ return a.context ().get<String> ("mname");
+ }
+
+ static String const&
+ emname (SemanticGraph::AnyAttribute const& a)
+ {
+ return a.context ().get<String> ("mname");
+ }
+
+ // Detach name.
+ //
+ static String const&
+ edname (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("dname");
+ }
+
+ //
+ //
+ static String const&
+ etype (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("type");
+ }
+
+ static String const&
+ etraits (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("traits");
+ }
+
+ static String const&
+ econtainer (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("container");
+ }
+
+ static String const&
+ econtainer (SemanticGraph::Any const& a)
+ {
+ return a.context ().get<String> ("container");
+ }
+
+ static String const&
+ econtainer (SemanticGraph::AnyAttribute const& a)
+ {
+ return a.context ().get<String> ("container");
+ }
+
+ static String const&
+ eiterator (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("iterator");
+ }
+
+ static String const&
+ eiterator (SemanticGraph::Any const& a)
+ {
+ return a.context ().get<String> ("iterator");
+ }
+
+ static String const&
+ eiterator (SemanticGraph::AnyAttribute const& a)
+ {
+ return a.context ().get<String> ("iterator");
+ }
+
+ static String const&
+ econst_iterator (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("const-iterator");
+ }
+
+ static String const&
+ econst_iterator (SemanticGraph::Any const& a)
+ {
+ return a.context ().get<String> ("const-iterator");
+ }
+
+ static String const&
+ econst_iterator (SemanticGraph::AnyAttribute const& a)
+ {
+ return a.context ().get<String> ("const-iterator");
+ }
+
+ static String const&
+ emember (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("member");
+ }
+
+ static String const&
+ emember (SemanticGraph::Any const& a)
+ {
+ return a.context ().get<String> ("member");
+ }
+
+ static String const&
+ emember (SemanticGraph::AnyAttribute const& a)
+ {
+ return a.context ().get<String> ("member");
+ }
+
+ static String const&
+ edefault_value (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("default-value");
+ }
+
+ static String const&
+ edefault_value_member (SemanticGraph::Member const& m)
+ {
+ return m.context ().get<String> ("default-value-member");
+ }
+
+ // Underlying enum value type.
+ //
+ static String const&
+ evalue (SemanticGraph::Enumeration const& e)
+ {
+ return e.context ().get<String> ("value");
+ }
+
+ // dom_document
+ //
+ static bool
+ edom_document_p (SemanticGraph::Complex const& c)
+ {
+ return c.context ().count ("dom-document");
+ }
+
+ static String const&
+ edom_document (SemanticGraph::Complex const& c)
+ {
+ return c.context ().get<String> ("dom-document");
+ }
+
+ static bool
+ edom_document_member_p (SemanticGraph::Complex const& c)
+ {
+ return c.context ().count ("dom-document-member");
+ }
+
+ static String const&
+ edom_document_member (SemanticGraph::Complex const& c)
+ {
+ return c.context ().get<String> ("dom-document-member");
+ }
+
+ // Parsing and serialization function names.
+ //
+ static String const&
+ eparser (SemanticGraph::Element const& e)
+ {
+ return e.context ().get<String> ("parser");
+ }
+
+ static String const&
+ eserializer (SemanticGraph::Element const& e)
+ {
+ return e.context ().get<String> ("serializer");
+ }
+
+ public:
+ void
+ enter_ns_scope (String const& name)
+ {
+ ns_scope_stack.push_back (name);
+ update_ns_scope ();
+ }
+
+ void
+ leave_ns_scope ()
+ {
+ ns_scope_stack.pop_back ();
+ update_ns_scope ();
+ }
+
+ private:
+ void
+ update_ns_scope ();
+
+ private:
+ // Write text that may contain characters that we will have
+ // to escape (indicated by the rogue flag).
+ //
+ void
+ write_rogue_text (wchar_t const* s, size_t size, bool rogue);
+
+ public:
+ options_type const& options;
+ Counts const& counts;
+ String& any_type;
+ String& any_simple_type;
+ String& element_type;
+ String& container;
+ String& flags_type;
+ String& qname_type;
+ String& xs_string_type;
+ String& properties_type;
+ String& error_handler_type;
+ String& list_stream_type;
+ String& namespace_infomap_type;
+ String& parser_type;
+ String& std_ostream_type;
+ String& ostream_type;
+ String& istream_type;
+ String& xerces_ns;
+ String& dom_auto_ptr;
+ String& dom_node_key;
+ String& as_double_type;
+ String& as_decimal_type;
+
+ bool& generate_xml_schema;
+ bool& doxygen;
+ bool polymorphic;
+ bool polymorphic_all;
+ unsigned long poly_plate;
+ bool detach;
+
+ Regex const* fwd_expr;
+ Regex const* hxx_expr;
+ Regex const* ixx_expr;
+
+ String& ns_scope;
+
+ RegexCustomTypeMap& regex_custom_type_map;
+ DirectCustomTypeMap& direct_custom_type_map;
+
+ private:
+ String any_type_;
+ String any_simple_type_;
+ String element_type_;
+ String container_;
+ String flags_type_;
+ String qname_type_;
+ String xs_string_type_;
+ String properties_type_;
+ String error_handler_type_;
+ String list_stream_type_;
+ String namespace_infomap_type_;
+ String parser_type_;
+ String std_ostream_type_;
+ String ostream_type_;
+ String istream_type_;
+ String xerces_ns_;
+ String dom_auto_ptr_;
+ String dom_node_key_;
+ String as_double_type_;
+ String as_decimal_type_;
+
+ bool generate_xml_schema_;
+ bool doxygen_;
+
+ typedef std::deque<String> NamespaceStack;
+ typedef std::deque<String> ScopeStack;
+
+ String ns_scope_;
+
+ NamespaceStack& ns_scope_stack;
+ NamespaceStack ns_scope_stack_;
+
+ RegexCustomTypeMap regex_custom_type_map_;
+ DirectCustomTypeMap direct_custom_type_map_;
+
+ private:
+ WideRegexPat const cxx_uq_id_expr_;
+ WideRegexPat const& cxx_uq_id_expr;
+ };
+
+ // Check whether this Schema type maps to a fundamental C++ type.
+ //
+ struct IsFundamentalType: Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal
+
+ {
+ IsFundamentalType (bool& r)
+ : r_ (r)
+ {
+ }
+
+ // Integral types.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger&)
+ {
+ r_ = true;
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean&)
+ {
+ r_ = true;
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal&)
+ {
+ r_ = true;
+ }
+
+ private:
+ bool& r_;
+ };
+
+ // Check whether this is a string-based type.
+ //
+ struct IsStringBasedType: Traversal::Complex,
+ Traversal::Union,
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Language
+ {
+ IsStringBasedType (bool& r)
+ : r_ (r)
+ {
+ *this >> inherits_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ inherits (c, inherits_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Union&)
+ {
+ // Current mapping of union is string-based.
+ //
+ r_ = true;
+ }
+
+ // Strings.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::String&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName&)
+ {
+ r_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Language&)
+ {
+ r_ = true;
+ }
+
+ private:
+ bool& r_;
+ Traversal::Inherits inherits_;
+ };
+
+
+ // Check whether this is a enumeration-based type.
+ //
+ struct IsEnumBasedType: Traversal::Complex
+ {
+ IsEnumBasedType (SemanticGraph::Enumeration*& e)
+ : enum_ (e)
+ {
+ *this >> inherits_;
+
+ inherits_ >> *this;
+ inherits_ >> enum_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ inherits (c, inherits_);
+ }
+
+ private:
+ struct Enumeration: Traversal::Enumeration
+ {
+ Enumeration (SemanticGraph::Enumeration*& e)
+ : e_ (e)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (e_ == 0)
+ e_ = &e;
+ }
+
+ private:
+ SemanticGraph::Enumeration*& e_;
+ };
+
+
+ private:
+ Enumeration enum_;
+ Traversal::Inherits inherits_;
+ };
+
+
+ //
+ //
+ struct MemberTypeName : Context,
+ Traversal::Type,
+ Traversal::List,
+ Traversal::Union,
+ Traversal::Complex,
+
+ Traversal::AnyType,
+ Traversal::AnySimpleType,
+
+ Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal,
+
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Language,
+
+ Traversal::Fundamental::QName,
+
+ Traversal::Fundamental::Id,
+ Traversal::Fundamental::IdRef,
+ Traversal::Fundamental::IdRefs,
+
+ Traversal::Fundamental::AnyURI,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary,
+
+ Traversal::Fundamental::Date,
+ Traversal::Fundamental::DateTime,
+ Traversal::Fundamental::Duration,
+ Traversal::Fundamental::Day,
+ Traversal::Fundamental::Month,
+ Traversal::Fundamental::MonthDay,
+ Traversal::Fundamental::Year,
+ Traversal::Fundamental::YearMonth,
+ Traversal::Fundamental::Time,
+
+ Traversal::Fundamental::Entity,
+ Traversal::Fundamental::Entities
+
+ {
+ MemberTypeName (Context& c)
+ : Context (c)
+ {
+ }
+
+ MemberTypeName (Context& c, std::wostream& o)
+ : Context (c, o)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type&)
+ {
+ abort ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::List& l)
+ {
+ os << fq_name (l);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Union& u)
+ {
+ os << fq_name (u);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ os << fq_name (c);
+ }
+
+ // anyType & anySimpleType.
+ //
+ virtual void
+ traverse (SemanticGraph::AnyType& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnySimpleType& t)
+ {
+ os << fq_name (t);
+ }
+
+ // Integral types.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger& t)
+ {
+ os << fq_name (t);
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean& t)
+ {
+ os << fq_name (t);
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal& t)
+ {
+ os << fq_name (t);
+ }
+
+ // Strings.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::String& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Language& t)
+ {
+ os << fq_name (t);
+ }
+
+
+ // Qualified name.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::QName& t)
+ {
+ os << fq_name (t);
+ }
+
+
+ // ID/IDREF.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Id& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRef& t)
+ {
+ if (t.named_p ())
+ {
+ // IDREF<anyType>
+ //
+ os << fq_name (t);
+ }
+ else
+ {
+ SemanticGraph::Nameable& ncname (
+ xs_ns ().find ("NCName").first->named ());
+
+ os << "::xsd::cxx::tree::idref< " << char_type << ", " <<
+ fq_name (ncname) << ", " <<
+ type_name (t.argumented ().type ()) << " >";
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs& t)
+ {
+ if (t.named_p ())
+ {
+ // IDREFS<anyType>
+ //
+ os << fq_name (t);
+ }
+ else
+ {
+ SemanticGraph::Nameable& ncname (
+ xs_ns ().find ("NCName").first->named ());
+
+ os << "::xsd::cxx::tree::idrefs< " << char_type << ", " <<
+ any_simple_type << ", ::xsd::cxx::tree::idref< " <<
+ char_type << ", " << fq_name (ncname) << ", " <<
+ type_name (t.argumented ().type ()) << " > >";
+ }
+ }
+
+ // URI.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::AnyURI& t)
+ {
+ os << fq_name (t);
+ }
+
+ // Binary.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary& t)
+ {
+ os << fq_name (t);
+ }
+
+
+ // Date/time.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Date& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::DateTime& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Duration& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Day& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Month& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::MonthDay& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Year& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::YearMonth& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Time& t)
+ {
+ os << fq_name (t);
+ }
+
+ // Entity.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entity& t)
+ {
+ os << fq_name (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entities& t)
+ {
+ os << fq_name (t);
+ }
+
+ private:
+ // For idref/idrefs
+ //
+ String
+ type_name (SemanticGraph::Type& t)
+ {
+ // This type is always named.
+ //
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (t);
+
+ return o.str ();
+ }
+ };
+
+
+ //
+ //
+ struct BaseTypeName : MemberTypeName
+ {
+ BaseTypeName (Context& c)
+ : MemberTypeName (c)
+ {
+ }
+
+ BaseTypeName (Context& c, std::wostream& o)
+ : MemberTypeName (c, o)
+ {
+ }
+
+ virtual void
+ fundamental_base (SemanticGraph::Type& t)
+ {
+ os << "::xsd::cxx::tree::fundamental_base< " <<
+ fq_name (t) << ", " << char_type << ", " <<
+ any_simple_type << " >";
+ }
+
+ // Integrals.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger& t)
+ {
+ fundamental_base (t);
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean& t)
+ {
+ fundamental_base (t);
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ fundamental_base (t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ os << "::xsd::cxx::tree::fundamental_base< " <<
+ fq_name (t) << ", " << char_type << ", " <<
+ any_simple_type << ", " <<
+ "::xsd::cxx::tree::schema_type::double_ >";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal& t)
+ {
+ os << "::xsd::cxx::tree::fundamental_base< " <<
+ fq_name (t) << ", " << char_type << ", " <<
+ any_simple_type << ", " <<
+ "::xsd::cxx::tree::schema_type::decimal >";
+ }
+ };
+
+ // Initial value should be true.
+ //
+ struct IsSimpleType: Traversal::Complex,
+ Traversal::Member,
+ Traversal::Any,
+ Traversal::AnyAttribute
+ {
+ IsSimpleType (bool& v)
+ : v_ (v)
+ {
+ *this >> names_ >> *this;
+ *this >> inherits_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ if (c.mixed_p ())
+ v_ = false;
+
+ if (v_)
+ names (c, names_);
+
+ if (v_)
+ inherits (c, inherits_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Member&)
+ {
+ v_ = false;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any&)
+ {
+ v_ = false;
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute&)
+ {
+ v_ = false;
+ }
+
+ private:
+ bool& v_;
+ Traversal::Names names_;
+ Traversal::Inherits inherits_;
+ };
+
+ // Test whether we need to generate default c-tor. Note that we are not
+ // interested in anyAttribute since it is always mapped to a sequence.
+ //
+ struct GenerateDefaultCtor: Traversal::Complex,
+ Traversal::Enumeration,
+ Traversal::Type,
+ Traversal::Element,
+ Traversal::Attribute,
+ Traversal::Any,
+ Context
+ {
+ // generate should initially be false.
+ //
+ GenerateDefaultCtor (Context&, bool& generate, bool no_base);
+
+ virtual void
+ traverse (SemanticGraph::Complex&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+
+ virtual void
+ traverse (SemanticGraph::Enumeration&);
+
+ virtual void
+ traverse (SemanticGraph::Element&);
+
+ virtual void
+ traverse (SemanticGraph::Attribute&);
+
+ virtual void
+ traverse (SemanticGraph::Any&);
+
+ private:
+ bool& generate_;
+ bool no_base_;
+
+ private:
+ Traversal::Inherits inherits_;
+ Traversal::Names names_;
+ };
+
+ // Test whether we need to generate from-base c-tor.
+ //
+ struct GenerateFromBaseCtor: Traversal::Complex
+ {
+ // generate should initially be false.
+ //
+ GenerateFromBaseCtor (Context& c, bool& generate);
+
+ virtual void
+ traverse (SemanticGraph::Complex& c);
+
+ private:
+ bool& generate_;
+ bool custom_;
+
+ // Note that we are not interested in anyAttribute since it is always
+ // mapped to a sequence.
+ //
+ struct Traverser: Traversal::Type,
+ Traversal::Complex,
+ Traversal::Element,
+ Traversal::Attribute,
+ Traversal::Any,
+ Context
+ {
+ Traverser (Context& c, bool& generate, bool& custom);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+
+ virtual void
+ traverse (SemanticGraph::Complex&);
+
+ virtual void
+ traverse (SemanticGraph::Attribute&);
+
+ virtual void
+ traverse (SemanticGraph::Element&);
+
+ virtual void
+ traverse (SemanticGraph::Any&);
+
+ private:
+ bool& generate_;
+ bool& custom_;
+
+ private:
+ Traversal::Inherits inherits_;
+ Traversal::Names names_;
+ } traverser_;
+
+ Traversal::Inherits inherits_;
+ };
+
+ // Test whether the type has any non-optional element of complex
+ // (has attributes/elements) and polymorpjic types.
+ //
+ struct HasComplexPolyNonOptArgs: Traversal::Complex,
+ Traversal::Element,
+ Context
+ {
+ // complex and poly should initially be false. clash
+ // should initially be true.
+ //
+ HasComplexPolyNonOptArgs (Context& c,
+ bool including_base,
+ bool& complex,
+ bool& poly,
+ bool& clash);
+
+ virtual void
+ traverse (SemanticGraph::Complex&);
+
+ virtual void
+ traverse (SemanticGraph::Element&);
+
+ private:
+ bool& complex_;
+ bool& poly_;
+ bool& clash_;
+
+ Traversal::Inherits inherits_;
+ Traversal::Names names_;
+ };
+
+ // Contructor argument types.
+ //
+ struct CtorArgType
+ {
+ enum Value
+ {
+ type,
+ complex_auto_ptr,
+ poly_auto_ptr
+ };
+
+ CtorArgType (Value v = Value (0)) : v_ (v) {}
+ operator Value () const {return v_;}
+
+ private:
+ Value v_;
+ };
+
+ // Immediate non-optional member. Note that AnyAttribute is always
+ // mapped to a sequence.
+ //
+ struct FromBaseCtorArg: Traversal::Any,
+ Traversal::Element,
+ Traversal::Attribute,
+ Context
+ {
+ FromBaseCtorArg (Context& c, CtorArgType, bool arg);
+
+ virtual void
+ traverse (SemanticGraph::Any&);
+
+ virtual void
+ traverse (SemanticGraph::Attribute&);
+
+ virtual void
+ traverse (SemanticGraph::Element&);
+
+ private:
+ CtorArgType arg_type_;
+ bool arg_;
+ };
+
+ // List of all non-optional members and a simple base. Note that
+ // AnyAttribute is always mapped to a sequence.
+ //
+ struct CtorArgs: Traversal::Complex,
+ Traversal::Enumeration,
+ Traversal::Type,
+ Traversal::Any,
+ Traversal::Element,
+ Traversal::Attribute,
+ Context
+ {
+ using Complex::traverse;
+
+ // The second version outputs the argument name and stores
+ // in in the base_arg string.
+ //
+ CtorArgs (Context&, CtorArgType);
+ CtorArgs (Context&, CtorArgType, String& base_arg);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+
+ virtual void
+ traverse (SemanticGraph::Enumeration&);
+
+ virtual void
+ traverse (SemanticGraph::Any&);
+
+ virtual void
+ traverse (SemanticGraph::Attribute&);
+
+ virtual void
+ traverse (SemanticGraph::Element&);
+
+ private:
+ String
+ comma ();
+
+ private:
+ CtorArgType arg_type_;
+ String base_;
+ String* base_arg_;
+ bool first_;
+
+ private:
+ Traversal::Inherits inherits_;
+ Traversal::Names names_;
+
+ MemberTypeName member_name_;
+ };
+
+
+ // Check whether we need to generate c-tor without the base argument.
+ //
+ struct GenerateWithoutBaseCtor: Traversal::List,
+ Traversal::Union,
+ Traversal::Complex,
+ Traversal::Enumeration,
+
+ Traversal::AnyType,
+ Traversal::AnySimpleType,
+
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::IdRefs,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary
+ {
+ // generate should initially be false.
+ //
+ GenerateWithoutBaseCtor (bool& generate)
+ : generate_ (generate)
+ {
+ *this >> inherits_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::List&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Union&)
+ {
+ // No default initialization.
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ Complex::inherits (c);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Enumeration&)
+ {
+ // No default initialization.
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyType&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnySimpleType&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::String&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary&)
+ {
+ generate_ = true;
+ }
+
+ private:
+ bool& generate_;
+ Traversal::Inherits inherits_;
+ };
+
+
+ // List of all non-optional members sans simple base. Note that
+ // AnyAttribute is always mapped to a sequence.
+ //
+ struct CtorArgsWithoutBase: Traversal::Complex,
+ Traversal::Any,
+ Traversal::Element,
+ Traversal::Attribute,
+ Context
+ {
+ using Complex::traverse;
+
+ CtorArgsWithoutBase (Context& c, CtorArgType, bool arg, bool first);
+
+ virtual void
+ traverse (SemanticGraph::Any&);
+
+ virtual void
+ traverse (SemanticGraph::Element&);
+
+ virtual void
+ traverse (SemanticGraph::Attribute&);
+
+ private:
+ String
+ comma ();
+
+ private:
+ CtorArgType arg_type_;
+ bool arg_;
+ bool first_;
+
+ private:
+ Traversal::Inherits inherits_;
+ Traversal::Names names_;
+ };
+
+ //
+ //
+ struct GlobalElementBase
+ {
+ GlobalElementBase (Context& c)
+ : ctx_ (c)
+ {
+ }
+
+ bool
+ generate_p (SemanticGraph::Element&);
+
+ bool
+ doc_root_p (SemanticGraph::Element&);
+
+ private:
+ Context& ctx_;
+ };
+
+
+ //
+ //
+ struct Namespace: CXX::Namespace,
+ GlobalElementBase,
+ CXX::Namespace::ScopeTracker
+ {
+ Namespace (Context&,
+ size_t first = 1,
+ size_t last = 0);
+
+ virtual void
+ traverse (Type&);
+
+ protected:
+ virtual void
+ enter (Type&, String const& name, bool last);
+
+ virtual void
+ leave ();
+
+ protected:
+ Context& ctx_;
+
+ private:
+ size_t first_;
+ size_t last_;
+ size_t count_;
+ };
+
+ //
+ //
+ struct DocumentedNamespace: Namespace
+ {
+ DocumentedNamespace (Context& c)
+ : Namespace (c)
+ {
+ }
+
+ virtual void
+ enter (Type& ns, String const& name, bool last)
+ {
+ Namespace::enter (ns, name, last);
+
+ // Only add documentation to the innermost namespace.
+ //
+ if (ctx_.doxygen && name && last)
+ {
+ ctx_.os << "/**" << endl
+ << " * @brief C++ namespace for the %" <<
+ ctx_.comment (ns.name ()) << endl
+ << " * schema namespace." << endl
+ << " */" << endl;
+ }
+ }
+ };
+
+ //
+ //
+ struct TypeForward: Traversal::Type, Context
+ {
+ TypeForward (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t);
+ };
+
+ struct Includes: Traversal::Imports,
+ Traversal::Includes
+ {
+ enum Type
+ {
+ forward,
+ header,
+ inline_,
+ source
+ };
+
+ Includes (Context& c, Type type)
+ : ctx_ (c),
+ type_ (type),
+ forward_ (c.options.generate_forward ()),
+ namespace_ (c),
+ type_forward_ (c)
+ {
+ schema_ >> schema_names_ >> namespace_ >> names_ >> type_forward_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Imports& i)
+ {
+ traverse_ (i);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Includes& i)
+ {
+ traverse_ (i);
+ }
+
+ private:
+ void
+ traverse_ (SemanticGraph::Uses&);
+
+ private:
+ Context& ctx_;
+ Type type_;
+ bool forward_;
+
+ Traversal::Schema schema_;
+ Traversal::Names schema_names_;
+ Namespace namespace_;
+ Traversal::Names names_;
+ TypeForward type_forward_;
+ };
+
+ //
+ //
+ struct FundIncludes: Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal,
+ Context
+ {
+ FundIncludes (Context& c, String const& prefix)
+ : Context (c), prefix_ (prefix),
+ long_ (false), unsigned_long_ (false)
+ {
+ }
+
+ // Integral types.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte& t)
+ {
+ gen_include (t, "byte.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte& t)
+ {
+ gen_include (t, "unsigned-byte.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short& t)
+ {
+ gen_include (t, "short.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort& t)
+ {
+ gen_include (t, "unsigned-short.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int& t)
+ {
+ gen_include (t, "int.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt& t)
+ {
+ gen_include (t, "unsigned-int.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long& t)
+ {
+ if (!long_)
+ long_ = gen_include (t, "long.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong& t)
+ {
+ if (!unsigned_long_)
+ unsigned_long_ = gen_include (t, "unsigned-long.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer& t)
+ {
+ if (!long_)
+ long_ = gen_include (t, "long.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
+ {
+ if (!long_)
+ long_ = gen_include (t, "long.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
+ {
+ if (!unsigned_long_)
+ unsigned_long_ = gen_include (t, "unsigned-long.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger& t)
+ {
+ if (!unsigned_long_)
+ unsigned_long_ = gen_include (t, "unsigned-long.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger& t)
+ {
+ if (!long_)
+ long_ = gen_include (t, "long.hxx");
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean& t)
+ {
+ gen_include (t, "boolean.hxx");
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ gen_include (t, "float.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ gen_include (t, "double.hxx");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal& t)
+ {
+ gen_include (t, "decimal.hxx");
+ }
+
+ private:
+ bool
+ gen_include (SemanticGraph::Type& t, String const& file)
+ {
+ String custom;
+
+ // XML Schema built-in type customization is only possible when
+ // we are generating separate header.
+ //
+ if (generate_xml_schema && custom_type (t, custom))
+ {
+ String new_name;
+ renamed_type (t, new_name);
+
+ if (!new_name)
+ return false;
+ }
+
+ os << "#include <xsd/cxx/tree/" << prefix_ << "/" << file << ">"
+ << endl;
+
+ return true;
+ }
+
+ private:
+ String prefix_;
+ bool long_;
+ bool unsigned_long_;
+ };
+ }
+}
+
+#endif // XSD_CXX_TREE_ELEMENTS_HXX
diff --git a/xsd/cxx/tree/fundamental-header.hxx b/xsd/cxx/tree/fundamental-header.hxx
new file mode 100644
index 0000000..0ea82cf
--- /dev/null
+++ b/xsd/cxx/tree/fundamental-header.hxx
@@ -0,0 +1,1337 @@
+// file : xsd/cxx/tree/fundamental-header.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_FUNDAMENTAL_HEADER_HXX
+#define XSD_CXX_TREE_FUNDAMENTAL_HEADER_HXX
+
+#include <set>
+#include <vector>
+#include <algorithm>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ struct FundamentalNamespace : DocumentedNamespace,
+
+ Traversal::AnyType,
+ Traversal::AnySimpleType,
+
+ Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal,
+
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Language,
+
+ Traversal::Fundamental::Id,
+ Traversal::Fundamental::IdRef,
+ Traversal::Fundamental::IdRefs,
+
+ Traversal::Fundamental::AnyURI,
+
+ Traversal::Fundamental::QName,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary,
+
+ Traversal::Fundamental::Date,
+ Traversal::Fundamental::DateTime,
+ Traversal::Fundamental::Duration,
+ Traversal::Fundamental::Day,
+ Traversal::Fundamental::Month,
+ Traversal::Fundamental::MonthDay,
+ Traversal::Fundamental::Year,
+ Traversal::Fundamental::YearMonth,
+ Traversal::Fundamental::Time,
+
+ Traversal::Fundamental::Entity,
+ Traversal::Fundamental::Entities,
+ Context
+ {
+ using Namespace::traverse;
+
+ FundamentalNamespace (Context& c)
+ : DocumentedNamespace (c),
+ Context (c),
+ export_ (c.options.export_xml_schema () && type_exp)
+ {
+ *this >> names_ >> *this;
+
+ if (export_)
+ xs_ns_ = ns_name (xs_ns ());
+ }
+
+ void
+ gen_typedef (String const& name,
+ String const& type,
+ String const& arg1 = L"",
+ String const& arg2 = L"",
+ String const& arg3 = L"",
+ bool export_type = true)
+ {
+ os << "typedef " << type;
+
+ // Use unqualified arguments since we are in the same
+ // namespace.
+ //
+ if (arg1)
+ {
+ os << arg1;
+
+ if (arg2)
+ {
+ os << ", " << arg2;
+
+ if (arg3)
+ os << ", " << arg3;
+ }
+
+ os << " >";
+ }
+
+ os << " " << name << ";";
+
+ if (export_type && export_ && type.find (L'<') != String::npos)
+ {
+ String s (type);
+
+ // Use qualified arguments.
+ //
+ if (arg1)
+ {
+ s += xs_ns_;
+ s += L"::";
+ s += arg1;
+
+ if (arg2)
+ {
+ s += L", ";
+ s += xs_ns_;
+ s += L"::";
+ s += arg2;
+
+ if (arg3)
+ {
+ s += L", ";
+ s += xs_ns_;
+ s += L"::";
+ s += arg3;
+ }
+ }
+
+ s += " >";
+ }
+
+ if (exports_set_.count (s) == 0)
+ {
+ exports_.push_back (s);
+ exports_set_.insert (s);
+ }
+ }
+ }
+
+ String
+ built_in_type (SemanticGraph::Type& t,
+ String const& type,
+ String const& arg1 = L"",
+ String const& arg2 = L"",
+ String const& arg3 = L"")
+ {
+ String custom;
+
+ String name (ename (t));
+
+ // XML Schema built-in type customization is only possible when
+ // we are generating separate header.
+ //
+ if (generate_xml_schema && custom_type (t, custom))
+ {
+ if (custom.empty ())
+ custom = name;
+
+ String new_name;
+ renamed_type (t, new_name);
+
+ if (new_name)
+ {
+ gen_typedef (new_name, type, arg1, arg2, arg3);
+
+ if (doxygen)
+ os << endl;
+ }
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief C++ type corresponding to the " <<
+ comment (t.name ()) << " XML Schema" << endl
+ << " * built-in type." << endl
+ << " */" << endl;
+
+ if (custom == name)
+ os << "class " << name << ";";
+ else
+ os << "typedef " << custom << " " << name << ";";
+
+ if (doxygen)
+ os << endl;
+ }
+ else
+ {
+ // Otherwise generate simple typedef.
+ //
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief C++ type corresponding to the " <<
+ comment (t.name ()) << " XML Schema" << endl
+ << " * built-in type." << endl
+ << " */" << endl;
+
+ gen_typedef (name, type, arg1, arg2, arg3);
+
+ if (doxygen)
+ os << endl;
+ }
+
+ return name;
+ }
+
+ // anyType and anySimpleType
+ //
+ virtual void
+ traverse (SemanticGraph::AnyType& t)
+ {
+ os << "// anyType and anySimpleType." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ type_ = built_in_type (t, "::xsd::cxx::tree::type");
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnySimpleType& t)
+ {
+ simple_type_ = built_in_type (
+ t, L"::xsd::cxx::tree::simple_type< " + char_type + L", ", type_);
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Alias for the anyType type." << endl
+ << " */" << endl;
+
+ gen_typedef (xs_ns ().context().get<String> ("container"),
+ "::xsd::cxx::tree::type");
+
+ os << endl;
+
+ if (doxygen)
+ os << endl;
+ }
+
+ // Integrals.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte& t)
+ {
+ os << "// 8-bit" << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (t, "signed char");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte& t)
+ {
+ built_in_type (t, "unsigned char");
+ os << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short& t)
+ {
+ os << "// 16-bit" << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (t, "short");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort& t)
+ {
+ built_in_type (t, "unsigned short");
+ os << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int& t)
+ {
+ os << "// 32-bit" << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (t, "int");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt& t)
+ {
+ built_in_type (t, "unsigned int");
+ os << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long& t)
+ {
+ os << "// 64-bit" << endl
+ << "//" <<endl;
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (t, "long long");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong& t)
+ {
+ built_in_type (t, "unsigned long long");
+ os << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer& t)
+ {
+ os << "// Supposed to be arbitrary-length integral types." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (t, "long long");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
+ {
+ built_in_type (t, "long long");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
+ {
+ built_in_type (t, "unsigned long long");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger& t)
+ {
+ built_in_type (t, "unsigned long long");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger& t)
+ {
+ built_in_type (t, "long long");
+ os << endl;
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean& t)
+ {
+ os << "// Boolean." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (t, "bool");
+
+ os << endl;
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ os << "// Floating-point types." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (t, "float");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ double_ = built_in_type (t, "double");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal& t)
+ {
+ decimal_ = built_in_type (t, "double");
+ os << endl;
+ }
+
+
+ // Strings.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::String& t)
+ {
+ os << "// String types." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ string_ = built_in_type (
+ t, L"::xsd::cxx::tree::string< " + char_type + L", ", simple_type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString& t)
+ {
+ norm_string_ = built_in_type (
+ t,
+ L"::xsd::cxx::tree::normalized_string< " + char_type + L", ",
+ string_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token& t)
+ {
+ token_ = built_in_type (
+ t, L"::xsd::cxx::tree::token< " + char_type + L", ", norm_string_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken& t)
+ {
+ nmtoken_ = built_in_type (
+ t, L"::xsd::cxx::tree::nmtoken< " + char_type + L", ", token_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens& t)
+ {
+ built_in_type (
+ t,
+ L"::xsd::cxx::tree::nmtokens< " + char_type + L", ",
+ simple_type_,
+ nmtoken_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name& t)
+ {
+ name_ = built_in_type (
+ t, L"::xsd::cxx::tree::name< " + char_type + L", ", token_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName& t)
+ {
+ ncname_ = built_in_type (
+ t, L"::xsd::cxx::tree::ncname< " + char_type + L", ", name_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Language& t)
+ {
+ built_in_type (
+ t, L"::xsd::cxx::tree::language< " + char_type + L", ", token_);
+
+ os << endl;
+ }
+
+ // ID/IDREF.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Id& t)
+ {
+ os << "// ID/IDREF." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (
+ t, L"::xsd::cxx::tree::id< " + char_type + L", ", ncname_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRef& t)
+ {
+ idref_ = built_in_type (
+ t, L"::xsd::cxx::tree::idref< " + char_type + L", ", ncname_, type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs& t)
+ {
+ built_in_type (
+ t,
+ L"::xsd::cxx::tree::idrefs< " + char_type + L", ",
+ simple_type_,
+ idref_);
+
+ os << endl;
+ }
+
+
+ // URI.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::AnyURI& t)
+ {
+ os << "// URI." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ uri_ = built_in_type (
+ t, L"::xsd::cxx::tree::uri< " + char_type + L", ", simple_type_);
+
+ os << endl;
+ }
+
+ // Qualified name.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::QName& t)
+ {
+ os << "// Qualified name." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (
+ t,
+ L"::xsd::cxx::tree::qname< " + char_type + L", ",
+ simple_type_,
+ uri_,
+ ncname_);
+
+ os << endl;
+ }
+
+ // Binary.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary& t)
+ {
+ os << "// Binary." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Binary buffer type." << endl
+ << " */" << endl;
+
+ gen_typedef (xs_ns ().context().get<String> ("buffer"),
+ L"::xsd::cxx::tree::buffer< " + char_type + L" >");
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (
+ t,
+ L"::xsd::cxx::tree::base64_binary< " + char_type + L", ",
+ simple_type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary& t)
+ {
+ built_in_type (
+ t,
+ L"::xsd::cxx::tree::hex_binary< " + char_type + L", ",
+ simple_type_);
+
+ os << endl;
+ }
+
+
+ // Date/time.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Date& t)
+ {
+ os << "// Date/time." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Time zone type." << endl
+ << " */" << endl;
+
+ gen_typedef (xs_ns ().context().get<String> ("time-zone"),
+ "::xsd::cxx::tree::time_zone");
+
+ if (doxygen)
+ os << endl;
+
+ built_in_type (
+ t, L"::xsd::cxx::tree::date< " + char_type + L", ", simple_type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::DateTime& t)
+ {
+ built_in_type (
+ t,
+ L"::xsd::cxx::tree::date_time< " + char_type + L", ",
+ simple_type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Duration& t)
+ {
+ built_in_type (
+ t,
+ L"::xsd::cxx::tree::duration< " + char_type + L", ",
+ simple_type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Day& t)
+ {
+ built_in_type (
+ t, L"::xsd::cxx::tree::gday< " + char_type + L", ", simple_type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Month& t)
+ {
+ built_in_type (
+ t, L"::xsd::cxx::tree::gmonth< " + char_type + L", ", simple_type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::MonthDay& t)
+ {
+ built_in_type (
+ t,
+ L"::xsd::cxx::tree::gmonth_day< " + char_type + L", ",
+ simple_type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Year& t)
+ {
+ built_in_type (
+ t, L"::xsd::cxx::tree::gyear< " + char_type + L", ", simple_type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::YearMonth& t)
+ {
+ built_in_type (
+ t,
+ L"::xsd::cxx::tree::gyear_month< " + char_type + L", ",
+ simple_type_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Time& t)
+ {
+ built_in_type (
+ t, L"::xsd::cxx::tree::time< " + char_type + L", ", simple_type_);
+
+ os << endl;
+ }
+
+ // Entity.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entity& t)
+ {
+ os << "// Entity." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl;
+
+ entity_ = built_in_type (
+ t, L"::xsd::cxx::tree::entity< " + char_type + L", ", ncname_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entities& t)
+ {
+ built_in_type (
+ t,
+ L"::xsd::cxx::tree::entities< " + char_type + L", ",
+ simple_type_,
+ entity_);
+
+ os << endl;
+ }
+
+ virtual void
+ post (SemanticGraph::Namespace& n)
+ {
+ SemanticGraph::Context& c (xs_ns ().context());
+
+ bool parsing (!options.suppress_parsing ());
+ bool serialization (options.generate_serialization ());
+ bool element_map (options.generate_element_map ());
+
+ {
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Content order sequence entry." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("content-order"),
+ "::xsd::cxx::tree::content_order");
+ }
+
+ if (options.generate_element_type ())
+ {
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Base class for element types." << endl
+ << " */" << endl;
+ else
+ os << "// Base class for element types." << endl
+ << "//" << endl;
+
+ gen_typedef (
+ c.get<String> ("element-type"),
+ L"::xsd::cxx::tree::element_type< " + char_type + L", ",
+ type_);
+
+ os << endl;
+ }
+
+ if (element_map)
+ {
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Root element map." << endl
+ << " */" << endl;
+ else
+ os << "// Root element map." << endl
+ << "//" << endl;
+
+ gen_typedef (
+ c.get<String> ("element-map"),
+ L"::xsd::cxx::tree::element_map< " + char_type + L", ",
+ type_);
+
+ os << endl;
+ }
+
+ if (serialization)
+ {
+ os << "// Namespace information and list stream. Used in" << endl
+ << "// serialization functions." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Namespace serialization information." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("namespace-info"),
+ L"::xsd::cxx::xml::dom::namespace_info< " + char_type + L" >");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Namespace serialization information map." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("namespace-infomap"),
+ L"::xsd::cxx::xml::dom::namespace_infomap< " +
+ char_type + L" >");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief List serialization stream." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("list-stream"),
+ L"::xsd::cxx::tree::list_stream< " + char_type + L" >");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Serialization wrapper for the %double type." << endl
+ << " */" << endl;
+
+ // Do not export as_double and as_decimal since they are already
+ // instantiated.
+ //
+ gen_typedef (c.get<String> ("as-double"),
+ L"::xsd::cxx::tree::as_double< ",
+ double_,
+ "",
+ "",
+ false);
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Serialization wrapper for the %decimal type." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("as-decimal"),
+ L"::xsd::cxx::tree::as_decimal< ",
+ decimal_,
+ "",
+ "",
+ false);
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Simple type facet." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("facet"), "::xsd::cxx::tree::facet");
+
+ os << endl;
+ }
+
+ //@@ Can't change names of ostream/istream since they are
+ // templates.
+ //
+ if (!options.generate_insertion ().empty ())
+ {
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Data representation output stream template." << endl
+ << " */" << endl;
+ else
+ os << "// Data representation output stream template." << endl
+ << "//" << endl;
+
+ os << "using ::xsd::cxx::tree::ostream;"
+ << endl;
+ }
+
+ if (!options.generate_extraction ().empty ())
+ {
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Data representation input stream template." << endl
+ << " */" << endl;
+ else
+ os << "// Data representation input stream template." << endl
+ << "//" << endl;
+
+ os << "using ::xsd::cxx::tree::istream;"
+ << endl;
+ }
+
+ os << "// Flags and properties." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Parsing and serialization flags." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("flags"), "::xsd::cxx::tree::flags");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Parsing properties." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("properties"),
+ L"::xsd::cxx::tree::properties< " + char_type + L" >");
+ os << endl;
+
+
+ //
+ //
+ if (parsing || serialization)
+ {
+ os << "// Parsing/serialization diagnostics." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Error severity." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("severity"),
+ "::xsd::cxx::tree::severity");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Error condition." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("error"),
+ L"::xsd::cxx::tree::error< " + char_type + L" >");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief List of %error conditions." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("diagnostics"),
+ L"::xsd::cxx::tree::diagnostics< " + char_type + L" >");
+ os << endl;
+ }
+
+ //
+ //
+ os << "// Exceptions." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Root of the C++/Tree %exception hierarchy." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("exception"),
+ L"::xsd::cxx::tree::exception< " + char_type + L" >");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that the size argument exceeds" <<
+ endl
+ << " * the capacity argument." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("bounds"),
+ L"::xsd::cxx::tree::bounds< " + char_type + L" >");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that a duplicate ID value" <<
+ endl
+ << " * was encountered in the object model." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("duplicate-id"),
+ L"::xsd::cxx::tree::duplicate_id< " + char_type + L" >");
+
+ if (parsing)
+ {
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating a parsing failure." << endl
+ << " */" << endl;
+
+ gen_typedef (c.get<String> ("parsing"),
+ L"::xsd::cxx::tree::parsing< " + char_type + L" >");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that an expected element" <<
+ endl
+ << " * was not encountered." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("expected-element"),
+ L"::xsd::cxx::tree::expected_element< " + char_type + L" >");
+ }
+
+ if (parsing || serialization)
+ {
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that an unexpected " <<
+ "element" << endl
+ << " * was encountered." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("unexpected-element"),
+ L"::xsd::cxx::tree::unexpected_element< " + char_type + L" >");
+ }
+
+ if (parsing)
+ {
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that an expected " <<
+ "attribute" << endl
+ << " * was not encountered." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("expected-attribute"),
+ L"::xsd::cxx::tree::expected_attribute< " + char_type + L" >");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that an unexpected " <<
+ "enumerator" << endl
+ << " * was encountered." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("unexpected-enumerator"),
+ L"::xsd::cxx::tree::unexpected_enumerator< " + char_type + L" >");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that the text content " <<
+ "was" << endl
+ << " * expected for an element." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("expected-text-content"),
+ L"::xsd::cxx::tree::expected_text_content< " + char_type + L" >");
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that a prefix-namespace" <<
+ endl
+ << " * mapping was not provided." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("no-prefix-mapping"),
+ L"::xsd::cxx::tree::no_prefix_mapping< " + char_type + L" >");
+ }
+
+ if (options.generate_polymorphic ())
+ {
+ if (parsing || serialization)
+ {
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that the type " <<
+ "information" << endl
+ << " * is not available for a type." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("no-type-info"),
+ L"::xsd::cxx::tree::no_type_info< " + char_type + L" >");
+ }
+
+ if (parsing)
+ {
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that the types are not" <<
+ endl
+ << " * related by inheritance." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("not-derived"),
+ L"::xsd::cxx::tree::not_derived< " + char_type + L" >");
+ }
+ }
+
+ if (element_map)
+ {
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating that parsing or " <<
+ "serialization" << endl
+ << " * information is not available for an element." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("no-element-info"),
+ L"::xsd::cxx::tree::no_element_info< " + char_type + L" >");
+ }
+
+ if (serialization)
+ {
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Exception indicating a serialization " <<
+ "failure." << endl
+ << " */" << endl;
+
+ gen_typedef (
+ c.get<String> ("serialization"),
+ L"::xsd::cxx::tree::serialization< " + char_type + L" >");
+ }
+
+ os << endl;
+
+ if (parsing || serialization)
+ {
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Error handler callback interface." << endl
+ << " */" << endl;
+ else
+ os << "// Error handler callback interface." << endl
+ << "//" << endl;
+
+ gen_typedef (
+ c.get<String> ("error-handler"),
+ L"::xsd::cxx::xml::error_handler< " + char_type + L" >");
+
+ os << endl;
+ }
+
+ if (parsing || serialization)
+ {
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief DOM interaction." << endl
+ << " */" << endl;
+ else
+ os << "// DOM interaction." << endl
+ << "//" << endl;
+
+ os << "namespace dom"
+ << "{";
+
+ // @@ Disregarding current naming convention by using the
+ // fixed name (even in C++11, template alias is not yet
+ // widely supported).
+ //
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Automatic pointer for DOMDocument." << endl
+ << " */" << endl;
+ else
+ os << "// Automatic pointer for DOMDocument." << endl
+ << "//" << endl;
+
+ if (std >= cxx_version::cxx11)
+ os << "using ::xsd::cxx::xml::dom::unique_ptr;";
+ else
+ os << "using ::xsd::cxx::xml::dom::auto_ptr;";
+
+ os << endl;
+
+ if (parsing)
+ {
+ if (!generate_xml_schema)
+ {
+ String g (L"XSD_CXX_TREE_TREE_NODE_KEY" + ns_name (n));
+
+ std::transform (g.begin (), g.end(), g.begin (), upcase);
+ g = escape (g); // Make it a C++ id.
+
+ os << "#ifndef " << g << endl
+ << "#define " << g << endl;
+ }
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief DOM user data key for back pointers to " <<
+ "tree nodes." << endl
+ << " */" << endl;
+ else
+ os << "// DOM user data key for back pointers to tree nodes." << endl
+ << "//" << endl;
+
+ os << "const XMLCh* const " << c.get<String> ("tree-node-key") <<
+ " = ::xsd::cxx::tree::user_data_keys::node;";
+
+ if (!generate_xml_schema)
+ os << "#endif" << endl;
+ }
+
+ os << "}"; // namespace dom
+ }
+
+ if (element_map)
+ {
+ if (doxygen)
+ os << "//@cond" << endl
+ << endl;
+
+ if (!generate_xml_schema)
+ {
+ String g (L"XSD_CXX_TREE_ELEMENT_MAP_INIT" + ns_name (n));
+
+ std::transform (g.begin (), g.end(), g.begin (), upcase);
+ g = escape (g); // Make it a C++ id.
+
+ os << "#ifndef " << g << endl
+ << "#define " << g << endl;
+ }
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::element_map_init< " <<
+ char_type << ", " << type_ << " >" << endl
+ << "_xsd_element_map_init;";
+
+ if (!generate_xml_schema)
+ os << "#endif" << endl;
+
+ if (doxygen)
+ os << endl
+ << "//@endcond" << endl;
+ }
+
+ Namespace::post (n);
+
+ // Generate exports.
+ //
+ if (export_)
+ {
+ StringSet ns_set;
+
+ for (StringList::const_iterator i (exports_.begin ());
+ i != exports_.end (); ++i)
+ {
+ String const& e (*i);
+
+ // 12 is to skip ::xsd::cxx::
+ //
+ ns_set.insert (String (e, 12, e.rfind (':', e.find ('<')) - 13));
+ }
+
+ os << "#ifndef XSD_NO_EXPORT" << endl
+ << endl
+ << "namespace xsd"
+ << "{"
+ << "namespace cxx"
+ << "{";
+
+ for (StringSet::const_iterator i (ns_set.begin ());
+ i != ns_set.end (); ++i)
+ {
+ String const& ns (*i);
+ String prefix (L"::xsd::cxx::" + ns);
+
+ size_t n (1);
+ for (size_t b (0), e (ns.find (':')); ; n++)
+ {
+ os << "namespace " << String (ns, b, e)
+ << "{";
+
+ if (e == String::npos)
+ break;
+
+ b = e + 2;
+ e = ns.find (':', b);
+ }
+
+ for (StringList::const_iterator i (exports_.begin ());
+ i != exports_.end (); ++i)
+ {
+ String const& e (*i);
+ String ens (e, 12, e.rfind (':', e.find ('<')) - 13);
+
+ if (ns == ens)
+ {
+ String type (e, e.rfind (':', e.find ('<')) + 1);
+ os << "template class " << type_exp << type << ";";
+ }
+ }
+
+ while (n--)
+ os << "}";
+ }
+
+ os << "}" // cxx
+ << "}" // xsd
+ << "#endif // XSD_NO_EXPORT" << endl
+ << endl;
+ }
+ }
+
+ private:
+ typedef std::set<String> StringSet;
+ typedef std::vector<String> StringList;
+
+ bool export_;
+ StringList exports_;
+ StringSet exports_set_;
+ String xs_ns_;
+
+ Traversal::Names names_;
+
+ String type_;
+ String simple_type_;
+ String string_;
+ String norm_string_;
+ String token_;
+ String nmtoken_;
+ String name_;
+ String ncname_;
+ String idref_;
+ String uri_;
+ String entity_;
+
+ String double_;
+ String decimal_;
+ };
+ }
+}
+
+#endif // XSD_CXX_TREE_FUNDAMENTAL_HEADER_HXX
diff --git a/xsd/cxx/tree/generator.cxx b/xsd/cxx/tree/generator.cxx
new file mode 100644
index 0000000..9782b4d
--- /dev/null
+++ b/xsd/cxx/tree/generator.cxx
@@ -0,0 +1,1268 @@
+// file : xsd/cxx/tree/generator.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <vector>
+#include <algorithm>
+#include <iostream>
+#include <fstream>
+
+#include <libcutl/re.hxx>
+#include <libcutl/shared-ptr.hxx>
+
+#include <libcutl/compiler/code-stream.hxx>
+#include <libcutl/compiler/cxx-indenter.hxx>
+#include <libcutl/compiler/sloc-counter.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/generators/dependencies.hxx>
+
+#include <xsd/version.hxx>
+
+#include <xsd/cxx/tree/generator.hxx>
+
+#include <xsd/cxx/tree/elements.hxx>
+
+#include <xsd/cxx/tree/counter.hxx>
+#include <xsd/cxx/tree/validator.hxx>
+#include <xsd/cxx/tree/name-processor.hxx>
+#include <xsd/cxx/tree/order-processor.hxx>
+#include <xsd/cxx/tree/polymorphism-processor.hxx>
+
+#include <xsd/cxx/tree/tree-forward.hxx>
+#include <xsd/cxx/tree/tree-header.hxx>
+#include <xsd/cxx/tree/tree-inline.hxx>
+#include <xsd/cxx/tree/tree-source.hxx>
+
+#include <xsd/cxx/tree/parser-header.hxx>
+#include <xsd/cxx/tree/parser-source.hxx>
+
+#include <xsd/cxx/tree/stream-header.hxx>
+#include <xsd/cxx/tree/stream-source.hxx>
+
+#include <xsd/cxx/tree/serialization-header.hxx>
+#include <xsd/cxx/tree/serialization-source.hxx>
+
+#include <xsd/cxx/tree/stream-insertion-header.hxx>
+#include <xsd/cxx/tree/stream-insertion-source.hxx>
+#include <xsd/cxx/tree/stream-extraction-source.hxx>
+
+#include <xsd/cxx/tree/options.hxx>
+
+using namespace std;
+using namespace cutl;
+using namespace XSDFrontend::SemanticGraph;
+
+//
+//
+typedef std::wostream WideOutputStream;
+
+typedef std::wifstream WideInputFileStream;
+typedef std::wofstream WideOutputFileStream;
+
+namespace CXX
+{
+ namespace
+ {
+ char const copyright_gpl[] =
+ "// Copyright (c) " XSD_COPYRIGHT ".\n"
+ "//\n"
+ "// This program was generated by CodeSynthesis XSD, an XML Schema to\n"
+ "// C++ data binding compiler.\n"
+ "//\n"
+ "// This program is free software; you can redistribute it and/or modify\n"
+ "// it under the terms of the GNU General Public License version 2 as\n"
+ "// published by the Free Software Foundation.\n"
+ "//\n"
+ "// This program is distributed in the hope that it will be useful,\n"
+ "// but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+ "// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+ "// GNU General Public License for more details.\n"
+ "//\n"
+ "// You should have received a copy of the GNU General Public License\n"
+ "// along with this program; if not, write to the Free Software\n"
+ "// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n"
+ "//\n"
+ "// In addition, as a special exception, Code Synthesis gives permission\n"
+ "// to link this program with the Xerces-C++ library (or with modified\n"
+ "// versions of Xerces-C++ that use the same license as Xerces-C++), and\n"
+ "// distribute linked combinations including the two. You must obey the GNU\n"
+ "// General Public License version 2 in all respects for all of the code\n"
+ "// used other than Xerces-C++. If you modify this copy of the program, you\n"
+ "// may extend this exception to your version of the program, but you are\n"
+ "// not obligated to do so. If you do not wish to do so, delete this\n"
+ "// exception statement from your version.\n"
+ "//\n"
+ "// Furthermore, Code Synthesis makes a special exception for the Free/Libre\n"
+ "// and Open Source Software (FLOSS) which is described in the accompanying\n"
+ "// FLOSSE file.\n"
+ "//\n\n";
+
+ char const copyright_proprietary[] =
+ "// Copyright (c) " XSD_COPYRIGHT ".\n"
+ "//\n"
+ "// This program was generated by CodeSynthesis XSD, an XML Schema\n"
+ "// to C++ data binding compiler, in the Proprietary License mode.\n"
+ "// You should have received a proprietary license from Code Synthesis\n"
+ "// prior to generating this code. See the license text for conditions.\n"
+ "//\n\n";
+ }
+
+ void Tree::Generator::
+ usage ()
+ {
+ CXX::Tree::options::print_usage (wcout);
+ CXX::options::print_usage (wcout);
+ }
+
+ namespace
+ {
+ void
+ open (WideInputFileStream& ifs, NarrowString const& path)
+ {
+ try
+ {
+ Path fs_path (path);
+ ifs.open (fs_path.string ().c_str (),
+ std::ios_base::in | std::ios_base::binary);
+
+ if (!ifs.is_open ())
+ {
+ wcerr << path.c_str () << ": error: unable to open in read mode"
+ << endl;
+
+ throw Tree::Generator::Failed ();
+ }
+ }
+ catch (InvalidPath const&)
+ {
+ wcerr << "error: '" << path.c_str () << "' is not a valid "
+ << "filesystem path" << endl;
+
+ throw Tree::Generator::Failed ();
+ }
+ }
+
+ void
+ append (WideOutputFileStream& os,
+ NarrowString const& path,
+ WideInputFileStream& default_is)
+ {
+ using std::ios_base;
+
+ if (path)
+ {
+ WideInputFileStream is;
+ open (is, path);
+ os << is.rdbuf ();
+ }
+ else if (default_is.is_open ())
+ {
+ os << default_is.rdbuf ();
+ default_is.seekg (0, ios_base::beg);
+ }
+ }
+
+ void
+ append (WideOutputFileStream& os,
+ NarrowStrings const& primary,
+ NarrowStrings const& def)
+ {
+ NarrowStrings const& v (primary.empty () ? def : primary);
+
+ for (NarrowStrings::const_iterator i (v.begin ()), e (v.end ());
+ i != e; ++i)
+ {
+ os << i->c_str () << endl;
+ }
+ }
+ }
+
+
+ size_t Tree::Generator::
+ generate (Tree::options const& ops,
+ Schema& schema,
+ Path const& file_path,
+ bool fpt,
+ StringLiteralMap const& string_literal_map,
+ const WarningSet& disabled_warnings,
+ FileList& file_list,
+ AutoUnlinks& unlinks)
+ {
+ using cutl::shared_ptr;
+ typedef cutl::re::regexsub Regex;
+
+ typedef vector<Path> Paths;
+ typedef vector<shared_ptr<WideOutputFileStream> > WideOutputFileStreams;
+
+ try
+ {
+ // Do option validation.
+ //
+ if (ops.parts () < 1)
+ {
+ wcerr << "error: invalid value for option --parts: " <<
+ ops.parts () << endl;
+ throw Failed ();
+ }
+
+ // Get counts.
+ //
+ Counts counts;
+ {
+ Counter counter;
+ counts = counter.count (ops, schema, file_path);
+
+ /*
+ wcerr << "global type count: " << counts.global_types << endl;
+ wcerr << "global element count: " << counts.global_elements << endl;
+ wcerr << "generated global element count: " <<
+ counts.generated_global_elements << endl;
+
+ wcerr << "total complexity: " << counts.complexity_total << endl;
+ wcerr << "complexity vector size: " << counts.complexity.size ()
+ << endl;
+ */
+ }
+
+ // Evaluate the graph for possibility of generating something useful.
+ //
+ {
+ Validator validator;
+ if (!validator.validate (
+ ops, schema, file_path, disabled_warnings, counts))
+ throw Failed ();
+ }
+
+ bool gen_cxx (!ops.generate_dep_only () && !ops.file_list_only ());
+
+ // Process ordered types.
+ //
+ if (gen_cxx)
+ {
+ OrderProcessor proc;
+ if (!proc.process (ops, schema, file_path))
+ throw Failed ();
+ }
+
+ // Process names.
+ //
+ if (gen_cxx)
+ {
+ NameProcessor proc;
+ if (!proc.process (ops, schema, file_path, string_literal_map))
+ throw Failed ();
+ }
+
+ // Process polymorphic types.
+ //
+ if (gen_cxx &&
+ ops.generate_polymorphic () &&
+ !ops.polymorphic_type_all ())
+ {
+ PolymorphismProcessor proc;
+ if (!proc.process (ops, schema, file_path, disabled_warnings))
+ throw Failed ();
+ }
+
+ // Parts.
+ //
+ size_t parts (ops.parts ());
+ size_t units (counts.global_types + counts.generated_global_elements);
+ size_t units_per_part (units / parts);
+
+ if (parts != 1 && units_per_part < 1)
+ {
+ wcerr << "error: too many parts specified: " << parts << endl;
+ throw Failed ();
+ }
+
+ size_t complexity_per_part (counts.complexity_total / parts);
+
+
+ NarrowString parts_suffix (ops.parts_suffix ());
+
+ //
+ //
+ bool generate_xml_schema (ops.generate_xml_schema ());
+
+ // We could be compiling several schemas at once in which case
+ // handling of the --generate-xml-schema option gets tricky: we
+ // will need to rely on the presence of the --extern-xml-schema
+ // to tell us which (fake) schema file corresponds to XML Schema.
+ //
+ if (generate_xml_schema)
+ {
+ if (NarrowString name = ops.extern_xml_schema ())
+ {
+ if (file_path.string () != name)
+ generate_xml_schema = false;
+ }
+ }
+
+ bool header (true);
+ bool inline_ (ops.generate_inline () && !generate_xml_schema);
+ bool forward (ops.generate_forward () && !generate_xml_schema);
+ bool source (!generate_xml_schema);
+ bool gen_dep ((ops.generate_dep () || ops.generate_dep_only ()) &&
+ !generate_xml_schema);
+
+ if (ops.generate_dep_only () && generate_xml_schema)
+ {
+ wcerr << "error: no dependency information can be generated for "
+ "XML Schema header" << endl;
+ throw Failed ();
+ }
+
+ if (gen_dep && fpt)
+ {
+ wcerr << "error: dependency generation not support in the " <<
+ "file-per-type mode" << endl;
+ throw Failed ();
+ }
+
+ // Generate code.
+ //
+ NarrowString name (file_path.leaf ().string ());
+
+ NarrowString hxx_suffix (ops.hxx_suffix ());
+ NarrowString ixx_suffix (ops.ixx_suffix ());
+ NarrowString cxx_suffix (ops.cxx_suffix ());
+ NarrowString fwd_suffix (ops.fwd_suffix ());
+ NarrowString dep_suffix (ops.dep_suffix ());
+
+ Regex hxx_expr (ops.hxx_regex ().empty ()
+ ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + hxx_suffix + "#"
+ : ops.hxx_regex ());
+
+ Regex ixx_expr (ops.ixx_regex ().empty ()
+ ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + ixx_suffix + "#"
+ : ops.ixx_regex ());
+
+ Regex cxx_expr (ops.cxx_regex ().empty ()
+ ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + cxx_suffix + "#"
+ : ops.cxx_regex ());
+
+ Regex fwd_expr (ops.fwd_regex ().empty ()
+ ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + fwd_suffix + "#"
+ : ops.fwd_regex ());
+
+ // @@ This will blow up if --dep-file value contains backslashes (e.g.,
+ // it's a Windows path).
+ //
+ Regex dep_expr (
+ ops.dep_regex_specified () ? ops.dep_regex () :
+ ops.dep_file_specified () ? "#.+#" + ops.dep_file () + "#" :
+ "#^(.+?)(\\.[^./\\\\]+)?$#$1" + dep_suffix + "#");
+
+ if (header && !hxx_expr.match (name))
+ {
+ wcerr << "error: header expression '" <<
+ hxx_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ if (inline_ && !ixx_expr.match (name))
+ {
+ wcerr << "error: inline expression '" <<
+ ixx_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ if (source && parts == 1 && !cxx_expr.match (name))
+ {
+ wcerr << "error: source expression '" <<
+ cxx_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ if (forward && !fwd_expr.match (name))
+ {
+ wcerr << "error: forward expression '" <<
+ fwd_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ if (gen_dep && !dep_expr.match (name))
+ {
+ wcerr << "error: dependency expression '" <<
+ dep_expr.regex ().str ().c_str () << "' does not match '" <<
+ name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ NarrowString hxx_name (header ? hxx_expr.replace (name) : NarrowString ());
+ NarrowString ixx_name (inline_ ? ixx_expr.replace (name) : NarrowString ());
+ NarrowString fwd_name (forward ? fwd_expr.replace (name) : NarrowString ());
+ NarrowString dep_name (gen_dep ? dep_expr.replace (name) : NarrowString ());
+
+ Path hxx_path (hxx_name);
+ Path ixx_path (ixx_name);
+ Path fwd_path (fwd_name);
+ Path dep_path (dep_name != "-" ? dep_name : NarrowString ());
+ Paths cxx_paths;
+
+ if (source)
+ {
+ if (parts > 1)
+ {
+ for (size_t i (0); i < parts; ++i)
+ {
+ std::ostringstream os;
+ os << i;
+
+ Regex expr (
+ "#^(.+?)(\\.[^./\\\\]+)?$#$1" + parts_suffix + os.str () + "$2#");
+
+ NarrowString part_name (expr.replace (name));
+
+ if (!cxx_expr.match (part_name))
+ {
+ wcerr << "error: source expression '" <<
+ cxx_expr.regex ().str ().c_str () << "' does not match '" <<
+ part_name.c_str () << "'" << endl;
+ throw Failed ();
+ }
+
+ cxx_paths.push_back (Path (cxx_expr.replace (part_name)));
+ }
+ }
+ else
+ cxx_paths.push_back (Path (cxx_expr.replace (name)));
+ }
+
+ Path out_dir;
+
+ if (NarrowString dir = ops.output_dir ())
+ {
+ try
+ {
+ out_dir = Path (dir);
+ }
+ catch (InvalidPath const&)
+ {
+ wcerr << dir.c_str () << ": error: invalid path" << endl;
+ throw Failed ();
+ }
+ }
+
+ if (fpt && !generate_xml_schema)
+ {
+ // In the file-per-type mode the schema files are always local
+ // unless the user added the directory so that we propagate this
+ // to the output files.
+ //
+ Path fpt_dir (file_path.directory ());
+
+ if (!fpt_dir.empty ())
+ out_dir /= fpt_dir;
+ }
+
+ if (!out_dir.empty ())
+ {
+ if (!hxx_path.empty ()) hxx_path = out_dir / hxx_path;
+ if (!ixx_path.empty ()) ixx_path = out_dir / ixx_path;
+ if (!fwd_path.empty ()) fwd_path = out_dir / fwd_path;
+ if (!dep_path.empty () &&
+ !dep_path.absolute ()) dep_path = out_dir / dep_path;
+
+ for (Paths::iterator i (cxx_paths.begin ());
+ i != cxx_paths.end (); ++i)
+ *i = out_dir / *i;
+ }
+
+ //
+ //
+ WideOutputFileStream hxx;
+ WideOutputFileStream ixx;
+ WideOutputFileStream fwd;
+ WideOutputFileStream depf; // See dep below.
+ WideOutputFileStreams cxx;
+
+ // DEP
+ //
+ if (gen_dep)
+ {
+ if (!dep_path.empty ())
+ {
+ depf.open (dep_path.string ().c_str (), ios_base::out);
+
+ if (!depf.is_open ())
+ {
+ wcerr << dep_path << ": error: unable to open in write mode"
+ << endl;
+ throw Failed ();
+ }
+
+ unlinks.add (dep_path);
+ }
+
+ // Note: not adding to file_list.
+ }
+
+ WideOutputStream& dep (gen_dep && !dep_path.empty () ? depf : wcout);
+
+ // FWD
+ //
+ if (forward)
+ {
+ if (gen_cxx)
+ {
+ fwd.open (fwd_path.string ().c_str (), ios_base::out);
+
+ if (!fwd.is_open ())
+ {
+ wcerr << fwd_path << ": error: unable to open in write mode" << endl;
+ throw Failed ();
+ }
+
+ unlinks.add (fwd_path);
+ }
+
+ file_list.push_back (fwd_path.string ());
+ }
+
+ // HXX
+ //
+ if (header)
+ {
+ if (gen_cxx)
+ {
+ hxx.open (hxx_path.string ().c_str (), ios_base::out);
+
+ if (!hxx.is_open ())
+ {
+ wcerr << hxx_path << ": error: unable to open in write mode" << endl;
+ throw Failed ();
+ }
+
+ unlinks.add (hxx_path);
+ }
+
+ file_list.push_back (hxx_path.string ());
+ }
+
+ // IXX
+ //
+ if (inline_)
+ {
+ if (gen_cxx)
+ {
+ ixx.open (ixx_path.string ().c_str (), ios_base::out);
+
+ if (!ixx.is_open ())
+ {
+ wcerr << ixx_path << ": error: unable to open in write mode" << endl;
+ throw Failed ();
+ }
+
+ unlinks.add (ixx_path);
+ }
+
+ file_list.push_back (ixx_path.string ());
+ }
+
+ // CXX
+ //
+ if (source)
+ {
+ for (Paths::iterator i (cxx_paths.begin ());
+ i != cxx_paths.end (); ++i)
+ {
+ if (gen_cxx)
+ {
+ shared_ptr<WideOutputFileStream> s (
+ new (shared) WideOutputFileStream (
+ i->string ().c_str (), ios_base::out));
+
+ if (!s->is_open ())
+ {
+ wcerr << *i << ": error: unable to open in write mode" << endl;
+ throw Failed ();
+ }
+
+ cxx.push_back (s);
+ unlinks.add (*i);
+ }
+
+ file_list.push_back (i->string ());
+ }
+ }
+
+ // Print copyright and license.
+ //
+ char const* copyright (
+ ops.proprietary_license () ? copyright_proprietary : copyright_gpl);
+
+ if (gen_cxx && header)
+ hxx << copyright;
+
+ if (gen_cxx && forward)
+ fwd << copyright;
+
+ if (ops.generate_doxygen ())
+ {
+ // Use native path format.
+ //
+ hxx << "/**" << endl
+ << " * @file" << endl
+ << " * @brief Generated from " << name.c_str () << "." << endl
+ << " */" << endl
+ << endl;
+
+ }
+
+ if (gen_cxx && inline_)
+ ixx << copyright;
+
+ if (gen_cxx && source)
+ {
+ for (WideOutputFileStreams::iterator i (cxx.begin ());
+ i != cxx.end (); ++i)
+ **i << copyright;
+ }
+
+
+ // Prologue.
+ //
+ WideInputFileStream prologue;
+ {
+ NarrowString name (ops.prologue_file ());
+
+ if (name)
+ open (prologue, name);
+ }
+
+ // Epilogue.
+ //
+ WideInputFileStream epilogue;
+ {
+ NarrowString name (ops.epilogue_file ());
+
+ if (name)
+ open (epilogue, name);
+ }
+
+ // SLOC counter.
+ //
+ size_t sloc_total (0);
+ bool show_sloc (ops.show_sloc ());
+
+ typedef
+ compiler::ostream_filter<compiler::cxx_indenter, wchar_t>
+ ind_filter;
+
+ typedef
+ compiler::ostream_filter<compiler::sloc_counter, wchar_t>
+ sloc_filter;
+
+ //
+ //
+ Regex guard_expr ("/([a-z])([A-Z])/$1_$2/"); // Split words.
+ NarrowString guard_prefix (ops.guard_prefix ());
+
+ if (!guard_prefix)
+ guard_prefix = file_path.directory ().string ();
+
+ if (guard_prefix)
+ guard_prefix += '_';
+
+ // DEP
+ //
+ if (gen_dep)
+ {
+ NarrowString target;
+ NarrowStrings const& ts (ops.dep_target ());
+
+ if (!ts.empty ())
+ {
+ for (NarrowStrings::const_iterator i (ts.begin ());
+ i != ts.end (); ++i)
+ target += (target.empty () ? "" : " \\\n") + *i;
+ }
+ else
+ {
+ target = hxx_path.string ();
+
+ if (forward)
+ target += " \\\n" + fwd_path.string ();
+
+ if (inline_)
+ target += " \\\n" + ixx_path.string ();
+
+ for (Paths::iterator i (cxx_paths.begin ());
+ i != cxx_paths.end (); ++i)
+ target += " \\\n" + i->string ();
+
+ if (!dep_path.empty ())
+ target += " \\\n" + dep_path.string ();
+ }
+
+ dep << target.c_str () << ':';
+
+ XSDFrontend::Generators::Dependencies gen;
+ Paths prq (gen.generate (schema, file_path));
+
+ for (Paths::iterator i (prq.begin ()); i != prq.end (); ++i)
+ dep << " \\" << endl
+ << " " << *i;
+
+ dep << endl;
+
+ // If requested, generate phony rules for included/imported schemas
+ // but not the main file which is the first in the list.
+ //
+ if (ops.dep_phony () && prq.size () > 1)
+ {
+ for (Paths::iterator i (prq.begin () + 1); i != prq.end (); ++i)
+ dep << endl
+ << *i << ':' << endl;
+ }
+ }
+
+ // FWD
+ //
+ if (gen_cxx && forward)
+ {
+ Context ctx (fwd,
+ schema,
+ file_path,
+ ops,
+ counts,
+ generate_xml_schema,
+ &string_literal_map,
+ &fwd_expr,
+ &hxx_expr,
+ &ixx_expr);
+
+ sloc_filter sloc (fwd);
+
+ // Guard
+ //
+ String guard (guard_expr.replace (guard_prefix + fwd_name));
+ guard = ctx.escape (guard); // make a c++ id
+ std::transform (guard.begin (), guard.end(), guard.begin (), upcase);
+
+ fwd << "#ifndef " << guard << endl
+ << "#define " << guard << endl
+ << endl;
+
+ if (ctx.std >= cxx_version::cxx11)
+ {
+ fwd << "#ifndef XSD_CXX11" << endl
+ << "#define XSD_CXX11" << endl
+ << "#endif" << endl
+ << endl;
+ }
+
+ if (ctx.char_type == L"char")
+ {
+ fwd << "#ifndef XSD_USE_CHAR" << endl
+ << "#define XSD_USE_CHAR" << endl
+ << "#endif" << endl
+ << endl;
+
+ fwd << "#ifndef XSD_CXX_TREE_USE_CHAR" << endl
+ << "#define XSD_CXX_TREE_USE_CHAR" << endl
+ << "#endif" << endl
+ << endl;
+ }
+ else if (ctx.char_type == L"wchar_t")
+ {
+ fwd << "#ifndef XSD_USE_WCHAR" << endl
+ << "#define XSD_USE_WCHAR" << endl
+ << "#endif" << endl
+ << endl;
+
+ fwd << "#ifndef XSD_CXX_TREE_USE_WCHAR" << endl
+ << "#define XSD_CXX_TREE_USE_WCHAR" << endl
+ << "#endif" << endl
+ << endl;
+ }
+
+ // Copy prologue.
+ //
+ fwd << "// Begin prologue." << endl
+ << "//" << endl;
+
+ append (fwd, ops.fwd_prologue (), ops.prologue ());
+ append (fwd, ops.fwd_prologue_file (), prologue);
+
+ fwd << "//" << endl
+ << "// End prologue." << endl
+ << endl;
+
+ // Version check.
+ //
+ fwd << "#include <xsd/cxx/version.hxx>" << endl
+ << endl
+ << "#if (LIBXSD_VERSION != " << XSD_VERSION << "L)" << endl
+ << "#error XSD runtime version mismatch" << endl
+ << "#endif" << endl
+ << endl;
+
+ fwd << "#include <xsd/cxx/pre.hxx>" << endl
+ << endl;
+
+ // Generate.
+ //
+ {
+ ind_filter ind (fwd); // We don't want to indent prologues/epilogues.
+ generate_forward (ctx);
+ }
+
+ fwd << "#include <xsd/cxx/post.hxx>" << endl
+ << endl;
+
+ // Copy epilogue.
+ //
+ fwd << "// Begin epilogue." << endl
+ << "//" << endl;
+
+ append (fwd, ops.fwd_epilogue_file (), epilogue);
+ append (fwd, ops.fwd_epilogue (), ops.epilogue ());
+
+ fwd << "//" << endl
+ << "// End epilogue." << endl
+ << endl;
+
+ fwd << "#endif // " << guard << endl;
+
+ if (show_sloc)
+ wcerr << fwd_path << ": " << sloc.stream ().count () << endl;
+
+ sloc_total += sloc.stream ().count ();
+ }
+
+ // HXX
+ //
+ if (gen_cxx && header)
+ {
+ Context ctx (hxx,
+ schema,
+ file_path,
+ ops,
+ counts,
+ generate_xml_schema,
+ &string_literal_map,
+ &fwd_expr,
+ &hxx_expr,
+ &ixx_expr);
+
+ sloc_filter sloc (hxx);
+
+ // Guard
+ //
+ String guard (guard_expr.replace (guard_prefix + hxx_name));
+ guard = ctx.escape (guard); // make a c++ id
+ std::transform (guard.begin (), guard.end(), guard.begin (), upcase);
+
+ hxx << "#ifndef " << guard << endl
+ << "#define " << guard << endl
+ << endl;
+
+ if (!forward)
+ {
+ if (ctx.std >= cxx_version::cxx11)
+ {
+ hxx << "#ifndef XSD_CXX11" << endl
+ << "#define XSD_CXX11" << endl
+ << "#endif" << endl
+ << endl;
+ }
+
+ if (ctx.char_type == L"char")
+ {
+ hxx << "#ifndef XSD_USE_CHAR" << endl
+ << "#define XSD_USE_CHAR" << endl
+ << "#endif" << endl
+ << endl;
+
+ hxx << "#ifndef XSD_CXX_TREE_USE_CHAR" << endl
+ << "#define XSD_CXX_TREE_USE_CHAR" << endl
+ << "#endif" << endl
+ << endl;
+ }
+ else if (ctx.char_type == L"wchar_t")
+ {
+ hxx << "#ifndef XSD_USE_WCHAR" << endl
+ << "#define XSD_USE_WCHAR" << endl
+ << "#endif" << endl
+ << endl;
+
+ hxx << "#ifndef XSD_CXX_TREE_USE_WCHAR" << endl
+ << "#define XSD_CXX_TREE_USE_WCHAR" << endl
+ << "#endif" << endl
+ << endl;
+ }
+ }
+ else if (!generate_xml_schema)
+ {
+ // Generate it before the prologue so that we get the above
+ // defines.
+ //
+ hxx << "#include " << ctx.process_include_path (fwd_name)
+ << endl << endl;
+ }
+
+ // Copy prologue.
+ //
+ hxx << "// Begin prologue." << endl
+ << "//" << endl;
+
+ append (hxx, ops.hxx_prologue (), ops.prologue ());
+ append (hxx, ops.hxx_prologue_file (), prologue);
+
+ hxx << "//" << endl
+ << "// End prologue." << endl
+ << endl;
+
+ // Version check.
+ //
+ hxx << "#include <xsd/cxx/config.hxx>" << endl
+ << endl
+ << "#if (LIBXSD_VERSION != " << XSD_VERSION << "L)" << endl
+ << "#error XSD runtime version mismatch" << endl
+ << "#endif" << endl
+ << endl;
+
+ hxx << "#include <xsd/cxx/pre.hxx>" << endl
+ << endl;
+
+ // Generate.
+ //
+ {
+ ind_filter ind (hxx); // We don't want to indent prologues/epilogues.
+
+ if (!generate_xml_schema && !forward)
+ generate_forward (ctx);
+
+ generate_tree_header (ctx);
+
+ if (!generate_xml_schema)
+ {
+ if (ops.generate_ostream ())
+ generate_stream_header (ctx);
+
+ if (!ops.generate_element_type () && !ops.suppress_parsing ())
+ generate_parser_header (ctx);
+
+ if (ops.generate_serialization ())
+ generate_serialization_header (ctx);
+
+ if (!ops.generate_insertion ().empty ())
+ generate_stream_insertion_header (ctx);
+ }
+ }
+
+ hxx << "#include <xsd/cxx/post.hxx>" << endl
+ << endl;
+
+ // Copy epilogue.
+ //
+ // Note that it goes before the inline file in case it defines
+ // something (such as a custom type) which is needed by this file.
+ // And if something in the epilogue needs something from the inline
+ // file, then it should be the inline rather than header epilogue.
+ //
+ hxx << "// Begin epilogue." << endl
+ << "//" << endl;
+
+ append (hxx, ops.hxx_epilogue_file (), epilogue);
+ append (hxx, ops.hxx_epilogue (), ops.epilogue ());
+
+ hxx << "//" << endl
+ << "// End epilogue." << endl
+ << endl;
+
+ if (inline_)
+ {
+ hxx << "#ifndef XSD_DONT_INCLUDE_INLINE" << endl
+ << "#include " << ctx.process_include_path (ixx_name) << endl
+ << "#endif // XSD_DONT_INCLUDE_INLINE" << endl
+ << endl;
+ }
+
+ hxx << "#endif // " << guard << endl;
+
+ if (show_sloc)
+ wcerr << hxx_path << ": " << sloc.stream ().count () << endl;
+
+ sloc_total += sloc.stream ().count ();
+ }
+
+
+ // IXX
+ //
+ if (gen_cxx && inline_)
+ {
+ Context ctx (ixx,
+ schema,
+ file_path,
+ ops,
+ counts,
+ generate_xml_schema,
+ &string_literal_map,
+ &fwd_expr,
+ &hxx_expr,
+ &ixx_expr);
+
+ sloc_filter sloc (ixx);
+
+ // Guard
+ //
+ String guard (guard_expr.replace (guard_prefix + ixx_name));
+ guard = ctx.escape (guard); // make a c++ id
+ std::transform (guard.begin (), guard.end(), guard.begin (), upcase);
+
+ ixx << "#ifndef " << guard.c_str () << endl
+ << "#define " << guard.c_str () << endl
+ << endl;
+
+ // Copy prologue.
+ //
+ ixx << "// Begin prologue." << endl
+ << "//" << endl;
+
+ append (ixx, ops.ixx_prologue (), ops.prologue ());
+ append (ixx, ops.ixx_prologue_file (), prologue);
+
+ ixx << "//" << endl
+ << "// End prologue." << endl
+ << endl;
+
+ ixx << "#include <xsd/cxx/pre.hxx>" << endl
+ << endl;
+
+ // Generate.
+ //
+ {
+ ind_filter ind (ixx); // We don't want to indent prologues/epilogues.
+ generate_tree_inline (ctx, 1, 0);
+ }
+
+ ixx << "#include <xsd/cxx/post.hxx>" << endl
+ << endl;
+
+ // Copy epilogue.
+ //
+ ixx << "// Begin epilogue." << endl
+ << "//" << endl;
+
+ append (ixx, ops.ixx_epilogue_file (), epilogue);
+ append (ixx, ops.ixx_epilogue (), ops.epilogue ());
+
+ ixx << "//" << endl
+ << "// End epilogue." << endl
+ << endl;
+
+ ixx << "#endif // " << guard.c_str () << endl;
+
+ if (show_sloc)
+ wcerr << ixx_path << ": " << sloc.stream ().count () << endl;
+
+ sloc_total += sloc.stream ().count ();
+ }
+
+ // CXX
+ //
+ if (gen_cxx && source)
+ {
+ size_t first_unit (0); // First unit in the current part.
+
+ for (size_t part (0); part < parts; ++part)
+ {
+ // Figure out the range of units for this part.
+ //
+ size_t last_unit (first_unit);
+
+ if (units != 0)
+ {
+ size_t complexity (counts.complexity[last_unit]);
+
+ while (complexity < complexity_per_part)
+ {
+ // Make sure there will be at least one unit for each part left.
+ //
+ if ((last_unit + 1) >= units ||
+ (units - (last_unit + 1) - 1) < (parts - part - 1))
+ break;
+
+ // Check if the increase in complexity should be kept in this
+ // part or moved to the next.
+ //
+ size_t new_complexity (
+ complexity + counts.complexity[last_unit + 1]);
+
+ if (new_complexity > complexity_per_part)
+ {
+ if ((new_complexity - complexity_per_part) >
+ (counts.complexity[last_unit + 1] / 2))
+ break;
+ }
+
+ last_unit++;
+ complexity = new_complexity;
+ }
+
+ if (part + 1 == parts)
+ {
+ // Last part.
+ //
+ last_unit = units - 1;
+ }
+ }
+
+ //
+ //
+ size_t first (first_unit);
+ size_t last (last_unit);
+
+ first_unit = last_unit + 1;
+
+ //wcerr << "[" << first << ", " << last << "]: " << complexity
+ // << endl;
+
+ WideOutputFileStream& os (*cxx[part]);
+
+ Context ctx (os,
+ schema,
+ file_path,
+ ops,
+ counts,
+ generate_xml_schema,
+ &string_literal_map,
+ &fwd_expr,
+ &hxx_expr,
+ &ixx_expr);
+
+ sloc_filter sloc (os);
+
+ // Copy prologue.
+ //
+ os << "// Begin prologue." << endl
+ << "//" << endl;
+
+ append (os, ops.cxx_prologue (), ops.prologue ());
+ append (os, ops.cxx_prologue_file (), prologue);
+
+ os << "//" << endl
+ << "// End prologue." << endl
+ << endl;
+
+ os << "#include <xsd/cxx/pre.hxx>" << endl
+ << endl;
+
+ os << "#include " << ctx.process_include_path (hxx_name) << endl
+ << endl;
+
+ // Generate.
+ //
+ {
+ // We don't want to indent prologues/epilogues.
+ //
+ ind_filter ind (os);
+
+ if (!inline_)
+ generate_tree_inline (ctx, first, last);
+
+ generate_tree_source (ctx, first, last);
+
+ if (ops.generate_ostream ())
+ generate_stream_source (ctx, first, last);
+
+ if (!ops.generate_element_type () && !ops.suppress_parsing ())
+ generate_parser_source (ctx, first, last);
+
+ if (ops.generate_serialization ())
+ generate_serialization_source (ctx, first, last);
+
+ if (!ops.generate_extraction ().empty ())
+ generate_stream_extraction_source (ctx);
+
+ if (!ops.generate_insertion ().empty ())
+ generate_stream_insertion_source (ctx);
+ }
+
+ os << "#include <xsd/cxx/post.hxx>" << endl
+ << endl;
+
+ // Copy epilogue.
+ //
+ os << "// Begin epilogue." << endl
+ << "//" << endl;
+
+ append (os, ops.cxx_epilogue_file (), epilogue);
+ append (os, ops.cxx_epilogue (), ops.epilogue ());
+
+ os << "//" << endl
+ << "// End epilogue." << endl
+ << endl;
+
+ if (show_sloc)
+ wcerr << cxx_paths[part] << ": " << sloc.stream ().count ()
+ << endl;
+
+ sloc_total += sloc.stream ().count ();
+ }
+ }
+
+ return sloc_total;
+ }
+ catch (UnrepresentableCharacter const& e)
+ {
+ wcerr << "error: character at position " << e.position () << " "
+ << "in string '" << e.string () << "' is unrepresentable in "
+ << "the target encoding" << endl;
+
+ wcerr << "info: use the --custom-literals option to provide custom "
+ << "string literals mapping" << endl;
+
+ throw Failed ();
+ }
+ catch (NoNamespaceMapping const& e)
+ {
+ wcerr << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": error: unable to map XML Schema namespace '" << e.ns ()
+ << "' to C++ namespace" << endl;
+
+ wcerr << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": info: use the --namespace-map or --namespace-regex option "
+ << "to provide custom mapping" << endl;
+
+ throw Failed ();
+ }
+ catch (InvalidNamespaceMapping const& e)
+ {
+ wcerr << "error: invalid XML to C++ namespace mapping specified: "
+ << "'" << e.mapping () << "': " << e.reason () << endl;
+
+ throw Failed ();
+ }
+ catch (InvalidCustomTypeMapping const& e)
+ {
+ wcerr << "error: invalid custom type mapping specified: "
+ << "'" << e.mapping () << "': " << e.reason () << endl;
+
+ throw Failed ();
+ }
+ catch (cutl::re::format const& e)
+ {
+ wcerr << "error: invalid regex: '" <<
+ e.regex ().c_str () << "': " <<
+ e.description ().c_str () << endl;
+
+ throw Failed ();
+ }
+ catch (cutl::re::wformat const& e)
+ {
+ wcerr << "error: invalid regex: '" <<
+ e.regex () << "': " << e.description ().c_str () << endl;
+
+ throw Failed ();
+ }
+ }
+}
diff --git a/xsd/cxx/tree/generator.hxx b/xsd/cxx/tree/generator.hxx
new file mode 100644
index 0000000..a9b96fe
--- /dev/null
+++ b/xsd/cxx/tree/generator.hxx
@@ -0,0 +1,44 @@
+// file : xsd/cxx/tree/generator.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_GENERATOR_HXX
+#define XSD_CXX_TREE_GENERATOR_HXX
+
+#include <libxsd-frontend/semantic-graph/elements.hxx> // Path
+#include <libxsd-frontend/semantic-graph/schema.hxx>
+
+#include <xsd/xsd.hxx>
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/literal-map.hxx>
+#include <xsd/cxx/tree/options.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ class Generator
+ {
+ public:
+ static void
+ usage ();
+
+ struct Failed {};
+
+ static size_t
+ generate (options const&,
+ XSDFrontend::SemanticGraph::Schema&,
+ XSDFrontend::SemanticGraph::Path const& file,
+ bool file_per_type,
+ StringLiteralMap const&,
+ const WarningSet& disabled_warnings,
+ FileList& file_list,
+ AutoUnlinks& unlinks);
+
+ private:
+ Generator ();
+ };
+ }
+}
+
+#endif // XSD_CXX_TREE_GENERATOR_HXX
diff --git a/xsd/cxx/tree/name-processor.cxx b/xsd/cxx/tree/name-processor.cxx
new file mode 100644
index 0000000..325870a
--- /dev/null
+++ b/xsd/cxx/tree/name-processor.cxx
@@ -0,0 +1,2427 @@
+// file : xsd/cxx/tree/name-processor.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <set>
+#include <map>
+#include <vector>
+#include <sstream>
+#include <iostream>
+
+#include <libcutl/re.hxx>
+
+#include <xsd/cxx/tree/default-value.hxx>
+#include <xsd/cxx/tree/name-processor.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ //
+ //
+ typedef set<String> NameSet;
+
+ class Context: public Tree::Context
+ {
+ public:
+ struct Failed {};
+
+ Context (Tree::options const& ops,
+ Counts const& counts,
+ bool generate_xml_schema,
+ SemanticGraph::Schema& root,
+ SemanticGraph::Path const& path,
+ StringLiteralMap const& map)
+ : Tree::Context (std::wcerr,
+ root,
+ path,
+ ops,
+ counts,
+ generate_xml_schema,
+ &map,
+ 0,
+ 0,
+ 0),
+ global_type_names (global_type_names_),
+ global_element_names (global_element_names_),
+ detach (ops.generate_detach ()),
+ type_regex (type_regex_),
+ accessor_regex (accessor_regex_),
+ one_accessor_regex (one_accessor_regex_),
+ opt_accessor_regex (opt_accessor_regex_),
+ seq_accessor_regex (seq_accessor_regex_),
+ modifier_regex (modifier_regex_),
+ one_modifier_regex (one_modifier_regex_),
+ opt_modifier_regex (opt_modifier_regex_),
+ seq_modifier_regex (seq_modifier_regex_),
+ parser_regex (parser_regex_),
+ serializer_regex (serializer_regex_),
+ const_regex (const_regex_),
+ enumerator_regex (enumerator_regex_),
+ element_type_regex (element_type_regex_)
+ {
+ NarrowString tn (options.type_naming ());
+ NarrowString fn (options.function_naming ());
+
+ // Type name regex.
+ //
+ {
+ // Predefined rules. The most frequently used come last: global
+ // names, two components (<name>,type), three components
+ // (<name>,const,iterator), and one component (value in enum).
+ //
+ if (tn == "knr")
+ {
+ type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/$1_$2_$3_$4/");
+ type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/$1_$2_$3/");
+ type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+)/$1_$2/");
+ type_regex.push_back ("/(?:[^ ]* )?([^,]+)/$1/");
+
+ /*
+ type_regex.push_back ("/([^,]+)/$1/");
+ type_regex.push_back ("/([^,]+),([^,]+),([^,]+),([^,]+)/$1_$2_$3_$4/");
+ type_regex.push_back ("/([^,]+),([^,]+),([^,]+)/$1_$2_$3/");
+ type_regex.push_back ("/([^,]+),([^,]+)/$1_$2/");
+ type_regex.push_back ("/[^ ]* (.+)/$1/");
+ */
+ }
+ else
+ {
+ // Upper camel case or Java.
+ //
+ type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\\u$1\\u$2\\u$3\\u$4/");
+ type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\\u$1\\u$2\\u$3/");
+ type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+)/\\u$1\\u$2/");
+ type_regex.push_back ("/(?:[^ ]* )?([^,]+)/\\u$1/");
+
+ /*
+ type_regex.push_back ("/([^,]+)/\\u$1/");
+ type_regex.push_back ("/([^,]+),([^,]+),([^,]+),([^,]+)/\\u$1\\u$2\\u$3\\u$4/");
+ type_regex.push_back ("/([^,]+),([^,]+),([^,]+)/\\u$1\\u$2\\u$3/");
+ type_regex.push_back ("/([^,]+),([^,]+)/\\u$1\\u$2/");
+ type_regex.push_back ("/[^ ]* (.+)/\\u$1/");
+ */
+
+ }
+
+ compile_regex (options.type_regex (), type_regex, "type");
+ }
+
+ // Accessor name regex.
+ //
+ {
+ // Predefined rules. The most frequently used come last: one
+ // component, three components (<name>,default,value) and two
+ // component (dom,document).
+ //
+ if (fn == "knr")
+ {
+ accessor_regex.push_back ("/([^,]+),([^,]+)/$1_$2/");
+ accessor_regex.push_back ("/([^,]+),([^,]+),([^,]+)/$1_$2_$3/");
+ accessor_regex.push_back ("/([^,]+)/$1/");
+ }
+ else if (fn == "lcc")
+ {
+ accessor_regex.push_back ("/([^,]+),([^,]+)/\\l$1\\u$2/");
+ accessor_regex.push_back ("/([^,]+),([^,]+),([^,]+)/\\l$1\\u$2\\u$3/");
+ accessor_regex.push_back ("/([^,]+)/\\l$1/");
+ }
+ else if (fn == "ucc")
+ {
+ accessor_regex.push_back ("/([^,]+),([^,]+)/\\u$1\\u$2/");
+ accessor_regex.push_back ("/([^,]+),([^,]+),([^,]+)/\\u$1\\u$2\\u$3/");
+ accessor_regex.push_back ("/([^,]+)/\\u$1/");
+ }
+ else
+ {
+ // Java: add get.
+ //
+ accessor_regex.push_back ("/([^,]+),([^,]+)/get\\u$1\\u$2/");
+ accessor_regex.push_back ("/([^,]+),([^,]+),([^,]+)/get\\u$1\\u$2\\u$3/");
+ accessor_regex.push_back ("/([^,]+)/get\\u$1/");
+ }
+
+ compile_regex (options.accessor_regex (),
+ accessor_regex,
+ "accessor");
+
+ compile_regex (options.one_accessor_regex (),
+ one_accessor_regex,
+ "one accessor");
+
+ compile_regex (options.opt_accessor_regex (),
+ opt_accessor_regex,
+ "optional accessor");
+
+ compile_regex (options.seq_accessor_regex (),
+ seq_accessor_regex,
+ "sequence accessor");
+ }
+
+ // Modifier name regex.
+ //
+ {
+ if (fn == "knr")
+ {
+ // any,attribute
+ //
+ modifier_regex.push_back ("/([^,]+),([^,]+)/$1_$2/");
+ }
+ else if (fn == "lcc")
+ {
+ modifier_regex.push_back ("/([^,]+),([^,]+)/\\l$1\\u$2/");
+ modifier_regex.push_back ("/([^,]+)/\\l$1/");
+ }
+ else if (fn == "ucc")
+ {
+ modifier_regex.push_back ("/([^,]+),([^,]+)/\\u$1\\u$2/");
+ modifier_regex.push_back ("/([^,]+)/\\u$1/");
+ }
+ else
+ {
+ // Java: add set.
+ //
+ modifier_regex.push_back ("/([^,]+),([^,]+)/set\\u$1\\u$2/");
+ modifier_regex.push_back ("/([^,]+)/set\\u$1/");
+ modifier_regex.push_back ("/detach,([^,]+)/detach\\u$1/");
+ }
+
+ compile_regex (options.modifier_regex (),
+ modifier_regex,
+ "modifier");
+
+ compile_regex (options.one_modifier_regex (),
+ one_modifier_regex,
+ "one modifier");
+
+ compile_regex (options.opt_modifier_regex (),
+ opt_modifier_regex,
+ "optional modifier");
+
+ compile_regex (options.seq_modifier_regex (),
+ seq_modifier_regex,
+ "sequence modifier");
+ }
+
+ // Parser name regex.
+ //
+ {
+ if (fn == "lcc")
+ {
+ parser_regex.push_back ("/(.+)/\\l$1/");
+ }
+ else if (fn == "ucc")
+ {
+ parser_regex.push_back ("/(.+)/\\u$1/");
+ }
+ else if (fn == "java")
+ {
+ // Java: add parse.
+ //
+ parser_regex.push_back ("/(.+)/parse\\u$1/");
+ }
+
+ compile_regex (options.parser_regex (), parser_regex, "parser");
+ }
+
+ // Serializer name regex.
+ //
+ {
+ if (fn == "lcc")
+ {
+ serializer_regex.push_back ("/(.+)/\\l$1/");
+ }
+ else if (fn == "ucc")
+ {
+ serializer_regex.push_back ("/(.+)/\\u$1/");
+ }
+ else if (fn == "java")
+ {
+ // Java: add serialize.
+ //
+ serializer_regex.push_back ("/(.+)/serialize\\u$1/");
+ }
+
+ compile_regex (options.serializer_regex (),
+ serializer_regex,
+ "serializer");
+ }
+
+ // Const regex.
+ //
+ {
+ if (fn == "knr")
+ {
+ const_regex.push_back ("/([^,]+),([^,]+),([^,]+)/$1_$2_$3/");
+ const_regex.push_back ("/([^,]+),([^,]+)/$1_$2/");
+ }
+ else if (fn == "lcc")
+ {
+ const_regex.push_back ("/([^,]+),([^,]+),([^,]+)/\\l$1_\\u$2_\\u$3/");
+ const_regex.push_back ("/([^,]+),([^,]+)/\\l$1\\u$2/");
+ }
+ else if (fn == "ucc")
+ {
+ const_regex.push_back ("/([^,]+),([^,]+),([^,]+)/\\u$1_\\u$2_\\u$3/");
+ const_regex.push_back ("/([^,]+),([^,]+)/\\u$1\\u$2/");
+ }
+ else
+ {
+ // Java: all uppercase.
+ //
+ const_regex.push_back ("/([^,]+),([^,]+),([^,]+)/\\U$1_$2_$3/");
+ const_regex.push_back ("/([^,]+),([^,]+)/\\U$1_$2/");
+ }
+
+ compile_regex (options.const_regex (), const_regex, "const");
+ }
+
+ // Enumerator name regex.
+ //
+ {
+ // By default map an empty enumerator to the 'empty' word.
+ //
+ enumerator_regex.push_back ("/^$/empty/");
+
+ compile_regex (options.enumerator_regex (),
+ enumerator_regex,
+ "enumerator");
+ }
+
+ // Element type regex.
+ //
+ compile_regex (options.element_type_regex (),
+ element_type_regex,
+ "element_type");
+ }
+
+ protected:
+ Context (Context& c)
+ : Tree::Context (c),
+ global_type_names (c.global_type_names),
+ global_element_names (c.global_element_names),
+ detach (c.detach),
+ type_regex (c.type_regex),
+ accessor_regex (c.accessor_regex),
+ one_accessor_regex (c.one_accessor_regex),
+ opt_accessor_regex (c.opt_accessor_regex),
+ seq_accessor_regex (c.seq_accessor_regex),
+ modifier_regex (c.modifier_regex),
+ one_modifier_regex (c.one_modifier_regex),
+ opt_modifier_regex (c.opt_modifier_regex),
+ seq_modifier_regex (c.seq_modifier_regex),
+ parser_regex (c.parser_regex),
+ serializer_regex (c.serializer_regex),
+ const_regex (c.const_regex),
+ enumerator_regex (c.enumerator_regex),
+ element_type_regex (c.element_type_regex)
+ {
+ }
+
+ public:
+ typedef cutl::re::wregexsub Regex;
+ typedef cutl::re::wformat RegexFormat;
+
+ struct RegexVector: vector<Regex>
+ {
+ void
+ push_back (String const& r)
+ {
+ vector<Regex>::push_back (Regex (r));
+ }
+ };
+
+ String
+ process_regex (String const& name,
+ RegexVector const& rv,
+ String const& id)
+ {
+ bool trace (options.name_regex_trace ());
+
+ if (trace)
+ os << id << " name: '" << name << "'" << endl;
+
+ for (RegexVector::const_reverse_iterator i (rv.rbegin ());
+ i != rv.rend (); ++i)
+ {
+ if (trace)
+ os << "try: '" << i->regex () << "' : ";
+
+ if (i->match (name))
+ {
+ String r (i->replace (name));
+
+ if (trace)
+ os << "'" << r << "' : +" << endl;
+
+ return r;
+ }
+
+ if (trace)
+ os << '-' << endl;
+ }
+
+ return name;
+ }
+
+ String
+ process_regex (String const& name,
+ RegexVector const& primary,
+ RegexVector const& backup,
+ String const& id)
+ {
+ bool trace (options.name_regex_trace ());
+
+ if (trace)
+ os << id << " name: '" << name << "'" << endl;
+
+ for (RegexVector::const_reverse_iterator i (primary.rbegin ());
+ i != primary.rend (); ++i)
+ {
+ if (trace)
+ os << "try: '" << i->regex () << "' : ";
+
+ if (i->match (name))
+ {
+ String r (i->replace (name));
+
+ if (trace)
+ os << "'" << r << "' : +" << endl;
+
+ return r;
+ }
+
+ if (trace)
+ os << '-' << endl;
+ }
+
+ for (RegexVector::const_reverse_iterator i (backup.rbegin ());
+ i != backup.rend (); ++i)
+ {
+ if (trace)
+ os << "try: '" << i->regex () << "' : ";
+
+ if (i->match (name))
+ {
+ String r (i->replace (name));
+
+ if (trace)
+ os << "'" << r << "' : +" << endl;
+
+ return r;
+ }
+
+ if (trace)
+ os << '-' << endl;
+ }
+
+ return name;
+ }
+
+ String
+ process_regex (String const& ns,
+ String const& name,
+ RegexVector const& rv,
+ String const& id)
+ {
+ String s (ns + L' ' + name);
+ bool trace (options.name_regex_trace ());
+
+ if (trace)
+ os << id << " name: '" << s << "'" << endl;
+
+ for (RegexVector::const_reverse_iterator i (rv.rbegin ());
+ i != rv.rend (); ++i)
+ {
+ if (trace)
+ os << "try: '" << i->regex () << "' : ";
+
+ if (i->match (s))
+ {
+ String r (i->replace (s));
+
+ if (trace)
+ os << "'" << r << "' : +" << endl;
+
+ return r;
+ }
+
+ if (trace)
+ os << '-' << endl;
+ }
+
+ return name;
+ }
+
+ String
+ process_regex (String const& ns,
+ String const& name,
+ RegexVector const& primary,
+ RegexVector const& backup,
+ String const& id)
+ {
+ String s (ns + L' ' + name);
+ bool trace (options.name_regex_trace ());
+
+ if (trace)
+ os << id << " name: '" << s << "'" << endl;
+
+ for (RegexVector::const_reverse_iterator i (primary.rbegin ());
+ i != primary.rend (); ++i)
+ {
+ if (trace)
+ os << "try: '" << i->regex () << "' : ";
+
+ if (i->match (s))
+ {
+ String r (i->replace (s));
+
+ if (trace)
+ os << "'" << r << "' : +" << endl;
+
+ return r;
+ }
+
+ if (trace)
+ os << '-' << endl;
+ }
+
+ for (RegexVector::const_reverse_iterator i (backup.rbegin ());
+ i != backup.rend (); ++i)
+ {
+ if (trace)
+ os << "try: '" << i->regex () << "' : ";
+
+ if (i->match (s))
+ {
+ String r (i->replace (s));
+
+ if (trace)
+ os << "'" << r << "' : +" << endl;
+
+ return r;
+ }
+
+ if (trace)
+ os << '-' << endl;
+ }
+
+ return name;
+ }
+
+ public:
+ String
+ find_name (String const& base_name,
+ NameSet& set,
+ bool insert = true)
+ {
+ String name (base_name);
+
+ for (size_t i (1); set.find (name) != set.end (); ++i)
+ {
+ std::wostringstream os;
+ os << i;
+ name = base_name + os.str ();
+ }
+
+ if (insert)
+ set.insert (name);
+
+ return name;
+ }
+
+ private:
+ void
+ compile_regex (NarrowStrings const& sv,
+ RegexVector& rv,
+ String const& id)
+ {
+ for (NarrowStrings::const_iterator i (sv.begin ()); i != sv.end ();
+ ++i)
+ {
+ try
+ {
+ rv.push_back (*i);
+ }
+ catch (RegexFormat const& e)
+ {
+ os << "error: invalid " << id << " name regex: '" <<
+ e.regex () << "': " << e.description ().c_str () << endl;
+
+ throw Failed ();
+ }
+ }
+ }
+
+ private:
+ map<String, NameSet> global_type_names_;
+ map<String, NameSet> global_element_names_;
+
+ RegexVector type_regex_;
+ RegexVector accessor_regex_;
+ RegexVector one_accessor_regex_;
+ RegexVector opt_accessor_regex_;
+ RegexVector seq_accessor_regex_;
+ RegexVector modifier_regex_;
+ RegexVector one_modifier_regex_;
+ RegexVector opt_modifier_regex_;
+ RegexVector seq_modifier_regex_;
+ RegexVector parser_regex_;
+ RegexVector serializer_regex_;
+ RegexVector const_regex_;
+ RegexVector enumerator_regex_;
+ RegexVector element_type_regex_;
+
+ public:
+ map<String, NameSet>& global_type_names;
+ map<String, NameSet>& global_element_names;
+
+ bool detach;
+
+ RegexVector& type_regex;
+ RegexVector& accessor_regex;
+ RegexVector& one_accessor_regex;
+ RegexVector& opt_accessor_regex;
+ RegexVector& seq_accessor_regex;
+ RegexVector& modifier_regex;
+ RegexVector& one_modifier_regex;
+ RegexVector& opt_modifier_regex;
+ RegexVector& seq_modifier_regex;
+ RegexVector& parser_regex;
+ RegexVector& serializer_regex;
+ RegexVector& const_regex;
+ RegexVector& enumerator_regex;
+ RegexVector& element_type_regex;
+ };
+
+ //
+ //
+ struct Enumerator: Traversal::Enumerator, Context
+ {
+ Enumerator (Context& c, NameSet& set)
+ : Context (c), set_ (set)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ // Process the name with enumerator name regex.
+ //
+ String name (
+ process_regex (e.name (), enumerator_regex, L"enumerator"));
+
+ // Escape and unclash.
+ //
+ name = find_name (escape (name), set_);
+ e.context ().set ("name", name);
+ }
+
+ private:
+ NameSet& set_;
+ };
+
+ //
+ //
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ // Use processed name.
+ //
+ String name (e.context ().get<String> ("name"));
+
+ // If renamed name is empty then we are not generating
+ // anything for this type and name processing is not
+ // required.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ NameSet enum_set;
+ enum_set.insert (name);
+
+ Enumerator enumerator (*this, enum_set);
+ Traversal::Names names (enumerator);
+
+ Traversal::Enumeration::names (e, names);
+
+ // Assign name to the value type. First process the name
+ // with type name regex.
+ //
+ String value_name (
+ escape (process_regex ("value", type_regex, L"type")));
+ e.context ().set ("value", find_name (value_name, enum_set));
+ }
+ };
+
+ //
+ //
+ struct PrimaryMember: Traversal::Member, Context
+ {
+ PrimaryMember (Context& c, NameSet& name_set, NameSet& stem_set)
+ : Context (c), name_set_ (name_set), stem_set_ (stem_set)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (Tree::Context::skip (m))
+ return;
+
+ String stem (find_name (m.name (), stem_set_));
+
+ m.context ().set ("stem", stem);
+ m.context ().set ("name",
+ find_name (escape (stem), name_set_, false));
+ }
+
+ private:
+ NameSet& name_set_;
+ NameSet& stem_set_;
+ };
+
+ //
+ //
+ struct DerivedMember: Traversal::Member, Context
+ {
+ DerivedMember (Context& c, NameSet& name_set)
+ : Context (c), name_set_ (name_set)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (Tree::Context::skip (m))
+ return;
+
+ SemanticGraph::Complex& c (
+ dynamic_cast<SemanticGraph::Complex&> (m.scope ()));
+
+ size_t max (Tree::Context::max (m));
+ size_t min (Tree::Context::min (m));
+
+ String const& s (m.context ().get<String> ("stem"));
+ String const& b (m.context ().get<String> ("name"));
+
+ bool def_attr (m.default_p () &&
+ m.is_a<SemanticGraph::Attribute> ());
+
+ // Accessors/modifiers. Note that we postpone inserting
+ // the names into the name_set to avoid over-escaping.
+ //
+ String an, mn;
+
+ if (max != 1)
+ {
+ an = find_name (
+ escape (process_regex (s,
+ seq_accessor_regex,
+ accessor_regex,
+ L"sequence accessor")),
+ name_set_,
+ false);
+
+ mn = find_name (
+ escape (process_regex (s,
+ seq_modifier_regex,
+ modifier_regex,
+ L"sequence modifier")),
+ name_set_,
+ false);
+ }
+ else if (min == 0 && !def_attr)
+ {
+ an = find_name (
+ escape (process_regex (s,
+ opt_accessor_regex,
+ accessor_regex,
+ L"optional accessor")),
+ name_set_,
+ false);
+
+ mn = find_name (
+ escape (process_regex (s,
+ opt_modifier_regex,
+ modifier_regex,
+ L"optional modifier")),
+ name_set_,
+ false);
+ }
+ else
+ {
+ an = find_name (
+ escape (process_regex (s,
+ one_accessor_regex,
+ accessor_regex,
+ L"one accessor")),
+ name_set_,
+ false);
+
+ mn = find_name (
+ escape (process_regex (s,
+ one_modifier_regex,
+ modifier_regex,
+ L"one modifier")),
+ name_set_,
+ false);
+ }
+
+ m.context ().set ("aname", an);
+ m.context ().set ("mname", mn);
+
+ name_set_.insert (b);
+
+ if (an != b)
+ name_set_.insert (an);
+
+ if (mn != b && mn != an)
+ name_set_.insert (mn);
+
+ // Detach.
+ //
+ if (detach && max == 1 && (min == 1 || def_attr))
+ {
+ String dn (find_name (
+ escape (process_regex (L"detach," + s,
+ one_modifier_regex,
+ modifier_regex,
+ L"one modifier")),
+ name_set_));
+
+ m.context ().set ("dname", dn);
+ }
+
+ // Types.
+ //
+ m.context ().set (
+ "type",
+ find_name (
+ escape (process_regex (s + L",type", type_regex, L"type")),
+ name_set_));
+
+ m.context ().set (
+ "traits",
+ find_name (
+ escape (process_regex (s + L",traits", type_regex, L"type")),
+ name_set_));
+
+ if (max != 1)
+ {
+ m.context ().set (
+ "container",
+ find_name (
+ escape (process_regex (s + L",sequence", type_regex, L"type")),
+ name_set_));
+
+ m.context ().set (
+ "iterator",
+ find_name (
+ escape (process_regex (s + L",iterator", type_regex, L"type")),
+ name_set_));
+
+ m.context ().set (
+ "const-iterator",
+ find_name (
+ escape (
+ process_regex (s + L",const,iterator", type_regex, L"type")),
+ name_set_));
+ }
+ else if (min == 0 && !def_attr)
+ {
+ m.context ().set (
+ "container",
+ find_name (
+ escape (process_regex (s + L",optional", type_regex, L"type")),
+ name_set_));
+ }
+
+ // Data member.
+ //
+ m.context ().set ("member", find_name (b + L"_", name_set_));
+
+ // Default value.
+ //
+ if (m.default_p ())
+ {
+ bool simple (true);
+
+ if (m.is_a<SemanticGraph::Element> ())
+ {
+ IsSimpleType test (simple);
+ test.dispatch (m.type ());
+ }
+
+ if (simple)
+ {
+ String an (
+ escape (
+ process_regex (
+ s + L",default,value", accessor_regex, L"accessor")));
+
+ m.context ().set ("default-value", find_name (an, name_set_));
+
+ bool lit (false);
+ {
+ IsLiteralValue test (lit);
+ test.dispatch (m.type ());
+ }
+
+ if (!lit)
+ {
+ m.context ().set (
+ "default-value-member",
+ find_name (b + L"_default_value_", name_set_));
+ }
+ }
+ }
+
+ // Element id.
+ //
+ if (m.is_a<SemanticGraph::Element> () && ordered_p (c))
+ {
+ String id (
+ escape (
+ process_regex (
+ s + L",id", const_regex, L"const")));
+
+ m.context ().set ("ordered-id-name", find_name (id, name_set_));
+ }
+ }
+
+ private:
+ NameSet& name_set_;
+ };
+
+
+ //
+ //
+ struct Any: Traversal::Any, Traversal::AnyAttribute, Context
+ {
+ Any (Context& c,
+ NameSet& name_set,
+ NameSet& stem_set,
+ bool& has_wildcard)
+ : Context (c),
+ name_set_ (name_set),
+ stem_set_ (stem_set),
+ has_wildcard_ (has_wildcard)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ SemanticGraph::Complex& c (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ()));
+
+ size_t max (Tree::Context::max (a));
+ size_t min (Tree::Context::min (a));
+
+ String s (find_name (L"any", stem_set_));
+
+ String b (find_name (escape (s), name_set_, false));
+ a.context ().set ("name", b);
+
+ // Accessors/modifiers. Note that we postpone inserting the
+ // names into the name_set to avoid over-escaping.
+ //
+ String an, mn;
+
+ if (max != 1)
+ {
+ an = find_name (
+ escape (process_regex (s,
+ seq_accessor_regex,
+ accessor_regex,
+ L"sequence accessor")),
+ name_set_,
+ false);
+
+ mn = find_name (
+ escape (process_regex (s,
+ seq_modifier_regex,
+ modifier_regex,
+ L"sequence modifier")),
+ name_set_,
+ false);
+ }
+ else if (min == 0)
+ {
+ an = find_name (
+ escape (process_regex (s,
+ opt_accessor_regex,
+ accessor_regex,
+ L"optional accessor")),
+ name_set_,
+ false);
+
+ mn = find_name (
+ escape (process_regex (s,
+ opt_modifier_regex,
+ modifier_regex,
+ L"optional modifier")),
+ name_set_,
+ false);
+ }
+ else
+ {
+ an = find_name (
+ escape (process_regex (s,
+ one_accessor_regex,
+ accessor_regex,
+ L"one accessor")),
+ name_set_,
+ false);
+
+ mn = find_name (
+ escape (process_regex (s,
+ one_modifier_regex,
+ modifier_regex,
+ L"one modifier")),
+ name_set_,
+ false);
+ }
+
+ a.context ().set ("aname", an);
+ a.context ().set ("mname", mn);
+
+ name_set_.insert (b);
+
+ if (an != b)
+ name_set_.insert (an);
+
+ if (mn != b && mn != an)
+ name_set_.insert (mn);
+
+ // Types
+ //
+ if (max != 1)
+ {
+ a.context ().set (
+ "container",
+ find_name (
+ escape (process_regex (s + L",sequence", type_regex, L"type")),
+ name_set_));
+
+ a.context ().set (
+ "iterator",
+ find_name (
+ escape (process_regex (s + L",iterator", type_regex, L"type")),
+ name_set_));
+
+ a.context ().set (
+ "const-iterator",
+ find_name (
+ escape (
+ process_regex (s + L",const,iterator", type_regex, L"type")),
+ name_set_));
+ }
+ else if (min == 0)
+ {
+ a.context ().set (
+ "container",
+ find_name (
+ escape (process_regex (s + L",optional", type_regex, L"type")),
+ name_set_));
+ }
+
+ // Data member.
+ //
+ a.context ().set ("member", find_name (b + L"_", name_set_));
+
+ // Wildcard id.
+ //
+ if (ordered_p (c))
+ {
+ String id (
+ escape (
+ process_regex (
+ s + L",id", const_regex, L"const")));
+
+ a.context ().set ("ordered-id-name", find_name (id, name_set_));
+ }
+
+ if (!has_wildcard_)
+ has_wildcard_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String s (find_name (L"any,attribute", stem_set_));
+
+ String b (find_name (escape (s), name_set_, false));
+ a.context ().set ("name", b);
+
+ // Accessors/modifiers. Note that we postpone inserting the
+ // names into the name_set to avoid over-escaping.
+ //
+ String an (
+ find_name (
+ escape (process_regex (s, accessor_regex, L"accessor")),
+ name_set_,
+ false));
+
+ String mn (
+ find_name (
+ escape (process_regex (s, modifier_regex, L"modifier")),
+ name_set_,
+ false));
+
+ a.context ().set ("aname", an);
+ a.context ().set ("mname", mn);
+
+ name_set_.insert (b);
+
+ if (an != b)
+ name_set_.insert (an);
+
+ if (mn != b && mn != an)
+ name_set_.insert (mn);
+
+ // Types
+ //
+ a.context ().set (
+ "container",
+ find_name (
+ escape (process_regex (s + L",set", type_regex, L"type")),
+ name_set_));
+
+ a.context ().set (
+ "iterator",
+ find_name (
+ escape (process_regex (s + L",iterator", type_regex, L"type")),
+ name_set_));
+
+ a.context ().set (
+ "const-iterator",
+ find_name (
+ escape (
+ process_regex (s + L",const,iterator", type_regex, L"type")),
+ name_set_));
+
+ // Data member.
+ //
+ a.context ().set ("member", find_name (b + L"_", name_set_));
+
+ if (!has_wildcard_)
+ has_wildcard_ = true;
+ }
+
+ private:
+ NameSet& name_set_;
+ NameSet& stem_set_;
+ bool& has_wildcard_;
+ };
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ SemanticGraph::Context& ctx (c.context ());
+
+ // We leave this set around to allow other mappings to use
+ // this information.
+ //
+ ctx.set ("cxx-tree-name-processor-stem-set", NameSet ());
+ ctx.set ("cxx-tree-name-processor-member-set", NameSet ());
+
+ // Use processed name.
+ //
+ String name (ctx.get<String> ("name"));
+
+ // If renamed name is empty then we are not generating
+ // anything for this type and name processing is not
+ // required.
+ //
+ if (renamed_type (c, name) && !name)
+ return;
+
+ NameSet& stem_set (
+ ctx.get<NameSet> ("cxx-tree-name-processor-stem-set"));
+
+ NameSet& member_set (
+ ctx.get<NameSet> ("cxx-tree-name-processor-member-set"));
+
+ stem_set.insert (c.name ());
+ member_set.insert (name);
+
+ // Add our base's stems and members to the initial list.
+ //
+ if (c.inherits_p ())
+ {
+ // @@ What if this types name is the same as one of base's
+ // members?
+ //
+ SemanticGraph::Type& base (c.inherits ().base ());
+
+ if (base.is_a<SemanticGraph::Complex> () &&
+ !base.is_a<SemanticGraph::Enumeration> ())
+ {
+ if (!base.context ().count (
+ "cxx-tree-name-processor-member-set"))
+ {
+ dispatch (base);
+ }
+
+ NameSet const& base_stem_set (
+ base.context ().get<NameSet> (
+ "cxx-tree-name-processor-stem-set"));
+
+ stem_set.insert (base_stem_set.begin (), base_stem_set.end ());
+
+ NameSet const& base_member_set (
+ base.context ().get<NameSet> (
+ "cxx-tree-name-processor-member-set"));
+
+ member_set.insert (base_member_set.begin (),
+ base_member_set.end ());
+ }
+ }
+
+ // First assign the "primary" names.
+ //
+ {
+ PrimaryMember member (*this, member_set, stem_set);
+ Traversal::Names names (member);
+
+ Complex::names (c, names);
+ }
+
+ // Derived names for members.
+ //
+ {
+ DerivedMember member (*this, member_set);
+ Traversal::Names names (member);
+
+ Complex::names (c, names);
+ }
+
+ // Names for the mixed content.
+ //
+ if (mixed_p (c))
+ {
+ // Check if we already have the mixed content down inheritance
+ // hierarchy.
+ //
+ using SemanticGraph::Complex;
+
+ for (Complex* p (&c); p->inherits_p ();)
+ {
+ if (Complex* b = dynamic_cast<Complex*> (
+ &p->inherits ().base ()))
+ {
+ if (mixed_p (*b))
+ {
+ SemanticGraph::Context& bctx (b->context ());
+ ctx.set ("mixed-type", bctx.get<String> ("mixed-type"));
+ ctx.set ("mixed-const-iterator",
+ bctx.get<String> ("mixed-const-iterator"));
+ ctx.set ("mixed-ordered-id-name",
+ bctx.get<String> ("mixed-ordered-id-name"));
+ ctx.set ("mixed-aname", bctx.get<String> ("mixed-aname"));
+ ctx.set ("mixed-member", bctx.get<String> ("mixed-member"));
+ ctx.set ("mixed-in-base", true);
+ break;
+ }
+
+ p = b;
+ }
+ else
+ break;
+ }
+
+ // If not, set up the names.
+ //
+ if (!ctx.count ("mixed-in-base"))
+ {
+ String s (find_name (L"text,content", stem_set));
+ String n (find_name (escape (s), member_set, false));
+
+ String an (find_name (
+ escape (process_regex (s,
+ seq_accessor_regex,
+ accessor_regex,
+ L"sequence accessor")),
+ member_set,
+ false));
+
+ String mn (find_name (
+ escape (process_regex (s,
+ seq_modifier_regex,
+ modifier_regex,
+ L"sequence modifier")),
+ member_set,
+ false));
+
+ ctx.set ("mixed-aname", an);
+ ctx.set ("mixed-mname", mn);
+
+ member_set.insert (name);
+
+ if (an != n)
+ member_set.insert (an);
+
+ if (mn != n && mn != an)
+ member_set.insert (mn);
+
+ // Types.
+ //
+ ctx.set (
+ "mixed-type",
+ find_name (
+ escape (process_regex (s + L",type", type_regex, L"type")),
+ member_set));
+
+ ctx.set (
+ "mixed-container",
+ find_name (
+ escape (process_regex (s + L",sequence", type_regex, L"type")),
+ member_set));
+
+ ctx.set (
+ "mixed-iterator",
+ find_name (
+ escape (process_regex (s + L",iterator", type_regex, L"type")),
+ member_set));
+
+ ctx.set (
+ "mixed-const-iterator",
+ find_name (
+ escape (
+ process_regex (s + L",const,iterator", type_regex, L"type")),
+ member_set));
+
+ // Text content id.
+ //
+ ctx.set (
+ "mixed-ordered-id-name",
+ find_name (
+ escape (
+ process_regex (s + L",id", const_regex, L"const")),
+ member_set));
+
+ // Data member.
+ //
+ ctx.set ("mixed-member", find_name (n + L"_", member_set));
+ }
+ }
+
+ // Names for wildcards.
+ //
+ if (options.generate_wildcard ())
+ {
+ bool has_wildcard (false);
+ Any any (*this, member_set, stem_set, has_wildcard);
+ Traversal::Names names (any);
+ Complex::names (c, names);
+
+ // Assign names for dom_document.
+ //
+ if (has_wildcard)
+ {
+ // Check if we already have dom_document down inheritance
+ // hierarchy.
+ //
+ for (SemanticGraph::Complex* p (&c); p->inherits_p ();)
+ {
+ if (SemanticGraph::Complex* base =
+ dynamic_cast<SemanticGraph::Complex*> (
+ &p->inherits ().base ()))
+ {
+ if (base->context ().count ("dom-document"))
+ {
+ c.context ().set (
+ "dom-document",
+ base->context ().get<String> ("dom-document"));
+ break;
+ }
+
+ p = base;
+ }
+ else
+ break;
+ }
+
+ // If not, set up the names.
+ //
+ if (!c.context ().count ("dom-document"))
+ {
+ String stem (find_name (L"dom,document", stem_set));
+
+ String an (
+ escape (
+ process_regex (stem, accessor_regex, L"accessor")));
+
+ c.context ().set ("dom-document", find_name (an, member_set));
+
+ c.context ().set (
+ "dom-document-member",
+ find_name (escape (stem + L"_"), member_set));
+ }
+ }
+ }
+
+ // Names for the order container.
+ //
+ if (ordered_p (c))
+ {
+ // Check if we already have the order container down
+ // inheritance hierarchy.
+ //
+ using SemanticGraph::Complex;
+
+ for (Complex* p (&c); p->inherits_p ();)
+ {
+ if (Complex* b = dynamic_cast<Complex*> (
+ &p->inherits ().base ()))
+ {
+ if (ordered_p (*b))
+ {
+ SemanticGraph::Context& bctx (b->context ());
+ ctx.set ("order-type", bctx.get<String> ("order-type"));
+ ctx.set ("order-const-iterator",
+ bctx.get<String> ("order-const-iterator"));
+ ctx.set ("order-aname", bctx.get<String> ("order-aname"));
+ ctx.set ("order-member", bctx.get<String> ("order-member"));
+ ctx.set ("order-in-base", true);
+ break;
+ }
+
+ p = b;
+ }
+ else
+ break;
+ }
+
+ // If not, set up the names.
+ //
+ if (!ctx.count ("order-in-base"))
+ {
+ String s (find_name (L"content,order", stem_set));
+ String n (find_name (escape (s), member_set, false));
+
+ String an (find_name (
+ escape (process_regex (s,
+ seq_accessor_regex,
+ accessor_regex,
+ L"sequence accessor")),
+ member_set,
+ false));
+
+ String mn (find_name (
+ escape (process_regex (s,
+ seq_modifier_regex,
+ modifier_regex,
+ L"sequence modifier")),
+ member_set,
+ false));
+
+ ctx.set ("order-aname", an);
+ ctx.set ("order-mname", mn);
+
+ member_set.insert (name);
+
+ if (an != n)
+ member_set.insert (an);
+
+ if (mn != n && mn != an)
+ member_set.insert (mn);
+
+ // Types.
+ //
+ ctx.set (
+ "order-type",
+ find_name (
+ escape (process_regex (s + L",type", type_regex, L"type")),
+ member_set));
+
+ ctx.set (
+ "order-container",
+ find_name (
+ escape (process_regex (s + L",sequence", type_regex, L"type")),
+ member_set));
+
+ ctx.set (
+ "order-iterator",
+ find_name (
+ escape (process_regex (s + L",iterator", type_regex, L"type")),
+ member_set));
+
+ ctx.set (
+ "order-const-iterator",
+ find_name (
+ escape (
+ process_regex (s + L",const,iterator", type_regex, L"type")),
+ member_set));
+
+ // Data member.
+ //
+ ctx.set ("order-member", find_name (n + L"_", member_set));
+ }
+ }
+ }
+ };
+
+
+ //
+ //
+ struct GlobalType: Traversal::Type, Context
+ {
+ GlobalType (Context& c, NameSet& set)
+ : Context (c), set_ (set)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ // Process the name with type name regex.
+ //
+ String name (process_regex (
+ namespace_ (t).name (),
+ t.name (),
+ type_regex,
+ L"type"));
+
+ // Escape and unclash.
+ //
+ name = find_name (escape (name), set_);
+ t.context ().set ("name", name);
+
+ // Also add renamed name if any.
+ //
+ if (renamed_type (t, name) && name)
+ set_.insert (name);
+ }
+
+ private:
+ NameSet& set_;
+ };
+
+
+ //
+ //
+ struct GlobalElement: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ GlobalElement (Context& c,
+ NameSet const& type_set,
+ NameSet& element_set)
+ : GlobalElementBase (c),
+ Context (c),
+ type_set_ (type_set),
+ element_set_ (element_set)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ // First we need to figure out if we need to process this
+ // global element.
+ //
+ if (!generate_p (e))
+ return;
+
+ if (options.generate_element_type ())
+ {
+ SemanticGraph::Context& ec (e.context ());
+
+ String name;
+
+ if (doc_root_p (e))
+ {
+ name = find_name (
+ escape (
+ process_regex (
+ namespace_ (e).name (),
+ e.name (),
+ element_type_regex,
+ type_regex,
+ L"element type")));
+
+ // Assign inner names.
+ //
+ NameSet set;
+ set.insert (name);
+
+ ec.set (
+ "type",
+ Context::find_name (
+ escape (process_regex (L"value,type", type_regex, L"type")),
+ set));
+
+ ec.set (
+ "traits",
+ Context::find_name (
+ escape (process_regex (L"value,traits", type_regex, L"type")),
+ set));
+
+ String an (Context::find_name (
+ escape (process_regex ("value",
+ one_accessor_regex,
+ accessor_regex,
+ L"one accessor")),
+ set,
+ false));
+
+ String mn (Context::find_name (
+ escape (process_regex ("value",
+ one_modifier_regex,
+ modifier_regex,
+ L"one modifier")),
+ set,
+ false));
+
+ ec.set ("aname", an);
+ ec.set ("mname", mn);
+
+ set.insert (an);
+
+ if (an != mn)
+ set.insert (mn);
+
+ // Detach.
+ //
+ if (detach)
+ {
+ String dn (Context::find_name (
+ escape (process_regex (L"detach,value",
+ one_modifier_regex,
+ modifier_regex,
+ L"one modifier")),
+ set));
+
+ ec.set ("dname", dn);
+ }
+
+ // Assign name() and namespace_() names.
+ //
+ ec.set (
+ "element-name",
+ Context::find_name (
+ escape (
+ process_regex ("name", accessor_regex, L"modifier")),
+ set));
+
+ ec.set (
+ "element-ns",
+ Context::find_name (
+ escape (
+ process_regex ("namespace", accessor_regex, L"modifier")),
+ set));
+
+ // Data members.
+ //
+ ec.set ("member", Context::find_name ("value_", set));
+ ec.set ("element-name-member",
+ Context::find_name ("name_", set));
+ ec.set ("element-ns-member",
+ Context::find_name ("namespace__", set));
+ }
+ else
+ name = find_name (escape (e.name ()));
+
+ ec.set ("name", name);
+ element_set_.insert (name);
+ }
+ else
+ {
+ // Make sure the name is unique among global elements and
+ // does not collide with a global type name.
+ //
+ String base (find_name (escape (e.name ())));
+ e.context ().set ("name", base);
+
+ String n (e.name ());
+
+ // Assign the parsing function name.
+ //
+ String p;
+
+ if (!options.suppress_parsing () && doc_root_p (e))
+ {
+ p = find_name (
+ escape (
+ process_regex (n, parser_regex, L"parsing function")));
+
+ e.context ().set ("parser", p);
+ }
+
+ // Assign the serialization function name.
+ //
+ String s;
+
+ if (options.generate_serialization () && doc_root_p (e))
+ {
+ s = find_name (
+ escape (
+ process_regex (
+ n, serializer_regex, L"serialization function")));
+
+ e.context ().set ("serializer", s);
+ }
+
+ // Add the names to the set only after processing parsing and
+ // serialization function names so that we do not over-escape
+ // them.
+ //
+ element_set_.insert (base);
+
+ if (p && p != base)
+ element_set_.insert (p);
+
+ if (s && s != base && s != p)
+ element_set_.insert (s);
+ }
+ }
+
+ private:
+ String
+ find_name (String const& name)
+ {
+ String r (name);
+
+ // If we are conflicting with a type name let's first try to
+ // simply append an underscore and only resort to ugly names
+ // like name1, etc., if this fails.
+ //
+ if (type_set_.find (r) != type_set_.end ())
+ r += L"_";
+
+ for (size_t i (1);
+ element_set_.find (r) != element_set_.end () ||
+ type_set_.find (r) != type_set_.end (); ++i)
+ {
+ std::wostringstream os;
+ os << i;
+ r = name + os.str ();
+ }
+
+ return r;
+ }
+
+ private:
+ NameSet const& type_set_;
+ NameSet& element_set_;
+ };
+
+ struct NamespacePassOne: Traversal::Namespace, Context
+ {
+ NamespacePassOne (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& ns)
+ {
+ NameSet& type_set (global_type_names[ns.name ()]);
+
+ GlobalType type (*this, type_set);
+ Traversal::Names names (type);
+
+ Traversal::Namespace::names (ns, names);
+ Traversal::Namespace::names (ns);
+ }
+ };
+
+
+ struct NamespacePassThree: Traversal::Namespace, Context
+ {
+ NamespacePassThree (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& ns)
+ {
+ String const& name (ns.name ());
+
+ NameSet const& type_set (global_type_names[name]);
+ NameSet& element_set (global_element_names[name]);
+
+ GlobalElement element (*this, type_set, element_set);
+ Traversal::Names names (element);
+
+ Traversal::Namespace::names (ns, names);
+ }
+ };
+
+
+ struct FundamentalNamespace: Traversal::Namespace,
+
+ Traversal::AnyType,
+ Traversal::AnySimpleType,
+
+ Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal,
+
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Language,
+
+ Traversal::Fundamental::Id,
+ Traversal::Fundamental::IdRef,
+ Traversal::Fundamental::IdRefs,
+
+ Traversal::Fundamental::AnyURI,
+
+ Traversal::Fundamental::QName,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary,
+
+ Traversal::Fundamental::Date,
+ Traversal::Fundamental::DateTime,
+ Traversal::Fundamental::Duration,
+ Traversal::Fundamental::Day,
+ Traversal::Fundamental::Month,
+ Traversal::Fundamental::MonthDay,
+ Traversal::Fundamental::Year,
+ Traversal::Fundamental::YearMonth,
+ Traversal::Fundamental::Time,
+
+ Traversal::Fundamental::Entity,
+ Traversal::Fundamental::Entities,
+
+ Context
+ {
+ using Namespace::traverse;
+
+ FundamentalNamespace (Context& c)
+ : Context (c)
+ {
+ *this >> names_ >> *this;
+ }
+
+ void
+ process_name (SemanticGraph::Type& t, String const& name)
+ {
+ String r (
+ process_regex (
+ namespace_ (t).name (), name, type_regex, L"type"));
+
+ t.context ().set ("name", escape (r));
+ }
+
+ void
+ process_name (SemanticGraph::Namespace& n,
+ String const& name,
+ char const* key)
+ {
+ String r (process_regex (name, type_regex, L"type"));
+ n.context ().set (key, escape (r));
+ }
+
+ // anyType and anySimpleType
+ //
+ virtual void
+ traverse (SemanticGraph::AnyType& t)
+ {
+ process_name (t, "type");
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnySimpleType& t)
+ {
+ process_name (t, "simple,type");
+ }
+
+ // Integrals.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte& t)
+ {
+ process_name (t, "byte");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte& t)
+ {
+ process_name (t, "unsigned,byte");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short& t)
+ {
+ process_name (t, "short");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort& t)
+ {
+ process_name (t, "unsigned,short");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int& t)
+ {
+ process_name (t, "int");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt& t)
+ {
+ process_name (t, "unsigned,int");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long& t)
+ {
+ process_name (t, "long");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong& t)
+ {
+ process_name (t, "unsigned,long");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer& t)
+ {
+ process_name (t, "integer");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
+ {
+ process_name (t, "non,positive,integer");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
+ {
+ process_name (t, "non,negative,integer");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger& t)
+ {
+ process_name (t, "positive,integer");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger& t)
+ {
+ process_name (t, "negative,integer");
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean& t)
+ {
+ process_name (t, "boolean");
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ process_name (t, "float");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ process_name (t, "double");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal& t)
+ {
+ process_name (t, "decimal");
+ }
+
+ // Strings.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::String& t)
+ {
+ process_name (t, "string");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString& t)
+ {
+ process_name (t, "normalized,string");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token& t)
+ {
+ process_name (t, "token");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken& t)
+ {
+ process_name (t, "nmtoken");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens& t)
+ {
+ process_name (t, "nmtokens");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name& t)
+ {
+ process_name (t, "name");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName& t)
+ {
+ process_name (t, "ncname");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Language& t)
+ {
+ process_name (t, "language");
+ }
+
+ // ID/IDREF.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Id& t)
+ {
+ process_name (t, "id");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRef& t)
+ {
+ process_name (t, "idref");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs& t)
+ {
+ process_name (t, "idrefs");
+ }
+
+
+ // URI.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::AnyURI& t)
+ {
+ process_name (t, "uri");
+ }
+
+ // Qualified name.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::QName& t)
+ {
+ process_name (t, "qname");
+ }
+
+ // Binary.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary& t)
+ {
+ process_name (t, "base64,binary");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary& t)
+ {
+ process_name (t, "hex,binary");
+ }
+
+
+ // Date/time.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Date& t)
+ {
+ process_name (t, "date");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::DateTime& t)
+ {
+ process_name (t, "date,time");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Duration& t)
+ {
+ process_name (t, "duration");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Day& t)
+ {
+ process_name (t, "gday");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Month& t)
+ {
+ process_name (t, "gmonth");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::MonthDay& t)
+ {
+ process_name (t, "gmonth,day");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Year& t)
+ {
+ process_name (t, "gyear");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::YearMonth& t)
+ {
+ process_name (t, "gyear,month");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Time& t)
+ {
+ process_name (t, "time");
+ }
+
+ // Entity.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entity& t)
+ {
+ process_name (t, "entity");
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entities& t)
+ {
+ process_name (t, "entities");
+ }
+
+ virtual void
+ post (SemanticGraph::Namespace& n)
+ {
+ // Assign names to extra stuff in the XML Schema namespace.
+ //
+ process_name (n, "container", "container");
+ process_name (n, "buffer", "buffer");
+ process_name (n, "time,zone", "time-zone");
+
+ process_name (n, "content,order", "content-order");
+
+ if (options.generate_element_type ())
+ process_name (n, "element,type", "element-type");
+
+ if (options.generate_element_map ())
+ process_name (n, "element,map", "element-map");
+
+ if (options.generate_serialization ())
+ {
+ process_name (n, "namespace,info", "namespace-info");
+ process_name (n, "namespace,infomap", "namespace-infomap");
+ process_name (n, "list,stream", "list-stream");
+ process_name (n, "as,double", "as-double");
+ process_name (n, "as,decimal", "as-decimal");
+ process_name (n, "facet", "facet");
+ }
+
+ if (!options.generate_insertion ().empty ())
+ {
+ process_name (n, "ostream", "ostream");
+ }
+
+ if (!options.generate_extraction ().empty ())
+ {
+ process_name (n, "istream", "istream");
+ }
+
+ process_name (n, "flags", "flags");
+ process_name (n, "properties", "properties");
+
+ NarrowString fn (options.function_naming ());
+
+ if (fn == "knr")
+ n.context ().set ("tree-node-key", String ("tree_node_key"));
+ else if (fn == "ucc")
+ n.context ().set ("tree-node-key", String ("TreeNodeKey"));
+ else
+ n.context ().set ("tree-node-key", String ("treeNodeKey"));
+
+ process_name (n, "exception", "exception");
+ process_name (n, "parsing", "parsing");
+ process_name (n, "expected,element", "expected-element");
+ process_name (n, "unexpected,element", "unexpected-element");
+ process_name (n, "expected,attribute", "expected-attribute");
+ process_name (n, "unexpected,enumerator", "unexpected-enumerator");
+ process_name (n, "expected,text,content", "expected-text-content");
+ process_name (n, "no,type,info", "no-type-info");
+ process_name (n, "no,element,info", "no-element-info");
+ process_name (n, "not,derived", "not-derived");
+ process_name (n, "duplicate,id", "duplicate-id");
+ process_name (n, "serialization", "serialization");
+ process_name (n, "no,namespace,mapping", "no-namespace-mapping");
+ process_name (n, "no,prefix,mapping", "no-prefix-mapping");
+ process_name (n, "xsi,already,in,use", "xsi-already-in-use");
+ process_name (n, "bounds", "bounds");
+
+ process_name (n, "severity", "severity");
+ process_name (n, "error", "error");
+ process_name (n, "diagnostics", "diagnostics");
+
+ if (!options.suppress_parsing () ||
+ options.generate_serialization ())
+ {
+ process_name (n, "error,handler", "error-handler");
+ }
+
+ Namespace::post (n);
+ }
+
+ private:
+ Traversal::Names names_;
+ };
+
+
+ // Go into sourced/included/imported schemas while making sure
+ // we don't process the same stuff more than once.
+ //
+ struct UsesPassOne: Traversal::Uses
+ {
+ virtual void
+ traverse (Type& u)
+ {
+ SemanticGraph::Schema& s (u.schema ());
+
+ if (!s.context ().count ("cxx-tree-name-processor-pass-1"))
+ {
+ s.context ().set ("cxx-tree-name-processor-pass-1", true);
+ Traversal::Uses::traverse (u);
+ }
+ }
+ };
+
+ struct UsesPassThree: Traversal::Uses
+ {
+ virtual void
+ traverse (Type& u)
+ {
+ SemanticGraph::Schema& s (u.schema ());
+
+ if (!s.context ().count ("cxx-tree-name-processor-pass-3"))
+ {
+ s.context ().set ("cxx-tree-name-processor-pass-3", true);
+ Traversal::Uses::traverse (u);
+ }
+ }
+ };
+
+ // Go into implied schemas while making sure we don't process
+ // the same stuff more than once.
+ //
+ struct Implies: Traversal::Implies
+ {
+ virtual void
+ traverse (SemanticGraph::Implies& i)
+ {
+ SemanticGraph::Schema& s (i.schema ());
+
+ if (!s.context ().count ("cxx-tree-name-processor-seen"))
+ {
+ s.context ().set ("cxx-tree-name-processor-seen", true);
+ Traversal::Implies::traverse (i);
+ }
+ }
+ };
+
+ bool
+ process_impl (options const& ops,
+ SemanticGraph::Schema& tu,
+ SemanticGraph::Path const& file,
+ StringLiteralMap const& map)
+ {
+ try
+ {
+ Counts counts;
+ Context ctx (ops, counts, false, tu, file, map);
+
+ if (tu.names_begin ()->named ().name () ==
+ L"http://www.w3.org/2001/XMLSchema")
+ {
+ // XML Schema namespace.
+ //
+ Traversal::Schema xs_schema;
+ Traversal::Names xs_schema_names;
+ FundamentalNamespace xs_ns (ctx);
+
+ xs_schema >> xs_schema_names >> xs_ns;
+
+ xs_schema.dispatch (tu);
+ }
+ else
+ {
+
+ // Pass one - assign names to global types. This pass cannot
+ // be combined with pass two because of possible recursive
+ // schema inclusions. Also note that we check first if this
+ // schema has already been processed which may happen in the
+ // file-per-type compilation mode.
+ //
+ if (!tu.context ().count ("cxx-tree-name-processor-pass-1"))
+ {
+ Traversal::Schema schema;
+ Traversal::Schema xs_schema;
+ UsesPassOne uses;
+ Implies implies;
+
+ schema >> uses >> schema;
+ schema >> implies >> xs_schema;
+
+ Traversal::Names schema_names;
+ Traversal::Names xs_schema_names;
+ NamespacePassOne ns (ctx);
+ FundamentalNamespace xs_ns (ctx);
+
+ schema >> schema_names >> ns;
+ xs_schema >> xs_schema_names >> xs_ns;
+
+ // Some twisted schemas do recusive self-inclusion.
+ //
+ tu.context ().set ("cxx-tree-name-processor-pass-1", true);
+
+ schema.dispatch (tu);
+ }
+
+ // Pass two - assign names inside complex types. Here
+ // we don't need to go into included/imported schemas.
+ //
+ {
+ Traversal::Schema schema;
+ Sources sources;
+
+ schema >> sources >> schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+
+ schema >> schema_names >> ns >> ns_names;
+
+ Complex complex (ctx);
+ Traversal::Enumeration enumeration; // Avoid fallback on complex.
+
+ ns_names >> complex;
+ ns_names >> enumeration;
+
+ schema.dispatch (tu);
+ }
+
+ // Pass three - assign names to global elements as well as
+ // inside enums. Also note that we check first if this schema
+ // has already been processed which may happen in the file-per-
+ // type compilation mode.
+ //
+ if (!tu.context ().count ("cxx-tree-name-processor-pass-3"))
+ {
+ Traversal::Schema schema;
+ UsesPassThree uses;
+
+ schema >> uses >> schema;
+
+ Traversal::Names schema_names;
+ NamespacePassThree ns (ctx);
+ Traversal::Namespace ns_enum;
+
+ schema >> schema_names;
+
+ schema_names >> ns;
+ schema_names >> ns_enum;
+
+ Traversal::Names ns_names;
+ Enumeration enumeration (ctx);
+
+ ns_enum >> ns_names >> enumeration;
+
+ // Some twisted schemas do recusive self-inclusion.
+ //
+ tu.context ().set ("cxx-tree-name-processor-pass-3", true);
+
+ schema.dispatch (tu);
+ }
+ }
+ }
+ catch (Context::Failed const&)
+ {
+ // Diagnostics has already been issued.
+ //
+ return false;
+ }
+
+ return true;
+ }
+ }
+
+ bool NameProcessor::
+ process (options const& ops,
+ SemanticGraph::Schema& tu,
+ SemanticGraph::Path const& file,
+ StringLiteralMap const& map)
+ {
+ return process_impl (ops, tu, file, map);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/name-processor.hxx b/xsd/cxx/tree/name-processor.hxx
new file mode 100644
index 0000000..632b05e
--- /dev/null
+++ b/xsd/cxx/tree/name-processor.hxx
@@ -0,0 +1,28 @@
+// file : xsd/cxx/tree/name-processor.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_NAME_PROCESSOR_HXX
+#define XSD_CXX_TREE_NAME_PROCESSOR_HXX
+
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/tree/elements.hxx>
+#include <xsd/cxx/tree/options.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ class NameProcessor
+ {
+ public:
+ bool
+ process (options const&,
+ XSDFrontend::SemanticGraph::Schema&,
+ XSDFrontend::SemanticGraph::Path const& file,
+ StringLiteralMap const&);
+ };
+ }
+}
+
+#endif // XSD_CXX_TREE_NAME_PROCESSOR_HXX
diff --git a/xsd/cxx/tree/options.cli b/xsd/cxx/tree/options.cli
new file mode 100644
index 0000000..0230429
--- /dev/null
+++ b/xsd/cxx/tree/options.cli
@@ -0,0 +1,479 @@
+// file : xsd/cxx/tree/options.cli
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+include <cstddef>; // std::size_t
+
+include <xsd/types.hxx>; // NarrowString, NarrowStrings
+
+include <xsd/cxx/options.cli>;
+
+namespace CXX
+{
+ namespace Tree
+ {
+ class options: CXX::options
+ {
+ // Polymorphism.
+ //
+ bool --generate-polymorphic
+ {
+ "Generate polymorphism-aware code. Specify this option if you use
+ substitution groups or \cb{xsi:type}. Use the \cb{--polymorphic-type}
+ or \cb{--polymorphic-type-all} option to specify which type
+ hierarchies are polymorphic."
+ };
+
+ NarrowStrings --polymorphic-type
+ {
+ "<type>",
+ "Indicate that <type> is a root of a polymorphic type hierarchy. The
+ compiler can often automatically determine which types are
+ polymorphic based on the substitution group declarations. However,
+ you may need to use this option if you are not using substitution
+ groups or if substitution groups are defined in another schema. You
+ need to specify this option when compiling every schema file that
+ references <type>. The <type> argument is an XML Schema type name
+ that can be optionally qualified with a namespace in the
+ \c{\i{namespace}\b{#}\i{name}} form."
+ };
+
+ bool --polymorphic-type-all
+ {
+ "Indicate that all types should be treated as polymorphic."
+ };
+
+ unsigned long --polymorphic-plate = 0
+ {
+ "<num>",
+ "Specify the polymorphic map plate the generated code should register
+ on. This functionality is primarily useful to segregate multiple
+ schemas that define the same polymorphic types."
+ };
+
+ // Ordered content.
+ //
+ NarrowStrings --ordered-type
+ {
+ "<type>",
+ "Indicate that element order in <type> is significant. An example
+ would be a complex type with unbounded choice as a content model
+ where the element order in XML has application-specific semantics.
+ For ordered types the compiler generates a special container data
+ member and a corresponding set of accessors and modifiers that are
+ used to capture the order of elements and, for mixed content, of
+ text.
+
+ The <type> argument is an XML Schema type name that can be optionally
+ qualified with a namespace in the \c{\i{namespace}\b{#}\i{name}} form.
+ Note also that you will need to specify this option when compiling
+ every schema file that has other ordered types derived from this
+ type."
+ };
+
+ bool --ordered-type-derived
+ {
+ "Automatically treat types derived from ordered bases as also
+ ordered. This is primarily useful if you would like to be able
+ to iterate over the complete content using the content order
+ container."
+ };
+
+ bool --ordered-type-mixed
+ {
+ "Automatically treat complex types with mixed content as ordered."
+ };
+
+ bool --ordered-type-all
+ {
+ "Indicate that element order in all types is significant."
+ };
+
+ NarrowString --order-container
+ {
+ "<type>",
+ "Specify a custom class template that should be used as a container
+ for the content order in ordered types instead of the default
+ \cb{std::vector}. See \cb{--ordered-type} for more information on
+ ordered type. This option is primarily useful if you need to
+ perform more complex lookups in the content order container, for
+ example by element id. In this case, a container like Boost
+ multi-index may be more convenient. Note that if using a custom
+ container, you will also most likely need to include the relevant
+ headers using the \cb{--hxx-prologue*} options."
+ };
+
+ // Features.
+ //
+ bool --generate-serialization
+ {
+ "Generate serialization functions. Serialization functions convert
+ the object model back to XML."
+ };
+
+ bool --generate-ostream
+ {
+ "Generate ostream insertion operators (\cb{operator<<}) for generated
+ types. This allows one to easily print a fragment or the whole object
+ model for debugging or logging."
+ };
+
+ bool --generate-doxygen
+ {
+ "Generate documentation comments suitable for extraction by the
+ Doxygen documentation system. Documentation from annotations is
+ added to the comments if present in the schema."
+ };
+
+ bool --generate-comparison
+ {
+ "Generate comparison operators (\cb{operator==} and \cb{operator!=})
+ for complex types. Comparison is performed member-wise."
+ };
+
+ bool --generate-default-ctor
+ {
+ "Generate default constructors even for types that have required
+ members. Required members of an instance constructed using such a
+ constructor are not initialized and accessing them results in
+ undefined behavior."
+ };
+
+ bool --generate-from-base-ctor
+ {
+ "Generate constructors that expect an instance of a base type
+ followed by all required members."
+ };
+
+ bool --suppress-assignment
+ {
+ "Suppress the generation of copy assignment operators for complex
+ types. If this option is specified, the copy assignment operators
+ for such types are declared private and left unimplemented."
+ };
+
+ bool --generate-detach
+ {
+ "Generate detach functions for required elements and attributes.
+ Detach functions for optional and sequence cardinalities are
+ provided by the respective containers. These functions, for
+ example, allow you to move sub-trees in the object model either
+ within the same tree or between different trees."
+ };
+
+ bool --generate-wildcard
+ {
+ "Generate accessors and modifiers as well as parsing and serialization
+ code for XML Schema wildcards (\cb{any} and \cb{anyAttribute}). XML
+ content matched by wildcards is presented as DOM fragments. Note
+ that you need to initialize the Xerces-C++ runtime if you are using
+ this option."
+ };
+
+ bool --generate-any-type
+ {
+ "Extract and store content of the XML Schema \cb{anyType} type as a
+ DOM fragment. Note that you need to initialize the Xerces-C++ runtime
+ if you are using this option."
+ };
+
+ NarrowStrings --generate-insertion
+ {
+ "<os>",
+ "Generate data representation stream insertion operators for the <os>
+ output stream type. Repeat this option to specify more than one
+ stream type. The ACE CDR stream (\cb{ACE_OutputCDR}) and RPC XDR
+ are recognized by the compiler and the necessary \cb{#include}
+ directives are automatically generated. For custom stream types use
+ the \cb{--hxx-prologue*} options to provide the necessary
+ declarations."
+ };
+
+ NarrowStrings --generate-extraction
+ {
+ "<is>",
+ "Generate data representation stream extraction constructors for the
+ <is> input stream type. Repeat this option to specify more than one
+ stream type. The ACE CDR stream (\cb{ACE_InputCDR}) and RPC XDR are
+ recognized by the compiler and the necessary \cb{#include} directives
+ are automatically generated. For custom stream types use the
+ \cb{--hxx-prologue*} options to provide the necessary declarations."
+ };
+
+ bool --generate-forward
+ {
+ "Generate a separate header file with forward declarations for the
+ types being generated."
+ };
+
+ bool --suppress-parsing
+ {
+ "Suppress the generation of the parsing functions and constructors.
+ Use this option to reduce the generated code size when parsing from
+ XML is not needed."
+ };
+
+ bool --generate-element-type
+ {
+ "Generate types instead of parsing and serialization functions for
+ root elements. This is primarily useful to distinguish object models
+ with the same root type but with different root elements."
+ };
+
+ bool --generate-element-map
+ {
+ "Generate a root element map that allows uniform parsing and
+ serialization of multiple root elements. This option is only valid
+ together with \cb{--generate-element-type}."
+ };
+
+ bool --generate-intellisense
+ {
+ "Generate workarounds for IntelliSense bugs in Visual Studio 2005
+ (8.0). When this option is used, the resulting code is slightly
+ more verbose. IntelliSense in Visual Studio 2008 (9.0) and later
+ does not require these workarounds. Support for IntelliSense in
+ Visual Studio 2003 (7.1) is improved with this option but is
+ still incomplete."
+ };
+
+ bool --omit-default-attributes
+ {
+ "Omit attributes with default and fixed values from serialized XML
+ documents."
+ };
+
+ // Naming.
+ //
+ NarrowString --type-naming = "knr"
+ {
+ "<style>",
+ "Specify the type naming convention that should be used in the
+ generated code. Valid styles are \cb{knr} (default), \cb{ucc},
+ and \cb{java}. See the NAMING CONVENTION section below for more
+ information."
+ };
+
+ NarrowString --function-naming = "knr"
+ {
+ "<style>",
+ "Specify the function naming convention that should be used in the
+ generated code. Valid styles are \cb{knr} (default), \cb{lcc},
+ \cb{ucc}, and \cb{java}. See the NAMING CONVENTION section below
+ for more information."
+ };
+
+ NarrowStrings --type-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema type names to C++ type names. See the NAMING CONVENTION
+ section below for more information."
+ };
+
+ NarrowStrings --accessor-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema names of elements/attributes to C++ accessor function
+ names. See the NAMING CONVENTION section below for more information."
+ };
+
+ NarrowStrings --one-accessor-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema names of elements/attributes with cardinality one to
+ C++ accessor function names. See the NAMING CONVENTION section
+ below for more information."
+ };
+
+ NarrowStrings --opt-accessor-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema names of elements/attributes with cardinality optional
+ to C++ accessor function names. See the NAMING CONVENTION section
+ below for more information."
+ };
+
+ NarrowStrings --seq-accessor-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema names of elements/attributes with cardinality sequence
+ to C++ accessor function names. See the NAMING CONVENTION section
+ below for more information."
+ };
+
+ NarrowStrings --modifier-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema names of elements/attributes to C++ modifier function
+ names. See the NAMING CONVENTION section below for more information."
+ };
+
+ NarrowStrings --one-modifier-regex
+
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema names of elements/attributes with cardinality one to C++
+ modifier function names. See the NAMING CONVENTION section below
+ for more information."
+ };
+
+ NarrowStrings --opt-modifier-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema names of elements/attributes with cardinality optional
+ to C++ modifier function names. See the NAMING CONVENTION section
+ below for more information."
+ };
+
+ NarrowStrings --seq-modifier-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema names of elements/attributes with cardinality sequence
+ to C++ modifier function names. See the NAMING CONVENTION section
+ below for more information."
+ };
+
+ NarrowStrings --parser-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema element names to C++ parsing function names. See the
+ NAMING CONVENTION section below for more information."
+ };
+
+ NarrowStrings --serializer-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema element names to C++ serialization function names. See
+ the NAMING CONVENTION section below for more information."
+ };
+
+ NarrowStrings --const-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema-derived names to C++ constant names. See the NAMING
+ CONVENTION section below for more information."
+ };
+
+ NarrowStrings --enumerator-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema enumeration values to C++ enumerator names. See the
+ NAMING CONVENTION section below for more information."
+ };
+
+ NarrowStrings --element-type-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate
+ XML Schema element names to C++ element type names. See the NAMING
+ CONVENTION section below for more information."
+ };
+
+ bool --name-regex-trace
+ {
+ "Trace the process of applying regular expressions specified with
+ the name transformation options. Use this option to find out why
+ your regular expressions don't do what you expected them to do."
+ };
+
+ // Root element.
+ //
+ bool --root-element-first
+ {
+ "Treat only the first global element as a document root. By default
+ all global elements are considered document roots."
+ };
+
+ bool --root-element-last
+ {
+ "Treat only the last global element as a document root. By default
+ all global elements are considered document roots."
+ };
+
+ bool --root-element-all
+ {
+ "Treat all global elements as document roots. This is the default
+ behavior. By explicitly specifying this option you can suppress
+ the warning that is issued if more than one global element is
+ defined."
+ };
+
+ bool --root-element-none
+ {
+ "Do not treat any global elements as document roots. By default all
+ global elements are considered document roots."
+ };
+
+ NarrowStrings --root-element
+ {
+ "<element>",
+ "Treat only <element> as a document root. Repeat this option to
+ specify more than one root element."
+ };
+
+ // Custom type.
+ //
+ NarrowStrings --custom-type
+ {
+ "<map>",
+ "Use a custom C++ type instead of the generated class. The <map>
+ argument is in the form \c{\i{name}[\b{=}\i{type}[\b{/}\i{base}]]},
+ where \i{name} is a type name as defined in XML Schema and \i{type}
+ is a C++ type name that should be used instead. If \i{type} is not
+ present or empty then the custom type is assumed to have the same
+ name and be defined in the same namespace as the generated class
+ would have. If \i{base} is specified then the generated class is
+ still generated but with that name."
+ };
+
+ NarrowStrings --custom-type-regex
+ {
+ "<regex>",
+ "Use custom C++ types instead of the generated classes. The <regex>
+ argument is in the form
+ \c{\b{/}\i{name-pat}\b{/}[\i{type-sub}\b{/}[\i{base-sub}\b{/}]]},
+ where \i{name-pat} is a regex pattern that will be matched against
+ type names as defined in XML Schema and \i{type-sub} is a C++ type
+ name substitution that should be used instead. If \i{type-sub} is
+ not present or its substitution results in an empty string then
+ the custom type is assumed to have the same name and be defined
+ in the same namespace as the generated class would have. If
+ \i{base-sub} is present and its substitution results in a
+ non-empty string then the generated class is still generated
+ but with the result of this substitution as its name. The pattern
+ and substitutions are in the Perl regular expression format.
+ See also the REGEX AND SHELL QUOTING section below."
+ };
+
+ // Parts.
+ //
+ std::size_t --parts = 1
+ {
+ "<num>",
+ "Split generated source code into <num> parts. This is useful when
+ translating large, monolithic schemas and a C++ compiler is not
+ able to compile the resulting source code at once (usually due
+ to insufficient memory)."
+ };
+
+ NarrowString --parts-suffix = "-"
+ {
+ "<suffix>",
+ "Use <suffix> instead of the default '\cb{-}' to separate the file
+ name from the part number."
+ };
+ };
+ }
+}
diff --git a/xsd/cxx/tree/order-processor.cxx b/xsd/cxx/tree/order-processor.cxx
new file mode 100644
index 0000000..ccc3dc5
--- /dev/null
+++ b/xsd/cxx/tree/order-processor.cxx
@@ -0,0 +1,243 @@
+// file : xsde/cxx/tree/order-processor.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <iostream>
+
+#include <xsd/cxx/tree/elements.hxx>
+#include <xsd/cxx/tree/order-processor.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct Member: Traversal::Element, Traversal::Any
+ {
+ Member (size_t count): count_ (count) {}
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (Context::skip (e))
+ return;
+
+ e.context ().set ("ordered-id", count_++);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ a.context ().set ("ordered-id", count_++);
+ }
+
+ size_t count_;
+ };
+
+ //
+ //
+ struct Type: Traversal::Complex
+ {
+ Type (TypeNameSet& ordered_types, bool derived, bool mixed, bool all)
+ : ordered_types_ (ordered_types),
+ derived_ (derived),
+ mixed_ (mixed),
+ all_ (all)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ SemanticGraph::Context& ctx (c.context ());
+
+ if (!ctx.count ("ordered"))
+ {
+ // First process our base.
+ //
+ if (c.inherits_p ())
+ {
+ SemanticGraph::Type& b (c.inherits ().base ());
+
+ if (!b.context ().count ("ordered"))
+ dispatch (b);
+ }
+
+ // See if our base (not necessarily immediate) is ordered.
+ //
+ using SemanticGraph::Complex;
+
+ Complex* b (0);
+
+ for (Complex* p (&c); p->inherits_p ();)
+ {
+ if ((b = dynamic_cast<Complex*> (&p->inherits ().base ())))
+ {
+ if (Context::ordered_p (*b))
+ break;
+
+ p = b;
+ }
+ else
+ break;
+ }
+
+ bool o (all_ ||
+ (derived_ && b != 0 && Context::ordered_p (*b)) ||
+ (mixed_ && c.mixed_p ()) ||
+ ordered_types_.find (c));
+ ctx.set ("ordered", o);
+
+ // Assign ids to elements and wildcards, calculate total count.
+ //
+ if (o)
+ {
+ size_t count (
+ b != 0 && Context::ordered_p (*b)
+ ? b->context ().get<size_t> ("ordered-count")
+ : 1);
+
+ ctx.set ("ordered-start", count);
+
+ Member m (count);
+ Traversal::Names n (m);
+ names (c, n);
+
+ // Assign content id for mixed text.
+ //
+ if (Context::mixed_p (c) && count == 1)
+ ctx.set ("mixed-ordered-id", m.count_++);
+
+ ctx.set ("ordered-count", m.count_);
+ }
+ }
+ }
+
+ private:
+ TypeNameSet& ordered_types_;
+ bool derived_;
+ bool mixed_;
+ bool all_;
+ };
+
+ // Go into sourced/included/imported schemas while making sure
+ // we don't process the same stuff more than once.
+ //
+ struct Uses: Traversal::Sources,
+ Traversal::Includes,
+ Traversal::Imports
+ {
+ Uses (char const* seen_key)
+ : seen_key_ (seen_key)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Sources& sr)
+ {
+ SemanticGraph::Schema& s (sr.schema ());
+
+ if (!s.context ().count (seen_key_))
+ {
+ s.context ().set (seen_key_, true);
+ Traversal::Sources::traverse (sr);
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Includes& i)
+ {
+ SemanticGraph::Schema& s (i.schema ());
+
+ if (!s.context ().count (seen_key_))
+ {
+ s.context ().set (seen_key_, true);
+ Traversal::Includes::traverse (i);
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Imports& i)
+ {
+ SemanticGraph::Schema& s (i.schema ());
+
+ if (!s.context ().count (seen_key_))
+ {
+ s.context ().set (seen_key_, true);
+ Traversal::Imports::traverse (i);
+ }
+ }
+
+ private:
+ char const* seen_key_;
+ };
+
+ char const* seen_key = "cxx-tree-order-processor-seen";
+
+ bool
+ process_impl (options const& ops,
+ SemanticGraph::Schema& tu,
+ SemanticGraph::Path const&)
+ {
+ // Prepare a set of ordered types.
+ //
+ TypeNameSet ordered_types (ops.ordered_type ().begin (),
+ ops.ordered_type ().end ());
+
+ // Root schema in the file-per-type mode is just a bunch
+ // of includes without a namespace.
+ //
+ SemanticGraph::Schema::NamesIterator i (tu.names_begin ());
+
+ // Nothing to do if this is the XML Schema namespace.
+ //
+ if (i == tu.names_end () ||
+ i->named ().name () != L"http://www.w3.org/2001/XMLSchema")
+ {
+ // Note that we check first if this schema has already been
+ // processed which may happen in the file-per-type compilation
+ // mode.
+ //
+ if (!tu.context ().count (seen_key))
+ {
+ Traversal::Schema schema;
+ Uses uses (seen_key);
+
+ schema >> uses >> schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ Type type (ordered_types,
+ ops.ordered_type_derived (),
+ ops.ordered_type_mixed (),
+ ops.ordered_type_all ());
+
+ schema >> schema_names >> ns >> ns_names >> type;
+
+ // Some twisted schemas do recusive self-inclusion.
+ //
+ tu.context ().set (seen_key, true);
+
+ schema.dispatch (tu);
+ }
+ }
+
+ return true;
+ }
+ }
+
+ bool OrderProcessor::
+ process (options const& ops,
+ SemanticGraph::Schema& tu,
+ SemanticGraph::Path const& file)
+ {
+ return process_impl (ops, tu, file);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/order-processor.hxx b/xsd/cxx/tree/order-processor.hxx
new file mode 100644
index 0000000..868547d
--- /dev/null
+++ b/xsd/cxx/tree/order-processor.hxx
@@ -0,0 +1,29 @@
+// file : xsde/cxx/tree/order-processor.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_ORDER_PROCESSOR_HXX
+#define XSD_CXX_TREE_ORDER_PROCESSOR_HXX
+
+#include <libxsd-frontend/semantic-graph.hxx>
+
+#include <xsd/xsd.hxx>
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/tree/options.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ class OrderProcessor
+ {
+ public:
+ bool
+ process (options const&,
+ XSDFrontend::SemanticGraph::Schema&,
+ XSDFrontend::SemanticGraph::Path const& file);
+ };
+ }
+}
+
+#endif // XSD_CXX_TREE_ORDER_PROCESSOR_HXX
diff --git a/xsd/cxx/tree/parser-header.cxx b/xsd/cxx/tree/parser-header.cxx
new file mode 100644
index 0000000..9ef9e89
--- /dev/null
+++ b/xsd/cxx/tree/parser-header.cxx
@@ -0,0 +1,472 @@
+// file : xsd/cxx/tree/parser-header.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/parser-header.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct ElementFunction: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ ElementFunction (Context& c)
+ : GlobalElementBase (c), Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (!doc_root_p (e))
+ return;
+
+ String const& name (eparser (e));
+ String const& error_handler (error_handler_type);
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @name Parsing functions for the %" <<
+ comment (e.name ()) << " document root." << endl;
+
+ if (e.annotated_p ())
+ {
+ os << " *" << endl;
+ write_annotation (e.annotation ());
+ }
+
+ os << " */" << endl
+ << "//@{" << endl
+ << endl;
+ }
+
+ if (!doxygen)
+ {
+ os << "// Parse a URI or a local file." << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a URI or a local file." << endl
+ << " *" << endl
+ << " * @param uri A URI or a local file name." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * This function uses exceptions to report parsing errors." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (const " << string_type << "& uri," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a URI or a local file with an error handler." << endl
+ << " *" << endl
+ << " * @param uri A URI or a local file name." << endl
+ << " * @param eh An error handler." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * This function reports parsing errors by calling the " <<
+ "error handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (const " << string_type << "& uri," << endl
+ << error_handler << "& eh," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a URI or a local file with a Xerces-C++ " <<
+ "DOM error" << endl
+ << " * handler." << endl
+ << " *" << endl
+ << " * @param uri A URI or a local file name." << endl
+ << " * @param eh A Xerces-C++ DOM error handler." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * This function reports parsing errors by calling the " <<
+ "error handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (const " << string_type << "& uri," << endl
+ << xerces_ns << "::DOMErrorHandler& eh," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (!doxygen)
+ {
+ os << "// Parse std::istream." << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a standard input stream." << endl
+ << " *" << endl
+ << " * @param is A standrad input stream." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * This function uses exceptions to report parsing errors." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a standard input stream with an error handler." << endl
+ << " *" << endl
+ << " * @param is A standrad input stream." << endl
+ << " * @param eh An error handler." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * This function reports parsing errors by calling the " <<
+ "error handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << error_handler << "& eh," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a standard input stream with a " <<
+ "Xerces-C++ DOM error" << endl
+ << " * handler." << endl
+ << " *" << endl
+ << " * @param is A standrad input stream." << endl
+ << " * @param eh A Xerces-C++ DOM error handler." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * This function reports parsing errors by calling the " <<
+ "error handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << xerces_ns << "::DOMErrorHandler& eh," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a standard input stream with a resource id." << endl
+ << " *" << endl
+ << " * @param is A standrad input stream." << endl
+ << " * @param id A resource id." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * The resource id is used to identify the document " <<
+ "being parsed in" << endl
+ << " * diagnostics as well as to resolve relative paths." << endl
+ << " *" << endl
+ << " * This function uses exceptions to report parsing errors." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << "const " << string_type << "& id," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a standard input stream with a resource " <<
+ "id and an" << endl
+ << " * error handler." << endl
+ << " *" << endl
+ << " * @param is A standrad input stream." << endl
+ << " * @param id A resource id." << endl
+ << " * @param eh An error handler." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * The resource id is used to identify the document " <<
+ "being parsed in" << endl
+ << " * diagnostics as well as to resolve relative paths." << endl
+ << " *" << endl
+ << " * This function reports parsing errors by calling the " <<
+ "error handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << "const " << string_type << "& id," << endl
+ << error_handler << "& eh," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a standard input stream with a resource " <<
+ "id and a" << endl
+ << " * Xerces-C++ DOM error handler." << endl
+ << " *" << endl
+ << " * @param is A standrad input stream." << endl
+ << " * @param id A resource id." << endl
+ << " * @param eh A Xerces-C++ DOM error handler." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * The resource id is used to identify the document " <<
+ "being parsed in" << endl
+ << " * diagnostics as well as to resolve relative paths." << endl
+ << " *" << endl
+ << " * This function reports parsing errors by calling the " <<
+ "error handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << "const " << string_type << "& id," << endl
+ << xerces_ns << "::DOMErrorHandler& eh," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (!doxygen)
+ {
+ os << "// Parse xercesc::InputSource." << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a Xerces-C++ input source." << endl
+ << " *" << endl
+ << " * @param is A Xerces-C++ input source." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * This function uses exceptions to report parsing errors." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (" << xerces_ns << "::InputSource& is," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a Xerces-C++ input source with an " <<
+ "error handler." << endl
+ << " *" << endl
+ << " * @param is A Xerces-C++ input source." << endl
+ << " * @param eh An error handler." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * This function reports parsing errors by calling the " <<
+ "error handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (" << xerces_ns << "::InputSource& is," << endl
+ << error_handler << "& eh," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a Xerces-C++ input source with a " <<
+ "Xerces-C++ DOM" << endl
+ << " * error handler." << endl
+ << " *" << endl
+ << " * @param is A Xerces-C++ input source." << endl
+ << " * @param eh A Xerces-C++ DOM error handler." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * This function reports parsing errors by calling the " <<
+ "error handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (" << xerces_ns << "::InputSource& is," << endl
+ << xerces_ns << "::DOMErrorHandler& eh," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (!doxygen)
+ {
+ os << "// Parse xercesc::DOMDocument." << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a Xerces-C++ DOM document." << endl
+ << " *" << endl
+ << " * @param d A Xerces-C++ DOM document." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (const " << xerces_ns << "::DOMDocument& d," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Parse a Xerces-C++ DOM document." << endl
+ << " *" << endl
+ << " * @param d A pointer to the Xerces-C++ DOM document." << endl
+ << " * @param f Parsing flags." << endl
+ << " * @param p Parsing properties. " << endl
+ << " * @return A pointer to the root of the object model." << endl
+ << " *" << endl
+ << " * This function is normally used together with the " <<
+ "keep_dom and" << endl
+ << " * own_dom parsing flags to assign ownership of the DOM " <<
+ "document" << endl
+ << " * to the object model." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << auto_ptr << "< " << type_name (e) << " >" << endl
+ << name << " (" << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d," << endl
+ << flags_type << " f = 0," << endl
+ << "const " << properties_type << "& p = " << properties_type << " ());"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "//@}" << endl
+ << endl;
+ }
+ }
+
+ private:
+ String
+ type_name (Type& e)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (e.type ());
+
+ return o.str ();
+ }
+ };
+ }
+
+
+ void
+ generate_parser_header (Context& ctx)
+ {
+ ctx.os << "#include <iosfwd>" << endl
+ << endl
+ << "#include <xercesc/sax/InputSource.hpp>" << endl
+ << "#include <xercesc/dom/DOMDocument.hpp>" << endl
+ << "#include <xercesc/dom/DOMErrorHandler.hpp>" << endl
+ << endl;
+
+ Traversal::Schema schema;
+ Sources sources;
+ Traversal::Names names_ns, names;
+ Namespace ns (ctx);
+ ElementFunction element (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names >> element;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/parser-header.hxx b/xsd/cxx/tree/parser-header.hxx
new file mode 100644
index 0000000..b7860c4
--- /dev/null
+++ b/xsd/cxx/tree/parser-header.hxx
@@ -0,0 +1,19 @@
+// file : xsd/cxx/tree/parser-header.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_PARSER_HEADER_HXX
+#define XSD_CXX_TREE_PARSER_HEADER_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_parser_header (Context&);
+ }
+}
+
+#endif // XSD_CXX_TREE_PARSER_HEADER_HXX
diff --git a/xsd/cxx/tree/parser-source.cxx b/xsd/cxx/tree/parser-source.cxx
new file mode 100644
index 0000000..cee5ea6
--- /dev/null
+++ b/xsd/cxx/tree/parser-source.cxx
@@ -0,0 +1,541 @@
+// file : xsd/cxx/tree/parser-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/parser-source.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct ElementFunction: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ ElementFunction (Context& c)
+ : GlobalElementBase (c), Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (!doc_root_p (e))
+ return;
+
+ SemanticGraph::Type& t (e.type ());
+
+ // Check if we need to handle xsi:type and substitution groups.
+ // If this element's type is anonymous then we don't need to do
+ // anything.
+ //
+ bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
+
+ // Check if this element is abstract.
+ //
+ bool abst;
+ {
+ SemanticGraph::Complex* tc;
+ abst = (tc = dynamic_cast<SemanticGraph::Complex*> (&t)) != 0 &&
+ tc->abstract_p ();
+ }
+
+ // Nothing to do if we are abstract and not polymorphic.
+ //
+ if (abst && !polymorphic)
+ return;
+
+ String const& name (eparser (e));
+ String type (type_name (e));
+ String const& error_handler (error_handler_type);
+
+ // Note that I am using fq-name in function calls because g++ gets
+ // confused if the name is 'type'. (see tests/schema/anonymous)
+ //
+
+ char const* d (std >= cxx_version::cxx11 ? "std::move (d)" : "d");
+
+ // URI.
+ //
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (const " << string_type << "& u," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << "::xsd::cxx::xml::auto_initializer i (" << endl
+ << "(f & " << flags_type << "::dont_initialize) == 0," << endl
+ << "(f & " << flags_type << "::keep_dom) == 0);"
+ << endl
+ << "::xsd::cxx::tree::error_handler< " << char_type << " > h;"
+ << endl
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
+ << "u, h, p, f";
+
+ if (options.disable_multi_import ())
+ os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
+
+ os << "));"
+ << endl
+ << "h.throw_if_failed< ::xsd::cxx::tree::parsing< " <<
+ char_type << " > > ();"
+ << endl
+ << "return " << auto_ptr << "< " << type << " > (" << endl
+ << fq_name (e, "parser") << " (" << endl
+ << d << ", f | " << flags_type << "::own_dom, p));"
+ << "}";
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (const " << string_type << "& u," << endl
+ << error_handler << "& h," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << "::xsd::cxx::xml::auto_initializer i (" << endl
+ << "(f & " << flags_type << "::dont_initialize) == 0," << endl
+ << "(f & " << flags_type << "::keep_dom) == 0);"
+ << endl
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
+ << "u, h, p, f";
+
+ if (options.disable_multi_import ())
+ os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
+
+ os << "));"
+ << endl
+ << "if (!d.get ())" << endl
+ << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();"
+ << endl
+ << "return " << auto_ptr << "< " << type << " > (" << endl
+ << fq_name (e, "parser") << " (" << endl
+ << d << ", f | " << flags_type << "::own_dom, p));"
+ << "}";
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (const " << string_type << "& u," << endl
+ << xerces_ns << "::DOMErrorHandler& h," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
+ << "u, h, p, f";
+
+ if (options.disable_multi_import ())
+ os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
+
+ os << "));"
+ << endl
+ << "if (!d.get ())" << endl
+ << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();"
+ << endl
+ << "return " << auto_ptr << "< " << type << " > (" << endl
+ << fq_name (e, "parser") << " (" << endl
+ << d << ", f | " << flags_type << "::own_dom, p));"
+ << "}";
+
+
+ // istream
+ //
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << "::xsd::cxx::xml::auto_initializer i (" << endl
+ << "(f & " << flags_type << "::dont_initialize) == 0," << endl
+ << "(f & " << flags_type << "::keep_dom) == 0);"
+ << endl
+ << "::xsd::cxx::xml::sax::std_input_source isrc (is);"
+ << "return " << fq_name (e, "parser") << " (isrc, f, p);"
+ << "}";
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << error_handler << "& h," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << "::xsd::cxx::xml::auto_initializer i (" << endl
+ << "(f & " << flags_type << "::dont_initialize) == 0," << endl
+ << "(f & " << flags_type << "::keep_dom) == 0);"
+ << endl
+ << "::xsd::cxx::xml::sax::std_input_source isrc (is);"
+ << "return " << fq_name (e, "parser") << " (isrc, h, f, p);"
+ << "}";
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << xerces_ns << "::DOMErrorHandler& h," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << "::xsd::cxx::xml::sax::std_input_source isrc (is);"
+ << "return " << fq_name (e, "parser") << " (isrc, h, f, p);"
+ << "}";
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << "const " << string_type << "& sid," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << "::xsd::cxx::xml::auto_initializer i (" << endl
+ << "(f & " << flags_type << "::dont_initialize) == 0," << endl
+ << "(f & " << flags_type << "::keep_dom) == 0);"
+ << endl
+ << "::xsd::cxx::xml::sax::std_input_source isrc (is, sid);"
+ << "return " << fq_name (e, "parser") << " (isrc, f, p);"
+ << "}";
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << "const " << string_type << "& sid," << endl
+ << error_handler << "& h," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << "::xsd::cxx::xml::auto_initializer i (" << endl
+ << "(f & " << flags_type << "::dont_initialize) == 0," << endl
+ << "(f & " << flags_type << "::keep_dom) == 0);"
+ << endl
+ << "::xsd::cxx::xml::sax::std_input_source isrc (is, sid);"
+ << "return " << fq_name (e, "parser") << " (isrc, h, f, p);"
+ << "}";
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (::std::istream& is," << endl
+ << "const " << string_type << "& sid," << endl
+ << xerces_ns << "::DOMErrorHandler& h," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << "::xsd::cxx::xml::sax::std_input_source isrc (is, sid);"
+ << "return " << fq_name (e, "parser") << " (isrc, h, f, p);"
+ << "}";
+
+
+ // InputSource.
+ //
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (" << xerces_ns << "::InputSource& i," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << "::xsd::cxx::tree::error_handler< " << char_type << " > h;"
+ << endl
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
+ << "i, h, p, f";
+
+ if (options.disable_multi_import ())
+ os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
+
+ os << "));"
+ << endl
+ << "h.throw_if_failed< ::xsd::cxx::tree::parsing< " <<
+ char_type << " > > ();"
+ << endl
+ << "return " << auto_ptr << "< " << type << " > (" << endl
+ << fq_name (e, "parser") << " (" << endl
+ << d << ", f | " << flags_type << "::own_dom, p));"
+ << "}";
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (" << xerces_ns << "::InputSource& i," << endl
+ << error_handler << "& h," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
+ << "i, h, p, f";
+
+ if (options.disable_multi_import ())
+ os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
+
+ os << "));"
+ << endl
+ << "if (!d.get ())" << endl
+ << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();"
+ << endl
+ << "return " << auto_ptr << "< " << type << " > (" << endl
+ << fq_name (e, "parser") << " (" << endl
+ << d << ", f | " << flags_type << "::own_dom, p));"
+ << "}";
+
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (" << xerces_ns << "::InputSource& i," << endl
+ << xerces_ns << "::DOMErrorHandler& h," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
+ << "i, h, p, f";
+
+ if (options.disable_multi_import ())
+ os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
+
+ os << "));"
+ << endl
+ << "if (!d.get ())" << endl
+ << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();"
+ << endl
+ << "return " << auto_ptr << "< " << type << " > (" << endl
+ << fq_name (e, "parser") << " (" << endl
+ << d << ", f | " << flags_type << "::own_dom, p));"
+ << "}";
+
+
+ // DOM.
+ //
+
+ bool fund (false);
+ {
+ IsFundamentalType test (fund);
+ test.dispatch (t);
+ }
+
+ // const DOMDocument&
+ //
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (const " << xerces_ns << "::DOMDocument& doc," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "& p)"
+ << "{"
+ << "if (f & " << flags_type << "::keep_dom)"
+ << "{"
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << "static_cast< " << xerces_ns <<
+ "::DOMDocument* > (doc.cloneNode (true)));"
+ << endl
+ << "return " << auto_ptr << "< " << type << " > (" << endl
+ << fq_name (e, "parser") << " (" << endl
+ << d << ", f | " << flags_type << "::own_dom, p));"
+ << "}"
+ << "const " << xerces_ns << "::DOMElement& e (*doc.getDocumentElement ());"
+ << "const " << qname_type << " n (" << endl
+ << "::xsd::cxx::xml::dom::name< " << char_type << " > (e));"
+ << endl;
+
+ if (poly)
+ {
+ os << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
+ << "::xsd::cxx::tree::type_factory_map_instance< " <<
+ poly_plate << ", " << char_type << " > ().create (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (e.namespace_().name ()) << "," << endl;
+
+ if (abst)
+ os << "0,";
+ else
+ os << "&::xsd::cxx::tree::factory_impl< " << type << " >,";
+
+ os << endl
+ << "true, true, e, n, f, 0));"
+ << endl
+ << "if (tmp.get () != 0)"
+ << "{"
+ << auto_ptr << "< " << type << " > r (" << endl
+ << "dynamic_cast< " << type << "* > (tmp.get ()));"
+ << endl
+ << "if (r.get ())" << endl
+ << "tmp.release ();"
+ << "else" << endl
+ << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
+ " > ();"
+ << endl;
+ }
+ else
+ {
+ os << "if (n.name () == " << strlit (e.name ()) << " &&" << endl
+ << "n.namespace_ () == " << strlit (e.namespace_().name ()) << ")"
+ << "{";
+
+ if (fund)
+ {
+ os << auto_ptr << "< " << type << " > r (" << endl
+ << "new " << type << " (" << endl
+ << "::xsd::cxx::tree::traits< " << type << ", " <<
+ char_type;
+
+ if (t.is_a<SemanticGraph::Fundamental::Double> ())
+ os << ", ::xsd::cxx::tree::schema_type::double_";
+ else if (t.is_a<SemanticGraph::Fundamental::Decimal> ())
+ os << ", ::xsd::cxx::tree::schema_type::decimal";
+
+ os << " >::create (" << endl
+ << "e, f, 0)));";
+ }
+ else
+ {
+ os << auto_ptr << "< " << type << " > r (" << endl
+ << "::xsd::cxx::tree::traits< " << type << ", " <<
+ char_type << " >::create (" << endl
+ << "e, f, 0));";
+ }
+ }
+
+ os << "return r;"
+ << "}"
+ << "throw ::xsd::cxx::tree::unexpected_element < " <<
+ char_type << " > (" << endl
+ << "n.name ()," << endl
+ << "n.namespace_ ()," << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (e.namespace_().name ()) << ");"
+ << "}";
+
+
+ // dom::auto_ptr/unique_ptr<DOMDocument>
+ //
+ os << auto_ptr << "< " << type << " >" << endl
+ << name << " (" << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d," << endl
+ << flags_type << " f," << endl
+ << "const " << properties_type << "&)"
+ << "{"
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > c (" << endl
+ << "((f & " << flags_type << "::keep_dom) &&" << endl
+ << "!(f & " << flags_type << "::own_dom))" << endl
+ << "? static_cast< " << xerces_ns << "::DOMDocument* > (" <<
+ "d->cloneNode (true))" << endl
+ << ": 0);"
+ << endl
+ << xerces_ns << "::DOMDocument& doc (c.get () ? *c : *d);"
+ << "const " << xerces_ns << "::DOMElement& e (" <<
+ "*doc.getDocumentElement ());"
+ << endl
+ << "const " << qname_type << " n (" << endl
+ << "::xsd::cxx::xml::dom::name< " << char_type << " > (e));"
+ << endl
+ << "if (f & " << flags_type << "::keep_dom)" << endl
+ << "doc.setUserData (" << dom_node_key << "," << endl
+ << "(c.get () ? &c : &d)," << endl
+ << "0);"
+ << endl;
+
+ if (poly)
+ {
+ os << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
+ << "::xsd::cxx::tree::type_factory_map_instance< " <<
+ poly_plate << ", " << char_type << " > ().create (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (e.namespace_().name ()) << "," << endl;
+
+ if (abst)
+ os << "0,";
+ else
+ os << "&::xsd::cxx::tree::factory_impl< " << type << " >,";
+
+ os << endl
+ << "true, true, e, n, f, 0));"
+ << endl
+ << "if (tmp.get () != 0)"
+ << "{";
+ }
+ else
+ {
+ os << "if (n.name () == " << strlit (e.name ()) << " &&" << endl
+ << "n.namespace_ () == " << strlit (e.namespace_().name ()) << ")"
+ << "{";
+
+ if (fund)
+ {
+ os << auto_ptr << "< " << type << " > r (" << endl
+ << "new " << type << " (" << endl
+ << "::xsd::cxx::tree::traits< " << type << ", " <<
+ char_type;
+
+ if (t.is_a<SemanticGraph::Fundamental::Double> ())
+ os << ", ::xsd::cxx::tree::schema_type::double_";
+ else if (t.is_a<SemanticGraph::Fundamental::Decimal> ())
+ os << ", ::xsd::cxx::tree::schema_type::decimal";
+
+ os << " >::create (" << endl
+ << "e, f, 0)));";
+ }
+ else
+ {
+ os << auto_ptr << "< " << type << " > r (" << endl
+ << "::xsd::cxx::tree::traits< " << type << ", " <<
+ char_type << " >::create (" << endl
+ << "e, f, 0));";
+ }
+ }
+
+ if (poly)
+ {
+ os << endl
+ << auto_ptr << "< " << type << " > r (" << endl
+ << "dynamic_cast< " << type << "* > (tmp.get ()));"
+ << endl
+ << "if (r.get ())" << endl
+ << "tmp.release ();"
+ << "else" << endl
+ << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
+ " > ();"
+ << endl;
+ }
+
+ os << "return r;"
+ << "}"
+ << "throw ::xsd::cxx::tree::unexpected_element < " <<
+ char_type << " > (" << endl
+ << "n.name ()," << endl
+ << "n.namespace_ ()," << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (e.namespace_().name ()) << ");"
+ << "}";
+ }
+
+ private:
+ String
+ type_name (Type& e)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (e.type ());
+
+ return o.str ();
+ }
+ };
+ }
+
+ void
+ generate_parser_source (Context& ctx, size_t first, size_t last)
+ {
+ ctx.os << "#include <istream>" << endl
+ << "#include <xsd/cxx/xml/sax/std-input-source.hxx>" << endl
+ << "#include <xsd/cxx/tree/error-handler.hxx>" << endl
+ << endl;
+
+ Traversal::Schema schema;
+ Sources sources;
+ Traversal::Names names_ns, names;
+ Namespace ns (ctx, first, last);
+ ElementFunction element (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names >> element;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/parser-source.hxx b/xsd/cxx/tree/parser-source.hxx
new file mode 100644
index 0000000..1bb70d9
--- /dev/null
+++ b/xsd/cxx/tree/parser-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/parser-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_PARSER_SOURCE_HXX
+#define XSD_CXX_TREE_PARSER_SOURCE_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_parser_source (Context&, size_t first, size_t last);
+ }
+}
+
+#endif // XSD_CXX_TREE_PARSER_SOURCE_HXX
diff --git a/xsd/cxx/tree/polymorphism-processor.cxx b/xsd/cxx/tree/polymorphism-processor.cxx
new file mode 100644
index 0000000..4d07c69
--- /dev/null
+++ b/xsd/cxx/tree/polymorphism-processor.cxx
@@ -0,0 +1,740 @@
+// file : xsde/cxx/tree/polymorphism-processor.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <iostream>
+
+#include <xsd/cxx/tree/elements.hxx>
+#include <xsd/cxx/tree/polymorphism-processor.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ //
+ //
+ struct Type: Traversal::Type,
+ Traversal::Complex
+ {
+ Type (TypeNameSet& poly_types)
+ : poly_types_ (poly_types)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ SemanticGraph::Context& ctx (t.context ());
+
+ if (!ctx.count ("polymorphic"))
+ ctx.set ("polymorphic", poly_types_.find (t));
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ SemanticGraph::Context& ctx (c.context ());
+
+ if (!ctx.count ("polymorphic"))
+ {
+ // First check our base.
+ //
+ bool pb (false);
+ if (c.inherits_p ())
+ {
+ SemanticGraph::Type& b (c.inherits ().base ());
+
+ if (!b.context ().count ("polymorphic"))
+ dispatch (b);
+
+ pb = b.context ().get<bool> ("polymorphic");
+ }
+
+ ctx.set ("polymorphic", pb || poly_types_.find (c));
+ }
+ }
+
+ private:
+ TypeNameSet& poly_types_;
+ };
+
+ struct FundType: Traversal::AnyType,
+ Traversal::AnySimpleType,
+
+ Traversal::Fundamental::Byte,
+ Traversal::Fundamental::UnsignedByte,
+ Traversal::Fundamental::Short,
+ Traversal::Fundamental::UnsignedShort,
+ Traversal::Fundamental::Int,
+ Traversal::Fundamental::UnsignedInt,
+ Traversal::Fundamental::Long,
+ Traversal::Fundamental::UnsignedLong,
+ Traversal::Fundamental::Integer,
+ Traversal::Fundamental::NonPositiveInteger,
+ Traversal::Fundamental::NonNegativeInteger,
+ Traversal::Fundamental::PositiveInteger,
+ Traversal::Fundamental::NegativeInteger,
+
+ Traversal::Fundamental::Boolean,
+
+ Traversal::Fundamental::Float,
+ Traversal::Fundamental::Double,
+ Traversal::Fundamental::Decimal,
+
+ Traversal::Fundamental::String,
+ Traversal::Fundamental::NormalizedString,
+ Traversal::Fundamental::Token,
+ Traversal::Fundamental::Name,
+ Traversal::Fundamental::NameToken,
+ Traversal::Fundamental::NameTokens,
+ Traversal::Fundamental::NCName,
+ Traversal::Fundamental::Language,
+
+ Traversal::Fundamental::QName,
+
+ Traversal::Fundamental::Id,
+ Traversal::Fundamental::IdRef,
+ Traversal::Fundamental::IdRefs,
+
+ Traversal::Fundamental::AnyURI,
+
+ Traversal::Fundamental::Base64Binary,
+ Traversal::Fundamental::HexBinary,
+
+ Traversal::Fundamental::Date,
+ Traversal::Fundamental::DateTime,
+ Traversal::Fundamental::Duration,
+ Traversal::Fundamental::Day,
+ Traversal::Fundamental::Month,
+ Traversal::Fundamental::MonthDay,
+ Traversal::Fundamental::Year,
+ Traversal::Fundamental::YearMonth,
+ Traversal::Fundamental::Time,
+
+ Traversal::Fundamental::Entity,
+ Traversal::Fundamental::Entities
+ {
+ FundType (TypeNameSet& poly_types, bool& valid)
+ : poly_types_ (poly_types), valid_ (valid)
+ {
+ }
+
+ void
+ check (SemanticGraph::Type& t, bool fund)
+ {
+ SemanticGraph::Context& ctx (t.context ());
+
+ if (poly_types_.find (t))
+ {
+ if (!fund)
+ ctx.set ("polymorphic", true);
+ else
+ {
+ wcerr << "error: built-in type '" << t.name () << "' cannot "
+ << "be polymorphic because it is mapped to a fundamental "
+ << "C++ type"
+ << endl;
+
+ valid_ = false;
+ }
+ }
+ else
+ ctx.set ("polymorphic", false);
+ }
+
+ // anyType & anySimpleType.
+ //
+ virtual void
+ traverse (SemanticGraph::AnyType& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnySimpleType& t)
+ {
+ check (t, false);
+ }
+
+ // Boolean.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Boolean& t)
+ {
+ check (t, true);
+ }
+
+ // Integral types.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Byte& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedByte& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Short& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedShort& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Int& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedInt& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Long& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::UnsignedLong& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Integer& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::PositiveInteger& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NegativeInteger& t)
+ {
+ check (t, true);
+ }
+
+ // Floats.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Float& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Double& t)
+ {
+ check (t, true);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Decimal& t)
+ {
+ check (t, true);
+ }
+
+ // Strings.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::String& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NormalizedString& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Token& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameToken& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NameTokens& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Name& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::NCName& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Language& t)
+ {
+ check (t, false);
+ }
+
+
+ // Qualified name.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::QName& t)
+ {
+ check (t, false);
+ }
+
+
+ // ID/IDREF.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Id& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRef& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::IdRefs& t)
+ {
+ check (t, false);
+ }
+
+ // URI.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::AnyURI& t)
+ {
+ check (t, false);
+ }
+
+ // Binary.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Base64Binary& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::HexBinary& t)
+ {
+ check (t, false);
+ }
+
+
+ // Date/time.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Date& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::DateTime& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Duration& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Day& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Month& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::MonthDay& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Year& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::YearMonth& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Time& t)
+ {
+ check (t, false);
+ }
+
+ // Entity.
+ //
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entity& t)
+ {
+ check (t, false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Entities& t)
+ {
+ check (t, false);
+ }
+
+ private:
+ TypeNameSet& poly_types_;
+ bool& valid_;
+ };
+
+ struct GlobalElement: Traversal::Element
+ {
+ GlobalElement (TypeNameSet& poly_types,
+ bool& valid,
+ const WarningSet& disabled_warnings)
+ : poly_types_ (poly_types), valid_ (valid), warning_ (true)
+ {
+ if (disabled_warnings.find ("all") != disabled_warnings.end () ||
+ disabled_warnings.find ("T005") != disabled_warnings.end ())
+ warning_ = false;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ using SemanticGraph::Schema;
+
+ if (!e.substitutes_p ())
+ return;
+
+ // If we are a substitution for some element, then mark
+ // that element's type as polymorphic.
+ //
+ Type& r (e.substitutes ().root ());
+ SemanticGraph::Type& rt (r.type ());
+ SemanticGraph::Context& ctx (rt.context ());
+
+ // We may need to override the previous value.
+ //
+ if (ctx.count ("polymorphic") && ctx.get<bool> ("polymorphic"))
+ return;
+
+ // Built-in types that are mapped to fundamental types cannot
+ // be declared polymorphic.
+ //
+ bool fund (false);
+ IsFundamentalType test (fund);
+ test.dispatch (rt);
+
+ if (fund)
+ {
+ wcerr << r.file () << ":" << r.line () << ":" << r.column ()
+ << ": error: built-in type '" << rt.name () << "' "
+ << "is mapped to a fundamental C++ type and is expected "
+ << "to be polymorphic" << endl;
+
+ wcerr << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": info: because type '" << rt.name () << "' is "
+ << "used in a substitution group declared here" << endl;
+
+ valid_ = false;
+ return;
+ }
+
+ ctx.set ("polymorphic", true);
+
+ if (!warning_)
+ return;
+
+ Schema& es (dynamic_cast<Schema&> (e.scope ().scope ()));
+ Schema& rts (dynamic_cast<Schema&> (rt.scope ().scope ()));
+
+ // If the root type and this element are in different schemas
+ // and the root type is not explicitly marked as polymorphic,
+ // then issue a warning.
+ //
+ if (&es != &rts && !sources_p (es, rts) && !poly_types_.find (rt))
+ {
+ wcerr << rt.file () << ":" << rt.line () << ":" << rt.column ()
+ << ": warning T005: assuming type '" << rt.name () << "' "
+ << "is polymorphic" << endl;
+
+ wcerr << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": info: because type '" << rt.name () << "' is "
+ << "used in a substitution group declared here" << endl;
+
+ wcerr << rt.file () << ":" << rt.line () << ":" << rt.column ()
+ << ": info: use --polymorphic-type to indicate this type "
+ << "is polymorphic when compiling schemas that "
+ << "reference it" << endl;
+ }
+ }
+
+ private:
+ // Return true if root sources s.
+ //
+ bool
+ sources_p (SemanticGraph::Schema& root, SemanticGraph::Schema& s)
+ {
+ using SemanticGraph::Schema;
+ using SemanticGraph::Sources;
+
+ for (Schema::UsesIterator i (root.uses_begin ());
+ i != root.uses_end (); ++i)
+ {
+ if (i->is_a<Sources> ())
+ {
+ if (&i->schema () == &s || sources_p (i->schema (), s))
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private:
+ TypeNameSet& poly_types_;
+ bool& valid_;
+ bool warning_;
+ };
+
+ // Go into sourced/included/imported schemas while making sure
+ // we don't process the same stuff more than once.
+ //
+ struct Uses: Traversal::Sources,
+ Traversal::Includes,
+ Traversal::Imports
+ {
+ Uses (char const* seen_key)
+ : seen_key_ (seen_key)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Sources& sr)
+ {
+ SemanticGraph::Schema& s (sr.schema ());
+
+ if (!s.context ().count (seen_key_))
+ {
+ s.context ().set (seen_key_, true);
+ Traversal::Sources::traverse (sr);
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Includes& i)
+ {
+ SemanticGraph::Schema& s (i.schema ());
+
+ if (!s.context ().count (seen_key_))
+ {
+ s.context ().set (seen_key_, true);
+ Traversal::Includes::traverse (i);
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Imports& i)
+ {
+ SemanticGraph::Schema& s (i.schema ());
+
+ if (!s.context ().count (seen_key_))
+ {
+ s.context ().set (seen_key_, true);
+ Traversal::Imports::traverse (i);
+ }
+ }
+
+ private:
+ char const* seen_key_;
+ };
+
+ char const* pass_one_key = "cxx-tree-polymorphism-processor-seen-one";
+ char const* pass_two_key = "cxx-tree-polymorphism-processor-seen-two";
+
+ bool
+ process_impl (options const& ops,
+ SemanticGraph::Schema& tu,
+ SemanticGraph::Path const&,
+ const WarningSet& disabled_warnings)
+ {
+ bool valid (true);
+
+ // Prepare a set of polymorphic types.
+ //
+
+ TypeNameSet poly_types (ops.polymorphic_type ().begin (),
+ ops.polymorphic_type ().end ());
+
+ // Root schema in the file-per-type mode is just a bunch
+ // of includes without a namespace.
+ //
+ SemanticGraph::Schema::NamesIterator i (tu.names_begin ());
+
+ if (i != tu.names_end () &&
+ i->named ().name () == L"http://www.w3.org/2001/XMLSchema")
+ {
+ // XML Schema namespace.
+ //
+ Traversal::Schema schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ FundType fund_type (poly_types, valid);
+
+ schema >> schema_names >> ns >> ns_names >> fund_type;
+
+ schema.dispatch (tu);
+ }
+ else
+ {
+ // First handle fundamental types.
+ //
+ {
+ Traversal::Schema schema;
+ Traversal::Implies implies;
+ Traversal::Schema xs_schema;
+
+ schema >> implies >> xs_schema;
+
+ Traversal::Names xs_schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ FundType fund_type (poly_types, valid);
+
+ xs_schema >> xs_schema_names >> ns >> ns_names >> fund_type;
+
+ schema.dispatch (tu);
+ }
+
+ // Note that we check first if this schema has already been
+ // processed which may happen in the file-per-type compilation
+ // mode.
+ //
+ if (!tu.context ().count (pass_two_key))
+ {
+ // Pass one - check substitution groups.
+ //
+ if (valid)
+ {
+ Traversal::Schema schema;
+ Uses uses (pass_one_key);
+
+ schema >> uses >> schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ GlobalElement element (poly_types, valid, disabled_warnings);
+
+ schema >> schema_names >> ns >> ns_names >> element;
+
+ // Some twisted schemas do recusive self-inclusion.
+ //
+ tu.context ().set (pass_one_key, true);
+
+ schema.dispatch (tu);
+ }
+
+ // Pass two - process types.
+ //
+ if (valid)
+ {
+ Traversal::Schema schema;
+ Uses uses (pass_two_key);
+
+ schema >> uses >> schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ Type type (poly_types);
+
+ schema >> schema_names >> ns >> ns_names >> type;
+
+ // Some twisted schemas do recusive self-inclusion.
+ //
+ tu.context ().set (pass_two_key, true);
+
+ schema.dispatch (tu);
+ }
+ }
+ }
+
+ return valid;
+ }
+ }
+
+ bool PolymorphismProcessor::
+ process (options const& ops,
+ SemanticGraph::Schema& tu,
+ SemanticGraph::Path const& file,
+ const WarningSet& disabled_warnings)
+ {
+ return process_impl (ops, tu, file, disabled_warnings);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/polymorphism-processor.hxx b/xsd/cxx/tree/polymorphism-processor.hxx
new file mode 100644
index 0000000..88019a8
--- /dev/null
+++ b/xsd/cxx/tree/polymorphism-processor.hxx
@@ -0,0 +1,30 @@
+// file : xsde/cxx/tree/polymorphism-processor.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_POLYMORPHISM_PROCESSOR_HXX
+#define XSD_CXX_TREE_POLYMORPHISM_PROCESSOR_HXX
+
+#include <libxsd-frontend/semantic-graph.hxx>
+
+#include <xsd/xsd.hxx>
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/tree/options.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ class PolymorphismProcessor
+ {
+ public:
+ bool
+ process (options const&,
+ XSDFrontend::SemanticGraph::Schema&,
+ XSDFrontend::SemanticGraph::Path const& file,
+ const WarningSet& disabled_warnings);
+ };
+ }
+}
+
+#endif // XSD_CXX_TREE_POLYMORPHISM_PROCESSOR_HXX
diff --git a/xsd/cxx/tree/serialization-header.cxx b/xsd/cxx/tree/serialization-header.cxx
new file mode 100644
index 0000000..5434441
--- /dev/null
+++ b/xsd/cxx/tree/serialization-header.cxx
@@ -0,0 +1,579 @@
+// file : xsd/cxx/tree/serialization-header.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/serialization-header.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String name (ename (l));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (l, name) && !name)
+ return;
+
+ // operator<< (xercesc::DOMElement)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMElement&, " <<
+ "const " << name << "&);"
+ << endl;
+
+ // operator<< (xercesc::DOMAttr)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMAttr&, " <<
+ "const " << name << "&);"
+ << endl;
+
+ // operator<< (list_stream)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << list_stream_type << "&," << endl
+ << "const " << name << "&);"
+ << endl;
+
+ }
+ };
+
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String name (ename (u));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (u, name) && !name)
+ return;
+
+ // operator<< (xercesc::DOMElement)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMElement&, " <<
+ "const " << name << "&);"
+ << endl;
+
+ // operator<< (xercesc::DOMAttr)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMAttr&, " <<
+ "const " << name << "&);"
+ << endl;
+
+ // operator<< (list_stream)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << list_stream_type << "&," << endl
+ << "const " << name << "&);"
+ << endl;
+ }
+ };
+
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String name (ename (e));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ // operator<< (xercesc::DOMElement)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMElement&, " <<
+ "const " << name << "&);"
+ << endl;
+
+ // operator<< (xercesc::DOMAttr)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMAttr&, " <<
+ "const " << name << "&);"
+ << endl;
+
+ // operator<< (list_stream)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << list_stream_type << "&," << endl
+ << "const " << name << "&);"
+ << endl;
+ }
+ };
+
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ String name (ename (c));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (c, name) && !name)
+ return;
+
+ // operator<< (xercesc::DOMElement)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMElement&, " <<
+ "const " << name << "&);"
+ << endl;
+
+ bool simple (true);
+ {
+ IsSimpleType t (simple);
+ t.dispatch (c);
+ }
+
+ if (simple)
+ {
+ // operator<< (xercesc::DOMAttr)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMAttr&, " <<
+ "const " << name << "&);"
+ << endl;
+
+ // operator<< (list_stream)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << list_stream_type << "&," << endl
+ << "const " << name << "&);"
+ << endl;
+ }
+ }
+ };
+
+ struct ElementType: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ ElementType (Context& c)
+ : GlobalElementBase (c), Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (doc_root_p (e))
+ {
+ // operator<< (xercesc::DOMElement)
+ //
+ os << inst_exp
+ << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMElement&, " <<
+ "const " << ename (e) << "&);"
+ << endl;
+ }
+ }
+ };
+
+ struct ElementFunction: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ ElementFunction (Context& c)
+ : GlobalElementBase (c), Context (c)
+ {
+ }
+
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (!doc_root_p (e))
+ return;
+
+ String const& name (eserializer (e));
+ String const& error_handler (error_handler_type);
+ String const& namespace_infomap (namespace_infomap_type);
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @name Serialization functions for the %" <<
+ comment (e.name ()) << " document root." << endl;
+
+ if (e.annotated_p ())
+ {
+ os << " *" << endl;
+ write_annotation (e.annotation ());
+ }
+
+ os << " */" << endl
+ << "//@{" << endl
+ << endl;
+ }
+
+ if (!doxygen)
+ {
+ os << "// Serialize to std::ostream." << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Serialize to a standard output stream." << endl
+ << " *" << endl
+ << " * @param os A standrad output stream." << endl
+ << " * @param x An object model to serialize." << endl
+ << " * @param m A namespace information map." << endl
+ << " * @param e A character encoding to produce XML in." << endl
+ << " * @param f Serialization flags." << endl
+ << " *" << endl
+ << " * This function uses exceptions to report " <<
+ "serialization errors." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << "void" << endl
+ << name << " (::std::ostream& os," << endl
+ << "const " << type_name (e) << "& x, " << endl
+ << "const " << namespace_infomap << "& m = " <<
+ namespace_infomap << " ()," << endl
+ << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
+ << flags_type << " f = 0);"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Serialize to a standard output stream with an " <<
+ "error handler." << endl
+ << " *" << endl
+ << " * @param os A standrad output stream." << endl
+ << " * @param x An object model to serialize." << endl
+ << " * @param eh An error handler." << endl
+ << " * @param m A namespace information map." << endl
+ << " * @param e A character encoding to produce XML in." << endl
+ << " * @param f Serialization flags." << endl
+ << " *" << endl
+ << " * This function reports serialization errors by " <<
+ "calling the error" << endl
+ << " * handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << "void" << endl
+ << name << " (::std::ostream& os," << endl
+ << "const " << type_name (e) << "& x, " << endl
+ << error_handler << "& eh," << endl
+ << "const " << namespace_infomap << "& m = " <<
+ namespace_infomap << " ()," << endl
+ << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
+ << flags_type << " f = 0);"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Serialize to a standard output stream with a " <<
+ "Xerces-C++ DOM" << endl
+ << " * error handler." << endl
+ << " *" << endl
+ << " * @param os A standrad output stream." << endl
+ << " * @param x An object model to serialize." << endl
+ << " * @param eh A Xerces-C++ DOM error handler." << endl
+ << " * @param m A namespace information map." << endl
+ << " * @param e A character encoding to produce XML in." << endl
+ << " * @param f Serialization flags." << endl
+ << " *" << endl
+ << " * This function reports serialization errors by " <<
+ "calling the error" << endl
+ << " * handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << "void" << endl
+ << name << " (::std::ostream& os," << endl
+ << "const " << type_name (e) << "& x, " << endl
+ << xerces_ns << "::DOMErrorHandler& eh," << endl
+ << "const " << namespace_infomap << "& m = " <<
+ namespace_infomap << " ()," << endl
+ << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
+ << flags_type << " f = 0);"
+ << endl;
+
+ if (!doxygen)
+ {
+ os << "// Serialize to xercesc::XMLFormatTarget." << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Serialize to a Xerces-C++ XML format target." << endl
+ << " *" << endl
+ << " * @param ft A Xerces-C++ XML format target." << endl
+ << " * @param x An object model to serialize." << endl
+ << " * @param m A namespace information map." << endl
+ << " * @param e A character encoding to produce XML in." << endl
+ << " * @param f Serialization flags." << endl
+ << " *" << endl
+ << " * This function uses exceptions to report " <<
+ "serialization errors." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << "void" << endl
+ << name << " (" << xerces_ns << "::XMLFormatTarget& ft," << endl
+ << "const " << type_name (e) << "& x, " << endl
+ << "const " << namespace_infomap << "& m = " <<
+ namespace_infomap << " ()," << endl
+ << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
+ << flags_type << " f = 0);"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Serialize to a Xerces-C++ XML format target " <<
+ "with an error" << endl
+ << " * handler." << endl
+ << " *" << endl
+ << " * @param ft A Xerces-C++ XML format target." << endl
+ << " * @param x An object model to serialize." << endl
+ << " * @param eh An error handler." << endl
+ << " * @param m A namespace information map." << endl
+ << " * @param e A character encoding to produce XML in." << endl
+ << " * @param f Serialization flags." << endl
+ << " *" << endl
+ << " * This function reports serialization errors by " <<
+ "calling the error" << endl
+ << " * handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << "void" << endl
+ << name << " (" << xerces_ns << "::XMLFormatTarget& ft," << endl
+ << "const " << type_name (e) << "& x, " << endl
+ << error_handler << "& eh," << endl
+ << "const " << namespace_infomap << "& m = " <<
+ namespace_infomap << " ()," << endl
+ << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
+ << flags_type << " f = 0);"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Serialize to a Xerces-C++ XML format target " <<
+ "with a" << endl
+ << " * Xerces-C++ DOM error handler." << endl
+ << " *" << endl
+ << " * @param ft A Xerces-C++ XML format target." << endl
+ << " * @param x An object model to serialize." << endl
+ << " * @param eh A Xerces-C++ DOM error handler." << endl
+ << " * @param m A namespace information map." << endl
+ << " * @param e A character encoding to produce XML in." << endl
+ << " * @param f Serialization flags." << endl
+ << " *" << endl
+ << " * This function reports serialization errors by " <<
+ "calling the error" << endl
+ << " * handler." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << "void" << endl
+ << name << " (" << xerces_ns << "::XMLFormatTarget& ft," << endl
+ << "const " << type_name (e) << "& x, " << endl
+ << xerces_ns << "::DOMErrorHandler& eh," << endl
+ << "const " << namespace_infomap << "& m = " <<
+ namespace_infomap << " ()," << endl
+ << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
+ << flags_type << " f = 0);"
+ << endl;
+
+ if (!doxygen)
+ {
+ os << "// Serialize to an existing xercesc::DOMDocument." << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Serialize to an existing Xerces-C++ DOM document." << endl
+ << " *" << endl
+ << " * @param d A Xerces-C++ DOM document." << endl
+ << " * @param x An object model to serialize." << endl
+ << " * @param f Serialization flags." << endl
+ << " *" << endl
+ << " * Note that it is your responsibility to create the " <<
+ "DOM document" << endl
+ << " * with the correct root element as well as set the " <<
+ "necessary" << endl
+ << " * namespace mapping attributes." << endl
+ << " */" << endl;
+ }
+ os << inst_exp
+ << "void" << endl
+ << name << " (" << xerces_ns << "::DOMDocument& d," << endl
+ << "const " << type_name (e) << "& x," << endl
+ << flags_type << " f = 0);"
+ << endl;
+
+ if (!doxygen)
+ {
+ os << "// Serialize to a new xercesc::DOMDocument." << endl
+ << "//" << endl
+ << endl;
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Serialize to a new Xerces-C++ DOM document." << endl
+ << " *" << endl
+ << " * @param x An object model to serialize." << endl
+ << " * @param m A namespace information map." << endl
+ << " * @param f Serialization flags." << endl
+ << " * @return A pointer to the new Xerces-C++ DOM document." << endl
+ << " */" << endl;
+ }
+
+ os << inst_exp
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument >" << endl
+ << name << " (const " << type_name (e) << "& x, " << endl
+ << "const " << namespace_infomap << "& m = " <<
+ namespace_infomap << " ()," << endl
+ << flags_type << " f = 0);"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "//@}" << endl
+ << endl;
+ }
+ }
+
+ private:
+ String
+ type_name (Type& e)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (e.type ());
+
+ return o.str ();
+ }
+ };
+
+ }
+
+ void
+ generate_serialization_header (Context& ctx)
+ {
+ bool elemen_type (ctx.options.generate_element_type ());
+
+ if (!elemen_type)
+ ctx.os << "#include <iosfwd>" << endl
+ << endl
+ << "#include <xercesc/dom/DOMDocument.hpp>" << endl
+ << "#include <xercesc/dom/DOMErrorHandler.hpp>" << endl
+ << "#include <xercesc/framework/XMLFormatter.hpp>" << endl
+ << endl
+ << "#include <xsd/cxx/xml/dom/auto-ptr.hxx>" << endl
+ << endl;
+
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names names_ns, names;
+
+ Namespace ns (ctx);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+ ElementType element_type (ctx);
+ ElementFunction element_function (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ if (elemen_type)
+ names >> element_type;
+ else
+ names >> element_function;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/serialization-header.hxx b/xsd/cxx/tree/serialization-header.hxx
new file mode 100644
index 0000000..08c58ab
--- /dev/null
+++ b/xsd/cxx/tree/serialization-header.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/serialization-header.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_SERIALIZATION_HEADER_HXX
+#define XSD_CXX_TREE_SERIALIZATION_HEADER_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_serialization_header (Context&);
+ }
+}
+
+#endif // XSD_CXX_TREE_SERIALIZATION_HEADER_HXX
diff --git a/xsd/cxx/tree/serialization-source.cxx b/xsd/cxx/tree/serialization-source.cxx
new file mode 100644
index 0000000..08b81d6
--- /dev/null
+++ b/xsd/cxx/tree/serialization-source.cxx
@@ -0,0 +1,1499 @@
+// file : xsd/cxx/tree/serialization-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/serialization-source.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ enum schema_type
+ {
+ st_other,
+ st_double,
+ st_decimal
+ };
+
+ enum schema_type
+ schema_type (SemanticGraph::Type& t)
+ {
+ if (t.is_a<SemanticGraph::Fundamental::Double> ())
+ return st_double;
+ else if (t.is_a<SemanticGraph::Fundamental::Decimal> ())
+ return st_decimal;
+ else
+ return st_other;
+ }
+
+
+ //
+ //
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String name (ename (l));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (l, name) && !name)
+ return;
+
+ SemanticGraph::Type& item_type (l.argumented ().type ());
+ String base (L"::xsd::cxx::tree::list< " +
+ item_type_name (item_type) + L", " + char_type);
+
+ if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
+ base += L", ::xsd::cxx::tree::schema_type::double_";
+ else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
+ base += L", ::xsd::cxx::tree::schema_type::decimal";
+
+ base += L" >";
+
+ // operator<< (xercesc::DOMElement)
+ //
+ os << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMElement& e, " <<
+ "const " << name << "& i)"
+ << "{"
+ << "e << static_cast< const " << base << "& > (i);"
+ << "}";
+
+ // operator<< (xercesc::DOMAttr)
+ //
+ os << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMAttr& a, " <<
+ "const " << name << "& i)"
+ << "{"
+ << "a << static_cast< const " << base << "& > (i);"
+ << "}";
+
+ // operator<< (list_stream)
+ //
+ os << "void" << endl
+ << "operator<< (" << list_stream_type << "& l," << endl
+ << "const " << name << "& i)"
+ << "{"
+ << "l << static_cast< const " << base << "& > (i);"
+ << "}";
+
+ // Register with type factory map. If this type is anonymous
+ // but substitutes, then it will be registered as part of the
+ // substitution registration.
+ //
+ if (polymorphic && polymorphic_p (l) && !anonymous_p (l))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (l));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::type_serializer_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_type_serializer_init (" << endl
+ << strlit (l.name ()) << "," << endl
+ << strlit (xml_ns_name (l)) << ");"
+ << endl
+ << endl;
+ }
+ }
+
+ private:
+ String
+ item_type_name (SemanticGraph::Type& t)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (t);
+
+ return o.str ();
+ }
+ };
+
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String name (ename (u));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (u, name) && !name)
+ return;
+
+ String const& base (xs_string_type);
+
+ // operator<< (xercesc::DOMElement)
+ //
+ os << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMElement& e, " <<
+ "const " << name << "& i)"
+ << "{"
+ << "e << static_cast< const " << base << "& > (i);"
+ << "}";
+
+ // operator<< (xercesc::DOMAttr)
+ //
+ os << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMAttr& a, " <<
+ "const " << name << "& i)"
+ << "{"
+ << "a << static_cast< const " << base << "& > (i);"
+ << "}";
+
+ // operator<< (list_stream)
+ //
+ os << "void" << endl
+ << "operator<< (" << list_stream_type << "& l," << endl
+ << "const " << name << "& i)"
+ << "{"
+ << "l << static_cast< const " << base << "& > (i);"
+ << "}";
+
+ // Register with type factory map. If this type is anonymous
+ // but substitutes, then it will be registered as part of the
+ // substitution registration.
+ //
+ if (polymorphic && polymorphic_p (u) && !anonymous_p (u))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (u));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::type_serializer_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_type_serializer_init (" << endl
+ << strlit (u.name ()) << "," << endl
+ << strlit (xml_ns_name (u)) << ");"
+ << endl
+ << endl;
+ }
+ }
+ };
+
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c), base_ (c)
+ {
+ inherits_base_ >> base_;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String name (ename (e));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ // operator<< (xercesc::DOMElement)
+ //
+ os << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMElement& e, " <<
+ "const " << name << "& i)"
+ << "{"
+ << "e << static_cast< const ";
+
+ inherits (e, inherits_base_);
+
+ os << "& > (i);"
+ << "}";
+
+
+ // operator<< (xercesc::DOMAttr)
+ //
+ os << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMAttr& a, " <<
+ "const " << name << "& i)"
+ << "{"
+ << "a << static_cast< const ";
+
+ inherits (e, inherits_base_);
+
+ os << "& > (i);"
+ << "}";
+
+
+ // operator<< (list_stream)
+ //
+ os << "void" << endl
+ << "operator<< (" << list_stream_type << "& l," << endl
+ << "const " << name << "& i)"
+ << "{"
+ << "l << static_cast< const ";
+
+ inherits (e, inherits_base_);
+
+ os << "& > (i);"
+ << "}";
+
+
+ // Register with type factory map. If this type is anonymous
+ // but substitutes, then it will be registered as part of the
+ // substitution registration.
+ //
+ if (polymorphic && polymorphic_p (e) && !anonymous_p (e))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (e));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::type_serializer_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_type_serializer_init (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (xml_ns_name (e)) << ");"
+ << endl
+ << endl;
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_base_;
+ BaseTypeName base_;
+ };
+
+ struct Element: Traversal::Element, Context
+ {
+ Element (Context& c, String const& scope_)
+ : Context (c), scope (scope_)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (skip (e))
+ return;
+
+ SemanticGraph::Complex& c (
+ dynamic_cast<SemanticGraph::Complex&> (e.scope ()));
+
+ bool ordered (ordered_p (c));
+
+ String const& aname (eaname (e));
+ String ns (e.qualified_p () ? e.namespace_ ().name () : "");
+ String type (scope + L"::" + etype (e));
+
+ // Check if we need to handle xsi:type and substitution groups.
+ // If this element's type is anonymous then we don't need to do
+ // anything. Note that if the type is anonymous then it can't be
+ // derived from which makes it impossible to substitute or
+ // dynamically-type with xsi:type.
+ //
+ SemanticGraph::Type& t (e.type ());
+ bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
+
+ os << "// " << comment (e.name ()) << endl
+ << "//" << endl;
+
+ if (ordered)
+ os << "case " << scope << "::" <<
+ e.context ().get<String> ("ordered-id-name") << ":"
+ << "{";
+
+ if (poly)
+ {
+ os << (ordered ? "" : "{")
+ << "::xsd::cxx::tree::type_serializer_map< " << char_type
+ << " >& tsm (" << endl
+ << "::xsd::cxx::tree::type_serializer_map_instance< " <<
+ poly_plate << ", " << char_type << " > ());"
+ << endl;
+ }
+
+ if (max (e) != 1)
+ {
+ // sequence
+ //
+ // Always pass the sequence element reference to typeid() to
+ // suppress the Clang's 'expression with side effects will be
+ // evaluated despite being used as an operand to typeid' warning.
+ //
+ if (ordered)
+ os << "const " << type << "& x (i." << aname <<
+ " ()[b->index]);"
+ << endl;
+ else
+ os << "for (" << scope << "::" << econst_iterator (e) << endl
+ << "b (i." << aname << " ().begin ()), " <<
+ "n (i." << aname << " ().end ());" << endl
+ << "b != n; ++b)"
+ << "{"
+ << "const " << type << "& x (*b);" << endl;
+
+ if (poly)
+ {
+ os << "if (typeid (" << type << ") == typeid (x))"
+ << "{"
+ << xerces_ns << "::DOMElement& s (" << endl
+ << "::xsd::cxx::xml::dom::create_element (" << endl
+ << strlit (e.name ()) << "," << endl
+ << (ns ? strlit (ns) + L",\n" : L"")
+ << "e));"
+ << endl
+ << "s << x;"
+ << "}"
+ << "else" << endl
+ << "tsm.serialize (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (ns) << "," << endl
+ << (e.global_p () ? "true" : "false") << ", " <<
+ (e.qualified_p () ? "true" : "false") << ", e, x);";
+ }
+ else
+ {
+ os << xerces_ns << "::DOMElement& s (" << endl
+ << "::xsd::cxx::xml::dom::create_element (" << endl
+ << strlit (e.name ()) << "," << endl
+ << (ns ? strlit (ns) + L",\n" : L"")
+ << "e));"
+ << endl;
+
+ switch (schema_type (t))
+ {
+ case st_other:
+ {
+ os << "s << x;";
+ break;
+ }
+ case st_double:
+ {
+ os << "s << " << as_double_type << " (x);";
+ break;
+ }
+ case st_decimal:
+ {
+ os << "s << " << as_decimal_type << " (x);";
+ break;
+ }
+ }
+ }
+ }
+ else if (min (e) == 0)
+ {
+ // optional
+ //
+ if (!ordered)
+ os << "if (i." << aname << " ())"
+ << "{";
+
+ if (poly)
+ {
+ os << "const " << type << "& x (*i." << aname << " ());"
+ << "if (typeid (" << type << ") == typeid (x))"
+ << "{"
+ << xerces_ns << "::DOMElement& s (" << endl
+ << "::xsd::cxx::xml::dom::create_element (" << endl
+ << strlit (e.name ()) << "," << endl
+ << (ns ? strlit (ns) + L",\n" : L"")
+ << "e));"
+ << endl
+ << "s << x;"
+ << "}"
+ << "else" << endl
+ << "tsm.serialize (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (ns) << "," << endl
+ << (e.global_p () ? "true" : "false") << ", " <<
+ (e.qualified_p () ? "true" : "false") << ", e, x);";
+ }
+ else
+ {
+ os << xerces_ns << "::DOMElement& s (" << endl
+ << "::xsd::cxx::xml::dom::create_element (" << endl
+ << strlit (e.name ()) << "," << endl
+ << (ns ? strlit (ns) + L",\n" : L"")
+ << "e));"
+ << endl;
+
+ switch (schema_type (t))
+ {
+ case st_other:
+ {
+ os << "s << *i." << aname << " ();";
+ break;
+ }
+ case st_double:
+ {
+ os << "s << " << as_double_type << "(*i." << aname << " ());";
+ break;
+ }
+ case st_decimal:
+ {
+ os << "s << " << as_decimal_type << "(*i." << aname << " ());";
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ // one
+ //
+ if (poly)
+ {
+ os << "const " << type << "& x (i." << aname << " ());"
+ << "if (typeid (" << type << ") == typeid (x))"
+ << "{"
+ << xerces_ns << "::DOMElement& s (" << endl
+ << "::xsd::cxx::xml::dom::create_element (" << endl
+ << strlit (e.name ()) << "," << endl
+ << (ns ? strlit (ns) + L",\n" : L"")
+ << "e));"
+ << endl
+ << "s << x;"
+ << "}"
+ << "else" << endl
+ << "tsm.serialize (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (ns) << "," << endl
+ << (e.global_p () ? "true" : "false") << ", " <<
+ (e.qualified_p () ? "true" : "false") << ", e, x);";
+ }
+ else
+ {
+ if (!ordered)
+ os << "{";
+
+ os << xerces_ns << "::DOMElement& s (" << endl
+ << "::xsd::cxx::xml::dom::create_element (" << endl
+ << strlit (e.name ()) << "," << endl
+ << (ns ? strlit (ns) + L",\n" : L"")
+ << "e));"
+ << endl;
+
+ switch (schema_type (t))
+ {
+ case st_other:
+ {
+ os << "s << i." << aname << " ();";
+ break;
+ }
+ case st_double:
+ {
+ os << "s << " << as_double_type << "(i." << aname << " ());";
+ break;
+ }
+ case st_decimal:
+ {
+ os << "s << " << as_decimal_type << "(i." << aname << " ());";
+ break;
+ }
+ }
+ }
+ }
+
+ if (ordered)
+ {
+ // See comment for bool text (false); below.
+ //
+ if (mixed_p (c) && c.context ().get<size_t> ("ordered-start") != 1)
+ os << "text = true;";
+
+ os << "continue;"
+ << "}";
+ }
+ else
+ {
+ os << "}";
+
+ if (poly && (max (e) != 1 || min (e) == 0))
+ os << "}"; // There is no extra block for poly one.
+ }
+ }
+
+ private:
+ String scope;
+ };
+
+ struct Any: Traversal::Any, Context
+ {
+ Any (Context& c, String const& scope_)
+ : Context (c), scope (scope_)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ SemanticGraph::Complex& c (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ()));
+
+ bool ordered (ordered_p (c));
+
+ String const& aname (eaname (a));
+
+ os << "// " << ename (a) << endl
+ << "//" << endl;
+
+ if (ordered)
+ os << "case " << scope << "::" <<
+ a.context ().get<String> ("ordered-id-name") << ":";
+
+ if (max (a) != 1)
+ {
+ // sequence
+ //
+ if (!ordered)
+ os << "for (" << scope << "::" << econst_iterator (a) << endl
+ << "b (i." << aname << " ().begin ()), " <<
+ "n (i." << aname << " ().end ());" << endl
+ << "b != n; ++b)";
+
+ os << "{"
+ << "e.appendChild (" << endl
+ << "e.getOwnerDocument ()->importNode (" << endl
+ << "const_cast< " << xerces_ns <<
+ "::DOMElement* > (&(" <<
+ (ordered ? (L"i." + aname + L" ()[b->index]") : L"*b") <<
+ ")), true));";
+ }
+ else if (min (a) == 0)
+ {
+ // optional
+ //
+ if (!ordered)
+ os << "if (i." << aname << " ())";
+
+ os << "{"
+ << "e.appendChild (" << endl
+ << "e.getOwnerDocument ()->importNode (" << endl
+ << "const_cast< " << xerces_ns << "::DOMElement* > (&(*i." <<
+ aname << " ())), true));";
+ }
+ else
+ {
+ // one
+ //
+ if (ordered)
+ os << "{";
+
+ os << "e.appendChild (" << endl
+ << "e.getOwnerDocument ()->importNode (" << endl
+ << "const_cast< " << xerces_ns << "::DOMElement* > (&(i." <<
+ aname << " ())), true));"
+ << endl;
+ }
+
+ if (ordered)
+ {
+ // See comment for bool text (false); below.
+ //
+ if (mixed_p (c) && c.context ().get<size_t> ("ordered-start") != 1)
+ os << "text = true;";
+
+ os << "continue;";
+ }
+
+ if (ordered || max (a) != 1 || min (a) == 0)
+ os << "}";
+ }
+
+ private:
+ String scope;
+ };
+
+ struct Attribute: Traversal::Attribute, Context
+ {
+ Attribute (Context& c, String const& scope_)
+ : Context (c), scope (scope_)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& aname (eaname (a));
+ String ns (a.qualified_p () ? a.namespace_ ().name () : "");
+
+ os << "// " << comment (a.name ()) << endl
+ << "//" << endl;
+
+ if (a.optional_p () && !a.default_p ())
+ {
+ os << "if (i." << aname << " ())"
+ << "{"
+ << xerces_ns << "::DOMAttr& a (" << endl
+ << "::xsd::cxx::xml::dom::create_attribute (" << endl
+ << strlit (a.name ()) << "," << endl
+ << (ns ? strlit (ns) + L",\n" : L"")
+ << "e));"
+ << endl;
+
+ switch (schema_type (a.type ()))
+ {
+ case st_other:
+ {
+ os << "a << *i." << aname << " ();";
+ break;
+ }
+ case st_double:
+ {
+ os << "a << " << as_double_type << "(*i." << aname << " ());";
+ break;
+ }
+ case st_decimal:
+ {
+ os << "a << " << as_decimal_type << "(*i." << aname << " ());";
+ break;
+ }
+ }
+
+ os << "}";
+ }
+ else
+ {
+ // Make sure we serialize required fixed attributes.
+ //
+ if (a.optional_p () && options.omit_default_attributes ())
+ {
+ os << "if (i." << aname << " () != " << scope <<
+ "::" << edefault_value (a) << " ())";
+ }
+
+ os << "{"
+ << xerces_ns << "::DOMAttr& a (" << endl
+ << "::xsd::cxx::xml::dom::create_attribute (" << endl
+ << strlit (a.name ()) << "," << endl
+ << (ns ? strlit (ns) + L",\n" : L"")
+ << "e));"
+ << endl;
+
+ switch (schema_type (a.type ()))
+ {
+ case st_other:
+ {
+ os << "a << i." << aname << " ();";
+ break;
+ }
+ case st_double:
+ {
+ os << "a << " << as_double_type << "(i." << aname << " ());";
+ break;
+ }
+ case st_decimal:
+ {
+ os << "a << " << as_decimal_type << "(i." << aname << " ());";
+ break;
+ }
+ }
+
+ os << "}";
+ }
+ }
+
+ private:
+ String scope;
+ };
+
+ struct AnyAttribute: Traversal::AnyAttribute, Context
+ {
+ AnyAttribute (Context& c, String const& scope_)
+ : Context (c), scope (scope_)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& aname (eaname (a));
+
+ os << "// " << ename (a) << endl
+ << "//" << endl;
+
+ os << "for (" << scope << "::" << econst_iterator (a) << endl
+ << "b (i." << aname << " ().begin ()), " <<
+ "n (i." << aname << " ().end ());" << endl
+ << "b != n; ++b)"
+ << "{"
+ << xerces_ns << "::DOMAttr* a (" << endl
+ << "static_cast< " << xerces_ns << "::DOMAttr* > (" << endl
+ << "e.getOwnerDocument ()->importNode (" << endl
+ << "const_cast< " << xerces_ns << "::DOMAttr* > (&(*b)), true)));"
+ << endl
+ << "if (a->getLocalName () == 0)" << endl
+ << "e.setAttributeNode (a);"
+ << "else" << endl
+ << "e.setAttributeNodeNS (a);"
+ << "}";
+ }
+
+ private:
+ String scope;
+ };
+
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c), base_ (c)
+ {
+ inherits_ >> base_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ SemanticGraph::Context& ctx (c.context ());
+
+ String name (ename (c));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (c, name) && !name)
+ return;
+
+ // operator<< (xercesc::DOMElement)
+ //
+ os << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMElement& e, " <<
+ "const " << name << "& i)"
+ << "{";
+
+ if (c.inherits_p ())
+ {
+ os << "e << static_cast< const ";
+ inherits (c, inherits_);
+ os << "& > (i);"
+ << endl;
+ }
+ else
+ os << "e << static_cast< const " << any_type << "& > (i);"
+ << endl;
+
+ // Serialize anyAttribute content first so that is gets
+ // overriden by schema-defined attributes.
+ //
+ if (options.generate_wildcard ())
+ {
+ AnyAttribute any_attribute (*this, name);
+ Traversal::Names names (any_attribute);
+
+ Complex::names (c, names);
+ }
+
+ {
+ bool o (ordered_p (c));
+ size_t start (0), count (0);
+
+ if (o)
+ {
+ start = ctx.get<size_t> ("ordered-start");
+ count = ctx.get<size_t> ("ordered-count");
+
+ if (start != count)
+ {
+ String const& ci (ctx.get<String> ("order-const-iterator"));
+ String const& an (ctx.get<String> ("order-aname"));
+
+ // If we have mixed content and a base, then we have to
+ // skip the text content until we serialize one of "our"
+ // elements.
+ //
+ if (mixed_p (c) && start != 1)
+ os << "bool text (false);"
+ << endl;
+
+ os << "for (" << name << "::" << ci << endl
+ << "b (i." << an << " ().begin ()), n (i." << an <<
+ " ().end ());" << endl
+ << "b != n; ++b)"
+ << "{"
+ << "switch (b->id)"
+ << "{";
+ }
+ }
+
+ Traversal::Names names;
+ Any any (*this, name);
+ Element element (*this, name);
+
+ names >> element;
+
+ if (options.generate_wildcard ())
+ names >> any;
+
+ Complex::names (c, names);
+
+ if (o)
+ {
+ if (start != count)
+ {
+ if (mixed_p (c))
+ {
+ //@@ propagate mixed-ordered-id to derived
+
+ os << "// text_content" << endl
+ << "//" << endl
+ << "case " << name << "::" <<
+ ctx.get<String> ("mixed-ordered-id-name") << ":"
+ << "{";
+
+ // See the comment above.
+ //
+ if (start != 1)
+ os << "if (text)" << endl;
+
+ os << "e.appendChild (" << endl
+ << "e.getOwnerDocument ()->createTextNode (" << endl
+ << "::xsd::cxx::xml::string (" << endl
+ << "i." << ctx.get<String> ("mixed-aname") <<
+ " ()[b->index].c_str ()).c_str ()));";
+
+ // os << "e << i." << ctx.get<String> ("mixed-aname") <<
+ // " ()[b->index];";
+
+ os << "continue;"
+ << "}";
+ }
+
+ // Ignore content before our id range and stop serializing
+ // if we see anything past. This handles inheritance.
+ //
+ os << "default:"
+ << "{";
+
+ if (start != 1)
+ os << "if (b->id < " << start << "UL)" << endl
+ << "continue;";
+
+ os << "break;" // Stop (see break below).
+ << "}";
+
+ os << "}" // switch
+ << "break;" // Unknown element past our elements.
+ << "}"; // for
+ }
+ }
+ }
+
+ {
+ Attribute attribute (*this, name);
+ Traversal::Names names (attribute);
+ Complex::names (c, names);
+ }
+
+ os << "}";
+
+ bool simple (true);
+ {
+ IsSimpleType t (simple);
+ t.dispatch (c);
+ }
+
+ if (simple)
+ {
+ bool hb (c.inherits_p ());
+
+ // operator<< (xercesc::DOMAttr)
+ //
+ os << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMAttr&" <<
+ (hb ? " a" : "") << ", " <<
+ "const " << name << "&" << (hb ? " i" : "") << ")"
+ << "{";
+
+ if (hb)
+ {
+ os << "a << static_cast< const ";
+
+ inherits (c, inherits_);
+
+ os << "& > (i);";
+ }
+
+ os << "}";
+
+
+ // operator<< (list_stream)
+ //
+ os << "void" << endl
+ << "operator<< (" << list_stream_type << "&" <<
+ (hb ? " l" : "") << "," << endl
+ << "const " << name << "&" << (hb ? " i" : "") << ")"
+ << "{";
+
+ if (hb)
+ {
+ os << "l << static_cast< const ";
+
+ inherits (c, inherits_);
+
+ os << "& > (i);";
+ }
+
+ os << "}";
+ }
+
+ // Register with type factory map. If this type is anonymous
+ // but substitutes, then it will be registered as part of the
+ // substitution registration.
+ //
+ if (polymorphic &&
+ polymorphic_p (c) &&
+ !c.abstract_p () &&
+ !anonymous_p (c))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (c));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::type_serializer_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_type_serializer_init (" << endl
+ << strlit (c.name ()) << "," << endl
+ << strlit (xml_ns_name (c)) << ");"
+ << endl
+ << endl;
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_;
+ BaseTypeName base_;
+ };
+
+
+ // Generate substitution group map entry.
+ //
+ struct GlobalElement: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ GlobalElement (Context& c)
+ : GlobalElementBase (c), Context (c), type_name_ (c)
+ {
+ belongs_ >> type_name_;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ // Similar to parsing, we cannot just omit this element if it's
+ // abstract because it may serve as a "link" between the root of the
+ // substitution group and a non-abstract element that uses this
+ // element as its root (see
+ // element_serializer_map::find_substitution() for details).
+ //
+ if (polymorphic && e.substitutes_p ())
+ {
+ SemanticGraph::Type& t (e.type ());
+
+ // Check if this element is abstract.
+ //
+ bool abst;
+ {
+ SemanticGraph::Complex* tc;
+ abst = (tc = dynamic_cast<SemanticGraph::Complex*> (&t)) != 0 &&
+ tc->abstract_p ();
+ }
+
+ Type& r (e.substitutes ().root ());
+
+ String const& name (ename (e));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::element_serializer_initializer< " <<
+ poly_plate << ", " << char_type << ", ";
+
+ belongs (e, belongs_);
+
+ os << " >" << endl
+ << "_xsd_" << name << "_element_serializer_init (" << endl
+ << strlit (r.name ()) << "," << endl
+ << strlit (r.namespace_ ().name ()) << "," << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (e.namespace_ ().name ()) << "," << endl;
+
+ if (abst)
+ os << "0";
+ else
+ {
+ os << "&::xsd::cxx::tree::serializer_impl< ";
+ belongs (e, belongs_);
+ os << " >";
+ }
+
+ os << ");"
+ << endl
+ << endl;
+ }
+ }
+
+ private:
+ Traversal::Belongs belongs_;
+ MemberTypeName type_name_;
+
+ };
+
+ struct ElementType: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ ElementType (Context& c)
+ : GlobalElementBase (c),
+ Context (c),
+ element_map_ (c.options.generate_element_map ())
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (doc_root_p (e))
+ {
+ String const& name (ename (e));
+
+ // operator<< (xercesc::DOMElement)
+ //
+ os << "void" << endl
+ << "operator<< (" << xerces_ns << "::DOMElement& e, " <<
+ "const " << name << "& i)"
+ << "{"
+ << "e << i." << eaname (e) << " ();"
+ << "}";
+
+ // Element map registration.
+ //
+ if (element_map_)
+ {
+ SemanticGraph::Context& ec (e.context ());
+ String const& aname (ec.get<String> ("element-name"));
+ String const& ans (ec.get<String> ("element-ns"));
+
+ os << "static " << endl
+ << "const ::xsd::cxx::tree::serializer_init< " <<
+ name << ", " << char_type << ", " << any_type << " >" << endl
+ << "_xsd_" << name << "_serializer_init (" <<
+ name << "::" << aname << " (), " <<
+ name << "::" << ans << " ());"
+ << endl;
+ }
+ }
+ }
+
+ private:
+ bool element_map_;
+ };
+
+ struct ElementFunction: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ ElementFunction (Context& c)
+ : GlobalElementBase (c), Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (!doc_root_p (e))
+ return;
+
+ String const& name (eserializer (e));
+ String ns (e.namespace_ ().name ());
+ String const& error_handler (error_handler_type);
+ String const& namespace_infomap (namespace_infomap_type);
+
+ SemanticGraph::Type& type (e.type ());
+
+ // Note that I am using fq-name in function calls because g++ gets
+ // confused if the name is 'type'. (see tests/schema/anonymous)
+ //
+
+ // Check if we need to handle xsi:type and substitution groups.
+ // If this element's type is anonymous then we don't need to do
+ // anything.
+ //
+ bool poly (polymorphic &&
+ polymorphic_p (type) &&
+ !anonymous_p (type));
+
+ // To std::ostream.
+ //
+ os << "void" << endl
+ << name << " (::std::ostream& o," << endl
+ << "const " << type_name (e) << "& s," << endl
+ << "const " << namespace_infomap << "& m," << endl
+ << "const " << string_type << "& e," << endl
+ << flags_type << " f)"
+ << "{"
+ << "::xsd::cxx::xml::auto_initializer i (" << endl
+ << "(f & " << flags_type << "::dont_initialize) == 0);"
+ << endl
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << fq_name (e, "serializer") << " (s, m, f));"
+ << endl
+ << "::xsd::cxx::tree::error_handler< " << char_type << " > h;"
+ << endl
+ << "::xsd::cxx::xml::dom::ostream_format_target t (o);"
+ << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
+ << "{"
+ << "h.throw_if_failed< ::xsd::cxx::tree::serialization< " <<
+ char_type << " > > ();"
+ << "}"
+ << "}";
+
+ os << "void" << endl
+ << name << " (::std::ostream& o," << endl
+ << "const " << type_name (e) << "& s," << endl
+ << error_handler << "& h," << endl
+ << "const " << namespace_infomap << "& m," << endl
+ << "const " << string_type << "& e," << endl
+ << flags_type << " f)"
+ << "{"
+ << "::xsd::cxx::xml::auto_initializer i (" << endl
+ << "(f & " << flags_type << "::dont_initialize) == 0);"
+ << endl
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << fq_name (e, "serializer") << " (s, m, f));"
+ << "::xsd::cxx::xml::dom::ostream_format_target t (o);"
+ << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
+ << "{"
+ << "throw ::xsd::cxx::tree::serialization< " <<
+ char_type << " > ();"
+ << "}"
+ << "}";
+
+ os << "void" << endl
+ << name << " (::std::ostream& o," << endl
+ << "const " << type_name (e) << "& s," << endl
+ << xerces_ns << "::DOMErrorHandler& h," << endl
+ << "const " << namespace_infomap << "& m," << endl
+ << "const " << string_type << "& e," << endl
+ << flags_type << " f)"
+ << "{"
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << fq_name (e, "serializer") << " (s, m, f));"
+ << "::xsd::cxx::xml::dom::ostream_format_target t (o);"
+ << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
+ << "{"
+ << "throw ::xsd::cxx::tree::serialization< " <<
+ char_type << " > ();"
+ << "}"
+ << "}";
+
+ // To XMLFormatTarget.
+ //
+ os << "void" << endl
+ << name << " (" << xerces_ns << "::XMLFormatTarget& t," << endl
+ << "const " << type_name (e) << "& s," << endl
+ << "const " << namespace_infomap << "& m," << endl
+ << "const " << string_type << "& e," << endl
+ << flags_type << " f)"
+ << "{"
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << fq_name (e, "serializer") << " (s, m, f));"
+ << endl
+ << "::xsd::cxx::tree::error_handler< " << char_type << " > h;"
+ << endl
+ << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
+ << "{"
+ << "h.throw_if_failed< ::xsd::cxx::tree::serialization< " <<
+ char_type << " > > ();"
+ << "}"
+ << "}";
+
+ os << "void" << endl
+ << name << " (" << xerces_ns << "::XMLFormatTarget& t," << endl
+ << "const " << type_name (e) << "& s," << endl
+ << error_handler << "& h," << endl
+ << "const " << namespace_infomap << "& m," << endl
+ << "const " << string_type << "& e," << endl
+ << flags_type << " f)"
+ << "{"
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << fq_name (e, "serializer") << " (s, m, f));"
+ << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
+ << "{"
+ << "throw ::xsd::cxx::tree::serialization< " <<
+ char_type << " > ();"
+ << "}"
+ << "}";
+
+ os << "void" << endl
+ << name << " (" << xerces_ns << "::XMLFormatTarget& t," << endl
+ << "const " << type_name (e) << "& s," << endl
+ << xerces_ns << "::DOMErrorHandler& h," << endl
+ << "const " << namespace_infomap << "& m," << endl
+ << "const " << string_type << "& e," << endl
+ << flags_type << " f)"
+ << "{"
+ << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << fq_name (e, "serializer") << " (s, m, f));"
+ << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
+ << "{"
+ << "throw ::xsd::cxx::tree::serialization< " <<
+ char_type << " > ();"
+ << "}"
+ << "}";
+
+ // To an existing DOM instance.
+ //
+ os << "void" << endl
+ << name << " (" << xerces_ns << "::DOMDocument& d," << endl
+ << "const " << type_name (e) << "& s," << endl
+ << flags_type << ")"
+ << "{"
+ << xerces_ns << "::DOMElement& e (*d.getDocumentElement ());"
+ << "const " << qname_type << " n (" << endl
+ << "::xsd::cxx::xml::dom::name< " << char_type << " > (e));"
+ << endl;
+
+ if (poly)
+ {
+ os << "if (typeid (" << type_name (e) << ") == typeid (s))"
+ << "{";
+ }
+
+ os << "if (n.name () == " << strlit (e.name ()) << " &&" << endl
+ << "n.namespace_ () == " << strlit (ns) << ")"
+ << "{";
+
+ switch (schema_type (type))
+ {
+ case st_other:
+ {
+ os << "e << s;";
+ break;
+ }
+ case st_double:
+ {
+ os << "e << " << as_double_type << "(s);";
+ break;
+ }
+ case st_decimal:
+ {
+ os << "e << " << as_decimal_type << "(s);";
+ break;
+ }
+ }
+
+ os << "}"
+ << "else"
+ << "{"
+ << "throw ::xsd::cxx::tree::unexpected_element < " <<
+ char_type << " > (" << endl
+ << "n.name ()," << endl
+ << "n.namespace_ ()," << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (ns) << ");"
+ << "}";
+
+ if (poly)
+ {
+ os << "}"
+ << "else"
+ << "{"
+ << "::xsd::cxx::tree::type_serializer_map_instance< " <<
+ poly_plate << ", " << char_type << " > ().serialize (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (e.namespace_().name ()) << "," << endl
+ << "e, n, s);"
+ << "}";
+ }
+
+ os << "}";
+
+
+ // To a new DOM instance.
+ //
+ os << dom_auto_ptr << "< " << xerces_ns << "::DOMDocument >" << endl
+ << name << " (const " << type_name (e) << "& s," << endl
+ << "const " << namespace_infomap << "& m," << endl
+ << flags_type << " f)"
+ << "{";
+
+ if (poly)
+ {
+ os << dom_auto_ptr << "< " << xerces_ns << "::DOMDocument > d;"
+ << endl
+ << "if (typeid (" << type_name (e) << ") == typeid (s))"
+ << "{"
+ << "d = ::xsd::cxx::xml::dom::serialize< " <<
+ char_type << " > (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (ns) << "," << endl
+ << "m, f);"
+ << "}"
+ << "else"
+ << "{"
+ << "d = ::xsd::cxx::tree::type_serializer_map_instance< " <<
+ poly_plate << ", " << char_type << " > ().serialize (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (e.namespace_().name ()) << "," << endl
+ << "m, s, f);"
+ << "}";
+ }
+ else
+ {
+ os << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > d (" << endl
+ << "::xsd::cxx::xml::dom::serialize< " <<
+ char_type << " > (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (ns) << "," << endl
+ << "m, f));"
+ << endl;
+ }
+
+ os << fq_name (e, "serializer") << " (*d, s, f);"
+ << "return d;"
+ << "}";
+
+ }
+
+ private:
+ String
+ type_name (Type& e)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (e.type ());
+
+ return o.str ();
+ }
+ };
+ }
+
+ void
+ generate_serialization_source (Context& ctx, size_t first, size_t last)
+ {
+ bool elemen_type (ctx.options.generate_element_type ());
+
+ if (!elemen_type)
+ ctx.os << "#include <ostream>" << endl
+ << "#include <xsd/cxx/tree/error-handler.hxx>" << endl;
+
+ ctx.os << "#include <xsd/cxx/xml/dom/serialization-source.hxx>" << endl
+ << endl;
+
+ if (ctx.polymorphic)
+ {
+ ctx.os << "#include <xsd/cxx/tree/type-serializer-map.hxx>" << endl
+ << endl;
+
+ bool import_maps (ctx.options.import_maps ());
+ bool export_maps (ctx.options.export_maps ());
+
+ if (import_maps || export_maps)
+ {
+ ctx.os << "#ifndef XSD_NO_EXPORT" << endl
+ << endl
+ << "namespace xsd"
+ << "{"
+ << "namespace cxx"
+ << "{"
+ << "namespace tree"
+ << "{"
+ << "#ifdef _MSC_VER" << endl;
+
+ if (export_maps)
+ ctx.os << "template struct __declspec (dllexport) " <<
+ "type_serializer_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ if (import_maps)
+ ctx.os << "template struct __declspec (dllimport) " <<
+ "type_serializer_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl
+ << "template struct __attribute__ ((visibility(\"default\"))) " <<
+ "type_serializer_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ ctx.os << "#elif defined(XSD_MAP_VISIBILITY)" << endl
+ << "template struct XSD_MAP_VISIBILITY " <<
+ "type_serializer_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ ctx.os << "#endif" << endl
+ << "}" // tree
+ << "}" // cxx
+ << "}" // xsd
+ << "#endif // XSD_NO_EXPORT" << endl
+ << endl;
+ }
+
+ ctx.os << "namespace _xsd"
+ << "{"
+ << "static" << endl
+ << "const ::xsd::cxx::tree::type_serializer_plate< " <<
+ ctx.poly_plate << ", " << ctx.char_type << " >" << endl
+ << "type_serializer_plate_init;"
+ << "}";
+ }
+
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names names_ns, names;
+
+ Namespace ns (ctx, first, last);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+ GlobalElement element (ctx);
+ ElementType element_type (ctx);
+ ElementFunction element_function (ctx);
+
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+ names >> element;
+
+ if (elemen_type)
+ names >> element_type;
+ else
+ names >> element_function;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/serialization-source.hxx b/xsd/cxx/tree/serialization-source.hxx
new file mode 100644
index 0000000..75e57f3
--- /dev/null
+++ b/xsd/cxx/tree/serialization-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/serialization-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_SERIALIZATION_SOURCE_HXX
+#define XSD_CXX_TREE_SERIALIZATION_SOURCE_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_serialization_source (Context&, size_t first, size_t last);
+ }
+}
+
+#endif // XSD_CXX_TREE_SERIALIZATION_SOURCE_HXX
diff --git a/xsd/cxx/tree/stream-extraction-source.cxx b/xsd/cxx/tree/stream-extraction-source.cxx
new file mode 100644
index 0000000..5a5ed66
--- /dev/null
+++ b/xsd/cxx/tree/stream-extraction-source.cxx
@@ -0,0 +1,864 @@
+// file : xsd/cxx/tree/stream-extraction-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/stream-extraction-source.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String name (ename (l));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (l, name) && !name)
+ return;
+
+ SemanticGraph::Type& item_type (l.argumented ().type ());
+ String base (L"::xsd::cxx::tree::list< " +
+ item_type_name (item_type) + L", " + char_type);
+
+ if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
+ base += L", ::xsd::cxx::tree::schema_type::double_";
+ else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
+ base += L", ::xsd::cxx::tree::schema_type::decimal";
+
+ base += L" >";
+
+ size_t n (0);
+ NarrowStrings const& st (options.generate_extraction ());
+ for (NarrowStrings::const_iterator i (st.begin ());
+ i != st.end (); ++i)
+ {
+ os << name << "::" << endl
+ << name << " (" << istream_type << "< " <<
+ i->c_str () << " >& s," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << any_simple_type << " (s, f, c)," << endl
+ << " " << base << " (s, f, this)"
+ << "{"
+ << "}";
+
+ // Register with type map.
+ //
+ if (polymorphic &&
+ polymorphic_p (l) &&
+ (!anonymous_p (l) || anonymous_substitutes_p (l)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (l));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::stream_extraction_initializer< " <<
+ poly_plate << ", " << i->c_str () << ", " << char_type <<
+ ", " << name << " >" << endl
+ << "_xsd_" << name << "_stream_extraction_init_" <<
+ n++ << " (" << endl
+ << strlit (l.name ()) << "," << endl
+ << strlit (xml_ns_name (l)) << ");"
+ << endl;
+ }
+ }
+ }
+
+ private:
+ String
+ item_type_name (SemanticGraph::Type& t)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (t);
+
+ return o.str ();
+ }
+ };
+
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String name (ename (u));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (u, name) && !name)
+ return;
+
+ String const& base (xs_string_type);
+
+ size_t n (0);
+ NarrowStrings const& st (options.generate_extraction ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ os << name << "::" << endl
+ << name << " (" << istream_type << "< " <<
+ i->c_str () << " >& s," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (s, f, c)"
+ << "{"
+ << "}";
+
+ // Register with type map.
+ //
+ if (polymorphic &&
+ polymorphic_p (u) &&
+ (!anonymous_p (u) || anonymous_substitutes_p (u)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (u));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::stream_extraction_initializer< " <<
+ poly_plate << ", " << i->c_str () << ", " << char_type <<
+ ", " << name << " >" << endl
+ << "_xsd_" << name << "_stream_extraction_init_" <<
+ n++ << " (" << endl
+ << strlit (u.name ()) << "," << endl
+ << strlit (xml_ns_name (u)) << ");"
+ << endl;
+ }
+ }
+ }
+ };
+
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c), base_ (c)
+ {
+ inherits_base_ >> base_;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String name (ename (e));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ bool string_based (false);
+ {
+ IsStringBasedType t (string_based);
+ t.dispatch (e);
+ }
+
+ bool enum_based (false);
+ if (string_based)
+ {
+ SemanticGraph::Enumeration* base_enum (0);
+ IsEnumBasedType t (base_enum);
+ t.dispatch (e);
+
+ enum_based = (base_enum != 0);
+ }
+
+ String value;
+ if (string_based)
+ value = evalue (e);
+
+ size_t n (0);
+ NarrowStrings const& st (options.generate_extraction ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ os << name << "::" << endl
+ << name << " (" << istream_type << "< " <<
+ i->c_str () << " >& s," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": ";
+
+ inherits (e, inherits_base_);
+
+ if (string_based && !enum_based)
+ {
+ // Use copy c-tor to pass the flags and container.
+ //
+ os << " (" << endl;
+ inherits (e, inherits_base_);
+ os << " (_xsd_" << name << "_literals_[s.read_uint ()]), f, c)";
+ }
+ else
+ os << " (s, f, c)";
+
+ os << "{";
+
+ if (string_based)
+ os << "_xsd_" << name << "_convert ();";
+
+ os << "}";
+
+ // Register with type map.
+ //
+ if (polymorphic &&
+ polymorphic_p (e) &&
+ (!anonymous_p (e) || anonymous_substitutes_p (e)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (e));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::stream_extraction_initializer< " <<
+ poly_plate << ", " << i->c_str () << ", " << char_type <<
+ ", " << name << " >" << endl
+ << "_xsd_" << name << "_stream_extraction_init_" <<
+ n++ << " (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (xml_ns_name (e)) << ");"
+ << endl;
+ }
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_base_;
+ BaseTypeName base_;
+ };
+
+ struct CtorMember: Traversal::Member, Context
+ {
+ CtorMember (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Member& m)
+ {
+ if (skip (m))
+ return;
+
+ os << "," << endl
+ << " " << emember (m) << " (this)";
+ }
+ };
+
+ struct CtorAny: Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ CtorAny (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& member (emember (a));
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ os << "," << endl
+ << " " << member << " (this->" << dom_doc << " ())";
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& member (emember (a));
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ os << "," << endl
+ << " " << member << " (this->" << dom_doc << " ())";
+ }
+ };
+
+ struct Element: Traversal::Element, Context
+ {
+ Element (Context& c, String const& stream_)
+ : Context (c), stream (stream_)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (skip (e))
+ return;
+
+ String const& member (emember (e));
+
+ SemanticGraph::Type& t (e.type ());
+ String type (etype (e));
+ String tr (etraits (e)); // traits type name
+
+ bool fund (false);
+ {
+ IsFundamentalType traverser (fund);
+ traverser.dispatch (t);
+ }
+
+ // Figure out if we need to generate polymorphic code. If this
+ // elemen's type is anonymous then we don't need to do anything.
+ // Note that if the type is anonymous then it can't be derived
+ // from which makes it impossible to substitute or dynamically-
+ // type with xsi:type.
+ //
+ bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
+
+ // Check if this element is abstract.
+ //
+ bool abst (false);
+ if (poly)
+ {
+ SemanticGraph::Complex* tc;
+ abst = (tc = dynamic_cast<SemanticGraph::Complex*> (&t)) != 0 &&
+ tc->abstract_p ();
+ }
+
+ char const* r (
+ (poly || !fund) && std >= cxx_version::cxx11
+ ? "::std::move (r)"
+ : "r");
+
+ if (max (e) != 1)
+ {
+ // sequence
+ //
+ String container (econtainer (e));
+
+ os << "{"
+ << "::std::size_t n;"
+ << "::xsd::cxx::tree::istream_common::as_size< " <<
+ "::std::size_t > as (n);"
+ << "s >> as;"
+ << "if (n > 0)"
+ << "{"
+ << container << "& c (this->" << member << ");"
+ << "c.reserve (n);"
+ << "while (n--)"
+ << "{";
+
+ if (poly)
+ {
+ os << auto_ptr << "< " << type << " > r;";
+
+ if (!abst)
+ os << "bool d;"
+ << "s >> d;"
+ << endl
+ << "if (!d)" << endl
+ << "r.reset (new " << type << " (s, f, this));"
+ << "else"
+ << "{";
+
+ os << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
+ << "::xsd::cxx::tree::stream_extraction_map_instance< " <<
+ poly_plate << ", " << stream << ", " << char_type <<
+ " > ().extract (" << endl
+ << "s, f, this));"
+ << "r.reset (dynamic_cast< " << type << "* > (tmp.get ()));"
+ << "if (r.get ())" << endl
+ << "tmp.release ();"
+ << "else" << endl
+ << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
+ " > ();";
+
+ if (!abst)
+ os << "}";
+ }
+ else if (fund)
+ {
+ os << type << " r;"
+ << "s >> r;";
+ }
+ else
+ {
+ os << auto_ptr << "< " << type << " > r (" << endl
+ << tr << "::create (s, f, this));";
+ }
+
+ os << "c.push_back (" << r << ");"
+ << "}" // while
+ << "}" // if
+ << "}";
+ }
+ else if (min (e) == 0)
+ {
+ // optional
+ //
+ os << "{"
+ << "bool p;"
+ << "s >> p;"
+ << "if (p)"
+ << "{";
+
+ if (poly)
+ {
+ os << auto_ptr << "< " << type << " > r;";
+
+ if (!abst)
+ os << "bool d;"
+ << "s >> d;"
+ << endl
+ << "if (!d)" << endl
+ << "r.reset (new " << type << " (s, f, this));"
+ << "else"
+ << "{";
+
+ os << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
+ << "::xsd::cxx::tree::stream_extraction_map_instance< " <<
+ poly_plate << ", " << stream << ", " << char_type <<
+ " > ().extract (" << endl
+ << "s, f, this));"
+ << "r.reset (dynamic_cast< " << type << "* > (tmp.get ()));"
+ << "if (r.get ())" << endl
+ << "tmp.release ();"
+ << "else" << endl
+ << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
+ " > ();";
+
+ if (!abst)
+ os << "}";
+ }
+ else if (fund)
+ {
+ os << type << " r;"
+ << "s >> r;";
+ }
+ else
+ {
+ os << auto_ptr << "< " << type << " > r (" << endl
+ << tr << "::create (s, f, this));";
+ }
+
+ os << "this->" << member << ".set (" << r << ");"
+ << "}" // if (p)
+ << "}";
+ }
+ else
+ {
+ // one
+ //
+ os << "{";
+
+ if (poly)
+ {
+ os << auto_ptr << "< " << type << " > r;";
+
+ if (!abst)
+ os << "bool d;"
+ << "s >> d;"
+ << endl
+ << "if (!d)" << endl
+ << "r.reset (new " << type << " (s, f, this));"
+ << "else"
+ << "{";
+
+ os << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
+ << "::xsd::cxx::tree::stream_extraction_map_instance< " <<
+ poly_plate << ", " << stream << ", " << char_type <<
+ " > ().extract (" << endl
+ << "s, f, this));"
+ << "r.reset (dynamic_cast< " << type << "* > (tmp.get ()));"
+ << "if (r.get ())" << endl
+ << "tmp.release ();"
+ << "else" << endl
+ << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
+ " > ();";
+
+ if (!abst)
+ os << "}";
+ }
+ else if (fund)
+ {
+ os << type << " r;"
+ << "s >> r;";
+ }
+ else
+ {
+ os << auto_ptr << "< " << type << " > r (" << endl
+ << tr << "::create (s, f, this));";
+ }
+
+ os << "this->" << member << ".set (" << r << ");"
+ << "}";
+ }
+ }
+
+ private:
+ String stream;
+ };
+
+ struct Attribute: Traversal::Attribute, Context
+ {
+ Attribute (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& member (emember (a));
+ String type (etype (a));
+ String tr (etraits (a)); // traits type name
+
+ bool fund (false);
+ {
+ IsFundamentalType traverser (fund);
+ traverser.dispatch (a.type ());
+ }
+
+ if (a.optional_p () && !a.default_p ())
+ {
+ os << "{"
+ << "bool p;"
+ << "s >> p;"
+ << "if (p)"
+ << "{";
+
+ if (fund)
+ {
+ os << type << " r;"
+ << "s >> r;"
+ << "this->" << member << ".set (r);";
+ }
+ else
+ {
+ os << "this->" << member << ".set (" << tr <<
+ "::create (s, f, this));";
+ }
+
+ os << "}" // if (p)
+ << "}";
+ }
+ else
+ {
+ os << "{";
+
+ if (fund)
+ {
+ os << type << " r;"
+ << "s >> r;"
+ << "this->" << member << ".set (r);";
+ }
+ else
+ {
+ os << "this->" << member << ".set (" << tr <<
+ "::create (s, f, this));";
+ }
+
+ os << "}";
+ }
+ }
+ };
+
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c), base_ (c), ctor_any_ (c), ctor_member_ (c)
+ {
+ inherits_ >> base_;
+ names_ctor_member_ >> ctor_member_;
+
+ if (options.generate_wildcard ())
+ names_ctor_member_ >> ctor_any_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ SemanticGraph::Context& ctx (c.context ());
+
+ String name (ename (c));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (c, name) && !name)
+ return;
+
+ bool ordered (ordered_p (c) && !ctx.count ("order-in-base"));
+ bool has_members (has<Traversal::Member> (c));
+
+ bool facets (false);
+ if (c.inherits_p ())
+ {
+ // See if we have any facets that we need to handle.
+ //
+ using SemanticGraph::Restricts;
+ using SemanticGraph::Fundamental::Decimal;
+
+ if (Restricts* r = dynamic_cast<Restricts*> (&c.inherits ()))
+ {
+ if (!r->facet_empty () &&
+ (r->facet_find ("fractionDigits") != r->facet_end () ||
+ r->facet_find ("totalDigits") != r->facet_end ()) &&
+ ultimate_base (c).is_a<Decimal> ())
+ facets = true;
+ }
+ }
+
+ size_t n (0);
+ NarrowStrings const& st (options.generate_extraction ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ os << name << "::" << endl
+ << name << " (" << istream_type << "< " <<
+ i->c_str () << " >& s," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": ";
+
+ if (c.inherits_p ())
+ inherits (c, inherits_);
+ else
+ os << any_type;
+
+ os << " (s, f, c)";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ names (c, names_ctor_member_);
+
+ os << "{";
+
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);"
+ << endl;
+
+ if (has_members)
+ os << "this->" << unclash (name, "parse") << " (s, f);";
+
+ os << "}";
+
+ // Parse
+ //
+ if (ordered || has_members)
+ {
+ os << "void " << name << "::" << endl
+ << unclash (name, "parse") << " (" <<
+ istream_type << "< " << i->c_str () << " >& s," << endl
+ << flags_type << " f)"
+ << "{"
+ << "XSD_UNUSED (f);"; // Can be unused.
+
+ // Read the order sequence.
+ //
+ if (ordered)
+ {
+ String const& t (ctx.get<String> ("order-type"));
+ String const& m (ctx.get<String> ("order-member"));
+
+ os << "{"
+ << "::std::size_t n;"
+ << "::xsd::cxx::tree::istream_common::as_size< " <<
+ "::std::size_t > na (n);"
+ << "s >> na;"
+ << "if (n > 0)"
+ << "{"
+ << "this->" << m << ".reserve (n);"
+ << "while (n--)"
+ << "{"
+ << "::std::size_t id, in;"
+ << "::xsd::cxx::tree::istream_common::as_size< " <<
+ "::std::size_t > ida (id), ina (in);"
+ << "s >> ida;"
+ << "s >> ina;"
+ << "this->" << m << ".push_back (" << t << " (id, in));"
+ << "}" // while
+ << "}" // if
+ << "}";
+ }
+
+ {
+ Element element (*this, *i);
+ Attribute attribute (*this);
+ Traversal::Names names_;
+
+ names_ >> element;
+ names_ >> attribute;
+
+ names (c, names_);
+ }
+
+ os << "}";
+ }
+
+
+ // Register with type map.
+ //
+ if (polymorphic &&
+ polymorphic_p (c) &&
+ !c.abstract_p () &&
+ (!anonymous_p (c) || anonymous_substitutes_p (c)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (c));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::stream_extraction_initializer< " <<
+ poly_plate << ", " << i->c_str () << ", " << char_type <<
+ ", " << name << " >" << endl
+ << "_xsd_" << name << "_stream_extraction_init_" <<
+ n++ << " (" << endl
+ << strlit (c.name ()) << "," << endl
+ << strlit (xml_ns_name (c)) << ");"
+ << endl;
+ }
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_;
+ BaseTypeName base_;
+
+ CtorAny ctor_any_;
+ CtorMember ctor_member_;
+
+ Traversal::Names names_ctor_member_;
+ };
+ }
+
+ void
+ generate_stream_extraction_source (Context& ctx)
+ {
+ if (ctx.polymorphic)
+ {
+ NarrowStrings const& st (ctx.options.generate_extraction ());
+
+ ctx.os << "#include <xsd/cxx/tree/stream-extraction-map.hxx>" << endl
+ << endl;
+
+ bool import_maps (ctx.options.import_maps ());
+ bool export_maps (ctx.options.export_maps ());
+
+ if (import_maps || export_maps)
+ {
+ ctx.os << "#ifndef XSD_NO_EXPORT" << endl
+ << endl
+ << "namespace xsd"
+ << "{"
+ << "namespace cxx"
+ << "{"
+ << "namespace tree"
+ << "{";
+
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream (*i);
+
+ ctx.os << "#ifdef _MSC_VER" << endl;
+
+ if (export_maps)
+ ctx.os << "template struct __declspec (dllexport) " <<
+ "stream_extraction_plate< " << ctx.poly_plate << ", " <<
+ stream << ", " << ctx.char_type << " >;";
+
+ if (import_maps)
+ ctx.os << "template struct __declspec (dllimport) " <<
+ "stream_extraction_plate< " << ctx.poly_plate << ", " <<
+ stream << ", " << ctx.char_type << " >;";
+
+ ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl
+ << "template struct __attribute__ ((visibility(\"default\"))) " <<
+ "stream_extraction_plate< " << ctx.poly_plate << ", " <<
+ stream << ", " << ctx.char_type << " >;"
+ << "#elif defined(XSD_MAP_VISIBILITY)" << endl
+ << "template struct XSD_MAP_VISIBILITY " <<
+ "stream_extraction_plate< " << ctx.poly_plate << ", " <<
+ stream << ", " << ctx.char_type << " >;"
+ << "#endif" << endl;
+ }
+
+ ctx.os << "}" // tree
+ << "}" // cxx
+ << "}" // xsd
+ << "#endif // XSD_NO_EXPORT" << endl
+ << endl;
+
+ }
+
+ ctx.os << "namespace _xsd"
+ << "{";
+
+ size_t n (0);
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream (*i);
+
+ ctx.os << "static" << endl
+ << "const ::xsd::cxx::tree::stream_extraction_plate< " <<
+ ctx.poly_plate << ", " << stream << ", " << ctx.char_type <<
+ " >" << endl
+ << "stream_extraction_plate_init_" << n++ << ";";
+ }
+
+ ctx.os << "}";
+ }
+
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names names_ns, names;
+
+ Namespace ns (ctx);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/stream-extraction-source.hxx b/xsd/cxx/tree/stream-extraction-source.hxx
new file mode 100644
index 0000000..8b58491
--- /dev/null
+++ b/xsd/cxx/tree/stream-extraction-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/stream-extraction-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_EXTRACTION_SOURCE_HXX
+#define XSD_CXX_TREE_EXTRACTION_SOURCE_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_stream_extraction_source (Context&);
+ }
+}
+
+#endif // XSD_CXX_TREE_EXTRACTION_SOURCE_HXX
diff --git a/xsd/cxx/tree/stream-header.cxx b/xsd/cxx/tree/stream-header.cxx
new file mode 100644
index 0000000..c8243c9
--- /dev/null
+++ b/xsd/cxx/tree/stream-header.cxx
@@ -0,0 +1,181 @@
+// file : xsd/cxx/tree/stream-header.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/stream-header.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String name (ename (l));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (l, name) && !name)
+ return;
+
+ os << inst_exp
+ << std_ostream_type << "&" << endl
+ << "operator<< (" << std_ostream_type << "&, const " <<
+ name << "&);"
+ << endl;
+ }
+ };
+
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String name (ename (u));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (u, name) && !name)
+ return;
+
+ os << inst_exp
+ << std_ostream_type << "&" << endl
+ << "operator<< (" << std_ostream_type << "&, const " <<
+ name << "&);"
+ << endl;
+ }
+ };
+
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String name (ename (e));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ bool string_based (false);
+ {
+ IsStringBasedType t (string_based);
+ t.dispatch (e);
+ }
+
+ bool enum_based (false);
+ if (string_based)
+ {
+ SemanticGraph::Enumeration* be (0);
+ IsEnumBasedType t (be);
+ t.dispatch (e);
+
+ enum_based = (be != 0);
+ }
+
+ // If we are based on an enum then the value type is just an
+ // alias and we don't need to generate this operator again.
+ //
+ if (string_based && !enum_based)
+ {
+ os << inst_exp
+ << std_ostream_type << "&" << endl
+ << "operator<< (" << std_ostream_type << "&, " <<
+ name << "::" << evalue (e) << ");"
+ << endl;
+ }
+
+ os << inst_exp
+ << std_ostream_type << "&" << endl
+ << "operator<< (" << std_ostream_type << "&, const " <<
+ name << "&);"
+ << endl;
+ }
+ };
+
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ String name (ename (c));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (c, name) && !name)
+ return;
+
+ os << inst_exp
+ << std_ostream_type << "&" << endl
+ << "operator<< (" << std_ostream_type << "&, const " <<
+ name << "&);"
+ << endl;
+ }
+ };
+ }
+
+ void
+ generate_stream_header (Context& ctx)
+ {
+ String c (ctx.char_type);
+
+ ctx.os << "#include <iosfwd>" << endl
+ << endl;
+
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names names_ns, names;
+
+ Namespace ns (ctx);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/stream-header.hxx b/xsd/cxx/tree/stream-header.hxx
new file mode 100644
index 0000000..58481c2
--- /dev/null
+++ b/xsd/cxx/tree/stream-header.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/stream-header.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_STREAM_HEADER_HXX
+#define XSD_CXX_TREE_STREAM_HEADER_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_stream_header (Context&);
+ }
+}
+
+#endif // XSD_CXX_TREE_STREAM_HEADER_HXX
diff --git a/xsd/cxx/tree/stream-insertion-header.cxx b/xsd/cxx/tree/stream-insertion-header.cxx
new file mode 100644
index 0000000..9eb4bc4
--- /dev/null
+++ b/xsd/cxx/tree/stream-insertion-header.cxx
@@ -0,0 +1,178 @@
+// file : xsd/cxx/tree/stream-insertion-header.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/stream-insertion-header.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String name (ename (l));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (l, name) && !name)
+ return;
+
+ NarrowStrings const& st (options.generate_insertion ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream_type (ostream_type + L"< " + String (*i) + L" >");
+
+ os << inst_exp
+ << stream_type << "&" << endl
+ << "operator<< (" << stream_type << "&," << endl
+ << "const " << name << "&);"
+ << endl;
+ }
+ }
+ };
+
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String name (ename (u));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (u, name) && !name)
+ return;
+
+ NarrowStrings const& st (options.generate_insertion ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream_type (ostream_type + L"< " + String (*i) + L" >");
+
+ os << inst_exp
+ << stream_type << "&" << endl
+ << "operator<< (" << stream_type << "&," << endl
+ << "const " << name << "&);"
+ << endl;
+ }
+ }
+ };
+
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String name (ename (e));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ NarrowStrings const& st (options.generate_insertion ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream_type (ostream_type + L"< " + String (*i) + L" >");
+
+ os << inst_exp
+ << stream_type << "&" << endl
+ << "operator<< (" << stream_type << "&," << endl
+ << "const " << name << "&);"
+ << endl;
+ }
+ }
+ };
+
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ String name (ename (c));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (c, name) && !name)
+ return;
+
+ NarrowStrings const& st (options.generate_insertion ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream_type (ostream_type + L"< " + String (*i) + L" >");
+
+ os << inst_exp
+ << stream_type << "&" << endl
+ << "operator<< (" << stream_type << "&," << endl
+ << "const " << name << "&);"
+ << endl;
+ }
+ }
+ };
+ }
+
+ void
+ generate_stream_insertion_header (Context& ctx)
+ {
+ String c (ctx.char_type);
+
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names names_ns, names;
+
+ Namespace ns (ctx);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/stream-insertion-header.hxx b/xsd/cxx/tree/stream-insertion-header.hxx
new file mode 100644
index 0000000..597bea0
--- /dev/null
+++ b/xsd/cxx/tree/stream-insertion-header.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/stream-insertion-header.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_STREAM_INSERTION_HEADER_HXX
+#define XSD_CXX_TREE_STREAM_INSERTION_HEADER_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_stream_insertion_header (Context&);
+ }
+}
+
+#endif // XSD_CXX_TREE_STREAM_INSERTION_HEADER_HXX
diff --git a/xsd/cxx/tree/stream-insertion-source.cxx b/xsd/cxx/tree/stream-insertion-source.cxx
new file mode 100644
index 0000000..08391ef
--- /dev/null
+++ b/xsd/cxx/tree/stream-insertion-source.cxx
@@ -0,0 +1,623 @@
+// file : xsd/cxx/tree/stream-insertion-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/stream-insertion-source.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String name (ename (l));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (l, name) && !name)
+ return;
+
+ SemanticGraph::Type& item_type (l.argumented ().type ());
+ String base (L"::xsd::cxx::tree::list< " +
+ item_type_name (item_type) + L", " + char_type);
+
+ if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
+ base += L", ::xsd::cxx::tree::schema_type::double_";
+ else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
+ base += L", ::xsd::cxx::tree::schema_type::decimal";
+
+ base += L" >";
+
+ size_t n (0);
+ NarrowStrings const& st (options.generate_insertion ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream_type ("::xsd::cxx::tree::ostream< " + *i + " >");
+
+ os << stream_type << "&" << endl
+ << "operator<< (" << stream_type << "& s," << endl
+ << "const " << name << "& x)"
+ << "{"
+ << "return s << static_cast< const " << base << "& > (x);"
+ << "}";
+
+ // Register with type map.
+ //
+ if (polymorphic &&
+ polymorphic_p (l) &&
+ (!anonymous_p (l) || anonymous_substitutes_p (l)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (l));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::stream_insertion_initializer< " <<
+ poly_plate << ", " << i->c_str () << ", " << char_type <<
+ ", " << name << " >" << endl
+ << "_xsd_" << name << "_stream_insertion_init_" <<
+ n++ << " (" << endl
+ << strlit (l.name ()) << "," << endl
+ << strlit (xml_ns_name (l)) << ");"
+ << endl;
+ }
+ }
+ }
+
+ private:
+ String
+ item_type_name (SemanticGraph::Type& t)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (t);
+
+ return o.str ();
+ }
+ };
+
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String name (ename (u));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (u, name) && !name)
+ return;
+
+ String const& base (xs_string_type);
+
+ size_t n (0);
+ NarrowStrings const& st (options.generate_insertion ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream_type ("::xsd::cxx::tree::ostream< " + *i + " >");
+
+ os << stream_type << "&" << endl
+ << "operator<< (" << stream_type << "& s," << endl
+ << "const " << name << "& x)"
+ << "{"
+ << "return s << static_cast< const " << base << "& > (x);"
+ << "}";
+
+ // Register with type map.
+ //
+ if (polymorphic &&
+ polymorphic_p (u) &&
+ (!anonymous_p (u) || anonymous_substitutes_p (u)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (u));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::stream_insertion_initializer< " <<
+ poly_plate << ", " << i->c_str () << ", " << char_type <<
+ ", " << name << " >" << endl
+ << "_xsd_" << name << "_stream_insertion_init_" <<
+ n++ << " (" << endl
+ << strlit (u.name ()) << "," << endl
+ << strlit (xml_ns_name (u)) << ");"
+ << endl;
+ }
+ }
+ }
+ };
+
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c), base_ (c)
+ {
+ inherits_base_ >> base_;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String name (ename (e));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ bool string_based (false);
+ {
+ IsStringBasedType t (string_based);
+ t.dispatch (e);
+ }
+
+ bool enum_based (false);
+ if (string_based)
+ {
+ SemanticGraph::Enumeration* base_enum (0);
+ IsEnumBasedType t (base_enum);
+ t.dispatch (e);
+
+ enum_based = (base_enum != 0);
+ }
+
+ String value;
+ if (string_based)
+ value = evalue (e);
+
+ size_t n (0);
+ NarrowStrings const& st (options.generate_insertion ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream_type ("::xsd::cxx::tree::ostream< " + *i + " >");
+
+ os << stream_type << "&" << endl
+ << "operator<< (" << stream_type << "& s," << endl
+ << "const " << name << "& x)"
+ << "{";
+
+ if (!string_based || enum_based)
+ {
+ os << "return s << static_cast< const ";
+ inherits (e, inherits_base_);
+ os << "& > (x);";
+ }
+ else
+ {
+ os << name << "::" << value << " v (x);"
+ << "return s << static_cast< unsigned int > (v);";
+ }
+
+ os << "}";
+
+ // Register with type map.
+ //
+ if (polymorphic &&
+ polymorphic_p (e) &&
+ (!anonymous_p (e) || anonymous_substitutes_p (e)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (e));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::stream_insertion_initializer< " <<
+ poly_plate << ", " << i->c_str () << ", " << char_type <<
+ ", " << name << " >" << endl
+ << "_xsd_" << name << "_stream_insertion_init_" <<
+ n++ << " (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (xml_ns_name (e)) << ");"
+ << endl;
+ }
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_base_;
+ BaseTypeName base_;
+ };
+
+ struct Element: Traversal::Element, Context
+ {
+ Element (Context& c, String const& scope_, String const& stream_)
+ : Context (c), scope (scope_), stream (stream_)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (skip (e)) return;
+
+ String const& aname (eaname (e));
+ SemanticGraph::Type& t (e.type ());
+ String type (scope + L"::" + etype (e));
+
+ // Figure out if we need to generate polymorphic code. If this
+ // elemen's type is anonymous then we don't need to do anything.
+ // Note that if the type is anonymous then it can't be derived
+ // from which makes it impossible to substitute or dynamically-
+ // type with xsi:type.
+ //
+ bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
+
+ // Check if this element is abstract.
+ //
+ bool abst (false);
+ if (poly)
+ {
+ SemanticGraph::Complex* tc;
+ abst = (tc = dynamic_cast<SemanticGraph::Complex*> (&t)) != 0 &&
+ tc->abstract_p ();
+ }
+
+ if (max (e) != 1)
+ {
+ // sequence
+ //
+ os << "{"
+ << "const " << scope << "::" << econtainer (e) << "& c (" <<
+ "x." << aname << " ());"
+ << "s << ::xsd::cxx::tree::ostream_common::as_size< " <<
+ "::std::size_t > (c.size ());";
+
+ os << "for (" << scope << "::" << econst_iterator (e) << endl
+ << "i (c.begin ()), e (c.end ());" << endl
+ << "i != e; ++i)"
+ << "{";
+
+ if (poly)
+ {
+ if (!abst)
+ os << "bool d (typeid (" << type << ") != typeid (*i));"
+ << "s << d;"
+ << "if (!d)" << endl
+ << "s << *i;"
+ << "else" << endl;
+
+ os << "::xsd::cxx::tree::stream_insertion_map_instance< " <<
+ poly_plate << ", " << stream << ", " << char_type <<
+ " > ().insert (s, *i);";
+ }
+ else
+ os << "s << *i;";
+
+ os << "}" // for
+ << "}";
+ }
+ else if (min (e) == 0)
+ {
+ // optional
+ //
+ os << "{"
+ << "bool p (x." << aname << " ());"
+ << "s << p;"
+ << "if (p)";
+
+ if (poly)
+ {
+ os << "{"
+ << "const " << type << "& i (*x." << aname << " ());";
+
+ if (!abst)
+ os << "bool d (typeid (" << type << ") != typeid (i));"
+ << "s << d;"
+ << "if (!d)" << endl
+ << "s << i;"
+ << "else" << endl;
+
+ os << "::xsd::cxx::tree::stream_insertion_map_instance< " <<
+ poly_plate << ", " << stream << ", " << char_type <<
+ " > ().insert (s, i);"
+ << "}";
+ }
+ else
+ os << endl
+ << "s << *x." << aname << " ();";
+
+ os << "}";
+ }
+ else
+ {
+ // one
+ //
+ if (poly)
+ {
+ os << "{"
+ << "const " << type << "& i (x." << aname << " ());";
+
+ if (!abst)
+ os << "bool d (typeid (" << type << ") != typeid (i));"
+ << "s << d;"
+ << "if (!d)" << endl
+ << "s << i;"
+ << "else" << endl;
+
+ os << "::xsd::cxx::tree::stream_insertion_map_instance< " <<
+ poly_plate << ", " << stream << ", " << char_type <<
+ " > ().insert (s, i);"
+ << "}";
+ }
+ else
+ os << "s << x." << aname << " ();";
+ }
+ }
+
+ private:
+ String scope;
+ String stream;
+ };
+
+ struct Attribute: Traversal::Attribute, Context
+ {
+ Attribute (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& aname (eaname (a));
+
+ if (a.optional_p () && !a.default_p ())
+ {
+ os << "{"
+ << "bool p (x." << aname << " ());"
+ << "s << p;"
+ << "if (p)" << endl
+ << "s << *x." << aname << " ();"
+ << "}";
+ }
+ else
+ {
+ os << "s << x." << aname << " ();";
+ }
+ }
+ };
+
+
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c), base_ (c)
+ {
+ inherits_ >> base_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ SemanticGraph::Context& ctx (c.context ());
+
+ String name (ename (c));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (c, name) && !name)
+ return;
+
+ bool ordered (ordered_p (c) && !ctx.count ("order-in-base"));
+ bool has_body (ordered ||
+ has<Traversal::Member> (c) ||
+ c.inherits_p ());
+
+ size_t n (0);
+ NarrowStrings const& st (options.generate_insertion ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream_type ("::xsd::cxx::tree::ostream< " + *i + " >");
+
+ os << stream_type << "&" << endl
+ << "operator<< (" << stream_type << "& s," << endl
+ << "const " << name << "&" << (has_body ? " x" : "") << ")"
+ << "{";
+
+ if (c.inherits_p ())
+ {
+ os << "s << static_cast< const ";
+
+ inherits (c, inherits_);
+
+ os << "& > (x);";
+ }
+
+ // Write the order sequence.
+ //
+ if (ordered)
+ {
+ String const& ci (ctx.get<String> ("order-const-iterator"));
+ String const& an (ctx.get<String> ("order-aname"));
+
+ os << "s << ::xsd::cxx::tree::ostream_common::as_size< " <<
+ "::std::size_t > (" << endl
+ << "x." << an << " ().size ());"
+ << endl
+ << "for (" << name << "::" << ci << endl
+ << "b (x." << an << " ().begin ()), n (x." << an <<
+ " ().end ());" << endl
+ << "b != n; ++b)"
+ << "{"
+ << "s << ::xsd::cxx::tree::ostream_common::as_size< " <<
+ "::std::size_t > (b->id);"
+ << "s << ::xsd::cxx::tree::ostream_common::as_size< " <<
+ "::std::size_t > (b->index);"
+ << "}";
+ }
+
+ {
+ Traversal::Names names_member;
+ Element element (*this, name, *i);
+ Attribute attribute (*this);
+
+ names_member >> element;
+ names_member >> attribute;
+
+ names (c, names_member);
+ }
+
+ os << "return s;"
+ << "}";
+
+
+ // Register with type map.
+ //
+ if (polymorphic &&
+ polymorphic_p (c) &&
+ !c.abstract_p () &&
+ (!anonymous_p (c) || anonymous_substitutes_p (c)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (c));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::stream_insertion_initializer< " <<
+ poly_plate << ", " << i->c_str () << ", " << char_type <<
+ ", " << name << " >" << endl
+ << "_xsd_" << name << "_stream_insertion_init_" <<
+ n++ << " (" << endl
+ << strlit (c.name ()) << "," << endl
+ << strlit (xml_ns_name (c)) << ");"
+ << endl;
+ }
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_;
+ BaseTypeName base_;
+ };
+ }
+
+ void
+ generate_stream_insertion_source (Context& ctx)
+ {
+ if (ctx.polymorphic)
+ {
+ NarrowStrings const& st (ctx.options.generate_insertion ());
+
+ ctx.os << "#include <xsd/cxx/tree/stream-insertion-map.hxx>" << endl
+ << endl;
+
+ bool import_maps (ctx.options.import_maps ());
+ bool export_maps (ctx.options.export_maps ());
+
+ if (import_maps || export_maps)
+ {
+ ctx.os << "#ifndef XSD_NO_EXPORT" << endl
+ << endl
+ << "namespace xsd"
+ << "{"
+ << "namespace cxx"
+ << "{"
+ << "namespace tree"
+ << "{";
+
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream (*i);
+
+ ctx.os << "#ifdef _MSC_VER" << endl;
+
+ if (export_maps)
+ ctx.os << "template struct __declspec (dllexport) " <<
+ "stream_insertion_plate< " << ctx.poly_plate << ", " <<
+ stream << ", " << ctx.char_type << " >;";
+
+ if (import_maps)
+ ctx.os << "template struct __declspec (dllimport) " <<
+ "stream_insertion_plate< " << ctx.poly_plate << ", " <<
+ stream << ", " << ctx.char_type << " >;";
+
+ ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl
+ << "template struct __attribute__ ((visibility(\"default\"))) " <<
+ "stream_insertion_plate< " << ctx.poly_plate << ", " <<
+ stream << ", " << ctx.char_type << " >;"
+ << "#elif defined(XSD_MAP_VISIBILITY)" << endl
+ << "template struct XSD_MAP_VISIBILITY " <<
+ "stream_insertion_plate< " << ctx.poly_plate << ", " <<
+ stream << ", " << ctx.char_type << " >;"
+ << "#endif" << endl;
+ }
+
+ ctx.os << "}" // tree
+ << "}" // cxx
+ << "}" // xsd
+ << "#endif // XSD_NO_EXPORT" << endl
+ << endl;
+ }
+
+ ctx.os << "namespace _xsd"
+ << "{";
+
+ size_t n (0);
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ String stream (*i);
+
+ ctx.os << "static" << endl
+ << "const ::xsd::cxx::tree::stream_insertion_plate< " <<
+ ctx.poly_plate << ", " << stream << ", " << ctx.char_type <<
+ " >" << endl
+ << "stream_insertion_plate_init_" << n++ << ";";
+ }
+
+ ctx.os << "}";
+ }
+
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names names_ns, names;
+
+ Namespace ns (ctx);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/stream-insertion-source.hxx b/xsd/cxx/tree/stream-insertion-source.hxx
new file mode 100644
index 0000000..ace8bf6
--- /dev/null
+++ b/xsd/cxx/tree/stream-insertion-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/stream-insertion-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_INSERTION_SOURCE_HXX
+#define XSD_CXX_TREE_INSERTION_SOURCE_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_stream_insertion_source (Context&);
+ }
+}
+
+#endif // XSD_CXX_TREE_INSERTION_SOURCE_HXX
diff --git a/xsd/cxx/tree/stream-source.cxx b/xsd/cxx/tree/stream-source.cxx
new file mode 100644
index 0000000..eeb3ca3
--- /dev/null
+++ b/xsd/cxx/tree/stream-source.cxx
@@ -0,0 +1,496 @@
+// file : xsd/cxx/tree/stream-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/stream-source.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String name (ename (l));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (l, name) && !name)
+ return;
+
+ SemanticGraph::Type& item_type (l.argumented ().type ());
+ String base (L"::xsd::cxx::tree::list< " +
+ item_type_name (item_type) + L", " + char_type);
+
+ if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
+ base += L", ::xsd::cxx::tree::schema_type::double_";
+ else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
+ base += L", ::xsd::cxx::tree::schema_type::decimal";
+
+ base += L" >";
+
+ os << std_ostream_type << "&" << endl
+ << "operator<< (" << std_ostream_type << "& o, " <<
+ "const " << name << "& i)"
+ << "{"
+ << "return o << static_cast< const " << base << "& > (i);"
+ << "}";
+
+ // Register with ostream map.
+ //
+ if (polymorphic &&
+ polymorphic_p (l) &&
+ (!anonymous_p (l) || anonymous_substitutes_p (l)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (l));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::std_ostream_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_std_ostream_init;"
+ << endl;
+ }
+ }
+
+ private:
+ String
+ item_type_name (SemanticGraph::Type& t)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (t);
+
+ return o.str ();
+ }
+ };
+
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String name (ename (u));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (u, name) && !name)
+ return;
+
+ os << std_ostream_type << "&" << endl
+ << "operator<< (" << std_ostream_type << "& o, " <<
+ "const " << name << "& i)"
+ << "{"
+ << "return o << static_cast< const " << xs_string_type << "& > (i);"
+ << "}";
+
+ // Register with ostream map.
+ //
+ if (polymorphic &&
+ polymorphic_p (u) &&
+ (!anonymous_p (u) || anonymous_substitutes_p (u)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (u));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::std_ostream_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_std_ostream_init;"
+ << endl;
+ }
+ }
+ };
+
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c), base_ (c)
+ {
+ inherits_base_ >> base_;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String name (ename (e));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ bool string_based (false);
+ {
+ IsStringBasedType t (string_based);
+ t.dispatch (e);
+ }
+
+ bool enum_based (false);
+ if (string_based)
+ {
+ SemanticGraph::Enumeration* be (0);
+ IsEnumBasedType t (be);
+ t.dispatch (e);
+
+ enum_based = (be != 0);
+ }
+
+ // If we are based on an enum then the value type is just an
+ // alias and we don't need to generate this operator again.
+ //
+ if (string_based && !enum_based)
+ {
+ os << std_ostream_type << "&" << endl
+ << "operator<< (" << std_ostream_type << "& o, " <<
+ name << "::" << evalue (e) << " i)"
+ << "{"
+ << "return o << " << name << "::_xsd_" << name <<
+ "_literals_[i];"
+ << "}";
+ }
+
+ os << std_ostream_type << "&" << endl
+ << "operator<< (" << std_ostream_type << "& o, " <<
+ "const " << name << "& i)"
+ << "{"
+ << "return o << static_cast< const ";
+
+ inherits (e, inherits_base_);
+
+ os << "& > (i);"
+ << "}";
+
+ // Register with ostream map.
+ //
+ if (polymorphic &&
+ polymorphic_p (e) &&
+ (!anonymous_p (e) || anonymous_substitutes_p (e)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (e));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::std_ostream_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_std_ostream_init;"
+ << endl;
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_base_;
+ BaseTypeName base_;
+ };
+
+ struct Element: Traversal::Element, Context
+ {
+ Element (Context& c, String const& scope_)
+ : Context (c), scope (scope_)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (skip (e))
+ return;
+
+ String const& aname (eaname (e));
+
+ // Check if we need to handle xsi:type and substitution groups.
+ // If this element's type is anonymous then we don't need to do
+ // anything. Note that if the type is anonymous then it can't be
+ // derived from which makes it impossible to substitute or
+ // dynamically-type with xsi:type.
+ //
+ SemanticGraph::Type& t (e.type ());
+ bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
+
+ if (poly)
+ {
+ os << "{"
+ << "::xsd::cxx::tree::std_ostream_map< " << char_type
+ << " >& om (" << endl
+ << "::xsd::cxx::tree::std_ostream_map_instance< " <<
+ poly_plate << ", " << char_type << " > ());"
+ << endl;
+ }
+
+ if (max (e) != 1)
+ {
+ // sequence
+ //
+ os << "for (" << scope << "::" << econst_iterator (e) << endl
+ << "b (i." << aname << " ().begin ()), " <<
+ "e (i." << aname << " ().end ());" << endl
+ << "b != e; ++b)"
+ << "{"
+ << "o << ::std::endl << " << strlit (e.name () + L": ");
+
+ if (!poly)
+ os << " << *b;";
+ else
+ os << ";"
+ << "om.insert (o, *b);";
+
+ os << "}";
+ }
+ else if (min (e) == 0)
+ {
+ // optional
+ //
+
+ os << "if (i." << aname << " ())"
+ << "{"
+ << "o << ::std::endl << " << strlit (e.name () + L": ");
+
+ if (!poly)
+ os << " << *i." << aname << " ();";
+ else
+ os << ";"
+ << "om.insert (o, *i." << aname << " ());";
+
+ os << "}";
+ }
+ else
+ {
+ // one
+ //
+ os << "o << ::std::endl << " << strlit (e.name () + L": ");
+
+ if (!poly)
+ os << " << i." << aname << " ();";
+ else
+ os << ";"
+ << "om.insert (o, i." << aname << " ());";
+ }
+
+ if (poly)
+ os << "}";
+ }
+
+ private:
+ String scope;
+ };
+
+ struct Attribute: Traversal::Attribute, Context
+ {
+ Attribute (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& aname (eaname (a));
+
+ if (a.optional_p () && !a.default_p ())
+ {
+ os << "if (i." << aname << " ())"
+ << "{"
+ << "o << ::std::endl << " << strlit (a.name () + L": ") <<
+ " << *i." << aname << " ();"
+ << "}";
+ }
+ else
+ {
+ os << "o << ::std::endl << " << strlit (a.name () + L": ") <<
+ " << i." << aname << " ();";
+ }
+ }
+ };
+
+
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c), base_ (c)
+ {
+ inherits_ >> base_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ String name (ename (c));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (c, name) && !name)
+ return;
+
+ //
+ //
+ bool has_body (has<Traversal::Member> (c) || c.inherits_p ());
+
+ os << std_ostream_type << "&" << endl
+ << "operator<< (" << std_ostream_type << "& o, " <<
+ "const " << name << "&" << (has_body ? " i" : "") << ")"
+ << "{";
+
+ if (c.inherits_p ())
+ {
+ os << "o << static_cast< const ";
+
+ inherits (c, inherits_);
+
+ os << "& > (i);"
+ << endl;
+ }
+
+ {
+ Traversal::Names names_member;
+ Element element (*this, name);
+ Attribute attribute (*this);
+
+ names_member >> element;
+ names_member >> attribute;
+
+ names (c, names_member);
+ }
+
+ os << "return o;"
+ << "}";
+
+ // Register with ostream map.
+ //
+ if (polymorphic &&
+ polymorphic_p (c) &&
+ !c.abstract_p () &&
+ (!anonymous_p (c) || anonymous_substitutes_p (c)))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (c));
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::std_ostream_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_std_ostream_init;"
+ << endl;
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_;
+ BaseTypeName base_;
+ };
+ }
+
+ void
+ generate_stream_source (Context& ctx, size_t first, size_t last)
+ {
+ String c (ctx.char_type);
+
+ ctx.os << "#include <ostream>" << endl
+ << endl;
+
+ if (ctx.polymorphic)
+ {
+ ctx.os << "#include <xsd/cxx/tree/std-ostream-map.hxx>" << endl
+ << endl;
+
+ bool import_maps (ctx.options.import_maps ());
+ bool export_maps (ctx.options.export_maps ());
+
+ if (import_maps || export_maps)
+ {
+ ctx.os << "#ifndef XSD_NO_EXPORT" << endl
+ << endl
+ << "namespace xsd"
+ << "{"
+ << "namespace cxx"
+ << "{"
+ << "namespace tree"
+ << "{"
+ << "#ifdef _MSC_VER" << endl;
+
+ if (export_maps)
+ ctx.os << "template struct __declspec (dllexport) " <<
+ "std_ostream_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ if (import_maps)
+ ctx.os << "template struct __declspec (dllimport) " <<
+ "std_ostream_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl
+ << "template struct __attribute__ ((visibility(\"default\"))) " <<
+ "std_ostream_plate< " << ctx.poly_plate << ", " << ctx.char_type <<
+ " >;";
+
+ ctx.os << "#elif defined(XSD_MAP_VISIBILITY)" << endl
+ << "template struct XSD_MAP_VISIBILITY " <<
+ "std_ostream_plate< " << ctx.poly_plate << ", " << ctx.char_type <<
+ " >;";
+
+ ctx.os << "#endif" << endl
+ << "}" // tree
+ << "}" // cxx
+ << "}" // xsd
+ << "#endif // XSD_NO_EXPORT" << endl
+ << endl;
+ }
+
+ ctx.os << "namespace _xsd"
+ << "{"
+ << "static" << endl
+ << "const ::xsd::cxx::tree::std_ostream_plate< " <<
+ ctx.poly_plate << ", " << ctx.char_type << " >" << endl
+ << "std_ostream_plate_init;"
+ << "}";
+ }
+
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names names_ns, names;
+
+ Namespace ns (ctx, first, last);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/stream-source.hxx b/xsd/cxx/tree/stream-source.hxx
new file mode 100644
index 0000000..b2b4d5d
--- /dev/null
+++ b/xsd/cxx/tree/stream-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/stream-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_STREAM_SOURCE_HXX
+#define XSD_CXX_TREE_STREAM_SOURCE_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_stream_source (Context&, size_t first, size_t last);
+ }
+}
+
+#endif // XSD_CXX_TREE_STREAM_SOURCE_HXX
diff --git a/xsd/cxx/tree/tree-forward.cxx b/xsd/cxx/tree/tree-forward.cxx
new file mode 100644
index 0000000..b715abe
--- /dev/null
+++ b/xsd/cxx/tree/tree-forward.cxx
@@ -0,0 +1,325 @@
+// file : xsd/cxx/tree/tree-forward.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsd/cxx/tree/tree-forward.hxx>
+#include <xsd/cxx/tree/fundamental-header.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String const& name (ename (l));
+
+ if (String custom = custom_type (l))
+ {
+ String new_name;
+ renamed_type (l, new_name);
+
+ if (new_name)
+ os << "class " << new_name << ";";
+
+ if (custom == name)
+ os << "class " << name << ";";
+ else
+ os << "typedef " << custom << " " << name << ";";
+ }
+ else
+ os << "class " << name << ";";
+ }
+ };
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String const& name (ename (u));
+
+ if (String custom = custom_type (u))
+ {
+ String new_name;
+ renamed_type (u, new_name);
+
+ if (new_name)
+ os << "class " << new_name << ";";
+
+ if (custom == name)
+ os << "class " << name << ";";
+ else
+ os << "typedef " << custom << " " << name << ";";
+ }
+ else
+ os << "class " << name << ";";
+ }
+ };
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String const& name (ename (e));
+
+ if (String custom = custom_type (e))
+ {
+ String new_name;
+ renamed_type (e, new_name);
+
+ if (new_name)
+ os << "class " << new_name << ";";
+
+ if (custom == name)
+ os << "class " << name << ";";
+ else
+ os << "typedef " << custom << " " << name << ";";
+ }
+ else
+ os << "class " << name << ";";
+ }
+ };
+
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ String const& name (ename (c));
+
+ if (String custom = custom_type (c))
+ {
+ String new_name;
+ renamed_type (c, new_name);
+
+ if (new_name)
+ os << "class " << new_name << ";";
+
+ if (custom == name)
+ os << "class " << name << ";";
+ else
+ os << "typedef " << custom << " " << name << ";";
+ }
+ else
+ os << "class " << name << ";";
+ }
+ };
+ }
+
+ void
+ generate_forward (Context& ctx)
+ {
+ NarrowString xml_schema (ctx.options.extern_xml_schema ());
+
+ // Inlcude or Emit fundamental types.
+ //
+ if (xml_schema)
+ {
+ String name (ctx.hxx_expr->replace (xml_schema));
+
+ ctx.os << "#include " << ctx.process_include_path (name) << endl
+ << endl;
+ }
+ else
+ {
+ if (ctx.char_type == L"char" && ctx.char_encoding != L"custom")
+ {
+ ctx.os << "#include <xsd/cxx/xml/char-" << ctx.char_encoding <<
+ ".hxx>" << endl
+ << endl;
+ }
+
+ ctx.os << "#include <xsd/cxx/tree/exceptions.hxx>" << endl
+ << "#include <xsd/cxx/tree/elements.hxx>" << endl
+ << "#include <xsd/cxx/tree/types.hxx>" << endl
+ << endl;
+
+ if (!ctx.options.suppress_parsing () ||
+ ctx.options.generate_serialization ())
+ {
+ ctx.os << "#include <xsd/cxx/xml/error-handler.hxx>" << endl
+ << endl;
+ }
+
+ if (!ctx.options.suppress_parsing () ||
+ ctx.options.generate_serialization ())
+ {
+ ctx.os << "#include <xsd/cxx/xml/dom/auto-ptr.hxx>" << endl
+ << endl;
+ }
+
+ bool element_map (ctx.options.generate_element_map ());
+
+ if (element_map)
+ ctx.os << "#include <xsd/cxx/tree/element-map.hxx>" << endl
+ << endl;
+
+ // I need to include all the "optional" headers here (instead of
+ // later in the individual generators for each feature because
+ // those headers provide implementation for the fundamental types.
+ //
+ if (!ctx.options.suppress_parsing ())
+ {
+ ctx.os << "#include <xsd/cxx/tree/parsing.hxx>" << endl;
+
+ Traversal::Schema schema, xsd;
+ Traversal::Implies implies;
+ Traversal::Names names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ FundIncludes type (ctx, "parsing");
+
+ schema >> implies >> xsd >> names >> ns >> ns_names >> type;
+
+ schema.dispatch (ctx.schema_root);
+
+ if (element_map)
+ ctx.os << "#include <xsd/cxx/tree/parsing/element-map.txx>" <<
+ endl;
+
+ ctx.os << endl;
+ }
+
+ if (ctx.options.generate_serialization ())
+ {
+ ctx.os << "#include <xsd/cxx/xml/dom/serialization-header.hxx>" << endl
+ << "#include <xsd/cxx/tree/serialization.hxx>" << endl;
+
+ Traversal::Schema schema, xsd;
+ Traversal::Implies implies;
+ Traversal::Names names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ FundIncludes type (ctx, "serialization");
+
+ schema >> implies >> xsd >> names >> ns >> ns_names >> type;
+
+ schema.dispatch (ctx.schema_root);
+
+ if (element_map)
+ ctx.os << "#include <xsd/cxx/tree/serialization/element-map.txx>" <<
+ endl;
+
+ ctx.os << endl;
+ }
+
+ if (ctx.options.generate_ostream ())
+ {
+ ctx.os << "#include <xsd/cxx/tree/std-ostream-operators.hxx>" << endl
+ << endl;
+ }
+
+ NarrowStrings const& ist (ctx.options.generate_insertion ());
+ if (!ist.empty ())
+ {
+ for (NarrowStrings::const_iterator i (ist.begin ()); i != ist.end ();
+ ++i)
+ {
+ if (*i == "ACE_OutputCDR")
+ ctx.os << "#include <xsd/cxx/tree/ace-cdr-stream-insertion.hxx>"
+ << endl;
+ else if (*i == "XDR")
+ ctx.os << "#include <xsd/cxx/tree/xdr-stream-insertion.hxx>"
+ << endl;
+ }
+
+ ctx.os << "#include <xsd/cxx/tree/stream-insertion.hxx>" << endl
+ << endl;
+ }
+
+ NarrowStrings const& est (ctx.options.generate_extraction ());
+ if (!est.empty ())
+ {
+ for (NarrowStrings::const_iterator i (est.begin ()); i != est.end ();
+ ++i)
+ {
+ if (*i == "ACE_InputCDR")
+ ctx.os << "#include <xsd/cxx/tree/ace-cdr-stream-extraction.hxx>"
+ << endl;
+ else if (*i == "XDR")
+ ctx.os << "#include <xsd/cxx/tree/xdr-stream-extraction.hxx>"
+ << endl;
+ }
+
+ ctx.os << "#include <xsd/cxx/tree/stream-extraction.hxx>" << endl
+ << endl;
+ }
+
+
+ Traversal::Schema schema, xsd;
+ Traversal::Implies implies;
+ Traversal::Names names;
+ FundamentalNamespace ns (ctx);
+
+ schema >> implies >> xsd >> names >> ns;
+
+ schema.dispatch (ctx.schema_root);
+ }
+
+ // First emit header includes.
+ //
+ if (ctx.options.generate_forward ())
+ {
+ Traversal::Schema schema;
+ Includes includes (ctx, Includes::forward);
+
+ schema >> includes;
+
+ schema.dispatch (ctx.schema_root);
+ }
+
+ ctx.os << "// Forward declarations." << endl
+ << "//" << endl;
+
+ Traversal::Schema schema;
+ Sources sources;
+ Traversal::Names names_ns, names;
+ Namespace ns (ctx);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ schema.dispatch (ctx.schema_root);
+
+ ctx.os << endl;
+ }
+ }
+}
diff --git a/xsd/cxx/tree/tree-forward.hxx b/xsd/cxx/tree/tree-forward.hxx
new file mode 100644
index 0000000..0610999
--- /dev/null
+++ b/xsd/cxx/tree/tree-forward.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/tree-forward.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_TREE_FORWARD_HXX
+#define XSD_CXX_TREE_TREE_FORWARD_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_forward (Context&);
+ }
+}
+
+#endif // XSD_CXX_TREE_TREE_FORWARD_HXX
diff --git a/xsd/cxx/tree/tree-header.cxx b/xsd/cxx/tree/tree-header.cxx
new file mode 100644
index 0000000..99a9b17
--- /dev/null
+++ b/xsd/cxx/tree/tree-header.cxx
@@ -0,0 +1,4337 @@
+// file : xsd/cxx/tree/tree-header.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/cxx/tree/tree-header.hxx>
+#include <xsd/cxx/tree/default-value.hxx>
+#include <xsd/cxx/tree/fundamental-header.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ // List mapping.
+ //
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String name (ename (l));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (l, name) && !name)
+ return;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief List class corresponding to the %" <<
+ comment (l.name ()) << endl
+ << " * schema type." << endl
+ << " *" << endl
+ << " * This class has an interface of a standard C++ " <<
+ "sequence (e.g.," << endl
+ << " * std::vector)." << endl;
+
+ if (l.annotated_p ())
+ {
+ os << " *" << endl;
+ write_annotation (l.annotation ());
+ }
+
+ os << " */" << endl;
+ }
+
+ SemanticGraph::Type& item_type (l.argumented ().type ());
+ String item_name (item_type_name (item_type));
+ String base_type (L"::xsd::cxx::tree::list< " + item_name + L", " +
+ char_type);
+
+ if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
+ base_type += L", ::xsd::cxx::tree::schema_type::double_";
+ else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
+ base_type += L", ::xsd::cxx::tree::schema_type::decimal";
+
+ base_type += L" >";
+
+ os << "class " << type_exp << name <<
+ ": public " << any_simple_type << "," << endl
+ << " public " << base_type
+ << "{"
+ << "public:" << endl;
+
+ // c-tor ()
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Default constructor." << endl
+ << " *" << endl
+ << " * Creates an empty list." << endl
+ << " */" << endl;
+ }
+ os << name << " ();"
+ << endl;
+
+ // c-tor (size_type, const X& x)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create a list with copies of the specified " <<
+ "element." << endl
+ << " *" << endl
+ << " * @param n A number of elements to copy." << endl
+ << " * @param x An element to copy." << endl
+ << " *" << endl
+ << " * This constructor creates a list with @a n copies " <<
+ "of @a x." << endl
+ << " */" << endl;
+ }
+
+ String size_type (name != L"size_type"
+ ? String (L"size_type")
+ : base_type + L"::size_type");
+
+ os << name << " (" << size_type << " n, const " << item_name <<
+ "& x);"
+ << endl;
+
+ // c-tor (const I& begin, const I& end)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create a list from an iterator range." << endl
+ << " *" << endl
+ << " * @param begin An iterator pointing to the first " <<
+ "element." << endl
+ << " * @param end An iterator pointing to the one past " <<
+ "the last element." << endl
+ << " *" << endl
+ << " * This constructor creates a list consisting of " <<
+ "copies of the" << endl
+ << " * elements in the range [begin,end)." << endl
+ << " */" << endl;
+ }
+
+ String iter_type (unclash (name, "I"));
+
+ os << "template < typename " << iter_type << " >" << endl
+ << name << " (const " << iter_type << "& begin, const " <<
+ iter_type << "& end)" << endl
+ << ": " << base_type << " (begin, end, this)"
+ << "{"
+ << "}";
+
+ // c-tor (istream&)
+ //
+ NarrowStrings const& st (options.generate_extraction ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a data " <<
+ "representation" << endl
+ << " * stream." << endl
+ << " *" << endl
+ << " * @param s A stream to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (" << istream_type << "< " << i->c_str () <<
+ " >& s," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+ }
+
+ if (!options.suppress_parsing ())
+ {
+ // c-tor (xercesc::DOMElement)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a DOM element." << endl
+ << " *" << endl
+ << " * @param e A DOM element to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << xerces_ns << "::DOMElement& e," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ // c-tor (xercesc::DOMAttr)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a DOM attribute." << endl
+ << " *" << endl
+ << " * @param a A DOM attribute to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ // c-tor (std::basic_string const&, xercesc::DOMElement)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a string fragment." << endl
+ << " *" << endl
+ << " * @param s A string fragment to extract the data from." << endl
+ << " * @param e A pointer to DOM element containing the " <<
+ "string fragment." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << string_type << "& s," << endl
+ << "const " << xerces_ns << "::DOMElement* e," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+ }
+
+ // copy c-tor ()
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy constructor." << endl
+ << " *" << endl
+ << " * @param x An instance to make a copy of." << endl
+ << " * @param f Flags to create the copy with." << endl
+ << " * @param c A pointer to the object that will contain " <<
+ "the copy." << endl
+ << " *" << endl
+ << " * For polymorphic object models use the @c _clone " <<
+ "function instead." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << name << "& x," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ os << "#ifdef XSD_CXX11" << endl
+ << name << "&" << endl
+ << "operator= (const " << name << "&) = default;"
+ << "#endif" << endl
+ << endl;
+
+ // clone
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy the instance polymorphically." << endl
+ << " *" << endl
+ << " * @param f Flags to create the copy with." << endl
+ << " * @param c A pointer to the object that will contain " <<
+ "the copy." << endl
+ << " * @return A pointer to the dynamically allocated copy." << endl
+ << " *" << endl
+ << " * This function ensures that the dynamic type of the " <<
+ "instance is" << endl
+ << " * used for copying and should be used for polymorphic " <<
+ "object" << endl
+ << " * models instead of the copy constructor." << endl
+ << " */" << endl;
+ }
+
+ os << "virtual " << name << "*" << endl
+ << "_clone (" << flags_type << " f = 0," << endl
+ << container << "* c = 0) const;"
+ << endl;
+
+ // d-tor
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Destructor." << endl
+ << " */" << endl;
+ }
+
+ os << "virtual " << endl
+ << "~" << name << " ();";
+
+ os << "};";
+
+ // Comparison operators.
+ //
+ if (options.generate_comparison ())
+ {
+ os << inst_exp
+ << "bool" << endl
+ << "operator== (const " << name << "&, const " << name << "&);"
+ << endl;
+
+ os << inst_exp
+ << "bool" << endl
+ << "operator!= (const " << name << "&, const " << name << "&);"
+ << endl
+ << endl;
+ }
+ }
+
+ private:
+ String
+ item_type_name (SemanticGraph::Type& t)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (t);
+
+ return o.str ();
+ }
+ };
+
+
+ // Union mapping.
+ //
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String name (ename (u));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (u, name) && !name)
+ return;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Union class corresponding to the %" <<
+ comment (u.name ()) << endl
+ << " * schema type." << endl
+ << " *" << endl
+ << " * The mapping represents unions as strings." << endl;
+
+ if (u.annotated_p ())
+ {
+ os << " *" << endl;
+ write_annotation (u.annotation ());
+ }
+
+ os << " */" << endl;
+ }
+
+ os << "class " << type_exp << name <<
+ ": public " << xs_string_type
+ << "{"
+ << "public:" << endl
+ << endl;
+
+ if (options.generate_default_ctor ())
+ {
+ // c-tor ()
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Default constructor." << endl
+ << " *" << endl
+ << " * Note that this constructor may leave the " <<
+ "instance in an" << endl
+ << " * invalid state." << endl
+ << " */" << endl;
+ }
+
+ os << name << " ();"
+ << endl;
+ }
+
+ // c-tor (const char*)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a C string." << endl
+ << " *" << endl
+ << " * @param v A string value." << endl
+ << " */" << endl;
+ }
+ os << name << " (const " << char_type << "* v);"
+ << endl;
+
+ // c-tor (string const&)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a string." << endl
+ << " *" << endl
+ << " * @param v A string value." << endl
+ << " */" << endl;
+ }
+ os << name << " (const " << string_type << "& v);"
+ << endl;
+
+ // c-tor (istream&)
+ //
+ NarrowStrings const& st (options.generate_extraction ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a data " <<
+ "representation" << endl
+ << " * stream." << endl
+ << " *" << endl
+ << " * @param s A stream to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (" << istream_type << "< " << i->c_str () <<
+ " >& s," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+ }
+
+ if (!options.suppress_parsing ())
+ {
+ // c-tor (xercesc::DOMElement)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a DOM element." << endl
+ << " *" << endl
+ << " * @param e A DOM element to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << xerces_ns << "::DOMElement& e," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ // c-tor (xercesc::DOMAttr)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a DOM attribute." << endl
+ << " *" << endl
+ << " * @param a A DOM attribute to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ // c-tor (std::basic_string const&, xercesc::DOMElement)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a string fragment." << endl
+ << " *" << endl
+ << " * @param s A string fragment to extract the data from." << endl
+ << " * @param e A pointer to DOM element containing the " <<
+ "string fragment." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << string_type << "& s," << endl
+ << "const " << xerces_ns << "::DOMElement* e," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+ }
+
+ // copy c-tor ()
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy constructor." << endl
+ << " *" << endl
+ << " * @param x An instance to make a copy of." << endl
+ << " * @param f Flags to create the copy with." << endl
+ << " * @param c A pointer to the object that will contain " <<
+ "the copy." << endl
+ << " *" << endl
+ << " * For polymorphic object models use the @c _clone " <<
+ "function instead." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << name << "& x," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ os << "#ifdef XSD_CXX11" << endl
+ << name << "&" << endl
+ << "operator= (const " << name << "&) = default;"
+ << "#endif" << endl
+ << endl;
+
+ // clone
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy the instance polymorphically." << endl
+ << " *" << endl
+ << " * @param f Flags to create the copy with." << endl
+ << " * @param c A pointer to the object that will contain " <<
+ "the copy." << endl
+ << " * @return A pointer to the dynamically allocated copy." << endl
+ << " *" << endl
+ << " * This function ensures that the dynamic type of the " <<
+ "instance is" << endl
+ << " * used for copying and should be used for polymorphic " <<
+ "object" << endl
+ << " * models instead of the copy constructor." << endl
+ << " */" << endl;
+ }
+
+ os << "virtual " << name << "*" << endl
+ << "_clone (" << flags_type << " f = 0," << endl
+ << container << "* c = 0) const;"
+ << endl;
+
+ os << "};";
+ }
+ };
+
+ // Enum mapping.
+ //
+ struct Enumerator: Traversal::Enumerator, Context
+ {
+ Enumerator (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (doxygen && e.annotated_p ())
+ {
+ os << "/**" << endl;
+ write_annotation (e.annotation ());
+ os << " */" << endl;
+ }
+
+ os << ename (e);
+ }
+ };
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c),
+ base_ (c),
+ member_ (c),
+ enumerator_ (c)
+ {
+ inherits_base_ >> base_;
+ inherits_member_ >> member_;
+
+ names_ >> enumerator_;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String name (ename (e));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ bool string_based (false);
+ {
+ IsStringBasedType t (string_based);
+ t.dispatch (e);
+ }
+
+ bool enum_based (false);
+ SemanticGraph::Enumeration* base_enum (0);
+
+ if (string_based)
+ {
+ IsEnumBasedType t (base_enum);
+ t.dispatch (e);
+
+ if (base_enum != 0)
+ enum_based = true;
+ }
+
+ String value;
+ if (string_based)
+ value = evalue (e);
+
+ // Get to the ultimate base and see if is a fundamental type.
+ //
+ bool fund_based (false);
+ SemanticGraph::Type& ult_base (ultimate_base (e));
+ {
+ IsFundamentalType t (fund_based);
+ t.dispatch (ult_base);
+ }
+
+ // Count enumerators.
+ //
+ size_t enum_count (0);
+
+ for (Type::NamesIterator i (e.names_begin ()), end (e.names_end ());
+ i != end; ++i)
+ ++enum_count;
+
+ //
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Enumeration class corresponding to the %" <<
+ comment (e.name ()) << endl
+ << " * schema type." << endl;
+
+ if (e.annotated_p ())
+ {
+ os << " *" << endl;
+ write_annotation (e.annotation ());
+ }
+
+ os << " */" << endl;
+ }
+
+ os << "class " << type_exp << name << ": public ";
+
+ // Enumeration always has a base.
+ //
+ inherits (e, inherits_base_);
+
+ os << "{"
+ << "public:" << endl;
+
+ if (string_based)
+ {
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief Underlying enum type." << endl
+ << " */" << endl;
+ }
+
+ if (enum_based)
+ {
+ os << "typedef ";
+
+ inherits (e, inherits_base_);
+
+ os << "::" << evalue (*base_enum) << " " << value << ";"
+ << endl;
+ }
+ else
+ {
+ os << "enum " << value
+ << "{";
+
+ names<Enumeration> (e, names_, 0, 0, 0, &Enumeration::comma);
+
+ os << "};";
+ }
+ }
+
+ // default c-tor
+ //
+ bool list_based (
+ ult_base.is_a<SemanticGraph::List> () ||
+ ult_base.is_a<SemanticGraph::Fundamental::NameTokens> () ||
+ ult_base.is_a<SemanticGraph::Fundamental::IdRefs> () ||
+ ult_base.is_a<SemanticGraph::Fundamental::Entities> ());
+
+ if (options.generate_default_ctor () || list_based)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Default constructor." << endl
+ << " *" << endl
+ << " * Note that this constructor may leave the " <<
+ "instance in an" << endl
+ << " * invalid state." << endl
+ << " */" << endl;
+ }
+
+ os << name << " ();"
+ << endl;
+ }
+
+ // c-tor (value)
+ //
+ if (string_based)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from the " <<
+ "underlying enum value." << endl
+ << " *" << endl
+ << " * @param v A enum value." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (" << value << " v);"
+ << endl;
+ }
+
+ // c-tor (const char*)
+ //
+ if (string_based)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a C string." << endl
+ << " *" << endl
+ << " * @param v A string value." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << char_type << "* v);"
+ << endl;
+ }
+
+ // c-tor (const std::string&)
+ //
+ if (string_based)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a string." << endl
+ << " *" << endl
+ << " * @param v A string value." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << string_type << "& v);"
+ << endl;
+ }
+
+ // c-tor (fundamental)
+ //
+ if (fund_based)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a fundamental " <<
+ "type value." << endl
+ << " *" << endl
+ << " * @param v A fundamental type value." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (";
+
+ member_.dispatch (ult_base);
+
+ os << " v);"
+ << endl;
+ }
+
+ // c-tor (base)
+ //
+ // If the ultimate is also our immediate base and it is a
+ // fundamental type then this c-tor clashes with c-tor
+ // (fundamental) above.
+ //
+ if (!fund_based || &ult_base != &e.inherits ().base ())
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from the " <<
+ "base value." << endl
+ << " *" << endl
+ << " * @param v A base value." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const ";
+
+ inherits (e, inherits_member_);
+
+ os << "& v);"
+ << endl;
+ }
+
+
+ // c-tor (istream&)
+ //
+ NarrowStrings const& st (options.generate_extraction ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a data " <<
+ "representation" << endl
+ << " * stream." << endl
+ << " *" << endl
+ << " * @param s A stream to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (" << istream_type << "< " << i->c_str () <<
+ " >& s," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+ }
+
+ if (!options.suppress_parsing ())
+ {
+ // c-tor (xercesc::DOMElement)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a DOM element." << endl
+ << " *" << endl
+ << " * @param e A DOM element to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << xerces_ns << "::DOMElement& e," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ // c-tor (xercesc::DOMAttr)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a DOM attribute." << endl
+ << " *" << endl
+ << " * @param a A DOM attribute to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ // c-tor (std::basic_string const&, xercesc::DOMElement)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a string fragment." << endl
+ << " *" << endl
+ << " * @param s A string fragment to extract the data from." << endl
+ << " * @param e A pointer to DOM element containing the " <<
+ "string fragment." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << string_type << "& s," << endl
+ << "const " << xerces_ns << "::DOMElement* e," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+ }
+
+ // copy c-tor
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy constructor." << endl
+ << " *" << endl
+ << " * @param x An instance to make a copy of." << endl
+ << " * @param f Flags to create the copy with." << endl
+ << " * @param c A pointer to the object that will contain " <<
+ "the copy." << endl
+ << " *" << endl
+ << " * For polymorphic object models use the @c _clone " <<
+ "function instead." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << name << "& x," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ os << "#ifdef XSD_CXX11" << endl
+ << name << "&" << endl
+ << "operator= (const " << name << "&) = default;"
+ << "#endif" << endl
+ << endl;
+
+ // clone
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy the instance polymorphically." << endl
+ << " *" << endl
+ << " * @param f Flags to create the copy with." << endl
+ << " * @param c A pointer to the object that will contain " <<
+ "the copy." << endl
+ << " * @return A pointer to the dynamically allocated copy." << endl
+ << " *" << endl
+ << " * This function ensures that the dynamic type of the " <<
+ "instance is" << endl
+ << " * used for copying and should be used for polymorphic " <<
+ "object" << endl
+ << " * models instead of the copy constructor." << endl
+ << " */" << endl;
+ }
+
+ os << "virtual " << name << "*" << endl
+ << "_clone (" << flags_type << " f = 0," << endl
+ << container << "* c = 0) const;"
+ << endl;
+
+ // operator= (value)
+ //
+ if (string_based)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Assign the underlying enum value." << endl
+ << " *" << endl
+ << " * @param v A enum value." << endl
+ << " * @return A refernce to the instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << "&" << endl
+ << "operator= (" << value << " v);"
+ << endl;
+ }
+
+ // operator value ()
+ //
+ // Name lookup differences in various compilers make generation
+ // of this operator outside of the class a really hard task. So
+ // we are going to make it "always inline".
+ //
+ if (string_based)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Implicit conversion operator to the " <<
+ "underlying" << endl
+ << " * enum value." << endl
+ << " *" << endl
+ << " * @return A enum value." << endl
+ << " */" << endl;
+ }
+
+ os << "virtual" << endl
+ << "operator " << value << " () const"
+ << "{"
+ << "return _xsd_" << name << "_convert ();"
+ << "}";
+ }
+
+ //
+ //
+ if (string_based)
+ {
+ if (doxygen)
+ os << "//@cond" << endl
+ << endl;
+
+ os << "protected:" << endl
+ << value << endl
+ << "_xsd_" << name << "_convert () const;"
+ << endl;
+
+ os << "public:" << endl;
+
+ if (enum_based)
+ {
+ // We are going to reuse our base's literals.
+ //
+ os << "static const " << char_type << "* const* " <<
+ "_xsd_" << name << "_literals_;";
+ }
+ else
+ {
+ os << "static const " << char_type << "* const " <<
+ "_xsd_" << name << "_literals_[" << enum_count << "];";
+ }
+
+ os << "static const " << value <<
+ " _xsd_" << name << "_indexes_[" << enum_count << "];";
+
+ if (doxygen)
+ os << endl
+ << "//@endcond" << endl
+ << endl;
+ }
+
+ os << "};";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ os << "," << endl;
+ }
+
+ private:
+ Traversal::Inherits inherits_base_;
+ BaseTypeName base_;
+
+ Traversal::Inherits inherits_member_;
+ MemberTypeName member_;
+
+ Traversal::Names names_;
+ Enumerator enumerator_;
+ };
+
+
+ //
+ //
+ struct MemberFunction: Traversal::Member, Context
+ {
+ MemberFunction (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ String const& aname (eaname (m));
+ String const& mname (emname (m));
+ String kind (m.is_a<SemanticGraph::Element> ()
+ ? "element" : "attribute");
+
+ bool fund (false);
+ {
+ IsFundamentalType t (fund);
+ t.dispatch (m.type ());
+ }
+
+ bool def_attr (m.default_p () &&
+ m.is_a<SemanticGraph::Attribute> ());
+
+ if (max (m) != 1)
+ {
+ // sequence
+ //
+ String container (econtainer (m));
+
+ // container const&
+ // name () const;
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the element" << endl
+ << " * sequence." << endl
+ << " *" << endl
+ << " * @return A constant reference to the sequence " <<
+ "container." << endl
+ << " */" << endl;
+ }
+
+ os << "const " << container << "&" << endl
+ << aname << " () const;"
+ << endl;
+
+ // container&
+ // name ();
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the " <<
+ "element sequence." << endl
+ << " *" << endl
+ << " * @return A reference to the sequence container." << endl
+ << " */" << endl;
+ }
+
+ os << container << "&" << endl
+ << aname << " ();"
+ << endl;
+
+ // void
+ // name (container const&);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy elements from a given sequence." << endl
+ << " *" << endl
+ << " * @param s A sequence to copy elements from." << endl
+ << " *" << endl
+ << " * For each element in @a s this function " <<
+ "makes a copy and adds it " << endl
+ << " * to the sequence. Note that this operation " <<
+ "completely changes the " << endl
+ << " * sequence and all old elements will be lost." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (const " << container << "& s);"
+ << endl;
+ }
+ else if (min (m) == 0 && !def_attr)
+ {
+ // optional
+ //
+ String const& type (etype (m));
+ String container (econtainer (m));
+
+ // container const&
+ // name () const;
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the " << kind << endl
+ << " * container." << endl
+ << " *" << endl
+ << " * @return A constant reference to the optional " <<
+ "container." << endl
+ << " */" << endl;
+ }
+
+ os << "const " << container << "&" << endl
+ << aname << " () const;"
+ << endl;
+
+ // container&
+ // name ();
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the " <<
+ kind << " container." << endl
+ << " *" << endl
+ << " * @return A reference to the optional container." << endl
+ << " */" << endl;
+ }
+
+ os << container << "&" << endl
+ << aname << " ();"
+ << endl;
+
+ // void
+ // name (type const&);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the " << kind << " value." << endl
+ << " *" << endl
+ << " * @param x A new value to set." << endl
+ << " *" << endl
+ << " * This function makes a copy of its argument " <<
+ "and sets it as" << endl
+ << " * the new value of the " << kind << "." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (const " << type << "& x);"
+ << endl;
+
+ // void
+ // name (container const&);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the " << kind << " value." << endl
+ << " *" << endl
+ << " * @param x An optional container with the new value " <<
+ "to set." << endl
+ << " *" << endl
+ << " * If the value is present in @a x then this function " <<
+ "makes a copy " << endl
+ << " * of this value and sets it as the new value of the " <<
+ kind << "." << endl
+ << " * Otherwise the " << kind << " container is set " <<
+ "the 'not present' state." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (const " << container << "& x);"
+ << endl;
+
+ // void
+ // name (auto_ptr<type>);
+ //
+ if (!fund)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the " << kind << " value without " <<
+ "copying." << endl
+ << " *" << endl
+ << " * @param p A new value to use." << endl
+ << " *" << endl
+ << " * This function will try to use the passed value " <<
+ "directly instead" << endl
+ << " * of making a copy." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (" << auto_ptr << "< " << type << " > p);"
+ << endl;
+ }
+ }
+ else
+ {
+ // one
+ //
+ String const& type (etype (m));
+
+ // type const&
+ // name () const;
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the " << kind << "." << endl
+ << " *" << endl
+ << " * @return A constant reference to the " << kind <<
+ "." << endl
+ << " */" << endl;
+ }
+
+ os << "const " << type << "&" << endl
+ << aname << " () const;"
+ << endl;
+
+ // Do not generate modifiers for fixed attributes.
+ //
+ if (!(def_attr && m.fixed_p ()))
+ {
+ // type&
+ // name ();
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the " <<
+ kind << "." << endl
+ << " *" << endl
+ << " * @return A reference to the " << kind << "." << endl
+ << " */" << endl;
+ }
+
+ os << type << "&" << endl
+ << aname << " ();"
+ << endl;
+
+ // void
+ // name (type const&);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the " << kind << " value." << endl
+ << " *" << endl
+ << " * @param x A new value to set." << endl
+ << " *" << endl
+ << " * This function makes a copy of its argument " <<
+ "and sets it as" << endl
+ << " * the new value of the " << kind << "." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (const " << type << "& x);"
+ << endl;
+
+ // void
+ // name (auto_ptr<type>);
+ //
+ if (!fund)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the " << kind << " value without " <<
+ "copying." << endl
+ << " *" << endl
+ << " * @param p A new value to use." << endl
+ << " *" << endl
+ << " * This function will try to use the passed value " <<
+ "directly" << endl
+ << " * instead of making a copy." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (" << auto_ptr << "< " << type << " > p);"
+ << endl;
+
+ }
+
+ // auto_ptr<type>
+ // detach_name ();
+ //
+ if (detach && !fund)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Detach the " << kind << " value from " <<
+ "the object model." << endl
+ << " *" << endl
+ << " * @return A pointer to the " << kind << " value." << endl
+ << " *" << endl
+ << " * Note that this function leaves the required " <<
+ kind << " in " << endl
+ << " * the original object model uninitialized." << endl
+ << " */" << endl;
+ }
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << edname (m) << " ();"
+ << endl;
+ }
+ }
+ }
+
+ // default_value
+ //
+ if (m.default_p ())
+ {
+ bool simple (true);
+
+ if (m.is_a<SemanticGraph::Element> ())
+ {
+ IsSimpleType test (simple);
+ test.dispatch (m.type ());
+ }
+
+ if (simple)
+ {
+ bool lit (false);
+ {
+ IsLiteralValue test (lit);
+ test.dispatch (m.type ());
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return the default value for the " <<
+ kind << "." << endl
+ << " *" << endl;
+
+ if (lit)
+ os << " * @return The " << kind << "'s default value." << endl;
+ else
+ os << " * @return A read-only (constant) reference to the "
+ << kind << "'s" << endl
+ << " * default value." << endl;
+
+ os << " */" << endl;
+ }
+
+ if (lit)
+ os << "static " << etype (m) << endl;
+ else
+ os << "static const " << etype (m) << "&" << endl;
+
+ os << edefault_value (m) << " ();"
+ << endl;
+ }
+ }
+ }
+ };
+
+ struct AnyFunction: Traversal::Any, Context
+ {
+ AnyFunction (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& aname (eaname (a));
+ String const& mname (emname (a));
+
+ SemanticGraph::Complex& c (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ()));
+
+ if (max (a) != 1)
+ {
+ // sequence
+ //
+ String container (econtainer (a));
+
+ // container const&
+ // name () const;
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the wildcard" << endl
+ << " * element sequence." << endl
+ << " *" << endl
+ << " * @return A constant reference to the sequence " <<
+ "container." << endl
+ << " */" << endl;
+ }
+
+ os << "const " << container << "&" << endl
+ << aname << " () const;"
+ << endl;
+
+ // container&
+ // name ();
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the " <<
+ "wildcard element" << endl
+ << " * sequence." << endl
+ << " *" << endl
+ << " * @return A reference to the sequence container." << endl
+ << " */" << endl;
+ }
+
+ os << container << "&" << endl
+ << aname << " ();"
+ << endl;
+
+ // void
+ // name (container const&);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy elements from a given sequence." << endl
+ << " *" << endl
+ << " * @param s A sequence to copy elements from." << endl
+ << " *" << endl
+ << " * For each element in @a s this function " <<
+ "makes a copy and adds" << endl
+ << " * it to the wildcard element sequence. Note that " <<
+ "this operation" << endl
+ << " * completely changes the sequence and all old " <<
+ "elements will be" << endl
+ << " * lost." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (const " << container << "& s);"
+ << endl;
+ }
+ else if (min (a) == 0)
+ {
+ // optional
+ //
+ String container (econtainer (a));
+
+ // container const&
+ // name () const;
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the wildcard" << endl
+ << " * element container." << endl
+ << " *" << endl
+ << " * @return A constant reference to the optional " <<
+ "container." << endl
+ << " */" << endl;
+ }
+
+ os << "const " << container << "&" << endl
+ << aname << " () const;"
+ << endl;
+
+ // container&
+ // name ();
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the " <<
+ "wildcard element" << endl
+ << " * container." << endl
+ << " *" << endl
+ << " * @return A reference to the optional container." << endl
+ << " */" << endl;
+ }
+
+ os << container << "&" << endl
+ << aname << " ();"
+ << endl;
+
+ // void
+ // name (type const&);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the wildcard content." << endl
+ << " *" << endl
+ << " * @param e A new element to set." << endl
+ << " *" << endl
+ << " * This function makes a copy of its argument " <<
+ "and sets it as" << endl
+ << " * the new wildcard content." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (const " << xerces_ns << "::DOMElement& e);"
+ << endl;
+
+ // void
+ // name (type*);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the wildcard content without copying." << endl
+ << " *" << endl
+ << " * @param p A new element to use." << endl
+ << " *" << endl
+ << " * This function will use the passed element " <<
+ "directly instead" << endl
+ << " * of making a copy. For this to work the element " <<
+ "should belong" << endl
+ << " * to the DOM document associated with this instance." << endl
+ << " *" << endl
+ << " * @see " << edom_document (c) << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (" << xerces_ns << "::DOMElement* p);"
+ << endl;
+
+ // void
+ // name (container const&);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the wildcard content." << endl
+ << " *" << endl
+ << " * @param x An optional container with the new " <<
+ "element to set." << endl
+ << " *" << endl
+ << " * If the element is present in @a x then this function " <<
+ "makes a " << endl
+ << " * copy of this element and sets it as the new wildcard " <<
+ "content." << endl
+ << " * Otherwise the element container is set the 'not " <<
+ "present' state." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (const " << container << "& x);"
+ << endl;
+ }
+ else
+ {
+ // one
+ //
+
+ // type const&
+ // name () const;
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the wildcard" << endl
+ << " * element." << endl
+ << " *" << endl
+ << " * @return A constant reference to the DOM element." << endl
+ << " */" << endl;
+ }
+
+ os << "const " << xerces_ns << "::DOMElement&" << endl
+ << aname << " () const;"
+ << endl;
+
+ // type&
+ // name ();
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the " <<
+ "wildcard element." << endl
+ << " *" << endl
+ << " * @return A reference to the DOM element." << endl
+ << " */" << endl;
+ }
+
+ os << xerces_ns << "::DOMElement&" << endl
+ << aname << " ();"
+ << endl;
+
+ // void
+ // name (type const&);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the wildcard content." << endl
+ << " *" << endl
+ << " * @param e A new element to set." << endl
+ << " *" << endl
+ << " * This function makes a copy of its argument " <<
+ "and sets it as" << endl
+ << " * the new wildcard content." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (const " << xerces_ns << "::DOMElement& e);"
+ << endl;
+
+ // void
+ // name (const*);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the wildcard content without copying." << endl
+ << " *" << endl
+ << " * @param p A new element to use." << endl
+ << " *" << endl
+ << " * This function will use the passed element " <<
+ "directly instead" << endl
+ << " * of making a copy. For this to work the element " <<
+ "should belong" << endl
+ << " * to the DOM document associated with this instance." << endl
+ << " *" << endl
+ << " * @see " << edom_document (c) << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (" << xerces_ns << "::DOMElement* p);"
+ << endl;
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& aname (eaname (a));
+ String const& mname (emname (a));
+
+ String container (econtainer (a));
+
+ // container const&
+ // name () const;
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the" << endl
+ << " * attribute set." << endl
+ << " *" << endl
+ << " * @return A constant reference to the set " <<
+ "container." << endl
+ << " */" << endl;
+ }
+
+ os << "const " << container << "&" << endl
+ << aname << " () const;"
+ << endl;
+
+ // container&
+ // name ();
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the " <<
+ "attribute set." << endl
+ << " *" << endl
+ << " * @return A reference to the set container." << endl
+ << " */" << endl;
+ }
+
+ os << container << "&" << endl
+ << aname << " ();"
+ << endl;
+
+ // void
+ // name (container const&);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy attributes from a given set." << endl
+ << " *" << endl
+ << " * @param s A set to copy elements from." << endl
+ << " *" << endl
+ << " * For each attribute in @a s this function " <<
+ "makes a copy and adds" << endl
+ << " * it to the set. Note that this operation " <<
+ "completely changes the " << endl
+ << " * set and all old attributes will be lost." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (const " << container << "& s);"
+ << endl;
+ }
+ };
+
+ //
+ //
+ struct Member: Traversal::Member, Context
+ {
+ Member (Context& c)
+ : Context (c),
+ type_name_ (c),
+ member_function_ (c)
+ {
+ belongs_ >> type_name_;
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ SemanticGraph::Complex& c (
+ dynamic_cast<SemanticGraph::Complex&> (m.scope ()));
+
+ String const& type (etype (m));
+ bool el (m.is_a<SemanticGraph::Element> ());
+
+ bool def_attr (m.default_p () && !el);
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @name " << comment (m.name ()) << endl
+ << " *" << endl
+ << " * @brief Accessor and modifier functions for the %" <<
+ comment (m.name ()) << endl
+ << " * ";
+
+ if (max (m) != 1)
+ {
+ os << "sequence element." << endl;
+ }
+ else if (min (m) == 0)
+ {
+ if (def_attr)
+ os << "optional attribute with a default value." << endl;
+ else
+ os << "optional " << (el ? "element." : "attribute.") << endl;
+ }
+ else
+ {
+ os << "required " << (el ? "element." : "attribute.") << endl;
+ }
+
+ if (m.annotated_p ())
+ {
+ os << " *" << endl;
+ write_annotation (m.annotation ());
+ }
+
+ os << " */" << endl
+ << "//@{" << endl;
+ }
+ else
+ {
+ os << "// " << comment (m.name ()) << endl
+ << "//" << endl;
+ }
+
+ // Typedefs.
+ //
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief " << (el ? "Element" : "Attribute") <<
+ " type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef ";
+
+ belongs (m, belongs_);
+
+ os << " " << type << ";";
+
+ if (max (m) != 1)
+ {
+ String const& container (econtainer (m));
+ bool isense (options.generate_intellisense ());
+
+ // sequence
+ //
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief Element sequence container type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef ::xsd::cxx::tree::sequence< " << type << " > " <<
+ container << ";";
+
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief Element iterator type." << endl
+ << " */" << endl;
+ }
+
+ // IntelliSense does not like aliases and fully-qualified
+ // names here.
+ //
+ if (!isense)
+ os << "typedef " << container << "::iterator " <<
+ eiterator (m) << ";";
+ else
+ os << "typedef xsd::cxx::tree::sequence< " << type <<
+ " >::iterator " << eiterator (m) << ";";
+
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief Element constant iterator type." << endl
+ << " */" << endl;
+ }
+
+ if (!isense)
+ os << "typedef " << container << "::const_iterator " <<
+ econst_iterator (m) << ";";
+ else
+ os << "typedef xsd::cxx::tree::sequence< " << type <<
+ " >::const_iterator " << econst_iterator (m) << ";";
+
+ }
+ else if (min (m) == 0 && !def_attr)
+ {
+ // optional
+ //
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief " << (el ? "Element" : "Attribute") <<
+ " optional container type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef ::xsd::cxx::tree::optional< " << type << " > " <<
+ econtainer (m) << ";";
+ }
+ else
+ {
+ // one
+ //
+ }
+
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief " << (el ? "Element" : "Attribute") <<
+ " traits type." << endl
+ << " */" << endl;
+ }
+ os << "typedef ::xsd::cxx::tree::traits< " << type << ", " <<
+ char_type;
+
+ SemanticGraph::Type& t (m.type ());
+
+ if (t.is_a<SemanticGraph::Fundamental::Double> ())
+ os << ", ::xsd::cxx::tree::schema_type::double_";
+ else if (t.is_a<SemanticGraph::Fundamental::Decimal> ())
+ os << ", ::xsd::cxx::tree::schema_type::decimal";
+
+ os << " > " << etraits (m) << ";"
+ << endl;
+
+
+ // Element id.
+ //
+ if (el && ordered_p (c))
+ {
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Element id used for capturing content " <<
+ "order." << endl
+ << " */" << endl;
+
+ SemanticGraph::Context& ctx (m.context ());
+
+ os << "static const ::std::size_t " <<
+ ctx.get<String> ("ordered-id-name") << " = " <<
+ ctx.get<size_t> ("ordered-id") << "UL;" << endl;
+ }
+
+ member_function_.traverse (m);
+
+ if (doxygen)
+ {
+ os << "//@}" << endl
+ << endl;
+ }
+ }
+
+ private:
+ MemberTypeName type_name_;
+ Traversal::Belongs belongs_;
+
+ MemberFunction member_function_;
+ };
+
+
+ struct Any: Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ Any (Context& c)
+ : Context (c), any_function_ (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ SemanticGraph::Complex& c (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ()));
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @name " << ename (a) << endl
+ << " *" << endl
+ << " * @brief Accessor and modifier functions for the " <<
+ "any wildcard." << endl;
+
+ if (a.annotated_p ())
+ {
+ os << " *" << endl;
+ write_annotation (a.annotation ());
+ }
+
+ os << " */" << endl
+ << "//@{" << endl;
+ }
+ else
+ {
+ os << "// " << ename (a) << endl
+ << "//" << endl;
+ }
+
+ // Typedefs.
+ //
+ if (max (a) != 1)
+ {
+ String const& container (econtainer (a));
+
+ // sequence
+ //
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief DOM element sequence container type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef ::xsd::cxx::tree::element_sequence " <<
+ container << ";";
+
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief DOM element iterator type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef " << container << "::iterator " <<
+ eiterator (a) << ";";
+
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief DOM element constant iterator type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef " << container << "::const_iterator " <<
+ econst_iterator (a) << ";"
+ << endl;
+
+ }
+ else if (min (a) == 0)
+ {
+ // optional
+ //
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief DOM element optional container type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef ::xsd::cxx::tree::element_optional " <<
+ econtainer (a) << ";"
+ << endl;
+ }
+ else
+ {
+ // one
+ //
+ if (doxygen)
+ os << endl;
+ }
+
+ // Wildcard id.
+ //
+ if (ordered_p (c))
+ {
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Wildcard id used for capturing content " <<
+ "order." << endl
+ << " */" << endl;
+
+ SemanticGraph::Context& ctx (a.context ());
+
+ os << "static const ::std::size_t " <<
+ ctx.get<String> ("ordered-id-name") << " = " <<
+ ctx.get<size_t> ("ordered-id") << "UL;" << endl;
+ }
+
+ any_function_.traverse (a);
+
+ if (doxygen)
+ {
+ os << "//@}" << endl
+ << endl;
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& container (econtainer (a));
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @name " << ename (a) << endl
+ << " *" << endl
+ << " * @brief Accessor and modifier functions for the " <<
+ "anyAttribute" << endl
+ << " * wildcard." << endl;
+
+ if (a.annotated_p ())
+ {
+ os << " *" << endl;
+ write_annotation (a.annotation ());
+ }
+
+ os << " */" << endl
+ << "//@{" << endl;
+ }
+ else
+ {
+ os << "// " << ename (a) << endl
+ << "//" << endl;
+ }
+
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief DOM attribute set container type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef ::xsd::cxx::tree::attribute_set< " << char_type <<
+ " > " << container << ";";
+
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief DOM attribute iterator type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef " << container << "::iterator " <<
+ eiterator (a) << ";";
+
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief DOM attribute constant iterator type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef " << container << "::const_iterator " <<
+ econst_iterator (a) << ";"
+ << endl;
+
+ any_function_.traverse (a);
+
+ if (doxygen)
+ {
+ os << "//@}" << endl
+ << endl;
+ }
+ }
+
+ private:
+ AnyFunction any_function_;
+ };
+
+ struct DataMember: Traversal::Member, Context
+ {
+ DataMember (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m)) return;
+
+ String const& member (emember (m));
+
+ bool def_attr (m.default_p () &&
+ m.is_a<SemanticGraph::Attribute> ());
+
+ if (max (m) != 1)
+ {
+ // sequence
+ //
+ os << econtainer (m) << " " << member << ";";
+ }
+ else if (min (m) == 0 && !def_attr)
+ {
+ // optional
+ //
+ os << econtainer (m) << " " << member << ";";
+ }
+ else
+ {
+ // one
+ //
+ os << "::xsd::cxx::tree::one< " << etype (m) << " > " <<
+ member << ";";
+ }
+
+ // default_value
+ //
+ if (m.default_p ())
+ {
+ bool simple (true);
+
+ if (m.is_a<SemanticGraph::Element> ())
+ {
+ IsSimpleType test (simple);
+ test.dispatch (m.type ());
+ }
+
+ if (simple)
+ {
+ bool lit (false);
+ {
+ IsLiteralValue test (lit);
+ test.dispatch (m.type ());
+ }
+
+ if (!lit)
+ {
+ os << "static const " << etype (m) << " " <<
+ edefault_value_member (m) << ";";
+ }
+ }
+ }
+ }
+ };
+
+ struct DataAny: Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ DataAny (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& member (emember (a));
+
+ if (max (a) != 1)
+ {
+ // sequence
+ //
+ os << econtainer (a) << " " << member << ";";
+ }
+ else if (min (a) == 0)
+ {
+ // optional
+ //
+ os << econtainer (a) << " " << member << ";";
+ }
+ else
+ {
+ // one
+ //
+ os << "::xsd::cxx::tree::element_one " << member << ";";
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ os << econtainer (a) << " " << emember (a) << ";";
+ }
+ };
+
+
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c),
+ base_name_ (c),
+ member_name_ (c),
+ any_ (c),
+ member_ (c),
+ data_any_ (c),
+ data_member_ (c)
+ {
+ inherits_base_ >> base_name_;
+ inherits_member_ >> member_name_;
+
+ names_ >> member_;
+ if (options.generate_wildcard ())
+ names_ >> any_;
+
+ names_data_ >> data_member_;
+ if (options.generate_wildcard ())
+ names_data_ >> data_any_;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ String name (ename (c));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ bool renamed (renamed_type (c, name));
+ if (renamed && !name)
+ return;
+
+ SemanticGraph::Context& ctx (c.context ());
+
+ bool has_members (has<Traversal::Member> (c));
+
+ bool hae (has<Traversal::Any> (c));
+ bool haa (has<Traversal::AnyAttribute> (c));
+
+ bool gen_wildcard (options.generate_wildcard ());
+
+ bool mixed (mixed_p (c) && !ctx.count ("mixed-in-base"));
+ bool ordered (ordered_p (c) && !ctx.count ("order-in-base"));
+
+ bool simple (true);
+ {
+ IsSimpleType t (simple);
+ t.dispatch (c);
+ }
+
+ bool string_based (false);
+ {
+ IsStringBasedType t (string_based);
+ t.dispatch (c);
+ }
+
+ SemanticGraph::Enumeration* enum_base (0);
+ {
+ IsEnumBasedType t (enum_base);
+ t.dispatch (c);
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Class corresponding to the %" <<
+ comment (c.name ()) << " schema type." << endl;
+
+ if (c.annotated_p ())
+ {
+ os << " *" << endl;
+ write_annotation (c.annotation ());
+ }
+
+ os << " *" << endl
+ << " * @nosubgrouping" << endl
+ << " */" << endl;
+ }
+
+ os << "class " << type_exp << name << ": public ";
+
+ if (c.inherits_p ())
+ inherits (c, inherits_base_);
+ else
+ os << any_type;
+
+ os << "{"
+ << "public:" << endl;
+
+ // Members.
+ //
+ names (c, names_);
+
+ // Mixed content.
+ //
+ if (mixed)
+ {
+ String const& type (ctx.get<String> ("mixed-type"));
+ String const& cont (ctx.get<String> ("mixed-container"));
+ String const& iter (ctx.get<String> ("mixed-iterator"));
+ String const& citer (ctx.get<String> ("mixed-const-iterator"));
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @name " << comment ("text_content") << endl
+ << " *" << endl
+ << " * @brief Accessor and modifier functions for text " <<
+ "content." << endl
+ << " */" << endl
+ << "//@{" << endl;
+ else
+ os << "// text_content" << endl
+ << "//" << endl;
+
+ // Typedefs.
+ //
+ bool isense (options.generate_intellisense ());
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Text content type." << endl
+ << " */" << endl;
+
+ os << "typedef " << xs_string_type << " " << type << ";";
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Text content sequence container type." << endl
+ << " */" << endl;
+
+ os << "typedef ::xsd::cxx::tree::sequence< " << type <<
+ " > " << cont << ";";
+
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Text content iterator type." << endl
+ << " */" << endl;
+
+ // IntelliSense does not like aliases and fully-qualified
+ // names here.
+ //
+ if (!isense)
+ os << "typedef " << cont << "::iterator " << iter<< ";";
+ else
+ os << "typedef ::xsd::cxx::tree::sequence< " << type <<
+ " >::iterator " << iter << ";";
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Text content constant iterator type." << endl
+ << " */" << endl;
+
+ if (!isense)
+ os << "typedef " << cont << "::const_iterator " << citer<< ";";
+ else
+ os << "typedef ::xsd::cxx::tree::sequence< " << type <<
+ " >::const_iterator " << citer << ";";
+
+ os << endl;
+
+ // Content id.
+ //
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Text content id used for capturing content " <<
+ "order." << endl
+ << " */" << endl;
+
+ os << "static const ::std::size_t " <<
+ ctx.get<String> ("mixed-ordered-id-name") << " = " <<
+ ctx.get<size_t> ("mixed-ordered-id") << "UL;" << endl;
+
+ // Accessors and modifiers.
+ //
+ String const& aname (ctx.get<String> ("mixed-aname"));
+ String const& mname (ctx.get<String> ("mixed-mname"));
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the text" << endl
+ << " * content sequence." << endl
+ << " *" << endl
+ << " * @return A constant reference to the sequence " <<
+ "container." << endl
+ << " */" << endl;
+
+ os << "const " << cont << "&" << endl
+ << aname << " () const;"
+ << endl;
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the " <<
+ "text content" << endl
+ << " * sequence." << endl
+ << " *" << endl
+ << " * @return A reference to the sequence container." << endl
+ << " */" << endl;
+
+ os << cont << "&" << endl
+ << aname << " ();"
+ << endl;
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Copy elements from a given sequence." << endl
+ << " *" << endl
+ << " * @param s A sequence to copy entries from." << endl
+ << " *" << endl
+ << " * For each element in @a s this function " <<
+ "add it to the sequence." << endl
+ << " * Note that this operation " <<
+ "completely changes the sequence and" << endl
+ << " * all old elements will be lost." << endl
+ << " */" << endl;
+
+ os << "void" << endl
+ << mname << " (const " << cont << "& s);"
+ << endl;
+
+ if (doxygen)
+ os << "//@}" << endl
+ << endl;
+ }
+
+ // dom_document accessors.
+ //
+ if (edom_document_member_p (c))
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the DOM" << endl
+ << " * document associated with this instance." << endl
+ << " *" << endl
+ << " * @return A constant reference to the DOM document." << endl
+ << " *" << endl
+ << " * The DOM document returned by this function is " <<
+ "used to store" << endl
+ << " * the raw XML content corresponding to wildcards." << endl
+ << " */" << endl;
+ }
+ else
+ os << "// DOMDocument for wildcard content." << endl
+ << "//" << endl;
+
+ os << "const " << xerces_ns << "::DOMDocument&" << endl
+ << edom_document (c) << " () const;"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the DOM " <<
+ "document" << endl
+ << " * associated with this instance." << endl
+ << " *" << endl
+ << " * @return A reference to the DOM document." << endl
+ << " *" << endl
+ << " * The DOM document returned by this function is " <<
+ "used to store" << endl
+ << " * the raw XML content corresponding to wildcards." << endl
+ << " */" << endl;
+ }
+ os << xerces_ns << "::DOMDocument&" << endl
+ << edom_document (c) << " ();"
+ << endl;
+ }
+
+ // Order container.
+ //
+ if (ordered)
+ {
+ String const& type (ctx.get<String> ("order-type"));
+ String const& cont (ctx.get<String> ("order-container"));
+ String const& iter (ctx.get<String> ("order-iterator"));
+ String const& citer (ctx.get<String> ("order-const-iterator"));
+
+ String const ct (options.order_container_specified ()
+ ? options.order_container ()
+ : "::std::vector");
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @name " << comment ("content_order") << endl
+ << " *" << endl
+ << " * @brief Accessor and modifier functions for content " <<
+ "order." << endl
+ << " */" << endl
+ << "//@{" << endl;
+ else
+ os << "// content_order" << endl
+ << "//" << endl;
+
+ // Typedefs.
+ //
+ bool isense (options.generate_intellisense ());
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Content order entry type." << endl
+ << " */" << endl;
+
+ os << "typedef " << ns_name (xs_ns ()) << "::" <<
+ xs_ns ().context ().get<String> ("content-order") << " " <<
+ type << ";";
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Content order sequence container type." << endl
+ << " */" << endl;
+
+ os << "typedef " << ct << "< " << type << " > " << cont << ";";
+
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Content order iterator type." << endl
+ << " */" << endl;
+
+ // IntelliSense does not like aliases and fully-qualified
+ // names here.
+ //
+ if (!isense)
+ os << "typedef " << cont << "::iterator " << iter<< ";";
+ else
+ os << "typedef " << ct << "< " << type << " >::iterator " <<
+ iter << ";";
+
+ if (doxygen)
+ os << endl
+ << "/**" << endl
+ << " * @brief Content order constant iterator type." << endl
+ << " */" << endl;
+
+ if (!isense)
+ os << "typedef " << cont << "::const_iterator " << citer<< ";";
+ else
+ os << "typedef " << ct << "< " << type <<
+ " >::const_iterator " << citer << ";";
+
+ os << endl;
+
+ // Accessors and modifiers.
+ //
+ String const& aname (ctx.get<String> ("order-aname"));
+ String const& mname (ctx.get<String> ("order-mname"));
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the content" << endl
+ << " * order sequence." << endl
+ << " *" << endl
+ << " * @return A constant reference to the sequence " <<
+ "container." << endl
+ << " */" << endl;
+
+ os << "const " << cont << "&" << endl
+ << aname << " () const;"
+ << endl;
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the " <<
+ "content order" << endl
+ << " * sequence." << endl
+ << " *" << endl
+ << " * @return A reference to the sequence container." << endl
+ << " */" << endl;
+
+ os << cont << "&" << endl
+ << aname << " ();"
+ << endl;
+
+ if (doxygen)
+ os << "/**" << endl
+ << " * @brief Copy elements from a given sequence." << endl
+ << " *" << endl
+ << " * @param s A sequence to copy entries from." << endl
+ << " *" << endl
+ << " * For each element in @a s this function " <<
+ "add it to the sequence." << endl
+ << " * Note that this operation " <<
+ "completely changes the sequence and" << endl
+ << " * all old elements will be lost." << endl
+ << " */" << endl;
+
+ os << "void" << endl
+ << mname << " (const " << cont << "& s);"
+ << endl;
+
+ if (doxygen)
+ os << "//@}" << endl
+ << endl;
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @name Constructors" << endl
+ << " */" << endl
+ << "//@{" << endl
+ << endl;
+ }
+ else
+ {
+ os << "// Constructors." << endl
+ << "//" << endl;
+ }
+
+ bool generate_no_base_ctor (false);
+ {
+ GenerateWithoutBaseCtor t (generate_no_base_ctor);
+ t.traverse (c);
+ }
+
+ bool has_complex_non_op_args (false);
+ bool has_poly_non_op_args (false);
+ bool complex_poly_args_clash (true);
+ {
+ HasComplexPolyNonOptArgs t (*this, true,
+ has_complex_non_op_args,
+ has_poly_non_op_args,
+ complex_poly_args_clash);
+ t.traverse (c);
+ }
+
+ // default c-tor
+ //
+ if (options.generate_default_ctor ())
+ {
+ // c-tor (ultimate-base, all-non-optional-members) will become
+ // default c-tor if our inheritance hierarchy has no required
+ // members and no simple base. We can also collide with
+ // c-tor (all-non-optional-members) if we have no required
+ // members.
+ //
+ bool generate (false);
+ {
+ GenerateDefaultCtor t (*this, generate, generate_no_base_ctor);
+ t.traverse (c);
+ }
+
+ if (generate)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Default constructor." << endl
+ << " *" << endl
+ << " * Note that this constructor leaves required " <<
+ "elements and" << endl
+ << " * attributes uninitialized." << endl
+ << " */" << endl;
+ }
+
+ os << name << " ();"
+ << endl;
+ }
+ }
+
+ // c-tor (base, all-non-optional-members)
+ //
+ if (options.generate_from_base_ctor ())
+ {
+ // c-tor (base, all-non-optional-members) will be equivalent to
+ // c-tor (ultimate-base, all-non-optional-members) unless our
+ // immediate base's hierarchy has some non-optional members.
+ // We also need to generate this c-tor when one of the types
+ // in our inheritance hierarchy was customized since the
+ // customized version may not necessarily be convertible to
+ // the base without loss of information.
+ //
+ bool generate (false);
+ {
+ GenerateFromBaseCtor t (*this, generate);
+ t.traverse (c);
+ }
+
+ if (generate)
+ {
+ bool has_complex_non_op_args (false);
+ bool has_poly_non_op_args (false);
+ bool complex_poly_args_clash (true);
+ {
+ HasComplexPolyNonOptArgs t (*this, false,
+ has_complex_non_op_args,
+ has_poly_non_op_args,
+ complex_poly_args_clash);
+ t.traverse (c);
+ }
+
+ //
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from the immediate "
+ "base and" << endl
+ << " * initializers for required elements and "
+ << "attributes." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const ";
+ inherits (c, inherits_member_);
+ os << "&";
+ {
+ FromBaseCtorArg args (*this, CtorArgType::type, false);
+ Traversal::Names args_names (args);
+ names (c, args_names);
+ }
+ os << ");"
+ << endl;
+
+ // If we have any complex arguments in the previous c-tor
+ // then also generate the auto_ptr version.
+ //
+ if (has_complex_non_op_args)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from the immediate "
+ "base and" << endl
+ << " * initializers for required elements and "
+ << "attributes" << endl
+ << " * (" << auto_ptr << " version)." << endl
+ << " *" << endl
+ << " * This constructor will try to use the passed " <<
+ "values directly" << endl
+ << " * instead of making copies." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const ";
+ inherits (c, inherits_member_);
+ os << "&";
+ {
+ FromBaseCtorArg args (
+ *this, CtorArgType::complex_auto_ptr, false);
+ Traversal::Names args_names (args);
+ names (c, args_names);
+ }
+ os << ");"
+ << endl;
+ }
+
+ // If we are generating polymorphic code then we also need to
+ // provide auto_ptr version for every polymorphic type.
+ //
+ if (polymorphic &&
+ has_poly_non_op_args && !complex_poly_args_clash)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from the immediate "
+ "base and" << endl
+ << " * initializers for required elements and "
+ << "attributes" << endl
+ << " * (" << auto_ptr << " version)." << endl
+ << " *" << endl
+ << " * This constructor will try to use the passed " <<
+ "values directly" << endl
+ << " * instead of making copies." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const ";
+ inherits (c, inherits_member_);
+ os << "&";
+ {
+ FromBaseCtorArg args (
+ *this, CtorArgType::poly_auto_ptr, false);
+ Traversal::Names args_names (args);
+ names (c, args_names);
+ }
+ os << ");"
+ << endl;
+ }
+ }
+ }
+
+ // c-tor (all-non-optional-members)
+ //
+ if (generate_no_base_ctor)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from initializers " <<
+ "for required " << endl
+ << " * elements and attributes." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (";
+ {
+ CtorArgsWithoutBase ctor_args (
+ *this, CtorArgType::type, false, true);
+ ctor_args.dispatch (c);
+ }
+ os << ");"
+ << endl;
+
+
+ // If we have any complex arguments in the previous c-tor
+ // then also generate the auto_ptr version. One case where
+ // this c-tor will be generated is restriction of anyType.
+ //
+ if (has_complex_non_op_args)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from initializers " <<
+ "for required " << endl
+ << " * elements and attributes (" << auto_ptr <<
+ " version)." << endl
+ << " *" << endl
+ << " * This constructor will try to use the passed " <<
+ "values directly" << endl
+ << " * instead of making copies." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (";
+ {
+ CtorArgsWithoutBase ctor_args (
+ *this, CtorArgType::complex_auto_ptr, false, true);
+ ctor_args.dispatch (c);
+ }
+ os << ");"
+ << endl;
+ }
+
+ // If we are generating polymorphic code then we also need to
+ // provide auto_ptr version for every polymorphic type.
+ //
+ if (polymorphic &&
+ has_poly_non_op_args && !complex_poly_args_clash)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from initializers " <<
+ "for required " << endl
+ << " * elements and attributes (" << auto_ptr <<
+ " version)." << endl
+ << " *" << endl
+ << " * This constructor will try to use the passed " <<
+ "values directly" << endl
+ << " * instead of making copies." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (";
+ {
+ CtorArgsWithoutBase ctor_args (
+ *this, CtorArgType::poly_auto_ptr, false, true);
+ ctor_args.dispatch (c);
+ }
+ os << ");"
+ << endl;
+ }
+ }
+
+ if (string_based)
+ {
+ // We might not have the value type if this enum is customized.
+ //
+ if (enum_base != 0 && enum_base->context ().count ("value"))
+ {
+ // c-tor (enum-value, all-non-optional-members)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from the " <<
+ "underlying enum value" << endl
+ << " * and initializers for required elements and " <<
+ "attributes." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (" << fq_name (*enum_base) << "::" <<
+ evalue (*enum_base);
+
+ {
+ CtorArgsWithoutBase ctor_args (
+ *this, CtorArgType::type, false, false);
+ ctor_args.dispatch (c);
+ }
+
+ os << ");"
+ << endl;
+ }
+
+ // c-tor (const char*, all-non-optional-members)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a C string and " <<
+ "initializers" << endl
+ << " * for required elements and attributes." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << char_type << "*";
+
+ {
+ CtorArgsWithoutBase ctor_args (
+ *this, CtorArgType::type, false, false);
+ ctor_args.dispatch (c);
+ }
+
+ os << ");"
+ << endl;
+
+ // c-tor (const std::string&, all-non-optional-members)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a string and" <<
+ "initializers" << endl
+ << " * for required elements and attributes." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << string_type << "&";
+
+ {
+ CtorArgsWithoutBase ctor_args (
+ *this, CtorArgType::type, false, false);
+ ctor_args.dispatch (c);
+ }
+
+ os << ");"
+ << endl;
+ }
+
+ // c-tor (ultimate-base, all-non-optional-members)
+ //
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from the ultimate "
+ "base and" << endl
+ << " * initializers for required elements and " <<
+ "attributes." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (";
+
+ {
+ CtorArgs ctor_args (*this, CtorArgType::type);
+ ctor_args.dispatch (c);
+ }
+
+ os << ");"
+ << endl;
+
+ // If we have any complex arguments in the previous c-tor
+ // then also generate the auto_ptr version.
+ //
+ if (has_complex_non_op_args)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from the ultimate "
+ "base and" << endl
+ << " * initializers for required elements and " <<
+ "attributes" << endl
+ << " * (" << auto_ptr << " version)." << endl
+ << " *" << endl
+ << " * This constructor will try to use the passed " <<
+ "values directly" << endl
+ << " * instead of making copies." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (";
+
+ {
+ CtorArgs ctor_args (*this, CtorArgType::complex_auto_ptr);
+ ctor_args.dispatch (c);
+ }
+
+ os << ");"
+ << endl;
+ }
+
+ // If we are generating polymorphic code then we also need to
+ // provide auto_ptr version for every polymorphic type.
+ //
+ if (polymorphic && has_poly_non_op_args && !complex_poly_args_clash)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from the ultimate "
+ "base and" << endl
+ << " * initializers for required elements and " <<
+ "attributes" << endl
+ << " * (" << auto_ptr << " version)." << endl
+ << " *" << endl
+ << " * This constructor will try to use the passed " <<
+ "values directly" << endl
+ << " * instead of making copies." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (";
+
+ {
+ CtorArgs ctor_args (*this, CtorArgType::poly_auto_ptr);
+ ctor_args.dispatch (c);
+ }
+
+ os << ");"
+ << endl;
+ }
+
+ // c-tor (istream&)
+ //
+ NarrowStrings const& st (options.generate_extraction ());
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a data " <<
+ "representation" << endl
+ << " * stream." << endl
+ << " *" << endl
+ << " * @param s A stream to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (" << istream_type << "< " << i->c_str () <<
+ " >& s," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+ }
+
+
+ if (!options.suppress_parsing ())
+ {
+ // c-tor (xercesc::DOMElement)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a DOM element." << endl
+ << " *" << endl
+ << " * @param e A DOM element to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << xerces_ns << "::DOMElement& e," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+
+ if (simple)
+ {
+ // c-tor (xercesc::DOMAttr)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a DOM attribute." << endl
+ << " *" << endl
+ << " * @param a A DOM attribute to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ // c-tor (std::basic_string const&, xercesc::DOMElement)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a string fragment." << endl
+ << " *" << endl
+ << " * @param s A string fragment to extract the data from." << endl
+ << " * @param e A pointer to DOM element containing the " <<
+ "string fragment." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " * @param c A pointer to the object that will " <<
+ "contain the new" << endl
+ << " * instance." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << string_type << "& s," << endl
+ << "const " << xerces_ns << "::DOMElement* e," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+ }
+ }
+
+ // copy c-tor
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy constructor." << endl
+ << " *" << endl
+ << " * @param x An instance to make a copy of." << endl
+ << " * @param f Flags to create the copy with." << endl
+ << " * @param c A pointer to the object that will contain " <<
+ "the copy." << endl
+ << " *" << endl
+ << " * For polymorphic object models use the @c _clone " <<
+ "function instead." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << name << "& x," << endl
+ << flags_type << " f = 0," << endl
+ << container << "* c = 0);"
+ << endl;
+
+ // clone
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy the instance polymorphically." << endl
+ << " *" << endl
+ << " * @param f Flags to create the copy with." << endl
+ << " * @param c A pointer to the object that will contain " <<
+ "the copy." << endl
+ << " * @return A pointer to the dynamically allocated copy." << endl
+ << " *" << endl
+ << " * This function ensures that the dynamic type of the " <<
+ "instance is" << endl
+ << " * used for copying and should be used for polymorphic " <<
+ "object" << endl
+ << " * models instead of the copy constructor." << endl
+ << " */" << endl;
+ }
+
+ os << "virtual " << name << "*" << endl
+ << "_clone (" << flags_type << " f = 0," << endl
+ << container << "* c = 0) const";
+
+ // Make the _clone() function pure virtual if the type is
+ // abstract or we are generating a polymorphic base for a
+ // custom implementation (in which case the base must be
+ // inherited from and _clone() overridden).
+ //
+ if (c.abstract_p () ||
+ (renamed && polymorphic && polymorphic_p (c)))
+ os << " = 0";
+
+ os << ";"
+ << endl;
+
+ // operator=
+ //
+ bool priv (false);
+ bool asop (true);
+
+ if (!simple)
+ {
+ if (options.suppress_assignment ())
+ {
+ asop = false;
+
+ priv = true;
+ os << "private:" << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Disabled copy assignment operator." << endl
+ << " *" << endl
+ << " * @param x An instance to make a copy of." << endl
+ << " * @return A reference to itself." << endl
+ << " */" << endl;
+ }
+
+ os << name << "&" << endl
+ << "operator= (const " << name << "& x);"
+ << endl;
+ }
+ else if (has_members || (gen_wildcard && (hae || haa)))
+ {
+ asop = false;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy assignment operator." << endl
+ << " *" << endl
+ << " * @param x An instance to make a copy of." << endl
+ << " * @return A reference to itself." << endl
+ << " *" << endl
+ << " * For polymorphic object models use the @c _clone " <<
+ "function instead." << endl
+ << " */" << endl;
+ }
+
+ os << name << "&" << endl
+ << "operator= (const " << name << "& x);"
+ << endl;
+ }
+ }
+
+ if (doxygen)
+ {
+ os << "//@}" << endl
+ << endl;
+ }
+
+ if (priv)
+ os << "public:" << endl;
+
+ if (asop)
+ {
+ os << "#ifdef XSD_CXX11" << endl
+ << name << "&" << endl
+ << "operator= (const " << name << "&) = default;"
+ << "#endif" << endl
+ << endl;
+ }
+
+ // d-tor
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Destructor." << endl
+ << " */" << endl;
+ }
+
+ os << "virtual " << endl
+ << "~" << name << " ();"
+ << endl;
+
+ // Data members and implementation functions.
+ //
+ if (has_members || hae || (haa && gen_wildcard) || ordered || mixed)
+ {
+ os << "// Implementation." << endl
+ << "//" << endl;
+
+ if (doxygen)
+ os << endl
+ << "//@cond" << endl
+ << endl;
+
+ if (!options.suppress_parsing () &&
+ (has_members || hae || (haa && gen_wildcard) || mixed))
+ {
+ // parse ()
+ //
+ os << "protected:" << endl
+ << "void" << endl
+ << unclash (name, "parse") << " (" <<
+ parser_type << "&," << endl
+ << flags_type << ");"
+ << endl;
+ }
+
+ os << "protected:"
+ << endl;
+
+ // parse (istream)
+ //
+ if (has_members)
+ {
+ for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
+ ++i)
+ {
+ os << "void" << endl
+ << unclash (name, "parse") << " (" <<
+ istream_type << "< " << i->c_str () << " >&," << endl
+ << flags_type << ");"
+ << endl;
+ }
+ }
+
+ // DOM document.
+ //
+ if (edom_document_member_p (c))
+ {
+ os << dom_auto_ptr << "< " << xerces_ns <<
+ "::DOMDocument > " << edom_document_member (c) << ";"
+ << endl;
+ }
+
+ // Mixed text content.
+ //
+ if (mixed)
+ {
+ os << ctx.get<String> ("mixed-container") << " " <<
+ ctx.get<String> ("mixed-member") << ";"
+ << endl;
+ }
+
+ // Order container.
+ //
+ if (ordered)
+ {
+ os << ctx.get<String> ("order-container") << " " <<
+ ctx.get<String> ("order-member") << ";"
+ << endl;
+ }
+
+ //
+ //
+ names (c, names_data_);
+
+ if (doxygen)
+ os << endl
+ << "//@endcond" << endl;
+ }
+
+ os << "};";
+
+ // Comparison operators.
+ //
+ if (options.generate_comparison () &&
+ (has_members || !c.inherits_p () ||
+ ((hae || haa) && gen_wildcard)))
+ {
+ os << inst_exp
+ << "bool" << endl
+ << "operator== (const " << name << "&, const " << name << "&);"
+ << endl;
+
+ os << inst_exp
+ << "bool" << endl
+ << "operator!= (const " << name << "&, const " << name << "&);"
+ << endl
+ << endl;
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_base_;
+ BaseTypeName base_name_;
+
+ Traversal::Inherits inherits_member_;
+ MemberTypeName member_name_;
+
+ Traversal::Names names_;
+ Any any_;
+ Member member_;
+
+ Traversal::Names names_data_;
+ DataAny data_any_;
+ DataMember data_member_;
+ };
+
+
+ struct GlobalElement: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ GlobalElement (Context& c)
+ : GlobalElementBase (c), Context (c), type_name_ (c)
+ {
+ belongs_ >> type_name_;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (!doc_root_p (e))
+ return;
+
+ SemanticGraph::Type& t (e.type ());
+
+ bool fund (false);
+ {
+ IsFundamentalType test (fund);
+ test.dispatch (t);
+ }
+
+ bool simple (true);
+ if (!fund)
+ {
+ IsSimpleType test (simple);
+ test.dispatch (t);
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Class corresponding to the %" <<
+ comment (e.name ()) << " root element." << endl;
+
+ if (e.annotated_p ())
+ {
+ os << " *" << endl;
+ write_annotation (e.annotation ());
+ }
+
+ os << " *" << endl
+ << " * @nosubgrouping" << endl
+ << " */" << endl;
+ }
+
+ String const& name (ename (e));
+
+ os << "class " << type_exp << name << ": public " << element_type
+ << "{"
+ << "public:" << endl
+ << endl;
+
+ String const& type (etype (e));
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @name Element value" << endl
+ << " *" << endl
+ << " * @brief Accessor and modifier functions for the " <<
+ "element value." << endl
+ << " */" << endl
+ << "//@{" << endl
+ << endl;
+ }
+ else
+ {
+ os << "// Element value." << endl
+ << "//" << endl;
+ }
+
+ // Typedefs.
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Element value type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef ";
+
+ belongs (e, belongs_);
+
+ os << " " << type << ";";
+
+ if (doxygen)
+ {
+ os << endl
+ << "/**" << endl
+ << " * @brief Element value traits type." << endl
+ << " */" << endl;
+ }
+
+ os << "typedef ::xsd::cxx::tree::traits< " << type << ", " <<
+ char_type;
+
+ if (t.is_a<SemanticGraph::Fundamental::Double> ())
+ os << ", ::xsd::cxx::tree::schema_type::double_";
+ else if (t.is_a<SemanticGraph::Fundamental::Decimal> ())
+ os << ", ::xsd::cxx::tree::schema_type::decimal";
+
+ os << " > " << etraits (e) << ";"
+ << endl;
+
+ // Accessors/modifiers.
+ //
+ String const& aname (eaname (e));
+ String const& mname (emname (e));
+
+ // type const&
+ // name () const;
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) reference " <<
+ "to the element" << endl
+ << " * value." << endl
+ << " *" << endl
+ << " * @return A constant reference to the element value." <<
+ endl
+ << " */" << endl;
+ }
+
+ os << "const " << type << "&" << endl
+ << aname << " () const;"
+ << endl;
+
+ // type&
+ // name ();
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-write reference to the " <<
+ "element value." << endl
+ << " *" << endl
+ << " * @return A reference to the element value." << endl
+ << " */" << endl;
+ }
+
+ os << type << "&" << endl
+ << aname << " ();"
+ << endl;
+
+ // void
+ // name (type const&);
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the element value." << endl
+ << " *" << endl
+ << " * @param x A new value to set." << endl
+ << " *" << endl
+ << " * This function makes a copy of its argument " <<
+ "and sets it as" << endl
+ << " * the new value of the element." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (const " << type << "& x);"
+ << endl;
+
+ // void
+ // name (auto_ptr<type>);
+ //
+ if (!fund)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Set the element value without " <<
+ "copying." << endl
+ << " *" << endl
+ << " * @param p A new value to use." << endl
+ << " *" << endl
+ << " * This function will try to use the passed value " <<
+ "directly" << endl
+ << " * instead of making a copy." << endl
+ << " */" << endl;
+ }
+
+ os << "void" << endl
+ << mname << " (" << auto_ptr << "< " << type << " > p);"
+ << endl;
+ }
+
+ // auto_ptr<type>
+ // detach_name ();
+ //
+ if (detach && !fund)
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Detach the element value from " <<
+ "the object." << endl
+ << " *" << endl
+ << " * @return A pointer to the element value." << endl
+ << " *" << endl
+ << " * Note that this function leaves the element " <<
+ "object uninitialized." << endl
+ << " */" << endl;
+ }
+
+ os << auto_ptr << "< " << type << " >" << endl
+ << edname (e) << " ();"
+ << endl;
+ }
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a read-only (constant) pointer " <<
+ "to the element" << endl
+ << " * value." << endl
+ << " *" << endl
+ << " * @return A constant pointer to the element value " <<
+ "or 0 if this" << endl
+ << " * element is of a fundamental type." << endl
+ << " */" << endl;
+ }
+
+ os << "virtual const " << any_type << "*" << endl
+ << "_value () const;"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return a pointer to the element value." << endl
+ << " *" << endl
+ << " * @return A pointer to the element value or 0 if this " <<
+ "element is" << endl
+ << " * of a fundamental type." << endl
+ << " */" << endl;
+ }
+ os << "virtual " << any_type << "*" << endl
+ << "_value ();"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "//@}" << endl
+ << endl;
+ }
+
+ // Constructor.
+ //
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @name Constructors" << endl
+ << " */" << endl
+ << "//@{" << endl
+ << endl;
+ }
+ else
+ {
+ os << "// Constructors." << endl
+ << "//" << endl;
+ }
+
+ // default c-tor
+ //
+ if (options.generate_default_ctor ())
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Default constructor." << endl
+ << " *" << endl
+ << " * Note that this constructor leaves the element " <<
+ "value" << endl
+ << " * uninitialized." << endl
+ << " */" << endl;
+ }
+
+ os << name << " ();"
+ << endl;
+ }
+
+ // c-tor (value)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from an initializer " <<
+ "for the element" << endl
+ << " * value." << endl
+ << " *" << endl
+ << " * @param x Element value." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << type << "& x);"
+ << endl;
+
+
+ // If the element value is a complex type (has elements,
+ // attributes, or wildcards) then also generate the auto_ptr
+ // version. If we are generating polymorphic code then we
+ // also need to provide auto_ptr version for simple types.
+ //
+ if (!simple || (polymorphic && polymorphic_p (t)))
+ {
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from an initializer " <<
+ "for" << endl
+ << " * the element value (" << auto_ptr <<
+ " version)." << endl
+ << " *" << endl
+ << " * @param p Element value to use." << endl
+ << " *" << endl
+ << " * This constructor will try to use the passed " <<
+ "value directly" << endl
+ << " * instead of making a copy." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (" << auto_ptr << "< " << type << " > p);"
+ << endl;
+ }
+
+ if (!options.suppress_parsing ())
+ {
+ // c-tor (xercesc::DOMElement)
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Create an instance from a DOM element." << endl
+ << " *" << endl
+ << " * @param e A DOM element to extract the data from." << endl
+ << " * @param f Flags to create the new instance with." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << xerces_ns << "::DOMElement& e, " <<
+ flags_type << " f = 0);"
+ << endl;
+ }
+
+ // copy c-tor
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy constructor." << endl
+ << " *" << endl
+ << " * @param x An instance to make a copy of." << endl
+ << " * @param f Flags to create the copy with." << endl
+ << " *" << endl
+ << " * For polymorphic object models use the @c _clone " <<
+ "function instead." << endl
+ << " */" << endl;
+ }
+
+ os << name << " (const " << name << "& x, " <<
+ flags_type << " f = 0);"
+ << endl;
+
+ os << "#ifdef XSD_CXX11" << endl
+ << name << "&" << endl
+ << "operator= (const " << name << "&) = default;"
+ << "#endif" << endl
+ << endl;
+
+ // _clone
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Copy the instance polymorphically." << endl
+ << " *" << endl
+ << " * @param f Flags to create the copy with." << endl
+ << " * @return A pointer to the dynamically allocated copy." << endl
+ << " *" << endl
+ << " * This function ensures that the dynamic type of the " <<
+ "instance is" << endl
+ << " * used for copying and should be used for polymorphic " <<
+ "object" << endl
+ << " * models instead of the copy constructor." << endl
+ << " */" << endl;
+ }
+
+ os << "virtual " << name << "*" << endl
+ << "_clone (" << flags_type << " f = 0) const;"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "//@}" << endl
+ << endl;
+ }
+
+ // Element name and namespace accessors.
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @name Element name and namespace" << endl
+ << " *" << endl
+ << " * @brief Accessor functions for the element name " <<
+ "and namespace." << endl
+ << " */" << endl
+ << "//@{" << endl
+ << endl;
+ }
+ else
+ {
+ os << "// Element name and namespace." << endl
+ << "//" << endl;
+ }
+
+ SemanticGraph::Context& ec (e.context ());
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return the element name (static function)." << endl
+ << " *" << endl
+ << " * @return A read-only string reference containing " <<
+ "the element" << endl
+ << " * name." << endl
+ << " */" << endl;
+ }
+ os << "static const " << string_type << "&" << endl
+ << ec.get<String> ("element-name") << " ();"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return the element namespace (static " <<
+ "function)." << endl
+ << " *" << endl
+ << " * @return A read-only string reference containing " <<
+ "the element" << endl
+ << " * namespace." << endl
+ << " */" << endl;
+ }
+ os << "static const " << string_type << "&" << endl
+ << ec.get<String> ("element-ns") << " ();"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return the element name." << endl
+ << " *" << endl
+ << " * @return A read-only string reference containing " <<
+ "the element" << endl
+ << " * name." << endl
+ << " */" << endl;
+ }
+ os << "virtual const " << string_type << "&" << endl
+ << "_name () const;"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Return the element namespace." << endl
+ << " *" << endl
+ << " * @return A read-only string reference containing " <<
+ "the element" << endl
+ << " * namespace." << endl
+ << " */" << endl;
+ }
+ os << "virtual const " << string_type << "&" << endl
+ << "_namespace () const;"
+ << endl;
+
+ if (doxygen)
+ {
+ os << "//@}" << endl
+ << endl;
+ }
+
+ // d-tor
+ //
+ if (doxygen)
+ {
+ os << "/**" << endl
+ << " * @brief Destructor." << endl
+ << " */" << endl;
+ }
+
+ os << "virtual " << endl
+ << "~" << name << " ();"
+ << endl;
+
+ // Data member.
+ //
+
+ if (doxygen)
+ os << "//@cond" << endl
+ << endl;
+
+ os << "protected:" << endl
+ << "::xsd::cxx::tree::one< " << type << " > " <<
+ emember (e) << ";"
+ << "static const " << string_type << " " <<
+ ec.get<String> ("element-name-member") << ";"
+ << "static const " << string_type << " " <<
+ ec.get<String> ("element-ns-member") << ";";
+
+ if (doxygen)
+ os << endl
+ << "//@endcond" << endl;
+
+ os << "};";
+ }
+
+ private:
+ Traversal::Belongs belongs_;
+ MemberTypeName type_name_;
+ };
+ }
+
+ void
+ generate_tree_header (Context& ctx)
+ {
+ if (ctx.generate_xml_schema)
+ {
+ if (ctx.char_type == L"char" && ctx.char_encoding != L"custom")
+ {
+ ctx.os << "#include <xsd/cxx/xml/char-" << ctx.char_encoding <<
+ ".hxx>" << endl
+ << endl;
+ }
+
+ ctx.os << "#include <xsd/cxx/tree/exceptions.hxx>" << endl
+ << "#include <xsd/cxx/tree/elements.hxx>" << endl
+ << "#include <xsd/cxx/tree/types.hxx>" << endl
+ << endl;
+
+ if (!ctx.options.suppress_parsing () ||
+ ctx.options.generate_serialization ())
+ {
+ ctx.os << "#include <xsd/cxx/xml/error-handler.hxx>" << endl
+ << endl;
+ }
+
+ if (!ctx.options.suppress_parsing () ||
+ ctx.options.generate_serialization ())
+ {
+ ctx.os << "#include <xsd/cxx/xml/dom/auto-ptr.hxx>" << endl
+ << endl;
+ }
+
+ bool element_map (ctx.options.generate_element_map ());
+
+ if (element_map)
+ ctx.os << "#include <xsd/cxx/tree/element-map.hxx>" << endl
+ << endl;
+
+ // I need to include all the "optional" headers here (instead of
+ // later in the individual generators for each feature because
+ // those headers provide implementation for the fundamental types.
+ //
+ if (!ctx.options.suppress_parsing ())
+ {
+ ctx.os << "#include <xsd/cxx/tree/parsing.hxx>" << endl;
+
+ Traversal::Schema schema;
+ Traversal::Names names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ FundIncludes type (ctx, "parsing");
+
+ schema >> names >> ns >> ns_names >> type;
+
+ schema.dispatch (ctx.schema_root);
+
+ if (element_map)
+ ctx.os << "#include <xsd/cxx/tree/parsing/element-map.txx>" <<
+ endl;
+
+ ctx.os << endl;
+ }
+
+ if (ctx.options.generate_serialization ())
+ {
+ ctx.os << "#include <xsd/cxx/xml/dom/serialization-header.hxx>" << endl
+ << "#include <xsd/cxx/tree/serialization.hxx>" << endl;
+
+ Traversal::Schema schema;
+ Traversal::Names names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+ FundIncludes type (ctx, "serialization");
+
+ schema >> names >> ns >> ns_names >> type;
+
+ schema.dispatch (ctx.schema_root);
+
+ if (element_map)
+ ctx.os << "#include <xsd/cxx/tree/serialization/element-map.txx>" <<
+ endl;
+
+ ctx.os << endl;
+ }
+
+ if (ctx.options.generate_ostream ())
+ {
+ ctx.os << "#include <xsd/cxx/tree/std-ostream-operators.hxx>" << endl
+ << endl;
+ }
+
+ NarrowStrings const& ist (ctx.options.generate_insertion ());
+ if (!ist.empty ())
+ {
+ for (NarrowStrings::const_iterator i (ist.begin ()); i != ist.end ();
+ ++i)
+ {
+ if (*i == "ACE_OutputCDR")
+ ctx.os << "#include <xsd/cxx/tree/ace-cdr-stream-insertion.hxx>"
+ << endl;
+ else if (*i == "XDR")
+ ctx.os << "#include <xsd/cxx/tree/xdr-stream-insertion.hxx>"
+ << endl;
+ }
+
+ ctx.os << "#include <xsd/cxx/tree/stream-insertion.hxx>" << endl
+ << endl;
+ }
+
+ NarrowStrings const& est (ctx.options.generate_extraction ());
+ if (!est.empty ())
+ {
+ for (NarrowStrings::const_iterator i (est.begin ()); i != est.end ();
+ ++i)
+ {
+ if (*i == "ACE_InputCDR")
+ ctx.os << "#include <xsd/cxx/tree/ace-cdr-stream-extraction.hxx>"
+ << endl;
+ else if (*i == "XDR")
+ ctx.os << "#include <xsd/cxx/tree/xdr-stream-extraction.hxx>"
+ << endl;
+ }
+
+ ctx.os << "#include <xsd/cxx/tree/stream-extraction.hxx>" << endl
+ << endl;
+ }
+
+ // Emit fundamental types.
+ //
+ {
+ Traversal::Schema schema;
+ Traversal::Names names;
+ FundamentalNamespace ns (ctx);
+
+ schema >> names >> ns;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+ else
+ {
+ bool inline_ (ctx.options.generate_inline ());
+
+ ctx.os << "#include <memory> // " << ctx.auto_ptr << endl
+ << "#include <limits> // std::numeric_limits" << endl
+ << "#include <algorithm> // std::binary_search" << endl;
+
+ if (ctx.std >= cxx_version::cxx11)
+ ctx.os << "#include <utility> // std::move" << endl;
+
+ if (!ctx.options.ordered_type ().empty () ||
+ ctx.options.ordered_type_all ())
+ {
+ ctx.os << "#include <cstddef> // std::size_t" << endl;
+
+ if (!ctx.options.order_container_specified ())
+ ctx.os << "#include <vector>" << endl;
+ }
+
+ ctx.os << endl;
+
+ if (ctx.char_type == L"char" && ctx.char_encoding != L"custom")
+ {
+ ctx.os << "#include <xsd/cxx/xml/char-" << ctx.char_encoding <<
+ ".hxx>" << endl
+ << endl;
+ }
+
+ ctx.os << "#include <xsd/cxx/tree/exceptions.hxx>" << endl
+ << "#include <xsd/cxx/tree/elements.hxx>" << endl
+ << "#include <xsd/cxx/tree/containers.hxx>" << endl
+ << "#include <xsd/cxx/tree/list.hxx>" << endl
+ << endl;
+
+ if (!ctx.options.suppress_parsing ())
+ {
+ ctx.os << "#include <xsd/cxx/xml/dom/parsing-header.hxx>" << endl
+ << endl;
+ }
+
+ if (ctx.options.generate_wildcard ())
+ {
+ if (ctx.options.suppress_parsing () ||
+ !ctx.options.generate_serialization ())
+ ctx.os << "#include <xsd/cxx/xml/dom/auto-ptr.hxx>" << endl;
+
+ ctx.os << "#include <xsd/cxx/tree/containers-wildcard.hxx>" << endl
+ << endl;
+ }
+
+ if (!ctx.options.generate_extraction ().empty ())
+ ctx.os << "#include <xsd/cxx/tree/istream-fwd.hxx>" << endl
+ << endl;
+
+ // Emit header includes.
+ //
+ {
+ if (inline_)
+ {
+ ctx.os << "#ifndef XSD_DONT_INCLUDE_INLINE" << endl
+ << "#define XSD_DONT_INCLUDE_INLINE" << endl
+ << endl;
+ }
+
+ Traversal::Schema schema;
+ Includes includes (ctx, Includes::header);
+
+ schema >> includes;
+
+ schema.dispatch (ctx.schema_root);
+
+ if (inline_)
+ {
+ ctx.os << "#undef XSD_DONT_INCLUDE_INLINE" << endl
+ << "#else" << endl
+ << endl;
+
+ schema.dispatch (ctx.schema_root);
+
+ ctx.os << "#endif // XSD_DONT_INCLUDE_INLINE" << endl
+ << endl;
+ }
+ }
+
+
+ {
+ Traversal::Schema schema;
+
+ Sources sources;
+ Traversal::Names names_ns, names;
+
+ DocumentedNamespace ns (ctx);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+ GlobalElement element (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ if (ctx.options.generate_element_type ())
+ names >> element;
+
+ schema.dispatch (ctx.schema_root);
+ }
+
+ // Emit inline includes.
+ //
+ if (inline_)
+ {
+ ctx.os << "#ifndef XSD_DONT_INCLUDE_INLINE" << endl
+ << endl;
+
+ Traversal::Schema schema;
+ Includes ixx_includes (ctx, Includes::inline_);
+ schema >> ixx_includes;
+
+ schema.dispatch (ctx.schema_root);
+
+ ctx.os << "#endif // XSD_DONT_INCLUDE_INLINE" << endl
+ << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/xsd/cxx/tree/tree-header.hxx b/xsd/cxx/tree/tree-header.hxx
new file mode 100644
index 0000000..d0e9ea6
--- /dev/null
+++ b/xsd/cxx/tree/tree-header.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/tree-header.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_TREE_HEADER_HXX
+#define XSD_CXX_TREE_TREE_HEADER_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_tree_header (Context&);
+ }
+}
+
+#endif // XSD_CXX_TREE_TREE_HEADER_HXX
diff --git a/xsd/cxx/tree/tree-inline.cxx b/xsd/cxx/tree/tree-inline.cxx
new file mode 100644
index 0000000..aa8b726
--- /dev/null
+++ b/xsd/cxx/tree/tree-inline.cxx
@@ -0,0 +1,1161 @@
+// file : xsd/cxx/tree/tree-inline.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/cxx/tree/tree-inline.hxx>
+#include <xsd/cxx/tree/default-value.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String name (ename (l));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (l, name) && !name)
+ return;
+
+ SemanticGraph::Type& item_type (l.argumented ().type ());
+ String item_name (item_type_name (item_type));
+ String base_type (L"::xsd::cxx::tree::list< " + item_name +
+ L", " + char_type);
+
+ if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
+ base_type += L", ::xsd::cxx::tree::schema_type::double_";
+ else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
+ base_type += L", ::xsd::cxx::tree::schema_type::decimal";
+
+ base_type += L" >";
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // c-tor ()
+ //
+ os << inl
+ << name << "::" << endl
+ << name << " ()" << endl
+ << ": " << base_type << " (this)"
+ << "{"
+ << "}";
+
+ // c-tor (size_type, const X& x)
+ //
+ String size_type (name != L"size_type"
+ ? String (L"size_type")
+ : base_type + L"::size_type");
+
+ os << inl
+ << name << "::" << endl
+ << name << " (" << size_type << " n, const " << item_name <<
+ "& x)" << endl
+ << ": " << base_type << " (n, x, this)"
+ << "{"
+ << "}";
+
+ // copy c-tor ()
+ //
+ os << inl
+ << name << "::" << endl
+ << name << " (const " << name << "& o," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << any_simple_type << " (o, f, c)," << endl
+ << " " << base_type << " (o, f, this)"
+ << "{"
+ << "}";
+
+ // Comparison operators.
+ //
+ if (options.generate_comparison ())
+ {
+ os << inl
+ << "bool" << endl
+ << "operator== (const " << name << "& x, " <<
+ "const " << name << "& y)"
+ << "{"
+ << "const " << base_type << "& bx (x);"
+ << "return bx == y;"
+ << "}";
+
+ os << inl
+ << "bool" << endl
+ << "operator!= (const " << name << "& x, " <<
+ "const " << name << "& y)"
+ << "{"
+ << "return !(x == y);"
+ << "}";
+ }
+ }
+
+ private:
+ String
+ item_type_name (SemanticGraph::Type& t)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (t);
+
+ return o.str ();
+ }
+ };
+
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String name (ename (u));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (u, name) && !name)
+ return;
+
+ String const& base (xs_string_type);
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ if (options.generate_default_ctor ())
+ {
+ // c-tor ()
+ //
+ os << inl
+ << name << "::" << endl
+ << name << " ()" << endl
+ << ": " << base << " ()"
+ << "{"
+ << "}";
+ }
+
+ // c-tor (const char*)
+ //
+ os << inl
+ << name << "::" << endl
+ << name << " (const " << char_type << "* s)" << endl
+ << ": " << base << " (s)"
+ << "{"
+ << "}";
+
+ // c-tor (string const&)
+ //
+ os << inl
+ << name << "::" << endl
+ << name << " (const " << string_type << "& s)" << endl
+ << ": " << base << " (s)"
+ << "{"
+ << "}";
+
+ // copy c-tor ()
+ //
+ os << inl
+ << name << "::" << endl
+ << name << " (const " << name << "& o," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (o, f, c)"
+ << "{"
+ << "}";
+ }
+ };
+
+ // Enumeration
+ //
+
+ // Generate a sequence of explicit c-tor calls until we reach
+ // one of the fundamental string types that can be constructed
+ // from char literals.
+ //
+ struct CtorCallSequence: Traversal::Complex,
+ Traversal::Fundamental::Type,
+ Context
+ {
+ CtorCallSequence (Context& c, String const& arg)
+ : Context (c), arg_ (arg), base_type_name_ (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ // This type should be ultimately string based.
+ //
+ assert (c.inherits_p ());
+
+ os << ename (c) << " (" << endl;
+
+ dispatch (c.inherits ().base ());
+
+ os << ")";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Type& t)
+ {
+ base_type_name_.dispatch (t);
+
+ os << " (" << arg_ << ")";
+ }
+
+ private:
+ String arg_;
+ BaseTypeName base_type_name_;
+ };
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c), member_ (c)
+ {
+ inherits_member_ >> member_;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String name (ename (e));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ bool string_based (false);
+ {
+ IsStringBasedType t (string_based);
+ t.dispatch (e);
+ }
+
+ bool enum_based (false);
+ if (string_based)
+ {
+ SemanticGraph::Enumeration* be (0);
+ IsEnumBasedType t (be);
+ t.dispatch (e);
+
+ enum_based = (be != 0);
+ }
+
+ String value;
+ if (string_based)
+ value = evalue (e);
+
+ // Get to the ultimate base and see if is a fundamental type.
+ //
+ bool fund_based (false);
+ SemanticGraph::Type& ult_base (ultimate_base (e));
+ {
+ IsFundamentalType t (fund_based);
+ t.dispatch (ult_base);
+ }
+
+ //
+ //
+ String base; // base type name
+ {
+ std::wostringstream o;
+
+ BaseTypeName base_type (*this, o);
+ Traversal::Inherits inherits_type (base_type);
+
+ inherits (e, inherits_type);
+ base = o.str ();
+ }
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // default c-tor
+ //
+ bool list_based (
+ ult_base.is_a<SemanticGraph::List> () ||
+ ult_base.is_a<SemanticGraph::Fundamental::NameTokens> () ||
+ ult_base.is_a<SemanticGraph::Fundamental::IdRefs> () ||
+ ult_base.is_a<SemanticGraph::Fundamental::Entities> ());
+
+ if (options.generate_default_ctor () || list_based)
+ {
+ os << inl
+ << name << "::" << endl
+ << name << " ()" << endl
+ << ": " << base << " ()"
+ << "{"
+ << "}";
+ }
+
+ // c-tor (value)
+ //
+ if (string_based)
+ {
+ os << inl
+ << name << "::" << endl
+ << name << " (" << value << " v)" << endl
+ << ": ";
+
+ // If we are enum-based then we can just use the corresponding
+ // base c-tor directly. Otherwise we will use the from-string
+ // c-tor.
+ //
+ if (enum_based)
+ os << base << " (v)";
+ else
+ {
+ CtorCallSequence t (*this, L"_xsd_" + name + L"_literals_[v]");
+ t.dispatch (e.inherits ().base ());
+ }
+
+ os << "{"
+ << "}";
+ }
+
+ // c-tor (const char*)
+ //
+ if (string_based)
+ {
+ os << inl
+ << name << "::" << endl
+ << name << " (const " << char_type << "* v)" << endl
+ << ": " << base << " (v)"
+ << "{"
+ << "}";
+ }
+
+ // c-tor (const std::string&)
+ //
+ if (string_based)
+ {
+ os << inl
+ << name << "::" << endl
+ << name << " (const " << string_type << "& v)" << endl
+ << ": " << base << " (v)"
+ << "{"
+ << "}";
+ }
+
+ // c-tor (fundamental)
+ //
+ if (fund_based)
+ {
+ os << inl
+ << name << "::" << endl
+ << name << " (";
+
+ member_.dispatch (ult_base);
+
+ os << " v)"
+ << ": " << base << " (v)"
+ << "{"
+ << "}";
+ }
+
+ // c-tor (base)
+ //
+ // If the ultimate is also our immediate base and it is a
+ // fundamental type then this c-tor clashes with c-tor
+ // (fundamental) above.
+ //
+ if (!fund_based || &ult_base != &e.inherits ().base ())
+ {
+ os << inl
+ << name << "::" << endl
+ << name << " (const ";
+
+ inherits (e, inherits_member_);
+
+ os << "& v)" << endl
+ << ": " << base << " (v)"
+ << "{"
+ << "}";
+ }
+
+ // copy c-tor
+ //
+ os << inl
+ << name << "::" << endl
+ << name << " (const " << name << "& v," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (v, f, c)"
+ << "{"
+ << "}";
+
+ // operato= (value)
+ //
+ if (string_based)
+ {
+ os << inl
+ << name << "& " << name << "::" << endl
+ << "operator= (" << value << " v)"
+ << "{"
+ << "static_cast< " << base << "& > (*this) = ";
+
+ // If we are enum-based then we can just use the corresponding
+ // base assignment directly. Otherwise we will use the from-
+ // base assignment and a from-string base c-tor.
+ //
+ if (enum_based)
+ os << "v";
+ else
+ {
+ os << endl;
+
+ CtorCallSequence t (*this, L"_xsd_" + name + L"_literals_[v]");
+ t.dispatch (e.inherits ().base ());
+ }
+
+ os << ";"
+ << endl
+ << "return *this;"
+ << "}";
+ }
+
+ os << endl;
+ }
+
+ private:
+ Traversal::Inherits inherits_member_;
+ MemberTypeName member_;
+ };
+
+ struct Member: Traversal::Member, Context
+ {
+ Member (Context& c, String const& scope)
+ : Context (c), scope_ (scope), lit_value_ (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ String const& aname (eaname (m));
+ String const& mname (emname (m));
+ String const& member (emember (m));
+
+ bool fund (false);
+ {
+ IsFundamentalType t (fund);
+ t.dispatch (m.type ());
+ }
+
+ bool def_attr (m.default_p () &&
+ m.is_a<SemanticGraph::Attribute> ());
+
+ if (max (m) != 1)
+ {
+ // sequence
+ //
+ String container (econtainer (m));
+ String q_container (scope_ + L"::" + container);
+
+ // container const&
+ // name () const;
+ //
+ os << inl
+ << "const " << q_container << "& " << scope_ << "::" << endl
+ << aname << " () const"
+ << "{"
+ << "return this->" << member << ";"
+ << "}";
+
+ // container&
+ // name ();
+ //
+ os << inl
+ << q_container << "& " << scope_ << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return this->" << member << ";"
+ << "}";
+
+ // void
+ // name (container const&);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (const " << container << "& s)"
+ << "{"
+ << "this->" << member << " = s;"
+ << "}";
+ }
+ else if (min (m) == 0 && !def_attr)
+ {
+ // optional
+ //
+ String type (etype (m));
+ String container (econtainer (m));
+ String q_container (scope_ + L"::" + container);
+
+ // container const&
+ // name () const;
+ //
+ os << inl
+ << "const " << q_container << "& " << scope_ << "::" << endl
+ << aname << " () const"
+ << "{"
+ << "return this->" << member << ";"
+ << "}";
+
+ // container&
+ // name ();
+ //
+ os << inl
+ << q_container << "& " << scope_ << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return this->" << member << ";"
+ << "}";
+
+ // void
+ // name (type const&);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (const " << type << "& x)"
+ << "{"
+ << "this->" << member << ".set (x);"
+ << "}";
+
+ // void
+ // name (container const&);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (const " << container << "& x)"
+ << "{"
+ << "this->" << member << " = x;"
+ << "}";
+
+ // void
+ // name (auto_ptr<type>);
+ //
+ if (!fund)
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (" << auto_ptr << "< " << type << " > x)"
+ << "{"
+ << "this->" << member << ".set (" <<
+ (std >= cxx_version::cxx11 ? "std::move (x)" : "x") << ");"
+ << "}";
+ }
+ else
+ {
+ // one
+ //
+ String type (etype (m));
+ String q_type (scope_ + L"::" + type);
+
+ // type const&
+ // name () const;
+ //
+ os << inl
+ << "const " << q_type << "& " << scope_ << "::" << endl
+ << aname << " () const"
+ << "{"
+ << "return this->" << member << ".get ();"
+ << "}";
+
+ // Do not generate modifiers for fixed attributes.
+ //
+ if (!(def_attr && m.fixed_p ()))
+ {
+ // type&
+ // name ();
+ //
+ os << inl
+ << q_type << "& " << scope_ << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return this->" << member << ".get ();"
+ << "}";
+
+ // void
+ // name (type const&);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (const " << type << "& x)"
+ << "{"
+ << "this->" << member << ".set (x);"
+ << "}";
+
+ // void
+ // name (auto_ptr<type>);
+ //
+ if (!fund)
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (" << auto_ptr << "< " << type << " > x)"
+ << "{"
+ << "this->" << member << ".set (" <<
+ (std >= cxx_version::cxx11 ? "std::move (x)" : "x") << ");"
+ << "}";
+
+ // auto_ptr<type>
+ // detach_name ();
+ //
+ if (detach && !fund)
+ os << inl
+ << auto_ptr << "< " << q_type << " > " <<
+ scope_ << "::" << endl
+ << edname (m) << " ()"
+ << "{"
+ << "return this->" << member << ".detach ();"
+ << "}";
+ }
+ }
+
+
+ // default_value
+ //
+ if (m.default_p ())
+ {
+ bool simple (true);
+
+ if (m.is_a<SemanticGraph::Element> ())
+ {
+ IsSimpleType test (simple);
+ test.dispatch (m.type ());
+ }
+
+ if (simple)
+ {
+ String lit (lit_value_.dispatch (m.type (), m.value ()));
+
+ os << inl;
+
+ if (lit)
+ os << scope_ << "::" << etype (m) << " ";
+ else
+ os << "const " << scope_ << "::" << etype (m) << "& ";
+
+ os << scope_ << "::" << endl
+ << edefault_value (m) << " ()"
+ << "{";
+
+ if (lit)
+ os << "return " << etype (m) << " (" << lit << ");";
+ else
+ os << "return " << edefault_value_member (m) << ";";
+
+ os << "}";
+ }
+ }
+ }
+
+ private:
+ String scope_;
+ LiteralValue lit_value_;
+ };
+
+ struct Any: Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ Any (Context& c, String const& scope)
+ : Context (c), scope_ (scope)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& aname (eaname (a));
+ String const& mname (emname (a));
+
+ String const& member (emember (a));
+
+ if (max (a) != 1)
+ {
+ // sequence
+ //
+ String container (econtainer (a));
+ String q_container (scope_ + L"::" + container);
+
+ // container const&
+ // name () const;
+ //
+ os << inl
+ << "const " << q_container << "& " << scope_ << "::" << endl
+ << aname << " () const"
+ << "{"
+ << "return this->" << member << ";"
+ << "}";
+
+ // container&
+ // name ();
+ //
+ os << inl
+ << q_container << "& " << scope_ << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return this->" << member << ";"
+ << "}";
+
+ // void
+ // name (container const&);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (const " << container << "& s)"
+ << "{"
+ << "this->" << member << " = s;"
+ << "}";
+ }
+ else if (min (a) == 0)
+ {
+ // optional
+ //
+ String container (econtainer (a));
+ String q_container (scope_ + L"::" + container);
+
+ // container const&
+ // name () const;
+ //
+ os << inl
+ << "const " << q_container << "& " << scope_ << "::" << endl
+ << aname << " () const"
+ << "{"
+ << "return this->" << member << ";"
+ << "}";
+
+ // container&
+ // name ();
+ //
+ os << inl
+ << q_container << "& " << scope_ << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return this->" << member << ";"
+ << "}";
+
+ // void
+ // name (type const&);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (const " << xerces_ns << "::DOMElement& e)"
+ << "{"
+ << "this->" << member << ".set (e);"
+ << "}";
+
+ // void
+ // name (type*);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (" << xerces_ns << "::DOMElement* e)"
+ << "{"
+ << "this->" << member << ".set (e);"
+ << "}";
+
+ // void
+ // name (container const&);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (const " << container << "& x)"
+ << "{"
+ << "this->" << member << " = x;"
+ << "}";
+ }
+ else
+ {
+ // one
+ //
+
+ // type const&
+ // name () const;
+ //
+ os << inl
+ << "const " << xerces_ns << "::DOMElement& " <<
+ scope_ << "::" << endl
+ << aname << " () const"
+ << "{"
+ << "return this->" << member << ".get ();"
+ << "}";
+
+ // type&
+ // name ();
+ //
+ os << inl
+ << xerces_ns << "::DOMElement& " << scope_ << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return this->" << member << ".get ();"
+ << "}";
+
+ // void
+ // name (type const&);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (const " << xerces_ns << "::DOMElement& e)"
+ << "{"
+ << "this->" << member << ".set (e);"
+ << "}";
+
+ // void
+ // name (type*);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (" << xerces_ns << "::DOMElement* e)"
+ << "{"
+ << "this->" << member << ".set (e);"
+ << "}";
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& aname (eaname (a));
+ String const& mname (emname (a));
+
+ String const& member (emember (a));
+ String container (econtainer (a));
+ String q_container (scope_ + L"::" + container);
+
+ // container const&
+ // name () const;
+ //
+ os << inl
+ << "const " << q_container << "& " << scope_ << "::" << endl
+ << aname << " () const"
+ << "{"
+ << "return this->" << member << ";"
+ << "}";
+
+ // container&
+ // name ();
+ //
+ os << inl
+ << q_container << "& " << scope_ << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return this->" << member << ";"
+ << "}";
+
+ // void
+ // name (container const&);
+ //
+ os << inl
+ << "void " << scope_ << "::" << endl
+ << mname << " (const " << container << "& s)"
+ << "{"
+ << "this->" << member << " = s;"
+ << "}";
+ }
+
+ private:
+ String scope_;
+ };
+
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ String name (ename (c));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (c, name) && !name)
+ return;
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // Generate accessors and modifiers.
+ //
+ Any any (*this, name);
+ Member member (*this, name);
+ Traversal::Names names;
+
+ if (options.generate_wildcard ())
+ names >> any;
+
+ names >> member;
+
+ Complex::names (c, names);
+
+ // Mixed text content.
+ //
+ if (mixed_p (c) && !c.context ().count ("mixed-in-base"))
+ {
+ SemanticGraph::Context& ctx (c.context ());
+
+ String const& cont (ctx.get<String> ("mixed-container"));
+ String const& memb (ctx.get<String> ("mixed-member"));
+
+ String const& aname (ctx.get<String> ("mixed-aname"));
+ String const& mname (ctx.get<String> ("mixed-mname"));
+
+ os << inl
+ << "const " << name << "::" << cont << "& " <<
+ name << "::" << endl
+ << aname << " () const"
+ << "{"
+ << "return this->" << memb << ";"
+ << "}";
+
+ os << inl
+ << name << "::" << cont << "& " << name << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return this->" << memb << ";"
+ << "}";
+
+ os << inl
+ << "void " << name << "::" << endl
+ << mname << " (const " << cont << "& s)"
+ << "{"
+ << "this->" << memb << " = s;"
+ << "}";
+ }
+
+ // dom_document accessors.
+ //
+ if (edom_document_member_p (c))
+ {
+ os << inl
+ << "const " << xerces_ns << "::DOMDocument& " <<
+ name << "::" << endl
+ << edom_document (c) << " () const"
+ << "{"
+ << "return *this->" << edom_document_member (c) << ";"
+ << "}";
+
+ os << inl
+ << xerces_ns << "::DOMDocument& " << name << "::" << endl
+ << edom_document (c) << " ()"
+ << "{"
+ << "return *this->" << edom_document_member (c) << ";"
+ << "}";
+ }
+
+ // Order container.
+ //
+ if (ordered_p (c) && !c.context ().count ("order-in-base"))
+ {
+ SemanticGraph::Context& ctx (c.context ());
+
+ String const& cont (ctx.get<String> ("order-container"));
+ String const& memb (ctx.get<String> ("order-member"));
+
+ String const& aname (ctx.get<String> ("order-aname"));
+ String const& mname (ctx.get<String> ("order-mname"));
+
+ os << inl
+ << "const " << name << "::" << cont << "& " <<
+ name << "::" << endl
+ << aname << " () const"
+ << "{"
+ << "return this->" << memb << ";"
+ << "}";
+
+ os << inl
+ << name << "::" << cont << "& " << name << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return this->" << memb << ";"
+ << "}";
+
+ os << inl
+ << "void " << name << "::" << endl
+ << mname << " (const " << cont << "& s)"
+ << "{"
+ << "this->" << memb << " = s;"
+ << "}";
+ }
+
+ os << endl;
+ }
+ };
+
+
+ struct GlobalElement: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ GlobalElement (Context& c)
+ : GlobalElementBase (c), Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (!doc_root_p (e))
+ return;
+
+ bool fund (false);
+ {
+ IsFundamentalType test (fund);
+ test.dispatch (e.type ());
+ }
+
+ String const& name (ename (e));
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // Accessors/modifiers.
+ //
+ String const& type (etype (e));
+ String const& aname (eaname (e));
+ String const& mname (emname (e));
+ String const& member (emember (e));
+
+ // type const&
+ // name () const;
+ //
+ os << inl
+ << "const " << name << "::" << type << "& " << name << "::" << endl
+ << aname << " () const"
+ << "{"
+ << "return this->" << member << ".get ();"
+ << "}";
+
+ // type&
+ // name ();
+ //
+ os << inl
+ << name << "::" << type << "& " << name << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return this->" << member << ".get ();"
+ << "}";
+
+ // void
+ // name (type const&);
+ //
+ os << inl
+ << "void " << name << "::" << endl
+ << mname << " (const " << type << "& x)"
+ << "{"
+ << "this->" << member << ".set (x);"
+ << "}";
+
+ // void
+ // name (auto_ptr<type>);
+ //
+ if (!fund)
+ {
+ os << inl
+ << "void " << name << "::" << endl
+ << mname << " (" << auto_ptr << "< " << type << " > x)"
+ << "{"
+ << "this->" << member << ".set (" <<
+ (std >= cxx_version::cxx11 ? "std::move (x)" : "x") << ");"
+ << "}";
+ }
+
+ // auto_ptr<type>
+ // detach_name ();
+ //
+ if (detach && !fund)
+ os << inl
+ << auto_ptr << "< " << name << "::" << type << " > " <<
+ name << "::" << endl
+ << edname (e) << " ()"
+ << "{"
+ << "return this->" << member << ".detach ();"
+ << "}";
+ }
+ };
+ }
+
+ void
+ generate_tree_inline (Context& ctx, size_t first, size_t last)
+ {
+ // Generate includes.
+ //
+ if (ctx.options.generate_inline ())
+ {
+ Traversal::Schema schema;
+ Includes includes (ctx, Includes::inline_);
+
+ schema >> includes;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ else
+ {
+ // Emit "weak" header includes that are used in the file-per-type
+ // compilation model.
+ //
+ Traversal::Schema schema;
+ Includes includes (ctx, Includes::source);
+
+ schema >> includes;
+
+ schema.dispatch (ctx.schema_root);
+ }
+
+ Traversal::Schema schema;
+ Sources sources;
+ Traversal::Names names_ns, names;
+ Namespace ns (ctx, first, last);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+ GlobalElement element (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+
+ if (ctx.options.generate_element_type ())
+ names >> element;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/tree-inline.hxx b/xsd/cxx/tree/tree-inline.hxx
new file mode 100644
index 0000000..dad4c24
--- /dev/null
+++ b/xsd/cxx/tree/tree-inline.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/tree-inline.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_TREE_INLINE_HXX
+#define XSD_CXX_TREE_TREE_INLINE_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_tree_inline (Context&, size_t first, size_t last);
+ }
+}
+
+#endif // XSD_CXX_TREE_TREE_INLINE_HXX
diff --git a/xsd/cxx/tree/tree-source.cxx b/xsd/cxx/tree/tree-source.cxx
new file mode 100644
index 0000000..89419af
--- /dev/null
+++ b/xsd/cxx/tree/tree-source.cxx
@@ -0,0 +1,3912 @@
+// file : xsd/cxx/tree/tree-source.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <map>
+#include <list>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/cxx/tree/tree-source.hxx>
+#include <xsd/cxx/tree/default-value.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ struct List: Traversal::List, Context
+ {
+ List (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& l)
+ {
+ String name (ename (l));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (l, name) && !name)
+ return;
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ if (!options.suppress_parsing ())
+ {
+ SemanticGraph::Type& item_type (l.argumented ().type ());
+ String base (L"::xsd::cxx::tree::list< " +
+ item_type_name (item_type) + L", " + char_type);
+
+ if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
+ base += L", ::xsd::cxx::tree::schema_type::double_";
+ else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
+ base += L", ::xsd::cxx::tree::schema_type::decimal";
+
+ base += L" >";
+
+ // c-tor (xercesc::DOMElement)
+ //
+ os << name << "::" << endl
+ << name << " (const " << xerces_ns << "::DOMElement& e," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << any_simple_type << " (e, f, c)," << endl
+ << " " << base << " (e, f, this)"
+ << "{"
+ << "}";
+
+ // c-tor (xercesc::DOMAttr)
+ //
+ os << name << "::" << endl
+ << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << any_simple_type << " (a, f, c)," << endl
+ << " " << base << " (a, f, this)"
+ << "{"
+ << "}";
+
+ // c-tor (string const&, xercesc::DOMElement)
+ //
+ os << name << "::" << endl
+ << name << " (const " << string_type << "& s," << endl
+ << "const " << xerces_ns << "::DOMElement* e," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << any_simple_type << " (s, e, f, c)," << endl
+ << " " << base << " (s, e, f, this)"
+ << "{"
+ << "}";
+ }
+
+ // _clone
+ //
+ os << name << "* " << name << "::" << endl
+ << "_clone (" << flags_type << " f," << endl
+ << container << "* c) const"
+ << "{"
+ << "return new class " << name << " (*this, f, c);"
+ << "}";
+
+ // d-tor
+ //
+ os << name << "::" << endl
+ << "~" << name << " ()"
+ << "{"
+ << "}";
+
+ // Register with type factory map.
+ //
+ if (polymorphic && polymorphic_p (l))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (l));
+
+ // If this type is anonymous but substitutes, then it will
+ // be registered as part of the substitution registration.
+ //
+ if (!anonymous_p (l) && !options.suppress_parsing ())
+ {
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::type_factory_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_type_factory_init (" << endl
+ << strlit (l.name ()) << "," << endl
+ << strlit (xml_ns_name (l)) << ");"
+ << endl;
+ }
+
+ if ((!anonymous_p (l) || anonymous_substitutes_p (l)) &&
+ options.generate_comparison ())
+ {
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::comparison_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_comparison_init;"
+ << endl;
+ }
+ }
+ }
+
+ private:
+ String
+ item_type_name (SemanticGraph::Type& t)
+ {
+ std::wostringstream o;
+
+ MemberTypeName type (*this, o);
+ type.dispatch (t);
+
+ return o.str ();
+ }
+ };
+
+
+ struct Union: Traversal::Union, Context
+ {
+ Union (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& u)
+ {
+ String name (ename (u));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (u, name) && !name)
+ return;
+
+ String const& base (xs_string_type);
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ if (!options.suppress_parsing ())
+ {
+ // c-tor (xercesc::DOMElement)
+ //
+ os << name << "::" << endl
+ << name << " (const " << xerces_ns << "::DOMElement& e," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (e, f, c)"
+ << "{"
+ << "}";
+
+ // c-tor (xercesc::DOMAttr)
+ //
+ os << name << "::" << endl
+ << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (a, f, c)"
+ << "{"
+ << "}";
+
+ // c-tor (string const&, xercesc::DOMElement)
+ //
+ os << name << "::" << endl
+ << name << " (const " << string_type << "& s," << endl
+ << "const " << xerces_ns << "::DOMElement* e," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (s, e, f, c)"
+ << "{"
+ << "}";
+ }
+
+ // _clone
+ //
+ os << name << "* " << name << "::" << endl
+ << "_clone (" << flags_type << " f," << endl
+ << container << "* c) const"
+ << "{"
+ << "return new class " << name << " (*this, f, c);"
+ << "}";
+
+ // Register with type factory map.
+ //
+ if (polymorphic && polymorphic_p (u))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (u));
+
+ // If this type is anonymous but substitutes, then it will
+ // be registered as part of the substitution registration.
+ //
+ if (!anonymous_p (u) && !options.suppress_parsing ())
+ {
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::type_factory_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_type_factory_init (" << endl
+ << strlit (u.name ()) << "," << endl
+ << strlit (xml_ns_name (u)) << ");"
+ << endl;
+ }
+
+ if ((!anonymous_p (u) || anonymous_substitutes_p (u)) &&
+ options.generate_comparison ())
+ {
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::comparison_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_comparison_init;"
+ << endl;
+ }
+ }
+ }
+ };
+
+
+ // Enumeration mapping.
+ //
+
+ struct EnumeratorLiteral: Traversal::Enumerator, Context
+ {
+ EnumeratorLiteral (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ os << strlit (e.name ());
+ }
+ };
+
+
+ //
+ //
+ struct LiteralInfo
+ {
+ LiteralInfo (String const& value, String const& name)
+ : value_ (value), name_ (name)
+ {
+ }
+
+ String value_;
+ String name_;
+ };
+
+ bool
+ operator< (LiteralInfo const& x, LiteralInfo const& y)
+ {
+ return x.value_ < y.value_;
+ }
+
+ typedef list<LiteralInfo> LiteralInfoList;
+
+
+ // Populate LiteralInfoList
+ //
+ struct EnumeratorLiteralInfo: Traversal::Enumerator, Context
+
+ {
+ EnumeratorLiteralInfo (Context& c, LiteralInfoList& list)
+ : Context (c), list_ (list)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ list_.push_back (LiteralInfo (e.name (), ename (e)));
+ }
+
+ private:
+ LiteralInfoList& list_;
+ };
+
+
+ struct Enumeration: Traversal::Enumeration, Context
+ {
+ Enumeration (Context& c)
+ : Context (c), enumerator_literal_ (c)
+ {
+ names_enumerator_literal_ >> enumerator_literal_;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ String name (ename (e));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ if (renamed_type (e, name) && !name)
+ return;
+
+ bool string_based (false);
+ {
+ IsStringBasedType t (string_based);
+ t.dispatch (e);
+ }
+
+ SemanticGraph::Enumeration* be (0);
+ bool enum_based (false);
+ if (string_based)
+ {
+ IsEnumBasedType t (be);
+ t.dispatch (e);
+
+ enum_based = (be != 0);
+ }
+
+ String value;
+ if (string_based)
+ value = evalue (e);
+
+ size_t enum_count (0);
+
+ for (Type::NamesIterator i (e.names_begin ()), end (e.names_end ());
+ i != end; ++i)
+ ++enum_count;
+
+ String base; // base type name
+ {
+ std::wostringstream o;
+
+ BaseTypeName base_type (*this, o);
+ Traversal::Inherits inherits_type (base_type);
+
+ inherits (e, inherits_type);
+ base = o.str ();
+ }
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ if (!options.suppress_parsing ())
+ {
+ // c-tor (xercesc::DOMElement)
+ //
+ os << name << "::" << endl
+ << name << " (const " << xerces_ns << "::DOMElement& e," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (e, f, c)"
+ << "{";
+
+ if (string_based)
+ os << "_xsd_" << name << "_convert ();";
+
+ os << "}";
+
+
+ // c-tor (xercesc::DOMAttr)
+ //
+ os << name << "::" << endl
+ << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (a, f, c)"
+ << "{";
+
+ if (string_based)
+ {
+ os << "_xsd_" << name << "_convert ();";
+ }
+
+ os << "}";
+
+
+ // c-tor (string const&, xercesc::DOMElement)
+ //
+ os << name << "::" << endl
+ << name << " (const " << string_type << "& s," << endl
+ << "const " << xerces_ns << "::DOMElement* e," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (s, e, f, c)"
+ << "{";
+
+ if (string_based)
+ {
+ os << "_xsd_" << name << "_convert ();";
+ }
+
+ os << "}";
+ }
+
+ // _clone
+ //
+ os << name << "* " << name << "::" << endl
+ << "_clone (" << flags_type << " f," << endl
+ << container << "* c) const"
+ << "{"
+ << "return new class " << name << " (*this, f, c);"
+ << "}";
+
+ // convert
+ //
+ // @@ TODO: expected list
+ //
+ if (string_based)
+ {
+ String i_name (L"_xsd_" + name + L"_indexes_");
+
+ os << name << "::" << value << " " <<
+ name << "::" << endl
+ << "_xsd_" << name << "_convert () const"
+ << "{"
+ << "::xsd::cxx::tree::enum_comparator< " << char_type <<
+ " > c (_xsd_" << name << "_literals_);"
+ << "const " << value << "* i (::std::lower_bound (" << endl
+ << i_name << "," << endl
+ << i_name << " + " << enum_count << "," << endl
+ << "*this," << endl
+ << "c));"
+ << endl
+ << "if (i == " << i_name << " + " << enum_count << " || " <<
+ "_xsd_" << name << "_literals_[*i] != *this)"
+ << "{"
+ << "throw ::xsd::cxx::tree::unexpected_enumerator < " <<
+ char_type << " > (*this);"
+ << "}"
+ << "return *i;"
+ << "}";
+ }
+
+ // literals and indexes
+ //
+ if (string_based)
+ {
+ if (enum_based)
+ {
+ os << "const " << char_type << "* const* " << name << "::" << endl
+ << "_xsd_" << name << "_literals_ = " <<
+ fq_name (*be) << "::_xsd_" << ename (*be) << "_literals_;"
+ << endl;
+ }
+ else
+ {
+ os << "const " << char_type << "* const " << name << "::" << endl
+ << "_xsd_" << name << "_literals_[" << enum_count << "] ="
+ << "{";
+
+ names<Enumeration> (
+ e, names_enumerator_literal_, 0, 0, 0, &Enumeration::comma);
+
+ os << "};";
+ }
+
+
+ LiteralInfoList l;
+ {
+ EnumeratorLiteralInfo enumerator (*this, l);
+ Traversal::Names names_enumerator (enumerator);
+ names (e, names_enumerator);
+ }
+
+ l.sort ();
+
+ os << "const " << name << "::" << value << " " <<
+ name << "::" << endl
+ << "_xsd_" << name << "_indexes_[" << enum_count << "] ="
+ << "{";
+
+ String fq_name (ns_scope + L"::" + name);
+
+ for (LiteralInfoList::iterator
+ b (l.begin ()), i (b), end (l.end ()); i != end; ++i)
+ {
+ if (i != b)
+ os << "," << endl;
+
+ os << fq_name << "::" << i->name_;
+ }
+
+ os << "};";
+ }
+
+ // Register with type factory map.
+ //
+ if (polymorphic && polymorphic_p (e))
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (e));
+
+ // If this type is anonymous but substitutes, then it will
+ // be registered as part of the substitution registration.
+ //
+ if (!anonymous_p (e) && !options.suppress_parsing ())
+ {
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::type_factory_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_type_factory_init (" << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (xml_ns_name (e)) << ");"
+ << endl;
+ }
+
+ if ((!anonymous_p (e) || anonymous_substitutes_p (e)) &&
+ options.generate_comparison ())
+ {
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::comparison_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_comparison_init;"
+ << endl;
+ }
+ }
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ os << "," << endl;
+ }
+
+ private:
+ Traversal::Names names_enumerator_literal_;
+ EnumeratorLiteral enumerator_literal_;
+
+ };
+
+ //
+ //
+ struct Member: Traversal::Member, Context
+ {
+ Member (Context& c, String const& scope)
+ : Context (c), scope_ (scope), init_value_ (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ // default_value
+ //
+ if (m.default_p ())
+ {
+ SemanticGraph::Type& t (m.type ());
+ bool simple (true);
+
+ if (m.is_a<SemanticGraph::Element> ())
+ {
+ IsSimpleType test (simple);
+ test.dispatch (t);
+ }
+
+ if (simple)
+ {
+ bool lit (false);
+ {
+ IsLiteralValue test (lit);
+ test.dispatch (t);
+ }
+
+ if (!lit)
+ {
+ InitKind::Kind kind (InitKind::simple);
+ {
+ InitKind test (kind);
+ test.dispatch (t);
+ }
+
+ String const& member (edefault_value_member (m));
+
+ String init_name;
+
+ switch (kind)
+ {
+ case InitKind::data:
+ {
+ init_name = escape (L"_xsd_" + scope_ + member + L"data");
+ init_value_.data (init_name);
+ init_value_.dispatch (t, m.value ());
+ break;
+ }
+ case InitKind::function:
+ {
+ init_name = escape (L"_xsd_" + scope_ + member + L"init");
+
+ os << "static " << scope_ << "::" << etype (m) << endl
+ << init_name << " ()"
+ << "{"
+ << scope_ << "::" << etype (m) << " r;"
+ << endl;
+
+ init_value_.dispatch (t, m.value ());
+
+ os << "return r;"
+ << "};";
+ break;
+ }
+ case InitKind::simple:
+ break;
+ }
+
+ os << "const " << scope_ << "::" << etype (m) << " " <<
+ scope_ << "::" << member << " (" << endl;
+
+ switch (kind)
+ {
+ case InitKind::data:
+ {
+ // Second dispatch.
+ //
+ init_value_.dispatch (t, m.value ());
+ break;
+ }
+ case InitKind::function:
+ {
+ os << init_name << " ()";
+ break;
+ }
+ case InitKind::simple:
+ {
+ init_value_.dispatch (t, m.value ());
+ break;
+ }
+ }
+
+ os << ");"
+ << endl;
+ }
+ }
+ }
+ }
+
+ private:
+ String scope_;
+ InitValue init_value_;
+ };
+
+
+ struct Element: Traversal::Element, Context
+ {
+ Element (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (skip (e))
+ return;
+
+ SemanticGraph::Complex& c (
+ dynamic_cast<SemanticGraph::Complex&> (e.scope ()));
+
+ String const& member (emember (e));
+
+ String tr (etraits (e)); // traits type name
+ String type (etype (e));
+
+ SemanticGraph::Type& t (e.type ());
+
+ bool fund (false);
+ {
+ IsFundamentalType traverser (fund);
+ traverser.dispatch (t);
+ }
+
+ // Check if we need to handle xsi:type and substitution groups.
+ // If this element's type is anonymous then we don't need to do
+ // anything. Note that if the type is anonymous then it can't be
+ // derived from which makes it impossible to substitute or
+ // dynamically-type with xsi:type.
+ //
+ bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
+
+ os << "// " << comment (e.name ()) << endl
+ << "//" << endl;
+
+ if (poly)
+ {
+ os << "{"
+ << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
+ << "::xsd::cxx::tree::type_factory_map_instance< " <<
+ poly_plate << ", " << char_type << " > ().create (" << endl
+ << strlit (e.name ()) << "," << endl
+ << (e.qualified_p ()
+ ? strlit (e.namespace_ ().name ())
+ : L + String ("\"\"")) << "," << endl;
+
+ SemanticGraph::Complex* tc;
+ if ((tc = dynamic_cast<SemanticGraph::Complex*> (&t)) != 0 &&
+ tc->abstract_p ())
+ os << "0,";
+ else
+ os << "&::xsd::cxx::tree::factory_impl< " << type << " >,";
+
+ os << endl
+ << (e.global_p () ? "true" : "false") << ", " <<
+ (e.qualified_p () ? "true" : "false") << ", " <<
+ "i, n, f, this));"
+ << endl
+ << "if (tmp.get () != 0)"
+ << "{";
+ }
+ else
+ {
+ if (e.qualified_p () && e.namespace_ ().name ())
+ {
+ os << "if (n.name () == " << strlit (e.name ()) << " && " <<
+ "n.namespace_ () == " << strlit (e.namespace_ ().name ()) << ")"
+ << "{";
+ }
+ else
+ {
+ os << "if (n.name () == " << strlit (e.name ()) << " && " <<
+ "n.namespace_ ().empty ())"
+ << "{";
+ }
+
+ if (!fund)
+ {
+ os << auto_ptr << "< " << type << " > r (" << endl
+ << tr << "::create (i, f";
+
+ if (t.is_a<SemanticGraph::AnyType> () &&
+ options.generate_any_type ())
+ os << " | " << flags_type << "::extract_content";
+
+ os << ", this));"
+ << endl;
+ }
+ }
+
+
+ // Checks. Disabled at the moment since they make it impossible to
+ // parse valid instances where the same element is used in both
+ // base and derived types. See the cxx/tree/name-clash/inheritance
+ // test for details.
+ //
+ //
+ if (max (e) != 1)
+ {
+ // sequence
+ //
+ }
+ else if (min (e) == 0)
+ {
+ // optional
+ //
+ os << "if (!this->" << member << ")"
+ << "{";
+ }
+ else
+ {
+ // one
+ //
+ os << "if (!" << member << ".present ())"
+ << "{";
+ }
+
+
+ if (poly || !fund)
+ {
+ if (poly)
+ {
+ // Cast to static type.
+ //
+ os << auto_ptr << "< " << type << " > r (" << endl
+ << "dynamic_cast< " << type << "* > (tmp.get ()));"
+ << endl
+ << "if (r.get ())" << endl
+ << "tmp.release ();"
+ << "else" << endl
+ << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
+ " > ();"
+ << endl;
+ }
+
+ char const* r (std >= cxx_version::cxx11 ? "::std::move (r)" : "r");
+
+ if (max (e) != 1)
+ {
+ // sequence
+ //
+ os << "this->" << member << ".push_back (" << r << ");";
+ }
+ else if (min (e) == 0)
+ {
+ // optional
+ //
+ os << "this->" << member << ".set (" << r << ");";
+ }
+ else
+ {
+ // one
+ //
+ os << "this->" << member << ".set (" << r << ");";
+ }
+ }
+ else
+ {
+ if (max (e) != 1)
+ {
+ // sequence
+ //
+ os << "this->" << member << ".push_back (" << tr <<
+ "::create (i, f, this));";
+ }
+ else if (min (e) == 0)
+ {
+ // optional
+ //
+ os << "this->" << member << ".set (" << tr <<
+ "::create (i, f, this));";
+ }
+ else
+ {
+ // one
+ //
+ os << "this->" << member << ".set (" << tr <<
+ "::create (i, f, this));";
+ }
+ }
+
+ // Capture order.
+ //
+ if (ordered_p (c))
+ {
+ SemanticGraph::Context& ctx (c.context ());
+
+ String const& t (ctx.get<String> ("order-type"));
+ String const& m (ctx.get<String> ("order-member"));
+
+ os << "this->" << m << ".push_back (" << endl
+ << t << " (" <<
+ e.context ().get<String> ("ordered-id-name");
+
+ // sequence
+ //
+ if (max (e) != 1)
+ os << ", " << "this->" << member << ".size () - 1";
+
+ os << "));";
+ }
+
+ os << "continue;";
+
+ // End of check block.
+ //
+ if (max (e) != 1)
+ {
+ // sequence
+ //
+ }
+ else if (min (e) == 0)
+ {
+ // optional
+ //
+ os << "}";
+ }
+ else
+ {
+ // one
+ //
+ os << "}";
+ }
+
+ os << "}"; // if block
+
+ if (poly)
+ os << "}";
+ }
+ };
+
+ struct ElementTest: Traversal::Element, Context
+ {
+ ElementTest (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ if (skip (e))
+ return;
+
+ if (max (e) == 1 && min (e) == 1)
+ {
+ // one
+ //
+ os << "if (!" << emember (e) << ".present ())"
+ << "{"
+ << "throw ::xsd::cxx::tree::expected_element< " <<
+ char_type << " > (" << endl
+ << strlit (e.name ()) << "," << endl
+ << (e.qualified_p ()
+ ? strlit (e.namespace_ ().name ())
+ : L + String ("\"\"")) << ");"
+ << "}";
+ }
+ }
+ };
+
+ struct Any: Traversal::Any, Context
+ {
+ Any (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& member (emember (a));
+
+ SemanticGraph::Complex& c (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ()));
+
+ String const& ns (a.definition_namespace ().name ());
+ String const& dom_doc (edom_document (c));
+
+ os << "// " << ename (a) << endl
+ << "//" << endl
+ << "if (";
+
+ for (SemanticGraph::Any::NamespaceIterator i (a.namespace_begin ()),
+ e (a.namespace_end ()); i != e;)
+ {
+ if (*i == L"##any")
+ {
+ os << "true";
+ }
+ else if (*i == L"##other")
+ {
+ if (ns)
+ {
+ // Note that here I assume that ##other does not include
+ // unqualified names in a schema with target namespace.
+ // This is not what the spec says but that seems to be
+ // the consensus.
+ //
+ os << "(!n.namespace_ ().empty () && " <<
+ "n.namespace_ () != " << strlit (ns) << ")";
+ }
+ else
+ os << "!n.namespace_ ().empty ()";
+ }
+ else if (*i == L"##local")
+ {
+ os << "n.namespace_ ().empty ()";
+ }
+ else if (*i == L"##targetNamespace")
+ {
+ os << "n.namespace_ () == " << strlit (ns);
+ }
+ else
+ {
+ os << "n.namespace_ () == " << strlit (*i);
+ }
+
+ if (++i != e)
+ os << " ||" << endl;
+ }
+
+ os << ")"
+ << "{";
+
+
+ // Checks.
+ //
+ //
+ if (max (a) != 1)
+ {
+ // sequence
+ //
+ }
+ else if (min (a) == 0)
+ {
+ // optional
+ //
+ os << "if (!this->" << member << ")"
+ << "{";
+ }
+ else
+ {
+ // one
+ //
+ os << "if (!" << member << ".present ())"
+ << "{";
+ }
+
+ os << xerces_ns << "::DOMElement* r (" << endl
+ << "static_cast< " << xerces_ns << "::DOMElement* > (" << endl
+ << "this->" << dom_doc << " ().importNode (" << endl
+ << "const_cast< " << xerces_ns << "::DOMElement* > (&i), true)));";
+
+ if (max (a) != 1)
+ {
+ // sequence
+ //
+ os << "this->" << member << ".push_back (r);";
+ }
+ else if (min (a) == 0)
+ {
+ // optional
+ //
+ os << "this->" << member << ".set (r);";
+ }
+ else
+ {
+ // one
+ //
+ os << "this->" << member << ".set (r);";
+ }
+
+ // Capture order.
+ //
+ if (ordered_p (c))
+ {
+ SemanticGraph::Context& ctx (c.context ());
+
+ String const& t (ctx.get<String> ("order-type"));
+ String const& m (ctx.get<String> ("order-member"));
+
+ os << "this->" << m << ".push_back (" << endl
+ << t << " (" <<
+ a.context ().get<String> ("ordered-id-name") << ", ";
+
+ if (max (a) != 1)
+ // sequence
+ //
+ os << "this->" << member << ".size () - 1";
+ else
+ // optional & one
+ //
+ os << "0";
+
+ os << "));";
+ }
+
+ os << "continue;";
+
+ // End of check block.
+ //
+ if (max (a) != 1)
+ {
+ // sequence
+ //
+ }
+ else if (min (a) == 0)
+ {
+ // optional
+ //
+ os << "}";
+ }
+ else
+ {
+ // one
+ //
+ os << "}";
+ }
+
+ os << "}"; // if block
+ }
+ };
+
+ struct AnyTest: Traversal::Any, Context
+ {
+ AnyTest (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ if (max (a) == 1 && min (a) == 1)
+ {
+ // one
+ //
+ os << "if (!" << emember (a) << ".present ())"
+ << "{"
+ << "throw ::xsd::cxx::tree::expected_element< " <<
+ char_type << " > (" << endl
+ << L << "\"*\"," << endl
+ << strlit (*a.namespace_begin ()) << ");"
+ << "}";
+ }
+ }
+ };
+
+ struct Attribute: Traversal::Attribute, Context
+ {
+ Attribute (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& member (emember (a));
+
+ String const& tr (etraits (a)); // traits type name
+
+ if (a.qualified_p () && a.namespace_ ().name ())
+ {
+ os << "if (n.name () == " << strlit (a.name ()) << " && " <<
+ "n.namespace_ () == " << strlit (a.namespace_ ().name ()) << ")"
+ << "{";
+ }
+ else
+ {
+ os << "if (n.name () == " << strlit (a.name ()) << " && " <<
+ "n.namespace_ ().empty ())"
+ << "{";
+ }
+
+ os << "this->" << member << ".set (" << tr <<
+ "::create (i, f, this));";
+
+ os << "continue;"
+ << "}";
+
+ }
+ };
+
+ struct AnyAttribute: Traversal::AnyAttribute, Context
+ {
+ AnyAttribute (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& member (emember (a));
+
+ String const& ns (a.definition_namespace ().name ());
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ os << "// " << ename (a) << endl
+ << "//" << endl
+ << "if (";
+
+ // Note that we need to filter out namespaces for xmlns and
+ // xsi.
+ //
+ for (SemanticGraph::Any::NamespaceIterator i (a.namespace_begin ()),
+ e (a.namespace_end ()); i != e;)
+ {
+ if (*i == L"##any")
+ {
+ os << "(n.namespace_ () != " <<
+ "::xsd::cxx::xml::bits::xmlns_namespace< " << char_type <<
+ " > () &&" << endl
+ << "n.namespace_ () != " <<
+ "::xsd::cxx::xml::bits::xsi_namespace< " << char_type <<
+ " > ())";
+ }
+ else if (*i == L"##other")
+ {
+ if (ns)
+ {
+ // Note that here I assume that ##other does not include
+ // unqualified names in a schema with target namespace.
+ // This is not what the spec says but that seems to be
+ // the consensus.
+ //
+ os << "(!n.namespace_ ().empty () &&" << endl
+ << "n.namespace_ () != " << strlit (ns) << " &&" <<endl
+ << "n.namespace_ () != " <<
+ "::xsd::cxx::xml::bits::xmlns_namespace< " << char_type <<
+ " > () &&" << endl
+ << "n.namespace_ () != " <<
+ "::xsd::cxx::xml::bits::xsi_namespace< " << char_type <<
+ " > ())";
+ }
+ else
+ os << "(!n.namespace_ ().empty () &&" << endl
+ << "n.namespace_ () != " <<
+ "::xsd::cxx::xml::bits::xmlns_namespace< " << char_type <<
+ " > () &&" << endl
+ << "n.namespace_ () != " <<
+ "::xsd::cxx::xml::bits::xsi_namespace< " << char_type <<
+ " > ())";
+ }
+ else if (*i == L"##local")
+ {
+ os << "n.namespace_ ().empty ()";
+ }
+ else if (*i == L"##targetNamespace")
+ {
+ os << "n.namespace_ () == " << strlit (ns);
+ }
+ else
+ {
+ os << "n.namespace_ () == " << strlit (*i);
+ }
+
+ if (++i != e)
+ os << " ||" << endl;
+ }
+
+ os << ")"
+ << "{"
+ << xerces_ns << "::DOMAttr* r (" << endl
+ << "static_cast< " << xerces_ns << "::DOMAttr* > (" << endl
+ << "this->" << dom_doc << " ().importNode (" << endl
+ << "const_cast< " << xerces_ns << "::DOMAttr* > (&i), true)));"
+ << "this->" << member << " .insert (r);"
+ << "continue;"
+ << "}";
+ }
+ };
+
+
+ struct AttributeTest: Traversal::Attribute, Context
+ {
+ AttributeTest (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& a)
+ {
+ String const& member (emember (a));
+
+ if (!a.optional_p () || a.default_p ())
+ {
+ os << "if (!" << member << ".present ())"
+ << "{";
+
+ if (a.default_p ())
+ {
+ os << "this->" << member << ".set (" <<
+ edefault_value (a) << " ());";
+ }
+ else
+ os << "throw ::xsd::cxx::tree::expected_attribute< " <<
+ char_type << " > (" << endl
+ << strlit (a.name ()) << "," << endl
+ << (a.qualified_p ()
+ ? strlit (a.namespace_ ().name ())
+ : L + String ("\"\"")) << ");";
+
+ os << "}";
+ }
+ }
+ };
+
+
+ //
+ //
+ struct CtorBase: Traversal::Complex,
+ Traversal::Enumeration,
+ Traversal::Type,
+ Context
+ {
+ // If base_arg is empty then no base argument is generated.
+ //
+ CtorBase (Context& c, CtorArgType at, String const& base_arg)
+ : Context (c), args_ (c, at, base_arg)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type&)
+ {
+ if (args_.base_arg_)
+ os << args_.base_arg_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Enumeration&)
+ {
+ if (args_.base_arg_)
+ os << args_.base_arg_;
+ }
+
+ void
+ traverse (SemanticGraph::Complex& c)
+ {
+ args_.traverse (c);
+ }
+
+ private:
+ // No need to traverse AnyAttribute since it is always mapped
+ // to a sequence.
+ //
+ struct Args: Traversal::Complex,
+ Traversal::Enumeration,
+ Traversal::Type,
+ Traversal::Any,
+ Traversal::Element,
+ Traversal::Attribute,
+ Context
+ {
+ Args (Context& c, CtorArgType at, String const& base_arg)
+ : Context (c),
+ arg_type_ (at), base_arg_ (base_arg), first_ (true)
+ {
+ *this >> inherits_ >> *this;
+ *this >> names_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type&)
+ {
+ if (base_arg_)
+ os << comma () << base_arg_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Enumeration&)
+ {
+ if (base_arg_)
+ os << comma () << base_arg_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ if (!options.generate_wildcard ())
+ return;
+
+ if (min (a) == 1 && max (a) == 1)
+ {
+ // one
+ //
+ os << comma () << ename (a);
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (!skip (e) && min (e) == 1 && max (e) == 1)
+ {
+ // one
+ //
+ bool move (false);
+
+ if (std >= cxx_version::cxx11)
+ {
+ switch (arg_type_)
+ {
+ case CtorArgType::complex_auto_ptr:
+ {
+ bool simple (true);
+ IsSimpleType t (simple);
+ t.dispatch (e.type ());
+ move = !simple;
+ break;
+ }
+ case CtorArgType::poly_auto_ptr:
+ {
+ move = polymorphic && polymorphic_p (e.type ());
+ break;
+ }
+ case CtorArgType::type:
+ break;
+ }
+ }
+
+ os << comma () << (move ? "std::move (" : "") << ename (e) <<
+ (move ? ")" : "");
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Attribute& a)
+ {
+ // Note that we are not including attributes with default
+ // or required fixed values here.
+ //
+ if (min (a) == 1 && !a.fixed_p ())
+ {
+ // one
+ //
+ os << comma () << ename (a);
+ }
+ }
+
+ using Complex::traverse;
+
+ private:
+ String
+ comma ()
+ {
+ bool tmp (first_);
+ first_ = false;
+ return tmp ? "" : ",\n";
+ }
+
+ public:
+ CtorArgType arg_type_;
+ String base_arg_;
+
+ private:
+ bool first_;
+
+ Traversal::Inherits inherits_;
+ Traversal::Names names_;
+ };
+
+ Args args_;
+ };
+
+
+ struct CtorMember: Traversal::Element,
+ Traversal::Attribute,
+ Context
+ {
+ CtorMember (Context& c, CtorArgType at)
+ : Context (c), arg_type_ (at)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (skip (e))
+ return;
+
+ String const& member (emember (e));
+
+ if (max (e) != 1)
+ {
+ // sequence
+ //
+ os << "," << endl
+ << " " << member << " (this)";
+ }
+ else if (min (e) == 0)
+ {
+ // optional
+ //
+ os << "," << endl
+ << " " << member << " (this)";
+ }
+ else
+ {
+ // one
+ //
+ bool move (false);
+
+ if (std >= cxx_version::cxx11)
+ {
+ switch (arg_type_)
+ {
+ case CtorArgType::complex_auto_ptr:
+ {
+ bool simple (true);
+ IsSimpleType t (simple);
+ t.dispatch (e.type ());
+ move = !simple;
+ break;
+ }
+ case CtorArgType::poly_auto_ptr:
+ {
+ move = polymorphic && polymorphic_p (e.type ());
+ break;
+ }
+ case CtorArgType::type:
+ break;
+ }
+ }
+
+ os << "," << endl
+ << " " << member << " (" << (move ? "std::move (" : "") <<
+ ename (e) << (move ? ")" : "") << ", this)";
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Attribute& a)
+ {
+ String const& member (emember (a));
+
+ bool def (a.default_p ());
+
+ if (min (a) == 0 && !def)
+ {
+ // optional
+ //
+ os << "," << endl
+ << " " << member << " (this)";
+ }
+ else
+ {
+ // one
+ //
+
+ if (def)
+ {
+ // This is an attribute with default or fixed value. We are
+ // going to initialize it to its default value.
+ //
+ os << "," << endl
+ << " " << member << " (" <<
+ edefault_value (a) << " (), this)";
+ }
+ else
+ {
+ os << "," << endl
+ << " " << member << " (" << ename (a) << ", this)";
+ }
+ }
+ }
+
+ private:
+ CtorArgType arg_type_;
+ };
+
+ struct CtorAny: Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ CtorAny (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& member (emember (a));
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ if (max (a) != 1)
+ {
+ // sequence
+ //
+ os << "," << endl
+ << " " << member << " (this->" << dom_doc << " ())";
+ }
+ else if (min (a) == 0)
+ {
+ // optional
+ //
+ os << "," << endl
+ << " " << member << " (this->" << dom_doc << " ())";
+ }
+ else
+ {
+ // one
+ //
+ os << "," << endl
+ << " " << member << " (" << ename (a) << ", this->" <<
+ dom_doc << " ())";
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ os << "," << endl
+ << " " << emember (a) << " (this->" << dom_doc << " ())";
+ }
+ };
+
+
+ struct CopyMember: Traversal::Member, Context
+ {
+ CopyMember (Context& c, String const& arg_name_)
+ : Context (c), arg_name (arg_name_)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Member& m)
+ {
+ if (skip (m))
+ return;
+
+ String const& member (emember (m));
+
+ os << "," << endl
+ << " " << member << " (" <<
+ arg_name << "." << member << ", f, this)";
+ }
+
+ private:
+ String arg_name;
+ };
+
+ struct CopyAny: Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ CopyAny (Context& c, String const& arg_name_)
+ : Context (c), arg_name (arg_name_)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& member (emember (a));
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ os << "," << endl
+ << " " << member << " (" <<
+ arg_name << "." << member << ", this->" << dom_doc << " ())";
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& member (emember (a));
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ os << "," << endl
+ << " " << member << " (" <<
+ arg_name << "." << member << ", this->" << dom_doc << " ())";
+ }
+
+ private:
+ String arg_name;
+ };
+
+ struct AssignMember: Traversal::Member, Context
+ {
+ AssignMember (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Member& m)
+ {
+ if (skip (m))
+ return;
+
+ String const& member (emember (m));
+ os << "this->" << member << " = x." << member << ";";
+ }
+ };
+
+ struct AssignAny: Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ AssignAny (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& member (emember (a));
+ os << "this->" << member << " = x." << member << ";";
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& member (emember (a));
+ os << "this->" << member << " = x." << member << ";";
+ }
+ };
+
+
+ // Element parsing c-tor initializers.
+ //
+ struct ElementCtorMember: Traversal::Member, Context
+ {
+ ElementCtorMember (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (skip (m))
+ return;
+
+ String const& member (emember (m));
+
+ os << "," << endl
+ << " " << member << " (this)";
+ }
+ };
+
+ struct ElementCtorAny: Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ ElementCtorAny (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& member (emember (a));
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ os << "," << endl
+ << " " << member << " (this->" << dom_doc << " ())";
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& member (emember (a));
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ os << "," << endl
+ << " " << member << " (this->" << dom_doc << " ())";
+ }
+ };
+
+
+ // Default c-tor member initializer.
+ //
+ struct DefaultCtorMemberInit: Traversal::Element,
+ Traversal::Attribute,
+ Context
+ {
+ DefaultCtorMemberInit (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (skip (e))
+ return;
+
+ String const& member (emember (e));
+
+ os << "," << endl
+ << " " << member << " (this)";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Attribute& a)
+ {
+ String const& member (emember (a));
+
+ if (a.default_p ())
+ {
+ // This is an attribute with default or fixed value. We are
+ // going to initialize it to its default value.
+ //
+ os << "," << endl
+ << " " << member << " (" <<
+ edefault_value (a) << " (), this)";
+ }
+ else
+ os << "," << endl
+ << " " << member << " (this)";
+ }
+ };
+
+ struct DefaultCtorAnyInit: Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ DefaultCtorAnyInit (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& member (emember (a));
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ os << "," << endl
+ << " " << member << " (this->" << dom_doc << " ())";
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& member (emember (a));
+ String const& dom_doc (
+ edom_document (
+ dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
+
+ os << "," << endl
+ << " " << member << " (this->" << dom_doc << " ())";
+ }
+ };
+
+ // Test whether the base has comparison operators.
+ //
+ struct HasComparisonOperator: Traversal::Fundamental::Type,
+ Traversal::List,
+ Traversal::Union,
+ Traversal::Complex,
+ Traversal::Enumeration,
+ Traversal::Member,
+ Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ // generate should initially be false.
+ //
+ HasComparisonOperator (Context& c, bool& generate)
+ : Context (c), generate_ (generate)
+ {
+ *this >> inherits_ >> *this;
+ *this >> names_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Fundamental::Type&)
+ {
+ // All built-in types are comparable.
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::List&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Union&)
+ {
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Enumeration& e)
+ {
+ Traversal::Enumeration::inherits (e);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ Complex::names (c);
+
+ if (!generate_)
+ Complex::inherits (c);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Member& m)
+ {
+ if (!skip (m))
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any&)
+ {
+ if (options.generate_wildcard ())
+ generate_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute&)
+ {
+ if (options.generate_wildcard ())
+ generate_ = true;
+ }
+
+ private:
+ bool& generate_;
+
+ Traversal::Inherits inherits_;
+ Traversal::Names names_;
+ };
+
+ //
+ //
+ struct MemberComparison: Traversal::Element,
+ Traversal::Attribute,
+ Context
+ {
+ MemberComparison (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (skip (e))
+ return;
+
+ String const& aname (eaname (e));
+
+ // Check if we need to handle xsi:type and substitution groups.
+ // If this element's type is anonymous then we don't need to do
+ // anything. Note that if the type is anonymous then it can't be
+ // derived from which makes it impossible to substitute or
+ // dynamically-type with xsi:type.
+ //
+ SemanticGraph::Type& t (e.type ());
+ bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
+
+ if (!poly)
+ {
+ os << "if (!(x." << aname << " () == y." << aname << " ()))" << endl
+ << "return false;"
+ << endl;
+ }
+ else
+ {
+ os << "{"
+ << "::xsd::cxx::tree::comparison_map< " << char_type
+ << " >& cm (" << endl
+ << "::xsd::cxx::tree::comparison_map_instance< " <<
+ poly_plate << ", " << char_type << " > ());"
+ << endl;
+
+ if (max (e) != 1)
+ {
+ // sequence
+ //
+ String const& scope (ename (e.scope ()));
+
+ os << scope << "::" << econtainer (e) <<
+ " a (x." << aname << " ()), b (y." << aname << " ());"
+ << endl;
+
+ os << "if (a.size () != b.size ())" << endl
+ << "return false;"
+ << endl;
+
+ os << "for (" << scope << "::" << econst_iterator (e) << endl
+ << "ai (a.begin ()), bi (b.begin ()), " <<
+ "ae (a.end ()), be (b.end ());" << endl
+ << "ai != ae; ++ai, ++bi)"
+ << "{"
+ << "if (!cm.compare (*ai, *bi))" << endl
+ << "return false;"
+ << "}";
+ }
+ else if (min (e) == 0)
+ {
+ // optional
+ //
+ String const& scope (ename (e.scope ()));
+
+ os << scope << "::" << econtainer (e) <<
+ " a (x." << aname << " ()), b (y." << aname << " ());"
+ << endl;
+
+ os << "if (!a || !b)"
+ << "{"
+ << "if (a.present () != b.present ())" << endl
+ << "return false;"
+ << "}"
+ << "else"
+ << "{"
+ << "if (!cm.compare (*a, *b))" << endl
+ << "return false;"
+ << "}";
+ }
+ else
+ {
+ // one
+ //
+ os << "if (!cm.compare (x." << aname << " (), y." <<
+ aname << " ()))" << endl
+ << "return false;";
+ }
+
+ os << "}";
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Attribute& a)
+ {
+ String const& aname (eaname (a));
+
+ os << "if (!(x." << aname << " () == y." << aname << " ()))" << endl
+ << "return false;"
+ << endl;
+ }
+ };
+
+ struct AnyComparison: Traversal::Any,
+ Traversal::AnyAttribute,
+ Context
+ {
+ AnyComparison (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ String const& aname (eaname (a));
+
+ if (max (a) == 1 && min (a) == 1)
+ os << "if (!x." << aname << " ().isEqualNode (&y." <<
+ aname << " ()))";
+ else
+ os << "if (!(x." << aname << " () == y." << aname << " ()))";
+
+ os << endl
+ << "return false;"
+ << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute& a)
+ {
+ String const& aname (eaname (a));
+
+ os << "if (!(x." << aname << " () == y." << aname << " ()))" << endl
+ << "return false;"
+ << endl;
+ }
+ };
+
+ // Check whether a type has a parse() function (i.e., has any
+ // members, recursively).
+ //
+ struct HasParseFunction: Traversal::Complex,
+ Traversal::Element,
+ Traversal::Any,
+ Traversal::Attribute,
+ Traversal::AnyAttribute,
+ Context
+ {
+ HasParseFunction (Context& c, bool& has_el, bool& has_at)
+ : Context (c), has_el_ (has_el), has_at_ (has_at)
+ {
+ *this >> names_ >> *this;
+ *this >> inherits_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ if (mixed_p (c) && !c.context ().count ("mixed-in-base"))
+ has_el_ = true;
+
+ names (c);
+
+ if (!(has_el_ && has_at_))
+ inherits (c);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element&)
+ {
+ has_el_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any&)
+ {
+ has_el_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Attribute&)
+ {
+ has_at_ = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::AnyAttribute&)
+ {
+ if (options.generate_wildcard ())
+ has_at_ = true;
+ }
+
+ private:
+ bool& has_el_;
+ bool& has_at_;
+
+ Traversal::Names names_;
+ Traversal::Inherits inherits_;
+ };
+
+ //
+ //
+ struct FacetArray: Traversal::Complex, Context
+ {
+ FacetArray (Context& c)
+ : Context (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ Facets f;
+ FacetCollector col (f);
+ col.traverse (c);
+
+ for (Facets::const_iterator i (f.begin ()); i != f.end (); ++i)
+ {
+ if (i->first == L"fractionDigits")
+ os << "{::xsd::cxx::tree::facet::fraction_digits, " <<
+ i->second << "UL}," << endl;
+ else if (i->first == L"totalDigits")
+ os << "{::xsd::cxx::tree::facet::total_digits, " <<
+ i->second << "UL}," << endl;
+ }
+ }
+
+ private:
+ typedef map<String, String> Facets;
+
+ struct FacetCollector: Traversal::Complex
+ {
+ FacetCollector (Facets& facets)
+ : facets_ (facets)
+ {
+ *this >> inherits_ >> *this;
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ if (c.inherits_p ())
+ {
+ // First collect our base so that we can override its
+ // facets.
+ //
+ inherits (c);
+
+ using SemanticGraph::Restricts;
+
+ if (Restricts* r = dynamic_cast<Restricts*> (&c.inherits ()))
+ {
+ if (!r->facet_empty ())
+ {
+ Restricts::FacetIterator i (r->facet_find ("totalDigits"));
+
+ if (i != r->facet_end ())
+ facets_[i->first] = i->second;
+
+ i = r->facet_find ("fractionDigits");
+
+ if (i != r->facet_end ())
+ facets_[i->first] = i->second;
+ }
+ }
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_;
+ Facets& facets_;
+ };
+ };
+
+ //
+ //
+ struct Complex: Traversal::Complex, Context
+ {
+ Complex (Context& c)
+ : Context (c),
+ member_name_ (c),
+ any_ (c),
+ element_ (c),
+ any_test_ (c),
+ element_test_ (c),
+ attribute_ (c),
+ attribute_test_ (c),
+ any_attribute_ (c),
+ default_ctor_any_init_ (c),
+ default_ctor_member_init_ (c),
+ ctor_any_ (c),
+ ctor_member_ (c, CtorArgType::type),
+ element_ctor_any_ (c),
+ element_ctor_member_ (c),
+ assign_any_ (c),
+ assign_member_ (c),
+ comparison_any_ (c),
+ comparison_member_ (c),
+ facet_array_ (c)
+ {
+ bool gen_wildcard (options.generate_wildcard ());
+
+ inherits_member_ >> member_name_;
+
+ names_element_ >> element_;
+ if (gen_wildcard)
+ names_element_ >> any_;
+
+ names_element_test_ >> element_test_;
+ if (gen_wildcard)
+ names_element_test_ >> any_test_;
+
+ names_attribute_ >> attribute_;
+ names_attribute_test_ >> attribute_test_;
+ names_any_attribute_ >> any_attribute_;
+
+ default_ctor_init_names_ >> default_ctor_member_init_;
+ if (gen_wildcard)
+ default_ctor_init_names_ >> default_ctor_any_init_;
+
+ ctor_names_ >> ctor_member_;
+ if (gen_wildcard)
+ ctor_names_ >> ctor_any_;
+
+ element_ctor_names_ >> element_ctor_member_;
+ if (gen_wildcard)
+ element_ctor_names_ >> element_ctor_any_;
+
+ assign_names_ >> assign_member_;
+ if (gen_wildcard)
+ assign_names_ >> assign_any_;
+
+ comparison_names_ >> comparison_member_;
+ if (gen_wildcard)
+ comparison_names_ >> comparison_any_;
+ }
+
+
+ virtual void
+ traverse (Type& c)
+ {
+ bool gen_wildcard (options.generate_wildcard ());
+
+ String name (ename (c));
+
+ // If renamed name is empty then we do not need to generate
+ // anything for this type.
+ //
+ bool renamed (renamed_type (c, name));
+ if (renamed && !name)
+ return;
+
+ SemanticGraph::Context& ctx (c.context ());
+
+ bool mixed (mixed_p (c) && !ctx.count ("mixed-in-base"));
+ bool ordered (ordered_p (c) && !ctx.count ("order-in-base"));
+
+ bool string_based (false);
+ {
+ IsStringBasedType t (string_based);
+ t.dispatch (c);
+ }
+
+ SemanticGraph::Enumeration* enum_base (0);
+ {
+ IsEnumBasedType t (enum_base);
+ t.dispatch (c);
+ }
+
+ bool facets (false);
+ String base; // base type name
+ if (c.inherits_p ())
+ {
+ // Get base name.
+ //
+ std::wostringstream o;
+
+ BaseTypeName base_type (*this, o);
+ Traversal::Inherits inherits_type (base_type);
+
+ // Cannot use inherits_none here because need the
+ // result in a string.
+ //
+ inherits (c, inherits_type);
+
+ base = o.str ();
+
+ // See if we have any facets that we need to handle.
+ //
+ using SemanticGraph::Restricts;
+ using SemanticGraph::Fundamental::Decimal;
+
+ if (Restricts* r = dynamic_cast<Restricts*> (&c.inherits ()))
+ {
+ if (!r->facet_empty () &&
+ (r->facet_find ("fractionDigits") != r->facet_end () ||
+ r->facet_find ("totalDigits") != r->facet_end ()) &&
+ ultimate_base (c).is_a<Decimal> ())
+ facets = true;
+ }
+ }
+ else
+ base = any_type;
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ //
+ //
+ {
+ Member member (*this, name);
+ Traversal::Names names_member (member);
+ names (c, names_member);
+ }
+
+ // facets
+ //
+ if (facets)
+ {
+ os << "static const ::xsd::cxx::tree::facet _xsd_" << name <<
+ "_facet_table[] = "
+ << "{";
+
+ facet_array_.traverse (c);
+
+ os << "{::xsd::cxx::tree::facet::none, 0UL}"
+ << "};";
+ }
+
+ // c-tors
+ //
+ bool generate_no_base_ctor (false);
+ {
+ GenerateWithoutBaseCtor t (generate_no_base_ctor);
+ t.traverse (c);
+ }
+
+ bool has_complex_non_op_args (false);
+ bool has_poly_non_op_args (false);
+ bool complex_poly_args_clash (true);
+ {
+ HasComplexPolyNonOptArgs t (*this, true,
+ has_complex_non_op_args,
+ has_poly_non_op_args,
+ complex_poly_args_clash);
+ t.traverse (c);
+ }
+
+ // default c-tor
+ //
+ if (options.generate_default_ctor ())
+ {
+ bool generate (false);
+ {
+ GenerateDefaultCtor t (*this, generate, generate_no_base_ctor);
+ t.traverse (c);
+ }
+
+ if (generate)
+ {
+ os << name << "::" << endl
+ << name << " ()" << endl
+ << ": " << base << " ()";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ names (c, default_ctor_init_names_);
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+ }
+ }
+
+ // c-tor (base, all-non-optional-members)
+ //
+ if (options.generate_from_base_ctor ())
+ {
+ bool generate (false);
+ {
+ GenerateFromBaseCtor t (*this, generate);
+ t.traverse (c);
+ }
+
+ if (generate)
+ {
+ bool has_complex_non_op_args (false);
+ bool has_poly_non_op_args (false);
+ bool complex_poly_args_clash (true);
+ {
+ HasComplexPolyNonOptArgs t (*this, false,
+ has_complex_non_op_args,
+ has_poly_non_op_args,
+ complex_poly_args_clash);
+ t.traverse (c);
+ }
+
+ String base_arg (
+ L"_xsd_" + ename (c.inherits ().base ()) + L"_base");
+
+ os << name << "::" << endl
+ << name << " (const ";
+ inherits (c, inherits_member_);
+ os << "& " << base_arg;
+ {
+ FromBaseCtorArg args (*this, CtorArgType::type, true);
+ Traversal::Names args_names (args);
+ names (c, args_names);
+ }
+ os << ")" << endl
+ << ": " << base << " (" << base_arg << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ names (c, ctor_names_);
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+
+ // If we have any complex arguments in the previous c-tor
+ // then also generate the auto_ptr version.
+ //
+ if (has_complex_non_op_args)
+ {
+ CtorArgType const at (CtorArgType::complex_auto_ptr);
+
+ os << name << "::" << endl
+ << name << " (const ";
+ inherits (c, inherits_member_);
+ os << "& " << base_arg;
+ {
+ FromBaseCtorArg args (*this, at, true);
+ Traversal::Names args_names (args);
+ names (c, args_names);
+ }
+ os << ")" << endl
+ << ": " << base << " (" << base_arg << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ {
+ CtorMember t (*this, at);
+ Traversal::Names n (t);
+
+ if (gen_wildcard)
+ n >> ctor_any_;
+
+ names (c, n);
+ }
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+ }
+
+ // If we are generating polymorphic code then we also need to
+ // provide auto_ptr version for every polymorphic type.
+ //
+ if (polymorphic &&
+ has_poly_non_op_args && !complex_poly_args_clash)
+ {
+ CtorArgType const at (CtorArgType::poly_auto_ptr);
+
+ os << name << "::" << endl
+ << name << " (const ";
+ inherits (c, inherits_member_);
+ os << "& " << base_arg;
+ {
+ FromBaseCtorArg args (*this, at, true);
+ Traversal::Names args_names (args);
+ names (c, args_names);
+ }
+ os << ")" << endl
+ << ": " << base << " (" << base_arg << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ {
+ CtorMember t (*this, at);
+ Traversal::Names n (t);
+
+ if (gen_wildcard)
+ n >> ctor_any_;
+
+ names (c, n);
+ }
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+ }
+ }
+ }
+
+ // c-tor (all-non-optional-members)
+ //
+ if (generate_no_base_ctor)
+ {
+ CtorArgType const at (CtorArgType::type);
+
+ os << name << "::" << endl
+ << name << " (";
+ {
+ CtorArgsWithoutBase ctor_args (*this, at, true, true);
+ ctor_args.dispatch (c);
+ }
+ os << ")" << endl
+ << ": " << base << " (";
+ {
+ CtorBase base (*this, at, "");
+ Traversal::Inherits inherits_base (base);
+
+ inherits (c, inherits_base);
+ }
+ os << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ names (c, ctor_names_);
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+
+ // If we have any complex arguments in the previous c-tor
+ // then also generate the auto_ptr version. One case where
+ // this c-tor will be generated is restriction of anyType.
+ //
+ if (has_complex_non_op_args)
+ {
+ CtorArgType const at (CtorArgType::complex_auto_ptr);
+
+ os << name << "::" << endl
+ << name << " (";
+ {
+ CtorArgsWithoutBase ctor_args (*this, at, true, true);
+ ctor_args.dispatch (c);
+ }
+ os << ")" << endl
+ << ": " << base << " (";
+ {
+ CtorBase base (*this, at, "");
+ Traversal::Inherits inherits_base (base);
+
+ inherits (c, inherits_base);
+ }
+ os << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ {
+ CtorMember t (*this, at);
+ Traversal::Names n (t);
+
+ if (gen_wildcard)
+ n >> ctor_any_;
+
+ names (c, n);
+ }
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+ }
+
+ // If we are generating polymorphic code then we also need to
+ // provide auto_ptr version for every polymorphic type.
+ //
+ if (polymorphic &&
+ has_poly_non_op_args && !complex_poly_args_clash)
+ {
+ CtorArgType const at (CtorArgType::poly_auto_ptr);
+
+ os << name << "::" << endl
+ << name << " (";
+ {
+ CtorArgsWithoutBase ctor_args (*this, at, true, true);
+ ctor_args.dispatch (c);
+ }
+ os << ")" << endl
+ << ": " << base << " (";
+ {
+ CtorBase base (*this, at, "");
+ Traversal::Inherits inherits_base (base);
+
+ inherits (c, inherits_base);
+ }
+ os << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ {
+ CtorMember t (*this, at);
+ Traversal::Names n (t);
+
+ if (gen_wildcard)
+ n >> ctor_any_;
+
+ names (c, n);
+ }
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+ }
+ }
+
+ if (string_based)
+ {
+ // We might not have the value type if this enum is customized.
+ //
+ if (enum_base != 0 && enum_base->context ().count ("value"))
+ {
+ // c-tor (enum-value, all-non-optional-members)
+ //
+ CtorArgType const at (CtorArgType::type);
+ String base_arg (L"_xsd_" + ename (*enum_base) + L"_base");
+
+ os << name << "::" << endl
+ << name << " (" << fq_name (*enum_base) << "::" <<
+ evalue (*enum_base) << " " << base_arg;
+
+ {
+ CtorArgsWithoutBase ctor_args (*this, at, true, false);
+ ctor_args.dispatch (c);
+ }
+
+ os << ")" << endl
+ << ": " << base << " (";
+
+ {
+ CtorBase base (*this, at, base_arg);
+ Traversal::Inherits inherits_base (base);
+
+ inherits (c, inherits_base);
+ }
+
+ os << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ // Cannot be mixed.
+
+ names (c, ctor_names_);
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+ }
+
+ CtorArgType const at (CtorArgType::type);
+ String base_arg (L"_xsd_" + ename (ultimate_base (c)) + L"_base");
+
+ // c-tor (const char*, all-non-optional-members)
+ //
+ os << name << "::" << endl
+ << name << " (const " << char_type << "* " << base_arg;
+
+ {
+ CtorArgsWithoutBase ctor_args (*this, at, true, false);
+ ctor_args.dispatch (c);
+ }
+
+ os << ")" << endl
+ << ": " << base << " (";
+
+ {
+ CtorBase base (*this, at, base_arg);
+ Traversal::Inherits inherits_base (base);
+
+ inherits (c, inherits_base);
+ }
+
+ os << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ // Cannot be mixed.
+
+ names (c, ctor_names_);
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+
+
+ // c-tor (const std::string&, all-non-optional-members)
+ //
+ os << name << "::" << endl
+ << name << " (const " << string_type << "& " << base_arg;
+
+ {
+ CtorArgsWithoutBase ctor_args (*this, at, true, false);
+ ctor_args.dispatch (c);
+ }
+
+ os << ")" << endl
+ << ": " << base << " (";
+
+ {
+ CtorBase base (*this, at, base_arg);
+ Traversal::Inherits inherits_base (base);
+
+ inherits (c, inherits_base);
+ }
+
+ os << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ // Cannot be mixed.
+
+ names (c, ctor_names_);
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+ }
+
+ // c-tor (ultimate-base, all-non-optional-members)
+ //
+ {
+ CtorArgType const at (CtorArgType::type);
+
+ os << name << "::" << endl
+ << name << " (";
+
+ String base_arg;
+
+ {
+ CtorArgs ctor_args (*this, at, base_arg);
+ ctor_args.dispatch (c);
+ }
+
+ os << ")" << endl
+ << ": " << base << " (";
+
+ {
+ CtorBase base (*this, at, base_arg);
+ Traversal::Inherits inherits_base (base);
+
+ inherits (c, inherits_base);
+ }
+
+ os << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ names (c, ctor_names_);
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+ }
+
+ // If we have any complex arguments in the previous c-tor
+ // then also generate the auto_ptr version.
+ //
+ if (has_complex_non_op_args)
+ {
+ CtorArgType const at (CtorArgType::complex_auto_ptr);
+ String base_arg;
+
+ os << name << "::" << endl
+ << name << " (";
+
+ {
+ CtorArgs ctor_args (*this, at, base_arg);
+ ctor_args.dispatch (c);
+ }
+
+ os << ")" << endl
+ << ": " << base << " (";
+
+ {
+ CtorBase base (*this, at, base_arg);
+ Traversal::Inherits inherits_base (base);
+
+ inherits (c, inherits_base);
+ }
+
+ os << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ {
+ CtorMember t (*this, at);
+ Traversal::Names n (t);
+
+ if (gen_wildcard)
+ n >> ctor_any_;
+
+ names (c, n);
+ }
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+ }
+
+ // If we are generating polymorphic code then we also need to
+ // provide auto_ptr version for every polymorphic type.
+ //
+ if (polymorphic &&
+ has_poly_non_op_args && !complex_poly_args_clash)
+ {
+ CtorArgType const at (CtorArgType::poly_auto_ptr);
+ String base_arg;
+
+ os << name << "::" << endl
+ << name << " (";
+
+ {
+ CtorArgs ctor_args (*this, at, base_arg);
+ ctor_args.dispatch (c);
+ }
+
+ os << ")" << endl
+ << ": " << base << " (";
+
+ {
+ CtorBase base (*this, at, base_arg);
+ Traversal::Inherits inherits_base (base);
+
+ inherits (c, inherits_base);
+ }
+
+ os << ")";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ {
+ CtorMember t (*this, at);
+ Traversal::Names n (t);
+
+ if (gen_wildcard)
+ n >> ctor_any_;
+
+ names (c, n);
+ }
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+ }
+
+
+ // copy c-tor
+ //
+
+ os << name << "::" << endl
+ << name << " (const " << name << "& x," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (x, f, c)";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ String const& m (ctx.get<String> ("mixed-member"));
+ os << "," << endl
+ << " " << m << " (x." << m << ", f, this)";
+ }
+
+ if (ordered)
+ {
+ String const& m (ctx.get<String> ("order-member"));
+ os << "," << endl
+ << " " << m << " (x." << m << ")";
+ }
+
+ {
+ CopyAny copy_any (*this, "x");
+ CopyMember copy_member (*this, "x");
+ Traversal::Names names;
+
+ names >> copy_member;
+
+ if (gen_wildcard)
+ names >> copy_any;
+
+ Complex::names (c, names);
+ }
+
+ os << "{";
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+ os << "}";
+
+ //
+ //
+ bool he (has<Traversal::Element> (c));
+ bool hae (has<Traversal::Any> (c));
+
+ bool ha (has<Traversal::Attribute> (c));
+ bool haa (has<Traversal::AnyAttribute> (c));
+
+ //
+ //
+ if (!options.suppress_parsing ())
+ {
+ // c-tor (xercesc::DOMElement)
+ //
+ os << name << "::" << endl
+ << name << " (const " << xerces_ns << "::DOMElement& e," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (e, f";
+
+ if (he || ha || hae || (haa && gen_wildcard) || mixed)
+ os << " | " << flags_type << "::base";
+
+ os << ", c)";
+
+ if (edom_document_member_p (c))
+ {
+ os << "," << endl
+ << " " << edom_document_member (c) << " (" <<
+ "::xsd::cxx::xml::dom::create_document< " << char_type <<
+ " > ())";
+ }
+
+ if (mixed)
+ {
+ os << "," << endl
+ << " " << ctx.get<String> ("mixed-member") << " (this)";
+ }
+
+ names (c, element_ctor_names_);
+
+ os << "{";
+
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);"
+ << endl;
+
+ bool base_has_el (false), base_has_at (false);
+
+ // We are only interested in this information if we are
+ // generating our own parse().
+ //
+ if (he || ha || hae || (haa && gen_wildcard) || mixed)
+ {
+ if (c.inherits_p ())
+ {
+ HasParseFunction test (*this, base_has_el, base_has_at);
+ test.dispatch (c.inherits ().base ());
+ }
+ }
+
+ //@@ Throw if p is not exhausted at the end.
+ //
+ if (he || ha || hae || (haa && gen_wildcard) || mixed)
+ os << "if ((f & " << flags_type << "::base) == 0)"
+ << "{"
+ << parser_type << " p (e, " <<
+ (he || hae || base_has_el || mixed_p (c) ? "true, " : "false, ") <<
+ (mixed_p (c) ? "true, " : "false, ") <<
+ (ha || (haa && gen_wildcard) || base_has_at ? "true" : "false")
+ << ");"
+ << "this->" << unclash (name, "parse") << " (p, f);"
+ << "}";
+
+ os << "}";
+
+ bool simple (true);
+ {
+ IsSimpleType t (simple);
+ t.dispatch (c);
+ }
+
+ if (simple)
+ {
+ // c-tor (xercesc::DOMAttr)
+ //
+ os << name << "::" << endl
+ << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (a, f, c)"
+ << "{";
+
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+
+ os << "}";
+
+ // c-tor (string const&, xercesc::DOMElement)
+ //
+ os << name << "::" << endl
+ << name << " (const " << string_type << "& s," << endl
+ << "const " << xerces_ns << "::DOMElement* e," << endl
+ << flags_type << " f," << endl
+ << container << "* c)" << endl
+ << ": " << base << " (s, e, f, c)"
+ << "{";
+
+ if (facets)
+ os << "this->_facet_table (_xsd_" << name << "_facet_table);";
+
+ os << "}";
+ }
+
+ if (he || ha || hae || (haa && gen_wildcard) || mixed)
+ {
+ os << "void " << name << "::" << endl
+ << unclash (name, "parse") << " (" <<
+ parser_type << "& p," << endl
+ << flags_type <<
+ (he || ha || base_has_el || base_has_at ? " f" : "") << ")"
+ << "{";
+
+ // Allow the base to parse its part.
+ //
+ if (base_has_el || base_has_at)
+ os << "this->" << base << "::parse (p, f);"
+ << endl;
+
+ if (he || hae || mixed_p (c))
+ {
+ bool m (mixed_p (c));
+
+ os << "for (; p.more_content (); p.next_content (" <<
+ (m ? "true" : "false") << "))"
+ << "{";
+
+ if (m)
+ {
+ String const& ma (ctx.get<String> ("mixed-aname"));
+ String const& mi (ctx.get<String> ("mixed-ordered-id-name"));
+ String const& oa (ctx.get<String> ("order-aname"));
+ String const& ot (ctx.get<String> ("order-type"));
+
+ os << "if (p.cur_is_text ())"
+ << "{"
+ << "const " << xerces_ns << "::DOMText& t (" <<
+ "p.cur_text ());"
+ << "this->" << ma << " ().push_back (" << endl
+ << "::xsd::cxx::xml::transcode< " << char_type << " > (" <<
+ "t.getData (), t.getLength ()));"
+ << "this->" << oa << " ().push_back (" << endl
+ << ot << " (" << mi << "," << endl
+ << "this->" << ma << " ().size () - 1));"
+ << "continue;"
+ << "}";
+ }
+
+ if (he || hae)
+ {
+ os << "const " << xerces_ns << "::DOMElement& i (" <<
+ "p.cur_element ());"
+ << "const " << qname_type << " n (" << endl
+ << "::xsd::cxx::xml::dom::name< " << char_type << " > (i));"
+ << endl;
+
+ names (c, names_element_);
+ }
+
+ os << "break;"
+ << "}";
+
+ // Make sure all non-optional elements are set.
+ //
+ names (c, names_element_test_);
+ }
+
+ if (ha || (haa && gen_wildcard))
+ {
+ if (base_has_at)
+ os << "p.reset_attributes ();"
+ << endl;
+
+ os << "while (p.more_attributes ())"
+ << "{"
+ << "const " << xerces_ns << "::DOMAttr& i (" <<
+ "p.next_attribute ());"
+ << "const " << qname_type << " n (" << endl
+ << "::xsd::cxx::xml::dom::name< " << char_type << " > (i));"
+ << endl;
+
+ names (c, names_attribute_);
+
+ // Generate anyAttribute code after all the attributes.
+ //
+ if (gen_wildcard)
+ names (c, names_any_attribute_);
+
+
+ // os << "{" // else block
+ // @@
+ // This doesn't play well with inheritance because we
+ // don't expect base's attributes. Also there are other
+ // "special" attributes such as xmlns, etc.
+ //
+ // << "throw ::xsd::cxx::tree::unexpected_attribute ... "
+ // << "}";
+
+ os << "}"; // while loop
+
+ // Make sure all non-optional attributes are set.
+ //
+ names (c, names_attribute_test_);
+ }
+
+ os << "}";
+ }
+ }
+
+ // _clone
+ //
+ if (!(c.abstract_p () ||
+ (renamed && polymorphic && polymorphic_p (c))))
+ os << name << "* " << name << "::" << endl
+ << "_clone (" << flags_type << " f," << endl
+ << container << "* c) const"
+ << "{"
+ << "return new class " << name << " (*this, f, c);"
+ << "}";
+
+ // operator=
+ //
+ if (!options.suppress_assignment () &&
+ (he || ha || (gen_wildcard && (hae || haa))))
+ {
+ os << name << "& " << name << "::" << endl
+ << "operator= (const " << name << "& x)"
+ << "{"
+ << "if (this != &x)"
+ << "{"
+ << "static_cast< " << base << "& > (*this) = x;";
+
+ // Note that here we don't assign the DOMDocument that is
+ // used to hold wildcard fragments. Each document has its
+ // own copy.
+
+ // Mixed text content.
+ //
+ if (mixed)
+ {
+ String const& m (ctx.get<String> ("mixed-member"));
+ os << "this->" << m << " = x." << m << ";";
+ }
+
+ // Order container.
+ //
+ if (ordered)
+ {
+ String const& m (ctx.get<String> ("order-member"));
+ os << "this->" << m << " = x." << m << ";";
+ }
+
+ names (c, assign_names_);
+
+ os << "}"
+ << "return *this;"
+ << "}";
+ }
+
+ // d-tor
+ //
+ os << name << "::" << endl
+ << "~" << name << " ()"
+ << "{"
+ << "}";
+
+ // Register with type factory map.
+ //
+ if (polymorphic && polymorphic_p (c) && !c.abstract_p ())
+ {
+ // Note that we are using the original type name.
+ //
+ String const& name (ename (c));
+
+ // If this type is anonymous but substitutes, then it will
+ // be registered as part of the substitution registration.
+ //
+ if (!anonymous_p (c) && !options.suppress_parsing ())
+ {
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::type_factory_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_type_factory_init (" << endl
+ << strlit (c.name ()) << "," << endl
+ << strlit (xml_ns_name (c)) << ");"
+ << endl;
+ }
+
+ if ((!anonymous_p (c) || anonymous_substitutes_p (c)) &&
+ options.generate_comparison ())
+ {
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::comparison_initializer< " <<
+ poly_plate << ", " << char_type << ", " << name << " >" << endl
+ << "_xsd_" << name << "_comparison_init;"
+ << endl;
+ }
+ }
+
+ // Comparison operators.
+ //
+ if (options.generate_comparison () &&
+ (he || ha || mixed || ordered || !c.inherits_p () ||
+ ((hae || haa) && gen_wildcard)))
+ {
+ bool base_comp (false);
+
+ if (c.inherits_p ())
+ {
+ HasComparisonOperator test (*this, base_comp);
+ test.dispatch (c.inherits ().base ());
+ }
+
+ bool has_body (he || ha || ordered || mixed || base_comp ||
+ ((hae || haa) && gen_wildcard));
+
+ os << "bool" << endl
+ << "operator== (const " << name << "&" <<
+ (has_body ? " x" : "") << ", " <<
+ "const " << name << "&" << (has_body ? " y" : "") << ")"
+ << "{";
+
+ if (base_comp)
+ os << "if (!(static_cast< const " << base << "& > (x) ==" << endl
+ << "static_cast< const " << base << "& > (y)))" << endl
+ << "return false;"
+ << endl;
+
+ {
+ Complex::names (c, comparison_names_);
+ }
+
+ if (mixed)
+ {
+ String const& an (ctx.get<String> ("mixed-aname"));
+ os << "if (!(x." << an << " () == y." << an << " ()))" << endl
+ << "return false;"
+ << endl;
+ }
+
+ if (ordered)
+ {
+ String const& an (ctx.get<String> ("order-aname"));
+ os << "if (!(x." << an << " () == y." << an << " ()))" << endl
+ << "return false;"
+ << endl;
+ }
+
+ os << "return true;"
+ << "}";
+
+ os << "bool" << endl
+ << "operator!= (const " << name << "& x, " <<
+ "const " << name << "& y)"
+ << "{"
+ << "return !(x == y);"
+ << "}";
+ }
+ }
+
+ private:
+ Traversal::Inherits inherits_member_;
+ MemberTypeName member_name_;
+
+ Traversal::Names names_element_;
+ Traversal::Names names_element_test_;
+
+ Traversal::Names names_attribute_;
+ Traversal::Names names_any_attribute_;
+ Traversal::Names names_attribute_test_;
+
+ Any any_;
+ Element element_;
+
+ AnyTest any_test_;
+ ElementTest element_test_;
+
+ Attribute attribute_;
+ AttributeTest attribute_test_;
+
+ AnyAttribute any_attribute_;
+
+ DefaultCtorAnyInit default_ctor_any_init_;
+ DefaultCtorMemberInit default_ctor_member_init_;
+ Traversal::Names default_ctor_init_names_;
+
+ CtorAny ctor_any_;
+ CtorMember ctor_member_;
+ Traversal::Names ctor_names_;
+
+ ElementCtorAny element_ctor_any_;
+ ElementCtorMember element_ctor_member_;
+ Traversal::Names element_ctor_names_;
+
+ AssignAny assign_any_;
+ AssignMember assign_member_;
+ Traversal::Names assign_names_;
+
+ AnyComparison comparison_any_;
+ MemberComparison comparison_member_;
+ Traversal::Names comparison_names_;
+
+ FacetArray facet_array_;
+ };
+
+
+ // Generate element types and substitution group map entries.
+ //
+ struct GlobalElement: Traversal::Element,
+ GlobalElementBase,
+ Context
+ {
+ GlobalElement (Context& c)
+ : GlobalElementBase (c),
+ Context (c),
+ element_type_ (c.options.generate_element_type ()),
+ element_map_ (c.options.generate_element_map ()),
+ type_name_ (c)
+ {
+ belongs_ >> type_name_;
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ SemanticGraph::Type& t (e.type ());
+
+ // Check if this element is abstract.
+ //
+ bool abst;
+ {
+ SemanticGraph::Complex* tc;
+ abst = (tc = dynamic_cast<SemanticGraph::Complex*> (&t)) != 0 &&
+ tc->abstract_p ();
+ }
+
+ if (!abst && element_type_ && doc_root_p (e))
+ {
+ bool fund (false);
+ {
+ IsFundamentalType test (fund);
+ test.dispatch (t);
+ }
+
+ bool simple (true);
+ if (!fund)
+ {
+ IsSimpleType test (simple);
+ test.dispatch (t);
+ }
+
+ String const& name (ename (e));
+ String const& type (etype (e));
+ String const& member (emember (e));
+
+ os << "// " << name << endl
+ << "//" << endl
+ << endl;
+
+ // Virtual accessors.
+ //
+ os << "const " << any_type << "* " << name << "::" << endl
+ << "_value () const"
+ << "{";
+
+ if (fund)
+ os << "return 0;";
+ else
+ os << "return &this->" << member << ".get ();";
+
+ os << "}";
+
+ os << any_type << "* " << name << "::" << endl
+ << "_value ()"
+ << "{";
+
+ if (fund)
+ os << "return 0;";
+ else
+ os << "return &this->" << member << ".get ();";
+
+ os << "}";
+
+ // default c-tor
+ //
+ if (options.generate_default_ctor ())
+ {
+ os << name << "::" << endl
+ << name << " ()" << endl
+ << ": " << member << " (0)"
+ << "{"
+ << "}";
+ }
+
+ // c-tor (value)
+ //
+ os << name << "::" << endl
+ << name << " (const " << type << "& x)" << endl
+ << ": " << member << " (x, 0)"
+ << "{"
+ << "}";
+
+
+ // c-tor (auto_ptr<value>)
+ //
+ if (!simple || (polymorphic && polymorphic_p (t)))
+ {
+ os << name << "::" << endl
+ << name << " (" << auto_ptr << "< " << type << " > p)" << endl
+ << ": " << member << " (" <<
+ (std >= cxx_version::cxx11 ? "::std::move (p)" : "p") << ", 0)"
+ << "{"
+ << "}";
+ }
+
+ // c-tor (xercesc::DOMElement)
+ //
+ SemanticGraph::Context& ec (e.context ());
+ String const& name_member (ec.get<String> ("element-name-member"));
+ String const& ns_member (ec.get<String> ("element-ns-member"));
+
+ bool parsing (!options.suppress_parsing ());
+ if (parsing)
+ {
+ String const& tr (etraits (e));
+
+ os << name << "::" << endl
+ << name << " (const " << xerces_ns << "::DOMElement& e, " <<
+ flags_type << " f)" << endl
+ << ": " << member << " (0)"
+ << "{"
+ << "const " << qname_type << " n (" << endl
+ << "::xsd::cxx::xml::dom::name< " << char_type << " > (e));"
+ << endl
+ << "if (n.name () == " << name_member << " && " <<
+ "n.namespace_ () == " << ns_member << ")" << endl
+ << "this->" << member << ".set (" << tr <<
+ "::create (e, f, 0));"
+ << "else" << endl
+ << "throw ::xsd::cxx::tree::unexpected_element < " <<
+ char_type << " > (" << endl
+ << "n.name (), n.namespace_ ()," << endl
+ << name_member << ", " << ns_member << ");"
+ << "}";
+ }
+
+ // copy c-tor
+ //
+ os << name << "::" << endl
+ << name << " (const " << name << "& x, " <<
+ flags_type << " f)" << endl
+ << ": " << element_type << " ()," << endl
+ << " " << member << " (x." << member << ", f, 0)"
+ << "{"
+ << "}";
+
+ // _clone
+ //
+ os << name << "* " << name << "::" << endl
+ << "_clone (" << flags_type << " f) const"
+ << "{"
+ << "return new class " << name << " (*this, f);"
+ << "}";
+
+ // Element name and namespace accessors.
+ //
+ String const& aname (ec.get<String> ("element-name"));
+ String const& ans (ec.get<String> ("element-ns"));
+
+ os << "const " << string_type << "& " << name << "::" << endl
+ << aname << " ()"
+ << "{"
+ << "return " << name_member << ";"
+ << "}";
+
+ os << "const " << string_type << "& " << name << "::" << endl
+ << ans << " ()"
+ << "{"
+ << "return " << ns_member << ";"
+ << "}";
+
+ os << "const " << string_type << "& " << name << "::" << endl
+ << "_name () const"
+ << "{"
+ << "return " << name_member << ";"
+ << "}";
+
+ os << "const " << string_type << "& " << name << "::" << endl
+ << "_namespace () const"
+ << "{"
+ << "return " << ns_member << ";"
+ << "}";
+
+ os << "const " << string_type << " " << name << "::" << endl
+ << name_member << " (" << strlit (e.name ()) << ");"
+ << endl
+ << "const " << string_type << " " << name << "::" << endl
+ << ns_member << " (" << strlit (e.namespace_ ().name ()) << ");"
+ << endl;
+
+ // d-tor
+ //
+ os << name << "::" << endl
+ << "~" << name << " ()"
+ << "{"
+ << "}";
+
+ // Element map registration.
+ //
+ if (element_map_ && parsing)
+ {
+ os << "static " << endl
+ << "const ::xsd::cxx::tree::parser_init< " << name << ", " <<
+ char_type << ", " << any_type << " >" << endl
+ << "_xsd_" << name << "_parser_init (" <<
+ name << "::" << aname << " (), " <<
+ name << "::" << ans << " ());"
+ << endl;
+ }
+ }
+
+ // Note that we cannot just omit this element if it's abstract
+ // because it may serve as a "link" between the root of the
+ // substitution group and a non-abstract element that uses this
+ // element as its root (see element_factory_map::find_substitution()
+ // for details).
+ //
+ if (polymorphic && e.substitutes_p () && !options.suppress_parsing ())
+ {
+ String const& name (ename (e));
+ Type& r (e.substitutes ().root ());
+
+ os << "static" << endl
+ << "const ::xsd::cxx::tree::element_factory_initializer< " <<
+ poly_plate << ", " << char_type << " >" << endl
+ << "_xsd_" << name << "_element_factory_init (" << endl
+ << strlit (r.name ()) << "," << endl
+ << strlit (r.namespace_ ().name ()) << "," << endl
+ << strlit (e.name ()) << "," << endl
+ << strlit (e.namespace_ ().name ()) << "," << endl;
+
+ if (abst)
+ os << "0";
+ else
+ {
+ os << "&::xsd::cxx::tree::factory_impl< ";
+ belongs (e, belongs_);
+ os << " >";
+ }
+
+ os << ");"
+ << endl
+ << endl;
+ }
+ }
+
+ private:
+ bool element_type_;
+ bool element_map_;
+ Traversal::Belongs belongs_;
+ MemberTypeName type_name_;
+ };
+ }
+
+ void
+ generate_tree_source (Context& ctx, size_t first, size_t last)
+ {
+ if (ctx.options.generate_wildcard ())
+ {
+ ctx.os << "#include <xsd/cxx/xml/dom/wildcard-source.hxx>" << endl
+ << endl;
+ }
+
+ if (!ctx.options.suppress_parsing ())
+ ctx.os << "#include <xsd/cxx/xml/dom/parsing-source.hxx>" << endl
+ << endl;
+
+ if (ctx.polymorphic)
+ {
+ bool parsing (!ctx.options.suppress_parsing ());
+ bool comparison (ctx.options.generate_comparison ());
+
+ if (parsing)
+ ctx.os << "#include <xsd/cxx/tree/type-factory-map.hxx>" << endl
+ << endl;
+
+ if (comparison)
+ ctx.os << "#include <xsd/cxx/tree/comparison-map.hxx>" << endl
+ << endl;
+
+ if (parsing || comparison)
+ {
+ bool import_maps (ctx.options.import_maps ());
+ bool export_maps (ctx.options.export_maps ());
+
+ if (import_maps || export_maps)
+ {
+ ctx.os << "#ifndef XSD_NO_EXPORT" << endl
+ << endl
+ << "namespace xsd"
+ << "{"
+ << "namespace cxx"
+ << "{"
+ << "namespace tree"
+ << "{"
+ << "#ifdef _MSC_VER" << endl;
+
+ if (parsing && export_maps)
+ ctx.os << "template struct __declspec (dllexport) " <<
+ "type_factory_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ if (parsing && import_maps)
+ ctx.os << "template struct __declspec (dllimport) " <<
+ "type_factory_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ if (comparison && export_maps)
+ ctx.os << "template struct __declspec (dllexport) " <<
+ "comparison_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ if (comparison && import_maps)
+ ctx.os << "template struct __declspec (dllimport) " <<
+ "comparison_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl;
+
+ if (parsing)
+ ctx.os << "template struct __attribute__ ((visibility(\"default\"))) " <<
+ "type_factory_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ if (comparison)
+ ctx.os << "template struct __attribute__ ((visibility(\"default\"))) " <<
+ "comparison_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ ctx.os << "#elif defined(XSD_MAP_VISIBILITY)" << endl;
+
+ if (parsing)
+ ctx.os << "template struct XSD_MAP_VISIBILITY " <<
+ "type_factory_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ if (comparison)
+ ctx.os << "template struct XSD_MAP_VISIBILITY " <<
+ "comparison_plate< " << ctx.poly_plate << ", " <<
+ ctx.char_type << " >;";
+
+ ctx.os << "#endif" << endl
+ << "}" // tree
+ << "}" // cxx
+ << "}" // xsd
+ << "#endif // XSD_NO_EXPORT" << endl
+ << endl;
+ }
+
+ ctx.os << "namespace _xsd"
+ << "{";
+
+ if (parsing)
+ ctx.os << "static" << endl
+ << "const ::xsd::cxx::tree::type_factory_plate< " <<
+ ctx.poly_plate << ", " << ctx.char_type << " >" << endl
+ << "type_factory_plate_init;"
+ << endl;
+
+ if (comparison)
+ ctx.os << "static" << endl
+ << "const ::xsd::cxx::tree::comparison_plate< " <<
+ ctx.poly_plate << ", " << ctx.char_type << " >" << endl
+ << "comparison_plate_init;"
+ << endl;
+
+ ctx.os << "}";
+ }
+ }
+
+ Traversal::Schema schema;
+ Sources sources;
+ Traversal::Names names_ns, names;
+ Namespace ns (ctx, first, last);
+
+ List list (ctx);
+ Union union_ (ctx);
+ Complex complex (ctx);
+ Enumeration enumeration (ctx);
+ GlobalElement element (ctx);
+
+ schema >> sources >> schema;
+ schema >> names_ns >> ns >> names;
+
+ names >> list;
+ names >> union_;
+ names >> complex;
+ names >> enumeration;
+ names >> element;
+
+ schema.dispatch (ctx.schema_root);
+ }
+ }
+}
diff --git a/xsd/cxx/tree/tree-source.hxx b/xsd/cxx/tree/tree-source.hxx
new file mode 100644
index 0000000..66dcff7
--- /dev/null
+++ b/xsd/cxx/tree/tree-source.hxx
@@ -0,0 +1,18 @@
+// file : xsd/cxx/tree/tree-source.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_TREE_SOURCE_HXX
+#define XSD_CXX_TREE_TREE_SOURCE_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ void
+ generate_tree_source (Context&, size_t first, size_t last);
+ }
+}
+
+#endif // XSD_CXX_TREE_TREE_SOURCE_HXX
diff --git a/xsd/cxx/tree/validator.cxx b/xsd/cxx/tree/validator.cxx
new file mode 100644
index 0000000..9785560
--- /dev/null
+++ b/xsd/cxx/tree/validator.cxx
@@ -0,0 +1,676 @@
+// file : xsd/cxx/tree/validator.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <set>
+#include <iostream>
+
+#include <xsd/cxx/tree/validator.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/cxx/tree/elements.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ namespace Tree
+ {
+ namespace
+ {
+ class ValidationContext: public Context
+ {
+ public:
+ ValidationContext (SemanticGraph::Schema& root,
+ SemanticGraph::Path const& path,
+ Tree::options const& ops,
+ const WarningSet& disabled_warnings,
+ Counts const& counts,
+ bool generate_xml_schema,
+ bool& valid_)
+ : Context (std::wcerr,
+ root,
+ path,
+ ops,
+ counts,
+ generate_xml_schema,
+ 0,
+ 0,
+ 0,
+ 0),
+ disabled_warnings_ (disabled_warnings),
+ disabled_warnings_all_ (false),
+ valid (valid_),
+ subst_group_warning_issued (subst_group_warning_issued_),
+ subst_group_warning_issued_ (false)
+ {
+ if (disabled_warnings_.find ("all") != disabled_warnings_.end ())
+ disabled_warnings_all_ = true;
+ }
+
+ public:
+ bool
+ is_disabled (char const* w)
+ {
+ return disabled_warnings_all_ ||
+ disabled_warnings_.find (w) != disabled_warnings_.end ();
+ }
+
+ public:
+ String
+ xpath (SemanticGraph::Nameable& n)
+ {
+ if (n.is_a<SemanticGraph::Namespace> ())
+ return L"<namespace-level>"; // There is a bug if you see this.
+
+ if (n.named_p ())
+ {
+ SemanticGraph::Scope& scope (n.scope ());
+
+ if (scope.is_a<SemanticGraph::Namespace> ())
+ return n.name ();
+
+ return xpath (scope) + L"/" + n.name ();
+ }
+ else
+ {
+ return L"(anonymous type for " +
+ n.context ().get<String> ("instance-name") + L")";
+ }
+ }
+
+ protected:
+ ValidationContext (ValidationContext& c)
+ : Context (c),
+ disabled_warnings_ (c.disabled_warnings_),
+ disabled_warnings_all_ (c.disabled_warnings_all_),
+ valid (c.valid),
+ subst_group_warning_issued (c.subst_group_warning_issued)
+ {
+ }
+
+ protected:
+ const WarningSet& disabled_warnings_;
+ bool disabled_warnings_all_;
+
+ bool& valid;
+
+ bool& subst_group_warning_issued;
+ bool subst_group_warning_issued_;
+ };
+
+
+ //
+ //
+ struct Any: Traversal::Any, ValidationContext
+ {
+ Any (ValidationContext& c)
+ : ValidationContext (c)
+ {
+ }
+
+ struct Element: Traversal::Element, ValidationContext
+ {
+ Element (ValidationContext& c, SemanticGraph::Any& any)
+ : ValidationContext (c),
+ any_ (any),
+ ns_ (any.definition_namespace ().name ())
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (skip (e))
+ return;
+
+ using SemanticGraph::Any;
+
+ bool q (e.qualified_p ());
+ String ns (q ? e.namespace_ ().name () : "");
+
+ for (Any::NamespaceIterator i (any_.namespace_begin ());
+ i != any_.namespace_end (); ++i)
+ {
+ bool failed (false);
+
+ if (*i == L"##any")
+ {
+ failed = true;
+ }
+ else if (*i == L"##other")
+ {
+ if (ns_)
+ {
+ // Note that here I assume that ##other does not
+ // include names without target namespace. This
+ // is not what the spec says but that seems to be
+ // the consensus.
+ //
+ failed = q && ns != ns_;
+ }
+ else
+ {
+ // No target namespace.
+ //
+ failed = q && ns != L"";
+ }
+ }
+ else if (*i == L"##local")
+ {
+ failed = !q || ns == L"";
+ }
+ else if (*i == L"##targetNamespace")
+ {
+ failed = (q && ns_ == ns) || (!q && ns_ == L"");
+ }
+ else
+ {
+ failed = q && *i == ns;
+ }
+
+ if (failed)
+ {
+ Any& a (any_);
+
+ os << a.file () << ":" << a.line () << ":" << a.column ()
+ << ": warning T001: namespace '" << *i << "' allows for "
+ << "element '" << e.name () << "'" << endl;
+
+ os << a.file () << ":" << a.line () << ":" << a.column ()
+ << ": warning T001: generated code may not associate element '"
+ << e.name () << "' correctly if it appears in place of "
+ << "this wildcard" << endl;
+
+ os << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": info: element '" << e.name () << "' is defined "
+ << "here" << endl;
+ }
+ }
+ }
+
+ private:
+ SemanticGraph::Any& any_;
+ String ns_;
+ };
+
+ struct Complex: Traversal::Complex
+ {
+ Complex ()
+ : up_ (true), down_ (true)
+ {
+ }
+
+ virtual void
+ post (Type& c)
+ {
+ // Go down the inheritance hierarchy.
+ //
+ if (down_)
+ {
+ bool up = up_;
+ up_ = false;
+
+ if (c.inherits_p ())
+ dispatch (c.inherits ().base ());
+
+ up_ = up;
+ }
+
+ // Go up the inheritance hierarchy.
+ //
+ if (up_)
+ {
+ bool down = down_;
+ down_ = false;
+
+ for (Type::BegetsIterator i (c.begets_begin ());
+ i != c.begets_end (); ++i)
+ {
+ dispatch (i->derived ());
+ }
+
+ down_ = down;
+ }
+ }
+
+ private:
+ bool up_, down_;
+ };
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ using SemanticGraph::Compositor;
+
+ // Find our complex type.
+ //
+ Compositor* c (&a.contained_particle ().compositor ());
+
+ while(!c->contained_compositor_p ())
+ c = &c->contained_particle ().compositor ();
+
+ SemanticGraph::Complex& type (
+ dynamic_cast<SemanticGraph::Complex&> (
+ c->contained_compositor ().container ()));
+
+ Complex complex;
+ Traversal::Names names;
+ Element element (*this, a);
+
+ complex >> names >> element;
+
+ complex.dispatch (type);
+ }
+ };
+
+
+ //
+ //
+ struct Traverser: Traversal::Schema,
+ Traversal::Complex,
+ Traversal::Type,
+ Traversal::Element,
+ ValidationContext
+ {
+ using Schema::traverse;
+
+ Traverser (ValidationContext& c)
+ : ValidationContext (c), any_ (c)
+ {
+ *this >> sources_ >> *this;
+ *this >> schema_names_ >> ns_ >> names_;
+
+ names_ >> *this >> names_;
+
+ // Any
+ //
+ if (!is_disabled ("T001"))
+ {
+ *this >> contains_compositor_ >> compositor_ >> contains_particle_;
+ contains_particle_ >> compositor_;
+ contains_particle_ >> any_;
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ using SemanticGraph::Schema;
+
+ traverse (static_cast<SemanticGraph::Type&> (c));
+
+ if (c.inherits_p ())
+ {
+ SemanticGraph::Type& t (c.inherits ().base ());
+
+ if (t.named_p () &&
+ types_.find (
+ t.scope ().name () + L"#" + t.name ()) == types_.end ())
+ {
+ // Don't worry about types that are in included/imported
+ // schemas.
+ //
+ Schema& s (dynamic_cast<Schema&> (t.scope ().scope ()));
+
+ if (&s == &schema_root || sources_p (schema_root, s))
+ {
+ valid = false;
+
+ os << c.file () << ":" << c.line () << ":" << c.column ()
+ << ": error: type '" << xpath (c) << "' inherits from "
+ << "yet undefined type '" << xpath (t) << "'" << endl;
+
+ os << t.file () << ":" << t.line () << ":" << t.column ()
+ << ": info: '" << xpath (t) << "' is defined here"
+ << endl;
+
+ os << c.file () << ":" << c.line () << ":" << c.column ()
+ << ": info: inheritance from a yet-undefined type is "
+ << "not supported" << endl;
+
+ os << c.file () << ":" << c.line () << ":" << c.column ()
+ << ": info: re-arrange your schema and try again"
+ << endl;
+ }
+ }
+ }
+
+ Complex::traverse (c);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ // This is also used to traverse Complex.
+ //
+ if (t.named_p ())
+ {
+ types_.insert (t.scope ().name () + L"#" + t.name ());
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (is_disabled ("T002"))
+ return;
+
+ // Note that there is no test for generate_p since we want
+ // to catch cases when things are not being generated but
+ // most likely should have been.
+ //
+ if (e.substitutes_p () && !polymorphic &&
+ !subst_group_warning_issued)
+ {
+ subst_group_warning_issued = true;
+
+ os << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": warning T002: substitution groups are used but "
+ << "--generate-polymorphic was not specified" << endl;
+
+ os << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": info: generated code may not be able to handle "
+ << "some conforming instances" << endl;
+ }
+ }
+
+ // Return true if root sources s.
+ //
+ bool
+ sources_p (SemanticGraph::Schema& root, SemanticGraph::Schema& s)
+ {
+ using SemanticGraph::Schema;
+ using SemanticGraph::Sources;
+
+ for (Schema::UsesIterator i (root.uses_begin ());
+ i != root.uses_end (); ++i)
+ {
+ if (i->is_a<Sources> ())
+ {
+ if (&i->schema () == &s || sources_p (i->schema (), s))
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private:
+ set<String> types_;
+
+ Sources sources_;
+
+ Traversal::Names schema_names_;
+ Traversal::Namespace ns_;
+
+ Traversal::Names names_;
+
+ // Any.
+ //
+ Any any_;
+ Traversal::Compositor compositor_;
+ Traversal::ContainsParticle contains_particle_;
+ Traversal::ContainsCompositor contains_compositor_;
+ };
+
+
+ struct AnonymousType: Traversal::Schema,
+ Traversal::Complex,
+ Traversal::Element,
+ Traversal::Attribute,
+ ValidationContext
+ {
+ using Schema::traverse;
+ using Complex::traverse;
+
+ AnonymousType (ValidationContext& c)
+ : ValidationContext (c),
+ anonymous_error_issued_ (false)
+ {
+ *this >> sources_ >> *this;
+ *this >> schema_names_ >> ns_ >> names_ >> *this;
+ *this >> names_;
+ }
+
+ bool
+ traverse_common (SemanticGraph::Member& m)
+ {
+ SemanticGraph::Type& t (m.type ());
+
+ if (!t.named_p ()
+ && !t.is_a<SemanticGraph::Fundamental::IdRef> ()
+ && !t.is_a<SemanticGraph::Fundamental::IdRefs> ())
+ {
+ if (!anonymous_error_issued_)
+ {
+ valid = false;
+ anonymous_error_issued_ = true;
+
+ wcerr << t.file ()
+ << ": error: anonymous types detected"
+ << endl;
+
+ wcerr << t.file ()
+ << ": info: "
+ << "anonymous types are not supported in this mapping"
+ << endl;
+
+ wcerr << t.file ()
+ << ": info: consider explicitly naming these types or "
+ << "remove the --preserve-anonymous option to "
+ << "automatically name them"
+ << endl;
+
+ if (!options.show_anonymous ())
+ wcerr << t.file ()
+ << ": info: use --show-anonymous option to see these "
+ << "types" << endl;
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ if (skip (e)) return;
+
+ if (traverse_common (e))
+ {
+ if (options.show_anonymous ())
+ {
+ wcerr << e.file () << ":" << e.line () << ":" << e.column ()
+ << ": error: element '" << xpath (e) << "' "
+ << "is of anonymous type" << endl;
+ }
+ }
+ else
+ Traversal::Element::traverse (e);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Attribute& a)
+ {
+ if (traverse_common (a))
+ {
+ if (options.show_anonymous ())
+ {
+ wcerr << a.file () << ":" << a.line () << ":" << a.column ()
+ << ": error: attribute '" << xpath (a) << "' "
+ << "is of anonymous type" << endl;
+ }
+ }
+ else
+ Traversal::Attribute::traverse (a);
+ }
+
+ private:
+ bool anonymous_error_issued_;
+
+ set<String> types_;
+
+ Sources sources_;
+
+ Traversal::Names schema_names_;
+ Traversal::Namespace ns_;
+
+ Traversal::Names names_;
+ };
+ }
+
+ bool Validator::
+ validate (options const& ops,
+ SemanticGraph::Schema& schema,
+ SemanticGraph::Path const& path,
+ const WarningSet& disabled_warnings,
+ Counts const& counts)
+ {
+ bool valid (true);
+ ValidationContext ctx (
+ schema, path, ops, disabled_warnings, counts, false, valid);
+
+ //
+ //
+ bool import_maps (ops.import_maps ());
+ bool export_maps (ops.export_maps ());
+
+ if (import_maps && export_maps)
+ {
+ wcerr << "error: --import-maps and --export-maps are "
+ << "mutually exclusive" << endl;
+
+ return false;
+ }
+
+ if (import_maps && !ctx.polymorphic)
+ {
+ wcerr << "error: --import-maps can only be specified together with "
+ << "--generate-polymorphic" << endl;
+
+ return false;
+ }
+
+ if (export_maps && !ctx.polymorphic)
+ {
+ wcerr << "error: --export-maps can only be specified together " <<
+ "with --generate-polymorphic" << endl;
+
+ return false;
+ }
+
+ //
+ //
+ if (ops.char_type () != "char" &&
+ ops.char_type () != "wchar_t" &&
+ !ctx.is_disabled ("T003"))
+ {
+ wcerr << "warning T003: unknown base character type '" <<
+ ops.char_type ().c_str () << "'" << endl;
+ }
+
+ //
+ //
+ NarrowString tn (ops.type_naming ());
+
+ if (tn != "knr" && tn != "ucc" && tn != "java")
+ {
+ wcerr << "error: unknown type naming style specified: '" <<
+ tn.c_str () << "'" << endl;
+
+ return false;
+ }
+
+ NarrowString fn (ops.function_naming ());
+
+ if (fn != "knr" && fn != "lcc" && fn != "ucc" && fn != "java")
+ {
+ wcerr << "error: unknown function naming style specified: '" <<
+ fn.c_str () << "'" << endl;
+
+ return false;
+ }
+
+ //
+ //
+ bool element_type (ops.generate_element_type ());
+ bool par (!ops.suppress_parsing ());
+ bool ser (ops.generate_serialization ());
+
+ if (ops.generate_element_map ())
+ {
+ if (!element_type)
+ {
+ wcerr << "error: --generate-element-map can only be specified " <<
+ "together with --generate-element-type" << endl;
+
+ return false;
+ }
+
+ if (!(par || ser))
+ {
+ wcerr << "error: --generate-element-map is specified but " <<
+ "neither parsing nor serialization code is generated" << endl;
+
+ return false;
+ }
+ }
+
+ // Issue a warning if there are more than one global element
+ // and we are generating parsing/serialization functions or
+ // element types for all of them by default.
+ //
+
+ if (counts.global_elements > 1 &&
+ (element_type || par || ser) &&
+ !ops.root_element_first () &&
+ !ops.root_element_last () &&
+ !ops.root_element_all () &&
+ !ops.root_element_none () &&
+ ops.root_element ().empty () &&
+ !ctx.is_disabled ("T004"))
+ {
+ wcerr << schema.file () << ": warning T004: generating ";
+
+ if (element_type)
+ wcerr << "element types";
+ else
+ {
+ wcerr << (par ? "parsing " : "") <<
+ (ser ? (par ? "and serialization " : "serialization ") : "") <<
+ "functions";
+ }
+ wcerr << " for " << counts.global_elements << " global elements" <<
+ endl;
+
+ wcerr << schema.file () << ": info: use --root-element-* options "
+ << "to specify document root(s)" << endl;
+ }
+
+
+ // Test for anonymout types.
+ //
+ {
+ AnonymousType traverser (ctx);
+ traverser.dispatch (schema);
+ }
+
+ // Test the rest.
+ //
+ if (valid)
+ {
+ Traverser traverser (ctx);
+ traverser.dispatch (schema);
+ }
+
+ return valid;
+
+ // T005 is used in polymorphism-processor.cxx.
+ //
+ }
+ }
+}
diff --git a/xsd/cxx/tree/validator.hxx b/xsd/cxx/tree/validator.hxx
new file mode 100644
index 0000000..23f3f04
--- /dev/null
+++ b/xsd/cxx/tree/validator.hxx
@@ -0,0 +1,29 @@
+// file : xsd/cxx/tree/validator.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_CXX_TREE_VALIDATOR_HXX
+#define XSD_CXX_TREE_VALIDATOR_HXX
+
+#include <xsd/cxx/tree/elements.hxx>
+#include <xsd/cxx/tree/options.hxx>
+
+#include <xsd/xsd.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ class Validator
+ {
+ public:
+ bool
+ validate (options const&,
+ SemanticGraph::Schema&,
+ SemanticGraph::Path const& tu,
+ const WarningSet& disabled_warnings,
+ Counts const& counts);
+ };
+ }
+}
+
+#endif // XSD_CXX_TREE_VALIDATOR_HXX
diff --git a/xsd/dist/README-UNIX b/xsd/dist/README-UNIX
deleted file mode 100644
index 4f83a7d..0000000
--- a/xsd/dist/README-UNIX
+++ /dev/null
@@ -1,82 +0,0 @@
-This package contains precompiled binaries of CodeSynthesis XSD, a
-W3C XML Schema to C++ Data Binding compiler. For more information
-about XSD visit
-
-http://www.codesynthesis.com/products/xsd/
-
-This README file describes how to start using XSD in UNIX or
-UNIX-like (for example, Cygwin/Mingw) environments.
-
-
-Prerequisites
--------------
-
-The XSD runtime library and the generated code depend on the underlying
-XML parser which can be Xerces-C++ for the C++/Tree mapping and Xerces-C++
-or Expat for the C++/Parser mapping.
-
-Xerces-C++ can be obtained from http://xerces.apache.org/xerces-c/. Most
-GNU/Linux distributions provide precompiled binary packages for Xerces-C++.
-You can also download precompiled Xerces-C++ libraries for a wide range of
-platforms and compilers from http://xerces.apache.org/xerces-c/download.cgi
-
-Expat can be obtained from http://www.libexpat.org/. Most GNU/Linux
-distributions provide precompiled binary packages for Expat.
-
-
-Building Examples
------------------
-
-To build examples you will need GNU make. All examples in the examples/
-directory come with simple makefiles. For instance, to build a hello
-example in examples/cxx/tree you could execute the following commands:
-
-$ cd examples/cxx/tree/hello
-$ make
-
-The following make variables affect the compilation process and can
-be overridden from the command line:
-
-CXX - C++ compiler, by default 'g++'
-CXXFLAGS - C++ options
-CPPFLAGS - C/C++ Preprocessor options
-
-LIBS - Libraries to link with, by default '-lxerces-c' for the
- C++/Tree examples and either '-lxerces-c' or '-lexpat' for
- the C++/Parser examples, depending on XML_PARSER
-LDFLAGS - Linker options
-
-XSD - XSD compiler, by default path to the XSD binary
-XSDFLAGS - XSD options
-
-WITH_ZLIB - Set this variable to 1 if you would like to build examples
- that depend on the zlib library
-
-WITH_ACE - Set this variable to 1 if you would like to build examples
- that depend on the ACE library
-
-WITH_XDR - Set this variable to 1 if you would like to build examples
- that depend on the XDR API (available out of the box on
- most GNU/Linux and UNIX systems)
-
-WITH_BOOST - Set this variable to 1 if you would like to build examples
- that depend on the Boost date_time and serialization
- libraries
-
-WITH_XQILLA - Set this variable to 1 if you would like to build examples
- that depend on the XQilla library (XPath 2)
-
-Additionally, makefiles for the C++/Parser examples (examples/cxx/parser/)
-allow you to choose the underlying XML parser:
-
-XML_PARSER - Underlying XML parser, can be 'xerces' (default) or 'expat'
-
-
-For instance, if you would like to build an example using g++-4.0 instead
-of the default g++ and would like to use Xerces-C++ from ~/xerces-c instead
-of the default, system-wide installation, you could execute the following
-command:
-
-$ make CXX=g++-4.0 \
- CPPFLAGS="-I ~/xerces-c/include" \
- LDFLAGS="-L ~/xerces-c/lib"
diff --git a/xsd/dist/README-WINDOWS b/xsd/dist/README-WINDOWS
deleted file mode 100644
index 0657c9f..0000000
--- a/xsd/dist/README-WINDOWS
+++ /dev/null
@@ -1,192 +0,0 @@
-This package contains precompiled binaries of CodeSynthesis XSD, a
-W3C XML Schema to C++ Data Binding compiler, built for Microsoft
-Windows. For more information about XSD visit
-
-http://www.codesynthesis.com/products/xsd/
-
-This README file describes how to start using XSD in the Microsoft
-Windows environment with Visual Studio 2005 (8.0), Visual Studio 2008
-(9.0), and Visual Studio 2010 (10.0), Visual Studio 2012 (11.0), and
-Visual Studio 2013 (12.0).
-
-
-Prerequisites
--------------
-
-The XSD runtime library and the generated code depend on the Xerces-C++
-XML parser which you can obtain from http://xerces.apache.org/xerces-c/.
-You can also download precompiled Xerces-C++ libraries for Windows from:
-
-http://xerces.apache.org/xerces-c/download.cgi
-
-Note that the above download page may not contain Xerces-C++ libraries
-for the latest Visual Studio releases. The Windows Installer package
-(.msi) for XSD contains Xerces-C++ libraries for all of the above-
-mentioned Visual Studio versions.
-
-
-Environment
------------
-
-Before you can start building examples or your applications that use XSD
-you need to set include, library and executable search paths in the Visual
-Studio IDE and the System Environment.
-
-1. Setting up Xerces-C++
-
- First you need to set up Xerces-C++ include and library search paths.
- If you already have Xerces-C++ set up in your development environment,
- you can skip to the next step. Here we assume that your Xerces-C++ path
- is C:\projects\xerces-c-x.y.z. If you have Xerces-C++ in a different
- place, you will need to adjust the paths below accordingly.
-
-
- a) For Visual Studio 2005 (8.0) and Visual Studio 2008 (9.0):
-
- In the Visual Studio IDE, select "Tools"/"Options"/"Projects and
- Solution"/"VC++ Directories".
-
- Then, in the "Show directories for" field, select "Include files" and
- create a new entry with the value "C:\projects\xerces-c-x.y.z\include".
-
- After that, in the "Show directories for" field, select "Library files"
- and create a new entry with the value "C:\projects\xerces-c-x.y.z\lib".
-
- After that, in the "Show directories for" field, select "Executable files"
- and create a new entry with the value "C:\projects\xerces-c-x.y.z\bin".
-
- If you are building the 64-bit version of your application, repeat the
- above steps for the 64-bit version of Xerces-C++ while selecting x64
- in the "Platform" drop-down list in the VC++ Directories dialog (Visual
- Studio keeps a separate set of paths for each platform).
-
- For Visual Studio 2010-2013 (10.0-12.0):
-
- 1. Open an existing or create a new C++ project (you can open one of
- the example solutions that come with XSD).
-
- 2. Open the Property Manager view by selecting "View"->"Property
- Manager" (or "View"->"Other Windows"->"Property Manager") menu
- action.
-
- 3. Expand the property hierarchy for the project and find the
- Microsoft.Cpp.Win32.user property sheet.
-
- 4. Right click on Microsoft.Cpp.Win32.user and select the "Properties"
- menu action.
-
- 5. Select the VC++ Directories tab.
-
- 6. Add the "C:\projects\xerces-c-x.y.z\include" path to the "Include
- Directories" field (the paths are separated by a semicolon).
-
- 7. Add the "C:\projects\xerces-c-x.y.z\lib" path to the "Library
- Directories" field.
-
- 8. Add the "C:\projects\xerces-c-x.y.z\bin" path to the "Executable
- Directories" field.
-
- 9. Click Ok to close the dialog and then click the Save button at the
- top of the Property Manager view to save Microsoft.Cpp.Win32.user.
-
- If you are building the 64-bit version of your application, repeat
- the above steps for the 64-bit version of Xerces-C++ but using the
- Microsoft.Cpp.x64.user property sheet (Visual Studio keeps a separate
- set of paths for each platform).
-
-
- b) In the Control Panel, choose "System" and select the "Advanced" tab.
- Click on the "Environment Variables" button. In the "System Variables"
- list, select "Path" and add (via "Edit" button) the
- ";C:\projects\xerces-c-x.y.z\bin" path at the end.
-
-
-2. Setting up XSD
-
- Now you need to set up XSD executable and include search paths. Here we
- assume that your XSD path is C:\projects\xsd-x.y.z. If you have XSD in
- a different place, you will need to adjust the paths below accordingly.
-
- For Visual Studio 2005 (8.0) and Visual Studio 2008 (9.0):
-
- In the Visual Studio IDE, select "Tools"/"Options"/"Projects and
- Solution"/"VC++ Directories".
-
- Then, in the "Show directories for" field, select "Include files" and
- create a new entry with the value "C:\projects\xsd-x.y.z\libxsd".
-
- After that, in the "Show directories for" field, select "Executable
- files" and create a new entry with the value "C:\projects\xsd-x.y.z\bin".
- Make sure it is the first line in the list of directories (use the
- "Up" button to move the new entry up, if necessary).
-
- If you are building the 64-bit version of your application, repeat the
- above steps using the same paths while selecting x64 in the "Platform"
- drop-down list in the VC++ Directories dialog (Visual Studio keeps a
- separate set of paths for each platform).
-
- For Visual Studio 2010 (10.0):
-
- 1. Open an existing or create a new C++ project (you can open one of
- the example solutions that come with XSD).
-
- 2. Open the Property Manager view by selecting "View"->"Property
- Manager" (or "View"->"Other Windows"->"Property Manager") menu
- action.
-
- 3. Expand the property hierarchy for the project and find the
- Microsoft.Cpp.Win32.user property sheet.
-
- 4. Right click on Microsoft.Cpp.Win32.user and select the "Properties"
- menu action.
-
- 5. Select the VC++ Directories tab.
-
- 6. Add the "C:\projects\xsd-x.y.z\libxsd" path to the "Include
- Directories" field (the paths are separated by a semicolon).
-
- 7. Add the "C:\projects\xsd-x.y.z\bin" path to the "Executable
- Directories" field and make sure it is the first path in the
- the list of directories.
-
- 8. Click Ok to close the dialog and then click the Save button at the
- top of the Property Manager view to save Microsoft.Cpp.Win32.user.
-
- If you are building the 64-bit version of your application, repeat the
- above steps using the same paths but using the Microsoft.Cpp.x64.user
- property sheet (Visual Studio keeps a separate set of paths for each
- platform).
-
-
-3. Restart the Visual Studio IDE.
-
-
-Building Examples
------------------
-
-Now you are ready to build examples. Simply open the solution file
-found in the examples\cxx\tree (C++/Tree mapping examples) or
-examples\cxx\parser (C++/Parser examples) directories.
-
-Some of the examples depend on additional third-party libraries or
-show a specific feature of XSD and are not included in the solutions
-above. They come with their individual solution files:
-
-examples/cxx/tree/embedded - example of schema embedding
-examples/cxx/tree/custom - examples of type customization
-examples/cxx/tree/custom/calendar - depends on the Boost date_time library
-examples/cxx/tree/compression - depends on the zlib library
-examples/cxx/tree/binary/boost - depends on the Boost serialization library
-examples/cxx/tree/binary/cdr - depends on the ACE library
-examples/cxx/tree/binary/xdr - requires a third-party XDR library
-examples/cxx/tree/xpath - depends on the XQilla library (XPath 2)
-
-
-Using XSD in Your Projects
---------------------------
-
-For various ways to integrate the XSD compiler with the Visual Studio IDE
-as well as other Visual Studio-specific topics, refer to the Using XSD with
-Microsoft Visual Studio Wiki page:
-
-http://wiki.codesynthesis.com/Using_XSD_with_Microsoft_Visual_Studio
diff --git a/xsd/dist/etc/vc-1x.0/xsd-cxx-parser.props b/xsd/dist/etc/vc-1x.0/xsd-cxx-parser.props
deleted file mode 100644
index b167a38..0000000
--- a/xsd/dist/etc/vc-1x.0/xsd-cxx-parser.props
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup
- Condition="'$(CXX_Parser_Mapping_RuleBeforeTargets)' == '' and '$(CXX_Parser_Mapping_RuleAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
- <CXX_Parser_Mapping_RuleBeforeTargets>Midl</CXX_Parser_Mapping_RuleBeforeTargets>
- <CXX_Parser_Mapping_RuleAfterTargets>CustomBuild</CXX_Parser_Mapping_RuleAfterTargets>
- </PropertyGroup>
- <PropertyGroup>
- <CXX_Parser_Mapping_RuleDependsOn
- Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(CXX_Parser_Mapping_RuleDependsOn)</CXX_Parser_Mapping_RuleDependsOn>
- </PropertyGroup>
- <ItemDefinitionGroup>
- <CXX_Parser_Mapping_Rule>
- <ProprietaryLicense>False</ProprietaryLicense>
- <GenInline>False</GenInline>
- <GenValidation>False</GenValidation>
- <SupValidation>False</SupValidation>
- <GenPolymorphic>False</GenPolymorphic>
- <OutDir>.</OutDir>
- <HeaderSuffix>.hxx</HeaderSuffix>
- <SourceSuffix>.cxx</SourceSuffix>
- <InlineSuffix>.ixx</InlineSuffix>
- <SkelFileSuffix>-pskel</SkelFileSuffix>
- <SkelTypeSuffix>_pskel</SkelTypeSuffix>
- <CharType>0</CharType>
- <CharEncoding>0</CharEncoding>
- <XMLParser>0</XMLParser>
- <CommandLineTemplate>xsd.exe cxx-parser [AllOptions] [AdditionalOptions] [Inputs]</CommandLineTemplate>
- <ExecutionDescription>xsd cxx-parser %(Identity)</ExecutionDescription>
- <ShowOnlyRuleProperties>false</ShowOnlyRuleProperties>
- </CXX_Parser_Mapping_Rule>
- </ItemDefinitionGroup>
-</Project>
diff --git a/xsd/dist/etc/vc-1x.0/xsd-cxx-parser.targets b/xsd/dist/etc/vc-1x.0/xsd-cxx-parser.targets
deleted file mode 100644
index 62ad2b2..0000000
--- a/xsd/dist/etc/vc-1x.0/xsd-cxx-parser.targets
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <PropertyPageSchema
- Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
- <AvailableItemName
- Include="CXX_Parser_Mapping_Rule">
- <Targets>XsdCompile</Targets>
- </AvailableItemName>
- </ItemGroup>
- <UsingTask
- TaskName="CXX_Parser_Mapping_Rule"
- TaskFactory="XamlTaskFactory"
- AssemblyName="Microsoft.Build.Tasks.v4.0">
- <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
- </UsingTask>
- <Target
- Name="XsdCompile"
- BeforeTargets="$(CXX_Parser_Mapping_RuleBeforeTargets)"
- AfterTargets="$(CXX_Parser_Mapping_RuleAfterTargets)"
- Condition="'@(CXX_Parser_Mapping_Rule)' != ''"
- DependsOnTargets="$(CXX_Parser_Mapping_RuleDependsOn);XsdOutputDir"
- Outputs="%(CXX_Parser_Mapping_Rule.OutDir)\%(CXX_Parser_Mapping_Rule.Filename)%(CXX_Parser_Mapping_Rule.SkelFileSuffix)%(CXX_Parser_Mapping_Rule.HeaderSuffix);%(CXX_Parser_Mapping_Rule.OutDir)\%(CXX_Parser_Mapping_Rule.Filename)%(CXX_Parser_Mapping_Rule.SkelFileSuffix)%(CXX_Parser_Mapping_Rule.SourceSuffix)"
- Inputs="%(CXX_Parser_Mapping_Rule.Identity);%(CXX_Parser_Mapping_Rule.AdditionalDependencies);$(MSBuildProjectFile)">
- <ItemGroup
- Condition="'@(SelectedFiles)' != ''">
- <CXX_Parser_Mapping_Rule
- Remove="@(CXX_Parser_Mapping_Rule)"
- Condition="'%(Identity)' != '@(SelectedFiles)'" />
- </ItemGroup>
- <ItemGroup>
- <CXX_Parser_Mapping_Rule_tlog
- Include="%(CXX_Parser_Mapping_Rule.OutDir)\%(CXX_Parser_Mapping_Rule.Filename)%(CXX_Parser_Mapping_Rule.SkelFileSuffix)%(CXX_Parser_Mapping_Rule.HeaderSuffix);%(CXX_Parser_Mapping_Rule.OutDir)\%(CXX_Parser_Mapping_Rule.Filename)%(CXX_Parser_Mapping_Rule.SkelFileSuffix)%(CXX_Parser_Mapping_Rule.SourceSuffix)"
- Condition="'%(CXX_Parser_Mapping_Rule.OutDir)\%(CXX_Parser_Mapping_Rule.Filename)%(CXX_Parser_Mapping_Rule.SkelFileSuffix)%(CXX_Parser_Mapping_Rule.HeaderSuffix);%(CXX_Parser_Mapping_Rule.OutDir)\%(CXX_Parser_Mapping_Rule.Filename)%(CXX_Parser_Mapping_Rule.SkelFileSuffix)%(CXX_Parser_Mapping_Rule.SourceSuffix)' != '' and '%(CXX_Parser_Mapping_Rule.ExcludedFromBuild)' != 'true'">
- <Source>@(CXX_Parser_Mapping_Rule, '|')</Source>
- </CXX_Parser_Mapping_Rule_tlog>
- </ItemGroup>
- <Message
- Importance="High"
- Text="%(CXX_Parser_Mapping_Rule.ExecutionDescription)" />
- <WriteLinesToFile
- Condition="'@(CXX_Parser_Mapping_Rule_tlog)' != '' and '%(CXX_Parser_Mapping_Rule_tlog.ExcludedFromBuild)' != 'true'"
- File="$(IntDir)$(ProjectName).write.1.tlog"
- Lines="^%(CXX_Parser_Mapping_Rule_tlog.Source);@(CXX_Parser_Mapping_Rule_tlog-&gt;'%(Fullpath)')" />
- <CXX_Parser_Mapping_Rule
- Condition="'@(CXX_Parser_Mapping_Rule)' != '' and '%(CXX_Parser_Mapping_Rule.ExcludedFromBuild)' != 'true'"
- CommandLineTemplate="%(CXX_Parser_Mapping_Rule.CommandLineTemplate)"
- ProprietaryLicense="%(CXX_Parser_Mapping_Rule.ProprietaryLicense)"
- GenInline="%(CXX_Parser_Mapping_Rule.GenInline)"
- GenValidation="%(CXX_Parser_Mapping_Rule.GenValidation)"
- SupValidation="%(CXX_Parser_Mapping_Rule.SupValidation)"
- GenPolymorphic="%(CXX_Parser_Mapping_Rule.GenPolymorphic)"
- OutDir="%(CXX_Parser_Mapping_Rule.OutDir)"
- HeaderSuffix="%(CXX_Parser_Mapping_Rule.HeaderSuffix)"
- SourceSuffix="%(CXX_Parser_Mapping_Rule.SourceSuffix)"
- InlineSuffix="%(CXX_Parser_Mapping_Rule.InlineSuffix)"
- SkelFileSuffix="%(CXX_Parser_Mapping_Rule.SkelFileSuffix)"
- NamespaceMap="%(CXX_Parser_Mapping_Rule.NamespaceMap)"
- TypeMap="%(CXX_Parser_Mapping_Rule.TypeMap)"
- SkelTypeSuffix="%(CXX_Parser_Mapping_Rule.SkelTypeSuffix)"
- ExportSymbol="%(CXX_Parser_Mapping_Rule.ExportSymbol)"
- HxxPrologue="%(CXX_Parser_Mapping_Rule.HxxPrologue)"
- HxxEpilogue="%(CXX_Parser_Mapping_Rule.HxxEpilogue)"
- CharType="%(CXX_Parser_Mapping_Rule.CharType)"
- CharEncoding="%(CXX_Parser_Mapping_Rule.CharEncoding)"
- XMLParser="%(CXX_Parser_Mapping_Rule.XMLParser)"
- AdditionalOptions="%(CXX_Parser_Mapping_Rule.AdditionalOptions)"
- Inputs="%(CXX_Parser_Mapping_Rule.Identity)" />
- </Target>
- <Target
- Name="XsdClean"
- BeforeTargets="CoreCppClean"
- AfterTargets="_PrepareForClean"
- Condition="'@(CXX_Parser_Mapping_Rule)' != ''">
- <PropertyGroup>
- <XsdCleanFilePatternsToDelete>@(CXX_Parser_Mapping_Rule->Metadata('OutDir')->Distinct())\@(CXX_Parser_Mapping_Rule->Metadata('Filename')->Distinct())@(CXX_Parser_Mapping_Rule->Metadata('SkelFileSuffix')->Distinct())@(CXX_Parser_Mapping_Rule->Metadata('HeaderSuffix')->Distinct());@(CXX_Parser_Mapping_Rule->Metadata('OutDir')->Distinct())\@(CXX_Parser_Mapping_Rule->Metadata('Filename')->Distinct())@(CXX_Parser_Mapping_Rule->Metadata('SkelFileSuffix')->Distinct())@(CXX_Parser_Mapping_Rule->Metadata('SourceSuffix')->Distinct());@(CXX_Parser_Mapping_Rule->Metadata('OutDir')->Distinct())\@(CXX_Parser_Mapping_Rule->Metadata('Filename')->Distinct())@(CXX_Parser_Mapping_Rule->Metadata('SkelFileSuffix')->Distinct())@(CXX_Parser_Mapping_Rule->Metadata('InlineSuffix')->Distinct());</XsdCleanFilePatternsToDelete>
- </PropertyGroup>
- <ItemGroup>
- <CoreCppClean>
- <FilePatternsToDelete
- Condition="'%(CoreCppClean.FilePatternsToDelete)' != ''">%(CoreCppClean.FilePatternsToDelete);$(XsdCleanFilePatternsToDelete)</FilePatternsToDelete>
- <FilePatternsToDelete
- Condition="'%(CoreCppClean.FilePatternsToDelete)' == ''">$(XsdCleanFilePatternsToDelete)</FilePatternsToDelete>
- </CoreCppClean>
- </ItemGroup>
- </Target>
- <Target
- Name="XsdOutputDir"
- Condition="'@(CXX_Parser_Mapping_Rule)' != ''">
- <MakeDir Directories="@(CXX_Parser_Mapping_Rule->Metadata('OutDir')->Distinct()->ClearMetadata())" />
- </Target>
-</Project>
diff --git a/xsd/dist/etc/vc-1x.0/xsd-cxx-parser.xml b/xsd/dist/etc/vc-1x.0/xsd-cxx-parser.xml
deleted file mode 100644
index 37202c6..0000000
--- a/xsd/dist/etc/vc-1x.0/xsd-cxx-parser.xml
+++ /dev/null
@@ -1,284 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ProjectSchemaDefinitions xmlns="clr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Framework" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:transformCallback="Microsoft.Cpp.Dev10.ConvertPropertyCallback">
- <Rule
- Name="CXX_Parser_Mapping_Rule"
- PageTemplate="tool"
- DisplayName="C++/Parser Mapping"
- Order="200">
- <Rule.DataSource>
- <DataSource
- Persistence="ProjectFile"
- ItemType="CXX_Parser_Mapping_Rule" />
- </Rule.DataSource>
- <Rule.Categories>
- <Category
- Name="General">
- <Category.DisplayName>
- <sys:String>General</sys:String>
- </Category.DisplayName>
- </Category>
- <Category
- Name="Command Line"
- Subtype="CommandLine">
- <Category.DisplayName>
- <sys:String>Command Line</sys:String>
- </Category.DisplayName>
- </Category>
- </Rule.Categories>
- <StringListProperty
- Name="Inputs"
- Category="Command Line"
- IsRequired="true"
- Switch=" ">
- <StringListProperty.DataSource>
- <DataSource
- Persistence="ProjectFile"
- ItemType="CXX_Parser_Mapping_Rule"
- SourceType="Item" />
- </StringListProperty.DataSource>
- </StringListProperty>
- <BoolProperty
- Name="ProprietaryLicense"
- Subcategory="Licensing"
- HelpContext="0"
- DisplayName="Proprietary License"
- Description="Indicate that the generated code is licensed under a proprietary license instead of the GPL."
- Switch="--proprietary-license" />
- <BoolProperty
- Name="GenInline"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Inline"
- Description="Generate simple functions inline. This option triggers creation of the inline file."
- Switch="--generate-inline" />
- <BoolProperty
- Name="GenValidation"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Validation Code"
- Description="Generate validation code which ensures that instance documents conform to the schema. This is the default for the Expat XML parser."
- Switch="--generate-validation" />
- <BoolProperty
- Name="SupValidation"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Suppress Validation Code"
- Description="Suppress generation of validation code. This is the default for the Xerces-C++ XML parser."
- Switch="--suppress-validation" />
- <BoolProperty
- Name="GenPolymorphic"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Polymorphic"
- Description="Generate polymorphism-aware code. Specify this option if you use substitution groups or xsi:type."
- Switch="--generate-polymorphic" />
- <StringProperty
- Name="OutDir"
- Subcategory="Output"
- HelpContext="0"
- DisplayName="Output Directory"
- Description="Output directory for the generated files"
- Switch="--output-dir &quot;[value]&quot;" />
- <StringProperty
- Name="HeaderSuffix"
- Subcategory="Output"
- HelpContext="0"
- DisplayName="C++ Header Suffix "
- Description="Generated C++ header file suffix"
- Switch="--hxx-suffix &quot;[value]&quot;" />
- <StringProperty
- Name="SourceSuffix"
- Subcategory="Output"
- HelpContext="0"
- DisplayName="C++ Source Suffix"
- Description="Generated C++ source file suffix"
- Switch="--cxx-suffix &quot;[value]&quot;" />
- <StringProperty
- Name="InlineSuffix"
- Subcategory="Output"
- HelpContext="0"
- DisplayName="C++ Inline Suffix"
- Description="Generated C++ inline file suffix"
- Switch="--ixx-suffix &quot;[value]&quot;" />
- <StringProperty
- Name="SkelFileSuffix"
- Subcategory="Output"
- HelpContext="0"
- DisplayName="Parser Skeleton File Suffix"
- Description="Use the provided suffix to construct the names of generated parser skeleton file."
- Switch="--skel-file-suffix &quot;[value]&quot;" />
- <StringListProperty
- Name="NamespaceMap"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Namespace Map"
- Description="Map XML Schema namespaces to C++ namespaces by specifying a semicolon-separated list of mapping rules in the form &lt;xml-ns&gt;=&lt;cxx-ns&gt; where &lt;xml-ns&gt; stands for an XML Schema namespace and &lt;cxx-ns&gt; - for a C++ namespace."
- Switch="--namespace-map &quot;[value]&quot;" />
- <StringListProperty
- Name="TypeMap"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Type Map"
- Description="Specify type map files as a semicolon-separated list."
- Switch="--type-map &quot;[value]&quot;" />
- <StringProperty
- Name="SkelTypeSuffix"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Parser Skeleton Type Suffix"
- Description="Use the provided suffix to construct the names of generated parser skeletons."
- Switch="--skel-type-suffix &quot;[value]&quot;" />
- <StringListProperty
- Name="ExportSymbol"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Export Symbol"
- Description="Insert the specified symbol in places where DLL export/import control statements (__declspec(dllexport/dllimport)) are necessary."
- Switch="--export-symbol &quot;[value]&quot;" />
- <StringListProperty
- Name="HxxPrologue"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Header Prologue File"
- Description="Insert the contents of the file specified at the beginning of the header file."
- Switch="--hxx-prologue-file &quot;[value]&quot;" />
- <StringListProperty
- Name="HxxEpilogue"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Header Epilogue File"
- Description="Insert the contents of the file specified at the end of the header file."
- Switch="--hxx-epilogue-file &quot;[value]&quot;" />
- <EnumProperty
- Name="CharType"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Char Type"
- Description="Character type to be used in the generated code.">
- <EnumValue
- Name="0"
- DisplayName="char" />
- <EnumValue
- Name="1"
- DisplayName="wchar_t"
- Switch="--char-type wchar_t" />
- </EnumProperty>
- <EnumProperty
- Name="CharEncoding"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Char Encoding"
- Description="Character encoding to be used bu the generated code.">
- <EnumValue
- Name="0"
- DisplayName="UTF-8 (char)/UTF-16 (wchar_t)" />
- <EnumValue
- Name="1"
- DisplayName="ISO-8859-1"
- Switch="--char-encoding iso8859-1" />
- <EnumValue
- Name="2"
- DisplayName="Xerces-C++ local code page"
- Switch="--char-encoding lcp" />
- <EnumValue
- Name="3"
- DisplayName="Custom encoding"
- Switch="--char-encoding custom" />
- </EnumProperty>
- <EnumProperty
- Name="XMLParser"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Underlying XML Parser"
- Description="Use the specified parser as the underlying XML parser.">
- <EnumValue
- Name="0"
- DisplayName="xerces" />
- <EnumValue
- Name="1"
- DisplayName="expat"
- Switch="--xml-parser expat" />
- </EnumProperty>
- <StringProperty
- Name="CommandLineTemplate"
- DisplayName="Command Line"
- Visible="False"
- IncludeInCommandLine="False" />
- <DynamicEnumProperty
- Name="CXX_Parser_Mapping_RuleBeforeTargets"
- Category="General"
- EnumProvider="Targets"
- IncludeInCommandLine="False">
- <DynamicEnumProperty.DisplayName>
- <sys:String>Execute Before</sys:String>
- </DynamicEnumProperty.DisplayName>
- <DynamicEnumProperty.Description>
- <sys:String>Specifies the targets for the build customization to run before.</sys:String>
- </DynamicEnumProperty.Description>
- <DynamicEnumProperty.ProviderSettings>
- <NameValuePair
- Name="Exclude"
- Value="^CXX_Parser_Mapping_RuleBeforeTargets|^Compute" />
- </DynamicEnumProperty.ProviderSettings>
- <DynamicEnumProperty.DataSource>
- <DataSource
- Persistence="ProjectFile"
- HasConfigurationCondition="true" />
- </DynamicEnumProperty.DataSource>
- </DynamicEnumProperty>
- <DynamicEnumProperty
- Name="CXX_Parser_Mapping_RuleAfterTargets"
- Category="General"
- EnumProvider="Targets"
- IncludeInCommandLine="False">
- <DynamicEnumProperty.DisplayName>
- <sys:String>Execute After</sys:String>
- </DynamicEnumProperty.DisplayName>
- <DynamicEnumProperty.Description>
- <sys:String>Specifies the targets for the build customization to run after.</sys:String>
- </DynamicEnumProperty.Description>
- <DynamicEnumProperty.ProviderSettings>
- <NameValuePair
- Name="Exclude"
- Value="^CXX_Parser_Mapping_RuleAfterTargets|^Compute" />
- </DynamicEnumProperty.ProviderSettings>
- <DynamicEnumProperty.DataSource>
- <DataSource
- Persistence="ProjectFile"
- ItemType=""
- HasConfigurationCondition="true" />
- </DynamicEnumProperty.DataSource>
- </DynamicEnumProperty>
- <StringProperty
- Name="ExecutionDescription"
- DisplayName="Execution Description"
- Visible="False"
- IncludeInCommandLine="False" />
- <StringListProperty
- Name="AdditionalDependencies"
- DisplayName="Additional Dependencies"
- IncludeInCommandLine="False"
- Visible="true" />
- <StringProperty
- Subtype="AdditionalOptions"
- Name="AdditionalOptions"
- Category="Command Line">
- <StringProperty.DisplayName>
- <sys:String>Additional Options</sys:String>
- </StringProperty.DisplayName>
- <StringProperty.Description>
- <sys:String>Additional Options</sys:String>
- </StringProperty.Description>
- </StringProperty>
- </Rule>
- <ItemType
- Name="CXX_Parser_Mapping_Rule"
- DisplayName="C++/Parser Mapping" />
- <FileExtension
- Name="*.xsd"
- ContentType="CXX_Parser_Mapping_Rule" />
- <ContentType
- Name="CXX_Parser_Mapping_Rule"
- DisplayName="C++/Parser Mapping"
- ItemType="CXX_Parser_Mapping_Rule" />
-</ProjectSchemaDefinitions>
diff --git a/xsd/dist/etc/vc-1x.0/xsd-cxx-tree.props b/xsd/dist/etc/vc-1x.0/xsd-cxx-tree.props
deleted file mode 100644
index fc81c9b..0000000
--- a/xsd/dist/etc/vc-1x.0/xsd-cxx-tree.props
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup
- Condition="'$(CXX_Tree_Mapping_RuleBeforeTargets)' == '' and '$(CXX_Tree_Mapping_RuleAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
- <CXX_Tree_Mapping_RuleBeforeTargets>Midl</CXX_Tree_Mapping_RuleBeforeTargets>
- <CXX_Tree_Mapping_RuleAfterTargets>CustomBuild</CXX_Tree_Mapping_RuleAfterTargets>
- </PropertyGroup>
- <PropertyGroup>
- <CXX_Tree_Mapping_RuleDependsOn
- Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(CXX_Tree_Mapping_RuleDependsOn)</CXX_Tree_Mapping_RuleDependsOn>
- </PropertyGroup>
- <ItemDefinitionGroup>
- <CXX_Tree_Mapping_Rule>
- <ProprietaryLicense>False</ProprietaryLicense>
- <CxxStd>0</CxxStd>
- <GenInline>False</GenInline>
- <GenForward>False</GenForward>
- <GenSerialization>False</GenSerialization>
- <SupParsing>False</SupParsing>
- <GenPolymorphic>False</GenPolymorphic>
- <PolymorphicTypeAll>False</PolymorphicTypeAll>
- <GenOstream>False</GenOstream>
- <GenDoxygen>False</GenDoxygen>
- <GenComparison>False</GenComparison>
- <GenDefaultCtor>False</GenDefaultCtor>
- <GenFromBaseCtor>False</GenFromBaseCtor>
- <GenDetach>False</GenDetach>
- <GenWildcard>False</GenWildcard>
- <GenAnyType>False</GenAnyType>
- <GenElementType>False</GenElementType>
- <GenElementMap>False</GenElementMap>
- <GenIntellisense>False</GenIntellisense>
- <OutDir>.</OutDir>
- <HeaderSuffix>.hxx</HeaderSuffix>
- <SourceSuffix>.cxx</SourceSuffix>
- <InlineSuffix>.ixx</InlineSuffix>
- <ForwardSuffix>-fwd.hxx</ForwardSuffix>
- <CharType>0</CharType>
- <CharEncoding>0</CharEncoding>
- <TypeNaming>0</TypeNaming>
- <FunctionNaming>0</FunctionNaming>
- <CommandLineTemplate>xsd.exe cxx-tree [AllOptions] [AdditionalOptions] [Inputs]</CommandLineTemplate>
- <ExecutionDescription>xsd cxx-tree %(Identity)</ExecutionDescription>
- <ShowOnlyRuleProperties>false</ShowOnlyRuleProperties>
- </CXX_Tree_Mapping_Rule>
- </ItemDefinitionGroup>
-</Project>
diff --git a/xsd/dist/etc/vc-1x.0/xsd-cxx-tree.targets b/xsd/dist/etc/vc-1x.0/xsd-cxx-tree.targets
deleted file mode 100644
index 6156ec2..0000000
--- a/xsd/dist/etc/vc-1x.0/xsd-cxx-tree.targets
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <PropertyPageSchema
- Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
- <AvailableItemName
- Include="CXX_Tree_Mapping_Rule">
- <Targets>XsdCompile</Targets>
- </AvailableItemName>
- </ItemGroup>
- <UsingTask
- TaskName="CXX_Tree_Mapping_Rule"
- TaskFactory="XamlTaskFactory"
- AssemblyName="Microsoft.Build.Tasks.v4.0">
- <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
- </UsingTask>
- <Target
- Name="XsdCompile"
- BeforeTargets="$(CXX_Tree_Mapping_RuleBeforeTargets)"
- AfterTargets="$(CXX_Tree_Mapping_RuleAfterTargets)"
- Condition="'@(CXX_Tree_Mapping_Rule)' != ''"
- DependsOnTargets="$(CXX_Tree_Mapping_RuleDependsOn);XsdOutputDir"
- Outputs="%(CXX_Tree_Mapping_Rule.OutDir)\%(CXX_Tree_Mapping_Rule.Filename)%(CXX_Tree_Mapping_Rule.HeaderSuffix);%(CXX_Tree_Mapping_Rule.OutDir)\%(CXX_Tree_Mapping_Rule.Filename)%(CXX_Tree_Mapping_Rule.SourceSuffix)"
- Inputs="%(CXX_Tree_Mapping_Rule.Identity);%(CXX_Tree_Mapping_Rule.AdditionalDependencies);$(MSBuildProjectFile)">
- <ItemGroup
- Condition="'@(SelectedFiles)' != ''">
- <CXX_Tree_Mapping_Rule
- Remove="@(CXX_Tree_Mapping_Rule)"
- Condition="'%(Identity)' != '@(SelectedFiles)'" />
- </ItemGroup>
- <ItemGroup>
- <CXX_Tree_Mapping_Rule_tlog
- Include="%(CXX_Tree_Mapping_Rule.OutDir)\%(CXX_Tree_Mapping_Rule.Filename)%(CXX_Tree_Mapping_Rule.HeaderSuffix);%(CXX_Tree_Mapping_Rule.OutDir)\%(CXX_Tree_Mapping_Rule.Filename)%(CXX_Tree_Mapping_Rule.SourceSuffix)"
- Condition="'%(CXX_Tree_Mapping_Rule.OutDir)\%(CXX_Tree_Mapping_Rule.Filename)%(CXX_Tree_Mapping_Rule.HeaderSuffix);%(CXX_Tree_Mapping_Rule.OutDir)\%(CXX_Tree_Mapping_Rule.Filename)%(CXX_Tree_Mapping_Rule.SourceSuffix)' != '' and '%(CXX_Tree_Mapping_Rule.ExcludedFromBuild)' != 'true'">
- <Source>@(CXX_Tree_Mapping_Rule, '|')</Source>
- </CXX_Tree_Mapping_Rule_tlog>
- </ItemGroup>
- <Message
- Importance="High"
- Text="%(CXX_Tree_Mapping_Rule.ExecutionDescription)" />
- <WriteLinesToFile
- Condition="'@(CXX_Tree_Mapping_Rule_tlog)' != '' and '%(CXX_Tree_Mapping_Rule_tlog.ExcludedFromBuild)' != 'true'"
- File="$(IntDir)$(ProjectName).write.1.tlog"
- Lines="^%(CXX_Tree_Mapping_Rule_tlog.Source);@(CXX_Tree_Mapping_Rule_tlog-&gt;'%(Fullpath)')" />
- <CXX_Tree_Mapping_Rule
- Condition="'@(CXX_Tree_Mapping_Rule)' != '' and '%(CXX_Tree_Mapping_Rule.ExcludedFromBuild)' != 'true'"
- CommandLineTemplate="%(CXX_Tree_Mapping_Rule.CommandLineTemplate)"
- ProprietaryLicense="%(CXX_Tree_Mapping_Rule.ProprietaryLicense)"
- CxxStd="%(CXX_Tree_Mapping_Rule.CxxStd)"
- GenInline="%(CXX_Tree_Mapping_Rule.GenInline)"
- GenForward="%(CXX_Tree_Mapping_Rule.GenForward)"
- GenSerialization="%(CXX_Tree_Mapping_Rule.GenSerialization)"
- SupParsing="%(CXX_Tree_Mapping_Rule.SupParsing)"
- GenPolymorphic="%(CXX_Tree_Mapping_Rule.GenPolymorphic)"
- PolymorphicTypeAll="%(CXX_Tree_Mapping_Rule.PolymorphicTypeAll)"
- GenOstream="%(CXX_Tree_Mapping_Rule.GenOstream)"
- GenDoxygen="%(CXX_Tree_Mapping_Rule.GenDoxygen)"
- GenComparison="%(CXX_Tree_Mapping_Rule.GenComparison)"
- GenDefaultCtor="%(CXX_Tree_Mapping_Rule.GenDefaultCtor)"
- GenFromBaseCtor="%(CXX_Tree_Mapping_Rule.GenFromBaseCtor)"
- GenDetach="%(CXX_Tree_Mapping_Rule.GenDetach)"
- GenWildcard="%(CXX_Tree_Mapping_Rule.GenWildcard)"
- GenAnyType="%(CXX_Tree_Mapping_Rule.GenAnyType)"
- GenElementType="%(CXX_Tree_Mapping_Rule.GenElementType)"
- GenElementMap="%(CXX_Tree_Mapping_Rule.GenElementMap)"
- GenIntellisense="%(CXX_Tree_Mapping_Rule.GenIntellisense)"
- OutDir="%(CXX_Tree_Mapping_Rule.OutDir)"
- HeaderSuffix="%(CXX_Tree_Mapping_Rule.HeaderSuffix)"
- SourceSuffix="%(CXX_Tree_Mapping_Rule.SourceSuffix)"
- InlineSuffix="%(CXX_Tree_Mapping_Rule.InlineSuffix)"
- ForwardSuffix="%(CXX_Tree_Mapping_Rule.ForwardSuffix)"
- NamespaceMap="%(CXX_Tree_Mapping_Rule.NamespaceMap)"
- PolymorphicType="%(CXX_Tree_Mapping_Rule.PolymorphicType)"
- RootElement="%(CXX_Tree_Mapping_Rule.RootElement)"
- ExportSymbol="%(CXX_Tree_Mapping_Rule.ExportSymbol)"
- HxxPrologue="%(CXX_Tree_Mapping_Rule.HxxPrologue)"
- HxxEpilogue="%(CXX_Tree_Mapping_Rule.HxxEpilogue)"
- CharType="%(CXX_Tree_Mapping_Rule.CharType)"
- CharEncoding="%(CXX_Tree_Mapping_Rule.CharEncoding)"
- TypeNaming="%(CXX_Tree_Mapping_Rule.TypeNaming)"
- FunctionNaming="%(CXX_Tree_Mapping_Rule.FunctionNaming)"
- AdditionalOptions="%(CXX_Tree_Mapping_Rule.AdditionalOptions)"
- Inputs="%(CXX_Tree_Mapping_Rule.Identity)" />
- </Target>
- <Target
- Name="XsdClean"
- BeforeTargets="CoreCppClean"
- AfterTargets="_PrepareForClean"
- Condition="'@(CXX_Tree_Mapping_Rule)' != ''">
- <PropertyGroup>
- <XsdCleanFilePatternsToDelete>@(CXX_Tree_Mapping_Rule->Metadata('OutDir')->Distinct())\@(CXX_Tree_Mapping_Rule->Metadata('Filename')->Distinct())@(CXX_Tree_Mapping_Rule->Metadata('HeaderSuffix')->Distinct());@(CXX_Tree_Mapping_Rule->Metadata('OutDir')->Distinct())\@(CXX_Tree_Mapping_Rule->Metadata('Filename')->Distinct())@(CXX_Tree_Mapping_Rule->Metadata('SourceSuffix')->Distinct());@(CXX_Tree_Mapping_Rule->Metadata('OutDir')->Distinct())\@(CXX_Tree_Mapping_Rule->Metadata('Filename')->Distinct())@(CXX_Tree_Mapping_Rule->Metadata('InlineSuffix')->Distinct());@(CXX_Tree_Mapping_Rule->Metadata('OutDir')->Distinct())\@(CXX_Tree_Mapping_Rule->Metadata('Filename')->Distinct())@(CXX_Tree_Mapping_Rule->Metadata('ForwardSuffix')->Distinct())</XsdCleanFilePatternsToDelete>
- </PropertyGroup>
- <ItemGroup>
- <CoreCppClean>
- <FilePatternsToDelete
- Condition="'%(CoreCppClean.FilePatternsToDelete)' != ''">%(CoreCppClean.FilePatternsToDelete);$(XsdCleanFilePatternsToDelete)</FilePatternsToDelete>
- <FilePatternsToDelete
- Condition="'%(CoreCppClean.FilePatternsToDelete)' == ''">$(XsdCleanFilePatternsToDelete)</FilePatternsToDelete>
- </CoreCppClean>
- </ItemGroup>
- </Target>
- <Target
- Name="XsdOutputDir"
- Condition="'@(CXX_Tree_Mapping_Rule)' != ''">
- <MakeDir Directories="@(CXX_Tree_Mapping_Rule->Metadata('OutDir')->Distinct()->ClearMetadata())" />
- </Target>
-</Project>
diff --git a/xsd/dist/etc/vc-1x.0/xsd-cxx-tree.xml b/xsd/dist/etc/vc-1x.0/xsd-cxx-tree.xml
deleted file mode 100644
index e37eb1c..0000000
--- a/xsd/dist/etc/vc-1x.0/xsd-cxx-tree.xml
+++ /dev/null
@@ -1,411 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ProjectSchemaDefinitions xmlns="clr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Framework" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:transformCallback="Microsoft.Cpp.Dev10.ConvertPropertyCallback">
- <Rule
- Name="CXX_Tree_Mapping_Rule"
- PageTemplate="tool"
- DisplayName="C++/Tree Mapping"
- Order="200">
- <Rule.DataSource>
- <DataSource
- Persistence="ProjectFile"
- ItemType="CXX_Tree_Mapping_Rule" />
- </Rule.DataSource>
- <Rule.Categories>
- <Category
- Name="General">
- <Category.DisplayName>
- <sys:String>General</sys:String>
- </Category.DisplayName>
- </Category>
- <Category
- Name="Command Line"
- Subtype="CommandLine">
- <Category.DisplayName>
- <sys:String>Command Line</sys:String>
- </Category.DisplayName>
- </Category>
- </Rule.Categories>
- <StringListProperty
- Name="Inputs"
- Category="Command Line"
- IsRequired="true"
- Switch=" ">
- <StringListProperty.DataSource>
- <DataSource
- Persistence="ProjectFile"
- ItemType="CXX_Tree_Mapping_Rule"
- SourceType="Item" />
- </StringListProperty.DataSource>
- </StringListProperty>
- <BoolProperty
- Name="ProprietaryLicense"
- Subcategory="Licensing"
- HelpContext="0"
- DisplayName="Proprietary License"
- Description="Indicate that the generated code is licensed under a proprietary license instead of the GPL."
- Switch="--proprietary-license" />
- <EnumProperty
- Name="CxxStd"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="C++ Standard"
- Description="C++ Standard the generated code should conform to.">
- <EnumValue
- Name="0"
- DisplayName="c++98" />
- <EnumValue
- Name="1"
- DisplayName="c++11"
- Switch="--std c++11" />
- </EnumProperty>
- <BoolProperty
- Name="GenInline"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Inline"
- Description="Generate simple functions inline. This option triggers creation of the inline file."
- Switch="--generate-inline" />
- <BoolProperty
- Name="GenForward"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Forward"
- Description="Generate a separate header file with forward declarations for the types being generated."
- Switch="--generate-forward" />
- <BoolProperty
- Name="GenSerialization"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Serialization"
- Description="Generate serialization functions. Serialization functions convert the object model back to XML."
- Switch="--generate-serialization" />
- <BoolProperty
- Name="SupParsing"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Suppress Parsing"
- Description="Suppress generation of the parsing functions and constructors."
- Switch="--suppress-parsing" />
- <BoolProperty
- Name="GenPolymorphic"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Polymorphic"
- Description="Generate polymorphism-aware code. Specify this option if you use substitution groups or xsi:type."
- Switch="--generate-polymorphic" />
- <BoolProperty
- Name="PolymorphicTypeAll"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="All Types Polymorphic"
- Description="Indicate that all types should be treated as polymorphic."
- Switch="--polymorphic-type-all" />
- <BoolProperty
- Name="GenOstream"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Ostream"
- Description="Generate ostream insertion operators for generated types. This allows to easily print a fragment or the whole object model for debugging or logging."
- Switch="--generate-ostream" />
- <BoolProperty
- Name="GenDoxygen"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Doxygen"
- Description="Generate documentation comments suitable for extraction by the Doxygen documentation system."
- Switch="--generate-doxygen" />
- <BoolProperty
- Name="GenComparison"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Comparison"
- Description="Generate comparison operators for complex types."
- Switch="--generate-comparison" />
- <BoolProperty
- Name="GenDefaultCtor"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Default Constructors"
- Description="Generate default constructors even for types that have required members."
- Switch="--generate-default-ctor" />
- <BoolProperty
- Name="GenFromBaseCtor"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate From-Base Constructors"
- Description="Generate constructors that expect an instance of a base type followed by all required members."
- Switch="--generate-from-base-ctor" />
- <BoolProperty
- Name="GenDetach"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Detach"
- Description="Generate detach functions for required elements and attributes."
- Switch="--generate-detach" />
- <BoolProperty
- Name="GenWildcard"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Wildcard"
- Description="Generate accessors and modifiers as well as parsing and serialization code for XML Schema wildcards (any and anyAttribute)."
- Switch="--generate-wildcard" />
- <BoolProperty
- Name="GenAnyType"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate anyType"
- Description="Extract and store content of the XML Schema anyType type as a DOM fragment."
- Switch="--generate-any-type" />
- <BoolProperty
- Name="GenElementType"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Element Types"
- Description="Generate types instead of parsing and serialization functions for root elements."
- Switch="--generate-element-type" />
- <BoolProperty
- Name="GenElementMap"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate Element Map"
- Description="Generate a root element map that allows uniform parsing and serialization of multiple root elements."
- Switch="--generate-element-map" />
- <BoolProperty
- Name="GenIntellisense"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Generate IntelliSense"
- Description="Generate workarounds for IntelliSense bugs in Visual Studio 2005 (8.0)."
- Switch="--generate-intellisense" />
- <StringProperty
- Name="OutDir"
- Subcategory="Output"
- HelpContext="0"
- DisplayName="Output Directory"
- Description="Output directory for the generated files"
- Switch="--output-dir &quot;[value]&quot;" />
- <StringProperty
- Name="HeaderSuffix"
- Subcategory="Output"
- HelpContext="0"
- DisplayName="C++ Header Suffix "
- Description="Generated C++ header file suffix"
- Switch="--hxx-suffix &quot;[value]&quot;" />
- <StringProperty
- Name="SourceSuffix"
- Subcategory="Output"
- HelpContext="0"
- DisplayName="C++ Source Suffix"
- Description="Generated C++ source file suffix"
- Switch="--cxx-suffix &quot;[value]&quot;" />
- <StringProperty
- Name="InlineSuffix"
- Subcategory="Output"
- HelpContext="0"
- DisplayName="C++ Inline Suffix"
- Description="Generated C++ inline file suffix"
- Switch="--ixx-suffix &quot;[value]&quot;" />
- <StringProperty
- Name="ForwardSuffix"
- Subcategory="Output"
- HelpContext="0"
- DisplayName="C++ Forward Declaration Suffix"
- Description="Generated C++ forward declaration file suffix"
- Switch="--fwd-suffix &quot;[value]&quot;" />
- <StringListProperty
- Name="NamespaceMap"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Namespace Map"
- Description="Map XML Schema namespaces to C++ namespaces by specifying a semicolon-separated list of mapping rules in the form &lt;xml-ns&gt;=&lt;cxx-ns&gt; where &lt;xml-ns&gt; stands for an XML Schema namespace and &lt;cxx-ns&gt; - for a C++ namespace."
- Switch="--namespace-map &quot;[value]&quot;" />
- <StringListProperty
- Name="PolymorphicType"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Polymorphic Types"
- Description="Treat specified semicolon-separated list of types as roots of polymorphic type hierarchies."
- Switch="--polymorphic-type &quot;[value]&quot;" />
- <StringListProperty
- Name="RootElement"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Root Element"
- Description="Treat only specified semicolon-separated list of elements as document roots."
- Switch="--root-element &quot;[value]&quot;" />
- <StringListProperty
- Name="ExportSymbol"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Export Symbol"
- Description="Insert the specified symbol in places where DLL export/import control statements (__declspec(dllexport/dllimport)) are necessary."
- Switch="--export-symbol &quot;[value]&quot;" />
- <StringListProperty
- Name="HxxPrologue"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Header Prologue File"
- Description="Insert the contents of the file specified at the beginning of the header file."
- Switch="--hxx-prologue-file &quot;[value]&quot;" />
- <StringListProperty
- Name="HxxEpilogue"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Header Epilogue File"
- Description="Insert the contents of the file specified at the end of the header file."
- Switch="--hxx-epilogue-file &quot;[value]&quot;" />
- <EnumProperty
- Name="CharType"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Char Type"
- Description="Character type to be used in the generated code.">
- <EnumValue
- Name="0"
- DisplayName="char" />
- <EnumValue
- Name="1"
- DisplayName="wchar_t"
- Switch="--char-type wchar_t" />
- </EnumProperty>
- <EnumProperty
- Name="CharEncoding"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Char Encoding"
- Description="Character encoding to be used bu the generated code.">
- <EnumValue
- Name="0"
- DisplayName="UTF-8 (char)/UTF-16 (wchar_t)" />
- <EnumValue
- Name="1"
- DisplayName="ISO-8859-1"
- Switch="--char-encoding iso8859-1" />
- <EnumValue
- Name="2"
- DisplayName="Xerces-C++ local code page"
- Switch="--char-encoding lcp" />
- <EnumValue
- Name="3"
- DisplayName="Custom encoding"
- Switch="--char-encoding custom" />
- </EnumProperty>
- <EnumProperty
- Name="TypeNaming"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Type Naming"
- Description="Specify the type naming convention that should be used in the generated code.">
- <EnumValue
- Name="0"
- DisplayName="K&amp;R" />
- <EnumValue
- Name="1"
- DisplayName="Java"
- Switch="--type-naming java" />
- <EnumValue
- Name="2"
- DisplayName="Upper Camel Case"
- Switch="--type-naming ucc" />
- </EnumProperty>
- <EnumProperty
- Name="FunctionNaming"
- Category="Code Generation"
- HelpContext="0"
- DisplayName="Function Naming"
- Description="Specify the function naming convention that should be used in the generated code.">
- <EnumValue
- Name="0"
- DisplayName="K&amp;R" />
- <EnumValue
- Name="1"
- DisplayName="Java"
- Switch="--function-naming java" />
- <EnumValue
- Name="2"
- DisplayName="Lower Camel Case"
- Switch="--function-naming lcc" />
- </EnumProperty>
- <StringProperty
- Name="CommandLineTemplate"
- DisplayName="Command Line"
- Visible="False"
- IncludeInCommandLine="False" />
- <DynamicEnumProperty
- Name="CXX_Tree_Mapping_RuleBeforeTargets"
- Category="General"
- EnumProvider="Targets"
- IncludeInCommandLine="False">
- <DynamicEnumProperty.DisplayName>
- <sys:String>Execute Before</sys:String>
- </DynamicEnumProperty.DisplayName>
- <DynamicEnumProperty.Description>
- <sys:String>Specifies the targets for the build customization to run before.</sys:String>
- </DynamicEnumProperty.Description>
- <DynamicEnumProperty.ProviderSettings>
- <NameValuePair
- Name="Exclude"
- Value="^CXX_Tree_Mapping_RuleBeforeTargets|^Compute" />
- </DynamicEnumProperty.ProviderSettings>
- <DynamicEnumProperty.DataSource>
- <DataSource
- Persistence="ProjectFile"
- HasConfigurationCondition="true" />
- </DynamicEnumProperty.DataSource>
- </DynamicEnumProperty>
- <DynamicEnumProperty
- Name="CXX_Tree_Mapping_RuleAfterTargets"
- Category="General"
- EnumProvider="Targets"
- IncludeInCommandLine="False">
- <DynamicEnumProperty.DisplayName>
- <sys:String>Execute After</sys:String>
- </DynamicEnumProperty.DisplayName>
- <DynamicEnumProperty.Description>
- <sys:String>Specifies the targets for the build customization to run after.</sys:String>
- </DynamicEnumProperty.Description>
- <DynamicEnumProperty.ProviderSettings>
- <NameValuePair
- Name="Exclude"
- Value="^CXX_Tree_Mapping_RuleAfterTargets|^Compute" />
- </DynamicEnumProperty.ProviderSettings>
- <DynamicEnumProperty.DataSource>
- <DataSource
- Persistence="ProjectFile"
- ItemType=""
- HasConfigurationCondition="true" />
- </DynamicEnumProperty.DataSource>
- </DynamicEnumProperty>
- <StringProperty
- Name="ExecutionDescription"
- DisplayName="Execution Description"
- Visible="False"
- IncludeInCommandLine="False" />
- <StringListProperty
- Name="AdditionalDependencies"
- DisplayName="Additional Dependencies"
- IncludeInCommandLine="False"
- Visible="true" />
- <StringProperty
- Subtype="AdditionalOptions"
- Name="AdditionalOptions"
- Category="Command Line">
- <StringProperty.DisplayName>
- <sys:String>Additional Options</sys:String>
- </StringProperty.DisplayName>
- <StringProperty.Description>
- <sys:String>Additional Options</sys:String>
- </StringProperty.Description>
- </StringProperty>
- </Rule>
- <ItemType
- Name="CXX_Tree_Mapping_Rule"
- DisplayName="C++/Tree Mapping" />
- <FileExtension
- Name="*.xsd"
- ContentType="CXX_Tree_Mapping_Rule" />
- <ContentType
- Name="CXX_Tree_Mapping_Rule"
- DisplayName="C++/Tree Mapping"
- ItemType="CXX_Tree_Mapping_Rule" />
-</ProjectSchemaDefinitions>
diff --git a/xsd/dist/etc/vc-8.0/xsd-cxx-parser.rules b/xsd/dist/etc/vc-8.0/xsd-cxx-parser.rules
deleted file mode 100644
index a94a3ea..0000000
--- a/xsd/dist/etc/vc-8.0/xsd-cxx-parser.rules
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
- Name="CodeSynthesis XSD Compiler C++/Parser Mapping Rules"
- Version="8.00"
- >
- <Rules>
- <CustomBuildRule
- Name="C++/Parser Mapping Rule"
- DisplayName="C++/Parser Mapping Rule"
- CommandLine="xsd.exe cxx-parser [AllOptions] [AdditionalOptions] [Inputs]"
- Outputs="[$OutDir]\$(InputName)[$SkelFileSuffix][$HeaderSuffix];[$OutDir]\$(InputName)[$SkelFileSuffix][$SourceSuffix]"
- FileExtensions="*.xsd"
- ExecutionDescription="xsd cxx-parser [Inputs]"
- ShowOnlyRuleProperties="false"
- >
- <Properties>
- <StringProperty
- Name="OutDir"
- DisplayName="Output Directory"
- Category="Output"
- Description="Output directory for the generated files"
- Switch="--output-dir [value]"
- DefaultValue="."
- />
- <BooleanProperty
- Name="ProprietaryLicense"
- DisplayName="Proprietary License"
- Category="Licensing"
- Description="Indicate that the generated code is licensed under a proprietary license instead of the GPL."
- Switch="--proprietary-license"
- />
- <StringProperty
- Name="HeaderSuffix"
- DisplayName="C++ Header Suffix "
- Category="Output"
- Description="Generated C++ header file suffix"
- Switch="--hxx-suffix [value]"
- DefaultValue=".hxx"
- />
- <StringProperty
- Name="SourceSuffix"
- DisplayName="C++ Source Suffix"
- Category="Output"
- Description="Generated C++ source file suffix"
- Switch="--cxx-suffix [value]"
- DefaultValue=".cxx"
- />
- <StringProperty
- Name="InlineSuffix"
- DisplayName="C++ Inline Suffix"
- Category="Output"
- Description="Generated C++ inline file suffix"
- Switch="--ixx-suffix [value]"
- DefaultValue=".ixx"
- />
- <StringProperty
- Name="SkelFileSuffix"
- DisplayName="Parser Skeleton File Suffix"
- PropertyPageName="Output"
- Description="Use the provided suffix to construct the names of generated parser skeleton file."
- Switch="--skel-file-suffix [value]"
- DefaultValue="-pskel"
- />
- <EnumProperty
- Name="CharType"
- DisplayName="Char Type"
- PropertyPageName="Code Generation"
- Description="Character type to be used in the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="char"
- />
- <EnumValue
- Value="1"
- Switch="--char-type wchar_t"
- DisplayName="wchar_t"
- />
- </Values>
- </EnumProperty>
- <EnumProperty
- Name="CharEncoding"
- DisplayName="Char Encoding"
- PropertyPageName="Code Generation"
- Description="Character encoding to be used bu the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="UTF-8 (char)/UTF-16 (wchar_t)"
- />
- <EnumValue
- Value="1"
- Switch="--char-encoding iso8859-1"
- DisplayName="ISO-8859-1"
- />
- <EnumValue
- Value="2"
- Switch="--char-encoding lcp"
- DisplayName="Xerces-C++ local code page"
- />
- <EnumValue
- Value="3"
- Switch="--char-encoding custom"
- DisplayName="Custom encoding"
- />
- </Values>
- </EnumProperty>
- <EnumProperty
- Name="XMLParser"
- DisplayName="Underlying XML Parser"
- PropertyPageName="Code Generation"
- Description="Use the specified parser as the underlying XML parser."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="xerces"
- />
- <EnumValue
- Value="1"
- Switch="--xml-parser expat"
- DisplayName="expat"
- />
- </Values>
- </EnumProperty>
- <StringProperty
- Name="NamespaceMap"
- DisplayName="Namespace Map"
- PropertyPageName="Code Generation"
- Description="Map XML Schema namespaces to C++ namespaces by specifying a comma-separated list of mapping rules in the form &lt;xml-ns&gt;=&lt;cxx-ns&gt; where &lt;xml-ns&gt; stands for an XML Schema namespace and &lt;cxx-ns&gt; - for a C++ namespace."
- Switch="--namespace-map [value]"
- Delimited="true"
- Delimiters=","
- />
- <StringProperty
- Name="TypeMap"
- DisplayName="Type Map"
- PropertyPageName="Code Generation"
- Description="Specify type map files as a comma-separated list."
- Switch="--type-map [value]"
- Delimited="true"
- Delimiters=","
- />
- <BooleanProperty
- Name="GenInline"
- DisplayName="Generate Inline"
- PropertyPageName="Code Generation"
- Description="Generate simple functions inline. This option triggers creation of the inline file."
- Switch="--generate-inline"
- />
- <BooleanProperty
- Name="GenValidation"
- DisplayName="Generate Validation Code"
- PropertyPageName="Code Generation"
- Description="Generate validation code which ensures that instance documents conform to the schema. This is the default for the Expat XML parser."
- Switch="--generate-validation"
- />
- <BooleanProperty
- Name="SupValidation"
- DisplayName="Suppress Validation Code"
- PropertyPageName="Code Generation"
- Description="Suppress generation of validation code. This is the default for the Xerces-C++ XML parser."
- Switch="--suppress-validation"
- />
- <BooleanProperty
- Name="GenPolymorphic"
- DisplayName="Generate Polymorphic"
- PropertyPageName="Code Generation"
- Description="Generate polymorphism-aware code. Specify this option if you use substitution groups or xsi:type."
- Switch="--generate-polymorphic"
- />
- <StringProperty
- Name="SkelTypeSuffix"
- DisplayName="Parser Skeleton Type Suffix"
- PropertyPageName="Code Generation"
- Description="Use the provided suffix to construct the names of generated parser skeletons."
- Switch="--skel-type-suffix [value]"
- DefaultValue="_pskel"
- />
- <StringProperty
- Name="ExportSymbol"
- DisplayName="Export Symbol"
- PropertyPageName="Code Generation"
- Description="Insert the specified symbol in places where DLL export/import control statements (__declspec(dllexport/dllimport)) are necessary."
- Switch="--export-symbol [value]"
- />
- <StringProperty
- Name="HxxPrologue"
- DisplayName="Header Prologue File"
- PropertyPageName="Code Generation"
- Description="Insert the contents of the file specified at the beginning of the header file."
- Switch="--hxx-prologue-file [value]"
- />
- <StringProperty
- Name="HxxEpilogue"
- DisplayName="Header Epilogue File"
- PropertyPageName="Code Generation"
- Description="Insert the contents of the file specified at the end of the header file."
- Switch="--hxx-epilogue-file [value]"
- />
- </Properties>
- </CustomBuildRule>
- </Rules>
-</VisualStudioToolFile>
diff --git a/xsd/dist/etc/vc-8.0/xsd-cxx-tree.rules b/xsd/dist/etc/vc-8.0/xsd-cxx-tree.rules
deleted file mode 100644
index b3e921a..0000000
--- a/xsd/dist/etc/vc-8.0/xsd-cxx-tree.rules
+++ /dev/null
@@ -1,320 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
- Name="CodeSynthesis XSD Compiler C++/Tree Mapping Rules"
- Version="8.00"
- >
- <Rules>
- <CustomBuildRule
- Name="C++/Tree Mapping Rule"
- DisplayName="C++/Tree Mapping Rule"
- CommandLine="xsd.exe cxx-tree [AllOptions] [AdditionalOptions] [Inputs]"
- Outputs="[$OutDir]\$(InputName)[$HeaderSuffix];[$OutDir]\$(InputName)[$SourceSuffix]"
- FileExtensions="*.xsd"
- ExecutionDescription="xsd cxx-tree [Inputs]"
- ShowOnlyRuleProperties="false"
- >
- <Properties>
- <StringProperty
- Name="OutDir"
- DisplayName="Output Directory"
- Category="Output"
- Description="Output directory for the generated files"
- Switch="--output-dir [value]"
- DefaultValue="."
- />
- <BooleanProperty
- Name="ProprietaryLicense"
- DisplayName="Proprietary License"
- Category="Licensing"
- Description="Indicate that the generated code is licensed under a proprietary license instead of the GPL."
- Switch="--proprietary-license"
- />
- <StringProperty
- Name="HeaderSuffix"
- DisplayName="C++ Header Suffix "
- Category="Output"
- Description="Generated C++ header file suffix"
- Switch="--hxx-suffix [value]"
- DefaultValue=".hxx"
- />
- <StringProperty
- Name="SourceSuffix"
- DisplayName="C++ Source Suffix"
- Category="Output"
- Description="Generated C++ source file suffix"
- Switch="--cxx-suffix [value]"
- DefaultValue=".cxx"
- />
- <StringProperty
- Name="InlineSuffix"
- DisplayName="C++ Inline Suffix"
- Category="Output"
- Description="Generated C++ inline file suffix"
- Switch="--ixx-suffix [value]"
- DefaultValue=".ixx"
- />
- <StringProperty
- Name="ForwardSuffix"
- DisplayName="C++ Forward Declaration Suffix"
- Category="Output"
- Description="Generated C++ forward declaration file suffix"
- Switch="--fwd-suffix [value]"
- DefaultValue="-fwd.hxx"
- />
- <EnumProperty
- Name="CharType"
- DisplayName="Char Type"
- PropertyPageName="Code Generation"
- Description="Character type to be used in the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="char"
- />
- <EnumValue
- Value="1"
- Switch="--char-type wchar_t"
- DisplayName="wchar_t"
- />
- </Values>
- </EnumProperty>
- <EnumProperty
- Name="CharEncoding"
- DisplayName="Char Encoding"
- PropertyPageName="Code Generation"
- Description="Character encoding to be used bu the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="UTF-8 (char)/UTF-16 (wchar_t)"
- />
- <EnumValue
- Value="1"
- Switch="--char-encoding iso8859-1"
- DisplayName="ISO-8859-1"
- />
- <EnumValue
- Value="2"
- Switch="--char-encoding lcp"
- DisplayName="Xerces-C++ local code page"
- />
- <EnumValue
- Value="3"
- Switch="--char-encoding custom"
- DisplayName="Custom encoding"
- />
- </Values>
- </EnumProperty>
- <StringProperty
- Name="NamespaceMap"
- DisplayName="Namespace Map"
- PropertyPageName="Code Generation"
- Description="Map XML Schema namespaces to C++ namespaces by specifying a comma-separated list of mapping rules in the form &lt;xml-ns&gt;=&lt;cxx-ns&gt; where &lt;xml-ns&gt; stands for an XML Schema namespace and &lt;cxx-ns&gt; - for a C++ namespace."
- Switch="--namespace-map [value]"
- Delimited="true"
- Delimiters=","
- />
- <BooleanProperty
- Name="GenInline"
- DisplayName="Generate Inline"
- PropertyPageName="Code Generation"
- Description="Generate simple functions inline. This option triggers creation of the inline file."
- Switch="--generate-inline"
- />
- <BooleanProperty
- Name="GenForward"
- DisplayName="Generate Forward"
- PropertyPageName="Code Generation"
- Description="Generate a separate header file with forward declarations for the types being generated."
- Switch="--generate-forward"
- />
- <BooleanProperty
- Name="GenSerialization"
- DisplayName="Generate Serialization"
- PropertyPageName="Code Generation"
- Description="Generate serialization functions. Serialization functions convert the object model back to XML."
- Switch="--generate-serialization"
- />
- <BooleanProperty
- Name="SupParsing"
- DisplayName="Suppress Parsing"
- PropertyPageName="Code Generation"
- Description="Suppress generation of the parsing functions and constructors."
- Switch="--suppress-parsing"
- />
- <BooleanProperty
- Name="GenPolymorphic"
- DisplayName="Generate Polymorphic"
- PropertyPageName="Code Generation"
- Description="Generate polymorphism-aware code. Specify this option if you use substitution groups or xsi:type."
- Switch="--generate-polymorphic"
- />
- <StringProperty
- Name="PolymorphicType"
- DisplayName="Polymorphic Types"
- PropertyPageName="Code Generation"
- Description="Treat specified comma-separated list of types as roots of polymorphic type hierarchies."
- Switch="--polymorphic-type [value]"
- Delimited="true"
- Delimiters=","
- />
- <BooleanProperty
- Name="PolymorphicTypeAll"
- DisplayName="All Types Polymorphic"
- PropertyPageName="Code Generation"
- Description="Indicate that all types should be treated as polymorphic."
- Switch="--polymorphic-type-all"
- />
- <BooleanProperty
- Name="GenOstream"
- DisplayName="Generate Ostream"
- PropertyPageName="Code Generation"
- Description="Generate ostream insertion operators for generated types. This allows to easily print a fragment or the whole object model for debugging or logging."
- Switch="--generate-ostream"
- />
- <BooleanProperty
- Name="GenDoxygen"
- DisplayName="Generate Doxygen"
- PropertyPageName="Code Generation"
- Description="Generate documentation comments suitable for extraction by the Doxygen documentation system."
- Switch="--generate-doxygen"
- />
- <BooleanProperty
- Name="GenComparison"
- DisplayName="Generate Comparison"
- PropertyPageName="Code Generation"
- Description="Generate comparison operators for complex types."
- Switch="--generate-comparison"
- />
- <BooleanProperty
- Name="GenDefaultCtor"
- DisplayName="Generate Default Constructors"
- PropertyPageName="Code Generation"
- Description="Generate default constructors even for types that have required members."
- Switch="--generate-default-ctor"
- />
- <BooleanProperty
- Name="GenFromBaseCtor"
- DisplayName="Generate From-Base Constructors"
- PropertyPageName="Code Generation"
- Description="Generate constructors that expect an instance of a base type followed by all required members."
- Switch="--generate-from-base-ctor"
- />
- <BooleanProperty
- Name="GenDetach"
- DisplayName="Generate Detach"
- PropertyPageName="Code Generation"
- Description="Generate detach functions for required elements and attributes."
- Switch="--generate-detach"
- />
- <BooleanProperty
- Name="GenWildcard"
- DisplayName="Generate Wildcard"
- PropertyPageName="Code Generation"
- Description="Generate accessors and modifiers as well as parsing and serialization code for XML Schema wildcards (any and anyAttribute)."
- Switch="--generate-wildcard"
- />
- <BooleanProperty
- Name="GenElementType"
- DisplayName="Generate Element Types"
- PropertyPageName="Code Generation"
- Description="Generate types instead of parsing and serialization functions for root elements."
- Switch="--generate-element-type"
- />
- <BooleanProperty
- Name="GenElementMap"
- DisplayName="Generate Element Map"
- PropertyPageName="Code Generation"
- Description="Generate a root element map that allows uniform parsing and serialization of multiple root elements."
- Switch="--generate-element-map"
- />
- <BooleanProperty
- Name="GenIntellisense"
- DisplayName="Generate IntelliSense"
- PropertyPageName="Code Generation"
- Description="Generate workarounds for IntelliSense bugs in Visual Studio 2005 (8.0)."
- Switch="--generate-intellisense"
- DefaultValue="true"
- />
- <EnumProperty
- Name="TypeNaming"
- DisplayName="Type Naming"
- PropertyPageName="Code Generation"
- Description="Specify the type naming convention that should be used in the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="K&amp;R"
- />
- <EnumValue
- Value="1"
- Switch="--type-naming java"
- DisplayName="Java"
- />
- <EnumValue
- Value="2"
- Switch="--type-naming ucc"
- DisplayName="Upper Camel Case"
- />
- </Values>
- </EnumProperty>
- <EnumProperty
- Name="FunctionNaming"
- DisplayName="Function Naming"
- PropertyPageName="Code Generation"
- Description="Specify the function naming convention that should be used in the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="K&amp;R"
- />
- <EnumValue
- Value="1"
- Switch="--function-naming java"
- DisplayName="Java"
- />
- <EnumValue
- Value="2"
- Switch="--function-naming lcc"
- DisplayName="Lower Camel Case"
- />
- </Values>
- </EnumProperty>
- <StringProperty
- Name="RootElement"
- DisplayName="Root Element"
- PropertyPageName="Code Generation"
- Description="Treat only specified comma-separated list of elements as document roots."
- Switch="--root-element [value]"
- Delimited="true"
- Delimiters=","
- />
- <StringProperty
- Name="ExportSymbol"
- DisplayName="Export Symbol"
- PropertyPageName="Code Generation"
- Description="Insert the specified symbol in places where DLL export/import control statements (__declspec(dllexport/dllimport)) are necessary."
- Switch="--export-symbol [value]"
- />
- <StringProperty
- Name="HxxPrologue"
- DisplayName="Header Prologue File"
- PropertyPageName="Code Generation"
- Description="Insert the contents of the file specified at the beginning of the header file."
- Switch="--hxx-prologue-file [value]"
- />
- <StringProperty
- Name="HxxEpilogue"
- DisplayName="Header Epilogue File"
- PropertyPageName="Code Generation"
- Description="Insert the contents of the file specified at the end of the header file."
- Switch="--hxx-epilogue-file [value]"
- />
- </Properties>
- </CustomBuildRule>
- </Rules>
-</VisualStudioToolFile>
diff --git a/xsd/dist/etc/vc-9.0/xsd-cxx-parser.rules b/xsd/dist/etc/vc-9.0/xsd-cxx-parser.rules
deleted file mode 100644
index a94a3ea..0000000
--- a/xsd/dist/etc/vc-9.0/xsd-cxx-parser.rules
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
- Name="CodeSynthesis XSD Compiler C++/Parser Mapping Rules"
- Version="8.00"
- >
- <Rules>
- <CustomBuildRule
- Name="C++/Parser Mapping Rule"
- DisplayName="C++/Parser Mapping Rule"
- CommandLine="xsd.exe cxx-parser [AllOptions] [AdditionalOptions] [Inputs]"
- Outputs="[$OutDir]\$(InputName)[$SkelFileSuffix][$HeaderSuffix];[$OutDir]\$(InputName)[$SkelFileSuffix][$SourceSuffix]"
- FileExtensions="*.xsd"
- ExecutionDescription="xsd cxx-parser [Inputs]"
- ShowOnlyRuleProperties="false"
- >
- <Properties>
- <StringProperty
- Name="OutDir"
- DisplayName="Output Directory"
- Category="Output"
- Description="Output directory for the generated files"
- Switch="--output-dir [value]"
- DefaultValue="."
- />
- <BooleanProperty
- Name="ProprietaryLicense"
- DisplayName="Proprietary License"
- Category="Licensing"
- Description="Indicate that the generated code is licensed under a proprietary license instead of the GPL."
- Switch="--proprietary-license"
- />
- <StringProperty
- Name="HeaderSuffix"
- DisplayName="C++ Header Suffix "
- Category="Output"
- Description="Generated C++ header file suffix"
- Switch="--hxx-suffix [value]"
- DefaultValue=".hxx"
- />
- <StringProperty
- Name="SourceSuffix"
- DisplayName="C++ Source Suffix"
- Category="Output"
- Description="Generated C++ source file suffix"
- Switch="--cxx-suffix [value]"
- DefaultValue=".cxx"
- />
- <StringProperty
- Name="InlineSuffix"
- DisplayName="C++ Inline Suffix"
- Category="Output"
- Description="Generated C++ inline file suffix"
- Switch="--ixx-suffix [value]"
- DefaultValue=".ixx"
- />
- <StringProperty
- Name="SkelFileSuffix"
- DisplayName="Parser Skeleton File Suffix"
- PropertyPageName="Output"
- Description="Use the provided suffix to construct the names of generated parser skeleton file."
- Switch="--skel-file-suffix [value]"
- DefaultValue="-pskel"
- />
- <EnumProperty
- Name="CharType"
- DisplayName="Char Type"
- PropertyPageName="Code Generation"
- Description="Character type to be used in the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="char"
- />
- <EnumValue
- Value="1"
- Switch="--char-type wchar_t"
- DisplayName="wchar_t"
- />
- </Values>
- </EnumProperty>
- <EnumProperty
- Name="CharEncoding"
- DisplayName="Char Encoding"
- PropertyPageName="Code Generation"
- Description="Character encoding to be used bu the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="UTF-8 (char)/UTF-16 (wchar_t)"
- />
- <EnumValue
- Value="1"
- Switch="--char-encoding iso8859-1"
- DisplayName="ISO-8859-1"
- />
- <EnumValue
- Value="2"
- Switch="--char-encoding lcp"
- DisplayName="Xerces-C++ local code page"
- />
- <EnumValue
- Value="3"
- Switch="--char-encoding custom"
- DisplayName="Custom encoding"
- />
- </Values>
- </EnumProperty>
- <EnumProperty
- Name="XMLParser"
- DisplayName="Underlying XML Parser"
- PropertyPageName="Code Generation"
- Description="Use the specified parser as the underlying XML parser."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="xerces"
- />
- <EnumValue
- Value="1"
- Switch="--xml-parser expat"
- DisplayName="expat"
- />
- </Values>
- </EnumProperty>
- <StringProperty
- Name="NamespaceMap"
- DisplayName="Namespace Map"
- PropertyPageName="Code Generation"
- Description="Map XML Schema namespaces to C++ namespaces by specifying a comma-separated list of mapping rules in the form &lt;xml-ns&gt;=&lt;cxx-ns&gt; where &lt;xml-ns&gt; stands for an XML Schema namespace and &lt;cxx-ns&gt; - for a C++ namespace."
- Switch="--namespace-map [value]"
- Delimited="true"
- Delimiters=","
- />
- <StringProperty
- Name="TypeMap"
- DisplayName="Type Map"
- PropertyPageName="Code Generation"
- Description="Specify type map files as a comma-separated list."
- Switch="--type-map [value]"
- Delimited="true"
- Delimiters=","
- />
- <BooleanProperty
- Name="GenInline"
- DisplayName="Generate Inline"
- PropertyPageName="Code Generation"
- Description="Generate simple functions inline. This option triggers creation of the inline file."
- Switch="--generate-inline"
- />
- <BooleanProperty
- Name="GenValidation"
- DisplayName="Generate Validation Code"
- PropertyPageName="Code Generation"
- Description="Generate validation code which ensures that instance documents conform to the schema. This is the default for the Expat XML parser."
- Switch="--generate-validation"
- />
- <BooleanProperty
- Name="SupValidation"
- DisplayName="Suppress Validation Code"
- PropertyPageName="Code Generation"
- Description="Suppress generation of validation code. This is the default for the Xerces-C++ XML parser."
- Switch="--suppress-validation"
- />
- <BooleanProperty
- Name="GenPolymorphic"
- DisplayName="Generate Polymorphic"
- PropertyPageName="Code Generation"
- Description="Generate polymorphism-aware code. Specify this option if you use substitution groups or xsi:type."
- Switch="--generate-polymorphic"
- />
- <StringProperty
- Name="SkelTypeSuffix"
- DisplayName="Parser Skeleton Type Suffix"
- PropertyPageName="Code Generation"
- Description="Use the provided suffix to construct the names of generated parser skeletons."
- Switch="--skel-type-suffix [value]"
- DefaultValue="_pskel"
- />
- <StringProperty
- Name="ExportSymbol"
- DisplayName="Export Symbol"
- PropertyPageName="Code Generation"
- Description="Insert the specified symbol in places where DLL export/import control statements (__declspec(dllexport/dllimport)) are necessary."
- Switch="--export-symbol [value]"
- />
- <StringProperty
- Name="HxxPrologue"
- DisplayName="Header Prologue File"
- PropertyPageName="Code Generation"
- Description="Insert the contents of the file specified at the beginning of the header file."
- Switch="--hxx-prologue-file [value]"
- />
- <StringProperty
- Name="HxxEpilogue"
- DisplayName="Header Epilogue File"
- PropertyPageName="Code Generation"
- Description="Insert the contents of the file specified at the end of the header file."
- Switch="--hxx-epilogue-file [value]"
- />
- </Properties>
- </CustomBuildRule>
- </Rules>
-</VisualStudioToolFile>
diff --git a/xsd/dist/etc/vc-9.0/xsd-cxx-tree.rules b/xsd/dist/etc/vc-9.0/xsd-cxx-tree.rules
deleted file mode 100644
index d82d618..0000000
--- a/xsd/dist/etc/vc-9.0/xsd-cxx-tree.rules
+++ /dev/null
@@ -1,319 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
- Name="CodeSynthesis XSD Compiler C++/Tree Mapping Rules"
- Version="8.00"
- >
- <Rules>
- <CustomBuildRule
- Name="C++/Tree Mapping Rule"
- DisplayName="C++/Tree Mapping Rule"
- CommandLine="xsd.exe cxx-tree [AllOptions] [AdditionalOptions] [Inputs]"
- Outputs="[$OutDir]\$(InputName)[$HeaderSuffix];[$OutDir]\$(InputName)[$SourceSuffix]"
- FileExtensions="*.xsd"
- ExecutionDescription="xsd cxx-tree [Inputs]"
- ShowOnlyRuleProperties="false"
- >
- <Properties>
- <StringProperty
- Name="OutDir"
- DisplayName="Output Directory"
- Category="Output"
- Description="Output directory for the generated files"
- Switch="--output-dir [value]"
- DefaultValue="."
- />
- <BooleanProperty
- Name="ProprietaryLicense"
- DisplayName="Proprietary License"
- Category="Licensing"
- Description="Indicate that the generated code is licensed under a proprietary license instead of the GPL."
- Switch="--proprietary-license"
- />
- <StringProperty
- Name="HeaderSuffix"
- DisplayName="C++ Header Suffix "
- Category="Output"
- Description="Generated C++ header file suffix"
- Switch="--hxx-suffix [value]"
- DefaultValue=".hxx"
- />
- <StringProperty
- Name="SourceSuffix"
- DisplayName="C++ Source Suffix"
- Category="Output"
- Description="Generated C++ source file suffix"
- Switch="--cxx-suffix [value]"
- DefaultValue=".cxx"
- />
- <StringProperty
- Name="InlineSuffix"
- DisplayName="C++ Inline Suffix"
- Category="Output"
- Description="Generated C++ inline file suffix"
- Switch="--ixx-suffix [value]"
- DefaultValue=".ixx"
- />
- <StringProperty
- Name="ForwardSuffix"
- DisplayName="C++ Forward Declaration Suffix"
- Category="Output"
- Description="Generated C++ forward declaration file suffix"
- Switch="--fwd-suffix [value]"
- DefaultValue="-fwd.hxx"
- />
- <EnumProperty
- Name="CharType"
- DisplayName="Char Type"
- PropertyPageName="Code Generation"
- Description="Character type to be used in the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="char"
- />
- <EnumValue
- Value="1"
- Switch="--char-type wchar_t"
- DisplayName="wchar_t"
- />
- </Values>
- </EnumProperty>
- <EnumProperty
- Name="CharEncoding"
- DisplayName="Char Encoding"
- PropertyPageName="Code Generation"
- Description="Character encoding to be used bu the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="UTF-8 (char)/UTF-16 (wchar_t)"
- />
- <EnumValue
- Value="1"
- Switch="--char-encoding iso8859-1"
- DisplayName="ISO-8859-1"
- />
- <EnumValue
- Value="2"
- Switch="--char-encoding lcp"
- DisplayName="Xerces-C++ local code page"
- />
- <EnumValue
- Value="3"
- Switch="--char-encoding custom"
- DisplayName="Custom encoding"
- />
- </Values>
- </EnumProperty>
- <StringProperty
- Name="NamespaceMap"
- DisplayName="Namespace Map"
- PropertyPageName="Code Generation"
- Description="Map XML Schema namespaces to C++ namespaces by specifying a comma-separated list of mapping rules in the form &lt;xml-ns&gt;=&lt;cxx-ns&gt; where &lt;xml-ns&gt; stands for an XML Schema namespace and &lt;cxx-ns&gt; - for a C++ namespace."
- Switch="--namespace-map [value]"
- Delimited="true"
- Delimiters=","
- />
- <BooleanProperty
- Name="GenInline"
- DisplayName="Generate Inline"
- PropertyPageName="Code Generation"
- Description="Generate simple functions inline. This option triggers creation of the inline file."
- Switch="--generate-inline"
- />
- <BooleanProperty
- Name="GenForward"
- DisplayName="Generate Forward"
- PropertyPageName="Code Generation"
- Description="Generate a separate header file with forward declarations for the types being generated."
- Switch="--generate-forward"
- />
- <BooleanProperty
- Name="GenSerialization"
- DisplayName="Generate Serialization"
- PropertyPageName="Code Generation"
- Description="Generate serialization functions. Serialization functions convert the object model back to XML."
- Switch="--generate-serialization"
- />
- <BooleanProperty
- Name="SupParsing"
- DisplayName="Suppress Parsing"
- PropertyPageName="Code Generation"
- Description="Suppress generation of the parsing functions and constructors."
- Switch="--suppress-parsing"
- />
- <BooleanProperty
- Name="GenPolymorphic"
- DisplayName="Generate Polymorphic"
- PropertyPageName="Code Generation"
- Description="Generate polymorphism-aware code. Specify this option if you use substitution groups or xsi:type."
- Switch="--generate-polymorphic"
- />
- <StringProperty
- Name="PolymorphicType"
- DisplayName="Polymorphic Types"
- PropertyPageName="Code Generation"
- Description="Treat specified comma-separated list of types as roots of polymorphic type hierarchies."
- Switch="--polymorphic-type [value]"
- Delimited="true"
- Delimiters=","
- />
- <BooleanProperty
- Name="PolymorphicTypeAll"
- DisplayName="All Types Polymorphic"
- PropertyPageName="Code Generation"
- Description="Indicate that all types should be treated as polymorphic."
- Switch="--polymorphic-type-all"
- />
- <BooleanProperty
- Name="GenOstream"
- DisplayName="Generate Ostream"
- PropertyPageName="Code Generation"
- Description="Generate ostream insertion operators for generated types. This allows to easily print a fragment or the whole object model for debugging or logging."
- Switch="--generate-ostream"
- />
- <BooleanProperty
- Name="GenDoxygen"
- DisplayName="Generate Doxygen"
- PropertyPageName="Code Generation"
- Description="Generate documentation comments suitable for extraction by the Doxygen documentation system."
- Switch="--generate-doxygen"
- />
- <BooleanProperty
- Name="GenComparison"
- DisplayName="Generate Comparison"
- PropertyPageName="Code Generation"
- Description="Generate comparison operators for complex types."
- Switch="--generate-comparison"
- />
- <BooleanProperty
- Name="GenDefaultCtor"
- DisplayName="Generate Default Constructors"
- PropertyPageName="Code Generation"
- Description="Generate default constructors even for types that have required members."
- Switch="--generate-default-ctor"
- />
- <BooleanProperty
- Name="GenFromBaseCtor"
- DisplayName="Generate From-Base Constructors"
- PropertyPageName="Code Generation"
- Description="Generate constructors that expect an instance of a base type followed by all required members."
- Switch="--generate-from-base-ctor"
- />
- <BooleanProperty
- Name="GenDetach"
- DisplayName="Generate Detach"
- PropertyPageName="Code Generation"
- Description="Generate detach functions for required elements and attributes."
- Switch="--generate-detach"
- />
- <BooleanProperty
- Name="GenWildcard"
- DisplayName="Generate Wildcard"
- PropertyPageName="Code Generation"
- Description="Generate accessors and modifiers as well as parsing and serialization code for XML Schema wildcards (any and anyAttribute)."
- Switch="--generate-wildcard"
- />
- <BooleanProperty
- Name="GenElementType"
- DisplayName="Generate Element Types"
- PropertyPageName="Code Generation"
- Description="Generate types instead of parsing and serialization functions for root elements."
- Switch="--generate-element-type"
- />
- <BooleanProperty
- Name="GenElementMap"
- DisplayName="Generate Element Map"
- PropertyPageName="Code Generation"
- Description="Generate a root element map that allows uniform parsing and serialization of multiple root elements."
- Switch="--generate-element-map"
- />
- <BooleanProperty
- Name="GenIntellisense"
- DisplayName="Generate IntelliSense"
- PropertyPageName="Code Generation"
- Description="Generate workarounds for IntelliSense bugs in Visual Studio 2005 (8.0)."
- Switch="--generate-intellisense"
- />
- <EnumProperty
- Name="TypeNaming"
- DisplayName="Type Naming"
- PropertyPageName="Code Generation"
- Description="Specify the type naming convention that should be used in the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="K&amp;R"
- />
- <EnumValue
- Value="1"
- Switch="--type-naming java"
- DisplayName="Java"
- />
- <EnumValue
- Value="2"
- Switch="--type-naming ucc"
- DisplayName="Upper Camel Case"
- />
- </Values>
- </EnumProperty>
- <EnumProperty
- Name="FunctionNaming"
- DisplayName="Function Naming"
- PropertyPageName="Code Generation"
- Description="Specify the function naming convention that should be used in the generated code."
- >
- <Values>
- <EnumValue
- Value="0"
- DisplayName="K&amp;R"
- />
- <EnumValue
- Value="1"
- Switch="--function-naming java"
- DisplayName="Java"
- />
- <EnumValue
- Value="2"
- Switch="--function-naming lcc"
- DisplayName="Lower Camel Case"
- />
- </Values>
- </EnumProperty>
- <StringProperty
- Name="RootElement"
- DisplayName="Root Element"
- PropertyPageName="Code Generation"
- Description="Treat only specified comma-separated list of elements as document roots."
- Switch="--root-element [value]"
- Delimited="true"
- Delimiters=","
- />
- <StringProperty
- Name="ExportSymbol"
- DisplayName="Export Symbol"
- PropertyPageName="Code Generation"
- Description="Insert the specified symbol in places where DLL export/import control statements (__declspec(dllexport/dllimport)) are necessary."
- Switch="--export-symbol [value]"
- />
- <StringProperty
- Name="HxxPrologue"
- DisplayName="Header Prologue File"
- PropertyPageName="Code Generation"
- Description="Insert the contents of the file specified at the beginning of the header file."
- Switch="--hxx-prologue-file [value]"
- />
- <StringProperty
- Name="HxxEpilogue"
- DisplayName="Header Epilogue File"
- PropertyPageName="Code Generation"
- Description="Insert the contents of the file specified at the end of the header file."
- Switch="--hxx-epilogue-file [value]"
- />
- </Properties>
- </CustomBuildRule>
- </Rules>
-</VisualStudioToolFile>
diff --git a/xsd/dist/examples/build/cxx/compilers.make b/xsd/dist/examples/build/cxx/compilers.make
deleted file mode 100644
index a7f6296..0000000
--- a/xsd/dist/examples/build/cxx/compilers.make
+++ /dev/null
@@ -1,118 +0,0 @@
-# file : examples/build/cxx/compilers.make
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-CXX := g++
-
-cxx_sign := $(shell t=`$(CXX) -V 2>&1`; if test $$? -eq 0; then echo $$t; fi)
-
-ifeq ($(cxx_sign),)
-cxx_sign := $(shell t=`$(CXX) --version 2>&1`; if test $$? -eq 0; then echo $$t; fi)
-endif
-
-# IBM XL C++ V7.0 returns error code when called with the -qversion option. This
-# complicates our life quite a bit.
-#
-ifeq ($(cxx_sign),)
-cxx_sign := $(shell t=`$(CXX) -qversion 2>/dev/null`; echo $$t)
-ifneq ($(shell echo '$(cxx_sign)' | sed -e 's/^.*IBM XL C\/C.. .*$$//'),)
-cxx_sign :=
-endif
-endif
-
-cxx_id :=
-
-ifneq ($(cxx_sign),)
-
-# GNU g++ (g++)
-#
-ifeq ($(cxx_id),)
-ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* (GCC) .*$$//'),)
-cxx_id := gnu
-endif
-endif
-
-# g++ 4.3 removed GCC for some reason so check for g++ also.
-ifeq ($(cxx_id),)
-ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^g++.*$$//'),)
-cxx_id := gnu
-endif
-endif
-
-# Clang
-#
-ifeq ($(cxx_id),)
-ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^.*clang.*$$//'),)
-cxx_id := clang
-endif
-endif
-
-ifeq ($(cxx_id),)
-ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^.*Clang.*$$//'),)
-cxx_id := clang
-endif
-endif
-
-# Sun C++ (CC)
-#
-ifeq ($(cxx_id),)
-ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* Sun C.. .*$$//'),)
-cxx_id := sun
-endif
-endif
-
-
-# HP C++ (aCC)
-#
-ifeq ($(cxx_id),)
-ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* HP aC..\/ANSI C .* A\.06\..*$$//'),)
-cxx_id := hp
-endif
-endif
-
-ifeq ($(cxx_id),)
-ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* HP C\/aC.. .* A\.06\..*$$//'),)
-cxx_id := hp
-endif
-endif
-
-# Intel C++ (icpc)
-#
-
-# 9.x
-ifeq ($(cxx_id),)
-ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^Intel(R) C.. .*$$//'),)
-cxx_id := intel
-endif
-endif
-
-# 8.x
-ifeq ($(cxx_id),)
-ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^8\..$$//'),)
-cxx_id := intel
-endif
-endif
-
-
-# IBM XL C++
-#
-ifeq ($(cxx_id),)
-ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^.*IBM XL C\/C.. .*$$//'),)
-cxx_id := ibm
-endif
-endif
-
-
-# Unknown
-#
-ifeq ($(cxx_id),)
-$(warning unknown C++ compiler signature '$(cxx_sign)', continuing anyway)
-endif
-
-
-else
-$(warning unable to obtain compiler signature for '$(CXX)', continuing anyway)
-endif
-
-#$(warning $(cxx_sign))
-#$(warning $(cxx_id))
diff --git a/xsd/dist/examples/build/cxx/rules.make b/xsd/dist/examples/build/cxx/rules.make
deleted file mode 100644
index 3f6c38c..0000000
--- a/xsd/dist/examples/build/cxx/rules.make
+++ /dev/null
@@ -1,58 +0,0 @@
-# file : examples/build/cxx/rules.make
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(root)/build/cxx/compilers.make
-
-
-# GNU g++
-#
-ifeq ($(cxx_id),gnu)
- CXXFLAGS := -W -Wall -O3
-endif
-
-# Clang
-#
-ifeq ($(cxx_id),clang)
- CXXFLAGS := -W -O3
-endif
-
-# Intel C++
-#
-ifeq ($(cxx_id),intel)
- CXXFLAGS := -w1 -O2
-endif
-
-
-# Sun C++
-#
-ifeq ($(cxx_id),sun)
- CXXFLAGS := -O
-endif
-
-
-# HP aCC
-#
-ifeq ($(cxx_id),hp)
-
- # By default Xerces-C++ is built with -mt for aCC.
- # 2334 no suitable copy constructor (e.g., for std::auto_ptr)
- #
- CXXFLAGS := -Aa -O -mt +W2334
-endif
-
-
-# IBM XL C++
-#
-ifeq ($(cxx_id),ibm)
- CXXFLAGS := -qrtti -O
-endif
-
-
-# Rules.
-#
-%.o: %.cxx
- $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
-
-%: %.o
- $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
diff --git a/xsd/dist/examples/build/xsd/common.make b/xsd/dist/examples/build/xsd/common.make
deleted file mode 100644
index 21d39e7..0000000
--- a/xsd/dist/examples/build/xsd/common.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# file : examples/build/xsd/common.make
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-XSD := $(shell if test -x $(root)/../bin/xsd; \
- then echo $(root)/../bin/xsd; \
- else echo xsd; fi)
-
-override CPPFLAGS += $(shell if test -d $(root)/../libxsd; \
- then echo -I$(root)/../libxsd; fi)
diff --git a/xsd/dist/examples/build/xsd/parser-rules.make b/xsd/dist/examples/build/xsd/parser-rules.make
deleted file mode 100644
index c39b85c..0000000
--- a/xsd/dist/examples/build/xsd/parser-rules.make
+++ /dev/null
@@ -1,22 +0,0 @@
-# file : examples/build/xsd/parser-rules.make
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(root)/build/xsd/common.make
-
-XML_PARSER := xerces
-
-ifeq ($(XML_PARSER),xerces)
-override LIBS := -lxerces-c $(LIBS)
-else
-override LIBS := -lexpat $(LIBS)
-endif
-
-override XSDFLAGS += --xml-parser $(XML_PARSER)
-
-# Rules.
-#
-.PRECIOUS: %-pskel.hxx %-pskel.ixx %-pskel.cxx
-
-%-pskel.hxx %-pskel.ixx %-pskel.cxx: %.xsd
- $(XSD) cxx-parser $(XSDFLAGS) $<
diff --git a/xsd/dist/examples/build/xsd/tree-rules.make b/xsd/dist/examples/build/xsd/tree-rules.make
deleted file mode 100644
index 7ff3529..0000000
--- a/xsd/dist/examples/build/xsd/tree-rules.make
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : examples/build/xsd/tree-rules.make
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(root)/build/xsd/common.make
-
-override LIBS := -lxerces-c $(LIBS)
-
-# Rules.
-#
-.PRECIOUS: %.cxx %.hxx %.ixx
-
-%.cxx %.hxx %.ixx: %.xsd
- $(XSD) cxx-tree $(XSDFLAGS) $<
diff --git a/xsd/dist/examples/cxx/makefile b/xsd/dist/examples/cxx/makefile
deleted file mode 100644
index 4882e9a..0000000
--- a/xsd/dist/examples/cxx/makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-dirs := parser tree
-
-.PHONY: all $(dirs)
-
-all: $(dirs)
-
-$(dirs):
- @$(MAKE) -C $@ $(MAKECMDGOALS)
-
-makefile: ;
-% :: $(dirs) ;
diff --git a/xsd/dist/examples/cxx/parser/generated/generated-vc10.vcxproj b/xsd/dist/examples/cxx/parser/generated/generated-vc10.vcxproj
deleted file mode 100644
index c20e5be..0000000
--- a/xsd/dist/examples/cxx/parser/generated/generated-vc10.vcxproj
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>generated</ProjectName>
- <ProjectGuid>{4277B39A-C9FB-4F10-8223-8DD38053EDA0}</ProjectGuid>
- <RootNamespace>generated</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="library-driver.cxx" />
- <ClCompile Include="library-pimpl.cxx" />
- <ClCompile Include="library-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx" />
- <ClInclude Include="library-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/generated/generated-vc10.vcxproj.filters b/xsd/dist/examples/cxx/parser/generated/generated-vc10.vcxproj.filters
deleted file mode 100644
index b2cc277..0000000
--- a/xsd/dist/examples/cxx/parser/generated/generated-vc10.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{6241A332-00FB-43D7-8E2D-4277B261F512}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{5F7B4073-4744-4C7E-9B74-B5B7D8628B23}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{64b9ddc3-e796-405a-84e3-6e33b610b7ba}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="library-driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/generated/generated-vc11.vcxproj b/xsd/dist/examples/cxx/parser/generated/generated-vc11.vcxproj
deleted file mode 100644
index 1df7dd5..0000000
--- a/xsd/dist/examples/cxx/parser/generated/generated-vc11.vcxproj
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>generated</ProjectName>
- <ProjectGuid>{4277B39A-C9FB-4F10-8223-8DD38053EDA0}</ProjectGuid>
- <RootNamespace>generated</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="library-driver.cxx" />
- <ClCompile Include="library-pimpl.cxx" />
- <ClCompile Include="library-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx" />
- <ClInclude Include="library-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/generated/generated-vc11.vcxproj.filters b/xsd/dist/examples/cxx/parser/generated/generated-vc11.vcxproj.filters
deleted file mode 100644
index b2cc277..0000000
--- a/xsd/dist/examples/cxx/parser/generated/generated-vc11.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{6241A332-00FB-43D7-8E2D-4277B261F512}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{5F7B4073-4744-4C7E-9B74-B5B7D8628B23}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{64b9ddc3-e796-405a-84e3-6e33b610b7ba}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="library-driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/generated/generated-vc12.vcxproj b/xsd/dist/examples/cxx/parser/generated/generated-vc12.vcxproj
deleted file mode 100644
index 21bce27..0000000
--- a/xsd/dist/examples/cxx/parser/generated/generated-vc12.vcxproj
+++ /dev/null
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>generated</ProjectName>
- <ProjectGuid>{4277B39A-C9FB-4F10-8223-8DD38053EDA0}</ProjectGuid>
- <RootNamespace>generated</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="library-driver.cxx" />
- <ClCompile Include="library-pimpl.cxx" />
- <ClCompile Include="library-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx" />
- <ClInclude Include="library-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/generated/generated-vc12.vcxproj.filters b/xsd/dist/examples/cxx/parser/generated/generated-vc12.vcxproj.filters
deleted file mode 100644
index b2cc277..0000000
--- a/xsd/dist/examples/cxx/parser/generated/generated-vc12.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{6241A332-00FB-43D7-8E2D-4277B261F512}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{5F7B4073-4744-4C7E-9B74-B5B7D8628B23}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{64b9ddc3-e796-405a-84e3-6e33b610b7ba}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="library-driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/generated/generated-vc8.vcproj b/xsd/dist/examples/cxx/parser/generated/generated-vc8.vcproj
deleted file mode 100644
index ee4e0f6..0000000
--- a/xsd/dist/examples/cxx/parser/generated/generated-vc8.vcproj
+++ /dev/null
@@ -1,427 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="generated"
- ProjectGUID="{4277B39A-C9FB-4F10-8223-8DD38053EDA0}"
- RootNamespace="generated"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{6241A332-00FB-43D7-8E2D-4277B261F512}"
- >
- <File
- RelativePath=".\library-driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library-pimpl.cxx"
- >
- </File>
- <File
- RelativePath=".\library-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{5F7B4073-4744-4C7E-9B74-B5B7D8628B23}"
- >
- <File
- RelativePath=".\library-pimpl.hxx"
- >
- </File>
- <File
- RelativePath=".\library-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd"
- Outputs="library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd"
- Outputs="library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd"
- Outputs="library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd"
- Outputs="library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/generated/generated-vc9.vcproj b/xsd/dist/examples/cxx/parser/generated/generated-vc9.vcproj
deleted file mode 100644
index 2ffc6dd..0000000
--- a/xsd/dist/examples/cxx/parser/generated/generated-vc9.vcproj
+++ /dev/null
@@ -1,424 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="generated"
- ProjectGUID="{4277B39A-C9FB-4F10-8223-8DD38053EDA0}"
- RootNamespace="generated"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{6241A332-00FB-43D7-8E2D-4277B261F512}"
- >
- <File
- RelativePath=".\library-driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library-pimpl.cxx"
- >
- </File>
- <File
- RelativePath=".\library-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{5F7B4073-4744-4C7E-9B74-B5B7D8628B23}"
- >
- <File
- RelativePath=".\library-pimpl.hxx"
- >
- </File>
- <File
- RelativePath=".\library-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd"
- Outputs="library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd"
- Outputs="library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd"
- Outputs="library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-print-impl --generate-test-driver --force-overwrite library.xsd"
- Outputs="library-pskel.hxx;library-pskel.cxx;library-pimpl.hxx;library-pimpl.cxx;library-driver.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/generated/makefile b/xsd/dist/examples/cxx/parser/generated/makefile
deleted file mode 100644
index b7bb4b8..0000000
--- a/xsd/dist/examples/cxx/parser/generated/makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/parser-rules.make
-
-override XSDFLAGS += --generate-print-impl --generate-test-driver
-
-# If you are basing your own code on this example and make changes
-# to the sample implementation and/or test driver, make sure you
-# remove this option or your changes will be lost forever.
-#
-override XSDFLAGS += --force-overwrite
-
-# Build
-#
-library-driver: library-driver.o library-pskel.o library-pimpl.o
-
-library-driver.o: library-driver.cxx library-pimpl.hxx library-pskel.hxx
-library-pimpl.o: library-pimpl.cxx library-pimpl.hxx library-pskel.hxx
-library-pskel.o: library-pskel.cxx library-pskel.hxx
-
-library-pskel.hxx \
-library-pskel.cxx \
-library-pimpl.hxx \
-library-pimpl.cxx \
-library-driver.cxx : library.xsd
-
-# Change the pattern rule from parser-rules.make to include the sample
-# implementation and test driver.
-#
-.PRECIOUS: %-pskel.hxx %-pskel.cxx %-pimpl.hxx %-pimpl.cxx %-driver.cxx
-
-%-pskel.hxx %-pskel.cxx %-pimpl.hxx %-pimpl.cxx %-driver.cxx: %.xsd
- $(XSD) cxx-parser $(XSDFLAGS) $<
-
-
-# Test.
-#
-.PHONY: test
-test: library-driver library.xml
- ./library-driver library.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f library-driver.?xx library-pimpl.?xx library-pskel.?xx
- rm -f library-driver.o library-pimpl.o library-pskel.o library-driver
diff --git a/xsd/dist/examples/cxx/parser/hello/hello-vc10.vcxproj b/xsd/dist/examples/cxx/parser/hello/hello-vc10.vcxproj
deleted file mode 100644
index 8478a29..0000000
--- a/xsd/dist/examples/cxx/parser/hello/hello-vc10.vcxproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>hello</ProjectName>
- <ProjectGuid>{683E9D46-FCC7-4163-984B-9F399169CF7F}</ProjectGuid>
- <RootNamespace>hello</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="hello-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/hello/hello-vc10.vcxproj.filters b/xsd/dist/examples/cxx/parser/hello/hello-vc10.vcxproj.filters
deleted file mode 100644
index 26513bb..0000000
--- a/xsd/dist/examples/cxx/parser/hello/hello-vc10.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E9BF8C86-0B39-4E45-81D2-35AD75F02C5C}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{3490E63E-27F8-4E29-996F-79F99714DDB3}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{338ac052-a215-4fe4-a66b-f6be21b5ffa4}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="hello-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/hello/hello-vc11.vcxproj b/xsd/dist/examples/cxx/parser/hello/hello-vc11.vcxproj
deleted file mode 100644
index 48a41ac..0000000
--- a/xsd/dist/examples/cxx/parser/hello/hello-vc11.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>hello</ProjectName>
- <ProjectGuid>{683E9D46-FCC7-4163-984B-9F399169CF7F}</ProjectGuid>
- <RootNamespace>hello</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="hello-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/hello/hello-vc11.vcxproj.filters b/xsd/dist/examples/cxx/parser/hello/hello-vc11.vcxproj.filters
deleted file mode 100644
index 26513bb..0000000
--- a/xsd/dist/examples/cxx/parser/hello/hello-vc11.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E9BF8C86-0B39-4E45-81D2-35AD75F02C5C}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{3490E63E-27F8-4E29-996F-79F99714DDB3}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{338ac052-a215-4fe4-a66b-f6be21b5ffa4}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="hello-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/hello/hello-vc12.vcxproj b/xsd/dist/examples/cxx/parser/hello/hello-vc12.vcxproj
deleted file mode 100644
index 22ac525..0000000
--- a/xsd/dist/examples/cxx/parser/hello/hello-vc12.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>hello</ProjectName>
- <ProjectGuid>{683E9D46-FCC7-4163-984B-9F399169CF7F}</ProjectGuid>
- <RootNamespace>hello</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="hello-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">hello-pskel.hxx;hello-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/hello/hello-vc12.vcxproj.filters b/xsd/dist/examples/cxx/parser/hello/hello-vc12.vcxproj.filters
deleted file mode 100644
index 26513bb..0000000
--- a/xsd/dist/examples/cxx/parser/hello/hello-vc12.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E9BF8C86-0B39-4E45-81D2-35AD75F02C5C}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{3490E63E-27F8-4E29-996F-79F99714DDB3}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{338ac052-a215-4fe4-a66b-f6be21b5ffa4}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="hello-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/hello/hello-vc8.vcproj b/xsd/dist/examples/cxx/parser/hello/hello-vc8.vcproj
deleted file mode 100644
index a19fb43..0000000
--- a/xsd/dist/examples/cxx/parser/hello/hello-vc8.vcproj
+++ /dev/null
@@ -1,419 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="hello"
- ProjectGUID="{683E9D46-FCC7-4163-984B-9F399169CF7F}"
- RootNamespace="hello"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{E9BF8C86-0B39-4E45-81D2-35AD75F02C5C}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\hello-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{3490E63E-27F8-4E29-996F-79F99714DDB3}"
- >
- <File
- RelativePath=".\hello-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\hello.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd cxx-parser hello.xsd"
- Outputs="hello-pskel.hxx;hello-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd cxx-parser hello.xsd"
- Outputs="hello-pskel.hxx;hello-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd cxx-parser hello.xsd"
- Outputs="hello-pskel.hxx;hello-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd cxx-parser hello.xsd"
- Outputs="hello-pskel.hxx;hello-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/hello/hello-vc9.vcproj b/xsd/dist/examples/cxx/parser/hello/hello-vc9.vcproj
deleted file mode 100644
index 9d0e755..0000000
--- a/xsd/dist/examples/cxx/parser/hello/hello-vc9.vcproj
+++ /dev/null
@@ -1,416 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="hello"
- ProjectGUID="{683E9D46-FCC7-4163-984B-9F399169CF7F}"
- RootNamespace="hello"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{E9BF8C86-0B39-4E45-81D2-35AD75F02C5C}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\hello-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{3490E63E-27F8-4E29-996F-79F99714DDB3}"
- >
- <File
- RelativePath=".\hello-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\hello.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd cxx-parser hello.xsd"
- Outputs="hello-pskel.hxx;hello-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd cxx-parser hello.xsd"
- Outputs="hello-pskel.hxx;hello-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd cxx-parser hello.xsd"
- Outputs="hello-pskel.hxx;hello-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd cxx-parser hello.xsd"
- Outputs="hello-pskel.hxx;hello-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/hello/makefile b/xsd/dist/examples/cxx/parser/hello/makefile
deleted file mode 100644
index 5746c6f..0000000
--- a/xsd/dist/examples/cxx/parser/hello/makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/parser-rules.make
-
-
-# Build.
-#
-driver: driver.o hello-pskel.o
-
-driver.o: driver.cxx hello-pskel.hxx
-hello-pskel.o: hello-pskel.cxx hello-pskel.hxx
-
-hello-pskel.hxx hello-pskel.cxx: hello.xsd
-
-
-# Test.
-#
-.PHONY: test
-test: driver hello.xml
- ./driver hello.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f hello-pskel.?xx hello-pskel.o driver.o driver
diff --git a/xsd/dist/examples/cxx/parser/library/library-vc10.vcxproj b/xsd/dist/examples/cxx/parser/library/library-vc10.vcxproj
deleted file mode 100644
index c9046d7..0000000
--- a/xsd/dist/examples/cxx/parser/library/library-vc10.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>library</ProjectName>
- <ProjectGuid>{D66DAC4D-133C-4DB5-923F-C88A961C3C51}</ProjectGuid>
- <RootNamespace>library</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library-pimpl.cxx" />
- <ClCompile Include="library-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx" />
- <ClInclude Include="library-pskel.hxx" />
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="library-pskel.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/library/library-vc10.vcxproj.filters b/xsd/dist/examples/cxx/parser/library/library-vc10.vcxproj.filters
deleted file mode 100644
index 30f473b..0000000
--- a/xsd/dist/examples/cxx/parser/library/library-vc10.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4044D311-878E-4632-B816-7810045EF3F1}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{4F90DEB0-060B-4976-949A-66FFB902F598}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{a31fd2f2-4ce6-4ee0-962d-68d213bc7b1b}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{8e9fd809-af45-49e4-95b8-d2becff77db5}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="library-pskel.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/library/library-vc11.vcxproj b/xsd/dist/examples/cxx/parser/library/library-vc11.vcxproj
deleted file mode 100644
index daa5ef3..0000000
--- a/xsd/dist/examples/cxx/parser/library/library-vc11.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>library</ProjectName>
- <ProjectGuid>{D66DAC4D-133C-4DB5-923F-C88A961C3C51}</ProjectGuid>
- <RootNamespace>library</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library-pimpl.cxx" />
- <ClCompile Include="library-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx" />
- <ClInclude Include="library-pskel.hxx" />
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="library-pskel.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/library/library-vc11.vcxproj.filters b/xsd/dist/examples/cxx/parser/library/library-vc11.vcxproj.filters
deleted file mode 100644
index 30f473b..0000000
--- a/xsd/dist/examples/cxx/parser/library/library-vc11.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4044D311-878E-4632-B816-7810045EF3F1}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{4F90DEB0-060B-4976-949A-66FFB902F598}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{a31fd2f2-4ce6-4ee0-962d-68d213bc7b1b}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{8e9fd809-af45-49e4-95b8-d2becff77db5}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="library-pskel.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/library/library-vc12.vcxproj b/xsd/dist/examples/cxx/parser/library/library-vc12.vcxproj
deleted file mode 100644
index 345226f..0000000
--- a/xsd/dist/examples/cxx/parser/library/library-vc12.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>library</ProjectName>
- <ProjectGuid>{D66DAC4D-133C-4DB5-923F-C88A961C3C51}</ProjectGuid>
- <RootNamespace>library</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library-pimpl.cxx" />
- <ClCompile Include="library-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx" />
- <ClInclude Include="library-pskel.hxx" />
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="library-pskel.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-inline --type-map library.map library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library-pskel.hxx;library-pskel.ixx;library-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/library/library-vc12.vcxproj.filters b/xsd/dist/examples/cxx/parser/library/library-vc12.vcxproj.filters
deleted file mode 100644
index 30f473b..0000000
--- a/xsd/dist/examples/cxx/parser/library/library-vc12.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4044D311-878E-4632-B816-7810045EF3F1}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{4F90DEB0-060B-4976-949A-66FFB902F598}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{a31fd2f2-4ce6-4ee0-962d-68d213bc7b1b}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{8e9fd809-af45-49e4-95b8-d2becff77db5}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="library-pskel.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/library/library-vc8.vcproj b/xsd/dist/examples/cxx/parser/library/library-vc8.vcproj
deleted file mode 100644
index f5bb549..0000000
--- a/xsd/dist/examples/cxx/parser/library/library-vc8.vcproj
+++ /dev/null
@@ -1,440 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="library"
- ProjectGUID="{D66DAC4D-133C-4DB5-923F-C88A961C3C51}"
- RootNamespace="library"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4044D311-878E-4632-B816-7810045EF3F1}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library-pimpl.cxx"
- >
- </File>
- <File
- RelativePath=".\library-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{4F90DEB0-060B-4976-949A-66FFB902F598}"
- >
- <File
- RelativePath=".\library-pimpl.hxx"
- >
- </File>
- <File
- RelativePath=".\library-pskel.hxx"
- >
- </File>
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\library-pskel.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-inline --type-map library.map library.xsd"
- Outputs="library-pskel.hxx;library-pskel.ixx;library-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-inline --type-map library.map library.xsd"
- Outputs="library-pskel.hxx;library-pskel.ixx;library-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-inline --type-map library.map library.xsd"
- Outputs="library-pskel.hxx;library-pskel.ixx;library-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-inline --type-map library.map library.xsd"
- Outputs="library-pskel.hxx;library-pskel.ixx;library-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/library/library-vc9.vcproj b/xsd/dist/examples/cxx/parser/library/library-vc9.vcproj
deleted file mode 100644
index 1348f83..0000000
--- a/xsd/dist/examples/cxx/parser/library/library-vc9.vcproj
+++ /dev/null
@@ -1,437 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="library"
- ProjectGUID="{D66DAC4D-133C-4DB5-923F-C88A961C3C51}"
- RootNamespace="library"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4044D311-878E-4632-B816-7810045EF3F1}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library-pimpl.cxx"
- >
- </File>
- <File
- RelativePath=".\library-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{4F90DEB0-060B-4976-949A-66FFB902F598}"
- >
- <File
- RelativePath=".\library-pimpl.hxx"
- >
- </File>
- <File
- RelativePath=".\library-pskel.hxx"
- >
- </File>
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\library-pskel.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-inline --type-map library.map library.xsd"
- Outputs="library-pskel.hxx;library-pskel.ixx;library-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-inline --type-map library.map library.xsd"
- Outputs="library-pskel.hxx;library-pskel.ixx;library-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-inline --type-map library.map library.xsd"
- Outputs="library-pskel.hxx;library-pskel.ixx;library-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-parser --generate-inline --type-map library.map library.xsd"
- Outputs="library-pskel.hxx;library-pskel.ixx;library-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/library/makefile b/xsd/dist/examples/cxx/parser/library/makefile
deleted file mode 100644
index f96353b..0000000
--- a/xsd/dist/examples/cxx/parser/library/makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/parser-rules.make
-
-override XSDFLAGS += --generate-inline --type-map library.map
-
-# Build
-#
-driver: driver.o library-pskel.o library-pimpl.o
-
-driver.o: driver.cxx library-pimpl.hxx library-pskel.hxx library.hxx
-library-pimpl.o: library-pimpl.cxx library-pimpl.hxx library-pskel.hxx library.hxx
-library-pskel.o: library-pskel.cxx library-pskel.hxx library.hxx
-
-library-pskel.hxx library-pskel.ixx library-pskel.cxx: library.xsd library.map
-
-
-# Test.
-#
-.PHONY: test
-test: driver library.xml
- ./driver library.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f library-pskel.?xx library-pimpl.o library-pskel.o driver.o driver
diff --git a/xsd/dist/examples/cxx/parser/makefile b/xsd/dist/examples/cxx/parser/makefile
deleted file mode 100644
index b778cbd..0000000
--- a/xsd/dist/examples/cxx/parser/makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-dirs := generated hello library mixin mixed multiroot performance \
-polymorphism polyroot wildcard
-
-.PHONY: all $(dirs)
-
-all: $(dirs)
-
-$(dirs):
- @$(MAKE) -C $@ $(MAKECMDGOALS)
-
-makefile: ;
-% :: $(dirs) ;
diff --git a/xsd/dist/examples/cxx/parser/mixed/makefile b/xsd/dist/examples/cxx/parser/mixed/makefile
deleted file mode 100644
index edd28b2..0000000
--- a/xsd/dist/examples/cxx/parser/mixed/makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/parser-rules.make
-
-override XSDFLAGS += --type-map text.map
-
-# Build.
-#
-driver: driver.o text-pskel.o
-
-driver.o: driver.cxx text-pskel.hxx anchor.hxx
-text-pskel.o: text-pskel.cxx text-pskel.hxx anchor.hxx
-
-text-pskel.hxx text-pskel.cxx: text.xsd text.map
-
-
-# Test.
-#
-.PHONY: test
-test: driver text.xml
- ./driver text.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f text-pskel.?xx text-pskel.o driver.o driver
-
diff --git a/xsd/dist/examples/cxx/parser/mixed/mixed-vc10.vcxproj b/xsd/dist/examples/cxx/parser/mixed/mixed-vc10.vcxproj
deleted file mode 100644
index d940e8d..0000000
--- a/xsd/dist/examples/cxx/parser/mixed/mixed-vc10.vcxproj
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixed</ProjectName>
- <ProjectGuid>{304FD6A7-6C73-41C3-B489-97FD5E635CCB}</ProjectGuid>
- <RootNamespace>mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="text-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="anchor.hxx" />
- <ClInclude Include="text-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixed/mixed-vc10.vcxproj.filters b/xsd/dist/examples/cxx/parser/mixed/mixed-vc10.vcxproj.filters
deleted file mode 100644
index 9d5bb36..0000000
--- a/xsd/dist/examples/cxx/parser/mixed/mixed-vc10.vcxproj.filters
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{8E9A9B27-1882-4B49-9451-345FEED45AEE}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{0BDCEBD5-F78D-437D-BED5-4507831FA9E8}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{748ddcb3-bd88-48b4-b396-d1d3fef8a4e6}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="text-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="anchor.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="text-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixed/mixed-vc11.vcxproj b/xsd/dist/examples/cxx/parser/mixed/mixed-vc11.vcxproj
deleted file mode 100644
index 00b00a2..0000000
--- a/xsd/dist/examples/cxx/parser/mixed/mixed-vc11.vcxproj
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixed</ProjectName>
- <ProjectGuid>{304FD6A7-6C73-41C3-B489-97FD5E635CCB}</ProjectGuid>
- <RootNamespace>mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="text-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="anchor.hxx" />
- <ClInclude Include="text-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixed/mixed-vc11.vcxproj.filters b/xsd/dist/examples/cxx/parser/mixed/mixed-vc11.vcxproj.filters
deleted file mode 100644
index 9d5bb36..0000000
--- a/xsd/dist/examples/cxx/parser/mixed/mixed-vc11.vcxproj.filters
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{8E9A9B27-1882-4B49-9451-345FEED45AEE}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{0BDCEBD5-F78D-437D-BED5-4507831FA9E8}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{748ddcb3-bd88-48b4-b396-d1d3fef8a4e6}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="text-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="anchor.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="text-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixed/mixed-vc12.vcxproj b/xsd/dist/examples/cxx/parser/mixed/mixed-vc12.vcxproj
deleted file mode 100644
index d9e63ed..0000000
--- a/xsd/dist/examples/cxx/parser/mixed/mixed-vc12.vcxproj
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixed</ProjectName>
- <ProjectGuid>{304FD6A7-6C73-41C3-B489-97FD5E635CCB}</ProjectGuid>
- <RootNamespace>mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="text-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="anchor.hxx" />
- <ClInclude Include="text-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --type-map text.map text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">text-pskel.hxx;text-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixed/mixed-vc12.vcxproj.filters b/xsd/dist/examples/cxx/parser/mixed/mixed-vc12.vcxproj.filters
deleted file mode 100644
index 9d5bb36..0000000
--- a/xsd/dist/examples/cxx/parser/mixed/mixed-vc12.vcxproj.filters
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{8E9A9B27-1882-4B49-9451-345FEED45AEE}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{0BDCEBD5-F78D-437D-BED5-4507831FA9E8}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{748ddcb3-bd88-48b4-b396-d1d3fef8a4e6}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="text-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="anchor.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="text-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixed/mixed-vc8.vcproj b/xsd/dist/examples/cxx/parser/mixed/mixed-vc8.vcproj
deleted file mode 100644
index 91906be..0000000
--- a/xsd/dist/examples/cxx/parser/mixed/mixed-vc8.vcproj
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="mixed"
- ProjectGUID="{304FD6A7-6C73-41C3-B489-97FD5E635CCB}"
- RootNamespace="mixed"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{8E9A9B27-1882-4B49-9451-345FEED45AEE}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\text-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{0BDCEBD5-F78D-437D-BED5-4507831FA9E8}"
- >
- <File
- RelativePath=".\anchor.hxx"
- >
- </File>
- <File
- RelativePath=".\text-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\text.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd cxx-parser --type-map text.map text.xsd"
- Outputs="text-pskel.hxx;text-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd cxx-parser --type-map text.map text.xsd"
- Outputs="text-pskel.hxx;text-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd cxx-parser --type-map text.map text.xsd"
- Outputs="text-pskel.hxx;text-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd cxx-parser --type-map text.map text.xsd"
- Outputs="text-pskel.hxx;text-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/mixed/mixed-vc9.vcproj b/xsd/dist/examples/cxx/parser/mixed/mixed-vc9.vcproj
deleted file mode 100644
index f2eb5f1..0000000
--- a/xsd/dist/examples/cxx/parser/mixed/mixed-vc9.vcproj
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="mixed"
- ProjectGUID="{304FD6A7-6C73-41C3-B489-97FD5E635CCB}"
- RootNamespace="mixed"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{8E9A9B27-1882-4B49-9451-345FEED45AEE}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\text-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{0BDCEBD5-F78D-437D-BED5-4507831FA9E8}"
- >
- <File
- RelativePath=".\anchor.hxx"
- >
- </File>
- <File
- RelativePath=".\text-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\text.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd cxx-parser --type-map text.map text.xsd"
- Outputs="text-pskel.hxx;text-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd cxx-parser --type-map text.map text.xsd"
- Outputs="text-pskel.hxx;text-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd cxx-parser --type-map text.map text.xsd"
- Outputs="text-pskel.hxx;text-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd cxx-parser --type-map text.map text.xsd"
- Outputs="text-pskel.hxx;text-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/mixin/makefile b/xsd/dist/examples/cxx/parser/mixin/makefile
deleted file mode 100644
index 551519d..0000000
--- a/xsd/dist/examples/cxx/parser/mixin/makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/parser-rules.make
-
-override XSDFLAGS += --type-map schema.map
-
-
-# Build.
-#
-driver: driver.o schema-pskel.o
-
-driver.o: driver.cxx schema-pskel.hxx types.hxx
-schema-pskel.o: schema-pskel.cxx schema-pskel.hxx types.hxx
-
-schema-pskel.hxx schema-pskel.cxx: schema.xsd schema.map
-
-# Test.
-#
-.PHONY: test
-test: driver instance.xml
- ./driver instance.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f schema-pskel.?xx schema-pskel.o driver.o driver
-
diff --git a/xsd/dist/examples/cxx/parser/mixin/mixin-vc10.vcxproj b/xsd/dist/examples/cxx/parser/mixin/mixin-vc10.vcxproj
deleted file mode 100644
index 729240e..0000000
--- a/xsd/dist/examples/cxx/parser/mixin/mixin-vc10.vcxproj
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixin</ProjectName>
- <ProjectGuid>{8CCA6181-F2CE-4E5E-A20E-4E1E53A35125}</ProjectGuid>
- <RootNamespace>mixin</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="schema-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="schema-pskel.hxx" />
- <ClInclude Include="types.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="schema.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixin/mixin-vc10.vcxproj.filters b/xsd/dist/examples/cxx/parser/mixin/mixin-vc10.vcxproj.filters
deleted file mode 100644
index 4fd62ea..0000000
--- a/xsd/dist/examples/cxx/parser/mixin/mixin-vc10.vcxproj.filters
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4BF1C3D0-33B1-4924-9F8C-4DD7B7765D82}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{A4012AA7-A8FE-4CE8-9BB0-1DBA14C2CEAD}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{1772a873-01ce-415d-a4e7-b107ecfb3d0f}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="schema-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="schema-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="types.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="schema.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixin/mixin-vc11.vcxproj b/xsd/dist/examples/cxx/parser/mixin/mixin-vc11.vcxproj
deleted file mode 100644
index 7de773e..0000000
--- a/xsd/dist/examples/cxx/parser/mixin/mixin-vc11.vcxproj
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixin</ProjectName>
- <ProjectGuid>{8CCA6181-F2CE-4E5E-A20E-4E1E53A35125}</ProjectGuid>
- <RootNamespace>mixin</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="schema-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="schema-pskel.hxx" />
- <ClInclude Include="types.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="schema.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixin/mixin-vc11.vcxproj.filters b/xsd/dist/examples/cxx/parser/mixin/mixin-vc11.vcxproj.filters
deleted file mode 100644
index 4fd62ea..0000000
--- a/xsd/dist/examples/cxx/parser/mixin/mixin-vc11.vcxproj.filters
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4BF1C3D0-33B1-4924-9F8C-4DD7B7765D82}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{A4012AA7-A8FE-4CE8-9BB0-1DBA14C2CEAD}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{1772a873-01ce-415d-a4e7-b107ecfb3d0f}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="schema-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="schema-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="types.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="schema.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixin/mixin-vc12.vcxproj b/xsd/dist/examples/cxx/parser/mixin/mixin-vc12.vcxproj
deleted file mode 100644
index 83771b4..0000000
--- a/xsd/dist/examples/cxx/parser/mixin/mixin-vc12.vcxproj
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixin</ProjectName>
- <ProjectGuid>{8CCA6181-F2CE-4E5E-A20E-4E1E53A35125}</ProjectGuid>
- <RootNamespace>mixin</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="schema-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="schema-pskel.hxx" />
- <ClInclude Include="types.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="schema.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd schema.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --type-map schema.map schema.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">schema-pskel.hxx;schema-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixin/mixin-vc12.vcxproj.filters b/xsd/dist/examples/cxx/parser/mixin/mixin-vc12.vcxproj.filters
deleted file mode 100644
index 4fd62ea..0000000
--- a/xsd/dist/examples/cxx/parser/mixin/mixin-vc12.vcxproj.filters
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4BF1C3D0-33B1-4924-9F8C-4DD7B7765D82}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{A4012AA7-A8FE-4CE8-9BB0-1DBA14C2CEAD}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{1772a873-01ce-415d-a4e7-b107ecfb3d0f}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="schema-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="schema-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="types.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="schema.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/mixin/mixin-vc8.vcproj b/xsd/dist/examples/cxx/parser/mixin/mixin-vc8.vcproj
deleted file mode 100644
index 384e122..0000000
--- a/xsd/dist/examples/cxx/parser/mixin/mixin-vc8.vcproj
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="mixin"
- ProjectGUID="{8CCA6181-F2CE-4E5E-A20E-4E1E53A35125}"
- RootNamespace="mixin"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4BF1C3D0-33B1-4924-9F8C-4DD7B7765D82}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\schema-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{A4012AA7-A8FE-4CE8-9BB0-1DBA14C2CEAD}"
- >
- <File
- RelativePath=".\schema-pskel.hxx"
- >
- </File>
- <File
- RelativePath=".\types.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\schema.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd schema.xsd"
- CommandLine="xsd cxx-parser --type-map schema.map schema.xsd"
- Outputs="schema-pskel.hxx;schema-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd schema.xsd"
- CommandLine="xsd cxx-parser --type-map schema.map schema.xsd"
- Outputs="schema-pskel.hxx;schema-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd schema.xsd"
- CommandLine="xsd cxx-parser --type-map schema.map schema.xsd"
- Outputs="schema-pskel.hxx;schema-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd schema.xsd"
- CommandLine="xsd cxx-parser --type-map schema.map schema.xsd"
- Outputs="schema-pskel.hxx;schema-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/mixin/mixin-vc9.vcproj b/xsd/dist/examples/cxx/parser/mixin/mixin-vc9.vcproj
deleted file mode 100644
index 9cdccb3..0000000
--- a/xsd/dist/examples/cxx/parser/mixin/mixin-vc9.vcproj
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="mixin"
- ProjectGUID="{8CCA6181-F2CE-4E5E-A20E-4E1E53A35125}"
- RootNamespace="mixin"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4BF1C3D0-33B1-4924-9F8C-4DD7B7765D82}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\schema-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{A4012AA7-A8FE-4CE8-9BB0-1DBA14C2CEAD}"
- >
- <File
- RelativePath=".\schema-pskel.hxx"
- >
- </File>
- <File
- RelativePath=".\types.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\schema.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd schema.xsd"
- CommandLine="xsd cxx-parser --type-map schema.map schema.xsd"
- Outputs="schema-pskel.hxx;schema-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd schema.xsd"
- CommandLine="xsd cxx-parser --type-map schema.map schema.xsd"
- Outputs="schema-pskel.hxx;schema-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd schema.xsd"
- CommandLine="xsd cxx-parser --type-map schema.map schema.xsd"
- Outputs="schema-pskel.hxx;schema-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd schema.xsd"
- CommandLine="xsd cxx-parser --type-map schema.map schema.xsd"
- Outputs="schema-pskel.hxx;schema-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/multiroot/makefile b/xsd/dist/examples/cxx/parser/multiroot/makefile
deleted file mode 100644
index c45e3f3..0000000
--- a/xsd/dist/examples/cxx/parser/multiroot/makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/parser-rules.make
-
-override XSDFLAGS += --type-map protocol.map
-
-# Build
-#
-driver: driver.o protocol-pskel.o protocol-pimpl.o
-
-driver.o: driver.cxx protocol-pimpl.hxx protocol-pskel.hxx protocol.hxx
-protocol-pimpl.o: protocol-pimpl.cxx protocol-pimpl.hxx protocol-pskel.hxx protocol.hxx
-protocol-pskel.o: protocol-pskel.cxx protocol-pskel.hxx protocol.hxx
-
-protocol-pskel.hxx protocol-pskel.cxx: protocol.xsd protocol.map
-
-
-# Test.
-#
-.PHONY: test
-test: driver balance.xml withdraw.xml deposit.xml
- ./driver balance.xml
- ./driver withdraw.xml
- ./driver deposit.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f protocol-pskel.?xx protocol-pimpl.o protocol-pskel.o driver.o driver
diff --git a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc10.vcxproj b/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc10.vcxproj
deleted file mode 100644
index dac752c..0000000
--- a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc10.vcxproj
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>multiroot</ProjectName>
- <ProjectGuid>{3AC187DF-4FDF-40B7-9E12-002DC0A15EDB}</ProjectGuid>
- <RootNamespace>multiroot</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="protocol-pimpl.cxx" />
- <ClCompile Include="protocol-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="protocol-pimpl.hxx" />
- <ClInclude Include="protocol-pskel.hxx" />
- <ClInclude Include="protocol.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc10.vcxproj.filters b/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc10.vcxproj.filters
deleted file mode 100644
index 2b80057..0000000
--- a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc10.vcxproj.filters
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{5CA12033-B9C7-4B8D-95C9-BC1D88DFB211}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{5F7258C7-69F9-44AC-8651-7ABC08C70815}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{8a01b14f-5199-4686-a4e8-419ab31b3ea3}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="protocol-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc11.vcxproj b/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc11.vcxproj
deleted file mode 100644
index 9a5497d..0000000
--- a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc11.vcxproj
+++ /dev/null
@@ -1,212 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>multiroot</ProjectName>
- <ProjectGuid>{3AC187DF-4FDF-40B7-9E12-002DC0A15EDB}</ProjectGuid>
- <RootNamespace>multiroot</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="protocol-pimpl.cxx" />
- <ClCompile Include="protocol-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="protocol-pimpl.hxx" />
- <ClInclude Include="protocol-pskel.hxx" />
- <ClInclude Include="protocol.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc11.vcxproj.filters b/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc11.vcxproj.filters
deleted file mode 100644
index 2b80057..0000000
--- a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc11.vcxproj.filters
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{5CA12033-B9C7-4B8D-95C9-BC1D88DFB211}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{5F7258C7-69F9-44AC-8651-7ABC08C70815}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{8a01b14f-5199-4686-a4e8-419ab31b3ea3}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="protocol-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc12.vcxproj b/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc12.vcxproj
deleted file mode 100644
index a8a41dc..0000000
--- a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc12.vcxproj
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>multiroot</ProjectName>
- <ProjectGuid>{3AC187DF-4FDF-40B7-9E12-002DC0A15EDB}</ProjectGuid>
- <RootNamespace>multiroot</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="protocol-pimpl.cxx" />
- <ClCompile Include="protocol-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="protocol-pimpl.hxx" />
- <ClInclude Include="protocol-pskel.hxx" />
- <ClInclude Include="protocol.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --type-map protocol.map protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">protocol-pskel.hxx;protocol-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc12.vcxproj.filters b/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc12.vcxproj.filters
deleted file mode 100644
index 2b80057..0000000
--- a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc12.vcxproj.filters
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{5CA12033-B9C7-4B8D-95C9-BC1D88DFB211}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{5F7258C7-69F9-44AC-8651-7ABC08C70815}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{8a01b14f-5199-4686-a4e8-419ab31b3ea3}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="protocol-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc8.vcproj b/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc8.vcproj
deleted file mode 100644
index a37ec06..0000000
--- a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc8.vcproj
+++ /dev/null
@@ -1,435 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multiroot"
- ProjectGUID="{3AC187DF-4FDF-40B7-9E12-002DC0A15EDB}"
- RootNamespace="multiroot"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{5CA12033-B9C7-4B8D-95C9-BC1D88DFB211}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\protocol-pimpl.cxx"
- >
- </File>
- <File
- RelativePath=".\protocol-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{5F7258C7-69F9-44AC-8651-7ABC08C70815}"
- >
- <File
- RelativePath=".\protocol-pimpl.hxx"
- >
- </File>
- <File
- RelativePath=".\protocol-pskel.hxx"
- >
- </File>
- <File
- RelativePath=".\protocol.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\protocol.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-parser --type-map protocol.map protocol.xsd"
- Outputs="protocol-pskel.hxx;protocol-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-parser --type-map protocol.map protocol.xsd"
- Outputs="protocol-pskel.hxx;protocol-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-parser --type-map protocol.map protocol.xsd"
- Outputs="protocol-pskel.hxx;protocol-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-parser --type-map protocol.map protocol.xsd"
- Outputs="protocol-pskel.hxx;protocol-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc9.vcproj b/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc9.vcproj
deleted file mode 100644
index 75ef5e6..0000000
--- a/xsd/dist/examples/cxx/parser/multiroot/multiroot-vc9.vcproj
+++ /dev/null
@@ -1,432 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="multiroot"
- ProjectGUID="{3AC187DF-4FDF-40B7-9E12-002DC0A15EDB}"
- RootNamespace="multiroot"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{5CA12033-B9C7-4B8D-95C9-BC1D88DFB211}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\protocol-pimpl.cxx"
- >
- </File>
- <File
- RelativePath=".\protocol-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{5F7258C7-69F9-44AC-8651-7ABC08C70815}"
- >
- <File
- RelativePath=".\protocol-pimpl.hxx"
- >
- </File>
- <File
- RelativePath=".\protocol-pskel.hxx"
- >
- </File>
- <File
- RelativePath=".\protocol.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\protocol.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-parser --type-map protocol.map protocol.xsd"
- Outputs="protocol-pskel.hxx;protocol-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-parser --type-map protocol.map protocol.xsd"
- Outputs="protocol-pskel.hxx;protocol-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-parser --type-map protocol.map protocol.xsd"
- Outputs="protocol-pskel.hxx;protocol-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-parser --type-map protocol.map protocol.xsd"
- Outputs="protocol-pskel.hxx;protocol-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/performance/makefile b/xsd/dist/examples/cxx/parser/performance/makefile
deleted file mode 100644
index a98e86a..0000000
--- a/xsd/dist/examples/cxx/parser/performance/makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/parser-rules.make
-
-override XSDFLAGS += --generate-inline
-
-# Build.
-#
-driver: driver.o test-pskel.o time.o
-
-driver.o: driver.cxx test-pskel.hxx test-pskel.ixx time.hxx
-test-pskel.o: test-pskel.cxx test-pskel.hxx test-pskel.ixx
-time.o: time.cxx time.hxx
-
-test-pskel.hxx test-pskel.ixx test-pskel.cxx: test.xsd
-
-
-# Test.
-#
-.PHONY: test
-test: driver test-50k.xml
- ./driver test-50k.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f test-pskel.?xx test-pskel.o driver.o time.o driver
diff --git a/xsd/dist/examples/cxx/parser/performance/performance-vc10.vcxproj b/xsd/dist/examples/cxx/parser/performance/performance-vc10.vcxproj
deleted file mode 100644
index 42bc963..0000000
--- a/xsd/dist/examples/cxx/parser/performance/performance-vc10.vcxproj
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>performance</ProjectName>
- <ProjectGuid>{676CB1A8-1060-4B7F-86FA-5F8F01AB80BD}</ProjectGuid>
- <RootNamespace>performance</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="test-pskel.cxx" />
- <ClCompile Include="time.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test-pskel.hxx" />
- <ClInclude Include="time.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/performance/performance-vc10.vcxproj.filters b/xsd/dist/examples/cxx/parser/performance/performance-vc10.vcxproj.filters
deleted file mode 100644
index 43190f1..0000000
--- a/xsd/dist/examples/cxx/parser/performance/performance-vc10.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{699BF138-9DA5-4EC4-9796-4033D1E443E8}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{6B5C0740-D0B1-4A08-8657-DA9977EBA68D}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{d885db2b-37d2-476b-964e-0f50c5f851d4}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="test-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="time.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="time.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/performance/performance-vc11.vcxproj b/xsd/dist/examples/cxx/parser/performance/performance-vc11.vcxproj
deleted file mode 100644
index 4d02641..0000000
--- a/xsd/dist/examples/cxx/parser/performance/performance-vc11.vcxproj
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>performance</ProjectName>
- <ProjectGuid>{676CB1A8-1060-4B7F-86FA-5F8F01AB80BD}</ProjectGuid>
- <RootNamespace>performance</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="test-pskel.cxx" />
- <ClCompile Include="time.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test-pskel.hxx" />
- <ClInclude Include="time.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/performance/performance-vc11.vcxproj.filters b/xsd/dist/examples/cxx/parser/performance/performance-vc11.vcxproj.filters
deleted file mode 100644
index 43190f1..0000000
--- a/xsd/dist/examples/cxx/parser/performance/performance-vc11.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{699BF138-9DA5-4EC4-9796-4033D1E443E8}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{6B5C0740-D0B1-4A08-8657-DA9977EBA68D}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{d885db2b-37d2-476b-964e-0f50c5f851d4}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="test-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="time.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="time.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/performance/performance-vc12.vcxproj b/xsd/dist/examples/cxx/parser/performance/performance-vc12.vcxproj
deleted file mode 100644
index b9bdd1c..0000000
--- a/xsd/dist/examples/cxx/parser/performance/performance-vc12.vcxproj
+++ /dev/null
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>performance</ProjectName>
- <ProjectGuid>{676CB1A8-1060-4B7F-86FA-5F8F01AB80BD}</ProjectGuid>
- <RootNamespace>performance</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="test-pskel.cxx" />
- <ClCompile Include="time.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test-pskel.hxx" />
- <ClInclude Include="time.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-inline test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">test-pskel.hxx;test-pskel.ixx;test-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/performance/performance-vc12.vcxproj.filters b/xsd/dist/examples/cxx/parser/performance/performance-vc12.vcxproj.filters
deleted file mode 100644
index 43190f1..0000000
--- a/xsd/dist/examples/cxx/parser/performance/performance-vc12.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{699BF138-9DA5-4EC4-9796-4033D1E443E8}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{6B5C0740-D0B1-4A08-8657-DA9977EBA68D}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{d885db2b-37d2-476b-964e-0f50c5f851d4}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="test-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="time.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="time.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/performance/performance-vc8.vcproj b/xsd/dist/examples/cxx/parser/performance/performance-vc8.vcproj
deleted file mode 100644
index 867ecbb..0000000
--- a/xsd/dist/examples/cxx/parser/performance/performance-vc8.vcproj
+++ /dev/null
@@ -1,427 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="performance"
- ProjectGUID="{676CB1A8-1060-4B7F-86FA-5F8F01AB80BD}"
- RootNamespace="performance"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{699BF138-9DA5-4EC4-9796-4033D1E443E8}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\test-pskel.cxx"
- >
- </File>
- <File
- RelativePath=".\time.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{6B5C0740-D0B1-4A08-8657-DA9977EBA68D}"
- >
- <File
- RelativePath=".\test-pskel.hxx"
- >
- </File>
- <File
- RelativePath=".\time.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\test.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-parser --generate-inline test.xsd"
- Outputs="test-pskel.hxx;test-pskel.ixx;test-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-parser --generate-inline test.xsd"
- Outputs="test-pskel.hxx;test-pskel.ixx;test-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-parser --generate-inline test.xsd"
- Outputs="test-pskel.hxx;test-pskel.ixx;test-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-parser --generate-inline test.xsd"
- Outputs="test-pskel.hxx;test-pskel.ixx;test-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/performance/performance-vc9.vcproj b/xsd/dist/examples/cxx/parser/performance/performance-vc9.vcproj
deleted file mode 100644
index 3fd46c7..0000000
--- a/xsd/dist/examples/cxx/parser/performance/performance-vc9.vcproj
+++ /dev/null
@@ -1,424 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="performance"
- ProjectGUID="{676CB1A8-1060-4B7F-86FA-5F8F01AB80BD}"
- RootNamespace="performance"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{699BF138-9DA5-4EC4-9796-4033D1E443E8}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\test-pskel.cxx"
- >
- </File>
- <File
- RelativePath=".\time.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{6B5C0740-D0B1-4A08-8657-DA9977EBA68D}"
- >
- <File
- RelativePath=".\test-pskel.hxx"
- >
- </File>
- <File
- RelativePath=".\time.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\test.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-parser --generate-inline test.xsd"
- Outputs="test-pskel.hxx;test-pskel.ixx;test-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-parser --generate-inline test.xsd"
- Outputs="test-pskel.hxx;test-pskel.ixx;test-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-parser --generate-inline test.xsd"
- Outputs="test-pskel.hxx;test-pskel.ixx;test-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-parser --generate-inline test.xsd"
- Outputs="test-pskel.hxx;test-pskel.ixx;test-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/polymorphism/makefile b/xsd/dist/examples/cxx/parser/polymorphism/makefile
deleted file mode 100644
index 935661d..0000000
--- a/xsd/dist/examples/cxx/parser/polymorphism/makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/parser-rules.make
-
-override XSDFLAGS += --generate-polymorphic
-
-# Build
-#
-driver: driver.o supermen-pskel.o supermen-pimpl.o
-
-driver.o: driver.cxx supermen-pimpl.hxx supermen-pskel.hxx
-supermen-pimpl.o: supermen-pimpl.cxx supermen-pimpl.hxx supermen-pskel.hxx
-supermen-pskel.o: supermen-pskel.cxx supermen-pskel.hxx
-
-supermen-pskel.hxx supermen-pskel.cxx: supermen.xsd
-
-
-# Test.
-#
-.PHONY: test
-test: driver supermen.xml
- ./driver supermen.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f supermen-pskel.?xx supermen-pimpl.o supermen-pskel.o driver.o driver
diff --git a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc10.vcxproj b/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc10.vcxproj
deleted file mode 100644
index 57c60a3..0000000
--- a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc10.vcxproj
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>polymorphism</ProjectName>
- <ProjectGuid>{E05F914A-490B-4780-9BAB-1ED225B3DBEE}</ProjectGuid>
- <RootNamespace>polymorphism</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="supermen-pimpl.cxx" />
- <ClCompile Include="supermen-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx" />
- <ClInclude Include="supermen-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc10.vcxproj.filters b/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc10.vcxproj.filters
deleted file mode 100644
index eb84ea1..0000000
--- a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc10.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{1B970E5F-EBC0-44A7-A542-7EBFADBF1573}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{B49CCB93-BC13-4222-A005-6785C8220E30}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{408b97b6-8a71-4f5b-976a-dc6c59b92362}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="supermen-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc11.vcxproj b/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc11.vcxproj
deleted file mode 100644
index 19e2659..0000000
--- a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc11.vcxproj
+++ /dev/null
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>polymorphism</ProjectName>
- <ProjectGuid>{E05F914A-490B-4780-9BAB-1ED225B3DBEE}</ProjectGuid>
- <RootNamespace>polymorphism</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="supermen-pimpl.cxx" />
- <ClCompile Include="supermen-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx" />
- <ClInclude Include="supermen-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc11.vcxproj.filters b/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc11.vcxproj.filters
deleted file mode 100644
index eb84ea1..0000000
--- a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc11.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{1B970E5F-EBC0-44A7-A542-7EBFADBF1573}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{B49CCB93-BC13-4222-A005-6785C8220E30}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{408b97b6-8a71-4f5b-976a-dc6c59b92362}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="supermen-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc12.vcxproj b/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc12.vcxproj
deleted file mode 100644
index 775d69d..0000000
--- a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc12.vcxproj
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>polymorphism</ProjectName>
- <ProjectGuid>{E05F914A-490B-4780-9BAB-1ED225B3DBEE}</ProjectGuid>
- <RootNamespace>polymorphism</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="supermen-pimpl.cxx" />
- <ClCompile Include="supermen-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx" />
- <ClInclude Include="supermen-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc12.vcxproj.filters b/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc12.vcxproj.filters
deleted file mode 100644
index eb84ea1..0000000
--- a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc12.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{1B970E5F-EBC0-44A7-A542-7EBFADBF1573}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{B49CCB93-BC13-4222-A005-6785C8220E30}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{408b97b6-8a71-4f5b-976a-dc6c59b92362}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="supermen-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc8.vcproj b/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc8.vcproj
deleted file mode 100644
index fb4f951..0000000
--- a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc8.vcproj
+++ /dev/null
@@ -1,431 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="polymorphism"
- ProjectGUID="{E05F914A-490B-4780-9BAB-1ED225B3DBEE}"
- RootNamespace="polymorphism"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{1B970E5F-EBC0-44A7-A542-7EBFADBF1573}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pimpl.cxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{B49CCB93-BC13-4222-A005-6785C8220E30}"
- >
- <File
- RelativePath=".\supermen-pimpl.hxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\supermen.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc9.vcproj b/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc9.vcproj
deleted file mode 100644
index 9759681..0000000
--- a/xsd/dist/examples/cxx/parser/polymorphism/polymorphism-vc9.vcproj
+++ /dev/null
@@ -1,428 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="polymorphism"
- ProjectGUID="{E05F914A-490B-4780-9BAB-1ED225B3DBEE}"
- RootNamespace="polymorphism"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{1B970E5F-EBC0-44A7-A542-7EBFADBF1573}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pimpl.cxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{B49CCB93-BC13-4222-A005-6785C8220E30}"
- >
- <File
- RelativePath=".\supermen-pimpl.hxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\supermen.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/polyroot/makefile b/xsd/dist/examples/cxx/parser/polyroot/makefile
deleted file mode 100644
index 487ad08..0000000
--- a/xsd/dist/examples/cxx/parser/polyroot/makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/parser-rules.make
-
-override XSDFLAGS += --generate-polymorphic
-
-# Build
-#
-driver: driver.o supermen-pskel.o supermen-pimpl.o
-
-driver.o: driver.cxx supermen-pimpl.hxx supermen-pskel.hxx
-supermen-pimpl.o: supermen-pimpl.cxx supermen-pimpl.hxx supermen-pskel.hxx
-supermen-pskel.o: supermen-pskel.cxx supermen-pskel.hxx
-
-supermen-pskel.hxx supermen-pskel.cxx: supermen.xsd
-
-
-# Test.
-#
-.PHONY: test
-test: driver person.xml superman.xml batman.xml
- ./driver person.xml
- ./driver superman.xml
- ./driver batman.xml
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f supermen-pskel.?xx supermen-pimpl.o supermen-pskel.o driver.o driver
diff --git a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc10.vcxproj b/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc10.vcxproj
deleted file mode 100644
index 897a3a1..0000000
--- a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc10.vcxproj
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>polyroot</ProjectName>
- <ProjectGuid>{FB2098FC-CE8C-4A6B-A064-E2705324A16A}</ProjectGuid>
- <RootNamespace>polyroot</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="supermen-pimpl.cxx" />
- <ClCompile Include="supermen-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx" />
- <ClInclude Include="supermen-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc10.vcxproj.filters b/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc10.vcxproj.filters
deleted file mode 100644
index 5b0ee29..0000000
--- a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc10.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{00F2FCE3-0165-405E-B027-F51956F669D1}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{6F6E09B9-C59E-45EE-BC77-C2F22039A485}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{91582f5b-59e2-4b82-9325-b99cf969649e}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="supermen-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc11.vcxproj b/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc11.vcxproj
deleted file mode 100644
index 86427ed..0000000
--- a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc11.vcxproj
+++ /dev/null
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>polyroot</ProjectName>
- <ProjectGuid>{FB2098FC-CE8C-4A6B-A064-E2705324A16A}</ProjectGuid>
- <RootNamespace>polyroot</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="supermen-pimpl.cxx" />
- <ClCompile Include="supermen-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx" />
- <ClInclude Include="supermen-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc11.vcxproj.filters b/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc11.vcxproj.filters
deleted file mode 100644
index 5b0ee29..0000000
--- a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc11.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{00F2FCE3-0165-405E-B027-F51956F669D1}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{6F6E09B9-C59E-45EE-BC77-C2F22039A485}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{91582f5b-59e2-4b82-9325-b99cf969649e}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="supermen-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc12.vcxproj b/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc12.vcxproj
deleted file mode 100644
index 079305b..0000000
--- a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc12.vcxproj
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>polyroot</ProjectName>
- <ProjectGuid>{FB2098FC-CE8C-4A6B-A064-E2705324A16A}</ProjectGuid>
- <RootNamespace>polyroot</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="supermen-pimpl.cxx" />
- <ClCompile Include="supermen-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx" />
- <ClInclude Include="supermen-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser --generate-polymorphic supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">supermen-pskel.hxx;supermen-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc12.vcxproj.filters b/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc12.vcxproj.filters
deleted file mode 100644
index 5b0ee29..0000000
--- a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc12.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{00F2FCE3-0165-405E-B027-F51956F669D1}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{6F6E09B9-C59E-45EE-BC77-C2F22039A485}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{91582f5b-59e2-4b82-9325-b99cf969649e}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pimpl.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen-pimpl.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="supermen-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc8.vcproj b/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc8.vcproj
deleted file mode 100644
index 322f814..0000000
--- a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc8.vcproj
+++ /dev/null
@@ -1,431 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="polyroot"
- ProjectGUID="{FB2098FC-CE8C-4A6B-A064-E2705324A16A}"
- RootNamespace="polyroot"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{00F2FCE3-0165-405E-B027-F51956F669D1}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pimpl.cxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{6F6E09B9-C59E-45EE-BC77-C2F22039A485}"
- >
- <File
- RelativePath=".\supermen-pimpl.hxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\supermen.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc9.vcproj b/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc9.vcproj
deleted file mode 100644
index fd72439..0000000
--- a/xsd/dist/examples/cxx/parser/polyroot/polyroot-vc9.vcproj
+++ /dev/null
@@ -1,428 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="polyroot"
- ProjectGUID="{FB2098FC-CE8C-4A6B-A064-E2705324A16A}"
- RootNamespace="polyroot"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{00F2FCE3-0165-405E-B027-F51956F669D1}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pimpl.cxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{6F6E09B9-C59E-45EE-BC77-C2F22039A485}"
- >
- <File
- RelativePath=".\supermen-pimpl.hxx"
- >
- </File>
- <File
- RelativePath=".\supermen-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\supermen.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd cxx-parser --generate-polymorphic supermen.xsd"
- Outputs="supermen-pskel.hxx;supermen-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/wildcard/makefile b/xsd/dist/examples/cxx/parser/wildcard/makefile
deleted file mode 100644
index 924e937..0000000
--- a/xsd/dist/examples/cxx/parser/wildcard/makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/parser-rules.make
-
-
-# Build.
-#
-driver: driver.o email-pskel.o
-
-driver.o: driver.cxx email-pskel.hxx
-email-pskel.o: email-pskel.cxx email-pskel.hxx
-
-email-pskel.hxx email-pskel.cxx: email.xsd
-
-
-# Test.
-#
-.PHONY: test
-test: driver email.xml
- ./driver email.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f email-pskel.?xx email-pskel.o driver.o driver
diff --git a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc10.vcxproj b/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc10.vcxproj
deleted file mode 100644
index adb99cb..0000000
--- a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc10.vcxproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>wildcard</ProjectName>
- <ProjectGuid>{9832425B-38D5-44EC-AED6-3ED4353B24EA}</ProjectGuid>
- <RootNamespace>wildcard</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="email-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc10.vcxproj.filters b/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc10.vcxproj.filters
deleted file mode 100644
index 756239f..0000000
--- a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc10.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{F05001BC-BAEB-4D9D-89E4-D19B208F34BF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{CDCB25B7-BCBA-4C74-828E-09B2D7860485}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{1b27359f-6508-4bb0-96ed-b5a3fdb228c6}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="email-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc11.vcxproj b/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc11.vcxproj
deleted file mode 100644
index e422655..0000000
--- a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc11.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>wildcard</ProjectName>
- <ProjectGuid>{9832425B-38D5-44EC-AED6-3ED4353B24EA}</ProjectGuid>
- <RootNamespace>wildcard</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="email-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc11.vcxproj.filters b/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc11.vcxproj.filters
deleted file mode 100644
index 756239f..0000000
--- a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc11.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{F05001BC-BAEB-4D9D-89E4-D19B208F34BF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{CDCB25B7-BCBA-4C74-828E-09B2D7860485}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{1b27359f-6508-4bb0-96ed-b5a3fdb228c6}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="email-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc12.vcxproj b/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc12.vcxproj
deleted file mode 100644
index e52e9dc..0000000
--- a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc12.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>wildcard</ProjectName>
- <ProjectGuid>{9832425B-38D5-44EC-AED6-3ED4353B24EA}</ProjectGuid>
- <RootNamespace>wildcard</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="email-pskel.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email-pskel.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-parser email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">email-pskel.hxx;email-pskel.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc12.vcxproj.filters b/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc12.vcxproj.filters
deleted file mode 100644
index 756239f..0000000
--- a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc12.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{F05001BC-BAEB-4D9D-89E4-D19B208F34BF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{CDCB25B7-BCBA-4C74-828E-09B2D7860485}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{1b27359f-6508-4bb0-96ed-b5a3fdb228c6}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="email-pskel.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email-pskel.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc8.vcproj b/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc8.vcproj
deleted file mode 100644
index c255eac..0000000
--- a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc8.vcproj
+++ /dev/null
@@ -1,419 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="wildcard"
- ProjectGUID="{9832425B-38D5-44EC-AED6-3ED4353B24EA}"
- RootNamespace="wildcard"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{F05001BC-BAEB-4D9D-89E4-D19B208F34BF}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\email-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{CDCB25B7-BCBA-4C74-828E-09B2D7860485}"
- >
- <File
- RelativePath=".\email-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\email.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-parser email.xsd"
- Outputs="email-pskel.hxx;email-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-parser email.xsd"
- Outputs="email-pskel.hxx;email-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-parser email.xsd"
- Outputs="email-pskel.hxx;email-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-parser email.xsd"
- Outputs="email-pskel.hxx;email-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc9.vcproj b/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc9.vcproj
deleted file mode 100644
index e481e43..0000000
--- a/xsd/dist/examples/cxx/parser/wildcard/wildcard-vc9.vcproj
+++ /dev/null
@@ -1,416 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="wildcard"
- ProjectGUID="{9832425B-38D5-44EC-AED6-3ED4353B24EA}"
- RootNamespace="wildcard"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{F05001BC-BAEB-4D9D-89E4-D19B208F34BF}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\email-pskel.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{CDCB25B7-BCBA-4C74-828E-09B2D7860485}"
- >
- <File
- RelativePath=".\email-pskel.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\email.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-parser email.xsd"
- Outputs="email-pskel.hxx;email-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-parser email.xsd"
- Outputs="email-pskel.hxx;email-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-parser email.xsd"
- Outputs="email-pskel.hxx;email-pskel.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-parser email.xsd"
- Outputs="email-pskel.hxx;email-pskel.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc10.vcxproj b/xsd/dist/examples/cxx/tree/binary/boost/boost-vc10.vcxproj
deleted file mode 100644
index 8834226..0000000
--- a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc10.vcxproj
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>boost</ProjectName>
- <ProjectGuid>{0C3A70E2-F673-46B7-B23D-9888266918D5}</ProjectGuid>
- <RootNamespace>boost</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="boost-archive-extraction.hxx" />
- <ClInclude Include="boost-archive-insertion.hxx" />
- <ClInclude Include="library-prologue.hxx" />
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/binary/boost/boost-vc10.vcxproj.filters
deleted file mode 100644
index edb71a3..0000000
--- a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc10.vcxproj.filters
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{22FBBBBD-3A62-471C-867C-8B6F5B3531A9}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{BB6813A9-25E1-49A2-8FCC-FAC9FC4C27FB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{458e67fd-1629-41ef-9a2b-66709e69a9bf}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="boost-archive-extraction.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="boost-archive-insertion.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-prologue.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc11.vcxproj b/xsd/dist/examples/cxx/tree/binary/boost/boost-vc11.vcxproj
deleted file mode 100644
index 73a65d5..0000000
--- a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc11.vcxproj
+++ /dev/null
@@ -1,212 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>boost</ProjectName>
- <ProjectGuid>{0C3A70E2-F673-46B7-B23D-9888266918D5}</ProjectGuid>
- <RootNamespace>boost</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="boost-archive-extraction.hxx" />
- <ClInclude Include="boost-archive-insertion.hxx" />
- <ClInclude Include="library-prologue.hxx" />
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/binary/boost/boost-vc11.vcxproj.filters
deleted file mode 100644
index edb71a3..0000000
--- a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc11.vcxproj.filters
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{22FBBBBD-3A62-471C-867C-8B6F5B3531A9}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{BB6813A9-25E1-49A2-8FCC-FAC9FC4C27FB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{458e67fd-1629-41ef-9a2b-66709e69a9bf}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="boost-archive-extraction.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="boost-archive-insertion.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-prologue.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc12.vcxproj b/xsd/dist/examples/cxx/tree/binary/boost/boost-vc12.vcxproj
deleted file mode 100644
index 8c7d2c5..0000000
--- a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc12.vcxproj
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>boost</ProjectName>
- <ProjectGuid>{0C3A70E2-F673-46B7-B23D-9888266918D5}</ProjectGuid>
- <RootNamespace>boost</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="boost-archive-extraction.hxx" />
- <ClInclude Include="boost-archive-insertion.hxx" />
- <ClInclude Include="library-prologue.hxx" />
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/binary/boost/boost-vc12.vcxproj.filters
deleted file mode 100644
index edb71a3..0000000
--- a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc12.vcxproj.filters
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{22FBBBBD-3A62-471C-867C-8B6F5B3531A9}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{BB6813A9-25E1-49A2-8FCC-FAC9FC4C27FB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{458e67fd-1629-41ef-9a2b-66709e69a9bf}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="boost-archive-extraction.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="boost-archive-insertion.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-prologue.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc8.vcproj b/xsd/dist/examples/cxx/tree/binary/boost/boost-vc8.vcproj
deleted file mode 100644
index 82d23ae..0000000
--- a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc8.vcproj
+++ /dev/null
@@ -1,435 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="boost"
- ProjectGUID="{0C3A70E2-F673-46B7-B23D-9888266918D5}"
- RootNamespace="boost"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{22FBBBBD-3A62-471C-867C-8B6F5B3531A9}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{BB6813A9-25E1-49A2-8FCC-FAC9FC4C27FB}"
- >
- <File
- RelativePath=".\boost-archive-extraction.hxx"
- >
- </File>
- <File
- RelativePath=".\boost-archive-insertion.hxx"
- >
- </File>
- <File
- RelativePath=".\library-prologue.hxx"
- >
- </File>
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc9.vcproj b/xsd/dist/examples/cxx/tree/binary/boost/boost-vc9.vcproj
deleted file mode 100644
index f5369af..0000000
--- a/xsd/dist/examples/cxx/tree/binary/boost/boost-vc9.vcproj
+++ /dev/null
@@ -1,432 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="boost"
- ProjectGUID="{0C3A70E2-F673-46B7-B23D-9888266918D5}"
- RootNamespace="boost"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{22FBBBBD-3A62-471C-867C-8B6F5B3531A9}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{BB6813A9-25E1-49A2-8FCC-FAC9FC4C27FB}"
- >
- <File
- RelativePath=".\boost-archive-extraction.hxx"
- >
- </File>
- <File
- RelativePath=".\boost-archive-insertion.hxx"
- >
- </File>
- <File
- RelativePath=".\library-prologue.hxx"
- >
- </File>
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --hxx-prologue-file library-prologue.hxx --generate-insertion boost::archive::text_oarchive --generate-extraction boost::archive::text_iarchive library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/binary/boost/makefile b/xsd/dist/examples/cxx/tree/binary/boost/makefile
deleted file mode 100644
index 7c35f02..0000000
--- a/xsd/dist/examples/cxx/tree/binary/boost/makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-ostream \
---hxx-prologue-file library-prologue.hxx \
---generate-insertion boost::archive::text_oarchive \
---generate-extraction boost::archive::text_iarchive
-
-
-override LIBS += -lboost_serialization
-
-
-# Build.
-#
-driver: driver.o library.o
-
-library.o: library.cxx library.hxx boost-archive-insertion.hxx boost-archive-extraction.hxx
-driver.o: driver.cxx library.hxx boost-archive-insertion.hxx boost-archive-extraction.hxx
-
-library.cxx library.hxx: library.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver library.xml
- ./driver library.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f library.o library.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc10.vcxproj b/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc10.vcxproj
deleted file mode 100644
index 5acfa0e..0000000
--- a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc10.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>cdr</ProjectName>
- <ProjectGuid>{A8CC2814-5056-4953-8B4C-E52E72ADD36C}</ProjectGuid>
- <RootNamespace>cdr</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;ACEd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;ACEd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;ACE.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;ACE.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc10.vcxproj.filters
deleted file mode 100644
index 92ff3ee..0000000
--- a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc10.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{50AA6317-04BE-45AB-98DD-7A32AEB710CF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{E740B51E-A619-4888-B6B9-566A3C77C60B}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{37283c57-4a32-48ed-823b-0efdf7cdcf51}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc11.vcxproj b/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc11.vcxproj
deleted file mode 100644
index c87aa4b..0000000
--- a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc11.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>cdr</ProjectName>
- <ProjectGuid>{A8CC2814-5056-4953-8B4C-E52E72ADD36C}</ProjectGuid>
- <RootNamespace>cdr</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;ACEd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;ACEd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;ACE.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;ACE.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc11.vcxproj.filters
deleted file mode 100644
index 92ff3ee..0000000
--- a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc11.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{50AA6317-04BE-45AB-98DD-7A32AEB710CF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{E740B51E-A619-4888-B6B9-566A3C77C60B}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{37283c57-4a32-48ed-823b-0efdf7cdcf51}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc12.vcxproj b/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc12.vcxproj
deleted file mode 100644
index e0d6496..0000000
--- a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc12.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>cdr</ProjectName>
- <ProjectGuid>{A8CC2814-5056-4953-8B4C-E52E72ADD36C}</ProjectGuid>
- <RootNamespace>cdr</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;ACEd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;ACEd.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;ACE.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;ACE.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc12.vcxproj.filters
deleted file mode 100644
index 92ff3ee..0000000
--- a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc12.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{50AA6317-04BE-45AB-98DD-7A32AEB710CF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{E740B51E-A619-4888-B6B9-566A3C77C60B}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{37283c57-4a32-48ed-823b-0efdf7cdcf51}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc8.vcproj b/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc8.vcproj
deleted file mode 100644
index d35171a..0000000
--- a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc8.vcproj
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="cdr"
- ProjectGUID="{A8CC2814-5056-4953-8B4C-E52E72ADD36C}"
- RootNamespace="cdr"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib ACEd.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib ACE.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib ACEd.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib ACE.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{50AA6317-04BE-45AB-98DD-7A32AEB710CF}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{E740B51E-A619-4888-B6B9-566A3C77C60B}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc9.vcproj b/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc9.vcproj
deleted file mode 100644
index f379d83..0000000
--- a/xsd/dist/examples/cxx/tree/binary/cdr/cdr-vc9.vcproj
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="cdr"
- ProjectGUID="{A8CC2814-5056-4953-8B4C-E52E72ADD36C}"
- RootNamespace="cdr"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib ACEd.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib ACEd.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib ACE.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib ACE.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{50AA6317-04BE-45AB-98DD-7A32AEB710CF}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{E740B51E-A619-4888-B6B9-566A3C77C60B}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/binary/cdr/makefile b/xsd/dist/examples/cxx/tree/binary/cdr/makefile
deleted file mode 100644
index a2d9848..0000000
--- a/xsd/dist/examples/cxx/tree/binary/cdr/makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-ostream --generate-insertion ACE_OutputCDR \
---generate-extraction ACE_InputCDR
-
-
-override LIBS += -lACE
-
-
-# Build.
-#
-driver: driver.o library.o
-
-library.o: library.cxx library.hxx
-driver.o: driver.cxx library.hxx
-
-library.cxx library.hxx: library.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver library.xml
- ./driver library.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f library.o library.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/binary/makefile b/xsd/dist/examples/cxx/tree/binary/makefile
deleted file mode 100644
index d337eb5..0000000
--- a/xsd/dist/examples/cxx/tree/binary/makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-dirs :=
-
-ifeq ($(WITH_BOOST),1)
-dirs += boost
-endif
-
-
-ifeq ($(WITH_ACE),1)
-dirs += cdr
-endif
-
-ifeq ($(WITH_XDR),1)
-dirs += xdr
-endif
-
-
-.PHONY: all $(dirs)
-
-all: $(dirs)
-
-$(dirs):
- @$(MAKE) -C $@ $(MAKECMDGOALS)
-
-makefile: ;
-% :: $(dirs) ;
diff --git a/xsd/dist/examples/cxx/tree/binary/xdr/makefile b/xsd/dist/examples/cxx/tree/binary/xdr/makefile
deleted file mode 100644
index a9123d7..0000000
--- a/xsd/dist/examples/cxx/tree/binary/xdr/makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-ostream --generate-insertion XDR \
---generate-extraction XDR
-
-
-override LIBS += -lnsl
-
-
-# Build.
-#
-driver: driver.o library.o
-
-library.o: library.cxx library.hxx
-driver.o: driver.cxx library.hxx
-
-library.cxx library.hxx: library.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver library.xml
- ./driver library.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f library.o library.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc10.vcxproj b/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc10.vcxproj
deleted file mode 100644
index a8cad53..0000000
--- a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc10.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>xdr</ProjectName>
- <ProjectGuid>{D9696808-1B73-43C9-A3BB-18DD29776EC5}</ProjectGuid>
- <RootNamespace>xdr</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc10.vcxproj.filters
deleted file mode 100644
index c9e491f..0000000
--- a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc10.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{C5A0E74B-63C1-41E3-B291-B85FCC86FDF7}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{FC110C72-7935-49D5-B25E-F96C87BA49E4}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{b7ff65c1-ff9c-4e2d-869b-e4925d838adb}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc11.vcxproj b/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc11.vcxproj
deleted file mode 100644
index 5c9f9d5..0000000
--- a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc11.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>xdr</ProjectName>
- <ProjectGuid>{D9696808-1B73-43C9-A3BB-18DD29776EC5}</ProjectGuid>
- <RootNamespace>xdr</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc11.vcxproj.filters
deleted file mode 100644
index c9e491f..0000000
--- a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc11.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{C5A0E74B-63C1-41E3-B291-B85FCC86FDF7}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{FC110C72-7935-49D5-B25E-F96C87BA49E4}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{b7ff65c1-ff9c-4e2d-869b-e4925d838adb}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc12.vcxproj b/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc12.vcxproj
deleted file mode 100644
index e3be342..0000000
--- a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc12.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>xdr</ProjectName>
- <ProjectGuid>{D9696808-1B73-43C9-A3BB-18DD29776EC5}</ProjectGuid>
- <RootNamespace>xdr</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc12.vcxproj.filters
deleted file mode 100644
index c9e491f..0000000
--- a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc12.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{C5A0E74B-63C1-41E3-B291-B85FCC86FDF7}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{FC110C72-7935-49D5-B25E-F96C87BA49E4}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{b7ff65c1-ff9c-4e2d-869b-e4925d838adb}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc8.vcproj b/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc8.vcproj
deleted file mode 100644
index f83c026..0000000
--- a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc8.vcproj
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="xdr"
- ProjectGUID="{D9696808-1B73-43C9-A3BB-18DD29776EC5}"
- RootNamespace="xdr"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{C5A0E74B-63C1-41E3-B291-B85FCC86FDF7}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{FC110C72-7935-49D5-B25E-F96C87BA49E4}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-insertion XDR --generate-extraction XDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-insertion XDR --generate-extraction XDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-insertion XDR --generate-extraction XDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-insertion XDR --generate-extraction XDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc9.vcproj b/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc9.vcproj
deleted file mode 100644
index 34ca6b4..0000000
--- a/xsd/dist/examples/cxx/tree/binary/xdr/xdr-vc9.vcproj
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="xdr"
- ProjectGUID="{D9696808-1B73-43C9-A3BB-18DD29776EC5}"
- RootNamespace="xdr"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{C5A0E74B-63C1-41E3-B291-B85FCC86FDF7}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{FC110C72-7935-49D5-B25E-F96C87BA49E4}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-insertion XDR --generate-extraction XDR library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/caching/caching-vc10.vcxproj b/xsd/dist/examples/cxx/tree/caching/caching-vc10.vcxproj
deleted file mode 100644
index 7bb6670..0000000
--- a/xsd/dist/examples/cxx/tree/caching/caching-vc10.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>caching</ProjectName>
- <ProjectGuid>{932D8CD0-4E11-4C3A-9084-4D30DE75C2B7}</ProjectGuid>
- <RootNamespace>caching</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/caching/caching-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/caching/caching-vc10.vcxproj.filters
deleted file mode 100644
index 07ab0e9..0000000
--- a/xsd/dist/examples/cxx/tree/caching/caching-vc10.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{8953E6CC-4E46-4D97-9704-CE8F76672843}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{AA1A2DB4-3798-4A0C-9339-FAA57753A0AC}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{88b19602-75bf-44d6-a995-f5e213e36528}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/caching/caching-vc11.vcxproj b/xsd/dist/examples/cxx/tree/caching/caching-vc11.vcxproj
deleted file mode 100644
index 1e8d543..0000000
--- a/xsd/dist/examples/cxx/tree/caching/caching-vc11.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>caching</ProjectName>
- <ProjectGuid>{932D8CD0-4E11-4C3A-9084-4D30DE75C2B7}</ProjectGuid>
- <RootNamespace>caching</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/caching/caching-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/caching/caching-vc11.vcxproj.filters
deleted file mode 100644
index 07ab0e9..0000000
--- a/xsd/dist/examples/cxx/tree/caching/caching-vc11.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{8953E6CC-4E46-4D97-9704-CE8F76672843}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{AA1A2DB4-3798-4A0C-9339-FAA57753A0AC}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{88b19602-75bf-44d6-a995-f5e213e36528}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/caching/caching-vc12.vcxproj b/xsd/dist/examples/cxx/tree/caching/caching-vc12.vcxproj
deleted file mode 100644
index 304d2c2..0000000
--- a/xsd/dist/examples/cxx/tree/caching/caching-vc12.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>caching</ProjectName>
- <ProjectGuid>{932D8CD0-4E11-4C3A-9084-4D30DE75C2B7}</ProjectGuid>
- <RootNamespace>caching</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/caching/caching-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/caching/caching-vc12.vcxproj.filters
deleted file mode 100644
index 07ab0e9..0000000
--- a/xsd/dist/examples/cxx/tree/caching/caching-vc12.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{8953E6CC-4E46-4D97-9704-CE8F76672843}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{AA1A2DB4-3798-4A0C-9339-FAA57753A0AC}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{88b19602-75bf-44d6-a995-f5e213e36528}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/caching/caching-vc8.vcproj b/xsd/dist/examples/cxx/tree/caching/caching-vc8.vcproj
deleted file mode 100644
index 3d75cb6..0000000
--- a/xsd/dist/examples/cxx/tree/caching/caching-vc8.vcproj
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="caching"
- ProjectGUID="{932D8CD0-4E11-4C3A-9084-4D30DE75C2B7}"
- RootNamespace="caching"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{8953E6CC-4E46-4D97-9704-CE8F76672843}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{AA1A2DB4-3798-4A0C-9339-FAA57753A0AC}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/caching/caching-vc9.vcproj b/xsd/dist/examples/cxx/tree/caching/caching-vc9.vcproj
deleted file mode 100644
index b356172..0000000
--- a/xsd/dist/examples/cxx/tree/caching/caching-vc9.vcproj
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="caching"
- ProjectGUID="{932D8CD0-4E11-4C3A-9084-4D30DE75C2B7}"
- RootNamespace="caching"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{8953E6CC-4E46-4D97-9704-CE8F76672843}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{AA1A2DB4-3798-4A0C-9339-FAA57753A0AC}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/caching/makefile b/xsd/dist/examples/cxx/tree/caching/makefile
deleted file mode 100644
index d8d33fd..0000000
--- a/xsd/dist/examples/cxx/tree/caching/makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-# Build.
-#
-driver: driver.o library.o
-
-library.o: library.cxx library.hxx
-driver.o: driver.cxx library.hxx
-
-library.cxx library.hxx: library.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver library.xml
- ./driver library.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f library.o library.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/compression/compression-vc10.vcxproj b/xsd/dist/examples/cxx/tree/compression/compression-vc10.vcxproj
deleted file mode 100644
index 0f084fb..0000000
--- a/xsd/dist/examples/cxx/tree/compression/compression-vc10.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>compression</ProjectName>
- <ProjectGuid>{AA385EB4-7352-4865-9C5C-9F0DE7BA0060}</ProjectGuid>
- <RootNamespace>compression</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- <ClCompile Include="compressed-format-target.cxx" />
- <ClCompile Include="compressed-input-source.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- <ClInclude Include="compressed-format-target.hxx" />
- <ClInclude Include="compressed-input-source.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/compression/compression-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/compression/compression-vc10.vcxproj.filters
deleted file mode 100644
index 0156a51..0000000
--- a/xsd/dist/examples/cxx/tree/compression/compression-vc10.vcxproj.filters
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E38C94E8-B473-4B88-9C42-BD34C81BC24B}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{408177AE-D480-4933-AED3-705D39F15C9F}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{0e78ae69-359d-42ea-8a3c-c60040f3aa2c}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="compressed-format-target.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="compressed-input-source.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="compressed-format-target.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="compressed-input-source.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/compression/compression-vc11.vcxproj b/xsd/dist/examples/cxx/tree/compression/compression-vc11.vcxproj
deleted file mode 100644
index 76c9887..0000000
--- a/xsd/dist/examples/cxx/tree/compression/compression-vc11.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>compression</ProjectName>
- <ProjectGuid>{AA385EB4-7352-4865-9C5C-9F0DE7BA0060}</ProjectGuid>
- <RootNamespace>compression</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- <ClCompile Include="compressed-format-target.cxx" />
- <ClCompile Include="compressed-input-source.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- <ClInclude Include="compressed-format-target.hxx" />
- <ClInclude Include="compressed-input-source.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/compression/compression-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/compression/compression-vc11.vcxproj.filters
deleted file mode 100644
index 0156a51..0000000
--- a/xsd/dist/examples/cxx/tree/compression/compression-vc11.vcxproj.filters
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E38C94E8-B473-4B88-9C42-BD34C81BC24B}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{408177AE-D480-4933-AED3-705D39F15C9F}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{0e78ae69-359d-42ea-8a3c-c60040f3aa2c}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="compressed-format-target.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="compressed-input-source.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="compressed-format-target.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="compressed-input-source.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/compression/compression-vc12.vcxproj b/xsd/dist/examples/cxx/tree/compression/compression-vc12.vcxproj
deleted file mode 100644
index 1e7a3b7..0000000
--- a/xsd/dist/examples/cxx/tree/compression/compression-vc12.vcxproj
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>compression</ProjectName>
- <ProjectGuid>{AA385EB4-7352-4865-9C5C-9F0DE7BA0060}</ProjectGuid>
- <RootNamespace>compression</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- <ClCompile Include="compressed-format-target.cxx" />
- <ClCompile Include="compressed-input-source.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- <ClInclude Include="compressed-format-target.hxx" />
- <ClInclude Include="compressed-input-source.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/compression/compression-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/compression/compression-vc12.vcxproj.filters
deleted file mode 100644
index 0156a51..0000000
--- a/xsd/dist/examples/cxx/tree/compression/compression-vc12.vcxproj.filters
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E38C94E8-B473-4B88-9C42-BD34C81BC24B}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{408177AE-D480-4933-AED3-705D39F15C9F}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{0e78ae69-359d-42ea-8a3c-c60040f3aa2c}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="compressed-format-target.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="compressed-input-source.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="compressed-format-target.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="compressed-input-source.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/compression/compression-vc8.vcproj b/xsd/dist/examples/cxx/tree/compression/compression-vc8.vcproj
deleted file mode 100644
index 85b45d8..0000000
--- a/xsd/dist/examples/cxx/tree/compression/compression-vc8.vcproj
+++ /dev/null
@@ -1,435 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="compression"
- ProjectGUID="{AA385EB4-7352-4865-9C5C-9F0DE7BA0060}"
- RootNamespace="compression"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib zdll.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib zdll.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib zdll.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib zdll.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{E38C94E8-B473-4B88-9C42-BD34C81BC24B}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- <File
- RelativePath=".\compressed-format-target.cxx">
- </File>
- <File
- RelativePath=".\compressed-input-source.cxx">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{408177AE-D480-4933-AED3-705D39F15C9F}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- <File
- RelativePath=".\compressed-format-target.hxx">
- </File>
- <File
- RelativePath=".\compressed-input-source.hxx">
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-serialization library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-serialization library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-serialization library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-intellisense --generate-serialization library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/compression/compression-vc9.vcproj b/xsd/dist/examples/cxx/tree/compression/compression-vc9.vcproj
deleted file mode 100644
index 92ea1da..0000000
--- a/xsd/dist/examples/cxx/tree/compression/compression-vc9.vcproj
+++ /dev/null
@@ -1,432 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="compression"
- ProjectGUID="{AA385EB4-7352-4865-9C5C-9F0DE7BA0060}"
- RootNamespace="compression"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib zdll.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib zdll.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib zdll.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib zdll.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{E38C94E8-B473-4B88-9C42-BD34C81BC24B}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- <File
- RelativePath=".\compressed-format-target.cxx">
- </File>
- <File
- RelativePath=".\compressed-input-source.cxx">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{408177AE-D480-4933-AED3-705D39F15C9F}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- <File
- RelativePath=".\compressed-format-target.hxx">
- </File>
- <File
- RelativePath=".\compressed-input-source.hxx">
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-serialization library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-serialization library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-serialization library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-ostream --generate-serialization library.xsd"
- Outputs="library.hxx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/compression/makefile b/xsd/dist/examples/cxx/tree/compression/makefile
deleted file mode 100644
index f55c6ad..0000000
--- a/xsd/dist/examples/cxx/tree/compression/makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-ostream --generate-serialization
-
-override LIBS += -lz
-
-# Build.
-#
-driver: driver.o library.o compressed-format-target.o compressed-input-source.o
-
-library.o: library.cxx library.hxx
-driver.o: driver.cxx library.hxx compressed-format-target.hxx \
-compressed-input-source.hxx
-compressed-format-target.o: compressed-format-target.cxx
-compressed-input-source.o: compressed-input-source.cxx
-
-library.cxx library.hxx: library.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver library.xml.gz
- ./driver library.xml.gz
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f library.o library.?xx driver.o compressed-format-target.o \
-compressed-input-source.o driver out.xml.gz
-
diff --git a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc10.vcxproj b/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc10.vcxproj
deleted file mode 100644
index 5d66876..0000000
--- a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc10.vcxproj
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>calendar</ProjectName>
- <ProjectGuid>{2DB41EF7-0BED-45BA-A311-44D2719BFE09}</ProjectGuid>
- <RootNamespace>calendar</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="calendar.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="xml-schema-custom.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="calendar.hxx" />
- <ClInclude Include="xml-schema-custom.hxx" />
- <ClInclude Include="xml-schema.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="calendar.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="calendar.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc10.vcxproj.filters
deleted file mode 100644
index 943a2dc..0000000
--- a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc10.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{1F206676-7422-4DD5-94C3-7B9B2EC9C2D6}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{8D4FED5E-FA2A-44AB-94AC-C8F302E2E1F3}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{5c4bcf4f-9ad2-4a82-adfb-91528fe6f2e5}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{df5d1e63-29c7-4626-853a-34fc5c7f7443}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="calendar.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="xml-schema-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="calendar.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="calendar.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="calendar.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc11.vcxproj b/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc11.vcxproj
deleted file mode 100644
index aea4aab..0000000
--- a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc11.vcxproj
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>calendar</ProjectName>
- <ProjectGuid>{2DB41EF7-0BED-45BA-A311-44D2719BFE09}</ProjectGuid>
- <RootNamespace>calendar</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="calendar.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="xml-schema-custom.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="calendar.hxx" />
- <ClInclude Include="xml-schema-custom.hxx" />
- <ClInclude Include="xml-schema.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="calendar.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="calendar.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc11.vcxproj.filters
deleted file mode 100644
index 943a2dc..0000000
--- a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc11.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{1F206676-7422-4DD5-94C3-7B9B2EC9C2D6}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{8D4FED5E-FA2A-44AB-94AC-C8F302E2E1F3}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{5c4bcf4f-9ad2-4a82-adfb-91528fe6f2e5}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{df5d1e63-29c7-4626-853a-34fc5c7f7443}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="calendar.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="xml-schema-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="calendar.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="calendar.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="calendar.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc12.vcxproj b/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc12.vcxproj
deleted file mode 100644
index d259aa3..0000000
--- a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc12.vcxproj
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>calendar</ProjectName>
- <ProjectGuid>{2DB41EF7-0BED-45BA-A311-44D2719BFE09}</ProjectGuid>
- <RootNamespace>calendar</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="calendar.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="xml-schema-custom.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="calendar.hxx" />
- <ClInclude Include="xml-schema-custom.hxx" />
- <ClInclude Include="xml-schema.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="calendar.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="calendar.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd calendar.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">calendar.hxx;calendar.ixx;calendar.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc12.vcxproj.filters
deleted file mode 100644
index 943a2dc..0000000
--- a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc12.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{1F206676-7422-4DD5-94C3-7B9B2EC9C2D6}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{8D4FED5E-FA2A-44AB-94AC-C8F302E2E1F3}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{5c4bcf4f-9ad2-4a82-adfb-91528fe6f2e5}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{df5d1e63-29c7-4626-853a-34fc5c7f7443}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="calendar.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="xml-schema-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="calendar.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="calendar.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="calendar.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc8.vcproj b/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc8.vcproj
deleted file mode 100644
index ea4e64d..0000000
--- a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc8.vcproj
+++ /dev/null
@@ -1,456 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="calendar"
- ProjectGUID="{2DB41EF7-0BED-45BA-A311-44D2719BFE09}"
- RootNamespace="calendar"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-intellisense --custom-type date --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-intellisense --custom-type date --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-intellisense --custom-type date --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-intellisense --custom-type date --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{1F206676-7422-4DD5-94C3-7B9B2EC9C2D6}"
- >
- <File
- RelativePath=".\calendar.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema-custom.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{8D4FED5E-FA2A-44AB-94AC-C8F302E2E1F3}"
- >
- <File
- RelativePath=".\calendar.hxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\calendar.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\calendar.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd calendar.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-intellisense --extern-xml-schema xml-schema.xsd calendar.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="calendar.hxx;calendar.ixx;calendar.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd calendar.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-intellisense --extern-xml-schema xml-schema.xsd calendar.xsd"
- Outputs="calendar.hxx;calendar.ixx;calendar.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd calendar.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-intellisense --extern-xml-schema xml-schema.xsd calendar.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="calendar.hxx;calendar.ixx;calendar.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd calendar.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-intellisense --extern-xml-schema xml-schema.xsd calendar.xsd"
- Outputs="calendar.hxx;calendar.ixx;calendar.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc9.vcproj b/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc9.vcproj
deleted file mode 100644
index 6f0186e..0000000
--- a/xsd/dist/examples/cxx/tree/custom/calendar/calendar-vc9.vcproj
+++ /dev/null
@@ -1,453 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="calendar"
- ProjectGUID="{2DB41EF7-0BED-45BA-A311-44D2719BFE09}"
- RootNamespace="calendar"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --custom-type date --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{1F206676-7422-4DD5-94C3-7B9B2EC9C2D6}"
- >
- <File
- RelativePath=".\calendar.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema-custom.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{8D4FED5E-FA2A-44AB-94AC-C8F302E2E1F3}"
- >
- <File
- RelativePath=".\calendar.hxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\calendar.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\calendar.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd calendar.xsd"
- CommandLine="xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="calendar.hxx;calendar.ixx;calendar.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd calendar.xsd"
- CommandLine="xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="calendar.hxx;calendar.ixx;calendar.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd calendar.xsd"
- CommandLine="xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd"
- Outputs="calendar.hxx;calendar.ixx;calendar.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd calendar.xsd"
- CommandLine="xsd cxx-tree --generate-inline --extern-xml-schema xml-schema.xsd calendar.xsd"
- Outputs="calendar.hxx;calendar.ixx;calendar.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/calendar/makefile b/xsd/dist/examples/cxx/tree/custom/calendar/makefile
deleted file mode 100644
index 009d647..0000000
--- a/xsd/dist/examples/cxx/tree/custom/calendar/makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-inline --extern-xml-schema xml-schema.xsd
-
-override LIBS += -lboost_date_time
-
-
-# Build.
-#
-driver: driver.o calendar.o xml-schema-custom.o
-
-driver.o: driver.cxx calendar.ixx calendar.hxx xml-schema.hxx xml-schema-custom.hxx
-calendar.o: calendar.cxx calendar.ixx calendar.hxx xml-schema.hxx xml-schema-custom.hxx
-xml-schema-custom.o: xml-schema.hxx xml-schema-custom.hxx
-
-calendar.cxx calendar.ixx calendar.hxx: calendar.xsd
-
-# Generate header for XML Schema namespace.
-#
-XML_SCHEMA_XSDFLAGS := --generate-xml-schema --custom-type date \
---hxx-epilogue '\#include "xml-schema-custom.hxx"'
-
-xml-schema.hxx:
- $(XSD) cxx-tree $(XML_SCHEMA_XSDFLAGS) xml-schema.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver calendar.xml
- ./driver calendar.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f xml-schema.hxx xml-schema-custom.o calendar.o calendar.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc10.vcxproj b/xsd/dist/examples/cxx/tree/custom/comments/comments-vc10.vcxproj
deleted file mode 100644
index 3e7e6b4..0000000
--- a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc10.vcxproj
+++ /dev/null
@@ -1,231 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>comments</ProjectName>
- <ProjectGuid>{262E34D2-48D2-4657-9DB2-F01FFDCEA295}</ProjectGuid>
- <RootNamespace>comments</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people.cxx" />
- <ClCompile Include="xml-schema-custom.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="people.hxx" />
- <ClInclude Include="xml-schema-custom.hxx" />
- <ClInclude Include="xml-schema.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/comments/comments-vc10.vcxproj.filters
deleted file mode 100644
index 934cabe..0000000
--- a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc10.vcxproj.filters
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{97CD019E-CFDE-4879-AB8C-97DB3B526F92}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{8E3E001B-1C7C-4383-A18D-B83AA525773F}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{07ed52c5-d0a0-4659-9a65-2ee052612d2c}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{515a4811-9a34-429e-9c6d-3b771934d8db}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="xml-schema-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc11.vcxproj b/xsd/dist/examples/cxx/tree/custom/comments/comments-vc11.vcxproj
deleted file mode 100644
index b96f28e..0000000
--- a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc11.vcxproj
+++ /dev/null
@@ -1,235 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>comments</ProjectName>
- <ProjectGuid>{262E34D2-48D2-4657-9DB2-F01FFDCEA295}</ProjectGuid>
- <RootNamespace>comments</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people.cxx" />
- <ClCompile Include="xml-schema-custom.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="people.hxx" />
- <ClInclude Include="xml-schema-custom.hxx" />
- <ClInclude Include="xml-schema.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/comments/comments-vc11.vcxproj.filters
deleted file mode 100644
index 934cabe..0000000
--- a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc11.vcxproj.filters
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{97CD019E-CFDE-4879-AB8C-97DB3B526F92}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{8E3E001B-1C7C-4383-A18D-B83AA525773F}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{07ed52c5-d0a0-4659-9a65-2ee052612d2c}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{515a4811-9a34-429e-9c6d-3b771934d8db}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="xml-schema-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc12.vcxproj b/xsd/dist/examples/cxx/tree/custom/comments/comments-vc12.vcxproj
deleted file mode 100644
index e237ff8..0000000
--- a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc12.vcxproj
+++ /dev/null
@@ -1,239 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>comments</ProjectName>
- <ProjectGuid>{262E34D2-48D2-4657-9DB2-F01FFDCEA295}</ProjectGuid>
- <RootNamespace>comments</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue "#include \"xml-schema-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people.cxx" />
- <ClCompile Include="xml-schema-custom.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="people.hxx" />
- <ClInclude Include="xml-schema-custom.hxx" />
- <ClInclude Include="xml-schema.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/comments/comments-vc12.vcxproj.filters
deleted file mode 100644
index 934cabe..0000000
--- a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc12.vcxproj.filters
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{97CD019E-CFDE-4879-AB8C-97DB3B526F92}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{8E3E001B-1C7C-4383-A18D-B83AA525773F}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{07ed52c5-d0a0-4659-9a65-2ee052612d2c}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{515a4811-9a34-429e-9c6d-3b771934d8db}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="xml-schema-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc8.vcproj b/xsd/dist/examples/cxx/tree/custom/comments/comments-vc8.vcproj
deleted file mode 100644
index 2093acf..0000000
--- a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc8.vcproj
+++ /dev/null
@@ -1,464 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="comments"
- ProjectGUID="{262E34D2-48D2-4657-9DB2-F01FFDCEA295}"
- RootNamespace="comments"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --generate-intellisense --custom-type anyType=/type_base --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --generate-intellisense --custom-type anyType=/type_base --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --generate-intellisense --custom-type anyType=/type_base --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --generate-intellisense --custom-type anyType=/type_base --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{97CD019E-CFDE-4879-AB8C-97DB3B526F92}"
- >
- <File
- RelativePath=".\dom-parse.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\people.cxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema-custom.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{8E3E001B-1C7C-4383-A18D-B83AA525773F}"
- >
- <File
- RelativePath=".\dom-parse.hxx"
- >
- </File>
- <File
- RelativePath=".\people.hxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\people.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\people.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --extern-xml-schema xml-schema.xsd people.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --extern-xml-schema xml-schema.xsd people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --extern-xml-schema xml-schema.xsd people.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --extern-xml-schema xml-schema.xsd people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc9.vcproj b/xsd/dist/examples/cxx/tree/custom/comments/comments-vc9.vcproj
deleted file mode 100644
index 43281c6..0000000
--- a/xsd/dist/examples/cxx/tree/custom/comments/comments-vc9.vcproj
+++ /dev/null
@@ -1,461 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="comments"
- ProjectGUID="{262E34D2-48D2-4657-9DB2-F01FFDCEA295}"
- RootNamespace="comments"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type anyType=/type_base --hxx-epilogue &quot;#include \&quot;xml-schema-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{97CD019E-CFDE-4879-AB8C-97DB3B526F92}"
- >
- <File
- RelativePath=".\dom-parse.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\people.cxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema-custom.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{8E3E001B-1C7C-4383-A18D-B83AA525773F}"
- >
- <File
- RelativePath=".\dom-parse.hxx"
- >
- </File>
- <File
- RelativePath=".\people.hxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\people.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\people.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/comments/makefile b/xsd/dist/examples/cxx/tree/custom/comments/makefile
deleted file mode 100644
index 4c231c6..0000000
--- a/xsd/dist/examples/cxx/tree/custom/comments/makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-inline --generate-serialization \
---extern-xml-schema xml-schema.xsd
-
-
-# Build.
-#
-driver: driver.o people.o xml-schema-custom.o dom-parse.o
-
-driver.o: driver.cxx dom-parse.hxx people.ixx people.hxx xml-schema.hxx xml-schema-custom.hxx
-people.o: people.cxx people.ixx people.hxx xml-schema.hxx xml-schema-custom.hxx
-xml-schema-custom.o: xml-schema.hxx xml-schema-custom.hxx
-dom-parse.o: dom-parse.cxx dom-parse.hxx
-
-people.cxx people.ixx people.hxx: people.xsd
-
-# Generate header for XML Schema namespace.
-#
-XML_SCHEMA_XSDFLAGS := --generate-xml-schema --generate-serialization \
---hxx-epilogue '\#include "xml-schema-custom.hxx"'
-
-ifneq ($(shell uname -o),Msys)
-XML_SCHEMA_XSDFLAGS += --custom-type anyType=/type_base
-else
-# Prevent MSYS from converting / to Windows path.
-XML_SCHEMA_XSDFLAGS += --custom-type anyType=//type_base
-endif
-
-xml-schema.hxx:
- $(XSD) cxx-tree $(XML_SCHEMA_XSDFLAGS) xml-schema.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver people.xml
- ./driver people.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f xml-schema.hxx xml-schema-custom.o people.o people.?xx dom-parse.o driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc10.vcxproj b/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc10.vcxproj
deleted file mode 100644
index e43ef84..0000000
--- a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc10.vcxproj
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>contacts</ProjectName>
- <ProjectGuid>{9FB807C1-53EE-4E71-812F-89E8BE6FCB43}</ProjectGuid>
- <RootNamespace>contacts</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="contacts-custom.cxx" />
- <ClCompile Include="contacts.cxx" />
- <ClCompile Include="driver.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="contacts-custom.hxx" />
- <ClInclude Include="contacts.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="contacts.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="contacts.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc10.vcxproj.filters
deleted file mode 100644
index 4435f19..0000000
--- a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc10.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{2E28B5D5-6E1D-434A-BFE2-2162751B243B}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{92523A51-9884-450F-A581-5618AB14A9E3}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{63214694-d62f-4e29-965b-bc5ecd1ac8b8}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{8b44177f-b842-4c6c-bfb8-c25e433bc0a3}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="contacts-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="contacts.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="contacts-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="contacts.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="contacts.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="contacts.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc11.vcxproj b/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc11.vcxproj
deleted file mode 100644
index 0059939..0000000
--- a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc11.vcxproj
+++ /dev/null
@@ -1,212 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>contacts</ProjectName>
- <ProjectGuid>{9FB807C1-53EE-4E71-812F-89E8BE6FCB43}</ProjectGuid>
- <RootNamespace>contacts</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="contacts-custom.cxx" />
- <ClCompile Include="contacts.cxx" />
- <ClCompile Include="driver.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="contacts-custom.hxx" />
- <ClInclude Include="contacts.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="contacts.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="contacts.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc11.vcxproj.filters
deleted file mode 100644
index 4435f19..0000000
--- a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc11.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{2E28B5D5-6E1D-434A-BFE2-2162751B243B}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{92523A51-9884-450F-A581-5618AB14A9E3}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{63214694-d62f-4e29-965b-bc5ecd1ac8b8}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{8b44177f-b842-4c6c-bfb8-c25e433bc0a3}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="contacts-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="contacts.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="contacts-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="contacts.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="contacts.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="contacts.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc12.vcxproj b/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc12.vcxproj
deleted file mode 100644
index f955bda..0000000
--- a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc12.vcxproj
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>contacts</ProjectName>
- <ProjectGuid>{9FB807C1-53EE-4E71-812F-89E8BE6FCB43}</ProjectGuid>
- <RootNamespace>contacts</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="contacts-custom.cxx" />
- <ClCompile Include="contacts.cxx" />
- <ClCompile Include="driver.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="contacts-custom.hxx" />
- <ClInclude Include="contacts.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="contacts.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="contacts.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd contacts.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue "#include \"contacts-custom.hxx\"" contacts.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">contacts.hxx;contacts.ixx;contacts.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc12.vcxproj.filters
deleted file mode 100644
index 4435f19..0000000
--- a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc12.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{2E28B5D5-6E1D-434A-BFE2-2162751B243B}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{92523A51-9884-450F-A581-5618AB14A9E3}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{63214694-d62f-4e29-965b-bc5ecd1ac8b8}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{8b44177f-b842-4c6c-bfb8-c25e433bc0a3}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="contacts-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="contacts.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="contacts-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="contacts.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="contacts.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="contacts.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc8.vcproj b/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc8.vcproj
deleted file mode 100644
index a7985ee..0000000
--- a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc8.vcproj
+++ /dev/null
@@ -1,440 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="contacts"
- ProjectGUID="{9FB807C1-53EE-4E71-812F-89E8BE6FCB43}"
- RootNamespace="contacts"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{2E28B5D5-6E1D-434A-BFE2-2162751B243B}"
- >
- <File
- RelativePath=".\contacts-custom.cxx"
- >
- </File>
- <File
- RelativePath=".\contacts.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{92523A51-9884-450F-A581-5618AB14A9E3}"
- >
- <File
- RelativePath=".\contacts-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\contacts.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\contacts.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\contacts.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd contacts.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-intellisense --custom-type contact=/contact_base --hxx-epilogue &quot;#include \&quot;contacts-custom.hxx\&quot;&quot; contacts.xsd"
- Outputs="contacts.hxx;contacts.ixx;contacts.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd contacts.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-intellisense --custom-type contact=/contact_base --hxx-epilogue &quot;#include \&quot;contacts-custom.hxx\&quot;&quot; contacts.xsd"
- Outputs="contacts.hxx;contacts.ixx;contacts.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd contacts.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-intellisense --custom-type contact=/contact_base --hxx-epilogue &quot;#include \&quot;contacts-custom.hxx\&quot;&quot; contacts.xsd"
- Outputs="contacts.hxx;contacts.ixx;contacts.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd contacts.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-intellisense --custom-type contact=/contact_base --hxx-epilogue &quot;#include \&quot;contacts-custom.hxx\&quot;&quot; contacts.xsd"
- Outputs="contacts.hxx;contacts.ixx;contacts.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc9.vcproj b/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc9.vcproj
deleted file mode 100644
index 6305933..0000000
--- a/xsd/dist/examples/cxx/tree/custom/contacts/contacts-vc9.vcproj
+++ /dev/null
@@ -1,437 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="contacts"
- ProjectGUID="{9FB807C1-53EE-4E71-812F-89E8BE6FCB43}"
- RootNamespace="contacts"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{2E28B5D5-6E1D-434A-BFE2-2162751B243B}"
- >
- <File
- RelativePath=".\contacts-custom.cxx"
- >
- </File>
- <File
- RelativePath=".\contacts.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{92523A51-9884-450F-A581-5618AB14A9E3}"
- >
- <File
- RelativePath=".\contacts-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\contacts.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\contacts.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\contacts.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd contacts.xsd"
- CommandLine="xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue &quot;#include \&quot;contacts-custom.hxx\&quot;&quot; contacts.xsd"
- Outputs="contacts.hxx;contacts.ixx;contacts.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd contacts.xsd"
- CommandLine="xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue &quot;#include \&quot;contacts-custom.hxx\&quot;&quot; contacts.xsd"
- Outputs="contacts.hxx;contacts.ixx;contacts.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd contacts.xsd"
- CommandLine="xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue &quot;#include \&quot;contacts-custom.hxx\&quot;&quot; contacts.xsd"
- Outputs="contacts.hxx;contacts.ixx;contacts.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd contacts.xsd"
- CommandLine="xsd cxx-tree --generate-inline --custom-type contact=/contact_base --hxx-epilogue &quot;#include \&quot;contacts-custom.hxx\&quot;&quot; contacts.xsd"
- Outputs="contacts.hxx;contacts.ixx;contacts.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/contacts/makefile b/xsd/dist/examples/cxx/tree/custom/contacts/makefile
deleted file mode 100644
index 845f6c3..0000000
--- a/xsd/dist/examples/cxx/tree/custom/contacts/makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-inline \
---hxx-epilogue '\#include "contacts-custom.hxx"'
-
-ifneq ($(shell uname -o),Msys)
-override XSDFLAGS += --custom-type contact=/contact_base
-else
-# Prevent MSYS from converting / to Windows path.
-override XSDFLAGS += --custom-type contact=//contact_base
-endif
-
-# Build.
-#
-driver: driver.o contacts.o contacts-custom.o
-
-contacts.o: contacts.cxx contacts.ixx contacts.hxx contacts-custom.hxx
-driver.o: driver.cxx contacts.ixx contacts.hxx contacts-custom.hxx
-contacts-custom.o: contacts-custom.cxx contacts.ixx contacts.hxx contacts-custom.hxx
-
-contacts.cxx contacts.hxx contacts.ixx: contacts.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver contacts.xml
- ./driver contacts.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f contacts-custom.o contacts.o contacts.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/custom/double/double-vc10.vcxproj b/xsd/dist/examples/cxx/tree/custom/double/double-vc10.vcxproj
deleted file mode 100644
index fcedc48..0000000
--- a/xsd/dist/examples/cxx/tree/custom/double/double-vc10.vcxproj
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>double</ProjectName>
- <ProjectGuid>{CCE6AE91-39AC-49B6-8763-742B65FCD92E}</ProjectGuid>
- <RootNamespace>double</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="order.cxx" />
- <ClCompile Include="double-custom.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="order.hxx" />
- <ClInclude Include="double-custom.hxx" />
- <ClInclude Include="xml-schema.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="order.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="order.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/double/double-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/double/double-vc10.vcxproj.filters
deleted file mode 100644
index b36f95b..0000000
--- a/xsd/dist/examples/cxx/tree/custom/double/double-vc10.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{9AB5F296-2836-4A71-A39E-8D63EECB86D8}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{CDC85F55-DEE6-4EB3-9B72-1CBDDA21CFBE}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{69c0bc69-f38e-42f7-8c11-cd6c1a121574}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{bad36e63-36c2-4233-87a2-68af084d612a}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="order.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="double-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="order.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="double-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="order.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="order.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/double/double-vc11.vcxproj b/xsd/dist/examples/cxx/tree/custom/double/double-vc11.vcxproj
deleted file mode 100644
index eebb33b..0000000
--- a/xsd/dist/examples/cxx/tree/custom/double/double-vc11.vcxproj
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>double</ProjectName>
- <ProjectGuid>{CCE6AE91-39AC-49B6-8763-742B65FCD92E}</ProjectGuid>
- <RootNamespace>double</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="order.cxx" />
- <ClCompile Include="double-custom.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="order.hxx" />
- <ClInclude Include="double-custom.hxx" />
- <ClInclude Include="xml-schema.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="order.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="order.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/double/double-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/double/double-vc11.vcxproj.filters
deleted file mode 100644
index b36f95b..0000000
--- a/xsd/dist/examples/cxx/tree/custom/double/double-vc11.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{9AB5F296-2836-4A71-A39E-8D63EECB86D8}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{CDC85F55-DEE6-4EB3-9B72-1CBDDA21CFBE}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{69c0bc69-f38e-42f7-8c11-cd6c1a121574}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{bad36e63-36c2-4233-87a2-68af084d612a}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="order.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="double-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="order.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="double-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="order.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="order.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/double/double-vc12.vcxproj b/xsd/dist/examples/cxx/tree/custom/double/double-vc12.vcxproj
deleted file mode 100644
index 537153e..0000000
--- a/xsd/dist/examples/cxx/tree/custom/double/double-vc12.vcxproj
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>double</ProjectName>
- <ProjectGuid>{CCE6AE91-39AC-49B6-8763-742B65FCD92E}</ProjectGuid>
- <RootNamespace>double</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</PreBuildEventUseInBuild>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <PreBuildEvent>
- <Message>xsd xml-schema.xsd</Message>
- <Command>xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue "#include \"double-custom.hxx\"" xml-schema.xsd</Command>
- </PreBuildEvent>
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="order.cxx" />
- <ClCompile Include="double-custom.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="order.hxx" />
- <ClInclude Include="double-custom.hxx" />
- <ClInclude Include="xml-schema.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="order.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="order.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xml-schema.hxx;%(AdditionalInputs)</AdditionalInputs>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd order.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">order.hxx;order.ixx;order.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/double/double-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/double/double-vc12.vcxproj.filters
deleted file mode 100644
index b36f95b..0000000
--- a/xsd/dist/examples/cxx/tree/custom/double/double-vc12.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{9AB5F296-2836-4A71-A39E-8D63EECB86D8}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{CDC85F55-DEE6-4EB3-9B72-1CBDDA21CFBE}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{69c0bc69-f38e-42f7-8c11-cd6c1a121574}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{bad36e63-36c2-4233-87a2-68af084d612a}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="order.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="double-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="order.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="double-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="xml-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="order.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="order.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/double/double-vc8.vcproj b/xsd/dist/examples/cxx/tree/custom/double/double-vc8.vcproj
deleted file mode 100644
index 39a1945..0000000
--- a/xsd/dist/examples/cxx/tree/custom/double/double-vc8.vcproj
+++ /dev/null
@@ -1,456 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="double"
- ProjectGUID="{CCE6AE91-39AC-49B6-8763-742B65FCD92E}"
- RootNamespace="double"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --generate-intellisense --custom-type double=double --hxx-epilogue &quot;#include \&quot;double-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --generate-intellisense --custom-type double=double --hxx-epilogue &quot;#include \&quot;double-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --generate-intellisense --custom-type double=double --hxx-epilogue &quot;#include \&quot;double-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --generate-intellisense --custom-type double=double --hxx-epilogue &quot;#include \&quot;double-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{9AB5F296-2836-4A71-A39E-8D63EECB86D8}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\order.cxx"
- >
- </File>
- <File
- RelativePath=".\double-custom.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{CDC85F55-DEE6-4EB3-9B72-1CBDDA21CFBE}"
- >
- <File
- RelativePath=".\order.hxx"
- >
- </File>
- <File
- RelativePath=".\double-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\order.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\order.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd order.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --extern-xml-schema xml-schema.xsd order.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="order.hxx;order.ixx;order.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd order.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --extern-xml-schema xml-schema.xsd order.xsd"
- Outputs="order.hxx;order.ixx;order.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd order.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --extern-xml-schema xml-schema.xsd order.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="order.hxx;order.ixx;order.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd order.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --extern-xml-schema xml-schema.xsd order.xsd"
- Outputs="order.hxx;order.ixx;order.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/double/double-vc9.vcproj b/xsd/dist/examples/cxx/tree/custom/double/double-vc9.vcproj
deleted file mode 100644
index 8cb6e4e..0000000
--- a/xsd/dist/examples/cxx/tree/custom/double/double-vc9.vcproj
+++ /dev/null
@@ -1,453 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="double"
- ProjectGUID="{CCE6AE91-39AC-49B6-8763-742B65FCD92E}"
- RootNamespace="double"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue &quot;#include \&quot;double-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue &quot;#include \&quot;double-custom.hxx\&quot;&quot; xml-schema.xsd"
- ExcludedFromBuild="false"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue &quot;#include \&quot;double-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="xsd xml-schema.xsd"
- CommandLine="xsd cxx-tree --generate-xml-schema --generate-serialization --custom-type double=double --hxx-epilogue &quot;#include \&quot;double-custom.hxx\&quot;&quot; xml-schema.xsd"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{9AB5F296-2836-4A71-A39E-8D63EECB86D8}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\order.cxx"
- >
- </File>
- <File
- RelativePath=".\double-custom.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{CDC85F55-DEE6-4EB3-9B72-1CBDDA21CFBE}"
- >
- <File
- RelativePath=".\order.hxx"
- >
- </File>
- <File
- RelativePath=".\double-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\xml-schema.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\order.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\order.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd order.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="order.hxx;order.ixx;order.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd order.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd"
- AdditionalDependencies="xml-schema.hxx"
- Outputs="order.hxx;order.ixx;order.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd order.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd"
- Outputs="order.hxx;order.ixx;order.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd order.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --extern-xml-schema xml-schema.xsd order.xsd"
- Outputs="order.hxx;order.ixx;order.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/double/makefile b/xsd/dist/examples/cxx/tree/custom/double/makefile
deleted file mode 100644
index 9480279..0000000
--- a/xsd/dist/examples/cxx/tree/custom/double/makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-inline --generate-serialization \
---extern-xml-schema xml-schema.xsd
-
-
-# Build.
-#
-driver: driver.o order.o double-custom.o
-
-driver.o: driver.cxx order.ixx order.hxx xml-schema.hxx double-custom.hxx
-order.o: order.cxx order.ixx order.hxx xml-schema.hxx double-custom.hxx
-double-custom.o: xml-schema.hxx double-custom.hxx
-
-order.cxx order.ixx order.hxx: order.xsd
-
-# Generate header for XML Schema namespace.
-#
-XML_SCHEMA_XSDFLAGS := --generate-xml-schema --generate-serialization \
---custom-type double=double \
---hxx-epilogue '\#include "double-custom.hxx"'
-
-xml-schema.hxx:
- $(XSD) cxx-tree $(XML_SCHEMA_XSDFLAGS) xml-schema.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver
- ./driver
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f xml-schema.hxx double-custom.o order.o order.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/custom/makefile b/xsd/dist/examples/cxx/tree/custom/makefile
deleted file mode 100644
index 584f599..0000000
--- a/xsd/dist/examples/cxx/tree/custom/makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-dirs := comments contacts double mixed taxonomy wildcard
-
-ifeq ($(WITH_BOOST),1)
-dirs += calendar
-endif
-
-.PHONY: all $(dirs)
-
-all: $(dirs)
-
-$(dirs):
- @$(MAKE) -C $@ $(MAKECMDGOALS)
-
-makefile: ;
-% :: $(dirs) ;
diff --git a/xsd/dist/examples/cxx/tree/custom/mixed/makefile b/xsd/dist/examples/cxx/tree/custom/mixed/makefile
deleted file mode 100644
index c5dac63..0000000
--- a/xsd/dist/examples/cxx/tree/custom/mixed/makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-inline --generate-serialization \
---hxx-epilogue '\#include "people-custom.hxx"'
-
-ifneq ($(shell uname -o),Msys)
-override XSDFLAGS += --custom-type bio=/bio_base
-else
-# Prevent MSYS from converting / to Windows path.
-override XSDFLAGS += --custom-type bio=//bio_base
-endif
-
-
-# Build.
-#
-driver: driver.o people.o people-custom.o
-
-people.o: people.cxx people.ixx people.hxx people-custom.hxx
-driver.o: driver.cxx people.ixx people.hxx people-custom.hxx
-people-custom.o: people-custom.cxx people.ixx people.hxx people-custom.hxx
-
-people.cxx people.hxx people.ixx: people.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver people.xml
- ./driver people.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f people-custom.o people.o people.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc10.vcxproj b/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc10.vcxproj
deleted file mode 100644
index 86258d4..0000000
--- a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc10.vcxproj
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixed</ProjectName>
- <ProjectGuid>{26CE0C08-7621-403A-88A7-206E64F32C66}</ProjectGuid>
- <RootNamespace>mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people-custom.cxx" />
- <ClCompile Include="people.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom.hxx" />
- <ClInclude Include="people.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc10.vcxproj.filters
deleted file mode 100644
index 1f317e1..0000000
--- a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc10.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{CBA3D0E2-DDB8-4ABE-8B5A-7A28191CA323}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{54846A6A-25CD-4C8C-A5F1-2DAC77554F47}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{ba5c74eb-b935-4573-98b5-2987ed135ec6}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{b02fd6d3-59e2-4819-9c5b-66ef2b5834a0}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc11.vcxproj b/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc11.vcxproj
deleted file mode 100644
index 9afcc81..0000000
--- a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc11.vcxproj
+++ /dev/null
@@ -1,212 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixed</ProjectName>
- <ProjectGuid>{26CE0C08-7621-403A-88A7-206E64F32C66}</ProjectGuid>
- <RootNamespace>mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people-custom.cxx" />
- <ClCompile Include="people.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom.hxx" />
- <ClInclude Include="people.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc11.vcxproj.filters
deleted file mode 100644
index 1f317e1..0000000
--- a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc11.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{CBA3D0E2-DDB8-4ABE-8B5A-7A28191CA323}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{54846A6A-25CD-4C8C-A5F1-2DAC77554F47}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{ba5c74eb-b935-4573-98b5-2987ed135ec6}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{b02fd6d3-59e2-4819-9c5b-66ef2b5834a0}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc12.vcxproj b/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc12.vcxproj
deleted file mode 100644
index a7b4f73..0000000
--- a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc12.vcxproj
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixed</ProjectName>
- <ProjectGuid>{26CE0C08-7621-403A-88A7-206E64F32C66}</ProjectGuid>
- <RootNamespace>mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people-custom.cxx" />
- <ClCompile Include="people.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom.hxx" />
- <ClInclude Include="people.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc12.vcxproj.filters
deleted file mode 100644
index 1f317e1..0000000
--- a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc12.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{CBA3D0E2-DDB8-4ABE-8B5A-7A28191CA323}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{54846A6A-25CD-4C8C-A5F1-2DAC77554F47}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{ba5c74eb-b935-4573-98b5-2987ed135ec6}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{b02fd6d3-59e2-4819-9c5b-66ef2b5834a0}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc8.vcproj b/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc8.vcproj
deleted file mode 100644
index a02149b..0000000
--- a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc8.vcproj
+++ /dev/null
@@ -1,440 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="mixed"
- ProjectGUID="{26CE0C08-7621-403A-88A7-206E64F32C66}"
- RootNamespace="mixed"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{CBA3D0E2-DDB8-4ABE-8B5A-7A28191CA323}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\people-custom.cxx"
- >
- </File>
- <File
- RelativePath=".\people.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{54846A6A-25CD-4C8C-A5F1-2DAC77554F47}"
- >
- <File
- RelativePath=".\people-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\people.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\people.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\people.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --custom-type bio=/bio_base --hxx-epilogue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --custom-type bio=/bio_base --hxx-epilogue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --custom-type bio=/bio_base --hxx-epilogue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense --custom-type bio=/bio_base --hxx-epilogue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc9.vcproj b/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc9.vcproj
deleted file mode 100644
index 331c786..0000000
--- a/xsd/dist/examples/cxx/tree/custom/mixed/mixed-vc9.vcproj
+++ /dev/null
@@ -1,437 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="mixed"
- ProjectGUID="{26CE0C08-7621-403A-88A7-206E64F32C66}"
- RootNamespace="mixed"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{CBA3D0E2-DDB8-4ABE-8B5A-7A28191CA323}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\people-custom.cxx"
- >
- </File>
- <File
- RelativePath=".\people.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{54846A6A-25CD-4C8C-A5F1-2DAC77554F47}"
- >
- <File
- RelativePath=".\people-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\people.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\people.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\people.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --custom-type bio=/bio_base --hxx-epilogue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/taxonomy/makefile b/xsd/dist/examples/cxx/tree/custom/taxonomy/makefile
deleted file mode 100644
index 11fa6ef..0000000
--- a/xsd/dist/examples/cxx/tree/custom/taxonomy/makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-inline --generate-forward \
---generate-polymorphic \
---polymorphic-type person \
---custom-type "person=person_impl<person_base>/person_base" \
---custom-type "superman=superman_impl<superman_base>/superman_base" \
---custom-type "batman=batman_impl<batman_base>/batman_base" \
---fwd-prologue '\#include "people-custom-fwd.hxx"' \
---hxx-prologue '\#include "people-custom.hxx"'
-
-
-# Build.
-#
-driver: driver.o people.o people-custom.o
-
-people.o: people.cxx people.ixx people.hxx people-custom.hxx people-custom-fwd.hxx
-driver.o: driver.cxx people.ixx people.hxx people-custom.hxx people-custom-fwd.hxx
-people-custom.o: people-custom.cxx people.ixx people.hxx people-custom.hxx people-custom-fwd.hxx
-
-people.cxx people.ixx people.hxx people-fwd.hxx: people.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver people.xml
- ./driver people.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f people-custom.o people.o people-fwd.hxx people.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc10.vcxproj b/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc10.vcxproj
deleted file mode 100644
index 24040c6..0000000
--- a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc10.vcxproj
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>taxonomy</ProjectName>
- <ProjectGuid>{B3108E70-7B4E-4DDA-8872-0DC4AFDCB2D9}</ProjectGuid>
- <RootNamespace>taxonomy</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people-custom.cxx" />
- <ClCompile Include="people.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom-fwd.hxx" />
- <ClInclude Include="people-custom.hxx" />
- <ClInclude Include="people-fwd.hxx" />
- <ClInclude Include="people.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc10.vcxproj.filters
deleted file mode 100644
index 78058c3..0000000
--- a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc10.vcxproj.filters
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E2FFBF97-01E8-483D-8B32-D8D6F065E4C7}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{0B3DDFAD-4254-48B9-BB24-1FC92DD1E7F6}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{a33f9d45-baba-483a-83c4-9421790f7d92}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{0c14530b-7a4b-4841-864e-e8da7ae18eea}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom-fwd.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people-fwd.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc11.vcxproj b/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc11.vcxproj
deleted file mode 100644
index f10b12a..0000000
--- a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc11.vcxproj
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>taxonomy</ProjectName>
- <ProjectGuid>{B3108E70-7B4E-4DDA-8872-0DC4AFDCB2D9}</ProjectGuid>
- <RootNamespace>taxonomy</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people-custom.cxx" />
- <ClCompile Include="people.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom-fwd.hxx" />
- <ClInclude Include="people-custom.hxx" />
- <ClInclude Include="people-fwd.hxx" />
- <ClInclude Include="people.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc11.vcxproj.filters
deleted file mode 100644
index 78058c3..0000000
--- a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc11.vcxproj.filters
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E2FFBF97-01E8-483D-8B32-D8D6F065E4C7}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{0B3DDFAD-4254-48B9-BB24-1FC92DD1E7F6}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{a33f9d45-baba-483a-83c4-9421790f7d92}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{0c14530b-7a4b-4841-864e-e8da7ae18eea}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom-fwd.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people-fwd.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc12.vcxproj b/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc12.vcxproj
deleted file mode 100644
index c5579d9..0000000
--- a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc12.vcxproj
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>taxonomy</ProjectName>
- <ProjectGuid>{B3108E70-7B4E-4DDA-8872-0DC4AFDCB2D9}</ProjectGuid>
- <RootNamespace>taxonomy</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people-custom.cxx" />
- <ClCompile Include="people.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom-fwd.hxx" />
- <ClInclude Include="people-custom.hxx" />
- <ClInclude Include="people-fwd.hxx" />
- <ClInclude Include="people.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type "person=person_impl&lt;person_base&gt;/person_base" --custom-type "superman=superman_impl&lt;superman_base&gt;/superman_base" --custom-type "batman=batman_impl&lt;batman_base&gt;/batman_base" --fwd-prologue "#include \"people-custom-fwd.hxx\"" --hxx-prologue "#include \"people-custom.hxx\"" people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people-fwd.hxx;people.hxx;people.ixx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc12.vcxproj.filters
deleted file mode 100644
index 78058c3..0000000
--- a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc12.vcxproj.filters
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E2FFBF97-01E8-483D-8B32-D8D6F065E4C7}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{0B3DDFAD-4254-48B9-BB24-1FC92DD1E7F6}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{a33f9d45-baba-483a-83c4-9421790f7d92}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{0c14530b-7a4b-4841-864e-e8da7ae18eea}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="people-custom-fwd.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people-fwd.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="people.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc8.vcproj b/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc8.vcproj
deleted file mode 100644
index 74744f4..0000000
--- a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc8.vcproj
+++ /dev/null
@@ -1,448 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="taxonomy"
- ProjectGUID="{B3108E70-7B4E-4DDA-8872-0DC4AFDCB2D9}"
- RootNamespace="taxonomy"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{E2FFBF97-01E8-483D-8B32-D8D6F065E4C7}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\people-custom.cxx"
- >
- </File>
- <File
- RelativePath=".\people.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{0B3DDFAD-4254-48B9-BB24-1FC92DD1E7F6}"
- >
- <File
- RelativePath=".\people-custom-fwd.hxx"
- >
- </File>
- <File
- RelativePath=".\people-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\people-fwd.hxx"
- >
- </File>
- <File
- RelativePath=".\people.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\people.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\people.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --generate-intellisense --custom-type &quot;person=person_impl&lt;person_base&gt;/person_base&quot; --custom-type &quot;superman=superman_impl&lt;superman_base&gt;/superman_base&quot; --custom-type &quot;batman=batman_impl&lt;batman_base&gt;/batman_base&quot; --fwd-prologue &quot;#include \&quot;people-custom-fwd.hxx\&quot;&quot; --hxx-prologue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people-fwd.hxx,people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --generate-intellisense --custom-type &quot;person=person_impl&lt;person_base&gt;/person_base&quot; --custom-type &quot;superman=superman_impl&lt;superman_base&gt;/superman_base&quot; --custom-type &quot;batman=batman_impl&lt;batman_base&gt;/batman_base&quot; --fwd-prologue &quot;#include \&quot;people-custom-fwd.hxx\&quot;&quot; --hxx-prologue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people-fwd.hxx,people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --generate-intellisense --custom-type &quot;person=person_impl&lt;person_base&gt;/person_base&quot; --custom-type &quot;superman=superman_impl&lt;superman_base&gt;/superman_base&quot; --custom-type &quot;batman=batman_impl&lt;batman_base&gt;/batman_base&quot; --fwd-prologue &quot;#include \&quot;people-custom-fwd.hxx\&quot;&quot; --hxx-prologue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people-fwd.hxx,people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --generate-intellisense --custom-type &quot;person=person_impl&lt;person_base&gt;/person_base&quot; --custom-type &quot;superman=superman_impl&lt;superman_base&gt;/superman_base&quot; --custom-type &quot;batman=batman_impl&lt;batman_base&gt;/batman_base&quot; --fwd-prologue &quot;#include \&quot;people-custom-fwd.hxx\&quot;&quot; --hxx-prologue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people-fwd.hxx,people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc9.vcproj b/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc9.vcproj
deleted file mode 100644
index 1ff90d3..0000000
--- a/xsd/dist/examples/cxx/tree/custom/taxonomy/taxonomy-vc9.vcproj
+++ /dev/null
@@ -1,445 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="taxonomy"
- ProjectGUID="{B3108E70-7B4E-4DDA-8872-0DC4AFDCB2D9}"
- RootNamespace="taxonomy"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{E2FFBF97-01E8-483D-8B32-D8D6F065E4C7}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\people-custom.cxx"
- >
- </File>
- <File
- RelativePath=".\people.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{0B3DDFAD-4254-48B9-BB24-1FC92DD1E7F6}"
- >
- <File
- RelativePath=".\people-custom-fwd.hxx"
- >
- </File>
- <File
- RelativePath=".\people-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\people-fwd.hxx"
- >
- </File>
- <File
- RelativePath=".\people.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\people.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\people.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type &quot;person=person_impl&lt;person_base&gt;/person_base&quot; --custom-type &quot;superman=superman_impl&lt;superman_base&gt;/superman_base&quot; --custom-type &quot;batman=batman_impl&lt;batman_base&gt;/batman_base&quot; --fwd-prologue &quot;#include \&quot;people-custom-fwd.hxx\&quot;&quot; --hxx-prologue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people-fwd.hxx,people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type &quot;person=person_impl&lt;person_base&gt;/person_base&quot; --custom-type &quot;superman=superman_impl&lt;superman_base&gt;/superman_base&quot; --custom-type &quot;batman=batman_impl&lt;batman_base&gt;/batman_base&quot; --fwd-prologue &quot;#include \&quot;people-custom-fwd.hxx\&quot;&quot; --hxx-prologue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people-fwd.hxx,people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type &quot;person=person_impl&lt;person_base&gt;/person_base&quot; --custom-type &quot;superman=superman_impl&lt;superman_base&gt;/superman_base&quot; --custom-type &quot;batman=batman_impl&lt;batman_base&gt;/batman_base&quot; --fwd-prologue &quot;#include \&quot;people-custom-fwd.hxx\&quot;&quot; --hxx-prologue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people-fwd.hxx,people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-forward --generate-polymorphic --polymorphic-type person --custom-type &quot;person=person_impl&lt;person_base&gt;/person_base&quot; --custom-type &quot;superman=superman_impl&lt;superman_base&gt;/superman_base&quot; --custom-type &quot;batman=batman_impl&lt;batman_base&gt;/batman_base&quot; --fwd-prologue &quot;#include \&quot;people-custom-fwd.hxx\&quot;&quot; --hxx-prologue &quot;#include \&quot;people-custom.hxx\&quot;&quot; people.xsd"
- Outputs="people-fwd.hxx,people.hxx;people.ixx;people.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/wildcard/makefile b/xsd/dist/examples/cxx/tree/custom/wildcard/makefile
deleted file mode 100644
index f7561a2..0000000
--- a/xsd/dist/examples/cxx/tree/custom/wildcard/makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-inline --generate-ostream \
---generate-serialization --hxx-epilogue '\#include "wildcard-custom.hxx"'
-
-ifneq ($(shell uname -o),Msys)
-override XSDFLAGS += --custom-type data=/data_base
-else
-# Prevent MSYS from converting / to Windows path.
-override XSDFLAGS += --custom-type data=//data_base
-endif
-
-
-# Build.
-#
-driver: driver.o wildcard.o wildcard-custom.o
-
-wildcard.o: wildcard.cxx wildcard.ixx wildcard.hxx wildcard-custom.hxx
-driver.o: driver.cxx wildcard.ixx wildcard.hxx wildcard-custom.hxx
-wildcard-custom.o: wildcard-custom.cxx wildcard.ixx wildcard.hxx wildcard-custom.hxx
-
-wildcard.cxx wildcard.hxx wildcard.ixx: wildcard.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver wildcard.xml
- ./driver wildcard.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f wildcard-custom.o wildcard.o wildcard.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc10.vcxproj b/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc10.vcxproj
deleted file mode 100644
index 7076dd6..0000000
--- a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc10.vcxproj
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>wildcard</ProjectName>
- <ProjectGuid>{6CE6CDEC-F8DE-42D0-80F8-E71C0DD8F897}</ProjectGuid>
- <RootNamespace>wildcard</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="wildcard-custom.cxx" />
- <ClCompile Include="wildcard.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="wildcard-custom.hxx" />
- <ClInclude Include="wildcard.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="wildcard.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="wildcard.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc10.vcxproj.filters
deleted file mode 100644
index b67a77a..0000000
--- a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc10.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{426B0A1E-659E-40E5-B93B-EF76EBBE0C0A}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{42AF0399-9A66-43B2-94AA-DBF9BEEF1E92}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{0e336f4b-1f4c-4838-9a6a-183c80df8b67}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{228a47a0-93d7-4c99-9486-a589705ee401}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="wildcard-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="wildcard.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="wildcard-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="wildcard.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="wildcard.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="wildcard.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc11.vcxproj b/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc11.vcxproj
deleted file mode 100644
index da17a00..0000000
--- a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc11.vcxproj
+++ /dev/null
@@ -1,212 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>wildcard</ProjectName>
- <ProjectGuid>{6CE6CDEC-F8DE-42D0-80F8-E71C0DD8F897}</ProjectGuid>
- <RootNamespace>wildcard</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="wildcard-custom.cxx" />
- <ClCompile Include="wildcard.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="wildcard-custom.hxx" />
- <ClInclude Include="wildcard.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="wildcard.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="wildcard.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc11.vcxproj.filters
deleted file mode 100644
index b67a77a..0000000
--- a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc11.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{426B0A1E-659E-40E5-B93B-EF76EBBE0C0A}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{42AF0399-9A66-43B2-94AA-DBF9BEEF1E92}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{0e336f4b-1f4c-4838-9a6a-183c80df8b67}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{228a47a0-93d7-4c99-9486-a589705ee401}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="wildcard-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="wildcard.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="wildcard-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="wildcard.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="wildcard.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="wildcard.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc12.vcxproj b/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc12.vcxproj
deleted file mode 100644
index a6ff440..0000000
--- a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc12.vcxproj
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>wildcard</ProjectName>
- <ProjectGuid>{6CE6CDEC-F8DE-42D0-80F8-E71C0DD8F897}</ProjectGuid>
- <RootNamespace>wildcard</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="wildcard-custom.cxx" />
- <ClCompile Include="wildcard.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="wildcard-custom.hxx" />
- <ClInclude Include="wildcard.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="wildcard.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="wildcard.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd wildcard.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue "#include \"wildcard-custom.hxx\"" wildcard.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">wildcard.hxx;wildcard.ixx;wildcard.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc12.vcxproj.filters
deleted file mode 100644
index b67a77a..0000000
--- a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc12.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{426B0A1E-659E-40E5-B93B-EF76EBBE0C0A}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{42AF0399-9A66-43B2-94AA-DBF9BEEF1E92}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{0e336f4b-1f4c-4838-9a6a-183c80df8b67}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{228a47a0-93d7-4c99-9486-a589705ee401}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="wildcard-custom.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="wildcard.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="wildcard-custom.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="wildcard.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="wildcard.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="wildcard.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc8.vcproj b/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc8.vcproj
deleted file mode 100644
index 917fddd..0000000
--- a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc8.vcproj
+++ /dev/null
@@ -1,440 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="wildcard"
- ProjectGUID="{6CE6CDEC-F8DE-42D0-80F8-E71C0DD8F897}"
- RootNamespace="wildcard"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{426B0A1E-659E-40E5-B93B-EF76EBBE0C0A}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\wildcard-custom.cxx"
- >
- </File>
- <File
- RelativePath=".\wildcard.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{42AF0399-9A66-43B2-94AA-DBF9BEEF1E92}"
- >
- <File
- RelativePath=".\wildcard-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\wildcard.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\wildcard.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\wildcard.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd wildcard.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --generate-intellisense --custom-type data=/data_base --hxx-epilogue &quot;#include \&quot;wildcard-custom.hxx\&quot;&quot; wildcard.xsd"
- Outputs="wildcard.hxx;wildcard.ixx;wildcard.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd wildcard.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --generate-intellisense --custom-type data=/data_base --hxx-epilogue &quot;#include \&quot;wildcard-custom.hxx\&quot;&quot; wildcard.xsd"
- Outputs="wildcard.hxx;wildcard.ixx;wildcard.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd wildcard.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --generate-intellisense --custom-type data=/data_base --hxx-epilogue &quot;#include \&quot;wildcard-custom.hxx\&quot;&quot; wildcard.xsd"
- Outputs="wildcard.hxx;wildcard.ixx;wildcard.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd wildcard.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --generate-intellisense --custom-type data=/data_base --hxx-epilogue &quot;#include \&quot;wildcard-custom.hxx\&quot;&quot; wildcard.xsd"
- Outputs="wildcard.hxx;wildcard.ixx;wildcard.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc9.vcproj b/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc9.vcproj
deleted file mode 100644
index 16cab0c..0000000
--- a/xsd/dist/examples/cxx/tree/custom/wildcard/wildcard-vc9.vcproj
+++ /dev/null
@@ -1,437 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="wildcard"
- ProjectGUID="{6CE6CDEC-F8DE-42D0-80F8-E71C0DD8F897}"
- RootNamespace="wildcard"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{426B0A1E-659E-40E5-B93B-EF76EBBE0C0A}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\wildcard-custom.cxx"
- >
- </File>
- <File
- RelativePath=".\wildcard.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{42AF0399-9A66-43B2-94AA-DBF9BEEF1E92}"
- >
- <File
- RelativePath=".\wildcard-custom.hxx"
- >
- </File>
- <File
- RelativePath=".\wildcard.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\wildcard.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\wildcard.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd wildcard.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue &quot;#include \&quot;wildcard-custom.hxx\&quot;&quot; wildcard.xsd"
- Outputs="wildcard.hxx;wildcard.ixx;wildcard.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd wildcard.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue &quot;#include \&quot;wildcard-custom.hxx\&quot;&quot; wildcard.xsd"
- Outputs="wildcard.hxx;wildcard.ixx;wildcard.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd wildcard.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue &quot;#include \&quot;wildcard-custom.hxx\&quot;&quot; wildcard.xsd"
- Outputs="wildcard.hxx;wildcard.ixx;wildcard.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd wildcard.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --custom-type data=/data_base --hxx-epilogue &quot;#include \&quot;wildcard-custom.hxx\&quot;&quot; wildcard.xsd"
- Outputs="wildcard.hxx;wildcard.ixx;wildcard.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc10.sln b/xsd/dist/examples/cxx/tree/embedded/embedded-vc10.sln
deleted file mode 100644
index 0204487..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc10.sln
+++ /dev/null
@@ -1,38 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xsdbin", "xsdbin-vc10.vcxproj", "{A3F6E060-D536-4A43-AF4B-89063F65DE91}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded", "embedded-vc10.vcxproj", "{9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
-
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|Win32.ActiveCfg = Debug|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|Win32.Build.0 = Debug|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|x64.ActiveCfg = Debug|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|x64.Build.0 = Debug|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|Win32.ActiveCfg = Release|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|Win32.Build.0 = Release|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|x64.ActiveCfg = Release|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|x64.Build.0 = Release|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|Win32.ActiveCfg = Debug|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|Win32.Build.0 = Debug|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|x64.ActiveCfg = Debug|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|x64.Build.0 = Debug|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|Win32.ActiveCfg = Release|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|Win32.Build.0 = Release|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|x64.ActiveCfg = Release|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|x64.Build.0 = Release|x64
-
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc10.vcxproj b/xsd/dist/examples/cxx/tree/embedded/embedded-vc10.vcxproj
deleted file mode 100644
index 859b20b..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc10.vcxproj
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>embedded</ProjectName>
- <ProjectGuid>{9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}</ProjectGuid>
- <RootNamespace>embedded</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- <ClCompile Include="library-schema.cxx" />
- <ClCompile Include="grammar-input-stream.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- <ClInclude Include="library-schema.hxx" />
- <ClInclude Include="grammar-input-stream.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="xsdbin-vc10.vcxproj">
- <Project>{a3f6e060-d536-4a43-af4b-89063f65de91}</Project>
- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/embedded/embedded-vc10.vcxproj.filters
deleted file mode 100644
index 42beedc..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc10.vcxproj.filters
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{1D046D9C-4D20-4084-A1F4-90488E0B0669}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{E2D458FA-56FA-4268-998B-BF3934169712}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{a57574af-3c36-408f-9f8e-5140fe6abbf6}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-schema.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="grammar-input-stream.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="grammar-input-stream.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc11.sln b/xsd/dist/examples/cxx/tree/embedded/embedded-vc11.sln
deleted file mode 100644
index dc8273d..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc11.sln
+++ /dev/null
@@ -1,38 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xsdbin", "xsdbin-vc11.vcxproj", "{A3F6E060-D536-4A43-AF4B-89063F65DE91}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded", "embedded-vc11.vcxproj", "{9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
-
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|Win32.ActiveCfg = Debug|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|Win32.Build.0 = Debug|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|x64.ActiveCfg = Debug|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|x64.Build.0 = Debug|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|Win32.ActiveCfg = Release|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|Win32.Build.0 = Release|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|x64.ActiveCfg = Release|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|x64.Build.0 = Release|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|Win32.ActiveCfg = Debug|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|Win32.Build.0 = Debug|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|x64.ActiveCfg = Debug|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|x64.Build.0 = Debug|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|Win32.ActiveCfg = Release|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|Win32.Build.0 = Release|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|x64.ActiveCfg = Release|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|x64.Build.0 = Release|x64
-
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc11.vcxproj b/xsd/dist/examples/cxx/tree/embedded/embedded-vc11.vcxproj
deleted file mode 100644
index 4fcc53a..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc11.vcxproj
+++ /dev/null
@@ -1,219 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>embedded</ProjectName>
- <ProjectGuid>{9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}</ProjectGuid>
- <RootNamespace>embedded</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- <ClCompile Include="library-schema.cxx" />
- <ClCompile Include="grammar-input-stream.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- <ClInclude Include="library-schema.hxx" />
- <ClInclude Include="grammar-input-stream.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="xsdbin-vc11.vcxproj">
- <Project>{a3f6e060-d536-4a43-af4b-89063f65de91}</Project>
- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/embedded/embedded-vc11.vcxproj.filters
deleted file mode 100644
index 42beedc..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc11.vcxproj.filters
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{1D046D9C-4D20-4084-A1F4-90488E0B0669}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{E2D458FA-56FA-4268-998B-BF3934169712}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{a57574af-3c36-408f-9f8e-5140fe6abbf6}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-schema.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="grammar-input-stream.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="grammar-input-stream.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc12.sln b/xsd/dist/examples/cxx/tree/embedded/embedded-vc12.sln
deleted file mode 100644
index 1a70889..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc12.sln
+++ /dev/null
@@ -1,40 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.21005.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xsdbin", "xsdbin-vc12.vcxproj", "{A3F6E060-D536-4A43-AF4B-89063F65DE91}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded", "embedded-vc12.vcxproj", "{9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
-
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|Win32.ActiveCfg = Debug|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|Win32.Build.0 = Debug|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|x64.ActiveCfg = Debug|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|x64.Build.0 = Debug|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|Win32.ActiveCfg = Release|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|Win32.Build.0 = Release|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|x64.ActiveCfg = Release|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|x64.Build.0 = Release|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|Win32.ActiveCfg = Debug|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|Win32.Build.0 = Debug|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|x64.ActiveCfg = Debug|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|x64.Build.0 = Debug|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|Win32.ActiveCfg = Release|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|Win32.Build.0 = Release|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|x64.ActiveCfg = Release|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|x64.Build.0 = Release|x64
-
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc12.vcxproj b/xsd/dist/examples/cxx/tree/embedded/embedded-vc12.vcxproj
deleted file mode 100644
index bc2682f..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc12.vcxproj
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>embedded</ProjectName>
- <ProjectGuid>{9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}</ProjectGuid>
- <RootNamespace>embedded</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- <ClCompile Include="library-schema.cxx" />
- <ClCompile Include="grammar-input-stream.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- <ClInclude Include="library-schema.hxx" />
- <ClInclude Include="grammar-input-stream.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.cxx;library-schema.hxx;library-schema.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="xsdbin-vc12.vcxproj">
- <Project>{a3f6e060-d536-4a43-af4b-89063f65de91}</Project>
- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/embedded/embedded-vc12.vcxproj.filters
deleted file mode 100644
index 42beedc..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc12.vcxproj.filters
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{1D046D9C-4D20-4084-A1F4-90488E0B0669}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{E2D458FA-56FA-4268-998B-BF3934169712}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{a57574af-3c36-408f-9f8e-5140fe6abbf6}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library-schema.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="grammar-input-stream.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="library-schema.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="grammar-input-stream.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc8.sln b/xsd/dist/examples/cxx/tree/embedded/embedded-vc8.sln
deleted file mode 100644
index 29a7c60..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc8.sln
+++ /dev/null
@@ -1,41 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xsdbin", "xsdbin-vc8.vcproj", "{A3F6E060-D536-4A43-AF4B-89063F65DE91}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded", "embedded-vc8.vcproj", "{9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}"
- ProjectSection(ProjectDependencies) = postProject
- {A3F6E060-D536-4A43-AF4B-89063F65DE91} = {A3F6E060-D536-4A43-AF4B-89063F65DE91}
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- Debug|x64 = Debug|x64
- Release|x64 = Release|x64
-
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|Win32.ActiveCfg = Debug|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|Win32.Build.0 = Debug|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|Win32.ActiveCfg = Release|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|Win32.Build.0 = Release|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|x64.ActiveCfg = Debug|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|x64.Build.0 = Debug|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|x64.ActiveCfg = Release|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|x64.Build.0 = Release|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|Win32.ActiveCfg = Debug|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|Win32.Build.0 = Debug|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|Win32.ActiveCfg = Release|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|Win32.Build.0 = Release|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|x64.ActiveCfg = Debug|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|x64.Build.0 = Debug|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|x64.ActiveCfg = Release|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|x64.Build.0 = Release|x64
-
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc8.vcproj b/xsd/dist/examples/cxx/tree/embedded/embedded-vc8.vcproj
deleted file mode 100644
index d0df22c..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc8.vcproj
+++ /dev/null
@@ -1,439 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="embedded"
- ProjectGUID="{9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}"
- RootNamespace="embedded"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{1D046D9C-4D20-4084-A1F4-90488E0B0669}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- <File
- RelativePath=".\library-schema.cxx"
- >
- </File>
- <File
- RelativePath=".\grammar-input-stream.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{E2D458FA-56FA-4268-998B-BF3934169712}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- <File
- RelativePath=".\library-schema.hxx"
- >
- </File>
- <File
- RelativePath=".\grammar-input-stream.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense library.xsd &amp;&amp; xsdbin.exe library.xsd"
- Outputs="library.hxx;library.cxx;library-schema.hxx;library-schema.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense library.xsd &amp;&amp; xsdbin.exe library.xsd"
- Outputs="library.hxx;library.cxx;library-schema.hxx;library-schema.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense library.xsd &amp;&amp; xsdbin.exe library.xsd"
- Outputs="library.hxx;library.cxx;library-schema.hxx;library-schema.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense library.xsd &amp;&amp; xsdbin.exe library.xsd"
- Outputs="library.hxx;library.cxx;library-schema.hxx;library-schema.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc9.sln b/xsd/dist/examples/cxx/tree/embedded/embedded-vc9.sln
deleted file mode 100644
index 96f10ed..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc9.sln
+++ /dev/null
@@ -1,41 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xsdbin", "xsdbin-vc9.vcproj", "{A3F6E060-D536-4A43-AF4B-89063F65DE91}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded", "embedded-vc9.vcproj", "{9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}"
- ProjectSection(ProjectDependencies) = postProject
- {A3F6E060-D536-4A43-AF4B-89063F65DE91} = {A3F6E060-D536-4A43-AF4B-89063F65DE91}
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
-
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|Win32.ActiveCfg = Debug|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|Win32.Build.0 = Debug|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|x64.ActiveCfg = Debug|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Debug|x64.Build.0 = Debug|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|Win32.ActiveCfg = Release|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|Win32.Build.0 = Release|Win32
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|x64.ActiveCfg = Release|x64
- {A3F6E060-D536-4A43-AF4B-89063F65DE91}.Release|x64.Build.0 = Release|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|Win32.ActiveCfg = Debug|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|Win32.Build.0 = Debug|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|x64.ActiveCfg = Debug|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Debug|x64.Build.0 = Debug|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|Win32.ActiveCfg = Release|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|Win32.Build.0 = Release|Win32
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|x64.ActiveCfg = Release|x64
- {9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}.Release|x64.Build.0 = Release|x64
-
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/xsd/dist/examples/cxx/tree/embedded/embedded-vc9.vcproj b/xsd/dist/examples/cxx/tree/embedded/embedded-vc9.vcproj
deleted file mode 100644
index bf5498c..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/embedded-vc9.vcproj
+++ /dev/null
@@ -1,436 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="embedded"
- ProjectGUID="{9C8C2AA4-DF31-4884-B3B9-A6A36F3CB429}"
- RootNamespace="embedded"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{1D046D9C-4D20-4084-A1F4-90488E0B0669}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- <File
- RelativePath=".\library-schema.cxx"
- >
- </File>
- <File
- RelativePath=".\grammar-input-stream.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{E2D458FA-56FA-4268-998B-BF3934169712}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- <File
- RelativePath=".\library-schema.hxx"
- >
- </File>
- <File
- RelativePath=".\grammar-input-stream.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd"
- Outputs="library.hxx;library.cxx;library-schema.hxx;library-schema.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd"
- Outputs="library.hxx;library.cxx;library-schema.hxx;library-schema.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd"
- Outputs="library.hxx;library.cxx;library-schema.hxx;library-schema.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree library.xsd &amp;&amp; xsdbin.exe library.xsd"
- Outputs="library.hxx;library.cxx;library-schema.hxx;library-schema.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/embedded/makefile b/xsd/dist/examples/cxx/tree/embedded/makefile
deleted file mode 100644
index 0879da9..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-# Build.
-#
-driver: driver.o library.o library-schema.o grammar-input-stream.o
-xsdbin: xsdbin.o
-
-library.o: library.cxx library.hxx
-driver.o: driver.cxx library.hxx library-schema.hxx
-library-schema.o: library-schema.cxx library-schema.hxx
-grammar-input-stream.o: grammar-input-stream.cxx grammar-input-stream.hxx
-
-library.cxx library.hxx: library.xsd
-library-schema.cxx library-schema.hxx: library.xsd
-
-.PRECIOUS: %-schema.cxx %-schema.hxx
-%-schema.cxx %-schema.hxx: %.xsd xsdbin
- ./xsdbin $<
-
-# Test
-#
-.PHONY: test
-test: driver library.xml
- ./driver library.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f library.o library.?xx library-schema.?xx driver.o \
-library-schema.o grammar-input-stream.o xsdbin.o xsdbin driver
diff --git a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc10.vcxproj b/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc10.vcxproj
deleted file mode 100644
index a57a876..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc10.vcxproj
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>xsdbin</ProjectName>
- <ProjectGuid>{A3F6E060-D536-4A43-AF4B-89063F65DE91}</ProjectGuid>
- <RootNamespace>xsdbin</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsdbin</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsdbin</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsdbin</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsdbin</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)xsdbin.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)xsdbin.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="xsdbin.cxx" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc10.vcxproj.filters
deleted file mode 100644
index 27abb01..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc10.vcxproj.filters
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{D9727125-E5B7-4777-8EB3-6EE957552516}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="xsdbin.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc11.vcxproj b/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc11.vcxproj
deleted file mode 100644
index 1cfce63..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc11.vcxproj
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>xsdbin</ProjectName>
- <ProjectGuid>{A3F6E060-D536-4A43-AF4B-89063F65DE91}</ProjectGuid>
- <RootNamespace>xsdbin</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsdbin</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsdbin</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsdbin</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsdbin</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)xsdbin.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)xsdbin.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="xsdbin.cxx" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc11.vcxproj.filters
deleted file mode 100644
index 27abb01..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc11.vcxproj.filters
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{D9727125-E5B7-4777-8EB3-6EE957552516}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="xsdbin.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc12.vcxproj b/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc12.vcxproj
deleted file mode 100644
index eb66e81..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc12.vcxproj
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>xsdbin</ProjectName>
- <ProjectGuid>{A3F6E060-D536-4A43-AF4B-89063F65DE91}</ProjectGuid>
- <RootNamespace>xsdbin</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsdbin</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsdbin</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsdbin</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsdbin</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\xsdbin\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)xsdbin.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)xsdbin.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="xsdbin.cxx" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc12.vcxproj.filters
deleted file mode 100644
index 27abb01..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc12.vcxproj.filters
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{D9727125-E5B7-4777-8EB3-6EE957552516}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="xsdbin.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc8.vcproj b/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc8.vcproj
deleted file mode 100644
index 095024f..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc8.vcproj
+++ /dev/null
@@ -1,356 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="xsdbin"
- ProjectGUID="{A3F6E060-D536-4A43-AF4B-89063F65DE91}"
- RootNamespace="xsdbin"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug\xsdbin"
- IntermediateDirectory="Debug\xsdbin"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="xsdbin.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/xsdbin.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release\xsdbin"
- IntermediateDirectory="Release\xsdbin"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="xsdbin.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)\xsdbin"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)\xsdbin"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="xsdbin.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/xsdbin.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)\xsdbin"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)\xsdbin"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="xsdbin.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{D9727125-E5B7-4777-8EB3-6EE957552516}"
- >
- <File
- RelativePath=".\xsdbin.cxx"
- >
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc9.vcproj b/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc9.vcproj
deleted file mode 100644
index 1cb2ead..0000000
--- a/xsd/dist/examples/cxx/tree/embedded/xsdbin-vc9.vcproj
+++ /dev/null
@@ -1,353 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="xsdbin"
- ProjectGUID="{A3F6E060-D536-4A43-AF4B-89063F65DE91}"
- RootNamespace="xsdbin"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug\xsdbin"
- IntermediateDirectory="Debug\xsdbin"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="xsdbin.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/xsdbin.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)\xsdbin"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)\xsdbin"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="xsdbin.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/xsdbin.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release\xsdbin"
- IntermediateDirectory="Release\xsdbin"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="xsdbin.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)\xsdbin"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)\xsdbin"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="xsdbin.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{D9727125-E5B7-4777-8EB3-6EE957552516}"
- >
- <File
- RelativePath=".\xsdbin.cxx"
- >
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/hello/hello-vc10.vcxproj b/xsd/dist/examples/cxx/tree/hello/hello-vc10.vcxproj
deleted file mode 100644
index a9e0544..0000000
--- a/xsd/dist/examples/cxx/tree/hello/hello-vc10.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>hello</ProjectName>
- <ProjectGuid>{538CCAB6-984B-4602-B0D0-985E8FD4FEB9}</ProjectGuid>
- <RootNamespace>hello</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="hello.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/hello/hello-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/hello/hello-vc10.vcxproj.filters
deleted file mode 100644
index 732378a..0000000
--- a/xsd/dist/examples/cxx/tree/hello/hello-vc10.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{D512D9C4-9DDD-4830-A487-1D87DB0643D5}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="hello.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/hello/hello-vc11.vcxproj b/xsd/dist/examples/cxx/tree/hello/hello-vc11.vcxproj
deleted file mode 100644
index c3f4c4f..0000000
--- a/xsd/dist/examples/cxx/tree/hello/hello-vc11.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>hello</ProjectName>
- <ProjectGuid>{538CCAB6-984B-4602-B0D0-985E8FD4FEB9}</ProjectGuid>
- <RootNamespace>hello</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="hello.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/hello/hello-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/hello/hello-vc11.vcxproj.filters
deleted file mode 100644
index 732378a..0000000
--- a/xsd/dist/examples/cxx/tree/hello/hello-vc11.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{D512D9C4-9DDD-4830-A487-1D87DB0643D5}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="hello.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/hello/hello-vc12.vcxproj b/xsd/dist/examples/cxx/tree/hello/hello-vc12.vcxproj
deleted file mode 100644
index 031c47e..0000000
--- a/xsd/dist/examples/cxx/tree/hello/hello-vc12.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>hello</ProjectName>
- <ProjectGuid>{538CCAB6-984B-4602-B0D0-985E8FD4FEB9}</ProjectGuid>
- <RootNamespace>hello</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="hello.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd hello.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree hello.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">hello.cxx;hello.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/hello/hello-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/hello/hello-vc12.vcxproj.filters
deleted file mode 100644
index 732378a..0000000
--- a/xsd/dist/examples/cxx/tree/hello/hello-vc12.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{D512D9C4-9DDD-4830-A487-1D87DB0643D5}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="hello.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="hello.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="hello.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/hello/hello-vc8.vcproj b/xsd/dist/examples/cxx/tree/hello/hello-vc8.vcproj
deleted file mode 100644
index c961754..0000000
--- a/xsd/dist/examples/cxx/tree/hello/hello-vc8.vcproj
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="hello"
- ProjectGUID="{538CCAB6-984B-4602-B0D0-985E8FD4FEB9}"
- RootNamespace="hello"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\hello.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath=".\hello.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\hello.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense hello.xsd"
- Outputs="hello.cxx;hello.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense hello.xsd"
- Outputs="hello.cxx;hello.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense hello.xsd"
- Outputs="hello.cxx;hello.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense hello.xsd"
- Outputs="hello.cxx;hello.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/hello/hello-vc9.vcproj b/xsd/dist/examples/cxx/tree/hello/hello-vc9.vcproj
deleted file mode 100644
index 20eed13..0000000
--- a/xsd/dist/examples/cxx/tree/hello/hello-vc9.vcproj
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="hello"
- ProjectGUID="{538CCAB6-984B-4602-B0D0-985E8FD4FEB9}"
- RootNamespace="hello"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\hello.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath=".\hello.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\hello.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd.exe cxx-tree hello.xsd"
- Outputs="hello.cxx;hello.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd.exe cxx-tree hello.xsd"
- Outputs="hello.cxx;hello.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd.exe cxx-tree hello.xsd"
- Outputs="hello.cxx;hello.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd hello.xsd"
- CommandLine="xsd.exe cxx-tree hello.xsd"
- Outputs="hello.cxx;hello.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/hello/makefile b/xsd/dist/examples/cxx/tree/hello/makefile
deleted file mode 100644
index 7886049..0000000
--- a/xsd/dist/examples/cxx/tree/hello/makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-# Build.
-#
-driver: driver.o hello.o
-
-hello.o: hello.cxx hello.hxx
-driver.o: driver.cxx hello.hxx
-
-hello.cxx hello.hxx: hello.xsd
-
-
-# Test.
-#
-.PHONY: test
-test: driver hello.xml
- ./driver hello.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f hello.o hello.?xx driver.o driver
-
diff --git a/xsd/dist/examples/cxx/tree/library/library-vc10.vcxproj b/xsd/dist/examples/cxx/tree/library/library-vc10.vcxproj
deleted file mode 100644
index 0d82e98..0000000
--- a/xsd/dist/examples/cxx/tree/library/library-vc10.vcxproj
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>library</ProjectName>
- <ProjectGuid>{D661AD5B-5FF4-4AFD-A656-429BA348E9EF}</ProjectGuid>
- <RootNamespace>library</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="library.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/library/library-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/library/library-vc10.vcxproj.filters
deleted file mode 100644
index e5e21e6..0000000
--- a/xsd/dist/examples/cxx/tree/library/library-vc10.vcxproj.filters
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E7CF4BC5-B0CB-4799-B64E-5AF3B67A6F0E}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{FDC2B8B2-1264-427A-9D4E-5577BF295A64}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{8b40f964-53f9-4b8c-a52b-3fbe8bcfe092}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{50e811c7-6a8b-428b-8c92-0fb6c830a337}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="library.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/library/library-vc11.vcxproj b/xsd/dist/examples/cxx/tree/library/library-vc11.vcxproj
deleted file mode 100644
index 498e9e9..0000000
--- a/xsd/dist/examples/cxx/tree/library/library-vc11.vcxproj
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>library</ProjectName>
- <ProjectGuid>{D661AD5B-5FF4-4AFD-A656-429BA348E9EF}</ProjectGuid>
- <RootNamespace>library</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="library.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/library/library-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/library/library-vc11.vcxproj.filters
deleted file mode 100644
index e5e21e6..0000000
--- a/xsd/dist/examples/cxx/tree/library/library-vc11.vcxproj.filters
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E7CF4BC5-B0CB-4799-B64E-5AF3B67A6F0E}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{FDC2B8B2-1264-427A-9D4E-5577BF295A64}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{8b40f964-53f9-4b8c-a52b-3fbe8bcfe092}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{50e811c7-6a8b-428b-8c92-0fb6c830a337}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="library.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/library/library-vc12.vcxproj b/xsd/dist/examples/cxx/tree/library/library-vc12.vcxproj
deleted file mode 100644
index 80fd4ae..0000000
--- a/xsd/dist/examples/cxx/tree/library/library-vc12.vcxproj
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>library</ProjectName>
- <ProjectGuid>{D661AD5B-5FF4-4AFD-A656-429BA348E9EF}</ProjectGuid>
- <RootNamespace>library</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="library.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="library.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd library.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">library.hxx;library.ixx;library.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/library/library-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/library/library-vc12.vcxproj.filters
deleted file mode 100644
index e5e21e6..0000000
--- a/xsd/dist/examples/cxx/tree/library/library-vc12.vcxproj.filters
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{E7CF4BC5-B0CB-4799-B64E-5AF3B67A6F0E}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{FDC2B8B2-1264-427A-9D4E-5577BF295A64}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{8b40f964-53f9-4b8c-a52b-3fbe8bcfe092}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{50e811c7-6a8b-428b-8c92-0fb6c830a337}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="library.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="library.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="library.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="library.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/library/library-vc8.vcproj b/xsd/dist/examples/cxx/tree/library/library-vc8.vcproj
deleted file mode 100644
index 79e3f7e..0000000
--- a/xsd/dist/examples/cxx/tree/library/library-vc8.vcproj
+++ /dev/null
@@ -1,432 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="library"
- ProjectGUID="{D661AD5B-5FF4-4AFD-A656-429BA348E9EF}"
- RootNamespace="library"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{E7CF4BC5-B0CB-4799-B64E-5AF3B67A6F0E}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{FDC2B8B2-1264-427A-9D4E-5577BF295A64}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\library.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --generate-intellisense library.xsd"
- Outputs="library.hxx;library.ixx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --generate-intellisense library.xsd"
- Outputs="library.hxx;library.ixx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --generate-intellisense library.xsd"
- Outputs="library.hxx;library.ixx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization --generate-intellisense library.xsd"
- Outputs="library.hxx;library.ixx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/library/library-vc9.vcproj b/xsd/dist/examples/cxx/tree/library/library-vc9.vcproj
deleted file mode 100644
index d616bff..0000000
--- a/xsd/dist/examples/cxx/tree/library/library-vc9.vcproj
+++ /dev/null
@@ -1,429 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="library"
- ProjectGUID="{D661AD5B-5FF4-4AFD-A656-429BA348E9EF}"
- RootNamespace="library"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{E7CF4BC5-B0CB-4799-B64E-5AF3B67A6F0E}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\library.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{FDC2B8B2-1264-427A-9D4E-5577BF295A64}"
- >
- <File
- RelativePath=".\library.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\library.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\library.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd"
- Outputs="library.hxx;library.ixx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd"
- Outputs="library.hxx;library.ixx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd"
- Outputs="library.hxx;library.ixx;library.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd library.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-ostream --generate-serialization library.xsd"
- Outputs="library.hxx;library.ixx;library.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/library/makefile b/xsd/dist/examples/cxx/tree/library/makefile
deleted file mode 100644
index 2f9bb6a..0000000
--- a/xsd/dist/examples/cxx/tree/library/makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-inline --generate-ostream --generate-serialization
-
-
-# Build.
-#
-driver: driver.o library.o
-
-library.o: library.cxx library.hxx library.ixx
-driver.o: driver.cxx library.hxx library.ixx
-
-library.cxx library.hxx library.ixx: library.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver library.xml
- ./driver library.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f library.o library.?xx driver.o driver
-
diff --git a/xsd/dist/examples/cxx/tree/makefile b/xsd/dist/examples/cxx/tree/makefile
deleted file mode 100644
index 44e7a0f..0000000
--- a/xsd/dist/examples/cxx/tree/makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-dirs := binary caching embedded custom hello library messaging mixed \
-multiroot order performance polymorphism streaming wildcard
-
-ifeq ($(WITH_ZLIB),1)
-dirs += compression
-endif
-
-ifeq ($(WITH_XQILLA),1)
-dirs += xpath
-endif
-
-.PHONY: all $(dirs)
-
-all: $(dirs)
-
-$(dirs):
- @$(MAKE) -C $@ $(MAKECMDGOALS)
-
-makefile: ;
-% :: $(dirs) ;
diff --git a/xsd/dist/examples/cxx/tree/messaging/makefile b/xsd/dist/examples/cxx/tree/messaging/makefile
deleted file mode 100644
index 0557a7c..0000000
--- a/xsd/dist/examples/cxx/tree/messaging/makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-override XSDFLAGS += --root-element-all --generate-element-type \
---generate-element-map --generate-serialization
-
-
-# Build.
-#
-driver: driver.o dom-parse.o dom-serialize.o protocol.o
-
-protocol.o: protocol.cxx protocol.hxx
-dom-parse.o: dom-parse.cxx dom-parse.hxx
-dom-serialize.o: dom-serialize.cxx dom-serialize.hxx
-driver.o: driver.cxx dom-parse.hxx dom-serialize.hxx protocol.hxx
-
-protocol.cxx protocol.hxx: protocol.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver balance.xml withdraw.xml deposit.xml
- ./driver balance.xml
- ./driver withdraw.xml
- ./driver deposit.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f protocol.o protocol.?xx dom-parse.o dom-serialize.o driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/messaging/messaging-vc10.vcxproj b/xsd/dist/examples/cxx/tree/messaging/messaging-vc10.vcxproj
deleted file mode 100644
index 6016f46..0000000
--- a/xsd/dist/examples/cxx/tree/messaging/messaging-vc10.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>messaging</ProjectName>
- <ProjectGuid>{F7696252-45B5-438B-B14F-0510137704F0}</ProjectGuid>
- <RootNamespace>messaging</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="dom-serialize.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="protocol.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="dom-serialize.hxx" />
- <ClInclude Include="protocol.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/messaging/messaging-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/messaging/messaging-vc10.vcxproj.filters
deleted file mode 100644
index c94955d..0000000
--- a/xsd/dist/examples/cxx/tree/messaging/messaging-vc10.vcxproj.filters
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{0BA0A3D7-40AF-4307-8033-5BE39B33ABE5}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{F7AC5A29-8CF7-4882-89B6-1B5B81AA00F2}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{945e9234-36d7-4bbb-a5f2-97af87338c49}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dom-serialize.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="dom-serialize.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/messaging/messaging-vc11.vcxproj b/xsd/dist/examples/cxx/tree/messaging/messaging-vc11.vcxproj
deleted file mode 100644
index d3403c2..0000000
--- a/xsd/dist/examples/cxx/tree/messaging/messaging-vc11.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>messaging</ProjectName>
- <ProjectGuid>{F7696252-45B5-438B-B14F-0510137704F0}</ProjectGuid>
- <RootNamespace>messaging</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="dom-serialize.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="protocol.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="dom-serialize.hxx" />
- <ClInclude Include="protocol.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/messaging/messaging-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/messaging/messaging-vc11.vcxproj.filters
deleted file mode 100644
index c94955d..0000000
--- a/xsd/dist/examples/cxx/tree/messaging/messaging-vc11.vcxproj.filters
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{0BA0A3D7-40AF-4307-8033-5BE39B33ABE5}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{F7AC5A29-8CF7-4882-89B6-1B5B81AA00F2}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{945e9234-36d7-4bbb-a5f2-97af87338c49}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dom-serialize.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="dom-serialize.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/messaging/messaging-vc12.vcxproj b/xsd/dist/examples/cxx/tree/messaging/messaging-vc12.vcxproj
deleted file mode 100644
index 35b8763..0000000
--- a/xsd/dist/examples/cxx/tree/messaging/messaging-vc12.vcxproj
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>messaging</ProjectName>
- <ProjectGuid>{F7696252-45B5-438B-B14F-0510137704F0}</ProjectGuid>
- <RootNamespace>messaging</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="dom-serialize.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="protocol.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="dom-serialize.hxx" />
- <ClInclude Include="protocol.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/messaging/messaging-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/messaging/messaging-vc12.vcxproj.filters
deleted file mode 100644
index c94955d..0000000
--- a/xsd/dist/examples/cxx/tree/messaging/messaging-vc12.vcxproj.filters
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{0BA0A3D7-40AF-4307-8033-5BE39B33ABE5}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{F7AC5A29-8CF7-4882-89B6-1B5B81AA00F2}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{945e9234-36d7-4bbb-a5f2-97af87338c49}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dom-serialize.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="dom-serialize.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/messaging/messaging-vc8.vcproj b/xsd/dist/examples/cxx/tree/messaging/messaging-vc8.vcproj
deleted file mode 100644
index f006365..0000000
--- a/xsd/dist/examples/cxx/tree/messaging/messaging-vc8.vcproj
+++ /dev/null
@@ -1,439 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="messaging"
- ProjectGUID="{F7696252-45B5-438B-B14F-0510137704F0}"
- RootNamespace="messaging"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{0BA0A3D7-40AF-4307-8033-5BE39B33ABE5}"
- >
- <File
- RelativePath=".\dom-parse.cxx"
- >
- </File>
- <File
- RelativePath=".\dom-serialize.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\protocol.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{F7AC5A29-8CF7-4882-89B6-1B5B81AA00F2}"
- >
- <File
- RelativePath=".\dom-parse.hxx"
- >
- </File>
- <File
- RelativePath=".\dom-serialize.hxx"
- >
- </File>
- <File
- RelativePath=".\protocol.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\protocol.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization --generate-intellisense protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization --generate-intellisense protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization --generate-intellisense protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization --generate-intellisense protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/messaging/messaging-vc9.vcproj b/xsd/dist/examples/cxx/tree/messaging/messaging-vc9.vcproj
deleted file mode 100644
index debd0a3..0000000
--- a/xsd/dist/examples/cxx/tree/messaging/messaging-vc9.vcproj
+++ /dev/null
@@ -1,436 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="messaging"
- ProjectGUID="{F7696252-45B5-438B-B14F-0510137704F0}"
- RootNamespace="messaging"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{0BA0A3D7-40AF-4307-8033-5BE39B33ABE5}"
- >
- <File
- RelativePath=".\dom-parse.cxx"
- >
- </File>
- <File
- RelativePath=".\dom-serialize.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\protocol.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{F7AC5A29-8CF7-4882-89B6-1B5B81AA00F2}"
- >
- <File
- RelativePath=".\dom-parse.hxx"
- >
- </File>
- <File
- RelativePath=".\dom-serialize.hxx"
- >
- </File>
- <File
- RelativePath=".\protocol.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\protocol.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-element-type --generate-element-map --generate-serialization protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/mixed/makefile b/xsd/dist/examples/cxx/tree/mixed/makefile
deleted file mode 100644
index 594821c..0000000
--- a/xsd/dist/examples/cxx/tree/mixed/makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-# Build.
-#
-driver: driver.o text.o
-
-text.o: text.cxx text.hxx
-driver.o: driver.cxx text.hxx
-
-text.cxx text.hxx: text.xsd
-
-
-# Test.
-#
-.PHONY: test
-test: driver text.xml
- ./driver text.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f text.o text.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/mixed/mixed-vc10.vcxproj b/xsd/dist/examples/cxx/tree/mixed/mixed-vc10.vcxproj
deleted file mode 100644
index c625d2c..0000000
--- a/xsd/dist/examples/cxx/tree/mixed/mixed-vc10.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixed</ProjectName>
- <ProjectGuid>{6EF7868E-AA58-4615-9C1A-06B010CB4209}</ProjectGuid>
- <RootNamespace>mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="text.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/mixed/mixed-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/mixed/mixed-vc10.vcxproj.filters
deleted file mode 100644
index 992400e..0000000
--- a/xsd/dist/examples/cxx/tree/mixed/mixed-vc10.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{590B5830-837E-4D7F-984C-173456EE7E70}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{3B7C0CD8-48D5-4244-A1FB-B60D510C2359}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{ba06cc21-c20a-4656-89ab-0a7b56f50871}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="text.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/mixed/mixed-vc11.vcxproj b/xsd/dist/examples/cxx/tree/mixed/mixed-vc11.vcxproj
deleted file mode 100644
index 1380e1c..0000000
--- a/xsd/dist/examples/cxx/tree/mixed/mixed-vc11.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixed</ProjectName>
- <ProjectGuid>{6EF7868E-AA58-4615-9C1A-06B010CB4209}</ProjectGuid>
- <RootNamespace>mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="text.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/mixed/mixed-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/mixed/mixed-vc11.vcxproj.filters
deleted file mode 100644
index 992400e..0000000
--- a/xsd/dist/examples/cxx/tree/mixed/mixed-vc11.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{590B5830-837E-4D7F-984C-173456EE7E70}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{3B7C0CD8-48D5-4244-A1FB-B60D510C2359}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{ba06cc21-c20a-4656-89ab-0a7b56f50871}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="text.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/mixed/mixed-vc12.vcxproj b/xsd/dist/examples/cxx/tree/mixed/mixed-vc12.vcxproj
deleted file mode 100644
index 7726386..0000000
--- a/xsd/dist/examples/cxx/tree/mixed/mixed-vc12.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>mixed</ProjectName>
- <ProjectGuid>{6EF7868E-AA58-4615-9C1A-06B010CB4209}</ProjectGuid>
- <RootNamespace>mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="text.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/mixed/mixed-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/mixed/mixed-vc12.vcxproj.filters
deleted file mode 100644
index 992400e..0000000
--- a/xsd/dist/examples/cxx/tree/mixed/mixed-vc12.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{590B5830-837E-4D7F-984C-173456EE7E70}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{3B7C0CD8-48D5-4244-A1FB-B60D510C2359}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{ba06cc21-c20a-4656-89ab-0a7b56f50871}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="text.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/mixed/mixed-vc8.vcproj b/xsd/dist/examples/cxx/tree/mixed/mixed-vc8.vcproj
deleted file mode 100644
index d446891..0000000
--- a/xsd/dist/examples/cxx/tree/mixed/mixed-vc8.vcproj
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="mixed"
- ProjectGUID="{6EF7868E-AA58-4615-9C1A-06B010CB4209}"
- RootNamespace="mixed"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{590B5830-837E-4D7F-984C-173456EE7E70}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\text.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{3B7C0CD8-48D5-4244-A1FB-B60D510C2359}"
- >
- <File
- RelativePath=".\text.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\text.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/mixed/mixed-vc9.vcproj b/xsd/dist/examples/cxx/tree/mixed/mixed-vc9.vcproj
deleted file mode 100644
index 5c5843a..0000000
--- a/xsd/dist/examples/cxx/tree/mixed/mixed-vc9.vcproj
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="mixed"
- ProjectGUID="{6EF7868E-AA58-4615-9C1A-06B010CB4209}"
- RootNamespace="mixed"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{590B5830-837E-4D7F-984C-173456EE7E70}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\text.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{3B7C0CD8-48D5-4244-A1FB-B60D510C2359}"
- >
- <File
- RelativePath=".\text.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\text.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/multiroot/makefile b/xsd/dist/examples/cxx/tree/multiroot/makefile
deleted file mode 100644
index d94da7f..0000000
--- a/xsd/dist/examples/cxx/tree/multiroot/makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-override XSDFLAGS += --root-element-all
-
-
-# Build.
-#
-driver: driver.o dom-parse.o protocol.o
-
-protocol.o: protocol.cxx protocol.hxx
-dom-parse.o: dom-parse.cxx dom-parse.hxx
-driver.o: driver.cxx dom-parse.hxx protocol.hxx
-
-protocol.cxx protocol.hxx: protocol.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver balance.xml withdraw.xml deposit.xml
- ./driver balance.xml
- ./driver withdraw.xml
- ./driver deposit.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f protocol.o protocol.?xx dom-parse.o driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc10.vcxproj b/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc10.vcxproj
deleted file mode 100644
index 3a10c32..0000000
--- a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc10.vcxproj
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>multiroot</ProjectName>
- <ProjectGuid>{1CFBC9C5-5F9C-4B60-A2A3-0A79BCDD2670}</ProjectGuid>
- <RootNamespace>multiroot</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="protocol.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="protocol.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc10.vcxproj.filters
deleted file mode 100644
index 148c832..0000000
--- a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc10.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{761DEBB9-455C-4599-A11D-66D602C486C3}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{AAF07268-FD5E-485F-8EB8-1AFDDE8BFD57}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{770136e0-0d08-4ab1-b67b-eabbde953e47}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc11.vcxproj b/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc11.vcxproj
deleted file mode 100644
index 61c6a44..0000000
--- a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc11.vcxproj
+++ /dev/null
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>multiroot</ProjectName>
- <ProjectGuid>{1CFBC9C5-5F9C-4B60-A2A3-0A79BCDD2670}</ProjectGuid>
- <RootNamespace>multiroot</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="protocol.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="protocol.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc11.vcxproj.filters
deleted file mode 100644
index 148c832..0000000
--- a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc11.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{761DEBB9-455C-4599-A11D-66D602C486C3}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{AAF07268-FD5E-485F-8EB8-1AFDDE8BFD57}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{770136e0-0d08-4ab1-b67b-eabbde953e47}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc12.vcxproj b/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc12.vcxproj
deleted file mode 100644
index 1b0e268..0000000
--- a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc12.vcxproj
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>multiroot</ProjectName>
- <ProjectGuid>{1CFBC9C5-5F9C-4B60-A2A3-0A79BCDD2670}</ProjectGuid>
- <RootNamespace>multiroot</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="protocol.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="protocol.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd protocol.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --root-element-all protocol.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">protocol.hxx;protocol.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc12.vcxproj.filters
deleted file mode 100644
index 148c832..0000000
--- a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc12.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{761DEBB9-455C-4599-A11D-66D602C486C3}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{AAF07268-FD5E-485F-8EB8-1AFDDE8BFD57}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{770136e0-0d08-4ab1-b67b-eabbde953e47}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protocol.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="protocol.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="protocol.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc8.vcproj b/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc8.vcproj
deleted file mode 100644
index 54e196d..0000000
--- a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc8.vcproj
+++ /dev/null
@@ -1,431 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multiroot"
- ProjectGUID="{1CFBC9C5-5F9C-4B60-A2A3-0A79BCDD2670}"
- RootNamespace="multiroot"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{761DEBB9-455C-4599-A11D-66D602C486C3}"
- >
- <File
- RelativePath=".\dom-parse.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\protocol.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{AAF07268-FD5E-485F-8EB8-1AFDDE8BFD57}"
- >
- <File
- RelativePath=".\dom-parse.hxx"
- >
- </File>
- <File
- RelativePath=".\protocol.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\protocol.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-intellisense protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-intellisense protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-intellisense protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all --generate-intellisense protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc9.vcproj b/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc9.vcproj
deleted file mode 100644
index 95aa025..0000000
--- a/xsd/dist/examples/cxx/tree/multiroot/multiroot-vc9.vcproj
+++ /dev/null
@@ -1,428 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="multiroot"
- ProjectGUID="{1CFBC9C5-5F9C-4B60-A2A3-0A79BCDD2670}"
- RootNamespace="multiroot"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{761DEBB9-455C-4599-A11D-66D602C486C3}"
- >
- <File
- RelativePath=".\dom-parse.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\protocol.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{AAF07268-FD5E-485F-8EB8-1AFDDE8BFD57}"
- >
- <File
- RelativePath=".\dom-parse.hxx"
- >
- </File>
- <File
- RelativePath=".\protocol.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\protocol.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd protocol.xsd"
- CommandLine="xsd cxx-tree --root-element-all protocol.xsd"
- Outputs="protocol.hxx;protocol.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/order/element/makefile b/xsd/dist/examples/cxx/tree/order/element/makefile
deleted file mode 100644
index 31f5ec5..0000000
--- a/xsd/dist/examples/cxx/tree/order/element/makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-serialization --generate-wildcard --ordered-type batch
-
-
-# Build.
-#
-driver: driver.o transactions.o
-
-transactions.o: transactions.cxx transactions.hxx
-driver.o: driver.cxx transactions.hxx
-
-transactions.cxx transactions.hxx: transactions.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver transactions.xml
- ./driver transactions.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f transactions.o transactions.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/order/element/order-element-vc10.vcxproj b/xsd/dist/examples/cxx/tree/order/element/order-element-vc10.vcxproj
deleted file mode 100644
index 100f0e8..0000000
--- a/xsd/dist/examples/cxx/tree/order/element/order-element-vc10.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>order-element</ProjectName>
- <ProjectGuid>{9488E872-8E09-4B68-9715-AF68534164C4}</ProjectGuid>
- <RootNamespace>order-element</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="transactions.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="transactions.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="transactions.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/element/order-element-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/order/element/order-element-vc10.vcxproj.filters
deleted file mode 100644
index aefc2be..0000000
--- a/xsd/dist/examples/cxx/tree/order/element/order-element-vc10.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{FF0C69B7-2DFB-402A-9AEB-A13D354EB9D2}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{9761A910-7322-4EBD-AD00-4FCC4C4F6586}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{2264FACD-618F-417C-B291-7E2A1BD11536}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="transactions.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="transactions.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="transactions.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/element/order-element-vc11.vcxproj b/xsd/dist/examples/cxx/tree/order/element/order-element-vc11.vcxproj
deleted file mode 100644
index da8304c..0000000
--- a/xsd/dist/examples/cxx/tree/order/element/order-element-vc11.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>order-element</ProjectName>
- <ProjectGuid>{9488E872-8E09-4B68-9715-AF68534164C4}</ProjectGuid>
- <RootNamespace>order-element</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="transactions.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="transactions.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="transactions.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/element/order-element-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/order/element/order-element-vc11.vcxproj.filters
deleted file mode 100644
index aefc2be..0000000
--- a/xsd/dist/examples/cxx/tree/order/element/order-element-vc11.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{FF0C69B7-2DFB-402A-9AEB-A13D354EB9D2}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{9761A910-7322-4EBD-AD00-4FCC4C4F6586}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{2264FACD-618F-417C-B291-7E2A1BD11536}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="transactions.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="transactions.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="transactions.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/element/order-element-vc12.vcxproj b/xsd/dist/examples/cxx/tree/order/element/order-element-vc12.vcxproj
deleted file mode 100644
index 2364e27..0000000
--- a/xsd/dist/examples/cxx/tree/order/element/order-element-vc12.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>order-element</ProjectName>
- <ProjectGuid>{9488E872-8E09-4B68-9715-AF68534164C4}</ProjectGuid>
- <RootNamespace>order-element</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="transactions.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="transactions.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="transactions.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd transactions.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">transactions.cxx;transactions.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/element/order-element-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/order/element/order-element-vc12.vcxproj.filters
deleted file mode 100644
index aefc2be..0000000
--- a/xsd/dist/examples/cxx/tree/order/element/order-element-vc12.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{FF0C69B7-2DFB-402A-9AEB-A13D354EB9D2}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{9761A910-7322-4EBD-AD00-4FCC4C4F6586}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{2264FACD-618F-417C-B291-7E2A1BD11536}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="transactions.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="transactions.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="transactions.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/element/order-element-vc8.vcproj b/xsd/dist/examples/cxx/tree/order/element/order-element-vc8.vcproj
deleted file mode 100644
index 06dd76d..0000000
--- a/xsd/dist/examples/cxx/tree/order/element/order-element-vc8.vcproj
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="order-element"
- ProjectGUID="{B6118FC1-3886-4F01-BECE-44B3BDD92CA6}"
- RootNamespace="order-element"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{084F9FF2-F141-40BC-8D7D-7A78CC6707B0}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\transactions.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{F9AFEC3B-B8A5-47F6-BD3B-316A28A94B1F}"
- >
- <File
- RelativePath=".\transactions.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\transactions.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd transactions.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd"
- Outputs="transactions.cxx;transactions.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd transactions.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd"
- Outputs="transactions.cxx;transactions.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd transactions.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd"
- Outputs="transactions.cxx;transactions.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd transactions.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd"
- Outputs="transactions.cxx;transactions.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/order/element/order-element-vc9.vcproj b/xsd/dist/examples/cxx/tree/order/element/order-element-vc9.vcproj
deleted file mode 100644
index 74a0266..0000000
--- a/xsd/dist/examples/cxx/tree/order/element/order-element-vc9.vcproj
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="order-element"
- ProjectGUID="{06AAEF42-6C6F-4707-B82C-3962232A456E}"
- RootNamespace="order-element"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{A2B29337-F8F7-492A-A290-721BCAFA3B33}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\transactions.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{2ECA1E85-7EF7-4BE8-899C-5006EEBE3A9F}"
- >
- <File
- RelativePath=".\transactions.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\transactions.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd transactions.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd"
- Outputs="transactions.cxx;transactions.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd transactions.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd"
- Outputs="transactions.cxx;transactions.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd transactions.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd"
- Outputs="transactions.cxx;transactions.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd transactions.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --generate-wildcard --ordered-type batch transactions.xsd"
- Outputs="transactions.cxx;transactions.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/order/makefile b/xsd/dist/examples/cxx/tree/order/makefile
deleted file mode 100644
index 2713b6e..0000000
--- a/xsd/dist/examples/cxx/tree/order/makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-dirs := element mixed
-
-.PHONY: all $(dirs)
-
-all: $(dirs)
-
-$(dirs):
- @$(MAKE) -C $@ $(MAKECMDGOALS)
-
-makefile: ;
-% :: $(dirs) ;
diff --git a/xsd/dist/examples/cxx/tree/order/mixed/makefile b/xsd/dist/examples/cxx/tree/order/mixed/makefile
deleted file mode 100644
index b7929d9..0000000
--- a/xsd/dist/examples/cxx/tree/order/mixed/makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-root := ../../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-serialization --ordered-type-mixed
-
-
-# Build.
-#
-driver: driver.o text.o
-
-text.o: text.cxx text.hxx
-driver.o: driver.cxx text.hxx
-
-text.cxx text.hxx: text.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver text.xml
- ./driver text.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f text.o text.?xx driver.o driver
-
diff --git a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc10.vcxproj b/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc10.vcxproj
deleted file mode 100644
index 69ed120..0000000
--- a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc10.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>order-mixed</ProjectName>
- <ProjectGuid>{94A74673-C980-426B-B5BB-00744559EAD1}</ProjectGuid>
- <RootNamespace>order-mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="text.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc10.vcxproj.filters
deleted file mode 100644
index 422115b..0000000
--- a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc10.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{02F42C11-BDFB-4E9B-8E93-745AE1451A73}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{789E7294-E4D2-41DC-BDDA-4A333C3C2ED7}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{BF59FE93-D0AC-48C0-998A-7AB994AFD9FE}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="text.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc11.vcxproj b/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc11.vcxproj
deleted file mode 100644
index 6f4ba84..0000000
--- a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc11.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>order-mixed</ProjectName>
- <ProjectGuid>{94A74673-C980-426B-B5BB-00744559EAD1}</ProjectGuid>
- <RootNamespace>order-mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="text.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc11.vcxproj.filters
deleted file mode 100644
index 422115b..0000000
--- a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc11.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{02F42C11-BDFB-4E9B-8E93-745AE1451A73}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{789E7294-E4D2-41DC-BDDA-4A333C3C2ED7}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{BF59FE93-D0AC-48C0-998A-7AB994AFD9FE}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="text.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc12.vcxproj b/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc12.vcxproj
deleted file mode 100644
index 7408bef..0000000
--- a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc12.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>order-mixed</ProjectName>
- <ProjectGuid>{94A74673-C980-426B-B5BB-00744559EAD1}</ProjectGuid>
- <RootNamespace>order-mixed</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="text.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">text.cxx;text.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd text.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">text.cxx;text.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc12.vcxproj.filters
deleted file mode 100644
index 422115b..0000000
--- a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc12.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{02F42C11-BDFB-4E9B-8E93-745AE1451A73}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{789E7294-E4D2-41DC-BDDA-4A333C3C2ED7}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{BF59FE93-D0AC-48C0-998A-7AB994AFD9FE}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="text.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="text.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="text.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc8.vcproj b/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc8.vcproj
deleted file mode 100644
index 20cfe65..0000000
--- a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc8.vcproj
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="order-mixed"
- ProjectGUID="{84319CCF-087B-468D-ABA9-C8253098FAA0}"
- RootNamespace="order-mixed"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{D18F10AE-C028-4A42-AEA9-64D5307C758C}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\text.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{E341B637-99E8-40BF-88C6-C8FDCB749474}"
- >
- <File
- RelativePath=".\text.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\text.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense --generate-serialization --ordered-type-mixed text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense --generate-serialization --ordered-type-mixed text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense --generate-serialization --ordered-type-mixed text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-intellisense --generate-serialization --ordered-type-mixed text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc9.vcproj b/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc9.vcproj
deleted file mode 100644
index c6861d9..0000000
--- a/xsd/dist/examples/cxx/tree/order/mixed/order-mixed-vc9.vcproj
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="order-mixed"
- ProjectGUID="{B58CABEE-0A5C-43F3-B22B-53D060763B67}"
- RootNamespace="order-mixed"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{49DCF246-346C-4532-8D81-B3D8943C51A3}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\text.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{0317763E-1AA4-4187-8ED7-58C87F59E051}"
- >
- <File
- RelativePath=".\text.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\text.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd text.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --ordered-type-mixed text.xsd"
- Outputs="text.cxx;text.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/performance/makefile b/xsd/dist/examples/cxx/tree/performance/makefile
deleted file mode 100644
index 80bf4be..0000000
--- a/xsd/dist/examples/cxx/tree/performance/makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-inline --generate-serialization
-
-
-# Build.
-#
-driver: driver.o parsing.o serialization.o test.o time.o
-
-driver.o: driver.cxx
-test.o: test.cxx test.hxx test.ixx
-parsing.o: parsing.cxx test.hxx test.ixx time.hxx
-serialization.o: serialization.cxx test.hxx test.ixx time.hxx
-time.o: time.cxx time.hxx
-
-test.cxx test.hxx test.ixx: test.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver test-50k.xml
- ./driver test-50k.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f test.o test.?xx driver.o parsing.o serialization.o time.o driver
diff --git a/xsd/dist/examples/cxx/tree/performance/performance-vc10.vcxproj b/xsd/dist/examples/cxx/tree/performance/performance-vc10.vcxproj
deleted file mode 100644
index 6651012..0000000
--- a/xsd/dist/examples/cxx/tree/performance/performance-vc10.vcxproj
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>performance</ProjectName>
- <ProjectGuid>{C60700D1-DB4B-4EFF-8EE9-97BD716BCB89}</ProjectGuid>
- <RootNamespace>performance</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="test.cxx" />
- <ClCompile Include="time.cxx" />
- <ClCompile Include="parsing.cxx" />
- <ClCompile Include="serialization.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test.hxx" />
- <ClInclude Include="time.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="test.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/performance/performance-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/performance/performance-vc10.vcxproj.filters
deleted file mode 100644
index 6fc7fa3..0000000
--- a/xsd/dist/examples/cxx/tree/performance/performance-vc10.vcxproj.filters
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4BF3D33D-891D-402D-A26F-AEBC35E127DE}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{FD93B741-02F9-48B5-BE59-E5DD2C73CC7A}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{e0558eb1-4ecb-42e8-b50b-e07487e59072}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{47ef7335-e3a1-4832-bff0-c59ac4d25088}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="test.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="time.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="parsing.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="serialization.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="time.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="test.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/performance/performance-vc11.vcxproj b/xsd/dist/examples/cxx/tree/performance/performance-vc11.vcxproj
deleted file mode 100644
index 8e3aa7c..0000000
--- a/xsd/dist/examples/cxx/tree/performance/performance-vc11.vcxproj
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>performance</ProjectName>
- <ProjectGuid>{C60700D1-DB4B-4EFF-8EE9-97BD716BCB89}</ProjectGuid>
- <RootNamespace>performance</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="test.cxx" />
- <ClCompile Include="time.cxx" />
- <ClCompile Include="parsing.cxx" />
- <ClCompile Include="serialization.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test.hxx" />
- <ClInclude Include="time.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="test.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/performance/performance-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/performance/performance-vc11.vcxproj.filters
deleted file mode 100644
index 6fc7fa3..0000000
--- a/xsd/dist/examples/cxx/tree/performance/performance-vc11.vcxproj.filters
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4BF3D33D-891D-402D-A26F-AEBC35E127DE}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{FD93B741-02F9-48B5-BE59-E5DD2C73CC7A}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{e0558eb1-4ecb-42e8-b50b-e07487e59072}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{47ef7335-e3a1-4832-bff0-c59ac4d25088}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="test.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="time.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="parsing.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="serialization.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="time.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="test.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/performance/performance-vc12.vcxproj b/xsd/dist/examples/cxx/tree/performance/performance-vc12.vcxproj
deleted file mode 100644
index 38193f7..0000000
--- a/xsd/dist/examples/cxx/tree/performance/performance-vc12.vcxproj
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>performance</ProjectName>
- <ProjectGuid>{C60700D1-DB4B-4EFF-8EE9-97BD716BCB89}</ProjectGuid>
- <RootNamespace>performance</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="test.cxx" />
- <ClCompile Include="time.cxx" />
- <ClCompile Include="parsing.cxx" />
- <ClCompile Include="serialization.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test.hxx" />
- <ClInclude Include="time.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="test.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd test.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization test.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">test.hxx;test.ixx;test.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/performance/performance-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/performance/performance-vc12.vcxproj.filters
deleted file mode 100644
index 6fc7fa3..0000000
--- a/xsd/dist/examples/cxx/tree/performance/performance-vc12.vcxproj.filters
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4BF3D33D-891D-402D-A26F-AEBC35E127DE}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{FD93B741-02F9-48B5-BE59-E5DD2C73CC7A}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{e0558eb1-4ecb-42e8-b50b-e07487e59072}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{47ef7335-e3a1-4832-bff0-c59ac4d25088}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="test.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="time.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="parsing.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="serialization.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="test.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="time.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="test.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="test.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/performance/performance-vc8.vcproj b/xsd/dist/examples/cxx/tree/performance/performance-vc8.vcproj
deleted file mode 100644
index e49587d..0000000
--- a/xsd/dist/examples/cxx/tree/performance/performance-vc8.vcproj
+++ /dev/null
@@ -1,445 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="performance"
- ProjectGUID="{C60700D1-DB4B-4EFF-8EE9-97BD716BCB89}"
- RootNamespace="performance"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4BF3D33D-891D-402D-A26F-AEBC35E127DE}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\test.cxx"
- >
- </File>
- <File
- RelativePath=".\time.cxx">
- </File>
- <File
- RelativePath=".\parsing.cxx">
- </File>
- <File
- RelativePath=".\serialization.cxx">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{FD93B741-02F9-48B5-BE59-E5DD2C73CC7A}"
- >
- <File
- RelativePath=".\test.hxx"
- >
- </File>
- <File
- RelativePath=".\time.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\test.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\test.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense test.xsd"
- Outputs="test.hxx;test.ixx;test.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense test.xsd"
- Outputs="test.hxx;test.ixx;test.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense test.xsd"
- Outputs="test.hxx;test.ixx;test.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-intellisense test.xsd"
- Outputs="test.hxx;test.ixx;test.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/performance/performance-vc9.vcproj b/xsd/dist/examples/cxx/tree/performance/performance-vc9.vcproj
deleted file mode 100644
index fa23a74..0000000
--- a/xsd/dist/examples/cxx/tree/performance/performance-vc9.vcproj
+++ /dev/null
@@ -1,442 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="performance"
- ProjectGUID="{C60700D1-DB4B-4EFF-8EE9-97BD716BCB89}"
- RootNamespace="performance"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4BF3D33D-891D-402D-A26F-AEBC35E127DE}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\test.cxx"
- >
- </File>
- <File
- RelativePath=".\time.cxx">
- </File>
- <File
- RelativePath=".\parsing.cxx">
- </File>
- <File
- RelativePath=".\serialization.cxx">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{FD93B741-02F9-48B5-BE59-E5DD2C73CC7A}"
- >
- <File
- RelativePath=".\test.hxx"
- >
- </File>
- <File
- RelativePath=".\time.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\test.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\test.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization test.xsd"
- Outputs="test.hxx;test.ixx;test.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization test.xsd"
- Outputs="test.hxx;test.ixx;test.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization test.xsd"
- Outputs="test.hxx;test.ixx;test.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd test.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization test.xsd"
- Outputs="test.hxx;test.ixx;test.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/polymorphism/makefile b/xsd/dist/examples/cxx/tree/polymorphism/makefile
deleted file mode 100644
index 282266e..0000000
--- a/xsd/dist/examples/cxx/tree/polymorphism/makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-override XSDFLAGS += --generate-polymorphic --generate-serialization --root-element-last
-
-
-# Build.
-#
-driver: driver.o supermen.o
-
-supermen.o: supermen.cxx supermen.hxx
-driver.o: driver.cxx supermen.hxx
-
-supermen.cxx supermen.hxx: supermen.xsd
-
-
-# Test.
-#
-.PHONY: test
-test: driver supermen.xml
- ./driver supermen.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f supermen.o supermen.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc10.vcxproj b/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc10.vcxproj
deleted file mode 100644
index 4a693ec..0000000
--- a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc10.vcxproj
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>polymorphism</ProjectName>
- <ProjectGuid>{03224289-FD3C-4A58-A6D7-E8D658B0E45A}</ProjectGuid>
- <RootNamespace>polymorphism</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="supermen.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc10.vcxproj.filters
deleted file mode 100644
index 4459d2c..0000000
--- a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc10.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{A02BB28E-3A7B-4E9E-A2AC-AA264C62525C}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{6B2184D0-2125-48EB-AE80-64E24055DCE4}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{e32c9352-17dd-4c6c-b9fa-fadaf6eee928}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc11.vcxproj b/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc11.vcxproj
deleted file mode 100644
index d8f0aa0..0000000
--- a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc11.vcxproj
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>polymorphism</ProjectName>
- <ProjectGuid>{03224289-FD3C-4A58-A6D7-E8D658B0E45A}</ProjectGuid>
- <RootNamespace>polymorphism</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="supermen.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc11.vcxproj.filters
deleted file mode 100644
index 4459d2c..0000000
--- a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc11.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{A02BB28E-3A7B-4E9E-A2AC-AA264C62525C}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{6B2184D0-2125-48EB-AE80-64E24055DCE4}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{e32c9352-17dd-4c6c-b9fa-fadaf6eee928}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc12.vcxproj b/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc12.vcxproj
deleted file mode 100644
index 040d657..0000000
--- a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc12.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>polymorphism</ProjectName>
- <ProjectGuid>{03224289-FD3C-4A58-A6D7-E8D658B0E45A}</ProjectGuid>
- <RootNamespace>polymorphism</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="supermen.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd supermen.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">supermen.cxx;supermen.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc12.vcxproj.filters
deleted file mode 100644
index 4459d2c..0000000
--- a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc12.vcxproj.filters
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{A02BB28E-3A7B-4E9E-A2AC-AA264C62525C}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{6B2184D0-2125-48EB-AE80-64E24055DCE4}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{e32c9352-17dd-4c6c-b9fa-fadaf6eee928}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="supermen.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="supermen.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="supermen.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc8.vcproj b/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc8.vcproj
deleted file mode 100644
index d146d0e..0000000
--- a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc8.vcproj
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="polymorphism"
- ProjectGUID="{03224289-FD3C-4A58-A6D7-E8D658B0E45A}"
- RootNamespace="polymorphism"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{A02BB28E-3A7B-4E9E-A2AC-AA264C62525C}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\supermen.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{6B2184D0-2125-48EB-AE80-64E24055DCE4}"
- >
- <File
- RelativePath=".\supermen.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\supermen.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd.exe cxx-tree --generate-polymorphic --generate-serialization --generate-intellisense --root-element-last supermen.xsd"
- Outputs="supermen.cxx;supermen.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd.exe cxx-tree --generate-polymorphic --generate-serialization --generate-intellisense --root-element-last supermen.xsd"
- Outputs="supermen.cxx;supermen.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd.exe cxx-tree --generate-polymorphic --generate-serialization --generate-intellisense --root-element-last supermen.xsd"
- Outputs="supermen.cxx;supermen.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd.exe cxx-tree --generate-polymorphic --generate-serialization --generate-intellisense --root-element-last supermen.xsd"
- Outputs="supermen.cxx;supermen.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc9.vcproj b/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc9.vcproj
deleted file mode 100644
index 3d56cf8..0000000
--- a/xsd/dist/examples/cxx/tree/polymorphism/polymorphism-vc9.vcproj
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="polymorphism"
- ProjectGUID="{03224289-FD3C-4A58-A6D7-E8D658B0E45A}"
- RootNamespace="polymorphism"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{A02BB28E-3A7B-4E9E-A2AC-AA264C62525C}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\supermen.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{6B2184D0-2125-48EB-AE80-64E24055DCE4}"
- >
- <File
- RelativePath=".\supermen.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\supermen.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd"
- Outputs="supermen.cxx;supermen.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd"
- Outputs="supermen.cxx;supermen.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd"
- Outputs="supermen.cxx;supermen.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd supermen.xsd"
- CommandLine="xsd.exe cxx-tree --generate-polymorphic --generate-serialization --root-element-last supermen.xsd"
- Outputs="supermen.cxx;supermen.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/streaming/makefile b/xsd/dist/examples/cxx/tree/streaming/makefile
deleted file mode 100644
index 4c7acd2..0000000
--- a/xsd/dist/examples/cxx/tree/streaming/makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-serialization
-
-
-# Build.
-#
-driver: driver.o parser.o serializer.o grammar-input-stream.o position.o
-
-position.o: position.cxx position.hxx
-driver.o: driver.cxx position.hxx parser.hxx serializer.hxx
-parser.o: parser.cxx parser.hxx
-serializer.o: serializer.cxx serializer.hxx
-grammar-input-stream.o: grammar-input-stream.cxx grammar-input-stream.hxx
-
-position.cxx position.hxx: position.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver position.xml
- ./driver position.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f position.o position.?xx parser.o serializer.o grammar-input-stream.o driver.o driver out.xml
diff --git a/xsd/dist/examples/cxx/tree/streaming/streaming-vc10.vcxproj b/xsd/dist/examples/cxx/tree/streaming/streaming-vc10.vcxproj
deleted file mode 100644
index cf23e2a..0000000
--- a/xsd/dist/examples/cxx/tree/streaming/streaming-vc10.vcxproj
+++ /dev/null
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>streaming</ProjectName>
- <ProjectGuid>{3950B11C-AEB1-4E9C-BCB3-2E7133818C79}</ProjectGuid>
- <RootNamespace>streaming</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="position.cxx" />
- <ClCompile Include="parser.cxx" />
- <ClCompile Include="serializer.cxx" />
- <ClCompile Include="grammar-input-stream.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="position.hxx" />
- <ClInclude Include="parser.hxx" />
- <ClInclude Include="serializer.hxx" />
- <ClInclude Include="grammar-input-stream.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="position.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">position.cxx;position.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">position.cxx;position.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">position.cxx;position.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">position.cxx;position.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/streaming/streaming-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/streaming/streaming-vc10.vcxproj.filters
deleted file mode 100644
index 3597703..0000000
--- a/xsd/dist/examples/cxx/tree/streaming/streaming-vc10.vcxproj.filters
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4F684AD4-DFB2-4488-BA73-8625AECC91A3}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{94F3375D-5EB8-4D2C-8739-4D47E9AB7072}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{b73125d6-60b1-4f32-9cfb-d11e709d0d14}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="position.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="parser.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="serializer.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="grammar-input-stream.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="position.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="parser.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="serializer.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="grammar-input-stream.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="position.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/streaming/streaming-vc11.vcxproj b/xsd/dist/examples/cxx/tree/streaming/streaming-vc11.vcxproj
deleted file mode 100644
index 28f008c..0000000
--- a/xsd/dist/examples/cxx/tree/streaming/streaming-vc11.vcxproj
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>streaming</ProjectName>
- <ProjectGuid>{3950B11C-AEB1-4E9C-BCB3-2E7133818C79}</ProjectGuid>
- <RootNamespace>streaming</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="position.cxx" />
- <ClCompile Include="parser.cxx" />
- <ClCompile Include="serializer.cxx" />
- <ClCompile Include="grammar-input-stream.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="position.hxx" />
- <ClInclude Include="parser.hxx" />
- <ClInclude Include="serializer.hxx" />
- <ClInclude Include="grammar-input-stream.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="position.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">position.cxx;position.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">position.cxx;position.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">position.cxx;position.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">position.cxx;position.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/streaming/streaming-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/streaming/streaming-vc11.vcxproj.filters
deleted file mode 100644
index 3597703..0000000
--- a/xsd/dist/examples/cxx/tree/streaming/streaming-vc11.vcxproj.filters
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4F684AD4-DFB2-4488-BA73-8625AECC91A3}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{94F3375D-5EB8-4D2C-8739-4D47E9AB7072}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{b73125d6-60b1-4f32-9cfb-d11e709d0d14}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="position.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="parser.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="serializer.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="grammar-input-stream.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="position.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="parser.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="serializer.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="grammar-input-stream.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="position.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/streaming/streaming-vc12.vcxproj b/xsd/dist/examples/cxx/tree/streaming/streaming-vc12.vcxproj
deleted file mode 100644
index 5e69c30..0000000
--- a/xsd/dist/examples/cxx/tree/streaming/streaming-vc12.vcxproj
+++ /dev/null
@@ -1,219 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>streaming</ProjectName>
- <ProjectGuid>{3950B11C-AEB1-4E9C-BCB3-2E7133818C79}</ProjectGuid>
- <RootNamespace>streaming</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="position.cxx" />
- <ClCompile Include="parser.cxx" />
- <ClCompile Include="serializer.cxx" />
- <ClCompile Include="grammar-input-stream.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="position.hxx" />
- <ClInclude Include="parser.hxx" />
- <ClInclude Include="serializer.hxx" />
- <ClInclude Include="grammar-input-stream.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="position.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">position.cxx;position.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">position.cxx;position.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">position.cxx;position.hxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd position.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd.exe cxx-tree --generate-serialization position.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">position.cxx;position.hxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/streaming/streaming-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/streaming/streaming-vc12.vcxproj.filters
deleted file mode 100644
index 3597703..0000000
--- a/xsd/dist/examples/cxx/tree/streaming/streaming-vc12.vcxproj.filters
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4F684AD4-DFB2-4488-BA73-8625AECC91A3}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{94F3375D-5EB8-4D2C-8739-4D47E9AB7072}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{b73125d6-60b1-4f32-9cfb-d11e709d0d14}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="position.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="parser.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="serializer.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="grammar-input-stream.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="position.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="parser.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="serializer.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="grammar-input-stream.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="position.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/streaming/streaming-vc8.vcproj b/xsd/dist/examples/cxx/tree/streaming/streaming-vc8.vcproj
deleted file mode 100644
index 354c0ff..0000000
--- a/xsd/dist/examples/cxx/tree/streaming/streaming-vc8.vcproj
+++ /dev/null
@@ -1,441 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="streaming"
- ProjectGUID="{3950B11C-AEB1-4E9C-BCB3-2E7133818C79}"
- RootNamespace="streaming"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4F684AD4-DFB2-4488-BA73-8625AECC91A3}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\position.cxx"
- >
- </File>
- <File
- RelativePath=".\parser.cxx">
- </File>
- <File
- RelativePath=".\serializer.cxx">
- </File>
- <File
- RelativePath=".\grammar-input-stream.cxx">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{94F3375D-5EB8-4D2C-8739-4D47E9AB7072}"
- >
- <File
- RelativePath=".\position.hxx"
- >
- </File>
- <File
- RelativePath=".\parser.hxx">
- </File>
- <File
- RelativePath=".\serializer.hxx">
- </File>
- <File
- RelativePath=".\grammar-input-stream.hxx">
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\position.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd position.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --generate-intellisense position.xsd"
- Outputs="position.cxx;position.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd position.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --generate-intellisense position.xsd"
- Outputs="position.cxx;position.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd position.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --generate-intellisense position.xsd"
- Outputs="position.cxx;position.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd position.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization --generate-intellisense position.xsd"
- Outputs="position.cxx;position.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/streaming/streaming-vc9.vcproj b/xsd/dist/examples/cxx/tree/streaming/streaming-vc9.vcproj
deleted file mode 100644
index e6b75f3..0000000
--- a/xsd/dist/examples/cxx/tree/streaming/streaming-vc9.vcproj
+++ /dev/null
@@ -1,438 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="streaming"
- ProjectGUID="{3950B11C-AEB1-4E9C-BCB3-2E7133818C79}"
- RootNamespace="streaming"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4F684AD4-DFB2-4488-BA73-8625AECC91A3}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\position.cxx"
- >
- </File>
- <File
- RelativePath=".\parser.cxx">
- </File>
- <File
- RelativePath=".\serializer.cxx">
- </File>
- <File
- RelativePath=".\grammar-input-stream.cxx">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{94F3375D-5EB8-4D2C-8739-4D47E9AB7072}"
- >
- <File
- RelativePath=".\position.hxx"
- >
- </File>
- <File
- RelativePath=".\parser.hxx">
- </File>
- <File
- RelativePath=".\serializer.hxx">
- </File>
- <File
- RelativePath=".\grammar-input-stream.hxx">
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\position.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd position.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization position.xsd"
- Outputs="position.cxx;position.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd position.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization position.xsd"
- Outputs="position.cxx;position.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd position.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization position.xsd"
- Outputs="position.cxx;position.hxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd position.xsd"
- CommandLine="xsd.exe cxx-tree --generate-serialization position.xsd"
- Outputs="position.cxx;position.hxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/wildcard/makefile b/xsd/dist/examples/cxx/tree/wildcard/makefile
deleted file mode 100644
index 148b800..0000000
--- a/xsd/dist/examples/cxx/tree/wildcard/makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-
-override XSDFLAGS += --generate-inline --generate-serialization \
---generate-wildcard --root-element message
-
-
-# Build.
-#
-driver: driver.o email.o
-
-email.o: email.cxx email.hxx email.ixx
-driver.o: driver.cxx email.hxx email.ixx
-
-email.cxx email.hxx email.ixx: email.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver email.xml
- ./driver email.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f email.o email.?xx driver.o driver
diff --git a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc10.vcxproj b/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc10.vcxproj
deleted file mode 100644
index 6d5b02e..0000000
--- a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc10.vcxproj
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>wildcard</ProjectName>
- <ProjectGuid>{13C21A83-CC75-459E-9B01-E9EC36D1524B}</ProjectGuid>
- <RootNamespace>wildcard</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="email.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="email.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc10.vcxproj.filters
deleted file mode 100644
index 541b946..0000000
--- a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc10.vcxproj.filters
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{C8C63C87-F9B5-4EDF-B4BF-2701982EFCE6}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{E8933542-EAF8-45F5-94AE-AE8D55E47565}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{79291748-08c5-4298-a090-a210ea0e7161}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{e83a7a6b-3537-4eea-bf81-494a6fcee412}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="email.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="email.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc11.vcxproj b/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc11.vcxproj
deleted file mode 100644
index 8043842..0000000
--- a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc11.vcxproj
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>wildcard</ProjectName>
- <ProjectGuid>{13C21A83-CC75-459E-9B01-E9EC36D1524B}</ProjectGuid>
- <RootNamespace>wildcard</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="email.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="email.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc11.vcxproj.filters
deleted file mode 100644
index 541b946..0000000
--- a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc11.vcxproj.filters
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{C8C63C87-F9B5-4EDF-B4BF-2701982EFCE6}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{E8933542-EAF8-45F5-94AE-AE8D55E47565}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{79291748-08c5-4298-a090-a210ea0e7161}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{e83a7a6b-3537-4eea-bf81-494a6fcee412}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="email.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="email.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc12.vcxproj b/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc12.vcxproj
deleted file mode 100644
index e324659..0000000
--- a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc12.vcxproj
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>wildcard</ProjectName>
- <ProjectGuid>{13C21A83-CC75-459E-9B01-E9EC36D1524B}</ProjectGuid>
- <RootNamespace>wildcard</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="email.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email.hxx" />
- </ItemGroup>
- <ItemGroup>
- <None Include="email.ixx" />
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd email.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">email.hxx;email.ixx;email.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc12.vcxproj.filters
deleted file mode 100644
index 541b946..0000000
--- a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc12.vcxproj.filters
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{C8C63C87-F9B5-4EDF-B4BF-2701982EFCE6}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{E8933542-EAF8-45F5-94AE-AE8D55E47565}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Inline Files">
- <UniqueIdentifier>{79291748-08c5-4298-a090-a210ea0e7161}</UniqueIdentifier>
- <Extensions>ixx</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{e83a7a6b-3537-4eea-bf81-494a6fcee412}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="email.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="email.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="email.ixx">
- <Filter>Inline Files</Filter>
- </None>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="email.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc8.vcproj b/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc8.vcproj
deleted file mode 100644
index 046230a..0000000
--- a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc8.vcproj
+++ /dev/null
@@ -1,432 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="wildcard"
- ProjectGUID="{13C21A83-CC75-459E-9B01-E9EC36D1524B}"
- RootNamespace="wildcard"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{C8C63C87-F9B5-4EDF-B4BF-2701982EFCE6}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\email.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{E8933542-EAF8-45F5-94AE-AE8D55E47565}"
- >
- <File
- RelativePath=".\email.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\email.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\email.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --generate-intellisense --root-element message email.xsd"
- Outputs="email.hxx;email.ixx;email.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --generate-intellisense --root-element message email.xsd"
- Outputs="email.hxx;email.ixx;email.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --generate-intellisense --root-element message email.xsd"
- Outputs="email.hxx;email.ixx;email.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --generate-intellisense --root-element message email.xsd"
- Outputs="email.hxx;email.ixx;email.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc9.vcproj b/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc9.vcproj
deleted file mode 100644
index 08c2b1d..0000000
--- a/xsd/dist/examples/cxx/tree/wildcard/wildcard-vc9.vcproj
+++ /dev/null
@@ -1,429 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="wildcard"
- ProjectGUID="{13C21A83-CC75-459E-9B01-E9EC36D1524B}"
- RootNamespace="wildcard"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{C8C63C87-F9B5-4EDF-B4BF-2701982EFCE6}"
- >
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\email.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{E8933542-EAF8-45F5-94AE-AE8D55E47565}"
- >
- <File
- RelativePath=".\email.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Inline Files"
- Filter="ixx"
- >
- <File
- RelativePath=".\email.ixx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\email.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd"
- Outputs="email.hxx;email.ixx;email.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd"
- Outputs="email.hxx;email.ixx;email.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd"
- Outputs="email.hxx;email.ixx;email.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd email.xsd"
- CommandLine="xsd cxx-tree --generate-inline --generate-serialization --generate-wildcard --root-element message email.xsd"
- Outputs="email.hxx;email.ixx;email.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/xpath/makefile b/xsd/dist/examples/cxx/tree/xpath/makefile
deleted file mode 100644
index d5f2833..0000000
--- a/xsd/dist/examples/cxx/tree/xpath/makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-root := ../../..
-
-include $(root)/build/cxx/rules.make
-include $(root)/build/xsd/tree-rules.make
-
-override LIBS += -lxqilla
-
-# Build.
-#
-driver: driver.o people.o dom-parse.o
-
-people.o: people.cxx people.hxx
-driver.o: driver.cxx people.hxx dom-parse.hxx
-people.o: dom-parse.cxx dom-parse.hxx
-
-people.cxx people.hxx: people.xsd
-
-
-# Test
-#
-.PHONY: test
-test: driver people.xml
- ./driver people.xml
-
-
-# Clean.
-#
-.PHONY: clean
-clean:
- rm -f people.o people.?xx driver.o dom-parse.o driver
diff --git a/xsd/dist/examples/cxx/tree/xpath/xpath-vc10.vcxproj b/xsd/dist/examples/cxx/tree/xpath/xpath-vc10.vcxproj
deleted file mode 100644
index 60ef726..0000000
--- a/xsd/dist/examples/cxx/tree/xpath/xpath-vc10.vcxproj
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>xpath</ProjectName>
- <ProjectGuid>{EC26ACF9-0103-48D2-B7BA-0222C2175B28}</ProjectGuid>
- <RootNamespace>xpath</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;xqilla22d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;xqilla22d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;xqilla22.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;xqilla22.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="people.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people.hxx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people.hxx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people.hxx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people.hxx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/xpath/xpath-vc10.vcxproj.filters b/xsd/dist/examples/cxx/tree/xpath/xpath-vc10.vcxproj.filters
deleted file mode 100644
index d038587..0000000
--- a/xsd/dist/examples/cxx/tree/xpath/xpath-vc10.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{0A690AC0-4B5A-4FCA-B2CC-A61C00F01283}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{19387534-A72F-4C3F-A9FB-F5B8909AEB29}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{807745b4-2087-4ccb-8fdc-8160206a3042}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/xpath/xpath-vc11.vcxproj b/xsd/dist/examples/cxx/tree/xpath/xpath-vc11.vcxproj
deleted file mode 100644
index b758594..0000000
--- a/xsd/dist/examples/cxx/tree/xpath/xpath-vc11.vcxproj
+++ /dev/null
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>xpath</ProjectName>
- <ProjectGuid>{EC26ACF9-0103-48D2-B7BA-0222C2175B28}</ProjectGuid>
- <RootNamespace>xpath</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;xqilla22d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;xqilla22d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;xqilla22.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;xqilla22.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="people.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people.hxx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people.hxx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people.hxx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people.hxx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/xpath/xpath-vc11.vcxproj.filters b/xsd/dist/examples/cxx/tree/xpath/xpath-vc11.vcxproj.filters
deleted file mode 100644
index d038587..0000000
--- a/xsd/dist/examples/cxx/tree/xpath/xpath-vc11.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{0A690AC0-4B5A-4FCA-B2CC-A61C00F01283}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{19387534-A72F-4C3F-A9FB-F5B8909AEB29}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{807745b4-2087-4ccb-8fdc-8160206a3042}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/xpath/xpath-vc12.vcxproj b/xsd/dist/examples/cxx/tree/xpath/xpath-vc12.vcxproj
deleted file mode 100644
index ff81b9e..0000000
--- a/xsd/dist/examples/cxx/tree/xpath/xpath-vc12.vcxproj
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>xpath</ProjectName>
- <ProjectGuid>{EC26ACF9-0103-48D2-B7BA-0222C2175B28}</ProjectGuid>
- <RootNamespace>xpath</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">driver</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">driver</TargetName>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;xqilla22d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3D.lib;xqilla22d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)driver.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;xqilla22.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>xerces-c_3.lib;xqilla22.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(TargetPath)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx" />
- <ClCompile Include="driver.cxx" />
- <ClCompile Include="people.cxx" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx" />
- <ClInclude Include="people.hxx" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">people.hxx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">people.hxx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">people.hxx;people.cxx;%(Outputs)</Outputs>
- <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd people.xsd</Message>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">xsd cxx-tree people.xsd</Command>
- <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">people.hxx;people.cxx;%(Outputs)</Outputs>
- </CustomBuild>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/xpath/xpath-vc12.vcxproj.filters b/xsd/dist/examples/cxx/tree/xpath/xpath-vc12.vcxproj.filters
deleted file mode 100644
index d038587..0000000
--- a/xsd/dist/examples/cxx/tree/xpath/xpath-vc12.vcxproj.filters
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{0A690AC0-4B5A-4FCA-B2CC-A61C00F01283}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{19387534-A72F-4C3F-A9FB-F5B8909AEB29}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Schema Files">
- <UniqueIdentifier>{807745b4-2087-4ccb-8fdc-8160206a3042}</UniqueIdentifier>
- <Extensions>xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dom-parse.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="driver.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="people.cxx">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="dom-parse.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="people.hxx">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <None Include="Readme.txt" />
- </ItemGroup>
- <ItemGroup>
- <CustomBuild Include="people.xsd">
- <Filter>Schema Files</Filter>
- </CustomBuild>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/xsd/dist/examples/cxx/tree/xpath/xpath-vc8.vcproj b/xsd/dist/examples/cxx/tree/xpath/xpath-vc8.vcproj
deleted file mode 100644
index 3900265..0000000
--- a/xsd/dist/examples/cxx/tree/xpath/xpath-vc8.vcproj
+++ /dev/null
@@ -1,431 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="xpath"
- ProjectGUID="{EC26ACF9-0103-48D2-B7BA-0222C2175B28}"
- RootNamespace="xpath"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib xqilla22d.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib xqilla22.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib xqilla22d.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib xqilla22.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{0A690AC0-4B5A-4FCA-B2CC-A61C00F01283}"
- >
- <File
- RelativePath=".\dom-parse.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\people.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{19387534-A72F-4C3F-A9FB-F5B8909AEB29}"
- >
- <File
- RelativePath=".\dom-parse.hxx"
- >
- </File>
- <File
- RelativePath=".\people.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\people.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense people.xsd"
- Outputs="people.hxx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense people.xsd"
- Outputs="people.hxx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense people.xsd"
- Outputs="people.hxx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree --generate-intellisense people.xsd"
- Outputs="people.hxx;people.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/cxx/tree/xpath/xpath-vc9.vcproj b/xsd/dist/examples/cxx/tree/xpath/xpath-vc9.vcproj
deleted file mode 100644
index b21a65e..0000000
--- a/xsd/dist/examples/cxx/tree/xpath/xpath-vc9.vcproj
+++ /dev/null
@@ -1,428 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="xpath"
- ProjectGUID="{EC26ACF9-0103-48D2-B7BA-0222C2175B28}"
- RootNamespace="xpath"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib xqilla22d.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3D.lib xqilla22d.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/driver.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib xqilla22.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- RuntimeTypeInfo="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="xerces-c_3.lib xqilla22.lib"
- OutputFile="$(OutDir)/driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{0A690AC0-4B5A-4FCA-B2CC-A61C00F01283}"
- >
- <File
- RelativePath=".\dom-parse.cxx"
- >
- </File>
- <File
- RelativePath=".\driver.cxx"
- >
- </File>
- <File
- RelativePath=".\people.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{19387534-A72F-4C3F-A9FB-F5B8909AEB29}"
- >
- <File
- RelativePath=".\dom-parse.hxx"
- >
- </File>
- <File
- RelativePath=".\people.hxx"
- >
- </File>
- </Filter>
- <Filter
- Name="Schema Files"
- Filter="xsd"
- >
- <File
- RelativePath=".\people.xsd"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree people.xsd"
- Outputs="people.hxx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree people.xsd"
- Outputs="people.hxx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree people.xsd"
- Outputs="people.hxx;people.cxx"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|x64"
- >
- <Tool
- Name="VCCustomBuildTool"
- Description="xsd people.xsd"
- CommandLine="xsd cxx-tree people.xsd"
- Outputs="people.hxx;people.cxx"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/xsd/dist/examples/makefile b/xsd/dist/examples/makefile
deleted file mode 100644
index 5b8947e..0000000
--- a/xsd/dist/examples/makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-dirs := cxx
-
-.PHONY: all $(dirs)
-
-all: $(dirs)
-
-$(dirs):
- $(MAKE) -C $@ $(MAKECMDGOALS)
-
-makefile: ;
-% :: $(dirs) ;
diff --git a/xsd/dist/examples/test.bat b/xsd/dist/examples/test.bat
deleted file mode 100644
index 97b0b88..0000000
--- a/xsd/dist/examples/test.bat
+++ /dev/null
@@ -1,74 +0,0 @@
-@echo off
-rem file : examples/test.bat
-rem copyright : Copyright (c) 2013-2014 Code Synthesis Tools CC
-rem license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-setlocal
-
-set "tests=__path__(dirs)"
-set "confs=__path__(configurations)"
-set "plats=__path__(platforms)"
-set "curdir=%CD%"
-set "topdir=%curdir%\..\.."
-set "failed="
-
-goto start
-
-rem
-rem %1 - test directory
-rem %2 - configuration
-rem %3 - platform
-rem
-:run_test
- cd %1
-
- if "_%3_" == "_Win32_" (
- set "dir=%2"
- ) else (
- set "dir=%3\%2"
- )
-
- if exist %dir%\driver.exe (
- echo %1\%3\%2
- call %topdir%\tester.bat %2 %3
- if errorlevel 1 (
- set "failed=%failed% %1\%3\%2"
- )
- )
-
- cd %curdir%
-goto :eof
-
-:start
-
-for %%t in (%tests%) do (
- for %%c in (%confs%) do (
- for %%p in (%plats%) do (
- call :run_test %%t %%c %%p
- )
- )
-)
-
-if not "_%failed%_" == "__" goto error
-
-echo.
-echo ALL EXAMPLES PASSED
-echo.
-goto end
-
-:usage
-echo.
-echo usage: test.bat
-echo.
-
-:error
-if not "_%failed%_" == "__" (
- echo.
- for %%t in (%failed%) do echo FAILED: %%t
- echo.
-)
-endlocal
-exit /b 1
-
-:end
-endlocal
diff --git a/xsd/dist/examples/tester.bat b/xsd/dist/examples/tester.bat
deleted file mode 100644
index ae6f683..0000000
--- a/xsd/dist/examples/tester.bat
+++ /dev/null
@@ -1,47 +0,0 @@
-@echo off
-rem file : examples/tester.bat
-rem copyright : Copyright (c) 2013-2014 Code Synthesis Tools CC
-rem license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-rem
-rem Run example. The example directory is the current directory.
-rem
-rem %1 configuration, for example, Debug or Release
-rem %2 platform, for example Win32 or x64
-rem
-
-setlocal
-
-if "_%DIFF%_" == "__" set DIFF=fc
-
-if "_%2_" == "_Win32_" (
- set "dir=%1"
-) else (
- set "dir=%2\%1"
-)
-
-rem Globbing returns files in alphabetic order. We also need to cover
-rem compressed XML files (.xml.gz).
-rem
-if exist *.xml* (
- for %%f in (*.xml*) do (
- if NOT "%%f" == "out.xml" (
- if NOT "%%f" == "out.xml.gz" (
- %dir%\driver.exe %%f
- if errorlevel 1 goto error
- )
- )
- )
-) else (
- %dir%\driver.exe
- if errorlevel 1 goto error
-)
-
-goto end
-
-:error
-endlocal
-exit /b 1
-
-:end
-endlocal
diff --git a/xsd/dist/template-vc10.sln b/xsd/dist/template-vc10.sln
deleted file mode 100644
index 9a5dc32..0000000
--- a/xsd/dist/template-vc10.sln
+++ /dev/null
@@ -1,15 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-__projects__
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
-__solution_configurations__
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
-__project_configurations__
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/xsd/dist/template-vc11.sln b/xsd/dist/template-vc11.sln
deleted file mode 100644
index 436eeea..0000000
--- a/xsd/dist/template-vc11.sln
+++ /dev/null
@@ -1,15 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-__projects__
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
-__solution_configurations__
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
-__project_configurations__
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/xsd/dist/template-vc12.sln b/xsd/dist/template-vc12.sln
deleted file mode 100644
index 446d701..0000000
--- a/xsd/dist/template-vc12.sln
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.21005.1
-MinimumVisualStudioVersion = 10.0.40219.1
-__projects__
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
-__solution_configurations__
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
-__project_configurations__
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/xsd/dist/template-vc8.sln b/xsd/dist/template-vc8.sln
deleted file mode 100644
index f38bad2..0000000
--- a/xsd/dist/template-vc8.sln
+++ /dev/null
@@ -1,15 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-__projects__
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
-__solution_configurations__
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
-__project_configurations__
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/xsd/dist/template-vc9.sln b/xsd/dist/template-vc9.sln
deleted file mode 100644
index 2ec9432..0000000
--- a/xsd/dist/template-vc9.sln
+++ /dev/null
@@ -1,15 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-__projects__
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
-__solution_configurations__
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
-__project_configurations__
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/xsd/doc/cxx/makefile b/xsd/doc/cxx/makefile
deleted file mode 100644
index 0369b66..0000000
--- a/xsd/doc/cxx/makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# file : doc/cxx/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-docs := parser tree
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(docs)))
-$(install): $(addprefix $(out_base)/,$(addsuffix /.install,$(docs)))
-$(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(docs)))
-$(dist-win): $(addprefix $(out_base)/,$(addsuffix /.dist-win,$(docs)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(docs)))
-
-$(foreach m,$(docs),$(call import,$(src_base)/$m/makefile))
diff --git a/xsd/doc/cxx/parser/guide/cxx-parser-guide.pdf b/xsd/doc/cxx/parser/guide/cxx-parser-guide.pdf
deleted file mode 100644
index f031009..0000000
--- a/xsd/doc/cxx/parser/guide/cxx-parser-guide.pdf
+++ /dev/null
Binary files differ
diff --git a/xsd/doc/cxx/parser/guide/cxx-parser-guide.ps b/xsd/doc/cxx/parser/guide/cxx-parser-guide.ps
deleted file mode 100644
index c3f171c..0000000
--- a/xsd/doc/cxx/parser/guide/cxx-parser-guide.ps
+++ /dev/null
@@ -1,20731 +0,0 @@
-%!PS
-%%Title: C++/Parser Mapping Getting Started Guide
-%%Creator: html2ps version 1.0 beta7
-%%EndComments
-save
-2000 dict begin
-/d {bind def} bind def
-/D {def} d
-/t true D
-/f false D
-/FL [/Times-Roman
-/Times-Italic
-/Times-Bold
-/Times-BoldItalic
-/Courier
-/Courier-Oblique
-/Courier-Bold
-/Courier-BoldOblique
-/Helvetica
-/Helvetica-Oblique
-/Helvetica-Bold
-/Helvetica-BoldOblique] D
-/WF t D
-/WI 0 D
-/F 1 D
-/IW 471 F div D
-/IL 621 F div D
-/PS 791 D
-/EF [0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 2] D
-/EZ [12 10 19 17 15 13 12 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 8 8] D
-/Ey [0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] D
-/EG [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] D
-/Tm [1 1 0.8 0.8 0.8 0.8 0.8 0.8 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1.3 0 0] D
-/Bm [1 1 0.5 0.5 0.5 0.5 0.5 0.5 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1 0 0] D
-/Lm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 2 0 0 0] D
-/Rm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] D
-/EU [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0] D
-/NO f D
-/YY [[{()}{ h }][{ h }{()}][{()}{()}]] D
-/ZZ [[{ (July 2014) }{ Pn }][{ Pn }{ (July 2014) }][{ Ti }{ Ti }]] D
-/Ts EZ 0 get D
-/TU f D
-/Xp t D
-/AU f D
-/SN 0 D
-/Cf t D
-/Tp t D
-/Fe f D
-/TI 2 Ts mul D
-/Fm 14 D
-/xL 71 D
-/xR 71 D
-/yL 706 D
-/yR 706 D
-/Wl 471 F div D
-/Wr 471 F div D
-/hL 621 F div D
-/hR 621 F div D
-/FE {newpath Fm neg Fm M CP BB IW Fm add Fm L IW Fm add IL Fm add neg L CP BB
- Fm neg IL Fm add neg L closepath} D
-/LA {PM 0 eq{/IW Wl D /IL hL D}{/IW Wr D /IL hR D}ie /W IW D /LL W D /LS W D
- TU PM 0 eq and{IW 56 F div add SA{Sf div}if 0 translate}
- {PM 0 eq{xL yL}{xR yR}ie translate F SA{Sf mul}if dup scale
- CS CF FS Cf{CA CL get VC}if /Bb f D}ie 0 0 M
- TF not Tc or {Cf{gsave SA{1 Sf div dup scale}if Cb VC FE fill grestore}if}if}D
-/Pi 0 Ts mul D
-/SG [0.8 1 1] D
-/Ab 15 D
-/J 0 D
-/Tc t D
-/NH 6 D
-/Nf f D
-/Pa f D
-/LH 1.2 D
-/XR f D
-/Xr {/pN E D ( [p ) WB pN WB (] )WB} D
-/Db [16#FF 16#FF 16#FF] D
-/Dt [16#00 16#00 16#00] D
-/eA f D
-/Fi f D
-/bT f D
-/Lc t D
-/Dl [16#00 16#00 16#00] D
-/LX f D
-/Br 0.25 D
-/IA ([IMAGE]) D
-/DS {/PF f D()WB NL NP()pop RC ZF} D
-/Gb f D
-/Mb t D
-/Hc [16#00 16#00 16#00] D
-/Bl 3 D
-/MI -15.6 D
-/DX (DRAFT) D
-/Di 0 D
-/Tt 113.385826771654 D
-/Th { (
-) 2 Al()BR (
- ) 0 1 -1 H()4 FZ (C++/Parser Mapping) ES()EH (
- ) 0 1 -1 H()4 FZ (Getting Started Guide) ES()EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
-) Ea()BR (
- ) 0 P (Copyright © 2005-2014 CODE SYNTHESIS TOOLS CC) EP (
-
- ) 0 P (Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- ) R0 2 A (GNU Free
- Documentation License, version 1.2) EA (; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- ) EP (
-
- ) 0 P (This document is available in the following formats:
- ) R1 2 A (XHTML) EA (,
- ) R2 2 A (PDF) EA (, and
- ) R3 2 A (PostScript) EA (.) EP()} D
-/tH {()0 1 -1 H (Table of Contents) EH()} D
-/FD 2 D
-/Dy 2 D
-/cD [16#F0 16#F0 16#F0] D
-/FW 0.6 D
-/FU [16#00 16#00 16#00] D
-/ET {/RM f D /A0 3 D /PN SN D /OU t D /Ou t D /W IW D /LL W D D1
- Ms not TP and{Ip}if /TF f D} D
-
-%-- End of variable part --
-/MySymbol 10 dict dup begin
- /FontType 3 D /FontMatrix [.001 0 0 .001 0 0 ] D /FontBBox [25 -10 600 600] D
- /Encoding 256 array D 0 1 255{Encoding exch /.notdef put}for
- Encoding (e) 0 get /euro put
- /Metrics 2 dict D Metrics begin
- /.notdef 0 D
- /euro 651 D
- end
- /BBox 2 dict D BBox begin
- /.notdef [0 0 0 0] D
- /euro [25 -10 600 600] D
- end
- /CharacterDefs 2 dict D CharacterDefs begin
- /.notdef {} D
- /euro{newpath 114 600 moveto 631 600 lineto 464 200 lineto 573 200 lineto
- 573 0 lineto -94 0 lineto 31 300 lineto -10 300 lineto closepath clip
- 50 setlinewidth newpath 656 300 moveto 381 300 275 0 360 arc stroke
- -19 350 moveto 600 0 rlineto -19 250 moveto 600 0 rlineto stroke}d
- end
- /BuildChar{0 begin
- /char E D /fontdict E D /charname fontdict /Encoding get char get D
- fontdict begin
- Metrics charname get 0 BBox charname get aload pop setcachedevice
- CharacterDefs charname get exec
- end
- end}D
- /BuildChar load 0 3 dict put /UniqueID 1 D
-end
-definefont pop
-
-/Cd {aload length 2 idiv dup dict begin {D} repeat currentdict end} D
-/EX {EC cvx exec} D
-/DU {} d
-/BB {pop pop}d
-/ie {ifelse} d
-/E {exch} d
-/M {moveto} d
-/R {rmoveto} d
-/L {lineto} d
-/RL {rlineto} d
-/CP {currentpoint} d
-/SW {stringwidth} d
-/GI {getinterval} d
-/PI {putinterval} d
-/Sg {setgray} d
-/LW {setlinewidth} d
-/S {dup () ne OU and{0 Co R AT 3 eq LB and HF not and A1 0 ne A2 0 ne or and
- {A2 0 32 A1 0 6 -1 roll awidthshow}{show}ie 0 Co neg R}{pop}ie
- OU PH 3 eq or{/Ms t D}if} D
-/U {OU{gsave CP currentfont /FontInfo get /UnderlinePosition get
- 0 E currentfont /FontMatrix get dtransform E pop add newpath M dup SW pop
- CJ 0 RL stroke grestore}if} D
-/B {OU Br 0 gt and{CP Ts neg Ts .33 mul R gsave 0 Sg
- CP newpath Ts Br mul 0 360 arc closepath UI 2 mod 0 eq{stroke}{fill}ie
- grestore M CP E Ts Br 1 add mul sub E BB /Ms t D}if}D
-/NP {Ms TP not or PA and OU and{TP{OR}if f1{mF k2 /mF E D /YC 0 D}if
- TP TU not PM 0 eq or and{showpage}if DU Ip TE not{LA}if 0.6 LW
- /CI 0 D /TP t D /Hs f D /hl 6 D /Hv 6 D /HI hi D /Ms f D}if Bs XO BO M} D
-/Np {LE sub CP E pop gt PL 0 eq and{NP}if}D
-/Ip {/PN PN 1 add D /Pn RM{1}{4}ie PN Ns D /PM PN SN sub 2 mod D} D
-/GP {E dup 3 -1 roll get PN 1 add 2 mod get dup type /integertype eq
- {get 0 get}{E pop}ie}d
-/Fc {dup 2 GP exec SW pop /S1 E D dup 1 GP exec SW pop /S2 E D 0 GP exec SW
- pop /S3 E D S1 0 gt{S2 2 mul S1 add S3 2 mul S1 add 2 copy lt{E}if pop}{0}ie
- S2 S3 add 2 copy lt{E}if pop IW .9 mul div dup 1 gt{1 E div}{pop 1}ie}D
-/OR {Df{Sd}if tp not{gsave SA{1 Sf div dup scale}if Fe{Cf{FU VC}if FW LW
- 1 setlinejoin FE stroke}if /YO {60 F div dup 40 gt{pop 40}if}D /cs CS D
- /cf CF D /CF 0 D /pf PF D /PF f D /Fn FN D /At AT D /AT 0 D /FN EF Hf 1 add
- get D Fz Fs FS ZZ Fc Fz mul Fs FS EU Hf 1 add get dup type /arraytype eq
- Cf and{VC}{pop 0 Sg}ie IW IL neg YO sub M ZZ 1 GP exec dup SW pop neg 0 R Sh
- 0 IL neg YO sub M ZZ 0 GP exec Sh ZZ 2 GP exec dup SW pop IW E sub 2 div
- IL neg YO sub M Sh Fz Fs FS NO{/AW IW Pn SW pop sub D AW 2 div IL neg YO sub
- S1 0 gt S2 AW .45 mul gt or S3 AW .45 mul gt or{Fz 2 mul sub}if M Pn Sh}if
- EU Hf get dup type /arraytype eq Cf and{VC}{pop 0 Sg}ie YY Fc /FN EF Hf get D
- Hz mul HS FS IW YO M YY 1 GP exec dup SW pop neg 0 R Sh 0 YO M YY 0 GP exec Sh
- YY 2 GP exec dup SW pop IW E sub 2 div YO M Sh /FN Fn D /AT At D t Pb XO SZ
- SL get neg R /PF pf D grestore /CF 0 D cs cf FS}if}D
-/Sh {dup () ne{CP Hz 4 div sub BB show CP CS add BB}{pop}ie}D
-/Pb {/OU E D /Ou OU D /PB t D 0 0 M Ba{/Sa save D /BP t D /Fl t D RC /PL 0 D
- /PH 0 D /W IW D /LE IL .7 mul D /EO 0 D SI ZF /YA 0 D /BO 0 D /C1 () D
- BA 0 Ts neg R Bb{Xl Yl Xh Yh}if Bb CP Sa restore M
- {/Yh E D /Xh E D /Yl E D /Xl E D}if /Fl t D}if
- BL /OU t D /HM f D /Ou t D /PB f D} D
-/Bs {/BP Ba not D}D
-/reencodeISO {
- dup dup findfont dup length dict begin{1 index /FID ne{D}{pop pop}ie}forall
- /Encoding ISOLatin1Encoding D currentdict end definefont} D
-/ISOLatin1Encoding [
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
-/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash
-/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
-/less/equal/greater/question/at/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/bracketleft/backslash/bracketright
-/asciicircum/underscore/quoteleft/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/braceleft/bar/braceright/asciitilde
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar
-/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
-/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
-/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
-/guillemotright/onequarter/onehalf/threequarters/questiondown
-/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
-/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
-/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
-/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
-/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
-/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
-/yacute/thorn/ydieresis
-] D
-[128/backslash 129/parenleft 130/parenright 141/circumflex 142/tilde
-143/perthousand 144/dagger 145/daggerdbl 146/Ydieresis 147/scaron 148/Scaron
-149/oe 150/OE 151/guilsinglleft 152/guilsinglright 153/quotesinglbase
-154/quotedblbase 155/quotedblleft 156/quotedblright 157/endash 158/emdash
-159/trademark]
-aload length 2 idiv 1 1 3 -1 roll{pop ISOLatin1Encoding 3 1 roll put}for
-/colorimage where{pop}{
- /colorimage {
- pop pop /Pr E D {/Cv Pr D /Gr Cv length 3 idiv string D 0 1 Gr length 1 sub
- {Gr E dup /i E 3 mul D Cv i get 0.299 mul Cv i 1 add get 0.587 mul add
- Cv i 2 add get 0.114 mul add cvi put}for Gr} image} D
-}ie
-/pdfmark where{pop}{userdict /pdfmark /cleartomark load put}ie
-WF{FL{reencodeISO D}forall}{4 1 FL length 1 sub{FL E get reencodeISO D}for}ie
-/Symbol dup dup findfont dup length dict begin
- {1 index /FID ne{D}{pop pop}ie}forall /Encoding [Encoding aload pop]
- dup 128 /therefore put D currentdict end definefont D
-
-/SF {/CS E D SZ SL CS put FO SL FN put /YI CS LH neg mul D dup ST cvs ( ) join
- CS ST cvs join C1 E join ( NF ) join /C1 E D CS NF /Wf WF FN 0 gt or D
- /BW Wf{( ) SW pop}{0}ie D}D
-/NF {/cS E D /cF E D cF 0 ge{FL cF get}{cF -1 eq{/Symbol}{/MySymbol}ie}ie
- findfont cS scalefont setfont} D
-/FS {CF or /CF E D FR SL CF put CF CF 0 ge{FN 4 mul add}if E SF} D
-/PC {SH /BP f D fin not GL not and{NL}if /HM t D /LL LS D} D
-/BS {/TX E D Wf{/fin f D /CW 0 D /LK 0 D /SC 0 D
- /RT TX D {RT ( ) search{/NW E D pop /RT E D /WH NW SW pop D CW WH add LL gt
- {TX SC LK SC sub 1 sub NN GI GL{SH cF cS OC
- 2 copy cS ne E cF ne or{NF}{pop pop}ie}{PC /CW WH BW add D}ie
- /SC LK D}
- {GL{JC}if
- /CW CW WH add BW add D /HM t D}ie /GL f D /Ph f D
- /LK LK NW length 1 add add D}{pop exit}ie}loop
- /fin t D TX SC LK SC sub GI SH RT () ne{GL not{CC}if}if
- /LC TX length D /WH RT SW pop D CW WH add Hy{HC SW pop add}if LL gt
- {RT GL{SH cF cS OC 2 copy cS ne E cF ne or{NF}{pop pop}ie
- Hy{/Ph t D}if /LL LS D}{NL /LL LS D SH}ie}
- {RT PC Hy{CC}if /Ph Ph Hy or D}ie RT () ne{/GL t D /HM t D}if}
- {TX SW pop LL le{TX SH}{/NW () D 0 2 TX length 1 sub
- {/CW E D TX 0 CW GI dup SW pop LL gt{pop NW SH /HM t D NL/LL W XO sub MR sub D
- /CW CW 2 sub NN D /TX TX CW TX length CW sub GI D TX BS exit}
- {/NW E D}ie}for}ie}ie /HM t D}D
-/CC {C0 length 0 gt{JC}if /C0 [C1 L1 YA YB Mf NS NB TB AF Bw] D
- /C1 () D /L0 L1 D /YA 0 D /YB 0 D /Mf 0 D /NS 0 D /NB 0 D}D
-/JC {C0 aload length 0 gt{pop pop pop NB add /NB E D NS add /NS E D
- dup Mf gt{/Mf E D}{pop}ie dup YB gt{/YB E D}{pop}ie
- dup YA gt{/YA E D}{pop}ie pop C1 join /C1 E D /C0 [] D}if}D
-/OC {C0 length 0 gt{C1 L1 L0 sub YA YB Mf NS NB TB AF Bw GL C0 aload pop
- /Bw E D /AF E D /TB E D /NB E D /NS E D /Mf E D /YB E D /YA E D /C0 [] D
- /L1 E D /C1 E D Ph{HC SH}if NL /GL E D /Bw E D /AF E D /TB E D /NB E D /NS E D
- /Mf E D /YB E D /YA E D /L1 E D /LL W L1 sub XO sub MR sub WH sub D /CW 0 D
- C1 E join /C1 E D}if}D
-/BT {/LB t D dup length string copy RS dup dup () ne E ( ) ne and
- {/CI 0 D /LS LL D /LL W L1 sub XO sub MR sub D BS}
- {dup ( ) eq{/GL f D}if dup () eq L1 0 eq or{pop}{SH /BP f D /Ph f D}ie}ie
- /LB f D} D
-/BL {CP E pop XO E M} D
-/NL {JC /GL f D /SK W XO sub MR sub L1 sub TB{Bw add}if D
- /YA LF{Mf HM Fl not and PF or{LH mul}if}{0 /LF t D}ie YA 2 copy lt{E}if pop D
- C1 () ne{/FB YB Mf SA{Sf mul}if 4 div 2 copy lt{E}if pop D}if Fl{/Ya YA D}if
- CP E pop YA sub YB sub LE neg lt Fl not and PB not and{NP}if NT TL BL
- OU PF not and PB or{/RE L1 TB{Bw sub}if
- W XO sub MR sub div YA YB add LE BO add div 2 copy lt{E}if pop D
- RE 1 gt{BL 1 RE div dup scale}if}if
- AT 2 le{SK AT mul 2 div YA neg R}if
- AT 3 eq{0 YA neg R TB{/NB NB 1 sub D /NS NS 1 sub D}if /NB NB 1 sub NN D
- /A3 NS 6 mul NB add D NS NB add 0 eq
- {/A1 0 D /A2 0 D}
- {NS 0 eq{/A1 SK NB div dup J gt{pop 0}if D /A2 0 D}{J A3 mul SK lt
- {/A1 J D /A2 SK J NB mul sub NS div dup Ab gt{/A1 0 D pop 0}if D}
- {/A1 SK A3 div D /A2 A1 6 mul D}ie}ie}ie /A1 A1 NN D /A2 A2 NN D}if
- AT 4 eq{0 YA neg R PH 2 le{PD 0 lt{/PD L1 D}if PD M1 gt{/M1 PD D}if
- L1 PD sub M2 gt{/M2 L1 PD sub D}if}{DV ID 1 sub get 0 ge{Lo 0 R}if}ie}if
- F0 cF ne Cs cS ne or{F0 Cs NF}if
- /ms Ms D /Ms f D CP FB sub
- C1 cvx exec XO EO sub L1 add TB{BW sub}if dup LM gt{/LM E D}{pop}ie
- PH 0 eq PH 4 eq or Ms and{HF not{/PO t D /AH t D}if
- BB CP YA add E AT 3 eq LB and{A1 sub}if TB{BW sub}if E BB}
- {pop pop}ie Ms HM PH 3 eq and or{/BP f D /Fl f D}if
- /Lo 0 D /L1 0 D /F0 cF D /Cs cS D BP not{0 YB NN neg R}if
- OU f1 and mF not and{k2 /f1 f D}if
- OU PF not and PB or{RE 1 gt{RE dup scale}if}if /Ms ms Ms or D
- /C1 AF{(Cp )}{()}ie D /YA 0 D /YB 0 D BL
- AT 4 eq LB not and PH 3 ge and
- {ID DV length lt{DV ID get dup 0 ge{DO E sub /Lo E D /L1 Lo D}{pop}ie
- /ID ID 1 add D}if}if /T t D CD{/LN LN 1 add D PD}if
- /PD -1 D /NS 0 D /NB 0 D /TB f D /Ph f D /Mf 0 D /HM f D} D
-/RS {/TM E D /CN 0 D TM{10 eq{TM CN ( ) PI}if /CN CN 1 add D}forall
- /CN 0 D /BK HM EN and{0}{1}ie D TM
- {dup 32 ne{TM CN 3 2 roll put /CN CN 1 add D /BK 0 D}
- {pop BK 0 eq{TM CN 32 put /CN CN 1 add D}if /BK 1 D}ie}forall
- TM 0 CN GI dup dup () ne E ( ) ne and
- {dup CN 1 sub get 32 eq{/EN f D}{/EN t D}ie}if} D
-/join {2 copy length E length add string dup 4 2 roll 2 index 0 3 index
- PI E length E PI}d
-/WR {(\n) search{dup () ne BP not or
- {Li 4 le CP E pop YI Li mul add LE add 0 lt and PL 0 eq and{NP}if
- SH NL pop /Li Li 1 sub D WR}{pop pop WR}ie}{SH}ie /CI 0 D /BP f D} D
-/SH {dup dup () ne E ( ) ne and PF or CS Mf gt and{/Mf CS D}if
- T not Wf and{( ) E join /T t D}if dup BP{/MF CS D}if
- AT 3 eq{2 copy length dup 0 gt{/NB E NB add D
- {( ) search{/NS NS 1 add D pop pop}{pop exit}ie}loop}{pop pop}ie}if
- CD PD 0 lt and{dup DC search{SW pop /PD E L1 add D pop pop}{pop}ie}if
- 0 Np dup SW pop L1 add /L1 E D dup () ne
- {C1 (\() join E join (\)) join AU AF and UF or Wf and{( U ) join}if
- sF{( s ) join}if ( S ) join
- /C1 E D dup length 1 sub get 32 eq /TB E D /Bw BW D}{pop pop}ie} D
-/BG {AI LG BC add add 0 eq} D
-/ON {OU{Ty AR AI NN get dup 1 add Ln Ns Ty 2 mod 0 eq{(. )}{(\) )}ie join
- dup SW pop neg 0 R CP E 0 lt{0 E M}{pop}ie CP BB show /Ms t D}if} D
-/Ln {AR AI 3 -1 roll put}D
-/SP {dup CI lt BP not and{dup CI sub 0 E R /CI E D}{pop}ie} D
-/BN {PF{WR /HM f D}{BT NL}ie} D
-/NN {dup 0 lt{pop 0}if} D
-/h {(h) HI ST cvs join cvx exec dup 1 get E Nf{0 get E join}{pop}ie} D
-/H {/fn FN D /Hi E 1 add D 1 sub /HL E D /H2 HL 2 add D /GS EZ H2 get D
- E Tm H2 get GS mul BE dup 0 gt{1 sub}{pop EG H2 get dup 0 lt{pop AT}if}ie NA
- WW Np /SL SL 1 add D /FN EF H2 get D GS Ey H2 get FS
- EU H2 get Sc Hs not HL Hl lt and Hs HL hl lt and or Hi 0 eq or
- {/HI Hi D /Hs t D /hl HL D /Hv HL D}if HL Hl lt{/hi Hi D}if
- Nf HI 0 gt and{(h) Hi ST cvs join cvx exec 0 get WB}if
- /HF t D /AH f D /PO f D} D
-/EH {Bm H2 get GS mul BE OA /SL SL 1 sub NN D /CF 0 D /FN fn D
- SZ SL get FR SL get FS /HF f D /GS Ts D ()Ec} D
-/P {E PF{WR}{PO{EP}{BN}ie Ts 4 mul Np AE not{Tm 0 get Ts mul neg SP}if
- dup 0 ge AH and{Pi Pd}if}ie 1 sub dup 0 lt{pop AV AL get}if /AT E D /PO t D} D
-/EP {PF{WR}{BN Ts 4 mul Np}ie AE not{Bm 0 get Ts mul neg SP}if
- /AT AV AL get D /PO f D} D
-/BE {E PO{EP}{BN}ie Ts 4 mul Np neg SP} D
-/HR {/Aw W EO sub D /RW E dup 0 gt{Aw mul}{neg}ie dup Aw gt{pop Aw}if D /RZ E D
- E BN Ts neg SP 1 sub 2 div Aw RW sub mul EO add CP E pop M PF{0 Ps neg R}if
- 0 Np OU{gsave RZ LW Cf{Hc VC}{0 Sg}ie CP BB RW 0 RL CP BB stroke grestore}if
- /CI 0 D /BP f D PF not{Ts neg SP}if /Ms t D} D
-/AD {I NL EG 14 get dup 0 lt{pop AT}if NA /AE t D Tm 14 get Ts mul neg SP
- Cf{EU 14 get dup -1 eq{pop CA CL get}if Sc}if} D
-/DA {BN ()ES OA /AE f D ()Ec Bm 14 get Ts mul neg SP} D
-/PR {/MW E D /Li E D Tm 1 get Ps mul BE 0 NA /FN Fp D /PF t D SI /SL SL 1 add D
- /CF 0 D Ps CS mul Ts div MW WC mul CS mul Ts div dup LL gt PL 0 eq and
- {LL div div}{pop}ie Ey 1 get FS CP E pop LE add YI neg div cvi dup Li lt
- AH and{4 lt YI Li mul 5 mul LE add 0 gt or PL 0 eq and{NP}if}{pop}ie
- EU 1 get Sc /GS Ps D}D
-/RP {WR NL () /PF f D SI /FN 0 D ES Bm 1 get Ps mul neg SP OA /GS Ts D} D
-/SI {/XO Lm 15 get BC NN mul Lm 16 get AI UI sub NN mul add
- Lm 17 get UI NN mul add Lm 20 get LG NN mul add Ts mul
- PF{Lm 1 get Ps mul add}if EO add D
- /MR Rm 15 get BC NN mul Rm 16 get AI UI sub NN mul add
- Rm 17 get UI NN mul add Rm 20 get LG NN mul add Ts mul
- PF{Rm 1 get Ps mul add}if D /LL W XO sub MR sub D} D
-/DT {/cC E D BN /LG LG 1 sub D SI /LG LG 1 add D WW 2 div Np BL} D
-/DD {WB Cc 0 eq cC 0 eq and L1 0 eq or Lm 20 get Ts mul L1 sub TB{BW add}if
- Ts 2 div lt or NL /LF E D SI BL /cC 0 D} D
-/DL {Dc LG Cc put /Cc E D BG{Tm 18 get Ts mul BE}{BN}ie /LG LG 1 add D BL} D
-/LD {BN LG 0 gt{/LG LG 1 sub D}if /Cc Dc LG get D SI
- BG{()Bm 18 get Ts mul BE}if BL} D
-/UL {BG{Tm 17 get Ts mul BE}{BN}ie NR AI NN 0 put /UI UI 1 add D
- /AI AI 1 add D SI BL} D
-/LU {BN /UI UI 1 sub D /AI AI 1 sub D SI BG{()Bm 17 get Ts mul BE}if BL} D
-/OL {E BG{Tm 16 get Ts mul BE}{BN}ie TR AI NN Ty put /Ty E D NR AI NN 1 put
- /AI AI 1 add D SI BL 1 Ln} D
-/LO {BN /AI AI 1 sub D /Ty TR AI get D SI BG{()Bm 16 get Ts mul BE}if BL} D
-/LI {E BN -1 SP /BP f D /CI 0 D 0 Np NR AI 1 sub NN get 1 eq
- {dup dup 0 gt E 4 le and{/Ty E D}{pop}ie
- /L1 L1 Ty AR AI NN get Ns SW pop XO sub dup 0 lt{pop 0}if add D ( ON )}
- {pop ( B )}ie C1 E join /C1 E D CS Mf gt{/Mf CS D}if BL} D
-/BQ {Tm 15 get Ts mul BE /BC BC 1 add D SI BL} D
-/QB {Bm 15 get Ts mul BE /BC BC 1 sub D SI BL} D
-/Al {E EP 1 sub dup 0 lt{pop AV AL get}if NA} D
-/Ea {EP OA} D
-/WB {PF{WR}{BT}ie} D
-/F1 {WB /FN 0 D CS 0 FS} D
-/F2 {WB /FN WI D CS 0 FS} D
-/HY {/Hy t D WB /Hy f D} D
-/YH {WB} D
-/A {/LT E D LT 1 eq{/RN E D}if /Lh E D WB /C1 C1 ( Cp ) join D
- Lc AF not and{Cl Sc}if /AF t D} D
-/EA {Lc AF and{Ec}{WB}ie TL Pa AF and Lh 0 ne and
- {( \() Lh join (\)) join /AF f D WB}if /AF f D} D
-/TL {C1 ( Tl ) apa /C1 E D} d
-/apa {AF OU and Lh 0 ne LT 1 eq or and{LT 1 eq{RN ( /) E ST cvs join}
- {(\() Lh join (\)) join}ie E join join}{pop}ie} d
-/Cp {/Xc CP /Yc E D D} D
-/SS {Cf{dup 0 ge{EU E get dup -1 eq{pop CA CL get}if}{pop CA CL get}ie Sc}
- {pop}ie SZ SL get /SL SL 1 add D} D
-/I {WB 8 SS 1 FS} D
-/EM {WB 8 SS /CF CF 1 xor D 0 FS} D
-/BD {WB 9 SS 2 FS} D
-/TT {WB 10 SS /FN Fp D 0 FS} D
-/KB {WB 11 SS /FN Fp D 2 FS} D
-/CT {WB 12 SS 1 FS} D
-/SM {WB 13 SS /FN Fp D 0 FS} D
-/Q {/QL QL 1 add D QO QL 2 mod get La get join WB} D
-/EQ {QC QL 2 mod get La get join WB /QL QL 1 sub D} D
-/RO {WB -1 SS /CF 0 D 0 FS} D
-/SY {WB -1 SS -1 FS} D
-/MY {WB -1 SS -2 FS} D
-/ES {WB /SL SL 1 sub NN D /CF 0 D /FN FO SL get D SZ SL get FR SL get FS ()Ec}D
-/FZ {3 sub 1.2 E exp GS mul E WB TL /C1 C1 ( Cp ) join D /SL SL 1 add D 0 FS} D
-/Ef {WB TL ()ES /C1 C1 ( Cp ) join D} D
-/BZ {dup /Bf E D FZ}D
-/Sc {dup -1 ne Cf and{/CL CL 1 add D dup 0 eq{pop [0 0 0]}if
- dup CA E CL E put VS ( VC ) join C1 E join /C1 E D}{pop}ie} D
-/Ec {WB Cf{/CL CL 1 sub NN D CA CL get VS ( VC ) join C1 E join /C1 E D}if} D
-/VS {dup type /arraytype eq{([) E {ST cvs join ( ) join}forall (]) join}if} D
-/VC {{255 div}forall setrgbcolor} D
-/Sl {dup type /integertype ne{Ds}if /La E D WB}d
-/UN {WB /UF t D} D
-/NU {WB /UF f D} D
-/SE {WB /sF t D} D
-/XE {WB /sF f D} D
-/sM {/C1 C1 ( k1 ) join D}d
-/eM {/C1 C1 ( k2 ) join D}d
-/k1 {/YC CP E pop Ts add D /mF t D /f1 t D}d
-/k2 {gsave 3 LW -9 CP E pop Ts 0.2 mul sub M -9 YC L stroke grestore /mF f D}d
-/Ac {/AC E D WB}d
-/Ca {eA{( \()join AC join(\) )join}if WB}d
-/s {OU{gsave 0 CS .25 mul R dup SW pop CJ 0 RL stroke grestore}if}D
-/CJ {AT 3 eq LB and{E dup dup length 1 sub A1 mul E
- {( ) search{pop pop E A2 add E}{pop exit}ie}loop 3 -1 roll add
- W CP pop sub 2 copy gt{E}if pop}if}D
-/So {/Co E D} D
-/SO {C1 Yo ST cvs join ( So ) join /C1 E D (j) SW pop 2 div Pd} D
-/Se {E WB CS E div Pd}D
-/Pd {dup type /stringtype eq{SW pop}if dup /L1 E L1 add D
- ST cvs ( 0 R ) join C1 E join /C1 E D} D
-/Sp {0.35 CO} D
-/Sb {-0.2 CO} D
-/CO {OV Io Yo put /Yo E CS mul Yo add D /Io Io 1 add D -1.5 Io mul 3 add FZ SO
- CS Yo add dup YA gt{/YA E D}{pop}ie
- Yo neg dup YB gt{/YB E D}{pop}ie} D
-/Es {ES /Io Io 1 sub NN D /Yo OV Io get D SO} D
-/SB {/N2 0 D 0 1 NI{/N E D{IX N2 get 0 lt{/N2 N2 1 add D}{exit}ie}loop
- /K WS N get FC N get mul D /NY AY N2 get D /BV NY array D
- 0 1 NY 1 sub{/TM K string D currentfile TM readhexstring pop pop BV E TM put}
- for BM N BV put /N2 N2 1 add D}for} D
-/IC [{/MA E D /MB 0 D}{2 div /MA E D /MB MA D}{/MB E CS sub D /MA CS D}
- {pop /MA YS AB mul D /MB 1 AB sub YS mul D}{pop /MA 0 D /MB 0 D}] D
-/IP {BV N get /N N 1 add D} D
-/II {/K E D IX K get 0 lt{/EC E D}if /TY E D
- TY 4 eq{/Y E D /X E D}if TY 3 eq{/AB E D}if
- /XW AX K get D /YW AY K get D /IS SG IT K get get D /XS XW IS mul D
- /YS YW IS mul D YS IC TY get exec /MA MA Fl not{3 add}if D} D
-/IM {II /ty TY D /xs XS D /ys YS D /ya YA D /yb YB D /ma MA D /mb MB D /k K D
- /ec EC D /BP f D /CI 0 D WB TL L1 xs add dup XO add MR add W gt
- {pop /ma ma Fl{3 add}if D NL /YA ma D /YB mb D /YS ys D /L1 xs D}
- {/L1 E D ma YA gt{/YA ma D}if mb YB gt{/YB mb D}if}ie /TB f D
- OU{CP E pop YS sub LE neg lt Fl not and PB not and{NP /YA ma D /YB mb D}if
- /BP f D ty ST cvs ( ) join IX k get 0 lt{(\() join ec join (\) ) join}if
- k ST cvs join ty 3 eq{AB ST cvs ( ) join E join}if
- ty 4 eq{X ST cvs ( ) join Y ST cvs join ( ) join E join}if C1 E join
- ( DI ) join FP 2 eq FP 1 eq AF and or{( FM ) join}if
- ( Il Cp ) apa /C1 E D /EN f D}if /HM t D /T f D} D
-/DI {II /Xc CP /Yc E D D /YN YW neg D /HM t D /CI 0 D /K2 IX K get D gsave
- TY 4 eq{OX X IS mul add OY FY add YS sub Y IS mul sub}
- {/FY YS D CP MB sub 2 copy /OY E D /OX E D}ie
- translate K2 0 ge{/DP AZ K2 get D /BV BM K2 get D XS YS scale /N 0 D XW YW DP
- [XW 0 0 YN 0 YW] {IP} FC K2 get 1 eq{image}{f 3 colorimage}ie}
- {EX}ie grestore XS 0 R /Ms t D} D
-/FM {gsave 0 Sg CP MB sub translate XS neg 0 M 0 YS RL XS 0 RL 0 YS neg RL
- XS neg 0 RL stroke grestore} D
-/NA {/AT E D /AL AL 1 add D AV AL AT put} D
-/OA {AL 0 gt{/AL AL 1 sub D /AT AV AL get D}if} D
-/D1 {/BR {CP E pop E BN Mb{CP E pop eq{0 YI R}if}{pop}ie} D
- /Sn {OU{C1 E ST cvs join ( Ld ) join /C1 E D}{pop}ie} D} D
-/D1 {/BR {BN} D /Sn {OU {C1 E ST cvs join ( Ld ) join /C1 E D} {pop} ie} D} D
-/TC {/TF t D /ML 0 D HN{SW pop dup ML gt{/ML E D}{pop}ie}forall NP /RM RM not D
- RC /OU Tc D Ep /PN 0 D Ms not TP and{Ip}if /W IW ML sub Ts sub D
- /A0 0 D TH{/BR {( ) join BT} D /Sn {pop} D /Au () D}if} D
-/TN {0 eq{E EA PF HF or not XR and{HN E get Xr}{pop}ie}
- {OU{Tn 0 ge{() BN}if /Tn E D}{pop}ie WB}ie} D
-/NT {OU LB not and Tn 0 ge and{PL 0 eq{Ms not{CS CF FS}if CP dup
- /y E YA sub D W 9 sub CS -1.8 mul XO L1 add 2 add{y M (.) show}for
- HN Tn get dup SW pop IW E sub y M show CP BB M}if /Tn -1 D}if} D
-/Ld {/DN E D HN DN Pn put [/View [/XYZ -4 Fl{PS}{CP YA add US E pop}ie null]
- /Dest DN ST cvs cvn /DEST pdfmark} D
-/C {ND 1 eq{1 sub}if TI mul /XO E D NL Nf not{pop()}if 0 3 -1 roll 1 A} D
-/OP {BP not{NP}if PN 2 mod 0 eq{/Ms t D NP}if}D
-/Ep {Xp PN 2 mod 0 eq and OU and{/Pn (-) D showpage /PM 1 D LA}if}D
-/Dg [73 86 88 76 67 68 77] D
-/Rd [0 [1 1 0][2 1 0][3 1 0][2 1 1][1 1 1][2 2 1][3 3 1][4 4 1][2 1 2]] D
-/Ns {/m E D /c E 32 mul D /j m 1000 idiv D /p j 12 add string D
- c 96 le m 0 gt and{c 32 le {/i 0 D /d 77 D /l 100 D /m m j 1000 mul sub D
- j -1 1 {pop p i d c add put /i i 1 add D}for
- 4 -2 0 {/j E D /n m l idiv D /m m n l mul sub D /d Dg j get D
- n 0 gt {/x Rd n get D x 0 get -1 1 {pop p i d c add put /i i 1 add D}for
- p i x 1 get sub Dg x 2 get j add get c add put}if /l l 10 idiv D
- }for p 0 i GI}
- {/i ST length 1 sub D m {1 sub dup 0 ge{dup 26 mod c add 1 add
- ST i 3 -1 roll put 26 idiv dup 0 eq{pop exit}if}if /i i 1 sub D}loop
- ST i ST length i sub GI}ie}
- {m p cvs}ie} D
-/US {matrix currentmatrix matrix defaultmatrix matrix invertmatrix
- matrix concatmatrix transform} D
-/GB {Gb{US}if}D
-/Tl {/Rn E D Xc CP pop ne{
- [/Rect [Xc 1 sub Yc cS 0.25 mul sub GB CP E 1 add E cS 0.85 mul add GB]
- /Subtype /Link /Border [0 0 Cf Lc and LX and AU or{0}{1}ie] Rn type
- /nametype eq {/Dest Rn}{/Action [/Subtype /URI /URI Rn] Cd}ie
- /ANN pdfmark}if} D
-/Il {/Rn E D [/Rect [Xc Yc GB Xc XS add Yc YS add GB] /Subtype /Link
- /Border [0 0 0] Rn type /nametype eq{/Dest Rn}
- {/Action [/Subtype /URI /URI Rn] Cd}ie /ANN pdfmark} D
-/XP {[{/Z Bz 2 div D Z 0 R Z Z RL Z neg Z RL Z neg Z neg RL Z Z neg RL
- Fi cH 1 eq and{fill}if} {Bz 0 RL 0 Bz RL Bz neg 0 RL 0 Bz neg RL
- Fi cH 1 eq and{fill}if} {0 -5 R Bz 0 RL 0 21 RL Bz neg 0 RL 0 -21 RL}]} D
-/MS {/Sm E D WB}D
-/O {BN()0 Sm BX} D
-/BX {/Bt E D Bt 2 lt{/Ch E D CS 0.8 mul}{11 mul}ie W XO sub MR sub
- 2 copy gt{E}if pop /HZ E D Bt 2 eq{Fi not{pop()}if ( )E join /Ft E D TT
- /PF t D /MW 1 D /Li 1 D /Fw Ft SW pop D Fw HZ gt{/HZ Fw 8 add D}if
- HZ ST cvs( )join}{WB Ch ST cvs( )join}ie L1 HZ add XO add MR add W gt{NL}if
- Bt 2 eq{Ft ES Fw neg HM{CS sub}if Pd}if Bt ST cvs join( Bx )join
- Bt 2 eq HM and{CS Pd}if C1 E join /C1 E D /L1 L1 HZ add D /T f D
- ( ) Pd /PF f D Bt 2 lt{YA CS .8 mul lt{/YA CS .8 mul D}if}
- {YB 5 lt{/YB 5 D}if YA 21 lt{/YA 21 D}if}ie /CI 0 D} D
-/Bx {dup 2 eq{E /Bz E D}{E /cH E D /Bz CS .8 mul D}ie
- OU {gsave 0 Sg XP E get exec stroke grestore}{pop}ie Bz 0 R /Ms t D}D
-/SD {FD 4 mul Dy add DZ NF newpath 0 0 M DX t charpath pathbbox
- 3 -1 roll sub /DY E D E dup /X1 E D sub WM mul WX DY mul add WM DG mul E div
- /DF E D /DR WX DF mul DY mul WM div 2 div D} d
-/Sd {gsave 0 IL Di mul neg translate IL IW atan Di 0 eq{neg}if rotate
- FD 4 mul Dy add DZ NF DR X1 sub DY 2 div neg M cD VC DX show grestore} d
-/Pt {/tp t D Tp{NP /Pn (TP) D 0 Tt neg R Th BN NP Ep ET RC ZF}if /tp f D} D
-/RC {/AI 0 D /LG 0 D /BC 0 D /UI 0 D /PF f D /Cc 0 D /cC 0 D /Dc 10 array D
- /NR [0 1 9{pop 0}for] D /La Ds D /AR 10 array D /TR 10 array D /AV 30 array D
- SI /AL -1 D /AT A0 D AT NA /OV 9 array D /Yo 0 D /Co 0 D /Io 0 D /Hy f D
- /Ph f D /CL -1 D Ct Sc}D
-/ZF {/FR [0 1 30{pop 0}for] D /SZ [0 1 30{pop 0}for] D /FO [0 1 30{pop 0}for] D
- /SL 0 D /CF 0 D /FN 0 D 0 Ts SF}D
-/QO [[(\234)(\233)(\253\240)(\232)(\273)(\253)][(')(`)(\253\240)(\231)(\273)(\253)]] D
-/QC [[(\234)(\234)(\240\273)(\233)(\253)(\273)][(')(')(\240\273)(`)(\253)(\273)]] D
-/Hf EF length 2 sub D
-/Hz EZ Hf get D
-/HS Ey Hf get D
-/Fz EZ Hf 1 add get D
-/Fs Ey Hf 1 add get D
-/LE IL D
-/Ps EZ 1 get D
-/Fp EF 1 get D
-/XO 0 D
-/YI 0 D
-/CI 0 D
-/FP 0 D
-/WW Ts 7 mul D
-/Mf 0 D
-/YA 0 D
-/YB 0 D
-/Cs Ts D
-/GS Ts D
-/F0 0 D
-/NS 0 D
-/NB 0 D
-/N 0 D
-/C0 [] D
-/C1 () D
-/Lo 0 D
-/L1 0 D
-/LM 0 D
-/PH 0 D
-/EC 0 D
-/Lh 0 D
-/LT 0 D
-/CH 1 string D
-/ST 16 string D
-/CA 9 array D
-/HC (\255) D
-/HM f D
-/PF f D
-/EN f D
-/TB f D
-/UF f D
-/sF f D
-/AE f D
-/AF f D
-/BP t D
-/CD f D
-/PA t D
-/GL f D
-/T t D
-/HF f D
-/AH f D
-/SA f D
-/PB f D
-/f1 f D
-/mF f D
-/OX 0 D
-/OY 0 D
-/FY 0 D
-/EO 0 D
-/FB 0 D
-/PL 0 D
-/Bw 0 D
-/PD -1 D
-/TP f D
-/tp f D
-/TH t D
-/Ty 4 D
-/Tn -1 D
-/Fl t D
-/LB t D
-/PM 1 D
-/Ms f D
-/Ba f D
-/Bb f D
-/Hl 3 D
-/hl 6 D
-/Hv 6 D
-/Hs f D
-/HI 0 D
-/hi 0 D
-/PO t D
-/TE f D
-/LF t D
-/BO 0 D
-/Sm 1 D
-/Bf 3 D
-/A1 0 D
-/A2 0 D
-/Ds 1 D
-/QL -1 D
-/Cb Db D
-/Ct Dt D
-/Cl Dl D
-/AX [541] D
-/AY [291] D
-/IX [0] D
-/IT [0] D
-/AZ [8] D
-/WS [541] D
-/FC [3] D
-/NI 0 D
-/BM 1 array D
-SB
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffcfdffe1edfb
-c9e0f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c7def8d9e9fa
-f8fbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffe4effc
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8dceafbffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d2e4fac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c7def8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf88495a77482928798abc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88b9caf
-b5cbe4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf894a6baacc1d8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-8393a57482928a9baec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88ea0b3626e7c2e343ac5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7a898fa1b4c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-3d454d9fb3c9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8525c688b9cafc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf88d9eb15f6a77333a41c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c4dcf7afc4dcb9d0e9c5ddf8c5ddf8c5ddf896a9bd2e343ac5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b3c9e1b3c9e1c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8bdd4eeb0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b2c8e0bad0ea
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b9d0e9b4c9e2c5ddf8c5ddf8c4dcf7bed6f047505a768595bed6f0
-c1d8f3c5ddf8c5ddf8c3dbf6c1d8f3c5ddf8b2c8e0bfd6f1c5ddf8c3dbf6
-bed6f0bed6f0c4dcf7c5ddf8c5ddf8c5ddf8bfd6f1c5ddf8b6cce5c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b7cde6c4dcf7c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7c0d7f2c4dcf7b7cde6c5ddf8
-c5ddf8c5ddf8c4dcf7bed6f0bed6f0c3dbf6c5ddf8c5ddf8c3dbf6c1d9f4
-b4c9e2c5ddf8b8cfe8c4dcf7c5ddf8c3dbf6c1d8f3c1d9f4b9d0e9c5ddf8
-c5ddf8c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf895a7bb131518252a2f2024288494a6c5ddf8c5ddf896a9bd2e343a
-c5ddf8c5ddf8c5ddf8c5ddf82d33392d3339282d3325292eaec3dbc5ddf8
-c5ddf847505a2f343b373e463d454dc5ddf8c5ddf8a9bdd4282d33373e46
-282d337d8d9ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c2daf5363c44323940323940525c68c5ddf8a5b9d030363d1214171e2125
-30363d687583c5ddf8c5ddf87b8a9b4149522c3137212529262b30c5ddf8
-96a9bd30363d0a0b0c9aadc2c5ddf8c5ddf8c5ddf8050606454e57272c31
-22272bafc4dcc5ddf8b7cee7464e5821252925292e181b1fa6bbd2c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a5b9d014171a252a2f22272b
-48515bb8cfe8c5ddf8a8bcd430363d1012148393a5c5ddf8c5ddf87f8fa0
-1d202420242832383f292e34353b43c5ddf88b9cb021262a1e2125212529
-545f6ac1d9f4c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c0d7f214171a8797aac5ddf8c4dcf7b3c9e1c5ddf8c5ddf896a9bd
-2e343ac5ddf8c5ddf8c5ddf8c5ddf8b7cde6c5ddf8c5ddf85a65715c6874
-c5ddf8a6bbd21e2125c5ddf8c5ddf8bfd6f1c5ddf8c5ddf85c6874687583
-c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf88d9eb1373e46c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8c5ddf84a535d
-7a899ac5ddf8c5ddf8c5ddf8c5ddf87b8a9b0303039cafc4c5ddf8bcd3ed
-c5ddf8c5ddf8c5ddf82a2f359aadc2c5ddf8c5ddf8c5ddf80000008b9cb0
-c5ddf8505a65778696c5ddf8798898454e57c4dcf7a0b4ca000000a6bbd2
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a5b9d0000000a0b4ca
-c5ddf847505a7d8c9dc5ddf8c5ddf8c5ddf84149528393a5c5ddf8c5ddf8
-7f8fa049525ca2b6cc0b0d0ec5ddf8212529c0d7f28b9cb0040505b5cbe4
-c1d9f430363d96a9bdc5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8a4b8cf0d0f11c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-96a9bd2e343ac5ddf8c5ddf8c5ddf8c5ddf890a2b5505a652b30361b1e22
-4a535dc5ddf8c0d7f21e22263d454d768494bcd3edc5ddf8c5ddf88c9db1
-171a1e535d6992a3b7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8b2c8e0171a1e454e577e8e9fc1d8f3c5ddf8c5ddf8c5ddf8
-4a535d7a899ac5ddf8c5ddf8c5ddf8c5ddf87b8a9b2b3036c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf82a2f359aadc2c5ddf8c5ddf8c5ddf8020202
-bfd6f1c5ddf8738190525c68c5ddf8424a537a899ac5ddf8c5ddf8101315
-a6bbd2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a5b9d00d0e10
-c5ddf8c5ddf879889847505ac5ddf8c5ddf8c5ddf84149528393a5c5ddf8
-c5ddf87f8fa05b6672b4c9e21d2024c5ddf82c3238abc0d78b9cb0252a2f
-c5ddf8c5ddf85f6a77626e7bc5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8a4b8cf0d0f11c2daf5c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf897a9be2d3339c5ddf8c5ddf8c5ddf8b9d0e916191ca0b4cac4dcf7
-69768547505ac5ddf8c5ddf8c2daf58a9bae1e222621262ac5ddf8c5ddf8
-c5ddf8b4cae36774820506066c7988c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bfd6f17f8fa01416193b424ac5ddf8c5ddf8
-c5ddf84a535d7a899ac5ddf8c5ddf8c5ddf8c5ddf87b8a9b49525cc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82a2f359aadc2c5ddf8c5ddf8c5ddf8
-060607c5ddf8c5ddf8748292505a65c5ddf849525c758393c5ddf8c4dcf7
-0c0d0fa6bbd2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a5b9d0
-0c0d0fc5ddf8c5ddf8788797454e57c5ddf8c5ddf8c5ddf84149528393a5
-c5ddf8c5ddf87f8fa05e6976b7cde6202428c5ddf82f343ba8bcd48b9cb0
-252a2fc5ddf8c5ddf85f6a775f6a77c5ddf8c5ddf892a4b8323940c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c0d7f214171a8797aac5ddf8c4dcf7b4c9e2
-c5ddf8c5ddf8bad1eb131518bdd4eec5ddf8c5ddf89cafc4272c31c5ddf8
-bed6f02a2f3547505ac5ddf8bad1ebc1d8f3c5ddf8b4c9e20e1012c0d7f2
-c5ddf8b6cce5c5ddf8c5ddf86c7988505a65c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b7cee7c3dbf6c5ddf89cafc51f2327c5ddf8
-c5ddf8c5ddf86673815f6b78c5ddf8c5ddf8c5ddf8c5ddf87b8a9b49525c
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82a2f359aadc2c5ddf8c5ddf8
-c5ddf8060607c5ddf8c5ddf8748292505a65c5ddf8808fa1394047bed6f0
-90a2b5000000a6bbd2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-a5b9d00000009db0c6c4dcf7454e577b8a9bc5ddf8c5ddf8c5ddf8414952
-8393a5c5ddf8c5ddf87f8fa05e6976b7cde6202428c5ddf82f343ba8bcd4
-8b9cb0030404b2c8e0c1d8f32f343b95a7bbc5ddf8c5ddf8b7cee715181b
-bed6f0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a8bc171a1d262b3022272b
-8495a7c5ddf8c5ddf8c5ddf86976851d202431373ec5ddf8c5ddf83d444c
-2a2f351b1e2247505a47505ac5ddf899acc1181b1f394047282d326d7b8a
-c5ddf8c5ddf856616c24282d363d452b3036a5b9d0c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88393a51b1e22394047272c318191a3
-c5ddf8c5ddf8c5ddf8a9bed5323940272c3164707ec5ddf8c5ddf87b8a9b
-49525cc5ddf8c5ddf8c5ddf8c5ddf856616c2a2f35090a0b2125292a2f35
-a8bcd4c5ddf8060607c5ddf8c5ddf8748292505a65c5ddf8bdd4ee5f6a77
-1d20243e464e1d2024abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8a5b9d014171a22272b21252948515bb8cfe8c5ddf86875832a2f35
-0d0f111c20232a2f3596a9bd7f8fa05e6976b7cde6202428c5ddf82f343b
-a8bcd48b9cb021262a1b1e22202428545f6ac1d8f3c5ddf8c5ddf8c5ddf8
-6572801c2023353b43c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c6de
-bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b7cde6c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3adc3dac3dbf6
-c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9b4c9e2c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed6f0aec3dbc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8bcd3ed1b1f23c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8a5b9d01f2327c4dcf7b7cde6c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf88b9cb0394047c1d9f4b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-b4c9e240485165717f31373e697584c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8a5b9d01f2327c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf88b9cb0394047c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c4dcf79cafc48494a6b6cce5c5ddf8c5ddf87e8e9f6e7b8b6e7b8b
-6e7b8b6e7b8b8a9baec5ddf8bcd3ed96a9bdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b4cae39eb1c7c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c4dcf78494a658626eb4c9e2c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf89eb1c721262a97a9bec1d8f3c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86f7c8c55606bc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86875835b6672c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee3940477a8899c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4c9e2131518212529bcd3ed
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c3dbf63f474f
-738190c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-6976855a6571c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8707e8d545e6ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8a2b6cc1d20248b9cafbfd6f1c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf892a3b7697685b7cde6c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff9fcfee6f0fce2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe2eefb
-e2eefbe2eefbe2eefbe2eefbe2eefbe2eefbe8f2fcfdfeffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffbfcfed6e7fac6ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8cae0f9e6f0fc
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffe1eefbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8f3f8feffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c0d7f29fb2c8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-95a8bc47505ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffcfdffc9dff8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ddebfbffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db16191cc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b0c6de8fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8cae0f9ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b6cce57482924b545f636f7dbad0eac5ddf87a899a515b670a0b0c
-5b67735b6773b7cde6c5ddf8c5ddf86a7786a8bcd465717f505a65a6bbd2
-c5ddf8707e8d5b6773798898c5ddf8c5ddf8c5ddf891a2b690a2b5697685
-5c6874acc1d8c5ddf8c5ddf8c1d9f478879758626e92a4b88494a6c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf84e57625e69769db0c67a899ab0c6dec5ddf8a2b6cc8292a4
-10131593a5b993a5b9bed6f0c5ddf8c5ddf81a1d2132383f6673818191a3
-93a5b9c5ddf89db0c66b7887363c44c5ddf8c5ddf8c5ddf8636f7d191c20
-7988986572802c3238c5ddf8c5ddf83940474e58637f8fa01c2023434b54
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf830363d707e8dbed5efc5ddf8c5ddf8c5ddf8c5ddf8
-aec3db16191cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf81a1d216f7c8cc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf88ea0b3363c44c5ddf8c5ddf8c5ddf8636f7d
-48515bc5ddf8c2daf50b0d0ebdd4eebcd3ed0a0c0dc0d7f2c5ddf85f6a77
-434b54c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8a3b7ce434c550c0d0f454e57b9d0e9c5ddf8
-c5ddf8aec3db16191cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf81a1d21a3b7ce
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88ea0b3363c44c5ddf8c5ddf8c5ddf8
-636f7d677482c5ddf8c5ddf8131518b1c7df9cafc41e2226c5ddf8c5ddf8
-7d8c9d434b54c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd22024287c8b9c
-c5ddf8c5ddf8b4cae3101315c5ddf8c5ddf8c5ddf8c5ddf8c5ddf81a1d21
-aabfd6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88ea0b3363c44c5ddf8c5ddf8
-c5ddf8636f7d677482c5ddf8c5ddf8131518b1c7dfc0d7f20b0d0ebed5ef
-c5ddf8596470434b54c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8616d7a92a3b790a2b51e2226
-a6bbd2c5ddf8c5ddf8c5ddf823272c6774828d9eb1bed5efc5ddf8c5ddf8
-1a1d21aabfd6c5ddf8c5ddf8c5ddf8b9d0e98d9eb1667381262b308d9eb1
-9fb2c8c5ddf8636f7d677482c5ddf8c5ddf8131518b1c7dfc5ddf84a535d
-3941486c7988202428434b54c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f4f59645b6672
-95a8bcc5ddf8c5ddf8c5ddf8c5ddf8b1c7df7a8899626e7bb7cee7c5ddf8
-c5ddf8707d8db7cee7c5ddf8c5ddf8c5ddf8b0c5dd626e7b626e7b626e7b
-626e7b8190a2c5ddf894a6ba96a9bdc5ddf8c5ddf86c7988bbd2ecc5ddf8
-c5ddf891a2b6738190707d8d5a6571c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8a3b7cebdd4eeb4c9e2343a4296a9bdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf87a899a282d33363c447d8d9ec3dbf6c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-b4cae3a6bad1a6bad1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bbd2ecb6cce5
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4c9e2a6bad1a6bbd2c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3b0c6dec5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b8cfe8c2daf5c5ddf8c5ddf8c4dcf7b6cce5
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf88595a84f5964010101c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8758393
-4f5964c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88292a44f5964000000
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8748292b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8697584c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bad11e2226c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee24282dc1d8f3c5ddf8c5ddf8c5ddf8
-2b3036b1c7dfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8030404c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-bbd2ecb6cce5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7
-000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8000000c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3b0c6de
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c798865717fc5ddf8c5ddf8c5ddf8
-c5ddf87a899a57616dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c0d7f25b677321262a
-202428768494c5ddf8c5ddf8c5ddf8030404c1d8f3c5ddf8c5ddf8c5ddf8
-7a899a262b301e21253d454dadc2d9c5ddf8c5ddf893a5b93c434b23272c
-373e46bfd6f1c5ddf8c5ddf86673812c323824282d6d7b8ac5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89cafc44c5560444d562c3137
-8494a6c5ddf8c5ddf8bed5ef59647021262a4b545fa3b7cec5ddf8c5ddf8
-b3c9e13d444c8190a2262b302a2f35b2c8e0c5ddf875839330363d23272c
-5b6773c5ddf8c5ddf8b1c7df3e464e1c20233d444cb0c5ddc5ddf8b3c9e1
-424a53626e7b22272b5c6874c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf839414866738123272c606c79b7cee7c5ddf8c5ddf8
-343a422a2f35697685c5ddf8c5ddf8b6cce53d444c2c32384d5661434c55
-3e464ebad1ebc0d7f22f353c626e7b24282d6d7b8abed5efc5ddf8c5ddf8
-c4dcf7000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88fa1b44b555f444d568190a2c4dcf7
-c5ddf8c5ddf8c5ddf8c5ddf8c1d9f42d333964707e24282d6c7988bdd4ee
-c5ddf8c4dcf7657280212529272c318696a9c5ddf8c5ddf8b7cee7505a65
-262b30292e3492a4b8c5ddf87d8d9e2a2f3505060625292e2a2f358a9bae
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8acc1d849525c
-25292e2d3339a3b7cec5ddf86976852a2f350000002a2f352a2f359eb1c7
-c5ddf8c5ddf8515b668696a93941481b1f238190a2c5ddf85b66722a2f35
-434b54c5ddf8c5ddf8c5ddf88b9caf606c79434b54272c317d8c9dc5ddf8
-c5ddf8b0c5dd525c6824282d697584515b67c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8171a1dafc4dcc5ddf8c5ddf8
-c5ddf8c5ddf8bfd6f10c0d0fc0d7f2c5ddf8c5ddf8c5ddf8c5ddf88495a7
-899aadc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85c6874373e46
-a8bcd4bdd4ee92a3b7c5ddf8c5ddf8c5ddf8030404c1d8f3c5ddf8c5ddf8
-c5ddf898aabfb7cee7c1d9f46c7988363d45c5ddf8c5ddf82125299fb3c9
-c5ddf8a3b7cec1d9f4c5ddf89cafc52b3036bfd6f1c2daf5a3b6cdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf890a2b50000008b9caf
-abc0d721262a9fb2c8c5ddf8545e6a434b54b5cbe496a9bd24282dc5ddf8
-c5ddf8aec3db0607084a545eaabfd6a4b8cfb7cde6b0c5dd1b1e22bbd2ec
-c4dcf7a1b5cbc5ddf8c5ddf83a414955606bb7cee75b6773373e46c5ddf8
-adc3da0000007a8899b7cde6252a2f9baec3c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf81214174b545fb6cce556616c57616dc5ddf8
-c5ddf8c5ddf87583934f5964c5ddf8c5ddf8b2c8e00e1012b7cde60a0b0c
-8ea0b3464e5896a9bdbed6f0000000616d7ab5cbe4424a53707e8dc5ddf8
-c5ddf8c4dcf7000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8454e580c0d0f0000000000000b0c0e
-2d3238c1d9f4c5ddf8c5ddf8c5ddf8c1d8f30000005e6976b6cce5434c55
-6d7b8ac5ddf88495a71f2327a9bdd496a9bd0d0f11adc3dac5ddf8697584
-596470c4dcf7bad0eaabc0d7c5ddf8c5ddf8c5ddf8191c20abc0d7c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84f5964
-72808fc5ddf8b3c9e1b2c8e0c5ddf8c5ddf8c5ddf8000000c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf830363d282d328ea0b3b7cee7a3b6cdc5ddf8c5ddf8
-a6bad11e2226c5ddf8c5ddf8c5ddf87a899a0d0e109fb3c9a8bcd40f1113
-c2daf5c5ddf83c434b677482b4cae33941482c3137c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b7cde6090a0bc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf81e2125a1b5cbc5ddf8c5ddf8c5ddf8c5ddf8
-3b424a454e57c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8191c20
-8fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8030404c1d8f3c5ddf8
-c5ddf8c5ddf8bed5ef8ea0b35f6a774a535d191c20c5ddf8c5ddf8292e34
-545f6a98aabfc4dcf7c5ddf8c5ddf8a5b9d0121417768494adc3dac5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf890a2b5171a1d
-c5ddf8c5ddf85a6571697685c5ddf8101315707e8d8b9caf899aad1c2023
-a9bed5c5ddf8aec3db000000aec3dbc5ddf8c5ddf8c5ddf8b7cde60d0f11
-6f7c8ca7bcd3c5ddf8c5ddf8c5ddf8060607a7bcd3c5ddf8adc2d9030303
-c1d9f4adc3da0d0e10c3dbf6c5ddf856616c6e7b8bc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf812141795a7bbc5ddf8a2b6cc21262a
-c5ddf8c5ddf8c5ddf87583934f5964c5ddf8c5ddf8b2c8e024282dc5ddf8
-1e2125acc1d85d68757d8c9dbed6f0000000afc4dcc5ddf88899ac3c434b
-c5ddf8c5ddf8c4dcf7000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88595a80c0d0f000000000000000000
-000000090a0c63707dc5ddf8c5ddf8c5ddf8c1d8f3000000acc1d8c5ddf8
-8b9cb0394047c5ddf8505a655c6874c5ddf8c5ddf832383f7a899ac5ddf8
-72808f2a2f358495a7b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8191c20abc0d7
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-58636f3940478b9cb0bdd4eec5ddf8c5ddf8c5ddf8c5ddf8000000c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf830363d677482c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a899a3d454dc5ddf8c5ddf8
-23272ca2b6ccc1d8f30a0c0db9d0e9c5ddf88190a22c3137c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf897a9be23272cc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8383f468191a3c5ddf8c5ddf8c5ddf8
-c5ddf8b0c5ddb1c7dfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-0d0e10a8bcd4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8030404c1d8f3
-c5ddf8c5ddf8c5ddf8454e57515b6790a2b5808fa114171ac5ddf8c5ddf8
-b8cfe86c7a89171a1d212529bad1ebc5ddf8c5ddf89fb3c94e5863040505
-5f6a77c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf890a2b5
-282d32c5ddf8c5ddf86b7887515b66c5ddf80506065f6a77687583687583
-687583a9bed5c5ddf8aec3db14171ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-a9bdd458636f0607084a535dc5ddf8c0d7f2000000bad1ebc5ddf8bed5ef
-000000bad0eaadc3da1d2024c5ddf8c5ddf85d6875677482c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8121417a6bad1c5ddf8b3c9e1
-0a0b0cc4dcf7c5ddf8c5ddf87583934f5964c5ddf8c5ddf8b2c8e02b3036
-c5ddf824282db3c9e1626e7b758393bed6f0000000bed6f0c5ddf899acc1
-22272bc5ddf8c5ddf8c4dcf7000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffff9f9f9e7e7e7
-e6e6e6e5e5e5e4e4e4e2e2e2e1e1e1e0e0e0dfdfdfdedededddddddbdbdb
-dadadad9d9d9d8d8d8d7d7d7d5d5d5d4d4d4d3d3d3d2d2d2d1d1d1d0d0d0
-cecececdcdcdcccccccbcbcbcacacac9c9c9c7c7c7a1b0c198aabf97a9be
-96a9bd95a7bb94a6ba93a5b992a4b892a3b72b3036000000000000000000
-0000000000000000001f2327c5ddf8c5ddf8c5ddf8c1d8f3000000bcd3ed
-c5ddf89cafc41f2327c5ddf8464e58707e8dc5ddf8c5ddf8444d566f7c8c
-c5ddf8c4dcf7899aad363d450a0b0c8a9baec5ddf8c5ddf8c5ddf8191c20
-abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c1d8f37e8e9f2b30361013159cafc5c5ddf8c5ddf8c5ddf8000000
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf830363d92a3b7c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a899a505a65c5ddf8
-c5ddf82a2f359aadc2b7cde608090ac2daf5c5ddf88fa1b42c3137c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a3b7ce181b1f
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82d33398ea0b3c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf82f353c72808fc5ddf8c5ddf8c4dcf7c5ddf8c5ddf8c5ddf81e2226
-abc0d7c5ddf8c5ddf8c2daf50a0c0dbdd4eec5ddf8717f8e14171ac5ddf8
-c5ddf8c5ddf8c5ddf8b8cfe81f232791a2b6c5ddf8c5ddf8c5ddf8c5ddf8
-8e9fb216191cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-90a2b5060607c1d9f4c5ddf8464e588393a5c5ddf8272c317e8e9fc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8aec3db16191cc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8a2b6cc060708c0d7f2c5ddf8171a1e8fa1b4c5ddf8
-96a9bd141619c5ddf8adc3da1d2024c5ddf8c5ddf85d6875677482c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf81214178190a2c5ddf8
-8e9fb23b424ac5ddf8c5ddf8c5ddf87583934f5964c5ddf8c5ddf8b2c8e0
-2b3036c5ddf824282db3c9e1626e7b758393bed6f00000009aadc2c5ddf8
-748292545f6ac5ddf8c5ddf8c5ddf8191c20b0c5ddc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
-1a1a1a4141414242424343434444444545454747474848484949494a4a4a
-4b4b4b4c4c4c4e4e4e4f4f4f505050515151525252545454555555565656
-5757575858585a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f4e565e4b545f
-4c55604d56614e57624f5964505a65515b66515b67131518000000000000
-00000000000000000000000016191cc5ddf8c5ddf8c5ddf8c1d8f3000000
-97a9bec5ddf8768595515b67c5ddf8626e7b444d56c5ddf8c5ddf81b1f23
-8ea0b3c5ddf8c5ddf8c5ddf8c5ddf85b667249525cc5ddf8c5ddf8c5ddf8
-282d339db0c6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c2daf5434c55626e7cc5ddf8c5ddf8c5ddf8
-0f1113b7cde6c5ddf8c5ddf8c5ddf8c5ddf830363d94a6bac5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a899a505a65
-c5ddf8c5ddf82a2f359aadc2c5ddf8282d329cafc5c5ddf8636f7d2c3137
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3
-050606c0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8111316afc4dcc5ddf8
-c5ddf8c5ddf8c5ddf895a8bc8ea0b3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf89aadc2131518474f595c6874515b67c5ddf8c5ddf8c5ddf8
-6c7a8925292e4f5964b4c9e2c5ddf8404851404851525c6830363d14171a
-c5ddf8c2daf5292e3465717f5964701c2023c1d8f3c5ddf87e8e9f454e57
-6a7786363d455d6875c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf890a2b51214172c313748515b25292eb7cee7c5ddf894a6ba16191c
-4b545f5f6a77272c31b7cee7c5ddf8aec3db16191cc5ddf8c5ddf8c5ddf8
-c5ddf892a4b83d454d6a7786424a53464e58c5ddf8c5ddf8788797101315
-545f6a131518768494c5ddf8adc3da1d2024c5ddf8c5ddf85d6875677482
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf812141723272c
-545e6a1c20238797aac5ddf8a1b5cb5b6773363d4525292e5b67738a9bae
-b2c8e02b3036c5ddf824282db3c9e1626e7b758393bed6f0030303282d32
-525c681c202399acc1c5ddf8c5ddf8c5ddf8687583262b304f5964b7cde6
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-c1c1c1676767ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8667281060708
-00000000000000000000000002030349525cc5ddf8c5ddf8c5ddf8c1d8f3
-010101282d33535d691b1f2398aabfc5ddf8b1c7df14171a454e5730363d
-2e343ac4dcf7c5ddf856616c545f6a6774822125298ea0b3c5ddf8c5ddf8
-c5ddf86c7a89252a2f5a65719db0c6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8434c555b6672636f7d191c20a6bad1c5ddf8c5ddf8
-c5ddf8545e6a2e343a5b6773aabfd6c5ddf8c5ddf830363d94a6bac5ddf8
-c5ddf8c5ddf8bbd2ec5b67734e57620d0f115b6773707d8dc5ddf87a899a
-505a65c5ddf8c5ddf82a2f359aadc2c5ddf88393a51d20243f474f2f343b
-2c3137c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8333a4196a9bdc5ddf8c5ddf8c5ddf8c5ddf8a9bed51e2226c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8454e57373e46c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b5cbe48696a98495a7bad0eac5ddf8c5ddf8
-c5ddf8c5ddf8b0c6de93a5b9bed5efc5ddf8c4dcf793a5b98c9db1bad0ea
-98abc0c5ddf8c5ddf8a4b8cf7e8e9f93a5b9c1d8f3c5ddf8c5ddf8bed6f0
-92a3b77d8c9da8bcd4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf890a2b5343a42a1b5cb8d9eb1c4dcf7c5ddf8c5ddf8c5ddf8
-b4cae38595a88191a3adc3dac5ddf8c5ddf8bfd6f199acc1c5ddf8c5ddf8
-c5ddf8c5ddf8c1d9f497a9be7c8b9ca1b5cbc5ddf8c5ddf8c5ddf8c5ddf8
-9fb3c97d8c9d9fb2c8c5ddf8c5ddf8bfd6f19baec3c5ddf8c5ddf8abc0d7
-adc3dac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8121417
-a3b6cd8494a6b8cfe8c5ddf8c5ddf8b4cae393a5b993a5b993a5b993a5b9
-a9bdd4c0d7f29fb2c8c5ddf89cafc5c1d8f3acc1d8b1c7dfbed6f0060607
-afc4dc8595a8bed5efc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c5dd93a5b9
-bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffc2c2c2656565ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1
-1c2024040505000000000000020202121416b6cce5c5ddf8c5ddf8c5ddf8
-c1d8f3030404b0c5dd8495a7bdd4eec5ddf8c5ddf8c5ddf8b5cbe48292a4
-8a9baec0d7f2c5ddf8c5ddf8b6cce58899ac8292a4b4cae3c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8b6cce594a6bab2c8e0c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b0c6de8494a68798abbad0eac5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8b0c6de94a6bab8cfe8c5ddf8c5ddf89fb3c9b9d0e9
-c5ddf8c5ddf8c5ddf8c0d7f293a5b993a5b993a5b993a5b99db0c6c5ddf8
-b2c8e0a8bcd4c5ddf8c5ddf89eb1c7bad1ebc5ddf8c5ddf8bdd4eea0b4ca
-8292a4515b67c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf893a5b9424a53c5ddf8c5ddf8c5ddf8c5ddf856616c7e8e9f
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf81f23278292a4c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf890a2b5343a42c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-121417b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed6f0
-060607c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffc4c4c4646464ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8bad0ea49525c131618111416404851b3c9e1c5ddf8c5ddf8c5ddf8
-c5ddf8c1d8f3030404c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf890a2b58899ac
-8b9cb02a2f3590a2b5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf857616dbed5efc5ddf8c5ddf8c4dcf7535d69
-c2daf5c5ddf8c5ddf8c5ddf8c5ddf8bad1eb3f474fc4dcf7c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1bbd2ec
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8a9bdd4788797c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf895a7bb6e7b8b6e7b8b6e7b8b6e7b8b738291c5ddf8
-c5ddf8657280bbd2ecc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c1d9f45f6b78c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffc5c5c5636363ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c3dbf65e6976c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a7bb6e7b8b
-6e7b8b6e7b8b6e7b8b738291c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a2b6cc
-5c68745e6976a6bad1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8434b542e343a
-92a3b7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffc6c6c6616161ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b3c9e1141619
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffc8c8c8606060ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89eb1c7
-262b30c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffc9c9c95f5f5fffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8bdd4ee8899acb4c9e2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-8d9eb1323940c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffcacaca5d5d5dffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8bcd3ed677482141619a9bdd4c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-7482922c31377d8d9ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffcbcbcb5c5c5c
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8545f6a768595c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf88393a530363d717f8ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffcdcdcd
-5b5b5bffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85f6a776c7988c5ddf8
-c5ddf8c5ddf8c5ddf8bed5ef363d459baec3c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf88fa1b42f353cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-cecece5a5a5affffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87482924b545f
-c5ddf8c5ddf8c5ddf8c5ddf8bcd3ed11131690a2b5c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf89eb1c7262b30c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffcfcfcf585858ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b6cce5
-282d322c3137b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b6cce5121417c4dcf7c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd1d1d1575757ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-8e9fb2272c319fb3c9c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84f59642d33398c9db1
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd2d2d2565656ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8636f7d64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf84b545f95a7bb
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8bed5efb4cae3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd3d3d3545454ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf85e69766c7a89c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1000000
-8797aac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd4d4d4535353ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8bbd2ec333a4191a2b6c5ddf8c5ddf8c5ddf8c5ddf893a5b9
-1e2125c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd6d6d6525252ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8b4cae33940475f6b78bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8
-95a8bc95a7bbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b2c8e0394148c5ddf8c5ddf8c5ddf83f474facc1d8c5ddf88a9bae
-282d32202428626e7cc4dcf7c5ddf8aabfd62a2f352a2f358e9fb2c5ddf8
-c5ddf8c5ddf8a9bdd44a535d262b3057616d404851c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd7d7d7505050ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8262b309baec3c5ddf8a3b6cd1e2226c5ddf8b1c7df
-0a0c0d92a3b7abc0d7262b307f8fa0c5ddf8c5ddf8c5ddf8474f597d8d9e
-c5ddf8c5ddf8c5ddf8282d327f8fa0afc4dc2a2f35404851c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd8d8d84f4f4f
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf86c7a8957616dc5ddf85f6a7765717fc5ddf8
-8393a5292e34c5ddf8c5ddf865717f47505ac5ddf8c5ddf8c5ddf8474f59
-7d8d9ec5ddf8c5ddf8b6cce50d0e10c4dcf7c5ddf86a7786404851c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffdadada
-4e4e4effffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7df16191cc3dbf61b1f23abc0d7
-c5ddf87988983d454dc5ddf8c5ddf87786963c434bc5ddf8c5ddf8c5ddf8
-474f597d8d9ec5ddf8c5ddf8a2b6cc1b1f23c5ddf8c5ddf87d8c9d404851
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-dbdbdb4d4d4dffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8343a426a77862c3238
-c5ddf8c5ddf895a7bb121417c5ddf8c5ddf84e58635b6773c5ddf8c5ddf8
-c5ddf8474f597d8d9ec5ddf8c5ddf8c4dcf7101315bad1ebc5ddf8545e6a
-404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffdcdcdc4b4b4bffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87b8a9b050606
-738291c5ddf8c5ddf8c5ddf83239402c313748515b141619adc3dac5ddf8
-8899ac5b67732125293a41495b6773a3b6cdc5ddf8616d7a25292e4c5560
-1c2023404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffdedede4a4a4affffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef
-93a5b9bbd2ecc5ddf8c5ddf8c5ddf8c1d8f38b9caf8191a3b4c9e2c5ddf8
-c5ddf8a9bdd493a5b993a5b993a5b993a5b9b4cae3c5ddf8c5ddf8a9bed5
-8899acb2c8e0a4b8cfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffdfdfdf494949ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffe0e0e0474747ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8bad0eaaec3dbc5ddf8c5ddf8c5ddf8bed6f0b3c9e1
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7b6cce5c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b7cee7bad0eac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-b8cfe8c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffe1e1e1464646ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd1e4f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c6ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf84e5762282d32414952c5ddf8c5ddf8c5ddf891a2b6
-333a41c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8697685
-c4dcf7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88595a857616dc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a2b6cc8b9cb0
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf85b6672697685c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf86e7b8b6e7b8bc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-fffffffffffffffffffffffffffffffffffff6f6f6f1f1f1ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd7d7d7353535ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffe3effcc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8d6e7faffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8bad0ea131518c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-bed6f0b3c9e1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-020202c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7262b30abc0d7c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87a899a
-4a535dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8b7cee7bad0eac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8bad0ea1e2125bed6f0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffe7e7e7999999404040646464fcfcfcffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffc3c3c3151515ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffbfdffd6e7fac5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8d3e5faf4f8feffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8545e6a25292e0506062a2f35363c44c5ddf8c5ddf8
-4a545e2a2f35535d69c5ddf8c5ddf8c5ddf8c5ddf86774827d8d9e434c55
-1b1e226a7786c5ddf8adc2d94a535d25292e2c3238a2b6ccc5ddf86b7887
-2a2f350000002a2f352a2f359cafc5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf82f353c74829223272c515b66bad0eac5ddf8a8bcd4
-363c441d20242b30368494a6c5ddf8a4b8cf424a53252a2f596470363c44
-4a545ec3dbf6c5ddf895a8bc32383f292e34768595c1d8f3c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf894a6ba31373ec5ddf8
-c5ddf8c5ddf8c5ddf88393a5363c4423272c49525cc5ddf8c5ddf82f343b
-1a1d211012142a2f353e464ec5ddf8c5ddf8b1c7df3e464e7f8fa0252a2f
-2a2f35b4c9e2bad1eb2a2f352a2f357d8d9ec5ddf8c5ddf8c5ddf8505a65
-7482922b30363d444ca6bad1c5ddf8c5ddf890a2b531373e363d455f6a77
-8a9baec5ddf8c5ddf8c5ddf848515b7d8c9dc5ddf8c5ddf8c5ddf8c5ddf8
-a7bcd3687583c3dbf6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffd2d2d27c7c7c242424121212030303434343fcfcfcffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6131313
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffafcfe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef8fbfeffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed51b1e22c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8c5ddf84d56611a1d21
-8292a4b9d0e99eb1c7c5ddf8515b67707d8dc5ddf8b4c9e2b1c7dfc5ddf8
-c5ddf8c5ddf8020202c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf802020264707ebad0ea3a41498191a3c5ddf8
-adc3daa3b6cdc5ddf8a8bcd40a0b0cb1c7df9baec321262aaec3db000000
-a5b9d02f353cadc3daadc3da0d0e1092a4b8b8cfe84048518595a8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86e7b8b515b66
-c5ddf8c5ddf8c5ddf8bdd4ee16191cb3c9e1c5ddf8a0b4cac5ddf8c5ddf8
-c5ddf87a899a4a535dc5ddf8c5ddf8c5ddf8c5ddf8acc1d80708094b545f
-abc0d7a3b7ceb8cfe8c5ddf8c5ddf85b6672697685c5ddf8c5ddf8c5ddf8
-2f353c3f474fb7cde6626e7c535d69c5ddf8b5cbe41013159fb2c89cafc4
-0a0c0d768595c5ddf8c5ddf8c5ddf868758357616dc5ddf8c5ddf8c5ddf8
-c5ddf88595a8000000c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3
-91a2b64b545d1717171313130303030000000808083a3a3af9f9f9ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffc9c9c9
-131313ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed51b1e22c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8c5ddf84d5661
-4a545ec5ddf8c5ddf8c5ddf8c5ddf85b6672373e468b9cafbdd4eec5ddf8
-c5ddf8c5ddf8c5ddf8020202c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8020202b6cce5c5ddf8707e8d545f6a
-c5ddf8c5ddf8a2b6cc6d7b8a55606b13151897a9be9baec33b424ac5ddf8
-08090ac1d9f4464e5893a5b972808f2b30368b9cb08a9bae5f6b7848515b
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84e5863
-6b7887c5ddf8c5ddf8c5ddf8c1d9f4121417657280a0b4cac5ddf8c5ddf8
-c5ddf8c5ddf87a899a4a535dc5ddf8c5ddf8c5ddf8c5ddf8acc1d8000000
-b0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf85b6672697685c5ddf8c5ddf8
-c5ddf82f353c8899acc5ddf89fb2c8262b30c5ddf8808fa13f474fc5ddf8
-c5ddf8363c44768595c5ddf8c5ddf8c5ddf88292a4373e46c5ddf8c5ddf8
-c5ddf8c5ddf8bbd2eca6bad1c5ddf8c5ddf8c5ddf8b8cfe8667381282d32
-0a0b0c090a0b0000000000000000000000000404041e1e1e909090909090
-8b8b8b8686868282827d7d7d7878787373736e6e6e6969696464645f5f5f
-5a5a5a5555555151514c4c4c4747474242423d3d3d3838383333332e2e2e
-222222121212ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed51b1e22c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8c5ddf8
-4d5661768494c5ddf8c5ddf8c5ddf8c5ddf8c1d9f47f8fa02c3137101214
-9baec3c5ddf8c5ddf8c5ddf8020202c2daf5c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8050606c5ddf8c5ddf8768595
-4e5762c5ddf88d9eb1272c318292a499acc11e212592a3b79baec3424a53
-c5ddf8111316c5ddf84a545e8c9db16572802b3036687583687583687583
-7c8b9cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-5b6773606c79c5ddf8c5ddf8c5ddf8c5ddf8b0c6de626e7b0d0e10333a41
-c5ddf8c5ddf8c5ddf87a899a4a535dc5ddf8c5ddf8c5ddf8c5ddf8acc1d8
-171a1dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85b6672697685c5ddf8
-c5ddf8c5ddf82f353c9baec3c5ddf8a5b9d01f2327c5ddf86d7b8a4e5863
-c5ddf8c5ddf8454e57768595c5ddf8c5ddf8c5ddf8778696444d56c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed6f072808f171a1d
-0202030506060000000000000000000000000000000505051e1e1e8c8c8c
-9696969b9b9ba0a0a0a5a5a5a9a9a9aeaeaeb3b3b3b8b8b8bdbdbdc2c2c2
-c6c6c6cbcbcbd0d0d0d5d5d5dadadadfdfdfe3e3e3e8e8e8edededf2f2f2
-f7f7f7e0e0e0444444ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed51b1e22
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf891a2b6333a41c5ddf8c5ddf8c5ddf8
-c5ddf84d5661778696c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c3dbf6
-454e57606c79c5ddf8c5ddf8c5ddf8111316b4cae3c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8050606c5ddf8c5ddf8
-7685954e5762c5ddf84d5661778696c5ddf8b7cde602020292a3b79baec3
-424a53c5ddf8111316c5ddf84a545e8c9db1899aad1d2024c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf87c8b9c454e57c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db
-0d0e10adc3dac5ddf8c5ddf88a9bae3c434bc5ddf8c5ddf8c5ddf8c5ddf8
-acc1d8181b1fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85b6672697685
-c5ddf8c5ddf8c5ddf82f353c9baec3c5ddf8a5b9d01f2327c5ddf8a3b6cd
-22272bc4dcf7c4dcf71a1d21768595c5ddf8c5ddf8c5ddf85b677365717f
-c5ddf8c5ddf8c5ddf8c5ddf8b1c7df7a899abdd4eec5ddf8c5ddf8c5ddf8
-c5ddf8c1d8f396a9bd5964701d21251313130e0e0e000000000000080808
-323232f3f3f3ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffe5e5e5424242ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed5
-1b1e22c5ddf8c5ddf8c5ddf8b0c5dd5b6773434c55171a1e5b67737b8a9b
-c5ddf8c5ddf84d5661778696c5ddf8c5ddf8c5ddf8c5ddf8454e575a6571
-64707e191c20a4b8cfc5ddf8c5ddf8c5ddf856616c2d33395b6773a9bed5
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8050606c5ddf8
-c5ddf87685954e5762c5ddf88798ab1e2226616d7a2a2f351a1d2192a3b7
-9baec3424a53c5ddf8111316c5ddf84a545e8c9db1c4dcf73d454d272c31
-626e7b48515b5f6b78c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8adc3da1e2125c4dcf7c5ddf8c5ddf8a7bcd3343a42687583
-4e58632f343bc5ddf8c5ddf8c5ddf8bdd4ee181b1f4a535d697685c5ddf8
-c5ddf8acc1d8181b1fc5ddf8c5ddf8c5ddf8c5ddf893a5b95b67732a2f35
-31373e5b677398aabfc5ddf82f353c9baec3c5ddf8a5b9d01f2327c5ddf8
-c5ddf847505a282d332c3137282d32768595c5ddf8c5ddf8c5ddf82e343a
-99acc1c5ddf8c5ddf8c5ddf8c5ddf88fa1b4000000b2c8e0c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8f1f1f1b0b0b05d5d5d1b1b1b
-1515150404042b2b2bf1f1f1ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffe8e8e83f3f3fffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-bed6f09aadc2c5ddf8c5ddf8c5ddf8bbd2ec93a5b993a5b993a5b993a5b9
-a2b6ccc5ddf8c5ddf8a7bcd3b1c7dfc5ddf8c5ddf8c5ddf8c5ddf8b0c6de
-8495a78797aab9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7df94a6ba
-b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a7bb
-c5ddf8c5ddf8b1c7dfa7bcd3c5ddf8c5ddf8acc1d88292a4afc4dca0b4ca
-b8cfe8bad1eba4b8cfc5ddf898aabfc5ddf8a6bbd2b7cde6c5ddf8c5ddf8
-98abc07c8b9c93a5b9c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf84b545f8b9cafc5ddf8c5ddf8c3dbf69cafc5
-7d8c9d9baec3c3dbf6c5ddf8c5ddf8c5ddf8c5ddf8c3dbf69fb3c99aadc2
-c5ddf8c5ddf8bed6f09aadc2c5ddf8c5ddf8c5ddf8c5ddf8adc3da93a5b9
-93a5b993a5b993a5b9b0c5ddc5ddf89fb3c9bad1ebc5ddf8bdd4ee9cafc4
-c5ddf8c5ddf8c5ddf8aabfd6b1c7df3941489cafc5c5ddf8c5ddf8a0b4ca
-343a42c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8697685383f46c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffe3e3e39d9d9d4a4a4a4c4c4cedededffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeaeaea3d3d3dffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed56b7887c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf873829196a9bd7381901e2226c4dcf7c5ddf8c5ddf8
-7a899a9aadc2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85a65719eb1c7c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-fffffffffffffffffffffffffffffffffffff3f3f3ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffededed3b3b3bffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf88b9caf6e7b8b6e7b8b6e7b8b6e7b8b7d8d9ec5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf87e8e9f525c68778696bad1ebc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffefefef383838ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff1f1f1363636ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff9fcfe
-e0edfbcde2f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9
-cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9cce1f9d7e8faf2f7fd
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffff4f4f4333333
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d8e8fac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-cce1f9feffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff6f6f6
-313131ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfe
-fafcfefafcfefafcfefafcfefafcfefafcfefafcfefafcfefefeffffffff
-ffffffc6def8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8f1f7fdffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f9f9f92f2f2fffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-d1e4f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c9e0f9
-e2eefbffffffc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffbfbfb2c2c2cffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffefeff
-cae0f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8f3f8fec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffdfdfd2a2a2affffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f2f7fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8e0edfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffff282828ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffff282828ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff282828ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff282828ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5efb4cae3c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffff282828ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8474f597d8d9e
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff282828
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4
-bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-282828ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b2c8e0394148c5ddf8c5ddf8c5ddf83f474f
-acc1d8c5ddf88a9bae282d32202428626e7cc4dcf7c5ddf8aabfd62a2f35
-2a2f358e9fb2c5ddf8c5ddf8c5ddf8a9bdd44a535d262b3057616d404851
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffff282828ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8bed5efa6bad1a6bad1bad1ebc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9
-b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c3dbf6aec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bdd4eea6bad1
-a6bad1bbd2ecc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8262b309baec3c5ddf8a3b6cd
-1e2226c5ddf8b1c7df0a0c0d92a3b7abc0d7262b307f8fa0c5ddf8c5ddf8
-c5ddf8474f597d8d9ec5ddf8c5ddf8c5ddf8282d327f8fa0afc4dc2a2f35
-404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff282828ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8aabfd64f59641a1d218393a5c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-64707e667381c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b3c9e1111316c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a7bcd3
-4f5964181b1f8798abc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7a8957616dc5ddf8
-5f6a7765717fc5ddf88393a5292e34c5ddf8c5ddf865717f47505ac5ddf8
-c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8b6cce50d0e10c4dcf7c5ddf8
-6a7786404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffff282828ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84149528393a5c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf864707e667381c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c3dbf6aec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf83d444c8798abc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88899ac7482928494a6
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad0ea748292748292a3b7ce
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf897a9bea9bdd4c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf88797aa7482928696a9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7df16191c
-c3dbf61b1f23abc0d7c5ddf87988983d454dc5ddf8c5ddf87786963c434b
-c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8a2b6cc1b1f23c5ddf8
-c5ddf87d8c9d404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffff282828ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-8494a62a2f351b1f23444d56c5ddf8c5ddf8c5ddf84149528393a5c5ddf8
-c5ddf8c5ddf8a2b6cc333a411d20242c32388b9cafc5ddf8c5ddf8b3c9e1
-4d5661252a2f2b303698abc0c5ddf8c5ddf88c9db139404723272c3c434b
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a3b7ce
-414952292e346774826b7887c5ddf8c5ddf87f8fa02a2f35333a418797aa
-c5ddf8c5ddf85c687472808f2e343a363d459eb1c7c5ddf8c5ddf898abc0
-383f4630363d49525c667381c5ddf8c4dcf76e7b8b262b303d444c93a5b9
-c5ddf8c5ddf8c5ddf8353b438d9eb12f353c2125299baec3c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8697685626e7b2b3036424a53a3b6cd
-c5ddf8c5ddf865717f2a2f35394047c5ddf8c5ddf8c5ddf84c5560454e57
-282d33626e7b2c32389cafc4c5ddf855606b64707e252a2f4e5863adc2d9
-c5ddf8c5ddf8c5ddf83d444c8798abc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf892a3b7697584
-25292ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bbd2ec8190a2363d45
-717f8ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85b66728292a4c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf890a2b5657280292e34c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-343a426a77862c3238c5ddf8c5ddf895a7bb121417c5ddf8c5ddf84e5863
-5b6773c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8c4dcf7101315
-bad1ebc5ddf8545e6a404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffff282828ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-99acc11416198fa1b4c2daf58b9cafc5ddf8c5ddf8c5ddf84149528393a5
-c5ddf8c5ddf8c5ddf8a9bed5a6bad1c5ddf8a2b6cc090a0bb8cfe8c5ddf8
-5f6a77626e7cc4dcf7b7cee7adc3dac5ddf8c2daf5191c20a9bed5c5ddf8
-9fb3c9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-1b1e228595a8adc2d922272b4d5661c5ddf892a3b7181b1fa2b6ccb0c5dd
-262b30a9bdd4c5ddf83f474f333a41b4c9e2717f8e434c55c5ddf8bfd6f1
-1113169aadc2a1b5cb131518667381c5ddf8788797282d33abc0d7a7bcd3
-1b1f23bcd3edc5ddf8c5ddf80d0e103b424a9db0c6b0c5ddabc0d7c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8505a651f2327aabfd68d9eb1
-191c20c5ddf8c5ddf8c5ddf8b3c9e1111316c5ddf8c5ddf8c5ddf82a2f35
-8fa1b4414952515b668494a658626ec5ddf8363d4530363db1c7df768494
-323940c5ddf8c5ddf8c5ddf83d444c8798abc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7b0c5ddb8cfe8c5ddf8c5ddf8c5ddf8
-9fb3c925292ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4cae3b1c7dfc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bed5efafc4dcc4dcf7c5ddf8c5ddf8c5ddf8
-c5ddf8b4c9e2b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c2daf5c1d9f4bed5efbdd4eec5ddf8c5ddf8c5ddf8c5ddf8
-c4dcf7b4c9e2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b8cfe8b5cbe4c5ddf8
-c5ddf8c5ddf8c1d9f4c2daf5bad1ebc1d8f3c5ddf8c5ddf8c5ddf8c5ddf8
-535d69717f8ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bbd2ecbcd3edc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1
-c4dcf7b7cde6c5ddf8c5ddf8c5ddf8c4dcf7bed6f0bed6f0c2daf5c5ddf8
-c5ddf8c3dbf6c1d9f4b4cae3c4dcf7b9d0e9c3dbf6c5ddf8c4dcf7c0d7f2
-c2daf5b8cfe8c5ddf8c5ddf8c5ddf8c5ddf89baec3292e34c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf87b8a9b050606738291c5ddf8c5ddf8c5ddf83239402c313748515b
-141619adc3dac5ddf88899ac5b67732125293a41495b6773a3b6cdc5ddf8
-616d7a25292e4c55601c2023404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff282828ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf857616d515b66c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8414952
-8393a5c5ddf8c5ddf8c5ddf8c4dcf79fb2c86b788755606b0e1012a1b5cb
-c5ddf86875832f353c8798abbad1ebc5ddf8c5ddf8c5ddf81e21255c6874
-9baec3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-a9bed516191cc5ddf8c5ddf85f6b784d5661c5ddf84e5863444d568b9cb0
-899aad474f596c7988c5ddf83f474f788797c5ddf8aec3db171a1dc5ddf8
-91a2b630363dc5ddf8c5ddf8444d56667381c5ddf8353b4357616d8b9caf
-899aad353b438595a8c5ddf8c5ddf80d0e108b9cafc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8505a6557616dc5ddf8
-c5ddf81b1e22a9bed5c5ddf8c5ddf8b3c9e1111316c5ddf8c5ddf8c5ddf8
-2a2f35acc1d85b67736e7b8b9baec33e464ec5ddf8363d45707e8dc5ddf8
-c1d8f30a0c0dbed5efc5ddf8c5ddf83d444c8798abc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf89baec3171a1d23272c21262a7b8a9bc5ddf8
-c5ddf89fb3c925292ec5ddf8c5ddf8c5ddf8c5ddf8363c442c31372b3036
-212529a9bdd4c5ddf8c5ddf8505a652d3339383f46363c44c5ddf8c5ddf8
-b0c5dd2a2f35363d452b3036758393c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf86673812f343b1b1f231f23276c7a89c5ddf8c5ddf8
-96a9bd171a1d282d3331373e99acc1c5ddf8c5ddf84e576210121416191c
-3d444cc1d9f4c5ddf84d5661333a411e21252024287e8e9fc5ddf8c5ddf8
-c5ddf8535d69717f8ec5ddf8c5ddf8c5ddf8c1d9f44a535d14171a282d32
-58636fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db
-0f11132a2f3522272b434c55b4cae3c5ddf8afc4dc30363d121417798898
-c5ddf8c5ddf8899aad1b1e2221262a2f353c2b30362c3137c5ddf895a7bb
-1d202420242821262a505a65bed5efc5ddf8c5ddf89baec3292e34c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8bed5ef93a5b9bbd2ecc5ddf8c5ddf8c5ddf8c1d8f38b9caf
-8191a3b4c9e2c5ddf8c5ddf8a9bdd493a5b993a5b993a5b993a5b9b4cae3
-c5ddf8c5ddf8a9bed58899acb2c8e0a4b8cfc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff282828ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf84a545e6a7786c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-4149528393a5c5ddf8c5ddf8c5ddf88494a62c32388495a799acc116191c
-9cafc4c5ddf8c3dbf68495a732383f0c0d0f92a3b7c5ddf8c5ddf8b5cbe4
-687583111316282d32c0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf897a9be25292ec5ddf8c5ddf86e7b8b4d5661c5ddf8424a533d454d
-6875836875836875838d9eb1c5ddf83f474f8b9cb0c5ddf8b4cae3101214
-c5ddf87b8a9b414952c5ddf8c5ddf857616d667381c5ddf8282d334b545f
-68758368758368758398abc0c5ddf8c5ddf80d0e10b5cbe4c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8505a65687583
-c5ddf8c5ddf82b303690a2b5c5ddf8c5ddf8b3c9e1111316c5ddf8c5ddf8
-c5ddf82a2f35b2c8e0626e7b7482929fb3c9363d45c5ddf8363d458191a3
-c5ddf8c5ddf8111316aabfd6c5ddf8c5ddf83d444c8798abc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c4dcf71b1f237d8c9dc5ddf8c5ddf8b3c9e1
-c5ddf8c5ddf89fb3c925292ec5ddf8c5ddf8c5ddf8c5ddf8b7cde6c5ddf8
-c5ddf864707e535d69c5ddf8afc4dc15181bc5ddf8c5ddf8bfd6f1c5ddf8
-c5ddf86572805f6a77c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf86673811e2226bed6f0bbd2ec14171ab8cfe8
-c1d8f316191c8ea0b3c5ddf89baec33b424ac5ddf891a2b6171a1ebcd3ed
-c1d8f32c31377d8c9dc5ddf84d5661353b43c2daf5b2c8e0121417c4dcf7
-c5ddf8c5ddf8535d69717f8ec5ddf8c5ddf8c5ddf873819030363dc1d9f4
-c4dcf7373e469fb3c9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-aec3db00000096a9bdc5ddf8515b66738190c5ddf8c5ddf8c5ddf84b545f
-798898c5ddf8c5ddf8899aad3f474facc1d8030303c3dbf6282d32b9d0e9
-95a7bb000000afc4dcc3dbf63940478c9db1c5ddf8c5ddf89baec3292e34
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffff282828ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf86d7b8a343a42c5ddf8c5ddf8c4dcf7c5ddf8c5ddf8
-c5ddf85c68746d7b8ac5ddf8c5ddf8c5ddf8434b548191a3c5ddf8afc4dc
-0000009cafc4c5ddf8c5ddf8c5ddf8c4dcf7515b67535d69c5ddf8c5ddf8
-c5ddf8c5ddf8b4cae3171a1d9db0c6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c1d9f40d0f11bad1ebc5ddf8424a534d5661c5ddf8657280
-404750c5ddf8c5ddf8c5ddf8c5ddf8c5ddf83f474f8b9cb0c5ddf8b4cae3
-101214c5ddf8adc3da1c2023c5ddf8c5ddf82e343a667381c5ddf84b545f
-5a6571c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf80d0e10b7cee7c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8505a65
-424a53c5ddf8c3dbf60d0f11bdd4eec5ddf8c5ddf8b3c9e1111316c5ddf8
-c5ddf8c5ddf82a2f35b2c8e0626e7b7482929fb3c9363d45c5ddf8363d45
-5c6874c5ddf8b2c8e0171a1dc5ddf8c5ddf8c5ddf857616d72808fc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db070809bed6f0c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf89fb3c925292ec5ddf8c5ddf8c5ddf8c5ddf895a7bb
-525c682c31371d2024404750c5ddf8c3dbf624282d3a4149738190bad1eb
-c5ddf8c5ddf895a7bb171a1d515b668d9eb1c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86673814a545ec5ddf8c5ddf83a4149
-8696a9a6bad10606075b667258636f57616d0a0c0dbed6f06b788747505a
-c5ddf8c5ddf85d6875535d69c5ddf84d566164707ec5ddf8c5ddf8212529
-9fb3c9c5ddf8c5ddf8535d69717f8ec5ddf8c5ddf8c5ddf8424a53343a42
-5a657158626e2e343a64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8aec3db060607c1d9f4c5ddf88292a43e464ec5ddf8c5ddf8c5ddf8
-4b545f798898c5ddf8c5ddf8899aad515b66bed5ef131518c5ddf8363c44
-a2b6cc95a7bb1c2023c5ddf8c5ddf869758458626ec5ddf8c5ddf89baec3
-292e34c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8a9bdd4a6bad1b1c7dfc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8b8cfe8c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3b0c6dec5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1bad1ebc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff282828
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee282d332c3238626e7c2d3339c5ddf8
-c5ddf8c5ddf89fb2c81b1f234b545f8fa1b4c5ddf87e8e9f22272b606c79
-2b303616191c9cafc4c5ddf84e586357616d6572801e212598aabfc5ddf8
-b6cce52e343a66738155606b22272bc4dcf7c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf86a77861e2226373e462c32384d5661c5ddf8
-bad0ea252a2f343a42636f7d3d454d7d8d9ec5ddf83f474f8b9cb0c5ddf8
-b4cae3101214c5ddf8c5ddf83e464e353b433d444c181b1f667381c5ddf8
-acc1d81c20233e464e626e7c343a4295a7bbc5ddf8c5ddf80d0e10b7cee7
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-505a65171a1e474f592a2f35535d69c5ddf8c1d9f45b6773535d6908090a
-5b6773697584c5ddf82a2f35b2c8e0626e7b7482929fb3c9363d45c5ddf8
-363d451b1f234e586322272b697685c5ddf8c5ddf8c5ddf89baec31b1f23
-4c556092a3b7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db070809bed6f0c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8a1b5cb23272cc5ddf8c5ddf8c5ddf8bed5ef
-171a1d9cafc5c3dbf67382913d454dc5ddf8c5ddf8c3dbf68ea0b323272c
-191c20c4dcf7c5ddf8c5ddf8b7cde66c7a89070809626e7cc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86673814a535dc5ddf8c5ddf8
-3a41498494a6a6bad10b0d0e98abc099acc199acc199acc1c1d9f46b7887
-474f59c5ddf8c5ddf85d6875535d69c5ddf84d5661636f7dc5ddf8c5ddf8
-2125299db0c6c5ddf8c5ddf8545e6a707e8dc5ddf8c5ddf8c5ddf8424a53
-58636f99acc199acc199acc1acc1d8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8aec3db060607c1d9f4c5ddf88292a43b424ac5ddf8c5ddf8
-c5ddf84b545f798898c5ddf8c5ddf8899aad545e6ac1d8f316191cc5ddf8
-3940479eb1c795a7bb1b1f23c5ddf8c5ddf869758455606bc5ddf8c5ddf8
-9cafc4282d33c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8596470333a41464e58c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88c9db1a1b5cbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8bed5ef24282dc0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8697584c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bad11e2226
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4c9e22a2f35c4dcf7
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8fffffff5f5f5ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-282828ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d9f491a2b67d8d9ea9bdd4
-c5ddf8c5ddf8c5ddf8c5ddf8bed6f095a8bcaec3dbc5ddf8c5ddf8a9bdd4
-8393a5b1c7df9eb1c7bad1ebc5ddf8b4c9e28797aa8495a7b7cde6c5ddf8
-c5ddf8c5ddf8a0b4ca7d8c9d96a9bdc1d9f4c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4cae3a7bcd3626e7c738190
-c5ddf8c5ddf8c1d8f390a2b57c8b9c9cafc4c4dcf7c5ddf8a3b7ceb7cde6
-c5ddf8c1d8f398aabfc5ddf8c5ddf8c5ddf89baec393a5b9adc2d9adc3da
-c5ddf8c5ddf8bcd3ed8b9cb07d8d9ea3b6cdc5ddf8c5ddf8c5ddf897a9be
-c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8505a6572808f8b9cb0a3b7cec5ddf8c5ddf8c4dcf793a5b993a5b9
-93a5b993a5b999acc1c5ddf89eb1c7c0d7f2acc1d8b0c6debbd2eca1b5cb
-c5ddf8363d458797aa8797aaadc3dac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-bed5ef95a7bbb0c5ddc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf71b1f237d8c9d
-c5ddf8c5ddf8b3c9e1c5ddf8c5ddf8bfd6f1111316bad0eac5ddf8c5ddf8
-a5b9d01e2125c5ddf8c0d7f232383f3d454dc5ddf8bcd3edbfd6f1c5ddf8
-bad0ea0d0f11bad1ebc5ddf8b6cce5c5ddf8c5ddf8768494474f59c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86673811e2125bdd4ee
-bad0ea141619b7cee7c1d8f316191c8b9cb0c5ddf8c5ddf8b1c7dfc5ddf8
-92a4b816191cbad0eabfd6f12a2f357e8e9fc5ddf84d5661323940c1d9f4
-b0c5dd111316c4dcf7c5ddf8c5ddf87d8c9d49525cc5ddf8c5ddf8c5ddf8
-73819030363dbed6f0c5ddf8c0d7f2b6cce5c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8aec3db00000093a5b9c5ddf84e586372808fc5ddf8
-c5ddf8c5ddf84b545f798898c5ddf8c5ddf8899aad545e6ac1d8f316191c
-c5ddf83940479eb1c795a7bb000000acc1d8c2daf5363d458b9cb0c5ddf8
-c5ddf8bdd4ee111316bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f464e58c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84c5560788797c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf86e7b8b626e7cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8000000c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3
-b0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525c
-8798abc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-bed5ef8b9caf485059555555f0f0f0ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffff292929ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88292a48fa1b48292a41c2023
-afc4dcc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8505a65748292c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8363d458e9fb2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89cafc4
-1b1e2223272c24282d7c8b9cc5ddf8c5ddf8c5ddf8707e8d1e2226282d33
-c5ddf8c5ddf8454e57282d321b1f234a535d3d454dc5ddf8a1b5cb171a1e
-383f46282d33657280c5ddf8c5ddf85f6b7821262a373e46292e349eb1c7
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86673812d3339
-191c201e22266c7a89c5ddf8c5ddf897a9be191c20262b30252a2f394148
-c5ddf8c5ddf84e57620f111315181b3d444cc1d9f4c5ddf84d566131373e
-1c20231f23277e8e9fc5ddf8c5ddf8c5ddf8b8cfe84047501b1e22697685
-c5ddf8c1d9f44e57620e101232383f1b1f2390a2b5c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8aec3db0e1012272c3121262a434c55b4cae3
-c5ddf8707d8d2a2f351012141a1d212a2f358ea0b3899aad545e6ac1d8f3
-16191cc5ddf83940479eb1c795a7bb1d20241d2024202428505a65bed5ef
-c5ddf8c5ddf8c5ddf86c7a891e21252d3339c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f464e58c5ddf8
-c5ddf8c5ddf8c4dcf7444d561e222624282d616d7ac2daf5c5ddf8c5ddf8
-6673812c323824282d6d7b8ac5ddf8a6bad12a2f351012141a1d212a2f35
-626e7cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8667381
-707d8d32383f32383f98aabfc5ddf8c5ddf855606b20242821262a545f6a
-bed6f0c5ddf8434c55444d562c32385f6a772f343ba1b5cbc5ddf8b7cde6
-4d566121252956616cadc3dac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8191c20adc2d9c5ddf8c5ddf8c5ddf8acc1d8
-49525c25292e2d3339a3b7cec5ddf86976852a2f350000002a2f352a2f35
-9eb1c7c5ddf8c5ddf8515b668696a93941481b1f238190a2c5ddf85a6571
-2a2f35434b54c5ddf8c5ddf8c5ddf88b9caf606c79434b54272c317d8c9d
-c5ddf8c5ddf8b0c5dd525c6824282d697584525c68c5ddf8c5ddf8c5ddf8
-93a5b9323940c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86d7b8aa0b4cac5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8adc2d9707d8d
-292f340c0e0f0304041e2225f0f0f0ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff2b2b2bfdfdfdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf893a5b957616d687583
-b0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c5dd6e7b8b6e7b8b6e7b8b6e7b8b
-6e7b8bafc4dcc5ddf88797aa9aadc2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf87a8899a7bcd3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8b1c7dfbbd2ecc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b7cee7c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8
-c1d9f4adc3dac2daf5c5ddf8c5ddf8c5ddf8c5ddf8bad0eab2c8e0c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8667381
-5e6976bed5efbdd4eec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7dfb8cfe8
-c5ddf8c5ddf8c5ddf8c5ddf8b8cfe8b5cbe4c5ddf8c5ddf8c5ddf84d5661
-778696bad0eac1d8f3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bed6f0aec3dbc2daf5c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db16191cc4dcf7b7cde6c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a7bb2f353cc2daf5b8cfe8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f464e58
-c5ddf8c5ddf8c5ddf8c4dcf78ea0b3c2daf5b6cce52c32388190a2c5ddf8
-9cafc52b3036bfd6f1c2daf5a3b6cdc5ddf8c5ddf8c5ddf84c5560788797
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-4b545f2a2f35b0c6de7d8c9d373e46c5ddf8c5ddf88fa1b4c0d7f2bad1eb
-3f474f697685c5ddf820242899acc1363d455b6773798898626e7cc5ddf8
-3a414956616cbad0ea8190a23a4149c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b8cfe8070809c4dcf7c5ddf8c5ddf8c5ddf8
-4f596472808fc5ddf8b3c9e1b2c8e0c5ddf8c5ddf8c5ddf8000000c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf830363d282d328ea0b3b7cee7a3b6cdc5ddf8
-c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a88990d0e109fb3c9a7bcd3
-0f1113c2daf5c5ddf83c434b677482b4cae33941482c3137c5ddf8c5ddf8
-c5ddf8b2c8e00d0e10c5ddf8c5ddf8c5ddf8c5ddf8c5ddf80a0b0c768595
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c2daf595a8bc535d6815181b0e1011
-0505060000000202021f2327bcd2e9ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffff2d2d2dfbfbfbffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-6673815e6976c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-4d5661778696c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aec3db16191cc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a7bb2f353cc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f
-464e58c5ddf8c5ddf8c5ddf8c5ddf8b0c5dd7a899a57616d292e3464707e
-c5ddf8a5b9d0121417768494adc3dac5ddf8c5ddf8c5ddf8c5ddf84c5560
-788797c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf84b545f6c7988c5ddf8bad1eb0a0c0dc5ddf8c5ddf8b4cae38190a2
-58636f333a414d5661c5ddf8202428b7cde6515b6679889890a2b549525c
-bcd3ed0202028190a28b9caf8899ac111316bdd4eec5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf899acc1212529c5ddf8c5ddf8c5ddf8
-c5ddf858626e3940478b9cb0bdd4eec5ddf8c5ddf8c5ddf8c5ddf8000000
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf830363d677482c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a88993d454dc5ddf8
-c5ddf823272ca2b6ccc1d8f30a0c0db9d0e9c5ddf88190a22c3137c5ddf8
-c5ddf8c5ddf8c5ddf8070809b3c9e1c5ddf8c5ddf8c5ddf8c5ddf8a8bcd4
-b9d0e9c5ddf8c5ddf8b5cbe4616d7a252a2f090a0b090a0b000000000000
-000000000000010101141619778696808f9fa1a1a1a0a0a09e9e9e9c9c9c
-9a9a9a9898989797979595959393939191918f8f8f8e8e8e8c8c8c8a8a8a
-8888888686868585858383838181817f7f7f7d7d7d7c7c7c7a7a7a787878
-767676747474737373717171141414f8f8f8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8aabfd6a8bcd4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8a3b7ceafc4dcc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-8292a46e7b8b6e7b8b6e7b8b6e7b8b8696a9c5ddf8bed6f094a6bac5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b7cee79baec3c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-7e8e9f464e58c5ddf8c5ddf8c5ddf8b8cfe816191c76849498aabf464e58
-5f6a77c5ddf8c5ddf89fb3c94e58630405055f6a77c5ddf8c5ddf8c5ddf8
-4c5560788797c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf84b545f7f8fa0c5ddf8c1d8f3030404c5ddf8c1d9f4191c20
-6f7c8c96a9bd58626e47505ac5ddf8202428bdd4ee58626e7f8fa095a8bc
-414952b0c6de040505677482687583687583687583b6cce5c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bad116191cc5ddf8c5ddf8
-c5ddf8c5ddf8c1d8f37d8d9e2a2f351013159cafc5c5ddf8c5ddf8c5ddf8
-000000c5ddf8c5ddf8c5ddf8c5ddf8c5ddf830363d92a3b7c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a8899515b66
-c5ddf8c5ddf8292e349baec3b7cde608090ac2daf5c5ddf88fa1b42c3137
-c5ddf8c5ddf8c5ddf8c0d7f2030404bed5efc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8bfd6f17a899a1f2328030304060708000000000000
-000000000000000000020303171a1d616d7b677480858585878787898989
-8b8b8b8c8c8c8e8e8e9090909292929494949595959797979999999b9b9b
-9d9d9d9e9e9ea0a0a0a2a2a2a4a4a4a5a5a5a7a7a7a9a9a9abababadadad
-aeaeaeb0b0b0b2b2b2b4b4b4b5b5b5b7b7b7fdfdfdffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c3dbf6a2b6cc93a5b9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf899acc12f353cc5ddf8c5ddf8c5ddf8808fa1444d56c5ddf8c5ddf8
-262b305f6a77c5ddf8c5ddf8c5ddf8c5ddf88e9fb216191cc5ddf8c5ddf8
-c5ddf85b67736a7786c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf84b545f7f8fa0c5ddf8c1d8f3030404c5ddf897a9be
-2d3339c5ddf8c5ddf83d454d47505ac5ddf8202428bdd4ee58626e7f8fa0
-95a8bc414952c4dcf70f111398aabfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d9f4060607bed6f0
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c2daf5434b54626e7cc5ddf8c5ddf8
-c5ddf80f1113b7cde6c5ddf8c5ddf8c5ddf8c5ddf830363d94a6bac5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8a6bad11e2226c5ddf8c5ddf8c5ddf87a8899
-515b66c5ddf8c5ddf8292e349baec3c5ddf8272c319cafc5c5ddf8626e7c
-2c3137c5ddf8c5ddf8c5ddf8a6bad11b1e22c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf88494a6a0b4cac5ddf8c5ddf8c5ddf8c5ddf8c2daf59aadc25c6874
-1e22260e10120a0b0d0000000000000607082d3339c3d8f1ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf858636f373e46899aadc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c4dcf7282d333d454d6b7887c5ddf8b4c9e21214175e6976
-323940272c315f6a77c5ddf87e8e9f454e576a7786363d455d6875c5ddf8
-c5ddf8c5ddf899acc1191c20545e6a8292a4c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf84b545f7f8fa0c5ddf8c1d8f3030404c5ddf8
-c0d7f2171a1d5964703d444c292e3447505ac5ddf8202428bdd4ee58626e
-7f8fa095a8bc414952c5ddf88190a215181b545e6a5a6571292e34c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8363c44
-94a6bac5ddf8c5ddf8c5ddf8434c555b6672636f7d191c20a6bad1c5ddf8
-c5ddf8c5ddf8545e6a2f343b5b6773aabfd6c5ddf8c5ddf830363d94a6ba
-c5ddf8c5ddf8c5ddf8bad1eb5b67734d56610e10125b6773707d8dc5ddf8
-7a8899515b66c5ddf8c5ddf8292e349baec3c5ddf88393a51d20243f474f
-2f343b2c3238c5ddf8c5ddf8c5ddf87988984f5964c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8141619687583c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8b8cfe88595a8424a531113150f11130202032c3036f8f8f8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf821262aa3b7cec5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88798ab596470adc3da
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89fb2c89fb2c8c5ddf8c5ddf8b9d0e9
-8494a6a0b4caadc3daabc0d7c5ddf8bed6f092a3b77d8c9da8bcd4c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bfd6f198abc0a6bad1c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd2b4c9e2c5ddf8c4dcf795a7bb
-c5ddf8c5ddf8bed5ef8797aa99acc1b3c9e1a6bad1c5ddf89cafc4c3dbf6
-a9bed5b4c9e2b9d0e9a4b8cfc5ddf8c5ddf8aec3db8191a38595a8b4c9e2
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-95a8bc404750c5ddf8c5ddf8c5ddf8b0c6de8494a68798abbad0eac5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b0c6de94a6bab8cfe8c5ddf8c5ddf89fb3c9
-b9d0e9c5ddf8c5ddf8c5ddf8c0d7f293a5b993a5b993a5b993a5b99db0c6
-c5ddf8b2c8e0a8bcd4c5ddf8c5ddf89eb1c7bad1ebc5ddf8c5ddf8bdd4ee
-a0b4ca8292a4515b67c5ddf8c5ddf8c5ddf8282d33acc1d8c5ddf8c5ddf8
-c5ddf8c5ddf8b4c9e2060607aec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd26d7a892e3339
-515151f5f5f5ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf816191cadc3dac5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a8bcd41b1f2395a8bc
-bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf858626ebdd4eec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf890a2b5
-8899ac8b9cb02a2f3590a2b5c5ddf8c5ddf8adc3da677482c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf894a6ba64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8f9f9f9ecececffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bbd2ec070809bfd6f1c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87988984c5560
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8abc0d7
-6e7b8b6e7b8b6e7b8b6e7b8b6e7b8bb4c9e2c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-a2b6cc5c68745e6976a6bad1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87a899a171a1e64707ec5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf872808f
-515b66c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad0ea7f8fa0141619c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed6f0
-414952707d8dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8101214
-b1c7dfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bbd2ec
-14171a1b1e22b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-171a1eadc2d9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c4dcf748515b697584c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf83e464e7a899ac4dcf7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8738190505a65c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf89cafc44e58635c6874c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf87a899a4a535dc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8abc0d7171a1e899aadbdd4eec5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a8bc6b7887b1c7df
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf89cafc572808fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf84d5661c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf89cafc572808fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8050606c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-b5cbe4bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5efb4cae3
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf893a5b9
-bed5efc5ddf8c5ddf8abc0d7a6bad1c5ddf8c5ddf89cafc57d8d9ea2b6cc
-c5ddf8c5ddf8c5ddf895a8bc8d9eb19fb3c9c5ddf8c5ddf8c5ddf8c5ddf8
-bcd3ed8495a7b1c7df050606c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf832383fabc0d7c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86d7b8a758393c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8474f597d8d9ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88a9bae
-404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-4048517f8fa0c5ddf8c5ddf83d454d8393a5c5ddf86f7c8c16191c56616c
-1416197e8e9fc5ddf8c5ddf8707e8d424a53404750c5ddf8c5ddf8c5ddf8
-92a4b81e2125545f6a2a2f35030404c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88696a9bad0ea
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8616d7a697685c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-8a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf88798ab3b424ac5ddf8b9d0e9101214bed6f0c5ddf80d0e109aadc2
-c5ddf88e9fb21c2023c5ddf8c5ddf8c5ddf88495a7404750c5ddf8c5ddf8
-c5ddf84a545e7f8fa0c5ddf893a5b9020202c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf89db0c68190a2c5ddf8c5ddf8c1d8f35f6b78c2daf5
-c5ddf899acc1525c6856616ca6bbd2c5ddf8c5ddf89db0c65b67735b6773
-b5cbe4c5ddf8c5ddf8c5ddf8bad1eb687583626e7b5a6571697685c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b2c8e0394148c5ddf8
-c5ddf8c5ddf83f474facc1d8c5ddf88a9bae282d32202428626e7cc4dcf7
-c5ddf8aabfd62a2f352a2f358e9fb2c5ddf8c5ddf8c5ddf8a9bdd44a535d
-262b3057616d404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c0d7f2121417b7cee77a899a4a545ec5ddf8b7cee7030404
-c1d8f3c5ddf8b5cbe4010101c1d9f4c5ddf8c5ddf88495a7404750c5ddf8
-c5ddf8c5ddf8181b1fa3b7cec5ddf8bad1eb030303c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8afc4dc141619c3dbf6c5ddf88b9caf363c44
-c5ddf8a5b9d0101214748292697685121417b7cde6c5ddf8b2c8e093a5b9
-15181ba7bcd3c5ddf8c5ddf8c3dbf6191c206a7786707d8d0d0e10697685
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8262b30
-9baec3c5ddf8a3b6cd1e2226c5ddf8b1c7df0a0c0d92a3b7abc0d7262b30
-7f8fa0c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8c5ddf8282d32
-7f8fa0afc4dc2a2f35404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf84f5964788797363c4491a2b6c5ddf8c0d7f2
-000000b0c6dec5ddf8a3b6cd0a0c0dc5ddf8c5ddf8c5ddf88495a7404750
-c5ddf8c5ddf8c5ddf832383f92a3b7c5ddf8a8bcd4020202c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf832383f91a2b6c5ddf8464e58
-7d8c9dc5ddf85f6b7847505ac5ddf8c5ddf831373e788797c5ddf8c5ddf8
-c5ddf81d2024a7bcd3c5ddf8c5ddf89cafc42a2f35c5ddf8c5ddf8363d45
-697685c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-6c7a8957616dc5ddf85f6a7765717fc5ddf88393a5292e34c5ddf8c5ddf8
-65717f47505ac5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8b6cce5
-0d0e10c4dcf7c5ddf86a7786404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a8bc262b30171a1dc3dbf6c5ddf8
-c5ddf832383f596470b6cce5505a65434b54c5ddf8c3dbf6bed6f08190a2
-3d454dbed6f0c1d8f3c5ddf8667381464e58b5cbe455606b020202c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87887974d5661bed5ef
-111316bbd2ecc5ddf84e5863697685c5ddf8c5ddf8515b66636f7dc5ddf8
-c5ddf8c5ddf81d2024a7bcd3c5ddf8c5ddf874829247505ac5ddf8c5ddf8
-56616c697685c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b1c7df16191cc3dbf61b1f23abc0d7c5ddf87988983d454dc5ddf8
-c5ddf87786963c434bc5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8
-a2b6cc1b1f23c5ddf8c5ddf87d8c9d404851c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf73d444c6d7b8ac5ddf8
-c5ddf8c5ddf8adc2d93a41491b1f23414952b4c9e2c5ddf89eb1c730363d
-30363d30363d30363d657280c5ddf8bbd2ec68758323272c677482353b43
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9131518
-7e8e9f444d56c5ddf8c5ddf8616d7a474f59c5ddf8c5ddf830363d798898
-c5ddf8c5ddf8c5ddf81d2024a7bcd3c5ddf8c5ddf89db0c6292e34c5ddf8
-c5ddf8363c44697685c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8343a426a77862c3238c5ddf8c5ddf895a7bb121417
-c5ddf8c5ddf84e58635b6773c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8
-c5ddf8c4dcf7101315bad1ebc5ddf8545e6a404851c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-4047501214178b9cafc5ddf8c5ddf8a6bbd20e101272808f667381111316
-b7cee7c5ddf899acc18d9eb114171a7887978d9eb1bed6f0c3dbf6181b1f
-6875836c7a890c0d0f697685c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf87b8a9b050606738291c5ddf8c5ddf8c5ddf8
-3239402c313748515b141619adc3dac5ddf88899ac5b67732125293a4149
-5b6773a3b6cdc5ddf8616d7a25292e4c55601c2023404851c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf89db0c6636f7dc1d9f4c5ddf8c5ddf8c5ddf899acc1525c6856616c
-a6bbd2c5ddf8c5ddf8778696626e7b626e7b626e7b626e7bb9d0e9c5ddf8
-bad1eb687583636f7d8d9eb197a9bec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef93a5b9bbd2ecc5ddf8c5ddf8
-c5ddf8c1d8f38b9caf8191a3b4c9e2c5ddf8c5ddf8a9bdd493a5b993a5b9
-93a5b993a5b9b4cae3c5ddf8c5ddf8a9bed58899acb2c8e0a4b8cfc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef
-b4cae3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad1ebbfd6f1c5ddf8c5ddf8c5ddf8
-b5cbe4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-8a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf72a2f35b4c9e2c5ddf8c5ddf8
-c5ddf84048519cafc4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8b8cfe8a6bbd2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82f343bb4c9e2
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf893a5b9667381c5ddf8c5ddf8c5ddf890a2b5697584
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88798ab49525cc5ddf8c5ddf8
-c5ddf8c5ddf896a9bd3a4149c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a2b6ccafc4dcc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c3dbf6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf88b9caf394148c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf81a1d21
-b0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf830363da3b7cec5ddf8c5ddf8c5ddf8c1d8f3
-1f2327b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b7cde6c3dbf6c5ddf8c5ddf8c3dbf6b7cee7
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7df
-545f6a23272c6975844e5863c5ddf8c5ddf897a9be323940282d33768494
-c0d7f2c5ddf87a899a6975843a41492b3036899aadc5ddf8c5ddf8a9bdd4
-4a535d262b3057616d404851c5ddf8c5ddf88798ab2c32382f353c8190a2
-c4dcf7c5ddf8c5ddf8535d698595a83a41491b1f237f8fa0c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf832394093a5b9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf81b1e22abc0d7c5ddf8c5ddf8c5ddf8c5ddf8
-92a3b77c8b9cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b9d0e98495a73f474f0d0f11515b66c4dcf7
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8a5b9d0262b300d0f110d0e10383f46b4cae3c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf896a9bd8797aa65717f677482bad0eac5ddf8c5ddf8
-c1d8f36c79884c5560738190c3dbf6c5ddf8c5ddf8abc0d76a77864a545e
-6c7a89c5ddf8c5ddf86774824048511b1e225b6773616d7ac5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8adc2d958636f778696
-7c8b9caec3dbc5ddf8c5ddf88495a7515b668292a4c1d9f4c5ddf8bfd6f1
-65717f95a8bc525c688798abc4dcf7c5ddf8c5ddf8a3b7ce55606b8495a7
-1a1d21b0c6dec5ddf8c3dbf6798898515b668d9eb1c4dcf7c5ddf8c5ddf8
-a5b9d07c8b9c92a4b8515b66697584c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf898abc02f353cc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8626e7b667381c5ddf8c5ddf8c5ddf8c5ddf8bfd6f199acc1bbd2ec
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b6cce5272c31c4dcf7c5ddf8c5ddf8c3dbf6
-252a2fb9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee899aad6a7786bed6f0
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-404851626e7cb4cae33d444c272c31c5ddf8afc4dc0d0e1091a2b6b8cfe8
-434b548393a5c5ddf8657280191c20a8bcd496a9bd1d2024c5ddf8c5ddf8
-282d327f8fa0afc4dc2a2f35404851c5ddf89cafc51214179db0c6b3c9e1
-2f353c9cafc5c5ddf8c5ddf8323940262b308d9eb1b7cee7a2b6ccc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf80d0e10b2c8e0
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf83941488595a8c5ddf8c5ddf8c5ddf8
-c5ddf857616d292e34c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf89fb3c9626e7b2125290e10120a0b0c04050549525cc4dcf7
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8aabfd60e101200000000000000000002020216191cbdd4ee
-c5ddf8c5ddf8c5ddf8c5ddf86c7a890c0d0f6e7b8b6c7988171a1ec2daf5
-c5ddf84a545e383f468798ab31373e5c6874c5ddf8c5ddf82a2f35798898
-9db0c66f7c8cc5ddf8c5ddf899acc16875832b303693a5b995a8bcc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bad116191c7c8b9c
-56616c06070897a9bec5ddf86875832c31378899ac5b6773404750c5ddf8
-bad1eb0506064c5560899aad1d20249aadc2c5ddf88fa1b42125298494a6
-444d56040505b0c6dec5ddf84e58633941488b9cb04a545e596470c5ddf8
-c5ddf88899ac1b1f233941488292a4687583c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86a778656616cc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf88798ab394047c5ddf8c5ddf8c5ddf8c5ddf8acc1d8000000
-9aadc2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85f6a77738190c5ddf8c5ddf8c5ddf8
-c5ddf86d7b8a64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8a9bdd46c7a89272c31030303101315acc1d8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c2daf50d0e10b5cbe4c5ddf88595a8272c31c5ddf8748292292e348b9cb0
-8a9bae616d7a454e57c5ddf8657280525c68c5ddf8c5ddf80f1113b6cce5
-b6cce50d0e10c4dcf7c5ddf86a7786404851c5ddf85b66723c434b8b9cb0
-899aad4f59645f6b78c5ddf8c5ddf832394065717fc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b3c9e1070809
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8545e6a657280c5ddf8c5ddf8
-c5ddf8c5ddf8b4c9e2adc2d9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b8cfe8
-8393a53d454d0f11130f11130202020000000000000a0c0d4a545ec5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8394148000000000000000000000000000000050606
-677482c5ddf8c5ddf8c5ddf8c5ddf86c7a8931373ec5ddf8c5ddf82d3339
-9baec3c3dbf6030404a6bad1c5ddf898abc0101315c5ddf8c2daf5101315
-8e9fb2c2daf5c5ddf8c5ddf8c5ddf8c5ddf88b9caf394148c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7a8955606b
-c5ddf8c4dcf70b0d0e97a9bec5ddf80d0e109aadc2bcd3edb9d0e91b1f23
-bed5efbad1eb000000b5cbe4c5ddf85c6874697685c5ddf8545e6a717f8e
-c5ddf8b4cae3000000b0c6deb7cee7060607adc3dabbd2ecb0c5dd1e2226
-c5ddf8c5ddf88899ac070809bed6f0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525c72808fc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8a3b7ce171a1dc5ddf8c5ddf8c5ddf8c5ddf8bad1eb
-748292b4c9e2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82f343b677482
-23272c677482bbd2ecc5ddf8c5ddf87d8c9d292e34353b438899acc5ddf8
-c5ddf8c5ddf8474f59899aad363d451d20248b9cafc5ddf898aabf3e464e
-23272c363c44bbd2ecc5ddf8c1d9f45b67731f23272a2f3591a2b6c5ddf8
-c5ddf8464e58758393282d32434b54acc1d8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c3dbf60d0e10bad1ebc5ddf8c5ddf8
-c5ddf8c5ddf8b7cde6101214c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f
-8fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c0d7f28fa1b44c55601315180e101203040400000014171aacc1d8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8bad1eb060708c0d7f2c5ddf895a7bb272c31c5ddf8687583292e34
-6875836875836875837b8a9bc5ddf865728065717fc5ddf8c5ddf815181b
-afc4dca2b6cc1b1f23c5ddf8c5ddf87d8c9d404851c5ddf84e5863373e46
-6875836875836875838797aac5ddf8c5ddf83239408fa1b4c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef
-030404c0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525c72808fc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1707d8d131518
-00000003030300000000000000000000000000000002020216191c434b54
-434b54434b54434b54434b54434b54434b54434b54434b54434b54434b54
-434b54434b54434b54434b54434b54434b54434b54434b54434b54434b54
-434b54434b54434b54434b54434b54434b54434b54434b54434b54434b54
-434b54434b54434b54434b54434b54434b54434b54434b54434b54434b54
-434b54434b54434b54434b54434b54434b54434b54434b54434b54434b54
-434b54434b54434b54434b54434b54434b54434b54434b54434b54444c54
-575757575757575757575757575757575757575757575757575757575757
-575757575757575757575757575757575757575757575757575757575757
-575757575757575757575757575757575757575757575757575757575757
-575757575757575757575757575757575757575757575757575757575757
-575757575757575757575757575757575757575757575757575757575757
-575757575757575757575757575757515456434b54434b54434b54434b54
-434b54434b54434b54434b54060607000000000000000000000000000000
-000000323940c5ddf8c5ddf8c5ddf8c5ddf86c7a894e5762c5ddf8c5ddf8
-4a535d717f8eb6cce5040505c4dcf7c5ddf8b8cfe8000000c1d9f4c5ddf8
-92a4b8363d450c0d0f58636fc5ddf8c5ddf8c5ddf88b9caf394148c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf847505a
-738291c5ddf8c5ddf8282d3297a9bebcd3ed000000363d45363d45363d45
-363d45a6bbd2bad1eb101214c5ddf8c5ddf86a77865a6571c5ddf82d3339
-8ea0b3c5ddf8c5ddf80f1113b0c6dea2b6cc070809363d45363d45363d45
-363d45b9d0e9c5ddf88899ac353b43c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8474f59738291c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8a6bad115181bc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8050606
-56616cb6cce54b545f64707ec5ddf88ea0b31a1d21a3b7ceaec3db25292e
-acc1d8c5ddf8c5ddf823272c2f343b94a6bab5cbe4a5b9d0c5ddf8282d33
-98abc0c5ddf8a6bbd2bed6f0c5ddf87583932a2f35aec3db8e9fb20d0e10
-b7cee7c5ddf822272b49525cb9d0e956616c606c79c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bdd416191cc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8101214afc4dcc5ddf8c5ddf8c5ddf8c5ddf8
-2d3339535d69c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8afc4dc
-7482922d33390d0e100c0d0f00000000000000000000000014171aacc1d8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7c3dbf6
-c2daf5c1d9f4c1d8f3c0d7f2bfd6f1bed6f0bed5efbed5efbdd4eebcd3ed
-bbd2ecbad1ebbad0eab9d0e9b8cfe8b7cee7b7cde6b6cce5b6cce5b5cbe4
-dbe1e8e9e9e9e8e8e8e7e7e7e6e6e6e5e5e5e4e4e4e3e3e3e2e2e2e2e2e2
-e1e1e1e0e0e0dfdfdfdedededddddddcdcdcdbdbdbdadadad9d9d9d8d8d8
-d8d8d8d7d7d7d6d6d6d5d5d5d4d4d4d3d3d3d2d2d2d1d1d1d0d0d0dbdbdb
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf82c323898aabfc5ddf8687583272c31c5ddf88b9cb0
-1b1e22c5ddf8c5ddf8c5ddf8c5ddf8c5ddf865728065717fc5ddf8c5ddf8
-15181bafc4dcc4dcf7101315bad1ebc5ddf8545e6a404851c5ddf872808f
-333a41c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf832394092a3b7c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf81b1e22a6bbd2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82d333993a5b9
-c5ddf8c5ddf8c5ddf8c5ddf8a0b4ca8494a6c5ddf8c5ddf8c5ddf8c0d7f2
-7c8b9c3f474f1013150c0d0f0405050000000000000000000000000d0e10
-8797aa9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
-9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
-9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
-9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
-9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
-9fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c99fb3c9
-a3b5c9cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf
-cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf
-cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf
-cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf
-cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf
-cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3c8cd9fb3c99fb3c99fb3c9
-9fb3c99fb3c99fb3c99fb3c99fb3c9181b1f000000000000000000000000
-00000000000047505ac5ddf8c5ddf8c5ddf8c5ddf86c7a8930363dc5ddf8
-c5ddf82c323898abc0c3dbf6040505a5b9d0c5ddf898aabf111316c5ddf8
-c5ddf8c5ddf8c5ddf893a5b90f11139fb3c9c5ddf8c5ddf891a2b6343a42
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-738291505a65c5ddf8c1d9f407080997a9bec5ddf80d0e109cafc4c5ddf8
-c5ddf8c5ddf8c5ddf8bad1eb101214c5ddf8c5ddf86a77865a6571c5ddf8
-56616c707e8dc5ddf8b4c9e2000000b0c6deb7cee7030303b3c9e1c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf88899ac3c434bc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf868758358636f
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8899aad363c44c5ddf8c5ddf8c5ddf8
-c5ddf8c3dbf6acc1d8bed5efc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-050606a2b6ccc5ddf895a7bb2f343bc5ddf84b545f474f598b9cb0899aad
-444d566f7c8cc5ddf8c5ddf823272c748292c5ddf8c5ddf8c5ddf8c5ddf8
-31373e505a6595a8bcc3dbf6c5ddf8c5ddf84047506c7a89c5ddf8c5ddf8
-21262a8b9cafc5ddf822272b95a8bcc5ddf892a3b7333a41c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8899aad30363dc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82b30368fa1b4c5ddf8c5ddf8c5ddf8
-c5ddf8adc3dab3c9e1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4515b67
-000000000000000000000000000000000000000000000000010101141719
-1e22261e22261e22261e22261e22261e22261e22261e22261e22261f2327
-20242821252921262a22272b23272c24282d25292e252a2f262b30272c31
-272c31282d32282d33292e342a2f352b30362c31372c32382d33392e343a
-2f343b393b3d3e3e3e3f3f3f404040414141424242434343444444454545
-4646464747474848484848484949494a4a4a4b4b4b4c4c4c4d4d4d4e4e4e
-4f4f4f5050505151515252525353535353535454545555555656564c4c4c
-484848ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf88797aa1d20244047502f353c272c31c5ddf8
-c5ddf8404750262b30626e7b49525c5d6875c5ddf865728065717fc5ddf8
-c5ddf815181bafc4dcc5ddf8616d7a25292e4c55601c2023404851c5ddf8
-bed6f02c32382f353c636f7d414952738190c5ddf8c5ddf832394092a3b7
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf84f59647a899ac5ddf8c5ddf8c5ddf8c5ddf8bbd2ec171a1d
-bbd2ecc5ddf8c5ddf8c5ddf8c5ddf8616d7a1b1e22c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8acc1d8707e8d2b30360d0f110d0e10000000
-000000101214a6bad1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86a77860a0b0c000000000000
-0000000000000d0e1094a6bac5ddf8c5ddf8c5ddf8c5ddf86c7a890b0d0e
-6b7887697685171a1dc2daf5c5ddf84c5560353b438696a92e343a5d6875
-c5ddf8bad0ea5f6b7898aabf8797aa171a1ebdd4eec5ddf8c5ddf8bed5ef
-10121477869690a2b5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8adc2d9181b1f657280454e5710121497a9bec5ddf8687583282d33
-8191a38e9fb2535d69c3dbf6bad1eb101214c5ddf8c5ddf86a77865a6571
-c5ddf88fa1b41e21258292a4414952040505b0c6dec5ddf84e5863363c44
-8899ac899aad5b6773c5ddf8c5ddf88899ac3c434bc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf892a3b7
-363c44c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8657280606c79c5ddf8c5ddf8
-c5ddf8c5ddf8b8cfe80000008798abc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8050606b3c9e1c5ddf8a6bad116191cc5ddf83f474f3f474f687583
-6875836875838ea0b3c5ddf8c5ddf823272c9fb2c8c5ddf8c5ddf8c5ddf8
-c5ddf8bad0ea6f7c8c1a1d211e2125b6cce5c5ddf8363d458190a2c5ddf8
-c5ddf8343a427f8fa0c5ddf822272ba8bcd4c5ddf898aabf2c3238c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf896a9bd252a2f
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf82024289cafc4c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b9d0e98595a8414952101315101214030303000000000000000000
-0d0f119cafc5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-dfdfdf494949ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef9fb3c98797aa4d5661
-c5ddf8c5ddf8c5ddf899acc17c8b9c92a4b8c1d8f3c5ddf8adc3daadc2d9
-c5ddf8c5ddf899acc1bfd6f1c5ddf8c5ddf8a9bed58899acb2c8e0a4b8cf
-c5ddf8c5ddf8c3dbf693a5b97c8b9c98abc0c3dbf6c5ddf8c5ddf8a0b4ca
-b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8acc1d82a2f35c5ddf8c5ddf8c5ddf8c5ddf872808f
-626e7cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf83b424a667381c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f18ea0b3
-4b545f1416190506060a0c0da6bad1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c3dbf63a41490d0e10
-0000000101010e10125e6976c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7a89
-525c68626e7c677482bad0eac5ddf8c5ddf8c1d8f36c79884c5560738190
-c3dbf6c5ddf8c1d8f36f7c8c4b545f65717fa3b6cdc5ddf8c5ddf8c5ddf8
-c5ddf8a8bcd4717f8e667381c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8bad1eb72808f93a5b925292eaec3dbc5ddf8c5ddf8
-899aad515b67515b67808fa1c5ddf8c0d7f26a7786c5ddf8c5ddf898aabf
-8fa1b4c5ddf8c5ddf8a3b7ce55606b8797aa707d8dbad1ebc5ddf8c4dcf7
-7d8d9e4e586355606b8c9db1c5ddf8c5ddf8a6bbd28190a2c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8282d33aabfd6c5ddf8c5ddf8c5ddf8c3dbf6202428b3c9e1c5ddf8
-c5ddf8c5ddf8c5ddf89db0c6090a0bb4cae3c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf80506068e9fb2c5ddf88190a247505ac5ddf8626e7b434c55
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf823272ca1b5cbc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bad1eb25292e899aadc5ddf8525c68545f6a
-c5ddf8c4dcf70d0e109fb2c8c5ddf822272ba8bcd4c5ddf898aabf2c3238
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b7cde6
-0a0c0dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7060708bbd2ecc5ddf8
-c5ddf8c5ddf8c5ddf891a2b693a5b9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a3b7ce68758325292e0e1012
-0c0d0f0000000a0b0c9cafc4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffdddddd4a4a4affffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf892a4b88797aa8c9db12d3339
-8b9cb0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8677482adc3dac5ddf8c5ddf8c5ddf8
-5c6874b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf83d444cbbd2ecc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8a9bed56e7b8b4c5560aec3dbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-90a2b55b667264707e9fb2c8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-6c7a8958626ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c4dcf79db0c6c4dcf794a6ba262b30c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8899aad5f6b78c5ddf8c5ddf8c5ddf88e9fb25a6571c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf86a77865e6976c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8050606272c31545e6a1b1f2391a2b6c5ddf8b8cfe8
-24282d363c44636f7d3c434b808fa1c5ddf8c5ddf823272ca1b5cbc5ddf8
-c5ddf8c5ddf8c5ddf82b3036636f7d5b66721a1d21bed5efc5ddf8a6bbd2
-1013154a545e282d333d444cc5ddf8c5ddf822272ba8bcd4c5ddf898aabf
-2c3238c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8262b30a4b8cfc5ddf8c5ddf8c5ddf8c5ddf89cafc52c3137c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8383f46444d56c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-bdd4ee8b9caf48515b10121408090a9aadc2c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffdcdcdc4b4b4bffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a4b8cf5d68755d6875
-a4b8cfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8808fa1707d8dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88292a48190a28190a2
-8190a28190a2a2b6ccc5ddf8c3dbf63d444c25292e525c68a3b7cec5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d9f4c3dbf6c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8050606adc2d98495a7bbd2ecc5ddf8c5ddf8
-c5ddf8c1d8f38fa1b47d8c9d9cafc5c4dcf7c5ddf8c5ddf89cafc5bcd3ed
-c5ddf8c5ddf8c5ddf8c5ddf8a6bad17f8fa091a2b6c0d7f2c5ddf8c5ddf8
-c5ddf8b0c6de8190a28d9eb1c2daf5c5ddf8c5ddf89cafc5bed5efc5ddf8
-bad0ea9fb2c8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf88696a94f5964c5ddf8c5ddf8c5ddf8c5ddf849525c8b9cb0
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf812141790a2b5c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a9bed57d8c9dbdd4eec5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffdbdbdb4c4c4cffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8050606bfd6f1c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c4dcf7535d69c2daf5c5ddf8c5ddf8c1d8f3545e6a
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c6de48515bc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffdadada4e4e4effffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85f6a77c2daf5c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd9d9d94f4f4fffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b8cfe8c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd8d8d8505050ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf87e8e9f282d335b6773c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd7d7d7515151ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bad0ea131518c4dcf7c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f38797aab1c7dfc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd5d5d5525252
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf80a0c0dc0d7f2c5ddf8c5ddf8
-c5ddf8c5ddf898abc0758393c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c0d7f2697584171a1e9fb3c9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd4d4d4
-535353ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8171a1dadc2d9c5ddf8
-c5ddf8c5ddf8c5ddf86673811a1d21c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85f6a77
-6c7a89c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d3d3d3545454ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8657280333a41
-8494a6c5ddf8c5ddf8c5ddf8b6cce5aabfd6c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-697584626e7bc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8363d4594a6bac5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd2d2d2555555ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85c6874
-3d454d91a2b6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf87e8e9f414952c5ddf8c5ddf8c5ddf8c5ddf8c5ddf81113168798ab
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd1d1d1575757ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-14171ab0c5ddc5ddf8c5ddf8c5ddf8c5ddf8a6bbd27d8d9ec5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8b9d0e92d33392a2f35abc0d7c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0d0d0585858ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8bed5efb4cae3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf80a0c0dc0d7f2c5ddf8c5ddf8c5ddf8c5ddf8717f8e0b0d0ec5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf896a9bd21262a9db0c6c1d9f4c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffcfcfcf595959ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b7cee714171ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf84b545f57616d
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf86d7b8a5a6571c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8515b668fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffcdcdcd5a5a5affffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf87887972c3137667381c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8444d56
-b4c9e2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8677482626e7cc5ddf8c5ddf8c5ddf8
-c5ddf8c3dbf60607087d8c9dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffcccccc5b5b5bffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-b2c8e0394148c5ddf8c5ddf8c5ddf83f474facc1d8c5ddf88a9bae282d32
-202428626e7cc4dcf7c5ddf8aabfd62a2f352a2f358e9fb2c5ddf8c5ddf8
-c5ddf8a9bdd44a535d262b3057616d404851c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee3c434b8798abc5ddf8c5ddf8
-c5ddf8c5ddf89cafc5171a1dc0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffcbcbcb5c5c5cffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8262b309baec3c5ddf8a3b6cd1e2226c5ddf8b1c7df0a0c0d
-92a3b7abc0d7262b307f8fa0c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8
-c5ddf8c5ddf8282d327f8fa0afc4dc2a2f35404851c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bcd3ed373e465d6875bbd2ecc5ddf8
-c5ddf8c5ddf8c5ddf89baec38fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffcacaca5d5d5d
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf86c7a8957616dc5ddf85f6a7765717fc5ddf88393a5
-292e34c5ddf8c5ddf865717f47505ac5ddf8c5ddf8c5ddf8474f597d8d9e
-c5ddf8c5ddf8b6cce50d0e10c4dcf7c5ddf86a7786404851c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfb
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffc9c9c9
-5f5f5fffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b1c7df16191cc3dbf61b1f23abc0d7c5ddf8
-7988983d454dc5ddf8c5ddf87786963c434bc5ddf8c5ddf8c5ddf8474f59
-7d8d9ec5ddf8c5ddf8a2b6cc1b1f23c5ddf8c5ddf87d8c9d404851c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-c8c8c8606060ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8343a426a77862c3238c5ddf8
-c5ddf895a7bb121417c5ddf8c5ddf84e58635b6773c5ddf8c5ddf8c5ddf8
-474f597d8d9ec5ddf8c5ddf8c4dcf7101315bad1ebc5ddf8545e6a404851
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffff0f6fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffc7c7c7616161ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87b8a9b050606738291
-c5ddf8c5ddf8c5ddf83239402c313748515b141619adc3dac5ddf88899ac
-5b67732125293a41495b6773a3b6cdc5ddf8616d7a25292e4c55601c2023
-404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff0f6fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffc5c5c5626262ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5ef93a5b9
-bbd2ecc5ddf8c5ddf8c5ddf8c1d8f38b9caf8191a3b4c9e2c5ddf8c5ddf8
-a9bdd493a5b993a5b993a5b993a5b9b4cae3c5ddf8c5ddf8a9bed58899ac
-b2c8e0a4b8cfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffc4c4c4636363ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffc3c3c3646464ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed5efbdd4ee
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8adc2d9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9c1d9f4c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffc2c2c2656565ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf83d454d
-9fb2c8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-050606c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8748292b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8717f8e6c7988c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffff0f6fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8deecfbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fdffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffc1c1c1676767ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a0b4ca
-30363dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8050606c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8bbd2ec1d2024
-bed5efc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8a0b4ca64707e56616cbbd2ecc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffff2f7fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8e0edfbc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8eff5fd
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffc0c0c0686868ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf87a899a262b301e21253d454dadc2d9c5ddf8c5ddf893a5b9
-323940343a42606c798696a9c5ddf8c2daf568758325292e40485198abc0
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-4c5560798898c5ddf8c5ddf8c5ddf8c1d9f458636f292e34262b308190a2
-c5ddf8c5ddf805060674829223272c515b66bad0eac5ddf8c4dcf7657280
-212529272c318797aac5ddf8c5ddf8c5ddf83f474f8b9caf333a411e2226
-92a4b87d8d9e2a2f3505060625292e2a2f358a9baec5ddf8c5ddf8c5ddf8
-4b545f7a899ac5ddf8c5ddf8c5ddf8c5ddf8a8bcd4687583c2daf5c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad0ea8495a7
-3e464f1012140304041b1f22b7cde6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffcde1f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8f1f7fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-eff5fdffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffbfbfbf696969
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf898aabfb7cee7c1d9f46c7988363d45c5ddf8b9d0e9
-1012149cafc59eb1c70d0e10717f8ec5ddf86d7b8a30363daec3dba3b7ce
-1b1e22c1d8f3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8262b3098abc0c5ddf8c5ddf8c5ddf88292a4414952c1d9f4bed6f0
-a6bbd2c5ddf8c5ddf802020264707ebad0ea3a41498191a3c5ddf88495a7
-202428a9bdd496a9bd0d0f11adc3dac5ddf8c5ddf8191c20343a4298aabf
-b3c9e1a7bcd3c5ddf8c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf86a7786545f6ac5ddf8c5ddf8c5ddf8c5ddf88798ab000000bed6f0
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a2b6cc63707d21252a0e0f11
-090a0c0000000203031d2125b7cde6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeef5fdd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8cbe1f9e4effcffffff
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8eff5fdffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffbebebe
-6a6a6affffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bed5ef8ea0b35f6a774a535d191c20c5ddf8
-8595a83a4149c5ddf8c5ddf83b424a717f8ec5ddf82a2f355f6a778b9caf
-899aad2d333990a2b5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8070809b3c9e1c5ddf8c5ddf8c5ddf88b9cb01e21257d8d9e
-b3c9e1c5ddf8c5ddf8c5ddf8020202b6cce5c5ddf8707e8d545f6ac5ddf8
-4f59645d6875c5ddf8c5ddf831373e7b8a9bc5ddf8c5ddf8191c207e8e9f
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf88495a7353b43c5ddf8c5ddf8c5ddf8c5ddf8bbd2eca6bad1
-c4dcf7c5ddf8c5ddf8bbd2ec728090373d450d0f110c0e0f010202000000
-000000000000020202171a1e95a8bca0b4caa0b4ca9fb3c99fb2c89fb2c8
-9eb1c79db0c69db0c69cafc59cafc49cafc49baec39aadc29aadc299acc1
-98abc098abc098aabf98aabf97a9be96a9bd96a9bd95a8bc95a7bb95a7bb
-94a6ba93a5b993a5b992a4b892a3b792a3b791a2b691a2b690a2b58fa1b4
-8fa1b48ea0b38e9fb28e9fb28d9eb18c9db18c9db18b9cb08b9caf8b9caf
-8a9bae8c9caeb2b2b2b1b1b1b1b1b1b0b0b0afafafafafafaeaeaeadadad
-adadadacacacababababababaaaaaaaaaaaaa9a9a9a8a8a8a8a8a8a7a7a7
-a6a6a6a6a6a6a5a5a5a4a4a4a4a4a4a3a3a3a2a2a2a2a2a2a1a1a1a1a1a1
-a0a0a0cdcdcdffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fcfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdff
-fbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffeffffffffff
-ffffffcae0f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8f4f8feffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-bcbcbc6b6b6bffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8454e57515b6790a2b5808fa114171a
-c5ddf873819049525cc5ddf8c5ddf84a535d717f8ec5ddf81e2125515b66
-6875836875836875839eb1c7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8141619a9bdd4c5ddf8c5ddf8c5ddf8c5ddf895a7bb
-434b54050606758393c5ddf8c5ddf8050606c5ddf8c5ddf87685954e5762
-c5ddf8464e58717f8ec5ddf8c5ddf8434c55707d8dc5ddf8c5ddf8191c20
-a9bdd4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8191c20abc0d7c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf87a8899414952c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8b8cfe8616d7a090b0c010101010102000000000000
-000000000000000000030304202428424a53434b54434c55434c55444d56
-444d56454e57464e58464e58474f5947505a47505a48515b49525c49525c
-4a535d4a545e4a545e4b545f4c55604c55604d56614d56614e57624e5863
-4e58634f5964505a65505a65515b66515b67515b67525c68535d69535d69
-545e6a545f6a545f6a55606b55606b56616c57616d57616d58626e58636f
-58636f5964705c6672757575767676777777777777787878797979797979
-7a7a7a7a7a7a7b7b7b7c7c7c7c7c7c7d7d7d7e7e7e7e7e7e7f7f7f808080
-808080818181828282828282838383838383848484858585858585868686
-8787875d5d5d787878ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffe3effcc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8d0e4f9ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffbbbbbb6c6c6cffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c2daf50a0c0dbdd4eec5ddf8717f8e
-14171ac5ddf8a7bcd31e2125c4dcf7c4dcf71e2226717f8ec5ddf8404851
-65717fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8343a428d9eb1c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf87382912f353cc5ddf8c5ddf8050606c5ddf8c5ddf8768595
-4e5762c5ddf8626e7b454e57c5ddf8c5ddf81b1f238fa1b4c5ddf8c5ddf8
-191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8282d339db0c6c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf85e6976626e7cc5ddf8c5ddf8c5ddf8c5ddf8
-b3c9e17a899abbd2ecc5ddf8c5ddf8c5ddf8c5ddf8b2c8e0798899333a41
-0e10120e10120000000000000000000c0e106c7988c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffafafaf787878ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffeffffeef5fdddebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfbdcebfb
-dcebfbdcebfbe9f2fcfefeffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffbababa6d6d6dffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8404851404851525c68
-30363d14171ac5ddf8c5ddf84c5560272c312c3238282d3372808fc5ddf8
-a6bad11a1d21424a53626e7b30363d9fb2c8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8697584616d7ac5ddf8c5ddf8c5ddf8
-6976854d56616976852b3036768494c5ddf8c5ddf8050606c5ddf8c5ddf8
-7685954e5762c5ddf8b0c6de14171a454e572f353c2e343ac4dcf7c5ddf8
-c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7988252a2f
-5a65719db0c6c5ddf8c5ddf8c5ddf831373e97a9bec5ddf8c5ddf8c5ddf8
-c5ddf892a3b7000000b0c5ddc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c2daf598aabf57616d191d200f11130607080404056a7786c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffaeaeae797979ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffb9b9b96f6f6fffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf793a5b9
-8c9db1bad0ea98abc0c5ddf8c5ddf8c5ddf8abc0d7b0c6de3e464e97a9be
-c5ddf8c5ddf8bad0ea8a9bae7e8e9fa6bad1c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad1eb202428c0d7f2c5ddf8
-c5ddf8bad1eb8d9eb17f8fa0afc4dcc5ddf8c5ddf8c5ddf895a7bbc5ddf8
-c5ddf8b1c7dfa7bcd3c5ddf8c5ddf8b5cbe48292a48a9baec0d7f2c5ddf8
-c5ddf8c5ddf89aadc2bed6f0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-b6cce594a6bab2c8e0c5ddf8c5ddf8a3b6cd32383fc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf86c7988363c44c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b3c9e17a899a343b420a0b0c
-6e7b8bc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffadadad7a7a7affffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffb8b8b8707070ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf875839395a8bc7583931c2023
-c3dbf6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87887979cafc5
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87c8b9c98abc0c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf85c68749cafc4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c2daf59aadc2b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffadadad7b7b7bffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffb7b7b7717171ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88191a3535d69758393
-b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffacacac7b7b7bffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffb6b6b6727272ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffababab7c7c7cffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffb4b4b4737373ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffababab7d7d7d
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffb3b3b3747474
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffaaaaaa
-7d7d7dffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b2b2
-757575ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-a9a9a97e7e7effffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-b1b1b1767676ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffa9a9a97f7f7fffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffafcfef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafe
-f6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef6fafef8fbfe
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffb0b0b0787878ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffa8a8a87f7f7fffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-f9fcfed8e8fac6ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8d1e4f9f5f9feffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffafafaf797979ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffa7a7a7808080ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffe1edfbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8d8e8faffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffaeaeae7a7a7affffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffa7a7a7818181ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd1e4f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c6ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffacacac7b7b7bffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffa6a6a6818181ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffababab7c7c7cffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffa5a5a5828282ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffaaaaaa7d7d7dffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3edc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bed5efb4cae3c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffa5a5a5838383ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffa9a9a97e7e7effffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffa4a4a4838383
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffa8a8a8808080
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b5cbe4bcd3ed
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88a9bae404851c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffa3a3a3
-848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffa7a7a7
-818181ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8b2c8e0394148c5ddf8c5ddf8c5ddf83f474facc1d8
-c5ddf88a9bae282d32202428626e7cc4dcf7c5ddf8aabfd62a2f352a2f35
-8e9fb2c5ddf8c5ddf8c5ddf8a9bdd44a535d262b3057616d404851c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-a3a3a3858585ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-a6a6a6828282ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8262b309baec3c5ddf8a3b6cd1e2226
-c5ddf8b1c7df0a0c0d92a3b7abc0d7262b307f8fa0c5ddf8c5ddf8c5ddf8
-474f597d8d9ec5ddf8c5ddf8c5ddf8282d327f8fa0afc4dc2a2f35404851
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffa2a2a2858585ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffa4a4a4838383ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86c7a8957616dc5ddf85f6a77
-65717fc5ddf88393a5292e34c5ddf8c5ddf865717f47505ac5ddf8c5ddf8
-c5ddf8474f597d8d9ec5ddf8c5ddf8b6cce50d0e10c4dcf7c5ddf86a7786
-404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffa1a1a1868686ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffa3a3a3848484ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b1c7df16191cc3dbf6
-1b1f23abc0d7c5ddf87988983d454dc5ddf8c5ddf87786963c434bc5ddf8
-c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8a2b6cc1b1f23c5ddf8c5ddf8
-7d8c9d404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffa0a0a0878787ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffa2a2a2858585ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8343a42
-6a77862c3238c5ddf8c5ddf895a7bb121417c5ddf8c5ddf84e58635b6773
-c5ddf8c5ddf8c5ddf8474f597d8d9ec5ddf8c5ddf8c4dcf7101315bad1eb
-c5ddf8545e6a404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffa0a0a0878787ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88495a77482928798abc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88495a7bed5efc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c5dd90a2b5c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a1b5cb748292748292bcd3edc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffa1a1a1868686ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-7b8a9b050606738291c5ddf8c5ddf8c5ddf83239402c313748515b141619
-adc3dac5ddf88899ac5b67732125293a41495b6773a3b6cdc5ddf8616d7a
-25292e4c55601c2023404851c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffff9f9f9f888888ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88ea0b3626e7c2e343a
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8181b1fb2c8e0c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85a6571a2b6cc
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf893a5b94a535d
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd28190a20e1012aec3db
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffa0a0a0888888ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8bed5ef93a5b9bbd2ecc5ddf8c5ddf8c5ddf8c1d8f38b9caf8191a3
-b4c9e2c5ddf8c5ddf8a9bdd493a5b993a5b993a5b993a5b9b4cae3c5ddf8
-c5ddf8a9bed58899acb2c8e0a4b8cfc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff9e9e9e898989ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c4dcf7afc4dcb9d0e9c5ddf8c5ddf8c5ddf896a9bd
-2e343ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b3c9e1b3c9e1c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8bdd4eeb0c6dec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-b2c8e0bad0eac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8b9d0e9b4c9e2c5ddf8c5ddf8c5ddf8181b1fb2c8e0
-b7cee7c2daf5c5ddf8c5ddf8c5ddf8c5ddf8b7cde6b7cde6c5ddf8c5ddf8
-c5ddf8c5ddf8c0d7f2c4dcf7c1d9f4b0c5ddc5ddf8c3dbf6bed6f02f343b
-8fa1b4bed6f0c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c0d7f2c4dcf7b7cde6c5ddf8c5ddf8c5ddf8c5ddf8c0d7f2bed6f0
-c1d8f3c5ddf8c5ddf8c5ddf8bfd6f1bad1ebbed5efc1d9f4bbd2ecc5ddf8
-c5ddf8bfd6f1c5ddf8b6cce5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf816191c
-aec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff9f9f9f898989ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff9e9e9e8a8a8affffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf895a7bb131518252a2f2024288494a6c5ddf8c5ddf8
-96a9bd2e343ac5ddf8c5ddf8c5ddf8c5ddf82d33392d3339282d3325292e
-aec3dbc5ddf8c5ddf847505a2f343b373e463d454dc5ddf8c5ddf8a9bdd4
-282d33373e46282d337d8d9ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c2daf5363c44323940323940525c68c5ddf8c5ddf8181b1f
-47505a282d321b1f239eb1c7c5ddf8c4dcf7454e57131518131518444d56
-c4dcf7c5ddf8c5ddf830363d616d7a14161923272c67748292a3b730363d
-0b0d0e25292e30363d7b8a9bc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8292e34353b4321262a282d3295a7bbc5ddf8c5ddf84b545f
-22272b383f46c5ddf8c5ddf8c5ddf80d0e1032383f15181b3941481e2125
-a1b5cbc5ddf8101214363c4424282d31373ea3b6cdc5ddf8c5ddf8c5ddf8
-16191caec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff9e9e9e8a8a8affffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bdd4eebdd4eec5ddf8c5ddf8c5ddf8b6cce5
-c4dcf7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffff9d9d9d8a8a8a
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c0d7f214171a8797aac5ddf8c4dcf7b3c9e1c5ddf8
-c5ddf896a9bd2e343ac5ddf8c5ddf8c5ddf8c5ddf8b7cde6c5ddf8c5ddf8
-5a65715c6874c5ddf8a6bbd21e2125c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8
-5c6874687583c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf88d9eb1373e46c5ddf8c5ddf8bfd6f1c5ddf8c5ddf8
-181b1f72808fc5ddf86976855e6976c5ddf88798ab1f2327bed5efbfd6f1
-24282d8696a9c5ddf8c5ddf830363d31373eb7cee7c5ddf8bcd3edc5ddf8
-c5ddf830363d94a6bac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8292e3455606bc5ddf892a3b732383fc5ddf8c5ddf8
-c5ddf88c9db1383f46c5ddf8c5ddf8c5ddf8060607c2daf5272c318696a9
-697584788797c5ddf8101214707d8dc5ddf87887974c5560c5ddf8c5ddf8
-c5ddf816191caec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c8b8b8b
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf88c9db1a1b5cbc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf83b424aa1b5cbc5ddf8c5ddf8c5ddf8
-57616d8595a8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c
-8b8b8bffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8a4b8cf0d0f11c2daf5c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf896a9bd2e343ac5ddf8c5ddf8c5ddf8c5ddf890a2b5505a65
-2b30361b1e224a535dc5ddf8c0d7f21e22263d454d768494bcd3edc5ddf8
-c5ddf88c9db1171a1e535d6992a3b7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b2c8e0171a1e454e577e8e9fc1d8f3c5ddf8
-c5ddf8181b1fa9bdd4c5ddf88c9db1383f46c5ddf8616d7a515b66c5ddf8
-c5ddf8535d695d6875c5ddf8c5ddf830363d768494c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf830363d94a6bac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8292e348798abc5ddf8bfd6f1090a0bbed5ef
-c5ddf8c5ddf88c9db1383f46c5ddf8c5ddf8c5ddf814171ac5ddf8383f46
-98abc0768595616d7ac5ddf8101214a1b5cbc5ddf8a9bed5171a1dc5ddf8
-c5ddf8c5ddf816191caec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff9b9b9b
-8c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88899ac4e576258636f9baec3c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84c5560788797c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89eb1c7323940c5ddf8c5ddf8c5ddf8
-c5ddf8abc0d7262b30c4dcf7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-9c9c9c8c8c8cffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a4b8cf0d0f11c2daf5c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf897a9be2d3339c5ddf8c5ddf8c5ddf8b9d0e916191c
-a0b4cac4dcf769768547505ac5ddf8c5ddf8c2daf58a9bae1e222621262a
-c5ddf8c5ddf8c5ddf8b4cae36774820506066c7988c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f17f8fa01416193b424a
-c5ddf8c5ddf8181b1fb2c8e0c5ddf88e9fb2363d45c5ddf8626e7b515b66
-c5ddf8c5ddf8535d695d6875c5ddf8c5ddf830363d94a6bac5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf830363d94a6bac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8292e348797aac5ddf8bfd6f108090a
-bcd3edc5ddf8c5ddf88c9db1383f46c5ddf8c5ddf8c5ddf8171a1ec5ddf8
-3b424a9cafc47988985e6976c5ddf8101214a0b4cac5ddf8a9bdd414171a
-c5ddf8c5ddf8c5ddf8171a1dadc3dac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-9a9a9a8d8d8dffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c1d8f32d33390b0d0e0000000000000b0d0e
-5b6672c5ddf8c5ddf8c5ddf8c5ddf84f596465717f25292e525c68afc4dc
-c5ddf8c5ddf88a9bae282d32202428626e7cc4dcf7c5ddf8c5ddf8667381
-2c323824282d6d7b8ac5ddf8a6bad12a2f351012141a1d212a2f35626e7c
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8626e7b636f7d
-282d3347505aa7bcd3c5ddf8c5ddf8a3b7ce39414825292e6c7988bbd2ec
-c5ddf8c5ddf87988987381904f59641b1f2357616dc5ddf8b7cee7505a65
-262b30292e3492a4b8c5ddf8c5ddf88899ac272c3121252964707ec4dcf7
-c5ddf87887976976853941482b30368b9cafc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf84a535d7c8b9cc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf831373e94a6bac5ddf8c5ddf8c5ddf8c5ddf89cafc5
-717f8ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffff9b9b9b8c8c8cffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c0d7f214171a8797aac5ddf8
-c4dcf7b4c9e2c5ddf8c5ddf8bad1eb131518bdd4eec5ddf8c5ddf89cafc4
-272c31c5ddf8bed6f02a2f3547505ac5ddf8bad1ebc1d8f3c5ddf8b4c9e2
-0e1012c0d7f2c5ddf8b6cce5c5ddf8c5ddf86c7988505a65c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b7cee7c3dbf6c5ddf89cafc5
-1f2327c5ddf8c5ddf8181b1fb2c8e0c5ddf88e9fb2363d45c5ddf8899aad
-1e2125bcd3edbed5ef22272b8899acc5ddf8c5ddf830363d94a6bac5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf84d5661798898c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8292e34535d69c5ddf88ea0b3
-31373ec5ddf8c5ddf8c5ddf88c9db1383f46c5ddf8c5ddf8c5ddf8171a1e
-c5ddf83b424a9cafc47988985e6976c5ddf81012146c7a89c5ddf8758393
-4a545ec5ddf8c5ddf8c5ddf84047508696a9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffff9999998e8e8effffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85c6874070809000000000000000000
-0000000d0f1197a9bec5ddf8c5ddf8c5ddf82e343a363d45b4c9e26e7b8b
-3a4149c5ddf8b1c7df0a0c0d92a3b7abc0d7262b307f8fa0c5ddf89cafc5
-2b3036bfd6f1c2daf5a3b6cdc5ddf8c5ddf8c5ddf84c5560788797c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8454e57
-262b30adc3da8494a623272cc5ddf8bbd2ec141619808fa1bbd2ec55606b
-6c7988c5ddf8c5ddf864707e101214798898b8cfe89cafc4c5ddf8697584
-596470c4dcf7bad0eaabc0d7c5ddf8b0c5dd0a0c0d93a5b9aabfd625292e
-8292a4c5ddf8626e7c1b1f23a9bdd494a6ba202428c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf824282d9baec3c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8515b666e7b8bc5ddf8c5ddf8c5ddf8c5ddf8
-6e7b8b121417c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff9a9a9a8d8d8dffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a8bc171a1d
-262b3022272b8495a7c5ddf8c5ddf8c5ddf86976851d202431373ec5ddf8
-c5ddf83d444c2a2f351b1e2247505a47505ac5ddf899acc1181b1f394047
-282d326d7b8ac5ddf8c5ddf856616c24282d363d452b3036a5b9d0c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88393a51b1e22394047
-272c318191a3c5ddf8c5ddf8181b1fb2c8e0c5ddf88e9fb2363d45c5ddf8
-c4dcf7454e57111316121417444d56c4dcf7c5ddf8c5ddf830363d94a6ba
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf899acc12d3339282d33788797c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8292e34323940202428
-272c3195a7bbc5ddf8a2b6cc2a2f351e21250c0d0f2a2f355b6773c5ddf8
-171a1ec5ddf83b424a9cafc47988985e6976c5ddf8101214333a4122272b
-30363da2b6ccc5ddf8c5ddf8c5ddf898aabf292e341e21259db0c6c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff9898984343437979797b7b7b7c7c7c7e7e7e7f7f7f818181
-8282828484848686868787878989898a8a8a8c8c8c8d8d8d8f8f8f909090
-9292929494949595959797979898989a9a9a9b9b9b9d9d9d9e9e9ea0a0a0
-a1a1a1a3a3a3a5a5a5a6a6a69da1a78292a48494a68495a78696a98797aa
-8899ac8a9bae8b9caf8c9db18d9eb18ea0b3101215000000000000000000
-0000000000000000004e5762c5ddf8c5ddf8c5ddf82e343a798898c5ddf8
-bcd3ed0b0d0ec1d9f48393a5292e34c5ddf8c5ddf865717f47505ac5ddf8
-a5b9d0121417768494adc3dac5ddf8c5ddf8c5ddf8c5ddf84c5560788797
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-454e57626e7bc5ddf8c5ddf8101315b4c9e28b9cb0181b1f8b9cb08a9bae
-717f8e2f343bc5ddf8c5ddf864707e333a41c5ddf8c5ddf8c5ddf8c5ddf8
-72808f2b30368495a7b8cfe8c5ddf8c5ddf88190a22c3238c5ddf8c5ddf8
-626e7c4a535dc5ddf8626e7c545f6ac5ddf8c5ddf80d0e10b8cfe8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7050606b6cce5
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86b78874e5863c5ddf8c5ddf8c5ddf8
-c5ddf8b7cee7a9bdd4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffff9a9a9a8e8e8effffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b0c6debcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8b7cde6c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8c1d8f3
-adc3dac3dbf6c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9b4c9e2c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bed6f0
-aec3dbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8b7cde6b7cde6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8292e349baec3
-b6cce5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8101214b4cae3
-b5cbe4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffdfdfdfafafafadadadabababaaaaaaa8a8a8a6a6a6
-a4a4a4a3a3a3a1a1a19f9f9f9e9e9e9c9c9c9a9a9a989898979797959595
-9393939292929090908e8e8e8c8c8c8b8b8b898989878787868686848484
-8282828181817f7f7f7d7d7d7b7b7b7275795c68745b66725a657158636f
-57616d55606b545f6a535d69515b67515b664f5964060607000000000000
-0000000000000000000000003a4149c5ddf8c5ddf8c5ddf82e343a8a9bae
-c5ddf8c5ddf80a0c0db2c8e07988983d454dc5ddf8c5ddf87786963c434b
-c5ddf8c5ddf89fb3c94e58630405055f6a77c5ddf8c5ddf8c5ddf84c5560
-788797c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8454e57738190c5ddf8c5ddf82024289baec37f8fa01d2024687583
-687583687583707e8dc5ddf8c5ddf864707e5f6a77c5ddf8c5ddf8c5ddf8
-c5ddf8c4dcf7899aad363d450a0b0c8a9baec5ddf8768595404750c5ddf8
-c5ddf87482923e464ec5ddf8626e7c687583c5ddf8c5ddf8121417b2c8e0
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8101315
-abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8606c795b6773c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffff9999998e8e8effffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8292e34
-9baec3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8101214
-b4cae3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8343a42000000
-000000000000000000000000060708707e8dc5ddf8c5ddf8c5ddf82e343a
-64707ec5ddf8a9bed51e2226c5ddf895a7bb121417c5ddf8c5ddf84e5863
-5b6773c5ddf8c5ddf8c5ddf8c5ddf88e9fb216191cc5ddf8c5ddf8c5ddf8
-5b67736a7786c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8454e574d5661c5ddf8bed5ef0d0f11c1d9f4a2b6cc0a0c0d
-bed6f0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf864707e606c79c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85b667249525cc5ddf892a4b814171a
-c5ddf8c5ddf84c55605e6976c5ddf8626e7c687583c5ddf8c5ddf8121417
-b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-32383f8fa1b4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8444d567c8b9cc5ddf8
-c5ddf8c5ddf8c5ddf8a9bdd47b8a9bc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffff9898988f8f8fffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf89fb2c86e7b8b6e7b8b6e7b8b6e7b8b6e7b8bc0d7f2c5ddf8
-99acc1b9d0e9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-92a4b8c0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a8bcd4
-0f11130000000000000000000506061d2024c0d7f2c5ddf8c5ddf8c5ddf8
-2e343a1d2024505a65202428707e8dc5ddf8c5ddf83239402c313748515b
-141619adc3dac5ddf87e8e9f454e576a7786363d455d6875c5ddf8c5ddf8
-c5ddf899acc1191c20545e6a8292a4c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8454e57191c204a545e262b305c6874c5ddf8c5ddf8
-56616c1e21255f6a774f59644b545fc5ddf8c5ddf864707e606c79c5ddf8
-c5ddf8c5ddf8c5ddf855606b545f6a6774822125298ea0b3c5ddf8c4dcf7
-30363d2d333947505a14171aafc4dcc5ddf8626e7c687583c5ddf8c5ddf8
-121417b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8667381636f7dc5ddf8c5ddf8c5ddf8c5ddf8c3dbf61d2024adc3da
-c5ddf8c5ddf8c5ddf8c5ddf8788797030404c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff989898909090ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8a8bcd42c32380b0d0e10131549525cbad1ebc5ddf8c5ddf8c5ddf8
-c5ddf82e343a8d9eb18595a8b0c5ddc5ddf8c5ddf8c5ddf8c1d8f38b9caf
-8191a3b4c9e2c5ddf8c5ddf8bed6f092a3b77d8c9da8bcd4c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8bfd6f198abc0a6bad1c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8454e577b8a9b899aada8bcd4c5ddf8c5ddf8
-c5ddf8c5ddf8a0b4ca7d8c9d8e9fb2bed5efc5ddf8c5ddf8adc2d9acc1d8
-c5ddf8c5ddf8c5ddf8c5ddf8b6cce58899ac8393a5b4cae3c5ddf8c5ddf8
-c5ddf8c0d7f28a9bae8191a3b4cae3c5ddf8c5ddf8adc2d9adc3dac5ddf8
-c5ddf898abc0c0d7f2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8bad0ea202428c1d8f3c5ddf8c5ddf8c5ddf8899aad4b545f
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8525c684f5964c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff979797909090ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf82e343a96a9bdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8454e577f8fa0c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf87685959eb1c7c5ddf8c5ddf8c5ddf86a7786
-a9bed5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525cafc4dcc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffff969696919191
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c4dcf78494a658626eb4c9e2c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-b6cce5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8758393acc1d8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8abc0d76e7b8b
-6e7b8b6e7b8b6e7b8b6e7b8bb4c9e2c5ddf88191a39fb3c9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff969696
-929292ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89eb1c721262a97a9bec1d8f3
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8515b6623272c8ea0b3c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-959595929292ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86f7c8c55606bc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf87e8e9f4e5762c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffff949494939393ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf86875835b6672
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf892a3b7394047c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf87c8b9c92a3b7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff949494949494ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee394047
-7a8899c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89eb1c725292ec5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8282d3358626ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffff939393949494ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b4c9e2131518
-212529bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d8f32f343b515b66a3b6cd
-c5ddf8c5ddf8c5ddf8adc2d9b4c9e2c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffff929292959595ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c3dbf63f474f738190c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1262b305f6b78
-a9bed5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffff919191969696ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf86976855a6571c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf89cafc5282d32
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88fa1b495a7bbc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff919191979797ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8707e8d545e6ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf892a3b7
-394047c5ddf8c5ddf8c5ddf8c5ddf8c5ddf832394049525cc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff909090979797ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8a2b6cc1d20248b9cafbfd6f1c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-7a899a515b66c5ddf8c5ddf8c5ddf8c5ddf8c4dcf70e101295a7bbc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffff8f8f8f989898
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf892a3b7697685b7cde6c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-49525c2c323895a7bbc5ddf8c5ddf8c5ddf8c5ddf8adc2d94c5560c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff8f8f8f
-999999ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-8e8e8e999999ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffff8d8d8d9a9a9affffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff8d8d8d9b9b9bffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88696a95c6874c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bad1eba4b8cf
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffff8c8c8c9b9b9bffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87d8c9d4e5762
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf895a7bb
-2f353cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffff8b8b8b9c9c9cffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8b6cce57482924b545f636f7dbad0eac5ddf87d8c9d
-4e576275839357616da3b6cdc5ddf8c5ddf8c2daf5707d8d4b545f6e7b8b
-c1d9f4c5ddf8c5ddf8abc0d776849498abc0535d69626e7cc3dbf66c7a89
-454e5716191c5b67735b6773c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffff8b8b8b9d9d9dffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf84e57625e69769db0c67a899ab0c6dec5ddf8
-7d8c9d1012146d7b8a798898141619c5ddf8c5ddf855606b32383f8798ab
-363d45515b67c5ddf8c5ddf895a7bb171a1e373e467f8fa0697685c0d7f2
-9cafc46f7c8c24282d93a5b993a5b9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff8a8a8a9d9d9dffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf830363d707e8dbed5efc5ddf8c5ddf8
-c5ddf87d8c9d2f343bc5ddf8c5ddf81e2226a7bcd3c5ddf80b0d0e9cafc4
-c5ddf8a3b6cd070809c4dcf7c5ddf895a7bb020202b7cde6c5ddf8c5ddf8
-c5ddf8c5ddf895a7bb2f353cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffeff5fdc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff8989899e9e9effffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a3b7ce434c550c0d0f454e57
-b9d0e9c5ddf87d8c9d4e5762c5ddf8c5ddf82c323898aabfc0d7f2000000
-bed5efc5ddf8c1d8f3000000b7cee7c5ddf895a7bb282d32c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf895a7bb2f353cc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffeff5fd
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c8dff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffff8989899f9f9f
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd2
-2024287c8b9cc5ddf87d8c9d4e5762c5ddf8c5ddf82c323898aabfc5ddf8
-0c0d0f9baec3c5ddf8a2b6cc08090ac5ddf8c5ddf895a7bb2f353cc5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf89baec32a2f35c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-eff5fdc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c8dff8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff888888
-9f9f9fffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8616d7a92a3b7
-90a2b51e2226a6bbd2c5ddf87d8c9d4e5762c5ddf8c5ddf82c323898aabf
-c5ddf856616c2f343b8696a9333a41535d69c5ddf8c5ddf895a7bb2f353c
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d9f41113167583938d9eb1c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffff3f8fec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8cbe0f9ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-878787a0a0a0ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87e8e9f
-4f59645b667295a8bcc5ddf8c5ddf8a1b5cb899aadc5ddf8c5ddf8798898
-aec3dbc5ddf8c2daf5707d8d4b545f6e7b8bc1d9f4c5ddf8c5ddf8adc2d9
-7a899ac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aabfd6738291626e7b
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffcfe3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8e2eefbffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffff878787a1a1a1ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffe6f0fcc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c8dff8fbfdffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff868686a1a1a1ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffebf3fdcfe3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c6def8d8e8faf1f7fdffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffff858585a2a2a2ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff3f8fe
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fdf2f8fd
-f2f8fdf2f8fdfbfcfeffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffff848484a3a3a3ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffff848484a3a3a3ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8bfd6f1b3c9e1c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bfd6f1
-bbd2ecc5ddf8c5ddf8c5ddf8b8cfe8c1d9f4c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff838383a4a4a4ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8748292b9d0e9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf894a6ba363d45c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b9d0e9748292c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-525c688a9baec5ddf8c5ddf8c5ddf86f7c8c6e7b8bc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff828282a5a5a5ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8a6bbd27d8c9d8ea0b3bbd2ec
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8191c20abc0d7c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf894a6ba363d45c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8acc1d8181b1fc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-b0c6de22272bc4dcf7c5ddf8c5ddf8c5ddf8bad0ea1e2125bed6f0c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffff828282a6a6a6
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c1d9f4444c560d0f110606070c0d0f
-12151792a4b9c5ddf8c5ddf8c5ddf8c5ddf8c1d9f42d333964707e24282d
-6c7988bdd4eec5ddf8c4dcf7657280212529272c318696a9c5ddf8c5ddf8
-b7cee7505a65262b30292e3492a4b8c5ddf87d8d9e2a2f3505060625292e
-2a2f358a9baec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-acc1d849525c25292e2d3339a3b7cec5ddf894a6ba333a41515b6624282d
-6c7988c5ddf8c5ddf8b9d0e948515b1c2023343a42a5b9d0c5ddf8c5ddf8
-b1c7df3e464e7f8fa0262b302a2f35b4c9e255606b25292e0506062a2f35
-2a2f35b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8616d7a64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525c7d8c9d
-c5ddf8c5ddf8c5ddf8c5ddf8a7bcd3687583c3dbf6c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff818181
-a6a6a6ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8606b7808090a000000000000
-0000000000000f1113b4cae3c5ddf8c5ddf8c5ddf8c1d8f30000005e6976
-b6cce5434c556d7b8ac5ddf88495a71f2327a9bdd496a9bd0d0f11adc3da
-c5ddf8697584596470c4dcf7bad0eaabc0d7c5ddf8c5ddf8c5ddf8191c20
-abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf84f596472808fc5ddf8b3c9e1b2c8e0c5ddf894a6ba02020291a2b6
-b1c7df141619b4c9e2c5ddf8515b67434b54b6cce56f7c8c212529c4dcf7
-c5ddf8acc1d80708094b545fabc0d7a3b7ceb8cfe8c5ddf8acc1d8181b1f
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf83b424a8494a6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8687583
-57616dc5ddf8c5ddf8c5ddf8c5ddf88595a8000000c1d8f3c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-808080a7a7a7ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8121517000000000000
-000000000000000000030404738292c5ddf8c5ddf8c5ddf8c1d8f3000000
-acc1d8c5ddf88b9cb0394047c5ddf8505a655c6874c5ddf8c5ddf832383f
-7a899ac5ddf872808f2a2f358495a7b8cfe8c5ddf8c5ddf8c5ddf8c5ddf8
-191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf858636f3940478b9cb0bdd4eec5ddf8c5ddf894a6ba24282d
-c5ddf8c5ddf83d454d8798abc5ddf81c202390a2b5c5ddf8bfd6f1040505
-aec3dbc5ddf8acc1d8000000b0c6dec5ddf8c5ddf8c5ddf8c5ddf8acc1d8
-181b1fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf81b1f239eb1c7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-8393a5373e46c5ddf8c5ddf8c5ddf8c5ddf8bbd2eca6bad1c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffff7f7f7f4343436464646161615f5f5f5c5c5c595959565656535353
-5050504d4d4d4b4b4b4848484545454242423f3f3f3c3c3c3a3a3a373737
-3434343131312e2e2e2b2b2b2929292828282828282828282828281f2326
-1e22261e22261e22261e22261e22261e22261e22261d2125010202000000
-000000000000000000000000000000525d68c5ddf8c5ddf8c5ddf8c1d8f3
-000000bcd3edc5ddf89cafc41f2327c5ddf8464e58707e8dc5ddf8c5ddf8
-444d566f7c8cc5ddf8c4dcf7899aad363d450a0b0c8a9baec5ddf8c5ddf8
-c5ddf8191c20abc0d7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c1d8f37e8e9f2b30361013159cafc5c5ddf894a6ba
-363d45c5ddf8c5ddf8434c558190a2c5ddf8131518a4b8cfc5ddf8c5ddf8
-101315a3b6cdc5ddf8acc1d8171a1dc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-acc1d8181b1fc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8282d3394a6bac5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8778696434c55c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffdededec1c1c1c4c4c4c7c7c7cacacacccccccfcfcfd2d2d2
-d5d5d5d8d8d8dbdbdbdddddde0e0e0e3e3e3e6e6e6e9e9e9ebebebeeeeee
-f1f1f1f4f4f4f7f7f7f9f9f9fcfcfcffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8171a1d
-0000000000000000000000000000000608097f8fa0c5ddf8c5ddf8c5ddf8
-c1d8f300000097a9bec5ddf8768595515b67c5ddf8626e7b444d56c5ddf8
-c5ddf81b1f238ea0b3c5ddf8c5ddf8c5ddf8c5ddf85b667249525cc5ddf8
-c5ddf8c5ddf8282d339db0c6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c2daf5434c55626e7cc5ddf8
-94a6ba363d45c5ddf8c5ddf8434c558190a2c5ddf82f343b788797c5ddf8
-adc3da050606bcd3edc5ddf8acc1d8181b1fc5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b8cfe80f1113c3dbf6c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf849525c788797c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf85b677365717fc5ddf8c5ddf8c5ddf8c5ddf8b2c8e07a899a
-bcd3edc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-7f8fa10a0c0d000000000000000000000000171a1ec0d7f2c5ddf8c5ddf8
-c5ddf8c1d8f3010101282d33535d691b1f2398aabfc5ddf8b1c7df14171a
-454e5730363d2e343ac4dcf7c5ddf856616c545f6a6774822125298ea0b3
-c5ddf8c5ddf8c5ddf86c7a89252a2f5a65719db0c6c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8434c555b6672636f7d191c20a6bad1
-c5ddf894a6ba363d45c5ddf8c5ddf8434c558190a2c5ddf88c9db10e1012
-535d691a1d215f6b78c5ddf8c5ddf8acc1d8181b1fc5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf83b424a3941485b6773b8cfe8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf87d8d9e4c5560c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf82f343b99acc1c5ddf8c5ddf8c5ddf8c5ddf88fa1b4
-000000b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf87583940d0f110f11130f11132b3036b0c6dec5ddf8c5ddf8
-c5ddf8c5ddf8c1d8f3030404b0c5dd8495a7bdd4eec5ddf8c5ddf8c5ddf8
-b5cbe48292a48a9baec0d7f2c5ddf8c5ddf8b6cce58899ac8292a4b4cae3
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b6cce594a6bab2c8e0c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8b0c6de8494a68798abbad0ea
-c5ddf8c5ddf8b9d0e9a1b5cbc5ddf8c5ddf8a5b9d0b4c9e2c5ddf8c5ddf8
-a6bbd27d8d9e97a9bec5ddf8c5ddf8c5ddf8bed6f09aadc2c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8aabfd693a5b9bfd6f1c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c2daf522272bb6cce5
-c5ddf8c5ddf8c5ddf8a0b4ca343a42c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-697685383f46c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c4dcf7a9bed5b9d0e9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c1d8f3030404c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf88797aa
-8e9fb2c5ddf8c5ddf8c5ddf87a899a9aadc2c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf85a65719eb1c7c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c3dbf65e6976c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-95a7bb6e7b8b6e7b8b6e7b8b6e7b8b738291c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bdd4ee8899acb4c9e2c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8bcd3ed677482141619a9bdd4c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8545f6a768595
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf85f6a77
-6c7988c5ddf8c5ddf8c5ddf8c5ddf8bed5ef363d459baec3c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-7482924b545fc5ddf8c5ddf8c5ddf8c5ddf8bcd3ed11131690a2b5c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8b6cce5282d322c3137b2c8e0c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf88e9fb2272c319fb3c9c2daf5c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8636f7d64707ec5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-4b545f95a7bbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf85e69766c7a89c5ddf8c5ddf8c5ddf8c5ddf8
-bfd6f10000008797aac5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8bbd2ec333a4191a2b6c5ddf8c5ddf8c5ddf8
-c5ddf893a5b91e2125c2daf5c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8b4cae33940475f6b78bfd6f1c5ddf8c5ddf8
-c5ddf8c5ddf895a8bc95a7bbc5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f9
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-d0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffd0e3f9c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8ffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffd2e5fac5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c7def8ffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffe7f1fcc5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8d9e9fa
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffdfeffddebfb
-c9dff8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8
-c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c5ddf8c7def8dceafb
-f8fbfe
-
-[/Creator (html2ps version 1.0 beta7) /Author () /Keywords (xsd, xml, schema, c++, mapping, data, binding, parser, validation) /Subject ()
- /Title (C++/Parser Mapping Getting Started Guide) /DOCINFO pdfmark
-/ND 1 D
-/HN [(1) (1) (1) (1) (1) (1) (1) (1) (2) (3) (3) (4) (6) (8) (8) (9) (12) (13)
-(14) (18) (18) (21) (24) (27) (27) (28) (28) (28) (29) (35) (??) (38) (39)
-(39) (41) (42) (43) (44) (45) (46) (47) (47) (48) (49) (50) (50) (55) (59)
-(63) (??) (1) (1) (1) (1) (1) (2) (3) (3) (4) (6) (8) (8) (9) (12) (13)
-(14) (18) (18) (21) (24) (27) (27) (28) (28) (28) (29) (35) (38) (39) (39)
-(41) (42) (43) (44) (45) (46) (47) (47) (48) (49) (50) (50) (55) (59) (63)] D
-/h0 [()(Table of Contents)] D
-/h1 [(1\240\240)(Preface)] D
-/h2 [(1.1\240\240)(About This Document)] D
-/h3 [(1.2\240\240)(More Information)] D
-/h4 [(2\240\240)(1 Introduction)] D
-/h5 [(2.1\240\240)(1.1 Mapping Overview)] D
-/h6 [(2.2\240\240)(1.2 Benefits)] D
-/h7 [(3\240\240)(2 Hello World Example)] D
-/h8 [(3.1\240\240)(2.1 Writing XML Document and Schema)] D
-/h9 [(3.2\240\240)(2.2 Translating Schema to C++)] D
-/h10 [(3.3\240\240)(2.3 Implementing Application Logic)] D
-/h11 [(3.4\240\240)(2.4 Compiling and Running)] D
-/h12 [(4\240\240)(3 Parser Skeletons)] D
-/h13 [(4.1\240\240)(3.1 Implementing the Gender Parser)] D
-/h14 [(4.2\240\240)(3.2 Implementing the Person Parser)] D
-/h15 [(4.3\240\240)(3.3 Implementing the People Parser)] D
-/h16 [(4.4\240\240)(3.4 Connecting the Parsers Together)] D
-/h17 [(5\240\240)(4 Type Maps)] D
-/h18 [(5.1\240\240)(4.1 Object Model)] D
-/h19 [(5.2\240\240)(4.2 Type Map File Format)] D
-/h20 [(5.3\240\240)(4.3 Parser Implementations)] D
-/h21 [(6\240\240)(5 Mapping Configuration)] D
-/h22 [(6.1\240\240)(5.1 C++ Standard)] D
-/h23 [(6.2\240\240)(5.2 Character Type and Encoding)] D
-/h24 [(6.3\240\240)(5.3 Underlying XML Parser)] D
-/h25 [(6.4\240\240)(5.4 XML Schema Validation)] D
-/h26 [(6.5\240\240)(5.5 Support for Polymorphism)] D
-/h27 [(7\240\240)(6 Built-In XML Schema Type Parsers)] D
-/h28 [(7.1\240\240)(6.1 QName Parser)] D
-/h29 [(7.2\240\240)(6.2 NMTOKENS and IDREFS Parsers)] D
-/h30 [(7.3\240\240)(6.3 base64Binary and hexBinary Parsers)] D
-/h31 [(7.4\240\240)(6.4 Time Zone Representation)] D
-/h32 [(7.5\240\240)(6.5 date Parser)] D
-/h33 [(7.6\240\240)(6.6 dateTime Parser)] D
-/h34 [(7.7\240\240)(6.7 duration Parser)] D
-/h35 [(7.8\240\240)(6.8 gDay Parser)] D
-/h36 [(7.9\240\240)(6.9 gMonth Parser)] D
-/h37 [(7.10\240\240)(6.10 gMonthDay Parser)] D
-/h38 [(7.11\240\240)(6.11 gYear Parser)] D
-/h39 [(7.12\240\240)(6.12 gYearMonth Parser)] D
-/h40 [(7.13\240\240)(6.13 time Parser)] D
-/h41 [(8\240\240)(7 Document Parser and Error Handling)] D
-/h42 [(8.1\240\240)(7.1 Xerces-C++ Document Parser)] D
-/h43 [(8.2\240\240)(7.2 Expat Document Parser)] D
-/h44 [(8.3\240\240)(7.3 Error Handling)] D
-/h45 [(9\240\240)(Appendix A \236 Supported XML Schema Constructs)] D
-/Hr [50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
-72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94]D
-/HV [1 2 2 1 2 2 1 2 2 2 2 1 2 2 2 2 1 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 2
-2 2 2 2 2 2 2 1 2 2 2 1]D
-/Cn [2 0 0 2 0 0 4 0 0 0 0 4 0 0 0 0 3 0 0 0 5 0 0 0 0 0 13 0 0 0 0 0 0
-0 0 0 0 0 0 0 3 0 0 0 0]D
-Hr length 0 gt{[/PageMode /UseOutlines /DOCVIEW pdfmark}if
-/Hn 1 D
-0 1 Hr length 1 sub{
- /Bn E D [Cn Bn get dup 0 gt{/Count E HV Bn get Bl ge{neg}if}{pop}ie
- /Dest Hr Bn get dup abs ST cvs cvn E 0 ge{(h)Hn ST cvs join cvx exec
- dup 1 get E Nf{0 get E join}{pop}ie /Hn Hn 1 add D}{()}ie
- /Title E dup length 255 gt{0 255 getinterval}if /OUT pdfmark}for
-ZF /FN Fp D Ps 0 FS /WC Wf{( )}{<A1A1>}ie SW pop D
-ET RC ZF
-/Df f D
-/R0 (http://www.codesynthesis.com/licenses/fdl-1.2.txt) D
-/R1 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/index.xhtml) D
-/R2 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.pdf) D
-/R3 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.ps) D
-/R1 (http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml) D
-/R2 (http://www.codesynthesis.com/mailman/listinfo/xsd-users) D
-/R3 (http://www.codesynthesis.com/pipermail/xsd-users/) D
-/R4 (http://www.w3.org/TR/xmlschema-0/) D
-/TS {
- tables E get /table E D
- table aload pop /rdesc E D /cdesc E D /tdesc E D
- tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
- /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
- /flow E D /clear E D /tclass E D pop pop
- /w W D /eps 0.1 D /OU f D /PL 1 D
- /FN EF 21 get D EZ 21 get Ey 21 get FS
- 0 1 1{
- /pass E D
- 0 1 nrow{
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D pop pop pop
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- pass 0 eq cspan 1 eq and pass 1 eq cspan 1 gt and or{
- /W 1e5 D /LL W D /PH 1 D
- ctype 1 eq{() BD}if
- RC align NA
- AT 4 eq{/CD t D /DC dp D /LN 0 D /M1 0 D /M2 0 D}{/CD f D}ie
- 0 0 M /LM 0 D proc exec BN
- AT 4 eq{
- LN array astore cell 15 3 -1 roll put
- cdesc icol get dup dup 5 get M1 lt{5 M1 put}{5 get /M1 E D}ie
- dup 6 get M2 lt{6 M2 put}{6 get /M2 E D}ie
- /LM M1 M2 add D
- }if
- /CD f D
- ang 0 ne{/LM CP E pop neg D}if
- /thiswid LM left add right add eps add D
- /oldmin 0 D /oldmax 0 D
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 2 get /oldmax E oldmax add D
- 1 get /oldmin E oldmin add D
- }for
- thiswid oldmax ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 2 E 2 get oldmax 0 eq
- {pop thiswid cspan div}{thiswid mul oldmax div}ie
- put
- }for
- }if
- nowrap 1 eq{
- thiswid oldmin ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 1 E 1 get oldmin 0 eq
- {pop thiswid cspan div}{thiswid mul oldmin div}ie
- put
- }for
- }if
- }{
- /W 0 D /LL W D /PH 2 D
- ctype 1 eq{() ES () BD}if
- 0 0 M /LM 0 D RC proc exec BN
- /thiswid LM left add right add eps add D
- thiswid oldmin ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 1 E 1 get oldmin 0 eq
- {pop thiswid cspan div}{thiswid mul oldmin div}ie
- put
- }for
- }if
- }ie
- ctype 1 eq{() ES}if
- }if
- }if
- }for
- }for
- }for
- /tmin 0 D /tmax 0 D
- 0 1 ncol{
- cdesc E get dup 1 get E 2 get 2 copy gt{pop dup}if
- tmax add /tmax E D tmin add /tmin E D
- }for
- twid 0 lt{twid neg IW gt{IW neg}{twid}ie /twid E D}if
- tdesc 0 twid neg tmin 2 copy lt{E}if pop put
- tdesc 1 twid neg tmax 2 copy lt{E}if pop put
- /W w D /LL W D /OU t D /PH 0 D /PL 0 D
-} D
-/PT {
- /PL PL 1 add D
- tables E get /table E D Tm 21 get Ts mul BE
- PL 2 ge{save}if
- /SL SL 1 add D /FN EF 21 get D EZ 21 get Ey 21 get FS
- table aload pop /rdesc E D /cdesc E D /tdesc E D
- tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
- /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
- /flow E D /clear E D /tclass E D /tmax E D /tmin E D
- /w W D /xo XO D /mr MR D /ll LL D /lg LG D /ai AI D /bc BC D /nr NR D /ar AR D
- /tr TR D /ui UI D /ph PH D /a0 A0 D /pf PF D /at AT D /av AV D /al AL D
- /Le LE D /la La D
- talign 0 lt{/talign AL 0 gt{AV AL get}{A0 2 le{A0}{0}ie}ie D}if
- ph 1 eq ph 2 eq or{
- NL ph 1 eq{tmax}{tmin}ie dup XO add LM gt{/LM E XO add D}{pop}ie LM E
- }{
- /PH 3 D /LE 1e5 D RC %ZF
- border 0 gt{/border 1 D}if
- /twidth 0 D /avail W xo sub D
- twid 0 eq{0 1 ncol{cdesc E get dup 2 get E 3 get dup 0 gt{div neg dup twid lt
- {/twid E D}{pop}ie}{pop pop}ie}for}if
- /twid twid dup 0 lt{neg avail 2 copy gt{E}if pop}{avail mul}ie D
- /OK t D 0 1 ncol{cdesc E get dup 1 get E 3 get twid mul gt{/OK f D}if}for
- 0 1 ncol{
- cdesc E get dup 1 get /colmin E D dup 3 get /cwid E twid mul D dup
- tmax avail le{2 get}if
- tmin avail le tmax avail gt and{
- dup 2 get E 1 get dup 3 1 roll sub avail tmin sub mul tmax tmin sub div add
- }if
- tmin avail gt{1 get}if
- 0 E colmin cwid lt OK and{pop cwid}if dup /twidth E twidth add D put
- }for
- /OU f D CP
- tmin twid le{
- 0 1 ncol{cdesc E get dup 0 get twidth div twid mul 0 E put}for
- /twidth twid D
- }if
- CP printcap CP E pop sub /caphig E D pop
- 0 1 1{
- /pass E D
- 0 1 nrow{
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D pop pop pop
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /W 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /W E W add D}for
- pass 0 eq rspan 1 eq and pass 1 eq rspan 1 gt and or{
- ctype 1 eq{() BD}if
- /W W left sub right sub D /XO 0 D /EO 0 D SI
- /A0 align D RC align NA
- AT 4 eq{
- /DC dp D /DO 0 D /ID 1 D
- 0 1 DV length 1 sub{DV E get dup DO gt{/DO E D}{pop}ie}for
- /Lo DO DV 0 get sub D /L1 Lo D
- }if
- 0 0 M /BP t D /Fl t D /MF 0 D /FB 0 D
- proc exec T not{/CI 0 D}if BN 0 FB neg R MF 0 eq{/MF CS D}if
- CP /thishig E neg bot add top add CI add D pop
- ang 0 ne{/thishig LM bot add top add D}if
- cell 16 MF put cell 17 Ya put cell 18 thishig put
- valign 4 eq{
- /below thishig Ya sub D
- rdesc irow get dup dup 4 get Ya lt
- {4 Ya put}{4 get /Ya E D}ie
- dup 5 get below lt{5 below put}{5 get /below E D}ie
- /thishig Ya below add D
- }if
- ctype 1 eq{()ES}if
- /oldhig 0 D
- 0 1 rspan 1 sub{
- irow add rdesc E get 0 get /oldhig E oldhig add D
- }for
- thishig oldhig ge{
- 0 1 rspan 1 sub{
- irow add rdesc E get dup 0 E 0 get oldhig 0 eq
- {pop thishig rspan div}{thishig mul oldhig div}ie
- put
- }for
- }if
- }if
- }if
- }for
- }for
- }for M RC %ZF
- /thight 0 D /racc 0 D /maxh 0 D /brk 0 D /rbeg nhead nfoot add D
- 0 1 nrow{
- rdesc E get dup 0 get dup /thight E thight add D
- brk 0 eq{/racc E D}{/racc E racc add D}ie
- racc maxh gt{/maxh racc D}if 2 get /brk E D
- }for
- ph 3 ge{thight caphig add E}if
- ph 0 eq ph 4 eq or{
- /PH 4 D /LE Le D /OU Ou D /yoff 0 D /headsz 0 D
- 0 1 nhead 1 sub{rdesc E get 0 get headsz add /headsz E D}for
- /footsz 0 D
- 0 1 nfoot 1 sub{rdesc E nhead add get 0 get footsz add /footsz E D}for
- /ahig LE BO add MI add D /maxh maxh headsz add footsz add D
- /thight thight headsz add footsz add D
- tmin avail gt maxh ahig gt or
- {/Sf avail tmin div dup ahig maxh div gt{pop ahig maxh div}if D /SA t D}
- {/Sf 1 D}ie
- tclass 1 eq thight LE 15 sub gt and
- {/SA t D LE 15 sub thight div dup Sf lt{/Sf E D}{pop}ie}if
- SA{Sf Sf scale /ll ll Sf div D /xo xo Sf div D /LE LE Sf div D
- /mr mr Sf div D /BO BO Sf div D /ahig ahig Sf div D}if
- nhead nfoot add getwid
- LE CP E pop add capalg 0 eq{caphig sub}if
- bT{f}{dup thight lt thight ahig lt and}ie
- E headsz sub footsz sub rwid lt or{NP}if
- capalg 0 eq{printcap -8 SP}if
- CP /ycur E D pop
- printhead
- rbeg 1 nrow{/row E D row
- getwid
- ycur yoff add rwid sub footsz sub LE add 0 lt
- {nfoot 0 gt{printfoot}if Tf NP /rbeg irow1 D
- Ba{MI /MI MI SA{Sf div}if D MI SP /MI E D}if
- CP /ycur E D pop /yoff 0 D printhead}if
- irow1 printrow
- }for
- printfoot /row row 1 add D Tf
- 0 ycur yoff add M
- capalg 1 eq{/EO 0 D SI -3 SP printcap}if
- Sf 1 lt{1 Sf div dup scale /ll ll Sf mul D /xo xo Sf mul D /LE LE Sf mul D
- /mr mr Sf mul D /BO BO Sf mul D /SA f D}if
- /EO 0 D
- }if
- }ie
- /W w D /XO xo D /MR mr D /LL ll D /LG lg D /AI ai D /BC bc D /NR nr D /AR ar D
- /TR tr D /UI ui D /PH ph D /A0 a0 D /PF pf D /AT at D /AV av D /AL al D
- /La la D
- /SL SL 1 sub NN D /CF 0 D /FN 0 D SZ SL get FR SL get FS Wf not{()F2}if
- PL 2 ge{Ms E restore Ms or /Ms E D PH 1 eq PH 2 eq or
- {/LM E D}if PH 3 ge{/CI 0 D NL 0 E neg R}if
- }if
- /PL PL 1 sub D /CI 0 D /BP f D /PO f D () Bm 21 get Ts mul BE BL %CF CS SF
-} D
-/printcap{
- capalg 0 ge{
- SA{/W w Sf div D}
- {talign 1 eq{/XO xo ll twidth sub 2 div add D}if
- talign 2 eq{/XO xo ll twidth sub add D}if
- /W XO twidth add D
- }ie /XO xo D /LL W XO sub MR sub D
- /PA f D /Fl capalg 0 eq D
- 1 NA BL caption exec BN OA /PA t D
- }if
-} D
-/getwid{
- /irow1 E D
- /irow2 irow1 D
- /rwid 0 D
- {rdesc irow2 get dup 0 get rwid add /rwid E D 2 get 0 eq
- {exit}{/irow2 irow2 1 add D}ie
- }loop
-} D
-/printrow{
- /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
- /xleft xoff xo add D
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D /cvsize E D /above E D /fontsz E D
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /width 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
- /rhight rdesc irow get 0 get D
- /hight rhight D
- 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
- /W xo xoff add width add right sub D
- ang 0 ne{/W xo xoff add hight add right sub D}if
- /EO xo xoff add left add D SI
- Cf{
- gsave CB VC xo xoff add ycur yoff add M
- 0 hight neg RL width 0 RL 0 hight RL width neg 0 RL fill
- grestore
- }if
- ctype 1 eq{() BD}if
- /A0 align D RC
- AT 4 eq{
- /DC dp D /ID 1 D /DO cdesc icol get 5 get D /Lo DO DV 0 get sub D /L1 Lo D
- }if
- ang 0 ne{
- gsave ang 90 eq
- {xoff ycur add hight cvsize sub 2 div sub ycur hight sub xoff sub}
- {xoff ycur sub width add hight cvsize sub 2 div add ycur xoff add}ie
- translate ang rotate
- }if
- valign 3 le{0 ycur yoff add top sub
- hight cvsize sub valign 1 sub mul 2 div sub M}
- {0 ycur yoff add top sub above add rdesc irow get 4 get sub M}ie
- /PA f D /BP t D /Fl t D
- BL proc exec BN
- ang 0 ne{grestore}if
- /PA t D
- ctype 1 eq{() ES}if
- }if
- /xoff xoff cdesc icol get 0 get add D
- }for
- /yoff yoff rhight sub D
-} D
-/printhead {0 1 nhead 1 sub{printrow}for} D
-/printfoot {nhead 1 nhead nfoot add 1 sub{printrow}for} D
-/Tf {
- OU{rules 2 ge{/yoff 0 D
- gsave 0 Sg
- [0 1 nhead 1 sub{}for rbeg 1 row 1 sub{}for nhead 1 nhead nfoot add 1 sub{}for]{
- /irow E D
- /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- /rspan cell 6 get D
- /cspan cell 5 get D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /width 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
- /rhight rdesc irow get 0 get D
- /hight rhight D
- 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
- xo xoff add width add ycur yoff add M
- 0 hight neg icol cspan add 1 sub ncol lt
- {cdesc icol 1 add get 4 get dup rules 3 le{1 eq}{pop t}ie
- {1 eq{0.8}{0.3}ie
- LW RL CP stroke M}{pop R}ie}{R}ie
- irow nhead nfoot add 1 sub ne nfoot 0 eq or
- {irow rspan add 1 sub nrow lt
- {rdesc irow rspan add get 3 get}{nfoot 0 eq{0}{1}ie}ie
- dup rules 2 mod 0 eq{1 eq}{pop t}ie
- {1 eq irow rspan add nhead eq or irow rspan add row eq nfoot 0 gt and or
- {0.8}{0.3}ie LW width neg 0 RL CP stroke M}{pop}ie}if
- }if
- /xoff xoff cdesc icol get 0 get add D
- }for
- /yoff yoff rhight sub D
- }forall
- grestore
- /Ms t D
- }if
- frame 1 gt{
- gsave
- 1 LW 0 Sg
- xleft ycur M CP BB
- 0 yoff frame 5 eq frame 7 ge or{RL}{R}ie
- twidth 0 frame 3 eq frame 4 eq or frame 8 ge or{RL}{R}ie CP BB
- 0 yoff neg frame 6 ge{RL}{R}ie
- twidth neg 0 frame 2 eq frame 4 eq or frame 8 ge or{RL}{R}ie
- closepath stroke
- grestore
- /Ms t D
- }if
- }if
-} D
-/tables [[[0 0 0 0 0 -1 0 0 1 56 2 0 0 9 5 {()} -1]
- [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
- [[0 0 0 0 0 0 [[{()1 Sl()WB(XML Schema type)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(Parser imple)HY(men)HY(ta)HY(tion)YH( in the )SM(xml_schema)ES( names)HY(pace)YH()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(Parser return type
- )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(anyType and anySim)HY(ple)HY(Type)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anyType)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(any_type_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(void)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anySim)HY(ple)HY(Type)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(any_simple_type_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(void)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(fixed-length inte)HY(gral)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(byte_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(signed\240char)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Byte)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_byte_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240char)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(short_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(short)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Short)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_short_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240short)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(int_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(int)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsignedInt)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_int_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240int)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Long)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_long_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(arbi)HY(trary)YH(-length inte)HY(gral)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(integer_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nonPos)HY(i)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(non_posi)HY(tive)YH(_integer_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nonNeg)HY(a)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(non_nega)HY(tive)YH(_integer_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(posi)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(posi)HY(tive)YH(_integer_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nega)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nega)HY(tive)YH(_integer_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(boolean types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(boolean_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(bool)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(fixed-preci)HY(sion)YH( float)HY(ing)YH(-point types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(float)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(float_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(float)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(double)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(arbi)HY(trary)YH(-preci)HY(sion)YH( float)HY(ing)YH(-point types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(decimal_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(string-based types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(string_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(normal)HY(ized)HY(String)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(normal)HY(ized)YH(_string_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(token_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(Name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(name_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NMTOKEN)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nmtoken_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NCName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(ncname_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(language_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(qual)HY(i)HY(fied)YH( name
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(QName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(qname_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::qname)ES()BR()0 31 1 A(Section 6.1,
- ")SM(QName)ES( Parser")31 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(ID/IDREF types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ID)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(id_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(IDREF)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(idref_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(list types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NMTO)HY(KENS)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nmto)HY(kens)YH(_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::string_sequence)ES()BR()0 32 1 A(Section
- 6.2, ")SM(NMTO)HY(KENS)YH()ES( and )SM(IDREFS)ES( Parsers")32 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(IDREFS)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(idrefs_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::string_sequence)ES()BR()0 32 1 A(Section
- 6.2, ")SM(NMTO)HY(KENS)YH()ES( and )SM(IDREFS)ES( Parsers")32 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(URI types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anyURI)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(uri_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::string)ES( or )SM(std::wstring)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(binary types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(base64Binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(base64_binary_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::[auto|unique]_ptr< xml_schema::buffer>)ES()BR( )0 33 1 A(Section 6.3, ")SM(base64Binary)ES( and
- )SM(hexBi)HY(nary)YH()ES( Parsers")33 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(hexBi)HY(nary)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(hex_binary_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(std::[auto|unique]_ptr< xml_schema::buffer>)ES()BR( )0 33 1 A(Section 6.3, ")SM(base64Binary)ES( and
- )SM(hexBi)HY(nary)YH()ES( Parsers")33 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(date/time types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(date_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::date)ES()BR()0 35 1 A(Section 6.5,
- ")SM(date)ES( Parser")35 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(date)HY(Time)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(date_time_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::date_time)ES()BR()0 36 1 A(Section 6.6,
- ")SM(date)HY(Time)YH()ES( Parser")36 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(dura)HY(tion)YH(_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::dura)HY(tion)YH()ES()BR()0 37 1 A(Section 6.7,
- ")SM(dura)HY(tion)YH()ES( Parser")37 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gDay)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gday_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::gday)ES()BR()0 38 1 A(Section 6.8,
- ")SM(gDay)ES( Parser")38 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gMonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gmonth_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::gmonth)ES()BR()0 39 1 A(Section 6.9,
- ")SM(gMonth)ES( Parser")39 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gMon)HY(th)HY(Day)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gmonth_day_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::gmonth_day)ES()BR()0 40 1 A(Section 6.10,
- ")SM(gMon)HY(th)HY(Day)YH()ES( Parser")40 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gYear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gyear_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::gyear)ES()BR()0 41 1 A(Section 6.11,
- ")SM(gYear)ES( Parser")41 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gYear)HY(Month)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gyear_month_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::gyear_month)ES()BR()0 42 1 A(Section
- 6.12, ")SM(gYear)HY(Month)YH()ES( Parser")42 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(time_pimpl)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::time)ES()BR()0 43 1 A(Section 6.13,
- ")SM(time)ES( Parser")43 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-]]
-[[0 0 0 0 0 -1 0 0 1 57 1 0 0 9 5 {()} -1]
- [[0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
- [[0 0 0 0 0 0 [[{()1 Sl()WB(Construct)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(Notes)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(Struc)HY(ture)YH()} 0 0 1 0 2 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(element)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(attribute)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(any)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(anyAt)HY(tribute)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(all)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(sequence)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(choice)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(complex type, empty content)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(complex type, mixed content)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(complex type, simple content exten)HY(sion)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(complex type, simple content restric)HY(tion)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(Simple type facets are not vali)HY(dated)YH(.)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(complex type, complex content exten)HY(sion)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(complex type, complex content restric)HY(tion)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(list)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(Datatypes)} 0 0 1 0 2 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(byte)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(unsigned)HY(Byte)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(short)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(unsigned)HY(Short)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(int)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(unsignedInt)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(long)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(unsigned)HY(Long)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(integer)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(nonPos)HY(i)HY(tiveIn)HY(te)HY(ger)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(nonNeg)HY(a)HY(tiveIn)HY(te)HY(ger)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(posi)HY(tiveIn)HY(te)HY(ger)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(nega)HY(tiveIn)HY(te)HY(ger)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(boolean)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(float)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(double)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(decimal)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(string)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(normal)HY(ized)HY(String)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(token)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(Name)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(NMTOKEN)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(NCName)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(language)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(anyURI)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(ID)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(Iden)HY(tity)YH( constraint is not enforced.)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(IDREF)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(Iden)HY(tity)YH( constraint is not enforced.)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(NMTO)HY(KENS)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(IDREFS)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(Iden)HY(tity)YH( constraint is not enforced.)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(QName)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(base64Binary)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(hexBi)HY(nary)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(date)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(date)HY(Time)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(dura)HY(tion)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(gDay)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(gMonth)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(gMon)HY(th)HY(Day)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(gYear)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(gYear)HY(Month)YH()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(time)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-]]
-] D
-0 1 1{TS}for RC ZF
-/Ba f D /BO 0 D Bs
-/UR (/home/boris/work/xsd/xsd/doc/cxx/parser/guide/index.xhtml) D
-/Ti (C++/Parser Mapping Getting Started Guide) D
-/Au () D
-/Df f D
-/ME [] D
-Pt
-/BO 0 D TC /Ba f D Bs /AU f D /UR () D RC ZF
- tH WB
-ND 1 gt{Ts 3 mul Np 0()0 C()BD(C++/Parser Mapping Getting Started Guide)ES()0 1 TN()EA()BN}if
-1 NH le{50(1\240\240)1 C(Preface)WB 3 Sn()50 1 TN()EA()BN}if
-2 NH le{51(1.1\240\240)2 C(About)WB 4 Sn( This Docu)HY(ment)YH()51 1 TN()EA()BN}if
-2 NH le{52(1.2\240\240)2 C(More)WB 5 Sn( Infor)HY(ma)HY(tion)YH()52 1 TN()EA()BN}if
-1 NH le{53(2\240\240)1 C(1)WB 6 Sn( Intro)HY(duc)HY(tion)YH()53 1 TN()EA()BN}if
-2 NH le{54(2.1\240\240)2 C(1.1)WB 7 Sn( Mapping Overview)54 1 TN()EA()BN}if
-2 NH le{55(2.2\240\240)2 C(1.2)WB 8 Sn( Bene)HY(fits)YH()55 1 TN()EA()BN}if
-1 NH le{56(3\240\240)1 C(2)WB 9 Sn( Hello World Example)56 1 TN()EA()BN}if
-2 NH le{57(3.1\240\240)2 C(2.1)WB 10 Sn( Writing XML Docu)HY(ment)YH( and Schema)57 1 TN()EA()BN}if
-2 NH le{58(3.2\240\240)2 C(2.2)WB 11 Sn( Trans)HY(lat)HY(ing)YH( Schema to C++)58 1 TN()EA()BN}if
-2 NH le{59(3.3\240\240)2 C(2.3)WB 12 Sn( Imple)HY(ment)HY(ing)YH( Appli)HY(ca)HY(tion)YH( Logic)59 1 TN()EA()BN}if
-2 NH le{60(3.4\240\240)2 C(2.4)WB 13 Sn( Compil)HY(ing)YH( and Running)60 1 TN()EA()BN}if
-1 NH le{61(4\240\240)1 C(3)WB 14 Sn( Parser Skele)HY(tons)YH()61 1 TN()EA()BN}if
-2 NH le{62(4.1\240\240)2 C(3.1)WB 15 Sn( Imple)HY(ment)HY(ing)YH( the Gender Parser)62 1 TN()EA()BN}if
-2 NH le{63(4.2\240\240)2 C(3.2)WB 16 Sn( Imple)HY(ment)HY(ing)YH( the Person Parser)63 1 TN()EA()BN}if
-2 NH le{64(4.3\240\240)2 C(3.3)WB 17 Sn( Imple)HY(ment)HY(ing)YH( the People Parser)64 1 TN()EA()BN}if
-2 NH le{65(4.4\240\240)2 C(3.4)WB 18 Sn( Connect)HY(ing)YH( the Parsers Together)65 1 TN()EA()BN}if
-1 NH le{66(5\240\240)1 C(4)WB 19 Sn( Type Maps)66 1 TN()EA()BN}if
-2 NH le{67(5.1\240\240)2 C(4.1)WB 20 Sn( Object Model)67 1 TN()EA()BN}if
-2 NH le{68(5.2\240\240)2 C(4.2)WB 21 Sn( Type Map File Format)68 1 TN()EA()BN}if
-2 NH le{69(5.3\240\240)2 C(4.3)WB 22 Sn( Parser Imple)HY(men)HY(ta)HY(tions)YH()69 1 TN()EA()BN}if
-1 NH le{70(6\240\240)1 C(5)WB 23 Sn( Mapping Config)HY(u)HY(ra)HY(tion)YH()70 1 TN()EA()BN}if
-2 NH le{71(6.1\240\240)2 C(5.1)WB 24 Sn( C++ Stan)HY(dard)YH()71 1 TN()EA()BN}if
-2 NH le{72(6.2\240\240)2 C(5.2)WB 25 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()72 1 TN()EA()BN}if
-2 NH le{73(6.3\240\240)2 C(5.3)WB 26 Sn( Under)HY(ly)HY(ing)YH( XML Parser)73 1 TN()EA()BN}if
-2 NH le{74(6.4\240\240)2 C(5.4)WB 27 Sn( XML Schema Vali)HY(da)HY(tion)YH()74 1 TN()EA()BN}if
-2 NH le{75(6.5\240\240)2 C(5.5)WB 28 Sn( Support for Poly)HY(mor)HY(phism)YH()75 1 TN()EA()BN}if
-1 NH le{76(7\240\240)1 C(6)WB 29 Sn( Built-In XML Schema Type Parsers)76 1 TN()EA()BN}if
-2 NH le{77(7.1\240\240)2 C(6.1)WB 31 Sn( )SM(QName)ES( Parser)77 1 TN()EA()BN}if
-2 NH le{78(7.2\240\240)2 C(6.2)WB 32 Sn( )SM(NMTO)HY(KENS)YH()ES( and )SM(IDREFS)ES( Parsers)78 1 TN()EA()BN}if
-2 NH le{79(7.3\240\240)2 C(6.3)WB 33 Sn( )SM(base64Binary)ES( and )SM(hexBi)HY(nary)YH()ES( Parsers)79 1 TN()EA()BN}if
-2 NH le{80(7.4\240\240)2 C(6.4)WB 34 Sn( Time Zone Repre)HY(sen)HY(ta)HY(tion)YH()80 1 TN()EA()BN}if
-2 NH le{81(7.5\240\240)2 C(6.5)WB 35 Sn( )SM(date)ES( Parser)81 1 TN()EA()BN}if
-2 NH le{82(7.6\240\240)2 C(6.6)WB 36 Sn( )SM(date)HY(Time)YH()ES( Parser)82 1 TN()EA()BN}if
-2 NH le{83(7.7\240\240)2 C(6.7)WB 37 Sn( )SM(dura)HY(tion)YH()ES( Parser)83 1 TN()EA()BN}if
-2 NH le{84(7.8\240\240)2 C(6.8)WB 38 Sn( )SM(gDay)ES( Parser)84 1 TN()EA()BN}if
-2 NH le{85(7.9\240\240)2 C(6.9)WB 39 Sn( )SM(gMonth)ES( Parser)85 1 TN()EA()BN}if
-2 NH le{86(7.10\240\240)2 C(6.10)WB 40 Sn( )SM(gMon)HY(th)HY(Day)YH()ES( Parser)86 1 TN()EA()BN}if
-2 NH le{87(7.11\240\240)2 C(6.11)WB 41 Sn( )SM(gYear)ES( Parser)87 1 TN()EA()BN}if
-2 NH le{88(7.12\240\240)2 C(6.12)WB 42 Sn( )SM(gYear)HY(Month)YH()ES( Parser)88 1 TN()EA()BN}if
-2 NH le{89(7.13\240\240)2 C(6.13)WB 43 Sn( )SM(time)ES( Parser)89 1 TN()EA()BN}if
-1 NH le{90(8\240\240)1 C(7)WB 44 Sn( Docu)HY(ment)YH( Parser and Error Handling)90 1 TN()EA()BN}if
-2 NH le{91(8.1\240\240)2 C(7.1)WB 45 Sn( Xerces-C++ Docu)HY(ment)YH( Parser)91 1 TN()EA()BN}if
-2 NH le{92(8.2\240\240)2 C(7.2)WB 46 Sn( Expat Docu)HY(ment)YH( Parser)92 1 TN()EA()BN}if
-2 NH le{93(8.3\240\240)2 C(7.3)WB 47 Sn( Error Handling)93 1 TN()EA()BN}if
-1 NH le{94(9\240\240)1 C(Appendix)WB 48 Sn( A \236 Supported XML Schema Constructs)94 1 TN()EA()BN}if
-/OU t D /Cb Db D NP Ep ET
-/Cb Db D /Ct [16#00 16#00 16#00] D /Cl [16#00 16#00 16#00] D /CL -1 D Ct Sc
-
-/Ba f D /BO 0 D Bs
-/UR (/home/boris/work/xsd/xsd/doc/cxx/parser/guide/index.xhtml) D
-/Ti (C++/Parser Mapping Getting Started Guide) D
-/Au () D
-/Df f D
-/ME [] D
-
-NP RC ZF
-()1 Sl()WB 0 Sn(
-
-)BR()WB 1 Sn( )BR()WB 2 Sn(
-
-
- )0 1 0 H(Preface)WB 50 Sn()WB 3 Sn()EA()EH(
-
- )0 2 1 H(About)WB 51 Sn()WB 4 Sn( This Docu)HY(ment)YH()EA()EH(
-
- )0 P(The goal of this docu)HY(ment)YH( is to provide you with an under)HY(stand)HY(ing)YH( of
- the C++/Parser program)HY(ming)YH( model and allow you to effi)HY(ciently)YH( eval)HY(u)HY(ate)YH(
- XSD against your project's tech)HY(ni)HY(cal)YH( require)HY(ments)YH(. As such, this
- docu)HY(ment)YH( is intended for C++ devel)HY(op)HY(ers)YH( and soft)HY(ware)YH( archi)HY(tects)YH(
- who are looking for an XML process)HY(ing)YH( solu)HY(tion)YH(. Prior expe)HY(ri)HY(ence)YH(
- with XML and C++ is required to under)HY(stand)YH( this docu)HY(ment)YH(. Basic
- under)HY(stand)HY(ing)YH( of XML Schema is advan)HY(ta)HY(geous)YH( but not expected
- or required.
- )EP(
-
-
- )0 2 2 H(More)WB 52 Sn()WB 5 Sn( Infor)HY(ma)HY(tion)YH()EA()EH(
-
- )0 P(Beyond this guide, you may also find the follow)HY(ing)YH( sources of
- infor)HY(ma)HY(tion)YH( useful:)EP(
-
- )UL( )-1 LI()R1 2 A(XSD
- Compiler Command Line Manual)EA(
-
- )-1 LI(The )SM(exam)HY(ples)YH(/cxx/parser/)ES( direc)HY(tory)YH( in the XSD
- distri)HY(bu)HY(tion)YH( contains a collec)HY(tion)YH( of exam)HY(ples)YH( and a README
- file with an overview of each example.
-
- )-1 LI(The )SM(README)ES( file in the XSD distri)HY(bu)HY(tion)YH( explains
- how to compile the exam)HY(ples)YH( on various plat)HY(forms)YH(.
-
- )-1 LI(The )R2 2 A(xsd-users)EA(
- mailing list is the place to ask tech)HY(ni)HY(cal)YH( ques)HY(tions)YH( about XSD and the C++/Parser mapping.
- Further)HY(more)YH(, the )R3 2 A(archives)EA(
- may already have answers to some of your ques)HY(tions)YH(.
-
- )LU(
-
-
-
- )0 1 3 H(1)WB 53 Sn()WB 6 Sn( Intro)HY(duc)HY(tion)YH()EA()EH(
-
- )0 P(Welcome to CodeSyn)HY(the)HY(sis)YH( XSD and the C++/Parser mapping. XSD is a
- cross-plat)HY(form)YH( W3C XML Schema to C++ data binding compiler. C++/Parser
- is a W3C XML Schema to C++ mapping that repre)HY(sents)YH( an XML vocab)HY(u)HY(lary)YH(
- as a set of parser skele)HY(tons)YH( which you can imple)HY(ment)YH( to perform XML
- process)HY(ing)YH( as required by your appli)HY(ca)HY(tion)YH( logic.
- )EP(
-
- )0 2 4 H(1.1)WB 54 Sn()WB 7 Sn( Mapping Overview)EA()EH(
-
- )0 P(The C++/Parser mapping provides event-driven, stream-oriented
- XML parsing, XML Schema vali)HY(da)HY(tion)YH(, and C++ data binding. It was
- specif)HY(i)HY(cally)YH( designed and opti)HY(mized)YH( for high perfor)HY(mance)YH( and
- small foot)HY(print)YH(. Based on the static anal)HY(y)HY(sis)YH( of the schemas, XSD
- gener)HY(ates)YH( compact, highly-opti)HY(mized)YH( hier)HY(ar)HY(chi)HY(cal)YH( state machines
- that combine data extrac)HY(tion)YH(, vali)HY(da)HY(tion)YH(, and even dispatch)HY(ing)YH(
- in a single step. As a result, the gener)HY(ated)YH( code is typi)HY(cally)YH(
- 2-10 times faster than general-purpose vali)HY(dat)HY(ing)YH( XML parsers
- while main)HY(tain)HY(ing)YH( the lowest static and dynamic memory foot)HY(prints)YH(.
- )EP(
-
- )0 P(To speed up appli)HY(ca)HY(tion)YH( devel)HY(op)HY(ment)YH(, the C++/Parser mapping
- can be instructed to gener)HY(ate)YH( sample parser imple)HY(men)HY(ta)HY(tions)YH(
- and a test driver which can then be filled with the appli)HY(ca)HY(tion)YH(
- logic code. The mapping also provides a wide range of
- mech)HY(a)HY(nisms)YH( for control)HY(ling)YH( and customiz)HY(ing)YH( the gener)HY(ated)YH( code.)EP(
-
- )0 P(The next chapter shows how to create a simple appli)HY(ca)HY(tion)YH( that uses
- the C++/Parser mapping to parse, vali)HY(date)YH(, and extract data from a
- simple XML docu)HY(ment)YH(. The follow)HY(ing)YH( chap)HY(ters)YH( show how to
- use the C++/Parser mapping in more detail.)EP(
-
- )0 2 5 H(1.2)WB 55 Sn()WB 8 Sn( Bene)HY(fits)YH()EA()EH(
-
- )0 P(Tradi)HY(tional)YH( XML access APIs such as Docu)HY(ment)YH( Object Model \201DOM\202
- or Simple API for XML \201SAX\202 have a number of draw)HY(backs)YH( that
- make them less suit)HY(able)YH( for creat)HY(ing)YH( robust and main)HY(tain)HY(able)YH(
- XML process)HY(ing)YH( appli)HY(ca)HY(tions)YH(. These draw)HY(backs)YH( include:
- )EP(
-
- )UL( )-1 LI(Generic repre)HY(sen)HY(ta)HY(tion)YH( of XML in terms of elements, attributes,
- and text forces an appli)HY(ca)HY(tion)YH( devel)HY(oper)YH( to write a substan)HY(tial)YH(
- amount of bridg)HY(ing)YH( code that iden)HY(ti)HY(fies)YH( and trans)HY(forms)YH( pieces
- of infor)HY(ma)HY(tion)YH( encoded in XML to a repre)HY(sen)HY(ta)HY(tion)YH( more suit)HY(able)YH(
- for consump)HY(tion)YH( by the appli)HY(ca)HY(tion)YH( logic.
-
- )-1 LI(String-based flow control defers error detec)HY(tion)YH( to runtime.
- It also reduces code read)HY(abil)HY(ity)YH( and main)HY(tain)HY(abil)HY(ity)YH(.
-
- )-1 LI(Lack of type safety because the data is repre)HY(sented)YH(
- as text.
-
- )-1 LI(Result)HY(ing)YH( appli)HY(ca)HY(tions)YH( are hard to debug, change, and
- main)HY(tain)YH(.
- )LU(
-
- )0 P(In contrast, stat)HY(i)HY(cally)YH(-typed, vocab)HY(u)HY(lary)YH(-specific parser
- skele)HY(tons)YH( produced by the C++/Parser mapping allow you to
- operate in your domain terms instead of the generic elements,
- attributes, and text. Static typing helps catch errors at
- compile-time rather than at run-time. Auto)HY(matic)YH( code gener)HY(a)HY(tion)YH(
- frees you for more inter)HY(est)HY(ing)YH( tasks \201such as doing some)HY(thing)YH(
- useful with the infor)HY(ma)HY(tion)YH( stored in the XML docu)HY(ments)YH(\202 and
- mini)HY(mizes)YH( the effort needed to adapt your appli)HY(ca)HY(tions)YH( to
- changes in the docu)HY(ment)YH( struc)HY(ture)YH(. To summa)HY(rize)YH(, the C++/Parser
- mapping has the follow)HY(ing)YH( key advan)HY(tages)YH( over generic XML
- access APIs:)EP(
-
- )UL( )-1 LI()BD(Ease of use.)ES( The gener)HY(ated)YH( code hides all the complex)HY(ity)YH(
- asso)HY(ci)HY(ated)YH( with recre)HY(at)HY(ing)YH( the docu)HY(ment)YH( struc)HY(ture)YH(, main)HY(tain)HY(ing)YH( the
- dispatch state, and convert)HY(ing)YH( the data from the text repre)HY(sen)HY(ta)HY(tion)YH(
- to data types suit)HY(able)YH( for manip)HY(u)HY(la)HY(tion)YH( by the appli)HY(ca)HY(tion)YH( logic.
- Parser skele)HY(tons)YH( also provide a conve)HY(nient)YH( mech)HY(a)HY(nism)YH( for build)HY(ing)YH(
- custom in-memory repre)HY(sen)HY(ta)HY(tions)YH(.
-
- )-1 LI()BD(Natural repre)HY(sen)HY(ta)HY(tion)YH(.)ES( The gener)HY(ated)YH( parser skele)HY(tons)YH(
- imple)HY(ment)YH( parser call)HY(backs)YH( as virtual func)HY(tions)YH( with names
- corre)HY(spond)HY(ing)YH( to elements and attributes in XML. As a result,
- you process the XML data using your domain vocab)HY(u)HY(lary)YH( instead
- of generic elements, attributes, and text.
-
-
- )-1 LI()BD(Concise code.)ES( With a sepa)HY(rate)YH( parser skele)HY(ton)YH( for each
- XML Schema type, the appli)HY(ca)HY(tion)YH( imple)HY(men)HY(ta)HY(tion)YH( is
- simpler and thus easier to read and under)HY(stand)YH(.
-
- )-1 LI()BD(Safety.)ES( The XML data is deliv)HY(ered)YH( to parser call)HY(backs)YH( as
- stat)HY(i)HY(cally)YH( typed objects. The parser call)HY(backs)YH( them)HY(selves)YH( are virtual
- func)HY(tions)YH(. This helps catch program)HY(ming)YH( errors at compile-time
- rather than at runtime.
-
- )-1 LI()BD(Main)HY(tain)HY(abil)HY(ity)YH(.)ES( Auto)HY(matic)YH( code gener)HY(a)HY(tion)YH( mini)HY(mizes)YH( the
- effort needed to adapt the appli)HY(ca)HY(tion)YH( to changes in the
- docu)HY(ment)YH( struc)HY(ture)YH(. With static typing, the C++ compiler
- can pin-point the places in the appli)HY(ca)HY(tion)YH( code that need to be
- changed.
-
- )-1 LI()BD(Effi)HY(ciency)YH(.)ES( The gener)HY(ated)YH( parser skele)HY(tons)YH( combine
- data extrac)HY(tion)YH(, vali)HY(da)HY(tion)YH(, and even dispatch)HY(ing)YH( in a single
- step. This makes them much more effi)HY(cient)YH( than tradi)HY(tional)YH(
- archi)HY(tec)HY(tures)YH( with sepa)HY(rate)YH( stages for vali)HY(da)HY(tion)YH( and data
- extrac)HY(tion)YH(/dispatch.
- )LU(
-
-
-
-
- )0 1 6 H(2)WB 56 Sn()WB 9 Sn( Hello World Example)EA()EH(
-
- )0 P(In this chapter we will examine how to parse a very simple XML
- docu)HY(ment)YH( using the XSD-gener)HY(ated)YH( C++/Parser skele)HY(tons)YH(.
- The code presented in this chapter is based on the )SM(hello)ES(
- example which can be found in the )SM(exam)HY(ples)YH(/cxx/parser/)ES(
- direc)HY(tory)YH( of the XSD distri)HY(bu)HY(tion)YH(.)EP(
-
- )0 2 7 H(2.1)WB 57 Sn()WB 10 Sn( Writing XML Docu)HY(ment)YH( and Schema)EA()EH(
-
- )0 P(First, we need to get an idea about the struc)HY(ture)YH(
- of the XML docu)HY(ments)YH( we are going to process. Our
- )SM(hello.xml)ES(, for example, could look like this:)EP(
-
- ) 10 28 PR(<?xml version="1.0"?>
-<hello>
-
- <greeting>Hello</greeting>
-
- <name>sun</name>
- <name>moon</name>
- <name>world</name>
-
-</hello>)RP(
-
- )0 P(Then we can write a descrip)HY(tion)YH( of the above XML in the
- XML Schema language and save it into )SM(hello.xsd)ES(:)EP(
-
- ) 13 70 PR(<?xml version="1.0"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:complexType name="hello">
- <xs:sequence>
- <xs:element name="greeting" type="xs:string"/>
- <xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:element name="hello" type="hello"/>
-
-</xs:schema>)RP(
-
- )0 P(Even if you are not famil)HY(iar)YH( with XML Schema, it
- should be easy to connect decla)HY(ra)HY(tions)YH( in )SM(hello.xsd)ES(
- to elements in )SM(hello.xml)ES(. The )SM(hello)ES( type
- is defined as a sequence of the nested )SM(greet)HY(ing)YH()ES( and
- )SM(name)ES( elements. Note that the term sequence in XML
- Schema means that elements should appear in a partic)HY(u)HY(lar)YH( order
- as opposed to appear)HY(ing)YH( multi)HY(ple)YH( times. The )SM(name)ES(
- element has its )SM(maxOc)HY(curs)YH()ES( prop)HY(erty)YH( set to
- )SM(unbounded)ES( which means it can appear multi)HY(ple)YH( times
- in an XML docu)HY(ment)YH(. Finally, the glob)HY(ally)YH(-defined )SM(hello)ES(
- element prescribes the root element for our vocab)HY(u)HY(lary)YH(. For an
- easily-approach)HY(able)YH( intro)HY(duc)HY(tion)YH( to XML Schema refer to
- )R4 2 A(XML Schema Part 0:
- Primer)EA(.)EP(
-
- )0 P(The above schema is a spec)HY(i)HY(fi)HY(ca)HY(tion)YH( of our XML vocab)HY(u)HY(lary)YH(; it tells
- every)HY(body)YH( what valid docu)HY(ments)YH( of our XML-based language should look
- like. The next step is to compile this schema to gener)HY(ate)YH(
- the object model and parsing func)HY(tions)YH(.)EP(
-
- )0 2 8 H(2.2)WB 58 Sn()WB 11 Sn( Trans)HY(lat)HY(ing)YH( Schema to C++)EA()EH(
-
- )0 P(Now we are ready to trans)HY(late)YH( our )SM(hello.xsd)ES( to C++ parser
- skele)HY(tons)YH(. To do this we invoke the XSD compiler from a termi)HY(nal)YH(
- \201UNIX\202 or a command prompt \201Windows\202:
- )EP(
-
- ) 1 45 PR($ xsd cxx-parser --xml-parser expat hello.xsd)RP(
-
- )0 P(The )SM(--xml-parser)ES( option indi)HY(cates)YH( that we want to
- use Expat as the under)HY(ly)HY(ing)YH( XML parser \201see )0 26 1 A(Section
- 5.3, "Under)HY(ly)HY(ing)YH( XML Parser")26 0 TN TL()Ec /AF f D(\202. The XSD compiler produces two
- C++ files: )SM(hello-pskel.hxx)ES( and )SM(hello-pskel.cxx)ES(.
- The follow)HY(ing)YH( code frag)HY(ment)YH( is taken from )SM(hello-pskel.hxx)ES(;
- it should give you an idea about what gets gener)HY(ated)YH(:
- )EP(
-
- ) 32 60 PR(class hello_pskel
-{
-public:
- // Parser callbacks. Override them in your implementation.
- //
- virtual void
- pre \201\202;
-
- virtual void
- greeting \201const std::string&\202;
-
- virtual void
- name \201const std::string&\202;
-
- virtual void
- post_hello \201\202;
-
- // Parser construction API.
- //
- void
- greeting_parser \201xml_schema::string_pskel&\202;
-
- void
- name_parser \201xml_schema::string_pskel&\202;
-
- void
- parsers \201xml_schema::string_pskel& /* greeting */,
- xml_schema::string_pskel& /* name */\202;
-
-private:
- ...)WR(
-};)RP(
-
- )0 P(The first four member func)HY(tions)YH( shown above are called parser
- call)HY(backs)YH(. You would normally over)HY(ride)YH( them in your imple)HY(men)HY(ta)HY(tion)YH(
- of the parser to do some)HY(thing)YH( useful. Let's go through all of
- them one by one.)EP(
-
- )0 P(The )SM(pre\201\202)ES( func)HY(tion)YH( is an initial)HY(iza)HY(tion)YH( call)HY(back)YH(. It is
- called when a new element of type )SM(hello)ES( is about
- to be parsed. You would normally use this func)HY(tion)YH( to allo)HY(cate)YH( a new
- instance of the result)HY(ing)YH( type or clear accu)HY(mu)HY(la)HY(tors)YH( that are used
- to gather infor)HY(ma)HY(tion)YH( during parsing. The default imple)HY(men)HY(ta)HY(tion)YH(
- of this func)HY(tion)YH( does nothing.)EP(
-
- )0 P(The )SM(post_hello\201\202)ES( func)HY(tion)YH( is a final)HY(iza)HY(tion)YH( call)HY(back)YH(. Its
- name is constructed by adding the parser skele)HY(ton)YH( name to the
- )SM(post_)ES( prefix. The final)HY(iza)HY(tion)YH( call)HY(back)YH( is called when
- parsing of the element is complete and the result, if any, should
- be returned. Note that in our case the return type of
- )SM(post_hello\201\202)ES( is )SM(void)ES( which means there
- is nothing to return. More on parser return types later.
- )EP(
-
- )0 P(You may be wonder)HY(ing)YH( why the final)HY(iza)HY(tion)YH( call)HY(back)YH( is called
- )SM(post_hello\201\202)ES( instead of )SM(post\201\202)ES( just
- like )SM(pre\201\202)ES(. The reason for this is that
- final)HY(iza)HY(tion)YH( call)HY(backs)YH( can have differ)HY(ent)YH( return types and
- result in func)HY(tion)YH( signa)HY(ture)YH( clashes across inher)HY(i)HY(tance)YH(
- hier)HY(ar)HY(chies)YH(. To prevent this the signa)HY(tures)YH( of final)HY(iza)HY(tion)YH(
- call)HY(backs)YH( are made unique by adding the type name to their names.)EP(
-
- )0 P(The )SM(greet)HY(ing)YH(\201\202)ES( and )SM(name\201\202)ES( func)HY(tions)YH( are
- called when the )SM(greet)HY(ing)YH()ES( and )SM(name)ES( elements
- have been parsed, respec)HY(tively)YH(. Their argu)HY(ments)YH( are of type
- )SM(std::string)ES( and contain the data extracted from XML.)EP(
-
- )0 P(The last three func)HY(tions)YH( are for connect)HY(ing)YH( parsers to each other.
- For example, there is a prede)HY(fined)YH( parser for built-in XML Schema type
- )SM(string)ES( in the XSD runtime. We will be using
- it to parse the contents of )SM(greet)HY(ing)YH()ES( and
- )SM(name)ES( elements, as shown in the next section.)EP(
-
- )0 2 9 H(2.3)WB 59 Sn()WB 12 Sn( Imple)HY(ment)HY(ing)YH( Appli)HY(ca)HY(tion)YH( Logic)EA()EH(
-
- )0 P(At this point we have all the parts we need to do some)HY(thing)YH( useful
- with the infor)HY(ma)HY(tion)YH( stored in our XML docu)HY(ment)YH(. The first step is
- to imple)HY(ment)YH( the parser:
- )EP(
-
- ) 21 60 PR(#include <iostream>
-#include "hello-pskel.hxx"
-
-class hello_pimpl: public hello_pskel
-{
-public:
- virtual void
- greeting \201const std::string& g\202
- {
- greeting_ = g;
- }
-
- virtual void
- name \201const std::string& n\202
- {
- std::cout << greeting_ << ", " << n << "!" << std::endl;
- }
-
-private:
- std::string greeting_;
-};)RP(
-
- )0 P(We left both )SM(pre\201\202)ES( and )SM(post_hello\201\202)ES( with the
- default imple)HY(men)HY(ta)HY(tions)YH(; we don't have anything to initial)HY(ize)YH( or
- return. The rest is pretty straight)HY(for)HY(ward)YH(: we store the greet)HY(ing)YH(
- in a member vari)HY(able)YH( and later, when parsing names, use it to
- say hello.)EP(
-
- )0 P(An obser)HY(vant)YH( reader my ask what happens if the )SM(name)ES(
- element comes before )SM(greet)HY(ing)YH()ES(? Don't we need to
- make sure )SM(greet)HY(ing)YH(_)ES( was initial)HY(ized)YH( and report
- an error other)HY(wise)YH(? The answer is no, we don't have to do
- any of this. The )SM(hello_pskel)ES( parser skele)HY(ton)YH(
- performs vali)HY(da)HY(tion)YH( of XML accord)HY(ing)YH( to the schema from which
- it was gener)HY(ated)YH(. As a result, it will check the order
- of the )SM(greet)HY(ing)YH()ES( and )SM(name)ES( elements
- and report an error if it is violated.)EP(
-
- )0 P(Now it is time to put this parser imple)HY(men)HY(ta)HY(tion)YH( to work:)EP(
-
- ) 29 50 PR(using namespace std;
-
-int
-main \201int argc, char* argv[]\202
-{
- try
- {
- // Construct the parser.
- //
- xml_schema::string_pimpl string_p;
- hello_pimpl hello_p;
-
- hello_p.greeting_parser \201string_p\202;
- hello_p.name_parser \201string_p\202;
-
- // Parse the XML instance.
- //
- xml_schema::document doc_p \201hello_p, "hello"\202;
-
- hello_p.pre \201\202;
- doc_p.parse \201argv[1]\202;
- hello_p.post_hello \201\202;
- }
- catch \201const xml_schema::exception& e\202
- {
- cerr << e << endl;
- return 1;
- }
-})RP(
-
- )0 P(The first part of this code snippet instan)HY(ti)HY(ates)YH( indi)HY(vid)HY(ual)YH( parsers
- and assem)HY(bles)YH( them into a complete vocab)HY(u)HY(lary)YH( parser.
- )SM(xml_schema::string_pimpl)ES( is an imple)HY(men)HY(ta)HY(tion)YH( of a parser
- for built-in XML Schema type )SM(string)ES(. It is provided by
- the XSD runtime along with parsers for other built-in types \201for
- more infor)HY(ma)HY(tion)YH( on the built-in parsers see )0 29 1 A(Chapter 6,
- "Built-In XML Schema Type Parsers")29 0 TN TL()Ec /AF f D(\202. We use )SM(string_pimpl)ES(
- to parse the )SM(greet)HY(ing)YH()ES( and )SM(name)ES( elements as
- indi)HY(cated)YH( by the calls to )SM(greet)HY(ing)YH(_parser\201\202)ES( and
- )SM(name_parser\201\202)ES(.
- )EP(
-
- )0 P(Then we instan)HY(ti)HY(ate)YH( a docu)HY(ment)YH( parser \201)SM(doc_p)ES(\202. The
- first argu)HY(ment)YH( to its construc)HY(tor)YH( is the parser for
- the root element \201)SM(hello_p)ES( in our case\202. The
- second argu)HY(ment)YH( is the root element name.
- )EP(
-
- )0 P(The final piece is the calls to )SM(pre\201\202)ES(, )SM(parse\201\202)ES(,
- and )SM(post_hello\201\202)ES(. The call to )SM(parse\201\202)ES(
- perform the actual XML parsing while the calls to )SM(pre\201\202)ES( and
- )SM(post_hello\201\202)ES( make sure that the parser for the root
- element can perform proper initial)HY(iza)HY(tion)YH( and cleanup.)EP(
-
- )0 P(While our parser imple)HY(men)HY(ta)HY(tion)YH( and test driver are pretty small and
- easy to write by hand, for bigger XML vocab)HY(u)HY(lar)HY(ies)YH( it can be a
- substan)HY(tial)YH( effort. To help with this task XSD can auto)HY(mat)HY(i)HY(cally)YH(
- gener)HY(ate)YH( sample parser imple)HY(men)HY(ta)HY(tions)YH( and a test driver from your
- schemas. You can request the gener)HY(a)HY(tion)YH( of a sample imple)HY(men)HY(ta)HY(tion)YH( with
- empty func)HY(tion)YH( bodies by spec)HY(i)HY(fy)HY(ing)YH( the )SM(--gener)HY(ate)YH(-noop-impl)ES(
- option. Or you can gener)HY(ate)YH( a sample imple)HY(men)HY(ta)HY(tion)YH( that prints the
- data store in XML by using the )SM(--gener)HY(ate)YH(-print-impl)ES(
- option. To request the gener)HY(a)HY(tion)YH( of a test driver you can use the
- )SM(--gener)HY(ate)YH(-test-driver)ES( option. For more infor)HY(ma)HY(tion)YH(
- on these options refer to the
- )R1 2 A(XSD
- Compiler Command Line Manual)EA(. The )SM('gener)HY(ated)YH(')ES( example
- in the XSD distri)HY(bu)HY(tion)YH( shows the sample imple)HY(men)HY(ta)HY(tion)YH( gener)HY(a)HY(tion)YH(
- feature in action.)EP(
-
-
- )0 2 10 H(2.4)WB 60 Sn()WB 13 Sn( Compil)HY(ing)YH( and Running)EA()EH(
-
- )0 P(After saving all the parts from the previ)HY(ous)YH( section in
- )SM(driver.cxx)ES(, we are ready to compile our first
- appli)HY(ca)HY(tion)YH( and run it on the test XML docu)HY(ment)YH(. On a UNIX
- system this can be done with the follow)HY(ing)YH( commands:
- )EP(
-
- ) 6 48 PR($ c++ -I.../libxsd -c driver.cxx hello-pskel.cxx
-$ c++ -o driver driver.o hello-pskel.o -lexpat
-$ ./driver hello.xml
-Hello, sun!
-Hello, moon!
-Hello, world!)RP(
-
- )0 P(Here )SM(.../libxsd)ES( repre)HY(sents)YH( the path to the
- )SM(libxsd)ES( direc)HY(tory)YH( in the XSD distri)HY(bu)HY(tion)YH(.
- We can also test the error handling. To test XML well-formed)HY(ness)YH(
- check)HY(ing)YH(, we can try to parse )SM(hello-pskel.hxx)ES(:)EP(
-
- ) 2 52 PR($ ./driver hello-pskel.hxx
-hello-pskel.hxx:1:0: not well-formed \201invalid token\202)RP(
-
- )0 P(We can also try to parse a valid XML but not from our
- vocab)HY(u)HY(lary)YH(, for example )SM(hello.xsd)ES(:)EP(
-
- ) 3 50 PR($ ./driver hello.xsd
-hello.xsd:2:0: expected element 'hello' instead of
-'http://www.w3.org/2001/XMLSchema#schema')RP(
-
-
-
-
-
- )0 1 11 H(3)WB 61 Sn()WB 14 Sn( Parser Skele)HY(tons)YH()EA()EH(
-
- )0 P(As we have seen in the previ)HY(ous)YH( chapter, the XSD compiler gener)HY(ates)YH(
- a parser skele)HY(ton)YH( class for each type defined in XML Schema. In
- this chapter we will take a closer look at differ)HY(ent)YH( func)HY(tions)YH(
- that comprise a parser skele)HY(ton)YH( as well as the way to connect
- our imple)HY(men)HY(ta)HY(tions)YH( of these parser skele)HY(tons)YH( to create a complete
- parser.)EP(
-
- )0 P(In this and subse)HY(quent)YH( chap)HY(ters)YH( we will use the follow)HY(ing)YH( schema
- that describes a collec)HY(tion)YH( of person records. We save it in
- )SM(people.xsd)ES(:)EP(
-
- ) 28 69 PR(<?xml version="1.0"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:simpleType name="gender">
- <xs:restriction base="xs:string">
- <xs:enumeration value="male"/>
- <xs:enumeration value="female"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:complexType name="person">
- <xs:sequence>
- <xs:element name="first-name" type="xs:string"/>
- <xs:element name="last-name" type="xs:string"/>
- <xs:element name="gender" type="gender"/>
- <xs:element name="age" type="xs:short"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="people">
- <xs:sequence>
- <xs:element name="person" type="person" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:element name="people" type="people"/>
-
-</xs:schema>)RP(
-
- )0 P(A sample XML instance to go along with this schema is saved
- in )SM(people.xml)ES(:)EP(
-
- ) 15 33 PR(<?xml version="1.0"?>
-<people>
- <person>
- <first-name>John</first-name>
- <last-name>Doe</last-name>
- <gender>male</gender>
- <age>32</age>
- </person>
- <person>
- <first-name>Jane</first-name>
- <last-name>Doe</last-name>
- <gender>female</gender>
- <age>28</age>
- </person>
-</people>)RP(
-
- )0 P(Compil)HY(ing)YH( )SM(people.xsd)ES( with the XSD compiler results
- in three parser skele)HY(tons)YH( being gener)HY(ated)YH(: )SM(gender_pskel)ES(,
- )SM(person_pskel)ES(, and )SM(people_pskel)ES(. We are going
- to examine and imple)HY(ment)YH( each of them in the subse)HY(quent)YH( sections.)EP(
-
- )0 2 12 H(3.1)WB 62 Sn()WB 15 Sn( Imple)HY(ment)HY(ing)YH( the Gender Parser)EA()EH(
-
- )0 P(The gener)HY(ated)YH( )SM(gender_pskel)ES( parser skele)HY(ton)YH( looks like
- this:)EP(
-
- ) 11 60 PR(class gender_pskel: public virtual xml_schema::string_pskel
-{
-public:
- // Parser callbacks. Override them in your implementation.
- //
- virtual void
- pre \201\202;
-
- virtual void
- post_gender \201\202;
-};)RP(
-
- )0 P(Notice that )SM(gender_pskel)ES( inher)HY(its)YH( from
- )SM(xml_schema::string_skel)ES( which is a parser skele)HY(ton)YH(
- for built-in XML Schema type )SM(string)ES( and is
- prede)HY(fined)YH( in the XSD runtime library. This is an example
- of the general rule that parser skele)HY(tons)YH( follow: if a type
- in XML Schema inher)HY(its)YH( from another then there will be an
- equiv)HY(a)HY(lent)YH( inher)HY(i)HY(tance)YH( between the corre)HY(spond)HY(ing)YH( parser
- skele)HY(ton)YH( classes.)EP(
-
- )0 P(The )SM(pre\201\202)ES( and )SM(post_gender\201\202)ES( call)HY(backs)YH(
- should look famil)HY(iar)YH( from the previ)HY(ous)YH( chapter. Let's now
- imple)HY(ment)YH( the parser. Our imple)HY(men)HY(ta)HY(tion)YH( will simply print
- the gender to )SM(cout)ES(:)EP(
-
-
- ) 11 51 PR(class gender_pimpl: public gender_pskel,
- public xml_schema::string_pimpl
-{
-public:
- virtual void
- post_gender \201\202
- {
- std::string s = post_string \201\202;
- cout << "gender: " << s << endl;
- }
-};)RP(
-
- )0 P(While the code is quite short, there is a lot going on. First,
- notice that we are inher)HY(it)HY(ing)YH( from )SM(gender_pskel)ES( )EM(and)ES(
- from )SM(xml_schema::string_pimpl)ES(. We've encoun)HY(tered)YH(
- )SM(xml_schema::string_pimpl)ES( already; it is an
- imple)HY(men)HY(ta)HY(tion)YH( of the )SM(xml_schema::string_pskel)ES( parser
- skele)HY(ton)YH( for built-in XML Schema type )SM(string)ES(.)EP(
-
- )0 P(This is another common theme in the C++/Parser program)HY(ming)YH( model:
- reusing imple)HY(men)HY(ta)HY(tions)YH( of the base parsers in the derived ones with
- the C++ mixin idiom. In our case, )SM(string_pimpl)ES( will
- do all the dirty work of extract)HY(ing)YH( the data and we can just get
- it at the end with the call to )SM(post_string\201\202)ES(.)EP(
-
- )0 P(In case you are curious, here is what
- )SM(xml_schema::string_pskel)ES( and
- )SM(xml_schema::string_pimpl)ES( look like:)EP(
-
- ) 25 49 PR(namespace xml_schema
-{
- class string_pskel: public simple_content
- {
- public:
- virtual std::string
- post_string \201\202 = 0;
- };
-
- class string_pimpl: public virtual string_pskel
- {
- public:
- virtual void
- _pre \201\202;
-
- virtual void
- _characters \201const xml_schema::ro_string&\202;
-
- virtual std::string
- post_string \201\202;
-
- protected:
- std::string str_;
- };
-})RP(
-
- )0 P(There are three new pieces in this code that we haven't seen yet.
- They are the )SM(simple_content)ES( class as well as
- the )SM(_pre\201\202)ES( and )SM(_char)HY(ac)HY(ters)YH(\201\202)ES( func)HY(tions)YH(.
- The )SM(simple_content)ES( class is defined in the XSD
- runtime and is a base class for all parser skele)HY(tons)YH( that conform
- to the simple content model in XML Schema. Types with the
- simple content model cannot have nested elements\236only text
- and attributes. There is also the )SM(complex_content)ES(
- class which corre)HY(sponds)YH( to the complex content mode \201types with
- nested elements, for example, )SM(person)ES( from
- )SM(people.xsd)ES(\202.)EP(
-
- )0 P(The )SM(_pre\201\202)ES( func)HY(tion)YH( is a parser call)HY(back)YH(. Remem)HY(ber)YH( we
- talked about the )SM(pre\201\202)ES( and )SM(post_*\201\202)ES( call)HY(backs)YH(
- in the previ)HY(ous)YH( chapter? There are actu)HY(ally)YH( two more call)HY(backs)YH(
- with similar roles: )SM(_pre\201\202)ES( and )SM(_post \201\202)ES(.
- As a result, each parser skele)HY(ton)YH( has four special call)HY(backs)YH(:)EP(
-
- ) 11 15 PR( virtual void
- pre \201\202;
-
- virtual void
- _pre \201\202;
-
- virtual void
- _post \201\202;
-
- virtual void
- post_name \201\202;)RP(
-
- )0 P()SM(pre\201\202)ES( and )SM(_pre\201\202)ES( are initial)HY(iza)HY(tion)YH(
- call)HY(backs)YH(. They get called in that order before a new instance of the type
- is about to be parsed. The differ)HY(ence)YH( between )SM(pre\201\202)ES( and
- )SM(_pre\201\202)ES( is conven)HY(tional)YH(: )SM(pre\201\202)ES( can
- be completely over)HY(rid)HY(den)YH( by a derived parser. The derived
- parser can also over)HY(ride)YH( )SM(_pre\201\202)ES( but has to always call
- the orig)HY(i)HY(nal)YH( version. This allows you to parti)HY(tion)YH( initial)HY(iza)HY(tion)YH(
- into customiz)HY(able)YH( and required parts.)EP(
-
- )0 P(Simi)HY(larly)YH(, )SM(_post\201\202)ES( and )SM(post_name\201\202)ES( are
- final)HY(iza)HY(tion)YH( call)HY(backs)YH( with exactly the same seman)HY(tics)YH(:
- )SM(post_name\201\202)ES( can be completely over)HY(rid)HY(den)YH( by the derived
- parser while the orig)HY(i)HY(nal)YH( )SM(_post\201\202)ES( should always be called.
- )EP(
-
- )0 P(The final bit we need to discuss in this section is the
- )SM(_char)HY(ac)HY(ters)YH(\201\202)ES( func)HY(tion)YH(. As you might have guessed, it
- is also a call)HY(back)YH(. A low-level one that deliv)HY(ers)YH( raw char)HY(ac)HY(ter)YH( content
- for the type being parsed. You will seldom need to use this call)HY(back)YH(
- directly. Using imple)HY(men)HY(ta)HY(tions)YH( for the built-in parsers provided by
- the XSD runtime is usually a simpler and more conve)HY(nient)YH(
- alter)HY(na)HY(tive)YH(.)EP(
-
- )0 P(At this point you might be wonder)HY(ing)YH( why some )SM(post_*\201\202)ES(
- call)HY(backs)YH(, for example )SM(post_string\201\202)ES(, return some data
- while others, for example )SM(post_gender\201\202)ES(, have
- )SM(void)ES( as a return type. This is a valid concern
- and it will be addressed in the next chapter.)EP(
-
- )0 2 13 H(3.2)WB 63 Sn()WB 16 Sn( Imple)HY(ment)HY(ing)YH( the Person Parser)EA()EH(
-
- )0 P(The gener)HY(ated)YH( )SM(person_pskel)ES( parser skele)HY(ton)YH( looks like
- this:)EP(
-
- ) 43 60 PR(class person_pskel: public xml_schema::complex_content
-{
-public:
- // Parser callbacks. Override them in your implementation.
- //
- virtual void
- pre \201\202;
-
- virtual void
- first_name \201const std::string&\202;
-
- virtual void
- last_name \201const std::string&\202;
-
- virtual void
- gender \201\202;
-
- virtual void
- age \201short\202;
-
- virtual void
- post_person \201\202;
-
- // Parser construction API.
- //
- void
- first_name_parser \201xml_schema::string_pskel&\202;
-
- void
- last_name_parser \201xml_schema::string_pskel&\202;
-)WR(
- void
- gender_parser \201gender_pskel&\202;
-
- void
- age_parser \201xml_schema::short_pskel&\202;
-
- void
- parsers \201xml_schema::string_pskel& /* first-name */,
- xml_schema::string_pskel& /* last-name */,
- gender_pskel& /* gender */,
- xml_schema::short_pskel& /* age */\202;
-};)RP(
-
-
- )0 P(As you can see, we have a parser call)HY(back)YH( for each of the nested
- elements found in the )SM(person)ES( XML Schema type.
- The imple)HY(men)HY(ta)HY(tion)YH( of this parser is straight)HY(for)HY(ward)YH(:)EP(
-
- ) 21 39 PR(class person_pimpl: public person_pskel
-{
-public:
- virtual void
- first_name \201const std::string& n\202
- {
- cout << "first: " << f << endl;
- }
-
- virtual void
- last_name \201const std::string& l\202
- {
- cout << "last: " << l << endl;
- }
-
- virtual void
- age \201short a\202
- {
- cout << "age: " << a << endl;
- }
-};)RP(
-
- )0 P(Notice that we didn't over)HY(ride)YH( the )SM(gender\201\202)ES( call)HY(back)YH(
- because all the print)HY(ing)YH( is done by )SM(gender_pimpl)ES(.)EP(
-
-
- )0 2 14 H(3.3)WB 64 Sn()WB 17 Sn( Imple)HY(ment)HY(ing)YH( the People Parser)EA()EH(
-
- )0 P(The gener)HY(ated)YH( )SM(people_pskel)ES( parser skele)HY(ton)YH( looks like
- this:)EP(
-
- ) 22 60 PR(class people_pskel: public xml_schema::complex_content
-{
-public:
- // Parser callbacks. Override them in your implementation.
- //
- virtual void
- pre \201\202;
-
- virtual void
- person \201\202;
-
- virtual void
- post_people \201\202;
-
- // Parser construction API.
- //
- void
- person_parser \201person_pskel&\202;
-
- void
- parsers \201person_pskel& /* person */\202;
-};)RP(
-
- )0 P(The )SM(person\201\202)ES( call)HY(back)YH( will be called after parsing each
- )SM(person)ES( element. While )SM(person_pimpl)ES( does
- all the print)HY(ing)YH(, one useful thing we can do in this call)HY(back)YH( is to
- print an extra newline after each person record so that our
- output is more read)HY(able)YH(:)EP(
-
- ) 9 39 PR(class people_pimpl: public people_pskel
-{
-public:
- virtual void
- person \201\202
- {
- cout << endl;
- }
-};)RP(
-
- )0 P(Now it is time to put every)HY(thing)YH( together.)EP(
-
-
- )0 2 15 H(3.4)WB 65 Sn()WB 18 Sn( Connect)HY(ing)YH( the Parsers Together)EA()EH(
-
- )0 P(At this point we have all the indi)HY(vid)HY(ual)YH( parsers imple)HY(mented)YH(
- and can proceed to assem)HY(ble)YH( them into a complete parser
- for our XML vocab)HY(u)HY(lary)YH(. The first step is to instan)HY(ti)HY(ate)YH(
- all the indi)HY(vid)HY(ual)YH( parsers that we will need:)EP(
-
- ) 6 34 PR(xml_schema::short_pimpl short_p;
-xml_schema::string_pimpl string_p;
-
-gender_pimpl gender_p;
-person_pimpl person_p;
-people_pimpl people_p;)RP(
-
- )0 P(Notice that our schema uses two built-in XML Schema types:
- )SM(string)ES( for the )SM(first-name)ES( and
- )SM(last-name)ES( elements as well as )SM(short)ES(
- for )SM(age)ES(. We will use prede)HY(fined)YH( parsers that
- come with the XSD runtime to handle these types. The next
- step is to connect all the indi)HY(vid)HY(ual)YH( parsers. We do this
- with the help of func)HY(tions)YH( defined in the parser
- skele)HY(tons)YH( and marked with the "Parser Construc)HY(tion)YH( API"
- comment. One way to do it is to connect each indi)HY(vid)HY(ual)YH(
- parser by calling the )SM(*_parser\201\202)ES( func)HY(tions)YH(:)EP(
-
- ) 6 38 PR(person_p.first_name_parser \201string_p\202;
-person_p.last_name_parser \201string_p\202;
-person_p.gender_parser \201gender_p\202;
-person_p.age_parser \201short_p\202;
-
-people_p.person_parser \201person_p\202;)RP(
-
- )0 P(You might be wonder)HY(ing)YH( what happens if you do not provide
- a parser by not calling one of the )SM(*_parser\201\202)ES( func)HY(tions)YH(.
- In that case the corre)HY(spond)HY(ing)YH( XML content will be skipped,
- includ)HY(ing)YH( vali)HY(da)HY(tion)YH(. This is an effi)HY(cient)YH( way to ignore parts
- of the docu)HY(ment)YH( that you are not inter)HY(ested)YH( in.)EP(
-
-
- )0 P(An alter)HY(na)HY(tive)YH(, shorter, way to connect the parsers is by using
- the )SM(parsers\201\202)ES( func)HY(tions)YH( which connects all the parsers
- for a given type at once:)EP(
-
- ) 2 57 PR(person_p.parsers \201string_p, string_p, gender_p, short_p\202;
-people_p.parsers \201person_p\202;)RP(
-
- )0 P(The follow)HY(ing)YH( figure illus)HY(trates)YH( the result)HY(ing)YH( connec)HY(tions)YH(. Notice
- the corre)HY(spon)HY(dence)YH( between return types of the )SM(post_*\201\202)ES(
- func)HY(tions)YH( and argu)HY(ment)YH( types of element call)HY(backs)YH( that are connected
- by the arrows.)EP(
-
-
- )2 Al()BR()0 0 IM()Ea()BR(
-
- )0 P(The last step is the construc)HY(tion)YH( of the docu)HY(ment)YH( parser and
- invo)HY(ca)HY(tion)YH( of the complete parser on our sample XML instance:)EP(
-
- ) 5 48 PR(xml_schema::document doc_p \201people_p, "people"\202;
-
-people_p.pre \201\202;
-doc_p.parse \201"people.xml"\202;
-people_p.post_people \201\202;)RP(
-
- )0 P(Let's consider )SM(xml_schema::docu)HY(ment)YH()ES( in
- more detail. While the exact defi)HY(ni)HY(tion)YH( of this class
- varies depend)HY(ing)YH( on the under)HY(ly)HY(ing)YH( parser selected,
- here is the common part:)EP(
-
- ) 24 56 PR(namespace xml_schema
-{
- class document
- {
- public:
- document \201xml_schema::parser_base&,
- const std::string& root_element_name,
- bool polymorphic = false\202;
-
- document \201xml_schema::parser_base&,
- const std::string& root_element_namespace,
- const std::string& root_element_name,
- bool polymorphic = false\202;
-
- void
- parse \201const std::string& file\202;
-
- void
- parse \201std::istream&\202;
-
- ...
-
- };
-})RP(
-
- )0 P()SM(xml_schema::docu)HY(ment)YH()ES( is a root parser for
- the vocab)HY(u)HY(lary)YH(. The first argu)HY(ment)YH( to its construc)HY(tors)YH( is the
- parser for the type of the root element \201)SM(people_impl)ES(
- in our case\202. Because a type parser is only concerned with
- the element's content and not with the element's name, we need
- to specify the root element's name some)HY(where)YH(. That's
- what is passed as the second and third argu)HY(ments)YH( to the
- )SM(docu)HY(ment)YH()ES('s construc)HY(tors)YH(.)EP(
-
- )0 P(There are also two over)HY(loaded)YH( )SM(parse\201\202)ES( func)HY(tions)YH(
- defined in the )SM(docu)HY(ment)YH()ES( class \201there are actu)HY(ally)YH(
- more but the others are specific to the under)HY(ly)HY(ing)YH( XML parser\202.
- The first version parses a local file iden)HY(ti)HY(fied)YH( by a name. The
- second version reads the data from an input stream. For more
- infor)HY(ma)HY(tion)YH( on the )SM(xml_schema::docu)HY(ment)YH()ES( class
- refer to )0 44 1 A(Chapter 7, "Docu)HY(ment)YH( Parser and Error
- Handling")44 0 TN TL()Ec /AF f D(.)EP(
-
- )0 P(Let's now consider a step-by-step list of actions that happen
- as we parse through )SM(people.xml)ES(. The content of
- )SM(people.xml)ES( is repeated below for conve)HY(nience)YH(.)EP(
-
- ) 15 33 PR(<?xml version="1.0"?>
-<people>
- <person>
- <first-name>John</first-name>
- <last-name>Doe</last-name>
- <gender>male</gender>
- <age>32</age>
- </person>
- <person>
- <first-name>Jane</first-name>
- <last-name>Doe</last-name>
- <gender>female</gender>
- <age>28</age>
- </person>
-</people>)RP(
-
-
- )4 OL( )-1 LI()SM(people_p.pre\201\202)ES( is called from
- )SM(main\201\202)ES(. We did not provide any imple)HY(men)HY(ta)HY(tion)YH(
- for this call)HY(back)YH( so this call is a no-op.
-
- )-1 LI()SM(doc_p.parse\201"people.xml"\202)ES( is called from
- )SM(main\201\202)ES(. The parser opens the file and starts
- parsing its content.
-
- )-1 LI(The parser encoun)HY(ters)YH( the root element. )SM(doc_p)ES(
- veri)HY(fies)YH( that the root element is correct and calls
- )SM(_pre\201\202)ES( on )SM(people_p)ES( which is also
- a no-op. Parsing is now dele)HY(gated)YH( to )SM(people_p)ES(.
-
- )-1 LI(The parser encoun)HY(ters)YH( the )SM(person)ES( element.
- )SM(people_p)ES( deter)HY(mines)YH( that )SM(person_p)ES(
- is respon)HY(si)HY(ble)YH( for parsing this element. )SM(pre\201\202)ES(
- and )SM(_pre\201\202)ES( call)HY(backs)YH( are called on )SM(person_p)ES(.
- Parsing is now dele)HY(gated)YH( to )SM(person_p)ES(.
-
- )-1 LI(The parser encoun)HY(ters)YH( the )SM(first-name)ES( element.
- )SM(person_p)ES( deter)HY(mines)YH( that )SM(string_p)ES(
- is respon)HY(si)HY(ble)YH( for parsing this element. )SM(pre\201\202)ES(
- and )SM(_pre\201\202)ES( call)HY(backs)YH( are called on )SM(string_p)ES(.
- Parsing is now dele)HY(gated)YH( to )SM(string_p)ES(.
-
- )-1 LI(The parser encoun)HY(ters)YH( char)HY(ac)HY(ter)YH( content consist)HY(ing)YH( of
- )SM("John")ES(. The )SM(_char)HY(ac)HY(ters)YH(\201\202)ES( call)HY(back)YH( is
- called on )SM(string_p)ES(.
-
- )-1 LI(The parser encoun)HY(ters)YH( the end of )SM(first-name)ES(
- element. The )SM(_post\201\202)ES( and )SM(post_string\201\202)ES(
- call)HY(backs)YH( are called on )SM(string_p)ES(. The
- )SM(first_name\201\202)ES( call)HY(back)YH( is called on )SM(person_p)ES(
- with the return value of )SM(post_string\201\202)ES(. The
- )SM(first_name\201\202)ES( imple)HY(men)HY(ta)HY(tion)YH( prints
- )SM("first: John")ES( to )SM(cout)ES(.
- Parsing is now returned to )SM(person_p)ES(.
-
- )-1 LI(Steps anal)HY(o)HY(gous)YH( to 5-7 are performed for the )SM(last-name)ES(,
- )SM(gender)ES(, and )SM(age)ES( elements.
-
- )-1 LI(The parser encoun)HY(ters)YH( the end of )SM(person)ES(
- element. The )SM(_post\201\202)ES( and )SM(post_person\201\202)ES(
- call)HY(backs)YH( are called on )SM(person_p)ES(. The
- )SM(person\201\202)ES( call)HY(back)YH( is called on )SM(people_p)ES(.
- The )SM(person\201\202)ES( imple)HY(men)HY(ta)HY(tion)YH( prints a new line
- to )SM(cout)ES(. Parsing is now returned to
- )SM(people_p)ES(.
-
- )-1 LI(Steps 4-9 are performed for the second )SM(person)ES(
- element.
-
- )-1 LI(The parser encoun)HY(ters)YH( the end of )SM(people)ES(
- element. The )SM(_post\201\202)ES( call)HY(back)YH( is called on
- )SM(people_p)ES(. The )SM(doc_p.parse\201"people.xml"\202)ES(
- call returns to )SM(main\201\202)ES(.
-
- )-1 LI()SM(people_p.post_people\201\202)ES( is called from
- )SM(main\201\202)ES( which is a no-op.
-
- )LO(
-
-
-
-
-
- )0 1 16 H(4)WB 66 Sn()WB 19 Sn( Type Maps)EA()EH(
-
- )0 P(There are many useful things you can do inside parser call)HY(backs)YH( as they
- are right now. There are, however, times when you want to prop)HY(a)HY(gate)YH(
- some infor)HY(ma)HY(tion)YH( from one parser to another or to the caller of the
- parser. One common task that would greatly benefit from such a
- possi)HY(bil)HY(ity)YH( is build)HY(ing)YH( a tree-like in-memory object model of the
- data stored in XML. During execu)HY(tion)YH(, each indi)HY(vid)HY(ual)YH( sub-parser
- would create a sub-tree and return it to its )EM(parent)ES( parser
- which can then incor)HY(po)HY(rate)YH( this sub-tree into the whole tree.)EP(
-
- )0 P(In this chapter we will discuss the mech)HY(a)HY(nisms)YH( offered by the
- C++/Parser mapping for return)HY(ing)YH( infor)HY(ma)HY(tion)YH( from indi)HY(vid)HY(ual)YH(
- parsers and see how to use them to build an object model
- of our people vocab)HY(u)HY(lary)YH(.)EP(
-
- )0 2 17 H(4.1)WB 67 Sn()WB 20 Sn( Object Model)EA()EH(
-
- )0 P(An object model for our person record example could
- look like this \201saved in the )SM(people.hxx)ES( file\202:)EP(
-
- ) 53 35 PR(#include <string>
-#include <vector>
-
-enum gender
-{
- male,
- female
-};
-
-class person
-{
-public:
- person \201const std::string& first,
- const std::string& last,
- ::gender gender,
- short age\202
- : first_ \201first\202, last_ \201last\202,
- gender_ \201gender\202, age_ \201age\202
- {
- }
-
- const std::string&
- first \201\202 const
- {
- return first_;
- }
-
- const std::string&
- last \201\202 const
- {
- return last_;)WR(
- }
-
- ::gender
- gender \201\202 const
- {
- return gender_;
- }
-
- short
- age \201\202 const
- {
- return age_;
- }
-
-private:
- std::string first_;
- std::string last_;
- ::gender gender_;
- short age_;
-};
-
-typedef std::vector<person> people;)RP(
-
- )0 P(While it is clear which parser is respon)HY(si)HY(ble)YH( for which part of
- the object model, it is not exactly clear how, for
- example, )SM(gender_pimpl)ES( will deliver )SM(gender)ES(
- to )SM(person_pimpl)ES(. You might have noticed that
- )SM(string_pimpl)ES( manages to deliver its value to the
- )SM(first_name\201\202)ES( call)HY(back)YH( of )SM(person_pimpl)ES(. Let's
- see how we can utilize the same mech)HY(a)HY(nism)YH( to prop)HY(a)HY(gate)YH( our
- own data.)EP(
-
- )0 P(There is a way to tell the XSD compiler that you want to
- exchange data between parsers. More precisely, for each
- type defined in XML Schema, you can tell the compiler two things.
- First, the return type of the )SM(post_*\201\202)ES( call)HY(back)YH(
- in the parser skele)HY(ton)YH( gener)HY(ated)YH( for this type. And, second,
- the argu)HY(ment)YH( type for call)HY(backs)YH( corre)HY(spond)HY(ing)YH( to elements and
- attributes of this type. For example, for XML Schema type
- )SM(gender)ES( we can specify the return type for
- )SM(post_gender\201\202)ES( in the )SM(gender_pskel)ES(
- skele)HY(ton)YH( and the argu)HY(ment)YH( type for the )SM(gender\201\202)ES( call)HY(back)YH(
- in the )SM(person_pskel)ES( skele)HY(ton)YH(. As you might have guessed,
- the gener)HY(ated)YH( code will then pass the return value from the
- )SM(post_*\201\202)ES( call)HY(back)YH( as an argu)HY(ment)YH( to the element or
- attribute call)HY(back)YH(.)EP(
-
- )0 P(The way to tell the XSD compiler about these XML Schema to
- C++ mappings is with type map files. Here is a simple type
- map for the )SM(gender)ES( type from the previ)HY(ous)YH( para)HY(graph)YH(:)EP(
-
- ) 2 25 PR(include "people.hxx";
-gender ::gender ::gender;)RP(
-
- )0 P(The first line indi)HY(cates)YH( that the gener)HY(ated)YH( code must include
- )SM(people.hxx)ES( in order to get the defi)HY(ni)HY(tion)YH( for the
- )SM(gender)ES( type. The second line spec)HY(i)HY(fies)YH( that both
- argu)HY(ment)YH( and return types for the )SM(gender)ES(
- XML Schema type should be the )SM(::gender)ES( C++ enum
- \201we use fully-qual)HY(i)HY(fied)YH( C++ names to avoid name clashes\202.
- The next section will describe the type map format in detail.
- We save this type map in )SM(people.map)ES( and
- then trans)HY(late)YH( our schemas with the )SM(--type-map)ES(
- option to let the XSD compiler know about our type map:)EP(
-
- ) 1 49 PR($ xsd cxx-parser --type-map people.map people.xsd)RP(
-
- )0 P(If we now look at the gener)HY(ated)YH( )SM(people-pskel.hxx)ES(,
- we will see the follow)HY(ing)YH( changes in the )SM(gender_pskel)ES( and
- )SM(person_pskel)ES( skele)HY(tons)YH(:)EP(
-
- ) 17 59 PR(#include "people.hxx"
-
-class gender_pskel: public virtual xml_schema::string_pskel
-{
- virtual ::gender
- post_gender \201\202 = 0;
-
- ...
-};
-
-class person_pskel: public xml_schema::complex_content
-{
- virtual void
- gender \201::gender\202;
-
- ...
-};)RP(
-
- )0 P(Notice that )SM(#include "people.hxx")ES( was added to
- the gener)HY(ated)YH( header file from the type map to provide the
- defi)HY(ni)HY(tion)YH( for the )SM(gender)ES( enum.)EP(
-
- )0 2 18 H(4.2)WB 68 Sn()WB 21 Sn( Type Map File Format)EA()EH(
-
- )0 P(Type map files are used to define a mapping between XML Schema
- and C++ types. The compiler uses this infor)HY(ma)HY(tion)YH(
- to deter)HY(mine)YH( return types of )SM(post_*\201\202)ES(
- call)HY(backs)YH( in parser skele)HY(tons)YH( corre)HY(spond)HY(ing)YH( to XML Schema
- types as well as argu)HY(ment)YH( types for call)HY(backs)YH( corre)HY(spond)HY(ing)YH(
- to elements and attributes of these types.)EP(
-
- )0 P(The compiler has a set of prede)HY(fined)YH( mapping rules that map
- the built-in XML Schema types to suit)HY(able)YH( C++ types \201discussed
- below\202 and all other types to )SM(void)ES(.
- By provid)HY(ing)YH( your own type maps you can over)HY(ride)YH( these prede)HY(fined)YH(
- rules. The format of the type map file is presented below:
- )EP(
-
- ) 5 58 PR(namespace <schema-namespace> [<cxx-namespace>]
-{
- \201include <file-name>;\202*
- \201[type] <schema-type> <cxx-ret-type> [<cxx-arg-type>];\202*
-})RP(
-
- )0 P(Both )SM()I(<schema-names)HY(pace)YH(>)ES()ES( and
- )SM()I(<schema-type>)ES()ES( are regex patterns while
- )SM()I(<cxx-names)HY(pace)YH(>)ES()ES(,
- )SM()I(<cxx-ret-type>)ES()ES(, and
- )SM()I(<cxx-arg-type>)ES()ES( are regex pattern
- substi)HY(tu)HY(tions)YH(. All names can be option)HY(ally)YH( enclosed in
- )SM(" ")ES(, for example, to include white-spaces.)EP(
-
- )0 P()SM()I(<schema-names)HY(pace)YH(>)ES()ES( deter)HY(mines)YH( XML
- Schema names)HY(pace)YH(. Optional )SM()I(<cxx-names)HY(pace)YH(>)ES()ES(
- is prefixed to every C++ type name in this names)HY(pace)YH( decla)HY(ra)HY(tion)YH(.
- )SM()I(<cxx-ret-type>)ES()ES( is a C++ type name that is
- used as a return type for the )SM(post_*\201\202)ES( call)HY(back)YH(.
- Optional )SM()I(<cxx-arg-type>)ES()ES( is an argu)HY(ment)YH(
- type for call)HY(backs)YH( corre)HY(spond)HY(ing)YH( to elements and attributes
- of this type. If )SM()I(<cxx-arg-type>)ES()ES( is not
- spec)HY(i)HY(fied)YH(, it defaults to )SM()I(<cxx-ret-type>)ES()ES(
- if )SM()I(<cxx-ret-type>)ES()ES( ends with )SM(*)ES( or
- )SM(&)ES( \201that is, it is a pointer or a refer)HY(ence)YH(\202 and
- )SM(const\240)I(<cxx-ret-type>)ES(&)ES(
- other)HY(wise)YH(.
- )SM()I(<file-name>)ES()ES( is a file name either in the
- )SM(" ")ES( or )SM(< >)ES( format
- and is added with the )SM(#include)ES( direc)HY(tive)YH( to
- the gener)HY(ated)YH( code.)EP(
-
- )0 P(The )SM()BD(#)ES()ES( char)HY(ac)HY(ter)YH( starts a comment that ends
- with a new line or end of file. To specify a name that contains
- )SM()BD(#)ES()ES( enclose it in )SM()BD(" ")ES()ES(.
- For example:)EP(
-
- ) 12 44 PR(namespace http://www.example.com/xmlns/my my
-{
- include "my.hxx";
-
- # Pass apples by value.
- #
- apple apple;
-
- # Pass oranges as pointers.
- #
- orange orange_t*;
-})RP(
-
- )0 P(In the example above, for the
- )SM(http://www.example.com/xmlns/my#orange)ES(
- XML Schema type, the )SM(my::orange_t*)ES( C++ type will
- be used as both return and argu)HY(ment)YH( types.)EP(
-
- )0 P(Several names)HY(pace)YH( decla)HY(ra)HY(tions)YH( can be spec)HY(i)HY(fied)YH( in a single
- file. The names)HY(pace)YH( decla)HY(ra)HY(tion)YH( can also be completely
- omitted to map types in a schema without a names)HY(pace)YH(. For
- instance:)EP(
-
- ) 7 41 PR(include "my.hxx";
-apple apple;
-
-namespace http://www.example.com/xmlns/my
-{
- orange "const orange_t*";
-})RP(
-
- )0 P(The compiler has a number of prede)HY(fined)YH( mapping rules for
- the built-in XML Schema types which can be presented as the
- follow)HY(ing)YH( map files. The string-based XML Schema types are
- mapped to either )SM(std::string)ES( or
- )SM(std::wstring)ES( depend)HY(ing)YH( on the char)HY(ac)HY(ter)YH( type
- selected \201see )0 25 1 A( Section 5.2, "Char)HY(ac)HY(ter)YH( Type and
- Encod)HY(ing)YH(")25 0 TN TL()Ec /AF f D( for more infor)HY(ma)HY(tion)YH(\202. The binary XML Schema
- types are mapped to either )SM(std::auto_ptr<xml_schema::buffer>)ES(
- or )SM(std::unique_ptr<xml_schema::buffer>)ES(
- depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected \201C++98 or C++11,
- respec)HY(tively)YH(; refer to the )SM(--std)ES( XSD compiler
- command line option for details\202.)EP(
-
- ) 59 63 PR(namespace http://www.w3.org/2001/XMLSchema
-{
- boolean bool bool;
-
- byte "signed char" "signed char";
- unsignedByte "unsigned char" "unsigned char";
-
- short short short;
- unsignedShort "unsigned short" "unsigned short";
-
- int int int;
- unsignedInt "unsigned int" "unsigned int";
-
- long "long long" "long long";
- unsignedLong "unsigned long long" "unsigned long long";
-
- integer "long long" "long long";
-
- negativeInteger "long long" "long long";
- nonPositiveInteger "long long" "long long";
-
- positiveInteger "unsigned long long" "unsigned long long";
- nonNegativeInteger "unsigned long long" "unsigned long long";
-
- float float float;
- double double double;
- decimal double double;
-
- string std::string;
- normalizedString std::string;
- token std::string;)WR(
- Name std::string;
- NMTOKEN std::string;
- NCName std::string;
- ID std::string;
- IDREF std::string;
- language std::string;
- anyURI std::string;
-
- NMTOKENS xml_schema::string_sequence;
- IDREFS xml_schema::string_sequence;
-
- QName xml_schema::qname;
-
- base64Binary std::[auto|unique]_ptr<xml_schema::buffer>
- std::[auto|unique]_ptr<xml_schema::buffer>;
- hexBinary std::[auto|unique]_ptr<xml_schema::buffer>
- std::[auto|unique]_ptr<xml_schema::buffer>;
-
- date xml_schema::date;
- dateTime xml_schema::date_time;
- duration xml_schema::duration;
- gDay xml_schema::gday;
- gMonth xml_schema::gmonth;
- gMonthDay xml_schema::gmonth_day;
- gYear xml_schema::gyear;
- gYearMonth xml_schema::gyear_month;
- time xml_schema::time;
-})RP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( about the mapping of the built-in XML Schema types
- to C++ types refer to )0 29 1 A(Chapter 6, "Built-In XML Schema Type
- Parsers")29 0 TN TL()Ec /AF f D(. The last prede)HY(fined)YH( rule maps anything that wasn't
- mapped by previ)HY(ous)YH( rules to )SM(void)ES(:)EP(
-
- ) 4 15 PR(namespace .*
-{
- .* void void;
-})RP(
-
-
- )0 P(When you provide your own type maps with the
- )SM(--type-map)ES( option, they are eval)HY(u)HY(ated)YH( first. This
- allows you to selec)HY(tively)YH( over)HY(ride)YH( any of the prede)HY(fined)YH( rules.
- Note also that if you change the mapping
- of a built-in XML Schema type then it becomes your respon)HY(si)HY(bil)HY(ity)YH(
- to provide the corre)HY(spond)HY(ing)YH( parser skele)HY(ton)YH( and imple)HY(men)HY(ta)HY(tion)YH(
- in the )SM(xml_schema)ES( names)HY(pace)YH(. You can include the
- custom defi)HY(ni)HY(tions)YH( into the gener)HY(ated)YH( header file using the
- )SM(--hxx-prologue-*)ES( options.)EP(
-
- )0 2 19 H(4.3)WB 69 Sn()WB 22 Sn( Parser Imple)HY(men)HY(ta)HY(tions)YH()EA()EH(
-
- )0 P(With the knowl)HY(edge)YH( from the previ)HY(ous)YH( section, we can proceed
- with creat)HY(ing)YH( a type map that maps types in the )SM(people.xsd)ES(
- schema to our object model classes in
- )SM(people.hxx)ES(. In fact, we already have the begin)HY(ning)YH(
- of our type map file in )SM(people.map)ES(. Let's extend
- it with the rest of the types:)EP(
-
- ) 5 25 PR(include "people.hxx";
-
-gender ::gender ::gender;
-person ::person;
-people ::people;)RP(
-
- )0 P(There are a few things to note about this type map. We did not
- provide the argu)HY(ment)YH( types for )SM(person)ES( and
- )SM(people)ES( because the default constant refer)HY(ence)YH( is
- exactly what we need. We also did not provide any mappings
- for built-in XML Schema types )SM(string)ES( and
- )SM(short)ES( because they are handled by the prede)HY(fined)YH(
- rules and we are happy with the result. Note also that
- all C++ types are fully qual)HY(i)HY(fied)YH(. This is done to avoid
- poten)HY(tial)YH( name conflicts in the gener)HY(ated)YH( code. Now we can
- recom)HY(pile)YH( our schema and move on to imple)HY(ment)HY(ing)YH( the parsers:)EP(
-
- ) 1 68 PR($ xsd cxx-parser --xml-parser expat --type-map people.map people.xsd)RP(
-
- )0 P(Here is the imple)HY(men)HY(ta)HY(tion)YH( of our three parsers in full. One
- way to save typing when imple)HY(ment)HY(ing)YH( your own parsers is
- to open the gener)HY(ated)YH( code and copy the signa)HY(tures)YH( of parser
- call)HY(backs)YH( into your code. Or you could always auto gener)HY(ate)YH( the
- sample imple)HY(men)HY(ta)HY(tions)YH( and fill them with your code.)EP(
-
-
- ) 73 52 PR(#include "people-pskel.hxx"
-
-class gender_pimpl: public gender_pskel,
- public xml_schema::string_pimpl
-{
-public:
- virtual ::gender
- post_gender \201\202
- {
- return post_string \201\202 == "male" ? male : female;
- }
-};
-
-class person_pimpl: public person_pskel
-{
-public:
- virtual void
- first_name \201const std::string& f\202
- {
- first_ = f;
- }
-
- virtual void
- last_name \201const std::string& l\202
- {
- last_ = l;
- }
-
- virtual void
- gender \201::gender g\202
- {)WR(
- gender_ = g;
- }
-
- virtual void
- age \201short a\202
- {
- age_ = a;
- }
-
- virtual ::person
- post_person \201\202
- {
- return ::person \201first_, last_, gender_, age_\202;
- }
-
-private:
- std::string first_;
- std::string last_;
- ::gender gender_;
- short age_;
-};
-
-class people_pimpl: public people_pskel
-{
-public:
- virtual void
- person \201const ::person& p\202
- {
- people_.push_back \201p\202;
- })WR(
-
- virtual ::people
- post_people \201\202
- {
- ::people r;
- r.swap \201people_\202;
- return r;
- }
-
-private:
- ::people people_;
-};)RP(
-
- )0 P(This code frag)HY(ment)YH( should look famil)HY(iar)YH( by now. Just note that
- all the )SM(post_*\201\202)ES( call)HY(backs)YH( now have return types instead
- of )SM(void)ES(. Here is the imple)HY(men)HY(ta)HY(tion)YH( of the test
- driver for this example:)EP(
-
- ) 38 76 PR(#include <iostream>
-
-using namespace std;
-
-int
-main \201int argc, char* argv[]\202
-{
- // Construct the parser.
- //
- xml_schema::short_pimpl short_p;
- xml_schema::string_pimpl string_p;
-
- gender_pimpl gender_p;
- person_pimpl person_p;
- people_pimpl people_p;
-
- person_p.parsers \201string_p, string_p, gender_p, short_p\202;
- people_p.parsers \201person_p\202;
-
- // Parse the document to obtain the object model.
- //
- xml_schema::document doc_p \201people_p, "people"\202;
-
- people_p.pre \201\202;
- doc_p.parse \201argv[1]\202;
- people ppl = people_p.post_people \201\202;
-
- // Print the object model.
- //
- for \201people::iterator i \201ppl.begin \201\202\202; i != ppl.end \201\202; ++i\202
- {)WR(
- cout << "first: " << i->first \201\202 << endl
- << "last: " << i->last \201\202 << endl
- << "gender: " << \201i->gender \201\202 == male ? "male" : "female"\202 << endl
- << "age: " << i->age \201\202 << endl
- << endl;
- }
-})RP(
-
- )0 P(The parser creation and assem)HY(bly)YH( part is exactly the same as in
- the previ)HY(ous)YH( chapter. The parsing part is a bit differ)HY(ent)YH(:
- )SM(post_people\201\202)ES( now has a return value which is the
- complete object model. We store it in the
- )SM(ppl)ES( vari)HY(able)YH(. The last bit of the code simply iter)HY(ates)YH(
- over the )SM(people)ES( vector and prints the infor)HY(ma)HY(tion)YH(
- for each person. We save the last two code frag)HY(ments)YH( to
- )SM(driver.cxx)ES( and proceed to compile and test
- our new appli)HY(ca)HY(tion)YH(:)EP(
-
-
- ) 12 49 PR($ c++ -I.../libxsd -c driver.cxx people-pskel.cxx
-$ c++ -o driver driver.o people-pskel.o -lexpat
-$ ./driver people.xml
-first: John
-last: Doe
-gender: male
-age: 32
-
-first: Jane
-last: Doe
-gender: female
-age: 28)RP(
-
-
-
-
-
- )0 1 20 H(5)WB 70 Sn()WB 23 Sn( Mapping Config)HY(u)HY(ra)HY(tion)YH()EA()EH(
-
- )0 P(The C++/Parser mapping has a number of config)HY(u)HY(ra)HY(tion)YH( param)HY(e)HY(ters)YH( that
- deter)HY(mine)YH( the overall prop)HY(er)HY(ties)YH( and behav)HY(ior)YH( of the gener)HY(ated)YH( code.
- Config)HY(u)HY(ra)HY(tion)YH( param)HY(e)HY(ters)YH( are spec)HY(i)HY(fied)YH( with the XSD command line
- options and include the C++ stan)HY(dard)YH(, the char)HY(ac)HY(ter)YH( type that is used
- by the gener)HY(ated)YH( code, the under)HY(ly)HY(ing)YH( XML parser, whether the XML Schema
- vali)HY(da)HY(tion)YH( is performed in the gener)HY(ated)YH( code, and support for XML Schema
- poly)HY(mor)HY(phism)YH(. This chapter describes these config)HY(u)HY(ra)HY(tion)YH(
- param)HY(e)HY(ters)YH( in more detail. For more ways to config)HY(ure)YH( the gener)HY(ated)YH(
- code refer to the
- )R1 2 A(XSD
- Compiler Command Line Manual)EA(.
- )EP(
-
- )0 2 21 H(5.1)WB 71 Sn()WB 24 Sn( C++ Stan)HY(dard)YH()EA()EH(
-
- )0 P(The C++/Parser mapping provides support for ISO/IEC C++ 1998/2003 \201C++98\202
- and ISO/IEC C++ 2011 \201C++11\202. To select the C++ stan)HY(dard)YH( for the
- gener)HY(ated)YH( code we use the )SM(--std)ES( XSD compiler command
- line option. While the major)HY(ity)YH( of the exam)HY(ples)YH( in this guide use
- C++98, support for the new func)HY(tion)HY(al)HY(ity)YH( and library compo)HY(nents)YH(
- intro)HY(duced)YH( in C++11 are discussed through)HY(out)YH( the docu)HY(ment)YH(.)EP(
-
- )0 2 22 H(5.2)WB 72 Sn()WB 25 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()EA()EH(
-
- )0 P(The C++/Parser mapping has built-in support for two char)HY(ac)HY(ter)YH( types:
- )SM(char)ES( and )SM(wchar_t)ES(. You can select the
- char)HY(ac)HY(ter)YH( type with the )SM(--char-type)ES( command line
- option. The default char)HY(ac)HY(ter)YH( type is )SM(char)ES(. The
- string-based built-in XML Schema types are returned as either
- )SM(std::string)ES( or )SM(std::wstring)ES( depend)HY(ing)YH(
- on the char)HY(ac)HY(ter)YH( type selected.)EP(
-
- )0 P(Another aspect of the mapping that depends on the char)HY(ac)HY(ter)YH( type
- is char)HY(ac)HY(ter)YH( encod)HY(ing)YH(. For the )SM(char)ES( char)HY(ac)HY(ter)YH( type
- the default encod)HY(ing)YH( is UTF-8. Other supported encod)HY(ings)YH( are
- ISO-8859-1, Xerces-C++ Local Code Page \201LPC\202, as well as
- custom encod)HY(ings)YH(. You can select which encod)HY(ing)YH( should be used
- in the object model with the )SM(--char-encod)HY(ing)YH()ES( command
- line option.)EP(
-
- )0 P(For the )SM(wchar_t)ES( char)HY(ac)HY(ter)YH( type the encod)HY(ing)YH( is
- auto)HY(mat)HY(i)HY(cally)YH( selected between UTF-16 and UTF-32/UCS-4 depend)HY(ing)YH(
- on the size of the )SM(wchar_t)ES( type. On some plat)HY(forms)YH(
- \201for example, Windows with Visual C++ and AIX with IBM XL C++\202
- )SM(wchar_t)ES( is 2 bytes long. For these plat)HY(forms)YH( the
- encod)HY(ing)YH( is UTF-16. On other plat)HY(forms)YH( )SM(wchar_t)ES( is 4 bytes
- long and UTF-32/UCS-4 is used.)EP(
-
- )0 P(Note also that the char)HY(ac)HY(ter)YH( encod)HY(ing)YH( that is used in the object model
- is inde)HY(pen)HY(dent)YH( of the encod)HY(ings)YH( used in input and output XML. In fact,
- all three \201object mode, input XML, and output XML\202 can have differ)HY(ent)YH(
- encod)HY(ings)YH(.)EP(
-
- )0 2 23 H(5.3)WB 73 Sn()WB 26 Sn( Under)HY(ly)HY(ing)YH( XML Parser)EA()EH(
-
- )0 P(The C++/Parser mapping can be used with either Xerces-C++ or Expat
- as the under)HY(ly)HY(ing)YH( XML parser. You can select the XML parser with
- the )SM(--xml-parser)ES( command line option. Valid values
- for this option are )SM(xerces)ES( and )SM(expat)ES(.
- The default XML parser is Xerces-C++.)EP(
-
- )0 P(The gener)HY(ated)YH( code is iden)HY(ti)HY(cal)YH( for both parsers except for the
- )SM(xml_schema::docu)HY(ment)YH()ES( class in which some of the
- )SM(parse\201\202)ES( func)HY(tions)YH( are parser-specific as described
- in )0 44 1 A(Chapter 7, "Docu)HY(ment)YH( Parser and Error Handling")44 0 TN TL()Ec /AF f D(.)EP(
-
-
- )0 2 24 H(5.4)WB 74 Sn()WB 27 Sn( XML Schema Vali)HY(da)HY(tion)YH()EA()EH(
-
- )0 P(The C++/Parser mapping provides support for vali)HY(dat)HY(ing)YH( a
- commonly-used subset of W3C XML Schema in the gener)HY(ated)YH( code.
- For the list of supported XML Schema constructs refer to
- )0 48 1 A(Appendix A, "Supported XML Schema Constructs")48 0 TN TL()Ec /AF f D(.)EP(
-
- )0 P(By default vali)HY(da)HY(tion)YH( in the gener)HY(ated)YH( code is disabled if
- the under)HY(ly)HY(ing)YH( XML parser is vali)HY(dat)HY(ing)YH( \201Xerces-C++\202 and
- enabled other)HY(wise)YH( \201Expat\202. See )0 26 1 A(Section 5.3,
- "Under)HY(ly)HY(ing)YH( XML Parser")26 0 TN TL()Ec /AF f D( for more infor)HY(ma)HY(tion)YH( about
- the under)HY(ly)HY(ing)YH( XML parser. You can over)HY(ride)YH( the default
- behav)HY(ior)YH( with the )SM(--gener)HY(ate)YH(-vali)HY(da)HY(tion)YH()ES(
- and )SM(--suppress-vali)HY(da)HY(tion)YH()ES( command line options.)EP(
-
-
- )0 2 25 H(5.5)WB 75 Sn()WB 28 Sn( Support for Poly)HY(mor)HY(phism)YH()EA()EH(
-
- )0 P(By default the XSD compiler gener)HY(ates)YH( non-poly)HY(mor)HY(phic)YH( code. If your
- vocab)HY(u)HY(lary)YH( uses XML Schema poly)HY(mor)HY(phism)YH( in the form of )SM(xsi:type)ES(
- and/or substi)HY(tu)HY(tion)YH( groups, then you will need to compile your schemas
- with the )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option to produce
- poly)HY(mor)HY(phism)YH(-aware code as well as pass )SM(true)ES( as the last
- argu)HY(ment)YH( to the )SM(xml_schema::docu)HY(ment)YH()ES('s construc)HY(tors)YH(.)EP(
-
- )0 P(When using the poly)HY(mor)HY(phism)YH(-aware gener)HY(ated)YH( code, you can specify
- several parsers for a single element by passing a parser map
- instead of an indi)HY(vid)HY(ual)YH( parser to the parser connec)HY(tion)YH( func)HY(tion)YH(
- for the element. One of the parsers will then be looked up and used
- depend)HY(ing)YH( on the )SM(xsi:type)ES( attribute value or an element
- name from a substi)HY(tu)HY(tion)YH( group. Consider the follow)HY(ing)YH( schema as an
- example:)EP(
-
- ) 44 62 PR(<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:complexType name="person">
- <xs:sequence>
- <xs:element name="name" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
-
- <!-- substitution group root -->
- <xs:element name="person" type="person"/>
-
- <xs:complexType name="superman">
- <xs:complexContent>
- <xs:extension base="person">
- <xs:attribute name="can-fly" type="xs:boolean"/>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
-
- <xs:element name="superman"
- type="superman"
- substitutionGroup="person"/>
-
- <xs:complexType name="batman">
- <xs:complexContent>
- <xs:extension base="superman">
- <xs:attribute name="wing-span" type="xs:unsignedInt"/>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
-)WR(
- <xs:element name="batman"
- type="batman"
- substitutionGroup="superman"/>
-
- <xs:complexType name="supermen">
- <xs:sequence>
- <xs:element ref="person" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:element name="supermen" type="supermen"/>
-
-</xs:schema>)RP(
-
- )0 P(Conform)HY(ing)YH( XML docu)HY(ments)YH( can use the )SM(super)HY(man)YH()ES(
- and )SM(batman)ES( types in place of the )SM(person)ES(
- type either by spec)HY(i)HY(fy)HY(ing)YH( the type with the )SM(xsi:type)ES(
- attributes or by using the elements from the substi)HY(tu)HY(tion)YH(
- group, for instance:)EP(
-
-
- ) 15 64 PR(<supermen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
- <person>
- <name>John Doe</name>
- </person>
-
- <superman can-fly="false">
- <name>James "007" Bond</name>
- </superman>
-
- <superman can-fly="true" wing-span="10" xsi:type="batman">
- <name>Bruce Wayne</name>
- </superman>
-
-</supermen>)RP(
-
- )0 P(To print the data stored in such XML docu)HY(ments)YH( we can imple)HY(ment)YH(
- the parsers as follows:)EP(
-
- ) 79 52 PR(class person_pimpl: public virtual person_pskel
-{
-public:
- virtual void
- pre \201\202
- {
- cout << "starting to parse person" << endl;
- }
-
- virtual void
- name \201const std::string& v\202
- {
- cout << "name: " << v << endl;
- }
-
- virtual void
- post_person \201\202
- {
- cout << "finished parsing person" << endl;
- }
-};
-
-class superman_pimpl: public virtual superman_pskel,
- public person_pimpl
-{
-public:
- virtual void
- pre \201\202
- {
- cout << "starting to parse superman" << endl;
- })WR(
-
- virtual void
- can_fly \201bool v\202
- {
- cout << "can-fly: " << v << endl;
- }
-
- virtual void
- post_person \201\202
- {
- post_superman \201\202;
- }
-
- virtual void
- post_superman \201\202
- {
- cout << "finished parsing superman" << endl
- }
-};
-
-class batman_pimpl: public virtual batman_pskel,
- public superman_pimpl
-{
-public:
- virtual void
- pre \201\202
- {
- cout << "starting to parse batman" << endl;
- }
-)WR(
- virtual void
- wing_span \201unsigned int v\202
- {
- cout << "wing-span: " << v << endl;
- }
-
- virtual void
- post_superman \201\202
- {
- post_batman \201\202;
- }
-
- virtual void
- post_batman \201\202
- {
- cout << "finished parsing batman" << endl;
- }
-};)RP(
-
- )0 P(Note that because the derived type parsers \201)SM(super)HY(man)YH(_pskel)ES(
- and )SM(batman_pskel)ES(\202 are called via the )SM(person_pskel)ES(
- inter)HY(face)YH(, we have to over)HY(ride)YH( the )SM(post_person\201\202)ES(
- virtual func)HY(tion)YH( in )SM(super)HY(man)YH(_pimpl)ES( to call
- )SM(post_super)HY(man)YH(\201\202)ES( and the )SM(post_super)HY(man)YH(\201\202)ES(
- virtual func)HY(tion)YH( in )SM(batman_pimpl)ES( to call
- )SM(post_batman\201\202)ES(.)EP(
-
- )0 P(The follow)HY(ing)YH( code frag)HY(ment)YH( shows how to connect the parsers together.
- Notice that for the )SM(person)ES( element in the )SM(super)HY(men)YH(_p)ES(
- parser we specify a parser map instead of a specific parser and we pass
- )SM(true)ES( as the last argu)HY(ment)YH( to the docu)HY(ment)YH( parser construc)HY(tor)YH(
- to indi)HY(cate)YH( that we are parsing poten)HY(tially)YH(-poly)HY(mor)HY(phic)YH( XML docu)HY(ments)YH(:)EP(
-
- ) 39 64 PR(int
-main \201int argc, char* argv[]\202
-{
- // Construct the parser.
- //
- xml_schema::string_pimpl string_p;
- xml_schema::boolean_pimpl boolean_p;
- xml_schema::unsigned_int_pimpl unsigned_int_p;
-
- person_pimpl person_p;
- superman_pimpl superman_p;
- batman_pimpl batman_p;
-
- xml_schema::parser_map_impl person_map;
- supermen_pimpl supermen_p;
-
- person_p.parsers \201string_p\202;
- superman_p.parsers \201string_p, boolean_p\202;
- batman_p.parsers \201string_p, boolean_p, unsigned_int_p\202;
-
- // Here we are specifying a parser map which containes several
- // parsers that can be used to parse the person element.
- //
- person_map.insert \201person_p\202;
- person_map.insert \201superman_p\202;
- person_map.insert \201batman_p\202;
-
- supermen_p.person_parser \201person_map\202;
-
- // Parse the XML document. The last argument to the document's
- // constructor indicates that we are parsing polymorphic XML)WR(
- // documents.
- //
- xml_schema::document doc_p \201supermen_p, "supermen", true\202;
-
- supermen_p.pre \201\202;
- doc_p.parse \201argv[1]\202;
- supermen_p.post_supermen \201\202;
-})RP(
-
- )0 P(When poly)HY(mor)HY(phism)YH(-aware code is gener)HY(ated)YH(, each element's
- )SM(*_parser\201\202)ES( func)HY(tion)YH( is over)HY(loaded)YH( to also accept
- an object of the )SM(xml_schema::parser_map)ES( type.
- For example, the )SM(super)HY(men)YH(_pskel)ES( class from the
- above example looks like this:)EP(
-
- ) 21 63 PR(class supermen_pskel: public xml_schema::parser_complex_content
-{
-public:
-
- ...
-
- // Parser construction API.
- //
- void
- parsers \201person_pskel&\202;
-
- // Individual element parsers.
- //
- void
- person_parser \201person_pskel&\202;
-
- void
- person_parser \201const xml_schema::parser_map&\202;
-
- ...
-};)RP(
-
- )0 P(Note that you can specify both the indi)HY(vid)HY(ual)YH( \201static\202 parser and
- the parser map. The indi)HY(vid)HY(ual)YH( parser will be used when the static
- element type and the dynamic type of the object being parsed are
- the same. This is the case, for example, when there is no
- )SM(xsi:type)ES( attribute and the element hasn't been
- substi)HY(tuted)YH(. Because the indi)HY(vid)HY(ual)YH( parser for an element is
- cached and no map lookup is neces)HY(sary)YH(, it makes sense to specify
- both the indi)HY(vid)HY(ual)YH( parser and the parser map when most of the
- objects being parsed are of the static type and optimal
- perfor)HY(mance)YH( is impor)HY(tant)YH(. The follow)HY(ing)YH( code frag)HY(ment)YH( shows
- how to change the above example to set both the indi)HY(vid)HY(ual)YH(
- parser and the parser map:)EP(
-
- ) 13 40 PR(int
-main \201int argc, char* argv[]\202
-{
- ...
-
- person_map.insert \201superman_p\202;
- person_map.insert \201batman_p\202;
-
- supermen_p.person_parser \201person_p\202;
- supermen_p.person_parser \201person_map\202;
-
- ...
-})RP(
-
-
- )0 P(The )SM(xml_schema::parser_map)ES( inter)HY(face)YH( and the
- )SM(xml_schema::parser_map_impl)ES( default imple)HY(men)HY(ta)HY(tion)YH(
- are presented below:)EP(
-
- ) 27 45 PR(namespace xml_schema
-{
- class parser_map
- {
- public:
- virtual parser_base*
- find \201const ro_string* type\202 const = 0;
- };
-
- class parser_map_impl: public parser_map
- {
- public:
- void
- insert \201parser_base&\202;
-
- virtual parser_base*
- find \201const ro_string* type\202 const;
-
- private:
- parser_map_impl \201const parser_map_impl&\202;
-
- parser_map_impl&
- operator= \201const parser_map_impl&\202;
-
- ...
- };
-})RP(
-
- )0 P(The )SM(type)ES( argu)HY(ment)YH( in the )SM(find\201\202)ES( virtual
- func)HY(tion)YH( is the type name and names)HY(pace)YH( from the xsi:type attribute
- \201the names)HY(pace)YH( prefix is resolved to the actual XML names)HY(pace)YH(\202
- or the type of an element from the substi)HY(tu)HY(tion)YH( group in the form
- )SM("<name>\240<names)HY(pace)YH(>")ES( with the space and the
- names)HY(pace)YH( part absent if the type does not have a names)HY(pace)YH(.
- You can obtain a parser's dynamic type in the same format
- using the )SM(_dynamic_type\201\202)ES( func)HY(tion)YH(. The static
- type can be obtained by calling the static )SM(_static_type\201\202)ES(
- func)HY(tion)YH(, for example )SM(person_pskel::_static_type\201\202)ES(.
- Both func)HY(tions)YH( return a C string \201)SM(const char*)ES( or
- )SM(const wchar_t*)ES(, depend)HY(ing)YH( on the char)HY(ac)HY(ter)YH( type
- used\202 which is valid for as long as the appli)HY(ca)HY(tion)YH( is running.
- The follow)HY(ing)YH( example shows how we can imple)HY(ment)YH( our own parser
- map using )SM(std::map)ES(:)EP(
-
-
- ) 23 62 PR(#include <map>
-#include <string>
-
-class parser_map: public xml_schema::parser_map
-{
-public:
- void
- insert \201xml_schema::parser_base& p\202
- {
- map_[p._dynamic_type \201\202] = &p;
- }
-
- virtual xml_schema::parser_base*
- find \201const xml_schema::ro_string* type\202 const
- {
- map::const_iterator i = map_.find \201type\202;
- return i != map_.end \201\202 ? i->second : 0;
- }
-
-private:
- typedef std::map<std::string, xml_schema::parser_base*> map;
- map map_;
-};)RP(
-
- )0 P(Most of code presented in this section is taken from the
- )SM(poly)HY(mor)HY(phism)YH()ES( example which can be found in the
- )SM(exam)HY(ples)YH(/cxx/parser/)ES( direc)HY(tory)YH( of the XSD distri)HY(bu)HY(tion)YH(.
- Handling of )SM(xsi:type)ES( and substi)HY(tu)HY(tion)YH( groups when used
- on root elements requires a number of special actions as shown in
- the )SM(poly)HY(root)YH()ES( example.)EP(
-
-
-
-
-
- )0 1 26 H(6)WB 76 Sn()WB 29 Sn( Built-In XML Schema Type Parsers)EA()EH(
-
- )0 P(The XSD runtime provides parser imple)HY(men)HY(ta)HY(tions)YH( for all built-in
- XML Schema types as summa)HY(rized)YH( in the follow)HY(ing)YH( table. Decla)HY(ra)HY(tions)YH(
- for these types are auto)HY(mat)HY(i)HY(cally)YH( included into each gener)HY(ated)YH(
- header file. As a result you don't need to include any headers
- to gain access to these parser imple)HY(men)HY(ta)HY(tions)YH(. Note that some
- parsers return either )SM(std::string)ES( or
- )SM(std::wstring)ES( depend)HY(ing)YH( on the char)HY(ac)HY(ter)YH( type selected.)EP(
-
-
- )0 PT(
-
- )0 2 27 H(6.1)WB 77 Sn()WB 31 Sn( )SM(QName)ES( Parser)EA()EH(
-
- )0 P(The return type of the )SM(qname_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
- is )SM(xml_schema::qname)ES( which repre)HY(sents)YH( an XML qual)HY(i)HY(fied)YH(
- name. Its inter)HY(face)YH( is presented below.
- Note that the )SM(std::string)ES( type in the inter)HY(face)YH( becomes
- )SM(std::wstring)ES( if the selected char)HY(ac)HY(ter)YH( type is
- )SM(wchar_t)ES(.)EP(
-
- ) 28 63 PR(namespace xml_schema
-{
- class qname
- {
- public:
- explicit
- qname \201const std::string& name\202;
- qname \201const std::string& prefix, const std::string& name\202;
-
- const std::string&
- prefix \201\202 const;
-
- void
- prefix \201const std::string&\202;
-
- const std::string&
- name \201\202 const;
-
- void
- name \201const std::string&\202;
- };
-
- bool
- operator== \201const qname&, const qname&\202;
-
- bool
- operator!= \201const qname&, const qname&\202;
-})RP(
-
-
- )0 2 28 H(6.2)WB 78 Sn()WB 32 Sn( )SM(NMTO)HY(KENS)YH()ES( and )SM(IDREFS)ES( Parsers)EA()EH(
-
- )0 P(The return type of the )SM(nmto)HY(kens)YH(_pimpl)ES( and
- )SM(idrefs_pimpl)ES( parser imple)HY(men)HY(ta)HY(tions)YH( is
- )SM(xml_schema::string_sequence)ES( which repre)HY(sents)YH( a
- sequence of strings. Its inter)HY(face)YH( is presented below.
- Note that the )SM(std::string)ES( type in the inter)HY(face)YH( becomes
- )SM(std::wstring)ES( if the selected char)HY(ac)HY(ter)YH( type is
- )SM(wchar_t)ES(.)EP(
-
- ) 21 62 PR(namespace xml_schema
-{
- class string_sequence: public std::vector<std::string>
- {
- public:
- string_sequence \201\202;
-
- explicit
- string_sequence \201std::vector<std::string>::size_type n,
- const std::string& x = std::string \201\202\202;
-
- template <typename I>
- string_sequence \201const I& begin, const I& end\202;
- };
-
- bool
- operator== \201const string_sequence&, const string_sequence&\202;
-
- bool
- operator!= \201const string_sequence&, const string_sequence&\202;
-})RP(
-
-
- )0 2 29 H(6.3)WB 79 Sn()WB 33 Sn( )SM(base64Binary)ES( and )SM(hexBi)HY(nary)YH()ES( Parsers)EA()EH(
-
- )0 P(The return type of the )SM(base64_binary_pimpl)ES( and
- )SM(hex_binary_pimpl)ES( parser imple)HY(men)HY(ta)HY(tions)YH( is either
- )SM(std::auto_ptr<xml_schema::buffer>)ES( \201C++98\202 or
- )SM(std::unique_ptr<xml_schema::buffer>)ES( \201C++11\202,
- depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected \201)SM(--std)ES( XSD
- compiler option\202. The )SM(xml_schema::buffer)ES( type
- repre)HY(sents)YH( a binary buffer and its inter)HY(face)YH( is presented below.)EP(
-
- ) 69 60 PR(namespace xml_schema
-{
- class buffer
- {
- public:
- typedef std::size_t size_t;
-
- class bounds {}; // Out of bounds exception.
-
- public:
- explicit
- buffer \201size_t size = 0\202;
- buffer \201size_t size, size_t capacity\202;
- buffer \201const void* data, size_t size\202;
- buffer \201const void* data, size_t size, size_t capacity\202;
- buffer \201void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership\202;
-
- public:
- buffer \201const buffer&\202;
-
- buffer&
- operator= \201const buffer&\202;
-
- void
- swap \201buffer&\202;
-
- public:
- size_t)WR(
- capacity \201\202 const;
-
- bool
- capacity \201size_t\202;
-
- public:
- size_t
- size \201\202 const;
-
- bool
- size \201size_t\202;
-
- public:
- const char*
- data \201\202 const;
-
- char*
- data \201\202;
-
- const char*
- begin \201\202 const;
-
- char*
- begin \201\202;
-
- const char*
- end \201\202 const;
-
- char*
- end \201\202;)WR(
- };
-
- bool
- operator== \201const buffer&, const buffer&\202;
-
- bool
- operator!= \201const buffer&, const buffer&\202;
-})RP(
-
- )0 P(If the )SM(assume_owner)HY(ship)YH()ES( argu)HY(ment)YH( to the construc)HY(tor)YH(
- is )SM(true)ES(, the instance assumes the owner)HY(ship)YH( of the
- memory block pointed to by the )SM(data)ES( argu)HY(ment)YH( and will
- even)HY(tu)HY(ally)YH( release it by calling )SM(oper)HY(a)HY(tor)YH( delete\201\202)ES(. The
- )SM(capac)HY(ity)YH(\201\202)ES( and )SM(size\201\202)ES( modi)HY(fier)YH( func)HY(tions)YH(
- return )SM(true)ES( if the under)HY(ly)HY(ing)YH( buffer has moved.
- )EP(
-
- )0 P(The )SM(bounds)ES( excep)HY(tion)YH( is thrown if the construc)HY(tor)YH(
- argu)HY(ments)YH( violate the )SM(\201size\240<=\240capac)HY(ity)YH(\202)ES(
- constraint.)EP(
-
-
- )0 2 30 H(6.4)WB 80 Sn()WB 34 Sn( Time Zone Repre)HY(sen)HY(ta)HY(tion)YH()EA()EH(
-
- )0 P(The )SM(date)ES(, )SM(date)HY(Time)YH()ES(, )SM(gDay)ES(,
- )SM(gMonth)ES(, )SM(gMon)HY(th)HY(Day)YH()ES(, )SM(gYear)ES(,
- )SM(gYear)HY(Month)YH()ES(, and )SM(time)ES( XML Schema built-in
- types all include an optional time zone compo)HY(nent)YH(. The follow)HY(ing)YH(
- )SM(xml_schema::time_zone)ES( base class is used to repre)HY(sent)YH(
- this infor)HY(ma)HY(tion)YH(:)EP(
-
- ) 33 50 PR(namespace xml_schema
-{
- class time_zone
- {
- public:
- time_zone \201\202;
- time_zone \201short hours, short minutes\202;
-
- bool
- zone_present \201\202 const;
-
- void
- zone_reset \201\202;
-
- short
- zone_hours \201\202 const;
-
- void
- zone_hours \201short\202;
-
- short
- zone_minutes \201\202 const;
-
- void
- zone_minutes \201short\202;
- };
-
- bool
- operator== \201const time_zone&, const time_zone&\202;
-
- bool)WR(
- operator!= \201const time_zone&, const time_zone&\202;
-})RP(
-
- )0 P(The )SM(zone_present\201\202)ES( acces)HY(sor)YH( func)HY(tion)YH( returns )SM(true)ES(
- if the time zone is spec)HY(i)HY(fied)YH(. The )SM(zone_reset\201\202)ES( modi)HY(fier)YH(
- func)HY(tion)YH( resets the time zone object to the )EM(not spec)HY(i)HY(fied)YH()ES(
- state. If the time zone offset is nega)HY(tive)YH( then both hours and
- minutes compo)HY(nents)YH( are repre)HY(sented)YH( as nega)HY(tive)YH( inte)HY(gers)YH(.)EP(
-
-
- )0 2 31 H(6.5)WB 81 Sn()WB 35 Sn( )SM(date)ES( Parser)EA()EH(
-
- )0 P(The return type of the )SM(date_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
- is )SM(xml_schema::date)ES( which repre)HY(sents)YH( a year, a day, and a month
- with an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 34 1 A(Section 6.4, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")34 0 TN TL()Ec /AF f D(.)EP(
-
- ) 34 62 PR(namespace xml_schema
-{
- class date
- {
- public:
- date \201int year, unsigned short month, unsigned short day\202;
- date \201int year, unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes\202;
-
- int
- year \201\202 const;
-
- void
- year \201int\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-
- unsigned short
- day \201\202 const;
-
- void
- day \201unsigned short\202;
- };
-
- bool
- operator== \201const date&, const date&\202;
-)WR(
- bool
- operator!= \201const date&, const date&\202;
-})RP(
-
- )0 2 32 H(6.6)WB 82 Sn()WB 36 Sn( )SM(date)HY(Time)YH()ES( Parser)EA()EH(
-
- )0 P(The return type of the )SM(date_time_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
- is )SM(xml_schema::date_time)ES( which repre)HY(sents)YH( a year, a month, a day,
- hours, minutes, and seconds with an optional time zone. Its inter)HY(face)YH(
- is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 34 1 A(Section 6.4, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")34 0 TN TL()Ec /AF f D(.)EP(
-
- ) 56 69 PR(namespace xml_schema
-{
- class date_time
- {
- public:
- date_time \201int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds\202;
-
- date_time \201int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds, short zone_hours, short zone_minutes\202;
-
- int
- year \201\202 const;
-
- void
- year \201int\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-
- unsigned short
- day \201\202 const;
-
- void
- day \201unsigned short\202;
-)WR(
- unsigned short
- hours \201\202 const;
-
- void
- hours \201unsigned short\202;
-
- unsigned short
- minutes \201\202 const;
-
- void
- minutes \201unsigned short\202;
-
- double
- seconds \201\202 const;
-
- void
- seconds \201double\202;
- };
-
- bool
- operator== \201const date_time&, const date_time&\202;
-
- bool
- operator!= \201const date_time&, const date_time&\202;
-})RP(
-
- )0 2 33 H(6.7)WB 83 Sn()WB 37 Sn( )SM(dura)HY(tion)YH()ES( Parser)EA()EH(
-
- )0 P(The return type of the )SM(dura)HY(tion)YH(_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
- is )SM(xml_schema::dura)HY(tion)YH()ES( which repre)HY(sents)YH( a poten)HY(tially)YH(
- nega)HY(tive)YH( dura)HY(tion)YH( in the form of years, months, days, hours, minutes,
- and seconds. Its inter)HY(face)YH( is presented below.)EP(
-
- ) 58 73 PR(namespace xml_schema
-{
- class duration
- {
- public:
- duration \201bool negative,
- unsigned int years, unsigned int months, unsigned int days,
- unsigned int hours, unsigned int minutes, double seconds\202;
-
- bool
- negative \201\202 const;
-
- void
- negative \201bool\202;
-
- unsigned int
- years \201\202 const;
-
- void
- years \201unsigned int\202;
-
- unsigned int
- months \201\202 const;
-
- void
- months \201unsigned int\202;
-
- unsigned int
- days \201\202 const;
-
- void)WR(
- days \201unsigned int\202;
-
- unsigned int
- hours \201\202 const;
-
- void
- hours \201unsigned int\202;
-
- unsigned int
- minutes \201\202 const;
-
- void
- minutes \201unsigned int\202;
-
- double
- seconds \201\202 const;
-
- void
- seconds \201double\202;
- };
-
- bool
- operator== \201const duration&, const duration&\202;
-
- bool
- operator!= \201const duration&, const duration&\202;
-})RP(
-
-
- )0 2 34 H(6.8)WB 84 Sn()WB 38 Sn( )SM(gDay)ES( Parser)EA()EH(
-
- )0 P(The return type of the )SM(gday_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
- is )SM(xml_schema::gday)ES( which repre)HY(sents)YH( a day of the month with
- an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 34 1 A(Section 6.4, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")34 0 TN TL()Ec /AF f D(.)EP(
-
- ) 22 68 PR(namespace xml_schema
-{
- class gday
- {
- public:
- explicit
- gday \201unsigned short day\202;
- gday \201unsigned short day, short zone_hours, short zone_minutes\202;
-
- unsigned short
- day \201\202 const;
-
- void
- day \201unsigned short\202;
- };
-
- bool
- operator== \201const gday&, const gday&\202;
-
- bool
- operator!= \201const gday&, const gday&\202;
-})RP(
-
- )0 2 35 H(6.9)WB 85 Sn()WB 39 Sn( )SM(gMonth)ES( Parser)EA()EH(
-
- )0 P(The return type of the )SM(gmonth_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
- is )SM(xml_schema::gmonth)ES( which repre)HY(sents)YH( a month of the year
- with an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 34 1 A(Section 6.4, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")34 0 TN TL()Ec /AF f D(.)EP(
-
- ) 22 72 PR(namespace xml_schema
-{
- class gmonth
- {
- public:
- explicit
- gmonth \201unsigned short month\202;
- gmonth \201unsigned short month, short zone_hours, short zone_minutes\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
- };
-
- bool
- operator== \201const gmonth&, const gmonth&\202;
-
- bool
- operator!= \201const gmonth&, const gmonth&\202;
-})RP(
-
- )0 2 36 H(6.10)WB 86 Sn()WB 40 Sn( )SM(gMon)HY(th)HY(Day)YH()ES( Parser)EA()EH(
-
- )0 P(The return type of the )SM(gmonth_day_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
- is )SM(xml_schema::gmonth_day)ES( which repre)HY(sents)YH( a day and a month
- of the year with an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 34 1 A(Section 6.4, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")34 0 TN TL()Ec /AF f D(.)EP(
-
- ) 28 58 PR(namespace xml_schema
-{
- class gmonth_day
- {
- public:
- gmonth_day \201unsigned short month, unsigned short day\202;
- gmonth_day \201unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-
- unsigned short
- day \201\202 const;
-
- void
- day \201unsigned short\202;
- };
-
- bool
- operator== \201const gmonth_day&, const gmonth_day&\202;
-
- bool
- operator!= \201const gmonth_day&, const gmonth_day&\202;
-})RP(
-
- )0 2 37 H(6.11)WB 87 Sn()WB 41 Sn( )SM(gYear)ES( Parser)EA()EH(
-
- )0 P(The return type of the )SM(gyear_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
- is )SM(xml_schema::gyear)ES( which repre)HY(sents)YH( a year with
- an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 34 1 A(Section 6.4, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")34 0 TN TL()Ec /AF f D(.)EP(
-
- ) 22 59 PR(namespace xml_schema
-{
- class gyear
- {
- public:
- explicit
- gyear \201int year\202;
- gyear \201int year, short zone_hours, short zone_minutes\202;
-
- int
- year \201\202 const;
-
- void
- year \201int\202;
- };
-
- bool
- operator== \201const gyear&, const gyear&\202;
-
- bool
- operator!= \201const gyear&, const gyear&\202;
-})RP(
-
- )0 2 38 H(6.12)WB 88 Sn()WB 42 Sn( )SM(gYear)HY(Month)YH()ES( Parser)EA()EH(
-
- )0 P(The return type of the )SM(gyear_month_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
- is )SM(xml_schema::gyear_month)ES( which repre)HY(sents)YH( a year and a month
- with an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 34 1 A(Section 6.4, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")34 0 TN TL()Ec /AF f D(.)EP(
-
- ) 28 55 PR(namespace xml_schema
-{
- class gyear_month
- {
- public:
- gyear_month \201int year, unsigned short month\202;
- gyear_month \201int year, unsigned short month,
- short zone_hours, short zone_minutes\202;
-
- int
- year \201\202 const;
-
- void
- year \201int\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
- };
-
- bool
- operator== \201const gyear_month&, const gyear_month&\202;
-
- bool
- operator!= \201const gyear_month&, const gyear_month&\202;
-})RP(
-
-
- )0 2 39 H(6.13)WB 89 Sn()WB 43 Sn( )SM(time)ES( Parser)EA()EH(
-
- )0 P(The return type of the )SM(time_pimpl)ES( parser imple)HY(men)HY(ta)HY(tion)YH(
- is )SM(xml_schema::time)ES( which repre)HY(sents)YH( hours, minutes,
- and seconds with an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 34 1 A(Section 6.4, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")34 0 TN TL()Ec /AF f D(.)EP(
-
- ) 34 72 PR(namespace xml_schema
-{
- class time
- {
- public:
- time \201unsigned short hours, unsigned short minutes, double seconds\202;
- time \201unsigned short hours, unsigned short minutes, double seconds,
- short zone_hours, short zone_minutes\202;
-
- unsigned short
- hours \201\202 const;
-
- void
- hours \201unsigned short\202;
-
- unsigned short
- minutes \201\202 const;
-
- void
- minutes \201unsigned short\202;
-
- double
- seconds \201\202 const;
-
- void
- seconds \201double\202;
- };
-
- bool
- operator== \201const time&, const time&\202;
-)WR(
- bool
- operator!= \201const time&, const time&\202;
-})RP(
-
-
-
-
-
- )0 1 40 H(7)WB 90 Sn()WB 44 Sn( Docu)HY(ment)YH( Parser and Error Handling)EA()EH(
-
- )0 P(In this chapter we will discuss the )SM(xml_schema::docu)HY(ment)YH()ES(
- type as well as the error handling mech)HY(a)HY(nisms)YH( provided by the mapping
- in more detail. As mentioned in )0 18 1 A(Section 3.4,
- "Connect)HY(ing)YH( the Parsers Together")18 0 TN TL()Ec /AF f D(, the inter)HY(face)YH( of
- )SM(xml_schema::docu)HY(ment)YH()ES( depends on the under)HY(ly)HY(ing)YH( XML
- parser selected \201)0 26 1 A(Section 5.3, "Under)HY(ly)HY(ing)YH( XML
- Parser")26 0 TN TL()Ec /AF f D(\202. The follow)HY(ing)YH( sections describe the
- )SM(docu)HY(ment)YH()ES( type inter)HY(face)YH( for Xerces-C++ and
- Expat as under)HY(ly)HY(ing)YH( parsers.)EP(
-
- )0 2 41 H(7.1)WB 91 Sn()WB 45 Sn( Xerces-C++ Docu)HY(ment)YH( Parser)EA()EH(
-
- )0 P(When Xerces-C++ is used as the under)HY(ly)HY(ing)YH( XML parser, the
- )SM(docu)HY(ment)YH()ES( type has the follow)HY(ing)YH( inter)HY(face)YH(. Note that
- if the char)HY(ac)HY(ter)YH( type is )SM(wchar_t)ES(, then the string type
- in the inter)HY(face)YH( becomes )SM(std::wstring)ES(
- \201see )0 25 1 A(Section 5.2, "Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH(")25 0 TN TL()Ec /AF f D(\202.)EP(
-
- ) 248 72 PR(namespace xml_schema
-{
- class parser_base;
- class error_handler;
-
- class flags
- {
- public:
- // Do not validate XML documents with the Xerces-C++ validator.
- //
- static const unsigned long dont_validate;
-
- // Do not initialize the Xerces-C++ runtime.
- //
- static const unsigned long dont_initialize;
-
- // Disable handling of subsequent imports for the same namespace
- // in Xerces-C++ 3.1.0 and later.
- //
- static const unsigned long no_multiple_imports;
- };
-
- class properties
- {
- public:
- // Add a location for a schema with a target namespace.
- //
- void
- schema_location \201const std::string& namespace_,
- const std::string& location\202;
-)WR(
- // Add a location for a schema without a target namespace.
- //
- void
- no_namespace_schema_location \201const std::string& location\202;
- };
-
- class document
- {
- public:
- document \201parser_base& root,
- const std::string& root_element_name,
- bool polymorphic = false\202;
-
- document \201parser_base& root,
- const std::string& root_element_namespace,
- const std::string& root_element_name,
- bool polymorphic = false\202;
-
- public:
- // Parse URI or a local file.
- //
- void
- parse \201const std::string& uri,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse URI or a local file with a user-provided error_handler
- // object.
- //
- void)WR(
- parse \201const std::string& uri,
- error_handler&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse URI or a local file with a user-provided ErrorHandler
- // object. Note that you must initialize the Xerces-C++ runtime
- // before calling this function.
- //
- void
- parse \201const std::string& uri,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse URI or a local file using a user-provided SAX2XMLReader
- // object. Note that you must initialize the Xerces-C++ runtime
- // before calling this function.
- //
- void
- parse \201const std::string& uri,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- public:
- // Parse std::istream.
- //
- void
- parse \201std::istream&,)WR(
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse std::istream with a user-provided error_handler object.
- //
- void
- parse \201std::istream&,
- error_handler&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse std::istream with a user-provided ErrorHandler object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse \201std::istream&,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse std::istream using a user-provided SAX2XMLReader object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse \201std::istream&,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties& = properties \201\202\202;)WR(
-
- public:
- // Parse std::istream with a system id.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse std::istream with a system id and a user-provided
- // error_handler object.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,
- error_handler&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse std::istream with a system id and a user-provided
- // ErrorHandler object. Note that you must initialize the
- // Xerces-C++ runtime before calling this function.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties& = properties \201\202\202;)WR(
-
- // Parse std::istream with a system id using a user-provided
- // SAX2XMLReader object. Note that you must initialize the
- // Xerces-C++ runtime before calling this function.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- public:
- // Parse std::istream with system and public ids.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,
- const std::string& public_id,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse std::istream with system and public ids and a user-provided
- // error_handler object.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,
- const std::string& public_id,
- error_handler&,)WR(
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse std::istream with system and public ids and a user-provided
- // ErrorHandler object. Note that you must initialize the Xerces-C++
- // runtime before calling this function.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,
- const std::string& public_id,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse std::istream with system and public ids using a user-
- // provided SAX2XMLReader object. Note that you must initialize
- // the Xerces-C++ runtime before calling this function.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,
- const std::string& public_id,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- public:
- // Parse InputSource. Note that you must initialize the Xerces-C++
- // runtime before calling this function.)WR(
- //
- void
- parse \201const xercesc::InputSource&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse InputSource with a user-provided error_handler object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse \201const xercesc::InputSource&,
- error_handler&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse InputSource with a user-provided ErrorHandler object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse \201const xercesc::InputSource&,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties& = properties \201\202\202;
-
- // Parse InputSource using a user-provided SAX2XMLReader object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //)WR(
- void
- parse \201const xercesc::InputSource&,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties& = properties \201\202\202;
- };
-})RP(
-
- )0 P(The )SM(docu)HY(ment)YH()ES( class is a root parser for
- the vocab)HY(u)HY(lary)YH(. The first argu)HY(ment)YH( to its construc)HY(tors)YH( is the
- parser for the type of the root element. The )SM(parser_base)ES(
- class is the base type for all parser skele)HY(tons)YH(. The second and
- third argu)HY(ments)YH( to the )SM(docu)HY(ment)YH()ES('s construc)HY(tors)YH( are
- the root element's name and names)HY(pace)YH(. The last argu)HY(ment)YH(,
- )SM(poly)HY(mor)HY(phic)YH()ES(, spec)HY(i)HY(fies)YH( whether the XML docu)HY(ments)YH(
- being parsed use poly)HY(mor)HY(phism)YH(. For more infor)HY(ma)HY(tion)YH( on support
- for XML Schema poly)HY(mor)HY(phism)YH( in the C++/Parser mapping refer
- to )0 28 1 A(Section 5.5, "Support for Poly)HY(mor)HY(phism)YH(")28 0 TN TL()Ec /AF f D(.)EP(
-
- )0 P(The rest of the )SM(docu)HY(ment)YH()ES( inter)HY(face)YH( consists of over)HY(loaded)YH(
- )SM(parse\201\202)ES( func)HY(tions)YH(. The last two argu)HY(ments)YH( in each of these
- func)HY(tions)YH( are )SM(flags)ES( and )SM(prop)HY(er)HY(ties)YH()ES(. The
- )SM(flags)ES( argu)HY(ment)YH( allows you to modify the default behav)HY(ior)YH(
- of the parsing func)HY(tions)YH(. The )SM(prop)HY(er)HY(ties)YH()ES( argu)HY(ment)YH( allows
- you to over)HY(ride)YH( the schema loca)HY(tion)YH( attributes spec)HY(i)HY(fied)YH( in XML
- docu)HY(ments)YH(. Note that the schema loca)HY(tion)YH( paths are rela)HY(tive)YH( to an
- XML docu)HY(ment)YH( unless they are complete URIs. For example if you want
- to use a local schema file then you will need to use a URI in the
- form )SM(file:///abso)HY(lute)YH(/path/to/your/schema)ES(.)EP(
-
- )0 P(A number of over)HY(loaded)YH( )SM(parse\201\202)ES( func)HY(tions)YH( have the
- )SM(system_id)ES( and )SM(public_id)ES( argu)HY(ments)YH(. The
- system id is a )EM(system)ES( iden)HY(ti)HY(fier)YH( of the resources being
- parsed \201for example, URI or a full file path\202. The public id is a
- )EM(public)ES( iden)HY(ti)HY(fier)YH( of the resource \201for example, an
- appli)HY(ca)HY(tion)YH(-specific name or a rela)HY(tive)YH( file path\202. The system id
- is used to resolve rela)HY(tive)YH( paths \201for example, schema paths\202. In
- diag)HY(nos)HY(tics)YH( messages the public id is used if it is avail)HY(able)YH(.
- Other)HY(wise)YH( the system id is used.)EP(
-
- )0 P(The error handling mech)HY(a)HY(nisms)YH( employed by the )SM(docu)HY(ment)YH()ES(
- parser are described in )0 47 1 A(Section 7.3, "Error
- Handling")47 0 TN TL()Ec /AF f D(.)EP(
-
- )0 2 42 H(7.2)WB 92 Sn()WB 46 Sn( Expat Docu)HY(ment)YH( Parser)EA()EH(
-
- )0 P(When Expat is used as the under)HY(ly)HY(ing)YH( XML parser, the
- )SM(docu)HY(ment)YH()ES( type has the follow)HY(ing)YH( inter)HY(face)YH(. Note that
- if the char)HY(ac)HY(ter)YH( type is )SM(wchar_t)ES(, then the string type
- in the inter)HY(face)YH( becomes )SM(std::wstring)ES(
- \201see )0 25 1 A(Section 5.2, "Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH(")25 0 TN TL()Ec /AF f D(\202.)EP(
-
- ) 123 72 PR(namespace xml_schema
-{
- class parser_base;
- class error_handler;
-
- class document
- {
- public:
- document \201parser_base&,
- const std::string& root_element_name,
- bool polymorphic = false\202;
-
- document \201parser_base&,
- const std::string& root_element_namespace,
- const std::string& root_element_name,
- bool polymorphic = false\202;
-
- public:
- // Parse a local file. The file is accessed with std::ifstream
- // in binary mode. The std::ios_base::failure exception is used
- // to report io errors \201badbit and failbit\202.
- void
- parse \201const std::string& file\202;
-
- // Parse a local file with a user-provided error_handler
- // object. The file is accessed with std::ifstream in binary
- // mode. The std::ios_base::failure exception is used to report
- // io errors \201badbit and failbit\202.
- //
- void
- parse \201const std::string& file, error_handler&\202;)WR(
-
- public:
- // Parse std::istream.
- //
- void
- parse \201std::istream&\202;
-
- // Parse std::istream with a user-provided error_handler object.
- //
- void
- parse \201std::istream&, error_handler&\202;
-
- // Parse std::istream with a system id.
- //
- void
- parse \201std::istream&, const std::string& system_id\202;
-
- // Parse std::istream with a system id and a user-provided
- // error_handler object.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,
- error_handler&\202;
-
- // Parse std::istream with system and public ids.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,)WR(
- const std::string& public_id\202;
-
- // Parse std::istream with system and public ids and a user-provided
- // error_handler object.
- //
- void
- parse \201std::istream&,
- const std::string& system_id,
- const std::string& public_id,
- error_handler&\202;
-
- public:
- // Parse a chunk of input. You can call these functions multiple
- // times with the last call having the last argument true.
- //
- void
- parse \201const void* data, std::size_t size, bool last\202;
-
- void
- parse \201const void* data, std::size_t size, bool last,
- error_handler&\202;
-
- void
- parse \201const void* data, std::size_t size, bool last,
- const std::string& system_id\202;
-
- void
- parse \201const void* data, std::size_t size, bool last,
- const std::string& system_id,
- error_handler&\202;)WR(
-
- void
- parse \201const void* data, std::size_t size, bool last,
- const std::string& system_id,
- const std::string& public_id\202;
-
- void
- parse \201const void* data, std::size_t size, bool last,
- const std::string& system_id,
- const std::string& public_id,
- error_handler&\202;
-
- public:
- // Low-level Expat-specific parsing API.
- //
- void
- parse_begin \201XML_Parser\202;
-
- void
- parse_begin \201XML_Parser, const std::string& public_id\202;
-
- void
- parse_begin \201XML_Parser, error_handler&\202;
-
- void
- parse_begin \201XML_Parser,
- const std::string& public_id,
- error_handler&\202;
- void
- parse_end \201\202;)WR(
- };
-})RP(
-
- )0 P(The )SM(docu)HY(ment)YH()ES( class is a root parser for
- the vocab)HY(u)HY(lary)YH(. The first argu)HY(ment)YH( to its construc)HY(tors)YH( is the
- parser for the type of the root element. The )SM(parser_base)ES(
- class is the base type for all parser skele)HY(tons)YH(. The second and
- third argu)HY(ments)YH( to the )SM(docu)HY(ment)YH()ES('s construc)HY(tors)YH( are
- the root element's name and names)HY(pace)YH(. The last argu)HY(ment)YH(,
- )SM(poly)HY(mor)HY(phic)YH()ES(, spec)HY(i)HY(fies)YH( whether the XML docu)HY(ments)YH(
- being parsed use poly)HY(mor)HY(phism)YH(. For more infor)HY(ma)HY(tion)YH( on support
- for XML Schema poly)HY(mor)HY(phism)YH( in the C++/Parser mapping refer
- to )0 28 1 A(Section 5.5, "Support for Poly)HY(mor)HY(phism)YH(")28 0 TN TL()Ec /AF f D(.)EP(
-
- )0 P(A number of over)HY(loaded)YH( )SM(parse\201\202)ES( func)HY(tions)YH( have the
- )SM(system_id)ES( and )SM(public_id)ES( argu)HY(ments)YH(. The
- system id is a )EM(system)ES( iden)HY(ti)HY(fier)YH( of the resources being
- parsed \201for example, URI or a full file path\202. The public id is a
- )EM(public)ES( iden)HY(ti)HY(fier)YH( of the resource \201for example, an
- appli)HY(ca)HY(tion)YH(-specific name or a rela)HY(tive)YH( file path\202. The system id
- is used to resolve rela)HY(tive)YH( paths. In diag)HY(nos)HY(tics)YH( messages the
- public id is used if it is avail)HY(able)YH(. Other)HY(wise)YH( the system id
- is used.)EP(
-
- )0 P(The )SM(parse_begin\201\202)ES( and )SM(parse_end\201\202)ES( func)HY(tions)YH(
- present a low-level, Expat-specific parsing API for maximum control.
- A typical use-case would look like this \201pseudo-code\202:)EP(
-
- ) 20 55 PR(xxx_pimpl root_p;
-document doc_p \201root_p, "root"\202;
-
-root_p.pre \201\202;
-doc_p.parse_begin \201xml_parser, "file.xml"\202;
-
-while \201more_data_to_parse\202
-{
- // Call XML_Parse or XML_ParseBuffer.
-
- if \201status == XML_STATUS_ERROR\202
- break;
-}
-
-// Call parse_end even in case of an error to translate
-// XML and Schema errors to exceptions or error_handler
-// calls.
-//
-doc.parse_end \201\202;
-result_type result \201root_p.post_xxx \201\202\202;)RP(
-
- )0 P(Note that if your vocab)HY(u)HY(lary)YH( uses XML names)HY(paces)YH(, the
- )SM(XML_Parser)HY(Cre)HY(at)HY(eNS)YH(\201\202)ES( func)HY(tions)YH( should be used to create
- the XML parser. Space \201)SM(XML_Char \201' '\202)ES(\202 should be used
- as a sepa)HY(ra)HY(tor)YH( \201the second argu)HY(ment)YH( to )SM(XML_Parser)HY(Cre)HY(at)HY(eNS)YH(\201\202)ES(\202.
- )EP(
-
- )0 P(The error handling mech)HY(a)HY(nisms)YH( employed by the )SM(docu)HY(ment)YH()ES(
- parser are described in )0 47 1 A(Section 7.3, "Error
- Handling")47 0 TN TL()Ec /AF f D(.)EP(
-
-
- )0 2 43 H(7.3)WB 93 Sn()WB 47 Sn( Error Handling)EA()EH(
-
- )0 P(There are three cate)HY(gories)YH( of errors that can result from running
- a parser on an XML docu)HY(ment)YH(: System, XML, and Appli)HY(ca)HY(tion)YH(.
- The System cate)HY(gory)YH( contains memory allo)HY(ca)HY(tion)YH( and file/stream
- oper)HY(a)HY(tion)YH( errors. The XML cate)HY(gory)YH( covers XML parsing and
- well-formed)HY(ness)YH( check)HY(ing)YH( as well as XML Schema vali)HY(da)HY(tion)YH( errors.
- Finally, the Appli)HY(ca)HY(tion)YH( cate)HY(gory)YH( is for appli)HY(ca)HY(tion)YH( logic errors
- that you may want to prop)HY(a)HY(gate)YH( from parser imple)HY(men)HY(ta)HY(tions)YH( to the
- caller of the parser.
- )EP(
-
- )0 P(The System errors are mapped to the stan)HY(dard)YH( excep)HY(tions)YH(. The
- out of memory condi)HY(tion)YH( is indi)HY(cated)YH( by throw)HY(ing)YH( an instance
- of )SM(std::bad_alloc)ES(. The stream oper)HY(a)HY(tion)YH( errors
- are reported either by throw)HY(ing)YH( an instance of
- )SM(std::ios_base::failure)ES( if excep)HY(tions)YH( are enabled
- or by setting the stream state.)EP(
-
- )0 P(Note that if you are parsing )SM(std::istream)ES( on
- which excep)HY(tions)YH( are not enabled, then you will need to
- check the stream state before calling the )SM(post\201\202)ES(
- call)HY(back)YH(, as shown in the follow)HY(ing)YH( example:)EP(
-
- ) 24 50 PR(int
-main \201int argc, char* argv[]\202
-{
- ...
-
- std::ifstream ifs \201argv[1]\202;
-
- if \201ifs.fail \201\202\202
- {
- cerr << argv[1] << ": unable to open" << endl;
- return 1;
- }
-
- root_p.pre \201\202;
- doc_p.parse \201ifs\202;
-
- if \201ifs.fail \201\202\202
- {
- cerr << argv[1] << ": io failure" << endl;
- return 1;
- }
-
- result_type result \201root_p.post_xxx \201\202\202;
-})RP(
-
- )0 P(The above example can be rewrit)HY(ten)YH( to use excep)HY(tions)YH(
- as shown below:)EP(
-
- ) 21 68 PR(int
-main \201int argc, char* argv[]\202
-{
- try
- {
- ...
-
- std::ifstream ifs;
- ifs.exceptions \201std::ifstream::badbit | std::ifstream::failbit\202;
- ifs.open \201argv[1]\202;
-
- root_p.pre \201\202;
- doc_p.parse \201ifs\202;
- result_type result \201root_p.post_xxx \201\202\202;
- }
- catch \201const std::ifstream::failure&\202
- {
- cerr << argv[1] << ": unable to open or io failure" << endl;
- return 1;
- }
-})RP(
-
-
- )0 P(For report)HY(ing)YH( appli)HY(ca)HY(tion)YH( errors from parsing call)HY(backs)YH(, you
- can throw any excep)HY(tions)YH( of your choice. They are prop)HY(a)HY(gated)YH( to
- the caller of the parser without any alter)HY(ations)YH(.)EP(
-
- )0 P(The XML errors can be reported either by throw)HY(ing)YH( the
- )SM(xml_schema::parsing)ES( excep)HY(tion)YH( or by a call)HY(back)YH(
- to the )SM(xml_schema::error_handler)ES( object \201and
- )SM(xercesc::ErrorHan)HY(dler)YH()ES( object in case of Xerces-C++\202.)EP(
-
- )0 P(The )SM(xml_schema::parsing)ES( excep)HY(tion)YH( contains
- a list of warn)HY(ings)YH( and errors that were accu)HY(mu)HY(lated)YH( during
- parsing. Note that this excep)HY(tion)YH( is thrown only if there
- was an error. This makes it impos)HY(si)HY(ble)YH( to obtain warn)HY(ings)YH(
- from an other)HY(wise)YH( success)HY(ful)YH( parsing using this mech)HY(a)HY(nism)YH(.
- The follow)HY(ing)YH( listing shows the defi)HY(ni)HY(tion)YH( of
- )SM(xml_schema::parsing)ES( excep)HY(tion)YH(. Note that if the
- char)HY(ac)HY(ter)YH( type is )SM(wchar_t)ES(, then the string type
- and output stream type in the defi)HY(ni)HY(tion)YH( become
- )SM(std::wstring)ES( and )SM(std::wostream)ES(,
- respec)HY(tively)YH( \201see )0 25 1 A(Section 5.2, "Char)HY(ac)HY(ter)YH( Type
- and Encod)HY(ing)YH(")25 0 TN TL()Ec /AF f D(\202.)EP(
-
- ) 82 51 PR(namespace xml_schema
-{
- class exception: public std::exception
- {
- protected:
- virtual void
- print \201std::ostream&\202 const = 0;
- };
-
- inline std::ostream&
- operator<< \201std::ostream& os, const exception& e\202
- {
- e.print \201os\202;
- return os;
- }
-
-
- class severity
- {
- public:
- enum value
- {
- warning,
- error
- };
- };
-
-
- class error
- {
- public:)WR(
- error \201xml_schema::severity,
- const std::string& id,
- unsigned long line,
- unsigned long column,
- const std::string& message\202;
-
- xml_schema::severity
- severity \201\202 const;
-
- const std::string&
- id \201\202 const;
-
- unsigned long
- line \201\202 const;
-
- unsigned long
- column \201\202 const;
-
- const std::string&
- message \201\202 const;
- };
-
- std::ostream&
- operator<< \201std::ostream&, const error&\202;
-
-
- class diagnostics: public std::vector<error>
- {
- };
-)WR(
- std::ostream&
- operator<< \201std::ostream&, const diagnostics&\202;
-
-
- class parsing: public exception
- {
- public:
- parsing \201\202;
- parsing \201const xml_schema::diagnostics&\202;
-
- const xml_schema::diagnostics&
- diagnostics \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-
- protected:
- virtual void
- print \201std::ostream&\202 const;
- };
-})RP(
-
- )0 P(The follow)HY(ing)YH( example shows how we can catch and print this
- excep)HY(tion)YH(. The code will print diag)HY(nos)HY(tics)YH( messages one per line
- in case of an error.)EP(
-
- ) 13 38 PR(int
-main \201int argc, char* argv[]\202
-{
- try
- {
- // Parse.
- }
- catch \201const xml_schema::parsing& e\202
- {
- cerr << e << endl;
- return 1;
- }
-})RP(
-
- )0 P(With the )SM(error_handler)ES( approach the diag)HY(nos)HY(tics)YH(
- messages are deliv)HY(ered)YH( as parsing progresses. The follow)HY(ing)YH(
- listing presents the defi)HY(ni)HY(tion)YH( of the )SM(error_handler)ES(
- inter)HY(face)YH(. Note that if the char)HY(ac)HY(ter)YH( type is )SM(wchar_t)ES(,
- then the string type in the inter)HY(face)YH( becomes )SM(std::wstring)ES(
- \201see )0 25 1 A(Section 5.2, "Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH(")25 0 TN TL()Ec /AF f D(\202.)EP(
-
- ) 24 44 PR(namespace xml_schema
-{
- class error_handler
- {
- public:
- class severity
- {
- public:
- enum value
- {
- warning,
- error,
- fatal
- };
- };
-
- virtual bool
- handle \201const std::string& id,
- unsigned long line,
- unsigned long column,
- severity,
- const std::string& message\202 = 0;
- };
-})RP(
-
- )0 P(The return value of the )SM(handle\201\202)ES( func)HY(tion)YH( indi)HY(cates)YH( whether
- parsing should continue if possi)HY(ble)YH(. The error with the fatal sever)HY(ity)YH(
- level termi)HY(nates)YH( the parsing process regard)HY(less)YH( of the returned value.
- At the end of the parsing process with an error that was reported via
- the )SM(error_handler)ES( object, an empty
- )SM(xml_schema::parsing)ES( excep)HY(tion)YH( is thrown to indi)HY(cate)YH(
- the failure to the caller. You can alter this behav)HY(ior)YH( by throw)HY(ing)YH(
- your own excep)HY(tion)YH( from the )SM(handle\201\202)ES( func)HY(tion)YH(.)EP(
-
-
-
-
-
- )0 1 44 H(Appendix)WB 94 Sn()WB 48 Sn( A \236 Supported XML Schema Constructs)EA()EH(
-
- )0 P(The C++/Parser mapping supports vali)HY(da)HY(tion)YH( of the follow)HY(ing)YH( W3C XML
- Schema constructs in the gener)HY(ated)YH( code.)EP(
-
-
- )1 PT(
-
-
- )BR(
-)BR(
-
-)WB NL
-/TE t D NP /OU t D TU PM 1 eq and{/Pn () D showpage}if end restore
diff --git a/xsd/doc/cxx/parser/guide/guide.html2ps b/xsd/doc/cxx/parser/guide/guide.html2ps
deleted file mode 100644
index c2f6314..0000000
--- a/xsd/doc/cxx/parser/guide/guide.html2ps
+++ /dev/null
@@ -1,65 +0,0 @@
-@html2ps {
- option {
- toc: hb;
- colour: 1;
- hyphenate: 1;
- titlepage: 1;
- }
-
- datefmt: "%B %Y";
-
- titlepage {
- content: "
-<div align=center>
- <h1><big>C++/Parser Mapping</big></h1>
- <h1><big>Getting Started Guide</big></h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
-</div>
- <p>Copyright &copy; 2005-2014 CODE SYNTHESIS TOOLS CC</p>
-
- <p>Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- <a href='http://www.codesynthesis.com/licenses/fdl-1.2.txt'>GNU Free
- Documentation License, version 1.2</a>; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- </p>
-
- <p>This document is available in the following formats:
- <a href='http://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/index.xhtml'>XHTML</a>,
- <a href='http://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.pdf'>PDF</a>, and
- <a href='http://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.ps'>PostScript</a>.</p>";
- }
-
- toc {
- indent: 2em;
- }
-
- header {
- odd-right: $H;
- even-left: $H;
- }
-
- footer {
- odd-left: $D;
- odd-center: $T;
- odd-right: $N;
-
- even-left: $N;
- even-center: $T;
- even-right: $D;
- }
-}
-
-body {
- font-size: 12pt;
- text-align: justify;
-}
-
-pre {
- font-size: 10pt;
-}
diff --git a/xsd/doc/cxx/parser/guide/index.xhtml b/xsd/doc/cxx/parser/guide/index.xhtml
deleted file mode 100644
index 1eef533..0000000
--- a/xsd/doc/cxx/parser/guide/index.xhtml
+++ /dev/null
@@ -1,4158 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
-
-<head>
- <title>C++/Parser Mapping Getting Started Guide</title>
-
- <meta name="copyright" content="&copy; 2005-2014 Code Synthesis Tools CC"/>
- <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,parser,validation"/>
- <meta name="description" content="C++/Parser Mapping Getting Started Guide"/>
-
- <link rel="stylesheet" type="text/css" href="../../../default.css" />
-
-<style type="text/css">
- pre {
- padding : 0 0 0 0em;
- margin : 0em 0em 0em 0;
-
- font-size : 102%
- }
-
- body {
- min-width: 48em;
- }
-
- h1 {
- font-weight: bold;
- font-size: 200%;
- line-height: 1.2em;
- }
-
- h2 {
- font-weight : bold;
- font-size : 150%;
-
- padding-top : 0.8em;
- }
-
- h3 {
- font-size : 140%;
- padding-top : 0.8em;
- }
-
- /* Adjust indentation for three levels. */
- #container {
- max-width: 48em;
- }
-
- #content {
- padding: 0 0.1em 0 4em;
- /*background-color: red;*/
- }
-
- #content h1 {
- margin-left: -2.06em;
- }
-
- #content h2 {
- margin-left: -1.33em;
- }
-
- /* Title page */
-
- #titlepage {
- padding: 2em 0 1em 0;
- border-bottom: 1px solid black;
- }
-
- #titlepage .title {
- font-weight: bold;
- font-size: 200%;
- text-align: center;
- }
-
- #titlepage #first-title {
- padding: 1em 0 0.4em 0;
- }
-
- #titlepage #second-title {
- padding: 0.4em 0 2em 0;
- }
-
- /* Lists */
- ul.list li {
- padding-top : 0.3em;
- padding-bottom : 0.3em;
- }
-
- ol.steps {
- padding-left : 1.8em;
- }
-
- ol.steps li {
- padding-top : 0.3em;
- padding-bottom : 0.3em;
- }
-
-
- div.img {
- text-align: center;
- padding: 2em 0 2em 0;
- }
-
- /* */
- dl dt {
- padding : 0.8em 0 0 0;
- }
-
- /* Built-in table */
- #builtin {
- margin: 2em 0 2em 0;
-
- border-collapse : collapse;
- border : 1px solid;
- border-color : #000000;
-
- font-size : 11px;
- line-height : 14px;
- }
-
- #builtin th, #builtin td {
- border: 1px solid;
- padding : 0.9em 0.9em 0.7em 0.9em;
- }
-
- #builtin th {
- background : #cde8f6;
- }
-
- #builtin td {
- text-align: left;
- }
-
- /* XML Schema features table. */
- #features {
- margin: 2em 0 2em 0;
-
- border-collapse : collapse;
- border : 1px solid;
- border-color : #000000;
-
- font-size : 11px;
- line-height : 14px;
- }
-
- #features th, #features td {
- border: 1px solid;
- padding : 0.6em 0.6em 0.6em 0.6em;
- }
-
- #features th {
- background : #cde8f6;
- }
-
- #features td {
- text-align: left;
- }
-
-
- /* TOC */
- table.toc {
- border-style : none;
- border-collapse : separate;
- border-spacing : 0;
-
- margin : 0.2em 0 0.2em 0;
- padding : 0 0 0 0;
- }
-
- table.toc tr {
- padding : 0 0 0 0;
- margin : 0 0 0 0;
- }
-
- table.toc * td, table.toc * th {
- border-style : none;
- margin : 0 0 0 0;
- vertical-align : top;
- }
-
- table.toc * th {
- font-weight : normal;
- padding : 0em 0.1em 0em 0;
- text-align : left;
- white-space : nowrap;
- }
-
- table.toc * table.toc th {
- padding-left : 1em;
- }
-
- table.toc * td {
- padding : 0em 0 0em 0.7em;
- text-align : left;
- }
-</style>
-
-
-</head>
-
-<body>
-<div id="container">
- <div id="content">
-
- <div class="noprint">
-
- <div id="titlepage">
- <div class="title" id="first-title">C++/Parser Mapping</div>
- <div class="title" id="second-title">Getting Started Guide</div>
-
- <p>Copyright &copy; 2005-2014 CODE SYNTHESIS TOOLS CC</p>
-
- <p>Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- <a href="http://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
- Documentation License, version 1.2</a>; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- </p>
-
- <p>This document is available in the following formats:
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/index.xhtml">XHTML</a>,
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.pdf">PDF</a>, and
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/parser/guide/cxx-parser-guide.ps">PostScript</a>.</p>
-
- </div>
-
- <h1>Table of Contents</h1>
-
- <table class="toc">
- <tr>
- <th></th><td><a href="#0">Preface</a>
- <table class="toc">
- <tr><th></th><td><a href="#0.1">About This Document</a></td></tr>
- <tr><th></th><td><a href="#0.2">More Information</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>1</th><td><a href="#1">Introduction</a>
- <table class="toc">
- <tr><th>1.1</th><td><a href="#1.1">Mapping Overview</a></td></tr>
- <tr><th>1.2</th><td><a href="#1.2">Benefits</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>2</th><td><a href="#2">Hello World Example</a>
- <table class="toc">
- <tr><th>2.1</th><td><a href="#2.1">Writing XML Document and Schema</a></td></tr>
- <tr><th>2.2</th><td><a href="#2.2">Translating Schema to C++</a></td></tr>
- <tr><th>2.3</th><td><a href="#2.3">Implementing Application Logic</a></td></tr>
- <tr><th>2.4</th><td><a href="#2.4">Compiling and Running</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>3</th><td><a href="#3">Parser Skeletons</a>
- <table class="toc">
- <tr><th>3.1</th><td><a href="#3.1">Implementing the Gender Parser</a></td></tr>
- <tr><th>3.2</th><td><a href="#3.2">Implementing the Person Parser</a></td></tr>
- <tr><th>3.3</th><td><a href="#3.3">Implementing the People Parser</a></td></tr>
- <tr><th>3.4</th><td><a href="#3.4">Connecting the Parsers Together</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>4</th><td><a href="#4">Type Maps</a>
- <table class="toc">
- <tr><th>4.1</th><td><a href="#4.1">Object Model</a></td></tr>
- <tr><th>4.2</th><td><a href="#4.2">Type Map File Format</a></td></tr>
- <tr><th>4.3</th><td><a href="#4.3">Parser Implementations</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>5</th><td><a href="#5">Mapping Configuration</a>
- <table class="toc">
- <tr><th>5.1</th><td><a href="#5.1">C++ Standard</a></td></tr>
- <tr><th>5.2</th><td><a href="#5.2">Character Type and Encoding</a></td></tr>
- <tr><th>5.3</th><td><a href="#5.3">Underlying XML Parser</a></td></tr>
- <tr><th>5.4</th><td><a href="#5.4">XML Schema Validation</a></td></tr>
- <tr><th>5.5</th><td><a href="#5.5">Support for Polymorphism</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>6</th><td><a href="#6">Built-In XML Schema Type Parsers</a>
- <table class="toc">
- <tr><th>6.1</th><td><a href="#6.1"><code>QName</code> Parser</a></td></tr>
- <tr><th>6.2</th><td><a href="#6.2"><code>NMTOKENS</code> and <code>IDREFS</code> Parsers</a></td></tr>
- <tr><th>6.3</th><td><a href="#6.3"><code>base64Binary</code> and <code>hexBinary</code> Parsers</a></td></tr>
- <tr><th>6.4</th><td><a href="#6.4">Time Zone Representation</a></td></tr>
- <tr><th>6.5</th><td><a href="#6.5"><code>date</code> Parser</a></td></tr>
- <tr><th>6.6</th><td><a href="#6.6"><code>dateTime</code> Parser</a></td></tr>
- <tr><th>6.7</th><td><a href="#6.7"><code>duration</code> Parser</a></td></tr>
- <tr><th>6.8</th><td><a href="#6.8"><code>gDay</code> Parser</a></td></tr>
- <tr><th>6.9</th><td><a href="#6.9"><code>gMonth</code> Parser</a></td></tr>
- <tr><th>6.10</th><td><a href="#6.10"><code>gMonthDay</code> Parser</a></td></tr>
- <tr><th>6.11</th><td><a href="#6.11"><code>gYear</code> Parser</a></td></tr>
- <tr><th>6.12</th><td><a href="#6.12"><code>gYearMonth</code> Parser</a></td></tr>
- <tr><th>6.13</th><td><a href="#6.13"><code>time</code> Parser</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>7</th><td><a href="#7">Document Parser and Error Handling</a>
- <table class="toc">
- <tr><th>7.1</th><td><a href="#7.1">Xerces-C++ Document Parser</a></td></tr>
- <tr><th>7.2</th><td><a href="#7.2">Expat Document Parser</a></td></tr>
- <tr><th>7.3</th><td><a href="#7.3">Error Handling</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th></th><td><a href="#A">Appendix A &mdash; Supported XML Schema Constructs</a></td>
- </tr>
-
- </table>
- </div>
-
- <h1><a name="0">Preface</a></h1>
-
- <h2><a name="0.1">About This Document</a></h2>
-
- <p>The goal of this document is to provide you with an understanding of
- the C++/Parser programming model and allow you to efficiently evaluate
- XSD against your project's technical requirements. As such, this
- document is intended for C++ developers and software architects
- who are looking for an XML processing solution. Prior experience
- with XML and C++ is required to understand this document. Basic
- understanding of XML Schema is advantageous but not expected
- or required.
- </p>
-
-
- <h2><a name="0.2">More Information</a></h2>
-
- <p>Beyond this guide, you may also find the following sources of
- information useful:</p>
-
- <ul class="list">
- <li><a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a></li>
-
- <li>The <code>examples/cxx/parser/</code> directory in the XSD
- distribution contains a collection of examples and a README
- file with an overview of each example.</li>
-
- <li>The <code>README</code> file in the XSD distribution explains
- how to compile the examples on various platforms.</li>
-
- <li>The <a href="http://www.codesynthesis.com/mailman/listinfo/xsd-users">xsd-users</a>
- mailing list is the place to ask technical questions about XSD and the C++/Parser mapping.
- Furthermore, the <a href="http://www.codesynthesis.com/pipermail/xsd-users/">archives</a>
- may already have answers to some of your questions.</li>
-
- </ul>
-
- <!-- Introduction -->
-
- <h1><a name="1">1 Introduction</a></h1>
-
- <p>Welcome to CodeSynthesis XSD and the C++/Parser mapping. XSD is a
- cross-platform W3C XML Schema to C++ data binding compiler. C++/Parser
- is a W3C XML Schema to C++ mapping that represents an XML vocabulary
- as a set of parser skeletons which you can implement to perform XML
- processing as required by your application logic.
- </p>
-
- <h2><a name="1.1">1.1 Mapping Overview</a></h2>
-
- <p>The C++/Parser mapping provides event-driven, stream-oriented
- XML parsing, XML Schema validation, and C++ data binding. It was
- specifically designed and optimized for high performance and
- small footprint. Based on the static analysis of the schemas, XSD
- generates compact, highly-optimized hierarchical state machines
- that combine data extraction, validation, and even dispatching
- in a single step. As a result, the generated code is typically
- 2-10 times faster than general-purpose validating XML parsers
- while maintaining the lowest static and dynamic memory footprints.
- </p>
-
- <p>To speed up application development, the C++/Parser mapping
- can be instructed to generate sample parser implementations
- and a test driver which can then be filled with the application
- logic code. The mapping also provides a wide range of
- mechanisms for controlling and customizing the generated code.</p>
-
- <p>The next chapter shows how to create a simple application that uses
- the C++/Parser mapping to parse, validate, and extract data from a
- simple XML document. The following chapters show how to
- use the C++/Parser mapping in more detail.</p>
-
- <h2><a name="1.2">1.2 Benefits</a></h2>
-
- <p>Traditional XML access APIs such as Document Object Model (DOM)
- or Simple API for XML (SAX) have a number of drawbacks that
- make them less suitable for creating robust and maintainable
- XML processing applications. These drawbacks include:
- </p>
-
- <ul class="list">
- <li>Generic representation of XML in terms of elements, attributes,
- and text forces an application developer to write a substantial
- amount of bridging code that identifies and transforms pieces
- of information encoded in XML to a representation more suitable
- for consumption by the application logic.</li>
-
- <li>String-based flow control defers error detection to runtime.
- It also reduces code readability and maintainability.</li>
-
- <li>Lack of type safety because the data is represented
- as text.</li>
-
- <li>Resulting applications are hard to debug, change, and
- maintain.</li>
- </ul>
-
- <p>In contrast, statically-typed, vocabulary-specific parser
- skeletons produced by the C++/Parser mapping allow you to
- operate in your domain terms instead of the generic elements,
- attributes, and text. Static typing helps catch errors at
- compile-time rather than at run-time. Automatic code generation
- frees you for more interesting tasks (such as doing something
- useful with the information stored in the XML documents) and
- minimizes the effort needed to adapt your applications to
- changes in the document structure. To summarize, the C++/Parser
- mapping has the following key advantages over generic XML
- access APIs:</p>
-
- <ul class="list">
- <li><b>Ease of use.</b> The generated code hides all the complexity
- associated with recreating the document structure, maintaining the
- dispatch state, and converting the data from the text representation
- to data types suitable for manipulation by the application logic.
- Parser skeletons also provide a convenient mechanism for building
- custom in-memory representations.</li>
-
- <li><b>Natural representation.</b> The generated parser skeletons
- implement parser callbacks as virtual functions with names
- corresponding to elements and attributes in XML. As a result,
- you process the XML data using your domain vocabulary instead
- of generic elements, attributes, and text.
- </li>
-
- <li><b>Concise code.</b> With a separate parser skeleton for each
- XML Schema type, the application implementation is
- simpler and thus easier to read and understand.</li>
-
- <li><b>Safety.</b> The XML data is delivered to parser callbacks as
- statically typed objects. The parser callbacks themselves are virtual
- functions. This helps catch programming errors at compile-time
- rather than at runtime.</li>
-
- <li><b>Maintainability.</b> Automatic code generation minimizes the
- effort needed to adapt the application to changes in the
- document structure. With static typing, the C++ compiler
- can pin-point the places in the application code that need to be
- changed.</li>
-
- <li><b>Efficiency.</b> The generated parser skeletons combine
- data extraction, validation, and even dispatching in a single
- step. This makes them much more efficient than traditional
- architectures with separate stages for validation and data
- extraction/dispatch.</li>
- </ul>
-
- <!-- Hello World Parser -->
-
-
- <h1><a name="2">2 Hello World Example</a></h1>
-
- <p>In this chapter we will examine how to parse a very simple XML
- document using the XSD-generated C++/Parser skeletons.
- The code presented in this chapter is based on the <code>hello</code>
- example which can be found in the <code>examples/cxx/parser/</code>
- directory of the XSD distribution.</p>
-
- <h2><a name="2.1">2.1 Writing XML Document and Schema</a></h2>
-
- <p>First, we need to get an idea about the structure
- of the XML documents we are going to process. Our
- <code>hello.xml</code>, for example, could look like this:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;hello>
-
- &lt;greeting>Hello&lt;/greeting>
-
- &lt;name>sun&lt;/name>
- &lt;name>moon&lt;/name>
- &lt;name>world&lt;/name>
-
-&lt;/hello>
- </pre>
-
- <p>Then we can write a description of the above XML in the
- XML Schema language and save it into <code>hello.xsd</code>:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- &lt;xs:complexType name="hello">
- &lt;xs:sequence>
- &lt;xs:element name="greeting" type="xs:string"/>
- &lt;xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
- &lt;/xs:sequence>
- &lt;/xs:complexType>
-
- &lt;xs:element name="hello" type="hello"/>
-
-&lt;/xs:schema>
- </pre>
-
- <p>Even if you are not familiar with XML Schema, it
- should be easy to connect declarations in <code>hello.xsd</code>
- to elements in <code>hello.xml</code>. The <code>hello</code> type
- is defined as a sequence of the nested <code>greeting</code> and
- <code>name</code> elements. Note that the term sequence in XML
- Schema means that elements should appear in a particular order
- as opposed to appearing multiple times. The <code>name</code>
- element has its <code>maxOccurs</code> property set to
- <code>unbounded</code> which means it can appear multiple times
- in an XML document. Finally, the globally-defined <code>hello</code>
- element prescribes the root element for our vocabulary. For an
- easily-approachable introduction to XML Schema refer to
- <a href="http://www.w3.org/TR/xmlschema-0/">XML Schema Part 0:
- Primer</a>.</p>
-
- <p>The above schema is a specification of our XML vocabulary; it tells
- everybody what valid documents of our XML-based language should look
- like. The next step is to compile this schema to generate
- the object model and parsing functions.</p>
-
- <h2><a name="2.2">2.2 Translating Schema to C++</a></h2>
-
- <p>Now we are ready to translate our <code>hello.xsd</code> to C++ parser
- skeletons. To do this we invoke the XSD compiler from a terminal
- (UNIX) or a command prompt (Windows):
- </p>
-
- <pre class="terminal">
-$ xsd cxx-parser --xml-parser expat hello.xsd
- </pre>
-
- <p>The <code>--xml-parser</code> option indicates that we want to
- use Expat as the underlying XML parser (see <a href="#5.3">Section
- 5.3, "Underlying XML Parser"</a>). The XSD compiler produces two
- C++ files: <code>hello-pskel.hxx</code> and <code>hello-pskel.cxx</code>.
- The following code fragment is taken from <code>hello-pskel.hxx</code>;
- it should give you an idea about what gets generated:
- </p>
-
- <pre class="c++">
-class hello_pskel
-{
-public:
- // Parser callbacks. Override them in your implementation.
- //
- virtual void
- pre ();
-
- virtual void
- greeting (const std::string&amp;);
-
- virtual void
- name (const std::string&amp;);
-
- virtual void
- post_hello ();
-
- // Parser construction API.
- //
- void
- greeting_parser (xml_schema::string_pskel&amp;);
-
- void
- name_parser (xml_schema::string_pskel&amp;);
-
- void
- parsers (xml_schema::string_pskel&amp; /* greeting */,
- xml_schema::string_pskel&amp; /* name */);
-
-private:
- ...
-};
- </pre>
-
- <p>The first four member functions shown above are called parser
- callbacks. You would normally override them in your implementation
- of the parser to do something useful. Let's go through all of
- them one by one.</p>
-
- <p>The <code>pre()</code> function is an initialization callback. It is
- called when a new element of type <code>hello</code> is about
- to be parsed. You would normally use this function to allocate a new
- instance of the resulting type or clear accumulators that are used
- to gather information during parsing. The default implementation
- of this function does nothing.</p>
-
- <p>The <code>post_hello()</code> function is a finalization callback. Its
- name is constructed by adding the parser skeleton name to the
- <code>post_</code> prefix. The finalization callback is called when
- parsing of the element is complete and the result, if any, should
- be returned. Note that in our case the return type of
- <code>post_hello()</code> is <code>void</code> which means there
- is nothing to return. More on parser return types later.
- </p>
-
- <p>You may be wondering why the finalization callback is called
- <code>post_hello()</code> instead of <code>post()</code> just
- like <code>pre()</code>. The reason for this is that
- finalization callbacks can have different return types and
- result in function signature clashes across inheritance
- hierarchies. To prevent this the signatures of finalization
- callbacks are made unique by adding the type name to their names.</p>
-
- <p>The <code>greeting()</code> and <code>name()</code> functions are
- called when the <code>greeting</code> and <code>name</code> elements
- have been parsed, respectively. Their arguments are of type
- <code>std::string</code> and contain the data extracted from XML.</p>
-
- <p>The last three functions are for connecting parsers to each other.
- For example, there is a predefined parser for built-in XML Schema type
- <code>string</code> in the XSD runtime. We will be using
- it to parse the contents of <code>greeting</code> and
- <code>name</code> elements, as shown in the next section.</p>
-
- <h2><a name="2.3">2.3 Implementing Application Logic</a></h2>
-
- <p>At this point we have all the parts we need to do something useful
- with the information stored in our XML document. The first step is
- to implement the parser:
- </p>
-
- <pre class="c++">
-#include &lt;iostream>
-#include "hello-pskel.hxx"
-
-class hello_pimpl: public hello_pskel
-{
-public:
- virtual void
- greeting (const std::string&amp; g)
- {
- greeting_ = g;
- }
-
- virtual void
- name (const std::string&amp; n)
- {
- std::cout &lt;&lt; greeting_ &lt;&lt; ", " &lt;&lt; n &lt;&lt; "!" &lt;&lt; std::endl;
- }
-
-private:
- std::string greeting_;
-};
- </pre>
-
- <p>We left both <code>pre()</code> and <code>post_hello()</code> with the
- default implementations; we don't have anything to initialize or
- return. The rest is pretty straightforward: we store the greeting
- in a member variable and later, when parsing names, use it to
- say hello.</p>
-
- <p>An observant reader my ask what happens if the <code>name</code>
- element comes before <code>greeting</code>? Don't we need to
- make sure <code>greeting_</code> was initialized and report
- an error otherwise? The answer is no, we don't have to do
- any of this. The <code>hello_pskel</code> parser skeleton
- performs validation of XML according to the schema from which
- it was generated. As a result, it will check the order
- of the <code>greeting</code> and <code>name</code> elements
- and report an error if it is violated.</p>
-
- <p>Now it is time to put this parser implementation to work:</p>
-
- <pre class="c++">
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- try
- {
- // Construct the parser.
- //
- xml_schema::string_pimpl string_p;
- hello_pimpl hello_p;
-
- hello_p.greeting_parser (string_p);
- hello_p.name_parser (string_p);
-
- // Parse the XML instance.
- //
- xml_schema::document doc_p (hello_p, "hello");
-
- hello_p.pre ();
- doc_p.parse (argv[1]);
- hello_p.post_hello ();
- }
- catch (const xml_schema::exception&amp; e)
- {
- cerr &lt;&lt; e &lt;&lt; endl;
- return 1;
- }
-}
- </pre>
-
- <p>The first part of this code snippet instantiates individual parsers
- and assembles them into a complete vocabulary parser.
- <code>xml_schema::string_pimpl</code> is an implementation of a parser
- for built-in XML Schema type <code>string</code>. It is provided by
- the XSD runtime along with parsers for other built-in types (for
- more information on the built-in parsers see <a href="#6">Chapter 6,
- "Built-In XML Schema Type Parsers"</a>). We use <code>string_pimpl</code>
- to parse the <code>greeting</code> and <code>name</code> elements as
- indicated by the calls to <code>greeting_parser()</code> and
- <code>name_parser()</code>.
- </p>
-
- <p>Then we instantiate a document parser (<code>doc_p</code>). The
- first argument to its constructor is the parser for
- the root element (<code>hello_p</code> in our case). The
- second argument is the root element name.
- </p>
-
- <p>The final piece is the calls to <code>pre()</code>, <code>parse()</code>,
- and <code>post_hello()</code>. The call to <code>parse()</code>
- perform the actual XML parsing while the calls to <code>pre()</code> and
- <code>post_hello()</code> make sure that the parser for the root
- element can perform proper initialization and cleanup.</p>
-
- <p>While our parser implementation and test driver are pretty small and
- easy to write by hand, for bigger XML vocabularies it can be a
- substantial effort. To help with this task XSD can automatically
- generate sample parser implementations and a test driver from your
- schemas. You can request the generation of a sample implementation with
- empty function bodies by specifying the <code>--generate-noop-impl</code>
- option. Or you can generate a sample implementation that prints the
- data store in XML by using the <code>--generate-print-impl</code>
- option. To request the generation of a test driver you can use the
- <code>--generate-test-driver</code> option. For more information
- on these options refer to the
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a>. The <code>'generated'</code> example
- in the XSD distribution shows the sample implementation generation
- feature in action.</p>
-
-
- <h2><a name="2.4">2.4 Compiling and Running</a></h2>
-
- <p>After saving all the parts from the previous section in
- <code>driver.cxx</code>, we are ready to compile our first
- application and run it on the test XML document. On a UNIX
- system this can be done with the following commands:
- </p>
-
- <pre class="terminal">
-$ c++ -I.../libxsd -c driver.cxx hello-pskel.cxx
-$ c++ -o driver driver.o hello-pskel.o -lexpat
-$ ./driver hello.xml
-Hello, sun!
-Hello, moon!
-Hello, world!
- </pre>
-
- <p>Here <code>.../libxsd</code> represents the path to the
- <code>libxsd</code> directory in the XSD distribution.
- We can also test the error handling. To test XML well-formedness
- checking, we can try to parse <code>hello-pskel.hxx</code>:</p>
-
- <pre class="terminal">
-$ ./driver hello-pskel.hxx
-hello-pskel.hxx:1:0: not well-formed (invalid token)
- </pre>
-
- <p>We can also try to parse a valid XML but not from our
- vocabulary, for example <code>hello.xsd</code>:</p>
-
- <pre class="terminal">
-$ ./driver hello.xsd
-hello.xsd:2:0: expected element 'hello' instead of
-'http://www.w3.org/2001/XMLSchema#schema'
- </pre>
-
-
- <!-- Chapater 3 -->
-
-
- <h1><a name="3">3 Parser Skeletons</a></h1>
-
- <p>As we have seen in the previous chapter, the XSD compiler generates
- a parser skeleton class for each type defined in XML Schema. In
- this chapter we will take a closer look at different functions
- that comprise a parser skeleton as well as the way to connect
- our implementations of these parser skeletons to create a complete
- parser.</p>
-
- <p>In this and subsequent chapters we will use the following schema
- that describes a collection of person records. We save it in
- <code>people.xsd</code>:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- &lt;xs:simpleType name="gender">
- &lt;xs:restriction base="xs:string">
- &lt;xs:enumeration value="male"/>
- &lt;xs:enumeration value="female"/>
- &lt;/xs:restriction>
- &lt;/xs:simpleType>
-
- &lt;xs:complexType name="person">
- &lt;xs:sequence>
- &lt;xs:element name="first-name" type="xs:string"/>
- &lt;xs:element name="last-name" type="xs:string"/>
- &lt;xs:element name="gender" type="gender"/>
- &lt;xs:element name="age" type="xs:short"/>
- &lt;/xs:sequence>
- &lt;/xs:complexType>
-
- &lt;xs:complexType name="people">
- &lt;xs:sequence>
- &lt;xs:element name="person" type="person" maxOccurs="unbounded"/>
- &lt;/xs:sequence>
- &lt;/xs:complexType>
-
- &lt;xs:element name="people" type="people"/>
-
-&lt;/xs:schema>
- </pre>
-
- <p>A sample XML instance to go along with this schema is saved
- in <code>people.xml</code>:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;people>
- &lt;person>
- &lt;first-name>John&lt;/first-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>male&lt;/gender>
- &lt;age>32&lt;/age>
- &lt;/person>
- &lt;person>
- &lt;first-name>Jane&lt;/first-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>female&lt;/gender>
- &lt;age>28&lt;/age>
- &lt;/person>
-&lt;/people>
- </pre>
-
- <p>Compiling <code>people.xsd</code> with the XSD compiler results
- in three parser skeletons being generated: <code>gender_pskel</code>,
- <code>person_pskel</code>, and <code>people_pskel</code>. We are going
- to examine and implement each of them in the subsequent sections.</p>
-
- <h2><a name="3.1">3.1 Implementing the Gender Parser</a></h2>
-
- <p>The generated <code>gender_pskel</code> parser skeleton looks like
- this:</p>
-
- <pre class="c++">
-class gender_pskel: public virtual xml_schema::string_pskel
-{
-public:
- // Parser callbacks. Override them in your implementation.
- //
- virtual void
- pre ();
-
- virtual void
- post_gender ();
-};
- </pre>
-
- <p>Notice that <code>gender_pskel</code> inherits from
- <code>xml_schema::string_skel</code> which is a parser skeleton
- for built-in XML Schema type <code>string</code> and is
- predefined in the XSD runtime library. This is an example
- of the general rule that parser skeletons follow: if a type
- in XML Schema inherits from another then there will be an
- equivalent inheritance between the corresponding parser
- skeleton classes.</p>
-
- <p>The <code>pre()</code> and <code>post_gender()</code> callbacks
- should look familiar from the previous chapter. Let's now
- implement the parser. Our implementation will simply print
- the gender to <code>cout</code>:</p>
-
-
- <pre class="c++">
-class gender_pimpl: public gender_pskel,
- public xml_schema::string_pimpl
-{
-public:
- virtual void
- post_gender ()
- {
- std::string s = post_string ();
- cout &lt;&lt; "gender: " &lt;&lt; s &lt;&lt; endl;
- }
-};
- </pre>
-
- <p>While the code is quite short, there is a lot going on. First,
- notice that we are inheriting from <code>gender_pskel</code> <em>and</em>
- from <code>xml_schema::string_pimpl</code>. We've encountered
- <code>xml_schema::string_pimpl</code> already; it is an
- implementation of the <code>xml_schema::string_pskel</code> parser
- skeleton for built-in XML Schema type <code>string</code>.</p>
-
- <p>This is another common theme in the C++/Parser programming model:
- reusing implementations of the base parsers in the derived ones with
- the C++ mixin idiom. In our case, <code>string_pimpl</code> will
- do all the dirty work of extracting the data and we can just get
- it at the end with the call to <code>post_string()</code>.</p>
-
- <p>In case you are curious, here is what
- <code>xml_schema::string_pskel</code> and
- <code>xml_schema::string_pimpl</code> look like:</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class string_pskel: public simple_content
- {
- public:
- virtual std::string
- post_string () = 0;
- };
-
- class string_pimpl: public virtual string_pskel
- {
- public:
- virtual void
- _pre ();
-
- virtual void
- _characters (const xml_schema::ro_string&amp;);
-
- virtual std::string
- post_string ();
-
- protected:
- std::string str_;
- };
-}
- </pre>
-
- <p>There are three new pieces in this code that we haven't seen yet.
- They are the <code>simple_content</code> class as well as
- the <code>_pre()</code> and <code>_characters()</code> functions.
- The <code>simple_content</code> class is defined in the XSD
- runtime and is a base class for all parser skeletons that conform
- to the simple content model in XML Schema. Types with the
- simple content model cannot have nested elements&mdash;only text
- and attributes. There is also the <code>complex_content</code>
- class which corresponds to the complex content mode (types with
- nested elements, for example, <code>person</code> from
- <code>people.xsd</code>).</p>
-
- <p>The <code>_pre()</code> function is a parser callback. Remember we
- talked about the <code>pre()</code> and <code>post_*()</code> callbacks
- in the previous chapter? There are actually two more callbacks
- with similar roles: <code>_pre()</code> and <code>_post ()</code>.
- As a result, each parser skeleton has four special callbacks:</p>
-
- <pre class="c++">
- virtual void
- pre ();
-
- virtual void
- _pre ();
-
- virtual void
- _post ();
-
- virtual void
- post_name ();
- </pre>
-
- <p><code>pre()</code> and <code>_pre()</code> are initialization
- callbacks. They get called in that order before a new instance of the type
- is about to be parsed. The difference between <code>pre()</code> and
- <code>_pre()</code> is conventional: <code>pre()</code> can
- be completely overridden by a derived parser. The derived
- parser can also override <code>_pre()</code> but has to always call
- the original version. This allows you to partition initialization
- into customizable and required parts.</p>
-
- <p>Similarly, <code>_post()</code> and <code>post_name()</code> are
- finalization callbacks with exactly the same semantics:
- <code>post_name()</code> can be completely overridden by the derived
- parser while the original <code>_post()</code> should always be called.
- </p>
-
- <p>The final bit we need to discuss in this section is the
- <code>_characters()</code> function. As you might have guessed, it
- is also a callback. A low-level one that delivers raw character content
- for the type being parsed. You will seldom need to use this callback
- directly. Using implementations for the built-in parsers provided by
- the XSD runtime is usually a simpler and more convenient
- alternative.</p>
-
- <p>At this point you might be wondering why some <code>post_*()</code>
- callbacks, for example <code>post_string()</code>, return some data
- while others, for example <code>post_gender()</code>, have
- <code>void</code> as a return type. This is a valid concern
- and it will be addressed in the next chapter.</p>
-
- <h2><a name="3.2">3.2 Implementing the Person Parser</a></h2>
-
- <p>The generated <code>person_pskel</code> parser skeleton looks like
- this:</p>
-
- <pre class="c++">
-class person_pskel: public xml_schema::complex_content
-{
-public:
- // Parser callbacks. Override them in your implementation.
- //
- virtual void
- pre ();
-
- virtual void
- first_name (const std::string&amp;);
-
- virtual void
- last_name (const std::string&amp;);
-
- virtual void
- gender ();
-
- virtual void
- age (short);
-
- virtual void
- post_person ();
-
- // Parser construction API.
- //
- void
- first_name_parser (xml_schema::string_pskel&amp;);
-
- void
- last_name_parser (xml_schema::string_pskel&amp;);
-
- void
- gender_parser (gender_pskel&amp;);
-
- void
- age_parser (xml_schema::short_pskel&amp;);
-
- void
- parsers (xml_schema::string_pskel&amp; /* first-name */,
- xml_schema::string_pskel&amp; /* last-name */,
- gender_pskel&amp; /* gender */,
- xml_schema::short_pskel&amp; /* age */);
-};
- </pre>
-
-
- <p>As you can see, we have a parser callback for each of the nested
- elements found in the <code>person</code> XML Schema type.
- The implementation of this parser is straightforward:</p>
-
- <pre class="c++">
-class person_pimpl: public person_pskel
-{
-public:
- virtual void
- first_name (const std::string&amp; n)
- {
- cout &lt;&lt; "first: " &lt;&lt; f &lt;&lt; endl;
- }
-
- virtual void
- last_name (const std::string&amp; l)
- {
- cout &lt;&lt; "last: " &lt;&lt; l &lt;&lt; endl;
- }
-
- virtual void
- age (short a)
- {
- cout &lt;&lt; "age: " &lt;&lt; a &lt;&lt; endl;
- }
-};
- </pre>
-
- <p>Notice that we didn't override the <code>gender()</code> callback
- because all the printing is done by <code>gender_pimpl</code>.</p>
-
-
- <h2><a name="3.3">3.3 Implementing the People Parser</a></h2>
-
- <p>The generated <code>people_pskel</code> parser skeleton looks like
- this:</p>
-
- <pre class="c++">
-class people_pskel: public xml_schema::complex_content
-{
-public:
- // Parser callbacks. Override them in your implementation.
- //
- virtual void
- pre ();
-
- virtual void
- person ();
-
- virtual void
- post_people ();
-
- // Parser construction API.
- //
- void
- person_parser (person_pskel&amp;);
-
- void
- parsers (person_pskel&amp; /* person */);
-};
- </pre>
-
- <p>The <code>person()</code> callback will be called after parsing each
- <code>person</code> element. While <code>person_pimpl</code> does
- all the printing, one useful thing we can do in this callback is to
- print an extra newline after each person record so that our
- output is more readable:</p>
-
- <pre class="c++">
-class people_pimpl: public people_pskel
-{
-public:
- virtual void
- person ()
- {
- cout &lt;&lt; endl;
- }
-};
- </pre>
-
- <p>Now it is time to put everything together.</p>
-
-
- <h2><a name="3.4">3.4 Connecting the Parsers Together</a></h2>
-
- <p>At this point we have all the individual parsers implemented
- and can proceed to assemble them into a complete parser
- for our XML vocabulary. The first step is to instantiate
- all the individual parsers that we will need:</p>
-
- <pre class="c++">
-xml_schema::short_pimpl short_p;
-xml_schema::string_pimpl string_p;
-
-gender_pimpl gender_p;
-person_pimpl person_p;
-people_pimpl people_p;
- </pre>
-
- <p>Notice that our schema uses two built-in XML Schema types:
- <code>string</code> for the <code>first-name</code> and
- <code>last-name</code> elements as well as <code>short</code>
- for <code>age</code>. We will use predefined parsers that
- come with the XSD runtime to handle these types. The next
- step is to connect all the individual parsers. We do this
- with the help of functions defined in the parser
- skeletons and marked with the "Parser Construction API"
- comment. One way to do it is to connect each individual
- parser by calling the <code>*_parser()</code> functions:</p>
-
- <pre class="c++">
-person_p.first_name_parser (string_p);
-person_p.last_name_parser (string_p);
-person_p.gender_parser (gender_p);
-person_p.age_parser (short_p);
-
-people_p.person_parser (person_p);
- </pre>
-
- <p>You might be wondering what happens if you do not provide
- a parser by not calling one of the <code>*_parser()</code> functions.
- In that case the corresponding XML content will be skipped,
- including validation. This is an efficient way to ignore parts
- of the document that you are not interested in.</p>
-
-
- <p>An alternative, shorter, way to connect the parsers is by using
- the <code>parsers()</code> functions which connects all the parsers
- for a given type at once:</p>
-
- <pre class="c++">
-person_p.parsers (string_p, string_p, gender_p, short_p);
-people_p.parsers (person_p);
- </pre>
-
- <p>The following figure illustrates the resulting connections. Notice
- the correspondence between return types of the <code>post_*()</code>
- functions and argument types of element callbacks that are connected
- by the arrows.</p>
-
- <!-- align=center is needed for html2ps -->
- <div class="img" align="center"><img src="figure-1.png"/></div>
-
- <p>The last step is the construction of the document parser and
- invocation of the complete parser on our sample XML instance:</p>
-
- <pre class="c++">
-xml_schema::document doc_p (people_p, "people");
-
-people_p.pre ();
-doc_p.parse ("people.xml");
-people_p.post_people ();
- </pre>
-
- <p>Let's consider <code>xml_schema::document</code> in
- more detail. While the exact definition of this class
- varies depending on the underlying parser selected,
- here is the common part:</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class document
- {
- public:
- document (xml_schema::parser_base&amp;,
- const std::string&amp; root_element_name,
- bool polymorphic = false);
-
- document (xml_schema::parser_base&amp;,
- const std::string&amp; root_element_namespace,
- const std::string&amp; root_element_name,
- bool polymorphic = false);
-
- void
- parse (const std::string&amp; file);
-
- void
- parse (std::istream&amp;);
-
- ...
-
- };
-}
- </pre>
-
- <p><code>xml_schema::document</code> is a root parser for
- the vocabulary. The first argument to its constructors is the
- parser for the type of the root element (<code>people_impl</code>
- in our case). Because a type parser is only concerned with
- the element's content and not with the element's name, we need
- to specify the root element's name somewhere. That's
- what is passed as the second and third arguments to the
- <code>document</code>'s constructors.</p>
-
- <p>There are also two overloaded <code>parse()</code> functions
- defined in the <code>document</code> class (there are actually
- more but the others are specific to the underlying XML parser).
- The first version parses a local file identified by a name. The
- second version reads the data from an input stream. For more
- information on the <code>xml_schema::document</code> class
- refer to <a href="#7">Chapter 7, "Document Parser and Error
- Handling"</a>.</p>
-
- <p>Let's now consider a step-by-step list of actions that happen
- as we parse through <code>people.xml</code>. The content of
- <code>people.xml</code> is repeated below for convenience.</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;people>
- &lt;person>
- &lt;first-name>John&lt;/first-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>male&lt;/gender>
- &lt;age>32&lt;/age>
- &lt;/person>
- &lt;person>
- &lt;first-name>Jane&lt;/first-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>female&lt;/gender>
- &lt;age>28&lt;/age>
- &lt;/person>
-&lt;/people>
- </pre>
-
-
- <ol class="steps">
- <li><code>people_p.pre()</code> is called from
- <code>main()</code>. We did not provide any implementation
- for this callback so this call is a no-op.</li>
-
- <li><code>doc_p.parse("people.xml")</code> is called from
- <code>main()</code>. The parser opens the file and starts
- parsing its content.</li>
-
- <li>The parser encounters the root element. <code>doc_p</code>
- verifies that the root element is correct and calls
- <code>_pre()</code> on <code>people_p</code> which is also
- a no-op. Parsing is now delegated to <code>people_p</code>.</li>
-
- <li>The parser encounters the <code>person</code> element.
- <code>people_p</code> determines that <code>person_p</code>
- is responsible for parsing this element. <code>pre()</code>
- and <code>_pre()</code> callbacks are called on <code>person_p</code>.
- Parsing is now delegated to <code>person_p</code>.</li>
-
- <li>The parser encounters the <code>first-name</code> element.
- <code>person_p</code> determines that <code>string_p</code>
- is responsible for parsing this element. <code>pre()</code>
- and <code>_pre()</code> callbacks are called on <code>string_p</code>.
- Parsing is now delegated to <code>string_p</code>.</li>
-
- <li>The parser encounters character content consisting of
- <code>"John"</code>. The <code>_characters()</code> callback is
- called on <code>string_p</code>.</li>
-
- <li>The parser encounters the end of <code>first-name</code>
- element. The <code>_post()</code> and <code>post_string()</code>
- callbacks are called on <code>string_p</code>. The
- <code>first_name()</code> callback is called on <code>person_p</code>
- with the return value of <code>post_string()</code>. The
- <code>first_name()</code> implementation prints
- <code>"first: John"</code> to <code>cout</code>.
- Parsing is now returned to <code>person_p</code>.</li>
-
- <li>Steps analogous to 5-7 are performed for the <code>last-name</code>,
- <code>gender</code>, and <code>age</code> elements.</li>
-
- <li>The parser encounters the end of <code>person</code>
- element. The <code>_post()</code> and <code>post_person()</code>
- callbacks are called on <code>person_p</code>. The
- <code>person()</code> callback is called on <code>people_p</code>.
- The <code>person()</code> implementation prints a new line
- to <code>cout</code>. Parsing is now returned to
- <code>people_p</code>.</li>
-
- <li>Steps 4-9 are performed for the second <code>person</code>
- element.</li>
-
- <li>The parser encounters the end of <code>people</code>
- element. The <code>_post()</code> callback is called on
- <code>people_p</code>. The <code>doc_p.parse("people.xml")</code>
- call returns to <code>main()</code>.</li>
-
- <li><code>people_p.post_people()</code> is called from
- <code>main()</code> which is a no-op.</li>
-
- </ol>
-
-
- <!-- Chpater 4 -->
-
-
- <h1><a name="4">4 Type Maps</a></h1>
-
- <p>There are many useful things you can do inside parser callbacks as they
- are right now. There are, however, times when you want to propagate
- some information from one parser to another or to the caller of the
- parser. One common task that would greatly benefit from such a
- possibility is building a tree-like in-memory object model of the
- data stored in XML. During execution, each individual sub-parser
- would create a sub-tree and return it to its <em>parent</em> parser
- which can then incorporate this sub-tree into the whole tree.</p>
-
- <p>In this chapter we will discuss the mechanisms offered by the
- C++/Parser mapping for returning information from individual
- parsers and see how to use them to build an object model
- of our people vocabulary.</p>
-
- <h2><a name="4.1">4.1 Object Model</a></h2>
-
- <p>An object model for our person record example could
- look like this (saved in the <code>people.hxx</code> file):</p>
-
- <pre class="c++">
-#include &lt;string>
-#include &lt;vector>
-
-enum gender
-{
- male,
- female
-};
-
-class person
-{
-public:
- person (const std::string&amp; first,
- const std::string&amp; last,
- ::gender gender,
- short age)
- : first_ (first), last_ (last),
- gender_ (gender), age_ (age)
- {
- }
-
- const std::string&amp;
- first () const
- {
- return first_;
- }
-
- const std::string&amp;
- last () const
- {
- return last_;
- }
-
- ::gender
- gender () const
- {
- return gender_;
- }
-
- short
- age () const
- {
- return age_;
- }
-
-private:
- std::string first_;
- std::string last_;
- ::gender gender_;
- short age_;
-};
-
-typedef std::vector&lt;person> people;
- </pre>
-
- <p>While it is clear which parser is responsible for which part of
- the object model, it is not exactly clear how, for
- example, <code>gender_pimpl</code> will deliver <code>gender</code>
- to <code>person_pimpl</code>. You might have noticed that
- <code>string_pimpl</code> manages to deliver its value to the
- <code>first_name()</code> callback of <code>person_pimpl</code>. Let's
- see how we can utilize the same mechanism to propagate our
- own data.</p>
-
- <p>There is a way to tell the XSD compiler that you want to
- exchange data between parsers. More precisely, for each
- type defined in XML Schema, you can tell the compiler two things.
- First, the return type of the <code>post_*()</code> callback
- in the parser skeleton generated for this type. And, second,
- the argument type for callbacks corresponding to elements and
- attributes of this type. For example, for XML Schema type
- <code>gender</code> we can specify the return type for
- <code>post_gender()</code> in the <code>gender_pskel</code>
- skeleton and the argument type for the <code>gender()</code> callback
- in the <code>person_pskel</code> skeleton. As you might have guessed,
- the generated code will then pass the return value from the
- <code>post_*()</code> callback as an argument to the element or
- attribute callback.</p>
-
- <p>The way to tell the XSD compiler about these XML Schema to
- C++ mappings is with type map files. Here is a simple type
- map for the <code>gender</code> type from the previous paragraph:</p>
-
- <pre class="type-map">
-include "people.hxx";
-gender ::gender ::gender;
- </pre>
-
- <p>The first line indicates that the generated code must include
- <code>people.hxx</code> in order to get the definition for the
- <code>gender</code> type. The second line specifies that both
- argument and return types for the <code>gender</code>
- XML Schema type should be the <code>::gender</code> C++ enum
- (we use fully-qualified C++ names to avoid name clashes).
- The next section will describe the type map format in detail.
- We save this type map in <code>people.map</code> and
- then translate our schemas with the <code>--type-map</code>
- option to let the XSD compiler know about our type map:</p>
-
- <pre class="terminal">
-$ xsd cxx-parser --type-map people.map people.xsd
- </pre>
-
- <p>If we now look at the generated <code>people-pskel.hxx</code>,
- we will see the following changes in the <code>gender_pskel</code> and
- <code>person_pskel</code> skeletons:</p>
-
- <pre class="c++">
-#include "people.hxx"
-
-class gender_pskel: public virtual xml_schema::string_pskel
-{
- virtual ::gender
- post_gender () = 0;
-
- ...
-};
-
-class person_pskel: public xml_schema::complex_content
-{
- virtual void
- gender (::gender);
-
- ...
-};
- </pre>
-
- <p>Notice that <code>#include "people.hxx"</code> was added to
- the generated header file from the type map to provide the
- definition for the <code>gender</code> enum.</p>
-
- <h2><a name="4.2">4.2 Type Map File Format</a></h2>
-
- <p>Type map files are used to define a mapping between XML Schema
- and C++ types. The compiler uses this information
- to determine return types of <code>post_*()</code>
- callbacks in parser skeletons corresponding to XML Schema
- types as well as argument types for callbacks corresponding
- to elements and attributes of these types.</p>
-
- <p>The compiler has a set of predefined mapping rules that map
- the built-in XML Schema types to suitable C++ types (discussed
- below) and all other types to <code>void</code>.
- By providing your own type maps you can override these predefined
- rules. The format of the type map file is presented below:
- </p>
-
- <pre class="type-map">
-namespace &lt;schema-namespace> [&lt;cxx-namespace>]
-{
- (include &lt;file-name>;)*
- ([type] &lt;schema-type> &lt;cxx-ret-type> [&lt;cxx-arg-type>];)*
-}
- </pre>
-
- <p>Both <code><i>&lt;schema-namespace></i></code> and
- <code><i>&lt;schema-type></i></code> are regex patterns while
- <code><i>&lt;cxx-namespace></i></code>,
- <code><i>&lt;cxx-ret-type></i></code>, and
- <code><i>&lt;cxx-arg-type></i></code> are regex pattern
- substitutions. All names can be optionally enclosed in
- <code>" "</code>, for example, to include white-spaces.</p>
-
- <p><code><i>&lt;schema-namespace></i></code> determines XML
- Schema namespace. Optional <code><i>&lt;cxx-namespace></i></code>
- is prefixed to every C++ type name in this namespace declaration.
- <code><i>&lt;cxx-ret-type></i></code> is a C++ type name that is
- used as a return type for the <code>post_*()</code> callback.
- Optional <code><i>&lt;cxx-arg-type></i></code> is an argument
- type for callbacks corresponding to elements and attributes
- of this type. If <code><i>&lt;cxx-arg-type></i></code> is not
- specified, it defaults to <code><i>&lt;cxx-ret-type></i></code>
- if <code><i>&lt;cxx-ret-type></i></code> ends with <code>*</code> or
- <code>&amp;</code> (that is, it is a pointer or a reference) and
- <code>const&nbsp;<i>&lt;cxx-ret-type></i>&amp;</code>
- otherwise.
- <code><i>&lt;file-name></i></code> is a file name either in the
- <code>" "</code> or <code>&lt; ></code> format
- and is added with the <code>#include</code> directive to
- the generated code.</p>
-
- <p>The <code><b>#</b></code> character starts a comment that ends
- with a new line or end of file. To specify a name that contains
- <code><b>#</b></code> enclose it in <code><b>" "</b></code>.
- For example:</p>
-
- <pre>
-namespace http://www.example.com/xmlns/my my
-{
- include "my.hxx";
-
- # Pass apples by value.
- #
- apple apple;
-
- # Pass oranges as pointers.
- #
- orange orange_t*;
-}
- </pre>
-
- <p>In the example above, for the
- <code>http://www.example.com/xmlns/my#orange</code>
- XML Schema type, the <code>my::orange_t*</code> C++ type will
- be used as both return and argument types.</p>
-
- <p>Several namespace declarations can be specified in a single
- file. The namespace declaration can also be completely
- omitted to map types in a schema without a namespace. For
- instance:</p>
-
- <pre class="type-map">
-include "my.hxx";
-apple apple;
-
-namespace http://www.example.com/xmlns/my
-{
- orange "const orange_t*";
-}
- </pre>
-
- <p>The compiler has a number of predefined mapping rules for
- the built-in XML Schema types which can be presented as the
- following map files. The string-based XML Schema types are
- mapped to either <code>std::string</code> or
- <code>std::wstring</code> depending on the character type
- selected (see <a href="#5.2"> Section 5.2, "Character Type and
- Encoding"</a> for more information). The binary XML Schema
- types are mapped to either <code>std::auto_ptr&lt;xml_schema::buffer></code>
- or <code>std::unique_ptr&lt;xml_schema::buffer></code>
- depending on the C++ standard selected (C++98 or C++11,
- respectively; refer to the <code>--std</code> XSD compiler
- command line option for details).</p>
-
- <pre class="type-map">
-namespace http://www.w3.org/2001/XMLSchema
-{
- boolean bool bool;
-
- byte "signed char" "signed char";
- unsignedByte "unsigned char" "unsigned char";
-
- short short short;
- unsignedShort "unsigned short" "unsigned short";
-
- int int int;
- unsignedInt "unsigned int" "unsigned int";
-
- long "long long" "long long";
- unsignedLong "unsigned long long" "unsigned long long";
-
- integer "long long" "long long";
-
- negativeInteger "long long" "long long";
- nonPositiveInteger "long long" "long long";
-
- positiveInteger "unsigned long long" "unsigned long long";
- nonNegativeInteger "unsigned long long" "unsigned long long";
-
- float float float;
- double double double;
- decimal double double;
-
- string std::string;
- normalizedString std::string;
- token std::string;
- Name std::string;
- NMTOKEN std::string;
- NCName std::string;
- ID std::string;
- IDREF std::string;
- language std::string;
- anyURI std::string;
-
- NMTOKENS xml_schema::string_sequence;
- IDREFS xml_schema::string_sequence;
-
- QName xml_schema::qname;
-
- base64Binary std::[auto|unique]_ptr&lt;xml_schema::buffer>
- std::[auto|unique]_ptr&lt;xml_schema::buffer>;
- hexBinary std::[auto|unique]_ptr&lt;xml_schema::buffer>
- std::[auto|unique]_ptr&lt;xml_schema::buffer>;
-
- date xml_schema::date;
- dateTime xml_schema::date_time;
- duration xml_schema::duration;
- gDay xml_schema::gday;
- gMonth xml_schema::gmonth;
- gMonthDay xml_schema::gmonth_day;
- gYear xml_schema::gyear;
- gYearMonth xml_schema::gyear_month;
- time xml_schema::time;
-}
- </pre>
-
- <p>For more information about the mapping of the built-in XML Schema types
- to C++ types refer to <a href="#6">Chapter 6, "Built-In XML Schema Type
- Parsers"</a>. The last predefined rule maps anything that wasn't
- mapped by previous rules to <code>void</code>:</p>
-
- <pre class="type-map">
-namespace .*
-{
- .* void void;
-}
- </pre>
-
-
- <p>When you provide your own type maps with the
- <code>--type-map</code> option, they are evaluated first. This
- allows you to selectively override any of the predefined rules.
- Note also that if you change the mapping
- of a built-in XML Schema type then it becomes your responsibility
- to provide the corresponding parser skeleton and implementation
- in the <code>xml_schema</code> namespace. You can include the
- custom definitions into the generated header file using the
- <code>--hxx-prologue-*</code> options.</p>
-
- <h2><a name="4.3">4.3 Parser Implementations</a></h2>
-
- <p>With the knowledge from the previous section, we can proceed
- with creating a type map that maps types in the <code>people.xsd</code>
- schema to our object model classes in
- <code>people.hxx</code>. In fact, we already have the beginning
- of our type map file in <code>people.map</code>. Let's extend
- it with the rest of the types:</p>
-
- <pre class="type-map">
-include "people.hxx";
-
-gender ::gender ::gender;
-person ::person;
-people ::people;
- </pre>
-
- <p>There are a few things to note about this type map. We did not
- provide the argument types for <code>person</code> and
- <code>people</code> because the default constant reference is
- exactly what we need. We also did not provide any mappings
- for built-in XML Schema types <code>string</code> and
- <code>short</code> because they are handled by the predefined
- rules and we are happy with the result. Note also that
- all C++ types are fully qualified. This is done to avoid
- potential name conflicts in the generated code. Now we can
- recompile our schema and move on to implementing the parsers:</p>
-
- <pre class="terminal">
-$ xsd cxx-parser --xml-parser expat --type-map people.map people.xsd
- </pre>
-
- <p>Here is the implementation of our three parsers in full. One
- way to save typing when implementing your own parsers is
- to open the generated code and copy the signatures of parser
- callbacks into your code. Or you could always auto generate the
- sample implementations and fill them with your code.</p>
-
-
- <pre class="c++">
-#include "people-pskel.hxx"
-
-class gender_pimpl: public gender_pskel,
- public xml_schema::string_pimpl
-{
-public:
- virtual ::gender
- post_gender ()
- {
- return post_string () == "male" ? male : female;
- }
-};
-
-class person_pimpl: public person_pskel
-{
-public:
- virtual void
- first_name (const std::string&amp; f)
- {
- first_ = f;
- }
-
- virtual void
- last_name (const std::string&amp; l)
- {
- last_ = l;
- }
-
- virtual void
- gender (::gender g)
- {
- gender_ = g;
- }
-
- virtual void
- age (short a)
- {
- age_ = a;
- }
-
- virtual ::person
- post_person ()
- {
- return ::person (first_, last_, gender_, age_);
- }
-
-private:
- std::string first_;
- std::string last_;
- ::gender gender_;
- short age_;
-};
-
-class people_pimpl: public people_pskel
-{
-public:
- virtual void
- person (const ::person&amp; p)
- {
- people_.push_back (p);
- }
-
- virtual ::people
- post_people ()
- {
- ::people r;
- r.swap (people_);
- return r;
- }
-
-private:
- ::people people_;
-};
- </pre>
-
- <p>This code fragment should look familiar by now. Just note that
- all the <code>post_*()</code> callbacks now have return types instead
- of <code>void</code>. Here is the implementation of the test
- driver for this example:</p>
-
- <pre class="c++">
-#include &lt;iostream>
-
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- // Construct the parser.
- //
- xml_schema::short_pimpl short_p;
- xml_schema::string_pimpl string_p;
-
- gender_pimpl gender_p;
- person_pimpl person_p;
- people_pimpl people_p;
-
- person_p.parsers (string_p, string_p, gender_p, short_p);
- people_p.parsers (person_p);
-
- // Parse the document to obtain the object model.
- //
- xml_schema::document doc_p (people_p, "people");
-
- people_p.pre ();
- doc_p.parse (argv[1]);
- people ppl = people_p.post_people ();
-
- // Print the object model.
- //
- for (people::iterator i (ppl.begin ()); i != ppl.end (); ++i)
- {
- cout &lt;&lt; "first: " &lt;&lt; i->first () &lt;&lt; endl
- &lt;&lt; "last: " &lt;&lt; i->last () &lt;&lt; endl
- &lt;&lt; "gender: " &lt;&lt; (i->gender () == male ? "male" : "female") &lt;&lt; endl
- &lt;&lt; "age: " &lt;&lt; i->age () &lt;&lt; endl
- &lt;&lt; endl;
- }
-}
- </pre>
-
- <p>The parser creation and assembly part is exactly the same as in
- the previous chapter. The parsing part is a bit different:
- <code>post_people()</code> now has a return value which is the
- complete object model. We store it in the
- <code>ppl</code> variable. The last bit of the code simply iterates
- over the <code>people</code> vector and prints the information
- for each person. We save the last two code fragments to
- <code>driver.cxx</code> and proceed to compile and test
- our new application:</p>
-
-
- <pre class="terminal">
-$ c++ -I.../libxsd -c driver.cxx people-pskel.cxx
-$ c++ -o driver driver.o people-pskel.o -lexpat
-$ ./driver people.xml
-first: John
-last: Doe
-gender: male
-age: 32
-
-first: Jane
-last: Doe
-gender: female
-age: 28
- </pre>
-
-
- <!-- Mapping Configuration -->
-
-
- <h1><a name="5">5 Mapping Configuration</a></h1>
-
- <p>The C++/Parser mapping has a number of configuration parameters that
- determine the overall properties and behavior of the generated code.
- Configuration parameters are specified with the XSD command line
- options and include the C++ standard, the character type that is used
- by the generated code, the underlying XML parser, whether the XML Schema
- validation is performed in the generated code, and support for XML Schema
- polymorphism. This chapter describes these configuration
- parameters in more detail. For more ways to configure the generated
- code refer to the
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a>.
- </p>
-
- <h2><a name="5.1">5.1 C++ Standard</a></h2>
-
- <p>The C++/Parser mapping provides support for ISO/IEC C++ 1998/2003 (C++98)
- and ISO/IEC C++ 2011 (C++11). To select the C++ standard for the
- generated code we use the <code>--std</code> XSD compiler command
- line option. While the majority of the examples in this guide use
- C++98, support for the new functionality and library components
- introduced in C++11 are discussed throughout the document.</p>
-
- <h2><a name="5.2">5.2 Character Type and Encoding</a></h2>
-
- <p>The C++/Parser mapping has built-in support for two character types:
- <code>char</code> and <code>wchar_t</code>. You can select the
- character type with the <code>--char-type</code> command line
- option. The default character type is <code>char</code>. The
- string-based built-in XML Schema types are returned as either
- <code>std::string</code> or <code>std::wstring</code> depending
- on the character type selected.</p>
-
- <p>Another aspect of the mapping that depends on the character type
- is character encoding. For the <code>char</code> character type
- the default encoding is UTF-8. Other supported encodings are
- ISO-8859-1, Xerces-C++ Local Code Page (LPC), as well as
- custom encodings. You can select which encoding should be used
- in the object model with the <code>--char-encoding</code> command
- line option.</p>
-
- <p>For the <code>wchar_t</code> character type the encoding is
- automatically selected between UTF-16 and UTF-32/UCS-4 depending
- on the size of the <code>wchar_t</code> type. On some platforms
- (for example, Windows with Visual C++ and AIX with IBM XL C++)
- <code>wchar_t</code> is 2 bytes long. For these platforms the
- encoding is UTF-16. On other platforms <code>wchar_t</code> is 4 bytes
- long and UTF-32/UCS-4 is used.</p>
-
- <p>Note also that the character encoding that is used in the object model
- is independent of the encodings used in input and output XML. In fact,
- all three (object mode, input XML, and output XML) can have different
- encodings.</p>
-
- <h2><a name="5.3">5.3 Underlying XML Parser</a></h2>
-
- <p>The C++/Parser mapping can be used with either Xerces-C++ or Expat
- as the underlying XML parser. You can select the XML parser with
- the <code>--xml-parser</code> command line option. Valid values
- for this option are <code>xerces</code> and <code>expat</code>.
- The default XML parser is Xerces-C++.</p>
-
- <p>The generated code is identical for both parsers except for the
- <code>xml_schema::document</code> class in which some of the
- <code>parse()</code> functions are parser-specific as described
- in <a href="#7">Chapter 7, "Document Parser and Error Handling"</a>.</p>
-
-
- <h2><a name="5.4">5.4 XML Schema Validation</a></h2>
-
- <p>The C++/Parser mapping provides support for validating a
- commonly-used subset of W3C XML Schema in the generated code.
- For the list of supported XML Schema constructs refer to
- <a href="#A">Appendix A, "Supported XML Schema Constructs"</a>.</p>
-
- <p>By default validation in the generated code is disabled if
- the underlying XML parser is validating (Xerces-C++) and
- enabled otherwise (Expat). See <a href="#5.3">Section 5.3,
- "Underlying XML Parser"</a> for more information about
- the underlying XML parser. You can override the default
- behavior with the <code>--generate-validation</code>
- and <code>--suppress-validation</code> command line options.</p>
-
-
- <h2><a name="5.5">5.5 Support for Polymorphism</a></h2>
-
- <p>By default the XSD compiler generates non-polymorphic code. If your
- vocabulary uses XML Schema polymorphism in the form of <code>xsi:type</code>
- and/or substitution groups, then you will need to compile your schemas
- with the <code>--generate-polymorphic</code> option to produce
- polymorphism-aware code as well as pass <code>true</code> as the last
- argument to the <code>xml_schema::document</code>'s constructors.</p>
-
- <p>When using the polymorphism-aware generated code, you can specify
- several parsers for a single element by passing a parser map
- instead of an individual parser to the parser connection function
- for the element. One of the parsers will then be looked up and used
- depending on the <code>xsi:type</code> attribute value or an element
- name from a substitution group. Consider the following schema as an
- example:</p>
-
- <pre class="xml">
-&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- &lt;xs:complexType name="person">
- &lt;xs:sequence>
- &lt;xs:element name="name" type="xs:string"/>
- &lt;/xs:sequence>
- &lt;/xs:complexType>
-
- &lt;!-- substitution group root -->
- &lt;xs:element name="person" type="person"/>
-
- &lt;xs:complexType name="superman">
- &lt;xs:complexContent>
- &lt;xs:extension base="person">
- &lt;xs:attribute name="can-fly" type="xs:boolean"/>
- &lt;/xs:extension>
- &lt;/xs:complexContent>
- &lt;/xs:complexType>
-
- &lt;xs:element name="superman"
- type="superman"
- substitutionGroup="person"/>
-
- &lt;xs:complexType name="batman">
- &lt;xs:complexContent>
- &lt;xs:extension base="superman">
- &lt;xs:attribute name="wing-span" type="xs:unsignedInt"/>
- &lt;/xs:extension>
- &lt;/xs:complexContent>
- &lt;/xs:complexType>
-
- &lt;xs:element name="batman"
- type="batman"
- substitutionGroup="superman"/>
-
- &lt;xs:complexType name="supermen">
- &lt;xs:sequence>
- &lt;xs:element ref="person" maxOccurs="unbounded"/>
- &lt;/xs:sequence>
- &lt;/xs:complexType>
-
- &lt;xs:element name="supermen" type="supermen"/>
-
-&lt;/xs:schema>
- </pre>
-
- <p>Conforming XML documents can use the <code>superman</code>
- and <code>batman</code> types in place of the <code>person</code>
- type either by specifying the type with the <code>xsi:type</code>
- attributes or by using the elements from the substitution
- group, for instance:</p>
-
-
- <pre class="xml">
-&lt;supermen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
- &lt;person>
- &lt;name>John Doe&lt;/name>
- &lt;/person>
-
- &lt;superman can-fly="false">
- &lt;name>James "007" Bond&lt;/name>
- &lt;/superman>
-
- &lt;superman can-fly="true" wing-span="10" xsi:type="batman">
- &lt;name>Bruce Wayne&lt;/name>
- &lt;/superman>
-
-&lt;/supermen>
- </pre>
-
- <p>To print the data stored in such XML documents we can implement
- the parsers as follows:</p>
-
- <pre class="c++">
-class person_pimpl: public virtual person_pskel
-{
-public:
- virtual void
- pre ()
- {
- cout &lt;&lt; "starting to parse person" &lt;&lt; endl;
- }
-
- virtual void
- name (const std::string&amp; v)
- {
- cout &lt;&lt; "name: " &lt;&lt; v &lt;&lt; endl;
- }
-
- virtual void
- post_person ()
- {
- cout &lt;&lt; "finished parsing person" &lt;&lt; endl;
- }
-};
-
-class superman_pimpl: public virtual superman_pskel,
- public person_pimpl
-{
-public:
- virtual void
- pre ()
- {
- cout &lt;&lt; "starting to parse superman" &lt;&lt; endl;
- }
-
- virtual void
- can_fly (bool v)
- {
- cout &lt;&lt; "can-fly: " &lt;&lt; v &lt;&lt; endl;
- }
-
- virtual void
- post_person ()
- {
- post_superman ();
- }
-
- virtual void
- post_superman ()
- {
- cout &lt;&lt; "finished parsing superman" &lt;&lt; endl
- }
-};
-
-class batman_pimpl: public virtual batman_pskel,
- public superman_pimpl
-{
-public:
- virtual void
- pre ()
- {
- cout &lt;&lt; "starting to parse batman" &lt;&lt; endl;
- }
-
- virtual void
- wing_span (unsigned int v)
- {
- cout &lt;&lt; "wing-span: " &lt;&lt; v &lt;&lt; endl;
- }
-
- virtual void
- post_superman ()
- {
- post_batman ();
- }
-
- virtual void
- post_batman ()
- {
- cout &lt;&lt; "finished parsing batman" &lt;&lt; endl;
- }
-};
- </pre>
-
- <p>Note that because the derived type parsers (<code>superman_pskel</code>
- and <code>batman_pskel</code>) are called via the <code>person_pskel</code>
- interface, we have to override the <code>post_person()</code>
- virtual function in <code>superman_pimpl</code> to call
- <code>post_superman()</code> and the <code>post_superman()</code>
- virtual function in <code>batman_pimpl</code> to call
- <code>post_batman()</code>.</p>
-
- <p>The following code fragment shows how to connect the parsers together.
- Notice that for the <code>person</code> element in the <code>supermen_p</code>
- parser we specify a parser map instead of a specific parser and we pass
- <code>true</code> as the last argument to the document parser constructor
- to indicate that we are parsing potentially-polymorphic XML documents:</p>
-
- <pre class="c++">
-int
-main (int argc, char* argv[])
-{
- // Construct the parser.
- //
- xml_schema::string_pimpl string_p;
- xml_schema::boolean_pimpl boolean_p;
- xml_schema::unsigned_int_pimpl unsigned_int_p;
-
- person_pimpl person_p;
- superman_pimpl superman_p;
- batman_pimpl batman_p;
-
- xml_schema::parser_map_impl person_map;
- supermen_pimpl supermen_p;
-
- person_p.parsers (string_p);
- superman_p.parsers (string_p, boolean_p);
- batman_p.parsers (string_p, boolean_p, unsigned_int_p);
-
- // Here we are specifying a parser map which containes several
- // parsers that can be used to parse the person element.
- //
- person_map.insert (person_p);
- person_map.insert (superman_p);
- person_map.insert (batman_p);
-
- supermen_p.person_parser (person_map);
-
- // Parse the XML document. The last argument to the document's
- // constructor indicates that we are parsing polymorphic XML
- // documents.
- //
- xml_schema::document doc_p (supermen_p, "supermen", true);
-
- supermen_p.pre ();
- doc_p.parse (argv[1]);
- supermen_p.post_supermen ();
-}
- </pre>
-
- <p>When polymorphism-aware code is generated, each element's
- <code>*_parser()</code> function is overloaded to also accept
- an object of the <code>xml_schema::parser_map</code> type.
- For example, the <code>supermen_pskel</code> class from the
- above example looks like this:</p>
-
- <pre class="c++">
-class supermen_pskel: public xml_schema::parser_complex_content
-{
-public:
-
- ...
-
- // Parser construction API.
- //
- void
- parsers (person_pskel&amp;);
-
- // Individual element parsers.
- //
- void
- person_parser (person_pskel&amp;);
-
- void
- person_parser (const xml_schema::parser_map&amp;);
-
- ...
-};
- </pre>
-
- <p>Note that you can specify both the individual (static) parser and
- the parser map. The individual parser will be used when the static
- element type and the dynamic type of the object being parsed are
- the same. This is the case, for example, when there is no
- <code>xsi:type</code> attribute and the element hasn't been
- substituted. Because the individual parser for an element is
- cached and no map lookup is necessary, it makes sense to specify
- both the individual parser and the parser map when most of the
- objects being parsed are of the static type and optimal
- performance is important. The following code fragment shows
- how to change the above example to set both the individual
- parser and the parser map:</p>
-
- <pre class="c++">
-int
-main (int argc, char* argv[])
-{
- ...
-
- person_map.insert (superman_p);
- person_map.insert (batman_p);
-
- supermen_p.person_parser (person_p);
- supermen_p.person_parser (person_map);
-
- ...
-}
- </pre>
-
-
- <p>The <code>xml_schema::parser_map</code> interface and the
- <code>xml_schema::parser_map_impl</code> default implementation
- are presented below:</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class parser_map
- {
- public:
- virtual parser_base*
- find (const ro_string* type) const = 0;
- };
-
- class parser_map_impl: public parser_map
- {
- public:
- void
- insert (parser_base&amp;);
-
- virtual parser_base*
- find (const ro_string* type) const;
-
- private:
- parser_map_impl (const parser_map_impl&amp;);
-
- parser_map_impl&amp;
- operator= (const parser_map_impl&amp;);
-
- ...
- };
-}
- </pre>
-
- <p>The <code>type</code> argument in the <code>find()</code> virtual
- function is the type name and namespace from the xsi:type attribute
- (the namespace prefix is resolved to the actual XML namespace)
- or the type of an element from the substitution group in the form
- <code>"&lt;name>&nbsp;&lt;namespace>"</code> with the space and the
- namespace part absent if the type does not have a namespace.
- You can obtain a parser's dynamic type in the same format
- using the <code>_dynamic_type()</code> function. The static
- type can be obtained by calling the static <code>_static_type()</code>
- function, for example <code>person_pskel::_static_type()</code>.
- Both functions return a C string (<code>const char*</code> or
- <code>const wchar_t*</code>, depending on the character type
- used) which is valid for as long as the application is running.
- The following example shows how we can implement our own parser
- map using <code>std::map</code>:</p>
-
-
- <pre class="c++">
-#include &lt;map>
-#include &lt;string>
-
-class parser_map: public xml_schema::parser_map
-{
-public:
- void
- insert (xml_schema::parser_base&amp; p)
- {
- map_[p._dynamic_type ()] = &amp;p;
- }
-
- virtual xml_schema::parser_base*
- find (const xml_schema::ro_string* type) const
- {
- map::const_iterator i = map_.find (type);
- return i != map_.end () ? i->second : 0;
- }
-
-private:
- typedef std::map&lt;std::string, xml_schema::parser_base*> map;
- map map_;
-};
- </pre>
-
- <p>Most of code presented in this section is taken from the
- <code>polymorphism</code> example which can be found in the
- <code>examples/cxx/parser/</code> directory of the XSD distribution.
- Handling of <code>xsi:type</code> and substitution groups when used
- on root elements requires a number of special actions as shown in
- the <code>polyroot</code> example.</p>
-
-
- <!-- Built-in XML Schema Type Parsers -->
-
-
- <h1><a name="6">6 Built-In XML Schema Type Parsers</a></h1>
-
- <p>The XSD runtime provides parser implementations for all built-in
- XML Schema types as summarized in the following table. Declarations
- for these types are automatically included into each generated
- header file. As a result you don't need to include any headers
- to gain access to these parser implementations. Note that some
- parsers return either <code>std::string</code> or
- <code>std::wstring</code> depending on the character type selected.</p>
-
- <!-- border="1" is necessary for html2ps -->
- <table id="builtin" border="1">
- <tr>
- <th>XML Schema type</th>
- <th>Parser implementation in the <code>xml_schema</code> namespace</th>
- <th>Parser return type</th>
- </tr>
-
- <tr>
- <th colspan="3">anyType and anySimpleType types</th>
- </tr>
- <tr>
- <td><code>anyType</code></td>
- <td><code>any_type_pimpl</code></td>
- <td><code>void</code></td>
- </tr>
- <tr>
- <td><code>anySimpleType</code></td>
- <td><code>any_simple_type_pimpl</code></td>
- <td><code>void</code></td>
- </tr>
-
- <tr>
- <th colspan="3">fixed-length integral types</th>
- </tr>
- <!-- 8-bit -->
- <tr>
- <td><code>byte</code></td>
- <td><code>byte_pimpl</code></td>
- <td><code>signed&nbsp;char</code></td>
- </tr>
- <tr>
- <td><code>unsignedByte</code></td>
- <td><code>unsigned_byte_pimpl</code></td>
- <td><code>unsigned&nbsp;char</code></td>
- </tr>
-
- <!-- 16-bit -->
- <tr>
- <td><code>short</code></td>
- <td><code>short_pimpl</code></td>
- <td><code>short</code></td>
- </tr>
- <tr>
- <td><code>unsignedShort</code></td>
- <td><code>unsigned_short_pimpl</code></td>
- <td><code>unsigned&nbsp;short</code></td>
- </tr>
-
- <!-- 32-bit -->
- <tr>
- <td><code>int</code></td>
- <td><code>int_pimpl</code></td>
- <td><code>int</code></td>
- </tr>
- <tr>
- <td><code>unsignedInt</code></td>
- <td><code>unsigned_int_pimpl</code></td>
- <td><code>unsigned&nbsp;int</code></td>
- </tr>
-
- <!-- 64-bit -->
- <tr>
- <td><code>long</code></td>
- <td><code>long_pimpl</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>unsignedLong</code></td>
- <td><code>unsigned_long_pimpl</code></td>
- <td><code>unsigned&nbsp;long&nbsp;long</code></td>
- </tr>
-
- <tr>
- <th colspan="3">arbitrary-length integral types</th>
- </tr>
- <tr>
- <td><code>integer</code></td>
- <td><code>integer_pimpl</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>nonPositiveInteger</code></td>
- <td><code>non_positive_integer_pimpl</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>nonNegativeInteger</code></td>
- <td><code>non_negative_integer_pimpl</code></td>
- <td><code>unsigned long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>positiveInteger</code></td>
- <td><code>positive_integer_pimpl</code></td>
- <td><code>unsigned long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>negativeInteger</code></td>
- <td><code>negative_integer_pimpl</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
-
- <tr>
- <th colspan="3">boolean types</th>
- </tr>
- <tr>
- <td><code>boolean</code></td>
- <td><code>boolean_pimpl</code></td>
- <td><code>bool</code></td>
- </tr>
-
- <tr>
- <th colspan="3">fixed-precision floating-point types</th>
- </tr>
- <tr>
- <td><code>float</code></td>
- <td><code>float_pimpl</code></td>
- <td><code>float</code></td>
- </tr>
- <tr>
- <td><code>double</code></td>
- <td><code>double_pimpl</code></td>
- <td><code>double</code></td>
- </tr>
-
- <tr>
- <th colspan="3">arbitrary-precision floating-point types</th>
- </tr>
- <tr>
- <td><code>decimal</code></td>
- <td><code>decimal_pimpl</code></td>
- <td><code>double</code></td>
- </tr>
-
- <tr>
- <th colspan="3">string-based types</th>
- </tr>
- <tr>
- <td><code>string</code></td>
- <td><code>string_pimpl</code></td>
- <td><code>std::string</code> or <code>std::wstring</code></td>
- </tr>
- <tr>
- <td><code>normalizedString</code></td>
- <td><code>normalized_string_pimpl</code></td>
- <td><code>std::string</code> or <code>std::wstring</code></td>
- </tr>
- <tr>
- <td><code>token</code></td>
- <td><code>token_pimpl</code></td>
- <td><code>std::string</code> or <code>std::wstring</code></td>
- </tr>
- <tr>
- <td><code>Name</code></td>
- <td><code>name_pimpl</code></td>
- <td><code>std::string</code> or <code>std::wstring</code></td>
- </tr>
- <tr>
- <td><code>NMTOKEN</code></td>
- <td><code>nmtoken_pimpl</code></td>
- <td><code>std::string</code> or <code>std::wstring</code></td>
- </tr>
- <tr>
- <td><code>NCName</code></td>
- <td><code>ncname_pimpl</code></td>
- <td><code>std::string</code> or <code>std::wstring</code></td>
- </tr>
-
- <tr>
- <td><code>language</code></td>
- <td><code>language_pimpl</code></td>
- <td><code>std::string</code> or <code>std::wstring</code></td>
- </tr>
-
- <tr>
- <th colspan="3">qualified name</th>
- </tr>
- <tr>
- <td><code>QName</code></td>
- <td><code>qname_pimpl</code></td>
- <td><code>xml_schema::qname</code><br/><a href="#6.1">Section 6.1,
- "<code>QName</code> Parser"</a></td>
- </tr>
-
- <tr>
- <th colspan="3">ID/IDREF types</th>
- </tr>
- <tr>
- <td><code>ID</code></td>
- <td><code>id_pimpl</code></td>
- <td><code>std::string</code> or <code>std::wstring</code></td>
- </tr>
- <tr>
- <td><code>IDREF</code></td>
- <td><code>idref_pimpl</code></td>
- <td><code>std::string</code> or <code>std::wstring</code></td>
- </tr>
-
- <tr>
- <th colspan="3">list types</th>
- </tr>
- <tr>
- <td><code>NMTOKENS</code></td>
- <td><code>nmtokens_pimpl</code></td>
- <td><code>xml_schema::string_sequence</code><br/><a href="#6.2">Section
- 6.2, "<code>NMTOKENS</code> and <code>IDREFS</code> Parsers"</a></td>
- </tr>
- <tr>
- <td><code>IDREFS</code></td>
- <td><code>idrefs_pimpl</code></td>
- <td><code>xml_schema::string_sequence</code><br/><a href="#6.2">Section
- 6.2, "<code>NMTOKENS</code> and <code>IDREFS</code> Parsers"</a></td>
- </tr>
-
- <tr>
- <th colspan="3">URI types</th>
- </tr>
- <tr>
- <td><code>anyURI</code></td>
- <td><code>uri_pimpl</code></td>
- <td><code>std::string</code> or <code>std::wstring</code></td>
- </tr>
-
- <tr>
- <th colspan="3">binary types</th>
- </tr>
- <tr>
- <td><code>base64Binary</code></td>
- <td><code>base64_binary_pimpl</code></td>
- <td><code>std::[auto|unique]_ptr&lt; xml_schema::buffer></code><br/>
- <a href="#6.3">Section 6.3, "<code>base64Binary</code> and
- <code>hexBinary</code> Parsers"</a></td>
- </tr>
- <tr>
- <td><code>hexBinary</code></td>
- <td><code>hex_binary_pimpl</code></td>
- <td><code>std::[auto|unique]_ptr&lt; xml_schema::buffer></code><br/>
- <a href="#6.3">Section 6.3, "<code>base64Binary</code> and
- <code>hexBinary</code> Parsers"</a></td>
- </tr>
-
- <tr>
- <th colspan="3">date/time types</th>
- </tr>
- <tr>
- <td><code>date</code></td>
- <td><code>date_pimpl</code></td>
- <td><code>xml_schema::date</code><br/><a href="#6.5">Section 6.5,
- "<code>date</code> Parser"</a></td>
- </tr>
- <tr>
- <td><code>dateTime</code></td>
- <td><code>date_time_pimpl</code></td>
- <td><code>xml_schema::date_time</code><br/><a href="#6.6">Section 6.6,
- "<code>dateTime</code> Parser"</a></td>
- </tr>
- <tr>
- <td><code>duration</code></td>
- <td><code>duration_pimpl</code></td>
- <td><code>xml_schema::duration</code><br/><a href="#6.7">Section 6.7,
- "<code>duration</code> Parser"</a></td>
- </tr>
- <tr>
- <td><code>gDay</code></td>
- <td><code>gday_pimpl</code></td>
- <td><code>xml_schema::gday</code><br/><a href="#6.8">Section 6.8,
- "<code>gDay</code> Parser"</a></td>
- </tr>
- <tr>
- <td><code>gMonth</code></td>
- <td><code>gmonth_pimpl</code></td>
- <td><code>xml_schema::gmonth</code><br/><a href="#6.9">Section 6.9,
- "<code>gMonth</code> Parser"</a></td>
- </tr>
- <tr>
- <td><code>gMonthDay</code></td>
- <td><code>gmonth_day_pimpl</code></td>
- <td><code>xml_schema::gmonth_day</code><br/><a href="#6.10">Section 6.10,
- "<code>gMonthDay</code> Parser"</a></td>
- </tr>
- <tr>
- <td><code>gYear</code></td>
- <td><code>gyear_pimpl</code></td>
- <td><code>xml_schema::gyear</code><br/><a href="#6.11">Section 6.11,
- "<code>gYear</code> Parser"</a></td>
- </tr>
- <tr>
- <td><code>gYearMonth</code></td>
- <td><code>gyear_month_pimpl</code></td>
- <td><code>xml_schema::gyear_month</code><br/><a href="#6.12">Section
- 6.12, "<code>gYearMonth</code> Parser"</a></td>
- </tr>
- <tr>
- <td><code>time</code></td>
- <td><code>time_pimpl</code></td>
- <td><code>xml_schema::time</code><br/><a href="#6.13">Section 6.13,
- "<code>time</code> Parser"</a></td>
- </tr>
-
- </table>
-
- <h2><a name="6.1">6.1 <code>QName</code> Parser</a></h2>
-
- <p>The return type of the <code>qname_pimpl</code> parser implementation
- is <code>xml_schema::qname</code> which represents an XML qualified
- name. Its interface is presented below.
- Note that the <code>std::string</code> type in the interface becomes
- <code>std::wstring</code> if the selected character type is
- <code>wchar_t</code>.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class qname
- {
- public:
- explicit
- qname (const std::string&amp; name);
- qname (const std::string&amp; prefix, const std::string&amp; name);
-
- const std::string&amp;
- prefix () const;
-
- void
- prefix (const std::string&amp;);
-
- const std::string&amp;
- name () const;
-
- void
- name (const std::string&amp;);
- };
-
- bool
- operator== (const qname&amp;, const qname&amp;);
-
- bool
- operator!= (const qname&amp;, const qname&amp;);
-}
- </pre>
-
-
- <h2><a name="6.2">6.2 <code>NMTOKENS</code> and <code>IDREFS</code> Parsers</a></h2>
-
- <p>The return type of the <code>nmtokens_pimpl</code> and
- <code>idrefs_pimpl</code> parser implementations is
- <code>xml_schema::string_sequence</code> which represents a
- sequence of strings. Its interface is presented below.
- Note that the <code>std::string</code> type in the interface becomes
- <code>std::wstring</code> if the selected character type is
- <code>wchar_t</code>.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class string_sequence: public std::vector&lt;std::string>
- {
- public:
- string_sequence ();
-
- explicit
- string_sequence (std::vector&lt;std::string>::size_type n,
- const std::string&amp; x = std::string ());
-
- template &lt;typename I>
- string_sequence (const I&amp; begin, const I&amp; end);
- };
-
- bool
- operator== (const string_sequence&amp;, const string_sequence&amp;);
-
- bool
- operator!= (const string_sequence&amp;, const string_sequence&amp;);
-}
- </pre>
-
-
- <h2><a name="6.3">6.3 <code>base64Binary</code> and <code>hexBinary</code> Parsers</a></h2>
-
- <p>The return type of the <code>base64_binary_pimpl</code> and
- <code>hex_binary_pimpl</code> parser implementations is either
- <code>std::auto_ptr&lt;xml_schema::buffer></code> (C++98) or
- <code>std::unique_ptr&lt;xml_schema::buffer></code> (C++11),
- depending on the C++ standard selected (<code>--std</code> XSD
- compiler option). The <code>xml_schema::buffer</code> type
- represents a binary buffer and its interface is presented below.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class buffer
- {
- public:
- typedef std::size_t size_t;
-
- class bounds {}; // Out of bounds exception.
-
- public:
- explicit
- buffer (size_t size = 0);
- buffer (size_t size, size_t capacity);
- buffer (const void* data, size_t size);
- buffer (const void* data, size_t size, size_t capacity);
- buffer (void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership);
-
- public:
- buffer (const buffer&amp;);
-
- buffer&amp;
- operator= (const buffer&amp;);
-
- void
- swap (buffer&amp;);
-
- public:
- size_t
- capacity () const;
-
- bool
- capacity (size_t);
-
- public:
- size_t
- size () const;
-
- bool
- size (size_t);
-
- public:
- const char*
- data () const;
-
- char*
- data ();
-
- const char*
- begin () const;
-
- char*
- begin ();
-
- const char*
- end () const;
-
- char*
- end ();
- };
-
- bool
- operator== (const buffer&amp;, const buffer&amp;);
-
- bool
- operator!= (const buffer&amp;, const buffer&amp;);
-}
- </pre>
-
- <p>If the <code>assume_ownership</code> argument to the constructor
- is <code>true</code>, the instance assumes the ownership of the
- memory block pointed to by the <code>data</code> argument and will
- eventually release it by calling <code>operator delete()</code>. The
- <code>capacity()</code> and <code>size()</code> modifier functions
- return <code>true</code> if the underlying buffer has moved.
- </p>
-
- <p>The <code>bounds</code> exception is thrown if the constructor
- arguments violate the <code>(size&nbsp;&lt;=&nbsp;capacity)</code>
- constraint.</p>
-
-
- <h2><a name="6.4">6.4 Time Zone Representation</a></h2>
-
- <p>The <code>date</code>, <code>dateTime</code>, <code>gDay</code>,
- <code>gMonth</code>, <code>gMonthDay</code>, <code>gYear</code>,
- <code>gYearMonth</code>, and <code>time</code> XML Schema built-in
- types all include an optional time zone component. The following
- <code>xml_schema::time_zone</code> base class is used to represent
- this information:</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class time_zone
- {
- public:
- time_zone ();
- time_zone (short hours, short minutes);
-
- bool
- zone_present () const;
-
- void
- zone_reset ();
-
- short
- zone_hours () const;
-
- void
- zone_hours (short);
-
- short
- zone_minutes () const;
-
- void
- zone_minutes (short);
- };
-
- bool
- operator== (const time_zone&amp;, const time_zone&amp;);
-
- bool
- operator!= (const time_zone&amp;, const time_zone&amp;);
-}
- </pre>
-
- <p>The <code>zone_present()</code> accessor function returns <code>true</code>
- if the time zone is specified. The <code>zone_reset()</code> modifier
- function resets the time zone object to the <em>not specified</em>
- state. If the time zone offset is negative then both hours and
- minutes components are represented as negative integers.</p>
-
-
- <h2><a name="6.5">6.5 <code>date</code> Parser</a></h2>
-
- <p>The return type of the <code>date_pimpl</code> parser implementation
- is <code>xml_schema::date</code> which represents a year, a day, and a month
- with an optional time zone. Its interface is presented below.
- For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#6.4">Section 6.4, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class date
- {
- public:
- date (int year, unsigned short month, unsigned short day);
- date (int year, unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes);
-
- int
- year () const;
-
- void
- year (int);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
- };
-
- bool
- operator== (const date&amp;, const date&amp;);
-
- bool
- operator!= (const date&amp;, const date&amp;);
-}
- </pre>
-
- <h2><a name="6.6">6.6 <code>dateTime</code> Parser</a></h2>
-
- <p>The return type of the <code>date_time_pimpl</code> parser implementation
- is <code>xml_schema::date_time</code> which represents a year, a month, a day,
- hours, minutes, and seconds with an optional time zone. Its interface
- is presented below.
- For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#6.4">Section 6.4, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class date_time
- {
- public:
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds);
-
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds, short zone_hours, short zone_minutes);
-
- int
- year () const;
-
- void
- year (int);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
-
- unsigned short
- hours () const;
-
- void
- hours (unsigned short);
-
- unsigned short
- minutes () const;
-
- void
- minutes (unsigned short);
-
- double
- seconds () const;
-
- void
- seconds (double);
- };
-
- bool
- operator== (const date_time&amp;, const date_time&amp;);
-
- bool
- operator!= (const date_time&amp;, const date_time&amp;);
-}
- </pre>
-
- <h2><a name="6.7">6.7 <code>duration</code> Parser</a></h2>
-
- <p>The return type of the <code>duration_pimpl</code> parser implementation
- is <code>xml_schema::duration</code> which represents a potentially
- negative duration in the form of years, months, days, hours, minutes,
- and seconds. Its interface is presented below.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class duration
- {
- public:
- duration (bool negative,
- unsigned int years, unsigned int months, unsigned int days,
- unsigned int hours, unsigned int minutes, double seconds);
-
- bool
- negative () const;
-
- void
- negative (bool);
-
- unsigned int
- years () const;
-
- void
- years (unsigned int);
-
- unsigned int
- months () const;
-
- void
- months (unsigned int);
-
- unsigned int
- days () const;
-
- void
- days (unsigned int);
-
- unsigned int
- hours () const;
-
- void
- hours (unsigned int);
-
- unsigned int
- minutes () const;
-
- void
- minutes (unsigned int);
-
- double
- seconds () const;
-
- void
- seconds (double);
- };
-
- bool
- operator== (const duration&amp;, const duration&amp;);
-
- bool
- operator!= (const duration&amp;, const duration&amp;);
-}
- </pre>
-
-
- <h2><a name="6.8">6.8 <code>gDay</code> Parser</a></h2>
-
- <p>The return type of the <code>gday_pimpl</code> parser implementation
- is <code>xml_schema::gday</code> which represents a day of the month with
- an optional time zone. Its interface is presented below.
- For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#6.4">Section 6.4, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class gday
- {
- public:
- explicit
- gday (unsigned short day);
- gday (unsigned short day, short zone_hours, short zone_minutes);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
- };
-
- bool
- operator== (const gday&amp;, const gday&amp;);
-
- bool
- operator!= (const gday&amp;, const gday&amp;);
-}
- </pre>
-
- <h2><a name="6.9">6.9 <code>gMonth</code> Parser</a></h2>
-
- <p>The return type of the <code>gmonth_pimpl</code> parser implementation
- is <code>xml_schema::gmonth</code> which represents a month of the year
- with an optional time zone. Its interface is presented below.
- For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#6.4">Section 6.4, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class gmonth
- {
- public:
- explicit
- gmonth (unsigned short month);
- gmonth (unsigned short month, short zone_hours, short zone_minutes);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
- };
-
- bool
- operator== (const gmonth&amp;, const gmonth&amp;);
-
- bool
- operator!= (const gmonth&amp;, const gmonth&amp;);
-}
- </pre>
-
- <h2><a name="6.10">6.10 <code>gMonthDay</code> Parser</a></h2>
-
- <p>The return type of the <code>gmonth_day_pimpl</code> parser implementation
- is <code>xml_schema::gmonth_day</code> which represents a day and a month
- of the year with an optional time zone. Its interface is presented below.
- For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#6.4">Section 6.4, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class gmonth_day
- {
- public:
- gmonth_day (unsigned short month, unsigned short day);
- gmonth_day (unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
- };
-
- bool
- operator== (const gmonth_day&amp;, const gmonth_day&amp;);
-
- bool
- operator!= (const gmonth_day&amp;, const gmonth_day&amp;);
-}
- </pre>
-
- <h2><a name="6.11">6.11 <code>gYear</code> Parser</a></h2>
-
- <p>The return type of the <code>gyear_pimpl</code> parser implementation
- is <code>xml_schema::gyear</code> which represents a year with
- an optional time zone. Its interface is presented below.
- For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#6.4">Section 6.4, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class gyear
- {
- public:
- explicit
- gyear (int year);
- gyear (int year, short zone_hours, short zone_minutes);
-
- int
- year () const;
-
- void
- year (int);
- };
-
- bool
- operator== (const gyear&amp;, const gyear&amp;);
-
- bool
- operator!= (const gyear&amp;, const gyear&amp;);
-}
- </pre>
-
- <h2><a name="6.12">6.12 <code>gYearMonth</code> Parser</a></h2>
-
- <p>The return type of the <code>gyear_month_pimpl</code> parser implementation
- is <code>xml_schema::gyear_month</code> which represents a year and a month
- with an optional time zone. Its interface is presented below.
- For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#6.4">Section 6.4, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class gyear_month
- {
- public:
- gyear_month (int year, unsigned short month);
- gyear_month (int year, unsigned short month,
- short zone_hours, short zone_minutes);
-
- int
- year () const;
-
- void
- year (int);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
- };
-
- bool
- operator== (const gyear_month&amp;, const gyear_month&amp;);
-
- bool
- operator!= (const gyear_month&amp;, const gyear_month&amp;);
-}
- </pre>
-
-
- <h2><a name="6.13">6.13 <code>time</code> Parser</a></h2>
-
- <p>The return type of the <code>time_pimpl</code> parser implementation
- is <code>xml_schema::time</code> which represents hours, minutes,
- and seconds with an optional time zone. Its interface is presented below.
- For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#6.4">Section 6.4, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class time
- {
- public:
- time (unsigned short hours, unsigned short minutes, double seconds);
- time (unsigned short hours, unsigned short minutes, double seconds,
- short zone_hours, short zone_minutes);
-
- unsigned short
- hours () const;
-
- void
- hours (unsigned short);
-
- unsigned short
- minutes () const;
-
- void
- minutes (unsigned short);
-
- double
- seconds () const;
-
- void
- seconds (double);
- };
-
- bool
- operator== (const time&amp;, const time&amp;);
-
- bool
- operator!= (const time&amp;, const time&amp;);
-}
- </pre>
-
-
- <!-- Error Handling -->
-
-
- <h1><a name="7">7 Document Parser and Error Handling</a></h1>
-
- <p>In this chapter we will discuss the <code>xml_schema::document</code>
- type as well as the error handling mechanisms provided by the mapping
- in more detail. As mentioned in <a href="#3.4">Section 3.4,
- "Connecting the Parsers Together"</a>, the interface of
- <code>xml_schema::document</code> depends on the underlying XML
- parser selected (<a href="#5.3">Section 5.3, "Underlying XML
- Parser"</a>). The following sections describe the
- <code>document</code> type interface for Xerces-C++ and
- Expat as underlying parsers.</p>
-
- <h2><a name="7.1">7.1 Xerces-C++ Document Parser</a></h2>
-
- <p>When Xerces-C++ is used as the underlying XML parser, the
- <code>document</code> type has the following interface. Note that
- if the character type is <code>wchar_t</code>, then the string type
- in the interface becomes <code>std::wstring</code>
- (see <a href="#5.2">Section 5.2, "Character Type and Encoding"</a>).</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class parser_base;
- class error_handler;
-
- class flags
- {
- public:
- // Do not validate XML documents with the Xerces-C++ validator.
- //
- static const unsigned long dont_validate;
-
- // Do not initialize the Xerces-C++ runtime.
- //
- static const unsigned long dont_initialize;
-
- // Disable handling of subsequent imports for the same namespace
- // in Xerces-C++ 3.1.0 and later.
- //
- static const unsigned long no_multiple_imports;
- };
-
- class properties
- {
- public:
- // Add a location for a schema with a target namespace.
- //
- void
- schema_location (const std::string&amp; namespace_,
- const std::string&amp; location);
-
- // Add a location for a schema without a target namespace.
- //
- void
- no_namespace_schema_location (const std::string&amp; location);
- };
-
- class document
- {
- public:
- document (parser_base&amp; root,
- const std::string&amp; root_element_name,
- bool polymorphic = false);
-
- document (parser_base&amp; root,
- const std::string&amp; root_element_namespace,
- const std::string&amp; root_element_name,
- bool polymorphic = false);
-
- public:
- // Parse URI or a local file.
- //
- void
- parse (const std::string&amp; uri,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse URI or a local file with a user-provided error_handler
- // object.
- //
- void
- parse (const std::string&amp; uri,
- error_handler&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse URI or a local file with a user-provided ErrorHandler
- // object. Note that you must initialize the Xerces-C++ runtime
- // before calling this function.
- //
- void
- parse (const std::string&amp; uri,
- xercesc::ErrorHandler&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse URI or a local file using a user-provided SAX2XMLReader
- // object. Note that you must initialize the Xerces-C++ runtime
- // before calling this function.
- //
- void
- parse (const std::string&amp; uri,
- xercesc::SAX2XMLReader&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- public:
- // Parse std::istream.
- //
- void
- parse (std::istream&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse std::istream with a user-provided error_handler object.
- //
- void
- parse (std::istream&amp;,
- error_handler&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse std::istream with a user-provided ErrorHandler object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse (std::istream&amp;,
- xercesc::ErrorHandler&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse std::istream using a user-provided SAX2XMLReader object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse (std::istream&amp;,
- xercesc::SAX2XMLReader&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- public:
- // Parse std::istream with a system id.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse std::istream with a system id and a user-provided
- // error_handler object.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- error_handler&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse std::istream with a system id and a user-provided
- // ErrorHandler object. Note that you must initialize the
- // Xerces-C++ runtime before calling this function.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- xercesc::ErrorHandler&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse std::istream with a system id using a user-provided
- // SAX2XMLReader object. Note that you must initialize the
- // Xerces-C++ runtime before calling this function.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- xercesc::SAX2XMLReader&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- public:
- // Parse std::istream with system and public ids.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- const std::string&amp; public_id,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse std::istream with system and public ids and a user-provided
- // error_handler object.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- const std::string&amp; public_id,
- error_handler&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse std::istream with system and public ids and a user-provided
- // ErrorHandler object. Note that you must initialize the Xerces-C++
- // runtime before calling this function.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- const std::string&amp; public_id,
- xercesc::ErrorHandler&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse std::istream with system and public ids using a user-
- // provided SAX2XMLReader object. Note that you must initialize
- // the Xerces-C++ runtime before calling this function.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- const std::string&amp; public_id,
- xercesc::SAX2XMLReader&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- public:
- // Parse InputSource. Note that you must initialize the Xerces-C++
- // runtime before calling this function.
- //
- void
- parse (const xercesc::InputSource&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse InputSource with a user-provided error_handler object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse (const xercesc::InputSource&amp;,
- error_handler&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse InputSource with a user-provided ErrorHandler object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse (const xercesc::InputSource&amp;,
- xercesc::ErrorHandler&amp;,
- flags = 0,
- const properties&amp; = properties ());
-
- // Parse InputSource using a user-provided SAX2XMLReader object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse (const xercesc::InputSource&amp;,
- xercesc::SAX2XMLReader&amp;,
- flags = 0,
- const properties&amp; = properties ());
- };
-}
- </pre>
-
- <p>The <code>document</code> class is a root parser for
- the vocabulary. The first argument to its constructors is the
- parser for the type of the root element. The <code>parser_base</code>
- class is the base type for all parser skeletons. The second and
- third arguments to the <code>document</code>'s constructors are
- the root element's name and namespace. The last argument,
- <code>polymorphic</code>, specifies whether the XML documents
- being parsed use polymorphism. For more information on support
- for XML Schema polymorphism in the C++/Parser mapping refer
- to <a href="#5.5">Section 5.5, "Support for Polymorphism"</a>.</p>
-
- <p>The rest of the <code>document</code> interface consists of overloaded
- <code>parse()</code> functions. The last two arguments in each of these
- functions are <code>flags</code> and <code>properties</code>. The
- <code>flags</code> argument allows you to modify the default behavior
- of the parsing functions. The <code>properties</code> argument allows
- you to override the schema location attributes specified in XML
- documents. Note that the schema location paths are relative to an
- XML document unless they are complete URIs. For example if you want
- to use a local schema file then you will need to use a URI in the
- form <code>file:///absolute/path/to/your/schema</code>.</p>
-
- <p>A number of overloaded <code>parse()</code> functions have the
- <code>system_id</code> and <code>public_id</code> arguments. The
- system id is a <em>system</em> identifier of the resources being
- parsed (for example, URI or a full file path). The public id is a
- <em>public</em> identifier of the resource (for example, an
- application-specific name or a relative file path). The system id
- is used to resolve relative paths (for example, schema paths). In
- diagnostics messages the public id is used if it is available.
- Otherwise the system id is used.</p>
-
- <p>The error handling mechanisms employed by the <code>document</code>
- parser are described in <a href="#7.3">Section 7.3, "Error
- Handling"</a>.</p>
-
- <h2><a name="7.2">7.2 Expat Document Parser</a></h2>
-
- <p>When Expat is used as the underlying XML parser, the
- <code>document</code> type has the following interface. Note that
- if the character type is <code>wchar_t</code>, then the string type
- in the interface becomes <code>std::wstring</code>
- (see <a href="#5.2">Section 5.2, "Character Type and Encoding"</a>).</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class parser_base;
- class error_handler;
-
- class document
- {
- public:
- document (parser_base&amp;,
- const std::string&amp; root_element_name,
- bool polymorphic = false);
-
- document (parser_base&amp;,
- const std::string&amp; root_element_namespace,
- const std::string&amp; root_element_name,
- bool polymorphic = false);
-
- public:
- // Parse a local file. The file is accessed with std::ifstream
- // in binary mode. The std::ios_base::failure exception is used
- // to report io errors (badbit and failbit).
- void
- parse (const std::string&amp; file);
-
- // Parse a local file with a user-provided error_handler
- // object. The file is accessed with std::ifstream in binary
- // mode. The std::ios_base::failure exception is used to report
- // io errors (badbit and failbit).
- //
- void
- parse (const std::string&amp; file, error_handler&amp;);
-
- public:
- // Parse std::istream.
- //
- void
- parse (std::istream&amp;);
-
- // Parse std::istream with a user-provided error_handler object.
- //
- void
- parse (std::istream&amp;, error_handler&amp;);
-
- // Parse std::istream with a system id.
- //
- void
- parse (std::istream&amp;, const std::string&amp; system_id);
-
- // Parse std::istream with a system id and a user-provided
- // error_handler object.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- error_handler&amp;);
-
- // Parse std::istream with system and public ids.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- const std::string&amp; public_id);
-
- // Parse std::istream with system and public ids and a user-provided
- // error_handler object.
- //
- void
- parse (std::istream&amp;,
- const std::string&amp; system_id,
- const std::string&amp; public_id,
- error_handler&amp;);
-
- public:
- // Parse a chunk of input. You can call these functions multiple
- // times with the last call having the last argument true.
- //
- void
- parse (const void* data, std::size_t size, bool last);
-
- void
- parse (const void* data, std::size_t size, bool last,
- error_handler&amp;);
-
- void
- parse (const void* data, std::size_t size, bool last,
- const std::string&amp; system_id);
-
- void
- parse (const void* data, std::size_t size, bool last,
- const std::string&amp; system_id,
- error_handler&amp;);
-
- void
- parse (const void* data, std::size_t size, bool last,
- const std::string&amp; system_id,
- const std::string&amp; public_id);
-
- void
- parse (const void* data, std::size_t size, bool last,
- const std::string&amp; system_id,
- const std::string&amp; public_id,
- error_handler&amp;);
-
- public:
- // Low-level Expat-specific parsing API.
- //
- void
- parse_begin (XML_Parser);
-
- void
- parse_begin (XML_Parser, const std::string&amp; public_id);
-
- void
- parse_begin (XML_Parser, error_handler&amp;);
-
- void
- parse_begin (XML_Parser,
- const std::string&amp; public_id,
- error_handler&amp;);
- void
- parse_end ();
- };
-}
- </pre>
-
- <p>The <code>document</code> class is a root parser for
- the vocabulary. The first argument to its constructors is the
- parser for the type of the root element. The <code>parser_base</code>
- class is the base type for all parser skeletons. The second and
- third arguments to the <code>document</code>'s constructors are
- the root element's name and namespace. The last argument,
- <code>polymorphic</code>, specifies whether the XML documents
- being parsed use polymorphism. For more information on support
- for XML Schema polymorphism in the C++/Parser mapping refer
- to <a href="#5.5">Section 5.5, "Support for Polymorphism"</a>.</p>
-
- <p>A number of overloaded <code>parse()</code> functions have the
- <code>system_id</code> and <code>public_id</code> arguments. The
- system id is a <em>system</em> identifier of the resources being
- parsed (for example, URI or a full file path). The public id is a
- <em>public</em> identifier of the resource (for example, an
- application-specific name or a relative file path). The system id
- is used to resolve relative paths. In diagnostics messages the
- public id is used if it is available. Otherwise the system id
- is used.</p>
-
- <p>The <code>parse_begin()</code> and <code>parse_end()</code> functions
- present a low-level, Expat-specific parsing API for maximum control.
- A typical use-case would look like this (pseudo-code):</p>
-
- <pre class="c++">
-xxx_pimpl root_p;
-document doc_p (root_p, "root");
-
-root_p.pre ();
-doc_p.parse_begin (xml_parser, "file.xml");
-
-while (more_data_to_parse)
-{
- // Call XML_Parse or XML_ParseBuffer.
-
- if (status == XML_STATUS_ERROR)
- break;
-}
-
-// Call parse_end even in case of an error to translate
-// XML and Schema errors to exceptions or error_handler
-// calls.
-//
-doc.parse_end ();
-result_type result (root_p.post_xxx ());
- </pre>
-
- <p>Note that if your vocabulary uses XML namespaces, the
- <code>XML_ParserCreateNS()</code> functions should be used to create
- the XML parser. Space (<code>XML_Char (' ')</code>) should be used
- as a separator (the second argument to <code>XML_ParserCreateNS()</code>).
- </p>
-
- <p>The error handling mechanisms employed by the <code>document</code>
- parser are described in <a href="#7.3">Section 7.3, "Error
- Handling"</a>.</p>
-
-
- <h2><a name="7.3">7.3 Error Handling</a></h2>
-
- <p>There are three categories of errors that can result from running
- a parser on an XML document: System, XML, and Application.
- The System category contains memory allocation and file/stream
- operation errors. The XML category covers XML parsing and
- well-formedness checking as well as XML Schema validation errors.
- Finally, the Application category is for application logic errors
- that you may want to propagate from parser implementations to the
- caller of the parser.
- </p>
-
- <p>The System errors are mapped to the standard exceptions. The
- out of memory condition is indicated by throwing an instance
- of <code>std::bad_alloc</code>. The stream operation errors
- are reported either by throwing an instance of
- <code>std::ios_base::failure</code> if exceptions are enabled
- or by setting the stream state.</p>
-
- <p>Note that if you are parsing <code>std::istream</code> on
- which exceptions are not enabled, then you will need to
- check the stream state before calling the <code>post()</code>
- callback, as shown in the following example:</p>
-
- <pre class="c++">
-int
-main (int argc, char* argv[])
-{
- ...
-
- std::ifstream ifs (argv[1]);
-
- if (ifs.fail ())
- {
- cerr &lt;&lt; argv[1] &lt;&lt; ": unable to open" &lt;&lt; endl;
- return 1;
- }
-
- root_p.pre ();
- doc_p.parse (ifs);
-
- if (ifs.fail ())
- {
- cerr &lt;&lt; argv[1] &lt;&lt; ": io failure" &lt;&lt; endl;
- return 1;
- }
-
- result_type result (root_p.post_xxx ());
-}
- </pre>
-
- <p>The above example can be rewritten to use exceptions
- as shown below:</p>
-
- <pre class="c++">
-int
-main (int argc, char* argv[])
-{
- try
- {
- ...
-
- std::ifstream ifs;
- ifs.exceptions (std::ifstream::badbit | std::ifstream::failbit);
- ifs.open (argv[1]);
-
- root_p.pre ();
- doc_p.parse (ifs);
- result_type result (root_p.post_xxx ());
- }
- catch (const std::ifstream::failure&amp;)
- {
- cerr &lt;&lt; argv[1] &lt;&lt; ": unable to open or io failure" &lt;&lt; endl;
- return 1;
- }
-}
- </pre>
-
-
- <p>For reporting application errors from parsing callbacks, you
- can throw any exceptions of your choice. They are propagated to
- the caller of the parser without any alterations.</p>
-
- <p>The XML errors can be reported either by throwing the
- <code>xml_schema::parsing</code> exception or by a callback
- to the <code>xml_schema::error_handler</code> object (and
- <code>xercesc::ErrorHandler</code> object in case of Xerces-C++).</p>
-
- <p>The <code>xml_schema::parsing</code> exception contains
- a list of warnings and errors that were accumulated during
- parsing. Note that this exception is thrown only if there
- was an error. This makes it impossible to obtain warnings
- from an otherwise successful parsing using this mechanism.
- The following listing shows the definition of
- <code>xml_schema::parsing</code> exception. Note that if the
- character type is <code>wchar_t</code>, then the string type
- and output stream type in the definition become
- <code>std::wstring</code> and <code>std::wostream</code>,
- respectively (see <a href="#5.2">Section 5.2, "Character Type
- and Encoding"</a>).</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class exception: public std::exception
- {
- protected:
- virtual void
- print (std::ostream&amp;) const = 0;
- };
-
- inline std::ostream&amp;
- operator&lt;&lt; (std::ostream&amp; os, const exception&amp; e)
- {
- e.print (os);
- return os;
- }
-
-
- class severity
- {
- public:
- enum value
- {
- warning,
- error
- };
- };
-
-
- class error
- {
- public:
- error (xml_schema::severity,
- const std::string&amp; id,
- unsigned long line,
- unsigned long column,
- const std::string&amp; message);
-
- xml_schema::severity
- severity () const;
-
- const std::string&amp;
- id () const;
-
- unsigned long
- line () const;
-
- unsigned long
- column () const;
-
- const std::string&amp;
- message () const;
- };
-
- std::ostream&amp;
- operator&lt;&lt; (std::ostream&amp;, const error&amp;);
-
-
- class diagnostics: public std::vector&lt;error>
- {
- };
-
- std::ostream&amp;
- operator&lt;&lt; (std::ostream&amp;, const diagnostics&amp;);
-
-
- class parsing: public exception
- {
- public:
- parsing ();
- parsing (const xml_schema::diagnostics&amp;);
-
- const xml_schema::diagnostics&amp;
- diagnostics () const;
-
- virtual const char*
- what () const throw ();
-
- protected:
- virtual void
- print (std::ostream&amp;) const;
- };
-}
- </pre>
-
- <p>The following example shows how we can catch and print this
- exception. The code will print diagnostics messages one per line
- in case of an error.</p>
-
- <pre class="c++">
-int
-main (int argc, char* argv[])
-{
- try
- {
- // Parse.
- }
- catch (const xml_schema::parsing&amp; e)
- {
- cerr &lt;&lt; e &lt;&lt; endl;
- return 1;
- }
-}
- </pre>
-
- <p>With the <code>error_handler</code> approach the diagnostics
- messages are delivered as parsing progresses. The following
- listing presents the definition of the <code>error_handler</code>
- interface. Note that if the character type is <code>wchar_t</code>,
- then the string type in the interface becomes <code>std::wstring</code>
- (see <a href="#5.2">Section 5.2, "Character Type and Encoding"</a>).</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class error_handler
- {
- public:
- class severity
- {
- public:
- enum value
- {
- warning,
- error,
- fatal
- };
- };
-
- virtual bool
- handle (const std::string&amp; id,
- unsigned long line,
- unsigned long column,
- severity,
- const std::string&amp; message) = 0;
- };
-}
- </pre>
-
- <p>The return value of the <code>handle()</code> function indicates whether
- parsing should continue if possible. The error with the fatal severity
- level terminates the parsing process regardless of the returned value.
- At the end of the parsing process with an error that was reported via
- the <code>error_handler</code> object, an empty
- <code>xml_schema::parsing</code> exception is thrown to indicate
- the failure to the caller. You can alter this behavior by throwing
- your own exception from the <code>handle()</code> function.</p>
-
-
- <!-- Appendix A -->
-
-
- <h1><a name="A">Appendix A &mdash; Supported XML Schema Constructs</a></h1>
-
- <p>The C++/Parser mapping supports validation of the following W3C XML
- Schema constructs in the generated code.</p>
-
- <!-- border="1" is necessary for html2ps -->
- <table id="features" border="1">
- <tr><th>Construct</th><th>Notes</th></tr>
- <tr><th colspan="2">Structure</th></tr>
-
- <tr><td>element</td><td></td></tr>
- <tr><td>attribute</td><td></td></tr>
-
- <tr><td>any</td><td></td></tr>
- <tr><td>anyAttribute</td><td></td></tr>
-
- <tr><td>all</td><td></td></tr>
- <tr><td>sequence</td><td></td></tr>
- <tr><td>choice</td><td></td></tr>
-
- <tr><td>complex type, empty content</td><td></td></tr>
- <tr><td>complex type, mixed content</td><td></td></tr>
- <tr><td>complex type, simple content extension</td><td></td></tr>
- <tr><td>complex type, simple content restriction</td>
- <td>Simple type facets are not validated.</td></tr>
- <tr><td>complex type, complex content extension</td><td></td></tr>
- <tr><td>complex type, complex content restriction</td><td></td></tr>
-
- <tr><td>list</td><td></td></tr>
-
- <tr><th colspan="2">Datatypes</th></tr>
-
- <tr><td>byte</td><td></td></tr>
- <tr><td>unsignedByte</td><td></td></tr>
- <tr><td>short</td><td></td></tr>
- <tr><td>unsignedShort</td><td></td></tr>
- <tr><td>int</td><td></td></tr>
- <tr><td>unsignedInt</td><td></td></tr>
- <tr><td>long</td><td></td></tr>
- <tr><td>unsignedLong</td><td></td></tr>
- <tr><td>integer</td><td></td></tr>
- <tr><td>nonPositiveInteger</td><td></td></tr>
- <tr><td>nonNegativeInteger</td><td></td></tr>
- <tr><td>positiveInteger</td><td></td></tr>
- <tr><td>negativeInteger</td><td></td></tr>
-
- <tr><td>boolean</td><td></td></tr>
-
- <tr><td>float</td><td></td></tr>
- <tr><td>double</td><td></td></tr>
- <tr><td>decimal</td><td></td></tr>
-
- <tr><td>string</td><td></td></tr>
- <tr><td>normalizedString</td><td></td></tr>
- <tr><td>token</td><td></td></tr>
- <tr><td>Name</td><td></td></tr>
- <tr><td>NMTOKEN</td><td></td></tr>
- <tr><td>NCName</td><td></td></tr>
- <tr><td>language</td><td></td></tr>
- <tr><td>anyURI</td><td></td></tr>
-
- <tr><td>ID</td><td>Identity constraint is not enforced.</td></tr>
- <tr><td>IDREF</td><td>Identity constraint is not enforced.</td></tr>
-
- <tr><td>NMTOKENS</td><td></td></tr>
- <tr><td>IDREFS</td><td>Identity constraint is not enforced.</td></tr>
-
- <tr><td>QName</td><td></td></tr>
-
- <tr><td>base64Binary</td><td></td></tr>
- <tr><td>hexBinary</td><td></td></tr>
-
- <tr><td>date</td><td></td></tr>
- <tr><td>dateTime</td><td></td></tr>
- <tr><td>duration</td><td></td></tr>
- <tr><td>gDay</td><td></td></tr>
- <tr><td>gMonth</td><td></td></tr>
- <tr><td>gMonthDay</td><td></td></tr>
- <tr><td>gYear</td><td></td></tr>
- <tr><td>gYearMonth</td><td></td></tr>
- <tr><td>time</td><td></td></tr>
- </table>
-
-
- </div>
-</div>
-
-</body>
-</html>
diff --git a/xsd/doc/cxx/parser/guide/makefile b/xsd/doc/cxx/parser/guide/makefile
deleted file mode 100644
index 127a0fa..0000000
--- a/xsd/doc/cxx/parser/guide/makefile
+++ /dev/null
@@ -1,56 +0,0 @@
-# file : doc/cxx/parser/guide/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(default): $(out_base)/cxx-parser-guide.ps $(out_base)/cxx-parser-guide.pdf
-
-$(out_base)/cxx-parser-guide.ps: $(src_base)/index.xhtml \
- $(src_base)/figure-1.png \
- $(src_base)/guide.html2ps \
- | $(out_base)/.
- $(call message,html2ps $<,html2ps -f $(src_base)/guide.html2ps -o $@ $<)
-
-$(out_base)/cxx-parser-guide.pdf: $(out_base)/cxx-parser-guide.ps | $(out_base)/.
- $(call message,ps2pdf $<,ps2pdf14 $< $@)
-
-# Install & Dist.
-#
-$(install): path := $(subst $(src_root)/doc/,,$(src_base))
-$(dist): path := $(subst $(src_root)/,,$(src_base))
-
-$(install): $(out_base)/cxx-parser-guide.ps $(out_base)/cxx-parser-guide.pdf
- $(call install-data,$(src_base)/figure-1.png,$(install_doc_dir)/xsd/$(path)/figure-1.png)
- $(call install-data,$(src_base)/index.xhtml,$(install_doc_dir)/xsd/$(path)/index.xhtml)
- $(call install-data,$(out_base)/cxx-parser-guide.ps,$(install_doc_dir)/xsd/$(path)/cxx-parser-guide.ps)
- $(call install-data,$(out_base)/cxx-parser-guide.pdf,$(install_doc_dir)/xsd/$(path)/cxx-parser-guide.pdf)
-
-$(dist): $(out_base)/cxx-parser-guide.ps $(out_base)/cxx-parser-guide.pdf
- $(call install-data,$(src_base)/figure-1.png,$(dist_prefix)/$(path)/figure-1.png)
- $(call install-data,$(src_base)/index.xhtml,$(dist_prefix)/$(path)/index.xhtml)
- $(call install-data,$(out_base)/cxx-parser-guide.ps,$(dist_prefix)/$(path)/cxx-parser-guide.ps)
- $(call install-data,$(out_base)/cxx-parser-guide.pdf,$(dist_prefix)/$(path)/cxx-parser-guide.pdf)
-
-$(dist-win): $(dist)
-
-
-# Clean
-#
-$(clean):
-ifneq ($(xsd_clean_gen),n)
- $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-parser-guide.ps)
- $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-parser-guide.pdf)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/install.make)
diff --git a/xsd/doc/cxx/parser/makefile b/xsd/doc/cxx/parser/makefile
deleted file mode 100644
index 1e1c22c..0000000
--- a/xsd/doc/cxx/parser/makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# file : doc/cxx/parser/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-docs := guide
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(docs)))
-$(install): $(addprefix $(out_base)/,$(addsuffix /.install,$(docs)))
-$(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(docs)))
-$(dist-win): $(addprefix $(out_base)/,$(addsuffix /.dist-win,$(docs)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(docs)))
-
-$(foreach m,$(docs),$(call import,$(src_base)/$m/makefile))
diff --git a/xsd/doc/cxx/tree/guide/cxx-tree-guide.pdf b/xsd/doc/cxx/tree/guide/cxx-tree-guide.pdf
deleted file mode 100644
index 3e19f3e..0000000
--- a/xsd/doc/cxx/tree/guide/cxx-tree-guide.pdf
+++ /dev/null
Binary files differ
diff --git a/xsd/doc/cxx/tree/guide/cxx-tree-guide.ps b/xsd/doc/cxx/tree/guide/cxx-tree-guide.ps
deleted file mode 100644
index a6c4a2b..0000000
--- a/xsd/doc/cxx/tree/guide/cxx-tree-guide.ps
+++ /dev/null
@@ -1,3509 +0,0 @@
-%!PS
-%%Title: C++/Tree Mapping Getting Started Guide
-%%Creator: html2ps version 1.0 beta7
-%%EndComments
-save
-2000 dict begin
-/d {bind def} bind def
-/D {def} d
-/t true D
-/f false D
-/FL [/Times-Roman
-/Times-Italic
-/Times-Bold
-/Times-BoldItalic
-/Courier
-/Courier-Oblique
-/Courier-Bold
-/Courier-BoldOblique
-/Helvetica
-/Helvetica-Oblique
-/Helvetica-Bold
-/Helvetica-BoldOblique] D
-/WF t D
-/WI 0 D
-/F 1 D
-/IW 471 F div D
-/IL 621 F div D
-/PS 791 D
-/EF [0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 2] D
-/EZ [12 10 19 17 15 13 12 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 8 8] D
-/Ey [0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] D
-/EG [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] D
-/Tm [1 1 0.8 0.8 0.8 0.8 0.8 0.8 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1.3 0 0] D
-/Bm [1 1 0.5 0.5 0.5 0.5 0.5 0.5 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1 0 0] D
-/Lm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 2 0 0 0] D
-/Rm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] D
-/EU [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0] D
-/NO f D
-/YY [[{()}{ h }][{ h }{()}][{()}{()}]] D
-/ZZ [[{ (July 2014) }{ Pn }][{ Pn }{ (July 2014) }][{ Ti }{ Ti }]] D
-/Ts EZ 0 get D
-/TU f D
-/Xp t D
-/AU f D
-/SN 0 D
-/Cf t D
-/Tp t D
-/Fe f D
-/TI 2 Ts mul D
-/Fm 14 D
-/xL 71 D
-/xR 71 D
-/yL 706 D
-/yR 706 D
-/Wl 471 F div D
-/Wr 471 F div D
-/hL 621 F div D
-/hR 621 F div D
-/FE {newpath Fm neg Fm M CP BB IW Fm add Fm L IW Fm add IL Fm add neg L CP BB
- Fm neg IL Fm add neg L closepath} D
-/LA {PM 0 eq{/IW Wl D /IL hL D}{/IW Wr D /IL hR D}ie /W IW D /LL W D /LS W D
- TU PM 0 eq and{IW 56 F div add SA{Sf div}if 0 translate}
- {PM 0 eq{xL yL}{xR yR}ie translate F SA{Sf mul}if dup scale
- CS CF FS Cf{CA CL get VC}if /Bb f D}ie 0 0 M
- TF not Tc or {Cf{gsave SA{1 Sf div dup scale}if Cb VC FE fill grestore}if}if}D
-/Pi 0 Ts mul D
-/SG [0.8 1 1] D
-/Ab 15 D
-/J 0 D
-/Tc t D
-/NH 6 D
-/Nf f D
-/Pa f D
-/LH 1.2 D
-/XR f D
-/Xr {/pN E D ( [p ) WB pN WB (] )WB} D
-/Db [16#FF 16#FF 16#FF] D
-/Dt [16#00 16#00 16#00] D
-/eA f D
-/Fi f D
-/bT f D
-/Lc t D
-/Dl [16#00 16#00 16#00] D
-/LX f D
-/Br 0.25 D
-/IA ([IMAGE]) D
-/DS {/PF f D()WB NL NP()pop RC ZF} D
-/Gb f D
-/Mb t D
-/Hc [16#00 16#00 16#00] D
-/Bl 3 D
-/MI -15.6 D
-/DX (DRAFT) D
-/Di 0 D
-/Tt 113.385826771654 D
-/Th { (
-) 2 Al()BR (
- ) 0 1 -1 H()4 FZ (C++/Tree Mapping) ES()EH (
- ) 0 1 -1 H()4 FZ (Getting Started Guide) ES()EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
-) Ea()BR (
- ) 0 P (Copyright © 2005-2014 CODE SYNTHESIS TOOLS CC) EP (
-
- ) 0 P (Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- ) R0 2 A (GNU Free
- Documentation License, version 1.2) EA (; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- ) EP (
-
- ) 0 P (This document is available in the following formats:
- ) R1 2 A (XHTML) EA (,
- ) R2 2 A (PDF) EA (, and
- ) R3 2 A (PostScript) EA (.) EP()} D
-/tH {()0 1 -1 H (Table of Contents) EH()} D
-/FD 2 D
-/Dy 2 D
-/cD [16#F0 16#F0 16#F0] D
-/FW 0.6 D
-/FU [16#00 16#00 16#00] D
-/ET {/RM f D /A0 3 D /PN SN D /OU t D /Ou t D /W IW D /LL W D D1
- Ms not TP and{Ip}if /TF f D} D
-
-%-- End of variable part --
-/MySymbol 10 dict dup begin
- /FontType 3 D /FontMatrix [.001 0 0 .001 0 0 ] D /FontBBox [25 -10 600 600] D
- /Encoding 256 array D 0 1 255{Encoding exch /.notdef put}for
- Encoding (e) 0 get /euro put
- /Metrics 2 dict D Metrics begin
- /.notdef 0 D
- /euro 651 D
- end
- /BBox 2 dict D BBox begin
- /.notdef [0 0 0 0] D
- /euro [25 -10 600 600] D
- end
- /CharacterDefs 2 dict D CharacterDefs begin
- /.notdef {} D
- /euro{newpath 114 600 moveto 631 600 lineto 464 200 lineto 573 200 lineto
- 573 0 lineto -94 0 lineto 31 300 lineto -10 300 lineto closepath clip
- 50 setlinewidth newpath 656 300 moveto 381 300 275 0 360 arc stroke
- -19 350 moveto 600 0 rlineto -19 250 moveto 600 0 rlineto stroke}d
- end
- /BuildChar{0 begin
- /char E D /fontdict E D /charname fontdict /Encoding get char get D
- fontdict begin
- Metrics charname get 0 BBox charname get aload pop setcachedevice
- CharacterDefs charname get exec
- end
- end}D
- /BuildChar load 0 3 dict put /UniqueID 1 D
-end
-definefont pop
-
-/Cd {aload length 2 idiv dup dict begin {D} repeat currentdict end} D
-/EX {EC cvx exec} D
-/DU {} d
-/BB {pop pop}d
-/ie {ifelse} d
-/E {exch} d
-/M {moveto} d
-/R {rmoveto} d
-/L {lineto} d
-/RL {rlineto} d
-/CP {currentpoint} d
-/SW {stringwidth} d
-/GI {getinterval} d
-/PI {putinterval} d
-/Sg {setgray} d
-/LW {setlinewidth} d
-/S {dup () ne OU and{0 Co R AT 3 eq LB and HF not and A1 0 ne A2 0 ne or and
- {A2 0 32 A1 0 6 -1 roll awidthshow}{show}ie 0 Co neg R}{pop}ie
- OU PH 3 eq or{/Ms t D}if} D
-/U {OU{gsave CP currentfont /FontInfo get /UnderlinePosition get
- 0 E currentfont /FontMatrix get dtransform E pop add newpath M dup SW pop
- CJ 0 RL stroke grestore}if} D
-/B {OU Br 0 gt and{CP Ts neg Ts .33 mul R gsave 0 Sg
- CP newpath Ts Br mul 0 360 arc closepath UI 2 mod 0 eq{stroke}{fill}ie
- grestore M CP E Ts Br 1 add mul sub E BB /Ms t D}if}D
-/NP {Ms TP not or PA and OU and{TP{OR}if f1{mF k2 /mF E D /YC 0 D}if
- TP TU not PM 0 eq or and{showpage}if DU Ip TE not{LA}if 0.6 LW
- /CI 0 D /TP t D /Hs f D /hl 6 D /Hv 6 D /HI hi D /Ms f D}if Bs XO BO M} D
-/Np {LE sub CP E pop gt PL 0 eq and{NP}if}D
-/Ip {/PN PN 1 add D /Pn RM{1}{4}ie PN Ns D /PM PN SN sub 2 mod D} D
-/GP {E dup 3 -1 roll get PN 1 add 2 mod get dup type /integertype eq
- {get 0 get}{E pop}ie}d
-/Fc {dup 2 GP exec SW pop /S1 E D dup 1 GP exec SW pop /S2 E D 0 GP exec SW
- pop /S3 E D S1 0 gt{S2 2 mul S1 add S3 2 mul S1 add 2 copy lt{E}if pop}{0}ie
- S2 S3 add 2 copy lt{E}if pop IW .9 mul div dup 1 gt{1 E div}{pop 1}ie}D
-/OR {Df{Sd}if tp not{gsave SA{1 Sf div dup scale}if Fe{Cf{FU VC}if FW LW
- 1 setlinejoin FE stroke}if /YO {60 F div dup 40 gt{pop 40}if}D /cs CS D
- /cf CF D /CF 0 D /pf PF D /PF f D /Fn FN D /At AT D /AT 0 D /FN EF Hf 1 add
- get D Fz Fs FS ZZ Fc Fz mul Fs FS EU Hf 1 add get dup type /arraytype eq
- Cf and{VC}{pop 0 Sg}ie IW IL neg YO sub M ZZ 1 GP exec dup SW pop neg 0 R Sh
- 0 IL neg YO sub M ZZ 0 GP exec Sh ZZ 2 GP exec dup SW pop IW E sub 2 div
- IL neg YO sub M Sh Fz Fs FS NO{/AW IW Pn SW pop sub D AW 2 div IL neg YO sub
- S1 0 gt S2 AW .45 mul gt or S3 AW .45 mul gt or{Fz 2 mul sub}if M Pn Sh}if
- EU Hf get dup type /arraytype eq Cf and{VC}{pop 0 Sg}ie YY Fc /FN EF Hf get D
- Hz mul HS FS IW YO M YY 1 GP exec dup SW pop neg 0 R Sh 0 YO M YY 0 GP exec Sh
- YY 2 GP exec dup SW pop IW E sub 2 div YO M Sh /FN Fn D /AT At D t Pb XO SZ
- SL get neg R /PF pf D grestore /CF 0 D cs cf FS}if}D
-/Sh {dup () ne{CP Hz 4 div sub BB show CP CS add BB}{pop}ie}D
-/Pb {/OU E D /Ou OU D /PB t D 0 0 M Ba{/Sa save D /BP t D /Fl t D RC /PL 0 D
- /PH 0 D /W IW D /LE IL .7 mul D /EO 0 D SI ZF /YA 0 D /BO 0 D /C1 () D
- BA 0 Ts neg R Bb{Xl Yl Xh Yh}if Bb CP Sa restore M
- {/Yh E D /Xh E D /Yl E D /Xl E D}if /Fl t D}if
- BL /OU t D /HM f D /Ou t D /PB f D} D
-/Bs {/BP Ba not D}D
-/reencodeISO {
- dup dup findfont dup length dict begin{1 index /FID ne{D}{pop pop}ie}forall
- /Encoding ISOLatin1Encoding D currentdict end definefont} D
-/ISOLatin1Encoding [
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
-/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash
-/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
-/less/equal/greater/question/at/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/bracketleft/backslash/bracketright
-/asciicircum/underscore/quoteleft/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/braceleft/bar/braceright/asciitilde
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar
-/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
-/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
-/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
-/guillemotright/onequarter/onehalf/threequarters/questiondown
-/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
-/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
-/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
-/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
-/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
-/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
-/yacute/thorn/ydieresis
-] D
-[128/backslash 129/parenleft 130/parenright 141/circumflex 142/tilde
-143/perthousand 144/dagger 145/daggerdbl 146/Ydieresis 147/scaron 148/Scaron
-149/oe 150/OE 151/guilsinglleft 152/guilsinglright 153/quotesinglbase
-154/quotedblbase 155/quotedblleft 156/quotedblright 157/endash 158/emdash
-159/trademark]
-aload length 2 idiv 1 1 3 -1 roll{pop ISOLatin1Encoding 3 1 roll put}for
-/colorimage where{pop}{
- /colorimage {
- pop pop /Pr E D {/Cv Pr D /Gr Cv length 3 idiv string D 0 1 Gr length 1 sub
- {Gr E dup /i E 3 mul D Cv i get 0.299 mul Cv i 1 add get 0.587 mul add
- Cv i 2 add get 0.114 mul add cvi put}for Gr} image} D
-}ie
-/pdfmark where{pop}{userdict /pdfmark /cleartomark load put}ie
-WF{FL{reencodeISO D}forall}{4 1 FL length 1 sub{FL E get reencodeISO D}for}ie
-/Symbol dup dup findfont dup length dict begin
- {1 index /FID ne{D}{pop pop}ie}forall /Encoding [Encoding aload pop]
- dup 128 /therefore put D currentdict end definefont D
-
-/SF {/CS E D SZ SL CS put FO SL FN put /YI CS LH neg mul D dup ST cvs ( ) join
- CS ST cvs join C1 E join ( NF ) join /C1 E D CS NF /Wf WF FN 0 gt or D
- /BW Wf{( ) SW pop}{0}ie D}D
-/NF {/cS E D /cF E D cF 0 ge{FL cF get}{cF -1 eq{/Symbol}{/MySymbol}ie}ie
- findfont cS scalefont setfont} D
-/FS {CF or /CF E D FR SL CF put CF CF 0 ge{FN 4 mul add}if E SF} D
-/PC {SH /BP f D fin not GL not and{NL}if /HM t D /LL LS D} D
-/BS {/TX E D Wf{/fin f D /CW 0 D /LK 0 D /SC 0 D
- /RT TX D {RT ( ) search{/NW E D pop /RT E D /WH NW SW pop D CW WH add LL gt
- {TX SC LK SC sub 1 sub NN GI GL{SH cF cS OC
- 2 copy cS ne E cF ne or{NF}{pop pop}ie}{PC /CW WH BW add D}ie
- /SC LK D}
- {GL{JC}if
- /CW CW WH add BW add D /HM t D}ie /GL f D /Ph f D
- /LK LK NW length 1 add add D}{pop exit}ie}loop
- /fin t D TX SC LK SC sub GI SH RT () ne{GL not{CC}if}if
- /LC TX length D /WH RT SW pop D CW WH add Hy{HC SW pop add}if LL gt
- {RT GL{SH cF cS OC 2 copy cS ne E cF ne or{NF}{pop pop}ie
- Hy{/Ph t D}if /LL LS D}{NL /LL LS D SH}ie}
- {RT PC Hy{CC}if /Ph Ph Hy or D}ie RT () ne{/GL t D /HM t D}if}
- {TX SW pop LL le{TX SH}{/NW () D 0 2 TX length 1 sub
- {/CW E D TX 0 CW GI dup SW pop LL gt{pop NW SH /HM t D NL/LL W XO sub MR sub D
- /CW CW 2 sub NN D /TX TX CW TX length CW sub GI D TX BS exit}
- {/NW E D}ie}for}ie}ie /HM t D}D
-/CC {C0 length 0 gt{JC}if /C0 [C1 L1 YA YB Mf NS NB TB AF Bw] D
- /C1 () D /L0 L1 D /YA 0 D /YB 0 D /Mf 0 D /NS 0 D /NB 0 D}D
-/JC {C0 aload length 0 gt{pop pop pop NB add /NB E D NS add /NS E D
- dup Mf gt{/Mf E D}{pop}ie dup YB gt{/YB E D}{pop}ie
- dup YA gt{/YA E D}{pop}ie pop C1 join /C1 E D /C0 [] D}if}D
-/OC {C0 length 0 gt{C1 L1 L0 sub YA YB Mf NS NB TB AF Bw GL C0 aload pop
- /Bw E D /AF E D /TB E D /NB E D /NS E D /Mf E D /YB E D /YA E D /C0 [] D
- /L1 E D /C1 E D Ph{HC SH}if NL /GL E D /Bw E D /AF E D /TB E D /NB E D /NS E D
- /Mf E D /YB E D /YA E D /L1 E D /LL W L1 sub XO sub MR sub WH sub D /CW 0 D
- C1 E join /C1 E D}if}D
-/BT {/LB t D dup length string copy RS dup dup () ne E ( ) ne and
- {/CI 0 D /LS LL D /LL W L1 sub XO sub MR sub D BS}
- {dup ( ) eq{/GL f D}if dup () eq L1 0 eq or{pop}{SH /BP f D /Ph f D}ie}ie
- /LB f D} D
-/BL {CP E pop XO E M} D
-/NL {JC /GL f D /SK W XO sub MR sub L1 sub TB{Bw add}if D
- /YA LF{Mf HM Fl not and PF or{LH mul}if}{0 /LF t D}ie YA 2 copy lt{E}if pop D
- C1 () ne{/FB YB Mf SA{Sf mul}if 4 div 2 copy lt{E}if pop D}if Fl{/Ya YA D}if
- CP E pop YA sub YB sub LE neg lt Fl not and PB not and{NP}if NT TL BL
- OU PF not and PB or{/RE L1 TB{Bw sub}if
- W XO sub MR sub div YA YB add LE BO add div 2 copy lt{E}if pop D
- RE 1 gt{BL 1 RE div dup scale}if}if
- AT 2 le{SK AT mul 2 div YA neg R}if
- AT 3 eq{0 YA neg R TB{/NB NB 1 sub D /NS NS 1 sub D}if /NB NB 1 sub NN D
- /A3 NS 6 mul NB add D NS NB add 0 eq
- {/A1 0 D /A2 0 D}
- {NS 0 eq{/A1 SK NB div dup J gt{pop 0}if D /A2 0 D}{J A3 mul SK lt
- {/A1 J D /A2 SK J NB mul sub NS div dup Ab gt{/A1 0 D pop 0}if D}
- {/A1 SK A3 div D /A2 A1 6 mul D}ie}ie}ie /A1 A1 NN D /A2 A2 NN D}if
- AT 4 eq{0 YA neg R PH 2 le{PD 0 lt{/PD L1 D}if PD M1 gt{/M1 PD D}if
- L1 PD sub M2 gt{/M2 L1 PD sub D}if}{DV ID 1 sub get 0 ge{Lo 0 R}if}ie}if
- F0 cF ne Cs cS ne or{F0 Cs NF}if
- /ms Ms D /Ms f D CP FB sub
- C1 cvx exec XO EO sub L1 add TB{BW sub}if dup LM gt{/LM E D}{pop}ie
- PH 0 eq PH 4 eq or Ms and{HF not{/PO t D /AH t D}if
- BB CP YA add E AT 3 eq LB and{A1 sub}if TB{BW sub}if E BB}
- {pop pop}ie Ms HM PH 3 eq and or{/BP f D /Fl f D}if
- /Lo 0 D /L1 0 D /F0 cF D /Cs cS D BP not{0 YB NN neg R}if
- OU f1 and mF not and{k2 /f1 f D}if
- OU PF not and PB or{RE 1 gt{RE dup scale}if}if /Ms ms Ms or D
- /C1 AF{(Cp )}{()}ie D /YA 0 D /YB 0 D BL
- AT 4 eq LB not and PH 3 ge and
- {ID DV length lt{DV ID get dup 0 ge{DO E sub /Lo E D /L1 Lo D}{pop}ie
- /ID ID 1 add D}if}if /T t D CD{/LN LN 1 add D PD}if
- /PD -1 D /NS 0 D /NB 0 D /TB f D /Ph f D /Mf 0 D /HM f D} D
-/RS {/TM E D /CN 0 D TM{10 eq{TM CN ( ) PI}if /CN CN 1 add D}forall
- /CN 0 D /BK HM EN and{0}{1}ie D TM
- {dup 32 ne{TM CN 3 2 roll put /CN CN 1 add D /BK 0 D}
- {pop BK 0 eq{TM CN 32 put /CN CN 1 add D}if /BK 1 D}ie}forall
- TM 0 CN GI dup dup () ne E ( ) ne and
- {dup CN 1 sub get 32 eq{/EN f D}{/EN t D}ie}if} D
-/join {2 copy length E length add string dup 4 2 roll 2 index 0 3 index
- PI E length E PI}d
-/WR {(\n) search{dup () ne BP not or
- {Li 4 le CP E pop YI Li mul add LE add 0 lt and PL 0 eq and{NP}if
- SH NL pop /Li Li 1 sub D WR}{pop pop WR}ie}{SH}ie /CI 0 D /BP f D} D
-/SH {dup dup () ne E ( ) ne and PF or CS Mf gt and{/Mf CS D}if
- T not Wf and{( ) E join /T t D}if dup BP{/MF CS D}if
- AT 3 eq{2 copy length dup 0 gt{/NB E NB add D
- {( ) search{/NS NS 1 add D pop pop}{pop exit}ie}loop}{pop pop}ie}if
- CD PD 0 lt and{dup DC search{SW pop /PD E L1 add D pop pop}{pop}ie}if
- 0 Np dup SW pop L1 add /L1 E D dup () ne
- {C1 (\() join E join (\)) join AU AF and UF or Wf and{( U ) join}if
- sF{( s ) join}if ( S ) join
- /C1 E D dup length 1 sub get 32 eq /TB E D /Bw BW D}{pop pop}ie} D
-/BG {AI LG BC add add 0 eq} D
-/ON {OU{Ty AR AI NN get dup 1 add Ln Ns Ty 2 mod 0 eq{(. )}{(\) )}ie join
- dup SW pop neg 0 R CP E 0 lt{0 E M}{pop}ie CP BB show /Ms t D}if} D
-/Ln {AR AI 3 -1 roll put}D
-/SP {dup CI lt BP not and{dup CI sub 0 E R /CI E D}{pop}ie} D
-/BN {PF{WR /HM f D}{BT NL}ie} D
-/NN {dup 0 lt{pop 0}if} D
-/h {(h) HI ST cvs join cvx exec dup 1 get E Nf{0 get E join}{pop}ie} D
-/H {/fn FN D /Hi E 1 add D 1 sub /HL E D /H2 HL 2 add D /GS EZ H2 get D
- E Tm H2 get GS mul BE dup 0 gt{1 sub}{pop EG H2 get dup 0 lt{pop AT}if}ie NA
- WW Np /SL SL 1 add D /FN EF H2 get D GS Ey H2 get FS
- EU H2 get Sc Hs not HL Hl lt and Hs HL hl lt and or Hi 0 eq or
- {/HI Hi D /Hs t D /hl HL D /Hv HL D}if HL Hl lt{/hi Hi D}if
- Nf HI 0 gt and{(h) Hi ST cvs join cvx exec 0 get WB}if
- /HF t D /AH f D /PO f D} D
-/EH {Bm H2 get GS mul BE OA /SL SL 1 sub NN D /CF 0 D /FN fn D
- SZ SL get FR SL get FS /HF f D /GS Ts D ()Ec} D
-/P {E PF{WR}{PO{EP}{BN}ie Ts 4 mul Np AE not{Tm 0 get Ts mul neg SP}if
- dup 0 ge AH and{Pi Pd}if}ie 1 sub dup 0 lt{pop AV AL get}if /AT E D /PO t D} D
-/EP {PF{WR}{BN Ts 4 mul Np}ie AE not{Bm 0 get Ts mul neg SP}if
- /AT AV AL get D /PO f D} D
-/BE {E PO{EP}{BN}ie Ts 4 mul Np neg SP} D
-/HR {/Aw W EO sub D /RW E dup 0 gt{Aw mul}{neg}ie dup Aw gt{pop Aw}if D /RZ E D
- E BN Ts neg SP 1 sub 2 div Aw RW sub mul EO add CP E pop M PF{0 Ps neg R}if
- 0 Np OU{gsave RZ LW Cf{Hc VC}{0 Sg}ie CP BB RW 0 RL CP BB stroke grestore}if
- /CI 0 D /BP f D PF not{Ts neg SP}if /Ms t D} D
-/AD {I NL EG 14 get dup 0 lt{pop AT}if NA /AE t D Tm 14 get Ts mul neg SP
- Cf{EU 14 get dup -1 eq{pop CA CL get}if Sc}if} D
-/DA {BN ()ES OA /AE f D ()Ec Bm 14 get Ts mul neg SP} D
-/PR {/MW E D /Li E D Tm 1 get Ps mul BE 0 NA /FN Fp D /PF t D SI /SL SL 1 add D
- /CF 0 D Ps CS mul Ts div MW WC mul CS mul Ts div dup LL gt PL 0 eq and
- {LL div div}{pop}ie Ey 1 get FS CP E pop LE add YI neg div cvi dup Li lt
- AH and{4 lt YI Li mul 5 mul LE add 0 gt or PL 0 eq and{NP}if}{pop}ie
- EU 1 get Sc /GS Ps D}D
-/RP {WR NL () /PF f D SI /FN 0 D ES Bm 1 get Ps mul neg SP OA /GS Ts D} D
-/SI {/XO Lm 15 get BC NN mul Lm 16 get AI UI sub NN mul add
- Lm 17 get UI NN mul add Lm 20 get LG NN mul add Ts mul
- PF{Lm 1 get Ps mul add}if EO add D
- /MR Rm 15 get BC NN mul Rm 16 get AI UI sub NN mul add
- Rm 17 get UI NN mul add Rm 20 get LG NN mul add Ts mul
- PF{Rm 1 get Ps mul add}if D /LL W XO sub MR sub D} D
-/DT {/cC E D BN /LG LG 1 sub D SI /LG LG 1 add D WW 2 div Np BL} D
-/DD {WB Cc 0 eq cC 0 eq and L1 0 eq or Lm 20 get Ts mul L1 sub TB{BW add}if
- Ts 2 div lt or NL /LF E D SI BL /cC 0 D} D
-/DL {Dc LG Cc put /Cc E D BG{Tm 18 get Ts mul BE}{BN}ie /LG LG 1 add D BL} D
-/LD {BN LG 0 gt{/LG LG 1 sub D}if /Cc Dc LG get D SI
- BG{()Bm 18 get Ts mul BE}if BL} D
-/UL {BG{Tm 17 get Ts mul BE}{BN}ie NR AI NN 0 put /UI UI 1 add D
- /AI AI 1 add D SI BL} D
-/LU {BN /UI UI 1 sub D /AI AI 1 sub D SI BG{()Bm 17 get Ts mul BE}if BL} D
-/OL {E BG{Tm 16 get Ts mul BE}{BN}ie TR AI NN Ty put /Ty E D NR AI NN 1 put
- /AI AI 1 add D SI BL 1 Ln} D
-/LO {BN /AI AI 1 sub D /Ty TR AI get D SI BG{()Bm 16 get Ts mul BE}if BL} D
-/LI {E BN -1 SP /BP f D /CI 0 D 0 Np NR AI 1 sub NN get 1 eq
- {dup dup 0 gt E 4 le and{/Ty E D}{pop}ie
- /L1 L1 Ty AR AI NN get Ns SW pop XO sub dup 0 lt{pop 0}if add D ( ON )}
- {pop ( B )}ie C1 E join /C1 E D CS Mf gt{/Mf CS D}if BL} D
-/BQ {Tm 15 get Ts mul BE /BC BC 1 add D SI BL} D
-/QB {Bm 15 get Ts mul BE /BC BC 1 sub D SI BL} D
-/Al {E EP 1 sub dup 0 lt{pop AV AL get}if NA} D
-/Ea {EP OA} D
-/WB {PF{WR}{BT}ie} D
-/F1 {WB /FN 0 D CS 0 FS} D
-/F2 {WB /FN WI D CS 0 FS} D
-/HY {/Hy t D WB /Hy f D} D
-/YH {WB} D
-/A {/LT E D LT 1 eq{/RN E D}if /Lh E D WB /C1 C1 ( Cp ) join D
- Lc AF not and{Cl Sc}if /AF t D} D
-/EA {Lc AF and{Ec}{WB}ie TL Pa AF and Lh 0 ne and
- {( \() Lh join (\)) join /AF f D WB}if /AF f D} D
-/TL {C1 ( Tl ) apa /C1 E D} d
-/apa {AF OU and Lh 0 ne LT 1 eq or and{LT 1 eq{RN ( /) E ST cvs join}
- {(\() Lh join (\)) join}ie E join join}{pop}ie} d
-/Cp {/Xc CP /Yc E D D} D
-/SS {Cf{dup 0 ge{EU E get dup -1 eq{pop CA CL get}if}{pop CA CL get}ie Sc}
- {pop}ie SZ SL get /SL SL 1 add D} D
-/I {WB 8 SS 1 FS} D
-/EM {WB 8 SS /CF CF 1 xor D 0 FS} D
-/BD {WB 9 SS 2 FS} D
-/TT {WB 10 SS /FN Fp D 0 FS} D
-/KB {WB 11 SS /FN Fp D 2 FS} D
-/CT {WB 12 SS 1 FS} D
-/SM {WB 13 SS /FN Fp D 0 FS} D
-/Q {/QL QL 1 add D QO QL 2 mod get La get join WB} D
-/EQ {QC QL 2 mod get La get join WB /QL QL 1 sub D} D
-/RO {WB -1 SS /CF 0 D 0 FS} D
-/SY {WB -1 SS -1 FS} D
-/MY {WB -1 SS -2 FS} D
-/ES {WB /SL SL 1 sub NN D /CF 0 D /FN FO SL get D SZ SL get FR SL get FS ()Ec}D
-/FZ {3 sub 1.2 E exp GS mul E WB TL /C1 C1 ( Cp ) join D /SL SL 1 add D 0 FS} D
-/Ef {WB TL ()ES /C1 C1 ( Cp ) join D} D
-/BZ {dup /Bf E D FZ}D
-/Sc {dup -1 ne Cf and{/CL CL 1 add D dup 0 eq{pop [0 0 0]}if
- dup CA E CL E put VS ( VC ) join C1 E join /C1 E D}{pop}ie} D
-/Ec {WB Cf{/CL CL 1 sub NN D CA CL get VS ( VC ) join C1 E join /C1 E D}if} D
-/VS {dup type /arraytype eq{([) E {ST cvs join ( ) join}forall (]) join}if} D
-/VC {{255 div}forall setrgbcolor} D
-/Sl {dup type /integertype ne{Ds}if /La E D WB}d
-/UN {WB /UF t D} D
-/NU {WB /UF f D} D
-/SE {WB /sF t D} D
-/XE {WB /sF f D} D
-/sM {/C1 C1 ( k1 ) join D}d
-/eM {/C1 C1 ( k2 ) join D}d
-/k1 {/YC CP E pop Ts add D /mF t D /f1 t D}d
-/k2 {gsave 3 LW -9 CP E pop Ts 0.2 mul sub M -9 YC L stroke grestore /mF f D}d
-/Ac {/AC E D WB}d
-/Ca {eA{( \()join AC join(\) )join}if WB}d
-/s {OU{gsave 0 CS .25 mul R dup SW pop CJ 0 RL stroke grestore}if}D
-/CJ {AT 3 eq LB and{E dup dup length 1 sub A1 mul E
- {( ) search{pop pop E A2 add E}{pop exit}ie}loop 3 -1 roll add
- W CP pop sub 2 copy gt{E}if pop}if}D
-/So {/Co E D} D
-/SO {C1 Yo ST cvs join ( So ) join /C1 E D (j) SW pop 2 div Pd} D
-/Se {E WB CS E div Pd}D
-/Pd {dup type /stringtype eq{SW pop}if dup /L1 E L1 add D
- ST cvs ( 0 R ) join C1 E join /C1 E D} D
-/Sp {0.35 CO} D
-/Sb {-0.2 CO} D
-/CO {OV Io Yo put /Yo E CS mul Yo add D /Io Io 1 add D -1.5 Io mul 3 add FZ SO
- CS Yo add dup YA gt{/YA E D}{pop}ie
- Yo neg dup YB gt{/YB E D}{pop}ie} D
-/Es {ES /Io Io 1 sub NN D /Yo OV Io get D SO} D
-/SB {/N2 0 D 0 1 NI{/N E D{IX N2 get 0 lt{/N2 N2 1 add D}{exit}ie}loop
- /K WS N get FC N get mul D /NY AY N2 get D /BV NY array D
- 0 1 NY 1 sub{/TM K string D currentfile TM readhexstring pop pop BV E TM put}
- for BM N BV put /N2 N2 1 add D}for} D
-/IC [{/MA E D /MB 0 D}{2 div /MA E D /MB MA D}{/MB E CS sub D /MA CS D}
- {pop /MA YS AB mul D /MB 1 AB sub YS mul D}{pop /MA 0 D /MB 0 D}] D
-/IP {BV N get /N N 1 add D} D
-/II {/K E D IX K get 0 lt{/EC E D}if /TY E D
- TY 4 eq{/Y E D /X E D}if TY 3 eq{/AB E D}if
- /XW AX K get D /YW AY K get D /IS SG IT K get get D /XS XW IS mul D
- /YS YW IS mul D YS IC TY get exec /MA MA Fl not{3 add}if D} D
-/IM {II /ty TY D /xs XS D /ys YS D /ya YA D /yb YB D /ma MA D /mb MB D /k K D
- /ec EC D /BP f D /CI 0 D WB TL L1 xs add dup XO add MR add W gt
- {pop /ma ma Fl{3 add}if D NL /YA ma D /YB mb D /YS ys D /L1 xs D}
- {/L1 E D ma YA gt{/YA ma D}if mb YB gt{/YB mb D}if}ie /TB f D
- OU{CP E pop YS sub LE neg lt Fl not and PB not and{NP /YA ma D /YB mb D}if
- /BP f D ty ST cvs ( ) join IX k get 0 lt{(\() join ec join (\) ) join}if
- k ST cvs join ty 3 eq{AB ST cvs ( ) join E join}if
- ty 4 eq{X ST cvs ( ) join Y ST cvs join ( ) join E join}if C1 E join
- ( DI ) join FP 2 eq FP 1 eq AF and or{( FM ) join}if
- ( Il Cp ) apa /C1 E D /EN f D}if /HM t D /T f D} D
-/DI {II /Xc CP /Yc E D D /YN YW neg D /HM t D /CI 0 D /K2 IX K get D gsave
- TY 4 eq{OX X IS mul add OY FY add YS sub Y IS mul sub}
- {/FY YS D CP MB sub 2 copy /OY E D /OX E D}ie
- translate K2 0 ge{/DP AZ K2 get D /BV BM K2 get D XS YS scale /N 0 D XW YW DP
- [XW 0 0 YN 0 YW] {IP} FC K2 get 1 eq{image}{f 3 colorimage}ie}
- {EX}ie grestore XS 0 R /Ms t D} D
-/FM {gsave 0 Sg CP MB sub translate XS neg 0 M 0 YS RL XS 0 RL 0 YS neg RL
- XS neg 0 RL stroke grestore} D
-/NA {/AT E D /AL AL 1 add D AV AL AT put} D
-/OA {AL 0 gt{/AL AL 1 sub D /AT AV AL get D}if} D
-/D1 {/BR {CP E pop E BN Mb{CP E pop eq{0 YI R}if}{pop}ie} D
- /Sn {OU{C1 E ST cvs join ( Ld ) join /C1 E D}{pop}ie} D} D
-/D1 {/BR {BN} D /Sn {OU {C1 E ST cvs join ( Ld ) join /C1 E D} {pop} ie} D} D
-/TC {/TF t D /ML 0 D HN{SW pop dup ML gt{/ML E D}{pop}ie}forall NP /RM RM not D
- RC /OU Tc D Ep /PN 0 D Ms not TP and{Ip}if /W IW ML sub Ts sub D
- /A0 0 D TH{/BR {( ) join BT} D /Sn {pop} D /Au () D}if} D
-/TN {0 eq{E EA PF HF or not XR and{HN E get Xr}{pop}ie}
- {OU{Tn 0 ge{() BN}if /Tn E D}{pop}ie WB}ie} D
-/NT {OU LB not and Tn 0 ge and{PL 0 eq{Ms not{CS CF FS}if CP dup
- /y E YA sub D W 9 sub CS -1.8 mul XO L1 add 2 add{y M (.) show}for
- HN Tn get dup SW pop IW E sub y M show CP BB M}if /Tn -1 D}if} D
-/Ld {/DN E D HN DN Pn put [/View [/XYZ -4 Fl{PS}{CP YA add US E pop}ie null]
- /Dest DN ST cvs cvn /DEST pdfmark} D
-/C {ND 1 eq{1 sub}if TI mul /XO E D NL Nf not{pop()}if 0 3 -1 roll 1 A} D
-/OP {BP not{NP}if PN 2 mod 0 eq{/Ms t D NP}if}D
-/Ep {Xp PN 2 mod 0 eq and OU and{/Pn (-) D showpage /PM 1 D LA}if}D
-/Dg [73 86 88 76 67 68 77] D
-/Rd [0 [1 1 0][2 1 0][3 1 0][2 1 1][1 1 1][2 2 1][3 3 1][4 4 1][2 1 2]] D
-/Ns {/m E D /c E 32 mul D /j m 1000 idiv D /p j 12 add string D
- c 96 le m 0 gt and{c 32 le {/i 0 D /d 77 D /l 100 D /m m j 1000 mul sub D
- j -1 1 {pop p i d c add put /i i 1 add D}for
- 4 -2 0 {/j E D /n m l idiv D /m m n l mul sub D /d Dg j get D
- n 0 gt {/x Rd n get D x 0 get -1 1 {pop p i d c add put /i i 1 add D}for
- p i x 1 get sub Dg x 2 get j add get c add put}if /l l 10 idiv D
- }for p 0 i GI}
- {/i ST length 1 sub D m {1 sub dup 0 ge{dup 26 mod c add 1 add
- ST i 3 -1 roll put 26 idiv dup 0 eq{pop exit}if}if /i i 1 sub D}loop
- ST i ST length i sub GI}ie}
- {m p cvs}ie} D
-/US {matrix currentmatrix matrix defaultmatrix matrix invertmatrix
- matrix concatmatrix transform} D
-/GB {Gb{US}if}D
-/Tl {/Rn E D Xc CP pop ne{
- [/Rect [Xc 1 sub Yc cS 0.25 mul sub GB CP E 1 add E cS 0.85 mul add GB]
- /Subtype /Link /Border [0 0 Cf Lc and LX and AU or{0}{1}ie] Rn type
- /nametype eq {/Dest Rn}{/Action [/Subtype /URI /URI Rn] Cd}ie
- /ANN pdfmark}if} D
-/Il {/Rn E D [/Rect [Xc Yc GB Xc XS add Yc YS add GB] /Subtype /Link
- /Border [0 0 0] Rn type /nametype eq{/Dest Rn}
- {/Action [/Subtype /URI /URI Rn] Cd}ie /ANN pdfmark} D
-/XP {[{/Z Bz 2 div D Z 0 R Z Z RL Z neg Z RL Z neg Z neg RL Z Z neg RL
- Fi cH 1 eq and{fill}if} {Bz 0 RL 0 Bz RL Bz neg 0 RL 0 Bz neg RL
- Fi cH 1 eq and{fill}if} {0 -5 R Bz 0 RL 0 21 RL Bz neg 0 RL 0 -21 RL}]} D
-/MS {/Sm E D WB}D
-/O {BN()0 Sm BX} D
-/BX {/Bt E D Bt 2 lt{/Ch E D CS 0.8 mul}{11 mul}ie W XO sub MR sub
- 2 copy gt{E}if pop /HZ E D Bt 2 eq{Fi not{pop()}if ( )E join /Ft E D TT
- /PF t D /MW 1 D /Li 1 D /Fw Ft SW pop D Fw HZ gt{/HZ Fw 8 add D}if
- HZ ST cvs( )join}{WB Ch ST cvs( )join}ie L1 HZ add XO add MR add W gt{NL}if
- Bt 2 eq{Ft ES Fw neg HM{CS sub}if Pd}if Bt ST cvs join( Bx )join
- Bt 2 eq HM and{CS Pd}if C1 E join /C1 E D /L1 L1 HZ add D /T f D
- ( ) Pd /PF f D Bt 2 lt{YA CS .8 mul lt{/YA CS .8 mul D}if}
- {YB 5 lt{/YB 5 D}if YA 21 lt{/YA 21 D}if}ie /CI 0 D} D
-/Bx {dup 2 eq{E /Bz E D}{E /cH E D /Bz CS .8 mul D}ie
- OU {gsave 0 Sg XP E get exec stroke grestore}{pop}ie Bz 0 R /Ms t D}D
-/SD {FD 4 mul Dy add DZ NF newpath 0 0 M DX t charpath pathbbox
- 3 -1 roll sub /DY E D E dup /X1 E D sub WM mul WX DY mul add WM DG mul E div
- /DF E D /DR WX DF mul DY mul WM div 2 div D} d
-/Sd {gsave 0 IL Di mul neg translate IL IW atan Di 0 eq{neg}if rotate
- FD 4 mul Dy add DZ NF DR X1 sub DY 2 div neg M cD VC DX show grestore} d
-/Pt {/tp t D Tp{NP /Pn (TP) D 0 Tt neg R Th BN NP Ep ET RC ZF}if /tp f D} D
-/RC {/AI 0 D /LG 0 D /BC 0 D /UI 0 D /PF f D /Cc 0 D /cC 0 D /Dc 10 array D
- /NR [0 1 9{pop 0}for] D /La Ds D /AR 10 array D /TR 10 array D /AV 30 array D
- SI /AL -1 D /AT A0 D AT NA /OV 9 array D /Yo 0 D /Co 0 D /Io 0 D /Hy f D
- /Ph f D /CL -1 D Ct Sc}D
-/ZF {/FR [0 1 30{pop 0}for] D /SZ [0 1 30{pop 0}for] D /FO [0 1 30{pop 0}for] D
- /SL 0 D /CF 0 D /FN 0 D 0 Ts SF}D
-/QO [[(\234)(\233)(\253\240)(\232)(\273)(\253)][(')(`)(\253\240)(\231)(\273)(\253)]] D
-/QC [[(\234)(\234)(\240\273)(\233)(\253)(\273)][(')(')(\240\273)(`)(\253)(\273)]] D
-/Hf EF length 2 sub D
-/Hz EZ Hf get D
-/HS Ey Hf get D
-/Fz EZ Hf 1 add get D
-/Fs Ey Hf 1 add get D
-/LE IL D
-/Ps EZ 1 get D
-/Fp EF 1 get D
-/XO 0 D
-/YI 0 D
-/CI 0 D
-/FP 0 D
-/WW Ts 7 mul D
-/Mf 0 D
-/YA 0 D
-/YB 0 D
-/Cs Ts D
-/GS Ts D
-/F0 0 D
-/NS 0 D
-/NB 0 D
-/N 0 D
-/C0 [] D
-/C1 () D
-/Lo 0 D
-/L1 0 D
-/LM 0 D
-/PH 0 D
-/EC 0 D
-/Lh 0 D
-/LT 0 D
-/CH 1 string D
-/ST 16 string D
-/CA 9 array D
-/HC (\255) D
-/HM f D
-/PF f D
-/EN f D
-/TB f D
-/UF f D
-/sF f D
-/AE f D
-/AF f D
-/BP t D
-/CD f D
-/PA t D
-/GL f D
-/T t D
-/HF f D
-/AH f D
-/SA f D
-/PB f D
-/f1 f D
-/mF f D
-/OX 0 D
-/OY 0 D
-/FY 0 D
-/EO 0 D
-/FB 0 D
-/PL 0 D
-/Bw 0 D
-/PD -1 D
-/TP f D
-/tp f D
-/TH t D
-/Ty 4 D
-/Tn -1 D
-/Fl t D
-/LB t D
-/PM 1 D
-/Ms f D
-/Ba f D
-/Bb f D
-/Hl 3 D
-/hl 6 D
-/Hv 6 D
-/Hs f D
-/HI 0 D
-/hi 0 D
-/PO t D
-/TE f D
-/LF t D
-/BO 0 D
-/Sm 1 D
-/Bf 3 D
-/A1 0 D
-/A2 0 D
-/Ds 1 D
-/QL -1 D
-/Cb Db D
-/Ct Dt D
-/Cl Dl D
-[/Creator (html2ps version 1.0 beta7) /Author () /Keywords (xsd, xml, schema, c++, mapping, data, binding, parsing, serialization, validation) /Subject ()
- /Title (C++/Tree Mapping Getting Started Guide) /DOCINFO pdfmark
-/ND 1 D
-/HN [(1) (1) (1) (1) (1) (1) (1) (1) (2) (3) (3) (5) (7) (7) (8) (11) (13) (15)
-(16) (16) (16) (17) (17) (18) (20) (23) (24) (26) (29) (??) (32) (33) (35)
-(36) (37) (38) (1) (1) (1) (1) (1) (2) (3) (3) (5) (7) (7) (8) (11) (13)
-(15) (16) (16) (16) (17) (17) (18) (20) (23) (24) (26) (29) (32) (33) (35)
-(36) (37) (38)] D
-/h0 [()(Table of Contents)] D
-/h1 [(1\240\240)(Preface)] D
-/h2 [(1.1\240\240)(About This Document)] D
-/h3 [(1.2\240\240)(More Information)] D
-/h4 [(2\240\240)(1 Introduction)] D
-/h5 [(2.1\240\240)(1.1 Mapping Overview)] D
-/h6 [(2.2\240\240)(1.2 Benefits)] D
-/h7 [(3\240\240)(2 Hello World Example)] D
-/h8 [(3.1\240\240)(2.1 Writing XML Document and Schema)] D
-/h9 [(3.2\240\240)(2.2 Translating Schema to C++)] D
-/h10 [(3.3\240\240)(2.3 Implementing Application Logic)] D
-/h11 [(3.4\240\240)(2.4 Compiling and Running)] D
-/h12 [(3.5\240\240)(2.5 Adding Serialization)] D
-/h13 [(3.6\240\240)(2.6 Selecting Naming Convention)] D
-/h14 [(3.7\240\240)(2.7 Generating Documentation)] D
-/h15 [(4\240\240)(3 Overall Mapping Configuration)] D
-/h16 [(4.1\240\240)(3.1 C++ Standard)] D
-/h17 [(4.2\240\240)(3.2 Character Type and Encoding)] D
-/h18 [(4.3\240\240)(3.3 Support for Polymorphism)] D
-/h19 [(4.4\240\240)(3.4 Namespace Mapping)] D
-/h20 [(4.5\240\240)(3.5 Thread Safety)] D
-/h21 [(5\240\240)(4 Working with Object Models)] D
-/h22 [(5.1\240\240)(4.1 Attribute and Element Cardinalities)] D
-/h23 [(5.2\240\240)(4.2 Accessing the Object Model)] D
-/h24 [(5.3\240\240)(4.3 Modifying the Object Model)] D
-/h25 [(5.4\240\240)(4.4 Creating the Object Model from Scratch)] D
-/h26 [(5.5\240\240)(4.5 Mapping for the Built-in XML Schema Types)] D
-/h27 [(6\240\240)(5 Parsing)] D
-/h28 [(6.1\240\240)(5.1 XML Schema Validation and Searching)] D
-/h29 [(6.2\240\240)(5.2 Error Handling)] D
-/h30 [(7\240\240)(6 Serialization)] D
-/h31 [(7.1\240\240)(6.1 Namespace and Schema Information)] D
-/h32 [(7.2\240\240)(6.2 Error Handling)] D
-/Hr [36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
-58 59 60 61 62 63 64 65 66 67]D
-/HV [1 2 2 1 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 1 2 2 1 2 2]D
-/Cn [2 0 0 2 0 0 7 0 0 0 0 0 0 0 5 0 0 0 0 0 5 0 0 0 0 0 2 0 0 2 0 0]D
-Hr length 0 gt{[/PageMode /UseOutlines /DOCVIEW pdfmark}if
-/Hn 1 D
-0 1 Hr length 1 sub{
- /Bn E D [Cn Bn get dup 0 gt{/Count E HV Bn get Bl ge{neg}if}{pop}ie
- /Dest Hr Bn get dup abs ST cvs cvn E 0 ge{(h)Hn ST cvs join cvx exec
- dup 1 get E Nf{0 get E join}{pop}ie /Hn Hn 1 add D}{()}ie
- /Title E dup length 255 gt{0 255 getinterval}if /OUT pdfmark}for
-ZF /FN Fp D Ps 0 FS /WC Wf{( )}{<A1A1>}ie SW pop D
-ET RC ZF
-/Df f D
-/R0 (http://www.codesynthesis.com/licenses/fdl-1.2.txt) D
-/R1 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/index.xhtml) D
-/R2 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-parser-guide.pdf) D
-/R3 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-parser-guide.ps) D
-/R1 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/) D
-/R2 (http://wiki.codesynthesis.com/Tree/Customization_guide) D
-/R3 (http://wiki.codesynthesis.com/Tree/FAQ) D
-/R4 (http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml) D
-/R5 (http://www.codesynthesis.com/mailman/listinfo/xsd-users) D
-/R6 (http://www.codesynthesis.com/pipermail/xsd-users/) D
-/R7 (http://www.w3.org/TR/xmlschema-0/) D
-/R8 (http://www.doxygen.org/) D
-/R9 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/hello/html/annotated.html) D
-/R10 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.11) D
-/R11 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8.4) D
-/R12 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8) D
-/R13 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.5) D
-/R14 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.9) D
-/R15 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#3) D
-/R16 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#3.3) D
-/R17 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#4) D
-/R18 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#4.4) D
-/TS {
- tables E get /table E D
- table aload pop /rdesc E D /cdesc E D /tdesc E D
- tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
- /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
- /flow E D /clear E D /tclass E D pop pop
- /w W D /eps 0.1 D /OU f D /PL 1 D
- /FN EF 21 get D EZ 21 get Ey 21 get FS
- 0 1 1{
- /pass E D
- 0 1 nrow{
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D pop pop pop
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- pass 0 eq cspan 1 eq and pass 1 eq cspan 1 gt and or{
- /W 1e5 D /LL W D /PH 1 D
- ctype 1 eq{() BD}if
- RC align NA
- AT 4 eq{/CD t D /DC dp D /LN 0 D /M1 0 D /M2 0 D}{/CD f D}ie
- 0 0 M /LM 0 D proc exec BN
- AT 4 eq{
- LN array astore cell 15 3 -1 roll put
- cdesc icol get dup dup 5 get M1 lt{5 M1 put}{5 get /M1 E D}ie
- dup 6 get M2 lt{6 M2 put}{6 get /M2 E D}ie
- /LM M1 M2 add D
- }if
- /CD f D
- ang 0 ne{/LM CP E pop neg D}if
- /thiswid LM left add right add eps add D
- /oldmin 0 D /oldmax 0 D
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 2 get /oldmax E oldmax add D
- 1 get /oldmin E oldmin add D
- }for
- thiswid oldmax ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 2 E 2 get oldmax 0 eq
- {pop thiswid cspan div}{thiswid mul oldmax div}ie
- put
- }for
- }if
- nowrap 1 eq{
- thiswid oldmin ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 1 E 1 get oldmin 0 eq
- {pop thiswid cspan div}{thiswid mul oldmin div}ie
- put
- }for
- }if
- }{
- /W 0 D /LL W D /PH 2 D
- ctype 1 eq{() ES () BD}if
- 0 0 M /LM 0 D RC proc exec BN
- /thiswid LM left add right add eps add D
- thiswid oldmin ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 1 E 1 get oldmin 0 eq
- {pop thiswid cspan div}{thiswid mul oldmin div}ie
- put
- }for
- }if
- }ie
- ctype 1 eq{() ES}if
- }if
- }if
- }for
- }for
- }for
- /tmin 0 D /tmax 0 D
- 0 1 ncol{
- cdesc E get dup 1 get E 2 get 2 copy gt{pop dup}if
- tmax add /tmax E D tmin add /tmin E D
- }for
- twid 0 lt{twid neg IW gt{IW neg}{twid}ie /twid E D}if
- tdesc 0 twid neg tmin 2 copy lt{E}if pop put
- tdesc 1 twid neg tmax 2 copy lt{E}if pop put
- /W w D /LL W D /OU t D /PH 0 D /PL 0 D
-} D
-/PT {
- /PL PL 1 add D
- tables E get /table E D Tm 21 get Ts mul BE
- PL 2 ge{save}if
- /SL SL 1 add D /FN EF 21 get D EZ 21 get Ey 21 get FS
- table aload pop /rdesc E D /cdesc E D /tdesc E D
- tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
- /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
- /flow E D /clear E D /tclass E D /tmax E D /tmin E D
- /w W D /xo XO D /mr MR D /ll LL D /lg LG D /ai AI D /bc BC D /nr NR D /ar AR D
- /tr TR D /ui UI D /ph PH D /a0 A0 D /pf PF D /at AT D /av AV D /al AL D
- /Le LE D /la La D
- talign 0 lt{/talign AL 0 gt{AV AL get}{A0 2 le{A0}{0}ie}ie D}if
- ph 1 eq ph 2 eq or{
- NL ph 1 eq{tmax}{tmin}ie dup XO add LM gt{/LM E XO add D}{pop}ie LM E
- }{
- /PH 3 D /LE 1e5 D RC %ZF
- border 0 gt{/border 1 D}if
- /twidth 0 D /avail W xo sub D
- twid 0 eq{0 1 ncol{cdesc E get dup 2 get E 3 get dup 0 gt{div neg dup twid lt
- {/twid E D}{pop}ie}{pop pop}ie}for}if
- /twid twid dup 0 lt{neg avail 2 copy gt{E}if pop}{avail mul}ie D
- /OK t D 0 1 ncol{cdesc E get dup 1 get E 3 get twid mul gt{/OK f D}if}for
- 0 1 ncol{
- cdesc E get dup 1 get /colmin E D dup 3 get /cwid E twid mul D dup
- tmax avail le{2 get}if
- tmin avail le tmax avail gt and{
- dup 2 get E 1 get dup 3 1 roll sub avail tmin sub mul tmax tmin sub div add
- }if
- tmin avail gt{1 get}if
- 0 E colmin cwid lt OK and{pop cwid}if dup /twidth E twidth add D put
- }for
- /OU f D CP
- tmin twid le{
- 0 1 ncol{cdesc E get dup 0 get twidth div twid mul 0 E put}for
- /twidth twid D
- }if
- CP printcap CP E pop sub /caphig E D pop
- 0 1 1{
- /pass E D
- 0 1 nrow{
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D pop pop pop
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /W 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /W E W add D}for
- pass 0 eq rspan 1 eq and pass 1 eq rspan 1 gt and or{
- ctype 1 eq{() BD}if
- /W W left sub right sub D /XO 0 D /EO 0 D SI
- /A0 align D RC align NA
- AT 4 eq{
- /DC dp D /DO 0 D /ID 1 D
- 0 1 DV length 1 sub{DV E get dup DO gt{/DO E D}{pop}ie}for
- /Lo DO DV 0 get sub D /L1 Lo D
- }if
- 0 0 M /BP t D /Fl t D /MF 0 D /FB 0 D
- proc exec T not{/CI 0 D}if BN 0 FB neg R MF 0 eq{/MF CS D}if
- CP /thishig E neg bot add top add CI add D pop
- ang 0 ne{/thishig LM bot add top add D}if
- cell 16 MF put cell 17 Ya put cell 18 thishig put
- valign 4 eq{
- /below thishig Ya sub D
- rdesc irow get dup dup 4 get Ya lt
- {4 Ya put}{4 get /Ya E D}ie
- dup 5 get below lt{5 below put}{5 get /below E D}ie
- /thishig Ya below add D
- }if
- ctype 1 eq{()ES}if
- /oldhig 0 D
- 0 1 rspan 1 sub{
- irow add rdesc E get 0 get /oldhig E oldhig add D
- }for
- thishig oldhig ge{
- 0 1 rspan 1 sub{
- irow add rdesc E get dup 0 E 0 get oldhig 0 eq
- {pop thishig rspan div}{thishig mul oldhig div}ie
- put
- }for
- }if
- }if
- }if
- }for
- }for
- }for M RC %ZF
- /thight 0 D /racc 0 D /maxh 0 D /brk 0 D /rbeg nhead nfoot add D
- 0 1 nrow{
- rdesc E get dup 0 get dup /thight E thight add D
- brk 0 eq{/racc E D}{/racc E racc add D}ie
- racc maxh gt{/maxh racc D}if 2 get /brk E D
- }for
- ph 3 ge{thight caphig add E}if
- ph 0 eq ph 4 eq or{
- /PH 4 D /LE Le D /OU Ou D /yoff 0 D /headsz 0 D
- 0 1 nhead 1 sub{rdesc E get 0 get headsz add /headsz E D}for
- /footsz 0 D
- 0 1 nfoot 1 sub{rdesc E nhead add get 0 get footsz add /footsz E D}for
- /ahig LE BO add MI add D /maxh maxh headsz add footsz add D
- /thight thight headsz add footsz add D
- tmin avail gt maxh ahig gt or
- {/Sf avail tmin div dup ahig maxh div gt{pop ahig maxh div}if D /SA t D}
- {/Sf 1 D}ie
- tclass 1 eq thight LE 15 sub gt and
- {/SA t D LE 15 sub thight div dup Sf lt{/Sf E D}{pop}ie}if
- SA{Sf Sf scale /ll ll Sf div D /xo xo Sf div D /LE LE Sf div D
- /mr mr Sf div D /BO BO Sf div D /ahig ahig Sf div D}if
- nhead nfoot add getwid
- LE CP E pop add capalg 0 eq{caphig sub}if
- bT{f}{dup thight lt thight ahig lt and}ie
- E headsz sub footsz sub rwid lt or{NP}if
- capalg 0 eq{printcap -8 SP}if
- CP /ycur E D pop
- printhead
- rbeg 1 nrow{/row E D row
- getwid
- ycur yoff add rwid sub footsz sub LE add 0 lt
- {nfoot 0 gt{printfoot}if Tf NP /rbeg irow1 D
- Ba{MI /MI MI SA{Sf div}if D MI SP /MI E D}if
- CP /ycur E D pop /yoff 0 D printhead}if
- irow1 printrow
- }for
- printfoot /row row 1 add D Tf
- 0 ycur yoff add M
- capalg 1 eq{/EO 0 D SI -3 SP printcap}if
- Sf 1 lt{1 Sf div dup scale /ll ll Sf mul D /xo xo Sf mul D /LE LE Sf mul D
- /mr mr Sf mul D /BO BO Sf mul D /SA f D}if
- /EO 0 D
- }if
- }ie
- /W w D /XO xo D /MR mr D /LL ll D /LG lg D /AI ai D /BC bc D /NR nr D /AR ar D
- /TR tr D /UI ui D /PH ph D /A0 a0 D /PF pf D /AT at D /AV av D /AL al D
- /La la D
- /SL SL 1 sub NN D /CF 0 D /FN 0 D SZ SL get FR SL get FS Wf not{()F2}if
- PL 2 ge{Ms E restore Ms or /Ms E D PH 1 eq PH 2 eq or
- {/LM E D}if PH 3 ge{/CI 0 D NL 0 E neg R}if
- }if
- /PL PL 1 sub D /CI 0 D /BP f D /PO f D () Bm 21 get Ts mul BE BL %CF CS SF
-} D
-/printcap{
- capalg 0 ge{
- SA{/W w Sf div D}
- {talign 1 eq{/XO xo ll twidth sub 2 div add D}if
- talign 2 eq{/XO xo ll twidth sub add D}if
- /W XO twidth add D
- }ie /XO xo D /LL W XO sub MR sub D
- /PA f D /Fl capalg 0 eq D
- 1 NA BL caption exec BN OA /PA t D
- }if
-} D
-/getwid{
- /irow1 E D
- /irow2 irow1 D
- /rwid 0 D
- {rdesc irow2 get dup 0 get rwid add /rwid E D 2 get 0 eq
- {exit}{/irow2 irow2 1 add D}ie
- }loop
-} D
-/printrow{
- /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
- /xleft xoff xo add D
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D /cvsize E D /above E D /fontsz E D
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /width 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
- /rhight rdesc irow get 0 get D
- /hight rhight D
- 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
- /W xo xoff add width add right sub D
- ang 0 ne{/W xo xoff add hight add right sub D}if
- /EO xo xoff add left add D SI
- Cf{
- gsave CB VC xo xoff add ycur yoff add M
- 0 hight neg RL width 0 RL 0 hight RL width neg 0 RL fill
- grestore
- }if
- ctype 1 eq{() BD}if
- /A0 align D RC
- AT 4 eq{
- /DC dp D /ID 1 D /DO cdesc icol get 5 get D /Lo DO DV 0 get sub D /L1 Lo D
- }if
- ang 0 ne{
- gsave ang 90 eq
- {xoff ycur add hight cvsize sub 2 div sub ycur hight sub xoff sub}
- {xoff ycur sub width add hight cvsize sub 2 div add ycur xoff add}ie
- translate ang rotate
- }if
- valign 3 le{0 ycur yoff add top sub
- hight cvsize sub valign 1 sub mul 2 div sub M}
- {0 ycur yoff add top sub above add rdesc irow get 4 get sub M}ie
- /PA f D /BP t D /Fl t D
- BL proc exec BN
- ang 0 ne{grestore}if
- /PA t D
- ctype 1 eq{() ES}if
- }if
- /xoff xoff cdesc icol get 0 get add D
- }for
- /yoff yoff rhight sub D
-} D
-/printhead {0 1 nhead 1 sub{printrow}for} D
-/printfoot {nhead 1 nhead nfoot add 1 sub{printrow}for} D
-/Tf {
- OU{rules 2 ge{/yoff 0 D
- gsave 0 Sg
- [0 1 nhead 1 sub{}for rbeg 1 row 1 sub{}for nhead 1 nhead nfoot add 1 sub{}for]{
- /irow E D
- /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- /rspan cell 6 get D
- /cspan cell 5 get D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /width 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
- /rhight rdesc irow get 0 get D
- /hight rhight D
- 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
- xo xoff add width add ycur yoff add M
- 0 hight neg icol cspan add 1 sub ncol lt
- {cdesc icol 1 add get 4 get dup rules 3 le{1 eq}{pop t}ie
- {1 eq{0.8}{0.3}ie
- LW RL CP stroke M}{pop R}ie}{R}ie
- irow nhead nfoot add 1 sub ne nfoot 0 eq or
- {irow rspan add 1 sub nrow lt
- {rdesc irow rspan add get 3 get}{nfoot 0 eq{0}{1}ie}ie
- dup rules 2 mod 0 eq{1 eq}{pop t}ie
- {1 eq irow rspan add nhead eq or irow rspan add row eq nfoot 0 gt and or
- {0.8}{0.3}ie LW width neg 0 RL CP stroke M}{pop}ie}if
- }if
- /xoff xoff cdesc icol get 0 get add D
- }for
- /yoff yoff rhight sub D
- }forall
- grestore
- /Ms t D
- }if
- frame 1 gt{
- gsave
- 1 LW 0 Sg
- xleft ycur M CP BB
- 0 yoff frame 5 eq frame 7 ge or{RL}{R}ie
- twidth 0 frame 3 eq frame 4 eq or frame 8 ge or{RL}{R}ie CP BB
- 0 yoff neg frame 6 ge{RL}{R}ie
- twidth neg 0 frame 2 eq frame 4 eq or frame 8 ge or{RL}{R}ie
- closepath stroke
- grestore
- /Ms t D
- }if
- }if
-} D
-/tables [[[0 0 0 0 0 -1 0 0 1 55 2 0 0 9 5 {()} -1]
- [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
- [[0 0 0 0 0 0 [[{()1 Sl()WB(XML Schema type)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(Alias in the )SM(xml_schema)ES( names)HY(pace)YH()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(C++ type
- )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(fixed-length inte)HY(gral)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(signed\240char)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Byte)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240char)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(short_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(short)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Short)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240short)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(int_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(int)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsignedInt)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240int)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Long)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(arbi)HY(trary)YH(-length inte)HY(gral)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nonPos)HY(i)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(non_posi)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nonNeg)HY(a)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(non_nega)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(posi)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(posi)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nega)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nega)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(boolean types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(bool)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(fixed-preci)HY(sion)YH( float)HY(ing)YH(-point types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(float)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(float_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(float)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(double)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(arbi)HY(trary)YH(-preci)HY(sion)YH( float)HY(ing)YH(-point types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(string types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(std::basic_string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(normal)HY(ized)HY(String)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(normal)HY(ized)YH(_string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type\240derived\240from\240)SM(normal)HY(ized)YH(_string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(Name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(token)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NMTOKEN)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nmtoken)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(token)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NMTO)HY(KENS)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nmto)HY(kens)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(sequence<nmtoken>)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NCName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(ncname)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(name)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(token)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(qual)HY(i)HY(fied)YH( name
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(QName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(qname)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::qname)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(ID/IDREF types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ID)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(id)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(ncname)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(IDREF)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(idref)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(ncname)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(IDREFS)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(idrefs)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(sequence<idref>)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(URI types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anyURI)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(uri)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(std::basic_string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(binary types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(base64Binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(base64_binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::base64_binary)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(hexBi)HY(nary)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(hex_binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::hex_binary)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(date/time types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::date)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(date)HY(Time)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(date_time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::date_time)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::dura)HY(tion)YH()ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gDay)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gday)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::gday)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gMonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gmonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::gmonth)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gMon)HY(th)HY(Day)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gmonth_day)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::gmonth_day)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gYear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gyear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::gyear)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gYear)HY(Month)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gyear_month)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::gyear_month)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(xml_schema::time)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(entity types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ENTITY)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(entity)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(name)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ENTI)HY(TIES)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(enti)HY(ties)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(sequence<entity>)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-]]
-] D
-0 1 0{TS}for RC ZF
-/Ba f D /BO 0 D Bs
-/UR (/home/boris/work/xsd/xsd/doc/cxx/tree/guide/index.xhtml) D
-/Ti (C++/Tree Mapping Getting Started Guide) D
-/Au () D
-/Df f D
-/ME [] D
-Pt
-/BO 0 D TC /Ba f D Bs /AU f D /UR () D RC ZF
- tH WB
-ND 1 gt{Ts 3 mul Np 0()0 C()BD(C++/Tree Mapping Getting Started Guide)ES()0 1 TN()EA()BN}if
-1 NH le{36(1\240\240)1 C(Preface)WB 3 Sn()36 1 TN()EA()BN}if
-2 NH le{37(1.1\240\240)2 C(About)WB 4 Sn( This Docu)HY(ment)YH()37 1 TN()EA()BN}if
-2 NH le{38(1.2\240\240)2 C(More)WB 5 Sn( Infor)HY(ma)HY(tion)YH()38 1 TN()EA()BN}if
-1 NH le{39(2\240\240)1 C(1)WB 6 Sn( Intro)HY(duc)HY(tion)YH()39 1 TN()EA()BN}if
-2 NH le{40(2.1\240\240)2 C(1.1)WB 7 Sn( Mapping Overview)40 1 TN()EA()BN}if
-2 NH le{41(2.2\240\240)2 C(1.2)WB 8 Sn( Bene)HY(fits)YH()41 1 TN()EA()BN}if
-1 NH le{42(3\240\240)1 C(2)WB 9 Sn( Hello World Example)42 1 TN()EA()BN}if
-2 NH le{43(3.1\240\240)2 C(2.1)WB 10 Sn( Writing XML Docu)HY(ment)YH( and Schema)43 1 TN()EA()BN}if
-2 NH le{44(3.2\240\240)2 C(2.2)WB 11 Sn( Trans)HY(lat)HY(ing)YH( Schema to C++)44 1 TN()EA()BN}if
-2 NH le{45(3.3\240\240)2 C(2.3)WB 12 Sn( Imple)HY(ment)HY(ing)YH( Appli)HY(ca)HY(tion)YH( Logic)45 1 TN()EA()BN}if
-2 NH le{46(3.4\240\240)2 C(2.4)WB 13 Sn( Compil)HY(ing)YH( and Running)46 1 TN()EA()BN}if
-2 NH le{47(3.5\240\240)2 C(2.5)WB 14 Sn( Adding Seri)HY(al)HY(iza)HY(tion)YH()47 1 TN()EA()BN}if
-2 NH le{48(3.6\240\240)2 C(2.6)WB 15 Sn( Select)HY(ing)YH( Naming Conven)HY(tion)YH()48 1 TN()EA()BN}if
-2 NH le{49(3.7\240\240)2 C(2.7)WB 16 Sn( Gener)HY(at)HY(ing)YH( Docu)HY(men)HY(ta)HY(tion)YH()49 1 TN()EA()BN}if
-1 NH le{50(4\240\240)1 C(3)WB 17 Sn( Overall Mapping Config)HY(u)HY(ra)HY(tion)YH()50 1 TN()EA()BN}if
-2 NH le{51(4.1\240\240)2 C(3.1)WB 18 Sn( C++ Stan)HY(dard)YH()51 1 TN()EA()BN}if
-2 NH le{52(4.2\240\240)2 C(3.2)WB 19 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()52 1 TN()EA()BN}if
-2 NH le{53(4.3\240\240)2 C(3.3)WB 20 Sn( Support for Poly)HY(mor)HY(phism)YH()53 1 TN()EA()BN}if
-2 NH le{54(4.4\240\240)2 C(3.4)WB 21 Sn( Names)HY(pace)YH( Mapping)54 1 TN()EA()BN}if
-2 NH le{55(4.5\240\240)2 C(3.5)WB 22 Sn( Thread Safety)55 1 TN()EA()BN}if
-1 NH le{56(5\240\240)1 C(4)WB 23 Sn( Working with Object Models)56 1 TN()EA()BN}if
-2 NH le{57(5.1\240\240)2 C(4.1)WB 24 Sn( Attribute and Element Cardi)HY(nal)HY(i)HY(ties)YH()57 1 TN()EA()BN}if
-2 NH le{58(5.2\240\240)2 C(4.2)WB 25 Sn( Access)HY(ing)YH( the Object Model)58 1 TN()EA()BN}if
-2 NH le{59(5.3\240\240)2 C(4.3)WB 26 Sn( Modi)HY(fy)HY(ing)YH( the Object Model)59 1 TN()EA()BN}if
-2 NH le{60(5.4\240\240)2 C(4.4)WB 27 Sn( Creat)HY(ing)YH( the Object Model from Scratch)60 1 TN()EA()BN}if
-2 NH le{61(5.5\240\240)2 C(4.5)WB 28 Sn( Mapping for the Built-in XML Schema Types)61 1 TN()EA()BN}if
-1 NH le{62(6\240\240)1 C(5)WB 30 Sn( Parsing)62 1 TN()EA()BN}if
-2 NH le{63(6.1\240\240)2 C(5.1)WB 31 Sn( XML Schema Vali)HY(da)HY(tion)YH( and Search)HY(ing)YH()63 1 TN()EA()BN}if
-2 NH le{64(6.2\240\240)2 C(5.2)WB 32 Sn( Error Handling)64 1 TN()EA()BN}if
-1 NH le{65(7\240\240)1 C(6)WB 33 Sn( Seri)HY(al)HY(iza)HY(tion)YH()65 1 TN()EA()BN}if
-2 NH le{66(7.1\240\240)2 C(6.1)WB 34 Sn( Names)HY(pace)YH( and Schema Infor)HY(ma)HY(tion)YH()66 1 TN()EA()BN}if
-2 NH le{67(7.2\240\240)2 C(6.2)WB 35 Sn( Error Handling)67 1 TN()EA()BN}if
-/OU t D /Cb Db D NP Ep ET
-/Cb Db D /Ct [16#00 16#00 16#00] D /Cl [16#00 16#00 16#00] D /CL -1 D Ct Sc
-
-/Ba f D /BO 0 D Bs
-/UR (/home/boris/work/xsd/xsd/doc/cxx/tree/guide/index.xhtml) D
-/Ti (C++/Tree Mapping Getting Started Guide) D
-/Au () D
-/Df f D
-/ME [] D
-
-NP RC ZF
-()1 Sl()WB 0 Sn(
-
-)BR()WB 1 Sn( )BR()WB 2 Sn(
-
-
- )0 1 0 H(Preface)WB 36 Sn()WB 3 Sn()EA()EH(
-
- )0 2 1 H(About)WB 37 Sn()WB 4 Sn( This Docu)HY(ment)YH()EA()EH(
-
- )0 P(The goal of this docu)HY(ment)YH( is to provide you with an under)HY(stand)HY(ing)YH( of
- the C++/Tree program)HY(ming)YH( model and allow you to effi)HY(ciently)YH( eval)HY(u)HY(ate)YH(
- XSD against your project's tech)HY(ni)HY(cal)YH( require)HY(ments)YH(. As such, this
- docu)HY(ment)YH( is intended for C++ devel)HY(op)HY(ers)YH( and soft)HY(ware)YH( archi)HY(tects)YH(
- who are looking for an XML process)HY(ing)YH( solu)HY(tion)YH(. For a more in-depth
- descrip)HY(tion)YH( of the C++/Tree mapping refer to the
- )R1 2 A(C++/Tree
- Mapping User Manual)EA(.)EP(
-
- )0 P(Prior expe)HY(ri)HY(ence)YH( with XML and C++ is required to under)HY(stand)YH( this
- docu)HY(ment)YH(. Basic under)HY(stand)HY(ing)YH( of XML Schema is advan)HY(ta)HY(geous)YH( but
- not expected or required.
- )EP(
-
-
- )0 2 2 H(More)WB 38 Sn()WB 5 Sn( Infor)HY(ma)HY(tion)YH()EA()EH(
-
- )0 P(Beyond this guide, you may also find the follow)HY(ing)YH( sources of
- infor)HY(ma)HY(tion)YH( useful:)EP(
-
- )UL( )-1 LI()R1 2 A(C++/Tree
- Mapping User Manual)EA(
-
- )-1 LI()R2 2 A(C++/Tree
- Mapping Customiza)HY(tion)YH( Guide)EA(
-
- )-1 LI()R3 2 A(C++/Tree
- Mapping Frequently Asked Ques)HY(tions)YH( \201FAQ\202)EA(
-
- )-1 LI()R4 2 A(XSD
- Compiler Command Line Manual)EA(
-
- )-1 LI(The )SM(exam)HY(ples)YH(/cxx/tree/)ES( direc)HY(tory)YH( in the XSD
- distri)HY(bu)HY(tion)YH( contains a collec)HY(tion)YH( of exam)HY(ples)YH( and a README
- file with an overview of each example.
-
- )-1 LI(The )SM(README)ES( file in the XSD distri)HY(bu)HY(tion)YH( explains
- how to compile the exam)HY(ples)YH( on various plat)HY(forms)YH(.
-
- )-1 LI(The )R5 2 A(xsd-users)EA(
- mailing list is the place to ask tech)HY(ni)HY(cal)YH( ques)HY(tions)YH( about XSD and the C++/Parser mapping.
- Further)HY(more)YH(, the )R6 2 A(archives)EA(
- may already have answers to some of your ques)HY(tions)YH(.
- )LU(
-
-
-
- )0 1 3 H(1)WB 39 Sn()WB 6 Sn( Intro)HY(duc)HY(tion)YH()EA()EH(
-
- )0 P(Welcome to CodeSyn)HY(the)HY(sis)YH( XSD and the C++/Tree mapping. XSD is a
- cross-plat)HY(form)YH( W3C XML Schema to C++ data binding compiler. C++/Tree
- is a W3C XML Schema to C++ mapping that repre)HY(sents)YH( the data stored
- in XML as a stat)HY(i)HY(cally)YH(-typed, vocab)HY(u)HY(lary)YH(-specific object model.
- )EP(
-
- )0 2 4 H(1.1)WB 40 Sn()WB 7 Sn( Mapping Overview)EA()EH(
-
- )0 P(Based on a formal descrip)HY(tion)YH( of an XML vocab)HY(u)HY(lary)YH( \201schema\202, the
- C++/Tree mapping produces a tree-like data struc)HY(ture)YH( suit)HY(able)YH( for
- in-memory process)HY(ing)YH(. The core of the mapping consists of C++
- classes that consti)HY(tute)YH( the object model and are derived from
- types defined in XML Schema as well as XML parsing and
- seri)HY(al)HY(iza)HY(tion)YH( code.)EP(
-
- )0 P(Besides the core features, C++/Tree provide a number of addi)HY(tional)YH(
- mapping elements that can be useful in some appli)HY(ca)HY(tions)YH(. These
- include seri)HY(al)HY(iza)HY(tion)YH( and extrac)HY(tion)YH( to/from formats others than
- XML, such as unstruc)HY(tured)YH( text \201useful for debug)HY(ging)YH(\202 and binary
- repre)HY(sen)HY(ta)HY(tions)YH( such as XDR and CDR for high-speed data process)HY(ing)YH(
- as well as auto)HY(matic)YH( docu)HY(men)HY(ta)HY(tion)YH( gener)HY(a)HY(tion)YH(. The C++/Tree mapping
- also provides a wide range of mech)HY(a)HY(nisms)YH( for control)HY(ling)YH( and
- customiz)HY(ing)YH( the gener)HY(ated)YH( code.)EP(
-
- )0 P(A typical appli)HY(ca)HY(tion)YH( that uses C++/Tree for XML process)HY(ing)YH( usually
- performs the follow)HY(ing)YH( three steps: it first reads \201parses\202 an XML
- docu)HY(ment)YH( to an in-memory object model, it then performs some useful
- compu)HY(ta)HY(tions)YH( on that object model which may involve modi)HY(fi)HY(ca)HY(tion)YH(
- of the model, and finally it may write \201seri)HY(al)HY(ize)YH(\202 the modi)HY(fied)YH(
- object model back to XML.)EP(
-
- )0 P(The next chapter presents a simple appli)HY(ca)HY(tion)YH( that performs these
- three steps. The follow)HY(ing)YH( chap)HY(ters)YH( show how to use the C++/Tree
- mapping in more detail.)EP(
-
- )0 2 5 H(1.2)WB 41 Sn()WB 8 Sn( Bene)HY(fits)YH()EA()EH(
-
- )0 P(Tradi)HY(tional)YH( XML access APIs such as Docu)HY(ment)YH( Object Model \201DOM\202
- or Simple API for XML \201SAX\202 have a number of draw)HY(backs)YH( that
- make them less suit)HY(able)YH( for creat)HY(ing)YH( robust and main)HY(tain)HY(able)YH(
- XML process)HY(ing)YH( appli)HY(ca)HY(tions)YH(. These draw)HY(backs)YH( include:
- )EP(
-
- )UL( )-1 LI(Generic repre)HY(sen)HY(ta)HY(tion)YH( of XML in terms of elements, attributes,
- and text forces an appli)HY(ca)HY(tion)YH( devel)HY(oper)YH( to write a substan)HY(tial)YH(
- amount of bridg)HY(ing)YH( code that iden)HY(ti)HY(fies)YH( and trans)HY(forms)YH( pieces
- of infor)HY(ma)HY(tion)YH( encoded in XML to a repre)HY(sen)HY(ta)HY(tion)YH( more suit)HY(able)YH(
- for consump)HY(tion)YH( by the appli)HY(ca)HY(tion)YH( logic.
-
- )-1 LI(String-based flow control defers error detec)HY(tion)YH( to runtime.
- It also reduces code read)HY(abil)HY(ity)YH( and main)HY(tain)HY(abil)HY(ity)YH(.
-
- )-1 LI(Lack of type safety because the data is repre)HY(sented)YH( as text.
-
- )-1 LI(Result)HY(ing)YH( appli)HY(ca)HY(tions)YH( are hard to debug, change, and
- main)HY(tain)YH(.
- )LU(
-
- )0 P(In contrast, stat)HY(i)HY(cally)YH(-typed, vocab)HY(u)HY(lary)YH(-specific object model
- produced by the C++/Tree mapping allows you to operate in your
- domain terms instead of the generic elements, attributes, and
- text. Static typing helps catch errors at compile-time rather
- than at run-time. Auto)HY(matic)YH( code gener)HY(a)HY(tion)YH( frees you for more
- inter)HY(est)HY(ing)YH( tasks \201such as doing some)HY(thing)YH( useful with the
- infor)HY(ma)HY(tion)YH( stored in the XML docu)HY(ments)YH(\202 and mini)HY(mizes)YH( the
- effort needed to adapt your appli)HY(ca)HY(tions)YH( to changes in the
- docu)HY(ment)YH( struc)HY(ture)YH(. To summa)HY(rize)YH(, the C++/Tree object model has
- the follow)HY(ing)YH( key advan)HY(tages)YH( over generic XML access APIs:)EP(
-
- )UL( )-1 LI()BD(Ease of use.)ES( The gener)HY(ated)YH( code hides all the complex)HY(ity)YH(
- asso)HY(ci)HY(ated)YH( with parsing and seri)HY(al)HY(iz)HY(ing)YH( XML. This includes navi)HY(gat)HY(ing)YH(
- the struc)HY(ture)YH( and convert)HY(ing)YH( between the text repre)HY(sen)HY(ta)HY(tion)YH( and
- data types suit)HY(able)YH( for manip)HY(u)HY(la)HY(tion)YH( by the appli)HY(ca)HY(tion)YH(
- logic.
-
- )-1 LI()BD(Natural repre)HY(sen)HY(ta)HY(tion)YH(.)ES( The object repre)HY(sen)HY(ta)HY(tion)YH( allows
- you to access the XML data using your domain vocab)HY(u)HY(lary)YH( instead
- of generic elements, attributes, and text.
-
- )-1 LI()BD(Concise code.)ES( With the object repre)HY(sen)HY(ta)HY(tion)YH( the
- appli)HY(ca)HY(tion)YH( imple)HY(men)HY(ta)HY(tion)YH( is simpler and thus easier
- to read and under)HY(stand)YH(.
-
- )-1 LI()BD(Safety.)ES( The gener)HY(ated)YH( object model is stat)HY(i)HY(cally)YH(
- typed and uses func)HY(tions)YH( instead of strings to access the
- infor)HY(ma)HY(tion)YH(. This helps catch program)HY(ming)YH( errors at compile-time
- rather than at runtime.
-
- )-1 LI()BD(Main)HY(tain)HY(abil)HY(ity)YH(.)ES( Auto)HY(matic)YH( code gener)HY(a)HY(tion)YH( mini)HY(mizes)YH( the
- effort needed to adapt the appli)HY(ca)HY(tion)YH( to changes in the
- docu)HY(ment)YH( struc)HY(ture)YH(. With static typing, the C++ compiler
- can pin-point the places in the client code that need to be
- changed.
-
- )-1 LI()BD(Compat)HY(i)HY(bil)HY(ity)YH(.)ES( Sequences of elements are repre)HY(sented)YH( in
- the object model as contain)HY(ers)YH( conform)HY(ing)YH( to the stan)HY(dard)YH( C++
- sequence require)HY(ments)YH(. This makes it possi)HY(ble)YH( to use stan)HY(dard)YH(
- C++ algo)HY(rithms)YH( on the object repre)HY(sen)HY(ta)HY(tion)YH( and frees you from
- learn)HY(ing)YH( yet another container inter)HY(face)YH(, as is the case with
- DOM.
-
- )-1 LI()BD(Effi)HY(ciency)YH(.)ES( If the appli)HY(ca)HY(tion)YH( makes repet)HY(i)HY(tive)YH( use
- of the data extracted from XML, then the C++/Tree object model
- is more effi)HY(cient)YH( because the navi)HY(ga)HY(tion)YH( is performed using
- func)HY(tion)YH( calls rather than string compar)HY(isons)YH( and the XML
- data is extracted only once. Further)HY(more)YH(, the runtime memory
- usage is reduced due to more effi)HY(cient)YH( data storage
- \201for instance, storing numeric data as inte)HY(gers)YH( instead of
- strings\202 as well as the static knowl)HY(edge)YH( of cardi)HY(nal)HY(ity)YH(
- constraints.
- )LU(
-
-
-
-
-
- )0 1 6 H(2)WB 42 Sn()WB 9 Sn( Hello World Example)EA()EH(
-
- )0 P(In this chapter we will examine how to parse, access, modify, and
- seri)HY(al)HY(ize)YH( a very simple XML docu)HY(ment)YH( using the XSD-gener)HY(ated)YH(
- C++/Tree object model. The code presented in this chapter is
- based on the )SM(hello)ES( example which can be found in
- the )SM(exam)HY(ples)YH(/cxx/tree/)ES( direc)HY(tory)YH( of the XSD
- distri)HY(bu)HY(tion)YH(.)EP(
-
- )0 2 7 H(2.1)WB 43 Sn()WB 10 Sn( Writing XML Docu)HY(ment)YH( and Schema)EA()EH(
-
- )0 P(First, we need to get an idea about the struc)HY(ture)YH(
- of the XML docu)HY(ments)YH( we are going to process. Our
- )SM(hello.xml)ES(, for example, could look like this:)EP(
-
- ) 10 28 PR(<?xml version="1.0"?>
-<hello>
-
- <greeting>Hello</greeting>
-
- <name>sun</name>
- <name>moon</name>
- <name>world</name>
-
-</hello>)RP(
-
- )0 P(Then we can write a descrip)HY(tion)YH( of the above XML in the
- XML Schema language and save it into )SM(hello.xsd)ES(:)EP(
-
- ) 13 70 PR(<?xml version="1.0"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:complexType name="hello_t">
- <xs:sequence>
- <xs:element name="greeting" type="xs:string"/>
- <xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:element name="hello" type="hello_t"/>
-
-</xs:schema>)RP(
-
- )0 P(Even if you are not famil)HY(iar)YH( with XML Schema, it
- should be easy to connect decla)HY(ra)HY(tions)YH( in )SM(hello.xsd)ES(
- to elements in )SM(hello.xml)ES(. The )SM(hello_t)ES( type
- is defined as a sequence of the nested )SM(greet)HY(ing)YH()ES( and
- )SM(name)ES( elements. Note that the term sequence in XML
- Schema means that elements should appear in a partic)HY(u)HY(lar)YH( order
- as opposed to appear)HY(ing)YH( multi)HY(ple)YH( times. The )SM(name)ES(
- element has its )SM(maxOc)HY(curs)YH()ES( prop)HY(erty)YH( set to
- )SM(unbounded)ES( which means it can appear multi)HY(ple)YH( times
- in an XML docu)HY(ment)YH(. Finally, the glob)HY(ally)YH(-defined )SM(hello)ES(
- element prescribes the root element for our vocab)HY(u)HY(lary)YH(. For an
- easily-approach)HY(able)YH( intro)HY(duc)HY(tion)YH( to XML Schema refer to
- )R7 2 A(XML Schema Part 0:
- Primer)EA(.)EP(
-
- )0 P(The above schema is a spec)HY(i)HY(fi)HY(ca)HY(tion)YH( of our XML vocab)HY(u)HY(lary)YH(; it tells
- every)HY(body)YH( what valid docu)HY(ments)YH( of our XML-based language should look
- like. We can also update our )SM(hello.xml)ES( to include the
- infor)HY(ma)HY(tion)YH( about the schema so that XML parsers can vali)HY(date)YH(
- our docu)HY(ment)YH(:)EP(
-
- ) 11 60 PR(<?xml version="1.0"?>
-<hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="hello.xsd">
-
- <greeting>Hello</greeting>
-
- <name>sun</name>
- <name>moon</name>
- <name>world</name>
-
-</hello>)RP(
-
-
- )0 P(The next step is to compile the schema to gener)HY(ate)YH( the object
- model and parsing func)HY(tions)YH(.)EP(
-
- )0 2 8 H(2.2)WB 44 Sn()WB 11 Sn( Trans)HY(lat)HY(ing)YH( Schema to C++)EA()EH(
-
- )0 P(Now we are ready to trans)HY(late)YH( our )SM(hello.xsd)ES( to C++.
- To do this we invoke the XSD compiler from a termi)HY(nal)YH( \201UNIX\202 or
- a command prompt \201Windows\202:
- )EP(
-
- ) 1 24 PR($ xsd cxx-tree hello.xsd)RP(
-
- )0 P(The XSD compiler produces two C++ files: )SM(hello.hxx)ES( and
- )SM(hello.cxx)ES(. The follow)HY(ing)YH( code frag)HY(ment)YH( is taken from
- )SM(hello.hxx)ES(; it should give you an idea about what gets
- gener)HY(ated)YH(:
- )EP(
-
- ) 45 60 PR(class hello_t
-{
-public:
- // greeting
- //
- typedef xml_schema::string greeting_type;
-
- const greeting_type&
- greeting \201\202 const;
-
- greeting_type&
- greeting \201\202;
-
- void
- greeting \201const greeting_type& x\202;
-
- // name
- //
- typedef xml_schema::string name_type;
- typedef xsd::sequence<name_type> name_sequence;
- typedef name_sequence::iterator name_iterator;
- typedef name_sequence::const_iterator name_const_iterator;
-
- const name_sequence&
- name \201\202 const;
-
- name_sequence&
- name \201\202;
-
- void
- name \201const name_sequence& s\202;)WR(
-
- // Constructor.
- //
- hello_t \201const greeting_type&\202;
-
- ...
-
-};
-
-std::auto_ptr<hello_t>
-hello \201const std::string& uri\202;
-
-std::auto_ptr<hello_t>
-hello \201std::istream&\202;)RP(
-
- )0 P(The )SM(hello_t)ES( C++ class corre)HY(sponds)YH( to the
- )SM(hello_t)ES( XML Schema type. For each element
- in this type a set of C++ type defi)HY(ni)HY(tions)YH( as well as
- acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( are gener)HY(ated)YH( inside the
- )SM(hello_t)ES( class. Note that the type defi)HY(ni)HY(tions)YH(
- and member func)HY(tions)YH( for the )SM(greet)HY(ing)YH()ES( and
- )SM(name)ES( elements are differ)HY(ent)YH( because of the
- cardi)HY(nal)HY(ity)YH( differ)HY(ences)YH( between these two elements
- \201)SM(greet)HY(ing)YH()ES( is a required single element and
- )SM(name)ES( is a sequence of elements\202.)EP(
-
- )0 P(The )SM(xml_schema::string)ES( type used in the type
- defi)HY(ni)HY(tions)YH( is a C++ class provided by the XSD runtime
- that corre)HY(sponds)YH( to built-in XML Schema type
- )SM(string)ES(. The )SM(xml_schema::string)ES(
- is based on )SM(std::string)ES( and can be used as
- such. Simi)HY(larly)YH(, the )SM(sequence)ES( class template
- that is used in the )SM(name_sequence)ES( type
- defi)HY(ni)HY(tion)YH( is based on and has the same inter)HY(face)YH( as
- )SM(std::vector)ES(. The mapping between the built-in
- XML Schema types and C++ types is described in more detail in
- )0 28 1 A(Section 4.5, "Mapping for the Built-in XML Schema
- Types")28 0 TN TL()Ec /AF f D(. The )SM(hello_t)ES( class also includes a
- construc)HY(tor)YH( with an initial)HY(izer)YH( for the required
- )SM(greet)HY(ing)YH()ES( element as its argu)HY(ment)YH(.)EP(
-
- )0 P(The )SM(hello)ES( over)HY(loaded)YH( global func)HY(tions)YH( corre)HY(spond)YH(
- to the )SM(hello)ES( global element in XML Schema. A
- global element in XML Schema is a valid docu)HY(ment)YH( root.
- By default XSD gener)HY(ated)YH( a set of parsing func)HY(tions)YH( for each
- global element defined in XML Schema \201this can be over)HY(rid)HY(den)YH(
- with the )SM(--root-element-*)ES( options\202. Parsing
- func)HY(tions)YH( return a dynam)HY(i)HY(cally)YH( allo)HY(cated)YH( object model as an
- auto)HY(matic)YH( pointer. The actual pointer used depends on the
- C++ stan)HY(dard)YH( selected. For C++98 it is )SM(std::auto_ptr)ES(
- as shown above. For C++11 it is )SM(std::unique_ptr)ES(.
- For example, if we modify our XSD compiler invo)HY(ca)HY(tion)YH( to
- select C++11:)EP(
-
- ) 1 36 PR($ xsd cxx-tree --std c++11 hello.xsd)RP(
-
- )0 P(Then the parsing func)HY(tion)YH( signa)HY(tures)YH( will become:)EP(
-
- ) 5 31 PR(std::unique_ptr<hello_t>
-hello \201const std::string& uri\202;
-
-std::unique_ptr<hello_t>
-hello \201std::istream&\202;)RP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( on parsing func)HY(tions)YH( see )0 30 1 A(Chapter 5,
- "Parsing")30 0 TN TL()Ec /AF f D(.)EP(
-
- )0 2 9 H(2.3)WB 45 Sn()WB 12 Sn( Imple)HY(ment)HY(ing)YH( Appli)HY(ca)HY(tion)YH( Logic)EA()EH(
-
- )0 P(At this point we have all the parts we need to do some)HY(thing)YH( useful
- with the infor)HY(ma)HY(tion)YH( stored in our XML docu)HY(ment)YH(:
- )EP(
-
- ) 25 62 PR(#include <iostream>
-#include "hello.hxx"
-
-using namespace std;
-
-int
-main \201int argc, char* argv[]\202
-{
- try
- {
- auto_ptr<hello_t> h \201hello \201argv[1]\202\202;
-
- for \201hello_t::name_const_iterator i \201h->name \201\202.begin \201\202\202;
- i != h->name \201\202.end \201\202;
- ++i\202
- {
- cerr << h->greeting \201\202 << ", " << *i << "!" << endl;
- }
- }
- catch \201const xml_schema::exception& e\202
- {
- cerr << e << endl;
- return 1;
- }
-})RP(
-
- )0 P(The first part of our appli)HY(ca)HY(tion)YH( calls one of the parsing
- func)HY(tions)YH( to parser an XML file spec)HY(i)HY(fied)YH( in the command line.
- We then use the returned object model to iterate over names
- and print a greet)HY(ing)YH( line for each of them. Finally, we
- catch and print the )SM(xml_schema::excep)HY(tion)YH()ES(
- excep)HY(tion)YH( in case some)HY(thing)YH( goes wrong. This excep)HY(tion)YH(
- is the root of the excep)HY(tion)YH( hier)HY(ar)HY(chy)YH( used by the
- XSD-gener)HY(ated)YH( code.
- )EP(
-
-
- )0 2 10 H(2.4)WB 46 Sn()WB 13 Sn( Compil)HY(ing)YH( and Running)EA()EH(
-
- )0 P(After saving our appli)HY(ca)HY(tion)YH( from the previ)HY(ous)YH( section in
- )SM(driver.cxx)ES(, we are ready to compile our first
- program and run it on the test XML docu)HY(ment)YH(. On a UNIX
- system this can be done with the follow)HY(ing)YH( commands:
- )EP(
-
- ) 6 43 PR($ c++ -I.../libxsd -c driver.cxx hello.cxx
-$ c++ -o driver driver.o hello.o -lxerces-c
-$ ./driver hello.xml
-Hello, sun!
-Hello, moon!
-Hello, world!)RP(
-
- )0 P(Here )SM(.../libxsd)ES( repre)HY(sents)YH( the path to the
- )SM(libxsd)ES( direc)HY(tory)YH( in the XSD distri)HY(bu)HY(tion)YH(.
- Note also that we are required to link our appli)HY(ca)HY(tion)YH(
- with the Xerces-C++ library because the gener)HY(ated)YH( code
- uses it as the under)HY(ly)HY(ing)YH( XML parser.)EP(
-
- )0 2 11 H(2.5)WB 47 Sn()WB 14 Sn( Adding Seri)HY(al)HY(iza)HY(tion)YH()EA()EH(
-
- )0 P(While parsing and access)HY(ing)YH( the XML data may be every)HY(thing)YH(
- you need, there are appli)HY(ca)HY(tions)YH( that require creat)HY(ing)YH( new
- or modi)HY(fy)HY(ing)YH( exist)HY(ing)YH( XML docu)HY(ments)YH(. By default XSD does
- not produce seri)HY(al)HY(iza)HY(tion)YH( code. We will need to request
- it with the )SM(--gener)HY(ate)YH(-seri)HY(al)HY(iza)HY(tion)YH()ES( options:)EP(
-
- ) 1 49 PR($ xsd cxx-tree --generate-serialization hello.xsd)RP(
-
- )0 P(If we now examine the gener)HY(ated)YH( )SM(hello.hxx)ES( file,
- we will find a set of over)HY(loaded)YH( seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(,
- includ)HY(ing)YH( the follow)HY(ing)YH( version:)EP(
-
- ) 5 45 PR(void
-hello \201std::ostream&,
- const hello_t&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202\202;
-)RP(
-
- )0 P(Just like with parsing func)HY(tions)YH(, XSD gener)HY(ates)YH( seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tions)YH( for each global element unless instructed other)HY(wise)YH(
- with one of the )SM(--root-element-*)ES( options. For more
- infor)HY(ma)HY(tion)YH( on seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( see )0 33 1 A(Chapter 6,
- "Seri)HY(al)HY(iza)HY(tion)YH(")33 0 TN TL()Ec /AF f D(.)EP(
-
- )0 P(We first examine an appli)HY(ca)HY(tion)YH( that modi)HY(fies)YH( an exist)HY(ing)YH(
- object model and seri)HY(al)HY(izes)YH( it back to XML:)EP(
-
- ) 34 50 PR(#include <iostream>
-#include "hello.hxx"
-
-using namespace std;
-
-int
-main \201int argc, char* argv[]\202
-{
- try
- {
- auto_ptr<hello_t> h \201hello \201argv[1]\202\202;
-
- // Change the greeting phrase.
- //
- h->greeting \201"Hi"\202;
-
- // Add another entry to the name sequence.
- //
- h->name \201\202.push_back \201"mars"\202;
-
- // Serialize the modified object model to XML.
- //
- xml_schema::namespace_infomap map;
- map[""].name = "";
- map[""].schema = "hello.xsd";
-
- hello \201cout, *h, map\202;
- }
- catch \201const xml_schema::exception& e\202
- {
- cerr << e << endl;)WR(
- return 1;
- }
-})RP(
-
- )0 P(First, our appli)HY(ca)HY(tion)YH( parses an XML docu)HY(ment)YH( and obtains its
- object model as in the previ)HY(ous)YH( example. Then it changes the
- greet)HY(ing)YH( string and adds another entry to the list of names.
- Finally, it seri)HY(al)HY(izes)YH( the object model back to XML by calling
- the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(.)EP(
-
- )0 P(The first argu)HY(ment)YH( we pass to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH( is
- )SM(cout)ES( which results in the XML being written to
- the stan)HY(dard)YH( output for us to inspect. We could have also
- written the result to a file or memory buffer by creat)HY(ing)YH( an
- instance of )SM(std::ofstream)ES( or )SM(std::ostringstream)ES(
- and passing it instead of )SM(cout)ES(. The second argu)HY(ment)YH( is the
- object model we want to seri)HY(al)HY(ize)YH(. The final argu)HY(ment)YH( is an optional
- names)HY(pace)YH( infor)HY(ma)HY(tion)YH( map for our vocab)HY(u)HY(lary)YH(. It captures infor)HY(ma)HY(tion)YH(
- such as names)HY(paces)YH(, names)HY(pace)YH( prefixes to which they should be mapped,
- and schemas asso)HY(ci)HY(ated)YH( with these names)HY(paces)YH(. If we don't provide
- this argu)HY(ment)YH( then generic names)HY(pace)YH( prefixes \201)SM(p1)ES(,
- )SM(p2)ES(, etc.\202 will be auto)HY(mat)HY(i)HY(cally)YH( assigned to XML names)HY(paces)YH(
- and no schema infor)HY(ma)HY(tion)YH( will be added to the result)HY(ing)YH( docu)HY(ment)YH(
- \201see )0 33 1 A(Chapter 6, "Seri)HY(al)HY(iza)HY(tion)YH(")33 0 TN TL()Ec /AF f D( for details\202.
- In our case, the prefix \201map key\202 and names)HY(pace)YH( name are empty
- because our vocab)HY(u)HY(lary)YH( does not use XML names)HY(paces)YH(.)EP(
-
- )0 P(If we now compile and run this appli)HY(ca)HY(tion)YH( we will see the
- output as shown in the follow)HY(ing)YH( listing:)EP(
-
- ) 12 60 PR(<?xml version="1.0"?>
-<hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="hello.xsd">
-
- <greeting>Hi</greeting>
-
- <name>sun</name>
- <name>moon</name>
- <name>world</name>
- <name>mars</name>
-
-</hello>)RP(
-
- )0 P(We can also create and seri)HY(al)HY(ize)YH( an object model from scratch
- as shown in the follow)HY(ing)YH( example:)EP(
-
- ) 33 43 PR(#include <iostream>
-#include <fstream>
-#include "hello.hxx"
-
-using namespace std;
-
-int
-main \201int argc, char* argv[]\202
-{
- try
- {
- hello_t h \201"Hi"\202;
-
- hello_t::name_sequence& ns \201h.name \201\202\202;
-
- ns.push_back \201"Jane"\202;
- ns.push_back \201"John"\202;
-
- // Serialize the object model to XML.
- //
- xml_schema::namespace_infomap map;
- map[""].name = "";
- map[""].schema = "hello.xsd";
-
- std::ofstream ofs \201argv[1]\202;
- hello \201ofs, h, map\202;
- }
- catch \201const xml_schema::exception& e\202
- {
- cerr << e << endl;
- return 1;)WR(
- }
-})RP(
-
- )0 P(In this example we used the gener)HY(ated)YH( construc)HY(tor)YH( to create
- an instance of type )SM(hello_t)ES(. To reduce typing,
- we obtained a refer)HY(ence)YH( to the name sequence which we then
- used to add a few names. The seri)HY(al)HY(iza)HY(tion)YH( part is iden)HY(ti)HY(cal)YH(
- to the previ)HY(ous)YH( example except this time we are writing to
- a file. If we compile and run this program, it produces the
- follow)HY(ing)YH( XML file:)EP(
-
- ) 10 60 PR(<?xml version="1.0"?>
-<hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="hello.xsd">
-
- <greeting>Hi</greeting>
-
- <name>Jane</name>
- <name>John</name>
-
-</hello>)RP(
-
- )0 2 12 H(2.6)WB 48 Sn()WB 15 Sn( Select)HY(ing)YH( Naming Conven)HY(tion)YH()EA()EH(
-
- )0 P(By default XSD uses the so-called K&R \201Kernighan and Ritchie\202
- iden)HY(ti)HY(fier)YH( naming conven)HY(tion)YH( in the gener)HY(ated)YH( code. In this
- conven)HY(tion)YH( both type and func)HY(tion)YH( names are in lower case and
- words are sepa)HY(rated)YH( by under)HY(scores)YH(. If your appli)HY(ca)HY(tion)YH( code or
- schemas use a differ)HY(ent)YH( nota)HY(tion)YH(, you may want to change the
- naming conven)HY(tion)YH( used in the gener)HY(ated)YH( code for consis)HY(tency)YH(.
- XSD supports a set of widely-used naming conven)HY(tions)YH(
- that you can select with the )SM(--type-naming)ES( and
- )SM(--func)HY(tion)YH(-naming)ES( options. You can also further
- refine one of the prede)HY(fined)YH( conven)HY(tions)YH( or create a completely
- custom naming scheme by using the )SM(--*-regex)ES( options.)EP(
-
- )0 P(As an example, let's assume that our "Hello World" appli)HY(ca)HY(tion)YH(
- uses the so-called upper-camel-case naming conven)HY(tion)YH( for types
- \201that is, each word in a type name is capi)HY(tal)HY(ized)YH(\202 and the K&R
- conven)HY(tion)YH( for func)HY(tion)YH( names. Since K&R is the default
- conven)HY(tion)YH( for both type and func)HY(tion)YH( names, we only need to
- change the type naming scheme:)EP(
-
- ) 1 42 PR($ xsd cxx-tree --type-naming ucc hello.xsd)RP(
-
- )0 P(The )SM(ucc)ES( argu)HY(ment)YH( to the )SM(--type-naming)ES(
- options stands for upper-camel-case. If we now examine the
- gener)HY(ated)YH( )SM(hello.hxx)ES(, we will see the follow)HY(ing)YH(
- changes compared to the decla)HY(ra)HY(tions)YH( shown in the previ)HY(ous)YH(
- sections:)EP(
-
- ) 45 57 PR(class Hello_t
-{
-public:
- // greeting
- //
- typedef xml_schema::String GreetingType;
-
- const GreetingType&
- greeting \201\202 const;
-
- GreetingType&
- greeting \201\202;
-
- void
- greeting \201const GreetingType& x\202;
-
- // name
- //
- typedef xml_schema::String NameType;
- typedef xsd::sequence<NameType> NameSequence;
- typedef NameSequence::iterator NameIterator;
- typedef NameSequence::const_iterator NameConstIterator;
-
- const NameSequence&
- name \201\202 const;
-
- NameSequence&
- name \201\202;
-
- void
- name \201const NameSequence& s\202;)WR(
-
- // Constructor.
- //
- Hello_t \201const GreetingType&\202;
-
- ...
-
-};
-
-std::auto_ptr<Hello_t>
-hello \201const std::string& uri\202;
-
-std::auto_ptr<Hello_t>
-hello \201std::istream&\202;)RP(
-
- )0 P(Notice that the type names in the )SM(xml_schema)ES( names)HY(pace)YH(,
- for example )SM(xml_schema::String)ES(, now also use the
- upper-camel-case naming conven)HY(tion)YH(. The only thing that we may
- be unhappy about in the above code is the )SM(_t)ES(
- suffix in )SM(Hello_t)ES(. If we are not in a posi)HY(tion)YH(
- to change the schema, we can )EM(touch-up)ES( the )SM(ucc)ES(
- conven)HY(tion)YH( with a custom trans)HY(la)HY(tion)YH( rule using the
- )SM(--type-regex)ES( option:)EP(
-
- ) 1 72 PR($ xsd cxx-tree --type-naming ucc --type-regex '/ \201.+\202_t/\200u$1/' hello.xsd)RP(
-
- )0 P(This results in the follow)HY(ing)YH( changes to the gener)HY(ated)YH( code:)EP(
-
- ) 45 57 PR(class Hello
-{
-public:
- // greeting
- //
- typedef xml_schema::String GreetingType;
-
- const GreetingType&
- greeting \201\202 const;
-
- GreetingType&
- greeting \201\202;
-
- void
- greeting \201const GreetingType& x\202;
-
- // name
- //
- typedef xml_schema::String NameType;
- typedef xsd::sequence<NameType> NameSequence;
- typedef NameSequence::iterator NameIterator;
- typedef NameSequence::const_iterator NameConstIterator;
-
- const NameSequence&
- name \201\202 const;
-
- NameSequence&
- name \201\202;
-
- void
- name \201const NameSequence& s\202;)WR(
-
- // Constructor.
- //
- Hello \201const GreetingType&\202;
-
- ...
-
-};
-
-std::auto_ptr<Hello>
-hello \201const std::string& uri\202;
-
-std::auto_ptr<Hello>
-hello \201std::istream&\202;)RP(
-
- )0 P(For more detailed infor)HY(ma)HY(tion)YH( on the )SM(--type-naming)ES(,
- )SM(--func)HY(tion)YH(-naming)ES(, )SM(--type-regex)ES(, and
- other )SM(--*-regex)ES( options refer to the NAMING
- CONVEN)HY(TION)YH( section in the )R4 2 A(XSD
- Compiler Command Line Manual)EA(.)EP(
-
- )0 2 13 H(2.7)WB 49 Sn()WB 16 Sn( Gener)HY(at)HY(ing)YH( Docu)HY(men)HY(ta)HY(tion)YH()EA()EH(
-
- )0 P(While our object model is quite simple, real-world vocab)HY(u)HY(lar)HY(ies)YH(
- can be quite complex with hundreds of types, elements, and
- attributes. For such vocab)HY(u)HY(lar)HY(ies)YH( figur)HY(ing)YH( out which types
- provide which member func)HY(tions)YH( by study)HY(ing)YH( the gener)HY(ated)YH(
- source code or schemas can be a daunt)HY(ing)YH( task. To provide
- appli)HY(ca)HY(tion)YH( devel)HY(op)HY(ers)YH( with a more acces)HY(si)HY(ble)YH( way of
- under)HY(stand)HY(ing)YH( the gener)HY(ated)YH( object models, the XSD compiler
- can be instructed to produce source code with docu)HY(men)HY(ta)HY(tion)YH(
- comments in the Doxygen format. Then the source code can be
- processed with the )R8 2 A(Doxygen)EA(
- docu)HY(men)HY(ta)HY(tion)YH( system to extract this infor)HY(ma)HY(tion)YH( and produce
- docu)HY(men)HY(ta)HY(tion)YH( in various formats.
- )EP(
-
- )0 P(In this section we will see how to gener)HY(ate)YH( docu)HY(men)HY(ta)HY(tion)YH(
- for our "Hello World" vocab)HY(u)HY(lary)YH(. To show)HY(case)YH( the full power
- of the XSD docu)HY(men)HY(ta)HY(tion)YH( facil)HY(i)HY(ties)YH(, we will first docu)HY(ment)YH(
- our schema. The XSD compiler will then trans)HY(fer)YH(
- this infor)HY(ma)HY(tion)YH( from the schema to the gener)HY(ated)YH( code and
- then to the object model docu)HY(men)HY(ta)HY(tion)YH(. Note that the
- docu)HY(men)HY(ta)HY(tion)YH( in the schema is not required for XSD to
- gener)HY(ate)YH( useful docu)HY(men)HY(ta)HY(tion)YH(. Below you will find
- our )SM(hello.xsd)ES( with added docu)HY(men)HY(ta)HY(tion)YH(:)EP(
-
- ) 43 69 PR(<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:complexType name="hello_t">
-
- <xs:annotation>
- <xs:documentation>
- The hello_t type consists of a greeting phrase and a
- collection of names to which this greeting applies.
- </xs:documentation>
- </xs:annotation>
-
- <xs:sequence>
-
- <xs:element name="greeting" type="xs:string">
- <xs:annotation>
- <xs:documentation>
- The greeting element contains the greeting phrase
- for this hello object.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="name" type="xs:string" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation>
- The name elements contains names to be greeted.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- </xs:sequence>)WR(
- </xs:complexType>
-
- <xs:element name="hello" type="hello_t">
- <xs:annotation>
- <xs:documentation>
- The hello element is a root of the Hello XML vocabulary.
- Every conforming document should start with this element.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
-</xs:schema>)RP(
-
- )0 P(The first step in obtain)HY(ing)YH( the docu)HY(men)HY(ta)HY(tion)YH( is to recom)HY(pile)YH(
- our schema with the )SM(--gener)HY(ate)YH(-doxygen)ES( option:)EP(
-
- ) 1 68 PR($ xsd cxx-tree --generate-serialization --generate-doxygen hello.xsd)RP(
-
- )0 P(Now the gener)HY(ated)YH( )SM(hello.hxx)ES( file contains comments
- in the Doxygen format. The next step is to process this file
- with the Doxygen docu)HY(men)HY(ta)HY(tion)YH( system. If your project does
- not use Doxygen then you first need to create a config)HY(u)HY(ra)HY(tion)YH(
- file for your project:)EP(
-
- ) 1 26 PR($ doxygen -g hello.doxygen)RP(
-
- )0 P(You only need to perform this step once. Now we can gener)HY(ate)YH(
- the docu)HY(men)HY(ta)HY(tion)YH( by execut)HY(ing)YH( the follow)HY(ing)YH( command in the
- direc)HY(tory)YH( with the gener)HY(ated)YH( source code:)EP(
-
- ) 1 23 PR($ doxygen hello.doxygen)RP(
-
- )0 P(While the gener)HY(ated)YH( docu)HY(men)HY(ta)HY(tion)YH( can be useful as is, we can
- go one step further and link \201using the Doxygen tags mech)HY(a)HY(nism)YH(\202
- the docu)HY(men)HY(ta)HY(tion)YH( for our object model with the docu)HY(men)HY(ta)HY(tion)YH(
- for the XSD runtime library which defines C++ classes for the
- built-in XML Schema types. This way we can seam)HY(lessly)YH( browse
- between docu)HY(men)HY(ta)HY(tion)YH( for the )SM(hello_t)ES( class which
- is gener)HY(ated)YH( by the XSD compiler and the )SM(xml_schema::string)ES(
- class which is defined in the XSD runtime library. The Doxygen
- config)HY(u)HY(ra)HY(tion)YH( file for the XSD runtime is provided with the XSD
- distri)HY(bu)HY(tion)YH(.)EP(
-
- )0 P(You can view the result of the steps described in this section
- on the )R9 2 A(Hello
- Example Docu)HY(men)HY(ta)HY(tion)YH()EA( page.)EP(
-
-
-
-
- )0 1 14 H(3)WB 50 Sn()WB 17 Sn( Overall Mapping Config)HY(u)HY(ra)HY(tion)YH()EA()EH(
-
- )0 P(The C++/Tree mapping has a number of config)HY(u)HY(ra)HY(tion)YH( param)HY(e)HY(ters)YH( that
- deter)HY(mine)YH( the overall prop)HY(er)HY(ties)YH( and behav)HY(ior)YH( of the gener)HY(ated)YH( code.
- Config)HY(u)HY(ra)HY(tion)YH( param)HY(e)HY(ters)YH( are spec)HY(i)HY(fied)YH( with the XSD command line
- options. This chapter describes config)HY(u)HY(ra)HY(tion)YH( aspects that are most
- commonly encoun)HY(tered)YH( by appli)HY(ca)HY(tion)YH( devel)HY(op)HY(ers)YH(. These include: the
- C++ stan)HY(dard)YH(, the char)HY(ac)HY(ter)YH( type that is used by the gener)HY(ated)YH( code,
- handling of vocab)HY(u)HY(lar)HY(ies)YH( that use XML Schema poly)HY(mor)HY(phism)YH(, XML Schema
- to C++ names)HY(pace)YH( mapping, and thread safety. For more ways to config)HY(ure)YH(
- the gener)HY(ated)YH( code refer to the
- )R4 2 A(XSD
- Compiler Command Line Manual)EA(.
- )EP(
-
- )0 2 15 H(3.1)WB 51 Sn()WB 18 Sn( C++ Stan)HY(dard)YH()EA()EH(
-
- )0 P(The C++/Tree mapping provides support for ISO/IEC C++ 1998/2003 \201C++98\202
- and ISO/IEC C++ 2011 \201C++11\202. To select the C++ stan)HY(dard)YH( for the
- gener)HY(ated)YH( code we use the )SM(--std)ES( XSD compiler command
- line option. While the major)HY(ity)YH( of the exam)HY(ples)YH( in this guide use
- C++98, support for the new func)HY(tion)HY(al)HY(ity)YH( and library compo)HY(nents)YH(
- intro)HY(duced)YH( in C++11 are discussed through)HY(out)YH( the docu)HY(ment)YH(.)EP(
-
- )0 2 16 H(3.2)WB 52 Sn()WB 19 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()EA()EH(
-
- )0 P(The C++/Tree mapping has built-in support for two char)HY(ac)HY(ter)YH( types:
- )SM(char)ES( and )SM(wchar_t)ES(. You can select the
- char)HY(ac)HY(ter)YH( type with the )SM(--char-type)ES( command line
- option. The default char)HY(ac)HY(ter)YH( type is )SM(char)ES(. The
- char)HY(ac)HY(ter)YH( type affects all string and string-based types that
- are used in the mapping. These include the string-based built-in
- XML Schema types, excep)HY(tion)YH( types, stream types, etc.)EP(
-
- )0 P(Another aspect of the mapping that depends on the char)HY(ac)HY(ter)YH( type
- is char)HY(ac)HY(ter)YH( encod)HY(ing)YH(. For the )SM(char)ES( char)HY(ac)HY(ter)YH( type
- the default encod)HY(ing)YH( is UTF-8. Other supported encod)HY(ings)YH( are
- ISO-8859-1, Xerces-C++ Local Code Page \201LPC\202, as well as
- custom encod)HY(ings)YH(. You can select which encod)HY(ing)YH( should be used
- in the object model with the )SM(--char-encod)HY(ing)YH()ES( command
- line option.)EP(
-
- )0 P(For the )SM(wchar_t)ES( char)HY(ac)HY(ter)YH( type the encod)HY(ing)YH( is
- auto)HY(mat)HY(i)HY(cally)YH( selected between UTF-16 and UTF-32/UCS-4 depend)HY(ing)YH(
- on the size of the )SM(wchar_t)ES( type. On some plat)HY(forms)YH(
- \201for example, Windows with Visual C++ and AIX with IBM XL C++\202
- )SM(wchar_t)ES( is 2 bytes long. For these plat)HY(forms)YH( the
- encod)HY(ing)YH( is UTF-16. On other plat)HY(forms)YH( )SM(wchar_t)ES( is 4 bytes
- long and UTF-32/UCS-4 is used.)EP(
-
- )0 P(Note also that the char)HY(ac)HY(ter)YH( encod)HY(ing)YH( that is used in the object model
- is inde)HY(pen)HY(dent)YH( of the encod)HY(ings)YH( used in input and output XML. In fact,
- all three \201object mode, input XML, and output XML\202 can have differ)HY(ent)YH(
- encod)HY(ings)YH(.)EP(
-
- )0 2 17 H(3.3)WB 53 Sn()WB 20 Sn( Support for Poly)HY(mor)HY(phism)YH()EA()EH(
-
- )0 P(By default XSD gener)HY(ates)YH( non-poly)HY(mor)HY(phic)YH( code. If your vocab)HY(u)HY(lary)YH(
- uses XML Schema poly)HY(mor)HY(phism)YH( in the form of )SM(xsi:type)ES(
- and/or substi)HY(tu)HY(tion)YH( groups, then you will need to compile
- your schemas with the )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option
- to produce poly)HY(mor)HY(phism)YH(-aware code. For more infor)HY(ma)HY(tion)YH( on
- working with poly)HY(mor)HY(phic)YH( object models, refer to
- )R10 2 A(Section 2.11,
- "Mapping for )SM(xsi:type)ES( and Substi)HY(tu)HY(tion)YH( Groups")EA( in
- the C++/Tree Mapping User Manual.)EP(
-
- )0 2 18 H(3.4)WB 54 Sn()WB 21 Sn( Names)HY(pace)YH( Mapping)EA()EH(
-
- )0 P(XSD maps XML names)HY(paces)YH( spec)HY(i)HY(fied)YH( in the )SM(target)HY(Names)HY(pace)YH()ES(
- attribute in XML Schema to one or more nested C++ names)HY(paces)YH(. By
- default, a names)HY(pace)YH( URI is mapped to a sequence of C++ names)HY(pace)YH(
- names by remov)HY(ing)YH( the proto)HY(col)YH( and host parts and split)HY(ting)YH( the
- rest into a sequence of names with )SM('/')ES( as the name
- sepa)HY(ra)HY(tor)YH(.)EP(
-
- )0 P(The default mapping of names)HY(pace)YH( URIs to C++ names)HY(paces)YH(
- can be altered using the )SM(--names)HY(pace)YH(-map)ES( and
- )SM(--names)HY(pace)YH(-regex)ES( compiler options. For example,
- to map names)HY(pace)YH( URI )SM(http://www.codesyn)HY(the)HY(sis)YH(.com/my)ES( to
- C++ names)HY(pace)YH( )SM(cs::my)ES(, we can use the follow)HY(ing)YH( option:)EP(
-
- ) 1 54 PR(--namespace-map http://www.codesynthesis.com/my=cs::my)RP(
-
- )0 P(A vocab)HY(u)HY(lary)YH( without a names)HY(pace)YH( is mapped to the global scope. This
- also can be altered with the above options by using an empty name
- for the XML names)HY(pace)YH(:)EP(
-
- ) 1 19 PR(--namespace-map =cs)RP(
-
- )0 2 19 H(3.5)WB 55 Sn()WB 22 Sn( Thread Safety)EA()EH(
-
- )0 P(XSD-gener)HY(ated)YH( code is thread-safe in the sense that you can
- use differ)HY(ent)YH( instan)HY(ti)HY(a)HY(tions)YH( of the object model in several
- threads concur)HY(rently)YH(. This is possi)HY(ble)YH( due to the gener)HY(ated)YH(
- code not relying on any writable global vari)HY(ables)YH(. If you need
- to share the same object between several threads then you will
- need to provide some form of synchro)HY(niza)HY(tion)YH(. One approach would
- be to use the gener)HY(ated)YH( code customiza)HY(tion)YH( mech)HY(a)HY(nisms)YH( to embed
- synchro)HY(niza)HY(tion)YH( prim)HY(i)HY(tives)YH( into the gener)HY(ated)YH( C++ classes. For more
- infor)HY(ma)HY(tion)YH( on gener)HY(ated)YH( code customiza)HY(tion)YH( refer to the
- )R2 2 A(C++/Tree
- Mapping Customiza)HY(tion)YH( Guide)EA(.)EP(
-
- )0 P(If you also would like to call parsing and/or seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tions)YH( from several threads poten)HY(tially)YH( concur)HY(rently)YH(, then
- you will need to make sure the Xerces-C++ runtime is initial)HY(ized)YH(
- and termi)HY(nated)YH( only once. The easiest way to do this is to
- initial)HY(ize)YH(/termi)HY(nate)YH( Xerces-C++ from )SM(main\201\202)ES( when
- there are no threads yet/anymore:)EP(
-
- ) 13 56 PR(#include <xercesc/util/PlatformUtils.hpp>
-
-int
-main \201\202
-{
- xercesc::XMLPlatformUtils::Initialize \201\202;
-
- {
- // Start/terminate threads and parse/serialize here.
- }
-
- xercesc::XMLPlatformUtils::Terminate \201\202;
-})RP(
-
- )0 P(Because you initial)HY(ize)YH( the Xerces-C++ runtime your)HY(self)YH( you should
- also pass the )SM(xml_schema::flags::dont_initial)HY(ize)YH()ES( flag
- to parsing and seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(. See )0 30 1 A(Chapter 5,
- "Parsing")30 0 TN TL()Ec /AF f D( and )0 33 1 A(Chapter 6, "Seri)HY(al)HY(iza)HY(tion)YH(")33 0 TN TL()Ec /AF f D( for
- more infor)HY(ma)HY(tion)YH(.)EP(
-
-
-
-
-
- )0 1 20 H(4)WB 56 Sn()WB 23 Sn( Working with Object Models)EA()EH(
-
- )0 P(As we have seen in the previ)HY(ous)YH( chap)HY(ters)YH(, the XSD compiler gener)HY(ates)YH(
- a C++ class for each type defined in XML Schema. Together these classes
- consti)HY(tute)YH( an object model for an XML vocab)HY(u)HY(lary)YH(. In this chapter we
- will take a closer look at differ)HY(ent)YH( elements that comprise an
- object model class as well as how to create, access, and modify
- object models.)EP(
-
- )0 P(In this and subse)HY(quent)YH( chap)HY(ters)YH( we will use the follow)HY(ing)YH( schema
- that describes a collec)HY(tion)YH( of person records. We save it in
- )SM(people.xsd)ES(:)EP(
-
- ) 30 71 PR(<?xml version="1.0"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:simpleType name="gender_t">
- <xs:restriction base="xs:string">
- <xs:enumeration value="male"/>
- <xs:enumeration value="female"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:complexType name="person_t">
- <xs:sequence>
- <xs:element name="first-name" type="xs:string"/>
- <xs:element name="middle-name" type="xs:string" minOccurs="0"/>
- <xs:element name="last-name" type="xs:string"/>
- <xs:element name="gender" type="gender_t"/>
- <xs:element name="age" type="xs:short"/>
- </xs:sequence>
- <xs:attribute name="id" type="xs:unsignedInt" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="people_t">
- <xs:sequence>
- <xs:element name="person" type="person_t" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:element name="people" type="people_t"/>
-
-</xs:schema>)RP(
-
- )0 P(A sample XML instance to go along with this schema is saved
- in )SM(people.xml)ES(:)EP(
-
- ) 20 61 PR(<?xml version="1.0"?>
-<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="people.xsd">
-
- <person id="1">
- <first-name>John</first-name>
- <last-name>Doe</last-name>
- <gender>male</gender>
- <age>32</age>
- </person>
-
- <person id="2">
- <first-name>Jane</first-name>
- <middle-name>Mary</middle-name>
- <last-name>Doe</last-name>
- <gender>female</gender>
- <age>28</age>
- </person>
-
-</people>)RP(
-
- )0 P(Compil)HY(ing)YH( )SM(people.xsd)ES( with the XSD compiler results
- in three gener)HY(ated)YH( C++ classes: )SM(gender_t)ES(,
- )SM(person_t)ES(, and )SM(people_t)ES(.
- The )SM(gender_t)ES( class is modelled after the C++
- )SM(enum)ES( type. Its defi)HY(ni)HY(tion)YH( is presented below:)EP(
-
- ) 17 41 PR(class gender_t: public xml_schema::string
-{
-public:
- enum value
- {
- male,
- female
- };
-
- gender_t \201value\202;
- gender_t \201const xml_schema::string&\202;
-
- gender_t&
- operator= \201value\202;
-
- operator value \201\202 const;
-};)RP(
-
- )0 P(The follow)HY(ing)YH( listing shows how we can use this type:)EP(
-
- ) 19 41 PR(gender_t m \201gender_t::male\202;
-gender_t f \201"female"\202;
-
-if \201m == "female" || f == gender_t::male\202
-{
- ...
-}
-
-switch \201m\202
-{
-case gender_t::male:
- {
- ...
- }
-case gender_t::female:
- {
- ...
- }
-})RP(
-
- )0 P(The other two classes will be exam)HY(ined)YH( in detail in the subse)HY(quent)YH(
- sections.)EP(
-
- )0 2 21 H(4.1)WB 57 Sn()WB 24 Sn( Attribute and Element Cardi)HY(nal)HY(i)HY(ties)YH()EA()EH(
-
- )0 P(As we have seen in the previ)HY(ous)YH( chap)HY(ters)YH(, XSD gener)HY(ates)YH( a differ)HY(ent)YH(
- set of type defi)HY(ni)HY(tions)YH( and member func)HY(tions)YH( for elements with
- differ)HY(ent)YH( cardi)HY(nal)HY(i)HY(ties)YH(. The C++/Tree mapping divides all the possi)HY(ble)YH(
- element and attribute cardi)HY(nal)HY(i)HY(ties)YH( into three cardi)HY(nal)HY(ity)YH( classes:
- )EM(one)ES(, )EM(optional)ES(, and )EM(sequence)ES(.)EP(
-
- )0 P(The )EM(one)ES( cardi)HY(nal)HY(ity)YH( class covers all elements that should
- occur exactly once as well as required attributes. In our
- example, the )SM(first-name)ES(, )SM(last-name)ES(,
- )SM(gender)ES(, and )SM(age)ES( elements as well as
- the )SM(id)ES( attribute belong to this cardi)HY(nal)HY(ity)YH( class.
- The follow)HY(ing)YH( code frag)HY(ment)YH( shows type defi)HY(ni)HY(tions)YH( as well as the
- acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( that are gener)HY(ated)YH( for the
- )SM(gender)ES( element in the )SM(person_t)ES( class:)EP(
-
- ) 15 31 PR(class person_t
-{
- // gender
- //
- typedef gender_t gender_type;
-
- const gender_type&
- gender \201\202 const;
-
- gender_type&
- gender \201\202;
-
- void
- gender \201const gender_type&\202;
-};)RP(
-
- )0 P(The )SM(gender_type)ES( type is an alias for the element's type.
- The first two acces)HY(sor)YH( func)HY(tions)YH( return read-only \201constant\202 and
- read-write refer)HY(ences)YH( to the element's value, respec)HY(tively)YH(. The
- modi)HY(fier)YH( func)HY(tion)YH( sets the new value for the element.)EP(
-
- )0 P(The )EM(optional)ES( cardi)HY(nal)HY(ity)YH( class covers all elements that
- can occur zero or one time as well as optional attributes. In our
- example, the )SM(middle-name)ES( element belongs to this
- cardi)HY(nal)HY(ity)YH( class. The follow)HY(ing)YH( code frag)HY(ment)YH( shows the type
- defi)HY(ni)HY(tions)YH( as well as the acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( that
- are gener)HY(ated)YH( for this element in the )SM(person_t)ES( class:)EP(
-
- ) 19 63 PR(class person_t
-{
- // middle-name
- //
- typedef xml_schema::string middle_name_type;
- typedef xsd::optional<middle_name_type> middle_name_optional;
-
- const middle_name_optional&
- middle_name \201\202 const;
-
- middle_name_optional&
- middle_name \201\202;
-
- void
- middle_name \201const middle_name_type&\202;
-
- void
- middle_name \201const middle_name_optional&\202;
-};)RP(
-
- )0 P(As with the )SM(gender)ES( element, )SM(middle_name_type)ES(
- is an alias for the element's type. The )SM(middle_name_optional)ES(
- type is a container for the element's optional value. It can be queried
- for the pres)HY(ence)YH( of the value using the )SM(present\201\202)ES( func)HY(tion)YH(.
- The value itself can be retrieved using the )SM(get\201\202)ES(
- acces)HY(sor)YH( and set using the )SM(set\201\202)ES( modi)HY(fier)YH(. The container
- can be reverted to the value not present state with the call to the
- )SM(reset\201\202)ES( func)HY(tion)YH(. The follow)HY(ing)YH( example shows how we
- can use this container:)EP(
-
- ) 9 42 PR(person_t::middle_name_optional n \201"John"\202;
-
-if \201n.present \201\202\202
-{
- cout << n.get \201\202 << endl;
-}
-
-n.set \201"Jane"\202;
-n.reset \201\202;)RP(
-
-
- )0 P(Unlike the )EM(one)ES( cardi)HY(nal)HY(ity)YH( class, the acces)HY(sor)YH( func)HY(tions)YH(
- for the )EM(optional)ES( class return read-only \201constant\202 and
- read-write refer)HY(ences)YH( to the container instead of the element's
- value directly. The modi)HY(fier)YH( func)HY(tions)YH( set the new value for the
- element.)EP(
-
- )0 P(Finally, the )EM(sequence)ES( cardi)HY(nal)HY(ity)YH( class covers all elements
- that can occur more than once. In our example, the
- )SM(person)ES( element in the )SM(people_t)ES( type
- belongs to this cardi)HY(nal)HY(ity)YH( class. The follow)HY(ing)YH( code frag)HY(ment)YH( shows
- the type defi)HY(ni)HY(tions)YH( as well as the acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH(
- that are gener)HY(ated)YH( for this element in the )SM(people_t)ES(
- class:)EP(
-
- ) 18 64 PR(class people_t
-{
- // person
- //
- typedef person_t person_type;
- typedef xsd::sequence<person_type> person_sequence;
- typedef person_sequence::iterator person_iterator;
- typedef person_sequence::const_iterator person_const_iterator;
-
- const person_sequence&
- person \201\202 const;
-
- person_sequence&
- person \201\202;
-
- void
- person \201const person_sequence&\202;
-};)RP(
-
- )0 P(Iden)HY(ti)HY(cal)YH( to the other cardi)HY(nal)HY(ity)YH( classes, )SM(person_type)ES(
- is an alias for the element's type. The )SM(person_sequence)ES(
- type is a sequence container for the element's values. It is based
- on and has the same inter)HY(face)YH( as )SM(std::vector)ES( and
- there)HY(fore)YH( can be used in similar ways. The )SM(person_iter)HY(a)HY(tor)YH()ES(
- and )SM(person_const_iter)HY(a)HY(tor)YH()ES( types are read-only
- \201constant\202 and read-write iter)HY(a)HY(tors)YH( for the )SM(person_sequence)ES(
- container.)EP(
-
- )0 P(Similar to the )EM(optional)ES( cardi)HY(nal)HY(ity)YH( class, the
- acces)HY(sor)YH( func)HY(tions)YH( for the )EM(sequence)ES( class return
- read-only \201constant\202 and read-write refer)HY(ences)YH( to the sequence
- container. The modi)HY(fier)YH( func)HY(tions)YH( copies the entries from
- the passed sequence.)EP(
-
- )0 P(C++/Tree is a "flat)HY(ten)HY(ing)YH(" mapping in a sense that many levels of
- nested compos)HY(i)HY(tors)YH( \201)SM(choice)ES( and )SM(sequence)ES(\202,
- all poten)HY(tially)YH( with their own cardi)HY(nal)HY(i)HY(ties)YH(, are in the end mapped
- to a flat set of elements with one of the three cardi)HY(nal)HY(ity)YH( classes
- discussed above. While this results in a simple and easy to use API
- for most types, in certain cases, the order of elements in the actual
- XML docu)HY(ments)YH( is not preserved once parsed into the object model. To
- over)HY(come)YH( this limi)HY(ta)HY(tion)YH( we can mark certain schema types, for which
- content order is not suffi)HY(ciently)YH( preserved, as ordered. For more
- infor)HY(ma)HY(tion)YH( on this func)HY(tion)HY(al)HY(ity)YH( refer to
- )R11 2 A(Section
- 2.8.4, "Element Order")EA( in the C++/Tree Mapping User Manual.)EP(
-
- )0 P(For complex schemas with many levels of nested compos)HY(i)HY(tors)YH(
- \201)SM(choice)ES( and )SM(sequence)ES(\202 it can also
- be hard to deduce the cardi)HY(nal)HY(ity)YH( class of a partic)HY(u)HY(lar)YH( element.
- The gener)HY(ated)YH( Doxygen docu)HY(men)HY(ta)HY(tion)YH( can greatly help with
- this task. For each element and attribute the docu)HY(men)HY(ta)HY(tion)YH(
- clearly iden)HY(ti)HY(fies)YH( its cardi)HY(nal)HY(ity)YH( class. Alter)HY(na)HY(tively)YH(, you
- can study the gener)HY(ated)YH( header files to find out the cardi)HY(nal)HY(ity)YH(
- class of a partic)HY(u)HY(lar)YH( attribute or element.)EP(
-
- )0 P(In the next sections we will examine how to access and modify
- infor)HY(ma)HY(tion)YH( stored in an object model using acces)HY(sor)YH( and modi)HY(fier)YH(
- func)HY(tions)YH( described in this section.)EP(
-
- )0 2 22 H(4.2)WB 58 Sn()WB 25 Sn( Access)HY(ing)YH( the Object Model)EA()EH(
-
- )0 P(In this section we will learn how to get to the infor)HY(ma)HY(tion)YH(
- stored in the object model for our person records vocab)HY(u)HY(lary)YH(.
- The follow)HY(ing)YH( appli)HY(ca)HY(tion)YH( accesses and prints the contents
- of the )SM(people.xml)ES( file:)EP(
-
- ) 36 70 PR(#include <iostream>
-#include "people.hxx"
-
-using namespace std;
-
-int
-main \201\202
-{
- auto_ptr<people_t> ppl \201people \201"people.xml"\202\202;
-
- // Iterate over individual person records.
- //
- people_t::person_sequence& ps \201ppl->person \201\202\202;
-
- for \201people_t::person_iterator i \201ps.begin \201\202\202; i != ps.end \201\202; ++i\202
- {
- person_t& p \201*i\202;
-
- // Print names: first-name and last-name are required elements,
- // middle-name is optional.
- //
- cout << "name: " << p.first_name \201\202 << " ";
-
- if \201p.middle_name \201\202.present \201\202\202
- cout << p.middle_name \201\202.get \201\202 << " ";
-
- cout << p.last_name \201\202 << endl;
-
- // Print gender, age, and id which are all required.
- //
- cout << "gender: " << p.gender \201\202 << endl)WR(
- << "age: " << p.age \201\202 << endl
- << "id: " << p.id \201\202 << endl
- << endl;
- }
-})RP(
-
- )0 P(This code shows common patterns of access)HY(ing)YH( elements and attributes
- with differ)HY(ent)YH( cardi)HY(nal)HY(ity)YH( classes. For the sequence element
- \201)SM(person)ES( in )SM(people_t)ES(\202 we first obtain a
- refer)HY(ence)YH( to the container and then iterate over indi)HY(vid)HY(ual)YH(
- records. The values of elements and attributes with the
- )EM(one)ES( cardi)HY(nal)HY(ity)YH( class \201)SM(first-name)ES(,
- )SM(last-name)ES(, )SM(gender)ES(, )SM(age)ES(,
- and )SM(id)ES(\202 can be obtained directly by calling the
- corre)HY(spond)HY(ing)YH( acces)HY(sor)YH( func)HY(tions)YH(. For the optional element
- )SM(middle-name)ES( we first check if the value is present
- and only then call )SM(get\201\202)ES( to retrieve it.)EP(
-
- )0 P(Note that when we want to reduce typing by creat)HY(ing)YH( a vari)HY(able)YH(
- repre)HY(sent)HY(ing)YH( a frag)HY(ment)YH( of the object model that we are currently
- working with \201)SM(ps)ES( and )SM(p)ES( above\202, we obtain
- a refer)HY(ence)YH( to that frag)HY(ment)YH( instead of making a poten)HY(tially)YH(
- expen)HY(sive)YH( copy. This is gener)HY(ally)YH( a good rule to follow when
- creat)HY(ing)YH( high-perfor)HY(mance)YH( appli)HY(ca)HY(tions)YH(.)EP(
-
- )0 P(If we run the above appli)HY(ca)HY(tion)YH( on our sample
- )SM(people.xml)ES(, the output looks as follows:)EP(
-
- ) 9 21 PR(name: John Doe
-gender: male
-age: 32
-id: 1
-
-name: Jane Mary Doe
-gender: female
-age: 28
-id: 2)RP(
-
-
- )0 2 23 H(4.3)WB 59 Sn()WB 26 Sn( Modi)HY(fy)HY(ing)YH( the Object Model)EA()EH(
-
- )0 P(In this section we will learn how to modify the infor)HY(ma)HY(tion)YH(
- stored in the object model for our person records vocab)HY(u)HY(lary)YH(.
- The follow)HY(ing)YH( appli)HY(ca)HY(tion)YH( changes the contents of the
- )SM(people.xml)ES( file:)EP(
-
- ) 43 70 PR(#include <iostream>
-#include "people.hxx"
-
-using namespace std;
-
-int
-main \201\202
-{
- auto_ptr<people_t> ppl \201people \201"people.xml"\202\202;
-
- // Iterate over individual person records and increment
- // the age.
- //
- people_t::person_sequence& ps \201ppl->person \201\202\202;
-
- for \201people_t::person_iterator i \201ps.begin \201\202\202; i != ps.end \201\202; ++i\202
- {
- // Alternative way: i->age \201\202++;
- //
- i->age \201i->age \201\202 + 1\202;
- }
-
- // Add middle-name to the first record and remove it from
- // the second.
- //
- person_t& john \201ps[0]\202;
- person_t& jane \201ps[1]\202;
-
- john.middle_name \201"Mary"\202;
- jane.middle_name \201\202.reset \201\202;
-)WR(
- // Add another John record.
- //
- ps.push_back \201john\202;
-
- // Serialize the modified object model to XML.
- //
- xml_schema::namespace_infomap map;
- map[""].name = "";
- map[""].schema = "people.xsd";
-
- people \201cout, *ppl, map\202;
-})RP(
-
- )0 P(The first modi)HY(fi)HY(ca)HY(tion)YH( the above appli)HY(ca)HY(tion)YH( performs is iter)HY(at)HY(ing)YH(
- over person records and incre)HY(ment)HY(ing)YH( the age value. This code
- frag)HY(ment)YH( shows how to modify the value of a required attribute
- or element. The next modi)HY(fi)HY(ca)HY(tion)YH( shows how to set a new value
- for the optional )SM(middle-name)ES( element as well
- as clear its value. Finally the example adds a copy of the
- John Doe record to the )SM(person)ES( element sequence.)EP(
-
- )0 P(Note that in this case using refer)HY(ences)YH( for the )SM(ps)ES(,
- )SM(john)ES(, and )SM(jane)ES( vari)HY(ables)YH( is no longer
- a perfor)HY(mance)YH( improve)HY(ment)YH( but a require)HY(ment)YH( for the appli)HY(ca)HY(tion)YH(
- to func)HY(tion)YH( correctly. If we hadn't used refer)HY(ences)YH(, all our changes
- would have been made on copies without affect)HY(ing)YH( the object model.)EP(
-
- )0 P(If we run the above appli)HY(ca)HY(tion)YH( on our sample )SM(people.xml)ES(,
- the output looks as follows:)EP(
-
- ) 28 61 PR(<?xml version="1.0"?>
-<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="people.xsd">
-
- <person id="1">
- <first-name>John</first-name>
- <middle-name>Mary</middle-name>
- <last-name>Doe</last-name>
- <gender>male</gender>
- <age>33</age>
- </person>
-
- <person id="2">
- <first-name>Jane</first-name>
- <last-name>Doe</last-name>
- <gender>female</gender>
- <age>29</age>
- </person>
-
- <person id="1">
- <first-name>John</first-name>
- <middle-name>Mary</middle-name>
- <last-name>Doe</last-name>
- <gender>male</gender>
- <age>33</age>
- </person>
-
-</people>)RP(
-
-
- )0 2 24 H(4.4)WB 60 Sn()WB 27 Sn( Creat)HY(ing)YH( the Object Model from Scratch)EA()EH(
-
- )0 P(In this section we will learn how to create a new object model
- for our person records vocab)HY(u)HY(lary)YH(. The follow)HY(ing)YH( appli)HY(ca)HY(tion)YH(
- recre)HY(ates)YH( the content of the orig)HY(i)HY(nal)YH( )SM(people.xml)ES(
- file:)EP(
-
- ) 42 48 PR(#include <iostream>
-#include "people.hxx"
-
-using namespace std;
-
-int
-main \201\202
-{
- people_t ppl;
- people_t::person_sequence& ps \201ppl.person \201\202\202;
-
- // Add the John Doe record.
- //
- ps.push_back \201
- person_t \201"John", // first-name
- "Doe", // last-name
- gender_t::male, // gender
- 32, // age
- 1\202\202;
-
- // Add the Jane Doe record.
- //
- ps.push_back \201
- person_t \201"Jane", // first-name
- "Doe", // last-name
- gender_t::female, // gender
- 28, // age
- 2\202\202; // id
-
- // Add middle name to the Jane Doe record.
- //)WR(
- person_t& jane \201ps.back \201\202\202;
- jane.middle_name \201"Mary"\202;
-
- // Serialize the object model to XML.
- //
- xml_schema::namespace_infomap map;
- map[""].name = "";
- map[""].schema = "people.xsd";
-
- people \201cout, ppl, map\202;
-})RP(
-
- )0 P(The only new part in the above appli)HY(ca)HY(tion)YH( is the calls
- to the )SM(people_t)ES( and )SM(person_t)ES(
- construc)HY(tors)YH(. As a general rule, for each C++ class
- XSD gener)HY(ates)YH( a construc)HY(tor)YH( with initial)HY(iz)HY(ers)YH(
- for each element and attribute belong)HY(ing)YH( to the )EM(one)ES(
- cardi)HY(nal)HY(ity)YH( class. For our vocab)HY(u)HY(lary)YH(, the follow)HY(ing)YH(
- construc)HY(tors)YH( are gener)HY(ated)YH(:)EP(
-
- ) 13 35 PR(class person_t
-{
- person_t \201const first_name_type&,
- const last_name_type&,
- const gender_type&,
- const age_type&,
- const id_type&\202;
-};
-
-class people_t
-{
- people_t \201\202;
-};)RP(
-
- )0 P(Note also that we set the )SM(middle-name)ES( element
- on the Jane Doe record by obtain)HY(ing)YH( a refer)HY(ence)YH( to that record
- in the object model and setting the )SM(middle-name)ES(
- value on it. This is a general rule that should be followed
- in order to obtain the best perfor)HY(mance)YH(: if possi)HY(ble)YH(,
- direct modi)HY(fi)HY(ca)HY(tions)YH( to the object model should be preferred
- to modi)HY(fi)HY(ca)HY(tions)YH( on tempo)HY(raries)YH( with subse)HY(quent)YH( copying. The
- follow)HY(ing)YH( code frag)HY(ment)YH( shows a seman)HY(ti)HY(cally)YH( equiv)HY(a)HY(lent)YH( but
- slightly slower version:)EP(
-
- ) 11 46 PR(// Add the Jane Doe record.
-//
-person_t jane \201"Jane", // first-name
- "Doe", // last-name
- gender_t::female, // gender
- 28, // age
- 2\202; // id
-
-jane.middle_name \201"Mary"\202;
-
-ps.push_back \201jane\202;)RP(
-
- )0 P(We can also go one step further to reduce copying and improve
- the perfor)HY(mance)YH( of our appli)HY(ca)HY(tion)YH( by using the non-copying
- )SM(push_back\201\202)ES( func)HY(tion)YH( which assumes owner)HY(ship)YH(
- of the passed objects:)EP(
-
- ) 19 55 PR(// Add the John Doe record. C++98 version.
-//
-auto_ptr<person_t> john_p \201
- new person_t \201"John", // first-name
- "Doe", // last-name
- gender_t::male, // gender
- 32, // age
- 1\202\202;
-ps.push_back \201john_p\202; // assumes ownership
-
-// Add the Jane Doe record. C++11 version
-//
-unique_ptr<person_t> jane_p \201
- new person_t \201"Jane", // first-name
- "Doe", // last-name
- gender_t::female, // gender
- 28, // age
- 2\202\202; // id
-ps.push_back \201std::move \201jane_p\202\202; // assumes ownership)RP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( on the non-copying modi)HY(fier)YH( func)HY(tions)YH( refer to
- )R12 2 A(Section
- 2.8, "Mapping for Local Elements and Attributes")EA( in the C++/Tree Mapping
- User Manual. The above appli)HY(ca)HY(tion)YH( produces the follow)HY(ing)YH( output:)EP(
-
- ) 20 61 PR(<?xml version="1.0" ?>
-<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="people.xsd">
-
- <person id="1">
- <first-name>John</first-name>
- <last-name>Doe</last-name>
- <gender>male</gender>
- <age>32</age>
- </person>
-
- <person id="2">
- <first-name>Jane</first-name>
- <middle-name>Mary</middle-name>
- <last-name>Doe</last-name>
- <gender>female</gender>
- <age>28</age>
- </person>
-
-</people>)RP(
-
- )0 2 25 H(4.5)WB 61 Sn()WB 28 Sn( Mapping for the Built-in XML Schema Types)EA()EH(
-
- )0 P(Our person record vocab)HY(u)HY(lary)YH( uses several built-in XML Schema
- types: )SM(string)ES(, )SM(short)ES(, and
- )SM(unsignedInt)ES(. Until now we haven't talked about
- the mapping of built-in XML Schema types to C++ types and how
- to work with them. This section provides an overview
- of the built-in types. For more detailed infor)HY(ma)HY(tion)YH( refer
- to )R13 2 A(Section
- 2.5, "Mapping for Built-in Data Types")EA( in the C++/Tree Mapping
- User Manual.)EP(
-
- )0 P(In XML Schema, built-in types are defined in the XML Schema names)HY(pace)YH(.
- By default, the C++/Tree mapping maps this names)HY(pace)YH( to C++
- names)HY(pace)YH( )SM(xml_schema)ES( \201this mapping can be altered
- with the )SM(--names)HY(pace)YH(-map)ES( option\202. The follow)HY(ing)YH( table
- summa)HY(rizes)YH( the mapping of XML Schema built-in types to C++ types:)EP(
-
-
- )0 PT(
-
- )0 P(As you can see from the table above a number of built-in
- XML Schema types are mapped to funda)HY(men)HY(tal)YH( C++ types such
- as )SM(int)ES( or )SM(bool)ES(. All string-based
- XML Schema types are mapped to C++ types that are derived
- from either )SM(std::string)ES( or
- )SM(std::wstring)ES(, depend)HY(ing)YH( on the char)HY(ac)HY(ter)YH(
- type selected. For access and modi)HY(fi)HY(ca)HY(tion)YH( purposes these
- types can be treated as )SM(std::string)ES(. A number
- of built-in types, such as )SM(qname)ES(, the binary
- types, and the date/time types do not have suit)HY(able)YH(
- funda)HY(men)HY(tal)YH( or stan)HY(dard)YH( C++ types to map to. As a result,
- these types are imple)HY(mented)YH( from scratch in the XSD runtime.
- For more infor)HY(ma)HY(tion)YH( on their inter)HY(faces)YH( refer to
- )R13 2 A(Section
- 2.5, "Mapping for Built-in Data Types")EA( in the C++/Tree Mapping
- User Manual.)EP(
-
-
-
-
-
- )0 1 26 H(5)WB 62 Sn()WB 30 Sn( Parsing)EA()EH(
-
- )0 P(We have already seen how to parse XML to an object model in this guide
- before. In this chapter we will discuss the parsing topic in more
- detail.)EP(
-
- )0 P(By default, the C++/Tree mapping provides a total of 14 over)HY(loaded)YH(
- parsing func)HY(tions)YH(. They differ in the input methods used to
- read XML as well as the error report)HY(ing)YH( mech)HY(a)HY(nisms)YH(. It is also possi)HY(ble)YH(
- to gener)HY(ate)YH( types for root elements instead of parsing and seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tions)YH(. This may be useful if your XML vocab)HY(u)HY(lary)YH( has multi)HY(ple)YH(
- root elements. For more infor)HY(ma)HY(tion)YH( on element types refer to
- )R14 2 A(Section
- 2.9, "Mapping for Global Elements")EA( in the C++/Tree Mapping User
- Manual.)EP(
-
-
- )0 P(In this section we will discuss the most commonly used versions of
- the parsing func)HY(tions)YH(. For a compre)HY(hen)HY(sive)YH( descrip)HY(tion)YH( of parsing
- refer to )R15 2 A(Chapter
- 3, "Parsing")EA( in the C++/Tree Mapping User Manual. For the )SM(people)ES(
- global element from our person record vocab)HY(u)HY(lary)YH(, we will concen)HY(trate)YH(
- on the follow)HY(ing)YH( three parsing func)HY(tions)YH(:)EP(
-
- ) 15 71 PR(std::[auto|unique]_ptr<people_t>
-people \201const std::string& uri,
- xml_schema::flags f = 0,
- const xml_schema::properties& p = xml_schema::properties \201\202\202;
-
-std::[auto|unique]_ptr<people_t>
-people \201std::istream& is,
- xml_schema::flags f = 0,
- const xml_schema::properties& p = xml_schema::properties \201\202\202;
-
-std::[auto|unique]_ptr<people_t>
-people \201std::istream& is,
- const std::string& resource_id,
- xml_schema::flags f = 0,
- const xml_schema::properties& p = ::xml_schema::properties \201\202\202;)RP(
-
- )0 P(The first func)HY(tion)YH( parses a local file or a URI. We have already
- used this parsing func)HY(tion)YH( in the previ)HY(ous)YH( chap)HY(ters)YH(. The second
- and third func)HY(tions)YH( read XML from a stan)HY(dard)YH( input stream. The
- last func)HY(tion)YH( also requires a resource id. This id is used to
- iden)HY(tify)YH( the XML docu)HY(ment)YH( being parser in diag)HY(nos)HY(tics)YH( messages
- as well as to resolve rela)HY(tive)YH( paths to other docu)HY(ments)YH( \201for example,
- schemas\202 that might be refer)HY(enced)YH( from the XML docu)HY(ment)YH(.)EP(
-
- )0 P(The last two argu)HY(ments)YH( to all three parsing func)HY(tions)YH( are parsing
- flags and prop)HY(er)HY(ties)YH(. The flags argu)HY(ment)YH( provides a number of ways
- to fine-tune the parsing process. The prop)HY(er)HY(ties)YH( argu)HY(ment)YH( allows
- to pass addi)HY(tional)YH( infor)HY(ma)HY(tion)YH( to the parsing func)HY(tions)YH(. We will
- use these two argu)HY(ments)YH( in )0 31 1 A(Section 5.1, "XML Schema
- Vali)HY(da)HY(tion)YH( and Search)HY(ing)YH(")31 0 TN TL()Ec /AF f D( below. All three func)HY(tions)YH( return
- the object model as either )SM(std::auto_ptr)ES( \201C++98\202 or
- )SM(std::unique_ptr)ES( \201C++11\202, depend)HY(ing)YH( on the C++ stan)HY(dard)YH(
- selected \201)SM(--std)ES( XSD compiler option\202. The follow)HY(ing)YH(
- example shows how we can use the above parsing func)HY(tions)YH(:)EP(
-
- ) 17 65 PR(using std::auto_ptr;
-
-// Parse a local file or URI.
-//
-auto_ptr<people_t> p1 \201people \201"people.xml"\202\202;
-auto_ptr<people_t> p2 \201people \201"http://example.com/people.xml"\202\202;
-
-// Parse a local file via ifstream.
-//
-std::ifstream ifs \201"people.xml"\202;
-auto_ptr<people_t> p3 \201people \201ifs, "people.xml"\202\202;
-
-// Parse an XML string.
-//
-std::string str \201"..."\202; // XML in a string.
-std::istringstream iss \201str\202;
-auto_ptr<people_t> p4 \201people \201iss\202\202;)RP(
-
-
- )0 2 27 H(5.1)WB 63 Sn()WB 31 Sn( XML Schema Vali)HY(da)HY(tion)YH( and Search)HY(ing)YH()EA()EH(
-
- )0 P(The C++/Tree mapping relies on the under)HY(ly)HY(ing)YH( Xerces-C++ XML
- parser for full XML docu)HY(ment)YH( vali)HY(da)HY(tion)YH(. The XML Schema
- vali)HY(da)HY(tion)YH( is enabled by default and can be disabled by
- passing the )SM(xml_schema::flags::dont_vali)HY(date)YH()ES(
- flag to the parsing func)HY(tions)YH(, for example:)EP(
-
- ) 2 59 PR(auto_ptr<people_t> p \201
- people \201"people.xml", xml_schema::flags::dont_validate\202\202;)RP(
-
- )0 P(Even when XML Schema vali)HY(da)HY(tion)YH( is disabled, the gener)HY(ated)YH(
- code still performs a number of checks to prevent
- construc)HY(tion)YH( of an incon)HY(sis)HY(tent)YH( object model \201for example, an
- object model with missing required attributes or elements\202.)EP(
-
- )0 P(When XML Schema vali)HY(da)HY(tion)YH( is enabled, the XML parser needs
- to locate a schema to vali)HY(date)YH( against. There are several
- methods to provide the schema loca)HY(tion)YH( infor)HY(ma)HY(tion)YH( to the
- parser. The easiest and most commonly used method is to
- specify schema loca)HY(tions)YH( in the XML docu)HY(ment)YH( itself
- with the )SM(schemaLo)HY(ca)HY(tion)YH()ES( or
- )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES( attributes, for example:)EP(
-
- ) 4 74 PR(<?xml version="1.0" ?>
-<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="people.xsd"
- xsi:schemaLocation="http://www.w3.org/XML/1998/namespace xml.xsd">)RP(
-
- )0 P(As you might have noticed, we used this method in all the sample XML
- docu)HY(ments)YH( presented in this guide up until now. Note that the
- schema loca)HY(tions)YH( spec)HY(i)HY(fied)YH( with these two attributes are rela)HY(tive)YH(
- to the docu)HY(ment)YH('s path unless they are abso)HY(lute)YH( URIs \201that is
- start with )SM(http://)ES(, )SM(file://)ES(, etc.\202.
- In partic)HY(u)HY(lar)YH(, if you specify just file names as your schema
- loca)HY(tions)YH(, as we did above, then the schemas should reside in
- the same direc)HY(tory)YH( as the XML docu)HY(ment)YH( itself.)EP(
-
- )0 P(Another method of provid)HY(ing)YH( the schema loca)HY(tion)YH( infor)HY(ma)HY(tion)YH(
- is via the )SM(xml_schema::prop)HY(er)HY(ties)YH()ES( argu)HY(ment)YH(, as
- shown in the follow)HY(ing)YH( example:)EP(
-
- ) 5 74 PR(xml_schema::properties props;
-props.no_namespace_schema_location \201"people.xsd"\202;
-props.schema_location \201"http://www.w3.org/XML/1998/namespace", "xml.xsd"\202;
-
-auto_ptr<people_t> p \201people \201"people.xml", 0, props\202\202;)RP(
-
- )0 P(The schema loca)HY(tions)YH( provided with this method over)HY(rides)YH(
- those spec)HY(i)HY(fied)YH( in the XML docu)HY(ment)YH(. As with the previ)HY(ous)YH(
- method, the schema loca)HY(tions)YH( spec)HY(i)HY(fied)YH( this way are
- rela)HY(tive)YH( to the docu)HY(ment)YH('s path unless they are abso)HY(lute)YH( URIs.
- In partic)HY(u)HY(lar)YH(, if you want to use local schemas that are
- not related to the docu)HY(ment)YH( being parsed, then you will
- need to use the )SM(file://)ES( URI. The follow)HY(ing)YH(
- example shows how to use schemas that reside in the current
- working direc)HY(tory)YH(:)EP(
-
- ) 19 55 PR(#include <unistd.h> // getcwd
-#include <limits.h> // PATH_MAX
-
-char cwd[PATH_MAX];
-if \201getcwd \201cwd, PATH_MAX\202 == 0\202
-{
- // Buffer too small?
-}
-
-xml_schema::properties props;
-
-props.no_namespace_schema_location \201
- "file:///" + std::string \201cwd\202 + "/people.xsd"\202;
-
-props.schema_location \201
- "http://www.w3.org/XML/1998/namespace",
- "file:///" + std::string \201cwd\202 + "/xml.xsd"\202;
-
-auto_ptr<people_t> p \201people \201"people.xml", 0, props\202\202;)RP(
-
- )0 P(A third method is the most useful if you are plan)HY(ning)YH( to parse
- several XML docu)HY(ments)YH( of the same vocab)HY(u)HY(lary)YH(. In that case
- it may be bene)HY(fi)HY(cial)YH( to pre-parse and cache the schemas in
- the XML parser which can then be used to parse all docu)HY(ments)YH(
- without re-parsing the schemas. For more infor)HY(ma)HY(tion)YH( on
- this method refer to the )SM(caching)ES( example in the
- )SM(exam)HY(ples)YH(/cxx/tree/)ES( direc)HY(tory)YH( of the XSD
- distri)HY(bu)HY(tion)YH(. It is also possi)HY(ble)YH( to convert the schemas into
- a pre-compiled binary repre)HY(sen)HY(ta)HY(tion)YH( and embed this repre)HY(sen)HY(ta)HY(tion)YH(
- directly into the appli)HY(ca)HY(tion)YH( executable. With this approach your
- appli)HY(ca)HY(tion)YH( can perform XML Schema vali)HY(da)HY(tion)YH( without depend)HY(ing)YH( on
- any exter)HY(nal)YH( schema files. For more infor)HY(ma)HY(tion)YH( on how to achieve
- this refer to the )SM(embed)HY(ded)YH()ES( example in the
- )SM(exam)HY(ples)YH(/cxx/tree/)ES( direc)HY(tory)YH( of the XSD distri)HY(bu)HY(tion)YH(.)EP(
-
- )0 P(When the XML parser cannot locate a schema for the
- XML docu)HY(ment)YH(, the vali)HY(da)HY(tion)YH( fails and XML docu)HY(ment)YH(
- elements and attributes for which schema defi)HY(ni)HY(tions)YH( could
- not be located are reported in the diag)HY(nos)HY(tics)YH(. For
- example, if we remove the )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES(
- attribute in )SM(people.xml)ES( from the previ)HY(ous)YH( chapter,
- then we will get the follow)HY(ing)YH( diag)HY(nos)HY(tics)YH( if we try to parse
- this file with vali)HY(da)HY(tion)YH( enabled:)EP(
-
- ) 8 74 PR(people.xml:2:63 error: no declaration found for element 'people'
-people.xml:4:18 error: no declaration found for element 'person'
-people.xml:4:18 error: attribute 'id' is not declared for element 'person'
-people.xml:5:17 error: no declaration found for element 'first-name'
-people.xml:6:18 error: no declaration found for element 'middle-name'
-people.xml:7:16 error: no declaration found for element 'last-name'
-people.xml:8:13 error: no declaration found for element 'gender'
-people.xml:9:10 error: no declaration found for element 'age')RP(
-
- )0 2 28 H(5.2)WB 64 Sn()WB 32 Sn( Error Handling)EA()EH(
-
- )0 P(The parsing func)HY(tions)YH( offer a number of ways to handle error condi)HY(tions)YH(
- with the C++ excep)HY(tions)YH( being the most commonly used mech)HY(a)HY(nism)YH(. All
- C++/Tree excep)HY(tions)YH( derive from common base )SM(xml_schema::excep)HY(tion)YH()ES(
- which in turn derives from )SM(std::excep)HY(tion)YH()ES(. The easiest
- way to uniformly handle all possi)HY(ble)YH( C++/Tree excep)HY(tions)YH( and print
- detailed infor)HY(ma)HY(tion)YH( about the error is to catch and print
- )SM(xml_schema::excep)HY(tion)YH()ES(, as shown in the follow)HY(ing)YH(
- example:)EP(
-
- ) 8 47 PR(try
-{
- auto_ptr<people_t> p \201people \201"people.xml"\202\202;
-}
-catch \201const xml_schema::exception& e\202
-{
- cerr << e << endl;
-})RP(
-
- )0 P(Each indi)HY(vid)HY(ual)YH( C++/Tree excep)HY(tion)YH( also allows you to obtain
- error details program)HY(mat)HY(i)HY(cally)YH(. For example, the
- )SM(xml_schema::parsing)ES( excep)HY(tion)YH( is thrown when
- the XML parsing and vali)HY(da)HY(tion)YH( in the under)HY(ly)HY(ing)YH( XML parser
- fails. It encap)HY(su)HY(lates)YH( various diag)HY(nos)HY(tics)YH( infor)HY(ma)HY(tion)YH(
- such as the file name, line and column numbers, as well as the
- error or warning message for each entry. For more infor)HY(ma)HY(tion)YH(
- about this and other excep)HY(tions)YH( that can be thrown during
- parsing, refer to
- )R16 2 A(Section
- 3.3, "Error Handling")EA( in the C++/Tree Mapping
- User Manual.)EP(
-
- )0 P(Note that if you are parsing )SM(std::istream)ES( on which
- excep)HY(tions)YH( are not enabled, then you will need to check the
- stream state after the call to the parsing func)HY(tion)YH( in order
- to detect any possi)HY(ble)YH( stream fail)HY(ures)YH(, for example:)EP(
-
- ) 15 50 PR(std::ifstream ifs \201"people.xml"\202;
-
-if \201ifs.fail \201\202\202
-{
- cerr << "people.xml: unable to open" << endl;
- return 1;
-}
-
-auto_ptr<people_t> p \201people \201ifs, "people.xml"\202\202;
-
-if \201ifs.fail \201\202\202
-{
- cerr << "people.xml: read error" << endl;
- return 1;
-})RP(
-
- )0 P(The above example can be rewrit)HY(ten)YH( to use excep)HY(tions)YH( as
- shown below:)EP(
-
- ) 13 66 PR(try
-{
- std::ifstream ifs;
- ifs.exceptions \201std::ifstream::badbit | std::ifstream::failbit\202;
- ifs.open \201"people.xml"\202;
-
- auto_ptr<people_t> p \201people \201ifs, "people.xml"\202\202;
-}
-catch \201const std::ifstream::failure&\202
-{
- cerr << "people.xml: unable to open or read error" << endl;
- return 1;
-})RP(
-
-
-
-
-
- )0 1 29 H(6)WB 65 Sn()WB 33 Sn( Seri)HY(al)HY(iza)HY(tion)YH()EA()EH(
-
- )0 P(We have already seen how to seri)HY(al)HY(ize)YH( an object model back to XML
- in this guide before. In this chapter we will discuss the
- seri)HY(al)HY(iza)HY(tion)YH( topic in more detail.)EP(
-
- )0 P(By default, the C++/Tree mapping provides a total of 8 over)HY(loaded)YH(
- seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(. They differ in the output methods used to write
- XML as well as the error report)HY(ing)YH( mech)HY(a)HY(nisms)YH(. It is also possi)HY(ble)YH( to
- gener)HY(ate)YH( types for root elements instead of parsing and seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tions)YH(. This may be useful if your XML vocab)HY(u)HY(lary)YH( has multi)HY(ple)YH(
- root elements. For more infor)HY(ma)HY(tion)YH( on element types refer to
- )R14 2 A(Section
- 2.9, "Mapping for Global Elements")EA( in the C++/Tree Mapping User
- Manual.)EP(
-
-
- )0 P(In this section we will discuss the most commonly
- used version of seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(. For a compre)HY(hen)HY(sive)YH( descrip)HY(tion)YH(
- of seri)HY(al)HY(iza)HY(tion)YH( refer to
- )R17 2 A(Chapter
- 4, "Seri)HY(al)HY(iza)HY(tion)YH(")EA( in the C++/Tree Mapping User Manual. For the
- )SM(people)ES( global element from our person record vocab)HY(u)HY(lary)YH(,
- we will concen)HY(trate)YH( on the follow)HY(ing)YH( seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(:)EP(
-
- ) 7 50 PR(void
-people \201std::ostream& os,
- const people_t& x,
- const xml_schema::namespace_infomap& map =
- xml_schema::namespace_infomap \201\202,
- const std::string& encoding = "UTF-8",
- xml_schema::flags f = 0\202;)RP(
-
- )0 P(This func)HY(tion)YH( seri)HY(al)HY(izes)YH( the object model passed as the second
- argu)HY(ment)YH( to the stan)HY(dard)YH( output stream passed as the first
- argu)HY(ment)YH(. The third argu)HY(ment)YH( is a names)HY(pace)YH( infor)HY(ma)HY(tion)YH( map
- which we will discuss in more detail in the next section.
- The fourth argu)HY(ment)YH( is a char)HY(ac)HY(ter)YH( encod)HY(ing)YH( that the result)HY(ing)YH(
- XML docu)HY(ment)YH( should be in. Possi)HY(ble)YH( valid values for this
- argu)HY(ment)YH( are "US-ASCII", "ISO8859-1", "UTF-8", "UTF-16BE",
- "UTF-16LE", "UCS-4BE", and "UCS-4LE". Finally, the flags
- argu)HY(ment)YH( allows fine-tuning of the seri)HY(al)HY(iza)HY(tion)YH( process.
- The follow)HY(ing)YH( example shows how we can use the above seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tion)YH(:)EP(
-
- ) 19 34 PR(people_t& p = ...
-
-xml_schema::namespace_infomap map;
-map[""].schema = "people.xsd";
-
-// Serialize to stdout.
-//
-people \201std::cout, p, map\202;
-
-// Serialize to a file.
-//
-std::ofstream ofs \201"people.xml"\202;
-people \201ofs, p, map\202;
-
-// Serialize to a string.
-//
-std::ostringstream oss;
-people \201oss, p, map\202;
-std::string xml \201oss.str \201\202\202;)RP(
-
-
- )0 2 30 H(6.1)WB 66 Sn()WB 34 Sn( Names)HY(pace)YH( and Schema Infor)HY(ma)HY(tion)YH()EA()EH(
-
- )0 P(While XML seri)HY(al)HY(iza)HY(tion)YH( can be done just from the object
- model alone, it is often desir)HY(able)YH( to assign mean)HY(ing)HY(ful)YH(
- prefixes to XML names)HY(paces)YH( used in the vocab)HY(u)HY(lary)YH( as
- well as to provide the schema loca)HY(tion)YH( infor)HY(ma)HY(tion)YH(.
- This is accom)HY(plished)YH( by passing the names)HY(pace)YH( infor)HY(ma)HY(tion)YH(
- map to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(. The key in this map is
- a names)HY(pace)YH( prefix that should be assigned to an XML names)HY(pace)YH(
- spec)HY(i)HY(fied)YH( in the )SM(name)ES( vari)HY(able)YH( of the
- map value. You can also assign an optional schema loca)HY(tion)YH( for
- this names)HY(pace)YH( in the )SM(schema)ES( vari)HY(able)YH(. Based
- on each key-value entry in this map, the seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tion)YH( adds two attributes to the result)HY(ing)YH( XML docu)HY(ment)YH(:
- the names)HY(pace)YH(-prefix mapping attribute and schema loca)HY(tion)YH(
- attribute. The empty prefix indi)HY(cates)YH( that the names)HY(pace)YH(
- should be mapped without a prefix. For example, the follow)HY(ing)YH(
- map:)EP(
-
- ) 7 55 PR(xml_schema::namespace_infomap map;
-
-map[""].name = "http://www.example.com/example";
-map[""].schema = "example.xsd";
-
-map["x"].name = "http://www.w3.org/XML/1998/namespace";
-map["x"].schema = "xml.xsd";)RP(
-
- )0 P(Results in the follow)HY(ing)YH( XML docu)HY(ment)YH(:)EP(
-
- ) 7 68 PR(<?xml version="1.0" ?>
-<example
- xmlns="http://www.example.com/example"
- xmlns:x="http://www.w3.org/XML/1998/namespace"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.example.com/example example.xsd
- http://www.w3.org/XML/1998/namespace xml.xsd">)RP(
-
- )0 P(The empty names)HY(pace)YH( indi)HY(cates)YH( that the vocab)HY(u)HY(lary)YH( has no target
- names)HY(pace)YH(. For example, the follow)HY(ing)YH( map results in only the
- )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES( attribute being added:)EP(
-
- ) 4 34 PR(xml_schema::namespace_infomap map;
-
-map[""].name = "";
-map[""].schema = "example.xsd";)RP(
-
- )0 2 31 H(6.2)WB 67 Sn()WB 35 Sn( Error Handling)EA()EH(
-
- )0 P(Similar to the parsing func)HY(tions)YH(, the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( offer a
- number of ways to handle error condi)HY(tions)YH( with the C++ excep)HY(tions)YH( being
- the most commonly used mech)HY(a)HY(nisms)YH(. As with parsing, the easiest way to
- uniformly handle all possi)HY(ble)YH( seri)HY(al)HY(iza)HY(tion)YH( excep)HY(tions)YH( and print
- detailed infor)HY(ma)HY(tion)YH( about the error is to catch and print
- )SM(xml_schema::excep)HY(tion)YH()ES(:)EP(
-
- ) 13 38 PR(try
-{
- people_t& p = ...
-
- xml_schema::namespace_infomap map;
- map[""].schema = "people.xsd";
-
- people \201std::cout, p, map\202\202;
-}
-catch \201const xml_schema::exception& e\202
-{
- cerr << e << endl;
-})RP(
-
- )0 P(The most commonly encoun)HY(tered)YH( seri)HY(al)HY(iza)HY(tion)YH( excep)HY(tion)YH( is
- )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES(. It is thrown
- when the XML seri)HY(al)HY(iza)HY(tion)YH( in the under)HY(ly)HY(ing)YH( XML writer
- fails. It encap)HY(su)HY(lates)YH( various diag)HY(nos)HY(tics)YH( infor)HY(ma)HY(tion)YH(
- such as the file name, line and column numbers, as well as the
- error or warning message for each entry. For more infor)HY(ma)HY(tion)YH(
- about this and other excep)HY(tions)YH( that can be thrown during
- seri)HY(al)HY(iza)HY(tion)YH(, refer to
- )R18 2 A(Section
- 4.4, "Error Handling")EA( in the C++/Tree Mapping
- User Manual.)EP(
-
- )0 P(Note that if you are seri)HY(al)HY(iz)HY(ing)YH( to )SM(std::ostream)ES( on
- which excep)HY(tions)YH( are not enabled, then you will need to check the
- stream state after the call to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH( in order
- to detect any possi)HY(ble)YH( stream fail)HY(ures)YH(, for example:)EP(
-
- ) 15 47 PR(std::ofstream ofs \201"people.xml"\202;
-
-if \201ofs.fail \201\202\202
-{
- cerr << "people.xml: unable to open" << endl;
- return 1;
-}
-
-people \201ofs, p, map\202\202;
-
-if \201ofs.fail \201\202\202
-{
- cerr << "people.xml: write error" << endl;
- return 1;
-})RP(
-
- )0 P(The above example can be rewrit)HY(ten)YH( to use excep)HY(tions)YH( as
- shown below:)EP(
-
- ) 13 66 PR(try
-{
- std::ofstream ofs;
- ofs.exceptions \201std::ofstream::badbit | std::ofstream::failbit\202;
- ofs.open \201"people.xml"\202;
-
- people \201ofs, p, map\202\202;
-}
-catch \201const std::ofstream::failure&\202
-{
- cerr << "people.xml: unable to open or write error" << endl;
- return 1;
-})RP(
-
- )BR(
-)BR(
-
-)WB NL
-/TE t D NP /OU t D TU PM 1 eq and{/Pn () D showpage}if end restore
diff --git a/xsd/doc/cxx/tree/guide/guide.html2ps b/xsd/doc/cxx/tree/guide/guide.html2ps
deleted file mode 100644
index fbdaaf5..0000000
--- a/xsd/doc/cxx/tree/guide/guide.html2ps
+++ /dev/null
@@ -1,65 +0,0 @@
-@html2ps {
- option {
- toc: hb;
- colour: 1;
- hyphenate: 1;
- titlepage: 1;
- }
-
- datefmt: "%B %Y";
-
- titlepage {
- content: "
-<div align=center>
- <h1><big>C++/Tree Mapping</big></h1>
- <h1><big>Getting Started Guide</big></h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
-</div>
- <p>Copyright &copy; 2005-2014 CODE SYNTHESIS TOOLS CC</p>
-
- <p>Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- <a href='http://www.codesynthesis.com/licenses/fdl-1.2.txt'>GNU Free
- Documentation License, version 1.2</a>; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- </p>
-
- <p>This document is available in the following formats:
- <a href='http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/index.xhtml'>XHTML</a>,
- <a href='http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-parser-guide.pdf'>PDF</a>, and
- <a href='http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-parser-guide.ps'>PostScript</a>.</p>";
- }
-
- toc {
- indent: 2em;
- }
-
- header {
- odd-right: $H;
- even-left: $H;
- }
-
- footer {
- odd-left: $D;
- odd-center: $T;
- odd-right: $N;
-
- even-left: $N;
- even-center: $T;
- even-right: $D;
- }
-}
-
-body {
- font-size: 12pt;
- text-align: justify;
-}
-
-pre {
- font-size: 10pt;
-}
diff --git a/xsd/doc/cxx/tree/guide/index.xhtml b/xsd/doc/cxx/tree/guide/index.xhtml
deleted file mode 100644
index 49ad3a6..0000000
--- a/xsd/doc/cxx/tree/guide/index.xhtml
+++ /dev/null
@@ -1,2732 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
-
-<head>
- <title>C++/Tree Mapping Getting Started Guide</title>
-
- <meta name="copyright" content="&copy; 2005-2014 Code Synthesis Tools CC"/>
- <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,parsing,serialization,validation"/>
- <meta name="description" content="C++/Tree Mapping Getting Started Guide"/>
-
- <link rel="stylesheet" type="text/css" href="../../../default.css" />
-
-<style type="text/css">
- pre {
- padding : 0 0 0 0em;
- margin : 0em 0em 0em 0;
-
- font-size : 102%
- }
-
- body {
- min-width: 48em;
- }
-
- h1 {
- font-weight: bold;
- font-size: 200%;
- line-height: 1.2em;
- }
-
- h2 {
- font-weight : bold;
- font-size : 150%;
-
- padding-top : 0.8em;
- }
-
- h3 {
- font-size : 140%;
- padding-top : 0.8em;
- }
-
- /* Adjust indentation for three levels. */
- #container {
- max-width: 48em;
- }
-
- #content {
- padding: 0 0.1em 0 4em;
- /*background-color: red;*/
- }
-
- #content h1 {
- margin-left: -2.06em;
- }
-
- #content h2 {
- margin-left: -1.33em;
- }
-
- /* Title page */
-
- #titlepage {
- padding: 2em 0 1em 0;
- border-bottom: 1px solid black;
- }
-
- #titlepage .title {
- font-weight: bold;
- font-size: 200%;
- text-align: center;
- }
-
- #titlepage #first-title {
- padding: 1em 0 0.4em 0;
- }
-
- #titlepage #second-title {
- padding: 0.4em 0 2em 0;
- }
-
- /* Lists */
- ul.list li {
- padding-top : 0.3em;
- padding-bottom : 0.3em;
- }
-
- div.img {
- text-align: center;
- padding: 2em 0 2em 0;
- }
-
- /* */
- dl dt {
- padding : 0.8em 0 0 0;
- }
-
- /* Built-in table */
- #builtin {
- margin: 2em 0 2em 0;
-
- border-collapse : collapse;
- border : 1px solid;
- border-color : #000000;
-
- font-size : 11px;
- line-height : 14px;
- }
-
- #builtin th, #builtin td {
- border: 1px solid;
- padding : 0.9em 0.9em 0.7em 0.9em;
- }
-
- #builtin th {
- background : #cde8f6;
- }
-
- #builtin td {
- text-align: left;
- }
-
- /* TOC */
- table.toc {
- border-style : none;
- border-collapse : separate;
- border-spacing : 0;
-
- margin : 0.2em 0 0.2em 0;
- padding : 0 0 0 0;
- }
-
- table.toc tr {
- padding : 0 0 0 0;
- margin : 0 0 0 0;
- }
-
- table.toc * td, table.toc * th {
- border-style : none;
- margin : 0 0 0 0;
- vertical-align : top;
- }
-
- table.toc * th {
- font-weight : normal;
- padding : 0em 0.1em 0em 0;
- text-align : left;
- white-space : nowrap;
- }
-
- table.toc * table.toc th {
- padding-left : 1em;
- }
-
- table.toc * td {
- padding : 0em 0 0em 0.7em;
- text-align : left;
- }
-</style>
-
-
-</head>
-
-<body>
-<div id="container">
- <div id="content">
-
- <div class="noprint">
-
- <div id="titlepage">
- <div class="title" id="first-title">C++/Tree Mapping</div>
- <div class="title" id="second-title">Getting Started Guide</div>
-
- <p>Copyright &copy; 2005-2014 CODE SYNTHESIS TOOLS CC</p>
-
- <p>Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- <a href="http://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
- Documentation License, version 1.2</a>; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- </p>
-
- <p>This document is available in the following formats:
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/index.xhtml">XHTML</a>,
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-tree-guide.pdf">PDF</a>, and
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/cxx-tree-guide.ps">PostScript</a>.</p>
-
- </div>
-
- <h1>Table of Contents</h1>
-
- <table class="toc">
- <tr>
- <th></th><td><a href="#0">Preface</a>
- <table class="toc">
- <tr><th></th><td><a href="#0.1">About This Document</a></td></tr>
- <tr><th></th><td><a href="#0.2">More Information</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>1</th><td><a href="#1">Introduction</a>
- <table class="toc">
- <tr><th>1.1</th><td><a href="#1.1">Mapping Overview</a></td></tr>
- <tr><th>1.2</th><td><a href="#1.2">Benefits</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>2</th><td><a href="#2">Hello World Example</a>
- <table class="toc">
- <tr><th>2.1</th><td><a href="#2.1">Writing XML Document and Schema</a></td></tr>
- <tr><th>2.2</th><td><a href="#2.2">Translating Schema to C++</a></td></tr>
- <tr><th>2.3</th><td><a href="#2.3">Implementing Application Logic</a></td></tr>
- <tr><th>2.4</th><td><a href="#2.4">Compiling and Running</a></td></tr>
- <tr><th>2.5</th><td><a href="#2.5">Adding Serialization</a></td></tr>
- <tr><th>2.6</th><td><a href="#2.6">Selecting Naming Convention</a></td></tr>
- <tr><th>2.7</th><td><a href="#2.7">Generating Documentation</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>3</th><td><a href="#3">Overall Mapping Configuration</a>
- <table class="toc">
- <tr><th>3.1</th><td><a href="#3.1">C++ Standard</a></td></tr>
- <tr><th>3.2</th><td><a href="#3.2">Character Type and Encoding</a></td></tr>
- <tr><th>3.3</th><td><a href="#3.3">Support for Polymorphism </a></td></tr>
- <tr><th>3.4</th><td><a href="#3.4">Namespace Mapping</a></td></tr>
- <tr><th>3.5</th><td><a href="#3.5">Thread Safety</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>4</th><td><a href="#4">Working with Object Models</a>
- <table class="toc">
- <tr><th>4.1</th><td><a href="#4.1">Attribute and Element Cardinalities</a></td></tr>
- <tr><th>4.2</th><td><a href="#4.2">Accessing the Object Model</a></td></tr>
- <tr><th>4.3</th><td><a href="#4.3">Modifying the Object Model</a></td></tr>
- <tr><th>4.4</th><td><a href="#4.4">Creating the Object Model from Scratch</a></td></tr>
- <tr><th>4.5</th><td><a href="#4.5">Mapping for the Built-in XML Schema Types</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>5</th><td><a href="#5">Parsing</a>
- <table class="toc">
- <tr><th>5.1</th><td><a href="#5.1">XML Schema Validation and Searching</a></td></tr>
- <tr><th>5.2</th><td><a href="#5.2">Error Handling</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>6</th><td><a href="#6">Serialization</a>
- <table class="toc">
- <tr><th>6.1</th><td><a href="#6.1">Namespace and Schema Information</a></td></tr>
- <tr><th>6.2</th><td><a href="#6.2">Error Handling</a></td></tr>
- </table>
- </td>
- </tr>
-
- </table>
- </div>
-
- <h1><a name="0">Preface</a></h1>
-
- <h2><a name="0.1">About This Document</a></h2>
-
- <p>The goal of this document is to provide you with an understanding of
- the C++/Tree programming model and allow you to efficiently evaluate
- XSD against your project's technical requirements. As such, this
- document is intended for C++ developers and software architects
- who are looking for an XML processing solution. For a more in-depth
- description of the C++/Tree mapping refer to the
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/">C++/Tree
- Mapping User Manual</a>.</p>
-
- <p>Prior experience with XML and C++ is required to understand this
- document. Basic understanding of XML Schema is advantageous but
- not expected or required.
- </p>
-
-
- <h2><a name="0.2">More Information</a></h2>
-
- <p>Beyond this guide, you may also find the following sources of
- information useful:</p>
-
- <ul class="list">
- <li><a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/">C++/Tree
- Mapping User Manual</a></li>
-
- <li><a href="http://wiki.codesynthesis.com/Tree/Customization_guide">C++/Tree
- Mapping Customization Guide</a></li>
-
- <li><a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree
- Mapping Frequently Asked Questions (FAQ)</a></li>
-
- <li><a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a></li>
-
- <li>The <code>examples/cxx/tree/</code> directory in the XSD
- distribution contains a collection of examples and a README
- file with an overview of each example.</li>
-
- <li>The <code>README</code> file in the XSD distribution explains
- how to compile the examples on various platforms.</li>
-
- <li>The <a href="http://www.codesynthesis.com/mailman/listinfo/xsd-users">xsd-users</a>
- mailing list is the place to ask technical questions about XSD and the C++/Parser mapping.
- Furthermore, the <a href="http://www.codesynthesis.com/pipermail/xsd-users/">archives</a>
- may already have answers to some of your questions.</li>
- </ul>
-
- <!-- Introduction -->
-
- <h1><a name="1">1 Introduction</a></h1>
-
- <p>Welcome to CodeSynthesis XSD and the C++/Tree mapping. XSD is a
- cross-platform W3C XML Schema to C++ data binding compiler. C++/Tree
- is a W3C XML Schema to C++ mapping that represents the data stored
- in XML as a statically-typed, vocabulary-specific object model.
- </p>
-
- <h2><a name="1.1">1.1 Mapping Overview</a></h2>
-
- <p>Based on a formal description of an XML vocabulary (schema), the
- C++/Tree mapping produces a tree-like data structure suitable for
- in-memory processing. The core of the mapping consists of C++
- classes that constitute the object model and are derived from
- types defined in XML Schema as well as XML parsing and
- serialization code.</p>
-
- <p>Besides the core features, C++/Tree provide a number of additional
- mapping elements that can be useful in some applications. These
- include serialization and extraction to/from formats others than
- XML, such as unstructured text (useful for debugging) and binary
- representations such as XDR and CDR for high-speed data processing
- as well as automatic documentation generation. The C++/Tree mapping
- also provides a wide range of mechanisms for controlling and
- customizing the generated code.</p>
-
- <p>A typical application that uses C++/Tree for XML processing usually
- performs the following three steps: it first reads (parses) an XML
- document to an in-memory object model, it then performs some useful
- computations on that object model which may involve modification
- of the model, and finally it may write (serialize) the modified
- object model back to XML.</p>
-
- <p>The next chapter presents a simple application that performs these
- three steps. The following chapters show how to use the C++/Tree
- mapping in more detail.</p>
-
- <h2><a name="1.2">1.2 Benefits</a></h2>
-
- <p>Traditional XML access APIs such as Document Object Model (DOM)
- or Simple API for XML (SAX) have a number of drawbacks that
- make them less suitable for creating robust and maintainable
- XML processing applications. These drawbacks include:
- </p>
-
- <ul class="list">
- <li>Generic representation of XML in terms of elements, attributes,
- and text forces an application developer to write a substantial
- amount of bridging code that identifies and transforms pieces
- of information encoded in XML to a representation more suitable
- for consumption by the application logic.</li>
-
- <li>String-based flow control defers error detection to runtime.
- It also reduces code readability and maintainability.</li>
-
- <li>Lack of type safety because the data is represented as text.</li>
-
- <li>Resulting applications are hard to debug, change, and
- maintain.</li>
- </ul>
-
- <p>In contrast, statically-typed, vocabulary-specific object model
- produced by the C++/Tree mapping allows you to operate in your
- domain terms instead of the generic elements, attributes, and
- text. Static typing helps catch errors at compile-time rather
- than at run-time. Automatic code generation frees you for more
- interesting tasks (such as doing something useful with the
- information stored in the XML documents) and minimizes the
- effort needed to adapt your applications to changes in the
- document structure. To summarize, the C++/Tree object model has
- the following key advantages over generic XML access APIs:</p>
-
- <ul class="list">
- <li><b>Ease of use.</b> The generated code hides all the complexity
- associated with parsing and serializing XML. This includes navigating
- the structure and converting between the text representation and
- data types suitable for manipulation by the application
- logic.</li>
-
- <li><b>Natural representation.</b> The object representation allows
- you to access the XML data using your domain vocabulary instead
- of generic elements, attributes, and text.</li>
-
- <li><b>Concise code.</b> With the object representation the
- application implementation is simpler and thus easier
- to read and understand.</li>
-
- <li><b>Safety.</b> The generated object model is statically
- typed and uses functions instead of strings to access the
- information. This helps catch programming errors at compile-time
- rather than at runtime.</li>
-
- <li><b>Maintainability.</b> Automatic code generation minimizes the
- effort needed to adapt the application to changes in the
- document structure. With static typing, the C++ compiler
- can pin-point the places in the client code that need to be
- changed.</li>
-
- <li><b>Compatibility.</b> Sequences of elements are represented in
- the object model as containers conforming to the standard C++
- sequence requirements. This makes it possible to use standard
- C++ algorithms on the object representation and frees you from
- learning yet another container interface, as is the case with
- DOM.</li>
-
- <li><b>Efficiency.</b> If the application makes repetitive use
- of the data extracted from XML, then the C++/Tree object model
- is more efficient because the navigation is performed using
- function calls rather than string comparisons and the XML
- data is extracted only once. Furthermore, the runtime memory
- usage is reduced due to more efficient data storage
- (for instance, storing numeric data as integers instead of
- strings) as well as the static knowledge of cardinality
- constraints.</li>
- </ul>
-
-
- <!-- Hello World Parser -->
-
-
- <h1><a name="2">2 Hello World Example</a></h1>
-
- <p>In this chapter we will examine how to parse, access, modify, and
- serialize a very simple XML document using the XSD-generated
- C++/Tree object model. The code presented in this chapter is
- based on the <code>hello</code> example which can be found in
- the <code>examples/cxx/tree/</code> directory of the XSD
- distribution.</p>
-
- <h2><a name="2.1">2.1 Writing XML Document and Schema</a></h2>
-
- <p>First, we need to get an idea about the structure
- of the XML documents we are going to process. Our
- <code>hello.xml</code>, for example, could look like this:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;hello>
-
- &lt;greeting>Hello&lt;/greeting>
-
- &lt;name>sun&lt;/name>
- &lt;name>moon&lt;/name>
- &lt;name>world&lt;/name>
-
-&lt;/hello>
- </pre>
-
- <p>Then we can write a description of the above XML in the
- XML Schema language and save it into <code>hello.xsd</code>:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- &lt;xs:complexType name="hello_t">
- &lt;xs:sequence>
- &lt;xs:element name="greeting" type="xs:string"/>
- &lt;xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
- &lt;/xs:sequence>
- &lt;/xs:complexType>
-
- &lt;xs:element name="hello" type="hello_t"/>
-
-&lt;/xs:schema>
- </pre>
-
- <p>Even if you are not familiar with XML Schema, it
- should be easy to connect declarations in <code>hello.xsd</code>
- to elements in <code>hello.xml</code>. The <code>hello_t</code> type
- is defined as a sequence of the nested <code>greeting</code> and
- <code>name</code> elements. Note that the term sequence in XML
- Schema means that elements should appear in a particular order
- as opposed to appearing multiple times. The <code>name</code>
- element has its <code>maxOccurs</code> property set to
- <code>unbounded</code> which means it can appear multiple times
- in an XML document. Finally, the globally-defined <code>hello</code>
- element prescribes the root element for our vocabulary. For an
- easily-approachable introduction to XML Schema refer to
- <a href="http://www.w3.org/TR/xmlschema-0/">XML Schema Part 0:
- Primer</a>.</p>
-
- <p>The above schema is a specification of our XML vocabulary; it tells
- everybody what valid documents of our XML-based language should look
- like. We can also update our <code>hello.xml</code> to include the
- information about the schema so that XML parsers can validate
- our document:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="hello.xsd">
-
- &lt;greeting>Hello&lt;/greeting>
-
- &lt;name>sun&lt;/name>
- &lt;name>moon&lt;/name>
- &lt;name>world&lt;/name>
-
-&lt;/hello>
- </pre>
-
-
- <p>The next step is to compile the schema to generate the object
- model and parsing functions.</p>
-
- <h2><a name="2.2">2.2 Translating Schema to C++</a></h2>
-
- <p>Now we are ready to translate our <code>hello.xsd</code> to C++.
- To do this we invoke the XSD compiler from a terminal (UNIX) or
- a command prompt (Windows):
- </p>
-
- <pre class="terminal">
-$ xsd cxx-tree hello.xsd
- </pre>
-
- <p>The XSD compiler produces two C++ files: <code>hello.hxx</code> and
- <code>hello.cxx</code>. The following code fragment is taken from
- <code>hello.hxx</code>; it should give you an idea about what gets
- generated:
- </p>
-
- <pre class="c++">
-class hello_t
-{
-public:
- // greeting
- //
- typedef xml_schema::string greeting_type;
-
- const greeting_type&amp;
- greeting () const;
-
- greeting_type&amp;
- greeting ();
-
- void
- greeting (const greeting_type&amp; x);
-
- // name
- //
- typedef xml_schema::string name_type;
- typedef xsd::sequence&lt;name_type> name_sequence;
- typedef name_sequence::iterator name_iterator;
- typedef name_sequence::const_iterator name_const_iterator;
-
- const name_sequence&amp;
- name () const;
-
- name_sequence&amp;
- name ();
-
- void
- name (const name_sequence&amp; s);
-
- // Constructor.
- //
- hello_t (const greeting_type&amp;);
-
- ...
-
-};
-
-std::auto_ptr&lt;hello_t>
-hello (const std::string&amp; uri);
-
-std::auto_ptr&lt;hello_t>
-hello (std::istream&amp;);
- </pre>
-
- <p>The <code>hello_t</code> C++ class corresponds to the
- <code>hello_t</code> XML Schema type. For each element
- in this type a set of C++ type definitions as well as
- accessor and modifier functions are generated inside the
- <code>hello_t</code> class. Note that the type definitions
- and member functions for the <code>greeting</code> and
- <code>name</code> elements are different because of the
- cardinality differences between these two elements
- (<code>greeting</code> is a required single element and
- <code>name</code> is a sequence of elements).</p>
-
- <p>The <code>xml_schema::string</code> type used in the type
- definitions is a C++ class provided by the XSD runtime
- that corresponds to built-in XML Schema type
- <code>string</code>. The <code>xml_schema::string</code>
- is based on <code>std::string</code> and can be used as
- such. Similarly, the <code>sequence</code> class template
- that is used in the <code>name_sequence</code> type
- definition is based on and has the same interface as
- <code>std::vector</code>. The mapping between the built-in
- XML Schema types and C++ types is described in more detail in
- <a href="#4.5">Section 4.5, "Mapping for the Built-in XML Schema
- Types"</a>. The <code>hello_t</code> class also includes a
- constructor with an initializer for the required
- <code>greeting</code> element as its argument.</p>
-
- <p>The <code>hello</code> overloaded global functions correspond
- to the <code>hello</code> global element in XML Schema. A
- global element in XML Schema is a valid document root.
- By default XSD generated a set of parsing functions for each
- global element defined in XML Schema (this can be overridden
- with the <code>--root-element-*</code> options). Parsing
- functions return a dynamically allocated object model as an
- automatic pointer. The actual pointer used depends on the
- C++ standard selected. For C++98 it is <code>std::auto_ptr</code>
- as shown above. For C++11 it is <code>std::unique_ptr</code>.
- For example, if we modify our XSD compiler invocation to
- select C++11:</p>
-
- <pre class="terminal">
-$ xsd cxx-tree --std c++11 hello.xsd
- </pre>
-
- <p>Then the parsing function signatures will become:</p>
-
- <pre class="c++">
-std::unique_ptr&lt;hello_t>
-hello (const std::string&amp; uri);
-
-std::unique_ptr&lt;hello_t>
-hello (std::istream&amp;);
- </pre>
-
- <p>For more information on parsing functions see <a href="#5">Chapter 5,
- "Parsing"</a>.</p>
-
- <h2><a name="2.3">2.3 Implementing Application Logic</a></h2>
-
- <p>At this point we have all the parts we need to do something useful
- with the information stored in our XML document:
- </p>
-
- <pre class="c++">
-#include &lt;iostream>
-#include "hello.hxx"
-
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- try
- {
- auto_ptr&lt;hello_t> h (hello (argv[1]));
-
- for (hello_t::name_const_iterator i (h->name ().begin ());
- i != h->name ().end ();
- ++i)
- {
- cerr &lt;&lt; h->greeting () &lt;&lt; ", " &lt;&lt; *i &lt;&lt; "!" &lt;&lt; endl;
- }
- }
- catch (const xml_schema::exception&amp; e)
- {
- cerr &lt;&lt; e &lt;&lt; endl;
- return 1;
- }
-}
- </pre>
-
- <p>The first part of our application calls one of the parsing
- functions to parser an XML file specified in the command line.
- We then use the returned object model to iterate over names
- and print a greeting line for each of them. Finally, we
- catch and print the <code>xml_schema::exception</code>
- exception in case something goes wrong. This exception
- is the root of the exception hierarchy used by the
- XSD-generated code.
- </p>
-
-
- <h2><a name="2.4">2.4 Compiling and Running</a></h2>
-
- <p>After saving our application from the previous section in
- <code>driver.cxx</code>, we are ready to compile our first
- program and run it on the test XML document. On a UNIX
- system this can be done with the following commands:
- </p>
-
- <pre class="terminal">
-$ c++ -I.../libxsd -c driver.cxx hello.cxx
-$ c++ -o driver driver.o hello.o -lxerces-c
-$ ./driver hello.xml
-Hello, sun!
-Hello, moon!
-Hello, world!
- </pre>
-
- <p>Here <code>.../libxsd</code> represents the path to the
- <code>libxsd</code> directory in the XSD distribution.
- Note also that we are required to link our application
- with the Xerces-C++ library because the generated code
- uses it as the underlying XML parser.</p>
-
- <h2><a name="2.5">2.5 Adding Serialization</a></h2>
-
- <p>While parsing and accessing the XML data may be everything
- you need, there are applications that require creating new
- or modifying existing XML documents. By default XSD does
- not produce serialization code. We will need to request
- it with the <code>--generate-serialization</code> options:</p>
-
- <pre class="terminal">
-$ xsd cxx-tree --generate-serialization hello.xsd
- </pre>
-
- <p>If we now examine the generated <code>hello.hxx</code> file,
- we will find a set of overloaded serialization functions,
- including the following version:</p>
-
- <pre class="c++">
-void
-hello (std::ostream&amp;,
- const hello_t&amp;,
- const xml_schema::namespace_infomap&amp; =
- xml_schema::namespace_infomap ());
-
- </pre>
-
- <p>Just like with parsing functions, XSD generates serialization
- functions for each global element unless instructed otherwise
- with one of the <code>--root-element-*</code> options. For more
- information on serialization functions see <a href="#6">Chapter 6,
- "Serialization"</a>.</p>
-
- <p>We first examine an application that modifies an existing
- object model and serializes it back to XML:</p>
-
- <pre class="c++">
-#include &lt;iostream>
-#include "hello.hxx"
-
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- try
- {
- auto_ptr&lt;hello_t> h (hello (argv[1]));
-
- // Change the greeting phrase.
- //
- h->greeting ("Hi");
-
- // Add another entry to the name sequence.
- //
- h->name ().push_back ("mars");
-
- // Serialize the modified object model to XML.
- //
- xml_schema::namespace_infomap map;
- map[""].name = "";
- map[""].schema = "hello.xsd";
-
- hello (cout, *h, map);
- }
- catch (const xml_schema::exception&amp; e)
- {
- cerr &lt;&lt; e &lt;&lt; endl;
- return 1;
- }
-}
- </pre>
-
- <p>First, our application parses an XML document and obtains its
- object model as in the previous example. Then it changes the
- greeting string and adds another entry to the list of names.
- Finally, it serializes the object model back to XML by calling
- the serialization function.</p>
-
- <p>The first argument we pass to the serialization function is
- <code>cout</code> which results in the XML being written to
- the standard output for us to inspect. We could have also
- written the result to a file or memory buffer by creating an
- instance of <code>std::ofstream</code> or <code>std::ostringstream</code>
- and passing it instead of <code>cout</code>. The second argument is the
- object model we want to serialize. The final argument is an optional
- namespace information map for our vocabulary. It captures information
- such as namespaces, namespace prefixes to which they should be mapped,
- and schemas associated with these namespaces. If we don't provide
- this argument then generic namespace prefixes (<code>p1</code>,
- <code>p2</code>, etc.) will be automatically assigned to XML namespaces
- and no schema information will be added to the resulting document
- (see <a href="#6">Chapter 6, "Serialization"</a> for details).
- In our case, the prefix (map key) and namespace name are empty
- because our vocabulary does not use XML namespaces.</p>
-
- <p>If we now compile and run this application we will see the
- output as shown in the following listing:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="hello.xsd">
-
- &lt;greeting>Hi&lt;/greeting>
-
- &lt;name>sun&lt;/name>
- &lt;name>moon&lt;/name>
- &lt;name>world&lt;/name>
- &lt;name>mars&lt;/name>
-
-&lt;/hello>
- </pre>
-
- <p>We can also create and serialize an object model from scratch
- as shown in the following example:</p>
-
- <pre class="c++">
-#include &lt;iostream>
-#include &lt;fstream>
-#include "hello.hxx"
-
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- try
- {
- hello_t h ("Hi");
-
- hello_t::name_sequence&amp; ns (h.name ());
-
- ns.push_back ("Jane");
- ns.push_back ("John");
-
- // Serialize the object model to XML.
- //
- xml_schema::namespace_infomap map;
- map[""].name = "";
- map[""].schema = "hello.xsd";
-
- std::ofstream ofs (argv[1]);
- hello (ofs, h, map);
- }
- catch (const xml_schema::exception&amp; e)
- {
- cerr &lt;&lt; e &lt;&lt; endl;
- return 1;
- }
-}
- </pre>
-
- <p>In this example we used the generated constructor to create
- an instance of type <code>hello_t</code>. To reduce typing,
- we obtained a reference to the name sequence which we then
- used to add a few names. The serialization part is identical
- to the previous example except this time we are writing to
- a file. If we compile and run this program, it produces the
- following XML file:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="hello.xsd">
-
- &lt;greeting>Hi&lt;/greeting>
-
- &lt;name>Jane&lt;/name>
- &lt;name>John&lt;/name>
-
-&lt;/hello>
- </pre>
-
- <h2><a name="2.6">2.6 Selecting Naming Convention</a></h2>
-
- <p>By default XSD uses the so-called K&amp;R (Kernighan and Ritchie)
- identifier naming convention in the generated code. In this
- convention both type and function names are in lower case and
- words are separated by underscores. If your application code or
- schemas use a different notation, you may want to change the
- naming convention used in the generated code for consistency.
- XSD supports a set of widely-used naming conventions
- that you can select with the <code>--type-naming</code> and
- <code>--function-naming</code> options. You can also further
- refine one of the predefined conventions or create a completely
- custom naming scheme by using the <code>--*-regex</code> options.</p>
-
- <p>As an example, let's assume that our "Hello World" application
- uses the so-called upper-camel-case naming convention for types
- (that is, each word in a type name is capitalized) and the K&amp;R
- convention for function names. Since K&amp;R is the default
- convention for both type and function names, we only need to
- change the type naming scheme:</p>
-
- <pre class="terminal">
-$ xsd cxx-tree --type-naming ucc hello.xsd
- </pre>
-
- <p>The <code>ucc</code> argument to the <code>--type-naming</code>
- options stands for upper-camel-case. If we now examine the
- generated <code>hello.hxx</code>, we will see the following
- changes compared to the declarations shown in the previous
- sections:</p>
-
- <pre class="c++">
-class Hello_t
-{
-public:
- // greeting
- //
- typedef xml_schema::String GreetingType;
-
- const GreetingType&amp;
- greeting () const;
-
- GreetingType&amp;
- greeting ();
-
- void
- greeting (const GreetingType&amp; x);
-
- // name
- //
- typedef xml_schema::String NameType;
- typedef xsd::sequence&lt;NameType> NameSequence;
- typedef NameSequence::iterator NameIterator;
- typedef NameSequence::const_iterator NameConstIterator;
-
- const NameSequence&amp;
- name () const;
-
- NameSequence&amp;
- name ();
-
- void
- name (const NameSequence&amp; s);
-
- // Constructor.
- //
- Hello_t (const GreetingType&amp;);
-
- ...
-
-};
-
-std::auto_ptr&lt;Hello_t>
-hello (const std::string&amp; uri);
-
-std::auto_ptr&lt;Hello_t>
-hello (std::istream&amp;);
- </pre>
-
- <p>Notice that the type names in the <code>xml_schema</code> namespace,
- for example <code>xml_schema::String</code>, now also use the
- upper-camel-case naming convention. The only thing that we may
- be unhappy about in the above code is the <code>_t</code>
- suffix in <code>Hello_t</code>. If we are not in a position
- to change the schema, we can <em>touch-up</em> the <code>ucc</code>
- convention with a custom translation rule using the
- <code>--type-regex</code> option:</p>
-
- <pre class="terminal">
-$ xsd cxx-tree --type-naming ucc --type-regex '/ (.+)_t/\u$1/' hello.xsd
- </pre>
-
- <p>This results in the following changes to the generated code:</p>
-
- <pre class="c++">
-class Hello
-{
-public:
- // greeting
- //
- typedef xml_schema::String GreetingType;
-
- const GreetingType&amp;
- greeting () const;
-
- GreetingType&amp;
- greeting ();
-
- void
- greeting (const GreetingType&amp; x);
-
- // name
- //
- typedef xml_schema::String NameType;
- typedef xsd::sequence&lt;NameType> NameSequence;
- typedef NameSequence::iterator NameIterator;
- typedef NameSequence::const_iterator NameConstIterator;
-
- const NameSequence&amp;
- name () const;
-
- NameSequence&amp;
- name ();
-
- void
- name (const NameSequence&amp; s);
-
- // Constructor.
- //
- Hello (const GreetingType&amp;);
-
- ...
-
-};
-
-std::auto_ptr&lt;Hello>
-hello (const std::string&amp; uri);
-
-std::auto_ptr&lt;Hello>
-hello (std::istream&amp;);
- </pre>
-
- <p>For more detailed information on the <code>--type-naming</code>,
- <code>--function-naming</code>, <code>--type-regex</code>, and
- other <code>--*-regex</code> options refer to the NAMING
- CONVENTION section in the <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a>.</p>
-
- <h2><a name="2.7">2.7 Generating Documentation</a></h2>
-
- <p>While our object model is quite simple, real-world vocabularies
- can be quite complex with hundreds of types, elements, and
- attributes. For such vocabularies figuring out which types
- provide which member functions by studying the generated
- source code or schemas can be a daunting task. To provide
- application developers with a more accessible way of
- understanding the generated object models, the XSD compiler
- can be instructed to produce source code with documentation
- comments in the Doxygen format. Then the source code can be
- processed with the <a href="http://www.doxygen.org">Doxygen</a>
- documentation system to extract this information and produce
- documentation in various formats.
- </p>
-
- <p>In this section we will see how to generate documentation
- for our "Hello World" vocabulary. To showcase the full power
- of the XSD documentation facilities, we will first document
- our schema. The XSD compiler will then transfer
- this information from the schema to the generated code and
- then to the object model documentation. Note that the
- documentation in the schema is not required for XSD to
- generate useful documentation. Below you will find
- our <code>hello.xsd</code> with added documentation:</p>
-
- <pre class="xml">
-&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- &lt;xs:complexType name="hello_t">
-
- &lt;xs:annotation>
- &lt;xs:documentation>
- The hello_t type consists of a greeting phrase and a
- collection of names to which this greeting applies.
- &lt;/xs:documentation>
- &lt;/xs:annotation>
-
- &lt;xs:sequence>
-
- &lt;xs:element name="greeting" type="xs:string">
- &lt;xs:annotation>
- &lt;xs:documentation>
- The greeting element contains the greeting phrase
- for this hello object.
- &lt;/xs:documentation>
- &lt;/xs:annotation>
- &lt;/xs:element>
-
- &lt;xs:element name="name" type="xs:string" maxOccurs="unbounded">
- &lt;xs:annotation>
- &lt;xs:documentation>
- The name elements contains names to be greeted.
- &lt;/xs:documentation>
- &lt;/xs:annotation>
- &lt;/xs:element>
-
- &lt;/xs:sequence>
- &lt;/xs:complexType>
-
- &lt;xs:element name="hello" type="hello_t">
- &lt;xs:annotation>
- &lt;xs:documentation>
- The hello element is a root of the Hello XML vocabulary.
- Every conforming document should start with this element.
- &lt;/xs:documentation>
- &lt;/xs:annotation>
- &lt;/xs:element>
-
-&lt;/xs:schema>
- </pre>
-
- <p>The first step in obtaining the documentation is to recompile
- our schema with the <code>--generate-doxygen</code> option:</p>
-
- <pre class="terminal">
-$ xsd cxx-tree --generate-serialization --generate-doxygen hello.xsd
- </pre>
-
- <p>Now the generated <code>hello.hxx</code> file contains comments
- in the Doxygen format. The next step is to process this file
- with the Doxygen documentation system. If your project does
- not use Doxygen then you first need to create a configuration
- file for your project:</p>
-
- <pre class="terminal">
-$ doxygen -g hello.doxygen
- </pre>
-
- <p>You only need to perform this step once. Now we can generate
- the documentation by executing the following command in the
- directory with the generated source code:</p>
-
- <pre class="terminal">
-$ doxygen hello.doxygen
- </pre>
-
- <p>While the generated documentation can be useful as is, we can
- go one step further and link (using the Doxygen tags mechanism)
- the documentation for our object model with the documentation
- for the XSD runtime library which defines C++ classes for the
- built-in XML Schema types. This way we can seamlessly browse
- between documentation for the <code>hello_t</code> class which
- is generated by the XSD compiler and the <code>xml_schema::string</code>
- class which is defined in the XSD runtime library. The Doxygen
- configuration file for the XSD runtime is provided with the XSD
- distribution.</p>
-
- <p>You can view the result of the steps described in this section
- on the <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/hello/html/annotated.html">Hello
- Example Documentation</a> page.</p>
-
- <!-- Chapater 3 -->
-
-
- <h1><a name="3">3 Overall Mapping Configuration</a></h1>
-
- <p>The C++/Tree mapping has a number of configuration parameters that
- determine the overall properties and behavior of the generated code.
- Configuration parameters are specified with the XSD command line
- options. This chapter describes configuration aspects that are most
- commonly encountered by application developers. These include: the
- C++ standard, the character type that is used by the generated code,
- handling of vocabularies that use XML Schema polymorphism, XML Schema
- to C++ namespace mapping, and thread safety. For more ways to configure
- the generated code refer to the
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a>.
- </p>
-
- <h2><a name="3.1">3.1 C++ Standard</a></h2>
-
- <p>The C++/Tree mapping provides support for ISO/IEC C++ 1998/2003 (C++98)
- and ISO/IEC C++ 2011 (C++11). To select the C++ standard for the
- generated code we use the <code>--std</code> XSD compiler command
- line option. While the majority of the examples in this guide use
- C++98, support for the new functionality and library components
- introduced in C++11 are discussed throughout the document.</p>
-
- <h2><a name="3.2">3.2 Character Type and Encoding</a></h2>
-
- <p>The C++/Tree mapping has built-in support for two character types:
- <code>char</code> and <code>wchar_t</code>. You can select the
- character type with the <code>--char-type</code> command line
- option. The default character type is <code>char</code>. The
- character type affects all string and string-based types that
- are used in the mapping. These include the string-based built-in
- XML Schema types, exception types, stream types, etc.</p>
-
- <p>Another aspect of the mapping that depends on the character type
- is character encoding. For the <code>char</code> character type
- the default encoding is UTF-8. Other supported encodings are
- ISO-8859-1, Xerces-C++ Local Code Page (LPC), as well as
- custom encodings. You can select which encoding should be used
- in the object model with the <code>--char-encoding</code> command
- line option.</p>
-
- <p>For the <code>wchar_t</code> character type the encoding is
- automatically selected between UTF-16 and UTF-32/UCS-4 depending
- on the size of the <code>wchar_t</code> type. On some platforms
- (for example, Windows with Visual C++ and AIX with IBM XL C++)
- <code>wchar_t</code> is 2 bytes long. For these platforms the
- encoding is UTF-16. On other platforms <code>wchar_t</code> is 4 bytes
- long and UTF-32/UCS-4 is used.</p>
-
- <p>Note also that the character encoding that is used in the object model
- is independent of the encodings used in input and output XML. In fact,
- all three (object mode, input XML, and output XML) can have different
- encodings.</p>
-
- <h2><a name="3.3">3.3 Support for Polymorphism</a></h2>
-
- <p>By default XSD generates non-polymorphic code. If your vocabulary
- uses XML Schema polymorphism in the form of <code>xsi:type</code>
- and/or substitution groups, then you will need to compile
- your schemas with the <code>--generate-polymorphic</code> option
- to produce polymorphism-aware code. For more information on
- working with polymorphic object models, refer to
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.11">Section 2.11,
- "Mapping for <code>xsi:type</code> and Substitution Groups"</a> in
- the C++/Tree Mapping User Manual.</p>
-
- <h2><a name="3.4">3.4 Namespace Mapping</a></h2>
-
- <p>XSD maps XML namespaces specified in the <code>targetNamespace</code>
- attribute in XML Schema to one or more nested C++ namespaces. By
- default, a namespace URI is mapped to a sequence of C++ namespace
- names by removing the protocol and host parts and splitting the
- rest into a sequence of names with <code>'/'</code> as the name
- separator.</p>
-
- <p>The default mapping of namespace URIs to C++ namespaces
- can be altered using the <code>--namespace-map</code> and
- <code>--namespace-regex</code> compiler options. For example,
- to map namespace URI <code>http://www.codesynthesis.com/my</code> to
- C++ namespace <code>cs::my</code>, we can use the following option:</p>
-
- <pre class="terminal">
---namespace-map http://www.codesynthesis.com/my=cs::my
- </pre>
-
- <p>A vocabulary without a namespace is mapped to the global scope. This
- also can be altered with the above options by using an empty name
- for the XML namespace:</p>
-
- <pre class="terminal">
---namespace-map =cs
- </pre>
-
- <h2><a name="3.5">3.5 Thread Safety</a></h2>
-
- <p>XSD-generated code is thread-safe in the sense that you can
- use different instantiations of the object model in several
- threads concurrently. This is possible due to the generated
- code not relying on any writable global variables. If you need
- to share the same object between several threads then you will
- need to provide some form of synchronization. One approach would
- be to use the generated code customization mechanisms to embed
- synchronization primitives into the generated C++ classes. For more
- information on generated code customization refer to the
- <a href="http://wiki.codesynthesis.com/Tree/Customization_guide">C++/Tree
- Mapping Customization Guide</a>.</p>
-
- <p>If you also would like to call parsing and/or serialization
- functions from several threads potentially concurrently, then
- you will need to make sure the Xerces-C++ runtime is initialized
- and terminated only once. The easiest way to do this is to
- initialize/terminate Xerces-C++ from <code>main()</code> when
- there are no threads yet/anymore:</p>
-
- <pre class="c++">
-#include &lt;xercesc/util/PlatformUtils.hpp>
-
-int
-main ()
-{
- xercesc::XMLPlatformUtils::Initialize ();
-
- {
- // Start/terminate threads and parse/serialize here.
- }
-
- xercesc::XMLPlatformUtils::Terminate ();
-}
- </pre>
-
- <p>Because you initialize the Xerces-C++ runtime yourself you should
- also pass the <code>xml_schema::flags::dont_initialize</code> flag
- to parsing and serialization functions. See <a href="#5">Chapter 5,
- "Parsing"</a> and <a href="#6">Chapter 6, "Serialization"</a> for
- more information.</p>
-
-
- <!-- Chapater 4 -->
-
-
- <h1><a name="4">4 Working with Object Models</a></h1>
-
- <p>As we have seen in the previous chapters, the XSD compiler generates
- a C++ class for each type defined in XML Schema. Together these classes
- constitute an object model for an XML vocabulary. In this chapter we
- will take a closer look at different elements that comprise an
- object model class as well as how to create, access, and modify
- object models.</p>
-
- <p>In this and subsequent chapters we will use the following schema
- that describes a collection of person records. We save it in
- <code>people.xsd</code>:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- &lt;xs:simpleType name="gender_t">
- &lt;xs:restriction base="xs:string">
- &lt;xs:enumeration value="male"/>
- &lt;xs:enumeration value="female"/>
- &lt;/xs:restriction>
- &lt;/xs:simpleType>
-
- &lt;xs:complexType name="person_t">
- &lt;xs:sequence>
- &lt;xs:element name="first-name" type="xs:string"/>
- &lt;xs:element name="middle-name" type="xs:string" minOccurs="0"/>
- &lt;xs:element name="last-name" type="xs:string"/>
- &lt;xs:element name="gender" type="gender_t"/>
- &lt;xs:element name="age" type="xs:short"/>
- &lt;/xs:sequence>
- &lt;xs:attribute name="id" type="xs:unsignedInt" use="required"/>
- &lt;/xs:complexType>
-
- &lt;xs:complexType name="people_t">
- &lt;xs:sequence>
- &lt;xs:element name="person" type="person_t" maxOccurs="unbounded"/>
- &lt;/xs:sequence>
- &lt;/xs:complexType>
-
- &lt;xs:element name="people" type="people_t"/>
-
-&lt;/xs:schema>
- </pre>
-
- <p>A sample XML instance to go along with this schema is saved
- in <code>people.xml</code>:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="people.xsd">
-
- &lt;person id="1">
- &lt;first-name>John&lt;/first-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>male&lt;/gender>
- &lt;age>32&lt;/age>
- &lt;/person>
-
- &lt;person id="2">
- &lt;first-name>Jane&lt;/first-name>
- &lt;middle-name>Mary&lt;/middle-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>female&lt;/gender>
- &lt;age>28&lt;/age>
- &lt;/person>
-
-&lt;/people>
- </pre>
-
- <p>Compiling <code>people.xsd</code> with the XSD compiler results
- in three generated C++ classes: <code>gender_t</code>,
- <code>person_t</code>, and <code>people_t</code>.
- The <code>gender_t</code> class is modelled after the C++
- <code>enum</code> type. Its definition is presented below:</p>
-
- <pre class="c++">
-class gender_t: public xml_schema::string
-{
-public:
- enum value
- {
- male,
- female
- };
-
- gender_t (value);
- gender_t (const xml_schema::string&amp;);
-
- gender_t&amp;
- operator= (value);
-
- operator value () const;
-};
- </pre>
-
- <p>The following listing shows how we can use this type:</p>
-
- <pre class="c++">
-gender_t m (gender_t::male);
-gender_t f ("female");
-
-if (m == "female" || f == gender_t::male)
-{
- ...
-}
-
-switch (m)
-{
-case gender_t::male:
- {
- ...
- }
-case gender_t::female:
- {
- ...
- }
-}
- </pre>
-
- <p>The other two classes will be examined in detail in the subsequent
- sections.</p>
-
- <h2><a name="4.1">4.1 Attribute and Element Cardinalities</a></h2>
-
- <p>As we have seen in the previous chapters, XSD generates a different
- set of type definitions and member functions for elements with
- different cardinalities. The C++/Tree mapping divides all the possible
- element and attribute cardinalities into three cardinality classes:
- <em>one</em>, <em>optional</em>, and <em>sequence</em>.</p>
-
- <p>The <em>one</em> cardinality class covers all elements that should
- occur exactly once as well as required attributes. In our
- example, the <code>first-name</code>, <code>last-name</code>,
- <code>gender</code>, and <code>age</code> elements as well as
- the <code>id</code> attribute belong to this cardinality class.
- The following code fragment shows type definitions as well as the
- accessor and modifier functions that are generated for the
- <code>gender</code> element in the <code>person_t</code> class:</p>
-
- <pre class="c++">
-class person_t
-{
- // gender
- //
- typedef gender_t gender_type;
-
- const gender_type&amp;
- gender () const;
-
- gender_type&amp;
- gender ();
-
- void
- gender (const gender_type&amp;);
-};
- </pre>
-
- <p>The <code>gender_type</code> type is an alias for the element's type.
- The first two accessor functions return read-only (constant) and
- read-write references to the element's value, respectively. The
- modifier function sets the new value for the element.</p>
-
- <p>The <em>optional</em> cardinality class covers all elements that
- can occur zero or one time as well as optional attributes. In our
- example, the <code>middle-name</code> element belongs to this
- cardinality class. The following code fragment shows the type
- definitions as well as the accessor and modifier functions that
- are generated for this element in the <code>person_t</code> class:</p>
-
- <pre class="c++">
-class person_t
-{
- // middle-name
- //
- typedef xml_schema::string middle_name_type;
- typedef xsd::optional&lt;middle_name_type> middle_name_optional;
-
- const middle_name_optional&amp;
- middle_name () const;
-
- middle_name_optional&amp;
- middle_name ();
-
- void
- middle_name (const middle_name_type&amp;);
-
- void
- middle_name (const middle_name_optional&amp;);
-};
- </pre>
-
- <p>As with the <code>gender</code> element, <code>middle_name_type</code>
- is an alias for the element's type. The <code>middle_name_optional</code>
- type is a container for the element's optional value. It can be queried
- for the presence of the value using the <code>present()</code> function.
- The value itself can be retrieved using the <code>get()</code>
- accessor and set using the <code>set()</code> modifier. The container
- can be reverted to the value not present state with the call to the
- <code>reset()</code> function. The following example shows how we
- can use this container:</p>
-
- <pre class="c++">
-person_t::middle_name_optional n ("John");
-
-if (n.present ())
-{
- cout &lt;&lt; n.get () &lt;&lt; endl;
-}
-
-n.set ("Jane");
-n.reset ();
- </pre>
-
-
- <p>Unlike the <em>one</em> cardinality class, the accessor functions
- for the <em>optional</em> class return read-only (constant) and
- read-write references to the container instead of the element's
- value directly. The modifier functions set the new value for the
- element.</p>
-
- <p>Finally, the <em>sequence</em> cardinality class covers all elements
- that can occur more than once. In our example, the
- <code>person</code> element in the <code>people_t</code> type
- belongs to this cardinality class. The following code fragment shows
- the type definitions as well as the accessor and modifier functions
- that are generated for this element in the <code>people_t</code>
- class:</p>
-
- <pre class="c++">
-class people_t
-{
- // person
- //
- typedef person_t person_type;
- typedef xsd::sequence&lt;person_type> person_sequence;
- typedef person_sequence::iterator person_iterator;
- typedef person_sequence::const_iterator person_const_iterator;
-
- const person_sequence&amp;
- person () const;
-
- person_sequence&amp;
- person ();
-
- void
- person (const person_sequence&amp;);
-};
- </pre>
-
- <p>Identical to the other cardinality classes, <code>person_type</code>
- is an alias for the element's type. The <code>person_sequence</code>
- type is a sequence container for the element's values. It is based
- on and has the same interface as <code>std::vector</code> and
- therefore can be used in similar ways. The <code>person_iterator</code>
- and <code>person_const_iterator</code> types are read-only
- (constant) and read-write iterators for the <code>person_sequence</code>
- container.</p>
-
- <p>Similar to the <em>optional</em> cardinality class, the
- accessor functions for the <em>sequence</em> class return
- read-only (constant) and read-write references to the sequence
- container. The modifier functions copies the entries from
- the passed sequence.</p>
-
- <p>C++/Tree is a "flattening" mapping in a sense that many levels of
- nested compositors (<code>choice</code> and <code>sequence</code>),
- all potentially with their own cardinalities, are in the end mapped
- to a flat set of elements with one of the three cardinality classes
- discussed above. While this results in a simple and easy to use API
- for most types, in certain cases, the order of elements in the actual
- XML documents is not preserved once parsed into the object model. To
- overcome this limitation we can mark certain schema types, for which
- content order is not sufficiently preserved, as ordered. For more
- information on this functionality refer to
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8.4">Section
- 2.8.4, "Element Order"</a> in the C++/Tree Mapping User Manual.</p>
-
- <p>For complex schemas with many levels of nested compositors
- (<code>choice</code> and <code>sequence</code>) it can also
- be hard to deduce the cardinality class of a particular element.
- The generated Doxygen documentation can greatly help with
- this task. For each element and attribute the documentation
- clearly identifies its cardinality class. Alternatively, you
- can study the generated header files to find out the cardinality
- class of a particular attribute or element.</p>
-
- <p>In the next sections we will examine how to access and modify
- information stored in an object model using accessor and modifier
- functions described in this section.</p>
-
- <h2><a name="4.2">4.2 Accessing the Object Model</a></h2>
-
- <p>In this section we will learn how to get to the information
- stored in the object model for our person records vocabulary.
- The following application accesses and prints the contents
- of the <code>people.xml</code> file:</p>
-
- <pre class="c++">
-#include &lt;iostream>
-#include "people.hxx"
-
-using namespace std;
-
-int
-main ()
-{
- auto_ptr&lt;people_t> ppl (people ("people.xml"));
-
- // Iterate over individual person records.
- //
- people_t::person_sequence&amp; ps (ppl->person ());
-
- for (people_t::person_iterator i (ps.begin ()); i != ps.end (); ++i)
- {
- person_t&amp; p (*i);
-
- // Print names: first-name and last-name are required elements,
- // middle-name is optional.
- //
- cout &lt;&lt; "name: " &lt;&lt; p.first_name () &lt;&lt; " ";
-
- if (p.middle_name ().present ())
- cout &lt;&lt; p.middle_name ().get () &lt;&lt; " ";
-
- cout &lt;&lt; p.last_name () &lt;&lt; endl;
-
- // Print gender, age, and id which are all required.
- //
- cout &lt;&lt; "gender: " &lt;&lt; p.gender () &lt;&lt; endl
- &lt;&lt; "age: " &lt;&lt; p.age () &lt;&lt; endl
- &lt;&lt; "id: " &lt;&lt; p.id () &lt;&lt; endl
- &lt;&lt; endl;
- }
-}
- </pre>
-
- <p>This code shows common patterns of accessing elements and attributes
- with different cardinality classes. For the sequence element
- (<code>person</code> in <code>people_t</code>) we first obtain a
- reference to the container and then iterate over individual
- records. The values of elements and attributes with the
- <em>one</em> cardinality class (<code>first-name</code>,
- <code>last-name</code>, <code>gender</code>, <code>age</code>,
- and <code>id</code>) can be obtained directly by calling the
- corresponding accessor functions. For the optional element
- <code>middle-name</code> we first check if the value is present
- and only then call <code>get()</code> to retrieve it.</p>
-
- <p>Note that when we want to reduce typing by creating a variable
- representing a fragment of the object model that we are currently
- working with (<code>ps</code> and <code>p</code> above), we obtain
- a reference to that fragment instead of making a potentially
- expensive copy. This is generally a good rule to follow when
- creating high-performance applications.</p>
-
- <p>If we run the above application on our sample
- <code>people.xml</code>, the output looks as follows:</p>
-
- <pre class="terminal">
-name: John Doe
-gender: male
-age: 32
-id: 1
-
-name: Jane Mary Doe
-gender: female
-age: 28
-id: 2
- </pre>
-
-
- <h2><a name="4.3">4.3 Modifying the Object Model</a></h2>
-
- <p>In this section we will learn how to modify the information
- stored in the object model for our person records vocabulary.
- The following application changes the contents of the
- <code>people.xml</code> file:</p>
-
- <pre class="c++">
-#include &lt;iostream>
-#include "people.hxx"
-
-using namespace std;
-
-int
-main ()
-{
- auto_ptr&lt;people_t> ppl (people ("people.xml"));
-
- // Iterate over individual person records and increment
- // the age.
- //
- people_t::person_sequence&amp; ps (ppl->person ());
-
- for (people_t::person_iterator i (ps.begin ()); i != ps.end (); ++i)
- {
- // Alternative way: i->age ()++;
- //
- i->age (i->age () + 1);
- }
-
- // Add middle-name to the first record and remove it from
- // the second.
- //
- person_t&amp; john (ps[0]);
- person_t&amp; jane (ps[1]);
-
- john.middle_name ("Mary");
- jane.middle_name ().reset ();
-
- // Add another John record.
- //
- ps.push_back (john);
-
- // Serialize the modified object model to XML.
- //
- xml_schema::namespace_infomap map;
- map[""].name = "";
- map[""].schema = "people.xsd";
-
- people (cout, *ppl, map);
-}
- </pre>
-
- <p>The first modification the above application performs is iterating
- over person records and incrementing the age value. This code
- fragment shows how to modify the value of a required attribute
- or element. The next modification shows how to set a new value
- for the optional <code>middle-name</code> element as well
- as clear its value. Finally the example adds a copy of the
- John Doe record to the <code>person</code> element sequence.</p>
-
- <p>Note that in this case using references for the <code>ps</code>,
- <code>john</code>, and <code>jane</code> variables is no longer
- a performance improvement but a requirement for the application
- to function correctly. If we hadn't used references, all our changes
- would have been made on copies without affecting the object model.</p>
-
- <p>If we run the above application on our sample <code>people.xml</code>,
- the output looks as follows:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0"?>
-&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="people.xsd">
-
- &lt;person id="1">
- &lt;first-name>John&lt;/first-name>
- &lt;middle-name>Mary&lt;/middle-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>male&lt;/gender>
- &lt;age>33&lt;/age>
- &lt;/person>
-
- &lt;person id="2">
- &lt;first-name>Jane&lt;/first-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>female&lt;/gender>
- &lt;age>29&lt;/age>
- &lt;/person>
-
- &lt;person id="1">
- &lt;first-name>John&lt;/first-name>
- &lt;middle-name>Mary&lt;/middle-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>male&lt;/gender>
- &lt;age>33&lt;/age>
- &lt;/person>
-
-&lt;/people>
- </pre>
-
-
- <h2><a name="4.4">4.4 Creating the Object Model from Scratch</a></h2>
-
- <p>In this section we will learn how to create a new object model
- for our person records vocabulary. The following application
- recreates the content of the original <code>people.xml</code>
- file:</p>
-
- <pre class="c++">
-#include &lt;iostream>
-#include "people.hxx"
-
-using namespace std;
-
-int
-main ()
-{
- people_t ppl;
- people_t::person_sequence&amp; ps (ppl.person ());
-
- // Add the John Doe record.
- //
- ps.push_back (
- person_t ("John", // first-name
- "Doe", // last-name
- gender_t::male, // gender
- 32, // age
- 1));
-
- // Add the Jane Doe record.
- //
- ps.push_back (
- person_t ("Jane", // first-name
- "Doe", // last-name
- gender_t::female, // gender
- 28, // age
- 2)); // id
-
- // Add middle name to the Jane Doe record.
- //
- person_t&amp; jane (ps.back ());
- jane.middle_name ("Mary");
-
- // Serialize the object model to XML.
- //
- xml_schema::namespace_infomap map;
- map[""].name = "";
- map[""].schema = "people.xsd";
-
- people (cout, ppl, map);
-}
- </pre>
-
- <p>The only new part in the above application is the calls
- to the <code>people_t</code> and <code>person_t</code>
- constructors. As a general rule, for each C++ class
- XSD generates a constructor with initializers
- for each element and attribute belonging to the <em>one</em>
- cardinality class. For our vocabulary, the following
- constructors are generated:</p>
-
- <pre class="c++">
-class person_t
-{
- person_t (const first_name_type&amp;,
- const last_name_type&amp;,
- const gender_type&amp;,
- const age_type&amp;,
- const id_type&amp;);
-};
-
-class people_t
-{
- people_t ();
-};
- </pre>
-
- <p>Note also that we set the <code>middle-name</code> element
- on the Jane Doe record by obtaining a reference to that record
- in the object model and setting the <code>middle-name</code>
- value on it. This is a general rule that should be followed
- in order to obtain the best performance: if possible,
- direct modifications to the object model should be preferred
- to modifications on temporaries with subsequent copying. The
- following code fragment shows a semantically equivalent but
- slightly slower version:</p>
-
- <pre class="c++">
-// Add the Jane Doe record.
-//
-person_t jane ("Jane", // first-name
- "Doe", // last-name
- gender_t::female, // gender
- 28, // age
- 2); // id
-
-jane.middle_name ("Mary");
-
-ps.push_back (jane);
- </pre>
-
- <p>We can also go one step further to reduce copying and improve
- the performance of our application by using the non-copying
- <code>push_back()</code> function which assumes ownership
- of the passed objects:</p>
-
- <pre class="c++">
-// Add the John Doe record. C++98 version.
-//
-auto_ptr&lt;person_t> john_p (
- new person_t ("John", // first-name
- "Doe", // last-name
- gender_t::male, // gender
- 32, // age
- 1));
-ps.push_back (john_p); // assumes ownership
-
-// Add the Jane Doe record. C++11 version
-//
-unique_ptr&lt;person_t> jane_p (
- new person_t ("Jane", // first-name
- "Doe", // last-name
- gender_t::female, // gender
- 28, // age
- 2)); // id
-ps.push_back (std::move (jane_p)); // assumes ownership
- </pre>
-
- <p>For more information on the non-copying modifier functions refer to
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8">Section
- 2.8, "Mapping for Local Elements and Attributes"</a> in the C++/Tree Mapping
- User Manual. The above application produces the following output:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0" ?>
-&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="people.xsd">
-
- &lt;person id="1">
- &lt;first-name>John&lt;/first-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>male&lt;/gender>
- &lt;age>32&lt;/age>
- &lt;/person>
-
- &lt;person id="2">
- &lt;first-name>Jane&lt;/first-name>
- &lt;middle-name>Mary&lt;/middle-name>
- &lt;last-name>Doe&lt;/last-name>
- &lt;gender>female&lt;/gender>
- &lt;age>28&lt;/age>
- &lt;/person>
-
-&lt;/people>
- </pre>
-
- <h2><a name="4.5">4.5 Mapping for the Built-in XML Schema Types</a></h2>
-
- <p>Our person record vocabulary uses several built-in XML Schema
- types: <code>string</code>, <code>short</code>, and
- <code>unsignedInt</code>. Until now we haven't talked about
- the mapping of built-in XML Schema types to C++ types and how
- to work with them. This section provides an overview
- of the built-in types. For more detailed information refer
- to <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.5">Section
- 2.5, "Mapping for Built-in Data Types"</a> in the C++/Tree Mapping
- User Manual.</p>
-
- <p>In XML Schema, built-in types are defined in the XML Schema namespace.
- By default, the C++/Tree mapping maps this namespace to C++
- namespace <code>xml_schema</code> (this mapping can be altered
- with the <code>--namespace-map</code> option). The following table
- summarizes the mapping of XML Schema built-in types to C++ types:</p>
-
- <!-- border="1" is necessary for html2ps -->
- <table id="builtin" border="1">
- <tr>
- <th>XML Schema type</th>
- <th>Alias in the <code>xml_schema</code> namespace</th>
- <th>C++ type</th>
- </tr>
-
- <tr>
- <th colspan="3">fixed-length integral types</th>
- </tr>
- <!-- 8-bit -->
- <tr>
- <td><code>byte</code></td>
- <td><code>byte</code></td>
- <td><code>signed&nbsp;char</code></td>
- </tr>
- <tr>
- <td><code>unsignedByte</code></td>
- <td><code>unsigned_byte</code></td>
- <td><code>unsigned&nbsp;char</code></td>
- </tr>
-
- <!-- 16-bit -->
- <tr>
- <td><code>short</code></td>
- <td><code>short_</code></td>
- <td><code>short</code></td>
- </tr>
- <tr>
- <td><code>unsignedShort</code></td>
- <td><code>unsigned_short</code></td>
- <td><code>unsigned&nbsp;short</code></td>
- </tr>
-
- <!-- 32-bit -->
- <tr>
- <td><code>int</code></td>
- <td><code>int_</code></td>
- <td><code>int</code></td>
- </tr>
- <tr>
- <td><code>unsignedInt</code></td>
- <td><code>unsigned_int</code></td>
- <td><code>unsigned&nbsp;int</code></td>
- </tr>
-
- <!-- 64-bit -->
- <tr>
- <td><code>long</code></td>
- <td><code>long_</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>unsignedLong</code></td>
- <td><code>unsigned_long</code></td>
- <td><code>unsigned&nbsp;long&nbsp;long</code></td>
- </tr>
-
- <tr>
- <th colspan="3">arbitrary-length integral types</th>
- </tr>
- <tr>
- <td><code>integer</code></td>
- <td><code>integer</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>nonPositiveInteger</code></td>
- <td><code>non_positive_integer</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>nonNegativeInteger</code></td>
- <td><code>non_negative_integer</code></td>
- <td><code>unsigned long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>positiveInteger</code></td>
- <td><code>positive_integer</code></td>
- <td><code>unsigned long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>negativeInteger</code></td>
- <td><code>negative_integer</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
-
- <tr>
- <th colspan="3">boolean types</th>
- </tr>
- <tr>
- <td><code>boolean</code></td>
- <td><code>boolean</code></td>
- <td><code>bool</code></td>
- </tr>
-
- <tr>
- <th colspan="3">fixed-precision floating-point types</th>
- </tr>
- <tr>
- <td><code>float</code></td>
- <td><code>float_</code></td>
- <td><code>float</code></td>
- </tr>
- <tr>
- <td><code>double</code></td>
- <td><code>double_</code></td>
- <td><code>double</code></td>
- </tr>
-
- <tr>
- <th colspan="3">arbitrary-precision floating-point types</th>
- </tr>
- <tr>
- <td><code>decimal</code></td>
- <td><code>decimal</code></td>
- <td><code>double</code></td>
- </tr>
-
- <tr>
- <th colspan="3">string types</th>
- </tr>
- <tr>
- <td><code>string</code></td>
- <td><code>string</code></td>
- <td>type derived from <code>std::basic_string</code></td>
- </tr>
- <tr>
- <td><code>normalizedString</code></td>
- <td><code>normalized_string</code></td>
- <td>type derived from <code>string</code></td>
- </tr>
- <tr>
- <td><code>token</code></td>
- <td><code>token</code></td>
- <td>type&nbsp;derived&nbsp;from&nbsp;<code>normalized_string</code></td>
- </tr>
- <tr>
- <td><code>Name</code></td>
- <td><code>name</code></td>
- <td>type derived from <code>token</code></td>
- </tr>
- <tr>
- <td><code>NMTOKEN</code></td>
- <td><code>nmtoken</code></td>
- <td>type derived from <code>token</code></td>
- </tr>
- <tr>
- <td><code>NMTOKENS</code></td>
- <td><code>nmtokens</code></td>
- <td>type derived from <code>sequence&lt;nmtoken></code></td>
- </tr>
- <tr>
- <td><code>NCName</code></td>
- <td><code>ncname</code></td>
- <td>type derived from <code>name</code></td>
- </tr>
- <tr>
- <td><code>language</code></td>
- <td><code>language</code></td>
- <td>type derived from <code>token</code></td>
- </tr>
-
- <tr>
- <th colspan="3">qualified name</th>
- </tr>
- <tr>
- <td><code>QName</code></td>
- <td><code>qname</code></td>
- <td><code>xml_schema::qname</code></td>
- </tr>
-
- <tr>
- <th colspan="3">ID/IDREF types</th>
- </tr>
- <tr>
- <td><code>ID</code></td>
- <td><code>id</code></td>
- <td>type derived from <code>ncname</code></td>
- </tr>
- <tr>
- <td><code>IDREF</code></td>
- <td><code>idref</code></td>
- <td>type derived from <code>ncname</code></td>
- </tr>
- <tr>
- <td><code>IDREFS</code></td>
- <td><code>idrefs</code></td>
- <td>type derived from <code>sequence&lt;idref></code></td>
- </tr>
-
- <tr>
- <th colspan="3">URI types</th>
- </tr>
- <tr>
- <td><code>anyURI</code></td>
- <td><code>uri</code></td>
- <td>type derived from <code>std::basic_string</code></td>
- </tr>
-
- <tr>
- <th colspan="3">binary types</th>
- </tr>
- <tr>
- <td><code>base64Binary</code></td>
- <td><code>base64_binary</code></td>
- <td><code>xml_schema::base64_binary</code></td>
- </tr>
- <tr>
- <td><code>hexBinary</code></td>
- <td><code>hex_binary</code></td>
- <td><code>xml_schema::hex_binary</code></td>
- </tr>
-
- <tr>
- <th colspan="3">date/time types</th>
- </tr>
- <tr>
- <td><code>date</code></td>
- <td><code>date</code></td>
- <td><code>xml_schema::date</code></td>
- </tr>
- <tr>
- <td><code>dateTime</code></td>
- <td><code>date_time</code></td>
- <td><code>xml_schema::date_time</code></td>
- </tr>
- <tr>
- <td><code>duration</code></td>
- <td><code>duration</code></td>
- <td><code>xml_schema::duration</code></td>
- </tr>
- <tr>
- <td><code>gDay</code></td>
- <td><code>gday</code></td>
- <td><code>xml_schema::gday</code></td>
- </tr>
- <tr>
- <td><code>gMonth</code></td>
- <td><code>gmonth</code></td>
- <td><code>xml_schema::gmonth</code></td>
- </tr>
- <tr>
- <td><code>gMonthDay</code></td>
- <td><code>gmonth_day</code></td>
- <td><code>xml_schema::gmonth_day</code></td>
- </tr>
- <tr>
- <td><code>gYear</code></td>
- <td><code>gyear</code></td>
- <td><code>xml_schema::gyear</code></td>
- </tr>
- <tr>
- <td><code>gYearMonth</code></td>
- <td><code>gyear_month</code></td>
- <td><code>xml_schema::gyear_month</code></td>
- </tr>
- <tr>
- <td><code>time</code></td>
- <td><code>time</code></td>
- <td><code>xml_schema::time</code></td>
- </tr>
-
- <tr>
- <th colspan="3">entity types</th>
- </tr>
- <tr>
- <td><code>ENTITY</code></td>
- <td><code>entity</code></td>
- <td>type derived from <code>name</code></td>
- </tr>
- <tr>
- <td><code>ENTITIES</code></td>
- <td><code>entities</code></td>
- <td>type derived from <code>sequence&lt;entity></code></td>
- </tr>
- </table>
-
- <p>As you can see from the table above a number of built-in
- XML Schema types are mapped to fundamental C++ types such
- as <code>int</code> or <code>bool</code>. All string-based
- XML Schema types are mapped to C++ types that are derived
- from either <code>std::string</code> or
- <code>std::wstring</code>, depending on the character
- type selected. For access and modification purposes these
- types can be treated as <code>std::string</code>. A number
- of built-in types, such as <code>qname</code>, the binary
- types, and the date/time types do not have suitable
- fundamental or standard C++ types to map to. As a result,
- these types are implemented from scratch in the XSD runtime.
- For more information on their interfaces refer to
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.5">Section
- 2.5, "Mapping for Built-in Data Types"</a> in the C++/Tree Mapping
- User Manual.</p>
-
-
- <!-- Chapater 5 -->
-
-
- <h1><a name="5">5 Parsing</a></h1>
-
- <p>We have already seen how to parse XML to an object model in this guide
- before. In this chapter we will discuss the parsing topic in more
- detail.</p>
-
- <p>By default, the C++/Tree mapping provides a total of 14 overloaded
- parsing functions. They differ in the input methods used to
- read XML as well as the error reporting mechanisms. It is also possible
- to generate types for root elements instead of parsing and serialization
- functions. This may be useful if your XML vocabulary has multiple
- root elements. For more information on element types refer to
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.9">Section
- 2.9, "Mapping for Global Elements"</a> in the C++/Tree Mapping User
- Manual.</p>
-
-
- <p>In this section we will discuss the most commonly used versions of
- the parsing functions. For a comprehensive description of parsing
- refer to <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#3">Chapter
- 3, "Parsing"</a> in the C++/Tree Mapping User Manual. For the <code>people</code>
- global element from our person record vocabulary, we will concentrate
- on the following three parsing functions:</p>
-
- <pre class="c++">
-std::[auto|unique]_ptr&lt;people_t>
-people (const std::string&amp; uri,
- xml_schema::flags f = 0,
- const xml_schema::properties&amp; p = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;people_t>
-people (std::istream&amp; is,
- xml_schema::flags f = 0,
- const xml_schema::properties&amp; p = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;people_t>
-people (std::istream&amp; is,
- const std::string&amp; resource_id,
- xml_schema::flags f = 0,
- const xml_schema::properties&amp; p = ::xml_schema::properties ());
- </pre>
-
- <p>The first function parses a local file or a URI. We have already
- used this parsing function in the previous chapters. The second
- and third functions read XML from a standard input stream. The
- last function also requires a resource id. This id is used to
- identify the XML document being parser in diagnostics messages
- as well as to resolve relative paths to other documents (for example,
- schemas) that might be referenced from the XML document.</p>
-
- <p>The last two arguments to all three parsing functions are parsing
- flags and properties. The flags argument provides a number of ways
- to fine-tune the parsing process. The properties argument allows
- to pass additional information to the parsing functions. We will
- use these two arguments in <a href="#5.1">Section 5.1, "XML Schema
- Validation and Searching"</a> below. All three functions return
- the object model as either <code>std::auto_ptr</code> (C++98) or
- <code>std::unique_ptr</code> (C++11), depending on the C++ standard
- selected (<code>--std</code> XSD compiler option). The following
- example shows how we can use the above parsing functions:</p>
-
- <pre class="c++">
-using std::auto_ptr;
-
-// Parse a local file or URI.
-//
-auto_ptr&lt;people_t> p1 (people ("people.xml"));
-auto_ptr&lt;people_t> p2 (people ("http://example.com/people.xml"));
-
-// Parse a local file via ifstream.
-//
-std::ifstream ifs ("people.xml");
-auto_ptr&lt;people_t> p3 (people (ifs, "people.xml"));
-
-// Parse an XML string.
-//
-std::string str ("..."); // XML in a string.
-std::istringstream iss (str);
-auto_ptr&lt;people_t> p4 (people (iss));
- </pre>
-
-
- <h2><a name="5.1">5.1 XML Schema Validation and Searching</a></h2>
-
- <p>The C++/Tree mapping relies on the underlying Xerces-C++ XML
- parser for full XML document validation. The XML Schema
- validation is enabled by default and can be disabled by
- passing the <code>xml_schema::flags::dont_validate</code>
- flag to the parsing functions, for example:</p>
-
- <pre class="c++">
-auto_ptr&lt;people_t> p (
- people ("people.xml", xml_schema::flags::dont_validate));
- </pre>
-
- <p>Even when XML Schema validation is disabled, the generated
- code still performs a number of checks to prevent
- construction of an inconsistent object model (for example, an
- object model with missing required attributes or elements).</p>
-
- <p>When XML Schema validation is enabled, the XML parser needs
- to locate a schema to validate against. There are several
- methods to provide the schema location information to the
- parser. The easiest and most commonly used method is to
- specify schema locations in the XML document itself
- with the <code>schemaLocation</code> or
- <code>noNamespaceSchemaLocation</code> attributes, for example:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0" ?>
-&lt;people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="people.xsd"
- xsi:schemaLocation="http://www.w3.org/XML/1998/namespace xml.xsd">
- </pre>
-
- <p>As you might have noticed, we used this method in all the sample XML
- documents presented in this guide up until now. Note that the
- schema locations specified with these two attributes are relative
- to the document's path unless they are absolute URIs (that is
- start with <code>http://</code>, <code>file://</code>, etc.).
- In particular, if you specify just file names as your schema
- locations, as we did above, then the schemas should reside in
- the same directory as the XML document itself.</p>
-
- <p>Another method of providing the schema location information
- is via the <code>xml_schema::properties</code> argument, as
- shown in the following example:</p>
-
- <pre class="c++">
-xml_schema::properties props;
-props.no_namespace_schema_location ("people.xsd");
-props.schema_location ("http://www.w3.org/XML/1998/namespace", "xml.xsd");
-
-auto_ptr&lt;people_t> p (people ("people.xml", 0, props));
- </pre>
-
- <p>The schema locations provided with this method overrides
- those specified in the XML document. As with the previous
- method, the schema locations specified this way are
- relative to the document's path unless they are absolute URIs.
- In particular, if you want to use local schemas that are
- not related to the document being parsed, then you will
- need to use the <code>file://</code> URI. The following
- example shows how to use schemas that reside in the current
- working directory:</p>
-
- <pre class="c++">
-#include &lt;unistd.h> // getcwd
-#include &lt;limits.h> // PATH_MAX
-
-char cwd[PATH_MAX];
-if (getcwd (cwd, PATH_MAX) == 0)
-{
- // Buffer too small?
-}
-
-xml_schema::properties props;
-
-props.no_namespace_schema_location (
- "file:///" + std::string (cwd) + "/people.xsd");
-
-props.schema_location (
- "http://www.w3.org/XML/1998/namespace",
- "file:///" + std::string (cwd) + "/xml.xsd");
-
-auto_ptr&lt;people_t> p (people ("people.xml", 0, props));
- </pre>
-
- <p>A third method is the most useful if you are planning to parse
- several XML documents of the same vocabulary. In that case
- it may be beneficial to pre-parse and cache the schemas in
- the XML parser which can then be used to parse all documents
- without re-parsing the schemas. For more information on
- this method refer to the <code>caching</code> example in the
- <code>examples/cxx/tree/</code> directory of the XSD
- distribution. It is also possible to convert the schemas into
- a pre-compiled binary representation and embed this representation
- directly into the application executable. With this approach your
- application can perform XML Schema validation without depending on
- any external schema files. For more information on how to achieve
- this refer to the <code>embedded</code> example in the
- <code>examples/cxx/tree/</code> directory of the XSD distribution.</p>
-
- <p>When the XML parser cannot locate a schema for the
- XML document, the validation fails and XML document
- elements and attributes for which schema definitions could
- not be located are reported in the diagnostics. For
- example, if we remove the <code>noNamespaceSchemaLocation</code>
- attribute in <code>people.xml</code> from the previous chapter,
- then we will get the following diagnostics if we try to parse
- this file with validation enabled:</p>
-
- <pre class="terminal">
-people.xml:2:63 error: no declaration found for element 'people'
-people.xml:4:18 error: no declaration found for element 'person'
-people.xml:4:18 error: attribute 'id' is not declared for element 'person'
-people.xml:5:17 error: no declaration found for element 'first-name'
-people.xml:6:18 error: no declaration found for element 'middle-name'
-people.xml:7:16 error: no declaration found for element 'last-name'
-people.xml:8:13 error: no declaration found for element 'gender'
-people.xml:9:10 error: no declaration found for element 'age'
- </pre>
-
- <h2><a name="5.2">5.2 Error Handling</a></h2>
-
- <p>The parsing functions offer a number of ways to handle error conditions
- with the C++ exceptions being the most commonly used mechanism. All
- C++/Tree exceptions derive from common base <code>xml_schema::exception</code>
- which in turn derives from <code>std::exception</code>. The easiest
- way to uniformly handle all possible C++/Tree exceptions and print
- detailed information about the error is to catch and print
- <code>xml_schema::exception</code>, as shown in the following
- example:</p>
-
- <pre class="c++">
-try
-{
- auto_ptr&lt;people_t> p (people ("people.xml"));
-}
-catch (const xml_schema::exception&amp; e)
-{
- cerr &lt;&lt; e &lt;&lt; endl;
-}
- </pre>
-
- <p>Each individual C++/Tree exception also allows you to obtain
- error details programmatically. For example, the
- <code>xml_schema::parsing</code> exception is thrown when
- the XML parsing and validation in the underlying XML parser
- fails. It encapsulates various diagnostics information
- such as the file name, line and column numbers, as well as the
- error or warning message for each entry. For more information
- about this and other exceptions that can be thrown during
- parsing, refer to
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#3.3">Section
- 3.3, "Error Handling"</a> in the C++/Tree Mapping
- User Manual.</p>
-
- <p>Note that if you are parsing <code>std::istream</code> on which
- exceptions are not enabled, then you will need to check the
- stream state after the call to the parsing function in order
- to detect any possible stream failures, for example:</p>
-
- <pre class="c++">
-std::ifstream ifs ("people.xml");
-
-if (ifs.fail ())
-{
- cerr &lt;&lt; "people.xml: unable to open" &lt;&lt; endl;
- return 1;
-}
-
-auto_ptr&lt;people_t> p (people (ifs, "people.xml"));
-
-if (ifs.fail ())
-{
- cerr &lt;&lt; "people.xml: read error" &lt;&lt; endl;
- return 1;
-}
- </pre>
-
- <p>The above example can be rewritten to use exceptions as
- shown below:</p>
-
- <pre class="c++">
-try
-{
- std::ifstream ifs;
- ifs.exceptions (std::ifstream::badbit | std::ifstream::failbit);
- ifs.open ("people.xml");
-
- auto_ptr&lt;people_t> p (people (ifs, "people.xml"));
-}
-catch (const std::ifstream::failure&amp;)
-{
- cerr &lt;&lt; "people.xml: unable to open or read error" &lt;&lt; endl;
- return 1;
-}
- </pre>
-
-
- <!-- Chapater 6 -->
-
-
- <h1><a name="6">6 Serialization</a></h1>
-
- <p>We have already seen how to serialize an object model back to XML
- in this guide before. In this chapter we will discuss the
- serialization topic in more detail.</p>
-
- <p>By default, the C++/Tree mapping provides a total of 8 overloaded
- serialization functions. They differ in the output methods used to write
- XML as well as the error reporting mechanisms. It is also possible to
- generate types for root elements instead of parsing and serialization
- functions. This may be useful if your XML vocabulary has multiple
- root elements. For more information on element types refer to
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.9">Section
- 2.9, "Mapping for Global Elements"</a> in the C++/Tree Mapping User
- Manual.</p>
-
-
- <p>In this section we will discuss the most commonly
- used version of serialization functions. For a comprehensive description
- of serialization refer to
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#4">Chapter
- 4, "Serialization"</a> in the C++/Tree Mapping User Manual. For the
- <code>people</code> global element from our person record vocabulary,
- we will concentrate on the following serialization function:</p>
-
- <pre class="c++">
-void
-people (std::ostream&amp; os,
- const people_t&amp; x,
- const xml_schema::namespace_infomap&amp; map =
- xml_schema::namespace_infomap (),
- const std::string&amp; encoding = "UTF-8",
- xml_schema::flags f = 0);
- </pre>
-
- <p>This function serializes the object model passed as the second
- argument to the standard output stream passed as the first
- argument. The third argument is a namespace information map
- which we will discuss in more detail in the next section.
- The fourth argument is a character encoding that the resulting
- XML document should be in. Possible valid values for this
- argument are "US-ASCII", "ISO8859-1", "UTF-8", "UTF-16BE",
- "UTF-16LE", "UCS-4BE", and "UCS-4LE". Finally, the flags
- argument allows fine-tuning of the serialization process.
- The following example shows how we can use the above serialization
- function:</p>
-
- <pre class="c++">
-people_t&amp; p = ...
-
-xml_schema::namespace_infomap map;
-map[""].schema = "people.xsd";
-
-// Serialize to stdout.
-//
-people (std::cout, p, map);
-
-// Serialize to a file.
-//
-std::ofstream ofs ("people.xml");
-people (ofs, p, map);
-
-// Serialize to a string.
-//
-std::ostringstream oss;
-people (oss, p, map);
-std::string xml (oss.str ());
- </pre>
-
-
- <h2><a name="6.1">6.1 Namespace and Schema Information</a></h2>
-
- <p>While XML serialization can be done just from the object
- model alone, it is often desirable to assign meaningful
- prefixes to XML namespaces used in the vocabulary as
- well as to provide the schema location information.
- This is accomplished by passing the namespace information
- map to the serialization function. The key in this map is
- a namespace prefix that should be assigned to an XML namespace
- specified in the <code>name</code> variable of the
- map value. You can also assign an optional schema location for
- this namespace in the <code>schema</code> variable. Based
- on each key-value entry in this map, the serialization
- function adds two attributes to the resulting XML document:
- the namespace-prefix mapping attribute and schema location
- attribute. The empty prefix indicates that the namespace
- should be mapped without a prefix. For example, the following
- map:</p>
-
- <pre class="c++">
-xml_schema::namespace_infomap map;
-
-map[""].name = "http://www.example.com/example";
-map[""].schema = "example.xsd";
-
-map["x"].name = "http://www.w3.org/XML/1998/namespace";
-map["x"].schema = "xml.xsd";
- </pre>
-
- <p>Results in the following XML document:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0" ?>
-&lt;example
- xmlns="http://www.example.com/example"
- xmlns:x="http://www.w3.org/XML/1998/namespace"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.example.com/example example.xsd
- http://www.w3.org/XML/1998/namespace xml.xsd">
- </pre>
-
- <p>The empty namespace indicates that the vocabulary has no target
- namespace. For example, the following map results in only the
- <code>noNamespaceSchemaLocation</code> attribute being added:</p>
-
- <pre class="c++">
-xml_schema::namespace_infomap map;
-
-map[""].name = "";
-map[""].schema = "example.xsd";
- </pre>
-
- <h2><a name="6.2">6.2 Error Handling</a></h2>
-
- <p>Similar to the parsing functions, the serialization functions offer a
- number of ways to handle error conditions with the C++ exceptions being
- the most commonly used mechanisms. As with parsing, the easiest way to
- uniformly handle all possible serialization exceptions and print
- detailed information about the error is to catch and print
- <code>xml_schema::exception</code>:</p>
-
- <pre class="c++">
-try
-{
- people_t&amp; p = ...
-
- xml_schema::namespace_infomap map;
- map[""].schema = "people.xsd";
-
- people (std::cout, p, map));
-}
-catch (const xml_schema::exception&amp; e)
-{
- cerr &lt;&lt; e &lt;&lt; endl;
-}
- </pre>
-
- <p>The most commonly encountered serialization exception is
- <code>xml_schema::serialization</code>. It is thrown
- when the XML serialization in the underlying XML writer
- fails. It encapsulates various diagnostics information
- such as the file name, line and column numbers, as well as the
- error or warning message for each entry. For more information
- about this and other exceptions that can be thrown during
- serialization, refer to
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#4.4">Section
- 4.4, "Error Handling"</a> in the C++/Tree Mapping
- User Manual.</p>
-
- <p>Note that if you are serializing to <code>std::ostream</code> on
- which exceptions are not enabled, then you will need to check the
- stream state after the call to the serialization function in order
- to detect any possible stream failures, for example:</p>
-
- <pre class="c++">
-std::ofstream ofs ("people.xml");
-
-if (ofs.fail ())
-{
- cerr &lt;&lt; "people.xml: unable to open" &lt;&lt; endl;
- return 1;
-}
-
-people (ofs, p, map));
-
-if (ofs.fail ())
-{
- cerr &lt;&lt; "people.xml: write error" &lt;&lt; endl;
- return 1;
-}
- </pre>
-
- <p>The above example can be rewritten to use exceptions as
- shown below:</p>
-
- <pre class="c++">
-try
-{
- std::ofstream ofs;
- ofs.exceptions (std::ofstream::badbit | std::ofstream::failbit);
- ofs.open ("people.xml");
-
- people (ofs, p, map));
-}
-catch (const std::ofstream::failure&amp;)
-{
- cerr &lt;&lt; "people.xml: unable to open or write error" &lt;&lt; endl;
- return 1;
-}
- </pre>
-
- </div>
-</div>
-
-</body>
-</html>
diff --git a/xsd/doc/cxx/tree/guide/makefile b/xsd/doc/cxx/tree/guide/makefile
deleted file mode 100644
index 3e6fba2..0000000
--- a/xsd/doc/cxx/tree/guide/makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-# file : doc/cxx/tree/guide/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(default): $(out_base)/cxx-tree-guide.ps $(out_base)/cxx-tree-guide.pdf
-
-
-$(out_base)/cxx-tree-guide.ps: $(src_base)/index.xhtml \
- $(src_base)/guide.html2ps \
- | $(out_base)/.
- $(call message,html2ps $<,html2ps -f $(src_base)/guide.html2ps -o $@ $<)
-
-$(out_base)/cxx-tree-guide.pdf: $(out_base)/cxx-tree-guide.ps | $(out_base)/.
- $(call message,ps2pdf $<,ps2pdf14 $< $@)
-
-# Install & Dist.
-#
-$(install): path := $(subst $(src_root)/doc/,,$(src_base))
-$(dist): path := $(subst $(src_root)/,,$(src_base))
-
-$(install): $(out_base)/cxx-tree-guide.ps $(out_base)/cxx-tree-guide.pdf
- $(call install-data,$(src_base)/index.xhtml,$(install_doc_dir)/xsd/$(path)/index.xhtml)
- $(call install-data,$(out_base)/cxx-tree-guide.ps,$(install_doc_dir)/xsd/$(path)/cxx-tree-guide.ps)
- $(call install-data,$(out_base)/cxx-tree-guide.pdf,$(install_doc_dir)/xsd/$(path)/cxx-tree-guide.pdf)
-
-$(dist): $(out_base)/cxx-tree-guide.ps $(out_base)/cxx-tree-guide.pdf
- $(call install-data,$(src_base)/index.xhtml,$(dist_prefix)/$(path)/index.xhtml)
- $(call install-data,$(out_base)/cxx-tree-guide.ps,$(dist_prefix)/$(path)/cxx-tree-guide.ps)
- $(call install-data,$(out_base)/cxx-tree-guide.pdf,$(dist_prefix)/$(path)/cxx-tree-guide.pdf)
-
-$(dist-win): $(dist)
-
-
-# Clean
-#
-$(clean):
-ifneq ($(xsd_clean_gen),n)
- $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-tree-guide.ps)
- $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-tree-guide.pdf)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/install.make)
diff --git a/xsd/doc/cxx/tree/makefile b/xsd/doc/cxx/tree/makefile
deleted file mode 100644
index 4163730..0000000
--- a/xsd/doc/cxx/tree/makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-# file : doc/cxx/tree/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-docs := guide manual
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(docs)))
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install): path := $(subst $(src_root)/doc/,,$(src_base))
-$(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install): $(addprefix $(out_base)/,$(addsuffix /.install,$(docs)))
- $(call install-dir,$(src_base)/reference,$(install_doc_dir)/xsd/$(path)/reference)
-
-$(dist-common):
- $(call install-dir,$(src_base)/reference,$(dist_prefix)/$(path)/reference)
-
-$(dist): $(dist-common) $(addprefix $(out_base)/,$(addsuffix /.dist,$(docs)))
-$(dist-win): $(dist-common) $(addprefix $(out_base)/,$(addsuffix /.dist-win,$(docs)))
-
-# Clean.
-#
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(docs)))
-
-$(call include,$(bld_root)/install.make)
-
-$(foreach m,$(docs),$(call import,$(src_base)/$m/makefile))
diff --git a/xsd/doc/cxx/tree/manual/cxx-tree-manual.pdf b/xsd/doc/cxx/tree/manual/cxx-tree-manual.pdf
deleted file mode 100644
index 73131a3..0000000
--- a/xsd/doc/cxx/tree/manual/cxx-tree-manual.pdf
+++ /dev/null
Binary files differ
diff --git a/xsd/doc/cxx/tree/manual/cxx-tree-manual.ps b/xsd/doc/cxx/tree/manual/cxx-tree-manual.ps
deleted file mode 100644
index 38335e9..0000000
--- a/xsd/doc/cxx/tree/manual/cxx-tree-manual.ps
+++ /dev/null
@@ -1,7382 +0,0 @@
-%!PS
-%%Title: C++/Tree Mapping User Manual
-%%Creator: html2ps version 1.0 beta7
-%%EndComments
-save
-2000 dict begin
-/d {bind def} bind def
-/D {def} d
-/t true D
-/f false D
-/FL [/Times-Roman
-/Times-Italic
-/Times-Bold
-/Times-BoldItalic
-/Courier
-/Courier-Oblique
-/Courier-Bold
-/Courier-BoldOblique
-/Helvetica
-/Helvetica-Oblique
-/Helvetica-Bold
-/Helvetica-BoldOblique] D
-/WF t D
-/WI 0 D
-/F 1 D
-/IW 471 F div D
-/IL 621 F div D
-/PS 791 D
-/EF [0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 2] D
-/EZ [12 10 19 17 15 13 12 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 8 8] D
-/Ey [0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] D
-/EG [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] D
-/Tm [1 1 0.8 0.8 0.8 0.8 0.8 0.8 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1.3 0 0] D
-/Bm [1 1 0.5 0.5 0.5 0.5 0.5 0.5 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1 0 0] D
-/Lm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 2 0 0 0] D
-/Rm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] D
-/EU [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0] D
-/NO f D
-/YY [[{()}{ h }][{ h }{()}][{()}{()}]] D
-/ZZ [[{ (July 2014) }{ Pn }][{ Pn }{ (July 2014) }][{ Ti(, v)join ME 0 get join }{ Ti(, v)join ME 0 get join }]] D
-/Ts EZ 0 get D
-/TU f D
-/Xp t D
-/AU f D
-/SN 0 D
-/Cf t D
-/Tp t D
-/Fe f D
-/TI 2 Ts mul D
-/Fm 14 D
-/xL 71 D
-/xR 71 D
-/yL 706 D
-/yR 706 D
-/Wl 471 F div D
-/Wr 471 F div D
-/hL 621 F div D
-/hR 621 F div D
-/FE {newpath Fm neg Fm M CP BB IW Fm add Fm L IW Fm add IL Fm add neg L CP BB
- Fm neg IL Fm add neg L closepath} D
-/LA {PM 0 eq{/IW Wl D /IL hL D}{/IW Wr D /IL hR D}ie /W IW D /LL W D /LS W D
- TU PM 0 eq and{IW 56 F div add SA{Sf div}if 0 translate}
- {PM 0 eq{xL yL}{xR yR}ie translate F SA{Sf mul}if dup scale
- CS CF FS Cf{CA CL get VC}if /Bb f D}ie 0 0 M
- TF not Tc or {Cf{gsave SA{1 Sf div dup scale}if Cb VC FE fill grestore}if}if}D
-/Pi 0 Ts mul D
-/SG [0.8 1 1] D
-/Ab 15 D
-/J 0 D
-/Tc t D
-/NH 6 D
-/Nf f D
-/Pa f D
-/LH 1.2 D
-/XR f D
-/Xr {/pN E D ( [p ) WB pN WB (] )WB} D
-/Db [16#FF 16#FF 16#FF] D
-/Dt [16#00 16#00 16#00] D
-/eA f D
-/Fi f D
-/bT f D
-/Lc t D
-/Dl [16#00 16#00 16#00] D
-/LX f D
-/Br 0.25 D
-/IA ([IMAGE]) D
-/DS {/PF f D()WB NL NP()pop RC ZF} D
-/Gb f D
-/Mb t D
-/Hc [16#00 16#00 16#00] D
-/Bl 3 D
-/MI -15.6 D
-/DX (DRAFT) D
-/Di 0 D
-/Tt 113.385826771654 D
-/Th { (
-) 2 Al()BR (
- ) 0 1 -1 H()4 FZ (C++/Tree Mapping User Manual) ES()EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
-) Ea()BR (
- ) 0 P (Revision ) ME 0 get join(     July 2014)join EP (
- ) 0 P (Copyright © 2005-2014 CODE SYNTHESIS TOOLS CC) EP (
-
- ) 0 P (Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- ) R0 2 A (GNU Free
- Documentation License, version 1.2) EA (; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- ) EP (
-
- ) 0 P (This document is available in the following formats:
- ) R1 2 A (XHTML) EA (,
- ) R2 2 A (PDF) EA (, and
- ) R3 2 A (PostScript) EA (.) EP()} D
-/tH {()0 1 -1 H (Table of Contents) EH()} D
-/FD 2 D
-/Dy 2 D
-/cD [16#F0 16#F0 16#F0] D
-/FW 0.6 D
-/FU [16#00 16#00 16#00] D
-/ET {/RM f D /A0 3 D /PN SN D /OU t D /Ou t D /W IW D /LL W D D1
- Ms not TP and{Ip}if /TF f D} D
-
-%-- End of variable part --
-/MySymbol 10 dict dup begin
- /FontType 3 D /FontMatrix [.001 0 0 .001 0 0 ] D /FontBBox [25 -10 600 600] D
- /Encoding 256 array D 0 1 255{Encoding exch /.notdef put}for
- Encoding (e) 0 get /euro put
- /Metrics 2 dict D Metrics begin
- /.notdef 0 D
- /euro 651 D
- end
- /BBox 2 dict D BBox begin
- /.notdef [0 0 0 0] D
- /euro [25 -10 600 600] D
- end
- /CharacterDefs 2 dict D CharacterDefs begin
- /.notdef {} D
- /euro{newpath 114 600 moveto 631 600 lineto 464 200 lineto 573 200 lineto
- 573 0 lineto -94 0 lineto 31 300 lineto -10 300 lineto closepath clip
- 50 setlinewidth newpath 656 300 moveto 381 300 275 0 360 arc stroke
- -19 350 moveto 600 0 rlineto -19 250 moveto 600 0 rlineto stroke}d
- end
- /BuildChar{0 begin
- /char E D /fontdict E D /charname fontdict /Encoding get char get D
- fontdict begin
- Metrics charname get 0 BBox charname get aload pop setcachedevice
- CharacterDefs charname get exec
- end
- end}D
- /BuildChar load 0 3 dict put /UniqueID 1 D
-end
-definefont pop
-
-/Cd {aload length 2 idiv dup dict begin {D} repeat currentdict end} D
-/EX {EC cvx exec} D
-/DU {} d
-/BB {pop pop}d
-/ie {ifelse} d
-/E {exch} d
-/M {moveto} d
-/R {rmoveto} d
-/L {lineto} d
-/RL {rlineto} d
-/CP {currentpoint} d
-/SW {stringwidth} d
-/GI {getinterval} d
-/PI {putinterval} d
-/Sg {setgray} d
-/LW {setlinewidth} d
-/S {dup () ne OU and{0 Co R AT 3 eq LB and HF not and A1 0 ne A2 0 ne or and
- {A2 0 32 A1 0 6 -1 roll awidthshow}{show}ie 0 Co neg R}{pop}ie
- OU PH 3 eq or{/Ms t D}if} D
-/U {OU{gsave CP currentfont /FontInfo get /UnderlinePosition get
- 0 E currentfont /FontMatrix get dtransform E pop add newpath M dup SW pop
- CJ 0 RL stroke grestore}if} D
-/B {OU Br 0 gt and{CP Ts neg Ts .33 mul R gsave 0 Sg
- CP newpath Ts Br mul 0 360 arc closepath UI 2 mod 0 eq{stroke}{fill}ie
- grestore M CP E Ts Br 1 add mul sub E BB /Ms t D}if}D
-/NP {Ms TP not or PA and OU and{TP{OR}if f1{mF k2 /mF E D /YC 0 D}if
- TP TU not PM 0 eq or and{showpage}if DU Ip TE not{LA}if 0.6 LW
- /CI 0 D /TP t D /Hs f D /hl 6 D /Hv 6 D /HI hi D /Ms f D}if Bs XO BO M} D
-/Np {LE sub CP E pop gt PL 0 eq and{NP}if}D
-/Ip {/PN PN 1 add D /Pn RM{1}{4}ie PN Ns D /PM PN SN sub 2 mod D} D
-/GP {E dup 3 -1 roll get PN 1 add 2 mod get dup type /integertype eq
- {get 0 get}{E pop}ie}d
-/Fc {dup 2 GP exec SW pop /S1 E D dup 1 GP exec SW pop /S2 E D 0 GP exec SW
- pop /S3 E D S1 0 gt{S2 2 mul S1 add S3 2 mul S1 add 2 copy lt{E}if pop}{0}ie
- S2 S3 add 2 copy lt{E}if pop IW .9 mul div dup 1 gt{1 E div}{pop 1}ie}D
-/OR {Df{Sd}if tp not{gsave SA{1 Sf div dup scale}if Fe{Cf{FU VC}if FW LW
- 1 setlinejoin FE stroke}if /YO {60 F div dup 40 gt{pop 40}if}D /cs CS D
- /cf CF D /CF 0 D /pf PF D /PF f D /Fn FN D /At AT D /AT 0 D /FN EF Hf 1 add
- get D Fz Fs FS ZZ Fc Fz mul Fs FS EU Hf 1 add get dup type /arraytype eq
- Cf and{VC}{pop 0 Sg}ie IW IL neg YO sub M ZZ 1 GP exec dup SW pop neg 0 R Sh
- 0 IL neg YO sub M ZZ 0 GP exec Sh ZZ 2 GP exec dup SW pop IW E sub 2 div
- IL neg YO sub M Sh Fz Fs FS NO{/AW IW Pn SW pop sub D AW 2 div IL neg YO sub
- S1 0 gt S2 AW .45 mul gt or S3 AW .45 mul gt or{Fz 2 mul sub}if M Pn Sh}if
- EU Hf get dup type /arraytype eq Cf and{VC}{pop 0 Sg}ie YY Fc /FN EF Hf get D
- Hz mul HS FS IW YO M YY 1 GP exec dup SW pop neg 0 R Sh 0 YO M YY 0 GP exec Sh
- YY 2 GP exec dup SW pop IW E sub 2 div YO M Sh /FN Fn D /AT At D t Pb XO SZ
- SL get neg R /PF pf D grestore /CF 0 D cs cf FS}if}D
-/Sh {dup () ne{CP Hz 4 div sub BB show CP CS add BB}{pop}ie}D
-/Pb {/OU E D /Ou OU D /PB t D 0 0 M Ba{/Sa save D /BP t D /Fl t D RC /PL 0 D
- /PH 0 D /W IW D /LE IL .7 mul D /EO 0 D SI ZF /YA 0 D /BO 0 D /C1 () D
- BA 0 Ts neg R Bb{Xl Yl Xh Yh}if Bb CP Sa restore M
- {/Yh E D /Xh E D /Yl E D /Xl E D}if /Fl t D}if
- BL /OU t D /HM f D /Ou t D /PB f D} D
-/Bs {/BP Ba not D}D
-/reencodeISO {
- dup dup findfont dup length dict begin{1 index /FID ne{D}{pop pop}ie}forall
- /Encoding ISOLatin1Encoding D currentdict end definefont} D
-/ISOLatin1Encoding [
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
-/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash
-/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
-/less/equal/greater/question/at/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/bracketleft/backslash/bracketright
-/asciicircum/underscore/quoteleft/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/braceleft/bar/braceright/asciitilde
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar
-/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
-/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
-/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
-/guillemotright/onequarter/onehalf/threequarters/questiondown
-/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
-/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
-/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
-/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
-/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
-/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
-/yacute/thorn/ydieresis
-] D
-[128/backslash 129/parenleft 130/parenright 141/circumflex 142/tilde
-143/perthousand 144/dagger 145/daggerdbl 146/Ydieresis 147/scaron 148/Scaron
-149/oe 150/OE 151/guilsinglleft 152/guilsinglright 153/quotesinglbase
-154/quotedblbase 155/quotedblleft 156/quotedblright 157/endash 158/emdash
-159/trademark]
-aload length 2 idiv 1 1 3 -1 roll{pop ISOLatin1Encoding 3 1 roll put}for
-/colorimage where{pop}{
- /colorimage {
- pop pop /Pr E D {/Cv Pr D /Gr Cv length 3 idiv string D 0 1 Gr length 1 sub
- {Gr E dup /i E 3 mul D Cv i get 0.299 mul Cv i 1 add get 0.587 mul add
- Cv i 2 add get 0.114 mul add cvi put}for Gr} image} D
-}ie
-/pdfmark where{pop}{userdict /pdfmark /cleartomark load put}ie
-WF{FL{reencodeISO D}forall}{4 1 FL length 1 sub{FL E get reencodeISO D}for}ie
-/Symbol dup dup findfont dup length dict begin
- {1 index /FID ne{D}{pop pop}ie}forall /Encoding [Encoding aload pop]
- dup 128 /therefore put D currentdict end definefont D
-
-/SF {/CS E D SZ SL CS put FO SL FN put /YI CS LH neg mul D dup ST cvs ( ) join
- CS ST cvs join C1 E join ( NF ) join /C1 E D CS NF /Wf WF FN 0 gt or D
- /BW Wf{( ) SW pop}{0}ie D}D
-/NF {/cS E D /cF E D cF 0 ge{FL cF get}{cF -1 eq{/Symbol}{/MySymbol}ie}ie
- findfont cS scalefont setfont} D
-/FS {CF or /CF E D FR SL CF put CF CF 0 ge{FN 4 mul add}if E SF} D
-/PC {SH /BP f D fin not GL not and{NL}if /HM t D /LL LS D} D
-/BS {/TX E D Wf{/fin f D /CW 0 D /LK 0 D /SC 0 D
- /RT TX D {RT ( ) search{/NW E D pop /RT E D /WH NW SW pop D CW WH add LL gt
- {TX SC LK SC sub 1 sub NN GI GL{SH cF cS OC
- 2 copy cS ne E cF ne or{NF}{pop pop}ie}{PC /CW WH BW add D}ie
- /SC LK D}
- {GL{JC}if
- /CW CW WH add BW add D /HM t D}ie /GL f D /Ph f D
- /LK LK NW length 1 add add D}{pop exit}ie}loop
- /fin t D TX SC LK SC sub GI SH RT () ne{GL not{CC}if}if
- /LC TX length D /WH RT SW pop D CW WH add Hy{HC SW pop add}if LL gt
- {RT GL{SH cF cS OC 2 copy cS ne E cF ne or{NF}{pop pop}ie
- Hy{/Ph t D}if /LL LS D}{NL /LL LS D SH}ie}
- {RT PC Hy{CC}if /Ph Ph Hy or D}ie RT () ne{/GL t D /HM t D}if}
- {TX SW pop LL le{TX SH}{/NW () D 0 2 TX length 1 sub
- {/CW E D TX 0 CW GI dup SW pop LL gt{pop NW SH /HM t D NL/LL W XO sub MR sub D
- /CW CW 2 sub NN D /TX TX CW TX length CW sub GI D TX BS exit}
- {/NW E D}ie}for}ie}ie /HM t D}D
-/CC {C0 length 0 gt{JC}if /C0 [C1 L1 YA YB Mf NS NB TB AF Bw] D
- /C1 () D /L0 L1 D /YA 0 D /YB 0 D /Mf 0 D /NS 0 D /NB 0 D}D
-/JC {C0 aload length 0 gt{pop pop pop NB add /NB E D NS add /NS E D
- dup Mf gt{/Mf E D}{pop}ie dup YB gt{/YB E D}{pop}ie
- dup YA gt{/YA E D}{pop}ie pop C1 join /C1 E D /C0 [] D}if}D
-/OC {C0 length 0 gt{C1 L1 L0 sub YA YB Mf NS NB TB AF Bw GL C0 aload pop
- /Bw E D /AF E D /TB E D /NB E D /NS E D /Mf E D /YB E D /YA E D /C0 [] D
- /L1 E D /C1 E D Ph{HC SH}if NL /GL E D /Bw E D /AF E D /TB E D /NB E D /NS E D
- /Mf E D /YB E D /YA E D /L1 E D /LL W L1 sub XO sub MR sub WH sub D /CW 0 D
- C1 E join /C1 E D}if}D
-/BT {/LB t D dup length string copy RS dup dup () ne E ( ) ne and
- {/CI 0 D /LS LL D /LL W L1 sub XO sub MR sub D BS}
- {dup ( ) eq{/GL f D}if dup () eq L1 0 eq or{pop}{SH /BP f D /Ph f D}ie}ie
- /LB f D} D
-/BL {CP E pop XO E M} D
-/NL {JC /GL f D /SK W XO sub MR sub L1 sub TB{Bw add}if D
- /YA LF{Mf HM Fl not and PF or{LH mul}if}{0 /LF t D}ie YA 2 copy lt{E}if pop D
- C1 () ne{/FB YB Mf SA{Sf mul}if 4 div 2 copy lt{E}if pop D}if Fl{/Ya YA D}if
- CP E pop YA sub YB sub LE neg lt Fl not and PB not and{NP}if NT TL BL
- OU PF not and PB or{/RE L1 TB{Bw sub}if
- W XO sub MR sub div YA YB add LE BO add div 2 copy lt{E}if pop D
- RE 1 gt{BL 1 RE div dup scale}if}if
- AT 2 le{SK AT mul 2 div YA neg R}if
- AT 3 eq{0 YA neg R TB{/NB NB 1 sub D /NS NS 1 sub D}if /NB NB 1 sub NN D
- /A3 NS 6 mul NB add D NS NB add 0 eq
- {/A1 0 D /A2 0 D}
- {NS 0 eq{/A1 SK NB div dup J gt{pop 0}if D /A2 0 D}{J A3 mul SK lt
- {/A1 J D /A2 SK J NB mul sub NS div dup Ab gt{/A1 0 D pop 0}if D}
- {/A1 SK A3 div D /A2 A1 6 mul D}ie}ie}ie /A1 A1 NN D /A2 A2 NN D}if
- AT 4 eq{0 YA neg R PH 2 le{PD 0 lt{/PD L1 D}if PD M1 gt{/M1 PD D}if
- L1 PD sub M2 gt{/M2 L1 PD sub D}if}{DV ID 1 sub get 0 ge{Lo 0 R}if}ie}if
- F0 cF ne Cs cS ne or{F0 Cs NF}if
- /ms Ms D /Ms f D CP FB sub
- C1 cvx exec XO EO sub L1 add TB{BW sub}if dup LM gt{/LM E D}{pop}ie
- PH 0 eq PH 4 eq or Ms and{HF not{/PO t D /AH t D}if
- BB CP YA add E AT 3 eq LB and{A1 sub}if TB{BW sub}if E BB}
- {pop pop}ie Ms HM PH 3 eq and or{/BP f D /Fl f D}if
- /Lo 0 D /L1 0 D /F0 cF D /Cs cS D BP not{0 YB NN neg R}if
- OU f1 and mF not and{k2 /f1 f D}if
- OU PF not and PB or{RE 1 gt{RE dup scale}if}if /Ms ms Ms or D
- /C1 AF{(Cp )}{()}ie D /YA 0 D /YB 0 D BL
- AT 4 eq LB not and PH 3 ge and
- {ID DV length lt{DV ID get dup 0 ge{DO E sub /Lo E D /L1 Lo D}{pop}ie
- /ID ID 1 add D}if}if /T t D CD{/LN LN 1 add D PD}if
- /PD -1 D /NS 0 D /NB 0 D /TB f D /Ph f D /Mf 0 D /HM f D} D
-/RS {/TM E D /CN 0 D TM{10 eq{TM CN ( ) PI}if /CN CN 1 add D}forall
- /CN 0 D /BK HM EN and{0}{1}ie D TM
- {dup 32 ne{TM CN 3 2 roll put /CN CN 1 add D /BK 0 D}
- {pop BK 0 eq{TM CN 32 put /CN CN 1 add D}if /BK 1 D}ie}forall
- TM 0 CN GI dup dup () ne E ( ) ne and
- {dup CN 1 sub get 32 eq{/EN f D}{/EN t D}ie}if} D
-/join {2 copy length E length add string dup 4 2 roll 2 index 0 3 index
- PI E length E PI}d
-/WR {(\n) search{dup () ne BP not or
- {Li 4 le CP E pop YI Li mul add LE add 0 lt and PL 0 eq and{NP}if
- SH NL pop /Li Li 1 sub D WR}{pop pop WR}ie}{SH}ie /CI 0 D /BP f D} D
-/SH {dup dup () ne E ( ) ne and PF or CS Mf gt and{/Mf CS D}if
- T not Wf and{( ) E join /T t D}if dup BP{/MF CS D}if
- AT 3 eq{2 copy length dup 0 gt{/NB E NB add D
- {( ) search{/NS NS 1 add D pop pop}{pop exit}ie}loop}{pop pop}ie}if
- CD PD 0 lt and{dup DC search{SW pop /PD E L1 add D pop pop}{pop}ie}if
- 0 Np dup SW pop L1 add /L1 E D dup () ne
- {C1 (\() join E join (\)) join AU AF and UF or Wf and{( U ) join}if
- sF{( s ) join}if ( S ) join
- /C1 E D dup length 1 sub get 32 eq /TB E D /Bw BW D}{pop pop}ie} D
-/BG {AI LG BC add add 0 eq} D
-/ON {OU{Ty AR AI NN get dup 1 add Ln Ns Ty 2 mod 0 eq{(. )}{(\) )}ie join
- dup SW pop neg 0 R CP E 0 lt{0 E M}{pop}ie CP BB show /Ms t D}if} D
-/Ln {AR AI 3 -1 roll put}D
-/SP {dup CI lt BP not and{dup CI sub 0 E R /CI E D}{pop}ie} D
-/BN {PF{WR /HM f D}{BT NL}ie} D
-/NN {dup 0 lt{pop 0}if} D
-/h {(h) HI ST cvs join cvx exec dup 1 get E Nf{0 get E join}{pop}ie} D
-/H {/fn FN D /Hi E 1 add D 1 sub /HL E D /H2 HL 2 add D /GS EZ H2 get D
- E Tm H2 get GS mul BE dup 0 gt{1 sub}{pop EG H2 get dup 0 lt{pop AT}if}ie NA
- WW Np /SL SL 1 add D /FN EF H2 get D GS Ey H2 get FS
- EU H2 get Sc Hs not HL Hl lt and Hs HL hl lt and or Hi 0 eq or
- {/HI Hi D /Hs t D /hl HL D /Hv HL D}if HL Hl lt{/hi Hi D}if
- Nf HI 0 gt and{(h) Hi ST cvs join cvx exec 0 get WB}if
- /HF t D /AH f D /PO f D} D
-/EH {Bm H2 get GS mul BE OA /SL SL 1 sub NN D /CF 0 D /FN fn D
- SZ SL get FR SL get FS /HF f D /GS Ts D ()Ec} D
-/P {E PF{WR}{PO{EP}{BN}ie Ts 4 mul Np AE not{Tm 0 get Ts mul neg SP}if
- dup 0 ge AH and{Pi Pd}if}ie 1 sub dup 0 lt{pop AV AL get}if /AT E D /PO t D} D
-/EP {PF{WR}{BN Ts 4 mul Np}ie AE not{Bm 0 get Ts mul neg SP}if
- /AT AV AL get D /PO f D} D
-/BE {E PO{EP}{BN}ie Ts 4 mul Np neg SP} D
-/HR {/Aw W EO sub D /RW E dup 0 gt{Aw mul}{neg}ie dup Aw gt{pop Aw}if D /RZ E D
- E BN Ts neg SP 1 sub 2 div Aw RW sub mul EO add CP E pop M PF{0 Ps neg R}if
- 0 Np OU{gsave RZ LW Cf{Hc VC}{0 Sg}ie CP BB RW 0 RL CP BB stroke grestore}if
- /CI 0 D /BP f D PF not{Ts neg SP}if /Ms t D} D
-/AD {I NL EG 14 get dup 0 lt{pop AT}if NA /AE t D Tm 14 get Ts mul neg SP
- Cf{EU 14 get dup -1 eq{pop CA CL get}if Sc}if} D
-/DA {BN ()ES OA /AE f D ()Ec Bm 14 get Ts mul neg SP} D
-/PR {/MW E D /Li E D Tm 1 get Ps mul BE 0 NA /FN Fp D /PF t D SI /SL SL 1 add D
- /CF 0 D Ps CS mul Ts div MW WC mul CS mul Ts div dup LL gt PL 0 eq and
- {LL div div}{pop}ie Ey 1 get FS CP E pop LE add YI neg div cvi dup Li lt
- AH and{4 lt YI Li mul 5 mul LE add 0 gt or PL 0 eq and{NP}if}{pop}ie
- EU 1 get Sc /GS Ps D}D
-/RP {WR NL () /PF f D SI /FN 0 D ES Bm 1 get Ps mul neg SP OA /GS Ts D} D
-/SI {/XO Lm 15 get BC NN mul Lm 16 get AI UI sub NN mul add
- Lm 17 get UI NN mul add Lm 20 get LG NN mul add Ts mul
- PF{Lm 1 get Ps mul add}if EO add D
- /MR Rm 15 get BC NN mul Rm 16 get AI UI sub NN mul add
- Rm 17 get UI NN mul add Rm 20 get LG NN mul add Ts mul
- PF{Rm 1 get Ps mul add}if D /LL W XO sub MR sub D} D
-/DT {/cC E D BN /LG LG 1 sub D SI /LG LG 1 add D WW 2 div Np BL} D
-/DD {WB Cc 0 eq cC 0 eq and L1 0 eq or Lm 20 get Ts mul L1 sub TB{BW add}if
- Ts 2 div lt or NL /LF E D SI BL /cC 0 D} D
-/DL {Dc LG Cc put /Cc E D BG{Tm 18 get Ts mul BE}{BN}ie /LG LG 1 add D BL} D
-/LD {BN LG 0 gt{/LG LG 1 sub D}if /Cc Dc LG get D SI
- BG{()Bm 18 get Ts mul BE}if BL} D
-/UL {BG{Tm 17 get Ts mul BE}{BN}ie NR AI NN 0 put /UI UI 1 add D
- /AI AI 1 add D SI BL} D
-/LU {BN /UI UI 1 sub D /AI AI 1 sub D SI BG{()Bm 17 get Ts mul BE}if BL} D
-/OL {E BG{Tm 16 get Ts mul BE}{BN}ie TR AI NN Ty put /Ty E D NR AI NN 1 put
- /AI AI 1 add D SI BL 1 Ln} D
-/LO {BN /AI AI 1 sub D /Ty TR AI get D SI BG{()Bm 16 get Ts mul BE}if BL} D
-/LI {E BN -1 SP /BP f D /CI 0 D 0 Np NR AI 1 sub NN get 1 eq
- {dup dup 0 gt E 4 le and{/Ty E D}{pop}ie
- /L1 L1 Ty AR AI NN get Ns SW pop XO sub dup 0 lt{pop 0}if add D ( ON )}
- {pop ( B )}ie C1 E join /C1 E D CS Mf gt{/Mf CS D}if BL} D
-/BQ {Tm 15 get Ts mul BE /BC BC 1 add D SI BL} D
-/QB {Bm 15 get Ts mul BE /BC BC 1 sub D SI BL} D
-/Al {E EP 1 sub dup 0 lt{pop AV AL get}if NA} D
-/Ea {EP OA} D
-/WB {PF{WR}{BT}ie} D
-/F1 {WB /FN 0 D CS 0 FS} D
-/F2 {WB /FN WI D CS 0 FS} D
-/HY {/Hy t D WB /Hy f D} D
-/YH {WB} D
-/A {/LT E D LT 1 eq{/RN E D}if /Lh E D WB /C1 C1 ( Cp ) join D
- Lc AF not and{Cl Sc}if /AF t D} D
-/EA {Lc AF and{Ec}{WB}ie TL Pa AF and Lh 0 ne and
- {( \() Lh join (\)) join /AF f D WB}if /AF f D} D
-/TL {C1 ( Tl ) apa /C1 E D} d
-/apa {AF OU and Lh 0 ne LT 1 eq or and{LT 1 eq{RN ( /) E ST cvs join}
- {(\() Lh join (\)) join}ie E join join}{pop}ie} d
-/Cp {/Xc CP /Yc E D D} D
-/SS {Cf{dup 0 ge{EU E get dup -1 eq{pop CA CL get}if}{pop CA CL get}ie Sc}
- {pop}ie SZ SL get /SL SL 1 add D} D
-/I {WB 8 SS 1 FS} D
-/EM {WB 8 SS /CF CF 1 xor D 0 FS} D
-/BD {WB 9 SS 2 FS} D
-/TT {WB 10 SS /FN Fp D 0 FS} D
-/KB {WB 11 SS /FN Fp D 2 FS} D
-/CT {WB 12 SS 1 FS} D
-/SM {WB 13 SS /FN Fp D 0 FS} D
-/Q {/QL QL 1 add D QO QL 2 mod get La get join WB} D
-/EQ {QC QL 2 mod get La get join WB /QL QL 1 sub D} D
-/RO {WB -1 SS /CF 0 D 0 FS} D
-/SY {WB -1 SS -1 FS} D
-/MY {WB -1 SS -2 FS} D
-/ES {WB /SL SL 1 sub NN D /CF 0 D /FN FO SL get D SZ SL get FR SL get FS ()Ec}D
-/FZ {3 sub 1.2 E exp GS mul E WB TL /C1 C1 ( Cp ) join D /SL SL 1 add D 0 FS} D
-/Ef {WB TL ()ES /C1 C1 ( Cp ) join D} D
-/BZ {dup /Bf E D FZ}D
-/Sc {dup -1 ne Cf and{/CL CL 1 add D dup 0 eq{pop [0 0 0]}if
- dup CA E CL E put VS ( VC ) join C1 E join /C1 E D}{pop}ie} D
-/Ec {WB Cf{/CL CL 1 sub NN D CA CL get VS ( VC ) join C1 E join /C1 E D}if} D
-/VS {dup type /arraytype eq{([) E {ST cvs join ( ) join}forall (]) join}if} D
-/VC {{255 div}forall setrgbcolor} D
-/Sl {dup type /integertype ne{Ds}if /La E D WB}d
-/UN {WB /UF t D} D
-/NU {WB /UF f D} D
-/SE {WB /sF t D} D
-/XE {WB /sF f D} D
-/sM {/C1 C1 ( k1 ) join D}d
-/eM {/C1 C1 ( k2 ) join D}d
-/k1 {/YC CP E pop Ts add D /mF t D /f1 t D}d
-/k2 {gsave 3 LW -9 CP E pop Ts 0.2 mul sub M -9 YC L stroke grestore /mF f D}d
-/Ac {/AC E D WB}d
-/Ca {eA{( \()join AC join(\) )join}if WB}d
-/s {OU{gsave 0 CS .25 mul R dup SW pop CJ 0 RL stroke grestore}if}D
-/CJ {AT 3 eq LB and{E dup dup length 1 sub A1 mul E
- {( ) search{pop pop E A2 add E}{pop exit}ie}loop 3 -1 roll add
- W CP pop sub 2 copy gt{E}if pop}if}D
-/So {/Co E D} D
-/SO {C1 Yo ST cvs join ( So ) join /C1 E D (j) SW pop 2 div Pd} D
-/Se {E WB CS E div Pd}D
-/Pd {dup type /stringtype eq{SW pop}if dup /L1 E L1 add D
- ST cvs ( 0 R ) join C1 E join /C1 E D} D
-/Sp {0.35 CO} D
-/Sb {-0.2 CO} D
-/CO {OV Io Yo put /Yo E CS mul Yo add D /Io Io 1 add D -1.5 Io mul 3 add FZ SO
- CS Yo add dup YA gt{/YA E D}{pop}ie
- Yo neg dup YB gt{/YB E D}{pop}ie} D
-/Es {ES /Io Io 1 sub NN D /Yo OV Io get D SO} D
-/SB {/N2 0 D 0 1 NI{/N E D{IX N2 get 0 lt{/N2 N2 1 add D}{exit}ie}loop
- /K WS N get FC N get mul D /NY AY N2 get D /BV NY array D
- 0 1 NY 1 sub{/TM K string D currentfile TM readhexstring pop pop BV E TM put}
- for BM N BV put /N2 N2 1 add D}for} D
-/IC [{/MA E D /MB 0 D}{2 div /MA E D /MB MA D}{/MB E CS sub D /MA CS D}
- {pop /MA YS AB mul D /MB 1 AB sub YS mul D}{pop /MA 0 D /MB 0 D}] D
-/IP {BV N get /N N 1 add D} D
-/II {/K E D IX K get 0 lt{/EC E D}if /TY E D
- TY 4 eq{/Y E D /X E D}if TY 3 eq{/AB E D}if
- /XW AX K get D /YW AY K get D /IS SG IT K get get D /XS XW IS mul D
- /YS YW IS mul D YS IC TY get exec /MA MA Fl not{3 add}if D} D
-/IM {II /ty TY D /xs XS D /ys YS D /ya YA D /yb YB D /ma MA D /mb MB D /k K D
- /ec EC D /BP f D /CI 0 D WB TL L1 xs add dup XO add MR add W gt
- {pop /ma ma Fl{3 add}if D NL /YA ma D /YB mb D /YS ys D /L1 xs D}
- {/L1 E D ma YA gt{/YA ma D}if mb YB gt{/YB mb D}if}ie /TB f D
- OU{CP E pop YS sub LE neg lt Fl not and PB not and{NP /YA ma D /YB mb D}if
- /BP f D ty ST cvs ( ) join IX k get 0 lt{(\() join ec join (\) ) join}if
- k ST cvs join ty 3 eq{AB ST cvs ( ) join E join}if
- ty 4 eq{X ST cvs ( ) join Y ST cvs join ( ) join E join}if C1 E join
- ( DI ) join FP 2 eq FP 1 eq AF and or{( FM ) join}if
- ( Il Cp ) apa /C1 E D /EN f D}if /HM t D /T f D} D
-/DI {II /Xc CP /Yc E D D /YN YW neg D /HM t D /CI 0 D /K2 IX K get D gsave
- TY 4 eq{OX X IS mul add OY FY add YS sub Y IS mul sub}
- {/FY YS D CP MB sub 2 copy /OY E D /OX E D}ie
- translate K2 0 ge{/DP AZ K2 get D /BV BM K2 get D XS YS scale /N 0 D XW YW DP
- [XW 0 0 YN 0 YW] {IP} FC K2 get 1 eq{image}{f 3 colorimage}ie}
- {EX}ie grestore XS 0 R /Ms t D} D
-/FM {gsave 0 Sg CP MB sub translate XS neg 0 M 0 YS RL XS 0 RL 0 YS neg RL
- XS neg 0 RL stroke grestore} D
-/NA {/AT E D /AL AL 1 add D AV AL AT put} D
-/OA {AL 0 gt{/AL AL 1 sub D /AT AV AL get D}if} D
-/D1 {/BR {CP E pop E BN Mb{CP E pop eq{0 YI R}if}{pop}ie} D
- /Sn {OU{C1 E ST cvs join ( Ld ) join /C1 E D}{pop}ie} D} D
-/D1 {/BR {BN} D /Sn {OU {C1 E ST cvs join ( Ld ) join /C1 E D} {pop} ie} D} D
-/TC {/TF t D /ML 0 D HN{SW pop dup ML gt{/ML E D}{pop}ie}forall NP /RM RM not D
- RC /OU Tc D Ep /PN 0 D Ms not TP and{Ip}if /W IW ML sub Ts sub D
- /A0 0 D TH{/BR {( ) join BT} D /Sn {pop} D /Au () D}if} D
-/TN {0 eq{E EA PF HF or not XR and{HN E get Xr}{pop}ie}
- {OU{Tn 0 ge{() BN}if /Tn E D}{pop}ie WB}ie} D
-/NT {OU LB not and Tn 0 ge and{PL 0 eq{Ms not{CS CF FS}if CP dup
- /y E YA sub D W 9 sub CS -1.8 mul XO L1 add 2 add{y M (.) show}for
- HN Tn get dup SW pop IW E sub y M show CP BB M}if /Tn -1 D}if} D
-/Ld {/DN E D HN DN Pn put [/View [/XYZ -4 Fl{PS}{CP YA add US E pop}ie null]
- /Dest DN ST cvs cvn /DEST pdfmark} D
-/C {ND 1 eq{1 sub}if TI mul /XO E D NL Nf not{pop()}if 0 3 -1 roll 1 A} D
-/OP {BP not{NP}if PN 2 mod 0 eq{/Ms t D NP}if}D
-/Ep {Xp PN 2 mod 0 eq and OU and{/Pn (-) D showpage /PM 1 D LA}if}D
-/Dg [73 86 88 76 67 68 77] D
-/Rd [0 [1 1 0][2 1 0][3 1 0][2 1 1][1 1 1][2 2 1][3 3 1][4 4 1][2 1 2]] D
-/Ns {/m E D /c E 32 mul D /j m 1000 idiv D /p j 12 add string D
- c 96 le m 0 gt and{c 32 le {/i 0 D /d 77 D /l 100 D /m m j 1000 mul sub D
- j -1 1 {pop p i d c add put /i i 1 add D}for
- 4 -2 0 {/j E D /n m l idiv D /m m n l mul sub D /d Dg j get D
- n 0 gt {/x Rd n get D x 0 get -1 1 {pop p i d c add put /i i 1 add D}for
- p i x 1 get sub Dg x 2 get j add get c add put}if /l l 10 idiv D
- }for p 0 i GI}
- {/i ST length 1 sub D m {1 sub dup 0 ge{dup 26 mod c add 1 add
- ST i 3 -1 roll put 26 idiv dup 0 eq{pop exit}if}if /i i 1 sub D}loop
- ST i ST length i sub GI}ie}
- {m p cvs}ie} D
-/US {matrix currentmatrix matrix defaultmatrix matrix invertmatrix
- matrix concatmatrix transform} D
-/GB {Gb{US}if}D
-/Tl {/Rn E D Xc CP pop ne{
- [/Rect [Xc 1 sub Yc cS 0.25 mul sub GB CP E 1 add E cS 0.85 mul add GB]
- /Subtype /Link /Border [0 0 Cf Lc and LX and AU or{0}{1}ie] Rn type
- /nametype eq {/Dest Rn}{/Action [/Subtype /URI /URI Rn] Cd}ie
- /ANN pdfmark}if} D
-/Il {/Rn E D [/Rect [Xc Yc GB Xc XS add Yc YS add GB] /Subtype /Link
- /Border [0 0 0] Rn type /nametype eq{/Dest Rn}
- {/Action [/Subtype /URI /URI Rn] Cd}ie /ANN pdfmark} D
-/XP {[{/Z Bz 2 div D Z 0 R Z Z RL Z neg Z RL Z neg Z neg RL Z Z neg RL
- Fi cH 1 eq and{fill}if} {Bz 0 RL 0 Bz RL Bz neg 0 RL 0 Bz neg RL
- Fi cH 1 eq and{fill}if} {0 -5 R Bz 0 RL 0 21 RL Bz neg 0 RL 0 -21 RL}]} D
-/MS {/Sm E D WB}D
-/O {BN()0 Sm BX} D
-/BX {/Bt E D Bt 2 lt{/Ch E D CS 0.8 mul}{11 mul}ie W XO sub MR sub
- 2 copy gt{E}if pop /HZ E D Bt 2 eq{Fi not{pop()}if ( )E join /Ft E D TT
- /PF t D /MW 1 D /Li 1 D /Fw Ft SW pop D Fw HZ gt{/HZ Fw 8 add D}if
- HZ ST cvs( )join}{WB Ch ST cvs( )join}ie L1 HZ add XO add MR add W gt{NL}if
- Bt 2 eq{Ft ES Fw neg HM{CS sub}if Pd}if Bt ST cvs join( Bx )join
- Bt 2 eq HM and{CS Pd}if C1 E join /C1 E D /L1 L1 HZ add D /T f D
- ( ) Pd /PF f D Bt 2 lt{YA CS .8 mul lt{/YA CS .8 mul D}if}
- {YB 5 lt{/YB 5 D}if YA 21 lt{/YA 21 D}if}ie /CI 0 D} D
-/Bx {dup 2 eq{E /Bz E D}{E /cH E D /Bz CS .8 mul D}ie
- OU {gsave 0 Sg XP E get exec stroke grestore}{pop}ie Bz 0 R /Ms t D}D
-/SD {FD 4 mul Dy add DZ NF newpath 0 0 M DX t charpath pathbbox
- 3 -1 roll sub /DY E D E dup /X1 E D sub WM mul WX DY mul add WM DG mul E div
- /DF E D /DR WX DF mul DY mul WM div 2 div D} d
-/Sd {gsave 0 IL Di mul neg translate IL IW atan Di 0 eq{neg}if rotate
- FD 4 mul Dy add DZ NF DR X1 sub DY 2 div neg M cD VC DX show grestore} d
-/Pt {/tp t D Tp{NP /Pn (TP) D 0 Tt neg R Th BN NP Ep ET RC ZF}if /tp f D} D
-/RC {/AI 0 D /LG 0 D /BC 0 D /UI 0 D /PF f D /Cc 0 D /cC 0 D /Dc 10 array D
- /NR [0 1 9{pop 0}for] D /La Ds D /AR 10 array D /TR 10 array D /AV 30 array D
- SI /AL -1 D /AT A0 D AT NA /OV 9 array D /Yo 0 D /Co 0 D /Io 0 D /Hy f D
- /Ph f D /CL -1 D Ct Sc}D
-/ZF {/FR [0 1 30{pop 0}for] D /SZ [0 1 30{pop 0}for] D /FO [0 1 30{pop 0}for] D
- /SL 0 D /CF 0 D /FN 0 D 0 Ts SF}D
-/QO [[(\234)(\233)(\253\240)(\232)(\273)(\253)][(')(`)(\253\240)(\231)(\273)(\253)]] D
-/QC [[(\234)(\234)(\240\273)(\233)(\253)(\273)][(')(')(\240\273)(`)(\253)(\273)]] D
-/Hf EF length 2 sub D
-/Hz EZ Hf get D
-/HS Ey Hf get D
-/Fz EZ Hf 1 add get D
-/Fs Ey Hf 1 add get D
-/LE IL D
-/Ps EZ 1 get D
-/Fp EF 1 get D
-/XO 0 D
-/YI 0 D
-/CI 0 D
-/FP 0 D
-/WW Ts 7 mul D
-/Mf 0 D
-/YA 0 D
-/YB 0 D
-/Cs Ts D
-/GS Ts D
-/F0 0 D
-/NS 0 D
-/NB 0 D
-/N 0 D
-/C0 [] D
-/C1 () D
-/Lo 0 D
-/L1 0 D
-/LM 0 D
-/PH 0 D
-/EC 0 D
-/Lh 0 D
-/LT 0 D
-/CH 1 string D
-/ST 16 string D
-/CA 9 array D
-/HC (\255) D
-/HM f D
-/PF f D
-/EN f D
-/TB f D
-/UF f D
-/sF f D
-/AE f D
-/AF f D
-/BP t D
-/CD f D
-/PA t D
-/GL f D
-/T t D
-/HF f D
-/AH f D
-/SA f D
-/PB f D
-/f1 f D
-/mF f D
-/OX 0 D
-/OY 0 D
-/FY 0 D
-/EO 0 D
-/FB 0 D
-/PL 0 D
-/Bw 0 D
-/PD -1 D
-/TP f D
-/tp f D
-/TH t D
-/Ty 4 D
-/Tn -1 D
-/Fl t D
-/LB t D
-/PM 1 D
-/Ms f D
-/Ba f D
-/Bb f D
-/Hl 3 D
-/hl 6 D
-/Hv 6 D
-/Hs f D
-/HI 0 D
-/hi 0 D
-/PO t D
-/TE f D
-/LF t D
-/BO 0 D
-/Sm 1 D
-/Bf 3 D
-/A1 0 D
-/A2 0 D
-/Ds 1 D
-/QL -1 D
-/Cb Db D
-/Ct Dt D
-/Cl Dl D
-[/Creator (html2ps version 1.0 beta7) /Author () /Keywords (xsd, xml, schema, c++, mapping, data, binding, tree, serialization, guide, manual, examples) /Subject ()
- /Title (C++/Tree Mapping User Manual) /DOCINFO pdfmark
-/ND 1 D
-/HN [(1) (1) (1) (1) (1) (1) (1) (2) (2) (2) (2) (3) (3) (4) (4) (5) (5) (5)
-(6) (6) (7) (7) (??) (10) (11) (12) (13) (14) (16) (19) (20) (21) (22) (24)
-(24) (25) (26) (27) (28) (29) (29) (30) (31) (32) (33) (37) (37) (37) (39)
-(41) (45) (48) (55) (55) (58) (59) (60) (62) (64) (65) (68) (74) (75) (80)
-(82) (85) (85) (86) (88) (89) (89) (90) (91) (91) (91) (92) (92) (93) (93)
-(94) (94) (94) (96) (97) (99) (99) (100) (100) (100) (101) (101) (102) (103)
-(103) (106) (107) (??) (1) (1) (1) (1) (2) (2) (2) (2) (3) (3) (4) (4) (5)
-(5) (5) (6) (6) (7) (7) (10) (11) (12) (13) (14) (16) (19) (20) (21) (22)
-(24) (24) (25) (26) (27) (28) (29) (29) (30) (31) (32) (33) (37) (37) (37)
-(39) (41) (45) (48) (55) (55) (58) (59) (60) (62) (64) (65) (68) (74) (75)
-(80) (82) (85) (85) (86) (88) (89) (89) (90) (91) (91) (91) (92) (92) (93)
-(93) (94) (94) (94) (96) (97) (99) (99) (100) (100) (100) (101) (101) (102)
-(103) (103) (106) (107)] D
-/h0 [()(Table of Contents)] D
-/h1 [(1\240\240)(Preface)] D
-/h2 [(1.1\240\240)(About This Document)] D
-/h3 [(1.2\240\240)(More Information)] D
-/h4 [(2\240\240)(1 Introduction)] D
-/h5 [(3\240\240)(2 C++/Tree Mapping)] D
-/h6 [(3.1\240\240)(2.1 Preliminary Information)] D
-/h7 [(3.1.1\240\240)(2.1.1 C++ Standard)] D
-/h8 [(3.1.2\240\240)(2.1.2 Identifiers)] D
-/h9 [(3.1.3\240\240)(2.1.3 Character Type and Encoding)] D
-/h10 [(3.1.4\240\240)(2.1.4 XML Schema Namespace)] D
-/h11 [(3.1.5\240\240)(2.1.5 Anonymous Types)] D
-/h12 [(3.2\240\240)(2.2 Error Handling)] D
-/h13 [(3.2.1\240\240)(2.2.1 xml_schema::duplicate_id)] D
-/h14 [(3.3\240\240)(2.3 Mapping for import and include)] D
-/h15 [(3.3.1\240\240)(2.3.1 Import)] D
-/h16 [(3.3.2\240\240)(2.3.2 Inclusion with Target Namespace)] D
-/h17 [(3.3.3\240\240)(2.3.3 Inclusion without Target Namespace)] D
-/h18 [(3.4\240\240)(2.4 Mapping for Namespaces)] D
-/h19 [(3.5\240\240)(2.5 Mapping for Built-in Data Types)] D
-/h20 [(3.5.1\240\240)(2.5.1 Inheritance from Built-in Data Types)] D
-/h21 [(3.5.2\240\240)(2.5.2 Mapping for anyType)] D
-/h22 [(3.5.3\240\240)(2.5.3 Mapping for anySimpleType)] D
-/h23 [(3.5.4\240\240)(2.5.4 Mapping for QName)] D
-/h24 [(3.5.5\240\240)(2.5.5 Mapping for IDREF)] D
-/h25 [(3.5.6\240\240)(2.5.6 Mapping for base64Binary and hexBinary)] D
-/h26 [(3.6\240\240)(2.5.7 Time Zone Representation)] D
-/h27 [(3.7\240\240)(2.5.8 Mapping for date)] D
-/h28 [(3.8\240\240)(2.5.9 Mapping for dateTime)] D
-/h29 [(3.9\240\240)(2.5.10 Mapping for duration)] D
-/h30 [(3.10\240\240)(2.5.11 Mapping for gDay)] D
-/h31 [(3.11\240\240)(2.5.12 Mapping for gMonth)] D
-/h32 [(3.12\240\240)(2.5.13 Mapping for gMonthDay)] D
-/h33 [(3.13\240\240)(2.5.14 Mapping for gYear)] D
-/h34 [(3.14\240\240)(2.5.15 Mapping for gYearMonth)] D
-/h35 [(3.15\240\240)(2.5.16 Mapping for time)] D
-/h36 [(3.16\240\240)(2.6 Mapping for Simple Types)] D
-/h37 [(3.16.1\240\240)(2.6.1 Mapping for Derivation by Restriction)] D
-/h38 [(3.16.2\240\240)(2.6.2 Mapping for Enumerations)] D
-/h39 [(3.16.3\240\240)(2.6.3 Mapping for Derivation by List)] D
-/h40 [(3.16.4\240\240)(2.6.4 Mapping for Derivation by Union)] D
-/h41 [(3.17\240\240)(2.7 Mapping for Complex Types)] D
-/h42 [(3.17.1\240\240)(2.7.1 Mapping for Derivation by Extension)] D
-/h43 [(3.17.2\240\240)(2.7.2 Mapping for Derivation by Restriction)] D
-/h44 [(3.18\240\240)(2.8 Mapping for Local Elements and Attributes)] D
-/h45 [(3.18.1\240\240)(2.8.1 Mapping for Members with the One Cardinality Class)] D
-/h46 [(3.18.2\240\240)(2.8.2 Mapping for Members with the Optional Cardinality Class)] D
-/h47 [(3.18.3\240\240)(2.8.3 Mapping for Members with the Sequence Cardinality Class)] D
-/h48 [(3.18.4\240\240)(2.8.4 Element Order)] D
-/h49 [(3.19\240\240)(2.9 Mapping for Global Elements)] D
-/h50 [(3.19.1\240\240)(2.9.1 Element Types)] D
-/h51 [(3.19.2\240\240)(2.9.2 Element Map)] D
-/h52 [(3.20\240\240)(2.10 Mapping for Global Attributes)] D
-/h53 [(3.21\240\240)(2.11 Mapping for xsi:type and Substitution Groups)] D
-/h54 [(3.22\240\240)(2.12 Mapping for any and anyAttribute)] D
-/h55 [(3.22.1\240\240)(2.12.1 Mapping for any with the One Cardinality Class)] D
-/h56 [(3.22.2\240\240)(2.12.2 Mapping for any with the Optional Cardinality Class)] D
-/h57 [(3.22.3\240\240)(2.12.3 Mapping for any with the Sequence Cardinality Class)] D
-/h58 [(3.22.4\240\240)(2.12.4 Element Wildcard Order)] D
-/h59 [(3.22.5\240\240)(2.12.5 Mapping for anyAttribute)] D
-/h60 [(3.23\240\240)(2.13 Mapping for Mixed Content Models)] D
-/h61 [(4\240\240)(3 Parsing)] D
-/h62 [(4.1\240\240)(3.1 Initializing the Xerces-C++ Runtime)] D
-/h63 [(4.2\240\240)(3.2 Flags and Properties)] D
-/h64 [(4.3\240\240)(3.3 Error Handling)] D
-/h65 [(4.3.1\240\240)(3.3.1 xml_schema::parsing)] D
-/h66 [(4.3.2\240\240)(3.3.2 xml_schema::expected_element)] D
-/h67 [(4.3.3\240\240)(3.3.3 xml_schema::unexpected_element)] D
-/h68 [(4.3.4\240\240)(3.3.4 xml_schema::expected_attribute)] D
-/h69 [(4.3.5\240\240)(3.3.5 xml_schema::unexpected_enumerator)] D
-/h70 [(4.3.6\240\240)(3.3.6 xml_schema::expected_text_content)] D
-/h71 [(4.3.7\240\240)(3.3.7 xml_schema::no_type_info)] D
-/h72 [(4.3.8\240\240)(3.3.8 xml_schema::not_derived)] D
-/h73 [(4.3.9\240\240)(3.3.9 xml_schema::no_prefix_mapping)] D
-/h74 [(4.4\240\240)(3.4 Reading from a Local File or URI)] D
-/h75 [(4.5\240\240)(3.5 Reading from std::istream)] D
-/h76 [(4.6\240\240)(3.6 Reading from xercesc::InputSource)] D
-/h77 [(4.7\240\240)(3.7 Reading from DOM)] D
-/h78 [(5\240\240)(4 Serialization)] D
-/h79 [(5.1\240\240)(4.1 Initializing the Xerces-C++ Runtime)] D
-/h80 [(5.2\240\240)(4.2 Namespace Infomap and Character Encoding)] D
-/h81 [(5.3\240\240)(4.3 Flags)] D
-/h82 [(5.4\240\240)(4.4 Error Handling)] D
-/h83 [(5.4.1\240\240)(4.4.1 xml_schema::serialization)] D
-/h84 [(5.4.2\240\240)(4.4.2 xml_schema::unexpected_element)] D
-/h85 [(5.4.3\240\240)(4.4.3 xml_schema::no_type_info)] D
-/h86 [(5.5\240\240)(4.5 Serializing to std::ostream)] D
-/h87 [(5.6\240\240)(4.6 Serializing to xercesc::XMLFormatTarget)] D
-/h88 [(5.7\240\240)(4.7 Serializing to DOM)] D
-/h89 [(6\240\240)(5 Additional Functionality)] D
-/h90 [(6.1\240\240)(5.1 DOM Association)] D
-/h91 [(6.2\240\240)(5.2 Binary Serialization)] D
-/h92 [(7\240\240)(Appendix A \236 Default and Fixed Values)] D
-/Hr [97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
-115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
-133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
-151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
-169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
-187 188]D
-/HV [1 2 2 1 1 2 3 3 3 3 3 2 3 2 3 3 3 2 2 3 3 3 3 3 3 2 2 2 2 2 2 2 2
-2 2 2 3 3 3 3 2 3 3 2 3 3 3 3 2 3 3 2 2 2 3 3 3 3 3 2 1 2 2 2 3 3 3 3 3
-3 3 3 3 2 2 2 2 1 2 2 2 2 3 3 3 2 2 2 1 2 2 1]D
-/Cn [2 0 0 0 23 5 0 0 0 0 0 1 0 3 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 4 0 0 0 0 2 0 0 4 0 0 0 0 2 0 0 0 0 5 0 0 0 0 0 0 7 0 0 9 0 0 0 0 0
-0 0 0 0 0 0 0 0 7 0 0 0 3 0 0 0 0 0 0 2 0 0 0]D
-Hr length 0 gt{[/PageMode /UseOutlines /DOCVIEW pdfmark}if
-/Hn 1 D
-0 1 Hr length 1 sub{
- /Bn E D [Cn Bn get dup 0 gt{/Count E HV Bn get Bl ge{neg}if}{pop}ie
- /Dest Hr Bn get dup abs ST cvs cvn E 0 ge{(h)Hn ST cvs join cvx exec
- dup 1 get E Nf{0 get E join}{pop}ie /Hn Hn 1 add D}{()}ie
- /Title E dup length 255 gt{0 255 getinterval}if /OUT pdfmark}for
-ZF /FN Fp D Ps 0 FS /WC Wf{( )}{<A1A1>}ie SW pop D
-ET RC ZF
-/Df f D
-/R0 (http://www.codesynthesis.com/licenses/fdl-1.2.txt) D
-/R1 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml) D
-/R2 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf) D
-/R3 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps) D
-/R1 (http://www.codesynthesis.com/products/xsd) D
-/R2 (http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml) D
-/R3 (http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf) D
-/R4 (http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps) D
-/R5 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/) D
-/R6 (http://wiki.codesynthesis.com/Tree/Customization_guide) D
-/R7 (http://wiki.codesynthesis.com/Tree/FAQ) D
-/R8 (http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml) D
-/R9 (http://www.codesynthesis.com/mailman/listinfo/xsd-users) D
-/R10 (http://www.codesynthesis.com/pipermail/xsd-users/) D
-/R11 (http://en.wikipedia.org/wiki/Character_code) D
-/TS {
- tables E get /table E D
- table aload pop /rdesc E D /cdesc E D /tdesc E D
- tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
- /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
- /flow E D /clear E D /tclass E D pop pop
- /w W D /eps 0.1 D /OU f D /PL 1 D
- /FN EF 21 get D EZ 21 get Ey 21 get FS
- 0 1 1{
- /pass E D
- 0 1 nrow{
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D pop pop pop
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- pass 0 eq cspan 1 eq and pass 1 eq cspan 1 gt and or{
- /W 1e5 D /LL W D /PH 1 D
- ctype 1 eq{() BD}if
- RC align NA
- AT 4 eq{/CD t D /DC dp D /LN 0 D /M1 0 D /M2 0 D}{/CD f D}ie
- 0 0 M /LM 0 D proc exec BN
- AT 4 eq{
- LN array astore cell 15 3 -1 roll put
- cdesc icol get dup dup 5 get M1 lt{5 M1 put}{5 get /M1 E D}ie
- dup 6 get M2 lt{6 M2 put}{6 get /M2 E D}ie
- /LM M1 M2 add D
- }if
- /CD f D
- ang 0 ne{/LM CP E pop neg D}if
- /thiswid LM left add right add eps add D
- /oldmin 0 D /oldmax 0 D
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 2 get /oldmax E oldmax add D
- 1 get /oldmin E oldmin add D
- }for
- thiswid oldmax ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 2 E 2 get oldmax 0 eq
- {pop thiswid cspan div}{thiswid mul oldmax div}ie
- put
- }for
- }if
- nowrap 1 eq{
- thiswid oldmin ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 1 E 1 get oldmin 0 eq
- {pop thiswid cspan div}{thiswid mul oldmin div}ie
- put
- }for
- }if
- }{
- /W 0 D /LL W D /PH 2 D
- ctype 1 eq{() ES () BD}if
- 0 0 M /LM 0 D RC proc exec BN
- /thiswid LM left add right add eps add D
- thiswid oldmin ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 1 E 1 get oldmin 0 eq
- {pop thiswid cspan div}{thiswid mul oldmin div}ie
- put
- }for
- }if
- }ie
- ctype 1 eq{() ES}if
- }if
- }if
- }for
- }for
- }for
- /tmin 0 D /tmax 0 D
- 0 1 ncol{
- cdesc E get dup 1 get E 2 get 2 copy gt{pop dup}if
- tmax add /tmax E D tmin add /tmin E D
- }for
- twid 0 lt{twid neg IW gt{IW neg}{twid}ie /twid E D}if
- tdesc 0 twid neg tmin 2 copy lt{E}if pop put
- tdesc 1 twid neg tmax 2 copy lt{E}if pop put
- /W w D /LL W D /OU t D /PH 0 D /PL 0 D
-} D
-/PT {
- /PL PL 1 add D
- tables E get /table E D Tm 21 get Ts mul BE
- PL 2 ge{save}if
- /SL SL 1 add D /FN EF 21 get D EZ 21 get Ey 21 get FS
- table aload pop /rdesc E D /cdesc E D /tdesc E D
- tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
- /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
- /flow E D /clear E D /tclass E D /tmax E D /tmin E D
- /w W D /xo XO D /mr MR D /ll LL D /lg LG D /ai AI D /bc BC D /nr NR D /ar AR D
- /tr TR D /ui UI D /ph PH D /a0 A0 D /pf PF D /at AT D /av AV D /al AL D
- /Le LE D /la La D
- talign 0 lt{/talign AL 0 gt{AV AL get}{A0 2 le{A0}{0}ie}ie D}if
- ph 1 eq ph 2 eq or{
- NL ph 1 eq{tmax}{tmin}ie dup XO add LM gt{/LM E XO add D}{pop}ie LM E
- }{
- /PH 3 D /LE 1e5 D RC %ZF
- border 0 gt{/border 1 D}if
- /twidth 0 D /avail W xo sub D
- twid 0 eq{0 1 ncol{cdesc E get dup 2 get E 3 get dup 0 gt{div neg dup twid lt
- {/twid E D}{pop}ie}{pop pop}ie}for}if
- /twid twid dup 0 lt{neg avail 2 copy gt{E}if pop}{avail mul}ie D
- /OK t D 0 1 ncol{cdesc E get dup 1 get E 3 get twid mul gt{/OK f D}if}for
- 0 1 ncol{
- cdesc E get dup 1 get /colmin E D dup 3 get /cwid E twid mul D dup
- tmax avail le{2 get}if
- tmin avail le tmax avail gt and{
- dup 2 get E 1 get dup 3 1 roll sub avail tmin sub mul tmax tmin sub div add
- }if
- tmin avail gt{1 get}if
- 0 E colmin cwid lt OK and{pop cwid}if dup /twidth E twidth add D put
- }for
- /OU f D CP
- tmin twid le{
- 0 1 ncol{cdesc E get dup 0 get twidth div twid mul 0 E put}for
- /twidth twid D
- }if
- CP printcap CP E pop sub /caphig E D pop
- 0 1 1{
- /pass E D
- 0 1 nrow{
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D pop pop pop
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /W 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /W E W add D}for
- pass 0 eq rspan 1 eq and pass 1 eq rspan 1 gt and or{
- ctype 1 eq{() BD}if
- /W W left sub right sub D /XO 0 D /EO 0 D SI
- /A0 align D RC align NA
- AT 4 eq{
- /DC dp D /DO 0 D /ID 1 D
- 0 1 DV length 1 sub{DV E get dup DO gt{/DO E D}{pop}ie}for
- /Lo DO DV 0 get sub D /L1 Lo D
- }if
- 0 0 M /BP t D /Fl t D /MF 0 D /FB 0 D
- proc exec T not{/CI 0 D}if BN 0 FB neg R MF 0 eq{/MF CS D}if
- CP /thishig E neg bot add top add CI add D pop
- ang 0 ne{/thishig LM bot add top add D}if
- cell 16 MF put cell 17 Ya put cell 18 thishig put
- valign 4 eq{
- /below thishig Ya sub D
- rdesc irow get dup dup 4 get Ya lt
- {4 Ya put}{4 get /Ya E D}ie
- dup 5 get below lt{5 below put}{5 get /below E D}ie
- /thishig Ya below add D
- }if
- ctype 1 eq{()ES}if
- /oldhig 0 D
- 0 1 rspan 1 sub{
- irow add rdesc E get 0 get /oldhig E oldhig add D
- }for
- thishig oldhig ge{
- 0 1 rspan 1 sub{
- irow add rdesc E get dup 0 E 0 get oldhig 0 eq
- {pop thishig rspan div}{thishig mul oldhig div}ie
- put
- }for
- }if
- }if
- }if
- }for
- }for
- }for M RC %ZF
- /thight 0 D /racc 0 D /maxh 0 D /brk 0 D /rbeg nhead nfoot add D
- 0 1 nrow{
- rdesc E get dup 0 get dup /thight E thight add D
- brk 0 eq{/racc E D}{/racc E racc add D}ie
- racc maxh gt{/maxh racc D}if 2 get /brk E D
- }for
- ph 3 ge{thight caphig add E}if
- ph 0 eq ph 4 eq or{
- /PH 4 D /LE Le D /OU Ou D /yoff 0 D /headsz 0 D
- 0 1 nhead 1 sub{rdesc E get 0 get headsz add /headsz E D}for
- /footsz 0 D
- 0 1 nfoot 1 sub{rdesc E nhead add get 0 get footsz add /footsz E D}for
- /ahig LE BO add MI add D /maxh maxh headsz add footsz add D
- /thight thight headsz add footsz add D
- tmin avail gt maxh ahig gt or
- {/Sf avail tmin div dup ahig maxh div gt{pop ahig maxh div}if D /SA t D}
- {/Sf 1 D}ie
- tclass 1 eq thight LE 15 sub gt and
- {/SA t D LE 15 sub thight div dup Sf lt{/Sf E D}{pop}ie}if
- SA{Sf Sf scale /ll ll Sf div D /xo xo Sf div D /LE LE Sf div D
- /mr mr Sf div D /BO BO Sf div D /ahig ahig Sf div D}if
- nhead nfoot add getwid
- LE CP E pop add capalg 0 eq{caphig sub}if
- bT{f}{dup thight lt thight ahig lt and}ie
- E headsz sub footsz sub rwid lt or{NP}if
- capalg 0 eq{printcap -8 SP}if
- CP /ycur E D pop
- printhead
- rbeg 1 nrow{/row E D row
- getwid
- ycur yoff add rwid sub footsz sub LE add 0 lt
- {nfoot 0 gt{printfoot}if Tf NP /rbeg irow1 D
- Ba{MI /MI MI SA{Sf div}if D MI SP /MI E D}if
- CP /ycur E D pop /yoff 0 D printhead}if
- irow1 printrow
- }for
- printfoot /row row 1 add D Tf
- 0 ycur yoff add M
- capalg 1 eq{/EO 0 D SI -3 SP printcap}if
- Sf 1 lt{1 Sf div dup scale /ll ll Sf mul D /xo xo Sf mul D /LE LE Sf mul D
- /mr mr Sf mul D /BO BO Sf mul D /SA f D}if
- /EO 0 D
- }if
- }ie
- /W w D /XO xo D /MR mr D /LL ll D /LG lg D /AI ai D /BC bc D /NR nr D /AR ar D
- /TR tr D /UI ui D /PH ph D /A0 a0 D /PF pf D /AT at D /AV av D /AL al D
- /La la D
- /SL SL 1 sub NN D /CF 0 D /FN 0 D SZ SL get FR SL get FS Wf not{()F2}if
- PL 2 ge{Ms E restore Ms or /Ms E D PH 1 eq PH 2 eq or
- {/LM E D}if PH 3 ge{/CI 0 D NL 0 E neg R}if
- }if
- /PL PL 1 sub D /CI 0 D /BP f D /PO f D () Bm 21 get Ts mul BE BL %CF CS SF
-} D
-/printcap{
- capalg 0 ge{
- SA{/W w Sf div D}
- {talign 1 eq{/XO xo ll twidth sub 2 div add D}if
- talign 2 eq{/XO xo ll twidth sub add D}if
- /W XO twidth add D
- }ie /XO xo D /LL W XO sub MR sub D
- /PA f D /Fl capalg 0 eq D
- 1 NA BL caption exec BN OA /PA t D
- }if
-} D
-/getwid{
- /irow1 E D
- /irow2 irow1 D
- /rwid 0 D
- {rdesc irow2 get dup 0 get rwid add /rwid E D 2 get 0 eq
- {exit}{/irow2 irow2 1 add D}ie
- }loop
-} D
-/printrow{
- /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
- /xleft xoff xo add D
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D /cvsize E D /above E D /fontsz E D
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /width 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
- /rhight rdesc irow get 0 get D
- /hight rhight D
- 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
- /W xo xoff add width add right sub D
- ang 0 ne{/W xo xoff add hight add right sub D}if
- /EO xo xoff add left add D SI
- Cf{
- gsave CB VC xo xoff add ycur yoff add M
- 0 hight neg RL width 0 RL 0 hight RL width neg 0 RL fill
- grestore
- }if
- ctype 1 eq{() BD}if
- /A0 align D RC
- AT 4 eq{
- /DC dp D /ID 1 D /DO cdesc icol get 5 get D /Lo DO DV 0 get sub D /L1 Lo D
- }if
- ang 0 ne{
- gsave ang 90 eq
- {xoff ycur add hight cvsize sub 2 div sub ycur hight sub xoff sub}
- {xoff ycur sub width add hight cvsize sub 2 div add ycur xoff add}ie
- translate ang rotate
- }if
- valign 3 le{0 ycur yoff add top sub
- hight cvsize sub valign 1 sub mul 2 div sub M}
- {0 ycur yoff add top sub above add rdesc irow get 4 get sub M}ie
- /PA f D /BP t D /Fl t D
- BL proc exec BN
- ang 0 ne{grestore}if
- /PA t D
- ctype 1 eq{() ES}if
- }if
- /xoff xoff cdesc icol get 0 get add D
- }for
- /yoff yoff rhight sub D
-} D
-/printhead {0 1 nhead 1 sub{printrow}for} D
-/printfoot {nhead 1 nhead nfoot add 1 sub{printrow}for} D
-/Tf {
- OU{rules 2 ge{/yoff 0 D
- gsave 0 Sg
- [0 1 nhead 1 sub{}for rbeg 1 row 1 sub{}for nhead 1 nhead nfoot add 1 sub{}for]{
- /irow E D
- /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- /rspan cell 6 get D
- /cspan cell 5 get D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /width 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
- /rhight rdesc irow get 0 get D
- /hight rhight D
- 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
- xo xoff add width add ycur yoff add M
- 0 hight neg icol cspan add 1 sub ncol lt
- {cdesc icol 1 add get 4 get dup rules 3 le{1 eq}{pop t}ie
- {1 eq{0.8}{0.3}ie
- LW RL CP stroke M}{pop R}ie}{R}ie
- irow nhead nfoot add 1 sub ne nfoot 0 eq or
- {irow rspan add 1 sub nrow lt
- {rdesc irow rspan add get 3 get}{nfoot 0 eq{0}{1}ie}ie
- dup rules 2 mod 0 eq{1 eq}{pop t}ie
- {1 eq irow rspan add nhead eq or irow rspan add row eq nfoot 0 gt and or
- {0.8}{0.3}ie LW width neg 0 RL CP stroke M}{pop}ie}if
- }if
- /xoff xoff cdesc icol get 0 get add D
- }for
- /yoff yoff rhight sub D
- }forall
- grestore
- /Ms t D
- }if
- frame 1 gt{
- gsave
- 1 LW 0 Sg
- xleft ycur M CP BB
- 0 yoff frame 5 eq frame 7 ge or{RL}{R}ie
- twidth 0 frame 3 eq frame 4 eq or frame 8 ge or{RL}{R}ie CP BB
- 0 yoff neg frame 6 ge{RL}{R}ie
- twidth neg 0 frame 2 eq frame 4 eq or frame 8 ge or{RL}{R}ie
- closepath stroke
- grestore
- /Ms t D
- }if
- }if
-} D
-/tables [[[0 0 0 0 0 -1 0 0 1 58 2 0 0 9 5 {()} -1]
- [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
- [[0 0 0 0 0 0 [[{()1 Sl()WB(XML Schema type)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(Alias in the )SM(xml_schema)ES( names)HY(pace)YH()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(C++ type
- )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(anyType and anySim)HY(ple)HY(Type)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anyType)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(type)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 24 1 A(Section 2.5.2, "Mapping for )SM(anyType)ES(")24 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anySim)HY(ple)HY(Type)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(simple_type)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 25 1 A(Section 2.5.3, "Mapping for )SM(anySim)HY(ple)HY(Type)YH()ES(")25 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(fixed-length inte)HY(gral)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(signed\240char)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Byte)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240char)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(short_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(short)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Short)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240short)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(int_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(int)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsignedInt)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240int)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Long)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(arbi)HY(trary)YH(-length inte)HY(gral)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nonPos)HY(i)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(non_posi)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nonNeg)HY(a)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(non_nega)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(posi)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(posi)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nega)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nega)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(boolean types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(bool)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(fixed-preci)HY(sion)YH( float)HY(ing)YH(-point types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(float)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(float_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(float)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(double)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(arbi)HY(trary)YH(-preci)HY(sion)YH( float)HY(ing)YH(-point types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(string types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(std::basic_string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(normal)HY(ized)HY(String)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(normal)HY(ized)YH(_string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type\240derived\240from\240)SM(normal)HY(ized)YH(_string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(Name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(token)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NMTOKEN)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nmtoken)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(token)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NMTO)HY(KENS)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nmto)HY(kens)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(sequence<nmtoken>)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NCName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(ncname)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(name)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(token)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(qual)HY(i)HY(fied)YH( name
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(QName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(qname)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 26 1 A(Section 2.5.4, "Mapping for )SM(QName)ES(")26 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(ID/IDREF types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ID)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(id)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(ncname)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(IDREF)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(idref)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 27 1 A(Section 2.5.5, "Mapping for )SM(IDREF)ES(")27 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(IDREFS)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(idrefs)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(sequence<idref>)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(URI types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anyURI)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(uri)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(std::basic_string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(binary types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 1 0 0 0 [[{()1 Sl()WB()SM(base64Binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(base64_binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 28 1 A(Section 2.5.6, "Mapping for
- )SM(base64Binary)ES( and )SM(hexBi)HY(nary)YH()ES(")28 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 2 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(hexBi)HY(nary)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(hex_binary)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(date/time types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 30 1 A(Section 2.5.8, "Mapping for
- )SM(date)ES(")30 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(date)HY(Time)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(date_time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 31 1 A(Section 2.5.9, "Mapping for
- )SM(date)HY(Time)YH()ES(")31 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 32 1 A(Section 2.5.10, "Mapping for
- )SM(dura)HY(tion)YH()ES(")32 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gDay)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gday)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 33 1 A(Section 2.5.11, "Mapping for
- )SM(gDay)ES(")33 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gMonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gmonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 34 1 A(Section 2.5.12, "Mapping for
- )SM(gMonth)ES(")34 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gMon)HY(th)HY(Day)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gmonth_day)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 35 1 A(Section 2.5.13, "Mapping for
- )SM(gMon)HY(th)HY(Day)YH()ES(")35 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gYear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gyear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 36 1 A(Section 2.5.14, "Mapping for
- )SM(gYear)ES(")36 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gYear)HY(Month)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gyear_month)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 37 1 A(Section 2.5.15, "Mapping for
- )SM(gYear)HY(Month)YH()ES(")37 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 38 1 A(Section 2.5.16, "Mapping for
- )SM(time)ES(")38 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(entity types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ENTITY)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(entity)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(name)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ENTI)HY(TIES)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(enti)HY(ties)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(sequence<entity>)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-]]
-[[0 0 0 0 0 -1 0 0 1 8 5 0 0 9 5 {()} -1]
- [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
- [[0 0 0 0 0 0 [[{()1 Sl()WB()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(default)} 0 0 1 0 2 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-[{()1 Sl()WB(fixed
- )} 0 0 1 0 2 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 1 0 0 0 [[{()1 Sl()WB(element)} 0 0 1 0 1 4 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(not present)} 0 0 1 0 1 2 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(required)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(required
- )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 1 0 0 0 [0
-0
-[{()1 Sl()WB(not present)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(invalid instance)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(not present)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(invalid instance
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 1 0 0 0 [0
-[{()1 Sl()WB(empty)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(default value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-[{()1 Sl()WB(fixed value is used
- )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 0 0 0 0 [0
-[{()1 Sl()WB(value)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-[{()1 Sl()WB(value is used provided it's the same as fixed
- )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 1 0 0 0 [[{()1 Sl()WB(attribute)} 0 0 1 0 1 4 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(not present)} 0 0 1 0 1 2 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(required)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(required
- )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 1 0 0 0 [0
-0
-[{()1 Sl()WB(default value is used)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(invalid schema)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(fixed value is used)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(invalid instance
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 1 0 0 0 [0
-[{()1 Sl()WB(empty)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(empty value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-[{()1 Sl()WB(empty value is used provided it's the same as fixed
- )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 0 0 0 0 [0
-[{()1 Sl()WB(value)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-[{()1 Sl()WB(value is used provided it's the same as fixed
- )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-]]
-] D
-0 1 1{TS}for RC ZF
-/Ba f D /BO 0 D Bs
-/UR (/home/boris/work/xsd/xsd/doc/cxx/tree/manual/index.xhtml) D
-/Ti (C++/Tree Mapping User Manual) D
-/Au () D
-/Df f D
-/ME [(4.0.0)] D
-Pt
-/BO 0 D TC /Ba f D Bs /AU f D /UR () D RC ZF
- tH WB
-ND 1 gt{Ts 3 mul Np 0()0 C()BD(C++/Tree Mapping User Manual)ES()0 1 TN()EA()BN}if
-1 NH le{97(1\240\240)1 C(Preface)WB 3 Sn()97 1 TN()EA()BN}if
-2 NH le{98(1.1\240\240)2 C(About)WB 4 Sn( This Docu)HY(ment)YH()98 1 TN()EA()BN}if
-2 NH le{99(1.2\240\240)2 C(More)WB 5 Sn( Infor)HY(ma)HY(tion)YH()99 1 TN()EA()BN}if
-1 NH le{100(2\240\240)1 C(1)WB 6 Sn( Intro)HY(duc)HY(tion)YH()100 1 TN()EA()BN}if
-1 NH le{101(3\240\240)1 C(2)WB 7 Sn( C++/Tree Mapping)101 1 TN()EA()BN}if
-2 NH le{102(3.1\240\240)2 C(2.1)WB 8 Sn( Prelim)HY(i)HY(nary)YH( Infor)HY(ma)HY(tion)YH()102 1 TN()EA()BN}if
-3 NH le{103(3.1.1\240\240)3 C(2.1.1)WB 9 Sn( C++ Stan)HY(dard)YH()103 1 TN()EA()BN}if
-3 NH le{104(3.1.2\240\240)3 C(2.1.2)WB 10 Sn( Iden)HY(ti)HY(fiers)YH()104 1 TN()EA()BN}if
-3 NH le{105(3.1.3\240\240)3 C(2.1.3)WB 11 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()105 1 TN()EA()BN}if
-3 NH le{106(3.1.4\240\240)3 C(2.1.4)WB 12 Sn( XML Schema Names)HY(pace)YH()106 1 TN()EA()BN}if
-3 NH le{107(3.1.5\240\240)3 C(2.1.5)WB 13 Sn( Anony)HY(mous)YH( Types)107 1 TN()EA()BN}if
-2 NH le{108(3.2\240\240)2 C(2.2)WB 14 Sn( Error Handling)108 1 TN()EA()BN}if
-3 NH le{109(3.2.1\240\240)3 C(2.2.1)WB 15 Sn( )SM(xml_schema::dupli)HY(cate)YH(_id)ES()109 1 TN()EA()BN}if
-2 NH le{110(3.3\240\240)2 C(2.3)WB 16 Sn( Mapping for )SM(import)ES( and )SM(include)ES()110 1 TN()EA()BN}if
-3 NH le{111(3.3.1\240\240)3 C(2.3.1)WB 17 Sn( Import)111 1 TN()EA()BN}if
-3 NH le{112(3.3.2\240\240)3 C(2.3.2)WB 18 Sn( Inclu)HY(sion)YH( with Target Names)HY(pace)YH()112 1 TN()EA()BN}if
-3 NH le{113(3.3.3\240\240)3 C(2.3.3)WB 19 Sn( Inclu)HY(sion)YH( without Target Names)HY(pace)YH()113 1 TN()EA()BN}if
-2 NH le{114(3.4\240\240)2 C(2.4)WB 20 Sn( Mapping for Names)HY(paces)YH()114 1 TN()EA()BN}if
-2 NH le{115(3.5\240\240)2 C(2.5)WB 21 Sn( Mapping for Built-in Data Types)115 1 TN()EA()BN}if
-3 NH le{116(3.5.1\240\240)3 C(2.5.1)WB 23 Sn( Inher)HY(i)HY(tance)YH( from Built-in Data Types)116 1 TN()EA()BN}if
-3 NH le{117(3.5.2\240\240)3 C(2.5.2)WB 24 Sn( Mapping for )SM(anyType)ES()117 1 TN()EA()BN}if
-3 NH le{118(3.5.3\240\240)3 C(2.5.3)WB 25 Sn( Mapping for )SM(anySim)HY(ple)HY(Type)YH()ES()118 1 TN()EA()BN}if
-3 NH le{119(3.5.4\240\240)3 C(2.5.4)WB 26 Sn( Mapping for )SM(QName)ES()119 1 TN()EA()BN}if
-3 NH le{120(3.5.5\240\240)3 C(2.5.5)WB 27 Sn( Mapping for )SM(IDREF)ES()120 1 TN()EA()BN}if
-3 NH le{121(3.5.6\240\240)3 C(2.5.6)WB 28 Sn( Mapping for )SM(base64Binary)ES( and
- )SM(hexBi)HY(nary)YH()ES()121 1 TN()EA()BN}if
-2 NH le{122(3.6\240\240)2 C(2.5.7)WB 29 Sn( Time Zone Repre)HY(sen)HY(ta)HY(tion)YH()122 1 TN()EA()BN}if
-2 NH le{123(3.7\240\240)2 C(2.5.8)WB 30 Sn( Mapping for )SM(date)ES()123 1 TN()EA()BN}if
-2 NH le{124(3.8\240\240)2 C(2.5.9)WB 31 Sn( Mapping for )SM(date)HY(Time)YH()ES()124 1 TN()EA()BN}if
-2 NH le{125(3.9\240\240)2 C(2.5.10)WB 32 Sn( Mapping for )SM(dura)HY(tion)YH()ES()125 1 TN()EA()BN}if
-2 NH le{126(3.10\240\240)2 C(2.5.11)WB 33 Sn( Mapping for )SM(gDay)ES()126 1 TN()EA()BN}if
-2 NH le{127(3.11\240\240)2 C(2.5.12)WB 34 Sn( Mapping for )SM(gMonth)ES()127 1 TN()EA()BN}if
-2 NH le{128(3.12\240\240)2 C(2.5.13)WB 35 Sn( Mapping for )SM(gMon)HY(th)HY(Day)YH()ES()128 1 TN()EA()BN}if
-2 NH le{129(3.13\240\240)2 C(2.5.14)WB 36 Sn( Mapping for )SM(gYear)ES()129 1 TN()EA()BN}if
-2 NH le{130(3.14\240\240)2 C(2.5.15)WB 37 Sn( Mapping for )SM(gYear)HY(Month)YH()ES()130 1 TN()EA()BN}if
-2 NH le{131(3.15\240\240)2 C(2.5.16)WB 38 Sn( Mapping for )SM(time)ES()131 1 TN()EA()BN}if
-2 NH le{132(3.16\240\240)2 C(2.6)WB 39 Sn( Mapping for Simple Types)132 1 TN()EA()BN}if
-3 NH le{133(3.16.1\240\240)3 C(2.6.1)WB 40 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()133 1 TN()EA()BN}if
-3 NH le{134(3.16.2\240\240)3 C(2.6.2)WB 41 Sn( Mapping for Enumer)HY(a)HY(tions)YH()134 1 TN()EA()BN}if
-3 NH le{135(3.16.3\240\240)3 C(2.6.3)WB 42 Sn( Mapping for Deriva)HY(tion)YH( by List)135 1 TN()EA()BN}if
-3 NH le{136(3.16.4\240\240)3 C(2.6.4)WB 43 Sn( Mapping for Deriva)HY(tion)YH( by Union)136 1 TN()EA()BN}if
-2 NH le{137(3.17\240\240)2 C(2.7)WB 44 Sn( Mapping for Complex Types)137 1 TN()EA()BN}if
-3 NH le{138(3.17.1\240\240)3 C(2.7.1)WB 45 Sn( Mapping for Deriva)HY(tion)YH( by Exten)HY(sion)YH()138 1 TN()EA()BN}if
-3 NH le{139(3.17.2\240\240)3 C(2.7.2)WB 46 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()139 1 TN()EA()BN}if
-2 NH le{140(3.18\240\240)2 C(2.8)WB 47 Sn( Mapping for Local Elements and Attributes)140 1 TN()EA()BN}if
-3 NH le{141(3.18.1\240\240)3 C(2.8.1)WB 48 Sn( Mapping for Members with the One Cardi)HY(nal)HY(ity)YH( Class)141 1 TN()EA()BN}if
-3 NH le{142(3.18.2\240\240)3 C(2.8.2)WB 49 Sn( Mapping for Members with the Optional Cardi)HY(nal)HY(ity)YH( Class)142 1 TN()EA()BN}if
-3 NH le{143(3.18.3\240\240)3 C(2.8.3)WB 50 Sn( Mapping for Members with the Sequence Cardi)HY(nal)HY(ity)YH( Class)143 1 TN()EA()BN}if
-3 NH le{144(3.18.4\240\240)3 C(2.8.4)WB 51 Sn( Element Order)144 1 TN()EA()BN}if
-2 NH le{145(3.19\240\240)2 C(2.9)WB 52 Sn( Mapping for Global Elements)145 1 TN()EA()BN}if
-3 NH le{146(3.19.1\240\240)3 C(2.9.1)WB 53 Sn( Element Types)146 1 TN()EA()BN}if
-3 NH le{147(3.19.2\240\240)3 C(2.9.2)WB 54 Sn( Element Map)147 1 TN()EA()BN}if
-2 NH le{148(3.20\240\240)2 C(2.10)WB 55 Sn( Mapping for Global Attributes)148 1 TN()EA()BN}if
-2 NH le{149(3.21\240\240)2 C(2.11)WB 56 Sn( Mapping for )SM(xsi:type)ES( and Substi)HY(tu)HY(tion)YH(
- Groups)149 1 TN()EA()BN}if
-2 NH le{150(3.22\240\240)2 C(2.12)WB 57 Sn( Mapping for )SM(any)ES( and )SM(anyAt)HY(tribute)YH()ES()150 1 TN()EA()BN}if
-3 NH le{151(3.22.1\240\240)3 C(2.12.1)WB 58 Sn( Mapping for )SM(any)ES( with the One Cardi)HY(nal)HY(ity)YH( Class)151 1 TN()EA()BN}if
-3 NH le{152(3.22.2\240\240)3 C(2.12.2)WB 59 Sn( Mapping for )SM(any)ES( with the Optional Cardi)HY(nal)HY(ity)YH( Class)152 1 TN()EA()BN}if
-3 NH le{153(3.22.3\240\240)3 C(2.12.3)WB 60 Sn( Mapping for )SM(any)ES( with the Sequence Cardi)HY(nal)HY(ity)YH( Class)153 1 TN()EA()BN}if
-3 NH le{154(3.22.4\240\240)3 C(2.12.4)WB 61 Sn( Element Wild)HY(card)YH( Order)154 1 TN()EA()BN}if
-3 NH le{155(3.22.5\240\240)3 C(2.12.5)WB 62 Sn( Mapping for )SM(anyAt)HY(tribute)YH()ES()155 1 TN()EA()BN}if
-2 NH le{156(3.23\240\240)2 C(2.13)WB 63 Sn( Mapping for Mixed Content Models)156 1 TN()EA()BN}if
-1 NH le{157(4\240\240)1 C(3)WB 64 Sn( Parsing)157 1 TN()EA()BN}if
-2 NH le{158(4.1\240\240)2 C(3.1)WB 65 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)158 1 TN()EA()BN}if
-2 NH le{159(4.2\240\240)2 C(3.2)WB 66 Sn( Flags and Prop)HY(er)HY(ties)YH()159 1 TN()EA()BN}if
-2 NH le{160(4.3\240\240)2 C(3.3)WB 67 Sn( Error Handling)160 1 TN()EA()BN}if
-3 NH le{161(4.3.1\240\240)3 C(3.3.1)WB 68 Sn( )SM(xml_schema::parsing)ES()161 1 TN()EA()BN}if
-3 NH le{162(4.3.2\240\240)3 C(3.3.2)WB 69 Sn( )SM(xml_schema::expected_element)ES()162 1 TN()EA()BN}if
-3 NH le{163(4.3.3\240\240)3 C(3.3.3)WB 70 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()163 1 TN()EA()BN}if
-3 NH le{164(4.3.4\240\240)3 C(3.3.4)WB 71 Sn( )SM(xml_schema::expected_attribute)ES()164 1 TN()EA()BN}if
-3 NH le{165(4.3.5\240\240)3 C(3.3.5)WB 72 Sn( )SM(xml_schema::unex)HY(pected)YH(_enumer)HY(a)HY(tor)YH()ES()165 1 TN()EA()BN}if
-3 NH le{166(4.3.6\240\240)3 C(3.3.6)WB 73 Sn( )SM(xml_schema::expected_text_content)ES()166 1 TN()EA()BN}if
-3 NH le{167(4.3.7\240\240)3 C(3.3.7)WB 74 Sn( )SM(xml_schema::no_type_info)ES()167 1 TN()EA()BN}if
-3 NH le{168(4.3.8\240\240)3 C(3.3.8)WB 75 Sn( )SM(xml_schema::not_derived)ES()168 1 TN()EA()BN}if
-3 NH le{169(4.3.9\240\240)3 C(3.3.9)WB 76 Sn( )SM(xml_schema::no_prefix_mapping)ES()169 1 TN()EA()BN}if
-2 NH le{170(4.4\240\240)2 C(3.4)WB 77 Sn( Reading from a Local File or URI)170 1 TN()EA()BN}if
-2 NH le{171(4.5\240\240)2 C(3.5)WB 78 Sn( Reading from )SM(std::istream)ES()171 1 TN()EA()BN}if
-2 NH le{172(4.6\240\240)2 C(3.6)WB 79 Sn( Reading from )SM(xercesc::Input)HY(Source)YH()ES()172 1 TN()EA()BN}if
-2 NH le{173(4.7\240\240)2 C(3.7)WB 80 Sn( Reading from DOM)173 1 TN()EA()BN}if
-1 NH le{174(5\240\240)1 C(4)WB 81 Sn( Seri)HY(al)HY(iza)HY(tion)YH()174 1 TN()EA()BN}if
-2 NH le{175(5.1\240\240)2 C(4.1)WB 82 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)175 1 TN()EA()BN}if
-2 NH le{176(5.2\240\240)2 C(4.2)WB 83 Sn( Names)HY(pace)YH( Infomap and Char)HY(ac)HY(ter)YH( Encod)HY(ing)YH()176 1 TN()EA()BN}if
-2 NH le{177(5.3\240\240)2 C(4.3)WB 84 Sn( Flags)177 1 TN()EA()BN}if
-2 NH le{178(5.4\240\240)2 C(4.4)WB 85 Sn( Error Handling)178 1 TN()EA()BN}if
-3 NH le{179(5.4.1\240\240)3 C(4.4.1)WB 86 Sn( )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES()179 1 TN()EA()BN}if
-3 NH le{180(5.4.2\240\240)3 C(4.4.2)WB 87 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()180 1 TN()EA()BN}if
-3 NH le{181(5.4.3\240\240)3 C(4.4.3)WB 88 Sn( )SM(xml_schema::no_type_info)ES()181 1 TN()EA()BN}if
-2 NH le{182(5.5\240\240)2 C(4.5)WB 89 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(std::ostream)ES()182 1 TN()EA()BN}if
-2 NH le{183(5.6\240\240)2 C(4.6)WB 90 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES()183 1 TN()EA()BN}if
-2 NH le{184(5.7\240\240)2 C(4.7)WB 91 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to DOM)184 1 TN()EA()BN}if
-1 NH le{185(6\240\240)1 C(5)WB 92 Sn( Addi)HY(tional)YH( Func)HY(tion)HY(al)HY(ity)YH()185 1 TN()EA()BN}if
-2 NH le{186(6.1\240\240)2 C(5.1)WB 93 Sn( DOM Asso)HY(ci)HY(a)HY(tion)YH()186 1 TN()EA()BN}if
-2 NH le{187(6.2\240\240)2 C(5.2)WB 94 Sn( Binary Seri)HY(al)HY(iza)HY(tion)YH()187 1 TN()EA()BN}if
-1 NH le{188(7\240\240)1 C(Appendix)WB 95 Sn( A \236 Default and Fixed Values)188 1 TN()EA()BN}if
-/OU t D /Cb Db D NP Ep ET
-/Cb Db D /Ct [16#00 16#00 16#00] D /Cl [16#00 16#00 16#00] D /CL -1 D Ct Sc
-
-/Ba f D /BO 0 D Bs
-/UR (/home/boris/work/xsd/xsd/doc/cxx/tree/manual/index.xhtml) D
-/Ti (C++/Tree Mapping User Manual) D
-/Au () D
-/Df f D
-/ME [(4.0.0)] D
-
-NP RC ZF
-()1 Sl()WB 0 Sn(
-
-)BR()WB 1 Sn( )BR()WB 2 Sn(
-
-
- )0 1 0 H(Preface)WB 97 Sn()WB 3 Sn()EA()EH(
-
- )0 2 1 H(About)WB 98 Sn()WB 4 Sn( This Docu)HY(ment)YH()EA()EH(
-
- )0 P(This docu)HY(ment)YH( describes the mapping of W3C XML Schema
- to the C++ program)HY(ming)YH( language as imple)HY(mented)YH( by
- )R1 2 A(CodeSyn)HY(the)HY(sis)YH(
- XSD)EA( - an XML Schema to C++ data binding compiler. The mapping
- repre)HY(sents)YH( infor)HY(ma)HY(tion)YH( stored in XML instance docu)HY(ments)YH( as a
- stat)HY(i)HY(cally)YH(-typed, tree-like in-memory data struc)HY(ture)YH( and is
- called C++/Tree.
- )EP(
-
- )0 P(Revi)HY(sion)YH( 4.0.0)BR(
- This revi)HY(sion)YH( of the manual describes the C++/Tree
- mapping as imple)HY(mented)YH( by CodeSyn)HY(the)HY(sis)YH( XSD version 4.0.0.
- )EP(
-
- )0 P(This docu)HY(ment)YH( is avail)HY(able)YH( in the follow)HY(ing)YH( formats:
- )R2 2 A(XHTML)EA(,
- )R3 2 A(PDF)EA(, and
- )R4 2 A(PostScript)EA(.)EP(
-
- )0 2 2 H(More)WB 99 Sn()WB 5 Sn( Infor)HY(ma)HY(tion)YH()EA()EH(
-
- )0 P(Beyond this manual, you may also find the follow)HY(ing)YH( sources of
- infor)HY(ma)HY(tion)YH( useful:)EP(
-
- )UL( )-1 LI()R5 2 A(C++/Tree
- Mapping Getting Started Guide)EA(
-
- )-1 LI()R6 2 A(C++/Tree
- Mapping Customiza)HY(tion)YH( Guide)EA(
-
- )-1 LI()R7 2 A(C++/Tree
- Mapping Frequently Asked Ques)HY(tions)YH( \201FAQ\202)EA(
-
- )-1 LI()R8 2 A(XSD
- Compiler Command Line Manual)EA(
-
- )-1 LI(The )SM(exam)HY(ples)YH(/cxx/tree/)ES( direc)HY(tory)YH( in the XSD
- distri)HY(bu)HY(tion)YH( contains a collec)HY(tion)YH( of exam)HY(ples)YH( and a README
- file with an overview of each example.
-
- )-1 LI(The )SM(README)ES( file in the XSD distri)HY(bu)HY(tion)YH( explains
- how to compile the exam)HY(ples)YH( on various plat)HY(forms)YH(.
-
- )-1 LI(The )R9 2 A(xsd-users)EA(
- mailing list is a place to ask ques)HY(tions)YH(. Further)HY(more)YH( the
- )R10 2 A(archives)EA(
- may already have answers to some of your ques)HY(tions)YH(.
- )LU(
-
-
- )0 1 3 H(1)WB 100 Sn()WB 6 Sn( Intro)HY(duc)HY(tion)YH()EA()EH(
-
- )0 P(C++/Tree is a W3C XML Schema to C++ mapping that repre)HY(sents)YH( the
- data stored in XML as a stat)HY(i)HY(cally)YH(-typed, vocab)HY(u)HY(lary)YH(-specific
- object model. Based on a formal descrip)HY(tion)YH( of an XML vocab)HY(u)HY(lary)YH(
- \201schema\202, the C++/Tree mapping produces a tree-like data struc)HY(ture)YH(
- suit)HY(able)YH( for in-memory process)HY(ing)YH( as well as XML parsing and
- seri)HY(al)HY(iza)HY(tion)YH( code.)EP(
-
- )0 P(A typical appli)HY(ca)HY(tion)YH( that processes XML docu)HY(ments)YH( usually
- performs the follow)HY(ing)YH( three steps: it first reads \201parses\202 an XML
- instance docu)HY(ment)YH( to an object model, it then performs
- some useful compu)HY(ta)HY(tions)YH( on that model which may involve
- modi)HY(fi)HY(ca)HY(tion)YH( of the model, and finally it may write \201seri)HY(al)HY(ize)YH(\202
- the modi)HY(fied)YH( object model back to XML.
- )EP(
-
- )0 P(The C++/Tree mapping consists of C++ types that repre)HY(sent)YH( the
- given vocab)HY(u)HY(lary)YH( \201)0 7 1 A(Chapter 2, "C++/Tree Mapping")7 0 TN TL()Ec /AF f D(\202,
- a set of parsing func)HY(tions)YH( that convert XML docu)HY(ments)YH( to
- a tree-like in-memory data struc)HY(ture)YH( \201)0 64 1 A(Chapter 3,
- "Parsing")64 0 TN TL()Ec /AF f D(\202, and a set of seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( that convert
- the object model back to XML \201)0 81 1 A(Chapter 4,
- "Seri)HY(al)HY(iza)HY(tion)YH(")81 0 TN TL()Ec /AF f D(\202. Further)HY(more)YH(, the mapping provides a number
- of addi)HY(tional)YH( features, such as DOM asso)HY(ci)HY(a)HY(tion)YH( and binary
- seri)HY(al)HY(iza)HY(tion)YH(, that can be useful in some appli)HY(ca)HY(tions)YH(
- \201)0 92 1 A(Chapter 5, "Addi)HY(tional)YH( Func)HY(tion)HY(al)HY(ity)YH(")92 0 TN TL()Ec /AF f D(\202.
- )EP(
-
-
-
-
-
- )0 1 4 H(2)WB 101 Sn()WB 7 Sn( C++/Tree Mapping)EA()EH(
-
- )0 2 5 H(2.1)WB 102 Sn()WB 8 Sn( Prelim)HY(i)HY(nary)YH( Infor)HY(ma)HY(tion)YH()EA()EH(
-
- )0 3 6 H(2.1.1)WB 103 Sn()WB 9 Sn( C++ Stan)HY(dard)YH()EA()EH(
-
- )0 P(The C++/Tree mapping provides support for ISO/IEC C++ 1998/2003 \201C++98\202
- and ISO/IEC C++ 2011 \201C++11\202. To select the C++ stan)HY(dard)YH( for the
- gener)HY(ated)YH( code we use the )SM(--std)ES( XSD compiler command
- line option. While the major)HY(ity)YH( of the exam)HY(ples)YH( in this manual use
- C++98, support for the new func)HY(tion)HY(al)HY(ity)YH( and library compo)HY(nents)YH(
- intro)HY(duced)YH( in C++11 are discussed through)HY(out)YH( the docu)HY(ment)YH(.)EP(
-
- )0 3 7 H(2.1.2)WB 104 Sn()WB 10 Sn( Iden)HY(ti)HY(fiers)YH()EA()EH(
-
- )0 P(XML Schema names may happen to be reserved C++ keywords or contain
- char)HY(ac)HY(ters)YH( that are illegal in C++ iden)HY(ti)HY(fiers)YH(. To avoid C++ compi)HY(la)HY(tion)YH(
- prob)HY(lems)YH(, such names are changed \201escaped\202 when mapped to C++. If an
- XML Schema name is a C++ keyword, the "_" suffix is added to it. All
- char)HY(ac)HY(ter)YH( of an XML Schema name that are not allowed in C++ iden)HY(ti)HY(fiers)YH(
- are replaced with "_".
- )EP(
-
- )0 P(For example, XML Schema name )SM(try)ES( will be mapped to
- C++ iden)HY(ti)HY(fier)YH( )SM(try_)ES(. Simi)HY(larly)YH(, XML Schema name
- )SM(strange.na-me)ES( will be mapped to C++ iden)HY(ti)HY(fier)YH(
- )SM(strange_na_me)ES(.
- )EP(
-
- )0 P(Further)HY(more)YH(, conflicts between type names and func)HY(tion)YH( names in the
- same scope are resolved using name escap)HY(ing)YH(. Such conflicts include
- both a global element \201which is mapped to a set of parsing and/or
- seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( or element types, see )0 52 1 A(Section
- 2.9, "Mapping for Global Elements")52 0 TN TL()Ec /AF f D(\202 and a global type sharing the
- same name as well as a local element or attribute inside a type having
- the same name as the type itself.)EP(
-
- )0 P(For example, if we had a global type )SM(catalog)ES(
- and a global element with the same name then the type would be
- mapped to a C++ class with name )SM(catalog)ES( while the
- parsing func)HY(tions)YH( corre)HY(spond)HY(ing)YH( to the global element would have
- their names escaped as )SM(catalog_)ES(.
- )EP(
-
- )0 P(By default the mapping uses the so-called K&R \201Kernighan and
- Ritchie\202 iden)HY(ti)HY(fier)YH( naming conven)HY(tion)YH( which is also used through)HY(out)YH(
- this manual. In this conven)HY(tion)YH( both type and func)HY(tion)YH( names are in
- lower case and words are sepa)HY(rated)YH( by under)HY(scores)YH(. If your appli)HY(ca)HY(tion)YH(
- code or schemas use a differ)HY(ent)YH( nota)HY(tion)YH(, you may want to change the
- naming conven)HY(tion)YH( used by the mapping for consis)HY(tency)YH(.
- The compiler supports a set of widely-used naming conven)HY(tions)YH(
- that you can select with the )SM(--type-naming)ES( and
- )SM(--func)HY(tion)YH(-naming)ES( options. You can also further
- refine one of the prede)HY(fined)YH( conven)HY(tions)YH( or create a completely
- custom naming scheme by using the )SM(--*-regex)ES( options.
- For more detailed infor)HY(ma)HY(tion)YH( on these options refer to the NAMING
- CONVEN)HY(TION)YH( section in the )R8 2 A(XSD
- Compiler Command Line Manual)EA(.)EP(
-
- )0 3 8 H(2.1.3)WB 105 Sn()WB 11 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()EA()EH(
-
- )0 P(The code that imple)HY(ments)YH( the mapping, depend)HY(ing)YH( on the
- )SM(--char-type)ES( option, is gener)HY(ated)YH( using either
- )SM(char)ES( or )SM(wchar_t)ES( as the char)HY(ac)HY(ter)YH(
- type. In this docu)HY(ment)YH( code samples use symbol )SM(C)ES(
- to refer to the char)HY(ac)HY(ter)YH( type you have selected when trans)HY(lat)HY(ing)YH(
- your schemas, for example )SM(std::basic_string<C>)ES(.
- )EP(
-
- )0 P(Another aspect of the mapping that depends on the char)HY(ac)HY(ter)YH( type
- is char)HY(ac)HY(ter)YH( encod)HY(ing)YH(. For the )SM(char)ES( char)HY(ac)HY(ter)YH( type
- the default encod)HY(ing)YH( is UTF-8. Other supported encod)HY(ings)YH( are
- ISO-8859-1, Xerces-C++ Local Code Page \201LPC\202, as well as
- custom encod)HY(ings)YH( and can be selected with the
- )SM(--char-encod)HY(ing)YH()ES( command line option.)EP(
-
- )0 P(For the )SM(wchar_t)ES( char)HY(ac)HY(ter)YH( type the encod)HY(ing)YH( is
- auto)HY(mat)HY(i)HY(cally)YH( selected between UTF-16 and UTF-32/UCS-4 depend)HY(ing)YH(
- on the size of the )SM(wchar_t)ES( type. On some plat)HY(forms)YH(
- \201for example, Windows with Visual C++ and AIX with IBM XL C++\202
- )SM(wchar_t)ES( is 2 bytes long. For these plat)HY(forms)YH( the
- encod)HY(ing)YH( is UTF-16. On other plat)HY(forms)YH( )SM(wchar_t)ES( is 4 bytes
- long and UTF-32/UCS-4 is used.)EP(
-
- )0 3 9 H(2.1.4)WB 106 Sn()WB 12 Sn( XML Schema Names)HY(pace)YH()EA()EH(
-
- )0 P(The mapping relies on some prede)HY(fined)YH( types, classes, and func)HY(tions)YH(
- that are logi)HY(cally)YH( defined in the XML Schema names)HY(pace)YH( reserved for
- the XML Schema language \201)SM(http://www.w3.org/2001/XMLSchema)ES(\202.
- By default, this names)HY(pace)YH( is mapped to C++ names)HY(pace)YH(
- )SM(xml_schema)ES(. It is auto)HY(mat)HY(i)HY(cally)YH( acces)HY(si)HY(ble)YH(
- from a C++ compi)HY(la)HY(tion)YH( unit that includes a header file gener)HY(ated)YH(
- from an XML Schema defi)HY(ni)HY(tion)YH(.
- )EP(
-
- )0 P(Note that, if desired, the default mapping of this names)HY(pace)YH( can be
- changed as described in )0 20 1 A(Section 2.4, "Mapping for
- Names)HY(paces)YH(")20 0 TN TL()Ec /AF f D(.
- )EP(
-
-
- )0 3 10 H(2.1.5)WB 107 Sn()WB 13 Sn( Anony)HY(mous)YH( Types)EA()EH(
-
- )0 P(For the purpose of code gener)HY(a)HY(tion)YH(, anony)HY(mous)YH( types defined in
- XML Schema are auto)HY(mat)HY(i)HY(cally)YH( assigned names that are derived
- from enclos)HY(ing)YH( attributes and elements. Other)HY(wise)YH(, such types
- follows stan)HY(dard)YH( mapping rules for simple and complex type
- defi)HY(ni)HY(tions)YH( \201see )0 39 1 A(Section 2.6, "Mapping for Simple Types")39 0 TN TL()Ec /AF f D(
- and )0 44 1 A(Section 2.7, "Mapping for Complex Types")44 0 TN TL()Ec /AF f D(\202.
- For example, in the follow)HY(ing)YH( schema frag)HY(ment)YH(:
- )EP(
-
- ) 5 23 PR(<element name="object">
- <complexType>
- ...
- </complexType>
-</element>)RP(
-
- )0 P(The anony)HY(mous)YH( type defined inside element )SM(object)ES( will
- be given name )SM(object)ES(. The compiler has a number of
- options that control the process of anony)HY(mous)YH( type naming. For more
- infor)HY(ma)HY(tion)YH( refer to the )R8 2 A(XSD
- Compiler Command Line Manual)EA(.)EP(
-
-
- )0 2 11 H(2.2)WB 108 Sn()WB 14 Sn( Error Handling)EA()EH(
-
- )0 P(The mapping uses the C++ excep)HY(tion)YH( handling mech)HY(a)HY(nism)YH( as a primary way
- of report)HY(ing)YH( error condi)HY(tions)YH(. All excep)HY(tions)YH( that are spec)HY(i)HY(fied)YH( in
- this mapping derive from )SM(xml_schema::excep)HY(tion)YH()ES( which
- itself is derived from )SM(std::excep)HY(tion)YH()ES(:
- )EP(
-
- ) 14 60 PR(struct exception: virtual std::exception
-{
- friend
- std::basic_ostream<C>&
- operator<< \201std::basic_ostream<C>& os, const exception& e\202
- {
- e.print \201os\202;
- return os;
- }
-
-protected:
- virtual void
- print \201std::basic_ostream<C>&\202 const = 0;
-};)RP(
-
- )0 P(The excep)HY(tion)YH( hier)HY(ar)HY(chy)YH( supports "virtual" )SM(oper)HY(a)HY(tor)YH(<<)ES(
- which allows you to obtain diag)HY(nos)HY(tics)YH( corre)HY(spond)HY(ing)YH( to the thrown
- excep)HY(tion)YH( using the base excep)HY(tion)YH( inter)HY(face)YH(. For example:)EP(
-
- ) 8 38 PR(try
-{
- ...
-}
-catch \201const xml_schema::exception& e\202
-{
- cerr << e << endl;
-})RP(
-
- )0 P(The follow)HY(ing)YH( sub-sections describe excep)HY(tions)YH( thrown by the
- types that consti)HY(tute)YH( the object model.
- )0 67 1 A(Section 3.3, "Error Handling")67 0 TN TL()Ec /AF f D( of
- )0 64 1 A(Chapter 3, "Parsing")64 0 TN TL()Ec /AF f D( describes excep)HY(tions)YH(
- and error handling mech)HY(a)HY(nisms)YH( specific to the parsing func)HY(tions)YH(.
- )0 85 1 A(Section 4.4, "Error Handling")85 0 TN TL()Ec /AF f D( of
- )0 81 1 A(Chapter 4, "Seri)HY(al)HY(iza)HY(tion)YH(")81 0 TN TL()Ec /AF f D( describes excep)HY(tions)YH(
- and error handling mech)HY(a)HY(nisms)YH( specific to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(.
- )EP(
-
-
- )0 3 12 H(2.2.1)WB 109 Sn()WB 15 Sn( )SM(xml_schema::dupli)HY(cate)YH(_id)ES()EA()EH(
-
- ) 10 48 PR(struct duplicate_id: virtual exception
-{
- duplicate_id \201const std::basic_string<C>& id\202;
-
- const std::basic_string<C>&
- id \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::dupli)HY(cate)YH(_id)ES( is thrown when
- a conflict)HY(ing)YH( instance of )SM(xml_schema::id)ES( \201see
- )0 21 1 A(Section 2.5, "Mapping for Built-in Data Types")21 0 TN TL()Ec /AF f D(\202
- is added to a tree. The offend)HY(ing)YH( ID value can be obtained using
- the )SM(id)ES( func)HY(tion)YH(.
- )EP(
-
- )0 2 13 H(2.3)WB 110 Sn()WB 16 Sn( Mapping for )SM(import)ES( and )SM(include)ES()EA()EH(
-
- )0 3 14 H(2.3.1)WB 111 Sn()WB 17 Sn( Import)EA()EH(
-
- )0 P(The XML Schema )SM(import)ES( element is mapped to the C++
- Prepro)HY(ces)HY(sor)YH( )SM(#include)ES( direc)HY(tive)YH(. The value of
- the )SM(schemaLo)HY(ca)HY(tion)YH()ES( attribute is used to derive
- the name of the header file that appears in the )SM(#include)ES(
- direc)HY(tive)YH(. For instance:
- )EP(
-
- ) 2 53 PR(<import namespace="http://www.codesynthesis.com/test"
- schemaLocation="test.xsd"/>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 1 19 PR(#include "test.hxx")RP(
-
- )0 P(Note that you will need to compile imported schemas sepa)HY(rately)YH(
- in order to produce corre)HY(spond)HY(ing)YH( header files.)EP(
-
- )0 3 15 H(2.3.2)WB 112 Sn()WB 18 Sn( Inclu)HY(sion)YH( with Target Names)HY(pace)YH()EA()EH(
-
- )0 P(The XML Schema )SM(include)ES( element which refers to a schema
- with a target names)HY(pace)YH( or appears in a schema without a target names)HY(pace)YH(
- follows the same mapping rules as the )SM(import)ES( element,
- see )0 17 1 A(Section 2.3.1, "Import")17 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 3 16 H(2.3.3)WB 113 Sn()WB 19 Sn( Inclu)HY(sion)YH( without Target Names)HY(pace)YH()EA()EH(
-
- )0 P(For the XML Schema )SM(include)ES( element which refers to a schema
- without a target names)HY(pace)YH( and appears in a schema with a target
- names)HY(pace)YH( \201such inclu)HY(sion)YH( some)HY(times)YH( called "chameleon inclu)HY(sion)YH("\202,
- decla)HY(ra)HY(tions)YH( and defi)HY(ni)HY(tions)YH( from the included schema are gener)HY(ated)YH(
- in-line in the names)HY(pace)YH( of the includ)HY(ing)YH( schema as if they were
- declared and defined there verba)HY(tim)YH(. For example, consider the
- follow)HY(ing)YH( two schemas:
- )EP(
-
- ) 11 60 PR(<-- common.xsd -->
-<schema>
- <complexType name="type">
- ...
- </complexType>
-</schema>
-
-<-- test.xsd -->
-<schema targetNamespace="http://www.codesynthesis.com/test">
- <include schemaLocation="common.xsd"/>
-</schema>)RP(
-
- )0 P(The frag)HY(ment)YH( of inter)HY(est)YH( from the gener)HY(ated)YH( header file for
- )SM(text.xsd)ES( would look like this:)EP(
-
- ) 8 14 PR(// test.hxx
-namespace test
-{
- class type
- {
- ...
- };
-})RP(
-
- )0 2 17 H(2.4)WB 114 Sn()WB 20 Sn( Mapping for Names)HY(paces)YH()EA()EH(
-
- )0 P(An XML Schema names)HY(pace)YH( is mapped to one or more nested C++
- names)HY(paces)YH(. XML Schema names)HY(paces)YH( are iden)HY(ti)HY(fied)YH( by URIs.
- By default, a names)HY(pace)YH( URI is mapped to a sequence of
- C++ names)HY(pace)YH( names by remov)HY(ing)YH( the proto)HY(col)YH( and host parts
- and split)HY(ting)YH( the rest into a sequence of names with ')SM(/)ES('
- as the name sepa)HY(ra)HY(tor)YH(. For instance:
- )EP(
-
- ) 3 67 PR(<schema targetNamespace="http://www.codesynthesis.com/system/test">
- ...
-</schema>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 7 16 PR(namespace system
-{
- namespace test
- {
- ...
- }
-})RP(
-
- )0 P(The default mapping of names)HY(pace)YH( URIs to C++ names)HY(pace)YH( names can be
- altered using the )SM(--names)HY(pace)YH(-map)ES( and
- )SM(--names)HY(pace)YH(-regex)ES( options. See the
- )R8 2 A(XSD
- Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH(.
- )EP(
-
- )0 2 18 H(2.5)WB 115 Sn()WB 21 Sn( Mapping for Built-in Data Types)EA()EH(
-
- )0 P(The mapping of XML Schema built-in data types to C++ types is
- summa)HY(rized)YH( in the table below.)EP(
-
-
- )0 PT(
-
- )0 P(All XML Schema built-in types are mapped to C++ classes that are
- derived from the )SM(xml_schema::simple_type)ES( class except
- where the mapping is to a funda)HY(men)HY(tal)YH( C++ type.)EP(
-
- )0 P(The )SM(sequence)ES( class template is defined in an
- imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH(. It conforms to the
- sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
- C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202.
- Prac)HY(ti)HY(cally)YH(, this means that you can treat such a sequence
- as if it was )SM(std::vector)ES(. One notable exten)HY(sion)YH(
- to the stan)HY(dard)YH( inter)HY(face)YH( that is avail)HY(able)YH( only for
- sequences of non-funda)HY(men)HY(tal)YH( C++ types is the addi)HY(tion)YH( of
- the over)HY(loaded)YH( )SM(push_back)ES( and )SM(insert)ES(
- member func)HY(tions)YH( which instead of the constant refer)HY(ence)YH(
- to the element type accept auto)HY(matic)YH( pointer \201)SM(std::auto_ptr)ES(
- or )SM(std::unique_ptr)ES(, depend)HY(ing)YH( on the C++ stan)HY(dard)YH(
- selected\202 to the element type. These func)HY(tions)YH( assume owner)HY(ship)YH(
- of the pointed to object and reset the passed auto)HY(matic)YH( pointer.
- )EP(
-
- )0 3 19 H(2.5.1)WB 116 Sn()WB 23 Sn( Inher)HY(i)HY(tance)YH( from Built-in Data Types)EA()EH(
-
- )0 P(In cases where the mapping calls for an inher)HY(i)HY(tance)YH( from a built-in
- type which is mapped to a funda)HY(men)HY(tal)YH( C++ type, a proxy type is
- used instead of the funda)HY(men)HY(tal)YH( C++ type \201C++ does not allow
- inher)HY(i)HY(tance)YH( from funda)HY(men)HY(tal)YH( types\202. For instance:)EP(
-
- ) 3 27 PR(<simpleType name="my_int">
- <restriction base="int"/>
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 4 42 PR(class my_int: public fundamental_base<int>
-{
- ...
-};)RP(
-
- )0 P(The )SM(funda)HY(men)HY(tal)YH(_base)ES( class template provides a close
- emula)HY(tion)YH( \201though not exact\202 of a funda)HY(men)HY(tal)YH( C++ type.
- It is defined in an imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH( and has the
- follow)HY(ing)YH( inter)HY(face)YH(:)EP(
-
- ) 22 44 PR(template <typename X>
-class fundamental_base: public simple_type
-{
-public:
- fundamental_base \201\202;
- fundamental_base \201X\202
- fundamental_base \201const fundamental_base&\202
-
-public:
- fundamental_base&
- operator= \201const X&\202;
-
-public:
- operator const X & \201\202 const;
- operator X& \201\202;
-
- template <typename Y>
- operator Y \201\202 const;
-
- template <typename Y>
- operator Y \201\202;
-};)RP(
-
- )0 3 20 H(2.5.2)WB 117 Sn()WB 24 Sn( Mapping for )SM(anyType)ES()EA()EH(
-
- )0 P(The XML Schema )SM(anyType)ES( built-in data type is mapped to the
- )SM(xml_schema::type)ES( C++ class:)EP(
-
- ) 53 48 PR(class type
-{
-public:
- virtual
- ~type \201\202;
-
- type \201\202;
- type \201const type&\202;
-
- type&
- operator= \201const type&\202;
-
- virtual type*
- _clone \201\202 const;
-
- // anyType DOM content.
- //
-public:
- typedef element_optional dom_content_optional;
-
- const dom_content_optional&
- dom_content \201\202 const;
-
- dom_content_optional&
- dom_content \201\202;
-
- void
- dom_content \201const xercesc::DOMElement&\202;
-
- void
- dom_content \201xercesc::DOMElement*\202;)WR(
-
- void
- dom_content \201const dom_content_optional&\202;
-
- const xercesc::DOMDocument&
- dom_content_document \201\202 const;
-
- xercesc::DOMDocument&
- dom_content_document \201\202;
-
- bool
- null_content \201\202 const;
-
- // DOM association.
- //
-public:
- const xercesc::DOMNode*
- _node \201\202 const;
-
- xercesc::DOMNode*
- _node \201\202;
-};)RP(
-
- )0 P(When )SM(xml_schema::type)ES( is used to create an instance
- \201as opposed to being a base of a derived type\202, it repre)HY(sents)YH(
- the XML Schema )SM(anyType)ES( type. )SM(anyType)ES(
- allows any attributes and any content in any order. In the
- C++/Tree mapping this content can be repre)HY(sented)YH( as a DOM
- frag)HY(ment)YH(, similar to XML Schema wild)HY(cards)YH( \201)0 57 1 A(Section
- 2.12, "Mapping for )SM(any)ES( and
- )SM(anyAt)HY(tribute)YH()ES(")57 0 TN TL()Ec /AF f D(\202.)EP(
-
- )0 P(To enable auto)HY(matic)YH( extrac)HY(tion)YH( of )SM(anyType)ES( content
- during parsing, the )SM(--gener)HY(ate)YH(-any-type)ES( option must be
- spec)HY(i)HY(fied)YH(. Because the DOM API is used to access such content, the
- Xerces-C++ runtime should be initial)HY(ized)YH( by the appli)HY(ca)HY(tion)YH( prior to
- parsing and should remain initial)HY(ized)YH( for the life)HY(time)YH( of objects
- with the DOM content. For more infor)HY(ma)HY(tion)YH( on the Xerces-C++ runtime
- initial)HY(iza)HY(tion)YH( see )0 65 1 A(Section 3.1, "Initial)HY(iz)HY(ing)YH( the
- Xerces-C++ Runtime")65 0 TN TL()Ec /AF f D(.)EP(
-
- )0 P(The DOM content is stored as the optional DOM element container
- and the DOM content acces)HY(sors)YH( and modi)HY(fiers)YH( presented above are
- iden)HY(ti)HY(cal)YH( to those gener)HY(ated)YH( for an optional element wild)HY(card)YH(.
- Refer to )0 59 1 A(Section 2.12.2, "Mapping for )SM(any)ES(
- with the Optional Cardi)HY(nal)HY(ity)YH( Class")59 0 TN TL()Ec /AF f D( for details on their
- seman)HY(tics)YH(.)EP(
-
- )0 P(The )SM(dom_content_docu)HY(ment)YH(\201\202)ES( func)HY(tion)YH( returns the
- DOM docu)HY(ment)YH( used to store the raw XML content corre)HY(spond)HY(ing)YH(
- to the )SM(anyType)ES( instance. It is equiv)HY(a)HY(lent)YH( to the
- )SM(dom_docu)HY(ment)YH(\201\202)ES( func)HY(tion)YH( gener)HY(ated)YH( for types
- with wild)HY(cards)YH(.)EP(
-
- )0 P(The )SM(null_content\201\202)ES( acces)HY(sor)YH( is an opti)HY(miza)HY(tion)YH( func)HY(tion)YH(
- that allows us to check for the lack of content without actu)HY(ally)YH(
- creat)HY(ing)YH( its empty repre)HY(sen)HY(ta)HY(tion)YH(, that is, empty DOM docu)HY(ment)YH( for
- )SM(anyType)ES( or empty string for )SM(anySim)HY(ple)HY(Type)YH()ES(
- \201see the follow)HY(ing)YH( section for details on )SM(anySim)HY(ple)HY(Type)YH()ES(\202.)EP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( on DOM asso)HY(ci)HY(a)HY(tion)YH( refer to
- )0 93 1 A(Section 5.1, "DOM Asso)HY(ci)HY(a)HY(tion)YH(")93 0 TN TL()Ec /AF f D(.)EP(
-
- )0 3 21 H(2.5.3)WB 118 Sn()WB 25 Sn( Mapping for )SM(anySim)HY(ple)HY(Type)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(anySim)HY(ple)HY(Type)YH()ES( built-in data type is mapped
- to the )SM(xml_schema::simple_type)ES( C++ class:)EP(
-
- ) 27 45 PR(class simple_type: public type
-{
-public:
- simple_type \201\202;
- simple_type \201const C*\202;
- simple_type \201const std::basic_string<C>&\202;
-
- simple_type \201const simple_type&\202;
-
- simple_type&
- operator= \201const simple_type&\202;
-
- virtual simple_type*
- _clone \201\202 const;
-
- // anySimpleType text content.
- //
-public:
- const std::basic_string<C>&
- text_content \201\202 const;
-
- std::basic_string<C>&
- text_content \201\202;
-
- void
- text_content \201const std::basic_string<C>&\202;
-};)RP(
-
- )0 P(When )SM(xml_schema::simple_type)ES( is used to create an instance
- \201as opposed to being a base of a derived type\202, it repre)HY(sents)YH(
- the XML Schema )SM(anySim)HY(ple)HY(Type)YH()ES( type. )SM(anySim)HY(ple)HY(Type)YH()ES(
- allows any simple content. In the C++/Tree mapping this content can
- be repre)HY(sented)YH( as a string and accessed or modi)HY(fied)YH( with the
- )SM(text_content\201\202)ES( func)HY(tions)YH( shown above.)EP(
-
- )0 3 22 H(2.5.4)WB 119 Sn()WB 26 Sn( Mapping for )SM(QName)ES()EA()EH(
-
- )0 P(The XML Schema )SM(QName)ES( built-in data type is mapped to the
- )SM(xml_schema::qname)ES( C++ class:)EP(
-
- ) 25 36 PR(class qname: public simple_type
-{
-public:
- qname \201const ncname&\202;
- qname \201const uri&, const ncname&\202;
- qname \201const qname&\202;
-
-public:
- qname&
- operator= \201const qname&\202;
-
-public:
- virtual qname*
- _clone \201\202 const;
-
-public:
- bool
- qualified \201\202 const;
-
- const uri&
- namespace_ \201\202 const;
-
- const ncname&
- name \201\202 const;
-};)RP(
-
- )0 P(The )SM(qual)HY(i)HY(fied)YH()ES( acces)HY(sor)YH( func)HY(tion)YH( can be used to deter)HY(mine)YH(
- if the name is qual)HY(i)HY(fied)YH(.)EP(
-
- )0 3 23 H(2.5.5)WB 120 Sn()WB 27 Sn( Mapping for )SM(IDREF)ES()EA()EH(
-
- )0 P(The XML Schema )SM(IDREF)ES( built-in data type is mapped to the
- )SM(xml_schema::idref)ES( C++ class. This class imple)HY(ments)YH( the
- smart pointer C++ idiom:)EP(
-
- ) 56 44 PR(class idref: public ncname
-{
-public:
- idref \201const C* s\202;
- idref \201const C* s, std::size_t n\202;
- idref \201std::size_t n, C c\202;
- idref \201const std::basic_string<C>&\202;
- idref \201const std::basic_string<C>&,
- std::size_t pos,
- std::size_t n = npos\202;
-
-public:
- idref \201const idref&\202;
-
-public:
- virtual idref*
- _clone \201\202 const;
-
-public:
- idref&
- operator= \201C c\202;
-
- idref&
- operator= \201const C* s\202;
-
- idref&
- operator= \201const std::basic_string<C>&\202
-
- idref&
- operator= \201const idref&\202;
-)WR(
-public:
- const type*
- operator-> \201\202 const;
-
- type*
- operator-> \201\202;
-
- const type&
- operator* \201\202 const;
-
- type&
- operator* \201\202;
-
- const type*
- get \201\202 const;
-
- type*
- get \201\202;
-
- // Conversion to bool.
- //
-public:
- typedef void \201idref::*bool_convertible\202\201\202;
- operator bool_convertible \201\202 const;
-};)RP(
-
- )0 P(The object, )SM(idref)ES( instance refers to, is the imme)HY(di)HY(ate)YH(
- container of the match)HY(ing)YH( )SM(id)ES( instance. For example,
- with the follow)HY(ing)YH( instance docu)HY(ment)YH( and schema:
- )EP(
-
-
- ) 22 49 PR(<!-- test.xml -->
-<root>
- <object id="obj-1" text="hello"/>
- <reference>obj-1</reference>
-</root>
-
-<!-- test.xsd -->
-<schema>
- <complexType name="object_type">
- <attribute name="id" type="ID"/>
- <attribute name="text" type="string"/>
- </complexType>
-
- <complexType name="root_type">
- <sequence>
- <element name="object" type="object_type"/>
- <element name="reference" type="IDREF"/>
- </sequence>
- </complexType>
-
- <element name="root" type="root_type"/>
-</schema>)RP(
-
- )0 P(The )SM(ref)ES( instance in the code below will refer to
- an object of type )SM(object_type)ES(:)EP(
-
- ) 4 53 PR(root_type& root = ...;
-xml_schema::idref& ref \201root.reference \201\202\202;
-object_type& obj \201dynamic_cast<object_type&> \201*ref\202\202;
-cout << obj.text \201\202 << endl;)RP(
-
- )0 P(The smart pointer inter)HY(face)YH( of the )SM(idref)ES( class always
- returns a pointer or refer)HY(ence)YH( to )SM(xml_schema::type)ES(.
- This means that you will need to manu)HY(ally)YH( cast such pointer or
- refer)HY(ence)YH( to its real \201dynamic\202 type before you can use it \201unless
- all you need is the base inter)HY(face)YH( provided by
- )SM(xml_schema::type)ES(\202. As a special exten)HY(sion)YH( to the XML
- Schema language, the mapping supports static typing of )SM(idref)ES(
- refer)HY(ences)YH( by employ)HY(ing)YH( the )SM(refType)ES( exten)HY(sion)YH( attribute.
- The follow)HY(ing)YH( example illus)HY(trates)YH( this mech)HY(a)HY(nism)YH(:
- )EP(
-
- ) 11 72 PR(<!-- test.xsd -->
-<schema
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension">
-
- ...
-
- <element name="reference" type="IDREF" xse:refType="object_type"/>
-
- ...
-
-</schema>)RP(
-
- )0 P(With this modi)HY(fi)HY(ca)HY(tion)YH( we do not need to do manual casting anymore:
- )EP(
-
- ) 4 51 PR(root_type& root = ...;
-root_type::reference_type& ref \201root.reference \201\202\202;
-object_type& obj \201*ref\202;
-cout << ref->text \201\202 << endl;)RP(
-
-
- )0 3 24 H(2.5.6)WB 121 Sn()WB 28 Sn( Mapping for )SM(base64Binary)ES( and
- )SM(hexBi)HY(nary)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(base64Binary)ES( and )SM(hexBi)HY(nary)YH()ES(
- built-in data types are mapped to the
- )SM(xml_schema::base64_binary)ES( and
- )SM(xml_schema::hex_binary)ES( C++ classes, respec)HY(tively)YH(. The
- )SM(base64_binary)ES( and )SM(hex_binary)ES( classes
- support a simple buffer abstrac)HY(tion)YH( by inher)HY(it)HY(ing)YH( from the
- )SM(xml_schema::buffer)ES( class:
- )EP(
-
- ) 64 58 PR(class bounds: public virtual exception
-{
-public:
- virtual const char*
- what \201\202 const throw \201\202;
-};
-
-class buffer
-{
-public:
- typedef std::size_t size_t;
-
-public:
- buffer \201size_t size = 0\202;
- buffer \201size_t size, size_t capacity\202;
- buffer \201const void* data, size_t size\202;
- buffer \201const void* data, size_t size, size_t capacity\202;
- buffer \201void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership\202;
-
-public:
- buffer \201const buffer&\202;
-
- buffer&
- operator= \201const buffer&\202;
-
- void
- swap \201buffer&\202;
-)WR(
-public:
- size_t
- capacity \201\202 const;
-
- bool
- capacity \201size_t\202;
-
-public:
- size_t
- size \201\202 const;
-
- bool
- size \201size_t\202;
-
-public:
- const char*
- data \201\202 const;
-
- char*
- data \201\202;
-
- const char*
- begin \201\202 const;
-
- char*
- begin \201\202;
-
- const char*
- end \201\202 const;
-)WR(
- char*
- end \201\202;
-};)RP(
-
- )0 P(The last over)HY(loaded)YH( construc)HY(tor)YH( reuses an exist)HY(ing)YH( data buffer instead
- of making a copy. If the )SM(assume_owner)HY(ship)YH()ES( argu)HY(ment)YH( is
- )SM(true)ES(, the instance assumes owner)HY(ship)YH( of the
- memory block pointed to by the )SM(data)ES( argu)HY(ment)YH( and will
- even)HY(tu)HY(ally)YH( release it by calling )SM(oper)HY(a)HY(tor)YH( delete)ES(. The
- )SM(capac)HY(ity)YH()ES( and )SM(size)ES( modi)HY(fier)YH( func)HY(tions)YH( return
- )SM(true)ES( if the under)HY(ly)HY(ing)YH( buffer has moved.
- )EP(
-
- )0 P(The )SM(bounds)ES( excep)HY(tion)YH( is thrown if the construc)HY(tor)YH(
- argu)HY(ments)YH( violate the )SM(\201size\240<=\240capac)HY(ity)YH(\202)ES(
- constraint.)EP(
-
- )0 P(The )SM(base64_binary)ES( and )SM(hex_binary)ES( classes
- support the )SM(buffer)ES( inter)HY(face)YH( and perform auto)HY(matic)YH(
- decod)HY(ing)YH(/encod)HY(ing)YH( from/to the Base64 and Hex formats, respec)HY(tively)YH(:
- )EP(
-
- ) 25 65 PR(class base64_binary: public simple_type, public buffer
-{
-public:
- base64_binary \201size_t size = 0\202;
- base64_binary \201size_t size, size_t capacity\202;
- base64_binary \201const void* data, size_t size\202;
- base64_binary \201const void* data, size_t size, size_t capacity\202;
- base64_binary \201void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership\202;
-
-public:
- base64_binary \201const base64_binary&\202;
-
- base64_binary&
- operator= \201const base64_binary&\202;
-
- virtual base64_binary*
- _clone \201\202 const;
-
-public:
- std::basic_string<C>
- encode \201\202 const;
-};)RP(
-
- ) 25 62 PR(class hex_binary: public simple_type, public buffer
-{
-public:
- hex_binary \201size_t size = 0\202;
- hex_binary \201size_t size, size_t capacity\202;
- hex_binary \201const void* data, size_t size\202;
- hex_binary \201const void* data, size_t size, size_t capacity\202;
- hex_binary \201void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership\202;
-
-public:
- hex_binary \201const hex_binary&\202;
-
- hex_binary&
- operator= \201const hex_binary&\202;
-
- virtual hex_binary*
- _clone \201\202 const;
-
-public:
- std::basic_string<C>
- encode \201\202 const;
-};)RP(
-
-
- )0 2 25 H(2.5.7)WB 122 Sn()WB 29 Sn( Time Zone Repre)HY(sen)HY(ta)HY(tion)YH()EA()EH(
-
- )0 P(The )SM(date)ES(, )SM(date)HY(Time)YH()ES(, )SM(gDay)ES(,
- )SM(gMonth)ES(, )SM(gMon)HY(th)HY(Day)YH()ES(, )SM(gYear)ES(,
- )SM(gYear)HY(Month)YH()ES(, and )SM(time)ES( XML Schema built-in
- types all include an optional time zone compo)HY(nent)YH(. The follow)HY(ing)YH(
- )SM(xml_schema::time_zone)ES( base class is used to repre)HY(sent)YH(
- this infor)HY(ma)HY(tion)YH(:)EP(
-
- ) 30 48 PR(class time_zone
-{
-public:
- time_zone \201\202;
- time_zone \201short hours, short minutes\202;
-
- bool
- zone_present \201\202 const;
-
- void
- zone_reset \201\202;
-
- short
- zone_hours \201\202 const;
-
- void
- zone_hours \201short\202;
-
- short
- zone_minutes \201\202 const;
-
- void
- zone_minutes \201short\202;
-};
-
-bool
-operator== \201const time_zone&, const time_zone&\202;
-
-bool
-operator!= \201const time_zone&, const time_zone&\202;)RP(
-
- )0 P(The )SM(zone_present\201\202)ES( acces)HY(sor)YH( func)HY(tion)YH( returns )SM(true)ES(
- if the time zone is spec)HY(i)HY(fied)YH(. The )SM(zone_reset\201\202)ES( modi)HY(fier)YH(
- func)HY(tion)YH( resets the time zone object to the )EM(not spec)HY(i)HY(fied)YH()ES(
- state. If the time zone offset is nega)HY(tive)YH( then both hours and
- minutes compo)HY(nents)YH( are repre)HY(sented)YH( as nega)HY(tive)YH( inte)HY(gers)YH(.)EP(
-
-
- )0 2 26 H(2.5.8)WB 123 Sn()WB 30 Sn( Mapping for )SM(date)ES()EA()EH(
-
- )0 P(The XML Schema )SM(date)ES( built-in data type is mapped to the
- )SM(xml_schema::date)ES( C++ class which repre)HY(sents)YH( a year, a day,
- and a month with an optional time zone. Its inter)HY(face)YH( is presented
- below. For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 29 1 A(Section 2.5.7, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")29 0 TN TL()Ec /AF f D(.)EP(
-
- ) 41 60 PR(class date: public simple_type, public time_zone
-{
-public:
- date \201int year, unsigned short month, unsigned short day\202;
- date \201int year, unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes\202;
-
-public:
- date \201const date&\202;
-
- date&
- operator= \201const date&\202;
-
- virtual date*
- _clone \201\202 const;
-
-public:
- int
- year \201\202 const;
-
- void
- year \201int\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-
- unsigned short
- day \201\202 const;)WR(
-
- void
- day \201unsigned short\202;
-};
-
-bool
-operator== \201const date&, const date&\202;
-
-bool
-operator!= \201const date&, const date&\202;)RP(
-
- )0 2 27 H(2.5.9)WB 124 Sn()WB 31 Sn( Mapping for )SM(date)HY(Time)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(date)HY(Time)YH()ES( built-in data type is mapped to the
- )SM(xml_schema::date_time)ES( C++ class which repre)HY(sents)YH( a year, a month,
- a day, hours, minutes, and seconds with an optional time zone. Its inter)HY(face)YH(
- is presented below. For more infor)HY(ma)HY(tion)YH( on the base
- )SM(xml_schema::time_zone)ES( class refer to )0 29 1 A(Section
- 2.5.7, "Time Zone Repre)HY(sen)HY(ta)HY(tion)YH(")29 0 TN TL()Ec /AF f D(.)EP(
-
- ) 62 67 PR(class date_time: public simple_type, public time_zone
-{
-public:
- date_time \201int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds\202;
-
- date_time \201int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds, short zone_hours, short zone_minutes\202;
-public:
- date_time \201const date_time&\202;
-
- date_time&
- operator= \201const date_time&\202;
-
- virtual date_time*
- _clone \201\202 const;
-
-public:
- int
- year \201\202 const;
-
- void
- year \201int\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;)WR(
-
- unsigned short
- day \201\202 const;
-
- void
- day \201unsigned short\202;
-
- unsigned short
- hours \201\202 const;
-
- void
- hours \201unsigned short\202;
-
- unsigned short
- minutes \201\202 const;
-
- void
- minutes \201unsigned short\202;
-
- double
- seconds \201\202 const;
-
- void
- seconds \201double\202;
-};
-
-bool
-operator== \201const date_time&, const date_time&\202;
-
-bool)WR(
-operator!= \201const date_time&, const date_time&\202;)RP(
-
-
- )0 2 28 H(2.5.10)WB 125 Sn()WB 32 Sn( Mapping for )SM(dura)HY(tion)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(dura)HY(tion)YH()ES( built-in data type is mapped to the
- )SM(xml_schema::dura)HY(tion)YH()ES( C++ class which repre)HY(sents)YH( a poten)HY(tially)YH(
- nega)HY(tive)YH( dura)HY(tion)YH( in the form of years, months, days, hours, minutes,
- and seconds. Its inter)HY(face)YH( is presented below.)EP(
-
- ) 64 71 PR(class duration: public simple_type
-{
-public:
- duration \201bool negative,
- unsigned int years, unsigned int months, unsigned int days,
- unsigned int hours, unsigned int minutes, double seconds\202;
-public:
- duration \201const duration&\202;
-
- duration&
- operator= \201const duration&\202;
-
- virtual duration*
- _clone \201\202 const;
-
-public:
- bool
- negative \201\202 const;
-
- void
- negative \201bool\202;
-
- unsigned int
- years \201\202 const;
-
- void
- years \201unsigned int\202;
-
- unsigned int
- months \201\202 const;
-)WR(
- void
- months \201unsigned int\202;
-
- unsigned int
- days \201\202 const;
-
- void
- days \201unsigned int\202;
-
- unsigned int
- hours \201\202 const;
-
- void
- hours \201unsigned int\202;
-
- unsigned int
- minutes \201\202 const;
-
- void
- minutes \201unsigned int\202;
-
- double
- seconds \201\202 const;
-
- void
- seconds \201double\202;
-};
-
-bool
-operator== \201const duration&, const duration&\202;)WR(
-
-bool
-operator!= \201const duration&, const duration&\202;)RP(
-
-
- )0 2 29 H(2.5.11)WB 126 Sn()WB 33 Sn( Mapping for )SM(gDay)ES()EA()EH(
-
- )0 P(The XML Schema )SM(gDay)ES( built-in data type is mapped to the
- )SM(xml_schema::gday)ES( C++ class which repre)HY(sents)YH( a day of the
- month with an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 29 1 A(Section 2.5.7, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")29 0 TN TL()Ec /AF f D(.)EP(
-
- ) 29 66 PR(class gday: public simple_type, public time_zone
-{
-public:
- explicit
- gday \201unsigned short day\202;
- gday \201unsigned short day, short zone_hours, short zone_minutes\202;
-
-public:
- gday \201const gday&\202;
-
- gday&
- operator= \201const gday&\202;
-
- virtual gday*
- _clone \201\202 const;
-
-public:
- unsigned short
- day \201\202 const;
-
- void
- day \201unsigned short\202;
-};
-
-bool
-operator== \201const gday&, const gday&\202;
-
-bool
-operator!= \201const gday&, const gday&\202;)RP(
-
-
- )0 2 30 H(2.5.12)WB 127 Sn()WB 34 Sn( Mapping for )SM(gMonth)ES()EA()EH(
-
- )0 P(The XML Schema )SM(gMonth)ES( built-in data type is mapped to the
- )SM(xml_schema::gmonth)ES( C++ class which repre)HY(sents)YH( a month of the
- year with an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 29 1 A(Section 2.5.7, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")29 0 TN TL()Ec /AF f D(.)EP(
-
- ) 30 50 PR(class gmonth: public simple_type, public time_zone
-{
-public:
- explicit
- gmonth \201unsigned short month\202;
- gmonth \201unsigned short month,
- short zone_hours, short zone_minutes\202;
-
-public:
- gmonth \201const gmonth&\202;
-
- gmonth&
- operator= \201const gmonth&\202;
-
- virtual gmonth*
- _clone \201\202 const;
-
-public:
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-};
-
-bool
-operator== \201const gmonth&, const gmonth&\202;
-
-bool
-operator!= \201const gmonth&, const gmonth&\202;)RP(
-
-
- )0 2 31 H(2.5.13)WB 128 Sn()WB 35 Sn( Mapping for )SM(gMon)HY(th)HY(Day)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(gMon)HY(th)HY(Day)YH()ES( built-in data type is mapped to the
- )SM(xml_schema::gmonth_day)ES( C++ class which repre)HY(sents)YH( a day and
- a month of the year with an optional time zone. Its inter)HY(face)YH( is presented
- below. For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 29 1 A(Section 2.5.7, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")29 0 TN TL()Ec /AF f D(.)EP(
-
- ) 35 56 PR(class gmonth_day: public simple_type, public time_zone
-{
-public:
- gmonth_day \201unsigned short month, unsigned short day\202;
- gmonth_day \201unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes\202;
-
-public:
- gmonth_day \201const gmonth_day&\202;
-
- gmonth_day&
- operator= \201const gmonth_day&\202;
-
- virtual gmonth_day*
- _clone \201\202 const;
-
-public:
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-
- unsigned short
- day \201\202 const;
-
- void
- day \201unsigned short\202;
-};
-
-bool)WR(
-operator== \201const gmonth_day&, const gmonth_day&\202;
-
-bool
-operator!= \201const gmonth_day&, const gmonth_day&\202;)RP(
-
-
- )0 2 32 H(2.5.14)WB 129 Sn()WB 36 Sn( Mapping for )SM(gYear)ES()EA()EH(
-
- )0 P(The XML Schema )SM(gYear)ES( built-in data type is mapped to the
- )SM(xml_schema::gyear)ES( C++ class which repre)HY(sents)YH( a year with
- an optional time zone. Its inter)HY(face)YH( is presented below. For more
- infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES( class refer
- to )0 29 1 A(Section 2.5.7, "Time Zone Repre)HY(sen)HY(ta)HY(tion)YH(")29 0 TN TL()Ec /AF f D(.)EP(
-
- ) 29 57 PR(class gyear: public simple_type, public time_zone
-{
-public:
- explicit
- gyear \201int year\202;
- gyear \201int year, short zone_hours, short zone_minutes\202;
-
-public:
- gyear \201const gyear&\202;
-
- gyear&
- operator= \201const gyear&\202;
-
- virtual gyear*
- _clone \201\202 const;
-
-public:
- int
- year \201\202 const;
-
- void
- year \201int\202;
-};
-
-bool
-operator== \201const gyear&, const gyear&\202;
-
-bool
-operator!= \201const gyear&, const gyear&\202;)RP(
-
-
- )0 2 33 H(2.5.15)WB 130 Sn()WB 37 Sn( Mapping for )SM(gYear)HY(Month)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(gYear)HY(Month)YH()ES( built-in data type is mapped to
- the )SM(xml_schema::gyear_month)ES( C++ class which repre)HY(sents)YH(
- a year and a month with an optional time zone. Its inter)HY(face)YH( is presented
- below. For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 29 1 A(Section 2.5.7, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")29 0 TN TL()Ec /AF f D(.)EP(
-
- ) 34 55 PR(class gyear_month: public simple_type, public time_zone
-{
-public:
- gyear_month \201int year, unsigned short month\202;
- gyear_month \201int year, unsigned short month,
- short zone_hours, short zone_minutes\202;
-public:
- gyear_month \201const gyear_month&\202;
-
- gyear_month&
- operator= \201const gyear_month&\202;
-
- virtual gyear_month*
- _clone \201\202 const;
-
-public:
- int
- year \201\202 const;
-
- void
- year \201int\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-};
-
-bool
-operator== \201const gyear_month&, const gyear_month&\202;)WR(
-
-bool
-operator!= \201const gyear_month&, const gyear_month&\202;)RP(
-
-
- )0 2 34 H(2.5.16)WB 131 Sn()WB 38 Sn( Mapping for )SM(time)ES()EA()EH(
-
- )0 P(The XML Schema )SM(time)ES( built-in data type is mapped to
- the )SM(xml_schema::time)ES( C++ class which repre)HY(sents)YH( hours,
- minutes, and seconds with an optional time zone. Its inter)HY(face)YH( is
- presented below. For more infor)HY(ma)HY(tion)YH( on the base
- )SM(xml_schema::time_zone)ES( class refer to
- )0 29 1 A(Section 2.5.7, "Time Zone Repre)HY(sen)HY(ta)HY(tion)YH(")29 0 TN TL()Ec /AF f D(.)EP(
-
- ) 41 70 PR(class time: public simple_type, public time_zone
-{
-public:
- time \201unsigned short hours, unsigned short minutes, double seconds\202;
- time \201unsigned short hours, unsigned short minutes, double seconds,
- short zone_hours, short zone_minutes\202;
-
-public:
- time \201const time&\202;
-
- time&
- operator= \201const time&\202;
-
- virtual time*
- _clone \201\202 const;
-
-public:
- unsigned short
- hours \201\202 const;
-
- void
- hours \201unsigned short\202;
-
- unsigned short
- minutes \201\202 const;
-
- void
- minutes \201unsigned short\202;
-
- double
- seconds \201\202 const;)WR(
-
- void
- seconds \201double\202;
-};
-
-bool
-operator== \201const time&, const time&\202;
-
-bool
-operator!= \201const time&, const time&\202;)RP(
-
-
-
-
- )0 2 35 H(2.6)WB 132 Sn()WB 39 Sn( Mapping for Simple Types)EA()EH(
-
- )0 P(An XML Schema simple type is mapped to a C++ class with the same
- name as the simple type. The class defines a public copy construc)HY(tor)YH(,
- a public copy assign)HY(ment)YH( oper)HY(a)HY(tor)YH(, and a public virtual
- )SM(_clone)ES( func)HY(tion)YH(. The )SM(_clone)ES( func)HY(tion)YH( is
- declared )SM(const)ES(, does not take any argu)HY(ments)YH(, and returns
- a pointer to a complete copy of the instance allo)HY(cated)YH( in the free
- store. The )SM(_clone)ES( func)HY(tion)YH( shall be used to make copies
- when static type and dynamic type of the instance may differ \201see
- )0 56 1 A(Section 2.11, "Mapping for )SM(xsi:type)ES(
- and Substi)HY(tu)HY(tion)YH( Groups")56 0 TN TL()Ec /AF f D(\202. For instance:)EP(
-
- ) 3 26 PR(<simpleType name="object">
- ...
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 16 28 PR(class object: ...
-{
-public:
- object \201const object&\202;
-
-public:
- object&
- operator= \201const object&\202;
-
-public:
- virtual object*
- _clone \201\202 const;
-
- ...
-
-};)RP(
-
- )0 P(The base class spec)HY(i)HY(fi)HY(ca)HY(tion)YH( and the rest of the class defi)HY(ni)HY(tion)YH(
- depend on the type of deriva)HY(tion)YH( used to define the simple type. )EP(
-
-
- )0 3 36 H(2.6.1)WB 133 Sn()WB 40 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()EA()EH(
-
- )0 P(XML Schema deriva)HY(tion)YH( by restric)HY(tion)YH( is mapped to C++ public
- inher)HY(i)HY(tance)YH(. The base type of the restric)HY(tion)YH( becomes the base
- type for the result)HY(ing)YH( C++ class. In addi)HY(tion)YH( to the members described
- in )0 39 1 A(Section 2.6, "Mapping for Simple Types")39 0 TN TL()Ec /AF f D(, the
- result)HY(ing)YH( C++ class defines a public construc)HY(tor)YH( with the base type
- as its single argu)HY(ment)YH(. For instance:)EP(
-
- ) 5 27 PR(<simpleType name="object">
- <restriction base="base">
- ...
- </restriction>
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 14 28 PR(class object: public base
-{
-public:
- object \201const base&\202;
- object \201const object&\202;
-
-public:
- object&
- operator= \201const object&\202;
-
-public:
- virtual object*
- _clone \201\202 const;
-};)RP(
-
-
- )0 3 37 H(2.6.2)WB 134 Sn()WB 41 Sn( Mapping for Enumer)HY(a)HY(tions)YH()EA()EH(
-
-)0 P(XML Schema restric)HY(tion)YH( by enumer)HY(a)HY(tion)YH( is mapped to a C++ class
- with seman)HY(tics)YH( similar to C++ )SM(enum)ES(. Each XML Schema
- enumer)HY(a)HY(tion)YH( element is mapped to a C++ enumer)HY(a)HY(tor)YH( with the
- name derived from the )SM(value)ES( attribute and defined
- in the class scope. In addi)HY(tion)YH( to the members
- described in )0 39 1 A(Section 2.6, "Mapping for Simple Types")39 0 TN TL()Ec /AF f D(,
- the result)HY(ing)YH( C++ class defines a public construc)HY(tor)YH( that can be called
- with one of the enumer)HY(a)HY(tors)YH( as its single argu)HY(ment)YH(, a public construc)HY(tor)YH(
- that can be called with enumer)HY(a)HY(tion)YH('s base value as its single
- argu)HY(ment)YH(, a public assign)HY(ment)YH( oper)HY(a)HY(tor)YH( that can be used to assign the
- value of one of the enumer)HY(a)HY(tors)YH(, and a public implicit conver)HY(sion)YH(
- oper)HY(a)HY(tor)YH( to the under)HY(ly)HY(ing)YH( C++ enum type.)EP(
-
-)0 P(Further)HY(more)YH(, for string-based enumer)HY(a)HY(tion)YH( types, the result)HY(ing)YH( C++
- class defines a public construc)HY(tor)YH( with a single argu)HY(ment)YH( of type
- )SM(const C*)ES( and a public construc)HY(tor)YH( with a single
- argu)HY(ment)YH( of type )SM(const std::basic_string<C>&)ES(.
- For instance:)EP(
-
- ) 7 32 PR(<simpleType name="color">
- <restriction base="string">
- <enumeration value="red"/>
- <enumeration value="green"/>
- <enumeration value="blue"/>
- </restriction>
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 31 38 PR(class color: public xml_schema::string
-{
-public:
- enum value
- {
- red,
- green,
- blue
- };
-
-public:
- color \201value\202;
- color \201const C*\202;
- color \201const std::basic_string<C>&\202;
- color \201const xml_schema::string&\202;
- color \201const color&\202;
-
-public:
- color&
- operator= \201value\202;
-
- color&
- operator= \201const color&\202;
-
-public:
- virtual color*
- _clone \201\202 const;
-
-public:
- operator value \201\202 const;
-};)WR()RP(
-
- )0 3 38 H(2.6.3)WB 135 Sn()WB 42 Sn( Mapping for Deriva)HY(tion)YH( by List)EA()EH(
-
- )0 P(XML Schema deriva)HY(tion)YH( by list is mapped to C++ public
- inher)HY(i)HY(tance)YH( from )SM(xml_schema::simple_type)ES(
- \201)0 25 1 A(Section 2.5.3, "Mapping for
- )SM(anySim)HY(ple)HY(Type)YH()ES(")25 0 TN TL()Ec /AF f D(\202 and a suit)HY(able)YH( sequence type.
- The list item type becomes the element type of the sequence.
- In addi)HY(tion)YH( to the members described in )0 39 1 A(Section 2.6,
- "Mapping for Simple Types")39 0 TN TL()Ec /AF f D(, the result)HY(ing)YH( C++ class defines
- a public default construc)HY(tor)YH(, a public construc)HY(tor)YH(
- with the first argu)HY(ment)YH( of type )SM(size_type)ES( and
- the second argu)HY(ment)YH( of list item type that creates
- a list object with the spec)HY(i)HY(fied)YH( number of copies of the spec)HY(i)HY(fied)YH(
- element value, and a public construc)HY(tor)YH( with the two argu)HY(ments)YH(
- of an input iter)HY(a)HY(tor)YH( type that creates a list object from an
- iter)HY(a)HY(tor)YH( range. For instance:
- )EP(
-
- ) 3 28 PR(<simpleType name="int_list">
- <list itemType="int"/>
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 19 42 PR(class int_list: public simple_type,
- public sequence<int>
-{
-public:
- int_list \201\202;
- int_list \201size_type n, int x\202;
-
- template <typename I>
- int_list \201const I& begin, const I& end\202;
- int_list \201const int_list&\202;
-
-public:
- int_list&
- operator= \201const int_list&\202;
-
-public:
- virtual int_list*
- _clone \201\202 const;
-};)RP(
-
- )0 P(The )SM(sequence)ES( class template is defined in an
- imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH(. It conforms to the
- sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
- C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202.
- Prac)HY(ti)HY(cally)YH(, this means that you can treat such a sequence
- as if it was )SM(std::vector)ES(. One notable exten)HY(sion)YH(
- to the stan)HY(dard)YH( inter)HY(face)YH( that is avail)HY(able)YH( only for
- sequences of non-funda)HY(men)HY(tal)YH( C++ types is the addi)HY(tion)YH( of
- the over)HY(loaded)YH( )SM(push_back)ES( and )SM(insert)ES(
- member func)HY(tions)YH( which instead of the constant refer)HY(ence)YH(
- to the element type accept auto)HY(matic)YH( pointer \201)SM(std::auto_ptr)ES(
- or )SM(std::unique_ptr)ES(, depend)HY(ing)YH( on the C++ stan)HY(dard)YH(
- selected\202 to the element type. These func)HY(tions)YH( assume owner)HY(ship)YH(
- of the pointed to object and reset the passed auto)HY(matic)YH( pointer.
- )EP(
-
- )0 3 39 H(2.6.4)WB 136 Sn()WB 43 Sn( Mapping for Deriva)HY(tion)YH( by Union)EA()EH(
-
- )0 P(XML Schema deriva)HY(tion)YH( by union is mapped to C++ public
- inher)HY(i)HY(tance)YH( from )SM(xml_schema::simple_type)ES(
- \201)0 25 1 A(Section 2.5.3, "Mapping for
- )SM(anySim)HY(ple)HY(Type)YH()ES(")25 0 TN TL()Ec /AF f D(\202 and )SM(std::basic_string<C>)ES(.
- In addi)HY(tion)YH( to the members described in )0 39 1 A(Section 2.6,
- "Mapping for Simple Types")39 0 TN TL()Ec /AF f D(, the result)HY(ing)YH( C++ class defines a
- public construc)HY(tor)YH( with a single argu)HY(ment)YH( of type )SM(const C*)ES(
- and a public construc)HY(tor)YH( with a single argu)HY(ment)YH( of type
- )SM(const std::basic_string<C>&)ES(. For instance:
- )EP(
-
- ) 3 47 PR(<simpleType name="int_string_union">
- <xsd:union memberTypes="xsd:int xsd:string"/>
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 16 51 PR(class int_string_union: public simple_type,
- public std::basic_string<C>
-{
-public:
- int_string_union \201const C*\202;
- int_string_union \201const std::basic_string<C>&\202;
- int_string_union \201const int_string_union&\202;
-
-public:
- int_string_union&
- operator= \201const int_string_union&\202;
-
-public:
- virtual int_string_union*
- _clone \201\202 const;
-};)RP(
-
- )0 2 40 H(2.7)WB 137 Sn()WB 44 Sn( Mapping for Complex Types)EA()EH(
-
- )0 P(An XML Schema complex type is mapped to a C++ class with the same
- name as the complex type. The class defines a public copy construc)HY(tor)YH(,
- a public copy assign)HY(ment)YH( oper)HY(a)HY(tor)YH(, and a public virtual
- )SM(_clone)ES( func)HY(tion)YH(. The )SM(_clone)ES( func)HY(tion)YH( is
- declared )SM(const)ES(, does not take any argu)HY(ments)YH(, and returns
- a pointer to a complete copy of the instance allo)HY(cated)YH( in the free
- store. The )SM(_clone)ES( func)HY(tion)YH( shall be used to make copies
- when static type and dynamic type of the instance may differ \201see
- )0 56 1 A(Section 2.11, "Mapping for )SM(xsi:type)ES(
- and Substi)HY(tu)HY(tion)YH( Groups")56 0 TN TL()Ec /AF f D(\202.)EP(
-
- )0 P(Addi)HY(tion)HY(ally)YH(, the result)HY(ing)YH( C++ class
- defines two public construc)HY(tors)YH( that take an initial)HY(izer)YH( for each
- member of the complex type and all its base types that belongs to
- the One cardi)HY(nal)HY(ity)YH( class \201see )0 47 1 A(Section 2.8, "Mapping
- for Local Elements and Attributes")47 0 TN TL()Ec /AF f D(\202. In the first construc)HY(tor)YH(,
- the argu)HY(ments)YH( are passed as constant refer)HY(ences)YH( and the newly created
- instance is initial)HY(ized)YH( with copies of the passed objects. In the
- second construc)HY(tor)YH(, argu)HY(ments)YH( that are complex types \201that is,
- they them)HY(selves)YH( contain elements or attributes\202 are passed as
- either )SM(std::auto_ptr)ES( \201C++98\202 or )SM(std::unique_ptr)ES(
- \201C++11\202, depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected. In this case the newly
- created instance is directly initial)HY(ized)YH( with and assumes owner)HY(ship)YH(
- of the pointed to objects and the )SM(std::[auto|unique]_ptr)ES(
- argu)HY(ments)YH( are reset to )SM(0)ES(. For instance:)EP(
-
- ) 15 66 PR(<complexType name="complex">
- <sequence>
- <element name="a" type="int"/>
- <element name="b" type="string"/>
- </sequence>
-</complexType>
-
-<complexType name="object">
- <sequence>
- <element name="s-one" type="boolean"/>
- <element name="c-one" type="complex"/>
- <element name="optional" type="int" minOccurs="0"/>
- <element name="sequence" type="string" maxOccurs="unbounded"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 36 68 PR(class complex: public xml_schema::type
-{
-public:
- object \201const int& a, const xml_schema::string& b\202;
- object \201const complex&\202;
-
-public:
- object&
- operator= \201const complex&\202;
-
-public:
- virtual complex*
- _clone \201\202 const;
-
- ...
-
-};
-
-class object: public xml_schema::type
-{
-public:
- object \201const bool& s_one, const complex& c_one\202;
- object \201const bool& s_one, std::[auto|unique]_ptr<complex> c_one\202;
- object \201const object&\202;
-
-public:
- object&
- operator= \201const object&\202;
-
-public:
- virtual object*)WR(
- _clone \201\202 const;
-
- ...
-
-};)RP(
-
- )0 P(Notice that the gener)HY(ated)YH( )SM(complex)ES( class does not
- have the second \201)SM(std::[auto|unique]_ptr)ES(\202 version of the
- construc)HY(tor)YH( since all its required members are of simple types.)EP(
-
- )0 P(If an XML Schema complex type has an ulti)HY(mate)YH( base which is an XML
- Schema simple type then the result)HY(ing)YH( C++ class also defines a public
- construc)HY(tor)YH( that takes an initial)HY(izer)YH( for the base type as well as
- for each member of the complex type and all its base types that
- belongs to the One cardi)HY(nal)HY(ity)YH( class. For instance:)EP(
-
- ) 7 61 PR(<complexType name="object">
- <simpleContent>
- <extension base="date">
- <attribute name="lang" type="language" use="required"/>
- </extension>
- </simpleContent>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 11 44 PR(class object: public xml_schema::string
-{
-public:
- object \201const xml_schema::language& lang\202;
-
- object \201const xml_schema::date& base,
- const xml_schema::language& lang\202;
-
- ...
-
-};)RP(
-
- )0 P(Further)HY(more)YH(, for string-based XML Schema complex types, the result)HY(ing)YH( C++
- class also defines two public construc)HY(tors)YH( with the first argu)HY(ments)YH(
- of type )SM(const C*)ES( and )SM(std::basic_string<C>&)ES(,
- respec)HY(tively)YH(, followed by argu)HY(ments)YH( for each member of the complex
- type and all its base types that belongs to the One cardi)HY(nal)HY(ity)YH(
- class. For enumer)HY(a)HY(tion)YH(-based complex types the result)HY(ing)YH( C++
- class also defines a public construc)HY(tor)YH( with the first argu)HY(ments)YH(
- of the under)HY(ly)HY(ing)YH( enum type followed by argu)HY(ments)YH( for each member
- of the complex type and all its base types that belongs to the One
- cardi)HY(nal)HY(ity)YH( class. For instance:)EP(
-
- ) 15 61 PR(<simpleType name="color">
- <restriction base="string">
- <enumeration value="red"/>
- <enumeration value="green"/>
- <enumeration value="blue"/>
- </restriction>
-</simpleType>
-
-<complexType name="object">
- <simpleContent>
- <extension base="color">
- <attribute name="lang" type="language" use="required"/>
- </extension>
- </simpleContent>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 37 44 PR(class color: public xml_schema::string
-{
-public:
- enum value
- {
- red,
- green,
- blue
- };
-
-public:
- color \201value\202;
- color \201const C*\202;
- color \201const std::basic_string<C>&\202;
-
- ...
-
-};
-
-class object: color
-{
-public:
- object \201const color& base,
- const xml_schema::language& lang\202;
-
- object \201const color::value& base,
- const xml_schema::language& lang\202;
-
- object \201const C* base,
- const xml_schema::language& lang\202;
-)WR(
- object \201const std::basic_string<C>& base,
- const xml_schema::language& lang\202;
-
- ...
-
-};)RP(
-
- )0 P(Addi)HY(tional)YH( construc)HY(tors)YH( can be requested with the
- )SM(--gener)HY(ate)YH(-default-ctor)ES( and
- )SM(--gener)HY(ate)YH(-from-base-ctor)ES( options. See the
- )R8 2 A(XSD
- Compiler Command Line Manual)EA( for details.)EP(
-
- )0 P(If an XML Schema complex type is not explic)HY(itly)YH( derived from any type,
- the result)HY(ing)YH( C++ class is derived from )SM(xml_schema::type)ES(.
- In cases where an XML Schema complex type is defined using deriva)HY(tion)YH(
- by exten)HY(sion)YH( or restric)HY(tion)YH(, the result)HY(ing)YH( C++ base class spec)HY(i)HY(fi)HY(ca)HY(tion)YH(
- depends on the type of deriva)HY(tion)YH( and is described in the subse)HY(quent)YH(
- sections.
- )EP(
-
- )0 P(The mapping for elements and attributes that are defined in a complex
- type is described in )0 47 1 A(Section 2.8, "Mapping for Local
- Elements and Attributes")47 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 3 41 H(2.7.1)WB 138 Sn()WB 45 Sn( Mapping for Deriva)HY(tion)YH( by Exten)HY(sion)YH()EA()EH(
-
- )0 P(XML Schema deriva)HY(tion)YH( by exten)HY(sion)YH( is mapped to C++ public
- inher)HY(i)HY(tance)YH(. The base type of the exten)HY(sion)YH( becomes the base
- type for the result)HY(ing)YH( C++ class.
- )EP(
-
- )0 3 42 H(2.7.2)WB 139 Sn()WB 46 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()EA()EH(
-
- )0 P(XML Schema deriva)HY(tion)YH( by restric)HY(tion)YH( is mapped to C++ public
- inher)HY(i)HY(tance)YH(. The base type of the restric)HY(tion)YH( becomes the base
- type for the result)HY(ing)YH( C++ class. XML Schema elements and
- attributes defined within restric)HY(tion)YH( do not result in any
- defi)HY(ni)HY(tions)YH( in the result)HY(ing)YH( C++ class. Instead, corre)HY(spond)HY(ing)YH(
- \201unre)HY(stricted)YH(\202 defi)HY(ni)HY(tions)YH( are inher)HY(ited)YH( from the base class.
- In the future versions of this mapping, such elements and
- attributes may result in redef)HY(i)HY(ni)HY(tions)YH( of acces)HY(sors)YH( and
- modi)HY(fiers)YH( to reflect their restricted seman)HY(tics)YH(.
- )EP(
-
-
-
- )0 2 43 H(2.8)WB 140 Sn()WB 47 Sn( Mapping for Local Elements and Attributes)EA()EH(
-
- )0 P(XML Schema element and attribute defi)HY(ni)HY(tions)YH( are called local
- if they appear within a complex type defi)HY(ni)HY(tion)YH(, an element group
- defi)HY(ni)HY(tion)YH(, or an attribute group defi)HY(ni)HY(tions)YH(.
- )EP(
-
- )0 P(Local XML Schema element and attribute defi)HY(ni)HY(tions)YH( have the same
- C++ mapping. There)HY(fore)YH(, in this section, local elements and
- attributes are collec)HY(tively)YH( called members.
- )EP(
-
- )0 P(While there are many differ)HY(ent)YH( member cardi)HY(nal)HY(ity)YH( combi)HY(na)HY(tions)YH(
- \201deter)HY(mined)YH( by the )SM(use)ES( attribute for attributes and
- the )SM(minOc)HY(curs)YH()ES( and )SM(maxOc)HY(curs)YH()ES( attributes
- for elements\202, the mapping divides all possi)HY(ble)YH( cardi)HY(nal)HY(ity)YH(
- combi)HY(na)HY(tions)YH( into three cardi)HY(nal)HY(ity)YH( classes:
- )EP(
-
- )0 DL( )0 DT()I(one)ES(
- )DD(attributes: )SM(use == "required")ES(
- )DD(attributes: )SM(use == "optional")ES( and has default or fixed value
- )DD(elements: )SM(minOc)HY(curs)YH( == "1")ES( and )SM(maxOc)HY(curs)YH( == "1")ES(
-
- )0 DT()I(optional)ES(
- )DD(attributes: )SM(use == "optional")ES( and doesn't have default or fixed value
- )DD(elements: )SM(minOc)HY(curs)YH( == "0")ES( and )SM(maxOc)HY(curs)YH( == "1")ES(
-
- )0 DT()I(sequence)ES(
- )DD(elements: )SM(maxOc)HY(curs)YH( > "1")ES(
- )LD(
-
- )0 P(An optional attribute with a default or fixed value acquires this value
- if the attribute hasn't been spec)HY(i)HY(fied)YH( in an instance docu)HY(ment)YH( \201see
- )0 95 1 A(Appendix A, "Default and Fixed Values")95 0 TN TL()Ec /AF f D(\202. This
- mapping places such optional attributes to the One cardi)HY(nal)HY(ity)YH(
- class.)EP(
-
- )0 P(A member is mapped to a set of public type defi)HY(ni)HY(tions)YH(
- \201)SM(typedef)ES(s\202 and a set of public acces)HY(sor)YH( and modi)HY(fier)YH(
- func)HY(tions)YH(. Type defi)HY(ni)HY(tions)YH( have names derived from the member's
- name. The acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( have the same name as the
- member. For example:
- )EP(
-
- ) 5 42 PR(<complexType name="object">
- <sequence>
- <element name="member" type="string"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 11 41 PR(class object: public xml_schema::type
-{
-public:
- typedef xml_schema::string member_type;
-
- const member_type&
- member \201\202 const;
-
- ...
-
-};)RP(
-
- )0 P(In addi)HY(tion)YH(, if a member has a default or fixed value, a static
- acces)HY(sor)YH( func)HY(tion)YH( is gener)HY(ated)YH( that returns this value. For
- example:)EP(
-
-) 3 55 PR(<complexType name="object">
- <attribute name="data" type="string" default="test"/>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 14 39 PR(class object: public xml_schema::type
-{
-public:
- typedef xml_schema::string data_type;
-
- const data_type&
- data \201\202 const;
-
- static const data_type&
- data_default_value \201\202;
-
- ...
-
-};)RP(
-
- )0 P(Names and seman)HY(tics)YH( of type defi)HY(ni)HY(tions)YH( for the member as well
- as signa)HY(tures)YH( of the acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( depend on
- the member's cardi)HY(nal)HY(ity)YH( class and are described in the follow)HY(ing)YH(
- sub-sections.
- )EP(
-
-
- )0 3 44 H(2.8.1)WB 141 Sn()WB 48 Sn( Mapping for Members with the One Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For the One cardi)HY(nal)HY(ity)YH( class, the type defi)HY(ni)HY(tions)YH( consist of
- an alias for the member's type with the name created by append)HY(ing)YH(
- the )SM(_type)ES( suffix to the member's name.
- )EP(
-
- )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
- member and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the member and can
- be used for read-write access.
- )EP(
-
- )0 P(The first modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
- constant of the member's type. It makes a deep copy of its argu)HY(ment)YH(.
- Except for member's types that are mapped to funda)HY(men)HY(tal)YH( C++ types,
- the second modi)HY(fier)YH( func)HY(tion)YH( is provided that expects an argu)HY(ment)YH(
- of type auto)HY(matic)YH( pointer \201)SM(std::auto_ptr)ES( or
- )SM(std::unique_ptr)ES(, depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected\202
- to the member's type. It assumes owner)HY(ship)YH( of the pointed to object
- and resets the passed auto)HY(matic)YH( pointer. For instance:)EP(
-
- ) 5 42 PR(<complexType name="object">
- <sequence>
- <element name="member" type="string"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 25 47 PR(class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef xml_schema::string member_type;
-
- // Accessors.
- //
- const member_type&
- member \201\202 const;
-
- member_type&
- member \201\202;
-
- // Modifiers.
- //
- void
- member \201const member_type&\202;
-
- void
- member \201std::[auto|unique]_ptr<member_type>\202;
- ...
-
-};)RP(
-
- )0 P(In addi)HY(tion)YH(, if requested by spec)HY(i)HY(fy)HY(ing)YH( the )SM(--gener)HY(ate)YH(-detach)ES(
- option and only for members of non-funda)HY(men)HY(tal)YH( C++ types, the mapping
- provides a detach func)HY(tion)YH( that returns an auto)HY(matic)YH( pointer to the
- member's type, for example:)EP(
-
- ) 10 37 PR(class object: public xml_schema::type
-{
-public:
- ...
-
- std::[auto|unique]_ptr<member_type>
- detach_member \201\202;
- ...
-
-};)RP(
-
- )0 P(This func)HY(tion)YH( detaches the value from the tree leaving the member
- value unini)HY(tial)HY(ized)YH(. Access)HY(ing)YH( such an unini)HY(tial)HY(ized)YH( value prior to
- re-initial)HY(iz)HY(ing)YH( it results in unde)HY(fined)YH( behav)HY(ior)YH(.)EP(
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 25 66 PR(void
-f \201object& o\202
-{
- using xml_schema::string;
-
- string s \201o.member \201\202\202; // get
- object::member_type& sr \201o.member \201\202\202; // get
-
- o.member \201"hello"\202; // set, deep copy
- o.member \201\202 = "hello"; // set, deep copy
-
- // C++98 version.
- //
- std::auto_ptr<string> p \201new string \201"hello"\202\202;
- o.member \201p\202; // set, assumes ownership
- p = o.detach_member \201\202; // detach, member is uninitialized
- o.member \201p\202; // re-attach
-
- // C++11 version.
- //
- std::unique_ptr<string> p \201new string \201"hello"\202\202;
- o.member \201std::move \201p\202\202; // set, assumes ownership
- p = o.detach_member \201\202; // detach, member is uninitialized
- o.member \201std::move \201p\202\202; // re-attach
-})RP(
-
-
-)0 3 45 H(2.8.2)WB 142 Sn()WB 49 Sn( Mapping for Members with the Optional Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For the Optional cardi)HY(nal)HY(ity)YH( class, the type defi)HY(ni)HY(tions)YH( consist of
- an alias for the member's type with the name created by append)HY(ing)YH(
- the )SM(_type)ES( suffix to the member's name and an alias for
- the container type with the name created by append)HY(ing)YH( the
- )SM(_optional)ES( suffix to the member's name.
- )EP(
-
- )0 P(Unlike acces)HY(sor)YH( func)HY(tions)YH( for the One cardi)HY(nal)HY(ity)YH( class, acces)HY(sor)YH(
- func)HY(tions)YH( for the Optional cardi)HY(nal)HY(ity)YH( class return refer)HY(ences)YH( to
- corre)HY(spond)HY(ing)YH( contain)HY(ers)YH( rather than directly to members. The
- acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to
- the container and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container
- and can be used for read-write access.
- )EP(
-
- )0 P(The modi)HY(fier)YH( func)HY(tions)YH( are over)HY(loaded)YH( for the member's
- type and the container type. The first modi)HY(fier)YH( func)HY(tion)YH(
- expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to constant of the
- member's type. It makes a deep copy of its argu)HY(ment)YH(.
- Except for member's types that are mapped to funda)HY(men)HY(tal)YH( C++ types,
- the second modi)HY(fier)YH( func)HY(tion)YH( is provided that expects an argu)HY(ment)YH(
- of type auto)HY(matic)YH( pointer \201)SM(std::auto_ptr)ES( or
- )SM(std::unique_ptr)ES(, depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected\202
- to the member's type. It assumes owner)HY(ship)YH( of the pointed to object
- and resets the passed auto)HY(matic)YH( pointer. The last modi)HY(fier)YH( func)HY(tion)YH(
- expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to constant of the container
- type. It makes a deep copy of its argu)HY(ment)YH(. For instance:
- )EP(
-
- ) 5 56 PR(<complexType name="object">
- <sequence>
- <element name="member" type="string" minOccurs="0"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 30 48 PR(class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef xml_schema::string member_type;
- typedef optional<member_type> member_optional;
-
- // Accessors.
- //
- const member_optional&
- member \201\202 const;
-
- member_optional&
- member \201\202;
-
- // Modifiers.
- //
- void
- member \201const member_type&\202;
-
- void
- member \201std::[auto|unique]_ptr<member_type>\202;
-
- void
- member \201const member_optional&\202;
-
- ...
-
-};)RP(
-
-
- )0 P(The )SM(optional)ES( class template is defined in an
- imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH( and has the follow)HY(ing)YH(
- inter)HY(face)YH(. The )SM([auto|unique]_ptr)ES(-based construc)HY(tor)YH(
- and modi)HY(fier)YH( func)HY(tion)YH( are only avail)HY(able)YH( if the template
- argu)HY(ment)YH( is not a funda)HY(men)HY(tal)YH( C++ type.
- )EP(
-
- ) 97 52 PR(template <typename X>
-class optional
-{
-public:
- optional \201\202;
-
- // Makes a deep copy.
- //
- explicit
- optional \201const X&\202;
-
- // Assumes ownership.
- //
- explicit
- optional \201std::[auto|unique]_ptr<X>\202;
-
- optional \201const optional&\202;
-
-public:
- optional&
- operator= \201const X&\202;
-
- optional&
- operator= \201const optional&\202;
-
- // Pointer-like interface.
- //
-public:
- const X*
- operator-> \201\202 const;
-)WR(
- X*
- operator-> \201\202;
-
- const X&
- operator* \201\202 const;
-
- X&
- operator* \201\202;
-
- typedef void \201optional::*bool_convertible\202 \201\202;
- operator bool_convertible \201\202 const;
-
- // Get/set interface.
- //
-public:
- bool
- present \201\202 const;
-
- const X&
- get \201\202 const;
-
- X&
- get \201\202;
-
- // Makes a deep copy.
- //
- void
- set \201const X&\202;
-
- // Assumes ownership.)WR(
- //
- void
- set \201std::[auto|unique]_ptr<X>\202;
-
- // Detach and return the contained value.
- //
- std::[auto|unique]_ptr<X>
- detach \201\202;
-
- void
- reset \201\202;
-};
-
-template <typename X>
-bool
-operator== \201const optional<X>&, const optional<X>&\202;
-
-template <typename X>
-bool
-operator!= \201const optional<X>&, const optional<X>&\202;
-
-template <typename X>
-bool
-operator< \201const optional<X>&, const optional<X>&\202;
-
-template <typename X>
-bool
-operator> \201const optional<X>&, const optional<X>&\202;
-
-template <typename X>)WR(
-bool
-operator<= \201const optional<X>&, const optional<X>&\202;
-
-template <typename X>
-bool
-operator>= \201const optional<X>&, const optional<X>&\202;)RP(
-
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 45 62 PR(void
-f \201object& o\202
-{
- using xml_schema::string;
-
- if \201o.member \201\202.present \201\202\202 // test
- {
- string& s \201o.member \201\202.get \201\202\202; // get
- o.member \201"hello"\202; // set, deep copy
- o.member \201\202.set \201"hello"\202; // set, deep copy
- o.member \201\202.reset \201\202; // reset
- }
-
- // Same as above but using pointer notation:
- //
- if \201o.member \201\202\202 // test
- {
- string& s \201*o.member \201\202\202; // get
- o.member \201"hello"\202; // set, deep copy
- *o.member \201\202 = "hello"; // set, deep copy
- o.member \201\202.reset \201\202; // reset
- }
-
- // C++98 version.
- //
- std::auto_ptr<string> p \201new string \201"hello"\202\202;
- o.member \201p\202; // set, assumes ownership
-
- p = new string \201"hello"\202;
- o.member \201\202.set \201p\202; // set, assumes ownership
-)WR(
- p = o.member \201\202.detach \201\202; // detach, member is reset
- o.member \201\202.set \201p\202; // re-attach
-
- // C++11 version.
- //
- std::unique_ptr<string> p \201new string \201"hello"\202\202;
- o.member \201std::move \201p\202\202; // set, assumes ownership
-
- p.reset \201new string \201"hello"\202\202;
- o.member \201\202.set \201std::move \201p\202\202; // set, assumes ownership
-
- p = o.member \201\202.detach \201\202; // detach, member is reset
- o.member \201\202.set \201std::move \201p\202\202; // re-attach
-})RP(
-
-
- )0 3 46 H(2.8.3)WB 143 Sn()WB 50 Sn( Mapping for Members with the Sequence Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For the Sequence cardi)HY(nal)HY(ity)YH( class, the type defi)HY(ni)HY(tions)YH( consist of an
- alias for the member's type with the name created by append)HY(ing)YH(
- the )SM(_type)ES( suffix to the member's name, an alias of
- the container type with the name created by append)HY(ing)YH( the
- )SM(_sequence)ES( suffix to the member's name, an alias of
- the iter)HY(a)HY(tor)YH( type with the name created by append)HY(ing)YH( the
- )SM(_iter)HY(a)HY(tor)YH()ES( suffix to the member's name, and an alias
- of the constant iter)HY(a)HY(tor)YH( type with the name created by append)HY(ing)YH( the
- )SM(_const_iter)HY(a)HY(tor)YH()ES( suffix to the member's name.
- )EP(
-
- )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
- container and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container and can
- be used for read-write access.
- )EP(
-
- )0 P(The modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
- constant of the container type. The modi)HY(fier)YH( func)HY(tion)YH(
- makes a deep copy of its argu)HY(ment)YH(. For instance:
- )EP(
-
-
- ) 5 64 PR(<complexType name="object">
- <sequence>
- <element name="member" type="string" minOccurs="unbounded"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 26 64 PR(class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef xml_schema::string member_type;
- typedef sequence<member_type> member_sequence;
- typedef member_sequence::iterator member_iterator;
- typedef member_sequence::const_iterator member_const_iterator;
-
- // Accessors.
- //
- const member_sequence&
- member \201\202 const;
-
- member_sequence&
- member \201\202;
-
- // Modifier.
- //
- void
- member \201const member_sequence&\202;
-
- ...
-
-};)RP(
-
- )0 P(The )SM(sequence)ES( class template is defined in an
- imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH(. It conforms to the
- sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
- C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202.
- Prac)HY(ti)HY(cally)YH(, this means that you can treat such a sequence
- as if it was )SM(std::vector)ES(. Two notable exten)HY(sions)YH(
- to the stan)HY(dard)YH( inter)HY(face)YH( that are avail)HY(able)YH( only for
- sequences of non-funda)HY(men)HY(tal)YH( C++ types are the addi)HY(tion)YH( of
- the over)HY(loaded)YH( )SM(push_back)ES( and )SM(insert)ES(
- as well as the )SM(detach_back)ES( and )SM(detach)ES(
- member func)HY(tions)YH(. The addi)HY(tional)YH( )SM(push_back)ES( and
- )SM(insert)ES( func)HY(tions)YH( accept an auto)HY(matic)YH( pointer
- \201)SM(std::auto_ptr)ES( or )SM(std::unique_ptr)ES(,
- depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected\202 to the
- element type instead of the constant refer)HY(ence)YH(. They assume
- owner)HY(ship)YH( of the pointed to object and reset the passed
- auto)HY(matic)YH( pointer. The )SM(detach_back)ES( and
- )SM(detach)ES( func)HY(tions)YH( detach the element
- value from the sequence container and, by default, remove
- the element from the sequence. These addi)HY(tional)YH( func)HY(tions)YH(
- have the follow)HY(ing)YH( signa)HY(tures)YH(:)EP(
-
- ) 22 55 PR(template <typename X>
-class sequence
-{
-public:
- ...
-
- void
- push_back \201std::[auto|unique]_ptr<X>\202
-
- iterator
- insert \201iterator position, std::[auto|unique]_ptr<X>\202
-
- std::[auto|unique]_ptr<X>
- detach_back \201bool pop = true\202;
-
- iterator
- detach \201iterator position,
- std::[auto|unique]_ptr<X>& result,
- bool erase = true\202
-
- ...
-})RP(
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 39 66 PR(void
-f \201object& o\202
-{
- using xml_schema::string;
-
- object::member_sequence& s \201o.member \201\202\202;
-
- // Iteration.
- //
- for \201object::member_iterator i \201s.begin \201\202\202; i != s.end \201\202; ++i\202
- {
- string& value \201*i\202;
- }
-
- // Modification.
- //
- s.push_back \201"hello"\202; // deep copy
-
- // C++98 version.
- //
- std::auto_ptr<string> p \201new string \201"hello"\202\202;
- s.push_back \201p\202; // assumes ownership
- p = s.detach_back \201\202; // detach and pop
- s.push_back \201p\202; // re-append
-
- // C++11 version.
- //
- std::unique_ptr<string> p \201new string \201"hello"\202\202;
- s.push_back \201std::move \201p\202\202; // assumes ownership
- p = s.detach_back \201\202; // detach and pop
- s.push_back \201std::move \201p\202\202; // re-append)WR(
-
- // Setting a new container.
- //
- object::member_sequence n;
- n.push_back \201"one"\202;
- n.push_back \201"two"\202;
- o.member \201n\202; // deep copy
-})RP(
-
- )0 3 47 H(2.8.4)WB 144 Sn()WB 51 Sn( Element Order)EA()EH(
-
- )0 P(C++/Tree is a "flat)HY(ten)HY(ing)YH(" mapping in a sense that many levels of
- nested compos)HY(i)HY(tors)YH( \201)SM(choice)ES( and )SM(sequence)ES(\202,
- all poten)HY(tially)YH( with their own cardi)HY(nal)HY(i)HY(ties)YH(, are in the end mapped
- to a flat set of elements with one of the three cardi)HY(nal)HY(ity)YH( classes
- discussed in the previ)HY(ous)YH( sections. While this results in a simple
- and easy to use API for most types, in certain cases, the order of
- elements in the actual XML docu)HY(ments)YH( is not preserved once parsed
- into the object model. And some)HY(times)YH( such order has
- appli)HY(ca)HY(tion)YH(-specific signif)HY(i)HY(cance)YH(. As an example, consider a schema
- that defines a batch of bank trans)HY(ac)HY(tions)YH(:)EP(
-
- ) 20 48 PR(<complexType name="withdraw">
- <sequence>
- <element name="account" type="unsignedInt"/>
- <element name="amount" type="unsignedInt"/>
- </sequence>
-</complexType>
-
-<complexType name="deposit">
- <sequence>
- <element name="account" type="unsignedInt"/>
- <element name="amount" type="unsignedInt"/>
- </sequence>
-</complexType>
-
-<complexType name="batch">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="withdraw" type="withdraw"/>
- <element name="deposit" type="deposit"/>
- </choice>
-</complexType>)RP(
-
- )0 P(The batch can contain any number of trans)HY(ac)HY(tions)YH( in any order
- but the order of trans)HY(ac)HY(tions)YH( in each actual batch is signif)HY(i)HY(cant)YH(.
- For instance, consider what could happen if we reorder the
- trans)HY(ac)HY(tions)YH( and apply all the with)HY(drawals)YH( before deposits.)EP(
-
- )0 P(For the )SM(batch)ES( schema type defined above the default
- C++/Tree mapping will produce a C++ class that contains a pair of
- sequence contain)HY(ers)YH(, one for each of the two elements. While this
- will capture the content \201trans)HY(ac)HY(tions)YH(\202, the order of this content
- as it appears in XML will be lost. Also, if we try to seri)HY(al)HY(ize)YH( the
- batch we just loaded back to XML, all the with)HY(drawal)YH( trans)HY(ac)HY(tions)YH(
- will appear before deposits.)EP(
-
- )0 P(To over)HY(come)YH( this limi)HY(ta)HY(tion)YH( of a flat)HY(ten)HY(ing)YH( mapping, C++/Tree
- allows us to mark certain XML Schema types, for which content
- order is impor)HY(tant)YH(, as ordered.)EP(
-
- )0 P(There are several command line options that control which
- schema types are treated as ordered. To make an indi)HY(vid)HY(ual)YH(
- type ordered, we use the )SM(--ordered-type)ES( option,
- for example:)EP(
-
- ) 1 20 PR(--ordered-type batch)RP(
-
- )0 P(To auto)HY(mat)HY(i)HY(cally)YH( treat all the types that are derived from an ordered
- type also ordered, we use the )SM(--ordered-type-derived)ES(
- option. This is primar)HY(ily)YH( useful if you would like to iterate
- over the complete hier)HY(ar)HY(chy)YH('s content using the content order
- sequence \201discussed below\202.)EP(
-
- )0 P(Ordered types are also useful for handling mixed content. To
- auto)HY(mat)HY(i)HY(cally)YH( mark all the types with mixed content as ordered
- we use the )SM(--ordered-type-mixed)ES( option. For more
- infor)HY(ma)HY(tion)YH( on handling mixed content see )0 63 1 A(Section
- 2.13, "Mapping for Mixed Content Models")63 0 TN TL()Ec /AF f D(.)EP(
-
- )0 P(Finally, we can mark all the types in the schema we are
- compil)HY(ing)YH( with the )SM(--ordered-type-all)ES( option.
- You should only resort to this option if all the types in
- your schema truly suffer from the loss of content
- order since, as we will discuss shortly, ordered types
- require extra effort to access and, espe)HY(cially)YH(, modify.
- See the
- )R8 2 A(XSD
- Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH( on
- these options.)EP(
-
- )0 P(Once a type is marked ordered, C++/Tree alters its mapping
- in several ways. Firstly, for each local element, element
- wild)HY(card)YH( \201)0 61 1 A(Section 2.12.4, "Element Wild)HY(card)YH(
- Order")61 0 TN TL()Ec /AF f D(\202, and mixed content text \201)0 63 1 A(Section
- 2.13, "Mapping for Mixed Content Models")63 0 TN TL()Ec /AF f D(\202 in this type, a
- content id constant is gener)HY(ated)YH(. Secondly, an addi)HY(tion)YH( sequence
- is added to the class that captures the content order. Here
- is how the mapping of our )SM(batch)ES( class changes
- once we make it ordered:)EP(
-
- ) 57 78 PR(class batch: public xml_schema::type
-{
-public:
- // withdraw
- //
- typedef withdraw withdraw_type;
- typedef sequence<withdraw_type> withdraw_sequence;
- typedef withdraw_sequence::iterator withdraw_iterator;
- typedef withdraw_sequence::const_iterator withdraw_const_iterator;
-
- static const std::size_t withdraw_id = 1;
-
- const withdraw_sequence&
- withdraw \201\202 const;
-
- withdraw_sequence&
- withdraw \201\202;
-
- void
- withdraw \201const withdraw_sequence&\202;
-
- // deposit
- //
- typedef deposit deposit_type;
- typedef sequence<deposit_type> deposit_sequence;
- typedef deposit_sequence::iterator deposit_iterator;
- typedef deposit_sequence::const_iterator deposit_const_iterator;
-
- static const std::size_t deposit_id = 2;
-
- const deposit_sequence&)WR(
- deposit \201\202 const;
-
- deposit_sequence&
- deposit \201\202;
-
- void
- deposit \201const deposit_sequence&\202;
-
- // content_order
- //
- typedef xml_schema::content_order content_order_type;
- typedef std::vector<content_order_type> content_order_sequence;
- typedef content_order_sequence::iterator content_order_iterator;
- typedef content_order_sequence::const_iterator content_order_const_iterator;
-
- const content_order_sequence&
- content_order \201\202 const;
-
- content_order_sequence&
- content_order \201\202;
-
- void
- content_order \201const content_order_sequence&\202;
-
- ...
-};)RP(
-
- )0 P(Notice the )SM(with)HY(draw)YH(_id)ES( and )SM(deposit_id)ES(
- content ids as well as the extra )SM(content_order)ES(
- sequence that does not corre)HY(spond)YH( to any element in the
- schema defi)HY(ni)HY(tion)YH(. The other changes to the mapping for ordered
- types has to do with XML parsing and seri)HY(al)HY(iza)HY(tion)YH( code. During
- parsing the content order is captured in the )SM(content_order)ES(
- sequence while during seri)HY(al)HY(iza)HY(tion)YH( this sequence is used to
- deter)HY(mine)YH( the order in which content is seri)HY(al)HY(ized)YH(. The
- )SM(content_order)ES( sequence is also copied during
- copy construc)HY(tion)YH( and assigned during copy assign)HY(ment)YH(. It is also
- taken into account during compar)HY(i)HY(son)YH(.)EP(
-
- )0 P(The entry type of the )SM(content_order)ES( sequence is the
- )SM(xml_schema::content_order)ES( type that has the follow)HY(ing)YH(
- inter)HY(face)YH(:)EP(
-
- ) 19 58 PR(namespace xml_schema
-{
- struct content_order
- {
- content_order \201std::size_t id, std::size_t index = 0\202;
-
- std::size_t id;
- std::size_t index;
- };
-
- bool
- operator== \201const content_order&, const content_order&\202;
-
- bool
- operator!= \201const content_order&, const content_order&\202;
-
- bool
- operator< \201const content_order&, const content_order&\202;
-})RP(
-
- )0 P(The )SM(content_order)ES( sequence describes the order of
- content \201elements, includ)HY(ing)YH( wild)HY(cards)YH(, as well as mixed content
- text\202. Each entry in this sequence consists of the content id
- \201for example, )SM(with)HY(draw)YH(_id)ES( or )SM(deposit_id)ES(
- in our case\202 as well as, for elements of the sequence cardi)HY(nal)HY(ity)YH(
- class, an index into the corre)HY(spond)HY(ing)YH( sequence container \201the
- index is unused for the one and optional cardi)HY(nal)HY(ity)YH( classes\202.
- For example, in our case, if the content id is )SM(with)HY(draw)YH(_id)ES(,
- then the index will point into the )SM(with)HY(draw)YH()ES( element
- sequence.)EP(
-
- )0 P(With all this infor)HY(ma)HY(tion)YH( we can now examine how to iterate over
- trans)HY(ac)HY(tion)YH( in the batch in content order:)EP(
-
- ) 26 73 PR(batch& b = ...
-
-for \201batch::content_order_const_iterator i \201b.content_order \201\202.begin \201\202\202;
- i != b.content_order \201\202.end \201\202;
- ++i\202
-{
- switch \201i->id\202
- {
- case batch::withdraw_id:
- {
- const withdraw& t \201b.withdraw \201\202[i->index]\202;
- cerr << t.account \201\202 << " withdraw " << t.amount \201\202 << endl;
- break;
- }
- case batch::deposit_id:
- {
- const deposit& t \201b.deposit \201\202[i->index]\202;
- cerr << t.account \201\202 << " deposit " << t.amount \201\202 << endl;
- break;
- }
- default:
- {
- assert \201false\202; // Unknown content id.
- }
- }
-})RP(
-
- )0 P(If we seri)HY(al)HY(ized)YH( our batch back to XML, we would also see that the
- order of trans)HY(ac)HY(tions)YH( in the output is exactly the same as in the
- input rather than all the with)HY(drawals)YH( first followed by all the
- deposits.)EP(
-
- )0 P(The most complex aspect of working with ordered types is
- modi)HY(fi)HY(ca)HY(tions)YH(. Now we not only need to change the content,
- but also remem)HY(ber)YH( to update the order infor)HY(ma)HY(tion)YH( corre)HY(spond)HY(ing)YH(
- to this change. As a first example, we add a deposit trans)HY(ac)HY(tion)YH(
- to the batch:)EP(
-
- ) 8 64 PR(using xml_schema::content_order;
-
-batch::deposit_sequence& d \201b.deposit \201\202\202;
-batch::withdraw_sequence& w \201b.withdraw \201\202\202;
-batch::content_order_sequence& co \201b.content_order \201\202\202;
-
-d.push_back \201deposit \201123456789, 100000\202\202;
-co.push_back \201content_order \201batch::deposit_id, d.size \201\202 - 1\202\202;)RP(
-
- )0 P(In the above example we first added the content \201deposit
- trans)HY(ac)HY(tion)YH(\202 and then updated the content order infor)HY(ma)HY(tion)YH(
- by adding an entry with )SM(deposit_id)ES( content
- id and the index of the just added deposit trans)HY(ac)HY(tion)YH(.)EP(
-
- )0 P(Remov)HY(ing)YH( the last trans)HY(ac)HY(tion)YH( can be easy if we know which
- trans)HY(ac)HY(tion)YH( \201deposit or with)HY(drawal)YH(\202 is last:)EP(
-
- ) 2 15 PR(d.pop_back \201\202;
-co.pop_back \201\202;)RP(
-
- )0 P(If, however, we do not know which trans)HY(ac)HY(tion)YH( is last, then
- things get a bit more compli)HY(cated)YH(:)EP(
-
- ) 15 24 PR(switch \201co.back \201\202.id\202
-{
-case batch::withdraw_id:
- {
- d.pop_back \201\202;
- break;
- }
-case batch::deposit_id:
- {
- w.pop_back \201\202;
- break;
- }
-}
-
-co.pop_back \201\202;)RP(
-
- )0 P(The follow)HY(ing)YH( example shows how to add a trans)HY(ac)HY(tion)YH( at the
- begin)HY(ning)YH( of the batch:)EP(
-
- ) 3 62 PR(w.push_back \201withdraw \201123456789, 100000\202\202;
-co.insert \201co.begin \201\202,
- content_order \201batch::withdraw_id, w.size \201\202 - 1\202\202;)RP(
-
- )0 P(Note also that when we merely modify the content of one
- of the elements in place, we do not need to update its
- order since it doesn't change. For example, here is how
- we can change the amount in the first with)HY(drawal)YH(:)EP(
-
- ) 1 20 PR(w[0].amount \20110000\202;)RP(
-
- )0 P(For the complete working code shown in this section refer to the
- )SM(order/element)ES( example in the
- )SM(exam)HY(ples)YH(/cxx/tree/)ES( direc)HY(tory)YH( in the XSD distri)HY(bu)HY(tion)YH(.)EP(
-
- )0 P(If both the base and derived types are ordered, then the
- content order sequence is only added to the base and the content
- ids are unique within the whole hier)HY(ar)HY(chy)YH(. In this case
- the content order sequence for the derived type contains
- order)HY(ing)YH( infor)HY(ma)HY(tion)YH( for both base and derived content.)EP(
-
- )0 P(In some appli)HY(ca)HY(tions)YH( we may need to perform more complex
- content process)HY(ing)YH(. For example, in our case, we may need
- to remove all the with)HY(drawal)YH( trans)HY(ac)HY(tions)YH(. The default
- container, )SM(std::vector)ES(, is not partic)HY(u)HY(larly)YH(
- suit)HY(able)YH( for such oper)HY(a)HY(tions)YH(. What may be required by
- some appli)HY(ca)HY(tions)YH( is a multi-index container that not
- only allows us to iterate in content order similar to
- )SM(std::vector)ES( but also search by the content
- id as well as the content id and index pair.)EP(
-
- )0 P(While C++/Tree does not provide this func)HY(tion)HY(al)HY(ity)YH( by
- default, it allows us to specify a custom container
- type for content order with the )SM(--order-container)ES(
- command line option. The only require)HY(ment)YH( from the
- gener)HY(ated)YH( code side for such a container is to provide
- the )SM(vector)ES(-like )SM(push_back\201\202)ES(,
- )SM(size\201\202)ES(, and const iter)HY(a)HY(tion)YH( inter)HY(faces)YH(.)EP(
-
- )0 P(As an example, here is how we can use the Boost Multi-Index
- container for content order. First we create the
- )SM(content-order-container.hxx)ES( header with the
- follow)HY(ing)YH( defi)HY(ni)HY(tion)YH( \201in C++11, use the alias template
- instead\202:)EP(
-
- ) 33 58 PR(#ifndef CONTENT_ORDER_CONTAINER
-#define CONTENT_ORDER_CONTAINER
-
-#include <cstddef> // std::size_t
-
-#include <boost/multi_index_container.hpp>
-#include <boost/multi_index/member.hpp>
-#include <boost/multi_index/identity.hpp>
-#include <boost/multi_index/ordered_index.hpp>
-#include <boost/multi_index/random_access_index.hpp>
-
-struct by_id {};
-struct by_id_index {};
-
-template <typename T>
-struct content_order_container:
- boost::multi_index::multi_index_container<
- T,
- boost::multi_index::indexed_by<
- boost::multi_index::random_access<>,
- boost::multi_index::ordered_unique<
- boost::multi_index::tag<by_id_index>,
- boost::multi_index::identity<T>
- >,
- boost::multi_index::ordered_non_unique<
- boost::multi_index::tag<by_id>,
- boost::multi_index::member<T, std::size_t, &T::id>
- >
- >
- >
-{};)WR(
-
-#endif)RP(
-
- )0 P(Next we add the follow)HY(ing)YH( two XSD compiler options to include
- this header into every gener)HY(ated)YH( header file and to use the
- custom container type \201see the XSD compiler command line manual
- for more infor)HY(ma)HY(tion)YH( on shell quoting for the first option\202:)EP(
-
- ) 2 55 PR(--hxx-prologue '#include "content-order-container.hxx"'
---order-container content_order_container)RP(
-
- )0 P(With these changes we can now use the multi-index func)HY(tion)HY(al)HY(ity)YH(,
- for example, to search for a specific content id:)EP(
-
- ) 13 65 PR(typedef batch::content_order_sequence::index<by_id>::type id_set;
-typedef id_set::iterator id_iterator;
-
-const id_set& ids \201b.content_order \201\202.get<by_id> \201\202\202;
-
-std::pair<id_iterator, id_iterator> r \201
- ids.equal_range \201std::size_t \201batch::deposit_id\202\202;
-
-for \201id_iterator i \201r.first\202; i != r.second; ++i\202
-{
- const deposit& t \201b.deposit \201\202[i->index]\202;
- cerr << t.account \201\202 << " deposit " << t.amount \201\202 << endl;
-})RP(
-
- )0 2 48 H(2.9)WB 145 Sn()WB 52 Sn( Mapping for Global Elements)EA()EH(
-
- )0 P(An XML Schema element defi)HY(ni)HY(tion)YH( is called global if it appears
- directly under the )SM(schema)ES( element.
- A global element is a valid root of an instance docu)HY(ment)YH(. By
- default, a global element is mapped to a set of over)HY(loaded)YH(
- parsing and, option)HY(ally)YH(, seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( with the
- same name as the element. It is also possi)HY(ble)YH( to gener)HY(ate)YH( types
- for root elements instead of parsing and seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(.
- This is primar)HY(ily)YH( useful to distin)HY(guish)YH( object models with the
- same root type but with differ)HY(ent)YH( root elements. See
- )0 53 1 A(Section 2.9.1, "Element Types")53 0 TN TL()Ec /AF f D( for details.
- It is also possi)HY(ble)YH( to request the gener)HY(a)HY(tion)YH( of an element map
- which allows uniform parsing and seri)HY(al)HY(iza)HY(tion)YH( of multi)HY(ple)YH( root
- elements. See )0 54 1 A(Section 2.9.2, "Element Map")54 0 TN TL()Ec /AF f D(
- for details.
- )EP(
-
- )0 P(The parsing func)HY(tions)YH( read XML instance docu)HY(ments)YH( and return
- corre)HY(spond)HY(ing)YH( object models as an auto)HY(matic)YH( pointer
- \201)SM(std::auto_ptr)ES( or )SM(std::unique_ptr)ES(,
- depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected\202. Their signa)HY(tures)YH(
- have the follow)HY(ing)YH( pattern \201)SM(type)ES( denotes
- element's type and )SM(name)ES( denotes element's
- name\202:
- )EP(
-
- ) 2 28 PR(std::[auto|unique]_ptr<type>
-name \201....\202;)RP(
-
- )0 P(The process of parsing, includ)HY(ing)YH( the exact signa)HY(tures)YH( of the parsing
- func)HY(tions)YH(, is the subject of )0 64 1 A(Chapter 3, "Parsing")64 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 P(The seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( write object models back to XML instance
- docu)HY(ments)YH(. Their signa)HY(tures)YH( have the follow)HY(ing)YH( pattern:
- )EP(
-
- ) 2 41 PR(void
-name \201<stream type>&, const type&, ....\202;)RP(
-
- )0 P(The process of seri)HY(al)HY(iza)HY(tion)YH(, includ)HY(ing)YH( the exact signa)HY(tures)YH( of the
- seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(, is the subject of )0 81 1 A(Chapter 4,
- "Seri)HY(al)HY(iza)HY(tion)YH(")81 0 TN TL()Ec /AF f D(.
- )EP(
-
-
- )0 3 49 H(2.9.1)WB 146 Sn()WB 53 Sn( Element Types)EA()EH(
-
- )0 P(The gener)HY(a)HY(tion)YH( of element types is requested with the
- )SM(--gener)HY(ate)YH(-element-map)ES( option. With this option
- each global element is mapped to a C++ class with the
- same name as the element. Such a class is derived from
- )SM(xml_schema::element_type)ES( and contains the same set
- of type defi)HY(ni)HY(tions)YH(, construc)HY(tors)YH(, and member func)HY(tion)YH( as would a
- type contain)HY(ing)YH( a single element with the One cardi)HY(nal)HY(ity)YH( class
- named )SM("value")ES(. In addi)HY(tion)YH(, the element type also
- contains a set of member func)HY(tions)YH( for access)HY(ing)YH( the element
- name and names)HY(pace)YH( as well as its value in a uniform manner.
- For example:)EP(
-
- ) 7 34 PR(<complexType name="type">
- <sequence>
- ...
- </sequence>
-</complexType>
-
-<element name="root" type="type"/>)RP(
-
-)0 P(is mapped to:)EP(
-
- ) 62 59 PR(class type
-{
- ...
-};
-
-class root: public xml_schema::element_type
-{
-public:
- // Element value.
- //
- typedef type value_type;
-
- const value_type&
- value \201\202 const;
-
- value_type&
- value \201\202;
-
- void
- value \201const value_type&\202;
-
- void
- value \201std::[auto|unique]_ptr<value_type>\202;
-
- // Constructors.
- //
- root \201const value_type&\202;
-
- root \201std::[auto|unique]_ptr<value_type>\202;
-
- root \201const xercesc::DOMElement&, xml_schema::flags = 0\202;)WR(
-
- root \201const root&, xml_schema::flags = 0\202;
-
- virtual root*
- _clone \201xml_schema::flags = 0\202 const;
-
- // Element name and namespace.
- //
- static const std::string&
- name \201\202;
-
- static const std::string&
- namespace_ \201\202;
-
- virtual const std::string&
- _name \201\202 const;
-
- virtual const std::string&
- _namespace \201\202 const;
-
- // Element value as xml_schema::type.
- //
- virtual const xml_schema::type*
- _value \201\202 const;
-
- virtual xml_schema::type*
- _value \201\202;
-};
-
-void)WR(
-operator<< \201xercesc::DOMElement&, const root&\202;)RP(
-
- )0 P(The )SM(xml_schema::element_type)ES( class is a common
- base type for all element types and is defined as follows:)EP(
-
- ) 24 39 PR(namespace xml_schema
-{
- class element_type
- {
- public:
- virtual
- ~element_type \201\202;
-
- virtual element_type*
- _clone \201flags f = 0\202 const = 0;
-
- virtual const std::basic_string<C>&
- _name \201\202 const = 0;
-
- virtual const std::basic_string<C>&
- _namespace \201\202 const = 0;
-
- virtual xml_schema::type*
- _value \201\202 = 0;
-
- virtual const xml_schema::type*
- _value \201\202 const = 0;
- };
-})RP(
-
- )0 P(The )SM(_value\201\202)ES( member func)HY(tion)YH( returns a pointer to
- the element value or 0 if the element is of a funda)HY(men)HY(tal)YH( C++
- type and there)HY(fore)YH( is not derived from )SM(xml_schema::type)ES(.
- )EP(
-
- )0 P(Unlike parsing and seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(, element types
- are only capable of parsing and seri)HY(al)HY(iz)HY(ing)YH( from/to a
- )SM(DOMEle)HY(ment)YH()ES( object. This means that the appli)HY(ca)HY(tion)YH(
- will need to perform its own XML-to-DOM parsing and DOM-to-XML
- seri)HY(al)HY(iza)HY(tion)YH(. The follow)HY(ing)YH( section describes a mech)HY(a)HY(nism)YH(
- provided by the mapping to uniformly parse and seri)HY(al)HY(ize)YH(
- multi)HY(ple)YH( root elements.)EP(
-
-
- )0 3 50 H(2.9.2)WB 147 Sn()WB 54 Sn( Element Map)EA()EH(
-
- )0 P(When element types are gener)HY(ated)YH( for root elements it is also
- possi)HY(ble)YH( to request the gener)HY(a)HY(tion)YH( of an element map with the
- )SM(--gener)HY(ate)YH(-element-map)ES( option. The element map
- allows uniform parsing and seri)HY(al)HY(iza)HY(tion)YH( of multi)HY(ple)YH( root
- elements via the common )SM(xml_schema::element_type)ES(
- base type. The )SM(xml_schema::element_map)ES( class is
- defined as follows:)EP(
-
- ) 12 59 PR(namespace xml_schema
-{
- class element_map
- {
- public:
- static std::[auto|unique]_ptr<xml_schema::element_type>
- parse \201const xercesc::DOMElement&, flags = 0\202;
-
- static void
- serialize \201xercesc::DOMElement&, const element_type&\202;
- };
-})RP(
-
- )0 P(The )SM(parse\201\202)ES( func)HY(tion)YH( creates the corre)HY(spond)HY(ing)YH(
- element type object based on the element name and names)HY(pace)YH(
- and returns it as an auto)HY(matic)YH( pointer \201)SM(std::auto_ptr)ES(
- or )SM(std::unique_ptr)ES(, depend)HY(ing)YH( on the C++ stan)HY(dard)YH(
- selected\202 to )SM(xml_schema::element_type)ES(.
- The )SM(seri)HY(al)HY(ize)YH(\201\202)ES( func)HY(tion)YH( seri)HY(al)HY(izes)YH( the passed element
- object to )SM(DOMEle)HY(ment)YH()ES(. Note that in case of
- )SM(seri)HY(al)HY(ize)YH(\201\202)ES(, the )SM(DOMEle)HY(ment)YH()ES( object
- should have the correct name and names)HY(pace)YH(. If no element type is
- avail)HY(able)YH( for an element, both func)HY(tions)YH( throw the
- )SM(xml_schema::no_element_info)ES( excep)HY(tion)YH(:)EP(
-
- ) 14 66 PR(struct no_element_info: virtual exception
-{
- no_element_info \201const std::basic_string<C>& element_name,
- const std::basic_string<C>& element_namespace\202;
-
- const std::basic_string<C>&
- element_name \201\202 const;
-
- const std::basic_string<C>&
- element_namespace \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The appli)HY(ca)HY(tion)YH( can discover the actual type of the element
- object returned by )SM(parse\201\202)ES( either using
- )SM(dynamic_cast)ES( or by compar)HY(ing)YH( element names and
- names)HY(paces)YH(. The follow)HY(ing)YH( code frag)HY(ments)YH( illus)HY(trate)YH( how the
- element map can be used:)EP(
-
- ) 18 50 PR(// Parsing.
-//
-DOMElement& e = ... // Parse XML to DOM.
-
-auto_ptr<xml_schema::element_type> r \201
- xml_schema::element_map::parse \201e\202\202;
-
-if \201root1 r1 = dynamic_cast<root1*> \201r.get \201\202\202\202
-{
- ...
-}
-else if \201r->_name == root2::name \201\202 &&
- r->_namespace \201\202 == root2::namespace_ \201\202\202
-{
- root2& r2 \201static_cast<root2&> \201*r\202\202;
-
- ...
-})RP(
-
- ) 13 68 PR(// Serialization.
-//
-xml_schema::element_type& r = ...
-
-string name \201r._name \201\202\202;
-string ns \201r._namespace \201\202\202;
-
-DOMDocument& doc = ... // Create a new DOMDocument with name and ns.
-DOMElement& e \201*doc->getDocumentElement \201\202\202;
-
-xml_schema::element_map::serialize \201e, r\202;
-
-// Serialize DOMDocument to XML.)RP(
-
-
-
- )0 2 51 H(2.10)WB 148 Sn()WB 55 Sn( Mapping for Global Attributes)EA()EH(
-
- )0 P(An XML Schema attribute defi)HY(ni)HY(tion)YH( is called global if it appears
- directly under the )SM(schema)ES( element. A global
- attribute does not have any mapping.
- )EP(
-
-
-
- )0 2 52 H(2.11)WB 149 Sn()WB 56 Sn( Mapping for )SM(xsi:type)ES( and Substi)HY(tu)HY(tion)YH(
- Groups)EA()EH(
-
- )0 P(The mapping provides optional support for the XML Schema poly)HY(mor)HY(phism)YH(
- features \201)SM(xsi:type)ES( and substi)HY(tu)HY(tion)YH( groups\202 which can
- be requested with the )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option.
- When used, the dynamic type of a member may be differ)HY(ent)YH( from
- its static type. Consider the follow)HY(ing)YH( schema defi)HY(ni)HY(tion)YH( and
- instance docu)HY(ment)YH(:
- )EP(
-
- ) 28 62 PR(<!-- test.xsd -->
-<schema>
- <complexType name="base">
- <attribute name="text" type="string"/>
- </complexType>
-
- <complexType name="derived">
- <complexContent>
- <extension base="base">
- <attribute name="extra-text" type="string"/>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="root_type">
- <sequence>
- <element name="item" type="base" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="root_type"/>
-</schema>
-
-<!-- test.xml -->
-<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <item text="hello"/>
- <item text="hello" extra-text="world" xsi:type="derived"/>
-</root>)RP(
-
- )0 P(In the result)HY(ing)YH( object model, the container for
- the )SM(root::item)ES( member will have two elements:
- the first element's type will be )SM(base)ES( while
- the second element's \201dynamic\202 type will be
- )SM(derived)ES(. This can be discov)HY(ered)YH( using the
- )SM(dynamic_cast)ES( oper)HY(a)HY(tor)YH( as shown in the follow)HY(ing)YH(
- example:
- )EP(
-
- ) 17 56 PR(void
-f \201root& r\202
-{
- for \201root::item_const_iterator i \201r.item \201\202.begin \201\202\202;
- i != r.item \201\202.end \201\202
- ++i\202
- {
- if \201derived* d = dynamic_cast<derived*> \201&\201*i\202\202\202
- {
- // derived
- }
- else
- {
- // base
- }
- }
-})RP(
-
- )0 P(The )SM(_clone)ES( virtual func)HY(tion)YH( should be used instead of
- copy construc)HY(tors)YH( to make copies of members that might use
- poly)HY(mor)HY(phism)YH(:
- )EP(
-
- ) 10 56 PR(void
-f \201root& r\202
-{
- for \201root::item_const_iterator i \201r.item \201\202.begin \201\202\202;
- i != r.item \201\202.end \201\202
- ++i\202
- {
- std::auto_ptr<base> c \201i->_clone \201\202\202;
- }
-})RP(
-
- )0 P(The mapping can often auto)HY(mat)HY(i)HY(cally)YH( deter)HY(mine)YH( which types are
- poly)HY(mor)HY(phic)YH( based on the substi)HY(tu)HY(tion)YH( group decla)HY(ra)HY(tions)YH(. However,
- if your XML vocab)HY(u)HY(lary)YH( is not using substi)HY(tu)HY(tion)YH( groups or if
- substi)HY(tu)HY(tion)YH( groups are defined in a sepa)HY(rate)YH( schema, then you will
- need to use the )SM(--poly)HY(mor)HY(phic)YH(-type)ES( option to specify
- which types are poly)HY(mor)HY(phic)YH(. When using this option you only need
- to specify the root of a poly)HY(mor)HY(phic)YH( type hier)HY(ar)HY(chy)YH( and the mapping
- will assume that all the derived types are also poly)HY(mor)HY(phic)YH(.
- Also note that you need to specify this option when compil)HY(ing)YH( every
- schema file that refer)HY(ences)YH( the poly)HY(mor)HY(phic)YH( type. Consider the follow)HY(ing)YH(
- two schemas as an example:)EP(
-
- ) 13 55 PR(<!-- base.xsd -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:complexType name="base">
- <xs:sequence>
- <xs:element name="b" type="xs:int"/>
- </xs:sequence>
- </xs:complexType>
-
- <!-- substitution group root -->
- <xs:element name="base" type="base"/>
-
-</xs:schema>)RP(
-
- ) 18 70 PR(<!-- derived.xsd -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <include schemaLocation="base.xsd"/>
-
- <xs:complexType name="derived">
- <xs:complexContent>
- <xs:extension base="base">
- <xs:sequence>
- <xs:element name="d" type="xs:string"/>
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
-
- <xs:element name="derived" type="derived" substitutionGroup="base"/>
-
-</xs:schema>)RP(
-
- )0 P(In this example we need to specify ")SM(--poly)HY(mor)HY(phic)YH(-type base)ES("
- when compil)HY(ing)YH( both schemas because the substi)HY(tu)HY(tion)YH( group is declared
- in a schema other than the one defin)HY(ing)YH( type )SM(base)ES(.)EP(
-
- )0 P(You can also indi)HY(cate)YH( that all types should be treated as poly)HY(mor)HY(phic)YH(
- with the )SM(--poly)HY(mor)HY(phic)YH(-type-all)ES(. However, this may result
- in slower gener)HY(ated)YH( code with a greater foot)HY(print)YH(.)EP(
-
-
-
-
-
- )0 2 53 H(2.12)WB 150 Sn()WB 57 Sn( Mapping for )SM(any)ES( and )SM(anyAt)HY(tribute)YH()ES()EA()EH(
-
- )0 P(For the XML Schema )SM(any)ES( and )SM(anyAt)HY(tribute)YH()ES(
- wild)HY(cards)YH( an optional mapping can be requested with the
- )SM(--gener)HY(ate)YH(-wild)HY(card)YH()ES( option. The mapping repre)HY(sents)YH(
- the content matched by wild)HY(cards)YH( as DOM frag)HY(ments)YH(. Because the
- DOM API is used to access such content, the Xerces-C++ runtime
- should be initial)HY(ized)YH( by the appli)HY(ca)HY(tion)YH( prior to parsing and
- should remain initial)HY(ized)YH( for the life)HY(time)YH( of objects with
- the wild)HY(card)YH( content. For more infor)HY(ma)HY(tion)YH( on the Xerces-C++
- runtime initial)HY(iza)HY(tion)YH( see )0 65 1 A(Section 3.1,
- "Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime")65 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 P(The mapping for )SM(any)ES( is similar to the mapping for
- local elements \201see )0 47 1 A(Section 2.8, "Mapping for Local
- Elements and Attributes")47 0 TN TL()Ec /AF f D(\202 except that the type used in the
- wild)HY(card)YH( mapping is )SM(xercesc::DOMEle)HY(ment)YH()ES(. As with local
- elements, the mapping divides all possi)HY(ble)YH( cardi)HY(nal)HY(ity)YH( combi)HY(na)HY(tions)YH(
- into three cardi)HY(nal)HY(ity)YH( classes: )I(one)ES(, )I(optional)ES(, and
- )I(sequence)ES(.
- )EP(
-
- )0 P(The mapping for )SM(anyAt)HY(tribute)YH()ES( repre)HY(sents)YH( the attributes
- matched by this wild)HY(card)YH( as a set of )SM(xercesc::DOMAttr)ES(
- objects with a key being the attribute's name and names)HY(pace)YH(.)EP(
-
- )0 P(Similar to local elements and attributes, the )SM(any)ES( and
- )SM(anyAt)HY(tribute)YH()ES( wild)HY(cards)YH( are mapped to a set of public type
- defi)HY(ni)HY(tions)YH( \201type)HY(defs)YH(\202 and a set of public acces)HY(sor)YH( and modi)HY(fier)YH(
- func)HY(tions)YH(. Type defi)HY(ni)HY(tions)YH( have names derived from )SM("any")ES(
- for the )SM(any)ES( wild)HY(card)YH( and )SM("any_attribute")ES(
- for the )SM(anyAt)HY(tribute)YH()ES( wild)HY(card)YH(. The acces)HY(sor)YH( and modi)HY(fier)YH(
- func)HY(tions)YH( are named )SM("any")ES( for the )SM(any)ES( wild)HY(card)YH(
- and )SM("any_attribute")ES( for the )SM(anyAt)HY(tribute)YH()ES(
- wild)HY(card)YH(. Subse)HY(quent)YH( wild)HY(cards)YH( in the same type have escaped names
- such as )SM("any1")ES( or )SM("any_attribute1")ES(.
- )EP(
-
- )0 P(Because Xerces-C++ DOM nodes always belong to a )SM(DOMDoc)HY(u)HY(ment)YH()ES(,
- each type with a wild)HY(card)YH( has an asso)HY(ci)HY(ated)YH( )SM(DOMDoc)HY(u)HY(ment)YH()ES(
- object. The refer)HY(ence)YH( to this object can be obtained using the acces)HY(sor)YH(
- func)HY(tion)YH( called )SM(dom_docu)HY(ment)YH()ES(. The access to the docu)HY(ment)YH(
- object from the appli)HY(ca)HY(tion)YH( code may be neces)HY(sary)YH( to create or modify
- the wild)HY(card)YH( content. For example:
- )EP(
-
- ) 6 37 PR(<complexType name="object">
- <sequence>
- <any namespace="##other"/>
- </sequence>
- <anyAttribute namespace="##other"/>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 37 73 PR(class object: public xml_schema::type
-{
-public:
- // any
- //
- const xercesc::DOMElement&
- any \201\202 const;
-
- void
- any \201const xercesc::DOMElement&\202;
-
- ...
-
- // any_attribute
- //
- typedef attribute_set any_attribute_set;
- typedef any_attribute_set::iterator any_attribute_iterator;
- typedef any_attribute_set::const_iterator any_attribute_const_iterator;
-
- const any_attribute_set&
- any_attribute \201\202 const;
-
- any_attribute_set&
- any_attribute \201\202;
-
- ...
-
- // DOMDocument object for wildcard content.
- //
- const xercesc::DOMDocument&
- dom_document \201\202 const;)WR(
-
- xercesc::DOMDocument&
- dom_document \201\202;
-
- ...
-};)RP(
-
-
- )0 P(Names and seman)HY(tics)YH( of type defi)HY(ni)HY(tions)YH( for the wild)HY(cards)YH( as well
- as signa)HY(tures)YH( of the acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( depend on the
- wild)HY(card)YH( type as well as the cardi)HY(nal)HY(ity)YH( class for the )SM(any)ES(
- wild)HY(card)YH(. They are described in the follow)HY(ing)YH( sub-sections.
- )EP(
-
-
- )0 3 54 H(2.12.1)WB 151 Sn()WB 58 Sn( Mapping for )SM(any)ES( with the One Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For )SM(any)ES( with the One cardi)HY(nal)HY(ity)YH( class,
- there are no type defi)HY(ni)HY(tions)YH(. The acces)HY(sor)YH( func)HY(tions)YH( come in
- constant and non-constant versions. The constant acces)HY(sor)YH( func)HY(tion)YH(
- returns a constant refer)HY(ence)YH( to )SM(xercesc::DOMEle)HY(ment)YH()ES( and
- can be used for read-only access. The non-constant version returns
- an unre)HY(stricted)YH( refer)HY(ence)YH( to )SM(xercesc::DOMEle)HY(ment)YH()ES( and can
- be used for read-write access.
- )EP(
-
- )0 P(The first modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH(
- to constant )SM(xercesc::DOMEle)HY(ment)YH()ES( and makes a deep copy
- of its argu)HY(ment)YH(. The second modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of
- type pointer to )SM(xercesc::DOMEle)HY(ment)YH()ES(. This modi)HY(fier)YH(
- func)HY(tion)YH( assumes owner)HY(ship)YH( of its argu)HY(ment)YH( and expects the element
- object to be created using the DOM docu)HY(ment)YH( asso)HY(ci)HY(ated)YH( with this
- instance. For example:
- )EP(
-
- ) 5 30 PR(<complexType name="object">
- <sequence>
- <any namespace="##other"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 22 37 PR(class object: public xml_schema::type
-{
-public:
- // Accessors.
- //
- const xercesc::DOMElement&
- any \201\202 const;
-
- xercesc::DOMElement&
- any \201\202;
-
- // Modifiers.
- //
- void
- any \201const xercesc::DOMElement&\202;
-
- void
- any \201xercesc::DOMElement*\202;
-
- ...
-
-};)RP(
-
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 10 66 PR(void
-f \201object& o, const xercesc::DOMElement& e\202
-{
- using namespace xercesc;
-
- DOMElement& e1 \201o.any \201\202\202; // get
- o.any \201e\202 // set, deep copy
- DOMDocument& doc \201o.dom_document \201\202\202;
- o.any \201doc.createElement \201...\202\202; // set, assumes ownership
-})RP(
-
- )0 3 55 H(2.12.2)WB 152 Sn()WB 59 Sn( Mapping for )SM(any)ES( with the Optional Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For )SM(any)ES( with the Optional cardi)HY(nal)HY(ity)YH( class, the type
- defi)HY(ni)HY(tions)YH( consist of an alias for the container type with name
- )SM(any_optional)ES( \201or )SM(any1_optional)ES(, etc., for
- subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202.
- )EP(
-
- )0 P(Unlike acces)HY(sor)YH( func)HY(tions)YH( for the One cardi)HY(nal)HY(ity)YH( class, acces)HY(sor)YH(
- func)HY(tions)YH( for the Optional cardi)HY(nal)HY(ity)YH( class return refer)HY(ences)YH( to
- corre)HY(spond)HY(ing)YH( contain)HY(ers)YH( rather than directly to )SM(DOMEle)HY(ment)YH()ES(.
- The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to
- the container and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container
- and can be used for read-write access.
- )EP(
-
- )0 P(The modi)HY(fier)YH( func)HY(tions)YH( are over)HY(loaded)YH( for )SM(xercesc::DOMEle)HY(ment)YH()ES(
- and the container type. The first modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of
- type refer)HY(ence)YH( to constant )SM(xercesc::DOMEle)HY(ment)YH()ES( and
- makes a deep copy of its argu)HY(ment)YH(. The second modi)HY(fier)YH( func)HY(tion)YH(
- expects an argu)HY(ment)YH( of type pointer to )SM(xercesc::DOMEle)HY(ment)YH()ES(.
- This modi)HY(fier)YH( func)HY(tion)YH( assumes owner)HY(ship)YH( of its argu)HY(ment)YH( and expects
- the element object to be created using the DOM docu)HY(ment)YH( asso)HY(ci)HY(ated)YH(
- with this instance. The third modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH(
- of type refer)HY(ence)YH( to constant of the container type and makes a
- deep copy of its argu)HY(ment)YH(. For instance:
- )EP(
-
- ) 5 44 PR(<complexType name="object">
- <sequence>
- <any namespace="##other" minOccurs="0"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 29 40 PR(class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef element_optional any_optional;
-
- // Accessors.
- //
- const any_optional&
- any \201\202 const;
-
- any_optional&
- any \201\202;
-
- // Modifiers.
- //
- void
- any \201const xercesc::DOMElement&\202;
-
- void
- any \201xercesc::DOMElement*\202;
-
- void
- any \201const any_optional&\202;
-
- ...
-
-};)RP(
-
-
- )0 P(The )SM(element_optional)ES( container is a
- special)HY(iza)HY(tion)YH( of the )SM(optional)ES( class template described
- in )0 49 1 A(Section 2.8.2, "Mapping for Members with the Optional
- Cardi)HY(nal)HY(ity)YH( Class")49 0 TN TL()Ec /AF f D(. Its inter)HY(face)YH( is presented below:
- )EP(
-
- ) 72 71 PR(class element_optional
-{
-public:
- explicit
- element_optional \201xercesc::DOMDocument&\202;
-
- // Makes a deep copy.
- //
- element_optional \201const xercesc::DOMElement&, xercesc::DOMDocument&\202;
-
- // Assumes ownership.
- //
- element_optional \201xercesc::DOMElement*, xercesc::DOMDocument&\202;
-
- element_optional \201const element_optional&, xercesc::DOMDocument&\202;
-
-public:
- element_optional&
- operator= \201const xercesc::DOMElement&\202;
-
- element_optional&
- operator= \201const element_optional&\202;
-
- // Pointer-like interface.
- //
-public:
- const xercesc::DOMElement*
- operator-> \201\202 const;
-
- xercesc::DOMElement*
- operator-> \201\202;)WR(
-
- const xercesc::DOMElement&
- operator* \201\202 const;
-
- xercesc::DOMElement&
- operator* \201\202;
-
- typedef void \201element_optional::*bool_convertible\202 \201\202;
- operator bool_convertible \201\202 const;
-
- // Get/set interface.
- //
-public:
- bool
- present \201\202 const;
-
- const xercesc::DOMElement&
- get \201\202 const;
-
- xercesc::DOMElement&
- get \201\202;
-
- // Makes a deep copy.
- //
- void
- set \201const xercesc::DOMElement&\202;
-
- // Assumes ownership.
- //
- void)WR(
- set \201xercesc::DOMElement*\202;
-
- void
- reset \201\202;
-};
-
-bool
-operator== \201const element_optional&, const element_optional&\202;
-
-bool
-operator!= \201const element_optional&, const element_optional&\202;)RP(
-
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 25 69 PR(void
-f \201object& o, const xercesc::DOMElement& e\202
-{
- using namespace xercesc;
-
- DOMDocument& doc \201o.dom_document \201\202\202;
-
- if \201o.any \201\202.present \201\202\202 // test
- {
- DOMElement& e1 \201o.any \201\202.get \201\202\202; // get
- o.any \201\202.set \201e\202; // set, deep copy
- o.any \201\202.set \201doc.createElement \201...\202\202; // set, assumes ownership
- o.any \201\202.reset \201\202; // reset
- }
-
- // Same as above but using pointer notation:
- //
- if \201o.member \201\202\202 // test
- {
- DOMElement& e1 \201*o.any \201\202\202; // get
- o.any \201e\202; // set, deep copy
- o.any \201doc.createElement \201...\202\202; // set, assumes ownership
- o.any \201\202.reset \201\202; // reset
- }
-})RP(
-
-
-
- )0 3 56 H(2.12.3)WB 153 Sn()WB 60 Sn( Mapping for )SM(any)ES( with the Sequence Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For )SM(any)ES( with the Sequence cardi)HY(nal)HY(ity)YH( class, the type
- defi)HY(ni)HY(tions)YH( consist of an alias of the container type with name
- )SM(any_sequence)ES( \201or )SM(any1_sequence)ES(, etc., for
- subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202, an alias of the iter)HY(a)HY(tor)YH(
- type with name )SM(any_iter)HY(a)HY(tor)YH()ES( \201or )SM(any1_iter)HY(a)HY(tor)YH()ES(,
- etc., for subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202, and an alias
- of the constant iter)HY(a)HY(tor)YH( type with name )SM(any_const_iter)HY(a)HY(tor)YH()ES(
- \201or )SM(any1_const_iter)HY(a)HY(tor)YH()ES(, etc., for subse)HY(quent)YH( wild)HY(cards)YH(
- in the type defi)HY(ni)HY(tion)YH(\202.
- )EP(
-
- )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
- container and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container and can
- be used for read-write access.
- )EP(
-
- )0 P(The modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
- constant of the container type. The modi)HY(fier)YH( func)HY(tion)YH( makes
- a deep copy of its argu)HY(ment)YH(. For instance:
- )EP(
-
-
- ) 5 52 PR(<complexType name="object">
- <sequence>
- <any namespace="##other" minOccurs="unbounded"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 25 58 PR(class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef element_sequence any_sequence;
- typedef any_sequence::iterator any_iterator;
- typedef any_sequence::const_iterator any_const_iterator;
-
- // Accessors.
- //
- const any_sequence&
- any \201\202 const;
-
- any_sequence&
- any \201\202;
-
- // Modifier.
- //
- void
- any \201const any_sequence&\202;
-
- ...
-
-};)RP(
-
- )0 P(The )SM(element_sequence)ES( container is a
- special)HY(iza)HY(tion)YH( of the )SM(sequence)ES( class template described
- in )0 50 1 A(Section 2.8.3, "Mapping for Members with the
- Sequence Cardi)HY(nal)HY(ity)YH( Class")50 0 TN TL()Ec /AF f D(. Its inter)HY(face)YH( is similar to
- the sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
- C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202 and is
- presented below:
- )EP(
-
- ) 178 70 PR(class element_sequence
-{
-public:
- typedef xercesc::DOMElement value_type;
- typedef xercesc::DOMElement* pointer;
- typedef const xercesc::DOMElement* const_pointer;
- typedef xercesc::DOMElement& reference;
- typedef const xercesc::DOMElement& const_reference;
-
- typedef <implementation-defined> iterator;
- typedef <implementation-defined> const_iterator;
- typedef <implementation-defined> reverse_iterator;
- typedef <implementation-defined> const_reverse_iterator;
-
- typedef <implementation-defined> size_type;
- typedef <implementation-defined> difference_type;
- typedef <implementation-defined> allocator_type;
-
-public:
- explicit
- element_sequence \201xercesc::DOMDocument&\202;
-
- // DOMElement cannot be default-constructed.
- //
- // explicit
- // element_sequence \201size_type n\202;
-
- element_sequence \201size_type n,
- const xercesc::DOMElement&,
- xercesc::DOMDocument&\202;
-)WR(
- template <typename I>
- element_sequence \201const I& begin,
- const I& end,
- xercesc::DOMDocument&\202;
-
- element_sequence \201const element_sequence&, xercesc::DOMDocument&\202;
-
- element_sequence&
- operator= \201const element_sequence&\202;
-
-public:
- void
- assign \201size_type n, const xercesc::DOMElement&\202;
-
- template <typename I>
- void
- assign \201const I& begin, const I& end\202;
-
-public:
- // This version of resize can only be used to shrink the
- // sequence because DOMElement cannot be default-constructed.
- //
- void
- resize \201size_type\202;
-
- void
- resize \201size_type, const xercesc::DOMElement&\202;
-
-public:
- size_type)WR(
- size \201\202 const;
-
- size_type
- max_size \201\202 const;
-
- size_type
- capacity \201\202 const;
-
- bool
- empty \201\202 const;
-
- void
- reserve \201size_type\202;
-
- void
- clear \201\202;
-
-public:
- const_iterator
- begin \201\202 const;
-
- const_iterator
- end \201\202 const;
-
- iterator
- begin \201\202;
-
- iterator
- end \201\202;
-)WR(
- const_reverse_iterator
- rbegin \201\202 const;
-
- const_reverse_iterator
- rend \201\202 const
-
- reverse_iterator
- rbegin \201\202;
-
- reverse_iterator
- rend \201\202;
-
-public:
- xercesc::DOMElement&
- operator[] \201size_type\202;
-
- const xercesc::DOMElement&
- operator[] \201size_type\202 const;
-
- xercesc::DOMElement&
- at \201size_type\202;
-
- const xercesc::DOMElement&
- at \201size_type\202 const;
-
- xercesc::DOMElement&
- front \201\202;
-
- const xercesc::DOMElement&
- front \201\202 const;)WR(
-
- xercesc::DOMElement&
- back \201\202;
-
- const xercesc::DOMElement&
- back \201\202 const;
-
-public:
- // Makes a deep copy.
- //
- void
- push_back \201const xercesc::DOMElement&\202;
-
- // Assumes ownership.
- //
- void
- push_back \201xercesc::DOMElement*\202;
-
- void
- pop_back \201\202;
-
- // Makes a deep copy.
- //
- iterator
- insert \201iterator position, const xercesc::DOMElement&\202;
-
- // Assumes ownership.
- //
- iterator
- insert \201iterator position, xercesc::DOMElement*\202;)WR(
-
- void
- insert \201iterator position, size_type n, const xercesc::DOMElement&\202;
-
- template <typename I>
- void
- insert \201iterator position, const I& begin, const I& end\202;
-
- iterator
- erase \201iterator position\202;
-
- iterator
- erase \201iterator begin, iterator end\202;
-
-public:
- // Note that the DOMDocument object of the two sequences being
- // swapped should be the same.
- //
- void
- swap \201sequence& x\202;
-};
-
-inline bool
-operator== \201const element_sequence&, const element_sequence&\202;
-
-inline bool
-operator!= \201const element_sequence&, const element_sequence&\202;)RP(
-
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 20 63 PR(void
-f \201object& o, const xercesc::DOMElement& e\202
-{
- using namespace xercesc;
-
- object::any_sequence& s \201o.any \201\202\202;
-
- // Iteration.
- //
- for \201object::any_iterator i \201s.begin \201\202\202; i != s.end \201\202; ++i\202
- {
- DOMElement& e \201*i\202;
- }
-
- // Modification.
- //
- s.push_back \201e\202; // deep copy
- DOMDocument& doc \201o.dom_document \201\202\202;
- s.push_back \201doc.createElement \201...\202\202; // assumes ownership
-})RP(
-
- )0 3 57 H(2.12.4)WB 154 Sn()WB 61 Sn( Element Wild)HY(card)YH( Order)EA()EH(
-
- )0 P(Similar to elements, element wild)HY(cards)YH( in ordered types
- \201)0 51 1 A(Section 2.8.4, "Element Order")51 0 TN TL()Ec /AF f D(\202 are assigned
- content ids and are included in the content order sequence.
- Contin)HY(u)HY(ing)YH( with the bank trans)HY(ac)HY(tions)YH( example started in Section
- 2.8.4, we can extend the batch by allow)HY(ing)YH( custom trans)HY(ac)HY(tions)YH(:)EP(
-
- ) 7 52 PR(<complexType name="batch">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="withdraw" type="withdraw"/>
- <element name="deposit" type="deposit"/>
- <any namespace="##other" processContents="lax"/>
- </choice>
-</complexType>)RP(
-
- )0 P(This will lead to the follow)HY(ing)YH( changes in the gener)HY(ated)YH(
- )SM(batch)ES( C++ class:)EP(
-
- ) 24 58 PR(class batch: public xml_schema::type
-{
-public:
- ...
-
- // any
- //
- typedef element_sequence any_sequence;
- typedef any_sequence::iterator any_iterator;
- typedef any_sequence::const_iterator any_const_iterator;
-
- static const std::size_t any_id = 3UL;
-
- const any_sequence&
- any \201\202 const;
-
- any_sequence&
- any \201\202;
-
- void
- any \201const any_sequence&\202;
-
- ...
-};)RP(
-
- )0 P(With this change we also need to update the iter)HY(a)HY(tion)YH( code to handle
- the new content id:)EP(
-
- ) 18 73 PR(for \201batch::content_order_const_iterator i \201b.content_order \201\202.begin \201\202\202;
- i != b.content_order \201\202.end \201\202;
- ++i\202
-{
- switch \201i->id\202
- {
- ...
-
- case batch::any_id:
- {
- const DOMElement& e \201b.any \201\202[i->index]\202;
- ...
- break;
- }
-
- ...
- }
-})RP(
-
- )0 P(For the complete working code that shows the use of wild)HY(cards)YH( in
- ordered types refer to the )SM(order/element)ES( example in
- the )SM(exam)HY(ples)YH(/cxx/tree/)ES( direc)HY(tory)YH( in the XSD
- distri)HY(bu)HY(tion)YH(.)EP(
-
- )0 3 58 H(2.12.5)WB 155 Sn()WB 62 Sn( Mapping for )SM(anyAt)HY(tribute)YH()ES()EA()EH(
-
- )0 P(For )SM(anyAt)HY(tribute)YH()ES( the type defi)HY(ni)HY(tions)YH( consist of an alias
- of the container type with name )SM(any_attribute_set)ES(
- \201or )SM(any1_attribute_set)ES(, etc., for subse)HY(quent)YH( wild)HY(cards)YH(
- in the type defi)HY(ni)HY(tion)YH(\202, an alias of the iter)HY(a)HY(tor)YH( type with name
- )SM(any_attribute_iter)HY(a)HY(tor)YH()ES( \201or )SM(any1_attribute_iter)HY(a)HY(tor)YH()ES(,
- etc., for subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202, and an alias
- of the constant iter)HY(a)HY(tor)YH( type with name )SM(any_attribute_const_iter)HY(a)HY(tor)YH()ES(
- \201or )SM(any1_attribute_const_iter)HY(a)HY(tor)YH()ES(, etc., for subse)HY(quent)YH(
- wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202.
- )EP(
-
- )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
- container and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container and can
- be used for read-write access.
- )EP(
-
- )0 P(The modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
- constant of the container type. The modi)HY(fier)YH( func)HY(tion)YH( makes
- a deep copy of its argu)HY(ment)YH(. For instance:
- )EP(
-
-
- ) 6 37 PR(<complexType name="object">
- <sequence>
- ...
- </sequence>
- <anyAttribute namespace="##other"/>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 25 73 PR(class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef attribute_set any_attribute_set;
- typedef any_attribute_set::iterator any_attribute_iterator;
- typedef any_attribute_set::const_iterator any_attribute_const_iterator;
-
- // Accessors.
- //
- const any_attribute_set&
- any_attribute \201\202 const;
-
- any_attribute_set&
- any_attribute \201\202;
-
- // Modifier.
- //
- void
- any_attribute \201const any_attribute_set&\202;
-
- ...
-
-};)RP(
-
- )0 P(The )SM(attribute_set)ES( class is an asso)HY(cia)HY(tive)YH( container
- similar to the )SM(std::set)ES( class template as defined by
- the ISO/ANSI Stan)HY(dard)YH( for C++ \201ISO/IEC 14882:1998, Section 23.3.3,
- "Class template set"\202 with the key being the attribute's name
- and names)HY(pace)YH(. Unlike )SM(std::set)ES(, )SM(attribute_set)ES(
- allows search)HY(ing)YH( using names and names)HY(paces)YH( instead of
- )SM(xercesc::DOMAttr)ES( objects. It is defined in an
- imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH( and its inter)HY(face)YH( is presented
- below:
- )EP(
-
- ) 166 70 PR(class attribute_set
-{
-public:
- typedef xercesc::DOMAttr key_type;
- typedef xercesc::DOMAttr value_type;
- typedef xercesc::DOMAttr* pointer;
- typedef const xercesc::DOMAttr* const_pointer;
- typedef xercesc::DOMAttr& reference;
- typedef const xercesc::DOMAttr& const_reference;
-
- typedef <implementation-defined> iterator;
- typedef <implementation-defined> const_iterator;
- typedef <implementation-defined> reverse_iterator;
- typedef <implementation-defined> const_reverse_iterator;
-
- typedef <implementation-defined> size_type;
- typedef <implementation-defined> difference_type;
- typedef <implementation-defined> allocator_type;
-
-public:
- attribute_set \201xercesc::DOMDocument&\202;
-
- template <typename I>
- attribute_set \201const I& begin, const I& end, xercesc::DOMDocument&\202;
-
- attribute_set \201const attribute_set&, xercesc::DOMDocument&\202;
-
- attribute_set&
- operator= \201const attribute_set&\202;
-
-public:)WR(
- const_iterator
- begin \201\202 const;
-
- const_iterator
- end \201\202 const;
-
- iterator
- begin \201\202;
-
- iterator
- end \201\202;
-
- const_reverse_iterator
- rbegin \201\202 const;
-
- const_reverse_iterator
- rend \201\202 const;
-
- reverse_iterator
- rbegin \201\202;
-
- reverse_iterator
- rend \201\202;
-
-public:
- size_type
- size \201\202 const;
-
- size_type
- max_size \201\202 const;)WR(
-
- bool
- empty \201\202 const;
-
- void
- clear \201\202;
-
-public:
- // Makes a deep copy.
- //
- std::pair<iterator, bool>
- insert \201const xercesc::DOMAttr&\202;
-
- // Assumes ownership.
- //
- std::pair<iterator, bool>
- insert \201xercesc::DOMAttr*\202;
-
- // Makes a deep copy.
- //
- iterator
- insert \201iterator position, const xercesc::DOMAttr&\202;
-
- // Assumes ownership.
- //
- iterator
- insert \201iterator position, xercesc::DOMAttr*\202;
-
- template <typename I>
- void)WR(
- insert \201const I& begin, const I& end\202;
-
-public:
- void
- erase \201iterator position\202;
-
- size_type
- erase \201const std::basic_string<C>& name\202;
-
- size_type
- erase \201const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name\202;
-
- size_type
- erase \201const XMLCh* name\202;
-
- size_type
- erase \201const XMLCh* namespace_, const XMLCh* name\202;
-
- void
- erase \201iterator begin, iterator end\202;
-
-public:
- size_type
- count \201const std::basic_string<C>& name\202 const;
-
- size_type
- count \201const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name\202 const;
-)WR(
- size_type
- count \201const XMLCh* name\202 const;
-
- size_type
- count \201const XMLCh* namespace_, const XMLCh* name\202 const;
-
- iterator
- find \201const std::basic_string<C>& name\202;
-
- iterator
- find \201const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name\202;
-
- iterator
- find \201const XMLCh* name\202;
-
- iterator
- find \201const XMLCh* namespace_, const XMLCh* name\202;
-
- const_iterator
- find \201const std::basic_string<C>& name\202 const;
-
- const_iterator
- find \201const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name\202 const;
-
- const_iterator
- find \201const XMLCh* name\202 const;
-
- const_iterator)WR(
- find \201const XMLCh* namespace_, const XMLCh* name\202 const;
-
-public:
- // Note that the DOMDocument object of the two sets being
- // swapped should be the same.
- //
- void
- swap \201attribute_set&\202;
-};
-
-bool
-operator== \201const attribute_set&, const attribute_set&\202;
-
-bool
-operator!= \201const attribute_set&, const attribute_set&\202;)RP(
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 25 73 PR(void
-f \201object& o, const xercesc::DOMAttr& a\202
-{
- using namespace xercesc;
-
- object::any_attribute_set& s \201o.any_attribute \201\202\202;
-
- // Iteration.
- //
- for \201object::any_attribute_iterator i \201s.begin \201\202\202; i != s.end \201\202; ++i\202
- {
- DOMAttr& a \201*i\202;
- }
-
- // Modification.
- //
- s.insert \201a\202; // deep copy
- DOMDocument& doc \201o.dom_document \201\202\202;
- s.insert \201doc.createAttribute \201...\202\202; // assumes ownership
-
- // Searching.
- //
- object::any_attribute_iterator i \201s.find \201"name"\202\202;
- i = s.find \201"http://www.w3.org/XML/1998/namespace", "lang"\202;
-})RP(
-
-
-
- )0 2 59 H(2.13)WB 156 Sn()WB 63 Sn( Mapping for Mixed Content Models)EA()EH(
-
- )0 P(For XML Schema types with mixed content models C++/Tree provides
- mapping support only if the type is marked as ordered
- \201)0 51 1 A(Section 2.8.4, "Element Order")51 0 TN TL()Ec /AF f D(\202. Use the
- )SM(--ordered-type-mixed)ES( XSD compiler option to
- auto)HY(mat)HY(i)HY(cally)YH( mark all types with mixed content as ordered.)EP(
-
- )0 P(For an ordered type with mixed content, C++/Tree adds an extra
- text content sequence that is used to store the text frag)HY(ments)YH(.
- This text content sequence is also assigned the content id and
- its entries are included in the content order sequence, just
- like elements. As a result, it is possi)HY(ble)YH( to capture the order
- between elements and text frag)HY(ments)YH(.)EP(
-
- )0 P(As an example, consider the follow)HY(ing)YH( schema that describes text
- with embed)HY(ded)YH( links:)EP(
-
- ) 13 73 PR(<complexType name="anchor">
- <simpleContent>
- <extension base="string">
- <attribute name="href" type="anyURI" use="required"/>
- </extension>
- </simpleContent>
-</complexType>
-
-<complexType name="text" mixed="true">
- <sequence>
- <element name="a" type="anchor" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(The gener)HY(ated)YH( )SM(text)ES( C++ class will provide the follow)HY(ing)YH(
- API \201assum)HY(ing)YH( it is marked as ordered\202:)EP(
-
- ) 57 78 PR(class text: public xml_schema::type
-{
-public:
- // a
- //
- typedef anchor a_type;
- typedef sequence<a_type> a_sequence;
- typedef a_sequence::iterator a_iterator;
- typedef a_sequence::const_iterator a_const_iterator;
-
- static const std::size_t a_id = 1UL;
-
- const a_sequence&
- a \201\202 const;
-
- a_sequence&
- a \201\202;
-
- void
- a \201const a_sequence&\202;
-
- // text_content
- //
- typedef xml_schema::string text_content_type;
- typedef sequence<text_content_type> text_content_sequence;
- typedef text_content_sequence::iterator text_content_iterator;
- typedef text_content_sequence::const_iterator text_content_const_iterator;
-
- static const std::size_t text_content_id = 2UL;
-
- const text_content_sequence&)WR(
- text_content \201\202 const;
-
- text_content_sequence&
- text_content \201\202;
-
- void
- text_content \201const text_content_sequence&\202;
-
- // content_order
- //
- typedef xml_schema::content_order content_order_type;
- typedef std::vector<content_order_type> content_order_sequence;
- typedef content_order_sequence::iterator content_order_iterator;
- typedef content_order_sequence::const_iterator content_order_const_iterator;
-
- const content_order_sequence&
- content_order \201\202 const;
-
- content_order_sequence&
- content_order \201\202;
-
- void
- content_order \201const content_order_sequence&\202;
-
- ...
-};)RP(
-
- )0 P(Given this inter)HY(face)YH( we can iterate over both link elements
- and text in content order. The follow)HY(ing)YH( code frag)HY(ment)YH( converts
- our format to plain text with refer)HY(ences)YH(.)EP(
-
- ) 26 72 PR(const text& t = ...
-
-for \201text::content_order_const_iterator i \201t.content_order \201\202.begin \201\202\202;
- i != t.content_order \201\202.end \201\202;
- ++i\202
-{
- switch \201i->id\202
- {
- case text::a_id:
- {
- const anchor& a \201t.a \201\202[i->index]\202;
- cerr << a << "[" << a.href \201\202 << "]";
- break;
- }
- case text::text_content_id:
- {
- const xml_schema::string& s \201t.text_content \201\202[i->index]\202;
- cerr << s;
- break;
- }
- default:
- {
- assert \201false\202; // Unknown content id.
- }
- }
-})RP(
-
- )0 P(For the complete working code that shows the use of mixed content
- in ordered types refer to the )SM(order/mixed)ES( example in
- the )SM(exam)HY(ples)YH(/cxx/tree/)ES( direc)HY(tory)YH( in the XSD
- distri)HY(bu)HY(tion)YH(.)EP(
-
-
-
-
- )0 1 60 H(3)WB 157 Sn()WB 64 Sn( Parsing)EA()EH(
-
- )0 P(This chapter covers various aspects of parsing XML instance
- docu)HY(ments)YH( in order to obtain corre)HY(spond)HY(ing)YH( tree-like object
- model.
- )EP(
-
- )0 P(Each global XML Schema element in the form:)EP(
-
- ) 1 34 PR(<element name="name" type="type"/>)RP(
-
- )0 P(is mapped to 14 over)HY(loaded)YH( C++ func)HY(tions)YH( in the form:)EP(
-
- ) 96 65 PR(// Read from a URI or a local file.
-//
-
-std::[auto|unique]_ptr<type>
-name \201const std::basic_string<C>& uri,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::[auto|unique]_ptr<type>
-name \201const std::basic_string<C>& uri,
- xml_schema::error_handler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::[auto|unique]_ptr<type>
-name \201const std::basic_string<C>& uri,
- xercesc::DOMErrorHandler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-
-// Read from std::istream.
-//
-
-std::[auto|unique]_ptr<type>
-name \201std::istream&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::[auto|unique]_ptr<type>
-name \201std::istream&,)WR(
- xml_schema::error_handler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::[auto|unique]_ptr<type>
-name \201std::istream&,
- xercesc::DOMErrorHandler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-
-std::[auto|unique]_ptr<type>
-name \201std::istream&,
- const std::basic_string<C>& id,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::[auto|unique]_ptr<type>
-name \201std::istream&,
- const std::basic_string<C>& id,
- xml_schema::error_handler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::[auto|unique]_ptr<type>
-name \201std::istream&,
- const std::basic_string<C>& id,
- xercesc::DOMErrorHandler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;)WR(
-
-
-// Read from InputSource.
-//
-
-std::[auto|unique]_ptr<type>
-name \201xercesc::InputSource&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::[auto|unique]_ptr<type>
-name \201xercesc::InputSource&,
- xml_schema::error_handler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::[auto|unique]_ptr<type>
-name \201xercesc::InputSource&,
- xercesc::DOMErrorHandler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-
-// Read from DOM.
-//
-
-std::[auto|unique]_ptr<type>
-name \201const xercesc::DOMDocument&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;)WR(
-
-std::[auto|unique]_ptr<type>
-name \201xml_schema::dom::[auto|unique]_ptr<xercesc::DOMDocument>,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;)RP(
-
- )0 P(You can choose between reading an XML instance from a local file,
- URI, )SM(std::istream)ES(, )SM(xercesc::Input)HY(Source)YH()ES(,
- or a pre-parsed DOM instance in the form of
- )SM(xercesc::DOMDoc)HY(u)HY(ment)YH()ES(. All the parsing func)HY(tions)YH(
- return a dynam)HY(i)HY(cally)YH( allo)HY(cated)YH( object model as either
- )SM(std::auto_ptr)ES( or )SM(std::unique_ptr)ES(,
- depend)HY(ing)YH( on the C++ stan)HY(dard)YH( selected. Each of these parsing
- func)HY(tions)YH( is discussed in more detail in the follow)HY(ing)YH( sections.
- )EP(
-
- )0 2 61 H(3.1)WB 158 Sn()WB 65 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)EA()EH(
-
- )0 P(Some parsing func)HY(tions)YH( expect you to initial)HY(ize)YH( the Xerces-C++
- runtime while others initial)HY(ize)YH( and termi)HY(nate)YH( it as part of their
- work. The general rule is as follows: if a func)HY(tion)YH( has any argu)HY(ments)YH(
- or return a value that is an instance of a Xerces-C++ type, then
- this func)HY(tion)YH( expects you to initial)HY(ize)YH( the Xerces-C++ runtime.
- Other)HY(wise)YH(, the func)HY(tion)YH( initial)HY(izes)YH( and termi)HY(nates)YH( the runtime for
- you. Note that it is legal to have nested calls to the Xerces-C++
- initial)HY(ize)YH( and termi)HY(nate)YH( func)HY(tions)YH( as long as the calls are balanced.
- )EP(
-
- )0 P(You can instruct parsing func)HY(tions)YH( that initial)HY(ize)YH( and termi)HY(nate)YH(
- the runtime not to do so by passing the
- )SM(xml_schema::flags::dont_initial)HY(ize)YH()ES( flag \201see
- )0 66 1 A(Section 3.2, "Flags and Prop)HY(er)HY(ties)YH(")66 0 TN TL()Ec /AF f D(\202.
- )EP(
-
-
- )0 2 62 H(3.2)WB 159 Sn()WB 66 Sn( Flags and Prop)HY(er)HY(ties)YH()EA()EH(
-
- )0 P(Parsing flags and prop)HY(er)HY(ties)YH( are the last two argu)HY(ments)YH( of every
- parsing func)HY(tion)YH(. They allow you to fine-tune the process of
- instance vali)HY(da)HY(tion)YH( and parsing. Both argu)HY(ments)YH( are optional.
- )EP(
-
-
- )0 P(The follow)HY(ing)YH( flags are recog)HY(nized)YH( by the parsing func)HY(tions)YH(:)EP(
-
- )0 DL( )0 DT()SM(xml_schema::flags::keep_dom)ES(
- )DD(Keep asso)HY(ci)HY(a)HY(tion)YH( between DOM nodes and the result)HY(ing)YH(
- object model nodes. For more infor)HY(ma)HY(tion)YH( about DOM asso)HY(ci)HY(a)HY(tion)YH(
- refer to )0 93 1 A(Section 5.1, "DOM Asso)HY(ci)HY(a)HY(tion)YH(")93 0 TN TL()Ec /AF f D(.
-
- )0 DT()SM(xml_schema::flags::own_dom)ES(
- )DD(Assume owner)HY(ship)YH( of the DOM docu)HY(ment)YH( passed. This flag only
- makes sense together with the )SM(keep_dom)ES( flag in
- the call to the parsing func)HY(tion)YH( with the
- )SM(xml_schema::dom::[auto|unique]_ptr<DOMDoc)HY(u)HY(ment)YH(>)ES(
- argu)HY(ment)YH(.
-
- )0 DT()SM(xml_schema::flags::dont_vali)HY(date)YH()ES(
- )DD(Do not vali)HY(date)YH( instance docu)HY(ments)YH( against schemas.
-
- )0 DT()SM(xml_schema::flags::dont_initial)HY(ize)YH()ES(
- )DD(Do not initial)HY(ize)YH( the Xerces-C++ runtime.
- )LD(
-
- )0 P(You can pass several flags by combin)HY(ing)YH( them using the bit-wise OR
- oper)HY(a)HY(tor)YH(. For example:)EP(
-
- ) 4 61 PR(using xml_schema::flags;
-
-std::auto_ptr<type> r \201
- name \201"test.xml", flags::keep_dom | flags::dont_validate\202\202;)RP(
-
- )0 P(By default, vali)HY(da)HY(tion)YH( of instance docu)HY(ments)YH( is turned on even
- though parsers gener)HY(ated)YH( by XSD do not assume instance
- docu)HY(ments)YH( are valid. They include a number of checks that prevent
- construc)HY(tion)YH( of incon)HY(sis)HY(tent)YH( object models. This,
- however, does not mean that an instance docu)HY(ment)YH( that was
- success)HY(fully)YH( parsed by the XSD-gener)HY(ated)YH( parsers is
- valid per the corre)HY(spond)HY(ing)YH( schema. If an instance docu)HY(ment)YH( is not
- "valid enough" for the gener)HY(ated)YH( parsers to construct consis)HY(tent)YH(
- object model, one of the excep)HY(tions)YH( defined in
- )SM(xml_schema)ES( names)HY(pace)YH( is thrown \201see
- )0 67 1 A(Section 3.3, "Error Handling")67 0 TN TL()Ec /AF f D(\202.
- )EP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( on the Xerces-C++ runtime initial)HY(iza)HY(tion)YH(
- refer to )0 65 1 A(Section 3.1, "Initial)HY(iz)HY(ing)YH( the Xerces-C++
- Runtime")65 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 P(The )SM(xml_schema::prop)HY(er)HY(ties)YH()ES( class allows you to
- program)HY(mat)HY(i)HY(cally)YH( specify schema loca)HY(tions)YH( to be used instead
- of those spec)HY(i)HY(fied)YH( with the )SM(xsi::schemaLo)HY(ca)HY(tion)YH()ES(
- and )SM(xsi::noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES( attributes
- in instance docu)HY(ments)YH(. The inter)HY(face)YH( of the )SM(prop)HY(er)HY(ties)YH()ES(
- class is presented below:
- )EP(
-
- ) 9 70 PR(class properties
-{
-public:
- void
- schema_location \201const std::basic_string<C>& namespace_,
- const std::basic_string<C>& location\202;
- void
- no_namespace_schema_location \201const std::basic_string<C>& location\202;
-};)RP(
-
- )0 P(Note that all loca)HY(tions)YH( are rela)HY(tive)YH( to an instance docu)HY(ment)YH( unless
- they are URIs. For example, if you want to use a local file as your
- schema, then you will need to pass
- )SM(file:///abso)HY(lute)YH(/path/to/your/schema)ES( as the loca)HY(tion)YH(
- argu)HY(ment)YH(.
- )EP(
-
- )0 2 63 H(3.3)WB 160 Sn()WB 67 Sn( Error Handling)EA()EH(
-
- )0 P(As discussed in )0 14 1 A(Section 2.2, "Error Handling")14 0 TN TL()Ec /AF f D(,
- the mapping uses the C++ excep)HY(tion)YH( handling mech)HY(a)HY(nism)YH( as its primary
- way of report)HY(ing)YH( error condi)HY(tions)YH(. However, to handle recov)HY(er)HY(able)YH(
- parsing and vali)HY(da)HY(tion)YH( errors and warn)HY(ings)YH(, a call)HY(back)YH( inter)HY(face)YH( maybe
- preferred by the appli)HY(ca)HY(tion)YH(.)EP(
-
- )0 P(To better under)HY(stand)YH( error handling and report)HY(ing)YH( strate)HY(gies)YH( employed
- by the parsing func)HY(tions)YH(, it is useful to know that the
- trans)HY(for)HY(ma)HY(tion)YH( of an XML instance docu)HY(ment)YH( to a stat)HY(i)HY(cally)YH(-typed
- tree happens in two stages. The first stage, performed by Xerces-C++,
- consists of parsing an XML docu)HY(ment)YH( into a DOM instance. For short,
- we will call this stage the XML-DOM stage. Vali)HY(da)HY(tion)YH(, if not disabled,
- happens during this stage. The second stage,
- performed by the gener)HY(ated)YH( parsers, consist of parsing the DOM
- instance into the stat)HY(i)HY(cally)YH(-typed tree. We will call this stage
- the DOM-Tree stage. Addi)HY(tional)YH( checks are performed during this
- stage in order to prevent construc)HY(tion)YH( of incon)HY(sis)HY(tent)YH( tree which
- could other)HY(wise)YH( happen when vali)HY(da)HY(tion)YH( is disabled, for example.)EP(
-
- )0 P(All parsing func)HY(tions)YH( except the one that oper)HY(ates)YH( on a DOM instance
- come in over)HY(loaded)YH( triples. The first func)HY(tion)YH( in such a triple
- reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH( excep)HY(tions)YH(. It
- accu)HY(mu)HY(lates)YH( all the parsing and vali)HY(da)HY(tion)YH( errors of the XML-DOM
- stage and throws them in a single instance of the
- )SM(xml_schema::parsing)ES( excep)HY(tion)YH( \201described below\202.
- The second and the third func)HY(tions)YH( in the triple use call)HY(back)YH(
- inter)HY(faces)YH( to report parsing and vali)HY(da)HY(tion)YH( errors and warn)HY(ings)YH(.
- The two call)HY(back)YH( inter)HY(faces)YH( are )SM(xml_schema::error_handler)ES(
- and )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES(. For more infor)HY(ma)HY(tion)YH(
- on the )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES( inter)HY(face)YH( refer to
- the Xerces-C++ docu)HY(men)HY(ta)HY(tion)YH(. The )SM(xml_schema::error_handler)ES(
- inter)HY(face)YH( is presented below:
- )EP(
-
- ) 23 51 PR(class error_handler
-{
-public:
- struct severity
- {
- enum value
- {
- warning,
- error,
- fatal
- };
- };
-
- virtual bool
- handle \201const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- severity,
- const std::basic_string<C>& message\202 = 0;
-
- virtual
- ~error_handler \201\202;
-};)RP(
-
- )0 P(The )SM(id)ES( argu)HY(ment)YH( of the )SM(error_handler::handle)ES(
- func)HY(tion)YH( iden)HY(ti)HY(fies)YH( the resource being parsed \201e.g., a file name or
- URI\202.
- )EP(
-
- )0 P(By return)HY(ing)YH( )SM(true)ES( from the )SM(handle)ES( func)HY(tion)YH(
- you instruct the parser to recover and continue parsing. Return)HY(ing)YH(
- )SM(false)ES( results in termi)HY(na)HY(tion)YH( of the parsing process.
- An error with the )SM(fatal)ES( sever)HY(ity)YH( level results in
- termi)HY(na)HY(tion)YH( of the parsing process no matter what is returned from
- the )SM(handle)ES( func)HY(tion)YH(. It is safe to throw an excep)HY(tion)YH(
- from the )SM(handle)ES( func)HY(tion)YH(.
- )EP(
-
- )0 P(The DOM-Tree stage reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH(
- excep)HY(tions)YH(. Indi)HY(vid)HY(ual)YH( excep)HY(tions)YH( thrown by the parsing func)HY(tions)YH(
- are described in the follow)HY(ing)YH( sub-sections.
- )EP(
-
-
- )0 3 64 H(3.3.1)WB 161 Sn()WB 68 Sn( )SM(xml_schema::parsing)ES()EA()EH(
-
- ) 57 56 PR(struct severity
-{
- enum value
- {
- warning,
- error
- };
-
- severity \201value\202;
- operator value \201\202 const;
-};
-
-struct error
-{
- error \201severity,
- const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- const std::basic_string<C>& message\202;
-
- severity
- severity \201\202 const;
-
- const std::basic_string<C>&
- id \201\202 const;
-
- unsigned long
- line \201\202 const;
-
- unsigned long
- column \201\202 const;)WR(
-
- const std::basic_string<C>&
- message \201\202 const;
-};
-
-std::basic_ostream<C>&
-operator<< \201std::basic_ostream<C>&, const error&\202;
-
-struct diagnostics: std::vector<error>
-{
-};
-
-std::basic_ostream<C>&
-operator<< \201std::basic_ostream<C>&, const diagnostics&\202;
-
-struct parsing: virtual exception
-{
- parsing \201\202;
- parsing \201const diagnostics&\202;
-
- const diagnostics&
- diagnostics \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::parsing)ES( excep)HY(tion)YH( is thrown if there
- were parsing or vali)HY(da)HY(tion)YH( errors reported during the XML-DOM stage.
- If no call)HY(back)YH( inter)HY(face)YH( was provided to the parsing func)HY(tion)YH(, the
- excep)HY(tion)YH( contains a list of errors and warn)HY(ings)YH( acces)HY(si)HY(ble)YH( using
- the )SM(diag)HY(nos)HY(tics)YH()ES( func)HY(tion)YH(. The usual condi)HY(tions)YH( when
- this excep)HY(tion)YH( is thrown include malformed XML instances and, if
- vali)HY(da)HY(tion)YH( is turned on, invalid instance docu)HY(ments)YH(.
- )EP(
-
- )0 3 65 H(3.3.2)WB 162 Sn()WB 69 Sn( )SM(xml_schema::expected_element)ES()EA()EH(
-
- ) 16 60 PR(struct expected_element: virtual exception
-{
- expected_element \201const std::basic_string<C>& name,
- const std::basic_string<C>& namespace_\202;
-
-
- const std::basic_string<C>&
- name \201\202 const;
-
- const std::basic_string<C>&
- namespace_ \201\202 const;
-
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::expected_element)ES( excep)HY(tion)YH( is thrown
- when an expected element is not encoun)HY(tered)YH( by the DOM-Tree stage.
- The name and names)HY(pace)YH( of the expected element can be obtained using
- the )SM(name)ES( and )SM(names)HY(pace)YH(_)ES( func)HY(tions)YH( respec)HY(tively)YH(.
- )EP(
-
-
- )0 3 66 H(3.3.3)WB 163 Sn()WB 70 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()EA()EH(
-
- ) 25 72 PR(struct unexpected_element: virtual exception
-{
- unexpected_element \201const std::basic_string<C>& encountered_name,
- const std::basic_string<C>& encountered_namespace,
- const std::basic_string<C>& expected_name,
- const std::basic_string<C>& expected_namespace\202
-
-
- const std::basic_string<C>&
- encountered_name \201\202 const;
-
- const std::basic_string<C>&
- encountered_namespace \201\202 const;
-
-
- const std::basic_string<C>&
- expected_name \201\202 const;
-
- const std::basic_string<C>&
- expected_namespace \201\202 const;
-
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::unex)HY(pected)YH(_element)ES( excep)HY(tion)YH( is thrown
- when an unex)HY(pected)YH( element is encoun)HY(tered)YH( by the DOM-Tree stage.
- The name and names)HY(pace)YH( of the encoun)HY(tered)YH( element can be obtained
- using the )SM(encoun)HY(tered)YH(_name)ES( and
- )SM(encoun)HY(tered)YH(_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. If an
- element was expected instead of the encoun)HY(tered)YH( one, its name
- and names)HY(pace)YH( can be obtained using the )SM(expected_name)ES( and
- )SM(expected_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. Other)HY(wise)YH(
- these func)HY(tions)YH( return empty strings.
- )EP(
-
- )0 3 67 H(3.3.4)WB 164 Sn()WB 71 Sn( )SM(xml_schema::expected_attribute)ES()EA()EH(
-
- ) 16 62 PR(struct expected_attribute: virtual exception
-{
- expected_attribute \201const std::basic_string<C>& name,
- const std::basic_string<C>& namespace_\202;
-
-
- const std::basic_string<C>&
- name \201\202 const;
-
- const std::basic_string<C>&
- namespace_ \201\202 const;
-
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::expected_attribute)ES( excep)HY(tion)YH( is thrown
- when an expected attribute is not encoun)HY(tered)YH( by the DOM-Tree stage.
- The name and names)HY(pace)YH( of the expected attribute can be obtained using
- the )SM(name)ES( and )SM(names)HY(pace)YH(_)ES( func)HY(tions)YH( respec)HY(tively)YH(.
- )EP(
-
-
- )0 3 68 H(3.3.5)WB 165 Sn()WB 72 Sn( )SM(xml_schema::unex)HY(pected)YH(_enumer)HY(a)HY(tor)YH()ES()EA()EH(
-
- ) 10 65 PR(struct unexpected_enumerator: virtual exception
-{
- unexpected_enumerator \201const std::basic_string<C>& enumerator\202;
-
- const std::basic_string<C>&
- enumerator \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::unex)HY(pected)YH(_enumer)HY(a)HY(tor)YH()ES( excep)HY(tion)YH( is thrown
- when an unex)HY(pected)YH( enumer)HY(a)HY(tor)YH( is encoun)HY(tered)YH( by the DOM-Tree stage.
- The enumer)HY(a)HY(tor)YH( can be obtained using the )SM(enumer)HY(a)HY(tor)YH()ES(
- func)HY(tions)YH(.
- )EP(
-
- )0 3 69 H(3.3.6)WB 166 Sn()WB 73 Sn( )SM(xml_schema::expected_text_content)ES()EA()EH(
-
- ) 5 47 PR(struct expected_text_content: virtual exception
-{
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::expected_text_content)ES( excep)HY(tion)YH( is thrown
- when a content other than text is encoun)HY(tered)YH( and the text content was
- expected by the DOM-Tree stage.
- )EP(
-
- )0 3 70 H(3.3.7)WB 167 Sn()WB 74 Sn( )SM(xml_schema::no_type_info)ES()EA()EH(
-
- ) 14 60 PR(struct no_type_info: virtual exception
-{
- no_type_info \201const std::basic_string<C>& type_name,
- const std::basic_string<C>& type_namespace\202;
-
- const std::basic_string<C>&
- type_name \201\202 const;
-
- const std::basic_string<C>&
- type_namespace \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::no_type_info)ES( excep)HY(tion)YH( is thrown
- when there is no type infor)HY(ma)HY(tion)YH( asso)HY(ci)HY(ated)YH( with a type spec)HY(i)HY(fied)YH(
- by the )SM(xsi:type)ES( attribute. This excep)HY(tion)YH( is thrown
- by the DOM-Tree stage. The name and names)HY(pace)YH( of the type in ques)HY(tion)YH(
- can be obtained using the )SM(type_name)ES( and
- )SM(type_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. Usually, catch)HY(ing)YH(
- this excep)HY(tion)YH( means that you haven't linked the code gener)HY(ated)YH(
- from the schema defin)HY(ing)YH( the type in ques)HY(tion)YH( with your appli)HY(ca)HY(tion)YH(
- or this schema has been compiled without the
- )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option.
- )EP(
-
-
- )0 3 71 H(3.3.8)WB 168 Sn()WB 75 Sn( )SM(xml_schema::not_derived)ES()EA()EH(
-
- ) 23 67 PR(struct not_derived: virtual exception
-{
- not_derived \201const std::basic_string<C>& base_type_name,
- const std::basic_string<C>& base_type_namespace,
- const std::basic_string<C>& derived_type_name,
- const std::basic_string<C>& derived_type_namespace\202;
-
- const std::basic_string<C>&
- base_type_name \201\202 const;
-
- const std::basic_string<C>&
- base_type_namespace \201\202 const;
-
-
- const std::basic_string<C>&
- derived_type_name \201\202 const;
-
- const std::basic_string<C>&
- derived_type_namespace \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::not_derived)ES( excep)HY(tion)YH( is thrown
- when a type spec)HY(i)HY(fied)YH( by the )SM(xsi:type)ES( attribute is
- not derived from the expected base type. This excep)HY(tion)YH( is thrown
- by the DOM-Tree stage. The name and names)HY(pace)YH( of the expected
- base type can be obtained using the )SM(base_type_name)ES( and
- )SM(base_type_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. The name
- and names)HY(pace)YH( of the offend)HY(ing)YH( type can be obtained using the
- )SM(derived_type_name)ES( and
- )SM(derived_type_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(.
- )EP(
-
- )0 3 72 H(3.3.9)WB 169 Sn()WB 76 Sn( )SM(xml_schema::no_prefix_mapping)ES()EA()EH(
-
- ) 10 57 PR(struct no_prefix_mapping: virtual exception
-{
- no_prefix_mapping \201const std::basic_string<C>& prefix\202;
-
- const std::basic_string<C>&
- prefix \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::no_prefix_mapping)ES( excep)HY(tion)YH( is thrown
- during the DOM-Tree stage if a names)HY(pace)YH( prefix is encoun)HY(tered)YH( for
- which a prefix-names)HY(pace)YH( mapping hasn't been provided. The names)HY(pace)YH(
- prefix in ques)HY(tion)YH( can be obtained using the )SM(prefix)ES(
- func)HY(tion)YH(.
- )EP(
-
- )0 2 73 H(3.4)WB 170 Sn()WB 77 Sn( Reading from a Local File or URI)EA()EH(
-
- )0 P(Using a local file or URI is the simplest way to parse an XML instance.
- For example:)EP(
-
- ) 4 67 PR(using std::auto_ptr;
-
-auto_ptr<type> r1 \201name \201"test.xml"\202\202;
-auto_ptr<type> r2 \201name \201"http://www.codesynthesis.com/test.xml"\202\202;)RP(
-
- )0 P(Or, in the C++11 mode:)EP(
-
- ) 4 69 PR(using std::unique_ptr;
-
-unique_ptr<type> r1 \201name \201"test.xml"\202\202;
-unique_ptr<type> r2 \201name \201"http://www.codesynthesis.com/test.xml"\202\202;)RP(
-
- )0 2 74 H(3.5)WB 171 Sn()WB 78 Sn( Reading from )SM(std::istream)ES()EA()EH(
-
- )0 P(When using an )SM(std::istream)ES( instance, you may also
- pass an optional resource id. This id is used to iden)HY(tify)YH( the
- resource \201for example in error messages\202 as well as to resolve
- rela)HY(tive)YH( paths. For instance:)EP(
-
- ) 12 48 PR(using std::auto_ptr;
-
-{
- std::ifstream ifs \201"test.xml"\202;
- auto_ptr<type> r \201name \201ifs, "test.xml"\202\202;
-}
-
-{
- std::string str \201"..."\202; // Some XML fragment.
- std::istringstream iss \201str\202;
- auto_ptr<type> r \201name \201iss\202\202;
-})RP(
-
- )0 2 75 H(3.6)WB 172 Sn()WB 79 Sn( Reading from )SM(xercesc::Input)HY(Source)YH()ES()EA()EH(
-
- )0 P(Reading from a )SM(xercesc::Input)HY(Source)YH()ES( instance
- is similar to the )SM(std::istream)ES( case except
- the resource id is main)HY(tained)YH( by the )SM(Input)HY(Source)YH()ES(
- object. For instance:)EP(
-
- ) 2 34 PR(xercesc::StdInInputSource is;
-std::auto_ptr<type> r \201name \201is\202\202;)RP(
-
- )0 2 76 H(3.7)WB 173 Sn()WB 80 Sn( Reading from DOM)EA()EH(
-
- )0 P(Reading from a )SM(xercesc::DOMDoc)HY(u)HY(ment)YH()ES( instance allows
- you to setup a custom XML-DOM stage. Things like DOM
- parser reuse, schema pre-parsing, and schema caching can be achieved
- with this approach. For more infor)HY(ma)HY(tion)YH( on how to obtain DOM
- repre)HY(sen)HY(ta)HY(tion)YH( from an XML instance refer to the Xerces-C++
- docu)HY(men)HY(ta)HY(tion)YH(. In addi)HY(tion)YH(, the
- )R7 2 A(C++/Tree Mapping
- FAQ)EA( shows how to parse an XML instance to a Xerces-C++
- DOM docu)HY(ment)YH( using the XSD runtime util)HY(i)HY(ties)YH(.
- )EP(
-
- )0 P(The last parsing func)HY(tion)YH( is useful when you would like to perform
- your own XML-to-DOM parsing and as)HY(so)HY(ciate)YH( the result)HY(ing)YH( DOM docu)HY(ment)YH(
- with the object model nodes. The auto)HY(matic)YH( )SM(DOMDoc)HY(u)HY(ment)YH()ES(
- pointer is reset and the result)HY(ing)YH( object model assumes owner)HY(ship)YH(
- of the DOM docu)HY(ment)YH( passed. For example:)EP(
-
- ) 18 72 PR(// C++98 version.
-//
-xml_schema::dom::auto_ptr<xercesc::DOMDocument> doc = ...
-
-std::auto_ptr<type> r \201
- name \201doc, xml_schema::flags::keep_dom | xml_schema::flags::own_dom\202\202;
-
-// At this point doc is reset to 0.
-
-// C++11 version.
-//
-xml_schema::dom::unique_ptr<xercesc::DOMDocument> doc = ...
-
-std::unique_ptr<type> r \201
- name \201std::move \201doc\202,
- xml_schema::flags::keep_dom | xml_schema::flags::own_dom\202\202;
-
-// At this point doc is reset to 0.)RP(
-
- )0 1 77 H(4)WB 174 Sn()WB 81 Sn( Seri)HY(al)HY(iza)HY(tion)YH()EA()EH(
-
- )0 P(This chapter covers various aspects of seri)HY(al)HY(iz)HY(ing)YH( a
- tree-like object model to DOM or XML.
- In this regard, seri)HY(al)HY(iza)HY(tion)YH( is compli)HY(men)HY(tary)YH( to the reverse
- process of parsing a DOM or XML instance into an object model
- which is discussed in )0 64 1 A(Chapter 3,
- "Parsing")64 0 TN TL()Ec /AF f D(. Note that the gener)HY(a)HY(tion)YH( of the seri)HY(al)HY(iza)HY(tion)YH( code
- is optional and should be explic)HY(itly)YH( requested with the
- )SM(--gener)HY(ate)YH(-seri)HY(al)HY(iza)HY(tion)YH()ES( option. See the
- )R8 2 A(XSD
- Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH(.
- )EP(
-
- )0 P(Each global XML Schema element in the form:
- )EP(
-
-
- ) 1 38 PR(<xsd:element name="name" type="type"/>)RP(
-
- )0 P(is mapped to 8 over)HY(loaded)YH( C++ func)HY(tions)YH( in the form:)EP(
-
- ) 70 56 PR(// Serialize to std::ostream.
-//
-void
-name \201std::ostream&,
- const type&,
- const xml_schema::namespace_fomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-void
-name \201std::ostream&,
- const type&,
- xml_schema::error_handler&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-void
-name \201std::ostream&,
- const type&,
- xercesc::DOMErrorHandler&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-
-// Serialize to XMLFormatTarget.
-//)WR(
-void
-name \201xercesc::XMLFormatTarget&,
- const type&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-void
-name \201xercesc::XMLFormatTarget&,
- const type&,
- xml_schema::error_handler&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-void
-name \201xercesc::XMLFormatTarget&,
- const type&,
- xercesc::DOMErrorHandler&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-
-// Serialize to DOM.
-//
-xml_schema::dom::[auto|unique]_ptr<xercesc::DOMDocument>)WR(
-name \201const type&,
- const xml_schema::namespace_infomap&
- xml_schema::namespace_infomap \201\202,
- xml_schema::flags = 0\202;
-
-void
-name \201xercesc::DOMDocument&,
- const type&,
- xml_schema::flags = 0\202;)RP(
-
- )0 P(You can choose between writing XML to )SM(std::ostream)ES( or
- )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES( and creat)HY(ing)YH( a DOM instance
- in the form of )SM(xercesc::DOMDoc)HY(u)HY(ment)YH()ES(. Seri)HY(al)HY(iza)HY(tion)YH(
- to )SM(ostream)ES( or )SM(XMLFor)HY(mat)HY(Tar)HY(get)YH()ES( requires a
- consid)HY(er)HY(ably)YH( less work while seri)HY(al)HY(iza)HY(tion)YH( to DOM provides
- for greater flex)HY(i)HY(bil)HY(ity)YH(. Each of these seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(
- is discussed in more detail in the follow)HY(ing)YH( sections.
- )EP(
-
-
- )0 2 78 H(4.1)WB 175 Sn()WB 82 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)EA()EH(
-
- )0 P(Some seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( expect you to initial)HY(ize)YH( the Xerces-C++
- runtime while others initial)HY(ize)YH( and termi)HY(nate)YH( it as part of their
- work. The general rule is as follows: if a func)HY(tion)YH( has any argu)HY(ments)YH(
- or return a value that is an instance of a Xerces-C++ type, then
- this func)HY(tion)YH( expects you to initial)HY(ize)YH( the Xerces-C++ runtime.
- Other)HY(wise)YH(, the func)HY(tion)YH( initial)HY(izes)YH( and termi)HY(nates)YH( the runtime for
- you. Note that it is legal to have nested calls to the Xerces-C++
- initial)HY(ize)YH( and termi)HY(nate)YH( func)HY(tions)YH( as long as the calls are balanced.
- )EP(
-
- )0 P(You can instruct seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( that initial)HY(ize)YH( and termi)HY(nate)YH(
- the runtime not to do so by passing the
- )SM(xml_schema::flags::dont_initial)HY(ize)YH()ES( flag \201see
- )0 84 1 A(Section 4.3, "Flags")84 0 TN TL()Ec /AF f D(\202.
- )EP(
-
- )0 2 79 H(4.2)WB 176 Sn()WB 83 Sn( Names)HY(pace)YH( Infomap and Char)HY(ac)HY(ter)YH( Encod)HY(ing)YH()EA()EH(
-
- )0 P(When a docu)HY(ment)YH( being seri)HY(al)HY(ized)YH( uses XML names)HY(paces)YH(, custom
- prefix-names)HY(pace)YH( asso)HY(ci)HY(a)HY(tions)YH( can to be estab)HY(lished)YH(. If custom
- prefix-names)HY(pace)YH( mapping is not provided then generic prefixes
- \201)SM(p1)ES(, )SM(p2)ES(, etc\202 are auto)HY(mat)HY(i)HY(cally)YH( assigned
- to names)HY(paces)YH( as needed. Also, if
- you would like the result)HY(ing)YH( instance docu)HY(ment)YH( to contain the
- )SM(schemaLo)HY(ca)HY(tion)YH()ES( or )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES(
- attributes, you will need to provide names)HY(pace)YH(-schema asso)HY(ci)HY(a)HY(tions)YH(.
- The )SM(xml_schema::names)HY(pace)YH(_infomap)ES( class is used
- to capture this infor)HY(ma)HY(tion)YH(:)EP(
-
- ) 16 63 PR(struct namespace_info
-{
- namespace_info \201\202;
- namespace_info \201const std::basic_string<C>& name,
- const std::basic_string<C>& schema\202;
-
- std::basic_string<C> name;
- std::basic_string<C> schema;
-};
-
-// Map of namespace prefix to namespace_info.
-//
-struct namespace_infomap: public std::map<std::basic_string<C>,
- namespace_info>
-{
-};)RP(
-
- )0 P(Consider the follow)HY(ing)YH( asso)HY(ci)HY(a)HY(tions)YH( as an example:)EP(
-
- ) 4 52 PR(xml_schema::namespace_infomap map;
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";)RP(
-
- )0 P(This map, if passed to one of the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(,
- could result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
-
- ) 4 72 PR(<?xml version="1.0" ?>
-<t:name xmlns:t="http://www.codesynthesis.com/test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/test test.xsd">)RP(
-
- )0 P(As you can see, the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH( auto)HY(mat)HY(i)HY(cally)YH( added names)HY(pace)YH(
- mapping for the )SM(xsi)ES( prefix. You can change this by
- provid)HY(ing)YH( your own prefix:)EP(
-
- ) 6 62 PR(xml_schema::namespace_infomap map;
-
-map["xsn"].name = "http://www.w3.org/2001/XMLSchema-instance";
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";)RP(
-
- )0 P(This could result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
-
- ) 4 72 PR(<?xml version="1.0" ?>
-<t:name xmlns:t="http://www.codesynthesis.com/test"
- xmlns:xsn="http://www.w3.org/2001/XMLSchema-instance"
- xsn:schemaLocation="http://www.codesynthesis.com/test test.xsd">)RP(
-
- )0 P(To specify the loca)HY(tion)YH( of a schema without a names)HY(pace)YH( you can use
- an empty prefix as in the example below: )EP(
-
- ) 3 34 PR(xml_schema::namespace_infomap map;
-
-map[""].schema = "test.xsd";)RP(
-
- )0 P(This would result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
-
- ) 3 59 PR(<?xml version="1.0" ?>
-<name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="test.xsd">)RP(
-
- )0 P(To make a partic)HY(u)HY(lar)YH( names)HY(pace)YH( default you can use an empty
- prefix, for example:)EP(
-
- ) 4 51 PR(xml_schema::namespace_infomap map;
-
-map[""].name = "http://www.codesynthesis.com/test";
-map[""].schema = "test.xsd";)RP(
-
- )0 P(This could result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
-
- ) 4 70 PR(<?xml version="1.0" ?>
-<name xmlns="http://www.codesynthesis.com/test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/test test.xsd">)RP(
-
-
- )0 P(Another bit of infor)HY(ma)HY(tion)YH( that you can pass to the seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tions)YH( is the char)HY(ac)HY(ter)YH( encod)HY(ing)YH( method that you would like to use.
- Common values for this argu)HY(ment)YH( are )SM("US-ASCII")ES(,
- )SM("ISO8859-1")ES(, )SM("UTF-8")ES(,
- )SM("UTF-16BE")ES(, )SM("UTF-16LE")ES(,
- )SM("UCS-4BE")ES(, and )SM("UCS-4LE")ES(. The default
- encod)HY(ing)YH( is )SM("UTF-8")ES(. For more infor)HY(ma)HY(tion)YH( on
- encod)HY(ing)YH( methods see the
- ")R11 2 A(Char)HY(ac)HY(ter)YH(
- Encod)HY(ing)YH()EA(" article from Wikipedia.
- )EP(
-
- )0 2 80 H(4.3)WB 177 Sn()WB 84 Sn( Flags)EA()EH(
-
- )0 P(Seri)HY(al)HY(iza)HY(tion)YH( flags are the last argu)HY(ment)YH( of every seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tion)YH(. They allow you to fine-tune the process of seri)HY(al)HY(iza)HY(tion)YH(.
- The flags argu)HY(ment)YH( is optional.
- )EP(
-
-
- )0 P(The follow)HY(ing)YH( flags are recog)HY(nized)YH( by the seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tions)YH(:)EP(
-
- )0 DL( )0 DT()SM(xml_schema::flags::dont_initial)HY(ize)YH()ES(
- )DD(Do not initial)HY(ize)YH( the Xerces-C++ runtime.
-
- )0 DT()SM(xml_schema::flags::dont_pretty_print)ES(
- )DD(Do not add extra spaces or new lines that make the result)HY(ing)YH( XML
- slightly bigger but easier to read.
-
- )0 DT()SM(xml_schema::flags::no_xml_decla)HY(ra)HY(tion)YH()ES(
- )DD(Do not write XML decla)HY(ra)HY(tion)YH( \201<?xml ... ?>\202.
- )LD(
-
- )0 P(You can pass several flags by combin)HY(ing)YH( them using the bit-wise OR
- oper)HY(a)HY(tor)YH(. For example:)EP(
-
- ) 9 45 PR(std::auto_ptr<type> r = ...
-std::ofstream ofs \201"test.xml"\202;
-xml_schema::namespace_infomap map;
-name \201ofs,
- *r,
- map,
- "UTF-8",
- xml_schema::flags::no_xml_declaration |
- xml_schema::flags::dont_pretty_print\202;)RP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( on the Xerces-C++ runtime initial)HY(iza)HY(tion)YH(
- refer to )0 82 1 A(Section 4.1, "Initial)HY(iz)HY(ing)YH( the Xerces-C++
- Runtime")82 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 2 81 H(4.4)WB 178 Sn()WB 85 Sn( Error Handling)EA()EH(
-
- )0 P(As with the parsing func)HY(tions)YH( \201see )0 67 1 A(Section 3.3,
- "Error Handling")67 0 TN TL()Ec /AF f D(\202, to better under)HY(stand)YH( error handling and
- report)HY(ing)YH( strate)HY(gies)YH( employed by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(, it
- is useful to know that the trans)HY(for)HY(ma)HY(tion)YH( of a stat)HY(i)HY(cally)YH(-typed
- tree to an XML instance docu)HY(ment)YH( happens in two stages. The first
- stage, performed by the gener)HY(ated)YH( code, consist of build)HY(ing)YH( a DOM
- instance from the stat)HY(i)HY(cally)YH(-typed tree . For short, we will call
- this stage the Tree-DOM stage. The second stage, performed by
- Xerces-C++, consists of seri)HY(al)HY(iz)HY(ing)YH( the DOM instance into the XML
- docu)HY(ment)YH(. We will call this stage the DOM-XML stage.
- )EP(
-
- )0 P(All seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( except the two that seri)HY(al)HY(ize)YH( into
- a DOM instance come in over)HY(loaded)YH( triples. The first func)HY(tion)YH(
- in such a triple reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH(
- excep)HY(tions)YH(. It accu)HY(mu)HY(lates)YH( all the seri)HY(al)HY(iza)HY(tion)YH( errors of the
- DOM-XML stage and throws them in a single instance of the
- )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES( excep)HY(tion)YH( \201described below\202.
- The second and the third func)HY(tions)YH( in the triple use call)HY(back)YH(
- inter)HY(faces)YH( to report seri)HY(al)HY(iza)HY(tion)YH( errors and warn)HY(ings)YH(. The two
- call)HY(back)YH( inter)HY(faces)YH( are )SM(xml_schema::error_handler)ES( and
- )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES(. The
- )SM(xml_schema::error_handler)ES( inter)HY(face)YH( is described in
- )0 67 1 A(Section 3.3, "Error Handling")67 0 TN TL()Ec /AF f D(. For more infor)HY(ma)HY(tion)YH(
- on the )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES( inter)HY(face)YH( refer to the
- Xerces-C++ docu)HY(men)HY(ta)HY(tion)YH(.
- )EP(
-
- )0 P(The Tree-DOM stage reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH(
- excep)HY(tions)YH(. Indi)HY(vid)HY(ual)YH( excep)HY(tions)YH( thrown by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(
- are described in the follow)HY(ing)YH( sub-sections.
- )EP(
-
- )0 3 82 H(4.4.1)WB 179 Sn()WB 86 Sn( )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES()EA()EH(
-
- ) 11 39 PR(struct serialization: virtual exception
-{
- serialization \201\202;
- serialization \201const diagnostics&\202;
-
- const diagnostics&
- diagnostics \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::diag)HY(nos)HY(tics)YH()ES( class is described in
- )0 68 1 A(Section 3.3.1, ")SM(xml_schema::parsing)ES(")68 0 TN TL()Ec /AF f D(.
- The )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES( excep)HY(tion)YH( is thrown if
- there were seri)HY(al)HY(iza)HY(tion)YH( errors reported during the DOM-XML stage.
- If no call)HY(back)YH( inter)HY(face)YH( was provided to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(,
- the excep)HY(tion)YH( contains a list of errors and warn)HY(ings)YH( acces)HY(si)HY(ble)YH( using
- the )SM(diag)HY(nos)HY(tics)YH()ES( func)HY(tion)YH(.
- )EP(
-
-
- )0 3 83 H(4.4.2)WB 180 Sn()WB 87 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()EA()EH(
-
- )0 P(The )SM(xml_schema::unex)HY(pected)YH(_element)ES( excep)HY(tion)YH( is
- described in )0 70 1 A(Section 3.3.3,
- ")SM(xml_schema::unex)HY(pected)YH(_element)ES(")70 0 TN TL()Ec /AF f D(. It is thrown
- by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( during the Tree-DOM stage if the
- root element name of the provided DOM instance does not match with
- the name of the element this seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH( is for.
- )EP(
-
- )0 3 84 H(4.4.3)WB 181 Sn()WB 88 Sn( )SM(xml_schema::no_type_info)ES()EA()EH(
-
- )0 P(The )SM(xml_schema::no_type_info)ES( excep)HY(tion)YH( is
- described in )0 74 1 A(Section 3.3.7,
- ")SM(xml_schema::no_type_info)ES(")74 0 TN TL()Ec /AF f D(. It is thrown
- by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( during the Tree-DOM stage when there
- is no type infor)HY(ma)HY(tion)YH( asso)HY(ci)HY(ated)YH( with a dynamic type of an
- element. Usually, catch)HY(ing)YH( this excep)HY(tion)YH( means that you haven't
- linked the code gener)HY(ated)YH( from the schema defin)HY(ing)YH( the type in
- ques)HY(tion)YH( with your appli)HY(ca)HY(tion)YH( or this schema has been compiled
- without the )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option.
- )EP(
-
- )0 2 85 H(4.5)WB 182 Sn()WB 89 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(std::ostream)ES()EA()EH(
-
- )0 P(In order to seri)HY(al)HY(ize)YH( to )SM(std::ostream)ES( you will need
- an object model, an output stream and, option)HY(ally)YH(, a names)HY(pace)YH(
- infomap. For instance:)EP(
-
- ) 14 61 PR(// Obtain the object model.
-//
-std::auto_ptr<type> r = ...
-
-// Prepare namespace mapping and schema location information.
-//
-xml_schema::namespace_infomap map;
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";
-
-// Write it out.
-//
-name \201std::cout, *r, map\202;)RP(
-
- )0 P(Note that the output stream is treated as a binary stream. This
- becomes impor)HY(tant)YH( when you use a char)HY(ac)HY(ter)YH( encod)HY(ing)YH( that is wider
- than 8-bit )SM(char)ES(, for instance UTF-16 or UCS-4. For
- example, things will most likely break if you try to seri)HY(al)HY(ize)YH(
- to )SM(std::ostringstream)ES( with UTF-16 or UCS-4 as an
- encod)HY(ing)YH(. This is due to the special value,
- )SM('\2000')ES(, that will most likely occur as part of such
- seri)HY(al)HY(iza)HY(tion)YH( and it won't have the special meaning assumed by
- )SM(std::ostringstream)ES(.
- )EP(
-
-
- )0 2 86 H(4.6)WB 183 Sn()WB 90 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES()EA()EH(
-
- )0 P(Seri)HY(al)HY(iz)HY(ing)YH( to an )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES( instance
- is similar the )SM(std::ostream)ES( case. For instance:
- )EP(
-
- ) 38 63 PR(using std::auto_ptr;
-
-// Obtain the object model.
-//
-auto_ptr<type> r = ...
-
-// Prepare namespace mapping and schema location information.
-//
-xml_schema::namespace_infomap map;
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";
-
-using namespace xercesc;
-
-XMLPlatformUtils::Initialize \201\202;
-
-{
- // Choose a target.
- //
- auto_ptr<XMLFormatTarget> ft;
-
- if \201argc != 2\202
- {
- ft = auto_ptr<XMLFormatTarget> \201new StdOutFormatTarget \201\202\202;
- }
- else
- {
- ft = auto_ptr<XMLFormatTarget> \201
- new LocalFileFormatTarget \201argv[1]\202\202;
- })WR(
-
- // Write it out.
- //
- name \201*ft, *r, map\202;
-}
-
-XMLPlatformUtils::Terminate \201\202;)RP(
-
- )0 P(Note that we had to initial)HY(ize)YH( the Xerces-C++ runtime before we
- could call this seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(.)EP(
-
- )0 2 87 H(4.7)WB 184 Sn()WB 91 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to DOM)EA()EH(
-
- )0 P(The mapping provides two over)HY(loaded)YH( func)HY(tions)YH( that imple)HY(ment)YH(
- seri)HY(al)HY(iza)HY(tion)YH( to a DOM instance. The first creates a DOM instance
- for you and the second seri)HY(al)HY(izes)YH( to an exist)HY(ing)YH( DOM instance.
- While seri)HY(al)HY(iz)HY(ing)YH( to a new DOM instance is similar to seri)HY(al)HY(iz)HY(ing)YH(
- to )SM(std::ostream)ES( or )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES(,
- seri)HY(al)HY(iz)HY(ing)YH( to an exist)HY(ing)YH( DOM instance requires quite a bit of work
- from your side. You will need to set all the custom names)HY(pace)YH( mapping
- attributes as well as the )SM(schemaLo)HY(ca)HY(tion)YH()ES( and/or
- )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES( attributes. The follow)HY(ing)YH(
- listing should give you an idea about what needs to be done:
- )EP(
-
- ) 24 67 PR(// Obtain the object model.
-//
-std::auto_ptr<type> r = ...
-
-using namespace xercesc;
-
-XMLPlatformUtils::Initialize \201\202;
-
-{
- // Create a DOM instance. Set custom namespace mapping and schema
- // location attributes.
- //
- DOMDocument& doc = ...
-
- // Serialize to DOM.
- //
- name \201doc, *r\202;
-
- // Serialize the DOM document to XML.
- //
- ...
-}
-
-XMLPlatformUtils::Terminate \201\202;)RP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( on how to create and seri)HY(al)HY(ize)YH( a DOM instance
- refer to the Xerces-C++ docu)HY(men)HY(ta)HY(tion)YH(. In addi)HY(tion)YH(, the
- )R7 2 A(C++/Tree Mapping
- FAQ)EA( shows how to imple)HY(ment)YH( these oper)HY(a)HY(tions)YH( using the XSD
- runtime util)HY(i)HY(ties)YH(.
- )EP(
-
- )0 1 88 H(5)WB 185 Sn()WB 92 Sn( Addi)HY(tional)YH( Func)HY(tion)HY(al)HY(ity)YH()EA()EH(
-
- )0 P(The C++/Tree mapping provides a number of optional features
- that can be useful in certain situ)HY(a)HY(tions)YH(. They are described
- in the follow)HY(ing)YH( sections.)EP(
-
- )0 2 89 H(5.1)WB 186 Sn()WB 93 Sn( DOM Asso)HY(ci)HY(a)HY(tion)YH()EA()EH(
-
- )0 P(Normally, after parsing is complete, the DOM docu)HY(ment)YH( which
- was used to extract the data is discarded. However, the parsing
- func)HY(tions)YH( can be instructed to preserve the DOM docu)HY(ment)YH(
- and create an asso)HY(ci)HY(a)HY(tion)YH( between the DOM nodes and object model
- nodes. When there is an asso)HY(ci)HY(a)HY(tion)YH( between the DOM and
- object model nodes, you can obtain the corre)HY(spond)HY(ing)YH( DOM element
- or attribute node from an object model node as well as perform
- the reverse tran)HY(si)HY(tion)YH(: obtain the corre)HY(spond)HY(ing)YH( object model
- from a DOM element or attribute node.)EP(
-
- )0 P(Main)HY(tain)HY(ing)YH( DOM asso)HY(ci)HY(a)HY(tion)YH( is normally useful when the appli)HY(ca)HY(tion)YH(
- needs access to XML constructs that are not preserved in the
- object model, for example, XML comments.
- Another useful aspect of DOM asso)HY(ci)HY(a)HY(tion)YH( is the ability of the
- appli)HY(ca)HY(tion)YH( to navi)HY(gate)YH( the docu)HY(ment)YH( tree using the generic DOM
- inter)HY(face)YH( \201for example, with the help of an XPath proces)HY(sor)YH(\202
- and then move back to the stat)HY(i)HY(cally)YH(-typed object model. Note
- also that while you can change the under)HY(ly)HY(ing)YH( DOM docu)HY(ment)YH(,
- these changes are not reflected in the object model and will
- be ignored during seri)HY(al)HY(iza)HY(tion)YH(. If you need to not only access
- but also modify some aspects of XML that are not preserved in
- the object model, then type customiza)HY(tion)YH( with custom parsing
- construc)HY(tors)YH( and seri)HY(al)HY(iza)HY(tion)YH( oper)HY(a)HY(tors)YH( should be used instead.)EP(
-
- )0 P(To request DOM asso)HY(ci)HY(a)HY(tion)YH( you will need to pass the
- )SM(xml_schema::flags::keep_dom)ES( flag to one of the
- parsing func)HY(tions)YH( \201see )0 66 1 A(Section 3.2,
- "Flags and Prop)HY(er)HY(ties)YH(")66 0 TN TL()Ec /AF f D( for more infor)HY(ma)HY(tion)YH(\202. In this case the
- DOM docu)HY(ment)YH( is retained and will be released when the object model
- is deleted. Note that since DOM nodes "out-live" the parsing func)HY(tion)YH(
- call, you need to initial)HY(ize)YH( the Xerces-C++ runtime before calling
- one of the parsing func)HY(tions)YH( with the )SM(keep_dom)ES( flag and
- termi)HY(nate)YH( it after the object model is destroyed \201see
- )0 65 1 A(Section 3.1, "Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime")65 0 TN TL()Ec /AF f D(\202.)EP(
-
- )0 P(If the )SM(keep_dom)ES( flag is passed
- as the second argu)HY(ment)YH( to the copy construc)HY(tor)YH( and the copy
- being made is of a complete tree, then the DOM asso)HY(ci)HY(a)HY(tion)YH(
- is also main)HY(tained)YH( in the copy by cloning the under)HY(ly)HY(ing)YH(
- DOM docu)HY(ment)YH( and reestab)HY(lish)HY(ing)YH( the asso)HY(ci)HY(a)HY(tions)YH(. For example:)EP(
-
- ) 22 48 PR(using namespace xercesc;
-
-XMLPlatformUtils::Initialize \201\202;
-
-{
- // Parse XML to object model.
- //
- std::auto_ptr<type> r \201root \201
- "root.xml",
- xml_schema::flags::keep_dom |
- xml_schema::flags::dont_initialize\202\202;
-
- // Copy without DOM association.
- //
- type copy1 \201*r\202;
-
- // Copy with DOM association.
- //
- type copy2 \201*r, xml_schema::flags::keep_dom\202;
-}
-
-XMLPlatformUtils::Terminate \201\202;)RP(
-
-
- )0 P(To obtain the corre)HY(spond)HY(ing)YH( DOM node from an object model node
- you will need to call the )SM(_node)ES( acces)HY(sor)YH( func)HY(tion)YH(
- which returns a pointer to )SM(DOMNode)ES(. You can then query
- this DOM node's type and cast it to either )SM(DOMAttr*)ES(
- or )SM(DOMEle)HY(ment)YH(*)ES(. To obtain the corre)HY(spond)HY(ing)YH( object
- model node from a DOM node, the DOM user data API is used. The
- )SM(xml_schema::dom::tree_node_key)ES( vari)HY(able)YH( contains
- the key for object model nodes. The follow)HY(ing)YH( schema and code
- frag)HY(ment)YH( show how to navi)HY(gate)YH( from DOM to object model nodes
- and in the oppo)HY(site)YH( direc)HY(tion)YH(:)EP(
-
- ) 7 37 PR(<complexType name="object">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
-</complexType>
-
-<element name="root" type="object"/>)RP(
-
- ) 42 68 PR(using namespace xercesc;
-
-XMLPlatformUtils::Initialize \201\202;
-
-{
- // Parse XML to object model.
- //
- std::auto_ptr<type> r \201root \201
- "root.xml",
- xml_schema::flags::keep_dom |
- xml_schema::flags::dont_initialize\202\202;
-
- DOMNode* n = root->_node \201\202;
- assert \201n->getNodeType \201\202 == DOMNode::ELEMENT_NODE\202;
- DOMElement* re = static_cast<DOMElement*> \201n\202;
-
- // Get the 'a' element. Note that it is not necessarily the
- // first child node of 'root' since there could be whitespace
- // nodes before it.
- //
- DOMElement* ae;
-
- for \201n = re->getFirstChild \201\202; n != 0; n = n->getNextSibling \201\202\202
- {
- if \201n->getNodeType \201\202 == DOMNode::ELEMENT_NODE\202
- {
- ae = static_cast<DOMElement*> \201n\202;
- break;
- }
- }
-)WR(
- // Get from the 'a' DOM element to xml_schema::string object model
- // node.
- //
- xml_schema::type& t \201
- *reinterpret_cast<xml_schema::type*> \201
- ae->getUserData \201xml_schema::dom::tree_node_key\202\202\202;
-
- xml_schema::string& a \201dynamic_cast<xml_schema::string&> \201t\202\202;
-}
-
-XMLPlatformUtils::Terminate \201\202;)RP(
-
- )0 P(The 'mixed' example which can be found in the XSD distri)HY(bu)HY(tion)YH(
- shows how to handle the mixed content using DOM asso)HY(ci)HY(a)HY(tion)YH(.)EP(
-
- )0 2 90 H(5.2)WB 187 Sn()WB 94 Sn( Binary Seri)HY(al)HY(iza)HY(tion)YH()EA()EH(
-
- )0 P(Besides reading from and writing to XML, the C++/Tree mapping
- also allows you to save the object model to and load it from a
- number of prede)HY(fined)YH( as well as custom data repre)HY(sen)HY(ta)HY(tion)YH(
- formats. The prede)HY(fined)YH( binary formats are CDR \201Common Data
- Repre)HY(sen)HY(ta)HY(tion)YH(\202 and XDR \201eXter)HY(nal)YH( Data Repre)HY(sen)HY(ta)HY(tion)YH(\202. A
- custom format can easily be supported by provid)HY(ing)YH(
- inser)HY(tion)YH( and extrac)HY(tion)YH( oper)HY(a)HY(tors)YH( for basic types.)EP(
-
- )0 P(Binary seri)HY(al)HY(iza)HY(tion)YH( saves only the data without any meta
- infor)HY(ma)HY(tion)YH( or markup. As a result, saving to and loading
- from a binary repre)HY(sen)HY(ta)HY(tion)YH( can be an order of magni)HY(tude)YH(
- faster than parsing and seri)HY(al)HY(iz)HY(ing)YH( the same data in XML.
- Further)HY(more)YH(, the result)HY(ing)YH( repre)HY(sen)HY(ta)HY(tion)YH( is normally several
- times smaller than the equiv)HY(a)HY(lent)YH( XML repre)HY(sen)HY(ta)HY(tion)YH(. These
- prop)HY(er)HY(ties)YH( make binary seri)HY(al)HY(iza)HY(tion)YH( ideal for inter)HY(nal)YH( data
- exchange and storage. A typical appli)HY(ca)HY(tion)YH( that uses this
- facil)HY(ity)YH( stores the data and commu)HY(ni)HY(cates)YH( within the
- system using a binary format and reads/writes the data
- in XML when commu)HY(ni)HY(cat)HY(ing)YH( with the outside world.)EP(
-
- )0 P(In order to request the gener)HY(a)HY(tion)YH( of inser)HY(tion)YH( oper)HY(a)HY(tors)YH( and
- extrac)HY(tion)YH( construc)HY(tors)YH( for a specific prede)HY(fined)YH( or custom
- data repre)HY(sen)HY(ta)HY(tion)YH( stream, you will need to use the
- )SM(--gener)HY(ate)YH(-inser)HY(tion)YH()ES( and )SM(--gener)HY(ate)YH(-extrac)HY(tion)YH()ES(
- compiler options. See the
- )R8 2 A(XSD
- Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH(.)EP(
-
- )0 P(Once the inser)HY(tion)YH( oper)HY(a)HY(tors)YH( and extrac)HY(tion)YH( construc)HY(tors)YH( are
- gener)HY(ated)YH(, you can use the )SM(xml_schema::istream)ES(
- and )SM(xml_schema::ostream)ES( wrapper stream templates
- to save the object model to and load it from a specific format.
- The follow)HY(ing)YH( code frag)HY(ment)YH( shows how to do this using ACE
- \201Adap)HY(tive)YH( Commu)HY(ni)HY(ca)HY(tion)YH( Envi)HY(ron)HY(ment)YH(\202 CDR streams as an example:)EP(
-
- ) 8 37 PR(<complexType name="object">
- <sequence>
- <element name="a" type="string"/>
- <element name="b" type="int"/>
- </sequence>
-</complexType>
-
-<element name="root" type="object"/>)RP(
-
- ) 21 51 PR(// Parse XML to object model.
-//
-std::auto_ptr<type> r \201root \201"root.xml"\202\202;
-
-// Save to a CDR stream.
-//
-ACE_OutputCDR ace_ocdr;
-xml_schema::ostream<ACE_OutputCDR> ocdr \201ace_ocdr\202;
-
-ocdr << *r;
-
-// Load from a CDR stream.
-//
-ACE_InputCDR ace_icdr \201buf, size\202;
-xml_schema::istream<ACE_InputCDR> icdr \201ace_icdr\202;
-
-std::auto_ptr<object> copy \201new object \201icdr\202\202;
-
-// Serialize to XML.
-//
-root \201std::cout, *copy\202;)RP(
-
- )0 P(The XSD distri)HY(bu)HY(tion)YH( contains a number of exam)HY(ples)YH( that
- show how to save the object model to and load it from
- CDR, XDR, and a custom format.)EP(
-
-
-
-
- )0 1 91 H(Appendix)WB 188 Sn()WB 95 Sn( A \236 Default and Fixed Values)EA()EH(
-
- )0 P(The follow)HY(ing)YH( table summa)HY(rizes)YH( the effect of default and fixed
- values \201spec)HY(i)HY(fied)YH( with the )SM(default)ES( and )SM(fixed)ES(
- attributes, respec)HY(tively)YH(\202 on attribute and element values. The
- )SM(default)ES( and )SM(fixed)ES( attributes are mutu)HY(ally)YH(
- exclu)HY(sive)YH(. It is also worth)HY(while)YH( to note that the fixed value seman)HY(tics)YH(
- is a super)HY(set)YH( of the default value seman)HY(tics)YH(.
- )EP(
-
-
- )1 PT(
-
- )BR(
-)BR(
-
-
-)WB NL
-/TE t D NP /OU t D TU PM 1 eq and{/Pn () D showpage}if end restore
diff --git a/xsd/doc/cxx/tree/manual/index.xhtml b/xsd/doc/cxx/tree/manual/index.xhtml
deleted file mode 100644
index 56213e0..0000000
--- a/xsd/doc/cxx/tree/manual/index.xhtml
+++ /dev/null
@@ -1,6822 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
-
-<head>
- <title>C++/Tree Mapping User Manual</title>
-
- <meta name="copyright" content="&copy; 2005-2014 Code Synthesis Tools CC"/>
- <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,tree,serialization,guide,manual,examples"/>
- <meta name="description" content="C++/Tree Mapping User Manual"/>
- <meta name="revision" content="4.0.0"/>
-
- <link rel="stylesheet" type="text/css" href="../../../default.css" />
-
-<style type="text/css">
- pre {
- padding : 0 0 0 0em;
- margin : 0em 0em 0em 0;
-
- font-size : 102%
- }
-
- body {
- min-width: 48em;
- }
-
- h1 {
- font-weight: bold;
- font-size: 200%;
- }
-
- h2 {
- font-weight : bold;
- font-size : 150%;
-
- padding-top : 0.8em;
- }
-
- h3 {
- font-size : 130%;
- padding-top : 0.8em;
- }
-
- /* Adjust indentation for three levels. */
- #container {
- max-width: 48em;
- }
-
- #content {
- padding: 0 0.1em 0 4em;
- /*background-color: red;*/
- }
-
- #content h1 {
- margin-left: -2.06em;
- }
-
- #content h2 {
- margin-left: -1.33em;
- }
-
- /* Title page */
-
- #titlepage {
- padding: 2em 0 1em 0;
- border-bottom: 1px solid black;
- }
-
- #titlepage #title {
- font-weight: bold;
- font-size: 200%;
- text-align: center;
- padding: 1em 0 2em 0;
- }
-
- /* Lists */
- ul.list li {
- padding-top : 0.3em;
- padding-bottom : 0.3em;
- }
-
-
- /* Built-in table */
- #builtin {
- margin: 2em 0 2em 0;
-
- border-collapse : collapse;
- border : 1px solid;
- border-color : #000000;
-
- font-size : 11px;
- line-height : 14px;
- }
-
- #builtin th, #builtin td {
- border: 1px solid;
- padding : 0.9em 0.9em 0.7em 0.9em;
- }
-
- #builtin th {
- background : #cde8f6;
- }
-
- #builtin td {
- text-align: left;
- }
-
-
- /* default-fixed */
- #default-fixed {
- margin: 2em 0 2em 0;
-
- border-collapse : collapse;
- border : 1px solid;
- border-color : #000000;
-
- font-size : 11px;
- line-height : 14px;
- }
-
- #default-fixed th, #default-fixed td {
- border: 1px solid;
- padding : 0.9em 0.9em 0.7em 0.9em;
- }
-
- #default-fixed th {
- background : #cde8f6;
- }
-
- #default-fixed td {
- text-align: center;
- }
-
-
- /* */
- dl dt {
- padding : 0.8em 0 0 0;
- }
-
-
- /* TOC */
- table.toc {
- border-style : none;
- border-collapse : separate;
- border-spacing : 0;
-
- margin : 0.2em 0 0.2em 0;
- padding : 0 0 0 0;
- }
-
- table.toc tr {
- padding : 0 0 0 0;
- margin : 0 0 0 0;
- }
-
- table.toc * td, table.toc * th {
- border-style : none;
- margin : 0 0 0 0;
- vertical-align : top;
- }
-
- table.toc * th {
- font-weight : normal;
- padding : 0em 0.1em 0em 0;
- text-align : left;
- white-space : nowrap;
- }
-
- table.toc * table.toc th {
- padding-left : 1em;
- }
-
- table.toc * td {
- padding : 0em 0 0em 0.7em;
- text-align : left;
- }
-</style>
-
-
-</head>
-
-<body>
-<div id="container">
- <div id="content">
-
- <div class="noprint">
-
- <div id="titlepage">
- <div id="title">C++/Tree Mapping User Manual</div>
-
- <p>Copyright &copy; 2005-2014 CODE SYNTHESIS TOOLS CC</p>
-
- <p>Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- <a href="http://www.codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
- Documentation License, version 1.2</a>; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- </p>
-
- <p>This document is available in the following formats:
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml">XHTML</a>,
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf">PDF</a>, and
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps">PostScript</a>.</p>
- </div>
-
- <h1>Table of Contents</h1>
-
- <table class="toc">
- <tr>
- <th></th><td><a href="#0">Preface</a>
- <table class="toc">
- <tr><th></th><td><a href="#0.1">About This Document</a></td></tr>
- <tr><th></th><td><a href="#0.2">More Information</a></td></tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>1</th><td><a href="#1">Introduction</a></td>
- </tr>
-
- <tr>
- <th>2</th><td><a href="#2">C++/Tree Mapping</a>
- <table class="toc">
- <tr>
- <th>2.1</th><td><a href="#2.1">Preliminary Information</a>
- <table class="toc">
- <tr><th>2.1.1</th><td><a href="#2.1.1">C++ Standard</a></td></tr>
- <tr><th>2.1.2</th><td><a href="#2.1.2">Identifiers</a></td></tr>
- <tr><th>2.1.3</th><td><a href="#2.1.3">Character Type and Encoding</a></td></tr>
- <tr><th>2.1.4</th><td><a href="#2.1.4">XML Schema Namespace</a></td></tr>
- <tr><th>2.1.5</th><td><a href="#2.1.5">Anonymous Types</a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>2.2</th><td><a href="#2.2">Error Handling</a>
- <table class="toc">
- <tr><th>2.2.1</th><td><a href="#2.2.1"><code>xml_schema::duplicate_id</code></a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>2.3</th><td><a href="#2.3">Mapping for <code>import</code> and <code>include</code></a>
- <table class="toc">
- <tr><th>2.3.1</th><td><a href="#2.3.1">Import</a></td></tr>
- <tr><th>2.3.2</th><td><a href="#2.3.2">Inclusion with Target Namespace</a></td></tr>
- <tr><th>2.3.3</th><td><a href="#2.3.3">Inclusion without Target Namespace</a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>2.4</th><td><a href="#2.4">Mapping for Namespaces</a></td>
- </tr>
- <tr>
- <th>2.5</th><td><a href="#2.5">Mapping for Built-in Data Types</a>
- <table class="toc">
- <tr><th>2.5.1</th><td><a href="#2.5.1">Inheritance from Built-in Data Types</a></td></tr>
- <tr><th>2.5.2</th><td><a href="#2.5.2">Mapping for <code>anyType</code></a></td></tr>
- <tr><th>2.5.3</th><td><a href="#2.5.3">Mapping for <code>anySimpleType</code></a></td></tr>
- <tr><th>2.5.4</th><td><a href="#2.5.4">Mapping for <code>QName</code></a></td></tr>
- <tr><th>2.5.5</th><td><a href="#2.5.5">Mapping for <code>IDREF</code></a></td></tr>
- <tr><th>2.5.6</th><td><a href="#2.5.6">Mapping for <code>base64Binary</code> and <code>hexBinary</code></a></td></tr>
- <tr><th>2.5.7</th><td><a href="#2.5.7">Time Zone Representation</a></td></tr>
- <tr><th>2.5.8</th><td><a href="#2.5.8">Mapping for <code>date</code></a></td></tr>
- <tr><th>2.5.9</th><td><a href="#2.5.9">Mapping for <code>dateTime</code></a></td></tr>
- <tr><th>2.5.10</th><td><a href="#2.5.10">Mapping for <code>duration</code></a></td></tr>
- <tr><th>2.5.11</th><td><a href="#2.5.11">Mapping for <code>gDay</code></a></td></tr>
- <tr><th>2.5.12</th><td><a href="#2.5.12">Mapping for <code>gMonth</code></a></td></tr>
- <tr><th>2.5.13</th><td><a href="#2.5.13">Mapping for <code>gMonthDay</code></a></td></tr>
- <tr><th>2.5.14</th><td><a href="#2.5.14">Mapping for <code>gYear</code></a></td></tr>
- <tr><th>2.5.15</th><td><a href="#2.5.15">Mapping for <code>gYearMonth</code></a></td></tr>
- <tr><th>2.5.16</th><td><a href="#2.5.16">Mapping for <code>time</code></a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>2.6</th><td><a href="#2.6">Mapping for Simple Types</a>
- <table class="toc">
- <tr><th>2.6.1</th><td><a href="#2.6.1">Mapping for Derivation by Restriction</a></td></tr>
- <tr><th>2.6.2</th><td><a href="#2.6.2">Mapping for Enumerations</a></td></tr>
- <tr><th>2.6.3</th><td><a href="#2.6.3">Mapping for Derivation by List</a></td></tr>
- <tr><th>2.6.4</th><td><a href="#2.6.4">Mapping for Derivation by Union</a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>2.7</th><td><a href="#2.7">Mapping for Complex Types</a>
- <table class="toc">
- <tr><th>2.7.1</th><td><a href="#2.7.1">Mapping for Derivation by Extension</a></td></tr>
- <tr><th>2.7.2</th><td><a href="#2.7.2">Mapping for Derivation by Restriction</a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>2.8</th><td><a href="#2.8">Mapping for Local Elements and Attributes</a>
- <table class="toc">
- <tr><th>2.8.1</th><td><a href="#2.8.1">Mapping for Members with the One Cardinality Class</a></td></tr>
- <tr><th>2.8.2</th><td><a href="#2.8.2">Mapping for Members with the Optional Cardinality Class</a></td></tr>
- <tr><th>2.8.3</th><td><a href="#2.8.3">Mapping for Members with the Sequence Cardinality Class</a></td></tr>
- <tr><th>2.8.4</th><td><a href="#2.8.4">Element Order</a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>2.9</th><td><a href="#2.9">Mapping for Global Elements</a>
- <table class="toc">
- <tr><th>2.9.1</th><td><a href="#2.9.1">Element Types</a></td></tr>
- <tr><th>2.9.2</th><td><a href="#2.9.2">Element Map</a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>2.10</th><td><a href="#2.10">Mapping for Global Attributes</a></td>
- </tr>
- <tr>
- <th>2.11</th><td><a href="#2.11">Mapping for <code>xsi:type</code> and Substitution Groups</a></td>
- </tr>
- <tr>
- <th>2.12</th><td><a href="#2.12">Mapping for <code>any</code> and <code>anyAttribute</code></a>
- <table class="toc">
- <tr><th>2.12.1</th><td><a href="#2.12.1">Mapping for <code>any</code> with the One Cardinality Class</a></td></tr>
- <tr><th>2.12.2</th><td><a href="#2.12.2">Mapping for <code>any</code> with the Optional Cardinality Class</a></td></tr>
- <tr><th>2.12.3</th><td><a href="#2.12.3">Mapping for <code>any</code> with the Sequence Cardinality Class</a></td></tr>
- <tr><th>2.12.4</th><td><a href="#2.12.4">Element Wildcard Order</a></td></tr>
- <tr><th>2.12.5</th><td><a href="#2.12.5">Mapping for <code>anyAttribute</code></a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>2.13</th><td><a href="#2.13">Mapping for Mixed Content Models</a></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>3</th><td><a href="#3">Parsing</a>
- <table class="toc">
- <tr>
- <th>3.1</th><td><a href="#3.1">Initializing the Xerces-C++ Runtime</a></td>
- </tr>
- <tr>
- <th>3.2</th><td><a href="#3.2">Flags and Properties</a></td>
- </tr>
- <tr>
- <th>3.3</th><td><a href="#3.3">Error Handling</a>
- <table class="toc">
- <tr><th>3.3.1</th><td><a href="#3.3.1"><code>xml_schema::parsing</code></a></td></tr>
- <tr><th>3.3.2</th><td><a href="#3.3.2"><code>xml_schema::expected_element</code></a></td></tr>
- <tr><th>3.3.3</th><td><a href="#3.3.3"><code>xml_schema::unexpected_element</code></a></td></tr>
- <tr><th>3.3.4</th><td><a href="#3.3.4"><code>xml_schema::expected_attribute</code></a></td></tr>
- <tr><th>3.3.5</th><td><a href="#3.3.5"><code>xml_schema::unexpected_enumerator</code></a></td></tr>
- <tr><th>3.3.6</th><td><a href="#3.3.6"><code>xml_schema::expected_text_content</code></a></td></tr>
- <tr><th>3.3.7</th><td><a href="#3.3.7"><code>xml_schema::no_type_info</code></a></td></tr>
- <tr><th>3.3.8</th><td><a href="#3.3.8"><code>xml_schema::not_derived</code></a></td></tr>
- <tr><th>3.3.9</th><td><a href="#3.3.9"><code>xml_schema::not_prefix_mapping</code></a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>3.4</th><td><a href="#3.4">Reading from a Local File or URI</a></td>
- </tr>
- <tr>
- <th>3.5</th><td><a href="#3.5">Reading from <code>std::istream</code></a></td>
- </tr>
- <tr>
- <th>3.6</th><td><a href="#3.6">Reading from <code>xercesc::InputSource</code></a></td>
- </tr>
- <tr>
- <th>3.7</th><td><a href="#3.7">Reading from DOM</a></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>4</th><td><a href="#4">Serialization</a>
- <table class="toc">
- <tr>
- <th>4.1</th><td><a href="#4.1">Initializing the Xerces-C++ Runtime</a></td>
- </tr>
- <tr>
- <th>4.2</th><td><a href="#4.2">Namespace Infomap and Character Encoding</a></td>
- </tr>
- <tr>
- <th>4.3</th><td><a href="#4.3">Flags</a></td>
- </tr>
- <tr>
- <th>4.4</th><td><a href="#4.4">Error Handling</a>
- <table class="toc">
- <tr><th>4.4.1</th><td><a href="#4.4.1"><code>xml_schema::serialization</code></a></td></tr>
- <tr><th>4.4.2</th><td><a href="#4.4.2"><code>xml_schema::unexpected_element</code></a></td></tr>
- <tr><th>4.4.3</th><td><a href="#4.4.3"><code>xml_schema::no_type_info</code></a></td></tr>
- </table>
- </td>
- </tr>
- <tr>
- <th>4.5</th><td><a href="#4.5">Serializing to <code>std::ostream</code></a></td>
- </tr>
- <tr>
- <th>4.6</th><td><a href="#4.6">Serializing to <code>xercesc::XMLFormatTarget</code></a></td>
- </tr>
- <tr>
- <th>4.7</th><td><a href="#4.7">Serializing to DOM</a></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>5</th><td><a href="#5">Additional Functionality</a>
- <table class="toc">
- <tr>
- <th>5.1</th><td><a href="#5.1">DOM Association</a></td>
- </tr>
- <tr>
- <th>5.2</th><td><a href="#5.2">Binary Serialization</a></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th></th><td><a href="#A">Appendix A &mdash; Default and Fixed Values</a></td>
- </tr>
-
- </table>
- </div>
-
- <h1><a name="0">Preface</a></h1>
-
- <h2><a name="0.1">About This Document</a></h2>
-
- <p>This document describes the mapping of W3C XML Schema
- to the C++ programming language as implemented by
- <a href="http://www.codesynthesis.com/products/xsd">CodeSynthesis
- XSD</a> - an XML Schema to C++ data binding compiler. The mapping
- represents information stored in XML instance documents as a
- statically-typed, tree-like in-memory data structure and is
- called C++/Tree.
- </p>
-
- <p>Revision 4.0.0<br/> <!-- Remember to change revision in other places -->
- This revision of the manual describes the C++/Tree
- mapping as implemented by CodeSynthesis XSD version 4.0.0.
- </p>
-
- <p>This document is available in the following formats:
- <a href="http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml">XHTML</a>,
- <a href="http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf">PDF</a>, and
- <a href="http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps">PostScript</a>.</p>
-
- <h2><a name="0.2">More Information</a></h2>
-
- <p>Beyond this manual, you may also find the following sources of
- information useful:</p>
-
- <ul class="list">
- <li><a href="http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/">C++/Tree
- Mapping Getting Started Guide</a></li>
-
- <li><a href="http://wiki.codesynthesis.com/Tree/Customization_guide">C++/Tree
- Mapping Customization Guide</a></li>
-
- <li><a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree
- Mapping Frequently Asked Questions (FAQ)</a></li>
-
- <li><a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a></li>
-
- <li>The <code>examples/cxx/tree/</code> directory in the XSD
- distribution contains a collection of examples and a README
- file with an overview of each example.</li>
-
- <li>The <code>README</code> file in the XSD distribution explains
- how to compile the examples on various platforms.</li>
-
- <li>The <a href="http://www.codesynthesis.com/mailman/listinfo/xsd-users">xsd-users</a>
- mailing list is a place to ask questions. Furthermore the
- <a href="http://www.codesynthesis.com/pipermail/xsd-users/">archives</a>
- may already have answers to some of your questions.</li>
- </ul>
-
-
- <h1><a name="1">1 Introduction</a></h1>
-
- <p>C++/Tree is a W3C XML Schema to C++ mapping that represents the
- data stored in XML as a statically-typed, vocabulary-specific
- object model. Based on a formal description of an XML vocabulary
- (schema), the C++/Tree mapping produces a tree-like data structure
- suitable for in-memory processing as well as XML parsing and
- serialization code.</p>
-
- <p>A typical application that processes XML documents usually
- performs the following three steps: it first reads (parses) an XML
- instance document to an object model, it then performs
- some useful computations on that model which may involve
- modification of the model, and finally it may write (serialize)
- the modified object model back to XML.
- </p>
-
- <p>The C++/Tree mapping consists of C++ types that represent the
- given vocabulary (<a href="#2">Chapter 2, "C++/Tree Mapping"</a>),
- a set of parsing functions that convert XML documents to
- a tree-like in-memory data structure (<a href="#3">Chapter 3,
- "Parsing"</a>), and a set of serialization functions that convert
- the object model back to XML (<a href="#4">Chapter 4,
- "Serialization"</a>). Furthermore, the mapping provides a number
- of additional features, such as DOM association and binary
- serialization, that can be useful in some applications
- (<a href="#5">Chapter 5, "Additional Functionality"</a>).
- </p>
-
-
- <!-- Chapter 2 -->
-
-
- <h1><a name="2">2 C++/Tree Mapping</a></h1>
-
- <h2><a name="2.1">2.1 Preliminary Information</a></h2>
-
- <h3><a name="2.1.1">2.1.1 C++ Standard</a></h3>
-
- <p>The C++/Tree mapping provides support for ISO/IEC C++ 1998/2003 (C++98)
- and ISO/IEC C++ 2011 (C++11). To select the C++ standard for the
- generated code we use the <code>--std</code> XSD compiler command
- line option. While the majority of the examples in this manual use
- C++98, support for the new functionality and library components
- introduced in C++11 are discussed throughout the document.</p>
-
- <h3><a name="2.1.2">2.1.2 Identifiers</a></h3>
-
- <p>XML Schema names may happen to be reserved C++ keywords or contain
- characters that are illegal in C++ identifiers. To avoid C++ compilation
- problems, such names are changed (escaped) when mapped to C++. If an
- XML Schema name is a C++ keyword, the "_" suffix is added to it. All
- character of an XML Schema name that are not allowed in C++ identifiers
- are replaced with "_".
- </p>
-
- <p>For example, XML Schema name <code>try</code> will be mapped to
- C++ identifier <code>try_</code>. Similarly, XML Schema name
- <code>strange.na-me</code> will be mapped to C++ identifier
- <code>strange_na_me</code>.
- </p>
-
- <p>Furthermore, conflicts between type names and function names in the
- same scope are resolved using name escaping. Such conflicts include
- both a global element (which is mapped to a set of parsing and/or
- serialization functions or element types, see <a href="#2.9">Section
- 2.9, "Mapping for Global Elements"</a>) and a global type sharing the
- same name as well as a local element or attribute inside a type having
- the same name as the type itself.</p>
-
- <p>For example, if we had a global type <code>catalog</code>
- and a global element with the same name then the type would be
- mapped to a C++ class with name <code>catalog</code> while the
- parsing functions corresponding to the global element would have
- their names escaped as <code>catalog_</code>.
- </p>
-
- <p>By default the mapping uses the so-called K&amp;R (Kernighan and
- Ritchie) identifier naming convention which is also used throughout
- this manual. In this convention both type and function names are in
- lower case and words are separated by underscores. If your application
- code or schemas use a different notation, you may want to change the
- naming convention used by the mapping for consistency.
- The compiler supports a set of widely-used naming conventions
- that you can select with the <code>--type-naming</code> and
- <code>--function-naming</code> options. You can also further
- refine one of the predefined conventions or create a completely
- custom naming scheme by using the <code>--*-regex</code> options.
- For more detailed information on these options refer to the NAMING
- CONVENTION section in the <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a>.</p>
-
- <h3><a name="2.1.3">2.1.3 Character Type and Encoding</a></h3>
-
- <p>The code that implements the mapping, depending on the
- <code>--char-type</code> option, is generated using either
- <code>char</code> or <code>wchar_t</code> as the character
- type. In this document code samples use symbol <code>C</code>
- to refer to the character type you have selected when translating
- your schemas, for example <code>std::basic_string&lt;C></code>.
- </p>
-
- <p>Another aspect of the mapping that depends on the character type
- is character encoding. For the <code>char</code> character type
- the default encoding is UTF-8. Other supported encodings are
- ISO-8859-1, Xerces-C++ Local Code Page (LPC), as well as
- custom encodings and can be selected with the
- <code>--char-encoding</code> command line option.</p>
-
- <p>For the <code>wchar_t</code> character type the encoding is
- automatically selected between UTF-16 and UTF-32/UCS-4 depending
- on the size of the <code>wchar_t</code> type. On some platforms
- (for example, Windows with Visual C++ and AIX with IBM XL C++)
- <code>wchar_t</code> is 2 bytes long. For these platforms the
- encoding is UTF-16. On other platforms <code>wchar_t</code> is 4 bytes
- long and UTF-32/UCS-4 is used.</p>
-
- <h3><a name="2.1.4">2.1.4 XML Schema Namespace</a></h3>
-
- <p>The mapping relies on some predefined types, classes, and functions
- that are logically defined in the XML Schema namespace reserved for
- the XML Schema language (<code>http://www.w3.org/2001/XMLSchema</code>).
- By default, this namespace is mapped to C++ namespace
- <code>xml_schema</code>. It is automatically accessible
- from a C++ compilation unit that includes a header file generated
- from an XML Schema definition.
- </p>
-
- <p>Note that, if desired, the default mapping of this namespace can be
- changed as described in <a href="#2.4">Section 2.4, "Mapping for
- Namespaces"</a>.
- </p>
-
-
- <h3><a name="2.1.5">2.1.5 Anonymous Types</a></h3>
-
- <p>For the purpose of code generation, anonymous types defined in
- XML Schema are automatically assigned names that are derived
- from enclosing attributes and elements. Otherwise, such types
- follows standard mapping rules for simple and complex type
- definitions (see <a href="#2.6">Section 2.6, "Mapping for Simple Types"</a>
- and <a href="#2.7">Section 2.7, "Mapping for Complex Types"</a>).
- For example, in the following schema fragment:
- </p>
-
- <pre class="xml">
-&lt;element name="object">
- &lt;complexType>
- ...
- &lt;/complexType>
-&lt;/element>
- </pre>
-
- <p>The anonymous type defined inside element <code>object</code> will
- be given name <code>object</code>. The compiler has a number of
- options that control the process of anonymous type naming. For more
- information refer to the <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a>.</p>
-
-
- <h2><a name="2.2">2.2 Error Handling</a></h2>
-
- <p>The mapping uses the C++ exception handling mechanism as a primary way
- of reporting error conditions. All exceptions that are specified in
- this mapping derive from <code>xml_schema::exception</code> which
- itself is derived from <code>std::exception</code>:
- </p>
-
- <pre class="c++">
-struct exception: virtual std::exception
-{
- friend
- std::basic_ostream&lt;C>&amp;
- operator&lt;&lt; (std::basic_ostream&lt;C>&amp; os, const exception&amp; e)
- {
- e.print (os);
- return os;
- }
-
-protected:
- virtual void
- print (std::basic_ostream&lt;C>&amp;) const = 0;
-};
- </pre>
-
- <p>The exception hierarchy supports "virtual" <code>operator&lt;&lt;</code>
- which allows you to obtain diagnostics corresponding to the thrown
- exception using the base exception interface. For example:</p>
-
- <pre class="c++">
-try
-{
- ...
-}
-catch (const xml_schema::exception&amp; e)
-{
- cerr &lt;&lt; e &lt;&lt; endl;
-}
- </pre>
-
- <p>The following sub-sections describe exceptions thrown by the
- types that constitute the object model.
- <a href="#3.3">Section 3.3, "Error Handling"</a> of
- <a href="#3">Chapter 3, "Parsing"</a> describes exceptions
- and error handling mechanisms specific to the parsing functions.
- <a href="#4.4">Section 4.4, "Error Handling"</a> of
- <a href="#4">Chapter 4, "Serialization"</a> describes exceptions
- and error handling mechanisms specific to the serialization functions.
- </p>
-
-
- <h3><a name="2.2.1">2.2.1 <code>xml_schema::duplicate_id</code></a></h3>
-
- <pre class="c++">
-struct duplicate_id: virtual exception
-{
- duplicate_id (const std::basic_string&lt;C>&amp; id);
-
- const std::basic_string&lt;C>&amp;
- id () const;
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::duplicate_id</code> is thrown when
- a conflicting instance of <code>xml_schema::id</code> (see
- <a href="#2.5">Section 2.5, "Mapping for Built-in Data Types"</a>)
- is added to a tree. The offending ID value can be obtained using
- the <code>id</code> function.
- </p>
-
- <h2><a name="2.3">2.3 Mapping for <code>import</code> and <code>include</code></a></h2>
-
- <h3><a name="2.3.1">2.3.1 Import</a></h3>
-
- <p>The XML Schema <code>import</code> element is mapped to the C++
- Preprocessor <code>#include</code> directive. The value of
- the <code>schemaLocation</code> attribute is used to derive
- the name of the header file that appears in the <code>#include</code>
- directive. For instance:
- </p>
-
- <pre class="xml">
-&lt;import namespace="http://www.codesynthesis.com/test"
- schemaLocation="test.xsd"/>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-#include "test.hxx"
- </pre>
-
- <p>Note that you will need to compile imported schemas separately
- in order to produce corresponding header files.</p>
-
- <h3><a name="2.3.2">2.3.2 Inclusion with Target Namespace</a></h3>
-
- <p>The XML Schema <code>include</code> element which refers to a schema
- with a target namespace or appears in a schema without a target namespace
- follows the same mapping rules as the <code>import</code> element,
- see <a href="#2.3.1">Section 2.3.1, "Import"</a>.
- </p>
-
- <h3><a name="2.3.3">2.3.3 Inclusion without Target Namespace</a></h3>
-
- <p>For the XML Schema <code>include</code> element which refers to a schema
- without a target namespace and appears in a schema with a target
- namespace (such inclusion sometimes called "chameleon inclusion"),
- declarations and definitions from the included schema are generated
- in-line in the namespace of the including schema as if they were
- declared and defined there verbatim. For example, consider the
- following two schemas:
- </p>
-
- <pre class="xml">
-&lt;-- common.xsd -->
-&lt;schema>
- &lt;complexType name="type">
- ...
- &lt;/complexType>
-&lt;/schema>
-
-&lt;-- test.xsd -->
-&lt;schema targetNamespace="http://www.codesynthesis.com/test">
- &lt;include schemaLocation="common.xsd"/>
-&lt;/schema>
- </pre>
-
- <p>The fragment of interest from the generated header file for
- <code>text.xsd</code> would look like this:</p>
-
- <pre class="c++">
-// test.hxx
-namespace test
-{
- class type
- {
- ...
- };
-}
- </pre>
-
- <h2><a name="2.4">2.4 Mapping for Namespaces</a></h2>
-
- <p>An XML Schema namespace is mapped to one or more nested C++
- namespaces. XML Schema namespaces are identified by URIs.
- By default, a namespace URI is mapped to a sequence of
- C++ namespace names by removing the protocol and host parts
- and splitting the rest into a sequence of names with '<code>/</code>'
- as the name separator. For instance:
- </p>
-
- <pre class="xml">
-&lt;schema targetNamespace="http://www.codesynthesis.com/system/test">
- ...
-&lt;/schema>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-namespace system
-{
- namespace test
- {
- ...
- }
-}
- </pre>
-
- <p>The default mapping of namespace URIs to C++ namespace names can be
- altered using the <code>--namespace-map</code> and
- <code>--namespace-regex</code> options. See the
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a> for more information.
- </p>
-
- <h2><a name="2.5">2.5 Mapping for Built-in Data Types</a></h2>
-
- <p>The mapping of XML Schema built-in data types to C++ types is
- summarized in the table below.</p>
-
- <!-- border="1" is necessary for html2ps -->
- <table id="builtin" border="1">
- <tr>
- <th>XML Schema type</th>
- <th>Alias in the <code>xml_schema</code> namespace</th>
- <th>C++ type</th>
- </tr>
-
- <tr>
- <th colspan="3">anyType and anySimpleType types</th>
- </tr>
- <tr>
- <td><code>anyType</code></td>
- <td><code>type</code></td>
- <td><a href="#2.5.2">Section 2.5.2, "Mapping for <code>anyType</code>"</a></td>
- </tr>
- <tr>
- <td><code>anySimpleType</code></td>
- <td><code>simple_type</code></td>
- <td><a href="#2.5.3">Section 2.5.3, "Mapping for <code>anySimpleType</code>"</a></td>
- </tr>
-
- <tr>
- <th colspan="3">fixed-length integral types</th>
- </tr>
- <!-- 8-bit -->
- <tr>
- <td><code>byte</code></td>
- <td><code>byte</code></td>
- <td><code>signed&nbsp;char</code></td>
- </tr>
- <tr>
- <td><code>unsignedByte</code></td>
- <td><code>unsigned_byte</code></td>
- <td><code>unsigned&nbsp;char</code></td>
- </tr>
-
- <!-- 16-bit -->
- <tr>
- <td><code>short</code></td>
- <td><code>short_</code></td>
- <td><code>short</code></td>
- </tr>
- <tr>
- <td><code>unsignedShort</code></td>
- <td><code>unsigned_short</code></td>
- <td><code>unsigned&nbsp;short</code></td>
- </tr>
-
- <!-- 32-bit -->
- <tr>
- <td><code>int</code></td>
- <td><code>int_</code></td>
- <td><code>int</code></td>
- </tr>
- <tr>
- <td><code>unsignedInt</code></td>
- <td><code>unsigned_int</code></td>
- <td><code>unsigned&nbsp;int</code></td>
- </tr>
-
- <!-- 64-bit -->
- <tr>
- <td><code>long</code></td>
- <td><code>long_</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>unsignedLong</code></td>
- <td><code>unsigned_long</code></td>
- <td><code>unsigned&nbsp;long&nbsp;long</code></td>
- </tr>
-
- <tr>
- <th colspan="3">arbitrary-length integral types</th>
- </tr>
- <tr>
- <td><code>integer</code></td>
- <td><code>integer</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>nonPositiveInteger</code></td>
- <td><code>non_positive_integer</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>nonNegativeInteger</code></td>
- <td><code>non_negative_integer</code></td>
- <td><code>unsigned long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>positiveInteger</code></td>
- <td><code>positive_integer</code></td>
- <td><code>unsigned long&nbsp;long</code></td>
- </tr>
- <tr>
- <td><code>negativeInteger</code></td>
- <td><code>negative_integer</code></td>
- <td><code>long&nbsp;long</code></td>
- </tr>
-
- <tr>
- <th colspan="3">boolean types</th>
- </tr>
- <tr>
- <td><code>boolean</code></td>
- <td><code>boolean</code></td>
- <td><code>bool</code></td>
- </tr>
-
- <tr>
- <th colspan="3">fixed-precision floating-point types</th>
- </tr>
- <tr>
- <td><code>float</code></td>
- <td><code>float_</code></td>
- <td><code>float</code></td>
- </tr>
- <tr>
- <td><code>double</code></td>
- <td><code>double_</code></td>
- <td><code>double</code></td>
- </tr>
-
- <tr>
- <th colspan="3">arbitrary-precision floating-point types</th>
- </tr>
- <tr>
- <td><code>decimal</code></td>
- <td><code>decimal</code></td>
- <td><code>double</code></td>
- </tr>
-
- <tr>
- <th colspan="3">string types</th>
- </tr>
- <tr>
- <td><code>string</code></td>
- <td><code>string</code></td>
- <td>type derived from <code>std::basic_string</code></td>
- </tr>
- <tr>
- <td><code>normalizedString</code></td>
- <td><code>normalized_string</code></td>
- <td>type derived from <code>string</code></td>
- </tr>
- <tr>
- <td><code>token</code></td>
- <td><code>token</code></td>
- <td>type&nbsp;derived&nbsp;from&nbsp;<code>normalized_string</code></td>
- </tr>
- <tr>
- <td><code>Name</code></td>
- <td><code>name</code></td>
- <td>type derived from <code>token</code></td>
- </tr>
- <tr>
- <td><code>NMTOKEN</code></td>
- <td><code>nmtoken</code></td>
- <td>type derived from <code>token</code></td>
- </tr>
- <tr>
- <td><code>NMTOKENS</code></td>
- <td><code>nmtokens</code></td>
- <td>type derived from <code>sequence&lt;nmtoken></code></td>
- </tr>
- <tr>
- <td><code>NCName</code></td>
- <td><code>ncname</code></td>
- <td>type derived from <code>name</code></td>
- </tr>
- <tr>
- <td><code>language</code></td>
- <td><code>language</code></td>
- <td>type derived from <code>token</code></td>
- </tr>
-
- <tr>
- <th colspan="3">qualified name</th>
- </tr>
- <tr>
- <td><code>QName</code></td>
- <td><code>qname</code></td>
- <td><a href="#2.5.4">Section 2.5.4, "Mapping for <code>QName</code>"</a></td>
- </tr>
-
- <tr>
- <th colspan="3">ID/IDREF types</th>
- </tr>
- <tr>
- <td><code>ID</code></td>
- <td><code>id</code></td>
- <td>type derived from <code>ncname</code></td>
- </tr>
- <tr>
- <td><code>IDREF</code></td>
- <td><code>idref</code></td>
- <td><a href="#2.5.5">Section 2.5.5, "Mapping for <code>IDREF</code>"</a></td>
- </tr>
- <tr>
- <td><code>IDREFS</code></td>
- <td><code>idrefs</code></td>
- <td>type derived from <code>sequence&lt;idref></code></td>
- </tr>
-
- <tr>
- <th colspan="3">URI types</th>
- </tr>
- <tr>
- <td><code>anyURI</code></td>
- <td><code>uri</code></td>
- <td>type derived from <code>std::basic_string</code></td>
- </tr>
-
- <tr>
- <th colspan="3">binary types</th>
- </tr>
- <tr>
- <td><code>base64Binary</code></td>
- <td><code>base64_binary</code></td>
- <td rowspan="2"><a href="#2.5.6">Section 2.5.6, "Mapping for
- <code>base64Binary</code> and <code>hexBinary</code>"</a></td>
- </tr>
- <tr>
- <td><code>hexBinary</code></td>
- <td><code>hex_binary</code></td>
- </tr>
-
- <tr>
- <th colspan="3">date/time types</th>
- </tr>
- <tr>
- <td><code>date</code></td>
- <td><code>date</code></td>
- <td><a href="#2.5.8">Section 2.5.8, "Mapping for
- <code>date</code>"</a></td>
- </tr>
- <tr>
- <td><code>dateTime</code></td>
- <td><code>date_time</code></td>
- <td><a href="#2.5.9">Section 2.5.9, "Mapping for
- <code>dateTime</code>"</a></td>
- </tr>
- <tr>
- <td><code>duration</code></td>
- <td><code>duration</code></td>
- <td><a href="#2.5.10">Section 2.5.10, "Mapping for
- <code>duration</code>"</a></td>
- </tr>
- <tr>
- <td><code>gDay</code></td>
- <td><code>gday</code></td>
- <td><a href="#2.5.11">Section 2.5.11, "Mapping for
- <code>gDay</code>"</a></td>
- </tr>
- <tr>
- <td><code>gMonth</code></td>
- <td><code>gmonth</code></td>
- <td><a href="#2.5.12">Section 2.5.12, "Mapping for
- <code>gMonth</code>"</a></td>
- </tr>
- <tr>
- <td><code>gMonthDay</code></td>
- <td><code>gmonth_day</code></td>
- <td><a href="#2.5.13">Section 2.5.13, "Mapping for
- <code>gMonthDay</code>"</a></td>
- </tr>
- <tr>
- <td><code>gYear</code></td>
- <td><code>gyear</code></td>
- <td><a href="#2.5.14">Section 2.5.14, "Mapping for
- <code>gYear</code>"</a></td>
- </tr>
- <tr>
- <td><code>gYearMonth</code></td>
- <td><code>gyear_month</code></td>
- <td><a href="#2.5.15">Section 2.5.15, "Mapping for
- <code>gYearMonth</code>"</a></td>
- </tr>
- <tr>
- <td><code>time</code></td>
- <td><code>time</code></td>
- <td><a href="#2.5.16">Section 2.5.16, "Mapping for
- <code>time</code>"</a></td>
- </tr>
-
- <tr>
- <th colspan="3">entity types</th>
- </tr>
- <tr>
- <td><code>ENTITY</code></td>
- <td><code>entity</code></td>
- <td>type derived from <code>name</code></td>
- </tr>
- <tr>
- <td><code>ENTITIES</code></td>
- <td><code>entities</code></td>
- <td>type derived from <code>sequence&lt;entity></code></td>
- </tr>
- </table>
-
- <p>All XML Schema built-in types are mapped to C++ classes that are
- derived from the <code>xml_schema::simple_type</code> class except
- where the mapping is to a fundamental C++ type.</p>
-
- <p>The <code>sequence</code> class template is defined in an
- implementation-specific namespace. It conforms to the
- sequence interface as defined by the ISO/ANSI Standard for
- C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences").
- Practically, this means that you can treat such a sequence
- as if it was <code>std::vector</code>. One notable extension
- to the standard interface that is available only for
- sequences of non-fundamental C++ types is the addition of
- the overloaded <code>push_back</code> and <code>insert</code>
- member functions which instead of the constant reference
- to the element type accept automatic pointer (<code>std::auto_ptr</code>
- or <code>std::unique_ptr</code>, depending on the C++ standard
- selected) to the element type. These functions assume ownership
- of the pointed to object and reset the passed automatic pointer.
- </p>
-
- <h3><a name="2.5.1">2.5.1 Inheritance from Built-in Data Types</a></h3>
-
- <p>In cases where the mapping calls for an inheritance from a built-in
- type which is mapped to a fundamental C++ type, a proxy type is
- used instead of the fundamental C++ type (C++ does not allow
- inheritance from fundamental types). For instance:</p>
-
- <pre class="xml">
-&lt;simpleType name="my_int">
- &lt;restriction base="int"/>
-&lt;/simpleType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class my_int: public fundamental_base&lt;int>
-{
- ...
-};
- </pre>
-
- <p>The <code>fundamental_base</code> class template provides a close
- emulation (though not exact) of a fundamental C++ type.
- It is defined in an implementation-specific namespace and has the
- following interface:</p>
-
- <pre class="c++">
-template &lt;typename X>
-class fundamental_base: public simple_type
-{
-public:
- fundamental_base ();
- fundamental_base (X)
- fundamental_base (const fundamental_base&amp;)
-
-public:
- fundamental_base&amp;
- operator= (const X&amp;);
-
-public:
- operator const X &amp; () const;
- operator X&amp; ();
-
- template &lt;typename Y>
- operator Y () const;
-
- template &lt;typename Y>
- operator Y ();
-};
- </pre>
-
- <h3><a name="2.5.2">2.5.2 Mapping for <code>anyType</code></a></h3>
-
- <p>The XML Schema <code>anyType</code> built-in data type is mapped to the
- <code>xml_schema::type</code> C++ class:</p>
-
- <pre class="c++">
-class type
-{
-public:
- virtual
- ~type ();
-
- type ();
- type (const type&amp;);
-
- type&amp;
- operator= (const type&amp;);
-
- virtual type*
- _clone () const;
-
- // anyType DOM content.
- //
-public:
- typedef element_optional dom_content_optional;
-
- const dom_content_optional&amp;
- dom_content () const;
-
- dom_content_optional&amp;
- dom_content ();
-
- void
- dom_content (const xercesc::DOMElement&amp;);
-
- void
- dom_content (xercesc::DOMElement*);
-
- void
- dom_content (const dom_content_optional&amp;);
-
- const xercesc::DOMDocument&amp;
- dom_content_document () const;
-
- xercesc::DOMDocument&amp;
- dom_content_document ();
-
- bool
- null_content () const;
-
- // DOM association.
- //
-public:
- const xercesc::DOMNode*
- _node () const;
-
- xercesc::DOMNode*
- _node ();
-};
- </pre>
-
- <p>When <code>xml_schema::type</code> is used to create an instance
- (as opposed to being a base of a derived type), it represents
- the XML Schema <code>anyType</code> type. <code>anyType</code>
- allows any attributes and any content in any order. In the
- C++/Tree mapping this content can be represented as a DOM
- fragment, similar to XML Schema wildcards (<a href="#2.12">Section
- 2.12, "Mapping for <code>any</code> and
- <code>anyAttribute</code>"</a>).</p>
-
- <p>To enable automatic extraction of <code>anyType</code> content
- during parsing, the <code>--generate-any-type</code> option must be
- specified. Because the DOM API is used to access such content, the
- Xerces-C++ runtime should be initialized by the application prior to
- parsing and should remain initialized for the lifetime of objects
- with the DOM content. For more information on the Xerces-C++ runtime
- initialization see <a href="#3.1">Section 3.1, "Initializing the
- Xerces-C++ Runtime"</a>.</p>
-
- <p>The DOM content is stored as the optional DOM element container
- and the DOM content accessors and modifiers presented above are
- identical to those generated for an optional element wildcard.
- Refer to <a href="#2.12.2">Section 2.12.2, "Mapping for <code>any</code>
- with the Optional Cardinality Class"</a> for details on their
- semantics.</p>
-
- <p>The <code>dom_content_document()</code> function returns the
- DOM document used to store the raw XML content corresponding
- to the <code>anyType</code> instance. It is equivalent to the
- <code>dom_document()</code> function generated for types
- with wildcards.</p>
-
- <p>The <code>null_content()</code> accessor is an optimization function
- that allows us to check for the lack of content without actually
- creating its empty representation, that is, empty DOM document for
- <code>anyType</code> or empty string for <code>anySimpleType</code>
- (see the following section for details on <code>anySimpleType</code>).</p>
-
- <p>For more information on DOM association refer to
- <a href="#5.1">Section 5.1, "DOM Association"</a>.</p>
-
- <h3><a name="2.5.3">2.5.3 Mapping for <code>anySimpleType</code></a></h3>
-
- <p>The XML Schema <code>anySimpleType</code> built-in data type is mapped
- to the <code>xml_schema::simple_type</code> C++ class:</p>
-
- <pre class="c++">
-class simple_type: public type
-{
-public:
- simple_type ();
- simple_type (const C*);
- simple_type (const std::basic_string&lt;C>&amp;);
-
- simple_type (const simple_type&amp;);
-
- simple_type&amp;
- operator= (const simple_type&amp;);
-
- virtual simple_type*
- _clone () const;
-
- // anySimpleType text content.
- //
-public:
- const std::basic_string&lt;C>&amp;
- text_content () const;
-
- std::basic_string&lt;C>&amp;
- text_content ();
-
- void
- text_content (const std::basic_string&lt;C>&amp;);
-};
- </pre>
-
- <p>When <code>xml_schema::simple_type</code> is used to create an instance
- (as opposed to being a base of a derived type), it represents
- the XML Schema <code>anySimpleType</code> type. <code>anySimpleType</code>
- allows any simple content. In the C++/Tree mapping this content can
- be represented as a string and accessed or modified with the
- <code>text_content()</code> functions shown above.</p>
-
- <h3><a name="2.5.4">2.5.4 Mapping for <code>QName</code></a></h3>
-
- <p>The XML Schema <code>QName</code> built-in data type is mapped to the
- <code>xml_schema::qname</code> C++ class:</p>
-
- <pre class="c++">
-class qname: public simple_type
-{
-public:
- qname (const ncname&amp;);
- qname (const uri&amp;, const ncname&amp;);
- qname (const qname&amp;);
-
-public:
- qname&amp;
- operator= (const qname&amp;);
-
-public:
- virtual qname*
- _clone () const;
-
-public:
- bool
- qualified () const;
-
- const uri&amp;
- namespace_ () const;
-
- const ncname&amp;
- name () const;
-};
- </pre>
-
- <p>The <code>qualified</code> accessor function can be used to determine
- if the name is qualified.</p>
-
- <h3><a name="2.5.5">2.5.5 Mapping for <code>IDREF</code></a></h3>
-
- <p>The XML Schema <code>IDREF</code> built-in data type is mapped to the
- <code>xml_schema::idref</code> C++ class. This class implements the
- smart pointer C++ idiom:</p>
-
- <pre class="c++">
-class idref: public ncname
-{
-public:
- idref (const C* s);
- idref (const C* s, std::size_t n);
- idref (std::size_t n, C c);
- idref (const std::basic_string&lt;C>&amp;);
- idref (const std::basic_string&lt;C>&amp;,
- std::size_t pos,
- std::size_t n = npos);
-
-public:
- idref (const idref&amp;);
-
-public:
- virtual idref*
- _clone () const;
-
-public:
- idref&amp;
- operator= (C c);
-
- idref&amp;
- operator= (const C* s);
-
- idref&amp;
- operator= (const std::basic_string&lt;C>&amp;)
-
- idref&amp;
- operator= (const idref&amp;);
-
-public:
- const type*
- operator-> () const;
-
- type*
- operator-> ();
-
- const type&amp;
- operator* () const;
-
- type&amp;
- operator* ();
-
- const type*
- get () const;
-
- type*
- get ();
-
- // Conversion to bool.
- //
-public:
- typedef void (idref::*bool_convertible)();
- operator bool_convertible () const;
-};
- </pre>
-
- <p>The object, <code>idref</code> instance refers to, is the immediate
- container of the matching <code>id</code> instance. For example,
- with the following instance document and schema:
- </p>
-
-
- <pre class="xml">
-&lt;!-- test.xml -->
-&lt;root>
- &lt;object id="obj-1" text="hello"/>
- &lt;reference>obj-1&lt;/reference>
-&lt;/root>
-
-&lt;!-- test.xsd -->
-&lt;schema>
- &lt;complexType name="object_type">
- &lt;attribute name="id" type="ID"/>
- &lt;attribute name="text" type="string"/>
- &lt;/complexType>
-
- &lt;complexType name="root_type">
- &lt;sequence>
- &lt;element name="object" type="object_type"/>
- &lt;element name="reference" type="IDREF"/>
- &lt;/sequence>
- &lt;/complexType>
-
- &lt;element name="root" type="root_type"/>
-&lt;/schema>
- </pre>
-
- <p>The <code>ref</code> instance in the code below will refer to
- an object of type <code>object_type</code>:</p>
-
- <pre class="c++">
-root_type&amp; root = ...;
-xml_schema::idref&amp; ref (root.reference ());
-object_type&amp; obj (dynamic_cast&lt;object_type&amp;> (*ref));
-cout &lt;&lt; obj.text () &lt;&lt; endl;
- </pre>
-
- <p>The smart pointer interface of the <code>idref</code> class always
- returns a pointer or reference to <code>xml_schema::type</code>.
- This means that you will need to manually cast such pointer or
- reference to its real (dynamic) type before you can use it (unless
- all you need is the base interface provided by
- <code>xml_schema::type</code>). As a special extension to the XML
- Schema language, the mapping supports static typing of <code>idref</code>
- references by employing the <code>refType</code> extension attribute.
- The following example illustrates this mechanism:
- </p>
-
- <pre class="xml">
-&lt;!-- test.xsd -->
-&lt;schema
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension">
-
- ...
-
- &lt;element name="reference" type="IDREF" xse:refType="object_type"/>
-
- ...
-
-&lt;/schema>
- </pre>
-
- <p>With this modification we do not need to do manual casting anymore:
- </p>
-
- <pre class="c++">
-root_type&amp; root = ...;
-root_type::reference_type&amp; ref (root.reference ());
-object_type&amp; obj (*ref);
-cout &lt;&lt; ref->text () &lt;&lt; endl;
- </pre>
-
-
- <h3><a name="2.5.6">2.5.6 Mapping for <code>base64Binary</code> and
- <code>hexBinary</code></a></h3>
-
- <p>The XML Schema <code>base64Binary</code> and <code>hexBinary</code>
- built-in data types are mapped to the
- <code>xml_schema::base64_binary</code> and
- <code>xml_schema::hex_binary</code> C++ classes, respectively. The
- <code>base64_binary</code> and <code>hex_binary</code> classes
- support a simple buffer abstraction by inheriting from the
- <code>xml_schema::buffer</code> class:
- </p>
-
- <pre class="c++">
-class bounds: public virtual exception
-{
-public:
- virtual const char*
- what () const throw ();
-};
-
-class buffer
-{
-public:
- typedef std::size_t size_t;
-
-public:
- buffer (size_t size = 0);
- buffer (size_t size, size_t capacity);
- buffer (const void* data, size_t size);
- buffer (const void* data, size_t size, size_t capacity);
- buffer (void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership);
-
-public:
- buffer (const buffer&amp;);
-
- buffer&amp;
- operator= (const buffer&amp;);
-
- void
- swap (buffer&amp;);
-
-public:
- size_t
- capacity () const;
-
- bool
- capacity (size_t);
-
-public:
- size_t
- size () const;
-
- bool
- size (size_t);
-
-public:
- const char*
- data () const;
-
- char*
- data ();
-
- const char*
- begin () const;
-
- char*
- begin ();
-
- const char*
- end () const;
-
- char*
- end ();
-};
- </pre>
-
- <p>The last overloaded constructor reuses an existing data buffer instead
- of making a copy. If the <code>assume_ownership</code> argument is
- <code>true</code>, the instance assumes ownership of the
- memory block pointed to by the <code>data</code> argument and will
- eventually release it by calling <code>operator delete</code>. The
- <code>capacity</code> and <code>size</code> modifier functions return
- <code>true</code> if the underlying buffer has moved.
- </p>
-
- <p>The <code>bounds</code> exception is thrown if the constructor
- arguments violate the <code>(size&nbsp;&lt;=&nbsp;capacity)</code>
- constraint.</p>
-
- <p>The <code>base64_binary</code> and <code>hex_binary</code> classes
- support the <code>buffer</code> interface and perform automatic
- decoding/encoding from/to the Base64 and Hex formats, respectively:
- </p>
-
- <pre class="c++">
-class base64_binary: public simple_type, public buffer
-{
-public:
- base64_binary (size_t size = 0);
- base64_binary (size_t size, size_t capacity);
- base64_binary (const void* data, size_t size);
- base64_binary (const void* data, size_t size, size_t capacity);
- base64_binary (void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership);
-
-public:
- base64_binary (const base64_binary&amp;);
-
- base64_binary&amp;
- operator= (const base64_binary&amp;);
-
- virtual base64_binary*
- _clone () const;
-
-public:
- std::basic_string&lt;C>
- encode () const;
-};
- </pre>
-
- <pre class="c++">
-class hex_binary: public simple_type, public buffer
-{
-public:
- hex_binary (size_t size = 0);
- hex_binary (size_t size, size_t capacity);
- hex_binary (const void* data, size_t size);
- hex_binary (const void* data, size_t size, size_t capacity);
- hex_binary (void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership);
-
-public:
- hex_binary (const hex_binary&amp;);
-
- hex_binary&amp;
- operator= (const hex_binary&amp;);
-
- virtual hex_binary*
- _clone () const;
-
-public:
- std::basic_string&lt;C>
- encode () const;
-};
- </pre>
-
-
- <h2><a name="2.5.7">2.5.7 Time Zone Representation</a></h2>
-
- <p>The <code>date</code>, <code>dateTime</code>, <code>gDay</code>,
- <code>gMonth</code>, <code>gMonthDay</code>, <code>gYear</code>,
- <code>gYearMonth</code>, and <code>time</code> XML Schema built-in
- types all include an optional time zone component. The following
- <code>xml_schema::time_zone</code> base class is used to represent
- this information:</p>
-
- <pre class="c++">
-class time_zone
-{
-public:
- time_zone ();
- time_zone (short hours, short minutes);
-
- bool
- zone_present () const;
-
- void
- zone_reset ();
-
- short
- zone_hours () const;
-
- void
- zone_hours (short);
-
- short
- zone_minutes () const;
-
- void
- zone_minutes (short);
-};
-
-bool
-operator== (const time_zone&amp;, const time_zone&amp;);
-
-bool
-operator!= (const time_zone&amp;, const time_zone&amp;);
- </pre>
-
- <p>The <code>zone_present()</code> accessor function returns <code>true</code>
- if the time zone is specified. The <code>zone_reset()</code> modifier
- function resets the time zone object to the <em>not specified</em>
- state. If the time zone offset is negative then both hours and
- minutes components are represented as negative integers.</p>
-
-
- <h2><a name="2.5.8">2.5.8 Mapping for <code>date</code></a></h2>
-
- <p>The XML Schema <code>date</code> built-in data type is mapped to the
- <code>xml_schema::date</code> C++ class which represents a year, a day,
- and a month with an optional time zone. Its interface is presented
- below. For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-class date: public simple_type, public time_zone
-{
-public:
- date (int year, unsigned short month, unsigned short day);
- date (int year, unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes);
-
-public:
- date (const date&amp;);
-
- date&amp;
- operator= (const date&amp;);
-
- virtual date*
- _clone () const;
-
-public:
- int
- year () const;
-
- void
- year (int);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
-};
-
-bool
-operator== (const date&amp;, const date&amp;);
-
-bool
-operator!= (const date&amp;, const date&amp;);
- </pre>
-
- <h2><a name="2.5.9">2.5.9 Mapping for <code>dateTime</code></a></h2>
-
- <p>The XML Schema <code>dateTime</code> built-in data type is mapped to the
- <code>xml_schema::date_time</code> C++ class which represents a year, a month,
- a day, hours, minutes, and seconds with an optional time zone. Its interface
- is presented below. For more information on the base
- <code>xml_schema::time_zone</code> class refer to <a href="#2.5.7">Section
- 2.5.7, "Time Zone Representation"</a>.</p>
-
- <pre class="c++">
-class date_time: public simple_type, public time_zone
-{
-public:
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds);
-
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds, short zone_hours, short zone_minutes);
-public:
- date_time (const date_time&amp;);
-
- date_time&amp;
- operator= (const date_time&amp;);
-
- virtual date_time*
- _clone () const;
-
-public:
- int
- year () const;
-
- void
- year (int);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
-
- unsigned short
- hours () const;
-
- void
- hours (unsigned short);
-
- unsigned short
- minutes () const;
-
- void
- minutes (unsigned short);
-
- double
- seconds () const;
-
- void
- seconds (double);
-};
-
-bool
-operator== (const date_time&amp;, const date_time&amp;);
-
-bool
-operator!= (const date_time&amp;, const date_time&amp;);
- </pre>
-
-
- <h2><a name="2.5.10">2.5.10 Mapping for <code>duration</code></a></h2>
-
- <p>The XML Schema <code>duration</code> built-in data type is mapped to the
- <code>xml_schema::duration</code> C++ class which represents a potentially
- negative duration in the form of years, months, days, hours, minutes,
- and seconds. Its interface is presented below.</p>
-
- <pre class="c++">
-class duration: public simple_type
-{
-public:
- duration (bool negative,
- unsigned int years, unsigned int months, unsigned int days,
- unsigned int hours, unsigned int minutes, double seconds);
-public:
- duration (const duration&amp;);
-
- duration&amp;
- operator= (const duration&amp;);
-
- virtual duration*
- _clone () const;
-
-public:
- bool
- negative () const;
-
- void
- negative (bool);
-
- unsigned int
- years () const;
-
- void
- years (unsigned int);
-
- unsigned int
- months () const;
-
- void
- months (unsigned int);
-
- unsigned int
- days () const;
-
- void
- days (unsigned int);
-
- unsigned int
- hours () const;
-
- void
- hours (unsigned int);
-
- unsigned int
- minutes () const;
-
- void
- minutes (unsigned int);
-
- double
- seconds () const;
-
- void
- seconds (double);
-};
-
-bool
-operator== (const duration&amp;, const duration&amp;);
-
-bool
-operator!= (const duration&amp;, const duration&amp;);
- </pre>
-
-
- <h2><a name="2.5.11">2.5.11 Mapping for <code>gDay</code></a></h2>
-
- <p>The XML Schema <code>gDay</code> built-in data type is mapped to the
- <code>xml_schema::gday</code> C++ class which represents a day of the
- month with an optional time zone. Its interface is presented below.
- For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-class gday: public simple_type, public time_zone
-{
-public:
- explicit
- gday (unsigned short day);
- gday (unsigned short day, short zone_hours, short zone_minutes);
-
-public:
- gday (const gday&amp;);
-
- gday&amp;
- operator= (const gday&amp;);
-
- virtual gday*
- _clone () const;
-
-public:
- unsigned short
- day () const;
-
- void
- day (unsigned short);
-};
-
-bool
-operator== (const gday&amp;, const gday&amp;);
-
-bool
-operator!= (const gday&amp;, const gday&amp;);
- </pre>
-
-
- <h2><a name="2.5.12">2.5.12 Mapping for <code>gMonth</code></a></h2>
-
- <p>The XML Schema <code>gMonth</code> built-in data type is mapped to the
- <code>xml_schema::gmonth</code> C++ class which represents a month of the
- year with an optional time zone. Its interface is presented below.
- For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-class gmonth: public simple_type, public time_zone
-{
-public:
- explicit
- gmonth (unsigned short month);
- gmonth (unsigned short month,
- short zone_hours, short zone_minutes);
-
-public:
- gmonth (const gmonth&amp;);
-
- gmonth&amp;
- operator= (const gmonth&amp;);
-
- virtual gmonth*
- _clone () const;
-
-public:
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-};
-
-bool
-operator== (const gmonth&amp;, const gmonth&amp;);
-
-bool
-operator!= (const gmonth&amp;, const gmonth&amp;);
- </pre>
-
-
- <h2><a name="2.5.13">2.5.13 Mapping for <code>gMonthDay</code></a></h2>
-
- <p>The XML Schema <code>gMonthDay</code> built-in data type is mapped to the
- <code>xml_schema::gmonth_day</code> C++ class which represents a day and
- a month of the year with an optional time zone. Its interface is presented
- below. For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-class gmonth_day: public simple_type, public time_zone
-{
-public:
- gmonth_day (unsigned short month, unsigned short day);
- gmonth_day (unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes);
-
-public:
- gmonth_day (const gmonth_day&amp;);
-
- gmonth_day&amp;
- operator= (const gmonth_day&amp;);
-
- virtual gmonth_day*
- _clone () const;
-
-public:
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
-};
-
-bool
-operator== (const gmonth_day&amp;, const gmonth_day&amp;);
-
-bool
-operator!= (const gmonth_day&amp;, const gmonth_day&amp;);
- </pre>
-
-
- <h2><a name="2.5.14">2.5.14 Mapping for <code>gYear</code></a></h2>
-
- <p>The XML Schema <code>gYear</code> built-in data type is mapped to the
- <code>xml_schema::gyear</code> C++ class which represents a year with
- an optional time zone. Its interface is presented below. For more
- information on the base <code>xml_schema::time_zone</code> class refer
- to <a href="#2.5.7">Section 2.5.7, "Time Zone Representation"</a>.</p>
-
- <pre class="c++">
-class gyear: public simple_type, public time_zone
-{
-public:
- explicit
- gyear (int year);
- gyear (int year, short zone_hours, short zone_minutes);
-
-public:
- gyear (const gyear&amp;);
-
- gyear&amp;
- operator= (const gyear&amp;);
-
- virtual gyear*
- _clone () const;
-
-public:
- int
- year () const;
-
- void
- year (int);
-};
-
-bool
-operator== (const gyear&amp;, const gyear&amp;);
-
-bool
-operator!= (const gyear&amp;, const gyear&amp;);
- </pre>
-
-
- <h2><a name="2.5.15">2.5.15 Mapping for <code>gYearMonth</code></a></h2>
-
- <p>The XML Schema <code>gYearMonth</code> built-in data type is mapped to
- the <code>xml_schema::gyear_month</code> C++ class which represents
- a year and a month with an optional time zone. Its interface is presented
- below. For more information on the base <code>xml_schema::time_zone</code>
- class refer to <a href="#2.5.7">Section 2.5.7, "Time Zone
- Representation"</a>.</p>
-
- <pre class="c++">
-class gyear_month: public simple_type, public time_zone
-{
-public:
- gyear_month (int year, unsigned short month);
- gyear_month (int year, unsigned short month,
- short zone_hours, short zone_minutes);
-public:
- gyear_month (const gyear_month&amp;);
-
- gyear_month&amp;
- operator= (const gyear_month&amp;);
-
- virtual gyear_month*
- _clone () const;
-
-public:
- int
- year () const;
-
- void
- year (int);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-};
-
-bool
-operator== (const gyear_month&amp;, const gyear_month&amp;);
-
-bool
-operator!= (const gyear_month&amp;, const gyear_month&amp;);
- </pre>
-
-
- <h2><a name="2.5.16">2.5.16 Mapping for <code>time</code></a></h2>
-
- <p>The XML Schema <code>time</code> built-in data type is mapped to
- the <code>xml_schema::time</code> C++ class which represents hours,
- minutes, and seconds with an optional time zone. Its interface is
- presented below. For more information on the base
- <code>xml_schema::time_zone</code> class refer to
- <a href="#2.5.7">Section 2.5.7, "Time Zone Representation"</a>.</p>
-
- <pre class="c++">
-class time: public simple_type, public time_zone
-{
-public:
- time (unsigned short hours, unsigned short minutes, double seconds);
- time (unsigned short hours, unsigned short minutes, double seconds,
- short zone_hours, short zone_minutes);
-
-public:
- time (const time&amp;);
-
- time&amp;
- operator= (const time&amp;);
-
- virtual time*
- _clone () const;
-
-public:
- unsigned short
- hours () const;
-
- void
- hours (unsigned short);
-
- unsigned short
- minutes () const;
-
- void
- minutes (unsigned short);
-
- double
- seconds () const;
-
- void
- seconds (double);
-};
-
-bool
-operator== (const time&amp;, const time&amp;);
-
-bool
-operator!= (const time&amp;, const time&amp;);
- </pre>
-
-
- <!-- Mapping for Simple Types -->
-
- <h2><a name="2.6">2.6 Mapping for Simple Types</a></h2>
-
- <p>An XML Schema simple type is mapped to a C++ class with the same
- name as the simple type. The class defines a public copy constructor,
- a public copy assignment operator, and a public virtual
- <code>_clone</code> function. The <code>_clone</code> function is
- declared <code>const</code>, does not take any arguments, and returns
- a pointer to a complete copy of the instance allocated in the free
- store. The <code>_clone</code> function shall be used to make copies
- when static type and dynamic type of the instance may differ (see
- <a href="#2.11">Section 2.11, "Mapping for <code>xsi:type</code>
- and Substitution Groups"</a>). For instance:</p>
-
- <pre class="xml">
-&lt;simpleType name="object">
- ...
-&lt;/simpleType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: ...
-{
-public:
- object (const object&amp;);
-
-public:
- object&amp;
- operator= (const object&amp;);
-
-public:
- virtual object*
- _clone () const;
-
- ...
-
-};
- </pre>
-
- <p>The base class specification and the rest of the class definition
- depend on the type of derivation used to define the simple type. </p>
-
-
- <h3><a name="2.6.1">2.6.1 Mapping for Derivation by Restriction</a></h3>
-
- <p>XML Schema derivation by restriction is mapped to C++ public
- inheritance. The base type of the restriction becomes the base
- type for the resulting C++ class. In addition to the members described
- in <a href="#2.6">Section 2.6, "Mapping for Simple Types"</a>, the
- resulting C++ class defines a public constructor with the base type
- as its single argument. For instance:</p>
-
- <pre class="xml">
-&lt;simpleType name="object">
- &lt;restriction base="base">
- ...
- &lt;/restriction>
-&lt;/simpleType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public base
-{
-public:
- object (const base&amp;);
- object (const object&amp;);
-
-public:
- object&amp;
- operator= (const object&amp;);
-
-public:
- virtual object*
- _clone () const;
-};
- </pre>
-
-
- <h3><a name="2.6.2">2.6.2 Mapping for Enumerations</a></h3>
-
-<p>XML Schema restriction by enumeration is mapped to a C++ class
- with semantics similar to C++ <code>enum</code>. Each XML Schema
- enumeration element is mapped to a C++ enumerator with the
- name derived from the <code>value</code> attribute and defined
- in the class scope. In addition to the members
- described in <a href="#2.6">Section 2.6, "Mapping for Simple Types"</a>,
- the resulting C++ class defines a public constructor that can be called
- with one of the enumerators as its single argument, a public constructor
- that can be called with enumeration's base value as its single
- argument, a public assignment operator that can be used to assign the
- value of one of the enumerators, and a public implicit conversion
- operator to the underlying C++ enum type.</p>
-
-<p>Furthermore, for string-based enumeration types, the resulting C++
- class defines a public constructor with a single argument of type
- <code>const C*</code> and a public constructor with a single
- argument of type <code>const std::basic_string&lt;C>&amp;</code>.
- For instance:</p>
-
- <pre class="xml">
-&lt;simpleType name="color">
- &lt;restriction base="string">
- &lt;enumeration value="red"/>
- &lt;enumeration value="green"/>
- &lt;enumeration value="blue"/>
- &lt;/restriction>
-&lt;/simpleType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class color: public xml_schema::string
-{
-public:
- enum value
- {
- red,
- green,
- blue
- };
-
-public:
- color (value);
- color (const C*);
- color (const std::basic_string&lt;C>&amp;);
- color (const xml_schema::string&amp;);
- color (const color&amp;);
-
-public:
- color&amp;
- operator= (value);
-
- color&amp;
- operator= (const color&amp;);
-
-public:
- virtual color*
- _clone () const;
-
-public:
- operator value () const;
-};
- </pre>
-
- <h3><a name="2.6.3">2.6.3 Mapping for Derivation by List</a></h3>
-
- <p>XML Schema derivation by list is mapped to C++ public
- inheritance from <code>xml_schema::simple_type</code>
- (<a href="#2.5.3">Section 2.5.3, "Mapping for
- <code>anySimpleType</code>"</a>) and a suitable sequence type.
- The list item type becomes the element type of the sequence.
- In addition to the members described in <a href="#2.6">Section 2.6,
- "Mapping for Simple Types"</a>, the resulting C++ class defines
- a public default constructor, a public constructor
- with the first argument of type <code>size_type</code> and
- the second argument of list item type that creates
- a list object with the specified number of copies of the specified
- element value, and a public constructor with the two arguments
- of an input iterator type that creates a list object from an
- iterator range. For instance:
- </p>
-
- <pre class="xml">
-&lt;simpleType name="int_list">
- &lt;list itemType="int"/>
-&lt;/simpleType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class int_list: public simple_type,
- public sequence&lt;int>
-{
-public:
- int_list ();
- int_list (size_type n, int x);
-
- template &lt;typename I>
- int_list (const I&amp; begin, const I&amp; end);
- int_list (const int_list&amp;);
-
-public:
- int_list&amp;
- operator= (const int_list&amp;);
-
-public:
- virtual int_list*
- _clone () const;
-};
- </pre>
-
- <p>The <code>sequence</code> class template is defined in an
- implementation-specific namespace. It conforms to the
- sequence interface as defined by the ISO/ANSI Standard for
- C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences").
- Practically, this means that you can treat such a sequence
- as if it was <code>std::vector</code>. One notable extension
- to the standard interface that is available only for
- sequences of non-fundamental C++ types is the addition of
- the overloaded <code>push_back</code> and <code>insert</code>
- member functions which instead of the constant reference
- to the element type accept automatic pointer (<code>std::auto_ptr</code>
- or <code>std::unique_ptr</code>, depending on the C++ standard
- selected) to the element type. These functions assume ownership
- of the pointed to object and reset the passed automatic pointer.
- </p>
-
- <h3><a name="2.6.4">2.6.4 Mapping for Derivation by Union</a></h3>
-
- <p>XML Schema derivation by union is mapped to C++ public
- inheritance from <code>xml_schema::simple_type</code>
- (<a href="#2.5.3">Section 2.5.3, "Mapping for
- <code>anySimpleType</code>"</a>) and <code>std::basic_string&lt;C></code>.
- In addition to the members described in <a href="#2.6">Section 2.6,
- "Mapping for Simple Types"</a>, the resulting C++ class defines a
- public constructor with a single argument of type <code>const C*</code>
- and a public constructor with a single argument of type
- <code>const std::basic_string&lt;C>&amp;</code>. For instance:
- </p>
-
- <pre class="xml">
-&lt;simpleType name="int_string_union">
- &lt;xsd:union memberTypes="xsd:int xsd:string"/>
-&lt;/simpleType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class int_string_union: public simple_type,
- public std::basic_string&lt;C>
-{
-public:
- int_string_union (const C*);
- int_string_union (const std::basic_string&lt;C>&amp;);
- int_string_union (const int_string_union&amp;);
-
-public:
- int_string_union&amp;
- operator= (const int_string_union&amp;);
-
-public:
- virtual int_string_union*
- _clone () const;
-};
- </pre>
-
- <h2><a name="2.7">2.7 Mapping for Complex Types</a></h2>
-
- <p>An XML Schema complex type is mapped to a C++ class with the same
- name as the complex type. The class defines a public copy constructor,
- a public copy assignment operator, and a public virtual
- <code>_clone</code> function. The <code>_clone</code> function is
- declared <code>const</code>, does not take any arguments, and returns
- a pointer to a complete copy of the instance allocated in the free
- store. The <code>_clone</code> function shall be used to make copies
- when static type and dynamic type of the instance may differ (see
- <a href="#2.11">Section 2.11, "Mapping for <code>xsi:type</code>
- and Substitution Groups"</a>).</p>
-
- <p>Additionally, the resulting C++ class
- defines two public constructors that take an initializer for each
- member of the complex type and all its base types that belongs to
- the One cardinality class (see <a href="#2.8">Section 2.8, "Mapping
- for Local Elements and Attributes"</a>). In the first constructor,
- the arguments are passed as constant references and the newly created
- instance is initialized with copies of the passed objects. In the
- second constructor, arguments that are complex types (that is,
- they themselves contain elements or attributes) are passed as
- either <code>std::auto_ptr</code> (C++98) or <code>std::unique_ptr</code>
- (C++11), depending on the C++ standard selected. In this case the newly
- created instance is directly initialized with and assumes ownership
- of the pointed to objects and the <code>std::[auto|unique]_ptr</code>
- arguments are reset to <code>0</code>. For instance:</p>
-
- <pre class="xml">
-&lt;complexType name="complex">
- &lt;sequence>
- &lt;element name="a" type="int"/>
- &lt;element name="b" type="string"/>
- &lt;/sequence>
-&lt;/complexType>
-
-&lt;complexType name="object">
- &lt;sequence>
- &lt;element name="s-one" type="boolean"/>
- &lt;element name="c-one" type="complex"/>
- &lt;element name="optional" type="int" minOccurs="0"/>
- &lt;element name="sequence" type="string" maxOccurs="unbounded"/>
- &lt;/sequence>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class complex: public xml_schema::type
-{
-public:
- object (const int&amp; a, const xml_schema::string&amp; b);
- object (const complex&amp;);
-
-public:
- object&amp;
- operator= (const complex&amp;);
-
-public:
- virtual complex*
- _clone () const;
-
- ...
-
-};
-
-class object: public xml_schema::type
-{
-public:
- object (const bool&amp; s_one, const complex&amp; c_one);
- object (const bool&amp; s_one, std::[auto|unique]_ptr&lt;complex> c_one);
- object (const object&amp;);
-
-public:
- object&amp;
- operator= (const object&amp;);
-
-public:
- virtual object*
- _clone () const;
-
- ...
-
-};
- </pre>
-
- <p>Notice that the generated <code>complex</code> class does not
- have the second (<code>std::[auto|unique]_ptr</code>) version of the
- constructor since all its required members are of simple types.</p>
-
- <p>If an XML Schema complex type has an ultimate base which is an XML
- Schema simple type then the resulting C++ class also defines a public
- constructor that takes an initializer for the base type as well as
- for each member of the complex type and all its base types that
- belongs to the One cardinality class. For instance:</p>
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;simpleContent>
- &lt;extension base="date">
- &lt;attribute name="lang" type="language" use="required"/>
- &lt;/extension>
- &lt;/simpleContent>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::string
-{
-public:
- object (const xml_schema::language&amp; lang);
-
- object (const xml_schema::date&amp; base,
- const xml_schema::language&amp; lang);
-
- ...
-
-};
- </pre>
-
- <p>Furthermore, for string-based XML Schema complex types, the resulting C++
- class also defines two public constructors with the first arguments
- of type <code>const C*</code> and <code>std::basic_string&lt;C>&amp;</code>,
- respectively, followed by arguments for each member of the complex
- type and all its base types that belongs to the One cardinality
- class. For enumeration-based complex types the resulting C++
- class also defines a public constructor with the first arguments
- of the underlying enum type followed by arguments for each member
- of the complex type and all its base types that belongs to the One
- cardinality class. For instance:</p>
-
- <pre class="xml">
-&lt;simpleType name="color">
- &lt;restriction base="string">
- &lt;enumeration value="red"/>
- &lt;enumeration value="green"/>
- &lt;enumeration value="blue"/>
- &lt;/restriction>
-&lt;/simpleType>
-
-&lt;complexType name="object">
- &lt;simpleContent>
- &lt;extension base="color">
- &lt;attribute name="lang" type="language" use="required"/>
- &lt;/extension>
- &lt;/simpleContent>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class color: public xml_schema::string
-{
-public:
- enum value
- {
- red,
- green,
- blue
- };
-
-public:
- color (value);
- color (const C*);
- color (const std::basic_string&lt;C>&amp;);
-
- ...
-
-};
-
-class object: color
-{
-public:
- object (const color&amp; base,
- const xml_schema::language&amp; lang);
-
- object (const color::value&amp; base,
- const xml_schema::language&amp; lang);
-
- object (const C* base,
- const xml_schema::language&amp; lang);
-
- object (const std::basic_string&lt;C>&amp; base,
- const xml_schema::language&amp; lang);
-
- ...
-
-};
- </pre>
-
- <p>Additional constructors can be requested with the
- <code>--generate-default-ctor</code> and
- <code>--generate-from-base-ctor</code> options. See the
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a> for details.</p>
-
- <p>If an XML Schema complex type is not explicitly derived from any type,
- the resulting C++ class is derived from <code>xml_schema::type</code>.
- In cases where an XML Schema complex type is defined using derivation
- by extension or restriction, the resulting C++ base class specification
- depends on the type of derivation and is described in the subsequent
- sections.
- </p>
-
- <p>The mapping for elements and attributes that are defined in a complex
- type is described in <a href="#2.8">Section 2.8, "Mapping for Local
- Elements and Attributes"</a>.
- </p>
-
- <h3><a name="2.7.1">2.7.1 Mapping for Derivation by Extension</a></h3>
-
- <p>XML Schema derivation by extension is mapped to C++ public
- inheritance. The base type of the extension becomes the base
- type for the resulting C++ class.
- </p>
-
- <h3><a name="2.7.2">2.7.2 Mapping for Derivation by Restriction</a></h3>
-
- <p>XML Schema derivation by restriction is mapped to C++ public
- inheritance. The base type of the restriction becomes the base
- type for the resulting C++ class. XML Schema elements and
- attributes defined within restriction do not result in any
- definitions in the resulting C++ class. Instead, corresponding
- (unrestricted) definitions are inherited from the base class.
- In the future versions of this mapping, such elements and
- attributes may result in redefinitions of accessors and
- modifiers to reflect their restricted semantics.
- </p>
-
- <!-- 2.8 Mapping for Local Elements and Attributes -->
-
- <h2><a name="2.8">2.8 Mapping for Local Elements and Attributes</a></h2>
-
- <p>XML Schema element and attribute definitions are called local
- if they appear within a complex type definition, an element group
- definition, or an attribute group definitions.
- </p>
-
- <p>Local XML Schema element and attribute definitions have the same
- C++ mapping. Therefore, in this section, local elements and
- attributes are collectively called members.
- </p>
-
- <p>While there are many different member cardinality combinations
- (determined by the <code>use</code> attribute for attributes and
- the <code>minOccurs</code> and <code>maxOccurs</code> attributes
- for elements), the mapping divides all possible cardinality
- combinations into three cardinality classes:
- </p>
-
- <dl>
- <dt><i>one</i></dt>
- <dd>attributes: <code>use == "required"</code></dd>
- <dd>attributes: <code>use == "optional"</code> and has default or fixed value</dd>
- <dd>elements: <code>minOccurs == "1"</code> and <code>maxOccurs == "1"</code></dd>
-
- <dt><i>optional</i></dt>
- <dd>attributes: <code>use == "optional"</code> and doesn't have default or fixed value</dd>
- <dd>elements: <code>minOccurs == "0"</code> and <code>maxOccurs == "1"</code></dd>
-
- <dt><i>sequence</i></dt>
- <dd>elements: <code>maxOccurs > "1"</code></dd>
- </dl>
-
- <p>An optional attribute with a default or fixed value acquires this value
- if the attribute hasn't been specified in an instance document (see
- <a href="#A">Appendix A, "Default and Fixed Values"</a>). This
- mapping places such optional attributes to the One cardinality
- class.</p>
-
- <p>A member is mapped to a set of public type definitions
- (<code>typedef</code>s) and a set of public accessor and modifier
- functions. Type definitions have names derived from the member's
- name. The accessor and modifier functions have the same name as the
- member. For example:
- </p>
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- &lt;element name="member" type="string"/>
- &lt;/sequence>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- typedef xml_schema::string member_type;
-
- const member_type&amp;
- member () const;
-
- ...
-
-};
- </pre>
-
- <p>In addition, if a member has a default or fixed value, a static
- accessor function is generated that returns this value. For
- example:</p>
-
-<pre class="xml">
-&lt;complexType name="object">
- &lt;attribute name="data" type="string" default="test"/>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- typedef xml_schema::string data_type;
-
- const data_type&amp;
- data () const;
-
- static const data_type&amp;
- data_default_value ();
-
- ...
-
-};
- </pre>
-
- <p>Names and semantics of type definitions for the member as well
- as signatures of the accessor and modifier functions depend on
- the member's cardinality class and are described in the following
- sub-sections.
- </p>
-
-
- <h3><a name="2.8.1">2.8.1 Mapping for Members with the One Cardinality Class</a></h3>
-
- <p>For the One cardinality class, the type definitions consist of
- an alias for the member's type with the name created by appending
- the <code>_type</code> suffix to the member's name.
- </p>
-
- <p>The accessor functions come in constant and non-constant versions.
- The constant accessor function returns a constant reference to the
- member and can be used for read-only access. The non-constant
- version returns an unrestricted reference to the member and can
- be used for read-write access.
- </p>
-
- <p>The first modifier function expects an argument of type reference to
- constant of the member's type. It makes a deep copy of its argument.
- Except for member's types that are mapped to fundamental C++ types,
- the second modifier function is provided that expects an argument
- of type automatic pointer (<code>std::auto_ptr</code> or
- <code>std::unique_ptr</code>, depending on the C++ standard selected)
- to the member's type. It assumes ownership of the pointed to object
- and resets the passed automatic pointer. For instance:</p>
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- &lt;element name="member" type="string"/>
- &lt;/sequence>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef xml_schema::string member_type;
-
- // Accessors.
- //
- const member_type&amp;
- member () const;
-
- member_type&amp;
- member ();
-
- // Modifiers.
- //
- void
- member (const member_type&amp;);
-
- void
- member (std::[auto|unique]_ptr&lt;member_type>);
- ...
-
-};
- </pre>
-
- <p>In addition, if requested by specifying the <code>--generate-detach</code>
- option and only for members of non-fundamental C++ types, the mapping
- provides a detach function that returns an automatic pointer to the
- member's type, for example:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- ...
-
- std::[auto|unique]_ptr&lt;member_type>
- detach_member ();
- ...
-
-};
- </pre>
-
- <p>This function detaches the value from the tree leaving the member
- value uninitialized. Accessing such an uninitialized value prior to
- re-initializing it results in undefined behavior.</p>
-
- <p>The following code shows how one could use this mapping:</p>
-
- <pre class="c++">
-void
-f (object&amp; o)
-{
- using xml_schema::string;
-
- string s (o.member ()); // get
- object::member_type&amp; sr (o.member ()); // get
-
- o.member ("hello"); // set, deep copy
- o.member () = "hello"; // set, deep copy
-
- // C++98 version.
- //
- std::auto_ptr&lt;string> p (new string ("hello"));
- o.member (p); // set, assumes ownership
- p = o.detach_member (); // detach, member is uninitialized
- o.member (p); // re-attach
-
- // C++11 version.
- //
- std::unique_ptr&lt;string> p (new string ("hello"));
- o.member (std::move (p)); // set, assumes ownership
- p = o.detach_member (); // detach, member is uninitialized
- o.member (std::move (p)); // re-attach
-}
- </pre>
-
-
-<h3><a name="2.8.2">2.8.2 Mapping for Members with the Optional Cardinality Class</a></h3>
-
- <p>For the Optional cardinality class, the type definitions consist of
- an alias for the member's type with the name created by appending
- the <code>_type</code> suffix to the member's name and an alias for
- the container type with the name created by appending the
- <code>_optional</code> suffix to the member's name.
- </p>
-
- <p>Unlike accessor functions for the One cardinality class, accessor
- functions for the Optional cardinality class return references to
- corresponding containers rather than directly to members. The
- accessor functions come in constant and non-constant versions.
- The constant accessor function returns a constant reference to
- the container and can be used for read-only access. The non-constant
- version returns an unrestricted reference to the container
- and can be used for read-write access.
- </p>
-
- <p>The modifier functions are overloaded for the member's
- type and the container type. The first modifier function
- expects an argument of type reference to constant of the
- member's type. It makes a deep copy of its argument.
- Except for member's types that are mapped to fundamental C++ types,
- the second modifier function is provided that expects an argument
- of type automatic pointer (<code>std::auto_ptr</code> or
- <code>std::unique_ptr</code>, depending on the C++ standard selected)
- to the member's type. It assumes ownership of the pointed to object
- and resets the passed automatic pointer. The last modifier function
- expects an argument of type reference to constant of the container
- type. It makes a deep copy of its argument. For instance:
- </p>
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- &lt;element name="member" type="string" minOccurs="0"/>
- &lt;/sequence>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef xml_schema::string member_type;
- typedef optional&lt;member_type> member_optional;
-
- // Accessors.
- //
- const member_optional&amp;
- member () const;
-
- member_optional&amp;
- member ();
-
- // Modifiers.
- //
- void
- member (const member_type&amp;);
-
- void
- member (std::[auto|unique]_ptr&lt;member_type>);
-
- void
- member (const member_optional&amp;);
-
- ...
-
-};
- </pre>
-
-
- <p>The <code>optional</code> class template is defined in an
- implementation-specific namespace and has the following
- interface. The <code>[auto|unique]_ptr</code>-based constructor
- and modifier function are only available if the template
- argument is not a fundamental C++ type.
- </p>
-
- <pre class="c++">
-template &lt;typename X>
-class optional
-{
-public:
- optional ();
-
- // Makes a deep copy.
- //
- explicit
- optional (const X&amp;);
-
- // Assumes ownership.
- //
- explicit
- optional (std::[auto|unique]_ptr&lt;X>);
-
- optional (const optional&amp;);
-
-public:
- optional&amp;
- operator= (const X&amp;);
-
- optional&amp;
- operator= (const optional&amp;);
-
- // Pointer-like interface.
- //
-public:
- const X*
- operator-> () const;
-
- X*
- operator-> ();
-
- const X&amp;
- operator* () const;
-
- X&amp;
- operator* ();
-
- typedef void (optional::*bool_convertible) ();
- operator bool_convertible () const;
-
- // Get/set interface.
- //
-public:
- bool
- present () const;
-
- const X&amp;
- get () const;
-
- X&amp;
- get ();
-
- // Makes a deep copy.
- //
- void
- set (const X&amp;);
-
- // Assumes ownership.
- //
- void
- set (std::[auto|unique]_ptr&lt;X>);
-
- // Detach and return the contained value.
- //
- std::[auto|unique]_ptr&lt;X>
- detach ();
-
- void
- reset ();
-};
-
-template &lt;typename X>
-bool
-operator== (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
-
-template &lt;typename X>
-bool
-operator!= (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
-
-template &lt;typename X>
-bool
-operator&lt; (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
-
-template &lt;typename X>
-bool
-operator> (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
-
-template &lt;typename X>
-bool
-operator&lt;= (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
-
-template &lt;typename X>
-bool
-operator>= (const optional&lt;X>&amp;, const optional&lt;X>&amp;);
- </pre>
-
-
- <p>The following code shows how one could use this mapping:</p>
-
- <pre class="c++">
-void
-f (object&amp; o)
-{
- using xml_schema::string;
-
- if (o.member ().present ()) // test
- {
- string&amp; s (o.member ().get ()); // get
- o.member ("hello"); // set, deep copy
- o.member ().set ("hello"); // set, deep copy
- o.member ().reset (); // reset
- }
-
- // Same as above but using pointer notation:
- //
- if (o.member ()) // test
- {
- string&amp; s (*o.member ()); // get
- o.member ("hello"); // set, deep copy
- *o.member () = "hello"; // set, deep copy
- o.member ().reset (); // reset
- }
-
- // C++98 version.
- //
- std::auto_ptr&lt;string> p (new string ("hello"));
- o.member (p); // set, assumes ownership
-
- p = new string ("hello");
- o.member ().set (p); // set, assumes ownership
-
- p = o.member ().detach (); // detach, member is reset
- o.member ().set (p); // re-attach
-
- // C++11 version.
- //
- std::unique_ptr&lt;string> p (new string ("hello"));
- o.member (std::move (p)); // set, assumes ownership
-
- p.reset (new string ("hello"));
- o.member ().set (std::move (p)); // set, assumes ownership
-
- p = o.member ().detach (); // detach, member is reset
- o.member ().set (std::move (p)); // re-attach
-}
- </pre>
-
-
- <h3><a name="2.8.3">2.8.3 Mapping for Members with the Sequence Cardinality Class</a></h3>
-
- <p>For the Sequence cardinality class, the type definitions consist of an
- alias for the member's type with the name created by appending
- the <code>_type</code> suffix to the member's name, an alias of
- the container type with the name created by appending the
- <code>_sequence</code> suffix to the member's name, an alias of
- the iterator type with the name created by appending the
- <code>_iterator</code> suffix to the member's name, and an alias
- of the constant iterator type with the name created by appending the
- <code>_const_iterator</code> suffix to the member's name.
- </p>
-
- <p>The accessor functions come in constant and non-constant versions.
- The constant accessor function returns a constant reference to the
- container and can be used for read-only access. The non-constant
- version returns an unrestricted reference to the container and can
- be used for read-write access.
- </p>
-
- <p>The modifier function expects an argument of type reference to
- constant of the container type. The modifier function
- makes a deep copy of its argument. For instance:
- </p>
-
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- &lt;element name="member" type="string" minOccurs="unbounded"/>
- &lt;/sequence>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef xml_schema::string member_type;
- typedef sequence&lt;member_type> member_sequence;
- typedef member_sequence::iterator member_iterator;
- typedef member_sequence::const_iterator member_const_iterator;
-
- // Accessors.
- //
- const member_sequence&amp;
- member () const;
-
- member_sequence&amp;
- member ();
-
- // Modifier.
- //
- void
- member (const member_sequence&amp;);
-
- ...
-
-};
- </pre>
-
- <p>The <code>sequence</code> class template is defined in an
- implementation-specific namespace. It conforms to the
- sequence interface as defined by the ISO/ANSI Standard for
- C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences").
- Practically, this means that you can treat such a sequence
- as if it was <code>std::vector</code>. Two notable extensions
- to the standard interface that are available only for
- sequences of non-fundamental C++ types are the addition of
- the overloaded <code>push_back</code> and <code>insert</code>
- as well as the <code>detach_back</code> and <code>detach</code>
- member functions. The additional <code>push_back</code> and
- <code>insert</code> functions accept an automatic pointer
- (<code>std::auto_ptr</code> or <code>std::unique_ptr</code>,
- depending on the C++ standard selected) to the
- element type instead of the constant reference. They assume
- ownership of the pointed to object and reset the passed
- automatic pointer. The <code>detach_back</code> and
- <code>detach</code> functions detach the element
- value from the sequence container and, by default, remove
- the element from the sequence. These additional functions
- have the following signatures:</p>
-
- <pre class="c++">
-template &lt;typename X>
-class sequence
-{
-public:
- ...
-
- void
- push_back (std::[auto|unique]_ptr&lt;X>)
-
- iterator
- insert (iterator position, std::[auto|unique]_ptr&lt;X>)
-
- std::[auto|unique]_ptr&lt;X>
- detach_back (bool pop = true);
-
- iterator
- detach (iterator position,
- std::[auto|unique]_ptr&lt;X>&amp; result,
- bool erase = true)
-
- ...
-}
- </pre>
-
- <p>The following code shows how one could use this mapping:</p>
-
- <pre class="c++">
-void
-f (object&amp; o)
-{
- using xml_schema::string;
-
- object::member_sequence&amp; s (o.member ());
-
- // Iteration.
- //
- for (object::member_iterator i (s.begin ()); i != s.end (); ++i)
- {
- string&amp; value (*i);
- }
-
- // Modification.
- //
- s.push_back ("hello"); // deep copy
-
- // C++98 version.
- //
- std::auto_ptr&lt;string> p (new string ("hello"));
- s.push_back (p); // assumes ownership
- p = s.detach_back (); // detach and pop
- s.push_back (p); // re-append
-
- // C++11 version.
- //
- std::unique_ptr&lt;string> p (new string ("hello"));
- s.push_back (std::move (p)); // assumes ownership
- p = s.detach_back (); // detach and pop
- s.push_back (std::move (p)); // re-append
-
- // Setting a new container.
- //
- object::member_sequence n;
- n.push_back ("one");
- n.push_back ("two");
- o.member (n); // deep copy
-}
- </pre>
-
- <h3><a name="2.8.4">2.8.4 Element Order</a></h3>
-
- <p>C++/Tree is a "flattening" mapping in a sense that many levels of
- nested compositors (<code>choice</code> and <code>sequence</code>),
- all potentially with their own cardinalities, are in the end mapped
- to a flat set of elements with one of the three cardinality classes
- discussed in the previous sections. While this results in a simple
- and easy to use API for most types, in certain cases, the order of
- elements in the actual XML documents is not preserved once parsed
- into the object model. And sometimes such order has
- application-specific significance. As an example, consider a schema
- that defines a batch of bank transactions:</p>
-
- <pre class="xml">
-&lt;complexType name="withdraw">
- &lt;sequence>
- &lt;element name="account" type="unsignedInt"/>
- &lt;element name="amount" type="unsignedInt"/>
- &lt;/sequence>
-&lt;/complexType>
-
-&lt;complexType name="deposit">
- &lt;sequence>
- &lt;element name="account" type="unsignedInt"/>
- &lt;element name="amount" type="unsignedInt"/>
- &lt;/sequence>
-&lt;/complexType>
-
-&lt;complexType name="batch">
- &lt;choice minOccurs="0" maxOccurs="unbounded">
- &lt;element name="withdraw" type="withdraw"/>
- &lt;element name="deposit" type="deposit"/>
- &lt;/choice>
-&lt;/complexType>
- </pre>
-
- <p>The batch can contain any number of transactions in any order
- but the order of transactions in each actual batch is significant.
- For instance, consider what could happen if we reorder the
- transactions and apply all the withdrawals before deposits.</p>
-
- <p>For the <code>batch</code> schema type defined above the default
- C++/Tree mapping will produce a C++ class that contains a pair of
- sequence containers, one for each of the two elements. While this
- will capture the content (transactions), the order of this content
- as it appears in XML will be lost. Also, if we try to serialize the
- batch we just loaded back to XML, all the withdrawal transactions
- will appear before deposits.</p>
-
- <p>To overcome this limitation of a flattening mapping, C++/Tree
- allows us to mark certain XML Schema types, for which content
- order is important, as ordered.</p>
-
- <p>There are several command line options that control which
- schema types are treated as ordered. To make an individual
- type ordered, we use the <code>--ordered-type</code> option,
- for example:</p>
-
- <pre class="term">
---ordered-type batch
- </pre>
-
- <p>To automatically treat all the types that are derived from an ordered
- type also ordered, we use the <code>--ordered-type-derived</code>
- option. This is primarily useful if you would like to iterate
- over the complete hierarchy's content using the content order
- sequence (discussed below).</p>
-
- <p>Ordered types are also useful for handling mixed content. To
- automatically mark all the types with mixed content as ordered
- we use the <code>--ordered-type-mixed</code> option. For more
- information on handling mixed content see <a href="#2.13">Section
- 2.13, "Mapping for Mixed Content Models"</a>.</p>
-
- <p>Finally, we can mark all the types in the schema we are
- compiling with the <code>--ordered-type-all</code> option.
- You should only resort to this option if all the types in
- your schema truly suffer from the loss of content
- order since, as we will discuss shortly, ordered types
- require extra effort to access and, especially, modify.
- See the
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a> for more information on
- these options.</p>
-
- <p>Once a type is marked ordered, C++/Tree alters its mapping
- in several ways. Firstly, for each local element, element
- wildcard (<a href="#2.12.4">Section 2.12.4, "Element Wildcard
- Order"</a>), and mixed content text (<a href="#2.13">Section
- 2.13, "Mapping for Mixed Content Models"</a>) in this type, a
- content id constant is generated. Secondly, an addition sequence
- is added to the class that captures the content order. Here
- is how the mapping of our <code>batch</code> class changes
- once we make it ordered:</p>
-
- <pre class="c++">
-class batch: public xml_schema::type
-{
-public:
- // withdraw
- //
- typedef withdraw withdraw_type;
- typedef sequence&lt;withdraw_type> withdraw_sequence;
- typedef withdraw_sequence::iterator withdraw_iterator;
- typedef withdraw_sequence::const_iterator withdraw_const_iterator;
-
- static const std::size_t withdraw_id = 1;
-
- const withdraw_sequence&amp;
- withdraw () const;
-
- withdraw_sequence&amp;
- withdraw ();
-
- void
- withdraw (const withdraw_sequence&amp;);
-
- // deposit
- //
- typedef deposit deposit_type;
- typedef sequence&lt;deposit_type> deposit_sequence;
- typedef deposit_sequence::iterator deposit_iterator;
- typedef deposit_sequence::const_iterator deposit_const_iterator;
-
- static const std::size_t deposit_id = 2;
-
- const deposit_sequence&amp;
- deposit () const;
-
- deposit_sequence&amp;
- deposit ();
-
- void
- deposit (const deposit_sequence&amp;);
-
- // content_order
- //
- typedef xml_schema::content_order content_order_type;
- typedef std::vector&lt;content_order_type> content_order_sequence;
- typedef content_order_sequence::iterator content_order_iterator;
- typedef content_order_sequence::const_iterator content_order_const_iterator;
-
- const content_order_sequence&amp;
- content_order () const;
-
- content_order_sequence&amp;
- content_order ();
-
- void
- content_order (const content_order_sequence&amp;);
-
- ...
-};
- </pre>
-
- <p>Notice the <code>withdraw_id</code> and <code>deposit_id</code>
- content ids as well as the extra <code>content_order</code>
- sequence that does not correspond to any element in the
- schema definition. The other changes to the mapping for ordered
- types has to do with XML parsing and serialization code. During
- parsing the content order is captured in the <code>content_order</code>
- sequence while during serialization this sequence is used to
- determine the order in which content is serialized. The
- <code>content_order</code> sequence is also copied during
- copy construction and assigned during copy assignment. It is also
- taken into account during comparison.</p>
-
- <p>The entry type of the <code>content_order</code> sequence is the
- <code>xml_schema::content_order</code> type that has the following
- interface:</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- struct content_order
- {
- content_order (std::size_t id, std::size_t index = 0);
-
- std::size_t id;
- std::size_t index;
- };
-
- bool
- operator== (const content_order&amp;, const content_order&amp;);
-
- bool
- operator!= (const content_order&amp;, const content_order&amp;);
-
- bool
- operator&lt; (const content_order&amp;, const content_order&amp;);
-}
- </pre>
-
- <p>The <code>content_order</code> sequence describes the order of
- content (elements, including wildcards, as well as mixed content
- text). Each entry in this sequence consists of the content id
- (for example, <code>withdraw_id</code> or <code>deposit_id</code>
- in our case) as well as, for elements of the sequence cardinality
- class, an index into the corresponding sequence container (the
- index is unused for the one and optional cardinality classes).
- For example, in our case, if the content id is <code>withdraw_id</code>,
- then the index will point into the <code>withdraw</code> element
- sequence.</p>
-
- <p>With all this information we can now examine how to iterate over
- transaction in the batch in content order:</p>
-
- <pre class="c++">
-batch&amp; b = ...
-
-for (batch::content_order_const_iterator i (b.content_order ().begin ());
- i != b.content_order ().end ();
- ++i)
-{
- switch (i->id)
- {
- case batch::withdraw_id:
- {
- const withdraw&amp; t (b.withdraw ()[i->index]);
- cerr &lt;&lt; t.account () &lt;&lt; " withdraw " &lt;&lt; t.amount () &lt;&lt; endl;
- break;
- }
- case batch::deposit_id:
- {
- const deposit&amp; t (b.deposit ()[i->index]);
- cerr &lt;&lt; t.account () &lt;&lt; " deposit " &lt;&lt; t.amount () &lt;&lt; endl;
- break;
- }
- default:
- {
- assert (false); // Unknown content id.
- }
- }
-}
- </pre>
-
- <p>If we serialized our batch back to XML, we would also see that the
- order of transactions in the output is exactly the same as in the
- input rather than all the withdrawals first followed by all the
- deposits.</p>
-
- <p>The most complex aspect of working with ordered types is
- modifications. Now we not only need to change the content,
- but also remember to update the order information corresponding
- to this change. As a first example, we add a deposit transaction
- to the batch:</p>
-
- <pre class="c++">
-using xml_schema::content_order;
-
-batch::deposit_sequence&amp; d (b.deposit ());
-batch::withdraw_sequence&amp; w (b.withdraw ());
-batch::content_order_sequence&amp; co (b.content_order ());
-
-d.push_back (deposit (123456789, 100000));
-co.push_back (content_order (batch::deposit_id, d.size () - 1));
- </pre>
-
- <p>In the above example we first added the content (deposit
- transaction) and then updated the content order information
- by adding an entry with <code>deposit_id</code> content
- id and the index of the just added deposit transaction.</p>
-
- <p>Removing the last transaction can be easy if we know which
- transaction (deposit or withdrawal) is last:</p>
-
- <pre class="c++">
-d.pop_back ();
-co.pop_back ();
- </pre>
-
- <p>If, however, we do not know which transaction is last, then
- things get a bit more complicated:</p>
-
- <pre class="c++">
-switch (co.back ().id)
-{
-case batch::withdraw_id:
- {
- d.pop_back ();
- break;
- }
-case batch::deposit_id:
- {
- w.pop_back ();
- break;
- }
-}
-
-co.pop_back ();
- </pre>
-
- <p>The following example shows how to add a transaction at the
- beginning of the batch:</p>
-
- <pre class="c++">
-w.push_back (withdraw (123456789, 100000));
-co.insert (co.begin (),
- content_order (batch::withdraw_id, w.size () - 1));
- </pre>
-
- <p>Note also that when we merely modify the content of one
- of the elements in place, we do not need to update its
- order since it doesn't change. For example, here is how
- we can change the amount in the first withdrawal:</p>
-
- <pre class="c++">
-w[0].amount (10000);
- </pre>
-
- <p>For the complete working code shown in this section refer to the
- <code>order/element</code> example in the
- <code>examples/cxx/tree/</code> directory in the XSD distribution.</p>
-
- <p>If both the base and derived types are ordered, then the
- content order sequence is only added to the base and the content
- ids are unique within the whole hierarchy. In this case
- the content order sequence for the derived type contains
- ordering information for both base and derived content.</p>
-
- <p>In some applications we may need to perform more complex
- content processing. For example, in our case, we may need
- to remove all the withdrawal transactions. The default
- container, <code>std::vector</code>, is not particularly
- suitable for such operations. What may be required by
- some applications is a multi-index container that not
- only allows us to iterate in content order similar to
- <code>std::vector</code> but also search by the content
- id as well as the content id and index pair.</p>
-
- <p>While C++/Tree does not provide this functionality by
- default, it allows us to specify a custom container
- type for content order with the <code>--order-container</code>
- command line option. The only requirement from the
- generated code side for such a container is to provide
- the <code>vector</code>-like <code>push_back()</code>,
- <code>size()</code>, and const iteration interfaces.</p>
-
- <p>As an example, here is how we can use the Boost Multi-Index
- container for content order. First we create the
- <code>content-order-container.hxx</code> header with the
- following definition (in C++11, use the alias template
- instead):</p>
-
- <pre class="c++">
-#ifndef CONTENT_ORDER_CONTAINER
-#define CONTENT_ORDER_CONTAINER
-
-#include &lt;cstddef> // std::size_t
-
-#include &lt;boost/multi_index_container.hpp>
-#include &lt;boost/multi_index/member.hpp>
-#include &lt;boost/multi_index/identity.hpp>
-#include &lt;boost/multi_index/ordered_index.hpp>
-#include &lt;boost/multi_index/random_access_index.hpp>
-
-struct by_id {};
-struct by_id_index {};
-
-template &lt;typename T>
-struct content_order_container:
- boost::multi_index::multi_index_container&lt;
- T,
- boost::multi_index::indexed_by&lt;
- boost::multi_index::random_access&lt;>,
- boost::multi_index::ordered_unique&lt;
- boost::multi_index::tag&lt;by_id_index>,
- boost::multi_index::identity&lt;T>
- >,
- boost::multi_index::ordered_non_unique&lt;
- boost::multi_index::tag&lt;by_id>,
- boost::multi_index::member&lt;T, std::size_t, &amp;T::id>
- >
- >
- >
-{};
-
-#endif
- </pre>
-
- <p>Next we add the following two XSD compiler options to include
- this header into every generated header file and to use the
- custom container type (see the XSD compiler command line manual
- for more information on shell quoting for the first option):</p>
-
- <pre class="term">
---hxx-prologue '#include "content-order-container.hxx"'
---order-container content_order_container
- </pre>
-
- <p>With these changes we can now use the multi-index functionality,
- for example, to search for a specific content id:</p>
-
- <pre class="c++">
-typedef batch::content_order_sequence::index&lt;by_id>::type id_set;
-typedef id_set::iterator id_iterator;
-
-const id_set&amp; ids (b.content_order ().get&lt;by_id> ());
-
-std::pair&lt;id_iterator, id_iterator> r (
- ids.equal_range (std::size_t (batch::deposit_id));
-
-for (id_iterator i (r.first); i != r.second; ++i)
-{
- const deposit&amp; t (b.deposit ()[i->index]);
- cerr &lt;&lt; t.account () &lt;&lt; " deposit " &lt;&lt; t.amount () &lt;&lt; endl;
-}
- </pre>
-
- <h2><a name="2.9">2.9 Mapping for Global Elements</a></h2>
-
- <p>An XML Schema element definition is called global if it appears
- directly under the <code>schema</code> element.
- A global element is a valid root of an instance document. By
- default, a global element is mapped to a set of overloaded
- parsing and, optionally, serialization functions with the
- same name as the element. It is also possible to generate types
- for root elements instead of parsing and serialization functions.
- This is primarily useful to distinguish object models with the
- same root type but with different root elements. See
- <a href="#2.9.1">Section 2.9.1, "Element Types"</a> for details.
- It is also possible to request the generation of an element map
- which allows uniform parsing and serialization of multiple root
- elements. See <a href="#2.9.2">Section 2.9.2, "Element Map"</a>
- for details.
- </p>
-
- <p>The parsing functions read XML instance documents and return
- corresponding object models as an automatic pointer
- (<code>std::auto_ptr</code> or <code>std::unique_ptr</code>,
- depending on the C++ standard selected). Their signatures
- have the following pattern (<code>type</code> denotes
- element's type and <code>name</code> denotes element's
- name):
- </p>
-
- <pre class="c++">
-std::[auto|unique]_ptr&lt;type>
-name (....);
- </pre>
-
- <p>The process of parsing, including the exact signatures of the parsing
- functions, is the subject of <a href="#3">Chapter 3, "Parsing"</a>.
- </p>
-
- <p>The serialization functions write object models back to XML instance
- documents. Their signatures have the following pattern:
- </p>
-
- <pre class="c++">
-void
-name (&lt;stream type>&amp;, const type&amp;, ....);
- </pre>
-
- <p>The process of serialization, including the exact signatures of the
- serialization functions, is the subject of <a href="#4">Chapter 4,
- "Serialization"</a>.
- </p>
-
-
- <h3><a name="2.9.1">2.9.1 Element Types</a></h3>
-
- <p>The generation of element types is requested with the
- <code>--generate-element-map</code> option. With this option
- each global element is mapped to a C++ class with the
- same name as the element. Such a class is derived from
- <code>xml_schema::element_type</code> and contains the same set
- of type definitions, constructors, and member function as would a
- type containing a single element with the One cardinality class
- named <code>"value"</code>. In addition, the element type also
- contains a set of member functions for accessing the element
- name and namespace as well as its value in a uniform manner.
- For example:</p>
-
- <pre class="xml">
-&lt;complexType name="type">
- &lt;sequence>
- ...
- &lt;/sequence>
-&lt;/complexType>
-
-&lt;element name="root" type="type"/>
- </pre>
-
-<p>is mapped to:</p>
-
- <pre class="c++">
-class type
-{
- ...
-};
-
-class root: public xml_schema::element_type
-{
-public:
- // Element value.
- //
- typedef type value_type;
-
- const value_type&amp;
- value () const;
-
- value_type&amp;
- value ();
-
- void
- value (const value_type&amp;);
-
- void
- value (std::[auto|unique]_ptr&lt;value_type>);
-
- // Constructors.
- //
- root (const value_type&amp;);
-
- root (std::[auto|unique]_ptr&lt;value_type>);
-
- root (const xercesc::DOMElement&amp;, xml_schema::flags = 0);
-
- root (const root&amp;, xml_schema::flags = 0);
-
- virtual root*
- _clone (xml_schema::flags = 0) const;
-
- // Element name and namespace.
- //
- static const std::string&amp;
- name ();
-
- static const std::string&amp;
- namespace_ ();
-
- virtual const std::string&amp;
- _name () const;
-
- virtual const std::string&amp;
- _namespace () const;
-
- // Element value as xml_schema::type.
- //
- virtual const xml_schema::type*
- _value () const;
-
- virtual xml_schema::type*
- _value ();
-};
-
-void
-operator&lt;&lt; (xercesc::DOMElement&amp;, const root&amp;);
- </pre>
-
- <p>The <code>xml_schema::element_type</code> class is a common
- base type for all element types and is defined as follows:</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class element_type
- {
- public:
- virtual
- ~element_type ();
-
- virtual element_type*
- _clone (flags f = 0) const = 0;
-
- virtual const std::basic_string&lt;C>&amp;
- _name () const = 0;
-
- virtual const std::basic_string&lt;C>&amp;
- _namespace () const = 0;
-
- virtual xml_schema::type*
- _value () = 0;
-
- virtual const xml_schema::type*
- _value () const = 0;
- };
-}
- </pre>
-
- <p>The <code>_value()</code> member function returns a pointer to
- the element value or 0 if the element is of a fundamental C++
- type and therefore is not derived from <code>xml_schema::type</code>.
- </p>
-
- <p>Unlike parsing and serialization functions, element types
- are only capable of parsing and serializing from/to a
- <code>DOMElement</code> object. This means that the application
- will need to perform its own XML-to-DOM parsing and DOM-to-XML
- serialization. The following section describes a mechanism
- provided by the mapping to uniformly parse and serialize
- multiple root elements.</p>
-
-
- <h3><a name="2.9.2">2.9.2 Element Map</a></h3>
-
- <p>When element types are generated for root elements it is also
- possible to request the generation of an element map with the
- <code>--generate-element-map</code> option. The element map
- allows uniform parsing and serialization of multiple root
- elements via the common <code>xml_schema::element_type</code>
- base type. The <code>xml_schema::element_map</code> class is
- defined as follows:</p>
-
- <pre class="c++">
-namespace xml_schema
-{
- class element_map
- {
- public:
- static std::[auto|unique]_ptr&lt;xml_schema::element_type>
- parse (const xercesc::DOMElement&amp;, flags = 0);
-
- static void
- serialize (xercesc::DOMElement&amp;, const element_type&amp;);
- };
-}
- </pre>
-
- <p>The <code>parse()</code> function creates the corresponding
- element type object based on the element name and namespace
- and returns it as an automatic pointer (<code>std::auto_ptr</code>
- or <code>std::unique_ptr</code>, depending on the C++ standard
- selected) to <code>xml_schema::element_type</code>.
- The <code>serialize()</code> function serializes the passed element
- object to <code>DOMElement</code>. Note that in case of
- <code>serialize()</code>, the <code>DOMElement</code> object
- should have the correct name and namespace. If no element type is
- available for an element, both functions throw the
- <code>xml_schema::no_element_info</code> exception:</p>
-
- <pre class="c++">
-struct no_element_info: virtual exception
-{
- no_element_info (const std::basic_string&lt;C>&amp; element_name,
- const std::basic_string&lt;C>&amp; element_namespace);
-
- const std::basic_string&lt;C>&amp;
- element_name () const;
-
- const std::basic_string&lt;C>&amp;
- element_namespace () const;
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The application can discover the actual type of the element
- object returned by <code>parse()</code> either using
- <code>dynamic_cast</code> or by comparing element names and
- namespaces. The following code fragments illustrate how the
- element map can be used:</p>
-
- <pre class="c++">
-// Parsing.
-//
-DOMElement&amp; e = ... // Parse XML to DOM.
-
-auto_ptr&lt;xml_schema::element_type> r (
- xml_schema::element_map::parse (e));
-
-if (root1 r1 = dynamic_cast&lt;root1*> (r.get ()))
-{
- ...
-}
-else if (r->_name == root2::name () &amp;&amp;
- r->_namespace () == root2::namespace_ ())
-{
- root2&amp; r2 (static_cast&lt;root2&amp;> (*r));
-
- ...
-}
- </pre>
-
- <pre class="c++">
-// Serialization.
-//
-xml_schema::element_type&amp; r = ...
-
-string name (r._name ());
-string ns (r._namespace ());
-
-DOMDocument&amp; doc = ... // Create a new DOMDocument with name and ns.
-DOMElement&amp; e (*doc->getDocumentElement ());
-
-xml_schema::element_map::serialize (e, r);
-
-// Serialize DOMDocument to XML.
- </pre>
-
- <!-- -->
-
- <h2><a name="2.10">2.10 Mapping for Global Attributes</a></h2>
-
- <p>An XML Schema attribute definition is called global if it appears
- directly under the <code>schema</code> element. A global
- attribute does not have any mapping.
- </p>
-
- <!--
- When it is referenced from
- a local attribute definition (using the <code>ref</code> attribute)
- it is treated as a local attribute (see Section 2.8, "Mapping for
- Local Elements and Attributes").
- -->
-
- <h2><a name="2.11">2.11 Mapping for <code>xsi:type</code> and Substitution
- Groups</a></h2>
-
- <p>The mapping provides optional support for the XML Schema polymorphism
- features (<code>xsi:type</code> and substitution groups) which can
- be requested with the <code>--generate-polymorphic</code> option.
- When used, the dynamic type of a member may be different from
- its static type. Consider the following schema definition and
- instance document:
- </p>
-
- <pre class="xml">
-&lt;!-- test.xsd -->
-&lt;schema>
- &lt;complexType name="base">
- &lt;attribute name="text" type="string"/>
- &lt;/complexType>
-
- &lt;complexType name="derived">
- &lt;complexContent>
- &lt;extension base="base">
- &lt;attribute name="extra-text" type="string"/>
- &lt;/extension>
- &lt;/complexContent>
- &lt;/complexType>
-
- &lt;complexType name="root_type">
- &lt;sequence>
- &lt;element name="item" type="base" maxOccurs="unbounded"/>
- &lt;/sequence>
- &lt;/complexType>
-
- &lt;element name="root" type="root_type"/>
-&lt;/schema>
-
-&lt;!-- test.xml -->
-&lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- &lt;item text="hello"/>
- &lt;item text="hello" extra-text="world" xsi:type="derived"/>
-&lt;/root>
- </pre>
-
- <p>In the resulting object model, the container for
- the <code>root::item</code> member will have two elements:
- the first element's type will be <code>base</code> while
- the second element's (dynamic) type will be
- <code>derived</code>. This can be discovered using the
- <code>dynamic_cast</code> operator as shown in the following
- example:
- </p>
-
- <pre class="c++">
-void
-f (root&amp; r)
-{
- for (root::item_const_iterator i (r.item ().begin ());
- i != r.item ().end ()
- ++i)
- {
- if (derived* d = dynamic_cast&lt;derived*> (&amp;(*i)))
- {
- // derived
- }
- else
- {
- // base
- }
- }
-}
- </pre>
-
- <p>The <code>_clone</code> virtual function should be used instead of
- copy constructors to make copies of members that might use
- polymorphism:
- </p>
-
- <pre class="c++">
-void
-f (root&amp; r)
-{
- for (root::item_const_iterator i (r.item ().begin ());
- i != r.item ().end ()
- ++i)
- {
- std::auto_ptr&lt;base> c (i->_clone ());
- }
-}
- </pre>
-
- <p>The mapping can often automatically determine which types are
- polymorphic based on the substitution group declarations. However,
- if your XML vocabulary is not using substitution groups or if
- substitution groups are defined in a separate schema, then you will
- need to use the <code>--polymorphic-type</code> option to specify
- which types are polymorphic. When using this option you only need
- to specify the root of a polymorphic type hierarchy and the mapping
- will assume that all the derived types are also polymorphic.
- Also note that you need to specify this option when compiling every
- schema file that references the polymorphic type. Consider the following
- two schemas as an example:</p>
-
- <pre class="xml">
-&lt;!-- base.xsd -->
-&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- &lt;xs:complexType name="base">
- &lt;xs:sequence>
- &lt;xs:element name="b" type="xs:int"/>
- &lt;/xs:sequence>
- &lt;/xs:complexType>
-
- &lt;!-- substitution group root -->
- &lt;xs:element name="base" type="base"/>
-
-&lt;/xs:schema>
- </pre>
-
- <pre class="xml">
-&lt;!-- derived.xsd -->
-&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- &lt;include schemaLocation="base.xsd"/>
-
- &lt;xs:complexType name="derived">
- &lt;xs:complexContent>
- &lt;xs:extension base="base">
- &lt;xs:sequence>
- &lt;xs:element name="d" type="xs:string"/>
- &lt;/xs:sequence>
- &lt;/xs:extension>
- &lt;/xs:complexContent>
- &lt;/xs:complexType>
-
- &lt;xs:element name="derived" type="derived" substitutionGroup="base"/>
-
-&lt;/xs:schema>
- </pre>
-
- <p>In this example we need to specify "<code>--polymorphic-type base</code>"
- when compiling both schemas because the substitution group is declared
- in a schema other than the one defining type <code>base</code>.</p>
-
- <p>You can also indicate that all types should be treated as polymorphic
- with the <code>--polymorphic-type-all</code>. However, this may result
- in slower generated code with a greater footprint.</p>
-
-
- <!-- Mapping for any and anyAttribute -->
-
-
- <h2><a name="2.12">2.12 Mapping for <code>any</code> and <code>anyAttribute</code></a></h2>
-
- <p>For the XML Schema <code>any</code> and <code>anyAttribute</code>
- wildcards an optional mapping can be requested with the
- <code>--generate-wildcard</code> option. The mapping represents
- the content matched by wildcards as DOM fragments. Because the
- DOM API is used to access such content, the Xerces-C++ runtime
- should be initialized by the application prior to parsing and
- should remain initialized for the lifetime of objects with
- the wildcard content. For more information on the Xerces-C++
- runtime initialization see <a href="#3.1">Section 3.1,
- "Initializing the Xerces-C++ Runtime"</a>.
- </p>
-
- <p>The mapping for <code>any</code> is similar to the mapping for
- local elements (see <a href="#2.8">Section 2.8, "Mapping for Local
- Elements and Attributes"</a>) except that the type used in the
- wildcard mapping is <code>xercesc::DOMElement</code>. As with local
- elements, the mapping divides all possible cardinality combinations
- into three cardinality classes: <i>one</i>, <i>optional</i>, and
- <i>sequence</i>.
- </p>
-
- <p>The mapping for <code>anyAttribute</code> represents the attributes
- matched by this wildcard as a set of <code>xercesc::DOMAttr</code>
- objects with a key being the attribute's name and namespace.</p>
-
- <p>Similar to local elements and attributes, the <code>any</code> and
- <code>anyAttribute</code> wildcards are mapped to a set of public type
- definitions (typedefs) and a set of public accessor and modifier
- functions. Type definitions have names derived from <code>"any"</code>
- for the <code>any</code> wildcard and <code>"any_attribute"</code>
- for the <code>anyAttribute</code> wildcard. The accessor and modifier
- functions are named <code>"any"</code> for the <code>any</code> wildcard
- and <code>"any_attribute"</code> for the <code>anyAttribute</code>
- wildcard. Subsequent wildcards in the same type have escaped names
- such as <code>"any1"</code> or <code>"any_attribute1"</code>.
- </p>
-
- <p>Because Xerces-C++ DOM nodes always belong to a <code>DOMDocument</code>,
- each type with a wildcard has an associated <code>DOMDocument</code>
- object. The reference to this object can be obtained using the accessor
- function called <code>dom_document</code>. The access to the document
- object from the application code may be necessary to create or modify
- the wildcard content. For example:
- </p>
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- &lt;any namespace="##other"/>
- &lt;/sequence>
- &lt;anyAttribute namespace="##other"/>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- // any
- //
- const xercesc::DOMElement&amp;
- any () const;
-
- void
- any (const xercesc::DOMElement&amp;);
-
- ...
-
- // any_attribute
- //
- typedef attribute_set any_attribute_set;
- typedef any_attribute_set::iterator any_attribute_iterator;
- typedef any_attribute_set::const_iterator any_attribute_const_iterator;
-
- const any_attribute_set&amp;
- any_attribute () const;
-
- any_attribute_set&amp;
- any_attribute ();
-
- ...
-
- // DOMDocument object for wildcard content.
- //
- const xercesc::DOMDocument&amp;
- dom_document () const;
-
- xercesc::DOMDocument&amp;
- dom_document ();
-
- ...
-};
- </pre>
-
-
- <p>Names and semantics of type definitions for the wildcards as well
- as signatures of the accessor and modifier functions depend on the
- wildcard type as well as the cardinality class for the <code>any</code>
- wildcard. They are described in the following sub-sections.
- </p>
-
-
- <h3><a name="2.12.1">2.12.1 Mapping for <code>any</code> with the One Cardinality Class</a></h3>
-
- <p>For <code>any</code> with the One cardinality class,
- there are no type definitions. The accessor functions come in
- constant and non-constant versions. The constant accessor function
- returns a constant reference to <code>xercesc::DOMElement</code> and
- can be used for read-only access. The non-constant version returns
- an unrestricted reference to <code>xercesc::DOMElement</code> and can
- be used for read-write access.
- </p>
-
- <p>The first modifier function expects an argument of type reference
- to constant <code>xercesc::DOMElement</code> and makes a deep copy
- of its argument. The second modifier function expects an argument of
- type pointer to <code>xercesc::DOMElement</code>. This modifier
- function assumes ownership of its argument and expects the element
- object to be created using the DOM document associated with this
- instance. For example:
- </p>
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- &lt;any namespace="##other"/>
- &lt;/sequence>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- // Accessors.
- //
- const xercesc::DOMElement&amp;
- any () const;
-
- xercesc::DOMElement&amp;
- any ();
-
- // Modifiers.
- //
- void
- any (const xercesc::DOMElement&amp;);
-
- void
- any (xercesc::DOMElement*);
-
- ...
-
-};
- </pre>
-
-
- <p>The following code shows how one could use this mapping:</p>
-
- <pre class="c++">
-void
-f (object&amp; o, const xercesc::DOMElement&amp; e)
-{
- using namespace xercesc;
-
- DOMElement&amp; e1 (o.any ()); // get
- o.any (e) // set, deep copy
- DOMDocument&amp; doc (o.dom_document ());
- o.any (doc.createElement (...)); // set, assumes ownership
-}
- </pre>
-
- <h3><a name="2.12.2">2.12.2 Mapping for <code>any</code> with the Optional Cardinality Class</a></h3>
-
- <p>For <code>any</code> with the Optional cardinality class, the type
- definitions consist of an alias for the container type with name
- <code>any_optional</code> (or <code>any1_optional</code>, etc., for
- subsequent wildcards in the type definition).
- </p>
-
- <p>Unlike accessor functions for the One cardinality class, accessor
- functions for the Optional cardinality class return references to
- corresponding containers rather than directly to <code>DOMElement</code>.
- The accessor functions come in constant and non-constant versions.
- The constant accessor function returns a constant reference to
- the container and can be used for read-only access. The non-constant
- version returns an unrestricted reference to the container
- and can be used for read-write access.
- </p>
-
- <p>The modifier functions are overloaded for <code>xercesc::DOMElement</code>
- and the container type. The first modifier function expects an argument of
- type reference to constant <code>xercesc::DOMElement</code> and
- makes a deep copy of its argument. The second modifier function
- expects an argument of type pointer to <code>xercesc::DOMElement</code>.
- This modifier function assumes ownership of its argument and expects
- the element object to be created using the DOM document associated
- with this instance. The third modifier function expects an argument
- of type reference to constant of the container type and makes a
- deep copy of its argument. For instance:
- </p>
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- &lt;any namespace="##other" minOccurs="0"/>
- &lt;/sequence>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef element_optional any_optional;
-
- // Accessors.
- //
- const any_optional&amp;
- any () const;
-
- any_optional&amp;
- any ();
-
- // Modifiers.
- //
- void
- any (const xercesc::DOMElement&amp;);
-
- void
- any (xercesc::DOMElement*);
-
- void
- any (const any_optional&amp;);
-
- ...
-
-};
- </pre>
-
-
- <p>The <code>element_optional</code> container is a
- specialization of the <code>optional</code> class template described
- in <a href="#2.8.2">Section 2.8.2, "Mapping for Members with the Optional
- Cardinality Class"</a>. Its interface is presented below:
- </p>
-
- <pre class="c++">
-class element_optional
-{
-public:
- explicit
- element_optional (xercesc::DOMDocument&amp;);
-
- // Makes a deep copy.
- //
- element_optional (const xercesc::DOMElement&amp;, xercesc::DOMDocument&amp;);
-
- // Assumes ownership.
- //
- element_optional (xercesc::DOMElement*, xercesc::DOMDocument&amp;);
-
- element_optional (const element_optional&amp;, xercesc::DOMDocument&amp;);
-
-public:
- element_optional&amp;
- operator= (const xercesc::DOMElement&amp;);
-
- element_optional&amp;
- operator= (const element_optional&amp;);
-
- // Pointer-like interface.
- //
-public:
- const xercesc::DOMElement*
- operator-> () const;
-
- xercesc::DOMElement*
- operator-> ();
-
- const xercesc::DOMElement&amp;
- operator* () const;
-
- xercesc::DOMElement&amp;
- operator* ();
-
- typedef void (element_optional::*bool_convertible) ();
- operator bool_convertible () const;
-
- // Get/set interface.
- //
-public:
- bool
- present () const;
-
- const xercesc::DOMElement&amp;
- get () const;
-
- xercesc::DOMElement&amp;
- get ();
-
- // Makes a deep copy.
- //
- void
- set (const xercesc::DOMElement&amp;);
-
- // Assumes ownership.
- //
- void
- set (xercesc::DOMElement*);
-
- void
- reset ();
-};
-
-bool
-operator== (const element_optional&amp;, const element_optional&amp;);
-
-bool
-operator!= (const element_optional&amp;, const element_optional&amp;);
- </pre>
-
-
- <p>The following code shows how one could use this mapping:</p>
-
- <pre class="c++">
-void
-f (object&amp; o, const xercesc::DOMElement&amp; e)
-{
- using namespace xercesc;
-
- DOMDocument&amp; doc (o.dom_document ());
-
- if (o.any ().present ()) // test
- {
- DOMElement&amp; e1 (o.any ().get ()); // get
- o.any ().set (e); // set, deep copy
- o.any ().set (doc.createElement (...)); // set, assumes ownership
- o.any ().reset (); // reset
- }
-
- // Same as above but using pointer notation:
- //
- if (o.member ()) // test
- {
- DOMElement&amp; e1 (*o.any ()); // get
- o.any (e); // set, deep copy
- o.any (doc.createElement (...)); // set, assumes ownership
- o.any ().reset (); // reset
- }
-}
- </pre>
-
-
-
- <h3><a name="2.12.3">2.12.3 Mapping for <code>any</code> with the Sequence Cardinality Class</a></h3>
-
- <p>For <code>any</code> with the Sequence cardinality class, the type
- definitions consist of an alias of the container type with name
- <code>any_sequence</code> (or <code>any1_sequence</code>, etc., for
- subsequent wildcards in the type definition), an alias of the iterator
- type with name <code>any_iterator</code> (or <code>any1_iterator</code>,
- etc., for subsequent wildcards in the type definition), and an alias
- of the constant iterator type with name <code>any_const_iterator</code>
- (or <code>any1_const_iterator</code>, etc., for subsequent wildcards
- in the type definition).
- </p>
-
- <p>The accessor functions come in constant and non-constant versions.
- The constant accessor function returns a constant reference to the
- container and can be used for read-only access. The non-constant
- version returns an unrestricted reference to the container and can
- be used for read-write access.
- </p>
-
- <p>The modifier function expects an argument of type reference to
- constant of the container type. The modifier function makes
- a deep copy of its argument. For instance:
- </p>
-
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- &lt;any namespace="##other" minOccurs="unbounded"/>
- &lt;/sequence>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef element_sequence any_sequence;
- typedef any_sequence::iterator any_iterator;
- typedef any_sequence::const_iterator any_const_iterator;
-
- // Accessors.
- //
- const any_sequence&amp;
- any () const;
-
- any_sequence&amp;
- any ();
-
- // Modifier.
- //
- void
- any (const any_sequence&amp;);
-
- ...
-
-};
- </pre>
-
- <p>The <code>element_sequence</code> container is a
- specialization of the <code>sequence</code> class template described
- in <a href="#2.8.3">Section 2.8.3, "Mapping for Members with the
- Sequence Cardinality Class"</a>. Its interface is similar to
- the sequence interface as defined by the ISO/ANSI Standard for
- C++ (ISO/IEC 14882:1998, Section 23.1.1, "Sequences") and is
- presented below:
- </p>
-
- <pre class="c++">
-class element_sequence
-{
-public:
- typedef xercesc::DOMElement value_type;
- typedef xercesc::DOMElement* pointer;
- typedef const xercesc::DOMElement* const_pointer;
- typedef xercesc::DOMElement&amp; reference;
- typedef const xercesc::DOMElement&amp; const_reference;
-
- typedef &lt;implementation-defined> iterator;
- typedef &lt;implementation-defined> const_iterator;
- typedef &lt;implementation-defined> reverse_iterator;
- typedef &lt;implementation-defined> const_reverse_iterator;
-
- typedef &lt;implementation-defined> size_type;
- typedef &lt;implementation-defined> difference_type;
- typedef &lt;implementation-defined> allocator_type;
-
-public:
- explicit
- element_sequence (xercesc::DOMDocument&amp;);
-
- // DOMElement cannot be default-constructed.
- //
- // explicit
- // element_sequence (size_type n);
-
- element_sequence (size_type n,
- const xercesc::DOMElement&amp;,
- xercesc::DOMDocument&amp;);
-
- template &lt;typename I>
- element_sequence (const I&amp; begin,
- const I&amp; end,
- xercesc::DOMDocument&amp;);
-
- element_sequence (const element_sequence&amp;, xercesc::DOMDocument&amp;);
-
- element_sequence&amp;
- operator= (const element_sequence&amp;);
-
-public:
- void
- assign (size_type n, const xercesc::DOMElement&amp;);
-
- template &lt;typename I>
- void
- assign (const I&amp; begin, const I&amp; end);
-
-public:
- // This version of resize can only be used to shrink the
- // sequence because DOMElement cannot be default-constructed.
- //
- void
- resize (size_type);
-
- void
- resize (size_type, const xercesc::DOMElement&amp;);
-
-public:
- size_type
- size () const;
-
- size_type
- max_size () const;
-
- size_type
- capacity () const;
-
- bool
- empty () const;
-
- void
- reserve (size_type);
-
- void
- clear ();
-
-public:
- const_iterator
- begin () const;
-
- const_iterator
- end () const;
-
- iterator
- begin ();
-
- iterator
- end ();
-
- const_reverse_iterator
- rbegin () const;
-
- const_reverse_iterator
- rend () const
-
- reverse_iterator
- rbegin ();
-
- reverse_iterator
- rend ();
-
-public:
- xercesc::DOMElement&amp;
- operator[] (size_type);
-
- const xercesc::DOMElement&amp;
- operator[] (size_type) const;
-
- xercesc::DOMElement&amp;
- at (size_type);
-
- const xercesc::DOMElement&amp;
- at (size_type) const;
-
- xercesc::DOMElement&amp;
- front ();
-
- const xercesc::DOMElement&amp;
- front () const;
-
- xercesc::DOMElement&amp;
- back ();
-
- const xercesc::DOMElement&amp;
- back () const;
-
-public:
- // Makes a deep copy.
- //
- void
- push_back (const xercesc::DOMElement&amp;);
-
- // Assumes ownership.
- //
- void
- push_back (xercesc::DOMElement*);
-
- void
- pop_back ();
-
- // Makes a deep copy.
- //
- iterator
- insert (iterator position, const xercesc::DOMElement&amp;);
-
- // Assumes ownership.
- //
- iterator
- insert (iterator position, xercesc::DOMElement*);
-
- void
- insert (iterator position, size_type n, const xercesc::DOMElement&amp;);
-
- template &lt;typename I>
- void
- insert (iterator position, const I&amp; begin, const I&amp; end);
-
- iterator
- erase (iterator position);
-
- iterator
- erase (iterator begin, iterator end);
-
-public:
- // Note that the DOMDocument object of the two sequences being
- // swapped should be the same.
- //
- void
- swap (sequence&amp; x);
-};
-
-inline bool
-operator== (const element_sequence&amp;, const element_sequence&amp;);
-
-inline bool
-operator!= (const element_sequence&amp;, const element_sequence&amp;);
- </pre>
-
-
- <p>The following code shows how one could use this mapping:</p>
-
- <pre class="c++">
-void
-f (object&amp; o, const xercesc::DOMElement&amp; e)
-{
- using namespace xercesc;
-
- object::any_sequence&amp; s (o.any ());
-
- // Iteration.
- //
- for (object::any_iterator i (s.begin ()); i != s.end (); ++i)
- {
- DOMElement&amp; e (*i);
- }
-
- // Modification.
- //
- s.push_back (e); // deep copy
- DOMDocument&amp; doc (o.dom_document ());
- s.push_back (doc.createElement (...)); // assumes ownership
-}
- </pre>
-
- <h3><a name="2.12.4">2.12.4 Element Wildcard Order</a></h3>
-
- <p>Similar to elements, element wildcards in ordered types
- (<a href="#2.8.4">Section 2.8.4, "Element Order"</a>) are assigned
- content ids and are included in the content order sequence.
- Continuing with the bank transactions example started in Section
- 2.8.4, we can extend the batch by allowing custom transactions:</p>
-
- <pre class="xml">
-&lt;complexType name="batch">
- &lt;choice minOccurs="0" maxOccurs="unbounded">
- &lt;element name="withdraw" type="withdraw"/>
- &lt;element name="deposit" type="deposit"/>
- &lt;any namespace="##other" processContents="lax"/>
- &lt;/choice>
-&lt;/complexType>
- </pre>
-
- <p>This will lead to the following changes in the generated
- <code>batch</code> C++ class:</p>
-
- <pre class="c++">
-class batch: public xml_schema::type
-{
-public:
- ...
-
- // any
- //
- typedef element_sequence any_sequence;
- typedef any_sequence::iterator any_iterator;
- typedef any_sequence::const_iterator any_const_iterator;
-
- static const std::size_t any_id = 3UL;
-
- const any_sequence&amp;
- any () const;
-
- any_sequence&amp;
- any ();
-
- void
- any (const any_sequence&amp;);
-
- ...
-};
- </pre>
-
- <p>With this change we also need to update the iteration code to handle
- the new content id:</p>
-
- <pre class="c++">
-for (batch::content_order_const_iterator i (b.content_order ().begin ());
- i != b.content_order ().end ();
- ++i)
-{
- switch (i->id)
- {
- ...
-
- case batch::any_id:
- {
- const DOMElement&amp; e (b.any ()[i->index]);
- ...
- break;
- }
-
- ...
- }
-}
- </pre>
-
- <p>For the complete working code that shows the use of wildcards in
- ordered types refer to the <code>order/element</code> example in
- the <code>examples/cxx/tree/</code> directory in the XSD
- distribution.</p>
-
- <h3><a name="2.12.5">2.12.5 Mapping for <code>anyAttribute</code></a></h3>
-
- <p>For <code>anyAttribute</code> the type definitions consist of an alias
- of the container type with name <code>any_attribute_set</code>
- (or <code>any1_attribute_set</code>, etc., for subsequent wildcards
- in the type definition), an alias of the iterator type with name
- <code>any_attribute_iterator</code> (or <code>any1_attribute_iterator</code>,
- etc., for subsequent wildcards in the type definition), and an alias
- of the constant iterator type with name <code>any_attribute_const_iterator</code>
- (or <code>any1_attribute_const_iterator</code>, etc., for subsequent
- wildcards in the type definition).
- </p>
-
- <p>The accessor functions come in constant and non-constant versions.
- The constant accessor function returns a constant reference to the
- container and can be used for read-only access. The non-constant
- version returns an unrestricted reference to the container and can
- be used for read-write access.
- </p>
-
- <p>The modifier function expects an argument of type reference to
- constant of the container type. The modifier function makes
- a deep copy of its argument. For instance:
- </p>
-
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- ...
- &lt;/sequence>
- &lt;anyAttribute namespace="##other"/>
-&lt;/complexType>
- </pre>
-
- <p>is mapped to:</p>
-
- <pre class="c++">
-class object: public xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef attribute_set any_attribute_set;
- typedef any_attribute_set::iterator any_attribute_iterator;
- typedef any_attribute_set::const_iterator any_attribute_const_iterator;
-
- // Accessors.
- //
- const any_attribute_set&amp;
- any_attribute () const;
-
- any_attribute_set&amp;
- any_attribute ();
-
- // Modifier.
- //
- void
- any_attribute (const any_attribute_set&amp;);
-
- ...
-
-};
- </pre>
-
- <p>The <code>attribute_set</code> class is an associative container
- similar to the <code>std::set</code> class template as defined by
- the ISO/ANSI Standard for C++ (ISO/IEC 14882:1998, Section 23.3.3,
- "Class template set") with the key being the attribute's name
- and namespace. Unlike <code>std::set</code>, <code>attribute_set</code>
- allows searching using names and namespaces instead of
- <code>xercesc::DOMAttr</code> objects. It is defined in an
- implementation-specific namespace and its interface is presented
- below:
- </p>
-
- <pre class="c++">
-class attribute_set
-{
-public:
- typedef xercesc::DOMAttr key_type;
- typedef xercesc::DOMAttr value_type;
- typedef xercesc::DOMAttr* pointer;
- typedef const xercesc::DOMAttr* const_pointer;
- typedef xercesc::DOMAttr&amp; reference;
- typedef const xercesc::DOMAttr&amp; const_reference;
-
- typedef &lt;implementation-defined> iterator;
- typedef &lt;implementation-defined> const_iterator;
- typedef &lt;implementation-defined> reverse_iterator;
- typedef &lt;implementation-defined> const_reverse_iterator;
-
- typedef &lt;implementation-defined> size_type;
- typedef &lt;implementation-defined> difference_type;
- typedef &lt;implementation-defined> allocator_type;
-
-public:
- attribute_set (xercesc::DOMDocument&amp;);
-
- template &lt;typename I>
- attribute_set (const I&amp; begin, const I&amp; end, xercesc::DOMDocument&amp;);
-
- attribute_set (const attribute_set&amp;, xercesc::DOMDocument&amp;);
-
- attribute_set&amp;
- operator= (const attribute_set&amp;);
-
-public:
- const_iterator
- begin () const;
-
- const_iterator
- end () const;
-
- iterator
- begin ();
-
- iterator
- end ();
-
- const_reverse_iterator
- rbegin () const;
-
- const_reverse_iterator
- rend () const;
-
- reverse_iterator
- rbegin ();
-
- reverse_iterator
- rend ();
-
-public:
- size_type
- size () const;
-
- size_type
- max_size () const;
-
- bool
- empty () const;
-
- void
- clear ();
-
-public:
- // Makes a deep copy.
- //
- std::pair&lt;iterator, bool>
- insert (const xercesc::DOMAttr&amp;);
-
- // Assumes ownership.
- //
- std::pair&lt;iterator, bool>
- insert (xercesc::DOMAttr*);
-
- // Makes a deep copy.
- //
- iterator
- insert (iterator position, const xercesc::DOMAttr&amp;);
-
- // Assumes ownership.
- //
- iterator
- insert (iterator position, xercesc::DOMAttr*);
-
- template &lt;typename I>
- void
- insert (const I&amp; begin, const I&amp; end);
-
-public:
- void
- erase (iterator position);
-
- size_type
- erase (const std::basic_string&lt;C>&amp; name);
-
- size_type
- erase (const std::basic_string&lt;C>&amp; namespace_,
- const std::basic_string&lt;C>&amp; name);
-
- size_type
- erase (const XMLCh* name);
-
- size_type
- erase (const XMLCh* namespace_, const XMLCh* name);
-
- void
- erase (iterator begin, iterator end);
-
-public:
- size_type
- count (const std::basic_string&lt;C>&amp; name) const;
-
- size_type
- count (const std::basic_string&lt;C>&amp; namespace_,
- const std::basic_string&lt;C>&amp; name) const;
-
- size_type
- count (const XMLCh* name) const;
-
- size_type
- count (const XMLCh* namespace_, const XMLCh* name) const;
-
- iterator
- find (const std::basic_string&lt;C>&amp; name);
-
- iterator
- find (const std::basic_string&lt;C>&amp; namespace_,
- const std::basic_string&lt;C>&amp; name);
-
- iterator
- find (const XMLCh* name);
-
- iterator
- find (const XMLCh* namespace_, const XMLCh* name);
-
- const_iterator
- find (const std::basic_string&lt;C>&amp; name) const;
-
- const_iterator
- find (const std::basic_string&lt;C>&amp; namespace_,
- const std::basic_string&lt;C>&amp; name) const;
-
- const_iterator
- find (const XMLCh* name) const;
-
- const_iterator
- find (const XMLCh* namespace_, const XMLCh* name) const;
-
-public:
- // Note that the DOMDocument object of the two sets being
- // swapped should be the same.
- //
- void
- swap (attribute_set&amp;);
-};
-
-bool
-operator== (const attribute_set&amp;, const attribute_set&amp;);
-
-bool
-operator!= (const attribute_set&amp;, const attribute_set&amp;);
- </pre>
-
- <p>The following code shows how one could use this mapping:</p>
-
- <pre class="c++">
-void
-f (object&amp; o, const xercesc::DOMAttr&amp; a)
-{
- using namespace xercesc;
-
- object::any_attribute_set&amp; s (o.any_attribute ());
-
- // Iteration.
- //
- for (object::any_attribute_iterator i (s.begin ()); i != s.end (); ++i)
- {
- DOMAttr&amp; a (*i);
- }
-
- // Modification.
- //
- s.insert (a); // deep copy
- DOMDocument&amp; doc (o.dom_document ());
- s.insert (doc.createAttribute (...)); // assumes ownership
-
- // Searching.
- //
- object::any_attribute_iterator i (s.find ("name"));
- i = s.find ("http://www.w3.org/XML/1998/namespace", "lang");
-}
- </pre>
-
- <!-- Mapping for Mixed Content Models -->
-
- <h2><a name="2.13">2.13 Mapping for Mixed Content Models</a></h2>
-
- <p>For XML Schema types with mixed content models C++/Tree provides
- mapping support only if the type is marked as ordered
- (<a href="#2.8.4">Section 2.8.4, "Element Order"</a>). Use the
- <code>--ordered-type-mixed</code> XSD compiler option to
- automatically mark all types with mixed content as ordered.</p>
-
- <p>For an ordered type with mixed content, C++/Tree adds an extra
- text content sequence that is used to store the text fragments.
- This text content sequence is also assigned the content id and
- its entries are included in the content order sequence, just
- like elements. As a result, it is possible to capture the order
- between elements and text fragments.</p>
-
- <p>As an example, consider the following schema that describes text
- with embedded links:</p>
-
- <pre class="xml">
-&lt;complexType name="anchor">
- &lt;simpleContent>
- &lt;extension base="string">
- &lt;attribute name="href" type="anyURI" use="required"/>
- &lt;/extension>
- &lt;/simpleContent>
-&lt;/complexType>
-
-&lt;complexType name="text" mixed="true">
- &lt;sequence>
- &lt;element name="a" type="anchor" minOccurs="0" maxOccurs="unbounded"/>
- &lt;/sequence>
-&lt;/complexType>
- </pre>
-
- <p>The generated <code>text</code> C++ class will provide the following
- API (assuming it is marked as ordered):</p>
-
- <pre class="c++">
-class text: public xml_schema::type
-{
-public:
- // a
- //
- typedef anchor a_type;
- typedef sequence&lt;a_type> a_sequence;
- typedef a_sequence::iterator a_iterator;
- typedef a_sequence::const_iterator a_const_iterator;
-
- static const std::size_t a_id = 1UL;
-
- const a_sequence&amp;
- a () const;
-
- a_sequence&amp;
- a ();
-
- void
- a (const a_sequence&amp;);
-
- // text_content
- //
- typedef xml_schema::string text_content_type;
- typedef sequence&lt;text_content_type> text_content_sequence;
- typedef text_content_sequence::iterator text_content_iterator;
- typedef text_content_sequence::const_iterator text_content_const_iterator;
-
- static const std::size_t text_content_id = 2UL;
-
- const text_content_sequence&amp;
- text_content () const;
-
- text_content_sequence&amp;
- text_content ();
-
- void
- text_content (const text_content_sequence&amp;);
-
- // content_order
- //
- typedef xml_schema::content_order content_order_type;
- typedef std::vector&lt;content_order_type> content_order_sequence;
- typedef content_order_sequence::iterator content_order_iterator;
- typedef content_order_sequence::const_iterator content_order_const_iterator;
-
- const content_order_sequence&amp;
- content_order () const;
-
- content_order_sequence&amp;
- content_order ();
-
- void
- content_order (const content_order_sequence&amp;);
-
- ...
-};
- </pre>
-
- <p>Given this interface we can iterate over both link elements
- and text in content order. The following code fragment converts
- our format to plain text with references.</p>
-
- <pre class="c++">
-const text&amp; t = ...
-
-for (text::content_order_const_iterator i (t.content_order ().begin ());
- i != t.content_order ().end ();
- ++i)
-{
- switch (i->id)
- {
- case text::a_id:
- {
- const anchor&amp; a (t.a ()[i->index]);
- cerr &lt;&lt; a &lt;&lt; "[" &lt;&lt; a.href () &lt;&lt; "]";
- break;
- }
- case text::text_content_id:
- {
- const xml_schema::string&amp; s (t.text_content ()[i->index]);
- cerr &lt;&lt; s;
- break;
- }
- default:
- {
- assert (false); // Unknown content id.
- }
- }
-}
- </pre>
-
- <p>For the complete working code that shows the use of mixed content
- in ordered types refer to the <code>order/mixed</code> example in
- the <code>examples/cxx/tree/</code> directory in the XSD
- distribution.</p>
-
- <!-- Parsing -->
-
-
- <h1><a name="3">3 Parsing</a></h1>
-
- <p>This chapter covers various aspects of parsing XML instance
- documents in order to obtain corresponding tree-like object
- model.
- </p>
-
- <p>Each global XML Schema element in the form:</p>
-
- <pre class="xml">
-&lt;element name="name" type="type"/>
- </pre>
-
- <p>is mapped to 14 overloaded C++ functions in the form:</p>
-
- <pre class="c++">
-// Read from a URI or a local file.
-//
-
-std::[auto|unique]_ptr&lt;type>
-name (const std::basic_string&lt;C>&amp; uri,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;type>
-name (const std::basic_string&lt;C>&amp; uri,
- xml_schema::error_handler&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;type>
-name (const std::basic_string&lt;C>&amp; uri,
- xercesc::DOMErrorHandler&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-
-// Read from std::istream.
-//
-
-std::[auto|unique]_ptr&lt;type>
-name (std::istream&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;type>
-name (std::istream&amp;,
- xml_schema::error_handler&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;type>
-name (std::istream&amp;,
- xercesc::DOMErrorHandler&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-
-std::[auto|unique]_ptr&lt;type>
-name (std::istream&amp;,
- const std::basic_string&lt;C>&amp; id,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;type>
-name (std::istream&amp;,
- const std::basic_string&lt;C>&amp; id,
- xml_schema::error_handler&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;type>
-name (std::istream&amp;,
- const std::basic_string&lt;C>&amp; id,
- xercesc::DOMErrorHandler&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-
-// Read from InputSource.
-//
-
-std::[auto|unique]_ptr&lt;type>
-name (xercesc::InputSource&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;type>
-name (xercesc::InputSource&amp;,
- xml_schema::error_handler&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;type>
-name (xercesc::InputSource&amp;,
- xercesc::DOMErrorHandler&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-
-// Read from DOM.
-//
-
-std::[auto|unique]_ptr&lt;type>
-name (const xercesc::DOMDocument&amp;,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
-
-std::[auto|unique]_ptr&lt;type>
-name (xml_schema::dom::[auto|unique]_ptr&lt;xercesc::DOMDocument>,
- xml_schema::flags = 0,
- const xml_schema::properties&amp; = xml_schema::properties ());
- </pre>
-
- <p>You can choose between reading an XML instance from a local file,
- URI, <code>std::istream</code>, <code>xercesc::InputSource</code>,
- or a pre-parsed DOM instance in the form of
- <code>xercesc::DOMDocument</code>. All the parsing functions
- return a dynamically allocated object model as either
- <code>std::auto_ptr</code> or <code>std::unique_ptr</code>,
- depending on the C++ standard selected. Each of these parsing
- functions is discussed in more detail in the following sections.
- </p>
-
- <h2><a name="3.1">3.1 Initializing the Xerces-C++ Runtime</a></h2>
-
- <p>Some parsing functions expect you to initialize the Xerces-C++
- runtime while others initialize and terminate it as part of their
- work. The general rule is as follows: if a function has any arguments
- or return a value that is an instance of a Xerces-C++ type, then
- this function expects you to initialize the Xerces-C++ runtime.
- Otherwise, the function initializes and terminates the runtime for
- you. Note that it is legal to have nested calls to the Xerces-C++
- initialize and terminate functions as long as the calls are balanced.
- </p>
-
- <p>You can instruct parsing functions that initialize and terminate
- the runtime not to do so by passing the
- <code>xml_schema::flags::dont_initialize</code> flag (see
- <a href="#3.2">Section 3.2, "Flags and Properties"</a>).
- </p>
-
-
- <h2><a name="3.2">3.2 Flags and Properties</a></h2>
-
- <p>Parsing flags and properties are the last two arguments of every
- parsing function. They allow you to fine-tune the process of
- instance validation and parsing. Both arguments are optional.
- </p>
-
-
- <p>The following flags are recognized by the parsing functions:</p>
-
- <dl>
- <dt><code>xml_schema::flags::keep_dom</code></dt>
- <dd>Keep association between DOM nodes and the resulting
- object model nodes. For more information about DOM association
- refer to <a href="#5.1">Section 5.1, "DOM Association"</a>.</dd>
-
- <dt><code>xml_schema::flags::own_dom</code></dt>
- <dd>Assume ownership of the DOM document passed. This flag only
- makes sense together with the <code>keep_dom</code> flag in
- the call to the parsing function with the
- <code>xml_schema::dom::[auto|unique]_ptr&lt;DOMDocument></code>
- argument.</dd>
-
- <dt><code>xml_schema::flags::dont_validate</code></dt>
- <dd>Do not validate instance documents against schemas.</dd>
-
- <dt><code>xml_schema::flags::dont_initialize</code></dt>
- <dd>Do not initialize the Xerces-C++ runtime.</dd>
- </dl>
-
- <p>You can pass several flags by combining them using the bit-wise OR
- operator. For example:</p>
-
- <pre class="c++">
-using xml_schema::flags;
-
-std::auto_ptr&lt;type> r (
- name ("test.xml", flags::keep_dom | flags::dont_validate));
- </pre>
-
- <p>By default, validation of instance documents is turned on even
- though parsers generated by XSD do not assume instance
- documents are valid. They include a number of checks that prevent
- construction of inconsistent object models. This,
- however, does not mean that an instance document that was
- successfully parsed by the XSD-generated parsers is
- valid per the corresponding schema. If an instance document is not
- "valid enough" for the generated parsers to construct consistent
- object model, one of the exceptions defined in
- <code>xml_schema</code> namespace is thrown (see
- <a href="#3.3">Section 3.3, "Error Handling"</a>).
- </p>
-
- <p>For more information on the Xerces-C++ runtime initialization
- refer to <a href="#3.1">Section 3.1, "Initializing the Xerces-C++
- Runtime"</a>.
- </p>
-
- <p>The <code>xml_schema::properties</code> class allows you to
- programmatically specify schema locations to be used instead
- of those specified with the <code>xsi::schemaLocation</code>
- and <code>xsi::noNamespaceSchemaLocation</code> attributes
- in instance documents. The interface of the <code>properties</code>
- class is presented below:
- </p>
-
- <pre class="c++">
-class properties
-{
-public:
- void
- schema_location (const std::basic_string&lt;C>&amp; namespace_,
- const std::basic_string&lt;C>&amp; location);
- void
- no_namespace_schema_location (const std::basic_string&lt;C>&amp; location);
-};
- </pre>
-
- <p>Note that all locations are relative to an instance document unless
- they are URIs. For example, if you want to use a local file as your
- schema, then you will need to pass
- <code>file:///absolute/path/to/your/schema</code> as the location
- argument.
- </p>
-
- <h2><a name="3.3">3.3 Error Handling</a></h2>
-
- <p>As discussed in <a href="#2.2">Section 2.2, "Error Handling"</a>,
- the mapping uses the C++ exception handling mechanism as its primary
- way of reporting error conditions. However, to handle recoverable
- parsing and validation errors and warnings, a callback interface maybe
- preferred by the application.</p>
-
- <p>To better understand error handling and reporting strategies employed
- by the parsing functions, it is useful to know that the
- transformation of an XML instance document to a statically-typed
- tree happens in two stages. The first stage, performed by Xerces-C++,
- consists of parsing an XML document into a DOM instance. For short,
- we will call this stage the XML-DOM stage. Validation, if not disabled,
- happens during this stage. The second stage,
- performed by the generated parsers, consist of parsing the DOM
- instance into the statically-typed tree. We will call this stage
- the DOM-Tree stage. Additional checks are performed during this
- stage in order to prevent construction of inconsistent tree which
- could otherwise happen when validation is disabled, for example.</p>
-
- <p>All parsing functions except the one that operates on a DOM instance
- come in overloaded triples. The first function in such a triple
- reports error conditions exclusively by throwing exceptions. It
- accumulates all the parsing and validation errors of the XML-DOM
- stage and throws them in a single instance of the
- <code>xml_schema::parsing</code> exception (described below).
- The second and the third functions in the triple use callback
- interfaces to report parsing and validation errors and warnings.
- The two callback interfaces are <code>xml_schema::error_handler</code>
- and <code>xercesc::DOMErrorHandler</code>. For more information
- on the <code>xercesc::DOMErrorHandler</code> interface refer to
- the Xerces-C++ documentation. The <code>xml_schema::error_handler</code>
- interface is presented below:
- </p>
-
- <pre class="c++">
-class error_handler
-{
-public:
- struct severity
- {
- enum value
- {
- warning,
- error,
- fatal
- };
- };
-
- virtual bool
- handle (const std::basic_string&lt;C>&amp; id,
- unsigned long line,
- unsigned long column,
- severity,
- const std::basic_string&lt;C>&amp; message) = 0;
-
- virtual
- ~error_handler ();
-};
- </pre>
-
- <p>The <code>id</code> argument of the <code>error_handler::handle</code>
- function identifies the resource being parsed (e.g., a file name or
- URI).
- </p>
-
- <p>By returning <code>true</code> from the <code>handle</code> function
- you instruct the parser to recover and continue parsing. Returning
- <code>false</code> results in termination of the parsing process.
- An error with the <code>fatal</code> severity level results in
- termination of the parsing process no matter what is returned from
- the <code>handle</code> function. It is safe to throw an exception
- from the <code>handle</code> function.
- </p>
-
- <p>The DOM-Tree stage reports error conditions exclusively by throwing
- exceptions. Individual exceptions thrown by the parsing functions
- are described in the following sub-sections.
- </p>
-
-
- <h3><a name="3.3.1">3.3.1 <code>xml_schema::parsing</code></a></h3>
-
- <pre class="c++">
-struct severity
-{
- enum value
- {
- warning,
- error
- };
-
- severity (value);
- operator value () const;
-};
-
-struct error
-{
- error (severity,
- const std::basic_string&lt;C>&amp; id,
- unsigned long line,
- unsigned long column,
- const std::basic_string&lt;C>&amp; message);
-
- severity
- severity () const;
-
- const std::basic_string&lt;C>&amp;
- id () const;
-
- unsigned long
- line () const;
-
- unsigned long
- column () const;
-
- const std::basic_string&lt;C>&amp;
- message () const;
-};
-
-std::basic_ostream&lt;C>&amp;
-operator&lt;&lt; (std::basic_ostream&lt;C>&amp;, const error&amp;);
-
-struct diagnostics: std::vector&lt;error>
-{
-};
-
-std::basic_ostream&lt;C>&amp;
-operator&lt;&lt; (std::basic_ostream&lt;C>&amp;, const diagnostics&amp;);
-
-struct parsing: virtual exception
-{
- parsing ();
- parsing (const diagnostics&amp;);
-
- const diagnostics&amp;
- diagnostics () const;
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::parsing</code> exception is thrown if there
- were parsing or validation errors reported during the XML-DOM stage.
- If no callback interface was provided to the parsing function, the
- exception contains a list of errors and warnings accessible using
- the <code>diagnostics</code> function. The usual conditions when
- this exception is thrown include malformed XML instances and, if
- validation is turned on, invalid instance documents.
- </p>
-
- <h3><a name="3.3.2">3.3.2 <code>xml_schema::expected_element</code></a></h3>
-
- <pre class="c++">
-struct expected_element: virtual exception
-{
- expected_element (const std::basic_string&lt;C>&amp; name,
- const std::basic_string&lt;C>&amp; namespace_);
-
-
- const std::basic_string&lt;C>&amp;
- name () const;
-
- const std::basic_string&lt;C>&amp;
- namespace_ () const;
-
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::expected_element</code> exception is thrown
- when an expected element is not encountered by the DOM-Tree stage.
- The name and namespace of the expected element can be obtained using
- the <code>name</code> and <code>namespace_</code> functions respectively.
- </p>
-
-
- <h3><a name="3.3.3">3.3.3 <code>xml_schema::unexpected_element</code></a></h3>
-
- <pre class="c++">
-struct unexpected_element: virtual exception
-{
- unexpected_element (const std::basic_string&lt;C>&amp; encountered_name,
- const std::basic_string&lt;C>&amp; encountered_namespace,
- const std::basic_string&lt;C>&amp; expected_name,
- const std::basic_string&lt;C>&amp; expected_namespace)
-
-
- const std::basic_string&lt;C>&amp;
- encountered_name () const;
-
- const std::basic_string&lt;C>&amp;
- encountered_namespace () const;
-
-
- const std::basic_string&lt;C>&amp;
- expected_name () const;
-
- const std::basic_string&lt;C>&amp;
- expected_namespace () const;
-
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::unexpected_element</code> exception is thrown
- when an unexpected element is encountered by the DOM-Tree stage.
- The name and namespace of the encountered element can be obtained
- using the <code>encountered_name</code> and
- <code>encountered_namespace</code> functions respectively. If an
- element was expected instead of the encountered one, its name
- and namespace can be obtained using the <code>expected_name</code> and
- <code>expected_namespace</code> functions respectively. Otherwise
- these functions return empty strings.
- </p>
-
- <h3><a name="3.3.4">3.3.4 <code>xml_schema::expected_attribute</code></a></h3>
-
- <pre class="c++">
-struct expected_attribute: virtual exception
-{
- expected_attribute (const std::basic_string&lt;C>&amp; name,
- const std::basic_string&lt;C>&amp; namespace_);
-
-
- const std::basic_string&lt;C>&amp;
- name () const;
-
- const std::basic_string&lt;C>&amp;
- namespace_ () const;
-
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::expected_attribute</code> exception is thrown
- when an expected attribute is not encountered by the DOM-Tree stage.
- The name and namespace of the expected attribute can be obtained using
- the <code>name</code> and <code>namespace_</code> functions respectively.
- </p>
-
-
- <h3><a name="3.3.5">3.3.5 <code>xml_schema::unexpected_enumerator</code></a></h3>
-
- <pre class="c++">
-struct unexpected_enumerator: virtual exception
-{
- unexpected_enumerator (const std::basic_string&lt;C>&amp; enumerator);
-
- const std::basic_string&lt;C>&amp;
- enumerator () const;
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::unexpected_enumerator</code> exception is thrown
- when an unexpected enumerator is encountered by the DOM-Tree stage.
- The enumerator can be obtained using the <code>enumerator</code>
- functions.
- </p>
-
- <h3><a name="3.3.6">3.3.6 <code>xml_schema::expected_text_content</code></a></h3>
-
- <pre class="c++">
-struct expected_text_content: virtual exception
-{
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::expected_text_content</code> exception is thrown
- when a content other than text is encountered and the text content was
- expected by the DOM-Tree stage.
- </p>
-
- <h3><a name="3.3.7">3.3.7 <code>xml_schema::no_type_info</code></a></h3>
-
- <pre class="c++">
-struct no_type_info: virtual exception
-{
- no_type_info (const std::basic_string&lt;C>&amp; type_name,
- const std::basic_string&lt;C>&amp; type_namespace);
-
- const std::basic_string&lt;C>&amp;
- type_name () const;
-
- const std::basic_string&lt;C>&amp;
- type_namespace () const;
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::no_type_info</code> exception is thrown
- when there is no type information associated with a type specified
- by the <code>xsi:type</code> attribute. This exception is thrown
- by the DOM-Tree stage. The name and namespace of the type in question
- can be obtained using the <code>type_name</code> and
- <code>type_namespace</code> functions respectively. Usually, catching
- this exception means that you haven't linked the code generated
- from the schema defining the type in question with your application
- or this schema has been compiled without the
- <code>--generate-polymorphic</code> option.
- </p>
-
-
- <h3><a name="3.3.8">3.3.8 <code>xml_schema::not_derived</code></a></h3>
-
- <pre class="c++">
-struct not_derived: virtual exception
-{
- not_derived (const std::basic_string&lt;C>&amp; base_type_name,
- const std::basic_string&lt;C>&amp; base_type_namespace,
- const std::basic_string&lt;C>&amp; derived_type_name,
- const std::basic_string&lt;C>&amp; derived_type_namespace);
-
- const std::basic_string&lt;C>&amp;
- base_type_name () const;
-
- const std::basic_string&lt;C>&amp;
- base_type_namespace () const;
-
-
- const std::basic_string&lt;C>&amp;
- derived_type_name () const;
-
- const std::basic_string&lt;C>&amp;
- derived_type_namespace () const;
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::not_derived</code> exception is thrown
- when a type specified by the <code>xsi:type</code> attribute is
- not derived from the expected base type. This exception is thrown
- by the DOM-Tree stage. The name and namespace of the expected
- base type can be obtained using the <code>base_type_name</code> and
- <code>base_type_namespace</code> functions respectively. The name
- and namespace of the offending type can be obtained using the
- <code>derived_type_name</code> and
- <code>derived_type_namespace</code> functions respectively.
- </p>
-
- <h3><a name="3.3.9">3.3.9 <code>xml_schema::no_prefix_mapping</code></a></h3>
-
- <pre class="c++">
-struct no_prefix_mapping: virtual exception
-{
- no_prefix_mapping (const std::basic_string&lt;C>&amp; prefix);
-
- const std::basic_string&lt;C>&amp;
- prefix () const;
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::no_prefix_mapping</code> exception is thrown
- during the DOM-Tree stage if a namespace prefix is encountered for
- which a prefix-namespace mapping hasn't been provided. The namespace
- prefix in question can be obtained using the <code>prefix</code>
- function.
- </p>
-
- <h2><a name="3.4">3.4 Reading from a Local File or URI</a></h2>
-
- <p>Using a local file or URI is the simplest way to parse an XML instance.
- For example:</p>
-
- <pre class="c++">
-using std::auto_ptr;
-
-auto_ptr&lt;type> r1 (name ("test.xml"));
-auto_ptr&lt;type> r2 (name ("http://www.codesynthesis.com/test.xml"));
- </pre>
-
- <p>Or, in the C++11 mode:</p>
-
- <pre class="c++">
-using std::unique_ptr;
-
-unique_ptr&lt;type> r1 (name ("test.xml"));
-unique_ptr&lt;type> r2 (name ("http://www.codesynthesis.com/test.xml"));
- </pre>
-
- <h2><a name="3.5">3.5 Reading from <code>std::istream</code></a></h2>
-
- <p>When using an <code>std::istream</code> instance, you may also
- pass an optional resource id. This id is used to identify the
- resource (for example in error messages) as well as to resolve
- relative paths. For instance:</p>
-
- <pre class="c++">
-using std::auto_ptr;
-
-{
- std::ifstream ifs ("test.xml");
- auto_ptr&lt;type> r (name (ifs, "test.xml"));
-}
-
-{
- std::string str ("..."); // Some XML fragment.
- std::istringstream iss (str);
- auto_ptr&lt;type> r (name (iss));
-}
- </pre>
-
- <h2><a name="3.6">3.6 Reading from <code>xercesc::InputSource</code></a></h2>
-
- <p>Reading from a <code>xercesc::InputSource</code> instance
- is similar to the <code>std::istream</code> case except
- the resource id is maintained by the <code>InputSource</code>
- object. For instance:</p>
-
- <pre class="c++">
-xercesc::StdInInputSource is;
-std::auto_ptr&lt;type> r (name (is));
- </pre>
-
- <h2><a name="3.7">3.7 Reading from DOM</a></h2>
-
- <p>Reading from a <code>xercesc::DOMDocument</code> instance allows
- you to setup a custom XML-DOM stage. Things like DOM
- parser reuse, schema pre-parsing, and schema caching can be achieved
- with this approach. For more information on how to obtain DOM
- representation from an XML instance refer to the Xerces-C++
- documentation. In addition, the
- <a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree Mapping
- FAQ</a> shows how to parse an XML instance to a Xerces-C++
- DOM document using the XSD runtime utilities.
- </p>
-
- <p>The last parsing function is useful when you would like to perform
- your own XML-to-DOM parsing and associate the resulting DOM document
- with the object model nodes. The automatic <code>DOMDocument</code>
- pointer is reset and the resulting object model assumes ownership
- of the DOM document passed. For example:</p>
-
- <pre class="c++">
-// C++98 version.
-//
-xml_schema::dom::auto_ptr&lt;xercesc::DOMDocument> doc = ...
-
-std::auto_ptr&lt;type> r (
- name (doc, xml_schema::flags::keep_dom | xml_schema::flags::own_dom));
-
-// At this point doc is reset to 0.
-
-// C++11 version.
-//
-xml_schema::dom::unique_ptr&lt;xercesc::DOMDocument> doc = ...
-
-std::unique_ptr&lt;type> r (
- name (std::move (doc),
- xml_schema::flags::keep_dom | xml_schema::flags::own_dom));
-
-// At this point doc is reset to 0.
- </pre>
-
- <h1><a name="4">4 Serialization</a></h1>
-
- <p>This chapter covers various aspects of serializing a
- tree-like object model to DOM or XML.
- In this regard, serialization is complimentary to the reverse
- process of parsing a DOM or XML instance into an object model
- which is discussed in <a href="#3">Chapter 3,
- "Parsing"</a>. Note that the generation of the serialization code
- is optional and should be explicitly requested with the
- <code>--generate-serialization</code> option. See the
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a> for more information.
- </p>
-
- <p>Each global XML Schema element in the form:
- </p>
-
-
- <pre class="xml">
-&lt;xsd:element name="name" type="type"/>
- </pre>
-
- <p>is mapped to 8 overloaded C++ functions in the form:</p>
-
- <pre class="c++">
-// Serialize to std::ostream.
-//
-void
-name (std::ostream&amp;,
- const type&amp;,
- const xml_schema::namespace_fomap&amp; =
- xml_schema::namespace_infomap (),
- const std::basic_string&lt;C>&amp; encoding = "UTF-8",
- xml_schema::flags = 0);
-
-void
-name (std::ostream&amp;,
- const type&amp;,
- xml_schema::error_handler&amp;,
- const xml_schema::namespace_infomap&amp; =
- xml_schema::namespace_infomap (),
- const std::basic_string&lt;C>&amp; encoding = "UTF-8",
- xml_schema::flags = 0);
-
-void
-name (std::ostream&amp;,
- const type&amp;,
- xercesc::DOMErrorHandler&amp;,
- const xml_schema::namespace_infomap&amp; =
- xml_schema::namespace_infomap (),
- const std::basic_string&lt;C>&amp; encoding = "UTF-8",
- xml_schema::flags = 0);
-
-
-// Serialize to XMLFormatTarget.
-//
-void
-name (xercesc::XMLFormatTarget&amp;,
- const type&amp;,
- const xml_schema::namespace_infomap&amp; =
- xml_schema::namespace_infomap (),
- const std::basic_string&lt;C>&amp; encoding = "UTF-8",
- xml_schema::flags = 0);
-
-void
-name (xercesc::XMLFormatTarget&amp;,
- const type&amp;,
- xml_schema::error_handler&amp;,
- const xml_schema::namespace_infomap&amp; =
- xml_schema::namespace_infomap (),
- const std::basic_string&lt;C>&amp; encoding = "UTF-8",
- xml_schema::flags = 0);
-
-void
-name (xercesc::XMLFormatTarget&amp;,
- const type&amp;,
- xercesc::DOMErrorHandler&amp;,
- const xml_schema::namespace_infomap&amp; =
- xml_schema::namespace_infomap (),
- const std::basic_string&lt;C>&amp; encoding = "UTF-8",
- xml_schema::flags = 0);
-
-
-// Serialize to DOM.
-//
-xml_schema::dom::[auto|unique]_ptr&lt;xercesc::DOMDocument>
-name (const type&amp;,
- const xml_schema::namespace_infomap&amp;
- xml_schema::namespace_infomap (),
- xml_schema::flags = 0);
-
-void
-name (xercesc::DOMDocument&amp;,
- const type&amp;,
- xml_schema::flags = 0);
- </pre>
-
- <p>You can choose between writing XML to <code>std::ostream</code> or
- <code>xercesc::XMLFormatTarget</code> and creating a DOM instance
- in the form of <code>xercesc::DOMDocument</code>. Serialization
- to <code>ostream</code> or <code>XMLFormatTarget</code> requires a
- considerably less work while serialization to DOM provides
- for greater flexibility. Each of these serialization functions
- is discussed in more detail in the following sections.
- </p>
-
-
- <h2><a name="4.1">4.1 Initializing the Xerces-C++ Runtime</a></h2>
-
- <p>Some serialization functions expect you to initialize the Xerces-C++
- runtime while others initialize and terminate it as part of their
- work. The general rule is as follows: if a function has any arguments
- or return a value that is an instance of a Xerces-C++ type, then
- this function expects you to initialize the Xerces-C++ runtime.
- Otherwise, the function initializes and terminates the runtime for
- you. Note that it is legal to have nested calls to the Xerces-C++
- initialize and terminate functions as long as the calls are balanced.
- </p>
-
- <p>You can instruct serialization functions that initialize and terminate
- the runtime not to do so by passing the
- <code>xml_schema::flags::dont_initialize</code> flag (see
- <a href="#4.3">Section 4.3, "Flags"</a>).
- </p>
-
- <h2><a name="4.2">4.2 Namespace Infomap and Character Encoding</a></h2>
-
- <p>When a document being serialized uses XML namespaces, custom
- prefix-namespace associations can to be established. If custom
- prefix-namespace mapping is not provided then generic prefixes
- (<code>p1</code>, <code>p2</code>, etc) are automatically assigned
- to namespaces as needed. Also, if
- you would like the resulting instance document to contain the
- <code>schemaLocation</code> or <code>noNamespaceSchemaLocation</code>
- attributes, you will need to provide namespace-schema associations.
- The <code>xml_schema::namespace_infomap</code> class is used
- to capture this information:</p>
-
- <pre class="c++">
-struct namespace_info
-{
- namespace_info ();
- namespace_info (const std::basic_string&lt;C>&amp; name,
- const std::basic_string&lt;C>&amp; schema);
-
- std::basic_string&lt;C> name;
- std::basic_string&lt;C> schema;
-};
-
-// Map of namespace prefix to namespace_info.
-//
-struct namespace_infomap: public std::map&lt;std::basic_string&lt;C>,
- namespace_info>
-{
-};
- </pre>
-
- <p>Consider the following associations as an example:</p>
-
- <pre class="c++">
-xml_schema::namespace_infomap map;
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";
- </pre>
-
- <p>This map, if passed to one of the serialization functions,
- could result in the following XML fragment:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0" ?>
-&lt;t:name xmlns:t="http://www.codesynthesis.com/test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/test test.xsd">
- </pre>
-
- <p>As you can see, the serialization function automatically added namespace
- mapping for the <code>xsi</code> prefix. You can change this by
- providing your own prefix:</p>
-
- <pre class="c++">
-xml_schema::namespace_infomap map;
-
-map["xsn"].name = "http://www.w3.org/2001/XMLSchema-instance";
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";
- </pre>
-
- <p>This could result in the following XML fragment:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0" ?>
-&lt;t:name xmlns:t="http://www.codesynthesis.com/test"
- xmlns:xsn="http://www.w3.org/2001/XMLSchema-instance"
- xsn:schemaLocation="http://www.codesynthesis.com/test test.xsd">
- </pre>
-
- <p>To specify the location of a schema without a namespace you can use
- an empty prefix as in the example below: </p>
-
- <pre class="c++">
-xml_schema::namespace_infomap map;
-
-map[""].schema = "test.xsd";
- </pre>
-
- <p>This would result in the following XML fragment:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0" ?>
-&lt;name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="test.xsd">
- </pre>
-
- <p>To make a particular namespace default you can use an empty
- prefix, for example:</p>
-
- <pre class="c++">
-xml_schema::namespace_infomap map;
-
-map[""].name = "http://www.codesynthesis.com/test";
-map[""].schema = "test.xsd";
- </pre>
-
- <p>This could result in the following XML fragment:</p>
-
- <pre class="xml">
-&lt;?xml version="1.0" ?>
-&lt;name xmlns="http://www.codesynthesis.com/test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/test test.xsd">
- </pre>
-
-
- <p>Another bit of information that you can pass to the serialization
- functions is the character encoding method that you would like to use.
- Common values for this argument are <code>"US-ASCII"</code>,
- <code>"ISO8859-1"</code>, <code>"UTF-8"</code>,
- <code>"UTF-16BE"</code>, <code>"UTF-16LE"</code>,
- <code>"UCS-4BE"</code>, and <code>"UCS-4LE"</code>. The default
- encoding is <code>"UTF-8"</code>. For more information on
- encoding methods see the
- "<a href="http://en.wikipedia.org/wiki/Character_code">Character
- Encoding</a>" article from Wikipedia.
- </p>
-
- <h2><a name="4.3">4.3 Flags</a></h2>
-
- <p>Serialization flags are the last argument of every serialization
- function. They allow you to fine-tune the process of serialization.
- The flags argument is optional.
- </p>
-
-
- <p>The following flags are recognized by the serialization
- functions:</p>
-
- <dl>
- <dt><code>xml_schema::flags::dont_initialize</code></dt>
- <dd>Do not initialize the Xerces-C++ runtime.</dd>
-
- <dt><code>xml_schema::flags::dont_pretty_print</code></dt>
- <dd>Do not add extra spaces or new lines that make the resulting XML
- slightly bigger but easier to read.</dd>
-
- <dt><code>xml_schema::flags::no_xml_declaration</code></dt>
- <dd>Do not write XML declaration (&lt;?xml ... ?>).</dd>
- </dl>
-
- <p>You can pass several flags by combining them using the bit-wise OR
- operator. For example:</p>
-
- <pre class="c++">
-std::auto_ptr&lt;type> r = ...
-std::ofstream ofs ("test.xml");
-xml_schema::namespace_infomap map;
-name (ofs,
- *r,
- map,
- "UTF-8",
- xml_schema::flags::no_xml_declaration |
- xml_schema::flags::dont_pretty_print);
- </pre>
-
- <p>For more information on the Xerces-C++ runtime initialization
- refer to <a href="#4.1">Section 4.1, "Initializing the Xerces-C++
- Runtime"</a>.
- </p>
-
- <h2><a name="4.4">4.4 Error Handling</a></h2>
-
- <p>As with the parsing functions (see <a href="#3.3">Section 3.3,
- "Error Handling"</a>), to better understand error handling and
- reporting strategies employed by the serialization functions, it
- is useful to know that the transformation of a statically-typed
- tree to an XML instance document happens in two stages. The first
- stage, performed by the generated code, consist of building a DOM
- instance from the statically-typed tree . For short, we will call
- this stage the Tree-DOM stage. The second stage, performed by
- Xerces-C++, consists of serializing the DOM instance into the XML
- document. We will call this stage the DOM-XML stage.
- </p>
-
- <p>All serialization functions except the two that serialize into
- a DOM instance come in overloaded triples. The first function
- in such a triple reports error conditions exclusively by throwing
- exceptions. It accumulates all the serialization errors of the
- DOM-XML stage and throws them in a single instance of the
- <code>xml_schema::serialization</code> exception (described below).
- The second and the third functions in the triple use callback
- interfaces to report serialization errors and warnings. The two
- callback interfaces are <code>xml_schema::error_handler</code> and
- <code>xercesc::DOMErrorHandler</code>. The
- <code>xml_schema::error_handler</code> interface is described in
- <a href="#3.3">Section 3.3, "Error Handling"</a>. For more information
- on the <code>xercesc::DOMErrorHandler</code> interface refer to the
- Xerces-C++ documentation.
- </p>
-
- <p>The Tree-DOM stage reports error conditions exclusively by throwing
- exceptions. Individual exceptions thrown by the serialization functions
- are described in the following sub-sections.
- </p>
-
- <h3><a name="4.4.1">4.4.1 <code>xml_schema::serialization</code></a></h3>
-
- <pre class="c++">
-struct serialization: virtual exception
-{
- serialization ();
- serialization (const diagnostics&amp;);
-
- const diagnostics&amp;
- diagnostics () const;
-
- virtual const char*
- what () const throw ();
-};
- </pre>
-
- <p>The <code>xml_schema::diagnostics</code> class is described in
- <a href="#3.3.1">Section 3.3.1, "<code>xml_schema::parsing</code>"</a>.
- The <code>xml_schema::serialization</code> exception is thrown if
- there were serialization errors reported during the DOM-XML stage.
- If no callback interface was provided to the serialization function,
- the exception contains a list of errors and warnings accessible using
- the <code>diagnostics</code> function.
- </p>
-
-
- <h3><a name="4.4.2">4.4.2 <code>xml_schema::unexpected_element</code></a></h3>
-
- <p>The <code>xml_schema::unexpected_element</code> exception is
- described in <a href="#3.3.3">Section 3.3.3,
- "<code>xml_schema::unexpected_element</code>"</a>. It is thrown
- by the serialization functions during the Tree-DOM stage if the
- root element name of the provided DOM instance does not match with
- the name of the element this serialization function is for.
- </p>
-
- <h3><a name="4.4.3">4.4.3 <code>xml_schema::no_type_info</code></a></h3>
-
- <p>The <code>xml_schema::no_type_info</code> exception is
- described in <a href="#3.3.7">Section 3.3.7,
- "<code>xml_schema::no_type_info</code>"</a>. It is thrown
- by the serialization functions during the Tree-DOM stage when there
- is no type information associated with a dynamic type of an
- element. Usually, catching this exception means that you haven't
- linked the code generated from the schema defining the type in
- question with your application or this schema has been compiled
- without the <code>--generate-polymorphic</code> option.
- </p>
-
- <h2><a name="4.5">4.5 Serializing to <code>std::ostream</code></a></h2>
-
- <p>In order to serialize to <code>std::ostream</code> you will need
- an object model, an output stream and, optionally, a namespace
- infomap. For instance:</p>
-
- <pre class="c++">
-// Obtain the object model.
-//
-std::auto_ptr&lt;type> r = ...
-
-// Prepare namespace mapping and schema location information.
-//
-xml_schema::namespace_infomap map;
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";
-
-// Write it out.
-//
-name (std::cout, *r, map);
- </pre>
-
- <p>Note that the output stream is treated as a binary stream. This
- becomes important when you use a character encoding that is wider
- than 8-bit <code>char</code>, for instance UTF-16 or UCS-4. For
- example, things will most likely break if you try to serialize
- to <code>std::ostringstream</code> with UTF-16 or UCS-4 as an
- encoding. This is due to the special value,
- <code>'\0'</code>, that will most likely occur as part of such
- serialization and it won't have the special meaning assumed by
- <code>std::ostringstream</code>.
- </p>
-
-
- <h2><a name="4.6">4.6 Serializing to <code>xercesc::XMLFormatTarget</code></a></h2>
-
- <p>Serializing to an <code>xercesc::XMLFormatTarget</code> instance
- is similar the <code>std::ostream</code> case. For instance:
- </p>
-
- <pre class="c++">
-using std::auto_ptr;
-
-// Obtain the object model.
-//
-auto_ptr&lt;type> r = ...
-
-// Prepare namespace mapping and schema location information.
-//
-xml_schema::namespace_infomap map;
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";
-
-using namespace xercesc;
-
-XMLPlatformUtils::Initialize ();
-
-{
- // Choose a target.
- //
- auto_ptr&lt;XMLFormatTarget> ft;
-
- if (argc != 2)
- {
- ft = auto_ptr&lt;XMLFormatTarget> (new StdOutFormatTarget ());
- }
- else
- {
- ft = auto_ptr&lt;XMLFormatTarget> (
- new LocalFileFormatTarget (argv[1]));
- }
-
- // Write it out.
- //
- name (*ft, *r, map);
-}
-
-XMLPlatformUtils::Terminate ();
- </pre>
-
- <p>Note that we had to initialize the Xerces-C++ runtime before we
- could call this serialization function.</p>
-
- <h2><a name="4.7">4.7 Serializing to DOM</a></h2>
-
- <p>The mapping provides two overloaded functions that implement
- serialization to a DOM instance. The first creates a DOM instance
- for you and the second serializes to an existing DOM instance.
- While serializing to a new DOM instance is similar to serializing
- to <code>std::ostream</code> or <code>xercesc::XMLFormatTarget</code>,
- serializing to an existing DOM instance requires quite a bit of work
- from your side. You will need to set all the custom namespace mapping
- attributes as well as the <code>schemaLocation</code> and/or
- <code>noNamespaceSchemaLocation</code> attributes. The following
- listing should give you an idea about what needs to be done:
- </p>
-
- <pre class="c++">
-// Obtain the object model.
-//
-std::auto_ptr&lt;type> r = ...
-
-using namespace xercesc;
-
-XMLPlatformUtils::Initialize ();
-
-{
- // Create a DOM instance. Set custom namespace mapping and schema
- // location attributes.
- //
- DOMDocument&amp; doc = ...
-
- // Serialize to DOM.
- //
- name (doc, *r);
-
- // Serialize the DOM document to XML.
- //
- ...
-}
-
-XMLPlatformUtils::Terminate ();
- </pre>
-
- <p>For more information on how to create and serialize a DOM instance
- refer to the Xerces-C++ documentation. In addition, the
- <a href="http://wiki.codesynthesis.com/Tree/FAQ">C++/Tree Mapping
- FAQ</a> shows how to implement these operations using the XSD
- runtime utilities.
- </p>
-
- <h1><a name="5">5 Additional Functionality</a></h1>
-
- <p>The C++/Tree mapping provides a number of optional features
- that can be useful in certain situations. They are described
- in the following sections.</p>
-
- <h2><a name="5.1">5.1 DOM Association</a></h2>
-
- <p>Normally, after parsing is complete, the DOM document which
- was used to extract the data is discarded. However, the parsing
- functions can be instructed to preserve the DOM document
- and create an association between the DOM nodes and object model
- nodes. When there is an association between the DOM and
- object model nodes, you can obtain the corresponding DOM element
- or attribute node from an object model node as well as perform
- the reverse transition: obtain the corresponding object model
- from a DOM element or attribute node.</p>
-
- <p>Maintaining DOM association is normally useful when the application
- needs access to XML constructs that are not preserved in the
- object model, for example, XML comments.
- Another useful aspect of DOM association is the ability of the
- application to navigate the document tree using the generic DOM
- interface (for example, with the help of an XPath processor)
- and then move back to the statically-typed object model. Note
- also that while you can change the underlying DOM document,
- these changes are not reflected in the object model and will
- be ignored during serialization. If you need to not only access
- but also modify some aspects of XML that are not preserved in
- the object model, then type customization with custom parsing
- constructors and serialization operators should be used instead.</p>
-
- <p>To request DOM association you will need to pass the
- <code>xml_schema::flags::keep_dom</code> flag to one of the
- parsing functions (see <a href="#3.2">Section 3.2,
- "Flags and Properties"</a> for more information). In this case the
- DOM document is retained and will be released when the object model
- is deleted. Note that since DOM nodes "out-live" the parsing function
- call, you need to initialize the Xerces-C++ runtime before calling
- one of the parsing functions with the <code>keep_dom</code> flag and
- terminate it after the object model is destroyed (see
- <a href="#3.1">Section 3.1, "Initializing the Xerces-C++ Runtime"</a>).</p>
-
- <p>If the <code>keep_dom</code> flag is passed
- as the second argument to the copy constructor and the copy
- being made is of a complete tree, then the DOM association
- is also maintained in the copy by cloning the underlying
- DOM document and reestablishing the associations. For example:</p>
-
- <pre class="c++">
-using namespace xercesc;
-
-XMLPlatformUtils::Initialize ();
-
-{
- // Parse XML to object model.
- //
- std::auto_ptr&lt;type> r (root (
- "root.xml",
- xml_schema::flags::keep_dom |
- xml_schema::flags::dont_initialize));
-
- // Copy without DOM association.
- //
- type copy1 (*r);
-
- // Copy with DOM association.
- //
- type copy2 (*r, xml_schema::flags::keep_dom);
-}
-
-XMLPlatformUtils::Terminate ();
- </pre>
-
-
- <p>To obtain the corresponding DOM node from an object model node
- you will need to call the <code>_node</code> accessor function
- which returns a pointer to <code>DOMNode</code>. You can then query
- this DOM node's type and cast it to either <code>DOMAttr*</code>
- or <code>DOMElement*</code>. To obtain the corresponding object
- model node from a DOM node, the DOM user data API is used. The
- <code>xml_schema::dom::tree_node_key</code> variable contains
- the key for object model nodes. The following schema and code
- fragment show how to navigate from DOM to object model nodes
- and in the opposite direction:</p>
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- &lt;element name="a" type="string"/>
- &lt;/sequence>
-&lt;/complexType>
-
-&lt;element name="root" type="object"/>
- </pre>
-
- <pre class="c++">
-using namespace xercesc;
-
-XMLPlatformUtils::Initialize ();
-
-{
- // Parse XML to object model.
- //
- std::auto_ptr&lt;type> r (root (
- "root.xml",
- xml_schema::flags::keep_dom |
- xml_schema::flags::dont_initialize));
-
- DOMNode* n = root->_node ();
- assert (n->getNodeType () == DOMNode::ELEMENT_NODE);
- DOMElement* re = static_cast&lt;DOMElement*> (n);
-
- // Get the 'a' element. Note that it is not necessarily the
- // first child node of 'root' since there could be whitespace
- // nodes before it.
- //
- DOMElement* ae;
-
- for (n = re->getFirstChild (); n != 0; n = n->getNextSibling ())
- {
- if (n->getNodeType () == DOMNode::ELEMENT_NODE)
- {
- ae = static_cast&lt;DOMElement*> (n);
- break;
- }
- }
-
- // Get from the 'a' DOM element to xml_schema::string object model
- // node.
- //
- xml_schema::type&amp; t (
- *reinterpret_cast&lt;xml_schema::type*> (
- ae->getUserData (xml_schema::dom::tree_node_key)));
-
- xml_schema::string&amp; a (dynamic_cast&lt;xml_schema::string&amp;> (t));
-}
-
-XMLPlatformUtils::Terminate ();
- </pre>
-
- <p>The 'mixed' example which can be found in the XSD distribution
- shows how to handle the mixed content using DOM association.</p>
-
- <h2><a name="5.2">5.2 Binary Serialization</a></h2>
-
- <p>Besides reading from and writing to XML, the C++/Tree mapping
- also allows you to save the object model to and load it from a
- number of predefined as well as custom data representation
- formats. The predefined binary formats are CDR (Common Data
- Representation) and XDR (eXternal Data Representation). A
- custom format can easily be supported by providing
- insertion and extraction operators for basic types.</p>
-
- <p>Binary serialization saves only the data without any meta
- information or markup. As a result, saving to and loading
- from a binary representation can be an order of magnitude
- faster than parsing and serializing the same data in XML.
- Furthermore, the resulting representation is normally several
- times smaller than the equivalent XML representation. These
- properties make binary serialization ideal for internal data
- exchange and storage. A typical application that uses this
- facility stores the data and communicates within the
- system using a binary format and reads/writes the data
- in XML when communicating with the outside world.</p>
-
- <p>In order to request the generation of insertion operators and
- extraction constructors for a specific predefined or custom
- data representation stream, you will need to use the
- <code>--generate-insertion</code> and <code>--generate-extraction</code>
- compiler options. See the
- <a href="http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml">XSD
- Compiler Command Line Manual</a> for more information.</p>
-
- <p>Once the insertion operators and extraction constructors are
- generated, you can use the <code>xml_schema::istream</code>
- and <code>xml_schema::ostream</code> wrapper stream templates
- to save the object model to and load it from a specific format.
- The following code fragment shows how to do this using ACE
- (Adaptive Communication Environment) CDR streams as an example:</p>
-
- <pre class="xml">
-&lt;complexType name="object">
- &lt;sequence>
- &lt;element name="a" type="string"/>
- &lt;element name="b" type="int"/>
- &lt;/sequence>
-&lt;/complexType>
-
-&lt;element name="root" type="object"/>
- </pre>
-
- <pre class="c++">
-// Parse XML to object model.
-//
-std::auto_ptr&lt;type> r (root ("root.xml"));
-
-// Save to a CDR stream.
-//
-ACE_OutputCDR ace_ocdr;
-xml_schema::ostream&lt;ACE_OutputCDR> ocdr (ace_ocdr);
-
-ocdr &lt;&lt; *r;
-
-// Load from a CDR stream.
-//
-ACE_InputCDR ace_icdr (buf, size);
-xml_schema::istream&lt;ACE_InputCDR> icdr (ace_icdr);
-
-std::auto_ptr&lt;object> copy (new object (icdr));
-
-// Serialize to XML.
-//
-root (std::cout, *copy);
- </pre>
-
- <p>The XSD distribution contains a number of examples that
- show how to save the object model to and load it from
- CDR, XDR, and a custom format.</p>
-
- <!-- Appendix A -->
-
-
- <h1><a name="A">Appendix A &mdash; Default and Fixed Values</a></h1>
-
- <p>The following table summarizes the effect of default and fixed
- values (specified with the <code>default</code> and <code>fixed</code>
- attributes, respectively) on attribute and element values. The
- <code>default</code> and <code>fixed</code> attributes are mutually
- exclusive. It is also worthwhile to note that the fixed value semantics
- is a superset of the default value semantics.
- </p>
-
- <!-- border="1" is necessary for html2ps -->
- <table id="default-fixed" border="1">
- <tr>
- <th></th>
- <th></th>
- <th colspan="2">default</th>
- <th colspan="2">fixed</th>
- </tr>
-
- <!-- element -->
-
- <tr>
- <th rowspan="4">element</th>
- <th rowspan="2">not present</th>
- <th>optional</th>
- <th>required</th>
- <th>optional</th>
- <th>required</th>
- </tr>
- <tr>
- <td>not present</td>
- <td>invalid instance</td>
- <td>not present</td>
- <td>invalid instance</td>
- </tr>
-
-
- <tr>
- <th>empty</th>
- <td colspan="2">default value is used</td>
- <td colspan="2">fixed value is used</td>
- </tr>
-
- <tr>
- <th>value</th>
- <td colspan="2">value is used</td>
- <td colspan="2">value is used provided it's the same as fixed</td>
- </tr>
-
- <!-- attribute -->
-
- <!-- element -->
-
- <tr>
- <th rowspan="4">attribute</th>
- <th rowspan="2">not present</th>
- <th>optional</th>
- <th>required</th>
- <th>optional</th>
- <th>required</th>
- </tr>
- <tr>
- <td>default value is used</td>
- <td>invalid schema</td>
- <td>fixed value is used</td>
- <td>invalid instance</td>
- </tr>
-
-
- <tr>
- <th>empty</th>
- <td colspan="2">empty value is used</td>
- <td colspan="2">empty value is used provided it's the same as fixed</td>
- </tr>
-
- <tr>
- <th>value</th>
- <td colspan="2">value is used</td>
- <td colspan="2">value is used provided it's the same as fixed</td>
- </tr>
-
- </table>
-
- </div>
-</div>
-
-
-</body>
-</html>
diff --git a/xsd/doc/cxx/tree/manual/makefile b/xsd/doc/cxx/tree/manual/makefile
deleted file mode 100644
index 3cb0d80..0000000
--- a/xsd/doc/cxx/tree/manual/makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-# file : doc/cxx/tree/manual/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(default): $(out_base)/cxx-tree-manual.ps $(out_base)/cxx-tree-manual.pdf
-
-
-$(out_base)/cxx-tree-manual.ps: $(src_base)/index.xhtml \
- $(src_base)/manual.html2ps \
- | $(out_base)/.
- $(call message,html2ps $<,html2ps -f $(src_base)/manual.html2ps -o $@ $<)
-
-$(out_base)/cxx-tree-manual.pdf: $(out_base)/cxx-tree-manual.ps | $(out_base)/.
- $(call message,ps2pdf $<,ps2pdf14 $< $@)
-
-# Install & Dist.
-#
-$(install): path := $(subst $(src_root)/doc/,,$(src_base))
-$(dist): path := $(subst $(src_root)/,,$(src_base))
-
-$(install): $(out_base)/cxx-tree-manual.ps $(out_base)/cxx-tree-manual.pdf
- $(call install-data,$(src_base)/index.xhtml,$(install_doc_dir)/xsd/$(path)/index.xhtml)
- $(call install-data,$(out_base)/cxx-tree-manual.ps,$(install_doc_dir)/xsd/$(path)/cxx-tree-manual.ps)
- $(call install-data,$(out_base)/cxx-tree-manual.pdf,$(install_doc_dir)/xsd/$(path)/cxx-tree-manual.pdf)
-
-$(dist): $(out_base)/cxx-tree-manual.ps $(out_base)/cxx-tree-manual.pdf
- $(call install-data,$(src_base)/index.xhtml,$(dist_prefix)/$(path)/index.xhtml)
- $(call install-data,$(out_base)/cxx-tree-manual.ps,$(dist_prefix)/$(path)/cxx-tree-manual.ps)
- $(call install-data,$(out_base)/cxx-tree-manual.pdf,$(dist_prefix)/$(path)/cxx-tree-manual.pdf)
-
-$(dist-win): $(dist)
-
-
-# Clean
-#
-$(clean):
-ifneq ($(xsd_clean_gen),n)
- $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-tree-manual.ps)
- $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-tree-manual.pdf)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/install.make)
diff --git a/xsd/doc/cxx/tree/manual/manual.html2ps b/xsd/doc/cxx/tree/manual/manual.html2ps
deleted file mode 100644
index 6e714a6..0000000
--- a/xsd/doc/cxx/tree/manual/manual.html2ps
+++ /dev/null
@@ -1,66 +0,0 @@
-@html2ps {
- option {
- toc: hb;
- colour: 1;
- hyphenate: 1;
- titlepage: 1;
- }
-
- datefmt: "%B %Y";
-
- titlepage {
- content: "
-<div align=center>
- <h1><big>C++/Tree Mapping User Manual</big></h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
- <h1>&nbsp;</h1>
-</div>
- <p>Revision $[revision] &nbsp;&nbsp;&nbsp; $D</p>
- <p>Copyright &copy; 2005-2014 CODE SYNTHESIS TOOLS CC</p>
-
- <p>Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- <a href='http://www.codesynthesis.com/licenses/fdl-1.2.txt'>GNU Free
- Documentation License, version 1.2</a>; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- </p>
-
- <p>This document is available in the following formats:
- <a href='http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml'>XHTML</a>,
- <a href='http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf'>PDF</a>, and
- <a href='http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps'>PostScript</a>.</p>";
- }
-
- toc {
- indent: 2em;
- }
-
- header {
- odd-right: $H;
- even-left: $H;
- }
-
- footer {
- odd-left: $D;
- odd-center: $T, v$[revision];
- odd-right: $N;
-
- even-left: $N;
- even-center: $T, v$[revision];
- even-right: $D;
- }
-}
-
-body {
- font-size: 12pt;
- text-align: justify;
-}
-
-pre {
- font-size: 10pt;
-}
diff --git a/xsd/doc/cxx/tree/reference/footer.html b/xsd/doc/cxx/tree/reference/footer.html
deleted file mode 100644
index 4325116..0000000
--- a/xsd/doc/cxx/tree/reference/footer.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<hr size="1">
-<div style="text-align: center; font-size: 80%;">
- Copyright &copy; 2005-2014 CODE SYNTHESIS TOOLS CC
-</div>
-</body>
-</html>
diff --git a/xsd/doc/cxx/tree/reference/libxsd.doxygen b/xsd/doc/cxx/tree/reference/libxsd.doxygen
deleted file mode 100644
index 376d34a..0000000
--- a/xsd/doc/cxx/tree/reference/libxsd.doxygen
+++ /dev/null
@@ -1,1322 +0,0 @@
-# Doxyfile 1.5.4
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file that
-# follow. The default is UTF-8 which is also the encoding used for all text before
-# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into
-# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of
-# possible encodings.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = "C++/Tree Mapping Runtime Library"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY =
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
-# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
-# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
-# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
-# include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = YES
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT = NO
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct (or union) is
-# documented as struct with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code where the coding convention is that all structs are
-# typedef'ed and only the typedef is referenced never the struct's name.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be extracted
-# and appear in the documentation as a namespace called 'anonymous_namespace{file}',
-# where file will be replaced with the base name of the file that contains the anonymous
-# namespace. By default anonymous namespace are hidden.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = YES
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = NO
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = NO
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = NO
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from the
-# version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = \
-../../../../libxsd/xsd/cxx/tree/buffer.hxx \
-../../../../libxsd/xsd/cxx/tree/types.hxx \
-../../../../libxsd/xsd/cxx/tree/date-time.hxx \
-../../../../libxsd/xsd/cxx/tree/elements.hxx \
-../../../../libxsd/xsd/cxx/tree/element-map.hxx \
-../../../../libxsd/xsd/cxx/tree/exceptions.hxx
-
-# This tag can be used to specify the character encoding of the source files that
-# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default
-# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding.
-# See http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the output.
-# The symbol name can be a fully qualified name, a word, or if the wildcard * is used,
-# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH
-# then you must also enable this option. If you don't then doxygen will produce
-# a warning and turn it on anyway
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER = footer.html
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = YES
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF = YES
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-# C++98 version.
-#
-PREDEFINED = XSD_AUTO_PTR=std::auto_ptr
-
-# C++11 version.
-#
-# PREDEFINED = XSD_AUTO_PTR=std::unique_ptr
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE = libxsd.doxytag
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to
-# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to
-# specify the directory where the mscgen tool resides. If left empty the tool is assumed to
-# be found in the default search path.
-
-MSCGEN_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = NO
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
-# generate a caller dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the number
-# of direct children of the root node in a graph is already larger than
-# MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, which results in a white background.
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-
-DOT_TRANSPARENT = YES
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
diff --git a/xsd/doc/cxx/tree/reference/makefile b/xsd/doc/cxx/tree/reference/makefile
deleted file mode 100644
index 5df62c9..0000000
--- a/xsd/doc/cxx/tree/reference/makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-.PHONY: all
-all: libxsd.doxytag
-
-headers := \
-../../../../libxsd/xsd/cxx/tree/buffer.hxx \
-../../../../libxsd/xsd/cxx/tree/types.hxx \
-../../../../libxsd/xsd/cxx/tree/date-time.hxx \
-../../../../libxsd/xsd/cxx/tree/elements.hxx \
-../../../../libxsd/xsd/cxx/tree/exceptions.hxx
-
-libxsd.doxytag: libxsd.doxygen footer.html $(headers)
- doxygen $<
-
-.PHONY: clean
-clean:
- rm -f libxsd.doxytag
- rm -rf html
-
diff --git a/xsd/doc/makefile b/xsd/doc/makefile
deleted file mode 100644
index 4ed00cc..0000000
--- a/xsd/doc/makefile
+++ /dev/null
@@ -1,143 +0,0 @@
-# file : doc/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/cli/stub.make,\
- cli: cli,cli-rules: cli_rules)
-
-# Build.
-#
-$(default): \
-$(out_base)/cxx/ \
-$(out_base)/xsd.xhtml \
-$(out_base)/xsd.1
-
-# Man/html pages.
-#
-$(out_base)/xsd.xhtml $(out_base)/xsd.1: cli := $(cli)
-$(out_base)/xsd.xhtml $(out_base)/xsd.1: cli_options += -I $(src_root)/xsd
-
-$(out_base)/xsd.xhtml $(out_base)/xsd.1: \
-$(src_root)/xsd/options.cli \
-$(src_root)/xsd/cxx/options.cli \
-$(src_root)/xsd/cxx/tree/options.cli \
-$(src_root)/xsd/cxx/parser/options.cli
-
-# Assemble the options from different files in a specific order.
-#
-
-# XHTML
-#
-$(out_base)/xsd.xhtml: $(src_base)/xsd-prologue.xhtml \
- $(src_base)/xsd-epilogue.xhtml \
- $(src_base)/xsd-tree-header.xhtml \
- $(src_base)/xsd-parser-header.xhtml \
- | $(out_base)/.
-# Common options.
-#
- $(call message,cli-html $$1,$(cli) $(cli_options) --generate-html \
---stdout --suppress-undocumented --exclude-base --class CXX::options \
---class options --html-prologue-file $(src_base)/xsd-prologue.xhtml \
-$$1 >$@, $(src_root)/xsd/cxx/options.cli)
-
-# C++/Tree options.
-#
- $(call message,cli-html $$1,$(cli) $(cli_options) --generate-html \
---stdout --suppress-undocumented --exclude-base \
---html-prologue-file $(src_base)/xsd-tree-header.xhtml \
-$$1 >>$@, $(src_root)/xsd/cxx/tree/options.cli)
-
-# C++/Parser options.
-#
- $(call message,cli-html $$1,$(cli) $(cli_options) --generate-html \
---stdout --suppress-undocumented --exclude-base \
---html-prologue-file $(src_base)/xsd-parser-header.xhtml \
---html-epilogue-file $(src_base)/xsd-epilogue.xhtml \
-$$1 >>$@, $(src_root)/xsd/cxx/parser/options.cli)
-
-# MAN
-#
-$(out_base)/xsd.1: $(src_base)/xsd-prologue.1 \
- $(src_base)/xsd-epilogue.1 \
- $(src_base)/xsd-tree-header.1 \
- $(src_base)/xsd-parser-header.1 \
- | $(out_base)/.
-# Common options.
-#
- $(call message,cli-man $$1,$(cli) $(cli_options) --generate-man \
---stdout --suppress-undocumented --exclude-base --class CXX::options \
---class options --man-prologue-file $(src_base)/xsd-prologue.1 \
-$$1 >$@, $(src_root)/xsd/cxx/options.cli)
-
-# C++/Tree options.
-#
- $(call message,cli-man $$1,$(cli) $(cli_options) --generate-man \
---stdout --suppress-undocumented --exclude-base \
---man-prologue-file $(src_base)/xsd-tree-header.1 \
-$$1 >>$@, $(src_root)/xsd/cxx/tree/options.cli)
-
-# C++/Parser options.
-#
- $(call message,cli-man $$1,$(cli) $(cli_options) --generate-man \
---stdout --suppress-undocumented --exclude-base \
---man-prologue-file $(src_base)/xsd-parser-header.1 \
---man-epilogue-file $(src_base)/xsd-epilogue.1 \
-$$1 >>$@, $(src_root)/xsd/cxx/parser/options.cli)
-
-
-# Install.
-#
-$(install): $(out_base)/cxx/.install \
- $(out_base)/xsd.xhtml \
- $(out_base)/xsd.1
- $(call install-data,$(src_base)/default.css,$(install_doc_dir)/xsd/default.css)
- $(call install-data,$(out_base)/xsd.xhtml,$(install_doc_dir)/xsd/xsd.xhtml)
- $(call install-data,$(src_base)/custom-literals.xsd,$(install_doc_dir)/xsd/custom-literals.xsd)
- $(call install-data,$(out_base)/xsd.1,$(install_man_dir)/man1/xsd.1)
-
-# Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(dist-common): $(out_base)/xsd.xhtml \
- $(out_base)/xsd.1
- $(call install-data,$(src_base)/default.css,$(dist_prefix)/doc/default.css)
- $(call install-data,$(out_base)/xsd.xhtml,$(dist_prefix)/doc/xsd.xhtml)
- $(call install-data,$(out_base)/xsd.1,$(dist_prefix)/doc/xsd.1)
- $(call install-data,$(src_base)/custom-literals.xsd,$(dist_prefix)/doc/custom-literals.xsd)
-
-$(dist): $(dist-common) $(out_base)/cxx/.dist
-$(dist-win): $(dist-common) $(out_base)/cxx/.dist-win
-
-# Clean.
-#
-$(clean): $(out_base)/cxx/.clean
-ifneq ($(xsd_clean_gen),n)
- $(call message,rm $$1,rm -f $$1,$(out_base)/xsd.1)
- $(call message,rm $$1,rm -f $$1,$(out_base)/xsd.xhtml)
-endif
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(out_base)/xsd.xhtml $(out_base)/xsd.1: | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := xsd.1 xsd.xhtml
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-$(call include,$(bld_root)/install.make)
-$(call import,$(src_base)/cxx/makefile)
diff --git a/xsd/doc/xsd-epilogue.1 b/xsd/doc/xsd-epilogue.1
deleted file mode 100644
index 2b78ff7..0000000
--- a/xsd/doc/xsd-epilogue.1
+++ /dev/null
@@ -1,566 +0,0 @@
-\"
-\" NAMING CONVENTION
-\"
-
-.SH NAMING CONVENTION
-The compiler can be instructed to use a particular naming convention in
-the generated code. A number of widely-used conventions can be selected
-using the
-.B --type-naming
-and
-.B --function-naming
-options. A custom naming convention can be achieved using the
-.BR --type-regex ,
-.BR --accessor-regex ,
-.BR --one-accessor-regex ,
-.BR --opt-accessor-regex ,
-.BR --seq-accessor-regex ,
-.BR --modifier-regex ,
-.BR --one-modifier-regex ,
-.BR --opt-modifier-regex ,
-.BR --seq-modifier-regex ,
-.BR --parser-regex ,
-.BR --serializer-regex ,
-.BR --const-regex ,
-.BR --enumerator-regex ,
-and
-.B --element-type-regex
-options.
-
-The
-.B --type-naming
-option specifies the convention that should be used for naming C++ types.
-Possible values for this option are
-.B knr
-(default),
-.BR ucc ,
-and
-.BR java .
-The
-.B knr
-value (stands for K&R) signifies the standard, lower-case naming convention
-with the underscore used as a word delimiter, for example: foo, foo_bar.
-The
-.B ucc
-(stands for upper-camel-case) and
-.B java
-values a synonyms for the same naming convention where the first letter
-of each word in the name is capitalized, for example: Foo, FooBar.
-
-Similarly, the
-.B --function-naming
-option specifies the convention that should be used for naming C++ functions.
-Possible values for this option are
-.B knr
-(default),
-.BR lcc ,
-and
-.BR java .
-The
-.B knr
-value (stands for K&R) signifies the standard, lower-case naming convention
-with the underscore used as a word delimiter, for example: foo(), foo_bar().
-The
-.B lcc
-value (stands for lower-camel-case) signifies a naming convention where the
-first letter of each word except the first is capitalized, for example: foo(),
-fooBar(). The
-.B java
-naming convention is similar to the lower-camel-case one except that accessor
-functions are prefixed with get, modifier functions are prefixed with set,
-parsing functions are prefixed with parse, and serialization functions are
-prefixed with serialize, for example: getFoo(), setFooBar(), parseRoot(),
-serializeRoot().
-
-Note that the naming conventions specified with the
-.B --type-naming
-and
-.B --function-naming
-options perform only limited transformations on the
-names that come from the schema in the form of type, attribute, and element
-names. In other words, to get consistent results, your schemas should follow
-a similar naming convention as the one you would like to have in the generated
-code. Alternatively, you can use the
-.B --*-regex
-options (discussed below) to perform further transformations on the names
-that come from the schema.
-
-The
-.BR --type-regex ,
-.BR --accessor-regex ,
-.BR --one-accessor-regex ,
-.BR --opt-accessor-regex ,
-.BR --seq-accessor-regex ,
-.BR --modifier-regex ,
-.BR --one-modifier-regex ,
-.BR --opt-modifier-regex ,
-.BR --seq-modifier-regex ,
-.BR --parser-regex ,
-.BR --serializer-regex ,
-.BR --const-regex ,
-.BR --enumerator-regex ,
-and
-.B --element-type-regex
-options allow you to specify extra regular expressions for each name
-category in addition to the predefined set that is added depending on
-the
-.B --type-naming
-and
-.B --function-naming
-options. Expressions that are provided with the
-.B --*-regex
-options are evaluated prior to any predefined expressions. This allows
-you to selectively override some or all of the predefined transformations.
-When debugging your own expressions, it is often useful to see which
-expressions match which names. The
-.B --name-regex-trace
-option allows you to trace the process of applying
-regular expressions to names.
-
-The value for the
-.B --*-regex
-options should be a perl-like regular expression in the form
-.BI / pattern / replacement /\fR.
-Any character can be used as a delimiter instead of
-.BR / .
-Escaping of the delimiter character in
-.I pattern
-or
-.I replacement
-is not supported. All the regular expressions for each category are pushed
-into a category-specific stack with the last specified expression
-considered first. The first match that succeeds is used. For the
-.B --one-accessor-regex
-(accessors with cardinality one),
-.B --opt-accessor-regex
-(accessors with cardinality optional), and
-.B --seq-accessor-regex
-(accessors with cardinality sequence) categories the
-.B --accessor-regex
-expressions are used as a fallback. For the
-.BR --one-modifier-regex ,
-.BR --opt-modifier-regex ,
-and
-.B --seq-modifier-regex
-categories the
-.B --modifier-regex
-expressions are used as a fallback. For the
-.B --element-type-regex
-category the
-.B --type-regex
-expressions are used as a fallback.
-
-The type name expressions
-.RB ( --type-regex )
-are evaluated on the name string that has the following format:
-
-[\fInamespace \fR]\fIname\fR[\fB,\fIname\fR][\fB,\fIname\fR][\fB,\fIname\fR]
-
-The element type name expressions
-.RB ( --element-type-regex ),
-effective only when the
-.B --generate-element-type
-option is specified, are evaluated on the name string that has the following
-format:
-
-.I namespace name
-
-In the type name format the
-.I namespace
-part followed by a space is only present for global type names. For global
-types and elements defined in schemas without a target namespace, the
-.I namespace
-part is empty but the space is still present. In the type name format after
-the initial
-.I name
-component, up to three additional
-.I name
-components can be present, separated by commas. For example:
-
-.B http://example.com/hello type
-
-.B foo
-
-.B foo,iterator
-
-.B foo,const,iterator
-
-The following set of predefined regular expressions is used to transform
-type names when the upper-camel-case naming convention is selected:
-
-.B /(?:[^ ]* )?([^,]+)/\\\\u$1/
-
-.B /(?:[^ ]* )?([^,]+),([^,]+)/\\\\u$1\\\\u$2/
-
-.B /(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\\\\u$1\\\\u$2\\\\u$3/
-
-.B /(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\\\\u$1\\\\u$2\\\\u$3\\\\u$4/
-
-The accessor and modifier expressions
-.RB ( --*accessor-regex
-and
-.BR --*modifier-regex )
-are evaluated on the name string that has the following format:
-
-\fIname\fR[\fB,\fIname\fR][\fB,\fIname\fR]
-
-After the initial
-.I name
-component, up to two additional
-.I name
-components can be present, separated by commas. For example:
-
-.B foo
-
-.B dom,document
-
-.B foo,default,value
-
-The following set of predefined regular expressions is used to transform
-accessor names when the
-.B java
-naming convention is selected:
-
-.B /([^,]+)/get\\\\u$1/
-
-.B /([^,]+),([^,]+)/get\\\\u$1\\\\u$2/
-
-.B /([^,]+),([^,]+),([^,]+)/get\\\\u$1\\\\u$2\\\\u$3/
-
-For the parser, serializer, and enumerator categories, the corresponding
-regular expressions are evaluated on local names of elements and on
-enumeration values, respectively. For example, the following predefined
-regular expression is used to transform parsing function names when the
-.B java
-naming convention is selected:
-
-.B /(.+)/parse\\\\u$1/
-
-The const category is used to create C++ constant names for the
-element/wildcard/text content ids in ordered types.
-
-See also the REGEX AND SHELL QUOTING section below.
-
-\"
-\" TYPE MAP
-\"
-.SH TYPE MAP
-Type map files are used in C++/Parser to define a mapping between XML
-Schema and C++ types. The compiler uses this information to determine
-the return types of
-.B post_*
-functions in parser skeletons corresponding to XML Schema types
-as well as argument types for callbacks corresponding to elements
-and attributes of these types.
-
-The compiler has a set of predefined mapping rules that map built-in
-XML Schema types to suitable C++ types (discussed below) and all
-other types to
-.BR void .
-By providing your own type maps you can override these predefined rules.
-The format of the type map file is presented below:
-
-.RS
-.B namespace
-.I schema-namespace
-[
-.I cxx-namespace
-]
-.br
-.B {
-.br
- (
-.B include
-.IB file-name ;
-)*
-.br
- ([
-.B type
-]
-.I schema-type cxx-ret-type
-[
-.I cxx-arg-type
-.RB ] ;
-)*
-.br
-.B }
-.br
-.RE
-
-Both
-.I schema-namespace
-and
-.I schema-type
-are regex patterns while
-.IR cxx-namespace ,
-.IR cxx-ret-type ,
-and
-.I cxx-arg-type
-are regex pattern substitutions. All names can be optionally enclosed
-in \fR" "\fR, for example, to include white-spaces.
-
-.I schema-namespace
-determines XML Schema namespace. Optional
-.I cxx-namespace
-is prefixed to every C++ type name in this namespace declaration.
-.I cxx-ret-type
-is a C++ type name that is used as a return type for the
-.B post_*
-functions. Optional
-.I cxx-arg-type
-is an argument type for callback functions corresponding to elements and
-attributes of this type. If
-.I cxx-arg-type
-is not specified, it defaults to
-.I cxx-ret-type
-if
-.I cxx-ret-type
-ends with
-.B *
-or
-.B &
-(that is, it is a pointer or a reference) and
-.B const
-\fIcxx-ret-type\fB&\fR otherwise.
-.I file-name
-is a file name either in the \fR" "\fR or < > format and is added with the
-.B #include
-directive to the generated code.
-
-The \fB#\fR character starts a comment that ends with a new line or end of
-file. To specify a name that contains \fB#\fR enclose it in \fR" "\fR. For
-example:
-
-.RS
-namespace http://www.example.com/xmlns/my my
-.br
-{
-.br
- include "my.hxx";
-.br
-
- # Pass apples by value.
- #
- apple apple;
-.br
-
- # Pass oranges as pointers.
- #
- orange orange_t*;
-.br
-}
-.br
-.RE
-
-In the example above, for the
-.B http://www.example.com/xmlns/my#orange
-XML Schema type, the
-.B my::orange_t*
-C++ type will be used as both return and argument types.
-
-Several namespace declarations can be specified in a single file.
-The namespace declaration can also be completely omitted to map
-types in a schema without a namespace. For instance:
-
-.RS
-include "my.hxx";
-.br
-apple apple;
-.br
-
-namespace http://www.example.com/xmlns/my
-.br
-{
-.br
- orange "const orange_t*";
-.br
-}
-.br
-.RE
-
-
-The compiler has a number of predefined mapping rules that can be
-presented as the following map files. The string-based XML Schema
-built-in types are mapped to either
-.B std::string
-or
-.B std::wstring
-depending on the character type selected with the
-.B --char-type
-option
-.RB ( char
-by default).
-
-.RS
-namespace http://www.w3.org/2001/XMLSchema
-.br
-{
-.br
- boolean bool bool;
-.br
-
- byte "signed char" "signed char";
-.br
- unsignedByte "unsigned char" "unsigned char";
-.br
-
- short short short;
-.br
- unsignedShort "unsigned short" "unsigned short";
-.br
-
- int int int;
-.br
- unsignedInt "unsigned int" "unsigned int";
-.br
-
- long "long long" "long long";
-.br
- unsignedLong "unsigned long long" "unsigned long long";
-.br
-
- integer "long long" "long long";
-.br
-
- negativeInteger "long long" "long long";
-.br
- nonPositiveInteger "long long" "long long";
-.br
-
- positiveInteger "unsigned long long" "unsigned long long";
-.br
- nonNegativeInteger "unsigned long long" "unsigned long long";
-.br
-
- float float float;
-.br
- double double double;
-.br
- decimal double double;
-.br
-
- string std::string;
-.br
- normalizedString std::string;
-.br
- token std::string;
-.br
- Name std::string;
-.br
- NMTOKEN std::string;
-.br
- NCName std::string;
-.br
- ID std::string;
-.br
- IDREF std::string;
-.br
- language std::string;
-.br
- anyURI std::string;
-.br
-
- NMTOKENS xml_schema::string_sequence;
-.br
- IDREFS xml_schema::string_sequence;
-.br
-
- QName xml_schema::qname;
-.br
-
- base64Binary std::auto_ptr<xml_schema::buffer>
-.br
- std::auto_ptr<xml_schema::buffer>;
-.br
- hexBinary std::auto_ptr<xml_schema::buffer>
-.br
- std::auto_ptr<xml_schema::buffer>;
-.br
-
- date xml_schema::date;
-.br
- dateTime xml_schema::date_time;
-.br
- duration xml_schema::duration;
-.br
- gDay xml_schema::gday;
-.br
- gMonth xml_schema::gmonth;
-.br
- gMonthDay xml_schema::gmonth_day;
-.br
- gYear xml_schema::gyear;
-.br
- gYearMonth xml_schema::gyear_month;
-.br
- time xml_schema::time;
-.br
-}
-.br
-.RE
-
-
-The last predefined rule maps anything that wasn't mapped by previous
-rules to
-.BR void :
-
-.RS
-namespace .*
-.br
-{
-.br
- .* void void;
-.br
-}
-.br
-.RE
-
-When you provide your own type maps with the
-.B --type-map
-option, they are evaluated first. This allows you to selectively override
-predefined rules.
-
-.\"
-.\" REGEX AND SHELL QUOTING
-.\"
-.SH REGEX AND SHELL QUOTING
-When entering a regular expression argument in the shell command line
-it is often necessary to use quoting (enclosing the argument in " "
-or ' ') in order to prevent the shell from interpreting certain
-characters, for example, spaces as argument separators and $ as
-variable expansions.
-
-Unfortunately it is hard to achieve this in a manner that is portable
-across POSIX shells, such as those found on GNU/Linux and UNIX, and
-Windows shell. For example, if you use " " for quoting you will get
-a wrong result with POSIX shells if your expression contains $. The
-standard way of dealing with this on POSIX systems is to use ' '
-instead. Unfortunately, Windows shell does not remove ' ' from
-arguments when they are passed to applications. As a result you may
-have to use ' ' for POSIX and " " for Windows ($ is not treated as
-a special character on Windows).
-
-Alternatively, you can save regular expression options into a file,
-one option per line, and use this file with the
-.B --options-file
-option. With this approach you don't need to worry about shell quoting.
-
-.\"
-.\" DIAGNOSTICS
-.\"
-.SH DIAGNOSTICS
-If the input file is not a valid W3C XML Schema definition,
-.B xsd
-will issue diagnostic messages to
-.B STDERR
-and exit with non-zero exit code.
-.SH BUGS
-Send bug reports to the xsd-users@codesynthesis.com mailing list.
-.SH COPYRIGHT
-Copyright (c) 2005-2014 Code Synthesis Tools CC.
-
-Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License,
-version 1.2; with no Invariant Sections, no Front-Cover Texts and
-no Back-Cover Texts. Copy of the license can be obtained from
-http://codesynthesis.com/licenses/fdl-1.2.txt
diff --git a/xsd/doc/xsd-epilogue.xhtml b/xsd/doc/xsd-epilogue.xhtml
deleted file mode 100644
index 5f91450..0000000
--- a/xsd/doc/xsd-epilogue.xhtml
+++ /dev/null
@@ -1,422 +0,0 @@
- <h1>NAMING CONVENTION</h1>
-
- <p>The compiler can be instructed to use a particular naming
- convention in the generated code. A number of widely-used
- conventions can be selected using the <code><b>--type-naming</b></code>
- and <code><b>--function-naming</b></code> options. A custom
- naming convention can be achieved using the
- <code><b>--type-regex</b></code>,
- <code><b>--accessor-regex</b></code>,
- <code><b>--one-accessor-regex</b></code>,
- <code><b>--opt-accessor-regex</b></code>,
- <code><b>--seq-accessor-regex</b></code>,
- <code><b>--modifier-regex</b></code>,
- <code><b>--one-modifier-regex</b></code>,
- <code><b>--opt-modifier-regex</b></code>,
- <code><b>--seq-modifier-regex</b></code>,
- <code><b>--parser-regex</b></code>,
- <code><b>--serializer-regex</b></code>,
- <code><b>--const-regex</b></code>,
- <code><b>--enumerator-regex</b></code>, and
- <code><b>--element-type-regex</b></code> options.
- </p>
-
- <p>The <code><b>--type-naming</b></code> option specifies the
- convention that should be used for naming C++ types. Possible
- values for this option are <code><b>knr</b></code> (default),
- <code><b>ucc</b></code>, and <code><b>java</b></code>. The
- <code><b>knr</b></code> value (stands for K&amp;R) signifies
- the standard, lower-case naming convention with the underscore
- used as a word delimiter, for example: <code>foo</code>,
- <code>foo_bar</code>. The <code><b>ucc</b></code> (stands
- for upper-camel-case) and
- <code><b>java</b></code> values a synonyms for the same
- naming convention where the first letter of each word in the
- name is capitalized, for example: <code>Foo</code>,
- <code>FooBar</code>.</p>
-
- <p>Similarly, the <code><b>--function-naming</b></code> option
- specifies the convention that should be used for naming C++
- functions. Possible values for this option are <code><b>knr</b></code>
- (default), <code><b>lcc</b></code>, and <code><b>java</b></code>. The
- <code><b>knr</b></code> value (stands for K&amp;R) signifies
- the standard, lower-case naming convention with the underscore
- used as a word delimiter, for example: <code>foo()</code>,
- <code>foo_bar()</code>. The <code><b>lcc</b></code> value
- (stands for lower-camel-case) signifies a naming convention
- where the first letter of each word except the first is
- capitalized, for example: <code>foo()</code>, <code>fooBar()</code>.
- The <code><b>java</b></code> naming convention is similar to
- the lower-camel-case one except that accessor functions are prefixed
- with <code>get</code>, modifier functions are prefixed
- with <code>set</code>, parsing functions are prefixed
- with <code>parse</code>, and serialization functions are
- prefixed with <code>serialize</code>, for example:
- <code>getFoo()</code>, <code>setFooBar()</code>,
- <code>parseRoot()</code>, <code>serializeRoot()</code>.</p>
-
- <p>Note that the naming conventions specified with the
- <code><b>--type-naming</b></code> and
- <code><b>--function-naming</b></code> options perform only limited
- transformations on the names that come from the schema in the
- form of type, attribute, and element names. In other words, to
- get consistent results, your schemas should follow a similar
- naming convention as the one you would like to have in the
- generated code. Alternatively, you can use the
- <code><b>--*-regex</b></code> options (discussed below)
- to perform further transformations on the names that come from
- the schema.</p>
-
- <p>The
- <code><b>--type-regex</b></code>,
- <code><b>--accessor-regex</b></code>,
- <code><b>--one-accessor-regex</b></code>,
- <code><b>--opt-accessor-regex</b></code>,
- <code><b>--seq-accessor-regex</b></code>,
- <code><b>--modifier-regex</b></code>,
- <code><b>--one-modifier-regex</b></code>,
- <code><b>--opt-modifier-regex</b></code>,
- <code><b>--seq-modifier-regex</b></code>,
- <code><b>--parser-regex</b></code>,
- <code><b>--serializer-regex</b></code>,
- <code><b>--const-regex</b></code>,
- <code><b>--enumerator-regex</b></code>, and
- <code><b>--element-type-regex</b></code> options allow you to
- specify extra regular expressions for each name category in
- addition to the predefined set that is added depending on
- the <code><b>--type-naming</b></code> and
- <code><b>--function-naming</b></code> options. Expressions
- that are provided with the <code><b>--*-regex</b></code>
- options are evaluated prior to any predefined expressions.
- This allows you to selectively override some or all of the
- predefined transformations. When debugging your own expressions,
- it is often useful to see which expressions match which names.
- The <code><b>--name-regex-trace</b></code> option allows you
- to trace the process of applying regular expressions to
- names.</p>
-
- <p>The value for the <code><b>--*-regex</b></code> options should be
- a perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>.
- Any character can be used as a delimiter instead of <code><b>/</b></code>.
- Escaping of the delimiter character in <code><i>pattern</i></code> or
- <code><i>replacement</i></code> is not supported.
- All the regular expressions for each category are pushed into a
- category-specific stack with the last specified expression
- considered first. The first match that succeeds is used. For the
- <code><b>--one-accessor-regex</b></code> (accessors with cardinality one),
- <code><b>--opt-accessor-regex</b></code> (accessors with cardinality optional), and
- <code><b>--seq-accessor-regex</b></code> (accessors with cardinality sequence)
- categories the <code><b>--accessor-regex</b></code> expressions are
- used as a fallback. For the
- <code><b>--one-modifier-regex</b></code>,
- <code><b>--opt-modifier-regex</b></code>, and
- <code><b>--seq-modifier-regex</b></code>
- categories the <code><b>--modifier-regex</b></code> expressions are
- used as a fallback. For the <code><b>--element-type-regex</b></code>
- category the <code><b>--type-regex</b></code> expressions are
- used as a fallback.</p>
-
- <p>The type name expressions (<code><b>--type-regex</b></code>)
- are evaluated on the name string that has the following
- format:</p>
-
- <p><code>[<i>namespace</i> ]<i>name</i>[,<i>name</i>][,<i>name</i>][,<i>name</i>]</code></p>
-
- <p>The element type name expressions
- (<code><b>--element-type-regex</b></code>), effective only when
- the <code><b>--generate-element-type</b></code> option is specified,
- are evaluated on the name string that has the following
- format:</p>
-
- <p><code><i>namespace</i> <i>name</i></code></p>
-
- <p>In the type name format the <code><i>namespace</i></code> part
- followed by a space is only present for global type names. For
- global types and elements defined in schemas without a target
- namespace, the <code><i>namespace</i></code> part is empty but
- the space is still present. In the type name format after the
- initial <code><i>name</i></code> component, up to three additional
- <code><i>name</i></code> components can be present, separated
- by commas. For example:</p>
-
- <p><code><b>http://example.com/hello type</b></code></p>
- <p><code><b>foo</b></code></p>
- <p><code><b>foo,iterator</b></code></p>
- <p><code><b>foo,const,iterator</b></code></p>
-
- <p>The following set of predefined regular expressions is used to
- transform type names when the upper-camel-case naming convention
- is selected:</p>
-
- <p><code><b>/(?:[^ ]* )?([^,]+)/\u$1/</b></code></p>
- <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+)/\u$1\u$2/</b></code></p>
- <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\u$1\u$2\u$3/</b></code></p>
- <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\u$1\u$2\u$3\u$4/</b></code></p>
-
- <p>The accessor and modifier expressions
- (<code><b>--*accessor-regex</b></code> and
- <code><b>--*modifier-regex</b></code>) are evaluated on the name string
- that has the following format:</p>
-
- <p><code><i>name</i>[,<i>name</i>][,<i>name</i>]</code></p>
-
- <p>After the initial <code><i>name</i></code> component, up to two
- additional <code><i>name</i></code> components can be present,
- separated by commas. For example:</p>
-
- <p><code><b>foo</b></code></p>
- <p><code><b>dom,document</b></code></p>
- <p><code><b>foo,default,value</b></code></p>
-
- <p>The following set of predefined regular expressions is used to
- transform accessor names when the <code><b>java</b></code> naming
- convention is selected:</p>
-
- <p><code><b>/([^,]+)/get\u$1/</b></code></p>
- <p><code><b>/([^,]+),([^,]+)/get\u$1\u$2/</b></code></p>
- <p><code><b>/([^,]+),([^,]+),([^,]+)/get\u$1\u$2\u$3/</b></code></p>
-
- <p>For the parser, serializer, and enumerator categories, the
- corresponding regular expressions are evaluated on local names of
- elements and on enumeration values, respectively. For example, the
- following predefined regular expression is used to transform parsing
- function names when the <code><b>java</b></code> naming convention
- is selected:</p>
-
- <p><code><b>/(.+)/parse\u$1/</b></code></p>
-
- <p>The const category is used to create C++ constant names for the
- element/wildcard/text content ids in ordered types.</p>
-
- <p>See also the REGEX AND SHELL QUOTING section below.</p>
-
- <h1>TYPE MAP</h1>
-
- <p>Type map files are used in C++/Parser to define a mapping between
- XML Schema and C++ types. The compiler uses this information
- to determine the return types of <code><b>post_*</b></code>
- functions in parser skeletons corresponding to XML Schema
- types as well as argument types for callbacks corresponding
- to elements and attributes of these types.</p>
-
- <p>The compiler has a set of predefined mapping rules that map
- built-in XML Schema types to suitable C++ types (discussed
- below) and all other types to <code><b>void</b></code>.
- By providing your own type maps you can override these predefined
- rules. The format of the type map file is presented below:
- </p>
-
- <pre>
-namespace &lt;schema-namespace> [&lt;cxx-namespace>]
-{
- (include &lt;file-name>;)*
- ([type] &lt;schema-type> &lt;cxx-ret-type> [&lt;cxx-arg-type>];)*
-}
- </pre>
-
- <p>Both <code><i>&lt;schema-namespace></i></code> and
- <code><i>&lt;schema-type></i></code> are regex patterns while
- <code><i>&lt;cxx-namespace></i></code>,
- <code><i>&lt;cxx-ret-type></i></code>, and
- <code><i>&lt;cxx-arg-type></i></code> are regex pattern
- substitutions. All names can be optionally enclosed in
- <code><b>" "</b></code>, for example, to include white-spaces.</p>
-
- <p><code><i>&lt;schema-namespace></i></code> determines XML
- Schema namespace. Optional <code><i>&lt;cxx-namespace></i></code>
- is prefixed to every C++ type name in this namespace declaration.
- <code><i>&lt;cxx-ret-type></i></code> is a C++ type name that is
- used as a return type for the <code><b>post_*</b></code> functions.
- Optional <code><i>&lt;cxx-arg-type></i></code> is an argument
- type for callback functions corresponding to elements and attributes
- of this type. If
- <code><i>&lt;cxx-arg-type></i></code> is not specified, it defaults
- to <code><i>&lt;cxx-ret-type></i></code> if <code><i>&lt;cxx-ret-type></i></code>
- ends with <code><b>*</b></code> or <code><b>&amp;</b></code> (that is,
- it is a pointer or a reference) and
- <code><b>const</b>&nbsp;<i>&lt;cxx-ret-type></i><b>&amp;</b></code>
- otherwise.
- <code><i>&lt;file-name></i></code> is a file name either in the
- <code><b>" "</b></code> or <code><b>&lt; ></b></code> format
- and is added with the <code><b>#include</b></code> directive to
- the generated code.</p>
-
- <p>The <code><b>#</b></code> character starts a comment that ends
- with a new line or end of file. To specify a name that contains
- <code><b>#</b></code> enclose it in <code><b>" "</b></code>.
- For example:</p>
-
- <pre>
-namespace http://www.example.com/xmlns/my my
-{
- include "my.hxx";
-
- # Pass apples by value.
- #
- apple apple;
-
- # Pass oranges as pointers.
- #
- orange orange_t*;
-}
- </pre>
-
- <p>In the example above, for the
- <code><b>http://www.example.com/xmlns/my#orange</b></code>
- XML Schema type, the <code><b>my::orange_t*</b></code> C++ type will
- be used as both return and argument types.</p>
-
- <p>Several namespace declarations can be specified in a single
- file. The namespace declaration can also be completely
- omitted to map types in a schema without a namespace. For
- instance:</p>
-
- <pre>
-include "my.hxx";
-apple apple;
-
-namespace http://www.example.com/xmlns/my
-{
- orange "const orange_t*";
-}
- </pre>
-
- <p>The compiler has a number of predefined mapping rules that can be
- presented as the following map files. The string-based XML Schema
- built-in types are mapped to either <code><b>std::string</b></code>
- or <code><b>std::wstring</b></code> depending on the character type
- selected with the <code><b>--char-type</b></code> option
- (<code><b>char</b></code> by default).</p>
-
- <pre>
-namespace http://www.w3.org/2001/XMLSchema
-{
- boolean bool bool;
-
- byte "signed char" "signed char";
- unsignedByte "unsigned char" "unsigned char";
-
- short short short;
- unsignedShort "unsigned short" "unsigned short";
-
- int int int;
- unsignedInt "unsigned int" "unsigned int";
-
- long "long long" "long long";
- unsignedLong "unsigned long long" "unsigned long long";
-
- integer "long long" "long long";
-
- negativeInteger "long long" "long long";
- nonPositiveInteger "long long" "long long";
-
- positiveInteger "unsigned long long" "unsigned long long";
- nonNegativeInteger "unsigned long long" "unsigned long long";
-
- float float float;
- double double double;
- decimal double double;
-
- string std::string;
- normalizedString std::string;
- token std::string;
- Name std::string;
- NMTOKEN std::string;
- NCName std::string;
- ID std::string;
- IDREF std::string;
- language std::string;
- anyURI std::string;
-
- NMTOKENS xml_schema::string_sequence;
- IDREFS xml_schema::string_sequence;
-
- QName xml_schema::qname;
-
- base64Binary std::auto_ptr&lt;xml_schema::buffer>
- std::auto_ptr&lt;xml_schema::buffer>;
- hexBinary std::auto_ptr&lt;xml_schema::buffer>
- std::auto_ptr&lt;xml_schema::buffer>;
-
- date xml_schema::date;
- dateTime xml_schema::date_time;
- duration xml_schema::duration;
- gDay xml_schema::gday;
- gMonth xml_schema::gmonth;
- gMonthDay xml_schema::gmonth_day;
- gYear xml_schema::gyear;
- gYearMonth xml_schema::gyear_month;
- time xml_schema::time;
-}
- </pre>
-
- <p>The last predefined rule maps anything that wasn't mapped by
- previous rules to <code><b>void</b></code>:</p>
-
- <pre>
-namespace .*
-{
- .* void void;
-}
- </pre>
-
-
- <p>When you provide your own type maps with the
- <code><b>--type-map</b></code> option, they are evaluated first.
- This allows you to selectively override predefined rules.</p>
-
- <h1>REGEX AND SHELL QUOTING</h1>
-
- <p>When entering a regular expression argument in the shell
- command line it is often necessary to use quoting (enclosing
- the argument in <code><b>"&nbsp;"</b></code> or
- <code><b>'&nbsp;'</b></code>) in order to prevent the shell
- from interpreting certain characters, for example, spaces as
- argument separators and <code><b>$</b></code> as variable
- expansions.</p>
-
- <p>Unfortunately it is hard to achieve this in a manner that is
- portable across POSIX shells, such as those found on
- GNU/Linux and UNIX, and Windows shell. For example, if you
- use <code><b>"&nbsp;"</b></code> for quoting you will get a
- wrong result with POSIX shells if your expression contains
- <code><b>$</b></code>. The standard way of dealing with this
- on POSIX systems is to use <code><b>'&nbsp;'</b></code> instead.
- Unfortunately, Windows shell does not remove <code><b>'&nbsp;'</b></code>
- from arguments when they are passed to applications. As a result you
- may have to use <code><b>'&nbsp;'</b></code> for POSIX and
- <code><b>"&nbsp;"</b></code> for Windows (<code><b>$</b></code> is
- not treated as a special character on Windows).</p>
-
- <p>Alternatively, you can save regular expression options into
- a file, one option per line, and use this file with the
- <code><b>--options-file</b></code> option. With this approach
- you don't need to worry about shell quoting.</p>
-
- <h1>DIAGNOSTICS</h1>
-
- <p>If the input file is not a valid W3C XML Schema definition,
- <code><b>xsd</b></code> will issue diagnostic messages to STDERR
- and exit with non-zero exit code.</p>
-
- <h1>BUGS</h1>
-
- <p>Send bug reports to the
- <a href="mailto:xsd-users@codesynthesis.com">xsd-users@codesynthesis.com</a> mailing list.</p>
-
- </div>
- <div id="footer">
- &copy;2005-2014 <a href="http://codesynthesis.com">CODE SYNTHESIS TOOLS CC</a>
-
- <div id="terms">
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- <a href="http://codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
- Documentation License, version 1.2</a>; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- </div>
- </div>
-</div>
-</body>
-</html>
diff --git a/xsd/doc/xsd-prologue.1 b/xsd/doc/xsd-prologue.1
deleted file mode 100644
index f5c93b8..0000000
--- a/xsd/doc/xsd-prologue.1
+++ /dev/null
@@ -1,119 +0,0 @@
-.\" Process this file with
-.\" groff -man -Tascii xsd.1
-.\"
-.TH XSD 1 "July 2014" "XSD 4.0.0"
-.SH NAME
-xsd \- W3C XML Schema to C++ Compiler
-.\"
-.\"
-.\"
-.\"--------------------------------------------------------------------
-.SH SYNOPSIS
-.\"--------------------------------------------------------------------
-.B xsd
-.I command
-.B [
-.I options
-.B ]
-.I file
-.B [
-.I file
-.B ...]
-.in
-.B xsd help
-.B [
-.I command
-.B ]
-.in
-.B xsd version
-.\"
-.\"
-.\"
-.\"--------------------------------------------------------------------
-.SH DESCRIPTION
-.\"--------------------------------------------------------------------
-.B xsd
-generates vocabulary-specific, statically-typed C++ mapping from W3C XML
-Schema definitions. Particular mapping to produce is selected by a
-.IR command .
-Each mapping has a number of mapping-specific
-.I options
-that should appear, if any, after the
-.IR command .
-Input files should be W3C XML Schema definitions. The exact set of the
-generated files depends on the selected mapping and options.
-.\"
-.\"
-.\"
-.\"--------------------------------------------------------------------
-.SH COMMANDS
-.\"--------------------------------------------------------------------
-.IP \fBcxx-tree\fR
-Generate the C++/Tree mapping. For each input file in the form
-.B name.xsd
-the following C++ files are generated:
-.B name.hxx
-(header file),
-.B name.ixx
-(inline file, generated only if the
-.B --generate-inline
-option is specified),
-.B name.cxx
-(source file), and
-.B name-fwd.hxx
-(forward declaration file, generated only if the
-.B --generate-forward
-option is specified).
-
-.IP \fBcxx-parser\fR
-Generate the C++/Parser mapping. For each input file in the form
-.B name.xsd
-the following C++ files are generated:
-.B name-pskel.hxx
-(parser skeleton header file),
-.B name-pskel.ixx
-(parser skeleton inline file, generated only if the
-.B --generate-inline
-option is specified), and
-.B name-pskel.cxx
-(parser skeleton source file). If the
-.B --generate-noop-impl
-or
-.B --generate-print-impl
-option is specified, the following additional sample implementation files
-are generated:
-.B name-pimpl.hxx
-(parser implementation header file) and
-.B name-pimpl.cxx
-(parser implementation source file). If the
-.B --generate-test-driver
-option is specified, the additional
-.B name-driver.cxx
-test driver file is generated.
-
-.IP \fBhelp\fR
-Print usage information and exit. Use
-.PP
-.RS
-.RS 3
-.B xsd help
-.I command
-.RE
-.PP
-for command-specific help.
-.RE
-.IP \fBversion\fR
-Print version and exit.
-.\"--------------------------------------------------------------------
-.SH OPTIONS
-.\"--------------------------------------------------------------------
-Command-specific
-.IR options ,
-if any, should appear after the corresponding
-.IR command .
-
-.\"
-.\" Common options.
-.\"
-.SS common options
-.
diff --git a/xsd/doc/xsd-prologue.xhtml b/xsd/doc/xsd-prologue.xhtml
deleted file mode 100644
index 4be8de7..0000000
--- a/xsd/doc/xsd-prologue.xhtml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
-
-<head>
- <title>XSD 4.0.0 Compiler Command Line Manual</title>
-
- <meta name="copyright" content="&copy; 2005-2014 Code Synthesis Tools CC"/>
- <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,code,generator,manual,man,page"/>
- <meta name="description" content="XSD Compiler Command Line Manual"/>
-
- <link rel="stylesheet" type="text/css" href="default.css" />
-
-<style type="text/css">
-
- #synopsis {
- list-style-type: none;
- }
-
- #synopsis li {
- padding-top : 0.0em;
- padding-bottom : 0.0em;
- }
-
- #commands dt {
- padding-top : 0.4em;
- }
-
- #commands dd {
- padding-bottom : 0.4em;
- padding-left : 2em;
- }
-
- .options dt {
- padding-top : 0.4em;
- }
-
- .options dd {
- padding-top : 0.1em;
- padding-bottom : 0.4em;
- padding-left : 1.4em;
- }
-
-</style>
-</head>
-
-<body>
-<div id="container">
- <div id="content">
-
- <h1>NAME</h1>
-
- <p>xsd - W3C XML Schema to C++ Compiler</p>
-
- <h1>SYNOPSIS</h1>
-
- <dl id="synopsis">
- <dt><code><b>xsd</b> <i>command</i> [<i>options</i>] <i>file</i> [<i>file</i> ...]</code></dt>
- <dt><code><b>xsd help</b> [<i>command</i>]</code></dt>
- <dt><code><b>xsd version</b></code></dt>
- </dl>
-
- <h1>DESCRIPTION</h1>
-
- <p><code><b>xsd</b></code> generates vocabulary-specific, statically-typed
- C++ mapping from W3C XML Schema definitions. Particular mapping to
- produce is selected by a <code><i>command</i></code>. Each mapping has
- a number of mapping-specific <code><i>options</i></code> that should
- appear, if any, after the <code><i>command</i></code>. Input files should
- be W3C XML Schema definitions. The exact set of the generated files depends
- on the selected mapping and options.</p>
-
- <h1>COMMANDS</h1>
-
- <dl id="commands">
- <dt><code><b>cxx-tree</b></code></dt>
- <dd>Generate the C++/Tree mapping. For each input file in the form
- <code><b>name.xsd</b></code> the following C++ files are generated:
- <code><b>name.hxx</b></code> (header file),
- <code><b>name.ixx</b></code> (inline file, generated only if the
- <code><b>--generate-inline</b></code> option is specified),
- <code><b>name.cxx</b></code> (source file), and
- <code><b>name-fwd.hxx</b></code> (forward declaration file, generated
- only if the <code><b>--generate-forward</b></code> option is
- specified).</dd>
-
- <dt><code><b>cxx-parser</b></code></dt>
- <dd>Generate the C++/Parser mapping. For each input file in the form
- <code><b>name.xsd</b></code> the following C++ files are generated:
- <code><b>name-pskel.hxx</b></code> (parser skeleton header file),
- <code><b>name-pskel.ixx</b></code> (parser skeleton inline file,
- generated only if the <code><b>--generate-inline</b></code>
- option is specified), and
- <code><b>name-pskel.cxx</b></code> (parser skeleton source file).
- If the <code><b>--generate-noop-impl</b></code> or
- <code><b>--generate-print-impl</b></code> option is specified,
- the following additional sample implementation files are generated:
- <code><b>name-pimpl.hxx</b></code> (parser implementation header
- file) and
- <code><b>name-pimpl.cxx</b></code> (parser implementation source
- file). If the <code><b>--generate-test-driver</b></code> option
- is specified, the additional <code><b>name-driver.cxx</b></code>
- test driver file is generated.</dd>
-
- <dt><code><b>help</b></code></dt>
- <dd>Print usage information and exit. Use
- <p><code><b>xsd help</b> <i>command</i></code></p>
- for command-specific help.
- </dd>
-
- <dt><code><b>version</b></code></dt>
- <dd>Print version and exit.</dd>
- </dl>
-
- <h1>OPTIONS</h1>
-
- <p>Command-specific <code><i>options</i></code>, if any, should appear
- after the corresponding <code><i>command</i></code>.</p>
-
- <h2>COMMON OPTIONS</h2>
diff --git a/xsd/doc/xsd.1 b/xsd/doc/xsd.1
deleted file mode 100644
index dc5b38a..0000000
--- a/xsd/doc/xsd.1
+++ /dev/null
@@ -1,1648 +0,0 @@
-.\" Process this file with
-.\" groff -man -Tascii xsd.1
-.\"
-.TH XSD 1 "July 2014" "XSD 4.0.0"
-.SH NAME
-xsd \- W3C XML Schema to C++ Compiler
-.\"
-.\"
-.\"
-.\"--------------------------------------------------------------------
-.SH SYNOPSIS
-.\"--------------------------------------------------------------------
-.B xsd
-.I command
-.B [
-.I options
-.B ]
-.I file
-.B [
-.I file
-.B ...]
-.in
-.B xsd help
-.B [
-.I command
-.B ]
-.in
-.B xsd version
-.\"
-.\"
-.\"
-.\"--------------------------------------------------------------------
-.SH DESCRIPTION
-.\"--------------------------------------------------------------------
-.B xsd
-generates vocabulary-specific, statically-typed C++ mapping from W3C XML
-Schema definitions. Particular mapping to produce is selected by a
-.IR command .
-Each mapping has a number of mapping-specific
-.I options
-that should appear, if any, after the
-.IR command .
-Input files should be W3C XML Schema definitions. The exact set of the
-generated files depends on the selected mapping and options.
-.\"
-.\"
-.\"
-.\"--------------------------------------------------------------------
-.SH COMMANDS
-.\"--------------------------------------------------------------------
-.IP \fBcxx-tree\fR
-Generate the C++/Tree mapping. For each input file in the form
-.B name.xsd
-the following C++ files are generated:
-.B name.hxx
-(header file),
-.B name.ixx
-(inline file, generated only if the
-.B --generate-inline
-option is specified),
-.B name.cxx
-(source file), and
-.B name-fwd.hxx
-(forward declaration file, generated only if the
-.B --generate-forward
-option is specified).
-
-.IP \fBcxx-parser\fR
-Generate the C++/Parser mapping. For each input file in the form
-.B name.xsd
-the following C++ files are generated:
-.B name-pskel.hxx
-(parser skeleton header file),
-.B name-pskel.ixx
-(parser skeleton inline file, generated only if the
-.B --generate-inline
-option is specified), and
-.B name-pskel.cxx
-(parser skeleton source file). If the
-.B --generate-noop-impl
-or
-.B --generate-print-impl
-option is specified, the following additional sample implementation files
-are generated:
-.B name-pimpl.hxx
-(parser implementation header file) and
-.B name-pimpl.cxx
-(parser implementation source file). If the
-.B --generate-test-driver
-option is specified, the additional
-.B name-driver.cxx
-test driver file is generated.
-
-.IP \fBhelp\fR
-Print usage information and exit. Use
-.PP
-.RS
-.RS 3
-.B xsd help
-.I command
-.RE
-.PP
-for command-specific help.
-.RE
-.IP \fBversion\fR
-Print version and exit.
-.\"--------------------------------------------------------------------
-.SH OPTIONS
-.\"--------------------------------------------------------------------
-Command-specific
-.IR options ,
-if any, should appear after the corresponding
-.IR command .
-
-.\"
-.\" Common options.
-.\"
-.SS common options
-.
-.\"
-.\" The following documentation was generated by CLI, a command
-.\" line interface compiler for C++.
-.\"
-.IP "\fB--std\fP \fIversion\fP"
-Specify the C++ standard that the generated code should conform to\. Valid
-values are \fBc++98\fP (default) and \fBc++11\fP\.
-
-The C++ standard affects various aspects of the generated code that are
-discussed in more detail in various mapping-specific documentation\.
-Overall, when C++11 is selected, the generated code relies on the move
-semantics and uses \fBstd::unique_ptr\fP instead of deprecated
-\fBstd::auto_ptr\fP\.
-
-When the C++11 mode is selected, you normally don't need to perform any
-extra steps other than enable C++11 in your C++ compiler, if required\. The
-XSD compiler will automatically add the necessary macro defines to the
-generated header files that will switch the header-only XSD runtime library
-(\fBlibxsd\fP) to the C++11 mode\. However, if you include any of the XSD
-runtime headers directly in your application (normally you just include the
-generated headers), then you will need to define the \fBXSD_CXX11\fP macro
-for your entire project\.
-
-.IP "\fB--char-type\fP \fItype\fP"
-Generate code using the provided character \fItype\fP instead of the default
-\fBchar\fP\. Valid values are \fBchar\fP and \fBwchar_t\fP\.
-
-.IP "\fB--char-encoding\fP \fIenc\fP"
-Specify the character encoding that should be used in the generated code\.
-Valid values for the \fBchar\fP character type are \fButf8\fP (default),
-\fBiso8859-1\fP, \fBlcp\fP (Xerces-C++ local code page), and \fBcustom\fP\.
-If you pass \fBcustom\fP as the value then you will need to include the
-transcoder implementation header for your encoding at the beginning of the
-generated header files (see the \fB--hxx-prologue\fP option)\.
-
-For the \fBwchar_t\fP character type the only valid value is \fBauto\fP and
-the encoding is automatically selected between UTF-16 and UTF-32/UCS-4,
-depending on the \fBwchar_t\fP type size\.
-
-.IP "\fB--output-dir\fP \fIdir\fP"
-Write generated files to \fIdir\fP instead of the current directory\.
-
-.IP "\fB--generate-inline\fP"
-Generate simple functions inline\. This option triggers creation of the
-inline file\.
-
-.IP "\fB--generate-xml-schema\fP"
-Generate a C++ header file as if the schema being compiled defines the XML
-Schema namespace\. For the C++/Tree mapping, the resulting file will contain
-definitions for all XML Schema built-in types\. For the C++/Parser mapping,
-the resulting file will contain definitions for all the parser skeletons and
-implementations corresponding to the XML Schema built-in types\.
-
-The schema file provided to the compiler need not exist and is only used to
-derive the name of the resulting header file\. Use the
-\fB--extern-xml-schema\fP option to include this file in the generated files
-for other schemas\.
-
-.IP "\fB--extern-xml-schema\fP \fIfile\fP"
-Include a header file derived from \fIfile\fP instead of generating the XML
-Schema namespace mapping inline\. The provided file need not exist and is
-only used to derive the name of the included header file\. Use the
-\fB--generate-xml-schema\fP option to generate this header file\.
-
-.IP "\fB--namespace-map\fP \fIxns\fP=\fIcns\fP"
-Map XML Schema namespace \fIxns\fP to C++ namespace \fIcns\fP\. Repeat this
-option to specify mapping for more than one XML Schema namespace\. For
-example, the following option:
-
-\fB--namespace-map http://example\.com/foo/bar=foo::bar\fP
-
-Will map the \fBhttp://example\.com/foo/bar\fP XML Schema namespace to the
-\fBfoo::bar\fP C++ namespace\.
-
-.IP "\fB--namespace-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema namespace names to C++ namespace names\. \fIregex\fP is a Perl-like
-regular expression in the form
-\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Any character can be
-used as a delimiter instead of \fB/\fP\. Escaping of the delimiter character
-in \fIpattern\fP or \fIreplacement\fP is not supported\.
-
-All the regular expressions are pushed into a stack with the last specified
-expression considered first\. The first match that succeeds is used\.
-Regular expressions are applied to a string in the form
-
-\fIfilename\fP \fInamespace\fP
-
-For example, if you have file \fBhello\.xsd\fP with namespace
-\fBhttp://example\.com/hello\fP and you run \fBxsd\fP on this file, then the
-string in question will be:
-
-\fBhello\.xsd\. http://example\.com/hello\fP
-
-For the built-in XML Schema namespace the string is:
-
-\fBXMLSchema\.xsd http://www\.w3\.org/2001/XMLSchema\fP
-
-The following three steps are performed for each regular expression until
-the match is found:
-
-1\. The expression is applied and if the result is empty the next expression
-is considered\.
-
-2\. All \fB/\fP are replaced with \fB::\fP\.
-
-3\. The result is verified to be a valid C++ scope name (e\.g\.,
-\fBfoo::bar\fP)\. If this test succeeds, the result is used as a C++
-namespace name\.
-
-As an example, the following expression maps XML Schema namespaces in the
-form \fBhttp://example\.com/foo/bar\fP to C++ namespaces in the form
-\fBfoo::bar\fP:
-
-\fB%\.* http://example\.com/(\.+)%$1%\fP
-
-See also the REGEX AND SHELL QUOTING section below\.
-
-.IP "\fB--namespace-regex-trace\fP"
-Trace the process of applying regular expressions specified with the
-\fB--namespace-regex\fP option\. Use this option to find out why your
-regular expressions don't do what you expected them to do\.
-
-.IP "\fB--reserved-name\fP \fIn\fP[=\fIr\fP]"
-Add name \fIn\fP to the list of names that should not be used as
-identifiers\. The name can optionally be followed by \fB=\fP and the
-replacement name \fIr\fP that should be used instead\. All the C++ keywords
-are already in this list\.
-
-.IP "\fB--include-with-brackets\fP"
-Use angle brackets (<>) instead of quotes ("") in generated \fB#include\fP
-directives\.
-
-.IP "\fB--include-prefix\fP \fIprefix\fP"
-Add \fIprefix\fP to generated \fB#include\fP directive paths\.
-
-For example, if you had the following import element in your schema
-
-\fB<import namespace="\.\.\." schemaLocation="base\.xsd"/>\fP
-
-and compiled this fragment with \fB--include-prefix schemas/\fP, then the
-include directive in the generated code would be:
-
-\fB#include "schemas/base\.hxx"\fP
-
-.IP "\fB--include-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to transform
-\fB#include\fP directive paths\. \fIregex\fP is a Perl-like regular
-expression in the form \fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\.
-Any character can be used as a delimiter instead of \fB/\fP\. Escaping of
-the delimiter character in \fIpattern\fP or \fIreplacement\fP is not
-supported\.
-
-All the regular expressions are pushed into a stack with the last specified
-expression considered first\. The first match that succeeds is used\.
-
-As an example, the following expression transforms paths in the form
-\fBschemas/foo/bar\fP to paths in the form \fBgenerated/foo/bar\fP:
-
-\fB%schemas/(\.+)%generated/$1%\fP
-
-See also the REGEX AND SHELL QUOTING section below\.
-
-.IP "\fB--include-regex-trace\fP"
-Trace the process of applying regular expressions specified with the
-\fB--include-regex\fP option\. Use this option to find out why your regular
-expressions don't do what you expected them to do\.
-
-.IP "\fB--guard-prefix\fP \fIprefix\fP"
-Add \fIprefix\fP to generated header inclusion guards\. The prefix is
-transformed to upper case and characters that are illegal in a preprocessor
-macro name are replaced with underscores\. If this option is not specified
-then the directory part of the input schema file is used as a prefix\.
-
-.IP "\fB--hxx-suffix\fP \fIsuffix\fP"
-Use the provided \fIsuffix\fP instead of the default \fB\.hxx\fP to
-construct the name of the header file\. Note that this suffix is also used
-to construct names of header files corresponding to included/imported
-schemas\.
-
-.IP "\fB--ixx-suffix\fP \fIsuffix\fP"
-Use the provided \fIsuffix\fP instead of the default \fB\.ixx\fP to
-construct the name of the inline file\.
-
-.IP "\fB--cxx-suffix\fP \fIsuffix\fP"
-Use the provided \fIsuffix\fP instead of the default \fB\.cxx\fP to
-construct the name of the source file\.
-
-.IP "\fB--fwd-suffix\fP \fIsuffix\fP"
-Use the provided \fIsuffix\fP instead of the default \fB-fwd\.hxx\fP to
-construct the name of the forward declaration file\.
-
-.IP "\fB--hxx-regex\fP \fIregex\fP"
-Use the provided expression to construct the name of the header file\.
-\fIregex\fP is a Perl-like regular expression in the form
-\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Note that this
-expression is also used to construct names of header files corresponding to
-included/imported schemas\. See also the REGEX AND SHELL QUOTING section
-below\.
-
-.IP "\fB--ixx-regex\fP \fIregex\fP"
-Use the provided expression to construct the name of the inline file\.
-\fIregex\fP is a Perl-like regular expression in the form
-\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. See also the REGEX AND
-SHELL QUOTING section below\.
-
-.IP "\fB--cxx-regex\fP \fIregex\fP"
-Use the provided expression to construct the name of the source file\.
-\fIregex\fP is a Perl-like regular expression in the form
-\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. See also the REGEX AND
-SHELL QUOTING section below\.
-
-.IP "\fB--fwd-regex\fP \fIregex\fP"
-Use the provided expression to construct the name of the forward declaration
-file\. \fIregex\fP is a Perl-like regular expression in the form
-\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. See also the REGEX AND
-SHELL QUOTING section below\.
-
-.IP "\fB--hxx-prologue\fP \fItext\fP"
-Insert \fItext\fP at the beginning of the header file\.
-
-.IP "\fB--ixx-prologue\fP \fItext\fP"
-Insert \fItext\fP at the beginning of the inline file\.
-
-.IP "\fB--cxx-prologue\fP \fItext\fP"
-Insert \fItext\fP at the beginning of the source file\.
-
-.IP "\fB--fwd-prologue\fP \fItext\fP"
-Insert \fItext\fP at the beginning of the forward declaration file\.
-
-.IP "\fB--prologue\fP \fItext\fP"
-Insert \fItext\fP at the beginning of each generated file for which there is
-no file-specific prologue\.
-
-.IP "\fB--hxx-epilogue\fP \fItext\fP"
-Insert \fItext\fP at the end of the header file\.
-
-.IP "\fB--ixx-epilogue\fP \fItext\fP"
-Insert \fItext\fP at the end of the inline file\.
-
-.IP "\fB--cxx-epilogue\fP \fItext\fP"
-Insert \fItext\fP at the end of the source file\.
-
-.IP "\fB--fwd-epilogue\fP \fItext\fP"
-Insert \fItext\fP at the end of the forward declaration file\.
-
-.IP "\fB--epilogue\fP \fItext\fP"
-Insert \fItext\fP at the end of each generated file for which there is no
-file-specific epilogue\.
-
-.IP "\fB--hxx-prologue-file\fP \fIfile\fP"
-Insert the content of the \fIfile\fP at the beginning of the header file\.
-
-.IP "\fB--ixx-prologue-file\fP \fIfile\fP"
-Insert the content of the \fIfile\fP at the beginning of the inline file\.
-
-.IP "\fB--cxx-prologue-file\fP \fIfile\fP"
-Insert the content of the \fIfile\fP at the beginning of the source file\.
-
-.IP "\fB--fwd-prologue-file\fP \fIfile\fP"
-Insert the content of the \fIfile\fP at the beginning of the forward
-declaration file\.
-
-.IP "\fB--prologue-file\fP \fIfile\fP"
-Insert the content of the \fIfile\fP at the beginning of each generated file
-for which there is no file-specific prologue file\.
-
-.IP "\fB--hxx-epilogue-file\fP \fIfile\fP"
-Insert the content of the \fIfile\fP at the end of the header file\.
-
-.IP "\fB--ixx-epilogue-file\fP \fIfile\fP"
-Insert the content of the \fIfile\fP at the end of the inline file\.
-
-.IP "\fB--cxx-epilogue-file\fP \fIfile\fP"
-Insert the content of the \fIfile\fP at the end of the source file\.
-
-.IP "\fB--fwd-epilogue-file\fP \fIfile\fP"
-Insert the content of the \fIfile\fP at the end of the forward declaration
-file\.
-
-.IP "\fB--epilogue-file\fP \fIfile\fP"
-Insert the content of the \fIfile\fP at the end of each generated file for
-which there is no file-specific epilogue file\.
-
-.IP "\fB--export-symbol\fP \fIsymbol\fP"
-Insert \fIsymbol\fP in places where DLL export/import control statements
-(\fB__declspec(dllexport/dllimport)\fP) are necessary\.
-
-.IP "\fB--export-xml-schema\fP"
-Export/import types in the XML Schema namespace using the export symbol
-provided with the \fB--export-symbol\fP option\. The \fBXSD_NO_EXPORT\fP
-macro can be used to omit this code during C++ compilation, which may be
-useful if you would like to use the same generated code across multiple
-platforms\.
-
-.IP "\fB--export-maps\fP"
-Export polymorphism support maps from a Win32 DLL into which this generated
-code is placed\. This is necessary when your type hierarchy is split across
-several DLLs since otherwise each DLL will have its own set of maps\. In
-this situation the generated code for the DLL which contains base types
-and/or substitution group heads should be compiled with this option and the
-generated code for all other DLLs should be compiled with
-\fB--import-maps\fP\. This option is only valid together with
-\fB--generate-polymorphic\fP\. The \fBXSD_NO_EXPORT\fP macro can be used to
-omit this code during C++ compilation, which may be useful if you would like
-to use the same generated code across multiple platforms\.
-
-.IP "\fB--import-maps\fP"
-Import polymorphism support maps to a Win32 DLL or executable into which
-this generated code is linked\. See the \fB--export-maps\fP option
-documentation for details\. This options is only valid together with
-\fB--generate-polymorphic\fP\. The \fBXSD_NO_EXPORT\fP macro can be used to
-omit this code during C++ compilation, which may be useful if you would like
-to use the same generated code across multiple platforms\.
-
-.IP "\fB--generate-dep\fP"
-Generate \fBmake\fP dependency information\. This option triggers the
-creation of the \fB\.d\fP file containing the dependencies of the generated
-files on the main schema file as well as all the schema files that it
-includes/imports, transitively\. This dependency file is then normally
-included into the main \fBmakefile\fP to implement automatic dependency
-tracking\.
-
-Note also that automatic dependency generation is not supported in the
-file-per-type mode (\fB--file-per-type\fP)\. In this case, all the generated
-files are produced with a single compiler invocation and depend on all the
-schemas\. As a result, it is easier to establish such a dependency manually,
-perhaps with the help of the \fB--file-list*\fP options\.
-
-.IP "\fB--generate-dep-only\fP"
-Generate \fBmake\fP dependency information only\.
-
-.IP "\fB--dep-phony\fP"
-Generate phony targets for included/imported schema files, causing each to
-depend on nothing\. Such dummy rules work around \fBmake\fP errors caused by
-the removal of schema files without also updating the dependency file to
-match\.
-
-.IP "\fB--dep-target\fP \fItarget\fP"
-Change the target of the dependency rule\. By default it contains all the
-generated C++ files as well as the dependency file itself, without any
-directory prefixes\. If you require multiple targets, then you can specify
-them as a single, space-separated argument or you can repeat this option
-multiple times\.
-
-.IP "\fB--dep-suffix\fP \fIsuffix\fP"
-Use the provided \fIsuffix\fP instead of the default \fB\.d\fP to construct
-the name of the dependency file\.
-
-.IP "\fB--dep-regex\fP \fIregex\fP"
-Use the provided expression to construct the name of the dependency file\.
-\fIregex\fP is a Perl-like regular expression in the form
-\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. See also the REGEX AND
-SHELL QUOTING section below\.
-
-.IP "\fB--disable-warning\fP \fIwarn\fP"
-Disable printing warning with id \fIwarn\fP\. If \fBall\fP is specified for
-the warning id then all warnings are disabled\.
-
-.IP "\fB--options-file\fP \fIfile\fP"
-Read additional options from \fIfile\fP\. Each option should appearing on a
-separate line optionally followed by space and an option value\. Empty lines
-and lines starting with \fB#\fP are ignored\. Option values can be enclosed
-in double (\fB"\fP) or single (\fB'\fP) quotes to preserve leading and
-trailing whitespaces as well as to specify empty values\. If the value
-itself contains trailing or leading quotes, enclose it with an extra pair of
-quotes, for example \fB'"x"'\fP\. Non-leading and non-trailing quotes are
-interpreted as being part of the option value\.
-
-The semantics of providing options in a file is equivalent to providing the
-same set of options in the same order on the command line at the point where
-the \fB--options-file\fP option is specified except that the shell escaping
-and quoting is not required\. You can repeat this option to specify more
-than one options file\.
-
-.IP "\fB--show-sloc\fP"
-Show the number of generated physical source lines of code (SLOC)\.
-
-.IP "\fB--sloc-limit\fP \fInum\fP"
-Check that the number of generated physical source lines of code (SLOC) does
-not exceed \fInum\fP\.
-
-.IP "\fB--proprietary-license\fP"
-Indicate that the generated code is licensed under a proprietary license
-instead of the GPL\.
-
-.IP "\fB--custom-literals\fP \fIfile\fP"
-Load custom XML string to C++ literal mappings from \fIfile\fP\. This
-mechanism can be useful if you are using a custom character encoding and
-some of the strings in your schemas, for example element/attribute names or
-enumeration values, contain non-ASCII characters\. In this case you will
-need to provide a custom mapping to C++ literals for such strings\. The
-format of this file is specified in the \fBcustom-literals\.xsd\fP XML
-Schema file that can be found in the documentation directory\.
-
-.IP "\fB--preserve-anonymous\fP"
-Preserve anonymous types\. By default anonymous types are automatically
-named with names derived from the enclosing elements/attributes\. Because
-mappings implemented by this compiler require all types to be named, this
-option is only useful if you want to make sure your schemas don't have
-anonymous types\.
-
-.IP "\fB--show-anonymous\fP"
-Show elements and attributes that are of anonymous types\. This option only
-makes sense together with the \fB--preserve-anonymous\fP option\.
-
-.IP "\fB--anonymous-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to derive names for
-anonymous types from the enclosing attributes/elements\. \fIregex\fP is a
-Perl-like regular expression in the form
-\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Any character can be
-used as a delimiter instead of \fB/\fP\. Escaping of the delimiter character
-in \fIpattern\fP or \fIreplacement\fP is not supported\.
-
-All the regular expressions are pushed into a stack with the last specified
-expression considered first\. The first match that succeeds is used\.
-Regular expressions are applied to a string in the form
-
-\fIfilename\fP \fInamespace\fP \fIxpath\fP
-
-For instance:
-
-\fBhello\.xsd http://example\.com/hello element\fP
-
-\fBhello\.xsd http://example\.com/hello type/element\fP
-
-As an example, the following expression makes all the derived names start
-with capital letters\. This could be useful when your naming convention
-requires type names to start with capital letters:
-
-\fB%\.* \.* (\.+/)*(\.+)%\eu$2%\fP
-
-See also the REGEX AND SHELL QUOTING section below\.
-
-.IP "\fB--anonymous-regex-trace\fP"
-Trace the process of applying regular expressions specified with the
-\fB--anonymous-regex\fP option\. Use this option to find out why your
-regular expressions don't do what you expected them to do\.
-
-.IP "\fB--location-map\fP \fIol\fP=\fInl\fP"
-Map the original schema location \fIol\fP that is specified in the XML
-Schema include or import elements to new schema location \fInl\fP\. Repeat
-this option to map more than one schema location\. For example, the
-following option maps the \fBhttp://example\.com/foo\.xsd\fP URL to the
-\fBfoo\.xsd\fP local file\.
-
-\fB--location-map http://example\.com/foo\.xsd=foo\.xsd\fP
-
-.IP "\fB--location-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to map schema
-locations that are specified in the XML Schema include or import elements\.
-\fIregex\fP is a Perl-like regular expression in the form
-\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Any character can be
-used as a delimiter instead of \fB/\fP\. Escaping of the delimiter character
-in \fIpattern\fP or \fIreplacement\fP is not supported\. All the regular
-expressions are pushed into a stack with the last specified expression
-considered first\. The first match that succeeds is used\.
-
-For example, the following expression maps URL locations in the form
-\fBhttp://example\.com/foo/bar\.xsd\fP to local files in the form
-\fBbar\.xsd\fP:
-
-\fB%http://\.+/(\.+)%$1%\fP
-
-See also the REGEX AND SHELL QUOTING section below\.
-
-.IP "\fB--location-regex-trace\fP"
-Trace the process of applying regular expressions specified with the
-\fB--location-regex\fP option\. Use this option to find out why your regular
-expressions don't do what you expected them to do\.
-
-.IP "\fB--file-per-type\fP"
-Generate a separate set of C++ files for each type defined in XML Schema\.
-Note that in this mode you only need to compile the root schema(s) and the
-code will be generated for all included and imported schemas\. This
-compilation mode is primarily useful when some of your schemas cannot be
-compiled separately or have cyclic dependencies which involve type
-inheritance\. Other options related to this mode are:
-\fB--type-file-regex\fP, \fB--schema-file-regex\fP, \fB--fat-type-file\fP,
-and \fB--file-list\fP\.
-
-.IP "\fB--type-file-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate type
-names to file names when the \fB--file-per-type\fP option is specified\.
-\fIregex\fP is a Perl-like regular expression in the form
-\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Any character can be
-used as a delimiter instead of \fB/\fP\. Escaping of the delimiter character
-in \fIpattern\fP or \fIreplacement\fP is not supported\. All the regular
-expressions are pushed into a stack with the last specified expression
-considered first\. The first match that succeeds is used\. Regular
-expressions are applied to a string in the form
-
-\fInamespace\fP \fItype-name\fP
-
-For example, the following expression maps type \fBfoo\fP that is defined in
-the \fBhttp://example\.com/bar\fP namespace to file name \fBbar-foo\fP:
-
-\fB%http://example\.com/(\.+) (\.+)%$1-$2%\fP
-
-See also the REGEX AND SHELL QUOTING section below\.
-
-.IP "\fB--type-file-regex-trace\fP"
-Trace the process of applying regular expressions specified with the
-\fB--type-file-regex\fP option\. Use this option to find out why your
-regular expressions don't do what you expected them to do\.
-
-.IP "\fB--schema-file-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate schema
-file names when the \fB--file-per-type\fP option is specified\. \fIregex\fP
-is a Perl-like regular expression in the form
-\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Any character can be
-used as a delimiter instead of \fB/\fP\. Escaping of the delimiter character
-in \fIpattern\fP or \fIreplacement\fP is not supported\. All the regular
-expressions are pushed into a stack with the last specified expression
-considered first\. The first match that succeeds is used\. Regular
-Expressions are applied to the absolute filesystem path of a schema file and
-the result, including the directory part, if any, is used to derive the
-\fB#include\fP directive paths as well as the generated C++ file paths\.
-This option, along with \fB--type-file-regex\fP are primarily useful to
-place the generated files into subdirectories or to resolve file name
-conflicts\.
-
-For example, the following expression maps schema files in the
-\fBfoo/1\.0\.0/\fP subdirectory to the files in the \fBfoo/\fP
-subdirectory\. As a result, the \fB#include\fP directive paths for such
-schemas will be in the \fBfoo/schema\.hxx\fP form and the generated C++
-files will be placed into the \fBfoo/\fP subdirectory:
-
-\fB%\.*/foo/1\.0\.0/(\.+)%foo/$1%\fP
-
-See also the REGEX AND SHELL QUOTING section below\.
-
-.IP "\fB--schema-file-regex-trace\fP"
-Trace the process of applying regular expressions specified with the
-\fB--schema-file-regex\fP option\. Use this option to find out why your
-regular expressions don't do what you expected them to do\.
-
-.IP "\fB--fat-type-file\fP"
-Generate code corresponding to global elements into type files instead of
-schema files when the \fB--type-file-regex\fP option is specified\. This
-option is primarily useful when trying to minimize the amount of object code
-that is linked to an executable by packaging compiled generated code into a
-static (archive) library\.
-
-.IP "\fB--file-list\fP \fIfile\fP"
-Write a list of generated C++ files to \fIfile\fP\. This option is primarily
-useful in the file-per-type compilation mode (\fB--file-per-type\fP) to
-create a list of generated C++ files, for example, as a makefile fragment\.
-
-.IP "\fB--file-list-prologue\fP \fItext\fP"
-Insert \fItext\fP at the beginning of the file list\. As a convenience, all
-occurrences of the \fB\en\fP character sequence in \fItext\fP are replaced
-with new lines\. This option can, for example, be used to assign the
-generated file list to a makefile variable\.
-
-.IP "\fB--file-list-epilogue\fP \fItext\fP"
-Insert \fItext\fP at the end of the file list\. As a convenience, all
-occurrences of the \fB\en\fP character sequence in \fItext\fP are replaced
-with new lines\.
-
-.IP "\fB--file-list-delim\fP \fItext\fP"
-Delimit file names written to the file list with \fItext\fP instead of new
-lines\. As a convenience, all occurrences of the \fB\en\fP character
-sequence in \fItext\fP are replaced with new lines\.
-
-.\"
-.\" C++/Tree options.
-.\"
-.SS cxx-tree command options
-.\"
-.\" The following documentation was generated by CLI, a command
-.\" line interface compiler for C++.
-.\"
-.IP "\fB--generate-polymorphic\fP"
-Generate polymorphism-aware code\. Specify this option if you use
-substitution groups or \fBxsi:type\fP\. Use the \fB--polymorphic-type\fP or
-\fB--polymorphic-type-all\fP option to specify which type hierarchies are
-polymorphic\.
-
-.IP "\fB--polymorphic-type\fP \fItype\fP"
-Indicate that \fItype\fP is a root of a polymorphic type hierarchy\. The
-compiler can often automatically determine which types are polymorphic based
-on the substitution group declarations\. However, you may need to use this
-option if you are not using substitution groups or if substitution groups
-are defined in another schema\. You need to specify this option when
-compiling every schema file that references \fItype\fP\. The \fItype\fP
-argument is an XML Schema type name that can be optionally qualified with a
-namespace in the \fInamespace\fP\fB#\fP\fIname\fP form\.
-
-.IP "\fB--polymorphic-type-all\fP"
-Indicate that all types should be treated as polymorphic\.
-
-.IP "\fB--polymorphic-plate\fP \fInum\fP"
-Specify the polymorphic map plate the generated code should register on\.
-This functionality is primarily useful to segregate multiple schemas that
-define the same polymorphic types\.
-
-.IP "\fB--ordered-type\fP \fItype\fP"
-Indicate that element order in \fItype\fP is significant\. An example would
-be a complex type with unbounded choice as a content model where the element
-order in XML has application-specific semantics\. For ordered types the
-compiler generates a special container data member and a corresponding set
-of accessors and modifiers that are used to capture the order of elements
-and, for mixed content, of text\.
-
-The \fItype\fP argument is an XML Schema type name that can be optionally
-qualified with a namespace in the \fInamespace\fP\fB#\fP\fIname\fP form\.
-Note also that you will need to specify this option when compiling every
-schema file that has other ordered types derived from this type\.
-
-.IP "\fB--ordered-type-derived\fP"
-Automatically treat types derived from ordered bases as also ordered\. This
-is primarily useful if you would like to be able to iterate over the
-complete content using the content order container\.
-
-.IP "\fB--ordered-type-mixed\fP"
-Automatically treat complex types with mixed content as ordered\.
-
-.IP "\fB--ordered-type-all\fP"
-Indicate that element order in all types is significant\.
-
-.IP "\fB--order-container\fP \fItype\fP"
-Specify a custom class template that should be used as a container for the
-content order in ordered types instead of the default \fBstd::vector\fP\.
-See \fB--ordered-type\fP for more information on ordered type\. This option
-is primarily useful if you need to perform more complex lookups in the
-content order container, for example by element id\. In this case, a
-container like Boost multi-index may be more convenient\. Note that if using
-a custom container, you will also most likely need to include the relevant
-headers using the \fB--hxx-prologue*\fP options\.
-
-.IP "\fB--generate-serialization\fP"
-Generate serialization functions\. Serialization functions convert the
-object model back to XML\.
-
-.IP "\fB--generate-ostream\fP"
-Generate ostream insertion operators (\fBoperator<<\fP) for generated
-types\. This allows one to easily print a fragment or the whole object model
-for debugging or logging\.
-
-.IP "\fB--generate-doxygen\fP"
-Generate documentation comments suitable for extraction by the Doxygen
-documentation system\. Documentation from annotations is added to the
-comments if present in the schema\.
-
-.IP "\fB--generate-comparison\fP"
-Generate comparison operators (\fBoperator==\fP and \fBoperator!=\fP) for
-complex types\. Comparison is performed member-wise\.
-
-.IP "\fB--generate-default-ctor\fP"
-Generate default constructors even for types that have required members\.
-Required members of an instance constructed using such a constructor are not
-initialized and accessing them results in undefined behavior\.
-
-.IP "\fB--generate-from-base-ctor\fP"
-Generate constructors that expect an instance of a base type followed by all
-required members\.
-
-.IP "\fB--suppress-assignment\fP"
-Suppress the generation of copy assignment operators for complex types\. If
-this option is specified, the copy assignment operators for such types are
-declared private and left unimplemented\.
-
-.IP "\fB--generate-detach\fP"
-Generate detach functions for required elements and attributes\. Detach
-functions for optional and sequence cardinalities are provided by the
-respective containers\. These functions, for example, allow you to move
-sub-trees in the object model either within the same tree or between
-different trees\.
-
-.IP "\fB--generate-wildcard\fP"
-Generate accessors and modifiers as well as parsing and serialization code
-for XML Schema wildcards (\fBany\fP and \fBanyAttribute\fP)\. XML content
-matched by wildcards is presented as DOM fragments\. Note that you need to
-initialize the Xerces-C++ runtime if you are using this option\.
-
-.IP "\fB--generate-any-type\fP"
-Extract and store content of the XML Schema \fBanyType\fP type as a DOM
-fragment\. Note that you need to initialize the Xerces-C++ runtime if you
-are using this option\.
-
-.IP "\fB--generate-insertion\fP \fIos\fP"
-Generate data representation stream insertion operators for the \fIos\fP
-output stream type\. Repeat this option to specify more than one stream
-type\. The ACE CDR stream (\fBACE_OutputCDR\fP) and RPC XDR are recognized
-by the compiler and the necessary \fB#include\fP directives are
-automatically generated\. For custom stream types use the
-\fB--hxx-prologue*\fP options to provide the necessary declarations\.
-
-.IP "\fB--generate-extraction\fP \fIis\fP"
-Generate data representation stream extraction constructors for the \fIis\fP
-input stream type\. Repeat this option to specify more than one stream
-type\. The ACE CDR stream (\fBACE_InputCDR\fP) and RPC XDR are recognized by
-the compiler and the necessary \fB#include\fP directives are automatically
-generated\. For custom stream types use the \fB--hxx-prologue*\fP options to
-provide the necessary declarations\.
-
-.IP "\fB--generate-forward\fP"
-Generate a separate header file with forward declarations for the types
-being generated\.
-
-.IP "\fB--suppress-parsing\fP"
-Suppress the generation of the parsing functions and constructors\. Use this
-option to reduce the generated code size when parsing from XML is not
-needed\.
-
-.IP "\fB--generate-element-type\fP"
-Generate types instead of parsing and serialization functions for root
-elements\. This is primarily useful to distinguish object models with the
-same root type but with different root elements\.
-
-.IP "\fB--generate-element-map\fP"
-Generate a root element map that allows uniform parsing and serialization of
-multiple root elements\. This option is only valid together with
-\fB--generate-element-type\fP\.
-
-.IP "\fB--generate-intellisense\fP"
-Generate workarounds for IntelliSense bugs in Visual Studio 2005 (8\.0)\.
-When this option is used, the resulting code is slightly more verbose\.
-IntelliSense in Visual Studio 2008 (9\.0) and later does not require these
-workarounds\. Support for IntelliSense in Visual Studio 2003 (7\.1) is
-improved with this option but is still incomplete\.
-
-.IP "\fB--omit-default-attributes\fP"
-Omit attributes with default and fixed values from serialized XML
-documents\.
-
-.IP "\fB--type-naming\fP \fIstyle\fP"
-Specify the type naming convention that should be used in the generated
-code\. Valid styles are \fBknr\fP (default), \fBucc\fP, and \fBjava\fP\. See
-the NAMING CONVENTION section below for more information\.
-
-.IP "\fB--function-naming\fP \fIstyle\fP"
-Specify the function naming convention that should be used in the generated
-code\. Valid styles are \fBknr\fP (default), \fBlcc\fP, and \fBjava\fP\. See
-the NAMING CONVENTION section below for more information\.
-
-.IP "\fB--type-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema type names to C++ type names\. See the NAMING CONVENTION section
-below for more information\.
-
-.IP "\fB--accessor-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema names of elements/attributes to C++ accessor function names\. See the
-NAMING CONVENTION section below for more information\.
-
-.IP "\fB--one-accessor-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema names of elements/attributes with cardinality one to C++ accessor
-function names\. See the NAMING CONVENTION section below for more
-information\.
-
-.IP "\fB--opt-accessor-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema names of elements/attributes with cardinality optional to C++
-accessor function names\. See the NAMING CONVENTION section below for more
-information\.
-
-.IP "\fB--seq-accessor-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema names of elements/attributes with cardinality sequence to C++
-accessor function names\. See the NAMING CONVENTION section below for more
-information\.
-
-.IP "\fB--modifier-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema names of elements/attributes to C++ modifier function names\. See the
-NAMING CONVENTION section below for more information\.
-
-.IP "\fB--one-modifier-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema names of elements/attributes with cardinality one to C++ modifier
-function names\. See the NAMING CONVENTION section below for more
-information\.
-
-.IP "\fB--opt-modifier-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema names of elements/attributes with cardinality optional to C++
-modifier function names\. See the NAMING CONVENTION section below for more
-information\.
-
-.IP "\fB--seq-modifier-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema names of elements/attributes with cardinality sequence to C++
-modifier function names\. See the NAMING CONVENTION section below for more
-information\.
-
-.IP "\fB--parser-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema element names to C++ parsing function names\. See the NAMING
-CONVENTION section below for more information\.
-
-.IP "\fB--serializer-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema element names to C++ serialization function names\. See the NAMING
-CONVENTION section below for more information\.
-
-.IP "\fB--const-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema-derived names to C++ constant names\. See the NAMING CONVENTION
-section below for more information\.
-
-.IP "\fB--enumerator-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema enumeration values to C++ enumerator names\. See the NAMING
-CONVENTION section below for more information\.
-
-.IP "\fB--element-type-regex\fP \fIregex\fP"
-Add \fIregex\fP to the list of regular expressions used to translate XML
-Schema element names to C++ element type names\. See the NAMING CONVENTION
-section below for more information\.
-
-.IP "\fB--name-regex-trace\fP"
-Trace the process of applying regular expressions specified with the name
-transformation options\. Use this option to find out why your regular
-expressions don't do what you expected them to do\.
-
-.IP "\fB--root-element-first\fP"
-Treat only the first global element as a document root\. By default all
-global elements are considered document roots\.
-
-.IP "\fB--root-element-last\fP"
-Treat only the last global element as a document root\. By default all
-global elements are considered document roots\.
-
-.IP "\fB--root-element-all\fP"
-Treat all global elements as document roots\. This is the default behavior\.
-By explicitly specifying this option you can suppress the warning that is
-issued if more than one global element is defined\.
-
-.IP "\fB--root-element-none\fP"
-Do not treat any global elements as document roots\. By default all global
-elements are considered document roots\.
-
-.IP "\fB--root-element\fP \fIelement\fP"
-Treat only \fIelement\fP as a document root\. Repeat this option to specify
-more than one root element\.
-
-.IP "\fB--custom-type\fP \fImap\fP"
-Use a custom C++ type instead of the generated class\. The \fImap\fP
-argument is in the form \fIname\fP[\fB=\fP\fItype\fP[\fB/\fP\fIbase\fP]],
-where \fIname\fP is a type name as defined in XML Schema and \fItype\fP is a
-C++ type name that should be used instead\. If \fItype\fP is not present or
-empty then the custom type is assumed to have the same name and be defined
-in the same namespace as the generated class would have\. If \fIbase\fP is
-specified then the generated class is still generated but with that name\.
-
-.IP "\fB--custom-type-regex\fP \fIregex\fP"
-Use custom C++ types instead of the generated classes\. The \fIregex\fP
-argument is in the form
-\fB/\fP\fIname-pat\fP\fB/\fP[\fItype-sub\fP\fB/\fP[\fIbase-sub\fP\fB/\fP]],
-where \fIname-pat\fP is a regex pattern that will be matched against type
-names as defined in XML Schema and \fItype-sub\fP is a C++ type name
-substitution that should be used instead\. If \fItype-sub\fP is not present
-or its substitution results in an empty string then the custom type is
-assumed to have the same name and be defined in the same namespace as the
-generated class would have\. If \fIbase-sub\fP is present and its
-substitution results in a non-empty string then the generated class is still
-generated but with the result of this substitution as its name\. The pattern
-and substitutions are in the Perl regular expression format\. See also the
-REGEX AND SHELL QUOTING section below\.
-
-.IP "\fB--parts\fP \fInum\fP"
-Split generated source code into \fInum\fP parts\. This is useful when
-translating large, monolithic schemas and a C++ compiler is not able to
-compile the resulting source code at once (usually due to insufficient
-memory)\.
-
-.IP "\fB--parts-suffix\fP \fIsuffix\fP"
-Use \fIsuffix\fP instead of the default '\fB-\fP' to separate the file name
-from the part number\.
-
-\"
-\" C++/Parser
-\"
-.SS cxx-parser command options
-.\"
-.\" The following documentation was generated by CLI, a command
-.\" line interface compiler for C++.
-.\"
-.IP "\fB--type-map\fP \fImapfile\fP"
-Read XML Schema to C++ type mapping information from \fImapfile\fP\. Repeat
-this option to specify several type maps\. Type maps are considered in order
-of appearance and the first match is used\. By default all user-defined
-types are mapped to \fBvoid\fP\. See the TYPE MAP section below for more
-information\.
-
-.IP "\fB--xml-parser\fP \fIparser\fP"
-Use \fIparser\fP as the underlying XML parser\. Valid values are
-\fBxerces\fP for Xerces-C++ (default) and \fBexpat\fP for Expat\.
-
-.IP "\fB--generate-validation\fP"
-Generate validation code\. The validation code ("perfect parser") ensures
-that instance documents conform to the schema\. Validation code is generated
-by default when the selected underlying XML parser is non-validating
-(\fBexpat\fP)\.
-
-.IP "\fB--suppress-validation\fP"
-Suppress the generation of validation code\. Validation is suppressed by
-default when the selected underlying XML parser is validating
-(\fBxerces\fP)\.
-
-.IP "\fB--generate-polymorphic\fP"
-Generate polymorphism-aware code\. Specify this option if you use
-substitution groups or \fBxsi:type\fP\.
-
-.IP "\fB--generate-noop-impl\fP"
-Generate a sample parser implementation that does nothing (no operation)\.
-The sample implementation can then be filled with the application-specific
-code\. For an input file in the form \fBname\.xsd\fP this option triggers
-the generation of two additional C++ files in the form:
-\fBname-pimpl\.hxx\fP (parser implementation header file) and
-\fBname-pimpl\.cxx\fP (parser implementation source file)\.
-
-.IP "\fB--generate-print-impl\fP"
-Generate a sample parser implementation that prints the XML data to STDOUT\.
-For an input file in the form \fBname\.xsd\fP this option triggers the
-generation of two additional C++ files in the form: \fBname-pimpl\.hxx\fP
-(parser implementation header file) and \fBname-pimpl\.cxx\fP (parser
-implementation source file)\.
-
-.IP "\fB--generate-test-driver\fP"
-Generate a test driver for the sample parser implementation\. For an input
-file in the form \fBname\.xsd\fP this option triggers the generation of an
-additional C++ file in the form \fBname-driver\.cxx\fP\.
-
-.IP "\fB--force-overwrite\fP"
-Force overwriting of the existing implementation and test driver files\. Use
-this option only if you do not mind loosing the changes you have made in the
-sample implementation or test driver files\.
-
-.IP "\fB--root-element-first\fP"
-Indicate that the first global element is the document root\. This
-information is used to generate the test driver for the sample
-implementation\.
-
-.IP "\fB--root-element-last\fP"
-Indicate that the last global element is the document root\. This
-information is used to generate the test driver for the sample
-implementation\.
-
-.IP "\fB--root-element\fP \fIelement\fP"
-Indicate that \fIelement\fP is the document root\. This information is used
-to generate the test driver for the sample implementation\.
-
-.IP "\fB--skel-type-suffix\fP \fIsuffix\fP"
-Use the provided \fIsuffix\fP instead of the default \fB_pskel\fP to
-construct the names of the generated parser skeletons\.
-
-.IP "\fB--skel-file-suffix\fP \fIsuffix\fP"
-Use the provided \fIsuffix\fP instead of the default \fB-pskel\fP to
-construct the names of the generated parser skeleton files\.
-
-.IP "\fB--impl-type-suffix\fP \fIsuffix\fP"
-Use the provided \fIsuffix\fP instead of the default \fB_pimpl\fP to
-construct the names of the parser implementations for the built-in XML
-Schema types as well as sample parser implementations\.
-
-.IP "\fB--impl-file-suffix\fP \fIsuffix\fP"
-Use the provided \fIsuffix\fP instead of the default \fB-pimpl\fP to
-construct the names of the generated sample parser implementation files\.
-
-\"
-\" NAMING CONVENTION
-\"
-
-.SH NAMING CONVENTION
-The compiler can be instructed to use a particular naming convention in
-the generated code. A number of widely-used conventions can be selected
-using the
-.B --type-naming
-and
-.B --function-naming
-options. A custom naming convention can be achieved using the
-.BR --type-regex ,
-.BR --accessor-regex ,
-.BR --one-accessor-regex ,
-.BR --opt-accessor-regex ,
-.BR --seq-accessor-regex ,
-.BR --modifier-regex ,
-.BR --one-modifier-regex ,
-.BR --opt-modifier-regex ,
-.BR --seq-modifier-regex ,
-.BR --parser-regex ,
-.BR --serializer-regex ,
-.BR --const-regex ,
-.BR --enumerator-regex ,
-and
-.B --element-type-regex
-options.
-
-The
-.B --type-naming
-option specifies the convention that should be used for naming C++ types.
-Possible values for this option are
-.B knr
-(default),
-.BR ucc ,
-and
-.BR java .
-The
-.B knr
-value (stands for K&R) signifies the standard, lower-case naming convention
-with the underscore used as a word delimiter, for example: foo, foo_bar.
-The
-.B ucc
-(stands for upper-camel-case) and
-.B java
-values a synonyms for the same naming convention where the first letter
-of each word in the name is capitalized, for example: Foo, FooBar.
-
-Similarly, the
-.B --function-naming
-option specifies the convention that should be used for naming C++ functions.
-Possible values for this option are
-.B knr
-(default),
-.BR lcc ,
-and
-.BR java .
-The
-.B knr
-value (stands for K&R) signifies the standard, lower-case naming convention
-with the underscore used as a word delimiter, for example: foo(), foo_bar().
-The
-.B lcc
-value (stands for lower-camel-case) signifies a naming convention where the
-first letter of each word except the first is capitalized, for example: foo(),
-fooBar(). The
-.B java
-naming convention is similar to the lower-camel-case one except that accessor
-functions are prefixed with get, modifier functions are prefixed with set,
-parsing functions are prefixed with parse, and serialization functions are
-prefixed with serialize, for example: getFoo(), setFooBar(), parseRoot(),
-serializeRoot().
-
-Note that the naming conventions specified with the
-.B --type-naming
-and
-.B --function-naming
-options perform only limited transformations on the
-names that come from the schema in the form of type, attribute, and element
-names. In other words, to get consistent results, your schemas should follow
-a similar naming convention as the one you would like to have in the generated
-code. Alternatively, you can use the
-.B --*-regex
-options (discussed below) to perform further transformations on the names
-that come from the schema.
-
-The
-.BR --type-regex ,
-.BR --accessor-regex ,
-.BR --one-accessor-regex ,
-.BR --opt-accessor-regex ,
-.BR --seq-accessor-regex ,
-.BR --modifier-regex ,
-.BR --one-modifier-regex ,
-.BR --opt-modifier-regex ,
-.BR --seq-modifier-regex ,
-.BR --parser-regex ,
-.BR --serializer-regex ,
-.BR --const-regex ,
-.BR --enumerator-regex ,
-and
-.B --element-type-regex
-options allow you to specify extra regular expressions for each name
-category in addition to the predefined set that is added depending on
-the
-.B --type-naming
-and
-.B --function-naming
-options. Expressions that are provided with the
-.B --*-regex
-options are evaluated prior to any predefined expressions. This allows
-you to selectively override some or all of the predefined transformations.
-When debugging your own expressions, it is often useful to see which
-expressions match which names. The
-.B --name-regex-trace
-option allows you to trace the process of applying
-regular expressions to names.
-
-The value for the
-.B --*-regex
-options should be a perl-like regular expression in the form
-.BI / pattern / replacement /\fR.
-Any character can be used as a delimiter instead of
-.BR / .
-Escaping of the delimiter character in
-.I pattern
-or
-.I replacement
-is not supported. All the regular expressions for each category are pushed
-into a category-specific stack with the last specified expression
-considered first. The first match that succeeds is used. For the
-.B --one-accessor-regex
-(accessors with cardinality one),
-.B --opt-accessor-regex
-(accessors with cardinality optional), and
-.B --seq-accessor-regex
-(accessors with cardinality sequence) categories the
-.B --accessor-regex
-expressions are used as a fallback. For the
-.BR --one-modifier-regex ,
-.BR --opt-modifier-regex ,
-and
-.B --seq-modifier-regex
-categories the
-.B --modifier-regex
-expressions are used as a fallback. For the
-.B --element-type-regex
-category the
-.B --type-regex
-expressions are used as a fallback.
-
-The type name expressions
-.RB ( --type-regex )
-are evaluated on the name string that has the following format:
-
-[\fInamespace \fR]\fIname\fR[\fB,\fIname\fR][\fB,\fIname\fR][\fB,\fIname\fR]
-
-The element type name expressions
-.RB ( --element-type-regex ),
-effective only when the
-.B --generate-element-type
-option is specified, are evaluated on the name string that has the following
-format:
-
-.I namespace name
-
-In the type name format the
-.I namespace
-part followed by a space is only present for global type names. For global
-types and elements defined in schemas without a target namespace, the
-.I namespace
-part is empty but the space is still present. In the type name format after
-the initial
-.I name
-component, up to three additional
-.I name
-components can be present, separated by commas. For example:
-
-.B http://example.com/hello type
-
-.B foo
-
-.B foo,iterator
-
-.B foo,const,iterator
-
-The following set of predefined regular expressions is used to transform
-type names when the upper-camel-case naming convention is selected:
-
-.B /(?:[^ ]* )?([^,]+)/\\\\u$1/
-
-.B /(?:[^ ]* )?([^,]+),([^,]+)/\\\\u$1\\\\u$2/
-
-.B /(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\\\\u$1\\\\u$2\\\\u$3/
-
-.B /(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\\\\u$1\\\\u$2\\\\u$3\\\\u$4/
-
-The accessor and modifier expressions
-.RB ( --*accessor-regex
-and
-.BR --*modifier-regex )
-are evaluated on the name string that has the following format:
-
-\fIname\fR[\fB,\fIname\fR][\fB,\fIname\fR]
-
-After the initial
-.I name
-component, up to two additional
-.I name
-components can be present, separated by commas. For example:
-
-.B foo
-
-.B dom,document
-
-.B foo,default,value
-
-The following set of predefined regular expressions is used to transform
-accessor names when the
-.B java
-naming convention is selected:
-
-.B /([^,]+)/get\\\\u$1/
-
-.B /([^,]+),([^,]+)/get\\\\u$1\\\\u$2/
-
-.B /([^,]+),([^,]+),([^,]+)/get\\\\u$1\\\\u$2\\\\u$3/
-
-For the parser, serializer, and enumerator categories, the corresponding
-regular expressions are evaluated on local names of elements and on
-enumeration values, respectively. For example, the following predefined
-regular expression is used to transform parsing function names when the
-.B java
-naming convention is selected:
-
-.B /(.+)/parse\\\\u$1/
-
-The const category is used to create C++ constant names for the
-element/wildcard/text content ids in ordered types.
-
-See also the REGEX AND SHELL QUOTING section below.
-
-\"
-\" TYPE MAP
-\"
-.SH TYPE MAP
-Type map files are used in C++/Parser to define a mapping between XML
-Schema and C++ types. The compiler uses this information to determine
-the return types of
-.B post_*
-functions in parser skeletons corresponding to XML Schema types
-as well as argument types for callbacks corresponding to elements
-and attributes of these types.
-
-The compiler has a set of predefined mapping rules that map built-in
-XML Schema types to suitable C++ types (discussed below) and all
-other types to
-.BR void .
-By providing your own type maps you can override these predefined rules.
-The format of the type map file is presented below:
-
-.RS
-.B namespace
-.I schema-namespace
-[
-.I cxx-namespace
-]
-.br
-.B {
-.br
- (
-.B include
-.IB file-name ;
-)*
-.br
- ([
-.B type
-]
-.I schema-type cxx-ret-type
-[
-.I cxx-arg-type
-.RB ] ;
-)*
-.br
-.B }
-.br
-.RE
-
-Both
-.I schema-namespace
-and
-.I schema-type
-are regex patterns while
-.IR cxx-namespace ,
-.IR cxx-ret-type ,
-and
-.I cxx-arg-type
-are regex pattern substitutions. All names can be optionally enclosed
-in \fR" "\fR, for example, to include white-spaces.
-
-.I schema-namespace
-determines XML Schema namespace. Optional
-.I cxx-namespace
-is prefixed to every C++ type name in this namespace declaration.
-.I cxx-ret-type
-is a C++ type name that is used as a return type for the
-.B post_*
-functions. Optional
-.I cxx-arg-type
-is an argument type for callback functions corresponding to elements and
-attributes of this type. If
-.I cxx-arg-type
-is not specified, it defaults to
-.I cxx-ret-type
-if
-.I cxx-ret-type
-ends with
-.B *
-or
-.B &
-(that is, it is a pointer or a reference) and
-.B const
-\fIcxx-ret-type\fB&\fR otherwise.
-.I file-name
-is a file name either in the \fR" "\fR or < > format and is added with the
-.B #include
-directive to the generated code.
-
-The \fB#\fR character starts a comment that ends with a new line or end of
-file. To specify a name that contains \fB#\fR enclose it in \fR" "\fR. For
-example:
-
-.RS
-namespace http://www.example.com/xmlns/my my
-.br
-{
-.br
- include "my.hxx";
-.br
-
- # Pass apples by value.
- #
- apple apple;
-.br
-
- # Pass oranges as pointers.
- #
- orange orange_t*;
-.br
-}
-.br
-.RE
-
-In the example above, for the
-.B http://www.example.com/xmlns/my#orange
-XML Schema type, the
-.B my::orange_t*
-C++ type will be used as both return and argument types.
-
-Several namespace declarations can be specified in a single file.
-The namespace declaration can also be completely omitted to map
-types in a schema without a namespace. For instance:
-
-.RS
-include "my.hxx";
-.br
-apple apple;
-.br
-
-namespace http://www.example.com/xmlns/my
-.br
-{
-.br
- orange "const orange_t*";
-.br
-}
-.br
-.RE
-
-
-The compiler has a number of predefined mapping rules that can be
-presented as the following map files. The string-based XML Schema
-built-in types are mapped to either
-.B std::string
-or
-.B std::wstring
-depending on the character type selected with the
-.B --char-type
-option
-.RB ( char
-by default).
-
-.RS
-namespace http://www.w3.org/2001/XMLSchema
-.br
-{
-.br
- boolean bool bool;
-.br
-
- byte "signed char" "signed char";
-.br
- unsignedByte "unsigned char" "unsigned char";
-.br
-
- short short short;
-.br
- unsignedShort "unsigned short" "unsigned short";
-.br
-
- int int int;
-.br
- unsignedInt "unsigned int" "unsigned int";
-.br
-
- long "long long" "long long";
-.br
- unsignedLong "unsigned long long" "unsigned long long";
-.br
-
- integer "long long" "long long";
-.br
-
- negativeInteger "long long" "long long";
-.br
- nonPositiveInteger "long long" "long long";
-.br
-
- positiveInteger "unsigned long long" "unsigned long long";
-.br
- nonNegativeInteger "unsigned long long" "unsigned long long";
-.br
-
- float float float;
-.br
- double double double;
-.br
- decimal double double;
-.br
-
- string std::string;
-.br
- normalizedString std::string;
-.br
- token std::string;
-.br
- Name std::string;
-.br
- NMTOKEN std::string;
-.br
- NCName std::string;
-.br
- ID std::string;
-.br
- IDREF std::string;
-.br
- language std::string;
-.br
- anyURI std::string;
-.br
-
- NMTOKENS xml_schema::string_sequence;
-.br
- IDREFS xml_schema::string_sequence;
-.br
-
- QName xml_schema::qname;
-.br
-
- base64Binary std::auto_ptr<xml_schema::buffer>
-.br
- std::auto_ptr<xml_schema::buffer>;
-.br
- hexBinary std::auto_ptr<xml_schema::buffer>
-.br
- std::auto_ptr<xml_schema::buffer>;
-.br
-
- date xml_schema::date;
-.br
- dateTime xml_schema::date_time;
-.br
- duration xml_schema::duration;
-.br
- gDay xml_schema::gday;
-.br
- gMonth xml_schema::gmonth;
-.br
- gMonthDay xml_schema::gmonth_day;
-.br
- gYear xml_schema::gyear;
-.br
- gYearMonth xml_schema::gyear_month;
-.br
- time xml_schema::time;
-.br
-}
-.br
-.RE
-
-
-The last predefined rule maps anything that wasn't mapped by previous
-rules to
-.BR void :
-
-.RS
-namespace .*
-.br
-{
-.br
- .* void void;
-.br
-}
-.br
-.RE
-
-When you provide your own type maps with the
-.B --type-map
-option, they are evaluated first. This allows you to selectively override
-predefined rules.
-
-.\"
-.\" REGEX AND SHELL QUOTING
-.\"
-.SH REGEX AND SHELL QUOTING
-When entering a regular expression argument in the shell command line
-it is often necessary to use quoting (enclosing the argument in " "
-or ' ') in order to prevent the shell from interpreting certain
-characters, for example, spaces as argument separators and $ as
-variable expansions.
-
-Unfortunately it is hard to achieve this in a manner that is portable
-across POSIX shells, such as those found on GNU/Linux and UNIX, and
-Windows shell. For example, if you use " " for quoting you will get
-a wrong result with POSIX shells if your expression contains $. The
-standard way of dealing with this on POSIX systems is to use ' '
-instead. Unfortunately, Windows shell does not remove ' ' from
-arguments when they are passed to applications. As a result you may
-have to use ' ' for POSIX and " " for Windows ($ is not treated as
-a special character on Windows).
-
-Alternatively, you can save regular expression options into a file,
-one option per line, and use this file with the
-.B --options-file
-option. With this approach you don't need to worry about shell quoting.
-
-.\"
-.\" DIAGNOSTICS
-.\"
-.SH DIAGNOSTICS
-If the input file is not a valid W3C XML Schema definition,
-.B xsd
-will issue diagnostic messages to
-.B STDERR
-and exit with non-zero exit code.
-.SH BUGS
-Send bug reports to the xsd-users@codesynthesis.com mailing list.
-.SH COPYRIGHT
-Copyright (c) 2005-2014 Code Synthesis Tools CC.
-
-Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License,
-version 1.2; with no Invariant Sections, no Front-Cover Texts and
-no Back-Cover Texts. Copy of the license can be obtained from
-http://codesynthesis.com/licenses/fdl-1.2.txt
diff --git a/xsd/doc/xsd.xhtml b/xsd/doc/xsd.xhtml
deleted file mode 100644
index 989d1bd..0000000
--- a/xsd/doc/xsd.xhtml
+++ /dev/null
@@ -1,1555 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
-
-<head>
- <title>XSD 4.0.0 Compiler Command Line Manual</title>
-
- <meta name="copyright" content="&copy; 2005-2014 Code Synthesis Tools CC"/>
- <meta name="keywords" content="xsd,xml,schema,c++,mapping,data,binding,code,generator,manual,man,page"/>
- <meta name="description" content="XSD Compiler Command Line Manual"/>
-
- <link rel="stylesheet" type="text/css" href="default.css" />
-
-<style type="text/css">
-
- #synopsis {
- list-style-type: none;
- }
-
- #synopsis li {
- padding-top : 0.0em;
- padding-bottom : 0.0em;
- }
-
- #commands dt {
- padding-top : 0.4em;
- }
-
- #commands dd {
- padding-bottom : 0.4em;
- padding-left : 2em;
- }
-
- .options dt {
- padding-top : 0.4em;
- }
-
- .options dd {
- padding-top : 0.1em;
- padding-bottom : 0.4em;
- padding-left : 1.4em;
- }
-
-</style>
-</head>
-
-<body>
-<div id="container">
- <div id="content">
-
- <h1>NAME</h1>
-
- <p>xsd - W3C XML Schema to C++ Compiler</p>
-
- <h1>SYNOPSIS</h1>
-
- <dl id="synopsis">
- <dt><code><b>xsd</b> <i>command</i> [<i>options</i>] <i>file</i> [<i>file</i> ...]</code></dt>
- <dt><code><b>xsd help</b> [<i>command</i>]</code></dt>
- <dt><code><b>xsd version</b></code></dt>
- </dl>
-
- <h1>DESCRIPTION</h1>
-
- <p><code><b>xsd</b></code> generates vocabulary-specific, statically-typed
- C++ mapping from W3C XML Schema definitions. Particular mapping to
- produce is selected by a <code><i>command</i></code>. Each mapping has
- a number of mapping-specific <code><i>options</i></code> that should
- appear, if any, after the <code><i>command</i></code>. Input files should
- be W3C XML Schema definitions. The exact set of the generated files depends
- on the selected mapping and options.</p>
-
- <h1>COMMANDS</h1>
-
- <dl id="commands">
- <dt><code><b>cxx-tree</b></code></dt>
- <dd>Generate the C++/Tree mapping. For each input file in the form
- <code><b>name.xsd</b></code> the following C++ files are generated:
- <code><b>name.hxx</b></code> (header file),
- <code><b>name.ixx</b></code> (inline file, generated only if the
- <code><b>--generate-inline</b></code> option is specified),
- <code><b>name.cxx</b></code> (source file), and
- <code><b>name-fwd.hxx</b></code> (forward declaration file, generated
- only if the <code><b>--generate-forward</b></code> option is
- specified).</dd>
-
- <dt><code><b>cxx-parser</b></code></dt>
- <dd>Generate the C++/Parser mapping. For each input file in the form
- <code><b>name.xsd</b></code> the following C++ files are generated:
- <code><b>name-pskel.hxx</b></code> (parser skeleton header file),
- <code><b>name-pskel.ixx</b></code> (parser skeleton inline file,
- generated only if the <code><b>--generate-inline</b></code>
- option is specified), and
- <code><b>name-pskel.cxx</b></code> (parser skeleton source file).
- If the <code><b>--generate-noop-impl</b></code> or
- <code><b>--generate-print-impl</b></code> option is specified,
- the following additional sample implementation files are generated:
- <code><b>name-pimpl.hxx</b></code> (parser implementation header
- file) and
- <code><b>name-pimpl.cxx</b></code> (parser implementation source
- file). If the <code><b>--generate-test-driver</b></code> option
- is specified, the additional <code><b>name-driver.cxx</b></code>
- test driver file is generated.</dd>
-
- <dt><code><b>help</b></code></dt>
- <dd>Print usage information and exit. Use
- <p><code><b>xsd help</b> <i>command</i></code></p>
- for command-specific help.
- </dd>
-
- <dt><code><b>version</b></code></dt>
- <dd>Print version and exit.</dd>
- </dl>
-
- <h1>OPTIONS</h1>
-
- <p>Command-specific <code><i>options</i></code>, if any, should appear
- after the corresponding <code><i>command</i></code>.</p>
-
- <h2>COMMON OPTIONS</h2>
-
-<!--
- The following documentation was generated by CLI, a command
- line interface compiler for C++.
--->
-
-<dl class="options">
- <dt><code><b>--std</b></code> <i>version</i></dt>
- <dd>Specify the C++ standard that the generated code should conform to. Valid
- values are <code><b>c++98</b></code> (default) and
- <code><b>c++11</b></code>.
-
- <p>The C++ standard affects various aspects of the generated code that are
- discussed in more detail in various mapping-specific documentation. Overall,
- when C++11 is selected, the generated code relies on the move semantics and
- uses <code><b>std::unique_ptr</b></code> instead of deprecated
- <code><b>std::auto_ptr</b></code>.</p>
-
- <p>When the C++11 mode is selected, you normally don't need to perform any
- extra steps other than enable C++11 in your C++ compiler, if required. The
- XSD compiler will automatically add the necessary macro defines to the
- generated header files that will switch the header-only XSD runtime library
- (<code><b>libxsd</b></code>) to the C++11 mode. However, if you include any
- of the XSD runtime headers directly in your application (normally you just
- include the generated headers), then you will need to define the
- <code><b>XSD_CXX11</b></code> macro for your entire project.</p></dd>
-
- <dt><code><b>--char-type</b></code> <i>type</i></dt>
- <dd>Generate code using the provided character <i>type</i> instead of the
- default <code><b>char</b></code>. Valid values are <code><b>char</b></code>
- and <code><b>wchar_t</b></code>.</dd>
-
- <dt><code><b>--char-encoding</b></code> <i>enc</i></dt>
- <dd>Specify the character encoding that should be used in the generated code.
- Valid values for the <code><b>char</b></code> character type are
- <code><b>utf8</b></code> (default), <code><b>iso8859-1</b></code>,
- <code><b>lcp</b></code> (Xerces-C++ local code page), and
- <code><b>custom</b></code>. If you pass <code><b>custom</b></code> as the
- value then you will need to include the transcoder implementation header for
- your encoding at the beginning of the generated header files (see the
- <code><b>--hxx-prologue</b></code> option).
-
- <p>For the <code><b>wchar_t</b></code> character type the only valid value
- is <code><b>auto</b></code> and the encoding is automatically selected
- between UTF-16 and UTF-32/UCS-4, depending on the
- <code><b>wchar_t</b></code> type size.</p></dd>
-
- <dt><code><b>--output-dir</b></code> <i>dir</i></dt>
- <dd>Write generated files to <i>dir</i> instead of the current directory.</dd>
-
- <dt><code><b>--generate-inline</b></code></dt>
- <dd>Generate simple functions inline. This option triggers creation of the
- inline file.</dd>
-
- <dt><code><b>--generate-xml-schema</b></code></dt>
- <dd>Generate a C++ header file as if the schema being compiled defines the XML
- Schema namespace. For the C++/Tree mapping, the resulting file will contain
- definitions for all XML Schema built-in types. For the C++/Parser mapping,
- the resulting file will contain definitions for all the parser skeletons and
- implementations corresponding to the XML Schema built-in types.
-
- <p>The schema file provided to the compiler need not exist and is only used
- to derive the name of the resulting header file. Use the
- <code><b>--extern-xml-schema</b></code> option to include this file in the
- generated files for other schemas.</p></dd>
-
- <dt><code><b>--extern-xml-schema</b></code> <i>file</i></dt>
- <dd>Include a header file derived from <i>file</i> instead of generating the XML
- Schema namespace mapping inline. The provided file need not exist and is
- only used to derive the name of the included header file. Use the
- <code><b>--generate-xml-schema</b></code> option to generate this header
- file.</dd>
-
- <dt><code><b>--namespace-map</b></code> <i>xns</i>=<i>cns</i></dt>
- <dd>Map XML Schema namespace <i>xns</i> to C++ namespace <i>cns</i>. Repeat this
- option to specify mapping for more than one XML Schema namespace. For
- example, the following option:
-
- <p><code><b>--namespace-map
- http://example.com/foo/bar=foo::bar</b></code></p>
-
- <p>Will map the <code><b>http://example.com/foo/bar</b></code> XML Schema
- namespace to the <code><b>foo::bar</b></code> C++ namespace.</p></dd>
-
- <dt><code><b>--namespace-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema namespace names to C++ namespace names. <i>regex</i> is a Perl-like
- regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
- character can be used as a delimiter instead of <code><b>/</b></code>.
- Escaping of the delimiter character in <code><i>pattern</i></code> or
- <code><i>replacement</i></code> is not supported.
-
- <p>All the regular expressions are pushed into a stack with the last
- specified expression considered first. The first match that succeeds is
- used. Regular expressions are applied to a string in the form</p>
-
- <p><code><i>filename</i> <i>namespace</i></code></p>
-
- <p>For example, if you have file <code><b>hello.xsd</b></code> with
- namespace <code><b>http://example.com/hello</b></code> and you run
- <code><b>xsd</b></code> on this file, then the string in question will
- be:</p>
-
- <p><code><b>hello.xsd. http://example.com/hello</b></code></p>
-
- <p>For the built-in XML Schema namespace the string is:</p>
-
- <p><code><b>XMLSchema.xsd http://www.w3.org/2001/XMLSchema</b></code></p>
-
- <p>The following three steps are performed for each regular expression until
- the match is found:</p>
-
- <p>1. The expression is applied and if the result is empty the next
- expression is considered.</p>
-
- <p>2. All <code><b>/</b></code> are replaced with
- <code><b>::</b></code>.</p>
-
- <p>3. The result is verified to be a valid C++ scope name (e.g.,
- <code><b>foo::bar</b></code>). If this test succeeds, the result is used as
- a C++ namespace name.</p>
-
- <p>As an example, the following expression maps XML Schema namespaces in
- the form <code><b>http://example.com/foo/bar</b></code> to C++ namespaces in
- the form <code><b>foo::bar</b></code>:</p>
-
- <p><code><b>%.* http://example.com/(.+)%$1%</b></code></p>
-
- <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
-
- <dt><code><b>--namespace-regex-trace</b></code></dt>
- <dd>Trace the process of applying regular expressions specified with the
- <code><b>--namespace-regex</b></code> option. Use this option to find out
- why your regular expressions don't do what you expected them to do.</dd>
-
- <dt><code><b>--reserved-name</b></code> <i>n</i>[=<i>r</i>]</dt>
- <dd>Add name <i>n</i> to the list of names that should not be used as
- identifiers. The name can optionally be followed by <code><b>=</b></code>
- and the replacement name <i>r</i> that should be used instead. All the C++
- keywords are already in this list.</dd>
-
- <dt><code><b>--include-with-brackets</b></code></dt>
- <dd>Use angle brackets (&lt;>) instead of quotes ("") in generated
- <code><b>#include</b></code> directives.</dd>
-
- <dt><code><b>--include-prefix</b></code> <i>prefix</i></dt>
- <dd>Add <i>prefix</i> to generated <code><b>#include</b></code> directive paths.
-
- <p>For example, if you had the following import element in your schema</p>
-
- <p><code><b>&lt;import namespace="..."
- schemaLocation="base.xsd"/></b></code></p>
-
- <p>and compiled this fragment with <code><b>--include-prefix
- schemas/</b></code>, then the include directive in the generated code would
- be:</p>
-
- <p><code><b>#include "schemas/base.hxx"</b></code></p></dd>
-
- <dt><code><b>--include-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to transform
- <code><b>#include</b></code> directive paths. <i>regex</i> is a Perl-like
- regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
- character can be used as a delimiter instead of <code><b>/</b></code>.
- Escaping of the delimiter character in <code><i>pattern</i></code> or
- <code><i>replacement</i></code> is not supported.
-
- <p>All the regular expressions are pushed into a stack with the last
- specified expression considered first. The first match that succeeds is
- used.</p>
-
- <p>As an example, the following expression transforms paths in the form
- <code><b>schemas/foo/bar</b></code> to paths in the form
- <code><b>generated/foo/bar</b></code>:</p>
-
- <p><code><b>%schemas/(.+)%generated/$1%</b></code></p>
-
- <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
-
- <dt><code><b>--include-regex-trace</b></code></dt>
- <dd>Trace the process of applying regular expressions specified with the
- <code><b>--include-regex</b></code> option. Use this option to find out why
- your regular expressions don't do what you expected them to do.</dd>
-
- <dt><code><b>--guard-prefix</b></code> <i>prefix</i></dt>
- <dd>Add <i>prefix</i> to generated header inclusion guards. The prefix is
- transformed to upper case and characters that are illegal in a preprocessor
- macro name are replaced with underscores. If this option is not specified
- then the directory part of the input schema file is used as a prefix.</dd>
-
- <dt><code><b>--hxx-suffix</b></code> <i>suffix</i></dt>
- <dd>Use the provided <i>suffix</i> instead of the default
- <code><b>.hxx</b></code> to construct the name of the header file. Note that
- this suffix is also used to construct names of header files corresponding to
- included/imported schemas.</dd>
-
- <dt><code><b>--ixx-suffix</b></code> <i>suffix</i></dt>
- <dd>Use the provided <i>suffix</i> instead of the default
- <code><b>.ixx</b></code> to construct the name of the inline file.</dd>
-
- <dt><code><b>--cxx-suffix</b></code> <i>suffix</i></dt>
- <dd>Use the provided <i>suffix</i> instead of the default
- <code><b>.cxx</b></code> to construct the name of the source file.</dd>
-
- <dt><code><b>--fwd-suffix</b></code> <i>suffix</i></dt>
- <dd>Use the provided <i>suffix</i> instead of the default
- <code><b>-fwd.hxx</b></code> to construct the name of the forward
- declaration file.</dd>
-
- <dt><code><b>--hxx-regex</b></code> <i>regex</i></dt>
- <dd>Use the provided expression to construct the name of the header file.
- <i>regex</i> is a Perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Note
- that this expression is also used to construct names of header files
- corresponding to included/imported schemas. See also the REGEX AND SHELL
- QUOTING section below.</dd>
-
- <dt><code><b>--ixx-regex</b></code> <i>regex</i></dt>
- <dd>Use the provided expression to construct the name of the inline file.
- <i>regex</i> is a Perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. See
- also the REGEX AND SHELL QUOTING section below.</dd>
-
- <dt><code><b>--cxx-regex</b></code> <i>regex</i></dt>
- <dd>Use the provided expression to construct the name of the source file.
- <i>regex</i> is a Perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. See
- also the REGEX AND SHELL QUOTING section below.</dd>
-
- <dt><code><b>--fwd-regex</b></code> <i>regex</i></dt>
- <dd>Use the provided expression to construct the name of the forward declaration
- file. <i>regex</i> is a Perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. See
- also the REGEX AND SHELL QUOTING section below.</dd>
-
- <dt><code><b>--hxx-prologue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the beginning of the header file.</dd>
-
- <dt><code><b>--ixx-prologue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the beginning of the inline file.</dd>
-
- <dt><code><b>--cxx-prologue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the beginning of the source file.</dd>
-
- <dt><code><b>--fwd-prologue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the beginning of the forward declaration file.</dd>
-
- <dt><code><b>--prologue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the beginning of each generated file for which there
- is no file-specific prologue.</dd>
-
- <dt><code><b>--hxx-epilogue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the end of the header file.</dd>
-
- <dt><code><b>--ixx-epilogue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the end of the inline file.</dd>
-
- <dt><code><b>--cxx-epilogue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the end of the source file.</dd>
-
- <dt><code><b>--fwd-epilogue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the end of the forward declaration file.</dd>
-
- <dt><code><b>--epilogue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the end of each generated file for which there is no
- file-specific epilogue.</dd>
-
- <dt><code><b>--hxx-prologue-file</b></code> <i>file</i></dt>
- <dd>Insert the content of the <i>file</i> at the beginning of the header file.</dd>
-
- <dt><code><b>--ixx-prologue-file</b></code> <i>file</i></dt>
- <dd>Insert the content of the <i>file</i> at the beginning of the inline file.</dd>
-
- <dt><code><b>--cxx-prologue-file</b></code> <i>file</i></dt>
- <dd>Insert the content of the <i>file</i> at the beginning of the source file.</dd>
-
- <dt><code><b>--fwd-prologue-file</b></code> <i>file</i></dt>
- <dd>Insert the content of the <i>file</i> at the beginning of the forward
- declaration file.</dd>
-
- <dt><code><b>--prologue-file</b></code> <i>file</i></dt>
- <dd>Insert the content of the <i>file</i> at the beginning of each generated
- file for which there is no file-specific prologue file.</dd>
-
- <dt><code><b>--hxx-epilogue-file</b></code> <i>file</i></dt>
- <dd>Insert the content of the <i>file</i> at the end of the header file.</dd>
-
- <dt><code><b>--ixx-epilogue-file</b></code> <i>file</i></dt>
- <dd>Insert the content of the <i>file</i> at the end of the inline file.</dd>
-
- <dt><code><b>--cxx-epilogue-file</b></code> <i>file</i></dt>
- <dd>Insert the content of the <i>file</i> at the end of the source file.</dd>
-
- <dt><code><b>--fwd-epilogue-file</b></code> <i>file</i></dt>
- <dd>Insert the content of the <i>file</i> at the end of the forward declaration
- file.</dd>
-
- <dt><code><b>--epilogue-file</b></code> <i>file</i></dt>
- <dd>Insert the content of the <i>file</i> at the end of each generated file for
- which there is no file-specific epilogue file.</dd>
-
- <dt><code><b>--export-symbol</b></code> <i>symbol</i></dt>
- <dd>Insert <i>symbol</i> in places where DLL export/import control statements
- (<code><b>__declspec(dllexport/dllimport)</b></code>) are necessary.</dd>
-
- <dt><code><b>--export-xml-schema</b></code></dt>
- <dd>Export/import types in the XML Schema namespace using the export symbol
- provided with the <code><b>--export-symbol</b></code> option. The
- <code><b>XSD_NO_EXPORT</b></code> macro can be used to omit this code during
- C++ compilation, which may be useful if you would like to use the same
- generated code across multiple platforms.</dd>
-
- <dt><code><b>--export-maps</b></code></dt>
- <dd>Export polymorphism support maps from a Win32 DLL into which this generated
- code is placed. This is necessary when your type hierarchy is split across
- several DLLs since otherwise each DLL will have its own set of maps. In this
- situation the generated code for the DLL which contains base types and/or
- substitution group heads should be compiled with this option and the
- generated code for all other DLLs should be compiled with
- <code><b>--import-maps</b></code>. This option is only valid together with
- <code><b>--generate-polymorphic</b></code>. The
- <code><b>XSD_NO_EXPORT</b></code> macro can be used to omit this code during
- C++ compilation, which may be useful if you would like to use the same
- generated code across multiple platforms.</dd>
-
- <dt><code><b>--import-maps</b></code></dt>
- <dd>Import polymorphism support maps to a Win32 DLL or executable into which
- this generated code is linked. See the <code><b>--export-maps</b></code>
- option documentation for details. This options is only valid together with
- <code><b>--generate-polymorphic</b></code>. The
- <code><b>XSD_NO_EXPORT</b></code> macro can be used to omit this code during
- C++ compilation, which may be useful if you would like to use the same
- generated code across multiple platforms.</dd>
-
- <dt><code><b>--generate-dep</b></code></dt>
- <dd>Generate <code><b>make</b></code> dependency information. This option
- triggers the creation of the <code><b>.d</b></code> file containing the
- dependencies of the generated files on the main schema file as well as all
- the schema files that it includes/imports, transitively. This dependency
- file is then normally included into the main <code><b>makefile</b></code> to
- implement automatic dependency tracking.
-
- <p>Note also that automatic dependency generation is not supported in the
- file-per-type mode (<code><b>--file-per-type</b></code>). In this case, all
- the generated files are produced with a single compiler invocation and
- depend on all the schemas. As a result, it is easier to establish such a
- dependency manually, perhaps with the help of the
- <code><b>--file-list*</b></code> options.</p></dd>
-
- <dt><code><b>--generate-dep-only</b></code></dt>
- <dd>Generate <code><b>make</b></code> dependency information only.</dd>
-
- <dt><code><b>--dep-phony</b></code></dt>
- <dd>Generate phony targets for included/imported schema files, causing each to
- depend on nothing. Such dummy rules work around <code><b>make</b></code>
- errors caused by the removal of schema files without also updating the
- dependency file to match.</dd>
-
- <dt><code><b>--dep-target</b></code> <i>target</i></dt>
- <dd>Change the target of the dependency rule. By default it contains all the
- generated C++ files as well as the dependency file itself, without any
- directory prefixes. If you require multiple targets, then you can specify
- them as a single, space-separated argument or you can repeat this option
- multiple times.</dd>
-
- <dt><code><b>--dep-suffix</b></code> <i>suffix</i></dt>
- <dd>Use the provided <i>suffix</i> instead of the default <code><b>.d</b></code>
- to construct the name of the dependency file.</dd>
-
- <dt><code><b>--dep-regex</b></code> <i>regex</i></dt>
- <dd>Use the provided expression to construct the name of the dependency file.
- <i>regex</i> is a Perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. See
- also the REGEX AND SHELL QUOTING section below.</dd>
-
- <dt><code><b>--disable-warning</b></code> <i>warn</i></dt>
- <dd>Disable printing warning with id <i>warn</i>. If <code><b>all</b></code> is
- specified for the warning id then all warnings are disabled.</dd>
-
- <dt><code><b>--options-file</b></code> <i>file</i></dt>
- <dd>Read additional options from <i>file</i>. Each option should appearing on a
- separate line optionally followed by space and an option value. Empty lines
- and lines starting with <code><b>#</b></code> are ignored. Option values can
- be enclosed in double (<code><b>"</b></code>) or single
- (<code><b>'</b></code>) quotes to preserve leading and trailing whitespaces
- as well as to specify empty values. If the value itself contains trailing or
- leading quotes, enclose it with an extra pair of quotes, for example
- <code><b>'"x"'</b></code>. Non-leading and non-trailing quotes are
- interpreted as being part of the option value.
-
- <p>The semantics of providing options in a file is equivalent to providing
- the same set of options in the same order on the command line at the point
- where the <code><b>--options-file</b></code> option is specified except that
- the shell escaping and quoting is not required. You can repeat this option
- to specify more than one options file.</p></dd>
-
- <dt><code><b>--show-sloc</b></code></dt>
- <dd>Show the number of generated physical source lines of code (SLOC).</dd>
-
- <dt><code><b>--sloc-limit</b></code> <i>num</i></dt>
- <dd>Check that the number of generated physical source lines of code (SLOC) does
- not exceed <i>num</i>.</dd>
-
- <dt><code><b>--proprietary-license</b></code></dt>
- <dd>Indicate that the generated code is licensed under a proprietary license
- instead of the GPL.</dd>
-
- <dt><code><b>--custom-literals</b></code> <i>file</i></dt>
- <dd>Load custom XML string to C++ literal mappings from <i>file</i>. This
- mechanism can be useful if you are using a custom character encoding and
- some of the strings in your schemas, for example element/attribute names or
- enumeration values, contain non-ASCII characters. In this case you will need
- to provide a custom mapping to C++ literals for such strings. The format of
- this file is specified in the <code><b>custom-literals.xsd</b></code> XML
- Schema file that can be found in the documentation directory.</dd>
-
- <dt><code><b>--preserve-anonymous</b></code></dt>
- <dd>Preserve anonymous types. By default anonymous types are automatically named
- with names derived from the enclosing elements/attributes. Because mappings
- implemented by this compiler require all types to be named, this option is
- only useful if you want to make sure your schemas don't have anonymous
- types.</dd>
-
- <dt><code><b>--show-anonymous</b></code></dt>
- <dd>Show elements and attributes that are of anonymous types. This option only
- makes sense together with the <code><b>--preserve-anonymous</b></code>
- option.</dd>
-
- <dt><code><b>--anonymous-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to derive names for
- anonymous types from the enclosing attributes/elements. <i>regex</i> is a
- Perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
- character can be used as a delimiter instead of <code><b>/</b></code>.
- Escaping of the delimiter character in <code><i>pattern</i></code> or
- <code><i>replacement</i></code> is not supported.
-
- <p>All the regular expressions are pushed into a stack with the last
- specified expression considered first. The first match that succeeds is
- used. Regular expressions are applied to a string in the form</p>
-
- <p><code><i>filename</i> <i>namespace</i> <i>xpath</i></code></p>
-
- <p>For instance:</p>
-
- <p><code><b>hello.xsd http://example.com/hello element</b></code></p>
-
- <p><code><b>hello.xsd http://example.com/hello type/element</b></code></p>
-
- <p>As an example, the following expression makes all the derived names start
- with capital letters. This could be useful when your naming convention
- requires type names to start with capital letters:</p>
-
- <p><code><b>%.* .* (.+/)*(.+)%\u$2%</b></code></p>
-
- <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
-
- <dt><code><b>--anonymous-regex-trace</b></code></dt>
- <dd>Trace the process of applying regular expressions specified with the
- <code><b>--anonymous-regex</b></code> option. Use this option to find out
- why your regular expressions don't do what you expected them to do.</dd>
-
- <dt><code><b>--location-map</b></code> <i>ol</i>=<i>nl</i></dt>
- <dd>Map the original schema location <i>ol</i> that is specified in the XML
- Schema include or import elements to new schema location <i>nl</i>. Repeat
- this option to map more than one schema location. For example, the following
- option maps the <code><b>http://example.com/foo.xsd</b></code> URL to the
- <code><b>foo.xsd</b></code> local file.
-
- <p><code><b>--location-map http://example.com/foo.xsd=foo.xsd</b></code></p></dd>
-
- <dt><code><b>--location-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to map schema
- locations that are specified in the XML Schema include or import elements.
- <i>regex</i> is a Perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
- character can be used as a delimiter instead of <code><b>/</b></code>.
- Escaping of the delimiter character in <code><i>pattern</i></code> or
- <code><i>replacement</i></code> is not supported. All the regular
- expressions are pushed into a stack with the last specified expression
- considered first. The first match that succeeds is used.
-
- <p>For example, the following expression maps URL locations in the form
- <code><b>http://example.com/foo/bar.xsd</b></code> to local files in the
- form <code><b>bar.xsd</b></code>:</p>
-
- <p><code><b>%http://.+/(.+)%$1%</b></code></p>
-
- <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
-
- <dt><code><b>--location-regex-trace</b></code></dt>
- <dd>Trace the process of applying regular expressions specified with the
- <code><b>--location-regex</b></code> option. Use this option to find out why
- your regular expressions don't do what you expected them to do.</dd>
-
- <dt><code><b>--file-per-type</b></code></dt>
- <dd>Generate a separate set of C++ files for each type defined in XML Schema.
- Note that in this mode you only need to compile the root schema(s) and the
- code will be generated for all included and imported schemas. This
- compilation mode is primarily useful when some of your schemas cannot be
- compiled separately or have cyclic dependencies which involve type
- inheritance. Other options related to this mode are:
- <code><b>--type-file-regex</b></code>,
- <code><b>--schema-file-regex</b></code>,
- <code><b>--fat-type-file</b></code>, and <code><b>--file-list</b></code>.</dd>
-
- <dt><code><b>--type-file-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate type
- names to file names when the <code><b>--file-per-type</b></code> option is
- specified. <i>regex</i> is a Perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
- character can be used as a delimiter instead of <code><b>/</b></code>.
- Escaping of the delimiter character in <code><i>pattern</i></code> or
- <code><i>replacement</i></code> is not supported. All the regular
- expressions are pushed into a stack with the last specified expression
- considered first. The first match that succeeds is used. Regular expressions
- are applied to a string in the form
-
- <p><code><i>namespace</i> <i>type-name</i></code></p>
-
- <p>For example, the following expression maps type <code><b>foo</b></code>
- that is defined in the <code><b>http://example.com/bar</b></code> namespace
- to file name <code><b>bar-foo</b></code>:</p>
-
- <p><code><b>%http://example.com/(.+) (.+)%$1-$2%</b></code></p>
-
- <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
-
- <dt><code><b>--type-file-regex-trace</b></code></dt>
- <dd>Trace the process of applying regular expressions specified with the
- <code><b>--type-file-regex</b></code> option. Use this option to find out
- why your regular expressions don't do what you expected them to do.</dd>
-
- <dt><code><b>--schema-file-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate schema
- file names when the <code><b>--file-per-type</b></code> option is specified.
- <i>regex</i> is a Perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>. Any
- character can be used as a delimiter instead of <code><b>/</b></code>.
- Escaping of the delimiter character in <code><i>pattern</i></code> or
- <code><i>replacement</i></code> is not supported. All the regular
- expressions are pushed into a stack with the last specified expression
- considered first. The first match that succeeds is used. Regular Expressions
- are applied to the absolute filesystem path of a schema file and the result,
- including the directory part, if any, is used to derive the
- <code><b>#include</b></code> directive paths as well as the generated C++
- file paths. This option, along with <code><b>--type-file-regex</b></code>
- are primarily useful to place the generated files into subdirectories or to
- resolve file name conflicts.
-
- <p>For example, the following expression maps schema files in the
- <code><b>foo/1.0.0/</b></code> subdirectory to the files in the
- <code><b>foo/</b></code> subdirectory. As a result, the
- <code><b>#include</b></code> directive paths for such schemas will be in the
- <code><b>foo/schema.hxx</b></code> form and the generated C++ files will be
- placed into the <code><b>foo/</b></code> subdirectory:</p>
-
- <p><code><b>%.*/foo/1.0.0/(.+)%foo/$1%</b></code></p>
-
- <p>See also the REGEX AND SHELL QUOTING section below.</p></dd>
-
- <dt><code><b>--schema-file-regex-trace</b></code></dt>
- <dd>Trace the process of applying regular expressions specified with the
- <code><b>--schema-file-regex</b></code> option. Use this option to find out
- why your regular expressions don't do what you expected them to do.</dd>
-
- <dt><code><b>--fat-type-file</b></code></dt>
- <dd>Generate code corresponding to global elements into type files instead of
- schema files when the <code><b>--type-file-regex</b></code> option is
- specified. This option is primarily useful when trying to minimize the
- amount of object code that is linked to an executable by packaging compiled
- generated code into a static (archive) library.</dd>
-
- <dt><code><b>--file-list</b></code> <i>file</i></dt>
- <dd>Write a list of generated C++ files to <i>file</i>. This option is primarily
- useful in the file-per-type compilation mode
- (<code><b>--file-per-type</b></code>) to create a list of generated C++
- files, for example, as a makefile fragment.</dd>
-
- <dt><code><b>--file-list-prologue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the beginning of the file list. As a convenience, all
- occurrences of the <code><b>\n</b></code> character sequence in <i>text</i>
- are replaced with new lines. This option can, for example, be used to assign
- the generated file list to a makefile variable.</dd>
-
- <dt><code><b>--file-list-epilogue</b></code> <i>text</i></dt>
- <dd>Insert <i>text</i> at the end of the file list. As a convenience, all
- occurrences of the <code><b>\n</b></code> character sequence in <i>text</i>
- are replaced with new lines.</dd>
-
- <dt><code><b>--file-list-delim</b></code> <i>text</i></dt>
- <dd>Delimit file names written to the file list with <i>text</i> instead of new
- lines. As a convenience, all occurrences of the <code><b>\n</b></code>
- character sequence in <i>text</i> are replaced with new lines.</dd>
-
-</dl>
- <h2>CXX-TREE COMMAND OPTIONS</h2>
-
-<!--
- The following documentation was generated by CLI, a command
- line interface compiler for C++.
--->
-
-<dl class="options">
- <dt><code><b>--generate-polymorphic</b></code></dt>
- <dd>Generate polymorphism-aware code. Specify this option if you use
- substitution groups or <code><b>xsi:type</b></code>. Use the
- <code><b>--polymorphic-type</b></code> or
- <code><b>--polymorphic-type-all</b></code> option to specify which type
- hierarchies are polymorphic.</dd>
-
- <dt><code><b>--polymorphic-type</b></code> <i>type</i></dt>
- <dd>Indicate that <i>type</i> is a root of a polymorphic type hierarchy. The
- compiler can often automatically determine which types are polymorphic based
- on the substitution group declarations. However, you may need to use this
- option if you are not using substitution groups or if substitution groups
- are defined in another schema. You need to specify this option when
- compiling every schema file that references <i>type</i>. The <i>type</i>
- argument is an XML Schema type name that can be optionally qualified with a
- namespace in the <code><i>namespace</i><b>#</b><i>name</i></code> form.</dd>
-
- <dt><code><b>--polymorphic-type-all</b></code></dt>
- <dd>Indicate that all types should be treated as polymorphic.</dd>
-
- <dt><code><b>--polymorphic-plate</b></code> <i>num</i></dt>
- <dd>Specify the polymorphic map plate the generated code should register on.
- This functionality is primarily useful to segregate multiple schemas that
- define the same polymorphic types.</dd>
-
- <dt><code><b>--ordered-type</b></code> <i>type</i></dt>
- <dd>Indicate that element order in <i>type</i> is significant. An example would
- be a complex type with unbounded choice as a content model where the element
- order in XML has application-specific semantics. For ordered types the
- compiler generates a special container data member and a corresponding set
- of accessors and modifiers that are used to capture the order of elements
- and, for mixed content, of text.
-
- <p>The <i>type</i> argument is an XML Schema type name that can be
- optionally qualified with a namespace in the
- <code><i>namespace</i><b>#</b><i>name</i></code> form. Note also that you
- will need to specify this option when compiling every schema file that has
- other ordered types derived from this type.</p></dd>
-
- <dt><code><b>--ordered-type-derived</b></code></dt>
- <dd>Automatically treat types derived from ordered bases as also ordered. This
- is primarily useful if you would like to be able to iterate over the
- complete content using the content order container.</dd>
-
- <dt><code><b>--ordered-type-mixed</b></code></dt>
- <dd>Automatically treat complex types with mixed content as ordered.</dd>
-
- <dt><code><b>--ordered-type-all</b></code></dt>
- <dd>Indicate that element order in all types is significant.</dd>
-
- <dt><code><b>--order-container</b></code> <i>type</i></dt>
- <dd>Specify a custom class template that should be used as a container for the
- content order in ordered types instead of the default
- <code><b>std::vector</b></code>. See <code><b>--ordered-type</b></code> for
- more information on ordered type. This option is primarily useful if you
- need to perform more complex lookups in the content order container, for
- example by element id. In this case, a container like Boost multi-index may
- be more convenient. Note that if using a custom container, you will also
- most likely need to include the relevant headers using the
- <code><b>--hxx-prologue*</b></code> options.</dd>
-
- <dt><code><b>--generate-serialization</b></code></dt>
- <dd>Generate serialization functions. Serialization functions convert the object
- model back to XML.</dd>
-
- <dt><code><b>--generate-ostream</b></code></dt>
- <dd>Generate ostream insertion operators (<code><b>operator&lt;&lt;</b></code>)
- for generated types. This allows one to easily print a fragment or the whole
- object model for debugging or logging.</dd>
-
- <dt><code><b>--generate-doxygen</b></code></dt>
- <dd>Generate documentation comments suitable for extraction by the Doxygen
- documentation system. Documentation from annotations is added to the
- comments if present in the schema.</dd>
-
- <dt><code><b>--generate-comparison</b></code></dt>
- <dd>Generate comparison operators (<code><b>operator==</b></code> and
- <code><b>operator!=</b></code>) for complex types. Comparison is performed
- member-wise.</dd>
-
- <dt><code><b>--generate-default-ctor</b></code></dt>
- <dd>Generate default constructors even for types that have required members.
- Required members of an instance constructed using such a constructor are not
- initialized and accessing them results in undefined behavior.</dd>
-
- <dt><code><b>--generate-from-base-ctor</b></code></dt>
- <dd>Generate constructors that expect an instance of a base type followed by all
- required members.</dd>
-
- <dt><code><b>--suppress-assignment</b></code></dt>
- <dd>Suppress the generation of copy assignment operators for complex types. If
- this option is specified, the copy assignment operators for such types are
- declared private and left unimplemented.</dd>
-
- <dt><code><b>--generate-detach</b></code></dt>
- <dd>Generate detach functions for required elements and attributes. Detach
- functions for optional and sequence cardinalities are provided by the
- respective containers. These functions, for example, allow you to move
- sub-trees in the object model either within the same tree or between
- different trees.</dd>
-
- <dt><code><b>--generate-wildcard</b></code></dt>
- <dd>Generate accessors and modifiers as well as parsing and serialization code
- for XML Schema wildcards (<code><b>any</b></code> and
- <code><b>anyAttribute</b></code>). XML content matched by wildcards is
- presented as DOM fragments. Note that you need to initialize the Xerces-C++
- runtime if you are using this option.</dd>
-
- <dt><code><b>--generate-any-type</b></code></dt>
- <dd>Extract and store content of the XML Schema <code><b>anyType</b></code> type
- as a DOM fragment. Note that you need to initialize the Xerces-C++ runtime
- if you are using this option.</dd>
-
- <dt><code><b>--generate-insertion</b></code> <i>os</i></dt>
- <dd>Generate data representation stream insertion operators for the <i>os</i>
- output stream type. Repeat this option to specify more than one stream type.
- The ACE CDR stream (<code><b>ACE_OutputCDR</b></code>) and RPC XDR are
- recognized by the compiler and the necessary <code><b>#include</b></code>
- directives are automatically generated. For custom stream types use the
- <code><b>--hxx-prologue*</b></code> options to provide the necessary
- declarations.</dd>
-
- <dt><code><b>--generate-extraction</b></code> <i>is</i></dt>
- <dd>Generate data representation stream extraction constructors for the
- <i>is</i> input stream type. Repeat this option to specify more than one
- stream type. The ACE CDR stream (<code><b>ACE_InputCDR</b></code>) and RPC
- XDR are recognized by the compiler and the necessary
- <code><b>#include</b></code> directives are automatically generated. For
- custom stream types use the <code><b>--hxx-prologue*</b></code> options to
- provide the necessary declarations.</dd>
-
- <dt><code><b>--generate-forward</b></code></dt>
- <dd>Generate a separate header file with forward declarations for the types
- being generated.</dd>
-
- <dt><code><b>--suppress-parsing</b></code></dt>
- <dd>Suppress the generation of the parsing functions and constructors. Use this
- option to reduce the generated code size when parsing from XML is not
- needed.</dd>
-
- <dt><code><b>--generate-element-type</b></code></dt>
- <dd>Generate types instead of parsing and serialization functions for root
- elements. This is primarily useful to distinguish object models with the
- same root type but with different root elements.</dd>
-
- <dt><code><b>--generate-element-map</b></code></dt>
- <dd>Generate a root element map that allows uniform parsing and serialization of
- multiple root elements. This option is only valid together with
- <code><b>--generate-element-type</b></code>.</dd>
-
- <dt><code><b>--generate-intellisense</b></code></dt>
- <dd>Generate workarounds for IntelliSense bugs in Visual Studio 2005 (8.0). When
- this option is used, the resulting code is slightly more verbose.
- IntelliSense in Visual Studio 2008 (9.0) and later does not require these
- workarounds. Support for IntelliSense in Visual Studio 2003 (7.1) is
- improved with this option but is still incomplete.</dd>
-
- <dt><code><b>--omit-default-attributes</b></code></dt>
- <dd>Omit attributes with default and fixed values from serialized XML documents.</dd>
-
- <dt><code><b>--type-naming</b></code> <i>style</i></dt>
- <dd>Specify the type naming convention that should be used in the generated
- code. Valid styles are <code><b>knr</b></code> (default),
- <code><b>ucc</b></code>, and <code><b>java</b></code>. See the NAMING
- CONVENTION section below for more information.</dd>
-
- <dt><code><b>--function-naming</b></code> <i>style</i></dt>
- <dd>Specify the function naming convention that should be used in the generated
- code. Valid styles are <code><b>knr</b></code> (default),
- <code><b>lcc</b></code>, and <code><b>java</b></code>. See the NAMING
- CONVENTION section below for more information.</dd>
-
- <dt><code><b>--type-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema type names to C++ type names. See the NAMING CONVENTION section below
- for more information.</dd>
-
- <dt><code><b>--accessor-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema names of elements/attributes to C++ accessor function names. See the
- NAMING CONVENTION section below for more information.</dd>
-
- <dt><code><b>--one-accessor-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema names of elements/attributes with cardinality one to C++ accessor
- function names. See the NAMING CONVENTION section below for more
- information.</dd>
-
- <dt><code><b>--opt-accessor-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema names of elements/attributes with cardinality optional to C++
- accessor function names. See the NAMING CONVENTION section below for more
- information.</dd>
-
- <dt><code><b>--seq-accessor-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema names of elements/attributes with cardinality sequence to C++
- accessor function names. See the NAMING CONVENTION section below for more
- information.</dd>
-
- <dt><code><b>--modifier-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema names of elements/attributes to C++ modifier function names. See the
- NAMING CONVENTION section below for more information.</dd>
-
- <dt><code><b>--one-modifier-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema names of elements/attributes with cardinality one to C++ modifier
- function names. See the NAMING CONVENTION section below for more
- information.</dd>
-
- <dt><code><b>--opt-modifier-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema names of elements/attributes with cardinality optional to C++
- modifier function names. See the NAMING CONVENTION section below for more
- information.</dd>
-
- <dt><code><b>--seq-modifier-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema names of elements/attributes with cardinality sequence to C++
- modifier function names. See the NAMING CONVENTION section below for more
- information.</dd>
-
- <dt><code><b>--parser-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema element names to C++ parsing function names. See the NAMING
- CONVENTION section below for more information.</dd>
-
- <dt><code><b>--serializer-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema element names to C++ serialization function names. See the NAMING
- CONVENTION section below for more information.</dd>
-
- <dt><code><b>--const-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema-derived names to C++ constant names. See the NAMING CONVENTION
- section below for more information.</dd>
-
- <dt><code><b>--enumerator-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema enumeration values to C++ enumerator names. See the NAMING CONVENTION
- section below for more information.</dd>
-
- <dt><code><b>--element-type-regex</b></code> <i>regex</i></dt>
- <dd>Add <i>regex</i> to the list of regular expressions used to translate XML
- Schema element names to C++ element type names. See the NAMING CONVENTION
- section below for more information.</dd>
-
- <dt><code><b>--name-regex-trace</b></code></dt>
- <dd>Trace the process of applying regular expressions specified with the name
- transformation options. Use this option to find out why your regular
- expressions don't do what you expected them to do.</dd>
-
- <dt><code><b>--root-element-first</b></code></dt>
- <dd>Treat only the first global element as a document root. By default all
- global elements are considered document roots.</dd>
-
- <dt><code><b>--root-element-last</b></code></dt>
- <dd>Treat only the last global element as a document root. By default all global
- elements are considered document roots.</dd>
-
- <dt><code><b>--root-element-all</b></code></dt>
- <dd>Treat all global elements as document roots. This is the default behavior.
- By explicitly specifying this option you can suppress the warning that is
- issued if more than one global element is defined.</dd>
-
- <dt><code><b>--root-element-none</b></code></dt>
- <dd>Do not treat any global elements as document roots. By default all global
- elements are considered document roots.</dd>
-
- <dt><code><b>--root-element</b></code> <i>element</i></dt>
- <dd>Treat only <i>element</i> as a document root. Repeat this option to specify
- more than one root element.</dd>
-
- <dt><code><b>--custom-type</b></code> <i>map</i></dt>
- <dd>Use a custom C++ type instead of the generated class. The <i>map</i>
- argument is in the form
- <code><i>name</i>[<b>=</b><i>type</i>[<b>/</b><i>base</i>]]</code>, where
- <i>name</i> is a type name as defined in XML Schema and <i>type</i> is a C++
- type name that should be used instead. If <i>type</i> is not present or
- empty then the custom type is assumed to have the same name and be defined
- in the same namespace as the generated class would have. If <i>base</i> is
- specified then the generated class is still generated but with that name.</dd>
-
- <dt><code><b>--custom-type-regex</b></code> <i>regex</i></dt>
- <dd>Use custom C++ types instead of the generated classes. The <i>regex</i>
- argument is in the form
- <code><b>/</b><i>name-pat</i><b>/</b>[<i>type-sub</i><b>/</b>[<i>base-sub</i><b>/</b>]]</code>,
- where <i>name-pat</i> is a regex pattern that will be matched against type
- names as defined in XML Schema and <i>type-sub</i> is a C++ type name
- substitution that should be used instead. If <i>type-sub</i> is not present
- or its substitution results in an empty string then the custom type is
- assumed to have the same name and be defined in the same namespace as the
- generated class would have. If <i>base-sub</i> is present and its
- substitution results in a non-empty string then the generated class is still
- generated but with the result of this substitution as its name. The pattern
- and substitutions are in the Perl regular expression format. See also the
- REGEX AND SHELL QUOTING section below.</dd>
-
- <dt><code><b>--parts</b></code> <i>num</i></dt>
- <dd>Split generated source code into <i>num</i> parts. This is useful when
- translating large, monolithic schemas and a C++ compiler is not able to
- compile the resulting source code at once (usually due to insufficient
- memory).</dd>
-
- <dt><code><b>--parts-suffix</b></code> <i>suffix</i></dt>
- <dd>Use <i>suffix</i> instead of the default '<code><b>-</b></code>' to separate
- the file name from the part number.</dd>
-
-</dl>
- <h2>CXX-PARSER COMMAND OPTIONS</h2>
-
-<!--
- The following documentation was generated by CLI, a command
- line interface compiler for C++.
--->
-
-<dl class="options">
- <dt><code><b>--type-map</b></code> <i>mapfile</i></dt>
- <dd>Read XML Schema to C++ type mapping information from <i>mapfile</i>. Repeat
- this option to specify several type maps. Type maps are considered in order
- of appearance and the first match is used. By default all user-defined types
- are mapped to <code><b>void</b></code>. See the TYPE MAP section below for
- more information.</dd>
-
- <dt><code><b>--xml-parser</b></code> <i>parser</i></dt>
- <dd>Use <i>parser</i> as the underlying XML parser. Valid values are
- <code><b>xerces</b></code> for Xerces-C++ (default) and
- <code><b>expat</b></code> for Expat.</dd>
-
- <dt><code><b>--generate-validation</b></code></dt>
- <dd>Generate validation code. The validation code ("perfect parser") ensures
- that instance documents conform to the schema. Validation code is generated
- by default when the selected underlying XML parser is non-validating
- (<code><b>expat</b></code>).</dd>
-
- <dt><code><b>--suppress-validation</b></code></dt>
- <dd>Suppress the generation of validation code. Validation is suppressed by
- default when the selected underlying XML parser is validating
- (<code><b>xerces</b></code>).</dd>
-
- <dt><code><b>--generate-polymorphic</b></code></dt>
- <dd>Generate polymorphism-aware code. Specify this option if you use
- substitution groups or <code><b>xsi:type</b></code>.</dd>
-
- <dt><code><b>--generate-noop-impl</b></code></dt>
- <dd>Generate a sample parser implementation that does nothing (no operation).
- The sample implementation can then be filled with the application-specific
- code. For an input file in the form <code><b>name.xsd</b></code> this option
- triggers the generation of two additional C++ files in the form:
- <code><b>name-pimpl.hxx</b></code> (parser implementation header file) and
- <code><b>name-pimpl.cxx</b></code> (parser implementation source file).</dd>
-
- <dt><code><b>--generate-print-impl</b></code></dt>
- <dd>Generate a sample parser implementation that prints the XML data to
- <code>STDOUT</code>. For an input file in the form
- <code><b>name.xsd</b></code> this option triggers the generation of two
- additional C++ files in the form: <code><b>name-pimpl.hxx</b></code> (parser
- implementation header file) and <code><b>name-pimpl.cxx</b></code> (parser
- implementation source file).</dd>
-
- <dt><code><b>--generate-test-driver</b></code></dt>
- <dd>Generate a test driver for the sample parser implementation. For an input
- file in the form <code><b>name.xsd</b></code> this option triggers the
- generation of an additional C++ file in the form
- <code><b>name-driver.cxx</b></code>.</dd>
-
- <dt><code><b>--force-overwrite</b></code></dt>
- <dd>Force overwriting of the existing implementation and test driver files. Use
- this option only if you do not mind loosing the changes you have made in the
- sample implementation or test driver files.</dd>
-
- <dt><code><b>--root-element-first</b></code></dt>
- <dd>Indicate that the first global element is the document root. This
- information is used to generate the test driver for the sample
- implementation.</dd>
-
- <dt><code><b>--root-element-last</b></code></dt>
- <dd>Indicate that the last global element is the document root. This information
- is used to generate the test driver for the sample implementation.</dd>
-
- <dt><code><b>--root-element</b></code> <i>element</i></dt>
- <dd>Indicate that <i>element</i> is the document root. This information is used
- to generate the test driver for the sample implementation.</dd>
-
- <dt><code><b>--skel-type-suffix</b></code> <i>suffix</i></dt>
- <dd>Use the provided <i>suffix</i> instead of the default
- <code><b>_pskel</b></code> to construct the names of the generated parser
- skeletons.</dd>
-
- <dt><code><b>--skel-file-suffix</b></code> <i>suffix</i></dt>
- <dd>Use the provided <i>suffix</i> instead of the default
- <code><b>-pskel</b></code> to construct the names of the generated parser
- skeleton files.</dd>
-
- <dt><code><b>--impl-type-suffix</b></code> <i>suffix</i></dt>
- <dd>Use the provided <i>suffix</i> instead of the default
- <code><b>_pimpl</b></code> to construct the names of the parser
- implementations for the built-in XML Schema types as well as sample parser
- implementations.</dd>
-
- <dt><code><b>--impl-file-suffix</b></code> <i>suffix</i></dt>
- <dd>Use the provided <i>suffix</i> instead of the default
- <code><b>-pimpl</b></code> to construct the names of the generated sample
- parser implementation files.</dd>
-
-</dl>
- <h1>NAMING CONVENTION</h1>
-
- <p>The compiler can be instructed to use a particular naming
- convention in the generated code. A number of widely-used
- conventions can be selected using the <code><b>--type-naming</b></code>
- and <code><b>--function-naming</b></code> options. A custom
- naming convention can be achieved using the
- <code><b>--type-regex</b></code>,
- <code><b>--accessor-regex</b></code>,
- <code><b>--one-accessor-regex</b></code>,
- <code><b>--opt-accessor-regex</b></code>,
- <code><b>--seq-accessor-regex</b></code>,
- <code><b>--modifier-regex</b></code>,
- <code><b>--one-modifier-regex</b></code>,
- <code><b>--opt-modifier-regex</b></code>,
- <code><b>--seq-modifier-regex</b></code>,
- <code><b>--parser-regex</b></code>,
- <code><b>--serializer-regex</b></code>,
- <code><b>--const-regex</b></code>,
- <code><b>--enumerator-regex</b></code>, and
- <code><b>--element-type-regex</b></code> options.
- </p>
-
- <p>The <code><b>--type-naming</b></code> option specifies the
- convention that should be used for naming C++ types. Possible
- values for this option are <code><b>knr</b></code> (default),
- <code><b>ucc</b></code>, and <code><b>java</b></code>. The
- <code><b>knr</b></code> value (stands for K&amp;R) signifies
- the standard, lower-case naming convention with the underscore
- used as a word delimiter, for example: <code>foo</code>,
- <code>foo_bar</code>. The <code><b>ucc</b></code> (stands
- for upper-camel-case) and
- <code><b>java</b></code> values a synonyms for the same
- naming convention where the first letter of each word in the
- name is capitalized, for example: <code>Foo</code>,
- <code>FooBar</code>.</p>
-
- <p>Similarly, the <code><b>--function-naming</b></code> option
- specifies the convention that should be used for naming C++
- functions. Possible values for this option are <code><b>knr</b></code>
- (default), <code><b>lcc</b></code>, and <code><b>java</b></code>. The
- <code><b>knr</b></code> value (stands for K&amp;R) signifies
- the standard, lower-case naming convention with the underscore
- used as a word delimiter, for example: <code>foo()</code>,
- <code>foo_bar()</code>. The <code><b>lcc</b></code> value
- (stands for lower-camel-case) signifies a naming convention
- where the first letter of each word except the first is
- capitalized, for example: <code>foo()</code>, <code>fooBar()</code>.
- The <code><b>java</b></code> naming convention is similar to
- the lower-camel-case one except that accessor functions are prefixed
- with <code>get</code>, modifier functions are prefixed
- with <code>set</code>, parsing functions are prefixed
- with <code>parse</code>, and serialization functions are
- prefixed with <code>serialize</code>, for example:
- <code>getFoo()</code>, <code>setFooBar()</code>,
- <code>parseRoot()</code>, <code>serializeRoot()</code>.</p>
-
- <p>Note that the naming conventions specified with the
- <code><b>--type-naming</b></code> and
- <code><b>--function-naming</b></code> options perform only limited
- transformations on the names that come from the schema in the
- form of type, attribute, and element names. In other words, to
- get consistent results, your schemas should follow a similar
- naming convention as the one you would like to have in the
- generated code. Alternatively, you can use the
- <code><b>--*-regex</b></code> options (discussed below)
- to perform further transformations on the names that come from
- the schema.</p>
-
- <p>The
- <code><b>--type-regex</b></code>,
- <code><b>--accessor-regex</b></code>,
- <code><b>--one-accessor-regex</b></code>,
- <code><b>--opt-accessor-regex</b></code>,
- <code><b>--seq-accessor-regex</b></code>,
- <code><b>--modifier-regex</b></code>,
- <code><b>--one-modifier-regex</b></code>,
- <code><b>--opt-modifier-regex</b></code>,
- <code><b>--seq-modifier-regex</b></code>,
- <code><b>--parser-regex</b></code>,
- <code><b>--serializer-regex</b></code>,
- <code><b>--const-regex</b></code>,
- <code><b>--enumerator-regex</b></code>, and
- <code><b>--element-type-regex</b></code> options allow you to
- specify extra regular expressions for each name category in
- addition to the predefined set that is added depending on
- the <code><b>--type-naming</b></code> and
- <code><b>--function-naming</b></code> options. Expressions
- that are provided with the <code><b>--*-regex</b></code>
- options are evaluated prior to any predefined expressions.
- This allows you to selectively override some or all of the
- predefined transformations. When debugging your own expressions,
- it is often useful to see which expressions match which names.
- The <code><b>--name-regex-trace</b></code> option allows you
- to trace the process of applying regular expressions to
- names.</p>
-
- <p>The value for the <code><b>--*-regex</b></code> options should be
- a perl-like regular expression in the form
- <code><b>/</b><i>pattern</i><b>/</b><i>replacement</i><b>/</b></code>.
- Any character can be used as a delimiter instead of <code><b>/</b></code>.
- Escaping of the delimiter character in <code><i>pattern</i></code> or
- <code><i>replacement</i></code> is not supported.
- All the regular expressions for each category are pushed into a
- category-specific stack with the last specified expression
- considered first. The first match that succeeds is used. For the
- <code><b>--one-accessor-regex</b></code> (accessors with cardinality one),
- <code><b>--opt-accessor-regex</b></code> (accessors with cardinality optional), and
- <code><b>--seq-accessor-regex</b></code> (accessors with cardinality sequence)
- categories the <code><b>--accessor-regex</b></code> expressions are
- used as a fallback. For the
- <code><b>--one-modifier-regex</b></code>,
- <code><b>--opt-modifier-regex</b></code>, and
- <code><b>--seq-modifier-regex</b></code>
- categories the <code><b>--modifier-regex</b></code> expressions are
- used as a fallback. For the <code><b>--element-type-regex</b></code>
- category the <code><b>--type-regex</b></code> expressions are
- used as a fallback.</p>
-
- <p>The type name expressions (<code><b>--type-regex</b></code>)
- are evaluated on the name string that has the following
- format:</p>
-
- <p><code>[<i>namespace</i> ]<i>name</i>[,<i>name</i>][,<i>name</i>][,<i>name</i>]</code></p>
-
- <p>The element type name expressions
- (<code><b>--element-type-regex</b></code>), effective only when
- the <code><b>--generate-element-type</b></code> option is specified,
- are evaluated on the name string that has the following
- format:</p>
-
- <p><code><i>namespace</i> <i>name</i></code></p>
-
- <p>In the type name format the <code><i>namespace</i></code> part
- followed by a space is only present for global type names. For
- global types and elements defined in schemas without a target
- namespace, the <code><i>namespace</i></code> part is empty but
- the space is still present. In the type name format after the
- initial <code><i>name</i></code> component, up to three additional
- <code><i>name</i></code> components can be present, separated
- by commas. For example:</p>
-
- <p><code><b>http://example.com/hello type</b></code></p>
- <p><code><b>foo</b></code></p>
- <p><code><b>foo,iterator</b></code></p>
- <p><code><b>foo,const,iterator</b></code></p>
-
- <p>The following set of predefined regular expressions is used to
- transform type names when the upper-camel-case naming convention
- is selected:</p>
-
- <p><code><b>/(?:[^ ]* )?([^,]+)/\u$1/</b></code></p>
- <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+)/\u$1\u$2/</b></code></p>
- <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\u$1\u$2\u$3/</b></code></p>
- <p><code><b>/(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\u$1\u$2\u$3\u$4/</b></code></p>
-
- <p>The accessor and modifier expressions
- (<code><b>--*accessor-regex</b></code> and
- <code><b>--*modifier-regex</b></code>) are evaluated on the name string
- that has the following format:</p>
-
- <p><code><i>name</i>[,<i>name</i>][,<i>name</i>]</code></p>
-
- <p>After the initial <code><i>name</i></code> component, up to two
- additional <code><i>name</i></code> components can be present,
- separated by commas. For example:</p>
-
- <p><code><b>foo</b></code></p>
- <p><code><b>dom,document</b></code></p>
- <p><code><b>foo,default,value</b></code></p>
-
- <p>The following set of predefined regular expressions is used to
- transform accessor names when the <code><b>java</b></code> naming
- convention is selected:</p>
-
- <p><code><b>/([^,]+)/get\u$1/</b></code></p>
- <p><code><b>/([^,]+),([^,]+)/get\u$1\u$2/</b></code></p>
- <p><code><b>/([^,]+),([^,]+),([^,]+)/get\u$1\u$2\u$3/</b></code></p>
-
- <p>For the parser, serializer, and enumerator categories, the
- corresponding regular expressions are evaluated on local names of
- elements and on enumeration values, respectively. For example, the
- following predefined regular expression is used to transform parsing
- function names when the <code><b>java</b></code> naming convention
- is selected:</p>
-
- <p><code><b>/(.+)/parse\u$1/</b></code></p>
-
- <p>The const category is used to create C++ constant names for the
- element/wildcard/text content ids in ordered types.</p>
-
- <p>See also the REGEX AND SHELL QUOTING section below.</p>
-
- <h1>TYPE MAP</h1>
-
- <p>Type map files are used in C++/Parser to define a mapping between
- XML Schema and C++ types. The compiler uses this information
- to determine the return types of <code><b>post_*</b></code>
- functions in parser skeletons corresponding to XML Schema
- types as well as argument types for callbacks corresponding
- to elements and attributes of these types.</p>
-
- <p>The compiler has a set of predefined mapping rules that map
- built-in XML Schema types to suitable C++ types (discussed
- below) and all other types to <code><b>void</b></code>.
- By providing your own type maps you can override these predefined
- rules. The format of the type map file is presented below:
- </p>
-
- <pre>
-namespace &lt;schema-namespace> [&lt;cxx-namespace>]
-{
- (include &lt;file-name>;)*
- ([type] &lt;schema-type> &lt;cxx-ret-type> [&lt;cxx-arg-type>];)*
-}
- </pre>
-
- <p>Both <code><i>&lt;schema-namespace></i></code> and
- <code><i>&lt;schema-type></i></code> are regex patterns while
- <code><i>&lt;cxx-namespace></i></code>,
- <code><i>&lt;cxx-ret-type></i></code>, and
- <code><i>&lt;cxx-arg-type></i></code> are regex pattern
- substitutions. All names can be optionally enclosed in
- <code><b>" "</b></code>, for example, to include white-spaces.</p>
-
- <p><code><i>&lt;schema-namespace></i></code> determines XML
- Schema namespace. Optional <code><i>&lt;cxx-namespace></i></code>
- is prefixed to every C++ type name in this namespace declaration.
- <code><i>&lt;cxx-ret-type></i></code> is a C++ type name that is
- used as a return type for the <code><b>post_*</b></code> functions.
- Optional <code><i>&lt;cxx-arg-type></i></code> is an argument
- type for callback functions corresponding to elements and attributes
- of this type. If
- <code><i>&lt;cxx-arg-type></i></code> is not specified, it defaults
- to <code><i>&lt;cxx-ret-type></i></code> if <code><i>&lt;cxx-ret-type></i></code>
- ends with <code><b>*</b></code> or <code><b>&amp;</b></code> (that is,
- it is a pointer or a reference) and
- <code><b>const</b>&nbsp;<i>&lt;cxx-ret-type></i><b>&amp;</b></code>
- otherwise.
- <code><i>&lt;file-name></i></code> is a file name either in the
- <code><b>" "</b></code> or <code><b>&lt; ></b></code> format
- and is added with the <code><b>#include</b></code> directive to
- the generated code.</p>
-
- <p>The <code><b>#</b></code> character starts a comment that ends
- with a new line or end of file. To specify a name that contains
- <code><b>#</b></code> enclose it in <code><b>" "</b></code>.
- For example:</p>
-
- <pre>
-namespace http://www.example.com/xmlns/my my
-{
- include "my.hxx";
-
- # Pass apples by value.
- #
- apple apple;
-
- # Pass oranges as pointers.
- #
- orange orange_t*;
-}
- </pre>
-
- <p>In the example above, for the
- <code><b>http://www.example.com/xmlns/my#orange</b></code>
- XML Schema type, the <code><b>my::orange_t*</b></code> C++ type will
- be used as both return and argument types.</p>
-
- <p>Several namespace declarations can be specified in a single
- file. The namespace declaration can also be completely
- omitted to map types in a schema without a namespace. For
- instance:</p>
-
- <pre>
-include "my.hxx";
-apple apple;
-
-namespace http://www.example.com/xmlns/my
-{
- orange "const orange_t*";
-}
- </pre>
-
- <p>The compiler has a number of predefined mapping rules that can be
- presented as the following map files. The string-based XML Schema
- built-in types are mapped to either <code><b>std::string</b></code>
- or <code><b>std::wstring</b></code> depending on the character type
- selected with the <code><b>--char-type</b></code> option
- (<code><b>char</b></code> by default).</p>
-
- <pre>
-namespace http://www.w3.org/2001/XMLSchema
-{
- boolean bool bool;
-
- byte "signed char" "signed char";
- unsignedByte "unsigned char" "unsigned char";
-
- short short short;
- unsignedShort "unsigned short" "unsigned short";
-
- int int int;
- unsignedInt "unsigned int" "unsigned int";
-
- long "long long" "long long";
- unsignedLong "unsigned long long" "unsigned long long";
-
- integer "long long" "long long";
-
- negativeInteger "long long" "long long";
- nonPositiveInteger "long long" "long long";
-
- positiveInteger "unsigned long long" "unsigned long long";
- nonNegativeInteger "unsigned long long" "unsigned long long";
-
- float float float;
- double double double;
- decimal double double;
-
- string std::string;
- normalizedString std::string;
- token std::string;
- Name std::string;
- NMTOKEN std::string;
- NCName std::string;
- ID std::string;
- IDREF std::string;
- language std::string;
- anyURI std::string;
-
- NMTOKENS xml_schema::string_sequence;
- IDREFS xml_schema::string_sequence;
-
- QName xml_schema::qname;
-
- base64Binary std::auto_ptr&lt;xml_schema::buffer>
- std::auto_ptr&lt;xml_schema::buffer>;
- hexBinary std::auto_ptr&lt;xml_schema::buffer>
- std::auto_ptr&lt;xml_schema::buffer>;
-
- date xml_schema::date;
- dateTime xml_schema::date_time;
- duration xml_schema::duration;
- gDay xml_schema::gday;
- gMonth xml_schema::gmonth;
- gMonthDay xml_schema::gmonth_day;
- gYear xml_schema::gyear;
- gYearMonth xml_schema::gyear_month;
- time xml_schema::time;
-}
- </pre>
-
- <p>The last predefined rule maps anything that wasn't mapped by
- previous rules to <code><b>void</b></code>:</p>
-
- <pre>
-namespace .*
-{
- .* void void;
-}
- </pre>
-
-
- <p>When you provide your own type maps with the
- <code><b>--type-map</b></code> option, they are evaluated first.
- This allows you to selectively override predefined rules.</p>
-
- <h1>REGEX AND SHELL QUOTING</h1>
-
- <p>When entering a regular expression argument in the shell
- command line it is often necessary to use quoting (enclosing
- the argument in <code><b>"&nbsp;"</b></code> or
- <code><b>'&nbsp;'</b></code>) in order to prevent the shell
- from interpreting certain characters, for example, spaces as
- argument separators and <code><b>$</b></code> as variable
- expansions.</p>
-
- <p>Unfortunately it is hard to achieve this in a manner that is
- portable across POSIX shells, such as those found on
- GNU/Linux and UNIX, and Windows shell. For example, if you
- use <code><b>"&nbsp;"</b></code> for quoting you will get a
- wrong result with POSIX shells if your expression contains
- <code><b>$</b></code>. The standard way of dealing with this
- on POSIX systems is to use <code><b>'&nbsp;'</b></code> instead.
- Unfortunately, Windows shell does not remove <code><b>'&nbsp;'</b></code>
- from arguments when they are passed to applications. As a result you
- may have to use <code><b>'&nbsp;'</b></code> for POSIX and
- <code><b>"&nbsp;"</b></code> for Windows (<code><b>$</b></code> is
- not treated as a special character on Windows).</p>
-
- <p>Alternatively, you can save regular expression options into
- a file, one option per line, and use this file with the
- <code><b>--options-file</b></code> option. With this approach
- you don't need to worry about shell quoting.</p>
-
- <h1>DIAGNOSTICS</h1>
-
- <p>If the input file is not a valid W3C XML Schema definition,
- <code><b>xsd</b></code> will issue diagnostic messages to STDERR
- and exit with non-zero exit code.</p>
-
- <h1>BUGS</h1>
-
- <p>Send bug reports to the
- <a href="mailto:xsd-users@codesynthesis.com">xsd-users@codesynthesis.com</a> mailing list.</p>
-
- </div>
- <div id="footer">
- &copy;2005-2014 <a href="http://codesynthesis.com">CODE SYNTHESIS TOOLS CC</a>
-
- <div id="terms">
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- <a href="http://codesynthesis.com/licenses/fdl-1.2.txt">GNU Free
- Documentation License, version 1.2</a>; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- </div>
- </div>
-</div>
-</body>
-</html>
diff --git a/xsd/elements.hxx b/xsd/elements.hxx
new file mode 100644
index 0000000..d3dd659
--- /dev/null
+++ b/xsd/elements.hxx
@@ -0,0 +1,125 @@
+// file : xsd/elements.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_ELEMENTS_HXX
+#define XSD_ELEMENTS_HXX
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/types.hxx>
+
+namespace SemanticGraph = XSDFrontend::SemanticGraph;
+namespace Traversal = XSDFrontend::Traversal;
+
+// Anonymous feedback via belongs edge.
+//
+struct AnonymousBase : Traversal::Element, Traversal::Attribute
+{
+ AnonymousBase (Traversal::NodeDispatcher& d1)
+ : complex_ (&d1, 0)
+ {
+ edge_traverser (belongs_);
+ belongs_.node_traverser (complex_);
+ }
+
+ AnonymousBase (Traversal::NodeDispatcher& d1, Traversal::NodeDispatcher& d2)
+ : complex_ (&d1, &d2)
+ {
+ edge_traverser (belongs_);
+ belongs_.node_traverser (complex_);
+ }
+
+ // Hooks.
+ //
+public:
+ virtual void
+ member_pre (SemanticGraph::Member&)
+ {
+ }
+
+ virtual void
+ member_post (SemanticGraph::Member&)
+ {
+ }
+
+ /*
+ virtual void
+ type_pre (SemanticGraph::Type& t)
+ {
+ }
+
+ virtual void
+ type_post (SemanticGraph::Type& t)
+ {
+ }
+ */
+
+public:
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ SemanticGraph::Type& t (e.type ());
+
+ if (!t.named_p () && !t.context ().count ("seen"))
+ {
+ t.context ().set ("seen", true);
+
+ member_pre (e);
+
+ Element::belongs (e, belongs_);
+
+ member_post (e);
+
+ t.context ().remove ("seen");
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Attribute& a)
+ {
+ SemanticGraph::Type& t (a.type ());
+
+ if (!t.named_p () && !t.context ().count ("seen"))
+ {
+ t.context ().set ("seen", true);
+
+ member_pre (a);
+
+ Attribute::belongs (a, belongs_);
+
+ member_post (a);
+
+ t.context ().remove ("seen");
+ }
+ }
+
+private:
+ struct Complex : Traversal::Complex
+ {
+ Complex (Traversal::NodeDispatcher* d1, Traversal::NodeDispatcher* d2)
+ : d1_ (d1), d2_ (d2)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ if (d1_)
+ d1_->dispatch (c);
+
+ if (d2_)
+ d2_->dispatch (c);
+ }
+
+ private:
+ Traversal::NodeDispatcher* d1_;
+ Traversal::NodeDispatcher* d2_;
+
+ } complex_;
+
+ Traversal::Belongs belongs_;
+};
+
+#endif // XSD_ELEMENTS_HXX
diff --git a/xsd/examples/cxx/parser/README b/xsd/examples/cxx/parser/README
deleted file mode 100644
index 01906c7..0000000
--- a/xsd/examples/cxx/parser/README
+++ /dev/null
@@ -1,45 +0,0 @@
-This directory contains a number of examples that show how to use
-the C++/Parser mapping. The following list gives an overview of
-each example. See the README files in example directories for
-more information on each example.
-
-hello
- A simple "Hello, world!" example that shows how to parse XML
- documents.
-
-generated
- Shows how to use the sample implementation and test driver
- generation feature. This example does not have any hand-written
- C++ code; everything is generated by the XSD compiler.
-
-library
- Shows how to handle more complex data structures and construct
- a custom in-memory object model.
-
-mixin
- Shows how to reuse implementations of base parsers in derived
- parsers using the mixin C++ idiom.
-
-wildcard
- Shows how to parse the XML data matched by XML Schema wildcards
- (any and anyAttribute).
-
-multiroot
- Shows how to handle XML vocabularies with multiple root elements.
-
-polymorphism
- Shows how to use XML Schema polymorphism features such as the
- xsi:type attribute and substitution groups.
-
-polyroot
- Shows how to handle the xsi:type attribute when it is used on root
- elements.
-
-performance
- Measures the performance of XML parsing. This example also shows how
- to structure your code to achieve the maximum performance for this
- operation.
-
-mixed
- Shows how to handle raw, "type-less content" such as mixed content
- models, anyType/anySimpleType, and any/anyAttribute. \ No newline at end of file
diff --git a/xsd/examples/cxx/parser/generated/README b/xsd/examples/cxx/parser/generated/README
deleted file mode 100644
index ca56974..0000000
--- a/xsd/examples/cxx/parser/generated/README
+++ /dev/null
@@ -1,32 +0,0 @@
-This example shows how to use the sample implementation and test
-driver generation feature of the C++/Parser mapping. This example
-does not have any hand-written C++ code; everything is generated
-by the XSD compiler.
-
-The example consists of the following files:
-
-library.xsd
- XML Schema which describes a library of books.
-
-library.xml
- Sample XML instance document.
-
-library-pskel.hxx
-library-pskel.cxx
- Parser skeletons generated by XSD from library.xsd.
-
-library-pimpl.hxx
-library-pimpl.cxx
- Sample parser implementations that print the XML data to STDOUT.
- These are generated by XSD from library.xsd with the
- --generate-print-impl option.
-
-library-driver.cxx
- Sample driver for the example. It is generated by XSD from
- library.xsd with the --generate-test-driver option.
-
-
-To run the example on the sample XML instance document simply
-execute:
-
-$ ./library-driver library.xml
diff --git a/xsd/examples/cxx/parser/generated/library.xml b/xsd/examples/cxx/parser/generated/library.xml
deleted file mode 100644
index b1ac98c..0000000
--- a/xsd/examples/cxx/parser/generated/library.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/library/library.xml
-copyright : not copyrighted - public domain
-
--->
-
-<lib:catalog xmlns:lib="http://www.codesynthesis.com/library"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/library library.xsd">
-
- <book id="MM" available="false">
- <isbn>0679760806</isbn>
- <title>The Master and Margarita</title>
- <genre>fiction</genre>
-
- <author recommends="WP">
- <name>Mikhail Bulgakov</name>
- <born>1891-05-15</born>
- <died>1940-03-10</died>
- </author>
- </book>
-
-
- <book id="WP" available="true" >
- <isbn>0679600841</isbn>
- <title>War and Peace</title>
- <genre>history</genre>
-
- <author recommends="CP">
- <name>Leo Tolstoy</name>
- <born>1828-09-09</born>
- <died>1910-11-20</died>
- </author>
- </book>
-
-
- <book id="CP" available="false">
- <isbn>0679420290</isbn>
- <title>Crime and Punishment</title>
- <genre>philosophy</genre>
-
- <author>
- <name>Fyodor Dostoevsky</name>
- <born>1821-11-11</born>
- <died>1881-02-09</died>
- </author>
- </book>
-
-</lib:catalog>
diff --git a/xsd/examples/cxx/parser/generated/library.xsd b/xsd/examples/cxx/parser/generated/library.xsd
deleted file mode 100644
index 71e4005..0000000
--- a/xsd/examples/cxx/parser/generated/library.xsd
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/library/library.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:lib="http://www.codesynthesis.com/library"
- targetNamespace="http://www.codesynthesis.com/library">
-
- <xsd:simpleType name="isbn">
- <xsd:restriction base="xsd:unsignedInt"/>
- </xsd:simpleType>
-
-
- <xsd:complexType name="title">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="lang" type="xsd:string"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
-
- <xsd:simpleType name="genre">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="romance"/>
- <xsd:enumeration value="fiction"/>
- <xsd:enumeration value="horror"/>
- <xsd:enumeration value="history"/>
- <xsd:enumeration value="philosophy"/>
- </xsd:restriction>
- </xsd:simpleType>
-
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="born" type="xsd:string"/>
- <xsd:element name="died" type="xsd:string" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:complexType name="author">
- <xsd:complexContent>
- <xsd:extension base="lib:person">
- <xsd:attribute name="recommends" type="xsd:IDREF"/> <!-- Book -->
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
-
- <xsd:complexType name="book">
- <xsd:sequence>
- <xsd:element name="isbn" type="lib:isbn"/>
- <xsd:element name="title" type="lib:title"/>
- <xsd:element name="genre" type="lib:genre"/>
- <xsd:element name="author" type="lib:author" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="available" type="xsd:boolean" use="required"/>
- <xsd:attribute name="id" type="xsd:ID" use="required"/>
- </xsd:complexType>
-
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="book" type="lib:book" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:element name="catalog" type="lib:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/parser/generated/makefile b/xsd/examples/cxx/parser/generated/makefile
deleted file mode 100644
index 78a60fe..0000000
--- a/xsd/examples/cxx/parser/generated/makefile
+++ /dev/null
@@ -1,110 +0,0 @@
-# file : examples/cxx/parser/generated/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := library.xsd
-
-obj := $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.o) $(xsd:.xsd=-pimpl.o) $(xsd:.xsd=-driver.o))
-dep := $(obj:.o=.o.d)
-
-
-driver := $(out_base)/$(xsd:.xsd=-driver)
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) \
- $(xsd:.xsd=-pskel.ixx) \
- $(xsd:.xsd=-pskel.cxx) \
- $(xsd:.xsd=-pimpl.hxx) \
- $(xsd:.xsd=-pimpl.cxx) \
- $(xsd:.xsd=-driver.cxx)
-
-gen := $(addprefix $(out_base)/,$(genf))
-
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-print-impl --generate-test-driver \
---force-overwrite
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/library.xsd,$(install_doc_dir)/xsd/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(install_doc_dir)/xsd/$(path)/library.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/library.xsd,$(dist_prefix)/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(dist_prefix)/$(path)/library.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pimpl.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := $(xsd:.xsd=-driver) $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-
-xsd_parser_impl_suffix := -pimpl
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/parser/hello/README b/xsd/examples/cxx/parser/hello/README
deleted file mode 100644
index 97449de..0000000
--- a/xsd/examples/cxx/parser/hello/README
+++ /dev/null
@@ -1,28 +0,0 @@
-This is a "Hello, world!" example that shows how to use the
-C++/Parser mapping to parse XML instance documents.
-
-The example consists of the following files:
-
-hello.xsd
- XML Schema which describes "hello" instance documents.
-
-hello.xml
- Sample XML instance document.
-
-hello-pskel.hxx
-hello-pskel.cxx
- Parser skeletons generated by XSD from hello.xsd.
-
-driver.cxx
- A parser implementation and a driver for the example. The
- parser implementation simply prints the data to STDERR.
- The driver first constructs a parser instance from the
- parser implementation mentioned above and a couple of
- predefined parsers for the XML Schema built-in types.
- In then invokes this parser instance to parse the input
- file.
-
-To run the example on the sample XML instance document simply
-execute:
-
-$ ./driver hello.xml
diff --git a/xsd/examples/cxx/parser/hello/driver.cxx b/xsd/examples/cxx/parser/hello/driver.cxx
deleted file mode 100644
index e261e10..0000000
--- a/xsd/examples/cxx/parser/hello/driver.cxx
+++ /dev/null
@@ -1,67 +0,0 @@
-// file : examples/cxx/parser/hello/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <string>
-#include <iostream>
-
-#include "hello-pskel.hxx"
-
-using namespace std;
-
-struct hello_pimpl: hello_pskel
-{
- virtual void
- greeting (const string& greeting)
- {
- greeting_ = greeting;
- }
-
- virtual void
- name (const string& name)
- {
- cout << greeting_ << ", " << name << "!" << endl;
- }
-
-private:
- string greeting_;
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " hello.xml" << endl;
- return 1;
- }
-
- try
- {
- // Construct the parser.
- //
- xml_schema::string_pimpl string_p;
- hello_pimpl hello_p;
-
- hello_p.greeting_parser (string_p);
- hello_p.name_parser (string_p);
-
- // Parse the XML instance document. The second argument to the
- // document's constructor is the document's root element name.
- //
- xml_schema::document doc_p (hello_p, "hello");
-
- hello_p.pre ();
- doc_p.parse (argv[1]);
- hello_p.post_hello ();
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/parser/hello/hello.xml b/xsd/examples/cxx/parser/hello/hello.xml
deleted file mode 100644
index dd0c13d..0000000
--- a/xsd/examples/cxx/parser/hello/hello.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/hello/hello.xml
-copyright : not copyrighted - public domain
-
--->
-
-<hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="hello.xsd">
-
- <greeting>Hello</greeting>
-
- <name>sun</name>
- <name>moon</name>
- <name>world</name>
-
-</hello>
diff --git a/xsd/examples/cxx/parser/hello/hello.xsd b/xsd/examples/cxx/parser/hello/hello.xsd
deleted file mode 100644
index be69957..0000000
--- a/xsd/examples/cxx/parser/hello/hello.xsd
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/hello/hello.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="hello">
- <xsd:sequence>
- <xsd:element name="greeting" type="xsd:string"/>
- <xsd:element name="name" type="xsd:string" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="hello" type="hello"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/parser/hello/makefile b/xsd/examples/cxx/parser/hello/makefile
deleted file mode 100644
index ccf0257..0000000
--- a/xsd/examples/cxx/parser/hello/makefile
+++ /dev/null
@@ -1,101 +0,0 @@
-# file : examples/cxx/parser/hello/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := hello.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/hello.xsd,$(install_doc_dir)/xsd/$(path)/hello.xsd)
- $(call install-data,$(src_base)/hello.xml,$(install_doc_dir)/xsd/$(path)/hello.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/hello.xsd,$(dist_prefix)/$(path)/hello.xsd)
- $(call install-data,$(src_base)/hello.xml,$(dist_prefix)/$(path)/hello.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/parser/library/README b/xsd/examples/cxx/parser/library/README
deleted file mode 100644
index 3f515f6..0000000
--- a/xsd/examples/cxx/parser/library/README
+++ /dev/null
@@ -1,44 +0,0 @@
-This example shows how to use the C++/Parser mapping to construct
-a custom in-memory object model from XML instance documents.
-
-The example consists of the following files:
-
-library.xsd
- XML Schema which describes a library of books.
-
-library.xml
- Sample XML instance document.
-
-library.hxx
- Types that describe a library of books in C++. These are
- hand-written.
-
-library.map
- Type map. It maps XML Schema types defined in library.xsd
- to the C++ types defined in library.hxx.
-
-library-pskel.hxx
-library-pskel.ixx
-library-pskel.cxx
- Parser skeletons generated by XSD from library.xsd and
- library.map.
-
-library-pimpl.hxx
-library-pimpl.cxx
- Parser implementations that construct the custom in-memory
- object model from an XML instance using the types from
- library.hxx. These are hand-written implementations of
- the parser skeletons defined in library-pskel.hxx.
-
-driver.cxx
- Driver for the example. It first constructs a parser
- instance from all the individual parsers found in
- library-pimpl.hxx. In then invokes this parser instance
- to parse the input file and produce the in-memory
- object model. Finally, it prints the contents of the
- in-memory object model to STDERR.
-
-To run the example on the sample XML instance document simply
-execute:
-
-$ ./driver library.xml
diff --git a/xsd/examples/cxx/parser/library/driver.cxx b/xsd/examples/cxx/parser/library/driver.cxx
deleted file mode 100644
index 3b63801..0000000
--- a/xsd/examples/cxx/parser/library/driver.cxx
+++ /dev/null
@@ -1,109 +0,0 @@
-// file : examples/cxx/parser/library/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <iostream>
-
-#include "library.hxx"
-#include "library-pimpl.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " library.xml" << endl;
- return 1;
- }
-
- try
- {
- using namespace library;
-
-
- // Construct the parser.
- //
- xml_schema::id_pimpl id_p;
- xml_schema::idref_pimpl idref_p;
- xml_schema::string_pimpl string_p;
- xml_schema::boolean_pimpl boolean_p;
-
- isbn_pimpl isbn_p;
-
- title_pimpl title_p;
- title_p.lang_parser (string_p);
-
- genre_pimpl genre_p;
-
- author_pimpl author_p;
- author_p.parsers (string_p, // name
- string_p, // born
- string_p, // died
- idref_p); // recommends
-
- book_pimpl book_p;
- book_p.parsers (isbn_p, // isbn
- title_p, // title
- genre_p, // genre
- author_p, // author
- boolean_p, // available
- id_p); // id
-
- catalog_pimpl catalog_p;
- catalog_p.book_parser (book_p);
-
-
- // Parse the XML instance document.
- //
- xml_schema::document doc_p (
- catalog_p,
- "http://www.codesynthesis.com/library", // root element namespace
- "catalog"); // root element name
-
- catalog_p.pre ();
- doc_p.parse (argv[1]);
- catalog c (catalog_p.post_catalog ());
-
-
- // Let's print what we've got.
- //
- for (catalog::const_iterator bi (c.begin ()); bi != c.end (); ++bi)
- {
- cerr << endl
- << "ID : " << bi->id () << endl
- << "ISBN : " << bi->isbn () << endl
- << "Title : " << bi->title () << endl
- << "Genre : " << bi->genre () << endl;
-
- for (book::authors::const_iterator ai (bi->author ().begin ());
- ai != bi->author ().end ();
- ++ai)
- {
- cerr << "Author : " << ai->name () << endl;
- cerr << " Born : " << ai->born () << endl;
-
- if (!ai->died ().empty ())
- cerr << " Died : " << ai->died () << endl;
-
- if (!ai->recommends ().empty ())
- {
- cerr << " Recommends : " << ai->recommends () << endl;
- }
- }
-
- cerr << "Available : " << std::boolalpha << bi->available () << endl;
- }
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/parser/library/library-pimpl.cxx b/xsd/examples/cxx/parser/library/library-pimpl.cxx
deleted file mode 100644
index 7a1e484..0000000
--- a/xsd/examples/cxx/parser/library/library-pimpl.cxx
+++ /dev/null
@@ -1,183 +0,0 @@
-// file : examples/cxx/parser/library/library-pimpl.cxx
-// copyright : not copyrighted - public domain
-
-#include "library-pimpl.hxx"
-
-namespace library
-{
- // isbn_impl
- //
- isbn isbn_pimpl::
- post_isbn ()
- {
- return post_unsigned_int ();
- }
-
- // title_pimpl
- //
- void title_pimpl::
- _pre ()
- {
- title_.lang ("");
- }
-
- void title_pimpl::
- lang (const std::string& lang)
- {
- title_.lang (lang);
- }
-
- title title_pimpl::
- post_title ()
- {
- title_.assign (post_string ());
- return title_;
- }
-
- // genre_pimpl
- //
- genre genre_pimpl::
- post_genre ()
- {
- genre r (romance);
- std::string v (post_string ());
-
- if (v == "romance") r = romance; else
- if (v == "fiction") r = fiction; else
- if (v == "horror") r = horror; else
- if (v == "history") r = history; else
- if (v == "philosophy") r = philosophy;
-
- return r;
- }
-
- // person_pimpl
- //
- void person_pimpl::
- _pre ()
- {
- person_.died ("");
- }
-
- void person_pimpl::
- name (const std::string& name)
- {
- person_.name (name);
- }
-
- void person_pimpl::
- born (const std::string& born)
- {
- person_.born (born);
- }
-
- void person_pimpl::
- died (const std::string& died)
- {
- person_.died (died);
- }
-
- person person_pimpl::
- post_person ()
- {
- return person_;
- }
-
- // author_pimpl
- //
- void author_pimpl::
- _pre ()
- {
- person_pimpl::_pre ();
- author_.recommends ("");
- }
-
- void author_pimpl::
- recommends (const std::string& recommends)
- {
- author_.recommends (recommends);
- }
-
- author author_pimpl::
- post_author ()
- {
- person p (post_person ());
-
- author_.name (p.name ());
- author_.born (p.born ());
- author_.died (p.died ());
-
- return author_;
- }
-
- // book_pimpl
- //
- void book_pimpl::
- _pre ()
- {
- book_.author ().clear ();
- }
-
- void book_pimpl::
- isbn (library::isbn isbn)
- {
- book_.isbn (isbn);
- }
-
- void book_pimpl::
- title (const library::title& title)
- {
- book_.title (title);
- }
-
- void book_pimpl::
- genre (library::genre genre)
- {
- book_.genre (genre);
- }
-
- void book_pimpl::
- author (const library::author& author)
- {
- book_.author ().push_back (author);
- }
-
- void book_pimpl::
- available (bool available)
- {
- book_.available (available);
- }
-
- void book_pimpl::
- id (const std::string& id)
- {
- book_.id (id);
- }
-
- book book_pimpl::
- post_book ()
- {
- return book_;
- }
-
- // catalog_pimpl
- //
- void catalog_pimpl::
- _pre ()
- {
- catalog_.clear ();
- }
-
- void catalog_pimpl::
- book (const library::book& book)
- {
- catalog_.push_back (book);
- }
-
- catalog catalog_pimpl::
- post_catalog ()
- {
- return catalog_;
- }
-}
-
diff --git a/xsd/examples/cxx/parser/library/library-pimpl.hxx b/xsd/examples/cxx/parser/library/library-pimpl.hxx
deleted file mode 100644
index 5d0dcc1..0000000
--- a/xsd/examples/cxx/parser/library/library-pimpl.hxx
+++ /dev/null
@@ -1,135 +0,0 @@
-// file : examples/cxx/parser/library/library-pimpl.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef LIBRARY_PIMPL_HXX
-#define LIBRARY_PIMPL_HXX
-
-#include "library.hxx"
-#include "library-pskel.hxx"
-
-namespace library
-{
- //
- //
- struct isbn_pimpl: isbn_pskel, xml_schema::unsigned_int_pimpl
- {
- virtual isbn
- post_isbn ();
- };
-
- //
- //
- struct title_pimpl: title_pskel, xml_schema::string_pimpl
- {
- virtual void
- _pre ();
-
- virtual void
- lang (const std::string&);
-
- virtual title
- post_title ();
-
- private:
- title title_;
- };
-
- //
- //
- struct genre_pimpl: genre_pskel, xml_schema::string_pimpl
- {
- virtual genre
- post_genre ();
- };
-
- //
- //
- struct person_pimpl: virtual person_pskel
- {
- virtual void
- _pre ();
-
- virtual void
- name (const std::string&);
-
- virtual void
- born (const std::string&);
-
- virtual void
- died (const std::string&);
-
- virtual person
- post_person ();
-
- private:
- person person_;
- };
-
- //
- //
- struct author_pimpl: author_pskel, person_pimpl
- {
- virtual void
- _pre ();
-
- virtual void
- recommends (const std::string&);
-
- virtual author
- post_author ();
-
- private:
- author author_;
- };
-
- //
- //
- struct book_pimpl: book_pskel
- {
- virtual void
- _pre ();
-
- virtual void
- isbn (library::isbn);
-
- virtual void
- title (const library::title&);
-
- virtual void
- genre (library::genre);
-
- virtual void
- author (const library::author&);
-
- virtual void
- available (bool);
-
- virtual void
- id (const std::string&);
-
- virtual book
- post_book ();
-
- private:
- book book_;
- };
-
- //
- //
- struct catalog_pimpl: catalog_pskel
- {
- virtual void
- _pre ();
-
- virtual void
- book (const library::book&);
-
- virtual catalog
- post_catalog ();
-
- private:
- catalog catalog_;
- };
-}
-
-#endif // LIBRARY_PIMPL_HXX
diff --git a/xsd/examples/cxx/parser/library/library.hxx b/xsd/examples/cxx/parser/library/library.hxx
deleted file mode 100644
index 552e7a5..0000000
--- a/xsd/examples/cxx/parser/library/library.hxx
+++ /dev/null
@@ -1,241 +0,0 @@
-// file : examples/cxx/parser/library/library.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef LIBRARY_HXX
-#define LIBRARY_HXX
-
-#include <string>
-#include <vector>
-
-namespace library
-{
- //
- //
- typedef unsigned int isbn;
-
-
- //
- //
- struct title: std::string
- {
- // lang
- //
- const std::string&
- lang () const
- {
- return lang_;
- }
-
- void
- lang (const std::string& lang)
- {
- lang_ = lang;
- }
-
- private:
- std::string lang_;
- };
-
-
- //
- //
- enum genre
- {
- romance,
- fiction,
- horror,
- history,
- philosophy
- };
-
-
- //
- //
- struct person
- {
- // name
- //
- const std::string&
- name () const
- {
- return name_;
- }
-
- void
- name (const std::string& name)
- {
- name_ = name;
- }
-
- // born
- //
- const std::string&
- born () const
- {
- return born_;
- }
-
- void
- born (const std::string& born)
- {
- born_ = born;
- }
-
-
- // died
- //
- const std::string&
- died () const
- {
- return died_;
- }
-
- void
- died (const std::string& died)
- {
- died_ = died;
- }
-
- private:
- std::string name_;
- std::string born_;
- std::string died_;
- };
-
-
- //
- //
- struct author: person
- {
- // recommends
- //
- const std::string&
- recommends () const
- {
- return recommends_;
- }
-
- void
- recommends (const std::string& recommends)
- {
- recommends_ = recommends;
- }
-
- private:
- std::string recommends_;
- };
-
-
- //
- //
- struct book
- {
- // isbn
- //
- library::isbn
- isbn () const
- {
- return isbn_;
- }
-
- void
- isbn (const library::isbn& isbn)
- {
- isbn_ = isbn;
- }
-
-
- // title
- //
- library::title
- title () const
- {
- return title_;
- }
-
- void
- title (const library::title& title)
- {
- title_ = title;
- }
-
-
- // genre
- //
- library::genre
- genre () const
- {
- return genre_;
- }
-
- void
- genre (const library::genre& genre)
- {
- genre_ = genre;
- }
-
-
- // author
- //
- typedef std::vector<library::author> authors;
-
- const authors&
- author () const
- {
- return author_;
- }
-
- authors&
- author ()
- {
- return author_;
- }
-
-
- // available
- //
- bool
- available () const
- {
- return available_;
- }
-
- void
- available (bool available)
- {
- available_ = available;
- }
-
-
- // id
- //
- const std::string&
- id () const
- {
- return id_;
- }
-
- void
- id (const std::string& id)
- {
- id_ = id;
- }
-
- private:
- library::isbn isbn_;
- library::title title_;
- library::genre genre_;
-
- authors author_;
-
- bool available_;
- std::string id_;
- };
-
-
- //
- //
- typedef std::vector<book> catalog;
-}
-
-#endif // LIBRARY_HXX
diff --git a/xsd/examples/cxx/parser/library/library.map b/xsd/examples/cxx/parser/library/library.map
deleted file mode 100644
index 3a49b49..0000000
--- a/xsd/examples/cxx/parser/library/library.map
+++ /dev/null
@@ -1,15 +0,0 @@
-# file : examples/cxx/parser/library/library.map
-# copyright : not copyrighted - public domain
-
-namespace http://www.codesynthesis.com/library ::library
-{
- include "library.hxx";
-
- isbn isbn isbn;
- title title;
- genre genre genre;
- person person;
- author author;
- book book;
- catalog catalog;
-}
diff --git a/xsd/examples/cxx/parser/library/library.xml b/xsd/examples/cxx/parser/library/library.xml
deleted file mode 100644
index b1ac98c..0000000
--- a/xsd/examples/cxx/parser/library/library.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/library/library.xml
-copyright : not copyrighted - public domain
-
--->
-
-<lib:catalog xmlns:lib="http://www.codesynthesis.com/library"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/library library.xsd">
-
- <book id="MM" available="false">
- <isbn>0679760806</isbn>
- <title>The Master and Margarita</title>
- <genre>fiction</genre>
-
- <author recommends="WP">
- <name>Mikhail Bulgakov</name>
- <born>1891-05-15</born>
- <died>1940-03-10</died>
- </author>
- </book>
-
-
- <book id="WP" available="true" >
- <isbn>0679600841</isbn>
- <title>War and Peace</title>
- <genre>history</genre>
-
- <author recommends="CP">
- <name>Leo Tolstoy</name>
- <born>1828-09-09</born>
- <died>1910-11-20</died>
- </author>
- </book>
-
-
- <book id="CP" available="false">
- <isbn>0679420290</isbn>
- <title>Crime and Punishment</title>
- <genre>philosophy</genre>
-
- <author>
- <name>Fyodor Dostoevsky</name>
- <born>1821-11-11</born>
- <died>1881-02-09</died>
- </author>
- </book>
-
-</lib:catalog>
diff --git a/xsd/examples/cxx/parser/library/library.xsd b/xsd/examples/cxx/parser/library/library.xsd
deleted file mode 100644
index 71e4005..0000000
--- a/xsd/examples/cxx/parser/library/library.xsd
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/library/library.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:lib="http://www.codesynthesis.com/library"
- targetNamespace="http://www.codesynthesis.com/library">
-
- <xsd:simpleType name="isbn">
- <xsd:restriction base="xsd:unsignedInt"/>
- </xsd:simpleType>
-
-
- <xsd:complexType name="title">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="lang" type="xsd:string"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
-
- <xsd:simpleType name="genre">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="romance"/>
- <xsd:enumeration value="fiction"/>
- <xsd:enumeration value="horror"/>
- <xsd:enumeration value="history"/>
- <xsd:enumeration value="philosophy"/>
- </xsd:restriction>
- </xsd:simpleType>
-
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="born" type="xsd:string"/>
- <xsd:element name="died" type="xsd:string" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:complexType name="author">
- <xsd:complexContent>
- <xsd:extension base="lib:person">
- <xsd:attribute name="recommends" type="xsd:IDREF"/> <!-- Book -->
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
-
- <xsd:complexType name="book">
- <xsd:sequence>
- <xsd:element name="isbn" type="lib:isbn"/>
- <xsd:element name="title" type="lib:title"/>
- <xsd:element name="genre" type="lib:genre"/>
- <xsd:element name="author" type="lib:author" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="available" type="xsd:boolean" use="required"/>
- <xsd:attribute name="id" type="xsd:ID" use="required"/>
- </xsd:complexType>
-
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="book" type="lib:book" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:element name="catalog" type="lib:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/parser/library/makefile b/xsd/examples/cxx/parser/library/makefile
deleted file mode 100644
index 6410cf3..0000000
--- a/xsd/examples/cxx/parser/library/makefile
+++ /dev/null
@@ -1,110 +0,0 @@
-# file : examples/cxx/parser/library/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := library.xsd
-cxx := driver.cxx library-pimpl.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-inline --type-map $(src_base)/library.map
-$(gen): $(out_root)/xsd/xsd $(src_base)/library.map
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(install_doc_dir)/xsd/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(install_doc_dir)/xsd/$(path)/library.xml)
- $(call install-data,$(src_base)/library.map,$(install_doc_dir)/xsd/$(path)/library.map)
- $(call install-data,$(src_base)/library.hxx,$(install_doc_dir)/xsd/$(path)/library.hxx)
- $(call install-data,$(src_base)/library-pimpl.hxx,$(install_doc_dir)/xsd/$(path)/library-pimpl.hxx)
- $(call install-data,$(src_base)/library-pimpl.cxx,$(install_doc_dir)/xsd/$(path)/library-pimpl.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(dist_prefix)/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(dist_prefix)/$(path)/library.xml)
- $(call install-data,$(src_base)/library.map,$(dist_prefix)/$(path)/library.map)
- $(call install-data,$(src_base)/library.hxx,$(dist_prefix)/$(path)/library.hxx)
- $(call install-data,$(src_base)/library-pimpl.hxx,$(dist_prefix)/$(path)/library-pimpl.hxx)
- $(call install-data,$(src_base)/library-pimpl.cxx,$(dist_prefix)/$(path)/library-pimpl.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/parser/makefile b/xsd/examples/cxx/parser/makefile
deleted file mode 100644
index 4744b29..0000000
--- a/xsd/examples/cxx/parser/makefile
+++ /dev/null
@@ -1,56 +0,0 @@
-# file : examples/cxx/parser/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-examples := generated hello library mixin mixed multiroot performance \
-polymorphism polyroot wildcard
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Build
-#
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(examples)))
-
-
-# Install & Dist.
-#
-$(install) $(dist) $(dist-win): path := $(subst $(src_root)/,,$(src_base))
-
-$(install): $(addprefix $(out_base)/,$(addsuffix /.install,$(examples)))
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
-
-$(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(examples)))
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): export dirs := $(examples)
-$(dist-win): |$(out_root)/.dist-pre
-$(dist-win): $(addprefix $(out_base)/,$(addsuffix /.dist-win,$(examples)))
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
- $(call meta-vc8sln,$(src_root)/dist/template-vc8.sln,parser-vc8.sln)
- $(call meta-vc9sln,$(src_root)/dist/template-vc9.sln,parser-vc9.sln)
- $(call meta-vc10sln,$(src_root)/dist/template-vc10.sln,parser-vc10.sln)
- $(call meta-vc11sln,$(src_root)/dist/template-vc11.sln,parser-vc11.sln)
- $(call meta-vc12sln,$(src_root)/dist/template-vc12.sln,parser-vc12.sln)
- $(call meta-vctest,parser-vc8.sln,$(src_root)/dist/examples/test.bat,test.bat)
-
-# Clean
-#
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(examples)))
-
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/vc8sln.make)
-$(call include,$(bld_root)/meta/vc9sln.make)
-$(call include,$(bld_root)/meta/vc10sln.make)
-$(call include,$(bld_root)/meta/vc11sln.make)
-$(call include,$(bld_root)/meta/vc12sln.make)
-$(call include,$(bld_root)/meta/vctest.make)
-
-
-$(foreach e,$(examples),$(call import,$(src_base)/$e/makefile))
diff --git a/xsd/examples/cxx/parser/mixed/README b/xsd/examples/cxx/parser/mixed/README
deleted file mode 100644
index 23ace6f..0000000
--- a/xsd/examples/cxx/parser/mixed/README
+++ /dev/null
@@ -1,49 +0,0 @@
-This example shows how to handle raw, "type-less content" such as
-mixed content models, anyType/anySimpleType, and any/anyAttribute
-in the C++/Parser mapping.
-
-In this example we use mixed content model to describe text
-with embedded links, e.g.,
-
- This paragraph talks about <a href="uri">time</a>.
-
-The example transforms such text into plain text with
-references, e.g.,
-
- This paragraph talks about time[0].
-
- [0] uri
-
-The example consists of the following files:
-
-text.xsd
- XML Schema which describes "text with links" instance
- documents.
-
-text.xml
- Sample XML instance document.
-
-anchor.hxx
- Anchor type that captures the information about a link.
-
-text.map
- Type map. It maps XML Schema anchor types defined in
- text.xsd to C++ anchor class defined in anchor.hxx.
-
-text-pskel.hxx
-text-pskel.cxx
- Parser skeletons generated by XSD from text.xsd and
- text.map.
-
-driver.cxx
- A parser implementation and a driver for the example. The
- parser implementation prints the transformed text to STDOUT.
- The driver first constructs a parser instance from the parser
- implementation mentioned above and a couple of predefined
- parsers for the XML Schema built-in types. In then invokes
- this parser instance to parse the input file.
-
-To run the example on the sample XML instance document simply
-execute:
-
-$ ./driver text.xml
diff --git a/xsd/examples/cxx/parser/mixed/anchor.hxx b/xsd/examples/cxx/parser/mixed/anchor.hxx
deleted file mode 100644
index 3adc90b..0000000
--- a/xsd/examples/cxx/parser/mixed/anchor.hxx
+++ /dev/null
@@ -1,33 +0,0 @@
-// file : examples/cxx/parser/mixed/anchor.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef ANCHOR_HXX
-#define ANCHOR_HXX
-
-#include <string>
-
-struct anchor
-{
- anchor (const std::string& text, const std::string& uri)
- : uri_ (uri), text_ (text)
- {
- }
-
- const std::string&
- text () const
- {
- return text_;
- }
-
- const std::string&
- uri () const
- {
- return uri_;
- }
-
-private:
- std::string uri_;
- std::string text_;
-};
-
-#endif // ANCHOR_HXX
diff --git a/xsd/examples/cxx/parser/mixed/driver.cxx b/xsd/examples/cxx/parser/mixed/driver.cxx
deleted file mode 100644
index 3f3cc65..0000000
--- a/xsd/examples/cxx/parser/mixed/driver.cxx
+++ /dev/null
@@ -1,100 +0,0 @@
-// file : examples/cxx/parser/mixed/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <string>
-#include <vector>
-#include <iostream>
-
-#include "anchor.hxx"
-#include "text-pskel.hxx"
-
-using namespace std;
-
-struct anchor_pimpl: anchor_pskel, xml_schema::string_pimpl
-{
- virtual void
- href (const std::string& uri)
- {
- uri_ = uri;
- }
-
- virtual anchor
- post_anchor ()
- {
- return anchor (post_string (), uri_);
- }
-
-private:
- std::string uri_;
-};
-
-
-struct text_pimpl: text_pskel
-{
- virtual void
- a (const anchor& a)
- {
- cout << a.text () << "[" << anchors_.size () << "]";
- anchors_.push_back (a);
- }
-
- virtual void
- _any_characters (const xml_schema::ro_string& s)
- {
- cout << s;
- }
-
- virtual void
- post_text ()
- {
- for (anchors::const_iterator i (anchors_.begin ());
- i != anchors_.end ();
- ++i)
- {
- cout << "[" << i - anchors_.begin () << "] " << i->uri () << endl;
- }
- }
-
-private:
- typedef vector<anchor> anchors;
- anchors anchors_;
-};
-
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " text.xml" << endl;
- return 1;
- }
-
- try
- {
- // Construct the parser.
- //
- xml_schema::string_pimpl string_p;
- anchor_pimpl anchor_p;
- text_pimpl text_p;
-
- anchor_p.href_parser (string_p);
- text_p.a_parser (anchor_p);
-
- xml_schema::document doc_p (text_p, "text");
-
- text_p.pre ();
- doc_p.parse (argv[1]);
- text_p.post_text ();
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/parser/mixed/makefile b/xsd/examples/cxx/parser/mixed/makefile
deleted file mode 100644
index acf8aed..0000000
--- a/xsd/examples/cxx/parser/mixed/makefile
+++ /dev/null
@@ -1,107 +0,0 @@
-# file : examples/cxx/parser/mixed/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := text.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --type-map $(src_base)/text.map
-$(gen): $(out_root)/xsd/xsd $(src_base)/text.map
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/text.xsd,$(install_doc_dir)/xsd/$(path)/text.xsd)
- $(call install-data,$(src_base)/text.xml,$(install_doc_dir)/xsd/$(path)/text.xml)
- $(call install-data,$(src_base)/text.map,$(install_doc_dir)/xsd/$(path)/text.map)
- $(call install-data,$(src_base)/anchor.hxx,$(install_doc_dir)/xsd/$(path)/anchor.hxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/text.xsd,$(dist_prefix)/$(path)/text.xsd)
- $(call install-data,$(src_base)/text.xml,$(dist_prefix)/$(path)/text.xml)
- $(call install-data,$(src_base)/text.map,$(dist_prefix)/$(path)/text.map)
- $(call install-data,$(src_base)/anchor.hxx,$(dist_prefix)/$(path)/anchor.hxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/parser/mixed/text.map b/xsd/examples/cxx/parser/mixed/text.map
deleted file mode 100644
index 85971c4..0000000
--- a/xsd/examples/cxx/parser/mixed/text.map
+++ /dev/null
@@ -1,6 +0,0 @@
-# file : examples/cxx/parser/mixed/text.map
-# copyright : not copyrighted - public domain
-
-include "anchor.hxx";
-
-anchor ::anchor;
diff --git a/xsd/examples/cxx/parser/mixed/text.xml b/xsd/examples/cxx/parser/mixed/text.xml
deleted file mode 100644
index bfdc881..0000000
--- a/xsd/examples/cxx/parser/mixed/text.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/text/text.xml
-copyright : not copyrighted - public domain
-
--->
-
-<text xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="text.xsd">
-
-The first paragraph of this text talks about <a href="http://en.wikipedia.org/wiki/time">time</a>.
-
-And this paragraph talks about <a href="http://en.wikipedia.org/wiki/space">space</a>.
-
-</text>
diff --git a/xsd/examples/cxx/parser/mixed/text.xsd b/xsd/examples/cxx/parser/mixed/text.xsd
deleted file mode 100644
index 92e300c..0000000
--- a/xsd/examples/cxx/parser/mixed/text.xsd
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/mixed/text.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="anchor">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="href" type="xsd:string" use="required"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:complexType name="text" mixed="true">
- <xsd:sequence>
- <xsd:element name="a" type="anchor" minOccurs="0" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="text" type="text"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/parser/mixin/README b/xsd/examples/cxx/parser/mixin/README
deleted file mode 100644
index 343e379..0000000
--- a/xsd/examples/cxx/parser/mixin/README
+++ /dev/null
@@ -1,34 +0,0 @@
-This example shows how to reuse implementations of base parsers
-in derived parsers using the mixin C++ idiom.
-
-The example consists of the following files:
-
-schema.xsd
- XML Schema which defined two data types: base and
- derived.
-
-instance.xml
- Sample XML instance document.
-
-types.hxx
- C++ classes that correspond to the base and derived
- types in schema.xsd.
-
-schema.map
- Type map. It maps XML Schema types defined in schema.xsd
- to C++ types defined in types.hxx.
-
-schema-pskel.hxx
-schema-pskel.cxx
- Parser skeletons generated by XSD from schema.xsd and
- schema.map.
-
-driver.cxx
- Parser implementations and a driver for the example. It
- shows how to mix the implementation of the base parser
- into the derived parser.
-
-To run the example on the sample XML instance document simply
-execute:
-
-$ ./driver instance.xml
diff --git a/xsd/examples/cxx/parser/mixin/driver.cxx b/xsd/examples/cxx/parser/mixin/driver.cxx
deleted file mode 100644
index 04466a1..0000000
--- a/xsd/examples/cxx/parser/mixin/driver.cxx
+++ /dev/null
@@ -1,103 +0,0 @@
-// file : examples/cxx/parser/mixin/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory>
-#include <iostream>
-
-#include "types.hxx"
-#include "schema-pskel.hxx"
-
-using namespace std;
-
-struct base_pimpl: virtual base_pskel
-{
- virtual void
- pre ()
- {
- base_.reset (new ::base);
- }
-
- virtual void
- a (bool v)
- {
- base_->a (v);
- }
-
- virtual base*
- post_base ()
- {
- return base_.release ();
- }
-
-protected:
- auto_ptr<base> base_;
-};
-
-// Implement derived parser by mixing-in base's implementation.
-//
-struct derived_pimpl: derived_pskel, base_pimpl
-{
- virtual void
- pre ()
- {
- // Override base's pre() with the new implementation that
- // instantiates derived instead of base.
- //
- base_.reset (new ::derived);
- }
-
- virtual void
- b (int v)
- {
- // We could also store a pointer to derived in derived_impl to
- // avoid casting.
- //
- static_cast< ::derived* > (base_.get ())->b (v);
- }
-
- virtual derived*
- post_derived ()
- {
- return static_cast<derived*> (base_.release ());
- }
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " instance.xml" << endl;
- return 1;
- }
-
- try
- {
- // Construct the parser.
- //
- xml_schema::boolean_pimpl bool_p;
- xml_schema::int_pimpl int_p;
- derived_pimpl derived_p;
-
- derived_p.parsers (bool_p, int_p);
-
- xml_schema::document doc_p (derived_p, "root");
-
- derived_p.pre ();
- doc_p.parse (argv[1]);
- auto_ptr<derived> d (derived_p.post_derived ());
-
- cerr << "a: " << boolalpha << d->a () << endl;
- cerr << "b: " << d->b () << endl;
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/parser/mixin/instance.xml b/xsd/examples/cxx/parser/mixin/instance.xml
deleted file mode 100644
index 253f348..0000000
--- a/xsd/examples/cxx/parser/mixin/instance.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/mixin/instance.xml
-copyright : not copyrighted - public domain
-
--->
-
-<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="schema.xsd">
-
- <a>true</a>
- <b>1</b>
-
-</root>
diff --git a/xsd/examples/cxx/parser/mixin/makefile b/xsd/examples/cxx/parser/mixin/makefile
deleted file mode 100644
index 7ef8084..0000000
--- a/xsd/examples/cxx/parser/mixin/makefile
+++ /dev/null
@@ -1,107 +0,0 @@
-# file : examples/cxx/parser/mixin/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := schema.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --type-map $(src_base)/schema.map
-$(gen): $(out_root)/xsd/xsd $(src_base)/schema.map
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/schema.xsd,$(install_doc_dir)/xsd/$(path)/schema.xsd)
- $(call install-data,$(src_base)/instance.xml,$(install_doc_dir)/xsd/$(path)/instance.xml)
- $(call install-data,$(src_base)/schema.map,$(install_doc_dir)/xsd/$(path)/schema.map)
- $(call install-data,$(src_base)/types.hxx,$(install_doc_dir)/xsd/$(path)/types.hxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/schema.xsd,$(dist_prefix)/$(path)/schema.xsd)
- $(call install-data,$(src_base)/instance.xml,$(dist_prefix)/$(path)/instance.xml)
- $(call install-data,$(src_base)/schema.map,$(dist_prefix)/$(path)/schema.map)
- $(call install-data,$(src_base)/types.hxx,$(dist_prefix)/$(path)/types.hxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/parser/mixin/schema.map b/xsd/examples/cxx/parser/mixin/schema.map
deleted file mode 100644
index a93c881..0000000
--- a/xsd/examples/cxx/parser/mixin/schema.map
+++ /dev/null
@@ -1,7 +0,0 @@
-# file : examples/cxx/parser/mixin/schema.map
-# copyright : not copyrighted - public domain
-
-include "types.hxx";
-
-base ::base*;
-derived ::derived*;
diff --git a/xsd/examples/cxx/parser/mixin/schema.xsd b/xsd/examples/cxx/parser/mixin/schema.xsd
deleted file mode 100644
index d2d195d..0000000
--- a/xsd/examples/cxx/parser/mixin/schema.xsd
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/mixin/schema.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="base">
- <xsd:sequence>
- <xsd:element name="a" type="xsd:boolean"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="derived">
- <xsd:complexContent>
- <xsd:extension base="base">
- <xsd:sequence>
- <xsd:element name="b" type="xsd:int"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:element name="root" type="derived"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/parser/mixin/types.hxx b/xsd/examples/cxx/parser/mixin/types.hxx
deleted file mode 100644
index 930033d..0000000
--- a/xsd/examples/cxx/parser/mixin/types.hxx
+++ /dev/null
@@ -1,43 +0,0 @@
-// file : examples/cxx/parser/mixin/types.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef TYPES_HXX
-#define TYPES_HXX
-
-struct base
-{
- bool
- a () const
- {
- return a_;
- }
-
- void
- a (bool v)
- {
- a_ = v;
- }
-
-private:
- bool a_;
-};
-
-struct derived: base
-{
- int
- b () const
- {
- return b_;
- }
-
- void
- b (int v)
- {
- b_ = v;
- }
-
-private:
- int b_;
-};
-
-#endif // TYPES_HXX
diff --git a/xsd/examples/cxx/parser/multiroot/README b/xsd/examples/cxx/parser/multiroot/README
deleted file mode 100644
index 041dfec..0000000
--- a/xsd/examples/cxx/parser/multiroot/README
+++ /dev/null
@@ -1,51 +0,0 @@
-This example shows how to handle XML vocabularies with multiple
-root elements using the C++/Parser mapping.
-
-The example consists of the following files:
-
-protocol.xsd
- XML Schema which defines a simple bank account protocol with
- requests such as withdraw and deposit.
-
-balance.xml
-withdraw.xml
-deposit.xml
- Sample XML instances for the protocol requests.
-
-protocol.hxx
- C++ types that describe the protocol requests. These are
- hand-written.
-
-protocol.map
- Type map. It maps XML Schema types defined in protocol.xsd
- to the C++ types defined in protocol.hxx.
-
-protocol-pskel.hxx
-protocol-pskel.cxx
- Parser skeletons generated by XSD from protocol.xsd and
- protocol.map.
-
-protocol-pimpl.hxx
-protocol-pimpl.cxx
- Parser implementations that construct the custom object
- model from an XML instance using the types from protocol.hxx.
- These are hand-written implementations of the parser skeletons
- defined in protocol-pskel.hxx.
-
-driver.cxx
- Driver for the example. It implements a custom document parser
- that determines which request is being parsed and uses the
- corresponding parser implementation. The document parser
- intentionally does not support the deposit request to show
- how to handle unknown documents. The driver first constructs
- a parser instance from all the individual parsers found in
- protocol-pimpl.hxx. In then invokes this parser instance to
- parse the input file and produce the in-memory object model.
- Finally, it prints the contents of the object model to STDERR.
-
-To run the example on the sample XML request documents simply
-execute:
-
-$ ./driver balance.xml
-$ ./driver withdraw.xml
-$ ./driver deposit.xml
diff --git a/xsd/examples/cxx/parser/multiroot/balance.xml b/xsd/examples/cxx/parser/multiroot/balance.xml
deleted file mode 100644
index 71ed493..0000000
--- a/xsd/examples/cxx/parser/multiroot/balance.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/multiroot/balance.xml
-copyright : not copyrighted - public domain
-
--->
-
-<p:balance xmlns:p="http://www.codesynthesis.com/protocol"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/protocol protocol.xsd">
-
- <account>123456789</account>
-
-</p:balance>
diff --git a/xsd/examples/cxx/parser/multiroot/deposit.xml b/xsd/examples/cxx/parser/multiroot/deposit.xml
deleted file mode 100644
index 70f0c77..0000000
--- a/xsd/examples/cxx/parser/multiroot/deposit.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/multiroot/deposit.xml
-copyright : not copyrighted - public domain
-
--->
-
-<p:deposit xmlns:p="http://www.codesynthesis.com/protocol"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/protocol protocol.xsd">
-
- <account>123456789</account>
- <amount>1000000</amount>
-
-</p:deposit>
diff --git a/xsd/examples/cxx/parser/multiroot/driver.cxx b/xsd/examples/cxx/parser/multiroot/driver.cxx
deleted file mode 100644
index 3b32898..0000000
--- a/xsd/examples/cxx/parser/multiroot/driver.cxx
+++ /dev/null
@@ -1,161 +0,0 @@
-// file : examples/cxx/parser/multiroot/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <iostream>
-
-#include "protocol.hxx"
-#include "protocol-pimpl.hxx"
-
-using std::cerr;
-using std::endl;
-using xml_schema::ro_string;
-
-namespace protocol
-{
- // Customize the xml_schema::document object to handle our protocol
- // vocabulary with multiple root elements.
- //
- class document: public xml_schema::document
- {
- public:
- document (balance_pskel& balance_p, withdraw_pskel& withdraw_p)
- : balance_p_ (balance_p), withdraw_p_ (withdraw_p)
- {
- }
-
- request*
- result ()
- {
- return result_.release ();
- }
-
- protected:
- // This function is called to obtain the root element type parser.
- // If the returned pointed is 0 then the whole document content
- // is ignored. The type argument is used to handle polymorphic
- // XML documents and is not used in this example (see the polyroot
- // example for more information on this argument).
- //
- virtual xml_schema::parser_base*
- start_root_element (const ro_string& ns,
- const ro_string& name,
- const ro_string* /* type */)
- {
- if (ns == "http://www.codesynthesis.com/protocol")
- {
- if (name == "balance")
- {
- balance_p_.pre ();
-
- return &balance_p_;
- }
- else if (name == "withdraw")
- {
- balance_p_.pre ();
-
- return &withdraw_p_;
- }
- }
-
- cerr << "ignoring unknown request: " << ns << "#" << name << endl;
-
- return 0;
- }
-
- // This function is called to indicate the completion of document
- // parsing. The parser argument contains the pointer returned by
- // start_root_element.
- //
- virtual void
- end_root_element (const ro_string& /* ns */,
- const ro_string& /* name */,
- xml_schema::parser_base* parser)
- {
- // We could have handled the result directly in this function
- // instead of storing it in the result_ variable.
- //
- if (parser == &balance_p_)
- {
- result_.reset (balance_p_.post_balance ());
- }
- else if (parser == &withdraw_p_)
- {
- result_.reset (withdraw_p_.post_withdraw ());
- }
- else
- result_.reset (0);
- }
-
-
- private:
- std::auto_ptr<request> result_;
-
- balance_pskel& balance_p_;
- withdraw_pskel& withdraw_p_;
- };
-}
-
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " request.xml" << endl;
- return 1;
- }
-
- try
- {
- using namespace protocol;
-
- // Construct the parser.
- //
- xml_schema::unsigned_int_pimpl unsigned_int_p;
-
- balance_pimpl balance_p;
- withdraw_pimpl withdraw_p;
-
- balance_p.parsers (unsigned_int_p); // account
-
- withdraw_p.parsers (unsigned_int_p, // account
- unsigned_int_p); // amount
-
- // Parse the XML instance document.
- //
- document doc_p (balance_p, withdraw_p);
-
- // pre() and post() will be called as part of the start_root_element()
- // and end_root_element() calls.
- //
- doc_p.parse (argv[1]);
- std::auto_ptr<request> r (doc_p.result ());
-
- // Let's print what we've got.
- //
- if (balance* b = dynamic_cast<balance*> (r.get ()))
- {
- cerr << "balance request for acc# " << b->account () << endl;
- }
- else if (withdraw* w = dynamic_cast<withdraw*> (r.get ()))
- {
- cerr << "withdrawal request for acc# " << w->account () << ", "
- << "amount: " << w->amount () << endl;
- }
- else
- {
- cerr << "unknown request" << endl;
- }
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/parser/multiroot/makefile b/xsd/examples/cxx/parser/multiroot/makefile
deleted file mode 100644
index 60c6bac..0000000
--- a/xsd/examples/cxx/parser/multiroot/makefile
+++ /dev/null
@@ -1,113 +0,0 @@
-# file : examples/cxx/parser/multiroot/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := protocol.xsd
-cxx := driver.cxx protocol-pimpl.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --type-map $(src_base)/protocol.map
-$(gen): $(out_root)/xsd/xsd $(src_base)/protocol.map
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/protocol.xsd,$(install_doc_dir)/xsd/$(path)/protocol.xsd)
- $(call install-data,$(src_base)/balance.xml,$(install_doc_dir)/xsd/$(path)/balance.xml)
- $(call install-data,$(src_base)/deposit.xml,$(install_doc_dir)/xsd/$(path)/deposit.xml)
- $(call install-data,$(src_base)/withdraw.xml,$(install_doc_dir)/xsd/$(path)/withdraw.xml)
- $(call install-data,$(src_base)/protocol.map,$(install_doc_dir)/xsd/$(path)/protocol.map)
- $(call install-data,$(src_base)/protocol.hxx,$(install_doc_dir)/xsd/$(path)/protocol.hxx)
- $(call install-data,$(src_base)/protocol-pimpl.hxx,$(install_doc_dir)/xsd/$(path)/protocol-pimpl.hxx)
- $(call install-data,$(src_base)/protocol-pimpl.cxx,$(install_doc_dir)/xsd/$(path)/protocol-pimpl.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/protocol.xsd,$(dist_prefix)/$(path)/protocol.xsd)
- $(call install-data,$(src_base)/balance.xml,$(dist_prefix)/$(path)/balance.xml)
- $(call install-data,$(src_base)/deposit.xml,$(dist_prefix)/$(path)/deposit.xml)
- $(call install-data,$(src_base)/withdraw.xml,$(dist_prefix)/$(path)/withdraw.xml)
- $(call install-data,$(src_base)/protocol.map,$(dist_prefix)/$(path)/protocol.map)
- $(call install-data,$(src_base)/protocol.hxx,$(dist_prefix)/$(path)/protocol.hxx)
- $(call install-data,$(src_base)/protocol-pimpl.hxx,$(dist_prefix)/$(path)/protocol-pimpl.hxx)
- $(call install-data,$(src_base)/protocol-pimpl.cxx,$(dist_prefix)/$(path)/protocol-pimpl.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/parser/multiroot/protocol-pimpl.cxx b/xsd/examples/cxx/parser/multiroot/protocol-pimpl.cxx
deleted file mode 100644
index b5ec1b2..0000000
--- a/xsd/examples/cxx/parser/multiroot/protocol-pimpl.cxx
+++ /dev/null
@@ -1,46 +0,0 @@
-// file : examples/cxx/parser/multiroot/protocol-pimpl.cxx
-// copyright : not copyrighted - public domain
-
-#include "protocol-pimpl.hxx"
-
-namespace protocol
-{
- // request_pimpl
- //
- void request_pimpl::
- account (unsigned int account)
- {
- account_ = account;
- }
-
- request* request_pimpl::
- post_request ()
- {
- // This parser is never used directly.
- //
- return 0;
- }
-
- // balance_pimpl
- //
- balance* balance_pimpl::
- post_balance ()
- {
- return new balance (account_);
- }
-
- // withdraw_pimpl
- //
- void withdraw_pimpl::
- amount (unsigned int amount)
- {
- amount_ = amount;
- }
-
- withdraw* withdraw_pimpl::
- post_withdraw ()
- {
- return new withdraw (account_, amount_);
- }
-}
-
diff --git a/xsd/examples/cxx/parser/multiroot/protocol-pimpl.hxx b/xsd/examples/cxx/parser/multiroot/protocol-pimpl.hxx
deleted file mode 100644
index c0693cb..0000000
--- a/xsd/examples/cxx/parser/multiroot/protocol-pimpl.hxx
+++ /dev/null
@@ -1,48 +0,0 @@
-// file : examples/cxx/parser/multiroot/protocol-pimpl.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef PROTOCOL_PIMPL_HXX
-#define PROTOCOL_PIMPL_HXX
-
-#include "protocol.hxx"
-#include "protocol-pskel.hxx"
-
-namespace protocol
-{
- class request_pimpl: public virtual request_pskel
- {
- public:
- virtual void
- account (unsigned int);
-
- virtual request*
- post_request ();
-
- protected:
- unsigned int account_;
- };
-
- class balance_pimpl: public virtual balance_pskel,
- public request_pimpl
- {
- public:
- virtual balance*
- post_balance ();
- };
-
- class withdraw_pimpl: public virtual withdraw_pskel,
- public request_pimpl
- {
- public:
- virtual void
- amount (unsigned int);
-
- virtual withdraw*
- post_withdraw ();
-
- private:
- unsigned int amount_;
- };
-}
-
-#endif // PROTOCOL_PIMPL_HXX
diff --git a/xsd/examples/cxx/parser/multiroot/protocol.hxx b/xsd/examples/cxx/parser/multiroot/protocol.hxx
deleted file mode 100644
index bbf5b56..0000000
--- a/xsd/examples/cxx/parser/multiroot/protocol.hxx
+++ /dev/null
@@ -1,61 +0,0 @@
-// file : examples/cxx/parser/multiroot/protocol.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef PROTOCOL_HXX
-#define PROTOCOL_HXX
-
-namespace protocol
-{
- class request
- {
- public:
- virtual
- ~request ()
- {
- }
-
- unsigned int
- account () const
- {
- return account_;
- }
-
- protected:
- request (unsigned int account)
- : account_ (account)
- {
- }
-
- private:
- unsigned int account_;
- };
-
- class balance: public request
- {
- public:
- balance (unsigned int account)
- : request (account)
- {
- }
- };
-
- class withdraw: public request
- {
- public:
- withdraw (unsigned int account, unsigned int amount)
- : request (account), amount_ (amount)
- {
- }
-
- unsigned int
- amount () const
- {
- return amount_;
- }
-
- private:
- unsigned int amount_;
- };
-}
-
-#endif // PROTOCOL_HXX
diff --git a/xsd/examples/cxx/parser/multiroot/protocol.map b/xsd/examples/cxx/parser/multiroot/protocol.map
deleted file mode 100644
index 8d8ac9f..0000000
--- a/xsd/examples/cxx/parser/multiroot/protocol.map
+++ /dev/null
@@ -1,11 +0,0 @@
-# file : examples/cxx/parser/multiroot/protocol.map
-# copyright : not copyrighted - public domain
-
-namespace http://www.codesynthesis.com/protocol ::protocol
-{
- include "protocol.hxx";
-
- request request*;
- balance balance*;
- withdraw withdraw*;
-}
diff --git a/xsd/examples/cxx/parser/multiroot/protocol.xsd b/xsd/examples/cxx/parser/multiroot/protocol.xsd
deleted file mode 100644
index e0ecc29..0000000
--- a/xsd/examples/cxx/parser/multiroot/protocol.xsd
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/multiroot/protocol.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:p="http://www.codesynthesis.com/protocol"
- targetNamespace="http://www.codesynthesis.com/protocol">
-
- <xsd:complexType name="request">
- <xsd:sequence>
- <xsd:element name="account" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="balance">
- <xsd:complexContent>
- <xsd:extension base="p:request"/>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="withdraw">
- <xsd:complexContent>
- <xsd:extension base="p:request">
- <xsd:sequence>
- <xsd:element name="amount" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="deposit">
- <xsd:complexContent>
- <xsd:extension base="p:request">
- <xsd:sequence>
- <xsd:element name="amount" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:element name="balance" type="p:balance"/>
- <xsd:element name="withdraw" type="p:withdraw"/>
- <xsd:element name="deposit" type="p:deposit"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/parser/multiroot/withdraw.xml b/xsd/examples/cxx/parser/multiroot/withdraw.xml
deleted file mode 100644
index 6d5cb39..0000000
--- a/xsd/examples/cxx/parser/multiroot/withdraw.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/multiroot/withdraw.xml
-copyright : not copyrighted - public domain
-
--->
-
-<p:withdraw xmlns:p="http://www.codesynthesis.com/protocol"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/protocol protocol.xsd">
-
- <account>123456789</account>
- <amount>1000000</amount>
-
-</p:withdraw>
diff --git a/xsd/examples/cxx/parser/performance/README b/xsd/examples/cxx/parser/performance/README
deleted file mode 100644
index 39aecca..0000000
--- a/xsd/examples/cxx/parser/performance/README
+++ /dev/null
@@ -1,42 +0,0 @@
-This example measures the performance of XML parsing in the C++/Parser
-mapping. It also shows how to structure your code to achieve the maximum
-performance for this operation.
-
-The example consists of the following files:
-
-test.xsd
- XML Schema which describes the test vocabulary.
-
-test-50k.xml
- Test XML document.
-
-gen.cxx
- Program to generate a test document of desired size.
-
-time.hxx
-time.cxx
- Class definition that represents time.
-
-test-pskel.hxx
-test-pskel.ixx
-test-pskel.cxx
- Parser skeletons generated by the XSD compiler from test.xsd.
-
-driver.cxx
- Driver for the example. It first parses the command line arguments
- and reads the entire document into a memory buffer. It then creates
- a SAX parser and pre-parses and caches the schema if validation is
- enabled (Xerces-C++ only). Finally, it runs the performance
- measurement loop which on each iteration parses the XML document
- from the in-memory buffer.
-
-To run the example on a test XML document simply execute:
-
-$ ./driver test-50k.xml
-
-The -v option can be used to turn on validation in the underlying XML
-parser (only makes sense for Xerces-C++, off by default). The -i option
-can be used to specify the number of parsing iterations (1000 by default).
-For example:
-
-$ ./driver -v -i 100 test-50k.xml
diff --git a/xsd/examples/cxx/parser/performance/driver.cxx b/xsd/examples/cxx/parser/performance/driver.cxx
deleted file mode 100644
index 302464e..0000000
--- a/xsd/examples/cxx/parser/performance/driver.cxx
+++ /dev/null
@@ -1,341 +0,0 @@
-// file : examples/cxx/parser/performance/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <string>
-#include <memory> // std::auto_ptr
-#include <cstddef> // std::size_t
-#include <fstream>
-#include <sstream>
-#include <iostream>
-
-#include "time.hxx"
-#include "test-pskel.hxx"
-
-#ifdef _XERCES_VERSION
-# include <xercesc/sax2/SAX2XMLReader.hpp>
-# include <xercesc/sax2/XMLReaderFactory.hpp>
-# include <xercesc/framework/MemBufInputSource.hpp>
-# include <xercesc/validators/common/Grammar.hpp>
-# include <xercesc/util/PlatformUtils.hpp>
-# include <xercesc/util/XMLUni.hpp>
-
-# include <xsd/cxx/xml/sax/bits/error-handler-proxy.hxx>
-# include <xsd/cxx/parser/error-handler.hxx>
-#endif
-
-// No-op parser implementation.
-//
-namespace test
-{
- struct enum_pimpl: enum_pskel, xml_schema::string_pimpl
- {
- virtual void
- post_enum ()
- {
- }
- };
-
- struct record_pimpl: record_pskel
- {
- virtual void
- int_ (unsigned int)
- {
- }
-
- virtual void
- double_ (double)
- {
- }
-
- virtual void
- name (const std::string&)
- {
- }
-
- virtual void
- string (const std::string&)
- {
- }
-
- virtual void
- choice1 (const std::string&)
- {
- }
-
- virtual void
- choice2 (const std::string&)
- {
- }
-
- virtual void
- choice3 (const std::string&)
- {
- }
-
- virtual void
- choice4 (const std::string&)
- {
- }
-
- virtual void
- apple (bool)
- {
- }
-
- virtual void
- orange (unsigned long long)
- {
- }
- };
-
- struct root_pimpl: root_pskel
- {
- };
-}
-
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- if (argc < 2)
- {
- cerr << "usage: " << argv[0] << " [-v] [-i <count>] test.xml" << endl
- << "\t -v turn on validation (default is off)" << endl
- << "\t -i number of iterations to perform (default is 1000)" << endl;
- return 1;
- }
-
- bool validate (false);
- unsigned long iter (1000);
- const char* file (0);
-
- // Parse command line arguments.
- //
- for (int i (1); i < argc; ++i)
- {
- string arg (argv[i]);
-
- if (arg == "-v")
- {
- validate = true;
- }
- else if (arg == "-i")
- {
- if (++i == argc)
- {
- cerr << "argument expected for the -i option" << endl;
- return 1;
- }
-
- iter = 0;
- istringstream is (argv[i]);
- is >> iter;
-
- if (iter == 0)
- {
- cerr << "invalid argument for the -i option" << endl;
- return 1;
- }
- }
- else
- {
- file = argv[i];
- break;
- }
- }
-
- if (file == 0)
- {
- cerr << "no input file specified" << endl;
- return 1;
- }
-
- try
- {
- // Instantiate and connect parsers.
- //
- xml_schema::unsigned_int_pimpl unsigned_int_p;
- xml_schema::double_pimpl double_p;
- xml_schema::ncname_pimpl ncname_p;
- xml_schema::string_pimpl string_p;
- xml_schema::boolean_pimpl boolean_p;
- xml_schema::unsigned_long_pimpl unsigned_long_p;
-
- test::enum_pimpl enum_p;
- test::record_pimpl record_p;
- test::root_pimpl root_p;
-
- record_p.parsers (unsigned_int_p,
- double_p,
- ncname_p,
- string_p,
- string_p,
- string_p,
- string_p,
- string_p,
- enum_p,
- boolean_p,
- unsigned_long_p);
-
- root_p.parsers (record_p);
-
- // Read the fine into in-memory buffer.
- //
- ifstream ifs;
- ifs.exceptions (ios_base::failbit);
- ifs.open (file, ios::in | ios::ate);
-
- size_t size (ifs.tellg ());
- ifs.seekg (0, ios::beg);
-
- char* buf = new char[size];
- ifs.read (buf, size);
- ifs.close ();
-
- cerr << "document size: " << size << " bytes" << endl
- << "iterations: " << iter << endl;
-
- os::time time (0);
- xml_schema::document doc (root_p, "test", "root");
-
-#ifdef _XERCES_VERSION
-
- // Xerces-C++ as the underlying XML parser.
- //
- using namespace xercesc;
-
- namespace xml = xsd::cxx::xml;
- namespace parser = xsd::cxx::parser;
-
- XMLPlatformUtils::Initialize ();
-
- {
- MemBufInputSource is (
- reinterpret_cast<XMLByte*> (buf), size, file, false);
- is.setCopyBufToStream (false);
-
- auto_ptr<SAX2XMLReader> parser (XMLReaderFactory::createXMLReader ());
-
- parser->setFeature (XMLUni::fgSAX2CoreNameSpaces, true);
- parser->setFeature (XMLUni::fgSAX2CoreNameSpacePrefixes, true);
- parser->setFeature (XMLUni::fgXercesValidationErrorAsFatal, true);
-
- if (validate)
- {
- parser->setFeature (XMLUni::fgSAX2CoreValidation, true);
- parser->setFeature (XMLUni::fgXercesSchema, true);
- parser->setFeature (XMLUni::fgXercesSchemaFullChecking, false);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- parser->setFeature (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
-
- // Initialize the schema cache. To detect schema errors we will
- // need an error handler.
- //
- parser::error_handler<char> eh;
- xml::sax::bits::error_handler_proxy<char> ehp (eh);
- parser->setErrorHandler (&ehp);
-
- if (!parser->loadGrammar ("test.xsd", Grammar::SchemaGrammarType, true))
- {
- // In Xerces-C++ grammar loading failure results in just a warning.
- // Make it a fatal error.
- //
- eh.handle ("test.xsd", 0, 0,
- parser::error_handler<char>::severity::fatal,
- "unable to load schema");
- }
-
- eh.throw_if_failed ();
- parser->setFeature (XMLUni::fgXercesUseCachedGrammarInParse, true);
-
-#if _XERCES_VERSION >= 30100
- parser->setFeature (XMLUni::fgXercesLoadSchema, false);
-#endif
- }
- else
- {
- parser->setFeature (XMLUni::fgSAX2CoreValidation, false);
- parser->setFeature (XMLUni::fgXercesSchema, false);
- parser->setFeature (XMLUni::fgXercesSchemaFullChecking, false);
- }
-
- os::time start;
-
- for (unsigned long i (0); i < iter; ++i)
- {
- root_p.pre ();
- doc.parse (is, *parser);
- root_p.post_root ();
- }
-
- os::time end;
- time = end - start;
- }
-
- XMLPlatformUtils::Terminate ();
-
-#else
-
- // Expat as the underlying XML parser.
- //
- XML_Parser xml_parser (XML_ParserCreateNS (0, ' '));
- string public_id (file);
-
- os::time start;
-
- for (unsigned long i (0); i < iter; ++i)
- {
- // Using the low-level Expat-specific API to parse the memory
- // buffer.
- //
- root_p.pre ();
- doc.parse_begin (xml_parser, public_id);
-
- XML_Parse (xml_parser, buf, size, 1);
-
- doc.parse_end ();
- root_p.post_root ();
-
- XML_ParserReset (xml_parser, 0);
- }
-
- os::time end;
- time = end - start;
-
- XML_ParserFree (xml_parser);
-
-#endif
-
- delete[] buf;
-
- cerr << "time: " << time << " sec" << endl;
-
- double ms (time.sec () * 1000000ULL + time.nsec () / 1000ULL);
-
- // Calculate throughput in documents/sec.
- //
- double tpd ((iter / ms) * 1000000);
- cerr << "throughput: " << tpd << " documents/sec" << endl;
-
- // Calculate throughput in MBytes/sec.
- //
- double tpb (((size * iter) / ms) * 1000000/(1024*1024));
- cerr << "throughput: " << tpb << " MBytes/sec" << endl;
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (std::ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/parser/performance/gen.cxx b/xsd/examples/cxx/parser/performance/gen.cxx
deleted file mode 100644
index b6392c0..0000000
--- a/xsd/examples/cxx/parser/performance/gen.cxx
+++ /dev/null
@@ -1,76 +0,0 @@
-#include <fstream>
-#include <sstream>
-#include <iostream>
-
-using namespace std;
-
-static const char* enums[] =
-{
- "romance",
- "fiction",
- "horror",
- "history",
- "philosophy"
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 3)
- {
- cerr << "usage: " << argv[0] << " <count> <output-file>" << endl;
- return 1;
- }
-
- unsigned long n (0);
- istringstream is (argv[1]);
- is >> n;
-
- if (n == 0)
- {
- cerr << "record count argument should be a positive number" << endl;
- return 1;
- }
-
- ofstream ofs (argv[2]);
-
- if (!ofs.is_open ())
- {
- cerr << "unable to open '" << argv[2] << "' in write mode" << endl;
- return 1;
- }
-
- ofs << "<t:root xmlns:t='test' " <<
- "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " <<
- "xsi:schemaLocation='test test.xsd'>";
-
- unsigned short ch (1), en (0);
-
- for (unsigned long i (0); i < n; ++i)
- {
- ofs << "<record orange=\"" << i << "\"";
-
- if (i % 2 == 0)
- ofs << " apple=\"true\"";
-
- ofs << ">"
- << "<int>42</int>"
- << "<double>42345.4232</double>"
- << "<name>name123_45</name>";
-
- if (i % 2 == 1)
- ofs << "<string>one two three</string>";
-
- ofs << "<choice" << ch << ">" << ch << " choice</choice" << ch << ">"
- << "<enum>" << enums[en] << "</enum>"
- << "</record>";
-
- if (++ch > 4)
- ch = 1;
-
- if (++en > 4)
- en = 0;
- }
-
- ofs << "</t:root>";
-}
diff --git a/xsd/examples/cxx/parser/performance/makefile b/xsd/examples/cxx/parser/performance/makefile
deleted file mode 100644
index 69d3239..0000000
--- a/xsd/examples/cxx/parser/performance/makefile
+++ /dev/null
@@ -1,109 +0,0 @@
-# file : examples/cxx/parser/performance/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx time.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-inline
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/test.xsd,$(install_doc_dir)/xsd/$(path)/test.xsd)
- $(call install-data,$(src_base)/test-50k.xml,$(install_doc_dir)/xsd/$(path)/test-50k.xml)
- $(call install-data,$(src_base)/time.hxx,$(install_doc_dir)/xsd/$(path)/time.hxx)
- $(call install-data,$(src_base)/time.cxx,$(install_doc_dir)/xsd/$(path)/time.cxx)
- $(call install-data,$(src_base)/gen.cxx,$(install_doc_dir)/xsd/$(path)/gen.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/test.xsd,$(dist_prefix)/$(path)/test.xsd)
- $(call install-data,$(src_base)/test-50k.xml,$(dist_prefix)/$(path)/test-50k.xml)
- $(call install-data,$(src_base)/time.hxx,$(dist_prefix)/$(path)/time.hxx)
- $(call install-data,$(src_base)/time.cxx,$(dist_prefix)/$(path)/time.cxx)
- $(call install-data,$(src_base)/gen.cxx,$(dist_prefix)/$(path)/gen.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/parser/performance/test-50k.xml b/xsd/examples/cxx/parser/performance/test-50k.xml
deleted file mode 100644
index 42e22f3..0000000
--- a/xsd/examples/cxx/parser/performance/test-50k.xml
+++ /dev/null
@@ -1 +0,0 @@
-<t:root xmlns:t='test' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='test test.xsd'><record orange="0" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="1"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="2" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="3"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="4" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="5"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="6" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="7"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="8" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="9"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="10" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="11"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="12" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="13"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="14" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="15"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="16" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="17"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="18" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="19"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="20" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="21"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="22" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="23"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="24" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="25"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="26" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="27"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="28" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="29"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="30" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="31"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="32" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="33"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="34" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="35"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="36" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="37"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="38" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="39"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="40" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="41"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="42" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="43"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="44" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="45"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="46" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="47"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="48" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="49"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="50" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="51"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="52" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="53"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="54" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="55"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="56" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="57"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="58" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="59"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="60" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="61"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="62" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="63"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="64" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="65"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="66" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="67"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="68" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="69"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="70" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="71"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="72" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="73"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="74" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="75"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="76" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="77"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="78" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="79"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="80" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="81"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="82" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="83"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="84" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="85"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="86" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="87"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="88" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="89"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="90" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="91"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="92" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="93"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="94" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="95"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="96" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="97"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="98" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="99"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="100" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="101"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="102" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="103"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="104" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="105"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="106" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="107"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="108" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="109"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="110" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="111"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="112" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="113"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="114" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="115"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="116" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="117"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="118" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="119"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="120" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="121"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="122" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="123"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="124" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="125"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="126" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="127"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="128" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="129"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="130" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="131"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="132" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="133"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="134" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="135"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="136" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="137"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="138" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="139"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="140" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="141"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="142" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="143"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="144" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="145"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="146" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="147"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="148" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="149"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="150" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="151"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="152" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="153"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="154" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="155"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="156" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="157"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="158" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="159"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="160" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="161"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="162" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="163"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="164" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="165"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="166" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="167"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="168" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="169"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="170" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="171"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="172" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="173"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="174" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="175"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="176" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="177"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="178" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="179"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="180" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="181"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="182" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="183"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="184" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="185"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="186" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="187"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="188" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="189"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="190" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="191"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="192" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="193"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="194" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="195"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="196" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="197"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="198" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="199"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="200" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="201"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="202" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="203"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="204" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="205"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="206" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="207"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="208" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="209"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="210" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="211"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="212" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="213"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="214" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="215"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="216" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="217"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="218" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="219"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="220" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="221"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="222" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="223"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="224" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="225"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="226" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="227"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="228" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="229"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="230" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="231"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="232" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="233"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="234" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="235"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="236" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="237"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="238" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="239"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="240" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="241"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="242" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="243"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="244" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="245"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="246" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="247"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="248" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="249"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="250" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="251"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="252" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="253"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="254" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="255"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="256" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="257"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="258" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="259"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="260" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="261"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="262" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="263"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="264" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="265"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="266" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="267"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="268" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="269"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="270" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="271"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="272" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="273"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="274" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="275"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="276" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="277"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="278" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="279"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="280" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="281"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="282" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="283"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="284" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="285"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="286" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="287"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="288" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="289"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="290" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="291"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="292" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="293"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="294" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="295"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="296" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="297"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="298" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="299"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="300" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="301"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="302" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="303"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="304" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="305"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="306" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="307"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="308" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="309"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="310" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="311"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="312" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="313"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="314" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="315"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="316" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record></t:root> \ No newline at end of file
diff --git a/xsd/examples/cxx/parser/performance/test.xsd b/xsd/examples/cxx/parser/performance/test.xsd
deleted file mode 100644
index bb59c2a..0000000
--- a/xsd/examples/cxx/parser/performance/test.xsd
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/performance/test.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<schema targetNamespace="test" xmlns:t="test"
- xmlns="http://www.w3.org/2001/XMLSchema">
-
- <simpleType name="enum">
- <restriction base="string">
- <enumeration value="romance"/>
- <enumeration value="fiction"/>
- <enumeration value="horror"/>
- <enumeration value="history"/>
- <enumeration value="philosophy"/>
- </restriction>
- </simpleType>
-
- <complexType name="record">
- <sequence>
- <element name="int" type="unsignedInt"/>
- <element name="double" type="double"/>
- <element name="name" type="NCName"/>
- <element name="string" type="string" minOccurs="0" maxOccurs="1"/>
- <choice>
- <element name="choice1" type="string"/>
- <element name="choice2" type="string"/>
- <element name="choice3" type="string"/>
- <element name="choice4" type="string"/>
- </choice>
- <element name="enum" type="t:enum"/>
- </sequence>
- <attribute name="apple" type="boolean"/>
- <attribute name="orange" type="unsignedLong" use="required"/>
- </complexType>
-
- <complexType name="root">
- <sequence>
- <element name="record" type="t:record" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:root"/>
-
-</schema>
diff --git a/xsd/examples/cxx/parser/performance/time.cxx b/xsd/examples/cxx/parser/performance/time.cxx
deleted file mode 100644
index aca5c74..0000000
--- a/xsd/examples/cxx/parser/performance/time.cxx
+++ /dev/null
@@ -1,46 +0,0 @@
-// file : examples/cxx/parser/performance/time.cxx
-// copyright : not copyrighted - public domain
-
-#include "time.hxx"
-
-#if defined (WIN32) || defined (__WIN32__)
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h> // GetSystemTimeAsFileTime
-#else
-# include <time.h> // gettimeofday
-# include <sys/time.h> // timeval
-#endif
-
-#include <ostream> // std::ostream
-#include <iomanip> // std::setfill, std::setw
-
-namespace os
-{
- time::
- time ()
- {
-#if defined (WIN32) || defined (__WIN32__)
- FILETIME ft;
- GetSystemTimeAsFileTime (&ft);
- unsigned long long v (
- ((unsigned long long) (ft.dwHighDateTime) << 32) + ft.dwLowDateTime);
-
- sec_ = static_cast<unsigned long> (v / 10000000ULL);
- nsec_ = static_cast<unsigned long> ((v % 10000000ULL) * 100);
-#else
- timeval tv;
- if (gettimeofday(&tv, 0) != 0)
- throw failed ();
-
- sec_ = static_cast<unsigned long> (tv.tv_sec);
- nsec_ = static_cast<unsigned long> (tv.tv_usec * 1000);
-#endif
- }
-
- std::ostream&
- operator<< (std::ostream& o, time const& t)
- {
- return o << t.sec () << '.'
- << std::setfill ('0') << std::setw (9) << t.nsec ();
- }
-}
diff --git a/xsd/examples/cxx/parser/performance/time.hxx b/xsd/examples/cxx/parser/performance/time.hxx
deleted file mode 100644
index 3b2f040..0000000
--- a/xsd/examples/cxx/parser/performance/time.hxx
+++ /dev/null
@@ -1,110 +0,0 @@
-// file : examples/cxx/parser/performance/time.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef TIME_HXX
-#define TIME_HXX
-
-#include <iosfwd> // std::ostream&
-
-namespace os
-{
- class time
- {
- public:
- class failed {};
-
- // Create a time object representing the current time.
- //
- time ();
-
- time (unsigned long long nsec)
- {
- sec_ = static_cast<unsigned long> (nsec / 1000000000ULL);
- nsec_ = static_cast<unsigned long> (nsec % 1000000000ULL);
- }
-
- time (unsigned long sec, unsigned long nsec)
- {
- sec_ = sec;
- nsec_ = nsec;
- }
-
- public:
- unsigned long
- sec () const
- {
- return sec_;
- }
-
- unsigned long
- nsec () const
- {
- return nsec_;
- }
-
- public:
- class overflow {};
- class underflow {};
-
- time
- operator+= (time const& b)
- {
- unsigned long long tmp = 0ULL + nsec_ + b.nsec_;
-
- sec_ += static_cast<unsigned long> (b.sec_ + tmp / 1000000000ULL);
- nsec_ = static_cast<unsigned long> (tmp % 1000000000ULL);
-
- return *this;
- }
-
- time
- operator-= (time const& b)
- {
- if (*this < b)
- throw underflow ();
-
- sec_ -= b.sec_;
-
- if (nsec_ < b.nsec_)
- {
- --sec_;
- nsec_ += 1000000000ULL - b.nsec_;
- }
- else
- nsec_ -= b.nsec_;
-
- return *this;
- }
-
- friend time
- operator+ (time const& a, time const& b)
- {
- time r (a);
- r += b;
- return r;
- }
-
- friend time
- operator- (time const& a, time const& b)
- {
- time r (a);
- r -= b;
- return r;
- }
-
- friend bool
- operator < (time const& a, time const& b)
- {
- return (a.sec_ < b.sec_) || (a.sec_ == b.sec_ && a.nsec_ < b.nsec_);
- }
-
- private:
- unsigned long sec_;
- unsigned long nsec_;
- };
-
- std::ostream&
- operator<< (std::ostream&, time const&);
-}
-
-#endif // TIME_HXX
diff --git a/xsd/examples/cxx/parser/polymorphism/README b/xsd/examples/cxx/parser/polymorphism/README
deleted file mode 100644
index 60a97e9..0000000
--- a/xsd/examples/cxx/parser/polymorphism/README
+++ /dev/null
@@ -1,30 +0,0 @@
-This example shows how to handle XML Schema polymorphism features such
-as xsi:type attributes and substitution groups in the C++/Parser mapping.
-The case when xsi:type is used on root elements is covered in the
-polyroot examples.
-
-The example consists of the following files:
-
-supermen.xsd
- XML Schema which describes the "supermen" instance documents.
-
-supermen.xml
- Sample XML instance document.
-
-supermen-pskel.hxx
-supermen-pskel.cxx
- Parser skeletons generated by the XSD compiler from supermen.xsd.
- Note the use of the --generate-polymorphic command line option.
-
-supermen-pimpl.hxx
-supermen-pimpl.cxx
- Parser implementations that print the XML data to STDOUT.
-
-driver.cxx
- Driver for the example. It first constructs a parser instance from
- all the individual parsers found in supermen-pimpl.hxx. It then invokes
- this parser instance to parse the input file.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver supermen.xml
diff --git a/xsd/examples/cxx/parser/polymorphism/driver.cxx b/xsd/examples/cxx/parser/polymorphism/driver.cxx
deleted file mode 100644
index ffbe48b..0000000
--- a/xsd/examples/cxx/parser/polymorphism/driver.cxx
+++ /dev/null
@@ -1,70 +0,0 @@
-// file : examples/cxx/parser/polymorphism/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <iostream>
-
-#include "supermen-pimpl.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " supermen.xml" << endl;
- return 1;
- }
-
- try
- {
- // Construct the parser.
- //
- xml_schema::string_pimpl string_p;
- xml_schema::boolean_pimpl boolean_p;
- xml_schema::unsigned_int_pimpl unsigned_int_p;
-
- person_pimpl person_p;
- superman_pimpl superman_p;
- batman_pimpl batman_p;
-
- xml_schema::parser_map_impl person_map;
-
- supermen_pimpl supermen_p;
-
-
- person_p.parsers (string_p);
- superman_p.parsers (string_p, boolean_p);
- batman_p.parsers (string_p, boolean_p, unsigned_int_p);
-
- // Here we are specifying a parser map which containes several parsers
- // that can be used to parse the person element.
- //
- person_map.insert (person_p);
- person_map.insert (superman_p);
- person_map.insert (batman_p);
-
- supermen_p.person_parser (person_map);
-
- // Parse the XML document. The last argument to the document's
- // constructor indicates that we are parsing polymorphic XML
- // documents.
- //
- xml_schema::document doc_p (supermen_p, "supermen", true);
-
- supermen_p.pre ();
- doc_p.parse (argv[1]);
- supermen_p.post_supermen ();
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/parser/polymorphism/makefile b/xsd/examples/cxx/parser/polymorphism/makefile
deleted file mode 100644
index 8a89ab8..0000000
--- a/xsd/examples/cxx/parser/polymorphism/makefile
+++ /dev/null
@@ -1,106 +0,0 @@
-# file : examples/cxx/parser/polymorphism/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := supermen.xsd
-cxx := driver.cxx supermen-pimpl.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-polymorphic
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/supermen.xsd,$(install_doc_dir)/xsd/$(path)/supermen.xsd)
- $(call install-data,$(src_base)/supermen.xml,$(install_doc_dir)/xsd/$(path)/supermen.xml)
- $(call install-data,$(src_base)/supermen-pimpl.hxx,$(install_doc_dir)/xsd/$(path)/supermen-pimpl.hxx)
- $(call install-data,$(src_base)/supermen-pimpl.cxx,$(install_doc_dir)/xsd/$(path)/supermen-pimpl.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/supermen.xsd,$(dist_prefix)/$(path)/supermen.xsd)
- $(call install-data,$(src_base)/supermen.xml,$(dist_prefix)/$(path)/supermen.xml)
- $(call install-data,$(src_base)/supermen-pimpl.hxx,$(dist_prefix)/$(path)/supermen-pimpl.hxx)
- $(call install-data,$(src_base)/supermen-pimpl.cxx,$(dist_prefix)/$(path)/supermen-pimpl.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/parser/polymorphism/supermen-pimpl.cxx b/xsd/examples/cxx/parser/polymorphism/supermen-pimpl.cxx
deleted file mode 100644
index f4b3bc6..0000000
--- a/xsd/examples/cxx/parser/polymorphism/supermen-pimpl.cxx
+++ /dev/null
@@ -1,85 +0,0 @@
-// file : examples/cxx/parser/polymorphism/supermen-pimpl.cxx
-// copyright : not copyrighted - public domain
-//
-
-#include <iostream>
-
-#include "supermen-pimpl.hxx"
-
-using std::cout;
-using std::endl;
-
-// person_pimpl
-//
-void person_pimpl::
-pre ()
-{
- cout << "starting to parse person" << endl;
-}
-
-void person_pimpl::
-name (const std::string& v)
-{
- cout << "name: " << v << endl;
-}
-
-void person_pimpl::
-post_person ()
-{
- cout << "finished parsing person" << endl
- << endl;
-}
-
-// superman_pimpl
-//
-void superman_pimpl::
-pre ()
-{
- cout << "starting to parse superman" << endl;
-}
-
-void superman_pimpl::
-can_fly (bool v)
-{
- cout << "can-fly: " << v << endl;
-}
-
-void superman_pimpl::
-post_person ()
-{
- post_superman ();
-}
-
-void superman_pimpl::
-post_superman ()
-{
- cout << "finished parsing superman" << endl
- << endl;
-}
-
-// batman_pimpl
-//
-void batman_pimpl::
-pre ()
-{
- cout << "starting to parse batman" << endl;
-}
-
-void batman_pimpl::
-wing_span (unsigned int v)
-{
- cout << "wing-span: " << v << endl;
-}
-
-void batman_pimpl::
-post_superman ()
-{
- post_batman ();
-}
-
-void batman_pimpl::
-post_batman ()
-{
- cout << "finished parsing batman" << endl
- << endl;
-}
diff --git a/xsd/examples/cxx/parser/polymorphism/supermen-pimpl.hxx b/xsd/examples/cxx/parser/polymorphism/supermen-pimpl.hxx
deleted file mode 100644
index eaf81e5..0000000
--- a/xsd/examples/cxx/parser/polymorphism/supermen-pimpl.hxx
+++ /dev/null
@@ -1,68 +0,0 @@
-// file : examples/cxx/parser/polymorphism/supermen-pimpl.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef SUPERMEN_PIMPL_HXX
-#define SUPERMEN_PIMPL_HXX
-
-#include "supermen-pskel.hxx"
-
-class person_pimpl: public virtual person_pskel
-{
-public:
- virtual void
- pre ();
-
- virtual void
- name (const std::string&);
-
- virtual void
- post_person ();
-};
-
-class superman_pimpl: public virtual superman_pskel,
- public person_pimpl
-{
-public:
- virtual void
- pre ();
-
- virtual void
- can_fly (bool);
-
- // By default, post_superman() calls post_person(). In case of
- // polymorphic parsing we want the opposite: post_person() calls
- // post_superman().
- //
- virtual void
- post_person ();
-
- virtual void
- post_superman ();
-};
-
-class batman_pimpl: public virtual batman_pskel,
- public superman_pimpl
-{
-public:
- virtual void
- pre ();
-
- virtual void
- wing_span (unsigned int);
-
- // By default, post_batman() calls post_superman(). In case of
- // polymorphic parsing we want the opposite: post_superman()
- // calls post_batman().
- //
- virtual void
- post_superman ();
-
- virtual void
- post_batman ();
-};
-
-class supermen_pimpl: public supermen_pskel
-{
-};
-
-#endif // SUPERMEN_PIMPL_HXX
diff --git a/xsd/examples/cxx/parser/polymorphism/supermen.xml b/xsd/examples/cxx/parser/polymorphism/supermen.xml
deleted file mode 100644
index 15054fa..0000000
--- a/xsd/examples/cxx/parser/polymorphism/supermen.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/polymorphism/supermen.xml
-copyright : not copyrighted - public domain
-
--->
-
-<supermen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="supermen.xsd">
-
- <person>
- <name>John Doe</name>
- </person>
-
- <superman can-fly="false">
- <name>James "007" Bond</name>
- </superman>
-
- <superman can-fly="true" wing-span="10" xsi:type="batman">
- <name>Bruce Wayne</name>
- </superman>
-
-</supermen>
diff --git a/xsd/examples/cxx/parser/polymorphism/supermen.xsd b/xsd/examples/cxx/parser/polymorphism/supermen.xsd
deleted file mode 100644
index c9029da..0000000
--- a/xsd/examples/cxx/parser/polymorphism/supermen.xsd
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/polymorphism/supermen.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <!-- substitution group root -->
- <xsd:element name="person" type="person"/>
-
-
- <xsd:complexType name="superman">
- <xsd:complexContent>
- <xsd:extension base="person">
- <xsd:attribute name="can-fly" type="xsd:boolean" use="required"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:element name="superman" type="superman" substitutionGroup="person"/>
-
- <xsd:complexType name="batman">
- <xsd:complexContent>
- <xsd:extension base="superman">
- <xsd:attribute name="wing-span" type="xsd:unsignedInt" use="required"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="supermen">
- <xsd:sequence>
- <xsd:element ref="person" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="supermen" type="supermen"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/parser/polyroot/README b/xsd/examples/cxx/parser/polyroot/README
deleted file mode 100644
index f41b91c..0000000
--- a/xsd/examples/cxx/parser/polyroot/README
+++ /dev/null
@@ -1,36 +0,0 @@
-This example shows how to handle the xsi:type attributes when it is used
-on root elements. For general coverage of XML Schema polymorphism handling
-in the C++/Parser mapping see the polymorphism example.
-
-The example consists of the following files:
-
-supermen.xsd
- XML Schema which describes the "supermen" instance documents.
-
-person.xml
-superman.xml
-batman.xml
- Sample XML instance documents.
-
-supermen-pskel.hxx
-supermen-pskel.cxx
- Parser skeletons generated by the XSD compiler from supermen.xsd.
- Note the use of the --generate-polymorphic command line option.
-
-supermen-pimpl.hxx
-supermen-pimpl.cxx
- Parser implementations that print the XML data to STDOUT.
-
-driver.cxx
- Driver for the example. It implements a custom document parser
- that determines which XML Schema type is being parsed and uses
- the corresponding parser implementation. The driver first
- constructs a parser instance from all the individual parsers
- found in supermen-pimpl.hxx. In then invokes this parser instance
- to parse the input file.
-
-To run the example on the sample XML instance documents simply execute:
-
-$ ./driver person.xml
-$ ./driver superman.xml
-$ ./driver batman.xml
diff --git a/xsd/examples/cxx/parser/polyroot/batman.xml b/xsd/examples/cxx/parser/polyroot/batman.xml
deleted file mode 100644
index fad0b71..0000000
--- a/xsd/examples/cxx/parser/polyroot/batman.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/polyroot/batman.xml
-copyright : not copyrighted - public domain
-
--->
-
-<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="supermen.xsd"
- xsi:type="batman" can-fly="true" wing-span="10">
-
- <name>Bruce Wayne</name>
-
-</person>
diff --git a/xsd/examples/cxx/parser/polyroot/driver.cxx b/xsd/examples/cxx/parser/polyroot/driver.cxx
deleted file mode 100644
index 1c9c778..0000000
--- a/xsd/examples/cxx/parser/polyroot/driver.cxx
+++ /dev/null
@@ -1,138 +0,0 @@
-// file : examples/cxx/parser/polyroot/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <map>
-#include <string>
-#include <iostream>
-
-#include "supermen-pimpl.hxx"
-
-using std::cerr;
-using std::endl;
-using xml_schema::ro_string;
-
-// Customize the xml_schema::document object to handle polymorphic
-// root element. For more information see the multiroot example.
-//
-class document: public xml_schema::document
-{
-public:
- document (const xml_schema::parser_map& parser_map)
- : xml_schema::document (true), // Indicate polymorphic parsing.
- parser_map_ (parser_map)
- {
- }
-
-protected:
- // This function is called to obtain the root element type parser.
- // If the returned pointer is 0 then the whole document content
- // is ignored. The type argument contains the XML Schema type
- // if xsi:type attribute was specified for this element and 0
- // otherwise.
- //
- virtual xml_schema::parser_base*
- start_root_element (const ro_string& ns,
- const ro_string& name,
- const ro_string* type)
- {
- if (name != "person" || !ns.empty ())
- return 0;
-
- xml_schema::parser_base* base;
-
- // Search the parser map.
- //
- if (type == 0)
- {
- // No xsi:type. Static type should be used.
- //
- ro_string st (person_pskel::_static_type ());
- base = parser_map_.find (st);
- }
- else
- {
- base = parser_map_.find (*type);
- }
-
- if (base != 0)
- {
- parser_used_ = dynamic_cast<person_pskel*> (base);
- parser_used_->pre ();
- }
- else
- parser_used_ = 0; // No parser for this type.
-
- return parser_used_;
- }
-
- // This function is called to indicate the completion of document
- // parsing. The parser argument contains the pointer returned by
- // start_root_element.
- //
- virtual void
- end_root_element (const ro_string& /* ns */,
- const ro_string& /* name */,
- xml_schema::parser_base* /* parser */)
- {
- // Instead of caching the current parser in parser_used_, we
- // could also dynamic_cast the parser argument to the person_pskel
- // type.
- //
- if (parser_used_)
- parser_used_->post_person ();
- }
-
-
-private:
- const xml_schema::parser_map& parser_map_;
- person_pskel* parser_used_;
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " instance.xml" << endl;
- return 1;
- }
-
- try
- {
- // Construct the parser.
- //
- xml_schema::string_pimpl string_p;
- xml_schema::boolean_pimpl boolean_p;
- xml_schema::unsigned_int_pimpl unsigned_int_p;
-
- person_pimpl person_p;
- superman_pimpl superman_p;
- batman_pimpl batman_p;
-
- person_p.parsers (string_p);
- superman_p.parsers (string_p, boolean_p);
- batman_p.parsers (string_p, boolean_p, unsigned_int_p);
-
- // Parse the XML document.
- //
- xml_schema::parser_map_impl person_map;
-
- person_map.insert (person_p);
- person_map.insert (superman_p);
- person_map.insert (batman_p);
-
- document doc_p (person_map);
-
- doc_p.parse (argv[1]);
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/parser/polyroot/makefile b/xsd/examples/cxx/parser/polyroot/makefile
deleted file mode 100644
index a5a9088..0000000
--- a/xsd/examples/cxx/parser/polyroot/makefile
+++ /dev/null
@@ -1,110 +0,0 @@
-# file : examples/cxx/parser/polyroot/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := supermen.xsd
-cxx := driver.cxx supermen-pimpl.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-polymorphic
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/supermen.xsd,$(install_doc_dir)/xsd/$(path)/supermen.xsd)
- $(call install-data,$(src_base)/batman.xml,$(install_doc_dir)/xsd/$(path)/batman.xml)
- $(call install-data,$(src_base)/person.xml,$(install_doc_dir)/xsd/$(path)/person.xml)
- $(call install-data,$(src_base)/superman.xml,$(install_doc_dir)/xsd/$(path)/superman.xml)
- $(call install-data,$(src_base)/supermen-pimpl.hxx,$(install_doc_dir)/xsd/$(path)/supermen-pimpl.hxx)
- $(call install-data,$(src_base)/supermen-pimpl.cxx,$(install_doc_dir)/xsd/$(path)/supermen-pimpl.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/supermen.xsd,$(dist_prefix)/$(path)/supermen.xsd)
- $(call install-data,$(src_base)/batman.xml,$(dist_prefix)/$(path)/batman.xml)
- $(call install-data,$(src_base)/person.xml,$(dist_prefix)/$(path)/person.xml)
- $(call install-data,$(src_base)/superman.xml,$(dist_prefix)/$(path)/superman.xml)
- $(call install-data,$(src_base)/supermen-pimpl.hxx,$(dist_prefix)/$(path)/supermen-pimpl.hxx)
- $(call install-data,$(src_base)/supermen-pimpl.cxx,$(dist_prefix)/$(path)/supermen-pimpl.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/parser/polyroot/person.xml b/xsd/examples/cxx/parser/polyroot/person.xml
deleted file mode 100644
index f463bea..0000000
--- a/xsd/examples/cxx/parser/polyroot/person.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/polyroot/person.xml
-copyright : not copyrighted - public domain
-
--->
-
-<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="supermen.xsd">
-
- <name>John Doe</name>
-
-</person>
diff --git a/xsd/examples/cxx/parser/polyroot/superman.xml b/xsd/examples/cxx/parser/polyroot/superman.xml
deleted file mode 100644
index c831f6c..0000000
--- a/xsd/examples/cxx/parser/polyroot/superman.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/polyroot/superman.xml
-copyright : not copyrighted - public domain
-
--->
-
-<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="supermen.xsd"
- xsi:type="superman" can-fly="false">
-
- <name>James "007" Bond</name>
-
-</person>
diff --git a/xsd/examples/cxx/parser/polyroot/supermen-pimpl.cxx b/xsd/examples/cxx/parser/polyroot/supermen-pimpl.cxx
deleted file mode 100644
index 62289e9..0000000
--- a/xsd/examples/cxx/parser/polyroot/supermen-pimpl.cxx
+++ /dev/null
@@ -1,85 +0,0 @@
-// file : examples/cxx/parser/polyroot/supermen-pimpl.cxx
-// copyright : not copyrighted - public domain
-//
-
-#include <iostream>
-
-#include "supermen-pimpl.hxx"
-
-using std::cout;
-using std::endl;
-
-// person_pimpl
-//
-void person_pimpl::
-pre ()
-{
- cout << "starting to parse person" << endl;
-}
-
-void person_pimpl::
-name (const std::string& v)
-{
- cout << "name: " << v << endl;
-}
-
-void person_pimpl::
-post_person ()
-{
- cout << "finished parsing person" << endl
- << endl;
-}
-
-// superman_pimpl
-//
-void superman_pimpl::
-pre ()
-{
- cout << "starting to parse superman" << endl;
-}
-
-void superman_pimpl::
-can_fly (bool v)
-{
- cout << "can-fly: " << v << endl;
-}
-
-void superman_pimpl::
-post_person ()
-{
- post_superman ();
-}
-
-void superman_pimpl::
-post_superman ()
-{
- cout << "finished parsing superman" << endl
- << endl;
-}
-
-// batman_pimpl
-//
-void batman_pimpl::
-pre ()
-{
- cout << "starting to parse batman" << endl;
-}
-
-void batman_pimpl::
-wing_span (unsigned int v)
-{
- cout << "wing-span: " << v << endl;
-}
-
-void batman_pimpl::
-post_superman ()
-{
- post_batman ();
-}
-
-void batman_pimpl::
-post_batman ()
-{
- cout << "finished parsing batman" << endl
- << endl;
-}
diff --git a/xsd/examples/cxx/parser/polyroot/supermen-pimpl.hxx b/xsd/examples/cxx/parser/polyroot/supermen-pimpl.hxx
deleted file mode 100644
index 49e8c74..0000000
--- a/xsd/examples/cxx/parser/polyroot/supermen-pimpl.hxx
+++ /dev/null
@@ -1,64 +0,0 @@
-// file : examples/cxx/parser/polyroot/supermen-pimpl.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef SUPERMEN_PIMPL_HXX
-#define SUPERMEN_PIMPL_HXX
-
-#include "supermen-pskel.hxx"
-
-class person_pimpl: public virtual person_pskel
-{
-public:
- virtual void
- pre ();
-
- virtual void
- name (const std::string&);
-
- virtual void
- post_person ();
-};
-
-class superman_pimpl: public virtual superman_pskel,
- public person_pimpl
-{
-public:
- virtual void
- pre ();
-
- virtual void
- can_fly (bool);
-
- // By default, post_superman() calls post_person(). In case of
- // polymorphic parsing we want the opposite: post_person() calls
- // post_superman().
- //
- virtual void
- post_person ();
-
- virtual void
- post_superman ();
-};
-
-class batman_pimpl: public virtual batman_pskel,
- public superman_pimpl
-{
-public:
- virtual void
- pre ();
-
- virtual void
- wing_span (unsigned int);
-
- // By default, post_batman() calls post_superman(). In case of
- // polymorphic parsing we want the opposite: post_superman()
- // calls post_batman().
- //
- virtual void
- post_superman ();
-
- virtual void
- post_batman ();
-};
-
-#endif // SUPERMEN_PIMPL_HXX
diff --git a/xsd/examples/cxx/parser/polyroot/supermen.xsd b/xsd/examples/cxx/parser/polyroot/supermen.xsd
deleted file mode 100644
index dc5d439..0000000
--- a/xsd/examples/cxx/parser/polyroot/supermen.xsd
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/polyroot/supermen.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="person" type="person"/>
-
- <xsd:complexType name="superman">
- <xsd:complexContent>
- <xsd:extension base="person">
- <xsd:attribute name="can-fly" type="xsd:boolean" use="required"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="batman">
- <xsd:complexContent>
- <xsd:extension base="superman">
- <xsd:attribute name="wing-span" type="xsd:unsignedInt" use="required"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/parser/wildcard/README b/xsd/examples/cxx/parser/wildcard/README
deleted file mode 100644
index 89f9aa9..0000000
--- a/xsd/examples/cxx/parser/wildcard/README
+++ /dev/null
@@ -1,27 +0,0 @@
-This example shows how to parse the XML data matched by XML Schema
-wildcards (any and anyAttribute) in the C++/Parser mapping. The
-example consists of the following files:
-
-email.xsd
- XML Schema which describes a simple email format with the
- extensible envelope type.
-
-email.xml
- Sample email message.
-
-email-pskel.hxx
-email-pskel.cxx
- Parser skeletons generated by XSD from email.xsd.
-
-driver.cxx
- Parser implementations and a driver for the example. The
- parser implementations simply print the data to STDERR.
- The driver first constructs parser instances from the
- parser implementations mentioned above and a couple of
- predefined parsers for the XML Schema built-in types.
- In then invokes the parser instances to parse the input
- file.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver email.xml
diff --git a/xsd/examples/cxx/parser/wildcard/driver.cxx b/xsd/examples/cxx/parser/wildcard/driver.cxx
deleted file mode 100644
index fa82ec0..0000000
--- a/xsd/examples/cxx/parser/wildcard/driver.cxx
+++ /dev/null
@@ -1,239 +0,0 @@
-// file : examples/cxx/parser/wildcard/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <string>
-#include <memory>
-#include <iostream>
-
-#include "email-pskel.hxx"
-
-using namespace std;
-using xml_schema::ro_string;
-
-class binary_pimpl: public email::binary_pskel,
- public xml_schema::base64_binary_pimpl
-{
-public:
- virtual void
- name (const string& n)
- {
- cerr << "binary: " << n << endl;
- }
-
- virtual void
- mime (const string& t)
- {
- cerr << "type: " << t << endl
- << endl;
- }
-
- virtual void
- post_binary ()
- {
- auto_ptr<xml_schema::buffer> buf (post_base64_binary ());
-
- cerr << "size: " << buf->size () << endl
- << endl;
- }
-};
-
-class envelope_pimpl: public email::envelope_pskel
-{
-public:
- envelope_pimpl (xml_schema::unsigned_int_pskel& uint_p,
- xml_schema::string_pskel& string_p,
- email::binary_pskel& binary_p)
- : depth_ (0), cur_ (0),
- uint_p_ (uint_p), string_p_ (string_p), binary_p_ (binary_p)
- {
- }
-
- virtual void
- to (const string& addr)
- {
- cerr << "To: " << addr << endl;
- }
-
- virtual void
- from (const string& addr)
- {
- cerr << "From: " << addr << endl;
- }
-
- virtual void
- subject (const string& s)
- {
- cerr << "Subject: " << s << endl;
- }
-
- // Wildcard handling. All wildcard events are routed to these
- // four functions. It is our job to dispatch them to the right
- // parsers.
- //
- virtual void
- _start_any_element (const ro_string& ns,
- const ro_string& name,
- const ro_string* type)
- {
- if (depth_++ > 0)
- {
- // Nested wildcard element.
- //
- if (cur_)
- cur_->_start_element (ns, name, type);
- }
- else
- {
- // Top-level element matched by the any wildcard.
- //
- if (ns == "http://www.codesynthesis.com/email")
- {
- if (name == "text")
- {
- cur_ = &string_p_;
- string_p_.pre ();
- string_p_._pre_impl ();
- }
- else if (name == "binary")
- {
- cur_ = &binary_p_;
- binary_p_.pre ();
- binary_p_._pre_impl ();
- }
- }
-
- if (cur_ == 0)
- {
- cerr << "Unknown wildcard content: " << ns << "#" << name << endl;
- }
- }
- }
-
- virtual void
- _end_any_element (const ro_string& ns, const ro_string& name)
- {
- if (--depth_ > 0)
- {
- if (cur_)
- cur_->_end_element (ns, name);
- }
- else
- {
- if (ns == "http://www.codesynthesis.com/email")
- {
- if (name == "text")
- {
- string_p_._post_impl ();
- string text (string_p_.post_string ());
-
- cerr << text << endl
- << endl;
- }
- else if (name == "binary")
- {
- binary_p_._post_impl ();
- binary_p_.post_binary ();
- }
- }
-
- cur_ = 0;
- }
- }
-
- virtual void
- _any_attribute (const ro_string& ns,
- const ro_string& name,
- const ro_string& value)
- {
- if (depth_ > 0)
- {
- // Nested wildcard attribute.
- //
- if (cur_)
- cur_->_attribute (ns, name, value);
- }
- else
- {
- // Top-level attribute matched by the anyAttribute wildcard.
- //
- if (ns == "http://www.codesynthesis.com/email" && name == "thread-id")
- {
- uint_p_.pre ();
- uint_p_._pre_impl ();
- uint_p_._characters (value);
- uint_p_._post_impl ();
- unsigned int tid (uint_p_.post_unsigned_int ());
-
- cerr << "Thread-id: " << tid << endl;
- }
- }
- }
-
- virtual void
- _any_characters (const ro_string& s)
- {
- if (depth_ > 0)
- {
- if (cur_)
- cur_->_characters (s);
- }
- }
-
-private:
- size_t depth_;
- xml_schema::parser_base* cur_;
-
- // Parsers for the unsigned int, string and binary types.
- //
-private:
- xml_schema::unsigned_int_pskel& uint_p_;
- xml_schema::string_pskel& string_p_;
- email::binary_pskel& binary_p_;
-};
-
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " email.xml" << endl;
- return 1;
- }
-
- try
- {
- // Construct the parser.
- //
- xml_schema::unsigned_int_pimpl unsigned_int_p;
- xml_schema::string_pimpl string_p;
- binary_pimpl binary_p;
- envelope_pimpl envelope_p (unsigned_int_p, string_p, binary_p);
-
- binary_p.parsers (string_p, // name
- string_p); // mime
-
- envelope_p.parsers (string_p, // to
- string_p, // from
- string_p); // subject
-
- // Parse the XML instance document.
- //
- xml_schema::document doc_p (envelope_p,
- "http://www.codesynthesis.com/email",
- "message");
- envelope_p.pre ();
- doc_p.parse (argv[1]);
- envelope_p.post_envelope ();
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/parser/wildcard/email.xml b/xsd/examples/cxx/parser/wildcard/email.xml
deleted file mode 100644
index f5d0359..0000000
--- a/xsd/examples/cxx/parser/wildcard/email.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/wildcard/email.xml
-copyright : not copyrighted - public domain
-
--->
-
-<eml:message xmlns:eml="http://www.codesynthesis.com/email"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/email email.xsd"
- eml:thread-id="123456789">
-
- <to>Jane Doe &lt;jane@doe.com></to>
- <from>John Doe &lt;john@doe.com></from>
- <subject>Surfing pictures</subject>
-
- <eml:text>
-Hi Jane,
-
-Here are cool pictures of me surfing.
-
-Cheers,
-John
- </eml:text>
-
- <eml:binary name="pic1.jpg" mime="image/jpeg">YmFzZTY0IGJpbmFyeQ==</eml:binary>
- <eml:binary name="pic2.jpg" mime="image/jpeg">YmFzZTY0IGJpbmFyeQ==</eml:binary>
-
-</eml:message>
diff --git a/xsd/examples/cxx/parser/wildcard/email.xsd b/xsd/examples/cxx/parser/wildcard/email.xsd
deleted file mode 100644
index 087fc7e..0000000
--- a/xsd/examples/cxx/parser/wildcard/email.xsd
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/parser/wildcard/email.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:eml="http://www.codesynthesis.com/email"
- targetNamespace="http://www.codesynthesis.com/email">
-
- <!-- Predefined envolop body types. -->
-
- <xsd:element name="text" type="xsd:string"/>
-
- <xsd:complexType name="binary">
- <xsd:simpleContent>
- <xsd:extension base="xsd:base64Binary">
- <xsd:attribute name="name" type="xsd:string" use="required"/>
- <xsd:attribute name="mime" type="xsd:string" use="required"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:element name="binary" type="eml:binary"/>
-
- <!-- Predefined envelop attributes. -->
-
- <xsd:attribute name="thread-id" type="xsd:unsignedInt"/>
-
-
- <xsd:complexType name="envelope">
- <xsd:sequence>
- <xsd:element name="to" type="xsd:string"/>
- <xsd:element name="from" type="xsd:string"/>
- <xsd:element name="subject" type="xsd:string"/>
-
- <!-- Extensible envelope body. -->
-
- <xsd:any namespace="##targetNamespace" processContents="strict"
- maxOccurs="unbounded" />
- </xsd:sequence>
- <xsd:anyAttribute namespace="##targetNamespace" processContents="strict"/>
- </xsd:complexType>
-
- <xsd:element name="message" type="eml:envelope"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/parser/wildcard/makefile b/xsd/examples/cxx/parser/wildcard/makefile
deleted file mode 100644
index 524f8da..0000000
--- a/xsd/examples/cxx/parser/wildcard/makefile
+++ /dev/null
@@ -1,102 +0,0 @@
-# file : examples/cxx/parser/wildcard/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := email.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/email.xsd,$(install_doc_dir)/xsd/$(path)/email.xsd)
- $(call install-data,$(src_base)/email.xml,$(install_doc_dir)/xsd/$(path)/email.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/email.xsd,$(dist_prefix)/$(path)/email.xsd)
- $(call install-data,$(src_base)/email.xml,$(dist_prefix)/$(path)/email.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/README b/xsd/examples/cxx/tree/README
deleted file mode 100644
index 569bf11..0000000
--- a/xsd/examples/cxx/tree/README
+++ /dev/null
@@ -1,80 +0,0 @@
-This directory contains a number of examples that show how to use
-the C++/Tree mapping. The following list gives an overview of
-each example. See the README files in example directories for
-more information on each example.
-
-hello
- A simple "Hello, world!" example that shows how to parse XML
- documents.
-
-library
- Shows hot to handle more complex data structures, use the
- ID/IDREF cross-referencing mechanism, use the xsd:enumeration
- to C++ enum mapping, modify the object model, and serialize
- the modified object model back to XML.
-
-polymorphism
- Shows how to use XML Schema polymorphism features such as the
- xsi:type attribute and substitution groups.
-
-order/
- A collection of examples that show how to use ordered types to
- capture and maintain content order.
-
-xpath
- Shows how to use the C++/Tree mapping together with XPath.
-
-wildcard
- Shows how to use the optional wildcard mapping to parse, access,
- modify, and serialize the XML data matched by XML Schema wildcards
- (any and anyAttribute).
-
-mixed
- Shows how to access the underlying DOM nodes to handle raw, "type-
- less content" such as mixed content models, anyType/anySimpleType,
- and any/anyAttribute.
-
-multiroot
- Shows how to handle XML vocabularies with multiple root elements.
- See also the messaging example.
-
-messaging
- Shows how to handle XML vocabularies with multiple root elements
- using the element type and element map features of the C++/Tree
- mapping.
-
-caching
- Shows how to parse several XML documents while reusing the
- underlying XML parser and caching the schemas used for validation.
-
-embedded
- Shows how to embed the binary representation of the schema grammar
- into an application and then use it with the C++/Tree mapping to
- parse and validate XML documents.
-
-performance
- Measures the performance of parsing and serialization. This example
- also shows how to structure your code to achieve the maximum
- performance for these two operations.
-
-custom/
- A collection of examples that show how to customize the C++/Tree
- mapping by using custom C++ classes instead of or in addition to
- the generated ones. See the accompanying README file for an
- overview of each example in this directory.
-
-streaming
- Shows how to perform stream-oriented, partially in-memory XML
- processing using the C++/Tree mapping. With the partially in-memory
- parsing and serialization only a part of the object model is in
- memory at any given time. With this approach we can process parts
- of the document as they become available as well as handle documents
- that are too large to fit into memory.
-
-compression
- Shows how to compress an XML document during serialization and decompress
- it during parsing using the zlib library.
-
-binary/
- A collection of examples that show how to serialize the object model
- into a number of predefined and custom binary formats.
diff --git a/xsd/examples/cxx/tree/binary/README b/xsd/examples/cxx/tree/binary/README
deleted file mode 100644
index 365551e..0000000
--- a/xsd/examples/cxx/tree/binary/README
+++ /dev/null
@@ -1,16 +0,0 @@
-This directory contains a number of examples that show how to serialize
-the object model into a number of predefined and custom binary formats.
-The following list gives an overview of each example:
-
-boost
- Shows how to save/load the object model to/from a custom format
- using the Boost serialization library as an example.
-
-cdr
- Shows how to save/load the object model to/from CDR (Common Data
- Representation) binary format using ACE CDR streams.
-
-xdr
- Shows how to save/load the object model to/from XDR (eXternal Data
- Representation) binary format using the XDR API provided as part of
- Sun RPC.
diff --git a/xsd/examples/cxx/tree/binary/boost/README b/xsd/examples/cxx/tree/binary/boost/README
deleted file mode 100644
index 6cdd2dd..0000000
--- a/xsd/examples/cxx/tree/binary/boost/README
+++ /dev/null
@@ -1,49 +0,0 @@
-This example shows how to save/load the object model to/from a custom
-format using the Boost serialization library as an example. You will
-need the Boost serialization library[1] installed in order to build
-and run this example.
-
-[1] http://www.boost.org
-
-The example consists of the following files:
-
-library.xsd
- XML Schema which describes a library of books.
-
-library.xml
- Sample XML instance document.
-
-boost-archive-extraction.hxx
-boost-archive-insertion.hxx
- Boost archive insertion and extraction operators for fundamental
- types. You will need to provide a similar set of operators for
- your own stream types.
-
-library-prologue.hxx
- Contains a number of #include directives that are inserted into
- the generated code by the XSD compiler. The included files are:
- boost/archive/text_oarchive.hpp, boost/archive/text_oarchive.hpp,
- boost-archive-insertion.hxx, and boost-archive-insertion.hxx.
-
-library.hxx
-library.cxx
- C++ types that represent the given vocabulary as well as Boost
- archive insertion and extraction operations. These are generated
- by the XSD compiler from library.xsd. The --hxx-prologue-file
- option is used to insert the contents of the library-prologue.hxx
- file into the generated header file. The --generate-insertion and
- --generate-extraction options are used to generate the insertion
- and extraction operations for text_oarchive and text_iarchive
- types.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input XML file. It then
- saves the object model to text_oarchive and loads it back from
- text_iarchive. Additionally, it prints the resulting text
- representation as well as the content of the object model before
- saving it to text_oarchive and after loading it from text_iarchive.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver library.xml
diff --git a/xsd/examples/cxx/tree/binary/boost/boost-archive-extraction.hxx b/xsd/examples/cxx/tree/binary/boost/boost-archive-extraction.hxx
deleted file mode 100644
index 8a1c1ef..0000000
--- a/xsd/examples/cxx/tree/binary/boost/boost-archive-extraction.hxx
+++ /dev/null
@@ -1,188 +0,0 @@
-// file : examples/cxx/tree/binary/boost/boost-archive-insertion.cxx
-// copyright : not copyrighted - public domain
-
-#ifndef BOOST_ARCHIVE_EXTRACTION_HXX
-#define BOOST_ARCHIVE_EXTRACTION_HXX
-
-#include <cstddef> // std::size_t
-#include <string>
-
-#include <xsd/cxx/tree/buffer.hxx>
-#include <xsd/cxx/tree/istream.hxx>
-
-#include <boost/cstdint.hpp>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // as_size
- //
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_size<T>& x)
- {
- std::size_t r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
- // 8-bit
- //
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_int8<T>& x)
- {
- boost::int8_t r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_uint8<T>& x)
- {
- boost::uint8_t r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
-
- // 16-bit
- //
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_int16<T>& x)
- {
- boost::int16_t r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_uint16<T>& x)
- {
- boost::uint16_t r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
-
- // 32-bit
- //
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_int32<T>& x)
- {
- boost::int32_t r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_uint32<T>& x)
- {
- boost::uint32_t r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
-
- // 64-bit
- //
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_int64<T>& x)
- {
- boost::int64_t r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_uint64<T>& x)
- {
- boost::uint64_t r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
-
- // Boolean
- //
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_bool<T>& x)
- {
- bool r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
-
- // Floating-point
- //
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_float32<T>& x)
- {
- float r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
- template <typename Archive, typename T>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, istream_common::as_float64<T>& x)
- {
- double r;
- s.impl () >> r;
- x.x_ = static_cast<T> (r);
- return s;
- }
-
- // Extraction of std::basic_string.
- //
-
- template <typename Archive, typename C>
- inline istream<Archive>&
- operator>> (istream<Archive>& s, std::basic_string<C>& x)
- {
- s.impl () >> x;
- return s;
- }
-
-
- // Extraction of a binary buffer.
- //
- template <typename Archive, typename C>
- istream<Archive>&
- operator>> (istream<Archive>& s, buffer<C>& x)
- {
- std::size_t size;
- s.impl () >> size;
- x.size (size);
- s.impl ().load_binary (x.data (), size);
- return s;
- }
- }
- }
-}
-
-#endif // BOOST_ARCHIVE_EXTRACTION_HXX
diff --git a/xsd/examples/cxx/tree/binary/boost/boost-archive-insertion.hxx b/xsd/examples/cxx/tree/binary/boost/boost-archive-insertion.hxx
deleted file mode 100644
index 4c89104..0000000
--- a/xsd/examples/cxx/tree/binary/boost/boost-archive-insertion.hxx
+++ /dev/null
@@ -1,177 +0,0 @@
-// file : examples/cxx/tree/binary/boost/boost-archive-insertion.cxx
-// copyright : not copyrighted - public domain
-
-#ifndef BOOST_ARCHIVE_INSERTION_HXX
-#define BOOST_ARCHIVE_INSERTION_HXX
-
-#include <cstddef> // std::size_t
-#include <string>
-
-#include <xsd/cxx/tree/buffer.hxx>
-#include <xsd/cxx/tree/ostream.hxx>
-
-#include <boost/cstdint.hpp>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // as_size
- //
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_size<T> x)
- {
- std::size_t v (static_cast<std::size_t> (x.x_));
- s.impl () << v;
- return s;
- }
-
- // 8-bit
- //
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_int8<T> x)
- {
- boost::int8_t v (static_cast<boost::int8_t> (x.x_));
- s.impl () << v;
- return s;
- }
-
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_uint8<T> x)
- {
- boost::uint8_t v (static_cast<boost::uint8_t> (x.x_));
- s.impl () << v;
- return s;
- }
-
-
- // 16-bit
- //
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_int16<T> x)
- {
- boost::int16_t v (static_cast<boost::int16_t> (x.x_));
- s.impl () << v;
- return s;
- }
-
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_uint16<T> x)
- {
- boost::uint16_t v (static_cast<boost::uint16_t> (x.x_));
- s.impl () << v;
- return s;
- }
-
-
- // 32-bit
- //
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_int32<T> x)
- {
- boost::int32_t v (static_cast<boost::int32_t> (x.x_));
- s.impl () << v;
- return s;
- }
-
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_uint32<T> x)
- {
- boost::uint32_t v (static_cast<boost::uint32_t> (x.x_));
- s.impl () << v;
- return s;
- }
-
-
- // 64-bit
- //
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_int64<T> x)
- {
- boost::int64_t v (static_cast<boost::int64_t> (x.x_));
- s.impl () << v;
- return s;
- }
-
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_uint64<T> x)
- {
- boost::uint64_t v (static_cast<boost::uint64_t> (x.x_));
- s.impl () << v;
- return s;
- }
-
-
- // Boolean
- //
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_bool<T> x)
- {
- bool v (static_cast<bool> (x.x_));
- s.impl () << v;
- return s;
- }
-
-
- // Floating-point
- //
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_float32<T> x)
- {
- float v (static_cast<float> (x.x_));
- s.impl () << v;
- return s;
- }
-
- template <typename Archive, typename T>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, ostream_common::as_float64<T> x)
- {
- double v (static_cast<double> (x.x_));
- s.impl () << v;
- return s;
- }
-
-
- // Insertion of std::basic_string.
- //
- template <typename Archive, typename C>
- inline ostream<Archive>&
- operator<< (ostream<Archive>& s, const std::basic_string<C>& x)
- {
- s.impl () << x;
- return s;
- }
-
-
- // Insertion of a binary buffer.
- //
- template <typename Archive, typename C>
- ostream<Archive>&
- operator<< (ostream<Archive>& s, const buffer<C>& x)
- {
- // Boost.Serialization needs an lvalue.
- //
- std::size_t size (x.size());
- s.impl () << size;
- s.impl ().save_binary (x.data (), x.size ());
- return s;
- }
- }
- }
-}
-
-#endif // BOOST_ARCHIVE_INSERTION_HXX
diff --git a/xsd/examples/cxx/tree/binary/boost/driver.cxx b/xsd/examples/cxx/tree/binary/boost/driver.cxx
deleted file mode 100644
index df053b6..0000000
--- a/xsd/examples/cxx/tree/binary/boost/driver.cxx
+++ /dev/null
@@ -1,72 +0,0 @@
-// file : examples/cxx/tree/binary/boost/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <cstring> // std::memcpy
-#include <sstream>
-#include <iostream>
-
-// You can generate insertion/extraction code for other archive
-// types (for example, binary, XML, etc).
-//
-#include <boost/archive/text_oarchive.hpp>
-#include <boost/archive/text_iarchive.hpp>
-
-#include "library.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " library.xml" << endl;
- return 1;
- }
-
- try
- {
- using namespace library;
- using boost::archive::text_oarchive;
- using boost::archive::text_iarchive;
-
- // Read in the file.
- //
- std::auto_ptr<catalog> c (catalog_ (argv[1]));
-
- cerr << *c << endl;
-
- // Save into a text archive.
- //
- std::ostringstream ostr;
- text_oarchive oa (ostr);
- xml_schema::ostream<text_oarchive> os (oa);
-
- os << *c;
-
- // Print the text representation.
- //
- std::string str (ostr.str ());
-
- cerr << endl
- << "text representation: " << endl
- << str << endl;
-
- // Load from a text archive.
- //
- std::istringstream istr (str);
- text_iarchive ia (istr);
- xml_schema::istream<text_iarchive> is (ia);
-
- std::auto_ptr<catalog> copy (new catalog (is));
-
- cerr << *copy << endl;
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/tree/binary/boost/library-prologue.hxx b/xsd/examples/cxx/tree/binary/boost/library-prologue.hxx
deleted file mode 100644
index ba0d35f..0000000
--- a/xsd/examples/cxx/tree/binary/boost/library-prologue.hxx
+++ /dev/null
@@ -1,9 +0,0 @@
-// Include declarations for the archive types.
-//
-#include <boost/archive/text_oarchive.hpp>
-#include <boost/archive/text_iarchive.hpp>
-
-// Include insertion/extraction operators for fundamental types.
-//
-#include "boost-archive-insertion.hxx"
-#include "boost-archive-extraction.hxx"
diff --git a/xsd/examples/cxx/tree/binary/boost/library.xml b/xsd/examples/cxx/tree/binary/boost/library.xml
deleted file mode 100644
index ceb4443..0000000
--- a/xsd/examples/cxx/tree/binary/boost/library.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/binary/boost/library.xml
-copyright : not copyrighted - public domain
-
--->
-
-<lib:catalog xmlns:lib="http://www.codesynthesis.com/library"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/library library.xsd">
-
- <book id="MM" available="false">
- <isbn>0679760806</isbn>
- <title>The Master and Margarita</title>
- <genre>fiction</genre>
-
- <author recommends="WP">
- <name>Mikhail Bulgakov</name>
- <born>1891-05-15</born>
- <died>1940-03-10</died>
- </author>
- </book>
-
-
- <book id="WP">
- <isbn>0679600841</isbn>
- <title>War and Peace</title>
- <genre>history</genre>
-
- <author recommends="CP">
- <name>Leo Tolstoy</name>
- <born>1828-09-09</born>
- <died>1910-11-20</died>
- </author>
- </book>
-
-
- <book id="CP" available="false">
- <isbn>0679420290</isbn>
- <title>Crime and Punishment</title>
- <genre>philosophy</genre>
-
- <author>
- <name>Fyodor Dostoevsky</name>
- <born>1821-11-11</born>
- <died>1881-02-09</died>
- </author>
- </book>
-
-</lib:catalog>
diff --git a/xsd/examples/cxx/tree/binary/boost/library.xsd b/xsd/examples/cxx/tree/binary/boost/library.xsd
deleted file mode 100644
index 4bfdd1e..0000000
--- a/xsd/examples/cxx/tree/binary/boost/library.xsd
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/binary/boost/library.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:lib="http://www.codesynthesis.com/library"
- targetNamespace="http://www.codesynthesis.com/library">
-
- <xsd:simpleType name="isbn">
- <xsd:restriction base="xsd:unsignedInt"/>
- </xsd:simpleType>
-
-
- <xsd:complexType name="title">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="lang" type="xsd:language"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:simpleType name="genre">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="romance"/>
- <xsd:enumeration value="fiction"/>
- <xsd:enumeration value="horror"/>
- <xsd:enumeration value="history"/>
- <xsd:enumeration value="philosophy"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="born" type="xsd:date"/>
- <xsd:element name="died" type="xsd:date" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="author">
- <xsd:complexContent>
- <xsd:extension base="lib:person">
- <xsd:attribute name="recommends" type="xsd:IDREF" xse:refType="lib:book"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="book">
- <xsd:sequence>
- <xsd:element name="isbn" type="lib:isbn"/>
- <xsd:element name="title" type="lib:title"/>
- <xsd:element name="genre" type="lib:genre"/>
- <xsd:element name="author" type="lib:author" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="available" type="xsd:boolean" default="true"/>
- <xsd:attribute name="id" type="xsd:ID" use="required"/>
- </xsd:complexType>
-
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="book" type="lib:book" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:element name="catalog" type="lib:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/binary/boost/makefile b/xsd/examples/cxx/tree/binary/boost/makefile
deleted file mode 100644
index 1ed7e41..0000000
--- a/xsd/examples/cxx/tree/binary/boost/makefile
+++ /dev/null
@@ -1,132 +0,0 @@
-# file : examples/cxx/tree/binary/boost/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := library.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-ifeq ($(filter $(MAKECMDGOALS),dist dist-win install),)
-$(call import,\
- $(scf_root)/import/libboost/serialization/stub.make,\
- l: boost_serialization.l,cpp-options: boost_serialization.l.cpp-options)
-endif
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l) $(boost_serialization.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options) $(boost_serialization.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-
-$(gen): xsd_options += --generate-ostream \
---hxx-prologue-file $(src_base)/library-prologue.hxx \
---generate-insertion boost::archive::text_oarchive \
---generate-extraction boost::archive::text_iarchive
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(install_doc_dir)/xsd/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(install_doc_dir)/xsd/$(path)/library.xml)
- $(call install-data,$(src_base)/library-prologue.hxx,$(install_doc_dir)/xsd/$(path)/library-prologue.hxx)
- $(call install-data,$(src_base)/boost-archive-extraction.hxx,$(install_doc_dir)/xsd/$(path)/boost-archive-extraction.hxx)
- $(call install-data,$(src_base)/boost-archive-insertion.hxx,$(install_doc_dir)/xsd/$(path)/boost-archive-insertion.hxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(dist_prefix)/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(dist_prefix)/$(path)/library.xml)
- $(call install-data,$(src_base)/library-prologue.hxx,$(dist_prefix)/$(path)/library-prologue.hxx)
- $(call install-data,$(src_base)/boost-archive-extraction.hxx,$(dist_prefix)/$(path)/boost-archive-extraction.hxx)
- $(call install-data,$(src_base)/boost-archive-insertion.hxx,$(dist_prefix)/$(path)/boost-archive-insertion.hxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): |$(out_root)/.dist-pre
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
- $(call meta-vc8sln,$(src_root)/dist/template-vc8.sln,boost-vc8.sln)
- $(call meta-vc9sln,$(src_root)/dist/template-vc9.sln,boost-vc9.sln)
- $(call meta-vc10sln,$(src_root)/dist/template-vc10.sln,boost-vc10.sln)
- $(call meta-vc11sln,$(src_root)/dist/template-vc11.sln,boost-vc11.sln)
- $(call meta-vc12sln,$(src_root)/dist/template-vc12.sln,boost-vc12.sln)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/vc8sln.make)
-$(call include,$(bld_root)/meta/vc9sln.make)
-$(call include,$(bld_root)/meta/vc10sln.make)
-$(call include,$(bld_root)/meta/vc11sln.make)
-$(call include,$(bld_root)/meta/vc12sln.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/binary/cdr/README b/xsd/examples/cxx/tree/binary/cdr/README
deleted file mode 100644
index 914d27c..0000000
--- a/xsd/examples/cxx/tree/binary/cdr/README
+++ /dev/null
@@ -1,36 +0,0 @@
-This example shows how to save/load the object model to/from CDR
-(Common Data Representation) binary format using ACE CDR streams.
-Support for other data representation streams can be easily added. You
-will need the ACE library[1] installed in order to build and run this
-example.
-
-[1] http://www.cs.wustl.edu/~schmidt/ACE.html
-
-The example consists of the following files:
-
-library.xsd
- XML Schema which describes a library of books.
-
-library.xml
- Sample XML instance document.
-
-library.hxx
-library.cxx
- C++ types that represent the given vocabulary as well as data
- representation stream insertion and extraction operations. These
- are generated by XSD from library.xsd. Note that the
- --generate-insertion and --generate-extraction options are used
- to generate the insertion and extraction operations for ACE CDR
- stream.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input XML file. It then
- saves the object model to ACE_OuputCDR and loads it back from
- ACE_InputCDR. Additionally, it prints the resulting binary
- representation as well as the content of the object model before
- saving it to the CDR stream and after loading it from the CDR stream.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver library.xml
diff --git a/xsd/examples/cxx/tree/binary/cdr/driver.cxx b/xsd/examples/cxx/tree/binary/cdr/driver.cxx
deleted file mode 100644
index ec1ff32..0000000
--- a/xsd/examples/cxx/tree/binary/cdr/driver.cxx
+++ /dev/null
@@ -1,87 +0,0 @@
-// file : examples/cxx/tree/binary/cdr/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <cstring> // std::memcpy
-#include <iostream>
-
-#include <ace/Log_Msg.h> // ACE_HEX_DUMP
-#include <ace/CDR_Stream.h>
-
-// The following two headers define XSD-specific insertion/extraction
-// operations for ACE CDR streams. You can use the content of these
-// headers as a guide to implementing insertion/extraction to/from
-// your own data representation streams:
-//
-// xsd/cxx/tree/ace-cdr-stream-insertion.hxx
-// xsd/cxx/tree/ace-cdr-stream-extraction.hxx
-
-#include "library.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " library.xml" << endl;
- return 1;
- }
-
- try
- {
- using namespace library;
-
- // Read in the file.
- //
- std::auto_ptr<catalog> c (catalog_ (argv[1]));
-
- cerr << *c << endl;
-
- // Save to a CDR stream.
- //
- ACE_OutputCDR ace_ocdr;
- xml_schema::ostream<ACE_OutputCDR> ocdr (ace_ocdr);
-
- ocdr << *c;
-
- // Print the binary representation and at the same time save
- // it into a continuous buffer.
- //
- cerr << endl
- << "binary representation size: " << ace_ocdr.total_length () << endl;
-
- xml_schema::buffer buf (ace_ocdr.total_length ());
- char* data (buf.data ());
-
- for (const ACE_Message_Block* mb = ace_ocdr.begin ();
- mb != 0;
- mb = mb->cont ())
- {
- std::memcpy (data, mb->rd_ptr (), mb->length ());
- data += mb->length ();
-
- ACE_HEX_DUMP ((LM_DEBUG, mb->rd_ptr (), mb->length ()));
- }
-
- // Load from a CDR stream. Note that ACE_InputCDR expects the
- // buffer to be properly aligned. Since our buffer is dynamically
- // allocated, its alignment should be good enough.
- //
- ACE_InputCDR ace_icdr (buf.data (), buf.size ());
- xml_schema::istream<ACE_InputCDR> icdr (ace_icdr);
-
- std::auto_ptr<catalog> copy (new catalog (icdr));
-
- cerr << *copy << endl;
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-
- return 0; // ACE makes our main() an ordinary function.
-}
diff --git a/xsd/examples/cxx/tree/binary/cdr/library.xml b/xsd/examples/cxx/tree/binary/cdr/library.xml
deleted file mode 100644
index 941c03f..0000000
--- a/xsd/examples/cxx/tree/binary/cdr/library.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/binary/cdr/library.xml
-copyright : not copyrighted - public domain
-
--->
-
-<lib:catalog xmlns:lib="http://www.codesynthesis.com/library"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/library library.xsd">
-
- <book id="MM" available="false">
- <isbn>0679760806</isbn>
- <title>The Master and Margarita</title>
- <genre>fiction</genre>
-
- <author recommends="WP">
- <name>Mikhail Bulgakov</name>
- <born>1891-05-15</born>
- <died>1940-03-10</died>
- </author>
- </book>
-
-
- <book id="WP">
- <isbn>0679600841</isbn>
- <title>War and Peace</title>
- <genre>history</genre>
-
- <author recommends="CP">
- <name>Leo Tolstoy</name>
- <born>1828-09-09</born>
- <died>1910-11-20</died>
- </author>
- </book>
-
-
- <book id="CP" available="false">
- <isbn>0679420290</isbn>
- <title>Crime and Punishment</title>
- <genre>philosophy</genre>
-
- <author>
- <name>Fyodor Dostoevsky</name>
- <born>1821-11-11</born>
- <died>1881-02-09</died>
- </author>
- </book>
-
-</lib:catalog>
diff --git a/xsd/examples/cxx/tree/binary/cdr/library.xsd b/xsd/examples/cxx/tree/binary/cdr/library.xsd
deleted file mode 100644
index 5659e1b..0000000
--- a/xsd/examples/cxx/tree/binary/cdr/library.xsd
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/binary/cdr/library.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:lib="http://www.codesynthesis.com/library"
- targetNamespace="http://www.codesynthesis.com/library">
-
- <xsd:simpleType name="isbn">
- <xsd:restriction base="xsd:unsignedInt"/>
- </xsd:simpleType>
-
-
- <xsd:complexType name="title">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="lang" type="xsd:language"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:simpleType name="genre">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="romance"/>
- <xsd:enumeration value="fiction"/>
- <xsd:enumeration value="horror"/>
- <xsd:enumeration value="history"/>
- <xsd:enumeration value="philosophy"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="born" type="xsd:date"/>
- <xsd:element name="died" type="xsd:date" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="author">
- <xsd:complexContent>
- <xsd:extension base="lib:person">
- <xsd:attribute name="recommends" type="xsd:IDREF" xse:refType="lib:book"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="book">
- <xsd:sequence>
- <xsd:element name="isbn" type="lib:isbn"/>
- <xsd:element name="title" type="lib:title"/>
- <xsd:element name="genre" type="lib:genre"/>
- <xsd:element name="author" type="lib:author" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="available" type="xsd:boolean" default="true"/>
- <xsd:attribute name="id" type="xsd:ID" use="required"/>
- </xsd:complexType>
-
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="book" type="lib:book" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:element name="catalog" type="lib:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/binary/cdr/makefile b/xsd/examples/cxx/tree/binary/cdr/makefile
deleted file mode 100644
index b349ba2..0000000
--- a/xsd/examples/cxx/tree/binary/cdr/makefile
+++ /dev/null
@@ -1,120 +0,0 @@
-# file : examples/cxx/tree/binary/cdr/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := library.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-ifeq ($(filter $(MAKECMDGOALS),dist dist-win install),)
-$(call import,\
- $(scf_root)/import/libace/stub.make,\
- l: ace.l,cpp-options: ace.l.cpp-options)
-endif
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l) $(ace.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options) $(ace.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-ostream \
---generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(install_doc_dir)/xsd/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(install_doc_dir)/xsd/$(path)/library.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(dist_prefix)/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(dist_prefix)/$(path)/library.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): |$(out_root)/.dist-pre
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
- $(call meta-vc8sln,$(src_root)/dist/template-vc8.sln,cdr-vc8.sln)
- $(call meta-vc9sln,$(src_root)/dist/template-vc9.sln,cdr-vc9.sln)
- $(call meta-vc10sln,$(src_root)/dist/template-vc10.sln,cdr-vc10.sln)
- $(call meta-vc11sln,$(src_root)/dist/template-vc11.sln,cdr-vc11.sln)
- $(call meta-vc12sln,$(src_root)/dist/template-vc12.sln,cdr-vc12.sln)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/vc8sln.make)
-$(call include,$(bld_root)/meta/vc9sln.make)
-$(call include,$(bld_root)/meta/vc10sln.make)
-$(call include,$(bld_root)/meta/vc11sln.make)
-$(call include,$(bld_root)/meta/vc12sln.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/binary/makefile b/xsd/examples/cxx/tree/binary/makefile
deleted file mode 100644
index eb4b312..0000000
--- a/xsd/examples/cxx/tree/binary/makefile
+++ /dev/null
@@ -1,56 +0,0 @@
-# file : examples/cxx/tree/binary/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-all_examples := boost cdr xdr
-build_examples :=
-
-ifeq ($(xsd_with_boost_serialization),y)
-build_examples += boost
-endif
-
-ifeq ($(xsd_with_ace),y)
-build_examples += cdr
-endif
-
-ifeq ($(xsd_with_xdr),y)
-build_examples += xdr
-endif
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(build_examples)))
-
-# Install & Dist.
-#
-$(install) $(dist) $(dist-win): path := $(subst $(src_root)/,,$(src_base))
-
-$(install): $(addprefix $(out_base)/,$(addsuffix /.install,$(all_examples)))
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
-
-$(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(all_examples)))
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(addprefix $(out_base)/,$(addsuffix /.dist-win,$(all_examples)))
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(build_examples)))
-
-$(call include,$(bld_root)/install.make)
-
-ifneq ($(filter $(MAKECMDGOALS),dist dist-win install),)
-$(foreach e,$(all_examples),$(call import,$(src_base)/$e/makefile))
-else
-$(foreach e,$(build_examples),$(call import,$(src_base)/$e/makefile))
-endif
diff --git a/xsd/examples/cxx/tree/binary/xdr/README b/xsd/examples/cxx/tree/binary/xdr/README
deleted file mode 100644
index 22d5693..0000000
--- a/xsd/examples/cxx/tree/binary/xdr/README
+++ /dev/null
@@ -1,34 +0,0 @@
-This example shows how to save/load the object model to/from XDR
-(eXternal Data Representation) binary format using XDR streams.
-The XDR API is available out of the box on most UNIX and GNU/Linux
-systems as part of Sun RPC. On Windows you may need to install a
-third-party library which provides the XDR API.
-
-The example consists of the following files:
-
-library.xsd
- XML Schema which describes a library of books.
-
-library.xml
- Sample XML instance document.
-
-library.hxx
-library.cxx
- C++ types that represent the given vocabulary as well as data
- representation stream insertion and extraction operations. These
- are generated by XSD from library.xsd. Note that the
- --generate-insertion and --generate-extraction options are used
- to generate the insertion and extraction operations for XDR
- stream.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input XML file. It then
- saves the object model to the XDR representation and loads it back.
- Additionally, it prints the content of the object model before saving
- it to the XDR representation and after loading it from the XDR
- representation.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver library.xml
diff --git a/xsd/examples/cxx/tree/binary/xdr/driver.cxx b/xsd/examples/cxx/tree/binary/xdr/driver.cxx
deleted file mode 100644
index d109322..0000000
--- a/xsd/examples/cxx/tree/binary/xdr/driver.cxx
+++ /dev/null
@@ -1,148 +0,0 @@
-// file : examples/cxx/tree/binary/xdr/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <cstring> // std::memcpy
-#include <cstddef> // std::size_t
-#include <iostream>
-
-#include <rpc/types.h>
-#include <rpc/xdr.h>
-
-#include "library.hxx"
-
-using std::cerr;
-using std::endl;
-using std::size_t;
-
-// XDR output functions. Their implementations are provided after main().
-//
-struct underflow_info
-{
- xml_schema::buffer* buf;
- size_t pos;
-};
-
-extern "C" int
-overflow (void* user_data, char* buf, int n);
-
-extern "C" int
-underflow (void* user_data, char* buf, int n);
-
-// The xdrrec_create function (used below) has slightly different
-// prototypes on different platforms. To make this example portable
-// we will need to cast the actual function to the following common
-// prototype.
-//
-extern "C"
-typedef void (*xdrrec_create_p) (
- XDR*,
- unsigned int write_size,
- unsigned int read_size,
- void* user_data,
- int (*read) (void* user_data, char* buf, int n),
- int (*write) (void* user_data, char* buf, int n));
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " library.xml" << endl;
- return 1;
- }
-
- try
- {
- using namespace library;
-
- xdrrec_create_p xdrrec_create_ =
- reinterpret_cast<xdrrec_create_p> (::xdrrec_create);
-
- // Read in the file.
- //
- std::auto_ptr<catalog> c (catalog_ (argv[1]));
-
- cerr << *c << endl;
-
- // Save to an XDR stream.
- //
- XDR xdr;
- xml_schema::buffer buf;
-
- xdrrec_create_ (&xdr, 0, 0, reinterpret_cast<char*> (&buf), 0, &overflow);
- xdr.x_op = XDR_ENCODE;
-
- xml_schema::ostream<XDR> oxdr (xdr);
-
- oxdr << *c;
-
- xdrrec_endofrecord (&xdr, true); // Flush the data.
- xdr_destroy (&xdr);
-
- // The binary representation is now in the memory buffer 'buf'.
- // To get to the raw data use buf.data() and buf.size().
- //
- cerr << endl
- << "binary representation size: " << buf.size () << endl;
-
- // Load from an XDR stream.
- //
- underflow_info ui;
- ui.buf = &buf;
- ui.pos = 0;
-
- xdrrec_create_ (&xdr, 0, 0, reinterpret_cast<char*> (&ui), &underflow, 0);
- xdr.x_op = XDR_DECODE;
-
- xdrrec_skiprecord (&xdr);
-
- xml_schema::istream<XDR> ixdr (xdr);
-
- std::auto_ptr<catalog> copy (new catalog (ixdr));
-
- xdr_destroy (&xdr);
-
- cerr << *copy << endl;
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
-
-extern "C" int
-overflow (void* p, char* buf, int n_)
-{
- xml_schema::buffer* dst (reinterpret_cast<xml_schema::buffer*> (p));
- size_t n (static_cast<size_t> (n_));
-
- size_t size (dst->size ());
- size_t capacity (dst->capacity ());
-
- // Implement exponential growth.
- //
- if (size + n > capacity && size + n < capacity * 2)
- dst->capacity (capacity * 2);
-
- dst->size (size + n);
- std::memcpy (dst->data () + size, buf, n);
-
- return n;
-}
-
-extern "C" int
-underflow (void* p, char* buf, int n_)
-{
- underflow_info* ui (reinterpret_cast<underflow_info*> (p));
- size_t n (static_cast<size_t> (n_));
-
- size_t size (ui->buf->size () - ui->pos);
- n = size > n ? n : size;
-
- std::memcpy (buf, ui->buf->data () + ui->pos, n);
- ui->pos += n;
-
- return n;
-}
diff --git a/xsd/examples/cxx/tree/binary/xdr/library.xml b/xsd/examples/cxx/tree/binary/xdr/library.xml
deleted file mode 100644
index dab6afb..0000000
--- a/xsd/examples/cxx/tree/binary/xdr/library.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/binary/xdr/library.xml
-copyright : not copyrighted - public domain
-
--->
-
-<lib:catalog xmlns:lib="http://www.codesynthesis.com/library"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/library library.xsd">
-
- <book id="MM" available="false">
- <isbn>0679760806</isbn>
- <title>The Master and Margarita</title>
- <genre>fiction</genre>
-
- <author recommends="WP">
- <name>Mikhail Bulgakov</name>
- <born>1891-05-15</born>
- <died>1940-03-10</died>
- </author>
- </book>
-
-
- <book id="WP">
- <isbn>0679600841</isbn>
- <title>War and Peace</title>
- <genre>history</genre>
-
- <author recommends="CP">
- <name>Leo Tolstoy</name>
- <born>1828-09-09</born>
- <died>1910-11-20</died>
- </author>
- </book>
-
-
- <book id="CP" available="false">
- <isbn>0679420290</isbn>
- <title>Crime and Punishment</title>
- <genre>philosophy</genre>
-
- <author>
- <name>Fyodor Dostoevsky</name>
- <born>1821-11-11</born>
- <died>1881-02-09</died>
- </author>
- </book>
-
-</lib:catalog>
diff --git a/xsd/examples/cxx/tree/binary/xdr/library.xsd b/xsd/examples/cxx/tree/binary/xdr/library.xsd
deleted file mode 100644
index 7513e3b..0000000
--- a/xsd/examples/cxx/tree/binary/xdr/library.xsd
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/binary/xdr/library.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:lib="http://www.codesynthesis.com/library"
- targetNamespace="http://www.codesynthesis.com/library">
-
- <xsd:simpleType name="isbn">
- <xsd:restriction base="xsd:unsignedInt"/>
- </xsd:simpleType>
-
-
- <xsd:complexType name="title">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="lang" type="xsd:language"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:simpleType name="genre">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="romance"/>
- <xsd:enumeration value="fiction"/>
- <xsd:enumeration value="horror"/>
- <xsd:enumeration value="history"/>
- <xsd:enumeration value="philosophy"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="born" type="xsd:date"/>
- <xsd:element name="died" type="xsd:date" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="author">
- <xsd:complexContent>
- <xsd:extension base="lib:person">
- <xsd:attribute name="recommends" type="xsd:IDREF" xse:refType="lib:book"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="book">
- <xsd:sequence>
- <xsd:element name="isbn" type="lib:isbn"/>
- <xsd:element name="title" type="lib:title"/>
- <xsd:element name="genre" type="lib:genre"/>
- <xsd:element name="author" type="lib:author" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="available" type="xsd:boolean" default="true"/>
- <xsd:attribute name="id" type="xsd:ID" use="required"/>
- </xsd:complexType>
-
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="book" type="lib:book" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:element name="catalog" type="lib:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/binary/xdr/makefile b/xsd/examples/cxx/tree/binary/xdr/makefile
deleted file mode 100644
index 7939b29..0000000
--- a/xsd/examples/cxx/tree/binary/xdr/makefile
+++ /dev/null
@@ -1,114 +0,0 @@
-# file : examples/cxx/tree/binary/xdr/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := library.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l) -lnsl
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-ostream \
---generate-insertion XDR --generate-extraction XDR
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(install_doc_dir)/xsd/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(install_doc_dir)/xsd/$(path)/library.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(dist_prefix)/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(dist_prefix)/$(path)/library.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): |$(out_root)/.dist-pre
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
- $(call meta-vc8sln,$(src_root)/dist/template-vc8.sln,xdr-vc8.sln)
- $(call meta-vc9sln,$(src_root)/dist/template-vc9.sln,xdr-vc9.sln)
- $(call meta-vc10sln,$(src_root)/dist/template-vc10.sln,xdr-vc10.sln)
- $(call meta-vc11sln,$(src_root)/dist/template-vc11.sln,xdr-vc11.sln)
- $(call meta-vc12sln,$(src_root)/dist/template-vc12.sln,xdr-vc12.sln)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/vc8sln.make)
-$(call include,$(bld_root)/meta/vc9sln.make)
-$(call include,$(bld_root)/meta/vc10sln.make)
-$(call include,$(bld_root)/meta/vc11sln.make)
-$(call include,$(bld_root)/meta/vc12sln.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/caching/README b/xsd/examples/cxx/tree/caching/README
deleted file mode 100644
index 64e5a1a..0000000
--- a/xsd/examples/cxx/tree/caching/README
+++ /dev/null
@@ -1,29 +0,0 @@
-This example shows how to use the C++/Tree mapping to parse several
-XML documents while reusing the underlying XML parser and caching the
-schemas used for validation.
-
-The example consists of the following files:
-
-library.xsd
- XML Schema which describes a library of books.
-
-library.xml
- Sample XML instance document.
-
-library.hxx
-library.cxx
- C++ types that represent the given vocabulary and a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model. These are generated by XSD from library.xsd.
-
-driver.cxx
- Driver for the example. It first sets up the Xerces-C++ DOM parser
- and caches the library.xsd schema for validation. It then performs
- ten iterations that parse the input file to a DOM document using
- the DOM parser and call one of the parsing functions that constructs
- the object model from this DOM document. On each iteration the driver
- prints a number of books in the object model to STDERR.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver library.xml
diff --git a/xsd/examples/cxx/tree/caching/driver.cxx b/xsd/examples/cxx/tree/caching/driver.cxx
deleted file mode 100644
index 2aa9396..0000000
--- a/xsd/examples/cxx/tree/caching/driver.cxx
+++ /dev/null
@@ -1,165 +0,0 @@
-// file : examples/cxx/tree/caching/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <fstream>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/XMLUniDefs.hpp> // chLatin_*
-#include <xercesc/util/PlatformUtils.hpp>
-#include <xercesc/validators/common/Grammar.hpp> // xercesc::Grammar
-#include <xercesc/framework/Wrapper4InputSource.hpp>
-
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-#include <xsd/cxx/xml/sax/std-input-source.hxx>
-
-#include <xsd/cxx/tree/error-handler.hxx>
-
-#include "library.hxx"
-
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " library.xml" << endl;
- return 1;
- }
-
- int r (0);
-
- // We need to initialize the Xerces-C++ runtime because we
- // are doing the XML-to-DOM parsing ourselves.
- //
- xercesc::XMLPlatformUtils::Initialize ();
-
- try
- {
- using namespace xercesc;
- namespace xml = xsd::cxx::xml;
- namespace tree = xsd::cxx::tree;
-
- const XMLCh ls_id [] = {chLatin_L, chLatin_S, chNull};
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- xml::dom::auto_ptr<DOMLSParser> parser (
- impl->createLSParser (DOMImplementationLS::MODE_SYNCHRONOUS, 0));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- // Discard comment nodes in the document.
- //
- conf->setParameter (XMLUni::fgDOMComments, false);
-
- // Enable datatype normalization.
- //
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
-
- // Do not create EntityReference nodes in the DOM tree. No
- // EntityReference nodes will be created, only the nodes
- // corresponding to their fully expanded substitution text
- // will be created.
- //
- conf->setParameter (XMLUni::fgDOMEntities, false);
-
- // Perform namespace processing.
- //
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
-
- // Do not include ignorable whitespace in the DOM tree.
- //
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
-
- // Enable validation.
- //
- conf->setParameter (XMLUni::fgDOMValidate, true);
- conf->setParameter (XMLUni::fgXercesSchema, true);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
-
- // Set error handler.
- //
- tree::error_handler<char> eh;
- xml::dom::bits::error_handler_proxy<char> ehp (eh);
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- // Initialize the schema cache.
- //
- if (!parser->loadGrammar ("library.xsd", Grammar::SchemaGrammarType, true))
- {
- // In Xerces-C++ grammar loading failure results in just a warning.
- // Make it a fatal error.
- //
- eh.handle ("library.xsd", 0, 0,
- tree::error_handler<char>::severity::fatal,
- "unable to load schema");
- }
-
- eh.throw_if_failed<xml_schema::parsing> ();
-
- // Use the loaded grammar during parsing.
- //
- conf->setParameter (XMLUni::fgXercesUseCachedGrammarInParse, true);
-
- // Disable loading schemas via other means (e.g., schemaLocation).
- //
- conf->setParameter (XMLUni::fgXercesLoadSchema, false);
-
- // We will release the DOM document ourselves.
- //
- conf->setParameter (XMLUni::fgXercesUserAdoptsDOMDocument, true);
-
- // Parse XML documents.
- //
- for (unsigned long i (0); i < 10; ++i)
- {
- ifstream ifs;
- ifs.exceptions (ifstream::badbit | ifstream::failbit);
- ifs.open (argv[1]);
-
- // Wrap the standard input stream.
- //
- xml::sax::std_input_source isrc (ifs, argv[1]);
- Wrapper4InputSource wrap (&isrc, false);
-
- // Parse XML to DOM.
- //
- xml_schema::dom::auto_ptr<DOMDocument> doc (parser->parse (&wrap));
-
- eh.throw_if_failed<xml_schema::parsing> ();
-
- // Parse DOM to the object model.
- //
- auto_ptr<library::catalog> c (library::catalog_ (*doc));
-
- cerr << "catalog with " << c->book ().size () << " books" << endl;
- }
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- r = 1;
- }
-
- xercesc::XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/caching/library.xml b/xsd/examples/cxx/tree/caching/library.xml
deleted file mode 100644
index 6d4d6f1..0000000
--- a/xsd/examples/cxx/tree/caching/library.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/caching/library.xml
-copyright : not copyrighted - public domain
-
--->
-
-<lib:catalog xmlns:lib="http://www.codesynthesis.com/library"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/library library.xsd">
-
- <book id="MM" available="false">
- <isbn>0679760806</isbn>
- <title>The Master and Margarita</title>
- <genre>fiction</genre>
-
- <author recommends="WP">
- <name>Mikhail Bulgakov</name>
- <born>1891-05-15</born>
- <died>1940-03-10</died>
- </author>
- </book>
-
-
- <book id="WP">
- <isbn>0679600841</isbn>
- <title>War and Peace</title>
- <genre>history</genre>
-
- <author recommends="CP">
- <name>Leo Tolstoy</name>
- <born>1828-09-09</born>
- <died>1910-11-20</died>
- </author>
- </book>
-
-
- <book id="CP" available="false">
- <isbn>0679420290</isbn>
- <title>Crime and Punishment</title>
- <genre>philosophy</genre>
-
- <author>
- <name>Fyodor Dostoevsky</name>
- <born>1821-11-11</born>
- <died>1881-02-09</died>
- </author>
- </book>
-
-</lib:catalog>
diff --git a/xsd/examples/cxx/tree/caching/library.xsd b/xsd/examples/cxx/tree/caching/library.xsd
deleted file mode 100644
index a46c558..0000000
--- a/xsd/examples/cxx/tree/caching/library.xsd
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/caching/library.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:lib="http://www.codesynthesis.com/library"
- targetNamespace="http://www.codesynthesis.com/library">
-
- <xsd:simpleType name="isbn">
- <xsd:restriction base="xsd:unsignedInt"/>
- </xsd:simpleType>
-
- <xsd:complexType name="title">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="lang" type="xsd:language"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:simpleType name="genre">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="romance"/>
- <xsd:enumeration value="fiction"/>
- <xsd:enumeration value="horror"/>
- <xsd:enumeration value="history"/>
- <xsd:enumeration value="philosophy"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="born" type="xsd:date"/>
- <xsd:element name="died" type="xsd:date" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="author">
- <xsd:complexContent>
- <xsd:extension base="lib:person">
- <xsd:attribute name="recommends" type="xsd:IDREF" xse:refType="lib:book"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="book">
- <xsd:sequence>
- <xsd:element name="isbn" type="lib:isbn"/>
- <xsd:element name="title" type="lib:title"/>
- <xsd:element name="genre" type="lib:genre"/>
- <xsd:element name="author" type="lib:author" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="available" type="xsd:boolean" default="true"/>
- <xsd:attribute name="id" type="xsd:ID" use="required"/>
- </xsd:complexType>
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="book" type="lib:book" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="catalog" type="lib:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/caching/makefile b/xsd/examples/cxx/tree/caching/makefile
deleted file mode 100644
index cb9b191..0000000
--- a/xsd/examples/cxx/tree/caching/makefile
+++ /dev/null
@@ -1,101 +0,0 @@
-# file : examples/cxx/tree/caching/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := library.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(install_doc_dir)/xsd/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(install_doc_dir)/xsd/$(path)/library.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(dist_prefix)/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(dist_prefix)/$(path)/library.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/compression/README b/xsd/examples/cxx/tree/compression/README
deleted file mode 100644
index f163970..0000000
--- a/xsd/examples/cxx/tree/compression/README
+++ /dev/null
@@ -1,48 +0,0 @@
-This example shows how to compress an XML document during serialization
-and decompress it during parsing. The example uses the compression
-functionality provided by the zlib library[1] which needs to be installed
-in order to build and run this example. It should also be fairly straight-
-forward to modify the code in this example to use other compression
-libraries.
-
-[1] http://www.zlib.net
-
-The example consists of the following files:
-
-library.xsd
- XML Schema which describes a library of books.
-
-library.xml.gz
- Sample XML instance document compressed using the gzip format.
-
-compressed-format-target.hxx
-compressed-format-target.cxx
- Implementation of the Xerces-C++ XMLFormatTarget interface with the on-
- the-fly compression support. You can use it in your application to add
- XML compression.
-
-compressed-input-source.hxx
-compressed-input-source.cxx
- Implementation of the Xerces-C++ InputSource interface with the on-the-
- fly decompression support. You can use it in your application to add
- XML decompression.
-
-library.hxx
-library.cxx
- C++ types that represent the given vocabulary and a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model. These are generated by XSD from library.xsd.
-
-driver.cxx
- Driver for the example. It first creates the compressed_input_source
- object and passes it to one of the parsing functions that constructs
- the object model from the compressed input file. It then prints the
- content of the object model to STDERR. Finally, the driver creates the
- compressed_format_target object and passes it to one of the serialization
- functions which converts the object model back to the compressed XML.
-
-To run the example on the sample XML document simply execute:
-
-$ ./driver library.xml.gz
-
-The serialization output is written to the out.xml.gz file.
diff --git a/xsd/examples/cxx/tree/compression/compressed-format-target.cxx b/xsd/examples/cxx/tree/compression/compressed-format-target.cxx
deleted file mode 100644
index 1f183e2..0000000
--- a/xsd/examples/cxx/tree/compression/compressed-format-target.cxx
+++ /dev/null
@@ -1,152 +0,0 @@
-// file : examples/cxx/tree/compression/compressed-format-target.cxx
-// copyright : not copyrighted - public domain
-
-#include <ostream>
-#include <cstring> // std::memcpy
-
-#include "compressed-format-target.hxx"
-
-using namespace std;
-
-//
-// compression_failure
-//
-
-const char* compression_failure::
-what () const throw ()
-{
- return "compression failure";
-}
-
-//
-// compressed_format_target
-//
-
-compressed_format_target::
-compressed_format_target (ostream& os, compression_type t)
- : os_ (os), closed_ (false), n_ (0)
- {
- zs_.zalloc = Z_NULL;
- zs_.zfree = Z_NULL;
- zs_.opaque = Z_NULL;
-
- int window = 0;
-
- switch (t)
- {
- case raw:
- {
- window = -15;
- break;
- }
- case zlib:
- {
- window = 15;
- break;
- }
- case gzip:
- {
- window = 16 + 15;
- break;
- }
- }
-
- int r (deflateInit2 (&zs_,
- Z_DEFAULT_COMPRESSION,
- Z_DEFLATED,
- window,
- 8,
- Z_DEFAULT_STRATEGY));
- if (r != Z_OK)
- throw compression_failure (r);
- }
-
-compressed_format_target::
-~compressed_format_target ()
-{
- try
- {
- // Close the free the compression stream.
- //
- if (!closed_)
- close ();
- }
- catch (...)
- {
- }
-
- deflateEnd (&zs_);
-}
-
-void compressed_format_target::
-writeChars (const XMLByte* const buf,
- const XMLSize_t size,
- xercesc::XMLFormatter* const)
-{
- // Flush the buffer if the block is too large or if we don't have
- // any space left.
- //
- if ((size >= buf_size_ / 8 || n_ + size > buf_size_) && n_ != 0)
- {
- write (in_, n_);
- n_ = 0;
- }
-
- if (size < buf_size_ / 8)
- {
- memcpy (in_ + n_, reinterpret_cast<const char*> (buf), size);
- n_ += size;
- }
- else
- write (reinterpret_cast<const char*> (buf), size);
-}
-
-
-void compressed_format_target::
-flush ()
-{
- if (n_ != 0)
- {
- write (in_, n_);
- n_ = 0;
- }
-
- if (!os_.fail ())
- os_.flush ();
-}
-
-void compressed_format_target::
-close ()
-{
- write (in_, n_, true);
- n_ = 0;
-
- if (!os_.fail ())
- os_.flush ();
-
- closed_ = true;
-}
-
-void compressed_format_target::
-write (const char* buf, size_t size, bool flush)
-{
- zs_.next_in = reinterpret_cast<Bytef*> (const_cast<char*> (buf));
- zs_.avail_in = static_cast<uInt> (size);
-
- do
- {
- zs_.next_out = reinterpret_cast<Bytef*> (out_);
- zs_.avail_out = buf_size_;
-
- int r (deflate (&zs_, flush ? Z_FINISH : Z_NO_FLUSH));
-
- if (r != Z_OK && r != Z_BUF_ERROR && r != Z_STREAM_END)
- throw compression_failure (r);
-
- size_t n (buf_size_ - zs_.avail_out);
-
- if (!os_.fail () && n > 0)
- os_.write (out_, static_cast<streamsize> (n));
-
- } while (zs_.avail_out == 0);
-}
diff --git a/xsd/examples/cxx/tree/compression/compressed-format-target.hxx b/xsd/examples/cxx/tree/compression/compressed-format-target.hxx
deleted file mode 100644
index 835b676..0000000
--- a/xsd/examples/cxx/tree/compression/compressed-format-target.hxx
+++ /dev/null
@@ -1,91 +0,0 @@
-// file : examples/cxx/tree/compression/compressed-format-target.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef COMPRESSED_FORMAT_TARGET_HXX
-#define COMPRESSED_FORMAT_TARGET_HXX
-
-#include <zlib.h>
-
-#include <iosfwd>
-#include <cstddef> // std::size_t
-#include <exception>
-
-#include <xercesc/framework/XMLFormatter.hpp>
-
-struct compression_failure: std::exception
-{
- explicit
- compression_failure (int code)
- : code_ (code)
- {
- }
-
- int
- code () const
- {
- return code_;
- }
-
- const char*
- message () const
- {
- return zError (code_);
- }
-
- virtual const char*
- what () const throw ();
-
-private:
- int code_;
-};
-
-// Xerces-C++ XMLFormatTarget interface implementation with on-the-fly,
-// zlib-based compression.
-//
-class compressed_format_target: public xercesc::XMLFormatTarget
-{
-public:
- enum compression_type
- {
- raw,
- zlib,
- gzip
- };
-
- compressed_format_target (std::ostream&, compression_type);
-
- virtual
- ~compressed_format_target ();
-
- virtual void
- writeChars (const XMLByte* const buf,
- const XMLSize_t size,
- xercesc::XMLFormatter* const);
-
- virtual void
- flush ();
-
- // Close the compressed stream by writing out the zlib or gzip trailer.
- // This function is automatically called from the destructor but you
- // may want to call it explicitly to be able to catch any exceptions
- // that it might throw.
- //
- void
- close ();
-
-private:
- void
- write (const char* buf, std::size_t size, bool flush = false);
-
-private:
- std::ostream& os_;
- z_stream zs_;
- bool closed_;
-
- static const std::size_t buf_size_ = 65536;
- char in_[buf_size_];
- char out_[buf_size_];
- size_t n_;
-};
-
-#endif // COMPRESSED_FORMAT_TARGET_HXX
diff --git a/xsd/examples/cxx/tree/compression/compressed-input-source.cxx b/xsd/examples/cxx/tree/compression/compressed-input-source.cxx
deleted file mode 100644
index e25b169..0000000
--- a/xsd/examples/cxx/tree/compression/compressed-input-source.cxx
+++ /dev/null
@@ -1,195 +0,0 @@
-// file : examples/cxx/tree/compression/compressed-input-source.cxx
-// copyright : not copyrighted - public domain
-
-#include <istream>
-
-#include <xsd/cxx/xml/string.hxx>
-
-#include "compressed-input-source.hxx"
-
-using namespace std;
-using namespace xercesc;
-namespace xml = xsd::cxx::xml;
-
-//
-// decompression_failure
-//
-
-const char* decompression_failure::
-what () const throw ()
-{
- return "decompression failure";
-}
-
-//
-// compressed_input_source
-//
-
-compressed_input_source::
-compressed_input_source (istream& is, compression_type t)
- : is_ (&is), type_ (t)
-{
-}
-
-compressed_input_source::
-compressed_input_source (istream& is,
- compression_type t,
- const string& sysid)
- : InputSource (xml::string (sysid).c_str ()), is_ (&is), type_ (t)
-{
-}
-
-compressed_input_source::
-compressed_input_source (istream& is,
- compression_type t,
- const string& sysid,
- const string& pubid)
- : xercesc::InputSource (xml::string (sysid).c_str (),
- xml::string (pubid).c_str ()),
- is_ (&is),
- type_ (t)
-{
-}
-
-BinInputStream* compressed_input_source::
-makeStream () const
-{
- if (is_ == 0)
- throw copy ();
-
- istream& is (*is_);
- is_ = 0;
- return new compressed_input_stream (
- is, static_cast<compressed_input_stream::compression_type> (type_));
-}
-
-//
-// compressed_input_stream
-//
-
-compressed_input_stream::
-compressed_input_stream (istream& is, compression_type t)
- : is_ (is), end_ (false), pos_ (0)
-{
- zs_.zalloc = Z_NULL;
- zs_.zfree = Z_NULL;
- zs_.opaque = Z_NULL;
- zs_.next_in = Z_NULL;
- zs_.avail_in = 0;
-
- int window = 0;
-
- switch (t)
- {
- case raw:
- {
- window = -15;
- break;
- }
- case zlib:
- {
- window = 15;
- break;
- }
- case gzip:
- {
- window = 16 + 15;
- break;
- }
- }
-
- int r (inflateInit2 (&zs_, window));
-
- if (r != Z_OK)
- throw decompression_failure (r);
-}
-
-compressed_input_stream::
-~compressed_input_stream ()
-{
- inflateEnd (&zs_);
-}
-
-XMLFilePos compressed_input_stream::
-curPos () const
-{
- return static_cast<XMLFilePos> (pos_);
-}
-
-XMLSize_t compressed_input_stream::
-readBytes (XMLByte* const buf, const XMLSize_t size)
-{
- if (end_)
- return 0;
-
- // Keep calling inflate() until we fill up the buffer or reach the
- // end of stream. If we run out of input data, call the underlying
- // stream for more.
- //
- zs_.next_out = reinterpret_cast<Bytef*> (buf);
- zs_.avail_out = static_cast<uInt> (size);
-
- int r;
-
- do
- {
- if (zs_.avail_in == 0)
- {
- zs_.avail_in = static_cast<uInt> (read ());
- zs_.next_in = reinterpret_cast<Bytef*> (const_cast<char*> (in_));
-
- if (zs_.avail_in == 0)
- throw decompression_failure (Z_DATA_ERROR);
- }
-
- r = inflate (&zs_, Z_NO_FLUSH);
-
- if (r != Z_OK && r != Z_STREAM_END)
- throw decompression_failure (r);
-
- } while (r != Z_STREAM_END && zs_.avail_out != 0);
-
- if (r == Z_STREAM_END)
- end_ = true;
-
- size_t n (size - zs_.avail_out);
- pos_ += n;
-
- return static_cast<XMLSize_t> (n);
-}
-
-const XMLCh* compressed_input_stream::
-getContentType () const
-{
- return 0;
-}
-
-size_t compressed_input_stream::
-read ()
-{
- // Some implementations don't clear gcount if you call read() on a
- // stream that is in the eof state.
- //
- if (is_.eof ())
- return 0;
-
- // Unset the exception failbit while we are working with the stream.
- //
- ios_base::iostate old (is_.exceptions ());
- is_.exceptions (old & ~ios_base::failbit);
-
- is_.read (in_, static_cast<streamsize> (buf_size_));
-
- // Clear the fail bit if it was caused by eof and restore the original
- // exception state. If there are any pending errors then the exception
- // will be thrown now.
- //
- if (is_.fail () && is_.eof ())
- is_.clear (is_.rdstate () & ~ios_base::failbit);
-
- is_.exceptions (old);
-
- // Make sure that if we failed, we won't be called again.
- //
- return !is_.fail () ? static_cast<size_t> (is_.gcount ()) : 0;
-}
diff --git a/xsd/examples/cxx/tree/compression/compressed-input-source.hxx b/xsd/examples/cxx/tree/compression/compressed-input-source.hxx
deleted file mode 100644
index 8065445..0000000
--- a/xsd/examples/cxx/tree/compression/compressed-input-source.hxx
+++ /dev/null
@@ -1,121 +0,0 @@
-// file : examples/cxx/tree/compression/compressed-input-source.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef COMPRESSED_INPUT_SOURCE_HXX
-#define COMPRESSED_INPUT_SOURCE_HXX
-
-#include <zlib.h>
-
-#include <iosfwd>
-#include <string>
-#include <cstddef> // std::size_t
-#include <exception>
-
-#include <xercesc/sax/InputSource.hpp>
-#include <xercesc/util/BinInputStream.hpp>
-
-struct decompression_failure: std::exception
-{
- explicit
- decompression_failure (int code)
- : code_ (code)
- {
- }
-
- int
- code () const
- {
- return code_;
- }
-
- const char*
- message () const
- {
- return zError (code_);
- }
-
- virtual const char*
- what () const throw ();
-
-private:
- int code_;
-};
-
-// Xerces-C++ InputSource interface implementation with on-the-fly, zlib-
-// based decompression.
-//
-class compressed_input_source: public xercesc::InputSource
-{
-public:
- enum compression_type
- {
- raw,
- zlib,
- gzip
- };
-
- compressed_input_source (std::istream&, compression_type);
-
- compressed_input_source (std::istream&,
- compression_type,
- const std::string& system_id);
-
- compressed_input_source (std::istream&,
- compression_type,
- const std::string& system_id,
- const std::string& public_id);
-
- struct copy {};
-
- // Throws the copy exception if this function is called more than once.
- //
- virtual xercesc::BinInputStream*
- makeStream () const;
-
-private:
- mutable std::istream* is_;
- compression_type type_;
-};
-
-// Xerces-C++ BinInputStream interface implementation with on-the-fly, zlib-
-// based decompression.
-//
-class compressed_input_stream: public xercesc::BinInputStream
-{
-public:
- enum compression_type
- {
- raw,
- zlib,
- gzip
- };
-
- compressed_input_stream (std::istream&, compression_type);
-
- virtual
- ~compressed_input_stream ();
-
- virtual XMLFilePos
- curPos () const;
-
- virtual XMLSize_t
- readBytes (XMLByte* const buf, const XMLSize_t size);
-
- virtual const XMLCh*
- getContentType () const;
-
-private:
- std::size_t
- read ();
-
-private:
- std::istream& is_;
- z_stream zs_;
- bool end_;
-
- static const std::size_t buf_size_ = 65536;
- char in_[buf_size_];
- std::size_t pos_; // Current decompressed stream position.
-};
-
-#endif // COMPRESSED_INPUT_SOURCE_HXX
diff --git a/xsd/examples/cxx/tree/compression/driver.cxx b/xsd/examples/cxx/tree/compression/driver.cxx
deleted file mode 100644
index 34238b1..0000000
--- a/xsd/examples/cxx/tree/compression/driver.cxx
+++ /dev/null
@@ -1,124 +0,0 @@
-// file : examples/cxx/tree/compression/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <fstream>
-#include <iostream>
-
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "library.hxx"
-
-#include "compressed-input-source.hxx"
-#include "compressed-format-target.hxx"
-
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " library.xml.gz" << endl;
- return 1;
- }
-
- int r (0);
-
- // We need to initialize the Xerces-C++ runtime because we are
- // using the Xerces-C++ input/output interfaces.
- //
- xercesc::XMLPlatformUtils::Initialize ();
-
- try
- {
- using namespace library;
-
- // Read in the XML file and obtain its object model.
- //
- ifstream ifs;
- ifs.exceptions (ifstream::badbit | ifstream::failbit);
- ifs.open (argv[1], ifstream::in | ifstream::binary);
-
- compressed_input_source cis (ifs, compressed_input_source::gzip, argv[1]);
-
- std::auto_ptr<catalog> c (
- catalog_ (cis, xml_schema::flags::dont_initialize));
-
-
- // Let's print what we've got.
- //
- for (catalog::book_const_iterator bi (c->book ().begin ());
- bi != c->book ().end ();
- ++bi)
- {
- cerr << endl
- << "ID : " << bi->id () << endl
- << "ISBN : " << bi->isbn () << endl
- << "Title : " << bi->title () << endl
- << "Genre : " << bi->genre () << endl;
-
- for (book::author_const_iterator ai (bi->author ().begin ());
- ai != bi->author ().end ();
- ++ai)
- {
- cerr << "Author : " << ai->name () << endl;
- cerr << " Born : " << ai->born () << endl;
-
- if (ai->died ())
- cerr << " Died : " << *ai->died () << endl;
-
- if (ai->recommends ())
- cerr << " Recommends : " << (*ai->recommends ())->title () << endl;
- }
-
- cerr << "Available : " << std::boolalpha << bi->available () << endl;
- }
-
- // Prepare namespace mapping and schema location information.
- //
- xml_schema::namespace_infomap map;
-
- map["lib"].name = "http://www.codesynthesis.com/library";
- map["lib"].schema = "library.xsd";
-
- ofstream ofs;
- ofs.exceptions (ofstream::badbit | ofstream::failbit | ofstream::eofbit);
- ofs.open ("out.xml.gz", ofstream::out | ofstream::binary);
-
- compressed_format_target cft (ofs, compressed_format_target::gzip);
-
- // Write it out.
- //
- catalog_ (cft, *c, map, "UTF-8", xml_schema::flags::dont_initialize);
-
- // Write out the compression stream trailer. If we don't do this
- // explicitly, it will be done automatically in the cft's destructor
- // but then any exceptions that might be throws will be ignored.
- //
- cft.close();
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
- catch (const compression_failure& e)
- {
- cerr << "compression failure: " << e.message () << endl;
- r = 1;
- }
- catch (const decompression_failure& e)
- {
- cerr << "decompression failure: " << e.message () << endl;
- r = 1;
- }
- catch (const ios_base::failure&)
- {
- cerr << "file open or read/write failure" << endl;
- r = 1;
- }
-
- xercesc::XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/compression/library.xml.gz b/xsd/examples/cxx/tree/compression/library.xml.gz
deleted file mode 100644
index dd71159..0000000
--- a/xsd/examples/cxx/tree/compression/library.xml.gz
+++ /dev/null
Binary files differ
diff --git a/xsd/examples/cxx/tree/compression/library.xsd b/xsd/examples/cxx/tree/compression/library.xsd
deleted file mode 100644
index 728acc7..0000000
--- a/xsd/examples/cxx/tree/compression/library.xsd
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/compression/library.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:lib="http://www.codesynthesis.com/library"
- targetNamespace="http://www.codesynthesis.com/library">
-
- <xsd:simpleType name="isbn">
- <xsd:restriction base="xsd:unsignedInt"/>
- </xsd:simpleType>
-
- <xsd:complexType name="title">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="lang" type="xsd:language"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:simpleType name="genre">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="romance"/>
- <xsd:enumeration value="fiction"/>
- <xsd:enumeration value="horror"/>
- <xsd:enumeration value="history"/>
- <xsd:enumeration value="philosophy"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="born" type="xsd:date"/>
- <xsd:element name="died" type="xsd:date" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="author">
- <xsd:complexContent>
- <xsd:extension base="lib:person">
- <xsd:attribute name="recommends" type="xsd:IDREF" xse:refType="lib:book"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="book">
- <xsd:sequence>
- <xsd:element name="isbn" type="lib:isbn"/>
- <xsd:element name="title" type="lib:title"/>
- <xsd:element name="genre" type="lib:genre"/>
- <xsd:element name="author" type="lib:author" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="available" type="xsd:boolean" default="true"/>
- <xsd:attribute name="id" type="xsd:ID" use="required"/>
- </xsd:complexType>
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="book" type="lib:book" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="catalog" type="lib:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/compression/makefile b/xsd/examples/cxx/tree/compression/makefile
deleted file mode 100644
index 43913f7..0000000
--- a/xsd/examples/cxx/tree/compression/makefile
+++ /dev/null
@@ -1,128 +0,0 @@
-# file : examples/cxx/tree/compression/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := library.xsd
-cxx := driver.cxx compressed-input-source.cxx compressed-format-target.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-ifeq ($(filter $(MAKECMDGOALS),dist dist-win install),)
-$(call import,\
- $(scf_root)/import/libz/stub.make,\
- l: z.l,cpp-options: z.l.cpp-options)
-endif
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l) $(z.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options) $(z.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-ostream --generate-serialization
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/compressed-format-target.hxx,$(install_doc_dir)/xsd/$(path)/compressed-format-target.hxx)
- $(call install-data,$(src_base)/compressed-format-target.cxx,$(install_doc_dir)/xsd/$(path)/compressed-format-target.cxx)
- $(call install-data,$(src_base)/compressed-input-source.hxx,$(install_doc_dir)/xsd/$(path)/compressed-input-source.hxx)
- $(call install-data,$(src_base)/compressed-input-source.cxx,$(install_doc_dir)/xsd/$(path)/compressed-input-source.cxx)
- $(call install-data,$(src_base)/library.xsd,$(install_doc_dir)/xsd/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml.gz,$(install_doc_dir)/xsd/$(path)/library.xml.gz)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/compressed-format-target.hxx,$(dist_prefix)/$(path)/compressed-format-target.hxx)
- $(call install-data,$(src_base)/compressed-format-target.cxx,$(dist_prefix)/$(path)/compressed-format-target.cxx)
- $(call install-data,$(src_base)/compressed-input-source.hxx,$(dist_prefix)/$(path)/compressed-input-source.hxx)
- $(call install-data,$(src_base)/compressed-input-source.cxx,$(dist_prefix)/$(path)/compressed-input-source.cxx)
- $(call install-data,$(src_base)/library.xsd,$(dist_prefix)/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml.gz,$(dist_prefix)/$(path)/library.xml.gz)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): |$(out_root)/.dist-pre
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
- $(call meta-vc8sln,$(src_root)/dist/template-vc8.sln,compression-vc8.sln)
- $(call meta-vc9sln,$(src_root)/dist/template-vc9.sln,compression-vc9.sln)
- $(call meta-vc10sln,$(src_root)/dist/template-vc10.sln,compression-vc10.sln)
- $(call meta-vc11sln,$(src_root)/dist/template-vc11.sln,compression-vc11.sln)
- $(call meta-vc12sln,$(src_root)/dist/template-vc12.sln,compression-vc12.sln)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
- $(call message,rm $$1,rm -f $$1,$(out_base)/out.xml.gz)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver out.xml.gz $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/vc8sln.make)
-$(call include,$(bld_root)/meta/vc9sln.make)
-$(call include,$(bld_root)/meta/vc10sln.make)
-$(call include,$(bld_root)/meta/vc11sln.make)
-$(call include,$(bld_root)/meta/vc12sln.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/custom/README b/xsd/examples/cxx/tree/custom/README
deleted file mode 100644
index b2a65b5..0000000
--- a/xsd/examples/cxx/tree/custom/README
+++ /dev/null
@@ -1,40 +0,0 @@
-This directory contains a number of examples that show how to customize the
-C++/Tree mapping. The following list gives an overview of each example:
-
-calendar
- Shows how to customize XML Schema built-in types by mapping xsd:date
- built-in type to the date class from the Boost date_time library.
-
-comments
- This example shows how to customize the anyType XML Schema built-in
- type to implement preservation of comments stored in XML documents.
- Because anyType is a base type for every generated type, you can use
- this technique to implement custom functionality that spans the
- entire type system.
-
-contacts
- Shows how to map a user-defined XML Schema type to a custom C++ class.
- This example presents the simple case where the customized type is not
- used as a base in the same schema.
-
-double
- Shows how to customize parsing and serialization code for the xsd:double
- XML Schema built-in type. It can be used as a guide on how to customize
- built-in XML Schema types that are mapped to fundamental C++ types.
-
-mixed
- Shows how to use type customization to parse and serialize mixed content.
-
-taxonomy
- Shows how to map user-defined XML Schema types to custom C++ classes.
- This example presents the complex case where the customized types are
- inherited from in the same schema.
-
-wildcard
- Shows how to use type customization to parse and serialize a specific
- attribute that is matched by a wildcard (anyAttribute).
-
-For more information on the C++/Tree mapping customization see the
-C++/Tree Mapping Customization Guide[1].
-
-[1] http://wiki.codesynthesis.com/Tree/Customization_guide
diff --git a/xsd/examples/cxx/tree/custom/calendar/README b/xsd/examples/cxx/tree/custom/calendar/README
deleted file mode 100644
index f7f6989..0000000
--- a/xsd/examples/cxx/tree/custom/calendar/README
+++ /dev/null
@@ -1,47 +0,0 @@
-This example shows how to customize the XML Schema built-in types by mapping
-xsd:date built-in type to the date class from the Boost date_time library.
-You will need the Boost date_time library[1] installed in order to build
-and run this example. For more information on the C++/Tree mapping
-customization see the C++/Tree Mapping Customization Guide[2].
-
-[1] http://www.boost.org
-[2] http://wiki.codesynthesis.com/Tree/Customization_guide
-
-The example consists of the following files:
-
-calendar.xsd
- XML Schema definition for a simple calendar format.
-
-calendar.xml
- Sample XML instance document.
-
-xml-schema.hxx
- C++ types for XML Schema built-in types. This header file is generated
- by XSD using the --generate-xml-schema option. The --custom-type option
- is also used to customize the xsd:date type.
-
-calendar.hxx
-calendar.ixx
-calendar.cxx
- C++ types that represent the given vocabulary and a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model. These are generated by XSD from calendar.xsd with the
- --extern-xml-schema option in order to include xml-schema.hxx.
-
-xml-schema-custom.hxx
- Header file which defines our own xml_schema::date class. It is
- included at the end of xml-schema.hxx using the --hxx-epilogue
- option.
-
-xml-schema-custom.cxx
- Source file which contains the implementation of our xml_schema:date
- class.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input file. It then prints
- the calendar events to STDERR.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver calendar.xml
diff --git a/xsd/examples/cxx/tree/custom/calendar/calendar.xml b/xsd/examples/cxx/tree/custom/calendar/calendar.xml
deleted file mode 100644
index 5cc898a..0000000
--- a/xsd/examples/cxx/tree/custom/calendar/calendar.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/calendar/calendar.xml
-copyright : not copyrighted - public domain
-
--->
-
-<cal:events xmlns:cal="http://www.codesynthesis.com/calendar"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/calendar calendar.xsd">
-
- <event title="Bike ride" date="2006-09-04">
- Don't forget to change the tire.
- </event>
-
- <event title="Mountain hike" date="2006-09-05">
- Can be cancelled if it is too cold.
- </event>
-
-</cal:events>
diff --git a/xsd/examples/cxx/tree/custom/calendar/calendar.xsd b/xsd/examples/cxx/tree/custom/calendar/calendar.xsd
deleted file mode 100644
index 04b3af1..0000000
--- a/xsd/examples/cxx/tree/custom/calendar/calendar.xsd
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/calendar/calendar.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:cal="http://www.codesynthesis.com/calendar"
- targetNamespace="http://www.codesynthesis.com/calendar">
-
- <xsd:complexType name="event">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="title" type="xsd:string" use="required"/>
- <xsd:attribute name="date" type="xsd:date" use="required"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:complexType name="events">
- <xsd:sequence>
- <xsd:element name="event" type="cal:event" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="events" type="cal:events"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/custom/calendar/driver.cxx b/xsd/examples/cxx/tree/custom/calendar/driver.cxx
deleted file mode 100644
index a5b223e..0000000
--- a/xsd/examples/cxx/tree/custom/calendar/driver.cxx
+++ /dev/null
@@ -1,39 +0,0 @@
-// file : examples/cxx/tree/custom/calendar/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <iostream>
-
-#include "calendar.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " calendar.xml" << endl;
- return 1;
- }
-
- try
- {
- using namespace calendar;
-
- std::auto_ptr<events> e (events_ (argv[1]));
-
- for (events::event_const_iterator i (e->event ().begin ());
- i != e->event ().end (); ++i)
- {
- cerr << i->date () << " " << i->title () << endl
- << *i << endl;
- }
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/calendar/makefile b/xsd/examples/cxx/tree/custom/calendar/makefile
deleted file mode 100644
index 6998ffd..0000000
--- a/xsd/examples/cxx/tree/custom/calendar/makefile
+++ /dev/null
@@ -1,137 +0,0 @@
-# file : examples/cxx/tree/custom/calendar/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := calendar.xsd
-cxx := driver.cxx xml-schema-custom.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-ifeq ($(filter $(MAKECMDGOALS),dist dist-win install),)
-$(call import,\
- $(scf_root)/import/libboost/date-time/stub.make,\
- l: boost_date_time.l,cpp-options: boost_date_time.l.cpp-options)
-endif
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l) $(boost_date_time.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options) $(boost_date_time.l.cpp-options)
-
-# Header file for XML Schema namespace.
-#
-$(out_base)/xml-schema.hxx: $(out_root)/xsd/xsd
- $(call message,xsd $(src_base)/xml-schema.xsd,\
-$(out_root)/xsd/xsd cxx-tree --output-dir $(out_base) --generate-xml-schema \
---custom-type date \
---hxx-epilogue '#include "xml-schema-custom.hxx"' xml-schema.xsd)
-
-#
-#
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += \
---generate-inline \
---extern-xml-schema xml-schema.xsd
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/calendar.xsd,$(install_doc_dir)/xsd/$(path)/calendar.xsd)
- $(call install-data,$(src_base)/calendar.xml,$(install_doc_dir)/xsd/$(path)/calendar.xml)
- $(call install-data,$(src_base)/xml-schema-custom.hxx,$(install_doc_dir)/xsd/$(path)/xml-schema-custom.hxx)
- $(call install-data,$(src_base)/xml-schema-custom.cxx,$(install_doc_dir)/xsd/$(path)/xml-schema-custom.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/calendar.xsd,$(dist_prefix)/$(path)/calendar.xsd)
- $(call install-data,$(src_base)/calendar.xml,$(dist_prefix)/$(path)/calendar.xml)
- $(call install-data,$(src_base)/xml-schema-custom.hxx,$(dist_prefix)/$(path)/xml-schema-custom.hxx)
- $(call install-data,$(src_base)/xml-schema-custom.cxx,$(dist_prefix)/$(path)/xml-schema-custom.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): |$(out_root)/.dist-pre
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
- $(call meta-vc8sln,$(src_root)/dist/template-vc8.sln,calendar-vc8.sln)
- $(call meta-vc9sln,$(src_root)/dist/template-vc9.sln,calendar-vc9.sln)
- $(call meta-vc10sln,$(src_root)/dist/template-vc10.sln,calendar-vc10.sln)
- $(call meta-vc11sln,$(src_root)/dist/template-vc11.sln,calendar-vc11.sln)
- $(call meta-vc12sln,$(src_root)/dist/template-vc12.sln,calendar-vc12.sln)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
- $(call message,rm $$1,rm -f $$1,$(out_base)/xml-schema.hxx)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver xml-schema.hxx $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/vc8sln.make)
-$(call include,$(bld_root)/meta/vc9sln.make)
-$(call include,$(bld_root)/meta/vc10sln.make)
-$(call include,$(bld_root)/meta/vc11sln.make)
-$(call include,$(bld_root)/meta/vc12sln.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/custom/calendar/xml-schema-custom.cxx b/xsd/examples/cxx/tree/custom/calendar/xml-schema-custom.cxx
deleted file mode 100644
index 645880b..0000000
--- a/xsd/examples/cxx/tree/custom/calendar/xml-schema-custom.cxx
+++ /dev/null
@@ -1,56 +0,0 @@
-// file : examples/cxx/tree/custom/calendar/xml-schema-custom.cxx
-// copyright : not copyrighted - public domain
-
-// Include xml-schema.hxx instead of xml-schema-custom.hxx here.
-//
-#include "xml-schema.hxx"
-
-#include <xsd/cxx/xml/string.hxx> // xsd::cxx::xml::transcode
-#include <xsd/cxx/tree/text.hxx> // xsd::cxx::tree::text_content
-
-using namespace boost;
-using namespace boost::gregorian;
-
-namespace xml_schema
-{
- date::
- date (const xercesc::DOMElement& e, flags f, container* c)
- : simple_type (e, f, c),
- gregorian::date (
- from_simple_string (
- xsd::cxx::tree::text_content<char> (e)))
- {
- }
-
- date::
- date (const xercesc::DOMAttr& a, flags f, container* c)
- : simple_type (a, f, c),
- gregorian::date (
- from_simple_string (
- xsd::cxx::xml::transcode<char> (a.getValue ())))
- {
- }
-
- date::
- date (const std::string& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : simple_type (s, e, f, c),
- gregorian::date (from_simple_string (s))
- {
- }
-
- date::
- date (const date& d, flags f, container* c)
- : simple_type (d, f, c),
- gregorian::date (d)
- {
- }
-
- date* date::
- _clone (flags f, container* c) const
- {
- return new date (*this, f, c);
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/calendar/xml-schema-custom.hxx b/xsd/examples/cxx/tree/custom/calendar/xml-schema-custom.hxx
deleted file mode 100644
index 58f57e6..0000000
--- a/xsd/examples/cxx/tree/custom/calendar/xml-schema-custom.hxx
+++ /dev/null
@@ -1,33 +0,0 @@
-// file : examples/cxx/tree/custom/calendar/xml-schema-custom.hxx
-// copyright : not copyrighted - public domain
-
-// Do not include this file directly, use xml-schema.hxx instead. This
-// file is included into generated xml-schema.hxx so we do not need to
-// guard against multiple inclusions.
-//
-
-#include <boost/date_time/gregorian/gregorian.hpp> // boost::gregorian::date
-
-namespace xml_schema
-{
- class date: public simple_type,
- public boost::gregorian::date
- {
- public:
- // Parsing c-tors: element, attribute, and list item.
- //
- date (const xercesc::DOMElement&, flags = 0, container* = 0);
- date (const xercesc::DOMAttr&, flags = 0, container* = 0);
- date (const std::string&,
- const xercesc::DOMElement*,
- flags = 0,
- container* = 0);
-
- // Copy c-tor and _clone.
- //
- date (const date&, flags = 0, container* = 0);
-
- virtual date*
- _clone (flags = 0, container* = 0) const;
- };
-}
diff --git a/xsd/examples/cxx/tree/custom/comments/README b/xsd/examples/cxx/tree/custom/comments/README
deleted file mode 100644
index 8fd69d0..0000000
--- a/xsd/examples/cxx/tree/custom/comments/README
+++ /dev/null
@@ -1,57 +0,0 @@
-This example shows how to customize the anyType XML Schema built-in
-type to implement preservation of comments stored in XML documents.
-Because anyType is a base type for every generated type, you can use
-this technique to implement custom functionality that spans the
-entire type system. For more information on the C++/Tree mapping
-customization see the C++/Tree Mapping Customization Guide[2].
-
-[2] http://wiki.codesynthesis.com/Tree/Customization_guide
-
-The example consists of the following files:
-
-people.xsd
- XML Schema definition for a simple person record vocabulary.
-
-people.xml
- Sample XML instance document.
-
-xml-schema.hxx
- C++ types for XML Schema built-in types. This header file is generated
- by XSD using the --generate-xml-schema option. The --custom-type option
- is also used to customize the xsd:anyType type.
-
-people.hxx
-people.ixx
-people.cxx
- C++ types that represent the person record vocabulary, a set of
- parsing functions that convert XML instance documents to a tree-like
- in-memory object model, and a set of serialization functions that
- convert the object model back to XML. These are generated by XSD
- from people.xsd with the --extern-xml-schema option in order to
- include xml-schema.hxx.
-
-xml-schema-custom.hxx
- Header file which defines our own xml_schema::type class. It is
- included at the end of xml-schema.hxx using the --hxx-epilogue
- option.
-
-xml-schema-custom.cxx
- Source file which contains the implementation of our xml_schema:type
- class.
-
-dom-parse.hxx
-dom-parse.cxx
- Definition and implementation of the parse() function that
- parses an XML document to a DOM document while preserving
- XML comments.
-
-driver.cxx
- Driver for the example. It first calls the above parse() function
- to parse the input file to a DOM document. It then parses the DOM
- document to the object model and performs a number of modifications
- on this object model. Finally, it serializes the modified object
- model back to XML, including XML comments.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver people.xml
diff --git a/xsd/examples/cxx/tree/custom/comments/dom-parse.cxx b/xsd/examples/cxx/tree/custom/comments/dom-parse.cxx
deleted file mode 100644
index 9999f67..0000000
--- a/xsd/examples/cxx/tree/custom/comments/dom-parse.cxx
+++ /dev/null
@@ -1,93 +0,0 @@
-// file : examples/cxx/tree/custom/comments/dom-parse.cxx
-// copyright : not copyrighted - public domain
-
-#include "dom-parse.hxx"
-
-#include <istream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/XMLUniDefs.hpp> // chLatin_*
-#include <xercesc/framework/Wrapper4InputSource.hpp>
-
-#include <xsd/cxx/xml/sax/std-input-source.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-#include <xsd/cxx/tree/error-handler.hxx>
-
-using namespace xercesc;
-namespace xml = xsd::cxx::xml;
-namespace tree = xsd::cxx::tree;
-
-xml::dom::auto_ptr<DOMDocument>
-parse (std::istream& is, const std::string& id, bool validate)
-{
- const XMLCh ls_id [] = {chLatin_L, chLatin_S, chNull};
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- xml::dom::auto_ptr<DOMLSParser> parser (
- impl->createLSParser (DOMImplementationLS::MODE_SYNCHRONOUS, 0));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- // Preserve comment nodes in the document.
- //
- conf->setParameter (XMLUni::fgDOMComments, true);
-
- // Enable datatype normalization.
- //
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
-
- // Do not create EntityReference nodes in the DOM tree. No
- // EntityReference nodes will be created, only the nodes
- // corresponding to their fully expanded substitution text
- // will be created.
- //
- conf->setParameter (XMLUni::fgDOMEntities, false);
-
- // Perform namespace processing.
- //
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
-
- // Do not include ignorable whitespace in the DOM tree.
- //
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
-
- // Enable/Disable validation.
- //
- conf->setParameter (XMLUni::fgDOMValidate, validate);
- conf->setParameter (XMLUni::fgXercesSchema, validate);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
-
- // We will release the DOM document ourselves.
- //
- conf->setParameter (XMLUni::fgXercesUserAdoptsDOMDocument, true);
-
- // Set error handler.
- //
- tree::error_handler<char> eh;
- xml::dom::bits::error_handler_proxy<char> ehp (eh);
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- // Prepare input stream.
- //
- xml::sax::std_input_source isrc (is, id);
- Wrapper4InputSource wrap (&isrc, false);
-
- xml::dom::auto_ptr<DOMDocument> doc (parser->parse (&wrap));
-
- eh.throw_if_failed<tree::parsing<char> > ();
-
- return doc;
-}
diff --git a/xsd/examples/cxx/tree/custom/comments/dom-parse.hxx b/xsd/examples/cxx/tree/custom/comments/dom-parse.hxx
deleted file mode 100644
index fea46d0..0000000
--- a/xsd/examples/cxx/tree/custom/comments/dom-parse.hxx
+++ /dev/null
@@ -1,22 +0,0 @@
-// file : examples/cxx/tree/custom/comments/dom-parse.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef DOM_PARSE
-#define DOM_PARSE
-
-#include <string>
-#include <iosfwd>
-
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-
-// Parse an XML document from the standard input stream with an
-// optional resource id. Resource id is used in diagnostics as
-// well as to locate schemas referenced from inside the document.
-//
-xsd::cxx::xml::dom::auto_ptr<xercesc::DOMDocument>
-parse (std::istream& is,
- const std::string& id,
- bool validate);
-
-#endif // DOM_PARSE
diff --git a/xsd/examples/cxx/tree/custom/comments/driver.cxx b/xsd/examples/cxx/tree/custom/comments/driver.cxx
deleted file mode 100644
index 39b16f7..0000000
--- a/xsd/examples/cxx/tree/custom/comments/driver.cxx
+++ /dev/null
@@ -1,90 +0,0 @@
-// file : examples/cxx/tree/custom/commens/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <fstream>
-#include <iostream>
-
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "people.hxx"
-#include "dom-parse.hxx"
-
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " people.xml" << endl;
- return 1;
- }
-
- int r (0);
-
- // We need to initialize the Xerces-C++ runtime because we
- // are doing the XML-to-DOM parsing ourselves (see below).
- //
- xercesc::XMLPlatformUtils::Initialize ();
-
- try
- {
- using namespace people;
- namespace xml = xsd::cxx::xml;
-
- ifstream ifs;
- ifs.exceptions (ifstream::badbit | ifstream::failbit);
- ifs.open (argv[1]);
-
- // For performance reasons the internal XML to DOM parsing code
- // discards comments in the resulting DOM document. To overcome
- // this we are going to use our own parse() function from
- // dom-parse.hxx that preserves comments in the resulting DOM
- // documents.
- //
- xml_schema::dom::auto_ptr<xercesc::DOMDocument> doc (
- parse (ifs, argv[1], true));
-
- // Parse the DOM document to the object model.
- //
- std::auto_ptr<catalog> c (catalog_ (*doc));
-
- // Change the object model.
- //
- catalog::person_sequence& ps (c->person ());
-
- for (catalog::person_iterator i (ps.begin ()); i != ps.end (); ++i)
- {
- i->age (i->age () + 1);
- }
-
- person john ("John Doe", 30);
- john.comment ("Record for John Doe");
-
- ps.push_back (john);
-
- // Serialize.
- //
- xml_schema::namespace_infomap map;
-
- map["ppl"].name = "http://www.codesynthesis.com/people";
- map["ppl"].schema = "people.xsd";
-
- catalog_ (std::cout, *c, map);
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- r = 1;
- }
-
- xercesc::XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/custom/comments/makefile b/xsd/examples/cxx/tree/custom/comments/makefile
deleted file mode 100644
index eebb75e..0000000
--- a/xsd/examples/cxx/tree/custom/comments/makefile
+++ /dev/null
@@ -1,123 +0,0 @@
-# file : examples/cxx/tree/custom/comments/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := people.xsd
-cxx := driver.cxx xml-schema-custom.cxx dom-parse.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Header file for XML Schema namespace.
-#
-$(out_base)/xml-schema.hxx: $(out_root)/xsd/xsd
- $(call message,xsd $(src_base)/xml-schema.xsd,\
-$(out_root)/xsd/xsd cxx-tree --output-dir $(out_base) --generate-xml-schema \
---generate-serialization --custom-type anyType=/type_base \
---hxx-epilogue '#include "xml-schema-custom.hxx"' xml-schema.xsd)
-
-#
-#
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += \
---generate-inline \
---generate-serialization \
---extern-xml-schema xml-schema.xsd
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/people.xsd,$(install_doc_dir)/xsd/$(path)/people.xsd)
- $(call install-data,$(src_base)/people.xml,$(install_doc_dir)/xsd/$(path)/people.xml)
- $(call install-data,$(src_base)/xml-schema-custom.hxx,$(install_doc_dir)/xsd/$(path)/xml-schema-custom.hxx)
- $(call install-data,$(src_base)/xml-schema-custom.cxx,$(install_doc_dir)/xsd/$(path)/xml-schema-custom.cxx)
- $(call install-data,$(src_base)/dom-parse.hxx,$(install_doc_dir)/xsd/$(path)/dom-parse.hxx)
- $(call install-data,$(src_base)/dom-parse.cxx,$(install_doc_dir)/xsd/$(path)/dom-parse.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/people.xsd,$(dist_prefix)/$(path)/people.xsd)
- $(call install-data,$(src_base)/people.xml,$(dist_prefix)/$(path)/people.xml)
- $(call install-data,$(src_base)/xml-schema-custom.hxx,$(dist_prefix)/$(path)/xml-schema-custom.hxx)
- $(call install-data,$(src_base)/xml-schema-custom.cxx,$(dist_prefix)/$(path)/xml-schema-custom.cxx)
- $(call install-data,$(src_base)/dom-parse.hxx,$(dist_prefix)/$(path)/dom-parse.hxx)
- $(call install-data,$(src_base)/dom-parse.cxx,$(dist_prefix)/$(path)/dom-parse.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
- $(call message,rm $$1,rm -f $$1,$(out_base)/xml-schema.hxx)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver xml-schema.hxx $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/custom/comments/people.xml b/xsd/examples/cxx/tree/custom/comments/people.xml
deleted file mode 100644
index 55c08a1..0000000
--- a/xsd/examples/cxx/tree/custom/comments/people.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/comments/people.xml
-copyright : not copyrighted - public domain
-
--->
-
-<ppl:catalog xmlns:ppl="http://www.codesynthesis.com/people"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/people people.xsd">
-
- <person>
- <!--Record for Joe Dirt-->
- <name>Joe Dirt</name>
- <age>28</age>
- </person>
-
-</ppl:catalog>
diff --git a/xsd/examples/cxx/tree/custom/comments/people.xsd b/xsd/examples/cxx/tree/custom/comments/people.xsd
deleted file mode 100644
index e70dd2a..0000000
--- a/xsd/examples/cxx/tree/custom/comments/people.xsd
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/comments/people.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:ppl="http://www.codesynthesis.com/people"
- targetNamespace="http://www.codesynthesis.com/people">
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="age" type="xsd:unsignedShort"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="person" type="ppl:person" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="catalog" type="ppl:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/custom/comments/xml-schema-custom.cxx b/xsd/examples/cxx/tree/custom/comments/xml-schema-custom.cxx
deleted file mode 100644
index 67937d1..0000000
--- a/xsd/examples/cxx/tree/custom/comments/xml-schema-custom.cxx
+++ /dev/null
@@ -1,117 +0,0 @@
-// file : examples/cxx/tree/custom/comments/xml-schema-custom.cxx
-// copyright : not copyrighted - public domain
-
-// Include xml-schema.hxx instead of xml-schema-custom.hxx here.
-//
-#include "xml-schema.hxx"
-
-#include <xercesc/dom/DOMComment.hpp>
-#include <xercesc/dom/DOMDocument.hpp>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode, xml::string
-
-namespace xml = xsd::cxx::xml;
-
-namespace xml_schema
-{
- type::
- type ()
- : type_base ()
- {
- }
-
- type::
- type (const xercesc::DOMElement& e, flags f, container* c)
- : type_base (e, f, c)
- {
- using namespace xercesc;
-
- // Here we are only handling a comment that is the first
- // node in the element's content.
- //
- const DOMNode* n (e.getFirstChild ());
-
- if (n != 0 && n->getNodeType () == DOMNode::COMMENT_NODE)
- {
- const DOMComment* c (static_cast<const DOMComment*> (n));
- comment_ = xml::transcode<char> (c->getData ());
- }
- }
-
- type::
- type (const xercesc::DOMAttr& a, flags f, container* c)
- : type_base (a, f, c)
- {
- // No comments for attributes.
- //
- }
-
- type::
- type (const std::string& s, const xercesc::DOMElement* e,
- flags f, container* c)
- : type_base (s, e, f, c)
- {
- // No comments for list items.
- //
- }
-
- type::
- type (const type& x, flags f, container* c)
- : type_base (x, f, c), comment_ (x.comment_)
- {
- }
-
- type* type::
- _clone (flags f, container* c) const
- {
- return new type (*this, f, c);
- }
-
- // Serialization operators.
- //
- void
- operator<< (xercesc::DOMElement& e, const type& x)
- {
- // Call our base first.
- //
- const type_base& b (x);
- e << b;
-
- // Add the comment if any.
- //
- const std::string s (x.comment ());
-
- if (!s.empty ())
- {
- using namespace xercesc;
-
- DOMDocument* doc (e.getOwnerDocument ());
- DOMComment* c (doc->createComment (xml::string (s).c_str ()));
- e.appendChild (c);
- }
- }
-
- void
- operator<< (xercesc::DOMAttr& a, const type& x)
- {
- // Call our base first.
- //
- const type_base& b (x);
- a << b;
-
- // No comments for attributes.
- //
- }
-
- void
- operator<< (xml_schema::list_stream& ls, const type& x)
- {
- // Call our base first.
- //
- const type_base& b (x);
- ls << b;
-
- // No comments for list items.
- //
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/comments/xml-schema-custom.hxx b/xsd/examples/cxx/tree/custom/comments/xml-schema-custom.hxx
deleted file mode 100644
index 0442a44..0000000
--- a/xsd/examples/cxx/tree/custom/comments/xml-schema-custom.hxx
+++ /dev/null
@@ -1,57 +0,0 @@
-// file : examples/cxx/tree/custom/comments/xml-schema-custom.hxx
-// copyright : not copyrighted - public domain
-
-// Do not include this file directly, use xml-schema.hxx instead. This
-// file is included into generated xml-schema.hxx so we do not need to
-// guard against multiple inclusions.
-//
-
-#include <string>
-
-namespace xml_schema
-{
- // When customizing anyType always inherit from the original type.
- //
- class type: public type_base
- {
- public:
- type ();
- type (const xercesc::DOMElement&, flags = 0, container* = 0);
- type (const xercesc::DOMAttr&, flags = 0, container* = 0);
- type (const std::string&, const xercesc::DOMElement*,
- flags = 0, container* = 0);
- type (const type&, flags = 0, container* = 0);
-
- virtual type*
- _clone (flags = 0, container* = 0) const;
-
- public:
- // Comment manipulation API.
- //
- const std::string&
- comment () const
- {
- return comment_;
- }
-
- void
- comment (const std::string& c)
- {
- comment_ = c;
- }
-
- private:
- std::string comment_;
- };
-
- // New serialization operators.
- //
- void
- operator<< (xercesc::DOMElement&, const type&);
-
- void
- operator<< (xercesc::DOMAttr&, const type&);
-
- void
- operator<< (xml_schema::list_stream&, const type&);
-}
diff --git a/xsd/examples/cxx/tree/custom/contacts/README b/xsd/examples/cxx/tree/custom/contacts/README
deleted file mode 100644
index 072ede3..0000000
--- a/xsd/examples/cxx/tree/custom/contacts/README
+++ /dev/null
@@ -1,40 +0,0 @@
-This example shows how to map a user-defined XML Schema type to a custom
-C++ class. It presents the simple case where the customized type is not
-used as a base in the same schema. For the complex case see the taxonomy
-example. For more information on the C++/Tree mapping customization see
-the C++/Tree Mapping Customization Guide[1].
-
-[1] http://wiki.codesynthesis.com/Tree/Customization_guide
-
-The example consists of the following files:
-
-contacts.xsd
- XML Schema definition for a simple contacts database.
-
-contacts.xml
- Sample XML instance document.
-
-contacts.hxx
-contacts.ixx
-contacts.cxx
- C++ types that represent the given vocabulary and a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model. These are generated by XSD from contacts.xsd with the
- --custom-type option in order to customize the contact type.
-
-contacts-custom.hxx
- Header file which defines our own contact class by inheriting from the
- generated contact_base. It is included at the end of contacts.hxx using
- the --hxx-epilogue option.
-
-contacts-custom.cxx
- Source file which contains the implementation of our contact class.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input file. It then prints
- the contacts to STDERR.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver contacts.xml
diff --git a/xsd/examples/cxx/tree/custom/contacts/contacts-custom.cxx b/xsd/examples/cxx/tree/custom/contacts/contacts-custom.cxx
deleted file mode 100644
index 8bb0e22..0000000
--- a/xsd/examples/cxx/tree/custom/contacts/contacts-custom.cxx
+++ /dev/null
@@ -1,50 +0,0 @@
-// file : examples/cxx/tree/custom/contacts/contacts-custom.cxx
-// copyright : not copyrighted - public domain
-
-#include <ostream>
-
-// Include contacts.hxx instead of contacts-custom.hxx here.
-//
-#include "contacts.hxx"
-
-namespace contacts
-{
- // We implement the following constructs by simply forwarding
- // to our base.
- //
- contact::
- contact (const name_type& n,
- const email_type& e,
- const phone_type& p)
- : contact_base (n, e, p)
- {
- }
-
- contact::
- contact (const xercesc::DOMElement& e,
- xml_schema::flags f,
- xml_schema::container* c)
- : contact_base (e, f, c)
- {
- }
-
- contact::
- contact (const contact& x,
- xml_schema::flags f,
- xml_schema::container* c)
- : contact_base (x, f, c)
- {
- }
-
- contact* contact::
- _clone (xml_schema::flags f, xml_schema::container* c) const
- {
- return new contact (*this, f, c);
- }
-
- void contact::
- print (std::ostream& os) const
- {
- os << name () << " e| " << email () << " t| " << phone () << std::endl;
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/contacts/contacts-custom.hxx b/xsd/examples/cxx/tree/custom/contacts/contacts-custom.hxx
deleted file mode 100644
index 65d6244..0000000
--- a/xsd/examples/cxx/tree/custom/contacts/contacts-custom.hxx
+++ /dev/null
@@ -1,43 +0,0 @@
-// file : examples/cxx/tree/custom/contacts/contacts-custom.hxx
-// copyright : not copyrighted - public domain
-
-// Do not include this file directly, use contacts.hxx instead. This
-// file is included into generated contacts.hxx so we do not need to
-// guard against multiple inclusions.
-//
-
-#include <iosfwd> // std::ostream
-
-namespace contacts
-{
- class contact: public contact_base
- {
- // The following constructor signatures are copied from
- // contact_base except for the copy constructor and the
- // _clone function where we had to change the type from
- // contact_base to contact.
- //
- public:
- contact (const name_type&,
- const email_type&,
- const phone_type&);
-
- contact (const xercesc::DOMElement&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- contact (const contact&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- virtual contact*
- _clone (xml_schema::flags = 0,
- xml_schema::container* = 0) const;
-
- // Our customizations.
- //
- public:
- void
- print (std::ostream&) const;
- };
-}
diff --git a/xsd/examples/cxx/tree/custom/contacts/contacts.xml b/xsd/examples/cxx/tree/custom/contacts/contacts.xml
deleted file mode 100644
index 331e692..0000000
--- a/xsd/examples/cxx/tree/custom/contacts/contacts.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/contacts/contacts.xml
-copyright : not copyrighted - public domain
-
--->
-
-<cts:catalog xmlns:cts="http://www.codesynthesis.com/contacts"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/contacts contacts.xsd">
-
- <contact>
- <name>Joe Dirt</name>
- <email>joe@dirt.com</email>
- <phone>555 DIRT</phone>
- </contact>
-
-</cts:catalog>
diff --git a/xsd/examples/cxx/tree/custom/contacts/contacts.xsd b/xsd/examples/cxx/tree/custom/contacts/contacts.xsd
deleted file mode 100644
index d6110fe..0000000
--- a/xsd/examples/cxx/tree/custom/contacts/contacts.xsd
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/contacts/contacts.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:cts="http://www.codesynthesis.com/contacts"
- targetNamespace="http://www.codesynthesis.com/contacts">
-
- <xsd:complexType name="contact">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="email" type="xsd:string"/>
- <xsd:element name="phone" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="contact" type="cts:contact" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:element name="catalog" type="cts:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/custom/contacts/driver.cxx b/xsd/examples/cxx/tree/custom/contacts/driver.cxx
deleted file mode 100644
index ae8a2da..0000000
--- a/xsd/examples/cxx/tree/custom/contacts/driver.cxx
+++ /dev/null
@@ -1,38 +0,0 @@
-// file : examples/cxx/tree/custom/contacts/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <iostream>
-
-#include "contacts.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " contacts.xml" << endl;
- return 1;
- }
-
- try
- {
- using namespace contacts;
-
- std::auto_ptr<catalog> c (catalog_ (argv[1]));
-
- for (catalog::contact_const_iterator i (c->contact ().begin ());
- i != c->contact ().end (); ++i)
- {
- i->print (cerr);
- }
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/contacts/makefile b/xsd/examples/cxx/tree/custom/contacts/makefile
deleted file mode 100644
index ec9d902..0000000
--- a/xsd/examples/cxx/tree/custom/contacts/makefile
+++ /dev/null
@@ -1,113 +0,0 @@
-# file : examples/cxx/tree/custom/contacts/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := contacts.xsd
-cxx := driver.cxx contacts-custom.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-
-# We have to double-escape '#' because the message function
-# (which is used in command scripts) expands things twice.
-#
-$(gen): xsd_options += \
---generate-inline \
---custom-type contact=/contact_base \
---hxx-epilogue '\#include "contacts-custom.hxx"'
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/contacts.xsd,$(install_doc_dir)/xsd/$(path)/contacts.xsd)
- $(call install-data,$(src_base)/contacts.xml,$(install_doc_dir)/xsd/$(path)/contacts.xml)
- $(call install-data,$(src_base)/contacts-custom.hxx,$(install_doc_dir)/xsd/$(path)/contacts-custom.hxx)
- $(call install-data,$(src_base)/contacts-custom.cxx,$(install_doc_dir)/xsd/$(path)/contacts-custom.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/contacts.xsd,$(dist_prefix)/$(path)/contacts.xsd)
- $(call install-data,$(src_base)/contacts.xml,$(dist_prefix)/$(path)/contacts.xml)
- $(call install-data,$(src_base)/contacts-custom.hxx,$(dist_prefix)/$(path)/contacts-custom.hxx)
- $(call install-data,$(src_base)/contacts-custom.cxx,$(dist_prefix)/$(path)/contacts-custom.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/custom/double/README b/xsd/examples/cxx/tree/custom/double/README
deleted file mode 100644
index 15348d2..0000000
--- a/xsd/examples/cxx/tree/custom/double/README
+++ /dev/null
@@ -1,62 +0,0 @@
-This example shows how to customize parsing and serialization code for the
-xsd:double XML Schema built-in type using the type customization mechanism
-provided by the C++/Tree Mapping. For more information on type customization
-see the C++/Tree Mapping Customization Guide, particularly sections 1 and 4:
-
-http://wiki.codesynthesis.com/Tree/Customization_guide
-
-In this example our schema uses xsd:double to represent a price. There are
-two potential problems with this choice of a price type. First, xsd:double
-can be serialized in the scientific notation which would be an unusual way
-of representing a price. Second, we would like to limit the number of
-fraction digits in our prices to 2. Furthermore, we would like to always
-have two fraction digits, even if one or both of them are zeros, for
-example: 12.99, 12.90, 12.00.
-
-In case we can modify the schema, a better approach would be to define the
-price type as a restriction of the xsd:decimal type (always fixed notation)
-and specify the fractionDigits facet to limit the number of fraction digits
-to 2. However, there is no way in XML Schema to specify that there should
-always be exactly 2 fraction digits. Therefore, it may still be desirable
-to customize this price type to get the required serialization behavior.
-
-Finally, it is worth noting that the behavior achieved in this example via
-type customization can also be achieved by compiling your code with the
-following macros defined:
-
-XSD_TREE_DOUBLE_FIXED
-XSD_TREE_DOUBLE_PRECISION 2
-
-However, the type customization approach while requiring more work is
-cleaner since it does not rely on global macro definitions.
-
-This example consists of the following files:
-
-order.xsd
- XML Schema definition for a simple order vocabulary.
-
-double-custom.hxx
-double-custom.cxx
- Custom parsing and serialization code for the xsd:double types. The
- double-custom.hxx file is included at the end of the xml-schema.hxx
- file described below.
-
-xml-schema.hxx
- C++ types for XML Schema built-in types. This header file is generated
- by the XSD compiler using the --generate-xml-schema option. The
- --custom-type option is used to customize the xsd:double type. The
- --hxx-epilogue option is used to include the double-custom.hxx file
- at the end of this file.
-
-order.hxx
-order.cxx
- C++ types generated from order.xsd. The --extern-xml-schema option
- is used to include xml-schema.hxx into order.hxx.
-
-driver.cxx
- Test driver for the example. It creates a sample order and then
- writes it to XML to test the custom xsd:double serialization code.
-
-To run the example simply execute:
-
-$ ./driver
diff --git a/xsd/examples/cxx/tree/custom/double/double-custom.cxx b/xsd/examples/cxx/tree/custom/double/double-custom.cxx
deleted file mode 100644
index 6aad908..0000000
--- a/xsd/examples/cxx/tree/custom/double/double-custom.cxx
+++ /dev/null
@@ -1,96 +0,0 @@
-// file : examples/cxx/tree/custom/double/double-custom.cxx
-// copyright : not copyrighted - public domain
-
-// Include xml-schema.hxx instead of double-custom.hxx here.
-//
-#include "xml-schema.hxx"
-
-#include <limits>
-#include <locale>
-#include <sstream>
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-using namespace std;
-
-// Parsing.
-//
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- double traits<double, char, schema_type::double_>::
- create (const std::string& s,
- const xercesc::DOMElement*,
- flags,
- type*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<char> tmp (s);
- trim (tmp);
-
- zc_istream<char> is (tmp);
- is.imbue (locale::classic ());
-
- double t;
- is >> t;
-
- return t;
- }
- }
- }
-}
-
-// Serialization.
-//
-namespace XERCES_CPP_NAMESPACE
-{
- void
- operator<< (xercesc::DOMElement& e, const xml_schema::as_double& d)
- {
- ostringstream os;
- os.imbue (locale::classic ());
-
- os.precision (2);
- os << fixed << d.x;
-
- e << os.str ();
- }
-
- void
- operator<< (xercesc::DOMAttr& a, const xml_schema::as_double& d)
- {
- ostringstream os;
- os.imbue (locale::classic ());
-
- os.precision (2);
- os << fixed << d.x;
-
- a << os.str ();
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- void
- operator<< (xml_schema::list_stream& ls,
- const xml_schema::as_double& d)
- {
- ls.os_.imbue (locale::classic ());
- ls.os_.precision (2);
- ls.os_ << fixed << d.x;
- }
- }
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/double/double-custom.hxx b/xsd/examples/cxx/tree/custom/double/double-custom.hxx
deleted file mode 100644
index 1516211..0000000
--- a/xsd/examples/cxx/tree/custom/double/double-custom.hxx
+++ /dev/null
@@ -1,67 +0,0 @@
-// file : examples/cxx/tree/custom/double/double-custom.hxx
-// copyright : not copyrighted - public domain
-
-// Do not include this file directly, use xml-schema.hxx instead. This
-// file is included into generated xml-schema.hxx so we do not need to
-// guard against multiple inclusions.
-//
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-// Parsing.
-//
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template<>
- struct traits<double, char, schema_type::double_>
- {
- static double
- create (const xercesc::DOMElement& e, flags f, type* c)
- {
- return create (text_content<char> (e), 0, f, c);
- }
-
- static double
- create (const xercesc::DOMAttr& a, flags f, type* c)
- {
- return create (xml::transcode<char> (a.getValue ()), 0, f, c);
- }
-
- static double
- create (const std::string& s,
- const xercesc::DOMElement*,
- flags,
- type*);
- };
- }
- }
-}
-
-// Serialization.
-//
-namespace XERCES_CPP_NAMESPACE
-{
- void
- operator<< (xercesc::DOMElement& e, const xml_schema::as_double& d);
-
- void
- operator<< (xercesc::DOMAttr& a, const xml_schema::as_double& d);
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- void
- operator<< (xml_schema::list_stream& ls,
- const xml_schema::as_double& d);
- }
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/double/driver.cxx b/xsd/examples/cxx/tree/custom/double/driver.cxx
deleted file mode 100644
index 8b102a5..0000000
--- a/xsd/examples/cxx/tree/custom/double/driver.cxx
+++ /dev/null
@@ -1,31 +0,0 @@
-// file : examples/cxx/tree/custom/double/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <iostream>
-
-#include "order.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main ()
-{
- try
- {
- // Order one Airbus A380.
- //
- order o;
- o.item ().push_back (item ("Airbus A380", 317000000.90));
-
-
- // Serialize.
- //
- order_ (std::cout, o);
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/double/makefile b/xsd/examples/cxx/tree/custom/double/makefile
deleted file mode 100644
index 2eed216..0000000
--- a/xsd/examples/cxx/tree/custom/double/makefile
+++ /dev/null
@@ -1,112 +0,0 @@
-# file : examples/cxx/tree/custom/double/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := order.xsd
-cxx := driver.cxx double-custom.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-$(out_base)/xml-schema.hxx: $(out_root)/xsd/xsd
- $(call message,xsd $(src_base)/xml-schema.xsd,\
-$(out_root)/xsd/xsd cxx-tree --output-dir $(out_base) --generate-xml-schema \
---generate-serialization --custom-type double=double \
---hxx-epilogue '#include "double-custom.hxx"' xml-schema.xsd)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization \
---extern-xml-schema xml-schema.xsd
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/order.xsd,$(install_doc_dir)/xsd/$(path)/order.xsd)
- $(call install-data,$(src_base)/double-custom.hxx,$(install_doc_dir)/xsd/$(path)/double-custom.hxx)
- $(call install-data,$(src_base)/double-custom.cxx,$(install_doc_dir)/xsd/$(path)/double-custom.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/order.xsd,$(dist_prefix)/$(path)/order.xsd)
- $(call install-data,$(src_base)/double-custom.hxx,$(dist_prefix)/$(path)/double-custom.hxx)
- $(call install-data,$(src_base)/double-custom.cxx,$(dist_prefix)/$(path)/double-custom.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
- $(call message,rm $$1,rm -f $$1,$(out_base)/xml-schema.hxx)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver xml-schema.hxx $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/custom/double/order.xsd b/xsd/examples/cxx/tree/custom/double/order.xsd
deleted file mode 100644
index 9cf1a1d..0000000
--- a/xsd/examples/cxx/tree/custom/double/order.xsd
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/double/order.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="item">
- <xsd:attribute name="name" type="xsd:string" use="required"/>
- <xsd:attribute name="price" type="xsd:double" use="required"/>
- </xsd:complexType>
-
- <xsd:complexType name="order">
- <xsd:sequence>
- <xsd:element name="item" type="item" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="order" type="order"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/custom/makefile b/xsd/examples/cxx/tree/custom/makefile
deleted file mode 100644
index d84f840..0000000
--- a/xsd/examples/cxx/tree/custom/makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-# file : examples/cxx/tree/custom/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-all_examples := comments contacts double mixed taxonomy wildcard calendar
-build_examples := comments contacts double mixed taxonomy wildcard
-
-ifeq ($(xsd_with_boost_date_time),y)
-build_examples += calendar
-endif
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(build_examples)))
-
-# Install & Dist.
-#
-$(install) $(dist) $(dist-win): path := $(subst $(src_root)/,,$(src_base))
-
-$(install): $(addprefix $(out_base)/,$(addsuffix /.install,$(all_examples)))
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
-
-$(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(all_examples)))
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): |$(out_root)/.dist-pre
-$(dist-win): $(addprefix $(out_base)/,$(addsuffix /.dist-win,$(all_examples)))
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
- $(call meta-vc8sln,$(src_root)/dist/template-vc8.sln,custom-vc8.sln)
- $(call meta-vc9sln,$(src_root)/dist/template-vc9.sln,custom-vc9.sln)
- $(call meta-vc10sln,$(src_root)/dist/template-vc10.sln,custom-vc10.sln)
- $(call meta-vc11sln,$(src_root)/dist/template-vc11.sln,custom-vc11.sln)
- $(call meta-vc12sln,$(src_root)/dist/template-vc12.sln,custom-vc12.sln)
-
-
-# Clean.
-#
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(build_examples)))
-
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/vc8sln.make)
-$(call include,$(bld_root)/meta/vc9sln.make)
-$(call include,$(bld_root)/meta/vc10sln.make)
-$(call include,$(bld_root)/meta/vc11sln.make)
-$(call include,$(bld_root)/meta/vc12sln.make)
-
-ifneq ($(filter $(MAKECMDGOALS),dist dist-win install),)
-$(foreach e,$(all_examples),$(call import,$(src_base)/$e/makefile))
-else
-$(foreach e,$(build_examples),$(call import,$(src_base)/$e/makefile))
-endif
-
diff --git a/xsd/examples/cxx/tree/custom/mixed/README b/xsd/examples/cxx/tree/custom/mixed/README
deleted file mode 100644
index 7b56812..0000000
--- a/xsd/examples/cxx/tree/custom/mixed/README
+++ /dev/null
@@ -1,50 +0,0 @@
-This example shows how to use type customization to parse and serialize
-mixed content. The example achieves this by customizing the type with
-the mixed content model to include a DOM document that stores the data
-as a raw XML representation. The customized type also provides its own
-parsing constructor and serialization operator where the mixed content
-is extracted from and inserted back to DOM, respectively. The use of
-DOM for mixed content storage is one of the options. You may find other
-data structures (e.g., a string) more suitable depending on your situation.
-
-For more information on the C++/Tree mapping customization see the C++/Tree
-Mapping Customization Guide[1].
-
-[1] http://wiki.codesynthesis.com/Tree/Customization_guide
-
-The example consists of the following files:
-
-people.xsd
- XML Schema definition for a simple person record vocabulary. Each
- record includes the bio element which represents arbitrary XHTML
- fragments as mixed content.
-
-people.xml
- Sample XML instance document.
-
-people.hxx
-people.ixx
-people.cxx
- C++ types that represent the given vocabulary, a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model, and a set of serialization functions that convert the
- object model back to XML. These are generated by XSD from people.xsd
- with the --custom-type option in order to customize the bio type.
-
-people-custom.hxx
- Header file which defines our own bio class by inheriting from the
- generated bio_base. It is included at the end of people.hxx using
- the --hxx-epilogue option.
-
-people-custom.cxx
- Source file which contains the implementation of our bio class.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input file. It then prints
- the data to STDERR, including the bio information converted to text.
- Finally, the driver serializes the object model back to XML.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver people.xml
diff --git a/xsd/examples/cxx/tree/custom/mixed/driver.cxx b/xsd/examples/cxx/tree/custom/mixed/driver.cxx
deleted file mode 100644
index 0378f18..0000000
--- a/xsd/examples/cxx/tree/custom/mixed/driver.cxx
+++ /dev/null
@@ -1,123 +0,0 @@
-// file : examples/cxx/tree/custom/mixed/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "people.hxx"
-
-// The following transcode() utility function is handy when working with
-// Xerces. Include it after the generated header in order to get only char
-// or wchar_t version depending on how you compiled your schemas.
-//
-#include <xsd/cxx/xml/string.hxx>
-
-using std::cerr;
-using std::endl;
-using namespace xercesc;
-
-
-void
-xhtml2txt (const DOMElement*);
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " people.xml" << endl;
- return 1;
- }
-
- int r (0);
-
- // The Xerces-C++ DOM document that will be used to store the XHTML
- // fragments "out-live" the call to the parsing function. Therefore
- // we need to initialize the Xerces-C++ runtime ourselves.
- //
- XMLPlatformUtils::Initialize ();
-
- try
- {
- using namespace people;
-
- // Parse.
- //
- std::auto_ptr<directory> d (
- directory_ (argv[1], xml_schema::flags::dont_initialize));
-
- // Print what we've got.
- //
- const directory::person_sequence& s (d->person ());
-
- for (directory::person_const_iterator i (s.begin ()); i != s.end (); ++i)
- {
- cerr << "First : " << i->first_name () << endl
- << "Last : " << i->last_name () << endl
- << "Gender : " << i->gender () << endl
- << "Age : " << i->age () << endl;
-
- const bio& b (i->bio ());
- const DOMElement* xhtml (b.xhtml ());
-
- if (xhtml != 0)
- {
- cerr << "Bio : " << endl;
- xhtml2txt (xhtml);
- }
-
- cerr << endl;
- }
-
- // Serialize.
- //
- xml_schema::namespace_infomap map;
-
- map["ppl"].name = "http://www.codesynthesis.com/people";
- map["ppl"].schema = "people.xsd";
-
- directory_ (
- std::cout, *d, map, "UTF-8", xml_schema::flags::dont_initialize);
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
-
- XMLPlatformUtils::Terminate ();
- return r;
-}
-
-// Primitive XHTML to text converter that just prints all the text
-// nodes and ignores everything else.
-//
-void
-xhtml2txt (const DOMElement* e)
-{
- namespace xml = xsd::cxx::xml;
-
- for (const DOMNode* n (e->getFirstChild ());
- n != 0;
- n = n->getNextSibling ())
- {
- switch (n->getNodeType ())
- {
- case DOMNode::TEXT_NODE:
- {
- cerr << xml::transcode<char> (n->getTextContent ());
- break;
- }
- case DOMNode::ELEMENT_NODE:
- {
- xhtml2txt (static_cast<const DOMElement*> (n));
- break;
- }
- default:
- break; // Ignore all other nodes (e.g., comments, etc).
- }
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/mixed/makefile b/xsd/examples/cxx/tree/custom/mixed/makefile
deleted file mode 100644
index 54610f0..0000000
--- a/xsd/examples/cxx/tree/custom/mixed/makefile
+++ /dev/null
@@ -1,115 +0,0 @@
-# file : examples/cxx/tree/custom/mixed/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := people.xsd
-cxx := driver.cxx people-custom.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-
-# We have to double-escape '#' because the message function
-# (which is used in command scripts) expands things twice.
-#
-$(gen): xsd_options += \
---generate-inline \
---generate-serialization \
---custom-type bio=/bio_base \
---hxx-epilogue '\#include "people-custom.hxx"'
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/people.xsd,$(install_doc_dir)/xsd/$(path)/people.xsd)
- $(call install-data,$(src_base)/people.xml,$(install_doc_dir)/xsd/$(path)/people.xml)
- $(call install-data,$(src_base)/people-custom.hxx,$(install_doc_dir)/xsd/$(path)/people-custom.hxx)
- $(call install-data,$(src_base)/people-custom.cxx,$(install_doc_dir)/xsd/$(path)/people-custom.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/people.xsd,$(dist_prefix)/$(path)/people.xsd)
- $(call install-data,$(src_base)/people.xml,$(dist_prefix)/$(path)/people.xml)
- $(call install-data,$(src_base)/people-custom.hxx,$(dist_prefix)/$(path)/people-custom.hxx)
- $(call install-data,$(src_base)/people-custom.cxx,$(dist_prefix)/$(path)/people-custom.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/custom/mixed/people-custom.cxx b/xsd/examples/cxx/tree/custom/mixed/people-custom.cxx
deleted file mode 100644
index 7cd1947..0000000
--- a/xsd/examples/cxx/tree/custom/mixed/people-custom.cxx
+++ /dev/null
@@ -1,89 +0,0 @@
-// file : examples/cxx/tree/custom/mixed/people-custom.cxx
-// copyright : not copyrighted - public domain
-
-#include <ostream>
-
-// Include people.hxx instead of people-custom.hxx here.
-//
-#include "people.hxx"
-
-namespace people
-{
- using namespace xercesc;
-
- const XMLCh ls[] = {chLatin_L, chLatin_S, chNull};
-
- bio::
- bio ()
- : xhtml_ (0)
- {
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls));
-
- doc_.reset (impl->createDocument ());
- }
-
- bio::
- bio (const DOMElement& e,
- xml_schema::flags f,
- xml_schema::container* c)
- : bio_base (e, f, c), xhtml_ (0)
- {
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls));
-
- doc_.reset (impl->createDocument ());
-
- // Copy the xhtml element. Assume the first child element in
- // e is always xhtml.
- //
- for (DOMNode* n (e.getFirstChild ()); n != 0; n = n->getNextSibling ())
- {
- if (n->getNodeType () == DOMNode::ELEMENT_NODE)
- {
- xhtml_ = static_cast<DOMElement*> (doc_->importNode (n, true));
- break;
- }
- }
- }
-
- bio::
- bio (const bio& d,
- xml_schema::flags f,
- xml_schema::container* c)
- : bio_base (d, f, c), xhtml_ (0)
- {
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls));
-
- doc_.reset (impl->createDocument ());
-
- xhtml_ = static_cast<DOMElement*> (
- doc_->importNode (const_cast<DOMElement*> (d.xhtml_), true));
- }
-
- bio* bio::
- _clone (xml_schema::flags f, xml_schema::container* c) const
- {
- return new bio (*this, f, c);
- }
-
- void
- operator<< (DOMElement& e, const bio& x)
- {
- // Allow our base to serialize first.
- //
- const bio_base& b (x);
- e << b;
-
- // Copy the XHTML fragment if we have one.
- //
- const DOMElement* xhtml (x.xhtml ());
-
- if (xhtml != 0)
- {
- DOMDocument* doc (e.getOwnerDocument ());
- e.appendChild (doc->importNode (const_cast<DOMElement*> (xhtml), true));
- }
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/mixed/people-custom.hxx b/xsd/examples/cxx/tree/custom/mixed/people-custom.hxx
deleted file mode 100644
index 54dfb21..0000000
--- a/xsd/examples/cxx/tree/custom/mixed/people-custom.hxx
+++ /dev/null
@@ -1,83 +0,0 @@
-// file : examples/cxx/tree/custom/mixed/people-custom.hxx
-// copyright : not copyrighted - public domain
-
-// Do not include this file directly, use people.hxx instead. This
-// file is included into generated people.hxx so we do not need to
-// guard against multiple inclusions.
-//
-
-#include <cassert>
-#include <xercesc/dom/DOM.hpp>
-
-namespace people
-{
- class bio: public bio_base
- {
- // Standard constructors.
- //
- public:
- bio ();
-
- bio (const xercesc::DOMElement&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- bio (const bio&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- virtual bio*
- _clone (xml_schema::flags = 0,
- xml_schema::container* = 0) const;
-
- // XHTML bio as a DOM document.
- //
- public:
- const xercesc::DOMElement*
- xhtml () const
- {
- return xhtml_;
- }
-
- xercesc::DOMElement*
- xhtml ()
- {
- return xhtml_;
- }
-
- // The element should belong to the DOMDocument returned by
- // the dom_document() functions.
- //
- void
- xhtml (xercesc::DOMElement* e)
- {
- assert (e->getOwnerDocument () == doc_.get ());
-
- if (xhtml_ != 0)
- xhtml_->release ();
-
- xhtml_ = e;
- }
-
- const xercesc::DOMDocument&
- dom_document () const
- {
- return *doc_;
- }
-
- xercesc::DOMDocument&
- dom_document ()
- {
- return *doc_;
- }
-
- private:
- xercesc::DOMElement* xhtml_;
- xml_schema::dom::auto_ptr<xercesc::DOMDocument> doc_;
- };
-
- // Serialization operator.
- //
- void
- operator<< (xercesc::DOMElement&, const bio&);
-}
diff --git a/xsd/examples/cxx/tree/custom/mixed/people.xml b/xsd/examples/cxx/tree/custom/mixed/people.xml
deleted file mode 100644
index 47e68b9..0000000
--- a/xsd/examples/cxx/tree/custom/mixed/people.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/mixed/people.xml
-copyright : not copyrighted - public domain
-
--->
-
-<ppl:directory xmlns:ppl="http://www.codesynthesis.com/people"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/people people.xsd">
-
- <person>
- <first-name>John</first-name>
- <last-name>Doe</last-name>
- <gender>male</gender>
- <age>32</age>
- <bio>
- <xhtml xmlns="http://www.w3.org/1999/xhtml">
- <p>Married to Jane Doe.</p>
- </xhtml>
- </bio>
- </person>
-
- <person>
- <first-name>Jane</first-name>
- <last-name>Doe</last-name>
- <gender>female</gender>
- <age>28</age>
- <bio>
- <xhtml xmlns="http://www.w3.org/1999/xhtml">
- <p>Married to John Doe.</p>
- </xhtml>
- </bio>
- </person>
-
-</ppl:directory>
diff --git a/xsd/examples/cxx/tree/custom/mixed/people.xsd b/xsd/examples/cxx/tree/custom/mixed/people.xsd
deleted file mode 100644
index 03e6c97..0000000
--- a/xsd/examples/cxx/tree/custom/mixed/people.xsd
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/mixed/people.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:ppl="http://www.codesynthesis.com/people"
- targetNamespace="http://www.codesynthesis.com/people">
-
- <xsd:simpleType name="gender">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="male"/>
- <xsd:enumeration value="female"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:complexType name="bio" mixed="true">
- <xsd:sequence minOccurs="0" maxOccurs="unbounded">
- <xsd:any namespace="http://www.w3.org/1999/xhtml" processContents="skip"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="first-name" type="xsd:string"/>
- <xsd:element name="last-name" type="xsd:string"/>
- <xsd:element name="gender" type="ppl:gender"/>
- <xsd:element name="age" type="xsd:unsignedShort"/>
- <xsd:element name="bio" type="ppl:bio"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="directory">
- <xsd:sequence>
- <xsd:element name="person" type="ppl:person" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="directory" type="ppl:directory"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/custom/taxonomy/README b/xsd/examples/cxx/tree/custom/taxonomy/README
deleted file mode 100644
index c2e425a..0000000
--- a/xsd/examples/cxx/tree/custom/taxonomy/README
+++ /dev/null
@@ -1,53 +0,0 @@
-This example shows how to map user-defined XML Schema types to custom C++
-classes. It presents the complex case where the customized types are
-inherited from in the same schema. For the simple case see the contacts
-example. For more information on the C++/Tree mapping customization see
-the C++/Tree Mapping Customization Guide[1].
-
-[1] http://wiki.codesynthesis.com/Tree/Customization_guide
-
-The example consists of the following files:
-
-people.xsd
- XML Schema definition for a simple people database.
-
-people.xml
- Sample XML instance document.
-
-people-fwd.hxx
-people.hxx
-people.ixx
-people.cxx
- C++ types that represent the given vocabulary and a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model. These are generated by XSD from people.xsd with the
- --custom-type option in order to customize the person, superman, and
- batman types. Generation of the people-fwd.hxx forward declaration
- file is requested with the --generate-forward option. Note also that
- we use the --generate-polymorphic command line option as well as
- --polymorphic-type to mark the type hierarchy starting with the
- person type as polymorphic.
-
-people-custom-fwd.hxx
- Header file which forward-declares our own person, superman, and batman
- as class templates. It is included at the beginning of people-fwd.hxx
- using the --fwd-prologue option.
-
-people-custom.hxx
- Header file which defines our own person, superman, and batman class
- templates by inheriting from the generated person_base, superman_base,
- and batman_base. It is included at the beginning of people.hxx using
- the --hxx-prologue option.
-
-people-custom.cxx
- Source file which contains the implementations and instantiations of
- our person, superman, and batman class templates.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input file. It then prints
- the database to STDERR.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver people.xml
diff --git a/xsd/examples/cxx/tree/custom/taxonomy/driver.cxx b/xsd/examples/cxx/tree/custom/taxonomy/driver.cxx
deleted file mode 100644
index ec562f6..0000000
--- a/xsd/examples/cxx/tree/custom/taxonomy/driver.cxx
+++ /dev/null
@@ -1,38 +0,0 @@
-// file : examples/cxx/tree/custom/taxonomy/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <iostream>
-
-#include "people.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " people.xml" << endl;
- return 1;
- }
-
- try
- {
- using namespace people;
-
- std::auto_ptr<catalog> c (catalog_ (argv[1]));
-
- for (catalog::person_const_iterator i (c->person ().begin ());
- i != c->person ().end (); ++i)
- {
- i->print (cerr);
- }
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/taxonomy/makefile b/xsd/examples/cxx/tree/custom/taxonomy/makefile
deleted file mode 100644
index 5637f17..0000000
--- a/xsd/examples/cxx/tree/custom/taxonomy/makefile
+++ /dev/null
@@ -1,122 +0,0 @@
-# file : examples/cxx/tree/custom/taxonomy/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := people.xsd
-cxx := driver.cxx people-custom.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=-fwd.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-
-# We have to double-escape '#' because the message function
-# (which is used in command scripts) expands things twice.
-#
-$(gen): xsd_options += \
---generate-inline \
---generate-forward \
---generate-polymorphic \
---polymorphic-type person \
---custom-type "person=person_impl<person_base>/person_base" \
---custom-type "superman=superman_impl<superman_base>/superman_base" \
---custom-type "batman=batman_impl<batman_base>/batman_base" \
---fwd-prologue '\#include "people-custom-fwd.hxx"' \
---hxx-prologue '\#include "people-custom.hxx"'
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/people.xsd,$(install_doc_dir)/xsd/$(path)/people.xsd)
- $(call install-data,$(src_base)/people.xml,$(install_doc_dir)/xsd/$(path)/people.xml)
- $(call install-data,$(src_base)/people-custom.hxx,$(install_doc_dir)/xsd/$(path)/people-custom.hxx)
- $(call install-data,$(src_base)/people-custom.cxx,$(install_doc_dir)/xsd/$(path)/people-custom.cxx)
- $(call install-data,$(src_base)/people-custom-fwd.hxx,$(install_doc_dir)/xsd/$(path)/people-custom-fwd.hxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/people.xsd,$(dist_prefix)/$(path)/people.xsd)
- $(call install-data,$(src_base)/people.xml,$(dist_prefix)/$(path)/people.xml)
- $(call install-data,$(src_base)/people-custom.hxx,$(dist_prefix)/$(path)/people-custom.hxx)
- $(call install-data,$(src_base)/people-custom.cxx,$(dist_prefix)/$(path)/people-custom.cxx)
- $(call install-data,$(src_base)/people-custom-fwd.hxx,$(dist_prefix)/$(path)/people-custom-fwd.hxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/custom/taxonomy/people-custom-fwd.hxx b/xsd/examples/cxx/tree/custom/taxonomy/people-custom-fwd.hxx
deleted file mode 100644
index 2c26bf5..0000000
--- a/xsd/examples/cxx/tree/custom/taxonomy/people-custom-fwd.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : examples/cxx/tree/custom/taxonomy/people-custom-fwd.hxx
-// copyright : not copyrighted - public domain
-
-// Do not include this file directly, use people-fwd.hxx instead. This
-// file is included into generated people-fwd.hxx so we do not need to
-// guard against multiple inclusions.
-//
-
-namespace people
-{
- template <typename base>
- class person_impl;
-
- template <typename base>
- class superman_impl;
-
- template <typename base>
- class batman_impl;
-}
diff --git a/xsd/examples/cxx/tree/custom/taxonomy/people-custom.cxx b/xsd/examples/cxx/tree/custom/taxonomy/people-custom.cxx
deleted file mode 100644
index a06a6ea..0000000
--- a/xsd/examples/cxx/tree/custom/taxonomy/people-custom.cxx
+++ /dev/null
@@ -1,156 +0,0 @@
-// file : examples/cxx/tree/custom/taxonomy/people-custom.cxx
-// copyright : not copyrighted - public domain
-
-#include <ostream>
-
-// Include people.hxx instead of people-custom.hxx here.
-//
-#include "people.hxx"
-
-namespace people
-{
- // person_impl
- //
- template <typename base>
- person_impl<base>::
- person_impl (const xml_schema::string& name)
- : base (name)
- {
- }
-
- template <typename base>
- person_impl<base>::
- person_impl (const xercesc::DOMElement& e,
- xml_schema::flags f,
- xml_schema::container* c)
- : base (e, f, c)
- {
- }
-
- template <typename base>
- person_impl<base>::
- person_impl (const person_impl& p,
- xml_schema::flags f,
- xml_schema::container* c)
- : base (p, f, c)
- {
- }
-
- template <typename base>
- person_impl<base>* person_impl<base>::
- _clone (xml_schema::flags f, xml_schema::container* c) const
- {
- return new person_impl (*this, f, c);
- }
-
- template <typename base>
- void person_impl<base>::
- print (std::ostream& os) const
- {
- os << this->name () << std::endl;
- }
-
- // Explicitly instantiate person_impl class template for person_base.
- //
- template class person_impl<person_base>;
-
-
- // superman_impl
- //
- template <typename base>
- superman_impl<base>::
- superman_impl (const xml_schema::string& name, bool can_fly)
- : base (name, can_fly)
- {
- }
-
- template <typename base>
- superman_impl<base>::
- superman_impl (const xercesc::DOMElement& e,
- xml_schema::flags f,
- xml_schema::container* c)
- : base (e, f, c)
- {
- }
-
- template <typename base>
- superman_impl<base>::
- superman_impl (const superman_impl& s,
- xml_schema::flags f,
- xml_schema::container* c)
- : base (s, f, c)
- {
- }
-
- template <typename base>
- superman_impl<base>* superman_impl<base>::
- _clone (xml_schema::flags f, xml_schema::container* c) const
- {
- return new superman_impl (*this, f, c);
- }
-
- template <typename base>
- void superman_impl<base>::
- print (std::ostream& os) const
- {
- if (this->can_fly ())
- os << "Flying superman ";
- else
- os << "Superman ";
-
- os << this->name () << std::endl;
- }
-
- // Explicitly instantiate superman_impl class template for superman_base.
- //
- template class superman_impl<superman_base>;
-
-
- // batman_impl
- //
- template <typename base>
- batman_impl<base>::
- batman_impl (const xml_schema::string& name,
- bool can_fly,
- unsigned int wing_span)
- : base (name, can_fly, wing_span)
- {
- }
-
- template <typename base>
- batman_impl<base>::
- batman_impl (const xercesc::DOMElement& e,
- xml_schema::flags f,
- xml_schema::container* c)
- : base (e, f, c)
- {
- }
-
- template <typename base>
- batman_impl<base>::
- batman_impl (const batman_impl& s,
- xml_schema::flags f,
- xml_schema::container* c)
- : base (s, f, c)
- {
- }
-
- template <typename base>
- batman_impl<base>* batman_impl<base>::
- _clone (xml_schema::flags f, xml_schema::container* c) const
- {
- return new batman_impl (*this, f, c);
- }
-
- template <typename base>
- void batman_impl<base>::
- print (std::ostream& os) const
- {
- os << "Batman " << this->name () << " with " <<
- this->wing_span () << "m wing span" << std::endl;
- }
-
- // Explicitly instantiate batman_impl class template for batman_base.
- //
- template class batman_impl<batman_base>;
-}
diff --git a/xsd/examples/cxx/tree/custom/taxonomy/people-custom.hxx b/xsd/examples/cxx/tree/custom/taxonomy/people-custom.hxx
deleted file mode 100644
index a60edc8..0000000
--- a/xsd/examples/cxx/tree/custom/taxonomy/people-custom.hxx
+++ /dev/null
@@ -1,96 +0,0 @@
-// file : examples/cxx/tree/custom/taxonomy/people-custom.hxx
-// copyright : not copyrighted - public domain
-
-// Do not include this file directly, use people.hxx instead. This
-// file is included into generated people.hxx so we do not need to
-// guard against multiple inclusions.
-//
-
-#include <iosfwd> // std::ostream
-
-// Include people-fwd.hxx here so that we can refer to the generated
-// types.
-//
-#include "people-fwd.hxx"
-
-namespace people
-{
- //
- //
- template <typename base>
- class person_impl: public base
- {
- public:
- person_impl (const xml_schema::string& name);
-
- person_impl (const xercesc::DOMElement&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- person_impl (const person_impl&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- virtual person_impl*
- _clone (xml_schema::flags = 0,
- xml_schema::container* = 0) const;
-
- public:
- virtual void
- print (std::ostream&) const;
- };
-
-
- //
- //
- template <typename base>
- class superman_impl: public base
- {
- public:
- superman_impl (const xml_schema::string& name, bool can_fly);
-
- superman_impl (const xercesc::DOMElement&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- superman_impl (const superman_impl&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- virtual superman_impl*
- _clone (xml_schema::flags = 0,
- xml_schema::container* = 0) const;
-
- public:
- virtual void
- print (std::ostream&) const;
- };
-
-
- //
- //
- template <typename base>
- class batman_impl: public base
- {
- public:
- batman_impl (const xml_schema::string& name,
- bool can_fly,
- unsigned int wing_span);
-
- batman_impl (const xercesc::DOMElement&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- batman_impl (const batman_impl&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- virtual batman_impl*
- _clone (xml_schema::flags = 0,
- xml_schema::container* = 0) const;
-
- public:
- virtual void
- print (std::ostream&) const;
- };
-}
diff --git a/xsd/examples/cxx/tree/custom/taxonomy/people.xml b/xsd/examples/cxx/tree/custom/taxonomy/people.xml
deleted file mode 100644
index b53b576..0000000
--- a/xsd/examples/cxx/tree/custom/taxonomy/people.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/taxonomy/people.xml
-copyright : not copyrighted - public domain
-
--->
-
-<ppl:catalog xmlns:ppl="http://www.codesynthesis.com/people"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/people people.xsd">
-
- <person>
- <name>Joe Dirt</name>
- </person>
-
- <person xsi:type="ppl:superman" can-fly="false">
- <name>James "007" Bond</name>
- </person>
-
- <person xsi:type="ppl:batman" can-fly="true" wing-span="10">
- <name>Bruce Wayne</name>
- </person>
-
-</ppl:catalog>
diff --git a/xsd/examples/cxx/tree/custom/taxonomy/people.xsd b/xsd/examples/cxx/tree/custom/taxonomy/people.xsd
deleted file mode 100644
index 1181270..0000000
--- a/xsd/examples/cxx/tree/custom/taxonomy/people.xsd
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/taxonomy/people.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:ppl="http://www.codesynthesis.com/people"
- targetNamespace="http://www.codesynthesis.com/people">
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="superman">
- <xsd:complexContent>
- <xsd:extension base="ppl:person">
- <xsd:attribute name="can-fly" type="xsd:boolean" use="required"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="batman">
- <xsd:complexContent>
- <xsd:extension base="ppl:superman">
- <xsd:attribute name="wing-span" type="xsd:unsignedInt" use="required"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="person" type="ppl:person" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="catalog" type="ppl:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/custom/wildcard/README b/xsd/examples/cxx/tree/custom/wildcard/README
deleted file mode 100644
index 70eaea4..0000000
--- a/xsd/examples/cxx/tree/custom/wildcard/README
+++ /dev/null
@@ -1,45 +0,0 @@
-This example shows how to use type customization to parse and serialize
-a specific attribute that is matched by a wildcard (anyAttribute). The
-example achieves this by customizing the type to include the data
-members and accessors/modifiers that represent the attribute as well as
-the parsing constructor and serialization operator where the attribute
-value is extracted from and inserted back to DOM, respectively. For
-more information on the C++/Tree mapping customization see the C++/Tree
-Mapping Customization Guide[1].
-
-[1] http://wiki.codesynthesis.com/Tree/Customization_guide
-
-The example consists of the following files:
-
-wildcard.xsd
- XML Schema definition for simple data type and element.
-
-wildcard.xml
- Sample XML instance document.
-
-wildcard.hxx
-wildcard.ixx
-wildcard.cxx
- C++ types that represent the given vocabulary, a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model, and a set of serialization functions that convert the
- object model back to XML. These are generated by XSD from wildcard.xsd
- with the --custom-type option in order to customize the data type.
-
-wildcard-custom.hxx
- Header file which defines our own data class by inheriting from the
- generated data_base. It is included at the end of wildcard.hxx using
- the --hxx-epilogue option.
-
-wildcard-custom.cxx
- Source file which contains the implementation of our data class.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input file. It then prints
- the data to STDERR, including the extra attribute. Finally, the driver
- serializes the object model back to XML.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver wildcard.xml
diff --git a/xsd/examples/cxx/tree/custom/wildcard/driver.cxx b/xsd/examples/cxx/tree/custom/wildcard/driver.cxx
deleted file mode 100644
index d29f125..0000000
--- a/xsd/examples/cxx/tree/custom/wildcard/driver.cxx
+++ /dev/null
@@ -1,47 +0,0 @@
-// file : examples/cxx/tree/custom/wildcard/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <iostream>
-
-#include "wildcard.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " wildcard.xml" << endl;
- return 1;
- }
-
- try
- {
- using namespace wildcard;
-
- // Parse.
- //
- std::auto_ptr<data> d (data_ (argv[1]));
-
- // Print.
- //
- cerr << *d << endl;
-
- // Serialize.
- //
- xml_schema::namespace_infomap map;
-
- map["wc"].name = "http://www.codesynthesis.com/wildcard";
- map["wc"].schema = "wildcard.xsd";
-
- data_ (std::cout, *d, map);
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/wildcard/makefile b/xsd/examples/cxx/tree/custom/wildcard/makefile
deleted file mode 100644
index 55e94b0..0000000
--- a/xsd/examples/cxx/tree/custom/wildcard/makefile
+++ /dev/null
@@ -1,116 +0,0 @@
-# file : examples/cxx/tree/custom/wildcard/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := wildcard.xsd
-cxx := driver.cxx wildcard-custom.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-
-# We have to double-escape '#' because the message function
-# (which is used in command scripts) expands things twice.
-#
-$(gen): xsd_options += \
---generate-inline \
---generate-ostream \
---generate-serialization \
---custom-type data=/data_base \
---hxx-epilogue '\#include "wildcard-custom.hxx"'
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/wildcard.xsd,$(install_doc_dir)/xsd/$(path)/wildcard.xsd)
- $(call install-data,$(src_base)/wildcard.xml,$(install_doc_dir)/xsd/$(path)/wildcard.xml)
- $(call install-data,$(src_base)/wildcard-custom.hxx,$(install_doc_dir)/xsd/$(path)/wildcard-custom.hxx)
- $(call install-data,$(src_base)/wildcard-custom.cxx,$(install_doc_dir)/xsd/$(path)/wildcard-custom.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/wildcard.xsd,$(dist_prefix)/$(path)/wildcard.xsd)
- $(call install-data,$(src_base)/wildcard.xml,$(dist_prefix)/$(path)/wildcard.xml)
- $(call install-data,$(src_base)/wildcard-custom.hxx,$(dist_prefix)/$(path)/wildcard-custom.hxx)
- $(call install-data,$(src_base)/wildcard-custom.cxx,$(dist_prefix)/$(path)/wildcard-custom.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/custom/wildcard/wildcard-custom.cxx b/xsd/examples/cxx/tree/custom/wildcard/wildcard-custom.cxx
deleted file mode 100644
index 006f93a..0000000
--- a/xsd/examples/cxx/tree/custom/wildcard/wildcard-custom.cxx
+++ /dev/null
@@ -1,84 +0,0 @@
-// file : examples/cxx/tree/custom/wildcard/wildcard-custom.cxx
-// copyright : not copyrighted - public domain
-
-#include <ostream>
-
-// Include wildcard.hxx instead of wildcard-custom.hxx here.
-//
-#include "wildcard.hxx"
-
-namespace wildcard
-{
- data::
- data (const xml_schema::string& d)
- : data_base (d), scope_present_ (false)
- {
- }
-
- data::
- data (const xercesc::DOMElement& e,
- xml_schema::flags f,
- xml_schema::container* c)
- : data_base (e, f, c), scope_present_ (false)
- {
- // Check if we've got the scope attribute.
- //
- namespace xml = xsd::cxx::xml;
- xml::string name ("scope");
-
- if (e.hasAttribute (name.c_str ()))
- {
- scope (xml::transcode<char> (e.getAttribute (name.c_str ())));
- }
- }
-
- data::
- data (const data& d,
- xml_schema::flags f,
- xml_schema::container* c)
- : data_base (d, f, c),
- scope_present_ (d.scope_present_),
- scope_ (d.scope_)
- {
- }
-
- data* data::
- _clone (xml_schema::flags f, xml_schema::container* c) const
- {
- return new data (*this, f, c);
- }
-
- void
- operator<< (xercesc::DOMElement& e, const data& x)
- {
- // Use our base to serialize data and id.
- //
- const data_base& b (x);
- e << b;
-
- // Add the scope attribute if present.
- //
- if (x.scope_present ())
- {
- namespace xml = xsd::cxx::xml;
- xml::string name ("scope");
- xml::string value (x.scope ());
-
- e.setAttribute (name.c_str (), value.c_str ());
- }
- }
-
- std::ostream&
- operator<< (std::ostream& os, const data& x)
- {
- // Use our base to print date and id.
- //
- const data_base& b (x);
- os << b;
-
- if (x.scope_present ())
- os << std::endl << "scope: " << x.scope ();
-
- return os;
- }
-}
diff --git a/xsd/examples/cxx/tree/custom/wildcard/wildcard-custom.hxx b/xsd/examples/cxx/tree/custom/wildcard/wildcard-custom.hxx
deleted file mode 100644
index 0546d38..0000000
--- a/xsd/examples/cxx/tree/custom/wildcard/wildcard-custom.hxx
+++ /dev/null
@@ -1,66 +0,0 @@
-// file : examples/cxx/tree/custom/wildcard/wildcard-custom.hxx
-// copyright : not copyrighted - public domain
-
-// Do not include this file directly, use wildcard.hxx instead. This
-// file is included into generated wildcard.hxx so we do not need to
-// guard against multiple inclusions.
-//
-
-namespace wildcard
-{
- class data: public data_base
- {
- // Standard constructors.
- //
- public:
- data (const xml_schema::string&);
-
- data (const xercesc::DOMElement&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- data (const data&,
- xml_schema::flags = 0,
- xml_schema::container* = 0);
-
- virtual data*
- _clone (xml_schema::flags = 0,
- xml_schema::container* = 0) const;
-
- // Our customizations.
- //
- public:
- bool
- scope_present () const
- {
- return scope_present_;
- }
-
- const xml_schema::string&
- scope () const
- {
- return scope_;
- }
-
- void
- scope (const xml_schema::string& s)
- {
- scope_present_ = true;
- scope_ = s;
- }
-
- private:
- bool scope_present_;
- xml_schema::string scope_;
- };
-
- // Serialization operator.
- //
- void
- operator<< (xercesc::DOMElement&, const data&);
-
- // std::ostream insertion operator.
- //
- std::ostream&
- operator<< (std::ostream&, const data&);
-}
diff --git a/xsd/examples/cxx/tree/custom/wildcard/wildcard.xml b/xsd/examples/cxx/tree/custom/wildcard/wildcard.xml
deleted file mode 100644
index 80f215a..0000000
--- a/xsd/examples/cxx/tree/custom/wildcard/wildcard.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/wildcard/wildcard.xml
-copyright : not copyrighted - public domain
-
--->
-
-<wc:data xmlns:wc="http://www.codesynthesis.com/wildcard"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/wildcard wildcard.xsd"
- id="1"
- scope="global">abc123</wc:data>
diff --git a/xsd/examples/cxx/tree/custom/wildcard/wildcard.xsd b/xsd/examples/cxx/tree/custom/wildcard/wildcard.xsd
deleted file mode 100644
index 1a32b1e..0000000
--- a/xsd/examples/cxx/tree/custom/wildcard/wildcard.xsd
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/custom/wildcard/wildcard.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:wc="http://www.codesynthesis.com/wildcard"
- targetNamespace="http://www.codesynthesis.com/wildcard">
-
- <xsd:complexType name="data">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="id" type="xsd:unsignedInt"/>
- <xsd:anyAttribute namespace="##any" processContents="skip"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:element name="data" type="wc:data"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/embedded/README b/xsd/examples/cxx/tree/embedded/README
deleted file mode 100644
index 266a8ff..0000000
--- a/xsd/examples/cxx/tree/embedded/README
+++ /dev/null
@@ -1,48 +0,0 @@
-This example shows how to embed the binary representation of the schema
-grammar into an application and then use it with the C++/Tree mapping to
-parse and validate XML documents. This example is similar to the 'caching'
-example except that it loads the binary representation of the schemas
-embedded into the application instead of pre-parsing external schema files.
-
-The example consists of the following files:
-
-xsdbin.cxx
- Tool for converting one or more XML Schema files to the compressed binary
- representation. The output is written as a pair of C++ source files
- containing the array with the binary data. Use the --help option to see
- the tool's usage information.
-
-library.xsd
- XML Schema which describes a library of books.
-
-library.xml
- Sample XML instance document.
-
-library.hxx
-library.cxx
- C++ types that represent the given vocabulary and a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model. These are generated by the XSD compiler from library.xsd.
-
-library-schema.hxx
-library-schema.cxx
- Binary representation of the library.xsd schema. These files are generated
- by the xsdbin tool.
-
-grammar-input-stream.hxx
-grammar-input-stream.cxx
- Input stream implementation with the special-purpose schema grammar
- decompression algorithm. It is used to load the binary schema representation
- produced by the xsdbin tool.
-
-driver.cxx
- Driver for the example. It first sets up the Xerces-C++ DOM parser and
- loads the embedded binary schema grammar for validation. It then performs
- ten iterations that parse the input file to a DOM document using the DOM
- parser and call one of the parsing functions that constructs the object
- model from this DOM document. On each iteration the driver prints a number
- of books in the object model to STDERR.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver library.xml
diff --git a/xsd/examples/cxx/tree/embedded/driver.cxx b/xsd/examples/cxx/tree/embedded/driver.cxx
deleted file mode 100644
index 5ceafa4..0000000
--- a/xsd/examples/cxx/tree/embedded/driver.cxx
+++ /dev/null
@@ -1,183 +0,0 @@
-// file : examples/cxx/tree/embedded/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <fstream>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/XMLUniDefs.hpp> // chLatin_*
-#include <xercesc/util/PlatformUtils.hpp>
-#include <xercesc/validators/common/Grammar.hpp> // xercesc::Grammar
-#include <xercesc/framework/Wrapper4InputSource.hpp>
-
-#include <xercesc/framework/XMLGrammarPoolImpl.hpp>
-
-#include <xsd/cxx/xml/string.hxx>
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-#include <xsd/cxx/xml/sax/std-input-source.hxx>
-
-#include <xsd/cxx/tree/error-handler.hxx>
-
-#include "library.hxx"
-#include "library-schema.hxx"
-#include "grammar-input-stream.hxx"
-
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " library.xml" << endl;
- return 1;
- }
-
- int r (0);
-
- // We need to initialize the Xerces-C++ runtime because we
- // are doing the XML-to-DOM parsing ourselves.
- //
- xercesc::XMLPlatformUtils::Initialize ();
-
- try
- {
- using namespace xercesc;
- namespace xml = xsd::cxx::xml;
- namespace tree = xsd::cxx::tree;
-
- // Create and load the grammar pool.
- //
- MemoryManager* mm (XMLPlatformUtils::fgMemoryManager);
-
- auto_ptr<XMLGrammarPool> gp (new XMLGrammarPoolImpl (mm));
-
- try
- {
- grammar_input_stream is (library_schema, sizeof (library_schema));
- gp->deserializeGrammars(&is);
- }
- catch(const XSerializationException& e)
- {
- cerr << "unable to load schema: " <<
- xml::transcode<char> (e.getMessage ()) << endl;
- return 1;
- }
-
- // Lock the grammar pool. This is necessary if we plan to use the
- // same grammar pool in multiple threads (this way we can reuse the
- // same grammar in multiple parsers). Locking the pool disallows any
- // modifications to the pool, such as an attempt by one of the threads
- // to cache additional schemas.
- //
- gp->lockPool ();
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- const XMLCh ls_id [] = {chLatin_L, chLatin_S, chNull};
-
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- xml::dom::auto_ptr<DOMLSParser> parser (
- impl->createLSParser (
- DOMImplementationLS::MODE_SYNCHRONOUS, 0, mm, gp.get ()));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- // Discard comment nodes in the document.
- //
- conf->setParameter (XMLUni::fgDOMComments, false);
-
- // Enable datatype normalization.
- //
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
-
- // Do not create EntityReference nodes in the DOM tree. No
- // EntityReference nodes will be created, only the nodes
- // corresponding to their fully expanded substitution text
- // will be created.
- //
- conf->setParameter (XMLUni::fgDOMEntities, false);
-
- // Perform namespace processing.
- //
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
-
- // Do not include ignorable whitespace in the DOM tree.
- //
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
-
- // Enable validation.
- //
- conf->setParameter (XMLUni::fgDOMValidate, true);
- conf->setParameter (XMLUni::fgXercesSchema, true);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
-
- // Use the loaded grammar during parsing.
- //
- conf->setParameter (XMLUni::fgXercesUseCachedGrammarInParse, true);
-
- // Disable loading schemas via other means (e.g., schemaLocation).
- //
- conf->setParameter (XMLUni::fgXercesLoadSchema, false);
-
- // We will release the DOM document ourselves.
- //
- conf->setParameter (XMLUni::fgXercesUserAdoptsDOMDocument, true);
-
- // Set error handler.
- //
- tree::error_handler<char> eh;
- xml::dom::bits::error_handler_proxy<char> ehp (eh);
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- // Parse XML documents.
- //
- for (unsigned long i (0); i < 10; ++i)
- {
- ifstream ifs;
- ifs.exceptions (ifstream::badbit | ifstream::failbit);
- ifs.open (argv[1]);
-
- // Wrap the standard input stream.
- //
- xml::sax::std_input_source isrc (ifs, argv[1]);
- Wrapper4InputSource wrap (&isrc, false);
-
- // Parse XML to DOM.
- //
- xml_schema::dom::auto_ptr<DOMDocument> doc (parser->parse (&wrap));
-
- eh.throw_if_failed<xml_schema::parsing> ();
-
- // Parse DOM to the object model.
- //
- auto_ptr<library::catalog> c (library::catalog_ (*doc));
-
- cerr << "catalog with " << c->book ().size () << " books" << endl;
- }
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- r = 1;
- }
-
- xercesc::XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/embedded/grammar-input-stream.cxx b/xsd/examples/cxx/tree/embedded/grammar-input-stream.cxx
deleted file mode 100644
index f3a6d52..0000000
--- a/xsd/examples/cxx/tree/embedded/grammar-input-stream.cxx
+++ /dev/null
@@ -1,95 +0,0 @@
-// file : examples/cxx/tree/embedded/grammar-input-stream.cxx
-// copyright : not copyrighted - public domain
-
-#include <cassert>
-#include "grammar-input-stream.hxx"
-
-grammar_input_stream::
-grammar_input_stream (const XMLByte* data, std::size_t size)
- : data_ (data),
- size_ (size),
- pos_ (0),
- vpos_ (0),
- cseq_ (0),
- add_zero_ (false)
-{
-}
-
-XMLFilePos grammar_input_stream::
-curPos () const
-{
- return static_cast<XMLFilePos> (vpos_);
-}
-
-XMLSize_t grammar_input_stream::
-readBytes (XMLByte* const buf, const XMLSize_t size)
-{
- std::size_t i (0);
-
- // Add a zero from the alternating sequence if it didn't
- // fit on the previous read.
- //
- if (add_zero_)
- {
- buf[i++] = 0;
- add_zero_ = false;
- }
-
- // If have an unfinished sequential sequence, output it now.
- //
- if (cseq_ != 0 && !alt_)
- {
- for (; cseq_ != 0 && i < size; --cseq_)
- buf[i++] = 0;
- }
-
- for (; i < size && pos_ < size_;)
- {
- XMLByte b = buf[i++] = data_[pos_++];
-
- // See if we are in a compression sequence.
- //
- if (cseq_ != 0)
- {
- if (i < size)
- buf[i++] = 0;
- else
- add_zero_ = true; // Add it on the next read.
-
- cseq_--;
- continue;
- }
-
- // If we are not in a compression sequence and this byte is
- // not zero then we are done.
- //
- if (b != 0)
- continue;
-
- // We have a zero.
- //
- assert (pos_ < size_); // There has to be another byte.
- unsigned char v (static_cast<unsigned char> (data_[pos_++]));
- alt_ = (v & 128) != 0;
- cseq_ = v & 127;
-
- // If it is a sequential sequence, output as many zeros as
- // we can.
- //
- if (!alt_)
- {
- for (; cseq_ != 0 && i < size; --cseq_)
- buf[i++] = 0;
- }
- }
-
- vpos_ += i;
-
- return static_cast<XMLSize_t> (i);
-}
-
-const XMLCh* grammar_input_stream::
-getContentType () const
-{
- return 0;
-}
diff --git a/xsd/examples/cxx/tree/embedded/grammar-input-stream.hxx b/xsd/examples/cxx/tree/embedded/grammar-input-stream.hxx
deleted file mode 100644
index ed12b7c..0000000
--- a/xsd/examples/cxx/tree/embedded/grammar-input-stream.hxx
+++ /dev/null
@@ -1,40 +0,0 @@
-// file : examples/cxx/tree/embedded/grammar-input-stream.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef GRAMMAR_INPUT_STREAM_HXX
-#define GRAMMAR_INPUT_STREAM_HXX
-
-#include <cstddef>
-#include <xercesc/util/BinInputStream.hpp>
-
-// Memory buffer input stream with the special-purpose schema
-// grammar decompression.
-//
-class grammar_input_stream: public xercesc::BinInputStream
-{
-public :
- grammar_input_stream (const XMLByte* data, std::size_t size);
-
- virtual XMLFilePos
- curPos () const;
-
- virtual XMLSize_t
- readBytes (XMLByte* const buf, const XMLSize_t size);
-
- virtual const XMLCh*
- getContentType () const;
-
-private :
- const XMLByte* data_;
- std::size_t size_;
- std::size_t pos_;
- std::size_t vpos_;
-
- // Compression data.
- //
- size_t cseq_; // Number of bytes left in a compression sequence.
- bool alt_; // Alternating or sequential sequence.
- bool add_zero_; // Add a zero on the next read.
-};
-
-#endif // GRAMMAR_INPUT_STREAM_HXX
diff --git a/xsd/examples/cxx/tree/embedded/library.xml b/xsd/examples/cxx/tree/embedded/library.xml
deleted file mode 100644
index f57c042..0000000
--- a/xsd/examples/cxx/tree/embedded/library.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/embedded/library.xml
-copyright : not copyrighted - public domain
-
--->
-
-<lib:catalog xmlns:lib="http://www.codesynthesis.com/library"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/library library.xsd">
-
- <book id="MM" available="false">
- <isbn>0679760806</isbn>
- <title>The Master and Margarita</title>
- <genre>fiction</genre>
-
- <author recommends="WP">
- <name>Mikhail Bulgakov</name>
- <born>1891-05-15</born>
- <died>1940-03-10</died>
- </author>
- </book>
-
-
- <book id="WP">
- <isbn>0679600841</isbn>
- <title>War and Peace</title>
- <genre>history</genre>
-
- <author recommends="CP">
- <name>Leo Tolstoy</name>
- <born>1828-09-09</born>
- <died>1910-11-20</died>
- </author>
- </book>
-
-
- <book id="CP" available="false">
- <isbn>0679420290</isbn>
- <title>Crime and Punishment</title>
- <genre>philosophy</genre>
-
- <author>
- <name>Fyodor Dostoevsky</name>
- <born>1821-11-11</born>
- <died>1881-02-09</died>
- </author>
- </book>
-
-</lib:catalog>
diff --git a/xsd/examples/cxx/tree/embedded/library.xsd b/xsd/examples/cxx/tree/embedded/library.xsd
deleted file mode 100644
index 6a9ad01..0000000
--- a/xsd/examples/cxx/tree/embedded/library.xsd
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/embedded/library.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:lib="http://www.codesynthesis.com/library"
- targetNamespace="http://www.codesynthesis.com/library">
-
- <xsd:simpleType name="isbn">
- <xsd:restriction base="xsd:unsignedInt"/>
- </xsd:simpleType>
-
- <xsd:complexType name="title">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="lang" type="xsd:language"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:simpleType name="genre">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="romance"/>
- <xsd:enumeration value="fiction"/>
- <xsd:enumeration value="horror"/>
- <xsd:enumeration value="history"/>
- <xsd:enumeration value="philosophy"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="born" type="xsd:date"/>
- <xsd:element name="died" type="xsd:date" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="author">
- <xsd:complexContent>
- <xsd:extension base="lib:person">
- <xsd:attribute name="recommends" type="xsd:IDREF" xse:refType="lib:book"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="book">
- <xsd:sequence>
- <xsd:element name="isbn" type="lib:isbn"/>
- <xsd:element name="title" type="lib:title"/>
- <xsd:element name="genre" type="lib:genre"/>
- <xsd:element name="author" type="lib:author" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="available" type="xsd:boolean" default="true"/>
- <xsd:attribute name="id" type="xsd:ID" use="required"/>
- </xsd:complexType>
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="book" type="lib:book" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="catalog" type="lib:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/embedded/makefile b/xsd/examples/cxx/tree/embedded/makefile
deleted file mode 100644
index d0fdc33..0000000
--- a/xsd/examples/cxx/tree/embedded/makefile
+++ /dev/null
@@ -1,123 +0,0 @@
-# file : examples/cxx/tree/embedded/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := library.xsd
-cxx := driver.cxx grammar-input-stream.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o) \
-$(xsd:.xsd=-schema.o))
-obj2 := $(out_base)/xsdbin.o
-dep := $(obj:.o=.o.d) $(obj2:.o=.o.d)
-
-driver := $(out_base)/driver
-xsdbin := $(out_base)/xsdbin
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-$(xsdbin): $(obj2) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(obj2) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-genf += $(xsd:.xsd=-schema.hxx) $(xsd:.xsd=-schema.cxx)
-
-.PRECIOUS: $(out_base)/%-schema.hxx $(out_base)/%-schema.cxx
-$(out_base)/%: xsdbin := $(xsdbin)
-$(out_base)/%-schema.hxx $(out_base)/%-schema.cxx: $(src_base)/%.xsd $(xsdbin)
- $(call message,xsdbin $<,$(xsdbin) --output-dir $(out_base) $<)
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/xsdbin.cxx,$(install_doc_dir)/xsd/$(path)/xsdbin.cxx)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/grammar-input-stream.hxx,$(install_doc_dir)/xsd/$(path)/grammar-input-stream.hxx)
- $(call install-data,$(src_base)/grammar-input-stream.cxx,$(install_doc_dir)/xsd/$(path)/grammar-input-stream.cxx)
- $(call install-data,$(src_base)/library.xsd,$(install_doc_dir)/xsd/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(install_doc_dir)/xsd/$(path)/library.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/xsdbin.cxx,$(dist_prefix)/$(path)/xsdbin.cxx)
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/grammar-input-stream.hxx,$(dist_prefix)/$(path)/grammar-input-stream.hxx)
- $(call install-data,$(src_base)/grammar-input-stream.cxx,$(dist_prefix)/$(path)/grammar-input-stream.cxx)
- $(call install-data,$(src_base)/library.xsd,$(dist_prefix)/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(dist_prefix)/$(path)/library.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): |$(out_root)/.dist-pre
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
- # Note: solution files are not automatically generated.
-
-# Clean.
-#
-$(clean): files := $(out_base)/$(xsd:.xsd=-schema.?xx)
-$(clean): $(driver).o.clean $(xsdbin).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(obj2)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
- $(call message,rm '$(out_base)/*-schema.?xx',rm -f $(files))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver xsdbin $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-$(call include,$(bld_root)/install.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/embedded/xsdbin.cxx b/xsd/examples/cxx/tree/embedded/xsdbin.cxx
deleted file mode 100644
index 656b830..0000000
--- a/xsd/examples/cxx/tree/embedded/xsdbin.cxx
+++ /dev/null
@@ -1,494 +0,0 @@
-// file : examples/cxx/tree/embedded/xsdbin.cxx
-// copyright : not copyrighted - public domain
-
-// This program loads the XML Schema file(s) and converts them to
-// the Xerces-C++ binary schema format which can then be embedded
-// into C++ programs and used to validate XML documents. The output
-// is written as a C++ source file containing the array with the
-// binary data.
-//
-
-#include <string>
-#include <memory> // std::auto_ptr
-#include <cstddef> // std::size_t
-#include <fstream>
-#include <iostream>
-
-#include <xercesc/util/XMLUni.hpp>
-#include <xercesc/util/XMLString.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-#include <xercesc/util/XercesVersion.hpp>
-
-#include <xercesc/internal/BinMemOutputStream.hpp>
-#include <xercesc/validators/common/Grammar.hpp>
-
-#include <xercesc/sax/ErrorHandler.hpp>
-#include <xercesc/sax/SAXParseException.hpp>
-#include <xercesc/sax2/SAX2XMLReader.hpp>
-#include <xercesc/sax2/XMLReaderFactory.hpp>
-
-#include <xercesc/framework/XMLGrammarPoolImpl.hpp>
-
-using namespace std;
-using namespace xercesc;
-
-class error_handler: public ErrorHandler
-{
-public:
- error_handler ()
- : failed_ (false)
- {
- }
-
- bool
- failed () const
- {
- return failed_;
- }
-
- enum severity {s_warning, s_error, s_fatal};
-
- virtual void
- warning (const SAXParseException&);
-
- virtual void
- error (const SAXParseException&);
-
- virtual void
- fatalError (const SAXParseException&);
-
- virtual void
- resetErrors ()
- {
- failed_ = false;
- }
-
- void
- handle (const SAXParseException&, severity);
-
-private:
- bool failed_;
-};
-
-void
-cxx_escape (string&);
-
-int
-main (int argc, char* argv[])
-{
- const char* hxx_suffix = "-schema.hxx";
- const char* cxx_suffix = "-schema.cxx";
-
- string name;
- string base;
- string outdir;
-
- struct usage
- {
- usage (bool e = true): error (e) {}
- bool error;
- };
-
- int argi (1);
- bool multi_import (true);
- bool verbose (false);
-
- try
- {
- for (; argi < argc; ++argi)
- {
- string a (argv[argi]);
-
- if (a == "--help")
- throw usage (false);
- else if (a == "--verbose")
- {
- verbose = true;
- }
- else if (a == "--hxx-suffix")
- {
- if (++argi >= argc)
- throw usage ();
-
- hxx_suffix = argv[argi];
- }
- else if (a == "--cxx-suffix")
- {
- if (++argi >= argc)
- throw usage ();
-
- cxx_suffix = argv[argi];
- }
- else if (a == "--output-dir")
- {
- if (++argi >= argc)
- throw usage ();
-
- outdir = argv[argi];
- }
- else if (a == "--array-name")
- {
- if (++argi >= argc)
- throw usage ();
-
- name = argv[argi];
- }
- else if (a == "--disable-multi-import")
- {
- multi_import = false;
- }
- else
- break;
- }
-
- if (argi >= argc)
- {
- cerr << "no input file specified" << endl;
- throw usage ();
- }
-
- base = argv[argi];
- }
- catch (usage const& e)
- {
- ostream& o (e.error ? cerr : cout);
-
- o << "Usage: " << argv[0] << " [options] <files>" << endl
- << "Options:" << endl
- << " --help Print usage information and exit." << endl
- << " --verbose Print progress information." << endl
- << " --output-dir <dir> Write generated files to <dir>." << endl
- << " --hxx-suffix <sfx> Header file suffix instead of '-schema.hxx'." << endl
- << " --cxx-suffix <sfx> Source file suffix instead of '-schema.cxx'." << endl
- << " --array-name <name> Binary data array name." << endl
- << " --disable-multi-import Disable multiple import support." << endl
- << endl;
-
- return e.error ? 0 : 1;
- }
-
- XMLPlatformUtils::Initialize ();
-
- {
- MemoryManager* mm (XMLPlatformUtils::fgMemoryManager);
-
- auto_ptr<XMLGrammarPool> gp (new XMLGrammarPoolImpl (mm));
-
- // Load the schemas into grammar pool.
- //
- {
- auto_ptr<SAX2XMLReader> parser (
- XMLReaderFactory::createXMLReader (mm, gp.get ()));
-
- parser->setFeature (XMLUni::fgSAX2CoreNameSpaces, true);
- parser->setFeature (XMLUni::fgSAX2CoreNameSpacePrefixes, true);
- parser->setFeature (XMLUni::fgSAX2CoreValidation, true);
- parser->setFeature (XMLUni::fgXercesSchema, true);
- parser->setFeature (XMLUni::fgXercesSchemaFullChecking, true);
- parser->setFeature (XMLUni::fgXercesValidationErrorAsFatal, true);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- parser->setFeature (XMLUni::fgXercesHandleMultipleImports, multi_import);
-#endif
-
- error_handler eh;
- parser->setErrorHandler (&eh);
-
- for (; argi < argc; ++argi)
- {
- if (verbose)
- cerr << "loading " << argv[argi] << endl;
-
- if (!parser->loadGrammar (argv[argi], Grammar::SchemaGrammarType, true))
- {
- cerr << argv[argi] << ": error: unable to load" << endl;
- return 1;
- }
-
- if (eh.failed ())
- return 1;
- }
- }
-
- // Get the binary representation.
- //
- BinMemOutputStream data;
-
- try
- {
- gp->serializeGrammars (&data);
- }
- catch (const XSerializationException& e)
- {
- char* msg (XMLString::transcode (e.getMessage ()));
- cerr << "error: " << msg << endl;
- XMLString::release (&msg);
- return 1;
- }
-
- size_t n (static_cast<size_t> (data.curPos ()));
- const unsigned char* buf (
- static_cast<const unsigned char*> (data.getRawBuffer ()));
-
- if (verbose)
- cerr << "uncomressed data size " << n << " bytes" << endl;
-
- // Compress zeros.
- //
- size_t cn (0);
- unsigned char* cbuf = new unsigned char[n];
-
- size_t cseq (0); // Number of bytes left in a compression sequence.
- bool alt (false); // Alternating or sequential sequence.
-
- for (size_t i (0); i < n;)
- {
- unsigned char v (buf[i++]);
-
- // See if we are in a compression sequence.
- //
- if (cseq != 0)
- {
- // See if this byte needs to be copied.
- //
- if (alt && cseq % 2 == 0)
- cbuf[cn++] = v;
-
- cseq--;
- continue;
- }
-
- // If we are not in a compression sequence and this byte is
- // not zero then simply copy it.
- //
- if (v != 0)
- {
- cbuf[cn++] = v;
- continue;
- }
-
- // We have a zero.
- //
- cbuf[cn++] = 0;
-
- // See if we can start a new compression sequence.
- //
- if (i < n)
- {
- if (buf[i] == 0)
- {
- // Sequential sequence. See how far it runs.
- //
- alt = false;
-
- for (cseq = 1; cseq < 127 && cseq + i < n; cseq++)
- if (buf[cseq + i] != 0)
- break;
- }
- else if (i + 1 < n && buf[i + 1] == 0)
- {
- // Alternating sequence. See how far it runs.
- //
- alt = true;
-
- for (cseq = 1; cseq < 127 && cseq * 2 + i + 1 < n; cseq++)
- {
- if (buf[cseq * 2 + i + 1] != 0)
- break;
-
- // For longer sequences prefer sequential to alternating.
- //
- if (cseq > 2 &&
- buf[cseq * 2 + i] == 0 &&
- buf[(cseq - 1) * 2 + i] == 0 &&
- buf[(cseq - 2) * 2 + i] == 0)
- {
- cseq -= 2;
- break;
- }
- }
-
- cseq *= 2;
- }
- }
-
- if (cseq != 0)
- {
- cbuf[cn++] = static_cast<unsigned char> (
- alt ? (128 | cseq / 2) : cseq);
- }
- else
- cbuf[cn++] = 0;
- }
-
- if (verbose)
- cerr << "comressed data size " << cn << " bytes" << endl;
-
- buf = cbuf;
- n = cn;
-
- // Figure out the file names.
- //
- string::size_type p (base.rfind ('/')), p1 (base.rfind ('\\'));
-
- if (p1 != string::npos && p1 > p)
- p = p1;
-
- if (p != string::npos)
- base = string (base, p + 1);
-
- p = base.rfind ('.');
-
- if (p != string::npos)
- base.resize (p);
-
- string hxx (base + hxx_suffix);
- string cxx (base + cxx_suffix);
-
- if (!outdir.empty ())
- {
-#if defined (WIN32) || defined (__WIN32__)
- hxx = outdir + '\\' + hxx;
- cxx = outdir + '\\' + cxx;
-#else
- hxx = outdir + '/' + hxx;
- cxx = outdir + '/' + cxx;
-#endif
- }
-
- if (name.empty ())
- {
- name = base + "_schema";
- cxx_escape (name);
- }
-
- // Write header.
- //
- {
- ofstream os (hxx.c_str ());
-
- if (!os.is_open ())
- {
- cerr << hxx << ": error: unable to open" << endl;
- return 1;
- }
-
- os << "// Automatically generated. Do not edit." << endl
- << "//" << endl
- << endl
- << "#include <xercesc/util/XercesDefs.hpp>" << endl
- << endl
- << "extern const XMLByte " << name << "[" << n << "UL];" << endl;
- }
-
- {
- ofstream os (cxx.c_str ());
-
- if (!os.is_open ())
- {
- cerr << cxx << ": error: unable to open" << endl;
- return 1;
- }
-
- os << "// Automatically generated. Do not edit." << endl
- << "//" << endl
- << endl
- << "#include <xercesc/util/XercesDefs.hpp>" << endl
- << "#include <xercesc/util/XercesVersion.hpp>" << endl
- << endl
- << "#if XERCES_GRAMMAR_SERIALIZATION_LEVEL != " <<
- XERCES_GRAMMAR_SERIALIZATION_LEVEL << endl
- << "# error incompatible Xerces-C++ version detected" << endl
- << "#endif" << endl
- << endl
- << "extern const XMLByte " << name << "[" << n << "UL] =" << endl
- << "{";
-
- for (size_t i (0); i < n; ++i)
- {
- if (i != 0)
- os << ',';
-
- os << (i % 12 == 0 ? "\n " : " ") << "0x";
- os.width (2);
- os.fill ('0');
- os << hex << static_cast<unsigned short> (buf[i]);
- }
-
- os << endl
- << "};" << endl
- << endl;
- }
-
- delete[] cbuf;
- }
-
- XMLPlatformUtils::Terminate ();
-}
-
-void
-cxx_escape (string& s)
-{
- for (string::size_type i (0); i < s.size (); ++i)
- {
- char& c (s[i]);
-
- if (i == 0)
- {
- if (!((c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') ||
- c == '_'))
- c = '_';
- }
- else
- {
- if (!((c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') ||
- (c >= '0' && c <= '9') ||
- c == '_'))
- c = '_';
- }
- }
-}
-
-void error_handler::
-warning (const SAXParseException& e)
-{
- handle (e, s_warning);
-}
-
-void error_handler::
-error (const SAXParseException& e)
-{
- failed_ = true;
- handle (e, s_error);
-}
-
-void error_handler::
-fatalError (const SAXParseException& e)
-{
- failed_ = true;
- handle (e, s_fatal);
-}
-
-void error_handler::
-handle (const SAXParseException& e, severity s)
-{
- const XMLCh* xid (e.getPublicId ());
-
- if (xid == 0)
- xid = e.getSystemId ();
-
- char* id (XMLString::transcode (xid));
- char* msg (XMLString::transcode (e.getMessage ()));
-
- cerr << id << ":"
- << e.getLineNumber () << ":" << e.getColumnNumber () << " "
- << (s == s_warning ? "warning: " : "error: ") << msg << endl;
-
- XMLString::release (&id);
- XMLString::release (&msg);
-}
diff --git a/xsd/examples/cxx/tree/hello/README b/xsd/examples/cxx/tree/hello/README
deleted file mode 100644
index bb98584..0000000
--- a/xsd/examples/cxx/tree/hello/README
+++ /dev/null
@@ -1,26 +0,0 @@
-This is a "Hello, world!" example that shows how to use the C++/Tree
-mapping to access XML instance documents described by XML Schema
-definitions.
-
-The example consists of the following files:
-
-hello.xsd
- XML Schema which describes "hello" instance documents.
-
-hello.xml
- Sample XML instance document.
-
-hello.hxx
-hello.cxx
- C++ types that represent the given vocabulary and a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model. These are generated by XSD from hello.xsd.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input file. It then prints
- the content of the object model to STDERR.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver hello.xml
diff --git a/xsd/examples/cxx/tree/hello/driver.cxx b/xsd/examples/cxx/tree/hello/driver.cxx
deleted file mode 100644
index b6629b3..0000000
--- a/xsd/examples/cxx/tree/hello/driver.cxx
+++ /dev/null
@@ -1,36 +0,0 @@
-// file : examples/cxx/tree/hello/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <iostream>
-
-#include "hello.hxx"
-
-using namespace std;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " hello.xml" << endl;
- return 1;
- }
-
- try
- {
- auto_ptr<hello_t> h (hello (argv[1]));
-
- for (hello_t::name_const_iterator i (h->name ().begin ());
- i != h->name ().end ();
- ++i)
- {
- cout << h->greeting () << ", " << *i << "!" << endl;
- }
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/tree/hello/hello.xml b/xsd/examples/cxx/tree/hello/hello.xml
deleted file mode 100644
index 8b25b5b..0000000
--- a/xsd/examples/cxx/tree/hello/hello.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/hello/hello.xml
-copyright : not copyrighted - public domain
-
--->
-
-<hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="hello.xsd">
-
- <greeting>Hello</greeting>
-
- <name>sun</name>
- <name>moon</name>
- <name>world</name>
-
-</hello>
diff --git a/xsd/examples/cxx/tree/hello/hello.xsd b/xsd/examples/cxx/tree/hello/hello.xsd
deleted file mode 100644
index 8326ff0..0000000
--- a/xsd/examples/cxx/tree/hello/hello.xsd
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/hello/hello.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="hello_t">
-
- <xsd:annotation>
- <xsd:documentation>
- The hello_t type consists of a greeting phrase and a
- collection of names to which this greeting applies.
- </xsd:documentation>
- </xsd:annotation>
-
- <xsd:sequence>
-
- <xsd:element name="greeting" type="xsd:string">
- <xsd:annotation>
- <xsd:documentation>
- The greeting element contains the greeting phrase
- for this hello object.
- </xsd:documentation>
- </xsd:annotation>
- </xsd:element>
-
- <xsd:element name="name" type="xsd:string" maxOccurs="unbounded">
- <xsd:annotation>
- <xsd:documentation>
- The name elements contains names to be greeted.
- </xsd:documentation>
- </xsd:annotation>
- </xsd:element>
-
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="hello" type="hello_t">
- <xsd:annotation>
- <xsd:documentation>
- The hello element is a root of the Hello XML vocabulary.
- Every conforming document should start with this element.
- </xsd:documentation>
- </xsd:annotation>
- </xsd:element>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/hello/makefile b/xsd/examples/cxx/tree/hello/makefile
deleted file mode 100644
index 2657fc6..0000000
--- a/xsd/examples/cxx/tree/hello/makefile
+++ /dev/null
@@ -1,101 +0,0 @@
-# file : examples/cxx/tree/hello/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := hello.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/hello.xsd,$(install_doc_dir)/xsd/$(path)/hello.xsd)
- $(call install-data,$(src_base)/hello.xml,$(install_doc_dir)/xsd/$(path)/hello.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/hello.xsd,$(dist_prefix)/$(path)/hello.xsd)
- $(call install-data,$(src_base)/hello.xml,$(dist_prefix)/$(path)/hello.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/library/README b/xsd/examples/cxx/tree/library/README
deleted file mode 100644
index 0b8638c..0000000
--- a/xsd/examples/cxx/tree/library/README
+++ /dev/null
@@ -1,32 +0,0 @@
-This example shows how to use the C++/Tree mapping to parse XML documents
-into a tree-like in-memory object model, modify this object model, and
-finally serialize it back to XML.
-
-The example consists of the following files:
-
-library.xsd
- XML Schema which describes a library of books.
-
-library.xml
- Sample XML instance document.
-
-library.hxx
-library.ixx
-library.cxx
- C++ types that represent the given vocabulary, a set of parsing
- functions that convert XML documents to a tree-like in-memory object
- model, and a set of serialization functions that convert the object
- model back to XML. These are generated by XSD from library.xsd.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input file. It then prints
- the content of the object model to STDERR. Finally, the driver modifies
- the object model and serializes it back to XML.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver library.xml
-
-This example also shows how to use the ID/IDREF cross-referencing
-mechanism and the xsd:enumeration to C++ enum mapping.
diff --git a/xsd/examples/cxx/tree/library/driver.cxx b/xsd/examples/cxx/tree/library/driver.cxx
deleted file mode 100644
index 5913ddf..0000000
--- a/xsd/examples/cxx/tree/library/driver.cxx
+++ /dev/null
@@ -1,130 +0,0 @@
-// file : examples/cxx/tree/library/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <iostream>
-
-#include "library.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " library.xml" << endl;
- return 1;
- }
-
- try
- {
- using namespace library;
-
- // Read in the XML file and obtain its object model.
- //
- std::auto_ptr<catalog> c (catalog_ (argv[1]));
-
-
- // Let's print what we've got.
- //
- for (catalog::book_const_iterator bi (c->book ().begin ());
- bi != c->book ().end ();
- ++bi)
- {
- cerr << endl
- << "ID : " << bi->id () << endl
- << "ISBN : " << bi->isbn () << endl
- << "Title : " << bi->title () << endl
- << "Genre : " << bi->genre () << endl;
-
- for (book::author_const_iterator ai (bi->author ().begin ());
- ai != bi->author ().end ();
- ++ai)
- {
- cerr << "Author : " << ai->name () << endl;
- cerr << " Born : " << ai->born () << endl;
-
- if (ai->died ())
- cerr << " Died : " << *ai->died () << endl;
-
- if (ai->recommends ())
- cerr << " Recommends : " << (*ai->recommends ())->title () << endl;
- }
-
- cerr << "Available : " << std::boolalpha << bi->available () << endl;
- }
-
-
- // Now we are going to modify the object model and serialize it
- // back to XML.
- //
-
- catalog::book_sequence& books (c->book ());
-
-
- // Get rid of all unavailable books.
- //
- for (catalog::book_iterator bi (books.begin ()); bi != books.end ();)
- {
- if (!bi->available ())
- bi = books.erase (bi);
- else
- ++bi;
- }
-
-
- // Insert a new book.
- //
- book b (679776443, // ISBN
- "Dead Souls", // Title
- genre::philosophy, // Genre
- "DS"); // ID
-
- b.author ().push_back (author ("Nikolai Gogol",
- xml_schema::date (1809, 3, 31)));
-
- books.insert (books.begin (), b);
-
-
- // Because we removed all unavailable books, some IDREFs might be
- // broken. Let's fix this.
- //
- for (catalog::book_iterator bi (books.begin ()); bi != books.end (); ++bi)
- {
- for (book::author_iterator ai (bi->author ().begin ());
- ai != bi->author ().end ();
- ++ai)
- {
- author::recommends_optional& c (ai->recommends ());
-
- if (c.present ())
- {
- author::recommends_type& ref (c.get ());
-
- if (!ref)
- c.reset ();
- }
- }
- }
-
-
- // Prepare namespace mapping and schema location information.
- //
- xml_schema::namespace_infomap map;
-
- map["lib"].name = "http://www.codesynthesis.com/library";
- map["lib"].schema = "library.xsd";
-
-
- // Write it out.
- //
- catalog_ (std::cout, *c, map);
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/tree/library/library.xml b/xsd/examples/cxx/tree/library/library.xml
deleted file mode 100644
index ca4ca9c..0000000
--- a/xsd/examples/cxx/tree/library/library.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/library/library.xml
-copyright : not copyrighted - public domain
-
--->
-
-<lib:catalog xmlns:lib="http://www.codesynthesis.com/library"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/library library.xsd">
-
- <book id="MM" available="false">
- <isbn>0679760806</isbn>
- <title>The Master and Margarita</title>
- <genre>fiction</genre>
-
- <author recommends="WP">
- <name>Mikhail Bulgakov</name>
- <born>1891-05-15</born>
- <died>1940-03-10</died>
- </author>
- </book>
-
-
- <book id="WP">
- <isbn>0679600841</isbn>
- <title>War and Peace</title>
- <genre>history</genre>
-
- <author recommends="CP">
- <name>Leo Tolstoy</name>
- <born>1828-09-09</born>
- <died>1910-11-20</died>
- </author>
- </book>
-
-
- <book id="CP" available="false">
- <isbn>0679420290</isbn>
- <title>Crime and Punishment</title>
- <genre>philosophy</genre>
-
- <author>
- <name>Fyodor Dostoevsky</name>
- <born>1821-11-11</born>
- <died>1881-02-09</died>
- </author>
- </book>
-
-</lib:catalog>
diff --git a/xsd/examples/cxx/tree/library/library.xsd b/xsd/examples/cxx/tree/library/library.xsd
deleted file mode 100644
index b183efc..0000000
--- a/xsd/examples/cxx/tree/library/library.xsd
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/library/library.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:lib="http://www.codesynthesis.com/library"
- targetNamespace="http://www.codesynthesis.com/library">
-
- <xsd:simpleType name="isbn">
- <xsd:restriction base="xsd:unsignedInt"/>
- </xsd:simpleType>
-
- <xsd:complexType name="title">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="lang" type="xsd:language"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:simpleType name="genre">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="romance"/>
- <xsd:enumeration value="fiction"/>
- <xsd:enumeration value="horror"/>
- <xsd:enumeration value="history"/>
- <xsd:enumeration value="philosophy"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="born" type="xsd:date"/>
- <xsd:element name="died" type="xsd:date" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="author">
- <xsd:complexContent>
- <xsd:extension base="lib:person">
- <xsd:attribute name="recommends" type="xsd:IDREF" xse:refType="lib:book"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="book">
- <xsd:sequence>
- <xsd:element name="isbn" type="lib:isbn"/>
- <xsd:element name="title" type="lib:title"/>
- <xsd:element name="genre" type="lib:genre"/>
- <xsd:element name="author" type="lib:author" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="available" type="xsd:boolean" default="true"/>
- <xsd:attribute name="id" type="xsd:ID" use="required"/>
- </xsd:complexType>
-
- <xsd:complexType name="catalog">
- <xsd:sequence>
- <xsd:element name="book" type="lib:book" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="catalog" type="lib:catalog"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/library/makefile b/xsd/examples/cxx/tree/library/makefile
deleted file mode 100644
index 3db03de..0000000
--- a/xsd/examples/cxx/tree/library/makefile
+++ /dev/null
@@ -1,102 +0,0 @@
-# file : examples/cxx/tree/library/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := library.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-inline --generate-ostream \
---generate-serialization
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(install_doc_dir)/xsd/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(install_doc_dir)/xsd/$(path)/library.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/library.xsd,$(dist_prefix)/$(path)/library.xsd)
- $(call install-data,$(src_base)/library.xml,$(dist_prefix)/$(path)/library.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/makefile b/xsd/examples/cxx/tree/makefile
deleted file mode 100644
index 172195a..0000000
--- a/xsd/examples/cxx/tree/makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# file : examples/cxx/tree/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-all_examples := binary caching embedded custom hello library messaging \
-mixed multiroot order performance polymorphism streaming wildcard \
-compression xpath
-
-build_examples := binary caching embedded custom hello library messaging \
-mixed multiroot order performance polymorphism streaming wildcard
-
-ifeq ($(xsd_with_zlib),y)
-build_examples += compression
-endif
-
-ifeq ($(xsd_with_xqilla),y)
-build_examples += xpath
-endif
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(build_examples)))
-
-# Install & Dist.
-#
-$(install) $(dist) $(dist-win): path := $(subst $(src_root)/,,$(src_base))
-
-$(install): $(addprefix $(out_base)/,$(addsuffix /.install,$(all_examples)))
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
-
-$(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(all_examples)))
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): export dirs := $(shell find $(src_base) -type d -exec test -f {}/driver.cxx ';' -printf '%P ')
-$(dist-win): |$(out_root)/.dist-pre
-$(dist-win): $(addprefix $(out_base)/,$(addsuffix /.dist-win,$(all_examples)))
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
- $(call meta-vc8sln,$(src_root)/dist/template-vc8.sln,tree-vc8.sln)
- $(call meta-vc9sln,$(src_root)/dist/template-vc9.sln,tree-vc9.sln)
- $(call meta-vc10sln,$(src_root)/dist/template-vc10.sln,tree-vc10.sln)
- $(call meta-vc11sln,$(src_root)/dist/template-vc11.sln,tree-vc11.sln)
- $(call meta-vc12sln,$(src_root)/dist/template-vc12.sln,tree-vc12.sln)
- $(call meta-vctest,tree-vc8.sln,$(src_root)/dist/examples/test.bat,test.bat)
-
-# Clean.
-#
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(build_examples)))
-
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/vc8sln.make)
-$(call include,$(bld_root)/meta/vc9sln.make)
-$(call include,$(bld_root)/meta/vc10sln.make)
-$(call include,$(bld_root)/meta/vc11sln.make)
-$(call include,$(bld_root)/meta/vc12sln.make)
-$(call include,$(bld_root)/meta/vctest.make)
-
-ifneq ($(filter $(MAKECMDGOALS),dist dist-win install),)
-$(foreach e,$(all_examples),$(call import,$(src_base)/$e/makefile))
-else
-$(foreach e,$(build_examples),$(call import,$(src_base)/$e/makefile))
-endif
diff --git a/xsd/examples/cxx/tree/messaging/README b/xsd/examples/cxx/tree/messaging/README
deleted file mode 100644
index 435a4cf..0000000
--- a/xsd/examples/cxx/tree/messaging/README
+++ /dev/null
@@ -1,58 +0,0 @@
-This example shows how to handle XML vocabularies with multiple
-root elements using the element type and element map features
-of the C++/Tree mapping. The main purpose of element types is
-to distinguish object models with the same root type but with
-different root elements. The element map allows uniform parsing
-and serialization of multiple root elements.
-
-The example consists of the following files:
-
-protocol.xsd
- XML Schema which defines a simple bank account protocol with
- requests such as withdraw and deposit. Note that some request
- and response elements are of the same type.
-
-balance.xml
-withdraw.xml
-deposit.xml
- Sample XML instances for the protocol requests.
-
-protocol.hxx
-protocol.cxx
- C++ types that represent the given vocabulary. These are
- generated by the XSD compiler from protocol.xsd. Generation of
- element types instead of parsing and serialization functions is
- requested with the --generate-element-type option. Generation of
- the element map is requested with the --generate-element-map
- option.
-
-dom-parse.hxx
-dom-parse.cxx
- Definition and implementation of the parse() function that
- parses an XML document to a DOM document.
-
-dom-serialize.hxx
-dom-serialize.cxx
- Definition and implementation of the serialize() function that
- serializes a DOM document to XML.
-
-driver.cxx
- Driver for the example. It first calls the above-mentioned parse()
- function to parse the input file to a DOM document. It then calls
- the parse() function on the element map to parse the root document
- element to the object model. The object model is returned as a
- pointer to xml_schema::element_type which is a common base type for
- all element types. The driver then determines which request it has
- received either using RTTI or by comparing the root element names.
- Once the request type is determined, information about it is printed
- to STDERR and the corresponding response is created. Finally, the
- driver serializes the opaque response object to a DOM document
- using the element map and then serializes this DOM document to
- STDOUT using the above-mentioned serialize() function.
-
-To run the example on the sample XML request documents simply
-execute:
-
-$ ./driver balance.xml
-$ ./driver withdraw.xml
-$ ./driver deposit.xml
diff --git a/xsd/examples/cxx/tree/messaging/balance.xml b/xsd/examples/cxx/tree/messaging/balance.xml
deleted file mode 100644
index 83b9692..0000000
--- a/xsd/examples/cxx/tree/messaging/balance.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/messaging/balance.xml
-copyright : not copyrighted - public domain
-
--->
-
-<p:balance xmlns:p="http://www.codesynthesis.com/protocol"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/protocol protocol.xsd">
-
- <account>123456789</account>
-
-</p:balance>
diff --git a/xsd/examples/cxx/tree/messaging/deposit.xml b/xsd/examples/cxx/tree/messaging/deposit.xml
deleted file mode 100644
index c59153d..0000000
--- a/xsd/examples/cxx/tree/messaging/deposit.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/messaging/deposit.xml
-copyright : not copyrighted - public domain
-
--->
-
-<p:deposit xmlns:p="http://www.codesynthesis.com/protocol"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/protocol protocol.xsd">
-
- <account>123456789</account>
- <amount>1000000</amount>
-
-</p:deposit>
diff --git a/xsd/examples/cxx/tree/messaging/dom-parse.cxx b/xsd/examples/cxx/tree/messaging/dom-parse.cxx
deleted file mode 100644
index 61f9f4a..0000000
--- a/xsd/examples/cxx/tree/messaging/dom-parse.cxx
+++ /dev/null
@@ -1,93 +0,0 @@
-// file : examples/cxx/tree/messaging/dom-parse.cxx
-// copyright : not copyrighted - public domain
-
-#include "dom-parse.hxx"
-
-#include <istream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/XMLUniDefs.hpp> // chLatin_*
-#include <xercesc/framework/Wrapper4InputSource.hpp>
-
-#include <xsd/cxx/xml/sax/std-input-source.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-#include <xsd/cxx/tree/error-handler.hxx>
-
-using namespace xercesc;
-namespace xml = xsd::cxx::xml;
-namespace tree = xsd::cxx::tree;
-
-xml::dom::auto_ptr<DOMDocument>
-parse (std::istream& is, const std::string& id, bool validate)
-{
- const XMLCh ls_id [] = {chLatin_L, chLatin_S, chNull};
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- xml::dom::auto_ptr<DOMLSParser> parser (
- impl->createLSParser (DOMImplementationLS::MODE_SYNCHRONOUS, 0));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- // Discard comment nodes in the document.
- //
- conf->setParameter (XMLUni::fgDOMComments, false);
-
- // Enable datatype normalization.
- //
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
-
- // Do not create EntityReference nodes in the DOM tree. No
- // EntityReference nodes will be created, only the nodes
- // corresponding to their fully expanded substitution text
- // will be created.
- //
- conf->setParameter (XMLUni::fgDOMEntities, false);
-
- // Perform namespace processing.
- //
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
-
- // Do not include ignorable whitespace in the DOM tree.
- //
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
-
- // Enable/Disable validation.
- //
- conf->setParameter (XMLUni::fgDOMValidate, validate);
- conf->setParameter (XMLUni::fgXercesSchema, validate);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
-
- // We will release the DOM document ourselves.
- //
- conf->setParameter (XMLUni::fgXercesUserAdoptsDOMDocument, true);
-
- // Set error handler.
- //
- tree::error_handler<char> eh;
- xml::dom::bits::error_handler_proxy<char> ehp (eh);
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- // Prepare input stream.
- //
- xml::sax::std_input_source isrc (is, id);
- Wrapper4InputSource wrap (&isrc, false);
-
- xml::dom::auto_ptr<DOMDocument> doc (parser->parse (&wrap));
-
- eh.throw_if_failed<tree::parsing<char> > ();
-
- return doc;
-}
diff --git a/xsd/examples/cxx/tree/messaging/dom-parse.hxx b/xsd/examples/cxx/tree/messaging/dom-parse.hxx
deleted file mode 100644
index 6eccacd..0000000
--- a/xsd/examples/cxx/tree/messaging/dom-parse.hxx
+++ /dev/null
@@ -1,22 +0,0 @@
-// file : examples/cxx/tree/messaging/dom-parse.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef DOM_PARSE
-#define DOM_PARSE
-
-#include <string>
-#include <iosfwd>
-
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-
-// Parse an XML document from the standard input stream with an
-// optional resource id. Resource id is used in diagnostics as
-// well as to locate schemas referenced from inside the document.
-//
-xsd::cxx::xml::dom::auto_ptr<xercesc::DOMDocument>
-parse (std::istream& is,
- const std::string& id,
- bool validate);
-
-#endif // DOM_PARSE
diff --git a/xsd/examples/cxx/tree/messaging/dom-serialize.cxx b/xsd/examples/cxx/tree/messaging/dom-serialize.cxx
deleted file mode 100644
index dbf3370..0000000
--- a/xsd/examples/cxx/tree/messaging/dom-serialize.cxx
+++ /dev/null
@@ -1,64 +0,0 @@
-// file : examples/cxx/tree/messaging/dom-serialize.cxx
-// copyright : not copyrighted - public domain
-
-#include "dom-serialize.hxx"
-
-#include <ostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/XMLUniDefs.hpp>
-
-#include <xsd/cxx/xml/string.hxx>
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-#include <xsd/cxx/xml/dom/serialization-source.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-#include <xsd/cxx/tree/error-handler.hxx>
-
-using namespace xercesc;
-namespace xml = xsd::cxx::xml;
-namespace tree = xsd::cxx::tree;
-
-void
-serialize (std::ostream& os,
- const xercesc::DOMDocument& doc,
- const std::string& encoding)
-{
- const XMLCh ls_id [] = {chLatin_L, chLatin_S, chNull};
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- tree::error_handler<char> eh;
- xml::dom::bits::error_handler_proxy<char> ehp (eh);
-
- xml::dom::ostream_format_target oft (os);
-
- // Create a DOMSerializer.
- //
- xml::dom::auto_ptr<DOMLSSerializer> writer (
- impl->createLSSerializer ());
-
- DOMConfiguration* conf (writer->getDomConfig ());
-
- // Set error handler.
- //
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- // Set some generally nice features.
- //
- conf->setParameter (XMLUni::fgDOMWRTDiscardDefaultContent, true);
- conf->setParameter (XMLUni::fgDOMWRTFormatPrettyPrint, true);
- conf->setParameter (XMLUni::fgDOMWRTXercesPrettyPrint, false);
-
- xml::dom::auto_ptr<DOMLSOutput> out (impl->createLSOutput ());
- out->setEncoding (xml::string (encoding).c_str ());
- out->setByteStream (&oft);
-
- writer->write (&doc, out.get ());
-
- eh.throw_if_failed<tree::serialization<char> > ();
-}
diff --git a/xsd/examples/cxx/tree/messaging/dom-serialize.hxx b/xsd/examples/cxx/tree/messaging/dom-serialize.hxx
deleted file mode 100644
index f80e22b..0000000
--- a/xsd/examples/cxx/tree/messaging/dom-serialize.hxx
+++ /dev/null
@@ -1,20 +0,0 @@
-// file : examples/cxx/tree/messaging/dom-serialize.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef DOM_SERIALIZE
-#define DOM_SERIALIZE
-
-#include <string>
-#include <iosfwd>
-
-#include <xercesc/dom/DOMDocument.hpp>
-
-// Serialize a DOM document to XML which is written to the standard
-// output stream.
-//
-void
-serialize (std::ostream& os,
- const xercesc::DOMDocument& doc,
- const std::string& encoding = "UTF-8");
-
-#endif // DOM_SERIALIZE
diff --git a/xsd/examples/cxx/tree/messaging/driver.cxx b/xsd/examples/cxx/tree/messaging/driver.cxx
deleted file mode 100644
index 095e2cd..0000000
--- a/xsd/examples/cxx/tree/messaging/driver.cxx
+++ /dev/null
@@ -1,144 +0,0 @@
-// file : examples/cxx/tree/messaging/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <string>
-#include <fstream>
-#include <typeinfo>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include <xsd/cxx/xml/string.hxx>
-
-#include "dom-parse.hxx"
-#include "dom-serialize.hxx"
-
-#include "protocol.hxx"
-
-using namespace std;
-using namespace protocol;
-using namespace xercesc;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " request.xml" << endl;
- return 1;
- }
-
- int r (0);
-
- // We need to initialize the Xerces-C++ runtime because we
- // are doing the XML-to-DOM parsing ourselves.
- //
- XMLPlatformUtils::Initialize ();
-
- try
- {
- ifstream ifs;
- ifs.exceptions (ifstream::badbit | ifstream::failbit);
- ifs.open (argv[1]);
-
- auto_ptr<xml_schema::element_type> req, res;
-
- // Parse the XML request to a DOM document using the parse()
- // function from dom-parse.hxx.
- //
- {
- xml_schema::dom::auto_ptr<DOMDocument> doc (parse (ifs, argv[1], true));
- DOMElement& root (*doc->getDocumentElement ());
-
- req = xml_schema::element_map::parse (root);
- }
-
- // We can test which request we've got either using RTTI or by
- // comparing the element names, as shown below.
- //
- if (balance* b = dynamic_cast<balance*> (req.get ()))
- {
- account_t& a (b->value ());
-
- cerr << "balance request for acc# " << a.account () << endl;
-
- res.reset (new success (balance_t (a.account (), 1000)));
- }
- else if (req->_name () == withdraw::name ())
- {
- withdraw& w (static_cast<withdraw&> (*req));
- change_t& c (w.value ());
-
- wcerr << "withdrawal request for acc# " << c.account () << ", "
- << "amount: " << c.amount () << endl;
-
- if (c.amount () > 1000)
- res.reset (new insufficient_funds (balance_t (c.account (), 1000)));
- else
- res.reset (new success (balance_t (c.account (), 1000 - c.amount ())));
-
- }
- else if (req->_name () == deposit::name ())
- {
- deposit& d (static_cast<deposit&> (*req));
- change_t& c (d.value ());
-
- wcerr << "deposit request for acc# " << c.account () << ", "
- << "amount: " << c.amount () << endl;
-
- res.reset (new success (balance_t (c.account (), 1000 + c.amount ())));
- }
-
- // Serialize the response to a DOM document.
- //
- namespace xml = xsd::cxx::xml;
-
- const XMLCh ls_id [] = {chLatin_L, chLatin_S, chNull};
-
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- const string& name (res->_name ());
- const string& ns (res->_namespace ());
-
- xml_schema::dom::auto_ptr<DOMDocument> doc (
- impl->createDocument (
- xml::string (ns).c_str (),
- xml::string ("p:" + name).c_str (),
- 0));
-
- xml_schema::element_map::serialize (*doc->getDocumentElement (), *res);
-
- // Serialize the DOM document to XML using the serialize() function
- // from dom-serialize.hxx.
- //
- cout << "response:" << endl
- << endl;
-
- serialize (cout, *doc);
- }
- catch (const xml_schema::no_element_info& e)
- {
- // This exception indicates that we tried to parse or serialize
- // an unknown element.
- //
- cerr << "unknown request: " << e.element_namespace () << "#" <<
- e.element_name () << endl;
- r = 1;
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- r = 1;
- }
-
- XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/messaging/makefile b/xsd/examples/cxx/tree/messaging/makefile
deleted file mode 100644
index 309147a..0000000
--- a/xsd/examples/cxx/tree/messaging/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : examples/cxx/tree/messaging/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := protocol.xsd
-cxx := driver.cxx dom-parse.cxx dom-serialize.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-
-$(gen): xsd_options += --root-element-all --generate-element-type \
---generate-element-map --generate-serialization
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/protocol.xsd,$(install_doc_dir)/xsd/$(path)/protocol.xsd)
- $(call install-data,$(src_base)/balance.xml,$(install_doc_dir)/xsd/$(path)/balance.xml)
- $(call install-data,$(src_base)/deposit.xml,$(install_doc_dir)/xsd/$(path)/deposit.xml)
- $(call install-data,$(src_base)/withdraw.xml,$(install_doc_dir)/xsd/$(path)/withdraw.xml)
- $(call install-data,$(src_base)/dom-parse.hxx,$(install_doc_dir)/xsd/$(path)/dom-parse.hxx)
- $(call install-data,$(src_base)/dom-parse.cxx,$(install_doc_dir)/xsd/$(path)/dom-parse.cxx)
- $(call install-data,$(src_base)/dom-serialize.hxx,$(install_doc_dir)/xsd/$(path)/dom-serialize.hxx)
- $(call install-data,$(src_base)/dom-serialize.cxx,$(install_doc_dir)/xsd/$(path)/dom-serialize.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/protocol.xsd,$(dist_prefix)/$(path)/protocol.xsd)
- $(call install-data,$(src_base)/balance.xml,$(dist_prefix)/$(path)/balance.xml)
- $(call install-data,$(src_base)/deposit.xml,$(dist_prefix)/$(path)/deposit.xml)
- $(call install-data,$(src_base)/withdraw.xml,$(dist_prefix)/$(path)/withdraw.xml)
- $(call install-data,$(src_base)/dom-parse.hxx,$(dist_prefix)/$(path)/dom-parse.hxx)
- $(call install-data,$(src_base)/dom-parse.cxx,$(dist_prefix)/$(path)/dom-parse.cxx)
- $(call install-data,$(src_base)/dom-serialize.hxx,$(dist_prefix)/$(path)/dom-serialize.hxx)
- $(call install-data,$(src_base)/dom-serialize.cxx,$(dist_prefix)/$(path)/dom-serialize.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/messaging/protocol.xsd b/xsd/examples/cxx/tree/messaging/protocol.xsd
deleted file mode 100644
index b371ba7..0000000
--- a/xsd/examples/cxx/tree/messaging/protocol.xsd
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/messaging/protocol.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:p="http://www.codesynthesis.com/protocol"
- targetNamespace="http://www.codesynthesis.com/protocol">
-
- <!-- types -->
-
- <xsd:complexType name="account_t">
- <xsd:sequence>
- <xsd:element name="account" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="change_t">
- <xsd:complexContent>
- <xsd:extension base="p:account_t">
- <xsd:sequence>
- <xsd:element name="amount" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="balance_t">
- <xsd:complexContent>
- <xsd:extension base="p:account_t">
- <xsd:sequence>
- <xsd:element name="balance" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <!-- request elements -->
-
- <xsd:element name="balance" type="p:account_t"/>
- <xsd:element name="withdraw" type="p:change_t"/>
- <xsd:element name="deposit" type="p:change_t"/>
-
- <!-- response elements -->
-
- <xsd:element name="success" type="p:balance_t"/>
- <xsd:element name="insufficient-funds" type="p:balance_t"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/messaging/withdraw.xml b/xsd/examples/cxx/tree/messaging/withdraw.xml
deleted file mode 100644
index 1f309f3..0000000
--- a/xsd/examples/cxx/tree/messaging/withdraw.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/messaging/withdraw.xml
-copyright : not copyrighted - public domain
-
--->
-
-<p:withdraw xmlns:p="http://www.codesynthesis.com/protocol"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/protocol protocol.xsd">
-
- <account>123456789</account>
- <amount>1000000</amount>
-
-</p:withdraw>
diff --git a/xsd/examples/cxx/tree/mixed/README b/xsd/examples/cxx/tree/mixed/README
deleted file mode 100644
index fc23faa..0000000
--- a/xsd/examples/cxx/tree/mixed/README
+++ /dev/null
@@ -1,45 +0,0 @@
-This example shows how to access the underlying DOM nodes in the
-C++/Tree mapping in order to handle raw, "type-less content" such
-as mixed content models, anyType/anySimpleType, and any/anyAttribute.
-
-For an alternative (and recommended) approach that employs ordered
-types see the order/mixed example.
-
-For an alternative approach that employes type customization see
-examples in the custom/ directory, in particular, custom/mixed and
-custom/wildcard.
-
-In this example we use mixed content model to describe text with
-embedded links, e.g.,
-
- This paragraph talks about <a href="uri">time</a>.
-
-The example transforms such text into plain text with references, e.g.,
-
- This paragraph talks about time[0].
-
- [0] uri
-
-The example consists of the following files:
-
-text.xsd
- XML Schema which describes "text with links" instance documents.
-
-text.xml
- Sample XML instance document.
-
-text.hxx
-text.cxx
- C++ types that represent the given vocabulary and a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model. These are generated by XSD from text.xsd.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input file. It then uses
- both the underlying DOM and statically-typed mapping to perform the
- transformation.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver text.xml
diff --git a/xsd/examples/cxx/tree/mixed/driver.cxx b/xsd/examples/cxx/tree/mixed/driver.cxx
deleted file mode 100644
index 17c3b55..0000000
--- a/xsd/examples/cxx/tree/mixed/driver.cxx
+++ /dev/null
@@ -1,122 +0,0 @@
-// file : examples/cxx/tree/mixed/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-
-#include "text.hxx"
-
-// The following transcode() utility function is handy when working with
-// Xerces. Include it after the generated header in order to get only char
-// or wchar_t version depending on how you compiled your schemas.
-//
-#include <xsd/cxx/xml/string.hxx>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::auto_ptr;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " text.xml" << endl;
- return 1;
- }
-
- using namespace xercesc;
-
- int r (0);
-
- // The Xerces-C++ DOM objects that will be associated with the
- // document tree "out-live" the call to the parsing function.
- // Therefore we need to initialize the Xerces-C++ runtime
- // ourselves.
- //
- XMLPlatformUtils::Initialize ();
-
- try
- {
- auto_ptr<text> t (
- text_ (argv[1],
- xml_schema::flags::keep_dom |
- xml_schema::flags::dont_initialize));
-
- // The DOM association can be recreated in a copy (the underlying
- // DOM document is cloned) if explicitly requested with the keep_dom
- // flag and only if this copy is "complete", i.e., made from the root
- // of the tree.
- //
- text copy (*t, xml_schema::flags::keep_dom);
-
- // Print text.
- //
- {
- namespace xml = xsd::cxx::xml;
-
- unsigned long ref (0);
- DOMNode* root (copy._node ());
-
- for (DOMNode* n (root->getFirstChild ());
- n != 0;
- n = n->getNextSibling ())
- {
- switch (n->getNodeType ())
- {
- case DOMNode::TEXT_NODE:
- {
- cout << xml::transcode<char> (n->getTextContent ());
- break;
- }
- case DOMNode::ELEMENT_NODE:
- {
- // Let's get back to a tree node from this DOM node.
- //
- xml_schema::type& t (
- *reinterpret_cast<xml_schema::type*> (
- n->getUserData (xml_schema::dom::tree_node_key)));
-
- anchor& a (dynamic_cast<anchor&> (t));
-
- cout << a << "[" << ref << "]";
-
- // Or we could continue using DOM interface:
- //
- //cout << xml::transcode<char> (n->getTextContent ())
- // << "[" << ref << "]";
-
- ++ref;
- break;
- }
- default:
- break; // Ignore all other nodes (e.g., comments, etc).
- }
- }
- }
-
- // Print references.
- //
- {
- unsigned long r (0);
-
- for (text::a_const_iterator i (copy.a ().begin ());
- i != copy.a ().end ();
- ++i, ++r)
- {
- cout << "[" << r << "] " << i->href () << endl;
- }
- }
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
-
- XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/mixed/makefile b/xsd/examples/cxx/tree/mixed/makefile
deleted file mode 100644
index 7c001f0..0000000
--- a/xsd/examples/cxx/tree/mixed/makefile
+++ /dev/null
@@ -1,102 +0,0 @@
-# file : examples/cxx/tree/mixed/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := text.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/text.xsd,$(install_doc_dir)/xsd/$(path)/text.xsd)
- $(call install-data,$(src_base)/text.xml,$(install_doc_dir)/xsd/$(path)/text.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/text.xsd,$(dist_prefix)/$(path)/text.xsd)
- $(call install-data,$(src_base)/text.xml,$(dist_prefix)/$(path)/text.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/mixed/text.xml b/xsd/examples/cxx/tree/mixed/text.xml
deleted file mode 100644
index 21e32af..0000000
--- a/xsd/examples/cxx/tree/mixed/text.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/mixed/text.xml
-copyright : not copyrighted - public domain
-
--->
-
-<text xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="text.xsd">
-
-The first paragraph of this text talks about <a href="http://en.wikipedia.org/wiki/time">time</a>.
-
-And this paragraph talks about <a href="http://en.wikipedia.org/wiki/space">space</a>.
-
-</text>
diff --git a/xsd/examples/cxx/tree/mixed/text.xsd b/xsd/examples/cxx/tree/mixed/text.xsd
deleted file mode 100644
index 9777f8a..0000000
--- a/xsd/examples/cxx/tree/mixed/text.xsd
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/mixed/text.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="anchor">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="href" type="xsd:anyURI" use="required"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:complexType name="text" mixed="true">
- <xsd:sequence>
- <xsd:element name="a" type="anchor" minOccurs="0" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="text" type="text"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/multiroot/README b/xsd/examples/cxx/tree/multiroot/README
deleted file mode 100644
index b742422..0000000
--- a/xsd/examples/cxx/tree/multiroot/README
+++ /dev/null
@@ -1,45 +0,0 @@
-This example shows how to handle XML vocabularies with multiple
-root elements using the C++/Tree mapping.
-
-See also the messaging example for an alternative approach that
-uses the element type and element map features of the C++/Tree
-mapping.
-
-The example consists of the following files:
-
-protocol.xsd
- XML Schema which defines a simple bank account protocol with
- requests such as withdraw and deposit.
-
-balance.xml
-withdraw.xml
-deposit.xml
- Sample XML instances for the protocol requests.
-
-protocol.hxx
-protocol.cxx
- C++ types that represent the given vocabulary and a set of
- parsing functions that convert XML documents to a tree-like
- in-memory object model. These are generated by XSD from
- protocol.xsd.
-
-dom-parse.hxx
-dom-parse.cxx
- Definition and implementation of the parse() function that
- parses an XML document to a DOM document.
-
-driver.cxx
- Driver for the example. It first calls the above parse() function
- to parse the input file to a DOM document. It then determines the
- type of request being handled and calls the corresponding parsing
- function that constructs the object model from this DOM document.
- Finally, it prints the content of this object model to STDERR.
- This example intentionally does not support the deposit request
- to show how to handle unknown documents.
-
-To run the example on the sample XML request documents simply
-execute:
-
-$ ./driver balance.xml
-$ ./driver withdraw.xml
-$ ./driver deposit.xml
diff --git a/xsd/examples/cxx/tree/multiroot/balance.xml b/xsd/examples/cxx/tree/multiroot/balance.xml
deleted file mode 100644
index 68b434a..0000000
--- a/xsd/examples/cxx/tree/multiroot/balance.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/multiroot/balance.xml
-copyright : not copyrighted - public domain
-
--->
-
-<p:balance xmlns:p="http://www.codesynthesis.com/protocol"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/protocol protocol.xsd">
-
- <account>123456789</account>
-
-</p:balance>
diff --git a/xsd/examples/cxx/tree/multiroot/deposit.xml b/xsd/examples/cxx/tree/multiroot/deposit.xml
deleted file mode 100644
index 4d9449a..0000000
--- a/xsd/examples/cxx/tree/multiroot/deposit.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/multiroot/deposit.xml
-copyright : not copyrighted - public domain
-
--->
-
-<p:deposit xmlns:p="http://www.codesynthesis.com/protocol"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/protocol protocol.xsd">
-
- <account>123456789</account>
- <amount>1000000</amount>
-
-</p:deposit>
diff --git a/xsd/examples/cxx/tree/multiroot/dom-parse.cxx b/xsd/examples/cxx/tree/multiroot/dom-parse.cxx
deleted file mode 100644
index 98fc82e..0000000
--- a/xsd/examples/cxx/tree/multiroot/dom-parse.cxx
+++ /dev/null
@@ -1,93 +0,0 @@
-// file : examples/cxx/tree/multiroot/dom-parse.cxx
-// copyright : not copyrighted - public domain
-
-#include "dom-parse.hxx"
-
-#include <istream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/XMLUniDefs.hpp> // chLatin_*
-#include <xercesc/framework/Wrapper4InputSource.hpp>
-
-#include <xsd/cxx/xml/sax/std-input-source.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-#include <xsd/cxx/tree/error-handler.hxx>
-
-using namespace xercesc;
-namespace xml = xsd::cxx::xml;
-namespace tree = xsd::cxx::tree;
-
-xml::dom::auto_ptr<DOMDocument>
-parse (std::istream& is, const std::string& id, bool validate)
-{
- const XMLCh ls_id [] = {chLatin_L, chLatin_S, chNull};
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- xml::dom::auto_ptr<DOMLSParser> parser (
- impl->createLSParser (DOMImplementationLS::MODE_SYNCHRONOUS, 0));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- // Discard comment nodes in the document.
- //
- conf->setParameter (XMLUni::fgDOMComments, false);
-
- // Enable datatype normalization.
- //
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
-
- // Do not create EntityReference nodes in the DOM tree. No
- // EntityReference nodes will be created, only the nodes
- // corresponding to their fully expanded substitution text
- // will be created.
- //
- conf->setParameter (XMLUni::fgDOMEntities, false);
-
- // Perform namespace processing.
- //
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
-
- // Do not include ignorable whitespace in the DOM tree.
- //
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
-
- // Enable/Disable validation.
- //
- conf->setParameter (XMLUni::fgDOMValidate, validate);
- conf->setParameter (XMLUni::fgXercesSchema, validate);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
-
- // We will release the DOM document ourselves.
- //
- conf->setParameter (XMLUni::fgXercesUserAdoptsDOMDocument, true);
-
- // Set error handler.
- //
- tree::error_handler<char> eh;
- xml::dom::bits::error_handler_proxy<char> ehp (eh);
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- // Prepare input stream.
- //
- xml::sax::std_input_source isrc (is, id);
- Wrapper4InputSource wrap (&isrc, false);
-
- xml::dom::auto_ptr<DOMDocument> doc (parser->parse (&wrap));
-
- eh.throw_if_failed<tree::parsing<char> > ();
-
- return doc;
-}
diff --git a/xsd/examples/cxx/tree/multiroot/dom-parse.hxx b/xsd/examples/cxx/tree/multiroot/dom-parse.hxx
deleted file mode 100644
index c2ab0fb..0000000
--- a/xsd/examples/cxx/tree/multiroot/dom-parse.hxx
+++ /dev/null
@@ -1,22 +0,0 @@
-// file : examples/cxx/tree/multiroot/dom-parse.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef DOM_PARSE
-#define DOM_PARSE
-
-#include <string>
-#include <iosfwd>
-
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-
-// Parse an XML document from the standard input stream with an
-// optional resource id. Resource id is used in diagnostics as
-// well as to locate schemas referenced from inside the document.
-//
-xsd::cxx::xml::dom::auto_ptr<xercesc::DOMDocument>
-parse (std::istream& is,
- const std::string& id,
- bool validate);
-
-#endif // DOM_PARSE
diff --git a/xsd/examples/cxx/tree/multiroot/driver.cxx b/xsd/examples/cxx/tree/multiroot/driver.cxx
deleted file mode 100644
index 9497ef1..0000000
--- a/xsd/examples/cxx/tree/multiroot/driver.cxx
+++ /dev/null
@@ -1,124 +0,0 @@
-// file : examples/cxx/tree/multiroot/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <string>
-#include <fstream>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include "dom-parse.hxx"
-
-#include "protocol.hxx"
-
-using namespace std;
-using namespace protocol;
-
-// Parse an XML document and return a pointer to request_t which can
-// then be tested with dynamic_cast. If your vocabulary does not have
-// a common base type for all root element types then you can use
-// xml_schema::type which is a base for all generated types.
-//
-auto_ptr<request_t>
-parse (istream& is, const string& id)
-{
- using namespace xercesc;
- namespace xml = xsd::cxx::xml;
-
- // Parse an XML instance to a DOM document using the parse()
- // function from dom-parse.hxx.
- //
- xml_schema::dom::auto_ptr<DOMDocument> doc (parse (is, id, true));
-
- DOMElement* root (doc->getDocumentElement ());
-
- string ns (xml::transcode<char> (root->getNamespaceURI ()));
- string name (xml::transcode<char> (root->getLocalName ()));
-
- auto_ptr<request_t> r;
-
- // We could have handled the result directly in this function
- // instead of returning it as an opaque pointer and using
- // dynamic_cast later to figure out which request we are dealing
- // with.
- //
- if (ns == "http://www.codesynthesis.com/protocol")
- {
- if (name == "balance")
- {
- // Use the balance parsing function.
- //
- r.reset (balance (*doc).release ());
- }
- else if (name == "withdraw")
- {
- // Use the withdraw parsing function.
- //
- r.reset (withdraw (*doc).release ());
- }
- }
-
- if (r.get () == 0)
- cerr << "ignoring unknown request: " << ns << "#" << name << endl;
-
- return r;
-}
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " request.xml" << endl;
- return 1;
- }
-
- int r (0);
-
- // We need to initialize the Xerces-C++ runtime because we
- // are doing the XML-to-DOM parsing ourselves.
- //
- xercesc::XMLPlatformUtils::Initialize ();
-
- try
- {
- ifstream ifs;
- ifs.exceptions (ifstream::badbit | ifstream::failbit);
- ifs.open (argv[1]);
-
- auto_ptr<request_t> r (parse (ifs, argv[1]));
-
- // Let's print what we've got.
- //
- if (balance_t* b = dynamic_cast<balance_t*> (r.get ()))
- {
- cerr << "balance request for acc# " << b->account () << endl;
- }
- else if (withdraw_t* w = dynamic_cast<withdraw_t*> (r.get ()))
- {
- cerr << "withdrawal request for acc# " << w->account () << ", "
- << "amount: " << w->amount () << endl;
- }
- else
- {
- cerr << "unknown request" << endl;
- }
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- r = 1;
- }
-
- xercesc::XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/multiroot/makefile b/xsd/examples/cxx/tree/multiroot/makefile
deleted file mode 100644
index 4d6c907..0000000
--- a/xsd/examples/cxx/tree/multiroot/makefile
+++ /dev/null
@@ -1,109 +0,0 @@
-# file : examples/cxx/tree/multiroot/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := protocol.xsd
-cxx := driver.cxx dom-parse.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --root-element-all
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/protocol.xsd,$(install_doc_dir)/xsd/$(path)/protocol.xsd)
- $(call install-data,$(src_base)/balance.xml,$(install_doc_dir)/xsd/$(path)/balance.xml)
- $(call install-data,$(src_base)/deposit.xml,$(install_doc_dir)/xsd/$(path)/deposit.xml)
- $(call install-data,$(src_base)/withdraw.xml,$(install_doc_dir)/xsd/$(path)/withdraw.xml)
- $(call install-data,$(src_base)/dom-parse.hxx,$(install_doc_dir)/xsd/$(path)/dom-parse.hxx)
- $(call install-data,$(src_base)/dom-parse.cxx,$(install_doc_dir)/xsd/$(path)/dom-parse.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/protocol.xsd,$(dist_prefix)/$(path)/protocol.xsd)
- $(call install-data,$(src_base)/balance.xml,$(dist_prefix)/$(path)/balance.xml)
- $(call install-data,$(src_base)/deposit.xml,$(dist_prefix)/$(path)/deposit.xml)
- $(call install-data,$(src_base)/withdraw.xml,$(dist_prefix)/$(path)/withdraw.xml)
- $(call install-data,$(src_base)/dom-parse.hxx,$(dist_prefix)/$(path)/dom-parse.hxx)
- $(call install-data,$(src_base)/dom-parse.cxx,$(dist_prefix)/$(path)/dom-parse.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/multiroot/protocol.xsd b/xsd/examples/cxx/tree/multiroot/protocol.xsd
deleted file mode 100644
index 1121824..0000000
--- a/xsd/examples/cxx/tree/multiroot/protocol.xsd
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/multiroot/protocol.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:p="http://www.codesynthesis.com/protocol"
- targetNamespace="http://www.codesynthesis.com/protocol">
-
- <xsd:complexType name="request_t">
- <xsd:sequence>
- <xsd:element name="account" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="balance_t">
- <xsd:complexContent>
- <xsd:extension base="p:request_t"/>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="withdraw_t">
- <xsd:complexContent>
- <xsd:extension base="p:request_t">
- <xsd:sequence>
- <xsd:element name="amount" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="deposit_t">
- <xsd:complexContent>
- <xsd:extension base="p:request_t">
- <xsd:sequence>
- <xsd:element name="amount" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:element name="balance" type="p:balance_t"/>
- <xsd:element name="withdraw" type="p:withdraw_t"/>
- <xsd:element name="deposit" type="p:deposit_t"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/multiroot/withdraw.xml b/xsd/examples/cxx/tree/multiroot/withdraw.xml
deleted file mode 100644
index 8f1dc54..0000000
--- a/xsd/examples/cxx/tree/multiroot/withdraw.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/multiroot/withdraw.xml
-copyright : not copyrighted - public domain
-
--->
-
-<p:withdraw xmlns:p="http://www.codesynthesis.com/protocol"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/protocol protocol.xsd">
-
- <account>123456789</account>
- <amount>1000000</amount>
-
-</p:withdraw>
diff --git a/xsd/examples/cxx/tree/order/README b/xsd/examples/cxx/tree/order/README
deleted file mode 100644
index 7125a2d..0000000
--- a/xsd/examples/cxx/tree/order/README
+++ /dev/null
@@ -1,11 +0,0 @@
-This directory contains a number of examples that show how to use ordered
-types to capture and maintain content order. The following list gives an
-overview of each example:
-
-element
- Shows how to use ordered types to capture and maintain element order,
- including element wildcards.
-
-mixed
- Shows how to use ordered types to capture mixed content text and to
- maintain order information between elements and text.
diff --git a/xsd/examples/cxx/tree/order/element/README b/xsd/examples/cxx/tree/order/element/README
deleted file mode 100644
index 19f2381..0000000
--- a/xsd/examples/cxx/tree/order/element/README
+++ /dev/null
@@ -1,35 +0,0 @@
-This example shows how to use ordered types to capture and maintain
-element order, including element wildcards.
-
-The example consists of the following files:
-
-transactions.xsd
- XML Schema which describes various bank transactions. A batch of
- transactions can contain any number of different transactions in
- any order but the order of transaction in the batch is significant.
-
-library.xml
- Sample XML instance document.
-
-transactions.hxx
-transactions.cxx
- C++ types that represent the given vocabulary as well as a set of
- parsing and serialization functions. These are generated by XSD
- from transactions.xsd. Note that the --ordered-type option is
- used to indicate to the XSD compiler that the batch type is
- ordered. We also use the --generate-wildcard option to enable
- wildcard support. An element wildcard is used in the batch to
- allow transaction extensions.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input XML file. It then
- iterates over transactions in the batch using the content order
- sequence. The driver then performs various modifications of the
- object model while showing how to maintain the content order.
- Finally, it saves the modified transaction batch back to XML to
- verify that the content order is preserved in the output document.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver transactions.xml
diff --git a/xsd/examples/cxx/tree/order/element/driver.cxx b/xsd/examples/cxx/tree/order/element/driver.cxx
deleted file mode 100644
index 0ea6d6f..0000000
--- a/xsd/examples/cxx/tree/order/element/driver.cxx
+++ /dev/null
@@ -1,147 +0,0 @@
-// file : examples/cxx/tree/order/element/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <cassert>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "transactions.hxx"
-
-// The following string class keeps us sane when working with Xerces.
-// Include it after the generated header in order to get only char or
-// wchar_t version depending on how you compiled your schemas.
-//
-#include <xsd/cxx/xml/string.hxx>
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " transactions.xml" << endl;
- return 1;
- }
-
- using namespace xercesc;
-
- int r (0);
-
- // The Xerces-C++ DOM objects that will be used to store the
- // content matched by the wildcard "out-lives" the call to the
- // parsing function. Therefore we need to initialize the
- // Xerces-C++ runtime ourselves.
- //
- XMLPlatformUtils::Initialize ();
-
- try
- {
- using namespace transactions;
-
- // Parse the batch.
- //
- std::auto_ptr<batch> b (
- batch_ (argv[1], xml_schema::flags::dont_initialize));
-
- // Print what we've got in content order.
- //
- for (batch::content_order_const_iterator i (b->content_order ().begin ());
- i != b->content_order ().end ();
- ++i)
- {
- switch (i->id)
- {
- case batch::balance_id:
- {
- const balance& t (b->balance ()[i->index]);
- cerr << t.account () << " balance" << endl;
- break;
- }
- case batch::withdraw_id:
- {
- const withdraw& t (b->withdraw ()[i->index]);
- cerr << t.account () << " withdraw " << t.amount () << endl;
- break;
- }
- case batch::deposit_id:
- {
- const deposit& t (b->deposit ()[i->index]);
- cerr << t.account () << " deposit " << t.amount () << endl;
- break;
- }
- case batch::any_id:
- {
- namespace xml = xsd::cxx::xml;
-
- const DOMElement& e (b->any ()[i->index]);
- cerr << xml::transcode<char> (e.getLocalName ()) << endl;
- break;
- }
- default:
- {
- assert (false); // Unknown content id.
- }
- }
- }
-
- cerr << endl;
-
- // Modify the transaction batch. First remove the last transaction.
- // Note that we have to update both the content itself and content
- // order sequences.
- //
- batch::content_order_sequence& co (b->content_order ());
-
- co.pop_back ();
- b->withdraw ().pop_back ();
-
- // Now add a few more transactions. Again we have to add both the
- // content and its ordering. The order information consists of the
- // content id and, in case of a sequence, the index.
- //
- b->deposit ().push_back (deposit (123456789, 100000));
- co.push_back (
- batch::content_order_type (
- batch::deposit_id, b->deposit ().size () - 1));
-
- // The next transaction we add at the beginning of the batch.
- //
- b->balance ().push_back (balance (123456789));
- co.insert (co.begin (),
- batch::content_order_type (
- batch::balance_id, b->balance ().size () - 1));
-
- // Note also that when we merely modify the content of one
- // of the elements in place, we don't need to update its
- // order. For example:
- //
- b->deposit ()[0].amount (2000000);
-
- // Serialize the modified transaction batch back to XML.
- //
- xml_schema::namespace_infomap map;
-
- map[""].name = "http://www.codesynthesis.com/transactions";
- map[""].schema = "transactions.xsd";
- map["te"].name = "http://www.codesynthesis.com/transactions-extras";
-
- batch_ (std::cout,
- *b,
- map,
- "UTF-8",
- xml_schema::flags::dont_initialize);
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
-
- XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/order/element/makefile b/xsd/examples/cxx/tree/order/element/makefile
deleted file mode 100644
index 272c17f..0000000
--- a/xsd/examples/cxx/tree/order/element/makefile
+++ /dev/null
@@ -1,100 +0,0 @@
-# file : examples/cxx/tree/order/element/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := transactions.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l) -lnsl
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization --generate-wildcard \
---ordered-type batch
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/transactions.xsd,$(install_doc_dir)/xsd/$(path)/transactions.xsd)
- $(call install-data,$(src_base)/transactions.xml,$(install_doc_dir)/xsd/$(path)/transactions.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/transactions.xsd,$(dist_prefix)/$(path)/transactions.xsd)
- $(call install-data,$(src_base)/transactions.xml,$(dist_prefix)/$(path)/transactions.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/order/element/transactions.xml b/xsd/examples/cxx/tree/order/element/transactions.xml
deleted file mode 100644
index 4c317c2..0000000
--- a/xsd/examples/cxx/tree/order/element/transactions.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/order/element/transactions.xml
-copyright : not copyrighted - public domain
-
--->
-
-<batch xmlns="http://www.codesynthesis.com/transactions"
- xmlns:te="http://www.codesynthesis.com/transactions-extras"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/transactions transactions.xsd">
- <deposit>
- <account>123456789</account>
- <amount>1000000</amount>
- </deposit>
-
- <balance>
- <account>123456789</account>
- </balance>
-
- <te:block>
- <account>123456789</account>
- <amount>500000</amount>
- </te:block>
-
- <withdraw>
- <account>123456789</account>
- <amount>500000</amount>
- </withdraw>
-</batch>
diff --git a/xsd/examples/cxx/tree/order/element/transactions.xsd b/xsd/examples/cxx/tree/order/element/transactions.xsd
deleted file mode 100644
index 053aac4..0000000
--- a/xsd/examples/cxx/tree/order/element/transactions.xsd
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/order/element/transactions.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:t="http://www.codesynthesis.com/transactions"
- targetNamespace="http://www.codesynthesis.com/transactions"
- elementFormDefault="qualified">
-
- <xsd:complexType name="transaction">
- <xsd:sequence>
- <xsd:element name="account" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="balance">
- <xsd:complexContent>
- <xsd:extension base="t:transaction"/>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="withdraw">
- <xsd:complexContent>
- <xsd:extension base="t:transaction">
- <xsd:sequence>
- <xsd:element name="amount" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="deposit">
- <xsd:complexContent>
- <xsd:extension base="t:transaction">
- <xsd:sequence>
- <xsd:element name="amount" type="xsd:unsignedInt"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="batch">
- <xsd:choice minOccurs="0" maxOccurs="unbounded">
- <xsd:element name="balance" type="t:balance"/>
- <xsd:element name="withdraw" type="t:withdraw"/>
- <xsd:element name="deposit" type="t:deposit"/>
- <xsd:any namespace="##other" processContents="lax"/>
- </xsd:choice>
- </xsd:complexType>
-
- <xsd:element name="batch" type="t:batch"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/order/makefile b/xsd/examples/cxx/tree/order/makefile
deleted file mode 100644
index 2424e2b..0000000
--- a/xsd/examples/cxx/tree/order/makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-# file : examples/cxx/tree/order/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-all_examples := element mixed
-build_examples := element mixed
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(build_examples)))
-
-# Install & Dist.
-#
-$(install) $(dist) $(dist-win): path := $(subst $(src_root)/,,$(src_base))
-
-$(install): $(addprefix $(out_base)/,$(addsuffix /.install,$(all_examples)))
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
-
-$(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(all_examples)))
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(addprefix $(out_base)/,$(addsuffix /.dist-win,$(all_examples)))
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(build_examples)))
-
-$(call include,$(bld_root)/install.make)
-
-ifneq ($(filter $(MAKECMDGOALS),dist dist-win install),)
-$(foreach e,$(all_examples),$(call import,$(src_base)/$e/makefile))
-else
-$(foreach e,$(build_examples),$(call import,$(src_base)/$e/makefile))
-endif
diff --git a/xsd/examples/cxx/tree/order/mixed/README b/xsd/examples/cxx/tree/order/mixed/README
deleted file mode 100644
index e66c1ad..0000000
--- a/xsd/examples/cxx/tree/order/mixed/README
+++ /dev/null
@@ -1,45 +0,0 @@
-This example shows how to use ordered types to capture mixed content
-text and to maintain order information between elements and text.
-
-In this example we use mixed content model to describe text with
-embedded links in the form:
-
- This paragraph talks about <a href="uri">time</a>.
-
-The example transforms such text into plain text with references in
-the form:
-
- This paragraph talks about time[uri].
-
-It also saves the modified text back to XML in order to verify the
-element and text order.
-
-The example consists of the following files:
-
-text.xsd
- XML Schema which describes "text with links" instance documents.
-
-text.xml
- Sample XML instance document.
-
-text.hxx
-text.cxx
- C++ types that represent the given vocabulary as well as a set of
- parsing and serialization functions. These are generated by XSD
- from text.xsd. Note that the --ordered-type-mixed option is used
- to indicate to the XSD compiler that all types with mixed content
- should be automatically treated as ordered.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input XML file. It then
- iterates over the text and elements in the content order to convert
- the document to its plain text representation. The driver then adds
- another paragraph of text and a link to the object model while showing
- how to maintain the content order. Finally, it saves the modified
- text back to XML to verify that the content order is preserved in
- the output document.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver text.xml
diff --git a/xsd/examples/cxx/tree/order/mixed/driver.cxx b/xsd/examples/cxx/tree/order/mixed/driver.cxx
deleted file mode 100644
index 9606b67..0000000
--- a/xsd/examples/cxx/tree/order/mixed/driver.cxx
+++ /dev/null
@@ -1,89 +0,0 @@
-// file : examples/cxx/tree/order/mixed/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <cassert>
-#include <iostream>
-
-#include "text.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " text.xml" << endl;
- return 1;
- }
-
- try
- {
- std::auto_ptr<text> t (text_ (argv[1]));
-
- // Print what we've got in content order.
- //
- for (text::content_order_const_iterator i (t->content_order ().begin ());
- i != t->content_order ().end ();
- ++i)
- {
- switch (i->id)
- {
- case text::a_id:
- {
- const anchor& a (t->a ()[i->index]);
- cerr << a << "[" << a.href () << "]";
- break;
- }
- case text::text_content_id:
- {
- const xml_schema::string& s (t->text_content ()[i->index]);
- cerr << s;
- break;
- }
- default:
- {
- assert (false); // Unknown content id.
- }
- }
- }
-
- cerr << endl;
-
- // Modify the document. Note that we have to update both the content
- // itself and content order sequences.
- //
- typedef text::content_order_type order_type;
-
- text::content_order_sequence& co (t->content_order ());
- text::text_content_sequence& tc (t->text_content ());
-
- tc.push_back ("The last paragraph doesn't talk about ");
- co.push_back (order_type (text::text_content_id, tc.size () - 1));
-
- t->a ().push_back (anchor ("anything", "http://en.wikipedia.org"));
- co.push_back (order_type (text::a_id, t->a ().size () - 1));
-
- tc.push_back (" in particular.\n\n");
- co.push_back (order_type (text::text_content_id, tc.size () - 1));
-
- // Serialize the modified document back to XML.
- //
- xml_schema::namespace_infomap map;
-
- map[""].schema = "text.xsd";
-
- text_ (std::cout,
- *t,
- map,
- "UTF-8",
- xml_schema::flags::dont_pretty_print);
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/tree/order/mixed/makefile b/xsd/examples/cxx/tree/order/mixed/makefile
deleted file mode 100644
index 311ce52..0000000
--- a/xsd/examples/cxx/tree/order/mixed/makefile
+++ /dev/null
@@ -1,99 +0,0 @@
-# file : examples/cxx/tree/order/mixed/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := text.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l) -lnsl
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization --ordered-type-mixed
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/text.xsd,$(install_doc_dir)/xsd/$(path)/text.xsd)
- $(call install-data,$(src_base)/text.xml,$(install_doc_dir)/xsd/$(path)/text.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/text.xsd,$(dist_prefix)/$(path)/text.xsd)
- $(call install-data,$(src_base)/text.xml,$(dist_prefix)/$(path)/text.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/order/mixed/text.xml b/xsd/examples/cxx/tree/order/mixed/text.xml
deleted file mode 100644
index ac80159..0000000
--- a/xsd/examples/cxx/tree/order/mixed/text.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/order/mixed/text.xml
-copyright : not copyrighted - public domain
-
--->
-
-<text xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="text.xsd">
-
-The first paragraph of this text talks about <a href="http://en.wikipedia.org/wiki/time">time</a>.
-
-And this paragraph talks about <a href="http://en.wikipedia.org/wiki/space">space</a>.
-
-</text>
diff --git a/xsd/examples/cxx/tree/order/mixed/text.xsd b/xsd/examples/cxx/tree/order/mixed/text.xsd
deleted file mode 100644
index e45abcd..0000000
--- a/xsd/examples/cxx/tree/order/mixed/text.xsd
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/order/mixed/text.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="anchor">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="href" type="xsd:anyURI" use="required"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:complexType name="text" mixed="true">
- <xsd:sequence>
- <xsd:element name="a" type="anchor" minOccurs="0" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="text" type="text"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/performance/README b/xsd/examples/cxx/tree/performance/README
deleted file mode 100644
index cb79cc2..0000000
--- a/xsd/examples/cxx/tree/performance/README
+++ /dev/null
@@ -1,58 +0,0 @@
-This example measures the performance of parsing and serialization in
-the C++/Tree mapping. It also shows how to structure your code to
-achieve the maximum performance for these two operations.
-
-The example consists of the following files:
-
-test.xsd
- XML Schema which describes the test vocabulary.
-
-test-50k.xml
- Test XML document.
-
-gen.cxx
- Program to generate a test document of desired size.
-
-time.hxx
-time.cxx
- Class definition that represents time.
-
-test.hxx
-test.ixx
-test.cxx
- C++ types that represent the given vocabulary, a set of parsing
- functions that convert XML documents to a tree-like in-memory object
- model, and a set of serialization functions that convert the object
- model back to XML. These are generated by the XSD compiler from
- test.xsd.
-
-parsing.cxx
- Parsing performance test. It first reads the entire document into
- a memory buffer. It then creates a DOM parser and pre-parses and
- caches the schema if validation is enabled. Finally, it runs the
- performance measurement loop which on each iteration parses the
- XML document from the in-memory buffer into DOM and then DOM to
- the object model.
-
-serialization.cxx
- Serialization performance test. It first parses the XML document
- into the object model. It then creates a memory buffer into which
- the document is serialized and a DOM serializer. Finally, it runs
- the performance measurement loop which on each iteration serializes
- the object model to DOM and DOM to XML.
-
-driver.cxx
- Driver for the example. It first parses the command line arguments.
- It then initializes the Xerces-C++ runtime and calls the parsing
- and serialization tests described above.
-
-To run the example on a test XML document simply execute:
-
-$ ./driver test-50k.xml
-
-The -v option can be used to turn on validation in the underlying XML
-parser (off by default). The -i option can be used to specify the
-number of parsing and serialization iterations (1000 by default). For
-example:
-
-$ ./driver -v -i 100 test-50k.xml
diff --git a/xsd/examples/cxx/tree/performance/driver.cxx b/xsd/examples/cxx/tree/performance/driver.cxx
deleted file mode 100644
index b626e4d..0000000
--- a/xsd/examples/cxx/tree/performance/driver.cxx
+++ /dev/null
@@ -1,90 +0,0 @@
-// file : examples/cxx/tree/performance/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <string>
-#include <sstream>
-#include <iostream>
-
-#include <xercesc/util/PlatformUtils.hpp>
-
-using namespace std;
-
-// See parsing.cxx
-//
-bool
-parsing (const char* file, unsigned long iter, bool validate);
-
-// See serialization.cxx
-//
-bool
-serialization (const char* file, unsigned long iter);
-
-int
-main (int argc, char* argv[])
-{
- if (argc < 2)
- {
- cerr << "usage: " << argv[0] << " [-v] [-i <count>] test.xml" << endl
- << "\t -v turn on validation (default is off)" << endl
- << "\t -i number of iterations to perform (default is 1000)" << endl;
- return 1;
- }
-
- bool validate (false);
- unsigned long iter (1000);
- const char* file (0);
-
- // Parse command line arguments.
- //
- for (int i (1); i < argc; ++i)
- {
- std::string arg (argv[i]);
-
- if (arg == "-v")
- {
- validate = true;
- }
- else if (arg == "-i")
- {
- if (++i == argc)
- {
- cerr << "argument expected for the -i option" << endl;
- return 1;
- }
-
- iter = 0;
- istringstream is (argv[i]);
- is >> iter;
-
- if (iter == 0)
- {
- cerr << "invalid argument for the -i option" << endl;
- return 1;
- }
- }
- else
- {
- file = argv[i];
- break;
- }
- }
-
- if (file == 0)
- {
- cerr << "no input file specified" << endl;
- return 1;
- }
-
- int r (0);
-
- xercesc::XMLPlatformUtils::Initialize ();
-
- // Call parsing and serialization tests.
- //
- if (!parsing (file, iter, validate) || !serialization (file, iter))
- r = 1;
-
- xercesc::XMLPlatformUtils::Terminate ();
-
- return r;
-}
diff --git a/xsd/examples/cxx/tree/performance/gen.cxx b/xsd/examples/cxx/tree/performance/gen.cxx
deleted file mode 100644
index b6392c0..0000000
--- a/xsd/examples/cxx/tree/performance/gen.cxx
+++ /dev/null
@@ -1,76 +0,0 @@
-#include <fstream>
-#include <sstream>
-#include <iostream>
-
-using namespace std;
-
-static const char* enums[] =
-{
- "romance",
- "fiction",
- "horror",
- "history",
- "philosophy"
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 3)
- {
- cerr << "usage: " << argv[0] << " <count> <output-file>" << endl;
- return 1;
- }
-
- unsigned long n (0);
- istringstream is (argv[1]);
- is >> n;
-
- if (n == 0)
- {
- cerr << "record count argument should be a positive number" << endl;
- return 1;
- }
-
- ofstream ofs (argv[2]);
-
- if (!ofs.is_open ())
- {
- cerr << "unable to open '" << argv[2] << "' in write mode" << endl;
- return 1;
- }
-
- ofs << "<t:root xmlns:t='test' " <<
- "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " <<
- "xsi:schemaLocation='test test.xsd'>";
-
- unsigned short ch (1), en (0);
-
- for (unsigned long i (0); i < n; ++i)
- {
- ofs << "<record orange=\"" << i << "\"";
-
- if (i % 2 == 0)
- ofs << " apple=\"true\"";
-
- ofs << ">"
- << "<int>42</int>"
- << "<double>42345.4232</double>"
- << "<name>name123_45</name>";
-
- if (i % 2 == 1)
- ofs << "<string>one two three</string>";
-
- ofs << "<choice" << ch << ">" << ch << " choice</choice" << ch << ">"
- << "<enum>" << enums[en] << "</enum>"
- << "</record>";
-
- if (++ch > 4)
- ch = 1;
-
- if (++en > 4)
- en = 0;
- }
-
- ofs << "</t:root>";
-}
diff --git a/xsd/examples/cxx/tree/performance/makefile b/xsd/examples/cxx/tree/performance/makefile
deleted file mode 100644
index e6f4258..0000000
--- a/xsd/examples/cxx/tree/performance/makefile
+++ /dev/null
@@ -1,111 +0,0 @@
-# file : examples/cxx/tree/performance/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx parsing.cxx serialization.cxx time.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-inline --generate-serialization
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/parsing.cxx,$(install_doc_dir)/xsd/$(path)/parsing.cxx)
- $(call install-data,$(src_base)/serialization.cxx,$(install_doc_dir)/xsd/$(path)/serialization.cxx)
- $(call install-data,$(src_base)/test.xsd,$(install_doc_dir)/xsd/$(path)/test.xsd)
- $(call install-data,$(src_base)/test-50k.xml,$(install_doc_dir)/xsd/$(path)/test-50k.xml)
- $(call install-data,$(src_base)/time.hxx,$(install_doc_dir)/xsd/$(path)/time.hxx)
- $(call install-data,$(src_base)/time.cxx,$(install_doc_dir)/xsd/$(path)/time.cxx)
- $(call install-data,$(src_base)/gen.cxx,$(install_doc_dir)/xsd/$(path)/gen.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/parsing.cxx,$(dist_prefix)/$(path)/parsing.cxx)
- $(call install-data,$(src_base)/serialization.cxx,$(dist_prefix)/$(path)/serialization.cxx)
- $(call install-data,$(src_base)/test.xsd,$(dist_prefix)/$(path)/test.xsd)
- $(call install-data,$(src_base)/test-50k.xml,$(dist_prefix)/$(path)/test-50k.xml)
- $(call install-data,$(src_base)/time.hxx,$(dist_prefix)/$(path)/time.hxx)
- $(call install-data,$(src_base)/time.cxx,$(dist_prefix)/$(path)/time.cxx)
- $(call install-data,$(src_base)/gen.cxx,$(dist_prefix)/$(path)/gen.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/performance/parsing.cxx b/xsd/examples/cxx/tree/performance/parsing.cxx
deleted file mode 100644
index bf7f667..0000000
--- a/xsd/examples/cxx/tree/performance/parsing.cxx
+++ /dev/null
@@ -1,172 +0,0 @@
-// file : examples/cxx/tree/performance/parsing.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <cstddef> // std::size_t
-#include <fstream>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/dom/DOMLSParser.hpp>
-#include <xercesc/dom/DOMImplementation.hpp>
-#include <xercesc/dom/DOMImplementationRegistry.hpp>
-
-#include <xercesc/validators/common/Grammar.hpp>
-
-#include <xercesc/framework/MemBufInputSource.hpp>
-#include <xercesc/framework/Wrapper4InputSource.hpp>
-
-#include <xercesc/util/XMLUniDefs.hpp>
-
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-#include <xsd/cxx/tree/error-handler.hxx>
-
-#include "time.hxx"
-#include "test.hxx"
-
-using namespace std;
-
-bool
-parsing (const char* file, unsigned long iter, bool validate)
-{
- try
- {
- cerr << "parsing:" << endl;
-
- ifstream ifs;
- ifs.exceptions (ios_base::failbit);
- ifs.open (file, ios::in | ios::ate);
-
- size_t size (ifs.tellg ());
- ifs.seekg (0, ios::beg);
-
- char* buf = new char[size];
- ifs.read (buf, size);
- ifs.close ();
-
- cerr << " document size: " << size << " bytes" << endl
- << " iterations: " << iter << endl;
-
- // Create XML parser that we are going to use in all iterations.
- //
- using namespace xercesc;
-
- const XMLCh ls_id[] =
- {xercesc::chLatin_L, xercesc::chLatin_S, xercesc::chNull};
-
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- // Use the error handler implementation provided by the XSD runtime.
- //
- xsd::cxx::tree::error_handler<char> eh;
- xsd::cxx::xml::dom::bits::error_handler_proxy<char> ehp (eh);
-
- xml_schema::dom::auto_ptr<DOMLSParser> parser (
- impl->createLSParser (DOMImplementationLS::MODE_SYNCHRONOUS, 0));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- conf->setParameter (XMLUni::fgDOMComments, false);
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
- conf->setParameter (XMLUni::fgDOMEntities, false);
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
-
- // Set error handler.
- //
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- if (validate)
- {
- conf->setParameter (XMLUni::fgDOMValidate, true);
- conf->setParameter (XMLUni::fgXercesSchema, true);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
-
- // If we are validating, pre-load and cache the schema.
- //
- if (!parser->loadGrammar ("test.xsd", Grammar::SchemaGrammarType, true))
- {
- // In Xerces-C++ grammar loading failure results in just a warning.
- // Make it a fatal error.
- //
- eh.handle ("test.xsd", 0, 0,
- xsd::cxx::tree::error_handler<char>::severity::fatal,
- "unable to load schema");
- }
-
- eh.throw_if_failed<xml_schema::parsing> ();
- conf->setParameter (XMLUni::fgXercesUseCachedGrammarInParse, true);
- conf->setParameter (XMLUni::fgXercesLoadSchema, false);
- }
- else
- {
- conf->setParameter (XMLUni::fgDOMValidate, false);
- conf->setParameter (XMLUni::fgXercesSchema, false);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
- }
-
- conf->setParameter (XMLUni::fgXercesUserAdoptsDOMDocument, true);
-
- // Create memory buffer input source.
- //
- MemBufInputSource is (
- reinterpret_cast<XMLByte*> (buf), size, file, false);
- is.setCopyBufToStream (false);
- Wrapper4InputSource wis (&is, false);
-
- // Parsing loop.
- //
- os::time start;
-
- for (unsigned long i (0); i < iter; ++i)
- {
- // First parse XML to DOM reusing the parser we created above.
- //
- xml_schema::dom::auto_ptr<DOMDocument> doc (parser->parse (&wis));
- eh.throw_if_failed<xml_schema::parsing> ();
-
- // Then parse DOM to the object model.
- //
- auto_ptr<test::root> r (test::root_ (*doc));
- }
-
- os::time end;
- os::time time (end - start);
-
- delete[] buf;
-
- cerr << " time: " << time << " sec" << endl;
-
- double ms (time.sec () * 1000000ULL + time.nsec () / 1000ULL);
-
- // Calculate throughput in documents/sec.
- //
- double tpd ((iter / ms) * 1000000);
- cerr << " throughput: " << tpd << " documents/sec" << endl;
-
- // Calculate throughput in MBytes/sec.
- //
- double tpb (((size * iter) / ms) * 1000000/(1024*1024));
- cerr << " throughput: " << tpb << " MBytes/sec" << endl;
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return false;
- }
- catch (std::ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return false;
- }
-
- return true;
-}
diff --git a/xsd/examples/cxx/tree/performance/serialization.cxx b/xsd/examples/cxx/tree/performance/serialization.cxx
deleted file mode 100644
index 08e5740..0000000
--- a/xsd/examples/cxx/tree/performance/serialization.cxx
+++ /dev/null
@@ -1,132 +0,0 @@
-// file : examples/cxx/tree/performance/serialization.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <cstddef> // std::size_t
-#include <sstream>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/dom/DOMLSOutput.hpp>
-#include <xercesc/dom/DOMLSSerializer.hpp>
-#include <xercesc/dom/DOMImplementation.hpp>
-#include <xercesc/dom/DOMImplementationRegistry.hpp>
-
-#include <xercesc/framework/MemBufFormatTarget.hpp>
-
-#include <xercesc/util/XMLUniDefs.hpp>
-
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-#include <xsd/cxx/tree/error-handler.hxx>
-
-#include "time.hxx"
-#include "test.hxx"
-
-using namespace std;
-
-bool
-serialization (const char* file, unsigned long iter)
-{
- try
- {
- using namespace xercesc;
-
- cerr << "serialization:" << endl;
-
- // Get the object model using the standard parsing function.
- //
- auto_ptr<test::root> r (
- test::root_ (file,
- xml_schema::flags::dont_initialize |
- xml_schema::flags::dont_validate));
-
- // Serialize it to the in-memory buffer. This makes sure the buffer
- // pre-allocates enough memory.
- //
- xml_schema::namespace_infomap map;
- map["t"].name = "test";
- map["t"].schema = "test.xsd";
-
- MemBufFormatTarget ft (10240);
- test::root_ (ft, *r, map, "UTF-8",
- xml_schema::flags::dont_initialize |
- xml_schema::flags::dont_pretty_print |
- xml_schema::flags::no_xml_declaration);
-
- size_t size (ft.getLen ());
- cerr << " document size: " << size << " bytes" << endl
- << " iterations: " << iter << endl;
-
- // Create XML serializer that we are going to use in all iterations.
- //
- const XMLCh ls_id[] =
- {xercesc::chLatin_L, xercesc::chLatin_S, xercesc::chNull};
-
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- // Use the error handler implementation provided by the XSD runtime.
- //
- xsd::cxx::tree::error_handler<char> eh;
- xsd::cxx::xml::dom::bits::error_handler_proxy<char> ehp (eh);
-
- xml_schema::dom::auto_ptr<DOMLSSerializer> writer (
- impl->createLSSerializer ());
-
- DOMConfiguration* conf (writer->getDomConfig ());
-
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
- conf->setParameter (XMLUni::fgDOMXMLDeclaration, false);
-
- xml_schema::dom::auto_ptr<DOMLSOutput> out (impl->createLSOutput ());
-
- out->setByteStream (&ft);
-
- // Serialization loop.
- //
- os::time start;
-
- for (unsigned long i (0); i < iter; ++i)
- {
- // First serialize the object model to DOM.
- //
- xml_schema::dom::auto_ptr<DOMDocument> doc (test::root_ (*r, map));
-
- ft.reset ();
-
- // Then serialize DOM to XML reusing the serializer we created above.
- //
- writer->write (doc.get (), out.get ());
- eh.throw_if_failed<xml_schema::serialization> ();
- }
-
- os::time end;
- os::time time (end - start);
-
- cerr << " time: " << time << " sec" << endl;
-
- double ms (time.sec () * 1000000ULL + time.nsec () / 1000ULL);
-
- // Calculate throughput in documents/sec.
- //
- double tpd ((iter / ms) * 1000000);
- cerr << " throughput: " << tpd << " documents/sec" << endl;
-
- // Calculate throughput in MBytes/sec.
- //
- double tpb (((size * iter) / ms) * 1000000/(1024*1024));
- cerr << " throughput: " << tpb << " MBytes/sec" << endl;
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return false;
- }
- catch (std::ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return false;
- }
-
- return true;
-}
diff --git a/xsd/examples/cxx/tree/performance/test-50k.xml b/xsd/examples/cxx/tree/performance/test-50k.xml
deleted file mode 100644
index 42e22f3..0000000
--- a/xsd/examples/cxx/tree/performance/test-50k.xml
+++ /dev/null
@@ -1 +0,0 @@
-<t:root xmlns:t='test' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='test test.xsd'><record orange="0" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="1"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="2" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="3"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="4" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="5"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="6" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="7"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="8" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="9"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="10" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="11"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="12" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="13"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="14" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="15"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="16" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="17"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="18" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="19"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="20" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="21"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="22" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="23"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="24" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="25"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="26" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="27"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="28" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="29"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="30" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="31"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="32" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="33"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="34" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="35"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="36" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="37"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="38" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="39"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="40" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="41"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="42" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="43"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="44" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="45"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="46" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="47"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="48" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="49"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="50" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="51"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="52" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="53"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="54" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="55"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="56" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="57"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="58" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="59"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="60" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="61"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="62" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="63"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="64" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="65"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="66" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="67"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="68" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="69"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="70" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="71"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="72" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="73"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="74" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="75"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="76" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="77"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="78" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="79"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="80" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="81"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="82" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="83"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="84" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="85"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="86" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="87"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="88" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="89"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="90" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="91"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="92" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="93"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="94" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="95"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="96" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="97"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="98" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="99"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="100" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="101"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="102" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="103"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="104" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="105"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="106" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="107"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="108" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="109"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="110" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="111"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="112" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="113"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="114" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="115"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="116" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="117"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="118" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="119"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="120" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="121"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="122" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="123"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="124" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="125"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="126" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="127"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="128" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="129"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="130" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="131"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="132" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="133"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="134" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="135"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="136" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="137"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="138" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="139"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="140" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="141"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="142" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="143"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="144" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="145"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="146" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="147"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="148" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="149"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="150" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="151"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="152" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="153"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="154" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="155"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="156" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="157"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="158" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="159"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="160" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="161"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="162" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="163"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="164" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="165"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="166" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="167"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="168" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="169"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="170" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="171"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="172" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="173"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="174" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="175"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="176" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="177"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="178" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="179"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="180" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="181"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="182" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="183"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="184" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="185"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="186" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="187"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="188" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="189"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="190" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="191"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="192" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="193"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="194" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="195"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="196" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="197"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="198" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="199"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="200" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="201"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="202" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="203"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="204" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="205"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="206" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="207"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="208" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="209"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="210" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="211"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="212" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="213"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="214" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="215"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="216" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="217"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="218" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="219"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="220" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="221"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="222" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="223"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="224" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="225"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="226" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="227"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="228" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="229"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="230" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="231"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="232" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="233"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="234" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="235"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="236" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="237"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="238" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="239"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="240" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="241"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="242" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="243"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="244" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="245"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="246" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="247"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="248" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="249"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="250" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="251"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="252" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="253"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="254" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="255"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="256" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="257"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="258" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="259"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="260" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="261"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="262" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="263"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="264" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="265"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="266" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="267"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="268" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="269"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="270" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="271"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="272" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="273"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="274" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="275"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="276" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="277"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="278" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="279"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="280" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="281"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="282" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="283"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="284" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="285"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="286" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="287"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="288" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="289"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="290" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="291"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="292" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="293"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="294" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="295"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="296" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record><record orange="297"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>horror</enum></record><record orange="298" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>history</enum></record><record orange="299"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>philosophy</enum></record><record orange="300" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>romance</enum></record><record orange="301"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>fiction</enum></record><record orange="302" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>horror</enum></record><record orange="303"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>history</enum></record><record orange="304" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>philosophy</enum></record><record orange="305"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>romance</enum></record><record orange="306" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>fiction</enum></record><record orange="307"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>horror</enum></record><record orange="308" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>history</enum></record><record orange="309"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>philosophy</enum></record><record orange="310" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>romance</enum></record><record orange="311"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>fiction</enum></record><record orange="312" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>horror</enum></record><record orange="313"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice2>2 choice</choice2><enum>history</enum></record><record orange="314" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice3>3 choice</choice3><enum>philosophy</enum></record><record orange="315"><int>42</int><double>42345.4232</double><name>name123_45</name><string>one two three</string><choice4>4 choice</choice4><enum>romance</enum></record><record orange="316" apple="true"><int>42</int><double>42345.4232</double><name>name123_45</name><choice1>1 choice</choice1><enum>fiction</enum></record></t:root> \ No newline at end of file
diff --git a/xsd/examples/cxx/tree/performance/test.xsd b/xsd/examples/cxx/tree/performance/test.xsd
deleted file mode 100644
index d9b5778..0000000
--- a/xsd/examples/cxx/tree/performance/test.xsd
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/performance/test.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<schema targetNamespace="test" xmlns:t="test"
- xmlns="http://www.w3.org/2001/XMLSchema">
-
- <simpleType name="enum">
- <restriction base="string">
- <enumeration value="romance"/>
- <enumeration value="fiction"/>
- <enumeration value="horror"/>
- <enumeration value="history"/>
- <enumeration value="philosophy"/>
- </restriction>
- </simpleType>
-
- <complexType name="record">
- <sequence>
- <element name="int" type="unsignedInt"/>
- <element name="double" type="double"/>
- <element name="name" type="NCName"/>
- <element name="string" type="string" minOccurs="0" maxOccurs="1"/>
- <choice>
- <element name="choice1" type="string"/>
- <element name="choice2" type="string"/>
- <element name="choice3" type="string"/>
- <element name="choice4" type="string"/>
- </choice>
- <element name="enum" type="t:enum"/>
- </sequence>
- <attribute name="apple" type="boolean"/>
- <attribute name="orange" type="unsignedLong" use="required"/>
- </complexType>
-
- <complexType name="root">
- <sequence>
- <element name="record" type="t:record" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:root"/>
-
-</schema>
diff --git a/xsd/examples/cxx/tree/performance/time.cxx b/xsd/examples/cxx/tree/performance/time.cxx
deleted file mode 100644
index 6bec91b..0000000
--- a/xsd/examples/cxx/tree/performance/time.cxx
+++ /dev/null
@@ -1,46 +0,0 @@
-// file : examples/cxx/tree/performance/time.cxx
-// copyright : not copyrighted - public domain
-
-#include "time.hxx"
-
-#if defined (WIN32) || defined (__WIN32__)
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h> // GetSystemTimeAsFileTime
-#else
-# include <time.h> // gettimeofday
-# include <sys/time.h> // timeval
-#endif
-
-#include <ostream> // std::ostream
-#include <iomanip> // std::setfill, std::setw
-
-namespace os
-{
- time::
- time ()
- {
-#if defined (WIN32) || defined (__WIN32__)
- FILETIME ft;
- GetSystemTimeAsFileTime (&ft);
- unsigned long long v (
- ((unsigned long long) (ft.dwHighDateTime) << 32) + ft.dwLowDateTime);
-
- sec_ = static_cast<unsigned long> (v / 10000000ULL);
- nsec_ = static_cast<unsigned long> ((v % 10000000ULL) * 100);
-#else
- timeval tv;
- if (gettimeofday(&tv, 0) != 0)
- throw failed ();
-
- sec_ = static_cast<unsigned long> (tv.tv_sec);
- nsec_ = static_cast<unsigned long> (tv.tv_usec * 1000);
-#endif
- }
-
- std::ostream&
- operator<< (std::ostream& o, time const& t)
- {
- return o << t.sec () << '.'
- << std::setfill ('0') << std::setw (9) << t.nsec ();
- }
-}
diff --git a/xsd/examples/cxx/tree/performance/time.hxx b/xsd/examples/cxx/tree/performance/time.hxx
deleted file mode 100644
index ea71e83..0000000
--- a/xsd/examples/cxx/tree/performance/time.hxx
+++ /dev/null
@@ -1,110 +0,0 @@
-// file : examples/cxx/tree/performance/time.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef TIME_HXX
-#define TIME_HXX
-
-#include <iosfwd> // std::ostream&
-
-namespace os
-{
- class time
- {
- public:
- class failed {};
-
- // Create a time object representing the current time.
- //
- time ();
-
- time (unsigned long long nsec)
- {
- sec_ = static_cast<unsigned long> (nsec / 1000000000ULL);
- nsec_ = static_cast<unsigned long> (nsec % 1000000000ULL);
- }
-
- time (unsigned long sec, unsigned long nsec)
- {
- sec_ = sec;
- nsec_ = nsec;
- }
-
- public:
- unsigned long
- sec () const
- {
- return sec_;
- }
-
- unsigned long
- nsec () const
- {
- return nsec_;
- }
-
- public:
- class overflow {};
- class underflow {};
-
- time
- operator+= (time const& b)
- {
- unsigned long long tmp = 0ULL + nsec_ + b.nsec_;
-
- sec_ += static_cast<unsigned long> (b.sec_ + tmp / 1000000000ULL);
- nsec_ = static_cast<unsigned long> (tmp % 1000000000ULL);
-
- return *this;
- }
-
- time
- operator-= (time const& b)
- {
- if (*this < b)
- throw underflow ();
-
- sec_ -= b.sec_;
-
- if (nsec_ < b.nsec_)
- {
- --sec_;
- nsec_ += 1000000000ULL - b.nsec_;
- }
- else
- nsec_ -= b.nsec_;
-
- return *this;
- }
-
- friend time
- operator+ (time const& a, time const& b)
- {
- time r (a);
- r += b;
- return r;
- }
-
- friend time
- operator- (time const& a, time const& b)
- {
- time r (a);
- r -= b;
- return r;
- }
-
- friend bool
- operator < (time const& a, time const& b)
- {
- return (a.sec_ < b.sec_) || (a.sec_ == b.sec_ && a.nsec_ < b.nsec_);
- }
-
- private:
- unsigned long sec_;
- unsigned long nsec_;
- };
-
- std::ostream&
- operator<< (std::ostream&, time const&);
-}
-
-#endif // TIME_HXX
diff --git a/xsd/examples/cxx/tree/polymorphism/README b/xsd/examples/cxx/tree/polymorphism/README
deleted file mode 100644
index 6e54e49..0000000
--- a/xsd/examples/cxx/tree/polymorphism/README
+++ /dev/null
@@ -1,32 +0,0 @@
-This example shows how to use XML Schema polymorphism features such as
-xsi:type attributes and substitution groups in the C++/Tree mapping.
-
-The example consists of the following files:
-
-supermen.xsd
- XML Schema which describes the "supermen" instance documents.
-
-supermen.xml
- Sample XML instance document.
-
-supermen.hxx
-supermen.cxx
- C++ types that represent the given vocabulary, a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model, and a set of serialization functions that convert the
- object model back to XML. These are generated by XSD from supermen.xsd.
- Note also that we use the --generate-polymorphic command line option
- and that we don't need to use --polymorphic-type to explicitly mark
- types as polymorphic because this is automatically deduced by the
- XSD compiler from the substitution groups used in the supermen.xsd
- schema.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input file. It then prints
- the content of the object model to STDERR. Finally, the driver serializes
- the object model back to XML.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver instance.xml
diff --git a/xsd/examples/cxx/tree/polymorphism/driver.cxx b/xsd/examples/cxx/tree/polymorphism/driver.cxx
deleted file mode 100644
index 3f1598f..0000000
--- a/xsd/examples/cxx/tree/polymorphism/driver.cxx
+++ /dev/null
@@ -1,59 +0,0 @@
-// file : examples/cxx/tree/polymorphism/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <iostream>
-
-#include "supermen.hxx"
-
-using std::cerr;
-using std::endl;
-using std::auto_ptr;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " supermen.xml" << endl;
- return 1;
- }
-
- try
- {
- auto_ptr<supermen> sm (supermen_ (argv[1]));
-
- supermen copy (*sm); // Dynamic types are preserved in copies.
-
- // Print what we've got.
- //
- for (supermen::person_const_iterator i (copy.person ().begin ());
- i != copy.person ().end ();
- ++i)
- {
- cerr << i->name ();
-
- if (const superman* s = dynamic_cast<const superman*> (&*i))
- {
- if (s->can_fly ())
- cerr << ", flying superman";
- else
- cerr << ", superman";
- }
-
- cerr << endl;
- }
-
- // Serialize back to XML.
- //
- xml_schema::namespace_infomap map;
- map[""].schema = "supermen.xsd";
-
- supermen_ (std::cout, copy, map);
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/examples/cxx/tree/polymorphism/makefile b/xsd/examples/cxx/tree/polymorphism/makefile
deleted file mode 100644
index 2ee16e7..0000000
--- a/xsd/examples/cxx/tree/polymorphism/makefile
+++ /dev/null
@@ -1,104 +0,0 @@
-# file : examples/cxx/tree/polymorphism/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := supermen.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-polymorphic --generate-serialization \
---root-element-last
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/supermen.xsd,$(install_doc_dir)/xsd/$(path)/supermen.xsd)
- $(call install-data,$(src_base)/supermen.xml,$(install_doc_dir)/xsd/$(path)/supermen.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/supermen.xsd,$(dist_prefix)/$(path)/supermen.xsd)
- $(call install-data,$(src_base)/supermen.xml,$(dist_prefix)/$(path)/supermen.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/polymorphism/supermen.xml b/xsd/examples/cxx/tree/polymorphism/supermen.xml
deleted file mode 100644
index 1b5b1df..0000000
--- a/xsd/examples/cxx/tree/polymorphism/supermen.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/polymorphism/supermen.xml
-copyright : not copyrighted - public domain
-
--->
-
-<supermen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="supermen.xsd">
-
- <person>
- <name>John Doe</name>
- </person>
-
- <superman can-fly="false">
- <name>James "007" Bond</name>
- </superman>
-
- <superman can-fly="true" wing-span="10" xsi:type="batman">
- <name>Bruce Wayne</name>
- </superman>
-
-</supermen>
diff --git a/xsd/examples/cxx/tree/polymorphism/supermen.xsd b/xsd/examples/cxx/tree/polymorphism/supermen.xsd
deleted file mode 100644
index 0d37e3d..0000000
--- a/xsd/examples/cxx/tree/polymorphism/supermen.xsd
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/polymorphism/supermen.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <!-- substitution group root -->
- <xsd:element name="person" type="person"/>
-
-
- <xsd:complexType name="superman">
- <xsd:complexContent>
- <xsd:extension base="person">
- <xsd:attribute name="can-fly" type="xsd:boolean" use="required"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:element name="superman" type="superman" substitutionGroup="person"/>
-
- <xsd:complexType name="batman">
- <xsd:complexContent>
- <xsd:extension base="superman">
- <xsd:attribute name="wing-span" type="xsd:unsignedInt" use="required"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="supermen">
- <xsd:sequence>
- <xsd:element ref="person" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="supermen" type="supermen"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/streaming/README b/xsd/examples/cxx/tree/streaming/README
deleted file mode 100644
index 5a467e0..0000000
--- a/xsd/examples/cxx/tree/streaming/README
+++ /dev/null
@@ -1,51 +0,0 @@
-This example shows how to perform stream-oriented, partially in-memory
-XML processing using the C++/Tree mapping. With the partially in-memory
-parsing and serialization only a part of the object model is in memory at
-any given time. With this approach we can process parts of the document
-as they become available as well as handle documents that are too large
-to fit into memory.
-
-The example consists of the following files:
-
-position.xsd
- XML Schema which describes a simple object position vocabulary. The
- position is represented as a potentially large series of latitude and
- longitude measurements.
-
-position.xml
- Sample object position document.
-
-position.hxx
-position.cxx
- C++ types that represent the position vocabulary as well as parsing
- and serialization functions. These are generated by XSD from
- position.xsd.
-
-parser.hxx
-parser.cxx
- Stream-oriented DOM parser implementation that is built on top of the
- Xerces-C++ SAX2 parser in the progressive parsing mode. This parser
- allows us to parse an XML document as a series of DOM fragments.
-
-serializer.hxx
-serializer.cxx
- Stream-oriented DOM serializer implementation that allows us to
- serialize an XML Document as a series of object model fragments.
-
-grammar-input-stream.hxx
-grammar-input-stream.cxx
- Input stream implementation with the special-purpose schema grammar
- decompression algorithm. It is used internally by the streaming parser.
-
-driver.cxx
- Driver for the example. It parses the input file into a series of DOM
- fragments which are then parsed into the object model fragments. The
- driver prints the information from the document as it becomes available.
- It also serializes the object model fragments into a new XML document
- (out.xml).
-
-To run the example simply execute:
-
-$ ./driver position.xml
-
-The serialization results are written to the out.xml file.
diff --git a/xsd/examples/cxx/tree/streaming/driver.cxx b/xsd/examples/cxx/tree/streaming/driver.cxx
deleted file mode 100644
index eb7026a..0000000
--- a/xsd/examples/cxx/tree/streaming/driver.cxx
+++ /dev/null
@@ -1,139 +0,0 @@
-// file : examples/cxx/tree/streaming/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <iostream>
-#include <fstream>
-
-#include <xercesc/dom/DOM.hpp>
-
-#include <xsd/cxx/xml/string.hxx> // xml::string
-
-#include "parser.hxx"
-#include "serializer.hxx"
-#include "position.hxx"
-
-using namespace std;
-using namespace xercesc;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " position.xml" << endl;
- return 1;
- }
-
- int r (0);
-
- // We need to initialize the Xerces-C++ runtime because we are doing
- // the XML-to-DOM parsing ourselves.
- //
- xercesc::XMLPlatformUtils::Initialize ();
-
- try
- {
- using namespace op;
- namespace xml = xsd::cxx::xml;
-
- // Parse and serialize at the same time, in the streaming mode.
- //
-
- ifstream ifs;
- ifs.exceptions (ifstream::badbit | ifstream::failbit);
- ifs.open (argv[1]);
-
- ofstream ofs;
- ofs.exceptions (ios_base::badbit | ios_base::failbit);
- ofs.open ("out.xml");
-
- xml_schema::namespace_infomap ns_map;
- ns_map["op"].name = "http://www.codesynthesis.com/op";
- ns_map["op"].schema = "position.xsd";
-
- parser p;
- serializer s;
-
- p.start (ifs, argv[1], true);
- s.start (ofs);
-
- typedef xml_schema::dom::auto_ptr<DOMDocument> document_ptr;
-
- // Peek at the root element. This way we only get the "carcase"
- // of the document, that is, the root element with its name, all
- // the attributes, and namespace declarations but without any of
- // the nested elements.
- //
- document_ptr docr (p.peek ());
- bool parsed (false);
-
- // Parse first-level elements.
- //
- for (document_ptr doc1 (p.peek ()); doc1.get () != 0; doc1 = p.peek ())
- {
- // Check whether it is an element that we should stream (position) or
- // just add to the root (header).
- //
- string n1 (xml::transcode<char> (
- doc1->getDocumentElement ()->getLocalName ()));
-
- // If we see the first streaming element, then parse the root carcase.
- //
- if (!parsed && n1 == "position")
- {
- object o (*docr->getDocumentElement ());
-
- cerr << "id: " << o.id () << endl
- << "name: " << o.header ().name () << endl
- << "type: " << o.header ().type () << endl;
-
- // Start serializing the document by writing out the root carcase.
- // Note that we leave it open so that we can serialize more elements.
- //
- s.next_open (ns_map["op"].name, "op:object", ns_map, o);
- parsed = true;
- }
-
- // Handle elements that need streaming.
- //
- if (n1 == "position")
- {
- // Position has no nested elements that we need to stream so we
- // finish parsing it in one go.
- //
- doc1 = p.next (doc1);
- position pos (*doc1->getDocumentElement ());
-
- cerr << "lat: " << pos.lat () << " lon: " << pos.lon () << endl;
-
- // Serialize it (append) to the root element.
- //
- s.next ("position", pos);
- }
- else
- {
- // Element that doesn't require streaming (header in our case). Add
- // to the root element and finish parsing.
- //
- docr = p.next (doc1, docr);
- }
- }
-
- // Close the root element in serializer.
- //
- s.next_close ("op:object");
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
- catch (const ios_base::failure&)
- {
- cerr << "io failure" << endl;
- r = 1;
- }
-
- xercesc::XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/streaming/grammar-input-stream.cxx b/xsd/examples/cxx/tree/streaming/grammar-input-stream.cxx
deleted file mode 100644
index ffdb5b4..0000000
--- a/xsd/examples/cxx/tree/streaming/grammar-input-stream.cxx
+++ /dev/null
@@ -1,96 +0,0 @@
-// file : examples/cxx/tree/streaming/grammar-input-stream.cxx
-// author : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : not copyrighted - public domain
-
-#include <cassert>
-#include "grammar-input-stream.hxx"
-
-grammar_input_stream::
-grammar_input_stream (const XMLByte* data, std::size_t size)
- : data_ (data),
- size_ (size),
- pos_ (0),
- vpos_ (0),
- cseq_ (0),
- add_zero_ (false)
-{
-}
-
-XMLFilePos grammar_input_stream::
-curPos () const
-{
- return static_cast<XMLFilePos> (vpos_);
-}
-
-XMLSize_t grammar_input_stream::
-readBytes (XMLByte* const buf, const XMLSize_t size)
-{
- std::size_t i (0);
-
- // Add a zero from the alternating sequence if it didn't
- // fit on the previous read.
- //
- if (add_zero_)
- {
- buf[i++] = 0;
- add_zero_ = false;
- }
-
- // If have an unfinished sequential sequence, output it now.
- //
- if (cseq_ != 0 && !alt_)
- {
- for (; cseq_ != 0 && i < size; --cseq_)
- buf[i++] = 0;
- }
-
- for (; i < size && pos_ < size_;)
- {
- XMLByte b = buf[i++] = data_[pos_++];
-
- // See if we are in a compression sequence.
- //
- if (cseq_ != 0)
- {
- if (i < size)
- buf[i++] = 0;
- else
- add_zero_ = true; // Add it on the next read.
-
- cseq_--;
- continue;
- }
-
- // If we are not in a compression sequence and this byte is
- // not zero then we are done.
- //
- if (b != 0)
- continue;
-
- // We have a zero.
- //
- assert (pos_ < size_); // There has to be another byte.
- unsigned char v (static_cast<unsigned char> (data_[pos_++]));
- alt_ = (v & 128) != 0;
- cseq_ = v & 127;
-
- // If it is a sequential sequence, output as many zeros as
- // we can.
- //
- if (!alt_)
- {
- for (; cseq_ != 0 && i < size; --cseq_)
- buf[i++] = 0;
- }
- }
-
- vpos_ += i;
-
- return static_cast<XMLSize_t> (i);
-}
-
-const XMLCh* grammar_input_stream::
-getContentType () const
-{
- return 0;
-}
diff --git a/xsd/examples/cxx/tree/streaming/grammar-input-stream.hxx b/xsd/examples/cxx/tree/streaming/grammar-input-stream.hxx
deleted file mode 100644
index 36ef74c..0000000
--- a/xsd/examples/cxx/tree/streaming/grammar-input-stream.hxx
+++ /dev/null
@@ -1,41 +0,0 @@
-// file : examples/cxx/tree/streaming/grammar-input-stream.hxx
-// author : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : not copyrighted - public domain
-
-#ifndef GRAMMAR_INPUT_STREAM_HXX
-#define GRAMMAR_INPUT_STREAM_HXX
-
-#include <cstddef>
-#include <xercesc/util/BinInputStream.hpp>
-
-// Memory buffer input stream with the special-purpose schema
-// grammar decompression.
-//
-class grammar_input_stream: public xercesc::BinInputStream
-{
-public :
- grammar_input_stream (const XMLByte* data, std::size_t size);
-
- virtual XMLFilePos
- curPos () const;
-
- virtual XMLSize_t
- readBytes (XMLByte* const buf, const XMLSize_t size);
-
- virtual const XMLCh*
- getContentType () const;
-
-private :
- const XMLByte* data_;
- std::size_t size_;
- std::size_t pos_;
- std::size_t vpos_;
-
- // Compression data.
- //
- size_t cseq_; // Number of bytes left in a compression sequence.
- bool alt_; // Alternating or sequential sequence.
- bool add_zero_; // Add a zero on the next read.
-};
-
-#endif // GRAMMAR_INPUT_STREAM_HXX
diff --git a/xsd/examples/cxx/tree/streaming/makefile b/xsd/examples/cxx/tree/streaming/makefile
deleted file mode 100644
index f6db5c0..0000000
--- a/xsd/examples/cxx/tree/streaming/makefile
+++ /dev/null
@@ -1,115 +0,0 @@
-# file : examples/cxx/tree/streaming/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := position.xsd
-cxx := driver.cxx parser.cxx serializer.cxx grammar-input-stream.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/parser.cxx,$(install_doc_dir)/xsd/$(path)/parser.cxx)
- $(call install-data,$(src_base)/parser.hxx,$(install_doc_dir)/xsd/$(path)/parser.hxx)
- $(call install-data,$(src_base)/serializer.cxx,$(install_doc_dir)/xsd/$(path)/serializer.cxx)
- $(call install-data,$(src_base)/serializer.hxx,$(install_doc_dir)/xsd/$(path)/serializer.hxx)
- $(call install-data,$(src_base)/grammar-input-stream.cxx,$(install_doc_dir)/xsd/$(path)/grammar-input-stream.cxx)
- $(call install-data,$(src_base)/grammar-input-stream.hxx,$(install_doc_dir)/xsd/$(path)/grammar-input-stream.hxx)
- $(call install-data,$(src_base)/position.xsd,$(install_doc_dir)/xsd/$(path)/position.xsd)
- $(call install-data,$(src_base)/position.xml,$(install_doc_dir)/xsd/$(path)/position.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/parser.cxx,$(dist_prefix)/$(path)/parser.cxx)
- $(call install-data,$(src_base)/parser.hxx,$(dist_prefix)/$(path)/parser.hxx)
- $(call install-data,$(src_base)/serializer.cxx,$(dist_prefix)/$(path)/serializer.cxx)
- $(call install-data,$(src_base)/serializer.hxx,$(dist_prefix)/$(path)/serializer.hxx)
- $(call install-data,$(src_base)/grammar-input-stream.cxx,$(dist_prefix)/$(path)/grammar-input-stream.cxx)
- $(call install-data,$(src_base)/grammar-input-stream.hxx,$(dist_prefix)/$(path)/grammar-input-stream.hxx)
- $(call install-data,$(src_base)/position.xsd,$(dist_prefix)/$(path)/position.xsd)
- $(call install-data,$(src_base)/position.xml,$(dist_prefix)/$(path)/position.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
- $(call message,rm $$1,rm -f $$1,$(out_base)/out.xml)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver out.xml $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/streaming/parser.cxx b/xsd/examples/cxx/tree/streaming/parser.cxx
deleted file mode 100644
index 41ad7af..0000000
--- a/xsd/examples/cxx/tree/streaming/parser.cxx
+++ /dev/null
@@ -1,372 +0,0 @@
-#include <cassert>
-
-#include <xercesc/util/XMLUni.hpp>
-#include <xercesc/util/XMLString.hpp>
-
-#include <xercesc/sax2/Attributes.hpp>
-#include <xercesc/sax2/DefaultHandler.hpp>
-#include <xercesc/sax2/SAX2XMLReader.hpp>
-#include <xercesc/sax2/XMLReaderFactory.hpp>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/dom/impl/DOMTextImpl.hpp>
-
-#include <xercesc/validators/common/Grammar.hpp> // xercesc::Grammar
-#include <xercesc/framework/XMLGrammarPoolImpl.hpp>
-
-#include <xsd/cxx/auto-array.hxx>
-
-#include <xsd/cxx/xml/sax/std-input-source.hxx>
-#include <xsd/cxx/xml/sax/bits/error-handler-proxy.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-#include <xsd/cxx/tree/error-handler.hxx>
-
-#include "parser.hxx"
-#include "grammar-input-stream.hxx"
-
-using namespace std;
-using namespace xercesc;
-
-namespace xml = xsd::cxx::xml;
-namespace tree = xsd::cxx::tree;
-
-typedef parser::document_ptr document_ptr;
-
-class parser_impl: public DefaultHandler
-{
-public:
- parser_impl (const XMLByte* grammar, size_t grammar_size);
-
- void
- start (istream& is, const string& id, bool validate);
-
- document_ptr
- peek ();
-
- document_ptr
- next (document_ptr doc = document_ptr (),
- document_ptr outer_doc = document_ptr ());
-
- // SAX event handlers.
- //
-private:
- virtual void
- startElement (const XMLCh* const uri,
- const XMLCh* const lname,
- const XMLCh* const qname,
- const Attributes& attributes);
-
- virtual void
- endElement (const XMLCh* const uri,
- const XMLCh* const lname,
- const XMLCh* const qname);
-
- virtual void
- characters (const XMLCh* const s,
- const XMLSize_t length);
-
-private:
- // SAX parser.
- //
- bool clean_;
- auto_ptr<XMLGrammarPool> grammar_pool_;
- auto_ptr<SAX2XMLReader> parser_;
- XMLPScanToken token_;
- tree::error_handler<char> error_handler_;
- xml::sax::bits::error_handler_proxy<char> error_proxy_;
- auto_ptr<xml::sax::std_input_source> isrc_;
-
- size_t depth_;
- size_t whitespace_depth_; // Depth at which to ignore whitespaces.
-
- bool peek_;
- size_t next_depth_; // Depth at which next() should work.
-
- // DOM document being built.
- //
- DOMImplementation& dom_impl_;
- document_ptr doc_;
- DOMElement* cur_;
-};
-
-const XMLCh ls[] = {chLatin_L, chLatin_S, chNull};
-
-parser_impl::
-parser_impl (const XMLByte* grammar, size_t grammar_size)
- : clean_ (true),
- error_proxy_ (error_handler_),
- dom_impl_ (*DOMImplementationRegistry::getDOMImplementation (ls))
-{
- MemoryManager* mm (XMLPlatformUtils::fgMemoryManager);
-
- if (grammar != 0)
- {
- assert (grammar_size != 0);
- grammar_pool_.reset (new XMLGrammarPoolImpl (mm));
-
- grammar_input_stream is (grammar, grammar_size);
- grammar_pool_->deserializeGrammars(&is);
- grammar_pool_->lockPool ();
- }
-
- parser_.reset (XMLReaderFactory::createXMLReader (mm, grammar_pool_.get ()));
-
- parser_->setFeature (XMLUni::fgSAX2CoreNameSpaces, true);
- parser_->setFeature (XMLUni::fgSAX2CoreNameSpacePrefixes, true);
- parser_->setFeature (XMLUni::fgXercesValidationErrorAsFatal, true);
- parser_->setFeature (XMLUni::fgXercesSchemaFullChecking, false);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support. It also allows us to disable buffering in the parser
- // so that the data is parsed and returned as soon as it is
- // available.
- //
-#if _XERCES_VERSION >= 30100
- parser_->setFeature (XMLUni::fgXercesHandleMultipleImports, true);
-
- XMLSize_t lwm = 0;
- parser_->setProperty (XMLUni::fgXercesLowWaterMark, &lwm);
-#endif
-
- parser_->setErrorHandler (&error_proxy_);
- parser_->setContentHandler (this);
-}
-
-void parser_impl::
-start (istream& is, const string& id, bool val)
-{
- // Reset our state.
- //
- depth_ = 0;
- peek_ = false;
- doc_.reset ();
- error_handler_.reset ();
-
- if (!clean_)
- parser_->parseReset (token_);
- else
- clean_ = false;
-
- isrc_.reset (new xml::sax::std_input_source (is, id));
-
- parser_->setFeature (XMLUni::fgSAX2CoreValidation, val);
- parser_->setFeature (XMLUni::fgXercesSchema, val);
-
- if (val && grammar_pool_.get () != 0)
- {
- // Use the loaded grammar during parsing.
- //
- parser_->setFeature (XMLUni::fgXercesUseCachedGrammarInParse, true);
-
- // Disable loading schemas via other means (e.g., schemaLocation).
- //
- parser_->setFeature (XMLUni::fgXercesLoadSchema, false);
- }
-
- parser_->parseFirst (*isrc_, token_);
- error_handler_.throw_if_failed<tree::parsing<char> > ();
-}
-
-document_ptr parser_impl::
-peek ()
-{
- bool r (true);
-
- size_t d (depth_);
- whitespace_depth_ = d;
-
- peek_ = true;
-
- // Parse (skip whitespace content) until the depth increases or we get
- // a document. The latter test covers <element/> cases where both start
- // and end events will trigger and therefore leave the depth unchanged.
- //
- while (r && depth_ == d && doc_.get () == 0)
- {
- r = parser_->parseNext (token_);
- error_handler_.throw_if_failed<tree::parsing<char> > ();
- }
-
- if (!r)
- return document_ptr (0);
-
- return doc_;
-}
-
-document_ptr parser_impl::
-next (document_ptr doc, document_ptr outer_doc)
-{
- assert (peek_ == (doc.get () != 0));
-
- // Install doc/outer_doc as the document we are parsing.
- //
- if (doc.get () != 0)
- {
- if (outer_doc.get () != 0)
- {
- // Copy doc to outer_doc.
- //
- doc_ = outer_doc;
- cur_ = static_cast<DOMElement*> (
- doc_->importNode (doc->getDocumentElement (), true));
- doc_->getDocumentElement ()->appendChild (cur_);
- }
- else
- {
- doc_ = doc;
- cur_ = doc_->getDocumentElement ();
- }
-
- // This handles the <element/> case where we get both start and
- // end events in peek(). In this case the element is fully parsed
- // and next() has nothing to do.
- //
- if (depth_ != next_depth_)
- {
- peek_ = false;
- return doc_;
- }
- }
-
- bool r (true);
-
- // If we peeked, then we have already seen the start tag and our
- // return depth is one above the current depth.
- //
- size_t d (peek_ ? depth_ - 1 : depth_);
- whitespace_depth_ = d;
-
- peek_ = false;
-
- // Keep calling parseNext() until we either move to a greater depth or
- // get a document. This way we skip the text (presumably whitespaces)
- // that may be preceding this chunk.
- //
- while (r && depth_ == d && doc_.get () == 0)
- {
- parser_->parseNext (token_);
- error_handler_.throw_if_failed<tree::parsing<char> > ();
- }
-
- if (!r)
- return document_ptr (0);
-
- // If we are not at our start depth, keep calling parseNext() until we
- // get there again.
- //
- while (r && depth_ != d)
- {
- r = parser_->parseNext (token_);
- error_handler_.throw_if_failed<tree::parsing<char> > ();
- }
-
- if (!r)
- return document_ptr (0);
-
- return doc_;
-}
-
-// DOM builder.
-//
-
-void parser_impl::
-startElement (const XMLCh* const uri,
- const XMLCh* const /*lname*/,
- const XMLCh* const qname,
- const Attributes& attr)
-{
- if (doc_.get () == 0)
- {
- doc_.reset (dom_impl_.createDocument (uri, qname, 0));
- cur_ = doc_->getDocumentElement ();
- }
- else
- {
- DOMElement* e = doc_->createElementNS (uri, qname);
- cur_->appendChild (e);
- cur_ = e;
- }
-
- // Set attributes.
- //
- for (XMLSize_t i (0), end (attr.getLength()); i < end; ++i)
- {
- const XMLCh* qn (attr.getQName (i));
- const XMLCh* ns (attr.getURI (i));
-
- // When SAX2 reports the xmlns attribute, it does not include
- // the proper attribute namespace. So we have to detect and
- // handle this case.
- //
- if (XMLString::equals (qn, XMLUni::fgXMLNSString))
- ns = XMLUni::fgXMLNSURIName;
-
- cur_->setAttributeNS (ns, qn, attr.getValue (i));
- }
-
- depth_++;
-
- if (peek_)
- next_depth_ = depth_;
-}
-
-void parser_impl::
-endElement (const XMLCh* const /*uri*/,
- const XMLCh* const /*lname*/,
- const XMLCh* const /*qname*/)
-{
- // We have an element parent only on depth 2 or greater.
- //
- if (--depth_ > 1)
- cur_ = static_cast<DOMElement*> (cur_->getParentNode ());
-}
-
-void parser_impl::
-characters (const XMLCh* const s, const XMLSize_t length)
-{
- const XMLCh empty[] = {chNull};
-
- // Ignore text content (presumably whitespaces) while looking for
- // the next element.
- //
- if (depth_ > whitespace_depth_)
- {
- DOMText* t = doc_->createTextNode (empty);
- static_cast<DOMTextImpl*> (t)->appendData (s, length);
- cur_->appendChild (t);
- }
-}
-
-//
-// parser
-//
-
-parser::
-~parser ()
-{
-}
-
-parser::
-parser (const XMLByte* grammar, size_t grammar_size)
- : impl_ (new parser_impl (grammar, grammar_size))
-{
-}
-
-void parser::
-start (istream& is, const string& id, bool val)
-{
- return impl_->start (is, id, val);
-}
-
-document_ptr parser::
-peek ()
-{
- return impl_->peek ();
-}
-
-document_ptr parser::
-next (document_ptr doc, document_ptr outer_doc)
-{
- return impl_->next (doc, outer_doc);
-}
diff --git a/xsd/examples/cxx/tree/streaming/parser.hxx b/xsd/examples/cxx/tree/streaming/parser.hxx
deleted file mode 100644
index cb34f92..0000000
--- a/xsd/examples/cxx/tree/streaming/parser.hxx
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef PARSER_HXX
-#define PARSER_HXX
-
-#include <string>
-#include <iosfwd>
-#include <cstddef> // std::size_t
-#include <memory> // std::auto_ptr
-
-#include <xercesc/dom/DOMDocument.hpp>
-
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-
-class parser_impl;
-
-class parser
-{
-public:
- // We can specify embedded XML Schema grammar to be used by the parser
- // that was created by the xsdbin utility from the 'embedded' example.
- //
- parser (const XMLByte* grammar = 0, std::size_t grammar_size = 0);
- ~parser ();
-
- // The start function prepares everything for parsing a new document.
- //
- void
- start (std::istream& is, const std::string& id, bool validate);
-
- typedef xsd::cxx::xml::dom::auto_ptr<xercesc::DOMDocument> document_ptr;
-
- // The peek function parses just the next element (ignoring any
- // preceding content assuming it is whitespace) without parsing
- // any of its nested content (but it includes the element's
- // attributes). It returns NULL if there are no more elements
- // at this level (there could still be on outer levels in case
- // of nested streaming).
- //
- document_ptr
- peek ();
-
- // The next function parses (or finishes parsing after peek) the
- // next element including its nested content. It returns NULL if
- // there are no more elements at this level (there could still
- // be on outer levels in case of nested streaming).
- //
- // If doc is not NULL, then it should be the document returned
- // by peek(). That is, a document with only the root element.
- // In this case next() finishes parsing this element.
- //
- // If outer_doc is not NULL, then next() will first add doc to
- // outer_doc as a child of the document root.
- //
- document_ptr
- next (document_ptr doc = document_ptr (),
- document_ptr outer_doc = document_ptr ());
-
-private:
- parser (const parser&);
-
- parser&
- operator= (const parser&);
-
-private:
- std::auto_ptr<parser_impl> impl_;
-};
-
-#endif // PARSER_HXX
diff --git a/xsd/examples/cxx/tree/streaming/position.xml b/xsd/examples/cxx/tree/streaming/position.xml
deleted file mode 100644
index a3428bf..0000000
--- a/xsd/examples/cxx/tree/streaming/position.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/streaming/position.xml
-copyright : not copyrighted - public domain
-
--->
-
-<op:object xmlns:op="http://www.codesynthesis.com/op"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/op position.xsd"
- id="123">
-
- <header>
- <name>Lion's Head</name>
- <type>rock</type>
- </header>
-
- <position lat="-33.8569" lon="18.5083"/>
- <position lat="-33.8568" lon="18.5083"/>
- <position lat="-33.8568" lon="18.5082"/>
- <position lat="-33.8570" lon="18.5083"/>
- <position lat="-33.8569" lon="18.5084"/>
- <position lat="-33.8570" lon="18.5084"/>
- <position lat="-33.8570" lon="18.5082"/>
- <position lat="-33.8569" lon="18.5082"/>
-
-</op:object>
diff --git a/xsd/examples/cxx/tree/streaming/position.xsd b/xsd/examples/cxx/tree/streaming/position.xsd
deleted file mode 100644
index 18dda94..0000000
--- a/xsd/examples/cxx/tree/streaming/position.xsd
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/streaming/position.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:op="http://www.codesynthesis.com/op"
- targetNamespace="http://www.codesynthesis.com/op">
-
-
- <xsd:complexType name="header">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="type" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="position">
- <xsd:attribute name="lat" type="xsd:float" use="required"/>
- <xsd:attribute name="lon" type="xsd:float" use="required"/>
- </xsd:complexType>
-
- <xsd:complexType name="object">
- <xsd:sequence>
- <xsd:element name="header" type="op:header"/>
- <xsd:element name="position" type="op:position" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
- </xsd:complexType>
-
- <xsd:element name="object" type="op:object"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/streaming/serializer.cxx b/xsd/examples/cxx/tree/streaming/serializer.cxx
deleted file mode 100644
index 0ce8156..0000000
--- a/xsd/examples/cxx/tree/streaming/serializer.cxx
+++ /dev/null
@@ -1,607 +0,0 @@
-#include <vector>
-#include <cassert>
-#include <cstddef>
-
-#include <xercesc/util/XMLUni.hpp>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/dom/impl/DOMLSSerializerImpl.hpp>
-
-#include <xsd/cxx/xml/string.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-#include <xsd/cxx/xml/dom/serialization-source.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-#include <xsd/cxx/tree/error-handler.hxx>
-
-#include "serializer.hxx"
-
-using namespace std;
-using namespace xercesc;
-
-namespace xml = xsd::cxx::xml;
-namespace tree = xsd::cxx::tree;
-
-static const XMLCh gEOLSeq[] =
-{
- chLF, chNull
-};
-
-static const XMLCh gUTF8[] =
-{
- chLatin_U, chLatin_T, chLatin_F, chDash, chDigit_8, chNull
-};
-
-static const XMLCh gEndElement[] =
-{
- chOpenAngle, chForwardSlash, chNull
-};
-
-static const int DISCARD_DEFAULT_CONTENT_ID = 0x1;
-static const int ENTITIES_ID = 0x2;
-static const int FORMAT_PRETTY_PRINT_1ST_LEVEL_ID = 0xA;
-
-class StreamingDOMSerializer: public DOMLSSerializerImpl
-{
-public:
- StreamingDOMSerializer (MemoryManager* manager)
- : DOMLSSerializerImpl (manager)
- {
- }
-
- bool
- startOpen (const DOMElement* e, DOMLSOutput* const destination)
- {
- const DOMDocument* docu (e->getOwnerDocument ());
- assert (docu != 0);
-
- // Code adapted from DOMLSSerializerImpl::write().
- //
- target_ = destination->getByteStream();
-
- fEncodingUsed = gUTF8;
-
- const XMLCh* lsEncoding=destination->getEncoding();
- if (lsEncoding && *lsEncoding)
- {
- fEncodingUsed = lsEncoding;
- }
- else if (docu)
- {
- const XMLCh* tmpEncoding = docu->getInputEncoding();
-
- if ( tmpEncoding && *tmpEncoding)
- {
- fEncodingUsed = tmpEncoding;
- }
- else
- {
- tmpEncoding = docu->getXmlEncoding();
-
- if ( tmpEncoding && *tmpEncoding)
- {
- fEncodingUsed = tmpEncoding;
- }
- }
- }
-
- fNewLineUsed = (fNewLine && *fNewLine)? fNewLine : gEOLSeq;
-
- fDocumentVersion = (docu->getXmlVersion() && *(docu->getXmlVersion()))
- ? docu->getXmlVersion()
- : XMLUni::fgVersion1_0;
-
- fErrorCount = 0;
-
- fLineFeedInTextNodePrinted = false;
- fLastWhiteSpaceInTextNode = 0;
-
- level_ = 0;
- namespace_map_.clear ();
-
- fFormatter = new (fMemoryManager) XMLFormatter( fEncodingUsed
- ,fDocumentVersion
- ,target_
- ,XMLFormatter::NoEscapes
- ,XMLFormatter::UnRep_CharRef
- ,fMemoryManager);
- formatter_.reset (fFormatter);
-
- // Write out the XML declaration, etc. Here we assume that the document
- // has no children (i.e., no root element).
- //
- processNode (docu, 0);
- fLineFeedInTextNodePrinted = true;
-
- return writeOpen (e);
- }
-
- bool
- writeOpen (const DOMElement* e)
- {
- // Code adapted from the first part of ELEMENT_NODE case in
- // DOMLSSerializerImpl::processNode().
- //
-
- if (!fLineFeedInTextNodePrinted)
- {
- if(level_ == 1 && getFeature(FORMAT_PRETTY_PRINT_1ST_LEVEL_ID))
- printNewLine();
-
- printNewLine();
- }
- else
- {
- fLineFeedInTextNodePrinted = false;
- }
-
- printIndent(level_);
-
- RefHashTableOf<XMLCh>* namespaceMap = NULL;
-
- *fFormatter << XMLFormatter::NoEscapes << chOpenAngle <<
- e->getNodeName ();
-
- setURCharRef();
- DOMNamedNodeMap *attributes = e->getAttributes();
- XMLSize_t attrCount = attributes->getLength();
-
- const XMLCh* prefix = e->getPrefix();
- const XMLCh* uri = e->getNamespaceURI();
- if((uri && uri[0]) ||
- ((prefix==0 || prefix[0]==0) && isDefaultNamespacePrefixDeclared()))
- {
- if(prefix==0 || prefix[0]==0)
- prefix=XMLUni::fgZeroLenString;
- if(!isNamespaceBindingActive(prefix, uri))
- {
- if(namespaceMap==NULL)
- {
- namespaceMap=new (fMemoryManager) RefHashTableOf<XMLCh>(12, false, fMemoryManager);
- fNamespaceStack->addElement(namespaceMap);
- }
- namespaceMap->put((void*)prefix,(XMLCh*)uri);
- *fFormatter << XMLFormatter::NoEscapes
- << chSpace << XMLUni::fgXMLNSString;
-
- if(!XMLString::equals(prefix,XMLUni::fgZeroLenString))
- *fFormatter << chColon << prefix;
-
- *fFormatter << chEqual << chDoubleQuote
- << XMLFormatter::AttrEscapes
- << uri
- << XMLFormatter::NoEscapes
- << chDoubleQuote;
- }
- }
-
- bool discard = getFeature(DISCARD_DEFAULT_CONTENT_ID);
- for (XMLSize_t i = 0; i < attrCount; i++)
- {
- DOMAttr* attribute = (DOMAttr*)attributes->item(i);
-
- if (discard && !((DOMAttr*)attribute )->getSpecified())
- continue;
-
- // if this attribute is a namespace declaration, add it to the namespace map for the current level
- const XMLCh* ns = attribute->getNamespaceURI();
- if (ns != 0 )
- {
- if(XMLString::equals(ns, XMLUni::fgXMLNSURIName))
- {
- if(namespaceMap==NULL)
- {
- namespaceMap=new (fMemoryManager) RefHashTableOf<XMLCh>(12, false, fMemoryManager);
- fNamespaceStack->addElement(namespaceMap);
- }
- const XMLCh* nsPrefix = attribute->getLocalName();
- if(XMLString::equals(attribute->getNodeName(),XMLUni::fgXMLNSString))
- nsPrefix = XMLUni::fgZeroLenString;
- if(namespaceMap->containsKey((void*)nsPrefix))
- continue;
- namespaceMap->put((void*)attribute->getLocalName(),(XMLCh*)attribute->getNodeValue());
- }
- else if(!XMLString::equals(ns, XMLUni::fgXMLURIName))
- {
- // check if the namespace for the current node is already defined
- const XMLCh* prefix = attribute->getPrefix();
- if(prefix && prefix[0])
- {
- const XMLCh* uri = attribute->getNamespaceURI();
- if(!isNamespaceBindingActive(prefix, uri))
- {
- if(namespaceMap==NULL)
- {
- namespaceMap=new (fMemoryManager) RefHashTableOf<XMLCh>(12, false, fMemoryManager);
- fNamespaceStack->addElement(namespaceMap);
- }
- namespaceMap->put((void*)prefix,(XMLCh*)uri);
- *fFormatter << XMLFormatter::NoEscapes
- << chSpace << XMLUni::fgXMLNSString << chColon << prefix
- << chEqual << chDoubleQuote
- << XMLFormatter::AttrEscapes
- << uri
- << XMLFormatter::NoEscapes
- << chDoubleQuote;
- }
- }
- }
- }
-
- if (XMLString::equals(ns, XMLUni::fgXMLNSURIName) || checkFilter(attribute) == DOMNodeFilter::FILTER_ACCEPT)
- {
- *fFormatter << XMLFormatter::NoEscapes
- << chSpace << attribute->getNodeName()
- << chEqual << chDoubleQuote
- << XMLFormatter::AttrEscapes;
-
- if (getFeature(ENTITIES_ID))
- {
- DOMNode* child = attribute->getFirstChild();
- while( child != 0)
- {
- if(child->getNodeType()==DOMNode::TEXT_NODE)
- *fFormatter << child->getNodeValue();
- else if(child->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE)
- *fFormatter << XMLFormatter::NoEscapes
- << chAmpersand << child->getNodeName() << chSemiColon
- << XMLFormatter::AttrEscapes;
- child = child->getNextSibling();
- }
- }
- else
- *fFormatter << attribute->getNodeValue();
-
- *fFormatter << XMLFormatter::NoEscapes << chDoubleQuote;
- }
- }
-
- *fFormatter << XMLFormatter::NoEscapes << chCloseAngle;
-
- // Keep track of whether we have added a namespace map for this
- // element. Used to pop it in writeClose().
- //
- namespace_map_.push_back (namespaceMap != 0);
-
- level_++;
-
- DOMNode* child = e->getFirstChild();
- while (child != 0)
- {
- processNode (child, level_);
- child = child->getNextSibling();
- }
-
- return fErrorCount == 0;
- }
-
- bool
- writeClose (const XMLCh* name)
- {
- // Code adapted from the second part of ELEMENT_NODE case in
- // DOMLSSerializerImpl::processNode().
- //
- level_--;
-
- // Assume we are not on the same line (nodeLine != fCurrentLine).
- //
- {
- if (!fLineFeedInTextNodePrinted)
- {
- printNewLine();
- }
- else
- {
- fLineFeedInTextNodePrinted = false;
- }
-
- if(level_ == 0 && getFeature(FORMAT_PRETTY_PRINT_1ST_LEVEL_ID))
- printNewLine();
-
- printIndent(level_);
- }
-
- *fFormatter << XMLFormatter::NoEscapes << gEndElement <<
- name << chCloseAngle;
-
- if (namespace_map_.back ())
- fNamespaceStack->removeLastElement();
-
- namespace_map_.pop_back ();
-
- if (level_ == 0)
- {
- printNewLine();
- target_->flush ();
- }
-
- return fErrorCount == 0;
- }
-
- bool
- write (const DOMElement* e)
- {
- processNode (e, level_);
- return fErrorCount == 0;
- }
-
- using DOMLSSerializerImpl::write; // Whole document.
-
-private:
- XMLFormatTarget* target_;
- std::auto_ptr<XMLFormatter> formatter_;
- int level_;
-
- std::vector<bool> namespace_map_;
-};
-
-class serializer_impl
-{
-public:
- typedef serializer::namespace_infomap namespace_infomap;
-
- serializer_impl ();
-
- void
- start (ostream& os, const string& encoding);
-
- DOMElement*
- create (const string& name, const namespace_infomap&);
-
- DOMElement*
- create (const string& ns, const string& qname, const namespace_infomap&);
-
- void
- serialize (xml::dom::auto_ptr<DOMElement>);
-
- void
- serialize_open (xml::dom::auto_ptr<DOMElement>);
-
- void
- serialize_close (const string&);
-
-private:
- void
- clear_document ();
-
-private:
- bool start_;
-
- // Serializer.
- //
- xml::dom::auto_ptr<DOMLSOutput> out_;
- xml::dom::auto_ptr<StreamingDOMSerializer> serializer_;
-
- auto_ptr<xml::dom::ostream_format_target> oft_;
-
- tree::error_handler<char> error_handler_;
- xml::dom::bits::error_handler_proxy<char> error_proxy_;
-
- // DOM document that we use to create the elements.
- //
- DOMImplementation& dom_impl_;
- xml::dom::auto_ptr<DOMDocument> doc_;
- vector<DOMElement*> element_stack_;
-
- size_t element_count_; // Number of elements serialized using current doc.
- static const size_t element_count_limit_ = 500;
-};
-
-const XMLCh ls[] = {chLatin_L, chLatin_S, chNull};
-
-serializer_impl::
-serializer_impl ()
- : error_proxy_ (error_handler_),
- dom_impl_ (*DOMImplementationRegistry::getDOMImplementation (ls))
-{
- serializer_.reset (
- new (XMLPlatformUtils::fgMemoryManager)
- StreamingDOMSerializer (XMLPlatformUtils::fgMemoryManager));
-
- DOMConfiguration* conf (serializer_->getDomConfig ());
- conf->setParameter (XMLUni::fgDOMErrorHandler, &error_proxy_);
- conf->setParameter (XMLUni::fgDOMXMLDeclaration, true);
- conf->setParameter (XMLUni::fgDOMWRTDiscardDefaultContent, true);
- conf->setParameter (XMLUni::fgDOMWRTFormatPrettyPrint, true);
- conf->setParameter (XMLUni::fgDOMWRTXercesPrettyPrint, false);
-}
-
-void serializer_impl::
-start (ostream& os, const string& encoding)
-{
- element_stack_.clear ();
- doc_.reset (dom_impl_.createDocument ());
- element_count_ = 0;
-
- error_handler_.reset ();
- oft_.reset (new xml::dom::ostream_format_target (os));
-
- out_.reset (dom_impl_.createLSOutput ());
- out_->setEncoding (xml::string (encoding).c_str ());
- out_->setByteStream (oft_.get ());
-
- start_ = true;
-}
-
-DOMElement* serializer_impl::
-create (const string& name, const namespace_infomap& map)
-{
- DOMElement* r (doc_->createElement (xml::string (name).c_str ()));
-
- if (!map.empty ())
- xml::dom::add_namespaces<char> (*r, map);
-
- // Add the element as the child of the stack "tip" so that it
- // "sees" all the namespace declarations active from this point.
- //
- if (!element_stack_.empty ())
- element_stack_.back ()->appendChild (r);
-
- return r;
-}
-
-DOMElement* serializer_impl::
-create (const string& ns, const string& qname, const namespace_infomap& map)
-{
- DOMElement* r (
- doc_->createElementNS (
- xml::string (ns).c_str (), xml::string (qname).c_str ()));
-
- if (!map.empty ())
- xml::dom::add_namespaces<char> (*r, map);
-
- // Add the element as the child of the stack "tip" so that it
- // "sees" all the namespace declarations active from this point.
- //
- if (!element_stack_.empty ())
- element_stack_.back ()->appendChild (r);
-
- return r;
-}
-
-void serializer_impl::
-serialize (xml::dom::auto_ptr<DOMElement> p)
-{
- DOMElement* e (p.get ());
-
- if (start_)
- {
- serializer_->write (e, out_.get ());
- start_ = false;
- }
- else
- serializer_->write (e);
-
- error_handler_.throw_if_failed<tree::serialization<char> > ();
-
- // Remove this element from its parent before we release.
- //
- if (!element_stack_.empty ())
- element_stack_.back ()->removeChild (e);
-
- p.reset (); // Release it before we may clear the document below.
-
- if (element_count_++ > element_count_limit_)
- clear_document ();
-}
-
-void serializer_impl::
-serialize_open (xml::dom::auto_ptr<DOMElement> p)
-{
- DOMElement* e (p.get ());
-
- if (start_)
- {
- serializer_->startOpen (e, out_.get ());
- start_ = false;
- }
- else
- serializer_->writeOpen (e);
-
- error_handler_.throw_if_failed<tree::serialization<char> > ();
-
- // Add this element to the element stack. serialize_close() is
- // responsible for its removal and releasing.
- //
- element_stack_.push_back (e);
- p.release ();
-}
-
-void serializer_impl::
-serialize_close (const string& name)
-{
- serializer_->writeClose (xml::string (name).c_str ());
- error_handler_.throw_if_failed<tree::serialization<char> > ();
-
- // Release the element.
- //
- DOMElement* e (element_stack_.back ());
- element_stack_.pop_back ();
-
- if (!element_stack_.empty ())
- element_stack_.back ()->removeChild (e);
-
- e->release ();
-
- if (element_count_++ > element_count_limit_)
- clear_document ();
-}
-
-void serializer_impl::
-clear_document ()
-{
- // Re-create the document in order to force deallocation of its
- // internal heap. While Xerces-C++ DOM tries to re-use memory,
- // it still accumulates no longer used memory blocks.
- //
- xml::dom::auto_ptr<DOMDocument> doc (dom_impl_.createDocument ());
-
- if (!element_stack_.empty ())
- {
- DOMElement* e (
- static_cast<DOMElement*> (
- doc->importNode (element_stack_.front (), true)));
-
- for (vector<DOMElement*>::iterator i (element_stack_.begin ());
- i != element_stack_.end ();
- ++i)
- {
- *i = e;
- e = static_cast<DOMElement*> (e->getFirstChild ());
- }
- }
-
- doc_ = doc;
- element_count_ = 0;
-}
-
-//
-// serializer
-//
-
-serializer::
-~serializer ()
-{
-}
-
-serializer::
-serializer ()
- : impl_ (new serializer_impl)
-{
-}
-
-void serializer::
-start (ostream& os, const string& encoding)
-{
- impl_->start (os, encoding);
-}
-
-DOMElement* serializer::
-create (const string& name, const namespace_infomap& map)
-{
- return impl_->create (name, map);
-}
-
-DOMElement* serializer::
-create (const string& ns, const string& qname, const namespace_infomap& map)
-{
- return impl_->create (ns, qname, map);
-}
-
-void serializer::
-serialize (xml::dom::auto_ptr<DOMElement> e)
-{
- impl_->serialize (e);
-}
-
-void serializer::
-serialize_open (xml::dom::auto_ptr<DOMElement> e)
-{
- impl_->serialize_open (e);
-}
-
-void serializer::
-serialize_close (const string& name)
-{
- impl_->serialize_close (name);
-}
diff --git a/xsd/examples/cxx/tree/streaming/serializer.hxx b/xsd/examples/cxx/tree/streaming/serializer.hxx
deleted file mode 100644
index 43fab69..0000000
--- a/xsd/examples/cxx/tree/streaming/serializer.hxx
+++ /dev/null
@@ -1,205 +0,0 @@
-// file : examples/cxx/tree/streaming/serializer.hxx
-// author : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : not copyrighted - public domain
-
-#ifndef SERIALIZER_HXX
-#define SERIALIZER_HXX
-
-#include <string>
-#include <iosfwd>
-#include <memory> // std::auto_ptr
-
-#include <xercesc/dom/DOMElement.hpp>
-
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-#include <xsd/cxx/xml/dom/serialization-header.hxx> // namespace_infomap
-
-class serializer_impl;
-
-class serializer
-{
-public:
- typedef xsd::cxx::xml::dom::namespace_infomap<char> namespace_infomap;
-
- ~serializer ();
- serializer ();
-
- // Start the serialization process.
- //
- void
- start (std::ostream& is, const std::string& encoding = "UTF-8");
-
- // Serialize next object model fragment into an element with the specified
- // name.
- //
- template <typename T>
- void
- next (const std::string& name, const T& x);
-
- // Serialize next object model fragment into an element with the specified
- // name and namespace declarations.
- //
- template <typename T>
- void
- next (const std::string& name, const namespace_infomap&, const T& x);
-
- // Serialize next object model fragment into an element with the specified
- // namespace and qualified name.
- //
- template <typename T>
- void
- next (const std::string& ns, const std::string& name, const T& x);
-
- // Serialize next object model fragment into an element with the specified
- // namespace and qualified name as well as namespace declarations.
- //
- template <typename T>
- void
- next (const std::string& ns,
- const std::string& name,
- const namespace_infomap&,
- const T& x);
-
- // The next_open/close functions are like next() but split into two steps.
- // next_open() serializes the object model fragment into an element leaving
- // it open while next_close() closes the element.
- //
- template <typename T>
- void
- next_open (const std::string& name, const T& x);
-
- template <typename T>
- void
- next_open (const std::string& name, const namespace_infomap&, const T& x);
-
- template <typename T>
- void
- next_open (const std::string& ns, const std::string& name, const T& x);
-
- template <typename T>
- void
- next_open (const std::string& ns,
- const std::string& name,
- const namespace_infomap&,
- const T& x);
-
- void
- next_close (const std::string& name);
-
-private:
- serializer (const serializer&);
-
- serializer&
- operator= (const serializer&);
-
-private:
- xercesc::DOMElement*
- create (const std::string& name, const namespace_infomap&);
-
- xercesc::DOMElement*
- create (const std::string& ns,
- const std::string& name,
- const namespace_infomap&);
-
- void
- serialize (xsd::cxx::xml::dom::auto_ptr<xercesc::DOMElement>);
-
- void
- serialize_open (xsd::cxx::xml::dom::auto_ptr<xercesc::DOMElement>);
-
- void
- serialize_close (const std::string& name);
-
-private:
- std::auto_ptr<serializer_impl> impl_;
-};
-
-template <typename T>
-inline void serializer::
-next (const std::string& name, const T& x)
-{
- xsd::cxx::xml::dom::auto_ptr<xercesc::DOMElement> e (
- create (name, namespace_infomap ()));
- *e << x;
- serialize (e);
-}
-
-template <typename T>
-inline void serializer::
-next (const std::string& name, const namespace_infomap& map, const T& x)
-{
- xsd::cxx::xml::dom::auto_ptr<xercesc::DOMElement> e (create (name, map));
- *e << x;
- serialize (e);
-}
-
-template <typename T>
-inline void serializer::
-next (const std::string& ns, const std::string& name, const T& x)
-{
- xsd::cxx::xml::dom::auto_ptr<xercesc::DOMElement> e (
- create (ns, name, namespace_infomap ()));
- *e << x;
- serialize (e);
-}
-
-template <typename T>
-inline void serializer::
-next (const std::string& ns,
- const std::string& name,
- const namespace_infomap& map,
- const T& x)
-{
- xsd::cxx::xml::dom::auto_ptr<xercesc::DOMElement> e (create (ns, name, map));
- *e << x;
- serialize (e);
-}
-
-template <typename T>
-inline void serializer::
-next_open (const std::string& name, const T& x)
-{
- xsd::cxx::xml::dom::auto_ptr<xercesc::DOMElement> e (
- create (name, namespace_infomap ()));
- *e << x;
- serialize_open (e);
-}
-
-template <typename T>
-inline void serializer::
-next_open (const std::string& name, const namespace_infomap& map, const T& x)
-{
- xsd::cxx::xml::dom::auto_ptr<xercesc::DOMElement> e (create (name, map));
- *e << x;
- serialize_open (e);
-}
-
-template <typename T>
-inline void serializer::
-next_open (const std::string& ns, const std::string& name, const T& x)
-{
- xsd::cxx::xml::dom::auto_ptr<xercesc::DOMElement> e (
- create (ns, name, namespace_infomap ()));
- *e << x;
- serialize_open (e);
-}
-
-template <typename T>
-inline void serializer::
-next_open (const std::string& ns,
- const std::string& name,
- const namespace_infomap& map,
- const T& x)
-{
- xsd::cxx::xml::dom::auto_ptr<xercesc::DOMElement> e (create (ns, name, map));
- *e << x;
- serialize_open (e);
-}
-
-inline void serializer::
-next_close (const std::string& name)
-{
- serialize_close (name);
-}
-
-#endif // SERIALIZER_HXX
diff --git a/xsd/examples/cxx/tree/wildcard/README b/xsd/examples/cxx/tree/wildcard/README
deleted file mode 100644
index d451509..0000000
--- a/xsd/examples/cxx/tree/wildcard/README
+++ /dev/null
@@ -1,34 +0,0 @@
-This example shows how to use the optional wildcard mapping provided
-by C++/Tree to parse, access, modify, and serialize the XML data
-matched by XML Schema wildcards (any and anyAttribute). For an
-alternative approach that employes type customization see the
-custom/wildcard example.
-
-The example consists of the following files:
-
-email.xsd
- XML Schema which describes a simple email format with the
- extensible envelope type.
-
-email.xml
- Sample email message.
-
-email.hxx
-email.ixx
-email.cxx
- C++ types that represent the given vocabulary, a set of parsing
- functions that convert XML instance documents to a tree-like in-memory
- object model, and a set of serialization functions that convert the
- object model back to XML. These are generated by XSD from email.xsd.
- Note that the --generate-wildcard option is used to request the
- wildcard mapping.
-
-driver.cxx
- Driver for the example. It first calls one of the parsing functions
- that constructs the object model from the input file. It then prints
- the content of the object model to STDERR. Next the driver creates a
- reply email which is then serialized to XML.
-
-To run the example on the sample XML instance document simply execute:
-
-$ ./driver email.xml
diff --git a/xsd/examples/cxx/tree/wildcard/driver.cxx b/xsd/examples/cxx/tree/wildcard/driver.cxx
deleted file mode 100644
index 64acfce..0000000
--- a/xsd/examples/cxx/tree/wildcard/driver.cxx
+++ /dev/null
@@ -1,159 +0,0 @@
-// file : examples/cxx/tree/wildcard/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <string>
-#include <memory> // std::auto_ptr
-#include <cstring> // std::memcpy
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "email.hxx"
-
-// The following string class keeps us sane when working with Xerces.
-// Include it after the generated header in order to get only char or
-// wchar_t version depending on how you compiled your schemas.
-//
-#include <xsd/cxx/xml/string.hxx>
-
-using std::cerr;
-using std::endl;
-using std::string;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " email.xml" << endl;
- return 1;
- }
-
- using namespace xercesc;
-
- int r (0);
-
- // The Xerces-C++ DOM objects that will be used to store the
- // content matched by wildcards "out-live" the call to the
- // parsing function. Therefore we need to initialize the
- // Xerces-C++ runtime ourselves.
- //
- XMLPlatformUtils::Initialize ();
-
- try
- {
- using namespace email;
- namespace xml = xsd::cxx::xml;
-
- // Read in the message.
- //
- std::auto_ptr<envelope> msg (
- message (argv[1], xml_schema::flags::dont_initialize));
-
- // Print what we've got.
- //
- cerr << "To: " << msg->to () << endl
- << "From: " << msg->from () << endl
- << "Subject: " << msg->subject () << endl;
-
- envelope::any_sequence& body (msg->any ());
-
- for (envelope::any_iterator i (body.begin ()); i != body.end (); ++i)
- {
- DOMElement& e (*i);
- string name (xml::transcode<char> (e.getLocalName ()));
-
- if (name == "text")
- {
- // Create object representation for the text element.
- //
- xml_schema::string text (e);
-
- cerr << text << endl
- << endl;
- }
- else if (name == "binary")
- {
- // Create object representation for the binary element.
- //
- binary bin (e);
-
- cerr << "binary: " << bin.name () << " type: " << bin.mime () << endl
- << endl;
- }
- else
- {
- cerr << "unknown body type: " << name << endl;
- }
- }
-
- // Create a reply message.
- //
- envelope reply (msg->from (), msg->to (), "Re: " + msg->subject ());
-
- // Copy the thread-id attribute from the original message if any.
- //
- envelope::any_attribute_set& as (msg->any_attribute ());
- envelope::any_attribute_iterator ti (
- as.find ("http://www.codesynthesis.com/email", "thread-id"));
-
- if (ti != as.end ())
- reply.any_attribute ().insert (*ti);
-
- // Add a text body.
- //
- DOMDocument& doc (reply.dom_document ());
- envelope::any_sequence& rbody (reply.any ());
-
- xml_schema::string text ("Hi!\n\n"
- "Indeed nice pictures. Check out mine.\n\n"
- "Jane");
-
- DOMElement* e (
- doc.createElementNS (
- xml::string ("http://www.codesynthesis.com/email").c_str (),
- xml::string ("eml:text").c_str ()));
-
- *e << text;
- rbody.push_back (e);
-
- // Add a (fake) image.
- //
- binary pic ("pic.jpg", "image/jpeg");
- pic.size (3);
- std::memcpy (pic.data (), "123", 3);
-
- e = doc.createElementNS (
- xml::string ("http://www.codesynthesis.com/email").c_str (),
- xml::string ("eml:binary").c_str ());
-
- *e << pic;
- rbody.push_back (e);
-
-
- // Prepare namespace mapping and schema location information for
- // serialization.
- //
- xml_schema::namespace_infomap map;
-
- map["eml"].name = "http://www.codesynthesis.com/email";
- map["eml"].schema = "email.xsd";
-
- // Write it out.
- //
- message (std::cout,
- reply,
- map,
- "UTF-8",
- xml_schema::flags::dont_initialize);
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
-
- XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/wildcard/email.xml b/xsd/examples/cxx/tree/wildcard/email.xml
deleted file mode 100644
index 9272d5c..0000000
--- a/xsd/examples/cxx/tree/wildcard/email.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/wildcard/email.xml
-copyright : not copyrighted - public domain
-
--->
-
-<eml:message xmlns:eml="http://www.codesynthesis.com/email"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/email email.xsd"
- eml:thread-id="123456789">
-
- <to>Jane Doe &lt;jane@doe.com></to>
- <from>John Doe &lt;john@doe.com></from>
- <subject>Surfing pictures</subject>
-
- <eml:text>
-Hi Jane,
-
-Here are cool pictures of me surfing.
-
-Cheers,
-John
- </eml:text>
-
- <eml:binary name="pic1.jpg" mime="image/jpeg">YmFzZTY0IGJpbmFyeQ==</eml:binary>
- <eml:binary name="pic2.jpg" mime="image/jpeg">YmFzZTY0IGJpbmFyeQ==</eml:binary>
-
-</eml:message>
diff --git a/xsd/examples/cxx/tree/wildcard/email.xsd b/xsd/examples/cxx/tree/wildcard/email.xsd
deleted file mode 100644
index 239cb9d..0000000
--- a/xsd/examples/cxx/tree/wildcard/email.xsd
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/wildcard/email.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:eml="http://www.codesynthesis.com/email"
- targetNamespace="http://www.codesynthesis.com/email">
-
- <!-- Predefined envolop body types. -->
-
- <xsd:element name="text" type="xsd:string"/>
-
- <xsd:complexType name="binary">
- <xsd:simpleContent>
- <xsd:extension base="xsd:base64Binary">
- <xsd:attribute name="name" type="xsd:string" use="required"/>
- <xsd:attribute name="mime" type="xsd:string" use="required"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:element name="binary" type="eml:binary"/>
-
- <!-- Predefined envelop attributes. -->
-
- <xsd:attribute name="thread-id" type="xsd:unsignedInt"/>
-
-
- <xsd:complexType name="envelope">
- <xsd:sequence>
- <xsd:element name="to" type="xsd:string"/>
- <xsd:element name="from" type="xsd:string"/>
- <xsd:element name="subject" type="xsd:string"/>
-
- <!-- Extensible envelope body. -->
-
- <xsd:any namespace="##targetNamespace" processContents="strict"
- maxOccurs="unbounded" />
- </xsd:sequence>
- <xsd:anyAttribute namespace="##targetNamespace" processContents="strict"/>
- </xsd:complexType>
-
- <xsd:element name="message" type="eml:envelope"/>
-
-</xsd:schema>
diff --git a/xsd/examples/cxx/tree/wildcard/makefile b/xsd/examples/cxx/tree/wildcard/makefile
deleted file mode 100644
index 8c6fe52..0000000
--- a/xsd/examples/cxx/tree/wildcard/makefile
+++ /dev/null
@@ -1,102 +0,0 @@
-# file : examples/cxx/tree/wildcard/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := email.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-inline --generate-wildcard \
---generate-serialization --root-element message
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/email.xsd,$(install_doc_dir)/xsd/$(path)/email.xsd)
- $(call install-data,$(src_base)/email.xml,$(install_doc_dir)/xsd/$(path)/email.xml)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/email.xsd,$(dist_prefix)/$(path)/email.xsd)
- $(call install-data,$(src_base)/email.xml,$(dist_prefix)/$(path)/email.xml)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/xpath/README b/xsd/examples/cxx/tree/xpath/README
deleted file mode 100644
index 1187743..0000000
--- a/xsd/examples/cxx/tree/xpath/README
+++ /dev/null
@@ -1,43 +0,0 @@
-This example shows how to use the C++/Tree mapping together with XPath.
-In particular, it shows how to execute an XPath query on the underlying
-DOM document and then handle the result using the more convenient object
-model representation. For more information on maintaining association
-with the underlying DOM document, refer to Section 5.1, "DOM Association"
-in the C++/Tree Mapping User Manual.
-
-You will need the XQilla library[1] which provides XQuery and XPath 2
-support on top of Xerces-C++ in order to build and run this example.
-
-[1] http://xqilla.sourceforge.net
-
-The example consists of the following files:
-
-people.xsd
- XML Schema definition for a simple person record vocabulary.
-
-people.xml
- Sample XML instance document.
-
-people.hxx
-people.cxx
- C++ types that represent the person record vocabulary and a set of
- parsing functions that convert XML instance documents to a tree-like
- in-memory object model. These are generated by XSD from people.xsd.
-
-dom-parse.hxx
-dom-parse.cxx
- Definition and implementation of the parse() function that parses an
- XML document to a DOM document.
-
-driver.cxx
- Driver for the example. It first calls the above parse() function to
- parse the input file to a DOM document using XQilla-provided DOM
- Implementation with support for XPath 2. It then parses the DOM
- document to the object model. Finally, it prepares and executes
- an XPath query on the underlying DOM document and then handles
- the result by getting back from the returned DOM nodes to object
- model nodes.
-
-To run the example on the sample XML document simply execute:
-
-$ ./driver people.xml
diff --git a/xsd/examples/cxx/tree/xpath/dom-parse.cxx b/xsd/examples/cxx/tree/xpath/dom-parse.cxx
deleted file mode 100644
index 0282780..0000000
--- a/xsd/examples/cxx/tree/xpath/dom-parse.cxx
+++ /dev/null
@@ -1,88 +0,0 @@
-// file : examples/cxx/tree/xpath/dom-parse.cxx
-// copyright : not copyrighted - public domain
-
-#include "dom-parse.hxx"
-
-#include <istream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/framework/Wrapper4InputSource.hpp>
-
-#include <xsd/cxx/xml/sax/std-input-source.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-#include <xsd/cxx/tree/error-handler.hxx>
-
-using namespace xercesc;
-namespace xml = xsd::cxx::xml;
-namespace tree = xsd::cxx::tree;
-
-xml::dom::auto_ptr<DOMDocument>
-parse (std::istream& is,
- const std::string& id,
- bool validate,
- DOMImplementation* impl)
-{
- xml::dom::auto_ptr<DOMLSParser> parser (
- impl->createLSParser (DOMImplementationLS::MODE_SYNCHRONOUS, 0));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- // Discard comment nodes in the document.
- //
- conf->setParameter (XMLUni::fgDOMComments, false);
-
- // Enable datatype normalization.
- //
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
-
- // Do not create EntityReference nodes in the DOM tree. No
- // EntityReference nodes will be created, only the nodes
- // corresponding to their fully expanded substitution text
- // will be created.
- //
- conf->setParameter (XMLUni::fgDOMEntities, false);
-
- // Perform namespace processing.
- //
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
-
- // Do not include ignorable whitespace in the DOM tree.
- //
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
-
- // Enable/Disable validation.
- //
- conf->setParameter (XMLUni::fgDOMValidate, validate);
- conf->setParameter (XMLUni::fgXercesSchema, validate);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
-
- // We will release the DOM document ourselves.
- //
- conf->setParameter (XMLUni::fgXercesUserAdoptsDOMDocument, true);
-
- // Set error handler.
- //
- tree::error_handler<char> eh;
- xml::dom::bits::error_handler_proxy<char> ehp (eh);
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- // Prepare input stream.
- //
- xml::sax::std_input_source isrc (is, id);
- Wrapper4InputSource wrap (&isrc, false);
-
- xml::dom::auto_ptr<DOMDocument> doc (parser->parse (&wrap));
-
- eh.throw_if_failed<tree::parsing<char> > ();
-
- return doc;
-}
diff --git a/xsd/examples/cxx/tree/xpath/dom-parse.hxx b/xsd/examples/cxx/tree/xpath/dom-parse.hxx
deleted file mode 100644
index 9fa0eb9..0000000
--- a/xsd/examples/cxx/tree/xpath/dom-parse.hxx
+++ /dev/null
@@ -1,25 +0,0 @@
-// file : examples/cxx/tree/xpath/dom-parse.hxx
-// copyright : not copyrighted - public domain
-
-#ifndef DOM_PARSE
-#define DOM_PARSE
-
-#include <string>
-#include <iosfwd>
-
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xercesc/dom/DOMImplementation.hpp>
-
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-
-// Parse an XML document from the standard input stream with an
-// optional resource id. Resource id is used in diagnostics as
-// well as to locate schemas referenced from inside the document.
-//
-xsd::cxx::xml::dom::auto_ptr<xercesc::DOMDocument>
-parse (std::istream& is,
- const std::string& id,
- bool validate,
- xercesc::DOMImplementation*);
-
-#endif // DOM_PARSE
diff --git a/xsd/examples/cxx/tree/xpath/driver.cxx b/xsd/examples/cxx/tree/xpath/driver.cxx
deleted file mode 100644
index f9bd040..0000000
--- a/xsd/examples/cxx/tree/xpath/driver.cxx
+++ /dev/null
@@ -1,136 +0,0 @@
-// file : examples/cxx/tree/xpath/driver.cxx
-// copyright : not copyrighted - public domain
-
-#include <memory> // std::auto_ptr
-#include <string>
-#include <fstream>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-
-#include <xqilla/xqilla-dom3.hpp>
-
-#include <xsd/cxx/xml/string.hxx> // xml::string, xml::transcode
-
-#include "dom-parse.hxx"
-
-#include "people.hxx"
-
-using namespace std;
-using namespace xercesc;
-namespace xml = xsd::cxx::xml;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " people.xml" << endl;
- return 1;
- }
-
- int r (0);
-
- // Initialise Xerces-C++ and XQilla.
- //
- XQillaPlatformUtils::initialize();
-
- // Get the XQilla DOMImplementation object with support for XPath.
- //
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation(
- xml::string ("XPath2 3.0").c_str ()));
-
- try
- {
- using namespace people;
-
- ifstream ifs;
- ifs.exceptions (ifstream::badbit | ifstream::failbit);
- ifs.open (argv[1]);
-
- // Parse the XML file to DOM using the XQilla DOMImplementation.
- //
- xml_schema::dom::auto_ptr<xercesc::DOMDocument> dom (
- parse (ifs, argv[1], true, impl));
-
- // Parse the DOM document to the object model. We also request that
- // the DOM document to be associated with the object model.
- //
- std::auto_ptr<directory> d (
- directory_ (dom,
- xml_schema::flags::keep_dom | xml_schema::flags::own_dom));
-
- // Obtain the root element and document corresponding to the
- // directory object.
- //
- DOMElement* root (static_cast<DOMElement*> (d->_node ()));
- DOMDocument* doc (root->getOwnerDocument ());
-
- // Obtain namespace resolver.
- //
- xml_schema::dom::auto_ptr<DOMXPathNSResolver> resolver (
- doc->createNSResolver (root));
-
- // Set the namespace prefix for the people namespace that we can
- // use reliably in XPath expressions regardless of what is used
- // in XML documents.
- //
- resolver->addNamespaceBinding (
- xml::string ("p").c_str (),
- xml::string ("http://www.codesynthesis.com/people").c_str ());
-
- // Create XPath expression.
- //
- xml_schema::dom::auto_ptr<DOMXPathExpression> expr (
- doc->createExpression (
- xml::string ("p:directory/person[age > 30]").c_str (),
- resolver.get ()));
-
- // Execute the query.
- //
- xml_schema::dom::auto_ptr<DOMXPathResult> r (
- expr->evaluate (doc, DOMXPathResult::ITERATOR_RESULT_TYPE, 0));
-
- // Iterate over the result.
- //
- cerr << "Records matching the query:" << endl;
-
- while (r->iterateNext ())
- {
- DOMNode* n (r->getNodeValue ());
-
- // Obtain the object model node corresponding to this DOM node.
- //
- person* p (
- static_cast<person*> (
- n->getUserData (xml_schema::dom::tree_node_key)));
-
- // Print the data using the object model.
- //
- cerr << endl
- << "First : " << p->first_name () << endl
- << "Last : " << p->last_name () << endl
- << "Gender : " << p->gender () << endl
- << "Age : " << p->age () << endl;
- }
- }
- catch(const DOMException& e)
- {
- cerr << xml::transcode<char> (e.getMessage ()) << std::endl;
- r = 1;
- }
- catch (const xml_schema::exception& e)
- {
- cerr << e << endl;
- r = 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- r = 1;
- }
-
- XQillaPlatformUtils::terminate();
- return r;
-}
diff --git a/xsd/examples/cxx/tree/xpath/makefile b/xsd/examples/cxx/tree/xpath/makefile
deleted file mode 100644
index 693c6b2..0000000
--- a/xsd/examples/cxx/tree/xpath/makefile
+++ /dev/null
@@ -1,123 +0,0 @@
-# file : examples/cxx/tree/xpath/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := people.xsd
-cxx := driver.cxx dom-parse.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-ifeq ($(filter $(MAKECMDGOALS),dist dist-win install),)
-$(call import,\
- $(scf_root)/import/libxqilla/stub.make,\
- l: xqilla.l,cpp-options: xqilla.l.cpp-options)
-endif
-
-
-# Build.
-#
-$(driver): $(obj) $(xqilla.l) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xqilla.l.cpp-options) $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Install & Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base))
-
-$(install):
- $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README)
- $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx)
- $(call install-data,$(src_base)/people.xsd,$(install_doc_dir)/xsd/$(path)/people.xsd)
- $(call install-data,$(src_base)/people.xml,$(install_doc_dir)/xsd/$(path)/people.xml)
- $(call install-data,$(src_base)/dom-parse.hxx,$(install_doc_dir)/xsd/$(path)/dom-parse.hxx)
- $(call install-data,$(src_base)/dom-parse.cxx,$(install_doc_dir)/xsd/$(path)/dom-parse.cxx)
-
-$(dist-common):
- $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx)
- $(call install-data,$(src_base)/people.xsd,$(dist_prefix)/$(path)/people.xsd)
- $(call install-data,$(src_base)/people.xml,$(dist_prefix)/$(path)/people.xml)
- $(call install-data,$(src_base)/dom-parse.hxx,$(dist_prefix)/$(path)/dom-parse.hxx)
- $(call install-data,$(src_base)/dom-parse.cxx,$(dist_prefix)/$(path)/dom-parse.cxx)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README)
-
-$(dist-win): |$(out_root)/.dist-pre
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt)
- $(call message,,todos $(dist_prefix)/$(path)/README.txt)
- $(call meta-vc8sln,$(src_root)/dist/template-vc8.sln,xpath-vc8.sln)
- $(call meta-vc9sln,$(src_root)/dist/template-vc9.sln,xpath-vc9.sln)
- $(call meta-vc10sln,$(src_root)/dist/template-vc10.sln,xpath-vc10.sln)
- $(call meta-vc11sln,$(src_root)/dist/template-vc11.sln,xpath-vc11.sln)
- $(call meta-vc12sln,$(src_root)/dist/template-vc12.sln,xpath-vc12.sln)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-
-$(call include,$(bld_root)/install.make)
-$(call include,$(bld_root)/meta/vc8sln.make)
-$(call include,$(bld_root)/meta/vc9sln.make)
-$(call include,$(bld_root)/meta/vc10sln.make)
-$(call include,$(bld_root)/meta/vc11sln.make)
-$(call include,$(bld_root)/meta/vc12sln.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/examples/cxx/tree/xpath/people.xml b/xsd/examples/cxx/tree/xpath/people.xml
deleted file mode 100644
index 9ad9ab6..0000000
--- a/xsd/examples/cxx/tree/xpath/people.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/xpath/people.xml
-copyright : not copyrighted - public domain
-
--->
-
-<ppl:directory xmlns:ppl="http://www.codesynthesis.com/people"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/people people.xsd">
-
- <person>
- <first-name>John</first-name>
- <last-name>Doe</last-name>
- <gender>male</gender>
- <age>32</age>
- </person>
-
- <person>
- <first-name>Jane</first-name>
- <last-name>Doe</last-name>
- <gender>female</gender>
- <age>28</age>
- </person>
-
-</ppl:directory>
diff --git a/xsd/examples/cxx/tree/xpath/people.xsd b/xsd/examples/cxx/tree/xpath/people.xsd
deleted file mode 100644
index 5be94de..0000000
--- a/xsd/examples/cxx/tree/xpath/people.xsd
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-file : examples/cxx/tree/xpath/people.xsd
-copyright : not copyrighted - public domain
-
--->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:ppl="http://www.codesynthesis.com/people"
- targetNamespace="http://www.codesynthesis.com/people">
-
- <xsd:simpleType name="gender">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="male"/>
- <xsd:enumeration value="female"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="first-name" type="xsd:string"/>
- <xsd:element name="last-name" type="xsd:string"/>
- <xsd:element name="gender" type="ppl:gender"/>
- <xsd:element name="age" type="xsd:unsignedShort"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="directory">
- <xsd:sequence>
- <xsd:element name="person" type="ppl:person" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="directory" type="ppl:directory"/>
-
-</xsd:schema>
diff --git a/xsd/examples/makefile b/xsd/examples/makefile
deleted file mode 100644
index 42c2bb7..0000000
--- a/xsd/examples/makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# file : examples/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-default := $(out_base)/
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-$(default): $(out_base)/cxx/parser/ $(out_base)/cxx/tree/
-$(install): $(out_base)/cxx/parser/.install $(out_base)/cxx/tree/.install
-$(dist): $(out_base)/cxx/parser/.dist $(out_base)/cxx/tree/.dist
-$(dist-win): $(out_base)/cxx/parser/.dist-win $(out_base)/cxx/tree/.dist-win
-$(clean): $(out_base)/cxx/parser/.clean $(out_base)/cxx/tree/.clean
-
-$(call import,$(src_base)/cxx/parser/makefile)
-$(call import,$(src_base)/cxx/tree/makefile)
diff --git a/xsd/libxsd/FLOSSE b/xsd/libxsd/FLOSSE
deleted file mode 100644
index cbf8b2c..0000000
--- a/xsd/libxsd/FLOSSE
+++ /dev/null
@@ -1,89 +0,0 @@
-1. Intent
-
-We want specified Free/Libre and Open Source Software ("FLOSS") to be
-able to use the specified GPL-licensed XSD runtime library (libxsd) and
-XSD generated code (collectively called the "Program") despite the fact
-that not all FLOSS licenses are compatible with version 2 of the GNU
-General Public License (the "GPL").
-
-It is our intent to allow distribution of the entire Derivative Work
-(including the Program) under one or more of the FLOSS licenses listed
-in section 3 (section 2.a). It is also our intent to disallow simple
-relicensing of the Program for the sole purpose of using it in
-proprietary applications (section 2.b and 2.c). As an example, consider
-two hypothetical scenarios:
-
- a) You created a program that uses the XSD generated code and the XSD
- runtime library to access information in XML instance documents.
- Your program performs useful computations based on this information
- (sections 2.b and 2.c are satisfied). You distribute your program,
- including the XSD generated code and the XSD runtime library under
- the BSD license and make it available at no charge to all third
- parties (section 2.a is satisfied). Later you (or someone else) may
- choose to base their proprietary application on your code since the
- BSD license does not prohibit it.
-
- This scenario falls under this FLOSS Exception.
-
-
- b) You created a library that uses the XSD generated code and the XSD
- runtime library to access information in XML instance documents. You
- did not add to the library any other useful code that uses the XSD
- generated code or the XSD runtime library (neither section 2.b nor
- 2.c is satisfied). You distribute your library, including the XSD
- generated code and the XSD runtime library under the BSD license and
- make it available at no charge to all third parties (section 2.a
- is satisfied). Later you base your proprietary application on this
- library since the BSD license does not prohibit it.
-
- This scenario does not fall under this FLOSS Exception (neither
- section 2.b nor 2.c is satisfied). You created the library for the
- sole purpose of making the XSD generated code and the XSD runtime
- library available to your proprietary application.
-
-
-2. Legal Terms and Conditions
-
-As a special exception to the terms and conditions of version 2 of
-the GPL you are free to distribute a verbatim copy of the Program
-as part of the Derivative Work that is formed from the Program or
-any part thereof and one or more works (each, a "FLOSS Work") as
-long as you also meet all of these conditions:
-
- a) You must cause the Derivative Work that in whole or in part
- contains or is derived from the Program or any part thereof,
- to be licensed as a whole at no charge to all third parties
- under the terms of one or more of the licenses listed in
- section 3.
-
- b) The Derivative Work should contain one or more FLOSS Work that
- can be reasonably considered as derived from the Program or some
- part thereof.
-
- c) The Derivative Work should not contain any part of the Program
- that cannot be reasonably considered as a base of one or more
- FLOSS Work.
-
-
-3. FLOSS License List
-
- a) Any license listed in the "GPL-Compatible Free Software Licenses"
- and the "GPL-Incompatible Free Software Licenses" sections of the
- License List as published by the Free Software Foundation (FSF):
-
- http://www.gnu.org/licenses/license-list.html
-
-
-4. Definitions
-
-Terms used, but not defined, herein shall have the meaning provided in
-the GPL.
-
-Derivative Work means a derivative work under copyright law.
-
-
-5. Applicability
-
-You may choose to redistribute a copy of the Program exclusively under
-the terms of the GPL by removing the FLOSS Exception notice from that
-copy of the Program.
diff --git a/xsd/libxsd/GPLv2 b/xsd/libxsd/GPLv2
deleted file mode 100644
index 3912109..0000000
--- a/xsd/libxsd/GPLv2
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/xsd/libxsd/INSTALL b/xsd/libxsd/INSTALL
deleted file mode 100644
index c9b4625..0000000
--- a/xsd/libxsd/INSTALL
+++ /dev/null
@@ -1,17 +0,0 @@
-Prerequisites
-
- run-time:
-
- - libxerces-c >= 3.0.0 http://xerces.apache.org/xerces-c/
-
-
-Building libxsd
-
- No building is necessary at the moment.
-
-
-Installing libxsd
-
- Not supported in this version. You may want to copy libxsd/xsd
- to $(prefix)/include so that you have $(prefix)/include/xsd/*.
-
diff --git a/xsd/libxsd/LICENSE b/xsd/libxsd/LICENSE
deleted file mode 100644
index 42346bf..0000000
--- a/xsd/libxsd/LICENSE
+++ /dev/null
@@ -1,26 +0,0 @@
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License version 2 as
-published by the Free Software Foundation.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-In addition, as a special exception, Code Synthesis Tools CC gives
-permission to link this program with the Xerces-C++ library (or with
-modified versions of Xerces-C++ that use the same license as Xerces-C++),
-and distribute linked combinations including the two. You must obey
-the GNU General Public License version 2 in all respects for all of
-the code used other than Xerces-C++. If you modify this copy of the
-program, you may extend this exception to your version of the program,
-but you are not obligated to do so. If you do not wish to do so, delete
-this exception statement from your version.
-
-In addition, Code Synthesis Tools CC makes a special exception for
-the Free/Libre and Open Source Software (FLOSS) which is described
-in the accompanying FLOSSE file.
diff --git a/xsd/libxsd/README b/xsd/libxsd/README
deleted file mode 100644
index 25fd38a..0000000
--- a/xsd/libxsd/README
+++ /dev/null
@@ -1,12 +0,0 @@
-libxsd is a runtime library for language mappings generated by
-CodeSynthesis XSD, a W3C XML Schema to C++ data binding compiler.
-
-See the LICENSE file for distribution conditions.
-
-See the INSTALL file for prerequisites and installation instructions.
-
-The project page is at http://www.codesynthesis.com/projects/xsd/
-
-Send bug reports or any other feedback to the xsd-users@codesynthesis.com
-mailing list.
-
diff --git a/xsd/libxsd/makefile b/xsd/libxsd/makefile
deleted file mode 100644
index 1deb770..0000000
--- a/xsd/libxsd/makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-# file : libxsd/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-
-
-# Install.
-#
-$(install):
- $(call install-dir,$(src_base)/xsd,$(install_inc_dir)/xsd)
- $(call install-data,$(src_base)/FLOSSE,$(install_doc_dir)/libxsd/FLOSSE)
- $(call install-data,$(src_base)/GPLv2,$(install_doc_dir)/libxsd/GPLv2)
- $(call install-data,$(src_base)/LICENSE,$(install_doc_dir)/libxsd/LICENSE)
- $(call install-data,$(src_base)/README,$(install_doc_dir)/libxsd/README)
-
-# Dist.
-#
-dist-common := $(out_base)/.dist-common
-
-$(dist-common):
- $(call install-dir,$(src_base)/xsd,$(dist_prefix)/libxsd/xsd)
-
-$(dist): $(dist-common)
- $(call install-data,$(src_base)/GPLv2,$(dist_prefix)/libxsd/GPLv2)
- $(call install-data,$(src_base)/FLOSSE,$(dist_prefix)/libxsd/FLOSSE)
- $(call install-data,$(src_base)/LICENSE,$(dist_prefix)/libxsd/LICENSE)
- $(call install-data,$(src_base)/README,$(dist_prefix)/libxsd/README)
-
-$(dist-win): $(dist-common)
- $(call install-data,$(src_base)/GPLv2,$(dist_prefix)/libxsd/GPLv2.txt)
- $(call message,,todos $(dist_prefix)/libxsd/GPLv2.txt)
- $(call install-data,$(src_base)/FLOSSE,$(dist_prefix)/libxsd/FLOSSE.txt)
- $(call message,,todos $(dist_prefix)/libxsd/FLOSSE.txt)
- $(call install-data,$(src_base)/LICENSE,$(dist_prefix)/libxsd/LICENSE.txt)
- $(call message,,todos $(dist_prefix)/libxsd/LICENSE.txt)
- $(call install-data,$(src_base)/README,$(dist_prefix)/libxsd/README.txt)
- $(call message,,todos $(dist_prefix)/libxsd/README.txt)
-
-$(call include,$(bld_root)/install.make)
diff --git a/xsd/libxsd/xsd/cxx/auto-array.hxx b/xsd/libxsd/xsd/cxx/auto-array.hxx
deleted file mode 100644
index 584785e..0000000
--- a/xsd/libxsd/xsd/cxx/auto-array.hxx
+++ /dev/null
@@ -1,119 +0,0 @@
-// file : xsd/cxx/auto-array.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_AUTO_ARRAY_HXX
-#define XSD_CXX_AUTO_ARRAY_HXX
-
-#include <xsd/cxx/config.hxx> // XSD_CXX11
-
-#ifdef XSD_CXX11
-# error use std::unique_ptr instead of non-standard auto_array
-#endif
-
-#include <cstddef> // std::size_t
-
-namespace xsd
-{
- namespace cxx
- {
- template <typename T>
- struct std_array_deleter
- {
- void
- operator() (T* p) const
- {
- delete[] p;
- }
- };
-
- // Simple automatic array. The second template parameter is
- // an optional deleter type. If not specified, delete[]
- // is used.
- //
- template <typename T, typename D = std_array_deleter<T> >
- struct auto_array
- {
- auto_array (T a[])
- : a_ (a), d_ (0)
- {
- }
-
- auto_array (T a[], const D& d)
- : a_ (a), d_ (&d)
- {
- }
-
- ~auto_array ()
- {
- if (d_ != 0)
- (*d_) (a_);
- else
- delete[] a_;
- }
-
- T&
- operator[] (std::size_t index) const
- {
- return a_[index];
- }
-
- T*
- get () const
- {
- return a_;
- }
-
- T*
- release ()
- {
- T* tmp (a_);
- a_ = 0;
- return tmp;
- }
-
- void
- reset (T a[] = 0)
- {
- if (a_ != a)
- {
- if (d_ != 0)
- (*d_) (a_);
- else
- delete[] a_;
-
- a_ = a;
- }
- }
-
- typedef void (auto_array::*bool_convertible)();
-
- operator bool_convertible () const
- {
- return a_ ? &auto_array<T, D>::true_ : 0;
- }
-
- private:
- auto_array (const auto_array&);
-
- auto_array&
- operator= (const auto_array&);
-
- private:
- void
- true_ ();
-
- private:
- T* a_;
- const D* d_;
- };
-
- template <typename T, typename D>
- void auto_array<T, D>::
- true_ ()
- {
- }
- }
-}
-
-#endif // XSD_CXX_AUTO_ARRAY_HXX
diff --git a/xsd/libxsd/xsd/cxx/compilers/vc-8/post.hxx b/xsd/libxsd/xsd/cxx/compilers/vc-8/post.hxx
deleted file mode 100644
index a8d25a6..0000000
--- a/xsd/libxsd/xsd/cxx/compilers/vc-8/post.hxx
+++ /dev/null
@@ -1,5 +0,0 @@
-// file : xsd/cxx/compilers/vc-8/post.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#pragma warning (pop)
diff --git a/xsd/libxsd/xsd/cxx/compilers/vc-8/pre.hxx b/xsd/libxsd/xsd/cxx/compilers/vc-8/pre.hxx
deleted file mode 100644
index 82ca41d..0000000
--- a/xsd/libxsd/xsd/cxx/compilers/vc-8/pre.hxx
+++ /dev/null
@@ -1,27 +0,0 @@
-// file : xsd/cxx/compilers/vc-8/pre.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// These warnings had to be disabled "for good".
-//
-#pragma warning (disable:4250) // inherits via dominance
-#pragma warning (disable:4661) // no definition for explicit instantiation
-
-
-// Push warning state.
-//
-#pragma warning (push, 3)
-
-
-// Disabled warnings.
-//
-#pragma warning (disable:4355) // passing 'this' to a member
-#pragma warning (disable:4800) // forcing value to bool
-#pragma warning (disable:4275) // non dll-interface base
-#pragma warning (disable:4251) // base needs to have dll-interface
-#pragma warning (disable:4224) // nonstandard extension (/Za option)
-
-
-// Elevated warnings.
-//
-#pragma warning (2:4239) // standard doesn't allow this conversion
diff --git a/xsd/libxsd/xsd/cxx/config.hxx b/xsd/libxsd/xsd/cxx/config.hxx
deleted file mode 100644
index 076b107..0000000
--- a/xsd/libxsd/xsd/cxx/config.hxx
+++ /dev/null
@@ -1,47 +0,0 @@
-// file : xsd/cxx/config.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_CONFIG_HXX
-#define XSD_CXX_CONFIG_HXX
-
-#include <xsd/cxx/version.hxx>
-
-// Available C++11 features.
-//
-#ifdef XSD_CXX11
-#ifdef _MSC_VER
-# if _MSC_VER >= 1600
-# define XSD_CXX11_NULLPTR
-# if _MSC_VER >= 1800
-# define XSD_CXX11_TEMPLATE_ALIAS
-# endif
-# endif
-#else
-# if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L
-# ifdef __GNUC__
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || __GNUC__ > 4
-# define XSD_CXX11_NULLPTR
-# endif
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) || __GNUC__ > 4
-# define XSD_CXX11_TEMPLATE_ALIAS
-# endif
-# else
-# define XSD_CXX11_NULLPTR
-# define XSD_CXX11_TEMPLATE_ALIAS
-# endif
-# endif
-#endif
-#endif // XSD_CXX11
-
-#ifdef XSD_CXX11
-# define XSD_AUTO_PTR std::unique_ptr
-#else
-# define XSD_AUTO_PTR std::auto_ptr
-#endif
-
-// Macro to suppress the unused variable warning.
-//
-#define XSD_UNUSED(x) (void)x
-
-#endif // XSD_CXX_CONFIG_HXX
diff --git a/xsd/libxsd/xsd/cxx/exceptions.hxx b/xsd/libxsd/xsd/cxx/exceptions.hxx
deleted file mode 100644
index 45f5dc6..0000000
--- a/xsd/libxsd/xsd/cxx/exceptions.hxx
+++ /dev/null
@@ -1,20 +0,0 @@
-// file : xsd/cxx/exceptions.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_EXCEPTIONS_HXX
-#define XSD_CXX_EXCEPTIONS_HXX
-
-#include <exception> // std::exception
-
-namespace xsd
-{
- namespace cxx
- {
- struct exception: std::exception
- {
- };
- }
-}
-
-#endif // XSD_CXX_EXCEPTIONS_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/document.hxx b/xsd/libxsd/xsd/cxx/parser/document.hxx
deleted file mode 100644
index 731808b..0000000
--- a/xsd/libxsd/xsd/cxx/parser/document.hxx
+++ /dev/null
@@ -1,89 +0,0 @@
-// file : xsd/cxx/parser/document.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_DOCUMENT_HXX
-#define XSD_CXX_PARSER_DOCUMENT_HXX
-
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/parser/elements.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // If you want to use a different underlying XML parser, all you
- // need to do is to route events to this interface.
- //
- template <typename C>
- class document
- {
- public:
- virtual
- ~document ();
-
- document (parser_base<C>& root,
- const std::basic_string<C>& ns,
- const std::basic_string<C>& name);
-
- public:
- // The type argument is a type name and namespace from the
- // xsi:type attribute in the form "<name> <namespace>" with
- // the space and namespace part absent if the type does not
- // have a namespace or 0 if xsi:type is not present.
- //
- void
- start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type);
-
- void
- end_element (const ro_string<C>& ns, const ro_string<C>& name);
-
- void
- attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- void
- characters (const ro_string<C>&);
-
- protected:
- document ();
-
- // This function is called to obtain the root element type parser.
- // If the returned pointed is 0 then the whole document content
- // is ignored.
- //
- virtual parser_base<C>*
- start_root_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type);
-
- // This function is called to indicate the completion of document
- // parsing. The parser argument contains the pointer returned by
- // start_root_element.
- //
- virtual void
- end_root_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- parser_base<C>* parser);
-
- private:
- parser_base<C>* root_;
- std::basic_string<C> ns_;
- std::basic_string<C> name_;
- std::size_t depth_;
- };
- }
- }
-}
-
-#include <xsd/cxx/parser/document.txx>
-
-#endif // XSD_CXX_PARSER_DOCUMENT_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/document.txx b/xsd/libxsd/xsd/cxx/parser/document.txx
deleted file mode 100644
index 3c25574..0000000
--- a/xsd/libxsd/xsd/cxx/parser/document.txx
+++ /dev/null
@@ -1,128 +0,0 @@
-// file : xsd/cxx/parser/document.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cassert>
-
-#include <xsd/cxx/parser/schema-exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // document
- //
- template <typename C>
- document<C>::
- ~document ()
- {
- }
-
- template <typename C>
- document<C>::
- document (parser_base<C>& root,
- const std::basic_string<C>& ns,
- const std::basic_string<C>& name)
- : root_ (&root), ns_ (ns), name_ (name), depth_ (0)
- {
- }
-
- template <typename C>
- document<C>::
- document ()
- : root_ (0), depth_ (0)
- {
- }
-
- template <typename C>
- void document<C>::
- start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type)
- {
- if (depth_++ > 0)
- {
- if (root_)
- root_->_start_element (ns, name, type);
- }
- else
- {
- root_ = start_root_element (ns, name, type);
-
- if (root_)
- {
- // pre () is called by the user.
- //
- root_->_pre_impl ();
- }
- }
- }
-
- template <typename C>
- void document<C>::
- end_element (const ro_string<C>& ns, const ro_string<C>& name)
- {
- assert (depth_ > 0);
-
- if (--depth_ > 0)
- {
- if (root_)
- root_->_end_element (ns, name);
- }
- else
- {
- if (root_)
- {
- root_->_post_impl ();
- //
- // post() is called by the user.
- }
-
- end_root_element (ns, name, root_);
- }
- }
-
- template <typename C>
- void document<C>::
- attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- if (root_)
- root_->_attribute (ns, name, value);
- }
-
- template <typename C>
- void document<C>::
- characters (const ro_string<C>& s)
- {
- if (root_)
- root_->_characters (s);
- }
-
- template <typename C>
- parser_base<C>* document<C>::
- start_root_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>*)
- {
- if (name_ == name && ns_ == ns)
- {
- return root_;
- }
- else
- throw expected_element<C> (ns_, name_, ns, name);
- }
-
- template <typename C>
- void document<C>::
- end_root_element (const ro_string<C>&,
- const ro_string<C>&,
- parser_base<C>*)
- {
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/elements.hxx b/xsd/libxsd/xsd/cxx/parser/elements.hxx
deleted file mode 100644
index 2f814d1..0000000
--- a/xsd/libxsd/xsd/cxx/parser/elements.hxx
+++ /dev/null
@@ -1,94 +0,0 @@
-// file : xsd/cxx/parser/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_ELEMENTS_HXX
-#define XSD_CXX_PARSER_ELEMENTS_HXX
-
-#include <xsd/cxx/ro-string.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // pre() and post() are overridable pre/post callbacks, i.e., the
- // derived parser can override them without calling the base version.
- // _pre() and _post() are not overridable pre/post callbacks in the
- // sense that the derived parser may override them but has to call
- // the base version. The call sequence is as shown below:
- //
- // pre ()
- // _pre ()
- // _post ()
- // post ()
- //
- template <typename C>
- class parser_base
- {
- public:
- virtual
- ~parser_base ();
-
- virtual void
- pre ();
-
- virtual void
- _pre ();
-
- // The type argument is a type name and namespace from the
- // xsi:type attribute in the form "<name> <namespace>" with
- // the space and namespace part absent if the type does not
- // have a namespace or 0 if xsi:type is not present.
- //
- virtual void
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type) = 0;
-
- virtual void
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name) = 0;
-
- virtual void
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value) = 0;
-
- virtual void
- _characters (const ro_string<C>&) = 0;
-
- virtual void
- _post ();
-
- // The post() signature varies depending on the parser return
- // type.
- //
-
- // Implementation callbacks for _pre and _post. The _pre and _post
- // callbacks should never be called directly. Instead, the *_impl
- // versions should be used. By default _pre_impl and _post_impl
- // simply call _pre and _post respectively.
- //
- virtual void
- _pre_impl ();
-
- virtual void
- _post_impl ();
-
- public:
- // Dynamic type in the form "<name> <namespace>" with
- // the space and namespace part absent if the type does
- // not have a namespace. Used in polymorphism-aware code.
- //
- virtual const C*
- _dynamic_type () const;
- };
- }
- }
-}
-
-#include <xsd/cxx/parser/elements.txx>
-
-#endif // XSD_CXX_PARSER_ELEMENTS_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/elements.txx b/xsd/libxsd/xsd/cxx/parser/elements.txx
deleted file mode 100644
index 3aaf017..0000000
--- a/xsd/libxsd/xsd/cxx/parser/elements.txx
+++ /dev/null
@@ -1,59 +0,0 @@
-// file : xsd/cxx/parser/elements.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // parser_base
- //
- template <typename C>
- parser_base<C>::
- ~parser_base ()
- {
- }
-
- template <typename C>
- void parser_base<C>::
- pre ()
- {
- }
-
- template <typename C>
- void parser_base<C>::
- _pre ()
- {
- }
-
- template <typename C>
- void parser_base<C>::
- _post ()
- {
- }
-
- template <typename C>
- void parser_base<C>::
- _pre_impl ()
- {
- _pre ();
- }
-
- template <typename C>
- void parser_base<C>::
- _post_impl ()
- {
- _post ();
- }
-
- template <typename C>
- const C* parser_base<C>::
- _dynamic_type () const
- {
- return 0;
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/error-handler.hxx b/xsd/libxsd/xsd/cxx/parser/error-handler.hxx
deleted file mode 100644
index 1352bec..0000000
--- a/xsd/libxsd/xsd/cxx/parser/error-handler.hxx
+++ /dev/null
@@ -1,56 +0,0 @@
-// file : xsd/cxx/parser/error-handler.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_ERROR_HANDLER_HXX
-#define XSD_CXX_PARSER_ERROR_HANDLER_HXX
-
-#include <xsd/cxx/xml/error-handler.hxx>
-
-#include <xsd/cxx/parser/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- template <typename C>
- class error_handler: public xml::error_handler<C>
- {
- public:
- typedef typename xml::error_handler<C>::severity severity;
-
- error_handler ()
- : failed_ (false)
- {
- }
-
- virtual bool
- handle (const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- severity s,
- const std::basic_string<C>& message);
-
- void
- throw_if_failed () const;
-
- void
- reset ()
- {
- failed_ = false;
- diagnostics_.clear ();
- }
-
- private:
- bool failed_;
- diagnostics<C> diagnostics_;
- };
- }
- }
-}
-
-#include <xsd/cxx/parser/error-handler.txx>
-
-#endif // XSD_CXX_PARSER_ERROR_HANDLER_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/error-handler.txx b/xsd/libxsd/xsd/cxx/parser/error-handler.txx
deleted file mode 100644
index db247a7..0000000
--- a/xsd/libxsd/xsd/cxx/parser/error-handler.txx
+++ /dev/null
@@ -1,40 +0,0 @@
-// file : xsd/cxx/parser/error-handler.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- template <typename C>
- bool error_handler<C>::
- handle (const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- severity s,
- const std::basic_string<C>& message)
- {
- diagnostics_.push_back (
- error<C> (s == severity::warning
- ? cxx::parser::severity::warning
- : cxx::parser::severity::error,
- id, line, column, message));
-
- if (!failed_ && s != severity::warning)
- failed_ = true;
-
- return true;
- }
-
- template <typename C>
- void error_handler<C>::
- throw_if_failed () const
- {
- if (failed_)
- throw parsing<C> (diagnostics_);
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/exceptions.hxx b/xsd/libxsd/xsd/cxx/parser/exceptions.hxx
deleted file mode 100644
index 04cf30f..0000000
--- a/xsd/libxsd/xsd/cxx/parser/exceptions.hxx
+++ /dev/null
@@ -1,152 +0,0 @@
-// file : xsd/cxx/parser/exceptions.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_EXCEPTIONS_HXX
-#define XSD_CXX_PARSER_EXCEPTIONS_HXX
-
-#include <string>
-#include <vector>
-#include <ostream>
-
-#include <xsd/cxx/exceptions.hxx> // xsd::cxx::exception
-#include <xsd/cxx/ro-string.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- //
- //
- template <typename C>
- struct exception: xsd::cxx::exception
- {
- friend
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const exception& e)
- {
- e.print (os);
- return os;
- }
-
- protected:
- virtual void
- print (std::basic_ostream<C>&) const = 0;
- };
-
-
- //
- //
- struct severity
- {
- enum value
- {
- warning,
- error
- };
-
- severity (value v) : v_ (v) {}
- operator value () const { return v_; }
-
- private:
- value v_;
- };
-
- template <typename C>
- struct error
- {
- error (cxx::parser::severity,
- const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- const std::basic_string<C>& message);
-
- cxx::parser::severity
- severity () const
- {
- return severity_;
- }
-
- const std::basic_string<C>&
- id () const
- {
- return id_;
- }
-
- unsigned long
- line () const
- {
- return line_;
- }
-
- unsigned long
- column () const
- {
- return column_;
- }
-
- const std::basic_string<C>&
- message () const
- {
- return message_;
- }
-
- private:
- cxx::parser::severity severity_;
- std::basic_string<C> id_;
- unsigned long line_;
- unsigned long column_;
- std::basic_string<C> message_;
- };
-
- // See exceptions.ixx for operator<< (error).
-
-
- //
- //
- template <typename C>
- struct diagnostics: std::vector<error<C> >
- {
- };
-
- // See exceptions.ixx for operator<< (diagnostics).
-
- //
- //
- template <typename C>
- struct parsing: exception<C>
- {
- virtual
- ~parsing () throw ();
-
- parsing ();
-
- parsing (const cxx::parser::diagnostics<C>&);
-
- const cxx::parser::diagnostics<C>&
- diagnostics () const
- {
- return diagnostics_;
- }
-
- virtual const char*
- what () const throw ();
-
- protected:
- virtual void
- print (std::basic_ostream<C>&) const;
-
- private:
- cxx::parser::diagnostics<C> diagnostics_;
- };
- }
- }
-}
-
-#include <xsd/cxx/parser/exceptions.txx>
-
-#endif // XSD_CXX_PARSER_EXCEPTIONS_HXX
-
-#include <xsd/cxx/parser/exceptions.ixx>
diff --git a/xsd/libxsd/xsd/cxx/parser/exceptions.ixx b/xsd/libxsd/xsd/cxx/parser/exceptions.ixx
deleted file mode 100644
index f7489f3..0000000
--- a/xsd/libxsd/xsd/cxx/parser/exceptions.ixx
+++ /dev/null
@@ -1,128 +0,0 @@
-// file : xsd/cxx/parser/exceptions.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR)
-
-#ifndef XSD_CXX_PARSER_EXCEPTIONS_IXX_CHAR
-#define XSD_CXX_PARSER_EXCEPTIONS_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // error
- //
- inline
- std::basic_ostream<char>&
- operator<< (std::basic_ostream<char>& os, const error<char>& e)
- {
- return os << e.id () << ':' << e.line () << ':' << e.column ()
- << (e.severity () == severity::error
- ? " error: "
- : " warning: ") << e.message ();
- }
-
-
- // diagnostics
- //
- inline
- std::basic_ostream<char>&
- operator<< (std::basic_ostream<char>& os, const diagnostics<char>& d)
- {
- for (diagnostics<char>::const_iterator b (d.begin ()), i (b);
- i != d.end ();
- ++i)
- {
- if (i != b)
- os << "\n";
-
- os << *i;
- }
-
- return os;
- }
-
- // parsing
- //
- template<>
- inline
- void parsing<char>::
- print (std::basic_ostream<char>& os) const
- {
- if (diagnostics_.empty ())
- os << "instance document parsing failed";
- else
- os << diagnostics_;
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_EXCEPTIONS_IXX_CHAR
-#endif // XSD_CXX_PARSER_USE_CHAR
-
-
-#if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR)
-
-#ifndef XSD_CXX_PARSER_EXCEPTIONS_IXX_WCHAR
-#define XSD_CXX_PARSER_EXCEPTIONS_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // error
- //
- inline
- std::basic_ostream<wchar_t>&
- operator<< (std::basic_ostream<wchar_t>& os, const error<wchar_t>& e)
- {
- return os << e.id () << L':' << e.line () << L':' << e.column ()
- << (e.severity () == severity::error
- ? L" error: "
- : L" warning: ") << e.message ();
- }
-
- // diagnostics
- //
- inline
- std::basic_ostream<wchar_t>&
- operator<< (std::basic_ostream<wchar_t>& os,
- const diagnostics<wchar_t>& d)
- {
- for (diagnostics<wchar_t>::const_iterator b (d.begin ()), i (b);
- i != d.end ();
- ++i)
- {
- if (i != b)
- os << L"\n";
-
- os << *i;
- }
-
- return os;
- }
-
- // parsing
- //
- template<>
- inline
- void parsing<wchar_t>::
- print (std::basic_ostream<wchar_t>& os) const
- {
- if (diagnostics_.empty ())
- os << L"instance document parsing failed";
- else
- os << diagnostics_;
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_EXCEPTIONS_IXX_WCHAR
-#endif // XSD_CXX_PARSER_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/parser/exceptions.txx b/xsd/libxsd/xsd/cxx/parser/exceptions.txx
deleted file mode 100644
index d0e52b6..0000000
--- a/xsd/libxsd/xsd/cxx/parser/exceptions.txx
+++ /dev/null
@@ -1,58 +0,0 @@
-// file : xsd/cxx/parser/exceptions.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // error
- //
- template <typename C>
- error<C>::
- error (cxx::parser::severity s,
- const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- const std::basic_string<C>& message)
- : severity_ (s),
- id_ (id),
- line_ (line),
- column_ (column),
- message_ (message)
- {
- }
-
-
- // parsing
- //
- template <typename C>
- parsing<C>::
- ~parsing () throw ()
- {
- }
-
- template <typename C>
- parsing<C>::
- parsing ()
- {
- }
-
- template <typename C>
- parsing<C>::
- parsing (const cxx::parser::diagnostics<C>& diagnostics)
- : diagnostics_ (diagnostics)
- {
- }
-
- template <typename C>
- const char* parsing<C>::
- what () const throw ()
- {
- return "instance document parsing failed";
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/expat/elements.hxx b/xsd/libxsd/xsd/cxx/parser/expat/elements.hxx
deleted file mode 100644
index 86e7a73..0000000
--- a/xsd/libxsd/xsd/cxx/parser/expat/elements.hxx
+++ /dev/null
@@ -1,362 +0,0 @@
-// file : xsd/cxx/parser/expat/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_EXPAT_ELEMENTS_HXX
-#define XSD_CXX_PARSER_EXPAT_ELEMENTS_HXX
-
-#include <xsd/cxx/config.hxx> // XSD_CXX11
-
-#include <string>
-#include <iosfwd>
-#include <cstddef> // std::size_t
-#include <vector>
-
-#ifdef XSD_CXX11
-# include <memory> // std::unique_ptr
-#endif
-
-#include <expat.h>
-
-// We only support UTF-8 expat for now.
-//
-#ifdef XML_UNICODE
-#error UTF-16 expat (XML_UNICODE defined) is not supported
-#endif
-
-#include <xsd/cxx/xml/error-handler.hxx>
-
-#include <xsd/cxx/parser/exceptions.hxx>
-#include <xsd/cxx/parser/elements.hxx>
-#include <xsd/cxx/parser/document.hxx>
-#include <xsd/cxx/parser/error-handler.hxx>
-#include <xsd/cxx/parser/schema-exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace expat
- {
-#ifdef XSD_CXX11
- struct parser_deleter
- {
- void
- operator() (XML_Parser p) const
- {
- if (p != 0)
- XML_ParserFree (p);
- }
- };
-
- typedef std::unique_ptr<XML_ParserStruct> parser_auto_ptr;
-#else
- // Simple auto pointer for Expat's XML_Parser object.
- //
- struct parser_auto_ptr
- {
- ~parser_auto_ptr ()
- {
- if (parser_ != 0)
- XML_ParserFree (parser_);
- }
-
- explicit
- parser_auto_ptr (XML_Parser parser = 0)
- : parser_ (parser)
- {
- }
-
- parser_auto_ptr&
- operator= (XML_Parser parser)
- {
- if (parser_ != 0)
- XML_ParserFree (parser_);
-
- parser_ = parser;
- return *this;
- }
-
- XML_Parser
- get () const
- {
- return parser_;
- }
-
- private:
- parser_auto_ptr (const parser_auto_ptr&);
-
- parser_auto_ptr&
- operator= (const parser_auto_ptr&);
-
- private:
- XML_Parser parser_;
- };
-#endif // XSD_CXX11
-
- //
- //
- template <typename C>
- struct document: cxx::parser::document<C> // VC likes it qualified
- {
- public:
- document (parser_base<C>&,
- const C* root_element_name,
- bool polymorphic = false);
-
- document (parser_base<C>&,
- const std::basic_string<C>& root_element_name,
- bool polymorphic = false);
-
- document (parser_base<C>&,
- const C* root_element_namespace,
- const C* root_element_name,
- bool polymorphic = false);
-
- document (parser_base<C>&,
- const std::basic_string<C>& root_element_namespace,
- const std::basic_string<C>& root_element_name,
- bool polymorphic = false);
-
- protected:
- document (bool polymorphic = false);
-
- public:
- // Parse a local file. The file is accessed with std::ifstream
- // in binary mode. The std::ios_base::failure exception is used
- // to report io errors (badbit and failbit).
- void
- parse (const std::basic_string<C>& file);
-
- // Parse a local file with a user-provided error_handler
- // object. The file is accessed with std::ifstream in binary
- // mode. The std::ios_base::failure exception is used to report
- // io errors (badbit and failbit).
- //
- void
- parse (const std::basic_string<C>& file, xml::error_handler<C>&);
-
- public:
- // System id is a "system" identifier of the resources (e.g.,
- // URI or a full file path). Public id is a "public" identifier
- // of the resource (e.g., application-specific name or relative
- // file path). System id is used to resolve relative paths.
- // In diagnostics messages system id is used if public id is
- // not available. Otherwise public id is used.
- //
-
- // Parse std::istream.
- //
- void
- parse (std::istream&);
-
- // Parse std::istream with a user-provided error_handler object.
- //
- void
- parse (std::istream&, xml::error_handler<C>&);
-
- // Parse std::istream with a system id.
- //
- void
- parse (std::istream&, const std::basic_string<C>& system_id);
-
- // Parse std::istream with a system id and a user-provided
- // error_handler object.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- xml::error_handler<C>&);
-
- // Parse std::istream with system and public ids.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id);
-
- // Parse std::istream with system and public ids and a user-provided
- // error_handler object.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- xml::error_handler<C>&);
-
- public:
- // Parse a chunk of input. You can call these functions multiple
- // times with the last call having the last argument true.
- //
- void
- parse (const void* data, std::size_t size, bool last);
-
- void
- parse (const void* data, std::size_t size, bool last,
- xml::error_handler<C>&);
-
- void
- parse (const void* data, std::size_t size, bool last,
- const std::basic_string<C>& system_id);
-
- void
- parse (const void* data, std::size_t size, bool last,
- const std::basic_string<C>& system_id,
- xml::error_handler<C>&);
-
- void
- parse (const void* data, std::size_t size, bool last,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id);
-
- void
- parse (const void* data, std::size_t size, bool last,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- xml::error_handler<C>&);
-
- public:
- // Low-level Expat-specific parsing API. A typical use case
- // would look like this (pseudo-code):
- //
- // xxx_pimpl root;
- // document doc (root, "root");
- //
- // root.pre ();
- // doc.parse_begin (xml_parser, "file.xml");
- //
- // while (more_stuff_to_parse &&)
- // {
- // // Call XML_Parse or XML_ParseBuffer.
- //
- // if (status == XML_STATUS_ERROR)
- // break;
- // }
- //
- // // Call parse_end even in case of an error to translate
- // // XML and Schema errors to exceptions or error_handler
- // // calls.
- // //
- // doc.parse_end ();
- // result_type result (root.post_xxx ());
- //
- // Notes:
- //
- // 1. If your XML instances use XML namespaces, the
- // XML_ParserCreateNS functions should be used to create the
- // XML parser. Space (XML_Char (' ')) should be used as a
- // separator (the second argument to XML_ParserCreateNS).
- //
- void
- parse_begin (XML_Parser);
-
- void
- parse_begin (XML_Parser, const std::basic_string<C>& public_id);
-
- void
- parse_begin (XML_Parser, xml::error_handler<C>&);
-
- void
- parse_begin (XML_Parser,
- const std::basic_string<C>& public_id,
- xml::error_handler<C>&);
- void
- parse_end ();
-
- // Event routing.
- //
- public:
- static void XMLCALL
- start_element_thunk_ (void*, const XML_Char*, const XML_Char**);
-
- static void XMLCALL
- end_element_thunk_ (void*, const XML_Char*);
-
- static void XMLCALL
- characters_thunk_ (void*, const XML_Char*, int);
-
- static void XMLCALL
- start_namespace_decl_thunk_ (
- void*, const XML_Char*, const XML_Char*);
-
- static void XMLCALL
- end_namespace_decl_thunk_ (void*, const XML_Char*);
-
- protected:
- void
- start_element_ (const XML_Char* ns_name, const XML_Char** atts);
-
- void
- end_element_ (const XML_Char* ns_name);
-
- void
- characters_ (const XML_Char* s, std::size_t n);
-
- void
- start_namespace_decl_ (const XML_Char* prefix, const XML_Char* ns);
-
- void
- end_namespace_decl_ (const XML_Char* prefix);
-
- protected:
- void
- set ();
-
- void
- clear ();
-
- bool
- parse (std::istream&,
- const std::basic_string<C>* system_id,
- const std::basic_string<C>* public_id,
- xml::error_handler<C>&);
-
- bool
- parse (const void* data, std::size_t size, bool last,
- const std::basic_string<C>* system_id,
- const std::basic_string<C>* public_id,
- xml::error_handler<C>&);
-
-
- void
- translate_schema_exception (const schema_exception<C>& e);
-
- protected:
- XML_Parser xml_parser_;
- parser_auto_ptr auto_xml_parser_;
-
- xml::error_handler<C>* eh_;
- error_handler<C> default_eh_;
- std::basic_string<C> public_id_;
-
- bool polymorphic_;
-
- // Namespace-prefix mapping. Only maintained in the polymorphic
- // case.
- //
- struct ns_decl
- {
- ns_decl (const std::basic_string<C>& p,
- const std::basic_string<C>& n)
- : prefix (p), ns (n)
- {
- }
-
- std::basic_string<C> prefix;
- std::basic_string<C> ns;
- };
-
- typedef std::vector<ns_decl> ns_decls;
-
- ns_decls ns_decls_;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/expat/elements.txx>
-
-#endif // XSD_CXX_PARSER_EXPAT_ELEMENTS_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/expat/elements.txx b/xsd/libxsd/xsd/cxx/parser/expat/elements.txx
deleted file mode 100644
index d3fc0d9..0000000
--- a/xsd/libxsd/xsd/cxx/parser/expat/elements.txx
+++ /dev/null
@@ -1,821 +0,0 @@
-// file : xsd/cxx/parser/expat/elements.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <new> // std::bad_alloc
-#include <istream>
-#include <fstream>
-#include <cstring> // std::strchr
-#include <cassert>
-
-#include <xsd/cxx/xml/bits/literals.hxx> // xml::bits::{xml_prefix, etc}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace expat
- {
-
- // document
- //
-
- template <typename C>
- document<C>::
- document (parser_base<C>& p,
- const std::basic_string<C>& name,
- bool polymorphic)
- : cxx::parser::document<C> (p, std::basic_string<C> (), name),
- xml_parser_ (0),
- eh_ (0),
- polymorphic_ (polymorphic)
- {
- }
-
- template <typename C>
- document<C>::
- document (parser_base<C>& p,
- const C* name,
- bool polymorphic)
- : cxx::parser::document<C> (p, std::basic_string<C> (), name),
- xml_parser_ (0),
- eh_ (0),
- polymorphic_ (polymorphic)
- {
- }
-
- template <typename C>
- document<C>::
- document (parser_base<C>& p,
- const C* ns,
- const C* name,
- bool polymorphic)
- : cxx::parser::document<C> (p, ns, name),
- xml_parser_ (0),
- eh_ (0),
- polymorphic_ (polymorphic)
- {
- }
-
- template <typename C>
- document<C>::
- document (parser_base<C>& p,
- const std::basic_string<C>& ns,
- const std::basic_string<C>& name,
- bool polymorphic)
- : cxx::parser::document<C> (p, ns, name),
- xml_parser_ (0),
- eh_ (0),
- polymorphic_ (polymorphic)
- {
- }
-
- template <typename C>
- document<C>::
- document (bool polymorphic)
- : xml_parser_ (0),
- eh_ (0),
- polymorphic_ (polymorphic)
- {
- }
-
- // file
- //
-
- template <typename C>
- void document<C>::
- parse (const std::basic_string<C>& file)
- {
- std::ifstream ifs;
- ifs.exceptions (std::ios_base::badbit | std::ios_base::failbit);
- ifs.open (file.c_str (), std::ios_base::in | std::ios_base::binary);
-
- parse (ifs, file);
- }
-
- template <typename C>
- void document<C>::
- parse (const std::basic_string<C>& file, xml::error_handler<C>& eh)
- {
- std::ifstream ifs;
- ifs.exceptions (std::ios_base::badbit | std::ios_base::failbit);
- ifs.open (file.c_str (), std::ios_base::in | std::ios_base::binary);
-
- parse (ifs, file, eh);
- }
-
-
- // istream
- //
-
- template <typename C>
- void document<C>::
- parse (std::istream& is)
- {
- parse (is, 0, 0, default_eh_);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is, xml::error_handler<C>& eh)
- {
- if (!parse (is, 0, 0, eh))
- throw parsing<C> ();
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is, const std::basic_string<C>& system_id)
- {
- default_eh_.reset ();
- parse (is, &system_id, 0, default_eh_);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- xml::error_handler<C>& eh)
- {
- if (!parse (is, &system_id, 0, eh))
- throw parsing<C> ();
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id)
- {
- default_eh_.reset ();
- parse (is, &system_id, &public_id, default_eh_);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- xml::error_handler<C>& eh)
- {
- if (!parse (is, &system_id, &public_id, eh))
- throw parsing<C> ();
- }
-
- // data
- //
-
- template <typename C>
- void document<C>::
- parse (const void* data, std::size_t size, bool last)
- {
- default_eh_.reset ();
- parse (data, size, last, 0, 0, default_eh_);
- }
-
- template <typename C>
- void document<C>::
- parse (const void* data, std::size_t size, bool last,
- xml::error_handler<C>& eh)
- {
- if (!parse (data, size, last, 0, 0, eh))
- throw parsing<C> ();
- }
-
- template <typename C>
- void document<C>::
- parse (const void* data, std::size_t size, bool last,
- const std::basic_string<C>& system_id)
- {
- default_eh_.reset ();
- parse (data, size, last, &system_id, 0, default_eh_);
- }
-
- template <typename C>
- void document<C>::
- parse (const void* data, std::size_t size, bool last,
- const std::basic_string<C>& system_id,
- xml::error_handler<C>& eh)
- {
- if (!parse (data, size, last, &system_id, 0, eh))
- throw parsing<C> ();
- }
-
- template <typename C>
- void document<C>::
- parse (const void* data, std::size_t size, bool last,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id)
- {
- default_eh_.reset ();
- parse (data, size, last, &system_id, &public_id, default_eh_);
- }
-
- template <typename C>
- void document<C>::
- parse (const void* data, std::size_t size, bool last,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- xml::error_handler<C>& eh)
- {
- if (!parse (data, size, last, &system_id, &public_id, eh))
- throw parsing<C> ();
- }
-
- // Implementation details.
- //
-
- namespace bits
- {
- struct stream_exception_controller
- {
- ~stream_exception_controller ()
- {
- std::ios_base::iostate s = is_.rdstate ();
- s &= ~std::ios_base::failbit;
-
- // If our error state (sans failbit) intersects with the
- // exception state then that means we have an active
- // exception and changing error/exception state will
- // cause another to be thrown.
- //
- if (!(old_state_ & s))
- {
- // Clear failbit if it was caused by eof.
- //
- if (is_.fail () && is_.eof ())
- is_.clear (s);
-
- is_.exceptions (old_state_);
- }
- }
-
- stream_exception_controller (std::istream& is)
- : is_ (is), old_state_ (is_.exceptions ())
- {
- is_.exceptions (old_state_ & ~std::ios_base::failbit);
- }
-
- private:
- stream_exception_controller (const stream_exception_controller&);
-
- stream_exception_controller&
- operator= (const stream_exception_controller&);
-
- private:
- std::istream& is_;
- std::ios_base::iostate old_state_;
- };
- };
-
- template <typename C>
- bool document<C>::
- parse (std::istream& is,
- const std::basic_string<C>* system_id,
- const std::basic_string<C>* public_id,
- xml::error_handler<C>& eh)
- {
- parser_auto_ptr parser (XML_ParserCreateNS (0, XML_Char (' ')));
-
- if (parser == 0)
- throw std::bad_alloc ();
-
- if (system_id || public_id)
- parse_begin (parser, system_id ? *system_id : *public_id, eh);
- else
- parse_begin (parser, eh);
-
- // Temporarily unset the exception failbit. Also clear the
- // fail bit when we reset the old state if it was caused
- // by eof.
- //
- bits::stream_exception_controller sec (is);
-
- char buf[16384]; // 4 x page size.
-
- bool r (true);
-
- do
- {
- is.read (buf, sizeof (buf));
-
- if (is.bad () || (is.fail () && !is.eof ()))
- {
- // If the stream is not using exceptions then the user
- // will have to test for stream failures before calling
- // post.
- //
- break;
- }
-
- if (XML_Parse (
- parser, buf, is.gcount (), is.eof ()) == XML_STATUS_ERROR)
- {
- r = false;
- break;
- }
- } while (!is.eof ());
-
- parse_end ();
- return r;
- }
-
- template <typename C>
- bool document<C>::
- parse (const void* data,
- std::size_t size,
- bool last,
- const std::basic_string<C>* system_id,
- const std::basic_string<C>* public_id,
- xml::error_handler<C>& eh)
- {
- // First call.
- //
- if (auto_xml_parser_.get () == 0)
- {
- auto_xml_parser_ = XML_ParserCreateNS (0, XML_Char (' '));
-
- if (auto_xml_parser_.get () == 0)
- throw std::bad_alloc ();
-
- if (system_id || public_id)
- parse_begin (auto_xml_parser_.get (),
- system_id ? *system_id : *public_id, eh);
- else
- parse_begin (auto_xml_parser_.get (), eh);
- }
-
- bool r (XML_Parse (xml_parser_,
- static_cast<const char*> (data),
- static_cast<int> (size),
- last) != XML_STATUS_ERROR);
- parse_end ();
- return r;
- }
-
- // XML_Parser
- //
-
- template <typename C>
- void document<C>::
- parse_begin (XML_Parser parser)
- {
- xml_parser_ = parser;
- eh_ = &default_eh_;
- public_id_.clear ();
- set ();
- }
-
- template <typename C>
- void document<C>::
- parse_begin (XML_Parser parser,
- const std::basic_string<C>& public_id)
- {
- xml_parser_ = parser;
- eh_ = &default_eh_;
- public_id_ = public_id;
- set ();
- }
-
- template <typename C>
- void document<C>::
- parse_begin (XML_Parser parser, xml::error_handler<C>& eh)
- {
- xml_parser_ = parser;
- eh_ = &eh;
- public_id_.clear ();
- set ();
- }
-
- template <typename C>
- void document<C>::
- parse_begin (XML_Parser parser,
- const std::basic_string<C>& public_id,
- xml::error_handler<C>& eh)
- {
- xml_parser_ = parser;
- eh_ = &eh;
- public_id_ = public_id;
- set ();
- }
-
- template <typename C>
- void document<C>::
- parse_end ()
- {
- XML_Error e (XML_GetErrorCode (xml_parser_));
-
- if (e == XML_ERROR_NONE || e == XML_ERROR_ABORTED)
- {
- clear ();
- xml_parser_ = 0;
- auto_xml_parser_ = 0;
- }
- else
- {
- unsigned long l = XML_GetCurrentLineNumber (xml_parser_);
- unsigned long c = XML_GetCurrentColumnNumber (xml_parser_);
- std::basic_string<C> message (XML_ErrorString (e));
-
- eh_->handle (public_id_,
- l, c,
- xml::error_handler<C>::severity::fatal,
- message);
-
- clear ();
- xml_parser_ = 0;
- auto_xml_parser_ = 0;
-
- // We don't want to throw an empty parsing exception here
- // since the user probably already knows about the error.
- }
-
- if (eh_ == &default_eh_)
- default_eh_.throw_if_failed ();
- }
-
- //
- //
- template <typename C>
- void document<C>::
- set ()
- {
- assert (xml_parser_ != 0);
-
- XML_SetUserData(xml_parser_, this);
-
- XML_SetStartElementHandler (xml_parser_, start_element_thunk_);
- XML_SetEndElementHandler (xml_parser_, end_element_thunk_);
- XML_SetCharacterDataHandler (xml_parser_, characters_thunk_);
-
- if (polymorphic_)
- {
- XML_SetNamespaceDeclHandler (xml_parser_,
- start_namespace_decl_thunk_,
- end_namespace_decl_thunk_);
- }
- }
-
- template <typename C>
- void document<C>::
- clear ()
- {
- assert (xml_parser_ != 0);
-
- XML_SetUserData (xml_parser_, 0);
- XML_SetStartElementHandler (xml_parser_, 0);
- XML_SetEndElementHandler (xml_parser_, 0);
- XML_SetCharacterDataHandler (xml_parser_, 0);
-
- if (polymorphic_)
- XML_SetNamespaceDeclHandler (xml_parser_, 0, 0);
- }
-
- template <typename C>
- void document<C>::
- translate_schema_exception (const schema_exception<C>& e)
- {
- unsigned long l = XML_GetCurrentLineNumber (xml_parser_);
- unsigned long c = XML_GetCurrentColumnNumber (xml_parser_);
-
- eh_->handle (public_id_,
- l, c,
- xml::error_handler<C>::severity::fatal,
- e.message ());
-
- XML_StopParser (xml_parser_, false);
- }
-
- // Event routing.
- //
-
- // Expat thunks.
- //
- template <typename C>
- void XMLCALL document<C>::
- start_element_thunk_ (void* data,
- const XML_Char* ns_name,
- const XML_Char** atts)
- {
- document& d (*reinterpret_cast<document*> (data));
- d.start_element_ (ns_name, atts);
- }
-
- template <typename C>
- void XMLCALL document<C>::
- end_element_thunk_ (void* data, const XML_Char* ns_name)
- {
- document& d (*reinterpret_cast<document*> (data));
- d.end_element_ (ns_name);
- }
-
- template <typename C>
- void XMLCALL document<C>::
- characters_thunk_ (void* data, const XML_Char* s, int n)
- {
- document& d (*reinterpret_cast<document*> (data));
- d.characters_ (s, static_cast<std::size_t> (n));
- }
-
- template <typename C>
- void XMLCALL document<C>::
- start_namespace_decl_thunk_ (void* data,
- const XML_Char* prefix,
- const XML_Char* ns)
- {
- document& d (*reinterpret_cast<document*> (data));
- d.start_namespace_decl_ (prefix, ns);
- }
-
- template <typename C>
- void XMLCALL document<C>::
- end_namespace_decl_thunk_ (void* data, const XML_Char* prefix)
- {
- document& d (*reinterpret_cast<document*> (data));
- d.end_namespace_decl_ (prefix);
- }
-
- namespace bits
- {
- inline void
- split_name (const XML_Char* s,
- const char*& ns, std::size_t& ns_s,
- const char*& name, std::size_t& name_s)
- {
- const char* p (std::strchr (s, ' '));
-
- if (p)
- {
- ns = s;
- ns_s = p - s;
- name = p + 1;
- }
- else
- {
- ns = s;
- ns_s = 0;
- name = s;
- }
-
- name_s = std::char_traits<char>::length (name);
- }
- }
-
- template <typename C>
- void document<C>::
- start_element_ (const XML_Char* ns_name, const XML_Char** atts)
- {
- // Current Expat (2.0.0) has a (mis)-feature of a possibility of
- // calling callbacks even after the non-resumable XML_StopParser
- // call. The following code accounts for this.
- //
- {
- XML_ParsingStatus s;
- XML_GetParsingStatus (xml_parser_, &s);
- if (s.parsing == XML_FINISHED)
- return;
- }
-
- typedef std::basic_string<C> string;
-
- const char* ns_p;
- const char* name_p;
- size_t ns_s, name_s;
-
- bits::split_name (ns_name, ns_p, ns_s, name_p, name_s);
-
- {
- const ro_string<C> ns (ns_p, ns_s), name (name_p, name_s);
-
- if (!polymorphic_)
- {
- try
- {
- this->start_element (ns, name, 0);
- }
- catch (const schema_exception<C>& e)
- {
- translate_schema_exception (e);
- return;
- }
- }
- else
- {
- // Search for the xsi:type attribute.
- //
- const XML_Char** p = atts; // VC8 can't handle p (atts)
- for (; *p != 0; p += 2)
- {
- bits::split_name (*p, ns_p, ns_s, name_p, name_s);
- const ro_string<C> ns (ns_p, ns_s), name (name_p, name_s);
-
- if (name == xml::bits::type<C> () &&
- ns == xml::bits::xsi_namespace<C> ())
- break;
- }
-
- if (*p == 0)
- {
- try
- {
- this->start_element (ns, name, 0);
- }
- catch (const schema_exception<C>& e)
- {
- translate_schema_exception (e);
- return;
- }
- }
- else
- {
- // @@ Need proper QName validation.
- //
- // Get the qualified type name and try to resolve it.
- //
- ro_string<C> qn (*(p + 1));
-
- ro_string<C> tp, tn;
- typename ro_string<C>::size_type pos (qn.find (C (':')));
-
- try
- {
- if (pos != ro_string<C>::npos)
- {
- tp.assign (qn.data (), pos);
- tn.assign (qn.data () + pos + 1);
-
- if (tp.empty ())
- throw dynamic_type<C> (qn);
- }
- else
- tn.assign (qn.data (), qn.size ());
-
- if (tn.empty ())
- throw dynamic_type<C> (qn);
-
- // Search our namespace declaration stack. Note that
- // we need to do this even if prefix is empty. Sun CC
- // 5.7 blows if we use const_reverse_iterator.
- //
- ro_string<C> tns;
- for (typename ns_decls::reverse_iterator
- it (ns_decls_.rbegin ()), e (ns_decls_.rend ());
- it != e; ++it)
- {
- if (it->prefix == tp)
- {
- tns.assign (it->ns);
- break;
- }
- }
-
- if (!tp.empty () && tns.empty ())
- {
- // The 'xml' prefix requires special handling.
- //
- if (tp == xml::bits::xml_prefix<C> ())
- tns.assign (xml::bits::xml_namespace<C> ());
- else
- throw dynamic_type<C> (qn);
- }
-
- // Construct the compound type id.
- //
- string id (tn.data (), tn.size ());
-
- if (!tns.empty ())
- {
- id += C (' ');
- id.append (tns.data (), tns.size ());
- }
-
- ro_string<C> ro_id (id);
- this->start_element (ns, name, &ro_id);
- }
- catch (const schema_exception<C>& e)
- {
- translate_schema_exception (e);
- return;
- }
- }
- }
- }
-
- for (; *atts != 0; atts += 2)
- {
- bits::split_name (*atts, ns_p, ns_s, name_p, name_s);
-
- const ro_string<C> ns (ns_p, ns_s), name (name_p, name_s);
- const ro_string<C> value (*(atts + 1));
-
- try
- {
- this->attribute (ns, name, value);
- }
- catch (const schema_exception<C>& e)
- {
- translate_schema_exception (e);
- break;
- }
- }
- }
-
- template <typename C>
- void document<C>::
- end_element_ (const XML_Char* ns_name)
- {
- // Current Expat (2.0.0) has a (mis)-feature of a possibility of
- // calling callbacks even after the non-resumable XML_StopParser
- // call. The following code accounts for this.
- //
- {
- XML_ParsingStatus s;
- XML_GetParsingStatus (xml_parser_, &s);
- if (s.parsing == XML_FINISHED)
- return;
- }
-
- const char* ns_p;
- const char* name_p;
- size_t ns_s, name_s;
-
- bits::split_name (ns_name, ns_p, ns_s, name_p, name_s);
-
- const ro_string<C> ns (ns_p, ns_s), name (name_p, name_s);
-
- try
- {
- this->end_element (ns, name);
- }
- catch (const schema_exception<C>& e)
- {
- translate_schema_exception (e);
- }
- }
-
- template <typename C>
- void document<C>::
- characters_ (const XML_Char* s, std::size_t n)
- {
- // Current Expat (2.0.0) has a (mis)-feature of a possibility of
- // calling callbacks even after the non-resumable XML_StopParser
- // call. The following code accounts for this.
- //
- {
- XML_ParsingStatus s;
- XML_GetParsingStatus (xml_parser_, &s);
- if (s.parsing == XML_FINISHED)
- return;
- }
-
- if (n != 0)
- {
- const ro_string<C> str (s, n);
-
- try
- {
- this->characters (str);
- }
- catch (const schema_exception<C>& e)
- {
- translate_schema_exception (e);
- }
- }
- }
-
- template <typename C>
- void document<C>::
- start_namespace_decl_ (const XML_Char* p, const XML_Char* ns)
- {
- // prefix is 0 for default namespace
- // namespace is 0 when unsetting default namespace
- //
- if (polymorphic_)
- ns_decls_.push_back (ns_decl ((p ? p : ""), (ns ? ns : "")));
- }
-
- template <typename C>
- void document<C>::
- end_namespace_decl_ (const XML_Char* p)
- {
- // prefix is 0 for default namespace
- //
- if (polymorphic_)
- {
- // Here we assume the prefixes are removed in the reverse
- // order of them being added. This appears to how every
- // sensible implementation works.
- //
- assert (p
- ? ns_decls_.back ().prefix == p
- : ns_decls_.back ().prefix.empty ());
-
- ns_decls_.pop_back ();
- }
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/map.hxx b/xsd/libxsd/xsd/cxx/parser/map.hxx
deleted file mode 100644
index d097f16..0000000
--- a/xsd/libxsd/xsd/cxx/parser/map.hxx
+++ /dev/null
@@ -1,78 +0,0 @@
-// file : xsd/cxx/parser/map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_MAP_HXX
-#define XSD_CXX_PARSER_MAP_HXX
-
-#include <map>
-#include <string>
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/parser/elements.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // Parser map. Used in the polymorphic document parsing.
- //
- template <typename C>
- struct parser_map
- {
- virtual
- ~parser_map ();
-
- // The type argument is the type name and namespace from the
- // xsi:type attribute or substitution group map in the form
- // "<name> <namespace>" with the space and namespace part
- // absent if the type does not have a namespace.
- //
- virtual parser_base<C>*
- find (const ro_string<C>& type) const = 0;
- };
-
-
- // Parser map implementation.
- //
- template <typename C>
- struct parser_map_impl: parser_map<C>
- {
- parser_map_impl ();
-
- void
- insert (parser_base<C>&);
-
- virtual parser_base<C>*
- find (const ro_string<C>& type) const;
-
- private:
- parser_map_impl (const parser_map_impl&);
-
- parser_map_impl&
- operator= (const parser_map_impl&);
-
- private:
- struct string_comparison
- {
- bool
- operator() (const C* x, const C* y) const
- {
- ro_string<C> s (x);
- return s.compare (y) < 0;
- }
- };
-
- typedef std::map<const C*, parser_base<C>*, string_comparison> map;
- map map_;
- };
- }
- }
-}
-
-#include <xsd/cxx/parser/map.ixx>
-#include <xsd/cxx/parser/map.txx>
-
-#endif // XSD_CXX_PARSER_MAP_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/map.ixx b/xsd/libxsd/xsd/cxx/parser/map.ixx
deleted file mode 100644
index 96fc937..0000000
--- a/xsd/libxsd/xsd/cxx/parser/map.ixx
+++ /dev/null
@@ -1,26 +0,0 @@
-// file : xsd/cxx/parser/map.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // parser_map_impl
- //
- template <typename C>
- inline parser_map_impl<C>::parser_map_impl ()
- {
- }
-
- template <typename C>
- inline void parser_map_impl<C>::
- insert (parser_base<C>& parser)
- {
- map_[parser._dynamic_type ()] = &parser;
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/map.txx b/xsd/libxsd/xsd/cxx/parser/map.txx
deleted file mode 100644
index 3f85760..0000000
--- a/xsd/libxsd/xsd/cxx/parser/map.txx
+++ /dev/null
@@ -1,30 +0,0 @@
-// file : xsd/cxx/parser/map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // parser_map
- //
- template <typename C>
- parser_map<C>::
- ~parser_map ()
- {
- }
-
- // parser_map_impl
- //
- template <typename C>
- parser_base<C>* parser_map_impl<C>::
- find (const ro_string<C>& type) const
- {
- typename map::const_iterator i (map_.find (type.data ()));
- return i != map_.end () ? i->second : 0;
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/non-validating/parser.hxx b/xsd/libxsd/xsd/cxx/parser/non-validating/parser.hxx
deleted file mode 100644
index 4ecc4f1..0000000
--- a/xsd/libxsd/xsd/cxx/parser/non-validating/parser.hxx
+++ /dev/null
@@ -1,247 +0,0 @@
-// file : xsd/cxx/parser/non-validating/parser.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_PARSER_HXX
-#define XSD_CXX_PARSER_NON_VALIDATING_PARSER_HXX
-
-#include <stack>
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/parser/elements.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- //
- //
- template <typename C>
- struct empty_content: parser_base<C>
- {
- // The _*_any_* functions are called when wildcard content
- // is encountered. Use them to handle mixed content models,
- // any/anyAttribute, and anyType/anySimpleType. By default
- // these functions do nothing.
- //
-
- // The type argument is a type name and namespace from the
- // xsi:type attribute in the form "<name> <namespace>" with
- // the space and namespace part absent if the type does not
- // have a namespace or 0 if xsi:type is not present.
- //
- virtual void
- _start_any_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type);
-
- virtual void
- _end_any_element (const ro_string<C>& ns,
- const ro_string<C>& name);
-
- virtual void
- _any_attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _any_characters (const ro_string<C>&);
-
-
- //
- //
- virtual bool
- _start_element_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*);
-
- virtual bool
- _end_element_impl (const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _attribute_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _characters_impl (const ro_string<C>&);
-
-
- //
- //
- virtual void
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type);
-
- virtual void
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name);
-
- virtual void
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _characters (const ro_string<C>& s);
- };
-
-
- //
- //
- template <typename C>
- struct simple_content: empty_content<C>
- {
- //
- //
- virtual void
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _characters (const ro_string<C>&);
- };
-
-
- //
- //
- template <typename C>
- struct complex_content: empty_content<C>
- {
- //
- //
- virtual void
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type);
-
- virtual void
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name);
-
- virtual void
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _characters (const ro_string<C>&);
-
-
- //
- //
- virtual void
- _pre_impl ();
-
- virtual void
- _post_impl ();
-
- protected:
- struct state
- {
- state ()
- : any_ (false), depth_ (0), parser_ (0)
- {
- }
-
- bool any_;
- std::size_t depth_;
- parser_base<C>* parser_;
- };
-
- // Optimized state stack for non-recursive case (one element).
- //
- struct state_stack
- {
- state_stack ()
- : size_ (0)
- {
- }
-
- void
- push (const state& s)
- {
- if (size_ > 0)
- rest_.push (top_);
-
- top_ = s;
- ++size_;
- }
-
- void
- pop ()
- {
- if (size_ > 1)
- {
- top_ = rest_.top ();
- rest_.pop ();
- }
-
- --size_;
- }
-
- const state&
- top () const
- {
- return top_;
- }
-
- state&
- top ()
- {
- return top_;
- }
-
- state&
- under_top ()
- {
- return rest_.top ();
- }
-
- private:
- state top_;
- std::stack<state> rest_;
- std::size_t size_;
- };
-
- state_stack context_;
- };
-
-
- // Base for xsd:list.
- //
- template <typename C>
- struct list_base: simple_content<C>
- {
- virtual void
- _xsd_parse_item (const ro_string<C>&) = 0;
-
- virtual void
- _pre_impl ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post_impl ();
-
- protected:
- std::basic_string<C> buf_;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/non-validating/parser.txx>
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_PARSER_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/non-validating/parser.txx b/xsd/libxsd/xsd/cxx/parser/non-validating/parser.txx
deleted file mode 100644
index 79b6568..0000000
--- a/xsd/libxsd/xsd/cxx/parser/non-validating/parser.txx
+++ /dev/null
@@ -1,463 +0,0 @@
-// file : xsd/cxx/parser/non-validating/parser.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cassert>
-
-#include <xsd/cxx/xml/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
-
- // empty_content
- //
-
- template <typename C>
- void empty_content<C>::
- _start_any_element (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*)
- {
- }
-
- template <typename C>
- void empty_content<C>::
- _end_any_element (const ro_string<C>&,
- const ro_string<C>&)
- {
- }
-
- template <typename C>
- void empty_content<C>::
- _any_attribute (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&)
- {
- }
-
- template <typename C>
- void empty_content<C>::
- _any_characters (const ro_string<C>&)
- {
- }
-
- //
- //
- template <typename C>
- bool empty_content<C>::
- _start_element_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*)
- {
- return false;
- }
-
- template <typename C>
- bool empty_content<C>::
- _end_element_impl (const ro_string<C>&,
- const ro_string<C>&)
- {
- return false;
- }
-
- template <typename C>
- bool empty_content<C>::
- _attribute_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&)
- {
- return false;
- }
-
- template <typename C>
- bool empty_content<C>::
- _characters_impl (const ro_string<C>&)
- {
- return false;
- }
-
- template <typename C>
- void empty_content<C>::
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type)
- {
- if (!_start_element_impl (ns, name, type))
- _start_any_element (ns, name, type);
- }
-
- template <typename C>
- void empty_content<C>::
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name)
- {
- if (!_end_element_impl (ns, name))
- _end_any_element (ns, name);
- }
-
- template <typename C>
- void empty_content<C>::
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- // Weed out special attributes: xsi:type, xsi:nil,
- // xsi:schemaLocation and noNamespaceSchemaLocation.
- // See section 3.2.7 in Structures for details.
- //
- if (ns == xml::bits::xsi_namespace<C> () &&
- (name == xml::bits::type<C> () ||
- name == xml::bits::nil_lit<C> () ||
- name == xml::bits::schema_location<C> () ||
- name == xml::bits::no_namespace_schema_location<C> ()))
- return;
-
- // Also some parsers (notably Xerces-C++) supplies us with
- // namespace-prefix mapping attributes.
- //
- if (ns == xml::bits::xmlns_namespace<C> ())
- return;
-
- if (!_attribute_impl (ns, name, value))
- _any_attribute (ns, name, value);
- }
-
- template <typename C>
- void empty_content<C>::
- _characters (const ro_string<C>& s)
- {
- if (!_characters_impl (s))
- _any_characters (s);
- }
-
-
- // simple_content
- //
-
- template <typename C>
- void simple_content<C>::
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- // Weed out special attributes: xsi:type, xsi:nil,
- // xsi:schemaLocation and xsi:noNamespaceSchemaLocation.
- // See section 3.2.7 in Structures for details.
- //
- if (ns == xml::bits::xsi_namespace<C> () &&
- (name == xml::bits::type<C> () ||
- name == xml::bits::nil_lit<C> () ||
- name == xml::bits::schema_location<C> () ||
- name == xml::bits::no_namespace_schema_location<C> ()))
- return;
-
- // Also some parsers (notably Xerces-C++) supplies us with
- // namespace-prefix mapping attributes.
- //
- if (ns == xml::bits::xmlns_namespace<C> ())
- return;
-
- if (!this->_attribute_impl (ns, name, value))
- this->_any_attribute (ns, name, value);
- }
-
- template <typename C>
- void simple_content<C>::
- _characters (const ro_string<C>& str)
- {
- this->_characters_impl (str);
- }
-
-
- // complex_content
- //
-
- template <typename C>
- void complex_content<C>::
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type)
- {
- state& s (context_.top ());
-
- if (s.depth_++ > 0)
- {
- if (s.any_)
- this->_start_any_element (ns, name, type);
- else if (s.parser_)
- s.parser_->_start_element (ns, name, type);
- }
- else
- {
- if (!this->_start_element_impl (ns, name, type))
- {
- this->_start_any_element (ns, name, type);
- s.any_ = true;
- }
- else if (s.parser_ != 0)
- s.parser_->_pre_impl ();
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name)
- {
- // To understand what's going on here it is helpful to think of
- // a "total depth" as being the sum of individual depths over
- // all elements.
- //
-
- if (context_.top ().depth_ == 0)
- {
- state& s (context_.under_top ()); // One before last.
-
- if (--s.depth_ > 0)
- {
- // Indirect recursion.
- //
- if (s.parser_)
- s.parser_->_end_element (ns, name);
- }
- else
- {
- // Direct recursion.
- //
- assert (this == s.parser_);
-
- this->_post_impl ();
-
- if (!this->_end_element_impl (ns, name))
- assert (false);
- }
- }
- else
- {
- state& s (context_.top ());
-
- if (--s.depth_ > 0)
- {
- if (s.any_)
- this->_end_any_element (ns, name);
- else if (s.parser_)
- s.parser_->_end_element (ns, name);
- }
- else
- {
- if (s.parser_ != 0 && !s.any_)
- s.parser_->_post_impl ();
-
- if (!this->_end_element_impl (ns, name))
- {
- s.any_ = false;
- this->_end_any_element (ns, name);
- }
- }
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- // Weed out special attributes: xsi:type, xsi:nil,
- // xsi:schemaLocation and xsi:noNamespaceSchemaLocation.
- // See section 3.2.7 in Structures for details.
- //
- if (ns == xml::bits::xsi_namespace<C> () &&
- (name == xml::bits::type<C> () ||
- name == xml::bits::nil_lit<C> () ||
- name == xml::bits::schema_location<C> () ||
- name == xml::bits::no_namespace_schema_location<C> ()))
- return;
-
- // Also some parsers (notably Xerces-C++) supplies us with
- // namespace-prefix mapping attributes.
- //
- if (ns == xml::bits::xmlns_namespace<C> ())
- return;
-
- state& s (context_.top ());
-
- if (s.depth_ > 0)
- {
- if (s.any_)
- this->_any_attribute (ns, name, value);
- else if (s.parser_)
- s.parser_->_attribute (ns, name, value);
- }
- else
- {
- if (!this->_attribute_impl (ns, name, value))
- this->_any_attribute (ns, name, value);
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _characters (const ro_string<C>& str)
- {
- state& s (context_.top ());
-
- if (s.depth_ > 0)
- {
- if (s.any_)
- this->_any_characters (str);
- else if (s.parser_)
- s.parser_->_characters (str);
- }
- else
- {
- if (!this->_characters_impl (str))
- this->_any_characters (str);
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _pre_impl ()
- {
- context_.push (state ());
- this->_pre ();
- }
-
- template <typename C>
- void complex_content<C>::
- _post_impl ()
- {
- this->_post ();
- context_.pop ();
- }
-
- // list_base
- //
- namespace bits
- {
- // Find first non-space character.
- //
- template <typename C>
- typename ro_string<C>::size_type
- find_ns (const C* s,
- typename ro_string<C>::size_type size,
- typename ro_string<C>::size_type pos)
- {
- while (pos < size &&
- (s[pos] == C (0x20) || s[pos] == C (0x0A) ||
- s[pos] == C (0x0D) || s[pos] == C (0x09)))
- ++pos;
-
- return pos < size ? pos : ro_string<C>::npos;
- }
-
- // Find first space character.
- //
- template <typename C>
- typename ro_string<C>::size_type
- find_s (const C* s,
- typename ro_string<C>::size_type size,
- typename ro_string<C>::size_type pos)
- {
- while (pos < size &&
- s[pos] != C (0x20) && s[pos] != C (0x0A) &&
- s[pos] != C (0x0D) && s[pos] != C (0x09))
- ++pos;
-
- return pos < size ? pos : ro_string<C>::npos;
- }
- }
-
- // Relevant XML Schema Part 2: Datatypes sections: 4.2.1.2, 4.3.6.
- //
-
- template <typename C>
- void list_base<C>::
- _pre_impl ()
- {
- simple_content<C>::_pre_impl ();
- buf_.clear ();
- }
-
- template <typename C>
- void list_base<C>::
- _characters (const ro_string<C>& s)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- const C* data (s.data ());
- size_type size (s.size ());
-
- // Handle the previous chunk if we start with a ws.
- //
- if (!buf_.empty () &&
- (data[0] == C (0x20) || data[0] == C (0x0A) ||
- data[0] == C (0x0D) || data[0] == C (0x09)))
- {
- ro_string<C> tmp (buf_); // Private copy ctor.
- _xsd_parse_item (tmp);
- buf_.clear ();
- }
-
- // Traverse the data while logically collapsing spaces.
- //
- for (size_type i (bits::find_ns (data, size, 0));
- i != ro_string<C>::npos;)
- {
- size_type j (bits::find_s (data, size, i));
-
- if (j != ro_string<C>::npos)
- {
- if (buf_.empty ())
- {
- ro_string<C> tmp (data + i, j - i); // Private copy ctor.
- _xsd_parse_item (tmp);
- }
- else
- {
- // Assemble the first item in str from buf_ and s.
- //
- std::basic_string<C> str;
- str.swap (buf_);
- str.append (data + i, j - i);
- ro_string<C> tmp (str); // Private copy ctor.
- _xsd_parse_item (tmp);
- }
-
- i = bits::find_ns (data, size, j);
- }
- else
- {
- // Last fragment, append it to the buf_.
- //
- buf_.append (data + i, size - i);
- break;
- }
- }
- }
-
- template <typename C>
- void list_base<C>::
- _post_impl ()
- {
- // Handle the last item.
- //
- if (!buf_.empty ())
- {
- ro_string<C> tmp (buf_); // Private copy ctor.
- _xsd_parse_item (tmp);
- }
-
- simple_content<C>::_post_impl ();
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx b/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx
deleted file mode 100644
index fc1f838..0000000
--- a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx
+++ /dev/null
@@ -1,792 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_HXX
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_HXX
-
-#include <string>
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/parser/non-validating/xml-schema-pskel.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- // any_type
- //
- template <typename C>
- struct any_type_pimpl: virtual any_type_pskel<C>
- {
- virtual void
- post_any_type ();
- };
-
- // any_simple_type
- //
- template <typename C>
- struct any_simple_type_pimpl: virtual any_simple_type_pskel<C>
- {
- virtual void
- post_any_simple_type ();
- };
-
- // boolean
- //
- template <typename C>
- struct boolean_pimpl: virtual boolean_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual bool
- post_boolean ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // 8-bit
- //
- template <typename C>
- struct byte_pimpl: virtual byte_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual signed char
- post_byte ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct unsigned_byte_pimpl: virtual unsigned_byte_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned char
- post_unsigned_byte ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // 16-bit
- //
- template <typename C>
- struct short_pimpl: virtual short_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual short
- post_short ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct unsigned_short_pimpl: virtual unsigned_short_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned short
- post_unsigned_short ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // 32-bit
- //
- template <typename C>
- struct int_pimpl: virtual int_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual int
- post_int ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct unsigned_int_pimpl: virtual unsigned_int_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned int
- post_unsigned_int ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // 64-bit
- //
- template <typename C>
- struct long_pimpl: virtual long_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual long long
- post_long ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct unsigned_long_pimpl: virtual unsigned_long_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned long long
- post_unsigned_long ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // Arbitrary-length integers.
- //
- template <typename C>
- struct integer_pimpl: virtual integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual long long
- post_integer ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct negative_integer_pimpl: virtual negative_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual long long
- post_negative_integer ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct non_positive_integer_pimpl: virtual non_positive_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual long long
- post_non_positive_integer ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct positive_integer_pimpl: virtual positive_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned long long
- post_positive_integer ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct non_negative_integer_pimpl: virtual non_negative_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned long long
- post_non_negative_integer ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // Floats.
- //
- template <typename C>
- struct float_pimpl: virtual float_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual float
- post_float ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct double_pimpl: virtual double_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual double
- post_double ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct decimal_pimpl: virtual decimal_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual double
- post_decimal ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // Strings.
- //
- template <typename C>
- struct string_pimpl: virtual string_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_string ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct normalized_string_pimpl: virtual normalized_string_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_normalized_string ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct token_pimpl: virtual token_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_token ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct name_pimpl: virtual name_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_name ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct nmtoken_pimpl: virtual nmtoken_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_nmtoken ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct nmtokens_pimpl: virtual nmtokens_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _xsd_parse_item (const ro_string<C>&);
-
- virtual string_sequence<C>
- post_nmtokens ();
-
- protected:
- string_sequence<C> seq_;
- nmtoken_pimpl<C> parser_;
- };
-
- template <typename C>
- struct ncname_pimpl: virtual ncname_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_ncname ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct id_pimpl: virtual id_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_id ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct idref_pimpl: virtual idref_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_idref ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct idrefs_pimpl: virtual idrefs_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _xsd_parse_item (const ro_string<C>&);
-
- virtual string_sequence<C>
- post_idrefs ();
-
- protected:
- string_sequence<C> seq_;
- idref_pimpl<C> parser_;
- };
-
- // language
- //
- template <typename C>
- struct language_pimpl: virtual language_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_language ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // anyURI
- //
- template <typename C>
- struct uri_pimpl: virtual uri_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_uri ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // QName
- //
- template <typename C>
- struct qname_pimpl: virtual qname_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual qname<C>
- post_qname ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // base64Binary
- //
- template <typename C>
- struct base64_binary_pimpl: virtual base64_binary_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual XSD_AUTO_PTR<buffer>
- post_base64_binary ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // hexBinary
- //
- template <typename C>
- struct hex_binary_pimpl: virtual hex_binary_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual XSD_AUTO_PTR<buffer>
- post_hex_binary ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // gday
- //
- template <typename C>
- struct gday_pimpl: virtual gday_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual gday
- post_gday ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // gmonth
- //
- template <typename C>
- struct gmonth_pimpl: virtual gmonth_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual gmonth
- post_gmonth ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // gyear
- //
- template <typename C>
- struct gyear_pimpl: virtual gyear_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual gyear
- post_gyear ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // gmonth_day
- //
- template <typename C>
- struct gmonth_day_pimpl: virtual gmonth_day_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual gmonth_day
- post_gmonth_day ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // gyear_month
- //
- template <typename C>
- struct gyear_month_pimpl: virtual gyear_month_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual gyear_month
- post_gyear_month ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // date
- //
- template <typename C>
- struct date_pimpl: virtual date_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual date
- post_date ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // time
- //
- template <typename C>
- struct time_pimpl: virtual time_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual time
- post_time ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // date_time
- //
- template <typename C>
- struct date_time_pimpl: virtual date_time_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual date_time
- post_date_time ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // duration
- //
- template <typename C>
- struct duration_pimpl: virtual duration_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual duration
- post_duration ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- //
- //
- namespace bits
- {
- // float literals: INF -INF NaN
- //
- template<typename C>
- const C*
- positive_inf ();
-
- template<typename C>
- const C*
- negative_inf ();
-
- template<typename C>
- const C*
- nan ();
-
- // boolean literals
- //
- template<typename C>
- const C*
- true_ ();
-
- template<typename C>
- const C*
- one ();
- }
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/non-validating/xml-schema-pimpl.txx>
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_HXX
-
-#include <xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx>
diff --git a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx b/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx
deleted file mode 100644
index 3555693..0000000
--- a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx
+++ /dev/null
@@ -1,128 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR)
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_CHAR
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- namespace bits
- {
- //
- //
- template<>
- inline const char*
- positive_inf<char> ()
- {
- return "INF";
- }
-
- template<>
- inline const char*
- negative_inf<char> ()
- {
- return "-INF";
- }
-
- template<>
- inline const char*
- nan<char> ()
- {
- return "NaN";
- }
-
- //
- //
- template<>
- inline const char*
- true_<char> ()
- {
- return "true";
- }
-
- template<>
- inline const char*
- one<char> ()
- {
- return "1";
- }
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_CHAR
-#endif // XSD_CXX_PARSER_USE_CHAR
-
-
-#if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR)
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_WCHAR
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- namespace bits
- {
- //
- //
- template<>
- inline const wchar_t*
- positive_inf<wchar_t> ()
- {
- return L"INF";
- }
-
- template<>
- inline const wchar_t*
- negative_inf<wchar_t> ()
- {
- return L"-INF";
- }
-
- template<>
- inline const wchar_t*
- nan<wchar_t> ()
- {
- return L"NaN";
- }
-
- //
- //
- template<>
- inline const wchar_t*
- true_<wchar_t> ()
- {
- return L"true";
- }
-
- template<>
- inline const wchar_t*
- one<wchar_t> ()
- {
- return L"1";
- }
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_WCHAR
-#endif // XSD_CXX_PARSER_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.txx b/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.txx
deleted file mode 100644
index 28280f5..0000000
--- a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.txx
+++ /dev/null
@@ -1,2067 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pimpl.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <limits>
-#include <locale>
-
-#include <xsd/cxx/zc-istream.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- // Note that most of the types implemented here cannot have
- // whitespaces in the value. As result we don't need to waste
- // time collapsing whitespaces. All we need to do is trim the
- // string representation which can be done without copying.
- //
-
- // any_type
- //
-
- template <typename C>
- void any_type_pimpl<C>::
- post_any_type ()
- {
- }
-
- // any_simple_type
- //
-
- template <typename C>
- void any_simple_type_pimpl<C>::
- post_any_simple_type ()
- {
- }
-
- // boolean
- //
- template <typename C>
- void boolean_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void boolean_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- bool boolean_pimpl<C>::
- post_boolean ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- return str == bits::true_<C> () || str == bits::one<C> ();
- }
-
- // byte
- //
-
- template <typename C>
- void byte_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void byte_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- signed char byte_pimpl<C>::
- post_byte ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- short t;
- zc_istream<C> is (str);
- is >> t;
-
- return static_cast<signed char> (t);
- }
-
- // unsigned_byte
- //
-
- template <typename C>
- void unsigned_byte_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_byte_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned char unsigned_byte_pimpl<C>::
- post_unsigned_byte ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned short t;
- zc_istream<C> is (str);
- is >> t;
-
- return static_cast<unsigned char> (t);
- }
-
- // short
- //
-
- template <typename C>
- void short_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void short_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- short short_pimpl<C>::
- post_short ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- short t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // unsigned_short
- //
-
- template <typename C>
- void unsigned_short_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_short_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned short unsigned_short_pimpl<C>::
- post_unsigned_short ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned short t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // int
- //
-
- template <typename C>
- void int_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void int_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- int int_pimpl<C>::
- post_int ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- int t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // unsigned_int
- //
-
- template <typename C>
- void unsigned_int_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_int_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned int unsigned_int_pimpl<C>::
- post_unsigned_int ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned int t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // long
- //
- template <typename C>
- void long_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void long_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- long long long_pimpl<C>::
- post_long ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // unsigned_long
- //
- template <typename C>
- void unsigned_long_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_long_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned long long unsigned_long_pimpl<C>::
- post_unsigned_long ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // integer
- //
- template <typename C>
- void integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- long long integer_pimpl<C>::
- post_integer ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // negative_integer
- //
- template <typename C>
- void negative_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void negative_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- long long negative_integer_pimpl<C>::
- post_negative_integer ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // non_positive_integer
- //
- template <typename C>
- void non_positive_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void non_positive_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- long long non_positive_integer_pimpl<C>::
- post_non_positive_integer ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // positive_integer
- //
- template <typename C>
- void positive_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void positive_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned long long positive_integer_pimpl<C>::
- post_positive_integer ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // non_negative_integer
- //
- template <typename C>
- void non_negative_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void non_negative_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned long long non_negative_integer_pimpl<C>::
- post_non_negative_integer ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // float
- //
- template <typename C>
- void float_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void float_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- float float_pimpl<C>::
- post_float ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- if (str == bits::positive_inf<C> ())
- return std::numeric_limits<float>::infinity ();
-
- if (str == bits::negative_inf<C> ())
- return -std::numeric_limits<float>::infinity ();
-
- if (str == bits::nan<C> ())
- return std::numeric_limits<float>::quiet_NaN ();
-
- float t;
- zc_istream<C> is (str);
- is.imbue (std::locale::classic ());
- is >> t;
-
- return t;
- }
-
- // double
- //
- template <typename C>
- void double_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void double_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- double double_pimpl<C>::
- post_double ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- if (str == bits::positive_inf<C> ())
- return std::numeric_limits<double>::infinity ();
-
- if (str == bits::negative_inf<C> ())
- return -std::numeric_limits<double>::infinity ();
-
- if (str == bits::nan<C> ())
- return std::numeric_limits<double>::quiet_NaN ();
-
- double t;
- zc_istream<C> is (str);
- is.imbue (std::locale::classic ());
- is >> t;
-
- return t;
- }
-
- // decimal
- //
- template <typename C>
- void decimal_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void decimal_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- double decimal_pimpl<C>::
- post_decimal ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- double t;
- zc_istream<C> is (str);
- is.imbue (std::locale::classic ());
- is >> t;
-
- return t;
- }
-
-
- // string
- //
- template <typename C>
- void string_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void string_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> string_pimpl<C>::
- post_string ()
- {
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // normalized_string
- //
- template <typename C>
- void normalized_string_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void normalized_string_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> normalized_string_pimpl<C>::
- post_normalized_string ()
- {
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (str_.size ());
-
- for (size_type i (0); i < size; ++i)
- {
- C& c = str_[i];
-
- if (c == C (0x0A) || c == C (0x0D) || c == C (0x09))
- c = C (0x20);
- }
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // token
- //
- template <typename C>
- void token_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void token_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> token_pimpl<C>::
- post_token ()
- {
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (str_.size ());
- size_type j (0);
-
- bool subs (false);
-
- for (size_type i (0); i < size; ++i)
- {
- C c = str_[i];
-
- if (c == C (0x20) || c == C (0x0A) ||
- c == C (0x0D) || c == C (0x09))
- {
- subs = true;
- }
- else
- {
- if (subs)
- {
- subs = false;
- str_[j++] = C (0x20);
- }
-
- str_[j++] = c;
- }
- }
-
- str_.resize (j);
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // name
- //
- template <typename C>
- void name_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void name_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> name_pimpl<C>::
- post_name ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // nmtoken
- //
- template <typename C>
- void nmtoken_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void nmtoken_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> nmtoken_pimpl<C>::
- post_nmtoken ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // nmtokens
- //
- template <typename C>
- void nmtokens_pimpl<C>::
- _pre ()
- {
- nmtokens_pskel<C>::_pre ();
- seq_.clear ();
- }
-
- template <typename C>
- string_sequence<C> nmtokens_pimpl<C>::
- post_nmtokens ()
- {
- string_sequence<C> r;
- r.swap (seq_);
- return r;
- }
-
- template <typename C>
- void nmtokens_pimpl<C>::
- _xsd_parse_item (const ro_string<C>& s)
- {
- parser_.pre ();
- parser_._pre ();
- parser_._characters (s);
- parser_._post ();
- seq_.push_back (parser_.post_nmtoken ());
- }
-
- // ncname
- //
- template <typename C>
- void ncname_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void ncname_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> ncname_pimpl<C>::
- post_ncname ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // id
- //
- template <typename C>
- void id_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void id_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> id_pimpl<C>::
- post_id ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // idref
- //
- template <typename C>
- void idref_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void idref_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> idref_pimpl<C>::
- post_idref ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // idrefs
- //
- template <typename C>
- void idrefs_pimpl<C>::
- _pre ()
- {
- idrefs_pskel<C>::_pre ();
- seq_.clear ();
- }
-
- template <typename C>
- string_sequence<C> idrefs_pimpl<C>::
- post_idrefs ()
- {
- string_sequence<C> r;
- r.swap (seq_);
- return r;
- }
-
- template <typename C>
- void idrefs_pimpl<C>::
- _xsd_parse_item (const ro_string<C>& s)
- {
- parser_.pre ();
- parser_._pre ();
- parser_._characters (s);
- parser_._post ();
- seq_.push_back (parser_.post_idref ());
- }
-
- // language
- //
- template <typename C>
- void language_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void language_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> language_pimpl<C>::
- post_language ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // uri
- //
- template <typename C>
- void uri_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void uri_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> uri_pimpl<C>::
- post_uri ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // qname
- //
- template <typename C>
- void qname_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void qname_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- qname<C> qname_pimpl<C>::
- post_qname ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- size_type pos (tmp.find (C (':')));
-
- if (pos != ro_string<C>::npos)
- {
- std::basic_string<C> prefix (tmp.data (), pos++);
- std::basic_string<C> name (tmp.data () + pos, size - pos);
- return qname<C> (prefix, name);
- }
- else
- {
- str_.resize (size);
- return qname<C> (str_);
- }
- }
-
- // base64_binary
- //
- template <typename C>
- void base64_binary_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void base64_binary_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- namespace bits
- {
- template <typename C>
- inline unsigned char
- base64_decode (C c)
- {
- unsigned char r (0xFF);
-
- if (c >= C('A') && c <= C ('Z'))
- r = static_cast<unsigned char> (c - C ('A'));
- else if (c >= C('a') && c <= C ('z'))
- r = static_cast<unsigned char> (c - C ('a') + 26);
- else if (c >= C('0') && c <= C ('9'))
- r = static_cast<unsigned char> (c - C ('0') + 52);
- else if (c == C ('+'))
- r = 62;
- else if (c == C ('/'))
- r = 63;
-
- return r;
- }
- }
-
- template <typename C>
- XSD_AUTO_PTR<buffer> base64_binary_pimpl<C>::
- post_base64_binary ()
- {
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (str_.size ());
- const C* src (str_.c_str ());
-
- // Remove all whitespaces.
- //
- {
- size_type j (0);
-
- bool subs (false);
-
- for (size_type i (0); i < size; ++i)
- {
- C c = str_[i];
-
- if (c == C (0x20) || c == C (0x0A) ||
- c == C (0x0D) || c == C (0x09))
- {
- subs = true;
- }
- else
- {
- if (subs)
- subs = false;
-
- str_[j++] = c;
- }
- }
-
- size = j;
- str_.resize (size);
- }
-
- // Our length should be a multiple of four.
- //
- size_type quad_count (size / 4);
- size_type capacity (quad_count * 3 + 1);
-
- XSD_AUTO_PTR<buffer> buf (new buffer (capacity, capacity));
- char* dst (buf->data ());
-
- size_type si (0), di (0); // Source and destination indexes.
-
- // Process all quads except the last one.
- //
- unsigned char b1, b2, b3, b4;
-
- for (size_type q (0); q < quad_count - 1; ++q)
- {
- b1 = bits::base64_decode (src[si++]);
- b2 = bits::base64_decode (src[si++]);
- b3 = bits::base64_decode (src[si++]);
- b4 = bits::base64_decode (src[si++]);
-
- dst[di++] = (b1 << 2) | (b2 >> 4);
- dst[di++] = (b2 << 4) | (b3 >> 2);
- dst[di++] = (b3 << 6) | b4;
- }
-
- // Process the last quad. The first two octets are always there.
- //
- b1 = bits::base64_decode (src[si++]);
- b2 = bits::base64_decode (src[si++]);
-
- C e3 (src[si++]);
- C e4 (src[si++]);
-
- if (e4 == C ('='))
- {
- if (e3 == C ('='))
- {
- // Two pads. Last 4 bits in b2 should be zero.
- //
- dst[di++] = (b1 << 2) | (b2 >> 4);
- }
- else
- {
- // One pad. Last 2 bits in b3 should be zero.
- //
- b3 = bits::base64_decode (e3);
-
- dst[di++] = (b1 << 2) | (b2 >> 4);
- dst[di++] = (b2 << 4) | (b3 >> 2);
- }
- }
- else
- {
- // No pads.
- //
- b3 = bits::base64_decode (e3);
- b4 = bits::base64_decode (e4);
-
- dst[di++] = (b1 << 2) | (b2 >> 4);
- dst[di++] = (b2 << 4) | (b3 >> 2);
- dst[di++] = (b3 << 6) | b4;
- }
-
- // Set the real size.
- //
- buf->size (di);
-
- return buf;
- }
-
- // hex_binary
- //
- template <typename C>
- void hex_binary_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void hex_binary_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- namespace bits
- {
- template <typename C>
- inline unsigned char
- hex_decode (C c)
- {
- unsigned char r (0xFF);
-
- if (c >= C('0') && c <= C ('9'))
- r = static_cast<unsigned char> (c - C ('0'));
- else if (c >= C ('A') && c <= C ('F'))
- r = static_cast<unsigned char> (10 + (c - C ('A')));
- else if (c >= C ('a') && c <= C ('f'))
- r = static_cast<unsigned char> (10 + (c - C ('a')));
-
- return r;
- }
- }
-
- template <typename C>
- XSD_AUTO_PTR<buffer> hex_binary_pimpl<C>::
- post_hex_binary ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- buffer::size_t n (size / 2);
- XSD_AUTO_PTR<buffer> buf (new buffer (n));
-
- const C* src (tmp.data ());
- char* dst (buf->data ());
-
- for (buffer::size_t i (0); i < n; ++i)
- {
- unsigned char h (bits::hex_decode (src[2 * i]));
- unsigned char l (bits::hex_decode (src[2 * i + 1]));
- dst[i] = (h << 4) | l;
- }
-
- return buf;
- }
-
- // time_zone
- //
- namespace bits
- {
- // Datatypes 3.2.7.3.
- //
- template <typename C>
- void
- parse_tz (const C* s,
- typename std::basic_string<C>::size_type n,
- short& h, short& m)
- {
- // time_zone := Z|(+|-)HH:MM
- //
- if (n == 0)
- {
- return;
- }
- else if (s[0] == 'Z')
- {
- h = 0;
- m = 0;
- }
- else if (n == 6)
- {
- // Parse hours.
- //
- h = 10 * (s[1] - '0') + (s[2] - '0');
-
- // Parse minutes.
- //
- m = 10 * (s[4] - '0') + (s[5] - '0');
-
- if (s[0] == '-')
- {
- h = -h;
- m = -m;
- }
- }
- }
- }
-
- // gday
- //
- template <typename C>
- void gday_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gday_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- gday gday_pimpl<C>::
- post_gday ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- unsigned short day (0);
- bool z (false);
- short zh (0), zm (0);
-
- // gday := ---DD[Z|(+|-)HH:MM]
- //
- if (size >= 5)
- {
- day = 10 * (s[3] - '0') + (s[4] - '0');
-
- if (size > 5)
- {
- bits::parse_tz (s + 5, size - 5, zh, zm);
- z = true;
- }
- }
-
- return z ? gday (day, zh, zm) : gday (day);
- }
-
- // gmonth
- //
- template <typename C>
- void gmonth_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gmonth_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- gmonth gmonth_pimpl<C>::
- post_gmonth ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- unsigned short month (0);
- bool z (false);
- short zh (0), zm (0);
-
- // gmonth := --MM[Z|(+|-)HH:MM]
- //
- if (size >= 4)
- {
- month = 10 * (s[2] - '0') + (s[3] - '0');
-
- if (size > 4)
- {
- bits::parse_tz (s + 4, size - 4, zh, zm);
- z = true;
- }
- }
-
- return z ? gmonth (month, zh, zm) : gmonth (month);
- }
-
- // gyear
- //
- template <typename C>
- void gyear_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gyear_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- gyear gyear_pimpl<C>::
- post_gyear ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- int year (0);
- bool z (false);
- short zh (0), zm (0);
-
- // gyear := [-]CCYY[N]*[Z|(+|-)HH:MM]
- //
-
- if (size >= 4)
- {
- // Find the end of the year token.
- //
- size_type pos (4);
- for (; pos < size; ++pos)
- {
- C c (s[pos]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> is (year_fragment);
- is >> year;
-
- if (pos < size)
- {
- bits::parse_tz (s + pos, size - pos, zh, zm);
- z = true;
- }
- }
-
- return z ? gyear (year, zh, zm) : gyear (year);
- }
-
- // gmonth_day
- //
- template <typename C>
- void gmonth_day_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gmonth_day_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- gmonth_day gmonth_day_pimpl<C>::
- post_gmonth_day ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- unsigned short month (0), day (0);
- bool z (false);
- short zh (0), zm (0);
-
- // gmonth_day := --MM-DD[Z|(+|-)HH:MM]
- //
- if (size >= 7)
- {
- month = 10 * (s[2] - '0') + (s[3] - '0');
- day = 10 * (s[5] - '0') + (s[6] - '0');
-
- if (size > 7)
- {
- bits::parse_tz (s + 7, size - 7, zh, zm);
- z = true;
- }
- }
-
- return z
- ? gmonth_day (month, day, zh, zm)
- : gmonth_day (month, day);
- }
-
- // gyear_month
- //
- template <typename C>
- void gyear_month_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gyear_month_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- gyear_month gyear_month_pimpl<C>::
- post_gyear_month ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- int year (0);
- unsigned short month (0);
- bool z (false);
- short zh (0), zm (0);
-
- // gyear_month := [-]CCYY[N]*-MM[Z|(+|-)HH:MM]
- //
-
- if (size >= 7)
- {
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), 4));
-
- if (pos != ro_string<C>::npos && (size - pos - 1) >= 2)
- {
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> yis (year_fragment);
- yis >> year;
-
- month = 10 * (s[pos + 1] - '0') + (s[pos + 2] - '0');
-
- pos += 3;
-
- if (pos < size)
- {
- bits::parse_tz (s + pos, size - pos, zh, zm);
- z = true;
- }
- }
- }
-
- return z
- ? gyear_month (year, month, zh, zm)
- : gyear_month (year, month);
- }
-
- // date
- //
- template <typename C>
- void date_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void date_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- date date_pimpl<C>::
- post_date ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- int year (0);
- unsigned short month (0), day (0);
- bool z (false);
- short zh (0), zm (0);
-
- // date := [-]CCYY[N]*-MM-DD[Z|(+|-)HH:MM]
- //
-
- if (size >= 10)
- {
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), 4));
-
- if (pos != ro_string<C>::npos && (size - pos - 1) >= 5)
- {
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> yis (year_fragment);
- yis >> year;
-
- month = 10 * (s[pos + 1] - '0') + (s[pos + 2] - '0');
- day = 10 * (s[pos + 4] - '0') + (s[pos + 5] - '0');
-
- pos += 6;
-
- if (pos < size)
- {
- bits::parse_tz (s + pos, size - pos, zh, zm);
- z = true;
- }
- }
- }
-
- return z
- ? date (year, month, day, zh, zm)
- : date (year, month, day);
- }
-
- // time
- //
- template <typename C>
- void time_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void time_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- time time_pimpl<C>::
- post_time ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- unsigned short hours (0), minutes (0);
- double seconds (0.0);
- bool z (false);
- short zh (0), zm (0);
-
- // time := HH:MM:SS[.S+][Z|(+|-)HH:MM]
- //
-
- if (size >= 8)
- {
- hours = 10 * (s[0] - '0') + (s[1] - '0');
- minutes = 10 * (s[3] - '0') + (s[4] - '0');
-
- // Find the end of the seconds fragment.
- //
- size_type pos (8);
- for (; pos < size; ++pos)
- {
- C c (s[pos]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- ro_string<C> seconds_fragment (s + 6, pos - 6);
- zc_istream<C> sis (seconds_fragment);
- sis >> seconds;
-
- if (pos < size)
- {
- bits::parse_tz (s + pos, size - pos, zh, zm);
- z = true;
- }
- }
-
- return z
- ? time (hours, minutes, seconds, zh, zm)
- : time (hours, minutes, seconds);
- }
-
-
- // date_time
- //
- template <typename C>
- void date_time_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void date_time_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- date_time date_time_pimpl<C>::
- post_date_time ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- int year (0);
- unsigned short month (0), day (0), hours (0), minutes (0);
- double seconds (0.0);
- bool z (false);
- short zh (0), zm (0);
-
- // date_time := [-]CCYY[N]*-MM-DDTHH:MM:SS[.S+][Z|(+|-)HH:MM]
- //
-
- if (size >= 19)
- {
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), 4));
-
- if (pos != ro_string<C>::npos && (size - pos - 1) >= 14)
- {
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> yis (year_fragment);
- yis >> year;
-
- month = 10 * (s[pos + 1] - '0') + (s[pos + 2] - '0');
- day = 10 * (s[pos + 4] - '0') + (s[pos + 5] - '0');
-
- pos += 7; // Point to the first H.
-
- hours = 10 * (s[pos] - '0') + (s[pos + 1] - '0');
- minutes = 10 * (s[pos + 3] - '0') + (s[pos + 4] - '0');
-
- // Find the end of the seconds fragment.
- //
- pos += 6; // Point to the first S.
-
- size_type sec_end (pos + 2);
- for (; sec_end < size; ++sec_end)
- {
- C c (s[sec_end]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- ro_string<C> seconds_fragment (s + pos, sec_end - pos);
- zc_istream<C> sis (seconds_fragment);
- sis >> seconds;
-
- if (sec_end < size)
- {
- bits::parse_tz (s + sec_end, size - sec_end, zh, zm);
- z = true;
- }
- }
- }
-
- return z
- ? date_time (year, month, day, hours, minutes, seconds, zh, zm)
- : date_time (year, month, day, hours, minutes, seconds);
- }
-
- // duration
- //
- template <typename C>
- void duration_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void duration_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- namespace bits
- {
- template <typename C>
- inline typename ro_string<C>::size_type
- duration_delim (const C* s,
- typename ro_string<C>::size_type pos,
- typename ro_string<C>::size_type size)
- {
- const C* p (s + pos);
- for (; p < (s + size); ++p)
- {
- if (*p == C ('Y') || *p == C ('D') || *p == C ('M') ||
- *p == C ('H') || *p == C ('M') || *p == C ('S') ||
- *p == C ('T'))
- break;
- }
-
- return p - s;
- }
- }
-
- template <typename C>
- duration duration_pimpl<C>::
- post_duration ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- bool negative (false);
- unsigned int years (0), months (0), days (0), hours (0), minutes (0);
- double seconds (0.0);
-
- // duration := [-]P[nY][nM][nD][TnHnMn[.n+]S]
- //
- const C* s (tmp.data ());
-
- if (size >= 3)
- {
- size_type pos (0);
-
- if (s[0] == C ('-'))
- {
- negative = true;
- pos++;
- }
-
- pos++; // Skip 'P'.
-
- size_type del (bits::duration_delim (s, pos, size));
-
- if (del != size && s[del] == C ('Y'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> years;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('M'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> months;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('D'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> days;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('T'))
- {
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
-
- if (del != size && s[del] == C ('H'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> hours;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('M'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> minutes;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('S'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> seconds;
- }
- }
- }
-
- return duration (
- negative, years, months, days, hours, minutes, seconds);
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.hxx b/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.hxx
deleted file mode 100644
index 334be01..0000000
--- a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.hxx
+++ /dev/null
@@ -1,648 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pskel.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_HXX
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_HXX
-
-#include <string>
-#include <memory> // std::auto_ptr/unique_ptr
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/parser/xml-schema.hxx>
-#include <xsd/cxx/parser/non-validating/parser.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- // anyType and anySimpleType. All events are routed to the
- // _any_* callbacks.
- //
- template <typename C>
- struct any_type_pskel: complex_content<C>
- {
- virtual bool
- _start_element_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*);
-
- virtual bool
- _end_element_impl (const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _attribute_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _characters_impl (const ro_string<C>&);
-
- virtual void
- post_any_type () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct any_simple_type_pskel: simple_content<C>
- {
- virtual bool
- _characters_impl (const ro_string<C>&);
-
- virtual void
- post_any_simple_type () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Boolean.
- //
- template <typename C>
- struct boolean_pskel: simple_content<C>
- {
- virtual bool
- post_boolean () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 8-bit
- //
- template <typename C>
- struct byte_pskel: simple_content<C>
- {
- virtual signed char
- post_byte () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_byte_pskel: simple_content<C>
- {
- virtual unsigned char
- post_unsigned_byte () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 16-bit
- //
- template <typename C>
- struct short_pskel: simple_content<C>
- {
- virtual short
- post_short () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_short_pskel: simple_content<C>
- {
- virtual unsigned short
- post_unsigned_short () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 32-bit
- //
- template <typename C>
- struct int_pskel: simple_content<C>
- {
- virtual int
- post_int () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_int_pskel: simple_content<C>
- {
- virtual unsigned int
- post_unsigned_int () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 64-bit
- //
- template <typename C>
- struct long_pskel: simple_content<C>
- {
- virtual long long
- post_long () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_long_pskel: simple_content<C>
- {
- virtual unsigned long long
- post_unsigned_long () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Arbitrary-length integers.
- //
- template <typename C>
- struct integer_pskel: simple_content<C>
- {
- virtual long long
- post_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct negative_integer_pskel: simple_content<C>
- {
- virtual long long
- post_negative_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct non_positive_integer_pskel: simple_content<C>
- {
- virtual long long
- post_non_positive_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct positive_integer_pskel: simple_content<C>
- {
- virtual unsigned long long
- post_positive_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct non_negative_integer_pskel: simple_content<C>
- {
- virtual unsigned long long
- post_non_negative_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Floats.
- //
- template <typename C>
- struct float_pskel: simple_content<C>
- {
- virtual float
- post_float () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct double_pskel: simple_content<C>
- {
- virtual double
- post_double () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct decimal_pskel: simple_content<C>
- {
- virtual double
- post_decimal () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Strings.
- //
- template <typename C>
- struct string_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_string () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct normalized_string_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_normalized_string () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct token_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_token () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct name_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_name () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct nmtoken_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_nmtoken () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct nmtokens_pskel: list_base<C>
- {
- virtual string_sequence<C>
- post_nmtokens () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct ncname_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_ncname () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct id_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_id () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct idref_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_idref () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct idrefs_pskel: list_base<C>
- {
- virtual string_sequence<C>
- post_idrefs () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // Language.
- //
- template <typename C>
- struct language_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_language () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // URI.
- //
- template <typename C>
- struct uri_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_uri () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // QName.
- //
- template <typename C>
- struct qname_pskel: simple_content<C>
- {
- virtual qname<C>
- post_qname () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // Base64 and hex binaries.
- //
- template <typename C>
- struct base64_binary_pskel: simple_content<C>
- {
- virtual XSD_AUTO_PTR<buffer>
- post_base64_binary () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct hex_binary_pskel: simple_content<C>
- {
- virtual XSD_AUTO_PTR<buffer>
- post_hex_binary () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // Time and date types.
- //
- template <typename C>
- struct gday_pskel: simple_content<C>
- {
- virtual gday
- post_gday () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gmonth_pskel: simple_content<C>
- {
- virtual gmonth
- post_gmonth () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gyear_pskel: simple_content<C>
- {
- virtual gyear
- post_gyear () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gmonth_day_pskel: simple_content<C>
- {
- virtual gmonth_day
- post_gmonth_day () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gyear_month_pskel: simple_content<C>
- {
- virtual gyear_month
- post_gyear_month () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct date_pskel: simple_content<C>
- {
- virtual date
- post_date () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct time_pskel: simple_content<C>
- {
- virtual time
- post_time () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct date_time_pskel: simple_content<C>
- {
- virtual date_time
- post_date_time () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct duration_pskel: simple_content<C>
- {
- virtual duration
- post_duration () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/non-validating/xml-schema-pskel.txx>
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_HXX
-
-#include <xsd/cxx/parser/non-validating/xml-schema-pskel.ixx>
diff --git a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.ixx b/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.ixx
deleted file mode 100644
index 44cc6e4..0000000
--- a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.ixx
+++ /dev/null
@@ -1,1248 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pskel.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR)
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_CHAR
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- template<>
- inline const char* any_type_pskel<char>::
- _static_type ()
- {
- return "anyType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* any_type_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* any_simple_type_pskel<char>::
- _static_type ()
- {
- return "anySimpleType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* any_simple_type_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* boolean_pskel<char>::
- _static_type ()
- {
- return "boolean http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* boolean_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* byte_pskel<char>::
- _static_type ()
- {
- return "byte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* byte_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_byte_pskel<char>::
- _static_type ()
- {
- return "unsignedByte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_byte_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* short_pskel<char>::
- _static_type ()
- {
- return "short http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* short_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_short_pskel<char>::
- _static_type ()
- {
- return "unsignedShort http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_short_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* int_pskel<char>::
- _static_type ()
- {
- return "int http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* int_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_int_pskel<char>::
- _static_type ()
- {
- return "unsignedInt http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_int_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* long_pskel<char>::
- _static_type ()
- {
- return "long http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* long_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_long_pskel<char>::
- _static_type ()
- {
- return "unsignedLong http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_long_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* integer_pskel<char>::
- _static_type ()
- {
- return "integer http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* negative_integer_pskel<char>::
- _static_type ()
- {
- return "negativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* negative_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* non_positive_integer_pskel<char>::
- _static_type ()
- {
- return "nonPositiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* non_positive_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* positive_integer_pskel<char>::
- _static_type ()
- {
- return "positiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* positive_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* non_negative_integer_pskel<char>::
- _static_type ()
- {
- return "nonNegativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* non_negative_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* float_pskel<char>::
- _static_type ()
- {
- return "float http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* float_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* double_pskel<char>::
- _static_type ()
- {
- return "double http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* double_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* decimal_pskel<char>::
- _static_type ()
- {
- return "decimal http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* decimal_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* string_pskel<char>::
- _static_type ()
- {
- return "string http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* string_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* normalized_string_pskel<char>::
- _static_type ()
- {
- return "normalizedString http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* normalized_string_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* token_pskel<char>::
- _static_type ()
- {
- return "token http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* token_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* name_pskel<char>::
- _static_type ()
- {
- return "Name http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* name_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* nmtoken_pskel<char>::
- _static_type ()
- {
- return "NMTOKEN http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* nmtoken_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* nmtokens_pskel<char>::
- _static_type ()
- {
- return "NMTOKENS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* nmtokens_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* ncname_pskel<char>::
- _static_type ()
- {
- return "NCName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* ncname_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* id_pskel<char>::
- _static_type ()
- {
- return "ID http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* id_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* idref_pskel<char>::
- _static_type ()
- {
- return "IDREF http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* idref_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* idrefs_pskel<char>::
- _static_type ()
- {
- return "IDREFS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* idrefs_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* language_pskel<char>::
- _static_type ()
- {
- return "language http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* language_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* uri_pskel<char>::
- _static_type ()
- {
- return "anyURI http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* uri_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* qname_pskel<char>::
- _static_type ()
- {
- return "QName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* qname_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* base64_binary_pskel<char>::
- _static_type ()
- {
- return "base64Binary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* base64_binary_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* hex_binary_pskel<char>::
- _static_type ()
- {
- return "hexBinary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* hex_binary_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gday_pskel<char>::
- _static_type ()
- {
- return "gDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gday_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gmonth_pskel<char>::
- _static_type ()
- {
- return "gMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gmonth_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gyear_pskel<char>::
- _static_type ()
- {
- return "gYear http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gyear_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gmonth_day_pskel<char>::
- _static_type ()
- {
- return "gMonthDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gmonth_day_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gyear_month_pskel<char>::
- _static_type ()
- {
- return "gYearMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gyear_month_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* date_pskel<char>::
- _static_type ()
- {
- return "date http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* date_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* time_pskel<char>::
- _static_type ()
- {
- return "time http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* time_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* date_time_pskel<char>::
- _static_type ()
- {
- return "dateTime http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* date_time_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* duration_pskel<char>::
- _static_type ()
- {
- return "duration http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* duration_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_CHAR
-#endif // XSD_CXX_PARSER_USE_CHAR
-
-
-#if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR)
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_WCHAR
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- template<>
- inline const wchar_t* any_type_pskel<wchar_t>::
- _static_type ()
- {
- return L"anyType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* any_type_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* any_simple_type_pskel<wchar_t>::
- _static_type ()
- {
- return L"anySimpleType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* any_simple_type_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* boolean_pskel<wchar_t>::
- _static_type ()
- {
- return L"boolean http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* boolean_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* byte_pskel<wchar_t>::
- _static_type ()
- {
- return L"byte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* byte_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_byte_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedByte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_byte_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* short_pskel<wchar_t>::
- _static_type ()
- {
- return L"short http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* short_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_short_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedShort http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_short_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* int_pskel<wchar_t>::
- _static_type ()
- {
- return L"int http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* int_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_int_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedInt http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_int_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* long_pskel<wchar_t>::
- _static_type ()
- {
- return L"long http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* long_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_long_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedLong http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_long_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"integer http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* negative_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"negativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* negative_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* non_positive_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"nonPositiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* non_positive_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* positive_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"positiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* positive_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* non_negative_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"nonNegativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* non_negative_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* float_pskel<wchar_t>::
- _static_type ()
- {
- return L"float http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* float_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* double_pskel<wchar_t>::
- _static_type ()
- {
- return L"double http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* double_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* decimal_pskel<wchar_t>::
- _static_type ()
- {
- return L"decimal http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* decimal_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* string_pskel<wchar_t>::
- _static_type ()
- {
- return L"string http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* string_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* normalized_string_pskel<wchar_t>::
- _static_type ()
- {
- return L"normalizedString http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* normalized_string_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* token_pskel<wchar_t>::
- _static_type ()
- {
- return L"token http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* token_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* name_pskel<wchar_t>::
- _static_type ()
- {
- return L"Name http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* name_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* nmtoken_pskel<wchar_t>::
- _static_type ()
- {
- return L"NMTOKEN http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* nmtoken_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* nmtokens_pskel<wchar_t>::
- _static_type ()
- {
- return L"NMTOKENS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* nmtokens_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* ncname_pskel<wchar_t>::
- _static_type ()
- {
- return L"NCName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* ncname_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* id_pskel<wchar_t>::
- _static_type ()
- {
- return L"ID http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* id_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* idref_pskel<wchar_t>::
- _static_type ()
- {
- return L"IDREF http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* idref_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* idrefs_pskel<wchar_t>::
- _static_type ()
- {
- return L"IDREFS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* idrefs_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* language_pskel<wchar_t>::
- _static_type ()
- {
- return L"language http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* language_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* uri_pskel<wchar_t>::
- _static_type ()
- {
- return L"anyURI http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* uri_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* qname_pskel<wchar_t>::
- _static_type ()
- {
- return L"QName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* qname_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* base64_binary_pskel<wchar_t>::
- _static_type ()
- {
- return L"base64Binary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* base64_binary_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* hex_binary_pskel<wchar_t>::
- _static_type ()
- {
- return L"hexBinary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* hex_binary_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gday_pskel<wchar_t>::
- _static_type ()
- {
- return L"gDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gday_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gmonth_pskel<wchar_t>::
- _static_type ()
- {
- return L"gMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gmonth_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gyear_pskel<wchar_t>::
- _static_type ()
- {
- return L"gYear http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gyear_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gmonth_day_pskel<wchar_t>::
- _static_type ()
- {
- return L"gMonthDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gmonth_day_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gyear_month_pskel<wchar_t>::
- _static_type ()
- {
- return L"gYearMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gyear_month_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* date_pskel<wchar_t>::
- _static_type ()
- {
- return L"date http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* date_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* time_pskel<wchar_t>::
- _static_type ()
- {
- return L"time http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* time_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* date_time_pskel<wchar_t>::
- _static_type ()
- {
- return L"dateTime http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* date_time_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* duration_pskel<wchar_t>::
- _static_type ()
- {
- return L"duration http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* duration_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_WCHAR
-#endif // XSD_CXX_PARSER_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx b/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx
deleted file mode 100644
index e2fd1b3..0000000
--- a/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx
+++ /dev/null
@@ -1,68 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pskel.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- // any_type
- //
-
- template <typename C>
- bool any_type_pskel<C>::
- _start_element_impl (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type)
- {
- this->_start_any_element (ns, name, type);
- this->complex_content<C>::context_.top ().any_ = true;
- return true;
- }
-
- template <typename C>
- bool any_type_pskel<C>::
- _end_element_impl (const ro_string<C>& ns, const ro_string<C>& name)
- {
- this->complex_content<C>::context_.top ().any_ = false;
- this->_end_any_element (ns, name);
- return true;
- }
-
-
- template <typename C>
- bool any_type_pskel<C>::
- _attribute_impl (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- this->_any_attribute (ns, name, value);
- return true;
- }
-
- template <typename C>
- bool any_type_pskel<C>::
- _characters_impl (const ro_string<C>& s)
- {
- this->_any_characters (s);
- return true;
- }
-
- // any_simple_type
- //
-
- template <typename C>
- bool any_simple_type_pskel<C>::
- _characters_impl (const ro_string<C>& s)
- {
- this->_any_characters (s);
- return true;
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/schema-exceptions.hxx b/xsd/libxsd/xsd/cxx/parser/schema-exceptions.hxx
deleted file mode 100644
index 8fd2def..0000000
--- a/xsd/libxsd/xsd/cxx/parser/schema-exceptions.hxx
+++ /dev/null
@@ -1,186 +0,0 @@
-// file : xsd/cxx/parser/schema-exceptions.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_SCHEMA_EXCEPTIONS_HXX
-#define XSD_CXX_PARSER_SCHEMA_EXCEPTIONS_HXX
-
-#include <string>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- template <typename C>
- struct schema_exception
- {
- public:
- virtual
- ~schema_exception ()
- {
- }
-
- unsigned long
- line () const
- {
- return line_;
- }
-
- void
- line (unsigned long l)
- {
- line_ = l;
- }
-
- unsigned long
- column () const
- {
- return column_;
- }
-
- void
- column (unsigned long c)
- {
- column_ = c;
- }
-
- const std::basic_string<C>&
- id () const
- {
- return id_;
- }
-
- void
- id (const std::basic_string<C>& id)
- {
- id_ = id;
- }
-
- virtual std::basic_string<C>
- message () const = 0;
-
- protected:
- unsigned long line_;
- unsigned long column_;
- std::basic_string<C> id_;
- };
-
- //
- //
- template <typename C>
- struct expected_element: schema_exception<C>
- {
- virtual
- ~expected_element ();
-
- expected_element (const std::basic_string<C>& expected_namespace,
- const std::basic_string<C>& expected_name);
-
- expected_element (const std::basic_string<C>& expected_namespace,
- const std::basic_string<C>& expected_name,
- const std::basic_string<C>& encountered_namespace,
- const std::basic_string<C>& encountered_name);
-
- const std::basic_string<C>&
- expected_namespace () const
- {
- return expected_namespace_;
- }
-
- const std::basic_string<C>&
- expected_name () const
- {
- return expected_name_;
- }
-
- // Encountered element namespace and name are empty if none
- // encountered.
- //
- const std::basic_string<C>&
- encountered_namespace () const
- {
- return encountered_namespace_;
- }
-
- const std::basic_string<C>&
- encountered_name () const
- {
- return encountered_name_;
- }
-
- virtual std::basic_string<C>
- message () const;
-
- private:
- std::basic_string<C> expected_namespace_;
- std::basic_string<C> expected_name_;
-
- std::basic_string<C> encountered_namespace_;
- std::basic_string<C> encountered_name_;
- };
-
-
- //
- //
- template <typename C>
- struct unexpected_element: schema_exception<C>
- {
- virtual
- ~unexpected_element ();
-
- unexpected_element (const std::basic_string<C>& encountered_namespace,
- const std::basic_string<C>& encountered_name);
-
- const std::basic_string<C>&
- encountered_namespace () const
- {
- return encountered_namespace_;
- }
-
- const std::basic_string<C>&
- encountered_name () const
- {
- return encountered_name_;
- }
-
- virtual std::basic_string<C>
- message () const;
-
- private:
- std::basic_string<C> encountered_namespace_;
- std::basic_string<C> encountered_name_;
- };
-
- //
- //
- template <typename C>
- struct dynamic_type: schema_exception<C>
- {
- virtual
- ~dynamic_type () throw ();
-
- dynamic_type (const std::basic_string<C>& type);
-
- const std::basic_string<C>&
- type () const
- {
- return type_;
- }
-
- virtual std::basic_string<C>
- message () const;
-
- private:
- std::basic_string<C> type_;
- };
- }
- }
-}
-
-#include <xsd/cxx/parser/schema-exceptions.txx>
-
-#endif // XSD_CXX_PARSER_SCHEMA_EXCEPTIONS_HXX
-
-#include <xsd/cxx/parser/schema-exceptions.ixx>
diff --git a/xsd/libxsd/xsd/cxx/parser/schema-exceptions.ixx b/xsd/libxsd/xsd/cxx/parser/schema-exceptions.ixx
deleted file mode 100644
index 71be381..0000000
--- a/xsd/libxsd/xsd/cxx/parser/schema-exceptions.ixx
+++ /dev/null
@@ -1,144 +0,0 @@
-// file : xsd/cxx/parser/schema-exceptions.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR)
-
-#ifndef XSD_CXX_PARSER_SCHEMA_EXCEPTIONS_IXX_CHAR
-#define XSD_CXX_PARSER_SCHEMA_EXCEPTIONS_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // expected_element
- //
- template<>
- inline
- std::basic_string<char> expected_element<char>::
- message () const
- {
- std::basic_string<char> r ("expected element '");
- r += expected_namespace_;
- r += expected_namespace_.empty () ? "" : "#";
- r += expected_name_;
- r += "'";
-
- if (!encountered_name_.empty ())
- {
- r += " instead of '";
- r += encountered_namespace_;
- r += encountered_namespace_.empty () ? "" : "#";
- r += encountered_name_;
- r += "'";
- }
-
- return r;
- }
-
- // unexpected_element
- //
- template<>
- inline
- std::basic_string<char> unexpected_element<char>::
- message () const
- {
- std::basic_string<char> r ("unexpected element '");
- r += encountered_namespace_;
- r += encountered_namespace_.empty () ? "" : "#";
- r += encountered_name_;
- r += "'";
- return r;
- }
-
- // dynamic_type
- //
- template<>
- inline
- std::basic_string<char> dynamic_type<char>::
- message () const
- {
- std::basic_string<char> r ("invalid xsi:type '");
- r += type_;
- r += "'";
- return r;
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_SCHEMA_EXCEPTIONS_IXX_CHAR
-#endif // XSD_CXX_PARSER_USE_CHAR
-
-
-#if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR)
-
-#ifndef XSD_CXX_PARSER_SCHEMA_EXCEPTIONS_IXX_WCHAR
-#define XSD_CXX_PARSER_SCHEMA_EXCEPTIONS_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // expected_element
- //
- template<>
- inline
- std::basic_string<wchar_t> expected_element<wchar_t>::
- message () const
- {
- std::basic_string<wchar_t> r (L"expected element '");
- r += expected_namespace_;
- r += expected_namespace_.empty () ? L"" : L"#";
- r += expected_name_;
- r += L"'";
-
- if (!encountered_name_.empty ())
- {
- r += L" instead of '";
- r += encountered_namespace_;
- r += encountered_namespace_.empty () ? L"" : L"#";
- r += encountered_name_;
- r += L"'";
- }
-
- return r;
- }
-
- // unexpected_element
- //
- template<>
- inline
- std::basic_string<wchar_t> unexpected_element<wchar_t>::
- message () const
- {
- std::basic_string<wchar_t> r (L"unexpected element '");
- r += encountered_namespace_;
- r += encountered_namespace_.empty () ? L"" : L"#";
- r += encountered_name_;
- r += L"'";
- return r;
- }
-
- // dynamic_type
- //
- template<>
- inline
- std::basic_string<wchar_t> dynamic_type<wchar_t>::
- message () const
- {
- std::basic_string<wchar_t> r (L"invalid xsi:type '");
- r += type_;
- r += L"'";
- return r;
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_SCHEMA_EXCEPTIONS_IXX_WCHAR
-#endif // XSD_CXX_PARSER_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/parser/schema-exceptions.txx b/xsd/libxsd/xsd/cxx/parser/schema-exceptions.txx
deleted file mode 100644
index 77c569a..0000000
--- a/xsd/libxsd/xsd/cxx/parser/schema-exceptions.txx
+++ /dev/null
@@ -1,74 +0,0 @@
-// file : xsd/cxx/parser/schema-exceptions.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // expected_element
- //
- template <typename C>
- expected_element<C>::
- ~expected_element ()
- {
- }
-
- template <typename C>
- expected_element<C>::
- expected_element (const std::basic_string<C>& expected_namespace,
- const std::basic_string<C>& expected_name)
- : expected_namespace_ (expected_namespace),
- expected_name_ (expected_name)
- {
- }
-
- template <typename C>
- expected_element<C>::
- expected_element (const std::basic_string<C>& expected_namespace,
- const std::basic_string<C>& expected_name,
- const std::basic_string<C>& encountered_namespace,
- const std::basic_string<C>& encountered_name)
- : expected_namespace_ (expected_namespace),
- expected_name_ (expected_name),
- encountered_namespace_ (encountered_namespace),
- encountered_name_ (encountered_name)
- {
- }
-
- // unexpected_element
- //
- template <typename C>
- unexpected_element<C>::
- ~unexpected_element ()
- {
- }
-
- template <typename C>
- unexpected_element<C>::
- unexpected_element (const std::basic_string<C>& encountered_namespace,
- const std::basic_string<C>& encountered_name)
- : encountered_namespace_ (encountered_namespace),
- encountered_name_ (encountered_name)
- {
- }
-
- // dynamic_type
- //
- template <typename C>
- dynamic_type<C>::
- ~dynamic_type () throw ()
- {
- }
-
- template <typename C>
- dynamic_type<C>::
- dynamic_type (const std::basic_string<C>& type)
- : type_ (type)
- {
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/substitution-map.hxx b/xsd/libxsd/xsd/cxx/parser/substitution-map.hxx
deleted file mode 100644
index d191e28..0000000
--- a/xsd/libxsd/xsd/cxx/parser/substitution-map.hxx
+++ /dev/null
@@ -1,240 +0,0 @@
-// file : xsd/cxx/parser/substitution-map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_SUBSTITUTION_MAP_HXX
-#define XSD_CXX_PARSER_SUBSTITUTION_MAP_HXX
-
-#include <map>
-#include <cstddef> // std::size_t
-
-#include <xsd/cxx/ro-string.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- template <typename C>
- struct substitution_map_key
- {
- substitution_map_key (const C* ns, const C* name)
- : ns_ (ns), name_ (name)
- {
- }
-
- substitution_map_key (const ro_string<C>& ns,
- const ro_string<C>& name)
- : ns_ (ns.data (), ns.size ()),
- name_ (name.data (), name.size ())
- {
- }
-
- substitution_map_key (const substitution_map_key& x)
- : ns_ (x.ns_.data (), x.ns_.size ()),
- name_ (x.name_.data (), x.name_.size ())
- {
- }
-
- private:
- substitution_map_key&
- operator= (const substitution_map_key&);
-
- public:
- const ro_string<C>&
- ns () const
- {
- return ns_;
- }
-
- const ro_string<C>&
- name () const
- {
- return name_;
- }
-
- private:
- const ro_string<C> ns_;
- const ro_string<C> name_;
- };
-
- template <typename C>
- inline bool
- operator< (const substitution_map_key<C>& x,
- const substitution_map_key<C>& y)
- {
- int r (x.name ().compare (y.name ()));
- return r < 0 || (r == 0 && x.ns () < y.ns ());
- }
-
- template <typename C>
- struct substitution_map_value
- {
- substitution_map_value (const C* ns, const C* name, const C* type)
- : ns_ (ns), name_ (name), type_ (type)
- {
- }
-
- substitution_map_value (const substitution_map_value& x)
- : ns_ (x.ns_.data (), x.ns_.size ()),
- name_ (x.name_.data (), x.name_.size ()),
- type_ (x.type_.data (), x.type_.size ())
- {
- }
-
- substitution_map_value&
- operator= (const substitution_map_value& x)
- {
- if (this != &x)
- {
- ns_.assign (x.ns_.data (), x.ns_.size ());
- name_.assign (x.name_.data (), x.name_.size ());
- type_.assign (x.type_.data (), x.type_.size ());
- }
-
- return *this;
- }
-
- public:
- const ro_string<C>&
- ns () const
- {
- return ns_;
- }
-
- const ro_string<C>&
- name () const
- {
- return name_;
- }
-
- const ro_string<C>&
- type () const
- {
- return type_;
- }
-
- private:
- ro_string<C> ns_;
- ro_string<C> name_;
- ro_string<C> type_;
- };
-
- template <typename C>
- struct substitution_map
- {
- void
- insert (const C* member_ns,
- const C* member_name,
- const C* root_ns,
- const C* root_name,
- const C* member_type)
- {
- key k (member_ns, member_name);
- value v (root_ns, root_name, member_type);
- map_.insert (std::pair<key, value> (k, v));
- }
-
- void
- erase (const C* member_ns, const C* member_name)
- {
- map_.erase (key (member_ns, member_name));
- }
-
- // Check and get the type set if found.
- //
- bool
- check (const ro_string<C>& ns,
- const ro_string<C>& name,
- const C* root_ns,
- const C* root_name,
- const ro_string<C>*& type) const
- {
-
- return map_.empty ()
- ? false
- : check_ (ns, name, root_ns, root_name, &type);
- }
-
- // Check but don't care about the type.
- //
- bool
- check (const ro_string<C>& ns,
- const ro_string<C>& name,
- const C* root_ns,
- const C* root_name) const
- {
-
- return map_.empty ()
- ? false
- : check_ (ns, name, root_ns, root_name, 0);
- }
-
- private:
- bool
- check_ (const ro_string<C>& ns,
- const ro_string<C>& name,
- const C* root_ns,
- const C* root_name,
- const ro_string<C>** type) const;
-
- private:
- typedef substitution_map_key<C> key;
- typedef substitution_map_value<C> value;
- typedef std::map<key, value> map;
-
- map map_;
- };
-
-
- // Translation unit initializer.
- //
- template<typename C>
- struct substitution_map_init
- {
- static substitution_map<C>* map;
- static std::size_t count;
-
- substitution_map_init ();
- ~substitution_map_init ();
- };
-
- template<typename C>
- substitution_map<C>* substitution_map_init<C>::map = 0;
-
- template<typename C>
- std::size_t substitution_map_init<C>::count = 0;
-
- template<typename C>
- inline substitution_map<C>&
- substitution_map_instance ()
- {
- return *substitution_map_init<C>::map;
- }
-
-
- // Map entry initializer.
- //
- template<typename C>
- struct substitution_map_entry
- {
- substitution_map_entry (const C* member_ns,
- const C* member_name,
- const C* root_ns,
- const C* root_name,
- const C* member_type);
-
- ~substitution_map_entry ();
-
- private:
- const C* member_ns_;
- const C* member_name_;
- };
- }
- }
-}
-
-#include <xsd/cxx/parser/substitution-map.txx>
-
-#endif // XSD_CXX_PARSER_SUBSTITUTION_MAP_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/substitution-map.txx b/xsd/libxsd/xsd/cxx/parser/substitution-map.txx
deleted file mode 100644
index 45216cd..0000000
--- a/xsd/libxsd/xsd/cxx/parser/substitution-map.txx
+++ /dev/null
@@ -1,83 +0,0 @@
-// file : xsd/cxx/parser/substitution-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- template <typename C>
- bool substitution_map<C>::
- check_ (const ro_string<C>& ns,
- const ro_string<C>& name,
- const C* root_ns,
- const C* root_name,
- const ro_string<C>** type) const
- {
- key k (ns, name);
- typename map::const_iterator i (map_.find (k));
-
- if (i == map_.end ())
- return false;
-
- const value& v (i->second);
-
- bool r (false);
-
- if (v.name () == root_name && v.ns () == root_ns)
- r = true;
- else
- r = check_ (v.ns (), v.name (), root_ns, root_name, 0);
-
- if (r && type != 0 && *type == 0)
- *type = &v.type ();
-
- return r;
- }
-
- // substitution_map_init
- //
- template<typename C>
- substitution_map_init<C>::
- substitution_map_init ()
- {
- if (count == 0)
- map = new substitution_map<C>;
-
- ++count;
- }
-
- template<typename C>
- substitution_map_init<C>::
- ~substitution_map_init ()
- {
- if (--count == 0)
- delete map;
- }
-
- // substitution_map_entry
- //
- template<typename C>
- substitution_map_entry<C>::
- substitution_map_entry (const C* member_ns,
- const C* member_name,
- const C* root_ns,
- const C* root_name,
- const C* member_type)
- : member_ns_ (member_ns), member_name_ (member_name)
- {
- substitution_map_instance<C> ().insert (
- member_ns, member_name, root_ns, root_name, member_type);
- }
-
- template<typename C>
- substitution_map_entry<C>::
- ~substitution_map_entry ()
- {
- substitution_map_instance<C> ().erase (member_ns_, member_name_);
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/exceptions.hxx b/xsd/libxsd/xsd/cxx/parser/validating/exceptions.hxx
deleted file mode 100644
index 07086e3..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/exceptions.hxx
+++ /dev/null
@@ -1,152 +0,0 @@
-// file : xsd/cxx/parser/validating/exceptions.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_VALIDATING_EXCEPTIONS_HXX
-#define XSD_CXX_PARSER_VALIDATING_EXCEPTIONS_HXX
-
-#include <string>
-
-#include <xsd/cxx/parser/schema-exceptions.hxx>
-#include <xsd/cxx/ro-string.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- //
- //
- template <typename C>
- struct expected_attribute: schema_exception<C>
- {
- virtual
- ~expected_attribute ();
-
- expected_attribute (const std::basic_string<C>& expected_namespace,
- const std::basic_string<C>& expected_name);
-
- const std::basic_string<C>&
- expected_namespace () const
- {
- return expected_namespace_;
- }
-
- const std::basic_string<C>&
- expected_name () const
- {
- return expected_name_;
- }
-
- virtual std::basic_string<C>
- message () const;
-
- private:
- std::basic_string<C> expected_namespace_;
- std::basic_string<C> expected_name_;
- };
-
- //
- //
- template <typename C>
- struct unexpected_attribute: schema_exception<C>
- {
- virtual
- ~unexpected_attribute ();
-
- unexpected_attribute (
- const std::basic_string<C>& encountered_namespace,
- const std::basic_string<C>& encountered_name);
-
-
- const std::basic_string<C>&
- encountered_namespace () const
- {
- return encountered_namespace_;
- }
-
- const std::basic_string<C>&
- encountered_name () const
- {
- return encountered_name_;
- }
-
- virtual std::basic_string<C>
- message () const;
-
- private:
- std::basic_string<C> encountered_namespace_;
- std::basic_string<C> encountered_name_;
- };
-
-
- //
- //
- template <typename C>
- struct unexpected_characters: schema_exception<C>
- {
- virtual
- ~unexpected_characters ();
-
- unexpected_characters (const std::basic_string<C>& s);
-
- const std::basic_string<C>&
- characters () const
- {
- return characters_;
- }
-
- virtual std::basic_string<C>
- message () const;
-
- private:
- std::basic_string<C> characters_;
- };
-
- //
- //
- template <typename C>
- struct invalid_value: schema_exception<C>
- {
- virtual
- ~invalid_value ();
-
- invalid_value (const C* type, const std::basic_string<C>& value);
-
- invalid_value (const C* type, const ro_string<C>& value);
-
- invalid_value (const std::basic_string<C>& type,
- const std::basic_string<C>& value);
-
- const std::basic_string<C>&
- type () const
- {
- return type_;
- }
-
- const std::basic_string<C>&
- value () const
- {
- return value_;
- }
-
- virtual std::basic_string<C>
- message () const;
-
- private:
- std::basic_string<C> type_;
- std::basic_string<C> value_;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/validating/exceptions.txx>
-
-#endif // XSD_CXX_PARSER_VALIDATING_EXCEPTIONS_HXX
-
-#include <xsd/cxx/parser/validating/exceptions.ixx>
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/exceptions.ixx b/xsd/libxsd/xsd/cxx/parser/validating/exceptions.ixx
deleted file mode 100644
index 72bfe8d..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/exceptions.ixx
+++ /dev/null
@@ -1,162 +0,0 @@
-// file : xsd/cxx/parser/validating/exceptions.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR)
-
-#ifndef XSD_CXX_PARSER_VALIDATING_EXCEPTIONS_IXX_CHAR
-#define XSD_CXX_PARSER_VALIDATING_EXCEPTIONS_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- // expected_attribute
- //
- template<>
- inline
- std::basic_string<char> expected_attribute<char>::
- message () const
- {
- std::basic_string<char> r ("expected attribute '");
- r += expected_namespace_;
- r += expected_namespace_.empty () ? "" : "#";
- r += expected_name_;
- r += "'";
- return r;
- }
-
- // unexpected_attribute
- //
- template<>
- inline
- std::basic_string<char> unexpected_attribute<char>::
- message () const
- {
- std::basic_string<char> r ("unexpected attribute '");
- r += encountered_namespace_;
- r += encountered_namespace_.empty () ? "" : "#";
- r += encountered_name_;
- r += "'";
- return r;
- }
-
- // unexpected_characters
- //
- template<>
- inline
- std::basic_string<char> unexpected_characters<char>::
- message () const
- {
- std::basic_string<char> r ("unexpected characters '");
- r += characters_;
- r += "'";
- return r;
- }
-
- // invalid_value
- //
- template<>
- inline
- std::basic_string<char> invalid_value<char>::
- message () const
- {
- std::basic_string<char> r ("'");
- r += value_;
- r += "' is not a valid value representation ";
- r += "for type '";
- r += type_;
- r += "'";
- return r;
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_VALIDATING_EXCEPTIONS_IXX_CHAR
-#endif // XSD_CXX_PARSER_USE_CHAR
-
-
-#if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR)
-
-#ifndef XSD_CXX_PARSER_VALIDATING_EXCEPTIONS_IXX_WCHAR
-#define XSD_CXX_PARSER_VALIDATING_EXCEPTIONS_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- // expected_attribute
- //
- template<>
- inline
- std::basic_string<wchar_t> expected_attribute<wchar_t>::
- message () const
- {
- std::basic_string<wchar_t> r (L"expected attribute '");
- r += expected_namespace_;
- r += expected_namespace_.empty () ? L"" : L"#";
- r += expected_name_;
- r += L"'";
- return r;
- }
-
- // unexpected_attribute
- //
- template<>
- inline
- std::basic_string<wchar_t> unexpected_attribute<wchar_t>::
- message () const
- {
- std::basic_string<wchar_t> r (L"unexpected attribute '");
- r += encountered_namespace_;
- r += encountered_namespace_.empty () ? L"" : L"#";
- r += encountered_name_;
- r += L"'";
- return r;
- }
-
- // unexpected_characters
- //
- template<>
- inline
- std::basic_string<wchar_t> unexpected_characters<wchar_t>::
- message () const
- {
- std::basic_string<wchar_t> r (L"unexpected characters '");
- r += characters_;
- r += L"'";
- return r;
- }
-
- // invalid_value
- //
- template<>
- inline
- std::basic_string<wchar_t> invalid_value<wchar_t>::
- message () const
- {
- std::basic_string<wchar_t> r (L"'");
- r += value_;
- r += L"' is not a valid value representation ";
- r += L"for type '";
- r += type_;
- r += L"'";
- return r;
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_VALIDATING_EXCEPTIONS_IXX_WCHAR
-#endif // XSD_CXX_PARSER_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/exceptions.txx b/xsd/libxsd/xsd/cxx/parser/validating/exceptions.txx
deleted file mode 100644
index c2b8928..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/exceptions.txx
+++ /dev/null
@@ -1,96 +0,0 @@
-// file : xsd/cxx/parser/validating/exceptions.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- // expected_attribute
- //
- template <typename C>
- expected_attribute<C>::
- ~expected_attribute ()
- {
- }
-
- template <typename C>
- expected_attribute<C>::
- expected_attribute (const std::basic_string<C>& expected_namespace,
- const std::basic_string<C>& expected_name)
- : expected_namespace_ (expected_namespace),
- expected_name_ (expected_name)
- {
- }
-
- // unexpected_attribute
- //
- template <typename C>
- unexpected_attribute<C>::
- ~unexpected_attribute ()
- {
- }
-
- template <typename C>
- unexpected_attribute<C>::
- unexpected_attribute (const std::basic_string<C>& encountered_namespace,
- const std::basic_string<C>& encountered_name)
- : encountered_namespace_ (encountered_namespace),
- encountered_name_ (encountered_name)
- {
- }
-
- // unexpected_characters
- //
- template <typename C>
- unexpected_characters<C>::
- ~unexpected_characters ()
- {
- }
-
- template <typename C>
- unexpected_characters<C>::
- unexpected_characters (const std::basic_string<C>& s)
- : characters_ (s)
- {
- }
-
- // invalid_value
- //
- template <typename C>
- invalid_value<C>::
- ~invalid_value ()
- {
- }
-
- template <typename C>
- invalid_value<C>::
- invalid_value (const C* type,
- const std::basic_string<C>& value)
- : type_ (type), value_ (value)
- {
- }
-
- template <typename C>
- invalid_value<C>::
- invalid_value (const C* type,
- const ro_string<C>& value)
- : type_ (type), value_ (value)
- {
- }
-
- template <typename C>
- invalid_value<C>::
- invalid_value (const std::basic_string<C>& type,
- const std::basic_string<C>& value)
- : type_ (type), value_ (value)
- {
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/inheritance-map.hxx b/xsd/libxsd/xsd/cxx/parser/validating/inheritance-map.hxx
deleted file mode 100644
index b8ae938..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/inheritance-map.hxx
+++ /dev/null
@@ -1,100 +0,0 @@
-// file : xsd/cxx/parser/validating/inheritance-map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_VALIDATING_INHERITANCE_MAP_HXX
-#define XSD_CXX_PARSER_VALIDATING_INHERITANCE_MAP_HXX
-
-#include <map>
-#include <cstddef> // std::size_t
-
-#include <xsd/cxx/ro-string.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- template <typename C>
- struct string_comparison
- {
- bool
- operator() (const C* x, const C* y) const
- {
- ro_string<C> s (x);
- return s.compare (y) < 0;
- }
- };
-
- template <typename C>
- struct inheritance_map
- {
- void
- insert (const C* derived, const C* base)
- {
- map_[derived] = base;
- }
-
- void
- erase (const C* derived)
- {
- map_.erase (derived);
- }
-
- bool
- check (const C* derived, const ro_string<C>& base) const;
-
- private:
- typedef std::map<const C*, const C*, string_comparison<C> > map;
- map map_;
- };
-
-
- // Translation unit initializer.
- //
- template<typename C>
- struct inheritance_map_init
- {
- static inheritance_map<C>* map;
- static std::size_t count;
-
- inheritance_map_init ();
- ~inheritance_map_init ();
- };
-
- template<typename C>
- inheritance_map<C>* inheritance_map_init<C>::map = 0;
-
- template<typename C>
- std::size_t inheritance_map_init<C>::count = 0;
-
- template<typename C>
- inline inheritance_map<C>&
- inheritance_map_instance ()
- {
- return *inheritance_map_init<C>::map;
- }
-
-
- // Map entry initializer.
- //
- template<typename C>
- struct inheritance_map_entry
- {
- inheritance_map_entry (const C* derived, const C* base);
- ~inheritance_map_entry ();
-
- private:
- const C* derived_;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/validating/inheritance-map.txx>
-
-#endif // XSD_CXX_PARSER_VALIDATING_INHERITANCE_MAP_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/inheritance-map.txx b/xsd/libxsd/xsd/cxx/parser/validating/inheritance-map.txx
deleted file mode 100644
index ba4803e..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/inheritance-map.txx
+++ /dev/null
@@ -1,72 +0,0 @@
-// file : xsd/cxx/parser/validating/inheritance-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- template <typename C>
- bool inheritance_map<C>::
- check (const C* derived, const ro_string<C>& base) const
- {
- if (base == derived)
- return true;
-
- typename map::const_iterator i (map_.find (derived));
-
- if (i != map_.end ())
- {
- if (base == i->second)
- return true;
- else
- return check (i->second, base);
- }
-
- return false;
- }
-
- // inheritance_map_init
- //
- template<typename C>
- inheritance_map_init<C>::
- inheritance_map_init ()
- {
- if (count == 0)
- map = new inheritance_map<C>;
-
- ++count;
- }
-
- template<typename C>
- inheritance_map_init<C>::
- ~inheritance_map_init ()
- {
- if (--count == 0)
- delete map;
- }
-
- // inheritance_map_entry
- //
- template<typename C>
- inheritance_map_entry<C>::
- inheritance_map_entry (const C* derived, const C* base)
- : derived_ (derived)
- {
- inheritance_map_instance<C> ().insert (derived, base);
- }
-
- template<typename C>
- inheritance_map_entry<C>::
- ~inheritance_map_entry ()
- {
- inheritance_map_instance<C> ().erase (derived_);
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/parser.hxx b/xsd/libxsd/xsd/cxx/parser/validating/parser.hxx
deleted file mode 100644
index c305fe1..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/parser.hxx
+++ /dev/null
@@ -1,470 +0,0 @@
-// file : xsd/cxx/parser/validating/parser.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_VALIDATING_PARSER_HXX
-#define XSD_CXX_PARSER_VALIDATING_PARSER_HXX
-
-#include <stack>
-#include <cstddef> // std::size_t
-#include <cstring> // std::memcpy
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/parser/elements.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- //
- //
- template <typename C>
- struct empty_content: parser_base<C>
- {
- // These functions are called when wildcard content
- // is encountered. Use them to handle mixed content
- // models, any/anyAttribute, and anyType/anySimpleType.
- // By default these functions do nothing.
- //
-
- // The type argument is a type name and namespace from the
- // xsi:type attribute in the form "<name> <namespace>" with
- // the space and namespace part absent if the type does not
- // have a namespace or 0 if xsi:type is not present.
- //
- virtual void
- _start_any_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type);
-
- virtual void
- _end_any_element (const ro_string<C>& ns,
- const ro_string<C>& name);
-
- virtual void
- _any_attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _any_characters (const ro_string<C>&);
-
-
- //
- //
- virtual bool
- _start_element_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*);
-
- virtual bool
- _end_element_impl (const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _attribute_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _characters_impl (const ro_string<C>&);
-
-
- //
- //
- virtual void
- _start_element (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*);
-
- virtual void
- _end_element (const ro_string<C>&,
- const ro_string<C>&);
-
- virtual void
- _attribute (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&);
-
- virtual void
- _characters (const ro_string<C>&);
-
-
- //
- //
- virtual void
- _expected_element (const C* expected_ns,
- const C* expected_name);
-
- virtual void
- _expected_element (const C* expected_ns,
- const C* expected_name,
- const ro_string<C>& encountered_ns,
- const ro_string<C>& encountered_name);
-
- virtual void
- _unexpected_element (const ro_string<C>& ns,
- const ro_string<C>& name);
-
- virtual void
- _expected_attribute (const C* expected_ns,
- const C* expected_name);
-
- virtual void
- _unexpected_attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _unexpected_characters (const ro_string<C>&);
- };
-
-
- //
- //
- template <typename C>
- struct simple_content: empty_content<C>
- {
- //
- //
- virtual void
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _characters (const ro_string<C>&);
-
- //
- //
- virtual bool
- _attribute_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&);
-
- //
- //
- virtual void
- _pre_impl ();
-
- virtual void
- _post_impl ();
-
-
- // Implementation callbacks.
- //
- virtual void
- _pre_a_validate ();
-
- virtual void
- _post_a_validate ();
-
-
- // Attribute validation: during phase one we are searching for
- // matching attributes (Structures, section 3.4.4, clause 2.1).
- // During phase two we are searching for attribute wildcards
- // (section 3.4.4, clause 2.2). Both phases run across
- // inheritance hierarchy from derived to base for extension
- // only. Both functions return true if the match was found and
- // validation has been performed.
- //
- virtual bool
- _attribute_impl_phase_one (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual bool
- _attribute_impl_phase_two (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
- };
-
-
- //
- //
- template <typename C>
- struct complex_content: empty_content<C>
- {
- //
- //
- virtual void
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type);
-
- virtual void
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name);
-
- virtual void
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _characters (const ro_string<C>&);
-
- //
- //
- virtual bool
- _attribute_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&);
-
- //
- //
- virtual void
- _pre_impl ();
-
- virtual void
- _post_impl ();
-
-
- // Implementation callbacks.
- //
- virtual void
- _pre_e_validate ();
-
- virtual void
- _post_e_validate ();
-
- virtual void
- _pre_a_validate ();
-
- virtual void
- _post_a_validate ();
-
-
- // Attribute validation: during phase one we are searching for
- // matching attributes (Structures, section 3.4.4, clause 2.1).
- // During phase two we are searching for attribute wildcards
- // (section 3.4.4, clause 2.2). Both phases run across
- // inheritance hierarchy from derived to base for extension
- // only. Both functions return true if the match was found and
- // validation has been performed.
- //
- virtual bool
- _attribute_impl_phase_one (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual bool
- _attribute_impl_phase_two (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
- protected:
- struct state
- {
- state ()
- : any_ (false), depth_ (0), parser_ (0)
- {
- }
-
- bool any_;
- std::size_t depth_;
- parser_base<C>* parser_;
- };
-
- // Optimized state stack for non-recursive case (one element).
- //
- struct state_stack
- {
- state_stack ()
- : size_ (0)
- {
- }
-
- void
- push (const state& s)
- {
- if (size_ > 0)
- rest_.push (top_);
-
- top_ = s;
- ++size_;
- }
-
- void
- pop ()
- {
- if (size_ > 1)
- {
- top_ = rest_.top ();
- rest_.pop ();
- }
-
- --size_;
- }
-
- const state&
- top () const
- {
- return top_;
- }
-
- state&
- top ()
- {
- return top_;
- }
-
- state&
- under_top ()
- {
- return rest_.top ();
- }
-
- private:
- state top_;
- std::stack<state> rest_;
- std::size_t size_;
- };
-
- state_stack context_;
- };
-
- // Base for xsd:list.
- //
- template <typename C>
- struct list_base: simple_content<C>
- {
- virtual void
- _xsd_parse_item (const ro_string<C>&) = 0;
-
- virtual void
- _pre_impl ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post_impl ();
-
- protected:
- std::basic_string<C> buf_;
- };
- }
-
- // POD stack with pre-allocated first element. You may
- // need to pad your elements to get the proper alignment.
- //
- struct pod_stack
- {
- ~pod_stack ()
- {
- delete[] data_;
- }
-
- pod_stack (std::size_t element_size, void* first_element)
- : el_size_ (element_size), first_ (first_element),
- data_ (0), size_ (0), capacity_ (0)
- {
- }
-
- public:
- void
- pop ()
- {
- --size_;
- }
-
- void
- push ()
- {
- if (size_ > capacity_)
- grow ();
-
- ++size_;
- }
-
- void*
- top ()
- {
- return size_ == 1 ? first_ : data_ + (size_ - 1) * el_size_;
- }
-
- void*
- under_top ()
- {
- return size_ == 2 ? first_ : data_ + (size_ - 2) * el_size_;
- }
-
- std::size_t
- element_size () const
- {
- return el_size_;
- }
-
- private:
- void
- grow ()
- {
- std::size_t c (capacity_ ? capacity_ * 2 : 8);
- char* d (new char[c * el_size_]);
-
- if (size_ > 1)
- std::memcpy (d, data_, (size_ - 1) * el_size_);
-
- delete[] data_;
-
- data_ = d;
- capacity_ = c;
- }
-
- private:
- std::size_t el_size_;
- void* first_;
- char* data_;
- std::size_t size_;
- std::size_t capacity_;
- };
-
- namespace validating
- {
- // Validation state stack for the 'all' particle.
- //
- struct all_stack
- {
- all_stack (std::size_t n, unsigned char* first)
- : stack_ (n, first)
- {
- }
-
- void
- push ()
- {
- stack_.push ();
-
- unsigned char* p (static_cast<unsigned char*> (stack_.top ()));
-
- for (std::size_t i (0); i < stack_.element_size (); ++i)
- p[i] = 0;
- }
-
- void
- pop ()
- {
- stack_.pop ();
- }
-
- unsigned char*
- top ()
- {
- return static_cast<unsigned char*> (stack_.top ());
- }
-
- private:
- pod_stack stack_;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/validating/parser.txx>
-
-#endif // XSD_CXX_PARSER_VALIDATING_PARSER_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/parser.txx b/xsd/libxsd/xsd/cxx/parser/validating/parser.txx
deleted file mode 100644
index 9a5800a..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/parser.txx
+++ /dev/null
@@ -1,666 +0,0 @@
-// file : xsd/cxx/parser/validating/parser.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cassert>
-
-#include <xsd/cxx/xml/bits/literals.hxx>
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
-
- // empty_content
- //
-
-
- template <typename C>
- void empty_content<C>::
- _start_any_element (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*)
- {
- }
-
- template <typename C>
- void empty_content<C>::
- _end_any_element (const ro_string<C>&,
- const ro_string<C>&)
- {
- }
-
- template <typename C>
- void empty_content<C>::
- _any_attribute (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&)
- {
- }
-
- template <typename C>
- void empty_content<C>::
- _any_characters (const ro_string<C>&)
- {
- }
-
- //
- //
- template <typename C>
- bool empty_content<C>::
- _start_element_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*)
- {
- return false;
- }
-
- template <typename C>
- bool empty_content<C>::
- _end_element_impl (const ro_string<C>&,
- const ro_string<C>&)
- {
- return false;
- }
-
- template <typename C>
- bool empty_content<C>::
- _attribute_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&)
- {
- return false;
- }
-
- template <typename C>
- bool empty_content<C>::
- _characters_impl (const ro_string<C>&)
- {
- return false;
- }
-
- //
- //
- template <typename C>
- void empty_content<C>::
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type)
- {
- if (!this->_start_element_impl (ns, name, type))
- this->_unexpected_element (ns, name);
- }
-
- template <typename C>
- void empty_content<C>::
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name)
- {
- if (!this->_end_element_impl (ns, name))
- this->_unexpected_element (ns, name);
- }
-
- template <typename C>
- void empty_content<C>::
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- // Weed out special attributes: xsi:type, xsi:nil,
- // xsi:schemaLocation and noNamespaceSchemaLocation.
- // See section 3.2.7 in Structures for details.
- //
- if (ns == xml::bits::xsi_namespace<C> () &&
- (name == xml::bits::type<C> () ||
- name == xml::bits::nil_lit<C> () ||
- name == xml::bits::schema_location<C> () ||
- name == xml::bits::no_namespace_schema_location<C> ()))
- return;
-
- // Also some parsers (notably Xerces-C++) supplies us with
- // namespace-prefix mapping attributes.
- //
- if (ns == xml::bits::xmlns_namespace<C> ())
- return;
-
- if (!this->_attribute_impl (ns, name, value))
- this->_unexpected_attribute (ns, name, value);
- }
-
- template <typename C>
- void empty_content<C>::
- _characters (const ro_string<C>& s)
- {
- if (!this->_characters_impl (s))
- this->_unexpected_characters (s);
- }
-
- //
- //
- template <typename C>
- void empty_content<C>::
- _expected_element (const C* ex_ns, const C* ex_name)
- {
- throw expected_element<C> (ex_ns, ex_name);
- }
-
- template <typename C>
- void empty_content<C>::
- _expected_element (const C* ex_ns,
- const C* ex_name,
- const ro_string<C>& en_ns,
- const ro_string<C>& en_name)
- {
- throw expected_element<C> (ex_ns, ex_name, en_ns, en_name);
- }
-
- template <typename C>
- void empty_content<C>::
- _unexpected_element (const ro_string<C>& ns,
- const ro_string<C>& name)
- {
- throw unexpected_element<C> (ns, name);
- }
-
- template <typename C>
- void empty_content<C>::
- _expected_attribute (const C* ex_ns, const C* ex_name)
- {
- throw expected_attribute<C> (ex_ns, ex_name);
- }
-
- template <typename C>
- void empty_content<C>::
- _unexpected_attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>&)
- {
- throw unexpected_attribute<C> (ns, name);
- }
-
- template <typename C>
- void empty_content<C>::
- _unexpected_characters (const ro_string<C>& s)
- {
- throw unexpected_characters<C> (s);
- }
-
-
- // simple_content
- //
-
- template <typename C>
- void simple_content<C>::
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- // Weed out special attributes: xsi:type, xsi:nil,
- // xsi:schemaLocation and xsi:noNamespaceSchemaLocation.
- // See section 3.2.7 in Structures for details.
- //
- if (ns == xml::bits::xsi_namespace<C> () &&
- (name == xml::bits::type<C> () ||
- name == xml::bits::nil_lit<C> () ||
- name == xml::bits::schema_location<C> () ||
- name == xml::bits::no_namespace_schema_location<C> ()))
- return;
-
- // Also some parsers (notably Xerces-C++) supplies us with
- // namespace-prefix mapping attributes.
- //
- if (ns == xml::bits::xmlns_namespace<C> ())
- return;
-
- if (!this->_attribute_impl (ns, name, value))
- this->_unexpected_attribute (ns, name, value);
- }
-
- template <typename C>
- void simple_content<C>::
- _characters (const ro_string<C>& str)
- {
- if (!this->_characters_impl (str))
- {
- // Mixed content is implemented in the generated code
- // by overriding _characters_impl and forwarding to
- // _any_characters.
- //
-
- // Scan the string for any non-whitespace characters
- // (Structures, section 3.4.4, clause 1.3).
- //
- for (typename ro_string<C>::size_type i (0), e (str.size ());
- i < e; ++i)
- {
- C c (str[i]);
-
- if (c != C (0x20) && // space
- c != C (0x0D) && // carriage return
- c != C (0x09) && // tab
- c != C (0x0A))
- this->_unexpected_characters (str);
- }
- }
- }
-
- template <typename C>
- void simple_content<C>::
- _pre_impl ()
- {
- this->_pre ();
- _pre_a_validate ();
- }
-
- template <typename C>
- void simple_content<C>::
- _post_impl ()
- {
- _post_a_validate ();
- this->_post ();
- }
-
- template <typename C>
- void simple_content<C>::
- _pre_a_validate ()
- {
- }
-
- template <typename C>
- void simple_content<C>::
- _post_a_validate ()
- {
- }
-
- template <typename C>
- bool simple_content<C>::
- _attribute_impl (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- return _attribute_impl_phase_one (ns, name, value) ||
- _attribute_impl_phase_two (ns, name, value);
- }
-
- template <typename C>
- bool simple_content<C>::
- _attribute_impl_phase_one (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&)
- {
- return false;
- }
-
- template <typename C>
- bool simple_content<C>::
- _attribute_impl_phase_two (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&)
- {
- return false;
- }
-
-
- // complex_content
- //
-
-
- template <typename C>
- void complex_content<C>::
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type)
- {
- state& s (context_.top ());
-
- if (s.depth_++ > 0)
- {
- if (s.any_)
- this->_start_any_element (ns, name, type);
- else if (s.parser_)
- s.parser_->_start_element (ns, name, type);
- }
- else
- {
- if (!this->_start_element_impl (ns, name, type))
- this->_unexpected_element (ns, name);
- else if (s.parser_ != 0)
- s.parser_->_pre_impl ();
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name)
- {
- // To understand what's going on here it is helpful to think of
- // a "total depth" as being the sum of individual depths over
- // all elements.
- //
-
- if (context_.top ().depth_ == 0)
- {
- state& s (context_.under_top ()); // One before last.
-
- if (--s.depth_ > 0)
- {
- // Indirect recursion.
- //
- if (s.parser_)
- s.parser_->_end_element (ns, name);
- }
- else
- {
- // Direct recursion.
- //
- assert (this == s.parser_);
-
- this->_post_impl ();
-
- if (!this->_end_element_impl (ns, name))
- assert (false);
- }
- }
- else
- {
- state& s (context_.top ());
-
- if (--s.depth_ > 0)
- {
- if (s.any_)
- this->_end_any_element (ns, name);
- else if (s.parser_)
- s.parser_->_end_element (ns, name);
- }
- else
- {
- if (s.parser_ != 0 && !s.any_)
- s.parser_->_post_impl ();
-
- if (!this->_end_element_impl (ns, name))
- this->_unexpected_element (ns, name);
- }
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- // Weed out special attributes: xsi:type, xsi:nil,
- // xsi:schemaLocation and xsi:noNamespaceSchemaLocation.
- // See section 3.2.7 in Structures for details.
- //
- if (ns == xml::bits::xsi_namespace<C> () &&
- (name == xml::bits::type<C> () ||
- name == xml::bits::nil_lit<C> () ||
- name == xml::bits::schema_location<C> () ||
- name == xml::bits::no_namespace_schema_location<C> ()))
- return;
-
- // Also some parsers (notably Xerces-C++) supplies us with
- // namespace-prefix mapping attributes.
- //
- if (ns == xml::bits::xmlns_namespace<C> ())
- return;
-
- const state& s (context_.top ());
-
- if (s.depth_ > 0)
- {
- if (s.any_)
- this->_any_attribute (ns, name, value);
- else if (s.parser_)
- s.parser_->_attribute (ns, name, value);
- }
- else
- {
- if (!this->_attribute_impl (ns, name, value))
- this->_unexpected_attribute (ns, name, value);
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _characters (const ro_string<C>& str)
- {
- const state& s (context_.top ());
-
- if (s.depth_ > 0)
- {
- if (s.any_)
- this->_any_characters (str);
- else if (s.parser_)
- s.parser_->_characters (str);
- }
- else
- {
- if (!this->_characters_impl (str))
- {
- // Mixed content is implemented in the generated code
- // by overriding _characters_impl and forwarding to
- // _any_characters.
- //
-
- // Scan the string for any non-whitespace characters
- // (Structures, section 3.4.4, clause 1.3).
- //
- for (typename ro_string<C>::size_type i (0), e (str.size ());
- i < e; ++i)
- {
- C c (str[i]);
-
- if (c != C (0x20) && // space
- c != C (0x0D) && // carriage return
- c != C (0x09) && // tab
- c != C (0x0A))
- this->_unexpected_characters (str);
- }
- }
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _pre_impl ()
- {
- context_.push (state ());
- this->_pre ();
- _pre_a_validate ();
- _pre_e_validate ();
- }
-
- template <typename C>
- void complex_content<C>::
- _post_impl ()
- {
- _post_e_validate ();
- _post_a_validate ();
- this->_post ();
- context_.pop ();
- }
-
- template <typename C>
- void complex_content<C>::
- _pre_e_validate ()
- {
- }
-
- template <typename C>
- void complex_content<C>::
- _post_e_validate ()
- {
- }
-
- template <typename C>
- void complex_content<C>::
- _pre_a_validate ()
- {
- }
-
- template <typename C>
- void complex_content<C>::
- _post_a_validate ()
- {
- }
-
- template <typename C>
- bool complex_content<C>::
- _attribute_impl (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- return _attribute_impl_phase_one (ns, name, value) ||
- _attribute_impl_phase_two (ns, name, value);
- }
-
- template <typename C>
- bool complex_content<C>::
- _attribute_impl_phase_one (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&)
- {
- return false;
- }
-
- template <typename C>
- bool complex_content<C>::
- _attribute_impl_phase_two (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&)
- {
- return false;
- }
-
-
- // list_base
- //
- namespace bits
- {
- // Find first non-space character.
- //
- template <typename C>
- typename ro_string<C>::size_type
- find_ns (const C* s,
- typename ro_string<C>::size_type size,
- typename ro_string<C>::size_type pos)
- {
- while (pos < size &&
- (s[pos] == C (0x20) || s[pos] == C (0x0A) ||
- s[pos] == C (0x0D) || s[pos] == C (0x09)))
- ++pos;
-
- return pos < size ? pos : ro_string<C>::npos;
- }
-
- // Find first space character.
- //
- template <typename C>
- typename ro_string<C>::size_type
- find_s (const C* s,
- typename ro_string<C>::size_type size,
- typename ro_string<C>::size_type pos)
- {
- while (pos < size &&
- s[pos] != C (0x20) && s[pos] != C (0x0A) &&
- s[pos] != C (0x0D) && s[pos] != C (0x09))
- ++pos;
-
- return pos < size ? pos : ro_string<C>::npos;
- }
- }
-
- // Relevant XML Schema Part 2: Datatypes sections: 4.2.1.2, 4.3.6.
- //
-
- template <typename C>
- void list_base<C>::
- _pre_impl ()
- {
- simple_content<C>::_pre_impl ();
- buf_.clear ();
- }
-
- template <typename C>
- void list_base<C>::
- _characters (const ro_string<C>& s)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- const C* data (s.data ());
- size_type size (s.size ());
-
- // Handle the previous chunk if we start with a ws.
- //
- if (!buf_.empty () &&
- (data[0] == C (0x20) || data[0] == C (0x0A) ||
- data[0] == C (0x0D) || data[0] == C (0x09)))
- {
- ro_string<C> tmp (buf_); // Private copy ctor.
- _xsd_parse_item (tmp);
- buf_.clear ();
- }
-
- // Traverse the data while logically collapsing spaces.
- //
- for (size_type i (bits::find_ns (data, size, 0));
- i != ro_string<C>::npos;)
- {
- size_type j (bits::find_s (data, size, i));
-
- if (j != ro_string<C>::npos)
- {
- if (buf_.empty ())
- {
- ro_string<C> tmp (data + i, j - i); // Private copy ctor.
- _xsd_parse_item (tmp);
- }
- else
- {
- // Assemble the first item in str from buf_ and s.
- //
- std::basic_string<C> str;
- str.swap (buf_);
- str.append (data + i, j - i);
- ro_string<C> tmp (str); // Private copy ctor.
- _xsd_parse_item (tmp);
- }
-
- i = bits::find_ns (data, size, j);
- }
- else
- {
- // Last fragment, append it to the buf_.
- //
- buf_.append (data + i, size - i);
- break;
- }
- }
- }
-
- template <typename C>
- void list_base<C>::
- _post_impl ()
- {
- // Handle the last item.
- //
- if (!buf_.empty ())
- {
- ro_string<C> tmp (buf_); // Private copy ctor.
- _xsd_parse_item (tmp);
- }
-
- simple_content<C>::_post_impl ();
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.hxx b/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.hxx
deleted file mode 100644
index ae64d2b..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.hxx
+++ /dev/null
@@ -1,1122 +0,0 @@
-// file : xsd/cxx/parser/validating/xml-schema-pimpl.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PIMPL_HXX
-#define XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PIMPL_HXX
-
-#include <string>
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/parser/validating/xml-schema-pskel.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- // any_type
- //
- template <typename C>
- struct any_type_pimpl: virtual any_type_pskel<C>
- {
- virtual void
- post_any_type ();
- };
-
- // any_simple_type
- //
- template <typename C>
- struct any_simple_type_pimpl: virtual any_simple_type_pskel<C>
- {
- virtual void
- post_any_simple_type ();
- };
-
- // boolean
- //
- template <typename C>
- struct boolean_pimpl: virtual boolean_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual bool
- post_boolean ();
-
- protected:
- std::basic_string<C> str_;
- bool value_;
- };
-
-
- // 8-bit
- //
- template <typename C>
- struct byte_pimpl: virtual byte_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual signed char
- post_byte ();
-
- protected:
- std::basic_string<C> str_;
- signed char value_;
- };
-
-
- template <typename C>
- struct unsigned_byte_pimpl: virtual unsigned_byte_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual unsigned char
- post_unsigned_byte ();
-
- protected:
- std::basic_string<C> str_;
- unsigned char value_;
- };
-
-
- // 16-bit
- //
- template <typename C>
- struct short_pimpl: virtual short_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual short
- post_short ();
-
- protected:
- std::basic_string<C> str_;
- short value_;
- };
-
-
- template <typename C>
- struct unsigned_short_pimpl: virtual unsigned_short_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual unsigned short
- post_unsigned_short ();
-
- protected:
- std::basic_string<C> str_;
- unsigned short value_;
- };
-
-
- // 32-bit
- //
- template <typename C>
- struct int_pimpl: virtual int_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual int
- post_int ();
-
- protected:
- std::basic_string<C> str_;
- int value_;
- };
-
-
- template <typename C>
- struct unsigned_int_pimpl: virtual unsigned_int_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual unsigned int
- post_unsigned_int ();
-
- protected:
- std::basic_string<C> str_;
- unsigned int value_;
- };
-
-
- // 64-bit
- //
- template <typename C>
- struct long_pimpl: virtual long_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual long long
- post_long ();
-
- protected:
- std::basic_string<C> str_;
- long long value_;
- };
-
-
- template <typename C>
- struct unsigned_long_pimpl: virtual unsigned_long_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual unsigned long long
- post_unsigned_long ();
-
- protected:
- std::basic_string<C> str_;
- unsigned long long value_;
- };
-
-
- // Arbitrary-length integers.
- //
- template <typename C>
- struct integer_pimpl: virtual integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual long long
- post_integer ();
-
- protected:
- std::basic_string<C> str_;
- long long value_;
- };
-
- template <typename C>
- struct negative_integer_pimpl: virtual negative_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual long long
- post_negative_integer ();
-
- protected:
- std::basic_string<C> str_;
- long long value_;
- };
-
- template <typename C>
- struct non_positive_integer_pimpl: virtual non_positive_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual long long
- post_non_positive_integer ();
-
- protected:
- std::basic_string<C> str_;
- long long value_;
- };
-
- template <typename C>
- struct positive_integer_pimpl: virtual positive_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual unsigned long long
- post_positive_integer ();
-
- protected:
- std::basic_string<C> str_;
- unsigned long long value_;
- };
-
- template <typename C>
- struct non_negative_integer_pimpl: virtual non_negative_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual unsigned long long
- post_non_negative_integer ();
-
- protected:
- std::basic_string<C> str_;
- unsigned long long value_;
- };
-
-
- // Floats.
- //
- template <typename C>
- struct float_pimpl: virtual float_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual float
- post_float ();
-
- protected:
- std::basic_string<C> str_;
- float value_;
- };
-
-
- template <typename C>
- struct double_pimpl: virtual double_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual double
- post_double ();
-
- protected:
- std::basic_string<C> str_;
- double value_;
- };
-
-
- template <typename C>
- struct decimal_pimpl: virtual decimal_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual double
- post_decimal ();
-
- protected:
- std::basic_string<C> str_;
- double value_;
- };
-
-
- // Strings.
- //
- template <typename C>
- struct string_pimpl: virtual string_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_string ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct normalized_string_pimpl: virtual normalized_string_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_normalized_string ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct token_pimpl: virtual token_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_token ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct name_pimpl: virtual name_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual std::basic_string<C>
- post_name ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct nmtoken_pimpl: virtual nmtoken_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual std::basic_string<C>
- post_nmtoken ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct nmtokens_pimpl: virtual nmtokens_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _xsd_parse_item (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual string_sequence<C>
- post_nmtokens ();
-
- protected:
- string_sequence<C> seq_;
- nmtoken_pimpl<C> parser_;
- };
-
- template <typename C>
- struct ncname_pimpl: virtual ncname_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual std::basic_string<C>
- post_ncname ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct id_pimpl: virtual id_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual std::basic_string<C>
- post_id ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct idref_pimpl: virtual idref_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual std::basic_string<C>
- post_idref ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct idrefs_pimpl: virtual idrefs_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _xsd_parse_item (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual string_sequence<C>
- post_idrefs ();
-
- protected:
- string_sequence<C> seq_;
- idref_pimpl<C> parser_;
- };
-
- // language
- //
- template <typename C>
- struct language_pimpl: virtual language_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual std::basic_string<C>
- post_language ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // anyURI
- //
- template <typename C>
- struct uri_pimpl: virtual uri_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_uri ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // QName
- //
- template <typename C>
- struct qname_pimpl: virtual qname_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual qname<C>
- post_qname ();
-
- protected:
- std::basic_string<C> str_;
- std::basic_string<C> name_;
- std::basic_string<C> prefix_;
- };
-
- // base64Binary
- //
- template <typename C>
- struct base64_binary_pimpl: virtual base64_binary_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual XSD_AUTO_PTR<buffer>
- post_base64_binary ();
-
- protected:
- std::basic_string<C> str_;
- XSD_AUTO_PTR<buffer> buf_;
- };
-
- // hexBinary
- //
- template <typename C>
- struct hex_binary_pimpl: virtual hex_binary_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual XSD_AUTO_PTR<buffer>
- post_hex_binary ();
-
- protected:
- std::basic_string<C> str_;
- XSD_AUTO_PTR<buffer> buf_;
- };
-
- // gday
- //
- template <typename C>
- struct gday_pimpl: virtual gday_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual gday
- post_gday ();
-
- protected:
- std::basic_string<C> str_;
- unsigned short day_;
- bool z_;
- short zh_, zm_;
- };
-
- // gmonth
- //
- template <typename C>
- struct gmonth_pimpl: virtual gmonth_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual gmonth
- post_gmonth ();
-
- protected:
- std::basic_string<C> str_;
- unsigned short month_;
- bool z_;
- short zh_, zm_;
- };
-
- // gyear
- //
- template <typename C>
- struct gyear_pimpl: virtual gyear_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual gyear
- post_gyear ();
-
- protected:
- std::basic_string<C> str_;
- int year_;
- bool z_;
- short zh_, zm_;
- };
-
- // gmonth_day
- //
- template <typename C>
- struct gmonth_day_pimpl: virtual gmonth_day_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual gmonth_day
- post_gmonth_day ();
-
- protected:
- std::basic_string<C> str_;
- unsigned short month_;
- unsigned short day_;
- bool z_;
- short zh_, zm_;
- };
-
- // gyear_month
- //
- template <typename C>
- struct gyear_month_pimpl: virtual gyear_month_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual gyear_month
- post_gyear_month ();
-
- protected:
- std::basic_string<C> str_;
- int year_;
- unsigned short month_;
- bool z_;
- short zh_, zm_;
- };
-
- // date
- //
- template <typename C>
- struct date_pimpl: virtual date_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual date
- post_date ();
-
- protected:
- std::basic_string<C> str_;
- int year_;
- unsigned short month_;
- unsigned short day_;
- bool z_;
- short zh_, zm_;
- };
-
- // time
- //
- template <typename C>
- struct time_pimpl: virtual time_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual time
- post_time ();
-
- protected:
- std::basic_string<C> str_;
- unsigned short hours_;
- unsigned short minutes_;
- double seconds_;
- bool z_;
- short zh_, zm_;
- };
-
- // date_time
- //
- template <typename C>
- struct date_time_pimpl: virtual date_time_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual date_time
- post_date_time ();
-
- protected:
- std::basic_string<C> str_;
- int year_;
- unsigned short month_;
- unsigned short day_;
- unsigned short hours_;
- unsigned short minutes_;
- double seconds_;
- bool z_;
- short zh_, zm_;
- };
-
- // duration
- //
- template <typename C>
- struct duration_pimpl: virtual duration_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post ();
-
- virtual duration
- post_duration ();
-
- protected:
- std::basic_string<C> str_;
- bool negative_;
- unsigned int years_;
- unsigned int months_;
- unsigned int days_;
- unsigned int hours_;
- unsigned int minutes_;
- double seconds_;
- };
-
- // Literals.
- //
- namespace bits
- {
- template<typename C>
- const C*
- boolean ();
-
- template<typename C>
- const C*
- byte ();
-
- template<typename C>
- const C*
- unsigned_byte ();
-
- template<typename C>
- const C*
- short_ ();
-
- template<typename C>
- const C*
- unsigned_short ();
-
- template<typename C>
- const C*
- int_ ();
-
- template<typename C>
- const C*
- unsigned_int ();
-
- template<typename C>
- const C*
- long_ ();
-
- template<typename C>
- const C*
- unsigned_long ();
-
- template<typename C>
- const C*
- integer ();
-
- template<typename C>
- const C*
- negative_integer ();
-
- template<typename C>
- const C*
- non_positive_integer ();
-
- template<typename C>
- const C*
- non_negative_integer ();
-
- template<typename C>
- const C*
- positive_integer ();
-
- template<typename C>
- const C*
- float_ ();
-
- template<typename C>
- const C*
- double_ ();
-
- template<typename C>
- const C*
- decimal ();
-
- template<typename C>
- const C*
- name ();
-
- template<typename C>
- const C*
- nmtoken ();
-
- template<typename C>
- const C*
- nmtokens ();
-
- template<typename C>
- const C*
- ncname ();
-
- template<typename C>
- const C*
- id ();
-
- template<typename C>
- const C*
- idref ();
-
- template<typename C>
- const C*
- idrefs ();
-
- template<typename C>
- const C*
- language ();
-
- template<typename C>
- const C*
- qname ();
-
- template<typename C>
- const C*
- base64_binary ();
-
- template<typename C>
- const C*
- hex_binary ();
-
- template<typename C>
- const C*
- gday ();
-
- template<typename C>
- const C*
- gmonth ();
-
- template<typename C>
- const C*
- gyear ();
-
- template<typename C>
- const C*
- gmonth_day ();
-
- template<typename C>
- const C*
- gyear_month ();
-
- template<typename C>
- const C*
- date ();
-
- template<typename C>
- const C*
- time ();
-
- template<typename C>
- const C*
- date_time ();
-
- template<typename C>
- const C*
- duration ();
-
- // float literals: INF -INF NaN
- //
- template<typename C>
- const C*
- positive_inf ();
-
- template<typename C>
- const C*
- negative_inf ();
-
- template<typename C>
- const C*
- nan ();
-
- // boolean literals
- //
- template<typename C>
- const C*
- true_ ();
-
- template<typename C>
- const C*
- false_ ();
-
- template<typename C>
- const C*
- one ();
-
- template<typename C>
- const C*
- zero ();
- }
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.txx>
-
-#endif // XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PIMPL_HXX
-
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.ixx>
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.ixx b/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.ixx
deleted file mode 100644
index 94a9b8e..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.ixx
+++ /dev/null
@@ -1,675 +0,0 @@
-// file : xsd/cxx/parser/validating/xml-schema-pimpl.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR)
-
-#ifndef XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PIMPL_IXX_CHAR
-#define XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PIMPL_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- namespace bits
- {
- template<>
- inline const char*
- boolean<char> ()
- {
- return "boolean";
- }
-
- template<>
- inline const char*
- byte<char> ()
- {
- return "byte";
- }
-
- template<>
- inline const char*
- unsigned_byte<char> ()
- {
- return "unsignedByte";
- }
-
- template<>
- inline const char*
- short_<char> ()
- {
- return "short";
- }
-
- template<>
- inline const char*
- unsigned_short<char> ()
- {
- return "unsignedShort";
- }
-
- template<>
- inline const char*
- int_<char> ()
- {
- return "int";
- }
-
- template<>
- inline const char*
- unsigned_int<char> ()
- {
- return "unsignedInt";
- }
-
- template<>
- inline const char*
- long_<char> ()
- {
- return "long";
- }
-
- template<>
- inline const char*
- unsigned_long<char> ()
- {
- return "unsignedLong";
- }
-
- template<>
- inline const char*
- integer<char> ()
- {
- return "integer";
- }
-
- template<>
- inline const char*
- negative_integer<char> ()
- {
- return "negativeInteger";
- }
-
- template<>
- inline const char*
- non_positive_integer<char> ()
- {
- return "nonPositiveInteger";
- }
-
- template<>
- inline const char*
- non_negative_integer<char> ()
- {
- return "nonNegativeInteger";
- }
-
- template<>
- inline const char*
- positive_integer<char> ()
- {
- return "positiveInteger";
- }
-
- template<>
- inline const char*
- float_<char> ()
- {
- return "float";
- }
-
- template<>
- inline const char*
- double_<char> ()
- {
- return "double";
- }
-
- template<>
- inline const char*
- decimal<char> ()
- {
- return "decimal";
- }
-
- template<>
- inline const char*
- name<char> ()
- {
- return "Name";
- }
-
- template<>
- inline const char*
- nmtoken<char> ()
- {
- return "NMTOKEN";
- }
-
- template<>
- inline const char*
- nmtokens<char> ()
- {
- return "NMTOKENS";
- }
-
- template<>
- inline const char*
- ncname<char> ()
- {
- return "NCName";
- }
-
- template<>
- inline const char*
- id<char> ()
- {
- return "ID";
- }
-
- template<>
- inline const char*
- idref<char> ()
- {
- return "IDREF";
- }
-
- template<>
- inline const char*
- idrefs<char> ()
- {
- return "IDREFS";
- }
-
- template<>
- inline const char*
- language<char> ()
- {
- return "language";
- }
-
- template<>
- inline const char*
- qname<char> ()
- {
- return "QName";
- }
-
- template<>
- inline const char*
- base64_binary<char> ()
- {
- return "base64Binary";
- }
-
- template<>
- inline const char*
- hex_binary<char> ()
- {
- return "hexBinary";
- }
-
- template<>
- inline const char*
- gday<char> ()
- {
- return "gDay";
- }
-
- template<>
- inline const char*
- gmonth<char> ()
- {
- return "gMonth";
- }
-
- template<>
- inline const char*
- gyear<char> ()
- {
- return "gYear";
- }
-
- template<>
- inline const char*
- gmonth_day<char> ()
- {
- return "gMonthDay";
- }
-
- template<>
- inline const char*
- gyear_month<char> ()
- {
- return "gYearMonth";
- }
-
- template<>
- inline const char*
- date<char> ()
- {
- return "date";
- }
-
- template<>
- inline const char*
- time<char> ()
- {
- return "time";
- }
-
- template<>
- inline const char*
- date_time<char> ()
- {
- return "dateTime";
- }
-
- template<>
- inline const char*
- duration<char> ()
- {
- return "duration";
- }
-
- //
- //
- template<>
- inline const char*
- positive_inf<char> ()
- {
- return "INF";
- }
-
- template<>
- inline const char*
- negative_inf<char> ()
- {
- return "-INF";
- }
-
- template<>
- inline const char*
- nan<char> ()
- {
- return "NaN";
- }
-
- //
- //
- template<>
- inline const char*
- true_<char> ()
- {
- return "true";
- }
-
- template<>
- inline const char*
- false_<char> ()
- {
- return "false";
- }
-
- template<>
- inline const char*
- one<char> ()
- {
- return "1";
- }
-
- template<>
- inline const char*
- zero<char> ()
- {
- return "0";
- }
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PIMPL_IXX_CHAR
-#endif // XSD_CXX_PARSER_USE_CHAR
-
-
-#if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR)
-
-#ifndef XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PIMPL_IXX_WCHAR
-#define XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PIMPL_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- namespace bits
- {
- template<>
- inline const wchar_t*
- boolean<wchar_t> ()
- {
- return L"boolean";
- }
-
- template<>
- inline const wchar_t*
- byte<wchar_t> ()
- {
- return L"byte";
- }
-
- template<>
- inline const wchar_t*
- unsigned_byte<wchar_t> ()
- {
- return L"unsignedByte";
- }
-
- template<>
- inline const wchar_t*
- short_<wchar_t> ()
- {
- return L"short";
- }
-
- template<>
- inline const wchar_t*
- unsigned_short<wchar_t> ()
- {
- return L"unsignedShort";
- }
-
- template<>
- inline const wchar_t*
- int_<wchar_t> ()
- {
- return L"int";
- }
-
- template<>
- inline const wchar_t*
- unsigned_int<wchar_t> ()
- {
- return L"unsignedInt";
- }
-
- template<>
- inline const wchar_t*
- long_<wchar_t> ()
- {
- return L"long";
- }
-
- template<>
- inline const wchar_t*
- unsigned_long<wchar_t> ()
- {
- return L"unsignedLong";
- }
-
- template<>
- inline const wchar_t*
- integer<wchar_t> ()
- {
- return L"integer";
- }
-
- template<>
- inline const wchar_t*
- negative_integer<wchar_t> ()
- {
- return L"negativeInteger";
- }
-
- template<>
- inline const wchar_t*
- non_positive_integer<wchar_t> ()
- {
- return L"nonPositiveInteger";
- }
-
- template<>
- inline const wchar_t*
- non_negative_integer<wchar_t> ()
- {
- return L"nonNegativeInteger";
- }
-
- template<>
- inline const wchar_t*
- positive_integer<wchar_t> ()
- {
- return L"positiveInteger";
- }
-
- template<>
- inline const wchar_t*
- float_<wchar_t> ()
- {
- return L"float";
- }
-
- template<>
- inline const wchar_t*
- double_<wchar_t> ()
- {
- return L"double";
- }
-
- template<>
- inline const wchar_t*
- decimal<wchar_t> ()
- {
- return L"decimal";
- }
-
- template<>
- inline const wchar_t*
- name<wchar_t> ()
- {
- return L"Name";
- }
-
- template<>
- inline const wchar_t*
- nmtoken<wchar_t> ()
- {
- return L"NMTOKEN";
- }
-
- template<>
- inline const wchar_t*
- nmtokens<wchar_t> ()
- {
- return L"NMTOKENS";
- }
-
- template<>
- inline const wchar_t*
- ncname<wchar_t> ()
- {
- return L"NCName";
- }
-
- template<>
- inline const wchar_t*
- id<wchar_t> ()
- {
- return L"ID";
- }
-
- template<>
- inline const wchar_t*
- idref<wchar_t> ()
- {
- return L"IDREF";
- }
-
- template<>
- inline const wchar_t*
- idrefs<wchar_t> ()
- {
- return L"IDREFS";
- }
-
- template<>
- inline const wchar_t*
- language<wchar_t> ()
- {
- return L"language";
- }
-
- template<>
- inline const wchar_t*
- qname<wchar_t> ()
- {
- return L"QName";
- }
-
- template<>
- inline const wchar_t*
- base64_binary<wchar_t> ()
- {
- return L"base64Binary";
- }
-
- template<>
- inline const wchar_t*
- hex_binary<wchar_t> ()
- {
- return L"hexBinary";
- }
-
- template<>
- inline const wchar_t*
- gday<wchar_t> ()
- {
- return L"gDay";
- }
-
- template<>
- inline const wchar_t*
- gmonth<wchar_t> ()
- {
- return L"gMonth";
- }
-
- template<>
- inline const wchar_t*
- gyear<wchar_t> ()
- {
- return L"gYear";
- }
-
- template<>
- inline const wchar_t*
- gmonth_day<wchar_t> ()
- {
- return L"gMonthDay";
- }
-
- template<>
- inline const wchar_t*
- gyear_month<wchar_t> ()
- {
- return L"gYearMonth";
- }
-
- template<>
- inline const wchar_t*
- date<wchar_t> ()
- {
- return L"date";
- }
-
- template<>
- inline const wchar_t*
- time<wchar_t> ()
- {
- return L"time";
- }
-
- template<>
- inline const wchar_t*
- date_time<wchar_t> ()
- {
- return L"dateTime";
- }
-
- template<>
- inline const wchar_t*
- duration<wchar_t> ()
- {
- return L"duration";
- }
-
-
- //
- //
- template<>
- inline const wchar_t*
- positive_inf<wchar_t> ()
- {
- return L"INF";
- }
-
- template<>
- inline const wchar_t*
- negative_inf<wchar_t> ()
- {
- return L"-INF";
- }
-
- template<>
- inline const wchar_t*
- nan<wchar_t> ()
- {
- return L"NaN";
- }
-
- //
- //
- template<>
- inline const wchar_t*
- true_<wchar_t> ()
- {
- return L"true";
- }
-
- template<>
- inline const wchar_t*
- false_<wchar_t> ()
- {
- return L"false";
- }
-
- template<>
- inline const wchar_t*
- one<wchar_t> ()
- {
- return L"1";
- }
-
- template<>
- inline const wchar_t*
- zero<wchar_t> ()
- {
- return L"0";
- }
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PIMPL_IXX_WCHAR
-#endif // XSD_CXX_PARSER_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx b/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx
deleted file mode 100644
index ad587c5..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx
+++ /dev/null
@@ -1,2757 +0,0 @@
-// file : xsd/cxx/parser/validating/xml-schema-pimpl.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <limits>
-#include <locale>
-
-#ifdef XSD_CXX11
-# include <utility> // std::move
-#endif
-
-#include <xsd/cxx/zc-istream.hxx>
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- // Note that most of the types implemented here cannot have
- // whitespaces in the value. As result we don't need to waste
- // time collapsing whitespaces. All we need to do is trim the
- // string representation which can be done without copying.
- //
-
- // Character table.
- //
- namespace bits
- {
- const unsigned char ncname_mask = 0x1;
- const unsigned char name_first_mask = 0x2;
- const unsigned char name_mask = 0x4;
-
- template <typename C>
- struct char_table
- {
- static C table[0x80];
- };
-
- template <typename C>
- C char_table<C>::table[0x80] =
- {
- 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xD0, 0x00, 0x00, 0xD0, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xD8, 0x48, 0x58, 0x48, 0x48, 0x48, 0x40, 0x58, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4D, 0x4D, 0x58,
- 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4E, 0x48, 0x50, 0x48, 0x58, 0x48,
- 0x48, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F,
- 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x48, 0x48, 0x40, 0x48, 0x4F,
- 0x48, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F,
- 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x48, 0x48, 0x48, 0x48, 0x48
- };
- }
-
- // any_type
- //
-
- template <typename C>
- void any_type_pimpl<C>::
- post_any_type ()
- {
- }
-
- // any_simple_type
- //
-
- template <typename C>
- void any_simple_type_pimpl<C>::
- post_any_simple_type ()
- {
- }
-
- // boolean
- //
-
- template <typename C>
- void boolean_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void boolean_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void boolean_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- if (str == bits::true_<C> () || str == bits::one<C> ())
- value_ = true;
- else if (str == bits::false_<C> () || str == bits::zero<C> ())
- value_ = false;
- else
- throw invalid_value<C> (bits::boolean<C> (), str);
- }
-
- template <typename C>
- bool boolean_pimpl<C>::
- post_boolean ()
- {
- return value_;
- }
-
- // byte
- //
-
- template <typename C>
- void byte_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void byte_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void byte_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- short t;
- zc_istream<C> is (str);
-
- if (is >> t && is.exhausted () && t >= -128 && t <= 127)
- value_ = static_cast<signed char> (t);
- else
- throw invalid_value<C> (bits::byte<C> (), str);
- }
-
- template <typename C>
- signed char byte_pimpl<C>::
- post_byte ()
- {
- return value_;
- }
-
- // unsigned_byte
- //
-
- template <typename C>
- void unsigned_byte_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_byte_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void unsigned_byte_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- unsigned short t;
- zc_istream<C> is (str);
-
- if (is >> t && is.exhausted () && t <= 255)
- value_ = static_cast<unsigned char> (t);
- else
- throw invalid_value<C> (bits::unsigned_byte<C> (), str);
- }
-
- template <typename C>
- unsigned char unsigned_byte_pimpl<C>::
- post_unsigned_byte ()
- {
- return value_;
- }
-
- // short
- //
-
- template <typename C>
- void short_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void short_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void short_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::short_<C> (), str);
- }
-
- template <typename C>
- short short_pimpl<C>::
- post_short ()
- {
- return value_;
- }
-
-
- // unsigned_short
- //
-
- template <typename C>
- void unsigned_short_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_short_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void unsigned_short_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::unsigned_short<C> (), str);
- }
-
- template <typename C>
- unsigned short unsigned_short_pimpl<C>::
- post_unsigned_short ()
- {
- return value_;
- }
-
- // int
- //
-
- template <typename C>
- void int_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void int_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void int_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::int_<C> (), str);
- }
-
- template <typename C>
- int int_pimpl<C>::
- post_int ()
- {
- return value_;
- }
-
-
- // unsigned_int
- //
-
- template <typename C>
- void unsigned_int_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_int_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void unsigned_int_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::unsigned_int<C> (), str);
- }
-
- template <typename C>
- unsigned int unsigned_int_pimpl<C>::
- post_unsigned_int ()
- {
- return value_;
- }
-
-
- // long
- //
- template <typename C>
- void long_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void long_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void long_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::long_<C> (), str);
- }
-
- template <typename C>
- long long long_pimpl<C>::
- post_long ()
- {
- return value_;
- }
-
- // unsigned_long
- //
- template <typename C>
- void unsigned_long_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_long_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void unsigned_long_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::unsigned_long<C> (), str);
- }
-
- template <typename C>
- unsigned long long unsigned_long_pimpl<C>::
- post_unsigned_long ()
- {
- return value_;
- }
-
-
- // integer
- //
- template <typename C>
- void integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void integer_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::integer<C> (), str);
- }
-
- template <typename C>
- long long integer_pimpl<C>::
- post_integer ()
- {
- return value_;
- }
-
- // negative_integer
- //
- template <typename C>
- void negative_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void negative_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void negative_integer_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted () && value_ < 0))
- throw invalid_value<C> (bits::negative_integer<C> (), str);
- }
-
- template <typename C>
- long long negative_integer_pimpl<C>::
- post_negative_integer ()
- {
- return value_;
- }
-
-
- // non_positive_integer
- //
- template <typename C>
- void non_positive_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void non_positive_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void non_positive_integer_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted () && value_ <= 0))
- throw invalid_value<C> (bits::non_positive_integer<C> (), str);
- }
-
- template <typename C>
- long long non_positive_integer_pimpl<C>::
- post_non_positive_integer ()
- {
- return value_;
- }
-
- // positive_integer
- //
- template <typename C>
- void positive_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void positive_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void positive_integer_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted () && value_ > 0))
- throw invalid_value<C> (bits::positive_integer<C> (), str);
- }
-
- template <typename C>
- unsigned long long positive_integer_pimpl<C>::
- post_positive_integer ()
- {
- return value_;
- }
-
-
- // non_negative_integer
- //
- template <typename C>
- void non_negative_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void non_negative_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void non_negative_integer_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
-
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::non_negative_integer<C> (), str);
- }
-
- template <typename C>
- unsigned long long non_negative_integer_pimpl<C>::
- post_non_negative_integer ()
- {
- return value_;
- }
-
-
- // float
- //
- template <typename C>
- void float_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void float_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void float_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- if (str == bits::positive_inf<C> ())
- value_ = std::numeric_limits<float>::infinity ();
- else if (str == bits::negative_inf<C> ())
- value_ = -std::numeric_limits<float>::infinity ();
- else if (str == bits::nan<C> ())
- value_ = std::numeric_limits<float>::quiet_NaN ();
- else
- {
- zc_istream<C> is (str);
- is.imbue (std::locale::classic ());
-
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::float_<C> (), str);
- }
- }
-
- template <typename C>
- float float_pimpl<C>::
- post_float ()
- {
- return value_;
- }
-
-
- // double
- //
- template <typename C>
- void double_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void double_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void double_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- if (str == bits::positive_inf<C> ())
- value_ = std::numeric_limits<double>::infinity ();
- else if (str == bits::negative_inf<C> ())
- value_ = -std::numeric_limits<double>::infinity ();
- else if (str == bits::nan<C> ())
- value_ = std::numeric_limits<double>::quiet_NaN ();
- else
- {
- zc_istream<C> is (str);
- is.imbue (std::locale::classic ());
-
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::double_<C> (), str);
- }
- }
-
- template <typename C>
- double double_pimpl<C>::
- post_double ()
- {
- return value_;
- }
-
- // decimal
- //
- template <typename C>
- void decimal_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void decimal_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- void decimal_pimpl<C>::
- _post ()
- {
- ro_string<C> str (str_);
- trim (str);
-
- zc_istream<C> is (str);
- is.imbue (std::locale::classic ());
-
- //@@ TODO: now we accept scientific notations and INF/NaN.
- //
- if (!(is >> value_ && is.exhausted ()))
- throw invalid_value<C> (bits::decimal<C> (), str);
- }
-
- template <typename C>
- double decimal_pimpl<C>::
- post_decimal ()
- {
- return value_;
- }
-
- // string
- //
- template <typename C>
- void string_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void string_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> string_pimpl<C>::
- post_string ()
- {
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // normalized_string
- //
- template <typename C>
- void normalized_string_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void normalized_string_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> normalized_string_pimpl<C>::
- post_normalized_string ()
- {
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (str_.size ());
-
- for (size_type i (0); i < size; ++i)
- {
- C& c = str_[i];
-
- if (c == C (0x0A) || c == C (0x0D) || c == C (0x09))
- c = C (0x20);
- }
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // token
- //
- template <typename C>
- void token_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void token_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> token_pimpl<C>::
- post_token ()
- {
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (str_.size ());
- size_type j (0);
-
- bool subs (false);
-
- for (size_type i (0); i < size; ++i)
- {
- C c = str_[i];
-
- if (c == C (0x20) || c == C (0x0A) ||
- c == C (0x0D) || c == C (0x09))
- {
- subs = true;
- }
- else
- {
- if (subs)
- {
- subs = false;
- str_[j++] = C (0x20);
- }
-
- str_[j++] = c;
- }
- }
-
- str_.resize (j);
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // name
- //
- template <typename C>
- void name_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void name_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void name_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- // For now we are only checking the US-ASCII characters.
- //
-
- bool ok (size != 0);
-
- if (ok)
- {
- unsigned int c (static_cast<unsigned int> (str_[0]));
-
- ok = c >= 0x80 ||
- (bits::char_table<unsigned char>::table[c] &
- bits::name_first_mask);
-
- if (ok)
- {
- for (size_type i (1); i < size; ++i)
- {
- c = static_cast<unsigned int> (str_[i]);
-
- if (c < 0x80 &&
- !(bits::char_table<unsigned char>::table[c] &
- bits::name_mask))
- {
- ok = false;
- break;
- }
- }
- }
- }
-
- if (!ok)
- throw invalid_value<C> (bits::name<C> (), tmp);
-
- str_.resize (size);
- }
-
- template <typename C>
- std::basic_string<C> name_pimpl<C>::
- post_name ()
- {
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // nmtoken
- //
- template <typename C>
- void nmtoken_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void nmtoken_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void nmtoken_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- // For now we are only checking the US-ASCII characters.
- //
-
- bool ok (size != 0);
-
- if (ok)
- {
- for (size_type i (0); i < size; ++i)
- {
- unsigned int c (static_cast<unsigned int> (str_[i]));
-
- if (c < 0x80 &&
- !(bits::char_table<unsigned char>::table[c] &
- bits::name_mask))
- {
- ok = false;
- break;
- }
- }
- }
-
- if (!ok)
- throw invalid_value<C> (bits::nmtoken<C> (), tmp);
-
- str_.resize (size);
- }
-
- template <typename C>
- std::basic_string<C> nmtoken_pimpl<C>::
- post_nmtoken ()
- {
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // nmtokens
- //
- template <typename C>
- void nmtokens_pimpl<C>::
- _pre ()
- {
- nmtokens_pskel<C>::_pre ();
- seq_.clear ();
- }
-
- template <typename C>
- void nmtokens_pimpl<C>::
- _post ()
- {
- nmtokens_pskel<C>::_post ();
-
- // Should have at least one element.
- //
- if (seq_.size () < 1)
- {
- ro_string<C> tmp;
- throw invalid_value<C> (bits::nmtokens<C> (), tmp);
- }
- }
-
- template <typename C>
- string_sequence<C> nmtokens_pimpl<C>::
- post_nmtokens ()
- {
- string_sequence<C> r;
- r.swap (seq_);
- return r;
- }
-
- template <typename C>
- void nmtokens_pimpl<C>::
- _xsd_parse_item (const ro_string<C>& s)
- {
- parser_.pre ();
- parser_._pre ();
- parser_._characters (s);
- parser_._post ();
- seq_.push_back (parser_.post_nmtoken ());
- }
-
- // ncname
- //
- namespace bits
- {
- template <typename C>
- bool
- valid_ncname (const C* s, typename ro_string<C>::size_type size)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- // For now we are only checking the US-ASCII characters.
- //
- bool ok (size != 0);
-
- if (ok)
- {
- unsigned int c (static_cast<unsigned int> (s[0]));
-
- ok = c >= 0x80 ||
- ((bits::char_table<unsigned char>::table[c] &
- bits::name_first_mask) && c != C (':'));
-
- if (ok)
- {
- for (size_type i (1); i < size; ++i)
- {
- c = static_cast<unsigned int> (s[i]);
-
- if (c < 0x80 &&
- !(bits::char_table<unsigned char>::table[c] &
- bits::ncname_mask))
- {
- ok = false;
- break;
- }
- }
- }
- }
-
- return ok;
- }
- }
-
- template <typename C>
- void ncname_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void ncname_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void ncname_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- if (!bits::valid_ncname (tmp.data (), size))
- throw invalid_value<C> (bits::ncname<C> (), tmp);
-
- str_.resize (size);
- }
-
- template <typename C>
- std::basic_string<C> ncname_pimpl<C>::
- post_ncname ()
- {
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // id
- //
- template <typename C>
- void id_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void id_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void id_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- if (!bits::valid_ncname (tmp.data (), size))
- throw invalid_value<C> (bits::id<C> (), tmp);
-
- str_.resize (size);
- }
-
- template <typename C>
- std::basic_string<C> id_pimpl<C>::
- post_id ()
- {
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // idref
- //
- template <typename C>
- void idref_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void idref_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void idref_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- if (!bits::valid_ncname (tmp.data (), size))
- throw invalid_value<C> (bits::idref<C> (), tmp);
-
- str_.resize (size);
- }
-
- template <typename C>
- std::basic_string<C> idref_pimpl<C>::
- post_idref ()
- {
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // idrefs
- //
- template <typename C>
- void idrefs_pimpl<C>::
- _pre ()
- {
- idrefs_pskel<C>::_pre ();
- seq_.clear ();
- }
-
- template <typename C>
- void idrefs_pimpl<C>::
- _post ()
- {
- idrefs_pskel<C>::_post ();
-
- // Should have at least one element.
- //
- if (seq_.size () < 1)
- {
- ro_string<C> tmp;
- throw invalid_value<C> (bits::idrefs<C> (), tmp);
- }
- }
-
- template <typename C>
- string_sequence<C> idrefs_pimpl<C>::
- post_idrefs ()
- {
- string_sequence<C> r;
- r.swap (seq_);
- return r;
- }
-
- template <typename C>
- void idrefs_pimpl<C>::
- _xsd_parse_item (const ro_string<C>& s)
- {
- parser_.pre ();
- parser_._pre ();
- parser_._characters (s);
- parser_._post ();
- seq_.push_back (parser_.post_idref ());
- }
-
- // language
- //
- template <typename C>
- void language_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void language_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void language_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- // language := ALPHA{1,8} *(-(ALPHA | DIGIT){1,8})
- //
- bool ok (true);
-
- for (size_type tag (0), i (0); ; ++tag)
- {
- size_type n (0);
-
- for (; i < size && n < 8; ++n, ++i)
- {
- C c (tmp[i]);
-
- if (!((c >= C ('a') && c <= C ('z')) ||
- (c >= C ('A') && c <= C ('Z')) ||
- (tag != 0 && c >= C ('0') && c <= C ('9'))))
- break;
- }
-
- if (n == 0)
- {
- ok = false;
- break;
- }
-
- if (i == size)
- break;
-
- if (tmp[i++] != C ('-'))
- {
- ok = false;
- break;
- }
- }
-
- if (!ok)
- throw invalid_value<C> (bits::language<C> (), tmp);
-
- str_.resize (size);
- }
-
- template <typename C>
- std::basic_string<C> language_pimpl<C>::
- post_language ()
- {
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // uri
- //
- template <typename C>
- void uri_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void uri_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> uri_pimpl<C>::
- post_uri ()
- {
- // According to Datatypes 3.2.17 and RFC2396 pretty much anything
- // can be a URI and conforming processors do not need to figure
- // out and verify particular URI schemes.
- //
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // qname
- //
- template <typename C>
- void qname_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void qname_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void qname_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- size_type pos (tmp.find (C (':')));
-
- const C* s (tmp.data ());
-
- if (pos != ro_string<C>::npos)
- {
- if (!bits::valid_ncname (s, pos) ||
- !bits::valid_ncname (s + pos + 1, size - pos - 1))
- throw invalid_value<C> (bits::qname<C> (), tmp);
-
- prefix_.assign (s, pos);
- name_.assign (s + pos + 1, size - pos - 1);
- }
- else
- {
- if (!bits::valid_ncname (s, size))
- throw invalid_value<C> (bits::qname<C> (), tmp);
-
- prefix_.clear ();
- str_.resize (size);
- name_.swap (str_);
- }
- }
-
- template <typename C>
- qname<C> qname_pimpl<C>::
- post_qname ()
- {
- return prefix_.empty ()
- ? qname<C> (name_)
- : qname<C> (prefix_, name_);
- }
-
- // base64_binary
- //
- template <typename C>
- void base64_binary_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void base64_binary_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- namespace bits
- {
- template <typename C>
- inline unsigned char
- base64_decode (C c)
- {
- unsigned char r (0xFF);
-
- if (c >= C('A') && c <= C ('Z'))
- r = static_cast<unsigned char> (c - C ('A'));
- else if (c >= C('a') && c <= C ('z'))
- r = static_cast<unsigned char> (c - C ('a') + 26);
- else if (c >= C('0') && c <= C ('9'))
- r = static_cast<unsigned char> (c - C ('0') + 52);
- else if (c == C ('+'))
- r = 62;
- else if (c == C ('/'))
- r = 63;
-
- return r;
- }
- }
-
- template <typename C>
- void base64_binary_pimpl<C>::
- _post ()
- {
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (str_.size ());
- const C* src (str_.c_str ());
-
- // Remove all whitespaces.
- //
- {
- size_type j (0);
-
- bool subs (false);
-
- for (size_type i (0); i < size; ++i)
- {
- C c = str_[i];
-
- if (c == C (0x20) || c == C (0x0A) ||
- c == C (0x0D) || c == C (0x09))
- {
- subs = true;
- }
- else
- {
- if (subs)
- subs = false;
-
- str_[j++] = c;
- }
- }
-
- size = j;
- str_.resize (size);
- }
-
- // Our length should be a multiple of four.
- //
- if (size == 0 || size % 4 != 0)
- throw invalid_value<C> (bits::base64_binary<C> (), str_);
-
- size_type quad_count (size / 4);
- size_type capacity (quad_count * 3 + 1);
-
- buf_.reset (new buffer (capacity, capacity));
- char* dst (buf_->data ());
-
- size_type si (0), di (0); // Source and destination indexes.
-
- // Process all quads except the last one.
- //
- unsigned char b1, b2, b3, b4;
-
- for (size_type q (0); q < quad_count - 1; ++q)
- {
- b1 = bits::base64_decode (src[si++]);
- b2 = bits::base64_decode (src[si++]);
- b3 = bits::base64_decode (src[si++]);
- b4 = bits::base64_decode (src[si++]);
-
- if (b1 == 0xFF || b2 == 0xFF || b3 == 0xFF || b4 == 0xFF)
- throw invalid_value<C> (bits::base64_binary<C> (), str_);
-
- dst[di++] = (b1 << 2) | (b2 >> 4);
- dst[di++] = (b2 << 4) | (b3 >> 2);
- dst[di++] = (b3 << 6) | b4;
- }
-
- // Process the last quad. The first two octets are always there.
- //
- b1 = bits::base64_decode (src[si++]);
- b2 = bits::base64_decode (src[si++]);
-
- if (b1 == 0xFF || b2 == 0xFF)
- throw invalid_value<C> (bits::base64_binary<C> (), str_);
-
- C e3 (src[si++]);
- C e4 (src[si++]);
-
- if (e4 == C ('='))
- {
- if (e3 == C ('='))
- {
- // Two pads. Last 4 bits in b2 should be zero.
- //
- if ((b2 & 0x0F) != 0)
- throw invalid_value<C> (bits::base64_binary<C> (), str_);
-
- dst[di++] = (b1 << 2) | (b2 >> 4);
- }
- else
- {
- // One pad. Last 2 bits in b3 should be zero.
- //
- b3 = bits::base64_decode (e3);
-
- if (b3 == 0xFF || (b3 & 0x03) != 0)
- throw invalid_value<C> (bits::base64_binary<C> (), str_);
-
- dst[di++] = (b1 << 2) | (b2 >> 4);
- dst[di++] = (b2 << 4) | (b3 >> 2);
- }
- }
- else
- {
- // No pads.
- //
- b3 = bits::base64_decode (e3);
- b4 = bits::base64_decode (e4);
-
- if (b3 == 0xFF || b4 == 0xFF)
- throw invalid_value<C> (bits::base64_binary<C> (), str_);
-
- dst[di++] = (b1 << 2) | (b2 >> 4);
- dst[di++] = (b2 << 4) | (b3 >> 2);
- dst[di++] = (b3 << 6) | b4;
- }
-
- // Set the real size.
- //
- buf_->size (di);
- }
-
- template <typename C>
- XSD_AUTO_PTR<buffer> base64_binary_pimpl<C>::
- post_base64_binary ()
- {
-#ifdef XSD_CXX11
- return std::move (buf_);
-#else
- return buf_;
-#endif
- }
-
- // hex_binary
- //
- template <typename C>
- void hex_binary_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void hex_binary_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- namespace bits
- {
- template <typename C>
- inline unsigned char
- hex_decode (C c)
- {
- unsigned char r (0xFF);
-
- if (c >= C('0') && c <= C ('9'))
- r = static_cast<unsigned char> (c - C ('0'));
- else if (c >= C ('A') && c <= C ('F'))
- r = static_cast<unsigned char> (10 + (c - C ('A')));
- else if (c >= C ('a') && c <= C ('f'))
- r = static_cast<unsigned char> (10 + (c - C ('a')));
-
- return r;
- }
- }
-
- template <typename C>
- void hex_binary_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- if (size % 2 != 0)
- throw invalid_value<C> (bits::hex_binary<C> (), tmp);
-
- buffer::size_t n (size / 2);
- buf_.reset (new buffer (n));
-
- if (n != 0)
- {
- const C* src (tmp.data ());
- char* dst (buf_->data ());
- buffer::size_t i (0);
-
- for (; i < n; ++i)
- {
- unsigned char h (bits::hex_decode (src[2 * i]));
- unsigned char l (bits::hex_decode (src[2 * i + 1]));
-
- if (h == 0xFF || l == 0xFF)
- break;
-
- dst[i] = (h << 4) | l;
- }
-
- if (i != n)
- throw invalid_value<C> (bits::hex_binary<C> (), tmp);
- }
- }
-
- template <typename C>
- XSD_AUTO_PTR<buffer> hex_binary_pimpl<C>::
- post_hex_binary ()
- {
-#ifdef XSD_CXX11
- return std::move (buf_);
-#else
- return buf_;
-#endif
- }
-
- // time_zone
- //
- namespace bits
- {
- // Datatypes 3.2.7.3. Return false if time zone is invalid.
- //
- template <typename C>
- bool
- parse_tz (const C* s,
- typename std::basic_string<C>::size_type n,
- short& h, short& m)
- {
- // time_zone := Z|(+|-)HH:MM
- //
- if (n == 0)
- {
- return false;
- }
- else if (s[0] == 'Z')
- {
- if (n != 1)
- return false;
-
- h = 0;
- m = 0;
- }
- else
- {
- if (n != 6 || (s[0] != '-' && s[0] != '+') || s[3] != ':')
- return false;
-
- // Parse hours.
- //
- char d1 = s[1];
- char d2 = s[2];
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- return false;
-
- h = 10 * (d1 - '0') + (d2 - '0');
-
- if (h > 14)
- return false;
-
- // Parse minutes.
- //
- d1 = s[4];
- d2 = s[5];
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- return false;
-
- m = 10 * (d1 - '0') + (d2 - '0');
-
- if (m > 59 || (h == 14 && m != 0))
- return false;
-
- if (s[0] == '-')
- {
- h = -h;
- m = -m;
- }
- }
-
- return true;
- }
- }
-
- // gday
- //
- template <typename C>
- void gday_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gday_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void gday_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- // gday := ---DD[Z|(+|-)HH:MM]
- //
- if (size < 5 ||
- s[0] != C ('-') || s[1] != C ('-') || s[2] != C ('-'))
- throw invalid_value<C> (bits::gday<C> (), tmp);
-
- C d1 (s[3]), d2 (s[4]);
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::gday<C> (), tmp);
-
- day_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (day_ < 1 || day_ > 31)
- throw invalid_value<C> (bits::gday<C> (), tmp);
-
- if (size > 5)
- {
- if (!bits::parse_tz (s + 5, size - 5, zh_, zm_))
- throw invalid_value<C> (bits::gday<C> (), tmp);
-
- z_ = true;
- }
- else
- z_ = false;
- }
-
- template <typename C>
- gday gday_pimpl<C>::
- post_gday ()
- {
- return z_ ? gday (day_, zh_, zm_) : gday (day_);
- }
-
- // gmonth
- //
- template <typename C>
- void gmonth_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gmonth_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void gmonth_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- // gmonth := --MM[Z|(+|-)HH:MM]
- //
- if (size < 4 || s[0] != C ('-') || s[1] != C ('-'))
- throw invalid_value<C> (bits::gmonth<C> (), tmp);
-
- C d1 (s[2]), d2 (s[3]);
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::gmonth<C> (), tmp);
-
- month_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (month_ < 1 || month_ > 12)
- throw invalid_value<C> (bits::gmonth<C> (), tmp);
-
- if (size > 4)
- {
- if (!bits::parse_tz (s + 4, size - 4, zh_, zm_))
- throw invalid_value<C> (bits::gmonth<C> (), tmp);
-
- z_ = true;
- }
- else
- z_ = false;
- }
-
- template <typename C>
- gmonth gmonth_pimpl<C>::
- post_gmonth ()
- {
- return z_ ? gmonth (month_, zh_, zm_) : gmonth (month_);
- }
-
- // gyear
- //
- template <typename C>
- void gyear_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gyear_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void gyear_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- // gyear := [-]CCYY[N]*[Z|(+|-)HH:MM]
- //
-
- if (size < 4 || (s[0] == C ('-') && size < 5))
- throw invalid_value<C> (bits::gyear<C> (), tmp);
-
- // Find the end of the year token.
- //
- size_type pos (s[0] == C ('-') ? 5 : 4);
- for (; pos < size; ++pos)
- {
- C c (s[pos]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> is (year_fragment);
-
- if (!(is >> year_ && is.exhausted () && year_ != 0))
- throw invalid_value<C> (bits::gyear<C> (), tmp);
-
- if (pos < size)
- {
- if (!bits::parse_tz (s + pos, size - pos, zh_, zm_))
- throw invalid_value<C> (bits::gyear<C> (), tmp);
-
- z_ = true;
- }
- else
- z_ = false;
- }
-
- template <typename C>
- gyear gyear_pimpl<C>::
- post_gyear ()
- {
- return z_ ? gyear (year_, zh_, zm_) : gyear (year_);
- }
-
- // gmonth_day
- //
- template <typename C>
- void gmonth_day_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gmonth_day_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void gmonth_day_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- // gmonth_day := --MM-DD[Z|(+|-)HH:MM]
- //
- if (size < 7 ||
- s[0] != C ('-') || s[1] != C ('-') || s[4] != C ('-'))
- throw invalid_value<C> (bits::gmonth_day<C> (), tmp);
-
- // month
- //
- C d1 (s[2]), d2 (s[3]);
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::gmonth_day<C> (), tmp);
-
- month_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (month_ < 1 || month_ > 12)
- throw invalid_value<C> (bits::gmonth_day<C> (), tmp);
-
- // day
- //
- d1 = s[5];
- d2 = s[6];
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::gmonth_day<C> (), tmp);
-
- day_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (day_ < 1 || day_ > 31)
- throw invalid_value<C> (bits::gmonth_day<C> (), tmp);
-
- // zone
- //
- if (size > 7)
- {
- if (!bits::parse_tz (s + 7, size - 7, zh_, zm_))
- throw invalid_value<C> (bits::gmonth_day<C> (), tmp);
-
- z_ = true;
- }
- else
- z_ = false;
- }
-
- template <typename C>
- gmonth_day gmonth_day_pimpl<C>::
- post_gmonth_day ()
- {
- return z_
- ? gmonth_day (month_, day_, zh_, zm_)
- : gmonth_day (month_, day_);
- }
-
- // gyear_month
- //
- template <typename C>
- void gyear_month_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gyear_month_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void gyear_month_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- // gyear_month := [-]CCYY[N]*-MM[Z|(+|-)HH:MM]
- //
-
- if (size < 7 || (s[0] == C ('-') && size < 8))
- throw invalid_value<C> (bits::gyear_month<C> (), tmp);
-
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), s[0] == C ('-') ? 5 : 4));
-
- if (pos == ro_string<C>::npos || (size - pos - 1) < 2)
- throw invalid_value<C> (bits::gyear_month<C> (), tmp);
-
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> yis (year_fragment);
-
- if (!(yis >> year_ && yis.exhausted () && year_ != 0))
- throw invalid_value<C> (bits::gyear_month<C> (), tmp);
-
- // month
- //
- C d1 (s[pos + 1]), d2 (s[pos + 2]);
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::gyear_month<C> (), tmp);
-
- month_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (month_ < 1 || month_ > 12)
- throw invalid_value<C> (bits::gyear_month<C> (), tmp);
-
- // zone
- //
- pos += 3;
-
- if (pos < size)
- {
- if (!bits::parse_tz (s + pos, size - pos, zh_, zm_))
- throw invalid_value<C> (bits::gyear_month<C> (), tmp);
-
- z_ = true;
- }
- else
- z_ = false;
- }
-
- template <typename C>
- gyear_month gyear_month_pimpl<C>::
- post_gyear_month ()
- {
- return z_
- ? gyear_month (year_, month_, zh_, zm_)
- : gyear_month (year_, month_);
- }
-
- // date
- //
- template <typename C>
- void date_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void date_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void date_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- // date := [-]CCYY[N]*-MM-DD[Z|(+|-)HH:MM]
- //
-
- if (size < 10 || (s[0] == C ('-') && size < 11))
- throw invalid_value<C> (bits::date<C> (), tmp);
-
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), s[0] == C ('-') ? 5 : 4));
-
- if (pos == ro_string<C>::npos
- || (size - pos - 1) < 5
- || s[pos + 3] != C ('-'))
- throw invalid_value<C> (bits::date<C> (), tmp);
-
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> yis (year_fragment);
-
- if (!(yis >> year_ && yis.exhausted () && year_ != 0))
- throw invalid_value<C> (bits::date<C> (), tmp);
-
- // month
- //
- C d1 (s[pos + 1]), d2 (s[pos + 2]);
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::date<C> (), tmp);
-
- month_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (month_ < 1 || month_ > 12)
- throw invalid_value<C> (bits::date<C> (), tmp);
-
- // day
- //
- d1 = s[pos + 4];
- d2 = s[pos + 5];
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::date<C> (), tmp);
-
- day_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (day_ < 1 || day_ > 31)
- throw invalid_value<C> (bits::date<C> (), tmp);
-
- // zone
- //
- pos += 6;
-
- if (pos < size)
- {
- if (!bits::parse_tz (s + pos, size - pos, zh_, zm_))
- throw invalid_value<C> (bits::date<C> (), tmp);
-
- z_ = true;
- }
- else
- z_ = false;
- }
-
- template <typename C>
- date date_pimpl<C>::
- post_date ()
- {
- return z_
- ? date (year_, month_, day_, zh_, zm_)
- : date (year_, month_, day_);
- }
-
- // time
- //
- template <typename C>
- void time_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void time_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void time_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- // time := HH:MM:SS[.S+][Z|(+|-)HH:MM]
- //
-
- if (size < 8 || s[2] != C (':') || s[5] != C (':'))
- throw invalid_value<C> (bits::time<C> (), tmp);
-
- // hours
- //
- C d1 (s[0]), d2 (s[1]);
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::time<C> (), tmp);
-
- hours_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (hours_ > 24)
- throw invalid_value<C> (bits::time<C> (), tmp);
-
- // minutes
- //
- d1 = s[3];
- d2 = s[4];
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::time<C> (), tmp);
-
- minutes_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (minutes_ > 59)
- throw invalid_value<C> (bits::time<C> (), tmp);
-
- // Find the end of the seconds fragment.
- //
- size_type pos (8);
- for (; pos < size; ++pos)
- {
- C c (s[pos]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- // At least one digit should follow the fraction point.
- //
- if ((pos - 6) == 3)
- throw invalid_value<C> (bits::time<C> (), tmp);
-
- ro_string<C> seconds_fragment (s + 6, pos - 6);
- zc_istream<C> sis (seconds_fragment);
-
- if (!(sis >> seconds_ && sis.exhausted () && seconds_ < 60.0))
- throw invalid_value<C> (bits::time<C> (), tmp);
-
- if (hours_ == 24 && (minutes_ != 0 || seconds_ != 0.0))
- throw invalid_value<C> (bits::time<C> (), tmp);
-
- // zone
- //
- if (pos < size)
- {
- if (!bits::parse_tz (s + pos, size - pos, zh_, zm_))
- throw invalid_value<C> (bits::time<C> (), tmp);
-
- z_ = true;
- }
- else
- z_ = false;
- }
-
- template <typename C>
- time time_pimpl<C>::
- post_time ()
- {
- return z_
- ? time (hours_, minutes_, seconds_, zh_, zm_)
- : time (hours_, minutes_, seconds_);
- }
-
-
- // date_time
- //
- template <typename C>
- void date_time_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void date_time_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- void date_time_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- // date_time := [-]CCYY[N]*-MM-DDTHH:MM:SS[.S+][Z|(+|-)HH:MM]
- //
-
- if (size < 19 || (s[0] == C ('-') && size < 20))
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), s[0] == C ('-') ? 5 : 4));
-
- if (pos == ro_string<C>::npos || (size - pos - 1) < 14
- || s[pos + 3] != C ('-') || s[pos + 6] != C ('T')
- || s[pos + 9] != C (':') || s[pos + 12] != C (':'))
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- // year
- //
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> yis (year_fragment);
-
- if (!(yis >> year_ && yis.exhausted () && year_ != 0))
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- // month
- //
- C d1 (s[pos + 1]), d2 (s[pos + 2]);
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- month_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (month_ < 1 || month_ > 12)
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- // day
- //
- d1 = s[pos + 4];
- d2 = s[pos + 5];
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- day_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (day_ < 1 || day_ > 31)
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- pos += 7; // Point to the first H.
-
- // hours
- //
- d1 = s[pos];
- d2 = s[pos + 1];
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- hours_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (hours_ > 24)
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- // minutes
- //
- d1 = s[pos + 3];
- d2 = s[pos + 4];
-
- if (d1 < '0' || d1 > '9' || d2 < '0' || d2 > '9')
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- minutes_ = 10 * (d1 - '0') + (d2 - '0');
-
- if (minutes_ > 59)
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- // Find the end of the seconds fragment.
- //
- pos += 6; // Point to the first S.
-
- size_type sec_end (pos + 2);
- for (; sec_end < size; ++sec_end)
- {
- C c (s[sec_end]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- // At least one digit should should follow the fraction point.
- //
- if ((sec_end - pos) == 3)
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- ro_string<C> seconds_fragment (s + pos, sec_end - pos);
- zc_istream<C> sis (seconds_fragment);
-
- if (!(sis >> seconds_ && sis.exhausted () && seconds_ < 60.0))
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- if (hours_ == 24 && (minutes_ != 0 || seconds_ != 0.0))
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- // zone
- //
- if (sec_end < size)
- {
- if (!bits::parse_tz (s + sec_end, size - sec_end, zh_, zm_))
- throw invalid_value<C> (bits::date_time<C> (), tmp);
-
- z_ = true;
- }
- else
- z_ = false;
- }
-
- template <typename C>
- date_time date_time_pimpl<C>::
- post_date_time ()
- {
- return z_
- ? date_time (year_, month_, day_, hours_, minutes_, seconds_,
- zh_, zm_)
- : date_time (year_, month_, day_, hours_, minutes_, seconds_);
- }
-
- // duration
- //
- template <typename C>
- void duration_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void duration_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- namespace bits
- {
- template <typename C>
- inline typename ro_string<C>::size_type
- duration_delim (const C* s,
- typename ro_string<C>::size_type pos,
- typename ro_string<C>::size_type size)
- {
- const C* p (s + pos);
- for (; p < (s + size); ++p)
- {
- if (*p == C ('Y') || *p == C ('D') || *p == C ('M') ||
- *p == C ('H') || *p == C ('M') || *p == C ('S') ||
- *p == C ('T'))
- break;
- }
-
- return p - s;
- }
- }
-
- template <typename C>
- void duration_pimpl<C>::
- _post ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- negative_ = false;
- years_ = 0;
- months_ = 0;
- days_ = 0;
- hours_ = 0;
- minutes_ = 0;
- seconds_ = 0.0;
-
- // duration := [-]P[nY][nM][nD][TnHnMn[.n+]S]
- //
- const C* s (tmp.data ());
-
- if (size < 3 || (s[0] == C ('-') && size < 4))
- throw invalid_value<C> (bits::duration<C> (), tmp);
-
- size_type pos (0);
-
- if (s[0] == C ('-'))
- {
- negative_ = true;
- pos++;
- }
-
- if (s[pos++] != C ('P'))
- throw invalid_value<C> (bits::duration<C> (), tmp);
-
- size_type del (bits::duration_delim (s, pos, size));
-
- // Duration should contain at least one component.
- //
- if (del == size)
- throw invalid_value<C> (bits::duration<C> (), tmp);
-
- if (s[del] == C ('Y'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
-
- if (!(is >> years_ && is.exhausted ()))
- throw invalid_value<C> (bits::duration<C> (), tmp);
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('M'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
-
- if (!(is >> months_ && is.exhausted ()))
- throw invalid_value<C> (bits::duration<C> (), tmp);
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('D'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
-
- if (!(is >> days_ && is.exhausted ()))
- throw invalid_value<C> (bits::duration<C> (), tmp);
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('T'))
- {
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
-
- // At least one time component should be present.
- //
- if (del == size)
- throw invalid_value<C> (bits::duration<C> (), tmp);
-
- if (s[del] == C ('H'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
-
- if (!(is >> hours_ && is.exhausted ()))
- throw invalid_value<C> (bits::duration<C> (), tmp);
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('M'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
-
- if (!(is >> minutes_ && is.exhausted ()))
- throw invalid_value<C> (bits::duration<C> (), tmp);
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('S'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
-
- if (!(is >> seconds_ && is.exhausted () && seconds_ >= 0.0))
- throw invalid_value<C> (bits::duration<C> (), tmp);
-
- pos = del + 1;
- }
- }
-
- // Something did not match or appeared in the wrong order.
- //
- if (pos != size)
- throw invalid_value<C> (bits::duration<C> (), tmp);
- }
-
- template <typename C>
- duration duration_pimpl<C>::
- post_duration ()
- {
- return duration (
- negative_, years_, months_, days_, hours_, minutes_, seconds_);
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.hxx b/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.hxx
deleted file mode 100644
index ffc7de3..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.hxx
+++ /dev/null
@@ -1,648 +0,0 @@
-// file : xsd/cxx/parser/validating/xml-schema-pskel.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PSKEL_HXX
-#define XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PSKEL_HXX
-
-#include <string>
-#include <memory> // std::auto_ptr/unique_ptr
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/parser/xml-schema.hxx>
-#include <xsd/cxx/parser/validating/parser.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- // anyType and anySimpleType. All events are routed to the
- // _any_* callbacks.
- //
- template <typename C>
- struct any_type_pskel: complex_content<C>
- {
- virtual bool
- _start_element_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*);
-
- virtual bool
- _end_element_impl (const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _attribute_impl_phase_two (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _characters_impl (const ro_string<C>&);
-
- virtual void
- post_any_type () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct any_simple_type_pskel: simple_content<C>
- {
- virtual bool
- _characters_impl (const ro_string<C>&);
-
- virtual void
- post_any_simple_type () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Boolean.
- //
- template <typename C>
- struct boolean_pskel: simple_content<C>
- {
- virtual bool
- post_boolean () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 8-bit
- //
- template <typename C>
- struct byte_pskel: simple_content<C>
- {
- virtual signed char
- post_byte () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_byte_pskel: simple_content<C>
- {
- virtual unsigned char
- post_unsigned_byte () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 16-bit
- //
- template <typename C>
- struct short_pskel: simple_content<C>
- {
- virtual short
- post_short () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_short_pskel: simple_content<C>
- {
- virtual unsigned short
- post_unsigned_short () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 32-bit
- //
- template <typename C>
- struct int_pskel: simple_content<C>
- {
- virtual int
- post_int () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_int_pskel: simple_content<C>
- {
- virtual unsigned int
- post_unsigned_int () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 64-bit
- //
- template <typename C>
- struct long_pskel: simple_content<C>
- {
- virtual long long
- post_long () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_long_pskel: simple_content<C>
- {
- virtual unsigned long long
- post_unsigned_long () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Arbitrary-length integers.
- //
- template <typename C>
- struct integer_pskel: simple_content<C>
- {
- virtual long long
- post_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct negative_integer_pskel: simple_content<C>
- {
- virtual long long
- post_negative_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct non_positive_integer_pskel: simple_content<C>
- {
- virtual long long
- post_non_positive_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct positive_integer_pskel: simple_content<C>
- {
- virtual unsigned long long
- post_positive_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct non_negative_integer_pskel: simple_content<C>
- {
- virtual unsigned long long
- post_non_negative_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Floats.
- //
- template <typename C>
- struct float_pskel: simple_content<C>
- {
- virtual float
- post_float () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct double_pskel: simple_content<C>
- {
- virtual double
- post_double () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct decimal_pskel: simple_content<C>
- {
- virtual double
- post_decimal () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Strings.
- //
- template <typename C>
- struct string_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_string () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct normalized_string_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_normalized_string () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct token_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_token () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct name_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_name () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct nmtoken_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_nmtoken () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct nmtokens_pskel: list_base<C>
- {
- virtual string_sequence<C>
- post_nmtokens () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct ncname_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_ncname () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct id_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_id () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct idref_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_idref () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct idrefs_pskel: list_base<C>
- {
- virtual string_sequence<C>
- post_idrefs () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // Language.
- //
- template <typename C>
- struct language_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_language () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // URI.
- //
- template <typename C>
- struct uri_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_uri () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // QName.
- //
- template <typename C>
- struct qname_pskel: simple_content<C>
- {
- virtual qname<C>
- post_qname () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // Base64 and hex binaries.
- //
- template <typename C>
- struct base64_binary_pskel: simple_content<C>
- {
- virtual XSD_AUTO_PTR<buffer>
- post_base64_binary () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct hex_binary_pskel: simple_content<C>
- {
- virtual XSD_AUTO_PTR<buffer>
- post_hex_binary () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // Time and date types.
- //
- template <typename C>
- struct gday_pskel: simple_content<C>
- {
- virtual gday
- post_gday () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gmonth_pskel: simple_content<C>
- {
- virtual gmonth
- post_gmonth () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gyear_pskel: simple_content<C>
- {
- virtual gyear
- post_gyear () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gmonth_day_pskel: simple_content<C>
- {
- virtual gmonth_day
- post_gmonth_day () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gyear_month_pskel: simple_content<C>
- {
- virtual gyear_month
- post_gyear_month () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct date_pskel: simple_content<C>
- {
- virtual date
- post_date () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct time_pskel: simple_content<C>
- {
- virtual time
- post_time () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct date_time_pskel: simple_content<C>
- {
- virtual date_time
- post_date_time () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct duration_pskel: simple_content<C>
- {
- virtual duration
- post_duration () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/validating/xml-schema-pskel.txx>
-
-#endif // XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PSKEL_HXX
-
-#include <xsd/cxx/parser/validating/xml-schema-pskel.ixx>
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.ixx b/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.ixx
deleted file mode 100644
index b6da227..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.ixx
+++ /dev/null
@@ -1,1248 +0,0 @@
-// file : xsd/cxx/parser/validating/xml-schema-pskel.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR)
-
-#ifndef XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PSKEL_IXX_CHAR
-#define XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PSKEL_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- template<>
- inline const char* any_type_pskel<char>::
- _static_type ()
- {
- return "anyType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* any_type_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* any_simple_type_pskel<char>::
- _static_type ()
- {
- return "anySimpleType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* any_simple_type_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* boolean_pskel<char>::
- _static_type ()
- {
- return "boolean http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* boolean_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* byte_pskel<char>::
- _static_type ()
- {
- return "byte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* byte_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_byte_pskel<char>::
- _static_type ()
- {
- return "unsignedByte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_byte_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* short_pskel<char>::
- _static_type ()
- {
- return "short http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* short_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_short_pskel<char>::
- _static_type ()
- {
- return "unsignedShort http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_short_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* int_pskel<char>::
- _static_type ()
- {
- return "int http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* int_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_int_pskel<char>::
- _static_type ()
- {
- return "unsignedInt http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_int_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* long_pskel<char>::
- _static_type ()
- {
- return "long http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* long_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_long_pskel<char>::
- _static_type ()
- {
- return "unsignedLong http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_long_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* integer_pskel<char>::
- _static_type ()
- {
- return "integer http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* negative_integer_pskel<char>::
- _static_type ()
- {
- return "negativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* negative_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* non_positive_integer_pskel<char>::
- _static_type ()
- {
- return "nonPositiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* non_positive_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* positive_integer_pskel<char>::
- _static_type ()
- {
- return "positiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* positive_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* non_negative_integer_pskel<char>::
- _static_type ()
- {
- return "nonNegativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* non_negative_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* float_pskel<char>::
- _static_type ()
- {
- return "float http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* float_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* double_pskel<char>::
- _static_type ()
- {
- return "double http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* double_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* decimal_pskel<char>::
- _static_type ()
- {
- return "decimal http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* decimal_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* string_pskel<char>::
- _static_type ()
- {
- return "string http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* string_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* normalized_string_pskel<char>::
- _static_type ()
- {
- return "normalizedString http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* normalized_string_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* token_pskel<char>::
- _static_type ()
- {
- return "token http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* token_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* name_pskel<char>::
- _static_type ()
- {
- return "Name http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* name_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* nmtoken_pskel<char>::
- _static_type ()
- {
- return "NMTOKEN http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* nmtoken_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* nmtokens_pskel<char>::
- _static_type ()
- {
- return "NMTOKENS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* nmtokens_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* ncname_pskel<char>::
- _static_type ()
- {
- return "NCName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* ncname_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* id_pskel<char>::
- _static_type ()
- {
- return "ID http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* id_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* idref_pskel<char>::
- _static_type ()
- {
- return "IDREF http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* idref_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* idrefs_pskel<char>::
- _static_type ()
- {
- return "IDREFS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* idrefs_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* language_pskel<char>::
- _static_type ()
- {
- return "language http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* language_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* uri_pskel<char>::
- _static_type ()
- {
- return "anyURI http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* uri_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* qname_pskel<char>::
- _static_type ()
- {
- return "QName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* qname_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* base64_binary_pskel<char>::
- _static_type ()
- {
- return "base64Binary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* base64_binary_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* hex_binary_pskel<char>::
- _static_type ()
- {
- return "hexBinary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* hex_binary_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gday_pskel<char>::
- _static_type ()
- {
- return "gDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gday_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gmonth_pskel<char>::
- _static_type ()
- {
- return "gMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gmonth_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gyear_pskel<char>::
- _static_type ()
- {
- return "gYear http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gyear_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gmonth_day_pskel<char>::
- _static_type ()
- {
- return "gMonthDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gmonth_day_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gyear_month_pskel<char>::
- _static_type ()
- {
- return "gYearMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gyear_month_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* date_pskel<char>::
- _static_type ()
- {
- return "date http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* date_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* time_pskel<char>::
- _static_type ()
- {
- return "time http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* time_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* date_time_pskel<char>::
- _static_type ()
- {
- return "dateTime http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* date_time_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* duration_pskel<char>::
- _static_type ()
- {
- return "duration http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* duration_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PSKEL_IXX_CHAR
-#endif // XSD_CXX_PARSER_USE_CHAR
-
-
-#if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR)
-
-#ifndef XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PSKEL_IXX_WCHAR
-#define XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PSKEL_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- template<>
- inline const wchar_t* any_type_pskel<wchar_t>::
- _static_type ()
- {
- return L"anyType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* any_type_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* any_simple_type_pskel<wchar_t>::
- _static_type ()
- {
- return L"anySimpleType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* any_simple_type_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* boolean_pskel<wchar_t>::
- _static_type ()
- {
- return L"boolean http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* boolean_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* byte_pskel<wchar_t>::
- _static_type ()
- {
- return L"byte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* byte_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_byte_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedByte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_byte_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* short_pskel<wchar_t>::
- _static_type ()
- {
- return L"short http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* short_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_short_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedShort http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_short_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* int_pskel<wchar_t>::
- _static_type ()
- {
- return L"int http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* int_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_int_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedInt http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_int_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* long_pskel<wchar_t>::
- _static_type ()
- {
- return L"long http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* long_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_long_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedLong http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_long_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"integer http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* negative_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"negativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* negative_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* non_positive_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"nonPositiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* non_positive_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* positive_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"positiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* positive_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* non_negative_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"nonNegativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* non_negative_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* float_pskel<wchar_t>::
- _static_type ()
- {
- return L"float http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* float_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* double_pskel<wchar_t>::
- _static_type ()
- {
- return L"double http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* double_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* decimal_pskel<wchar_t>::
- _static_type ()
- {
- return L"decimal http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* decimal_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* string_pskel<wchar_t>::
- _static_type ()
- {
- return L"string http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* string_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* normalized_string_pskel<wchar_t>::
- _static_type ()
- {
- return L"normalizedString http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* normalized_string_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* token_pskel<wchar_t>::
- _static_type ()
- {
- return L"token http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* token_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* name_pskel<wchar_t>::
- _static_type ()
- {
- return L"Name http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* name_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* nmtoken_pskel<wchar_t>::
- _static_type ()
- {
- return L"NMTOKEN http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* nmtoken_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* nmtokens_pskel<wchar_t>::
- _static_type ()
- {
- return L"NMTOKENS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* nmtokens_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* ncname_pskel<wchar_t>::
- _static_type ()
- {
- return L"NCName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* ncname_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* id_pskel<wchar_t>::
- _static_type ()
- {
- return L"ID http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* id_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* idref_pskel<wchar_t>::
- _static_type ()
- {
- return L"IDREF http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* idref_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* idrefs_pskel<wchar_t>::
- _static_type ()
- {
- return L"IDREFS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* idrefs_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* language_pskel<wchar_t>::
- _static_type ()
- {
- return L"language http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* language_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* uri_pskel<wchar_t>::
- _static_type ()
- {
- return L"anyURI http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* uri_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* qname_pskel<wchar_t>::
- _static_type ()
- {
- return L"QName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* qname_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* base64_binary_pskel<wchar_t>::
- _static_type ()
- {
- return L"base64Binary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* base64_binary_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* hex_binary_pskel<wchar_t>::
- _static_type ()
- {
- return L"hexBinary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* hex_binary_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gday_pskel<wchar_t>::
- _static_type ()
- {
- return L"gDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gday_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gmonth_pskel<wchar_t>::
- _static_type ()
- {
- return L"gMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gmonth_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gyear_pskel<wchar_t>::
- _static_type ()
- {
- return L"gYear http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gyear_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gmonth_day_pskel<wchar_t>::
- _static_type ()
- {
- return L"gMonthDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gmonth_day_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gyear_month_pskel<wchar_t>::
- _static_type ()
- {
- return L"gYearMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gyear_month_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* date_pskel<wchar_t>::
- _static_type ()
- {
- return L"date http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* date_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* time_pskel<wchar_t>::
- _static_type ()
- {
- return L"time http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* time_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* date_time_pskel<wchar_t>::
- _static_type ()
- {
- return L"dateTime http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* date_time_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* duration_pskel<wchar_t>::
- _static_type ()
- {
- return L"duration http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* duration_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_VALIDATING_XML_SCHEMA_PSKEL_IXX_WCHAR
-#endif // XSD_CXX_PARSER_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.txx b/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.txx
deleted file mode 100644
index 49d53c5..0000000
--- a/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.txx
+++ /dev/null
@@ -1,68 +0,0 @@
-// file : xsd/cxx/parser/validating/xml-schema-pskel.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace validating
- {
- // any_type
- //
-
- template <typename C>
- bool any_type_pskel<C>::
- _start_element_impl (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type)
- {
- this->_start_any_element (ns, name, type);
- this->complex_content<C>::context_.top ().any_ = true;
- return true;
- }
-
- template <typename C>
- bool any_type_pskel<C>::
- _end_element_impl (const ro_string<C>& ns, const ro_string<C>& name)
- {
- this->complex_content<C>::context_.top ().any_ = false;
- this->_end_any_element (ns, name);
- return true;
- }
-
-
- template <typename C>
- bool any_type_pskel<C>::
- _attribute_impl_phase_two (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- this->_any_attribute (ns, name, value);
- return true;
- }
-
- template <typename C>
- bool any_type_pskel<C>::
- _characters_impl (const ro_string<C>& s)
- {
- this->_any_characters (s);
- return true;
- }
-
- // any_simple_type
- //
-
- template <typename C>
- bool any_simple_type_pskel<C>::
- _characters_impl (const ro_string<C>& s)
- {
- this->_any_characters (s);
- return true;
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/xerces/elements.hxx b/xsd/libxsd/xsd/cxx/parser/xerces/elements.hxx
deleted file mode 100644
index da493f9..0000000
--- a/xsd/libxsd/xsd/cxx/parser/xerces/elements.hxx
+++ /dev/null
@@ -1,464 +0,0 @@
-// file : xsd/cxx/parser/xerces/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_XERCES_ELEMENTS_HXX
-#define XSD_CXX_PARSER_XERCES_ELEMENTS_HXX
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <string>
-#include <iosfwd>
-#include <vector>
-
-#include <xercesc/sax/Locator.hpp>
-#include <xercesc/sax/InputSource.hpp>
-#include <xercesc/sax2/SAX2XMLReader.hpp>
-#include <xercesc/sax2/DefaultHandler.hpp>
-
-#include <xercesc/util/XercesVersion.hpp>
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/xml/elements.hxx>
-#include <xsd/cxx/xml/error-handler.hxx>
-
-#include <xsd/cxx/parser/exceptions.hxx>
-#include <xsd/cxx/parser/elements.hxx>
-#include <xsd/cxx/parser/document.hxx>
-
-#if _XERCES_VERSION < 30000
-# error Xerces-C++ 2-series is not supported
-#endif
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace xerces
- {
- //
- //
- struct flags
- {
- // Use the following flags to modify the default behavior
- // of the parsing functions.
- //
-
- // Do not try to validate instance documents.
- //
- static const unsigned long dont_validate = 0x00000001;
-
- // Do not initialize the Xerces-C++ runtime.
- //
- static const unsigned long dont_initialize = 0x00000002;
-
- // Disable handling of subsequent imports for the same namespace
- // in Xerces-C++ 3.1.0 and later.
- //
- static const unsigned long no_multiple_imports = 0x00000004;
-
- public:
- flags (unsigned long x = 0)
- : x_ (x)
- {
- }
-
- operator unsigned long () const
- {
- return x_;
- }
-
- private:
- unsigned long x_;
- };
-
-
- // Parsing properties. Refer to xsd/cxx/xml/elements.hxx for
- // XML-related properties.
- //
- template <typename C>
- class properties: public xml::properties<C>
- {
- };
-
- //
- //
- template <typename C>
- struct document: cxx::parser::document<C> // VC likes it qualified
- {
- public:
- document (parser_base<C>& root,
- const C* root_element_name,
- bool polymorphic = false);
-
- document (parser_base<C>& root,
- const std::basic_string<C>& root_element_name,
- bool polymorphic = false);
-
- document (parser_base<C>& root,
- const C* root_element_namespace,
- const C* root_element_name,
- bool polymorphic = false);
-
- document (parser_base<C>& root,
- const std::basic_string<C>& root_element_namespace,
- const std::basic_string<C>& root_element_name,
- bool polymorphic = false);
-
- protected:
- explicit
- document (bool polymorphic = false);
-
- public:
- // Parse URI or a local file. We have to overload it for const C*
- // bacause xercesc::InputSource has an implicit constructor that
- // takes const char*.
- //
- void
- parse (const std::basic_string<C>& uri,
- flags = 0,
- const properties<C>& = properties<C> ());
-
- void
- parse (const C* uri,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse URI or a local file with a user-provided error_handler
- // object.
- //
- void
- parse (const std::basic_string<C>& uri,
- xml::error_handler<C>&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
- void
- parse (const C* uri,
- xml::error_handler<C>&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse URI or a local file with a user-provided ErrorHandler
- // object. Note that you must initialize the Xerces-C++ runtime
- // before calling these functions.
- //
- void
- parse (const std::basic_string<C>& uri,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
- void
- parse (const C* uri,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse URI or a local file using a user-provided SAX2XMLReader
- // object. Note that you must initialize the Xerces-C++ runtime
- // before calling these functions.
- //
- void
- parse (const std::basic_string<C>& uri,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
- void
- parse (const C* uri,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- public:
- // System id is a "system" identifier of the resources (e.g.,
- // URI or a full file path). Public id is a "public" identifier
- // of the resource (e.g., an application-specific name or a
- // relative file path). System id is used to resolve relative
- // paths. In diagnostics messages system id is used if public
- // id is not available. Otherwise public id is used.
- //
-
- // Parse std::istream.
- //
- void
- parse (std::istream&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse std::istream with a user-provided error_handler object.
- //
- void
- parse (std::istream&,
- xml::error_handler<C>&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse std::istream with a user-provided ErrorHandler object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse (std::istream&,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse std::istream using a user-provided SAX2XMLReader object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse (std::istream&,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- public:
- // Parse std::istream with a system id.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse std::istream with a system id and a user-provided
- // error_handler object.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- xml::error_handler<C>&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse std::istream with a system id and a user-provided
- // ErrorHandler object. Note that you must initialize the
- // Xerces-C++ runtime before calling this function.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse std::istream with a system id using a user-provided
- // SAX2XMLReader object. Note that you must initialize the
- // Xerces-C++ runtime before calling this function.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
-
- public:
- // Parse std::istream with system and public ids.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse std::istream with system and public ids and a user-provided
- // error_handler object.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- xml::error_handler<C>&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse std::istream with system and public ids and a user-provided
- // ErrorHandler object. Note that you must initialize the Xerces-C++
- // runtime before calling this function.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse std::istream with system and public ids using a user-
- // provided SAX2XMLReader object. Note that you must initialize
- // the Xerces-C++ runtime before calling this function.
- //
- void
- parse (std::istream&,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- public:
- // Parse InputSource. Note that you must initialize the Xerces-C++
- // runtime before calling this function.
- //
- void
- parse (const xercesc::InputSource&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse InputSource with a user-provided error_handler object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse (const xercesc::InputSource&,
- xml::error_handler<C>&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse InputSource with a user-provided ErrorHandler object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse (const xercesc::InputSource&,
- xercesc::ErrorHandler&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
-
- // Parse InputSource using a user-provided SAX2XMLReader object.
- // Note that you must initialize the Xerces-C++ runtime before
- // calling this function.
- //
- void
- parse (const xercesc::InputSource&,
- xercesc::SAX2XMLReader&,
- flags = 0,
- const properties<C>& = properties<C> ());
-
- private:
- void
- parse (const std::basic_string<C>& uri,
- xercesc::ErrorHandler&,
- xercesc::SAX2XMLReader&,
- flags,
- const properties<C>&);
-
- void
- parse (const xercesc::InputSource&,
- xercesc::ErrorHandler&,
- xercesc::SAX2XMLReader&,
- flags,
- const properties<C>&);
-
- private:
- XSD_AUTO_PTR<xercesc::SAX2XMLReader>
- create_sax_ (flags, const properties<C>&);
-
- private:
- bool polymorphic_;
- };
-
- //
- //
- template <typename C>
- struct event_router: xercesc::DefaultHandler
- {
- event_router (cxx::parser::document<C>&, bool polymorphic);
-
- // I know, some of those consts are stupid. But that's what
- // Xerces folks put into their interfaces and VC thinks there
- // are different signatures if one strips this fluff off.
- //
- virtual void
- setDocumentLocator (const xercesc::Locator* const);
-
- virtual void
- startElement (const XMLCh* const uri,
- const XMLCh* const lname,
- const XMLCh* const qname,
- const xercesc::Attributes& attributes);
-
- virtual void
- endElement (const XMLCh* const uri,
- const XMLCh* const lname,
- const XMLCh* const qname);
-
- virtual void
- characters (const XMLCh* const s, const XMLSize_t length);
-
- virtual void
- startPrefixMapping (const XMLCh* const prefix,
- const XMLCh* const uri);
-
- virtual void
- endPrefixMapping (const XMLCh* const prefix);
-
- private:
- void
- set_location (schema_exception<C>&);
-
- private:
- const xercesc::Locator* loc_;
- cxx::parser::document<C>& consumer_;
- bool polymorphic_;
-
- // Last element name cache.
- //
- bool last_valid_;
- std::basic_string<C> last_ns_;
- std::basic_string<C> last_name_;
-
- // Namespace-prefix mapping. Only maintained in the polymorphic
- // case.
- //
- struct ns_decl
- {
- ns_decl (const std::basic_string<C>& p,
- const std::basic_string<C>& n)
- : prefix (p), ns (n)
- {
- }
-
- std::basic_string<C> prefix;
- std::basic_string<C> ns;
- };
-
- typedef std::vector<ns_decl> ns_decls;
-
- ns_decls ns_decls_;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/xerces/elements.txx>
-
-#endif // XSD_CXX_PARSER_XERCES_ELEMENTS_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/xerces/elements.txx b/xsd/libxsd/xsd/cxx/parser/xerces/elements.txx
deleted file mode 100644
index f41b074..0000000
--- a/xsd/libxsd/xsd/cxx/parser/xerces/elements.txx
+++ /dev/null
@@ -1,948 +0,0 @@
-// file : xsd/cxx/parser/xerces/elements.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <istream>
-#include <cstddef> // std::size_t
-#include <cassert>
-
-#include <xercesc/sax/SAXParseException.hpp>
-#include <xercesc/sax2/Attributes.hpp>
-#include <xercesc/sax2/XMLReaderFactory.hpp>
-#include <xercesc/validators/schema/SchemaSymbols.hpp>
-#include <xercesc/util/XMLUni.hpp>
-#include <xercesc/util/XMLString.hpp>
-
-#include <xsd/cxx/xml/string.hxx>
-#include <xsd/cxx/xml/sax/std-input-source.hxx>
-#include <xsd/cxx/xml/sax/bits/error-handler-proxy.hxx>
-#include <xsd/cxx/xml/bits/literals.hxx> // xml::bits::{xml_prefix, etc}
-
-#include <xsd/cxx/parser/error-handler.hxx>
-#include <xsd/cxx/parser/schema-exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace xerces
- {
-
- // document
- //
-
- template <typename C>
- document<C>::
- document (parser_base<C>& parser,
- const C* name,
- bool polymorphic)
- : cxx::parser::document<C> (parser, std::basic_string<C> (), name),
- polymorphic_ (polymorphic)
- {
- }
-
- template <typename C>
- document<C>::
- document (parser_base<C>& parser,
- const std::basic_string<C>& name,
- bool polymorphic)
- : cxx::parser::document<C> (parser, std::basic_string<C> (), name),
- polymorphic_ (polymorphic)
- {
- }
-
- template <typename C>
- document<C>::
- document (parser_base<C>& parser,
- const C* ns,
- const C* name,
- bool polymorphic)
- : cxx::parser::document<C> (parser, ns, name),
- polymorphic_ (polymorphic)
- {
- }
-
- template <typename C>
- document<C>::
- document (parser_base<C>& parser,
- const std::basic_string<C>& ns,
- const std::basic_string<C>& name,
- bool polymorphic)
- : cxx::parser::document<C> (parser, ns, name),
- polymorphic_ (polymorphic)
- {
- }
-
- template <typename C>
- document<C>::
- document (bool polymorphic)
- : polymorphic_ (polymorphic)
- {
- }
-
- // parse (uri)
- //
- template <typename C>
- void document<C>::
- parse (const std::basic_string<C>& uri,
- flags f,
- const properties<C>& p)
- {
- xml::auto_initializer init ((f & flags::dont_initialize) == 0);
-
- error_handler<C> eh;
- xml::sax::bits::error_handler_proxy<C> eh_proxy (eh);
- XSD_AUTO_PTR<xercesc::SAX2XMLReader> sax (create_sax_ (f, p));
-
- parse (uri, eh_proxy, *sax, f, p);
-
- eh.throw_if_failed ();
- }
-
- template <typename C>
- void document<C>::
- parse (const C* uri,
- flags f,
- const properties<C>& p)
- {
- parse (std::basic_string<C> (uri), f, p);
- }
-
- // error_handler
- //
-
- template <typename C>
- void document<C>::
- parse (const std::basic_string<C>& uri,
- xml::error_handler<C>& eh,
- flags f,
- const properties<C>& p)
- {
- xml::auto_initializer init ((f & flags::dont_initialize) == 0);
-
- xml::sax::bits::error_handler_proxy<C> eh_proxy (eh);
- XSD_AUTO_PTR<xercesc::SAX2XMLReader> sax (create_sax_ (f, p));
-
- parse (uri, eh_proxy, *sax, f, p);
-
- if (eh_proxy.failed ())
- throw parsing<C> ();
- }
-
- template <typename C>
- void document<C>::
- parse (const C* uri,
- xml::error_handler<C>& eh,
- flags f,
- const properties<C>& p)
- {
- parse (std::basic_string<C> (uri), eh, f, p);
- }
-
- // ErrorHandler
- //
-
- template <typename C>
- void document<C>::
- parse (const std::basic_string<C>& uri,
- xercesc::ErrorHandler& eh,
- flags f,
- const properties<C>& p)
- {
- xml::sax::bits::error_handler_proxy<C> eh_proxy (eh);
- XSD_AUTO_PTR<xercesc::SAX2XMLReader> sax (create_sax_ (f, p));
-
- parse (uri, eh_proxy, *sax, f, p);
-
- if (eh_proxy.failed ())
- throw parsing<C> ();
- }
-
- template <typename C>
- void document<C>::
- parse (const C* uri,
- xercesc::ErrorHandler& eh,
- flags f,
- const properties<C>& p)
- {
- parse (std::basic_string<C> (uri), eh, f, p);
- }
-
- // SAX2XMLReader
- //
-
- template <typename C>
- void document<C>::
- parse (const std::basic_string<C>& uri,
- xercesc::SAX2XMLReader& sax,
- flags f,
- const properties<C>& p)
- {
- // If there is no error handler, then fall back on the default
- // implementation.
- //
- xercesc::ErrorHandler* eh (sax.getErrorHandler ());
-
- if (eh)
- {
- xml::sax::bits::error_handler_proxy<C> eh_proxy (*eh);
-
- parse (uri, eh_proxy, sax, f, p);
-
- if (eh_proxy.failed ())
- throw parsing<C> ();
- }
- else
- {
- error_handler<C> fallback_eh;
- xml::sax::bits::error_handler_proxy<C> eh_proxy (fallback_eh);
-
- parse (uri, eh_proxy, sax, f, p);
-
- fallback_eh.throw_if_failed ();
- }
- }
-
- template <typename C>
- void document<C>::
- parse (const C* uri,
- xercesc::SAX2XMLReader& sax,
- flags f,
- const properties<C>& p)
- {
- parse (std::basic_string<C> (uri), sax, f, p);
- }
-
- // parse (istream)
- //
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- flags f,
- const properties<C>& p)
- {
- xml::auto_initializer init ((f & flags::dont_initialize) == 0);
-
- xml::sax::std_input_source isrc (is);
-
- parse (isrc, f, p);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- xml::error_handler<C>& eh,
- flags f,
- const properties<C>& p)
- {
- xml::auto_initializer init ((f & flags::dont_initialize) == 0);
- xml::sax::std_input_source isrc (is);
- parse (isrc, eh, f, p);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- xercesc::ErrorHandler& eh,
- flags f,
- const properties<C>& p)
- {
- xml::sax::std_input_source isrc (is);
- parse (isrc, eh, f, p);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- xercesc::SAX2XMLReader& sax,
- flags f,
- const properties<C>& p)
- {
- xml::sax::std_input_source isrc (is);
- parse (isrc, sax, f, p);
- }
-
-
- // parse (istream, system_id)
- //
-
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- flags f,
- const properties<C>& p)
- {
- xml::auto_initializer init ((f & flags::dont_initialize) == 0);
- xml::sax::std_input_source isrc (is, system_id);
- parse (isrc, f, p);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- xml::error_handler<C>& eh,
- flags f,
- const properties<C>& p)
- {
- xml::auto_initializer init ((f & flags::dont_initialize) == 0);
- xml::sax::std_input_source isrc (is, system_id);
- parse (isrc, eh, f, p);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- xercesc::ErrorHandler& eh,
- flags f,
- const properties<C>& p)
- {
- xml::sax::std_input_source isrc (is, system_id);
- parse (isrc, eh, f, p);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- xercesc::SAX2XMLReader& sax,
- flags f,
- const properties<C>& p)
- {
- xml::sax::std_input_source isrc (is, system_id);
- parse (isrc, sax, f, p);
- }
-
-
- // parse (istream, system_id, public_id)
- //
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- flags f,
- const properties<C>& p)
- {
- xml::auto_initializer init ((f & flags::dont_initialize) == 0);
- xml::sax::std_input_source isrc (is, system_id, public_id);
- parse (isrc, f, p);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- xml::error_handler<C>& eh,
- flags f,
- const properties<C>& p)
- {
- xml::auto_initializer init ((f & flags::dont_initialize) == 0);
- xml::sax::std_input_source isrc (is, system_id, public_id);
- parse (isrc, eh, f, p);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- xercesc::ErrorHandler& eh,
- flags f,
- const properties<C>& p)
- {
- xml::sax::std_input_source isrc (is, system_id, public_id);
- parse (isrc, eh, f, p);
- }
-
- template <typename C>
- void document<C>::
- parse (std::istream& is,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id,
- xercesc::SAX2XMLReader& sax,
- flags f,
- const properties<C>& p)
- {
- xml::sax::std_input_source isrc (is, system_id, public_id);
- parse (isrc, sax, f, p);
- }
-
-
- // parse (InputSource)
- //
-
-
- template <typename C>
- void document<C>::
- parse (const xercesc::InputSource& is,
- flags f,
- const properties<C>& p)
- {
- error_handler<C> eh;
- xml::sax::bits::error_handler_proxy<C> eh_proxy (eh);
- XSD_AUTO_PTR<xercesc::SAX2XMLReader> sax (create_sax_ (f, p));
-
- parse (is, eh_proxy, *sax, f, p);
-
- eh.throw_if_failed ();
- }
-
- template <typename C>
- void document<C>::
- parse (const xercesc::InputSource& is,
- xml::error_handler<C>& eh,
- flags f,
- const properties<C>& p)
- {
- xml::sax::bits::error_handler_proxy<C> eh_proxy (eh);
- XSD_AUTO_PTR<xercesc::SAX2XMLReader> sax (create_sax_ (f, p));
-
- parse (is, eh_proxy, *sax, f, p);
-
- if (eh_proxy.failed ())
- throw parsing<C> ();
- }
-
- template <typename C>
- void document<C>::
- parse (const xercesc::InputSource& is,
- xercesc::ErrorHandler& eh,
- flags f,
- const properties<C>& p)
- {
- xml::sax::bits::error_handler_proxy<C> eh_proxy (eh);
- XSD_AUTO_PTR<xercesc::SAX2XMLReader> sax (create_sax_ (f, p));
-
- parse (is, eh_proxy, *sax, f, p);
-
- if (eh_proxy.failed ())
- throw parsing<C> ();
- }
-
-
- template <typename C>
- void document<C>::
- parse (const xercesc::InputSource& is,
- xercesc::SAX2XMLReader& sax,
- flags f,
- const properties<C>& p)
- {
- // If there is no error handler, then fall back on the default
- // implementation.
- //
- xercesc::ErrorHandler* eh (sax.getErrorHandler ());
-
- if (eh)
- {
- xml::sax::bits::error_handler_proxy<C> eh_proxy (*eh);
-
- parse (is, eh_proxy, sax, f, p);
-
- if (eh_proxy.failed ())
- throw parsing<C> ();
- }
- else
- {
- error_handler<C> fallback_eh;
- xml::sax::bits::error_handler_proxy<C> eh_proxy (fallback_eh);
-
- parse (is, eh_proxy, sax, f, p);
-
- fallback_eh.throw_if_failed ();
- }
- }
-
- namespace Bits
- {
- struct ErrorHandlingController
- {
- ErrorHandlingController (xercesc::SAX2XMLReader& sax,
- xercesc::ErrorHandler& eh)
- : sax_ (sax), eh_ (sax_.getErrorHandler ())
- {
- sax_.setErrorHandler (&eh);
- }
-
- ~ErrorHandlingController ()
- {
- sax_.setErrorHandler (eh_);
- }
-
- private:
- xercesc::SAX2XMLReader& sax_;
- xercesc::ErrorHandler* eh_;
- };
-
- struct ContentHandlingController
- {
- ContentHandlingController (xercesc::SAX2XMLReader& sax,
- xercesc::ContentHandler& ch)
- : sax_ (sax), ch_ (sax_.getContentHandler ())
- {
- sax_.setContentHandler (&ch);
- }
-
- ~ContentHandlingController ()
- {
- sax_.setContentHandler (ch_);
- }
-
- private:
- xercesc::SAX2XMLReader& sax_;
- xercesc::ContentHandler* ch_;
- };
- };
-
- template <typename C>
- void document<C>::
- parse (const std::basic_string<C>& uri,
- xercesc::ErrorHandler& eh,
- xercesc::SAX2XMLReader& sax,
- flags,
- const properties<C>&)
- {
- event_router<C> router (*this, polymorphic_);
-
- Bits::ErrorHandlingController ehc (sax, eh);
- Bits::ContentHandlingController chc (sax, router);
-
- try
- {
- sax.parse (xml::string (uri).c_str ());
- }
- catch (const schema_exception<C>& e)
- {
- xml::string id (e.id ());
-
- xercesc::SAXParseException se (
- xml::string (e.message ()).c_str (),
- id.c_str (),
- id.c_str (),
- static_cast<XMLFileLoc> (e.line ()),
- static_cast<XMLFileLoc> (e.column ()));
-
- eh.fatalError (se);
- }
- }
-
- template <typename C>
- void document<C>::
- parse (const xercesc::InputSource& is,
- xercesc::ErrorHandler& eh,
- xercesc::SAX2XMLReader& sax,
- flags,
- const properties<C>&)
- {
- event_router<C> router (*this, polymorphic_);
-
- Bits::ErrorHandlingController controller (sax, eh);
- Bits::ContentHandlingController chc (sax, router);
-
- try
- {
- sax.parse (is);
- }
- catch (const schema_exception<C>& e)
- {
- xml::string id (e.id ());
-
- xercesc::SAXParseException se (
- xml::string (e.message ()).c_str (),
- id.c_str (),
- id.c_str (),
- static_cast<XMLFileLoc> (e.line ()),
- static_cast<XMLFileLoc> (e.column ()));
-
- eh.fatalError (se);
- }
- }
-
-
- template <typename C>
- XSD_AUTO_PTR<xercesc::SAX2XMLReader> document<C>::
- create_sax_ (flags f, const properties<C>& p)
- {
- using namespace xercesc;
-
- XSD_AUTO_PTR<SAX2XMLReader> sax (
- XMLReaderFactory::createXMLReader ());
-
- sax->setFeature (XMLUni::fgSAX2CoreNameSpaces, true);
- sax->setFeature (XMLUni::fgSAX2CoreNameSpacePrefixes, true);
- sax->setFeature (XMLUni::fgXercesValidationErrorAsFatal, true);
-
- if (f & flags::dont_validate)
- {
- sax->setFeature (XMLUni::fgSAX2CoreValidation, false);
- sax->setFeature (XMLUni::fgXercesSchema, false);
- sax->setFeature (XMLUni::fgXercesSchemaFullChecking, false);
- }
- else
- {
- sax->setFeature (XMLUni::fgSAX2CoreValidation, true);
- sax->setFeature (XMLUni::fgXercesSchema, true);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- if (!(f & flags::no_multiple_imports))
- sax->setFeature (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
- // This feature checks the schema grammar for additional
- // errors. We most likely do not need it when validating
- // instances (assuming the schema is valid).
- //
- sax->setFeature (XMLUni::fgXercesSchemaFullChecking, false);
- }
-
- // Transfer properies if any.
- //
-
- if (!p.schema_location ().empty ())
- {
- xml::string sl (p.schema_location ());
- const void* v (sl.c_str ());
-
- sax->setProperty (
- XMLUni::fgXercesSchemaExternalSchemaLocation,
- const_cast<void*> (v));
- }
-
- if (!p.no_namespace_schema_location ().empty ())
- {
- xml::string sl (p.no_namespace_schema_location ());
- const void* v (sl.c_str ());
-
- sax->setProperty (
- XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation,
- const_cast<void*> (v));
- }
-
- return sax;
- }
-
- // event_router
- //
- template <typename C>
- event_router<C>::
- event_router (cxx::parser::document<C>& consumer, bool polymorphic)
- : loc_ (0), consumer_ (consumer), polymorphic_ (polymorphic)
- {
- }
-
- template <typename C>
- void event_router<C>::
- setDocumentLocator (const xercesc::Locator* const loc)
- {
- loc_ = loc;
- }
-
- template <typename C>
- void event_router<C>::
- startElement(const XMLCh* const uri,
- const XMLCh* const lname,
- const XMLCh* const /*qname*/,
- const xercesc::Attributes& attributes)
- {
- using xercesc::XMLUni;
- using xercesc::XMLString;
-
- typedef std::basic_string<C> string;
-
- {
- last_valid_ = true;
- last_ns_ = xml::transcode<C> (uri);
- last_name_ = xml::transcode<C> (lname);
-
- // Without this explicit construction IBM XL C++ complains
- // about ro_string's copy ctor being private even though the
- // temporary has been eliminated. Note that we cannot
- // eliminate ns, name and value since ro_string does not make
- // a copy.
- //
- ro_string<C> ro_ns (last_ns_);
- ro_string<C> ro_name (last_name_);
-
- if (!polymorphic_)
- {
- try
- {
- consumer_.start_element (ro_ns, ro_name, 0);
- }
- catch (schema_exception<C>& e)
- {
- set_location (e);
- throw;
- }
- }
- else
- {
- // Search for the xsi:type attribute.
- //
- int i (attributes.getIndex (
- xercesc::SchemaSymbols::fgURI_XSI,
- xercesc::SchemaSymbols::fgXSI_TYPE));
-
- if (i == -1)
- {
- try
- {
- consumer_.start_element (ro_ns, ro_name, 0);
- }
- catch (schema_exception<C>& e)
- {
- set_location (e);
- throw;
- }
- }
- else
- {
- try
- {
- // @@ Probably need proper QName validation.
- //
- // Get the qualified type name and try to resolve it.
- //
- string qn (xml::transcode<C> (attributes.getValue (i)));
-
- ro_string<C> tp, tn;
- typename string::size_type pos (qn.find (C (':')));
-
- if (pos != string::npos)
- {
- tp.assign (qn.c_str (), pos);
- tn.assign (qn.c_str () + pos + 1);
-
- if (tp.empty ())
- throw dynamic_type<C> (qn);
- }
- else
- tn.assign (qn);
-
- if (tn.empty ())
- throw dynamic_type<C> (qn);
-
- // Search our namespace declaration stack. Sun CC 5.7
- // blows if we use const_reverse_iterator.
- //
- ro_string<C> tns;
- for (typename ns_decls::reverse_iterator
- it (ns_decls_.rbegin ()), e (ns_decls_.rend ());
- it != e; ++it)
- {
- if (it->prefix == tp)
- {
- tns.assign (it->ns);
- break;
- }
- }
-
- if (!tp.empty () && tns.empty ())
- {
- // The 'xml' prefix requires special handling.
- //
- if (tp == xml::bits::xml_prefix<C> ())
- tns.assign (xml::bits::xml_namespace<C> ());
- else
- throw dynamic_type<C> (qn);
- }
-
- // Construct the compound type id.
- //
- string id (tn.data (), tn.size ());
-
- if (!tns.empty ())
- {
- id += C (' ');
- id.append (tns.data (), tns.size ());
- }
-
- ro_string<C> ro_id (id);
- consumer_.start_element (ro_ns, ro_name, &ro_id);
- }
- catch (schema_exception<C>& e)
- {
- set_location (e);
- throw;
- }
- }
- }
- }
-
- for (XMLSize_t i (0), end (attributes.getLength()); i < end; ++i)
- {
- const XMLCh* xns (attributes.getURI (i));
-
- // When SAX2 reports the xmlns attribute, it does not include
- // the proper attribute namespace. So we have to detect and
- // rectify this case.
- //
- if (XMLString::equals (attributes.getQName (i),
- XMLUni::fgXMLNSString))
- xns = XMLUni::fgXMLNSURIName;
-
- string ns (xml::transcode<C> (xns));
- string name (xml::transcode<C> (attributes.getLocalName (i)));
- string value (xml::transcode<C> (attributes.getValue (i)));
-
- // Without this explicit construction IBM XL C++ complains
- // about ro_string's copy ctor being private even though the
- // temporary has been eliminated. Note that we cannot
- // eliminate ns, name and value since ro_string does not make
- // a copy.
- //
- ro_string<C> ro_ns (ns);
- ro_string<C> ro_name (name);
- ro_string<C> ro_value (value);
-
- try
- {
- consumer_.attribute (ro_ns, ro_name, ro_value);
- }
- catch (schema_exception<C>& e)
- {
- set_location (e);
- throw;
- }
- }
- }
-
- template <typename C>
- void event_router<C>::
- endElement(const XMLCh* const uri,
- const XMLCh* const lname,
- const XMLCh* const /*qname*/)
- {
- typedef std::basic_string<C> string;
-
- try
- {
- // Without this explicit construction IBM XL C++ complains
- // about ro_string's copy ctor being private even though the
- // temporary has been eliminated. Note that we cannot
- // eliminate ns, name and value since ro_string does not make
- // a copy.
- //
- if (last_valid_)
- {
- last_valid_ = false;
- ro_string<C> ro_ns (last_ns_);
- ro_string<C> ro_name (last_name_);
-
- consumer_.end_element (ro_ns, ro_name);
- }
- else
- {
- string ns (xml::transcode<C> (uri));
- string name (xml::transcode<C> (lname));
-
- ro_string<C> ro_ns (ns);
- ro_string<C> ro_name (name);
-
- consumer_.end_element (ro_ns, ro_name);
- }
- }
- catch (schema_exception<C>& e)
- {
- set_location (e);
- throw;
- }
- }
-
- template <typename C>
- void event_router<C>::
- characters (const XMLCh* const s, const XMLSize_t n)
- {
- typedef std::basic_string<C> string;
-
- if (n != 0)
- {
- string str (xml::transcode<C> (s, n));
-
- // Without this explicit construction IBM XL C++ complains
- // about ro_string's copy ctor being private even though the
- // temporary has been eliminated. Note that we cannot
- // eliminate str since ro_string does not make a copy.
- //
- ro_string<C> ro_str (str);
-
- try
- {
- consumer_.characters (ro_str);
- }
- catch (schema_exception<C>& e)
- {
- set_location (e);
- throw;
- }
- }
- }
-
- template <typename C>
- void event_router<C>::
- startPrefixMapping (const XMLCh* const prefix,
- const XMLCh* const uri)
- {
- if (polymorphic_)
- {
- typedef std::basic_string<C> string;
-
- string p (xml::transcode<C> (prefix));
- string ns (xml::transcode<C> (uri));
-
- ns_decls_.push_back (ns_decl (p, ns));
- }
- }
-
- template <typename C>
- void event_router<C>::
- endPrefixMapping (const XMLCh* const prefix)
- {
- if (polymorphic_)
- {
- typedef std::basic_string<C> string;
-
- string p (xml::transcode<C> (prefix));
-
- // Here we assume the prefixes are removed in the reverse
- // order of them being added. This appears to how every
- // sensible implementation works.
- //
- assert (ns_decls_.back ().prefix == p);
-
- ns_decls_.pop_back ();
- }
- }
-
- template <typename C>
- void event_router<C>::
- set_location (schema_exception<C>& e)
- {
- if (loc_ != 0)
- {
- const XMLCh* id (loc_->getPublicId ());
-
- if (id == 0)
- id = loc_->getSystemId ();
-
- if (id != 0)
- e.id (xml::transcode<C> (id));
-
- e.line (static_cast<unsigned long> (loc_->getLineNumber ()));
- e.column (static_cast<unsigned long> (loc_->getColumnNumber ()));
- }
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/xml-schema.hxx b/xsd/libxsd/xsd/cxx/parser/xml-schema.hxx
deleted file mode 100644
index cc3dd5f..0000000
--- a/xsd/libxsd/xsd/cxx/parser/xml-schema.hxx
+++ /dev/null
@@ -1,571 +0,0 @@
-// file : xsd/cxx/parser/xml-schema.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_XML_SCHEMA_HXX
-#define XSD_CXX_PARSER_XML_SCHEMA_HXX
-
-#include <string>
-#include <vector>
-#include <cstddef> // std::size_t
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // String sequence. Used for the NMTOKENS and IDREFS types.
- //
- template <typename C>
- class string_sequence: public std::vector<std::basic_string<C> >
- {
- public:
- typedef std::basic_string<C> value_type;
- typedef std::vector<value_type> base;
- typedef typename base::size_type size_type;
-
- string_sequence ();
-
- explicit
- string_sequence (size_type n, const value_type& x = value_type ());
-
- template <typename I>
- string_sequence (const I& begin, const I& end);
- };
-
- template <typename C>
- bool
- operator== (const string_sequence<C>&, const string_sequence<C>&);
-
- template <typename C>
- bool
- operator!= (const string_sequence<C>&, const string_sequence<C>&);
-
-
- // QName
- //
- template <typename C>
- class qname
- {
- public:
- explicit
- qname (const std::basic_string<C>& name);
-
- qname (const std::basic_string<C>& prefix,
- const std::basic_string<C>& name);
-
- void
- swap (qname&);
-
- const std::basic_string<C>&
- prefix () const;
-
- std::basic_string<C>&
- prefix ();
-
- void
- prefix (const std::basic_string<C>&);
-
- const std::basic_string<C>&
- name () const;
-
- std::basic_string<C>&
- name ();
-
- void
- name (const std::basic_string<C>&);
-
- private:
- std::basic_string<C> prefix_;
- std::basic_string<C> name_;
- };
-
- template <typename C>
- bool
- operator== (const qname<C>&, const qname<C>&);
-
- template <typename C>
- bool
- operator!= (const qname<C>&, const qname<C>&);
-
-
- // Binary buffer. Used for the base64Binary and hexBinary types.
- //
- class buffer
- {
- public:
- typedef std::size_t size_t;
-
- class bounds {}; // Out of bounds exception.
-
- public:
- ~buffer ();
-
- explicit
- buffer (size_t size = 0);
- buffer (size_t size, size_t capacity);
- buffer (const void* data, size_t size);
- buffer (const void* data, size_t size, size_t capacity);
-
- // If the assume_ownership argument is true, the buffer will
- // assume the ownership of the data and will release the memory
- // by calling operator delete ().
- //
- buffer (void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership);
-
- buffer (const buffer&);
-
- public:
- buffer&
- operator= (const buffer&);
-
- public:
- size_t
- capacity () const;
-
- // Returns true if the underlying buffer has moved.
- //
- bool
- capacity (size_t);
-
- public:
- size_t
- size () const;
-
- // Returns true if the underlying buffer has moved.
- //
- bool
- size (size_t);
-
- public:
- const char*
- data () const;
-
- char*
- data ();
-
- const char*
- begin () const;
-
- char*
- begin ();
-
- const char*
- end () const;
-
- char*
- end ();
-
- public:
- void
- swap (buffer&);
-
- private:
- bool
- capacity (size_t capacity, bool copy);
-
- private:
- char* data_;
- size_t size_;
- size_t capacity_;
- };
-
- bool
- operator== (const buffer&, const buffer&);
-
- bool
- operator!= (const buffer&, const buffer&);
-
-
- // Time and date types.
- //
-
- class time_zone
- {
- public:
- time_zone ();
- time_zone (short hours, short minutes);
-
- // Returns true if time zone is specified.
- //
- bool
- zone_present () const;
-
- // Resets the time zone to the 'not specified' state.
- //
- void
- zone_reset ();
-
- short
- zone_hours () const;
-
- void
- zone_hours (short);
-
- short
- zone_minutes () const;
-
- void
- zone_minutes (short);
-
- private:
- bool present_;
- short hours_;
- short minutes_;
- };
-
- bool
- operator== (const time_zone&, const time_zone&);
-
- bool
- operator!= (const time_zone&, const time_zone&);
-
-
- class gday: public time_zone
- {
- public:
- explicit
- gday (unsigned short day);
- gday (unsigned short day, short zone_hours, short zone_minutes);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
-
- private:
- unsigned short day_;
- };
-
- bool
- operator== (const gday&, const gday&);
-
- bool
- operator!= (const gday&, const gday&);
-
-
- class gmonth: public time_zone
- {
- public:
- explicit
- gmonth (unsigned short month);
- gmonth (unsigned short month, short zone_hours, short zone_minutes);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- private:
- unsigned short month_;
- };
-
- bool
- operator== (const gmonth&, const gmonth&);
-
- bool
- operator!= (const gmonth&, const gmonth&);
-
-
- class gyear: public time_zone
- {
- public:
- explicit
- gyear (int year);
- gyear (int year, short zone_hours, short zone_minutes);
-
- int
- year () const;
-
- void
- year (int);
-
- private:
- int year_;
- };
-
- bool
- operator== (const gyear&, const gyear&);
-
- bool
- operator!= (const gyear&, const gyear&);
-
-
- class gmonth_day: public time_zone
- {
- public:
- gmonth_day (unsigned short month, unsigned short day);
- gmonth_day (unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
-
- private:
- unsigned short month_;
- unsigned short day_;
- };
-
- bool
- operator== (const gmonth_day&, const gmonth_day&);
-
- bool
- operator!= (const gmonth_day&, const gmonth_day&);
-
-
- class gyear_month: public time_zone
- {
- public:
- gyear_month (int year, unsigned short month);
- gyear_month (int year, unsigned short month,
- short zone_hours, short zone_minutes);
-
- int
- year () const;
-
- void
- year (int);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- private:
- int year_;
- unsigned short month_;
- };
-
- bool
- operator== (const gyear_month&, const gyear_month&);
-
- bool
- operator!= (const gyear_month&, const gyear_month&);
-
-
- class date: public time_zone
- {
- public:
- date (int year, unsigned short month, unsigned short day);
- date (int year, unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes);
-
- int
- year () const;
-
- void
- year (int);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
-
- private:
- int year_;
- unsigned short month_;
- unsigned short day_;
- };
-
- bool
- operator== (const date&, const date&);
-
- bool
- operator!= (const date&, const date&);
-
-
- class time: public time_zone
- {
- public:
- time (unsigned short hours, unsigned short minutes, double seconds);
- time (unsigned short hours, unsigned short minutes, double seconds,
- short zone_hours, short zone_minutes);
-
- unsigned short
- hours () const;
-
- void
- hours (unsigned short);
-
- unsigned short
- minutes () const;
-
- void
- minutes (unsigned short);
-
- double
- seconds () const;
-
- void
- seconds (double);
-
- private:
- unsigned short hours_;
- unsigned short minutes_;
- double seconds_;
- };
-
- bool
- operator== (const time&, const time&);
-
- bool
- operator!= (const time&, const time&);
-
-
- class date_time: public time_zone
- {
- public:
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes, double seconds);
-
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes, double seconds,
- short zone_hours, short zone_minutes);
-
- int
- year () const;
-
- void
- year (int);
-
- unsigned short
- month () const;
-
- void
- month (unsigned short);
-
- unsigned short
- day () const;
-
- void
- day (unsigned short);
-
- unsigned short
- hours () const;
-
- void
- hours (unsigned short);
-
- unsigned short
- minutes () const;
-
- void
- minutes (unsigned short);
-
- double
- seconds () const;
-
- void
- seconds (double);
-
- private:
- int year_;
- unsigned short month_;
- unsigned short day_;
- unsigned short hours_;
- unsigned short minutes_;
- double seconds_;
- };
-
- bool
- operator== (const date_time&, const date_time&);
-
- bool
- operator!= (const date_time&, const date_time&);
-
-
- class duration
- {
- public:
- duration (bool negative,
- unsigned int years, unsigned int months, unsigned int days,
- unsigned int hours, unsigned int minutes, double seconds);
-
- bool
- negative () const;
-
- void
- negative (bool);
-
- unsigned int
- years () const;
-
- void
- years (unsigned int);
-
- unsigned int
- months () const;
-
- void
- months (unsigned int);
-
- unsigned int
- days () const;
-
- void
- days (unsigned int);
-
- unsigned int
- hours () const;
-
- void
- hours (unsigned int);
-
- unsigned int
- minutes () const;
-
- void
- minutes (unsigned int);
-
- double
- seconds () const;
-
- void
- seconds (double);
-
- private:
- bool negative_;
- unsigned int years_;
- unsigned int months_;
- unsigned int days_;
- unsigned int hours_;
- unsigned int minutes_;
- double seconds_;
- };
-
- bool
- operator== (const duration&, const duration&);
-
- bool
- operator!= (const duration&, const duration&);
- }
- }
-}
-
-#include <xsd/cxx/parser/xml-schema.ixx>
-#include <xsd/cxx/parser/xml-schema.txx>
-
-#endif // XSD_CXX_PARSER_XML_SCHEMA_HXX
diff --git a/xsd/libxsd/xsd/cxx/parser/xml-schema.ixx b/xsd/libxsd/xsd/cxx/parser/xml-schema.ixx
deleted file mode 100644
index 06ead34..0000000
--- a/xsd/libxsd/xsd/cxx/parser/xml-schema.ixx
+++ /dev/null
@@ -1,1021 +0,0 @@
-// file : xsd/cxx/parser/xml-schema.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <new> // operator new/delete
-#include <cstring> // std::memcpy, std::memcmp
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // string_sequence
- //
- template <typename C>
- string_sequence<C>::
- string_sequence ()
- {
- }
-
- template <typename C>
- string_sequence<C>::
- string_sequence (size_type n, const value_type& x)
- : base (n, x)
- {
- }
-
- template <typename C>
- template <typename I>
- string_sequence<C>::
- string_sequence (const I& begin, const I& end)
- : base (begin, end)
- {
- }
-
- template <typename C>
- inline bool
- operator!= (const string_sequence<C>& a, const string_sequence<C>& b)
- {
- return !(a == b);
- }
-
- // qname
- //
- template <typename C>
- inline qname<C>::
- qname (const std::basic_string<C>& name)
- : name_ (name)
- {
- }
-
- template <typename C>
- inline qname<C>::
- qname (const std::basic_string<C>& prefix,
- const std::basic_string<C>& name)
- : prefix_ (prefix), name_ (name)
- {
- }
-
- template <typename C>
- void qname<C>::
- swap (qname<C>& x)
- {
- prefix_.swap (x.prefix_);
- name_.swap (x.name_);
- }
-
- template <typename C>
- inline const std::basic_string<C>& qname<C>::
- prefix () const
- {
- return prefix_;
- }
-
- template <typename C>
- inline std::basic_string<C>& qname<C>::
- prefix ()
- {
- return prefix_;
- }
-
- template <typename C>
- inline void qname<C>::
- prefix (const std::basic_string<C>& prefix)
- {
- prefix_ = prefix;
- }
-
- template <typename C>
- inline const std::basic_string<C>& qname<C>::
- name () const
- {
- return name_;
- }
-
- template <typename C>
- inline std::basic_string<C>& qname<C>::
- name ()
- {
- return name_;
- }
-
- template <typename C>
- inline void qname<C>::
- name (const std::basic_string<C>& name)
- {
- name_ = name;
- }
-
- template <typename C>
- inline bool
- operator== (const qname<C>& a, const qname<C>& b)
- {
- return a.prefix () == b.prefix () && a.name () == b.name ();
- }
-
- template <typename C>
- inline bool
- operator!= (const qname<C>& a, const qname<C>& b)
- {
- return !(a == b);
- }
-
- // buffer
- //
- inline buffer::
- ~buffer ()
- {
- if (data_)
- operator delete (data_);
- }
-
- inline buffer::
- buffer (size_t size)
- : data_ (0), size_ (0), capacity_ (0)
- {
- capacity (size);
- size_ = size;
- }
-
- inline buffer::
- buffer (size_t size, size_t cap)
- : data_ (0), size_ (0), capacity_ (0)
- {
- if (size > cap)
- throw bounds ();
-
- capacity (cap);
- size_ = size;
- }
-
- inline buffer::
- buffer (const void* data, size_t size)
- : data_ (0), size_ (0), capacity_ (0)
- {
- capacity (size);
- size_ = size;
-
- if (size_)
- std::memcpy (data_, data, size_);
- }
-
- inline buffer::
- buffer (const void* data, size_t size, size_t cap)
- : data_ (0), size_ (0), capacity_ (0)
- {
- if (size > cap)
- throw bounds ();
-
- capacity (cap);
- size_ = size;
-
- if (size_)
- std::memcpy (data_, data, size_);
- }
-
- inline buffer::
- buffer (void* data, size_t size, size_t cap, bool own)
- : data_ (0), size_ (0), capacity_ (0)
- {
- if (size > cap)
- throw bounds ();
-
- if (own)
- {
- data_ = reinterpret_cast<char*> (data);
- size_ = size;
- capacity_ = cap;
- }
- else
- {
- capacity (cap);
- size_ = size;
-
- if (size_)
- std::memcpy (data_, data, size_);
- }
- }
-
- inline buffer::
- buffer (const buffer& other)
- : data_ (0), size_ (0), capacity_ (0)
- {
- capacity (other.capacity_);
- size_ = other.size_;
-
- if (size_)
- std::memcpy (data_, other.data_, size_);
- }
-
- inline buffer& buffer::
- operator= (const buffer& other)
- {
- if (this != &other)
- {
- capacity (other.capacity_, false);
- size_ = other.size_;
-
- if (size_)
- std::memcpy (data_, other.data_, size_);
- }
-
- return *this;
- }
-
- inline size_t buffer::
- capacity () const
- {
- return capacity_;
- }
-
- inline bool buffer::
- capacity (size_t cap)
- {
- return capacity (cap, true);
- }
-
- inline size_t buffer::
- size () const
- {
- return size_;
- }
-
- inline bool buffer::
- size (size_t size)
- {
- bool r (false);
-
- if (size > capacity_)
- r = capacity (size);
-
- size_ = size;
-
- return r;
- }
-
- inline const char* buffer::
- data () const
- {
- return data_;
- }
-
- inline char* buffer::
- data ()
- {
- return data_;
- }
-
- inline const char* buffer::
- begin () const
- {
- return data_;
- }
-
- inline char* buffer::
- begin ()
- {
- return data_;
- }
-
- inline const char* buffer::
- end () const
- {
- return data_ + size_;
- }
-
- inline char* buffer::
- end ()
- {
- return data_ + size_;
- }
-
- inline void buffer::
- swap (buffer& other)
- {
- char* tmp_data (data_);
- size_t tmp_size (size_);
- size_t tmp_capacity (capacity_);
-
- data_ = other.data_;
- size_ = other.size_;
- capacity_ = other.capacity_;
-
- other.data_ = tmp_data;
- other.size_ = tmp_size;
- other.capacity_ = tmp_capacity;
- }
-
- inline bool buffer::
- capacity (size_t capacity, bool copy)
- {
- if (size_ > capacity)
- throw bounds ();
-
- if (capacity <= capacity_)
- {
- return false; // Do nothing if shrinking is requested.
- }
- else
- {
- char* data (reinterpret_cast<char*> (operator new (capacity)));
-
- if (copy && size_ > 0)
- std::memcpy (data, data_, size_);
-
- if (data_)
- operator delete (data_);
-
- data_ = data;
- capacity_ = capacity;
-
- return true;
- }
- }
-
- inline bool
- operator== (const buffer& a, const buffer& b)
- {
- return a.size () == b.size () &&
- std::memcmp (a.data (), b.data (), a.size ()) == 0;
- }
-
- inline bool
- operator!= (const buffer& a, const buffer& b)
- {
- return !(a == b);
- }
-
- // time_zone
- //
- inline time_zone::
- time_zone ()
- : present_ (false)
- {
- }
-
- inline time_zone::
- time_zone (short h, short m)
- : present_ (true), hours_ (h), minutes_ (m)
- {
- }
-
- inline bool time_zone::
- zone_present () const
- {
- return present_;
- }
-
- inline void time_zone::
- zone_reset ()
- {
- present_ = false;
- }
-
- inline short time_zone::
- zone_hours () const
- {
- return hours_;
- }
-
- inline void time_zone::
- zone_hours (short h)
- {
- hours_ = h;
- present_ = true;
- }
-
- inline short time_zone::
- zone_minutes () const
- {
- return minutes_;
- }
-
- inline void time_zone::
- zone_minutes (short m)
- {
- minutes_ = m;
- present_ = true;
- }
-
- inline bool
- operator== (const time_zone& x, const time_zone& y)
- {
- return x.zone_present ()
- ? y.zone_present () &&
- x.zone_hours () == y.zone_hours () &&
- x.zone_minutes () == y.zone_minutes ()
- : !y.zone_present ();
- }
-
- inline bool
- operator!= (const time_zone& x, const time_zone& y)
- {
- return !(x == y);
- }
-
- // gday
- //
- inline gday::
- gday (unsigned short day)
- : day_ (day)
- {
- }
-
- inline gday::
- gday (unsigned short day, short zh, short zm)
- : time_zone (zh, zm), day_ (day)
- {
- }
-
- inline unsigned short gday::
- day () const
- {
- return day_;
- }
-
- inline void gday::
- day (unsigned short day)
- {
- day_ = day;
- }
-
- inline bool
- operator== (const gday& a, const gday& b)
- {
- const time_zone& az = a;
- const time_zone& bz = b;
-
- return a.day () == b.day () && az == bz;
- }
-
- inline bool
- operator!= (const gday& a, const gday& b)
- {
- return !(a == b);
- }
-
- // gmonth
- //
- inline gmonth::
- gmonth (unsigned short month)
- : month_ (month)
- {
- }
-
- inline gmonth::
- gmonth (unsigned short month, short zh, short zm)
- : time_zone (zh, zm), month_ (month)
- {
- }
-
- inline unsigned short gmonth::
- month () const
- {
- return month_;
- }
-
- inline void gmonth::
- month (unsigned short month)
- {
- month_ = month;
- }
-
- inline bool
- operator== (const gmonth& a, const gmonth& b)
- {
- const time_zone& az = a;
- const time_zone& bz = b;
-
- return a.month () == b.month () && az == bz;
- }
-
- inline bool
- operator!= (const gmonth& a, const gmonth& b)
- {
- return !(a == b);
- }
-
- // gyear
- //
- inline gyear::
- gyear (int year)
- : year_ (year)
- {
- }
-
- inline gyear::
- gyear (int year, short zh, short zm)
- : time_zone (zh, zm), year_ (year)
- {
- }
-
- inline int gyear::
- year () const
- {
- return year_;
- }
-
- inline void gyear::
- year (int year)
- {
- year_ = year;
- }
-
- inline bool
- operator== (const gyear& a, const gyear& b)
- {
- const time_zone& az = a;
- const time_zone& bz = b;
-
- return a.year () == b.year () && az == bz;
- }
-
- inline bool
- operator!= (const gyear& a, const gyear& b)
- {
- return !(a == b);
- }
-
- // gmonth_day
- //
- inline gmonth_day::
- gmonth_day (unsigned short month, unsigned short day)
- : month_ (month), day_ (day)
- {
- }
-
- inline gmonth_day::
- gmonth_day (unsigned short month,
- unsigned short day,
- short zh, short zm)
- : time_zone (zh, zm), month_ (month), day_ (day)
- {
- }
-
- inline unsigned short gmonth_day::
- month () const
- {
- return month_;
- }
-
- inline void gmonth_day::
- month (unsigned short month)
- {
- month_ = month;
- }
-
- inline unsigned short gmonth_day::
- day () const
- {
- return day_;
- }
-
- inline void gmonth_day::
- day (unsigned short day)
- {
- day_ = day;
- }
-
- inline bool
- operator== (const gmonth_day& a, const gmonth_day& b)
- {
- const time_zone& az = a;
- const time_zone& bz = b;
-
- return a.month () == b.month () &&
- a.day () == b.day () &&
- az == bz;
- }
-
- inline bool
- operator!= (const gmonth_day& a, const gmonth_day& b)
- {
- return !(a == b);
- }
-
- // gyear_month
- //
- inline gyear_month::
- gyear_month (int year, unsigned short month)
- : year_ (year), month_ (month)
- {
- }
-
- inline gyear_month::
- gyear_month (int year, unsigned short month,
- short zh, short zm)
- : time_zone (zh, zm), year_ (year), month_ (month)
- {
- }
-
- inline int gyear_month::
- year () const
- {
- return year_;
- }
-
- inline void gyear_month::
- year (int year)
- {
- year_ = year;
- }
-
- inline unsigned short gyear_month::
- month () const
- {
- return month_;
- }
-
- inline void gyear_month::
- month (unsigned short month)
- {
- month_ = month;
- }
-
- inline bool
- operator== (const gyear_month& a, const gyear_month& b)
- {
- const time_zone& az = a;
- const time_zone& bz = b;
-
- return a.year () == b.year () &&
- a.month () == b.month () &&
- az == bz;
- }
-
- inline bool
- operator!= (const gyear_month& a, const gyear_month& b)
- {
- return !(a == b);
- }
-
- // date
- //
- inline date::
- date (int year, unsigned short month, unsigned short day)
- : year_ (year), month_ (month), day_ (day)
- {
- }
-
- inline date::
- date (int year, unsigned short month, unsigned short day,
- short zh, short zm)
- : time_zone (zh, zm), year_ (year), month_ (month), day_ (day)
- {
- }
-
- inline int date::
- year () const
- {
- return year_;
- }
-
- inline void date::
- year (int year)
- {
- year_ = year;
- }
-
- inline unsigned short date::
- month () const
- {
- return month_;
- }
-
- inline void date::
- month (unsigned short month)
- {
- month_ = month;
- }
-
- inline unsigned short date::
- day () const
- {
- return day_;
- }
-
- inline void date::
- day (unsigned short day)
- {
- day_ = day;
- }
-
- inline bool
- operator== (const date& a, const date& b)
- {
- const time_zone& az = a;
- const time_zone& bz = b;
-
- return a.year () == b.year () &&
- a.month () == b.month () &&
- a.day () == b.day () &&
- az == bz;
- }
-
- inline bool
- operator!= (const date& a, const date& b)
- {
- return !(a == b);
- }
-
- // time
- //
- inline time::
- time (unsigned short hours, unsigned short minutes, double seconds)
- : hours_ (hours), minutes_ (minutes), seconds_ (seconds)
- {
- }
-
- inline time::
- time (unsigned short hours, unsigned short minutes, double seconds,
- short zh, short zm)
- : time_zone (zh, zm),
- hours_ (hours), minutes_ (minutes), seconds_ (seconds)
- {
- }
-
- inline unsigned short time::
- hours () const
- {
- return hours_;
- }
-
- inline void time::
- hours (unsigned short hours)
- {
- hours_ = hours;
- }
-
- inline unsigned short time::
- minutes () const
- {
- return minutes_;
- }
-
- inline void time::
- minutes (unsigned short minutes)
- {
- minutes_ = minutes;
- }
-
- inline double time::
- seconds () const
- {
- return seconds_;
- }
-
- inline void time::
- seconds (double seconds)
- {
- seconds_ = seconds;
- }
-
- inline bool
- operator== (const time& a, const time& b)
- {
- const time_zone& az = a;
- const time_zone& bz = b;
-
- return a.hours () == b.hours () &&
- a.minutes () == b.minutes () &&
- a.seconds () == b.seconds () &&
- az == bz;
- }
-
- inline bool
- operator!= (const time& a, const time& b)
- {
- return !(a == b);
- }
-
- // date_time
- //
- inline date_time::
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes, double seconds)
- : year_ (year), month_ (month), day_ (day),
- hours_ (hours), minutes_ (minutes), seconds_ (seconds)
- {
- }
-
- inline date_time::
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes, double seconds,
- short zh, short zm)
- : time_zone (zh, zm),
- year_ (year), month_ (month), day_ (day),
- hours_ (hours), minutes_ (minutes), seconds_ (seconds)
- {
- }
-
- inline int date_time::
- year () const
- {
- return year_;
- }
-
- inline void date_time::
- year (int year)
- {
- year_ = year;
- }
-
- inline unsigned short date_time::
- month () const
- {
- return month_;
- }
-
- inline void date_time::
- month (unsigned short month)
- {
- month_ = month;
- }
-
- inline unsigned short date_time::
- day () const
- {
- return day_;
- }
-
- inline void date_time::
- day (unsigned short day)
- {
- day_ = day;
- }
-
- inline unsigned short date_time::
- hours () const
- {
- return hours_;
- }
-
- inline void date_time::
- hours (unsigned short hours)
- {
- hours_ = hours;
- }
-
- inline unsigned short date_time::
- minutes () const
- {
- return minutes_;
- }
-
- inline void date_time::
- minutes (unsigned short minutes)
- {
- minutes_ = minutes;
- }
-
- inline double date_time::
- seconds () const
- {
- return seconds_;
- }
-
- inline void date_time::
- seconds (double seconds)
- {
- seconds_ = seconds;
- }
-
- inline bool
- operator== (const date_time& a, const date_time& b)
- {
- const time_zone& az = a;
- const time_zone& bz = b;
-
- return a.year () == b.year () &&
- a.month () == b.month () &&
- a.day () == b.day () &&
- a.hours () == b.hours () &&
- a.minutes () == b.minutes () &&
- a.seconds () == b.seconds () &&
- az == bz;
- }
-
- inline bool
- operator!= (const date_time& a, const date_time& b)
- {
- return !(a == b);
- }
-
- // duration
- //
- inline duration::
- duration (bool negative,
- unsigned int years, unsigned int months, unsigned int days,
- unsigned int hours, unsigned int minutes, double seconds)
- : negative_ (negative),
- years_ (years), months_ (months), days_ (days),
- hours_ (hours), minutes_ (minutes), seconds_ (seconds)
- {
- }
-
- inline bool duration::
- negative () const
- {
- return negative_;
- }
-
- inline void duration::
- negative (bool negative)
- {
- negative_ = negative;
- }
-
- inline unsigned int duration::
- years () const
- {
- return years_;
- }
-
- inline void duration::
- years (unsigned int years)
- {
- years_ = years;
- }
-
- inline unsigned int duration::
- months () const
- {
- return months_;
- }
-
- inline void duration::
- months (unsigned int months)
- {
- months_ = months;
- }
-
- inline unsigned int duration::
- days () const
- {
- return days_;
- }
-
- inline void duration::
- days (unsigned int days)
- {
- days_ = days;
- }
-
- inline unsigned int duration::
- hours () const
- {
- return hours_;
- }
-
- inline void duration::
- hours (unsigned int hours)
- {
- hours_ = hours;
- }
-
- inline unsigned int duration::
- minutes () const
- {
- return minutes_;
- }
-
- inline void duration::
- minutes (unsigned int minutes)
- {
- minutes_ = minutes;
- }
-
- inline double duration::
- seconds () const
- {
- return seconds_;
- }
-
- inline void duration::
- seconds (double seconds)
- {
- seconds_ = seconds;
- }
-
- inline bool
- operator== (const duration& a, const duration& b)
- {
- return a.negative () == b.negative () &&
- a.years () == b.years () &&
- a.months () == b.months () &&
- a.days () == b.days () &&
- a.hours () == b.hours () &&
- a.minutes () == b.minutes () &&
- a.seconds () == b.seconds ();
- }
-
- inline bool
- operator!= (const duration& a, const duration& b)
- {
- return !(a == b);
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/parser/xml-schema.txx b/xsd/libxsd/xsd/cxx/parser/xml-schema.txx
deleted file mode 100644
index 90e558d..0000000
--- a/xsd/libxsd/xsd/cxx/parser/xml-schema.txx
+++ /dev/null
@@ -1,33 +0,0 @@
-// file : xsd/cxx/parser/xml-schema.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- // string_sequence
- //
- template <typename C>
- bool
- operator== (const string_sequence<C>& a, const string_sequence<C>& b)
- {
- if (a.size () != b.size ())
- return false;
-
- for (typename string_sequence<C>::const_iterator
- ai (a.begin ()), bi (b.begin ()), ae (a.end ());
- ai != ae; ++ai, ++bi)
- {
- if (*ai != *bi)
- return false;
- }
-
- return true;
- }
- }
- }
-}
-
diff --git a/xsd/libxsd/xsd/cxx/post.hxx b/xsd/libxsd/xsd/cxx/post.hxx
deleted file mode 100644
index 7a9c63e..0000000
--- a/xsd/libxsd/xsd/cxx/post.hxx
+++ /dev/null
@@ -1,9 +0,0 @@
-// file : xsd/cxx/post.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifdef _MSC_VER
-# if (_MSC_VER >= 1400)
-# include <xsd/cxx/compilers/vc-8/post.hxx>
-# endif
-#endif
diff --git a/xsd/libxsd/xsd/cxx/pre.hxx b/xsd/libxsd/xsd/cxx/pre.hxx
deleted file mode 100644
index f0633c9..0000000
--- a/xsd/libxsd/xsd/cxx/pre.hxx
+++ /dev/null
@@ -1,11 +0,0 @@
-// file : xsd/cxx/pre.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifdef _MSC_VER
-# if (_MSC_VER >= 1400)
-# include <xsd/cxx/compilers/vc-8/pre.hxx>
-# else
-# error Microsoft Visual C++ 7.1 and earlier are not supported
-# endif
-#endif
diff --git a/xsd/libxsd/xsd/cxx/ro-string.hxx b/xsd/libxsd/xsd/cxx/ro-string.hxx
deleted file mode 100644
index 2140e44..0000000
--- a/xsd/libxsd/xsd/cxx/ro-string.hxx
+++ /dev/null
@@ -1,429 +0,0 @@
-// file : xsd/cxx/ro-string.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_RO_STRING_HXX
-#define XSD_CXX_RO_STRING_HXX
-
-#include <string>
-#include <cstddef> // std::size_t
-#include <ostream>
-
-namespace xsd
-{
- namespace cxx
- {
- // Read-only string class template.
- //
- template <typename C>
- class ro_string
- {
- public:
- typedef std::char_traits<C> traits_type;
- typedef std::size_t size_type;
-
- static const size_type npos = ~(size_type (0));
-
- public:
- ro_string ()
- : data_ (0), size_ (0)
- {
- }
-
- ro_string (const C* s)
- : data_ (s), size_ (traits_type::length (s))
- {
- }
-
- ro_string (const C* s, size_type size)
- : data_ (s), size_ (size)
- {
- }
-
- ro_string (const std::basic_string<C>& s)
- : data_ (s.data ()), size_ (s.size ())
- {
- }
-
- operator std::basic_string<C> () const
- {
- return std::basic_string<C> (data (), size ());
- }
-
- private:
- ro_string (const ro_string&);
-
- ro_string&
- operator= (const ro_string&);
-
- public:
- // The returned string is not necessarily terminated with '\0'.
- // If size() returns 0, the returned pointer may be 0.
- //
- const C*
- data () const
- {
- return data_;
- }
-
- size_type
- size () const
- {
- return size_;
- }
-
- size_type
- length () const
- {
- return size ();
- }
-
- public:
- bool
- empty () const
- {
- return size () == 0;
- }
-
- const C&
- operator[] (size_type pos) const
- {
- return data ()[pos];
- }
-
- public:
- void
- assign (const C* s)
- {
- data_ = s;
- size_ = traits_type::length (s);
- }
-
- void
- assign (const C* s, size_type size)
- {
- data_ = s;
- size_ = size;
- }
-
- void
- assign (const std::basic_string<C>& s)
- {
- data_ = s.c_str ();
- size_ = s.size ();
- }
-
- public:
- int
- compare (const ro_string& str) const
- {
- return compare (str.data (), str.size ());
- }
-
- int
- compare (const std::basic_string<C>& str) const
- {
- return compare (str.c_str (), str.size ());
- }
-
- int
- compare (const C* str) const
- {
- return compare (str, traits_type::length (str));
- }
-
- int
- compare (const C* str, size_type n) const
- {
- size_type s1 (size ());
- size_type s (s1 < n ? s1 : n);
-
- int r (s != 0 ? traits_type::compare (data (), str, s) : 0);
-
- if (!r && s1 != n)
- r = s1 < n ? -1 : 1;
-
- return r;
- }
-
- public:
- size_type
- find (C c, size_type pos = 0) const;
-
- private:
- const C* data_;
- size_type size_;
- };
-
- // operator==
- //
- template <typename C>
- inline bool
- operator== (const ro_string<C>& a, const ro_string<C>& b)
- {
- return a.compare (b) == 0;
- }
-
- template <typename C>
- inline bool
- operator== (const ro_string<C>& a, const std::basic_string<C>& b)
- {
- return a.compare (b) == 0;
- }
-
- template <typename C>
- inline bool
- operator== (const std::basic_string<C>& a, const ro_string<C>& b)
- {
- return b.compare (a) == 0;
- }
-
- template <typename C>
- inline bool
- operator== (const ro_string<C>& a, const C* b)
- {
- return a.compare (b) == 0;
- }
-
- template <typename C>
- inline bool
- operator== (const C* a, const ro_string<C>& b)
- {
- return b.compare (a) == 0;
- }
-
- // operator!=
- //
- template <typename C>
- inline bool
- operator!= (const ro_string<C>& a, const ro_string<C>& b)
- {
- return a.compare (b) != 0;
- }
-
- template <typename C>
- inline bool
- operator!= (const ro_string<C>& a, const std::basic_string<C>& b)
- {
- return a.compare (b) != 0;
- }
-
- template <typename C>
- inline bool
- operator!= (const std::basic_string<C>& a, const ro_string<C>& b)
- {
- return b.compare (a) != 0;
- }
-
- template <typename C>
- inline bool
- operator!= (const ro_string<C>& a, const C* b)
- {
- return a.compare (b) != 0;
- }
-
- template <typename C>
- inline bool
- operator!= (const C* a, const ro_string<C>& b)
- {
- return b.compare (a) != 0;
- }
-
- // operator<
- //
- template <typename C>
- inline bool
- operator< (const ro_string<C>& l, const ro_string<C>& r)
- {
- return l.compare (r) < 0;
- }
-
- template <typename C>
- inline bool
- operator< (const ro_string<C>& l, const std::basic_string<C>& r)
- {
- return l.compare (r) < 0;
- }
-
- template <typename C>
- inline bool
- operator< (const std::basic_string<C>& l, const ro_string<C>& r)
- {
- return r.compare (l) > 0;
- }
-
- template <typename C>
- inline bool
- operator< (const ro_string<C>& l, const C* r)
- {
- return l.compare (r) < 0;
- }
-
- template <typename C>
- inline bool
- operator< (const C* l, const ro_string<C>& r)
- {
- return r.compare (l) > 0;
- }
-
-
- // operator>
- //
- template <typename C>
- inline bool
- operator> (const ro_string<C>& l, const ro_string<C>& r)
- {
- return l.compare (r) > 0;
- }
-
- template <typename C>
- inline bool
- operator> (const ro_string<C>& l, const std::basic_string<C>& r)
- {
- return l.compare (r) > 0;
- }
-
- template <typename C>
- inline bool
- operator> (const std::basic_string<C>& l, const ro_string<C>& r)
- {
- return r.compare (l) < 0;
- }
-
- template <typename C>
- inline bool
- operator> (const ro_string<C>& l, const C* r)
- {
- return l.compare (r) > 0;
- }
-
- template <typename C>
- inline bool
- operator> (const C* l, const ro_string<C>& r)
- {
- return r.compare (l) < 0;
- }
-
- // operator<=
- //
- template <typename C>
- inline bool
- operator<= (const ro_string<C>& l, const ro_string<C>& r)
- {
- return l.compare (r) <= 0;
- }
-
- template <typename C>
- inline bool
- operator<= (const ro_string<C>& l, const std::basic_string<C>& r)
- {
- return l.compare (r) <= 0;
- }
-
- template <typename C>
- inline bool
- operator<= (const std::basic_string<C>& l, const ro_string<C>& r)
- {
- return r.compare (l) >= 0;
- }
-
- template <typename C>
- inline bool
- operator<= (const ro_string<C>& l, const C* r)
- {
- return l.compare (r) <= 0;
- }
-
- template <typename C>
- inline bool
- operator<= (const C* l, const ro_string<C>& r)
- {
- return r.compare (l) >= 0;
- }
-
-
- // operator>=
- //
- template <typename C>
- inline bool
- operator>= (const ro_string<C>& l, const ro_string<C>& r)
- {
- return l.compare (r) >= 0;
- }
-
- template <typename C>
- inline bool
- operator>= (const ro_string<C>& l, const std::basic_string<C>& r)
- {
- return l.compare (r) >= 0;
- }
-
- template <typename C>
- inline bool
- operator>= (const std::basic_string<C>& l, const ro_string<C>& r)
- {
- return r.compare (l) <= 0;
- }
-
- template <typename C>
- inline bool
- operator>= (const ro_string<C>& l, const C* r)
- {
- return l.compare (r) >= 0;
- }
-
- template <typename C>
- inline bool
- operator>= (const C* l, const ro_string<C>& r)
- {
- return r.compare (l) <= 0;
- }
-
- // operator<<
- //
- template<typename C>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const ro_string<C>& str)
- {
- if (str.size () != 0)
- os.write (str.data (), static_cast<std::streamsize> (str.size ()));
-
- return os;
- }
-
- // operator+=
- //
- template<typename C>
- std::basic_string<C>&
- operator+= (std::basic_string<C>& l, const ro_string<C>& r)
- {
- l.append (r.data (), r.size ());
- return l;
- }
-
- // Trim leading and trailing XML whitespaces. Return the new
- // string size.
- //
- template <typename C>
- typename ro_string<C>::size_type
- trim_left (ro_string<C>&);
-
- template <typename C>
- typename ro_string<C>::size_type
- trim_right (ro_string<C>&);
-
- template <typename C>
- typename ro_string<C>::size_type
- trim (ro_string<C>&);
-
- // Trim leading and trailing XML whitespaces.
- //
- template<typename C>
- std::basic_string<C>
- trim (const std::basic_string<C>&);
- }
-}
-
-#include <xsd/cxx/ro-string.txx>
-
-#endif // XSD_CXX_RO_STRING_HXX
diff --git a/xsd/libxsd/xsd/cxx/ro-string.txx b/xsd/libxsd/xsd/cxx/ro-string.txx
deleted file mode 100644
index 56d5bbd..0000000
--- a/xsd/libxsd/xsd/cxx/ro-string.txx
+++ /dev/null
@@ -1,132 +0,0 @@
-// file : xsd/cxx/ro-string.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- template <typename C>
- typename ro_string<C>::size_type ro_string<C>::
- find (C c, size_type pos) const
- {
- size_type r (npos);
-
- if (pos < size_)
- {
- if (const C* p = traits_type::find(data_ + pos, size_ - pos, c))
- r = p - data_;
- }
-
- return r;
- }
-
- template<typename C>
- typename ro_string<C>::size_type
- trim_left (ro_string<C>& s)
- {
- typename ro_string<C>::size_type size (s.size ());
-
- if (size != 0)
- {
- const C* f (s.data ());
- const C* l (f + size);
- const C* of (f);
-
- while (f < l &&
- (*f == C (0x20) || *f == C (0x0A) ||
- *f == C (0x0D) || *f == C (0x09)))
- ++f;
-
- if (f != of)
- {
- size = f <= l ? l - f : 0;
- s.assign ((f <= l ? f : 0), size);
- }
- }
-
- return size;
- }
-
- template<typename C>
- typename ro_string<C>::size_type
- trim_right (ro_string<C>& s)
- {
- typename ro_string<C>::size_type size (s.size ());
-
- if (size != 0)
- {
- const C* f (s.data ());
- const C* l (f + size - 1);
- const C* ol (l);
-
- while (l > f &&
- (*l == C (0x20) || *l == C (0x0A) ||
- *l == C (0x0D) || *l == C (0x09)))
- --l;
-
- if (l != ol)
- {
- size = f <= l ? l - f + 1 : 0;
- s.assign ((f <= l ? f : 0), size);
- }
- }
-
- return size;
- }
-
- template<typename C>
- typename ro_string<C>::size_type
- trim (ro_string<C>& s)
- {
- typename ro_string<C>::size_type size (s.size ());
-
- if (size != 0)
- {
- const C* f (s.data ());
- const C* l (f + size);
-
- const C* of (f);
-
- while (f < l &&
- (*f == C (0x20) || *f == C (0x0A) ||
- *f == C (0x0D) || *f == C (0x09)))
- ++f;
-
- --l;
-
- const C* ol (l);
-
- while (l > f &&
- (*l == C (0x20) || *l == C (0x0A) ||
- *l == C (0x0D) || *l == C (0x09)))
- --l;
-
- if (f != of || l != ol)
- {
- size = f <= l ? l - f + 1 : 0;
- s.assign ((f <= l ? f : 0), size);
- }
- }
-
- return size;
- }
-
- template<typename C>
- std::basic_string<C>
- trim (const std::basic_string<C>& s)
- {
- ro_string<C> tmp (s);
- typename ro_string<C>::size_type size (tmp.size ());
- trim (tmp);
-
- // If we didn't change the string then return the original to help
- // avoid copying for smart (ref counted) string implementations.
- //
- if (size == tmp.size ())
- return s;
- else
- return tmp;
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-common.hxx b/xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-common.hxx
deleted file mode 100644
index 7a9fbff..0000000
--- a/xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-common.hxx
+++ /dev/null
@@ -1,25 +0,0 @@
-// file : xsd/cxx/tree/ace-cdr-stream-common.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_ACE_CDR_STREAM_COMMON_HXX
-#define XSD_CXX_TREE_ACE_CDR_STREAM_COMMON_HXX
-
-#include <xsd/cxx/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // Base exception for ACE CDR insertion/extraction exceptions.
- //
- struct ace_cdr_stream_operation: xsd::cxx::exception
- {
- };
- }
- }
-}
-
-#endif // XSD_CXX_TREE_ACE_CDR_STREAM_COMMON_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-extraction.hxx b/xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-extraction.hxx
deleted file mode 100644
index b843ffa..0000000
--- a/xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-extraction.hxx
+++ /dev/null
@@ -1,347 +0,0 @@
-// file : xsd/cxx/tree/ace-cdr-stream-extraction.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_ACE_CDR_STREAM_EXTRACTION_HXX
-#define XSD_CXX_TREE_ACE_CDR_STREAM_EXTRACTION_HXX
-
-#include <cstddef> // std::size_t
-#include <string>
-
-#include <ace/ACE.h> // ACE::strdelete
-#include <ace/CDR_Stream.h>
-
-#include <xsd/cxx/config.hxx> // XSD_CXX11
-
-#ifdef XSD_CXX11
-# include <memory> // std::unique_ptr
-#else
-# include <xsd/cxx/auto-array.hxx>
-#endif
-
-#include <xsd/cxx/tree/buffer.hxx>
-#include <xsd/cxx/tree/istream.hxx>
-#include <xsd/cxx/tree/ace-cdr-stream-common.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- struct ace_cdr_stream_extraction: ace_cdr_stream_operation
- {
- virtual const char*
- what () const throw ()
- {
- return "ACE CDR stream extraction operation failed";
- }
- };
-
-
- // as_size
- //
-
-#ifdef XSD_CXX_TREE_USE_64_BIT_SIZE
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_size<T>& x)
- {
- ACE_CDR::ULongLong r;
-
- if (!s.impl ().read_ulonglong (r) ||
- r > ~(T (0)))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-#else
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_size<T>& x)
- {
- ACE_CDR::ULong r;
-
- if (!s.impl ().read_ulong (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-#endif
-
-
- // 8-bit
- //
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_int8<T>& x)
- {
- ACE_CDR::Octet r;
-
- if (!s.impl ().read_octet (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_uint8<T>& x)
- {
- ACE_CDR::Octet r;
-
- if (!s.impl ().read_octet (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
-
- // 16-bit
- //
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_int16<T>& x)
- {
- ACE_CDR::Short r;
-
- if (!s.impl ().read_short (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_uint16<T>& x)
- {
- ACE_CDR::UShort r;
-
- if (!s.impl ().read_ushort (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
-
- // 32-bit
- //
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_int32<T>& x)
- {
- ACE_CDR::Long r;
-
- if (!s.impl ().read_long (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_uint32<T>& x)
- {
- ACE_CDR::ULong r;
-
- if (!s.impl ().read_ulong (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
-
- // 64-bit
- //
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_int64<T>& x)
- {
- ACE_CDR::LongLong r;
-
- if (!s.impl ().read_longlong (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_uint64<T>& x)
- {
- ACE_CDR::ULongLong r;
-
- if (!s.impl ().read_ulonglong (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
-
- // Boolean
- //
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_bool<T>& x)
- {
- ACE_CDR::Boolean r;
-
- if (!s.impl ().read_boolean (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
-
- // Floating-point
- //
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_float32<T>& x)
- {
- ACE_CDR::Float r;
-
- if (!s.impl ().read_float (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
- template <typename T>
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s,
- istream<ACE_InputCDR>::as_float64<T>& x)
- {
- ACE_CDR::Double r;
-
- if (!s.impl ().read_double (r))
- throw ace_cdr_stream_extraction ();
-
- x.x_ = static_cast<T> (r);
-
- return s;
- }
-
- // Extraction of std::basic_string.
- //
-
- namespace bits
- {
- template <typename C>
- struct ace_str_deleter
- {
- void
- operator() (C* s) const
- {
- ACE::strdelete (s);
- }
- };
- }
-
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s, std::basic_string<char>& x)
- {
- typedef bits::ace_str_deleter<char> deleter;
-
- deleter d;
- char* r;
-
- if (!s.impl ().read_string (r))
- throw ace_cdr_stream_extraction ();
-
-#ifdef XSD_CXX11
- std::unique_ptr<char[], deleter&> ar (
-#else
- auto_array<char, deleter> ar (
-#endif
- r, d);
-
- x = r;
- return s;
- }
-
-#ifdef ACE_HAS_WCHAR
- inline istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s, std::basic_string<wchar_t>& x)
- {
- typedef bits::ace_str_deleter<wchar_t> deleter;
-
- deleter d;
- wchar_t* r;
-
- if (!s.impl ().read_wstring (r))
- throw ace_cdr_stream_extraction ();
-
-#ifdef XSD_CXX11
- std::unique_ptr<wchar_t[], deleter&> ar (
-#else
- auto_array<wchar_t, deleter> ar (
-#endif
- r, d);
-
- x = r;
- return s;
- }
-#endif
-
-
- // Extraction of a binary buffer.
- //
- template <typename C>
- istream<ACE_InputCDR>&
- operator>> (istream<ACE_InputCDR>& s, buffer<C>& x)
- {
- ACE_CDR::ULong size;
-
- if (!s.impl ().read_ulong (size))
- throw ace_cdr_stream_extraction ();
-
- x.size (size);
-
- if (!s.impl ().read_octet_array (
- reinterpret_cast<ACE_CDR::Octet*> (x.data ()), size))
- throw ace_cdr_stream_extraction ();
-
- return s;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_ACE_CDR_STREAM_EXTRACTION_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-insertion.hxx b/xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-insertion.hxx
deleted file mode 100644
index 3fa92ad..0000000
--- a/xsd/libxsd/xsd/cxx/tree/ace-cdr-stream-insertion.hxx
+++ /dev/null
@@ -1,248 +0,0 @@
-// file : xsd/cxx/tree/ace-cdr-stream-insertion.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_ACE_CDR_STREAM_INSERTION_HXX
-#define XSD_CXX_TREE_ACE_CDR_STREAM_INSERTION_HXX
-
-#include <cstddef> // std::size_t
-#include <string>
-
-#include <ace/CDR_Stream.h>
-
-#include <xsd/cxx/tree/buffer.hxx>
-#include <xsd/cxx/tree/ostream.hxx>
-#include <xsd/cxx/tree/ace-cdr-stream-common.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- struct ace_cdr_stream_insertion: ace_cdr_stream_operation
- {
- virtual const char*
- what () const throw ()
- {
- return "ACE CDR stream insertion operation failed";
- }
- };
-
-
- // as_size
- //
-
-#ifdef XSD_CXX_TREE_USE_64_BIT_SIZE
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_size<T> x)
- {
- if (!s.impl ().write_ulonglong (
- static_cast<ACE_CDR::ULongLong> (x.x_)))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-#else
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_size<T> x)
- {
- if (x.x_ > ~(ACE_CDR::ULong (0)) ||
- !s.impl ().write_ulong (static_cast<ACE_CDR::ULong> (x.x_)))
- throw ace_cdr_stream_insertion ();
-
- return s;
- }
-#endif
-
-
- // 8-bit
- //
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_int8<T> x)
- {
- ACE_CDR::Octet r (static_cast<ACE_CDR::Octet> (x.x_));
-
- if (!s.impl ().write_octet (r))
- throw ace_cdr_stream_insertion ();
-
- return s;
- }
-
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_uint8<T> x)
- {
- ACE_CDR::Octet r (static_cast<ACE_CDR::Octet> (x.x_));
-
- if (!s.impl ().write_octet (r))
- throw ace_cdr_stream_insertion ();
-
- return s;
- }
-
-
- // 16-bit
- //
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_int16<T> x)
- {
- if (!s.impl ().write_short (static_cast<ACE_CDR::Short> (x.x_)))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_uint16<T> x)
- {
- if (!s.impl ().write_ushort (static_cast<ACE_CDR::UShort> (x.x_)))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-
-
- // 32-bit
- //
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_int32<T> x)
- {
- if (!s.impl ().write_long (static_cast<ACE_CDR::Long> (x.x_)))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_uint32<T> x)
- {
- if (!s.impl ().write_ulong (static_cast<ACE_CDR::ULong> (x.x_)))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-
-
- // 64-bit
- //
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_int64<T> x)
- {
- if (!s.impl ().write_longlong (static_cast<ACE_CDR::LongLong> (x.x_)))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_uint64<T> x)
- {
- if (!s.impl ().write_ulonglong (
- static_cast<ACE_CDR::ULongLong> (x.x_)))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-
-
- // Boolean
- //
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_bool<T> x)
- {
- if (!s.impl ().write_boolean (static_cast<ACE_CDR::Boolean> (x.x_)))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-
-
- // Floating-point
- //
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_float32<T> x)
- {
- if (!s.impl ().write_float (static_cast<ACE_CDR::Float> (x.x_)))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-
- template <typename T>
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- ostream<ACE_OutputCDR>::as_float64<T> x)
- {
- if (!s.impl ().write_double (static_cast<ACE_CDR::Double> (x.x_)))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-
- // Insertion of std::basic_string.
- //
-
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s, const std::basic_string<char>& x)
- {
- // ACE CDR strings are hard-wired with a 32 bit length.
- //
- if (x.length () > ~(ACE_CDR::ULong (0)) ||
- !s.impl ().write_string (
- static_cast<ACE_CDR::ULong> (x.length ()), x.c_str ()))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-
-#ifdef ACE_HAS_WCHAR
- inline ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s,
- const std::basic_string<wchar_t>& x)
- {
- // ACE CDR strings are hard-wired with a 32 bit length.
- //
- if (x.length () > ~(ACE_CDR::ULong (0)) ||
- !s.impl ().write_wstring (
- static_cast<ACE_CDR::ULong> (x.length ()), x.c_str ()))
- throw ace_cdr_stream_insertion ();
- return s;
- }
-#endif
-
- // Insertion of a binary buffer.
- //
- template <typename C>
- ostream<ACE_OutputCDR>&
- operator<< (ostream<ACE_OutputCDR>& s, const buffer<C>& x)
- {
- std::size_t size (x.size ());
-
- // It is not possible to write an array with a 64-bit size.
- //
- if (size > ~(ACE_CDR::ULong (0)) ||
- !s.impl ().write_ulong (static_cast<ACE_CDR::ULong> (size)) ||
- !s.impl ().write_octet_array (
- reinterpret_cast<const ACE_CDR::Octet*> (x.data ()), size))
- throw ace_cdr_stream_insertion ();
-
- return s;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_ACE_CDR_STREAM_INSERTION_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/bits/literals.hxx b/xsd/libxsd/xsd/cxx/tree/bits/literals.hxx
deleted file mode 100644
index a690e76..0000000
--- a/xsd/libxsd/xsd/cxx/tree/bits/literals.hxx
+++ /dev/null
@@ -1,260 +0,0 @@
-// file : xsd/cxx/tree/bits/literals.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_BITS_LITERALS_HXX
-#define XSD_CXX_TREE_BITS_LITERALS_HXX
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- namespace bits
- {
- // Boolean literals
- //
- template<typename C>
- const C*
- true_ ();
-
- template<typename C>
- const C*
- one ();
-
- // Float literals: INF -INF NaN.
- //
- template<typename C>
- const C*
- positive_inf ();
-
- template<typename C>
- const C*
- negative_inf ();
-
- template<typename C>
- const C*
- nan ();
-
- // Optional "not present" literal.
- //
- template<typename C>
- const C*
- not_present ();
-
- // XML Schema namespace
- //
- template <typename C>
- const C*
- xml_schema ();
-
- // Built-in XML Schema type names.
- //
- template <typename C>
- const C*
- any_type ();
-
- template <typename C>
- const C*
- any_simple_type ();
-
- template <typename C>
- const C*
- string ();
-
- template <typename C>
- const C*
- normalized_string ();
-
- template <typename C>
- const C*
- token ();
-
- template <typename C>
- const C*
- name ();
-
- template <typename C>
- const C*
- nmtoken ();
-
- template <typename C>
- const C*
- nmtokens ();
-
- template <typename C>
- const C*
- ncname ();
-
- template <typename C>
- const C*
- language ();
-
- template <typename C>
- const C*
- id ();
-
- template <typename C>
- const C*
- idref ();
-
- template <typename C>
- const C*
- idrefs ();
-
- template <typename C>
- const C*
- any_uri ();
-
- template <typename C>
- const C*
- qname ();
-
- template <typename C>
- const C*
- base64_binary ();
-
- template <typename C>
- const C*
- hex_binary ();
-
- template <typename C>
- const C*
- date ();
-
- template <typename C>
- const C*
- date_time ();
-
- template <typename C>
- const C*
- duration ();
-
- template <typename C>
- const C*
- gday ();
-
- template <typename C>
- const C*
- gmonth ();
-
- template <typename C>
- const C*
- gmonth_day ();
-
- template <typename C>
- const C*
- gyear ();
-
- template <typename C>
- const C*
- gyear_month ();
-
- template <typename C>
- const C*
- time ();
-
- template <typename C>
- const C*
- entity ();
-
- template <typename C>
- const C*
- entities ();
-
- // gday ("---") and gmonth ("--") prefixes.
- //
- template <typename C>
- const C*
- gday_prefix ();
-
- template <typename C>
- const C*
- gmonth_prefix ();
-
- // Exception and diagnostics string literals.
- //
- template <typename C>
- const C*
- ex_error_error (); // " error: "
-
- template <typename C>
- const C*
- ex_error_warning (); // " warning: "
-
- template <typename C>
- const C*
- ex_parsing_msg (); // "instance document parsing failed"
-
- template <typename C>
- const C*
- ex_eel_expected (); // "expected element '"
-
- template <typename C>
- const C*
- ex_uel_expected (); // "expected element '"
-
- template <typename C>
- const C*
- ex_uel_instead (); // "' instead of '"
-
- template <typename C>
- const C*
- ex_uel_unexpected (); // "unexpected element '"
-
- template <typename C>
- const C*
- ex_eat_expected (); // "expected attribute '"
-
- template <typename C>
- const C*
- ex_uen_unexpected (); // "unexpected enumerator '"
-
- template <typename C>
- const C*
- ex_etc_msg (); // "expected text content"
-
- template <typename C>
- const C*
- ex_nti_no_type_info (); // "no type information available for type '"
-
- template <typename C>
- const C*
- ex_nei_no_element_info (); // "no parsing or serialization information
- // available for element '"
- template <typename C>
- const C*
- ex_nd_type (); // "type '"
-
- template <typename C>
- const C*
- ex_nd_not_derived (); // "' is not derived from '"
-
- template <typename C>
- const C*
- ex_di_id (); // "ID '"
-
- template <typename C>
- const C*
- ex_di_already_exist (); // "' already exist"
-
- template <typename C>
- const C*
- ex_serialization_msg (); // "serialization failed"
-
- template <typename C>
- const C*
- ex_npm_no_mapping (); // "no mapping provided for namespace prefix '"
-
- template <typename C>
- const C*
- ex_bounds_msg (); // "buffer boundary rules have been violated"
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_BITS_LITERALS_HXX
-
-#include <xsd/cxx/tree/bits/literals.ixx>
diff --git a/xsd/libxsd/xsd/cxx/tree/bits/literals.ixx b/xsd/libxsd/xsd/cxx/tree/bits/literals.ixx
deleted file mode 100644
index 9a27d99..0000000
--- a/xsd/libxsd/xsd/cxx/tree/bits/literals.ixx
+++ /dev/null
@@ -1,875 +0,0 @@
-// file : xsd/cxx/tree/bits/literals.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_BITS_LITERALS_IXX
-#define XSD_CXX_TREE_BITS_LITERALS_IXX
-
-// The char versions of the following literals are required even
-// if we are using wchar_t as the character type.
-//
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- namespace bits
- {
- //
- //
- template<>
- inline const char*
- positive_inf<char> ()
- {
- return "INF";
- }
-
- template<>
- inline const char*
- negative_inf<char> ()
- {
- return "-INF";
- }
-
- template<>
- inline const char*
- nan<char> ()
- {
- return "NaN";
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_BITS_LITERALS_IXX
-
-
-#if defined(XSD_CXX_TREE_USE_CHAR) || !defined(XSD_CXX_TREE_USE_WCHAR)
-
-#ifndef XSD_CXX_TREE_BITS_LITERALS_IXX_CHAR
-#define XSD_CXX_TREE_BITS_LITERALS_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- namespace bits
- {
- //
- //
- template<>
- inline const char*
- true_<char> ()
- {
- return "true";
- }
-
- template<>
- inline const char*
- one<char> ()
- {
- return "1";
- }
-
- //
- //
- template<>
- inline const char*
- not_present<char> ()
- {
- return "<not present>";
- }
-
- //
- //
- template <>
- inline const char*
- xml_schema<char> ()
- {
- return "http://www.w3.org/2001/XMLSchema";
- }
-
- //
- //
- template <>
- inline const char*
- any_type<char> ()
- {
- return "anyType";
- }
-
- template <>
- inline const char*
- any_simple_type<char> ()
- {
- return "anySimpleType";
- }
-
- template <>
- inline const char*
- string<char> ()
- {
- return "string";
- }
-
- template <>
- inline const char*
- normalized_string<char> ()
- {
- return "normalizedString";
- }
-
- template <>
- inline const char*
- token<char> ()
- {
- return "token";
- }
-
- template <>
- inline const char*
- name<char> ()
- {
- return "Name";
- }
-
- template <>
- inline const char*
- nmtoken<char> ()
- {
- return "NMTOKEN";
- }
-
- template <>
- inline const char*
- nmtokens<char> ()
- {
- return "NMTOKENS";
- }
-
- template <>
- inline const char*
- ncname<char> ()
- {
- return "NCName";
- }
-
- template <>
- inline const char*
- language<char> ()
- {
- return "language";
- }
-
-
- template <>
- inline const char*
- id<char> ()
- {
- return "ID";
- }
-
- template <>
- inline const char*
- idref<char> ()
- {
- return "IDREF";
- }
-
- template <>
- inline const char*
- idrefs<char> ()
- {
- return "IDREFS";
- }
-
- template <>
- inline const char*
- any_uri<char> ()
- {
- return "anyURI";
- }
-
- template <>
- inline const char*
- qname<char> ()
- {
- return "QName";
- }
-
- template <>
- inline const char*
- base64_binary<char> ()
- {
- return "base64Binary";
- }
-
- template <>
- inline const char*
- hex_binary<char> ()
- {
- return "hexBinary";
- }
-
- template <>
- inline const char*
- date<char> ()
- {
- return "date";
- }
-
- template <>
- inline const char*
- date_time<char> ()
- {
- return "dateTime";
- }
-
- template <>
- inline const char*
- duration<char> ()
- {
- return "duration";
- }
-
- template <>
- inline const char*
- gday<char> ()
- {
- return "gDay";
- }
-
- template <>
- inline const char*
- gmonth<char> ()
- {
- return "gMonth";
- }
-
- template <>
- inline const char*
- gmonth_day<char> ()
- {
- return "gMonthDay";
- }
-
- template <>
- inline const char*
- gyear<char> ()
- {
- return "gYear";
- }
-
- template <>
- inline const char*
- gyear_month<char> ()
- {
- return "gYearMonth";
- }
-
- template <>
- inline const char*
- time<char> ()
- {
- return "time";
- }
-
- template <>
- inline const char*
- entity<char> ()
- {
- return "ENTITY";
- }
-
- template <>
- inline const char*
- entities<char> ()
- {
- return "ENTITIES";
- }
-
- template <>
- inline const char*
- gday_prefix<char> ()
- {
- return "---";
- }
-
- template <>
- inline const char*
- gmonth_prefix<char> ()
- {
- return "--";
- }
-
- //
- //
- template <>
- inline const char*
- ex_error_error<char> ()
- {
- return " error: ";
- }
-
- template <>
- inline const char*
- ex_error_warning<char> ()
- {
- return " warning: ";
- }
-
- template <>
- inline const char*
- ex_parsing_msg<char> ()
- {
- return "instance document parsing failed";
- }
-
- template <>
- inline const char*
- ex_eel_expected<char> ()
- {
- return "expected element '";
- }
-
- template <>
- inline const char*
- ex_uel_expected<char> ()
- {
- return "expected element '";
- }
-
- template <>
- inline const char*
- ex_uel_instead<char> ()
- {
- return "' instead of '";
- }
-
- template <>
- inline const char*
- ex_uel_unexpected<char> ()
- {
- return "unexpected element '";
- }
-
- template <>
- inline const char*
- ex_eat_expected<char> ()
- {
- return "expected attribute '";
- }
-
- template <>
- inline const char*
- ex_uen_unexpected<char> ()
- {
- return "unexpected enumerator '";
- }
-
- template <>
- inline const char*
- ex_etc_msg<char> ()
- {
- return "expected text content";
- }
-
- template <>
- inline const char*
- ex_nti_no_type_info<char> ()
- {
- return "no type information available for type '";
- }
-
- template <>
- inline const char*
- ex_nei_no_element_info<char> ()
- {
- return "no parsing or serialization information available for "
- "element '";
- }
- template <>
- inline const char*
- ex_nd_type<char> ()
- {
- return "type '";
- }
-
- template <>
- inline const char*
- ex_nd_not_derived<char> ()
- {
- return "' is not derived from '";
- }
-
- template <>
- inline const char*
- ex_di_id<char> ()
- {
- return "ID '";
- }
-
- template <>
- inline const char*
- ex_di_already_exist<char> ()
- {
- return "' already exist";
- }
-
- template <>
- inline const char*
- ex_serialization_msg<char> ()
- {
- return "serialization failed";
- }
-
- template <>
- inline const char*
- ex_npm_no_mapping<char> ()
- {
- return "no mapping provided for namespace prefix '";
- }
-
- template <>
- inline const char*
- ex_bounds_msg<char> ()
- {
- return "buffer boundary rules have been violated";
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_BITS_LITERALS_IXX_CHAR
-#endif // XSD_CXX_TREE_USE_CHAR
-
-
-#if defined(XSD_CXX_TREE_USE_WCHAR) || !defined(XSD_CXX_TREE_USE_CHAR)
-
-#ifndef XSD_CXX_TREE_BITS_LITERALS_IXX_WCHAR
-#define XSD_CXX_TREE_BITS_LITERALS_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- namespace bits
- {
- //
- //
- template<>
- inline const wchar_t*
- true_<wchar_t> ()
- {
- return L"true";
- }
-
- template<>
- inline const wchar_t*
- one<wchar_t> ()
- {
- return L"1";
- }
-
- //
- //
- template<>
- inline const wchar_t*
- positive_inf<wchar_t> ()
- {
- return L"INF";
- }
-
- template<>
- inline const wchar_t*
- negative_inf<wchar_t> ()
- {
- return L"-INF";
- }
-
- template<>
- inline const wchar_t*
- nan<wchar_t> ()
- {
- return L"NaN";
- }
-
- //
- //
- template<>
- inline const wchar_t*
- not_present<wchar_t> ()
- {
- return L"<not present>";
- }
-
- //
- //
- template <>
- inline const wchar_t*
- xml_schema<wchar_t> ()
- {
- return L"http://www.w3.org/2001/XMLSchema";
- }
-
- //
- //
- template <>
- inline const wchar_t*
- any_type<wchar_t> ()
- {
- return L"anyType";
- }
-
- template <>
- inline const wchar_t*
- any_simple_type<wchar_t> ()
- {
- return L"anySimpleType";
- }
-
- template <>
- inline const wchar_t*
- string<wchar_t> ()
- {
- return L"string";
- }
-
- template <>
- inline const wchar_t*
- normalized_string<wchar_t> ()
- {
- return L"normalizedString";
- }
-
- template <>
- inline const wchar_t*
- token<wchar_t> ()
- {
- return L"token";
- }
-
- template <>
- inline const wchar_t*
- name<wchar_t> ()
- {
- return L"Name";
- }
-
- template <>
- inline const wchar_t*
- nmtoken<wchar_t> ()
- {
- return L"NMTOKEN";
- }
-
- template <>
- inline const wchar_t*
- nmtokens<wchar_t> ()
- {
- return L"NMTOKENS";
- }
-
- template <>
- inline const wchar_t*
- ncname<wchar_t> ()
- {
- return L"NCName";
- }
-
- template <>
- inline const wchar_t*
- language<wchar_t> ()
- {
- return L"language";
- }
-
-
- template <>
- inline const wchar_t*
- id<wchar_t> ()
- {
- return L"ID";
- }
-
- template <>
- inline const wchar_t*
- idref<wchar_t> ()
- {
- return L"IDREF";
- }
-
- template <>
- inline const wchar_t*
- idrefs<wchar_t> ()
- {
- return L"IDREFS";
- }
-
- template <>
- inline const wchar_t*
- any_uri<wchar_t> ()
- {
- return L"anyURI";
- }
-
- template <>
- inline const wchar_t*
- qname<wchar_t> ()
- {
- return L"QName";
- }
-
- template <>
- inline const wchar_t*
- base64_binary<wchar_t> ()
- {
- return L"base64Binary";
- }
-
- template <>
- inline const wchar_t*
- hex_binary<wchar_t> ()
- {
- return L"hexBinary";
- }
-
- template <>
- inline const wchar_t*
- date<wchar_t> ()
- {
- return L"date";
- }
-
- template <>
- inline const wchar_t*
- date_time<wchar_t> ()
- {
- return L"dateTime";
- }
-
- template <>
- inline const wchar_t*
- duration<wchar_t> ()
- {
- return L"duration";
- }
-
- template <>
- inline const wchar_t*
- gday<wchar_t> ()
- {
- return L"gDay";
- }
-
- template <>
- inline const wchar_t*
- gmonth<wchar_t> ()
- {
- return L"gMonth";
- }
-
- template <>
- inline const wchar_t*
- gmonth_day<wchar_t> ()
- {
- return L"gMonthDay";
- }
-
- template <>
- inline const wchar_t*
- gyear<wchar_t> ()
- {
- return L"gYear";
- }
-
- template <>
- inline const wchar_t*
- gyear_month<wchar_t> ()
- {
- return L"gYearMonth";
- }
-
- template <>
- inline const wchar_t*
- time<wchar_t> ()
- {
- return L"time";
- }
-
- template <>
- inline const wchar_t*
- entity<wchar_t> ()
- {
- return L"ENTITY";
- }
-
- template <>
- inline const wchar_t*
- entities<wchar_t> ()
- {
- return L"ENTITIES";
- }
-
- template <>
- inline const wchar_t*
- gday_prefix<wchar_t> ()
- {
- return L"---";
- }
-
- template <>
- inline const wchar_t*
- gmonth_prefix<wchar_t> ()
- {
- return L"--";
- }
-
- //
- //
- template <>
- inline const wchar_t*
- ex_error_error<wchar_t> ()
- {
- return L" error: ";
- }
-
- template <>
- inline const wchar_t*
- ex_error_warning<wchar_t> ()
- {
- return L" warning: ";
- }
-
- template <>
- inline const wchar_t*
- ex_parsing_msg<wchar_t> ()
- {
- return L"instance document parsing failed";
- }
-
- template <>
- inline const wchar_t*
- ex_eel_expected<wchar_t> ()
- {
- return L"expected element '";
- }
-
- template <>
- inline const wchar_t*
- ex_uel_expected<wchar_t> ()
- {
- return L"expected element '";
- }
-
- template <>
- inline const wchar_t*
- ex_uel_instead<wchar_t> ()
- {
- return L"' instead of '";
- }
-
- template <>
- inline const wchar_t*
- ex_uel_unexpected<wchar_t> ()
- {
- return L"unexpected element '";
- }
-
- template <>
- inline const wchar_t*
- ex_eat_expected<wchar_t> ()
- {
- return L"expected attribute '";
- }
-
- template <>
- inline const wchar_t*
- ex_uen_unexpected<wchar_t> ()
- {
- return L"unexpected enumerator '";
- }
-
- template <>
- inline const wchar_t*
- ex_etc_msg<wchar_t> ()
- {
- return L"expected text content";
- }
-
- template <>
- inline const wchar_t*
- ex_nti_no_type_info<wchar_t> ()
- {
- return L"no type information available for type '";
- }
-
- template <>
- inline const wchar_t*
- ex_nei_no_element_info<wchar_t> ()
- {
- return L"no parsing or serialization information available for "
- L"element '";
- }
- template <>
- inline const wchar_t*
- ex_nd_type<wchar_t> ()
- {
- return L"type '";
- }
-
- template <>
- inline const wchar_t*
- ex_nd_not_derived<wchar_t> ()
- {
- return L"' is not derived from '";
- }
-
- template <>
- inline const wchar_t*
- ex_di_id<wchar_t> ()
- {
- return L"ID '";
- }
-
- template <>
- inline const wchar_t*
- ex_di_already_exist<wchar_t> ()
- {
- return L"' already exist";
- }
-
- template <>
- inline const wchar_t*
- ex_serialization_msg<wchar_t> ()
- {
- return L"serialization failed";
- }
-
- template <>
- inline const wchar_t*
- ex_npm_no_mapping<wchar_t> ()
- {
- return L"no mapping provided for namespace prefix '";
- }
-
- template <>
- inline const wchar_t*
- ex_bounds_msg<wchar_t> ()
- {
- return L"buffer boundary rules have been violated";
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_BITS_LITERALS_IXX_WCHAR
-#endif // XSD_CXX_TREE_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/tree/buffer.hxx b/xsd/libxsd/xsd/cxx/tree/buffer.hxx
deleted file mode 100644
index 9ce568c..0000000
--- a/xsd/libxsd/xsd/cxx/tree/buffer.hxx
+++ /dev/null
@@ -1,336 +0,0 @@
-// file : xsd/cxx/tree/buffer.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-/**
- * @file
- *
- * @brief Contains a simple binary buffer abstraction that is used to
- * implement the base64Binary and hexBinary XML Schema built-in types.
- *
- * This is an internal header and is included by the generated code. You
- * normally should not include it directly.
- *
- */
-
-#ifndef XSD_CXX_TREE_BUFFER_HXX
-#define XSD_CXX_TREE_BUFFER_HXX
-
-#include <new> // operator new/delete
-#include <cstddef> // std::size_t
-#include <cstring> // std::memcpy, std::memcmp
-
-#include <xsd/cxx/tree/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- /**
- * @brief C++/Tree mapping runtime namespace.
- *
- * This is an internal namespace and normally should not be referenced
- * directly. Instead you should use the aliases for types in this
- * namespaces that are created in the generated code.
- *
- */
- namespace tree
- {
- //@cond
-
- class buffer_base
- {
- protected:
- virtual
- ~buffer_base ()
- {
- if (free_ && data_)
- operator delete (data_);
- }
-
- buffer_base ()
- : data_ (0), size_ (0), capacity_ (0), free_ (true)
- {
- }
-
- protected:
- char* data_;
- size_t size_;
- size_t capacity_;
- bool free_;
- };
-
- //@endcond
-
- /**
- * @brief Simple binary %buffer abstraction
- *
- * The %buffer class manages a continuous binary %buffer. The base
- * concepts are data (actual memory region), size (the portion of
- * the %buffer that contains useful information), and capacity (the
- * actual size of the underlying memory region). The bounds
- * %exception is thrown from the constructors and modifier functions
- * if the (size <= capacity) constraint is violated.
- *
- * Note that the template parameter is only used to instantiate
- * %exception types. The underlying %buffer type is always @c char.
- *
- * @nosubgrouping
- */
- template<typename C>
- class buffer: protected buffer_base
- {
- public:
- /**
- * @brief Size type
- */
- typedef std::size_t size_t;
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Allocate a %buffer of the specified size.
- *
- * The resulting %buffer has the same size and capacity.
- *
- * @param size A %buffer size in bytes.
- */
- explicit
- buffer (size_t size = 0);
-
- /**
- * @brief Allocate a %buffer of the specified size and capacity.
- *
- * @param size A %buffer size in bytes.
- * @param capacity A %buffer capacity in bytes.
- * @throw bounds If @a size exceeds @a capacity
- */
- buffer (size_t size, size_t capacity);
-
- /**
- * @brief Allocate a %buffer of the specified size and copy
- * the data.
- *
- * The resulting %buffer has the same size and capacity with
- * @a size bytes copied from @a data.
- *
- * @param data A %buffer to copy the data from.
- * @param size A %buffer size in bytes.
- */
- buffer (const void* data, size_t size);
-
- /**
- * @brief Allocate a %buffer of the specified size and capacity
- * and copy the data.
- *
- * @a size bytes are copied from @a data to the resulting
- * %buffer.
- *
- * @param data A %buffer to copy the data from.
- * @param size A %buffer size in bytes.
- * @param capacity A %buffer capacity in bytes.
- * @throw bounds If @a size exceeds @a capacity
- */
- buffer (const void* data, size_t size, size_t capacity);
-
- /**
- * @brief Reuse an existing %buffer.
- *
- * If the @a assume_ownership argument is true, the %buffer will
- * assume ownership of @a data and will release the memory
- * by calling @c operator @c delete().
- *
- * @param data A %buffer to reuse.
- * @param size A %buffer size in bytes.
- * @param capacity A %buffer capacity in bytes.
- * @param assume_ownership A boolean value indication whether to
- * assume ownership.
- * @throw bounds If @a size exceeds @a capacity
- */
- buffer (void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership);
-
- /**
- * @brief Copy constructor.
- *
- * The copy constructor performs a deep copy of the underlying
- * memory %buffer.
- *
- * @param x An instance to make a copy of.
- */
- buffer (const buffer& x);
-
- //@}
-
- public:
- /**
- * @brief Copy assignment operator.
- *
- * The copy assignment operator changes the buffer's capacity
- * to @c x.capacity() and copies @c x.size() bytes from @a x.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- buffer&
- operator= (const buffer& x);
-
- public:
- /**
- * @brief Get buffer's capacity.
- *
- * @return A number of bytes that the %buffer can hold without
- * reallocation.
- */
- size_t
- capacity () const
- {
- return capacity_;
- }
-
- /**
- * @brief Set buffer's capacity.
- *
- * @param c The new capacity in bytes.
- * @return True if the underlying %buffer has moved, false otherwise.
- */
- bool
- capacity (size_t c)
- {
- return this->capacity (c, true);
- }
-
- public:
- /**
- * @brief Get buffer's size.
- *
- * @return A number of bytes that the %buffer holds.
- */
- size_t
- size () const {return size_;}
-
- /**
- * @brief Set buffer's size.
- *
- * @param s The new size in bytes.
- * @return True if the underlying %buffer has moved, false otherwise.
- */
- bool
- size (size_t s)
- {
- bool r (false);
-
- if (s > capacity_)
- r = capacity (s);
-
- size_ = s;
-
- return r;
- }
-
- public:
- /**
- * @brief Get the underlying memory region.
- *
- * @return A constant pointer to the underlying memory region.
- */
- const char*
- data () const {return data_;}
-
- /**
- * @brief Get the underlying memory region.
- *
- * @return A pointer to the underlying memory region.
- */
- char*
- data () {return data_;}
-
- /**
- * @brief Get the beginning of the underlying memory region.
- *
- * @return A constant pointer to the first byte of the underlying
- * memory region.
- */
- const char*
- begin () const {return data_;}
-
- /**
- * @brief Get the beginning of the underlying memory region.
- *
- * @return A pointer to the first byte of the underlying memory
- * region.
- */
- char*
- begin () {return data_;}
-
- /**
- * @brief Get the end of the underlying memory region.
- *
- * @return A constant pointer to the one past last byte of the
- * underlying memory region (that is @c %begin() @c + @c %size() ).
- */
- const char*
- end () const {return data_ + size_;}
-
- /**
- * @brief Get the end of the underlying memory region.
- *
- * @return A pointer to the one past last byte of the underlying
- * memory region (that is @c %begin() @c + @c %size() ).
- */
- char*
- end () {return data_ + size_;}
-
- public:
- /**
- * @brief Swap data with another %buffer.
- *
- * @param x A %buffer to swap with.
- */
- void
- swap (buffer& x);
-
- private:
- bool
- capacity (size_t capacity, bool copy);
- };
-
- /**
- * @brief %buffer comparison operator.
- *
- * @return True if the buffers have the same sizes and the same
- * data.
- */
- template <typename C>
- inline bool
- operator== (const buffer<C>& a, const buffer<C>& b)
- {
- return a.size () == b.size () &&
- std::memcmp (a.data (), b.data (), a.size ()) == 0;
- }
-
- /**
- * @brief %buffer comparison operator.
- *
- * @return True if the buffers have different sizes or different
- * data.
- */
- template <typename C>
- inline bool
- operator!= (const buffer<C>& a, const buffer<C>& b)
- {
- return !(a == b);
- }
- }
- }
-}
-
-#include <xsd/cxx/tree/buffer.txx>
-
-#endif // XSD_CXX_TREE_BUFFER_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/buffer.txx b/xsd/libxsd/xsd/cxx/tree/buffer.txx
deleted file mode 100644
index c358e98..0000000
--- a/xsd/libxsd/xsd/cxx/tree/buffer.txx
+++ /dev/null
@@ -1,146 +0,0 @@
-// file : xsd/cxx/tree/buffer.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- buffer<C>::
- buffer (size_t size)
- {
- capacity (size);
- size_ = size;
- }
-
- template <typename C>
- buffer<C>::
- buffer (size_t size, size_t capacity)
- {
- if (size > capacity)
- throw bounds<C> ();
-
- this->capacity (capacity);
- size_ = size;
- }
-
- template <typename C>
- buffer<C>::
- buffer (const void* data, size_t size)
- {
- capacity (size);
- size_ = size;
-
- if (size_)
- std::memcpy (data_, data, size_);
- }
-
- template <typename C>
- buffer<C>::
- buffer (const void* data, size_t size, size_t capacity)
- {
- if (size > capacity)
- throw bounds<C> ();
-
- this->capacity (capacity);
- size_ = size;
-
- if (size_)
- std::memcpy (data_, data, size_);
- }
-
- template <typename C>
- buffer<C>::
- buffer (void* data, size_t size, size_t capacity, bool own)
- {
- if (size > capacity)
- throw bounds<C> ();
-
- data_ = reinterpret_cast<char*> (data);
- size_ = size;
- capacity_ = capacity;
- free_ = own;
- }
-
- template <typename C>
- buffer<C>::
- buffer (const buffer& other)
- : buffer_base ()
- {
- capacity (other.capacity_);
- size_ = other.size_;
-
- if (size_)
- std::memcpy (data_, other.data_, size_);
- }
-
- template <typename C>
- buffer<C>& buffer<C>::
- operator= (const buffer& other)
- {
- if (this != &other)
- {
- capacity (other.capacity_, false);
- size_ = other.size_;
-
- if (size_)
- std::memcpy (data_, other.data_, size_);
- }
-
- return *this;
- }
-
- template <typename C>
- void buffer<C>::
- swap (buffer& other)
- {
- char* tmp_data (data_);
- size_t tmp_size (size_);
- size_t tmp_capacity (capacity_);
- bool tmp_free (free_);
-
- data_ = other.data_;
- size_ = other.size_;
- capacity_ = other.capacity_;
- free_ = other.free_;
-
- other.data_ = tmp_data;
- other.size_ = tmp_size;
- other.capacity_ = tmp_capacity;
- other.free_ = tmp_free;
- }
-
- template <typename C>
- bool buffer<C>::
- capacity (size_t capacity, bool copy)
- {
- if (size_ > capacity)
- throw bounds<C> ();
-
- if (capacity <= capacity_)
- {
- return false; // Do nothing if shrinking is requested.
- }
- else
- {
- char* data (reinterpret_cast<char*> (operator new (capacity)));
-
- if (copy && size_ > 0)
- std::memcpy (data, data_, size_);
-
- if (free_ && data_)
- operator delete (data_);
-
- data_ = data;
- capacity_ = capacity;
- free_ = true;
-
- return true;
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/comparison-map.hxx b/xsd/libxsd/xsd/cxx/tree/comparison-map.hxx
deleted file mode 100644
index a316b21..0000000
--- a/xsd/libxsd/xsd/cxx/tree/comparison-map.hxx
+++ /dev/null
@@ -1,112 +0,0 @@
-// file : xsd/cxx/tree/comparison-map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_COMPARISON_MAP_HXX
-#define XSD_CXX_TREE_COMPARISON_MAP_HXX
-
-#include <map>
-#include <cstddef> // std::size_t
-#include <typeinfo>
-
-#include <xsd/cxx/tree/elements.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct comparison_map
- {
- typedef std::type_info type_id;
- typedef bool (*comparator) (const type&, const type&);
-
- comparison_map ();
-
- void
- register_type (const type_id&, comparator, bool replace = true);
-
- void
- unregister_type (const type_id&);
-
- bool
- compare (const type&, const type&);
-
- public:
- comparator
- find (const type_id&) const;
-
- private:
- struct type_id_comparator
- {
- bool
- operator() (const type_id* x, const type_id* y) const
- {
- // XL C++ on AIX has buggy type_info::before() in that
- // it returns true for two different type_info objects
- // that happened to be for the same type.
- //
-#if defined(__xlC__) && defined(_AIX)
- return *x != *y && x->before (*y);
-#else
- return x->before (*y);
-#endif
- }
- };
-
- typedef
- std::map<const type_id*, comparator, type_id_comparator>
- type_map;
-
- type_map type_map_;
- };
-
- //
- //
- template<unsigned long id, typename C>
- struct comparison_plate
- {
- static comparison_map<C>* map;
- static std::size_t count;
-
- comparison_plate ();
- ~comparison_plate ();
- };
-
- template<unsigned long id, typename C>
- comparison_map<C>* comparison_plate<id, C>::map = 0;
-
- template<unsigned long id, typename C>
- std::size_t comparison_plate<id, C>::count = 0;
-
-
- //
- //
- template<unsigned long id, typename C>
- inline comparison_map<C>&
- comparison_map_instance ()
- {
- return *comparison_plate<id, C>::map;
- }
-
- //
- //
- template<typename T>
- bool
- comparator_impl (const type&, const type&);
-
- template<unsigned long id, typename C, typename T>
- struct comparison_initializer
- {
- comparison_initializer ();
- ~comparison_initializer ();
- };
- }
- }
-}
-
-#include <xsd/cxx/tree/comparison-map.txx>
-
-#endif // XSD_CXX_TREE_COMPARISON_MAP_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/comparison-map.txx b/xsd/libxsd/xsd/cxx/tree/comparison-map.txx
deleted file mode 100644
index af23d64..0000000
--- a/xsd/libxsd/xsd/cxx/tree/comparison-map.txx
+++ /dev/null
@@ -1,299 +0,0 @@
-// file : xsd/cxx/tree/comparison-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/tree/types.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // comparison_map
- //
- template <typename C>
- comparison_map<C>::
- comparison_map ()
- {
- // anyType and anySimpleType.
- //
-
- register_type (
- typeid (type),
- &comparator_impl<type>,
- false);
-
- typedef simple_type<C, type> simple_type;
-
- register_type (
- typeid (simple_type),
- &comparator_impl<simple_type>,
- false);
-
- // Strings
- //
- typedef string<C, simple_type> string;
- register_type (
- typeid (string),
- &comparator_impl<string>,
- false);
-
- typedef normalized_string<C, string> normalized_string;
- register_type (
- typeid (normalized_string),
- &comparator_impl<normalized_string>,
- false);
-
- typedef token<C, normalized_string> token;
- register_type (
- typeid (token),
- &comparator_impl<token>,
- false);
-
- typedef name<C, token> name;
- register_type (
- typeid (name),
- &comparator_impl<name>,
- false);
-
- typedef nmtoken<C, token> nmtoken;
- register_type (
- typeid (nmtoken),
- &comparator_impl<nmtoken>,
- false);
-
- typedef nmtokens<C, simple_type, nmtoken> nmtokens;
- register_type (
- typeid (nmtokens),
- &comparator_impl<nmtokens>,
- false);
-
- typedef ncname<C, name> ncname;
- register_type (
- typeid (ncname),
- &comparator_impl<ncname>,
- false);
-
- typedef language<C, token> language;
- register_type (
- typeid (language),
- &comparator_impl<language>,
- false);
-
-
- // ID/IDREF.
- //
- typedef id<C, ncname> id;
- register_type (
- typeid (id),
- &comparator_impl<id>,
- false);
-
- typedef idref<C, ncname, type> idref;
- register_type (
- typeid (idref),
- &comparator_impl<idref>,
- false);
-
- typedef idrefs<C, simple_type, idref> idrefs;
- register_type (
- typeid (idrefs),
- &comparator_impl<idrefs>,
- false);
-
-
- // URI.
- //
- typedef uri<C, simple_type> uri;
- register_type (
- typeid (uri),
- &comparator_impl<uri>,
- false);
-
-
- // Qualified name.
- //
- typedef qname<C, simple_type, uri, ncname> qname;
- register_type (
- typeid (qname),
- &comparator_impl<qname>,
- false);
-
-
- // Binary.
- //
- typedef base64_binary<C, simple_type> base64_binary;
- register_type (
- typeid (base64_binary),
- &comparator_impl<base64_binary>,
- false);
-
- typedef hex_binary<C, simple_type> hex_binary;
- register_type (
- typeid (hex_binary),
- &comparator_impl<hex_binary>,
- false);
-
-
- // Date/time.
- //
- typedef gday<C, simple_type> gday;
- register_type (
- typeid (gday),
- &comparator_impl<gday>,
- false);
-
- typedef gmonth<C, simple_type> gmonth;
- register_type (
- typeid (gmonth),
- &comparator_impl<gmonth>,
- false);
-
- typedef gyear<C, simple_type> gyear;
- register_type (
- typeid (gyear),
- &comparator_impl<gyear>,
- false);
-
- typedef gmonth_day<C, simple_type> gmonth_day;
- register_type (
- typeid (gmonth_day),
- &comparator_impl<gmonth_day>,
- false);
-
- typedef gyear_month<C, simple_type> gyear_month;
- register_type (
- typeid (gyear_month),
- &comparator_impl<gyear_month>,
- false);
-
- typedef date<C, simple_type> date;
- register_type (
- typeid (date),
- &comparator_impl<date>,
- false);
-
- typedef time<C, simple_type> time;
- register_type (
- typeid (time),
- &comparator_impl<time>,
- false);
-
- typedef date_time<C, simple_type> date_time;
- register_type (
- typeid (date_time),
- &comparator_impl<date_time>,
- false);
-
- typedef duration<C, simple_type> duration;
- register_type (
- typeid (duration),
- &comparator_impl<duration>,
- false);
-
-
- // Entity.
- //
- typedef entity<C, ncname> entity;
- register_type (
- typeid (entity),
- &comparator_impl<entity>,
- false);
-
- typedef entities<C, simple_type, entity> entities;
- register_type (
- typeid (entities),
- &comparator_impl<entities>,
- false);
- }
-
- template <typename C>
- void comparison_map<C>::
- register_type (const type_id& tid, comparator c, bool replace)
- {
- if (replace || type_map_.find (&tid) == type_map_.end ())
- type_map_[&tid] = c;
- }
-
- template <typename C>
- void comparison_map<C>::
- unregister_type (const type_id& tid)
- {
- type_map_.erase (&tid);
- }
-
- template <typename C>
- bool comparison_map<C>::
- compare (const type& x, const type& y)
- {
- const type_id& xi (typeid (x));
-
- if (xi != typeid (y))
- return false;
-
- if (comparator c = find (xi))
- return c (x, y);
- else
- throw no_type_info<C> (std::basic_string<C> (),
- std::basic_string<C> ()); // @@ TODO
- }
-
- template <typename C>
- typename comparison_map<C>::comparator
- comparison_map<C>::
- find (const type_id& tid) const
- {
- typename type_map::const_iterator i (type_map_.find (&tid));
- return i == type_map_.end () ? 0 : i->second;
- }
-
-
- // comparison_plate
- //
- template<unsigned long id, typename C>
- comparison_plate<id, C>::
- comparison_plate ()
- {
- if (count == 0)
- map = new comparison_map<C>;
-
- ++count;
- }
-
- template<unsigned long id, typename C>
- comparison_plate<id, C>::
- ~comparison_plate ()
- {
- if (--count == 0)
- delete map;
- }
-
- //
- //
- template<typename T>
- bool
- comparator_impl (const type& x, const type& y)
- {
- return static_cast<const T&> (x) == static_cast<const T&> (y);
- }
-
- // comparison_initializer
- //
- template<unsigned long id, typename C, typename T>
- comparison_initializer<id, C, T>::
- comparison_initializer ()
- {
- comparison_map_instance<id, C> ().register_type (
- typeid (T), &comparator_impl<T>);
- }
-
- template<unsigned long id, typename C, typename T>
- comparison_initializer<id, C, T>::
- ~comparison_initializer ()
- {
- comparison_map_instance<id, C> ().unregister_type (typeid (T));
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/containers-wildcard.hxx b/xsd/libxsd/xsd/cxx/tree/containers-wildcard.hxx
deleted file mode 100644
index 549df73..0000000
--- a/xsd/libxsd/xsd/cxx/tree/containers-wildcard.hxx
+++ /dev/null
@@ -1,1334 +0,0 @@
-// file : xsd/cxx/tree/containers-wildcard.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_CONTAINERS_WILDCARD_HXX
-#define XSD_CXX_TREE_CONTAINERS_WILDCARD_HXX
-
-#include <set>
-#include <string>
-
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xercesc/util/XMLString.hpp>
-
-#include <xsd/cxx/xml/string.hxx>
-
-#include <xsd/cxx/tree/iterator-adapter.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // one (for internal use only)
- //
- class element_one
- {
- public:
- ~element_one ()
- {
- if (x_)
- x_->release ();
- }
-
- explicit
- element_one (xercesc::DOMDocument& doc)
- : x_ (0), doc_ (doc)
- {
- }
-
- element_one (const xercesc::DOMElement& x, xercesc::DOMDocument& doc)
- : x_ (0), doc_ (doc)
- {
- set (x);
- }
-
- element_one (const element_one& x, xercesc::DOMDocument& doc)
- : x_ (0), doc_ (doc)
- {
- if (x.present ())
- set (x.get ());
- }
-
- element_one&
- operator= (const element_one& x)
- {
- if (this == &x)
- return *this;
-
- if (x.present ())
- set (x.get ());
- else if (x_)
- {
- x_->release ();
- x_ = 0;
- }
-
- return *this;
- }
-
- public:
- const xercesc::DOMElement&
- get () const
- {
- return *x_;
- }
-
- xercesc::DOMElement&
- get ()
- {
- return *x_;
- }
-
- void
- set (const xercesc::DOMElement& x)
- {
- using xercesc::DOMElement;
-
- DOMElement* r (
- static_cast<DOMElement*> (
- doc_.importNode (const_cast<DOMElement*> (&x), true)));
-
- if (x_)
- x_->release ();
-
- x_ = r;
- }
-
- void
- set (xercesc::DOMElement* x)
- {
- assert (x->getOwnerDocument () == &doc_);
-
- if (x_)
- x_->release ();
-
- x_ = x;
- }
-
- bool
- present () const
- {
- return x_ != 0;
- }
-
- protected:
- xercesc::DOMElement* x_;
- xercesc::DOMDocument& doc_;
- };
-
-
- //
- //
- class element_optional
- {
- public:
- ~element_optional ()
- {
- if (x_)
- x_->release ();
- }
-
- explicit
- element_optional (xercesc::DOMDocument& doc)
- : x_ (0), doc_ (doc)
- {
- }
-
- element_optional (const xercesc::DOMElement& x,
- xercesc::DOMDocument& doc)
- : x_ (0), doc_ (doc)
- {
- set (x);
- }
-
- element_optional (xercesc::DOMElement* x, xercesc::DOMDocument& doc)
- : x_ (0), doc_ (doc)
- {
- set (x);
- }
-
- element_optional (const element_optional& x,
- xercesc::DOMDocument& doc)
- : x_ (0), doc_ (doc)
- {
- if (x)
- set (*x);
- }
-
- element_optional&
- operator= (const xercesc::DOMElement& x)
- {
- if (x_ == &x)
- return *this;
-
- set (x);
-
- return *this;
- }
-
- element_optional&
- operator= (const element_optional& x)
- {
- if (this == &x)
- return *this;
-
- if (x)
- set (*x);
- else
- reset ();
-
- return *this;
- }
-
- // Pointer-like interface.
- //
- public:
- const xercesc::DOMElement*
- operator-> () const
- {
- return x_;
- }
-
- xercesc::DOMElement*
- operator-> ()
- {
- return x_;
- }
-
- const xercesc::DOMElement&
- operator* () const
- {
- return *x_;
- }
-
- xercesc::DOMElement&
- operator* ()
- {
- return *x_;
- }
-
- typedef void (element_optional::*bool_convertible) ();
-
- operator bool_convertible () const
- {
- return x_ != 0 ? &element_optional::true_ : 0;
- }
-
- // Get/set interface.
- //
- public:
- bool
- present () const
- {
- return x_ != 0;
- }
-
- const xercesc::DOMElement&
- get () const
- {
- return *x_;
- }
-
- xercesc::DOMElement&
- get ()
- {
- return *x_;
- }
-
- void
- set (const xercesc::DOMElement& x)
- {
- using xercesc::DOMElement;
-
- DOMElement* r (
- static_cast<DOMElement*> (
- doc_.importNode (const_cast<DOMElement*> (&x), true)));
-
- if (x_)
- x_->release ();
-
- x_ = r;
- }
-
- void
- set (xercesc::DOMElement* x)
- {
- assert (x->getOwnerDocument () == &doc_);
-
- if (x_)
- x_->release ();
-
- x_ = x;
- }
-
- void
- reset ()
- {
- if (x_)
- x_->release ();
-
- x_ = 0;
- }
-
- private:
- void
- true_ ()
- {
- }
-
- private:
- xercesc::DOMElement* x_;
- xercesc::DOMDocument& doc_;
- };
-
- // Comparison operators.
- //
-
- inline bool
- operator== (const element_optional& a, const element_optional& b)
- {
- return !a || !b
- ? a.present () == b.present ()
- : a->isEqualNode (&b.get ());
- }
-
- inline bool
- operator!= (const element_optional& a, const element_optional& b)
- {
- return !(a == b);
- }
-
-
- //
- //
- class element_sequence
- {
- protected:
- // This is a dangerously destructive automatic pointer. We are going
- // to use it in a controlled environment to save us a lot of coding.
- //
- struct ptr
- {
- ~ptr ()
- {
- if (x_)
- x_->release ();
- }
-
- explicit
- ptr (xercesc::DOMElement* x = 0)
- : x_ (x)
- {
- }
-
- ptr (const ptr& y)
- : x_ (y.x_)
- {
- // Yes, hostile takeover.
- //
- y.x_ = 0;
- }
-
- ptr&
- operator= (const ptr& y)
- {
- if (this != &y)
- {
- // Yes, hostile takeover.
- //
- if (x_)
- x_->release ();
-
- x_ = y.x_;
- y.x_ = 0;
- }
-
- return *this;
- }
-
- public:
- xercesc::DOMElement&
- operator* () const
- {
- return *x_;
- }
-
- xercesc::DOMElement*
- get () const
- {
- return x_;
- }
-
- private:
- mutable xercesc::DOMElement* x_;
- };
-
- typedef std::vector<ptr> base_sequence;
- typedef base_sequence::iterator base_iterator;
- typedef base_sequence::const_iterator base_const_iterator;
-
- public:
- typedef xercesc::DOMElement value_type;
- typedef xercesc::DOMElement* pointer;
- typedef const xercesc::DOMElement* const_pointer;
- typedef xercesc::DOMElement& reference;
- typedef const xercesc::DOMElement& const_reference;
-
- typedef
- iterator_adapter<base_sequence::iterator, xercesc::DOMElement>
- iterator;
-
- typedef
- iterator_adapter<base_sequence::const_iterator,
- const xercesc::DOMElement>
- const_iterator;
-
- typedef
- iterator_adapter<base_sequence::reverse_iterator, xercesc::DOMElement>
- reverse_iterator;
-
- typedef
- iterator_adapter<base_sequence::const_reverse_iterator,
- const xercesc::DOMElement>
- const_reverse_iterator;
-
- typedef base_sequence::size_type size_type;
- typedef base_sequence::difference_type difference_type;
- typedef base_sequence::allocator_type allocator_type;
-
- public:
- explicit
- element_sequence (xercesc::DOMDocument& doc)
- : doc_ (doc)
- {
- }
-
- // DOMElement cannot be default-constructed.
- //
- // explicit
- // element_sequence (size_type n);
-
- element_sequence (size_type n,
- const xercesc::DOMElement& x,
- xercesc::DOMDocument& doc)
- : doc_ (doc)
- {
- assign (n, x);
- }
-
- template <typename I>
- element_sequence (const I& begin, const I& end,
- xercesc::DOMDocument& doc)
- : doc_ (doc)
- {
- assign (begin, end);
- }
-
- element_sequence (const element_sequence& v,
- xercesc::DOMDocument& doc)
- : doc_ (doc)
- {
- v_.reserve (v.v_.size ());
-
- for (base_const_iterator i (v.v_.begin ()), e (v.v_.end ());
- i != e; ++i)
- {
- ptr p (static_cast<xercesc::DOMElement*> (
- doc_.importNode (i->get (), true)));
-
- v_.push_back (p);
- }
- }
-
- element_sequence&
- operator= (const element_sequence& v)
- {
- if (this == &v)
- return *this;
-
- v_.assign (v.v_.size (), ptr ());
-
- base_iterator di (v_.begin ()), de (v_.end ());
- base_const_iterator si (v.v_.begin ()), se (v.v_.end ());
-
- for (; si != se && di != de; ++si, ++di)
- {
- ptr p (static_cast<xercesc::DOMElement*> (
- doc_.importNode (si->get (), true)));
- *di = p;
- }
-
- return *this;
- }
-
- public:
- void
- assign (size_type n, const xercesc::DOMElement& x)
- {
- v_.assign (n, ptr ());
-
- for (base_iterator i (v_.begin ()), e (v_.end ()); i != e; ++i)
- {
- ptr p (static_cast<xercesc::DOMElement*> (
- doc_.importNode (
- const_cast<xercesc::DOMElement*> (&x), true)));
- *i = p;
- }
- }
-
- template <typename I>
- void
- assign (const I& begin, const I& end)
- {
- // This is not the fastest way to do it.
- //
- v_.clear ();
-
- for (I i (begin); i != end; ++i)
- {
- ptr p (static_cast<xercesc::DOMElement*> (
- doc_.importNode (
- const_cast<xercesc::DOMElement*> (&(*i)), true)));
- v_.push_back (p);
- }
- }
-
- public:
- // This version of resize can only be used to shrink the
- // sequence because DOMElement cannot be default-constructed.
- //
- void
- resize (size_type n)
- {
- assert (n <= v_.size ());
- v_.resize (n, ptr ());
- }
-
- void
- resize (size_type n, const xercesc::DOMElement& x)
- {
- size_type old (v_.size ());
- v_.resize (n, ptr ());
-
- if (old < n)
- {
- for (base_iterator i (v_.begin () + old), e (v_.end ());
- i != e; ++i)
- {
- ptr p (static_cast<xercesc::DOMElement*> (
- doc_.importNode (
- const_cast<xercesc::DOMElement*> (&x), true)));
- *i = p;
- }
- }
- }
-
- public:
- size_type
- size () const
- {
- return v_.size ();
- }
-
- size_type
- max_size () const
- {
- return v_.max_size ();
- }
-
- size_type
- capacity () const
- {
- return v_.capacity ();
- }
-
- bool
- empty () const
- {
- return v_.empty ();
- }
-
- void
- reserve (size_type n)
- {
- v_.reserve (n);
- }
-
- void
- clear ()
- {
- v_.clear ();
- }
-
- public:
- const_iterator
- begin () const
- {
- return const_iterator (v_.begin ());
- }
-
- const_iterator
- end () const
- {
- return const_iterator (v_.end ());
- }
-
- iterator
- begin ()
- {
- return iterator (v_.begin ());
- }
-
- iterator
- end ()
- {
- return iterator (v_.end ());
- }
-
- // reverse
- //
-
- const_reverse_iterator
- rbegin () const
- {
- return const_reverse_iterator (v_.rbegin ());
- }
-
- const_reverse_iterator
- rend () const
- {
- return const_reverse_iterator (v_.rend ());
- }
-
- reverse_iterator
- rbegin ()
- {
- return reverse_iterator (v_.rbegin ());
- }
-
- reverse_iterator
- rend ()
- {
- return reverse_iterator (v_.rend ());
- }
-
- public:
- xercesc::DOMElement&
- operator[] (size_type n)
- {
- return *(v_[n]);
- }
-
- const xercesc::DOMElement&
- operator[] (size_type n) const
- {
- return *(v_[n]);
- }
-
- xercesc::DOMElement&
- at (size_type n)
- {
- return *(v_.at (n));
- }
-
- const xercesc::DOMElement&
- at (size_type n) const
- {
- return *(v_.at (n));
- }
-
- xercesc::DOMElement&
- front ()
- {
- return *(v_.front ());
- }
-
- const xercesc::DOMElement&
- front () const
- {
- return *(v_.front ());
- }
-
- xercesc::DOMElement&
- back ()
- {
- return *(v_.back ());
- }
-
- const xercesc::DOMElement&
- back () const
- {
- return *(v_.back ());
- }
-
- public:
- // Makes a deep copy.
- //
- void
- push_back (const xercesc::DOMElement& x)
- {
- ptr p (static_cast<xercesc::DOMElement*> (
- doc_.importNode (
- const_cast<xercesc::DOMElement*> (&x), true)));
-
- v_.push_back (p);
- }
-
- // Assumes ownership.
- //
- void
- push_back (xercesc::DOMElement* x)
- {
- assert (x->getOwnerDocument () == &doc_);
- v_.push_back (ptr (x));
- }
-
- void
- pop_back ()
- {
- v_.pop_back ();
- }
-
- // Makes a deep copy.
- //
- iterator
- insert (iterator position, const xercesc::DOMElement& x)
- {
- ptr p (static_cast<xercesc::DOMElement*> (
- doc_.importNode (
- const_cast<xercesc::DOMElement*> (&x), true)));
-
- return iterator (v_.insert (position.base (), p));
- }
-
- // Assumes ownership.
- //
- iterator
- insert (iterator position, xercesc::DOMElement* x)
- {
- assert (x->getOwnerDocument () == &doc_);
- return iterator (v_.insert (position.base (), ptr (x)));
- }
-
- void
- insert (iterator position, size_type n, const xercesc::DOMElement& x)
- {
- difference_type d (v_.end () - position.base ());
- v_.insert (position.base (), n, ptr ());
-
- for (base_iterator i (v_.end () - d); n != 0; --n)
- {
- ptr r (static_cast<xercesc::DOMElement*> (
- doc_.importNode (
- const_cast<xercesc::DOMElement*> (&x), true)));
- *(--i) = r;
- }
- }
-
- template <typename I>
- void
- insert (iterator position, const I& begin, const I& end)
- {
- // This is not the fastest way to do it.
- //
- if (begin != end)
- {
- base_iterator p (position.base ());
-
- for (I i (end);;)
- {
- --i;
- ptr r (static_cast<xercesc::DOMElement*> (
- doc_.importNode (i->get (), true)));
-
- p = v_.insert (p, r);
-
- if (i == begin)
- break;
- }
- }
- }
-
- iterator
- erase (iterator position)
- {
- return iterator (v_.erase (position.base ()));
- }
-
- iterator
- erase (iterator begin, iterator end)
- {
- return iterator (v_.erase (begin.base (), end.base ()));
- }
-
- public:
- // Note that the DOMDocument object of the two sequences being
- // swapped should be the same.
- //
- void
- swap (element_sequence& x)
- {
- assert (&doc_ == &x.doc_);
- v_.swap (x.v_);
- }
-
- private:
- base_sequence v_;
- xercesc::DOMDocument& doc_;
- };
-
- // Comparison operators.
- //
-
- inline bool
- operator== (const element_sequence& a, const element_sequence& b)
- {
- if (a.size () != b.size ())
- return false;
-
- element_sequence::const_iterator
- ai (a.begin ()), ae (a.end ()), bi (b.begin ());
-
- for (; ai != ae; ++ai, ++bi)
- if (!ai->isEqualNode (&(*bi)))
- return false;
-
- return true;
- }
-
- inline bool
- operator!= (const element_sequence& a, const element_sequence& b)
- {
- return !(a == b);
- }
-
-
- // Attribute set.
- //
-
- class attribute_set_common
- {
- protected:
- // Set entry. It can either act as a dangerously destructive
- // automatic pointer for DOMAttr or as an entry containing the
- // name we are searching for.
- //
- struct entry
- {
- ~entry ()
- {
- if (a_)
- a_->release ();
- }
-
- explicit
- entry (xercesc::DOMAttr* a)
- : a_ (a), ns_ (0), name_ (0)
- {
- ns_ = a->getNamespaceURI ();
- name_ = ns_ == 0 ? a->getName () : a->getLocalName ();
- }
-
- // Note: uses shallow copy.
- //
- explicit
- entry (const XMLCh* ns, const XMLCh* name)
- : a_ (0), ns_ (ns), name_ (name)
- {
- }
-
- entry (const entry& y)
- : a_ (y.a_), ns_ (y.ns_), name_ (y.name_)
- {
- // Yes, hostile takeover.
- //
- y.a_ = 0;
- y.ns_ = 0;
- y.name_ = 0;
- }
-
- entry&
- operator= (const entry& y)
- {
- if (this != &y)
- {
- // Yes, hostile takeover.
- //
- if (a_)
- a_->release ();
-
- a_ = y.a_;
- ns_ = y.ns_;
- name_ = y.name_;
-
- y.a_ = 0;
- y.ns_ = 0;
- y.name_ = 0;
- }
-
- return *this;
- }
-
- public:
- xercesc::DOMAttr&
- operator* () const
- {
- return *a_;
- }
-
- xercesc::DOMAttr*
- get () const
- {
- return a_;
- }
-
- const XMLCh*
- ns () const
- {
- return ns_;
- }
-
- const XMLCh*
- name () const
- {
- return name_;
- }
-
- void
- release ()
- {
- a_ = 0;
- }
-
- private:
- mutable xercesc::DOMAttr* a_;
- mutable const XMLCh* ns_;
- mutable const XMLCh* name_;
- };
-
- struct entry_cmp
- {
- bool
- operator() (const entry& a, const entry& b) const
- {
- using xercesc::XMLString;
-
- const XMLCh* ans (a.ns ());
- const XMLCh* bns (b.ns ());
-
- const XMLCh* an (a.name ());
- const XMLCh* bn (b.name ());
-
- if (ans == 0)
- return bns != 0
- ? true
- : (XMLString::compareString (an, bn) < 0);
-
- if (ans != 0 && bns == 0)
- return false;
-
- int r (XMLString::compareString (ans, bns));
-
- return r < 0
- ? true
- : (r > 0 ? false : XMLString::compareString (an, bn) < 0);
- }
- };
-
- typedef std::set<entry, entry_cmp> base_set;
- typedef base_set::iterator base_iterator;
- typedef base_set::const_iterator base_const_iterator;
- };
-
- template <typename C>
- class attribute_set: public attribute_set_common
- {
- public:
- typedef xercesc::DOMAttr key_type;
- typedef xercesc::DOMAttr value_type;
- typedef xercesc::DOMAttr* pointer;
- typedef const xercesc::DOMAttr* const_pointer;
- typedef xercesc::DOMAttr& reference;
- typedef const xercesc::DOMAttr& const_reference;
-
- typedef
- iterator_adapter<base_set::iterator, xercesc::DOMAttr>
- iterator;
-
- typedef
- iterator_adapter<base_set::const_iterator, const xercesc::DOMAttr>
- const_iterator;
-
- typedef
- iterator_adapter<base_set::reverse_iterator, xercesc::DOMAttr>
- reverse_iterator;
-
- typedef
- iterator_adapter<base_set::const_reverse_iterator,
- const xercesc::DOMAttr>
- const_reverse_iterator;
-
- typedef base_set::size_type size_type;
- typedef base_set::difference_type difference_type;
- typedef base_set::allocator_type allocator_type;
-
- public:
- attribute_set (xercesc::DOMDocument& doc)
- : doc_ (doc)
- {
- }
-
- template <typename I>
- attribute_set (const I& begin,
- const I& end,
- xercesc::DOMDocument& doc)
- : doc_ (doc)
- {
- insert (begin, end);
- }
-
- attribute_set (const attribute_set& s, xercesc::DOMDocument& doc)
- : doc_ (doc)
- {
- // Can be done faster with the "hinted" insert.
- //
- insert (s.begin (), s.end ());
- }
-
- attribute_set&
- operator= (const attribute_set& s)
- {
- if (this == &s)
- return *this;
-
- // Can be done faster with the "hinted" insert.
- //
- clear ();
- insert (s.begin (), s.end ());
-
- return *this;
- }
-
- public:
- const_iterator
- begin () const
- {
- return const_iterator (s_.begin ());
- }
-
- const_iterator
- end () const
- {
- return const_iterator (s_.end ());
- }
-
- iterator
- begin ()
- {
- return iterator (s_.begin ());
- }
-
- iterator
- end ()
- {
- return iterator (s_.end ());
- }
-
- // reverse
- //
-
- const_reverse_iterator
- rbegin () const
- {
- return const_reverse_iterator (s_.rbegin ());
- }
-
- const_reverse_iterator
- rend () const
- {
- return const_reverse_iterator (s_.rend ());
- }
-
- reverse_iterator
- rbegin ()
- {
- return reverse_iterator (s_.rbegin ());
- }
-
- reverse_iterator
- rend ()
- {
- return reverse_iterator (s_.rend ());
- }
-
- public:
- size_type
- size () const
- {
- return s_.size ();
- }
-
- size_type
- max_size () const
- {
- return s_.max_size ();
- }
-
- bool
- empty () const
- {
- return s_.empty ();
- }
-
- void
- clear ()
- {
- s_.clear ();
- }
-
- public:
- // Makes a deep copy.
- //
- std::pair<iterator, bool>
- insert (const xercesc::DOMAttr& a)
- {
- entry e (static_cast<xercesc::DOMAttr*> (
- doc_.importNode (
- const_cast<xercesc::DOMAttr*> (&a), true)));
-
- std::pair<base_iterator, bool> r (s_.insert (e));
-
- return std::pair<iterator, bool> (iterator (r.first), r.second);
- }
-
- // Assumes ownership.
- //
- std::pair<iterator, bool>
- insert (xercesc::DOMAttr* a)
- {
- assert (a->getOwnerDocument () == &doc_);
- entry e (a);
- std::pair<base_iterator, bool> r (s_.insert (e));
-
- if (!r.second)
- e.release (); // Detach the attribute of insert failed.
-
- return std::pair<iterator, bool> (iterator (r.first), r.second);
- }
-
- // Makes a deep copy.
- //
- iterator
- insert (iterator position, const xercesc::DOMAttr& a)
- {
- entry e (static_cast<xercesc::DOMAttr*> (
- doc_.importNode (
- const_cast<xercesc::DOMAttr*> (&a), true)));
-
- return iterator (s_.insert (position.base (), e));
- }
-
- // Assumes ownership.
- //
- iterator
- insert (iterator position, xercesc::DOMAttr* a)
- {
- assert (a->getOwnerDocument () == &doc_);
- entry e (a);
- base_iterator r (s_.insert (position.base (), e));
-
- if (r->get () != a)
- e.release (); // Detach the attribute of insert failed.
-
- return iterator (r);
- }
-
- template <typename I>
- void
- insert (const I& begin, const I& end)
- {
- for (I i (begin); i != end; ++i)
- {
- entry e (static_cast<xercesc::DOMAttr*> (
- doc_.importNode (
- const_cast<xercesc::DOMAttr*> (&(*i)), true)));
-
- s_.insert (e);
- }
- }
-
- public:
- void
- erase (iterator position)
- {
- s_.erase (position.base ());
- }
-
- size_type
- erase (const std::basic_string<C>& name)
- {
- return s_.erase (entry (0, xml::string (name).c_str ()));
- }
-
- size_type
- erase (const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name)
- {
- return s_.erase (entry (xml::string (namespace_).c_str (),
- xml::string (name).c_str ()));
- }
-
- size_type
- erase (const XMLCh* name)
- {
- return s_.erase (entry (0, name));
- }
-
- size_type
- erase (const XMLCh* namespace_, const XMLCh* name)
- {
- return s_.erase (entry (namespace_, name));
- }
-
- void
- erase (iterator begin, iterator end)
- {
- s_.erase (begin.base (), end.base ());
- }
-
- public:
- size_type
- count (const std::basic_string<C>& name) const
- {
- return s_.count (entry (0, xml::string (name).c_str ()));
- }
-
- size_type
- count (const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name) const
- {
- return s_.count (entry (xml::string (namespace_).c_str (),
- xml::string (name).c_str ()));
- }
-
- size_type
- count (const XMLCh* name) const
- {
- return s_.count (entry (0, name));
- }
-
- size_type
- count (const XMLCh* namespace_, const XMLCh* name) const
- {
- return s_.count (entry (namespace_, name));
- }
-
- // find
- //
-
- iterator
- find (const std::basic_string<C>& name)
- {
- return iterator (s_.find (entry (0, xml::string (name).c_str ())));
- }
-
- iterator
- find (const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name)
- {
- return iterator (
- s_.find (entry (xml::string (namespace_).c_str (),
- xml::string (name).c_str ())));
- }
-
- iterator
- find (const XMLCh* name)
- {
- return iterator (s_.find (entry (0, name)));
- }
-
- iterator
- find (const XMLCh* namespace_, const XMLCh* name)
- {
- return iterator (s_.find (entry (namespace_, name)));
- }
-
- const_iterator
- find (const std::basic_string<C>& name) const
- {
- return const_iterator (
- s_.find (entry (0, xml::string (name).c_str ())));
- }
-
- const_iterator
- find (const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name) const
- {
- return const_iterator (
- s_.find (entry (xml::string (namespace_).c_str (),
- xml::string (name).c_str ())));
- }
-
- const_iterator
- find (const XMLCh* name) const
- {
- return const_iterator (s_.find (entry (0, name)));
- }
-
- const_iterator
- find (const XMLCh* namespace_, const XMLCh* name) const
- {
- return const_iterator (s_.find (entry (namespace_, name)));
- }
-
- public:
- // Note that the DOMDocument object of the two sets being
- // swapped should be the same.
- //
- void
- swap (attribute_set& x)
- {
- assert (&doc_ == &x.doc_);
- s_.swap (x.s_);
- }
-
- private:
- base_set s_;
- xercesc::DOMDocument& doc_;
- };
-
- // Comparison operators.
- //
-
- template <typename C>
- inline bool
- operator== (const attribute_set<C>& a, const attribute_set<C>& b)
- {
- if (a.size () != b.size ())
- return false;
-
- typename attribute_set<C>::const_iterator
- ai (a.begin ()), ae (a.end ()), bi (b.begin ());
-
- for (; ai != ae; ++ai, ++bi)
- if (!ai->isEqualNode (&(*bi)))
- return false;
-
- return true;
- }
-
- template <typename C>
- inline bool
- operator!= (const attribute_set<C>& a, const attribute_set<C>& b)
- {
- return !(a == b);
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_CONTAINERS_WILDCARD_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/containers.hxx b/xsd/libxsd/xsd/cxx/tree/containers.hxx
deleted file mode 100644
index cafd79d..0000000
--- a/xsd/libxsd/xsd/cxx/tree/containers.hxx
+++ /dev/null
@@ -1,1208 +0,0 @@
-// file : xsd/cxx/tree/containers.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_CONTAINERS_HXX
-#define XSD_CXX_TREE_CONTAINERS_HXX
-
-#include <vector>
-#include <memory> // std::auto_ptr/unique_ptr
-#include <algorithm> // std::equal, std::lexicographical_compare
-#include <iosfwd>
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/iterator-adapter.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // Test whether T is a fundamental C++ type.
- //
-
- template <typename T>
- struct fundamental_p
- {
- static const bool r = false;
- };
-
- // byte
- //
- template <>
- struct fundamental_p<signed char>
- {
- static const bool r = true;
- };
-
- template <>
- struct fundamental_p<unsigned char>
- {
- static const bool r = true;
- };
-
- // short
- //
- template <>
- struct fundamental_p<short>
- {
- static const bool r = true;
- };
-
- template <>
- struct fundamental_p<unsigned short>
- {
- static const bool r = true;
- };
-
- // int
- //
- template <>
- struct fundamental_p<int>
- {
- static const bool r = true;
- };
-
- template <>
- struct fundamental_p<unsigned int>
- {
- static const bool r = true;
- };
-
- // long
- //
- template <>
- struct fundamental_p<long>
- {
- static const bool r = true;
- };
-
- template <>
- struct fundamental_p<unsigned long>
- {
- static const bool r = true;
- };
-
- template <>
- struct fundamental_p<long long>
- {
- static const bool r = true;
- };
-
- template <>
- struct fundamental_p<unsigned long long>
- {
- static const bool r = true;
- };
-
- // bool
- //
- template <>
- struct fundamental_p<bool>
- {
- static const bool r = true;
- };
-
- // float
- //
- template <>
- struct fundamental_p<float>
- {
- static const bool r = true;
- };
-
- template <>
- struct fundamental_p<double>
- {
- static const bool r = true;
- };
-
- // one (for internal use only)
- //
- template <typename T, bool fund = fundamental_p<T>::r>
- class one;
-
- template <typename T>
- class one<T, false>
- {
- public:
- ~one ();
-
- one (container*);
-
- one (const T&, container*);
-
- one (XSD_AUTO_PTR<T>, container*);
-
- one (const one&, flags, container*);
-
- one&
- operator= (const one&);
-
- public:
- const T&
- get () const
- {
- return *x_;
- }
-
- T&
- get ()
- {
- return *x_;
- }
-
- void
- set (const T& x)
- {
- set (x, 0);
- }
-
- void
- set (XSD_AUTO_PTR<T>);
-
- bool
- present () const
- {
- return x_ != 0;
- }
-
- XSD_AUTO_PTR<T>
- detach ()
- {
- T* x (x_);
- x->_container (0);
- x_ = 0;
- return XSD_AUTO_PTR<T> (x);
- }
-
- protected:
- void
- set (const T&, flags);
-
- protected:
- T* x_;
- container* container_;
- };
-
-
- template <typename T>
- class one<T, true>
- {
- public:
- one (container*)
- : present_ (false)
- {
- }
-
- one (const T& x, container*)
- : x_ (x), present_ (true)
- {
- }
-
- one (const one& x, flags, container*)
- : x_ (x.x_), present_ (x.present_)
- {
- }
-
- one&
- operator= (const one& x)
- {
- if (this == &x)
- return *this;
-
- x_ = x.x_;
- present_ = x.present_;
-
- return *this;
- }
-
- public:
- const T&
- get () const
- {
- return x_;
- }
-
- T&
- get ()
- {
- return x_;
- }
-
- void
- set (const T& x)
- {
- x_ = x;
- present_ = true;
- }
-
- bool
- present () const
- {
- return present_;
- }
-
- protected:
- T x_;
- bool present_;
- };
-
- template <typename T, bool fund = fundamental_p<T>::r>
- class optional;
-
- template <typename T>
- class optional<T, false>
- {
- public:
- ~optional ();
-
- explicit
- optional (container* = 0);
-
- explicit
- optional (const T&, container* = 0);
-
- explicit
- optional (XSD_AUTO_PTR<T>, container* = 0);
-
- optional (const optional&, flags = 0, container* = 0);
-
- optional&
- operator= (const T&);
-
- optional&
- operator= (const optional&);
-
- // Pointer-like interface.
- //
- public:
- const T*
- operator-> () const
- {
- return x_;
- }
-
- T*
- operator-> ()
- {
- return x_;
- }
-
- const T&
- operator* () const
- {
- return *x_;
- }
-
- T&
- operator* ()
- {
- return *x_;
- }
-
- typedef optional self_; // Simplifier for Sun C++ 5.7.
- typedef void (self_::*bool_convertible) ();
-
- operator bool_convertible () const
- {
- return x_ != 0 ? &self_::true_ : 0;
- }
-
- // Get/set interface.
- //
- public:
- bool
- present () const
- {
- return x_ != 0;
- }
-
- const T&
- get () const
- {
- return *x_;
- }
-
- T&
- get ()
- {
- return *x_;
- }
-
- void
- set (const T& x)
- {
- set (x, 0);
- }
-
- void
- set (XSD_AUTO_PTR<T>);
-
- void
- reset ();
-
- XSD_AUTO_PTR<T>
- detach ()
- {
- T* x (x_);
- x->_container (0);
- x_ = 0;
- return XSD_AUTO_PTR<T> (x);
- }
-
- protected:
- void
- set (const T&, flags);
-
- void
- true_ ();
-
- protected:
- T* x_;
- container* container_;
- };
-
-
- //
- //
- template <typename T>
- class optional<T, true>
- {
- public:
- explicit
- optional (container* = 0)
- : present_ (false)
- {
- }
-
- explicit
- optional (const T&, container* = 0);
-
- optional (const optional&, flags = 0, container* = 0);
-
- optional&
- operator= (const T&);
-
- optional&
- operator= (const optional&);
-
- // Pointer-like interface.
- //
- public:
- const T*
- operator-> () const
- {
- return &x_;
- }
-
- T*
- operator-> ()
- {
- return &x_;
- }
-
- const T&
- operator* () const
- {
- return get ();
- }
-
- T&
- operator* ()
- {
- return get ();
- }
-
- typedef optional self_; // Simplifier for Sun C++ 5.7.
- typedef void (self_::*bool_convertible) ();
-
- operator bool_convertible () const
- {
- return present () ? &self_::true_ : 0;
- }
-
- // Get/set interface.
- //
- public:
- bool
- present () const
- {
- return present_;
- }
-
- const T&
- get () const
- {
- return x_;
- }
-
- T&
- get ()
- {
- return x_;
- }
-
- void
- set (const T& y)
- {
- x_ = y;
- present_ = true;
- }
-
- void
- reset ()
- {
- present_ = false;
- }
-
- private:
- void
- true_ ();
-
- private:
- bool present_;
- T x_;
- };
-
- // Comparison operators.
- //
-
- template <typename T, bool fund>
- inline bool
- operator== (const optional<T, fund>& a, const optional<T, fund>& b)
- {
- return !a || !b ? a.present () == b.present () : *a == *b;
- }
-
- template <typename T, bool fund>
- inline bool
- operator!= (const optional<T, fund>& a, const optional<T, fund>& b)
- {
- return !(a == b);
- }
-
- template <typename T, bool fund>
- inline bool
- operator< (const optional<T, fund>& a, const optional<T, fund>& b)
- {
- return a && (!b || *a < *b);
- }
-
- template <typename T, bool fund>
- inline bool
- operator> (const optional<T, fund>& a, const optional<T, fund>& b)
- {
- return b < a;
- }
-
- template <typename T, bool fund>
- inline bool
- operator<= (const optional<T, fund>& a, const optional<T, fund>& b)
- {
- return !(a > b);
- }
-
- template <typename T, bool fund>
- inline bool
- operator>= (const optional<T, fund>& a, const optional<T, fund>& b)
- {
- return !(a < b);
- }
-
- // Provide an ostream insertion operator to prevent confusion from
- // the implicit bool conversion.
- //
- template <typename C, typename T, bool fund>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>&, const optional<T, fund>&);
-
-
- // Sequence.
- //
- template <typename T, bool fund = fundamental_p<T>::r>
- class sequence;
-
- //
- //
- class sequence_common
- {
- protected:
- // This is a dangerously destructive automatic pointer. We are going
- // to use it in a controlled environment to save us a lot of coding.
- //
- struct ptr
- {
- ~ptr ()
- {
- delete x_;
- }
-
- explicit
- ptr (type* x = 0)
- : x_ (x)
- {
- }
-
- ptr (const ptr& y)
- : x_ (y.x_)
- {
- // Yes, hostile takeover.
- //
- y.x_ = 0;
- }
-
- ptr&
- operator= (const ptr& y)
- {
- if (this != &y)
- {
- // Yes, hostile takeover.
- //
- delete x_;
- x_ = y.x_;
- y.x_ = 0;
- }
-
- return *this;
- }
-
- public:
- type&
- operator* () const
- {
- return *x_;
- }
-
- type*
- operator-> () const
- {
- return x_;
- }
-
- type*
- get () const
- {
- return x_;
- }
-
- type*
- release ()
- {
- type* x (x_);
- x_ = 0;
- return x;
- }
-
- private:
- mutable type* x_;
- };
-
- protected:
- typedef std::vector<ptr> base_sequence;
- typedef base_sequence::iterator base_iterator;
- typedef base_sequence::const_iterator base_const_iterator;
-
- typedef base_sequence::size_type size_type;
- typedef base_sequence::difference_type difference_type;
- typedef base_sequence::allocator_type allocator_type;
-
- protected:
- sequence_common (container* c)
- : container_ (c)
- {
- }
-
- sequence_common (size_type n, const type& x, container* c)
- : container_ (c)
- {
- assign (n, x);
- }
-
- template <typename I>
- sequence_common (const I& begin, const I& end, container* c)
- : container_ (c)
- {
- assign (begin, end);
- }
-
- sequence_common (const sequence_common& v, flags f, container* c)
- : container_ (c)
- {
- v_.reserve (v.v_.size ());
-
- for (base_const_iterator i (v.v_.begin ()), e (v.v_.end ());
- i != e; ++i)
- {
- ptr p ((**i)._clone (f, container_));
- v_.push_back (p);
- }
- }
-
- public:
- sequence_common&
- operator= (const sequence_common& v)
- {
- if (this == &v)
- return *this;
-
- v_.assign (v.v_.size (), ptr ());
-
- base_iterator di (v_.begin ()), de (v_.end ());
- base_const_iterator si (v.v_.begin ()), se (v.v_.end ());
-
- for (; si != se && di != de; ++si, ++di)
- {
- // We have no ptr_ref.
- //
- ptr p ((**si)._clone (0, container_));
- *di = p;
- }
-
- return *this;
- }
-
- public:
- size_type
- size () const
- {
- return v_.size ();
- }
-
- size_type
- max_size () const
- {
- return v_.max_size ();
- }
-
- size_type
- capacity () const
- {
- return v_.capacity ();
- }
-
- bool
- empty () const
- {
- return v_.empty ();
- }
-
- void
- reserve (size_type n)
- {
- v_.reserve (n);
- }
-
- void
- clear ()
- {
- v_.clear ();
- }
-
- protected:
- void
- assign (size_type n, const type& x)
- {
- v_.assign (n, ptr ());
-
- for (base_iterator i (v_.begin ()), e (v_.end ()); i != e; ++i)
- {
- ptr p (x._clone (0, container_));
- *i = p;
- }
- }
-
- template <typename I>
- void
- assign (const I& begin, const I& end)
- {
- // This is not the fastest way to do it. Also I's type may not
- // have _clone.
- //
- v_.clear ();
-
- for (I i (begin); i != end; ++i)
- {
- ptr p (i->_clone (0, container_));
- v_.push_back (p);
- }
- }
-
- void
- resize (size_type n, const type& x)
- {
- size_type old (v_.size ());
- v_.resize (n, ptr ());
-
- if (old < n)
- {
- for (base_iterator i (v_.begin () + old), e (v_.end ());
- i != e; ++i)
- {
- ptr p (x._clone (0, container_));
- *i = p;
- }
- }
- }
-
- void
- insert (base_iterator p, size_type n, const type& x)
- {
- difference_type d (v_.end () - p);
- v_.insert (p, n, ptr ());
-
- for (base_iterator i (v_.end () - d); n != 0; --n)
- {
- ptr r (x._clone (0, container_));
- *(--i) = r;
- }
- }
-
- template <typename I>
- void
- insert (base_iterator p, const I& begin, const I& end)
- {
- // This is not the fastest way to do it. Also I's type may not
- // have _clone.
- //
- if (begin != end)
- {
- for (I i (end);;)
- {
- --i;
- ptr r (i->_clone (0, container_));
- p = v_.insert (p, r);
-
- if (i == begin)
- break;
- }
- }
- }
-
- protected:
- container* container_;
- base_sequence v_;
- };
-
- //
- //
- template <typename T>
- class sequence<T, false>: public sequence_common
- {
- protected:
- // For IBM XL C++ 8.0.
- //
- typedef sequence_common::ptr ptr;
-
- public:
- typedef T value_type;
- typedef T* pointer;
- typedef const T* const_pointer;
- typedef T& reference;
- typedef const T& const_reference;
-
- typedef
- iterator_adapter<base_sequence::iterator, T>
- iterator;
-
- typedef
- iterator_adapter<base_sequence::const_iterator, const T>
- const_iterator;
-
- typedef
- iterator_adapter<base_sequence::reverse_iterator, T>
- reverse_iterator;
-
- typedef
- iterator_adapter<base_sequence::const_reverse_iterator, const T>
- const_reverse_iterator;
-
- typedef sequence_common::size_type size_type;
- typedef sequence_common::difference_type difference_type;
- typedef sequence_common::allocator_type allocator_type;
-
- public:
- explicit
- sequence (container* c = 0)
- : sequence_common (c)
- {
- }
-
- // The first version causes trouble on IBM XL C++ 7.0 when
- // a type does not have the default c-tor. While the second
- // breaks VC++ 8.0 when using dllexport (it appears to
- // instantiate everything instead of only what's used).
- //
-#ifdef _MSC_VER
- explicit
- sequence (size_type n, const T& x = T (), container* c = 0)
- : sequence_common (n, x, c)
- {
- }
-#else
- explicit
- sequence (size_type n, container* c = 0)
- : sequence_common (n, T (), c)
- {
- }
-
- sequence (size_type n, const T& x, container* c = 0)
- : sequence_common (n, x, c)
- {
- }
-#endif
-
- template <typename I>
- sequence (const I& begin, const I& end, container* c = 0)
- : sequence_common (begin, end, c)
- {
- }
-
- sequence (const sequence& v, flags f = 0, container* c = 0)
- : sequence_common (v, f, c)
- {
- }
-
- public:
- void
- assign (size_type n, const T& x)
- {
- sequence_common::assign (n, x);
- }
-
- template <typename I>
- void
- assign (const I& begin, const I& end)
- {
- sequence_common::assign (begin, end);
- }
-
- public:
- // The first version causes trouble on IBM XL C++ 7.0 when
- // a type does not have the default c-tor. While the second
- // breaks VC++ 8.0 when using dllexport (it appears to
- // instantiate everything instead of only what's used).
- //
-#ifdef _MSC_VER
- void
- resize (size_type n, const T& x = T ())
- {
- sequence_common::resize (n, x);
- }
-#else
- void
- resize (size_type n)
- {
- sequence_common::resize (n, T ());
- }
-
- void
- resize (size_type n, const T& x)
- {
- sequence_common::resize (n, x);
- }
-#endif
-
- public:
- const_iterator
- begin () const
- {
- return const_iterator (v_.begin ());
- }
-
- const_iterator
- end () const
- {
- return const_iterator (v_.end ());
- }
-
- iterator
- begin ()
- {
- return iterator (v_.begin ());
- }
-
- iterator
- end ()
- {
- return iterator (v_.end ());
- }
-
- // reverse
- //
-
- const_reverse_iterator
- rbegin () const
- {
- return const_reverse_iterator (v_.rbegin ());
- }
-
- const_reverse_iterator
- rend () const
- {
- return const_reverse_iterator (v_.rend ());
- }
-
- reverse_iterator
- rbegin ()
- {
- return reverse_iterator (v_.rbegin ());
- }
-
- reverse_iterator
- rend ()
- {
- return reverse_iterator (v_.rend ());
- }
-
- public:
- T&
- operator[] (size_type n)
- {
- return static_cast<T&> (*(v_[n]));
- }
-
- const T&
- operator[] (size_type n) const
- {
- return static_cast<const T&> (*(v_[n]));
- }
-
- T&
- at (size_type n)
- {
- return static_cast<T&> (*(v_.at (n)));
- }
-
- const T&
- at (size_type n) const
- {
- return static_cast<const T&> (*(v_.at (n)));
- }
-
- T&
- front ()
- {
- return static_cast<T&> (*(v_.front ()));
- }
-
- const T&
- front () const
- {
- return static_cast<const T&> (*(v_.front ()));
- }
-
- T&
- back ()
- {
- return static_cast<T&> (*(v_.back ()));
- }
-
- const T&
- back () const
- {
- return static_cast<const T&> (*(v_.back ()));
- }
-
- public:
- void
- push_back (const T& x)
- {
- v_.push_back (ptr (x._clone (0, container_)));
- }
-
- void
- push_back (XSD_AUTO_PTR<T> x)
- {
- if (x->_container () != container_)
- x->_container (container_);
-
- v_.push_back (ptr (x.release ()));
- }
-
- void
- pop_back ()
- {
- v_.pop_back ();
- }
-
- XSD_AUTO_PTR<T>
- detach_back (bool pop = true)
- {
- ptr& p (v_.back ());
- p->_container (0);
- T* x (static_cast<T*> (p.release ()));
-
- if (pop)
- v_.pop_back ();
-
- return XSD_AUTO_PTR<T> (x);
- }
-
- iterator
- insert (iterator position, const T& x)
- {
- return iterator (
- v_.insert (
- position.base (), ptr (x._clone (0, container_))));
- }
-
- iterator
- insert (iterator position, XSD_AUTO_PTR<T> x)
- {
- if (x->_container () != container_)
- x->_container (container_);
-
- return iterator (v_.insert (position.base (), ptr (x.release ())));
- }
-
- void
- insert (iterator position, size_type n, const T& x)
- {
- sequence_common::insert (position.base (), n, x);
- }
-
- template <typename I>
- void
- insert (iterator position, const I& begin, const I& end)
- {
- sequence_common::insert (position.base (), begin, end);
- }
-
- iterator
- erase (iterator position)
- {
- return iterator (v_.erase (position.base ()));
- }
-
- iterator
- erase (iterator begin, iterator end)
- {
- return iterator (v_.erase (begin.base (), end.base ()));
- }
-
- iterator
- detach (iterator position, XSD_AUTO_PTR<T>& r, bool erase = true)
- {
- ptr& p (*position.base ());
- p->_container (0);
- r.reset (static_cast<T*> (p.release ()));
-
- if (erase)
- return iterator (v_.erase (position.base ()));
- else
- return ++position;
- }
-
- // Note that the container object of the two sequences being
- // swapped should be the same.
- //
- void
- swap (sequence& x)
- {
- assert (container_ == x.container_);
- v_.swap (x.v_);
- }
- };
-
-
- // Specialization for fundamental types.
- //
- template <typename T>
- class sequence<T, true>: public std::vector<T>
- {
- typedef std::vector<T> base_sequence;
-
- public:
- explicit
- sequence (container* = 0)
- {
- }
-
- explicit
- sequence (typename base_sequence::size_type n,
- const T& x = T (),
- container* = 0)
- : base_sequence (n, x)
- {
- }
-
- template <typename I>
- sequence (const I& begin, const I& end, container* = 0)
- : base_sequence (begin, end)
- {
- }
-
- sequence (const sequence& s, flags = 0, container* = 0)
- : base_sequence (s)
- {
- }
- };
-
-
- // Comparison operators.
- //
-
- template <typename T, bool fund>
- inline bool
- operator== (const sequence<T, fund>& a, const sequence<T, fund>& b)
- {
- return (a.size () == b.size ()
- && std::equal (a.begin (), a.end (), b.begin ()));
- }
-
- template <typename T, bool fund>
- inline bool
- operator!= (const sequence<T, fund>& a, const sequence<T, fund>& b)
- {
- return !(a == b);
- }
-
- template <typename T, bool fund>
- inline bool
- operator< (const sequence<T, fund>& a, const sequence<T, fund>& b)
- {
- return std::lexicographical_compare (a.begin (), a.end (),
- b.begin (), b.end ());
- }
-
- template <typename T, bool fund>
- inline bool
- operator> (const sequence<T, fund>& a, const sequence<T, fund>& b)
- {
- return b < a;
- }
-
- template <typename T, bool fund>
- inline bool
- operator<= (const sequence<T, fund>& a, const sequence<T, fund>& b)
- {
- return !(a > b);
- }
-
- template <typename T, bool fund>
- inline bool
- operator>= (const sequence<T, fund>& a, const sequence<T, fund>& b)
- {
- return !(a < b);
- }
-
- // Note that the container object of the two sequences being
- // swapped should be the same.
- //
- template <typename T, bool fund>
- inline void
- swap (sequence<T, fund>& x, sequence<T, fund>& y)
- {
- x.swap (y);
- }
- }
- }
-}
-
-#include <xsd/cxx/tree/containers.txx>
-
-#endif // XSD_CXX_TREE_CONTAINERS_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/containers.txx b/xsd/libxsd/xsd/cxx/tree/containers.txx
deleted file mode 100644
index 2a3573f..0000000
--- a/xsd/libxsd/xsd/cxx/tree/containers.txx
+++ /dev/null
@@ -1,296 +0,0 @@
-// file : xsd/cxx/tree/containers.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <ostream>
-
-#ifdef XSD_CXX11
-# include <utility> // std::move
-#endif
-
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // one
- //
- template<typename T>
- one<T, false>::
- ~one ()
- {
- delete x_;
- }
-
- template<typename T>
- one<T, false>::
- one (container* c)
- : x_ (0), container_ (c)
- {
- }
-
- template<typename T>
- one<T, false>::
- one (const T& x, container* c)
- : x_ (0), container_ (c)
- {
- set (x);
- }
-
- template<typename T>
- one<T, false>::
- one (XSD_AUTO_PTR<T> x, container* c)
- : x_ (0), container_ (c)
- {
-#ifdef XSD_CXX11
- set (std::move (x));
-#else
- set (x);
-#endif
- }
-
- template<typename T>
- one<T, false>::
- one (const one<T, false>& x, flags f, container* c)
- : x_ (0), container_ (c)
- {
- if (x.present ())
- set (x.get (), f);
- }
-
- template<typename T>
- one<T, false>& one<T, false>::
- operator= (const one<T, false>& x)
- {
- if (this == &x)
- return *this;
-
- if (x.present ())
- set (x.get ());
- else
- {
- delete x_;
- x_ = 0;
- }
-
- return *this;
- }
-
- template<typename T>
- void one<T, false>::
- set (const T& x, flags f)
- {
- // We always do a fresh copy because T may not be x's
- // dynamic type.
- //
- T* r (x._clone (f, container_));
-
- delete x_;
- x_ = r;
- }
-
- template<typename T>
- void one<T, false>::
- set (XSD_AUTO_PTR<T> x)
- {
- T* r (0);
-
- if (x.get () != 0)
- {
- if (x->_container () != container_)
- x->_container (container_);
-
- r = x.release ();
- }
-
- delete x_;
- x_ = r;
- }
-
- // optional
- //
- template <typename T>
- optional<T, false>::
- ~optional ()
- {
- delete x_;
- }
-
- template <typename T>
- optional<T, false>::
- optional (container* c)
- : x_ (0), container_ (c)
- {
- }
-
- template <typename T>
- optional<T, false>::
- optional (const T& x, container* c)
- : x_ (0), container_ (c)
- {
- set (x);
- }
-
- template <typename T>
- optional<T, false>::
- optional (XSD_AUTO_PTR<T> x, container* c)
- : x_ (0), container_ (c)
- {
-#ifdef XSD_CXX11
- set (std::move (x));
-#else
- set (x);
-#endif
- }
-
- template <typename T>
- optional<T, false>::
- optional (const optional<T, false>& x, flags f, container* c)
- : x_ (0), container_ (c)
- {
- if (x)
- set (*x, f);
- }
-
- template <typename T>
- optional<T, false>& optional<T, false>::
- operator= (const T& x)
- {
- if (x_ == &x)
- return *this;
-
- set (x);
-
- return *this;
- }
-
- template <typename T>
- optional<T, false>& optional<T, false>::
- operator= (const optional<T, false>& x)
- {
- if (this == &x)
- return *this;
-
- if (x)
- set (*x);
- else
- reset ();
-
- return *this;
- }
-
- template <typename T>
- void optional<T, false>::
- set (const T& x, flags f)
- {
- // We always do a fresh copy because T may not be x's
- // dynamic type.
- //
- T* r (x._clone (f, container_));
-
- delete x_;
- x_ = r;
- }
-
- template <typename T>
- void optional<T, false>::
- set (XSD_AUTO_PTR<T> x)
- {
- T* r (0);
-
- if (x.get () != 0)
- {
- if (x->_container () != container_)
- x->_container (container_);
-
- r = x.release ();
- }
-
- delete x_;
- x_ = r;
- }
-
- template <typename T>
- void optional<T, false>::
- reset ()
- {
- delete x_;
- x_ = 0;
- }
-
- template <typename T>
- void optional<T, false>::
- true_ ()
- {
- }
-
-
- // optional
- //
- template <typename T>
- optional<T, true>::
- optional (const T& y, container*)
- : present_ (false)
- {
- set (y);
- }
-
- template <typename T>
- optional<T, true>::
- optional (const optional<T, true>& y, flags, container*)
- : present_ (false)
- {
- if (y)
- set (*y);
- }
-
- template <typename T>
- optional<T, true>& optional<T, true>::
- operator= (const T& y)
- {
- if (&x_ == &y)
- return *this;
-
- set (y);
-
- return *this;
- }
-
- template <typename T>
- optional<T, true>& optional<T, true>::
- operator= (const optional<T, true>& y)
- {
- if (this == &y)
- return *this;
-
- if (y)
- set (*y);
- else
- reset ();
-
- return *this;
- }
-
- template <typename T>
- void optional<T, true>::
- true_ ()
- {
- }
-
- template <typename C, typename T, bool fund>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const optional<T, fund>& x)
- {
- if (x)
- os << *x;
- else
- os << bits::not_present<C> ();
-
- return os;
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/date-time-extraction.txx b/xsd/libxsd/xsd/cxx/tree/date-time-extraction.txx
deleted file mode 100644
index 4ada1a0..0000000
--- a/xsd/libxsd/xsd/cxx/tree/date-time-extraction.txx
+++ /dev/null
@@ -1,156 +0,0 @@
-// file : xsd/cxx/tree/date-time-extraction.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // time_zone
- //
- template <typename S>
- inline void time_zone::
- zone_extract (istream<S>& s)
- {
- s >> hours_ >> minutes_;
- present_ = true;
- }
-
- // gday
- //
- template <typename C, typename B>
- template <typename S>
- gday<C, B>::
- gday (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- bool zp;
- s >> day_ >> zp;
-
- if (zp)
- zone_extract (s);
- }
-
- // gmonth
- //
- template <typename C, typename B>
- template <typename S>
- gmonth<C, B>::
- gmonth (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- bool zp;
- s >> month_ >> zp;
-
- if (zp)
- zone_extract (s);
- }
-
- // gyear
- //
- template <typename C, typename B>
- template <typename S>
- gyear<C, B>::
- gyear (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- bool zp;
- s >> year_ >> zp;
-
- if (zp)
- zone_extract (s);
- }
-
- // gmonth_day
- //
- template <typename C, typename B>
- template <typename S>
- gmonth_day<C, B>::
- gmonth_day (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- bool zp;
- s >> month_ >> day_ >> zp;
-
- if (zp)
- zone_extract (s);
- }
-
- // gyear_month
- //
- template <typename C, typename B>
- template <typename S>
- gyear_month<C, B>::
- gyear_month (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- bool zp;
- s >> year_ >> month_ >> zp;
-
- if (zp)
- zone_extract (s);
- }
-
- // date
- //
- template <typename C, typename B>
- template <typename S>
- date<C, B>::
- date (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- bool zp;
- s >> year_ >> month_ >> day_ >> zp;
-
- if (zp)
- zone_extract (s);
- }
-
- // time
- //
- template <typename C, typename B>
- template <typename S>
- time<C, B>::
- time (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- bool zp;
- s >> hours_ >> minutes_ >> seconds_ >> zp;
-
- if (zp)
- zone_extract (s);
- }
-
- // date_time
- //
- template <typename C, typename B>
- template <typename S>
- date_time<C, B>::
- date_time (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- bool zp;
- s >> year_ >> month_ >> day_
- >> hours_ >> minutes_ >> seconds_ >> zp;
-
- if (zp)
- zone_extract (s);
- }
-
- // duration
- //
- template <typename C, typename B>
- template <typename S>
- duration<C, B>::
- duration (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- s >> negative_
- >> years_ >> months_ >> days_
- >> hours_ >> minutes_ >> seconds_;
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/date-time-insertion.txx b/xsd/libxsd/xsd/cxx/tree/date-time-insertion.txx
deleted file mode 100644
index b41ffce..0000000
--- a/xsd/libxsd/xsd/cxx/tree/date-time-insertion.txx
+++ /dev/null
@@ -1,187 +0,0 @@
-// file : xsd/cxx/tree/date-time-insertion.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // time_zone
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, const time_zone& z)
- {
- return s << z.zone_hours () << z.zone_minutes ();
- }
-
- // gday
- //
- template <typename S, typename C, typename B>
- ostream<S>&
- operator<< (ostream<S>& s, const gday<C, B>& x)
- {
- bool zp (x.zone_present ());
-
- s << x.day () << zp;
-
- if (zp)
- {
- const time_zone& z (x);
- s << z;
- }
-
- return s;
- }
-
- // gmonth
- //
- template <typename S, typename C, typename B>
- ostream<S>&
- operator<< (ostream<S>& s, const gmonth<C, B>& x)
- {
- bool zp (x.zone_present ());
-
- s << x.month () << zp;
-
- if (zp)
- {
- const time_zone& z (x);
- s << z;
- }
-
- return s;
- }
-
- // gyear
- //
- template <typename S, typename C, typename B>
- ostream<S>&
- operator<< (ostream<S>& s, const gyear<C, B>& x)
- {
- bool zp (x.zone_present ());
-
- s << x.year () << zp;
-
- if (zp)
- {
- const time_zone& z (x);
- s << z;
- }
-
- return s;
- }
-
- // gmonth_day
- //
- template <typename S, typename C, typename B>
- ostream<S>&
- operator<< (ostream<S>& s, const gmonth_day<C, B>& x)
- {
- bool zp (x.zone_present ());
-
- s << x.month () << x.day () << zp;
-
- if (zp)
- {
- const time_zone& z (x);
- s << z;
- }
-
- return s;
- }
-
- // gyear_month
- //
- template <typename S, typename C, typename B>
- ostream<S>&
- operator<< (ostream<S>& s, const gyear_month<C, B>& x)
- {
- bool zp (x.zone_present ());
-
- s << x.year () << x.month () << zp;
-
- if (zp)
- {
- const time_zone& z (x);
- s << z;
- }
-
- return s;
- }
-
- // date
- //
- template <typename S, typename C, typename B>
- ostream<S>&
- operator<< (ostream<S>& s, const date<C, B>& x)
- {
- bool zp (x.zone_present ());
-
- s << x.year () << x.month () << x.day () << zp;
-
- if (zp)
- {
- const time_zone& z (x);
- s << z;
- }
-
- return s;
- }
-
- // time
- //
- template <typename S, typename C, typename B>
- ostream<S>&
- operator<< (ostream<S>& s, const time<C, B>& x)
- {
- bool zp (x.zone_present ());
-
- s << x.hours () << x.minutes () << x.seconds () << zp;
-
- if (zp)
- {
- const time_zone& z (x);
- s << z;
- }
-
- return s;
- }
-
- // date_time
- //
- template <typename S, typename C, typename B>
- ostream<S>&
- operator<< (ostream<S>& s, const date_time<C, B>& x)
- {
- bool zp (x.zone_present ());
-
- s << x.year () << x.month () << x.day ()
- << x.hours () << x.minutes () << x.seconds () << zp;
-
- if (zp)
- {
- const time_zone& z (x);
- s << z;
- }
-
- return s;
- }
-
- // duration
- //
- template <typename S, typename C, typename B>
- ostream<S>&
- operator<< (ostream<S>& s, const duration<C, B>& x)
- {
- s << x.negative ()
- << x.years () << x.months () << x.days ()
- << x.hours () << x.minutes () << x.seconds ();
-
- return s;
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/date-time-ostream.txx b/xsd/libxsd/xsd/cxx/tree/date-time-ostream.txx
deleted file mode 100644
index 830cd49..0000000
--- a/xsd/libxsd/xsd/cxx/tree/date-time-ostream.txx
+++ /dev/null
@@ -1,323 +0,0 @@
-// file : xsd/cxx/tree/date-time-ostream.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <ostream>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // time_zone
- //
- template <typename C>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const time_zone& z)
- {
- short h = z.zone_hours ();
- short m = z.zone_minutes ();
-
- if (h == 0 && m == 0)
- {
- os << C ('Z');
- }
- else
- {
- if (h < 0 || m < 0)
- {
- h = -h;
- m = -m;
- os << C ('-');
- }
- else
- os << C ('+');
-
- C f (os.fill (C ('0')));
-
- os.width (2);
- os << h << C (':');
- os.width (2);
- os << m;
-
- os.fill (f);
- }
-
- return os;
- }
-
- // gday
- //
- template <typename C, typename B>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const gday<C, B>& x)
- {
- C f (os.fill (C ('0')));
- os.width (2);
- os << x.day ();
- os.fill (f);
-
- if (x.zone_present ())
- {
- const time_zone& z (x);
- os << z;
- }
-
- return os;
- }
-
- // gmonth
- //
- template <typename C, typename B>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const gmonth<C, B>& x)
- {
- C f (os.fill (C ('0')));
- os.width (2);
- os << x.month ();
- os.fill (f);
-
- if (x.zone_present ())
- {
- const time_zone& z (x);
- os << z;
- }
-
- return os;
- }
-
- // gyear
- //
- template <typename C, typename B>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const gyear<C, B>& x)
- {
- C f (os.fill (C ('0')));
- os.width (4);
- os << x.year ();
- os.fill (f);
-
- if (x.zone_present ())
- {
- const time_zone& z (x);
- os << z;
- }
-
- return os;
- }
-
- // gmonth_day
- //
- template <typename C, typename B>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const gmonth_day<C, B>& x)
- {
- C f (os.fill (C ('0')));
-
- os.width (2);
- os << x.month () << C ('-');
-
- os.width (2);
- os << x.day ();
-
- os.fill (f);
-
- if (x.zone_present ())
- {
- const time_zone& z (x);
- os << z;
- }
-
- return os;
- }
-
-
- // gyear_month
- //
- template <typename C, typename B>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const gyear_month<C, B>& x)
- {
- C f (os.fill (C ('0')));
-
- os.width (4);
- os << x.year () << C ('-');
-
- os.width (2);
- os << x.month ();
-
- os.fill (f);
-
- if (x.zone_present ())
- {
- const time_zone& z (x);
- os << z;
- }
-
- return os;
- }
-
- // date
- //
- template <typename C, typename B>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const date<C, B>& x)
- {
- C f (os.fill (C ('0')));
-
- os.width (4);
- os << x.year () << C ('-');
-
- os.width (2);
- os << x.month () << C ('-');
-
- os.width (2);
- os << x.day ();
-
- os.fill (f);
-
- if (x.zone_present ())
- {
- const time_zone& z (x);
- os << z;
- }
-
- return os;
- }
-
- // time
- //
- template <typename C, typename B>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const time<C, B>& x)
- {
- C f (os.fill (C ('0')));
-
- os.width (2);
- os << x.hours () << C (':');
-
- os.width (2);
- os << x.minutes () << C (':');
-
- os.width (9);
- std::ios_base::fmtflags ff (
- os.setf (std::ios::fixed, std::ios::floatfield));
- os << x.seconds ();
- os.setf (ff, std::ios::floatfield);
-
- os.fill (f);
-
- if (x.zone_present ())
- {
- const time_zone& z (x);
- os << z;
- }
-
- return os;
- }
-
- // date_time
- //
- template <typename C, typename B>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const date_time<C, B>& x)
- {
- C f (os.fill (C ('0')));
-
- os.width (4);
- os << x.year () << C ('-');
-
- os.width (2);
- os << x.month () << C ('-');
-
- os.width (2);
- os << x.day () << C ('T');
-
- os.width (2);
- os << x.hours () << C (':');
-
- os.width (2);
- os << x.minutes () << C (':');
-
- os.width (9);
- std::ios_base::fmtflags ff (
- os.setf (std::ios::fixed, std::ios::floatfield));
- os << x.seconds ();
- os.setf (ff, std::ios::floatfield);
-
- os.fill (f);
-
- if (x.zone_present ())
- {
- const time_zone& z (x);
- os << z;
- }
-
- return os;
- }
-
- // duration
- //
- template <typename C, typename B>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const duration<C, B>& x)
- {
- if (x.negative ())
- os << C ('-');
-
- os << C ('P');
-
- // In case it is 0-duration, use the years field to handle
- // this case.
- //
- if (x.years () != 0 ||
- (x.months () == 0 &&
- x.days () == 0 &&
- x.hours () == 0 &&
- x.minutes () == 0 &&
- x.seconds () == 0.0))
- {
- os << x.years () << C ('Y');
- }
-
- if (x.months () != 0)
- {
- os << x.months () << C ('M');
- }
-
- if (x.days () != 0)
- {
- os << x.days () << C ('D');
- }
-
- // Figure out if we need the 'T' delimiter.
- //
- if (x.hours () != 0 ||
- x.minutes () != 0 ||
- x.seconds () != 0.0)
- os << C ('T');
-
- if (x.hours () != 0)
- {
- os << x.hours () << C ('H');
- }
-
- if (x.minutes () != 0)
- {
- os << x.minutes () << C ('M');
- }
-
- if (x.seconds () > 0.0)
- {
- std::ios_base::fmtflags ff (
- os.setf (std::ios::fixed, std::ios::floatfield));
- os << x.seconds () << C ('S');
- os.setf (ff, std::ios::floatfield);
- }
-
- return os;
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/date-time.hxx b/xsd/libxsd/xsd/cxx/tree/date-time.hxx
deleted file mode 100644
index 9526f92..0000000
--- a/xsd/libxsd/xsd/cxx/tree/date-time.hxx
+++ /dev/null
@@ -1,1950 +0,0 @@
-// file : xsd/cxx/tree/date-time.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-/**
- * @file
- *
- * @brief Contains C++ class definitions for the XML Schema date/time types.
- *
- * This is an internal header and is included by the generated code. You
- * normally should not include it directly.
- *
- */
-
-#ifndef XSD_CXX_TREE_DATE_TIME_HXX
-#define XSD_CXX_TREE_DATE_TIME_HXX
-
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/istream-fwd.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- /**
- * @brief C++/Tree mapping runtime namespace.
- *
- * This is an internal namespace and normally should not be referenced
- * directly. Instead you should use the aliases for types in this
- * namespaces that are created in the generated code.
- *
- */
- namespace tree
- {
- /**
- * @brief Time zone representation
- *
- * The %time_zone class represents an optional %time zone and
- * is used as a base class for date/time types.
- *
- * The %time zone can negative in which case both the hours and
- * minutes components should be negative.
- *
- * @nosubgrouping
- */
- class time_zone
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Default constructor.
- *
- * This constructor initializes the instance to the 'not specified'
- * state.
- */
- time_zone ();
-
- /**
- * @brief Initialize an instance with the hours and minutes
- * components.
- *
- * @param hours The %time zone hours component.
- * @param minutes The %time zone minutes component.
- */
- time_zone (short hours, short minutes);
-
- //@}
-
- /**
- * @brief Determine if %time zone is specified.
- *
- * @return True if %time zone is specified, false otherwise.
- */
- bool
- zone_present () const;
-
- /**
- * @brief Reset the %time zone to the 'not specified' state.
- *
- */
- void
- zone_reset ();
-
- /**
- * @brief Get the hours component of the %time zone.
- *
- * @return The hours component of the %time zone.
- */
- short
- zone_hours () const;
-
- /**
- * @brief Set the hours component of the %time zone.
- *
- * @param h The new hours component.
- */
- void
- zone_hours (short h);
-
-
- /**
- * @brief Get the minutes component of the %time zone.
- *
- * @return The minutes component of the %time zone.
- */
- short
- zone_minutes () const;
-
- /**
- * @brief Set the minutes component of the %time zone.
- *
- * @param m The new minutes component.
- */
- void
- zone_minutes (short m);
-
- protected:
- //@cond
-
- template <typename C>
- void
- zone_parse (const C*, std::size_t);
-
- template <typename S>
- void
- zone_extract (istream<S>&);
-
- //@endcond
-
- private:
- bool present_;
- short hours_;
- short minutes_;
- };
-
- /**
- * @brief %time_zone comparison operator.
- *
- * @return True if both %time zones are either not specified or
- * have equal hours and minutes components, false otherwise.
- */
- bool
- operator== (const time_zone&, const time_zone&);
-
- /**
- * @brief %time_zone comparison operator.
- *
- * @return False if both %time zones are either not specified or
- * have equal hours and minutes components, true otherwise.
- */
- bool
- operator!= (const time_zone&, const time_zone&);
-
-
- /**
- * @brief Class corresponding to the XML Schema gDay built-in type.
- *
- * The %gday class represents a day of the month with an optional
- * %time zone.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class gday: public B, public time_zone
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with the day component.
- *
- * When this constructor is used, the %time zone is left
- * unspecified.
- *
- * @param day The day component.
- */
- explicit
- gday (unsigned short day);
-
- /**
- * @brief Initialize an instance with the day component and %time
- * zone.
- *
- * @param day The day component.
- * @param zone_hours The %time zone hours component.
- * @param zone_minutes The %time zone minutes component.
- */
- gday (unsigned short day, short zone_hours, short zone_minutes);
-
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the _clone function instead.
- */
- gday (const gday& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual gday*
- _clone (flags f = 0, container* c = 0) const;
-
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- gday (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gday (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gday (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gday (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Get the day component.
- *
- * @return The day component.
- */
- unsigned short
- day () const;
-
- /**
- * @brief Set the day component.
- *
- * @param d The new day component.
- */
- void
- day (unsigned short d);
-
- protected:
- //@cond
-
- gday ();
-
- void
- parse (const std::basic_string<C>&);
-
- //@endcond
-
- private:
- unsigned short day_;
- };
-
- /**
- * @brief %gday comparison operator.
- *
- * @return True if the day components and %time zones are equal, false
- * otherwise.
- */
- template <typename C, typename B>
- bool
- operator== (const gday<C, B>&, const gday<C, B>&);
-
- /**
- * @brief %gday comparison operator.
- *
- * @return False if the day components and %time zones are equal, true
- * otherwise.
- */
- template <typename C, typename B>
- bool
- operator!= (const gday<C, B>&, const gday<C, B>&);
-
- /**
- * @brief Class corresponding to the XML Schema gMonth built-in type.
- *
- * The %gmonth class represents a month of the year with an optional
- * %time zone.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class gmonth: public B, public time_zone
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with the month component.
- *
- * When this constructor is used, the %time zone is left
- * unspecified.
- *
- * @param month The month component.
- */
- explicit
- gmonth (unsigned short month);
-
- /**
- * @brief Initialize an instance with the month component and %time
- * zone.
- *
- * @param month The month component.
- * @param zone_hours The %time zone hours component.
- * @param zone_minutes The %time zone minutes component.
- */
- gmonth (unsigned short month, short zone_hours, short zone_minutes);
-
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the _clone function instead.
- */
- gmonth (const gmonth& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual gmonth*
- _clone (flags f = 0, container* c = 0) const;
-
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- gmonth (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gmonth (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gmonth (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gmonth (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Get the month component.
- *
- * @return The month component.
- */
- unsigned short
- month () const;
-
- /**
- * @brief Set the month component.
- *
- * @param m The new month component.
- */
- void
- month (unsigned short m);
-
- protected:
- //@cond
-
- gmonth ();
-
- void
- parse (const std::basic_string<C>&);
-
- //@endcond
-
- private:
- unsigned short month_;
- };
-
- /**
- * @brief %gmonth comparison operator.
- *
- * @return True if the month components and %time zones are equal, false
- * otherwise.
- */
- template <typename C, typename B>
- bool
- operator== (const gmonth<C, B>&, const gmonth<C, B>&);
-
- /**
- * @brief %gmonth comparison operator.
- *
- * @return False if the month components and %time zones are equal, true
- * otherwise.
- */
- template <typename C, typename B>
- bool
- operator!= (const gmonth<C, B>&, const gmonth<C, B>&);
-
-
- /**
- * @brief Class corresponding to the XML Schema gYear built-in type.
- *
- * The %gyear class represents a year with an optional %time zone.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class gyear: public B, public time_zone
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with the year component.
- *
- * When this constructor is used, the %time zone is left
- * unspecified.
- *
- * @param year The year component.
- */
- explicit
- gyear (int year);
-
- /**
- * @brief Initialize an instance with the year component and %time
- * zone.
- *
- * @param year The year component.
- * @param zone_hours The %time zone hours component.
- * @param zone_minutes The %time zone minutes component.
- */
- gyear (int year, short zone_hours, short zone_minutes);
-
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the _clone function instead.
- */
- gyear (const gyear& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual gyear*
- _clone (flags f = 0, container* c = 0) const;
-
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- gyear (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gyear (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gyear (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gyear (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Get the year component.
- *
- * @return The year component.
- */
- int
- year () const;
-
- /**
- * @brief Set the year component.
- *
- * @param y The new year component.
- */
- void
- year (int y);
-
- protected:
- //@cond
-
- gyear ();
-
- void
- parse (const std::basic_string<C>&);
-
- //@endcond
-
- private:
- int year_;
- };
-
- /**
- * @brief %gyear comparison operator.
- *
- * @return True if the year components and %time zones are equal, false
- * otherwise.
- */
- template <typename C, typename B>
- bool
- operator== (const gyear<C, B>&, const gyear<C, B>&);
-
- /**
- * @brief %gyear comparison operator.
- *
- * @return False if the year components and %time zones are equal, true
- * otherwise.
- */
- template <typename C, typename B>
- bool
- operator!= (const gyear<C, B>&, const gyear<C, B>&);
-
-
- /**
- * @brief Class corresponding to the XML Schema gMonthDay built-in type.
- *
- * The %gmonth_day class represents day and month of the year with an
- * optional %time zone.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class gmonth_day: public B, public time_zone
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with the month and day components.
- *
- * When this constructor is used, the %time zone is left
- * unspecified.
- *
- * @param month The month component.
- * @param day The day component.
- */
- gmonth_day (unsigned short month, unsigned short day);
-
- /**
- * @brief Initialize an instance with the month and day components
- * as well as %time zone.
- *
- * @param month The month component.
- * @param day The day component.
- * @param zone_hours The %time zone hours component.
- * @param zone_minutes The %time zone minutes component.
- */
- gmonth_day (unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes);
-
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the _clone function instead.
- */
- gmonth_day (const gmonth_day& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual gmonth_day*
- _clone (flags f = 0, container* c = 0) const;
-
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- gmonth_day (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gmonth_day (const xercesc::DOMElement& e,
- flags f = 0,
- container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gmonth_day (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gmonth_day (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Get the month component.
- *
- * @return The month component.
- */
- unsigned short
- month () const;
-
- /**
- * @brief Set the month component.
- *
- * @param m The new month component.
- */
- void
- month (unsigned short m);
-
- /**
- * @brief Get the day component.
- *
- * @return The day component.
- */
- unsigned short
- day () const;
-
- /**
- * @brief Set the day component.
- *
- * @param d The new day component.
- */
- void
- day (unsigned short d);
-
- protected:
- //@cond
-
- gmonth_day ();
-
- void
- parse (const std::basic_string<C>&);
-
- //@endcond
-
- private:
- unsigned short month_;
- unsigned short day_;
- };
-
- /**
- * @brief %gmonth_day comparison operator.
- *
- * @return True if the month and day components as well as %time zones
- * are equal, false otherwise.
- */
- template <typename C, typename B>
- bool
- operator== (const gmonth_day<C, B>&, const gmonth_day<C, B>&);
-
- /**
- * @brief %gmonth_day comparison operator.
- *
- * @return False if the month and day components as well as %time zones
- * are equal, true otherwise.
- */
- template <typename C, typename B>
- bool
- operator!= (const gmonth_day<C, B>&, const gmonth_day<C, B>&);
-
-
- /**
- * @brief Class corresponding to the XML Schema gYearMonth built-in
- * type.
- *
- * The %gyear_month class represents year and month with an optional
- * %time zone.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class gyear_month: public B, public time_zone
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with the year and month components.
- *
- * When this constructor is used, the %time zone is left
- * unspecified.
- *
- * @param year The year component.
- * @param month The month component.
- */
- gyear_month (int year, unsigned short month);
-
- /**
- * @brief Initialize an instance with the year and month components
- * as well as %time zone.
- *
- * @param year The year component.
- * @param month The month component.
- * @param zone_hours The %time zone hours component.
- * @param zone_minutes The %time zone minutes component.
- */
- gyear_month (int year, unsigned short month,
- short zone_hours, short zone_minutes);
-
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the _clone function instead.
- */
- gyear_month (const gyear_month& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual gyear_month*
- _clone (flags f = 0, container* c = 0) const;
-
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- gyear_month (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gyear_month (const xercesc::DOMElement& e,
- flags f = 0,
- container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gyear_month (const xercesc::DOMAttr& a,
- flags f = 0,
- container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- gyear_month (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Get the year component.
- *
- * @return The year component.
- */
- int
- year () const;
-
- /**
- * @brief Set the year component.
- *
- * @param y The new year component.
- */
- void
- year (int y);
-
- /**
- * @brief Get the month component.
- *
- * @return The month component.
- */
- unsigned short
- month () const;
-
- /**
- * @brief Set the month component.
- *
- * @param m The new month component.
- */
- void
- month (unsigned short m);
-
- protected:
- //@cond
-
- gyear_month ();
-
- void
- parse (const std::basic_string<C>&);
-
- //@endcond
-
- private:
- int year_;
- unsigned short month_;
- };
-
- /**
- * @brief %gyear_month comparison operator.
- *
- * @return True if the year and month components as well as %time zones
- * are equal, false otherwise.
- */
- template <typename C, typename B>
- bool
- operator== (const gyear_month<C, B>&, const gyear_month<C, B>&);
-
- /**
- * @brief %gyear_month comparison operator.
- *
- * @return False if the year and month components as well as %time zones
- * are equal, true otherwise.
- */
- template <typename C, typename B>
- bool
- operator!= (const gyear_month<C, B>&, const gyear_month<C, B>&);
-
-
- /**
- * @brief Class corresponding to the XML Schema %date built-in type.
- *
- * The %date class represents day, month, and year with an optional
- * %time zone.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class date: public B, public time_zone
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with the year, month, and day
- * components.
- *
- * When this constructor is used, the %time zone is left
- * unspecified.
- *
- * @param year The year component.
- * @param month The month component.
- * @param day The day component.
- */
- date (int year, unsigned short month, unsigned short day);
-
- /**
- * @brief Initialize an instance with the year, month, and day
- * components as well as %time zone.
- *
- * @param year The year component.
- * @param month The month component.
- * @param day The day component.
- * @param zone_hours The %time zone hours component.
- * @param zone_minutes The %time zone minutes component.
- */
- date (int year, unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes);
-
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the _clone function instead.
- */
- date (const date& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual date*
- _clone (flags f = 0, container* c = 0) const;
-
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- date (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- date (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- date (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- date (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Get the year component.
- *
- * @return The year component.
- */
- int
- year () const;
-
- /**
- * @brief Set the year component.
- *
- * @param y The new year component.
- */
- void
- year (int y);
-
- /**
- * @brief Get the month component.
- *
- * @return The month component.
- */
- unsigned short
- month () const;
-
- /**
- * @brief Set the month component.
- *
- * @param m The new month component.
- */
- void
- month (unsigned short m);
-
- /**
- * @brief Get the day component.
- *
- * @return The day component.
- */
- unsigned short
- day () const;
-
- /**
- * @brief Set the day component.
- *
- * @param d The new day component.
- */
- void
- day (unsigned short d);
-
- protected:
- //@cond
-
- date ();
-
- void
- parse (const std::basic_string<C>&);
-
- //@endcond
-
- private:
- int year_;
- unsigned short month_;
- unsigned short day_;
- };
-
- /**
- * @brief %date comparison operator.
- *
- * @return True if the year, month, and day components as well as %time
- * zones are equal, false otherwise.
- */
- template <typename C, typename B>
- bool
- operator== (const date<C, B>&, const date<C, B>&);
-
- /**
- * @brief %date comparison operator.
- *
- * @return False if the year, month, and day components as well as %time
- * zones are equal, true otherwise.
- */
- template <typename C, typename B>
- bool
- operator!= (const date<C, B>&, const date<C, B>&);
-
-
- /**
- * @brief Class corresponding to the XML Schema %time built-in type.
- *
- * The %time class represents hours, minutes, and seconds with an
- * optional %time zone.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class time: public B, public time_zone
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with the hours, minutes, and
- * seconds components.
- *
- * When this constructor is used, the %time zone is left
- * unspecified.
- *
- * @param hours The hours component.
- * @param minutes The minutes component.
- * @param seconds The seconds component.
- */
- time (unsigned short hours, unsigned short minutes, double seconds);
-
- /**
- * @brief Initialize an instance with the hours, minutes, and
- * seconds components as well as %time zone.
- *
- * @param hours The hours component.
- * @param minutes The minutes component.
- * @param seconds The seconds component.
- * @param zone_hours The %time zone hours component.
- * @param zone_minutes The %time zone minutes component.
- */
- time (unsigned short hours, unsigned short minutes, double seconds,
- short zone_hours, short zone_minutes);
-
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the _clone function instead.
- */
- time (const time& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual time*
- _clone (flags f = 0, container* c = 0) const;
-
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- time (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- time (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- time (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- time (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Get the hours component.
- *
- * @return The hours component.
- */
- unsigned short
- hours () const;
-
- /**
- * @brief Set the hours component.
- *
- * @param h The new hours component.
- */
- void
- hours (unsigned short h);
-
- /**
- * @brief Get the minutes component.
- *
- * @return The minutes component.
- */
- unsigned short
- minutes () const;
-
- /**
- * @brief Set the minutes component.
- *
- * @param m The new minutes component.
- */
- void
- minutes (unsigned short m);
-
- /**
- * @brief Get the seconds component.
- *
- * @return The seconds component.
- */
- double
- seconds () const;
-
- /**
- * @brief Set the seconds component.
- *
- * @param s The new seconds component.
- */
- void
- seconds (double s);
-
- protected:
- //@cond
-
- time ();
-
- void
- parse (const std::basic_string<C>&);
-
- //@endcond
-
- private:
- unsigned short hours_;
- unsigned short minutes_;
- double seconds_;
- };
-
- /**
- * @brief %time comparison operator.
- *
- * @return True if the hours, seconds, and minutes components as well
- * as %time zones are equal, false otherwise.
- */
- template <typename C, typename B>
- bool
- operator== (const time<C, B>&, const time<C, B>&);
-
- /**
- * @brief %time comparison operator.
- *
- * @return False if the hours, seconds, and minutes components as well
- * as %time zones are equal, true otherwise.
- */
- template <typename C, typename B>
- bool
- operator!= (const time<C, B>&, const time<C, B>&);
-
-
- /**
- * @brief Class corresponding to the XML Schema dateTime built-in type.
- *
- * The %date_time class represents year, month, day, hours, minutes,
- * and seconds with an optional %time zone.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class date_time: public B, public time_zone
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with the year, month, day, hours,
- * minutes, and seconds components.
- *
- * When this constructor is used, the %time zone is left
- * unspecified.
- *
- * @param year The year component.
- * @param month The month component.
- * @param day The day component.
- * @param hours The hours component.
- * @param minutes The minutes component.
- * @param seconds The seconds component.
- */
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds);
-
- /**
- * @brief Initialize an instance with the year, month, day, hours,
- * minutes, and seconds components as well as %time zone.
- *
- * @param year The year component.
- * @param month The month component.
- * @param day The day component.
- * @param hours The hours component.
- * @param minutes The minutes component.
- * @param seconds The seconds component.
- * @param zone_hours The %time zone hours component.
- * @param zone_minutes The %time zone minutes component.
- */
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds, short zone_hours, short zone_minutes);
-
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the _clone function instead.
- */
- date_time (const date_time& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual date_time*
- _clone (flags f = 0, container* c = 0) const;
-
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- date_time (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- date_time (const xercesc::DOMElement& e,
- flags f = 0,
- container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- date_time (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- date_time (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Get the year component.
- *
- * @return The year component.
- */
- int
- year () const;
-
- /**
- * @brief Set the year component.
- *
- * @param y The new year component.
- */
- void
- year (int y);
-
- /**
- * @brief Get the month component.
- *
- * @return The month component.
- */
- unsigned short
- month () const;
-
- /**
- * @brief Set the month component.
- *
- * @param m The new month component.
- */
- void
- month (unsigned short m);
-
- /**
- * @brief Get the day component.
- *
- * @return The day component.
- */
- unsigned short
- day () const;
-
- /**
- * @brief Set the day component.
- *
- * @param d The new day component.
- */
- void
- day (unsigned short d);
-
- /**
- * @brief Get the hours component.
- *
- * @return The hours component.
- */
- unsigned short
- hours () const;
-
- /**
- * @brief Set the hours component.
- *
- * @param h The new hours component.
- */
- void
- hours (unsigned short h);
-
- /**
- * @brief Get the minutes component.
- *
- * @return The minutes component.
- */
- unsigned short
- minutes () const;
-
- /**
- * @brief Set the minutes component.
- *
- * @param m The new minutes component.
- */
- void
- minutes (unsigned short m);
-
- /**
- * @brief Get the seconds component.
- *
- * @return The seconds component.
- */
- double
- seconds () const;
-
- /**
- * @brief Set the seconds component.
- *
- * @param s The new seconds component.
- */
- void
- seconds (double s);
-
- protected:
- //@cond
-
- date_time ();
-
- void
- parse (const std::basic_string<C>&);
-
- //@endcond
-
- private:
- int year_;
- unsigned short month_;
- unsigned short day_;
- unsigned short hours_;
- unsigned short minutes_;
- double seconds_;
- };
-
- /**
- * @brief %date_time comparison operator.
- *
- * @return True if the year, month, day, hours, seconds, and minutes
- * components as well as %time zones are equal, false otherwise.
- */
- template <typename C, typename B>
- bool
- operator== (const date_time<C, B>&, const date_time<C, B>&);
-
- /**
- * @brief %date_time comparison operator.
- *
- * @return False if the year, month, day, hours, seconds, and minutes
- * components as well as %time zones are equal, true otherwise.
- */
- template <typename C, typename B>
- bool
- operator!= (const date_time<C, B>&, const date_time<C, B>&);
-
-
- /**
- * @brief Class corresponding to the XML Schema %duration built-in type.
- *
- * The %duration class represents a potentially negative %duration in
- * the form of years, months, days, hours, minutes, and seconds.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class duration: public B
- {
- public:
- /**
- * @name Constructors
- */
- //@{
- /**
- * @brief Initialize a potentially negative instance with the years,
- * months, days, hours, minutes, and seconds components.
- *
- * @param negative A boolean value indicating whether the %duration
- * is negative (true) or positive (false).
- * @param years The years component.
- * @param months The months component.
- * @param days The days component.
- * @param hours The hours component.
- * @param minutes The minutes component.
- * @param seconds The seconds component.
- */
- duration (bool negative,
- unsigned int years, unsigned int months, unsigned int days,
- unsigned int hours, unsigned int minutes, double seconds);
-
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the _clone function instead.
- */
- duration (const duration& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual duration*
- _clone (flags f = 0, container* c = 0) const;
-
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- duration (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- duration (const xercesc::DOMElement& e,
- flags f = 0,
- container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- duration (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- duration (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Determine if %duration is negative.
- *
- * @return True if %duration is negative, false otherwise.
- */
- bool
- negative () const;
-
- /**
- * @brief Change %duration sign.
- *
- * @param n A boolean value indicating whether %duration is
- * negative (true) or positive (false).
- */
- void
- negative (bool n);
-
- /**
- * @brief Get the years component.
- *
- * @return The years component.
- */
- unsigned int
- years () const;
-
- /**
- * @brief Set the years component.
- *
- * @param y The new years component.
- */
- void
- years (unsigned int y);
-
- /**
- * @brief Get the months component.
- *
- * @return The months component.
- */
- unsigned int
- months () const;
-
- /**
- * @brief Set the months component.
- *
- * @param m The new months component.
- */
- void
- months (unsigned int m);
-
- /**
- * @brief Get the days component.
- *
- * @return The days component.
- */
- unsigned int
- days () const;
-
- /**
- * @brief Set the days component.
- *
- * @param d The new days component.
- */
- void
- days (unsigned int d);
-
- /**
- * @brief Get the hours component.
- *
- * @return The hours component.
- */
- unsigned int
- hours () const;
-
- /**
- * @brief Set the hours component.
- *
- * @param h The new hours component.
- */
- void
- hours (unsigned int h);
-
- /**
- * @brief Get the minutes component.
- *
- * @return The minutes component.
- */
- unsigned int
- minutes () const;
-
- /**
- * @brief Set the minutes component.
- *
- * @param m The new minutes component.
- */
- void
- minutes (unsigned int m);
-
- /**
- * @brief Get the seconds component.
- *
- * @return The seconds component.
- */
- double
- seconds () const;
-
- /**
- * @brief Set the seconds component.
- *
- * @param s The new seconds component.
- */
- void
- seconds (double s);
-
- protected:
- //@cond
-
- duration ();
-
- void
- parse (const std::basic_string<C>&);
-
- //@endcond
-
- private:
- bool negative_;
- unsigned int years_;
- unsigned int months_;
- unsigned int days_;
- unsigned int hours_;
- unsigned int minutes_;
- double seconds_;
- };
-
- /**
- * @brief %duration comparison operator.
- *
- * @return True if the sings as well as years, months, days, hours,
- * seconds, and minutes components are equal, false otherwise.
- */
- template <typename C, typename B>
- bool
- operator== (const duration<C, B>&, const duration<C, B>&);
-
- /**
- * @brief %duration comparison operator.
- *
- * @return False if the sings as well as years, months, days, hours,
- * seconds, and minutes components are equal, true otherwise.
- */
- template <typename C, typename B>
- bool
- operator!= (const duration<C, B>&, const duration<C, B>&);
- }
- }
-}
-
-#include <xsd/cxx/tree/date-time.ixx>
-#include <xsd/cxx/tree/date-time.txx>
-
-#endif // XSD_CXX_TREE_DATE_TIME_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/date-time.ixx b/xsd/libxsd/xsd/cxx/tree/date-time.ixx
deleted file mode 100644
index 00d7f8c..0000000
--- a/xsd/libxsd/xsd/cxx/tree/date-time.ixx
+++ /dev/null
@@ -1,892 +0,0 @@
-// file : xsd/cxx/tree/date-time.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // time_zone
- //
- inline time_zone::
- time_zone ()
- : present_ (false)
- {
- }
-
- inline time_zone::
- time_zone (short h, short m)
- : present_ (true), hours_ (h), minutes_ (m)
- {
- }
-
- inline bool time_zone::
- zone_present () const
- {
- return present_;
- }
-
- inline void time_zone::
- zone_reset ()
- {
- present_ = false;
- }
-
- inline short time_zone::
- zone_hours () const
- {
- return hours_;
- }
-
- inline void time_zone::
- zone_hours (short h)
- {
- hours_ = h;
- present_ = true;
- }
-
- inline short time_zone::
- zone_minutes () const
- {
- return minutes_;
- }
-
- inline void time_zone::
- zone_minutes (short m)
- {
- minutes_ = m;
- present_ = true;
- }
-
- inline bool
- operator== (const time_zone& x, const time_zone& y)
- {
- return x.zone_present ()
- ? y.zone_present () &&
- x.zone_hours () == y.zone_hours () &&
- x.zone_minutes () == y.zone_minutes ()
- : !y.zone_present ();
- }
-
- inline bool
- operator!= (const time_zone& x, const time_zone& y)
- {
- return !(x == y);
- }
-
- // gday
- //
- template <typename C, typename B>
- inline gday<C, B>::
- gday ()
- {
- }
-
- template <typename C, typename B>
- inline gday<C, B>::
- gday (unsigned short day)
- : day_ (day)
- {
- }
-
- template <typename C, typename B>
- inline gday<C, B>::
- gday (unsigned short day, short zone_h, short zone_m)
- : time_zone (zone_h, zone_m), day_ (day)
- {
- }
-
- template <typename C, typename B>
- inline gday<C, B>::
- gday (const gday& x, flags f, container* c)
- : B (x, f, c), time_zone (x), day_ (x.day_)
- {
- }
-
- template <typename C, typename B>
- inline unsigned short gday<C, B>::
- day () const
- {
- return day_;
- }
-
- template <typename C, typename B>
- inline void gday<C, B>::
- day (unsigned short day)
- {
- day_ = day;
- }
-
- template <typename C, typename B>
- inline bool
- operator== (const gday<C, B>& x, const gday<C, B>& y)
- {
- const time_zone& xz = x;
- const time_zone& yz = y;
-
- return x.day () == y.day () && xz == yz;
- }
-
- template <typename C, typename B>
- inline bool
- operator!= (const gday<C, B>& x, const gday<C, B>& y)
- {
- return !(x == y);
- }
-
- // gmonth
- //
- template <typename C, typename B>
- inline gmonth<C, B>::
- gmonth ()
- {
- }
-
- template <typename C, typename B>
- inline gmonth<C, B>::
- gmonth (unsigned short month)
- : month_ (month)
- {
- }
-
- template <typename C, typename B>
- inline gmonth<C, B>::
- gmonth (unsigned short month, short zone_h, short zone_m)
- : time_zone (zone_h, zone_m), month_ (month)
- {
- }
-
- template <typename C, typename B>
- inline gmonth<C, B>::
- gmonth (const gmonth& x, flags f, container* c)
- : B (x, f, c), time_zone (x), month_ (x.month_)
- {
- }
-
- template <typename C, typename B>
- inline unsigned short gmonth<C, B>::
- month () const
- {
- return month_;
- }
-
- template <typename C, typename B>
- inline void gmonth<C, B>::
- month (unsigned short month)
- {
- month_ = month;
- }
-
- template <typename C, typename B>
- inline bool
- operator== (const gmonth<C, B>& x, const gmonth<C, B>& y)
- {
- const time_zone& xz = x;
- const time_zone& yz = y;
-
- return x.month () == y.month () && xz == yz;
- }
-
- template <typename C, typename B>
- inline bool
- operator!= (const gmonth<C, B>& x, const gmonth<C, B>& y)
- {
- return !(x == y);
- }
-
- // gyear
- //
- template <typename C, typename B>
- inline gyear<C, B>::
- gyear ()
- {
- }
-
- template <typename C, typename B>
- inline gyear<C, B>::
- gyear (int year)
- : year_ (year)
- {
- }
-
- template <typename C, typename B>
- inline gyear<C, B>::
- gyear (int year, short zone_h, short zone_m)
- : time_zone (zone_h, zone_m), year_ (year)
- {
- }
-
- template <typename C, typename B>
- inline gyear<C, B>::
- gyear (const gyear& x, flags f, container* c)
- : B (x, f, c), time_zone (x), year_ (x.year_)
- {
- }
-
- template <typename C, typename B>
- inline int gyear<C, B>::
- year () const
- {
- return year_;
- }
-
- template <typename C, typename B>
- inline void gyear<C, B>::
- year (int year)
- {
- year_ = year;
- }
-
- template <typename C, typename B>
- inline bool
- operator== (const gyear<C, B>& x, const gyear<C, B>& y)
- {
- const time_zone& xz = x;
- const time_zone& yz = y;
-
- return x.year () == y.year () && xz == yz;
- }
-
- template <typename C, typename B>
- inline bool
- operator!= (const gyear<C, B>& x, const gyear<C, B>& y)
- {
- return !(x == y);
- }
-
- // gmonth_day
- //
- template <typename C, typename B>
- inline gmonth_day<C, B>::
- gmonth_day ()
- {
- }
-
- template <typename C, typename B>
- inline gmonth_day<C, B>::
- gmonth_day (unsigned short month, unsigned short day)
- : month_ (month), day_ (day)
- {
- }
-
- template <typename C, typename B>
- inline gmonth_day<C, B>::
- gmonth_day (unsigned short month, unsigned short day,
- short zone_h, short zone_m)
- : time_zone (zone_h, zone_m), month_ (month), day_ (day)
- {
- }
-
- template <typename C, typename B>
- inline gmonth_day<C, B>::
- gmonth_day (const gmonth_day& x, flags f, container* c)
- : B (x, f, c), time_zone (x), month_ (x.month_), day_ (x.day_)
- {
- }
-
- template <typename C, typename B>
- inline unsigned short gmonth_day<C, B>::
- month () const
- {
- return month_;
- }
-
- template <typename C, typename B>
- inline void gmonth_day<C, B>::
- month (unsigned short month)
- {
- month_ = month;
- }
-
- template <typename C, typename B>
- inline unsigned short gmonth_day<C, B>::
- day () const
- {
- return day_;
- }
-
- template <typename C, typename B>
- inline void gmonth_day<C, B>::
- day (unsigned short day)
- {
- day_ = day;
- }
-
- template <typename C, typename B>
- inline bool
- operator== (const gmonth_day<C, B>& x, const gmonth_day<C, B>& y)
- {
- const time_zone& xz = x;
- const time_zone& yz = y;
-
- return x.month () == y.month () &&
- x.day () == y.day () &&
- xz == yz;
- }
-
- template <typename C, typename B>
- inline bool
- operator!= (const gmonth_day<C, B>& x, const gmonth_day<C, B>& y)
- {
- return !(x == y);
- }
-
- // gyear_month
- //
- template <typename C, typename B>
- inline gyear_month<C, B>::
- gyear_month ()
- {
- }
-
- template <typename C, typename B>
- inline gyear_month<C, B>::
- gyear_month (int year, unsigned short month)
- : year_ (year), month_ (month)
- {
- }
-
- template <typename C, typename B>
- inline gyear_month<C, B>::
- gyear_month (int year, unsigned short month,
- short zone_h, short zone_m)
- : time_zone (zone_h, zone_m), year_ (year), month_ (month)
- {
- }
-
- template <typename C, typename B>
- inline gyear_month<C, B>::
- gyear_month (const gyear_month& x, flags f, container* c)
- : B (x, f, c), time_zone (x), year_ (x.year_), month_ (x.month_)
- {
- }
-
- template <typename C, typename B>
- inline int gyear_month<C, B>::
- year () const
- {
- return year_;
- }
-
- template <typename C, typename B>
- inline void gyear_month<C, B>::
- year (int year)
- {
- year_ = year;
- }
-
- template <typename C, typename B>
- inline unsigned short gyear_month<C, B>::
- month () const
- {
- return month_;
- }
-
- template <typename C, typename B>
- inline void gyear_month<C, B>::
- month (unsigned short month)
- {
- month_ = month;
- }
-
- template <typename C, typename B>
- inline bool
- operator== (const gyear_month<C, B>& x, const gyear_month<C, B>& y)
- {
- const time_zone& xz = x;
- const time_zone& yz = y;
-
- return x.year () == y.year () &&
- x.month () == y.month () &&
- xz == yz;
- }
-
- template <typename C, typename B>
- inline bool
- operator!= (const gyear_month<C, B>& x, const gyear_month<C, B>& y)
- {
- return !(x == y);
- }
-
- // date
- //
- template <typename C, typename B>
- inline date<C, B>::
- date ()
- {
- }
-
- template <typename C, typename B>
- inline date<C, B>::
- date (int year, unsigned short month, unsigned short day)
- : year_ (year), month_ (month), day_ (day)
- {
- }
-
- template <typename C, typename B>
- inline date<C, B>::
- date (int year, unsigned short month, unsigned short day,
- short zone_h, short zone_m)
- : time_zone (zone_h, zone_m),
- year_ (year), month_ (month), day_ (day)
- {
- }
-
- template <typename C, typename B>
- inline date<C, B>::
- date (const date& x, flags f, container* c)
- : B (x, f, c), time_zone (x),
- year_ (x.year_), month_ (x.month_), day_ (x.day_)
- {
- }
-
- template <typename C, typename B>
- inline int date<C, B>::
- year () const
- {
- return year_;
- }
-
- template <typename C, typename B>
- inline void date<C, B>::
- year (int year)
- {
- year_ = year;
- }
-
- template <typename C, typename B>
- inline unsigned short date<C, B>::
- month () const
- {
- return month_;
- }
-
- template <typename C, typename B>
- inline void date<C, B>::
- month (unsigned short month)
- {
- month_ = month;
- }
-
- template <typename C, typename B>
- inline unsigned short date<C, B>::
- day () const
- {
- return day_;
- }
-
- template <typename C, typename B>
- inline void date<C, B>::
- day (unsigned short day)
- {
- day_ = day;
- }
-
- template <typename C, typename B>
- inline bool
- operator== (const date<C, B>& x, const date<C, B>& y)
- {
- const time_zone& xz = x;
- const time_zone& yz = y;
-
- return x.year () == y.year () &&
- x.month () == y.month () &&
- x.day () == y.day () &&
- xz == yz;
- }
-
- template <typename C, typename B>
- inline bool
- operator!= (const date<C, B>& x, const date<C, B>& y)
- {
- return !(x == y);
- }
-
- // time
- //
- template <typename C, typename B>
- inline time<C, B>::
- time ()
- {
- }
-
- template <typename C, typename B>
- inline time<C, B>::
- time (unsigned short hours, unsigned short minutes, double seconds)
- : hours_ (hours), minutes_ (minutes), seconds_ (seconds)
- {
- }
-
- template <typename C, typename B>
- inline time<C, B>::
- time (unsigned short hours, unsigned short minutes, double seconds,
- short zone_h, short zone_m)
- : time_zone (zone_h, zone_m),
- hours_ (hours), minutes_ (minutes), seconds_ (seconds)
- {
- }
-
- template <typename C, typename B>
- inline time<C, B>::
- time (const time& x, flags f, container* c)
- : B (x, f, c), time_zone (x),
- hours_ (x.hours_), minutes_ (x.minutes_), seconds_ (x.seconds_)
- {
- }
-
- template <typename C, typename B>
- inline unsigned short time<C, B>::
- hours () const
- {
- return hours_;
- }
-
- template <typename C, typename B>
- inline void time<C, B>::
- hours (unsigned short hours)
- {
- hours_ = hours;
- }
-
- template <typename C, typename B>
- inline unsigned short time<C, B>::
- minutes () const
- {
- return minutes_;
- }
-
- template <typename C, typename B>
- inline void time<C, B>::
- minutes (unsigned short minutes)
- {
- minutes_ = minutes;
- }
-
- template <typename C, typename B>
- inline double time<C, B>::
- seconds () const
- {
- return seconds_;
- }
-
- template <typename C, typename B>
- inline void time<C, B>::
- seconds (double seconds)
- {
- seconds_ = seconds;
- }
-
- template <typename C, typename B>
- inline bool
- operator== (const time<C, B>& x, const time<C, B>& y)
- {
- const time_zone& xz = x;
- const time_zone& yz = y;
-
- return x.hours () == y.hours () &&
- x.minutes () == y.minutes () &&
- x.seconds () == y.seconds () &&
- xz == yz;
- }
-
- template <typename C, typename B>
- inline bool
- operator!= (const time<C, B>& x, const time<C, B>& y)
- {
- return !(x == y);
- }
-
- // date_time
- //
- template <typename C, typename B>
- inline date_time<C, B>::
- date_time ()
- {
- }
-
- template <typename C, typename B>
- inline date_time<C, B>::
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes, double seconds)
- : year_ (year), month_ (month), day_ (day),
- hours_ (hours), minutes_ (minutes), seconds_ (seconds)
- {
- }
-
- template <typename C, typename B>
- inline date_time<C, B>::
- date_time (int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes, double seconds,
- short zone_h, short zone_m)
- : time_zone (zone_h, zone_m),
- year_ (year), month_ (month), day_ (day),
- hours_ (hours), minutes_ (minutes), seconds_ (seconds)
- {
- }
-
- template <typename C, typename B>
- inline date_time<C, B>::
- date_time (const date_time& x, flags f, container* c)
- : B (x, f, c), time_zone (x),
- year_ (x.year_), month_ (x.month_), day_ (x.day_),
- hours_ (x.hours_), minutes_ (x.minutes_), seconds_ (x.seconds_)
- {
- }
-
- template <typename C, typename B>
- inline int date_time<C, B>::
- year () const
- {
- return year_;
- }
-
- template <typename C, typename B>
- inline void date_time<C, B>::
- year (int year)
- {
- year_ = year;
- }
-
- template <typename C, typename B>
- inline unsigned short date_time<C, B>::
- month () const
- {
- return month_;
- }
-
- template <typename C, typename B>
- inline void date_time<C, B>::
- month (unsigned short month)
- {
- month_ = month;
- }
-
- template <typename C, typename B>
- inline unsigned short date_time<C, B>::
- day () const
- {
- return day_;
- }
-
- template <typename C, typename B>
- inline void date_time<C, B>::
- day (unsigned short day)
- {
- day_ = day;
- }
-
- template <typename C, typename B>
- inline unsigned short date_time<C, B>::
- hours () const
- {
- return hours_;
- }
-
- template <typename C, typename B>
- inline void date_time<C, B>::
- hours (unsigned short hours)
- {
- hours_ = hours;
- }
-
- template <typename C, typename B>
- inline unsigned short date_time<C, B>::
- minutes () const
- {
- return minutes_;
- }
-
- template <typename C, typename B>
- inline void date_time<C, B>::
- minutes (unsigned short minutes)
- {
- minutes_ = minutes;
- }
-
- template <typename C, typename B>
- inline double date_time<C, B>::
- seconds () const
- {
- return seconds_;
- }
-
- template <typename C, typename B>
- inline void date_time<C, B>::
- seconds (double seconds)
- {
- seconds_ = seconds;
- }
-
- template <typename C, typename B>
- inline bool
- operator== (const date_time<C, B>& x, const date_time<C, B>& y)
- {
- const time_zone& xz = x;
- const time_zone& yz = y;
-
- return x.year () == y.year () &&
- x.month () == y.month () &&
- x.day () == y.day () &&
- x.hours () == y.hours () &&
- x.minutes () == y.minutes () &&
- x.seconds () == y.seconds () &&
- xz == yz;
- }
-
- template <typename C, typename B>
- inline bool
- operator!= (const date_time<C, B>& x, const date_time<C, B>& y)
- {
- return !(x == y);
- }
-
- // duration
- //
- template <typename C, typename B>
- inline duration<C, B>::
- duration ()
- {
- }
-
- template <typename C, typename B>
- inline duration<C, B>::
- duration (bool negative,
- unsigned int years, unsigned int months, unsigned int days,
- unsigned int hours, unsigned int minutes, double seconds)
- : negative_ (negative),
- years_ (years), months_ (months), days_ (days),
- hours_ (hours), minutes_ (minutes), seconds_ (seconds)
- {
- }
-
- template <typename C, typename B>
- inline duration<C, B>::
- duration (const duration& x, flags f, container* c)
- : B (x, f, c), negative_ (x.negative_),
- years_ (x.years_), months_ (x.months_), days_ (x.days_),
- hours_ (x.hours_), minutes_ (x.minutes_), seconds_ (x.seconds_)
- {
- }
-
- template <typename C, typename B>
- inline bool duration<C, B>::
- negative () const
- {
- return negative_;
- }
-
- template <typename C, typename B>
- inline void duration<C, B>::
- negative (bool negative)
- {
- negative_ = negative;
- }
-
- template <typename C, typename B>
- inline unsigned int duration<C, B>::
- years () const
- {
- return years_;
- }
-
- template <typename C, typename B>
- inline void duration<C, B>::
- years (unsigned int years)
- {
- years_ = years;
- }
-
- template <typename C, typename B>
- inline unsigned int duration<C, B>::
- months () const
- {
- return months_;
- }
-
- template <typename C, typename B>
- inline void duration<C, B>::
- months (unsigned int months)
- {
- months_ = months;
- }
-
- template <typename C, typename B>
- inline unsigned int duration<C, B>::
- days () const
- {
- return days_;
- }
-
- template <typename C, typename B>
- inline void duration<C, B>::
- days (unsigned int days)
- {
- days_ = days;
- }
-
- template <typename C, typename B>
- inline unsigned int duration<C, B>::
- hours () const
- {
- return hours_;
- }
-
- template <typename C, typename B>
- inline void duration<C, B>::
- hours (unsigned int hours)
- {
- hours_ = hours;
- }
-
- template <typename C, typename B>
- inline unsigned int duration<C, B>::
- minutes () const
- {
- return minutes_;
- }
-
- template <typename C, typename B>
- inline void duration<C, B>::
- minutes (unsigned int minutes)
- {
- minutes_ = minutes;
- }
-
- template <typename C, typename B>
- inline double duration<C, B>::
- seconds () const
- {
- return seconds_;
- }
-
- template <typename C, typename B>
- inline void duration<C, B>::
- seconds (double seconds)
- {
- seconds_ = seconds;
- }
-
- template <typename C, typename B>
- inline bool
- operator== (const duration<C, B>& x, const duration<C, B>& y)
- {
- return x.negative () == y.negative () &&
- x.years () == y.years () &&
- x.months () == y.months () &&
- x.days () == y.days () &&
- x.hours () == y.hours () &&
- x.minutes () == y.minutes () &&
- x.seconds () == y.seconds ();
- }
-
- template <typename C, typename B>
- inline bool
- operator!= (const duration<C, B>& x, const duration<C, B>& y)
- {
- return !(x == y);
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/date-time.txx b/xsd/libxsd/xsd/cxx/tree/date-time.txx
deleted file mode 100644
index f5b9b8e..0000000
--- a/xsd/libxsd/xsd/cxx/tree/date-time.txx
+++ /dev/null
@@ -1,93 +0,0 @@
-// file : xsd/cxx/tree/date-time.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // gday
- //
- template <typename C, typename B>
- gday<C, B>* gday<C, B>::
- _clone (flags f, container* c) const
- {
- return new gday (*this, f, c);
- }
-
- // gmonth
- //
- template <typename C, typename B>
- gmonth<C, B>* gmonth<C, B>::
- _clone (flags f, container* c) const
- {
- return new gmonth (*this, f, c);
- }
-
- // gyear
- //
- template <typename C, typename B>
- gyear<C, B>* gyear<C, B>::
- _clone (flags f, container* c) const
- {
- return new gyear (*this, f, c);
- }
-
- // gmonth_day
- //
- template <typename C, typename B>
- gmonth_day<C, B>* gmonth_day<C, B>::
- _clone (flags f, container* c) const
- {
- return new gmonth_day (*this, f, c);
- }
-
- // gyear_month
- //
- template <typename C, typename B>
- gyear_month<C, B>* gyear_month<C, B>::
- _clone (flags f, container* c) const
- {
- return new gyear_month (*this, f, c);
- }
-
- // date
- //
- template <typename C, typename B>
- date<C, B>* date<C, B>::
- _clone (flags f, container* c) const
- {
- return new date (*this, f, c);
- }
-
- // time
- //
- template <typename C, typename B>
- time<C, B>* time<C, B>::
- _clone (flags f, container* c) const
- {
- return new time (*this, f, c);
- }
-
- // date_time
- //
- template <typename C, typename B>
- date_time<C, B>* date_time<C, B>::
- _clone (flags f, container* c) const
- {
- return new date_time (*this, f, c);
- }
-
- // duration
- //
- template <typename C, typename B>
- duration<C, B>* duration<C, B>::
- _clone (flags f, container* c) const
- {
- return new duration (*this, f, c);
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/element-map.hxx b/xsd/libxsd/xsd/cxx/tree/element-map.hxx
deleted file mode 100644
index 0f4883d..0000000
--- a/xsd/libxsd/xsd/cxx/tree/element-map.hxx
+++ /dev/null
@@ -1,147 +0,0 @@
-// file : xsd/cxx/tree/element-map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_ELEMENT_MAP_HXX
-#define XSD_CXX_TREE_ELEMENT_MAP_HXX
-
-#include <map>
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cstddef> // std::size_t
-#include <string>
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/xml/qualified-name.hxx>
-#include <xsd/cxx/tree/elements.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- /**
- * @brief Root element map.
- *
- * This class allows uniform parsing/serialization of multiple
- * root elements via the element_type base class.
- *
- * @nosubgrouping
- */
- template <typename C, typename T>
- class element_map
- {
- public:
- /**
- * @brief Common base class for all element types.
- */
- typedef tree::element_type<C, T> element_type;
-
- /**
- * @brief Parse a DOM element.
- *
- * @param e A DOM element to parse.
- * @param f Flags to create the new element object with.
- * @return An automatic pointer to the new element object.
- */
- static XSD_AUTO_PTR<element_type>
- parse (const xercesc::DOMElement& e, flags f = 0);
-
- /**
- * @brief Serialize an element object to a DOM element.
- *
- * @param e A DOM element to serialize to.
- * @param x An element object to serialize.
- */
- static void
- serialize (xercesc::DOMElement& e, const element_type& x);
-
- public:
- //@cond
-
- typedef xml::qualified_name<C> qualified_name;
-
- typedef XSD_AUTO_PTR<element_type>
- (*parser) (const xercesc::DOMElement&, flags f);
-
- typedef void
- (*serializer) (xercesc::DOMElement&, const element_type&);
-
- static void
- register_parser (const qualified_name&, parser);
-
- static void
- register_serializer (const qualified_name&, serializer);
-
- public:
- struct map_entry
- {
- map_entry () : parser_ (0), serializer_ (0) {}
-
- parser parser_;
- serializer serializer_;
- };
-
- typedef
- std::map<qualified_name, map_entry>
- map;
-
- static map* map_;
- static std::size_t count_;
-
- private:
- element_map ();
-
- //@endcond
- };
-
- //@cond
-
- template <typename C, typename T>
- typename element_map<C, T>::map* element_map<C, T>::map_ = 0;
-
- template <typename C, typename T>
- std::size_t element_map<C, T>::count_ = 0;
-
- template <typename C, typename T>
- struct element_map_init
- {
- element_map_init ();
- ~element_map_init ();
- };
-
- //
- //
- template<typename T, typename C, typename B>
- XSD_AUTO_PTR<element_type<C, B> >
- parser_impl (const xercesc::DOMElement&, flags);
-
- template<typename T, typename C, typename B>
- struct parser_init
- {
- parser_init (const std::basic_string<C>& name,
- const std::basic_string<C>& ns);
- };
-
- //
- //
- template<typename T, typename C, typename B>
- void
- serializer_impl (xercesc::DOMElement&, const element_type<C, B>&);
-
- template<typename T, typename C, typename B>
- struct serializer_init
- {
- serializer_init (const std::basic_string<C>& name,
- const std::basic_string<C>& ns);
- };
-
- //@endcond
- }
- }
-}
-
-#include <xsd/cxx/tree/element-map.txx>
-
-#endif // XSD_CXX_TREE_ELEMENT_MAP_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/element-map.txx b/xsd/libxsd/xsd/cxx/tree/element-map.txx
deleted file mode 100644
index 32fe873..0000000
--- a/xsd/libxsd/xsd/cxx/tree/element-map.txx
+++ /dev/null
@@ -1,70 +0,0 @@
-// file : xsd/cxx/tree/element-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // element_map
- //
- template <typename C, typename T>
- void element_map<C, T>::
- register_parser (const qualified_name& n, parser p)
- {
- (*map_)[n].parser_ = p;
- }
-
- template <typename C, typename T>
- void element_map<C, T>::
- register_serializer (const qualified_name& n, serializer s)
- {
- (*map_)[n].serializer_ = s;
- }
-
- // element_map_init
- //
- template <typename C, typename T>
- element_map_init<C, T>::
- element_map_init ()
- {
- if (element_map<C, T>::count_ == 0)
- element_map<C, T>::map_ = new typename element_map<C, T>::map;
-
- ++element_map<C, T>::count_;
- }
-
- template <typename C, typename T>
- element_map_init<C, T>::
- ~element_map_init ()
- {
- if (--element_map<C, T>::count_ == 0)
- delete element_map<C, T>::map_;
- }
-
- // parser_init
- //
- template<typename T, typename C, typename B>
- parser_init<T, C, B>::
- parser_init (const std::basic_string<C>& name,
- const std::basic_string<C>& ns)
- {
- element_map<C, B>::register_parser (
- xml::qualified_name<C> (name, ns), &parser_impl<T, C, B>);
- }
-
- // serializer_init
- //
- template<typename T, typename C, typename B>
- serializer_init<T, C, B>::
- serializer_init (const std::basic_string<C>& name,
- const std::basic_string<C>& ns)
- {
- element_map<C, B>::register_serializer (
- xml::qualified_name<C> (name, ns), &serializer_impl<T, C, B>);
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/elements.hxx b/xsd/libxsd/xsd/cxx/tree/elements.hxx
deleted file mode 100644
index a3bbea4..0000000
--- a/xsd/libxsd/xsd/cxx/tree/elements.hxx
+++ /dev/null
@@ -1,1858 +0,0 @@
-// file : xsd/cxx/tree/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-/**
- * @file
- *
- * @brief Contains C++ class definitions for XML Schema anyType and
- * anySimpleType types as well as supporting code.
- *
- * This is an internal header and is included by the generated code. You
- * normally should not include it directly.
- *
- */
-
-#ifndef XSD_CXX_TREE_ELEMENTS_HXX
-#define XSD_CXX_TREE_ELEMENTS_HXX
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR, XSD_CXX11
-
-#include <map>
-#include <string>
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cstddef> // std::size_t
-#include <istream>
-#include <sstream>
-#include <cassert>
-
-#ifdef XSD_CXX11
-# include <utility> // std::move
-#endif
-
-#include <xercesc/dom/DOMNode.hpp>
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xercesc/dom/DOMNamedNodeMap.hpp>
-
-#include <xercesc/util/XercesVersion.hpp>
-
-#include <xsd/cxx/xml/elements.hxx> // xml::properties
-#include <xsd/cxx/xml/dom/auto-ptr.hxx> // dom::auto_ptr/unique_ptr
-#include <xsd/cxx/xml/dom/wildcard-source.hxx> // dom::create_document()
-
-#include <xsd/cxx/tree/facet.hxx>
-#include <xsd/cxx/tree/exceptions.hxx>
-#include <xsd/cxx/tree/istream-fwd.hxx>
-#include <xsd/cxx/tree/containers-wildcard.hxx>
-
-#if _XERCES_VERSION < 30000
-# error Xerces-C++ 2-series is not supported
-#endif
-
-namespace xsd
-{
- namespace cxx
- {
- /**
- * @brief C++/Tree mapping runtime namespace.
- *
- * This is an internal namespace and normally should not be referenced
- * directly. Instead you should use the aliases for types in this
- * namespaces that are created in the generated code.
- *
- */
- namespace tree
- {
- /**
- * @brief Parsing and %serialization %flags.
- *
- * Flags are used to modify the default behavior of %parsing and
- * %serialization functions as well as %parsing constructors.
- *
- * @nosubgrouping
- */
- class flags
- {
- public:
- /**
- * @name Flag constants
- */
- //@{
-
- /**
- * @brief Keep DOM association in the resulting tree.
- */
- static const unsigned long keep_dom = 0x00000100UL;
-
- /**
- * @brief Assume ownership of the DOM document.
- *
- * This flag only makes sense together with the @c keep_dom
- * flag in the call to the %parsing function with the
- * @c dom::auto_ptr/unique_ptr<DOMDocument> argument.
- *
- */
- static const unsigned long own_dom = 0x00000200UL;
-
- /**
- * @brief Turn off XML Schema validation in the underlying XML
- * parser.
- */
- static const unsigned long dont_validate = 0x00000400UL;
-
- /**
- * @brief Extract XML content for anyType or anySimpleType.
- * Normally you don't need to specify this flag explicitly.
- */
- static const unsigned long extract_content = 0x00000800UL;
-
- /**
- * @brief Do not initialize the Xerces-C++ runtime.
- */
- static const unsigned long dont_initialize = 0x00000001UL;
-
- /**
- * @brief Do not write XML declaration during %serialization.
- */
- static const unsigned long no_xml_declaration = 0x00010000UL;
-
- /**
- * @brief Do not add extra spaces or new lines that make the
- * resulting XML easier to read.
- */
- static const unsigned long dont_pretty_print = 0x00020000UL;
-
- //@cond
-
- // The following flags are for internal use.
- //
- static const unsigned long base = 0x01000000UL;
-
- //@endcond
-
- // Notes on flag blocks:
- //
- // 0x000000FF - common (applicable to both parsing and serialization)
- // 0x0000FF00 - parsing (values aligned with XML parsing)
- // 0x00FF0000 - serialization (values aligned with XML serialization)
- // 0xFF000000 - internal
-
- //@}
-
- public:
- /**
- * @brief Initialize an instance with an integer value.
- *
- * @param x A %flags value as an integer.
- */
- flags (unsigned long x = 0)
- : x_ (x)
- {
- }
-
- /**
- * @brief Convert an instance to an integer value.
- *
- * @return An integer %flags value.
- */
- operator unsigned long () const
- {
- return x_;
- }
-
- /**
- * @brief Combine two %flags.
- *
- * @return A %flags object that is a combination of the arguments.
- */
- friend flags
- operator| (const flags& a, const flags& b)
- {
- return flags (a.x_ | b.x_);
- }
-
- /**
- * @brief Combine two %flags.
- *
- * @return A %flags object that is a combination of the arguments.
- */
- friend flags
- operator| (const flags& a, unsigned long b)
- {
- return flags (a.x_ | b);
- }
-
- /**
- * @brief Combine two %flags.
- *
- * @return A %flags object that is a combination of the arguments.
- */
- friend flags
- operator| (unsigned long a, const flags& b)
- {
- return flags (a | b.x_);
- }
-
- private:
- unsigned long x_;
- };
-
- // Parsing properties. Refer to xsd/cxx/xml/elements.hxx for XML-
- // related properties.
- //
- template <typename C>
- class properties: public xml::properties<C>
- {
- };
-
- /**
- * @brief Content order sequence entry.
- *
- * @nosubgrouping
- */
- struct content_order
- {
- /**
- * @brief Initialize an instance with passed id and index.
- *
- * @param id Content id.
- * @param index Content index in the corresponding sequence.
- */
- content_order (std::size_t id, std::size_t index = 0)
- : id (id), index (index)
- {
- }
-
- /**
- * @brief Content id.
- */
- std::size_t id;
-
- /**
- * @brief Content index.
- */
- std::size_t index;
- };
-
- bool
- operator== (const content_order&, const content_order&);
-
- bool
- operator!= (const content_order&, const content_order&);
-
- bool
- operator< (const content_order&, const content_order&);
-
- //@cond
-
- // DOM user data keys.
- //
- template <int dummy>
- struct user_data_keys_template
- {
- // Back pointers to tree nodes.
- //
- static const XMLCh node[21];
- };
-
- typedef user_data_keys_template<0> user_data_keys;
-
- //
- //
- struct identity
- {
- virtual
- ~identity ()
- {
- }
-
- identity ()
- {
- }
-
- virtual bool
- before (const identity&) const = 0;
-
- virtual void
- throw_duplicate_id () const = 0;
-
- private:
- identity (const identity&);
-
- identity&
- operator= (const identity&);
- };
-
- //@endcond
-
-
- // anyType. VC++ has a name injection bug that makes it impossible
- // to have a member with the same name as a base type. To address
- // that we will have to choose some unique name for the definition
- // and typedef it to 'type'.
- //
- class _type;
-
- /**
- * @brief Class corresponding to the XML Schema anyType built-in type.
- *
- */
- typedef _type type;
-
- /**
- * @brief Container type.
- *
- */
- typedef _type container;
-
- /**
- * @brief Class corresponding to the XML Schema anyType built-in type.
- *
- * This class is a base for every generated and built-in type in the
- * C++/Tree mapping.
- *
- * @nosubgrouping
- */
- class _type
- {
- public:
- virtual
- ~_type ()
- {
- // Everything should have been unregistered by now.
- //
- assert (map_.get () == 0 || map_->size () == 0);
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Default constructor.
- */
- _type ();
-
- /**
- * @brief Create an instance from a C string.
- *
- * @param s A string to initialize the instance with.
- *
- * Note that this constructor ignores the string and creates an
- * empty anyType instance. In particular, it will not convert the
- * string into DOM content. The purpose of such a strange constructor
- * is to allow statically-initialized default values of anyType type.
- */
- template <typename C>
- _type (const C* s);
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- _type (const type& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual type*
- _clone (flags f = 0, container* c = 0) const
- {
- return new type (*this, f, c);
- }
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- _type (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- _type (const xercesc::DOMElement& e,
- flags f = flags::extract_content,
- container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- _type (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename C>
- _type (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- type&
- operator= (const type& x)
- {
- if (this != &x)
- {
- if (x.content_.get () == 0)
- content_.reset ();
- else
- content_ = x.content_->clone ();
-
- // Drop DOM association.
- //
- dom_info_.reset ();
- }
-
- return *this;
- }
-
- // anyType content API.
- //
- public:
- typedef element_optional dom_content_optional;
-
- /**
- * @brief Return a read-only (constant) reference to the anyType
- * DOM content.
- *
- * @return A constant reference to the optional container.
- *
- * The DOM content is returned as an optional element container,
- * the same container as used for optional element wildcards.
- */
- const dom_content_optional&
- dom_content () const;
-
- /**
- * @brief Return a read-write reference to the anyType DOM content.
- *
- * @return A reference to the optional container.
- *
- * The DOM content is returned as an optional element container,
- * the same container as used for optional element wildcards.
- */
- dom_content_optional&
- dom_content ();
-
- /**
- * @brief Set the anyType DOM content.
- *
- * @param e A new element to set.
- *
- * This function makes a copy of its argument and sets it as the
- * new DOM content.
- */
- void
- dom_content (const xercesc::DOMElement& e);
-
- /**
- * @brief Set the anyType DOM content.
- *
- * @param e A new element to use.
- *
- * This function will use the passed element directly instead
- * of making a copy. For this to work the element should belong
- * to the DOM document associated with this anyType instance.
- *
- * @see dom_content_document
- */
- void
- dom_content (xercesc::DOMElement* e);
-
- /**
- * @brief Set the anyType DOM content.
- *
- * @param d An optional container with the new element to set.
- *
- * If the element is present in @a d then this function makes a
- * copy of this element and sets it as the new wildcard content.
- * Otherwise the element container is set the 'not present' state.
- */
- void
- dom_content (const dom_content_optional& d);
-
- /**
- * @brief Return a read-only (constant) reference to the DOM
- * document associated with this anyType instance.
- *
- * @return A constant reference to the DOM document.
- *
- * The DOM document returned by this function is used to store
- * the raw XML content corresponding to the anyType instance.
- */
- const xercesc::DOMDocument&
- dom_content_document () const;
-
- /**
- * @brief Return a read-write reference to the DOM document
- * associated with this anyType instance.
- *
- * @return A reference to the DOM document.
- *
- * The DOM document returned by this function is used to store
- * the raw XML content corresponding to the anyType instance.
- */
- xercesc::DOMDocument&
- dom_content_document ();
-
- /**
- * @brief Check for absence of DOM (anyType) and text (anySimpleType)
- * content.
- *
- * @return True if there is no content and false otherwise.
- *
- * This is an optimization function that allows us to check for the
- * lack of content without actually creating its empty representation
- * (that is, empty DOM document for DOM or empty string for text).
- */
- bool
- null_content () const;
-
- //
- //
- public:
- /**
- * @brief Comparison operator. It uses DOM (anyType) or text
- * (anySimpleType) content if present. If the content is missing
- * then the types are assumed unequal.
- *
- * @return True if the instances are equal, false otherwise.
- */
- friend bool
- operator== (const type& x, const type& y)
- {
- return x.content_.get () != 0 &&
- x.content_->compare (y.content_.get ());
- }
-
- /**
- * @brief Comparison operator. It uses DOM (anyType) or text
- * (anySimpleType) content if present. If the content is missing
- * then the types are assumed unequal.
- *
- * @return True if the instances are not equal, false otherwise.
- */
- friend bool
- operator!= (const type& x, const type& y) {return !(x == y);}
-
- // Container API.
- //
- public:
- /**
- * @brief Get a constant pointer to container, an object model
- * node that contains this instance.
- *
- * @return A constant pointer to container, or 0 if this instance
- * is not contained.
- */
- const container*
- _container () const
- {
- return container_;
- }
-
- /**
- * @brief Get a pointer to container, an object model node that
- * contains this instance.
- *
- * @return A pointer to container, or 0 if this instance is not
- * contained.
- */
- container*
- _container ()
- {
- return container_;
- }
-
- /**
- * @brief Set this instance's new container, an object model node
- * that contains this instance.
- *
- * @param c A pointer to container.
- */
- virtual void
- _container (container* c)
- {
- container* dr (0);
-
- if (c != 0)
- {
- dr = c->_root ();
-
- if (dr == 0)
- dr = c;
- }
-
- XSD_AUTO_PTR<map>& m (dr ? dr->map_ : map_);
-
- if (container_ == 0)
- {
- if (c != 0 && map_.get () != 0)
- {
- // Transfer our IDs to the new root.
- //
- if (m.get () != 0)
- {
- m->insert (map_->begin (), map_->end ());
- map_.reset ();
- }
- else
- {
-#ifdef XSD_CXX11
- m = std::move (map_);
-#else
- m = map_;
-#endif
- }
- }
- }
- else
- {
- container* sr (_root ());
-
- if (sr->map_.get () != 0)
- {
- // Transfer IDs that belong to this subtree.
- //
- for (map::iterator i (sr->map_->begin ()), e (sr->map_->end ());
- i != e;)
- {
- type* x (i->second);
- for (; x != this && x != sr; x = x->_container ()) ;
-
- if (x != sr)
- {
- // Part of our subtree.
- //
- if (m.get () == 0)
- m.reset (new map);
-
- m->insert (*i);
- sr->map_->erase (i++);
- }
- else
- ++i;
- }
- }
- }
-
- container_ = c;
- }
-
- /**
- * @brief Get a constant pointer to object model's root node.
- *
- * @return A constant pointer to root node, or 0 if this instance
- * is not contained.
- */
- const container*
- _root () const
- {
- const container* r (container_);
-
- for (const container* c (r); c != 0; c = c->container_)
- r = c;
-
- return r;
- }
-
- /**
- * @brief Get a pointer to object model's root node.
- *
- * @return A pointer to root node, or 0 if this instance is not
- * contained.
- */
- container*
- _root ()
- {
- container* r (container_);
-
- for (container* c (r); c != 0; c = c->container_)
- r = c;
-
- return r;
- }
-
- // DOM association.
- //
- public:
- /**
- * @brief Get a constant pointer to a DOM node associated with
- * this object model node.
- *
- * @return A constant pointer to DOM node, or 0 if none associated.
- */
- const xercesc::DOMNode*
- _node () const
- {
- return dom_info_.get () ? dom_info_->node() : 0;
- }
-
- /**
- * @brief Get a pointer to a DOM node associated with this object
- * model node.
- *
- * @return A pointer to DOM node, or 0 if none associated.
- */
- xercesc::DOMNode*
- _node ()
- {
- return dom_info_.get () ? dom_info_->node () : 0;
- }
-
- /**
- * @brief Exception indicating that a DOM node cannot be associated
- * with an object model node.
- */
- class bad_dom_node_type: public std::exception //@@ Inherit exception<C>.
- {
- public:
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ()
- {
- return "DOM node is not an attribute node or element node";
- }
- };
-
- /**
- * @brief Manually set a DOM node associated with this object
- * model node.
- *
- * The DOM node should be a child of the parent's DOM node. If
- * this object model node is a root of the tree, then it will
- * assume the ownership of the whole DOM document to which this
- * DOM node belongs.
- *
- * @param n A pointer to DOM node (should be either an element or
- * an attribute).
- */
- void
- _node (xercesc::DOMNode* n)
- {
- switch (n->getNodeType ())
- {
- case xercesc::DOMNode::ELEMENT_NODE:
- {
- if (container_ != 0)
- {
- assert (_root ()->_node () != 0);
- assert (_root ()->_node ()->getOwnerDocument () ==
- n->getOwnerDocument ());
- }
-
- dom_info_ =
- dom_info_factory::create (
- *static_cast<xercesc::DOMElement*> (n),
- *this,
- container_ == 0);
-
- break;
- }
- case xercesc::DOMNode::ATTRIBUTE_NODE:
- {
- assert (container_ != 0);
- assert (_root ()->_node () != 0);
- assert (_root ()->_node ()->getOwnerDocument () ==
- n->getOwnerDocument ());
-
- dom_info_ =
- dom_info_factory::create (
- *static_cast<xercesc::DOMAttr*> (n),
- *this);
-
- break;
- }
- default:
- {
- throw bad_dom_node_type ();
- }
- }
- }
-
- public:
- //@cond
-
- void
- _register_id (const identity& i, type* t)
- {
- // We should be the root.
- //
- assert (container_ == 0);
-
- if (map_.get () == 0)
- map_.reset (new map);
-
- if (!map_->insert (
- std::pair<const identity*, type*> (&i, t)).second)
- {
- i.throw_duplicate_id ();
- }
- }
-
- //@@ Does not inherit from exception<C>.
- //
- struct not_registered: std::exception
- {
- virtual const char*
- what () const throw ()
- {
- return "attempt to unregister non-existent id";
- }
- };
-
- void
- _unregister_id (const identity& id)
- {
- // We should be the root.
- //
- assert (container_ == 0);
-
- if (map_.get () == 0 || map_->erase (&id) == 0)
- throw not_registered ();
- }
-
- type*
- _lookup_id (const identity& id) const
- {
- if (map_.get ())
- {
- map::const_iterator it (map_->find (&id));
-
- if (it != map_->end ())
- return it->second;
- }
-
- return 0;
- }
-
- //@endcond
-
- private:
- //@cond
-
- struct dom_info
- {
- virtual
- ~dom_info () {}
-
- dom_info () {}
-
- virtual XSD_AUTO_PTR<dom_info>
- clone (type& tree_node, container*) const = 0;
-
- virtual xercesc::DOMNode*
- node () = 0;
-
- private:
- dom_info (const dom_info&);
- dom_info& operator= (const dom_info&);
- };
-
- struct dom_element_info: public dom_info
- {
- dom_element_info (xercesc::DOMElement& e, type& n, bool root)
- : e_ (e)
- {
- e_.setUserData (user_data_keys::node, &n, 0);
-
- if (root)
- {
- // The caller should have associated a dom::auto/unique_ptr
- // object that owns this document with the document node
- // using the xml_schema::dom::tree_node_key key.
- //
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>* pd (
- reinterpret_cast<XSD_DOM_AUTO_PTR<xercesc::DOMDocument>*> (
- e.getOwnerDocument ()->getUserData (user_data_keys::node)));
-
- assert (pd != 0);
- assert (pd->get () == e.getOwnerDocument ());
-
- // Transfer ownership.
-#ifdef XSD_CXX11
- doc_ = std::move (*pd);
-#else
- doc_ = *pd;
-#endif
- }
- }
-
- virtual XSD_AUTO_PTR<dom_info>
- clone (type& tree_node, container* c) const
- {
- // Check if we are a document root.
- //
- if (c == 0)
- {
- // We preserver DOM associations only in complete
- // copies from root.
- //
- return XSD_AUTO_PTR<dom_info> (
- doc_.get () == 0
- ? 0
- : new dom_element_info (*doc_, tree_node));
- }
-
- // Check if our container does not have DOM association (e.g.,
- // because it wasn't a complete copy of the tree).
- //
- using xercesc::DOMNode;
-
- DOMNode* cn (c->_node ());
-
- if (cn == 0)
- return XSD_AUTO_PTR<dom_info> ();
-
- // Now we are going to find the corresponding element in
- // the new tree.
- //
- {
- using xercesc::DOMElement;
-
- DOMNode& pn (*e_.getParentNode ());
- assert (pn.getNodeType () == DOMNode::ELEMENT_NODE);
-
- DOMNode* sn (pn.getFirstChild ()); // Source.
- DOMNode* dn (cn->getFirstChild ()); // Destination.
-
- // We should have at least one child.
- //
- assert (sn != 0);
-
- // Move in parallel until we get to the needed node.
- //
- for (; sn != 0 && !e_.isSameNode (sn);)
- {
- sn = sn->getNextSibling ();
- dn = dn->getNextSibling ();
- }
-
- // e_ should be on the list.
- //
- assert (sn != 0);
-
- assert (dn->getNodeType () == DOMNode::ELEMENT_NODE);
-
- return XSD_AUTO_PTR<dom_info> (
- new dom_element_info (static_cast<DOMElement&> (*dn),
- tree_node,
- false));
- }
- }
-
- virtual xercesc::DOMNode*
- node ()
- {
- return &e_;
- }
-
- private:
- dom_element_info (const xercesc::DOMDocument& d, type& n)
- : doc_ (static_cast<xercesc::DOMDocument*> (
- d.cloneNode (true))),
- e_ (*doc_->getDocumentElement ())
- {
- e_.setUserData (user_data_keys::node, &n, 0);
- }
-
- private:
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument> doc_;
- xercesc::DOMElement& e_;
- };
-
-
- struct dom_attribute_info: public dom_info
- {
- dom_attribute_info (xercesc::DOMAttr& a, type& n)
- : a_ (a)
- {
- a_.setUserData (user_data_keys::node, &n, 0);
- }
-
- virtual XSD_AUTO_PTR<dom_info>
- clone (type& tree_node, container* c) const
- {
- // Check if we are a document root.
- //
- if (c == 0)
- {
- // We preserver DOM associations only in complete
- // copies from root.
- //
- return XSD_AUTO_PTR<dom_info> ();
- }
-
- // Check if our container does not have DOM association (e.g.,
- // because it wasn't a complete copy of the tree).
- //
- using xercesc::DOMNode;
-
- DOMNode* cn (c->_node ());
-
- if (cn == 0)
- return XSD_AUTO_PTR<dom_info> ();
-
- // We are going to find the corresponding attribute in
- // the new tree.
- //
- using xercesc::DOMAttr;
- using xercesc::DOMElement;
- using xercesc::DOMNamedNodeMap;
-
- DOMElement& p (*a_.getOwnerElement ());
- DOMNamedNodeMap& nl (*p.getAttributes ());
-
- XMLSize_t size (nl.getLength ()), i (0);
-
- // We should have at least one child.
- //
- assert (size != 0);
-
- for ( ;i < size && !a_.isSameNode (nl.item (i)); ++i)/*noop*/;
-
- // a_ should be in the list.
- //
- assert (i < size);
-
- DOMNode& n (*cn->getAttributes ()->item (i));
- assert (n.getNodeType () == DOMNode::ATTRIBUTE_NODE);
-
- return XSD_AUTO_PTR<dom_info> (
- new dom_attribute_info (static_cast<DOMAttr&> (n), tree_node));
- }
-
- virtual xercesc::DOMNode*
- node ()
- {
- return &a_;
- }
-
- private:
- xercesc::DOMAttr& a_;
- };
-
- // For Sun C++ 5.6.
- //
- struct dom_info_factory;
- friend struct _type::dom_info_factory;
-
- struct dom_info_factory
- {
- static XSD_AUTO_PTR<dom_info>
- create (const xercesc::DOMElement& e, type& n, bool root)
- {
- return XSD_AUTO_PTR<dom_info> (
- new dom_element_info (
- const_cast<xercesc::DOMElement&> (e), n, root));
- }
-
- static XSD_AUTO_PTR<dom_info>
- create (const xercesc::DOMAttr& a, type& n)
- {
- return XSD_AUTO_PTR<dom_info> (
- new dom_attribute_info (
- const_cast<xercesc::DOMAttr&> (a), n));
- }
- };
-
- //@endcond
-
- XSD_AUTO_PTR<dom_info> dom_info_;
-
-
- // ID/IDREF map.
- //
- private:
-
- //@cond
-
- struct identity_comparator
- {
- bool operator () (const identity* x, const identity* y) const
- {
- return x->before (*y);
- }
- };
-
- //@endcond
-
- typedef
- std::map<const identity*, type*, identity_comparator>
- map;
-
- XSD_AUTO_PTR<map> map_;
-
- // anyType and anySimpleType content.
- //
- protected:
-
- //@cond
-
- struct content_type
- {
- virtual
- ~content_type () {}
-
- content_type () {}
-
- virtual XSD_AUTO_PTR<content_type>
- clone () const = 0;
-
- virtual bool
- compare (const content_type*) const = 0;
-
- private:
- content_type (const content_type&);
- content_type& operator= (const content_type&);
- };
-
- struct dom_content_type: content_type
- {
- dom_content_type ()
- : doc (xml::dom::create_document<char> ()), dom (*doc) {}
-
- explicit
- dom_content_type (const xercesc::DOMElement& e)
- : doc (xml::dom::create_document<char> ()), dom (e, *doc) {}
-
- explicit
- dom_content_type (xercesc::DOMElement* e)
- : doc (xml::dom::create_document<char> ()), dom (e, *doc) {}
-
- explicit
- dom_content_type (const dom_content_optional& d)
- : doc (xml::dom::create_document<char> ()), dom (d, *doc) {}
-
- virtual XSD_AUTO_PTR<content_type>
- clone () const
- {
- return XSD_AUTO_PTR<content_type> (new dom_content_type (dom));
- }
-
- virtual bool
- compare (const content_type* c) const
- {
- if (const dom_content_type* dc =
- dynamic_cast<const dom_content_type*> (c))
- return dom == dc->dom;
-
- return false;
- }
-
- public:
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument> doc;
- dom_content_optional dom;
- };
-
- //@endcond
-
- mutable XSD_AUTO_PTR<content_type> content_;
-
- private:
- container* container_;
- };
-
- /**
- * @brief Class corresponding to the XML Schema anySimpleType built-in
- * type.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class simple_type: public B
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Default constructor.
- */
- simple_type ();
-
- /**
- * @brief Create an instance from a C string.
- *
- * @param s A string to initialize the instance with.
- */
- simple_type (const C* s);
-
- /**
- * @brief Create an instance from a string.
- *
- * @param s A string to initialize the instance with.
- */
- simple_type (const std::basic_string<C>& s);
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- simple_type (const simple_type& x, flags f = 0, container* c = 0);
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual simple_type*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- simple_type (istream<S>& s,
- flags f = flags::extract_content,
- container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- simple_type (const xercesc::DOMElement& e,
- flags f = flags::extract_content,
- container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- simple_type (const xercesc::DOMAttr& a,
- flags f = flags::extract_content,
- container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- simple_type (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = flags::extract_content,
- container* c = 0);
- //@}
-
- // anySimpleType content API.
- //
- public:
- /**
- * @brief Return a read-only (constant) reference to the anySimpleType
- * text content.
- *
- * @return A constant reference to the text string.
- */
- const std::basic_string<C>&
- text_content () const;
-
- /**
- * @brief Return a read-write reference to the anySimpleType text
- * content.
- *
- * @return A reference to the text string.
- */
- std::basic_string<C>&
- text_content ();
-
- /**
- * @brief Set the anySimpleType text content.
- *
- * @param e A new text string to set.
- */
- void
- text_content (const std::basic_string<C>& t);
-
- protected:
- //@cond
-
- typedef typename B::content_type content_type;
-
- struct text_content_type: content_type
- {
- text_content_type () {}
-
- explicit
- text_content_type (const std::basic_string<C>& t): text (t) {}
-
- explicit
- text_content_type (const C* t): text (t) {}
-
- virtual XSD_AUTO_PTR<content_type>
- clone () const
- {
- return XSD_AUTO_PTR<content_type> (new text_content_type (text));
- }
-
- virtual bool
- compare (const content_type* c) const
- {
- if (const text_content_type* tc =
- dynamic_cast<const text_content_type*> (c))
- return text == tc->text;
-
- return false;
- }
-
- public:
- // It would have been more elegant to store text content as DOMText.
- // However, that would require Xerces-C++ initialization. Also
- // having a separate DOMDocument for each text node seems like
- // an overkill.
- //
- std::basic_string<C> text;
- };
-
- //@endcond
- };
-
-
- /**
- * @brief Base class for element types.
- *
- * This class is a base for every generated element type.
- *
- * @nosubgrouping
- */
- template <typename C, typename T>
- class element_type
- {
- public:
- virtual
- ~element_type ()
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual element_type*
- _clone (flags f = 0) const = 0;
-
- /**
- * @brief Return the element name.
- *
- * @return A read-only string reference containing the element
- * name.
- */
- virtual const std::basic_string<C>&
- _name () const = 0;
-
- /**
- * @brief Return the element namespace.
- *
- * @return A read-only string reference containing the element
- * namespace. Empty string is returned if the element is
- * unqualified.
- */
- virtual const std::basic_string<C>&
- _namespace () const = 0;
-
- /**
- * @brief Return the element value.
- *
- * @return A pointer to the element value or 0 if the element
- * is of a fundamental type.
- */
- virtual T*
- _value () = 0;
-
- /**
- * @brief Return the element value.
- *
- * @return A read-only pointer to the element value or 0 if the
- * element is of a fundamental type.
- */
- virtual const T*
- _value () const = 0;
- };
-
-
- //@cond
-
- // Extra schema type id to disambiguate certain cases where
- // different XML Schema types (e.g., double and decimal) are
- // mapped to the same fundamental C++ type (e.g., double).
- //
- struct schema_type
- {
- enum value
- {
- other,
- double_,
- decimal
- };
- };
-
- //@endcond
-
-
- //@cond
- template <typename T,
- typename C,
- schema_type::value ST = schema_type::other>
- struct traits
- {
- typedef T type;
-
- static XSD_AUTO_PTR<T>
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return XSD_AUTO_PTR<T> (new T (e, f, c));
- }
-
- static XSD_AUTO_PTR<T>
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return XSD_AUTO_PTR<T> (new T (a, f, c));
- }
-
- static XSD_AUTO_PTR<T>
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- {
- return XSD_AUTO_PTR<T> (new T (s, e, f, c));
- }
-
- // For now for istream we only go through traits for non-
- // fundamental types.
- //
- template <typename S>
- static XSD_AUTO_PTR<T>
- create (istream<S>& s, flags f, container* c)
- {
- return XSD_AUTO_PTR<T> (new T (s, f, c));
- }
- };
-
- template <typename B,
- typename C,
- schema_type::value ST>
- struct traits<simple_type<C, B>, C, ST>
- {
- typedef simple_type<C, B> type;
-
- static XSD_AUTO_PTR<type>
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return XSD_AUTO_PTR<type> (
- new type (e, f | flags::extract_content, c));
- }
-
- static XSD_AUTO_PTR<type>
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return XSD_AUTO_PTR<type> (
- new type (a, f | flags::extract_content, c));
- }
-
- static XSD_AUTO_PTR<type>
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- {
- return XSD_AUTO_PTR<type> (
- new type (s, e, f | flags::extract_content, c));
- }
-
- template <typename S>
- static XSD_AUTO_PTR<type>
- create (istream<S>& s, flags f, container* c)
- {
- return XSD_AUTO_PTR<type> (
- new type (s, f | flags::extract_content, c));
- }
- };
- //@endcond
-
-
- /**
- * @brief Class template that emulates inheritance from a
- * fundamental C++ type.
- *
- * @nosubgrouping
- */
- template <typename T,
- typename C,
- typename B,
- schema_type::value ST = schema_type::other>
- class fundamental_base: public B
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Default constructor.
- */
- fundamental_base ()
- : facet_table_ (0), x_ ()
- {
- }
-
- /**
- * @brief Initialize an instance with an underlying type value.
- *
- * @param x An underlying type value.
- */
- fundamental_base (T x)
- : facet_table_ (0), x_ (x)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- fundamental_base (const fundamental_base& x,
- flags f = 0,
- container* c = 0)
- : B (x, f, c), facet_table_ (0), x_ (x.x_)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual fundamental_base*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- fundamental_base (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- fundamental_base (const xercesc::DOMElement& e,
- flags f = 0,
- container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- fundamental_base (const xercesc::DOMAttr& a,
- flags f = 0,
- container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- fundamental_base (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign an underlying type value to the instance.
- *
- * @param x An underlying type value.
- * @return A reference to the instance.
- */
- fundamental_base&
- operator= (const T& x)
- {
- if (&x_ != &x)
- x_ = x;
-
- return *this;
- }
-
- public:
- /**
- * @brief Implicitly convert the instance to constant reference to
- * the underlying type.
- *
- * @return A constant reference to the underlying type.
- */
- operator const T& () const
- {
- return x_;
- }
-
- /**
- * @brief Implicitly convert the instance to reference to the
- * underlying type.
- *
- * @return A reference to the underlying type.
- */
- operator T& ()
- {
- return x_;
- }
-
- // The following extra conversion operators causes problems on
- // some compilers (notably VC 9.0) and are disabled by default.
- //
-#ifdef XSD_TREE_EXTRA_FUND_CONV
- /**
- * @brief Implicitly convert the instance to another type (const
- * version).
- *
- * @return A value converted to the target type.
- */
- template <typename T2>
- operator T2 () const
- {
- return x_;
- }
-
- /**
- * @brief Implicitly convert the instance to another type.
- *
- * @return A value converted to the target type.
- */
- template <typename T2>
- operator T2 ()
- {
- return x_;
- }
-#endif // XSD_TREE_EXTRA_FUND_CONV
-
- public:
- /**
- * @brief Get the facet table associated with this type.
- *
- * @return A pointer to read-only facet table or 0.
- */
- const facet*
- _facet_table () const
- {
- return facet_table_;
- }
-
- protected:
- /**
- * @brief Set the facet table associated with this type.
- *
- * @param ft A pointer to read-only facet table.
- */
- void
- _facet_table (const facet* ft)
- {
- facet_table_ = ft;
- }
-
- private:
- const facet* facet_table_;
- T x_;
- };
-
- // While thse operators are not normally necessary, they
- // help resolve ambiguities between implicit conversion and
- // construction.
- //
-
- /**
- * @brief %fundamental_base comparison operator.
- *
- * @return True if the underlying values are equal, false otherwise.
- */
- template <typename T, typename C, typename B, schema_type::value ST>
- inline bool
- operator== (const fundamental_base<T, C, B, ST>& x,
- const fundamental_base<T, C, B, ST>& y)
- {
- T x_ (x);
- T y_ (y);
- return x_ == y_;
- }
-
- /**
- * @brief %fundamental_base comparison operator.
- *
- * @return True if the underlying values are not equal, false otherwise.
- */
- template <typename T, typename C, typename B, schema_type::value ST>
- inline bool
- operator!= (const fundamental_base<T, C, B, ST>& x,
- const fundamental_base<T, C, B, ST>& y)
- {
- T x_ (x);
- T y_ (y);
- return x_ != y_;
- }
-
-
- //@cond
-
- // Comparator for enum tables.
- //
- template <typename C>
- struct enum_comparator
- {
- enum_comparator (const C* const* table)
- : table_ (table)
- {
- }
-
- bool
- operator() (std::size_t i, const std::basic_string<C>& s) const
- {
- return table_[i] < s;
- }
-
- bool
- operator() (const std::basic_string<C>& s, std::size_t i) const
- {
- return s < table_[i];
- }
-
- bool
- operator() (std::size_t i, std::size_t j) const
- {
- return std::basic_string<C> (table_[i]) < table_[j];
- }
-
- private:
- const C* const* table_;
- };
-
- //@endcond
- }
- }
-}
-
-#include <xsd/cxx/tree/elements.ixx>
-#include <xsd/cxx/tree/elements.txx>
-
-#endif // XSD_CXX_TREE_ELEMENTS_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/elements.ixx b/xsd/libxsd/xsd/cxx/tree/elements.ixx
deleted file mode 100644
index 844ccf7..0000000
--- a/xsd/libxsd/xsd/cxx/tree/elements.ixx
+++ /dev/null
@@ -1,266 +0,0 @@
-// file : xsd/cxx/tree/elements.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // content_order_type
- //
-
- inline bool
- operator== (const content_order& x, const content_order& y)
- {
- return x.id == y.id && x.index == y.index;
- }
-
- inline bool
- operator!= (const content_order& x, const content_order& y)
- {
- return !(x == y);
- }
-
- inline bool
- operator< (const content_order& x, const content_order& y)
- {
- return x.id < y.id || (x.id == y.id && x.index < y.index);
- }
-
- // type
- //
-
- inline _type::
- _type ()
- : container_ (0)
- {
- }
-
- template <typename C>
- inline _type::
- _type (const C*)
- : container_ (0)
- {
- }
-
- inline _type::
- _type (const type& x, flags f, container* c)
- : container_ (c)
- {
- if (x.content_.get () != 0)
- content_ = x.content_->clone ();
-
- if (x.dom_info_.get () != 0 && (f & flags::keep_dom))
- {
- dom_info_ = x.dom_info_->clone (*this, c);
- }
- }
-
- inline const _type::dom_content_optional& _type::
- dom_content () const
- {
- const content_type* c (content_.get ());
-
- if (c == 0)
- {
- content_.reset (new dom_content_type);
- c = content_.get ();
- }
-
- // Accessing non-DOM content via the DOM API.
- //
- assert (dynamic_cast<const dom_content_type*> (c) != 0);
-
- return static_cast<const dom_content_type*> (c)->dom;
- }
-
- inline _type::dom_content_optional& _type::
- dom_content ()
- {
- content_type* c (content_.get ());
-
- if (c == 0)
- {
- content_.reset (new dom_content_type);
- c = content_.get ();
- }
-
- // Accessing non-DOM content via the DOM API.
- //
- assert (dynamic_cast<dom_content_type*> (c) != 0);
-
- return static_cast<dom_content_type*> (c)->dom;
- }
-
- inline void _type::
- dom_content (const xercesc::DOMElement& e)
- {
- content_type* c (content_.get ());
-
- if (c == 0)
- content_.reset (new dom_content_type (e));
- else
- {
- // Accessing non-DOM content via the DOM API.
- //
- assert (dynamic_cast<dom_content_type*> (c) != 0);
- static_cast<dom_content_type*> (c)->dom.set (e);
- }
- }
-
- inline void _type::
- dom_content (xercesc::DOMElement* e)
- {
- content_type* c (content_.get ());
-
- if (c == 0)
- content_.reset (new dom_content_type (e));
- else
- {
- // Accessing non-DOM content via the DOM API.
- //
- assert (dynamic_cast<dom_content_type*> (c) != 0);
- static_cast<dom_content_type*> (c)->dom.set (e);
- }
- }
-
- inline void _type::
- dom_content (const dom_content_optional& d)
- {
- content_type* c (content_.get ());
-
- if (c == 0)
- content_.reset (new dom_content_type (d));
- else
- {
- // Accessing non-DOM content via the DOM API.
- //
- assert (dynamic_cast<dom_content_type*> (c) != 0);
- static_cast<dom_content_type*> (c)->dom = d;
- }
- }
-
- inline const xercesc::DOMDocument& _type::
- dom_content_document () const
- {
- const content_type* c (content_.get ());
-
- if (c == 0)
- {
- content_.reset (new dom_content_type);
- c = content_.get ();
- }
-
- // Accessing non-DOM content via the DOM API.
- //
- assert (dynamic_cast<const dom_content_type*> (c) != 0);
-
- return *static_cast<const dom_content_type*> (c)->doc;
- }
-
- inline xercesc::DOMDocument& _type::
- dom_content_document ()
- {
- content_type* c (content_.get ());
-
- if (c == 0)
- {
- content_.reset (new dom_content_type);
- c = content_.get ();
- }
-
- // Accessing non-DOM content via the DOM API.
- //
- assert (dynamic_cast<dom_content_type*> (c) != 0);
-
- return *static_cast<dom_content_type*> (c)->doc;
- }
-
- inline bool _type::
- null_content () const
- {
- return content_.get () == 0;
- }
-
- // simple_type
- //
-
- template <typename C, typename B>
- inline simple_type<C, B>::
- simple_type ()
- {
- }
-
- template <typename C, typename B>
- inline simple_type<C, B>::
- simple_type (const C* s)
- {
- this->content_.reset (new text_content_type (s));
- }
-
- template <typename C, typename B>
- inline simple_type<C, B>::
- simple_type (const std::basic_string<C>& s)
- {
- this->content_.reset (new text_content_type (s));
- }
-
- template <typename C, typename B>
- inline const std::basic_string<C>& simple_type<C, B>::
- text_content () const
- {
- const content_type* c (this->content_.get ());
-
- if (c == 0)
- {
- this->content_.reset (new text_content_type);
- c = this->content_.get ();
- }
-
- // Accessing non-text content via the text API.
- //
- assert (dynamic_cast<const text_content_type*> (c) != 0);
-
- return static_cast<const text_content_type*> (c)->text;
- }
-
- template <typename C, typename B>
- inline std::basic_string<C>& simple_type<C, B>::
- text_content ()
- {
- content_type* c (this->content_.get ());
-
- if (c == 0)
- {
- this->content_.reset (new text_content_type);
- c = this->content_.get ();
- }
-
- // Accessing non-text content via the text API.
- //
- assert (dynamic_cast<text_content_type*> (c) != 0);
-
- return static_cast<text_content_type*> (c)->text;
- }
-
- template <typename C, typename B>
- inline void simple_type<C, B>::
- text_content (const std::basic_string<C>& t)
- {
- content_type* c (this->content_.get ());
-
- if (c == 0)
- this->content_.reset (new text_content_type (t));
- else
- {
- // Accessing non-text content via the text API.
- //
- assert (dynamic_cast<text_content_type*> (c) != 0);
- static_cast<text_content_type*> (c)->text = t;
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/elements.txx b/xsd/libxsd/xsd/cxx/tree/elements.txx
deleted file mode 100644
index 4a8ca6e..0000000
--- a/xsd/libxsd/xsd/cxx/tree/elements.txx
+++ /dev/null
@@ -1,56 +0,0 @@
-// file : xsd/cxx/tree/elements.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xercesc/util/XMLUniDefs.hpp>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // user_data_keys_template
- //
- template <int dummy>
- const XMLCh user_data_keys_template<dummy>::node[21] =
- {xercesc::chLatin_x, xercesc::chLatin_s, xercesc::chLatin_d, // xsd
- xercesc::chColon, xercesc::chColon, // ::
- xercesc::chLatin_c, xercesc::chLatin_x, xercesc::chLatin_x, // cxx
- xercesc::chColon, xercesc::chColon, // ::
- xercesc::chLatin_t, xercesc::chLatin_r, xercesc::chLatin_e, // tre
- xercesc::chLatin_e, xercesc::chColon, xercesc::chColon, // e::
- xercesc::chLatin_n, xercesc::chLatin_o, xercesc::chLatin_d, // nod
- xercesc::chLatin_e, xercesc::chNull // e\0
- };
-
-
- // simple_type
- //
- template <typename C, typename B>
- simple_type<C, B>::
- simple_type (const simple_type& other,
- flags f,
- container* c)
- : B (other, f, c)
- {
- }
-
- template <typename C, typename B>
- simple_type<C, B>* simple_type<C, B>::
- _clone (flags f, container* c) const
- {
- return new simple_type (*this, f, c);
- }
-
- // fundamental_base
- //
- template <typename T, typename C, typename B, schema_type::value ST>
- fundamental_base<T, C, B, ST>* fundamental_base<T, C, B, ST>::
- _clone (flags f, container* c) const
- {
- return new fundamental_base (*this, f, c);
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/error-handler.hxx b/xsd/libxsd/xsd/cxx/tree/error-handler.hxx
deleted file mode 100644
index e520cce..0000000
--- a/xsd/libxsd/xsd/cxx/tree/error-handler.hxx
+++ /dev/null
@@ -1,61 +0,0 @@
-// file : xsd/cxx/tree/error-handler.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_ERROR_HANDLER_HXX
-#define XSD_CXX_TREE_ERROR_HANDLER_HXX
-
-#include <xsd/cxx/xml/error-handler.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- class error_handler: public xml::error_handler<C>
- {
- public:
- typedef typename xml::error_handler<C>::severity severity;
-
- error_handler ()
- : failed_ (false)
- {
- }
-
- virtual bool
- handle (const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- severity,
- const std::basic_string<C>& message);
-
- template <typename E>
- void
- throw_if_failed () const
- {
- if (failed_)
- throw E (diagnostics_);
- }
-
- void
- reset ()
- {
- failed_ = false;
- diagnostics_.clear ();
- }
-
- private:
- bool failed_;
- diagnostics<C> diagnostics_;
- };
- }
- }
-}
-
-#include <xsd/cxx/tree/error-handler.txx>
-
-#endif // XSD_CXX_TREE_ERROR_HANDLER_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/error-handler.txx b/xsd/libxsd/xsd/cxx/tree/error-handler.txx
deleted file mode 100644
index 8520856..0000000
--- a/xsd/libxsd/xsd/cxx/tree/error-handler.txx
+++ /dev/null
@@ -1,31 +0,0 @@
-// file : xsd/cxx/tree/error-handler.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- bool error_handler<C>::
- handle (const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- severity s,
- const std::basic_string<C>& message)
- {
- diagnostics_.push_back (
- error<C> (s == severity::warning
- ? tree::severity::warning
- : tree::severity::error, id, line, column, message));
-
- if (!failed_ && s != severity::warning)
- failed_ = true;
-
- return true;
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/exceptions.hxx b/xsd/libxsd/xsd/cxx/tree/exceptions.hxx
deleted file mode 100644
index d871416..0000000
--- a/xsd/libxsd/xsd/cxx/tree/exceptions.hxx
+++ /dev/null
@@ -1,1033 +0,0 @@
-// file : xsd/cxx/tree/exceptions.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-/**
- * @file
- *
- * @brief Contains exception definitions for the C++/Tree mapping.
- *
- * This is an internal header and is included by the generated code.
- * You normally should not include it directly.
- *
- */
-
-#ifndef XSD_CXX_TREE_EXCEPTIONS_HXX
-#define XSD_CXX_TREE_EXCEPTIONS_HXX
-
-#include <string>
-#include <vector>
-#include <ostream>
-
-#include <xsd/cxx/exceptions.hxx> // xsd::cxx::exception
-
-namespace xsd
-{
- namespace cxx
- {
- /**
- * @brief C++/Tree mapping runtime namespace.
- *
- * This is an internal namespace and normally should not be referenced
- * directly. Instead you should use the aliases for types in this
- * namespaces that are created in the generated code.
- *
- */
- namespace tree
- {
- /**
- * @brief Root of the C++/Tree %exception hierarchy.
- *
- * You can catch this %exception in order to handle all C++/Tree
- * errors.
- *
- * @nosubgrouping
- */
- template <typename C>
- class exception: public xsd::cxx::exception
- {
- public:
- /**
- * @brief Stream insertion operator for %exception.
- */
- friend
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const exception& e)
- {
- e.print (os);
- return os;
- }
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const = 0;
-
- //@endcond
- };
-
-
- /**
- * @brief Error %severity.
- *
- * @nosubgrouping
- */
- class severity
- {
- public:
- /**
- * @brief Underlying enum type.
- */
- enum value
- {
- /**
- * @brief Indicates the warning condition.
- */
- warning,
-
- /**
- * @brief Indicates the %error condition.
- */
- error
- };
-
- /**
- * @brief Initialize an instance with the underlying enum value.
- *
- * @param v An underlying enum value.
- */
- severity (value v) : v_ (v) {}
-
- /**
- * @brief Implicitly convert the instance to the underlying enum
- * value.
- *
- * @return The underlying enum value.
- */
- operator value () const { return v_; }
-
- private:
- value v_;
- };
-
- /**
- * @brief Error condition.
- *
- * @nosubgrouping
- */
- template <typename C>
- class error
- {
- public:
- /**
- * @brief Initialize an instance with %error description.
- *
- * @param s An %error %severity.
- * @param res_id A resource %id where the %error occurred.
- * @param line A line number where the %error occurred.
- * @param column A column number where the %error occurred.
- * @param message A message describing the %error.
- */
- error (tree::severity s,
- const std::basic_string<C>& res_id,
- unsigned long line,
- unsigned long column,
- const std::basic_string<C>& message);
-
- /**
- * @brief Get %error %severity.
- *
- * @return The %severity of this %error.
- */
- tree::severity
- severity () const
- {
- return severity_;
- }
-
- /**
- * @brief Get resource %id.
- *
- * @return The %id of the resource where this %error occurred.
- */
- const std::basic_string<C>&
- id () const
- {
- return id_;
- }
-
- /**
- * @brief Get %error line.
- *
- * @return The line number where this %error occurred.
- */
- unsigned long
- line () const
- {
- return line_;
- }
-
- /**
- * @brief Get %error column.
- *
- * @return The column number where this %error occurred.
- */
- unsigned long
- column () const
- {
- return column_;
- }
-
- /**
- * @brief Get %error message.
- *
- * @return The message for this %error.
- */
- const std::basic_string<C>&
- message () const
- {
- return message_;
- }
-
- //@cond
-
- // Default c-tor that shouldn't be. Needed when we completely
- // instantiate std::vector in diagnostics below.
- //
- error ();
-
- //@endcond
-
-
- private:
- tree::severity severity_;
- std::basic_string<C> id_;
- unsigned long line_;
- unsigned long column_;
- std::basic_string<C> message_;
- };
-
- // See exceptions.ixx for operator<< (error).
-
-
- /**
- * @brief List of %error conditions.
- *
- * @nosubgrouping
- */
- template <typename C>
- class diagnostics: public std::vector<error<C> >
- {
- };
-
- // See exceptions.ixx for operator<< (diagnostics).
-
- /**
- * @brief Exception indicating a %parsing failure.
- *
- * @nosubgrouping
- */
- template <typename C>
- class parsing: public exception<C>
- {
- public:
- virtual
- ~parsing () throw ();
-
- /**
- * @brief Default constructor.
- */
- parsing ();
-
- /**
- * @brief Initialize an instance with a %list of %error conditions.
- *
- * @param d A %list of %error conditions.
- */
- parsing (const tree::diagnostics<C>& d);
-
- public:
- /**
- * @brief Get the %list of %error conditions.
- *
- * @return The %list of %error conditions.
- */
- const tree::diagnostics<C>&
- diagnostics () const
- {
- return diagnostics_;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- tree::diagnostics<C> diagnostics_;
- };
-
-
- /**
- * @brief Exception indicating that an expected element was not
- * encountered.
- *
- * @nosubgrouping
- */
- template <typename C>
- class expected_element: public exception<C>
- {
- public:
- virtual
- ~expected_element () throw ();
-
- /**
- * @brief Initialize an instance with the expected element
- * description.
- *
- * @param name A name of the expected element.
- * @param ns A namespace of the expected element.
- */
- expected_element (const std::basic_string<C>& name,
- const std::basic_string<C>& ns);
-
-
- public:
- /**
- * @brief Get the name of the expected element.
- *
- * @return The name of the expected element.
- */
- const std::basic_string<C>&
- name () const
- {
- return name_;
- }
-
- /**
- * @brief Get the namespace of the expected element.
- *
- * @return The namespace of the expected element.
- */
- const std::basic_string<C>&
- namespace_ () const
- {
- return namespace__;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- std::basic_string<C> name_;
- std::basic_string<C> namespace__;
- };
-
-
- /**
- * @brief Exception indicating that an unexpected element was
- * encountered.
- *
- * @nosubgrouping
- */
- template <typename C>
- class unexpected_element: public exception<C>
- {
- public:
- virtual
- ~unexpected_element () throw ();
-
- /**
- * @brief Initialize an instance with the encountered and expected
- * element descriptions.
- *
- * @param encountered_name A name of the encountered element.
- * @param encountered_ns A namespace of the encountered element.
- * @param expected_name A name of the expected element.
- * @param expected_ns A namespace of the expected element.
- */
- unexpected_element (const std::basic_string<C>& encountered_name,
- const std::basic_string<C>& encountered_ns,
- const std::basic_string<C>& expected_name,
- const std::basic_string<C>& expected_ns);
-
- public:
- /**
- * @brief Get the name of the encountered element.
- *
- * @return The name of the encountered element.
- */
- const std::basic_string<C>&
- encountered_name () const
- {
- return encountered_name_;
- }
-
- /**
- * @brief Get the namespace of the encountered element.
- *
- * @return The namespace of the encountered element.
- */
- const std::basic_string<C>&
- encountered_namespace () const
- {
- return encountered_namespace_;
- }
-
- /**
- * @brief Get the name of the expected element.
- *
- * @return The name of the expected element.
- */
- const std::basic_string<C>&
- expected_name () const
- {
- return expected_name_;
- }
-
- /**
- * @brief Get the namespace of the expected element.
- *
- * @return The namespace of the expected element.
- */
- const std::basic_string<C>&
- expected_namespace () const
- {
- return expected_namespace_;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- std::basic_string<C> encountered_name_;
- std::basic_string<C> encountered_namespace_;
- std::basic_string<C> expected_name_;
- std::basic_string<C> expected_namespace_;
- };
-
-
- /**
- * @brief Exception indicating that an expected attribute was not
- * encountered.
- *
- * @nosubgrouping
- */
- template <typename C>
- class expected_attribute: public exception<C>
- {
- public:
- virtual
- ~expected_attribute () throw ();
-
- /**
- * @brief Initialize an instance with the expected attribute
- * description.
- *
- * @param name A name of the expected attribute.
- * @param ns A namespace of the expected attribute.
- */
- expected_attribute (const std::basic_string<C>& name,
- const std::basic_string<C>& ns);
-
- public:
- /**
- * @brief Get the name of the expected attribute.
- *
- * @return The name of the expected attribute.
- */
- const std::basic_string<C>&
- name () const
- {
- return name_;
- }
-
- /**
- * @brief Get the namespace of the expected attribute.
- *
- * @return The namespace of the expected attribute.
- */
- const std::basic_string<C>&
- namespace_ () const
- {
- return namespace__;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- std::basic_string<C> name_;
- std::basic_string<C> namespace__;
- };
-
-
- /**
- * @brief Exception indicating that an unexpected enumerator was
- * encountered.
- *
- * @nosubgrouping
- */
- template <typename C>
- class unexpected_enumerator: public exception<C>
- {
- public:
- virtual
- ~unexpected_enumerator () throw ();
-
- /**
- * @brief Initialize an instance with the encountered enumerator.
- *
- * @param e A value of the encountered enumerator.
- */
- unexpected_enumerator (const std::basic_string<C>& e);
-
- public:
- /**
- * @brief Get the value of the encountered enumerator.
- *
- * @return The value of the encountered enumerator.
- */
- const std::basic_string<C>&
- enumerator () const
- {
- return enumerator_;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- std::basic_string<C> enumerator_;
- };
-
-
- /**
- * @brief Exception indicating that the text content was expected
- * for an element.
- *
- * @nosubgrouping
- */
- template <typename C>
- class expected_text_content: public exception<C>
- {
- public:
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
- };
-
-
- /**
- * @brief Exception indicating that the type information is not
- * available for a type.
- *
- * @nosubgrouping
- */
- template <typename C>
- class no_type_info: public exception<C>
- {
- public:
- virtual
- ~no_type_info () throw ();
-
- /**
- * @brief Initialize an instance with the type description.
- *
- * @param type_name A name of the type.
- * @param type_ns A namespace of the type.
- */
- no_type_info (const std::basic_string<C>& type_name,
- const std::basic_string<C>& type_ns);
-
- public:
- /**
- * @brief Get the type name.
- *
- * @return The type name.
- */
- const std::basic_string<C>&
- type_name () const
- {
- return type_name_;
- }
-
- /**
- * @brief Get the type namespace.
- *
- * @return The type namespace.
- */
- const std::basic_string<C>&
- type_namespace () const
- {
- return type_namespace_;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- std::basic_string<C> type_name_;
- std::basic_string<C> type_namespace_;
- };
-
- /**
- * @brief Exception indicating that %parsing or %serialization
- * information is not available for an element.
- *
- * @nosubgrouping
- */
- template <typename C>
- class no_element_info: public exception<C>
- {
- public:
- virtual
- ~no_element_info () throw ();
-
- /**
- * @brief Initialize an instance with the element description.
- *
- * @param element_name An element name.
- * @param element_ns An element namespace.
- */
- no_element_info (const std::basic_string<C>& element_name,
- const std::basic_string<C>& element_ns);
-
- public:
- /**
- * @brief Get the element name.
- *
- * @return The element name.
- */
- const std::basic_string<C>&
- element_name () const
- {
- return element_name_;
- }
-
- /**
- * @brief Get the element namespace.
- *
- * @return The element namespace.
- */
- const std::basic_string<C>&
- element_namespace () const
- {
- return element_namespace_;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- std::basic_string<C> element_name_;
- std::basic_string<C> element_namespace_;
- };
-
- /**
- * @brief Exception indicating that the types are not related by
- * inheritance.
- *
- * @nosubgrouping
- */
- template <typename C>
- class not_derived: public exception<C>
- {
- public:
- virtual
- ~not_derived () throw ();
-
- //@cond
-
- // @@ tmp
- //
- not_derived ()
- {
- }
-
- //@endcond
-
- /**
- * @brief Initialize an instance with the type descriptions.
- *
- * @param base_type_name A name of the base type.
- * @param base_type_ns A namespace of the base type.
- * @param derived_type_name A name of the derived type.
- * @param derived_type_ns A namespace of the derived type.
- */
- not_derived (const std::basic_string<C>& base_type_name,
- const std::basic_string<C>& base_type_ns,
- const std::basic_string<C>& derived_type_name,
- const std::basic_string<C>& derived_type_ns);
-
- public:
- /**
- * @brief Get the base type name.
- *
- * @return The base type name.
- */
- const std::basic_string<C>&
- base_type_name () const
- {
- return base_type_name_;
- }
-
- /**
- * @brief Get the base type namespace.
- *
- * @return The base type namespace.
- */
- const std::basic_string<C>&
- base_type_namespace () const
- {
- return base_type_namespace_;
- }
-
- /**
- * @brief Get the derived type name.
- *
- * @return The derived type name.
- */
- const std::basic_string<C>&
- derived_type_name () const
- {
- return derived_type_name_;
- }
-
- /**
- * @brief Get the derived type namespace.
- *
- * @return The derived type namespace.
- */
- const std::basic_string<C>&
- derived_type_namespace () const
- {
- return derived_type_namespace_;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- std::basic_string<C> base_type_name_;
- std::basic_string<C> base_type_namespace_;
- std::basic_string<C> derived_type_name_;
- std::basic_string<C> derived_type_namespace_;
- };
-
-
- /**
- * @brief Exception indicating that a duplicate ID value was
- * encountered in the object model.
- *
- * @nosubgrouping
- */
- template <typename C>
- class duplicate_id: public exception<C>
- {
- public:
- virtual
- ~duplicate_id () throw ();
-
- /**
- * @brief Initialize an instance with the offending ID value.
- *
- * @param id An offending ID value.
- */
- duplicate_id (const std::basic_string<C>& id);
-
- public:
- /**
- * @brief Get the offending ID value.
- *
- * @return The offending ID value.
- */
- const std::basic_string<C>&
- id () const
- {
- return id_;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- std::basic_string<C> id_;
- };
-
-
- /**
- * @brief Exception indicating a %serialization failure.
- *
- * @nosubgrouping
- */
- template <typename C>
- class serialization: public exception<C>
- {
- public:
- virtual
- ~serialization () throw ();
-
- /**
- * @brief Default constructor.
- */
- serialization ();
-
- /**
- * @brief Initialize an instance with a %list of %error conditions.
- *
- * @param d A %list of %error conditions.
- */
- serialization (const tree::diagnostics<C>& d);
-
- public:
- /**
- * @brief Get the %list of %error conditions.
- *
- * @return The %list of %error conditions.
- */
- const tree::diagnostics<C>&
- diagnostics () const
- {
- return diagnostics_;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- tree::diagnostics<C> diagnostics_;
- };
-
-
- /**
- * @brief Exception indicating that a prefix-namespace mapping was
- * not provided.
- *
- * @nosubgrouping
- */
- template <typename C>
- class no_prefix_mapping: public exception<C>
- {
- public:
- virtual
- ~no_prefix_mapping () throw ();
-
- /**
- * @brief Initialize an instance with the prefix for which the
- * prefix-namespace mapping was not provided.
- *
- * @param prefix A prefix.
- */
- no_prefix_mapping (const std::basic_string<C>& prefix);
-
- public:
- /**
- * @brief Get the prefix for which the prefix-namespace mapping was
- * not provided.
- *
- * @return The prefix.
- */
- const std::basic_string<C>&
- prefix () const
- {
- return prefix_;
- }
-
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
-
- private:
- std::basic_string<C> prefix_;
- };
-
-
- /**
- * @brief Exception indicating that the size argument exceeds
- * the capacity argument.
- *
- * See the buffer class for details.
- *
- * @nosubgrouping
- */
- template <typename C>
- class bounds: public exception<C>
- {
- public:
- /**
- * @brief Get %exception description.
- *
- * @return A C %string describing the %exception.
- */
- virtual const char*
- what () const throw ();
-
- protected:
- //@cond
-
- virtual void
- print (std::basic_ostream<C>&) const;
-
- //@endcond
- };
- }
- }
-}
-
-#include <xsd/cxx/tree/exceptions.txx>
-
-#endif // XSD_CXX_TREE_EXCEPTIONS_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/exceptions.txx b/xsd/libxsd/xsd/cxx/tree/exceptions.txx
deleted file mode 100644
index 2544f42..0000000
--- a/xsd/libxsd/xsd/cxx/tree/exceptions.txx
+++ /dev/null
@@ -1,509 +0,0 @@
-// file : xsd/cxx/tree/exceptions.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // error
- //
- template <typename C>
- error<C>::
- error (tree::severity s,
- const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- const std::basic_string<C>& message)
- : severity_ (s),
- id_ (id),
- line_ (line),
- column_ (column),
- message_ (message)
- {
- }
-
- template <typename C>
- error<C>::
- error ()
- : severity_ (tree::severity::error), line_ (0), column_ (0)
- {
- }
-
- template <typename C>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const error<C>& e)
- {
- return os << e.id () << C (':') << e.line () << C (':') << e.column ()
- << (e.severity () == severity::error
- ? bits::ex_error_error<C> ()
- : bits::ex_error_warning<C> ()) << e.message ();
- }
-
- // diagnostics
- //
- template <typename C>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const diagnostics<C>& d)
- {
- for (typename diagnostics<C>::const_iterator b (d.begin ()), i (b);
- i != d.end ();
- ++i)
- {
- if (i != b)
- os << C ('\n');
-
- os << *i;
- }
-
- return os;
- }
-
- // parsing
- //
- template <typename C>
- parsing<C>::
- ~parsing () throw ()
- {
- }
-
- template <typename C>
- parsing<C>::
- parsing ()
- {
- }
-
- template <typename C>
- parsing<C>::
- parsing (const tree::diagnostics<C>& diagnostics)
- : diagnostics_ (diagnostics)
- {
- }
-
- template <typename C>
- const char* parsing<C>::
- what () const throw ()
- {
- return "instance document parsing failed";
- }
-
- template <typename C>
- void parsing<C>::
- print (std::basic_ostream<C>& os) const
- {
- if (diagnostics_.empty ())
- os << bits::ex_parsing_msg<C> ();
- else
- os << diagnostics_;
- }
-
- // expected_element
- //
- template <typename C>
- expected_element<C>::
- ~expected_element () throw ()
- {
- }
-
- template <typename C>
- expected_element<C>::
- expected_element (const std::basic_string<C>& name,
- const std::basic_string<C>& namespace_)
- : name_ (name), namespace__ (namespace_)
- {
- }
-
- template <typename C>
- const char* expected_element<C>::
- what () const throw ()
- {
- return "expected element not encountered";
- }
-
- template <typename C>
- void expected_element<C>::
- print (std::basic_ostream<C>& os) const
- {
- os << bits::ex_eel_expected<C> ();
-
- if (!namespace_ ().empty ())
- os << namespace_ () << C ('#');
-
- os << name () << C ('\'');
- }
-
- // unexpected_element
- //
- template <typename C>
- unexpected_element<C>::
- ~unexpected_element () throw ()
- {
- }
-
- template <typename C>
- unexpected_element<C>::
- unexpected_element (const std::basic_string<C>& encountered_name,
- const std::basic_string<C>& encountered_namespace,
- const std::basic_string<C>& expected_name,
- const std::basic_string<C>& expected_namespace)
- : encountered_name_ (encountered_name),
- encountered_namespace_ (encountered_namespace),
- expected_name_ (expected_name),
- expected_namespace_ (expected_namespace)
- {
- }
-
- template <typename C>
- const char* unexpected_element<C>::
- what () const throw ()
- {
- return "unexpected element encountered";
- }
-
- template <typename C>
- void unexpected_element<C>::
- print (std::basic_ostream<C>& os) const
- {
- if (!expected_name ().empty ())
- {
- os << bits::ex_uel_expected<C> ();
-
- if (!expected_namespace ().empty ())
- os << expected_namespace () << C ('#');
-
- os << expected_name () << bits::ex_uel_instead<C> ();
-
- if (!encountered_namespace ().empty ())
- os << encountered_namespace () << C ('#');
-
- os << encountered_name () << C ('\'');
- }
- else
- {
- os << bits::ex_uel_unexpected<C> ();
-
- if (!encountered_namespace ().empty ())
- os << encountered_namespace () << C ('#');
-
- os << encountered_name () << C ('\'');
- }
- }
-
- // expected_attribute
- //
- template <typename C>
- expected_attribute<C>::
- ~expected_attribute () throw ()
- {
- }
-
- template <typename C>
- expected_attribute<C>::
- expected_attribute (const std::basic_string<C>& name,
- const std::basic_string<C>& namespace_)
- : name_ (name), namespace__ (namespace_)
- {
- }
-
- template <typename C>
- const char* expected_attribute<C>::
- what () const throw ()
- {
- return "expected attribute not encountered";
- }
-
- template <typename C>
- void expected_attribute<C>::
- print (std::basic_ostream<C>& os) const
- {
- os << bits::ex_eat_expected<C> ();
-
- if (!namespace_ ().empty ())
- os << namespace_ () << C ('#');
-
- os << name () << C ('\'');
- }
-
- // unexpected_enumerator
- //
- template <typename C>
- unexpected_enumerator<C>::
- ~unexpected_enumerator () throw ()
- {
- }
-
- template <typename C>
- unexpected_enumerator<C>::
- unexpected_enumerator (const std::basic_string<C>& enumerator)
- : enumerator_ (enumerator)
- {
- }
-
- template <typename C>
- const char* unexpected_enumerator<C>::
- what () const throw ()
- {
- return "unexpected enumerator encountered";
- }
-
- template <typename C>
- void unexpected_enumerator<C>::
- print (std::basic_ostream<C>& os) const
- {
- os << bits::ex_uen_unexpected<C> () << enumerator () << C ('\'');
- }
-
- // expected_text_content
- //
- template <typename C>
- const char* expected_text_content<C>::
- what () const throw ()
- {
- return "expected text content";
- }
-
- template <typename C>
- void expected_text_content<C>::
- print (std::basic_ostream<C>& os) const
- {
- os << bits::ex_etc_msg<C> ();
- }
-
- // no_type_info
- //
- template <typename C>
- no_type_info<C>::
- ~no_type_info () throw ()
- {
- }
-
- template <typename C>
- no_type_info<C>::
- no_type_info (const std::basic_string<C>& type_name,
- const std::basic_string<C>& type_namespace)
- : type_name_ (type_name),
- type_namespace_ (type_namespace)
- {
- }
-
- template <typename C>
- const char* no_type_info<C>::
- what () const throw ()
- {
- return "no type information available for a type";
- }
-
- template <typename C>
- void no_type_info<C>::
- print (std::basic_ostream<C>& os) const
- {
- os << bits::ex_nti_no_type_info<C> ();
-
- if (!type_namespace ().empty ())
- os << type_namespace () << C ('#');
-
- os << type_name () << C ('\'');
- }
-
- // no_element_info
- //
- template <typename C>
- no_element_info<C>::
- ~no_element_info () throw ()
- {
- }
-
- template <typename C>
- no_element_info<C>::
- no_element_info (const std::basic_string<C>& element_name,
- const std::basic_string<C>& element_namespace)
- : element_name_ (element_name),
- element_namespace_ (element_namespace)
- {
- }
-
- template <typename C>
- const char* no_element_info<C>::
- what () const throw ()
- {
- return "no parsing or serialization information available for "
- "an element";
- }
-
- template <typename C>
- void no_element_info<C>::
- print (std::basic_ostream<C>& os) const
- {
- os << bits::ex_nei_no_element_info<C> ();
-
- if (!element_namespace ().empty ())
- os << element_namespace () << C ('#');
-
- os << element_name () << C ('\'');
- }
-
- // not_derived
- //
- template <typename C>
- not_derived<C>::
- ~not_derived () throw ()
- {
- }
-
- template <typename C>
- not_derived<C>::
- not_derived (const std::basic_string<C>& base_type_name,
- const std::basic_string<C>& base_type_namespace,
- const std::basic_string<C>& derived_type_name,
- const std::basic_string<C>& derived_type_namespace)
- : base_type_name_ (base_type_name),
- base_type_namespace_ (base_type_namespace),
- derived_type_name_ (derived_type_name),
- derived_type_namespace_ (derived_type_namespace)
- {
- }
-
- template <typename C>
- const char* not_derived<C>::
- what () const throw ()
- {
- return "type is not derived";
- }
-
- template <typename C>
- void not_derived<C>::
- print (std::basic_ostream<C>& os) const
- {
- os << bits::ex_nd_type<C> ();
-
- if (!derived_type_namespace ().empty ())
- os << derived_type_namespace () << C ('#');
-
- os << derived_type_name () << bits::ex_nd_not_derived<C> ();
-
- if (!base_type_namespace ().empty ())
- os << base_type_namespace () << C ('#');
-
- os << base_type_name () << C ('\'');
- }
-
- // duplicate_id
- //
- template <typename C>
- duplicate_id<C>::
- ~duplicate_id () throw ()
- {
- }
-
- template <typename C>
- duplicate_id<C>::
- duplicate_id (const std::basic_string<C>& id)
- : id_ (id)
- {
- }
-
- template <typename C>
- const char* duplicate_id<C>::
- what () const throw ()
- {
- return "ID already exist";
- }
-
- template <typename C>
- void duplicate_id<C>::
- print (std::basic_ostream<C>& os) const
- {
- os << bits::ex_di_id<C> () << id () << bits::ex_di_already_exist<C> ();
- }
-
- // serialization
- //
- template <typename C>
- serialization<C>::
- ~serialization () throw ()
- {
- }
-
- template <typename C>
- serialization<C>::
- serialization ()
- {
- }
-
- template <typename C>
- serialization<C>::
- serialization (const tree::diagnostics<C>& diagnostics)
- : diagnostics_ (diagnostics)
- {
- }
-
- template <typename C>
- const char* serialization<C>::
- what () const throw ()
- {
- return "serialization failed";
- }
-
- template <typename C>
- void serialization<C>::
- print (std::basic_ostream<C>& os) const
- {
- if (diagnostics_.empty ())
- os << bits::ex_serialization_msg<C> ();
- else
- os << diagnostics_;
- }
-
-
- // no_prefix_mapping
- //
- template <typename C>
- no_prefix_mapping<C>::
- ~no_prefix_mapping () throw ()
- {
- }
-
- template <typename C>
- no_prefix_mapping<C>::
- no_prefix_mapping (const std::basic_string<C>& prefix)
- : prefix_ (prefix)
- {
- }
-
- template <typename C>
- const char* no_prefix_mapping<C>::
- what () const throw ()
- {
- return "no mapping provided for a namespace prefix";
- }
-
- template <typename C>
- void no_prefix_mapping<C>::
- print (std::basic_ostream<C>& os) const
- {
- os << bits::ex_npm_no_mapping<C> () << prefix () << C ('\'');
- }
-
-
- // bounds
- //
- template <typename C>
- const char* bounds<C>::
- what () const throw ()
- {
- return "buffer boundary rules have been violated";
- }
-
- template <typename C>
- void bounds<C>::
- print (std::basic_ostream<C>& os) const
- {
- os << bits::ex_bounds_msg<C> ();
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/facet.hxx b/xsd/libxsd/xsd/cxx/tree/facet.hxx
deleted file mode 100644
index e17ead1..0000000
--- a/xsd/libxsd/xsd/cxx/tree/facet.hxx
+++ /dev/null
@@ -1,42 +0,0 @@
-// file : xsd/cxx/tree/facet.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_FACET_HXX
-#define XSD_CXX_TREE_FACET_HXX
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // We need to keep this type POD in order to be able to create a
- // static array.
- //
- struct facet
- {
- enum id_type
- {
- none,
- total_digits,
- fraction_digits
- };
-
- id_type id;
- unsigned long value;
-
- static const facet*
- find (const facet* facets, facet::id_type id)
- {
- while (facets->id != id && facets->id != none)
- ++facets;
-
- return facets->id != none ? facets : 0;
- }
- };
- }
- }
-}
-
-#endif // XSD_CXX_TREE_FACET_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/istream-fwd.hxx b/xsd/libxsd/xsd/cxx/tree/istream-fwd.hxx
deleted file mode 100644
index bd20fff..0000000
--- a/xsd/libxsd/xsd/cxx/tree/istream-fwd.hxx
+++ /dev/null
@@ -1,20 +0,0 @@
-// file : xsd/cxx/tree/istream-fwd.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_ISTREAM_FWD_HXX
-#define XSD_CXX_TREE_ISTREAM_FWD_HXX
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template<typename S>
- class istream;
- }
- }
-}
-
-#endif // XSD_CXX_TREE_ISTREAM_FWD_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/istream.hxx b/xsd/libxsd/xsd/cxx/tree/istream.hxx
deleted file mode 100644
index 45e334b..0000000
--- a/xsd/libxsd/xsd/cxx/tree/istream.hxx
+++ /dev/null
@@ -1,454 +0,0 @@
-// file : xsd/cxx/tree/istream.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_ISTREAM_HXX
-#define XSD_CXX_TREE_ISTREAM_HXX
-
-#include <map>
-#include <string>
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cstddef> // std::size_t
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/tree/istream-fwd.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- class istream_common
- {
- public:
- template <typename T>
- struct as_size
- {
- explicit as_size (T& x) : x_ (x) {}
- T& x_;
- };
-
-
- // 8-bit
- //
- template <typename T>
- struct as_int8
- {
- explicit as_int8 (T& x) : x_ (x) {}
- T& x_;
- };
-
- template <typename T>
- struct as_uint8
- {
- explicit as_uint8 (T& x) : x_ (x) {}
- T& x_;
- };
-
-
- // 16-bit
- //
- template <typename T>
- struct as_int16
- {
- explicit as_int16 (T& x) : x_ (x) {}
- T& x_;
- };
-
- template <typename T>
- struct as_uint16
- {
- explicit as_uint16 (T& x) : x_ (x) {}
- T& x_;
- };
-
-
- // 32-bit
- //
- template <typename T>
- struct as_int32
- {
- explicit as_int32 (T& x) : x_ (x) {}
- T& x_;
- };
-
- template <typename T>
- struct as_uint32
- {
- explicit as_uint32 (T& x) : x_ (x) {}
- T& x_;
- };
-
-
- // 64-bit
- //
- template <typename T>
- struct as_int64
- {
- explicit as_int64 (T& x) : x_ (x) {}
- T& x_;
- };
-
- template <typename T>
- struct as_uint64
- {
- explicit as_uint64 (T& x) : x_ (x) {}
- T& x_;
- };
-
-
- // Boolean
- //
- template <typename T>
- struct as_bool
- {
- explicit as_bool (T& x) : x_ (x) {}
- T& x_;
- };
-
-
- // Floating-point
- //
- template <typename T>
- struct as_float32
- {
- explicit as_float32 (T& x) : x_ (x) {}
- T& x_;
- };
-
- template <typename T>
- struct as_float64
- {
- explicit as_float64 (T& x) : x_ (x) {}
- T& x_;
- };
- };
-
- template<typename S>
- class istream: public istream_common
- {
- public:
- explicit
- istream (S& s)
- : s_ (s)
- {
- }
-
- S&
- impl ()
- {
- return s_;
- }
-
- // Add string to the pool. The application should add every
- // potentially pooled string to correctly re-create the pool
- // constructed during insertion.
- //
- template <typename C>
- void
- pool_add (const std::basic_string<C>& s)
- {
- typedef pool_impl<C> pool_type;
-
- if (pool_.get () == 0)
- pool_.reset (new pool_type);
-
- pool_type& p (*static_cast<pool_type*> (pool_.get ()));
- p.push_back (s);
- }
-
- // Get string from pool id. We return the result via an argument
- // instead of as a return type to avoid difficulties some compilers
- // (e.g., GCC) experience with calls like istream<S>::pool_string<C>.
- //
- template <typename C>
- void
- pool_string (std::size_t id, std::basic_string<C>& out)
- {
- typedef pool_impl<C> pool_type;
- pool_type& p (*static_cast<pool_type*> (pool_.get ()));
- out = p[id - 1];
- }
-
- public:
- // 8-bit
- //
- signed char
- read_char ();
-
- unsigned char
- read_uchar ();
-
- // 16-bit
- //
- unsigned short
- read_short ();
-
- unsigned short
- read_ushort ();
-
- // 32-bit
- //
- unsigned int
- read_int ();
-
- unsigned int
- read_uint ();
-
- // 64-bit
- //
- unsigned long long
- read_ulonglong ();
-
- unsigned long long
- read_longlong ();
-
- // Boolean
- //
- bool
- read_bool ();
-
- // Floating-point
- //
- float
- read_float ();
-
- double
- read_double ();
-
- private:
- istream (const istream&);
- istream&
- operator= (const istream&);
-
- private:
- struct pool
- {
- virtual
- ~pool () {}
- };
-
- template <typename C>
- struct pool_impl: pool, std::vector<std::basic_string<C> >
- {
- };
-
- S& s_;
- std::size_t seq_;
- XSD_AUTO_PTR<pool> pool_;
- };
-
-
- // 8-bit
- //
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, signed char& x)
- {
- istream_common::as_int8<signed char> as_int8 (x);
- return s >> as_int8;
- }
-
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, unsigned char& x)
- {
- istream_common::as_uint8<unsigned char> as_uint8 (x);
- return s >> as_uint8;
- }
-
-
- // 16-bit
- //
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, short& x)
- {
- istream_common::as_int16<short> as_int16 (x);
- return s >> as_int16;
- }
-
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, unsigned short& x)
- {
- istream_common::as_uint16<unsigned short> as_uint16 (x);
- return s >> as_uint16;
- }
-
-
- // 32-bit
- //
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, int& x)
- {
- istream_common::as_int32<int> as_int32 (x);
- return s >> as_int32;
- }
-
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, unsigned int& x)
- {
- istream_common::as_uint32<unsigned int> as_uint32 (x);
- return s >> as_uint32;
- }
-
-
- // 64-bit
- //
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, long long& x)
- {
- istream_common::as_int64<long long> as_int64 (x);
- return s >> as_int64;
- }
-
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, unsigned long long& x)
- {
- istream_common::as_uint64<unsigned long long> as_uint64 (x);
- return s >> as_uint64;
- }
-
- // Boolean
- //
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, bool& x)
- {
- istream_common::as_bool<bool> as_bool (x);
- return s >> as_bool;
- }
-
-
- // Floating-point
- //
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, float& x)
- {
- istream_common::as_float32<float> as_float32 (x);
- return s >> as_float32;
- }
-
- template <typename S>
- inline istream<S>&
- operator>> (istream<S>& s, double& x)
- {
- istream_common::as_float64<double> as_float64 (x);
- return s >> as_float64;
- }
-
- //
- // read_* functions.
- //
-
- template <typename S>
- inline signed char istream<S>::
- read_char ()
- {
- signed char r;
- *this >> r;
- return r;
- }
-
- template <typename S>
- inline unsigned char istream<S>::
- read_uchar ()
- {
- unsigned char r;
- *this >> r;
- return r;
- }
-
- template <typename S>
- inline unsigned short istream<S>::
- read_short ()
- {
- short r;
- *this >> r;
- return r;
- }
-
- template <typename S>
- inline unsigned short istream<S>::
- read_ushort ()
- {
- unsigned short r;
- *this >> r;
- return r;
- }
-
- template <typename S>
- inline unsigned int istream<S>::
- read_int ()
- {
- int r;
- *this >> r;
- return r;
- }
-
- template <typename S>
- inline unsigned int istream<S>::
- read_uint ()
- {
- unsigned int r;
- *this >> r;
- return r;
- }
-
- template <typename S>
- inline unsigned long long istream<S>::
- read_ulonglong ()
- {
- long long r;
- *this >> r;
- return r;
- }
-
- template <typename S>
- inline unsigned long long istream<S>::
- read_longlong ()
- {
- unsigned long long r;
- *this >> r;
- return r;
- }
-
- template <typename S>
- inline bool istream<S>::
- read_bool ()
- {
- bool r;
- *this >> r;
- return r;
- }
-
- template <typename S>
- inline float istream<S>::
- read_float ()
- {
- float r;
- *this >> r;
- return r;
- }
-
- template <typename S>
- inline double istream<S>::
- read_double ()
- {
- double r;
- *this >> r;
- return r;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_ISTREAM_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/iterator-adapter.hxx b/xsd/libxsd/xsd/cxx/tree/iterator-adapter.hxx
deleted file mode 100644
index 0a54604..0000000
--- a/xsd/libxsd/xsd/cxx/tree/iterator-adapter.hxx
+++ /dev/null
@@ -1,270 +0,0 @@
-// file : xsd/cxx/tree/iterator-adapter.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_ITERATOR_ADAPTER_HXX
-#define XSD_CXX_TREE_ITERATOR_ADAPTER_HXX
-
-#include <cstddef> // std::ptrdiff_t
-#include <iterator> // std::iterator_traits
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // Sun CC's <iterator> does not have iterator_traits. To overcome
- // this, we will wrap std::iterator_traits into our own and also
- // specialize it for pointer types. Since Sun CC uses pointer
- // for vector::iterator, it will use the specialization and won't
- // notice the std::iterator_traits.
- //
-#ifndef _RWSTD_NO_CLASS_PARTIAL_SPEC
- template <typename I>
- struct iterator_traits
- {
- typedef
- typename std::iterator_traits<I>::iterator_category
- iterator_category;
-
- typedef
- typename std::iterator_traits<I>::value_type
- value_type;
-
- typedef
- typename std::iterator_traits<I>::difference_type
- difference_type;
- };
-#else
- // The Pointer specialization does not work for reverse and
- // set iterators. But these iterators are user-dfined types
- // and have suitable typedefs that we can use.
- //
- template <typename I>
- struct iterator_traits
- {
- typedef typename I::iterator_category iterator_category;
- typedef typename I::value_type value_type;
- typedef typename I::difference_type difference_type;
- };
-
- template <typename T>
- struct iterator_traits<T*>
- {
- typedef std::random_access_iterator_tag iterator_category;
- typedef T value_type;
- typedef std::ptrdiff_t difference_type;
- };
-#endif
-
- // Iterator adapter for complex types. It expects I to point to
- // a smart pointer-like object that has operator*() that returns
- // a refernce to a type static_cast'able to T and get() that
- // returns a pointer to a type static_cast'able to T.
- //
-
- template <typename I, typename T>
- struct iterator_adapter
- {
- typedef T value_type;
- typedef value_type& reference;
- typedef value_type* pointer;
-
- typedef
- typename iterator_traits<I>::iterator_category
- iterator_category;
-
- typedef
- typename iterator_traits<I>::difference_type
- difference_type;
-
-
- public:
- iterator_adapter ()
- : i_ () // i_ can be of a pointer type.
- {
- }
-
- // Allow iterator to const_iterator conversion.
- //
- template <typename J, typename T2>
- iterator_adapter (const iterator_adapter<J, T2>& j)
- : i_ (j.base ())
- {
- }
-
- explicit
- iterator_adapter (const I& i)
- : i_ (i)
- {
- }
-
- public:
- // Forward iterator requirements.
- //
- reference
- operator* () const
- {
- return static_cast<reference> (**i_);
- }
-
- pointer
- operator-> () const
- {
- return static_cast<pointer> (i_->get ());
- }
-
- iterator_adapter&
- operator++ ()
- {
- ++i_;
- return *this;
- }
-
- iterator_adapter
- operator++ (int)
- {
- iterator_adapter r (*this);
- ++i_;
- return r;
- }
-
- // Bidirectional iterator requirements.
- //
- iterator_adapter&
- operator-- ()
- {
- --i_;
- return *this;
- }
-
- iterator_adapter
- operator-- (int)
- {
- iterator_adapter r (*this);
- --i_;
- return r;
- }
-
- // Random access iterator requirements.
- //
- reference
- operator[] (difference_type n) const
- {
- return static_cast<reference> (*(i_[n]));
- }
-
- iterator_adapter&
- operator+= (difference_type n)
- {
- i_ += n;
- return *this;
- }
-
- iterator_adapter
- operator+ (difference_type n) const
- {
- return iterator_adapter (i_ + n);
- }
-
- iterator_adapter&
- operator-= (difference_type n)
- {
- i_ -= n;
- return *this;
- }
-
- iterator_adapter
- operator- (difference_type n) const
- {
- return iterator_adapter (i_ - n);
- }
-
- public:
- const I&
- base () const
- {
- return i_;
- }
-
- private:
- I i_;
- };
-
- // Note: We use different types for left- and right-hand-side
- // arguments to allow comparison between iterator and const_iterator.
- //
-
- // Forward iterator requirements.
- //
- template <typename I, typename J, typename T1, typename T2>
- inline bool
- operator== (const iterator_adapter<I, T1>& i,
- const iterator_adapter<J, T2>& j)
- {
- return i.base () == j.base ();
- }
-
- template <typename I, typename J, typename T1, typename T2>
- inline bool
- operator!= (const iterator_adapter<I, T1>& i,
- const iterator_adapter<J, T2>& j)
- {
- return i.base () != j.base ();
- }
-
- // Random access iterator requirements
- //
- template <typename I, typename J, typename T1, typename T2>
- inline bool
- operator< (const iterator_adapter<I, T1>& i,
- const iterator_adapter<J, T2>& j)
- {
- return i.base () < j.base ();
- }
-
- template <typename I, typename J, typename T1, typename T2>
- inline bool
- operator> (const iterator_adapter<I, T1>& i,
- const iterator_adapter<J, T2>& j)
- {
- return i.base () > j.base ();
- }
-
- template <typename I, typename J, typename T1, typename T2>
- inline bool
- operator<= (const iterator_adapter<I, T1>& i,
- const iterator_adapter<J, T2>& j)
- {
- return i.base () <= j.base ();
- }
-
- template <typename I, typename J, typename T1, typename T2>
- inline bool
- operator>= (const iterator_adapter<I, T1>& i,
- const iterator_adapter<J, T2>& j)
- {
- return i.base () >= j.base ();
- }
-
- template <typename I, typename J, typename T1, typename T2>
- inline typename iterator_adapter<I, T1>::difference_type
- operator- (const iterator_adapter<I, T1>& i,
- const iterator_adapter<J, T2>& j)
- {
- return i.base () - j.base ();
- }
-
- template <typename I, typename T>
- inline iterator_adapter<I, T>
- operator+ (typename iterator_adapter<I, T>::difference_type n,
- const iterator_adapter<I, T>& i)
- {
- return iterator_adapter<I, T> (i.base () + n);
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_ITERATOR_ADAPTER_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/list.hxx b/xsd/libxsd/xsd/cxx/tree/list.hxx
deleted file mode 100644
index d1fe907..0000000
--- a/xsd/libxsd/xsd/cxx/tree/list.hxx
+++ /dev/null
@@ -1,134 +0,0 @@
-// file : xsd/cxx/tree/list.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_LIST_HXX
-#define XSD_CXX_TREE_LIST_HXX
-
-#include <string>
-
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/istream-fwd.hxx> // tree::istream
-#include <xsd/cxx/tree/containers.hxx> // fundamental_p, sequence
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // Class template for xsd:list mapping. Based on the sequence
- // template.
- //
- template <typename T,
- typename C,
- schema_type::value ST = schema_type::other,
- bool fund = fundamental_p<T>::r>
- class list;
-
-
- //
- //
- template <typename T, typename C, schema_type::value ST>
- class list<T, C, ST, false>: public sequence<T>
- {
- public:
- explicit
- list (container* c = 0)
- : sequence<T> (c)
- {
- }
-
- list (typename sequence<T>::size_type n,
- const T& x,
- container* c = 0)
- : sequence<T> (n, x, c)
- {
- }
-
- template<typename I>
- list (const I& b, const I& e, container* c = 0)
- : sequence<T> (b, e, c)
- {
- }
-
- template <typename S>
- list (istream<S>&, flags = 0, container* c = 0);
-
- list (const list<T, C, ST, false>& l, flags f = 0, container* c = 0)
- : sequence<T> (l, f, c)
- {
- }
-
- public:
- list (const xercesc::DOMElement&, flags = 0, container* c = 0);
-
- list (const xercesc::DOMAttr&, flags = 0, container* c = 0);
-
- list (const std::basic_string<C>&,
- const xercesc::DOMElement*,
- flags = 0,
- container* c = 0);
-
- private:
- void
- init (const std::basic_string<C>&,
- const xercesc::DOMElement*,
- flags);
- };
-
-
- //
- //
- template <typename T, typename C, schema_type::value ST>
- class list<T, C, ST, true>: public sequence<T>
- {
- public:
- explicit
- list (container* c = 0)
- : sequence<T> (c)
- {
- }
-
- explicit
- list (typename sequence<T>::size_type n, const T& x, container* c = 0)
- : sequence<T> (n, x, c)
- {
- }
-
- template<typename I>
- list (const I& b, const I& e, container* c = 0)
- : sequence<T> (b, e, c)
- {
- }
-
- template <typename S>
- list (istream<S>&, flags = 0, container* c = 0);
-
- list (const list<T, C, ST, true>& l, flags f = 0, container* c = 0)
- : sequence<T> (l, f, c)
- {
- }
-
- public:
- list (const xercesc::DOMElement&, flags = 0, container* c = 0);
-
- list (const xercesc::DOMAttr&, flags = 0, container* c = 0);
-
- list (const std::basic_string<C>&,
- const xercesc::DOMElement*,
- flags = 0,
- container* c = 0);
-
- private:
- void
- init (const std::basic_string<C>&, const xercesc::DOMElement*);
- };
- }
- }
-}
-
-#endif // XSD_CXX_TREE_LIST_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/ostream.hxx b/xsd/libxsd/xsd/cxx/tree/ostream.hxx
deleted file mode 100644
index ec15c51..0000000
--- a/xsd/libxsd/xsd/cxx/tree/ostream.hxx
+++ /dev/null
@@ -1,291 +0,0 @@
-// file : xsd/cxx/tree/ostream.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_OSTREAM_HXX
-#define XSD_CXX_TREE_OSTREAM_HXX
-
-#include <map>
-#include <string>
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cstddef> // std::size_t
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- class ostream_common
- {
- public:
- template <typename T>
- struct as_size
- {
- explicit as_size (T x) : x_ (x) {}
- T x_;
- };
-
-
- // 8-bit
- //
- template <typename T>
- struct as_int8
- {
- explicit as_int8 (T x) : x_ (x) {}
- T x_;
- };
-
- template <typename T>
- struct as_uint8
- {
- explicit as_uint8 (T x) : x_ (x) {}
- T x_;
- };
-
-
- // 16-bit
- //
- template <typename T>
- struct as_int16
- {
- explicit as_int16 (T x) : x_ (x) {}
- T x_;
- };
-
- template <typename T>
- struct as_uint16
- {
- explicit as_uint16 (T x) : x_ (x) {}
- T x_;
- };
-
-
- // 32-bit
- //
- template <typename T>
- struct as_int32
- {
- explicit as_int32 (T x) : x_ (x) {}
- T x_;
- };
-
- template <typename T>
- struct as_uint32
- {
- explicit as_uint32 (T x) : x_ (x) {}
- T x_;
- };
-
-
- // 64-bit
- //
- template <typename T>
- struct as_int64
- {
- explicit as_int64 (T x) : x_ (x) {}
- T x_;
- };
-
- template <typename T>
- struct as_uint64
- {
- explicit as_uint64 (T x) : x_ (x) {}
- T x_;
- };
-
-
- // Boolean
- //
- template <typename T>
- struct as_bool
- {
- explicit as_bool (T x) : x_ (x) {}
- T x_;
- };
-
-
- // Floating-point
- //
- template <typename T>
- struct as_float32
- {
- explicit as_float32 (T x) : x_ (x) {}
- T x_;
- };
-
- template <typename T>
- struct as_float64
- {
- explicit as_float64 (T x) : x_ (x) {}
- T x_;
- };
- };
-
- template<typename S>
- class ostream: public ostream_common
- {
- public:
- explicit
- ostream (S& s)
- : s_ (s), seq_ (1)
- {
- }
-
- S&
- impl ()
- {
- return s_;
- }
-
- // If the string is not in the pool, add it and return 0. Otherwise
- // return the string's pool id. In the former case the application
- // should serialize the original string.
- //
- // The returned ids are sequential and start with 1. 0 is reserved
- // as a special marker to be used by the application for the first
- // encounter of the string.
- //
- template <typename C>
- std::size_t
- pool_string (const std::basic_string<C>& s)
- {
- typedef pool_impl<C> pool_type;
-
- if (pool_.get () == 0)
- pool_.reset (new pool_type);
-
- pool_type& p (*static_cast<pool_type*> (pool_.get ()));
-
- std::pair<typename pool_type::iterator, bool> r (
- p.insert (std::pair<std::basic_string<C>, std::size_t> (s, seq_)));
-
- if (!r.second)
- return r.first->second;
-
- seq_++;
- return 0;
- }
-
- private:
- ostream (const ostream&);
- ostream&
- operator= (const ostream&);
-
- private:
- struct pool
- {
- virtual
- ~pool () {}
- };
-
- template <typename C>
- struct pool_impl: pool, std::map<std::basic_string<C>, std::size_t>
- {
- };
-
- S& s_;
- std::size_t seq_;
- XSD_AUTO_PTR<pool> pool_;
- };
-
-
- // 8-bit
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, signed char x)
- {
- return s << ostream_common::as_int8<signed char> (x);
- }
-
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, unsigned char x)
- {
- return s << ostream_common::as_uint8<unsigned char> (x);
- }
-
-
- // 16-bit
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, short x)
- {
- return s << ostream_common::as_int16<short> (x);
- }
-
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, unsigned short x)
- {
- return s << ostream_common::as_uint16<unsigned short> (x);
- }
-
-
- // 32-bit
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, int x)
- {
- return s << ostream_common::as_int32<int> (x);
- }
-
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, unsigned int x)
- {
- return s << ostream_common::as_uint32<unsigned int> (x);
- }
-
-
- // 64-bit
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, long long x)
- {
- return s << ostream_common::as_int64<long long> (x);
- }
-
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, unsigned long long x)
- {
- return s << ostream_common::as_uint64<unsigned long long> (x);
- }
-
- // Boolean
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, bool x)
- {
- return s << ostream_common::as_bool<bool> (x);
- }
-
-
- // Floating-point
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, float x)
- {
- return s << ostream_common::as_float32<float> (x);
- }
-
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, double x)
- {
- return s << ostream_common::as_float64<double> (x);
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_OSTREAM_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing.hxx b/xsd/libxsd/xsd/cxx/tree/parsing.hxx
deleted file mode 100644
index f811788..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing.hxx
+++ /dev/null
@@ -1,11 +0,0 @@
-// file : xsd/cxx/tree/parsing.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_HXX
-#define XSD_CXX_TREE_PARSING_HXX
-
-#include <xsd/cxx/tree/parsing.txx>
-#include <xsd/cxx/tree/parsing/date-time.txx>
-
-#endif // XSD_CXX_TREE_PARSING_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing.txx b/xsd/libxsd/xsd/cxx/tree/parsing.txx
deleted file mode 100644
index 73e06f4..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing.txx
+++ /dev/null
@@ -1,919 +0,0 @@
-// file : xsd/cxx/tree/parsing.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <string>
-
-#include <xsd/cxx/ro-string.hxx> // trim
-
-#include <xsd/cxx/xml/string.hxx> // xml::{string, transcode}
-#include <xsd/cxx/xml/elements.hxx> // xml::{prefix, uq_name}
-#include <xsd/cxx/xml/bits/literals.hxx> // xml::bits::{xml_prefix,
- // xml_namespace}
-
-#include <xsd/cxx/tree/exceptions.hxx> // no_prefix_mapping
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/list.hxx>
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // Note that most of the types implemented here (except string,
- // (normalizedString, and base64Binary) cannot have whitespaces
- // in the value. As result we don't need to waste time collapsing
- // whitespaces. All we need to do is trim the string representation
- // which can be done without copying.
- //
-
- // type
- //
- inline _type::
- _type (const xercesc::DOMElement& e, flags f, container* c)
- : container_ (c)
- {
- if (f & flags::extract_content)
- content_.reset (new dom_content_type (e));
-
- if (f & flags::keep_dom)
- dom_info_ = dom_info_factory::create (e, *this, c == 0);
- }
-
- inline _type::
- _type (const xercesc::DOMAttr& a, flags f, container* c)
- : container_ (c)
- {
- // anyType cannot be an attribute type so no content extraction.
-
- if (f & flags::keep_dom)
- dom_info_ = dom_info_factory::create (a, *this);
- }
-
- template <typename C>
- inline _type::
- _type (const std::basic_string<C>&,
- const xercesc::DOMElement*,
- flags,
- container* c)
- : container_ (c) // List elements don't have associated DOM nodes.
- {
- // anyType cannot be a list element type so no content extraction.
- }
-
- // simple_type
- //
- template <typename C, typename B>
- inline simple_type<C, B>::
- simple_type (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, (f & ~flags::extract_content), c)
- {
- if (f & flags::extract_content)
- this->content_.reset (
- new text_content_type (tree::text_content<C> (e)));
- }
-
- template <typename C, typename B>
- inline simple_type<C, B>::
- simple_type (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, (f & ~flags::extract_content), c)
- {
- if (f & flags::extract_content)
- this->content_.reset (new text_content_type (
- xml::transcode<C> (a.getValue ())));
- }
-
- template <typename C, typename B>
- inline simple_type<C, B>::
- simple_type (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, (f & ~flags::extract_content), c)
- {
- if (f & flags::extract_content)
- this->content_.reset (new text_content_type (s));
- }
-
- // fundamental_base
- //
- template <typename T, typename C, typename B, schema_type::value ST>
- fundamental_base<T, C, B, ST>::
- fundamental_base (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c),
- facet_table_ (0),
- x_ (traits<T, C, ST>::create (e, f, c))
- {
- }
-
- template <typename T, typename C, typename B, schema_type::value ST>
- fundamental_base<T, C, B, ST>::
- fundamental_base (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c),
- facet_table_ (0),
- x_ (traits<T, C, ST>::create (a, f, c))
- {
- }
-
- template <typename T, typename C, typename B, schema_type::value ST>
- fundamental_base<T, C, B, ST>::
- fundamental_base (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c),
- facet_table_ (0),
- x_ (traits<T, C, ST>::create (s, e, f, c))
- {
- }
-
-
- // Parsing c-tors for list.
- //
-
- namespace bits
- {
- // Find first non-space character.
- //
- template <typename C>
- typename std::basic_string<C>::size_type
- find_ns (const C* s,
- typename std::basic_string<C>::size_type size,
- typename std::basic_string<C>::size_type pos)
- {
- while (pos < size &&
- (s[pos] == C (0x20) || // space
- s[pos] == C (0x0D) || // carriage return
- s[pos] == C (0x09) || // tab
- s[pos] == C (0x0A)))
- ++pos;
-
- return pos < size ? pos : std::basic_string<C>::npos;
- }
-
- // Find first space character.
- //
- template <typename C>
- typename std::basic_string<C>::size_type
- find_s (const C* s,
- typename std::basic_string<C>::size_type size,
- typename std::basic_string<C>::size_type pos)
- {
- while (pos < size &&
- s[pos] != C (0x20) && // space
- s[pos] != C (0x0D) && // carriage return
- s[pos] != C (0x09) && // tab
- s[pos] != C (0x0A))
- ++pos;
-
- return pos < size ? pos : std::basic_string<C>::npos;
- }
- }
-
- // Individual items of the list have no DOM association. Therefore
- // we clear keep_dom from flags.
- //
-
- template <typename T, typename C, schema_type::value ST>
- list<T, C, ST, false>::
- list (const xercesc::DOMElement& e, flags f, container* c)
- : sequence<T> (c)
- {
- init (tree::text_content<C> (e), &e, f & ~flags::keep_dom);
- }
-
- template <typename T, typename C, schema_type::value ST>
- list<T, C, ST, false>::
- list (const xercesc::DOMAttr& a, flags f, container* c)
- : sequence<T> (c)
- {
- init (xml::transcode<C> (a.getValue ()),
- a.getOwnerElement (),
- f & ~flags::keep_dom);
- }
-
- template <typename T, typename C, schema_type::value ST>
- list<T, C, ST, false>::
- list (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : sequence<T> (c)
- {
- init (s, e, f & ~flags::keep_dom);
- }
-
- template <typename T, typename C, schema_type::value ST>
- void list<T, C, ST, false>::
- init (const std::basic_string<C>& s,
- const xercesc::DOMElement* parent,
- flags f)
- {
- if (s.size () == 0)
- return;
-
- using std::basic_string;
- typedef typename basic_string<C>::size_type size_type;
-
- const C* data (s.c_str ());
- size_type size (s.size ());
-
- // Traverse the data while logically collapsing spaces.
- //
- for (size_type i (bits::find_ns<C> (data, size, 0));
- i != basic_string<C>::npos;)
- {
- size_type j (bits::find_s (data, size, i));
-
- if (j != basic_string<C>::npos)
- {
- this->push_back (
- traits<T, C, ST>::create (
- basic_string<C> (data + i, j - i),
- parent,
- f,
- this->container_));
-
- i = bits::find_ns (data, size, j);
- }
- else
- {
- // Last element.
- //
- this->push_back (
- traits<T, C, ST>::create (
- basic_string<C> (data + i, size - i),
- parent,
- f,
- this->container_));
-
- break;
- }
- }
- }
-
- template <typename T, typename C, schema_type::value ST>
- list<T, C, ST, true>::
- list (const xercesc::DOMElement& e, flags, container* c)
- : sequence<T> (c)
- {
- init (tree::text_content<C> (e), &e);
- }
-
- template <typename T, typename C, schema_type::value ST>
- inline list<T, C, ST, true>::
- list (const xercesc::DOMAttr& a, flags, container* c)
- : sequence<T> (c)
- {
- init (xml::transcode<C> (a.getValue ()), a.getOwnerElement ());
- }
-
- template <typename T, typename C, schema_type::value ST>
- inline list<T, C, ST, true>::
- list (const std::basic_string<C>& s,
- const xercesc::DOMElement* parent,
- flags,
- container* c)
- : sequence<T> (c)
- {
- init (s, parent);
- }
-
- template <typename T, typename C, schema_type::value ST>
- inline void list<T, C, ST, true>::
- init (const std::basic_string<C>& s, const xercesc::DOMElement* parent)
- {
- if (s.size () == 0)
- return;
-
- using std::basic_string;
- typedef typename basic_string<C>::size_type size_type;
-
- const C* data (s.c_str ());
- size_type size (s.size ());
-
- // Traverse the data while logically collapsing spaces.
- //
- for (size_type i (bits::find_ns<C> (data, size, 0));
- i != basic_string<C>::npos;)
- {
- size_type j (bits::find_s (data, size, i));
-
- if (j != basic_string<C>::npos)
- {
- this->push_back (
- traits<T, C, ST>::create (
- basic_string<C> (data + i, j - i), parent, 0, 0));
-
- i = bits::find_ns (data, size, j);
- }
- else
- {
- // Last element.
- //
- this->push_back (
- traits<T, C, ST>::create (
- basic_string<C> (data + i, size - i), parent, 0, 0));
-
- break;
- }
- }
- }
-
-
- // Parsing c-tors for built-in types.
- //
-
-
- // string
- //
- template <typename C, typename B>
- string<C, B>::
- string (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c),
- base_type (tree::text_content<C> (e))
- {
- }
-
- template <typename C, typename B>
- string<C, B>::
- string (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c),
- base_type (xml::transcode<C> (a.getValue ()))
- {
- }
-
- template <typename C, typename B>
- string<C, B>::
- string (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c), base_type (s)
- {
- }
-
-
- // normalized_string
- //
- template <typename C, typename B>
- normalized_string<C, B>::
- normalized_string (const xercesc::DOMElement& e, flags f, container* c)
- : base_type (e, f, c)
- {
- normalize ();
- }
-
- template <typename C, typename B>
- normalized_string<C, B>::
- normalized_string (const xercesc::DOMAttr& a, flags f, container* c)
- : base_type (a, f, c)
- {
- normalize ();
- }
-
- template <typename C, typename B>
- normalized_string<C, B>::
- normalized_string (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : base_type (s, e, f, c)
- {
- normalize ();
- }
-
- template <typename C, typename B>
- void normalized_string<C, B>::
- normalize ()
- {
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (this->size ());
-
- for (size_type i (0); i < size; ++i)
- {
- C& c ((*this)[i]);
-
- if (c == C (0x0D) || // carriage return
- c == C (0x09) || // tab
- c == C (0x0A))
- c = C (0x20);
- }
- }
-
-
- // token
- //
- template <typename C, typename B>
- token<C, B>::
- token (const xercesc::DOMElement& e, flags f, container* c)
- : base_type (e, f, c)
- {
- collapse ();
- }
-
- template <typename C, typename B>
- token<C, B>::
- token (const xercesc::DOMAttr& a, flags f, container* c)
- : base_type (a, f, c)
- {
- collapse ();
- }
-
- template <typename C, typename B>
- token<C, B>::
- token (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : base_type (s, e, f, c)
- {
- collapse ();
- }
-
- template <typename C, typename B>
- void token<C, B>::
- collapse ()
- {
- // We have all whitespace normilized by our base. We just
- // need to collapse them.
- //
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (this->size ()), j (0);
- bool subs (false), trim (true);
-
- for (size_type i (0); i < size; ++i)
- {
- C c ((*this)[i]);
-
- if (c == C (0x20))
- {
- subs = true;
- }
- else
- {
- if (subs)
- {
- subs = false;
-
- if (!trim)
- (*this)[j++] = C (0x20);
- }
-
- if (trim)
- trim = false;
-
- (*this)[j++] = c;
- }
- }
-
- this->resize (j);
- }
-
-
- // nmtoken
- //
- template <typename C, typename B>
- nmtoken<C, B>::
- nmtoken (const xercesc::DOMElement& e, flags f, container* c)
- : base_type (e, f, c)
- {
- }
-
- template <typename C, typename B>
- nmtoken<C, B>::
- nmtoken (const xercesc::DOMAttr& a, flags f, container* c)
- : base_type (a, f, c)
- {
- }
-
- template <typename C, typename B>
- nmtoken<C, B>::
- nmtoken (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : base_type (s, e, f, c)
- {
- }
-
-
- // nmtokens
- //
- template <typename C, typename B, typename nmtoken>
- nmtokens<C, B, nmtoken>::
- nmtokens (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c), base_type (e, f, this)
- {
- }
-
- template <typename C, typename B, typename nmtoken>
- nmtokens<C, B, nmtoken>::
- nmtokens (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c), base_type (a, f, this)
- {
- }
-
- template <typename C, typename B, typename nmtoken>
- nmtokens<C, B, nmtoken>::
- nmtokens (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c), base_type (s, e, f, this)
- {
- }
-
-
- // name
- //
- template <typename C, typename B>
- name<C, B>::
- name (const xercesc::DOMElement& e, flags f, container* c)
- : base_type (e, f, c)
- {
- }
-
- template <typename C, typename B>
- name<C, B>::
- name (const xercesc::DOMAttr& a, flags f, container* c)
- : base_type (a, f, c)
- {
- }
-
- template <typename C, typename B>
- name<C, B>::
- name (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : base_type (s, e, f, c)
- {
- }
-
-
- // ncname
- //
- template <typename C, typename B>
- ncname<C, B>::
- ncname (const xercesc::DOMElement& e, flags f, container* c)
- : base_type (e, f, c)
- {
- }
-
- template <typename C, typename B>
- ncname<C, B>::
- ncname (const xercesc::DOMAttr& a, flags f, container* c)
- : base_type (a, f, c)
- {
- }
-
- template <typename C, typename B>
- ncname<C, B>::
- ncname (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : base_type (s, e, f, c)
- {
- }
-
-
- // language
- //
- template <typename C, typename B>
- language<C, B>::
- language (const xercesc::DOMElement& e, flags f, container* c)
- : base_type (e, f, c)
- {
- }
-
- template <typename C, typename B>
- language<C, B>::
- language (const xercesc::DOMAttr& a, flags f, container* c)
- : base_type (a, f, c)
- {
- }
-
- template <typename C, typename B>
- language<C, B>::
- language (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : base_type (s, e, f, c)
- {
- }
-
-
- // id
- //
- template <typename C, typename B>
- id<C, B>::
- id (const xercesc::DOMElement& e, flags f, container* c)
- : base_type (e, f, c), identity_ (*this)
- {
- register_id ();
- }
-
- template <typename C, typename B>
- id<C, B>::
- id (const xercesc::DOMAttr& a, flags f, container* c)
- : base_type (a, f, c), identity_ (*this)
- {
- register_id ();
- }
-
- template <typename C, typename B>
- id<C, B>::
- id (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : base_type (s, e, f, c), identity_ (*this)
- {
- register_id ();
- }
-
-
- // idref
- //
- template <typename C, typename B, typename T>
- idref<C, B, T>::
- idref (const xercesc::DOMElement& e, flags f, container* c)
- : base_type (e, f, c), identity_ (*this)
- {
- }
-
- template <typename C, typename B, typename T>
- idref<C, B, T>::
- idref (const xercesc::DOMAttr& a, flags f, container* c)
- : base_type (a, f , c), identity_ (*this)
- {
- }
-
- template <typename C, typename B, typename T>
- idref<C, B, T>::
- idref (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : base_type (s, e, f, c), identity_ (*this)
- {
- }
-
-
- // idrefs
- //
- template <typename C, typename B, typename idref>
- idrefs<C, B, idref>::
- idrefs (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c), base_type (e, f, this)
- {
- }
-
- template <typename C, typename B, typename idref>
- idrefs<C, B, idref>::
- idrefs (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c), base_type (a, f, this)
- {
- }
-
- template <typename C, typename B, typename idref>
- idrefs<C, B, idref>::
- idrefs (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c), base_type (s, e, f, this)
- {
- }
-
-
- // uri
- //
- template <typename C, typename B>
- uri<C, B>::
- uri (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c),
- base_type (trim (tree::text_content<C> (e)))
- {
- }
-
- template <typename C, typename B>
- uri<C, B>::
- uri (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c),
- base_type (trim (xml::transcode<C> (a.getValue ())))
- {
- }
-
- template <typename C, typename B>
- uri<C, B>::
- uri (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c), base_type (trim (s))
- {
- }
-
-
- // qname
- //
- template <typename C, typename B, typename uri, typename ncname>
- qname<C, B, uri, ncname>::
- qname (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- std::basic_string<C> v (trim (tree::text_content<C> (e)));
- ns_ = resolve (v, &e);
- name_ = xml::uq_name (v);
- }
-
- template <typename C, typename B, typename uri, typename ncname>
- qname<C, B, uri, ncname>::
- qname (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- std::basic_string<C> v (trim (xml::transcode<C> (a.getValue ())));
- ns_ = resolve (v, a.getOwnerElement ());
- name_ = xml::uq_name (v);
- }
-
- template <typename C, typename B, typename uri, typename ncname>
- qname<C, B, uri, ncname>::
- qname (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- std::basic_string<C> v (trim (s));
- ns_ = resolve (v, e);
- name_ = xml::uq_name (v);
- }
-
- template <typename C, typename B, typename uri, typename ncname>
- uri qname<C, B, uri, ncname>::
- resolve (const std::basic_string<C>& s, const xercesc::DOMElement* e)
- {
- std::basic_string<C> p (xml::prefix (s));
-
- if (e)
- {
- // This code is copied verbatim from xml/dom/elements.hxx.
- //
-
- // 'xml' prefix requires special handling and Xerces folks refuse
- // to handle this in DOM so I have to do it myself.
- //
- if (p == xml::bits::xml_prefix<C> ())
- return xml::bits::xml_namespace<C> ();
-
- const XMLCh* xns (
- e->lookupNamespaceURI (
- p.empty () ? 0 : xml::string (p).c_str ()));
-
- if (xns != 0)
- return xml::transcode<C> (xns);
- else if (p.empty ())
- return std::basic_string<C> ();
- }
-
- throw no_prefix_mapping<C> (p);
- }
-
-
- // base64_binary
- //
- // We are not doing whitespace collapsing since the decode
- // functions can handle it like this.
- //
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- // This implementation is not optimal.
- //
- std::basic_string<C> str (trim (tree::text_content<C> (e)));
- decode (xml::string (str).c_str ());
- }
-
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- std::basic_string<C> str (trim (xml::transcode<C> (a.getValue ())));
- decode (xml::string (str).c_str ());
- }
-
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- std::basic_string<C> str (trim (s));
- decode (xml::string (str).c_str ());
- }
-
-
- // hex_binary
- //
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- // This implementation is not optimal.
- //
- std::basic_string<C> str (trim (tree::text_content<C> (e)));
- decode (xml::string (str).c_str ());
- }
-
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- std::basic_string<C> str (trim (xml::transcode<C> (a.getValue ())));
- decode (xml::string (str).c_str ());
- }
-
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- std::basic_string<C> str (trim (s));
- decode (xml::string (str).c_str ());
- }
-
- // entity
- //
- template <typename C, typename B>
- entity<C, B>::
- entity (const xercesc::DOMElement& e, flags f, container* c)
- : base_type (e, f, c)
- {
- }
-
- template <typename C, typename B>
- entity<C, B>::
- entity (const xercesc::DOMAttr& a, flags f, container* c)
- : base_type (a, f, c)
- {
- }
-
- template <typename C, typename B>
- entity<C, B>::
- entity (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : base_type (s, e, f, c)
- {
- }
-
-
- // entities
- //
- template <typename C, typename B, typename entity>
- entities<C, B, entity>::
- entities (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c), base_type (e, f, this)
- {
- }
-
- template <typename C, typename B, typename entity>
- entities<C, B, entity>::
- entities (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c), base_type (a, f, this)
- {
- }
-
- template <typename C, typename B, typename entity>
- entities<C, B, entity>::
- entities (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c), base_type (s, e, f, this)
- {
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/boolean.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/boolean.hxx
deleted file mode 100644
index 8bbd3a8..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/boolean.hxx
+++ /dev/null
@@ -1,75 +0,0 @@
-// file : xsd/cxx/tree/parsing/boolean.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_BOOLEAN_HXX
-#define XSD_CXX_TREE_PARSING_BOOLEAN_HXX
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<bool, C, schema_type::other>
- {
- typedef bool type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- bool traits<bool, C, schema_type::other>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- bool traits<bool, C, schema_type::other>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- bool traits<bool, C, schema_type::other>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- return tmp == bits::true_<C> () || tmp == bits::one<C> ();
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_BOOLEAN_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/byte.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/byte.hxx
deleted file mode 100644
index d6cf1d3..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/byte.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-// file : xsd/cxx/tree/parsing/byte.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_BYTE_HXX
-#define XSD_CXX_TREE_PARSING_BYTE_HXX
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<signed char, C, schema_type::other>
- {
- typedef signed char type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- signed char traits<signed char, C, schema_type::other>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- signed char traits<signed char, C, schema_type::other>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- signed char traits<signed char, C, schema_type::other>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- zc_istream<C> is (tmp);
-
- short t;
- is >> t;
-
- return static_cast<type> (t);
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_BYTE_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/date-time.txx b/xsd/libxsd/xsd/cxx/tree/parsing/date-time.txx
deleted file mode 100644
index 29b12b6..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/date-time.txx
+++ /dev/null
@@ -1,701 +0,0 @@
-// file : xsd/cxx/tree/parsing/date-time.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // time_zone
- //
- template <typename C>
- void time_zone::
- zone_parse (const C* s, std::size_t n)
- {
- // time_zone := Z|(+|-)HH:MM
- //
- if (n == 0)
- {
- return;
- }
- else if (s[0] == C ('Z'))
- {
- hours_ = 0;
- minutes_ = 0;
- present_ = true;
- }
- else if (n == 6)
- {
- // Parse hours.
- //
- hours_ = 10 * (s[1] - C ('0')) + (s[2] - C ('0'));
-
- // Parse minutes.
- //
- minutes_ = 10 * (s[4] - C ('0')) + (s[5] - C ('0'));
-
- if (s[0] == C ('-'))
- {
- hours_ = -hours_;
- minutes_ = -minutes_;
- }
- present_ = true;
- }
- }
-
- // gday
- //
- template <typename C, typename B>
- gday<C, B>::
- gday (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- parse (tree::text_content<C> (e));
- }
-
- template <typename C, typename B>
- gday<C, B>::
- gday (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- parse (xml::transcode<C> (a.getValue ()));
- }
-
- template <typename C, typename B>
- gday<C, B>::
- gday (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- parse (s);
- }
-
- template <typename C, typename B>
- void gday<C, B>::
- parse (const std::basic_string<C>& str)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str);
- size_type n (trim (tmp));
- const C* s (tmp.data ());
-
- // gday := ---DD[Z|(+|-)HH:MM]
- //
- if (n >= 5)
- {
- day_ = 10 * (s[3] - C ('0')) + (s[4] - C ('0'));
-
- if (n > 5)
- zone_parse (s + 5, n - 5);
- }
- }
-
- // gmonth
- //
- template <typename C, typename B>
- gmonth<C, B>::
- gmonth (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- parse (tree::text_content<C> (e));
- }
-
- template <typename C, typename B>
- gmonth<C, B>::
- gmonth (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- parse (xml::transcode<C> (a.getValue ()));
- }
-
- template <typename C, typename B>
- gmonth<C, B>::
- gmonth (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- parse (s);
- }
-
- template <typename C, typename B>
- void gmonth<C, B>::
- parse (const std::basic_string<C>& str)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str);
- size_type n (trim (tmp));
- const C* s (tmp.data ());
-
- // gmonth := --MM[Z|(+|-)HH:MM]
- //
- if (n >= 4)
- {
- month_ = 10 * (s[2] - C ('0')) + (s[3] - C ('0'));
-
- if (n > 4)
- zone_parse (s + 4, n - 4);
- }
- }
-
- // gyear
- //
- template <typename C, typename B>
- gyear<C, B>::
- gyear (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- parse (tree::text_content<C> (e));
- }
-
- template <typename C, typename B>
- gyear<C, B>::
- gyear (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- parse (xml::transcode<C> (a.getValue ()));
- }
-
- template <typename C, typename B>
- gyear<C, B>::
- gyear (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- parse (s);
- }
-
- template <typename C, typename B>
- void gyear<C, B>::
- parse (const std::basic_string<C>& str)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str);
- size_type n (trim (tmp));
- const C* s (tmp.data ());
-
- // gyear := [-]CCYY[N]*[Z|(+|-)HH:MM]
- //
- if (n >= 4)
- {
- // Find the end of the year token.
- //
- size_type pos (4);
- for (; pos < n; ++pos)
- {
- C c (s[pos]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> is (year_fragment);
- is >> year_;
-
- if (pos < n)
- zone_parse (s + pos, n - pos);
- }
- }
-
- // gmonth_day
- //
- template <typename C, typename B>
- gmonth_day<C, B>::
- gmonth_day (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- parse (tree::text_content<C> (e));
- }
-
- template <typename C, typename B>
- gmonth_day<C, B>::
- gmonth_day (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- parse (xml::transcode<C> (a.getValue ()));
- }
-
- template <typename C, typename B>
- gmonth_day<C, B>::
- gmonth_day (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- parse (s);
- }
-
- template <typename C, typename B>
- void gmonth_day<C, B>::
- parse (const std::basic_string<C>& str)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str);
- size_type n (trim (tmp));
- const C* s (tmp.data ());
-
- // gmonth_day := --MM-DD[Z|(+|-)HH:MM]
- //
- if (n >= 7)
- {
- month_ = 10 * (s[2] - C ('0')) + (s[3] - C ('0'));
- day_ = 10 * (s[5] - C ('0')) + (s[6] - C ('0'));
-
- if (n > 7)
- zone_parse (s + 7, n - 7);
- }
- }
-
- // gyear_month
- //
- template <typename C, typename B>
- gyear_month<C, B>::
- gyear_month (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- parse (tree::text_content<C> (e));
- }
-
- template <typename C, typename B>
- gyear_month<C, B>::
- gyear_month (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- parse (xml::transcode<C> (a.getValue ()));
- }
-
- template <typename C, typename B>
- gyear_month<C, B>::
- gyear_month (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- parse (s);
- }
-
- template <typename C, typename B>
- void gyear_month<C, B>::
- parse (const std::basic_string<C>& str)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str);
- size_type n (trim (tmp));
- const C* s (tmp.data ());
-
- // gyear_month := [-]CCYY[N]*-MM[Z|(+|-)HH:MM]
- //
-
- if (n >= 7)
- {
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), 4));
-
- if (pos != ro_string<C>::npos && (n - pos - 1) >= 2)
- {
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> is (year_fragment);
- is >> year_;
-
- month_ = 10 * (s[pos + 1] - C ('0')) + (s[pos + 2] - C ('0'));
-
- pos += 3;
-
- if (pos < n)
- zone_parse (s + pos, n - pos);
- }
- }
- }
-
- // date
- //
- template <typename C, typename B>
- date<C, B>::
- date (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- parse (tree::text_content<C> (e));
- }
-
- template <typename C, typename B>
- date<C, B>::
- date (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- parse (xml::transcode<C> (a.getValue ()));
- }
-
- template <typename C, typename B>
- date<C, B>::
- date (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- parse (s);
- }
-
- template <typename C, typename B>
- void date<C, B>::
- parse (const std::basic_string<C>& str)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str);
- size_type n (trim (tmp));
- const C* s (tmp.data ());
-
- // date := [-]CCYY[N]*-MM-DD[Z|(+|-)HH:MM]
- //
-
- if (n >= 10)
- {
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), 4));
-
- if (pos != ro_string<C>::npos && (n - pos - 1) >= 5)
- {
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> is (year_fragment);
- is >> year_;
-
- month_ = 10 * (s[pos + 1] - C ('0')) + (s[pos + 2] - C ('0'));
- day_ = 10 * (s[pos + 4] - C ('0')) + (s[pos + 5] - C ('0'));
-
- pos += 6;
-
- if (pos < n)
- zone_parse (s + pos, n - pos);
- }
- }
- }
-
- // time
- //
- template <typename C, typename B>
- time<C, B>::
- time (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- parse (tree::text_content<C> (e));
- }
-
- template <typename C, typename B>
- time<C, B>::
- time (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- parse (xml::transcode<C> (a.getValue ()));
- }
-
- template <typename C, typename B>
- time<C, B>::
- time (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- parse (s);
- }
-
- template <typename C, typename B>
- void time<C, B>::
- parse (const std::basic_string<C>& str)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str);
- size_type n (trim (tmp));
- const C* s (tmp.data ());
-
- // time := HH:MM:SS[.S+][Z|(+|-)HH:MM]
- //
-
- if (n >= 8)
- {
- hours_ = 10 * (s[0] - '0') + (s[1] - '0');
- minutes_ = 10 * (s[3] - '0') + (s[4] - '0');
-
- // Find the end of the seconds fragment.
- //
- size_type pos (8);
- for (; pos < n; ++pos)
- {
- C c (s[pos]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- ro_string<C> seconds_fragment (s + 6, pos - 6);
- zc_istream<C> is (seconds_fragment);
- is >> seconds_;
-
- if (pos < n)
- zone_parse (s + pos, n - pos);
- }
- }
-
- // date_time
- //
- template <typename C, typename B>
- date_time<C, B>::
- date_time (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- parse (tree::text_content<C> (e));
- }
-
- template <typename C, typename B>
- date_time<C, B>::
- date_time (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- parse (xml::transcode<C> (a.getValue ()));
- }
-
- template <typename C, typename B>
- date_time<C, B>::
- date_time (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- parse (s);
- }
-
- template <typename C, typename B>
- void date_time<C, B>::
- parse (const std::basic_string<C>& str)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str);
- size_type n (trim (tmp));
- const C* s (tmp.data ());
-
- // date_time := [-]CCYY[N]*-MM-DDTHH:MM:SS[.S+][Z|(+|-)HH:MM]
- //
-
- if (n >= 19)
- {
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), 4));
-
- if (pos != ro_string<C>::npos && (n - pos - 1) >= 14)
- {
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> yis (year_fragment);
- yis >> year_;
-
- month_ = 10 * (s[pos + 1] - C ('0')) + (s[pos + 2] - C ('0'));
- pos += 3;
-
- day_ = 10 * (s[pos + 1] - C ('0')) + (s[pos + 2] - C ('0'));
- pos += 3;
-
- hours_ = 10 * (s[pos + 1] - C ('0')) + (s[pos + 2] - C ('0'));
- pos += 3;
-
- minutes_ = 10 * (s[pos + 1] - C ('0')) + (s[pos + 2] - C ('0'));
- pos += 4; // Point to the first S.
-
- // Find the end of the seconds fragment.
- //
- size_type sec_end (pos + 2);
- for (; sec_end < n; ++sec_end)
- {
- C c (s[sec_end]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- ro_string<C> seconds_fragment (s + pos, sec_end - pos);
- zc_istream<C> sis (seconds_fragment);
- sis >> seconds_;
-
- if (sec_end < n)
- zone_parse (s + sec_end, n - sec_end);
- }
- }
- }
-
- // duration
- //
- template <typename C, typename B>
- duration<C, B>::
- duration (const xercesc::DOMElement& e, flags f, container* c)
- : B (e, f, c)
- {
- parse (tree::text_content<C> (e));
- }
-
- template <typename C, typename B>
- duration<C, B>::
- duration (const xercesc::DOMAttr& a, flags f, container* c)
- : B (a, f, c)
- {
- parse (xml::transcode<C> (a.getValue ()));
- }
-
- template <typename C, typename B>
- duration<C, B>::
- duration (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f,
- container* c)
- : B (s, e, f, c)
- {
- parse (s);
- }
-
- namespace bits
- {
- template <typename C>
- inline typename ro_string<C>::size_type
- duration_delim (const C* s,
- typename ro_string<C>::size_type pos,
- typename ro_string<C>::size_type size)
- {
- const C* p (s + pos);
- for (; p < (s + size); ++p)
- {
- if (*p == C ('Y') || *p == C ('D') || *p == C ('M') ||
- *p == C ('H') || *p == C ('M') || *p == C ('S') ||
- *p == C ('T'))
- break;
- }
-
- return p - s;
- }
- }
-
- template <typename C, typename B>
- void duration<C, B>::
- parse (const std::basic_string<C>& str)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str);
- size_type n (trim (tmp));
- const C* s (tmp.data ());
-
- // Set all the fields since some of them may not be specified.
- //
- years_ = months_ = days_ = hours_ = minutes_ = 0;
- seconds_ = 0.0;
-
- // duration := [-]P[nY][nM][nD][TnHnMn[.n+]S]
- //
- if (n >= 3)
- {
- size_type pos (0);
-
- if (s[0] == C ('-'))
- {
- negative_ = true;
- pos++;
- }
- else
- negative_ = false;
-
- pos++; // Skip 'P'.
-
- size_type del (bits::duration_delim (s, pos, n));
-
- if (del != n && s[del] == C ('Y'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> years_;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, n);
- }
-
- if (del != n && s[del] == C ('M'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> months_;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, n);
- }
-
- if (del != n && s[del] == C ('D'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> days_;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, n);
- }
-
- if (del != n && s[del] == C ('T'))
- {
- pos = del + 1;
- del = bits::duration_delim (s, pos, n);
-
- if (del != n && s[del] == C ('H'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> hours_;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, n);
- }
-
- if (del != n && s[del] == C ('M'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> minutes_;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, n);
- }
-
- if (del != n && s[del] == C ('S'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> seconds_;
- }
- }
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/decimal.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/decimal.hxx
deleted file mode 100644
index b615d3c..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/decimal.hxx
+++ /dev/null
@@ -1,84 +0,0 @@
-// file : xsd/cxx/tree/parsing/decimal.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_DECIMAL_HXX
-#define XSD_CXX_TREE_PARSING_DECIMAL_HXX
-
-#include <limits>
-#include <locale>
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<double, C, schema_type::decimal>
- {
- typedef double type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- double traits<double, C, schema_type::decimal>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- double traits<double, C, schema_type::decimal>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- double traits<double, C, schema_type::decimal>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- zc_istream<C> is (tmp);
- is.imbue (std::locale::classic ());
-
- type t;
- is >> t;
-
- return t;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_DECIMAL_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/double.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/double.hxx
deleted file mode 100644
index 4466f7d..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/double.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-// file : xsd/cxx/tree/parsing/double.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_DOUBLE_HXX
-#define XSD_CXX_TREE_PARSING_DOUBLE_HXX
-
-#include <limits>
-#include <locale>
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<double, C, schema_type::double_>
- {
- typedef double type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- double traits<double, C, schema_type::double_>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- double traits<double, C, schema_type::double_>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- double traits<double, C, schema_type::double_>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- if (tmp == bits::positive_inf<C> ())
- return std::numeric_limits<double>::infinity ();
-
- if (tmp == bits::negative_inf<C> ())
- return -std::numeric_limits<double>::infinity ();
-
- if (tmp == bits::nan<C> ())
- return std::numeric_limits<double>::quiet_NaN ();
-
- zc_istream<C> is (tmp);
- is.imbue (std::locale::classic ());
-
- type t;
- is >> t;
-
- return t;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_DOUBLE_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/element-map.txx b/xsd/libxsd/xsd/cxx/tree/parsing/element-map.txx
deleted file mode 100644
index 6ac9674..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/element-map.txx
+++ /dev/null
@@ -1,41 +0,0 @@
-// file : xsd/cxx/tree/parsing/element-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_ELEMENT_MAP_TXX
-#define XSD_CXX_TREE_PARSING_ELEMENT_MAP_TXX
-
-#include <xsd/cxx/xml/dom/elements.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C, typename T>
- XSD_AUTO_PTR<element_type<C, T> > element_map<C, T>::
- parse (const xercesc::DOMElement& e, flags f)
- {
- const qualified_name n (xml::dom::name<C> (e));
- typename map::const_iterator i (map_->find (n));
-
- if (i != map_->end () && i->second.parser_ != 0)
- return (i->second.parser_) (e, f);
- else
- throw no_element_info<C> (n.name (), n.namespace_ ());
- }
-
- template<typename T, typename C, typename B>
- XSD_AUTO_PTR<element_type<C, B> >
- parser_impl (const xercesc::DOMElement& e, flags f)
- {
- return XSD_AUTO_PTR<element_type<C, B> > (new T (e, f));
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_ELEMENT_MAP_TXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/float.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/float.hxx
deleted file mode 100644
index ee582e5..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/float.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-// file : xsd/cxx/tree/parsing/float.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_FLOAT_HXX
-#define XSD_CXX_TREE_PARSING_FLOAT_HXX
-
-#include <limits>
-#include <locale>
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<float, C, schema_type::other>
- {
- typedef float type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- float traits<float, C, schema_type::other>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- float traits<float, C, schema_type::other>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- float traits<float, C, schema_type::other>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- if (tmp == bits::positive_inf<C> ())
- return std::numeric_limits<float>::infinity ();
-
- if (tmp == bits::negative_inf<C> ())
- return -std::numeric_limits<float>::infinity ();
-
- if (tmp == bits::nan<C> ())
- return std::numeric_limits<float>::quiet_NaN ();
-
- zc_istream<C> is (tmp);
- is.imbue (std::locale::classic ());
-
- type t;
- is >> t;
-
- return t;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_FLOAT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/int.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/int.hxx
deleted file mode 100644
index b4eec88..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/int.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-// file : xsd/cxx/tree/parsing/int.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_INT_HXX
-#define XSD_CXX_TREE_PARSING_INT_HXX
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<int, C, schema_type::other>
- {
- typedef int type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- int traits<int, C, schema_type::other>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- int traits<int, C, schema_type::other>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- int traits<int, C, schema_type::other>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- zc_istream<C> is (tmp);
-
- type t;
- is >> t;
-
- return t;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_INT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/long.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/long.hxx
deleted file mode 100644
index 070e66d..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/long.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-// file : xsd/cxx/tree/parsing/long.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_LONG_HXX
-#define XSD_CXX_TREE_PARSING_LONG_HXX
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<long long, C, schema_type::other>
- {
- typedef long long type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- long long traits<long long, C, schema_type::other>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- long long traits<long long, C, schema_type::other>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- long long traits<long long, C, schema_type::other>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- zc_istream<C> is (tmp);
-
- type t;
- is >> t;
-
- return t;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_LONG_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/short.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/short.hxx
deleted file mode 100644
index 90d5144..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/short.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-// file : xsd/cxx/tree/parsing/short.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_SHORT_HXX
-#define XSD_CXX_TREE_PARSING_SHORT_HXX
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<short, C, schema_type::other>
- {
- typedef short type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- short traits<short, C, schema_type::other>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- short traits<short, C, schema_type::other>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- short traits<short, C, schema_type::other>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- zc_istream<C> is (tmp);
-
- type t;
- is >> t;
-
- return t;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_SHORT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-byte.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-byte.hxx
deleted file mode 100644
index c172e93..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-byte.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-// file : xsd/cxx/tree/parsing/unsigned-byte.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_UNSIGNED_BYTE_HXX
-#define XSD_CXX_TREE_PARSING_UNSIGNED_BYTE_HXX
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<unsigned char, C, schema_type::other>
- {
- typedef unsigned char type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- unsigned char traits<unsigned char, C, schema_type::other>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- unsigned char traits<unsigned char, C, schema_type::other>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- unsigned char traits<unsigned char, C, schema_type::other>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- zc_istream<C> is (tmp);
-
- unsigned short t;
- is >> t;
-
- return static_cast<type> (t);
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_UNSIGNED_BYTE_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-int.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-int.hxx
deleted file mode 100644
index 07fb7f2..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-int.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-// file : xsd/cxx/tree/parsing/unsigned-int.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_UNSIGNED_INT_HXX
-#define XSD_CXX_TREE_PARSING_UNSIGNED_INT_HXX
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<unsigned int, C, schema_type::other>
- {
- typedef unsigned int type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- unsigned int traits<unsigned int, C, schema_type::other>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- unsigned int traits<unsigned int, C, schema_type::other>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- unsigned int traits<unsigned int, C, schema_type::other>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- zc_istream<C> is (tmp);
-
- type t;
- is >> t;
-
- return t;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_UNSIGNED_INT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-long.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-long.hxx
deleted file mode 100644
index 0036e0d..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-long.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-// file : xsd/cxx/tree/parsing/unsigned-long.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_UNSIGNED_LONG_HXX
-#define XSD_CXX_TREE_PARSING_UNSIGNED_LONG_HXX
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<unsigned long long, C, schema_type::other>
- {
- typedef unsigned long long type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- unsigned long long traits<unsigned long long, C, schema_type::other>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- unsigned long long traits<unsigned long long, C, schema_type::other>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- unsigned long long traits<unsigned long long, C, schema_type::other>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- zc_istream<C> is (tmp);
-
- type t;
- is >> t;
-
- return t;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_UNSIGNED_LONG_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-short.hxx b/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-short.hxx
deleted file mode 100644
index 838a2a8..0000000
--- a/xsd/libxsd/xsd/cxx/tree/parsing/unsigned-short.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-// file : xsd/cxx/tree/parsing/unsigned-short.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_PARSING_UNSIGNED_SHORT_HXX
-#define XSD_CXX_TREE_PARSING_UNSIGNED_SHORT_HXX
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/zc-istream.hxx>
-
-#include <xsd/cxx/xml/string.hxx> // xml::transcode
-
-#include <xsd/cxx/tree/text.hxx> // text_content
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct traits<unsigned short, C, schema_type::other>
- {
- typedef unsigned short type;
-
- static type
- create (const xercesc::DOMElement& e, flags f, container* c);
-
- static type
- create (const xercesc::DOMAttr& a, flags f, container* c);
-
- static type
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*);
- };
-
- template <typename C>
- unsigned short traits<unsigned short, C, schema_type::other>::
- create (const xercesc::DOMElement& e, flags f, container* c)
- {
- return create (tree::text_content<C> (e), 0, f, c);
- }
-
- template <typename C>
- unsigned short traits<unsigned short, C, schema_type::other>::
- create (const xercesc::DOMAttr& a, flags f, container* c)
- {
- return create (xml::transcode<C> (a.getValue ()), 0, f, c);
- }
-
- template <typename C>
- unsigned short traits<unsigned short, C, schema_type::other>::
- create (const std::basic_string<C>& s,
- const xercesc::DOMElement*,
- flags,
- container*)
- {
- // This type cannot have whitespaces in its values. As result we
- // don't need to waste time collapsing whitespaces. All we need to
- // do is trim the string representation which can be done without
- // copying.
- //
- ro_string<C> tmp (s);
- trim (tmp);
-
- zc_istream<C> is (tmp);
-
- type t;
- is >> t;
-
- return t;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_PARSING_UNSIGNED_SHORT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization.hxx b/xsd/libxsd/xsd/cxx/tree/serialization.hxx
deleted file mode 100644
index 24b26e2..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization.hxx
+++ /dev/null
@@ -1,65 +0,0 @@
-// file : xsd/cxx/tree/serialization.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_HXX
-#define XSD_CXX_TREE_SERIALIZATION_HXX
-
-#include <sstream>
-
-#include <xercesc/dom/DOMElement.hpp>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- //
- //
- template <typename C>
- class list_stream
- {
- public:
- list_stream (std::basic_ostringstream<C>& os,
- xercesc::DOMElement& parent)
- : os_ (os), parent_ (parent)
- {
- }
-
- std::basic_ostringstream<C>& os_;
- xercesc::DOMElement& parent_;
- };
-
- template <typename T>
- class as_double
- {
- public:
- as_double (const T& v)
- : x (v)
- {
- }
-
- const T& x;
- };
-
- template <typename T>
- class as_decimal
- {
- public:
- as_decimal (const T& v, const facet* f = 0)
- : x (v), facets (f)
- {
- }
-
- const T& x;
- const facet* facets;
- };
- }
- }
-}
-
-#include <xsd/cxx/tree/serialization.txx>
-#include <xsd/cxx/tree/serialization/date-time.txx>
-
-#endif // XSD_CXX_TREE_SERIALIZATION_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization.txx b/xsd/libxsd/xsd/cxx/tree/serialization.txx
deleted file mode 100644
index 055f603..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization.txx
+++ /dev/null
@@ -1,790 +0,0 @@
-// file : xsd/cxx/tree/serialization.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <string>
-#include <sstream>
-
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-
-#include <xsd/cxx/xml/string.hxx> // xml::{string, transcode}
-#include <xsd/cxx/xml/dom/serialization-header.hxx> // dom::{prefix, clear}
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/list.hxx>
-
-// The only way to make the following serialization operators
-// for fundamental types work is to defined them in the xercesc
-// namespace so that they can be found by ADL. Placing them into
-// the global namespace does not work.
-//
-
-namespace XERCES_CPP_NAMESPACE
-{
- // Serialization of std::basic_string and C string. Used in other
- // serializers. Also used to serialize enumerators.
- //
- template <typename C>
- void
- operator<< (xercesc::DOMElement& e, const C* s)
- {
- xsd::cxx::xml::dom::clear<char> (e);
-
- if (*s != C (0))
- e.setTextContent (xsd::cxx::xml::string (s).c_str ());
- }
-
- template <typename C>
- void
- operator<< (xercesc::DOMAttr& a, const C* s)
- {
- a.setValue (xsd::cxx::xml::string (s).c_str ());
- }
-
- // We duplicate the code above instead of delegating in order to
- // allow the xml::string type to take advantage of cached string
- // sizes.
- //
- template <typename C>
- void
- operator<< (xercesc::DOMElement& e, const std::basic_string<C>& s)
- {
- xsd::cxx::xml::dom::clear<char> (e);
-
- if (!s.empty ())
- e.setTextContent (xsd::cxx::xml::string (s).c_str ());
- }
-
- template <typename C>
- void
- operator<< (xercesc::DOMAttr& a, const std::basic_string<C>& s)
- {
- a.setValue (xsd::cxx::xml::string (s).c_str ());
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // List serialization operators for std::basic_string and C string.
- //
-
- template <typename C>
- void
- operator<< (list_stream<C>& ls, const C* s)
- {
- ls.os_ << s;
- }
-
- template <typename C>
- void
- operator<< (list_stream<C>& ls, const std::basic_string<C>& s)
- {
- ls.os_ << s;
- }
-
- // Insertion operators for type.
- //
- inline void
- operator<< (xercesc::DOMElement& e, const type& x)
- {
- xml::dom::clear<char> (e);
-
- if (!x.null_content () && x.dom_content ().present ())
- {
- // Clone the contents of the element.
- //
- using namespace xercesc;
-
- DOMDocument& doc (*e.getOwnerDocument ());
- const DOMElement& se (x.dom_content ().get ());
- DOMNamedNodeMap& sa (*se.getAttributes ());
-
- for (XMLSize_t i (0), n (sa.getLength ()); i != n; ++i)
- e.setAttributeNode (
- static_cast<DOMAttr*> (doc.importNode (sa.item (i), true)));
-
- for (DOMNode* sn (se.getFirstChild ());
- sn != 0;
- sn = sn->getNextSibling ())
- e.appendChild (doc.importNode (sn, true));
- }
- }
-
- inline void
- operator<< (xercesc::DOMAttr&, const type&)
- {
- }
-
- template <typename C>
- inline void
- operator<< (list_stream<C>&, const type&)
- {
- }
-
- // Insertion operators for simple_type.
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const simple_type<C, B>& x)
- {
- if (x.null_content ())
- xml::dom::clear<char> (e);
- else
- e << x.text_content ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const simple_type<C, B>& x)
- {
- if (!x.null_content ())
- a << x.text_content ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const simple_type<C, B>& x)
- {
- if (!x.null_content ())
- ls << x.text_content ();
- }
-
- // Insertion operators for list.
- //
- template <typename C, typename T, schema_type::value ST, bool fund>
- void
- operator<< (xercesc::DOMElement& e, const list<T, C, ST, fund>& v)
- {
- std::basic_ostringstream<C> os;
- list_stream<C> ls (os, e);
-
- ls << v;
-
- e << os.str ();
- }
-
- template <typename C, typename T, schema_type::value ST, bool fund>
- void
- operator<< (xercesc::DOMAttr& a, const list<T, C, ST, fund>& v)
- {
- std::basic_ostringstream<C> os;
- list_stream<C> ls (os, *a.getOwnerElement ());
-
- ls << v;
-
- a << os.str ();
- }
-
- template <typename C, typename T, schema_type::value ST, bool fund>
- void
- operator<< (list_stream<C>& ls, const list<T, C, ST, fund>& v)
- {
- for (typename list<T, C, ST, fund>::const_iterator
- b (v.begin ()), e (v.end ()), i (b); i != e; ++i)
- {
- if (i != b)
- ls.os_ << C (' ');
-
- ls << *i;
- }
- }
-
- // Specializations for double and decimal.
- //
- template <typename C, typename T, bool fund>
- void
- operator<< (list_stream<C>& ls,
- const list<T, C, schema_type::double_, fund>& v)
- {
- for (typename list<T, C, schema_type::double_, fund>::const_iterator
- b (v.begin ()), e (v.end ()), i (b); i != e; ++i)
- {
- if (i != b)
- ls.os_ << C (' ');
-
- ls << as_double<T> (*i);
- }
- }
-
- template <typename C, typename T, bool fund>
- void
- operator<< (list_stream<C>& ls,
- const list<T, C, schema_type::decimal, fund>& v)
- {
- for (typename list<T, C, schema_type::decimal, fund>::const_iterator
- b (v.begin ()), e (v.end ()), i (b); i != e; ++i)
- {
- if (i != b)
- ls.os_ << C (' ');
-
- ls << as_decimal<T> (*i);
- }
- }
-
-
- // Insertion operators for fundamental_base.
- //
- template <typename T, typename C, typename B, schema_type::value ST>
- void
- operator<< (xercesc::DOMElement& e,
- const fundamental_base<T, C, B, ST>& x)
- {
- const T& r (x);
- e << r;
- }
-
- template <typename T, typename C, typename B, schema_type::value ST>
- void
- operator<< (xercesc::DOMAttr& a, const fundamental_base<T, C, B, ST>& x)
- {
- const T& r (x);
- a << r;
- }
-
- template <typename T, typename C, typename B, schema_type::value ST>
- void
- operator<< (list_stream<C>& ls, const fundamental_base<T, C, B, ST>& x)
- {
- const T& r (x);
- ls << r;
- }
-
- // Specializations for double.
- //
- template <typename T, typename C, typename B>
- void
- operator<< (
- xercesc::DOMElement& e,
- const fundamental_base<T, C, B, schema_type::double_>& x)
- {
- e << as_double<T> (x);
- }
-
- template <typename T, typename C, typename B>
- void
- operator<< (
- xercesc::DOMAttr& a,
- const fundamental_base<T, C, B, schema_type::double_>& x)
- {
- a << as_double<T> (x);
- }
-
- template <typename T, typename C, typename B>
- void
- operator<< (
- list_stream<C>& ls,
- const fundamental_base<T, C, B, schema_type::double_>& x)
- {
- ls << as_double<T> (x);
- }
-
- // Specializations for decimal.
- //
- template <typename T, typename C, typename B>
- void
- operator<< (
- xercesc::DOMElement& e,
- const fundamental_base<T, C, B, schema_type::decimal>& x)
- {
- e << as_decimal<T> (x, x._facet_table ());
- }
-
- template <typename T, typename C, typename B>
- void
- operator<< (
- xercesc::DOMAttr& a,
- const fundamental_base<T, C, B, schema_type::decimal>& x)
- {
- a << as_decimal<T> (x, x._facet_table ());
- }
-
- template <typename T, typename C, typename B>
- void
- operator<< (
- list_stream<C>& ls,
- const fundamental_base<T, C, B, schema_type::decimal>& x)
- {
- ls << as_decimal<T> (x, x._facet_table ());
- }
-
- // Insertion operators for built-in types.
- //
-
- namespace bits
- {
- template <typename C, typename T>
- void
- insert (xercesc::DOMElement& e, const T& x)
- {
- std::basic_ostringstream<C> os;
- os << x;
- e << os.str ();
- }
-
- template <typename C, typename T>
- void
- insert (xercesc::DOMAttr& a, const T& x)
- {
- std::basic_ostringstream<C> os;
- os << x;
- a << os.str ();
- }
- }
-
-
- // string
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const string<C, B>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const string<C, B>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const string<C, B>& x)
- {
- ls.os_ << x;
- }
-
-
- // normalized_string
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const normalized_string<C, B>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const normalized_string<C, B>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const normalized_string<C, B>& x)
- {
- ls.os_ << x;
- }
-
-
- // token
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const token<C, B>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const token<C, B>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const token<C, B>& x)
- {
- ls.os_ << x;
- }
-
-
- // nmtoken
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const nmtoken<C, B>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const nmtoken<C, B>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const nmtoken<C, B>& x)
- {
- ls.os_ << x;
- }
-
-
- // nmtokens
- //
- template <typename C, typename B, typename nmtoken>
- inline void
- operator<< (xercesc::DOMElement& e, const nmtokens<C, B, nmtoken>& v)
- {
- const list<nmtoken, C>& r (v);
- e << r;
- }
-
- template <typename C, typename B, typename nmtoken>
- inline void
- operator<< (xercesc::DOMAttr& a, const nmtokens<C, B, nmtoken>& v)
- {
- const list<nmtoken, C>& r (v);
- a << r;
- }
-
- template <typename C, typename B, typename nmtoken>
- inline void
- operator<< (list_stream<C>& ls, const nmtokens<C, B, nmtoken>& v)
- {
- const list<nmtoken, C>& r (v);
- ls << r;
- }
-
-
- // name
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const name<C, B>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const name<C, B>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const name<C, B>& x)
- {
- ls.os_ << x;
- }
-
-
- // ncname
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const ncname<C, B>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const ncname<C, B>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const ncname<C, B>& x)
- {
- ls.os_ << x;
- }
-
-
- // language
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const language<C, B>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const language<C, B>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const language<C, B>& x)
- {
- ls.os_ << x;
- }
-
-
- // id
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const id<C, B>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const id<C, B>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const id<C, B>& x)
- {
- ls.os_ << x;
- }
-
-
- // idref
- //
- template <typename C, typename B, typename T>
- inline void
- operator<< (xercesc::DOMElement& e, const idref<C, B, T>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B, typename T>
- inline void
- operator<< (xercesc::DOMAttr& a, const idref<C, B, T>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B, typename T>
- inline void
- operator<< (list_stream<C>& ls, const idref<C, B, T>& x)
- {
- ls.os_ << x;
- }
-
-
- // idrefs
- //
- template <typename C, typename B, typename idref>
- inline void
- operator<< (xercesc::DOMElement& e, const idrefs<C, B, idref>& v)
- {
- const list<idref, C>& r (v);
- e << r;
- }
-
- template <typename C, typename B, typename idref>
- inline void
- operator<< (xercesc::DOMAttr& a, const idrefs<C, B, idref>& v)
- {
- const list<idref, C>& r (v);
- a << r;
- }
-
- template <typename C, typename B, typename idref>
- inline void
- operator<< (list_stream<C>& ls, const idrefs<C, B, idref>& v)
- {
- const list<idref, C>& r (v);
- ls << r;
- }
-
-
- // uri
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const uri<C, B>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const uri<C, B>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const uri<C, B>& x)
- {
- ls.os_ << x;
- }
-
-
- // qname
- //
- template <typename C, typename B, typename uri, typename ncname>
- void
- operator<< (xercesc::DOMElement& e, const qname<C, B, uri, ncname>& x)
- {
- std::basic_ostringstream<C> os;
-
- if (x.qualified ())
- {
- std::basic_string<C> p (xml::dom::prefix (x.namespace_ (), e));
-
- if (!p.empty ())
- os << p << C (':');
- }
-
- os << x.name ();
- e << os.str ();
- }
-
- template <typename C, typename B, typename uri, typename ncname>
- void
- operator<< (xercesc::DOMAttr& a, const qname<C, B, uri, ncname>& x)
- {
- std::basic_ostringstream<C> os;
-
- if (x.qualified ())
- {
- std::basic_string<C> p (
- xml::dom::prefix (x.namespace_ (), *a.getOwnerElement ()));
-
- if (!p.empty ())
- os << p << C (':');
- }
-
- os << x.name ();
- a << os.str ();
- }
-
- template <typename C, typename B, typename uri, typename ncname>
- void
- operator<< (list_stream<C>& ls, const qname<C, B, uri, ncname>& x)
- {
- if (x.qualified ())
- {
- std::basic_string<C> p (
- xml::dom::prefix (x.namespace_ (), ls.parent_));
-
- if (!p.empty ())
- ls.os_ << p << C (':');
- }
-
- ls.os_ << x.name ();
- }
-
-
- // base64_binary
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const base64_binary<C, B>& x)
- {
- e << x.encode ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const base64_binary<C, B>& x)
- {
- a << x.encode ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const base64_binary<C, B>& x)
- {
- ls.os_ << x.encode ();
- }
-
-
- // hex_binary
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const hex_binary<C, B>& x)
- {
- e << x.encode ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const hex_binary<C, B>& x)
- {
- a << x.encode ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const hex_binary<C, B>& x)
- {
- ls.os_ << x.encode ();
- }
-
-
- // entity
- //
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const entity<C, B>& x)
- {
- bits::insert<C> (e, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const entity<C, B>& x)
- {
- bits::insert<C> (a, x);
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const entity<C, B>& x)
- {
- ls.os_ << x;
- }
-
-
- // entities
- //
- template <typename C, typename B, typename entity>
- inline void
- operator<< (xercesc::DOMElement& e, const entities<C, B, entity>& v)
- {
- const list<entity, C>& r (v);
- e << r;
- }
-
- template <typename C, typename B, typename entity>
- inline void
- operator<< (xercesc::DOMAttr& a, const entities<C, B, entity>& v)
- {
- const list<entity, C>& r (v);
- a << r;
- }
-
- template <typename C, typename B, typename entity>
- inline void
- operator<< (list_stream<C>& ls, const entities<C, B, entity>& v)
- {
- const list<entity, C>& r (v);
- ls << r;
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/boolean.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/boolean.hxx
deleted file mode 100644
index 90978c4..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/boolean.hxx
+++ /dev/null
@@ -1,51 +0,0 @@
-// file : xsd/cxx/tree/serialization/boolean.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_BOOLEAN_HXX
-#define XSD_CXX_TREE_SERIALIZATION_BOOLEAN_HXX
-
-#include <sstream>
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e, bool b)
- {
- std::basic_ostringstream<char> os;
- os.setf (std::ios_base::boolalpha);
- os << b;
- e << os.str ();
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a, bool b)
- {
- std::basic_ostringstream<char> os;
- os.setf (std::ios_base::boolalpha);
- os << b;
- a << os.str ();
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, bool b)
- {
- // We don't need to restore the original bool format flag
- // since items in the list are all of the same type.
- //
- ls.os_.setf (std::ios_base::boolalpha);
- ls.os_ << b;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_BOOLEAN_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/byte.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/byte.hxx
deleted file mode 100644
index bd7bceb..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/byte.hxx
+++ /dev/null
@@ -1,45 +0,0 @@
-// file : xsd/cxx/tree/serialization/byte.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_BYTE_HXX
-#define XSD_CXX_TREE_SERIALIZATION_BYTE_HXX
-
-#include <sstream>
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e, signed char c)
- {
- std::basic_ostringstream<char> os;
- os << static_cast<short> (c);
- e << os.str ();
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a, signed char c)
- {
- std::basic_ostringstream<char> os;
- os << static_cast<short> (c);
- a << os.str ();
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, signed char c)
- {
- ls.os_ << static_cast<short> (c);
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_BYTE_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/date-time.txx b/xsd/libxsd/xsd/cxx/tree/serialization/date-time.txx
deleted file mode 100644
index c2a02d6..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/date-time.txx
+++ /dev/null
@@ -1,619 +0,0 @@
-// file : xsd/cxx/tree/serialization/date-time.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <locale>
-#include <string>
-#include <ostream>
-#include <sstream>
-
-#include <xsd/cxx/tree/bits/literals.hxx> // bits::{gday_prefix,gmonth_prefix}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // time_zone
- //
- namespace bits
- {
- // Assumes the fill character is set to '0'.
- //
- template <typename C>
- void
- zone_insert (std::basic_ostream<C>& os, const time_zone& z)
- {
- // time-zone := Z|(+|-)HH:MM
- //
- short h = z.zone_hours ();
- short m = z.zone_minutes ();
-
- if (h == 0 && m == 0)
- {
- os << C ('Z');
- }
- else
- {
- if (h < 0 || m < 0)
- {
- h = -h;
- m = -m;
- os << C ('-');
- }
- else
- os << C ('+');
-
- if (h >= 0 && h <= 14 && m >= 0 && m <= 59)
- {
- os.width (2);
- os << h << C (':');
- os.width (2);
- os << m;
- }
- }
- }
- }
-
- // gday
- //
- namespace bits
- {
- template <typename C, typename B>
- void
- insert (std::basic_ostream<C>& os, const tree::gday<C, B>& x)
- {
- if (x.day () < 32)
- {
- // Save some time and space by not restoring the fill character
- // since it is the same in case of a list.
- //
- os.fill (C ('0'));
- os << bits::gday_prefix<C> ();
- os.width (2);
- os << x.day ();
-
- if (x.zone_present ())
- zone_insert (os, x);
- }
- }
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const gday<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- e << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const gday<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- a << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const gday<C, B>& x)
- {
- bits::insert (ls.os_, x);
- }
-
- // gmonth
- //
- namespace bits
- {
- template <typename C, typename B>
- void
- insert (std::basic_ostream<C>& os, const tree::gmonth<C, B>& x)
- {
- if (x.month () < 13)
- {
- os.fill (C ('0'));
- os << bits::gmonth_prefix<C> ();
- os.width (2);
- os << x.month ();
-
- if (x.zone_present ())
- zone_insert (os, x);
- }
- }
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const gmonth<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- e << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const gmonth<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- a << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const gmonth<C, B>& x)
- {
- bits::insert (ls.os_, x);
- }
-
- // gyear
- //
- namespace bits
- {
- template <typename C, typename B>
- void
- insert (std::basic_ostream<C>& os, const tree::gyear<C, B>& x)
- {
- os.fill (C ('0'));
- os.width (4);
- os << x.year ();
-
- if (x.zone_present ())
- zone_insert (os, x);
- }
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const gyear<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- e << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const gyear<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- a << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const gyear<C, B>& x)
- {
- bits::insert (ls.os_, x);
- }
-
- // gmonth_day
- //
- namespace bits
- {
- template <typename C, typename B>
- void
- insert (std::basic_ostream<C>& os, const tree::gmonth_day<C, B>& x)
- {
- if (x.month () < 13 && x.day () < 32)
- {
- os.fill (C ('0'));
- os << bits::gmonth_prefix<C> ();
- os.width (2);
- os << x.month () << C ('-');
- os.width (2);
- os << x.day ();
-
- if (x.zone_present ())
- zone_insert (os, x);
- }
- }
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const gmonth_day<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- e << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const gmonth_day<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- a << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const gmonth_day<C, B>& x)
- {
- bits::insert (ls.os_, x);
- }
-
- // gyear_month
- //
- namespace bits
- {
- template <typename C, typename B>
- void
- insert (std::basic_ostream<C>& os, const tree::gyear_month<C, B>& x)
- {
- if (x.month () < 13)
- {
- os.fill (C ('0'));
- os.width (4);
- os << x.year () << C ('-');
- os.width (2);
- os << x.month ();
-
- if (x.zone_present ())
- zone_insert (os, x);
- }
- }
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const gyear_month<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- e << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const gyear_month<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- a << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const gyear_month<C, B>& x)
- {
- bits::insert (ls.os_, x);
- }
-
- // date
- //
- namespace bits
- {
- template <typename C, typename B>
- void
- insert (std::basic_ostream<C>& os, const tree::date<C, B>& x)
- {
- if (x.month () < 13 && x.day () < 32)
- {
- os.fill (C ('0'));
- os.width (4);
- os << x.year () << C ('-');
- os.width (2);
- os << x.month () << C ('-');
- os.width (2);
- os << x.day ();
-
- if (x.zone_present ())
- zone_insert (os, x);
- }
- }
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const date<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- e << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const date<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- a << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const date<C, B>& x)
- {
- bits::insert (ls.os_, x);
- }
-
- // time
- //
- namespace bits
- {
- template <typename C, typename B>
- void
- insert (std::basic_ostream<C>& os, const tree::time<C, B>& x)
- {
- if (x.hours () <= 24 &&
- x.minutes () <= 59 &&
- x.seconds () >= 0.0 &&
- x.seconds () < 60.0)
- {
- os.fill (C ('0'));
- os.width (2);
- os << x.hours () << C (':');
-
- os.width (2);
- os << x.minutes () << C (':');
-
- std::basic_ostringstream<C> ostr;
- ostr.imbue (std::locale::classic ());
- ostr.width (9);
- ostr.fill (C ('0'));
- ostr << std::fixed << x.seconds ();
-
- std::basic_string<C> s (ostr.str ());
-
- // Remove the trailing zeros and the decimal point if necessary.
- //
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (s.size ()), n (size);
-
- for (; n > 0 && s[n - 1] == C ('0'); --n)/*noop*/;
-
- if (n > 0 && s[n - 1] == C ('.'))
- --n;
-
- if (n != size)
- s.resize (n);
-
- os << s;
-
- if (x.zone_present ())
- zone_insert (os, x);
- }
- }
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const time<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- e << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const time<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- a << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const time<C, B>& x)
- {
- bits::insert (ls.os_, x);
- }
-
- // date_time
- //
- namespace bits
- {
- template <typename C, typename B>
- void
- insert (std::basic_ostream<C>& os, const tree::date_time<C, B>& x)
- {
- if (x.month () <= 12 &&
- x.day () <= 31 &&
- x.hours () <= 24 &&
- x.minutes () <= 59 &&
- x.seconds () >= 0.0 &&
- x.seconds () < 60.0)
- {
- os.fill (C ('0'));
- os.width (4);
- os << x.year () << C ('-');
-
- os.width (2);
- os << x.month () << C ('-');
-
- os.width (2);
- os << x.day () << C ('T');
-
- os.width (2);
- os << x.hours () << C (':');
-
- os.width (2);
- os << x.minutes () << C (':');
-
- std::basic_ostringstream<C> ostr;
- ostr.imbue (std::locale::classic ());
- ostr.width (9);
- ostr.fill (C ('0'));
- ostr << std::fixed << x.seconds ();
-
- std::basic_string<C> s (ostr.str ());
-
- // Remove the trailing zeros and the decimal point if necessary.
- //
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (s.size ()), n (size);
-
- for (; n > 0 && s[n - 1] == C ('0'); --n)/*noop*/;
-
- if (n > 0 && s[n - 1] == C ('.'))
- --n;
-
- if (n != size)
- s.resize (n);
-
- os << s;
-
- if (x.zone_present ())
- zone_insert (os, x);
- }
- }
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const date_time<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- e << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const date_time<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- a << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const date_time<C, B>& x)
- {
- bits::insert (ls.os_, x);
- }
-
- // duration
- //
- namespace bits
- {
- template <typename C, typename B>
- void
- insert (std::basic_ostream<C>& os, const tree::duration<C, B>& x)
- {
- if (x.negative ())
- os << C ('-');
-
- os << C ('P');
-
- // years
- //
- // In case it is 0-duration, use the years field to handle
- // this case.
- //
- if (x.years () != 0 ||
- (x.months () == 0 &&
- x.days () == 0 &&
- x.hours () == 0 &&
- x.minutes () == 0 &&
- x.seconds () == 0.0))
- {
- os << x.years () << C ('Y');
- }
-
- // months
- //
- if (x.months () != 0)
- {
- os << x.months () << C ('M');
- }
-
- // days
- //
- if (x.days () != 0)
- {
- os << x.days () << C ('D');
- }
-
- // Figure out if we need the 'T' delimiter.
- //
- if (x.hours () != 0 ||
- x.minutes () != 0 ||
- x.seconds () != 0.0)
- os << C ('T');
-
- // hours
- //
- if (x.hours () != 0)
- {
- os << x.hours () << C ('H');
- }
-
- // minutes
- //
- if (x.minutes () != 0)
- {
- os << x.minutes () << C ('M');
- }
-
- // seconds
- //
- if (x.seconds () > 0.0)
- {
- std::basic_ostringstream<C> ostr;
- ostr.imbue (std::locale::classic ());
- ostr << std::fixed << x.seconds ();
-
- std::basic_string<C> s (ostr.str ());
-
- // Remove the trailing zeros and the decimal point if necessary.
- //
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (s.size ()), n (size);
-
- for (; n > 0 && s[n - 1] == C ('0'); --n)/*noop*/;
-
- if (n > 0 && s[n - 1] == C ('.'))
- --n;
-
- if (n != size)
- s.resize (n);
-
- os << s << C ('S');
- }
- }
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMElement& e, const duration<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- e << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (xercesc::DOMAttr& a, const duration<C, B>& x)
- {
- std::basic_ostringstream<C> os;
- bits::insert (os, x);
- a << os.str ();
- }
-
- template <typename C, typename B>
- inline void
- operator<< (list_stream<C>& ls, const duration<C, B>& x)
- {
- bits::insert (ls.os_, x);
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/decimal.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/decimal.hxx
deleted file mode 100644
index 6e48809..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/decimal.hxx
+++ /dev/null
@@ -1,125 +0,0 @@
-// file : xsd/cxx/tree/serialization/decimal.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_DECIMAL_HXX
-#define XSD_CXX_TREE_SERIALIZATION_DECIMAL_HXX
-
-#include <limits> // std::numeric_limits
-#include <locale>
-#include <sstream>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- namespace bits
- {
- // The formula for the number of decimla digits required is given in:
- //
- // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf
- //
- template <typename C>
- std::basic_string<C>
- insert (const as_decimal<double>& d)
- {
- std::basic_ostringstream<C> os;
- os.imbue (std::locale::classic ());
- std::streamsize prec;
-
- const facet* f = d.facets ?
- facet::find (d.facets, facet::fraction_digits) : 0;
-
- if (f)
- prec = static_cast<std::streamsize> (f->value);
- else
- {
- // Precision.
- //
-#if defined (XSD_CXX_TREE_DECIMAL_PRECISION_MAX)
- prec = 2 + std::numeric_limits<double>::digits * 301/1000;
-#elif defined (XSD_CXX_TREE_DECIMAL_PRECISION)
- prec = XSD_CXX_TREE_DECIMAL_PRECISION;
-#else
- prec = std::numeric_limits<double>::digits10;
-#endif
- }
-
- os.precision (prec);
- os << std::fixed << d.x;
- std::basic_string<C> r (os.str ());
- const C* cr (r.c_str ());
-
- // Remove the trailing zeros and the decimal point if necessary.
- //
- typename std::basic_string<C>::size_type size (r.size ()), n (size);
-
- if (prec != 0)
- {
- for (; n > 0 && cr[n - 1] == '0'; --n)/*noop*/;
-
- if (n > 0 && cr[n - 1] == '.')
- --n;
- }
-
- // See if we have a restriction on total digits.
- //
- f = d.facets ? facet::find (d.facets, facet::total_digits) : 0;
-
- if (f && n > f->value)
- {
- // Point and sign do not count so figure out if we have them.
- //
- typename std::basic_string<C>::size_type extra (
- cr[0] == '-' ? 1 : 0);
-
- if (r.find ('.') < n)
- extra++;
-
- // Unless we have a point and the size difference is one,
- // remove some digits.
- //
- if ((n - extra) > f->value)
- n -= (n - extra - f->value);
-
- if (n > 0 && cr[n - 1] == '.')
- --n;
- }
-
- if (n != size)
- r.resize (n);
-
- return r;
- }
- }
-
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, const as_decimal<double>& d)
- {
- ls.os_ << bits::insert<C> (d);
- }
- }
- }
-}
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e,
- const xsd::cxx::tree::as_decimal<double>& d)
- {
- e << xsd::cxx::tree::bits::insert<char> (d);
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a,
- const xsd::cxx::tree::as_decimal<double>& d)
- {
- a << xsd::cxx::tree::bits::insert<char> (d);
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_DECIMAL_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/double.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/double.hxx
deleted file mode 100644
index bc4d5c4..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/double.hxx
+++ /dev/null
@@ -1,95 +0,0 @@
-// file : xsd/cxx/tree/serialization/double.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_DOUBLE_HXX
-#define XSD_CXX_TREE_SERIALIZATION_DOUBLE_HXX
-
-#include <limits> // std::numeric_limits
-#include <locale>
-#include <sstream>
-
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- namespace bits
- {
- // The formula for the number of decimla digits required is given in:
- //
- // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf
- //
- template <typename C>
- std::basic_string<C>
- insert (const as_double<double>& d)
- {
- std::basic_string<C> r;
-
- if (d.x == std::numeric_limits<double>::infinity ())
- r = bits::positive_inf<C> ();
- else if (d.x == -std::numeric_limits<double>::infinity ())
- r = bits::negative_inf<C> ();
- else if (!(d.x == d.x))
- r = bits::nan<C> ();
- else
- {
- std::basic_ostringstream<C> os;
- os.imbue (std::locale::classic ());
-
- // Precision.
- //
-#if defined (XSD_CXX_TREE_DOUBLE_PRECISION_MAX)
- os.precision (2 + std::numeric_limits<double>::digits * 301/1000);
-#elif defined (XSD_CXX_TREE_DOUBLE_PRECISION)
- os.precision (XSD_CXX_TREE_DOUBLE_PRECISION);
-#else
- os.precision (std::numeric_limits<double>::digits10);
-#endif
- // Format.
- //
-#if defined (XSD_CXX_TREE_DOUBLE_FIXED)
- os << std::fixed << d.x;
-#elif defined (XSD_CXX_TREE_DOUBLE_SCIENTIFIC)
- os << std::scientific << d.x;
-#else
- os << d.x;
-#endif
- r = os.str ();
- }
-
- return r;
- }
- }
-
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, const as_double<double>& d)
- {
- ls.os_ << bits::insert<C> (d);
- }
- }
- }
-}
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e,
- const xsd::cxx::tree::as_double<double>& d)
- {
- e << xsd::cxx::tree::bits::insert<char> (d);
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a,
- const xsd::cxx::tree::as_double<double>& d)
- {
- a << xsd::cxx::tree::bits::insert<char> (d);
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_DOUBLE_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/element-map.txx b/xsd/libxsd/xsd/cxx/tree/serialization/element-map.txx
deleted file mode 100644
index 63149f4..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/element-map.txx
+++ /dev/null
@@ -1,39 +0,0 @@
-// file : xsd/cxx/tree/serialization/element-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_ELEMENT_MAP_TXX
-#define XSD_CXX_TREE_SERIALIZATION_ELEMENT_MAP_TXX
-
-#include <xsd/cxx/tree/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C, typename T>
- void element_map<C, T>::
- serialize (xercesc::DOMElement& e, const element_type& x)
- {
- const qualified_name n (x._name (), x._namespace ());
- typename map::const_iterator i (map_->find (n));
-
- if (i != map_->end () && i->second.serializer_ != 0)
- return (i->second.serializer_) (e, x);
- else
- throw no_element_info<C> (n.name (), n.namespace_ ());
- }
-
- template<typename T, typename C, typename B>
- void
- serializer_impl (xercesc::DOMElement& e, const element_type<C, B>& x)
- {
- e << static_cast<const T&> (x);
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_ELEMENT_MAP_TXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/float.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/float.hxx
deleted file mode 100644
index 9aa79b0..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/float.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-// file : xsd/cxx/tree/serialization/float.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_FLOAT_HXX
-#define XSD_CXX_TREE_SERIALIZATION_FLOAT_HXX
-
-#include <limits> // std::numeric_limits
-#include <locale>
-#include <sstream>
-
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- namespace bits
- {
- // The formula for the number of decimla digits required is given in:
- //
- // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf
- //
- template <typename C>
- std::basic_string<C>
- insert (float f)
- {
- std::basic_string<C> r;
-
- if (f == std::numeric_limits<float>::infinity ())
- r = bits::positive_inf<C> ();
- else if (f == -std::numeric_limits<float>::infinity ())
- r = bits::negative_inf<C> ();
- else if (!(f == f))
- r = bits::nan<C> ();
- else
- {
- std::basic_ostringstream<C> os;
- os.imbue (std::locale::classic ());
-
- // Precision.
- //
-#if defined (XSD_CXX_TREE_FLOAT_PRECISION_MAX)
- os.precision (2 + std::numeric_limits<float>::digits * 301/1000);
-#elif defined (XSD_CXX_TREE_FLOAT_PRECISION)
- os.precision (XSD_CXX_TREE_FLOAT_PRECISION);
-#else
- os.precision (std::numeric_limits<float>::digits10);
-#endif
- // Format.
- //
-#if defined (XSD_CXX_TREE_FLOAT_FIXED)
- os << std::fixed << f;
-#elif defined (XSD_CXX_TREE_FLOAT_SCIENTIFIC)
- os << std::scientific << f;
-#else
- os << f;
-#endif
- r = os.str ();
- }
-
- return r;
- }
- }
-
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, float f)
- {
- ls.os_ << bits::insert<C> (f);
- }
- }
- }
-}
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e, float f)
- {
- e << xsd::cxx::tree::bits::insert<char> (f);
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a, float f)
- {
- a << xsd::cxx::tree::bits::insert<char> (f);
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_FLOAT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/int.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/int.hxx
deleted file mode 100644
index f96124a..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/int.hxx
+++ /dev/null
@@ -1,45 +0,0 @@
-// file : xsd/cxx/tree/serialization/int.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_INT_HXX
-#define XSD_CXX_TREE_SERIALIZATION_INT_HXX
-
-#include <sstream>
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e, int i)
- {
- std::basic_ostringstream<char> os;
- os << i;
- e << os.str ();
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a, int i)
- {
- std::basic_ostringstream<char> os;
- os << i;
- a << os.str ();
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, int i)
- {
- ls.os_ << i;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_INT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/long.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/long.hxx
deleted file mode 100644
index 98a4632..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/long.hxx
+++ /dev/null
@@ -1,45 +0,0 @@
-// file : xsd/cxx/tree/serialization/long.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_LONG_HXX
-#define XSD_CXX_TREE_SERIALIZATION_LONG_HXX
-
-#include <sstream>
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e, long long l)
- {
- std::basic_ostringstream<char> os;
- os << l;
- e << os.str ();
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a, long long l)
- {
- std::basic_ostringstream<char> os;
- os << l;
- a << os.str ();
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, long long l)
- {
- ls.os_ << l;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_LONG_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/short.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/short.hxx
deleted file mode 100644
index f8a9b94..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/short.hxx
+++ /dev/null
@@ -1,45 +0,0 @@
-// file : xsd/cxx/tree/serialization/short.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_SHORT_HXX
-#define XSD_CXX_TREE_SERIALIZATION_SHORT_HXX
-
-#include <sstream>
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e, short s)
- {
- std::basic_ostringstream<char> os;
- os << s;
- e << os.str ();
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a, short s)
- {
- std::basic_ostringstream<char> os;
- os << s;
- a << os.str ();
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, short s)
- {
- ls.os_ << s;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_SHORT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-byte.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-byte.hxx
deleted file mode 100644
index f30c575..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-byte.hxx
+++ /dev/null
@@ -1,45 +0,0 @@
-// file : xsd/cxx/tree/serialization/unsigned-byte.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_UNSIGNED_BYTE_HXX
-#define XSD_CXX_TREE_SERIALIZATION_UNSIGNED_BYTE_HXX
-
-#include <sstream>
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e, unsigned char c)
- {
- std::basic_ostringstream<char> os;
- os << static_cast<unsigned short> (c);
- e << os.str ();
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a, unsigned char c)
- {
- std::basic_ostringstream<char> os;
- os << static_cast<unsigned short> (c);
- a << os.str ();
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, unsigned char c)
- {
- ls.os_ << static_cast<unsigned short> (c);
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_UNSIGNED_BYTE_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-int.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-int.hxx
deleted file mode 100644
index 7dbb3a8..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-int.hxx
+++ /dev/null
@@ -1,45 +0,0 @@
-// file : xsd/cxx/tree/serialization/unsigned-int.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_UNSIGNED_INT_HXX
-#define XSD_CXX_TREE_SERIALIZATION_UNSIGNED_INT_HXX
-
-#include <sstream>
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e, unsigned int i)
- {
- std::basic_ostringstream<char> os;
- os << i;
- e << os.str ();
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a, unsigned int i)
- {
- std::basic_ostringstream<char> os;
- os << i;
- a << os.str ();
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, unsigned int i)
- {
- ls.os_ << i;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_UNSIGNED_INT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-long.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-long.hxx
deleted file mode 100644
index 8808e34..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-long.hxx
+++ /dev/null
@@ -1,45 +0,0 @@
-// file : xsd/cxx/tree/serialization/unsigned-long.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_UNSIGNED_LONG_HXX
-#define XSD_CXX_TREE_SERIALIZATION_UNSIGNED_LONG_HXX
-
-#include <sstream>
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e, unsigned long long l)
- {
- std::basic_ostringstream<char> os;
- os << l;
- e << os.str ();
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a, unsigned long long l)
- {
- std::basic_ostringstream<char> os;
- os << l;
- a << os.str ();
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, unsigned long long l)
- {
- ls.os_ << l;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_UNSIGNED_LONG_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-short.hxx b/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-short.hxx
deleted file mode 100644
index ac3a448..0000000
--- a/xsd/libxsd/xsd/cxx/tree/serialization/unsigned-short.hxx
+++ /dev/null
@@ -1,45 +0,0 @@
-// file : xsd/cxx/tree/serialization/unsigned-short.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_SERIALIZATION_UNSIGNED_SHORT_HXX
-#define XSD_CXX_TREE_SERIALIZATION_UNSIGNED_SHORT_HXX
-
-#include <sstream>
-
-namespace XERCES_CPP_NAMESPACE
-{
- inline void
- operator<< (xercesc::DOMElement& e, unsigned short s)
- {
- std::basic_ostringstream<char> os;
- os << s;
- e << os.str ();
- }
-
- inline void
- operator<< (xercesc::DOMAttr& a, unsigned short s)
- {
- std::basic_ostringstream<char> os;
- os << s;
- a << os.str ();
- }
-}
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- inline void
- operator<< (list_stream<C>& ls, unsigned short s)
- {
- ls.os_ << s;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_SERIALIZATION_UNSIGNED_SHORT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/std-ostream-map.hxx b/xsd/libxsd/xsd/cxx/tree/std-ostream-map.hxx
deleted file mode 100644
index 836ee30..0000000
--- a/xsd/libxsd/xsd/cxx/tree/std-ostream-map.hxx
+++ /dev/null
@@ -1,113 +0,0 @@
-// file : xsd/cxx/tree/std-ostream-map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_STD_OSTREAM_MAP_HXX
-#define XSD_CXX_TREE_STD_OSTREAM_MAP_HXX
-
-#include <map>
-#include <cstddef> // std::size_t
-#include <ostream>
-#include <typeinfo>
-
-#include <xsd/cxx/tree/elements.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct std_ostream_map
- {
- typedef std::type_info type_id;
- typedef void (*inserter) (std::basic_ostream<C>&, const type&);
-
- std_ostream_map ();
-
- void
- register_type (const type_id&, inserter, bool replace = true);
-
- void
- unregister_type (const type_id&);
-
- void
- insert (std::basic_ostream<C>&, const type&);
-
- public:
- inserter
- find (const type_id&) const;
-
- private:
- struct type_id_comparator
- {
- bool
- operator() (const type_id* x, const type_id* y) const
- {
- // XL C++ on AIX has buggy type_info::before() in that
- // it returns true for two different type_info objects
- // that happened to be for the same type.
- //
-#if defined(__xlC__) && defined(_AIX)
- return *x != *y && x->before (*y);
-#else
- return x->before (*y);
-#endif
- }
- };
-
- typedef
- std::map<const type_id*, inserter, type_id_comparator>
- type_map;
-
- type_map type_map_;
- };
-
- //
- //
- template<unsigned long id, typename C>
- struct std_ostream_plate
- {
- static std_ostream_map<C>* map;
- static std::size_t count;
-
- std_ostream_plate ();
- ~std_ostream_plate ();
- };
-
- template<unsigned long id, typename C>
- std_ostream_map<C>* std_ostream_plate<id, C>::map = 0;
-
- template<unsigned long id, typename C>
- std::size_t std_ostream_plate<id, C>::count = 0;
-
-
- //
- //
- template<unsigned long id, typename C>
- inline std_ostream_map<C>&
- std_ostream_map_instance ()
- {
- return *std_ostream_plate<id, C>::map;
- }
-
- //
- //
- template<typename C, typename T>
- void
- inserter_impl (std::basic_ostream<C>&, const type&);
-
- template<unsigned long id, typename C, typename T>
- struct std_ostream_initializer
- {
- std_ostream_initializer ();
- ~std_ostream_initializer ();
- };
- }
- }
-}
-
-#include <xsd/cxx/tree/std-ostream-map.txx>
-
-#endif // XSD_CXX_TREE_STD_OSTREAM_MAP_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/std-ostream-map.txx b/xsd/libxsd/xsd/cxx/tree/std-ostream-map.txx
deleted file mode 100644
index ef65ef2..0000000
--- a/xsd/libxsd/xsd/cxx/tree/std-ostream-map.txx
+++ /dev/null
@@ -1,292 +0,0 @@
-// file : xsd/cxx/tree/std-ostream-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/std-ostream-operators.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // std_ostream_map
- //
- template <typename C>
- std_ostream_map<C>::
- std_ostream_map ()
- {
- // anyType and anySimpleType.
- //
- register_type (
- typeid (type),
- &inserter_impl<C, type>,
- false);
-
- typedef simple_type<C, type> simple_type;
- register_type (
- typeid (simple_type),
- &inserter_impl<C, simple_type>,
- false);
-
-
- // Strings
- //
- typedef string<C, simple_type> string;
- register_type (
- typeid (string),
- &inserter_impl<C, string>,
- false);
-
- typedef normalized_string<C, string> normalized_string;
- register_type (
- typeid (normalized_string),
- &inserter_impl<C, normalized_string>,
- false);
-
- typedef token<C, normalized_string> token;
- register_type (
- typeid (token),
- &inserter_impl<C, token>,
- false);
-
- typedef name<C, token> name;
- register_type (
- typeid (name),
- &inserter_impl<C, name>,
- false);
-
- typedef nmtoken<C, token> nmtoken;
- register_type (
- typeid (nmtoken),
- &inserter_impl<C, nmtoken>,
- false);
-
- typedef nmtokens<C, simple_type, nmtoken> nmtokens;
- register_type (
- typeid (nmtokens),
- &inserter_impl<C, nmtokens>,
- false);
-
- typedef ncname<C, name> ncname;
- register_type (
- typeid (ncname),
- &inserter_impl<C, ncname>,
- false);
-
- typedef language<C, token> language;
- register_type (
- typeid (language),
- &inserter_impl<C, language>,
- false);
-
-
- // ID/IDREF.
- //
- typedef id<C, ncname> id;
- register_type (
- typeid (id),
- &inserter_impl<C, id>,
- false);
-
- typedef idref<C, ncname, type> idref;
- register_type (
- typeid (idref),
- &inserter_impl<C, idref>,
- false);
-
- typedef idrefs<C, simple_type, idref> idrefs;
- register_type (
- typeid (idrefs),
- &inserter_impl<C, idrefs>,
- false);
-
-
- // URI.
- //
- typedef uri<C, simple_type> uri;
- register_type (
- typeid (uri),
- &inserter_impl<C, uri>,
- false);
-
-
- // Qualified name.
- //
- typedef qname<C, simple_type, uri, ncname> qname;
- register_type (
- typeid (qname),
- &inserter_impl<C, qname>,
- false);
-
-
- // Binary.
- //
- typedef base64_binary<C, simple_type> base64_binary;
- register_type (
- typeid (base64_binary),
- &inserter_impl<C, base64_binary>,
- false);
-
- typedef hex_binary<C, simple_type> hex_binary;
- register_type (
- typeid (hex_binary),
- &inserter_impl<C, hex_binary>,
- false);
-
-
- // Date/time.
- //
- typedef gday<C, simple_type> gday;
- register_type (
- typeid (gday),
- &inserter_impl<C, gday>,
- false);
-
- typedef gmonth<C, simple_type> gmonth;
- register_type (
- typeid (gmonth),
- &inserter_impl<C, gmonth>,
- false);
-
- typedef gyear<C, simple_type> gyear;
- register_type (
- typeid (gyear),
- &inserter_impl<C, gyear>,
- false);
-
- typedef gmonth_day<C, simple_type> gmonth_day;
- register_type (
- typeid (gmonth_day),
- &inserter_impl<C, gmonth_day>,
- false);
-
- typedef gyear_month<C, simple_type> gyear_month;
- register_type (
- typeid (gyear_month),
- &inserter_impl<C, gyear_month>,
- false);
-
- typedef date<C, simple_type> date;
- register_type (
- typeid (date),
- &inserter_impl<C, date>,
- false);
-
- typedef time<C, simple_type> time;
- register_type (
- typeid (time),
- &inserter_impl<C, time>,
- false);
-
- typedef date_time<C, simple_type> date_time;
- register_type (
- typeid (date_time),
- &inserter_impl<C, date_time>,
- false);
-
- typedef duration<C, simple_type> duration;
- register_type (
- typeid (duration),
- &inserter_impl<C, duration>,
- false);
-
-
- // Entity.
- //
- typedef entity<C, ncname> entity;
- register_type (
- typeid (entity),
- &inserter_impl<C, entity>,
- false);
-
- typedef entities<C, simple_type, entity> entities;
- register_type (
- typeid (entities),
- &inserter_impl<C, entities>,
- false);
- }
-
- template <typename C>
- void std_ostream_map<C>::
- register_type (const type_id& tid, inserter i, bool replace)
- {
- if (replace || type_map_.find (&tid) == type_map_.end ())
- type_map_[&tid] = i;
- }
-
- template <typename C>
- void std_ostream_map<C>::
- unregister_type (const type_id& tid)
- {
- type_map_.erase (&tid);
- }
-
- template <typename C>
- void std_ostream_map<C>::
- insert (std::basic_ostream<C>& os, const type& x)
- {
- if (inserter i = find (typeid (x)))
- i (os, x);
- else
- throw no_type_info<C> (std::basic_string<C> (),
- std::basic_string<C> ()); // @@ TODO
- }
-
- template <typename C>
- typename std_ostream_map<C>::inserter std_ostream_map<C>::
- find (const type_id& tid) const
- {
- typename type_map::const_iterator i (type_map_.find (&tid));
- return i == type_map_.end () ? 0 : i->second;
- }
-
- // std_ostream_plate
- //
- template<unsigned long id, typename C>
- std_ostream_plate<id, C>::
- std_ostream_plate ()
- {
- if (count == 0)
- map = new std_ostream_map<C>;
-
- ++count;
- }
-
- template<unsigned long id, typename C>
- std_ostream_plate<id, C>::
- ~std_ostream_plate ()
- {
- if (--count == 0)
- delete map;
- }
-
- //
- //
- template<typename C, typename T>
- void
- inserter_impl (std::basic_ostream<C>& os, const type& x)
- {
- os << static_cast<const T&> (x);
- }
-
- // std_ostream_initializer
- //
- template<unsigned long id, typename C, typename T>
- std_ostream_initializer<id, C, T>::
- std_ostream_initializer ()
- {
- std_ostream_map_instance<id, C> ().register_type (
- typeid (T), &inserter_impl<C, T>);
- }
-
- template<unsigned long id, typename C, typename T>
- std_ostream_initializer<id, C, T>::
- ~std_ostream_initializer ()
- {
- std_ostream_map_instance<id, C> ().unregister_type (typeid (T));
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/std-ostream-operators.hxx b/xsd/libxsd/xsd/cxx/tree/std-ostream-operators.hxx
deleted file mode 100644
index 9a8f976..0000000
--- a/xsd/libxsd/xsd/cxx/tree/std-ostream-operators.hxx
+++ /dev/null
@@ -1,277 +0,0 @@
-// file : xsd/cxx/tree/std-ostream-operators.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_STD_OSTREAM_OPERATORS_HXX
-#define XSD_CXX_TREE_STD_OSTREAM_OPERATORS_HXX
-
-#include <ostream>
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/containers.hxx>
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/list.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // type
- //
- template <typename C>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const type&)
- {
- // Not printing DOM content even if it's there.
- return os;
- }
-
-
- // simple_type
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const simple_type<C, B>& x)
- {
- if (!x.null_content ())
- os << x.text_content ();
-
- return os;
- }
-
-
- // fundamental_base
- //
- template <typename T, typename C, typename B, schema_type::value ST>
- inline
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, fundamental_base<T, C, B, ST> x)
- {
- T& r (x);
- return os << r;
- }
-
- // optional: see containers.hxx
- //
-
- // list
- //
-
- // This is an xsd:list-style format (space-separated).
- //
- template <typename C, typename T, schema_type::value ST, bool fund>
- std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const list<T, C, ST, fund>& v)
- {
- for (typename list<T, C, ST, fund>::const_iterator
- b (v.begin ()), e (v.end ()), i (b); i != e; ++i)
- {
- if (i != b)
- os << C (' ');
-
- os << *i;
- }
-
- return os;
- }
-
-
- // Operators for built-in types.
- //
-
-
- // string
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const string<C, B>& v)
- {
- const std::basic_string<C>& r (v);
- return os << r;
- }
-
-
- // normalized_string
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const normalized_string<C, B>& v)
- {
- const B& r (v);
- return os << r;
- }
-
-
- // token
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const token<C, B>& v)
- {
- const B& r (v);
- return os << r;
- }
-
-
- // nmtoken
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const nmtoken<C, B>& v)
- {
- const B& r (v);
- return os << r;
- }
-
-
- // nmtokens
- //
- template <typename C, typename B, typename nmtoken>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const nmtokens<C, B, nmtoken>& v)
- {
- const list<nmtoken, C>& r (v);
- return os << r;
- }
-
-
- // name
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const name<C, B>& v)
- {
- const B& r (v);
- return os << r;
- }
-
-
- // ncname
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const ncname<C, B>& v)
- {
- const B& r (v);
- return os << r;
- }
-
-
- // language
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const language<C, B>& v)
- {
- const B& r (v);
- return os << r;
- }
-
-
- // id
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const id<C, B>& v)
- {
- const B& r (v);
- return os << r;
- }
-
-
- // idref
- //
- template <typename C, typename B, typename T>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const idref<C, B, T>& v)
- {
- const B& r (v);
- return os << r;
- }
-
-
- // idrefs
- //
- template <typename C, typename B, typename idref>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const idrefs<C, B, idref>& v)
- {
- const list<idref, C>& r (v);
- return os << r;
- }
-
-
- // uri
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const uri<C, B>& v)
- {
- const std::basic_string<C>& r (v);
- return os << r;
- }
-
-
- // qname
- //
- template <typename C, typename B, typename uri, typename ncname>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os,
- const qname<C, B, uri, ncname>& n)
- {
- if (n.qualified ())
- os << n.namespace_ () << C ('#');
-
- return os << n.name ();
- }
-
-
- // base64_binary
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const base64_binary<C, B>& v)
- {
- return os << v.encode ();
- }
-
-
- // hex_binary
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const hex_binary<C, B>& v)
- {
- return os << v.encode ();
- }
-
-
- // entity
- //
- template <typename C, typename B>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const entity<C, B>& v)
- {
- const B& r (v);
- return os << r;
- }
-
-
- // entities
- //
- template <typename C, typename B, typename entity>
- inline std::basic_ostream<C>&
- operator<< (std::basic_ostream<C>& os, const entities<C, B, entity>& v)
- {
- const list<entity, C>& r (v);
- return os << r;
- }
- }
- }
-}
-
-#include <xsd/cxx/tree/date-time-ostream.txx>
-
-#endif // XSD_CXX_TREE_STD_OSTREAM_OPERATORS_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/stream-extraction-map.hxx b/xsd/libxsd/xsd/cxx/tree/stream-extraction-map.hxx
deleted file mode 100644
index f57c435..0000000
--- a/xsd/libxsd/xsd/cxx/tree/stream-extraction-map.hxx
+++ /dev/null
@@ -1,106 +0,0 @@
-// file : xsd/cxx/tree/stream-extraction-map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_STREAM_EXTRACTION_MAP_HXX
-#define XSD_CXX_TREE_STREAM_EXTRACTION_MAP_HXX
-
-#include <map>
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cstddef> // std::size_t
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/istream.hxx>
-#include <xsd/cxx/xml/qualified-name.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename S, typename C>
- struct stream_extraction_map
- {
- typedef xml::qualified_name<C> qualified_name;
- typedef XSD_AUTO_PTR<type> (*extractor) (
- istream<S>&, flags, container*);
-
- public:
- stream_extraction_map ();
-
- void
- register_type (const qualified_name& name,
- extractor,
- bool replace = true);
-
- void
- unregister_type (const qualified_name& name);
-
- XSD_AUTO_PTR<type>
- extract (istream<S>&, flags, container*);
-
- public:
- extractor
- find (const qualified_name& name) const;
-
- private:
- typedef std::map<qualified_name, extractor> type_map;
-
- type_map type_map_;
- };
-
- //
- //
- template<unsigned long id, typename S, typename C>
- struct stream_extraction_plate
- {
- static stream_extraction_map<S, C>* map;
- static std::size_t count;
-
- stream_extraction_plate ();
- ~stream_extraction_plate ();
- };
-
- template<unsigned long id, typename S, typename C>
- stream_extraction_map<S, C>* stream_extraction_plate<id, S, C>::map = 0;
-
- template<unsigned long id, typename S, typename C>
- std::size_t stream_extraction_plate<id, S, C>::count = 0;
-
-
- //
- //
- template<unsigned long id, typename S, typename C>
- inline stream_extraction_map<S, C>&
- stream_extraction_map_instance ()
- {
- return *stream_extraction_plate<id, S, C>::map;
- }
-
- //
- //
- template<typename S, typename T>
- XSD_AUTO_PTR<type>
- extractor_impl (istream<S>&, flags, container*);
-
-
- template<unsigned long id, typename S, typename C, typename T>
- struct stream_extraction_initializer
- {
- stream_extraction_initializer (const C* name, const C* ns);
- ~stream_extraction_initializer ();
-
- private:
- const C* name_;
- const C* ns_;
- };
- }
- }
-}
-
-#include <xsd/cxx/tree/stream-extraction-map.txx>
-
-#endif // XSD_CXX_TREE_STREAM_EXTRACTION_MAP_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/stream-extraction-map.txx b/xsd/libxsd/xsd/cxx/tree/stream-extraction-map.txx
deleted file mode 100644
index 61dd306..0000000
--- a/xsd/libxsd/xsd/cxx/tree/stream-extraction-map.txx
+++ /dev/null
@@ -1,332 +0,0 @@
-// file : xsd/cxx/tree/stream-extraction-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/stream-extraction.hxx>
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // stream_extraction_map
- //
- template <typename S, typename C>
- stream_extraction_map<S, C>::
- stream_extraction_map ()
- {
- // Register extractors for built-in non-fundamental types.
- //
- std::basic_string<C> xsd (bits::xml_schema<C> ());
-
-
- // anyType and anySimpleType.
- //
- register_type (
- qualified_name (bits::any_type<C> (), xsd),
- &extractor_impl<S, type>,
- false);
-
- typedef simple_type<C, type> simple_type;
- register_type (
- qualified_name (bits::any_simple_type<C> (), xsd),
- &extractor_impl<S, simple_type>,
- false);
-
-
- // Strings
- //
- typedef string<C, simple_type> string;
- register_type (
- qualified_name (bits::string<C> (), xsd),
- &extractor_impl<S, string>,
- false);
-
- typedef normalized_string<C, string> normalized_string;
- register_type (
- qualified_name (bits::normalized_string<C> (), xsd),
- &extractor_impl<S, normalized_string>,
- false);
-
- typedef token<C, normalized_string> token;
- register_type (
- qualified_name (bits::token<C> (), xsd),
- &extractor_impl<S, token>,
- false);
-
- typedef name<C, token> name;
- register_type (
- qualified_name (bits::name<C> (), xsd),
- &extractor_impl<S, name>,
- false);
-
- typedef nmtoken<C, token> nmtoken;
- register_type (
- qualified_name (bits::nmtoken<C> (), xsd),
- &extractor_impl<S, nmtoken>,
- false);
-
- typedef nmtokens<C, simple_type, nmtoken> nmtokens;
- register_type (
- qualified_name (bits::nmtokens<C> (), xsd),
- &extractor_impl<S, nmtokens>,
- false);
-
- typedef ncname<C, name> ncname;
- register_type (
- qualified_name (bits::ncname<C> (), xsd),
- &extractor_impl<S, ncname>,
- false);
-
- typedef language<C, token> language;
- register_type (
- qualified_name (bits::language<C> (), xsd),
- &extractor_impl<S, language>,
- false);
-
-
- // ID/IDREF.
- //
- typedef id<C, ncname> id;
- register_type (
- qualified_name (bits::id<C> (), xsd),
- &extractor_impl<S, id>,
- false);
-
- typedef idref<C, ncname, type> idref;
- register_type (
- qualified_name (bits::idref<C> (), xsd),
- &extractor_impl<S, idref>,
- false);
-
- typedef idrefs<C, simple_type, idref> idrefs;
- register_type (
- qualified_name (bits::idrefs<C> (), xsd),
- &extractor_impl<S, idrefs>,
- false);
-
-
- // URI.
- //
- typedef uri<C, simple_type> uri;
- register_type (
- qualified_name (bits::any_uri<C> (), xsd),
- &extractor_impl<S, uri>,
- false);
-
-
- // Qualified name.
- //
- typedef qname<C, simple_type, uri, ncname> qname;
- register_type (
- qualified_name (bits::qname<C> (), xsd),
- &extractor_impl<S, qname>,
- false);
-
-
- // Binary.
- //
- typedef base64_binary<C, simple_type> base64_binary;
- register_type (
- qualified_name (bits::base64_binary<C> (), xsd),
- &extractor_impl<S, base64_binary>,
- false);
-
- typedef hex_binary<C, simple_type> hex_binary;
- register_type (
- qualified_name (bits::hex_binary<C> (), xsd),
- &extractor_impl<S, hex_binary>,
- false);
-
-
- // Date/time.
- //
- typedef gday<C, simple_type> gday;
- register_type (
- qualified_name (bits::gday<C> (), xsd),
- &extractor_impl<S, gday>,
- false);
-
- typedef gmonth<C, simple_type> gmonth;
- register_type (
- qualified_name (bits::gmonth<C> (), xsd),
- &extractor_impl<S, gmonth>,
- false);
-
- typedef gyear<C, simple_type> gyear;
- register_type (
- qualified_name (bits::gyear<C> (), xsd),
- &extractor_impl<S, gyear>,
- false);
-
- typedef gmonth_day<C, simple_type> gmonth_day;
- register_type (
- qualified_name (bits::gmonth_day<C> (), xsd),
- &extractor_impl<S, gmonth_day>,
- false);
-
- typedef gyear_month<C, simple_type> gyear_month;
- register_type (
- qualified_name (bits::gyear_month<C> (), xsd),
- &extractor_impl<S, gyear_month>,
- false);
-
- typedef date<C, simple_type> date;
- register_type (
- qualified_name (bits::date<C> (), xsd),
- &extractor_impl<S, date>,
- false);
-
- typedef time<C, simple_type> time;
- register_type (
- qualified_name (bits::time<C> (), xsd),
- &extractor_impl<S, time>,
- false);
-
- typedef date_time<C, simple_type> date_time;
- register_type (
- qualified_name (bits::date_time<C> (), xsd),
- &extractor_impl<S, date_time>,
- false);
-
- typedef duration<C, simple_type> duration;
- register_type (
- qualified_name (bits::duration<C> (), xsd),
- &extractor_impl<S, duration>,
- false);
-
-
- // Entity.
- //
- typedef entity<C, ncname> entity;
- register_type (
- qualified_name (bits::entity<C> (), xsd),
- &extractor_impl<S, entity>,
- false);
-
- typedef entities<C, simple_type, entity> entities;
- register_type (
- qualified_name (bits::entities<C> (), xsd),
- &extractor_impl<S, entities>,
- false);
- }
-
- template <typename S, typename C>
- void stream_extraction_map<S, C>::
- register_type (const qualified_name& name,
- extractor e,
- bool replace)
- {
- if (replace || type_map_.find (name) == type_map_.end ())
- type_map_[name] = e;
- }
-
- template <typename S, typename C>
- void stream_extraction_map<S, C>::
- unregister_type (const qualified_name& name)
- {
- type_map_.erase (name);
- }
-
- template <typename S, typename C>
- XSD_AUTO_PTR<type> stream_extraction_map<S, C>::
- extract (istream<S>& s, flags f, container* c)
- {
- std::basic_string<C> ns, name;
-
- // The namespace and name strings are pooled.
- //
- std::size_t id;
- istream_common::as_size<std::size_t> as_size (id);
- s >> as_size;
-
- if (id != 0)
- s.pool_string (id, ns);
- else
- {
- s >> ns;
- s.pool_add (ns);
- }
-
- s >> as_size;
-
- if (id != 0)
- s.pool_string (id, name);
- else
- {
- s >> name;
- s.pool_add (name);
- }
-
- if (extractor e = find (qualified_name (name, ns)))
- {
- return e (s, f, c);
- }
- else
- throw no_type_info<C> (name, ns);
- }
-
- template <typename S, typename C>
- typename stream_extraction_map<S, C>::extractor
- stream_extraction_map<S, C>::
- find (const qualified_name& name) const
- {
- typename type_map::const_iterator i (type_map_.find (name));
- return i == type_map_.end () ? 0 : i->second;
- }
-
-
- // stream_extraction_plate
- //
- template<unsigned long id, typename S, typename C>
- stream_extraction_plate<id, S, C>::
- stream_extraction_plate ()
- {
- if (count == 0)
- map = new stream_extraction_map<S, C>;
-
- ++count;
- }
-
- template<unsigned long id, typename S, typename C>
- stream_extraction_plate<id, S, C>::
- ~stream_extraction_plate ()
- {
- if (--count == 0)
- delete map;
- }
-
- //
- //
- template<typename S, typename T>
- XSD_AUTO_PTR<type>
- extractor_impl (istream<S>& s, flags f, container* c)
- {
- return XSD_AUTO_PTR<type> (new T (s, f, c));
- }
-
-
- // stream_extraction_initializer
- //
- template<unsigned long id, typename S, typename C, typename T>
- stream_extraction_initializer<id, S, C, T>::
- stream_extraction_initializer (const C* name, const C* ns)
- : name_ (name), ns_ (ns)
- {
- stream_extraction_map_instance<id, S, C> ().register_type (
- xml::qualified_name<C> (name, ns), &extractor_impl<S, T>);
- }
-
- template<unsigned long id, typename S, typename C, typename T>
- stream_extraction_initializer<id, S, C, T>::
- ~stream_extraction_initializer ()
- {
- stream_extraction_map_instance<id, S, C> ().unregister_type (
- xml::qualified_name<C> (name_, ns_));
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/stream-extraction.hxx b/xsd/libxsd/xsd/cxx/tree/stream-extraction.hxx
deleted file mode 100644
index ee39bcc..0000000
--- a/xsd/libxsd/xsd/cxx/tree/stream-extraction.hxx
+++ /dev/null
@@ -1,305 +0,0 @@
-// file : xsd/cxx/tree/stream-extraction.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_STREAM_EXTRACTION_HXX
-#define XSD_CXX_TREE_STREAM_EXTRACTION_HXX
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/list.hxx>
-
-#include <xsd/cxx/tree/istream.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // type
- //
- template <typename S>
- inline _type::
- _type (istream<S>&, flags, container* c)
- : container_ (c)
- {
- }
-
- // simple_type
- //
- template <typename C, typename B>
- template <typename S>
- inline simple_type<C, B>::
- simple_type (istream<S>& s, flags f, container* c)
- : type (s, f & ~flags::extract_content, c)
- {
- if (f & flags::extract_content)
- {
- std::basic_string<C> t;
- s >> t;
- this->content_.reset (new text_content_type (t));
- }
- }
-
- // fundamental_base
- //
- template <typename T, typename C, typename B, schema_type::value ST>
- template <typename S>
- inline fundamental_base<T, C, B, ST>::
- fundamental_base (istream<S>& s, flags f, container* c)
- : B (s, f, c), facet_table_ (0)
- {
- T& r (*this);
- s >> r;
- }
-
- // list
- //
- template <typename T, typename C, schema_type::value ST>
- template <typename S>
- list<T, C, ST, false>::
- list (istream<S>& s, flags f, container* c)
- : sequence<T> (c)
- {
- std::size_t size;
- istream_common::as_size<std::size_t> as_size (size);
- s >> as_size;
-
- if (size > 0)
- {
- this->reserve (size);
-
- while (size--)
- this->push_back (traits<T, C, ST>::create (s, f, c));
- }
- }
-
- template <typename T, typename C, schema_type::value ST>
- template <typename S>
- list<T, C, ST, true>::
- list (istream<S>& s, flags, container* c)
- : sequence<T> (c)
- {
- std::size_t size;
- istream_common::as_size<std::size_t> as_size (size);
- s >> as_size;
-
- if (size > 0)
- {
- this->reserve (size);
-
- while (size--)
- {
- T x;
- s >> x;
- this->push_back (x);
- }
- }
- }
-
- // Extraction operators for built-in types.
- //
-
-
- // string
- //
- template <typename C, typename B>
- template <typename S>
- inline string<C, B>::
- string (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- std::basic_string<C>& r (*this);
- s >> r;
- }
-
-
- // normalized_string
- //
- template <typename C, typename B>
- template <typename S>
- inline normalized_string<C, B>::
- normalized_string (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- }
-
-
- // token
- //
- template <typename C, typename B>
- template <typename S>
- inline token<C, B>::
- token (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- }
-
-
- // nmtoken
- //
- template <typename C, typename B>
- template <typename S>
- inline nmtoken<C, B>::
- nmtoken (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- }
-
-
- // nmtokens
- //
- template <typename C, typename B, typename nmtoken>
- template <typename S>
- inline nmtokens<C, B, nmtoken>::
- nmtokens (istream<S>& s, flags f, container* c)
- : B (s, f, c), base_type (s, f, this)
- {
- }
-
-
- // name
- //
- template <typename C, typename B>
- template <typename S>
- inline name<C, B>::
- name (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- }
-
-
- // ncname
- //
- template <typename C, typename B>
- template <typename S>
- inline ncname<C, B>::
- ncname (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- }
-
-
- // language
- //
- template <typename C, typename B>
- template <typename S>
- inline language<C, B>::
- language (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- }
-
-
- // id
- //
- template <typename C, typename B>
- template <typename S>
- inline id<C, B>::
- id (istream<S>& s, flags f, container* c)
- : B (s, f, c), identity_ (*this)
- {
- register_id ();
- }
-
-
- // idref
- //
- template <typename C, typename B, typename T>
- template <typename S>
- inline idref<C, B, T>::
- idref (istream<S>& s, flags f, container* c)
- : B (s, f, c), identity_ (*this)
- {
- }
-
-
- // idrefs
- //
- template <typename C, typename B, typename idref>
- template <typename S>
- inline idrefs<C, B, idref>::
- idrefs (istream<S>& s, flags f, container* c)
- : B (s, f, c), base_type (s, f, this)
- {
- }
-
-
- // uri
- //
- template <typename C, typename B>
- template <typename S>
- inline uri<C, B>::
- uri (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- std::basic_string<C>& r (*this);
- s >> r;
- }
-
-
- // qname
- //
- template <typename C, typename B, typename uri, typename ncname>
- template <typename S>
- inline qname<C, B, uri, ncname>::
- qname (istream<S>& s, flags f, container* c)
- : B (s, f, c), ns_ (s), name_ (s)
- {
- }
-
-
- // base64_binary
- //
- template <typename C, typename B>
- template <typename S>
- inline base64_binary<C, B>::
- base64_binary (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- buffer<C>& r (*this);
- s >> r;
- }
-
-
- // hex_binary
- //
- template <typename C, typename B>
- template <typename S>
- inline hex_binary<C, B>::
- hex_binary (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- buffer<C>& r (*this);
- s >> r;
- }
-
-
- // entity
- //
- template <typename C, typename B>
- template <typename S>
- inline entity<C, B>::
- entity (istream<S>& s, flags f, container* c)
- : B (s, f, c)
- {
- }
-
-
- // entities
- //
- template <typename C, typename B, typename entity>
- template <typename S>
- inline entities<C, B, entity>::
- entities (istream<S>& s, flags f, container* c)
- : B (s, f, c), base_type (s, f, this)
- {
- }
- }
- }
-}
-
-#include <xsd/cxx/tree/date-time-extraction.txx>
-
-#endif // XSD_CXX_TREE_STREAM_EXTRACTION_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/stream-insertion-map.hxx b/xsd/libxsd/xsd/cxx/tree/stream-insertion-map.hxx
deleted file mode 100644
index c8a113b..0000000
--- a/xsd/libxsd/xsd/cxx/tree/stream-insertion-map.hxx
+++ /dev/null
@@ -1,153 +0,0 @@
-// file : xsd/cxx/tree/stream-insertion-map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_STREAM_INSERTION_MAP_HXX
-#define XSD_CXX_TREE_STREAM_INSERTION_MAP_HXX
-
-#include <map>
-#include <string>
-#include <cstddef> // std::size_t
-#include <typeinfo>
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/ostream.hxx>
-#include <xsd/cxx/xml/qualified-name.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename S, typename C>
- struct stream_insertion_map
- {
- typedef std::type_info type_id;
- typedef xml::qualified_name<C> qualified_name;
- typedef void (*inserter) (ostream<S>&, const type&);
-
- stream_insertion_map ();
-
- void
- register_type (const type_id&,
- const qualified_name& name,
- inserter,
- bool replace = true);
-
- void
- unregister_type (const type_id&);
-
- void
- insert (ostream<S>&, const type&);
-
- public:
- struct type_info
- {
- type_info (const qualified_name& name,
- typename stream_insertion_map::inserter inserter)
- : name_ (name), inserter_ (inserter)
- {
- }
-
- const qualified_name&
- name () const
- {
- return name_;
- }
-
- typename stream_insertion_map::inserter
- inserter () const
- {
- return inserter_;
- }
-
- // For std::map.
- //
- type_info ()
- : name_ (std::basic_string<C> (), std::basic_string<C> ()),
- inserter_ (0)
- {
- }
-
- private:
- qualified_name name_;
- typename stream_insertion_map::inserter inserter_;
- };
-
- public:
- const type_info*
- find (const type_id&) const;
-
- private:
- struct type_id_comparator
- {
- bool
- operator() (const type_id* x, const type_id* y) const
- {
- // XL C++ on AIX has buggy type_info::before() in that
- // it returns true for two different type_info objects
- // that happened to be for the same type.
- //
-#if defined(__xlC__) && defined(_AIX)
- return *x != *y && x->before (*y);
-#else
- return x->before (*y);
-#endif
- }
- };
-
- typedef
- std::map<const type_id*, type_info, type_id_comparator>
- type_map;
-
- type_map type_map_;
- };
-
- //
- //
- template<unsigned long id, typename S, typename C>
- struct stream_insertion_plate
- {
- static stream_insertion_map<S, C>* map;
- static std::size_t count;
-
- stream_insertion_plate ();
- ~stream_insertion_plate ();
- };
-
- template<unsigned long id, typename S, typename C>
- stream_insertion_map<S, C>* stream_insertion_plate<id, S, C>::map = 0;
-
- template<unsigned long id, typename S, typename C>
- std::size_t stream_insertion_plate<id, S, C>::count = 0;
-
-
- //
- //
- template<unsigned long id, typename S, typename C>
- inline stream_insertion_map<S, C>&
- stream_insertion_map_instance ()
- {
- return *stream_insertion_plate<id, S, C>::map;
- }
-
- //
- //
- template<typename S, typename T>
- void
- inserter_impl (ostream<S>&, const type&);
-
- template<unsigned long id, typename S, typename C, typename T>
- struct stream_insertion_initializer
- {
- stream_insertion_initializer (const C* name, const C* ns);
- ~stream_insertion_initializer ();
- };
- }
- }
-}
-
-#include <xsd/cxx/tree/stream-insertion-map.txx>
-
-#endif // XSD_CXX_TREE_STREAM_INSERTION_MAP_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/stream-insertion-map.txx b/xsd/libxsd/xsd/cxx/tree/stream-insertion-map.txx
deleted file mode 100644
index 78fbacb..0000000
--- a/xsd/libxsd/xsd/cxx/tree/stream-insertion-map.txx
+++ /dev/null
@@ -1,356 +0,0 @@
-// file : xsd/cxx/tree/stream-insertion-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/stream-insertion.hxx>
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // stream_insertion_map
- //
- template <typename S, typename C>
- stream_insertion_map<S, C>::
- stream_insertion_map ()
- {
- // Register inserters for built-in non-fundamental types.
- //
- std::basic_string<C> xsd (bits::xml_schema<C> ());
-
-
- // anyType and anySimpleType.
- //
- register_type (
- typeid (type),
- qualified_name (bits::any_type<C> (), xsd),
- &inserter_impl<S, type>,
- false);
-
- typedef simple_type<C, type> simple_type;
- register_type (
- typeid (simple_type),
- qualified_name (bits::any_simple_type<C> (), xsd),
- &inserter_impl<S, simple_type>,
- false);
-
-
- // Strings
- //
- typedef string<C, simple_type> string;
- register_type (
- typeid (string),
- qualified_name (bits::string<C> (), xsd),
- &inserter_impl<S, string>,
- false);
-
- typedef normalized_string<C, string> normalized_string;
- register_type (
- typeid (normalized_string),
- qualified_name (bits::normalized_string<C> (), xsd),
- &inserter_impl<S, normalized_string>,
- false);
-
- typedef token<C, normalized_string> token;
- register_type (
- typeid (token),
- qualified_name (bits::token<C> (), xsd),
- &inserter_impl<S, token>,
- false);
-
- typedef name<C, token> name;
- register_type (
- typeid (name),
- qualified_name (bits::name<C> (), xsd),
- &inserter_impl<S, name>,
- false);
-
- typedef nmtoken<C, token> nmtoken;
- register_type (
- typeid (nmtoken),
- qualified_name (bits::nmtoken<C> (), xsd),
- &inserter_impl<S, nmtoken>,
- false);
-
- typedef nmtokens<C, simple_type, nmtoken> nmtokens;
- register_type (
- typeid (nmtokens),
- qualified_name (bits::nmtokens<C> (), xsd),
- &inserter_impl<S, nmtokens>,
- false);
-
- typedef ncname<C, name> ncname;
- register_type (
- typeid (ncname),
- qualified_name (bits::ncname<C> (), xsd),
- &inserter_impl<S, ncname>,
- false);
-
- typedef language<C, token> language;
- register_type (
- typeid (language),
- qualified_name (bits::language<C> (), xsd),
- &inserter_impl<S, language>,
- false);
-
-
- // ID/IDREF.
- //
- typedef id<C, ncname> id;
- register_type (
- typeid (id),
- qualified_name (bits::id<C> (), xsd),
- &inserter_impl<S, id>,
- false);
-
- typedef idref<C, ncname, type> idref;
- register_type (
- typeid (idref),
- qualified_name (bits::idref<C> (), xsd),
- &inserter_impl<S, idref>,
- false);
-
- typedef idrefs<C, simple_type, idref> idrefs;
- register_type (
- typeid (idrefs),
- qualified_name (bits::idrefs<C> (), xsd),
- &inserter_impl<S, idrefs>,
- false);
-
-
- // URI.
- //
- typedef uri<C, simple_type> uri;
- register_type (
- typeid (uri),
- qualified_name (bits::any_uri<C> (), xsd),
- &inserter_impl<S, uri>,
- false);
-
-
- // Qualified name.
- //
- typedef qname<C, simple_type, uri, ncname> qname;
- register_type (
- typeid (qname),
- qualified_name (bits::qname<C> (), xsd),
- &inserter_impl<S, qname>,
- false);
-
-
- // Binary.
- //
- typedef base64_binary<C, simple_type> base64_binary;
- register_type (
- typeid (base64_binary),
- qualified_name (bits::base64_binary<C> (), xsd),
- &inserter_impl<S, base64_binary>,
- false);
-
- typedef hex_binary<C, simple_type> hex_binary;
- register_type (
- typeid (hex_binary),
- qualified_name (bits::hex_binary<C> (), xsd),
- &inserter_impl<S, hex_binary>,
- false);
-
-
- // Date/time.
- //
- typedef gday<C, simple_type> gday;
- register_type (
- typeid (gday),
- qualified_name (bits::gday<C> (), xsd),
- &inserter_impl<S, gday>,
- false);
-
- typedef gmonth<C, simple_type> gmonth;
- register_type (
- typeid (gmonth),
- qualified_name (bits::gmonth<C> (), xsd),
- &inserter_impl<S, gmonth>,
- false);
-
- typedef gyear<C, simple_type> gyear;
- register_type (
- typeid (gyear),
- qualified_name (bits::gyear<C> (), xsd),
- &inserter_impl<S, gyear>,
- false);
-
- typedef gmonth_day<C, simple_type> gmonth_day;
- register_type (
- typeid (gmonth_day),
- qualified_name (bits::gmonth_day<C> (), xsd),
- &inserter_impl<S, gmonth_day>,
- false);
-
- typedef gyear_month<C, simple_type> gyear_month;
- register_type (
- typeid (gyear_month),
- qualified_name (bits::gyear_month<C> (), xsd),
- &inserter_impl<S, gyear_month>,
- false);
-
- typedef date<C, simple_type> date;
- register_type (
- typeid (date),
- qualified_name (bits::date<C> (), xsd),
- &inserter_impl<S, date>,
- false);
-
- typedef time<C, simple_type> time;
- register_type (
- typeid (time),
- qualified_name (bits::time<C> (), xsd),
- &inserter_impl<S, time>,
- false);
-
- typedef date_time<C, simple_type> date_time;
- register_type (
- typeid (date_time),
- qualified_name (bits::date_time<C> (), xsd),
- &inserter_impl<S, date_time>,
- false);
-
- typedef duration<C, simple_type> duration;
- register_type (
- typeid (duration),
- qualified_name (bits::duration<C> (), xsd),
- &inserter_impl<S, duration>,
- false);
-
-
- // Entity.
- //
- typedef entity<C, ncname> entity;
- register_type (
- typeid (entity),
- qualified_name (bits::entity<C> (), xsd),
- &inserter_impl<S, entity>,
- false);
-
- typedef entities<C, simple_type, entity> entities;
- register_type (
- typeid (entities),
- qualified_name (bits::entities<C> (), xsd),
- &inserter_impl<S, entities>,
- false);
- }
-
- template <typename S, typename C>
- void stream_insertion_map<S, C>::
- register_type (const type_id& tid,
- const qualified_name& name,
- inserter i,
- bool replace)
- {
- if (replace || type_map_.find (&tid) == type_map_.end ())
- type_map_[&tid] = type_info (name, i);
- }
-
- template <typename S, typename C>
- void stream_insertion_map<S, C>::
- unregister_type (const type_id& tid)
- {
- type_map_.erase (&tid);
- }
-
- template <typename S, typename C>
- void stream_insertion_map<S, C>::
- insert (ostream<S>& s, const type& x)
- {
- if (const type_info* ti = find (typeid (x)))
- {
- const qualified_name& qn (ti->name ());
-
- // Pool the namespace and name strings.
- //
- const std::basic_string<C>& ns (qn.namespace_ ());
- const std::basic_string<C>& n (qn.name ());
-
- std::size_t ns_id (s.pool_string (ns));
- std::size_t n_id (s.pool_string (n));
-
- s << ostream_common::as_size<std::size_t> (ns_id);
-
- if (ns_id == 0)
- s << ns;
-
- s << ostream_common::as_size<std::size_t> (n_id);
-
- if (n_id == 0)
- s << n;
-
- ti->inserter () (s, x);
- }
- else
- throw no_type_info<C> (std::basic_string<C> (),
- std::basic_string<C> ()); // @@ TODO
- }
-
- template <typename S, typename C>
- const typename stream_insertion_map<S, C>::type_info*
- stream_insertion_map<S, C>::
- find (const type_id& tid) const
- {
- typename type_map::const_iterator i (type_map_.find (&tid));
- return i == type_map_.end () ? 0 : &i->second;
- }
-
-
- // stream_insertion_plate
- //
- template<unsigned long id, typename S, typename C>
- stream_insertion_plate<id, S, C>::
- stream_insertion_plate ()
- {
- if (count == 0)
- map = new stream_insertion_map<S, C>;
-
- ++count;
- }
-
- template<unsigned long id, typename S, typename C>
- stream_insertion_plate<id, S, C>::
- ~stream_insertion_plate ()
- {
- if (--count == 0)
- delete map;
- }
-
- //
- //
- template<typename S, typename T>
- void
- inserter_impl (ostream<S>& s, const type& x)
- {
- s << static_cast<const T&> (x);
- }
-
- // stream_insertion_initializer
- //
- template<unsigned long id, typename S, typename C, typename T>
- stream_insertion_initializer<id, S, C, T>::
- stream_insertion_initializer (const C* name, const C* ns)
- {
- stream_insertion_map_instance<id, S, C> ().register_type (
- typeid (T),
- xml::qualified_name<C> (name, ns),
- &inserter_impl<S, T>);
- }
-
- template<unsigned long id, typename S, typename C, typename T>
- stream_insertion_initializer<id, S, C, T>::
- ~stream_insertion_initializer ()
- {
- stream_insertion_map_instance<id, S, C> ().unregister_type (
- typeid (T));
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/stream-insertion.hxx b/xsd/libxsd/xsd/cxx/tree/stream-insertion.hxx
deleted file mode 100644
index b04846f..0000000
--- a/xsd/libxsd/xsd/cxx/tree/stream-insertion.hxx
+++ /dev/null
@@ -1,276 +0,0 @@
-// file : xsd/cxx/tree/stream-insertion.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_STREAM_INSERTION_HXX
-#define XSD_CXX_TREE_STREAM_INSERTION_HXX
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/list.hxx>
-
-#include <xsd/cxx/tree/ostream.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // type
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, const type&)
- {
- // Not saving DOM content even if it's there.
- return s;
- }
-
- // simple_type
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const simple_type<C, B>& x)
- {
- if (!x.null_content ())
- s << x.text_content ();
-
- return s;
- }
-
- // fundamental_base
- //
- template <typename S,
- typename T,
- typename C,
- typename B,
- schema_type::value ST>
- inline ostream<S>&
- operator<< (ostream<S>& s, const fundamental_base<T, C, B, ST>& x)
- {
- const T& r (x);
- return s << r;
- }
-
- // list
- //
- template <typename S,
- typename T,
- typename C,
- schema_type::value ST,
- bool fund>
- ostream<S>&
- operator<< (ostream<S>& s, const list<T, C, ST, fund>& x)
- {
- s << ostream_common::as_size<std::size_t> (x.size ());
-
- for (typename list<T, C, ST, fund>::const_iterator
- i (x.begin ()), e (x.end ()); i != e; ++i)
- {
- s << *i;
- }
-
- return s;
- }
-
-
- // Insertion operators for built-in types.
- //
-
-
- // string
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const string<C, B>& x)
- {
- const std::basic_string<C>& r (x);
- return s << r;
- }
-
-
- // normalized_string
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const normalized_string<C, B>& x)
- {
- const B& r (x);
- return s << r;
- }
-
-
- // token
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const token<C, B>& x)
- {
- const B& r (x);
- return s << r;
- }
-
-
- // nmtoken
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const nmtoken<C, B>& x)
- {
- const B& r (x);
- return s << r;
- }
-
-
- // nmtokens
- //
- template <typename S, typename C, typename B, typename nmtoken>
- inline ostream<S>&
- operator<< (ostream<S>& s, const nmtokens<C, B, nmtoken>& x)
- {
- const list<nmtoken, C>& r (x);
- return s << r;
- }
-
-
- // name
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const name<C, B>& x)
- {
- const B& r (x);
- return s << r;
- }
-
-
- // ncname
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const ncname<C, B>& x)
- {
- const B& r (x);
- return s << r;
- }
-
-
- // language
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const language<C, B>& x)
- {
- const std::basic_string<C>& r (x);
- return s << r;
- }
-
-
- // id
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const id<C, B>& x)
- {
- const std::basic_string<C>& r (x);
- return s << r;
- }
-
-
- // idref
- //
- template <typename S, typename C, typename B, typename T>
- inline ostream<S>&
- operator<< (ostream<S>& s, const idref<C, B, T>& x)
- {
- const B& r (x);
- return s << r;
- }
-
-
- // idrefs
- //
- template <typename S, typename C, typename B, typename idref>
- inline ostream<S>&
- operator<< (ostream<S>& s, const idrefs<C, B, idref>& x)
- {
- const list<idref, C>& r (x);
- return s << r;
- }
-
-
- // uri
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const uri<C, B>& x)
- {
- const std::basic_string<C>& r (x);
- return s << r;
- }
-
-
- // qname
- //
- template <typename S,
- typename C,
- typename B,
- typename uri,
- typename ncname>
- inline ostream<S>&
- operator<< (ostream<S>& s, const qname<C, B, uri, ncname>& x)
- {
- return s << x.namespace_ () << x.name ();
- }
-
-
- // base64_binary
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const base64_binary<C, B>& x)
- {
- const buffer<C>& r (x);
- return s << r;
- }
-
-
- // hex_binary
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const hex_binary<C, B>& x)
- {
- const buffer<C>& r (x);
- return s << r;
- }
-
-
- // entity
- //
- template <typename S, typename C, typename B>
- inline ostream<S>&
- operator<< (ostream<S>& s, const entity<C, B>& x)
- {
- const B& r (x);
- return s << r;
- }
-
-
- // entities
- //
- template <typename S, typename C, typename B, typename entity>
- inline ostream<S>&
- operator<< (ostream<S>& s, const entities<C, B, entity>& x)
- {
- const list<entity, C>& r (x);
- return s << r;
- }
- }
- }
-}
-
-#include <xsd/cxx/tree/date-time-insertion.txx>
-
-#endif // XSD_CXX_TREE_STREAM_INSERTION_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/text.hxx b/xsd/libxsd/xsd/cxx/tree/text.hxx
deleted file mode 100644
index 8808787..0000000
--- a/xsd/libxsd/xsd/cxx/tree/text.hxx
+++ /dev/null
@@ -1,29 +0,0 @@
-// file : xsd/cxx/tree/text.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_TEXT_HXX
-#define XSD_CXX_TREE_TEXT_HXX
-
-#include <string>
-
-#include <xercesc/dom/DOMElement.hpp>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // Throws expected_text_content.
- //
- template <typename C>
- std::basic_string<C>
- text_content (const xercesc::DOMElement&);
- }
- }
-}
-
-#include <xsd/cxx/tree/text.txx>
-
-#endif // XSD_CXX_TREE_TEXT_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/text.txx b/xsd/libxsd/xsd/cxx/tree/text.txx
deleted file mode 100644
index 6764d5c..0000000
--- a/xsd/libxsd/xsd/cxx/tree/text.txx
+++ /dev/null
@@ -1,62 +0,0 @@
-// file : xsd/cxx/tree/text.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xercesc/dom/DOMText.hpp>
-
-#include <xsd/cxx/xml/string.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- std::basic_string<C>
- text_content (const xercesc::DOMElement& e)
- {
- using xercesc::DOMNode;
- using xercesc::DOMText;
-
- DOMNode* n (e.getFirstChild ());
-
- // Fast path.
- //
- if (n != 0 &&
- n->getNodeType () == DOMNode::TEXT_NODE &&
- n->getNextSibling () == 0)
- {
- DOMText* t (static_cast<DOMText*> (n));
- return xml::transcode<C> (t->getData (), t->getLength ());
- }
-
- std::basic_string<C> r;
-
- for (; n != 0; n = n->getNextSibling ())
- {
- switch (n->getNodeType ())
- {
- case DOMNode::TEXT_NODE:
- case DOMNode::CDATA_SECTION_NODE:
- {
- DOMText* t (static_cast<DOMText*> (n));
- r += xml::transcode<C> (t->getData (), t->getLength ());
- break;
- }
- case DOMNode::ELEMENT_NODE:
- {
- throw expected_text_content<C> ();
- }
- default:
- break; // ignore
- }
- }
-
- return r;
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/type-factory-map.hxx b/xsd/libxsd/xsd/cxx/tree/type-factory-map.hxx
deleted file mode 100644
index b2558c7..0000000
--- a/xsd/libxsd/xsd/cxx/tree/type-factory-map.hxx
+++ /dev/null
@@ -1,174 +0,0 @@
-// file : xsd/cxx/tree/type-factory-map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_TYPE_FACTORY_MAP_HXX
-#define XSD_CXX_TREE_TYPE_FACTORY_MAP_HXX
-
-#include <map>
-#include <string>
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cstddef> // std::size_t
-
-#include <xercesc/dom/DOMElement.hpp>
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/xml/qualified-name.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct type_factory_map
- {
- typedef xml::qualified_name<C> qualified_name;
- typedef XSD_AUTO_PTR<type> (*factory) (const xercesc::DOMElement&,
- flags,
- container*);
- public:
- type_factory_map ();
-
- void
- register_type (const qualified_name& name,
- factory,
- bool replace = true);
-
- void
- unregister_type (const qualified_name& name);
-
- void
- register_element (const qualified_name& root,
- const qualified_name& subst,
- factory);
-
- void
- unregister_element (const qualified_name& root,
- const qualified_name& subst);
-
- XSD_AUTO_PTR<type>
- create (const C* name, // element name
- const C* ns, // element namespace
- factory static_type,
- bool global,
- bool qualified,
- const xercesc::DOMElement&,
- const qualified_name&,
- flags,
- container*) const;
-
- public:
- factory
- find (const qualified_name& name) const;
-
- private:
- template <typename T>
- static XSD_AUTO_PTR<type>
- traits_adapter (const xercesc::DOMElement&, flags, container*);
-
- private:
- typedef
- std::map<qualified_name, factory>
- type_map;
-
- // Map of (root-element to map of (subst-element to factory)).
- //
- typedef
- std::map<qualified_name, factory>
- subst_map;
-
- typedef
- std::map<qualified_name, subst_map>
- element_map;
-
- type_map type_map_;
- element_map element_map_;
-
- private:
- factory
- find_substitution (const subst_map& start,
- const qualified_name& name) const;
-
- // The name argument is as specified in xsi:type.
- //
- factory
- find_type (const std::basic_string<C>& name,
- const xercesc::DOMElement&) const;
- };
-
-
- //
- //
- template<unsigned long id, typename C>
- struct type_factory_plate
- {
- static type_factory_map<C>* map;
- static std::size_t count;
-
- type_factory_plate ();
- ~type_factory_plate ();
- };
-
- template<unsigned long id, typename C>
- type_factory_map<C>* type_factory_plate<id, C>::map = 0;
-
- template<unsigned long id, typename C>
- std::size_t type_factory_plate<id, C>::count = 0;
-
-
- //
- //
- template<unsigned long id, typename C>
- inline type_factory_map<C>&
- type_factory_map_instance ()
- {
- return *type_factory_plate<id, C>::map;
- }
-
-
- //
- //
- template<typename T>
- XSD_AUTO_PTR<type>
- factory_impl (const xercesc::DOMElement&, flags, container*);
-
- //
- //
- template<unsigned long id, typename C, typename T>
- struct type_factory_initializer
- {
- type_factory_initializer (const C* name, const C* ns);
- ~type_factory_initializer ();
-
- private:
- const C* name_;
- const C* ns_;
- };
-
- //
- //
- template<unsigned long id, typename C, typename T>
- struct element_factory_initializer
- {
- element_factory_initializer (const C* root_name, const C* root_ns,
- const C* subst_name, const C* subst_ns);
-
- ~element_factory_initializer ();
-
- private:
- const C* root_name_;
- const C* root_ns_;
- const C* subst_name_;
- const C* subst_ns_;
- };
- }
- }
-}
-
-#include <xsd/cxx/tree/type-factory-map.txx>
-
-#endif // XSD_CXX_TREE_TYPE_FACTORY_MAP_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/type-factory-map.txx b/xsd/libxsd/xsd/cxx/tree/type-factory-map.txx
deleted file mode 100644
index e1fe0cc..0000000
--- a/xsd/libxsd/xsd/cxx/tree/type-factory-map.txx
+++ /dev/null
@@ -1,479 +0,0 @@
-// file : xsd/cxx/tree/type-factory-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xercesc/validators/schema/SchemaSymbols.hpp>
-
-#include <xsd/cxx/xml/string.hxx> // xml::{string, transcode}
-#include <xsd/cxx/xml/elements.hxx> // xml::{prefix, uq_name}
-#include <xsd/cxx/xml/bits/literals.hxx> // xml::bits::{xml_namespace, etc}
-
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // type_factory_map
- //
- template <typename C>
- type_factory_map<C>::
- type_factory_map ()
- {
- // Register factories for default instantiations of built-in,
- // non-fundamental types.
- //
-
- std::basic_string<C> xsd (bits::xml_schema<C> ());
-
-
- // anyType and anySimpleType.
- //
- register_type (
- qualified_name (bits::any_type<C> (), xsd),
- &factory_impl<type>,
- false);
-
- typedef simple_type<C, type> simple_type;
- register_type (
- qualified_name (bits::any_simple_type<C> (), xsd),
- &factory_impl<simple_type>,
- false);
-
-
- // Strings
- //
- typedef string<C, simple_type> string;
- register_type (
- qualified_name (bits::string<C> (), xsd),
- &factory_impl<string>,
- false);
-
- typedef normalized_string<C, string> normalized_string;
- register_type (
- qualified_name (bits::normalized_string<C> (), xsd),
- &factory_impl<normalized_string>,
- false);
-
- typedef token<C, normalized_string> token;
- register_type (
- qualified_name (bits::token<C> (), xsd),
- &factory_impl<token>,
- false);
-
- typedef name<C, token> name;
- register_type (
- qualified_name (bits::name<C> (), xsd),
- &factory_impl<name>,
- false);
-
- typedef nmtoken<C, token> nmtoken;
- register_type (
- qualified_name (bits::nmtoken<C> (), xsd),
- &factory_impl<nmtoken>,
- false);
-
- typedef nmtokens<C, simple_type, nmtoken> nmtokens;
- register_type (
- qualified_name (bits::nmtokens<C> (), xsd),
- &factory_impl<nmtokens>,
- false);
-
- typedef ncname<C, name> ncname;
- register_type (
- qualified_name (bits::ncname<C> (), xsd),
- &factory_impl<ncname>,
- false);
-
- typedef language<C, token> language;
- register_type (
- qualified_name (bits::language<C> (), xsd),
- &factory_impl<language>,
- false);
-
-
- // ID/IDREF.
- //
- typedef id<C, ncname> id;
- register_type (
- qualified_name (bits::id<C> (), xsd),
- &factory_impl<id>,
- false);
-
- typedef idref<C, ncname, type> idref;
- register_type (
- qualified_name (bits::idref<C> (), xsd),
- &factory_impl<idref>,
- false);
-
- typedef idrefs<C, simple_type, idref> idrefs;
- register_type (
- qualified_name (bits::idrefs<C> (), xsd),
- &factory_impl<idrefs>,
- false);
-
-
- // URI.
- //
- typedef uri<C, simple_type> uri;
- register_type (
- qualified_name (bits::any_uri<C> (), xsd),
- &factory_impl<uri>,
- false);
-
-
- // Qualified name.
- //
- typedef qname<C, simple_type, uri, ncname> qname;
- register_type (
- qualified_name (bits::qname<C> (), xsd),
- &factory_impl<qname>,
- false);
-
-
- // Binary.
- //
- typedef base64_binary<C, simple_type> base64_binary;
- register_type (
- qualified_name (bits::base64_binary<C> (), xsd),
- &factory_impl<base64_binary>,
- false);
-
- typedef hex_binary<C, simple_type> hex_binary;
- register_type (
- qualified_name (bits::hex_binary<C> (), xsd),
- &factory_impl<hex_binary>,
- false);
-
-
- // Date/time.
- //
- typedef gday<C, simple_type> gday;
- register_type (
- qualified_name (bits::gday<C> (), xsd),
- &factory_impl<gday>,
- false);
-
- typedef gmonth<C, simple_type> gmonth;
- register_type (
- qualified_name (bits::gmonth<C> (), xsd),
- &factory_impl<gmonth>,
- false);
-
- typedef gyear<C, simple_type> gyear;
- register_type (
- qualified_name (bits::gyear<C> (), xsd),
- &factory_impl<gyear>,
- false);
-
- typedef gmonth_day<C, simple_type> gmonth_day;
- register_type (
- qualified_name (bits::gmonth_day<C> (), xsd),
- &factory_impl<gmonth_day>,
- false);
-
- typedef gyear_month<C, simple_type> gyear_month;
- register_type (
- qualified_name (bits::gyear_month<C> (), xsd),
- &factory_impl<gyear_month>,
- false);
-
- typedef date<C, simple_type> date;
- register_type (
- qualified_name (bits::date<C> (), xsd),
- &factory_impl<date>,
- false);
-
- typedef time<C, simple_type> time;
- register_type (
- qualified_name (bits::time<C> (), xsd),
- &factory_impl<time>,
- false);
-
- typedef date_time<C, simple_type> date_time;
- register_type (
- qualified_name (bits::date_time<C> (), xsd),
- &factory_impl<date_time>,
- false);
-
- typedef duration<C, simple_type> duration;
- register_type (
- qualified_name (bits::duration<C> (), xsd),
- &factory_impl<duration>,
- false);
-
-
- // Entity.
- //
- typedef entity<C, ncname> entity;
- register_type (
- qualified_name (bits::entity<C> (), xsd),
- &factory_impl<entity>,
- false);
-
- typedef entities<C, simple_type, entity> entities;
- register_type (
- qualified_name (bits::entities<C> (), xsd),
- &factory_impl<entities>,
- false);
- }
-
- template <typename C>
- void type_factory_map<C>::
- register_type (const qualified_name& name,
- factory f,
- bool replace)
- {
- if (replace || type_map_.find (name) == type_map_.end ())
- type_map_[name] = f;
- }
-
- template <typename C>
- void type_factory_map<C>::
- unregister_type (const qualified_name& name)
- {
- type_map_.erase (name);
- }
-
- template <typename C>
- void type_factory_map<C>::
- register_element (const qualified_name& root,
- const qualified_name& subst,
- factory f)
- {
- element_map_[root][subst] = f;
- }
-
- template <typename C>
- void type_factory_map<C>::
- unregister_element (const qualified_name& root,
- const qualified_name& subst)
- {
- typename element_map::iterator i (element_map_.find (root));
-
- if (i != element_map_.end ())
- {
- i->second.erase (subst);
-
- if (i->second.empty ())
- element_map_.erase (i);
- }
- }
-
- template <typename C>
- typename type_factory_map<C>::factory type_factory_map<C>::
- find (const qualified_name& name) const
- {
- typename type_map::const_iterator i (type_map_.find (name));
- return i == type_map_.end () ? 0 : i->second;
- }
-
- template <typename C>
- XSD_AUTO_PTR<type> type_factory_map<C>::
- create (const C* name,
- const C* ns,
- factory static_type,
- bool global,
- bool qualified,
- const xercesc::DOMElement& e,
- const qualified_name& qn,
- tree::flags flags,
- container* c) const
- {
- factory f = 0;
-
- // See if we've got a straight match.
- //
- if (qn.name () == name &&
- (qualified ? qn.namespace_ () == ns : ns[0] == C ('\0')))
- {
- f = static_type;
- }
- else if (global)
- {
- // See if we have a substitution.
- //
- typename element_map::const_iterator i (
- element_map_.find (qualified_name (name, ns)));
-
- if (i != element_map_.end ())
- {
- f = find_substitution (i->second, qn);
- }
- }
-
- if (f == 0)
- return XSD_AUTO_PTR<type> (); // No match.
-
- // Check for xsi:type
- //
- {
- const XMLCh* v (
- e.getAttributeNS (
- xercesc::SchemaSymbols::fgURI_XSI,
- xercesc::SchemaSymbols::fgXSI_TYPE));
-
- if (v != 0 && v[0] != XMLCh (0))
- f = find_type (xml::transcode<C> (v), e);
- }
-
- return f (e, flags, c);
- }
-
- template <typename C>
- template <typename T>
- XSD_AUTO_PTR<type> type_factory_map<C>::
- traits_adapter (const xercesc::DOMElement& e, flags f, container* c)
- {
- return XSD_AUTO_PTR<type> (traits<T, C>::create (e, f, c));
- }
-
- template <typename C>
- typename type_factory_map<C>::factory type_factory_map<C>::
- find_substitution (const subst_map& start,
- const qualified_name& name) const
- {
- typename subst_map::const_iterator i (start.find (name));
-
- if (i != start.end ())
- return i->second;
- else
- {
- for (i = start.begin (); i != start.end (); ++i)
- {
- typename element_map::const_iterator j (
- element_map_.find (i->first));
-
- if (j != element_map_.end ())
- {
- if (factory f = find_substitution (j->second, name))
- return f;
- }
- }
- }
-
- return 0;
- }
-
- template <typename C>
- typename type_factory_map<C>::factory type_factory_map<C>::
- find_type (const std::basic_string<C>& name,
- const xercesc::DOMElement& e) const
- {
- using std::basic_string;
-
- basic_string<C> ns_name, uq_name (xml::uq_name (name));
-
- // Copied with modifications from xml/dom/elements.hxx.
- //
- std::basic_string<C> p (xml::prefix (name));
-
- // 'xml' prefix requires special handling and Xerces folks refuse
- // to handle this in DOM so I have to do it myself.
- //
- if (p == xml::bits::xml_prefix<C> ())
- ns_name = xml::bits::xml_namespace<C> ();
- else
- {
- const XMLCh* xns (
- e.lookupNamespaceURI (
- p.empty () ? 0 : xml::string (p).c_str ()));
-
- if (xns != 0)
- ns_name = xml::transcode<C> (xns);
- else
- {
- // See if we've got any no-namespace types.
- //
- if (!p.empty ())
- throw no_prefix_mapping<C> (p);
- }
- }
-
- factory f (find (qualified_name (uq_name, ns_name)));
-
- if (f == 0)
- throw no_type_info<C> (uq_name, ns_name);
-
- return f;
- }
-
-
- // type_factory_plate
- //
- template<unsigned long id, typename C>
- type_factory_plate<id, C>::
- type_factory_plate ()
- {
- if (count == 0)
- map = new type_factory_map<C>;
-
- ++count;
- }
-
- template<unsigned long id, typename C>
- type_factory_plate<id, C>::
- ~type_factory_plate ()
- {
- if (--count == 0)
- delete map;
- }
-
-
- //
- //
- template<typename T>
- XSD_AUTO_PTR<type>
- factory_impl (const xercesc::DOMElement& e, flags f, container* c)
- {
- return XSD_AUTO_PTR<type> (new T (e, f, c));
- }
-
- //
- //
- template<unsigned long id, typename C, typename T>
- type_factory_initializer<id, C, T>::
- type_factory_initializer (const C* name, const C* ns)
- : name_ (name), ns_ (ns)
- {
- type_factory_map_instance<id, C> ().register_type (
- xml::qualified_name<C> (name, ns), &factory_impl<T>);
- }
-
- template<unsigned long id, typename C, typename T>
- type_factory_initializer<id, C, T>::
- ~type_factory_initializer ()
- {
- type_factory_map_instance<id, C> ().unregister_type (
- xml::qualified_name<C> (name_, ns_));
- }
-
- //
- //
- template<unsigned long id, typename C, typename T>
- element_factory_initializer<id, C, T>::
- element_factory_initializer (const C* root_name, const C* root_ns,
- const C* subst_name, const C* subst_ns)
- : root_name_ (root_name), root_ns_ (root_ns),
- subst_name_ (subst_name), subst_ns_ (subst_ns)
- {
- type_factory_map_instance<id, C> ().register_element (
- xml::qualified_name<C> (root_name, root_ns),
- xml::qualified_name<C> (subst_name, subst_ns),
- &factory_impl<T>);
- }
-
- template<unsigned long id, typename C, typename T>
- element_factory_initializer<id, C, T>::
- ~element_factory_initializer ()
- {
- type_factory_map_instance<id, C> ().unregister_element (
- xml::qualified_name<C> (root_name_, root_ns_),
- xml::qualified_name<C> (subst_name_, subst_ns_));
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/type-serializer-map.hxx b/xsd/libxsd/xsd/cxx/tree/type-serializer-map.hxx
deleted file mode 100644
index f461b7d..0000000
--- a/xsd/libxsd/xsd/cxx/tree/type-serializer-map.hxx
+++ /dev/null
@@ -1,235 +0,0 @@
-// file : xsd/cxx/tree/type-serializer-map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_TYPE_SERIALIZER_MAP_HXX
-#define XSD_CXX_TREE_TYPE_SERIALIZER_MAP_HXX
-
-#include <map>
-#include <string>
-#include <cstddef> // std::size_t
-#include <typeinfo>
-
-#include <xercesc/dom/DOMElement.hpp>
-
-#include <xsd/cxx/tree/elements.hxx>
-
-#include <xsd/cxx/xml/qualified-name.hxx>
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-#include <xsd/cxx/xml/dom/serialization-header.hxx> // namespace_infomap
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- template <typename C>
- struct type_serializer_map
- {
- typedef std::type_info type_id;
- typedef xml::qualified_name<C> qualified_name;
- typedef void (*serializer) (xercesc::DOMElement&, const type&);
-
- void
- register_type (const type_id&,
- const qualified_name& name,
- serializer,
- bool replace = true);
-
- void
- unregister_type (const type_id&);
-
- void
- register_element (const qualified_name& root,
- const qualified_name& subst,
- const type_id&,
- serializer);
-
- void
- unregister_element (const qualified_name& root, const type_id&);
-
- public:
- void
- serialize (const C* name, // element name
- const C* ns, // element namespace
- bool global,
- bool qualified,
- xercesc::DOMElement& parent,
- const type&) const;
-
- // Serialize into existing element.
- //
- void
- serialize (const C* static_name,
- const C* static_ns,
- xercesc::DOMElement&,
- const qualified_name&,
- const type&) const;
-
- // Create DOMDocument with root element suitable for serializing
- // x into it.
- //
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- serialize (const C* name, // element name
- const C* ns, // element namespace
- const xml::dom::namespace_infomap<C>&,
- const type& x,
- unsigned long flags) const;
-
- public:
- type_serializer_map ();
-
- public:
- struct type_info
- {
- type_info (const qualified_name& name,
- typename type_serializer_map::serializer serializer)
- : name_ (name), serializer_ (serializer)
- {
- }
-
- const qualified_name&
- name () const
- {
- return name_;
- }
-
- typename type_serializer_map::serializer
- serializer () const
- {
- return serializer_;
- }
-
- // For std::map.
- //
- type_info ()
- : name_ (std::basic_string<C> (), std::basic_string<C> ()),
- serializer_ (0)
- {
- }
-
- private:
- qualified_name name_;
- typename type_serializer_map::serializer serializer_;
- };
-
- public:
- const type_info*
- find (const type_id&) const;
-
- private:
- struct type_id_comparator
- {
- bool
- operator() (const type_id* x, const type_id* y) const
- {
- // XL C++ on AIX has buggy type_info::before() in that
- // it returns true for two different type_info objects
- // that happened to be for the same type.
- //
-#if defined(__xlC__) && defined(_AIX)
- return *x != *y && x->before (*y);
-#else
- return x->before (*y);
-#endif
- }
- };
-
- typedef
- std::map<const type_id*, type_info, type_id_comparator>
- type_map;
-
- // Map of (root-element to map of (type_id to type_info)).
- // Note that here type_info::name is element name.
- //
- typedef
- std::map<const type_id*, type_info, type_id_comparator>
- subst_map;
-
- typedef
- std::map<qualified_name, subst_map>
- element_map;
-
- type_map type_map_;
- element_map element_map_;
-
- private:
- const type_info*
- find_substitution (const subst_map& start, const type_id&) const;
-
- // Sets an xsi:type attribute corresponding to the type_info.
- //
- void
- set_xsi_type (xercesc::DOMElement& parent,
- xercesc::DOMElement&,
- const type_info&) const;
- };
-
-
- //
- //
- template<unsigned long id, typename C>
- struct type_serializer_plate
- {
- static type_serializer_map<C>* map;
- static std::size_t count;
-
- type_serializer_plate ();
- ~type_serializer_plate ();
- };
-
- template<unsigned long id, typename C>
- type_serializer_map<C>* type_serializer_plate<id, C>::map = 0;
-
- template<unsigned long id, typename C>
- std::size_t type_serializer_plate<id, C>::count = 0;
-
-
- //
- //
- template<unsigned long id, typename C>
- inline type_serializer_map<C>&
- type_serializer_map_instance ()
- {
- return *type_serializer_plate<id, C>::map;
- }
-
- //
- //
- template<typename T>
- void
- serializer_impl (xercesc::DOMElement&, const type&);
-
-
- //
- //
- template<unsigned long id, typename C, typename T>
- struct type_serializer_initializer
- {
- type_serializer_initializer (const C* name, const C* ns);
- ~type_serializer_initializer ();
- };
-
-
- //
- //
- template<unsigned long id, typename C, typename T>
- struct element_serializer_initializer
- {
- element_serializer_initializer (const C* root_name, const C* root_ns,
- const C* subst_name, const C* subst_ns);
-
- ~element_serializer_initializer ();
-
- private:
- const C* root_name_;
- const C* root_ns_;
- };
- }
- }
-}
-
-#include <xsd/cxx/tree/type-serializer-map.txx>
-
-#endif // XSD_CXX_TREE_TYPE_SERIALIZER_MAP_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/type-serializer-map.txx b/xsd/libxsd/xsd/cxx/tree/type-serializer-map.txx
deleted file mode 100644
index 44a2204..0000000
--- a/xsd/libxsd/xsd/cxx/tree/type-serializer-map.txx
+++ /dev/null
@@ -1,573 +0,0 @@
-// file : xsd/cxx/tree/type-serializer-map.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xercesc/util/XMLUni.hpp>
-#include <xercesc/validators/schema/SchemaSymbols.hpp>
-
-#include <xsd/cxx/xml/bits/literals.hxx> // xml::bits::{xsi_namespace, type}
-#include <xsd/cxx/xml/dom/serialization-source.hxx> // dom::{create_*, prefix}
-
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // type_serializer_map
- //
- template <typename C>
- type_serializer_map<C>::
- type_serializer_map ()
- {
- // Register serializers for built-in non-fundamental types.
- //
- std::basic_string<C> xsd (bits::xml_schema<C> ());
-
-
- // anyType and anySimpleType.
- //
- register_type (
- typeid (type),
- qualified_name (bits::any_type<C> (), xsd),
- &serializer_impl<type>,
- false);
-
- typedef simple_type<C, type> simple_type;
- register_type (
- typeid (simple_type),
- qualified_name (bits::any_simple_type<C> (), xsd),
- &serializer_impl<simple_type>,
- false);
-
-
- // Strings
- //
- typedef string<C, simple_type> string;
- register_type (
- typeid (string),
- qualified_name (bits::string<C> (), xsd),
- &serializer_impl<string>,
- false);
-
- typedef normalized_string<C, string> normalized_string;
- register_type (
- typeid (normalized_string),
- qualified_name (bits::normalized_string<C> (), xsd),
- &serializer_impl<normalized_string>,
- false);
-
- typedef token<C, normalized_string> token;
- register_type (
- typeid (token),
- qualified_name (bits::token<C> (), xsd),
- &serializer_impl<token>,
- false);
-
- typedef name<C, token> name;
- register_type (
- typeid (name),
- qualified_name (bits::name<C> (), xsd),
- &serializer_impl<name>,
- false);
-
- typedef nmtoken<C, token> nmtoken;
- register_type (
- typeid (nmtoken),
- qualified_name (bits::nmtoken<C> (), xsd),
- &serializer_impl<nmtoken>,
- false);
-
- typedef nmtokens<C, simple_type, nmtoken> nmtokens;
- register_type (
- typeid (nmtokens),
- qualified_name (bits::nmtokens<C> (), xsd),
- &serializer_impl<nmtokens>,
- false);
-
- typedef ncname<C, name> ncname;
- register_type (
- typeid (ncname),
- qualified_name (bits::ncname<C> (), xsd),
- &serializer_impl<ncname>,
- false);
-
- typedef language<C, token> language;
- register_type (
- typeid (language),
- qualified_name (bits::language<C> (), xsd),
- &serializer_impl<language>,
- false);
-
-
- // ID/IDREF.
- //
- typedef id<C, ncname> id;
- register_type (
- typeid (id),
- qualified_name (bits::id<C> (), xsd),
- &serializer_impl<id>,
- false);
-
- typedef idref<C, ncname, type> idref;
- register_type (
- typeid (idref),
- qualified_name (bits::idref<C> (), xsd),
- &serializer_impl<idref>,
- false);
-
- typedef idrefs<C, simple_type, idref> idrefs;
- register_type (
- typeid (idrefs),
- qualified_name (bits::idrefs<C> (), xsd),
- &serializer_impl<idrefs>,
- false);
-
-
- // URI.
- //
- typedef uri<C, simple_type> uri;
- register_type (
- typeid (uri),
- qualified_name (bits::any_uri<C> (), xsd),
- &serializer_impl<uri>,
- false);
-
-
- // Qualified name.
- //
- typedef qname<C, simple_type, uri, ncname> qname;
- register_type (
- typeid (qname),
- qualified_name (bits::qname<C> (), xsd),
- &serializer_impl<qname>,
- false);
-
-
- // Binary.
- //
- typedef base64_binary<C, simple_type> base64_binary;
- register_type (
- typeid (base64_binary),
- qualified_name (bits::base64_binary<C> (), xsd),
- &serializer_impl<base64_binary>,
- false);
-
- typedef hex_binary<C, simple_type> hex_binary;
- register_type (
- typeid (hex_binary),
- qualified_name (bits::hex_binary<C> (), xsd),
- &serializer_impl<hex_binary>,
- false);
-
-
- // Date/time.
- //
- typedef gday<C, simple_type> gday;
- register_type (
- typeid (gday),
- qualified_name (bits::gday<C> (), xsd),
- &serializer_impl<gday>,
- false);
-
- typedef gmonth<C, simple_type> gmonth;
- register_type (
- typeid (gmonth),
- qualified_name (bits::gmonth<C> (), xsd),
- &serializer_impl<gmonth>,
- false);
-
- typedef gyear<C, simple_type> gyear;
- register_type (
- typeid (gyear),
- qualified_name (bits::gyear<C> (), xsd),
- &serializer_impl<gyear>,
- false);
-
- typedef gmonth_day<C, simple_type> gmonth_day;
- register_type (
- typeid (gmonth_day),
- qualified_name (bits::gmonth_day<C> (), xsd),
- &serializer_impl<gmonth_day>,
- false);
-
- typedef gyear_month<C, simple_type> gyear_month;
- register_type (
- typeid (gyear_month),
- qualified_name (bits::gyear_month<C> (), xsd),
- &serializer_impl<gyear_month>,
- false);
-
- typedef date<C, simple_type> date;
- register_type (
- typeid (date),
- qualified_name (bits::date<C> (), xsd),
- &serializer_impl<date>,
- false);
-
- typedef time<C, simple_type> time;
- register_type (
- typeid (time),
- qualified_name (bits::time<C> (), xsd),
- &serializer_impl<time>,
- false);
-
- typedef date_time<C, simple_type> date_time;
- register_type (
- typeid (date_time),
- qualified_name (bits::date_time<C> (), xsd),
- &serializer_impl<date_time>,
- false);
-
- typedef duration<C, simple_type> duration;
- register_type (
- typeid (duration),
- qualified_name (bits::duration<C> (), xsd),
- &serializer_impl<duration>,
- false);
-
-
- // Entity.
- //
- typedef entity<C, ncname> entity;
- register_type (
- typeid (entity),
- qualified_name (bits::entity<C> (), xsd),
- &serializer_impl<entity>,
- false);
-
- typedef entities<C, simple_type, entity> entities;
- register_type (
- typeid (entities),
- qualified_name (bits::entities<C> (), xsd),
- &serializer_impl<entities>,
- false);
- }
-
- template <typename C>
- void type_serializer_map<C>::
- register_type (const type_id& tid,
- const qualified_name& name,
- serializer s,
- bool replace)
- {
- if (replace || type_map_.find (&tid) == type_map_.end ())
- type_map_[&tid] = type_info (name, s);
- }
-
- template <typename C>
- void type_serializer_map<C>::
- unregister_type (const type_id& tid)
- {
- type_map_.erase (&tid);
- }
-
- template <typename C>
- void type_serializer_map<C>::
- register_element (const qualified_name& root,
- const qualified_name& subst,
- const type_id& tid,
- serializer s)
- {
- element_map_[root][&tid] = type_info (subst, s);
- }
-
- template <typename C>
- void type_serializer_map<C>::
- unregister_element (const qualified_name& root, const type_id& tid)
- {
- typename element_map::iterator i (element_map_.find (root));
-
- if (i != element_map_.end ())
- {
- i->second.erase (&tid);
-
- if (i->second.empty ())
- element_map_.erase (root);
- }
- }
-
- template <typename C>
- void type_serializer_map<C>::
- serialize (const C* name, // element name
- const C* ns, // element namespace
- bool global,
- bool qualified,
- xercesc::DOMElement& parent,
- const type& x) const
- {
- const type_id& tid (typeid (x));
-
- // First see if we can find a substitution.
- //
- if (global)
- {
- typename element_map::const_iterator i (
- element_map_.find (qualified_name (name, ns)));
-
- if (i != element_map_.end ())
- {
- if (const type_info* ti = find_substitution (i->second, tid))
- {
- xercesc::DOMElement& e (
- xml::dom::create_element (
- ti->name ().name ().c_str (),
- ti->name ().namespace_ ().c_str (),
- parent));
-
- ti->serializer () (e, x);
- return;
- }
- }
- }
-
- // The last resort is xsi:type.
- //
- if (const type_info* ti = find (tid))
- {
- xercesc::DOMElement& e (
- qualified
- ? xml::dom::create_element (name, ns, parent)
- : xml::dom::create_element (name, parent));
-
- ti->serializer () (e, x);
- set_xsi_type (parent, e, *ti);
- return;
- }
-
- throw no_type_info<C> (std::basic_string<C> (),
- std::basic_string<C> ()); //@@ TODO
- }
-
- template <typename C>
- void type_serializer_map<C>::
- serialize (const C* static_name,
- const C* static_ns,
- xercesc::DOMElement& e,
- const qualified_name& qn,
- const type& x) const
- {
- const type_id& tid (typeid (x));
-
- // First see if this is a substitution.
- //
- if (qn.name () != static_name || qn.namespace_ () != static_ns)
- {
- typename element_map::const_iterator i (
- element_map_.find (qualified_name (static_name, static_ns)));
-
- if (i != element_map_.end ())
- {
- if (const type_info* ti = find_substitution (i->second, tid))
- {
- if (ti->name ().name () != qn.name () ||
- ti->name ().namespace_ () != qn.namespace_ ())
- {
- throw unexpected_element<C> (
- qn.name (), qn.namespace_ (),
- ti->name ().name (), ti->name ().namespace_ ());
- }
-
- ti->serializer () (e, x);
- return;
- }
- }
-
- // This is not a valid substitution.
- //
- throw unexpected_element<C> (qn.name (), qn.namespace_ (),
- static_name, static_ns);
- }
-
- // The last resort is xsi:type.
- //
- if (const type_info* ti = find (tid))
- {
- ti->serializer () (e, x);
- set_xsi_type (e, e, *ti);
- return;
- }
-
- throw no_type_info<C> (std::basic_string<C> (),
- std::basic_string<C> ()); //@@ TODO
- }
-
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument> type_serializer_map<C>::
- serialize (const C* name,
- const C* ns,
- const xml::dom::namespace_infomap<C>& m,
- const type& x,
- unsigned long flags) const
- {
- const type_id& tid (typeid (x));
-
- // See if we can find a substitution.
- //
- {
- typename element_map::const_iterator i (
- element_map_.find (qualified_name (name, ns)));
-
- if (i != element_map_.end ())
- {
- if (const type_info* ti = find_substitution (i->second, tid))
- {
- return xml::dom::serialize<C> (
- ti->name ().name (), ti->name ().namespace_ (), m, flags);
- }
- }
- }
-
- // If there is no substitution then serialize() will have to
- // find suitable xsi:type.
- //
- return xml::dom::serialize<C> (name, ns, m, flags);
- }
-
- template <typename C>
- const typename type_serializer_map<C>::type_info*
- type_serializer_map<C>::
- find (const type_id& tid) const
- {
- typename type_map::const_iterator i (type_map_.find (&tid));
- return i == type_map_.end () ? 0 : &i->second;
- }
-
- template <typename C>
- const typename type_serializer_map<C>::type_info*
- type_serializer_map<C>::
- find_substitution (const subst_map& start, const type_id& tid) const
- {
- typename subst_map::const_iterator i (start.find (&tid));
-
- if (i != start.end ())
- return &i->second;
- else
- {
- for (i = start.begin (); i != start.end (); ++i)
- {
- typename element_map::const_iterator j (
- element_map_.find (i->second.name ()));
-
- if (j != element_map_.end ())
- {
- if (const type_info* ti = find_substitution (j->second, tid))
- return ti;
- }
- }
- }
-
- return 0;
- }
-
- template <typename C>
- void type_serializer_map<C>::
- set_xsi_type (xercesc::DOMElement& parent,
- xercesc::DOMElement& e,
- const type_info& ti) const
- {
- std::basic_string<C> id;
- const std::basic_string<C>& ns (ti.name ().namespace_ ());
-
- if (!ns.empty ())
- {
- id = xml::dom::prefix (ns, e);
-
- if (!id.empty ())
- id += C (':');
- }
-
- id += ti.name ().name ();
-
- std::basic_string<C> name = xml::dom::prefix (
- xml::bits::xsi_namespace<C> (), parent, xml::bits::xsi_prefix<C> ());
-
- if (!name.empty ())
- name += C (':');
-
- name += xml::bits::type<C> ();
-
- e.setAttributeNS (
- xercesc::SchemaSymbols::fgURI_XSI,
- xml::string (name).c_str (),
- xml::string (id).c_str ());
- }
-
-
- // type_serializer_plate
- //
- template<unsigned long id, typename C>
- type_serializer_plate<id, C>::
- type_serializer_plate ()
- {
- if (count == 0)
- map = new type_serializer_map<C>;
-
- ++count;
- }
-
- template<unsigned long id, typename C>
- type_serializer_plate<id, C>::
- ~type_serializer_plate ()
- {
- if (--count == 0)
- delete map;
- }
-
-
- //
- //
- template<typename T>
- void
- serializer_impl (xercesc::DOMElement& e, const type& x)
- {
- e << static_cast<const T&> (x);
- }
-
- // type_serializer_initializer
- //
- template<unsigned long id, typename C, typename T>
- type_serializer_initializer<id, C, T>::
- type_serializer_initializer (const C* name, const C* ns)
- {
- type_serializer_map_instance<id, C> ().register_type (
- typeid (T),
- xml::qualified_name<C> (name, ns),
- &serializer_impl<T>);
- }
-
- template<unsigned long id, typename C, typename T>
- type_serializer_initializer<id, C, T>::
- ~type_serializer_initializer ()
- {
- type_serializer_map_instance<id, C> ().unregister_type (typeid (T));
- }
-
- // element_serializer_initializer
- //
- template<unsigned long id, typename C, typename T>
- element_serializer_initializer<id, C, T>::
- element_serializer_initializer (const C* root_name, const C* root_ns,
- const C* subst_name, const C* subst_ns)
- : root_name_ (root_name), root_ns_ (root_ns)
- {
- type_serializer_map_instance<id, C> ().register_element (
- xml::qualified_name<C> (root_name, root_ns),
- xml::qualified_name<C> (subst_name, subst_ns),
- typeid (T),
- &serializer_impl<T>);
- }
-
- template<unsigned long id, typename C, typename T>
- element_serializer_initializer<id, C, T>::
- ~element_serializer_initializer ()
- {
- type_serializer_map_instance<id, C> ().unregister_element (
- xml::qualified_name<C> (root_name_, root_ns_), typeid (T));
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/types.hxx b/xsd/libxsd/xsd/cxx/tree/types.hxx
deleted file mode 100644
index 288a291..0000000
--- a/xsd/libxsd/xsd/cxx/tree/types.hxx
+++ /dev/null
@@ -1,3943 +0,0 @@
-// file : xsd/cxx/tree/types.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-/**
- * @file
- *
- * @brief Contains C++ class definitions for XML Schema built-in types.
- *
- * This is an internal header and is included by the generated code. You
- * normally should not include it directly.
- *
- */
-
-#ifndef XSD_CXX_TREE_TYPES_HXX
-#define XSD_CXX_TREE_TYPES_HXX
-
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-
-#include <xsd/cxx/tree/elements.hxx>
-#include <xsd/cxx/tree/list.hxx>
-#include <xsd/cxx/tree/buffer.hxx>
-#include <xsd/cxx/tree/istream-fwd.hxx>
-
-#include <xsd/cxx/tree/date-time.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- /**
- * @brief C++/Tree mapping runtime namespace.
- *
- * This is an internal namespace and normally should not be referenced
- * directly. Instead you should use the aliases for types in this
- * namespaces that are created in the generated code.
- *
- */
- namespace tree
- {
- /**
- * @brief Class corresponding to the XML Schema %string built-in
- * type.
- *
- * The %string class publicly inherits from and has the same set
- * of constructors as @c std::basic_string. It therefore can be
- * used as @c std::string (or @c std::wstring if you are using
- * @c wchar_t as the character type).
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class string: public B, public std::basic_string<C>
- {
- typedef std::basic_string<C> base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Default constructor creates an empty %string.
- */
- string ()
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- string (const C* s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- string (const C* s, std::size_t n)
- : base_type (s, n)
- {
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- string (std::size_t n, C c)
- : base_type (n, c)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- string (const std::basic_string<C>& s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- string (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- string (const string& x, flags f = 0, container* c = 0)
- : B (x, f, c), base_type (x)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual string*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- string (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- string (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- string (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- string (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %string has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- string&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %string contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- string&
- operator= (const C* s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %string contains a copy of the standard %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- string&
- operator= (const std::basic_string<C>& s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- string&
- operator= (const string& x)
- {
- base () = x;
- return *this;
- }
- };
-
- /**
- * @brief %string comparison operator.
- *
- * @return True if the strings are equal, false otherwise.
- */
- template <typename C, typename B>
- inline bool
- operator== (const string<C, B>& a, const string<C, B>& b)
- {
- return static_cast<const std::basic_string<C>&> (a) == b;
- }
-
- /**
- * @brief %string comparison operator.
- *
- * @return True if the strings are not equal, false otherwise.
- */
- template <typename C, typename B>
- inline bool
- operator!= (const string<C, B>& a, const string<C, B>& b)
- {
- return !(a == b);
- }
-
- /**
- * @brief Class corresponding to the XML Schema normalizedString
- * built-in type.
- *
- * The %normalized_string class publicly inherits from and has
- * the same set of constructors as @c std::basic_string. It
- * therefore can be used as @c std::string (or @c std::wstring
- * if you are using @c wchar_t as the character type).
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class normalized_string: public B
- {
- typedef B base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Default constructor creates an empty %normalized_string.
- */
- normalized_string ()
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- normalized_string (const C* s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- normalized_string (const C* s, std::size_t n)
- : base_type (s, n)
- {
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- normalized_string (std::size_t n, C c)
- : base_type (n, c)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- normalized_string (const std::basic_string<C>& s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- normalized_string (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- normalized_string (const normalized_string& x,
- flags f = 0,
- container* c = 0)
- : base_type (x, f, c)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual normalized_string*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- normalized_string (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- normalized_string (const xercesc::DOMElement& e,
- flags f = 0,
- container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- normalized_string (const xercesc::DOMAttr& a,
- flags f = 0,
- container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- normalized_string (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %normalized_string has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- normalized_string&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %normalized_string contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- normalized_string&
- operator= (const C* s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %normalized_string contains a copy of the standard
- * %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- normalized_string&
- operator= (const std::basic_string<C>& s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- normalized_string&
- operator= (const normalized_string& x)
- {
- base () = x;
- return *this;
- }
-
- protected:
- //@cond
-
- void
- normalize ();
-
- //@endcond
- };
-
-
- /**
- * @brief Class corresponding to the XML Schema %token built-in
- * type.
- *
- * The %token class publicly inherits from and has the same set
- * of constructors as @c std::basic_string. It therefore can be
- * used as @c std::string (or @c std::wstring if you are using
- * @c wchar_t as the character type).
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class token: public B
- {
- typedef B base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Default constructor creates an empty %token.
- */
- token ()
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- token (const C* s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- token (const C* s, std::size_t n)
- : base_type (s, n)
- {
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- token (std::size_t n, C c)
- : base_type (n, c)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- token (const std::basic_string<C>& s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- token (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- token (const token& x, flags f = 0, container* c = 0)
- : base_type (x, f, c)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual token*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- token (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- token (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- token (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- token (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %token has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- token&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %token contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- token&
- operator= (const C* s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %token contains a copy of the standard %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- token&
- operator= (const std::basic_string<C>& s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- token&
- operator= (const token& x)
- {
- base () = x;
- return *this;
- }
-
- protected:
- //@cond
-
- void
- collapse ();
-
- //@endcond
- };
-
-
- /**
- * @brief Class corresponding to the XML Schema NMTOKEN built-in
- * type.
- *
- * The %nmtoken class publicly inherits from and has the same set
- * of constructors as @c std::basic_string. It therefore can be
- * used as @c std::string (or @c std::wstring if you are using
- * @c wchar_t as the character type).
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class nmtoken: public B
- {
- typedef B base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- nmtoken (const C* s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- nmtoken (const C* s, std::size_t n)
- : base_type (s, n)
- {
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- nmtoken (std::size_t n, C c)
- : base_type (n, c)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- nmtoken (const std::basic_string<C>& s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- nmtoken (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- nmtoken (const nmtoken& x, flags f = 0, container* c = 0)
- : base_type (x, f, c)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual nmtoken*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- nmtoken (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- nmtoken (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- nmtoken (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- nmtoken (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %nmtoken has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- nmtoken&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %nmtoken contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- nmtoken&
- operator= (const C* s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %nmtoken contains a copy of the standard %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- nmtoken&
- operator= (const std::basic_string<C>& s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- nmtoken&
- operator= (const nmtoken& x)
- {
- base () = x;
- return *this;
- }
-
- protected:
- //@cond
-
- nmtoken ()
- : base_type ()
- {
- }
-
- //@endcond
- };
-
-
- /**
- * @brief Class corresponding to the XML Schema NMTOKENS built-in
- * type.
- *
- * The %nmtokens class is a vector (or %list in XML Schema terminology)
- * of nmtoken elements. It is implemented in terms of the list class
- * template.
- *
- * @nosubgrouping
- */
- template <typename C, typename B, typename nmtoken>
- class nmtokens: public B, public list<nmtoken, C>
- {
- typedef list<nmtoken, C> base_type;
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Default constructor creates no elements.
- */
- nmtokens ()
- : base_type (this)
- {
- }
-
- /**
- * @brief Initialize the instance with copies of an exemplar elements.
- *
- * @param n A number of elements to copy.
- * @param x An exemplar element to copy.
- */
- nmtokens (typename base_type::size_type n, const nmtoken& x)
- : base_type (n, x, this)
- {
- }
-
- /**
- * @brief Initialize the instance with copies of elements from an
- * iterator range.
- *
- * @param begin An iterator pointing to the first element.
- * @param end An iterator pointing to the one past the last element.
- */
- template <typename I>
- nmtokens (const I& begin, const I& end)
- : base_type (begin, end, this)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- nmtokens (const nmtokens& x, flags f, container* c = 0)
- : B (x, f, c), base_type (x, f, this)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual nmtokens*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- nmtokens (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- nmtokens (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- nmtokens (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- nmtokens (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
- };
-
- /**
- * @brief %nmtokens comparison operator.
- *
- * @return True if the lists of nmtokens are equal, false otherwise.
- */
- template <typename C, typename B, typename nmtoken>
- inline bool
- operator== (const nmtokens<C, B, nmtoken>& a,
- const nmtokens<C, B, nmtoken>& b)
- {
- return static_cast<const list<nmtoken, C>&> (a) == b;
- }
-
- /**
- * @brief %nmtokens comparison operator.
- *
- * @return True if the lists of nmtokens are not equal, false otherwise.
- */
- template <typename C, typename B, typename nmtoken>
- inline bool
- operator!= (const nmtokens<C, B, nmtoken>& a,
- const nmtokens<C, B, nmtoken>& b)
- {
- return !(a == b);
- }
-
- /**
- * @brief Class corresponding to the XML Schema Name built-in
- * type.
- *
- * The %name class publicly inherits from and has the same set
- * of constructors as @c std::basic_string. It therefore can be
- * used as @c std::string (or @c std::wstring if you are using
- * @c wchar_t as the character type).
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class name: public B
- {
- typedef B base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- name (const C* s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- name (const C* s, std::size_t n)
- : base_type (s, n)
- {
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- name (std::size_t n, C c)
- : base_type (n, c)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- name (const std::basic_string<C>& s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- name (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- name (const name& x, flags f = 0, container* c = 0)
- : base_type (x, f, c)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual name*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- name (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- name (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- name (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- name (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %name has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- name&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %name contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- name&
- operator= (const C* s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %name contains a copy of the standard %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- name&
- operator= (const std::basic_string<C>& s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- name&
- operator= (const name& x)
- {
- base () = x;
- return *this;
- }
-
- protected:
- //@cond
-
- name ()
- : base_type ()
- {
- }
-
- //@endcond
- };
-
-
- // Forward declaration for Sun CC.
- //
- template <typename C, typename B, typename uri, typename ncname>
- class qname;
-
-
- /**
- * @brief Class corresponding to the XML Schema NCame built-in
- * type.
- *
- * The %ncname class publicly inherits from and has the same set
- * of constructors as @c std::basic_string. It therefore can be
- * used as @c std::string (or @c std::wstring if you are using
- * @c wchar_t as the character type).
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class ncname: public B
- {
- typedef B base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- ncname (const C* s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- ncname (const C* s, std::size_t n)
- : base_type (s, n)
- {
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- ncname (std::size_t n, C c)
- : base_type (n, c)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- ncname (const std::basic_string<C>& s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- ncname (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- ncname (const ncname& x, flags f = 0, container* c = 0)
- : base_type (x, f, c)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual ncname*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- ncname (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- ncname (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- ncname (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- ncname (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %ncname has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- ncname&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %ncname contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- ncname&
- operator= (const C* s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %ncname contains a copy of the standard %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- ncname&
- operator= (const std::basic_string<C>& s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- ncname&
- operator= (const ncname& x)
- {
- base () = x;
- return *this;
- }
-
- protected:
- //@cond
-
- ncname ()
- : base_type ()
- {
- }
-
- //@endcond
-
- template <typename, typename, typename, typename>
- friend class qname;
- };
-
-
- /**
- * @brief Class corresponding to the XML Schema %language built-in
- * type.
- *
- * The %language class publicly inherits from and has the same set
- * of constructors as @c std::basic_string. It therefore can be
- * used as @c std::string (or @c std::wstring if you are using
- * @c wchar_t as the character type).
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class language: public B
- {
- typedef B base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- language (const C* s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- language (const C* s, std::size_t n)
- : base_type (s, n)
- {
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- language (std::size_t n, C c)
- : base_type (n, c)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- language (const std::basic_string<C>& s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- language (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- language (const language& x, flags f = 0, container* c = 0)
- : base_type (x, f, c)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual language*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- language (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- language (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- language (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- language (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %language has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- language&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %language contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- language&
- operator= (const C* s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %language contains a copy of the standard %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- language&
- operator= (const std::basic_string<C>& s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- language&
- operator= (const language& x)
- {
- base () = x;
- return *this;
- }
-
- protected:
- //@cond
-
- language ()
- : base_type ()
- {
- }
-
- //@endcond
- };
-
-
- //@cond
-
- template <typename C, typename ncname>
- struct identity_impl: identity
- {
- identity_impl (const ncname& id)
- : id_ (id)
- {
- }
-
- virtual bool
- before (const identity& y) const;
-
- virtual void
- throw_duplicate_id () const;
-
- private:
- const ncname& id_;
- };
-
- //@endcond
-
-
- /**
- * @brief Class corresponding to the XML Schema ID built-in
- * type.
- *
- * The %id class publicly inherits from and has the same set
- * of constructors as @c std::basic_string. It therefore can be
- * used as @c std::string (or @c std::wstring if you are using
- * @c wchar_t as the character type).
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class id: public B
- {
- typedef B base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- ~id()
- {
- unregister_id ();
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- id (const C* s)
- : base_type (s), identity_ (*this)
- {
- register_id ();
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- id (const C* s, std::size_t n)
- : base_type (s, n), identity_ (*this)
- {
- register_id ();
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- id (std::size_t n, C c)
- : base_type (n, c), identity_ (*this)
- {
- register_id ();
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- id (const std::basic_string<C>& s)
- : base_type (s), identity_ (*this)
- {
- register_id ();
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- id (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n), identity_ (*this)
- {
- register_id ();
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- id (const id& x, flags f = 0, container* c = 0)
- : base_type (x, f, c), identity_ (*this)
- {
- register_id ();
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual id*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- id (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- id (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- id (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- id (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %id has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- id&
- operator= (C c);
-
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %id contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- id&
- operator= (const C* s);
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %id contains a copy of the standard %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- id&
- operator= (const std::basic_string<C>& s);
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- id&
- operator= (const id& x);
-
- public:
- //@cond
-
- virtual void
- _container (container*);
-
- using B::_container;
-
- //@endcond
-
- protected:
- //@cond
-
- id ()
- : base_type (), identity_ (*this)
- {
- register_id ();
- }
-
- //@endcond
-
- private:
- void
- register_id ();
-
- void
- unregister_id ();
-
- private:
- identity_impl<C, B> identity_;
- };
-
-
- /**
- * @brief Class corresponding to the XML Schema IDREF built-in
- * type.
- *
- * The %idref class publicly inherits from and has the same set
- * of constructors as @c std::basic_string. It therefore can be
- * used as @c std::string (or @c std::wstring if you are using
- * @c wchar_t as the character type).
- *
- * The %idref class also provides an autopointer-like interface
- * for resolving referenced objects. By default the object is
- * returned as type (mapping for anyType) but statically-typed
- * %idref can be created using the XML Schema extension. See the
- * C++/Tree Mapping User Manual for more information.
- *
- * @nosubgrouping
- */
- template <typename C, typename B, typename T>
- class idref: public B
- {
- typedef B base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- /**
- * @brief Referenced type.
- */
- typedef T ref_type;
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- idref (const C* s)
- : base_type (s), identity_ (*this)
- {
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- idref (const C* s, std::size_t n)
- : base_type (s, n), identity_ (*this)
- {
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- idref (std::size_t n, C c)
- : base_type (n, c), identity_ (*this)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- idref (const std::basic_string<C>& s)
- : base_type (s), identity_ (*this)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- idref (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n), identity_ (*this)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- idref (const idref& x, flags f = 0, container* c = 0)
- : base_type (x, f, c), identity_ (*this)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual idref*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- idref (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- idref (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- idref (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- idref (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %idref has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- idref&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %idref contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- idref&
- operator= (const C* s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %idref contains a copy of the standard %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- idref&
- operator= (const std::basic_string<C>& s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- idref&
- operator= (const idref& x)
- {
- base () = x;
- return *this;
- }
-
- public:
- /**
- * @brief Call referenced object.
- *
- * @return A constant pointer to the referenced object.
- */
- const ref_type*
- operator-> () const
- {
- return get ();
- }
-
- /**
- * @brief Call referenced object.
- *
- * @return A pointer to the referenced object.
- */
- ref_type*
- operator-> ()
- {
- return get ();
- }
-
- /**
- * @brief Dereference referenced object.
- *
- * @return A constant C++ reference to the referenced object.
- */
- const ref_type&
- operator* () const
- {
- return *(get ());
- }
-
- /**
- * @brief Dereference referenced object.
- *
- * @return A C++ reference to the referenced object.
- */
- ref_type&
- operator* ()
- {
- return *(get ());
- }
-
- /**
- * @brief Get a constant pointer to the referenced object.
- *
- * @return A constant pointer to the referenced object or 0 if
- * the object is not found.
- */
- const ref_type*
- get () const
- {
- return dynamic_cast<const ref_type*> (get_ ());
- }
-
- /**
- * @brief Get a pointer to the referenced object.
- *
- * @return A pointer to the referenced object or 0 if the object
- * is not found.
- */
- ref_type*
- get ()
- {
- return dynamic_cast<ref_type*> (get_ ());
- }
-
- /**
- * @brief Opaque type that can be evaluated as true or false.
- */
- typedef void (idref::*bool_convertible)();
-
- /**
- * @brief Implicit conversion to boolean type.
- *
- * @return True if the referenced object is found, false otherwise.
- */
- operator bool_convertible () const
- {
- return get_ () ? &idref::true_ : 0;
- }
-
- protected:
- //@cond
-
- idref ()
- : base_type (), identity_ (*this)
- {
- }
-
- //@endcond
-
- private:
- const _type*
- get_ () const;
-
- _type*
- get_ ();
-
- void
- true_ ();
-
- private:
- identity_impl<C, B> identity_;
- };
-
-
- /**
- * @brief Class corresponding to the XML Schema IDREFS built-in
- * type.
- *
- * The %idrefs class is a vector (or %list in XML Schema terminology)
- * of idref elements. It is implemented in terms of the list class
- * template.
- *
- * @nosubgrouping
- */
- template <typename C, typename B, typename idref>
- class idrefs: public B, public list<idref, C>
- {
- typedef list<idref, C> base_type;
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Default constructor creates no elements.
- */
- idrefs ()
- : base_type (this)
- {
- }
-
- /**
- * @brief Initialize the instance with copies of an exemplar elements.
- *
- * @param n A number of elements to copy.
- * @param x An exemplar element to copy.
- */
- idrefs (typename base_type::size_type n, const idref& x)
- : base_type (n, x, this)
- {
- }
-
- /**
- * @brief Initialize the instance with copies of elements from an
- * iterator range.
- *
- * @param begin An iterator pointing to the first element.
- * @param end An iterator pointing to the one past the last element.
- */
- template <typename I>
- idrefs (const I& begin, const I& end)
- : base_type (begin, end, this)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- idrefs (const idrefs& x, flags f = 0, container* c = 0)
- : B (x, f, c), base_type (x, f, this)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual idrefs*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- idrefs (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- idrefs (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- idrefs (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- idrefs (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
- };
-
- /**
- * @brief %idrefs comparison operator.
- *
- * @return True if the lists of idrefs are equal, false otherwise.
- */
- template <typename C, typename B, typename idref>
- inline bool
- operator== (const idrefs<C, B, idref>& a, const idrefs<C, B, idref>& b)
- {
- return static_cast<const list<idref, C>&> (a) == b;
- }
-
- /**
- * @brief %idrefs comparison operator.
- *
- * @return True if the lists of idrefs are not equal, false otherwise.
- */
- template <typename C, typename B, typename idref>
- inline bool
- operator!= (const idrefs<C, B, idref>& a, const idrefs<C, B, idref>& b)
- {
- return !(a == b);
- }
-
- /**
- * @brief Class corresponding to the XML Schema anyURI built-in
- * type.
- *
- * The %uri class publicly inherits from and has the same set
- * of constructors as @c std::basic_string. It therefore can be
- * used as @c std::string (or @c std::wstring if you are using
- * @c wchar_t as the character type).
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class uri: public B, public std::basic_string<C>
- {
- typedef std::basic_string<C> base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- uri (const C* s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- uri (const C* s, std::size_t n)
- : base_type (s, n)
- {
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- uri (std::size_t n, C c)
- : base_type (n, c)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- uri (const std::basic_string<C>& s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- uri (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- uri (const uri& x, flags f = 0, container* c = 0)
- : B (x, f, c), base_type (x)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual uri*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- uri (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- uri (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- uri (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- uri (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %uri has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- uri&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %uri contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- uri&
- operator= (const C* s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %uri contains a copy of the standard %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- uri&
- operator= (const std::basic_string<C>& s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- uri&
- operator= (const uri& x)
- {
- base () = x;
- return *this;
- }
-
- protected:
- //@cond
-
- uri ()
- : base_type ()
- {
- }
-
- //@endcond
-
- template <typename, typename, typename, typename>
- friend class qname;
- };
-
- /**
- * @brief %uri comparison operator.
- *
- * @return True if the uris are equal, false otherwise.
- */
- template <typename C, typename B>
- inline bool
- operator== (const uri<C, B>& a, const uri<C, B>& b)
- {
- return static_cast<const std::basic_string<C>&> (a) == b;
- }
-
- /**
- * @brief %uri comparison operator.
- *
- * @return True if the uris are not equal, false otherwise.
- */
- template <typename C, typename B>
- inline bool
- operator!= (const uri<C, B>& a, const uri<C, B>& b)
- {
- return !(a == b);
- }
-
- /**
- * @brief Class corresponding to the XML Schema QName built-in
- * type.
- *
- * The %qname class represents a potentially namespace-qualified
- * XML %name.
- *
- * @nosubgrouping
- */
- template <typename C, typename B, typename uri, typename ncname>
- class qname: public B
- {
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with a %name only.
- *
- * The resulting %qname is unqualified.
- *
- * @param n An XML %name (ncname).
- */
- qname (const ncname& n)
- : ns_ (), name_ (n)
- {
- }
-
- /**
- * @brief Initialize an instance with a %name and a namespace.
- *
- * The resulting %qname is qualified.
- *
- * @param ns An XML namespace (uri).
- * @param n An XML %name (ncname).
- */
- qname (const uri& ns, const ncname& n)
- : ns_ (ns), name_ (n)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- qname (const qname& x, flags f = 0, container* c = 0)
- : B (x, f, c),
- ns_ (x.ns_),
- name_ (x.name_)
- {
- // Note that ns_ and name_ have no DOM association.
- //
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual qname*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- qname (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- qname (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- qname (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- qname (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Determine if the %name is qualified.
- *
- * @return True if the %name is qualified, false otherwise.
- */
- bool
- qualified () const
- {
- return !ns_.empty ();
- }
-
- /**
- * @brief Get XML namespace.
- *
- * @return A constant reference to qualifying XML namespace.
- */
- const uri&
- namespace_ () const
- {
- return ns_;
- }
-
- /**
- * @brief Get XML %name.
- *
- * @return A constant reference to unqualified XML %name.
- */
- const ncname&
- name () const
- {
- return name_;
- }
-
- protected:
- //@cond
-
- qname ()
- : ns_ (), name_ ()
- {
- }
-
- //@endcond
-
- private:
- static uri
- resolve (const std::basic_string<C>&, const xercesc::DOMElement*);
-
- private:
- uri ns_;
- ncname name_;
- };
-
- /**
- * @brief %qname comparison operator.
- *
- * @return True if the names are equal, false otherwise.
- */
- template <typename C, typename B, typename uri, typename ncname>
- inline bool
- operator== (const qname<C, B, uri, ncname>& a,
- const qname<C, B, uri, ncname>& b)
- {
- return a.name () == b.name () && a.namespace_ () == b.namespace_ ();
- }
-
- /**
- * @brief %qname comparison operator.
- *
- * @return True if the names are not equal, false otherwise.
- */
- template <typename C, typename B, typename uri, typename ncname>
- inline bool
- operator!= (const qname<C, B, uri, ncname>& a,
- const qname<C, B, uri, ncname>& b)
- {
- return !(a == b);
- }
-
-
- /**
- * @brief Class corresponding to the XML Schema base64Binary
- * built-in type.
- *
- * The %base64_binary class is a binary %buffer abstraction with
- * base64-encoded representation in XML. It publicly inherits from
- * the buffer class which provides the %buffer functionality.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class base64_binary: public B, public buffer<C>
- {
- public:
- typedef typename buffer<C>::size_t size_t;
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Allocate a %buffer of the specified size.
- *
- * The resulting %buffer has the same size and capacity.
- *
- * @param size A %buffer size in bytes.
- */
- explicit
- base64_binary (size_t size = 0);
-
- /**
- * @brief Allocate a %buffer of the specified size and capacity.
- *
- * @param size A %buffer size in bytes.
- * @param capacity A %buffer capacity in bytes.
- * @throw bounds If @a size exceeds @a capacity
- */
- base64_binary (size_t size, size_t capacity);
-
- /**
- * @brief Allocate a %buffer of the specified size and copy
- * the data.
- *
- * The resulting %buffer has the same size and capacity with
- * @a size bytes copied from @a data.
- *
- * @param data A %buffer to copy the data from.
- * @param size A %buffer size in bytes.
- */
- base64_binary (const void* data, size_t size);
-
- /**
- * @brief Allocate a %buffer of the specified size and capacity
- * and copy the data.
- *
- * @a size bytes are copied from @a data to the resulting
- * %buffer.
- *
- * @param data A %buffer to copy the data from.
- * @param size A %buffer size in bytes.
- * @param capacity A %buffer capacity in bytes.
- * @throw bounds If @a size exceeds @a capacity
- */
- base64_binary (const void* data, size_t size, size_t capacity);
-
- /**
- * @brief Reuse an existing %buffer.
- *
- * If the @a assume_ownership argument is true, the %buffer will
- * assume ownership of @a data and will release the memory
- * by calling @c operator @c delete().
- *
- * @param data A %buffer to reuse.
- * @param size A %buffer size in bytes.
- * @param capacity A %buffer capacity in bytes.
- * @param assume_ownership A boolean value indication whether to
- * assume ownership.
- * @throw bounds If @a size exceeds @a capacity
- */
- base64_binary (void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership);
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- base64_binary (const base64_binary& x,
- flags f = 0,
- container* c = 0)
- : B (x, f, c), buffer<C> (x)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual base64_binary*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- base64_binary (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- base64_binary (const xercesc::DOMElement& e,
- flags f = 0,
- container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- base64_binary (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- base64_binary (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- base64_binary&
- operator= (const base64_binary& x)
- {
- buffer<C>& b (*this);
- b = x;
- return *this;
- }
-
- public:
- /**
- * @brief Encode the %buffer in base64 encoding.
- *
- * @return A %string with base64-encoded data.
- */
- std::basic_string<C>
- encode () const;
-
- private:
- void
- decode (const XMLCh*);
- };
-
- /**
- * @brief %base64_binary comparison operator.
- *
- * @return True if the binaries are equal, false otherwise.
- */
- template <typename C, typename B>
- inline bool
- operator== (const base64_binary<C, B>& a, const base64_binary<C, B>& b)
- {
- return static_cast<const buffer<C>&> (a) == b;
- }
-
- /**
- * @brief %base64_binary comparison operator.
- *
- * @return True if the binaries are not equal, false otherwise.
- */
- template <typename C, typename B>
- inline bool
- operator!= (const base64_binary<C, B>& a, const base64_binary<C, B>& b)
- {
- return !(a == b);
- }
-
- /**
- * @brief Class corresponding to the XML Schema hexBinary
- * built-in type.
- *
- * The %hex_binary class is a binary %buffer abstraction with
- * hex-encoded representation in XML. It publicly inherits from
- * the buffer class which provides the %buffer functionality.
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class hex_binary: public B, public buffer<C>
- {
- public:
- typedef typename buffer<C>::size_t size_t;
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Allocate a %buffer of the specified size.
- *
- * The resulting %buffer has the same size and capacity.
- *
- * @param size A %buffer size in bytes.
- */
- explicit
- hex_binary (size_t size = 0);
-
- /**
- * @brief Allocate a %buffer of the specified size and capacity.
- *
- * @param size A %buffer size in bytes.
- * @param capacity A %buffer capacity in bytes.
- * @throw bounds If @a size exceeds @a capacity
- */
- hex_binary (size_t size, size_t capacity);
-
- /**
- * @brief Allocate a %buffer of the specified size and copy
- * the data.
- *
- * The resulting %buffer has the same size and capacity with
- * @a size bytes copied from @a data.
- *
- * @param data A %buffer to copy the data from.
- * @param size A %buffer size in bytes.
- */
- hex_binary (const void* data, size_t size);
-
- /**
- * @brief Allocate a %buffer of the specified size and capacity
- * and copy the data.
- *
- * @a size bytes are copied from @a data to the resulting
- * %buffer.
- *
- * @param data A %buffer to copy the data from.
- * @param size A %buffer size in bytes.
- * @param capacity A %buffer capacity in bytes.
- * @throw bounds If @a size exceeds @a capacity
- */
- hex_binary (const void* data, size_t size, size_t capacity);
-
- /**
- * @brief Reuse an existing %buffer..
- *
- * If the @a assume_ownership argument is true, the %buffer will
- * assume ownership of @a data and will release the memory
- * by calling @c operator @c delete().
- *
- * @param data A %buffer to reuse.
- * @param size A %buffer size in bytes.
- * @param capacity A %buffer capacity in bytes.
- * @param assume_ownership A boolean value indication whether to
- * assume ownership.
- * @throw bounds If @a size exceeds @a capacity
- */
- hex_binary (void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership);
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- hex_binary (const hex_binary& x, flags f = 0, container* c = 0)
- : B (x, f, c), buffer<C> (x)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual hex_binary*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- hex_binary (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- hex_binary (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- hex_binary (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- hex_binary (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- hex_binary&
- operator= (const hex_binary& x)
- {
- buffer<C>& b (*this);
- b = x;
- return *this;
- }
-
- public:
- /**
- * @brief Encode the %buffer in hex encoding.
- *
- * @return A %string with hex-encoded data.
- */
- std::basic_string<C>
- encode () const;
-
- private:
- void
- decode (const XMLCh*);
- };
-
- /**
- * @brief %hex_binary comparison operator.
- *
- * @return True if the binaries are equal, false otherwise.
- */
- template <typename C, typename B>
- inline bool
- operator== (const hex_binary<C, B>& a, const hex_binary<C, B>& b)
- {
- return static_cast<const buffer<C>&> (a) == b;
- }
-
- /**
- * @brief %hex_binary comparison operator.
- *
- * @return True if the binaries are not equal, false otherwise.
- */
- template <typename C, typename B>
- inline bool
- operator!= (const hex_binary<C, B>& a, const hex_binary<C, B>& b)
- {
- return !(a == b);
- }
-
- /**
- * @brief Class corresponding to the XML Schema ENTITY built-in
- * type.
- *
- * The %entity class publicly inherits from and has the same set
- * of constructors as @c std::basic_string. It therefore can be
- * used as @c std::string (or @c std::wstring if you are using
- * @c wchar_t as the character type).
- *
- * @nosubgrouping
- */
- template <typename C, typename B>
- class entity: public B
- {
- typedef B base_type;
-
- base_type&
- base ()
- {
- return *this;
- }
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Initialize an instance with a copy of a C %string.
- *
- * @param s A C %string to copy.
- */
- entity (const C* s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a character array.
- *
- * @param s A character array to copy.
- * @param n A number of character to copy.
- */
- entity (const C* s, std::size_t n)
- : base_type (s, n)
- {
- }
-
- /**
- * @brief Initialize an instance with multiple copies of the same
- * character.
- *
- * @param n A number of copies to create.
- * @param c A character to copy.
- */
- entity (std::size_t n, C c)
- : base_type (n, c)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a standard %string.
- *
- * @param s A standard %string to copy.
- */
- entity (const std::basic_string<C>& s)
- : base_type (s)
- {
- }
-
- /**
- * @brief Initialize an instance with a copy of a substring.
- *
- * @param s A standard %string to copy the substring from.
- * @param pos An index of the first character to copy from.
- * @param n A number of characters to copy.
- */
- entity (const std::basic_string<C>& s,
- std::size_t pos,
- std::size_t n = std::basic_string<C>::npos)
- : base_type (s, pos, n)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- entity (const entity& x, flags f = 0, container* c = 0)
- : base_type (x, f, c)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual entity*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- entity (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- entity (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- entity (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- entity (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
-
- public:
- /**
- * @brief Assign a character to the instance.
- *
- * The resulting %entity has only one character.
- *
- * @param c A character to assign.
- * @return A reference to the instance.
- */
- entity&
- operator= (C c)
- {
- base () = c;
- return *this;
- }
-
- /**
- * @brief Assign a C %string to the instance.
- *
- * The resulting %entity contains a copy of the C %string.
- *
- * @param s A C %string to assign.
- * @return A reference to the instance.
- */
- entity&
- operator= (const C* s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Assign a standard %string to the instance.
- *
- * The resulting %entity contains a copy of the standard %string.
- *
- * @param s A standard %string to assign.
- * @return A reference to the instance.
- */
- entity&
- operator= (const std::basic_string<C>& s)
- {
- base () = s;
- return *this;
- }
-
- /**
- * @brief Copy assignment operator.
- *
- * @param x An instance to assign.
- * @return A reference to the instance.
- */
- entity&
- operator= (const entity& x)
- {
- base () = x;
- return *this;
- }
-
- protected:
- //@cond
-
- entity ()
- : base_type ()
- {
- }
-
- //@endcond
- };
-
-
- /**
- * @brief Class corresponding to the XML Schema ENTITIES built-in
- * type.
- *
- * The %entities class is a vector (or %list in XML Schema terminology)
- * of entity elements. It is implemented in terms of the list class
- * template.
- *
- * @nosubgrouping
- */
- template <typename C, typename B, typename entity>
- class entities: public B, public list<entity, C>
- {
- typedef list<entity, C> base_type;
-
- public:
- /**
- * @name Constructors
- */
- //@{
-
- /**
- * @brief Default constructor creates no elements.
- */
- entities ()
- : base_type (this)
- {
- }
-
- /**
- * @brief Initialize the instance with copies of an exemplar elements.
- *
- * @param n A number of elements to copy.
- * @param x An exemplar element to copy.
- */
- entities (typename base_type::size_type n, const entity& x)
- : base_type (n, x, this)
- {
- }
-
- /**
- * @brief Initialize the instance with copies of elements from an
- * iterator range.
- *
- * @param begin An iterator pointing to the first element.
- * @param end An iterator pointing to the one past the last element.
- */
- template <typename I>
- entities (const I& begin, const I& end)
- : base_type (begin, end, this)
- {
- }
-
- public:
- /**
- * @brief Copy constructor.
- *
- * @param x An instance to make a copy of.
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- *
- * For polymorphic object models use the @c _clone function instead.
- */
- entities (const entities& x, flags f = 0, container* c = 0)
- : B (x, f, c), base_type (x, f, this)
- {
- }
-
- /**
- * @brief Copy the instance polymorphically.
- *
- * @param f Flags to create the copy with.
- * @param c A pointer to the object that will contain the copy.
- * @return A pointer to the dynamically allocated copy.
- *
- * This function ensures that the dynamic type of the instance
- * is used for copying and should be used for polymorphic object
- * models instead of the copy constructor.
- */
- virtual entities*
- _clone (flags f = 0, container* c = 0) const;
-
- public:
- /**
- * @brief Create an instance from a data representation
- * stream.
- *
- * @param s A stream to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- template <typename S>
- entities (istream<S>& s, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM element.
- *
- * @param e A DOM element to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- entities (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a DOM Attribute.
- *
- * @param a A DOM attribute to extract the data from.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- entities (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
-
- /**
- * @brief Create an instance from a %string fragment.
- *
- * @param s A %string fragment to extract the data from.
- * @param e A pointer to DOM element containing the %string fragment.
- * @param f Flags to create the new instance with.
- * @param c A pointer to the object that will contain the new
- * instance.
- */
- entities (const std::basic_string<C>& s,
- const xercesc::DOMElement* e,
- flags f = 0,
- container* c = 0);
- //@}
- };
-
- /**
- * @brief %entities comparison operator.
- *
- * @return True if the lists of entities are equal, false otherwise.
- */
- template <typename C, typename B, typename entity>
- inline bool
- operator== (const entities<C, B, entity>& a,
- const entities<C, B, entity>& b)
- {
- return static_cast<const list<entity, C>&> (a) == b;
- }
-
- /**
- * @brief %entities comparison operator.
- *
- * @return True if the lists of entities are not equal, false otherwise.
- */
- template <typename C, typename B, typename entity>
- inline bool
- operator!= (const entities<C, B, entity>& a,
- const entities<C, B, entity>& b)
- {
- return !(a == b);
- }
- }
- }
-}
-
-#include <xsd/cxx/tree/types.txx>
-
-#endif // XSD_CXX_TREE_TYPES_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/types.txx b/xsd/libxsd/xsd/cxx/tree/types.txx
deleted file mode 100644
index 8696171..0000000
--- a/xsd/libxsd/xsd/cxx/tree/types.txx
+++ /dev/null
@@ -1,524 +0,0 @@
-// file : xsd/cxx/tree/types.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xercesc/util/Base64.hpp>
-#include <xercesc/util/XMLString.hpp>
-
-#include <xsd/cxx/config.hxx> // XSD_CXX11
-
-#ifdef XSD_CXX11
-# include <memory> // std::unique_ptr
-#else
-# include <xsd/cxx/auto-array.hxx>
-#endif
-
-#include <xsd/cxx/xml/std-memory-manager.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
-
- // string
- //
- template <typename C, typename B>
- string<C, B>* string<C, B>::
- _clone (flags f, container* c) const
- {
- return new string (*this, f, c);
- }
-
-
- // normalized_string
- //
- template <typename C, typename B>
- normalized_string<C, B>* normalized_string<C, B>::
- _clone (flags f, container* c) const
- {
- return new normalized_string (*this, f, c);
- }
-
-
- // token
- //
- template <typename C, typename B>
- token<C, B>* token<C, B>::
- _clone (flags f, container* c) const
- {
- return new token (*this, f, c);
- }
-
-
- // nmtoken
- //
- template <typename C, typename B>
- nmtoken<C, B>* nmtoken<C, B>::
- _clone (flags f, container* c) const
- {
- return new nmtoken (*this, f, c);
- }
-
-
- // nmtokens
- //
- template <typename C, typename B, typename nmtoken>
- nmtokens<C, B, nmtoken>* nmtokens<C, B, nmtoken>::
- _clone (flags f, container* c) const
- {
- return new nmtokens (*this, f, c);
- }
-
-
- // name
- //
- template <typename C, typename B>
- name<C, B>* name<C, B>::
- _clone (flags f, container* c) const
- {
- return new name (*this, f, c);
- }
-
-
- // ncname
- //
- template <typename C, typename B>
- ncname<C, B>* ncname<C, B>::
- _clone (flags f, container* c) const
- {
- return new ncname (*this, f, c);
- }
-
-
- // language
- //
- template <typename C, typename B>
- language<C, B>* language<C, B>::
- _clone (flags f, container* c) const
- {
- return new language (*this, f, c);
- }
-
-
- // identity_impl
- //
- template <typename C, typename ncname>
- bool identity_impl<C, ncname>::
- before (const identity& y) const
- {
- return id_ < static_cast<const identity_impl&> (y).id_;
- }
-
- template <typename C, typename ncname>
- void identity_impl<C, ncname>::
- throw_duplicate_id () const
- {
- throw duplicate_id<C> (id_);
- }
-
-
- // id
- //
- template <typename C, typename B>
- id<C, B>* id<C, B>::
- _clone (flags f, container* c) const
- {
- return new id (*this, f, c);
- }
-
- template <typename C, typename B>
- id<C, B>& id<C, B>::
- operator= (C c)
- {
- unregister_id ();
- base () = c;
- register_id ();
-
- return *this;
- }
-
- template <typename C, typename B>
- id<C, B>& id<C, B>::
- operator= (const C* s)
- {
- unregister_id ();
- base () = s;
- register_id ();
-
- return *this;
- }
-
- template <typename C, typename B>
- id<C, B>& id<C, B>::
- operator= (const std::basic_string<C>& s)
- {
- unregister_id ();
- base () = s;
- register_id ();
-
- return *this;
- }
-
- template <typename C, typename B>
- id<C, B>& id<C, B>::
- operator= (const id& x)
- {
- unregister_id ();
- base () = x;
- register_id ();
-
- return *this;
- }
-
- template <typename C, typename B>
- void id<C, B>::
- _container (container* c)
- {
- B::_container (c);
- register_id ();
- }
-
- template <typename C, typename B>
- void id<C, B>::
- register_id ()
- {
- container* r (this->_root ());
-
- if (r != 0 && !this->empty ())
- r->_register_id (identity_, this->_container ());
- }
-
- template <typename C, typename B>
- void id<C, B>::
- unregister_id ()
- {
- container* r (this->_root ());
-
- if (r != 0 && !this->empty ())
- r->_unregister_id (identity_);
- }
-
-
- // idref
- //
- template <typename C, typename B, typename T>
- idref<C, B, T>* idref<C, B, T>::
- _clone (flags f, container* c) const
- {
- return new idref (*this, f, c);
- }
-
- template <typename C, typename B, typename T>
- const _type* idref<C, B, T>::
- get_ () const
- {
- if (!this->empty () && this->_container () != 0)
- {
- return this->_root ()->_lookup_id (identity_);
- }
- else
- return 0;
- }
-
- template <typename C, typename B, typename T>
- _type* idref<C, B, T>::
- get_ ()
- {
- if (!this->empty () && this->_container () != 0)
- {
- return this->_root ()->_lookup_id (identity_);
- }
- else
- return 0;
- }
-
- template <typename C, typename B, typename T>
- void idref<C, B, T>::
- true_ ()
- {
- }
-
-
- // idrefs
- //
- template <typename C, typename B, typename idref>
- idrefs<C, B, idref>* idrefs<C, B, idref>::
- _clone (flags f, container* c) const
- {
- return new idrefs (*this, f, c);
- }
-
-
- // uri
- //
- template <typename C, typename B>
- uri<C, B>* uri<C, B>::
- _clone (flags f, container* c) const
- {
- return new uri (*this, f, c);
- }
-
-
- // qname
- //
- template <typename C, typename B, typename uri, typename ncname>
- qname<C, B, uri, ncname>* qname<C, B, uri, ncname>::
- _clone (flags f, container* c) const
- {
- return new qname (*this, f, c);
- }
-
-
- // base64_binary
- //
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (size_t size)
- : buffer<C> (size)
- {
- }
-
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (size_t size, size_t capacity)
- : buffer<C> (size, capacity)
- {
- }
-
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (const void* data, size_t size)
- : buffer<C> (data, size)
- {
- }
-
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (const void* data, size_t size, size_t capacity)
- : buffer<C> (data, size, capacity)
- {
- }
-
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (void* data, size_t size, size_t capacity, bool own)
- : buffer<C> (data, size, capacity, own)
- {
- }
-
- template <typename C, typename B>
- base64_binary<C, B>* base64_binary<C, B>::
- _clone (flags f, container* c) const
- {
- return new base64_binary (*this, f, c);
- }
-
- template <typename C, typename B>
- std::basic_string<C> base64_binary<C, B>::
- encode () const
- {
- using namespace xercesc;
- std::basic_string<C> str;
-
- XMLSize_t n;
- xml::std_memory_manager mm;
-
-#ifdef XSD_CXX11
- std::unique_ptr<XMLByte[], xml::std_memory_manager&> r (
-#else
- auto_array<XMLByte, xml::std_memory_manager> r (
-#endif
- Base64::encode (
- reinterpret_cast<const XMLByte*> (this->data ()),
- static_cast<XMLSize_t> (this->size ()),
- &n,
- &mm),
- mm);
-
- if (r)
- {
- str.reserve (n + 1);
- str.resize (n);
-
- for (XMLSize_t i (0); i < n; ++i)
- str[i] = C (r[i]);
- }
- else
- {
- //@@ throw
- }
-
- return str;
- }
-
- template <typename C, typename B>
- void base64_binary<C, B>::
- decode (const XMLCh* src)
- {
- using namespace xercesc;
-
- xml::std_memory_manager mm;
- XMLSize_t size;
-
-#ifdef XSD_CXX11
- std::unique_ptr<XMLByte[], xml::std_memory_manager&> data (
-#else
- auto_array<XMLByte, xml::std_memory_manager> data (
-#endif
- Base64::decodeToXMLByte (src, &size, &mm, Base64::Conf_RFC2045),
- mm);
-
- if (data)
- {
- buffer<C> tmp (data.get (), size, size, true);
- data.release ();
- this->swap (tmp); // g++ 4.1 likes it qualified, not sure why.
- }
- else
- {
- //@@ throw
- }
- }
-
-
- // hex_binary
- //
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (size_t size)
- : buffer<C> (size)
- {
- }
-
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (size_t size, size_t capacity)
- : buffer<C> (size, capacity)
- {
- }
-
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (const void* data, size_t size)
- : buffer<C> (data, size)
- {
- }
-
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (const void* data, size_t size, size_t capacity)
- : buffer<C> (data, size, capacity)
- {
- }
-
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (void* data, size_t size, size_t capacity, bool own)
- : buffer<C> (data, size, capacity, own)
- {
- }
-
- template <typename C, typename B>
- hex_binary<C, B>* hex_binary<C, B>::
- _clone (flags f, container* c) const
- {
- return new hex_binary (*this, f, c);
- }
-
- template <typename C, typename B>
- std::basic_string<C> hex_binary<C, B>::
- encode () const
- {
- std::basic_string<C> str;
-
- const char tab[] = "0123456789ABCDEF";
-
- if (size_t n = this->size ())
- {
- str.reserve (2 * n + 1);
- str.resize (2 * n);
-
- for (size_t i (0); i < n; ++i)
- {
- unsigned char byte (
- static_cast<unsigned char> (*(this->data () + i)));
- unsigned char h (byte >> 4);
- unsigned char l (byte & 0x0F);
-
- str[2 * i] = C (tab[h]);
- str[2 * i + 1] = C (tab[l]);
- }
- }
-
- return str;
- }
-
- namespace bits
- {
- inline unsigned char
- hex_decode (XMLCh c)
- {
- unsigned char r (0xFF);
-
- if (c >= '0' && c <= '9')
- r = static_cast<unsigned char> (c - '0');
- else if (c >= 'A' && c <= 'F')
- r = static_cast<unsigned char> (10 + (c - 'A'));
- else if (c >= 'a' && c <= 'f')
- r = static_cast<unsigned char> (10 + (c - 'a'));
-
- return r;
- }
- }
-
- template <typename C, typename B>
- void hex_binary<C, B>::
- decode (const XMLCh* src)
- {
- size_t src_n (xercesc::XMLString::stringLen (src));
-
- if (src_n % 2 != 0)
- return; // @@ throw
-
- size_t n (src_n / 2);
-
- buffer<C> tmp (n);
-
- for (size_t i (0); i < n; ++i)
- {
- unsigned char h (bits::hex_decode (src[2 * i]));
- unsigned char l (bits::hex_decode (src[2 * i + 1]));
-
- if (h == 0xFF || l == 0xFF)
- return; //@@ throw
-
- tmp.data()[i] = (h << 4) | l;
- }
-
- this->swap (tmp); // g++ 4.1 likes it qualified, not sure why.
- }
-
-
- // entity
- //
- template <typename C, typename B>
- entity<C, B>* entity<C, B>::
- _clone (flags f, container* c) const
- {
- return new entity (*this, f, c);
- }
-
-
- // entities
- //
- template <typename C, typename B, typename entity>
- entities<C, B, entity>* entities<C, B, entity>::
- _clone (flags f, container* c) const
- {
- return new entities (*this, f, c);
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/tree/xdr-stream-common.hxx b/xsd/libxsd/xsd/cxx/tree/xdr-stream-common.hxx
deleted file mode 100644
index d3b6ce1..0000000
--- a/xsd/libxsd/xsd/cxx/tree/xdr-stream-common.hxx
+++ /dev/null
@@ -1,25 +0,0 @@
-// file : xsd/cxx/tree/xdr-stream-common.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_XDR_STREAM_COMMON_HXX
-#define XSD_CXX_TREE_XDR_STREAM_COMMON_HXX
-
-#include <xsd/cxx/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // Base exception for XDR insertion/extraction exceptions.
- //
- struct xdr_stream_operation: xsd::cxx::exception
- {
- };
- }
- }
-}
-
-#endif // XSD_CXX_TREE_XDR_STREAM_COMMON_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/xdr-stream-extraction.hxx b/xsd/libxsd/xsd/cxx/tree/xdr-stream-extraction.hxx
deleted file mode 100644
index d64825b..0000000
--- a/xsd/libxsd/xsd/cxx/tree/xdr-stream-extraction.hxx
+++ /dev/null
@@ -1,307 +0,0 @@
-// file : xsd/cxx/tree/xdr-stream-extraction.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_XDR_STREAM_EXTRACTION_HXX
-#define XSD_CXX_TREE_XDR_STREAM_EXTRACTION_HXX
-
-#include <rpc/types.h>
-#include <rpc/xdr.h>
-
-// Of course BSD has to be different and name its functions u_intXX
-// instead of uintXX. Plus it does not have XX == 8.
-//
-#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__)
-# if !defined(XSD_CXX_TREE_ASSUME_SUN_XDR) && !defined(xdr_int8_t)
-# define xdr_int8_t(x, y) xdr_char(x, reinterpret_cast<char*> (y))
-# define xdr_uint8_t(x, y) xdr_u_char(x, reinterpret_cast<unsigned char*> (y))
-# define xdr_uint16_t xdr_u_int16_t
-# define xdr_uint32_t xdr_u_int32_t
-# define xdr_uint64_t xdr_u_int64_t
-# endif
-#endif
-
-#include <string>
-
-#include <xsd/cxx/tree/buffer.hxx>
-#include <xsd/cxx/tree/istream.hxx>
-#include <xsd/cxx/tree/xdr-stream-common.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- struct xdr_stream_extraction: xdr_stream_operation
- {
- virtual const char*
- what () const throw ()
- {
- return "XDR stream extraction operation failed";
- }
- };
-
-
- // as_size
- //
-#ifdef XSD_CXX_TREE_USE_64_BIT_SIZE
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_size<T>& x)
- {
- uint64_t v;
-
- if (!xdr_uint64_t (&s.impl (), &v) || v > ~(T (0)))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-#else
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_size<T>& x)
- {
- uint32_t v;
-
- if (!xdr_uint32_t (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-#endif
-
-
- // 8-bit
- //
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_int8<T>& x)
- {
- int8_t v;
-
- if (!xdr_int8_t (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_uint8<T>& x)
- {
- uint8_t v;
-
- if (!xdr_uint8_t (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
-
- // 16-bit
- //
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_int16<T>& x)
- {
- int16_t v;
-
- if (!xdr_int16_t (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_uint16<T>& x)
- {
- uint16_t v;
-
- if (!xdr_uint16_t (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
-
- // 32-bit
- //
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_int32<T>& x)
- {
- int32_t v;
-
- if (!xdr_int32_t (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_uint32<T>& x)
- {
- uint32_t v;
-
- if (!xdr_uint32_t (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
-
- // 64-bit
- //
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_int64<T>& x)
- {
- int64_t v;
-
- if (!xdr_int64_t (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_uint64<T>& x)
- {
- uint64_t v;
-
- if (!xdr_uint64_t (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
-
- // Boolean
- //
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_bool<T>& x)
- {
- bool_t v;
-
- if (!xdr_bool (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
-
- // Floating-point
- //
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_float32<T>& x)
- {
- float v;
-
- if (!xdr_float (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
- template <typename T>
- inline istream<XDR>&
- operator>> (istream<XDR>& s, istream<XDR>::as_float64<T>& x)
- {
- double v;
-
- if (!xdr_double (&s.impl (), &v))
- throw xdr_stream_extraction ();
-
- x.x_ = static_cast<T> (v);
-
- return s;
- }
-
- // Extraction of std::basic_string.
- //
-
- inline istream<XDR>&
- operator>> (istream<XDR>& s, std::basic_string<char>& x)
- {
- unsigned int n;
-
- if (!xdr_u_int (&s.impl (), &n))
- throw xdr_stream_extraction ();
-
- // Dangerous but fast.
- //
- x.clear ();
-
- if (n != 0)
- {
- x.resize (n);
- char* p (const_cast<char*> (x.c_str ()));
-
- if (!xdr_opaque (&s.impl (), p, n))
- throw xdr_stream_extraction ();
- }
-
- return s;
- }
-
- // Wide strings are not supported by XDR.
- //
- // inline istream<XDR>&
- // operator>> (istream<XDR>& s, std::basic_string<wchar_t>& x)
- // {
- // }
-
-
- // Extraction of a binary buffer.
- //
- template <typename C>
- istream<XDR>&
- operator>> (istream<XDR>& s, buffer<C>& x)
- {
- unsigned int n;
-
- if (!xdr_u_int (&s.impl (), &n))
- throw xdr_stream_extraction ();
-
- x.size (n);
-
- if (!xdr_opaque (&s.impl (), x.data (), n))
- throw xdr_stream_extraction ();
-
- return s;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_XDR_STREAM_EXTRACTION_HXX
diff --git a/xsd/libxsd/xsd/cxx/tree/xdr-stream-insertion.hxx b/xsd/libxsd/xsd/cxx/tree/xdr-stream-insertion.hxx
deleted file mode 100644
index 113569f..0000000
--- a/xsd/libxsd/xsd/cxx/tree/xdr-stream-insertion.hxx
+++ /dev/null
@@ -1,271 +0,0 @@
-// file : xsd/cxx/tree/xdr-stream-insertion.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_XDR_STREAM_INSERTION_HXX
-#define XSD_CXX_TREE_XDR_STREAM_INSERTION_HXX
-
-#include <rpc/types.h>
-#include <rpc/xdr.h>
-
-// Of course BSD has to be different and name its functions u_intXX
-// instead of uintXX. Plus it does not have XX == 8.
-//
-#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__)
-# if !defined(XSD_CXX_TREE_ASSUME_SUN_XDR) && !defined(xdr_int8_t)
-# define xdr_int8_t(x, y) xdr_char(x, reinterpret_cast<char*> (y))
-# define xdr_uint8_t(x, y) xdr_u_char(x, reinterpret_cast<unsigned char*> (y))
-# define xdr_uint16_t xdr_u_int16_t
-# define xdr_uint32_t xdr_u_int32_t
-# define xdr_uint64_t xdr_u_int64_t
-# endif
-#endif
-
-#include <string>
-
-#include <xsd/cxx/tree/buffer.hxx>
-#include <xsd/cxx/tree/ostream.hxx>
-#include <xsd/cxx/tree/xdr-stream-common.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- struct xdr_stream_insertion: xdr_stream_operation
- {
- virtual const char*
- what () const throw ()
- {
- return "XDR stream insertion operation failed";
- }
- };
-
- // as_size
- //
-#ifdef XSD_CXX_TREE_USE_64_BIT_SIZE
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_size<T> x)
- {
- uint64_t v (static_cast<uint64_t> (x.x_));
-
- if (!xdr_uint64_t (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-#else
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_size<T> x)
- {
- uint32_t v (static_cast<uint32_t> (x.x_));
-
- if (x.x_ > ~(uint32_t (0)) || !xdr_uint32_t (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-#endif
-
-
- // 8-bit
- //
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_int8<T> x)
- {
- int8_t v (static_cast<int8_t> (x.x_));
-
- if (!xdr_int8_t (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_uint8<T> x)
- {
- uint8_t v (static_cast<uint8_t> (x.x_));
-
- if (!xdr_uint8_t (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
-
- // 16-bit
- //
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_int16<T> x)
- {
- int16_t v (static_cast<int16_t> (x.x_));
-
- if (!xdr_int16_t (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_uint16<T> x)
- {
- uint16_t v (static_cast<uint16_t> (x.x_));
-
- if (!xdr_uint16_t (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
-
- // 32-bit
- //
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_int32<T> x)
- {
- int32_t v (static_cast<int32_t> (x.x_));
-
- if (!xdr_int32_t (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_uint32<T> x)
- {
- uint32_t v (static_cast<uint32_t> (x.x_));
-
- if (!xdr_uint32_t (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
-
- // 64-bit
- //
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_int64<T> x)
- {
- int64_t v (static_cast<int64_t> (x.x_));
-
- if (!xdr_int64_t (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_uint64<T> x)
- {
- uint64_t v (static_cast<uint64_t> (x.x_));
-
- if (!xdr_uint64_t (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
-
- // Boolean
- //
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_bool<T> x)
- {
- bool_t v (static_cast<bool_t> (x.x_));
-
- if (!xdr_bool (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
-
- // Floating-point
- //
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_float32<T> x)
- {
- float v (static_cast<float> (x.x_));
-
- if (!xdr_float (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
- template <typename T>
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, ostream<XDR>::as_float64<T> x)
- {
- double v (static_cast<double> (x.x_));
-
- if (!xdr_double (&s.impl (), &v))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
- // Insertion of std::basic_string.
- //
-
- inline ostream<XDR>&
- operator<< (ostream<XDR>& s, const std::basic_string<char>& x)
- {
- // XDR strings are hard-wired with a 32 bit (unsigned int) length.
- //
- char* p (const_cast<char*> (x.c_str ()));
- unsigned int n (static_cast<unsigned int> (x.length ()));
-
- if (x.length () > ~((unsigned int) 0) ||
- !xdr_u_int (&s.impl (), &n) ||
- !xdr_opaque (&s.impl (), p, n))
- throw xdr_stream_insertion ();
-
- return s;
- }
-
- // Wide strings are not supported by XDR.
- //
- // inline ostream<XDR>&
- // operator<< (ostream<XDR>& s, const std::basic_string<wchar_t>& x)
- // {
- // }
-
-
- // Insertion of a binary buffer.
- //
- template <typename C>
- ostream<XDR>&
- operator<< (ostream<XDR>& s, const buffer<C>& x)
- {
- // It is not possible to write an array with a 64-bit size.
- //
- unsigned int n (static_cast<unsigned int> (x.size ()));
-
- if (x.size () > ~((unsigned int) 0) ||
- !xdr_u_int (&s.impl (), &n) ||
- !xdr_opaque (&s.impl (), const_cast<char*> (x.data ()), n))
- throw xdr_stream_insertion ();
-
- return s;
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_XDR_STREAM_INSERTION_HXX
diff --git a/xsd/libxsd/xsd/cxx/version.hxx b/xsd/libxsd/xsd/cxx/version.hxx
deleted file mode 100644
index 2e2312f..0000000
--- a/xsd/libxsd/xsd/cxx/version.hxx
+++ /dev/null
@@ -1,28 +0,0 @@
-// file : xsd/cxx/version.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_VERSION_HXX
-#define XSD_CXX_VERSION_HXX
-
-// Version format is AABBCCDD where
-//
-// AA - major version number
-// BB - minor version number
-// CC - bugfix version number
-// DD - alpha / beta (DD + 50) version number
-//
-// When DD is not 00, 1 is subtracted from AABBCC. For example:
-//
-// Version AABBCCDD
-// 2.0.0 02000000
-// 2.1.0 02010000
-// 2.1.1 02010100
-// 2.2.0.a1 02019901
-// 3.0.0.b2 02999952
-//
-
-#define XSD_STR_VERSION "4.0.0"
-#define XSD_INT_VERSION 4000000L
-
-#endif // XSD_CXX_VERSION_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/bits/literals.hxx b/xsd/libxsd/xsd/cxx/xml/bits/literals.hxx
deleted file mode 100644
index 51d08ad..0000000
--- a/xsd/libxsd/xsd/cxx/xml/bits/literals.hxx
+++ /dev/null
@@ -1,82 +0,0 @@
-// file : xsd/cxx/xml/bits/literals.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_BITS_LITERALS_HXX
-#define XSD_CXX_XML_BITS_LITERALS_HXX
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace bits
- {
- template <typename C>
- const C*
- xml_prefix ();
-
- template <typename C>
- const C*
- xml_namespace ();
-
- template <typename C>
- const C*
- xmlns_prefix ();
-
- template <typename C>
- const C*
- xmlns_namespace ();
-
- template <typename C>
- const C*
- xsi_prefix ();
-
- template <typename C>
- const C*
- xsi_namespace ();
-
- template <typename C>
- const C*
- type ();
-
- template <typename C>
- const C*
- nil_lit ();
-
- template <typename C>
- const C*
- schema_location ();
-
- template <typename C>
- const C*
- no_namespace_schema_location ();
-
- template <typename C>
- const C*
- first_prefix ();
-
- template <typename C>
- const C*
- second_prefix ();
-
- template <typename C>
- const C*
- third_prefix ();
-
- template <typename C>
- const C*
- fourth_prefix ();
-
- template <typename C>
- const C*
- fifth_prefix ();
- }
- }
- }
-}
-
-#endif // XSD_CXX_XML_BITS_LITERALS_HXX
-
-#include <xsd/cxx/xml/bits/literals.ixx>
diff --git a/xsd/libxsd/xsd/cxx/xml/bits/literals.ixx b/xsd/libxsd/xsd/cxx/xml/bits/literals.ixx
deleted file mode 100644
index bd8f4ed..0000000
--- a/xsd/libxsd/xsd/cxx/xml/bits/literals.ixx
+++ /dev/null
@@ -1,260 +0,0 @@
-// file : xsd/cxx/xml/bits/literals.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_BITS_LITERALS_IXX
-#define XSD_CXX_XML_BITS_LITERALS_IXX
-
-#endif // XSD_CXX_XML_BITS_LITERALS_IXX
-
-
-#if defined(XSD_USE_CHAR) || !defined(XSD_USE_WCHAR)
-
-#ifndef XSD_CXX_XML_BITS_LITERALS_IXX_CHAR
-#define XSD_CXX_XML_BITS_LITERALS_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace bits
- {
- template <>
- inline const char*
- xml_prefix<char> ()
- {
- return "xml";
- }
-
- template <>
- inline const char*
- xml_namespace<char> ()
- {
- return "http://www.w3.org/XML/1998/namespace";
- }
-
- template <>
- inline const char*
- xmlns_prefix<char> ()
- {
- return "xmlns";
- }
-
- template <>
- inline const char*
- xmlns_namespace<char> ()
- {
- return "http://www.w3.org/2000/xmlns/";
- }
-
- template <>
- inline const char*
- xsi_prefix<char> ()
- {
- return "xsi";
- }
-
- template <>
- inline const char*
- xsi_namespace<char> ()
- {
- return "http://www.w3.org/2001/XMLSchema-instance";
- }
-
- template <>
- inline const char*
- type<char> ()
- {
- return "type";
- }
-
- template <>
- inline const char*
- nil_lit<char> ()
- {
- return "nil";
- }
-
- template <>
- inline const char*
- schema_location<char> ()
- {
- return "schemaLocation";
- }
-
- template <>
- inline const char*
- no_namespace_schema_location<char> ()
- {
- return "noNamespaceSchemaLocation";
- }
-
- template <>
- inline const char*
- first_prefix<char> ()
- {
- return "p1";
- }
-
- template <>
- inline const char*
- second_prefix<char> ()
- {
- return "p2";
- }
-
- template <>
- inline const char*
- third_prefix<char> ()
- {
- return "p3";
- }
-
- template <>
- inline const char*
- fourth_prefix<char> ()
- {
- return "p4";
- }
-
- template <>
- inline const char*
- fifth_prefix<char> ()
- {
- return "p5";
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_XML_BITS_LITERALS_IXX_CHAR
-#endif // XSD_USE_CHAR
-
-
-#if defined(XSD_USE_WCHAR) || !defined(XSD_USE_CHAR)
-
-#ifndef XSD_CXX_XML_BITS_LITERALS_IXX_WCHAR
-#define XSD_CXX_XML_BITS_LITERALS_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace bits
- {
- template <>
- inline const wchar_t*
- xml_prefix<wchar_t> ()
- {
- return L"xml";
- }
-
- template <>
- inline const wchar_t*
- xml_namespace<wchar_t> ()
- {
- return L"http://www.w3.org/XML/1998/namespace";
- }
-
- template <>
- inline const wchar_t*
- xmlns_prefix<wchar_t> ()
- {
- return L"xmlns";
- }
-
- template <>
- inline const wchar_t*
- xmlns_namespace<wchar_t> ()
- {
- return L"http://www.w3.org/2000/xmlns/";
- }
-
- template <>
- inline const wchar_t*
- xsi_prefix<wchar_t> ()
- {
- return L"xsi";
- }
-
- template <>
- inline const wchar_t*
- xsi_namespace<wchar_t> ()
- {
- return L"http://www.w3.org/2001/XMLSchema-instance";
- }
-
- template <>
- inline const wchar_t*
- type<wchar_t> ()
- {
- return L"type";
- }
-
- template <>
- inline const wchar_t*
- nil_lit<wchar_t> ()
- {
- return L"nil";
- }
-
- template <>
- inline const wchar_t*
- schema_location<wchar_t> ()
- {
- return L"schemaLocation";
- }
-
- template <>
- inline const wchar_t*
- no_namespace_schema_location<wchar_t> ()
- {
- return L"noNamespaceSchemaLocation";
- }
-
- template <>
- inline const wchar_t*
- first_prefix<wchar_t> ()
- {
- return L"p1";
- }
-
- template <>
- inline const wchar_t*
- second_prefix<wchar_t> ()
- {
- return L"p2";
- }
-
- template <>
- inline const wchar_t*
- third_prefix<wchar_t> ()
- {
- return L"p3";
- }
-
- template <>
- inline const wchar_t*
- fourth_prefix<wchar_t> ()
- {
- return L"p4";
- }
-
- template <>
- inline const wchar_t*
- fifth_prefix<wchar_t> ()
- {
- return L"p5";
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_XML_BITS_LITERALS_IXX_WCHAR
-#endif // XSD_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/xml/char-iso8859-1.hxx b/xsd/libxsd/xsd/cxx/xml/char-iso8859-1.hxx
deleted file mode 100644
index 309e8ef..0000000
--- a/xsd/libxsd/xsd/cxx/xml/char-iso8859-1.hxx
+++ /dev/null
@@ -1,71 +0,0 @@
-// file : xsd/cxx/xml/char-iso8859-1.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_TRANSCODER
-#define XSD_CXX_XML_TRANSCODER
-#define XSD_CXX_XML_TRANSCODER_CHAR_ISO8859_1
-
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <xercesc/util/XercesDefs.hpp> // XMLCh
-
-#include <xsd/cxx/xml/exceptions.hxx> // invalid_utf16_string
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- struct iso8859_1_unrepresentable {};
-
- // UTF-16 to/from ISO-8859-1 transcoder.
- //
- template <typename C>
- struct char_iso8859_1_transcoder
- {
- static std::basic_string<C>
- to (const XMLCh* s, std::size_t length);
-
- static XMLCh*
- from (const C* s, std::size_t length);
-
- // Get/set a replacement for unrepresentable characters. If set to
- // 0 (the default value), throw iso8859_1_unrepresentable instead.
- //
- static C
- unrep_char ()
- {
- return unrep_char_;
- }
-
- static void
- unrep_char (C c)
- {
- unrep_char_ = c;
- }
-
- private:
- static C unrep_char_;
- };
-
- typedef char_iso8859_1_transcoder<char> char_transcoder;
- }
- }
-}
-
-#include <xsd/cxx/xml/char-iso8859-1.txx>
-
-#else
-# ifndef XSD_CXX_XML_TRANSCODER_CHAR_ISO8859_1
- //
- // If you get this error, it usually means that either you compiled
- // your schemas with different --char-encoding values or you included
- // some of the libxsd headers (e.g., xsd/cxx/xml/string.hxx) directly
- // without first including the correct xsd/cxx/xml/char-*.hxx header.
- //
-# error conflicting character encoding detected
-# endif
-#endif // XSD_CXX_XML_TRANSCODER
diff --git a/xsd/libxsd/xsd/cxx/xml/char-iso8859-1.txx b/xsd/libxsd/xsd/cxx/xml/char-iso8859-1.txx
deleted file mode 100644
index acef18c..0000000
--- a/xsd/libxsd/xsd/cxx/xml/char-iso8859-1.txx
+++ /dev/null
@@ -1,111 +0,0 @@
-// file : xsd/cxx/xml/char-iso8859-1.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/config.hxx> // XSD_CXX11
-
-#ifdef XSD_CXX11
-# include <memory> // std::unique_ptr
-#else
-# include <xsd/cxx/auto-array.hxx>
-#endif
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- template <typename C>
- C char_iso8859_1_transcoder<C>::unrep_char_ = 0;
-
- template <typename C>
- std::basic_string<C> char_iso8859_1_transcoder<C>::
- to (const XMLCh* s, std::size_t len)
- {
- const XMLCh* end (s + len);
-
- // Find what the resulting buffer size will be.
- //
- std::size_t rl (0);
- unsigned int u (0); // Four byte UCS-4 char.
-
- bool valid (true);
- const XMLCh* p (s);
-
- for (; p < end; ++p)
- {
- if (*p >= 0xD800 && *p <= 0xDBFF)
- {
- // Make sure we have one more char and it has a valid
- // value for the second char in a surrogate pair.
- //
- if (++p == end || !((*p >= 0xDC00) && (*p <= 0xDFFF)))
- {
- valid = false;
- break;
- }
- }
-
- rl++;
- }
-
- if (!valid)
- throw invalid_utf16_string ();
-
- std::basic_string<C> r;
- r.reserve (rl + 1);
- r.resize (rl);
- C* rs (const_cast<C*> (r.c_str ()));
- std::size_t i (0);
-
- p = s;
-
- // Tight first loop for the common case.
- //
- for (; p < end && *p < 0x100; ++p)
- rs[i++] = C (*p);
-
- if (p < end && unrep_char_ == 0)
- throw iso8859_1_unrepresentable ();
-
- for (; p < end; ++p)
- {
- XMLCh x (*p);
-
- if ((x >= 0xD800) && (x <= 0xDBFF))
- {
- u = ((x - 0xD800) << 10) + (*++p - 0xDC00) + 0x10000;
- }
- else
- u = x;
-
- rs[i++] = u < 0x100 ? C (u) : unrep_char_;
- }
-
- return r;
- }
-
- template <typename C>
- XMLCh* char_iso8859_1_transcoder<C>::
- from (const C* s, std::size_t len)
- {
- const C* end (s + len);
-
-#ifdef XSD_CXX11
- std::unique_ptr<XMLCh[]> r (
-#else
- auto_array<XMLCh> r (
-#endif
- new XMLCh[len + 1]);
- XMLCh* ir (r.get ());
-
- for (const C* p (s); p < end; ++p)
- *ir++ = static_cast<unsigned char> (*p);
-
- *ir = XMLCh (0);
- return r.release ();
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/xml/char-lcp.hxx b/xsd/libxsd/xsd/cxx/xml/char-lcp.hxx
deleted file mode 100644
index ce46229..0000000
--- a/xsd/libxsd/xsd/cxx/xml/char-lcp.hxx
+++ /dev/null
@@ -1,55 +0,0 @@
-// file : xsd/cxx/xml/char-lcp.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_TRANSCODER
-#define XSD_CXX_XML_TRANSCODER
-#define XSD_CXX_XML_TRANSCODER_CHAR_LCP
-
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <xercesc/util/XercesDefs.hpp> // XMLCh
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- // UTF-16 to/from Xerces-C++ local code page (LCP) transcoder.
- //
- // Note that this transcoder has a custom interface due to Xerces-C++
- // idiosyncrasies. Don't use it as a base for your custom transcoder.
- //
- template <typename C>
- struct char_lcp_transcoder
- {
- static std::basic_string<C>
- to (const XMLCh* s);
-
- static std::basic_string<C>
- to (const XMLCh* s, std::size_t length);
-
- static XMLCh*
- from (const C* s);
- };
-
- typedef char_lcp_transcoder<char> char_transcoder;
- }
- }
-}
-
-#include <xsd/cxx/xml/char-lcp.txx>
-
-#else
-# ifndef XSD_CXX_XML_TRANSCODER_CHAR_LCP
- //
- // If you get this error, it usually means that either you compiled
- // your schemas with different --char-encoding values or you included
- // some of the libxsd headers (e.g., xsd/cxx/xml/string.hxx) directly
- // without first including the correct xsd/cxx/xml/char-*.hxx header.
- //
-# error conflicting character encoding detected
-# endif
-#endif // XSD_CXX_XML_TRANSCODER
diff --git a/xsd/libxsd/xsd/cxx/xml/char-lcp.txx b/xsd/libxsd/xsd/cxx/xml/char-lcp.txx
deleted file mode 100644
index c71d92f..0000000
--- a/xsd/libxsd/xsd/cxx/xml/char-lcp.txx
+++ /dev/null
@@ -1,74 +0,0 @@
-// file : xsd/cxx/xml/char-lcp.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cstring> // std::memcpy
-
-#include <xercesc/util/XMLString.hpp>
-
-#include <xsd/cxx/config.hxx> // XSD_CXX11
-
-#ifdef XSD_CXX11
-# include <memory> // std::unique_ptr
-#else
-# include <xsd/cxx/auto-array.hxx>
-#endif
-
-#include <xsd/cxx/xml/std-memory-manager.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- template <typename C>
- std::basic_string<C> char_lcp_transcoder<C>::
- to (const XMLCh* s)
- {
- std_memory_manager mm;
-#ifdef XSD_CXX11
- std::unique_ptr<C[], std_memory_manager&> r (
-#else
- auto_array<C, std_memory_manager> r (
-#endif
- xercesc::XMLString::transcode (s, &mm), mm);
- return std::basic_string<C> (r.get ());
- }
-
- template <typename C>
- std::basic_string<C> char_lcp_transcoder<C>::
- to (const XMLCh* s, std::size_t len)
- {
-#ifdef XSD_CXX11
- std::unique_ptr<XMLCh[]> tmp (
-#else
- auto_array<XMLCh> tmp (
-#endif
- new XMLCh[len + 1]);
- std::memcpy (tmp.get (), s, len * sizeof (XMLCh));
- tmp[len] = XMLCh (0);
-
- std_memory_manager mm;
-#ifdef XSD_CXX11
- std::unique_ptr<C[], std_memory_manager&> r (
-#else
- auto_array<C, std_memory_manager> r (
-#endif
- xercesc::XMLString::transcode (tmp.get (), &mm), mm);
-
- tmp.reset ();
-
- return std::basic_string<C> (r.get ());
- }
-
- template <typename C>
- XMLCh* char_lcp_transcoder<C>::
- from (const C* s)
- {
- std_memory_manager mm;
- return xercesc::XMLString::transcode (s, &mm);
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/xml/char-utf8.hxx b/xsd/libxsd/xsd/cxx/xml/char-utf8.hxx
deleted file mode 100644
index afc923a..0000000
--- a/xsd/libxsd/xsd/cxx/xml/char-utf8.hxx
+++ /dev/null
@@ -1,56 +0,0 @@
-// file : xsd/cxx/xml/char-utf8.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_TRANSCODER
-#define XSD_CXX_XML_TRANSCODER
-#define XSD_CXX_XML_TRANSCODER_CHAR_UTF8
-
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <xercesc/util/XercesDefs.hpp> // XMLCh
-
-#include <xsd/cxx/xml/exceptions.hxx> // invalid_utf16_string
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- struct invalid_utf8_string {};
-
- // UTF-16 to/from UTF-8 transcoder.
- //
- template <typename C>
- struct char_utf8_transcoder
- {
- static std::basic_string<C>
- to (const XMLCh* s, std::size_t length);
-
- static XMLCh*
- from (const C* s, std::size_t length);
-
- private:
- static const unsigned char first_byte_mask_[5];
- };
-
- typedef char_utf8_transcoder<char> char_transcoder;
- }
- }
-}
-
-#include <xsd/cxx/xml/char-utf8.txx>
-
-#else
-# ifndef XSD_CXX_XML_TRANSCODER_CHAR_UTF8
- //
- // If you get this error, it usually means that either you compiled
- // your schemas with different --char-encoding values or you included
- // some of the libxsd headers (e.g., xsd/cxx/xml/string.hxx) directly
- // without first including the correct xsd/cxx/xml/char-*.hxx header.
- //
-# error conflicting character encoding detected
-# endif
-#endif // XSD_CXX_XML_TRANSCODER
diff --git a/xsd/libxsd/xsd/cxx/xml/char-utf8.txx b/xsd/libxsd/xsd/cxx/xml/char-utf8.txx
deleted file mode 100644
index a6511be..0000000
--- a/xsd/libxsd/xsd/cxx/xml/char-utf8.txx
+++ /dev/null
@@ -1,303 +0,0 @@
-// file : xsd/cxx/xml/char-utf8.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/config.hxx> // XSD_CXX11
-
-#ifdef XSD_CXX11
-# include <memory> // std::unique_ptr
-#else
-# include <xsd/cxx/auto-array.hxx>
-#endif
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- template <typename C>
- const unsigned char char_utf8_transcoder<C>::first_byte_mask_[5] =
- {
- 0x00, 0x00, 0xC0, 0xE0, 0xF0
- };
-
- template <typename C>
- std::basic_string<C> char_utf8_transcoder<C>::
- to (const XMLCh* s, std::size_t len)
- {
- const XMLCh* end (s + len);
-
- // Find what the resulting buffer size will be.
- //
- std::size_t rl (0);
- unsigned int u (0); // Four byte UCS-4 char.
-
- bool valid (true);
- const XMLCh* p (s);
-
- for (; p < end; ++p)
- {
- XMLCh x (*p);
-
- if (x < 0xD800 || x > 0xDBFF)
- u = x;
- else
- {
- // Make sure we have one more char and it has a valid
- // value for the second char in a surrogate pair.
- //
- if (++p == end || !((*p >= 0xDC00) && (*p <= 0xDFFF)))
- {
- valid = false;
- break;
- }
-
- u = ((x - 0xD800) << 10) + (*p - 0xDC00) + 0x10000;
- }
-
- if (u < 0x80)
- rl++;
- else if (u < 0x800)
- rl += 2;
- else if (u < 0x10000)
- rl += 3;
- else if (u < 0x110000)
- rl += 4;
- else
- {
- valid = false;
- break;
- }
- }
-
- if (!valid)
- throw invalid_utf16_string ();
-
- std::basic_string<C> r;
- r.reserve (rl + 1);
- r.resize (rl);
- C* rs (const_cast<C*> (r.c_str ()));
-
- std::size_t i (0);
- unsigned int count (0);
-
- p = s;
-
- // Tight first loop for the common case.
- //
- for (; p < end && *p < 0x80; ++p)
- rs[i++] = C (*p);
-
- for (; p < end; ++p)
- {
- XMLCh x (*p);
-
- if ((x >= 0xD800) && (x <= 0xDBFF))
- {
- u = ((x - 0xD800) << 10) + (*++p - 0xDC00) + 0x10000;
- }
- else
- u = x;
-
- if (u < 0x80)
- count = 1;
- else if (u < 0x800)
- count = 2;
- else if (u < 0x10000)
- count = 3;
- else if (u < 0x110000)
- count = 4;
-
- switch(count)
- {
- case 4:
- {
- rs[i + 3] = C ((u | 0x80UL) & 0xBFUL);
- u >>= 6;
- }
- case 3:
- {
- rs[i + 2] = C ((u | 0x80UL) & 0xBFUL);
- u >>= 6;
- }
- case 2:
- {
- rs[i + 1] = C ((u | 0x80UL) & 0xBFUL);
- u >>= 6;
- }
- case 1:
- {
- rs[i] = C (u | first_byte_mask_[count]);
- }
- }
-
- i += count;
- }
-
- return r;
- }
-
- template <typename C>
- XMLCh* char_utf8_transcoder<C>::
- from (const C* s, std::size_t len)
- {
- bool valid (true);
- const C* end (s + len);
-
- // Find what the resulting buffer size will be.
- //
- std::size_t rl (0);
- unsigned int count (0);
-
- for (const C* p (s); p < end; ++p)
- {
- unsigned char c (*p);
-
- if (c < 0x80)
- {
- // Fast path.
- //
- rl += 1;
- continue;
- }
- else if ((c >> 5) == 0x06)
- count = 2;
- else if ((c >> 4) == 0x0E)
- count = 3;
- else if ((c >> 3) == 0x1E)
- count = 4;
- else
- {
- valid = false;
- break;
- }
-
- p += count - 1; // One will be added in the for loop
-
- if (p + 1 > end)
- {
- valid = false;
- break;
- }
-
- // BMP is represented by up to 3 code points in UTF-8.
- //
- rl += count > 3 ? 2 : 1;
- }
-
- if (!valid)
- throw invalid_utf8_string ();
-
-#ifdef XSD_CXX11
- std::unique_ptr<XMLCh[]> r (
-#else
- auto_array<XMLCh> r (
-#endif
- new XMLCh[rl + 1]);
- XMLCh* ir (r.get ());
-
- unsigned int u (0); // Four byte UCS-4 char.
-
- for (const C* p (s); p < end; ++p)
- {
- unsigned char c (*p);
-
- if (c < 0x80)
- {
- // Fast path.
- //
- *ir++ = static_cast<XMLCh> (c);
- continue;
- }
- else if ((c >> 5) == 0x06)
- {
- // UTF-8: 110yyyyy 10zzzzzz
- // Unicode: 00000yyy yyzzzzzz
- //
- u = (c & 0x1F) << 6;
-
- c = *++p;
- if ((c >> 6) != 2)
- {
- valid = false;
- break;
- }
- u |= c & 0x3F;
- }
- else if ((c >> 4) == 0x0E)
- {
- // UTF-8: 1110xxxx 10yyyyyy 10zzzzzz
- // Unicode: xxxxyyyy yyzzzzzz
- //
- u = (c & 0x0F) << 6;
-
- c = *++p;
- if ((c >> 6) != 2)
- {
- valid = false;
- break;
- }
- u = (u | (c & 0x3F)) << 6;
-
- c = *++p;
- if ((c >> 6) != 2)
- {
- valid = false;
- break;
- }
- u |= c & 0x3F;
- }
- else if ((c >> 3) == 0x1E)
- {
- // UTF-8: 000wwwxx xxxxyyyy yyzzzzzz
- // Unicode: 11110www 10xxxxxx 10yyyyyy 10zzzzzz
- //
- u = (c & 0x07) << 6;
-
- c = *++p;
- if ((c >> 6) != 2)
- {
- valid = false;
- break;
- }
- u = (u | (c & 0x3F)) << 6;
-
- c = *++p;
- if ((c >> 6) != 2)
- {
- valid = false;
- break;
- }
- u = (u | (c & 0x3F)) << 6;
-
- c = *++p;
- if ((c >> 6) != 2)
- {
- valid = false;
- break;
- }
- u |= c & 0x3F;
- }
-
- if (u & 0xFFFF0000)
- {
- // Surrogate pair.
- //
- *ir++ = static_cast<XMLCh> (((u - 0x10000) >> 10) + 0xD800);
- *ir++ = static_cast<XMLCh> ((u & 0x3FF) + 0xDC00);
- }
- else
- *ir++ = static_cast<XMLCh> (u);
- }
-
- if (!valid)
- throw invalid_utf8_string ();
-
- *ir = XMLCh (0);
-
- return r.release ();
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/auto-ptr.hxx b/xsd/libxsd/xsd/cxx/xml/dom/auto-ptr.hxx
deleted file mode 100644
index fc8f194..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/auto-ptr.hxx
+++ /dev/null
@@ -1,233 +0,0 @@
-// file : xsd/cxx/xml/dom/auto-ptr.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_DOM_AUTO_PTR_HXX
-#define XSD_CXX_XML_DOM_AUTO_PTR_HXX
-
-#include <xsd/cxx/config.hxx> // XSD_CXX11_*
-
-#ifdef XSD_CXX11
-# include <memory> // std::unique_ptr
-# include <utility> // std::move
-# include <type_traits> // std::remove_const
-#endif
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
-#ifdef XSD_CXX11
- template <typename T>
- struct deleter
- {
- void
- operator() (T* p) const
- {
- if (p != 0)
- const_cast<typename std::remove_const<T>::type*> (p)->release ();
- }
- };
-
-#ifdef XSD_CXX11_TEMPLATE_ALIAS
- template <typename T>
- using unique_ptr = std::unique_ptr<T, deleter<T>>;
-#else
- template <typename T>
- class unique_ptr: public std::unique_ptr<T, deleter<T>>
- {
- public:
- typedef std::unique_ptr<T, deleter<T>> base;
-
- typedef typename base::pointer pointer;
- typedef T element_type;
- typedef deleter<T> deleter_type;
-
- unique_ptr (): base () {}
- explicit unique_ptr (pointer p): base (p) {}
- unique_ptr (pointer p, const deleter_type& d): base (p, d) {}
- unique_ptr (pointer p, deleter_type&& d): base (p, std::move (d)) {}
- unique_ptr (unique_ptr&& p): base (std::move (p)) {}
- template <class T1>
- unique_ptr (unique_ptr<T1>&& p): base (std::move (p)) {}
- template <class T1>
- unique_ptr (std::auto_ptr<T1>&& p): base (std::move (p)) {}
-
- unique_ptr& operator= (unique_ptr&& p)
- {
- static_cast<base&> (*this) = std::move (p);
- return *this;
- }
-
- template <class T1>
- unique_ptr& operator= (unique_ptr<T1>&& p)
- {
- static_cast<base&> (*this) = std::move (p);
- return *this;
- }
-
-#ifdef XSD_CXX11_NULLPTR
- unique_ptr (std::nullptr_t p): base (p) {}
-
- unique_ptr& operator= (std::nullptr_t p)
- {
- static_cast<base&> (*this) = p;
- return *this;
- }
-#endif
- };
-#endif // XSD_CXX11_TEMPLATE_ALIAS
-
-#define XSD_DOM_AUTO_PTR xsd::cxx::xml::dom::unique_ptr
-
-#else
- // Simple auto_ptr version for C++98 that calls release() instead
- // of delete.
- //
- template <typename T>
- struct remove_c
- {
- typedef T r;
- };
-
- template <typename T>
- struct remove_c<const T>
- {
- typedef T r;
- };
-
- template <typename T>
- struct auto_ptr_ref
- {
- T* x_;
-
- explicit
- auto_ptr_ref (T* x)
- : x_ (x)
- {
- }
- };
-
- template <typename T>
- struct auto_ptr
- {
- ~auto_ptr ()
- {
- reset ();
- }
-
- explicit
- auto_ptr (T* x = 0)
- : x_ (x)
- {
- }
-
- auto_ptr (auto_ptr& y)
- : x_ (y.release ())
- {
- }
-
- template <typename T2>
- auto_ptr (auto_ptr<T2>& y)
- : x_ (y.release ())
- {
- }
-
- auto_ptr (auto_ptr_ref<T> r)
- : x_ (r.x_)
- {
- }
-
- auto_ptr&
- operator= (auto_ptr& y)
- {
- if (x_ != y.x_)
- reset (y.release ());
-
- return *this;
- }
-
- template <typename T2>
- auto_ptr&
- operator= (auto_ptr<T2>& y)
- {
- if (x_ != y.x_)
- reset (y.release ());
-
- return *this;
- }
-
- auto_ptr&
- operator= (auto_ptr_ref<T> r)
- {
- if (r.x_ != x_)
- reset (r.x_);
-
- return *this;
- }
-
- template <typename T2>
- operator auto_ptr_ref<T2> ()
- {
- return auto_ptr_ref<T2> (release ());
- }
-
- template <typename T2>
- operator auto_ptr<T2> ()
- {
- return auto_ptr<T2> (release ());
- }
-
- public:
- T&
- operator* () const
- {
- return *x_;
- }
-
- T*
- operator-> () const
- {
- return x_;
- }
-
- T*
- get () const
- {
- return x_;
- }
-
- T*
- release ()
- {
- T* x (x_);
- x_ = 0;
- return x;
- }
-
- void
- reset (T* x = 0)
- {
- if (x_)
- const_cast<typename remove_c<T>::r*> (x_)->release ();
-
- x_ = x;
- }
-
- private:
- T* x_;
- };
-
-#define XSD_DOM_AUTO_PTR xsd::cxx::xml::dom::auto_ptr
-
-#endif // XSD_CXX11
- }
- }
- }
-}
-
-#endif // XSD_CXX_XML_DOM_AUTO_PTR_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/bits/error-handler-proxy.hxx b/xsd/libxsd/xsd/cxx/xml/dom/bits/error-handler-proxy.hxx
deleted file mode 100644
index 01111e1..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/bits/error-handler-proxy.hxx
+++ /dev/null
@@ -1,60 +0,0 @@
-// file : xsd/cxx/xml/dom/bits/error-handler-proxy.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_DOM_BITS_ERROR_HANDLER_PROXY_HXX
-#define XSD_CXX_XML_DOM_BITS_ERROR_HANDLER_PROXY_HXX
-
-#include <xercesc/dom/DOMError.hpp>
-#include <xercesc/dom/DOMLocator.hpp>
-#include <xercesc/dom/DOMErrorHandler.hpp>
-
-#include <xsd/cxx/xml/error-handler.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- namespace bits
- {
- template <typename C>
- class error_handler_proxy: public xercesc::DOMErrorHandler
- {
- public:
- error_handler_proxy (error_handler<C>& eh)
- : failed_ (false), eh_ (&eh), native_eh_ (0)
- {
- }
-
- error_handler_proxy (xercesc::DOMErrorHandler& eh)
- : failed_ (false), eh_ (0), native_eh_ (&eh)
- {
- }
-
- virtual bool
- handleError (const xercesc::DOMError& e);
-
- bool
- failed () const
- {
- return failed_;
- }
-
- private:
- bool failed_;
- error_handler<C>* eh_;
- xercesc::DOMErrorHandler* native_eh_;
- };
- }
- }
- }
- }
-}
-
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.txx>
-
-#endif // XSD_CXX_XML_DOM_BITS_ERROR_HANDLER_PROXY_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/bits/error-handler-proxy.txx b/xsd/libxsd/xsd/cxx/xml/dom/bits/error-handler-proxy.txx
deleted file mode 100644
index 7e5579b..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/bits/error-handler-proxy.txx
+++ /dev/null
@@ -1,67 +0,0 @@
-// file : xsd/cxx/xml/dom/bits/error-handler-proxy.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/xml/string.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- namespace bits
- {
- template <typename C>
- bool error_handler_proxy<C>::
- handleError (const xercesc::DOMError& e)
- {
- using xercesc::DOMError;
-
- if (e.getSeverity() != DOMError::DOM_SEVERITY_WARNING)
- failed_ = true;
-
- if (native_eh_)
- return native_eh_->handleError (e);
- else
- {
- typedef typename error_handler<C>::severity severity;
-
- severity s (severity::error);
-
- switch (e.getSeverity())
- {
- case DOMError::DOM_SEVERITY_WARNING:
- {
- s = severity::warning;
- break;
- }
- case DOMError::DOM_SEVERITY_ERROR:
- {
- s = severity::error;
- break;
- }
- case DOMError::DOM_SEVERITY_FATAL_ERROR:
- {
- s = severity::fatal;
- break;
- }
- }
-
- xercesc::DOMLocator* loc (e.getLocation ());
-
- return eh_->handle (
- transcode<C> (loc->getURI ()),
- static_cast<unsigned long> (loc->getLineNumber ()),
- static_cast<unsigned long> (loc->getColumnNumber ()),
- s,
- transcode<C> (e.getMessage ()));
- }
- }
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/elements.hxx b/xsd/libxsd/xsd/cxx/xml/dom/elements.hxx
deleted file mode 100644
index 613b978..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/elements.hxx
+++ /dev/null
@@ -1,35 +0,0 @@
-// file : xsd/cxx/xml/dom/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_DOM_ELEMENTS_HXX
-#define XSD_CXX_XML_DOM_ELEMENTS_HXX
-
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-
-#include <xsd/cxx/xml/qualified-name.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- template <typename C>
- qualified_name<C>
- name (const xercesc::DOMAttr&);
-
- template <typename C>
- qualified_name<C>
- name (const xercesc::DOMElement&);
- }
- }
- }
-}
-
-#include <xsd/cxx/xml/dom/elements.txx>
-
-#endif // XSD_CXX_XML_DOM_ELEMENTS_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/elements.txx b/xsd/libxsd/xsd/cxx/xml/dom/elements.txx
deleted file mode 100644
index c493676..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/elements.txx
+++ /dev/null
@@ -1,56 +0,0 @@
-// file : xsd/cxx/xml/dom/elements.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/xml/string.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- template <typename C>
- qualified_name<C>
- name (const xercesc::DOMAttr& a)
- {
- const XMLCh* n (a.getLocalName ());
-
- // If this DOM doesn't support namespaces then use getName.
- //
- if (n != 0)
- {
- if (const XMLCh* ns = a.getNamespaceURI ())
- return qualified_name<C> (transcode<C> (n), transcode<C> (ns));
- else
- return qualified_name<C> (transcode<C> (n));
- }
- else
- return qualified_name<C> (transcode<C> (a.getName ()));
- }
-
-
- template <typename C>
- qualified_name<C>
- name (const xercesc::DOMElement& e)
- {
- const XMLCh* n (e.getLocalName ());
-
- // If this DOM doesn't support namespaces then use getTagName.
- //
- if (n != 0)
- {
- if (const XMLCh* ns = e.getNamespaceURI ())
- return qualified_name<C> (transcode<C> (n), transcode<C> (ns));
- else
- return qualified_name<C> (transcode<C> (n));
- }
- else
- return qualified_name<C> (transcode<C> (e.getTagName ()));
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/parsing-header.hxx b/xsd/libxsd/xsd/cxx/xml/dom/parsing-header.hxx
deleted file mode 100644
index f9ec033..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/parsing-header.hxx
+++ /dev/null
@@ -1,23 +0,0 @@
-// file : xsd/cxx/xml/dom/parsing-header.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_DOM_PARSING_HEADER_HXX
-#define XSD_CXX_XML_DOM_PARSING_HEADER_HXX
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- template <typename C>
- class parser;
- }
- }
- }
-}
-
-#endif // XSD_CXX_XML_DOM_PARSING_HEADER_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/parsing-source.hxx b/xsd/libxsd/xsd/cxx/xml/dom/parsing-source.hxx
deleted file mode 100644
index fac1006..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/parsing-source.hxx
+++ /dev/null
@@ -1,153 +0,0 @@
-// file : xsd/cxx/xml/dom/parsing-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_DOM_PARSING_SOURCE_HXX
-#define XSD_CXX_XML_DOM_PARSING_SOURCE_HXX
-
-#include <string>
-
-#include <xercesc/dom/DOMNode.hpp>
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xercesc/dom/DOMNamedNodeMap.hpp>
-#include <xercesc/dom/DOMErrorHandler.hpp>
-
-#include <xercesc/sax/InputSource.hpp>
-
-#include <xsd/cxx/xml/elements.hxx> // properies
-#include <xsd/cxx/xml/error-handler.hxx>
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-#include <xsd/cxx/xml/dom/elements.hxx> // name
-#include <xsd/cxx/xml/dom/parsing-header.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- // Parser state object. Can be used for parsing elements (and
- // optionally text), attributes, or both.
- //
- template <typename C>
- class parser
- {
- public:
- parser (const xercesc::DOMElement& e, bool ep, bool tp, bool ap);
-
- // Content parsing.
- //
- bool
- more_content ()
- {
- return next_content_ != 0;
- }
-
- const xercesc::DOMElement&
- cur_element ()
- {
- return *static_cast<const xercesc::DOMElement*> (next_content_);
- }
-
- const xercesc::DOMText&
- cur_text ()
- {
- return *static_cast<const xercesc::DOMText*> (next_content_);
- }
-
- bool
- cur_is_text ()
- {
- return next_content_->getNodeType () !=
- xercesc::DOMNode::ELEMENT_NODE;
- }
-
- void
- next_content (bool text);
-
- // Attribute parsing.
- //
- bool
- more_attributes ()
- {
- return as_ > ai_;
- }
-
- const xercesc::DOMAttr&
- next_attribute ()
- {
- return *static_cast<const xercesc::DOMAttr*> (a_->item (ai_++));
- }
-
- void
- reset_attributes ()
- {
- ai_ = 0;
- }
-
- const xercesc::DOMElement&
- element () const
- {
- return element_;
- }
-
- private:
- parser (const parser&);
-
- parser&
- operator= (const parser&);
-
- private:
- const xercesc::DOMElement& element_;
- const xercesc::DOMNode* next_content_;
-
- const xercesc::DOMNamedNodeMap* a_;
- XMLSize_t ai_; // Index of the next DOMAttr.
- XMLSize_t as_; // Cached size of a_.
- };
-
-
- // Parsing flags.
- //
- const unsigned long dont_validate = 0x00000400UL;
- const unsigned long no_muliple_imports = 0x00000800UL;
-
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- parse (xercesc::InputSource&,
- error_handler<C>&,
- const properties<C>&,
- unsigned long flags);
-
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- parse (xercesc::InputSource&,
- xercesc::DOMErrorHandler&,
- const properties<C>&,
- unsigned long flags);
-
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- parse (const std::basic_string<C>& uri,
- error_handler<C>&,
- const properties<C>&,
- unsigned long flags);
-
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- parse (const std::basic_string<C>& uri,
- xercesc::DOMErrorHandler&,
- const properties<C>&,
- unsigned long flags);
- }
- }
- }
-}
-
-#include <xsd/cxx/xml/dom/parsing-source.txx>
-
-#endif // XSD_CXX_XML_DOM_PARSING_SOURCE_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/parsing-source.txx b/xsd/libxsd/xsd/cxx/xml/dom/parsing-source.txx
deleted file mode 100644
index c789fa6..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/parsing-source.txx
+++ /dev/null
@@ -1,380 +0,0 @@
-// file : xsd/cxx/xml/dom/parsing-source.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xercesc/dom/DOMLSParser.hpp>
-#include <xercesc/dom/DOMLSException.hpp>
-
-#include <xercesc/dom/DOMNamedNodeMap.hpp>
-#include <xercesc/dom/DOMImplementation.hpp>
-#include <xercesc/dom/DOMImplementationRegistry.hpp>
-
-#include <xercesc/util/XMLUni.hpp> // xercesc::fg*
-#include <xercesc/util/XMLUniDefs.hpp> // chLatin_L, etc
-
-#include <xercesc/framework/Wrapper4InputSource.hpp>
-
-#include <xsd/cxx/xml/string.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- // parser
- //
- template <typename C>
- parser<C>::
- parser (const xercesc::DOMElement& e, bool ep, bool tp, bool ap)
- : element_ (e),
- next_content_ (0),
- a_ (0),
- ai_ (0)
- {
- using xercesc::DOMNode;
-
- if (ep)
- {
- for (next_content_ = e.getFirstChild ();;
- next_content_ = next_content_->getNextSibling ())
- {
- if (next_content_ == 0)
- break;
-
- DOMNode::NodeType t (next_content_->getNodeType ());
-
- if (t == DOMNode::ELEMENT_NODE)
- break;
-
- if (tp && (t == DOMNode::TEXT_NODE ||
- t == DOMNode::CDATA_SECTION_NODE))
- break;
- }
- }
-
- if (ap)
- {
- a_ = e.getAttributes ();
- as_ = a_->getLength ();
- }
- }
-
- template <typename C>
- void parser<C>::
- next_content (bool tp)
- {
- using xercesc::DOMNode;
-
- for (next_content_ = next_content_->getNextSibling ();;
- next_content_ = next_content_->getNextSibling ())
- {
- if (next_content_ == 0)
- break;
-
- DOMNode::NodeType t (next_content_->getNodeType ());
-
- if (t == DOMNode::ELEMENT_NODE)
- break;
-
- if (tp && (t == DOMNode::TEXT_NODE ||
- t == DOMNode::CDATA_SECTION_NODE))
- break;
- }
- }
-
- // parse()
- //
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- parse (xercesc::InputSource& is,
- error_handler<C>& eh,
- const properties<C>& prop,
- unsigned long flags)
- {
- bits::error_handler_proxy<C> ehp (eh);
- return xml::dom::parse (is, ehp, prop, flags);
- }
-
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- parse (xercesc::InputSource& is,
- xercesc::DOMErrorHandler& eh,
- const properties<C>& prop,
- unsigned long flags)
- {
- using namespace xercesc;
-
- // Instantiate the DOM parser.
- //
- const XMLCh ls_id[] = {xercesc::chLatin_L,
- xercesc::chLatin_S,
- xercesc::chNull};
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- XSD_DOM_AUTO_PTR<DOMLSParser> parser (
- impl->createLSParser (DOMImplementationLS::MODE_SYNCHRONOUS, 0));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- // Discard comment nodes in the document.
- //
- conf->setParameter (XMLUni::fgDOMComments, false);
-
- // Enable datatype normalization.
- //
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
-
- // Do not create EntityReference nodes in the DOM tree. No
- // EntityReference nodes will be created, only the nodes
- // corresponding to their fully expanded substitution text
- // will be created.
- //
- conf->setParameter (XMLUni::fgDOMEntities, false);
-
- // Perform namespace processing.
- //
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
-
- // Do not include ignorable whitespace in the DOM tree.
- //
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
-
- if (flags & dont_validate)
- {
- conf->setParameter (XMLUni::fgDOMValidate, false);
- conf->setParameter (XMLUni::fgXercesSchema, false);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
- }
- else
- {
- conf->setParameter (XMLUni::fgDOMValidate, true);
- conf->setParameter (XMLUni::fgXercesSchema, true);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- if (!(flags & no_muliple_imports))
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
- // This feature checks the schema grammar for additional
- // errors. We most likely do not need it when validating
- // instances (assuming the schema is valid).
- //
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
- }
-
- // We will release DOM ourselves.
- //
- conf->setParameter (XMLUni::fgXercesUserAdoptsDOMDocument, true);
-
-
- // Transfer properies if any.
- //
-
- if (!prop.schema_location ().empty ())
- {
- xml::string sl (prop.schema_location ());
- const void* v (sl.c_str ());
-
- conf->setParameter (
- XMLUni::fgXercesSchemaExternalSchemaLocation,
- const_cast<void*> (v));
- }
-
- if (!prop.no_namespace_schema_location ().empty ())
- {
- xml::string sl (prop.no_namespace_schema_location ());
- const void* v (sl.c_str ());
-
- conf->setParameter (
- XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation,
- const_cast<void*> (v));
- }
-
- // If external schema location was specified, disable loading
- // schemas via the schema location attributes in the document.
- //
-#if _XERCES_VERSION >= 30100
- if (!prop.schema_location ().empty () ||
- !prop.no_namespace_schema_location ().empty ())
- {
- conf->setParameter (XMLUni::fgXercesLoadSchema, false);
- }
-#endif
- // Set error handler.
- //
- bits::error_handler_proxy<C> ehp (eh);
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- xercesc::Wrapper4InputSource wrap (&is, false);
-
- XSD_DOM_AUTO_PTR<DOMDocument> doc;
- try
- {
- doc.reset (parser->parse (&wrap));
- }
- catch (const xercesc::DOMLSException&)
- {
- }
-
- if (ehp.failed ())
- doc.reset ();
-
- return doc;
- }
-
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- parse (const std::basic_string<C>& uri,
- error_handler<C>& eh,
- const properties<C>& prop,
- unsigned long flags)
- {
- bits::error_handler_proxy<C> ehp (eh);
- return xml::dom::parse (uri, ehp, prop, flags);
- }
-
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- parse (const std::basic_string<C>& uri,
- xercesc::DOMErrorHandler& eh,
- const properties<C>& prop,
- unsigned long flags)
- {
- using namespace xercesc;
-
- // Instantiate the DOM parser.
- //
- const XMLCh ls_id[] = {xercesc::chLatin_L,
- xercesc::chLatin_S,
- xercesc::chNull};
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- XSD_DOM_AUTO_PTR<DOMLSParser> parser (
- impl->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- // Discard comment nodes in the document.
- //
- conf->setParameter (XMLUni::fgDOMComments, false);
-
- // Enable datatype normalization.
- //
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
-
- // Do not create EntityReference nodes in the DOM tree. No
- // EntityReference nodes will be created, only the nodes
- // corresponding to their fully expanded substitution text
- // will be created.
- //
- conf->setParameter (XMLUni::fgDOMEntities, false);
-
- // Perform namespace processing.
- //
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
-
- // Do not include ignorable whitespace in the DOM tree.
- //
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
-
- if (flags & dont_validate)
- {
- conf->setParameter (XMLUni::fgDOMValidate, false);
- conf->setParameter (XMLUni::fgXercesSchema, false);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
- }
- else
- {
- conf->setParameter (XMLUni::fgDOMValidate, true);
- conf->setParameter (XMLUni::fgXercesSchema, true);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- if (!(flags & no_muliple_imports))
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
-
- // This feature checks the schema grammar for additional
- // errors. We most likely do not need it when validating
- // instances (assuming the schema is valid).
- //
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
- }
-
- // We will release DOM ourselves.
- //
- conf->setParameter (XMLUni::fgXercesUserAdoptsDOMDocument, true);
-
-
- // Transfer properies if any.
- //
-
- if (!prop.schema_location ().empty ())
- {
- xml::string sl (prop.schema_location ());
- const void* v (sl.c_str ());
-
- conf->setParameter (
- XMLUni::fgXercesSchemaExternalSchemaLocation,
- const_cast<void*> (v));
- }
-
- if (!prop.no_namespace_schema_location ().empty ())
- {
- xml::string sl (prop.no_namespace_schema_location ());
- const void* v (sl.c_str ());
-
- conf->setParameter (
- XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation,
- const_cast<void*> (v));
- }
-
- // If external schema location was specified, disable loading
- // schemas via the schema location attributes in the document.
- //
-#if _XERCES_VERSION >= 30100
- if (!prop.schema_location ().empty () ||
- !prop.no_namespace_schema_location ().empty ())
- {
- conf->setParameter (XMLUni::fgXercesLoadSchema, false);
- }
-#endif
- // Set error handler.
- //
- bits::error_handler_proxy<C> ehp (eh);
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- XSD_DOM_AUTO_PTR<DOMDocument> doc;
- try
- {
- doc.reset (parser->parseURI (string (uri).c_str ()));
- }
- catch (const xercesc::DOMLSException&)
- {
- }
-
- if (ehp.failed ())
- doc.reset ();
-
- return doc;
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/serialization-header.hxx b/xsd/libxsd/xsd/cxx/xml/dom/serialization-header.hxx
deleted file mode 100644
index a3cbff4..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/serialization-header.hxx
+++ /dev/null
@@ -1,80 +0,0 @@
-// file : xsd/cxx/xml/dom/serialization-header.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_DOM_SERIALIZATION_HEADER_HXX
-#define XSD_CXX_XML_DOM_SERIALIZATION_HEADER_HXX
-
-#include <map>
-#include <string>
-
-#include <xercesc/dom/DOMElement.hpp>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- // Find an existing prefix or establish a new one. Try to use
- // hint if provided and available.
- //
- template <typename C>
- std::basic_string<C>
- prefix (const C* ns, xercesc::DOMElement&, const C* hint = 0);
-
- template <typename C>
- inline std::basic_string<C>
- prefix (const std::basic_string<C>& ns,
- xercesc::DOMElement& e,
- const C* hint = 0)
- {
- return prefix (ns.c_str (), e, hint);
- }
-
- //
- //
- template <typename C>
- void
- clear (xercesc::DOMElement&);
-
- //
- //
- template <typename C>
- class namespace_info
- {
- public:
- typedef std::basic_string<C> string;
-
- namespace_info ()
- {
- }
-
- namespace_info (const string& name_, const string& schema_)
- : name (name_),
- schema (schema_)
- {
- }
-
- std::basic_string<C> name;
- std::basic_string<C> schema;
- };
-
-
- // Map of namespace prefix to namespace_info.
- //
- template <typename C>
- class namespace_infomap:
- public std::map<std::basic_string<C>, namespace_info<C> >
- {
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/xml/dom/serialization-header.txx>
-
-#endif // XSD_CXX_XML_DOM_SERIALIZATION_HEADER_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/serialization-header.txx b/xsd/libxsd/xsd/cxx/xml/dom/serialization-header.txx
deleted file mode 100644
index 6e58cfd..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/serialization-header.txx
+++ /dev/null
@@ -1,181 +0,0 @@
-// file : xsd/cxx/xml/dom/serialization-header.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <vector>
-#include <sstream>
-#include <cstddef> // std::size_t
-
-#include <xercesc/dom/DOMNode.hpp>
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMNamedNodeMap.hpp>
-
-#include <xercesc/util/XMLUni.hpp> // xercesc::fg*
-#include <xercesc/util/XMLString.hpp>
-#include <xercesc/validators/schema/SchemaSymbols.hpp>
-
-#include <xsd/cxx/xml/string.hxx>
-#include <xsd/cxx/xml/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- //
- //
- template <typename C>
- std::basic_string<C>
- prefix (const C* ns, xercesc::DOMElement& e, const C* hint)
- {
- string xns (ns);
- const XMLCh* p (e.lookupPrefix (xns.c_str ()));
-
- if (p != 0)
- return transcode<C> (p);
-
- if (e.isDefaultNamespace (xns.c_str ()))
- return std::basic_string<C> ();
-
- // 'xml' prefix requires special handling and Xerces folks
- // refuse to handle this in DOM so I have to do it myself.
- //
- if (std::basic_string<C> (ns) == xml::bits::xml_namespace<C> ())
- return xml::bits::xml_prefix<C> ();
-
- // No prefix for this namespace. Will need to establish one.
- //
- std::basic_string<C> prefix;
-
- if (hint != 0 &&
- e.lookupNamespaceURI (xml::string (hint).c_str ()) == 0)
- {
- prefix = hint;
- }
- else
- {
- for (unsigned long n (1);; ++n)
- {
- // Make finding the first few prefixes fast.
- //
- switch (n)
- {
- case 1:
- {
- prefix = xml::bits::first_prefix<C> ();
- break;
- }
- case 2:
- {
- prefix = xml::bits::second_prefix<C> ();
- break;
- }
- case 3:
- {
- prefix = xml::bits::third_prefix<C> ();
- break;
- }
- case 4:
- {
- prefix = xml::bits::fourth_prefix<C> ();
- break;
- }
- case 5:
- {
- prefix = xml::bits::fifth_prefix<C> ();
- break;
- }
- default:
- {
- std::basic_ostringstream<C> ostr;
- ostr << C ('p') << n;
- prefix = ostr.str ();
- break;
- }
- }
-
- if (e.lookupNamespaceURI (xml::string (prefix).c_str ()) == 0)
- break;
- }
- }
-
- std::basic_string<C> name (xml::bits::xmlns_prefix<C> ());
- name += C(':');
- name += prefix;
-
- e.setAttributeNS (
- xercesc::XMLUni::fgXMLNSURIName,
- xml::string (name).c_str (),
- xns.c_str ());
-
- return prefix;
- }
-
- //
- //
- template <typename C>
- void
- clear (xercesc::DOMElement& e)
- {
- using namespace xercesc;
-
- // Remove child nodes.
- //
- while (xercesc::DOMNode* n = e.getFirstChild ())
- {
- e.removeChild (n);
- n->release ();
- }
-
- // Remove attributes.
- //
- DOMNamedNodeMap* att_map (e.getAttributes ());
- XMLSize_t n (att_map->getLength ());
-
- if (n != 0)
- {
- std::vector<DOMAttr*> atts;
-
- // Collect all attributes to be removed while filtering
- // out special cases (xmlns & xsi).
- //
- for (XMLSize_t i (0); i != n; ++i)
- {
- DOMAttr* a (static_cast<DOMAttr*> (att_map->item (i)));
- const XMLCh* ns (a->getNamespaceURI ());
-
- if (ns != 0)
- {
- if (XMLString::equals (ns, xercesc::XMLUni::fgXMLNSURIName))
- continue;
-
- if (XMLString::equals (ns, SchemaSymbols::fgURI_XSI))
- {
- const XMLCh* name (a->getLocalName ());
-
- if (XMLString::equals (
- name, SchemaSymbols::fgXSI_SCHEMALOCACTION) ||
- XMLString::equals (
- name, SchemaSymbols::fgXSI_NONAMESPACESCHEMALOCACTION))
- continue;
- }
- }
-
- atts.push_back (a);
- }
-
- for (std::vector<DOMAttr*>::iterator i (atts.begin ()),
- end (atts.end ()); i != end; ++i)
- {
- e.removeAttributeNode (*i);
- (*i)->release ();
- }
- }
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/serialization-source.hxx b/xsd/libxsd/xsd/cxx/xml/dom/serialization-source.hxx
deleted file mode 100644
index 9056917..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/serialization-source.hxx
+++ /dev/null
@@ -1,182 +0,0 @@
-// file : xsd/cxx/xml/dom/serialization-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_DOM_SERIALIZATION_SOURCE_HXX
-#define XSD_CXX_XML_DOM_SERIALIZATION_SOURCE_HXX
-
-#include <string>
-#include <cstring> // std::memcpy
-#include <ostream>
-
-#include <xercesc/dom/DOMAttr.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xercesc/dom/DOMErrorHandler.hpp>
-#include <xercesc/framework/XMLFormatter.hpp> // XMLFormatTarget, XMLFormatter
-
-#include <xsd/cxx/xml/error-handler.hxx>
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-#include <xsd/cxx/xml/dom/elements.hxx> // name
-#include <xsd/cxx/xml/dom/serialization-header.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- //
- //
- template <typename C>
- xercesc::DOMAttr&
- create_attribute (const C* name, xercesc::DOMElement&);
-
- template <typename C>
- xercesc::DOMAttr&
- create_attribute (const C* name, const C* ns, xercesc::DOMElement&);
-
- template <typename C>
- xercesc::DOMElement&
- create_element (const C* name, xercesc::DOMElement&);
-
- template <typename C>
- xercesc::DOMElement&
- create_element (const C* name, const C* ns, xercesc::DOMElement&);
-
- // Add namespace declarations and schema locations.
- //
- template <typename C>
- void
- add_namespaces (xercesc::DOMElement&, const namespace_infomap<C>&);
-
- // Serialization flags.
- //
- const unsigned long no_xml_declaration = 0x00010000UL;
- const unsigned long dont_pretty_print = 0x00020000UL;
-
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- serialize (const std::basic_string<C>& root_element,
- const std::basic_string<C>& root_element_namespace,
- const namespace_infomap<C>& map,
- unsigned long flags);
-
- // This one helps Sun C++ to overcome its fears.
- //
- template <typename C>
- inline XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- serialize (const C* root_element,
- const C* root_element_namespace,
- const namespace_infomap<C>& map,
- unsigned long flags)
- {
- return serialize (std::basic_string<C> (root_element),
- std::basic_string<C> (root_element_namespace),
- map,
- flags);
- }
-
- //
- //
- template <typename C>
- bool
- serialize (xercesc::XMLFormatTarget& target,
- const xercesc::DOMDocument& doc,
- const std::basic_string<C>& enconding,
- error_handler<C>& eh,
- unsigned long flags);
-
- template <typename C>
- bool
- serialize (xercesc::XMLFormatTarget& target,
- const xercesc::DOMDocument& doc,
- const std::basic_string<C>& enconding,
- xercesc::DOMErrorHandler& eh,
- unsigned long flags);
-
-
- class ostream_format_target: public xercesc::XMLFormatTarget
- {
- public:
- ostream_format_target (std::ostream& os)
- : n_ (0), os_ (os)
- {
- }
-
- public:
- // I know, some of those consts are stupid. But that's what
- // Xerces folks put into their interfaces and VC thinks there
- // are different signatures if one strips this fluff off.
- //
- virtual void
- writeChars (const XMLByte* const buf,
- const XMLSize_t size,
- xercesc::XMLFormatter* const)
- {
- // Ignore the write request if there was a stream failure and the
- // stream is not using exceptions.
- //
- if (os_.fail ())
- return;
-
- // Flush the buffer if the block is too large or if we don't have
- // any space left.
- //
- if ((size >= buf_size_ / 8 || n_ + size > buf_size_) && n_ != 0)
- {
- os_.write (buf_, static_cast<std::streamsize> (n_));
- n_ = 0;
-
- if (os_.fail ())
- return;
- }
-
- if (size < buf_size_ / 8)
- {
- std::memcpy (buf_ + n_, reinterpret_cast<const char*> (buf), size);
- n_ += size;
- }
- else
- os_.write (reinterpret_cast<const char*> (buf),
- static_cast<std::streamsize> (size));
- }
-
-
- virtual void
- flush ()
- {
- // Ignore the flush request if there was a stream failure
- // and the stream is not using exceptions.
- //
- if (!os_.fail ())
- {
- if (n_ != 0)
- {
- os_.write (buf_, static_cast<std::streamsize> (n_));
- n_ = 0;
-
- if (os_.fail ())
- return;
- }
-
- os_.flush ();
- }
- }
-
- private:
- static const std::size_t buf_size_ = 1024;
- char buf_[buf_size_];
- std::size_t n_;
- std::ostream& os_;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/xml/dom/serialization-source.txx>
-
-#endif // XSD_CXX_XML_DOM_SERIALIZATION_SOURCE_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/serialization-source.txx b/xsd/libxsd/xsd/cxx/xml/dom/serialization-source.txx
deleted file mode 100644
index eed1196..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/serialization-source.txx
+++ /dev/null
@@ -1,363 +0,0 @@
-// file : xsd/cxx/xml/dom/serialization-source.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xercesc/util/XMLUni.hpp> // xercesc::fg*
-#include <xercesc/util/XMLUniDefs.hpp> // chLatin_L, etc
-#include <xercesc/validators/schema/SchemaSymbols.hpp>
-
-#include <xercesc/dom/DOMLSOutput.hpp>
-#include <xercesc/dom/DOMLSSerializer.hpp>
-
-#include <xercesc/dom/DOMElement.hpp>
-#include <xercesc/dom/DOMImplementation.hpp>
-#include <xercesc/dom/DOMImplementationRegistry.hpp>
-
-#include <xsd/cxx/xml/string.hxx>
-#include <xsd/cxx/xml/bits/literals.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- //
- //
- template <typename C>
- xercesc::DOMAttr&
- create_attribute (const C* name, xercesc::DOMElement& parent)
- {
- xercesc::DOMDocument* doc (parent.getOwnerDocument ());
- xercesc::DOMAttr* a (doc->createAttribute (string (name).c_str ()));
- parent.setAttributeNode (a);
- return *a;
- }
-
- template <typename C>
- xercesc::DOMAttr&
- create_attribute (const C* name,
- const C* ns,
- xercesc::DOMElement& parent)
- {
- if (ns[0] == C ('\0'))
- return create_attribute (name, parent);
-
- xercesc::DOMDocument* doc (parent.getOwnerDocument ());
-
- xercesc::DOMAttr* a;
- std::basic_string<C> p (prefix<C> (ns, parent));
-
- if (!p.empty ())
- {
- p += ':';
- p += name;
- a = doc->createAttributeNS (string (ns).c_str (),
- string (p).c_str ());
- }
- else
- a = doc->createAttributeNS (string (ns).c_str (),
- string (name).c_str ());
-
- parent.setAttributeNodeNS (a);
- return *a;
- }
-
- template <typename C>
- xercesc::DOMElement&
- create_element (const C* name, xercesc::DOMElement& parent)
- {
- xercesc::DOMDocument* doc (parent.getOwnerDocument ());
- xercesc::DOMElement* e (doc->createElement (string (name).c_str ()));
- parent.appendChild (e);
- return *e;
- }
-
- template <typename C>
- xercesc::DOMElement&
- create_element (const C* name,
- const C* ns,
- xercesc::DOMElement& parent)
- {
- if (ns[0] == C ('\0'))
- return create_element (name, parent);
-
- xercesc::DOMDocument* doc (parent.getOwnerDocument ());
-
- xercesc::DOMElement* e;
- std::basic_string<C> p (prefix<C> (ns, parent));
-
- if (!p.empty ())
- {
- p += ':';
- p += name;
- e = doc->createElementNS (string (ns).c_str (),
- string (p).c_str ());
- }
- else
- e = doc->createElementNS (string (ns).c_str (),
- string (name).c_str ());
-
- parent.appendChild (e);
- return *e;
- }
-
- template <typename C>
- void
- add_namespaces (xercesc::DOMElement& el,
- const namespace_infomap<C>& map)
- {
- using namespace xercesc;
-
- typedef std::basic_string<C> string;
- typedef namespace_infomap<C> infomap;
- typedef typename infomap::const_iterator infomap_iterator;
-
- C colon (':'), space (' ');
-
- // Check if we need to provide xsi mapping.
- //
- bool xsi (false);
- string xsi_prefix;
- string xmlns_prefix (xml::bits::xmlns_prefix<C> ());
-
- for (infomap_iterator i (map.begin ()), e (map.end ()); i != e; ++i)
- {
- if (!i->second.schema.empty ())
- {
- xsi = true;
- break;
- }
- }
-
- // Check if we were told to provide xsi mapping.
- //
- if (xsi)
- {
- for (infomap_iterator i (map.begin ()), e (map.end ());
- i != e;
- ++i)
- {
- if (i->second.name == xml::bits::xsi_namespace<C> ())
- {
- xsi_prefix = i->first;
- xsi = false;
- break;
- }
- }
- }
-
- // Create user-defined mappings.
- //
- for (infomap_iterator i (map.begin ()), e (map.end ()); i != e; ++i)
- {
- if (i->first.empty ())
- {
- // Empty prefix.
- //
- if (!i->second.name.empty ())
- el.setAttributeNS (
- xercesc::XMLUni::fgXMLNSURIName,
- xml::string (xmlns_prefix).c_str (),
- xml::string (i->second.name).c_str ());
- }
- else
- {
- el.setAttributeNS (
- xercesc::XMLUni::fgXMLNSURIName,
- xml::string (xmlns_prefix + colon + i->first).c_str (),
- xml::string (i->second.name).c_str ());
- }
- }
-
- // If we were not told to provide xsi mapping but we need it
- // then we will have to add it ourselves.
- //
- if (xsi)
- xsi_prefix = dom::prefix (xml::bits::xsi_namespace<C> (),
- el,
- xml::bits::xsi_prefix<C> ());
-
- // Create xsi:schemaLocation and xsi:noNamespaceSchemaLocation
- // attributes.
- //
- string schema_location;
- string no_namespace_schema_location;
-
- for (infomap_iterator i (map.begin ()), e (map.end ()); i != e; ++i)
- {
- if (!i->second.schema.empty ())
- {
- if (i->second.name.empty ())
- {
- if (!no_namespace_schema_location.empty ())
- no_namespace_schema_location += space;
-
- no_namespace_schema_location += i->second.schema;
- }
- else
- {
- if (!schema_location.empty ())
- schema_location += space;
-
- schema_location += i->second.name + space + i->second.schema;
- }
- }
- }
-
- if (!schema_location.empty ())
- {
- el.setAttributeNS (
- xercesc::SchemaSymbols::fgURI_XSI,
- xml::string (xsi_prefix + colon +
- xml::bits::schema_location<C> ()).c_str (),
- xml::string (schema_location).c_str ());
- }
-
- if (!no_namespace_schema_location.empty ())
- {
- el.setAttributeNS (
- xercesc::SchemaSymbols::fgURI_XSI,
- xml::string (
- xsi_prefix + colon +
- xml::bits::no_namespace_schema_location<C> ()).c_str (),
- xml::string (no_namespace_schema_location).c_str ());
- }
- }
-
- //
- //
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- serialize (const std::basic_string<C>& el,
- const std::basic_string<C>& ns,
- const namespace_infomap<C>& map,
- unsigned long)
- {
- using namespace xercesc;
-
- typedef std::basic_string<C> string;
- typedef namespace_infomap<C> infomap;
- typedef typename infomap::const_iterator infomap_iterator;
-
- string prefix;
-
- if (!ns.empty ())
- {
- infomap_iterator i (map.begin ()), e (map.end ());
-
- for ( ;i != e; ++i)
- {
- if (i->second.name == ns)
- {
- prefix = i->first;
- break;
- }
- }
-
- // Since this is the first namespace in document we don't
- // need to worry about conflicts.
- //
- if (i == e)
- prefix = xml::bits::first_prefix<C> ();
- }
-
- const XMLCh ls[] = {xercesc::chLatin_L,
- xercesc::chLatin_S,
- xercesc::chNull};
-
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls));
-
- XSD_DOM_AUTO_PTR<DOMDocument> doc (
- impl->createDocument (
- (ns.empty () ? 0 : xml::string (ns).c_str ()),
- xml::string ((prefix.empty ()
- ? el
- : prefix + C (':') + el)).c_str (),
- 0));
-
- add_namespaces (*doc->getDocumentElement (), map);
-
- return doc;
- }
-
-
- template <typename C>
- bool
- serialize (xercesc::XMLFormatTarget& target,
- const xercesc::DOMDocument& doc,
- const std::basic_string<C>& encoding,
- xercesc::DOMErrorHandler& eh,
- unsigned long flags)
- {
- using namespace xercesc;
-
- const XMLCh ls[] = {xercesc::chLatin_L,
- xercesc::chLatin_S,
- xercesc::chNull};
-
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls));
-
- bits::error_handler_proxy<C> ehp (eh);
-
- XSD_DOM_AUTO_PTR<DOMLSSerializer> writer (
- impl->createLSSerializer ());
-
- DOMConfiguration* conf (writer->getDomConfig ());
-
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- // Set some nice features if the serializer supports them.
- //
- if (conf->canSetParameter (
- XMLUni::fgDOMWRTDiscardDefaultContent, true))
- conf->setParameter (XMLUni::fgDOMWRTDiscardDefaultContent, true);
-
- if (!(flags & dont_pretty_print) &&
- conf->canSetParameter (XMLUni::fgDOMWRTFormatPrettyPrint, true))
- {
- conf->setParameter (XMLUni::fgDOMWRTFormatPrettyPrint, true);
-
- // Don't add extra new lines between first-level elements.
- //
- if (conf->canSetParameter (XMLUni::fgDOMWRTXercesPrettyPrint, true))
- conf->setParameter (XMLUni::fgDOMWRTXercesPrettyPrint, false);
- }
-
- // See if we need to write XML declaration.
- //
- if ((flags & no_xml_declaration) &&
- conf->canSetParameter (XMLUni::fgDOMXMLDeclaration, false))
- conf->setParameter (XMLUni::fgDOMXMLDeclaration, false);
-
- XSD_DOM_AUTO_PTR<DOMLSOutput> out (impl->createLSOutput ());
-
- out->setEncoding (xml::string (encoding).c_str ());
- out->setByteStream (&target);
-
- if (!writer->write (&doc, out.get ()) || ehp.failed ())
- return false;
-
- return true;
- }
-
- template <typename C>
- bool
- serialize (xercesc::XMLFormatTarget& target,
- const xercesc::DOMDocument& doc,
- const std::basic_string<C>& enconding,
- error_handler<C>& eh,
- unsigned long flags)
- {
- bits::error_handler_proxy<C> ehp (eh);
- return serialize (target, doc, enconding, ehp, flags);
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/wildcard-source.hxx b/xsd/libxsd/xsd/cxx/xml/dom/wildcard-source.hxx
deleted file mode 100644
index 95de764..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/wildcard-source.hxx
+++ /dev/null
@@ -1,30 +0,0 @@
-// file : xsd/cxx/xml/dom/wildcard-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_DOM_WILDCARD_SOURCE_HXX
-#define XSD_CXX_XML_DOM_WILDCARD_SOURCE_HXX
-
-#include <xercesc/dom/DOMDocument.hpp>
-
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- create_document ();
- }
- }
- }
-}
-
-#include <xsd/cxx/xml/dom/wildcard-source.txx>
-
-#endif // XSD_CXX_XML_DOM_WILDCARD_SOURCE_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/dom/wildcard-source.txx b/xsd/libxsd/xsd/cxx/xml/dom/wildcard-source.txx
deleted file mode 100644
index cce6922..0000000
--- a/xsd/libxsd/xsd/cxx/xml/dom/wildcard-source.txx
+++ /dev/null
@@ -1,37 +0,0 @@
-// file : xsd/cxx/xml/dom/wildcard-source.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xercesc/util/XMLUniDefs.hpp> // chLatin_L, etc
-
-#include <xercesc/dom/DOMImplementation.hpp>
-#include <xercesc/dom/DOMImplementationRegistry.hpp>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace dom
- {
- template <typename C>
- XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
- create_document ()
- {
- const XMLCh ls[] = {xercesc::chLatin_L,
- xercesc::chLatin_S,
- xercesc::chNull};
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- xercesc::DOMImplementation* impl (
- xercesc::DOMImplementationRegistry::getDOMImplementation (ls));
-
- return XSD_DOM_AUTO_PTR<xercesc::DOMDocument> (
- impl->createDocument ());
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/xml/elements.hxx b/xsd/libxsd/xsd/cxx/xml/elements.hxx
deleted file mode 100644
index 107b36d..0000000
--- a/xsd/libxsd/xsd/cxx/xml/elements.hxx
+++ /dev/null
@@ -1,117 +0,0 @@
-// file : xsd/cxx/xml/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_ELEMENTS_HXX
-#define XSD_CXX_XML_ELEMENTS_HXX
-
-#include <string>
-
-#include <xercesc/util/XercesVersion.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-
-#if _XERCES_VERSION < 30000
-# error Xerces-C++ 2-series is not supported
-#endif
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- template <typename C>
- class properties
- {
- public:
- struct argument {};
-
-
- // Schema location properties. Note that all locations are
- // relative to an instance document unless they are full
- // URIs. For example if you want to use a local schema then
- // you will need to use 'file:///absolute/path/to/your/schema'.
- //
-
- // Add a location for a schema with a target namespace.
- //
- void
- schema_location (const std::basic_string<C>& namespace_,
- const std::basic_string<C>& location);
-
- // Add a location for a schema without a target namespace.
- //
- void
- no_namespace_schema_location (const std::basic_string<C>& location);
-
- public:
- const std::basic_string<C>&
- schema_location () const
- {
- return schema_location_;
- }
-
- const std::basic_string<C>&
- no_namespace_schema_location () const
- {
- return no_namespace_schema_location_;
- }
-
- private:
- std::basic_string<C> schema_location_;
- std::basic_string<C> no_namespace_schema_location_;
- };
-
-
- //
- //
-
- template <typename C>
- std::basic_string<C>
- prefix (const std::basic_string<C>& n);
-
- template <typename C>
- std::basic_string<C>
- uq_name (const std::basic_string<C>& n);
-
-
- //
- //
-
- inline void
- initialize ()
- {
- xercesc::XMLPlatformUtils::Initialize ();
- }
-
- inline void
- terminate ()
- {
- xercesc::XMLPlatformUtils::Terminate ();
- }
-
- struct auto_initializer
- {
- auto_initializer (bool initialize = true, bool terminate = true)
- : terminate_ (initialize && terminate)
- {
- if (initialize)
- xml::initialize ();
- }
-
- ~auto_initializer ()
- {
- if (terminate_)
- terminate ();
- }
-
- private:
- bool terminate_;
- };
- }
- }
-}
-
-#include <xsd/cxx/xml/elements.txx>
-
-#endif // XSD_CXX_XML_ELEMENTS_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/elements.txx b/xsd/libxsd/xsd/cxx/xml/elements.txx
deleted file mode 100644
index 37adcf0..0000000
--- a/xsd/libxsd/xsd/cxx/xml/elements.txx
+++ /dev/null
@@ -1,72 +0,0 @@
-// file : xsd/cxx/xml/elements.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- // properties
- //
-
- template <typename C>
- void properties<C>::
- schema_location (const std::basic_string<C>& ns,
- const std::basic_string<C>& loc)
- {
- if (ns.empty () || loc.empty ())
- throw argument ();
-
- if (!schema_location_.empty ())
- schema_location_ += C (' ');
-
- schema_location_ += ns + C (' ') + loc;
- }
-
- template <typename C>
- void properties<C>::
- no_namespace_schema_location (const std::basic_string<C>& loc)
- {
- if (loc.empty ())
- throw argument ();
-
- if (!no_namespace_schema_location_.empty ())
- no_namespace_schema_location_ += C (' ');
-
- no_namespace_schema_location_ += loc;
- }
-
-
- //
- //
-
- template <typename C>
- std::basic_string<C>
- prefix (const std::basic_string<C>& n)
- {
- std::size_t i (0);
-
- while (i < n.length () && n[i] != ':')
- ++i;
-
- return std::basic_string<C> (n, i == n.length () ? i : 0, i);
- }
-
- template <typename C>
- std::basic_string<C>
- uq_name (const std::basic_string<C>& n)
- {
- std::size_t i (0);
-
- while (i < n.length () && n[i] != ':')
- ++i;
-
- return std::basic_string<C> (
- n.c_str () + (i == n.length () ? 0 : i + 1));
- }
- }
- }
-}
-
diff --git a/xsd/libxsd/xsd/cxx/xml/error-handler.hxx b/xsd/libxsd/xsd/cxx/xml/error-handler.hxx
deleted file mode 100644
index 616d081..0000000
--- a/xsd/libxsd/xsd/cxx/xml/error-handler.hxx
+++ /dev/null
@@ -1,58 +0,0 @@
-// file : xsd/cxx/xml/error-handler.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_ERROR_HANDLER_HXX
-#define XSD_CXX_XML_ERROR_HANDLER_HXX
-
-#include <string>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- template <typename C>
- class error_handler
- {
- public:
- virtual
- ~error_handler ()
- {
- }
-
- public:
-
- // The fatal severity level results in termination
- // of the parsing process no matter what is returned
- // from handle.
- //
- struct severity
- {
- enum value
- {
- warning,
- error,
- fatal
- };
-
- severity (value v) : v_ (v) {}
- operator value () const { return v_; }
-
- private:
- value v_;
- };
-
- virtual bool
- handle (const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- severity,
- const std::basic_string<C>& message) = 0;
- };
- }
- }
-}
-
-#endif // XSD_CXX_XML_ERROR_HANDLER_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/exceptions.hxx b/xsd/libxsd/xsd/cxx/xml/exceptions.hxx
deleted file mode 100644
index ef1ec7a..0000000
--- a/xsd/libxsd/xsd/cxx/xml/exceptions.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/xml/exceptions.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_EXCEPTIONS_HXX
-#define XSD_CXX_XML_EXCEPTIONS_HXX
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- struct invalid_utf16_string {};
- }
- }
-}
-
-#endif // XSD_CXX_XML_EXCEPTIONS_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/qualified-name.hxx b/xsd/libxsd/xsd/cxx/xml/qualified-name.hxx
deleted file mode 100644
index bfdf4f3..0000000
--- a/xsd/libxsd/xsd/cxx/xml/qualified-name.hxx
+++ /dev/null
@@ -1,83 +0,0 @@
-// file : xsd/cxx/xml/qualified-name.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_QUALIFIED_NAME_HXX
-#define XSD_CXX_XML_QUALIFIED_NAME_HXX
-
-#include <string>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- template <typename C>
- struct qualified_name
- {
- qualified_name (const C* name,
- const C* namespace_)
- : name_ (name), namespace__ (namespace_)
- {
- }
-
- qualified_name (const std::basic_string<C>& name,
- const std::basic_string<C>& namespace_)
- : name_ (name), namespace__ (namespace_)
- {
- }
-
- qualified_name (const C* name)
- : name_ (name)
- {
- }
-
- qualified_name (const std::basic_string<C>& name)
- : name_ (name)
- {
- }
-
- const std::basic_string<C>&
- name () const
- {
- return name_;
- }
-
- const std::basic_string<C>&
- namespace_ () const
- {
- return namespace__;
- }
-
- private:
- std::basic_string<C> name_;
- std::basic_string<C> namespace__;
- };
-
- template <typename C>
- inline bool
- operator== (const qualified_name<C>& x, const qualified_name<C>& y)
- {
- return x.name () == y.name () && x.namespace_ () == y.namespace_ ();
- }
-
- template <typename C>
- inline bool
- operator!= (const qualified_name<C>& x, const qualified_name<C>& y)
- {
- return !(x == y);
- }
-
- template <typename C>
- inline bool
- operator< (const qualified_name<C>& x, const qualified_name<C>& y)
- {
- int r (x.name ().compare (y.name ()));
- return (r < 0) || (r == 0 && x.namespace_ () < y.namespace_ ());
- }
- }
- }
-}
-
-#endif // XSD_CXX_XML_QUALIFIED_NAME_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/sax/bits/error-handler-proxy.hxx b/xsd/libxsd/xsd/cxx/xml/sax/bits/error-handler-proxy.hxx
deleted file mode 100644
index 0cfacc2..0000000
--- a/xsd/libxsd/xsd/cxx/xml/sax/bits/error-handler-proxy.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-// file : xsd/cxx/xml/sax/bits/error-handler-proxy.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_SAX_ERROR_HANDLER_PROXY_HXX
-#define XSD_CXX_XML_SAX_ERROR_HANDLER_PROXY_HXX
-
-#include <xercesc/sax/ErrorHandler.hpp>
-#include <xercesc/sax/SAXParseException.hpp>
-
-#include <xsd/cxx/xml/error-handler.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace sax
- {
- namespace bits
- {
- template <typename C>
- class error_handler_proxy: public xercesc::ErrorHandler
- {
- public:
- error_handler_proxy (error_handler<C>& eh)
- : failed_ (false), eh_ (&eh), native_eh_ (0)
- {
- }
-
- error_handler_proxy (xercesc::ErrorHandler& eh)
- : failed_ (false), eh_ (0), native_eh_ (&eh)
- {
- }
-
- public:
- virtual void
- warning (const xercesc::SAXParseException& e);
-
- virtual void
- error (const xercesc::SAXParseException& e);
-
- virtual void
- fatalError (const xercesc::SAXParseException& e);
-
- public:
- bool
- failed () const
- {
- return failed_;
- }
-
- virtual void
- resetErrors()
- {
- failed_ = false;
- }
-
- private:
- typedef typename error_handler<C>::severity severity;
-
- void
- handle (const xercesc::SAXParseException&, severity);
-
- private:
- bool failed_;
- error_handler<C>* eh_;
- xercesc::ErrorHandler* native_eh_;
- };
- }
- }
- }
- }
-}
-
-#include <xsd/cxx/xml/sax/bits/error-handler-proxy.txx>
-
-#endif // XSD_CXX_XML_SAX_ERROR_HANDLER_PROXY_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/sax/bits/error-handler-proxy.txx b/xsd/libxsd/xsd/cxx/xml/sax/bits/error-handler-proxy.txx
deleted file mode 100644
index 24b8a3d..0000000
--- a/xsd/libxsd/xsd/cxx/xml/sax/bits/error-handler-proxy.txx
+++ /dev/null
@@ -1,77 +0,0 @@
-// file : xsd/cxx/xml/sax/bits/error-handler-proxy.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/xml/string.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace sax
- {
- namespace bits
- {
- template <typename C>
- void error_handler_proxy<C>::
- warning (const xercesc::SAXParseException& e)
- {
- if (native_eh_)
- native_eh_->warning (e);
- else
- handle (e, severity::warning);
- }
-
-
- template <typename C>
- void error_handler_proxy<C>::
- error (const xercesc::SAXParseException& e)
- {
- failed_ = true;
-
- if (native_eh_)
- native_eh_->error (e);
- else
- handle (e, severity::error);
- }
-
-
- template <typename C>
- void error_handler_proxy<C>::
- fatalError (const xercesc::SAXParseException& e)
- {
- failed_ = true;
-
- if (native_eh_)
- native_eh_->fatalError (e);
- else
- handle (e, severity::fatal);
- }
-
-
- template <typename C>
- void error_handler_proxy<C>::
- handle (const xercesc::SAXParseException& e, severity s)
- {
- //@@ I do not honor return values from the handler. This
- // is not too bad at the moment because I set
- // all-errors-are-fatal flag on the parser.
- //
- const XMLCh* id (e.getPublicId ());
-
- if (id == 0)
- id = e.getSystemId ();
-
- eh_->handle (transcode<C> (id),
- static_cast<unsigned long> (e.getLineNumber ()),
- static_cast<unsigned long> (e.getColumnNumber ()),
- s,
- transcode<C> (e.getMessage ()));
- }
- }
- }
- }
- }
-}
diff --git a/xsd/libxsd/xsd/cxx/xml/sax/std-input-source.hxx b/xsd/libxsd/xsd/cxx/xml/sax/std-input-source.hxx
deleted file mode 100644
index 00b2397..0000000
--- a/xsd/libxsd/xsd/cxx/xml/sax/std-input-source.hxx
+++ /dev/null
@@ -1,152 +0,0 @@
-// file : xsd/cxx/xml/sax/std-input-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_SAX_STD_INPUT_SOURCE_HXX
-#define XSD_CXX_XML_SAX_STD_INPUT_SOURCE_HXX
-
-#include <istream>
-
-#include <xsd/cxx/xml/string.hxx>
-
-#include <xercesc/sax/InputSource.hpp>
-#include <xercesc/util/BinInputStream.hpp>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace sax
- {
- class std_input_stream: public xercesc::BinInputStream
- {
- public:
- std_input_stream (std::istream& is)
- : is_ (is)
- {
- }
-
- virtual XMLFilePos
- curPos () const
- {
- return static_cast<XMLFilePos> (is_.tellg ());
- }
-
- virtual XMLSize_t
- readBytes (XMLByte* const buf, const XMLSize_t size)
- {
- // Some implementations don't clear gcount if you
- // call read() on a stream that is in the eof state.
- //
- if (is_.eof ())
- return 0;
-
- // Unset the exception failbit while we are working
- // with the stream.
- //
- std::ios_base::iostate old (is_.exceptions ());
- is_.exceptions (old & ~std::ios_base::failbit);
-
- is_.read (reinterpret_cast<char*> (buf),
- static_cast<std::streamsize> (size));
-
- // Clear the fail bit if it was caused by eof and restore
- // the original exception state. If there are any pending
- // errors then the exception will be thrown now.
- //
- if (is_.fail () && is_.eof ())
- is_.clear (is_.rdstate () & ~std::ios_base::failbit);
-
- is_.exceptions (old);
-
- // Make sure that if we failed, readBytes won't be called
- // again.
- //
- return !is_.fail ()
- ? static_cast<XMLSize_t> (is_.gcount ())
- : 0;
- }
-
- virtual const XMLCh*
- getContentType () const
- {
- return 0;
- }
-
- private:
- std::istream& is_;
- };
-
-
- class std_input_source: public xercesc::InputSource
- {
- public:
- std_input_source (std::istream& is)
- : is_ (&is)
- {
- }
-
- template <typename C>
- std_input_source (std::istream& is, const C* system_id)
- : xercesc::InputSource (xml::string (system_id).c_str ()),
- is_ (&is)
- {
- }
-
- template <typename C>
- std_input_source (std::istream& is,
- const std::basic_string<C>& system_id)
- : xercesc::InputSource (xml::string (system_id).c_str ()),
- is_ (&is)
- {
- }
-
- template <typename C>
- std_input_source (std::istream& is,
- const C* system_id,
- const C* public_id)
- : xercesc::InputSource (xml::string (system_id).c_str (),
- xml::string (public_id).c_str ()),
- is_ (&is)
- {
- }
-
- template <typename C>
- std_input_source (std::istream& is,
- const std::basic_string<C>& system_id,
- const std::basic_string<C>& public_id)
- : xercesc::InputSource (xml::string (system_id).c_str (),
- xml::string (public_id).c_str ()),
- is_ (&is)
- {
- }
-
- struct copy {};
-
- // Throws the copy exception if this function is called more
- // than once.
- //
- virtual xercesc::BinInputStream*
- makeStream () const
- {
- if (is_ == 0)
- throw copy ();
-
- std::istream& is (*is_);
-
- is_ = 0;
-
- return new std_input_stream (is);
- }
-
- private:
- mutable std::istream* is_;
- };
- }
- }
- }
-}
-
-#endif // XSD_CXX_XML_SAX_STD_INPUT_SOURCE_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/std-memory-manager.hxx b/xsd/libxsd/xsd/cxx/xml/std-memory-manager.hxx
deleted file mode 100644
index e4d6f5b..0000000
--- a/xsd/libxsd/xsd/cxx/xml/std-memory-manager.hxx
+++ /dev/null
@@ -1,54 +0,0 @@
-// file : xsd/cxx/xml/std-memory-manager.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_STD_MEMORY_MANAGER_HXX
-#define XSD_CXX_XML_STD_MEMORY_MANAGER_HXX
-
-#include <new> // operator new, delete
-#include <xercesc/framework/MemoryManager.hpp>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- class std_memory_manager: public xercesc::MemoryManager
- {
- public:
- // Xerces-C++ MemoryManager interface.
- //
- virtual void*
- allocate(XMLSize_t size)
- {
- return operator new (size);
- }
-
- virtual void
- deallocate(void* p)
- {
- if (p)
- operator delete (p);
- }
-
- virtual xercesc::MemoryManager*
- getExceptionMemoryManager()
- {
- return xercesc::XMLPlatformUtils::fgMemoryManager;
- }
-
- // Standard deleter interface.
- //
- void
- operator() (void* p) const
- {
- if (p)
- operator delete (p);
- }
- };
- }
- }
-}
-
-#endif // XSD_CXX_XML_STD_MEMORY_MANAGER_HXX
diff --git a/xsd/libxsd/xsd/cxx/xml/string.hxx b/xsd/libxsd/xsd/cxx/xml/string.hxx
deleted file mode 100644
index 9f4767b..0000000
--- a/xsd/libxsd/xsd/cxx/xml/string.hxx
+++ /dev/null
@@ -1,90 +0,0 @@
-// file : xsd/cxx/xml/string.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_STRING_HXX
-#define XSD_CXX_XML_STRING_HXX
-
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <xercesc/util/XercesDefs.hpp> // XMLCh
-
-#include <xsd/cxx/config.hxx> // XSD_CXX11
-
-#ifdef XSD_CXX11
-# include <memory> // std::unique_ptr
-#else
-# include <xsd/cxx/auto-array.hxx>
-#endif
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- // Transcode a null-terminated string.
- //
- template <typename C>
- std::basic_string<C>
- transcode (const XMLCh* s);
-
- // Transcode a potentially non-null-terminated string.
- //
- template <typename C>
- std::basic_string<C>
- transcode (const XMLCh* s, std::size_t length);
-
-
- // For VC wchar_t and XMLCh are the same type so we cannot overload
- // the transcode name. You should not use these functions anyway and
- // instead use the xml::string class below.
- //
- template <typename C>
- XMLCh*
- transcode_to_xmlch (const C*);
-
- template <typename C>
- XMLCh*
- transcode_to_xmlch (const std::basic_string<C>& s);
-
- //
- //
- class string
- {
- public :
- template <typename C>
- string (const std::basic_string<C>& s)
- : s_ (transcode_to_xmlch<C> (s)) {}
-
- template <typename C>
- string (const C* s): s_ (transcode_to_xmlch<C> (s)) {}
-
- const XMLCh*
- c_str () const {return s_.get ();}
-
- XMLCh*
- release () {return s_.release ();}
-
- private:
- string (const string&);
-
- string&
- operator= (const string&);
-
- private:
-#ifdef XSD_CXX11
- std::unique_ptr<XMLCh[]> s_;
-#else
- auto_array<XMLCh> s_;
-#endif
- };
- }
- }
-}
-
-#endif // XSD_CXX_XML_STRING_HXX
-
-#include <xsd/cxx/xml/string.ixx>
-#include <xsd/cxx/xml/string.txx>
diff --git a/xsd/libxsd/xsd/cxx/xml/string.ixx b/xsd/libxsd/xsd/cxx/xml/string.ixx
deleted file mode 100644
index ede125e..0000000
--- a/xsd/libxsd/xsd/cxx/xml/string.ixx
+++ /dev/null
@@ -1,170 +0,0 @@
-// file : xsd/cxx/xml/string.ixx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_STRING_IXX
-#define XSD_CXX_XML_STRING_IXX
-
-#include <xercesc/util/XMLString.hpp>
-
-// If no transcoder has been included, use the default UTF-8.
-//
-#ifndef XSD_CXX_XML_TRANSCODER
-# include <xsd/cxx/xml/char-utf8.hxx>
-#endif
-
-// We sometimes need this functionality even if we are building for
-// wchar_t.
-//
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- template <>
- inline std::basic_string<char>
- transcode<char> (const XMLCh* s)
- {
- if (s == 0 || *s == XMLCh (0))
- return std::basic_string<char> ();
-
-#ifndef XSD_CXX_XML_TRANSCODER_CHAR_LCP
- return char_transcoder::to (s, xercesc::XMLString::stringLen (s));
-#else
- return char_transcoder::to (s);
-#endif
- }
-
- template <>
- inline std::basic_string<char>
- transcode<char> (const XMLCh* s, std::size_t len)
- {
- if (s == 0 || len == 0)
- return std::basic_string<char> ();
-
- return char_transcoder::to (s, len);
- }
-
- template <>
- inline XMLCh*
- transcode_to_xmlch (const char* s)
- {
-#ifndef XSD_CXX_XML_TRANSCODER_CHAR_LCP
- return char_transcoder::from (s, std::char_traits<char>::length (s));
-#else
- return char_transcoder::from (s);
-#endif
- }
-
- template <>
- inline XMLCh*
- transcode_to_xmlch (const std::basic_string<char>& s)
- {
-#ifndef XSD_CXX_XML_TRANSCODER_CHAR_LCP
- return char_transcoder::from (s.c_str (), s.length ());
-#else
- return char_transcoder::from (s.c_str ());
-#endif
- }
- }
- }
-}
-
-#endif // XSD_CXX_XML_STRING_IXX
-
-
-#if defined(XSD_USE_CHAR) || !defined(XSD_USE_WCHAR)
-
-#ifndef XSD_CXX_XML_STRING_IXX_CHAR
-#define XSD_CXX_XML_STRING_IXX_CHAR
-
-#endif // XSD_CXX_XML_STRING_IXX_CHAR
-#endif // XSD_USE_CHAR
-
-
-#if defined(XSD_USE_WCHAR) || !defined(XSD_USE_CHAR)
-
-#ifndef XSD_CXX_XML_STRING_IXX_WCHAR
-#define XSD_CXX_XML_STRING_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace bits
- {
- template <typename W, std::size_t S>
- struct wchar_transcoder;
-
- // Specialization for 2-byte wchar_t (resulting encoding is UTF-16).
- //
- template <typename W>
- struct wchar_transcoder<W, 2>
- {
- static std::basic_string<W>
- to (const XMLCh* s, std::size_t length);
-
- static XMLCh*
- from (const W* s, std::size_t length);
- };
-
-
- // Specialization for 4-byte wchar_t (resulting encoding is UCS-4).
- //
- template <typename W>
- struct wchar_transcoder<W, 4>
- {
- static std::basic_string<W>
- to (const XMLCh* s, std::size_t length);
-
- static XMLCh*
- from (const W* s, std::size_t length);
- };
- }
-
- template <>
- inline std::basic_string<wchar_t>
- transcode<wchar_t> (const XMLCh* s)
- {
- if (s == 0)
- return std::basic_string<wchar_t> ();
-
- return bits::wchar_transcoder<wchar_t, sizeof (wchar_t)>::to (
- s, xercesc::XMLString::stringLen (s));
- }
-
- template <>
- inline std::basic_string<wchar_t>
- transcode<wchar_t> (const XMLCh* s, std::size_t len)
- {
- if (s == 0 || len == 0)
- return std::basic_string<wchar_t> ();
-
- return bits::wchar_transcoder<wchar_t, sizeof (wchar_t)>::to (
- s, len);
- }
-
- template <>
- inline XMLCh*
- transcode_to_xmlch (const wchar_t* s)
- {
- return bits::wchar_transcoder<wchar_t, sizeof (wchar_t)>::from (
- s, std::char_traits<wchar_t>::length (s));
- }
-
- template <>
- inline XMLCh*
- transcode_to_xmlch (const std::basic_string<wchar_t>& s)
- {
- return bits::wchar_transcoder<wchar_t, sizeof (wchar_t)>::from (
- s.c_str (), s.length ());
- }
- }
- }
-}
-
-#endif // XSD_CXX_XML_STRING_IXX_WCHAR
-#endif // XSD_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/xml/string.txx b/xsd/libxsd/xsd/cxx/xml/string.txx
deleted file mode 100644
index e6adb98..0000000
--- a/xsd/libxsd/xsd/cxx/xml/string.txx
+++ /dev/null
@@ -1,162 +0,0 @@
-// file : xsd/cxx/xml/string.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_XML_STRING_TXX
-#define XSD_CXX_XML_STRING_TXX
-
-
-#endif // XSD_CXX_XML_STRING_TXX
-
-#if defined(XSD_USE_WCHAR) || !defined(XSD_USE_CHAR)
-
-#ifndef XSD_CXX_XML_STRING_TXX_WCHAR
-#define XSD_CXX_XML_STRING_TXX_WCHAR
-
-#include <xsd/cxx/xml/exceptions.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace xml
- {
- namespace bits
- {
- // wchar_transcoder (specialization for 2-byte wchar_t)
- //
- template <typename W>
- std::basic_string<W> wchar_transcoder<W, 2>::
- to (const XMLCh* s, std::size_t length)
- {
- std::basic_string<W> r;
- r.reserve (length + 1);
- r.resize (length);
- W* rs (const_cast<W*> (r.c_str ()));
-
- for (std::size_t i (0); i < length; ++s, ++i)
- {
- rs[i] = *s;
- }
-
- return r;
- }
-
- template <typename W>
- XMLCh* wchar_transcoder<W, 2>::
- from (const W* s, std::size_t length)
- {
-#ifdef XSD_CXX11
- std::unique_ptr<XMLCh[]> r (
-#else
- auto_array<XMLCh> r (
-#endif
- new XMLCh[length + 1]);
-
- XMLCh* ir (r.get ());
-
- for (std::size_t i (0); i < length; ++ir, ++i)
- {
- *ir = static_cast<XMLCh> (s[i]);
- }
-
- *ir = XMLCh (0);
-
- return r.release ();
- }
-
-
- // wchar_transcoder (specialization for 4-byte wchar_t)
- //
- template <typename W>
- std::basic_string<W> wchar_transcoder<W, 4>::
- to (const XMLCh* s, std::size_t length)
- {
- const XMLCh* end (s + length);
-
- // Find what the resulting buffer size will be.
- //
- std::size_t rl (0);
-
- for (const XMLCh* p (s); p < end; ++p)
- {
- rl++;
-
- if ((*p >= 0xD800) && (*p <= 0xDBFF))
- {
- // Make sure we have one more char and it has a valid
- // value for the second char in a surrogate pair.
- //
- if (++p == end || !((*p >= 0xDC00) && (*p <= 0xDFFF)))
- throw invalid_utf16_string ();
- }
- }
-
- std::basic_string<W> r;
- r.reserve (rl + 1);
- r.resize (rl);
- W* rs (const_cast<W*> (r.c_str ()));
-
- std::size_t i (0);
-
- for (const XMLCh* p (s); p < end; ++p)
- {
- XMLCh x (*p);
-
- if (x < 0xD800 || x > 0xDBFF)
- rs[i++] = W (x);
- else
- rs[i++] = ((x - 0xD800) << 10) + (*++p - 0xDC00) + 0x10000;
- }
-
- return r;
- }
-
- template <typename W>
- XMLCh* wchar_transcoder<W, 4>::
- from (const W* s, std::size_t length)
- {
- // Find what the resulting buffer size will be.
- //
- std::size_t rl (0);
-
- for (const W* p (s); p < s + length; ++p)
- {
- rl += (*p & 0xFFFF0000) ? 2 : 1;
- }
-
-#ifdef XSD_CXX11
- std::unique_ptr<XMLCh[]> r (
-#else
- auto_array<XMLCh> r (
-#endif
- new XMLCh[rl + 1]);
-
- XMLCh* ir (r.get ());
-
- for (const W* p (s); p < s + length; ++p)
- {
- W w (*p);
-
- if (w & 0xFFFF0000)
- {
- // Surrogate pair.
- //
- *ir++ = static_cast<XMLCh> (((w - 0x10000) >> 10) + 0xD800);
- *ir++ = static_cast<XMLCh> ((w & 0x3FF) + 0xDC00);
- }
- else
- *ir++ = static_cast<XMLCh> (w);
- }
-
- *ir = XMLCh (0);
-
- return r.release ();
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_XML_STRING_TXX_WCHAR
-#endif // XSD_USE_WCHAR
diff --git a/xsd/libxsd/xsd/cxx/zc-istream.hxx b/xsd/libxsd/xsd/cxx/zc-istream.hxx
deleted file mode 100644
index 440fdd4..0000000
--- a/xsd/libxsd/xsd/cxx/zc-istream.hxx
+++ /dev/null
@@ -1,216 +0,0 @@
-// file : xsd/cxx/zc-istream.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_ZC_ISTREAM_HXX
-#define XSD_CXX_ZC_ISTREAM_HXX
-
-#include <string>
-#include <istream>
-
-#include <xsd/cxx/ro-string.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- // Input streambuffer that does not copy the underlying
- // buffer (zero copy).
- //
- template <typename C>
- class zc_streambuf: public std::basic_streambuf<C>
- {
- public:
- typedef typename std::basic_streambuf<C>::int_type int_type;
- typedef typename std::basic_streambuf<C>::traits_type traits_type;
-
- public:
- zc_streambuf (const ro_string<C>&);
- zc_streambuf (const std::basic_string<C>&);
-
- protected:
- virtual std::streamsize
- showmanyc ();
-
- virtual int_type
- underflow ();
-
- private:
- void
- init ();
-
- private:
- zc_streambuf (const zc_streambuf&);
-
- zc_streambuf&
- operator= (const zc_streambuf&);
-
- private:
- ro_string<C> str_;
- };
-
-
- // Input string stream that does not copy the underlying string.
- //
- template <typename C>
- class zc_istream_base
- {
- protected:
- zc_istream_base (const ro_string<C>&);
- zc_istream_base (const std::basic_string<C>&);
-
- protected:
- zc_streambuf<C> buf_;
- };
-
- template <typename C>
- class zc_istream: protected zc_istream_base<C>,
- public std::basic_istream<C>
- {
- typedef std::basic_istream<C> base;
-
- public:
- zc_istream (const ro_string<C>&);
- zc_istream (const std::basic_string<C>&);
-
- bool
- exhausted ()
- {
- return this->get () == std::basic_istream<C>::traits_type::eof ();
- }
-
- zc_istream&
- operator>> (unsigned char& x)
- {
- if (check_unsigned ())
- static_cast<base&> (*this) >> x;
-
- return *this;
- }
-
- zc_istream&
- operator>> (signed char& x)
- {
- if (check_signed ())
- static_cast<base&> (*this) >> x;
-
- return *this;
- }
-
- zc_istream&
- operator>> (unsigned short& x)
- {
- if (check_unsigned ())
- static_cast<base&> (*this) >> x;
-
- return *this;
- }
-
- zc_istream&
- operator>> (short& x)
- {
- if (check_signed ())
- static_cast<base&> (*this) >> x;
-
- return *this;
- }
-
- zc_istream&
- operator>> (unsigned int& x)
- {
- if (check_unsigned ())
- static_cast<base&> (*this) >> x;
-
- return *this;
- }
-
- zc_istream&
- operator>> (int& x)
- {
- if (check_signed ())
- static_cast<base&> (*this) >> x;
-
- return *this;
- }
-
- zc_istream&
- operator>> (unsigned long& x)
- {
- if (check_unsigned ())
- static_cast<base&> (*this) >> x;
-
- return *this;
- }
-
- zc_istream&
- operator>> (long& x)
- {
- if (check_signed ())
- static_cast<base&> (*this) >> x;
-
- return *this;
- }
-
- zc_istream&
- operator>> (unsigned long long& x)
- {
- if (check_unsigned ())
- static_cast<base&> (*this) >> x;
-
- return *this;
- }
-
- zc_istream&
- operator>> (long long& x)
- {
- if (check_signed ())
- static_cast<base&> (*this) >> x;
-
- return *this;
- }
-
- template <typename X>
- zc_istream&
- operator>> (X& x)
- {
- static_cast<base&> (*this) >> x;
- return *this;
- }
-
- private:
- bool
- check_signed ()
- {
- typename std::basic_istream<C>::traits_type::int_type p (this->peek ());
- bool r ((p >= C ('0') && p <= C ('9')) || p == C ('-') || p == C ('+'));
-
- if (!r)
- this->setstate (std::ios_base::failbit);
-
- return r;
- }
-
- bool
- check_unsigned ()
- {
- typename std::basic_istream<C>::traits_type::int_type p (this->peek ());
- bool r ((p >= C ('0') && p <= C ('9')) || p == C ('+'));
-
- if (!r)
- this->setstate (std::ios_base::failbit);
-
- return r;
- }
-
- private:
- zc_istream (const zc_istream&);
-
- zc_istream&
- operator= (const zc_istream&);
- };
- }
-}
-
-#include <xsd/cxx/zc-istream.txx>
-
-#endif // XSD_CXX_ZC_ISTREAM_HXX
diff --git a/xsd/libxsd/xsd/cxx/zc-istream.txx b/xsd/libxsd/xsd/cxx/zc-istream.txx
deleted file mode 100644
index b37e067..0000000
--- a/xsd/libxsd/xsd/cxx/zc-istream.txx
+++ /dev/null
@@ -1,93 +0,0 @@
-// file : xsd/cxx/zc-istream.txx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- // zc_streambuf
- //
- template <typename C>
- zc_streambuf<C>::
- zc_streambuf (const ro_string<C>& str)
- : str_ (str.data (), str.size ())
- {
- init ();
- }
-
- template <typename C>
- zc_streambuf<C>::
- zc_streambuf (const std::basic_string<C>& str)
- : str_ (str)
- {
- init ();
- }
-
- template <typename C>
- void zc_streambuf<C>::
- init ()
- {
- C* b (const_cast<C*> (str_.data ()));
- C* e (b + str_.size ());
-
- this->setg (b, b, e);
- }
-
- template <typename C>
- std::streamsize zc_streambuf<C>::
- showmanyc ()
- {
- return static_cast<std::streamsize> (
- this->egptr () - this->gptr ());
- }
-
- template <typename C>
- typename zc_streambuf<C>::int_type zc_streambuf<C>::
- underflow ()
- {
- int_type r = traits_type::eof ();
-
- if (this->gptr () < this->egptr ())
- r = traits_type::to_int_type (*this->gptr ());
-
- return r;
- }
-
-
- // zc_istream_base
- //
- template <typename C>
- zc_istream_base<C>::
- zc_istream_base (const ro_string<C>& str)
- : buf_ (str)
- {
- }
-
- template <typename C>
- zc_istream_base<C>::
- zc_istream_base (const std::basic_string<C>& str)
- : buf_ (str)
- {
- }
-
-
- // zc_istream
- //
- template <typename C>
- zc_istream<C>::
- zc_istream (const ro_string<C>& str)
- : zc_istream_base<C> (str),
- std::basic_istream<C> (&this->buf_)
- {
- }
-
- template <typename C>
- zc_istream<C>::
- zc_istream (const std::basic_string<C>& str)
- : zc_istream_base<C> (str),
- std::basic_istream<C> (&this->buf_)
- {
- }
- }
-}
diff --git a/xsd/makefile b/xsd/makefile
deleted file mode 100644
index 98e7d62..0000000
--- a/xsd/makefile
+++ /dev/null
@@ -1,103 +0,0 @@
-# file : makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))build/bootstrap.make
-
-default := $(out_base)/
-test := $(out_base)/.test
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-dist-pre := $(out_base)/.dist-pre
-clean := $(out_base)/.clean
-
-.PHONY: $(dist-pre)
-
-$(default): $(out_base)/xsd/ \
- $(out_base)/tests/ \
- $(out_base)/examples/ \
- $(out_base)/doc/
-
-# Test.
-#
-$(test): $(out_base)/tests/.test
-
-
-# Install.
-#
-$(install): $(out_base)/xsd/.install \
- $(out_base)/libxsd/.install \
- $(out_base)/examples/.install \
- $(out_base)/doc/.install
- $(call install-dir,$(src_base)/dist/examples/build,$(install_doc_dir)/xsd/examples/build)
- $(call install-dir,$(src_base)/dist/examples/cxx,$(install_doc_dir)/xsd/examples/cxx,-name makefile)
- $(call install-data,$(src_base)/dist/examples/makefile,$(install_doc_dir)/xsd/examples/makefile)
- $(call install-data,$(src_base)/FLOSSE,$(install_doc_dir)/xsd/FLOSSE)
- $(call install-data,$(src_base)/GPLv2,$(install_doc_dir)/xsd/GPLv2)
- $(call install-data,$(src_base)/LICENSE,$(install_doc_dir)/xsd/LICENSE)
- $(call install-data,$(src_base)/NEWS,$(install_doc_dir)/xsd/NEWS)
- $(call install-data,$(src_base)/dist/README-UNIX,$(install_doc_dir)/xsd/README)
-
-
-# Dist.
-#
-$(dist): $(out_base)/xsd/.dist \
- $(out_base)/libxsd/.dist \
- $(out_base)/examples/.dist \
- $(out_base)/doc/.dist
- $(call install-dir,$(src_base)/dist/examples/build,$(dist_prefix)/examples/build)
- $(call install-dir,$(src_base)/dist/examples/cxx,$(dist_prefix)/examples/cxx,-name makefile)
- $(call install-data,$(src_base)/dist/examples/makefile,$(dist_prefix)/examples/makefile)
- $(call install-data,$(src_base)/dist/README-UNIX,$(dist_prefix)/README)
- $(call install-data,$(src_base)/GPLv2,$(dist_prefix)/GPLv2)
- $(call install-data,$(src_base)/FLOSSE,$(dist_prefix)/FLOSSE)
- $(call install-data,$(src_base)/LICENSE,$(dist_prefix)/LICENSE)
- $(call install-data,$(src_base)/NEWS,$(dist_prefix)/NEWS)
- $(call install-data,$(src_base)/version,$(dist_prefix)/version)
-
-$(dist-win): $(dist-pre) \
- $(out_base)/xsd/.dist-win \
- $(out_base)/libxsd/.dist-win \
- $(out_base)/examples/.dist-win \
- $(out_base)/doc/.dist-win
- $(call install-dir,$(src_base)/dist/etc,$(dist_prefix)/etc)
- $(call install-dir,$(src_base)/dist/examples/build,$(dist_prefix)/examples/build)
- $(call install-data,$(src_base)/dist/examples/tester.bat,$(dist_prefix)/examples/tester.bat)
- $(call install-data,$(src_base)/dist/examples/makefile,$(dist_prefix)/examples/makefile)
- $(call install-data,$(src_base)/dist/README-WINDOWS,$(dist_prefix)/README.txt)
- $(call message,,todos $(dist_prefix)/README.txt)
- $(call install-data,$(src_base)/dist/README-UNIX,$(dist_prefix)/README-CYGWIN.txt)
- $(call message,,todos $(dist_prefix)/README-CYGWIN.txt)
- $(call install-data,$(src_base)/GPLv2,$(dist_prefix)/GPLv2.txt)
- $(call message,,todos $(dist_prefix)/GPLv2.txt)
- $(call install-data,$(src_base)/FLOSSE,$(dist_prefix)/FLOSSE.txt)
- $(call message,,todos $(dist_prefix)/FLOSSE.txt)
- $(call install-data,$(src_base)/LICENSE,$(dist_prefix)/LICENSE.txt)
- $(call message,,todos $(dist_prefix)/LICENSE.txt)
- $(call install-data,$(src_base)/NEWS,$(dist_prefix)/NEWS.txt)
- $(call message,,todos $(dist_prefix)/NEWS.txt)
- $(call install-data,$(src_base)/version,$(dist_prefix)/version.txt)
- $(call message,,todos $(dist_prefix)/version.txt)
-
-# We need the project files for the examples copied before we try to
-# auto-generate the solution files. So each example target that generates
-# solutions should depend in order-only on this target.
-#
-$(dist-pre):
- $(call install-dir,$(src_base)/dist/examples/cxx,$(dist_prefix)/examples/cxx)
-
-# Clean.
-#
-$(clean): $(out_base)/xsd/.clean \
- $(out_base)/tests/.clean \
- $(out_base)/examples/.clean \
- $(out_base)/doc/.clean
-
-$(call include,$(bld_root)/install.make)
-
-$(call import,$(src_base)/xsd/makefile)
-$(call import,$(src_base)/libxsd/makefile)
-$(call import,$(src_base)/tests/makefile)
-$(call import,$(src_base)/examples/makefile)
-$(call import,$(src_base)/doc/makefile)
diff --git a/xsd/options-parser.hxx b/xsd/options-parser.hxx
new file mode 100644
index 0000000..afcdf80
--- /dev/null
+++ b/xsd/options-parser.hxx
@@ -0,0 +1,29 @@
+// file : xsd/options-parser.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_OPTIONS_PARSER_HXX
+#define XSD_OPTIONS_PARSER_HXX
+
+#include <xsd/types.hxx>
+#include <xsd/options.hxx>
+
+namespace cli
+{
+ template <>
+ struct parser<NarrowString>
+ {
+ static void
+ parse (NarrowString& x, bool& xs, scanner& s)
+ {
+ xs = true;
+ const char* o (s.next ());
+
+ if (s.more ())
+ x = s.next ();
+ else
+ throw missing_value (o);
+ }
+ };
+}
+
+#endif // XSD_OPTIONS_PARSER_HXX
diff --git a/xsd/options.cli b/xsd/options.cli
new file mode 100644
index 0000000..3153be9
--- /dev/null
+++ b/xsd/options.cli
@@ -0,0 +1,322 @@
+// file : xsd/options.cli
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+include <cstddef>; // std::size_t
+include <cstdint>; // std::uint64_t
+
+include <xsd/types.hxx>; // NarrowString, NarrowStrings
+
+class help_options
+{
+ std::uint64_t --build2-metadata; // Leave undocumented/hidden.
+
+ // These are all documented elsewhere.
+ //
+ bool --help;
+ bool --version;
+ bool --proprietary-license;
+};
+
+class options = 0
+{
+ NarrowStrings --disable-warning
+ {
+ "<warn>",
+ "Disable printing warning with id <warn>. If \cb{all} is specified for
+ the warning id then all warnings are disabled."
+ };
+
+ // The following option is "fake" in that it is actually handled by
+ // argv_file_scanner. We have it here to get the documentation.
+ //
+ std::string --options-file
+ {
+ "<file>",
+ "Read additional options from <file>. Each option should appearing on a
+ separate line optionally followed by space and an option value. Empty
+ lines and lines starting with \cb{#} are ignored. Option values can
+ be enclosed in double (\cb{\"}) or single (\cb{'}) quotes to preserve
+ leading and trailing whitespaces as well as to specify empty values.
+ If the value itself contains trailing or leading quotes, enclose it
+ with an extra pair of quotes, for example \cb{'\"x\"'}. Non-leading
+ and non-trailing quotes are interpreted as being part of the option
+ value.
+
+ The semantics of providing options in a file is equivalent to providing
+ the same set of options in the same order on the command line at the
+ point where the \cb{--options-file} option is specified except that
+ the shell escaping and quoting is not required. You can repeat this
+ option to specify more than one options file."
+ };
+
+ // SLOC/license options.
+ //
+ bool --show-sloc
+ {
+ "Show the number of generated physical source lines of code (SLOC)."
+ };
+
+ std::size_t --sloc-limit
+ {
+ "<num>",
+ "Check that the number of generated physical source lines of code (SLOC)
+ does not exceed <num>."
+ };
+
+ bool --proprietary-license
+ {
+ "Indicate that the generated code is licensed under a proprietary
+ license instead of the GPL."
+ };
+
+ NarrowString --custom-literals
+ {
+ "<file>",
+ "Load custom XML string to C++ literal mappings from <file>. This
+ mechanism can be useful if you are using a custom character encoding
+ and some of the strings in your schemas, for example element/attribute
+ names or enumeration values, contain non-ASCII characters. In this
+ case you will need to provide a custom mapping to C++ literals for
+ such strings. The format of this file is specified in the
+ \cb{custom-literals.xsd} XML Schema file that can be found in the
+ documentation directory."
+ };
+
+ // Anonymous type morphing.
+ //
+ bool --preserve-anonymous
+ {
+ "Preserve anonymous types. By default anonymous types are automatically
+ named with names derived from the enclosing elements/attributes. Because
+ mappings implemented by this compiler require all types to be named,
+ this option is only useful if you want to make sure your schemas don't
+ have anonymous types."
+ };
+
+ bool --show-anonymous
+ {
+ "Show elements and attributes that are of anonymous types. This option
+ only makes sense together with the \cb{--preserve-anonymous} option."
+ };
+
+ NarrowStrings --anonymous-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to derive names for
+ anonymous types from the enclosing attributes/elements. <regex> is a
+ Perl-like regular expression in the form
+ \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}.
+ Any character can be used as a delimiter instead of '\cb{/}'. Escaping of
+ the delimiter character in \ci{pattern} or \ci{replacement} is not
+ supported.
+
+ All the regular expressions are pushed into a stack with the last
+ specified expression considered first. The first match that succeeds is
+ used. Regular expressions are applied to a string in the form
+
+ \c{\i{filename} \i{namespace} \i{xpath}}
+
+ For instance:
+
+ \cb{hello.xsd http://example.com/hello element}
+
+ \cb{hello.xsd http://example.com/hello type/element}
+
+ As an example, the following expression makes all the derived names
+ start with capital letters. This could be useful when your naming
+ convention requires type names to start with capital letters:
+
+ \cb{%.* .* (.+/)*(.+)%\\u$2%}
+
+ See also the REGEX AND SHELL QUOTING section below."
+ };
+
+ bool --anonymous-regex-trace
+ {
+ "Trace the process of applying regular expressions specified with the
+ \cb{--anonymous-regex} option. Use this option to find out why your
+ regular expressions don't do what you expected them to do."
+ };
+
+ bool --morph-anonymous; // Deprecated and therefore undocumented.
+
+ // Location options.
+ //
+ NarrowStrings --location-map
+ {
+ "<ol>=<nl>",
+ "Map the original schema location <ol> that is specified in the XML
+ Schema include or import elements to new schema location <nl>. Repeat
+ this option to map more than one schema location. For example, the
+ following option maps the \cb{http://example.com/foo.xsd} URL to the
+ \cb{foo.xsd} local file.
+
+ \cb{--location-map http://example.com/foo.xsd=foo.xsd}"
+ };
+
+ NarrowStrings --location-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to map schema
+ locations that are specified in the XML Schema include or import
+ elements. <regex> is a Perl-like regular expression in the form
+ \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. Any character can
+ be used as a delimiter instead of '\cb{/}'. Escaping of the delimiter
+ character in \ci{pattern} or \ci{replacement} is not supported. All
+ the regular expressions are pushed into a stack with the last specified
+ expression considered first. The first match that succeeds is used.
+
+ For example, the following expression maps URL locations in the form
+ \cb{http://example.com/foo/bar.xsd} to local files in the form
+ \cb{bar.xsd}:
+
+ \cb{%http://.+/(.+)%$1%}
+
+ See also the REGEX AND SHELL QUOTING section below."
+ };
+
+ bool --location-regex-trace
+ {
+ "Trace the process of applying regular expressions specified with the
+ \cb{--location-regex} option. Use this option to find out why your
+ regular expressions don't do what you expected them to do."
+ };
+
+ // File-per-type option.
+ //
+ bool --file-per-type
+ {
+ "Generate a separate set of C++ files for each type defined in XML
+ Schema. Note that in this mode you only need to compile the root
+ schema(s) and the code will be generated for all included and
+ imported schemas. This compilation mode is primarily useful when
+ some of your schemas cannot be compiled separately or have cyclic
+ dependencies which involve type inheritance. Other options related
+ to this mode are: \cb{--type-file-regex}, \cb{--schema-file-regex},
+ \cb{--fat-type-file}, and \cb{--file-list}."
+ };
+
+ NarrowStrings --type-file-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate type
+ names to file names when the \cb{--file-per-type} option is specified.
+ <regex> is a Perl-like regular expression in the form
+ \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. Any character can be
+ used as a delimiter instead of '\cb{/}'. Escaping of the delimiter
+ character in \ci{pattern} or \ci{replacement} is not supported. All
+ the regular expressions are pushed into a stack with the last specified
+ expression considered first. The first match that succeeds is used.
+ Regular expressions are applied to a string in the form
+
+ \c{\i{namespace} \i{type-name}}
+
+ For example, the following expression maps type \cb{foo} that is
+ defined in the \cb{http://example.com/bar} namespace to file name
+ \cb{bar-foo}:
+
+ \cb{%http://example.com/(.+) (.+)%$1-$2%}
+
+ See also the REGEX AND SHELL QUOTING section below."
+ };
+
+ bool --type-file-regex-trace
+ {
+ "Trace the process of applying regular expressions specified with the
+ \cb{--type-file-regex} option. Use this option to find out why your
+ regular expressions don't do what you expected them to do."
+ };
+
+ NarrowStrings --schema-file-regex
+ {
+ "<regex>",
+ "Add <regex> to the list of regular expressions used to translate schema
+ file names when the \cb{--file-per-type} option is specified. <regex> is
+ a Perl-like regular expression in the form
+ \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. Any character can be used
+ as a delimiter instead of '\cb{/}'. Escaping of the delimiter character in
+ \ci{pattern} or \ci{replacement} is not supported. All the regular
+ expressions are pushed into a stack with the last specified expression
+ considered first. The first match that succeeds is used. Regular
+ Expressions are applied to the absolute filesystem path of a schema file
+ and the result, including the directory part, if any, is used to derive
+ the \cb{#include} directive paths as well as the generated C++ file
+ paths. This option, along with \cb{--type-file-regex} are primarily
+ useful to place the generated files into subdirectories or to resolve
+ file name conflicts.
+
+ For example, the following expression maps schema files in the
+ \cb{foo/1.0.0/} subdirectory to the files in the \cb{foo/} subdirectory.
+ As a result, the \cb{#include} directive paths for such schemas will be
+ in the \cb{foo/schema.hxx} form and the generated C++ files will be
+ placed into the \cb{foo/} subdirectory:
+
+ \cb{%.*/foo/1.0.0/(.+)%foo/$1%}
+
+ See also the REGEX AND SHELL QUOTING section below."
+ };
+
+ bool --schema-file-regex-trace
+ {
+ "Trace the process of applying regular expressions specified with the
+ \cb{--schema-file-regex} option. Use this option to find out why your
+ regular expressions don't do what you expected them to do."
+ };
+
+ bool --fat-type-file
+ {
+ "Generate code corresponding to global elements into type files instead
+ of schema files when the \cb{--type-file-regex} option is specified.
+ This option is primarily useful when trying to minimize the amount of
+ object code that is linked to an executable by packaging compiled
+ generated code into a static (archive) library."
+ };
+
+ // File list options.
+ //
+ NarrowString --file-list
+ {
+ "<file>",
+ "Write a list of generated C++ files to <file> or to \cb{stdout} if
+ <file> is \cb{-}. This option is primarily useful in the file-per-type
+ compilation mode (\cb{--file-per-type}) to create a list of generated
+ C++ files, for example, as a makefile fragment."
+ };
+
+ bool --file-list-only
+ {
+ "Only write the list of C++ files that would be generated without
+ actually generating them. This option only makes sense together with
+ \cb{--file-list}."
+ }
+
+ NarrowString --file-list-prologue
+ {
+ "<text>",
+ "Insert <text> at the beginning of the file list. As a convenience, all
+ occurrences of the \cb{\\n} character sequence in <text> are replaced
+ with new lines. This option can, for example, be used to assign the
+ generated file list to a makefile variable."
+ };
+
+ NarrowString --file-list-epilogue
+ {
+ "<text>",
+ "Insert <text> at the end of the file list. As a convenience, all
+ occurrences of the \cb{\\n} character sequence in <text> are replaced
+ with new lines."
+ };
+
+ NarrowString --file-list-delim = "\n"
+ {
+ "<text>",
+ "Delimit file names written to the file list with <text> instead of new
+ lines. As a convenience, all occurrences of the \cb{\\n} character
+ sequence in <text> are replaced with new lines."
+ };
+
+ // Undocumented.
+ //
+ bool --disable-multi-import;
+ bool --disable-full-check;
+};
diff --git a/xsd/pregenerated/xsd/cxx/options.cxx b/xsd/pregenerated/xsd/cxx/options.cxx
new file mode 100644
index 0000000..9eea3a9
--- /dev/null
+++ b/xsd/pregenerated/xsd/cxx/options.cxx
@@ -0,0 +1,739 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+// Begin prologue.
+//
+#include <xsd/options-parser.hxx>
+//
+// End prologue.
+
+#include <xsd/cxx/options.hxx>
+
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+#include <utility>
+#include <ostream>
+#include <sstream>
+#include <cstring>
+
+namespace cli
+{
+ template <typename X>
+ struct parser
+ {
+ static void
+ parse (X& x, bool& xs, scanner& s)
+ {
+ using namespace std;
+
+ const char* o (s.next ());
+ if (s.more ())
+ {
+ string v (s.next ());
+ istringstream is (v);
+ if (!(is >> x && is.peek () == istringstream::traits_type::eof ()))
+ throw invalid_value (o, v);
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <>
+ struct parser<bool>
+ {
+ static void
+ parse (bool& x, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ const char* v (s.next ());
+
+ if (std::strcmp (v, "1") == 0 ||
+ std::strcmp (v, "true") == 0 ||
+ std::strcmp (v, "TRUE") == 0 ||
+ std::strcmp (v, "True") == 0)
+ x = true;
+ else if (std::strcmp (v, "0") == 0 ||
+ std::strcmp (v, "false") == 0 ||
+ std::strcmp (v, "FALSE") == 0 ||
+ std::strcmp (v, "False") == 0)
+ x = false;
+ else
+ throw invalid_value (o, v);
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <>
+ struct parser<std::string>
+ {
+ static void
+ parse (std::string& x, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ x = s.next ();
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename X>
+ struct parser<std::pair<X, std::size_t> >
+ {
+ static void
+ parse (std::pair<X, std::size_t>& x, bool& xs, scanner& s)
+ {
+ x.second = s.position ();
+ parser<X>::parse (x.first, xs, s);
+ }
+ };
+
+ template <typename X>
+ struct parser<std::vector<X> >
+ {
+ static void
+ parse (std::vector<X>& c, bool& xs, scanner& s)
+ {
+ X x;
+ bool dummy;
+ parser<X>::parse (x, dummy, s);
+ c.push_back (x);
+ xs = true;
+ }
+ };
+
+ template <typename X, typename C>
+ struct parser<std::set<X, C> >
+ {
+ static void
+ parse (std::set<X, C>& c, bool& xs, scanner& s)
+ {
+ X x;
+ bool dummy;
+ parser<X>::parse (x, dummy, s);
+ c.insert (x);
+ xs = true;
+ }
+ };
+
+ template <typename K, typename V, typename C>
+ struct parser<std::map<K, V, C> >
+ {
+ static void
+ parse (std::map<K, V, C>& m, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ std::size_t pos (s.position ());
+ std::string ov (s.next ());
+ std::string::size_type p = ov.find ('=');
+
+ K k = K ();
+ V v = V ();
+ std::string kstr (ov, 0, p);
+ std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ()));
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (o),
+ 0
+ };
+
+ bool dummy;
+ if (!kstr.empty ())
+ {
+ av[1] = const_cast<char*> (kstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<K>::parse (k, dummy, s);
+ }
+
+ if (!vstr.empty ())
+ {
+ av[1] = const_cast<char*> (vstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<V>::parse (v, dummy, s);
+ }
+
+ m[k] = v;
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename K, typename V, typename C>
+ struct parser<std::multimap<K, V, C> >
+ {
+ static void
+ parse (std::multimap<K, V, C>& m, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ std::size_t pos (s.position ());
+ std::string ov (s.next ());
+ std::string::size_type p = ov.find ('=');
+
+ K k = K ();
+ V v = V ();
+ std::string kstr (ov, 0, p);
+ std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ()));
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (o),
+ 0
+ };
+
+ bool dummy;
+ if (!kstr.empty ())
+ {
+ av[1] = const_cast<char*> (kstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<K>::parse (k, dummy, s);
+ }
+
+ if (!vstr.empty ())
+ {
+ av[1] = const_cast<char*> (vstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<V>::parse (v, dummy, s);
+ }
+
+ m.insert (typename std::multimap<K, V, C>::value_type (k, v));
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename X, typename T, T X::*M>
+ void
+ thunk (X& x, scanner& s)
+ {
+ parser<T>::parse (x.*M, s);
+ }
+
+ template <typename X, bool X::*M>
+ void
+ thunk (X& x, scanner& s)
+ {
+ s.next ();
+ x.*M = true;
+ }
+
+ template <typename X, typename T, T X::*M, bool X::*S>
+ void
+ thunk (X& x, scanner& s)
+ {
+ parser<T>::parse (x.*M, x.*S, s);
+ }
+}
+
+#include <map>
+
+namespace CXX
+{
+ // options
+ //
+
+ options::
+ options ()
+ : std_ (cxx_version::cxx11),
+ std_specified_ (false),
+ char_type_ ("char"),
+ char_type_specified_ (false),
+ char_encoding_ (),
+ char_encoding_specified_ (false),
+ output_dir_ (),
+ output_dir_specified_ (false),
+ generate_inline_ (),
+ generate_xml_schema_ (),
+ extern_xml_schema_ (),
+ extern_xml_schema_specified_ (false),
+ namespace_map_ (),
+ namespace_map_specified_ (false),
+ namespace_regex_ (),
+ namespace_regex_specified_ (false),
+ namespace_regex_trace_ (),
+ reserved_name_ (),
+ reserved_name_specified_ (false),
+ include_with_brackets_ (),
+ include_prefix_ (),
+ include_prefix_specified_ (false),
+ include_regex_ (),
+ include_regex_specified_ (false),
+ include_regex_trace_ (),
+ guard_prefix_ (),
+ guard_prefix_specified_ (false),
+ hxx_suffix_ (".hxx"),
+ hxx_suffix_specified_ (false),
+ ixx_suffix_ (".ixx"),
+ ixx_suffix_specified_ (false),
+ cxx_suffix_ (".cxx"),
+ cxx_suffix_specified_ (false),
+ fwd_suffix_ ("-fwd.hxx"),
+ fwd_suffix_specified_ (false),
+ hxx_regex_ (),
+ hxx_regex_specified_ (false),
+ ixx_regex_ (),
+ ixx_regex_specified_ (false),
+ cxx_regex_ (),
+ cxx_regex_specified_ (false),
+ fwd_regex_ (),
+ fwd_regex_specified_ (false),
+ hxx_prologue_ (),
+ hxx_prologue_specified_ (false),
+ ixx_prologue_ (),
+ ixx_prologue_specified_ (false),
+ cxx_prologue_ (),
+ cxx_prologue_specified_ (false),
+ fwd_prologue_ (),
+ fwd_prologue_specified_ (false),
+ prologue_ (),
+ prologue_specified_ (false),
+ hxx_epilogue_ (),
+ hxx_epilogue_specified_ (false),
+ ixx_epilogue_ (),
+ ixx_epilogue_specified_ (false),
+ cxx_epilogue_ (),
+ cxx_epilogue_specified_ (false),
+ fwd_epilogue_ (),
+ fwd_epilogue_specified_ (false),
+ epilogue_ (),
+ epilogue_specified_ (false),
+ hxx_prologue_file_ (),
+ hxx_prologue_file_specified_ (false),
+ ixx_prologue_file_ (),
+ ixx_prologue_file_specified_ (false),
+ cxx_prologue_file_ (),
+ cxx_prologue_file_specified_ (false),
+ fwd_prologue_file_ (),
+ fwd_prologue_file_specified_ (false),
+ prologue_file_ (),
+ prologue_file_specified_ (false),
+ hxx_epilogue_file_ (),
+ hxx_epilogue_file_specified_ (false),
+ ixx_epilogue_file_ (),
+ ixx_epilogue_file_specified_ (false),
+ cxx_epilogue_file_ (),
+ cxx_epilogue_file_specified_ (false),
+ fwd_epilogue_file_ (),
+ fwd_epilogue_file_specified_ (false),
+ epilogue_file_ (),
+ epilogue_file_specified_ (false),
+ export_symbol_ (),
+ export_symbol_specified_ (false),
+ export_xml_schema_ (),
+ export_maps_ (),
+ import_maps_ (),
+ generate_dep_ (),
+ generate_dep_only_ (),
+ dep_phony_ (),
+ dep_target_ (),
+ dep_target_specified_ (false),
+ dep_suffix_ (".d"),
+ dep_suffix_specified_ (false),
+ dep_file_ (),
+ dep_file_specified_ (false),
+ dep_regex_ (),
+ dep_regex_specified_ (false)
+ {
+ }
+
+ ::cli::usage_para options::
+ print_usage (::std::wostream& os, ::cli::usage_para p)
+ {
+ CLI_POTENTIALLY_UNUSED (os);
+
+ if (p == ::cli::usage_para::text)
+ os << ::std::endl;
+
+ os << "--std <version> Specify the C++ standard that the generated code" << ::std::endl
+ << " should conform to." << ::std::endl;
+
+ os << "--char-type <type> Generate code using the provided character <type>" << ::std::endl
+ << " instead of the default char." << ::std::endl;
+
+ os << "--char-encoding <enc> Specify the character encoding that should be used" << ::std::endl
+ << " in the generated code." << ::std::endl;
+
+ os << "--output-dir <dir> Write generated files to <dir> instead of the" << ::std::endl
+ << " current directory." << ::std::endl;
+
+ os << "--generate-inline Generate simple functions inline." << ::std::endl;
+
+ os << "--generate-xml-schema Generate a C++ header file as if the schema being" << ::std::endl
+ << " compiled defines the XML Schema namespace." << ::std::endl;
+
+ os << "--extern-xml-schema <file> Include a header file derived from <file> instead" << ::std::endl
+ << " of generating the XML Schema namespace mapping" << ::std::endl
+ << " inline." << ::std::endl;
+
+ os << "--namespace-map <xns>=<cns> Map XML Schema namespace <xns> to C++ namespace" << ::std::endl
+ << " <cns>." << ::std::endl;
+
+ os << "--namespace-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema namespace names to" << ::std::endl
+ << " C++ namespace names." << ::std::endl;
+
+ os << "--namespace-regex-trace Trace the process of applying regular expressions" << ::std::endl
+ << " specified with the --namespace-regex option." << ::std::endl;
+
+ os << "--reserved-name <n>[=<r>] Add name <n> to the list of names that should not" << ::std::endl
+ << " be used as identifiers." << ::std::endl;
+
+ os << "--include-with-brackets Use angle brackets (<>) instead of quotes (\"\") in" << ::std::endl
+ << " generated #include directives." << ::std::endl;
+
+ os << "--include-prefix <prefix> Add <prefix> to generated #include directive" << ::std::endl
+ << " paths." << ::std::endl;
+
+ os << "--include-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to transform #include directive paths." << ::std::endl;
+
+ os << "--include-regex-trace Trace the process of applying regular expressions" << ::std::endl
+ << " specified with the --include-regex option." << ::std::endl;
+
+ os << "--guard-prefix <prefix> Add <prefix> to generated header inclusion guards." << ::std::endl;
+
+ os << "--hxx-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
+ << " .hxx to construct the name of the header file." << ::std::endl;
+
+ os << "--ixx-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
+ << " .ixx to construct the name of the inline file." << ::std::endl;
+
+ os << "--cxx-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
+ << " .cxx to construct the name of the source file." << ::std::endl;
+
+ os << "--fwd-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
+ << " -fwd.hxx to construct the name of the forward" << ::std::endl
+ << " declaration file." << ::std::endl;
+
+ os << "--hxx-regex <regex> Use the provided expression to construct the name" << ::std::endl
+ << " of the header file." << ::std::endl;
+
+ os << "--ixx-regex <regex> Use the provided expression to construct the name" << ::std::endl
+ << " of the inline file." << ::std::endl;
+
+ os << "--cxx-regex <regex> Use the provided expression to construct the name" << ::std::endl
+ << " of the source file." << ::std::endl;
+
+ os << "--fwd-regex <regex> Use the provided expression to construct the name" << ::std::endl
+ << " of the forward declaration file." << ::std::endl;
+
+ os << "--hxx-prologue <text> Insert <text> at the beginning of the header file." << ::std::endl;
+
+ os << "--ixx-prologue <text> Insert <text> at the beginning of the inline file." << ::std::endl;
+
+ os << "--cxx-prologue <text> Insert <text> at the beginning of the source file." << ::std::endl;
+
+ os << "--fwd-prologue <text> Insert <text> at the beginning of the forward" << ::std::endl
+ << " declaration file." << ::std::endl;
+
+ os << "--prologue <text> Insert <text> at the beginning of each generated" << ::std::endl
+ << " file for which there is no file-specific prologue." << ::std::endl;
+
+ os << "--hxx-epilogue <text> Insert <text> at the end of the header file." << ::std::endl;
+
+ os << "--ixx-epilogue <text> Insert <text> at the end of the inline file." << ::std::endl;
+
+ os << "--cxx-epilogue <text> Insert <text> at the end of the source file." << ::std::endl;
+
+ os << "--fwd-epilogue <text> Insert <text> at the end of the forward" << ::std::endl
+ << " declaration file." << ::std::endl;
+
+ os << "--epilogue <text> Insert <text> at the end of each generated file" << ::std::endl
+ << " for which there is no file-specific epilogue." << ::std::endl;
+
+ os << "--hxx-prologue-file <file> Insert the content of the <file> at the beginning" << ::std::endl
+ << " of the header file." << ::std::endl;
+
+ os << "--ixx-prologue-file <file> Insert the content of the <file> at the beginning" << ::std::endl
+ << " of the inline file." << ::std::endl;
+
+ os << "--cxx-prologue-file <file> Insert the content of the <file> at the beginning" << ::std::endl
+ << " of the source file." << ::std::endl;
+
+ os << "--fwd-prologue-file <file> Insert the content of the <file> at the beginning" << ::std::endl
+ << " of the forward declaration file." << ::std::endl;
+
+ os << "--prologue-file <file> Insert the content of the <file> at the beginning" << ::std::endl
+ << " of each generated file for which there is no" << ::std::endl
+ << " file-specific prologue file." << ::std::endl;
+
+ os << "--hxx-epilogue-file <file> Insert the content of the <file> at the end of the" << ::std::endl
+ << " header file." << ::std::endl;
+
+ os << "--ixx-epilogue-file <file> Insert the content of the <file> at the end of the" << ::std::endl
+ << " inline file." << ::std::endl;
+
+ os << "--cxx-epilogue-file <file> Insert the content of the <file> at the end of the" << ::std::endl
+ << " source file." << ::std::endl;
+
+ os << "--fwd-epilogue-file <file> Insert the content of the <file> at the end of the" << ::std::endl
+ << " forward declaration file." << ::std::endl;
+
+ os << "--epilogue-file <file> Insert the content of the <file> at the end of" << ::std::endl
+ << " each generated file for which there is no" << ::std::endl
+ << " file-specific epilogue file." << ::std::endl;
+
+ os << "--export-symbol <symbol> Insert <symbol> in places where DLL export/import" << ::std::endl
+ << " control statements" << ::std::endl
+ << " (__declspec(dllexport/dllimport)) are necessary." << ::std::endl;
+
+ os << "--export-xml-schema Export/import types in the XML Schema namespace" << ::std::endl
+ << " using the export symbol provided with the" << ::std::endl
+ << " --export-symbol option." << ::std::endl;
+
+ os << "--export-maps Export polymorphism support maps from a Win32 DLL" << ::std::endl
+ << " into which this generated code is placed." << ::std::endl;
+
+ os << "--import-maps Import polymorphism support maps to a Win32 DLL or" << ::std::endl
+ << " executable into which this generated code is" << ::std::endl
+ << " linked." << ::std::endl;
+
+ os << "--generate-dep Generate make dependency information." << ::std::endl;
+
+ os << "--generate-dep-only Generate make dependency information only." << ::std::endl;
+
+ os << "--dep-phony Generate phony targets for included/imported" << ::std::endl
+ << " schema files, causing each to depend on nothing." << ::std::endl;
+
+ os << "--dep-target <target> Change the target of the dependency rule." << ::std::endl;
+
+ os << "--dep-suffix <suffix> Use <suffix> instead of the default .d to" << ::std::endl
+ << " construct the name of the dependency file." << ::std::endl;
+
+ os << "--dep-file <path> Use <path> as the generated dependency file path" << ::std::endl
+ << " instead of deriving it from the input file name." << ::std::endl;
+
+ os << "--dep-regex <regex> Use the provided expression to construct the name" << ::std::endl
+ << " of the dependency file." << ::std::endl;
+
+ p = ::cli::usage_para::option;
+
+ return p;
+ }
+
+ typedef
+ std::map<std::string, void (*) (options&, ::cli::scanner&)>
+ _cli_options_map;
+
+ static _cli_options_map _cli_options_map_;
+
+ struct _cli_options_map_init
+ {
+ _cli_options_map_init ()
+ {
+ _cli_options_map_["--std"] =
+ &::cli::thunk< options, cxx_version, &options::std_,
+ &options::std_specified_ >;
+ _cli_options_map_["--char-type"] =
+ &::cli::thunk< options, NarrowString, &options::char_type_,
+ &options::char_type_specified_ >;
+ _cli_options_map_["--char-encoding"] =
+ &::cli::thunk< options, NarrowString, &options::char_encoding_,
+ &options::char_encoding_specified_ >;
+ _cli_options_map_["--output-dir"] =
+ &::cli::thunk< options, NarrowString, &options::output_dir_,
+ &options::output_dir_specified_ >;
+ _cli_options_map_["--generate-inline"] =
+ &::cli::thunk< options, &options::generate_inline_ >;
+ _cli_options_map_["--generate-xml-schema"] =
+ &::cli::thunk< options, &options::generate_xml_schema_ >;
+ _cli_options_map_["--extern-xml-schema"] =
+ &::cli::thunk< options, NarrowString, &options::extern_xml_schema_,
+ &options::extern_xml_schema_specified_ >;
+ _cli_options_map_["--namespace-map"] =
+ &::cli::thunk< options, NarrowStrings, &options::namespace_map_,
+ &options::namespace_map_specified_ >;
+ _cli_options_map_["--namespace-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::namespace_regex_,
+ &options::namespace_regex_specified_ >;
+ _cli_options_map_["--namespace-regex-trace"] =
+ &::cli::thunk< options, &options::namespace_regex_trace_ >;
+ _cli_options_map_["--reserved-name"] =
+ &::cli::thunk< options, NarrowStrings, &options::reserved_name_,
+ &options::reserved_name_specified_ >;
+ _cli_options_map_["--include-with-brackets"] =
+ &::cli::thunk< options, &options::include_with_brackets_ >;
+ _cli_options_map_["--include-prefix"] =
+ &::cli::thunk< options, NarrowString, &options::include_prefix_,
+ &options::include_prefix_specified_ >;
+ _cli_options_map_["--include-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::include_regex_,
+ &options::include_regex_specified_ >;
+ _cli_options_map_["--include-regex-trace"] =
+ &::cli::thunk< options, &options::include_regex_trace_ >;
+ _cli_options_map_["--guard-prefix"] =
+ &::cli::thunk< options, NarrowString, &options::guard_prefix_,
+ &options::guard_prefix_specified_ >;
+ _cli_options_map_["--hxx-suffix"] =
+ &::cli::thunk< options, NarrowString, &options::hxx_suffix_,
+ &options::hxx_suffix_specified_ >;
+ _cli_options_map_["--ixx-suffix"] =
+ &::cli::thunk< options, NarrowString, &options::ixx_suffix_,
+ &options::ixx_suffix_specified_ >;
+ _cli_options_map_["--cxx-suffix"] =
+ &::cli::thunk< options, NarrowString, &options::cxx_suffix_,
+ &options::cxx_suffix_specified_ >;
+ _cli_options_map_["--fwd-suffix"] =
+ &::cli::thunk< options, NarrowString, &options::fwd_suffix_,
+ &options::fwd_suffix_specified_ >;
+ _cli_options_map_["--hxx-regex"] =
+ &::cli::thunk< options, NarrowString, &options::hxx_regex_,
+ &options::hxx_regex_specified_ >;
+ _cli_options_map_["--ixx-regex"] =
+ &::cli::thunk< options, NarrowString, &options::ixx_regex_,
+ &options::ixx_regex_specified_ >;
+ _cli_options_map_["--cxx-regex"] =
+ &::cli::thunk< options, NarrowString, &options::cxx_regex_,
+ &options::cxx_regex_specified_ >;
+ _cli_options_map_["--fwd-regex"] =
+ &::cli::thunk< options, NarrowString, &options::fwd_regex_,
+ &options::fwd_regex_specified_ >;
+ _cli_options_map_["--hxx-prologue"] =
+ &::cli::thunk< options, NarrowStrings, &options::hxx_prologue_,
+ &options::hxx_prologue_specified_ >;
+ _cli_options_map_["--ixx-prologue"] =
+ &::cli::thunk< options, NarrowStrings, &options::ixx_prologue_,
+ &options::ixx_prologue_specified_ >;
+ _cli_options_map_["--cxx-prologue"] =
+ &::cli::thunk< options, NarrowStrings, &options::cxx_prologue_,
+ &options::cxx_prologue_specified_ >;
+ _cli_options_map_["--fwd-prologue"] =
+ &::cli::thunk< options, NarrowStrings, &options::fwd_prologue_,
+ &options::fwd_prologue_specified_ >;
+ _cli_options_map_["--prologue"] =
+ &::cli::thunk< options, NarrowStrings, &options::prologue_,
+ &options::prologue_specified_ >;
+ _cli_options_map_["--hxx-epilogue"] =
+ &::cli::thunk< options, NarrowStrings, &options::hxx_epilogue_,
+ &options::hxx_epilogue_specified_ >;
+ _cli_options_map_["--ixx-epilogue"] =
+ &::cli::thunk< options, NarrowStrings, &options::ixx_epilogue_,
+ &options::ixx_epilogue_specified_ >;
+ _cli_options_map_["--cxx-epilogue"] =
+ &::cli::thunk< options, NarrowStrings, &options::cxx_epilogue_,
+ &options::cxx_epilogue_specified_ >;
+ _cli_options_map_["--fwd-epilogue"] =
+ &::cli::thunk< options, NarrowStrings, &options::fwd_epilogue_,
+ &options::fwd_epilogue_specified_ >;
+ _cli_options_map_["--epilogue"] =
+ &::cli::thunk< options, NarrowStrings, &options::epilogue_,
+ &options::epilogue_specified_ >;
+ _cli_options_map_["--hxx-prologue-file"] =
+ &::cli::thunk< options, NarrowString, &options::hxx_prologue_file_,
+ &options::hxx_prologue_file_specified_ >;
+ _cli_options_map_["--ixx-prologue-file"] =
+ &::cli::thunk< options, NarrowString, &options::ixx_prologue_file_,
+ &options::ixx_prologue_file_specified_ >;
+ _cli_options_map_["--cxx-prologue-file"] =
+ &::cli::thunk< options, NarrowString, &options::cxx_prologue_file_,
+ &options::cxx_prologue_file_specified_ >;
+ _cli_options_map_["--fwd-prologue-file"] =
+ &::cli::thunk< options, NarrowString, &options::fwd_prologue_file_,
+ &options::fwd_prologue_file_specified_ >;
+ _cli_options_map_["--prologue-file"] =
+ &::cli::thunk< options, NarrowString, &options::prologue_file_,
+ &options::prologue_file_specified_ >;
+ _cli_options_map_["--hxx-epilogue-file"] =
+ &::cli::thunk< options, NarrowString, &options::hxx_epilogue_file_,
+ &options::hxx_epilogue_file_specified_ >;
+ _cli_options_map_["--ixx-epilogue-file"] =
+ &::cli::thunk< options, NarrowString, &options::ixx_epilogue_file_,
+ &options::ixx_epilogue_file_specified_ >;
+ _cli_options_map_["--cxx-epilogue-file"] =
+ &::cli::thunk< options, NarrowString, &options::cxx_epilogue_file_,
+ &options::cxx_epilogue_file_specified_ >;
+ _cli_options_map_["--fwd-epilogue-file"] =
+ &::cli::thunk< options, NarrowString, &options::fwd_epilogue_file_,
+ &options::fwd_epilogue_file_specified_ >;
+ _cli_options_map_["--epilogue-file"] =
+ &::cli::thunk< options, NarrowString, &options::epilogue_file_,
+ &options::epilogue_file_specified_ >;
+ _cli_options_map_["--export-symbol"] =
+ &::cli::thunk< options, NarrowString, &options::export_symbol_,
+ &options::export_symbol_specified_ >;
+ _cli_options_map_["--export-xml-schema"] =
+ &::cli::thunk< options, &options::export_xml_schema_ >;
+ _cli_options_map_["--export-maps"] =
+ &::cli::thunk< options, &options::export_maps_ >;
+ _cli_options_map_["--import-maps"] =
+ &::cli::thunk< options, &options::import_maps_ >;
+ _cli_options_map_["--generate-dep"] =
+ &::cli::thunk< options, &options::generate_dep_ >;
+ _cli_options_map_["--generate-dep-only"] =
+ &::cli::thunk< options, &options::generate_dep_only_ >;
+ _cli_options_map_["--dep-phony"] =
+ &::cli::thunk< options, &options::dep_phony_ >;
+ _cli_options_map_["--dep-target"] =
+ &::cli::thunk< options, NarrowStrings, &options::dep_target_,
+ &options::dep_target_specified_ >;
+ _cli_options_map_["--dep-suffix"] =
+ &::cli::thunk< options, NarrowString, &options::dep_suffix_,
+ &options::dep_suffix_specified_ >;
+ _cli_options_map_["--dep-file"] =
+ &::cli::thunk< options, NarrowString, &options::dep_file_,
+ &options::dep_file_specified_ >;
+ _cli_options_map_["--dep-regex"] =
+ &::cli::thunk< options, NarrowString, &options::dep_regex_,
+ &options::dep_regex_specified_ >;
+ }
+ };
+
+ static _cli_options_map_init _cli_options_map_init_;
+
+ bool options::
+ _parse (const char* o, ::cli::scanner& s)
+ {
+ _cli_options_map::const_iterator i (_cli_options_map_.find (o));
+
+ if (i != _cli_options_map_.end ())
+ {
+ (*(i->second)) (*this, s);
+ return true;
+ }
+
+ // options base
+ //
+ if (::options::_parse (o, s))
+ return true;
+
+ return false;
+ }
+}
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
diff --git a/xsd/pregenerated/xsd/cxx/options.hxx b/xsd/pregenerated/xsd/cxx/options.hxx
new file mode 100644
index 0000000..085aa4c
--- /dev/null
+++ b/xsd/pregenerated/xsd/cxx/options.hxx
@@ -0,0 +1,451 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+#ifndef XSD_CXX_OPTIONS_HXX
+#define XSD_CXX_OPTIONS_HXX
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+#include <cstddef>
+
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/option-types.hxx>
+
+#include <xsd/options.hxx>
+
+namespace CXX
+{
+ class options: public ::options
+ {
+ public:
+ // Option accessors.
+ //
+ const cxx_version&
+ std () const;
+
+ bool
+ std_specified () const;
+
+ const NarrowString&
+ char_type () const;
+
+ bool
+ char_type_specified () const;
+
+ const NarrowString&
+ char_encoding () const;
+
+ bool
+ char_encoding_specified () const;
+
+ const NarrowString&
+ output_dir () const;
+
+ bool
+ output_dir_specified () const;
+
+ const bool&
+ generate_inline () const;
+
+ const bool&
+ generate_xml_schema () const;
+
+ const NarrowString&
+ extern_xml_schema () const;
+
+ bool
+ extern_xml_schema_specified () const;
+
+ const NarrowStrings&
+ namespace_map () const;
+
+ bool
+ namespace_map_specified () const;
+
+ const NarrowStrings&
+ namespace_regex () const;
+
+ bool
+ namespace_regex_specified () const;
+
+ const bool&
+ namespace_regex_trace () const;
+
+ const NarrowStrings&
+ reserved_name () const;
+
+ bool
+ reserved_name_specified () const;
+
+ const bool&
+ include_with_brackets () const;
+
+ const NarrowString&
+ include_prefix () const;
+
+ bool
+ include_prefix_specified () const;
+
+ const NarrowStrings&
+ include_regex () const;
+
+ bool
+ include_regex_specified () const;
+
+ const bool&
+ include_regex_trace () const;
+
+ const NarrowString&
+ guard_prefix () const;
+
+ bool
+ guard_prefix_specified () const;
+
+ const NarrowString&
+ hxx_suffix () const;
+
+ bool
+ hxx_suffix_specified () const;
+
+ const NarrowString&
+ ixx_suffix () const;
+
+ bool
+ ixx_suffix_specified () const;
+
+ const NarrowString&
+ cxx_suffix () const;
+
+ bool
+ cxx_suffix_specified () const;
+
+ const NarrowString&
+ fwd_suffix () const;
+
+ bool
+ fwd_suffix_specified () const;
+
+ const NarrowString&
+ hxx_regex () const;
+
+ bool
+ hxx_regex_specified () const;
+
+ const NarrowString&
+ ixx_regex () const;
+
+ bool
+ ixx_regex_specified () const;
+
+ const NarrowString&
+ cxx_regex () const;
+
+ bool
+ cxx_regex_specified () const;
+
+ const NarrowString&
+ fwd_regex () const;
+
+ bool
+ fwd_regex_specified () const;
+
+ const NarrowStrings&
+ hxx_prologue () const;
+
+ bool
+ hxx_prologue_specified () const;
+
+ const NarrowStrings&
+ ixx_prologue () const;
+
+ bool
+ ixx_prologue_specified () const;
+
+ const NarrowStrings&
+ cxx_prologue () const;
+
+ bool
+ cxx_prologue_specified () const;
+
+ const NarrowStrings&
+ fwd_prologue () const;
+
+ bool
+ fwd_prologue_specified () const;
+
+ const NarrowStrings&
+ prologue () const;
+
+ bool
+ prologue_specified () const;
+
+ const NarrowStrings&
+ hxx_epilogue () const;
+
+ bool
+ hxx_epilogue_specified () const;
+
+ const NarrowStrings&
+ ixx_epilogue () const;
+
+ bool
+ ixx_epilogue_specified () const;
+
+ const NarrowStrings&
+ cxx_epilogue () const;
+
+ bool
+ cxx_epilogue_specified () const;
+
+ const NarrowStrings&
+ fwd_epilogue () const;
+
+ bool
+ fwd_epilogue_specified () const;
+
+ const NarrowStrings&
+ epilogue () const;
+
+ bool
+ epilogue_specified () const;
+
+ const NarrowString&
+ hxx_prologue_file () const;
+
+ bool
+ hxx_prologue_file_specified () const;
+
+ const NarrowString&
+ ixx_prologue_file () const;
+
+ bool
+ ixx_prologue_file_specified () const;
+
+ const NarrowString&
+ cxx_prologue_file () const;
+
+ bool
+ cxx_prologue_file_specified () const;
+
+ const NarrowString&
+ fwd_prologue_file () const;
+
+ bool
+ fwd_prologue_file_specified () const;
+
+ const NarrowString&
+ prologue_file () const;
+
+ bool
+ prologue_file_specified () const;
+
+ const NarrowString&
+ hxx_epilogue_file () const;
+
+ bool
+ hxx_epilogue_file_specified () const;
+
+ const NarrowString&
+ ixx_epilogue_file () const;
+
+ bool
+ ixx_epilogue_file_specified () const;
+
+ const NarrowString&
+ cxx_epilogue_file () const;
+
+ bool
+ cxx_epilogue_file_specified () const;
+
+ const NarrowString&
+ fwd_epilogue_file () const;
+
+ bool
+ fwd_epilogue_file_specified () const;
+
+ const NarrowString&
+ epilogue_file () const;
+
+ bool
+ epilogue_file_specified () const;
+
+ const NarrowString&
+ export_symbol () const;
+
+ bool
+ export_symbol_specified () const;
+
+ const bool&
+ export_xml_schema () const;
+
+ const bool&
+ export_maps () const;
+
+ const bool&
+ import_maps () const;
+
+ const bool&
+ generate_dep () const;
+
+ const bool&
+ generate_dep_only () const;
+
+ const bool&
+ dep_phony () const;
+
+ const NarrowStrings&
+ dep_target () const;
+
+ bool
+ dep_target_specified () const;
+
+ const NarrowString&
+ dep_suffix () const;
+
+ bool
+ dep_suffix_specified () const;
+
+ const NarrowString&
+ dep_file () const;
+
+ bool
+ dep_file_specified () const;
+
+ const NarrowString&
+ dep_regex () const;
+
+ bool
+ dep_regex_specified () const;
+
+ // Print usage information.
+ //
+ static ::cli::usage_para
+ print_usage (::std::wostream&,
+ ::cli::usage_para = ::cli::usage_para::none);
+
+ // Implementation details.
+ //
+ protected:
+ options ();
+
+ bool
+ _parse (const char*, ::cli::scanner&);
+
+ public:
+ cxx_version std_;
+ bool std_specified_;
+ NarrowString char_type_;
+ bool char_type_specified_;
+ NarrowString char_encoding_;
+ bool char_encoding_specified_;
+ NarrowString output_dir_;
+ bool output_dir_specified_;
+ bool generate_inline_;
+ bool generate_xml_schema_;
+ NarrowString extern_xml_schema_;
+ bool extern_xml_schema_specified_;
+ NarrowStrings namespace_map_;
+ bool namespace_map_specified_;
+ NarrowStrings namespace_regex_;
+ bool namespace_regex_specified_;
+ bool namespace_regex_trace_;
+ NarrowStrings reserved_name_;
+ bool reserved_name_specified_;
+ bool include_with_brackets_;
+ NarrowString include_prefix_;
+ bool include_prefix_specified_;
+ NarrowStrings include_regex_;
+ bool include_regex_specified_;
+ bool include_regex_trace_;
+ NarrowString guard_prefix_;
+ bool guard_prefix_specified_;
+ NarrowString hxx_suffix_;
+ bool hxx_suffix_specified_;
+ NarrowString ixx_suffix_;
+ bool ixx_suffix_specified_;
+ NarrowString cxx_suffix_;
+ bool cxx_suffix_specified_;
+ NarrowString fwd_suffix_;
+ bool fwd_suffix_specified_;
+ NarrowString hxx_regex_;
+ bool hxx_regex_specified_;
+ NarrowString ixx_regex_;
+ bool ixx_regex_specified_;
+ NarrowString cxx_regex_;
+ bool cxx_regex_specified_;
+ NarrowString fwd_regex_;
+ bool fwd_regex_specified_;
+ NarrowStrings hxx_prologue_;
+ bool hxx_prologue_specified_;
+ NarrowStrings ixx_prologue_;
+ bool ixx_prologue_specified_;
+ NarrowStrings cxx_prologue_;
+ bool cxx_prologue_specified_;
+ NarrowStrings fwd_prologue_;
+ bool fwd_prologue_specified_;
+ NarrowStrings prologue_;
+ bool prologue_specified_;
+ NarrowStrings hxx_epilogue_;
+ bool hxx_epilogue_specified_;
+ NarrowStrings ixx_epilogue_;
+ bool ixx_epilogue_specified_;
+ NarrowStrings cxx_epilogue_;
+ bool cxx_epilogue_specified_;
+ NarrowStrings fwd_epilogue_;
+ bool fwd_epilogue_specified_;
+ NarrowStrings epilogue_;
+ bool epilogue_specified_;
+ NarrowString hxx_prologue_file_;
+ bool hxx_prologue_file_specified_;
+ NarrowString ixx_prologue_file_;
+ bool ixx_prologue_file_specified_;
+ NarrowString cxx_prologue_file_;
+ bool cxx_prologue_file_specified_;
+ NarrowString fwd_prologue_file_;
+ bool fwd_prologue_file_specified_;
+ NarrowString prologue_file_;
+ bool prologue_file_specified_;
+ NarrowString hxx_epilogue_file_;
+ bool hxx_epilogue_file_specified_;
+ NarrowString ixx_epilogue_file_;
+ bool ixx_epilogue_file_specified_;
+ NarrowString cxx_epilogue_file_;
+ bool cxx_epilogue_file_specified_;
+ NarrowString fwd_epilogue_file_;
+ bool fwd_epilogue_file_specified_;
+ NarrowString epilogue_file_;
+ bool epilogue_file_specified_;
+ NarrowString export_symbol_;
+ bool export_symbol_specified_;
+ bool export_xml_schema_;
+ bool export_maps_;
+ bool import_maps_;
+ bool generate_dep_;
+ bool generate_dep_only_;
+ bool dep_phony_;
+ NarrowStrings dep_target_;
+ bool dep_target_specified_;
+ NarrowString dep_suffix_;
+ bool dep_suffix_specified_;
+ NarrowString dep_file_;
+ bool dep_file_specified_;
+ NarrowString dep_regex_;
+ bool dep_regex_specified_;
+ };
+}
+
+#include <xsd/cxx/options.ixx>
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
+#endif // XSD_CXX_OPTIONS_HXX
diff --git a/xsd/pregenerated/xsd/cxx/options.ixx b/xsd/pregenerated/xsd/cxx/options.ixx
new file mode 100644
index 0000000..8266e31
--- /dev/null
+++ b/xsd/pregenerated/xsd/cxx/options.ixx
@@ -0,0 +1,615 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+namespace CXX
+{
+ // options
+ //
+
+ inline const cxx_version& options::
+ std () const
+ {
+ return this->std_;
+ }
+
+ inline bool options::
+ std_specified () const
+ {
+ return this->std_specified_;
+ }
+
+ inline const NarrowString& options::
+ char_type () const
+ {
+ return this->char_type_;
+ }
+
+ inline bool options::
+ char_type_specified () const
+ {
+ return this->char_type_specified_;
+ }
+
+ inline const NarrowString& options::
+ char_encoding () const
+ {
+ return this->char_encoding_;
+ }
+
+ inline bool options::
+ char_encoding_specified () const
+ {
+ return this->char_encoding_specified_;
+ }
+
+ inline const NarrowString& options::
+ output_dir () const
+ {
+ return this->output_dir_;
+ }
+
+ inline bool options::
+ output_dir_specified () const
+ {
+ return this->output_dir_specified_;
+ }
+
+ inline const bool& options::
+ generate_inline () const
+ {
+ return this->generate_inline_;
+ }
+
+ inline const bool& options::
+ generate_xml_schema () const
+ {
+ return this->generate_xml_schema_;
+ }
+
+ inline const NarrowString& options::
+ extern_xml_schema () const
+ {
+ return this->extern_xml_schema_;
+ }
+
+ inline bool options::
+ extern_xml_schema_specified () const
+ {
+ return this->extern_xml_schema_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ namespace_map () const
+ {
+ return this->namespace_map_;
+ }
+
+ inline bool options::
+ namespace_map_specified () const
+ {
+ return this->namespace_map_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ namespace_regex () const
+ {
+ return this->namespace_regex_;
+ }
+
+ inline bool options::
+ namespace_regex_specified () const
+ {
+ return this->namespace_regex_specified_;
+ }
+
+ inline const bool& options::
+ namespace_regex_trace () const
+ {
+ return this->namespace_regex_trace_;
+ }
+
+ inline const NarrowStrings& options::
+ reserved_name () const
+ {
+ return this->reserved_name_;
+ }
+
+ inline bool options::
+ reserved_name_specified () const
+ {
+ return this->reserved_name_specified_;
+ }
+
+ inline const bool& options::
+ include_with_brackets () const
+ {
+ return this->include_with_brackets_;
+ }
+
+ inline const NarrowString& options::
+ include_prefix () const
+ {
+ return this->include_prefix_;
+ }
+
+ inline bool options::
+ include_prefix_specified () const
+ {
+ return this->include_prefix_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ include_regex () const
+ {
+ return this->include_regex_;
+ }
+
+ inline bool options::
+ include_regex_specified () const
+ {
+ return this->include_regex_specified_;
+ }
+
+ inline const bool& options::
+ include_regex_trace () const
+ {
+ return this->include_regex_trace_;
+ }
+
+ inline const NarrowString& options::
+ guard_prefix () const
+ {
+ return this->guard_prefix_;
+ }
+
+ inline bool options::
+ guard_prefix_specified () const
+ {
+ return this->guard_prefix_specified_;
+ }
+
+ inline const NarrowString& options::
+ hxx_suffix () const
+ {
+ return this->hxx_suffix_;
+ }
+
+ inline bool options::
+ hxx_suffix_specified () const
+ {
+ return this->hxx_suffix_specified_;
+ }
+
+ inline const NarrowString& options::
+ ixx_suffix () const
+ {
+ return this->ixx_suffix_;
+ }
+
+ inline bool options::
+ ixx_suffix_specified () const
+ {
+ return this->ixx_suffix_specified_;
+ }
+
+ inline const NarrowString& options::
+ cxx_suffix () const
+ {
+ return this->cxx_suffix_;
+ }
+
+ inline bool options::
+ cxx_suffix_specified () const
+ {
+ return this->cxx_suffix_specified_;
+ }
+
+ inline const NarrowString& options::
+ fwd_suffix () const
+ {
+ return this->fwd_suffix_;
+ }
+
+ inline bool options::
+ fwd_suffix_specified () const
+ {
+ return this->fwd_suffix_specified_;
+ }
+
+ inline const NarrowString& options::
+ hxx_regex () const
+ {
+ return this->hxx_regex_;
+ }
+
+ inline bool options::
+ hxx_regex_specified () const
+ {
+ return this->hxx_regex_specified_;
+ }
+
+ inline const NarrowString& options::
+ ixx_regex () const
+ {
+ return this->ixx_regex_;
+ }
+
+ inline bool options::
+ ixx_regex_specified () const
+ {
+ return this->ixx_regex_specified_;
+ }
+
+ inline const NarrowString& options::
+ cxx_regex () const
+ {
+ return this->cxx_regex_;
+ }
+
+ inline bool options::
+ cxx_regex_specified () const
+ {
+ return this->cxx_regex_specified_;
+ }
+
+ inline const NarrowString& options::
+ fwd_regex () const
+ {
+ return this->fwd_regex_;
+ }
+
+ inline bool options::
+ fwd_regex_specified () const
+ {
+ return this->fwd_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ hxx_prologue () const
+ {
+ return this->hxx_prologue_;
+ }
+
+ inline bool options::
+ hxx_prologue_specified () const
+ {
+ return this->hxx_prologue_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ ixx_prologue () const
+ {
+ return this->ixx_prologue_;
+ }
+
+ inline bool options::
+ ixx_prologue_specified () const
+ {
+ return this->ixx_prologue_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ cxx_prologue () const
+ {
+ return this->cxx_prologue_;
+ }
+
+ inline bool options::
+ cxx_prologue_specified () const
+ {
+ return this->cxx_prologue_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ fwd_prologue () const
+ {
+ return this->fwd_prologue_;
+ }
+
+ inline bool options::
+ fwd_prologue_specified () const
+ {
+ return this->fwd_prologue_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ prologue () const
+ {
+ return this->prologue_;
+ }
+
+ inline bool options::
+ prologue_specified () const
+ {
+ return this->prologue_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ hxx_epilogue () const
+ {
+ return this->hxx_epilogue_;
+ }
+
+ inline bool options::
+ hxx_epilogue_specified () const
+ {
+ return this->hxx_epilogue_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ ixx_epilogue () const
+ {
+ return this->ixx_epilogue_;
+ }
+
+ inline bool options::
+ ixx_epilogue_specified () const
+ {
+ return this->ixx_epilogue_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ cxx_epilogue () const
+ {
+ return this->cxx_epilogue_;
+ }
+
+ inline bool options::
+ cxx_epilogue_specified () const
+ {
+ return this->cxx_epilogue_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ fwd_epilogue () const
+ {
+ return this->fwd_epilogue_;
+ }
+
+ inline bool options::
+ fwd_epilogue_specified () const
+ {
+ return this->fwd_epilogue_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ epilogue () const
+ {
+ return this->epilogue_;
+ }
+
+ inline bool options::
+ epilogue_specified () const
+ {
+ return this->epilogue_specified_;
+ }
+
+ inline const NarrowString& options::
+ hxx_prologue_file () const
+ {
+ return this->hxx_prologue_file_;
+ }
+
+ inline bool options::
+ hxx_prologue_file_specified () const
+ {
+ return this->hxx_prologue_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ ixx_prologue_file () const
+ {
+ return this->ixx_prologue_file_;
+ }
+
+ inline bool options::
+ ixx_prologue_file_specified () const
+ {
+ return this->ixx_prologue_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ cxx_prologue_file () const
+ {
+ return this->cxx_prologue_file_;
+ }
+
+ inline bool options::
+ cxx_prologue_file_specified () const
+ {
+ return this->cxx_prologue_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ fwd_prologue_file () const
+ {
+ return this->fwd_prologue_file_;
+ }
+
+ inline bool options::
+ fwd_prologue_file_specified () const
+ {
+ return this->fwd_prologue_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ prologue_file () const
+ {
+ return this->prologue_file_;
+ }
+
+ inline bool options::
+ prologue_file_specified () const
+ {
+ return this->prologue_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ hxx_epilogue_file () const
+ {
+ return this->hxx_epilogue_file_;
+ }
+
+ inline bool options::
+ hxx_epilogue_file_specified () const
+ {
+ return this->hxx_epilogue_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ ixx_epilogue_file () const
+ {
+ return this->ixx_epilogue_file_;
+ }
+
+ inline bool options::
+ ixx_epilogue_file_specified () const
+ {
+ return this->ixx_epilogue_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ cxx_epilogue_file () const
+ {
+ return this->cxx_epilogue_file_;
+ }
+
+ inline bool options::
+ cxx_epilogue_file_specified () const
+ {
+ return this->cxx_epilogue_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ fwd_epilogue_file () const
+ {
+ return this->fwd_epilogue_file_;
+ }
+
+ inline bool options::
+ fwd_epilogue_file_specified () const
+ {
+ return this->fwd_epilogue_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ epilogue_file () const
+ {
+ return this->epilogue_file_;
+ }
+
+ inline bool options::
+ epilogue_file_specified () const
+ {
+ return this->epilogue_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ export_symbol () const
+ {
+ return this->export_symbol_;
+ }
+
+ inline bool options::
+ export_symbol_specified () const
+ {
+ return this->export_symbol_specified_;
+ }
+
+ inline const bool& options::
+ export_xml_schema () const
+ {
+ return this->export_xml_schema_;
+ }
+
+ inline const bool& options::
+ export_maps () const
+ {
+ return this->export_maps_;
+ }
+
+ inline const bool& options::
+ import_maps () const
+ {
+ return this->import_maps_;
+ }
+
+ inline const bool& options::
+ generate_dep () const
+ {
+ return this->generate_dep_;
+ }
+
+ inline const bool& options::
+ generate_dep_only () const
+ {
+ return this->generate_dep_only_;
+ }
+
+ inline const bool& options::
+ dep_phony () const
+ {
+ return this->dep_phony_;
+ }
+
+ inline const NarrowStrings& options::
+ dep_target () const
+ {
+ return this->dep_target_;
+ }
+
+ inline bool options::
+ dep_target_specified () const
+ {
+ return this->dep_target_specified_;
+ }
+
+ inline const NarrowString& options::
+ dep_suffix () const
+ {
+ return this->dep_suffix_;
+ }
+
+ inline bool options::
+ dep_suffix_specified () const
+ {
+ return this->dep_suffix_specified_;
+ }
+
+ inline const NarrowString& options::
+ dep_file () const
+ {
+ return this->dep_file_;
+ }
+
+ inline bool options::
+ dep_file_specified () const
+ {
+ return this->dep_file_specified_;
+ }
+
+ inline const NarrowString& options::
+ dep_regex () const
+ {
+ return this->dep_regex_;
+ }
+
+ inline bool options::
+ dep_regex_specified () const
+ {
+ return this->dep_regex_specified_;
+ }
+}
+
+// Begin epilogue.
+//
+//
+// End epilogue.
diff --git a/xsd/pregenerated/xsd/cxx/parser/options.cxx b/xsd/pregenerated/xsd/cxx/parser/options.cxx
new file mode 100644
index 0000000..60667ac
--- /dev/null
+++ b/xsd/pregenerated/xsd/cxx/parser/options.cxx
@@ -0,0 +1,776 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+// Begin prologue.
+//
+#include <xsd/options-parser.hxx>
+//
+// End prologue.
+
+#include <xsd/cxx/parser/options.hxx>
+
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+#include <utility>
+#include <ostream>
+#include <sstream>
+#include <cstring>
+
+namespace cli
+{
+ template <typename X>
+ struct parser
+ {
+ static void
+ parse (X& x, bool& xs, scanner& s)
+ {
+ using namespace std;
+
+ const char* o (s.next ());
+ if (s.more ())
+ {
+ string v (s.next ());
+ istringstream is (v);
+ if (!(is >> x && is.peek () == istringstream::traits_type::eof ()))
+ throw invalid_value (o, v);
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <>
+ struct parser<bool>
+ {
+ static void
+ parse (bool& x, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ const char* v (s.next ());
+
+ if (std::strcmp (v, "1") == 0 ||
+ std::strcmp (v, "true") == 0 ||
+ std::strcmp (v, "TRUE") == 0 ||
+ std::strcmp (v, "True") == 0)
+ x = true;
+ else if (std::strcmp (v, "0") == 0 ||
+ std::strcmp (v, "false") == 0 ||
+ std::strcmp (v, "FALSE") == 0 ||
+ std::strcmp (v, "False") == 0)
+ x = false;
+ else
+ throw invalid_value (o, v);
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <>
+ struct parser<std::string>
+ {
+ static void
+ parse (std::string& x, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ x = s.next ();
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename X>
+ struct parser<std::pair<X, std::size_t> >
+ {
+ static void
+ parse (std::pair<X, std::size_t>& x, bool& xs, scanner& s)
+ {
+ x.second = s.position ();
+ parser<X>::parse (x.first, xs, s);
+ }
+ };
+
+ template <typename X>
+ struct parser<std::vector<X> >
+ {
+ static void
+ parse (std::vector<X>& c, bool& xs, scanner& s)
+ {
+ X x;
+ bool dummy;
+ parser<X>::parse (x, dummy, s);
+ c.push_back (x);
+ xs = true;
+ }
+ };
+
+ template <typename X, typename C>
+ struct parser<std::set<X, C> >
+ {
+ static void
+ parse (std::set<X, C>& c, bool& xs, scanner& s)
+ {
+ X x;
+ bool dummy;
+ parser<X>::parse (x, dummy, s);
+ c.insert (x);
+ xs = true;
+ }
+ };
+
+ template <typename K, typename V, typename C>
+ struct parser<std::map<K, V, C> >
+ {
+ static void
+ parse (std::map<K, V, C>& m, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ std::size_t pos (s.position ());
+ std::string ov (s.next ());
+ std::string::size_type p = ov.find ('=');
+
+ K k = K ();
+ V v = V ();
+ std::string kstr (ov, 0, p);
+ std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ()));
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (o),
+ 0
+ };
+
+ bool dummy;
+ if (!kstr.empty ())
+ {
+ av[1] = const_cast<char*> (kstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<K>::parse (k, dummy, s);
+ }
+
+ if (!vstr.empty ())
+ {
+ av[1] = const_cast<char*> (vstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<V>::parse (v, dummy, s);
+ }
+
+ m[k] = v;
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename K, typename V, typename C>
+ struct parser<std::multimap<K, V, C> >
+ {
+ static void
+ parse (std::multimap<K, V, C>& m, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ std::size_t pos (s.position ());
+ std::string ov (s.next ());
+ std::string::size_type p = ov.find ('=');
+
+ K k = K ();
+ V v = V ();
+ std::string kstr (ov, 0, p);
+ std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ()));
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (o),
+ 0
+ };
+
+ bool dummy;
+ if (!kstr.empty ())
+ {
+ av[1] = const_cast<char*> (kstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<K>::parse (k, dummy, s);
+ }
+
+ if (!vstr.empty ())
+ {
+ av[1] = const_cast<char*> (vstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<V>::parse (v, dummy, s);
+ }
+
+ m.insert (typename std::multimap<K, V, C>::value_type (k, v));
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename X, typename T, T X::*M>
+ void
+ thunk (X& x, scanner& s)
+ {
+ parser<T>::parse (x.*M, s);
+ }
+
+ template <typename X, bool X::*M>
+ void
+ thunk (X& x, scanner& s)
+ {
+ s.next ();
+ x.*M = true;
+ }
+
+ template <typename X, typename T, T X::*M, bool X::*S>
+ void
+ thunk (X& x, scanner& s)
+ {
+ parser<T>::parse (x.*M, x.*S, s);
+ }
+}
+
+#include <map>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ // options
+ //
+
+ options::
+ options ()
+ : type_map_ (),
+ type_map_specified_ (false),
+ xml_parser_ ("xerces"),
+ xml_parser_specified_ (false),
+ generate_validation_ (),
+ suppress_validation_ (),
+ generate_polymorphic_ (),
+ generate_noop_impl_ (),
+ generate_print_impl_ (),
+ generate_test_driver_ (),
+ force_overwrite_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ skel_type_suffix_ ("_pskel"),
+ skel_type_suffix_specified_ (false),
+ skel_file_suffix_ ("-pskel"),
+ skel_file_suffix_specified_ (false),
+ impl_type_suffix_ ("_pimpl"),
+ impl_type_suffix_specified_ (false),
+ impl_file_suffix_ ("-pimpl"),
+ impl_file_suffix_specified_ (false)
+ {
+ }
+
+ options::
+ options (int& argc,
+ char** argv,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+ : type_map_ (),
+ type_map_specified_ (false),
+ xml_parser_ ("xerces"),
+ xml_parser_specified_ (false),
+ generate_validation_ (),
+ suppress_validation_ (),
+ generate_polymorphic_ (),
+ generate_noop_impl_ (),
+ generate_print_impl_ (),
+ generate_test_driver_ (),
+ force_overwrite_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ skel_type_suffix_ ("_pskel"),
+ skel_type_suffix_specified_ (false),
+ skel_file_suffix_ ("-pskel"),
+ skel_file_suffix_specified_ (false),
+ impl_type_suffix_ ("_pimpl"),
+ impl_type_suffix_specified_ (false),
+ impl_file_suffix_ ("-pimpl"),
+ impl_file_suffix_specified_ (false)
+ {
+ ::cli::argv_scanner s (argc, argv, erase);
+ _parse (s, opt, arg);
+ }
+
+ options::
+ options (int start,
+ int& argc,
+ char** argv,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+ : type_map_ (),
+ type_map_specified_ (false),
+ xml_parser_ ("xerces"),
+ xml_parser_specified_ (false),
+ generate_validation_ (),
+ suppress_validation_ (),
+ generate_polymorphic_ (),
+ generate_noop_impl_ (),
+ generate_print_impl_ (),
+ generate_test_driver_ (),
+ force_overwrite_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ skel_type_suffix_ ("_pskel"),
+ skel_type_suffix_specified_ (false),
+ skel_file_suffix_ ("-pskel"),
+ skel_file_suffix_specified_ (false),
+ impl_type_suffix_ ("_pimpl"),
+ impl_type_suffix_specified_ (false),
+ impl_file_suffix_ ("-pimpl"),
+ impl_file_suffix_specified_ (false)
+ {
+ ::cli::argv_scanner s (start, argc, argv, erase);
+ _parse (s, opt, arg);
+ }
+
+ options::
+ options (int& argc,
+ char** argv,
+ int& end,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+ : type_map_ (),
+ type_map_specified_ (false),
+ xml_parser_ ("xerces"),
+ xml_parser_specified_ (false),
+ generate_validation_ (),
+ suppress_validation_ (),
+ generate_polymorphic_ (),
+ generate_noop_impl_ (),
+ generate_print_impl_ (),
+ generate_test_driver_ (),
+ force_overwrite_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ skel_type_suffix_ ("_pskel"),
+ skel_type_suffix_specified_ (false),
+ skel_file_suffix_ ("-pskel"),
+ skel_file_suffix_specified_ (false),
+ impl_type_suffix_ ("_pimpl"),
+ impl_type_suffix_specified_ (false),
+ impl_file_suffix_ ("-pimpl"),
+ impl_file_suffix_specified_ (false)
+ {
+ ::cli::argv_scanner s (argc, argv, erase);
+ _parse (s, opt, arg);
+ end = s.end ();
+ }
+
+ options::
+ options (int start,
+ int& argc,
+ char** argv,
+ int& end,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+ : type_map_ (),
+ type_map_specified_ (false),
+ xml_parser_ ("xerces"),
+ xml_parser_specified_ (false),
+ generate_validation_ (),
+ suppress_validation_ (),
+ generate_polymorphic_ (),
+ generate_noop_impl_ (),
+ generate_print_impl_ (),
+ generate_test_driver_ (),
+ force_overwrite_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ skel_type_suffix_ ("_pskel"),
+ skel_type_suffix_specified_ (false),
+ skel_file_suffix_ ("-pskel"),
+ skel_file_suffix_specified_ (false),
+ impl_type_suffix_ ("_pimpl"),
+ impl_type_suffix_specified_ (false),
+ impl_file_suffix_ ("-pimpl"),
+ impl_file_suffix_specified_ (false)
+ {
+ ::cli::argv_scanner s (start, argc, argv, erase);
+ _parse (s, opt, arg);
+ end = s.end ();
+ }
+
+ options::
+ options (::cli::scanner& s,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+ : type_map_ (),
+ type_map_specified_ (false),
+ xml_parser_ ("xerces"),
+ xml_parser_specified_ (false),
+ generate_validation_ (),
+ suppress_validation_ (),
+ generate_polymorphic_ (),
+ generate_noop_impl_ (),
+ generate_print_impl_ (),
+ generate_test_driver_ (),
+ force_overwrite_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ skel_type_suffix_ ("_pskel"),
+ skel_type_suffix_specified_ (false),
+ skel_file_suffix_ ("-pskel"),
+ skel_file_suffix_specified_ (false),
+ impl_type_suffix_ ("_pimpl"),
+ impl_type_suffix_specified_ (false),
+ impl_file_suffix_ ("-pimpl"),
+ impl_file_suffix_specified_ (false)
+ {
+ _parse (s, opt, arg);
+ }
+
+ ::cli::usage_para options::
+ print_usage (::std::wostream& os, ::cli::usage_para p)
+ {
+ CLI_POTENTIALLY_UNUSED (os);
+
+ if (p == ::cli::usage_para::text)
+ os << ::std::endl;
+
+ os << "--type-map <mapfile> Read XML Schema to C++ type mapping information" << ::std::endl
+ << " from <mapfile>." << ::std::endl;
+
+ os << "--xml-parser <parser> Use <parser> as the underlying XML parser." << ::std::endl;
+
+ os << "--generate-validation Generate validation code." << ::std::endl;
+
+ os << "--suppress-validation Suppress the generation of validation code." << ::std::endl;
+
+ os << "--generate-polymorphic Generate polymorphism-aware code." << ::std::endl;
+
+ os << "--generate-noop-impl Generate a sample parser implementation that does" << ::std::endl
+ << " nothing (no operation)." << ::std::endl;
+
+ os << "--generate-print-impl Generate a sample parser implementation that" << ::std::endl
+ << " prints the XML data to STDOUT." << ::std::endl;
+
+ os << "--generate-test-driver Generate a test driver for the sample parser" << ::std::endl
+ << " implementation." << ::std::endl;
+
+ os << "--force-overwrite Force overwriting of the existing implementation" << ::std::endl
+ << " and test driver files." << ::std::endl;
+
+ os << "--root-element-first Indicate that the first global element is the" << ::std::endl
+ << " document root." << ::std::endl;
+
+ os << "--root-element-last Indicate that the last global element is the" << ::std::endl
+ << " document root." << ::std::endl;
+
+ os << "--root-element <element> Indicate that <element> is the document root." << ::std::endl;
+
+ os << "--skel-type-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
+ << " _pskel to construct the names of the generated" << ::std::endl
+ << " parser skeletons." << ::std::endl;
+
+ os << "--skel-file-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
+ << " -pskel to construct the names of the generated" << ::std::endl
+ << " parser skeleton files." << ::std::endl;
+
+ os << "--impl-type-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
+ << " _pimpl to construct the names of the parser" << ::std::endl
+ << " implementations for the built-in XML Schema types" << ::std::endl
+ << " as well as sample parser implementations." << ::std::endl;
+
+ os << "--impl-file-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
+ << " -pimpl to construct the names of the generated" << ::std::endl
+ << " sample parser implementation files." << ::std::endl;
+
+ p = ::cli::usage_para::option;
+
+ return p;
+ }
+
+ typedef
+ std::map<std::string, void (*) (options&, ::cli::scanner&)>
+ _cli_options_map;
+
+ static _cli_options_map _cli_options_map_;
+
+ struct _cli_options_map_init
+ {
+ _cli_options_map_init ()
+ {
+ _cli_options_map_["--type-map"] =
+ &::cli::thunk< options, NarrowStrings, &options::type_map_,
+ &options::type_map_specified_ >;
+ _cli_options_map_["--xml-parser"] =
+ &::cli::thunk< options, NarrowString, &options::xml_parser_,
+ &options::xml_parser_specified_ >;
+ _cli_options_map_["--generate-validation"] =
+ &::cli::thunk< options, &options::generate_validation_ >;
+ _cli_options_map_["--suppress-validation"] =
+ &::cli::thunk< options, &options::suppress_validation_ >;
+ _cli_options_map_["--generate-polymorphic"] =
+ &::cli::thunk< options, &options::generate_polymorphic_ >;
+ _cli_options_map_["--generate-noop-impl"] =
+ &::cli::thunk< options, &options::generate_noop_impl_ >;
+ _cli_options_map_["--generate-print-impl"] =
+ &::cli::thunk< options, &options::generate_print_impl_ >;
+ _cli_options_map_["--generate-test-driver"] =
+ &::cli::thunk< options, &options::generate_test_driver_ >;
+ _cli_options_map_["--force-overwrite"] =
+ &::cli::thunk< options, &options::force_overwrite_ >;
+ _cli_options_map_["--root-element-first"] =
+ &::cli::thunk< options, &options::root_element_first_ >;
+ _cli_options_map_["--root-element-last"] =
+ &::cli::thunk< options, &options::root_element_last_ >;
+ _cli_options_map_["--root-element"] =
+ &::cli::thunk< options, NarrowString, &options::root_element_,
+ &options::root_element_specified_ >;
+ _cli_options_map_["--skel-type-suffix"] =
+ &::cli::thunk< options, NarrowString, &options::skel_type_suffix_,
+ &options::skel_type_suffix_specified_ >;
+ _cli_options_map_["--skel-file-suffix"] =
+ &::cli::thunk< options, NarrowString, &options::skel_file_suffix_,
+ &options::skel_file_suffix_specified_ >;
+ _cli_options_map_["--impl-type-suffix"] =
+ &::cli::thunk< options, NarrowString, &options::impl_type_suffix_,
+ &options::impl_type_suffix_specified_ >;
+ _cli_options_map_["--impl-file-suffix"] =
+ &::cli::thunk< options, NarrowString, &options::impl_file_suffix_,
+ &options::impl_file_suffix_specified_ >;
+ }
+ };
+
+ static _cli_options_map_init _cli_options_map_init_;
+
+ bool options::
+ _parse (const char* o, ::cli::scanner& s)
+ {
+ _cli_options_map::const_iterator i (_cli_options_map_.find (o));
+
+ if (i != _cli_options_map_.end ())
+ {
+ (*(i->second)) (*this, s);
+ return true;
+ }
+
+ // options base
+ //
+ if (::CXX::options::_parse (o, s))
+ return true;
+
+ return false;
+ }
+
+ bool options::
+ _parse (::cli::scanner& s,
+ ::cli::unknown_mode opt_mode,
+ ::cli::unknown_mode arg_mode)
+ {
+ // Can't skip combined flags (--no-combined-flags).
+ //
+ assert (opt_mode != ::cli::unknown_mode::skip);
+
+ bool r = false;
+ bool opt = true;
+
+ while (s.more ())
+ {
+ const char* o = s.peek ();
+
+ if (std::strcmp (o, "--") == 0)
+ {
+ opt = false;
+ s.skip ();
+ r = true;
+ continue;
+ }
+
+ if (opt)
+ {
+ if (_parse (o, s))
+ {
+ r = true;
+ continue;
+ }
+
+ if (std::strncmp (o, "-", 1) == 0 && o[1] != '\0')
+ {
+ // Handle combined option values.
+ //
+ std::string co;
+ if (const char* v = std::strchr (o, '='))
+ {
+ co.assign (o, 0, v - o);
+ ++v;
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (co.c_str ()),
+ const_cast<char*> (v)
+ };
+
+ ::cli::argv_scanner ns (0, ac, av);
+
+ if (_parse (co.c_str (), ns))
+ {
+ // Parsed the option but not its value?
+ //
+ if (ns.end () != 2)
+ throw ::cli::invalid_value (co, v);
+
+ s.next ();
+ r = true;
+ continue;
+ }
+ else
+ {
+ // Set the unknown option and fall through.
+ //
+ o = co.c_str ();
+ }
+ }
+
+ // Handle combined flags.
+ //
+ char cf[3];
+ {
+ const char* p = o + 1;
+ for (; *p != '\0'; ++p)
+ {
+ if (!((*p >= 'a' && *p <= 'z') ||
+ (*p >= 'A' && *p <= 'Z') ||
+ (*p >= '0' && *p <= '9')))
+ break;
+ }
+
+ if (*p == '\0')
+ {
+ for (p = o + 1; *p != '\0'; ++p)
+ {
+ std::strcpy (cf, "-");
+ cf[1] = *p;
+ cf[2] = '\0';
+
+ int ac (1);
+ char* av[] =
+ {
+ cf
+ };
+
+ ::cli::argv_scanner ns (0, ac, av);
+
+ if (!_parse (cf, ns))
+ break;
+ }
+
+ if (*p == '\0')
+ {
+ // All handled.
+ //
+ s.next ();
+ r = true;
+ continue;
+ }
+ else
+ {
+ // Set the unknown option and fall through.
+ //
+ o = cf;
+ }
+ }
+ }
+
+ switch (opt_mode)
+ {
+ case ::cli::unknown_mode::skip:
+ {
+ s.skip ();
+ r = true;
+ continue;
+ }
+ case ::cli::unknown_mode::stop:
+ {
+ break;
+ }
+ case ::cli::unknown_mode::fail:
+ {
+ throw ::cli::unknown_option (o);
+ }
+ }
+
+ break;
+ }
+ }
+
+ switch (arg_mode)
+ {
+ case ::cli::unknown_mode::skip:
+ {
+ s.skip ();
+ r = true;
+ continue;
+ }
+ case ::cli::unknown_mode::stop:
+ {
+ break;
+ }
+ case ::cli::unknown_mode::fail:
+ {
+ throw ::cli::unknown_argument (o);
+ }
+ }
+
+ break;
+ }
+
+ return r;
+ }
+ }
+}
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
diff --git a/xsd/pregenerated/xsd/cxx/parser/options.hxx b/xsd/pregenerated/xsd/cxx/parser/options.hxx
new file mode 100644
index 0000000..03b67fd
--- /dev/null
+++ b/xsd/pregenerated/xsd/cxx/parser/options.hxx
@@ -0,0 +1,186 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+#ifndef XSD_CXX_PARSER_OPTIONS_HXX
+#define XSD_CXX_PARSER_OPTIONS_HXX
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+#include <cstddef>
+
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/options.hxx>
+
+namespace CXX
+{
+ namespace Parser
+ {
+ class options: public ::CXX::options
+ {
+ public:
+ options ();
+
+ options (int& argc,
+ char** argv,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ options (int start,
+ int& argc,
+ char** argv,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ options (int& argc,
+ char** argv,
+ int& end,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ options (int start,
+ int& argc,
+ char** argv,
+ int& end,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ options (::cli::scanner&,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ // Option accessors.
+ //
+ const NarrowStrings&
+ type_map () const;
+
+ bool
+ type_map_specified () const;
+
+ const NarrowString&
+ xml_parser () const;
+
+ bool
+ xml_parser_specified () const;
+
+ const bool&
+ generate_validation () const;
+
+ const bool&
+ suppress_validation () const;
+
+ const bool&
+ generate_polymorphic () const;
+
+ const bool&
+ generate_noop_impl () const;
+
+ const bool&
+ generate_print_impl () const;
+
+ const bool&
+ generate_test_driver () const;
+
+ const bool&
+ force_overwrite () const;
+
+ const bool&
+ root_element_first () const;
+
+ const bool&
+ root_element_last () const;
+
+ const NarrowString&
+ root_element () const;
+
+ bool
+ root_element_specified () const;
+
+ const NarrowString&
+ skel_type_suffix () const;
+
+ bool
+ skel_type_suffix_specified () const;
+
+ const NarrowString&
+ skel_file_suffix () const;
+
+ bool
+ skel_file_suffix_specified () const;
+
+ const NarrowString&
+ impl_type_suffix () const;
+
+ bool
+ impl_type_suffix_specified () const;
+
+ const NarrowString&
+ impl_file_suffix () const;
+
+ bool
+ impl_file_suffix_specified () const;
+
+ // Print usage information.
+ //
+ static ::cli::usage_para
+ print_usage (::std::wostream&,
+ ::cli::usage_para = ::cli::usage_para::none);
+
+ // Implementation details.
+ //
+ protected:
+ bool
+ _parse (const char*, ::cli::scanner&);
+
+ private:
+ bool
+ _parse (::cli::scanner&,
+ ::cli::unknown_mode option,
+ ::cli::unknown_mode argument);
+
+ public:
+ NarrowStrings type_map_;
+ bool type_map_specified_;
+ NarrowString xml_parser_;
+ bool xml_parser_specified_;
+ bool generate_validation_;
+ bool suppress_validation_;
+ bool generate_polymorphic_;
+ bool generate_noop_impl_;
+ bool generate_print_impl_;
+ bool generate_test_driver_;
+ bool force_overwrite_;
+ bool root_element_first_;
+ bool root_element_last_;
+ NarrowString root_element_;
+ bool root_element_specified_;
+ NarrowString skel_type_suffix_;
+ bool skel_type_suffix_specified_;
+ NarrowString skel_file_suffix_;
+ bool skel_file_suffix_specified_;
+ NarrowString impl_type_suffix_;
+ bool impl_type_suffix_specified_;
+ NarrowString impl_file_suffix_;
+ bool impl_file_suffix_specified_;
+ };
+ }
+}
+
+#include <xsd/cxx/parser/options.ixx>
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
+#endif // XSD_CXX_PARSER_OPTIONS_HXX
diff --git a/xsd/pregenerated/xsd/cxx/parser/options.ixx b/xsd/pregenerated/xsd/cxx/parser/options.ixx
new file mode 100644
index 0000000..64c00c5
--- /dev/null
+++ b/xsd/pregenerated/xsd/cxx/parser/options.ixx
@@ -0,0 +1,162 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+namespace CXX
+{
+ namespace Parser
+ {
+ // options
+ //
+
+ inline const NarrowStrings& options::
+ type_map () const
+ {
+ return this->type_map_;
+ }
+
+ inline bool options::
+ type_map_specified () const
+ {
+ return this->type_map_specified_;
+ }
+
+ inline const NarrowString& options::
+ xml_parser () const
+ {
+ return this->xml_parser_;
+ }
+
+ inline bool options::
+ xml_parser_specified () const
+ {
+ return this->xml_parser_specified_;
+ }
+
+ inline const bool& options::
+ generate_validation () const
+ {
+ return this->generate_validation_;
+ }
+
+ inline const bool& options::
+ suppress_validation () const
+ {
+ return this->suppress_validation_;
+ }
+
+ inline const bool& options::
+ generate_polymorphic () const
+ {
+ return this->generate_polymorphic_;
+ }
+
+ inline const bool& options::
+ generate_noop_impl () const
+ {
+ return this->generate_noop_impl_;
+ }
+
+ inline const bool& options::
+ generate_print_impl () const
+ {
+ return this->generate_print_impl_;
+ }
+
+ inline const bool& options::
+ generate_test_driver () const
+ {
+ return this->generate_test_driver_;
+ }
+
+ inline const bool& options::
+ force_overwrite () const
+ {
+ return this->force_overwrite_;
+ }
+
+ inline const bool& options::
+ root_element_first () const
+ {
+ return this->root_element_first_;
+ }
+
+ inline const bool& options::
+ root_element_last () const
+ {
+ return this->root_element_last_;
+ }
+
+ inline const NarrowString& options::
+ root_element () const
+ {
+ return this->root_element_;
+ }
+
+ inline bool options::
+ root_element_specified () const
+ {
+ return this->root_element_specified_;
+ }
+
+ inline const NarrowString& options::
+ skel_type_suffix () const
+ {
+ return this->skel_type_suffix_;
+ }
+
+ inline bool options::
+ skel_type_suffix_specified () const
+ {
+ return this->skel_type_suffix_specified_;
+ }
+
+ inline const NarrowString& options::
+ skel_file_suffix () const
+ {
+ return this->skel_file_suffix_;
+ }
+
+ inline bool options::
+ skel_file_suffix_specified () const
+ {
+ return this->skel_file_suffix_specified_;
+ }
+
+ inline const NarrowString& options::
+ impl_type_suffix () const
+ {
+ return this->impl_type_suffix_;
+ }
+
+ inline bool options::
+ impl_type_suffix_specified () const
+ {
+ return this->impl_type_suffix_specified_;
+ }
+
+ inline const NarrowString& options::
+ impl_file_suffix () const
+ {
+ return this->impl_file_suffix_;
+ }
+
+ inline bool options::
+ impl_file_suffix_specified () const
+ {
+ return this->impl_file_suffix_specified_;
+ }
+ }
+}
+
+// Begin epilogue.
+//
+//
+// End epilogue.
diff --git a/xsd/pregenerated/xsd/cxx/tree/options.cxx b/xsd/pregenerated/xsd/cxx/tree/options.cxx
new file mode 100644
index 0000000..17214c1
--- /dev/null
+++ b/xsd/pregenerated/xsd/cxx/tree/options.cxx
@@ -0,0 +1,1343 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+// Begin prologue.
+//
+#include <xsd/options-parser.hxx>
+//
+// End prologue.
+
+#include <xsd/cxx/tree/options.hxx>
+
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+#include <utility>
+#include <ostream>
+#include <sstream>
+#include <cstring>
+
+namespace cli
+{
+ template <typename X>
+ struct parser
+ {
+ static void
+ parse (X& x, bool& xs, scanner& s)
+ {
+ using namespace std;
+
+ const char* o (s.next ());
+ if (s.more ())
+ {
+ string v (s.next ());
+ istringstream is (v);
+ if (!(is >> x && is.peek () == istringstream::traits_type::eof ()))
+ throw invalid_value (o, v);
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <>
+ struct parser<bool>
+ {
+ static void
+ parse (bool& x, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ const char* v (s.next ());
+
+ if (std::strcmp (v, "1") == 0 ||
+ std::strcmp (v, "true") == 0 ||
+ std::strcmp (v, "TRUE") == 0 ||
+ std::strcmp (v, "True") == 0)
+ x = true;
+ else if (std::strcmp (v, "0") == 0 ||
+ std::strcmp (v, "false") == 0 ||
+ std::strcmp (v, "FALSE") == 0 ||
+ std::strcmp (v, "False") == 0)
+ x = false;
+ else
+ throw invalid_value (o, v);
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <>
+ struct parser<std::string>
+ {
+ static void
+ parse (std::string& x, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ x = s.next ();
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename X>
+ struct parser<std::pair<X, std::size_t> >
+ {
+ static void
+ parse (std::pair<X, std::size_t>& x, bool& xs, scanner& s)
+ {
+ x.second = s.position ();
+ parser<X>::parse (x.first, xs, s);
+ }
+ };
+
+ template <typename X>
+ struct parser<std::vector<X> >
+ {
+ static void
+ parse (std::vector<X>& c, bool& xs, scanner& s)
+ {
+ X x;
+ bool dummy;
+ parser<X>::parse (x, dummy, s);
+ c.push_back (x);
+ xs = true;
+ }
+ };
+
+ template <typename X, typename C>
+ struct parser<std::set<X, C> >
+ {
+ static void
+ parse (std::set<X, C>& c, bool& xs, scanner& s)
+ {
+ X x;
+ bool dummy;
+ parser<X>::parse (x, dummy, s);
+ c.insert (x);
+ xs = true;
+ }
+ };
+
+ template <typename K, typename V, typename C>
+ struct parser<std::map<K, V, C> >
+ {
+ static void
+ parse (std::map<K, V, C>& m, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ std::size_t pos (s.position ());
+ std::string ov (s.next ());
+ std::string::size_type p = ov.find ('=');
+
+ K k = K ();
+ V v = V ();
+ std::string kstr (ov, 0, p);
+ std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ()));
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (o),
+ 0
+ };
+
+ bool dummy;
+ if (!kstr.empty ())
+ {
+ av[1] = const_cast<char*> (kstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<K>::parse (k, dummy, s);
+ }
+
+ if (!vstr.empty ())
+ {
+ av[1] = const_cast<char*> (vstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<V>::parse (v, dummy, s);
+ }
+
+ m[k] = v;
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename K, typename V, typename C>
+ struct parser<std::multimap<K, V, C> >
+ {
+ static void
+ parse (std::multimap<K, V, C>& m, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ std::size_t pos (s.position ());
+ std::string ov (s.next ());
+ std::string::size_type p = ov.find ('=');
+
+ K k = K ();
+ V v = V ();
+ std::string kstr (ov, 0, p);
+ std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ()));
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (o),
+ 0
+ };
+
+ bool dummy;
+ if (!kstr.empty ())
+ {
+ av[1] = const_cast<char*> (kstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<K>::parse (k, dummy, s);
+ }
+
+ if (!vstr.empty ())
+ {
+ av[1] = const_cast<char*> (vstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<V>::parse (v, dummy, s);
+ }
+
+ m.insert (typename std::multimap<K, V, C>::value_type (k, v));
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename X, typename T, T X::*M>
+ void
+ thunk (X& x, scanner& s)
+ {
+ parser<T>::parse (x.*M, s);
+ }
+
+ template <typename X, bool X::*M>
+ void
+ thunk (X& x, scanner& s)
+ {
+ s.next ();
+ x.*M = true;
+ }
+
+ template <typename X, typename T, T X::*M, bool X::*S>
+ void
+ thunk (X& x, scanner& s)
+ {
+ parser<T>::parse (x.*M, x.*S, s);
+ }
+}
+
+#include <map>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ // options
+ //
+
+ options::
+ options ()
+ : generate_polymorphic_ (),
+ polymorphic_type_ (),
+ polymorphic_type_specified_ (false),
+ polymorphic_type_all_ (),
+ polymorphic_plate_ (0),
+ polymorphic_plate_specified_ (false),
+ ordered_type_ (),
+ ordered_type_specified_ (false),
+ ordered_type_derived_ (),
+ ordered_type_mixed_ (),
+ ordered_type_all_ (),
+ order_container_ (),
+ order_container_specified_ (false),
+ generate_serialization_ (),
+ generate_ostream_ (),
+ generate_doxygen_ (),
+ generate_comparison_ (),
+ generate_default_ctor_ (),
+ generate_from_base_ctor_ (),
+ suppress_assignment_ (),
+ generate_detach_ (),
+ generate_wildcard_ (),
+ generate_any_type_ (),
+ generate_insertion_ (),
+ generate_insertion_specified_ (false),
+ generate_extraction_ (),
+ generate_extraction_specified_ (false),
+ generate_forward_ (),
+ suppress_parsing_ (),
+ generate_element_type_ (),
+ generate_element_map_ (),
+ generate_intellisense_ (),
+ omit_default_attributes_ (),
+ type_naming_ ("knr"),
+ type_naming_specified_ (false),
+ function_naming_ ("knr"),
+ function_naming_specified_ (false),
+ type_regex_ (),
+ type_regex_specified_ (false),
+ accessor_regex_ (),
+ accessor_regex_specified_ (false),
+ one_accessor_regex_ (),
+ one_accessor_regex_specified_ (false),
+ opt_accessor_regex_ (),
+ opt_accessor_regex_specified_ (false),
+ seq_accessor_regex_ (),
+ seq_accessor_regex_specified_ (false),
+ modifier_regex_ (),
+ modifier_regex_specified_ (false),
+ one_modifier_regex_ (),
+ one_modifier_regex_specified_ (false),
+ opt_modifier_regex_ (),
+ opt_modifier_regex_specified_ (false),
+ seq_modifier_regex_ (),
+ seq_modifier_regex_specified_ (false),
+ parser_regex_ (),
+ parser_regex_specified_ (false),
+ serializer_regex_ (),
+ serializer_regex_specified_ (false),
+ const_regex_ (),
+ const_regex_specified_ (false),
+ enumerator_regex_ (),
+ enumerator_regex_specified_ (false),
+ element_type_regex_ (),
+ element_type_regex_specified_ (false),
+ name_regex_trace_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_all_ (),
+ root_element_none_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ custom_type_ (),
+ custom_type_specified_ (false),
+ custom_type_regex_ (),
+ custom_type_regex_specified_ (false),
+ parts_ (1),
+ parts_specified_ (false),
+ parts_suffix_ ("-"),
+ parts_suffix_specified_ (false)
+ {
+ }
+
+ options::
+ options (int& argc,
+ char** argv,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+ : generate_polymorphic_ (),
+ polymorphic_type_ (),
+ polymorphic_type_specified_ (false),
+ polymorphic_type_all_ (),
+ polymorphic_plate_ (0),
+ polymorphic_plate_specified_ (false),
+ ordered_type_ (),
+ ordered_type_specified_ (false),
+ ordered_type_derived_ (),
+ ordered_type_mixed_ (),
+ ordered_type_all_ (),
+ order_container_ (),
+ order_container_specified_ (false),
+ generate_serialization_ (),
+ generate_ostream_ (),
+ generate_doxygen_ (),
+ generate_comparison_ (),
+ generate_default_ctor_ (),
+ generate_from_base_ctor_ (),
+ suppress_assignment_ (),
+ generate_detach_ (),
+ generate_wildcard_ (),
+ generate_any_type_ (),
+ generate_insertion_ (),
+ generate_insertion_specified_ (false),
+ generate_extraction_ (),
+ generate_extraction_specified_ (false),
+ generate_forward_ (),
+ suppress_parsing_ (),
+ generate_element_type_ (),
+ generate_element_map_ (),
+ generate_intellisense_ (),
+ omit_default_attributes_ (),
+ type_naming_ ("knr"),
+ type_naming_specified_ (false),
+ function_naming_ ("knr"),
+ function_naming_specified_ (false),
+ type_regex_ (),
+ type_regex_specified_ (false),
+ accessor_regex_ (),
+ accessor_regex_specified_ (false),
+ one_accessor_regex_ (),
+ one_accessor_regex_specified_ (false),
+ opt_accessor_regex_ (),
+ opt_accessor_regex_specified_ (false),
+ seq_accessor_regex_ (),
+ seq_accessor_regex_specified_ (false),
+ modifier_regex_ (),
+ modifier_regex_specified_ (false),
+ one_modifier_regex_ (),
+ one_modifier_regex_specified_ (false),
+ opt_modifier_regex_ (),
+ opt_modifier_regex_specified_ (false),
+ seq_modifier_regex_ (),
+ seq_modifier_regex_specified_ (false),
+ parser_regex_ (),
+ parser_regex_specified_ (false),
+ serializer_regex_ (),
+ serializer_regex_specified_ (false),
+ const_regex_ (),
+ const_regex_specified_ (false),
+ enumerator_regex_ (),
+ enumerator_regex_specified_ (false),
+ element_type_regex_ (),
+ element_type_regex_specified_ (false),
+ name_regex_trace_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_all_ (),
+ root_element_none_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ custom_type_ (),
+ custom_type_specified_ (false),
+ custom_type_regex_ (),
+ custom_type_regex_specified_ (false),
+ parts_ (1),
+ parts_specified_ (false),
+ parts_suffix_ ("-"),
+ parts_suffix_specified_ (false)
+ {
+ ::cli::argv_scanner s (argc, argv, erase);
+ _parse (s, opt, arg);
+ }
+
+ options::
+ options (int start,
+ int& argc,
+ char** argv,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+ : generate_polymorphic_ (),
+ polymorphic_type_ (),
+ polymorphic_type_specified_ (false),
+ polymorphic_type_all_ (),
+ polymorphic_plate_ (0),
+ polymorphic_plate_specified_ (false),
+ ordered_type_ (),
+ ordered_type_specified_ (false),
+ ordered_type_derived_ (),
+ ordered_type_mixed_ (),
+ ordered_type_all_ (),
+ order_container_ (),
+ order_container_specified_ (false),
+ generate_serialization_ (),
+ generate_ostream_ (),
+ generate_doxygen_ (),
+ generate_comparison_ (),
+ generate_default_ctor_ (),
+ generate_from_base_ctor_ (),
+ suppress_assignment_ (),
+ generate_detach_ (),
+ generate_wildcard_ (),
+ generate_any_type_ (),
+ generate_insertion_ (),
+ generate_insertion_specified_ (false),
+ generate_extraction_ (),
+ generate_extraction_specified_ (false),
+ generate_forward_ (),
+ suppress_parsing_ (),
+ generate_element_type_ (),
+ generate_element_map_ (),
+ generate_intellisense_ (),
+ omit_default_attributes_ (),
+ type_naming_ ("knr"),
+ type_naming_specified_ (false),
+ function_naming_ ("knr"),
+ function_naming_specified_ (false),
+ type_regex_ (),
+ type_regex_specified_ (false),
+ accessor_regex_ (),
+ accessor_regex_specified_ (false),
+ one_accessor_regex_ (),
+ one_accessor_regex_specified_ (false),
+ opt_accessor_regex_ (),
+ opt_accessor_regex_specified_ (false),
+ seq_accessor_regex_ (),
+ seq_accessor_regex_specified_ (false),
+ modifier_regex_ (),
+ modifier_regex_specified_ (false),
+ one_modifier_regex_ (),
+ one_modifier_regex_specified_ (false),
+ opt_modifier_regex_ (),
+ opt_modifier_regex_specified_ (false),
+ seq_modifier_regex_ (),
+ seq_modifier_regex_specified_ (false),
+ parser_regex_ (),
+ parser_regex_specified_ (false),
+ serializer_regex_ (),
+ serializer_regex_specified_ (false),
+ const_regex_ (),
+ const_regex_specified_ (false),
+ enumerator_regex_ (),
+ enumerator_regex_specified_ (false),
+ element_type_regex_ (),
+ element_type_regex_specified_ (false),
+ name_regex_trace_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_all_ (),
+ root_element_none_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ custom_type_ (),
+ custom_type_specified_ (false),
+ custom_type_regex_ (),
+ custom_type_regex_specified_ (false),
+ parts_ (1),
+ parts_specified_ (false),
+ parts_suffix_ ("-"),
+ parts_suffix_specified_ (false)
+ {
+ ::cli::argv_scanner s (start, argc, argv, erase);
+ _parse (s, opt, arg);
+ }
+
+ options::
+ options (int& argc,
+ char** argv,
+ int& end,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+ : generate_polymorphic_ (),
+ polymorphic_type_ (),
+ polymorphic_type_specified_ (false),
+ polymorphic_type_all_ (),
+ polymorphic_plate_ (0),
+ polymorphic_plate_specified_ (false),
+ ordered_type_ (),
+ ordered_type_specified_ (false),
+ ordered_type_derived_ (),
+ ordered_type_mixed_ (),
+ ordered_type_all_ (),
+ order_container_ (),
+ order_container_specified_ (false),
+ generate_serialization_ (),
+ generate_ostream_ (),
+ generate_doxygen_ (),
+ generate_comparison_ (),
+ generate_default_ctor_ (),
+ generate_from_base_ctor_ (),
+ suppress_assignment_ (),
+ generate_detach_ (),
+ generate_wildcard_ (),
+ generate_any_type_ (),
+ generate_insertion_ (),
+ generate_insertion_specified_ (false),
+ generate_extraction_ (),
+ generate_extraction_specified_ (false),
+ generate_forward_ (),
+ suppress_parsing_ (),
+ generate_element_type_ (),
+ generate_element_map_ (),
+ generate_intellisense_ (),
+ omit_default_attributes_ (),
+ type_naming_ ("knr"),
+ type_naming_specified_ (false),
+ function_naming_ ("knr"),
+ function_naming_specified_ (false),
+ type_regex_ (),
+ type_regex_specified_ (false),
+ accessor_regex_ (),
+ accessor_regex_specified_ (false),
+ one_accessor_regex_ (),
+ one_accessor_regex_specified_ (false),
+ opt_accessor_regex_ (),
+ opt_accessor_regex_specified_ (false),
+ seq_accessor_regex_ (),
+ seq_accessor_regex_specified_ (false),
+ modifier_regex_ (),
+ modifier_regex_specified_ (false),
+ one_modifier_regex_ (),
+ one_modifier_regex_specified_ (false),
+ opt_modifier_regex_ (),
+ opt_modifier_regex_specified_ (false),
+ seq_modifier_regex_ (),
+ seq_modifier_regex_specified_ (false),
+ parser_regex_ (),
+ parser_regex_specified_ (false),
+ serializer_regex_ (),
+ serializer_regex_specified_ (false),
+ const_regex_ (),
+ const_regex_specified_ (false),
+ enumerator_regex_ (),
+ enumerator_regex_specified_ (false),
+ element_type_regex_ (),
+ element_type_regex_specified_ (false),
+ name_regex_trace_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_all_ (),
+ root_element_none_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ custom_type_ (),
+ custom_type_specified_ (false),
+ custom_type_regex_ (),
+ custom_type_regex_specified_ (false),
+ parts_ (1),
+ parts_specified_ (false),
+ parts_suffix_ ("-"),
+ parts_suffix_specified_ (false)
+ {
+ ::cli::argv_scanner s (argc, argv, erase);
+ _parse (s, opt, arg);
+ end = s.end ();
+ }
+
+ options::
+ options (int start,
+ int& argc,
+ char** argv,
+ int& end,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+ : generate_polymorphic_ (),
+ polymorphic_type_ (),
+ polymorphic_type_specified_ (false),
+ polymorphic_type_all_ (),
+ polymorphic_plate_ (0),
+ polymorphic_plate_specified_ (false),
+ ordered_type_ (),
+ ordered_type_specified_ (false),
+ ordered_type_derived_ (),
+ ordered_type_mixed_ (),
+ ordered_type_all_ (),
+ order_container_ (),
+ order_container_specified_ (false),
+ generate_serialization_ (),
+ generate_ostream_ (),
+ generate_doxygen_ (),
+ generate_comparison_ (),
+ generate_default_ctor_ (),
+ generate_from_base_ctor_ (),
+ suppress_assignment_ (),
+ generate_detach_ (),
+ generate_wildcard_ (),
+ generate_any_type_ (),
+ generate_insertion_ (),
+ generate_insertion_specified_ (false),
+ generate_extraction_ (),
+ generate_extraction_specified_ (false),
+ generate_forward_ (),
+ suppress_parsing_ (),
+ generate_element_type_ (),
+ generate_element_map_ (),
+ generate_intellisense_ (),
+ omit_default_attributes_ (),
+ type_naming_ ("knr"),
+ type_naming_specified_ (false),
+ function_naming_ ("knr"),
+ function_naming_specified_ (false),
+ type_regex_ (),
+ type_regex_specified_ (false),
+ accessor_regex_ (),
+ accessor_regex_specified_ (false),
+ one_accessor_regex_ (),
+ one_accessor_regex_specified_ (false),
+ opt_accessor_regex_ (),
+ opt_accessor_regex_specified_ (false),
+ seq_accessor_regex_ (),
+ seq_accessor_regex_specified_ (false),
+ modifier_regex_ (),
+ modifier_regex_specified_ (false),
+ one_modifier_regex_ (),
+ one_modifier_regex_specified_ (false),
+ opt_modifier_regex_ (),
+ opt_modifier_regex_specified_ (false),
+ seq_modifier_regex_ (),
+ seq_modifier_regex_specified_ (false),
+ parser_regex_ (),
+ parser_regex_specified_ (false),
+ serializer_regex_ (),
+ serializer_regex_specified_ (false),
+ const_regex_ (),
+ const_regex_specified_ (false),
+ enumerator_regex_ (),
+ enumerator_regex_specified_ (false),
+ element_type_regex_ (),
+ element_type_regex_specified_ (false),
+ name_regex_trace_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_all_ (),
+ root_element_none_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ custom_type_ (),
+ custom_type_specified_ (false),
+ custom_type_regex_ (),
+ custom_type_regex_specified_ (false),
+ parts_ (1),
+ parts_specified_ (false),
+ parts_suffix_ ("-"),
+ parts_suffix_specified_ (false)
+ {
+ ::cli::argv_scanner s (start, argc, argv, erase);
+ _parse (s, opt, arg);
+ end = s.end ();
+ }
+
+ options::
+ options (::cli::scanner& s,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+ : generate_polymorphic_ (),
+ polymorphic_type_ (),
+ polymorphic_type_specified_ (false),
+ polymorphic_type_all_ (),
+ polymorphic_plate_ (0),
+ polymorphic_plate_specified_ (false),
+ ordered_type_ (),
+ ordered_type_specified_ (false),
+ ordered_type_derived_ (),
+ ordered_type_mixed_ (),
+ ordered_type_all_ (),
+ order_container_ (),
+ order_container_specified_ (false),
+ generate_serialization_ (),
+ generate_ostream_ (),
+ generate_doxygen_ (),
+ generate_comparison_ (),
+ generate_default_ctor_ (),
+ generate_from_base_ctor_ (),
+ suppress_assignment_ (),
+ generate_detach_ (),
+ generate_wildcard_ (),
+ generate_any_type_ (),
+ generate_insertion_ (),
+ generate_insertion_specified_ (false),
+ generate_extraction_ (),
+ generate_extraction_specified_ (false),
+ generate_forward_ (),
+ suppress_parsing_ (),
+ generate_element_type_ (),
+ generate_element_map_ (),
+ generate_intellisense_ (),
+ omit_default_attributes_ (),
+ type_naming_ ("knr"),
+ type_naming_specified_ (false),
+ function_naming_ ("knr"),
+ function_naming_specified_ (false),
+ type_regex_ (),
+ type_regex_specified_ (false),
+ accessor_regex_ (),
+ accessor_regex_specified_ (false),
+ one_accessor_regex_ (),
+ one_accessor_regex_specified_ (false),
+ opt_accessor_regex_ (),
+ opt_accessor_regex_specified_ (false),
+ seq_accessor_regex_ (),
+ seq_accessor_regex_specified_ (false),
+ modifier_regex_ (),
+ modifier_regex_specified_ (false),
+ one_modifier_regex_ (),
+ one_modifier_regex_specified_ (false),
+ opt_modifier_regex_ (),
+ opt_modifier_regex_specified_ (false),
+ seq_modifier_regex_ (),
+ seq_modifier_regex_specified_ (false),
+ parser_regex_ (),
+ parser_regex_specified_ (false),
+ serializer_regex_ (),
+ serializer_regex_specified_ (false),
+ const_regex_ (),
+ const_regex_specified_ (false),
+ enumerator_regex_ (),
+ enumerator_regex_specified_ (false),
+ element_type_regex_ (),
+ element_type_regex_specified_ (false),
+ name_regex_trace_ (),
+ root_element_first_ (),
+ root_element_last_ (),
+ root_element_all_ (),
+ root_element_none_ (),
+ root_element_ (),
+ root_element_specified_ (false),
+ custom_type_ (),
+ custom_type_specified_ (false),
+ custom_type_regex_ (),
+ custom_type_regex_specified_ (false),
+ parts_ (1),
+ parts_specified_ (false),
+ parts_suffix_ ("-"),
+ parts_suffix_specified_ (false)
+ {
+ _parse (s, opt, arg);
+ }
+
+ ::cli::usage_para options::
+ print_usage (::std::wostream& os, ::cli::usage_para p)
+ {
+ CLI_POTENTIALLY_UNUSED (os);
+
+ if (p == ::cli::usage_para::text)
+ os << ::std::endl;
+
+ os << "--generate-polymorphic Generate polymorphism-aware code." << ::std::endl;
+
+ os << "--polymorphic-type <type> Indicate that <type> is a root of a polymorphic" << ::std::endl
+ << " type hierarchy." << ::std::endl;
+
+ os << "--polymorphic-type-all Indicate that all types should be treated as" << ::std::endl
+ << " polymorphic." << ::std::endl;
+
+ os << "--polymorphic-plate <num> Specify the polymorphic map plate the generated" << ::std::endl
+ << " code should register on." << ::std::endl;
+
+ os << "--ordered-type <type> Indicate that element order in <type> is" << ::std::endl
+ << " significant." << ::std::endl;
+
+ os << "--ordered-type-derived Automatically treat types derived from ordered" << ::std::endl
+ << " bases as also ordered." << ::std::endl;
+
+ os << "--ordered-type-mixed Automatically treat complex types with mixed" << ::std::endl
+ << " content as ordered." << ::std::endl;
+
+ os << "--ordered-type-all Indicate that element order in all types is" << ::std::endl
+ << " significant." << ::std::endl;
+
+ os << "--order-container <type> Specify a custom class template that should be" << ::std::endl
+ << " used as a container for the content order in" << ::std::endl
+ << " ordered types instead of the default std::vector." << ::std::endl;
+
+ os << "--generate-serialization Generate serialization functions." << ::std::endl;
+
+ os << "--generate-ostream Generate ostream insertion operators (operator<<)" << ::std::endl
+ << " for generated types." << ::std::endl;
+
+ os << "--generate-doxygen Generate documentation comments suitable for" << ::std::endl
+ << " extraction by the Doxygen documentation system." << ::std::endl;
+
+ os << "--generate-comparison Generate comparison operators (operator== and" << ::std::endl
+ << " operator!=) for complex types." << ::std::endl;
+
+ os << "--generate-default-ctor Generate default constructors even for types that" << ::std::endl
+ << " have required members." << ::std::endl;
+
+ os << "--generate-from-base-ctor Generate constructors that expect an instance of a" << ::std::endl
+ << " base type followed by all required members." << ::std::endl;
+
+ os << "--suppress-assignment Suppress the generation of copy assignment" << ::std::endl
+ << " operators for complex types." << ::std::endl;
+
+ os << "--generate-detach Generate detach functions for required elements" << ::std::endl
+ << " and attributes." << ::std::endl;
+
+ os << "--generate-wildcard Generate accessors and modifiers as well as" << ::std::endl
+ << " parsing and serialization code for XML Schema" << ::std::endl
+ << " wildcards (any and anyAttribute)." << ::std::endl;
+
+ os << "--generate-any-type Extract and store content of the XML Schema" << ::std::endl
+ << " anyType type as a DOM fragment." << ::std::endl;
+
+ os << "--generate-insertion <os> Generate data representation stream insertion" << ::std::endl
+ << " operators for the <os> output stream type." << ::std::endl;
+
+ os << "--generate-extraction <is> Generate data representation stream extraction" << ::std::endl
+ << " constructors for the <is> input stream type." << ::std::endl;
+
+ os << "--generate-forward Generate a separate header file with forward" << ::std::endl
+ << " declarations for the types being generated." << ::std::endl;
+
+ os << "--suppress-parsing Suppress the generation of the parsing functions" << ::std::endl
+ << " and constructors." << ::std::endl;
+
+ os << "--generate-element-type Generate types instead of parsing and" << ::std::endl
+ << " serialization functions for root elements." << ::std::endl;
+
+ os << "--generate-element-map Generate a root element map that allows uniform" << ::std::endl
+ << " parsing and serialization of multiple root" << ::std::endl
+ << " elements." << ::std::endl;
+
+ os << "--generate-intellisense Generate workarounds for IntelliSense bugs in" << ::std::endl
+ << " Visual Studio 2005 (8.0)." << ::std::endl;
+
+ os << "--omit-default-attributes Omit attributes with default and fixed values from" << ::std::endl
+ << " serialized XML documents." << ::std::endl;
+
+ os << "--type-naming <style> Specify the type naming convention that should be" << ::std::endl
+ << " used in the generated code." << ::std::endl;
+
+ os << "--function-naming <style> Specify the function naming convention that should" << ::std::endl
+ << " be used in the generated code." << ::std::endl;
+
+ os << "--type-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema type names to C++" << ::std::endl
+ << " type names." << ::std::endl;
+
+ os << "--accessor-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema names of" << ::std::endl
+ << " elements/attributes to C++ accessor function" << ::std::endl
+ << " names." << ::std::endl;
+
+ os << "--one-accessor-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema names of" << ::std::endl
+ << " elements/attributes with cardinality one to C++" << ::std::endl
+ << " accessor function names." << ::std::endl;
+
+ os << "--opt-accessor-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema names of" << ::std::endl
+ << " elements/attributes with cardinality optional to" << ::std::endl
+ << " C++ accessor function names." << ::std::endl;
+
+ os << "--seq-accessor-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema names of" << ::std::endl
+ << " elements/attributes with cardinality sequence to" << ::std::endl
+ << " C++ accessor function names." << ::std::endl;
+
+ os << "--modifier-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema names of" << ::std::endl
+ << " elements/attributes to C++ modifier function" << ::std::endl
+ << " names." << ::std::endl;
+
+ os << "--one-modifier-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema names of" << ::std::endl
+ << " elements/attributes with cardinality one to C++" << ::std::endl
+ << " modifier function names." << ::std::endl;
+
+ os << "--opt-modifier-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema names of" << ::std::endl
+ << " elements/attributes with cardinality optional to" << ::std::endl
+ << " C++ modifier function names." << ::std::endl;
+
+ os << "--seq-modifier-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema names of" << ::std::endl
+ << " elements/attributes with cardinality sequence to" << ::std::endl
+ << " C++ modifier function names." << ::std::endl;
+
+ os << "--parser-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema element names to C++" << ::std::endl
+ << " parsing function names." << ::std::endl;
+
+ os << "--serializer-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema element names to C++" << ::std::endl
+ << " serialization function names." << ::std::endl;
+
+ os << "--const-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema-derived names to C++" << ::std::endl
+ << " constant names." << ::std::endl;
+
+ os << "--enumerator-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema enumeration values to" << ::std::endl
+ << " C++ enumerator names." << ::std::endl;
+
+ os << "--element-type-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate XML Schema element names to C++" << ::std::endl
+ << " element type names." << ::std::endl;
+
+ os << "--name-regex-trace Trace the process of applying regular expressions" << ::std::endl
+ << " specified with the name transformation options." << ::std::endl;
+
+ os << "--root-element-first Treat only the first global element as a document" << ::std::endl
+ << " root." << ::std::endl;
+
+ os << "--root-element-last Treat only the last global element as a document" << ::std::endl
+ << " root." << ::std::endl;
+
+ os << "--root-element-all Treat all global elements as document roots." << ::std::endl;
+
+ os << "--root-element-none Do not treat any global elements as document" << ::std::endl
+ << " roots." << ::std::endl;
+
+ os << "--root-element <element> Treat only <element> as a document root." << ::std::endl;
+
+ os << "--custom-type <map> Use a custom C++ type instead of the generated" << ::std::endl
+ << " class." << ::std::endl;
+
+ os << "--custom-type-regex <regex> Use custom C++ types instead of the generated" << ::std::endl
+ << " classes." << ::std::endl;
+
+ os << "--parts <num> Split generated source code into <num> parts." << ::std::endl;
+
+ os << "--parts-suffix <suffix> Use <suffix> instead of the default '-' to" << ::std::endl
+ << " separate the file name from the part number." << ::std::endl;
+
+ p = ::cli::usage_para::option;
+
+ return p;
+ }
+
+ typedef
+ std::map<std::string, void (*) (options&, ::cli::scanner&)>
+ _cli_options_map;
+
+ static _cli_options_map _cli_options_map_;
+
+ struct _cli_options_map_init
+ {
+ _cli_options_map_init ()
+ {
+ _cli_options_map_["--generate-polymorphic"] =
+ &::cli::thunk< options, &options::generate_polymorphic_ >;
+ _cli_options_map_["--polymorphic-type"] =
+ &::cli::thunk< options, NarrowStrings, &options::polymorphic_type_,
+ &options::polymorphic_type_specified_ >;
+ _cli_options_map_["--polymorphic-type-all"] =
+ &::cli::thunk< options, &options::polymorphic_type_all_ >;
+ _cli_options_map_["--polymorphic-plate"] =
+ &::cli::thunk< options, unsigned long, &options::polymorphic_plate_,
+ &options::polymorphic_plate_specified_ >;
+ _cli_options_map_["--ordered-type"] =
+ &::cli::thunk< options, NarrowStrings, &options::ordered_type_,
+ &options::ordered_type_specified_ >;
+ _cli_options_map_["--ordered-type-derived"] =
+ &::cli::thunk< options, &options::ordered_type_derived_ >;
+ _cli_options_map_["--ordered-type-mixed"] =
+ &::cli::thunk< options, &options::ordered_type_mixed_ >;
+ _cli_options_map_["--ordered-type-all"] =
+ &::cli::thunk< options, &options::ordered_type_all_ >;
+ _cli_options_map_["--order-container"] =
+ &::cli::thunk< options, NarrowString, &options::order_container_,
+ &options::order_container_specified_ >;
+ _cli_options_map_["--generate-serialization"] =
+ &::cli::thunk< options, &options::generate_serialization_ >;
+ _cli_options_map_["--generate-ostream"] =
+ &::cli::thunk< options, &options::generate_ostream_ >;
+ _cli_options_map_["--generate-doxygen"] =
+ &::cli::thunk< options, &options::generate_doxygen_ >;
+ _cli_options_map_["--generate-comparison"] =
+ &::cli::thunk< options, &options::generate_comparison_ >;
+ _cli_options_map_["--generate-default-ctor"] =
+ &::cli::thunk< options, &options::generate_default_ctor_ >;
+ _cli_options_map_["--generate-from-base-ctor"] =
+ &::cli::thunk< options, &options::generate_from_base_ctor_ >;
+ _cli_options_map_["--suppress-assignment"] =
+ &::cli::thunk< options, &options::suppress_assignment_ >;
+ _cli_options_map_["--generate-detach"] =
+ &::cli::thunk< options, &options::generate_detach_ >;
+ _cli_options_map_["--generate-wildcard"] =
+ &::cli::thunk< options, &options::generate_wildcard_ >;
+ _cli_options_map_["--generate-any-type"] =
+ &::cli::thunk< options, &options::generate_any_type_ >;
+ _cli_options_map_["--generate-insertion"] =
+ &::cli::thunk< options, NarrowStrings, &options::generate_insertion_,
+ &options::generate_insertion_specified_ >;
+ _cli_options_map_["--generate-extraction"] =
+ &::cli::thunk< options, NarrowStrings, &options::generate_extraction_,
+ &options::generate_extraction_specified_ >;
+ _cli_options_map_["--generate-forward"] =
+ &::cli::thunk< options, &options::generate_forward_ >;
+ _cli_options_map_["--suppress-parsing"] =
+ &::cli::thunk< options, &options::suppress_parsing_ >;
+ _cli_options_map_["--generate-element-type"] =
+ &::cli::thunk< options, &options::generate_element_type_ >;
+ _cli_options_map_["--generate-element-map"] =
+ &::cli::thunk< options, &options::generate_element_map_ >;
+ _cli_options_map_["--generate-intellisense"] =
+ &::cli::thunk< options, &options::generate_intellisense_ >;
+ _cli_options_map_["--omit-default-attributes"] =
+ &::cli::thunk< options, &options::omit_default_attributes_ >;
+ _cli_options_map_["--type-naming"] =
+ &::cli::thunk< options, NarrowString, &options::type_naming_,
+ &options::type_naming_specified_ >;
+ _cli_options_map_["--function-naming"] =
+ &::cli::thunk< options, NarrowString, &options::function_naming_,
+ &options::function_naming_specified_ >;
+ _cli_options_map_["--type-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::type_regex_,
+ &options::type_regex_specified_ >;
+ _cli_options_map_["--accessor-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::accessor_regex_,
+ &options::accessor_regex_specified_ >;
+ _cli_options_map_["--one-accessor-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::one_accessor_regex_,
+ &options::one_accessor_regex_specified_ >;
+ _cli_options_map_["--opt-accessor-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::opt_accessor_regex_,
+ &options::opt_accessor_regex_specified_ >;
+ _cli_options_map_["--seq-accessor-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::seq_accessor_regex_,
+ &options::seq_accessor_regex_specified_ >;
+ _cli_options_map_["--modifier-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::modifier_regex_,
+ &options::modifier_regex_specified_ >;
+ _cli_options_map_["--one-modifier-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::one_modifier_regex_,
+ &options::one_modifier_regex_specified_ >;
+ _cli_options_map_["--opt-modifier-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::opt_modifier_regex_,
+ &options::opt_modifier_regex_specified_ >;
+ _cli_options_map_["--seq-modifier-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::seq_modifier_regex_,
+ &options::seq_modifier_regex_specified_ >;
+ _cli_options_map_["--parser-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::parser_regex_,
+ &options::parser_regex_specified_ >;
+ _cli_options_map_["--serializer-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::serializer_regex_,
+ &options::serializer_regex_specified_ >;
+ _cli_options_map_["--const-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::const_regex_,
+ &options::const_regex_specified_ >;
+ _cli_options_map_["--enumerator-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::enumerator_regex_,
+ &options::enumerator_regex_specified_ >;
+ _cli_options_map_["--element-type-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::element_type_regex_,
+ &options::element_type_regex_specified_ >;
+ _cli_options_map_["--name-regex-trace"] =
+ &::cli::thunk< options, &options::name_regex_trace_ >;
+ _cli_options_map_["--root-element-first"] =
+ &::cli::thunk< options, &options::root_element_first_ >;
+ _cli_options_map_["--root-element-last"] =
+ &::cli::thunk< options, &options::root_element_last_ >;
+ _cli_options_map_["--root-element-all"] =
+ &::cli::thunk< options, &options::root_element_all_ >;
+ _cli_options_map_["--root-element-none"] =
+ &::cli::thunk< options, &options::root_element_none_ >;
+ _cli_options_map_["--root-element"] =
+ &::cli::thunk< options, NarrowStrings, &options::root_element_,
+ &options::root_element_specified_ >;
+ _cli_options_map_["--custom-type"] =
+ &::cli::thunk< options, NarrowStrings, &options::custom_type_,
+ &options::custom_type_specified_ >;
+ _cli_options_map_["--custom-type-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::custom_type_regex_,
+ &options::custom_type_regex_specified_ >;
+ _cli_options_map_["--parts"] =
+ &::cli::thunk< options, std::size_t, &options::parts_,
+ &options::parts_specified_ >;
+ _cli_options_map_["--parts-suffix"] =
+ &::cli::thunk< options, NarrowString, &options::parts_suffix_,
+ &options::parts_suffix_specified_ >;
+ }
+ };
+
+ static _cli_options_map_init _cli_options_map_init_;
+
+ bool options::
+ _parse (const char* o, ::cli::scanner& s)
+ {
+ _cli_options_map::const_iterator i (_cli_options_map_.find (o));
+
+ if (i != _cli_options_map_.end ())
+ {
+ (*(i->second)) (*this, s);
+ return true;
+ }
+
+ // options base
+ //
+ if (::CXX::options::_parse (o, s))
+ return true;
+
+ return false;
+ }
+
+ bool options::
+ _parse (::cli::scanner& s,
+ ::cli::unknown_mode opt_mode,
+ ::cli::unknown_mode arg_mode)
+ {
+ // Can't skip combined flags (--no-combined-flags).
+ //
+ assert (opt_mode != ::cli::unknown_mode::skip);
+
+ bool r = false;
+ bool opt = true;
+
+ while (s.more ())
+ {
+ const char* o = s.peek ();
+
+ if (std::strcmp (o, "--") == 0)
+ {
+ opt = false;
+ s.skip ();
+ r = true;
+ continue;
+ }
+
+ if (opt)
+ {
+ if (_parse (o, s))
+ {
+ r = true;
+ continue;
+ }
+
+ if (std::strncmp (o, "-", 1) == 0 && o[1] != '\0')
+ {
+ // Handle combined option values.
+ //
+ std::string co;
+ if (const char* v = std::strchr (o, '='))
+ {
+ co.assign (o, 0, v - o);
+ ++v;
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (co.c_str ()),
+ const_cast<char*> (v)
+ };
+
+ ::cli::argv_scanner ns (0, ac, av);
+
+ if (_parse (co.c_str (), ns))
+ {
+ // Parsed the option but not its value?
+ //
+ if (ns.end () != 2)
+ throw ::cli::invalid_value (co, v);
+
+ s.next ();
+ r = true;
+ continue;
+ }
+ else
+ {
+ // Set the unknown option and fall through.
+ //
+ o = co.c_str ();
+ }
+ }
+
+ // Handle combined flags.
+ //
+ char cf[3];
+ {
+ const char* p = o + 1;
+ for (; *p != '\0'; ++p)
+ {
+ if (!((*p >= 'a' && *p <= 'z') ||
+ (*p >= 'A' && *p <= 'Z') ||
+ (*p >= '0' && *p <= '9')))
+ break;
+ }
+
+ if (*p == '\0')
+ {
+ for (p = o + 1; *p != '\0'; ++p)
+ {
+ std::strcpy (cf, "-");
+ cf[1] = *p;
+ cf[2] = '\0';
+
+ int ac (1);
+ char* av[] =
+ {
+ cf
+ };
+
+ ::cli::argv_scanner ns (0, ac, av);
+
+ if (!_parse (cf, ns))
+ break;
+ }
+
+ if (*p == '\0')
+ {
+ // All handled.
+ //
+ s.next ();
+ r = true;
+ continue;
+ }
+ else
+ {
+ // Set the unknown option and fall through.
+ //
+ o = cf;
+ }
+ }
+ }
+
+ switch (opt_mode)
+ {
+ case ::cli::unknown_mode::skip:
+ {
+ s.skip ();
+ r = true;
+ continue;
+ }
+ case ::cli::unknown_mode::stop:
+ {
+ break;
+ }
+ case ::cli::unknown_mode::fail:
+ {
+ throw ::cli::unknown_option (o);
+ }
+ }
+
+ break;
+ }
+ }
+
+ switch (arg_mode)
+ {
+ case ::cli::unknown_mode::skip:
+ {
+ s.skip ();
+ r = true;
+ continue;
+ }
+ case ::cli::unknown_mode::stop:
+ {
+ break;
+ }
+ case ::cli::unknown_mode::fail:
+ {
+ throw ::cli::unknown_argument (o);
+ }
+ }
+
+ break;
+ }
+
+ return r;
+ }
+ }
+}
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
diff --git a/xsd/pregenerated/xsd/cxx/tree/options.hxx b/xsd/pregenerated/xsd/cxx/tree/options.hxx
new file mode 100644
index 0000000..f5a808c
--- /dev/null
+++ b/xsd/pregenerated/xsd/cxx/tree/options.hxx
@@ -0,0 +1,414 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+#ifndef XSD_CXX_TREE_OPTIONS_HXX
+#define XSD_CXX_TREE_OPTIONS_HXX
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+#include <cstddef>
+
+#include <xsd/types.hxx>
+
+#include <xsd/cxx/options.hxx>
+
+namespace CXX
+{
+ namespace Tree
+ {
+ class options: public ::CXX::options
+ {
+ public:
+ options ();
+
+ options (int& argc,
+ char** argv,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ options (int start,
+ int& argc,
+ char** argv,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ options (int& argc,
+ char** argv,
+ int& end,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ options (int start,
+ int& argc,
+ char** argv,
+ int& end,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ options (::cli::scanner&,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ // Option accessors.
+ //
+ const bool&
+ generate_polymorphic () const;
+
+ const NarrowStrings&
+ polymorphic_type () const;
+
+ bool
+ polymorphic_type_specified () const;
+
+ const bool&
+ polymorphic_type_all () const;
+
+ const unsigned long&
+ polymorphic_plate () const;
+
+ bool
+ polymorphic_plate_specified () const;
+
+ const NarrowStrings&
+ ordered_type () const;
+
+ bool
+ ordered_type_specified () const;
+
+ const bool&
+ ordered_type_derived () const;
+
+ const bool&
+ ordered_type_mixed () const;
+
+ const bool&
+ ordered_type_all () const;
+
+ const NarrowString&
+ order_container () const;
+
+ bool
+ order_container_specified () const;
+
+ const bool&
+ generate_serialization () const;
+
+ const bool&
+ generate_ostream () const;
+
+ const bool&
+ generate_doxygen () const;
+
+ const bool&
+ generate_comparison () const;
+
+ const bool&
+ generate_default_ctor () const;
+
+ const bool&
+ generate_from_base_ctor () const;
+
+ const bool&
+ suppress_assignment () const;
+
+ const bool&
+ generate_detach () const;
+
+ const bool&
+ generate_wildcard () const;
+
+ const bool&
+ generate_any_type () const;
+
+ const NarrowStrings&
+ generate_insertion () const;
+
+ bool
+ generate_insertion_specified () const;
+
+ const NarrowStrings&
+ generate_extraction () const;
+
+ bool
+ generate_extraction_specified () const;
+
+ const bool&
+ generate_forward () const;
+
+ const bool&
+ suppress_parsing () const;
+
+ const bool&
+ generate_element_type () const;
+
+ const bool&
+ generate_element_map () const;
+
+ const bool&
+ generate_intellisense () const;
+
+ const bool&
+ omit_default_attributes () const;
+
+ const NarrowString&
+ type_naming () const;
+
+ bool
+ type_naming_specified () const;
+
+ const NarrowString&
+ function_naming () const;
+
+ bool
+ function_naming_specified () const;
+
+ const NarrowStrings&
+ type_regex () const;
+
+ bool
+ type_regex_specified () const;
+
+ const NarrowStrings&
+ accessor_regex () const;
+
+ bool
+ accessor_regex_specified () const;
+
+ const NarrowStrings&
+ one_accessor_regex () const;
+
+ bool
+ one_accessor_regex_specified () const;
+
+ const NarrowStrings&
+ opt_accessor_regex () const;
+
+ bool
+ opt_accessor_regex_specified () const;
+
+ const NarrowStrings&
+ seq_accessor_regex () const;
+
+ bool
+ seq_accessor_regex_specified () const;
+
+ const NarrowStrings&
+ modifier_regex () const;
+
+ bool
+ modifier_regex_specified () const;
+
+ const NarrowStrings&
+ one_modifier_regex () const;
+
+ bool
+ one_modifier_regex_specified () const;
+
+ const NarrowStrings&
+ opt_modifier_regex () const;
+
+ bool
+ opt_modifier_regex_specified () const;
+
+ const NarrowStrings&
+ seq_modifier_regex () const;
+
+ bool
+ seq_modifier_regex_specified () const;
+
+ const NarrowStrings&
+ parser_regex () const;
+
+ bool
+ parser_regex_specified () const;
+
+ const NarrowStrings&
+ serializer_regex () const;
+
+ bool
+ serializer_regex_specified () const;
+
+ const NarrowStrings&
+ const_regex () const;
+
+ bool
+ const_regex_specified () const;
+
+ const NarrowStrings&
+ enumerator_regex () const;
+
+ bool
+ enumerator_regex_specified () const;
+
+ const NarrowStrings&
+ element_type_regex () const;
+
+ bool
+ element_type_regex_specified () const;
+
+ const bool&
+ name_regex_trace () const;
+
+ const bool&
+ root_element_first () const;
+
+ const bool&
+ root_element_last () const;
+
+ const bool&
+ root_element_all () const;
+
+ const bool&
+ root_element_none () const;
+
+ const NarrowStrings&
+ root_element () const;
+
+ bool
+ root_element_specified () const;
+
+ const NarrowStrings&
+ custom_type () const;
+
+ bool
+ custom_type_specified () const;
+
+ const NarrowStrings&
+ custom_type_regex () const;
+
+ bool
+ custom_type_regex_specified () const;
+
+ const std::size_t&
+ parts () const;
+
+ bool
+ parts_specified () const;
+
+ const NarrowString&
+ parts_suffix () const;
+
+ bool
+ parts_suffix_specified () const;
+
+ // Print usage information.
+ //
+ static ::cli::usage_para
+ print_usage (::std::wostream&,
+ ::cli::usage_para = ::cli::usage_para::none);
+
+ // Implementation details.
+ //
+ protected:
+ bool
+ _parse (const char*, ::cli::scanner&);
+
+ private:
+ bool
+ _parse (::cli::scanner&,
+ ::cli::unknown_mode option,
+ ::cli::unknown_mode argument);
+
+ public:
+ bool generate_polymorphic_;
+ NarrowStrings polymorphic_type_;
+ bool polymorphic_type_specified_;
+ bool polymorphic_type_all_;
+ unsigned long polymorphic_plate_;
+ bool polymorphic_plate_specified_;
+ NarrowStrings ordered_type_;
+ bool ordered_type_specified_;
+ bool ordered_type_derived_;
+ bool ordered_type_mixed_;
+ bool ordered_type_all_;
+ NarrowString order_container_;
+ bool order_container_specified_;
+ bool generate_serialization_;
+ bool generate_ostream_;
+ bool generate_doxygen_;
+ bool generate_comparison_;
+ bool generate_default_ctor_;
+ bool generate_from_base_ctor_;
+ bool suppress_assignment_;
+ bool generate_detach_;
+ bool generate_wildcard_;
+ bool generate_any_type_;
+ NarrowStrings generate_insertion_;
+ bool generate_insertion_specified_;
+ NarrowStrings generate_extraction_;
+ bool generate_extraction_specified_;
+ bool generate_forward_;
+ bool suppress_parsing_;
+ bool generate_element_type_;
+ bool generate_element_map_;
+ bool generate_intellisense_;
+ bool omit_default_attributes_;
+ NarrowString type_naming_;
+ bool type_naming_specified_;
+ NarrowString function_naming_;
+ bool function_naming_specified_;
+ NarrowStrings type_regex_;
+ bool type_regex_specified_;
+ NarrowStrings accessor_regex_;
+ bool accessor_regex_specified_;
+ NarrowStrings one_accessor_regex_;
+ bool one_accessor_regex_specified_;
+ NarrowStrings opt_accessor_regex_;
+ bool opt_accessor_regex_specified_;
+ NarrowStrings seq_accessor_regex_;
+ bool seq_accessor_regex_specified_;
+ NarrowStrings modifier_regex_;
+ bool modifier_regex_specified_;
+ NarrowStrings one_modifier_regex_;
+ bool one_modifier_regex_specified_;
+ NarrowStrings opt_modifier_regex_;
+ bool opt_modifier_regex_specified_;
+ NarrowStrings seq_modifier_regex_;
+ bool seq_modifier_regex_specified_;
+ NarrowStrings parser_regex_;
+ bool parser_regex_specified_;
+ NarrowStrings serializer_regex_;
+ bool serializer_regex_specified_;
+ NarrowStrings const_regex_;
+ bool const_regex_specified_;
+ NarrowStrings enumerator_regex_;
+ bool enumerator_regex_specified_;
+ NarrowStrings element_type_regex_;
+ bool element_type_regex_specified_;
+ bool name_regex_trace_;
+ bool root_element_first_;
+ bool root_element_last_;
+ bool root_element_all_;
+ bool root_element_none_;
+ NarrowStrings root_element_;
+ bool root_element_specified_;
+ NarrowStrings custom_type_;
+ bool custom_type_specified_;
+ NarrowStrings custom_type_regex_;
+ bool custom_type_regex_specified_;
+ std::size_t parts_;
+ bool parts_specified_;
+ NarrowString parts_suffix_;
+ bool parts_suffix_specified_;
+ };
+ }
+}
+
+#include <xsd/cxx/tree/options.ixx>
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
+#endif // XSD_CXX_TREE_OPTIONS_HXX
diff --git a/xsd/pregenerated/xsd/cxx/tree/options.ixx b/xsd/pregenerated/xsd/cxx/tree/options.ixx
new file mode 100644
index 0000000..4d34fd9
--- /dev/null
+++ b/xsd/pregenerated/xsd/cxx/tree/options.ixx
@@ -0,0 +1,504 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+namespace CXX
+{
+ namespace Tree
+ {
+ // options
+ //
+
+ inline const bool& options::
+ generate_polymorphic () const
+ {
+ return this->generate_polymorphic_;
+ }
+
+ inline const NarrowStrings& options::
+ polymorphic_type () const
+ {
+ return this->polymorphic_type_;
+ }
+
+ inline bool options::
+ polymorphic_type_specified () const
+ {
+ return this->polymorphic_type_specified_;
+ }
+
+ inline const bool& options::
+ polymorphic_type_all () const
+ {
+ return this->polymorphic_type_all_;
+ }
+
+ inline const unsigned long& options::
+ polymorphic_plate () const
+ {
+ return this->polymorphic_plate_;
+ }
+
+ inline bool options::
+ polymorphic_plate_specified () const
+ {
+ return this->polymorphic_plate_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ ordered_type () const
+ {
+ return this->ordered_type_;
+ }
+
+ inline bool options::
+ ordered_type_specified () const
+ {
+ return this->ordered_type_specified_;
+ }
+
+ inline const bool& options::
+ ordered_type_derived () const
+ {
+ return this->ordered_type_derived_;
+ }
+
+ inline const bool& options::
+ ordered_type_mixed () const
+ {
+ return this->ordered_type_mixed_;
+ }
+
+ inline const bool& options::
+ ordered_type_all () const
+ {
+ return this->ordered_type_all_;
+ }
+
+ inline const NarrowString& options::
+ order_container () const
+ {
+ return this->order_container_;
+ }
+
+ inline bool options::
+ order_container_specified () const
+ {
+ return this->order_container_specified_;
+ }
+
+ inline const bool& options::
+ generate_serialization () const
+ {
+ return this->generate_serialization_;
+ }
+
+ inline const bool& options::
+ generate_ostream () const
+ {
+ return this->generate_ostream_;
+ }
+
+ inline const bool& options::
+ generate_doxygen () const
+ {
+ return this->generate_doxygen_;
+ }
+
+ inline const bool& options::
+ generate_comparison () const
+ {
+ return this->generate_comparison_;
+ }
+
+ inline const bool& options::
+ generate_default_ctor () const
+ {
+ return this->generate_default_ctor_;
+ }
+
+ inline const bool& options::
+ generate_from_base_ctor () const
+ {
+ return this->generate_from_base_ctor_;
+ }
+
+ inline const bool& options::
+ suppress_assignment () const
+ {
+ return this->suppress_assignment_;
+ }
+
+ inline const bool& options::
+ generate_detach () const
+ {
+ return this->generate_detach_;
+ }
+
+ inline const bool& options::
+ generate_wildcard () const
+ {
+ return this->generate_wildcard_;
+ }
+
+ inline const bool& options::
+ generate_any_type () const
+ {
+ return this->generate_any_type_;
+ }
+
+ inline const NarrowStrings& options::
+ generate_insertion () const
+ {
+ return this->generate_insertion_;
+ }
+
+ inline bool options::
+ generate_insertion_specified () const
+ {
+ return this->generate_insertion_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ generate_extraction () const
+ {
+ return this->generate_extraction_;
+ }
+
+ inline bool options::
+ generate_extraction_specified () const
+ {
+ return this->generate_extraction_specified_;
+ }
+
+ inline const bool& options::
+ generate_forward () const
+ {
+ return this->generate_forward_;
+ }
+
+ inline const bool& options::
+ suppress_parsing () const
+ {
+ return this->suppress_parsing_;
+ }
+
+ inline const bool& options::
+ generate_element_type () const
+ {
+ return this->generate_element_type_;
+ }
+
+ inline const bool& options::
+ generate_element_map () const
+ {
+ return this->generate_element_map_;
+ }
+
+ inline const bool& options::
+ generate_intellisense () const
+ {
+ return this->generate_intellisense_;
+ }
+
+ inline const bool& options::
+ omit_default_attributes () const
+ {
+ return this->omit_default_attributes_;
+ }
+
+ inline const NarrowString& options::
+ type_naming () const
+ {
+ return this->type_naming_;
+ }
+
+ inline bool options::
+ type_naming_specified () const
+ {
+ return this->type_naming_specified_;
+ }
+
+ inline const NarrowString& options::
+ function_naming () const
+ {
+ return this->function_naming_;
+ }
+
+ inline bool options::
+ function_naming_specified () const
+ {
+ return this->function_naming_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ type_regex () const
+ {
+ return this->type_regex_;
+ }
+
+ inline bool options::
+ type_regex_specified () const
+ {
+ return this->type_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ accessor_regex () const
+ {
+ return this->accessor_regex_;
+ }
+
+ inline bool options::
+ accessor_regex_specified () const
+ {
+ return this->accessor_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ one_accessor_regex () const
+ {
+ return this->one_accessor_regex_;
+ }
+
+ inline bool options::
+ one_accessor_regex_specified () const
+ {
+ return this->one_accessor_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ opt_accessor_regex () const
+ {
+ return this->opt_accessor_regex_;
+ }
+
+ inline bool options::
+ opt_accessor_regex_specified () const
+ {
+ return this->opt_accessor_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ seq_accessor_regex () const
+ {
+ return this->seq_accessor_regex_;
+ }
+
+ inline bool options::
+ seq_accessor_regex_specified () const
+ {
+ return this->seq_accessor_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ modifier_regex () const
+ {
+ return this->modifier_regex_;
+ }
+
+ inline bool options::
+ modifier_regex_specified () const
+ {
+ return this->modifier_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ one_modifier_regex () const
+ {
+ return this->one_modifier_regex_;
+ }
+
+ inline bool options::
+ one_modifier_regex_specified () const
+ {
+ return this->one_modifier_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ opt_modifier_regex () const
+ {
+ return this->opt_modifier_regex_;
+ }
+
+ inline bool options::
+ opt_modifier_regex_specified () const
+ {
+ return this->opt_modifier_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ seq_modifier_regex () const
+ {
+ return this->seq_modifier_regex_;
+ }
+
+ inline bool options::
+ seq_modifier_regex_specified () const
+ {
+ return this->seq_modifier_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ parser_regex () const
+ {
+ return this->parser_regex_;
+ }
+
+ inline bool options::
+ parser_regex_specified () const
+ {
+ return this->parser_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ serializer_regex () const
+ {
+ return this->serializer_regex_;
+ }
+
+ inline bool options::
+ serializer_regex_specified () const
+ {
+ return this->serializer_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ const_regex () const
+ {
+ return this->const_regex_;
+ }
+
+ inline bool options::
+ const_regex_specified () const
+ {
+ return this->const_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ enumerator_regex () const
+ {
+ return this->enumerator_regex_;
+ }
+
+ inline bool options::
+ enumerator_regex_specified () const
+ {
+ return this->enumerator_regex_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ element_type_regex () const
+ {
+ return this->element_type_regex_;
+ }
+
+ inline bool options::
+ element_type_regex_specified () const
+ {
+ return this->element_type_regex_specified_;
+ }
+
+ inline const bool& options::
+ name_regex_trace () const
+ {
+ return this->name_regex_trace_;
+ }
+
+ inline const bool& options::
+ root_element_first () const
+ {
+ return this->root_element_first_;
+ }
+
+ inline const bool& options::
+ root_element_last () const
+ {
+ return this->root_element_last_;
+ }
+
+ inline const bool& options::
+ root_element_all () const
+ {
+ return this->root_element_all_;
+ }
+
+ inline const bool& options::
+ root_element_none () const
+ {
+ return this->root_element_none_;
+ }
+
+ inline const NarrowStrings& options::
+ root_element () const
+ {
+ return this->root_element_;
+ }
+
+ inline bool options::
+ root_element_specified () const
+ {
+ return this->root_element_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ custom_type () const
+ {
+ return this->custom_type_;
+ }
+
+ inline bool options::
+ custom_type_specified () const
+ {
+ return this->custom_type_specified_;
+ }
+
+ inline const NarrowStrings& options::
+ custom_type_regex () const
+ {
+ return this->custom_type_regex_;
+ }
+
+ inline bool options::
+ custom_type_regex_specified () const
+ {
+ return this->custom_type_regex_specified_;
+ }
+
+ inline const std::size_t& options::
+ parts () const
+ {
+ return this->parts_;
+ }
+
+ inline bool options::
+ parts_specified () const
+ {
+ return this->parts_specified_;
+ }
+
+ inline const NarrowString& options::
+ parts_suffix () const
+ {
+ return this->parts_suffix_;
+ }
+
+ inline bool options::
+ parts_suffix_specified () const
+ {
+ return this->parts_suffix_specified_;
+ }
+ }
+}
+
+// Begin epilogue.
+//
+//
+// End epilogue.
diff --git a/xsd/pregenerated/xsd/options.cxx b/xsd/pregenerated/xsd/options.cxx
new file mode 100644
index 0000000..3022ec4
--- /dev/null
+++ b/xsd/pregenerated/xsd/options.cxx
@@ -0,0 +1,1297 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+// Begin prologue.
+//
+#include <xsd/options-parser.hxx>
+//
+// End prologue.
+
+#include <xsd/options.hxx>
+
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+#include <utility>
+#include <ostream>
+#include <sstream>
+#include <cstring>
+#include <fstream>
+
+namespace cli
+{
+ // unknown_option
+ //
+ unknown_option::
+ ~unknown_option () noexcept
+ {
+ }
+
+ void unknown_option::
+ print (::std::wostream& os) const
+ {
+ os << "unknown option '" << option ().c_str () << "'";
+ }
+
+ const char* unknown_option::
+ what () const noexcept
+ {
+ return "unknown option";
+ }
+
+ // unknown_argument
+ //
+ unknown_argument::
+ ~unknown_argument () noexcept
+ {
+ }
+
+ void unknown_argument::
+ print (::std::wostream& os) const
+ {
+ os << "unknown argument '" << argument ().c_str () << "'";
+ }
+
+ const char* unknown_argument::
+ what () const noexcept
+ {
+ return "unknown argument";
+ }
+
+ // missing_value
+ //
+ missing_value::
+ ~missing_value () noexcept
+ {
+ }
+
+ void missing_value::
+ print (::std::wostream& os) const
+ {
+ os << "missing value for option '" << option ().c_str () << "'";
+ }
+
+ const char* missing_value::
+ what () const noexcept
+ {
+ return "missing option value";
+ }
+
+ // invalid_value
+ //
+ invalid_value::
+ ~invalid_value () noexcept
+ {
+ }
+
+ void invalid_value::
+ print (::std::wostream& os) const
+ {
+ os << "invalid value '" << value ().c_str () << "' for option '"
+ << option ().c_str () << "'";
+
+ if (!message ().empty ())
+ os << ": " << message ().c_str ();
+ }
+
+ const char* invalid_value::
+ what () const noexcept
+ {
+ return "invalid option value";
+ }
+
+ // eos_reached
+ //
+ void eos_reached::
+ print (::std::wostream& os) const
+ {
+ os << what ();
+ }
+
+ const char* eos_reached::
+ what () const noexcept
+ {
+ return "end of argument stream reached";
+ }
+
+ // file_io_failure
+ //
+ file_io_failure::
+ ~file_io_failure () noexcept
+ {
+ }
+
+ void file_io_failure::
+ print (::std::wostream& os) const
+ {
+ os << "unable to open file '" << file ().c_str () << "' or read failure";
+ }
+
+ const char* file_io_failure::
+ what () const noexcept
+ {
+ return "unable to open file or read failure";
+ }
+
+ // unmatched_quote
+ //
+ unmatched_quote::
+ ~unmatched_quote () noexcept
+ {
+ }
+
+ void unmatched_quote::
+ print (::std::wostream& os) const
+ {
+ os << "unmatched quote in argument '" << argument ().c_str () << "'";
+ }
+
+ const char* unmatched_quote::
+ what () const noexcept
+ {
+ return "unmatched quote";
+ }
+
+ // scanner
+ //
+ scanner::
+ ~scanner ()
+ {
+ }
+
+ // argv_scanner
+ //
+ bool argv_scanner::
+ more ()
+ {
+ return i_ < argc_;
+ }
+
+ const char* argv_scanner::
+ peek ()
+ {
+ if (i_ < argc_)
+ return argv_[i_];
+ else
+ throw eos_reached ();
+ }
+
+ const char* argv_scanner::
+ next ()
+ {
+ if (i_ < argc_)
+ {
+ const char* r (argv_[i_]);
+
+ if (erase_)
+ {
+ for (int i (i_ + 1); i < argc_; ++i)
+ argv_[i - 1] = argv_[i];
+
+ --argc_;
+ argv_[argc_] = 0;
+ }
+ else
+ ++i_;
+
+ ++start_position_;
+ return r;
+ }
+ else
+ throw eos_reached ();
+ }
+
+ void argv_scanner::
+ skip ()
+ {
+ if (i_ < argc_)
+ {
+ ++i_;
+ ++start_position_;
+ }
+ else
+ throw eos_reached ();
+ }
+
+ std::size_t argv_scanner::
+ position ()
+ {
+ return start_position_;
+ }
+
+ // argv_file_scanner
+ //
+ int argv_file_scanner::zero_argc_ = 0;
+ std::string argv_file_scanner::empty_string_;
+
+ bool argv_file_scanner::
+ more ()
+ {
+ if (!args_.empty ())
+ return true;
+
+ while (base::more ())
+ {
+ // See if the next argument is the file option.
+ //
+ const char* a (base::peek ());
+ const option_info* oi = 0;
+ const char* ov = 0;
+
+ if (!skip_)
+ {
+ if ((oi = find (a)) != 0)
+ {
+ base::next ();
+
+ if (!base::more ())
+ throw missing_value (a);
+
+ ov = base::next ();
+ }
+ else if (std::strncmp (a, "-", 1) == 0)
+ {
+ if ((ov = std::strchr (a, '=')) != 0)
+ {
+ std::string o (a, 0, ov - a);
+ if ((oi = find (o.c_str ())) != 0)
+ {
+ base::next ();
+ ++ov;
+ }
+ }
+ }
+ }
+
+ if (oi != 0)
+ {
+ if (oi->search_func != 0)
+ {
+ std::string f (oi->search_func (ov, oi->arg));
+
+ if (!f.empty ())
+ load (f);
+ }
+ else
+ load (ov);
+
+ if (!args_.empty ())
+ return true;
+ }
+ else
+ {
+ if (!skip_)
+ skip_ = (std::strcmp (a, "--") == 0);
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ const char* argv_file_scanner::
+ peek ()
+ {
+ if (!more ())
+ throw eos_reached ();
+
+ return args_.empty () ? base::peek () : args_.front ().value.c_str ();
+ }
+
+ const std::string& argv_file_scanner::
+ peek_file ()
+ {
+ if (!more ())
+ throw eos_reached ();
+
+ return args_.empty () ? empty_string_ : *args_.front ().file;
+ }
+
+ std::size_t argv_file_scanner::
+ peek_line ()
+ {
+ if (!more ())
+ throw eos_reached ();
+
+ return args_.empty () ? 0 : args_.front ().line;
+ }
+
+ const char* argv_file_scanner::
+ next ()
+ {
+ if (!more ())
+ throw eos_reached ();
+
+ if (args_.empty ())
+ return base::next ();
+ else
+ {
+ hold_[i_ == 0 ? ++i_ : --i_].swap (args_.front ().value);
+ args_.pop_front ();
+ ++start_position_;
+ return hold_[i_].c_str ();
+ }
+ }
+
+ void argv_file_scanner::
+ skip ()
+ {
+ if (!more ())
+ throw eos_reached ();
+
+ if (args_.empty ())
+ return base::skip ();
+ else
+ {
+ args_.pop_front ();
+ ++start_position_;
+ }
+ }
+
+ const argv_file_scanner::option_info* argv_file_scanner::
+ find (const char* a) const
+ {
+ for (std::size_t i (0); i < options_count_; ++i)
+ if (std::strcmp (a, options_[i].option) == 0)
+ return &options_[i];
+
+ return 0;
+ }
+
+ std::size_t argv_file_scanner::
+ position ()
+ {
+ return start_position_;
+ }
+
+ void argv_file_scanner::
+ load (const std::string& file)
+ {
+ using namespace std;
+
+ ifstream is (file.c_str ());
+
+ if (!is.is_open ())
+ throw file_io_failure (file);
+
+ files_.push_back (file);
+
+ arg a;
+ a.file = &*files_.rbegin ();
+
+ for (a.line = 1; !is.eof (); ++a.line)
+ {
+ string line;
+ getline (is, line);
+
+ if (is.fail () && !is.eof ())
+ throw file_io_failure (file);
+
+ string::size_type n (line.size ());
+
+ // Trim the line from leading and trailing whitespaces.
+ //
+ if (n != 0)
+ {
+ const char* f (line.c_str ());
+ const char* l (f + n);
+
+ const char* of (f);
+ while (f < l && (*f == ' ' || *f == '\t' || *f == '\r'))
+ ++f;
+
+ --l;
+
+ const char* ol (l);
+ while (l > f && (*l == ' ' || *l == '\t' || *l == '\r'))
+ --l;
+
+ if (f != of || l != ol)
+ line = f <= l ? string (f, l - f + 1) : string ();
+ }
+
+ // Ignore empty lines, those that start with #.
+ //
+ if (line.empty () || line[0] == '#')
+ continue;
+
+ string::size_type p (string::npos);
+ if (line.compare (0, 1, "-") == 0)
+ {
+ p = line.find (' ');
+
+ string::size_type q (line.find ('='));
+ if (q != string::npos && q < p)
+ p = q;
+ }
+
+ string s1;
+ if (p != string::npos)
+ {
+ s1.assign (line, 0, p);
+
+ // Skip leading whitespaces in the argument.
+ //
+ if (line[p] == '=')
+ ++p;
+ else
+ {
+ n = line.size ();
+ for (++p; p < n; ++p)
+ {
+ char c (line[p]);
+ if (c != ' ' && c != '\t' && c != '\r')
+ break;
+ }
+ }
+ }
+ else if (!skip_)
+ skip_ = (line == "--");
+
+ string s2 (line, p != string::npos ? p : 0);
+
+ // If the string (which is an option value or argument) is
+ // wrapped in quotes, remove them.
+ //
+ n = s2.size ();
+ char cf (s2[0]), cl (s2[n - 1]);
+
+ if (cf == '"' || cf == '\'' || cl == '"' || cl == '\'')
+ {
+ if (n == 1 || cf != cl)
+ throw unmatched_quote (s2);
+
+ s2 = string (s2, 1, n - 2);
+ }
+
+ if (!s1.empty ())
+ {
+ // See if this is another file option.
+ //
+ const option_info* oi;
+ if (!skip_ && (oi = find (s1.c_str ())))
+ {
+ if (s2.empty ())
+ throw missing_value (oi->option);
+
+ if (oi->search_func != 0)
+ {
+ string f (oi->search_func (s2.c_str (), oi->arg));
+ if (!f.empty ())
+ load (f);
+ }
+ else
+ {
+ // If the path of the file being parsed is not simple and the
+ // path of the file that needs to be loaded is relative, then
+ // complete the latter using the former as a base.
+ //
+#ifndef _WIN32
+ string::size_type p (file.find_last_of ('/'));
+ bool c (p != string::npos && s2[0] != '/');
+#else
+ string::size_type p (file.find_last_of ("/\\"));
+ bool c (p != string::npos && s2[1] != ':');
+#endif
+ if (c)
+ s2.insert (0, file, 0, p + 1);
+
+ load (s2);
+ }
+
+ continue;
+ }
+
+ a.value = s1;
+ args_.push_back (a);
+ }
+
+ a.value = s2;
+ args_.push_back (a);
+ }
+ }
+
+ template <typename X>
+ struct parser
+ {
+ static void
+ parse (X& x, bool& xs, scanner& s)
+ {
+ using namespace std;
+
+ const char* o (s.next ());
+ if (s.more ())
+ {
+ string v (s.next ());
+ istringstream is (v);
+ if (!(is >> x && is.peek () == istringstream::traits_type::eof ()))
+ throw invalid_value (o, v);
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <>
+ struct parser<bool>
+ {
+ static void
+ parse (bool& x, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ const char* v (s.next ());
+
+ if (std::strcmp (v, "1") == 0 ||
+ std::strcmp (v, "true") == 0 ||
+ std::strcmp (v, "TRUE") == 0 ||
+ std::strcmp (v, "True") == 0)
+ x = true;
+ else if (std::strcmp (v, "0") == 0 ||
+ std::strcmp (v, "false") == 0 ||
+ std::strcmp (v, "FALSE") == 0 ||
+ std::strcmp (v, "False") == 0)
+ x = false;
+ else
+ throw invalid_value (o, v);
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <>
+ struct parser<std::string>
+ {
+ static void
+ parse (std::string& x, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ x = s.next ();
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename X>
+ struct parser<std::pair<X, std::size_t> >
+ {
+ static void
+ parse (std::pair<X, std::size_t>& x, bool& xs, scanner& s)
+ {
+ x.second = s.position ();
+ parser<X>::parse (x.first, xs, s);
+ }
+ };
+
+ template <typename X>
+ struct parser<std::vector<X> >
+ {
+ static void
+ parse (std::vector<X>& c, bool& xs, scanner& s)
+ {
+ X x;
+ bool dummy;
+ parser<X>::parse (x, dummy, s);
+ c.push_back (x);
+ xs = true;
+ }
+ };
+
+ template <typename X, typename C>
+ struct parser<std::set<X, C> >
+ {
+ static void
+ parse (std::set<X, C>& c, bool& xs, scanner& s)
+ {
+ X x;
+ bool dummy;
+ parser<X>::parse (x, dummy, s);
+ c.insert (x);
+ xs = true;
+ }
+ };
+
+ template <typename K, typename V, typename C>
+ struct parser<std::map<K, V, C> >
+ {
+ static void
+ parse (std::map<K, V, C>& m, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ std::size_t pos (s.position ());
+ std::string ov (s.next ());
+ std::string::size_type p = ov.find ('=');
+
+ K k = K ();
+ V v = V ();
+ std::string kstr (ov, 0, p);
+ std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ()));
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (o),
+ 0
+ };
+
+ bool dummy;
+ if (!kstr.empty ())
+ {
+ av[1] = const_cast<char*> (kstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<K>::parse (k, dummy, s);
+ }
+
+ if (!vstr.empty ())
+ {
+ av[1] = const_cast<char*> (vstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<V>::parse (v, dummy, s);
+ }
+
+ m[k] = v;
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename K, typename V, typename C>
+ struct parser<std::multimap<K, V, C> >
+ {
+ static void
+ parse (std::multimap<K, V, C>& m, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ std::size_t pos (s.position ());
+ std::string ov (s.next ());
+ std::string::size_type p = ov.find ('=');
+
+ K k = K ();
+ V v = V ();
+ std::string kstr (ov, 0, p);
+ std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ()));
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (o),
+ 0
+ };
+
+ bool dummy;
+ if (!kstr.empty ())
+ {
+ av[1] = const_cast<char*> (kstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<K>::parse (k, dummy, s);
+ }
+
+ if (!vstr.empty ())
+ {
+ av[1] = const_cast<char*> (vstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<V>::parse (v, dummy, s);
+ }
+
+ m.insert (typename std::multimap<K, V, C>::value_type (k, v));
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename X, typename T, T X::*M>
+ void
+ thunk (X& x, scanner& s)
+ {
+ parser<T>::parse (x.*M, s);
+ }
+
+ template <typename X, bool X::*M>
+ void
+ thunk (X& x, scanner& s)
+ {
+ s.next ();
+ x.*M = true;
+ }
+
+ template <typename X, typename T, T X::*M, bool X::*S>
+ void
+ thunk (X& x, scanner& s)
+ {
+ parser<T>::parse (x.*M, x.*S, s);
+ }
+}
+
+#include <map>
+
+// help_options
+//
+
+help_options::
+help_options ()
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ proprietary_license_ ()
+{
+}
+
+help_options::
+help_options (int& argc,
+ char** argv,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ proprietary_license_ ()
+{
+ ::cli::argv_scanner s (argc, argv, erase);
+ _parse (s, opt, arg);
+}
+
+help_options::
+help_options (int start,
+ int& argc,
+ char** argv,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ proprietary_license_ ()
+{
+ ::cli::argv_scanner s (start, argc, argv, erase);
+ _parse (s, opt, arg);
+}
+
+help_options::
+help_options (int& argc,
+ char** argv,
+ int& end,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ proprietary_license_ ()
+{
+ ::cli::argv_scanner s (argc, argv, erase);
+ _parse (s, opt, arg);
+ end = s.end ();
+}
+
+help_options::
+help_options (int start,
+ int& argc,
+ char** argv,
+ int& end,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ proprietary_license_ ()
+{
+ ::cli::argv_scanner s (start, argc, argv, erase);
+ _parse (s, opt, arg);
+ end = s.end ();
+}
+
+help_options::
+help_options (::cli::scanner& s,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ proprietary_license_ ()
+{
+ _parse (s, opt, arg);
+}
+
+::cli::usage_para help_options::
+print_usage (::std::wostream& os, ::cli::usage_para p)
+{
+ CLI_POTENTIALLY_UNUSED (os);
+
+ return p;
+}
+
+typedef
+std::map<std::string, void (*) (help_options&, ::cli::scanner&)>
+_cli_help_options_map;
+
+static _cli_help_options_map _cli_help_options_map_;
+
+struct _cli_help_options_map_init
+{
+ _cli_help_options_map_init ()
+ {
+ _cli_help_options_map_["--build2-metadata"] =
+ &::cli::thunk< help_options, std::uint64_t, &help_options::build2_metadata_,
+ &help_options::build2_metadata_specified_ >;
+ _cli_help_options_map_["--help"] =
+ &::cli::thunk< help_options, &help_options::help_ >;
+ _cli_help_options_map_["--version"] =
+ &::cli::thunk< help_options, &help_options::version_ >;
+ _cli_help_options_map_["--proprietary-license"] =
+ &::cli::thunk< help_options, &help_options::proprietary_license_ >;
+ }
+};
+
+static _cli_help_options_map_init _cli_help_options_map_init_;
+
+bool help_options::
+_parse (const char* o, ::cli::scanner& s)
+{
+ _cli_help_options_map::const_iterator i (_cli_help_options_map_.find (o));
+
+ if (i != _cli_help_options_map_.end ())
+ {
+ (*(i->second)) (*this, s);
+ return true;
+ }
+
+ return false;
+}
+
+bool help_options::
+_parse (::cli::scanner& s,
+ ::cli::unknown_mode opt_mode,
+ ::cli::unknown_mode arg_mode)
+{
+ // Can't skip combined flags (--no-combined-flags).
+ //
+ assert (opt_mode != ::cli::unknown_mode::skip);
+
+ bool r = false;
+ bool opt = true;
+
+ while (s.more ())
+ {
+ const char* o = s.peek ();
+
+ if (std::strcmp (o, "--") == 0)
+ {
+ opt = false;
+ s.skip ();
+ r = true;
+ continue;
+ }
+
+ if (opt)
+ {
+ if (_parse (o, s))
+ {
+ r = true;
+ continue;
+ }
+
+ if (std::strncmp (o, "-", 1) == 0 && o[1] != '\0')
+ {
+ // Handle combined option values.
+ //
+ std::string co;
+ if (const char* v = std::strchr (o, '='))
+ {
+ co.assign (o, 0, v - o);
+ ++v;
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (co.c_str ()),
+ const_cast<char*> (v)
+ };
+
+ ::cli::argv_scanner ns (0, ac, av);
+
+ if (_parse (co.c_str (), ns))
+ {
+ // Parsed the option but not its value?
+ //
+ if (ns.end () != 2)
+ throw ::cli::invalid_value (co, v);
+
+ s.next ();
+ r = true;
+ continue;
+ }
+ else
+ {
+ // Set the unknown option and fall through.
+ //
+ o = co.c_str ();
+ }
+ }
+
+ // Handle combined flags.
+ //
+ char cf[3];
+ {
+ const char* p = o + 1;
+ for (; *p != '\0'; ++p)
+ {
+ if (!((*p >= 'a' && *p <= 'z') ||
+ (*p >= 'A' && *p <= 'Z') ||
+ (*p >= '0' && *p <= '9')))
+ break;
+ }
+
+ if (*p == '\0')
+ {
+ for (p = o + 1; *p != '\0'; ++p)
+ {
+ std::strcpy (cf, "-");
+ cf[1] = *p;
+ cf[2] = '\0';
+
+ int ac (1);
+ char* av[] =
+ {
+ cf
+ };
+
+ ::cli::argv_scanner ns (0, ac, av);
+
+ if (!_parse (cf, ns))
+ break;
+ }
+
+ if (*p == '\0')
+ {
+ // All handled.
+ //
+ s.next ();
+ r = true;
+ continue;
+ }
+ else
+ {
+ // Set the unknown option and fall through.
+ //
+ o = cf;
+ }
+ }
+ }
+
+ switch (opt_mode)
+ {
+ case ::cli::unknown_mode::skip:
+ {
+ s.skip ();
+ r = true;
+ continue;
+ }
+ case ::cli::unknown_mode::stop:
+ {
+ break;
+ }
+ case ::cli::unknown_mode::fail:
+ {
+ throw ::cli::unknown_option (o);
+ }
+ }
+
+ break;
+ }
+ }
+
+ switch (arg_mode)
+ {
+ case ::cli::unknown_mode::skip:
+ {
+ s.skip ();
+ r = true;
+ continue;
+ }
+ case ::cli::unknown_mode::stop:
+ {
+ break;
+ }
+ case ::cli::unknown_mode::fail:
+ {
+ throw ::cli::unknown_argument (o);
+ }
+ }
+
+ break;
+ }
+
+ return r;
+}
+
+// options
+//
+
+options::
+options ()
+: disable_warning_ (),
+ disable_warning_specified_ (false),
+ options_file_ (),
+ options_file_specified_ (false),
+ show_sloc_ (),
+ sloc_limit_ (),
+ sloc_limit_specified_ (false),
+ proprietary_license_ (),
+ custom_literals_ (),
+ custom_literals_specified_ (false),
+ preserve_anonymous_ (),
+ show_anonymous_ (),
+ anonymous_regex_ (),
+ anonymous_regex_specified_ (false),
+ anonymous_regex_trace_ (),
+ morph_anonymous_ (),
+ location_map_ (),
+ location_map_specified_ (false),
+ location_regex_ (),
+ location_regex_specified_ (false),
+ location_regex_trace_ (),
+ file_per_type_ (),
+ type_file_regex_ (),
+ type_file_regex_specified_ (false),
+ type_file_regex_trace_ (),
+ schema_file_regex_ (),
+ schema_file_regex_specified_ (false),
+ schema_file_regex_trace_ (),
+ fat_type_file_ (),
+ file_list_ (),
+ file_list_specified_ (false),
+ file_list_only_ (),
+ file_list_prologue_ (),
+ file_list_prologue_specified_ (false),
+ file_list_epilogue_ (),
+ file_list_epilogue_specified_ (false),
+ file_list_delim_ ("\n"),
+ file_list_delim_specified_ (false),
+ disable_multi_import_ (),
+ disable_full_check_ ()
+{
+}
+
+::cli::usage_para options::
+print_usage (::std::wostream& os, ::cli::usage_para p)
+{
+ CLI_POTENTIALLY_UNUSED (os);
+
+ if (p == ::cli::usage_para::text)
+ os << ::std::endl;
+
+ os << "--disable-warning <warn> Disable printing warning with id <warn>." << ::std::endl;
+
+ os << "--options-file <file> Read additional options from <file>." << ::std::endl;
+
+ os << "--show-sloc Show the number of generated physical source lines" << ::std::endl
+ << " of code (SLOC)." << ::std::endl;
+
+ os << "--sloc-limit <num> Check that the number of generated physical source" << ::std::endl
+ << " lines of code (SLOC) does not exceed <num>." << ::std::endl;
+
+ os << "--proprietary-license Indicate that the generated code is licensed under" << ::std::endl
+ << " a proprietary license instead of the GPL." << ::std::endl;
+
+ os << "--custom-literals <file> Load custom XML string to C++ literal mappings" << ::std::endl
+ << " from <file>." << ::std::endl;
+
+ os << "--preserve-anonymous Preserve anonymous types." << ::std::endl;
+
+ os << "--show-anonymous Show elements and attributes that are of anonymous" << ::std::endl
+ << " types." << ::std::endl;
+
+ os << "--anonymous-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to derive names for anonymous types from the" << ::std::endl
+ << " enclosing attributes/elements." << ::std::endl;
+
+ os << "--anonymous-regex-trace Trace the process of applying regular expressions" << ::std::endl
+ << " specified with the --anonymous-regex option." << ::std::endl;
+
+ os << "--location-map <ol>=<nl> Map the original schema location <ol> that is" << ::std::endl
+ << " specified in the XML Schema include or import" << ::std::endl
+ << " elements to new schema location <nl>." << ::std::endl;
+
+ os << "--location-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to map schema locations that are specified in" << ::std::endl
+ << " the XML Schema include or import elements." << ::std::endl;
+
+ os << "--location-regex-trace Trace the process of applying regular expressions" << ::std::endl
+ << " specified with the --location-regex option." << ::std::endl;
+
+ os << "--file-per-type Generate a separate set of C++ files for each type" << ::std::endl
+ << " defined in XML Schema." << ::std::endl;
+
+ os << "--type-file-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate type names to file names when" << ::std::endl
+ << " the --file-per-type option is specified." << ::std::endl;
+
+ os << "--type-file-regex-trace Trace the process of applying regular expressions" << ::std::endl
+ << " specified with the --type-file-regex option." << ::std::endl;
+
+ os << "--schema-file-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to translate schema file names when the" << ::std::endl
+ << " --file-per-type option is specified." << ::std::endl;
+
+ os << "--schema-file-regex-trace Trace the process of applying regular expressions" << ::std::endl
+ << " specified with the --schema-file-regex option." << ::std::endl;
+
+ os << "--fat-type-file Generate code corresponding to global elements" << ::std::endl
+ << " into type files instead of schema files when the" << ::std::endl
+ << " --type-file-regex option is specified." << ::std::endl;
+
+ os << "--file-list <file> Write a list of generated C++ files to <file> or" << ::std::endl
+ << " to stdout if <file> is -." << ::std::endl;
+
+ os << "--file-list-only Only write the list of C++ files that would be" << ::std::endl
+ << " generated without actually generating them." << ::std::endl;
+
+ os << "--file-list-prologue <text> Insert <text> at the beginning of the file list." << ::std::endl;
+
+ os << "--file-list-epilogue <text> Insert <text> at the end of the file list." << ::std::endl;
+
+ os << "--file-list-delim <text> Delimit file names written to the file list with" << ::std::endl
+ << " <text> instead of new lines." << ::std::endl;
+
+ p = ::cli::usage_para::option;
+
+ return p;
+}
+
+typedef
+std::map<std::string, void (*) (options&, ::cli::scanner&)>
+_cli_options_map;
+
+static _cli_options_map _cli_options_map_;
+
+struct _cli_options_map_init
+{
+ _cli_options_map_init ()
+ {
+ _cli_options_map_["--disable-warning"] =
+ &::cli::thunk< options, NarrowStrings, &options::disable_warning_,
+ &options::disable_warning_specified_ >;
+ _cli_options_map_["--options-file"] =
+ &::cli::thunk< options, std::string, &options::options_file_,
+ &options::options_file_specified_ >;
+ _cli_options_map_["--show-sloc"] =
+ &::cli::thunk< options, &options::show_sloc_ >;
+ _cli_options_map_["--sloc-limit"] =
+ &::cli::thunk< options, std::size_t, &options::sloc_limit_,
+ &options::sloc_limit_specified_ >;
+ _cli_options_map_["--proprietary-license"] =
+ &::cli::thunk< options, &options::proprietary_license_ >;
+ _cli_options_map_["--custom-literals"] =
+ &::cli::thunk< options, NarrowString, &options::custom_literals_,
+ &options::custom_literals_specified_ >;
+ _cli_options_map_["--preserve-anonymous"] =
+ &::cli::thunk< options, &options::preserve_anonymous_ >;
+ _cli_options_map_["--show-anonymous"] =
+ &::cli::thunk< options, &options::show_anonymous_ >;
+ _cli_options_map_["--anonymous-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::anonymous_regex_,
+ &options::anonymous_regex_specified_ >;
+ _cli_options_map_["--anonymous-regex-trace"] =
+ &::cli::thunk< options, &options::anonymous_regex_trace_ >;
+ _cli_options_map_["--morph-anonymous"] =
+ &::cli::thunk< options, &options::morph_anonymous_ >;
+ _cli_options_map_["--location-map"] =
+ &::cli::thunk< options, NarrowStrings, &options::location_map_,
+ &options::location_map_specified_ >;
+ _cli_options_map_["--location-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::location_regex_,
+ &options::location_regex_specified_ >;
+ _cli_options_map_["--location-regex-trace"] =
+ &::cli::thunk< options, &options::location_regex_trace_ >;
+ _cli_options_map_["--file-per-type"] =
+ &::cli::thunk< options, &options::file_per_type_ >;
+ _cli_options_map_["--type-file-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::type_file_regex_,
+ &options::type_file_regex_specified_ >;
+ _cli_options_map_["--type-file-regex-trace"] =
+ &::cli::thunk< options, &options::type_file_regex_trace_ >;
+ _cli_options_map_["--schema-file-regex"] =
+ &::cli::thunk< options, NarrowStrings, &options::schema_file_regex_,
+ &options::schema_file_regex_specified_ >;
+ _cli_options_map_["--schema-file-regex-trace"] =
+ &::cli::thunk< options, &options::schema_file_regex_trace_ >;
+ _cli_options_map_["--fat-type-file"] =
+ &::cli::thunk< options, &options::fat_type_file_ >;
+ _cli_options_map_["--file-list"] =
+ &::cli::thunk< options, NarrowString, &options::file_list_,
+ &options::file_list_specified_ >;
+ _cli_options_map_["--file-list-only"] =
+ &::cli::thunk< options, &options::file_list_only_ >;
+ _cli_options_map_["--file-list-prologue"] =
+ &::cli::thunk< options, NarrowString, &options::file_list_prologue_,
+ &options::file_list_prologue_specified_ >;
+ _cli_options_map_["--file-list-epilogue"] =
+ &::cli::thunk< options, NarrowString, &options::file_list_epilogue_,
+ &options::file_list_epilogue_specified_ >;
+ _cli_options_map_["--file-list-delim"] =
+ &::cli::thunk< options, NarrowString, &options::file_list_delim_,
+ &options::file_list_delim_specified_ >;
+ _cli_options_map_["--disable-multi-import"] =
+ &::cli::thunk< options, &options::disable_multi_import_ >;
+ _cli_options_map_["--disable-full-check"] =
+ &::cli::thunk< options, &options::disable_full_check_ >;
+ }
+};
+
+static _cli_options_map_init _cli_options_map_init_;
+
+bool options::
+_parse (const char* o, ::cli::scanner& s)
+{
+ _cli_options_map::const_iterator i (_cli_options_map_.find (o));
+
+ if (i != _cli_options_map_.end ())
+ {
+ (*(i->second)) (*this, s);
+ return true;
+ }
+
+ return false;
+}
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
diff --git a/xsd/pregenerated/xsd/options.hxx b/xsd/pregenerated/xsd/options.hxx
new file mode 100644
index 0000000..0f4383c
--- /dev/null
+++ b/xsd/pregenerated/xsd/options.hxx
@@ -0,0 +1,702 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+#ifndef XSD_OPTIONS_HXX
+#define XSD_OPTIONS_HXX
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+#include <list>
+#include <deque>
+#include <iosfwd>
+#include <string>
+#include <cstddef>
+#include <exception>
+
+#ifndef CLI_POTENTIALLY_UNUSED
+# if defined(_MSC_VER) || defined(__xlC__)
+# define CLI_POTENTIALLY_UNUSED(x) (void*)&x
+# else
+# define CLI_POTENTIALLY_UNUSED(x) (void)x
+# endif
+#endif
+
+namespace cli
+{
+ class usage_para
+ {
+ public:
+ enum value
+ {
+ none,
+ text,
+ option
+ };
+
+ usage_para (value);
+
+ operator value () const
+ {
+ return v_;
+ }
+
+ private:
+ value v_;
+ };
+
+ class unknown_mode
+ {
+ public:
+ enum value
+ {
+ skip,
+ stop,
+ fail
+ };
+
+ unknown_mode (value);
+
+ operator value () const
+ {
+ return v_;
+ }
+
+ private:
+ value v_;
+ };
+
+ // Exceptions.
+ //
+
+ class exception: public std::exception
+ {
+ public:
+ virtual void
+ print (::std::wostream&) const = 0;
+ };
+
+ ::std::wostream&
+ operator<< (::std::wostream&, const exception&);
+
+ class unknown_option: public exception
+ {
+ public:
+ virtual
+ ~unknown_option () noexcept;
+
+ unknown_option (const std::string& option);
+
+ const std::string&
+ option () const;
+
+ virtual void
+ print (::std::wostream&) const;
+
+ virtual const char*
+ what () const noexcept;
+
+ private:
+ std::string option_;
+ };
+
+ class unknown_argument: public exception
+ {
+ public:
+ virtual
+ ~unknown_argument () noexcept;
+
+ unknown_argument (const std::string& argument);
+
+ const std::string&
+ argument () const;
+
+ virtual void
+ print (::std::wostream&) const;
+
+ virtual const char*
+ what () const noexcept;
+
+ private:
+ std::string argument_;
+ };
+
+ class missing_value: public exception
+ {
+ public:
+ virtual
+ ~missing_value () noexcept;
+
+ missing_value (const std::string& option);
+
+ const std::string&
+ option () const;
+
+ virtual void
+ print (::std::wostream&) const;
+
+ virtual const char*
+ what () const noexcept;
+
+ private:
+ std::string option_;
+ };
+
+ class invalid_value: public exception
+ {
+ public:
+ virtual
+ ~invalid_value () noexcept;
+
+ invalid_value (const std::string& option,
+ const std::string& value,
+ const std::string& message = std::string ());
+
+ const std::string&
+ option () const;
+
+ const std::string&
+ value () const;
+
+ const std::string&
+ message () const;
+
+ virtual void
+ print (::std::wostream&) const;
+
+ virtual const char*
+ what () const noexcept;
+
+ private:
+ std::string option_;
+ std::string value_;
+ std::string message_;
+ };
+
+ class eos_reached: public exception
+ {
+ public:
+ virtual void
+ print (::std::wostream&) const;
+
+ virtual const char*
+ what () const noexcept;
+ };
+
+ class file_io_failure: public exception
+ {
+ public:
+ virtual
+ ~file_io_failure () noexcept;
+
+ file_io_failure (const std::string& file);
+
+ const std::string&
+ file () const;
+
+ virtual void
+ print (::std::wostream&) const;
+
+ virtual const char*
+ what () const noexcept;
+
+ private:
+ std::string file_;
+ };
+
+ class unmatched_quote: public exception
+ {
+ public:
+ virtual
+ ~unmatched_quote () noexcept;
+
+ unmatched_quote (const std::string& argument);
+
+ const std::string&
+ argument () const;
+
+ virtual void
+ print (::std::wostream&) const;
+
+ virtual const char*
+ what () const noexcept;
+
+ private:
+ std::string argument_;
+ };
+
+ // Command line argument scanner interface.
+ //
+ // The values returned by next() are guaranteed to be valid
+ // for the two previous arguments up until a call to a third
+ // peek() or next().
+ //
+ // The position() function returns a monotonically-increasing
+ // number which, if stored, can later be used to determine the
+ // relative position of the argument returned by the following
+ // call to next(). Note that if multiple scanners are used to
+ // extract arguments from multiple sources, then the end
+ // position of the previous scanner should be used as the
+ // start position of the next.
+ //
+ class scanner
+ {
+ public:
+ virtual
+ ~scanner ();
+
+ virtual bool
+ more () = 0;
+
+ virtual const char*
+ peek () = 0;
+
+ virtual const char*
+ next () = 0;
+
+ virtual void
+ skip () = 0;
+
+ virtual std::size_t
+ position () = 0;
+ };
+
+ class argv_scanner: public scanner
+ {
+ public:
+ argv_scanner (int& argc,
+ char** argv,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ argv_scanner (int start,
+ int& argc,
+ char** argv,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ int
+ end () const;
+
+ virtual bool
+ more ();
+
+ virtual const char*
+ peek ();
+
+ virtual const char*
+ next ();
+
+ virtual void
+ skip ();
+
+ virtual std::size_t
+ position ();
+
+ protected:
+ std::size_t start_position_;
+ int i_;
+ int& argc_;
+ char** argv_;
+ bool erase_;
+ };
+
+ class argv_file_scanner: public argv_scanner
+ {
+ public:
+ argv_file_scanner (int& argc,
+ char** argv,
+ const std::string& option,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ argv_file_scanner (int start,
+ int& argc,
+ char** argv,
+ const std::string& option,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ argv_file_scanner (const std::string& file,
+ const std::string& option,
+ std::size_t start_position = 0);
+
+ struct option_info
+ {
+ // If search_func is not NULL, it is called, with the arg
+ // value as the second argument, to locate the options file.
+ // If it returns an empty string, then the file is ignored.
+ //
+ const char* option;
+ std::string (*search_func) (const char*, void* arg);
+ void* arg;
+ };
+
+ argv_file_scanner (int& argc,
+ char** argv,
+ const option_info* options,
+ std::size_t options_count,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ argv_file_scanner (int start,
+ int& argc,
+ char** argv,
+ const option_info* options,
+ std::size_t options_count,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ argv_file_scanner (const std::string& file,
+ const option_info* options = 0,
+ std::size_t options_count = 0,
+ std::size_t start_position = 0);
+
+ virtual bool
+ more ();
+
+ virtual const char*
+ peek ();
+
+ virtual const char*
+ next ();
+
+ virtual void
+ skip ();
+
+ virtual std::size_t
+ position ();
+
+ // Return the file path if the peeked at argument came from a file and
+ // the empty string otherwise. The reference is guaranteed to be valid
+ // till the end of the scanner lifetime.
+ //
+ const std::string&
+ peek_file ();
+
+ // Return the 1-based line number if the peeked at argument came from
+ // a file and zero otherwise.
+ //
+ std::size_t
+ peek_line ();
+
+ private:
+ const option_info*
+ find (const char*) const;
+
+ void
+ load (const std::string& file);
+
+ typedef argv_scanner base;
+
+ const std::string option_;
+ option_info option_info_;
+ const option_info* options_;
+ std::size_t options_count_;
+
+ struct arg
+ {
+ std::string value;
+ const std::string* file;
+ std::size_t line;
+ };
+
+ std::deque<arg> args_;
+ std::list<std::string> files_;
+
+ // Circular buffer of two arguments.
+ //
+ std::string hold_[2];
+ std::size_t i_;
+
+ bool skip_;
+
+ static int zero_argc_;
+ static std::string empty_string_;
+ };
+
+ template <typename X>
+ struct parser;
+}
+
+#include <cstddef>
+
+#include <cstdint>
+
+#include <xsd/types.hxx>
+
+class help_options
+{
+ public:
+ help_options ();
+
+ help_options (int& argc,
+ char** argv,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ help_options (int start,
+ int& argc,
+ char** argv,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ help_options (int& argc,
+ char** argv,
+ int& end,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ help_options (int start,
+ int& argc,
+ char** argv,
+ int& end,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ help_options (::cli::scanner&,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ // Option accessors.
+ //
+ const std::uint64_t&
+ build2_metadata () const;
+
+ bool
+ build2_metadata_specified () const;
+
+ const bool&
+ help () const;
+
+ const bool&
+ version () const;
+
+ const bool&
+ proprietary_license () const;
+
+ // Print usage information.
+ //
+ static ::cli::usage_para
+ print_usage (::std::wostream&,
+ ::cli::usage_para = ::cli::usage_para::none);
+
+ // Implementation details.
+ //
+ protected:
+ bool
+ _parse (const char*, ::cli::scanner&);
+
+ private:
+ bool
+ _parse (::cli::scanner&,
+ ::cli::unknown_mode option,
+ ::cli::unknown_mode argument);
+
+ public:
+ std::uint64_t build2_metadata_;
+ bool build2_metadata_specified_;
+ bool help_;
+ bool version_;
+ bool proprietary_license_;
+};
+
+class options
+{
+ public:
+ // Option accessors.
+ //
+ const NarrowStrings&
+ disable_warning () const;
+
+ bool
+ disable_warning_specified () const;
+
+ const std::string&
+ options_file () const;
+
+ bool
+ options_file_specified () const;
+
+ const bool&
+ show_sloc () const;
+
+ const std::size_t&
+ sloc_limit () const;
+
+ bool
+ sloc_limit_specified () const;
+
+ const bool&
+ proprietary_license () const;
+
+ const NarrowString&
+ custom_literals () const;
+
+ bool
+ custom_literals_specified () const;
+
+ const bool&
+ preserve_anonymous () const;
+
+ const bool&
+ show_anonymous () const;
+
+ const NarrowStrings&
+ anonymous_regex () const;
+
+ bool
+ anonymous_regex_specified () const;
+
+ const bool&
+ anonymous_regex_trace () const;
+
+ const bool&
+ morph_anonymous () const;
+
+ const NarrowStrings&
+ location_map () const;
+
+ bool
+ location_map_specified () const;
+
+ const NarrowStrings&
+ location_regex () const;
+
+ bool
+ location_regex_specified () const;
+
+ const bool&
+ location_regex_trace () const;
+
+ const bool&
+ file_per_type () const;
+
+ const NarrowStrings&
+ type_file_regex () const;
+
+ bool
+ type_file_regex_specified () const;
+
+ const bool&
+ type_file_regex_trace () const;
+
+ const NarrowStrings&
+ schema_file_regex () const;
+
+ bool
+ schema_file_regex_specified () const;
+
+ const bool&
+ schema_file_regex_trace () const;
+
+ const bool&
+ fat_type_file () const;
+
+ const NarrowString&
+ file_list () const;
+
+ bool
+ file_list_specified () const;
+
+ const bool&
+ file_list_only () const;
+
+ const NarrowString&
+ file_list_prologue () const;
+
+ bool
+ file_list_prologue_specified () const;
+
+ const NarrowString&
+ file_list_epilogue () const;
+
+ bool
+ file_list_epilogue_specified () const;
+
+ const NarrowString&
+ file_list_delim () const;
+
+ bool
+ file_list_delim_specified () const;
+
+ const bool&
+ disable_multi_import () const;
+
+ const bool&
+ disable_full_check () const;
+
+ // Print usage information.
+ //
+ static ::cli::usage_para
+ print_usage (::std::wostream&,
+ ::cli::usage_para = ::cli::usage_para::none);
+
+ // Implementation details.
+ //
+ protected:
+ options ();
+
+ bool
+ _parse (const char*, ::cli::scanner&);
+
+ public:
+ NarrowStrings disable_warning_;
+ bool disable_warning_specified_;
+ std::string options_file_;
+ bool options_file_specified_;
+ bool show_sloc_;
+ std::size_t sloc_limit_;
+ bool sloc_limit_specified_;
+ bool proprietary_license_;
+ NarrowString custom_literals_;
+ bool custom_literals_specified_;
+ bool preserve_anonymous_;
+ bool show_anonymous_;
+ NarrowStrings anonymous_regex_;
+ bool anonymous_regex_specified_;
+ bool anonymous_regex_trace_;
+ bool morph_anonymous_;
+ NarrowStrings location_map_;
+ bool location_map_specified_;
+ NarrowStrings location_regex_;
+ bool location_regex_specified_;
+ bool location_regex_trace_;
+ bool file_per_type_;
+ NarrowStrings type_file_regex_;
+ bool type_file_regex_specified_;
+ bool type_file_regex_trace_;
+ NarrowStrings schema_file_regex_;
+ bool schema_file_regex_specified_;
+ bool schema_file_regex_trace_;
+ bool fat_type_file_;
+ NarrowString file_list_;
+ bool file_list_specified_;
+ bool file_list_only_;
+ NarrowString file_list_prologue_;
+ bool file_list_prologue_specified_;
+ NarrowString file_list_epilogue_;
+ bool file_list_epilogue_specified_;
+ NarrowString file_list_delim_;
+ bool file_list_delim_specified_;
+ bool disable_multi_import_;
+ bool disable_full_check_;
+};
+
+#include <xsd/options.ixx>
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
+#endif // XSD_OPTIONS_HXX
diff --git a/xsd/pregenerated/xsd/options.ixx b/xsd/pregenerated/xsd/options.ixx
new file mode 100644
index 0000000..d87e59c
--- /dev/null
+++ b/xsd/pregenerated/xsd/options.ixx
@@ -0,0 +1,555 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+#include <cassert>
+
+namespace cli
+{
+ // usage_para
+ //
+ inline usage_para::
+ usage_para (value v)
+ : v_ (v)
+ {
+ }
+
+ // unknown_mode
+ //
+ inline unknown_mode::
+ unknown_mode (value v)
+ : v_ (v)
+ {
+ }
+
+ // exception
+ //
+ inline ::std::wostream&
+ operator<< (::std::wostream& os, const exception& e)
+ {
+ e.print (os);
+ return os;
+ }
+
+ // unknown_option
+ //
+ inline unknown_option::
+ unknown_option (const std::string& option)
+ : option_ (option)
+ {
+ }
+
+ inline const std::string& unknown_option::
+ option () const
+ {
+ return option_;
+ }
+
+ // unknown_argument
+ //
+ inline unknown_argument::
+ unknown_argument (const std::string& argument)
+ : argument_ (argument)
+ {
+ }
+
+ inline const std::string& unknown_argument::
+ argument () const
+ {
+ return argument_;
+ }
+
+ // missing_value
+ //
+ inline missing_value::
+ missing_value (const std::string& option)
+ : option_ (option)
+ {
+ }
+
+ inline const std::string& missing_value::
+ option () const
+ {
+ return option_;
+ }
+
+ // invalid_value
+ //
+ inline invalid_value::
+ invalid_value (const std::string& option,
+ const std::string& value,
+ const std::string& message)
+ : option_ (option),
+ value_ (value),
+ message_ (message)
+ {
+ }
+
+ inline const std::string& invalid_value::
+ option () const
+ {
+ return option_;
+ }
+
+ inline const std::string& invalid_value::
+ value () const
+ {
+ return value_;
+ }
+
+ inline const std::string& invalid_value::
+ message () const
+ {
+ return message_;
+ }
+
+ // file_io_failure
+ //
+ inline file_io_failure::
+ file_io_failure (const std::string& file)
+ : file_ (file)
+ {
+ }
+
+ inline const std::string& file_io_failure::
+ file () const
+ {
+ return file_;
+ }
+
+ // unmatched_quote
+ //
+ inline unmatched_quote::
+ unmatched_quote (const std::string& argument)
+ : argument_ (argument)
+ {
+ }
+
+ inline const std::string& unmatched_quote::
+ argument () const
+ {
+ return argument_;
+ }
+
+ // argv_scanner
+ //
+ inline argv_scanner::
+ argv_scanner (int& argc,
+ char** argv,
+ bool erase,
+ std::size_t sp)
+ : start_position_ (sp + 1),
+ i_ (1),
+ argc_ (argc),
+ argv_ (argv),
+ erase_ (erase)
+ {
+ }
+
+ inline argv_scanner::
+ argv_scanner (int start,
+ int& argc,
+ char** argv,
+ bool erase,
+ std::size_t sp)
+ : start_position_ (sp + static_cast<std::size_t> (start)),
+ i_ (start),
+ argc_ (argc),
+ argv_ (argv),
+ erase_ (erase)
+ {
+ }
+
+ inline int argv_scanner::
+ end () const
+ {
+ return i_;
+ }
+
+ // argv_file_scanner
+ //
+ inline argv_file_scanner::
+ argv_file_scanner (int& argc,
+ char** argv,
+ const std::string& option,
+ bool erase,
+ std::size_t sp)
+ : argv_scanner (argc, argv, erase, sp),
+ option_ (option),
+ options_ (&option_info_),
+ options_count_ (1),
+ i_ (1),
+ skip_ (false)
+ {
+ option_info_.option = option_.c_str ();
+ option_info_.search_func = 0;
+ }
+
+ inline argv_file_scanner::
+ argv_file_scanner (int start,
+ int& argc,
+ char** argv,
+ const std::string& option,
+ bool erase,
+ std::size_t sp)
+ : argv_scanner (start, argc, argv, erase, sp),
+ option_ (option),
+ options_ (&option_info_),
+ options_count_ (1),
+ i_ (1),
+ skip_ (false)
+ {
+ option_info_.option = option_.c_str ();
+ option_info_.search_func = 0;
+ }
+
+ inline argv_file_scanner::
+ argv_file_scanner (const std::string& file,
+ const std::string& option,
+ std::size_t sp)
+ : argv_scanner (0, zero_argc_, 0, sp),
+ option_ (option),
+ options_ (&option_info_),
+ options_count_ (1),
+ i_ (1),
+ skip_ (false)
+ {
+ option_info_.option = option_.c_str ();
+ option_info_.search_func = 0;
+
+ load (file);
+ }
+
+ inline argv_file_scanner::
+ argv_file_scanner (int& argc,
+ char** argv,
+ const option_info* options,
+ std::size_t options_count,
+ bool erase,
+ std::size_t sp)
+ : argv_scanner (argc, argv, erase, sp),
+ options_ (options),
+ options_count_ (options_count),
+ i_ (1),
+ skip_ (false)
+ {
+ }
+
+ inline argv_file_scanner::
+ argv_file_scanner (int start,
+ int& argc,
+ char** argv,
+ const option_info* options,
+ std::size_t options_count,
+ bool erase,
+ std::size_t sp)
+ : argv_scanner (start, argc, argv, erase, sp),
+ options_ (options),
+ options_count_ (options_count),
+ i_ (1),
+ skip_ (false)
+ {
+ }
+
+ inline argv_file_scanner::
+ argv_file_scanner (const std::string& file,
+ const option_info* options,
+ std::size_t options_count,
+ std::size_t sp)
+ : argv_scanner (0, zero_argc_, 0, sp),
+ options_ (options),
+ options_count_ (options_count),
+ i_ (1),
+ skip_ (false)
+ {
+ load (file);
+ }
+}
+
+// help_options
+//
+
+inline const std::uint64_t& help_options::
+build2_metadata () const
+{
+ return this->build2_metadata_;
+}
+
+inline bool help_options::
+build2_metadata_specified () const
+{
+ return this->build2_metadata_specified_;
+}
+
+inline const bool& help_options::
+help () const
+{
+ return this->help_;
+}
+
+inline const bool& help_options::
+version () const
+{
+ return this->version_;
+}
+
+inline const bool& help_options::
+proprietary_license () const
+{
+ return this->proprietary_license_;
+}
+
+// options
+//
+
+inline const NarrowStrings& options::
+disable_warning () const
+{
+ return this->disable_warning_;
+}
+
+inline bool options::
+disable_warning_specified () const
+{
+ return this->disable_warning_specified_;
+}
+
+inline const std::string& options::
+options_file () const
+{
+ return this->options_file_;
+}
+
+inline bool options::
+options_file_specified () const
+{
+ return this->options_file_specified_;
+}
+
+inline const bool& options::
+show_sloc () const
+{
+ return this->show_sloc_;
+}
+
+inline const std::size_t& options::
+sloc_limit () const
+{
+ return this->sloc_limit_;
+}
+
+inline bool options::
+sloc_limit_specified () const
+{
+ return this->sloc_limit_specified_;
+}
+
+inline const bool& options::
+proprietary_license () const
+{
+ return this->proprietary_license_;
+}
+
+inline const NarrowString& options::
+custom_literals () const
+{
+ return this->custom_literals_;
+}
+
+inline bool options::
+custom_literals_specified () const
+{
+ return this->custom_literals_specified_;
+}
+
+inline const bool& options::
+preserve_anonymous () const
+{
+ return this->preserve_anonymous_;
+}
+
+inline const bool& options::
+show_anonymous () const
+{
+ return this->show_anonymous_;
+}
+
+inline const NarrowStrings& options::
+anonymous_regex () const
+{
+ return this->anonymous_regex_;
+}
+
+inline bool options::
+anonymous_regex_specified () const
+{
+ return this->anonymous_regex_specified_;
+}
+
+inline const bool& options::
+anonymous_regex_trace () const
+{
+ return this->anonymous_regex_trace_;
+}
+
+inline const bool& options::
+morph_anonymous () const
+{
+ return this->morph_anonymous_;
+}
+
+inline const NarrowStrings& options::
+location_map () const
+{
+ return this->location_map_;
+}
+
+inline bool options::
+location_map_specified () const
+{
+ return this->location_map_specified_;
+}
+
+inline const NarrowStrings& options::
+location_regex () const
+{
+ return this->location_regex_;
+}
+
+inline bool options::
+location_regex_specified () const
+{
+ return this->location_regex_specified_;
+}
+
+inline const bool& options::
+location_regex_trace () const
+{
+ return this->location_regex_trace_;
+}
+
+inline const bool& options::
+file_per_type () const
+{
+ return this->file_per_type_;
+}
+
+inline const NarrowStrings& options::
+type_file_regex () const
+{
+ return this->type_file_regex_;
+}
+
+inline bool options::
+type_file_regex_specified () const
+{
+ return this->type_file_regex_specified_;
+}
+
+inline const bool& options::
+type_file_regex_trace () const
+{
+ return this->type_file_regex_trace_;
+}
+
+inline const NarrowStrings& options::
+schema_file_regex () const
+{
+ return this->schema_file_regex_;
+}
+
+inline bool options::
+schema_file_regex_specified () const
+{
+ return this->schema_file_regex_specified_;
+}
+
+inline const bool& options::
+schema_file_regex_trace () const
+{
+ return this->schema_file_regex_trace_;
+}
+
+inline const bool& options::
+fat_type_file () const
+{
+ return this->fat_type_file_;
+}
+
+inline const NarrowString& options::
+file_list () const
+{
+ return this->file_list_;
+}
+
+inline bool options::
+file_list_specified () const
+{
+ return this->file_list_specified_;
+}
+
+inline const bool& options::
+file_list_only () const
+{
+ return this->file_list_only_;
+}
+
+inline const NarrowString& options::
+file_list_prologue () const
+{
+ return this->file_list_prologue_;
+}
+
+inline bool options::
+file_list_prologue_specified () const
+{
+ return this->file_list_prologue_specified_;
+}
+
+inline const NarrowString& options::
+file_list_epilogue () const
+{
+ return this->file_list_epilogue_;
+}
+
+inline bool options::
+file_list_epilogue_specified () const
+{
+ return this->file_list_epilogue_specified_;
+}
+
+inline const NarrowString& options::
+file_list_delim () const
+{
+ return this->file_list_delim_;
+}
+
+inline bool options::
+file_list_delim_specified () const
+{
+ return this->file_list_delim_specified_;
+}
+
+inline const bool& options::
+disable_multi_import () const
+{
+ return this->disable_multi_import_;
+}
+
+inline const bool& options::
+disable_full_check () const
+{
+ return this->disable_full_check_;
+}
+
+// Begin epilogue.
+//
+//
+// End epilogue.
diff --git a/xsd/processing/cardinality/processor.cxx b/xsd/processing/cardinality/processor.cxx
new file mode 100644
index 0000000..c8c5dc5
--- /dev/null
+++ b/xsd/processing/cardinality/processor.cxx
@@ -0,0 +1,407 @@
+// file : xsd/processing/cardinality/processor.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <map>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+#include <xsd/elements.hxx>
+
+#include <xsd/processing/cardinality/processor.hxx>
+
+using namespace std;
+
+namespace Processing
+{
+ namespace SemanticGraph = XSDFrontend::SemanticGraph;
+ namespace Traversal = XSDFrontend::Traversal;
+
+ namespace Cardinality
+ {
+ namespace
+ {
+ //
+ //
+ struct ElementInfo
+ {
+ ElementInfo ()
+ : min (0), max (0), e_ (0)
+ {
+ }
+
+ ElementInfo (SemanticGraph::Element& e)
+ : min (1), max (1), e_ (&e)
+ {
+ }
+
+ ElementInfo (SemanticGraph::Element& e, size_t min_, size_t max_)
+ : min (min_), max (max_), e_ (&e)
+ {
+ }
+
+ SemanticGraph::Element&
+ element ()
+ {
+ assert (e_ != 0);
+ return *e_;
+ }
+
+ public:
+ size_t min, max;
+
+ private:
+ SemanticGraph::Element* e_;
+ };
+
+ typedef map<String, ElementInfo> ElementInfoMap;
+
+ //
+ //
+ struct AnyInfo
+ {
+ AnyInfo ()
+ : min (0), max (0), a_ (0)
+ {
+ }
+
+ AnyInfo (SemanticGraph::Any& a)
+ : min (1), max (1), a_ (&a)
+ {
+ }
+
+ AnyInfo (SemanticGraph::Any& a, size_t min_, size_t max_)
+ : min (min_), max (max_), a_ (&a)
+ {
+ }
+
+ SemanticGraph::Any&
+ any ()
+ {
+ assert (a_ != 0);
+ return *a_;
+ }
+
+ public:
+ size_t min, max;
+
+ private:
+ SemanticGraph::Any* a_;
+ };
+
+ typedef map<String, AnyInfo> AnyInfoMap;
+
+ //
+ //
+ struct Particle: Traversal::All,
+ Traversal::Choice,
+ Traversal::Sequence,
+ Traversal::Element,
+ Traversal::Any
+ {
+ virtual void
+ traverse (SemanticGraph::All& a)
+ {
+ traverse_sequence (a);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Choice& c)
+ {
+ using SemanticGraph::Compositor;
+
+ // Go over all particles we contain and add them to the map.
+ //
+ for (Compositor::ContainsIterator ci (c.contains_begin ());
+ ci != c.contains_end (); ++ci)
+ {
+ Particle t;
+ t.dispatch (ci->particle ());
+
+ // Handle elements.
+ //
+ if (ci == c.contains_begin ())
+ el_map = t.el_map; // First arm.
+ else
+ {
+ // For elements that are in the map but not in this
+ // arm of choice, we need to set min to 0 while for
+ // those that are we need to choose minimum between
+ // the two for min and maximum for max.
+ //
+ for (ElementInfoMap::iterator i (el_map.begin ());
+ i != el_map.end (); ++i)
+ {
+ String const& name (i->first);
+ ElementInfo& ei (i->second);
+
+ ElementInfoMap::iterator j (t.el_map.find (name));
+
+ if (j == t.el_map.end ())
+ ei.min = 0;
+ else
+ {
+ ei.min = j->second.min < ei.min ? j->second.min : ei.min;
+
+ // Unbounded is encoded as 0.
+ //
+ if (j->second.max == 0 || ei.max == 0)
+ ei.max = 0;
+ else
+ ei.max = j->second.max > ei.max ? j->second.max : ei.max;
+ }
+ }
+
+ // Now elements that are in this arm of choice but are
+ // not in the map, we need to add to the map and set their
+ // min to 0.
+ //
+ for (ElementInfoMap::iterator i (t.el_map.begin ());
+ i != t.el_map.end (); ++i)
+ {
+ String const& name (i->first);
+ ElementInfo& ei (i->second);
+
+ ElementInfoMap::iterator j (el_map.find (name));
+
+ if (j == el_map.end ())
+ el_map[name] = ElementInfo (ei.element (), 0, ei.max);
+ }
+ }
+
+ // Handle wildcards. Since each wildcard is treated as unique,
+ // we need to copy them from each arm of choice and set min to
+ // 0.
+ //
+ for (AnyInfoMap::iterator i (t.any_map.begin ());
+ i != t.any_map.end (); ++i)
+ {
+ String const& name (i->first);
+ AnyInfo& ai (i->second);
+
+ assert (any_map.find (name) == any_map.end ());
+
+ any_map[name] = AnyInfo (ai.any (), 0, ai.max);
+ }
+ }
+
+ // Choice's min and max.
+ //
+ size_t cmin (c.min ()), cmax (c.max ());
+
+ // Iterate over elements and wildcards in the maps and multiply
+ // their cardinality by cmin and cmax.
+ //
+ for (ElementInfoMap::iterator i (el_map.begin ());
+ i != el_map.end (); ++i)
+ {
+ i->second.min *= cmin;
+ i->second.max *= cmax;
+ }
+
+ for (AnyInfoMap::iterator i (any_map.begin ());
+ i != any_map.end (); ++i)
+ {
+ i->second.min *= cmin; // Not really necessary since min == 0.
+ i->second.max *= cmax;
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Sequence& s)
+ {
+ traverse_sequence (s);
+ }
+
+ void
+ traverse_sequence (SemanticGraph::Compositor& c)
+ {
+ using SemanticGraph::Compositor;
+
+ // Sequence's min and max.
+ //
+ size_t smin (c.min ()), smax (c.max ());
+
+ // Go over all particles we contain and add them to the map.
+ //
+ for (Compositor::ContainsIterator ci (c.contains_begin ());
+ ci != c.contains_end (); ++ci)
+ {
+ Particle t;
+ t.dispatch (ci->particle ());
+
+ // Handle elements.
+ //
+ for (ElementInfoMap::iterator i (t.el_map.begin ());
+ i != t.el_map.end (); ++i)
+ {
+ String const& name (i->first);
+ ElementInfo& ei (i->second);
+ size_t min (ei.min * smin);
+ size_t max (ei.max * smax);
+ ElementInfoMap::iterator j (el_map.find (name));
+
+ if (j != el_map.end ())
+ {
+ // Add i's cardinality to j
+ //
+ j->second.min += min;
+ j->second.max = (j->second.max == 0 || max == 0) ?
+ 0 : (j->second.max + max);
+ }
+ else
+ el_map[name] = ElementInfo (ei.element (), min, max);
+ }
+
+ // Handle wildcards.
+ //
+ for (AnyInfoMap::iterator i (t.any_map.begin ());
+ i != t.any_map.end (); ++i)
+ {
+ String const& name (i->first);
+ AnyInfo& ai (i->second);
+ size_t min (ai.min * smin);
+ size_t max (ai.max * smax);
+
+ assert (any_map.find (name) == any_map.end ());
+
+ any_map[name] = AnyInfo (ai.any (), min, max);
+ }
+ }
+ }
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ SemanticGraph::ContainsParticle& cp (e.contained_particle ());
+
+ String name (e.qualified_p ()
+ ? e.namespace_ ().name () + L" " + e.name ()
+ : e.name ());
+
+ el_map[name] = ElementInfo (e, cp.min (), cp.max ());
+ }
+
+ virtual void
+ traverse (SemanticGraph::Any& a)
+ {
+ SemanticGraph::ContainsParticle& cp (a.contained_particle ());
+
+ any_map[a.name ()] = AnyInfo (a, cp.min (), cp.max ());
+ }
+
+ public:
+ AnyInfoMap any_map;
+ ElementInfoMap el_map;
+ };
+
+
+ //
+ //
+ struct Complex: Traversal::Complex
+ {
+ virtual void
+ traverse (Type& c)
+ {
+ if (c.contains_compositor_p ())
+ {
+ Particle t;
+ t.dispatch (c.contains_compositor ().compositor ());
+
+ for (ElementInfoMap::iterator i (t.el_map.begin ());
+ i != t.el_map.end (); ++i)
+ {
+ ElementInfo& ei (i->second);
+ SemanticGraph::Context& ctx (ei.element ().context ());
+
+ ctx.set ("min", ei.min);
+ ctx.set ("max", ei.max);
+ }
+
+ for (AnyInfoMap::iterator i (t.any_map.begin ());
+ i != t.any_map.end (); ++i)
+ {
+ AnyInfo& ai (i->second);
+ SemanticGraph::Context& ctx (ai.any ().context ());
+
+ ctx.set ("min", ai.min);
+ ctx.set ("max", ai.max);
+ }
+ }
+
+ // Traverse attributes and anonymous types (via elements).
+ //
+ Complex::names (c);
+ }
+ };
+
+
+ //
+ //
+ struct Attribute: Traversal::Attribute
+ {
+ virtual void
+ traverse (Type& a)
+ {
+ SemanticGraph::Context& ctx (a.context ());
+
+ ctx.set ("min", size_t (a.optional_p () ? 0 : 1));
+ ctx.set ("max", size_t (1));
+ }
+ };
+
+ // Go into implied/included/imported schemas while making sure
+ // we don't process the same stuff more than once.
+ //
+ struct Uses: Traversal::Uses
+ {
+ virtual void
+ traverse (Type& u)
+ {
+ SemanticGraph::Schema& s (u.schema ());
+
+ if (!s.context ().count ("processing-cardinality-seen"))
+ {
+ s.context ().set ("processing-cardinality-seen", true);
+ Traversal::Uses::traverse (u);
+ }
+ }
+ };
+ }
+
+ void Processor::
+ process (SemanticGraph::Schema& tu, SemanticGraph::Path const&)
+ {
+ Traversal::Schema schema;
+ Uses uses;
+
+ schema >> uses >> schema;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+
+ schema >> schema_names >> ns >> ns_names;
+
+ Complex complex_type;
+ AnonymousBase anonymous (complex_type);
+
+ ns_names >> complex_type;
+ ns_names >> anonymous;
+
+ Attribute attribute;
+ Traversal::Names names;
+
+ complex_type >> names;
+
+ names >> attribute;
+ names >> anonymous;
+
+ // Some twisted schemas do recusive inclusions.
+ //
+ tu.context ().set ("processing-cardinality-seen", true);
+
+ schema.dispatch (tu);
+ }
+ }
+}
diff --git a/xsd/processing/cardinality/processor.hxx b/xsd/processing/cardinality/processor.hxx
new file mode 100644
index 0000000..93a85fb
--- /dev/null
+++ b/xsd/processing/cardinality/processor.hxx
@@ -0,0 +1,28 @@
+// file : xsd/processing/cardinality/processor.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_PROCESSING_CARDINALITY_PROCESSOR_HXX
+#define XSD_PROCESSING_CARDINALITY_PROCESSOR_HXX
+
+#include <libxsd-frontend/semantic-graph/elements.hxx> // Path
+#include <libxsd-frontend/semantic-graph/schema.hxx>
+
+#include <xsd/types.hxx>
+
+namespace Processing
+{
+ namespace Cardinality
+ {
+ class Processor
+ {
+ public:
+ struct Failed {};
+
+ void
+ process (XSDFrontend::SemanticGraph::Schema&,
+ XSDFrontend::SemanticGraph::Path const& file);
+ };
+ }
+}
+
+#endif // XSD_PROCESSING_CARDINALITY_PROCESSOR_HXX
diff --git a/xsd/processing/inheritance/processor.cxx b/xsd/processing/inheritance/processor.cxx
new file mode 100644
index 0000000..6c0e40e
--- /dev/null
+++ b/xsd/processing/inheritance/processor.cxx
@@ -0,0 +1,492 @@
+// file : xsd/processing/inheritance/processor.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <set>
+#include <iostream>
+
+#include <xsd/processing/inheritance/processor.hxx>
+
+#include <xsd/elements.hxx>
+
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
+
+using namespace std;
+
+namespace Processing
+{
+ namespace SemanticGraph = XSDFrontend::SemanticGraph;
+ namespace Traversal = XSDFrontend::Traversal;
+
+ namespace Inheritance
+ {
+ namespace
+ {
+ struct Dep
+ {
+ Dep (SemanticGraph::Type& t,
+ SemanticGraph::Member* m = 0,
+ String const& xpath = L"")
+ : type (t), member (m), member_xpath (xpath)
+ {
+ }
+
+ SemanticGraph::Type& type;
+ SemanticGraph::Member* member; // Member if type is anonymous.
+ String member_xpath;
+ };
+
+ inline bool
+ operator< (Dep const& a, Dep const& b)
+ {
+ return &a.type < &b.type;
+ }
+
+ typedef set<Dep> DepSet;
+ typedef set<SemanticGraph::Type*> TypeSet;
+
+ String
+ xpath (SemanticGraph::Nameable& n)
+ {
+ if (dynamic_cast<SemanticGraph::Namespace*> (&n) != 0)
+ return L"<namespace-level>"; // There is a bug if you see this.
+
+ if (n.named_p ())
+ {
+ SemanticGraph::Scope& scope (n.scope ());
+
+ if (dynamic_cast<SemanticGraph::Namespace*> (&scope) != 0)
+ return n.name ();
+
+ return xpath (scope) + L"/" + n.name ();
+ }
+ else
+ {
+ return L"(anonymous type for " +
+ n.context ().get<String> ("instance-name") + L")";
+ }
+ }
+
+
+ // Calculate the list of dependencies for this complex
+ // type.
+ //
+ struct ComplexType: Traversal::Complex,
+ Traversal::Member
+ {
+ ComplexType (DepSet& dep_set)
+ : dep_set_ (dep_set), last_ (0)
+ {
+ *this >> names_ >> *this;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ using SemanticGraph::Complex;
+
+ if (c.inherits_p ())
+ dep_set_.insert (Dep (c.inherits ().base (), last_, last_xpath_));
+
+ types_seen_.insert (&c);
+
+ // Go after anonymous types.
+ //
+ names (c);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Member& m)
+ {
+ SemanticGraph::Type& t (m.type ());
+
+ if (!t.named_p () && types_seen_.find (&t) == types_seen_.end ())
+ {
+ SemanticGraph::Context& ctx (t.context ());
+
+ last_xpath_ = xpath (m);
+
+ String prev_xpath;
+
+ if (ctx.count ("instance-name"))
+ prev_xpath = ctx.get<String> ("instance-name");
+
+ ctx.set ("instance-name", last_xpath_);
+
+ last_ = &m;
+ dispatch (t);
+
+ if (prev_xpath)
+ ctx.set ("instance-name", prev_xpath);
+ else
+ ctx.remove ("instance-name");
+ }
+ }
+
+ private:
+ DepSet& dep_set_;
+ TypeSet types_seen_;
+
+ SemanticGraph::Member* last_;
+ String last_xpath_;
+
+ Traversal::Names names_;
+ };
+
+
+ //
+ //
+ template <typename N, typename A>
+ struct NodeArgs
+ {
+ NodeArgs (N& node, A arg)
+ : node_ (node), arg_ (arg)
+ {
+ }
+
+ operator N& () const
+ {
+ return node_;
+ }
+
+ template <typename E>
+ void
+ add_edge_left (E& e)
+ {
+ node_.add_edge_left (e, arg_);
+ }
+
+ template <typename E>
+ void
+ add_edge_right (E& e)
+ {
+ node_.add_edge_right (e, arg_);
+ }
+
+ private:
+ N& node_;
+ A arg_;
+ };
+
+
+ //
+ //
+ struct Global: Traversal::Type,
+ Traversal::Complex,
+ Traversal::Element
+ {
+ Global (SemanticGraph::Schema& root,
+ SemanticGraph::Schema& schema,
+ bool& failed)
+ : root_ (root), schema_ (schema), failed_ (failed)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ if (t.named_p ())
+ types_seen_.insert (&t);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Complex& c)
+ {
+ check_dep (c, c);
+ types_seen_.insert (&c);
+ };
+
+ virtual void
+ traverse (SemanticGraph::Element& e)
+ {
+ SemanticGraph::Type& t (e.type ());
+
+ if (!t.named_p ())
+ {
+ t.context ().set ("instance-name", xpath (e));
+ check_dep (e, t);
+ t.context ().remove ("instance-name");
+ }
+ };
+
+ private:
+ void
+ check_dep (SemanticGraph::Nameable& global,
+ SemanticGraph::Type& type)
+ {
+ using SemanticGraph::Type;
+ using SemanticGraph::Scope;
+ using SemanticGraph::Names;
+ using SemanticGraph::Schema;
+
+ DepSet prereqs;
+
+ // Calculate our prerequisistes.
+ //
+ {
+ ComplexType complex (prereqs);
+ complex.dispatch (type);
+ }
+
+ for (DepSet::const_iterator i (prereqs.begin ());
+ i != prereqs.end (); ++i)
+ {
+ Dep const& dep (*i);
+ Type& t (dep.type);
+
+ // Ignore IDREF templates.
+ //
+ if (!t.named_p () &&
+ (t.is_a<SemanticGraph::Fundamental::IdRef> () ||
+ t.is_a<SemanticGraph::Fundamental::IdRefs> ()))
+ continue;
+
+ // We won't be able to generate compilable code in case of a
+ // dependency on ourselves (e.g., a member element with
+ // anonymous type that inherits from us).
+ //
+ if (&t == &type)
+ {
+ assert (dep.member != 0);
+
+ SemanticGraph::Member& m (*dep.member);
+
+ wcerr << t.file () << ":" << t.line () << ":" << t.column ()
+ << " error: nested anonymous type for '"
+ << dep.member_xpath << "' cyclicly inherits from '"
+ << t.name () << "'" << endl;
+
+ wcerr << t.file () << ":" << t.line () << ":" << t.column ()
+ << " error: unable to generate valid code for such "
+ << "cyclic inheritance" << endl;
+
+ wcerr << m.file () << ":" << m.line () << ":" << m.column ()
+ << " info: '" << m.name () << "' element is declared here"
+ << endl;
+
+ wcerr << t.file () << ":" << t.line () << ":" << t.column ()
+ << ": info: consider explicitly naming this type "
+ << "or remove the --preserve-anonymous option"
+ << endl;
+
+ failed_ = true;
+ continue;
+ }
+
+ if (types_seen_.find (&t) == types_seen_.end ())
+ {
+ Scope& scope (t.scope ());
+ Schema& schema (dynamic_cast<Schema&> (scope.scope ()));
+
+ // Don't worry about types that are in included/imported
+ // schemas.
+ //
+ if (&schema != &schema_ && !sources_p (schema_, schema))
+ continue;
+
+ if (t.context ().count ("seen"))
+ {
+ wcerr << t.file () << ":" << t.line () << ":" << t.column ()
+ << " error: nested anonymous type in '" << t.name ()
+ << "' or '" << type.name () << "' inherits from one of "
+ << "these types and makes them mutually dependant"
+ << endl;
+
+ wcerr << t.file () << ":" << t.line () << ":" << t.column ()
+ << " error: unable to generate valid code for such "
+ << "cyclic dependency" << endl;
+
+ wcerr << type.file () << ":" << type.line () << ":"
+ << type.column () << " info: '" << type.name ()
+ << "' type is defined here"
+ << endl;
+
+ wcerr << t.file () << ":" << t.line () << ":" << t.column ()
+ << ": info: consider explicitly naming the anonymous "
+ << "type or remove the --preserve-anonymous option"
+ << endl;
+
+ failed_ = true;
+ continue;
+ }
+
+ //wcerr << "type '" << t.name () << "' needs to be moved " <<
+ // "before " << (global.is_a<Type> () ? "type" : "element") <<
+ // " '" << global.name () << "'" << endl;
+
+
+ // Delete current Names edge.
+ //
+ String name (t.name ());
+ {
+ Names& n (t.named ());
+ root_.delete_edge (scope, t, n);
+ }
+
+ // Insert a new Names edge before global.
+ //
+ {
+ // t.scope () and global.scope () can be different in
+ // case of the chameleon inclusion.
+ //
+ Scope& scope (global.scope ());
+
+ // Convert to the insert-after call.
+ //
+ Scope::NamesIterator i (scope.find (global.named ()));
+
+ if (i == scope.names_begin ())
+ i = scope.names_end ();
+ else
+ --i;
+
+ NodeArgs<Scope, Scope::NamesIterator> na (scope, i);
+ root_.new_edge<Names> (na, t, name);
+ }
+
+ // Recursively process the moved type.
+ //
+ global.context ().set ("seen", true);
+ dispatch (t);
+ global.context ().remove ("seen");
+ }
+ }
+ }
+
+ private:
+ // Return true if root sources s.
+ //
+ bool
+ sources_p (SemanticGraph::Schema& root, SemanticGraph::Schema& s)
+ {
+ using SemanticGraph::Schema;
+ using SemanticGraph::Sources;
+
+ for (Schema::UsesIterator i (root.uses_begin ());
+ i != root.uses_end (); ++i)
+ {
+ if (i->is_a<Sources> ())
+ {
+ if (&i->schema () == &s || sources_p (i->schema (), s))
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private:
+ SemanticGraph::Schema& root_;
+ SemanticGraph::Schema& schema_;
+ TypeSet types_seen_;
+ bool& failed_;
+ };
+
+
+ // Sources traverser that goes into each schema only once.
+ //
+ struct Sources: Traversal::Sources
+ {
+ virtual void
+ traverse (SemanticGraph::Sources& s)
+ {
+ if (schemas_.insert (&s.schema ()).second)
+ Traversal::Sources::traverse (s);
+ }
+
+ private:
+ set<SemanticGraph::Schema*> schemas_;
+ };
+
+ // Go into included/imported schemas while making sure we don't
+ // process the same stuff more than once.
+ //
+ struct Uses: Traversal::Includes, Traversal::Imports
+ {
+ Uses (SemanticGraph::Schema& root, bool& failed)
+ : root_ (root), failed_ (failed)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Includes& i)
+ {
+ traverse (i.schema ());
+ }
+
+ virtual void
+ traverse (SemanticGraph::Imports& i)
+ {
+ traverse (i.schema ());
+ }
+
+ private:
+ void
+ traverse (SemanticGraph::Schema& s)
+ {
+ if (!s.context ().count ("processing-inheritance-seen"))
+ {
+ Traversal::Schema schema;
+ Sources sources;
+
+ schema >> sources >> schema;
+ schema >> *this;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+
+ schema >> schema_names >> ns >> ns_names;
+
+ Global global (root_, s, failed_);
+
+ ns_names >> global;
+
+ s.context ().set ("processing-inheritance-seen", true);
+ schema.dispatch (s);
+ }
+ }
+
+ private:
+ SemanticGraph::Schema& root_;
+ bool& failed_;
+ };
+ }
+
+ void Processor::
+ process (SemanticGraph::Schema& tu, SemanticGraph::Path const&)
+ {
+ bool failed (false);
+
+ // We need to process include/imported schemas since other
+ // parts of the process, for example, name processors can
+ // rely on the order of types in the schema.
+ //
+ Traversal::Schema schema;
+ Sources sources;
+ Uses uses (tu, failed);
+
+ schema >> sources >> schema;
+ schema >> uses;
+
+ Traversal::Names schema_names;
+ Traversal::Namespace ns;
+ Traversal::Names ns_names;
+
+ schema >> schema_names >> ns >> ns_names;
+
+ Global global (tu, tu, failed);
+
+ ns_names >> global;
+
+ // Some twisted schemas do recusive self-inclusion.
+ //
+ tu.context ().set ("processing-inheritance-seen", true);
+
+ schema.dispatch (tu);
+
+ if (failed)
+ throw Failed ();
+ }
+ }
+}
diff --git a/xsd/processing/inheritance/processor.hxx b/xsd/processing/inheritance/processor.hxx
new file mode 100644
index 0000000..2a70e02
--- /dev/null
+++ b/xsd/processing/inheritance/processor.hxx
@@ -0,0 +1,28 @@
+// file : xsd/processing/inheritance/processor.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_PROCESSING_INHERITANCE_PROCESSOR_HXX
+#define XSD_PROCESSING_INHERITANCE_PROCESSOR_HXX
+
+#include <libxsd-frontend/semantic-graph/elements.hxx> // Path
+#include <libxsd-frontend/semantic-graph/schema.hxx>
+
+#include <xsd/types.hxx>
+
+namespace Processing
+{
+ namespace Inheritance
+ {
+ class Processor
+ {
+ public:
+ struct Failed {};
+
+ void
+ process (XSDFrontend::SemanticGraph::Schema&,
+ XSDFrontend::SemanticGraph::Path const& file);
+ };
+ }
+}
+
+#endif // XSD_PROCESSING_INHERITANCE_PROCESSOR_HXX
diff --git a/xsd/tests/clash/clash.xsd b/xsd/tests/clash/clash.xsd
deleted file mode 100644
index 8458908..0000000
--- a/xsd/tests/clash/clash.xsd
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test/bar"
- xmlns:f="http://www.codesynthesis.com/xmlns/test/foo"
- targetNamespace="http://www.codesynthesis.com/xmlns/test/bar">
-
- <xsd:import namespace="http://www.codesynthesis.com/xmlns/test/foo" schemaLocation="foo.xsd"/>
-
- <!-- example of a name clash. -->
-
- <xsd:element name="foo" type="xsd:string"/>
-
- <xsd:complexType name="Foo">
- <xsd:sequence>
- <xsd:element ref="foo"/>
- <xsd:element name="foo" type="xsd:long"/>
- <xsd:element ref="f:foo"/>
- <xsd:element ref="f:foo"/>
- </xsd:sequence>
- <xsd:attribute name="foo" type="xsd:string"/>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/tests/clash/foo.xsd b/xsd/tests/clash/foo.xsd
deleted file mode 100644
index 8a06ba8..0000000
--- a/xsd/tests/clash/foo.xsd
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test/foo"
- targetNamespace="http://www.codesynthesis.com/xmlns/test/foo">
-
- <xsd:element name="foo" type="xsd:int"/>
- <xsd:element name="bar" type="xsd:int"/>
-
-</xsd:schema>
diff --git a/xsd/tests/code/name-conflict/test.xsd b/xsd/tests/code/name-conflict/test.xsd
deleted file mode 100644
index a017cc8..0000000
--- a/xsd/tests/code/name-conflict/test.xsd
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:simpleType name="enumeration">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="enumeration"/>
- <xsd:enumeration value="enumeration1"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:element name="enumeration" type="enumeration"/>
-
- <xsd:complexType name="complex">
- <xsd:sequence>
- <xsd:element name="complex" type="xsd:string"/>
- <xsd:element name="complex1" type="xsd:string"/>
- <xsd:element name="type" type="xsd:string"/>
- <xsd:element name="container" type="xsd:string" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="complex" type="complex"/>
-
- <xsd:complexType name="anonymous">
- <xsd:sequence>
- <xsd:element name="anonymous">
- <xsd:complexType> <!-- this is really twisted -->
- <xsd:sequence>
- <xsd:element name="anonymous2" type="xsd:string"/>
- <xsd:element name="anonymous21" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="anonymous1" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="anonymous" type="anonymous"/>
-
-</xsd:schema>
diff --git a/xsd/tests/code/name-escaping/test.xsd b/xsd/tests/code/name-escaping/test.xsd
deleted file mode 100644
index 08c7530..0000000
--- a/xsd/tests/code/name-escaping/test.xsd
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- type -->
-
- <xsd:simpleType name="long">
- <xsd:restriction base="xsd:long"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="strange.type-name.">
- <xsd:restriction base="long"/>
- </xsd:simpleType>
-
- <xsd:element name="one-two-explicit">
- <xsd:simpleType>
- <xsd:restriction base="xsd:NCName">
- <xsd:enumeration value="on.e-"/>
- <xsd:enumeration value="t-wo."/>
- <xsd:enumeration value="explicit"/>
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:element>
-
-
- <!-- element [global/local] -->
-
- <xsd:element name="switch" type="long"/>
- <xsd:element name="strange.element-name." type="strange.type-name."/>
-
-
- <xsd:element name="with-anonymous-type-1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="for" type="long"/>
- <xsd:element name="switch" minOccurs="0" type="long"/>
- <xsd:element name="strange.element-name." maxOccurs="unbounded" type="strange.type-name."/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
-
-
- <!-- attributes [global/local] -->
-
- <xsd:attribute name="default" type="long"/>
- <xsd:attribute name="strange.attribute-name." type="strange.type-name."/>
-
- <xsd:element name="with-anonymous-type-2">
- <xsd:complexType>
- <xsd:attribute name="and" type="long" use="required"/>
- <xsd:attribute name="strange.attribute-name." type="strange.type-name."/>
- </xsd:complexType>
- </xsd:element>
-
-
-</xsd:schema>
diff --git a/xsd/tests/cxx/makefile b/xsd/tests/cxx/makefile
deleted file mode 100644
index 2e1364a..0000000
--- a/xsd/tests/cxx/makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-# file : tests/cxx/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(out_base)/parser/ $(out_base)/tree/
-$(test): $(out_base)/parser/.test $(out_base)/tree/.test
-$(clean): $(out_base)/parser/.clean $(out_base)/tree/.clean
-
-$(call import,$(src_base)/parser/makefile)
-$(call import,$(src_base)/tree/makefile)
diff --git a/xsd/tests/cxx/parser/built-in/driver.cxx b/xsd/tests/cxx/parser/built-in/driver.cxx
deleted file mode 100644
index 2791387..0000000
--- a/xsd/tests/cxx/parser/built-in/driver.cxx
+++ /dev/null
@@ -1,530 +0,0 @@
-// file : tests/cxx/parser/built-in/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test built-in type parsing.
-//
-
-#include <string>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-using xml_schema::ro_string;
-
-struct any_type_pimpl: xml_schema::any_type_pimpl
-{
- virtual void
- pre ()
- {
- cout << "{" << endl;
- }
-
- virtual void
- _start_any_element (ro_string const&,
- ro_string const& n,
- ro_string const*)
- {
- cout << " start any element '" << n << "'" << endl;
- }
-
- virtual void
- _end_any_element (ro_string const&, ro_string const& n)
- {
- cout << " end any element '" << n << "'" << endl;
- }
-
- virtual void
- _any_attribute (ro_string const&,
- ro_string const& n,
- ro_string const& v)
- {
- cout << " any attribute " << n << " = '" << v << "'" << endl;
- }
-
- virtual void
- _any_characters (ro_string const& s)
- {
- cout << " any text: '" << s << "'" << endl;
- }
-
- virtual void
- post_any_type ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct any_simple_type_pimpl: xml_schema::any_simple_type_pimpl
-{
- virtual void
- pre ()
- {
- cout << "{" << endl;
- }
-
- virtual void
- _any_characters (ro_string const& s)
- {
- cout << " any text: '" << s << "'" << endl;
- }
-
- virtual void
- post_any_simple_type ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct type_pimpl: type_pskel
-{
- virtual void
- boolean (bool v)
- {
- cout << v << endl;
- }
-
- virtual void
- byte (signed char v)
- {
- cout << short (v) << endl;
- }
-
- virtual void
- unsigned_byte (unsigned char v)
- {
- cout << (unsigned short) (v) << endl;
- }
-
- virtual void
- short_ (short v)
- {
- cout << v << endl;
- }
-
- virtual void
- unsigned_short (unsigned short v)
- {
- cout << v << endl;
- }
-
- virtual void
- int_ (int v)
- {
- cout << v << endl;
- }
-
- virtual void
- unsigned_int (unsigned int v)
- {
- cout << v << endl;
- }
-
- virtual void
- long_ (long long v)
- {
- cout << v << endl;
- }
-
- virtual void
- unsigned_long (unsigned long long v)
- {
- cout << v << endl;
- }
-
- virtual void
- integer (long long v)
- {
- cout << v << endl;
- }
-
- virtual void
- negative_integer (long long v)
- {
- cout << v << endl;
- }
-
-
- virtual void
- non_positive_integer (long long v)
- {
- cout << v << endl;
- }
-
-
- virtual void
- positive_integer (unsigned long long v)
- {
- cout << v << endl;
- }
-
- virtual void
- non_negative_integer (unsigned long long v)
- {
- cout << v << endl;
- }
-
- virtual void
- float_ (float v)
- {
- cout << v << endl;
- }
-
- virtual void
- double_ (double v)
- {
- cout << v << endl;
- }
-
- virtual void
- decimal (double v)
- {
- cout << v << endl;
- }
-
- virtual void
- string (std::string const& v)
- {
- cout << "'" << v << "'" << endl;
- }
-
- virtual void
- normalized_string (std::string const& v)
- {
- cout << "'" << v << "'" << endl;
- }
-
- virtual void
- token (std::string const& v)
- {
- cout << "'" << v << "'" << endl;
- }
-
- virtual void
- name (std::string const& v)
- {
- cout << "'" << v << "'" << endl;
- }
-
- virtual void
- nmtoken (std::string const& v)
- {
- cout << "'" << v << "'" << endl;
- }
-
- virtual void
- nmtokens (xml_schema::string_sequence const& s)
- {
- cout << "'";
-
- for (xml_schema::string_sequence::const_iterator i (s.begin ());
- i != s.end (); ++i)
- cout << *i << " ";
-
- cout << "'" << endl;
- }
-
- virtual void
- ncname (std::string const& v)
- {
- cout << "'" << v << "'" << endl;
- }
-
- virtual void
- id (std::string const& v)
- {
- cout << "'" << v << "'" << endl;
- }
-
- virtual void
- idref (std::string const& v)
- {
- cout << "'" << v << "'" << endl;
- }
-
- virtual void
- idrefs (xml_schema::string_sequence const& s)
- {
- cout << "'";
-
- for (xml_schema::string_sequence::const_iterator i (s.begin ());
- i != s.end (); ++i)
- cout << *i << " ";
-
- cout << "'" << endl;
- }
-
- virtual void
- language (std::string const& v)
- {
- cout << "'" << v << "'" << endl;
- }
-
- virtual void
- uri (std::string const& v)
- {
- cout << "'" << v << "'" << endl;
- }
-
- virtual void
- qname (xml_schema::qname const& v)
- {
- cout << "'" << v.prefix () << ":" << v.name () << "'" << endl;
- }
-
- virtual void
- base64_binary (XSD_AUTO_PTR<xml_schema::buffer> v)
- {
- std::string tmp (v->data (), v->size ());
- cout << "'" << tmp << "'" << endl;
- }
-
- virtual void
- hex_binary (XSD_AUTO_PTR<xml_schema::buffer> v)
- {
- std::string tmp (v->data (), v->size ());
- cout << "'" << tmp << "'" << endl;
- }
-
- virtual void
- gday (xml_schema::gday const& v)
- {
- cout << v.day ();
-
- if (v.zone_present ())
- cout << (v.zone_hours () < 0 ? "" : "+") << v.zone_hours ()
- << ':' << v.zone_minutes ();
-
- cout << endl;
- }
-
- virtual void
- gmonth (xml_schema::gmonth const& v)
- {
- cout << v.month ();
-
- if (v.zone_present ())
- cout << (v.zone_hours () < 0 ? "" : "+") << v.zone_hours ()
- << ':' << v.zone_minutes ();
-
- cout << endl;
- }
-
- virtual void
- gyear (xml_schema::gyear const& v)
- {
- cout << v.year ();
-
- if (v.zone_present ())
- cout << (v.zone_hours () < 0 ? "" : "+") << v.zone_hours ()
- << ':' << v.zone_minutes ();
-
- cout << endl;
- }
-
- virtual void
- gmonth_day (xml_schema::gmonth_day const& v)
- {
- cout << v.month () << '-' << v.day ();
-
- if (v.zone_present ())
- cout << (v.zone_hours () < 0 ? "" : "+") << v.zone_hours ()
- << ':' << v.zone_minutes ();
-
- cout << endl;
- }
-
- virtual void
- gyear_month (xml_schema::gyear_month const& v)
- {
- cout << v.year () << '-' << v.month ();
-
- if (v.zone_present ())
- cout << (v.zone_hours () < 0 ? "" : "+") << v.zone_hours ()
- << ':' << v.zone_minutes ();
-
- cout << endl;
- }
-
- virtual void
- date (xml_schema::date const& v)
- {
- cout << v.year () << '-' << v.month () << '-' << v.day ();
-
- if (v.zone_present ())
- cout << (v.zone_hours () < 0 ? "" : "+") << v.zone_hours ()
- << ':' << v.zone_minutes ();
-
- cout << endl;
- }
-
- virtual void
- time (xml_schema::time const& v)
- {
- cout << v.hours () << ':' << v.minutes () << ':' << v.seconds ();
-
- if (v.zone_present ())
- cout << (v.zone_hours () < 0 ? "" : "+") << v.zone_hours ()
- << ':' << v.zone_minutes ();
-
- cout << endl;
- }
-
- virtual void
- date_time (xml_schema::date_time const& v)
- {
- cout << v.year () << '-' << v.month () << '-' << v.day () << 'T'
- << v.hours () << ':' << v.minutes () << ':' << v.seconds ();
-
- if (v.zone_present ())
- cout << (v.zone_hours () < 0 ? "" : "+") << v.zone_hours ()
- << ':' << v.zone_minutes ();
-
- cout << endl;
- }
-
- virtual void
- duration (xml_schema::duration const& v)
- {
- cout << (v.negative () ? "-" : "") << 'P'
- << v.years () << 'Y'
- << v.months () << 'M'
- << v.days () << 'D'
- << 'T'
- << v.hours () << 'H'
- << v.minutes () << 'M'
- << v.seconds () << 'S'
- << endl;
- }
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- any_type_pimpl any_type_p;
- any_simple_type_pimpl any_simple_type_p;
-
- xml_schema::boolean_pimpl boolean_p;
-
- xml_schema::byte_pimpl byte_p;
- xml_schema::unsigned_byte_pimpl unsigned_byte_p;
- xml_schema::short_pimpl short_p;
- xml_schema::unsigned_short_pimpl unsigned_short_p;
- xml_schema::int_pimpl int_p;
- xml_schema::unsigned_int_pimpl unsigned_int_p;
- xml_schema::long_pimpl long_p;
- xml_schema::unsigned_long_pimpl unsigned_long_p;
-
- xml_schema::integer_pimpl integer_p;
- xml_schema::negative_integer_pimpl negative_integer_p;
- xml_schema::non_positive_integer_pimpl non_positive_integer_p;
- xml_schema::positive_integer_pimpl positive_integer_p;
- xml_schema::non_negative_integer_pimpl non_negative_integer_p;
-
- xml_schema::float_pimpl float_p;
- xml_schema::double_pimpl double_p;
- xml_schema::decimal_pimpl decimal_p;
-
- xml_schema::string_pimpl string_p;
- xml_schema::normalized_string_pimpl normalized_string_p;
- xml_schema::token_pimpl token_p;
- xml_schema::name_pimpl name_p;
- xml_schema::nmtoken_pimpl nmtoken_p;
- xml_schema::nmtokens_pimpl nmtokens_p;
- xml_schema::ncname_pimpl ncname_p;
- xml_schema::id_pimpl id_p;
- xml_schema::idref_pimpl idref_p;
- xml_schema::idrefs_pimpl idrefs_p;
-
- xml_schema::language_pimpl language_p;
- xml_schema::uri_pimpl uri_p;
- xml_schema::qname_pimpl qname_p;
-
- xml_schema::base64_binary_pimpl base64_binary_p;
- xml_schema::hex_binary_pimpl hex_binary_p;
-
- xml_schema::gday_pimpl gday_p;
- xml_schema::gmonth_pimpl gmonth_p;
- xml_schema::gyear_pimpl gyear_p;
- xml_schema::gmonth_day_pimpl gmonth_day_p;
- xml_schema::gyear_month_pimpl gyear_month_p;
- xml_schema::date_pimpl date_p;
- xml_schema::time_pimpl time_p;
- xml_schema::date_time_pimpl date_time_p;
- xml_schema::duration_pimpl duration_p;
-
- type_pimpl type_p;
-
- type_p.parsers (any_type_p,
- any_simple_type_p,
- boolean_p,
- byte_p,
- unsigned_byte_p,
- short_p,
- unsigned_short_p,
- int_p,
- unsigned_int_p,
- long_p,
- unsigned_long_p,
- integer_p,
- negative_integer_p,
- non_positive_integer_p,
- positive_integer_p,
- non_negative_integer_p,
- float_p,
- double_p,
- decimal_p,
- string_p,
- normalized_string_p,
- token_p,
- name_p,
- nmtoken_p,
- nmtokens_p,
- ncname_p,
- id_p,
- idref_p,
- idrefs_p,
- language_p,
- uri_p,
- qname_p,
- base64_binary_p,
- hex_binary_p,
- gday_p,
- gmonth_p,
- gyear_p,
- gmonth_day_p,
- gyear_month_p,
- date_p,
- time_p,
- date_time_p,
- duration_p);
-
- xml_schema::document doc_p (type_p, "test", "root");
-
- type_p.pre ();
- doc_p.parse (argv[1]);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (std::ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/built-in/makefile b/xsd/tests/cxx/parser/built-in/makefile
deleted file mode 100644
index 64987d0..0000000
--- a/xsd/tests/cxx/parser/built-in/makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-# file : tests/cxx/parser/built-in/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/built-in/output b/xsd/tests/cxx/parser/built-in/output
deleted file mode 100644
index 756abcd..0000000
--- a/xsd/tests/cxx/parser/built-in/output
+++ /dev/null
@@ -1,164 +0,0 @@
-{
- any attribute x = 'x'
- any text: '
- '
- start any element 'a'
- any text: 'a'
- end any element 'a'
- any text: '
- '
- start any element 'any-type'
- any attribute x = 'xxx'
- any text: 'aaa'
- start any element 'a'
- any text: 'bbb'
- end any element 'a'
- any text: 'ccc'
- end any element 'any-type'
- any text: '
- '
-}
-
-{
- any text: '123abc'
-}
-
-1
-0
-1
-0
-0
-127
--128
-123
-0
-255
-123
-0
-32767
--32768
--12345
-0
-65535
-12345
-0
-2147483647
--2147483648
--1234567890
-0
-4294967295
-1234567890
-0
-9223372036854775807
--9223372036854775808
--1234567890123456789
-0
-18446744073709551615
-12345678901234567890
-0
-2147483647
--2147483648
--1234567890
--2147483648
--1234567890
-0
--2147483648
--1234567890
-4294967295
-1234567890
-0
-4294967295
-1234567890
-0
-0
--0
-inf
--inf
-nan
-123.567
-123.567
--1.23567e+07
--4.5e-06
-0
-0
--0
-inf
--inf
-nan
-123.567
-123.567
--1.23567e+07
--4.5e-06
-0
-0
--0
-123.567
-123.567
--123.567
-'string space
-newline
- '
-' string space newline '
-'string space newline'
-'as123:345-.abs'
-'1as123:345-.abs'
-'abc 123 '
-'as123_345-.abs'
-'as123_345-.abs'
-'abc'
-'a123'
-'as123_345-.abs'
-'abc a123 '
-'x'
-'en'
-'en-us'
-'one-two-three-four44-seven77-eight888'
-''
-'relative'
-'#id'
-'http://www.example.com/foo#bar'
-':schemaLocation'
-'xsi:schemaLocation'
-'12345abcjk'
-'a'
-'ab'
-'abc'
-''
-'12345abcjk'
-12+12:0
-1
-31
-15+0:0
-15-14:0
-10+12:0
-1
-12+0:0
-2007+12:0
-1
--20000+0:0
-10-28+12:0
-12-31
-1-1+0:0
-2007-12+12:0
--2007-10
-20007-10+0:0
--20007-1
-2007-12-26+12:0
--2007-10-15
-20007-12-31+0:0
--20007-1-1
-12:46:23.456+12:0
-12:13:14
-12:13:14+0:0
-2007-12-26T12:13:14.123+12:0
--2007-10-15T12:13:14
-20007-12-31T12:13:14+0:0
--20007-1-1T12:13:14
--P2007Y13M32DT25H61M61.123S
-P1Y0M0DT0H0M0S
-P0Y1M0DT0H0M0S
-P0Y0M1DT0H0M0S
-P0Y0M0DT1H0M0S
-P0Y0M0DT0H1M0S
-P0Y0M0DT0H0M1.1S
-P1Y0M0DT0H0M1S
diff --git a/xsd/tests/cxx/parser/built-in/test.xml b/xsd/tests/cxx/parser/built-in/test.xml
deleted file mode 100644
index 8d9332a..0000000
--- a/xsd/tests/cxx/parser/built-in/test.xml
+++ /dev/null
@@ -1,199 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <any-type x="x">
- <a>a</a>
- <any-type x="xxx">aaa<a>bbb</a>ccc</any-type>
- </any-type>
-
- <any-simple-type>123abc</any-simple-type>
-
- <boolean>1</boolean>
- <boolean> 0 </boolean>
- <boolean>true</boolean>
- <boolean> false </boolean>
-
- <byte>0</byte>
- <byte>+127</byte>
- <byte>-128</byte>
- <byte> 123 </byte>
-
- <unsigned-byte>0</unsigned-byte>
- <unsigned-byte>255</unsigned-byte>
- <unsigned-byte> 123 </unsigned-byte>
-
- <short>0</short>
- <short>+32767</short>
- <short>-32768</short>
- <short> -12345 </short>
-
- <unsigned-short>0</unsigned-short>
- <unsigned-short>65535</unsigned-short>
- <unsigned-short> 12345 </unsigned-short>
-
- <int>0</int>
- <int>+2147483647</int>
- <int>-2147483648</int>
- <int> -1234567890 </int>
-
- <unsigned-int>0</unsigned-int>
- <unsigned-int>4294967295</unsigned-int>
- <unsigned-int> 1234567890 </unsigned-int>
-
- <long>0</long>
- <long>+9223372036854775807</long>
- <long>-9223372036854775808</long>
- <long> -1234567890123456789 </long>
-
- <unsigned-long>0</unsigned-long>
- <unsigned-long>18446744073709551615</unsigned-long>
- <unsigned-long> 12345678901234567890 </unsigned-long>
-
- <integer>0</integer>
- <integer> +2147483647 </integer>
- <integer>-02147483648</integer>
- <integer>-1234567890</integer>
-
- <negative-integer>-02147483648</negative-integer>
- <negative-integer> -1234567890 </negative-integer>
-
- <non-positive-integer>0</non-positive-integer>
- <non-positive-integer>-02147483648</non-positive-integer>
- <non-positive-integer> -1234567890 </non-positive-integer>
-
- <positive-integer>4294967295</positive-integer>
- <positive-integer> +01234567890 </positive-integer>
-
- <non-negative-integer>0</non-negative-integer>
- <non-negative-integer>4294967295</non-negative-integer>
- <non-negative-integer> +01234567890 </non-negative-integer>
-
- <float>0</float>
- <float>+0</float>
- <float>-0</float>
- <float>INF</float>
- <float>-INF</float>
- <float>NaN</float>
- <float> 123.567 </float>
- <float>+123.567</float>
- <float>-123.567e5</float>
- <float>-.45E-5</float>
-
- <double>0</double>
- <double>+0</double>
- <double>-0</double>
- <double>INF</double>
- <double>-INF</double>
- <double>NaN</double>
- <double> 123.567 </double>
- <double>+123.567</double>
- <double>-123.567e5</double>
- <double>-.45E-5</double>
-
- <decimal>0</decimal>
- <decimal>+0</decimal>
- <decimal>-0</decimal>
- <decimal> 123.567 </decimal>
- <decimal>+123.567</decimal>
- <decimal>-123.567</decimal>
-
- <string>string space
-newline
- </string>
-
- <normalized-string> string space
-newline
-
- </normalized-string>
-
- <token> string space
-newline
-
- </token>
-
- <name> as123:345-.abs </name>
-
- <nmtoken> 1as123:345-.abs </nmtoken>
-
- <nmtokens> abc 123 </nmtokens>
-
- <ncname> as123_345-.abs </ncname>
-
- <id> as123_345-.abs </id>
- <id> abc </id>
- <id> a123 </id>
-
- <idref> as123_345-.abs </idref>
-
- <idrefs> abc a123 </idrefs>
-
- <language> x </language>
- <language> en </language>
- <language> en-us </language>
- <language>one-two-three-four44-seven77-eight888</language>
-
- <uri> </uri>
- <uri> relative </uri>
- <uri> #id </uri>
- <uri> http://www.example.com/foo#bar </uri>
-
- <qname>schemaLocation</qname>
- <qname>xsi:schemaLocation</qname>
-
- <base64_binary> MTIzND
- VhYmNqaw = =</base64_binary>
- <base64_binary>YQ==</base64_binary>
- <base64_binary>YWI=</base64_binary>
- <base64_binary>YWJj</base64_binary>
-
- <hex_binary> </hex_binary>
- <hex_binary> 31323334356162636a6b </hex_binary>
-
- <gday> ---12+12:00 </gday>
- <gday>---01</gday>
- <gday>---31</gday>
- <gday>---15Z</gday>
- <gday>---15-14:00</gday>
-
- <gmonth> --10+12:00 </gmonth>
- <gmonth>--01</gmonth>
- <gmonth>--12Z</gmonth>
-
- <gyear> 2007+12:00 </gyear>
- <gyear>0001</gyear>
- <gyear>-20000Z</gyear>
-
- <gmonth_day> --10-28+12:00 </gmonth_day>
- <gmonth_day>--12-31</gmonth_day>
- <gmonth_day>--01-01Z</gmonth_day>
-
- <gyear_month> 2007-12+12:00 </gyear_month>
- <gyear_month>-2007-10</gyear_month>
- <gyear_month>20007-10Z</gyear_month>
- <gyear_month>-20007-01</gyear_month>
-
- <date> 2007-12-26+12:00 </date>
- <date>-2007-10-15</date>
- <date>20007-12-31Z</date>
- <date>-20007-01-01</date>
-
- <time> 12:46:23.456+12:00 </time>
- <time>12:13:14</time>
- <time>12:13:14Z</time>
-
- <date_time> 2007-12-26T12:13:14.123+12:00 </date_time>
- <date_time>-2007-10-15T12:13:14</date_time>
- <date_time>20007-12-31T12:13:14Z</date_time>
- <date_time>-20007-01-01T12:13:14</date_time>
-
- <duration> -P2007Y13M32DT25H61M61.123S </duration>
- <duration>P1Y</duration>
- <duration>P1M</duration>
- <duration>P1D</duration>
- <duration>PT1H</duration>
- <duration>PT1M</duration>
- <duration>PT1.1S</duration>
- <duration>P1YT1S</duration>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/built-in/test.xsd b/xsd/tests/cxx/parser/built-in/test.xsd
deleted file mode 100644
index 9c00eb4..0000000
--- a/xsd/tests/cxx/parser/built-in/test.xsd
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="type">
- <sequence>
- <element name="any-type" type="anyType" maxOccurs="unbounded"/>
- <element name="any-simple-type" type="anySimpleType" maxOccurs="unbounded"/>
-
- <element name="boolean" type="boolean" maxOccurs="unbounded"/>
-
- <element name="byte" type="byte" maxOccurs="unbounded"/>
- <element name="unsigned-byte" type="unsignedByte" maxOccurs="unbounded"/>
- <element name="short" type="short" maxOccurs="unbounded"/>
- <element name="unsigned-short" type="unsignedShort" maxOccurs="unbounded"/>
- <element name="int" type="int" maxOccurs="unbounded"/>
- <element name="unsigned-int" type="unsignedInt" maxOccurs="unbounded"/>
- <element name="long" type="long" maxOccurs="unbounded"/>
- <element name="unsigned-long" type="unsignedLong" maxOccurs="unbounded"/>
-
- <element name="integer" type="integer" maxOccurs="unbounded"/>
- <element name="negative-integer" type="negativeInteger" maxOccurs="unbounded"/>
- <element name="non-positive-integer" type="nonPositiveInteger" maxOccurs="unbounded"/>
- <element name="positive-integer" type="positiveInteger" maxOccurs="unbounded"/>
- <element name="non-negative-integer" type="nonNegativeInteger" maxOccurs="unbounded"/>
-
- <element name="float" type="float" maxOccurs="unbounded"/>
- <element name="double" type="double" maxOccurs="unbounded"/>
- <element name="decimal" type="decimal" maxOccurs="unbounded"/>
-
- <element name="string" type="string" maxOccurs="unbounded"/>
- <element name="normalized-string" type="normalizedString" maxOccurs="unbounded"/>
- <element name="token" type="token" maxOccurs="unbounded"/>
- <element name="name" type="Name" maxOccurs="unbounded"/>
- <element name="nmtoken" type="NMTOKEN" maxOccurs="unbounded"/>
- <element name="nmtokens" type="NMTOKENS" maxOccurs="unbounded"/>
- <element name="ncname" type="NCName" maxOccurs="unbounded"/>
- <element name="id" type="ID" maxOccurs="unbounded"/>
- <element name="idref" type="IDREF" maxOccurs="unbounded"/>
- <element name="idrefs" type="IDREFS" maxOccurs="unbounded"/>
-
- <element name="language" type="language" maxOccurs="unbounded"/>
- <element name="uri" type="anyURI" maxOccurs="unbounded"/>
- <element name="qname" type="QName" maxOccurs="unbounded"/>
-
- <element name="base64_binary" type="base64Binary" maxOccurs="unbounded"/>
- <element name="hex_binary" type="hexBinary" maxOccurs="unbounded"/>
-
- <element name="gday" type="gDay" maxOccurs="unbounded"/>
- <element name="gmonth" type="gMonth" maxOccurs="unbounded"/>
- <element name="gyear" type="gYear" maxOccurs="unbounded"/>
- <element name="gmonth_day" type="gMonthDay" maxOccurs="unbounded"/>
- <element name="gyear_month" type="gYearMonth" maxOccurs="unbounded"/>
- <element name="date" type="date" maxOccurs="unbounded"/>
- <element name="time" type="time" maxOccurs="unbounded"/>
- <element name="date_time" type="dateTime" maxOccurs="unbounded"/>
- <element name="duration" type="duration" maxOccurs="unbounded"/>
-
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/enumeration/driver.cxx b/xsd/tests/cxx/parser/enumeration/driver.cxx
deleted file mode 100644
index acd95a0..0000000
--- a/xsd/tests/cxx/parser/enumeration/driver.cxx
+++ /dev/null
@@ -1,82 +0,0 @@
-// file : tests/cxx/parser/enumeration/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test xsd:enumeration parsing.
-//
-
-#include <string>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace xml_schema;
-
-struct digit_pimpl: test::digit_pskel, int_pimpl
-{
-};
-
-struct gender_pimpl: test::gender_pskel, string_pimpl
-{
- virtual ::gender
- post_gender ()
- {
- std::string str (post_string ());
-
- if (str == "male")
- return male;
- else
- return female;
- }
-};
-
-struct type_pimpl: test::type_pskel
-{
- virtual void
- digit (int i)
- {
- cout << i << endl;
- }
-
- virtual void
- gender (::gender g)
- {
- cout << g << endl;
- }
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- digit_pimpl digit_p;
- gender_pimpl gender_p;
- type_pimpl type_p;
-
- type_p.parsers (digit_p, gender_p);
-
- document doc_p (type_p, "test", "root");
-
- type_p.pre ();
- doc_p.parse (argv[1]);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (std::ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/enumeration/gender.hxx b/xsd/tests/cxx/parser/enumeration/gender.hxx
deleted file mode 100644
index 7540888..0000000
--- a/xsd/tests/cxx/parser/enumeration/gender.hxx
+++ /dev/null
@@ -1,14 +0,0 @@
-// file : tests/cxx/parser/enumeration/gender.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef GENDER_HXX
-#define GENDER_HXX
-
-enum gender
-{
- male,
- female
-};
-
-#endif // GENDER_HXX
diff --git a/xsd/tests/cxx/parser/enumeration/makefile b/xsd/tests/cxx/parser/enumeration/makefile
deleted file mode 100644
index e991260..0000000
--- a/xsd/tests/cxx/parser/enumeration/makefile
+++ /dev/null
@@ -1,84 +0,0 @@
-# file : tests/cxx/parser/enumeration/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --type-map $(src_base)/test.map
-$(gen): $(out_root)/xsd/xsd $(src_base)/test.map
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/enumeration/output b/xsd/tests/cxx/parser/enumeration/output
deleted file mode 100644
index 16db301..0000000
--- a/xsd/tests/cxx/parser/enumeration/output
+++ /dev/null
@@ -1,3 +0,0 @@
-1
-0
-1
diff --git a/xsd/tests/cxx/parser/enumeration/test.map b/xsd/tests/cxx/parser/enumeration/test.map
deleted file mode 100644
index f8868d6..0000000
--- a/xsd/tests/cxx/parser/enumeration/test.map
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace test
-{
- include "gender.hxx";
-
- digit int int;
- gender ::gender ::gender;
-}
diff --git a/xsd/tests/cxx/parser/enumeration/test.xml b/xsd/tests/cxx/parser/enumeration/test.xml
deleted file mode 100644
index a6fa893..0000000
--- a/xsd/tests/cxx/parser/enumeration/test.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <digit>1</digit>
-
- <gender>male</gender>
- <gender>female</gender>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/enumeration/test.xsd b/xsd/tests/cxx/parser/enumeration/test.xsd
deleted file mode 100644
index ded3a18..0000000
--- a/xsd/tests/cxx/parser/enumeration/test.xsd
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="digit">
- <restriction base="int">
- <enumeration value="0"/>
- <enumeration value="1"/>
- <enumeration value="2"/>
- <enumeration value="3"/>
- <enumeration value="4"/>
- <enumeration value="5"/>
- <enumeration value="6"/>
- <enumeration value="7"/>
- <enumeration value="8"/>
- <enumeration value="9"/>
- </restriction>
- </simpleType>
-
- <simpleType name="gender">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <complexType name="type">
- <choice maxOccurs="unbounded">
- <element name="digit" type="t:digit"/>
- <element name="gender" type="t:gender"/>
- </choice>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/generated-impl/makefile b/xsd/tests/cxx/parser/generated-impl/makefile
deleted file mode 100644
index 251fd41..0000000
--- a/xsd/tests/cxx/parser/generated-impl/makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-# file : tests/cxx/parser/generated-impl/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-
-obj := $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.o) $(xsd:.xsd=-pimpl.o) $(xsd:.xsd=-driver.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/$(xsd:.xsd=-driver)
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) \
- $(xsd:.xsd=-pskel.ixx) \
- $(xsd:.xsd=-pskel.cxx) \
- $(xsd:.xsd=-pimpl.hxx) \
- $(xsd:.xsd=-pimpl.cxx) \
- $(xsd:.xsd=-driver.cxx)
-
-gen := $(addprefix $(out_base)/,$(genf))
-
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-print-impl --generate-test-driver \
---force-overwrite
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pimpl.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := $(xsd:.xsd=-driver) $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-xsd_parser_impl_suffix := -pimpl
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/generated-impl/output b/xsd/tests/cxx/parser/generated-impl/output
deleted file mode 100644
index 7c58647..0000000
--- a/xsd/tests/cxx/parser/generated-impl/output
+++ /dev/null
@@ -1,122 +0,0 @@
-gender: male
-foo: foo
-gender: male
-int: 0
-int: 1
-int: 2
-int: 3
-foo: foo
-int: 3
-int: 2
-int: 1
-int: 0
-union: 9
-foo: foo
-union: string
-x: x
-a: aaa
-x: x
-y: y
-a: aaa
-b: bbb
-boolean: 1
-boolean: 0
-boolean: 1
-boolean: 0
-byte: 0
-byte: 123
-byte: -123
-unsigned-byte: 0
-unsigned-byte: 123
-short: 0
-short: -1234
-short: 1234
-unsigned-short: 0
-unsigned-short: 1234
-int: 0
-int: -12345
-int: 12345
-unsigned-int: 0
-unsigned-int: 12345
-long: 0
-long: -123456
-long: 123456
-unsigned-long: 0
-unsigned-long: 123456
-integer: 0
-integer: -123456
-integer: 123456
-negative-integer: -123456
-non-positive-integer: 0
-non-positive-integer: -123456
-positive-integer: 123456
-non-negative-integer: 0
-non-negative-integer: 123456
-float: 0
-float: 1.123
-float: -1.123
-double: 0
-double: 1.1234
-double: -1.1234
-decimal: 0
-decimal: 1.1234
-decimal: -1.1234
-string: string space newline
-normalized-string: string space newline
-token: string space newline
-name: as123:345-.abs
-nmtoken: 1as123:345-.abs
-nmtokens: abc 123
-ncname: as123_345-.abs
-id: abc
-id: a123
-idref: abc
-idrefs: abc a123
-language: en
-language: en-us
-uri: http://www.example.com/foo#bar
-qname: schemaLocation
-qname: xsi:schemaLocation
-base64_binary: 10 bytes
-base64_binary: 1 bytes
-base64_binary: 2 bytes
-base64_binary: 3 bytes
-hex_binary: 0 bytes
-hex_binary: 10 bytes
-gday: ---12+12:0
-gday: ---1
-gday: ---31
-gday: ---15+0:0
-gday: ---15-14:0
-gmonth: --10+12:0
-gmonth: --1
-gmonth: --12+0:0
-gyear: 2007+12:0
-gyear: 1
-gyear: -20000+0:0
-gmonth_day: --10-28+12:0
-gmonth_day: --12-31
-gmonth_day: --1-1+0:0
-gyear_month: 2007-12+12:0
-gyear_month: -2007-10
-gyear_month: 20007-10+0:0
-gyear_month: -20007-1
-date: 2007-12-26+12:0
-date: -2007-10-15
-date: 20007-12-31+0:0
-date: -20007-1-1
-time: 12:46:23.456+12:0
-time: 12:13:14
-time: 12:13:14+0:0
-date_time: 2007-12-26T12:13:14.123+12:0
-date_time: -2007-10-15T12:13:14
-date_time: 20007-12-31T12:13:14+0:0
-date_time: -20007-1-1T12:13:14
-duration: -P2007Y13M32DT25H61M61.123S
-duration: P1Y0M0DT0H0M0S
-duration: P0Y1M0DT0H0M0S
-duration: P0Y0M1DT0H0M0S
-duration: P0Y0M0DT1H0M0S
-duration: P0Y0M0DT0H1M0S
-duration: P0Y0M0DT0H0M1.1S
-duration: P1Y0M0DT0H0M1S
diff --git a/xsd/tests/cxx/parser/generated-impl/test.xml b/xsd/tests/cxx/parser/generated-impl/test.xml
deleted file mode 100644
index 2f29a39..0000000
--- a/xsd/tests/cxx/parser/generated-impl/test.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <gender>male</gender>
- <gender-extension foo="foo">male</gender-extension>
-
- <list>0 1 2 3</list>
- <list-extension foo="foo">3 2 1 0</list-extension>
-
- <union>9</union>
- <union-extension foo="foo">string</union-extension>
-
- <complex x="x">
- <a>aaa</a>
- </complex>
-
- <complex-extension x="x" y="y">
- <a>aaa</a>
- <b>bbb</b>
- </complex-extension>
-
- <any-type>aaa<b>bbb</b>ccc</any-type>
- <any-simple-type>abc123</any-simple-type>
-
- <boolean>1</boolean>
- <boolean> 0 </boolean>
- <boolean>true</boolean>
- <boolean> false </boolean>
-
- <byte>0</byte>
- <byte>123</byte>
- <byte>-123</byte>
-
- <unsigned-byte>0</unsigned-byte>
- <unsigned-byte>123</unsigned-byte>
-
- <short>0</short>
- <short>-1234</short>
- <short>1234</short>
-
- <unsigned-short>0</unsigned-short>
- <unsigned-short>1234</unsigned-short>
-
- <int>0</int>
- <int>-12345</int>
- <int>12345</int>
-
- <unsigned-int>0</unsigned-int>
- <unsigned-int>12345</unsigned-int>
-
- <long>0</long>
- <long>-123456</long>
- <long>123456</long>
-
- <unsigned-long>0</unsigned-long>
- <unsigned-long>123456</unsigned-long>
-
- <integer>0</integer>
- <integer>-123456</integer>
- <integer>123456</integer>
-
- <negative-integer>-123456</negative-integer>
-
- <non-positive-integer>0</non-positive-integer>
- <non-positive-integer>-123456</non-positive-integer>
-
- <positive-integer>123456</positive-integer>
-
- <non-negative-integer>0</non-negative-integer>
- <non-negative-integer>123456</non-negative-integer>
-
- <float>0</float>
- <float>1.123</float>
- <float>-1.123</float>
-
- <double>0</double>
- <double>1.1234</double>
- <double>-1.1234</double>
-
- <decimal>0</decimal>
- <decimal>1.1234</decimal>
- <decimal>-1.1234</decimal>
-
- <string>string space newline</string>
-
- <normalized-string>string space newline</normalized-string>
-
- <token> string space newline</token>
-
- <name>as123:345-.abs</name>
-
- <nmtoken>1as123:345-.abs</nmtoken>
-
- <nmtokens>abc 123</nmtokens>
-
- <ncname>as123_345-.abs</ncname>
-
- <id>abc</id>
- <id>a123</id>
-
- <idref>abc</idref>
-
- <idrefs>abc a123</idrefs>
-
- <language>en</language>
- <language>en-us</language>
-
- <uri>http://www.example.com/foo#bar</uri>
-
- <qname>schemaLocation</qname>
- <qname>xsi:schemaLocation</qname>
-
- <base64_binary>MTIzNDVhYmNqaw==</base64_binary>
- <base64_binary>YQ==</base64_binary>
- <base64_binary>YWI=</base64_binary>
- <base64_binary>YWJj</base64_binary>
-
- <hex_binary></hex_binary>
- <hex_binary>31323334356162636a6b</hex_binary>
-
- <gday>---12+12:00</gday>
- <gday>---01</gday>
- <gday>---31</gday>
- <gday>---15Z</gday>
- <gday>---15-14:00</gday>
-
- <gmonth>--10+12:00</gmonth>
- <gmonth>--01</gmonth>
- <gmonth>--12Z</gmonth>
-
- <gyear>2007+12:00</gyear>
- <gyear>0001</gyear>
- <gyear>-20000Z</gyear>
-
- <gmonth_day>--10-28+12:00</gmonth_day>
- <gmonth_day>--12-31</gmonth_day>
- <gmonth_day>--01-01Z</gmonth_day>
-
- <gyear_month>2007-12+12:00</gyear_month>
- <gyear_month>-2007-10</gyear_month>
- <gyear_month>20007-10Z</gyear_month>
- <gyear_month>-20007-01</gyear_month>
-
- <date>2007-12-26+12:00</date>
- <date>-2007-10-15</date>
- <date>20007-12-31Z</date>
- <date>-20007-01-01</date>
-
- <time>12:46:23.456+12:00</time>
- <time>12:13:14</time>
- <time>12:13:14Z</time>
-
- <date_time>2007-12-26T12:13:14.123+12:00</date_time>
- <date_time>-2007-10-15T12:13:14</date_time>
- <date_time>20007-12-31T12:13:14Z</date_time>
- <date_time>-20007-01-01T12:13:14</date_time>
-
- <duration>-P2007Y13M32DT25H61M61.123S</duration>
- <duration>P1Y</duration>
- <duration>P1M</duration>
- <duration>P1D</duration>
- <duration>PT1H</duration>
- <duration>PT1M</duration>
- <duration>PT1.1S</duration>
- <duration>P1YT1S</duration>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/generated-impl/test.xsd b/xsd/tests/cxx/parser/generated-impl/test.xsd
deleted file mode 100644
index 7bc8f23..0000000
--- a/xsd/tests/cxx/parser/generated-impl/test.xsd
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- enum -->
-
- <simpleType name="gender">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <complexType name="gender-extension">
- <simpleContent>
- <extension base="t:gender">
- <attribute name="foo" type="string"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <!-- list -->
-
- <simpleType name="list">
- <list itemType="int"/>
- </simpleType>
-
- <complexType name="list-extension">
- <simpleContent>
- <extension base="t:list">
- <attribute name="foo" type="string"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <!-- union -->
-
- <simpleType name="union">
- <union memberTypes="int string"/>
- </simpleType>
-
- <complexType name="union-extension">
- <simpleContent>
- <extension base="t:union">
- <attribute name="foo" type="string"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <!-- complex -->
-
- <complexType name="complex">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- <attribute name="x" type="string"/>
- </complexType>
-
- <complexType name="complex-extension">
- <complexContent>
- <extension base="t:complex">
- <sequence>
- <element name="b" type="string"/>
- </sequence>
- <attribute name="y" type="string"/>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="type">
- <sequence>
- <element name="gender" type="t:gender"/>
- <element name="gender-extension" type="t:gender-extension"/>
-
- <element name="list" type="t:list"/>
- <element name="list-extension" type="t:list-extension"/>
-
- <element name="union" type="t:union"/>
- <element name="union-extension" type="t:union-extension"/>
-
- <element name="complex" type="t:complex"/>
- <element name="complex-extension" type="t:complex-extension"/>
-
- <!-- Built-in types. -->
-
- <element name="any-type" type="anyType" maxOccurs="unbounded"/>
- <element name="any-simple-type" type="anySimpleType" maxOccurs="unbounded"/>
-
- <element name="boolean" type="boolean" maxOccurs="unbounded"/>
-
- <element name="byte" type="byte" maxOccurs="unbounded"/>
- <element name="unsigned-byte" type="unsignedByte" maxOccurs="unbounded"/>
- <element name="short" type="short" maxOccurs="unbounded"/>
- <element name="unsigned-short" type="unsignedShort" maxOccurs="unbounded"/>
- <element name="int" type="int" maxOccurs="unbounded"/>
- <element name="unsigned-int" type="unsignedInt" maxOccurs="unbounded"/>
- <element name="long" type="long" maxOccurs="unbounded"/>
- <element name="unsigned-long" type="unsignedLong" maxOccurs="unbounded"/>
-
- <element name="integer" type="integer" maxOccurs="unbounded"/>
- <element name="negative-integer" type="negativeInteger" maxOccurs="unbounded"/>
- <element name="non-positive-integer" type="nonPositiveInteger" maxOccurs="unbounded"/>
- <element name="positive-integer" type="positiveInteger" maxOccurs="unbounded"/>
- <element name="non-negative-integer" type="nonNegativeInteger" maxOccurs="unbounded"/>
-
- <element name="float" type="float" maxOccurs="unbounded"/>
- <element name="double" type="double" maxOccurs="unbounded"/>
- <element name="decimal" type="decimal" maxOccurs="unbounded"/>
-
- <element name="string" type="string" maxOccurs="unbounded"/>
- <element name="normalized-string" type="normalizedString" maxOccurs="unbounded"/>
- <element name="token" type="token" maxOccurs="unbounded"/>
- <element name="name" type="Name" maxOccurs="unbounded"/>
- <element name="nmtoken" type="NMTOKEN" maxOccurs="unbounded"/>
- <element name="nmtokens" type="NMTOKENS" maxOccurs="unbounded"/>
- <element name="ncname" type="NCName" maxOccurs="unbounded"/>
- <element name="id" type="ID" maxOccurs="unbounded"/>
- <element name="idref" type="IDREF" maxOccurs="unbounded"/>
- <element name="idrefs" type="IDREFS" maxOccurs="unbounded"/>
-
- <element name="language" type="language" maxOccurs="unbounded"/>
- <element name="uri" type="anyURI" maxOccurs="unbounded"/>
- <element name="qname" type="QName" maxOccurs="unbounded"/>
-
- <element name="base64_binary" type="base64Binary" maxOccurs="unbounded"/>
- <element name="hex_binary" type="hexBinary" maxOccurs="unbounded"/>
-
- <element name="gday" type="gDay" maxOccurs="unbounded"/>
- <element name="gmonth" type="gMonth" maxOccurs="unbounded"/>
- <element name="gyear" type="gYear" maxOccurs="unbounded"/>
- <element name="gmonth_day" type="gMonthDay" maxOccurs="unbounded"/>
- <element name="gyear_month" type="gYearMonth" maxOccurs="unbounded"/>
- <element name="date" type="date" maxOccurs="unbounded"/>
- <element name="time" type="time" maxOccurs="unbounded"/>
- <element name="date_time" type="dateTime" maxOccurs="unbounded"/>
- <element name="duration" type="duration" maxOccurs="unbounded"/>
-
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/list/driver.cxx b/xsd/tests/cxx/parser/list/driver.cxx
deleted file mode 100644
index 0a4071a..0000000
--- a/xsd/tests/cxx/parser/list/driver.cxx
+++ /dev/null
@@ -1,106 +0,0 @@
-// file : tests/cxx/parser/list/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test xsd:list parsing.
-//
-
-#include <string>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-
-struct string_list_pimpl: string_list_pskel
-{
- virtual void
- pre ()
- {
- cout << "{" << endl;
- }
-
- virtual void
- item (string const& v)
- {
- cout << " '" << v << "'" << endl;
- }
-
- virtual void
- post_string_list ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct string_list_lang_pimpl: string_list_lang_pskel
-{
- virtual void
- pre ()
- {
- cout << "{" << endl;
- }
-
- virtual void
- item (string const& v)
- {
- cout << " '" << v << "'" << endl;
- }
-
- virtual void
- lang (string const& v)
- {
- cout << " lang: '" << v << "'" << endl;
- }
-
- virtual void
- post_string_list_lang ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct type_pimpl: type_pskel
-{
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
- string_list_pimpl string_list_p;
- string_list_lang_pimpl string_list_lang_p;
- type_pimpl type_p;
-
- string_list_p.parsers (string_p);
- string_list_lang_p.parsers (string_p, string_p);
- type_p.parsers (string_list_p, string_list_lang_p);
-
- xml_schema::document doc_p (type_p, "test", "root");
-
- type_p.pre ();
- doc_p.parse (argv[1]);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/list/makefile b/xsd/tests/cxx/parser/list/makefile
deleted file mode 100644
index 9fc63fd..0000000
--- a/xsd/tests/cxx/parser/list/makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-# file : tests/cxx/parser/list/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/list/output b/xsd/tests/cxx/parser/list/output
deleted file mode 100644
index 3642c4d..0000000
--- a/xsd/tests/cxx/parser/list/output
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-}
-
-{
-}
-
-{
-}
-
-{
- 'one'
-}
-
-{
- 'one'
- 'two'
- 'three'
-}
-
-{
- lang: 'en'
- 'one'
- 'two'
- 'three'
-}
-
diff --git a/xsd/tests/cxx/parser/list/test.xml b/xsd/tests/cxx/parser/list/test.xml
deleted file mode 100644
index 52229db..0000000
--- a/xsd/tests/cxx/parser/list/test.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <string-list/>
-
- <string-list> </string-list>
-
- <string-list>
-
- </string-list>
-
- <string-list>one</string-list>
-
- <string-list>
- one two
- three
- </string-list>
-
- <string-list-lang lang="en">
- one two
- three
- </string-list-lang>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/list/test.xsd b/xsd/tests/cxx/parser/list/test.xsd
deleted file mode 100644
index 79bd084..0000000
--- a/xsd/tests/cxx/parser/list/test.xsd
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="string-list">
- <list itemType="string"/>
- </simpleType>
-
- <complexType name="string-list-lang">
- <simpleContent>
- <extension base="t:string-list">
- <attribute name="lang" type="string"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="type">
- <choice maxOccurs="unbounded">
- <element name="string-list" type="t:string-list"/>
- <element name="string-list-lang" type="t:string-list-lang"/>
- </choice>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/makefile b/xsd/tests/cxx/parser/makefile
deleted file mode 100644
index 8031478..0000000
--- a/xsd/tests/cxx/parser/makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-# file : tests/cxx/parser/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := built-in enumeration generated-impl list recursive \
-name-clash/inheritance polymorphism test-template validation \
-union
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/parser/name-clash/inheritance/driver.cxx b/xsd/tests/cxx/parser/name-clash/inheritance/driver.cxx
deleted file mode 100644
index af70f88..0000000
--- a/xsd/tests/cxx/parser/name-clash/inheritance/driver.cxx
+++ /dev/null
@@ -1,63 +0,0 @@
-// file : tests/cxx/parser/name-clash/inheritance/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test for name clashes across inheritance hierarchy.
-//
-
-#include <string>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-
-struct derived_pimpl: derived_pskel
-{
- virtual void
- e (string const& v)
- {
- cout << "e: " << v << endl;
- }
-
- virtual void
- e1 (string const& v)
- {
- cout << "e1: " << v << endl;
- }
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
- derived_pimpl derived_p;
-
- derived_p.parsers (string_p, string_p);
-
- xml_schema::document doc_p (derived_p, "test", "root");
-
- derived_p.pre ();
- doc_p.parse (argv[1]);
- derived_p.post_derived ();
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (std::ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/name-clash/inheritance/makefile b/xsd/tests/cxx/parser/name-clash/inheritance/makefile
deleted file mode 100644
index 273c03c..0000000
--- a/xsd/tests/cxx/parser/name-clash/inheritance/makefile
+++ /dev/null
@@ -1,84 +0,0 @@
-# file : tests/cxx/parser/name-clash/inheritance/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-validation
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/name-clash/inheritance/output b/xsd/tests/cxx/parser/name-clash/inheritance/output
deleted file mode 100644
index 4efd51b..0000000
--- a/xsd/tests/cxx/parser/name-clash/inheritance/output
+++ /dev/null
@@ -1,2 +0,0 @@
-e: e
-e1: e1
diff --git a/xsd/tests/cxx/parser/name-clash/inheritance/test.xml b/xsd/tests/cxx/parser/name-clash/inheritance/test.xml
deleted file mode 100644
index 8c17101..0000000
--- a/xsd/tests/cxx/parser/name-clash/inheritance/test.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <e>e</e>
- <e>e1</e>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/name-clash/inheritance/test.xsd b/xsd/tests/cxx/parser/name-clash/inheritance/test.xsd
deleted file mode 100644
index 62a782e..0000000
--- a/xsd/tests/cxx/parser/name-clash/inheritance/test.xsd
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="base">
- <sequence>
- <element name="e" type="string"/>
- </sequence>
- </complexType>
-
- <complexType name="derived">
- <complexContent>
- <extension base="t:base">
- <sequence>
- <element name="e" type="string"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <element name="root" type="t:derived"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/polymorphism/makefile b/xsd/tests/cxx/parser/polymorphism/makefile
deleted file mode 100644
index bb1ebeb..0000000
--- a/xsd/tests/cxx/parser/polymorphism/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/parser/polymorphism/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := same-type recursive
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/parser/polymorphism/recursive/driver.cxx b/xsd/tests/cxx/parser/polymorphism/recursive/driver.cxx
deleted file mode 100644
index 2ad96cd..0000000
--- a/xsd/tests/cxx/parser/polymorphism/recursive/driver.cxx
+++ /dev/null
@@ -1,69 +0,0 @@
-// file : tests/cxx/parser/polymorphism/recursive/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test polymorphic recursive parsing.
-//
-
-#include <string>
-#include <iostream>
-
-#include "test-pskel.hxx"
-#include "test-pimpl.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::int_pimpl int_p;
-
- root_pimpl root_p;
- expression_pimpl expression_p;
- recursive_pimpl recursive_p;
- value_a_pimpl value_a_p;
- value_b_pimpl value_b_p;
-
- xml_schema::parser_map_impl expression_map;
-
- // Connect the parsers together.
- //
- root_p.parsers (expression_p);
- expression_map.insert(value_a_p);
- expression_map.insert(value_b_p);
- expression_map.insert(recursive_p);
-
- root_p.expression_parser(expression_map);
-
- recursive_p.parsers(expression_p);
- recursive_p.expression_parser(expression_map);
-
- value_a_p.parsers(int_p);
- value_b_p.parsers(int_p);
-
- xml_schema::document doc_p (root_p, "test", "root", true);
-
- root_p.pre ();
- doc_p.parse (argv[1]);
- root_p.post_root ();
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (std::ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/polymorphism/recursive/makefile b/xsd/tests/cxx/parser/polymorphism/recursive/makefile
deleted file mode 100644
index 50e4f3d..0000000
--- a/xsd/tests/cxx/parser/polymorphism/recursive/makefile
+++ /dev/null
@@ -1,84 +0,0 @@
-# file : tests/cxx/parser/polymorphism/recursive/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx test-pimpl.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-polymorphic
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/polymorphism/recursive/output b/xsd/tests/cxx/parser/polymorphism/recursive/output
deleted file mode 100644
index 28a835f..0000000
--- a/xsd/tests/cxx/parser/polymorphism/recursive/output
+++ /dev/null
@@ -1,22 +0,0 @@
-root start
-recursive start
-value_a begin
-value->constant
-value: post_expression override
-value_a: post_value override
-value_a end
-recursive->expression event
-recursive start
-value_b begin
-value->constant
-value: post_expression override
-value_b: post_value override
-value_b end
-recursive->expression event
-recursive: post_expression override
-recursive end
-recursive->expression event
-recursive: post_expression override
-recursive end
-root->expression
-root end
diff --git a/xsd/tests/cxx/parser/polymorphism/recursive/test-pimpl.cxx b/xsd/tests/cxx/parser/polymorphism/recursive/test-pimpl.cxx
deleted file mode 100644
index fe32626..0000000
--- a/xsd/tests/cxx/parser/polymorphism/recursive/test-pimpl.cxx
+++ /dev/null
@@ -1,148 +0,0 @@
-// file : tests/cxx/parser/polymorphism/recursive/test-pimpl.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <iostream>
-
-#include "test-pimpl.hxx"
-
-using namespace std;
-
-namespace test
-{
- // root_pimpl
- //
-
- void root_pimpl::
- pre ()
- {
- cout << "root start" << endl;
- }
-
- void root_pimpl::
- expression ()
- {
- cout << "root->expression" << endl;
- }
-
- void root_pimpl::
- post_root ()
- {
- cout << "root end" << endl;
- }
-
- // expression_pimpl
- //
-
- void expression_pimpl::
- pre ()
- {
- cout << "expression begin" << endl;
- }
-
- void expression_pimpl::
- post_expression ()
- {
- cout << "expression end" << endl;
- }
-
- // recursive_pimpl
- //
-
- void recursive_pimpl::
- pre ()
- {
- cout << "recursive start" << endl;
- }
-
- void recursive_pimpl::
- expression ()
- {
- cout << "recursive->expression event" << endl;
- }
-
- void recursive_pimpl::
- post_expression ()
- {
- cout << "recursive: post_expression override" << endl;
- post_recursive ();
- }
-
- void recursive_pimpl::
- post_recursive ()
- {
- cout << "recursive end" << endl;
- }
-
- // value_pimpl
- //
-
- void value_pimpl::
- pre ()
- {
- cout << "value begin" << endl;
- }
-
- void value_pimpl::
- constant (int)
- {
- cout << "value->constant" << endl;
- }
-
- void value_pimpl::
- post_expression ()
- {
- cout << "value: post_expression override" << endl;
- post_value ();
- }
-
- void value_pimpl::
- post_value ()
- {
- cout << "value end" << endl;
- }
-
- // value_a_pimpl
- //
-
- void value_a_pimpl::
- pre ()
- {
- cout << "value_a begin" << endl;
- }
-
- void value_a_pimpl::
- post_value ()
- {
- cout << "value_a: post_value override" << endl;
- post_value_a ();
- }
-
- void value_a_pimpl::
- post_value_a ()
- {
- cout << "value_a end" << endl;
- }
-
- // value_b_pimpl
- //
-
- void value_b_pimpl::
- pre ()
- {
- cout << "value_b begin" << endl;
- }
-
- void value_b_pimpl::
- post_value ()
- {
- cout << "value_b: post_value override" << endl;
- post_value_b ();
- }
-
- void value_b_pimpl::
- post_value_b ()
- {
- cout << "value_b end" << endl;
- }
-}
diff --git a/xsd/tests/cxx/parser/polymorphism/recursive/test-pimpl.hxx b/xsd/tests/cxx/parser/polymorphism/recursive/test-pimpl.hxx
deleted file mode 100644
index f345720..0000000
--- a/xsd/tests/cxx/parser/polymorphism/recursive/test-pimpl.hxx
+++ /dev/null
@@ -1,95 +0,0 @@
-// file : tests/cxx/parser/polymorphism/recursive/test-pimpl.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef TEST_PIMPL_HXX
-#define TEST_PIMPL_HXX
-
-#include "test-pskel.hxx"
-
-namespace test
-{
- class root_pimpl: public virtual root_pskel
- {
- public:
- virtual void
- pre ();
-
- virtual void
- expression ();
-
- virtual void
- post_root ();
- };
-
- class expression_pimpl: public virtual expression_pskel
- {
- public:
- virtual void
- pre ();
-
- virtual void
- post_expression ();
- };
-
- class recursive_pimpl: public virtual recursive_pskel,
- public expression_pimpl
- {
- public:
- virtual void
- pre ();
-
- virtual void
- expression ();
-
- virtual void
- post_expression ();
-
- virtual void
- post_recursive ();
- };
-
- class value_pimpl: public virtual value_pskel, public expression_pimpl
- {
- public:
- virtual void
- pre ();
-
- virtual void
- constant (int);
-
- virtual void
- post_expression ();
-
- virtual void
- post_value ();
- };
-
- class value_a_pimpl: public virtual value_a_pskel, public value_pimpl
- {
- public:
- virtual void
- pre ();
-
- virtual void
- post_value ();
-
- virtual void
- post_value_a ();
- };
-
- class value_b_pimpl: public virtual value_b_pskel, public value_pimpl
- {
- public:
- virtual void
- pre ();
-
- virtual void
- post_value ();
-
- virtual void
- post_value_b ();
- };
-}
-
-#endif // TEST_PIMPL_HXX
diff --git a/xsd/tests/cxx/parser/polymorphism/recursive/test.xml b/xsd/tests/cxx/parser/polymorphism/recursive/test.xml
deleted file mode 100644
index 42035ba..0000000
--- a/xsd/tests/cxx/parser/polymorphism/recursive/test.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root xmlns="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
- <recursive>
- <value-a>
- <constant>1</constant>
- </value-a>
- <recursive>
- <value-b>
- <constant>2</constant>
- </value-b>
- </recursive>
- </recursive>
-</root>
diff --git a/xsd/tests/cxx/parser/polymorphism/recursive/test.xsd b/xsd/tests/cxx/parser/polymorphism/recursive/test.xsd
deleted file mode 100644
index affcc8a..0000000
--- a/xsd/tests/cxx/parser/polymorphism/recursive/test.xsd
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:t="test"
- targetNamespace="test"
- elementFormDefault="qualified">
-
- <element name="root" type="t:root"/>
- <complexType name="root">
- <sequence>
- <element ref="t:expression" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="expression" type="t:expression" abstract="true"/>
- <complexType name="expression" abstract="true"/>
-
- <element name="recursive" type="t:recursive" substitutionGroup="t:expression"/>
- <complexType name="recursive">
- <complexContent>
- <extension base="t:expression">
- <sequence minOccurs="0" maxOccurs="unbounded">
- <element ref="t:expression"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <element name="value" type="t:value" abstract="true" substitutionGroup="t:expression"/>
- <complexType name="value" abstract="true">
- <complexContent>
- <extension base="t:expression">
- <sequence>
- <element name="constant" type="int"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <element name="value-a" type="t:value-a" substitutionGroup="t:expression"/>
- <complexType name="value-a">
- <complexContent>
- <extension base="t:value"/>
- </complexContent>
- </complexType>
-
- <element name="value-b" type="t:value-b" substitutionGroup="t:expression"/>
- <complexType name="value-b">
- <complexContent>
- <extension base="t:value"/>
- </complexContent>
- </complexType>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/polymorphism/same-type/driver.cxx b/xsd/tests/cxx/parser/polymorphism/same-type/driver.cxx
deleted file mode 100644
index 05abc3c..0000000
--- a/xsd/tests/cxx/parser/polymorphism/same-type/driver.cxx
+++ /dev/null
@@ -1,63 +0,0 @@
-// file : tests/cxx/parser/polymorphism/same-type/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test substitution group and xsi:type that don't change the type.
-//
-
-#include <string>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-
-struct base_pimpl: base_pskel
-{
- virtual void
- a (string const& v)
- {
- cout << v << endl;
- }
-};
-
-struct type_pimpl: type_pskel
-{
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
- base_pimpl base_p;
- type_pimpl type_p;
-
- base_p.parsers (string_p);
- type_p.parsers (base_p);
-
- xml_schema::document doc_p (type_p, "test", "root", true);
-
- type_p.pre ();
- doc_p.parse (argv[1]);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (std::ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/polymorphism/same-type/makefile b/xsd/tests/cxx/parser/polymorphism/same-type/makefile
deleted file mode 100644
index 256b34d..0000000
--- a/xsd/tests/cxx/parser/polymorphism/same-type/makefile
+++ /dev/null
@@ -1,84 +0,0 @@
-# file : tests/cxx/parser/polymorphism/same-type/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-polymorphic
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/polymorphism/same-type/output b/xsd/tests/cxx/parser/polymorphism/same-type/output
deleted file mode 100644
index d418277..0000000
--- a/xsd/tests/cxx/parser/polymorphism/same-type/output
+++ /dev/null
@@ -1,4 +0,0 @@
-a1
-a2
-a3
-a4
diff --git a/xsd/tests/cxx/parser/polymorphism/same-type/test.xml b/xsd/tests/cxx/parser/polymorphism/same-type/test.xml
deleted file mode 100644
index f8b6d1e..0000000
--- a/xsd/tests/cxx/parser/polymorphism/same-type/test.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <t:base><a>a1</a></t:base>
- <t:derived><a>a2</a></t:derived>
- <t:base xsi:type="t:base"><a>a3</a></t:base>
- <t:derived xsi:type="t:base"><a>a4</a></t:derived>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/polymorphism/same-type/test.xsd b/xsd/tests/cxx/parser/polymorphism/same-type/test.xsd
deleted file mode 100644
index a4157d3..0000000
--- a/xsd/tests/cxx/parser/polymorphism/same-type/test.xsd
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="base">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- </complexType>
-
- <element name="base" type="t:base"/>
- <element name="derived" type="t:base" substitutionGroup="t:base"/>
-
- <complexType name="type">
- <sequence>
- <element ref="t:base" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/recursive/driver.cxx b/xsd/tests/cxx/parser/recursive/driver.cxx
deleted file mode 100644
index 41f21e7..0000000
--- a/xsd/tests/cxx/parser/recursive/driver.cxx
+++ /dev/null
@@ -1,140 +0,0 @@
-// file : tests/cxx/parser/recursive/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test recursive parser invocation.
-//
-
-#include <iostream>
-#include <string>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-
-struct sub_pimpl: sub_type_pskel
-{
- virtual void
- pre ()
- {
- cout << "sub::pre" << endl;
- }
-
- virtual void
- sub ()
- {
- cout << "sub::sub" << endl;
- }
-
- virtual void
- sub2 ()
- {
- cout << "sub::sub2" << endl;
- }
-
- virtual void
- name (string const& n)
- {
- cout << "sub::name: " << n << endl;
- }
-
- virtual void
- post_sub_type ()
- {
- cout << "sub::post" << endl;
- }
-};
-
-struct indir_pimpl: indir_type_pskel
-{
- virtual void
- pre ()
- {
- cout << "indir::pre" << endl;
- }
-
- virtual void
- sub ()
- {
- cout << "indir::sub" << endl;
- }
-
- virtual void
- name (string const& n)
- {
- cout << "indir::name: " << n << endl;
- }
-
- virtual void
- post_indir_type ()
- {
- cout << "indir::post" << endl;
- }
-};
-
-struct test_pimpl: test_type_pskel
-{
- virtual void
- pre ()
- {
- cout << "test::pre" << endl;
- }
-
- virtual void
- sub ()
- {
- cout << "test::sub" << endl;
- }
-
- virtual void
- name (string const& n)
- {
- cout << "test::name: " << n << endl;
- }
-
- virtual void
- post_test_type ()
- {
- cout << "test::post" << endl;
- }
-};
-
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
-
- sub_pimpl sub_p;
- indir_pimpl indir_p;
- test_pimpl test_p;
-
- sub_p.parsers (sub_p, indir_p, sub_p, string_p);
- indir_p.parsers (sub_p, string_p);
- test_p.parsers (sub_p, string_p);
-
- xml_schema::document doc_p (test_p, "test");
-
- test_p.pre ();
- doc_p.parse (argv[1]);
- test_p.post_test_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/recursive/makefile b/xsd/tests/cxx/parser/recursive/makefile
deleted file mode 100644
index 8ccf0bc..0000000
--- a/xsd/tests/cxx/parser/recursive/makefile
+++ /dev/null
@@ -1,84 +0,0 @@
-# file : tests/cxx/parser/recursive/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-validation
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/recursive/output b/xsd/tests/cxx/parser/recursive/output
deleted file mode 100644
index f26fb72..0000000
--- a/xsd/tests/cxx/parser/recursive/output
+++ /dev/null
@@ -1,22 +0,0 @@
-test::pre
-test::name: testName
-sub::pre
-sub::name: subName
-sub::pre
-sub::name: sub-subName
-sub::post
-sub::sub
-indir::pre
-indir::name: sub-indirName
-sub::pre
-sub::name: sub-indir-subName
-sub::post
-indir::sub
-indir::post
-sub::pre
-sub::name: sub-sub2Name
-sub::post
-sub::sub2
-sub::post
-test::sub
-test::post
diff --git a/xsd/tests/cxx/parser/recursive/test.xml b/xsd/tests/cxx/parser/recursive/test.xml
deleted file mode 100644
index f6c219d..0000000
--- a/xsd/tests/cxx/parser/recursive/test.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="test.xsd"
- name="testName">
- <sub name="subName">
- <sub name="sub-subName"/>
- <indir name="sub-indirName">
- <sub name="sub-indir-subName"/>
- </indir>
- <sub2 name="sub-sub2Name"/>
- </sub>
-</test>
diff --git a/xsd/tests/cxx/parser/recursive/test.xsd b/xsd/tests/cxx/parser/recursive/test.xsd
deleted file mode 100644
index 33e1d2d..0000000
--- a/xsd/tests/cxx/parser/recursive/test.xsd
+++ /dev/null
@@ -1,27 +0,0 @@
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:complexType name="sub_type">
- <xs:sequence>
- <xs:element name="sub" type="sub_type" minOccurs="0"/>
- <xs:element name="indir" type="indir_type" minOccurs="0"/>
- <xs:element name="sub2" type="sub_type" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" />
- </xs:complexType>
-
- <xs:complexType name="indir_type">
- <xs:sequence>
- <xs:element name="sub" type="sub_type" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" />
- </xs:complexType>
-
- <xs:complexType name="test_type">
- <xs:sequence>
- <xs:element name="sub" type="sub_type" />
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" />
- </xs:complexType>
-
- <xs:element name="test" type="test_type" />
-</xs:schema>
diff --git a/xsd/tests/cxx/parser/test-template/driver.cxx b/xsd/tests/cxx/parser/test-template/driver.cxx
deleted file mode 100644
index 01ef390..0000000
--- a/xsd/tests/cxx/parser/test-template/driver.cxx
+++ /dev/null
@@ -1,67 +0,0 @@
-// file : tests/cxx/parser/test-template/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Insert test description here.
-//
-
-#include <string>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-
-struct type_pimpl: type_pskel
-{
- virtual void
- pre ()
- {
- }
-
- virtual void
- a (string const& v)
- {
- cout << v << endl;
- }
-
- virtual void
- post_type ()
- {
- }
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
- type_pimpl type_p;
-
- type_p.parsers (string_p);
-
- xml_schema::document doc_p (type_p, "test", "root");
-
- type_p.pre ();
- doc_p.parse (argv[1]);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (std::ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/test-template/makefile b/xsd/tests/cxx/parser/test-template/makefile
deleted file mode 100644
index dd1e19f..0000000
--- a/xsd/tests/cxx/parser/test-template/makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-# file : tests/cxx/parser/test-template/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/test-template/output b/xsd/tests/cxx/parser/test-template/output
deleted file mode 100644
index 7898192..0000000
--- a/xsd/tests/cxx/parser/test-template/output
+++ /dev/null
@@ -1 +0,0 @@
-a
diff --git a/xsd/tests/cxx/parser/test-template/test.xml b/xsd/tests/cxx/parser/test-template/test.xml
deleted file mode 100644
index 624a80c..0000000
--- a/xsd/tests/cxx/parser/test-template/test.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <a>a</a>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/test-template/test.xsd b/xsd/tests/cxx/parser/test-template/test.xsd
deleted file mode 100644
index 07bebc7..0000000
--- a/xsd/tests/cxx/parser/test-template/test.xsd
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="type">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/union/driver.cxx b/xsd/tests/cxx/parser/union/driver.cxx
deleted file mode 100644
index 5a576ba..0000000
--- a/xsd/tests/cxx/parser/union/driver.cxx
+++ /dev/null
@@ -1,61 +0,0 @@
-// file : tests/cxx/parser/union/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test xsd:union parsing.
-//
-
-#include <string>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-
-struct int_string_union_pimpl: int_string_union_pskel
-{
- virtual void
- _characters (const xml_schema::ro_string& s)
- {
- cout << "'" << s << "'" << endl;
- }
-};
-
-struct type_pimpl: type_pskel
-{
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- int_string_union_pimpl int_string_union_p;
- type_pimpl type_p;
-
- type_p.parsers (int_string_union_p);
-
- xml_schema::document doc_p (type_p, "test", "root");
-
- type_p.pre ();
- doc_p.parse (argv[1]);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (std::ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/union/makefile b/xsd/tests/cxx/parser/union/makefile
deleted file mode 100644
index 7de92ad..0000000
--- a/xsd/tests/cxx/parser/union/makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-# file : tests/cxx/parser/union/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/union/output b/xsd/tests/cxx/parser/union/output
deleted file mode 100644
index a92ffc3..0000000
--- a/xsd/tests/cxx/parser/union/output
+++ /dev/null
@@ -1,2 +0,0 @@
-'one'
-'1'
diff --git a/xsd/tests/cxx/parser/union/test.xml b/xsd/tests/cxx/parser/union/test.xml
deleted file mode 100644
index 5b3e799..0000000
--- a/xsd/tests/cxx/parser/union/test.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <int-string-union/>
- <int-string-union> </int-string-union>
- <int-string-union>one</int-string-union>
- <int-string-union>1</int-string-union>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/union/test.xsd b/xsd/tests/cxx/parser/union/test.xsd
deleted file mode 100644
index 5bf3d47..0000000
--- a/xsd/tests/cxx/parser/union/test.xsd
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="int-string-union">
- <union memberTypes="int string"/>
- </simpleType>
-
- <complexType name="type">
- <choice maxOccurs="unbounded">
- <element name="int-string-union" type="t:int-string-union"/>
- </choice>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/validation/all/driver.cxx b/xsd/tests/cxx/parser/validation/all/driver.cxx
deleted file mode 100644
index 71a21a0..0000000
--- a/xsd/tests/cxx/parser/validation/all/driver.cxx
+++ /dev/null
@@ -1,99 +0,0 @@
-// file : tests/cxx/parser/validation/all/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the all compositor validation.
-//
-
-#include <string>
-#include <fstream>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-
-struct all_pimpl: all_pskel
-{
- virtual void
- pre ()
- {
- cout << "{" << endl;
- }
-
- virtual void
- a (string const& v)
- {
- cout << " a = " << v << endl;
- }
-
- virtual void
- b (string const& v)
- {
- cout << " b = " << v << endl;
- }
-
- virtual void
- c (string const& v)
- {
- cout << " c = " << v << endl;
- }
-
- virtual void
- post_all ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct type_pimpl: type_pskel
-{
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
- all_pimpl all_p;
- type_pimpl type_p;
-
- all_p.parsers (string_p, string_p, string_p);
- type_p.parsers (all_p);
-
- xml_schema::document doc_p (type_p, "test", "root");
-
- try
- {
- ifstream ifs (argv[1]);
- type_p.pre ();
- doc_p.parse (ifs, argv[1], "", xml_schema::flags::dont_validate);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cout << " " << e << endl
- << "}" << endl
- << endl;
- }
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/all/makefile b/xsd/tests/cxx/parser/validation/all/makefile
deleted file mode 100644
index acc0a79..0000000
--- a/xsd/tests/cxx/parser/validation/all/makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-# file : tests/cxx/parser/validation/all/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-tests := 000 001 002 003
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-validation
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test.xsd $(src_base)/test-%.xml $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xml | diff -u $(src_base)/test-$*.std -)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/validation/all/test-000.std b/xsd/tests/cxx/parser/validation/all/test-000.std
deleted file mode 100644
index b4445f2..0000000
--- a/xsd/tests/cxx/parser/validation/all/test-000.std
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- a = a
- b = b
- c = c
-}
-
-{
- a = a
- c = c
- b = b
-}
-
-{
- b = b
- a = a
- c = c
-}
-
-{
- b = b
- c = c
- a = a
-}
-
-{
- c = c
- a = a
- b = b
-}
-
-{
- c = c
- b = b
- a = a
-}
-
-{
- a = a
- b = b
-}
-
-{
- a = a
- b = b
-}
-
diff --git a/xsd/tests/cxx/parser/validation/all/test-000.xml b/xsd/tests/cxx/parser/validation/all/test-000.xml
deleted file mode 100644
index 6e46fae..0000000
--- a/xsd/tests/cxx/parser/validation/all/test-000.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- all combinations -->
- <all>
- <a>a</a>
- <b>b</b>
- <c>c</c>
- </all>
-
- <all>
- <a>a</a>
- <c>c</c>
- <b>b</b>
- </all>
-
- <all>
- <b>b</b>
- <a>a</a>
- <c>c</c>
- </all>
-
- <all>
- <b>b</b>
- <c>c</c>
- <a>a</a>
- </all>
-
- <all>
- <c>c</c>
- <a>a</a>
- <b>b</b>
- </all>
-
- <all>
- <c>c</c>
- <b>b</b>
- <a>a</a>
- </all>
-
- <!-- optional c is not present -->
- <all>
- <a>a</a>
- <b>b</b>
- </all>
-
- <all>
- <a>a</a>
- <b>b</b>
- </all>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/all/test-001.std b/xsd/tests/cxx/parser/validation/all/test-001.std
deleted file mode 100644
index 0472ad9..0000000
--- a/xsd/tests/cxx/parser/validation/all/test-001.std
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- a = a
- c = c
- :9:9 error: expected element 'b'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/all/test-001.xml b/xsd/tests/cxx/parser/validation/all/test-001.xml
deleted file mode 100644
index 3df5600..0000000
--- a/xsd/tests/cxx/parser/validation/all/test-001.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- required b is not present (invalid) -->
- <all>
- <a>a</a>
- <c>c</c>
- </all>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/all/test-002.std b/xsd/tests/cxx/parser/validation/all/test-002.std
deleted file mode 100644
index c014230..0000000
--- a/xsd/tests/cxx/parser/validation/all/test-002.std
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- :7:9 error: expected element 'a'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/all/test-002.xml b/xsd/tests/cxx/parser/validation/all/test-002.xml
deleted file mode 100644
index aed0c0c..0000000
--- a/xsd/tests/cxx/parser/validation/all/test-002.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- invalid -->
- <all>
- </all>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/all/test-003.std b/xsd/tests/cxx/parser/validation/all/test-003.std
deleted file mode 100644
index dd8c0d3..0000000
--- a/xsd/tests/cxx/parser/validation/all/test-003.std
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- a = a
- b = b
- :9:7 error: unexpected element 'a'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/all/test-003.xml b/xsd/tests/cxx/parser/validation/all/test-003.xml
deleted file mode 100644
index b147cba..0000000
--- a/xsd/tests/cxx/parser/validation/all/test-003.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- invalid -->
- <all>
- <a>a</a>
- <b>b</b>
- <a>a</a>
- </all>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/all/test.xsd b/xsd/tests/cxx/parser/validation/all/test.xsd
deleted file mode 100644
index 1f670e3..0000000
--- a/xsd/tests/cxx/parser/validation/all/test.xsd
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="all">
- <all minOccurs="1">
- <element name="a" type="string"/>
- <element name="b" type="string"/>
- <element name="c" type="string" minOccurs="0"/>
- </all>
- </complexType>
-
- <complexType name="type">
- <sequence>
- <element name="all" type="t:all" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/validation/any/driver.cxx b/xsd/tests/cxx/parser/validation/any/driver.cxx
deleted file mode 100644
index f7773b4..0000000
--- a/xsd/tests/cxx/parser/validation/any/driver.cxx
+++ /dev/null
@@ -1,122 +0,0 @@
-// file : tests/cxx/parser/validation/any/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the any particle validation.
-//
-
-#include <string>
-#include <fstream>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-using xml_schema::ro_string;
-
-struct any_a_pimpl: any_a_pskel
-{
- virtual void
- pre ()
- {
- cout << "{" << endl;
- }
-
- virtual void
- a (string const& v)
- {
- cout << " a = " << v << endl;
- }
-
- virtual void
- x (string const& v)
- {
- cout << " x = " << v << endl;
- }
-
- virtual void
- _start_any_element (ro_string const&,
- ro_string const& n,
- ro_string const*)
- {
- cout << " start any element '" << n << "'" << endl;
- }
-
- virtual void
- _end_any_element (ro_string const&, ro_string const& n)
- {
- cout << " end any element '" << n << "'" << endl;
- }
-
- virtual void
- _any_attribute (ro_string const&,
- ro_string const& n,
- ro_string const& v)
- {
- cout << " any attribute " << n << " = '" << v << "'" << endl;
- }
-
- virtual void
- _any_characters (ro_string const& s)
- {
- cout << " any text: '" << s << "'" << endl;
- }
-
- virtual void
- post_any_a ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct type_pimpl: type_pskel
-{
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
- any_a_pimpl any_a_p;
- type_pimpl type_p;
-
- any_a_p.parsers (string_p, string_p);
- type_p.parsers (any_a_p);
-
- xml_schema::document doc_p (type_p, "test", "root");
-
- try
- {
- ifstream ifs (argv[1]);
- type_p.pre ();
- doc_p.parse (ifs, argv[1], "", xml_schema::flags::dont_validate);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cout << " " << e << endl
- << "}" << endl
- << endl;
- }
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/any/makefile b/xsd/tests/cxx/parser/validation/any/makefile
deleted file mode 100644
index ae6735d..0000000
--- a/xsd/tests/cxx/parser/validation/any/makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-# file : tests/cxx/parser/validation/any/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-tests := 000
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-validation
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test.xsd $(src_base)/test-%.xml $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xml | diff -u $(src_base)/test-$*.std -)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/validation/any/test-000.std b/xsd/tests/cxx/parser/validation/any/test-000.std
deleted file mode 100644
index a1cc6e3..0000000
--- a/xsd/tests/cxx/parser/validation/any/test-000.std
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- start any element 'any'
- end any element 'any'
-}
-
-{
- start any element 'any'
- any attribute x = 'xxx'
- any text: 'aaa'
- start any element 'a'
- any text: 'bbb'
- end any element 'a'
- any text: 'ccc'
- end any element 'any'
-}
-
-{
- x = x
- a = a
- start any element 'any'
- any attribute x = 'xxx'
- any text: 'aaa'
- start any element 'a'
- any text: 'bbb'
- end any element 'a'
- any text: 'ccc'
- end any element 'any'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/any/test-000.xml b/xsd/tests/cxx/parser/validation/any/test-000.xml
deleted file mode 100644
index f1a0c83..0000000
--- a/xsd/tests/cxx/parser/validation/any/test-000.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- test dispatching of any-nested elements and attributes -->
-
- <any-a>
- <o:any/>
- </any-a>
-
- <any-a>
- <o:any x="xxx">aaa<a>bbb</a>ccc</o:any>
- </any-a>
-
- <any-a x="x">
- <a>a</a>
- <o:any x="xxx">aaa<a>bbb</a>ccc</o:any>
- </any-a>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/any/test.xsd b/xsd/tests/cxx/parser/validation/any/test.xsd
deleted file mode 100644
index c05aeb5..0000000
--- a/xsd/tests/cxx/parser/validation/any/test.xsd
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="any-a">
- <sequence>
- <element name="a" type="string" minOccurs="0"/>
- <any namespace="other" processContents="skip" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="x" type="string"/>
- </complexType>
-
- <complexType name="type">
- <choice maxOccurs="unbounded">
- <element name="any-a" type="t:any-a"/>
- </choice>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/validation/attribute/driver.cxx b/xsd/tests/cxx/parser/validation/attribute/driver.cxx
deleted file mode 100644
index 7e4de25..0000000
--- a/xsd/tests/cxx/parser/validation/attribute/driver.cxx
+++ /dev/null
@@ -1,198 +0,0 @@
-// file : tests/cxx/parser/validation/attribute/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test attribute and attribute wildcard (anyAttribute) validation.
-//
-
-#include <string>
-#include <fstream>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-using xml_schema::ro_string;
-
-struct pass_a_pimpl: pass_a_pskel
-{
- virtual void
- pre ()
- {
- cout << "pass-a" << endl
- << "{" << endl;
- }
-
- virtual void
- a (string const& v)
- {
- cout << " a = " << v << endl;
- }
-
- virtual void
- b (string const& v)
- {
- cout << " b = " << v << endl;
- }
-
- virtual void
- _any_attribute (ro_string const& ns,
- ro_string const& name,
- ro_string const& value)
- {
- cout << " any: " << ns << "#" << name << " = " << value << endl;
- }
-
- virtual void
- post_pass_a ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct pass_b_pimpl: pass_b_pskel
-{
- virtual void
- pre ()
- {
- cout << "pass-b" << endl
- << "{" << endl;
- }
-
- virtual void
- a (string const& v)
- {
- cout << " a = " << v << endl;
- }
-
- virtual void
- b (string const& v)
- {
- cout << " b = " << v << endl;
- }
-
- virtual void
- _any_attribute (ro_string const& ns,
- ro_string const& name,
- ro_string const& value)
- {
- cout << " any: " << ns << "#" << name << " = " << value << endl;
- }
-
- virtual void
- post_pass_b ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct pass_c_pimpl: pass_c_pskel
-{
- virtual void
- pre ()
- {
- cout << "pass-c" << endl
- << "{" << endl;
- }
-
- virtual void
- a (string const& v)
- {
- cout << " a = " << v << endl;
- }
-
- virtual void
- b (string const& v)
- {
- cout << " b = " << v << endl;
- }
-
- virtual void
- post_pass_c ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct fail_pimpl: fail_pskel
-{
- virtual void
- pre ()
- {
- cout << "fail" << endl
- << "{" << endl;
- }
-
- virtual void
- a (string const& v)
- {
- cout << " a = " << v << endl;
- }
-
- virtual void
- post_fail ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct type_pimpl: type_pskel
-{
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
- pass_a_pimpl pass_a_p;
- pass_b_pimpl pass_b_p;
- pass_c_pimpl pass_c_p;
- fail_pimpl fail_p;
- type_pimpl type_p;
-
- pass_a_p.parsers (string_p, string_p);
- pass_b_p.parsers (string_p, string_p);
- pass_c_p.parsers (string_p, string_p);
- fail_p.parsers (string_p);
- type_p.parsers (pass_a_p, pass_b_p, pass_c_p, fail_p);
-
- xml_schema::document doc_p (type_p, "test", "root");
-
- try
- {
- ifstream ifs (argv[1]);
- type_p.pre ();
- doc_p.parse (ifs, argv[1], "", xml_schema::flags::dont_validate);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cout << " " << e << endl
- << "}" << endl
- << endl;
- }
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/attribute/makefile b/xsd/tests/cxx/parser/validation/attribute/makefile
deleted file mode 100644
index 94e5369..0000000
--- a/xsd/tests/cxx/parser/validation/attribute/makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-# file : tests/cxx/parser/validation/attribute/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-tests := 000
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-validation
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test.xsd $(src_base)/test-%.xml $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xml | diff -u $(src_base)/test-$*.std -)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/validation/attribute/test-000.std b/xsd/tests/cxx/parser/validation/attribute/test-000.std
deleted file mode 100644
index 847b054..0000000
--- a/xsd/tests/cxx/parser/validation/attribute/test-000.std
+++ /dev/null
@@ -1,24 +0,0 @@
-pass-a
-{
- b = b
- any: test#foo = foo
- any: test#bar = bar
-}
-
-pass-b
-{
- a = a
- b = b
-}
-
-pass-c
-{
- a = a
- b = b
-}
-
-fail
-{
- :8:10 error: expected attribute 'a'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/attribute/test-000.xml b/xsd/tests/cxx/parser/validation/attribute/test-000.xml
deleted file mode 100644
index b994d1a..0000000
--- a/xsd/tests/cxx/parser/validation/attribute/test-000.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <pass-a b="b" t:foo="foo" t:bar="bar"/>
- <pass-b a="a" b="b"/>
- <pass-c a="a" b="b"/>
- <fail/>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/attribute/test.xsd b/xsd/tests/cxx/parser/validation/attribute/test.xsd
deleted file mode 100644
index 833eb8e..0000000
--- a/xsd/tests/cxx/parser/validation/attribute/test.xsd
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
-
- <!-- Test optional and required attributes as well as a wildcard. -->
- <complexType name="pass-a">
- <attribute name="a" type="string" use="optional"/>
- <attribute name="b" type="string" use="required"/>
- <anyAttribute namespace="##targetNamespace" processContents="skip"/>
- </complexType>
-
-
- <!-- Test that in inheritance attributes are checked before wildcards. -->
- <complexType name="pass-b-base">
- <attribute name="a" type="string"/>
- <anyAttribute namespace="#any" processContents="skip"/>
- </complexType>
-
- <complexType name="pass-b">
- <complexContent>
- <extension base="t:pass-b-base">
- <attribute name="b" type="string"/>
- <anyAttribute namespace="#any" processContents="skip"/>
- </extension>
- </complexContent>
- </complexType>
-
-
- <!-- Test that in inheritance by restriction required attribute is
- checked for even though it is not explicitly mentioned in
- derived. -->
- <complexType name="pass-c-base">
- <attribute name="a" type="string" use="required"/>
- <attribute name="b" type="string" use="optional"/>
- </complexType>
-
- <complexType name="pass-c">
- <complexContent>
- <restriction base="t:pass-c-base">
- <attribute name="b" type="string" use="required"/>
- </restriction>
- </complexContent>
- </complexType>
-
-
- <!-- Test detection of missing required attribute. -->
- <complexType name="fail-base">
- <attribute name="a" type="string" use="optional"/>
- </complexType>
-
- <complexType name="fail">
- <complexContent>
- <restriction base="t:fail-base">
- <attribute name="a" type="string" use="required"/>
- </restriction>
- </complexContent>
- </complexType>
-
-
- <complexType name="type">
- <sequence>
- <element name="pass-a" type="t:pass-a"/>
- <element name="pass-b" type="t:pass-b"/>
- <element name="pass-c" type="t:pass-c"/>
- <element name="fail" type="t:fail"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/validation/built-in/any-type/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/any-type/driver.cxx
deleted file mode 100644
index 4b03218..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/any-type/driver.cxx
+++ /dev/null
@@ -1,155 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/any-type/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the anyType and anySimpleType validation.
-//
-
-#include <string>
-#include <fstream>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-using xml_schema::ro_string;
-
-struct any_type_pimpl: xml_schema::any_type_pimpl
-{
- virtual void
- pre ()
- {
- cout << "{" << endl;
- }
-
- virtual void
- _start_any_element (ro_string const&,
- ro_string const& n,
- ro_string const*)
- {
- cout << " start any element '" << n << "'" << endl;
- }
-
- virtual void
- _end_any_element (ro_string const&, ro_string const& n)
- {
- cout << " end any element '" << n << "'" << endl;
- }
-
- virtual void
- _any_attribute (ro_string const&,
- ro_string const& n,
- ro_string const& v)
- {
- cout << " any attribute " << n << " = '" << v << "'" << endl;
- }
-
- virtual void
- _any_characters (ro_string const& s)
- {
- cout << " any text: '" << s << "'" << endl;
- }
-
- virtual void
- post_any_type ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct any_simple_type_pimpl: xml_schema::any_simple_type_pimpl
-{
- virtual void
- pre ()
- {
- cout << "{" << endl;
- }
-
- virtual void
- _any_characters (ro_string const& s)
- {
- cout << " any text: '" << s << "'" << endl;
- }
-
- virtual void
- post_any_simple_type ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct any_extension_pimpl: virtual any_extension_pskel,
- any_type_pimpl
-
-{
- virtual void
- x (const string& v)
- {
- cout << " x = " << v << endl;
- }
-};
-
-struct any_simple_extension_pimpl: virtual any_simple_extension_pskel,
- any_simple_type_pimpl
-{
- virtual void
- x (const string& v)
- {
- cout << " x = " << v << endl;
- }
-};
-
-struct type_pimpl: type_pskel
-{
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
-
- any_type_pimpl any_type_p;
- any_simple_type_pimpl any_simple_type_p;
-
- any_extension_pimpl any_extension_p;
- any_simple_extension_pimpl any_simple_extension_p;
-
- type_pimpl type_p;
-
- any_extension_p.parsers (string_p);
- any_simple_extension_p.parsers (string_p);
-
- type_p.parsers (any_type_p,
- any_extension_p,
- any_simple_extension_p,
- any_simple_type_p);
-
- xml_schema::document doc_p (type_p, "test", "root");
-
- ifstream ifs (argv[1]);
- type_p.pre ();
- doc_p.parse (ifs, argv[1], "", xml_schema::flags::dont_validate);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/any-type/makefile b/xsd/tests/cxx/parser/validation/built-in/any-type/makefile
deleted file mode 100644
index 7ae3a96..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/any-type/makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/any-type/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-tests := 000
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-validation
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test.xsd $(src_base)/test-%.xml $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xml | diff -u $(src_base)/test-$*.std -)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/validation/built-in/any-type/test-000.std b/xsd/tests/cxx/parser/validation/built-in/any-type/test-000.std
deleted file mode 100644
index 84d7b3a..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/any-type/test-000.std
+++ /dev/null
@@ -1,99 +0,0 @@
-{
- any text: '123abc'
-}
-
-{
- any text: '
- '
- start any element 'any'
- end any element 'any'
- any text: '
- '
-}
-
-{
- any text: '
- '
- start any element 'any'
- any attribute x = 'xxx'
- any text: 'aaa'
- start any element 'a'
- any text: 'bbb'
- end any element 'a'
- any text: 'ccc'
- end any element 'any'
- any text: '
- '
-}
-
-{
- any attribute x = 'x'
- any text: '
- '
- start any element 'a'
- any text: 'a'
- end any element 'a'
- any text: '
- '
- start any element 'any'
- any attribute x = 'xxx'
- any text: 'aaa'
- start any element 'a'
- any text: 'bbb'
- end any element 'a'
- any text: 'ccc'
- end any element 'any'
- any text: '
- '
-}
-
-{
- any text: '
- '
- start any element 'any'
- end any element 'any'
- any text: '
- '
-}
-
-{
- any text: '
- '
- start any element 'any'
- any attribute x = 'xxx'
- any text: 'aaa'
- start any element 'a'
- any text: 'bbb'
- end any element 'a'
- any text: 'ccc'
- end any element 'any'
- any text: '
- '
-}
-
-{
- x = x
- any text: '
- '
- start any element 'a'
- any text: 'a'
- end any element 'a'
- any text: '
- '
- start any element 'any'
- any attribute x = 'xxx'
- any text: 'aaa'
- start any element 'a'
- any text: 'bbb'
- end any element 'a'
- any text: 'ccc'
- end any element 'any'
- any text: '
- '
-}
-
-{
- x = x
- any text: 'abc123'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/built-in/any-type/test-000.xml b/xsd/tests/cxx/parser/validation/built-in/any-type/test-000.xml
deleted file mode 100644
index 7875b7e..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/any-type/test-000.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd"
- as="123abc">
-
- <!-- test dispatching of anyType nested elements and attributes -->
-
- <a>
- <o:any/>
- </a>
-
- <a>
- <o:any x="xxx">aaa<a>bbb</a>ccc</o:any>
- </a>
-
- <a x="x">
- <a>a</a>
- <o:any x="xxx">aaa<a>bbb</a>ccc</o:any>
- </a>
-
- <!-- anyType extension -->
-
- <a-extension>
- <o:any/>
- </a-extension>
-
- <a-extension>
- <o:any x="xxx">aaa<a>bbb</a>ccc</o:any>
- </a-extension>
-
- <a-extension x="x">
- <a>a</a>
- <o:any x="xxx">aaa<a>bbb</a>ccc</o:any>
- </a-extension>
-
- <!-- anySimpleType extension -->
-
- <as-extension x="x">abc123</as-extension>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/built-in/any-type/test.xsd b/xsd/tests/cxx/parser/validation/built-in/any-type/test.xsd
deleted file mode 100644
index 86a4e13..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/any-type/test.xsd
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="any-extension">
- <complexContent mixed="true">
- <extension base="anyType">
- <attribute name="x" type="string"/>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="any-simple-extension">
- <simpleContent>
- <extension base="anySimpleType">
- <attribute name="x" type="string"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="type">
- <choice maxOccurs="unbounded">
- <element name="a" type="anyType"/>
- <element name="a-extension" type="t:any-extension"/>
- <element name="as-extension" type="t:any-simple-extension"/>
- </choice>
- <attribute name="as" type="anySimpleType"/>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/validation/built-in/binary/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/binary/driver.cxx
deleted file mode 100644
index 96f6d4e..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/binary/driver.cxx
+++ /dev/null
@@ -1,154 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/binary/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in base64Binary and hexBinary types validation.
-//
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-template <typename T>
-bool
-test_post_fail (T& p)
-{
- try
- {
- p._post ();
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- typedef xsd::cxx::parser::buffer buffer;
-
- // Good.
- //
-
- // hexBinary
- //
- {
- hex_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters (" ");
- p._post ();
- assert (*p.post_hex_binary () == buffer ());
- }
-
- {
- hex_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n313");
- p._characters ("23334356162636a6b ");
- p._post ();
- assert (*p.post_hex_binary () == buffer ("12345abcjk", 10));
- }
-
- // base64Binary
- //
- {
- base64_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters ("MTIzND ");
- p._characters ("VhYmNqaw = = ");
- p._post ();
- assert (*p.post_base64_binary () == buffer ("12345abcjk", 10));
- }
-
- {
- base64_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("YQ==");
- p._post ();
- assert (*p.post_base64_binary () == buffer ("a", 1));
- }
-
- {
- base64_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("YWI=");
- p._post ();
- assert (*p.post_base64_binary () == buffer ("ab", 2));
- }
-
- {
- base64_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("YWJj");
- p._post ();
- assert (*p.post_base64_binary () == buffer ("abc", 3));
- }
-
- // Bad
- //
-
- // hexBinary
- //
- {
- hex_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("313");
- assert (test_post_fail (p));
- }
-
- {
- hex_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("313233343X6162636a6b");
- assert (test_post_fail (p));
- }
-
- // base64Binary
- //
- {
- base64_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- base64_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("YQ");
- assert (test_post_fail (p));
- }
-
- {
- base64_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("==");
- assert (test_post_fail (p));
- }
-
- {
- base64_binary_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("MTIzNDVhYmNqaw=A");
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/binary/makefile b/xsd/tests/cxx/parser/validation/built-in/binary/makefile
deleted file mode 100644
index fe48886..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/binary/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/binary/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/boolean/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/boolean/driver.cxx
deleted file mode 100644
index 6ebe23c..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/boolean/driver.cxx
+++ /dev/null
@@ -1,146 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/boolean/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in boolean type validation.
-//
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-bool
-test_post_fail (boolean_pimpl<char>& p)
-{
- try
- {
- p._post ();
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- // Good.
- //
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("true");
- p._post ();
- assert (p.post_boolean ());
- }
-
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1");
- p._post ();
- assert (p.post_boolean ());
- }
-
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("false");
- p._post ();
- assert (!p.post_boolean ());
- }
-
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (!p.post_boolean ());
- }
-
-
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" true ");
- p._post ();
- assert (p.post_boolean ());
- }
-
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" ");
- p._characters (" \n ");
- p._characters (" fa");
- p._characters ("l");
- p._characters ("se ");
- p._characters (" \n ");
- p._characters (" ");
- p._post ();
- assert (!p.post_boolean ());
- }
-
- // Bad
- //
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- //p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" ");
- assert (test_post_fail (p));
- }
-
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" ");
- assert (test_post_fail (p));
- }
-
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("fal");
- p._characters ("s ");
- p._characters ("e");
- assert (test_post_fail (p));
- }
-
- {
- boolean_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("01");
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/boolean/makefile b/xsd/tests/cxx/parser/validation/built-in/boolean/makefile
deleted file mode 100644
index f5812a5..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/boolean/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/boolean/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/byte/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/byte/driver.cxx
deleted file mode 100644
index 48d91df..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/byte/driver.cxx
+++ /dev/null
@@ -1,257 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/byte/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in byte and unsigned byte types validation.
-//
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-template <typename T>
-bool
-test_post_fail (T& p)
-{
- try
- {
- p._post ();
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- // Good.
- //
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("123");
- p._post ();
- assert (p.post_byte () == 123);
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("\t +123 \n ");
- p._post ();
- assert (p.post_byte () == 123);
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-123");
- p._post ();
- assert (p.post_byte () == -123);
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("+123");
- p._post ();
- assert (p.post_byte () == 123);
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0000000000000000123");
- p._post ();
- assert (p.post_byte () == 123);
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("+0000000000000000123");
- p._post ();
- assert (p.post_byte () == 123);
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-0000000000000000123");
- p._post ();
- assert (p.post_byte () == -123);
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("\t \n");
- p._characters (" -");
- p._characters ("00000");
- p._characters ("001");
- p._characters ("23 \n\t");
- p._post ();
- assert (p.post_byte () == -123);
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-128");
- p._post ();
- assert (p.post_byte () == -128);
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("127");
- p._post ();
- assert (p.post_byte () == 127);
- }
-
- {
- unsigned_byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("+123");
- p._post ();
- assert (p.post_unsigned_byte () == 123);
- }
-
- {
- unsigned_byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_unsigned_byte () == 0);
- }
-
- {
- unsigned_byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("255");
- p._post ();
- assert (p.post_unsigned_byte () == 255);
- }
-
- // Bad
- //
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n \t ");
- assert (test_post_fail (p));
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("+");
- assert (test_post_fail (p));
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-");
- assert (test_post_fail (p));
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("++01");
- assert (test_post_fail (p));
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--01");
- assert (test_post_fail (p));
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-01");
- p._characters (" ");
- p._characters ("23 ");
- assert (test_post_fail (p));
- }
-
- {
- unsigned_byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-123");
- assert (test_post_fail (p));
- }
-
- // Ranges
- //
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-129");
- assert (test_post_fail (p));
- }
-
- {
- byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("128");
- assert (test_post_fail (p));
- }
-
- {
- unsigned_byte_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("256");
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/byte/makefile b/xsd/tests/cxx/parser/validation/built-in/byte/makefile
deleted file mode 100644
index cdaabfc..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/byte/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/byte/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/date-time/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/date-time/driver.cxx
deleted file mode 100644
index 015205a..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/date-time/driver.cxx
+++ /dev/null
@@ -1,1534 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/date-time/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in date and time types validation.
-//
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-template <typename T>
-bool
-test_post_fail (T& p)
-{
- try
- {
- p._post ();
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- typedef xsd::cxx::parser::gday gday;
- typedef xsd::cxx::parser::gmonth gmonth;
- typedef xsd::cxx::parser::gyear gyear;
- typedef xsd::cxx::parser::gmonth_day gmonth_day;
- typedef xsd::cxx::parser::gyear_month gyear_month;
- typedef xsd::cxx::parser::date date;
- typedef xsd::cxx::parser::time time;
- typedef xsd::cxx::parser::date_time date_time;
- typedef xsd::cxx::parser::duration duration;
-
- // Good.
- //
-
- // gday & time zone parsing
- //
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters ("---1");
- p._characters ("2+12:00");
- p._post ();
- assert (p.post_gday () == gday (12, 12, 00));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---01");
- p._post ();
- assert (p.post_gday () == gday (1));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---31");
- p._post ();
- assert (p.post_gday () == gday (31));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---15Z");
- p._post ();
- assert (p.post_gday () == gday (15, 0, 0));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---15-14:00");
- p._post ();
- assert (p.post_gday () == gday (15, -14, 0));
- }
-
- // gmonth
- //
- {
- gmonth_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters ("--1");
- p._characters ("0+12:00");
- p._post ();
- assert (p.post_gmonth () == gmonth (10, 12, 0));
- }
-
- {
- gmonth_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--01");
- p._post ();
- assert (p.post_gmonth () == gmonth (1));
- }
-
- {
- gmonth_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--12Z");
- p._post ();
- assert (p.post_gmonth () == gmonth (12, 0, 0));
- }
-
- // gyear
- //
- {
- gyear_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters ("20");
- p._characters ("07+12:00");
- p._post ();
- assert (p.post_gyear () == gyear (2007, 12, 00));
- }
-
- {
- gyear_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0001");
- p._post ();
- assert (p.post_gyear () == gyear (1));
- }
-
- {
- gyear_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-20000Z");
- p._post ();
- assert (p.post_gyear () == gyear (-20000, 0, 0));
- }
-
- // gmonth_day
- //
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters ("--1");
- p._characters ("0-28+12:00 ");
- p._post ();
- assert (p.post_gmonth_day () == gmonth_day (10, 28, 12, 00));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--12-31");
- p._post ();
- assert (p.post_gmonth_day () == gmonth_day (12, 31));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--01-01Z");
- p._post ();
- assert (p.post_gmonth_day () == gmonth_day (1, 1, 0, 0));
- }
-
- // gyear_month
- //
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters ("200");
- p._characters ("7-12+12:00 ");
- p._post ();
- assert (p.post_gyear_month () == gyear_month (2007, 12, 12, 00));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-2007-10");
- p._post ();
- assert (p.post_gyear_month () == gyear_month (-2007, 10));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("20007-10Z");
- p._post ();
- assert (p.post_gyear_month () == gyear_month (20007, 10, 0, 0));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-20007-01");
- p._post ();
- assert (p.post_gyear_month () == gyear_month (-20007, 1));
- }
-
- // date
- //
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters ("200");
- p._characters ("7-12-26+12:00 ");
- p._post ();
- assert (p.post_date () == date (2007, 12, 26, 12, 0));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-2007-10-15");
- p._post ();
- assert (p.post_date () == date (-2007, 10, 15));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("20007-12-31Z");
- p._post ();
- assert (p.post_date () == date (20007, 12, 31, 0, 0));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-20007-01-01");
- p._post ();
- assert (p.post_date () == date (-20007, 1, 1));
- }
-
- // time
- //
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters ("12:");
- p._characters ("46:23.456+12:00 ");
- p._post ();
- assert (p.post_time () == time (12, 46, 23.456, 12, 0));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("12:13:14");
- p._post ();
- assert (p.post_time () == time (12, 13, 14.0));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("12:13:14Z");
- p._post ();
- assert (p.post_time () == time (12, 13, 14.0, 0, 0));
- }
-
- // date_time
- //
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters ("200");
- p._characters ("7-12-26T12:13:14.123+12:00 ");
- p._post ();
- assert (p.post_date_time () ==
- date_time (2007, 12, 26, 12, 13, 14.123, 12, 0));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-2007-10-15T12:13:14");
- p._post ();
- assert (p.post_date_time () == date_time (-2007, 10, 15, 12, 13, 14.0));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("20007-12-31T12:13:14Z");
- p._post ();
- assert (p.post_date_time () ==
- date_time (20007, 12, 31, 12, 13, 14.0, 0, 0));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-20007-01-01T12:13:14");
- p._post ();
- assert (p.post_date_time () == date_time (-20007, 1, 1, 12, 13, 14.0));
- }
-
- // duration
- //
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \t\n ");
- p._characters ("-P200");
- p._characters ("7Y13M32DT25H61M61.123S ");
- p._post ();
- assert (p.post_duration () ==
- duration (true, 2007, 13, 32, 25, 61, 61.123));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P1Y");
- p._post ();
- assert (p.post_duration () == duration (false, 1, 0, 0, 0, 0, 0.0));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P1M");
- p._post ();
- assert (p.post_duration () == duration (false, 0, 1, 0, 0, 0, 0.0));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P1D");
- p._post ();
- assert (p.post_duration () == duration (false, 0, 0, 1, 0, 0, 0.0));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("PT1H");
- p._post ();
- assert (p.post_duration () == duration (false, 0, 0, 0, 1, 0, 0.0));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("PT1M");
- p._post ();
- assert (p.post_duration () == duration (false, 0, 0, 0, 0, 1, 0.0));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("PT1.1S");
- p._post ();
- assert (p.post_duration () == duration (false, 0, 0, 0, 0, 0, 1.1));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P1YT1S");
- p._post ();
- assert (p.post_duration () == duration (false, 1, 0, 0, 0, 0, 1.0));
- }
-
- // Bad
- //
-
- // gday & time zone parsing
- //
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--12");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---1");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---00");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---32");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---2X");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---12asd");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---12X");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---1212:00");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---12+2:00");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---12+1200");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---12+15:00");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---12+12:60");
- assert (test_post_fail (p));
- }
-
- {
- gday_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("---12+14:01");
- assert (test_post_fail (p));
- }
-
- // gmonth
- //
- {
- gmonth_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-12");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--00");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--13");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--1X");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--11+12:3o");
- assert (test_post_fail (p));
- }
-
- // gyear
- //
- {
- gyear_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- gyear_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("207");
- assert (test_post_fail (p));
- }
-
- {
- gyear_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-207");
- assert (test_post_fail (p));
- }
-
- {
- gyear_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-0000");
- assert (test_post_fail (p));
- }
-
- {
- gyear_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("20X7");
- assert (test_post_fail (p));
- }
-
- {
- gyear_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007+12:3o");
- assert (test_post_fail (p));
- }
-
- // gmonth_day
- //
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-12-12");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--1212");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--12?12");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--00-12");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--12-00");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--13-23");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--12-32");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--1X-12");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--12-2X");
- assert (test_post_fail (p));
- }
-
- {
- gmonth_day_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("--11-11+12:3o");
- assert (test_post_fail (p));
- }
-
- // gyear_month
- //
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("207-01");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-207-01");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0000-01");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("20X7-01");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007?12");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-0");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-00");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-13");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-1X");
- assert (test_post_fail (p));
- }
-
- {
- gyear_month_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01+12:3o");
- assert (test_post_fail (p));
- }
-
- // date
- //
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("207-01-01");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-207-01-01");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0000-01-01");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("20X7-01-01");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007?01-01");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-0-01");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-00-01");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-13-01");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-1X-01");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10?12");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10-");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10-0");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10-00");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10-32");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10-2X");
- assert (test_post_fail (p));
- }
-
- {
- date_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01+12:3o");
- assert (test_post_fail (p));
- }
-
- // time
- //
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1:01:01");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2X:01:01");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23?01:01");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:0:01");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:60:01");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:4X:01");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:10");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:10?12");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:10:");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:10:0");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:10:01.");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:10:60");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:10:2X");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("24:01:00");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("24:00:01");
- assert (test_post_fail (p));
- }
-
- {
- time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:01:01+12:3o");
- assert (test_post_fail (p));
- }
-
- // date_time
- //
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("207-01-01T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-207-01-01T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0000-01-01T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("20X7-01-01T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007?01-01T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-0-01T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-00-01T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-13-01T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-1X-01T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10?12T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10-T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10-0T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10-00T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10-32T12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-10-2XT12:13:14");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T1:01:01");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T2X:01:01");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23?01:01");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23:0:01");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23:60:01");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23:4X:01");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23:10");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23:10?12");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23:10:");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23:10:0");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23:10:01.");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23:10:60");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T23:10:2X");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T24:01:00");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T24:00:01");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("23:01:01+12:3o");
- assert (test_post_fail (p));
- }
-
- {
- date_time_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007-01-01T12:13:14+12:3o");
- assert (test_post_fail (p));
- }
-
- // duration
- //
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- // p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2007Y");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-2007Y");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P-2007Y");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P-1M");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P-1D");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("PT-1H");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("PT-1M");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("PT-1.1S");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P1H1M1S");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P1M1Y");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("PT1S1H");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("PT1H1Y");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P1Ygarbage");
- assert (test_post_fail (p));
- }
-
- {
- duration_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("P1YT");
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/date-time/makefile b/xsd/tests/cxx/parser/validation/built-in/date-time/makefile
deleted file mode 100644
index ee16e1f..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/date-time/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/date-time/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/float/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/float/driver.cxx
deleted file mode 100644
index f984498..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/float/driver.cxx
+++ /dev/null
@@ -1,286 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/float/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in float, double, and decimal types validation.
-//
-#include <math.h>
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-template <typename T>
-bool
-test_post_fail (T& p)
-{
- try
- {
- p._post ();
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- // Good.
- //
-
- // float
- //
- {
- float_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" 0000123.456 ");
- p._post ();
- assert (p.post_float () == 123.456F);
- }
-
- {
- float_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-12.345E2");
- p._post ();
- assert (p.post_float () == -12.345E2F);
- }
-
- {
- float_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_float () == 0.0F);
- }
-
- {
- float_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-0");
- p._post ();
- assert (p.post_float () == -0.0F);
- }
-
- {
- float_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("INF");
- p._post ();
- assert (isinf (p.post_float ()));
- }
-
- {
- float_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-INF");
- p._post ();
- assert (isinf (p.post_float ()));
- }
-
- {
- float_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("NaN");
- p._post ();
- assert (isnan (p.post_float ()));
- }
-
- // double
- //
- {
- double_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" 0000123.456789 ");
- p._post ();
- assert (p.post_double () == 123.456789);
- }
-
- {
- double_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-12.3456789E2");
- p._post ();
- assert (p.post_double () == -12.3456789E2);
- }
-
- {
- double_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_double () == 0.0);
- }
-
- {
- double_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-0");
- p._post ();
- assert (p.post_double () == -0.0);
- }
-
- {
- double_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("INF");
- p._post ();
- assert (isinf (p.post_double ()));
- }
-
- {
- double_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-INF");
- p._post ();
- assert (isinf (p.post_double ()));
- }
-
- {
- double_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("NaN");
- p._post ();
- assert (isnan (p.post_double ()));
- }
-
- // decimal
- //
- {
- decimal_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" 0000123.456789 ");
- p._post ();
- assert (p.post_decimal () == 123.456789);
- }
-
- {
- decimal_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-123.45678912345");
- p._post ();
- assert (p.post_decimal () == -123.45678912345);
- }
-
- {
- decimal_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_decimal () == 0.0);
- }
-
- {
- decimal_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-0");
- p._post ();
- assert (p.post_decimal () == -0.0);
- }
-
-
- // Bad
- //
-
- // float
- //
- {
- float_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("+INF");
- assert (test_post_fail (p));
- }
-
- {
- float_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1.45 E2");
- assert (test_post_fail (p));
- }
-
- // double
- //
- {
- double_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("+INF");
- assert (test_post_fail (p));
- }
-
- {
- double_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1.45 E2");
- assert (test_post_fail (p));
- }
-
- // decimal
- //
- {
- decimal_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("INF");
- assert (test_post_fail (p));
- }
-
- {
- decimal_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("+INF");
- assert (test_post_fail (p));
- }
-
- {
- decimal_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-INF");
- assert (test_post_fail (p));
- }
-
- {
- decimal_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("NaN");
- assert (test_post_fail (p));
- }
-
- {
- decimal_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1.45 2");
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/float/makefile b/xsd/tests/cxx/parser/validation/built-in/float/makefile
deleted file mode 100644
index 6755693..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/float/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/float/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/int/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/int/driver.cxx
deleted file mode 100644
index 8d4392b..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/int/driver.cxx
+++ /dev/null
@@ -1,117 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/int/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in int and unsigned int types validation.
-//
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-template <typename T>
-bool
-test_post_fail (T& p)
-{
- try
- {
- p._post ();
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- // Good.
- //
- {
- int_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-2147483648");
- p._post ();
- assert (p.post_int () == -2147483648);
- }
-
- {
- int_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_int () == 0);
- }
-
- {
- int_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2147483647");
- p._post ();
- assert (p.post_int () == 2147483647);
- }
-
- {
- unsigned_int_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_unsigned_int () == 0);
- }
-
- {
- unsigned_int_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("4294967295");
- p._post ();
- assert (p.post_unsigned_int () == 4294967295);
- }
-
- // Bad
- //
-
- {
- unsigned_int_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-123");
- assert (test_post_fail (p));
- }
-
-
- // Ranges
- //
- {
- int_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-2147483649");
- assert (test_post_fail (p));
- }
-
- {
- int_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("2147483648");
- assert (test_post_fail (p));
- }
-
- {
- unsigned_int_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("4294967296");
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/int/makefile b/xsd/tests/cxx/parser/validation/built-in/int/makefile
deleted file mode 100644
index 46f0baa..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/int/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/int/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/integer/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/integer/driver.cxx
deleted file mode 100644
index 2828249..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/integer/driver.cxx
+++ /dev/null
@@ -1,304 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/int/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in integer & friends types validation.
-//
-#include <limits.h>
-
-#include <string>
-#include <sstream>
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace std;
-using namespace xsd::cxx::parser::validating;
-
-template <typename T>
-bool
-test_post_fail (T& p)
-{
- try
- {
- p._post ();
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- // Good.
- //
-
- std::string min;
- std::string max;
- std::string umax;
-
- {
- ostringstream ostr;
- ostr << LLONG_MIN;
- min = ostr.str ();
- }
-
- {
- ostringstream ostr;
- ostr << LLONG_MAX;
- max = ostr.str ();
- }
-
- {
- ostringstream ostr;
- ostr << ULLONG_MAX;
- umax = ostr.str ();
- }
-
- // integer
- //
- {
- integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (min.c_str ());
- p._post ();
- assert (p.post_integer () == LLONG_MIN);
- }
-
- {
- integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_integer () == 0);
- }
-
- {
- integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (max.c_str ());
- p._post ();
- assert (p.post_integer () == LLONG_MAX);
- }
-
- // negative_integer
- //
- {
- negative_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (min.c_str ());
- p._post ();
- assert (p.post_negative_integer () == LLONG_MIN);
- }
-
- {
- negative_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-1");
- p._post ();
- assert (p.post_negative_integer () == -1);
- }
-
- // non_positive_integer
- //
- {
- non_positive_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (min.c_str ());
- p._post ();
- assert (p.post_non_positive_integer () == LLONG_MIN);
- }
-
- {
- non_positive_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("+0");
- p._post ();
- assert (p.post_non_positive_integer () == 0);
- }
-
- // positive_integer
- //
- {
- positive_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1");
- p._post ();
- assert (p.post_positive_integer () == 1);
- }
-
- {
- positive_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (umax.c_str ());
- p._post ();
- assert (p.post_positive_integer () == ULLONG_MAX);
- }
-
- // non_negative_integer
- //
- /*
- {
- non_negative_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-0");
- p._post ();
- assert (p.post_non_negative_integer () == 0);
- }
- */
-
- {
- non_negative_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_non_negative_integer () == 0);
- }
-
- {
- non_negative_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (umax.c_str ());
- p._post ();
- assert (p.post_non_negative_integer () == ULLONG_MAX);
- }
-
-
- // Bad
- //
-
- std::string past_min (min);
- std::string past_max (max);
- std::string past_umax (umax);
-
- assert (*past_min.rbegin () != '9');
- assert (*past_max.rbegin () != '9');
- assert (*past_umax.rbegin () != '9');
-
- (*past_min.rbegin ())++;
- (*past_max.rbegin ())++;
- (*past_umax.rbegin ())++;
-
- // integer
- //
- {
- integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (past_min.c_str ());
- assert (test_post_fail (p));
- }
-
- {
- integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (past_max.c_str ());
- assert (test_post_fail (p));
- }
-
- // negative_integer
- //
- {
- negative_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (past_min.c_str ());
- assert (test_post_fail (p));
- }
-
- {
- negative_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-0");
- assert (test_post_fail (p));
- }
-
- {
- negative_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1");
- assert (test_post_fail (p));
- }
-
- // non_positive_integer
- //
- {
- non_positive_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (past_min.c_str ());
- assert (test_post_fail (p));
- }
-
- {
- non_positive_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1");
- assert (test_post_fail (p));
- }
-
- // positive_integer
- //
- {
- positive_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-1");
- assert (test_post_fail (p));
- }
-
- {
- positive_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("+0");
- assert (test_post_fail (p));
- }
-
- {
- positive_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (past_umax.c_str ());
- assert (test_post_fail (p));
- }
-
- // non_negative_integer
- //
- {
- non_negative_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-1");
- assert (test_post_fail (p));
- }
-
- {
- non_negative_integer_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (past_umax.c_str ());
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/integer/makefile b/xsd/tests/cxx/parser/validation/built-in/integer/makefile
deleted file mode 100644
index ca6482f..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/integer/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/integer/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/long/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/long/driver.cxx
deleted file mode 100644
index 2033125..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/long/driver.cxx
+++ /dev/null
@@ -1,117 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/long/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in long and unsigned long types validation.
-//
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-template <typename T>
-bool
-test_post_fail (T& p)
-{
- try
- {
- p._post ();
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- // Good.
- //
- {
- long_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-9223372036854775808");
- p._post ();
- assert (p.post_long () == (-9223372036854775807LL - 1));
- }
-
- {
- long_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_long () == 0);
- }
-
- {
- long_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("9223372036854775807");
- p._post ();
- assert (p.post_long () == 9223372036854775807LL);
- }
-
- {
- unsigned_long_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_unsigned_long () == 0);
- }
-
- {
- unsigned_long_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("18446744073709551615");
- p._post ();
- assert (p.post_unsigned_long () == 18446744073709551615ULL);
- }
-
- // Bad
- //
-
- {
- unsigned_long_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-123");
- assert (test_post_fail (p));
- }
-
-
- // Ranges
- //
- {
- long_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-9223372036854775809");
- assert (test_post_fail (p));
- }
-
- {
- long_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("9223372036854775808");
- assert (test_post_fail (p));
- }
-
- {
- unsigned_long_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("18446744073709551616");
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/long/makefile b/xsd/tests/cxx/parser/validation/built-in/long/makefile
deleted file mode 100644
index b3ad382..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/long/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/long/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/makefile b/xsd/tests/cxx/parser/validation/built-in/makefile
deleted file mode 100644
index e300092..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-tests := any-type binary boolean byte date-time float int integer long \
-qname short string uri
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/parser/validation/built-in/qname/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/qname/driver.cxx
deleted file mode 100644
index 3c77eea..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/qname/driver.cxx
+++ /dev/null
@@ -1,106 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/qname/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in QName type validation.
-//
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-bool
-test_post_fail (qname_pimpl<char>& p)
-{
- try
- {
- p._post ();
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- typedef xsd::cxx::parser::qname<char> qname;
-
- // Good.
- //
- {
- qname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" xsi");
- p._characters (":");
- p._characters ("schemaLocation");
- p._post ();
- assert (p.post_qname () == qname ("xsi", "schemaLocation"));
- }
-
- {
- qname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("schemaLocation");
- p._post ();
- assert (p.post_qname () == qname ("schemaLocation"));
- }
-
-
- // Bad
- //
- {
- qname_pimpl<char> p;
- p.pre ();
- p._pre ();
- //p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- qname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (":");
- assert (test_post_fail (p));
- }
-
- {
- qname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("xsi:");
- assert (test_post_fail (p));
- }
-
- {
- qname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (":schemaLocation");
- assert (test_post_fail (p));
- }
-
- {
- qname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("x?i:schemaLocation");
- assert (test_post_fail (p));
- }
-
- {
- qname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("xsi:schema Location");
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/qname/makefile b/xsd/tests/cxx/parser/validation/built-in/qname/makefile
deleted file mode 100644
index 9e06bad..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/qname/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/qname/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/short/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/short/driver.cxx
deleted file mode 100644
index 5ee950c..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/short/driver.cxx
+++ /dev/null
@@ -1,117 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/short/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in short and unsigned short types validation.
-//
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-template <typename T>
-bool
-test_post_fail (T& p)
-{
- try
- {
- p._post ();
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- // Good.
- //
- {
- short_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-32768");
- p._post ();
- assert (p.post_short () == -32768);
- }
-
- {
- short_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_short () == 0);
- }
-
- {
- short_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("32767");
- p._post ();
- assert (p.post_short () == 32767);
- }
-
- {
- unsigned_short_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("0");
- p._post ();
- assert (p.post_unsigned_short () == 0);
- }
-
- {
- unsigned_short_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("65535");
- p._post ();
- assert (p.post_unsigned_short () == 65535);
- }
-
- // Bad
- //
-
- {
- unsigned_short_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-1234");
- assert (test_post_fail (p));
- }
-
-
- // Ranges
- //
- {
- short_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-32769");
- assert (test_post_fail (p));
- }
-
- {
- short_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("32768");
- assert (test_post_fail (p));
- }
-
- {
- unsigned_short_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("65536");
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/short/makefile b/xsd/tests/cxx/parser/validation/built-in/short/makefile
deleted file mode 100644
index 50c2b80..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/short/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/short/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/string/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/string/driver.cxx
deleted file mode 100644
index 5948542..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/string/driver.cxx
+++ /dev/null
@@ -1,513 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/string/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in string & friends types validation.
-//
-#include <string>
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-template <typename T>
-bool
-test_post_fail (T& p)
-{
- try
- {
- p._post_impl (); // List implementation needs this to be post_impl.
- }
- catch (invalid_value<char> const&)
- {
- return true;
- }
-
- return false;
-}
-
-int
-main ()
-{
- typedef xsd::cxx::parser::string_sequence<char> strings;
-
- // Good.
- //
-
- // string
- //
- {
- string_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" aaa ");
- p._characters ("bbb");
- p._characters (" ");
- p._post ();
- assert (p.post_string () == " \n\t aaa bbb ");
- }
-
- // normalized_string
- //
- {
- normalized_string_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" aaa \n\t ");
- p._characters (" bbb");
- p._characters (" ");
- p._post ();
- assert (p.post_normalized_string () == " aaa bbb ");
- }
-
- // token
- //
- {
- token_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" aaa \n\t ");
- p._characters (" bbb \n\t");
- p._characters (" ");
- p._post ();
- assert (p.post_token () == "aaa bbb");
- }
-
- // name
- //
- {
- name_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" a:b-c_d123 ");
- p._characters (" ");
- p._post ();
- assert (p.post_name () == "a:b-c_d123");
- }
-
- {
- name_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" _12 ");
- p._characters (" ");
- p._post ();
- assert (p.post_name () == "_12");
- }
-
- {
- name_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" :12 ");
- p._characters (" ");
- p._post ();
- assert (p.post_name () == ":12");
- }
-
- // nmtoken
- //
- {
- nmtoken_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" 123a:b-c_d123 ");
- p._characters (" \n\t");
- p._characters (" ");
- p._post ();
- assert (p.post_nmtoken () == "123a:b-c_d123");
- }
-
- // nmtokens
- //
- {
- strings s;
- s.push_back ("123");
- s.push_back ("abc");
-
- nmtokens_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" 123 ");
- p._characters (" \n\t abc ");
- p._characters (" ");
- p._post ();
- assert (p.post_nmtokens () == s);
- }
-
- // ncname
- //
- {
- ncname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" a.b-c_d123 ");
- p._characters (" ");
- p._post ();
- assert (p.post_ncname () == "a.b-c_d123");
- }
-
- // id
- //
- {
- id_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" a.b-c_d123 ");
- p._characters (" ");
- p._post ();
- assert (p.post_id () == "a.b-c_d123");
- }
-
- // idref
- //
- {
- idref_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" a.b-c_d123 ");
- p._characters (" ");
- p._post ();
- assert (p.post_idref () == "a.b-c_d123");
- }
-
- // idrefs
- //
- {
- strings s;
- s.push_back ("a123");
- s.push_back ("abc");
-
- idrefs_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" \n\t");
- p._characters (" a123 ");
- p._characters (" \n\t abc ");
- p._characters (" ");
- p._post ();
- assert (p.post_idrefs () == s);
- }
-
- // language
- //
- {
- language_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" x ");
- p._post ();
- assert (p.post_language () == "x");
- }
-
- {
- language_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" en ");
- p._post ();
- assert (p.post_language () == "en");
- }
-
- {
- language_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" en");
- p._characters ("-us ");
- p._post ();
- assert (p.post_language () == "en-us");
- }
-
- {
- language_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("one-two-three-four44-seven77-eight888");
- p._post ();
- assert (p.post_language () == "one-two-three-four44-seven77-eight888");
- }
-
-
- // Bad
- //
-
- // name
- //
- {
- name_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- name_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (".a");
- assert (test_post_fail (p));
- }
-
- {
- name_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-a");
- assert (test_post_fail (p));
- }
-
- {
- name_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1a");
- assert (test_post_fail (p));
- }
-
- {
- name_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a,b");
- assert (test_post_fail (p));
- }
-
- {
- name_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a b");
- assert (test_post_fail (p));
- }
-
- {
- name_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a<b");
- assert (test_post_fail (p));
- }
-
- // nmtoken
- //
- {
- nmtoken_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- nmtoken_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a,b");
- assert (test_post_fail (p));
- }
-
- {
- nmtoken_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a b");
- assert (test_post_fail (p));
- }
-
- {
- nmtoken_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a<b");
- assert (test_post_fail (p));
- }
-
- // nmtokens
- //
- {
- nmtokens_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" ");
- p._characters (" \t\n ");
- assert (test_post_fail (p));
- }
-
- {
- nmtokens_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("ab a,b");
- assert (test_post_fail (p));
- }
-
- // ncname
- //
- {
- ncname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("");
- assert (test_post_fail (p));
- }
-
- {
- ncname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (".a");
- assert (test_post_fail (p));
- }
-
- {
- ncname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("-a");
- assert (test_post_fail (p));
- }
-
- {
- ncname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (":a");
- assert (test_post_fail (p));
- }
-
- {
- ncname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1a");
- assert (test_post_fail (p));
- }
-
- {
- ncname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("1:a");
- assert (test_post_fail (p));
- }
-
- {
- ncname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a,b");
- assert (test_post_fail (p));
- }
-
- {
- ncname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a b");
- assert (test_post_fail (p));
- }
-
- {
- ncname_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a<b");
- assert (test_post_fail (p));
- }
-
- // id
- //
- {
- id_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a b");
- assert (test_post_fail (p));
- }
-
- // idref
- //
- {
- idref_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a b");
- assert (test_post_fail (p));
- }
-
- // idrefs
- //
- {
- idrefs_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" ");
- p._characters (" \t\n ");
- assert (test_post_fail (p));
- }
-
- {
- idrefs_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("ab a<b");
- assert (test_post_fail (p));
- }
-
- // language
- //
- {
- language_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" ");
- assert (test_post_fail (p));
- }
-
- {
- language_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("en-");
- assert (test_post_fail (p));
- }
-
- {
- language_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("a1");
- assert (test_post_fail (p));
- }
-
- {
- language_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("en+us");
- assert (test_post_fail (p));
- }
-
- {
- language_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("en-nine99999");
- assert (test_post_fail (p));
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/string/makefile b/xsd/tests/cxx/parser/validation/built-in/string/makefile
deleted file mode 100644
index 41c0dcd..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/string/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/string/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/built-in/uri/driver.cxx b/xsd/tests/cxx/parser/validation/built-in/uri/driver.cxx
deleted file mode 100644
index daff0c7..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/uri/driver.cxx
+++ /dev/null
@@ -1,54 +0,0 @@
-// file : tests/cxx/parser/validation/built-in/uri/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the built-in anyURI type validation.
-//
-#include <cassert>
-
-#include <xsd/cxx/parser/validating/exceptions.hxx>
-#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>
-
-using namespace xsd::cxx::parser::validating;
-
-int
-main ()
-{
- // Good.
- //
- {
- uri_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters (" ");
- p._post ();
- assert (p.post_uri () == "");
- }
-
- {
- uri_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("relative");
- p._post ();
- assert (p.post_uri () == "relative");
- }
-
- {
- uri_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("#id");
- p._post ();
- assert (p.post_uri () == "#id");
- }
-
- {
- uri_pimpl<char> p;
- p.pre ();
- p._pre ();
- p._characters ("http://www.example.com/foo#bar");
- p._post ();
- assert (p.post_uri () == "http://www.example.com/foo#bar");
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/built-in/uri/makefile b/xsd/tests/cxx/parser/validation/built-in/uri/makefile
deleted file mode 100644
index cfb8101..0000000
--- a/xsd/tests/cxx/parser/validation/built-in/uri/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# file : tests/cxx/parser/validation/built-in/uri/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
diff --git a/xsd/tests/cxx/parser/validation/choice/driver.cxx b/xsd/tests/cxx/parser/validation/choice/driver.cxx
deleted file mode 100644
index fd1e651..0000000
--- a/xsd/tests/cxx/parser/validation/choice/driver.cxx
+++ /dev/null
@@ -1,127 +0,0 @@
-// file : tests/cxx/parser/validation/choice/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the choice compositor validation.
-//
-
-#include <string>
-#include <fstream>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-using xml_schema::ro_string;
-
-struct choice_pimpl: choice_pskel
-{
- virtual void
- pre ()
- {
- cout << "{" << endl;
- }
-
- virtual void
- a (string const& v)
- {
- cout << " a = " << v << endl;
- }
-
- virtual void
- b (string const& v)
- {
- cout << " b = " << v << endl;
- }
-
- virtual void
- c (string const& v)
- {
- cout << " c = " << v << endl;
- }
-
- virtual void
- d (string const& v)
- {
- cout << " d = " << v << endl;
- }
-
- virtual void
- _start_any_element (ro_string const& ns,
- ro_string const& name,
- ro_string const*)
- {
- cout << " any: " << ns << "#" << name << endl
- << " {" << endl;
- }
-
- virtual void
- _any_characters (ro_string const& v)
- {
- cout << " chars = " << v << endl;
- }
-
- virtual void
- _end_any_element (ro_string const&, ro_string const&)
- {
- cout << " }" << endl;
- }
-
- virtual void
- post_choice ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct type_pimpl: type_pskel
-{
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
- choice_pimpl choice_p;
- type_pimpl type_p;
-
- choice_p.parsers (string_p, string_p, string_p, string_p);
- type_p.parsers (choice_p);
-
- xml_schema::document doc_p (type_p, "test", "root");
-
- try
- {
- ifstream ifs (argv[1]);
- type_p.pre ();
- doc_p.parse (ifs, argv[1], "", xml_schema::flags::dont_validate);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cout << " " << e << endl
- << "}" << endl
- << endl;
- }
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/choice/makefile b/xsd/tests/cxx/parser/validation/choice/makefile
deleted file mode 100644
index ec86590..0000000
--- a/xsd/tests/cxx/parser/validation/choice/makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-# file : tests/cxx/parser/validation/choice/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-tests := 000 001 002 003 004
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-validation
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test.xsd $(src_base)/test-%.xml $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xml | diff -u $(src_base)/test-$*.std -)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/validation/choice/test-000.std b/xsd/tests/cxx/parser/validation/choice/test-000.std
deleted file mode 100644
index 856b7f5..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test-000.std
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- a = a
- b = b
-}
-
-{
- c = c
- d = d
- any: other#any
- {
- chars = any
- }
- a = a
-}
-
-{
- c = c
- d = d
- d = d
- a = a
-}
-
diff --git a/xsd/tests/cxx/parser/validation/choice/test-000.xml b/xsd/tests/cxx/parser/validation/choice/test-000.xml
deleted file mode 100644
index 39b9614..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test-000.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <choice>
- <a>a</a>
-
- <b>b</b>
- </choice>
-
- <choice>
- <c>c</c>
- <d>d</d>
-
- <o:any>any</o:any>
-
- <a>a</a>
- </choice>
-
- <choice>
- <c>c</c>
- <d>d</d>
-
- <d>d</d>
-
- <a>a</a>
- </choice>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/choice/test-001.std b/xsd/tests/cxx/parser/validation/choice/test-001.std
deleted file mode 100644
index 8a78666..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test-001.std
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- :8:12 error: expected element 'a'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/choice/test-001.xml b/xsd/tests/cxx/parser/validation/choice/test-001.xml
deleted file mode 100644
index c509e0d..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test-001.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- invalid -->
- <choice>
- </choice>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/choice/test-002.std b/xsd/tests/cxx/parser/validation/choice/test-002.std
deleted file mode 100644
index 1dc1a3a..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test-002.std
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- c = c
- d = d
- any: other#any
- {
- chars = any
- }
- a = a
- :14:8 error: unexpected element 'b'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/choice/test-002.xml b/xsd/tests/cxx/parser/validation/choice/test-002.xml
deleted file mode 100644
index 3b7e663..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test-002.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- invalid -->
- <choice>
- <c>c</c>
- <d>d</d>
-
- <o:any>any</o:any>
-
- <a>a</a>
- <b>b</b>
- </choice>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/choice/test-003.std b/xsd/tests/cxx/parser/validation/choice/test-003.std
deleted file mode 100644
index 29d5e44..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test-003.std
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- c = c
- :9:12 error: expected element 'd'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/choice/test-003.xml b/xsd/tests/cxx/parser/validation/choice/test-003.xml
deleted file mode 100644
index ba15c7e..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test-003.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- invalid -->
- <choice>
- <c>c</c>
- </choice>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/choice/test-004.std b/xsd/tests/cxx/parser/validation/choice/test-004.std
deleted file mode 100644
index 4a7530b..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test-004.std
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- :8:8 error: expected element 'a' instead of 'x'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/choice/test-004.xml b/xsd/tests/cxx/parser/validation/choice/test-004.xml
deleted file mode 100644
index f6960dd..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test-004.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- invalid -->
- <choice>
- <x>x</x>
- </choice>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/choice/test.xsd b/xsd/tests/cxx/parser/validation/choice/test.xsd
deleted file mode 100644
index 8132bbb..0000000
--- a/xsd/tests/cxx/parser/validation/choice/test.xsd
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="choice">
- <choice maxOccurs="3">
- <element name="a" type="string"/>
- <element name="b" type="string" maxOccurs="unbounded"/>
- <sequence>
- <element name="c" type="string" minOccurs="0"/>
- <element name="d" type="string"/>
- </sequence>
- <any namespace="other" maxOccurs="unbounded"/>
- </choice>
- </complexType>
-
- <complexType name="type">
- <sequence>
- <element name="choice" type="t:choice" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/validation/makefile b/xsd/tests/cxx/parser/validation/makefile
deleted file mode 100644
index c5d43ed..0000000
--- a/xsd/tests/cxx/parser/validation/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/parser/validation/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := all any attribute built-in choice restriction sequence
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/parser/validation/restriction/driver.cxx b/xsd/tests/cxx/parser/validation/restriction/driver.cxx
deleted file mode 100644
index ea87af6..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/driver.cxx
+++ /dev/null
@@ -1,108 +0,0 @@
-// file : tests/cxx/parser/validation/restriction/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the restriction compositor validation.
-//
-
-#include <string>
-#include <fstream>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-
-struct base_a_pimpl: base_a_pskel
-{
-};
-
-struct restriction_a_pimpl: restriction_a_pskel
-{
-};
-
-struct extension_b_pimpl: extension_b_pskel
-{
-};
-
-struct restriction_b_pimpl: restriction_b_pskel
-{
-};
-
-struct type_b_pimpl: type_b_pskel
-{
-};
-
-struct type_r_pimpl: type_r_pskel
-{
-};
-
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
- base_a_pimpl base_a_p;
- restriction_a_pimpl restriction_a_p;
- extension_b_pimpl extension_b_p;
- restriction_b_pimpl restriction_b_p;
- type_b_pimpl type_b_p;
- type_r_pimpl type_r_p;
-
- base_a_p.parsers (string_p, string_p, string_p,
- string_p, string_p, string_p);
-
- restriction_a_p.parsers (string_p, string_p, string_p,
- string_p, string_p, string_p);
-
- extension_b_p.parsers (string_p, string_p, string_p,
- string_p, string_p);
-
- restriction_b_p.parsers (string_p, string_p, string_p,
- string_p, string_p);
-
- type_b_p.parsers (base_a_p, extension_b_p);
- type_r_p.parsers (restriction_a_p, restriction_b_p);
-
- xml_schema::document doc_b_p (type_b_p, "test", "root");
- xml_schema::document doc_r_p (type_r_p, "test", "root");
-
- {
- ifstream ifs (argv[1]);
- type_b_p.pre ();
- doc_b_p.parse (ifs, argv[1], "", xml_schema::flags::dont_validate);
- type_b_p.post_type_b ();
- }
-
- try
- {
- ifstream ifs (argv[1]);
- type_r_p.pre ();
- doc_r_p.parse (ifs, argv[1], "", xml_schema::flags::dont_validate);
- type_r_p.post_type_r ();
- }
- catch (xml_schema::exception const& e)
- {
- cout << e << endl;
- }
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/restriction/makefile b/xsd/tests/cxx/parser/validation/restriction/makefile
deleted file mode 100644
index 5e1a9fd..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-# file : tests/cxx/parser/validation/restriction/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-tests := 000 001 002 003 004 005
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-validation
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test.xsd $(src_base)/test-%.xml $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xml | diff -u $(src_base)/test-$*.std -)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-000.std b/xsd/tests/cxx/parser/validation/restriction/test-000.std
deleted file mode 100644
index e69de29..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-000.std
+++ /dev/null
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-000.xml b/xsd/tests/cxx/parser/validation/restriction/test-000.xml
deleted file mode 100644
index 21402b4..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-000.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <restriction-a z="z">
- <a>a</a>
- <b>b</b>
- <c>c</c>
- </restriction-a>
-
- <restriction-a x="x" y="y" z="z">
- <a>a</a>
- <b>b</b>
- <c>c</c>
- </restriction-a>
-
- <restriction-b y="y">
- <a>a</a>
- <b>b</b>
- </restriction-b>
-
- <restriction-b y="y">
- <a>a</a>
- <c>c</c>
- </restriction-b>
-
- <restriction-b x="x" y="y">
- <a>a</a>
- </restriction-b>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-001.std b/xsd/tests/cxx/parser/validation/restriction/test-001.std
deleted file mode 100644
index 5077837..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-001.std
+++ /dev/null
@@ -1 +0,0 @@
-:7:8 error: expected element 'a' instead of 'b'
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-001.xml b/xsd/tests/cxx/parser/validation/restriction/test-001.xml
deleted file mode 100644
index 4015302..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-001.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- valid base but not restriction: a element -->
- <restriction-a z="z">
- <b>b</b>
- <c>c</c>
- </restriction-a>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-002.std b/xsd/tests/cxx/parser/validation/restriction/test-002.std
deleted file mode 100644
index f12c342..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-002.std
+++ /dev/null
@@ -1 +0,0 @@
-:10:19 error: expected attribute 'z'
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-002.xml b/xsd/tests/cxx/parser/validation/restriction/test-002.xml
deleted file mode 100644
index eb7684c..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-002.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- valid base but not restriction: z attribute -->
- <restriction-a>
- <a>a</a>
- <b>b</b>
- <c>c</c>
- </restriction-a>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-003.std b/xsd/tests/cxx/parser/validation/restriction/test-003.std
deleted file mode 100644
index 0c65175..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-003.std
+++ /dev/null
@@ -1 +0,0 @@
-:11:8 error: unexpected element 'a'
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-003.xml b/xsd/tests/cxx/parser/validation/restriction/test-003.xml
deleted file mode 100644
index 49f18c7..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-003.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- valid base but not restriction: sequence maxOccurs="1" -->
- <restriction-a z="z">
- <a>a</a>
- <b>b</b>
- <c>c</c>
-
- <a>a</a>
- <b>b</b>
- <c>c</c>
- </restriction-a>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-004.std b/xsd/tests/cxx/parser/validation/restriction/test-004.std
deleted file mode 100644
index 5077837..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-004.std
+++ /dev/null
@@ -1 +0,0 @@
-:7:8 error: expected element 'a' instead of 'b'
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-004.xml b/xsd/tests/cxx/parser/validation/restriction/test-004.xml
deleted file mode 100644
index 115cd38..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-004.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- valid extension but not restriction: a element -->
- <restriction-b y="y">
- <b>b</b>
- </restriction-b>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-005.std b/xsd/tests/cxx/parser/validation/restriction/test-005.std
deleted file mode 100644
index e92de14..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-005.std
+++ /dev/null
@@ -1 +0,0 @@
-:9:19 error: expected attribute 'y'
diff --git a/xsd/tests/cxx/parser/validation/restriction/test-005.xml b/xsd/tests/cxx/parser/validation/restriction/test-005.xml
deleted file mode 100644
index e9ab7d9..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test-005.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- valid extension but not restriction: y attribute -->
- <restriction-b>
- <a>a</a>
- <b>b</b>
- </restriction-b>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/restriction/test.xsd b/xsd/tests/cxx/parser/validation/restriction/test.xsd
deleted file mode 100644
index 158ded5..0000000
--- a/xsd/tests/cxx/parser/validation/restriction/test.xsd
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- simple case -->
- <complexType name="base-a">
- <sequence minOccurs="1" maxOccurs="2">
- <element name="a" type="string" minOccurs="0"/>
- <element name="b" type="string"/>
- <element name="c" type="string"/>
- </sequence>
- <attribute name="x" type="string"/>
- <attribute name="y" type="string"/>
- <attribute name="z" type="string"/>
- </complexType>
-
- <complexType name="restriction-a">
- <complexContent>
- <restriction base="t:base-a">
- <sequence minOccurs="1" maxOccurs="1">
- <element name="a" type="string" minOccurs="1"/>
- <element name="b" type="string"/>
- <element name="c" type="string"/>
- </sequence>
- <!-- Can be ommited if not changed, e.g., 'x'. -->
- <attribute name="y" type="string"/> <!-- But can also be repeated without change. -->
- <attribute name="z" type="string" use="required"/>
- </restriction>
- </complexContent>
- </complexType>
-
- <!-- restriction of an extension -->
- <complexType name="base-b">
- <sequence>
- <element name="a" type="string" minOccurs="0"/>
- </sequence>
- <attribute name="x" type="string"/>
- </complexType>
-
- <complexType name="extension-b">
- <complexContent>
- <extension base="t:base-b">
- <choice>
- <element name="b" type="string" minOccurs="0"/>
- <element name="c" type="string"/>
- </choice>
- <attribute name="y" type="string"/>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="restriction-b">
- <complexContent>
- <restriction base="t:extension-b">
- <sequence>
- <sequence>
- <element name="a" type="string" minOccurs="1"/>
- </sequence>
- <choice>
- <element name="b" type="string" minOccurs="0"/>
- <element name="c" type="string"/>
- </choice>
- </sequence>
- <attribute name="y" type="string" use="required"/>
- </restriction>
- </complexContent>
- </complexType>
-
- <complexType name="type-b">
- <choice maxOccurs="unbounded">
- <element name="restriction-a" type="t:base-a"/>
- <element name="restriction-b" type="t:extension-b"/>
- </choice>
- </complexType>
-
- <complexType name="type-r">
- <choice maxOccurs="unbounded">
- <element name="restriction-a" type="t:restriction-a"/>
- <element name="restriction-b" type="t:restriction-b"/>
- </choice>
- </complexType>
-
-</schema>
diff --git a/xsd/tests/cxx/parser/validation/sequence/driver.cxx b/xsd/tests/cxx/parser/validation/sequence/driver.cxx
deleted file mode 100644
index eddf744..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/driver.cxx
+++ /dev/null
@@ -1,140 +0,0 @@
-// file : tests/cxx/parser/validation/sequence/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the sequence compositor validation.
-//
-
-#include <string>
-#include <fstream>
-#include <iostream>
-
-#include "test-pskel.hxx"
-
-using namespace std;
-using namespace test;
-using xml_schema::ro_string;
-
-struct sequence_pimpl: sequence_pskel
-{
- virtual void
- pre ()
- {
- cout << "{" << endl;
- }
-
- virtual void
- a (string const& v)
- {
- cout << " a = " << v << endl;
- }
-
- virtual void
- b (string const& v)
- {
- cout << " b = " << v << endl;
- }
-
- virtual void
- c (string const& v)
- {
- cout << " c = " << v << endl;
- }
-
- virtual void
- d (string const& v)
- {
- cout << " d = " << v << endl;
- }
-
- virtual void
- e (string const& v)
- {
- cout << " e = " << v << endl;
- }
-
- virtual void
- f (string const& v)
- {
- cout << " f = " << v << endl;
- }
-
- virtual void
- _start_any_element (ro_string const& ns,
- ro_string const& name,
- ro_string const*)
- {
- cout << " any: " << ns << "#" << name << endl
- << " {" << endl;
- }
-
- virtual void
- _any_characters (ro_string const& v)
- {
- cout << " chars = " << v << endl;
- }
-
- virtual void
- _end_any_element (ro_string const&, ro_string const&)
- {
- cout << " }" << endl;
- }
-
- virtual void
- post_sequence ()
- {
- cout << "}" << endl
- << endl;
- }
-};
-
-struct type_pimpl: type_pskel
-{
-};
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- xml_schema::string_pimpl string_p;
- sequence_pimpl sequence_p;
- type_pimpl type_p;
-
- sequence_p.parsers (string_p, string_p, string_p,
- string_p, string_p, string_p);
- type_p.parsers (sequence_p);
-
- xml_schema::document doc_p (type_p, "test", "root");
-
- try
- {
- ifstream ifs (argv[1]);
- type_p.pre ();
- doc_p.parse (ifs, argv[1], "", xml_schema::flags::dont_validate);
- type_p.post_type ();
- }
- catch (xml_schema::exception const& e)
- {
- cout << " " << e << endl
- << "}" << endl
- << endl;
- }
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
- catch (ios_base::failure const&)
- {
- cerr << "io failure" << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/parser/validation/sequence/makefile b/xsd/tests/cxx/parser/validation/sequence/makefile
deleted file mode 100644
index 540f2ea..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-# file : tests/cxx/parser/validation/sequence/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-tests := 000 001 002 003 004 005 006
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-validation
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test.xsd $(src_base)/test-%.xml $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xml | diff -u $(src_base)/test-$*.std -)
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-000.std b/xsd/tests/cxx/parser/validation/sequence/test-000.std
deleted file mode 100644
index 8a44762..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-000.std
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- c = c
- d = d
- any: test#any
- {
- chars = aaa
- any: #a
- {
- chars = bbb
- }
- chars = ccc
- }
- f = f
- e = e
-}
-
-{
- a = a
- b = b
- c = c
- d = d
- d = d
- d = d
- any: other#any
- {
- chars = any
- }
- f = f
- e = e
- e = e
-}
-
-{
- a = a
- b = b
- c = c
- d = d
- d = d
- d = d
- any: other#any
- {
- chars = any
- }
- f = f
- e = e
- e = e
- c = c
- d = d
- any: test#any
- {
- chars = any
- }
- f = f
- e = e
-}
-
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-000.xml b/xsd/tests/cxx/parser/validation/sequence/test-000.xml
deleted file mode 100644
index 9bcbd7e..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-000.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <sequence>
- <c>c</c>
- <d>d</d>
- <t:any>aaa<a>bbb</a>ccc</t:any>
- <f>f</f>
- <e>e</e>
- </sequence>
-
- <sequence>
- <a>a</a>
- <b>b</b>
- <c>c</c>
- <d>d</d>
- <d>d</d>
- <d>d</d>
- <o:any>any</o:any>
- <f>f</f>
- <e>e</e>
- <e>e</e>
- </sequence>
-
- <sequence>
- <a>a</a>
- <b>b</b>
- <c>c</c>
- <d>d</d>
- <d>d</d>
- <d>d</d>
- <o:any>any</o:any>
- <f>f</f>
- <e>e</e>
- <e>e</e>
-
- <c>c</c>
- <d>d</d>
- <t:any>any</t:any>
- <f>f</f>
- <e>e</e>
- </sequence>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-001.std b/xsd/tests/cxx/parser/validation/sequence/test-001.std
deleted file mode 100644
index 20dea34..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-001.std
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- :8:14 error: expected element 'a'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-001.xml b/xsd/tests/cxx/parser/validation/sequence/test-001.xml
deleted file mode 100644
index 67d33ce..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-001.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- fail minOccurs="1" -->
- <sequence>
- </sequence>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-002.std b/xsd/tests/cxx/parser/validation/sequence/test-002.std
deleted file mode 100644
index 61343e7..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-002.std
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- c = c
- d = d
- any: test#any
- {
- chars = any
- }
- f = f
- e = e
- c = c
- d = d
- any: test#any
- {
- chars = any
- }
- f = f
- e = e
- :20:8 error: unexpected element 'c'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-002.xml b/xsd/tests/cxx/parser/validation/sequence/test-002.xml
deleted file mode 100644
index be25fcf..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-002.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- fail maxOccurs="2" -->
- <sequence>
- <c>c</c>
- <d>d</d>
- <t:any>any</t:any>
- <f>f</f>
- <e>e</e>
-
- <c>c</c>
- <d>d</d>
- <t:any>any</t:any>
- <f>f</f>
- <e>e</e>
-
- <c>c</c>
- <d>d</d>
- <t:any>any</t:any>
- <f>f</f>
- <e>e</e>
- </sequence>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-003.std b/xsd/tests/cxx/parser/validation/sequence/test-003.std
deleted file mode 100644
index c4e1e46..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-003.std
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- a = a
- :9:8 error: expected element 'b' instead of 'a'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-003.xml b/xsd/tests/cxx/parser/validation/sequence/test-003.xml
deleted file mode 100644
index af7d21d..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-003.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- fail a maxOccurs="1" -->
- <sequence>
- <a>a</a>
- <a>a</a>
- <c>c</c>
- <d>d</d>
- <t:any>any</t:any>
- <f>f</f>
- <e>e</e>
- </sequence>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-004.std b/xsd/tests/cxx/parser/validation/sequence/test-004.std
deleted file mode 100644
index f4c1d4d..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-004.std
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- :8:8 error: expected element 'a' instead of 'd'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-004.xml b/xsd/tests/cxx/parser/validation/sequence/test-004.xml
deleted file mode 100644
index a58b6d4..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-004.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- fail c minOccurs="1" -->
- <sequence>
- <d>d</d>
- <t:any>any</t:any>
- <f>f</f>
- <e>e</e>
- </sequence>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-005.std b/xsd/tests/cxx/parser/validation/sequence/test-005.std
deleted file mode 100644
index 9fa7904..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-005.std
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- c = c
- d = d
- :10:13 error: expected element '##targetNamespace#*' instead of 'other1#any'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-005.xml b/xsd/tests/cxx/parser/validation/sequence/test-005.xml
deleted file mode 100644
index e3dd03d..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-005.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o1="other1"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- fail any namespace="##targetNamespace other" -->
- <sequence>
- <c>c</c>
- <d>d</d>
- <o1:any>any</o1:any>
- <f>f</f>
- <e>e</e>
- </sequence>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-006.std b/xsd/tests/cxx/parser/validation/sequence/test-006.std
deleted file mode 100644
index eb79f47..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-006.std
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- c = c
- d = d
- any: test#any
- {
- chars = any
- }
- f = f
- e = e
- e = e
- :14:8 error: unexpected element 'e'
-}
-
diff --git a/xsd/tests/cxx/parser/validation/sequence/test-006.xml b/xsd/tests/cxx/parser/validation/sequence/test-006.xml
deleted file mode 100644
index e1ecd69..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test-006.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <!-- fail e maxOccurs="2" -->
- <sequence>
- <c>c</c>
- <d>d</d>
- <t:any>any</t:any>
- <f>f</f>
- <e>e</e>
- <e>e</e>
- <e>e</e>
- </sequence>
-
-</t:root>
diff --git a/xsd/tests/cxx/parser/validation/sequence/test.xsd b/xsd/tests/cxx/parser/validation/sequence/test.xsd
deleted file mode 100644
index 8753f54..0000000
--- a/xsd/tests/cxx/parser/validation/sequence/test.xsd
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="sequence">
- <sequence minOccurs="1" maxOccurs="2">
- <element name="a" type="string" minOccurs="0"/>
- <sequence>
- <element name="b" type="string" minOccurs="0"/>
- <element name="c" type="string"/>
- </sequence>
- <element name="d" type="string" maxOccurs="unbounded"/>
- <sequence>
- <any namespace="##targetNamespace other"/>
- <element name="f" type="string"/>
- </sequence>
- <element name="e" type="string" maxOccurs="2"/>
- </sequence>
- </complexType>
-
- <complexType name="type">
- <sequence>
- <element name="sequence" type="t:sequence" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/any-type/driver.cxx b/xsd/tests/cxx/tree/any-type/driver.cxx
deleted file mode 100644
index 1ac5274..0000000
--- a/xsd/tests/cxx/tree/any-type/driver.cxx
+++ /dev/null
@@ -1,145 +0,0 @@
-// file : tests/cxx/tree/any-type/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test anyType and anySimpleType content extraction.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <utility> // std::move
-#include <sstream>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "test.hxx" // Get XSD_CXX11 defined.
-
-#include <xsd/cxx/xml/string.hxx>
-
-using namespace std;
-using namespace test;
-using namespace xercesc;
-
-namespace xml = xsd::cxx::xml;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- XMLPlatformUtils::Initialize ();
-
- try
- {
- // Test parsing
- //
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- // Test API.
- //
- {
- assert (type::a_default_value ().text_content () == "default value");
- }
-
- {
- xml_schema::simple_type x ("fox");
- assert (x.text_content () == "fox");
- x.text_content ("foo");
- assert (x.text_content () == "foo");
- x.text_content ().clear ();
- assert (x.text_content () == "");
- x.text_content () = "baz";
- r->s ().push_back (x);
- }
-
- {
- xml_schema::type x;
-
- DOMDocument& doc (x.dom_content_document ());
-
- // Copy.
- //
- DOMElement* e (doc.createElement (xml::string ("dummy").c_str ()));
- e->setAttribute (xml::string ("x").c_str (),
- xml::string ("foo").c_str ());
- e->setTextContent (xml::string ("data").c_str ());
- x.dom_content ().set (*e);
- e->release ();
-
- r->t ().push_back (x);
- }
-
- {
- XSD_AUTO_PTR<xml_schema::type> x (new xml_schema::type);
-
- DOMDocument& doc (x->dom_content_document ());
-
- // Assume ownership.
- //
- DOMElement* e (doc.createElement (xml::string ("dummy").c_str ()));
- e->setAttribute (xml::string ("x").c_str (),
- xml::string ("foo").c_str ());
- e->setTextContent (xml::string ("data").c_str ());
- x->dom_content ().set (e);
-
-#ifdef XSD_CXX11
- r->t ().push_back (std::move (x));
-#else
- r->t ().push_back (x);
-#endif
- }
-
- // Test printing.
- //
- cout << *r << endl
- << endl;
-
- // Test serialization.
- //
- xml_schema::namespace_infomap map;
-
- map["t"].name = "test";
- map["t"].schema = "test.xsd";
- map["o"].name = "other";
-
- stringstream iostr;
- root (iostr, *r, map);
-
- cout << iostr.str () << endl
- << endl;
-
- {
- XSD_AUTO_PTR<type> r1 (root (iostr, argv[1]));
-
- // Xerces-C++ mis-indentation of mixed content messes this up.
- // assert (*r == *r);
-
- stringstream iostr;
- root (iostr, *r1, map);
-
- cout << iostr.str () << endl
- << endl;
- }
-
- // Test comparison.
- //
- assert (*r == *r);
-
- // Test copy c-tor.
- //
- type copy (*r);
- assert (copy == *r);
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-
- XMLPlatformUtils::Terminate ();
-}
diff --git a/xsd/tests/cxx/tree/any-type/makefile b/xsd/tests/cxx/tree/any-type/makefile
deleted file mode 100644
index 1d0590f..0000000
--- a/xsd/tests/cxx/tree/any-type/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/any-type/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-any-type --generate-serialization \
---generate-ostream --generate-comparison
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/any-type/output b/xsd/tests/cxx/tree/any-type/output
deleted file mode 100644
index 580e7db..0000000
--- a/xsd/tests/cxx/tree/any-type/output
+++ /dev/null
@@ -1,73 +0,0 @@
-
-t:
-t:
-t:
-t:
-t:
-t:
-t:
-t:
-s:
-s: simple
-s: baz
-l: one two three
-a: any simple content
-
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<t:root xmlns:t="test" a="any simple content" xmlns:o="other" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="test test.xsd">
- <t/>
- <t x="x"/>
- <t>any</t>
- <t x="x">any</t>
- <t o:y="y" x="x">
- <n1>
- <n2>nested 1</n2>
- <n2>nested 2</n2>
- </n1>
- <o:n2 o:x="x">more</o:n2>
- </t><t x="x">
- <n1>mi
- <n2>nested 1</n2>x
- <n2>nested 2</n2>ed
- </n1>content
- </t>
- <t x="foo">data</t>
- <t x="foo">data</t>
- <s/>
- <s>simple</s>
- <s>baz</s>
- <l>one two three</l>
-</t:root>
-
-
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<t:root xmlns:t="test" a="any simple content" xmlns:o="other" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="test test.xsd">
- <t/>
- <t x="x"/>
- <t>any</t>
- <t x="x">any</t>
- <t o:y="y" x="x">
- <n1>
- <n2>nested 1</n2>
- <n2>nested 2</n2>
- </n1>
- <o:n2 o:x="x">more</o:n2>
- </t><t x="x">
- <n1>mi
-
- <n2>nested 1</n2>x
-
- <n2>nested 2</n2>ed
-
- </n1>content
-
- </t>
- <t x="foo">data</t>
- <t x="foo">data</t>
- <s/>
- <s>simple</s>
- <s>baz</s>
- <l>one two three</l>
-</t:root>
-
-
diff --git a/xsd/tests/cxx/tree/any-type/test.xml b/xsd/tests/cxx/tree/any-type/test.xml
deleted file mode 100644
index 7c9035a..0000000
--- a/xsd/tests/cxx/tree/any-type/test.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd"
-
- a="any simple content">
-
- <t/>
- <t x="x"/>
- <t>any</t>
- <t x="x">any</t>
- <t x="x" o:y="y">
- <n1>
- <n2>nested 1</n2>
- <n2>nested 2</n2>
- </n1>
- <o:n2 o:x="x">more</o:n2>
- </t>
- <t x="x"><n1>mi<n2>nested 1</n2>x<n2>nested 2</n2>ed</n1>content</t>
-
- <s/>
- <s>simple</s>
-
- <l>one two three</l>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/any-type/test.xsd b/xsd/tests/cxx/tree/any-type/test.xsd
deleted file mode 100644
index 37dcc8d..0000000
--- a/xsd/tests/cxx/tree/any-type/test.xsd
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="any-list">
- <!--Not allowed? list itemType="anySimpleType"/-->
- <list itemType="string"/>
- </simpleType>
-
- <complexType name="type">
- <sequence>
- <element name="t" type="anyType" maxOccurs="unbounded"/>
- <element name="s" type="anySimpleType" maxOccurs="unbounded"/>
- <element name="l" type="t:any-list" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="a" type="anySimpleType" default="default value"/>
- </complexType>
-
- <element name="root" type="t:type"/>
-</schema>
diff --git a/xsd/tests/cxx/tree/binary/cdr/driver.cxx b/xsd/tests/cxx/tree/binary/cdr/driver.cxx
deleted file mode 100644
index a2d7195..0000000
--- a/xsd/tests/cxx/tree/binary/cdr/driver.cxx
+++ /dev/null
@@ -1,144 +0,0 @@
-// file : tests/cxx/tree/binary/cdr/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test non-polymorphic binary serialization to ACE CDR.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cassert>
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- // Save to a CDR stream.
- //
- ACE_OutputCDR ace_ocdr;
- xml_schema::ostream<ACE_OutputCDR> ocdr (ace_ocdr);
- ocdr << *r;
-
- // Load from a CDR stream.
- //
- ACE_InputCDR ace_icdr (ace_ocdr);
- xml_schema::istream<ACE_InputCDR> icdr (ace_icdr);
- XSD_AUTO_PTR<type> c (new type (icdr));
-
- // Compare the two.
- //
- assert (r->list () == c->list ());
- assert (r->union_ () == c->union_ ());
- assert (r->enumeration () == c->enumeration ());
-
- type::complex_sequence rs (r->complex ()), cs (c->complex ());
-
- for (type::complex_iterator ri (rs.begin ()), ci (cs.begin ());
- ri != rs.end () && ci != rs.end (); ++ri, ++ci)
- {
- assert (ri->a () == ci->a ());
- if (ri->b ())
- assert (ri->b () == ci->b ());
- assert (ri->c () == ci->c ());
-
- assert (ri->x () == ci->x ());
- if (ri->y ())
- assert (ri->y () == ci->y ());
- }
-
- // integers
- //
- assert (r->byte () == c->byte ());
- assert (r->unsigned_byte () == c->unsigned_byte ());
- assert (r->short_ () == c->short_ ());
- assert (r->unsigned_short () == c->unsigned_short ());
- assert (r->int_ () == c->int_ ());
- assert (r->unsigned_int () == c->unsigned_int ());
- assert (r->long_ () == c->long_ ());
- assert (r->unsigned_long () == c->unsigned_long ());
- assert (r->integer () == c->integer ());
- assert (r->non_positive_integer () == c->non_positive_integer ());
- assert (r->non_negative_integer () == c->non_negative_integer ());
- assert (r->positive_integer () == c->positive_integer ());
- assert (r->negative_integer () == c->negative_integer ());
-
- // boolean
- //
- assert (r->boolean () == c->boolean ());
-
- // floats
- //
- assert (r->float_ () == c->float_ ());
- assert (r->double_ () == c->double_ ());
- assert (r->decimal () == c->decimal ());
-
- // strings
- //
- assert (r->string () == c->string ());
- assert (r->normalized_string () == c->normalized_string ());
- assert (r->token () == c->token ());
- assert (r->name () == c->name ());
- assert (r->name_token () == c->name_token ());
- assert (r->name_tokens () == c->name_tokens ());
- assert (r->ncname () == c->ncname ());
- assert (r->language () == c->language ());
-
- // qualified name
- //
- assert (r->qname () == c->qname ());
-
- // ID/IDREF
- //
- assert (r->id () == c->id ());
- assert (r->id_ref () == c->id_ref ());
- assert (r->id_refs () == c->id_refs ());
-
- // URI
- //
- assert (r->any_uri () == c->any_uri ());
-
- // binary
- //
- assert (r->base64_binary () == c->base64_binary ());
- assert (r->hex_binary () == c->hex_binary ());
-
- // date/time
- //
- assert (r->day () == c->day ());
- assert (r->month () == c->month ());
- assert (r->year () == c->year ());
- assert (r->month_day () == c->month_day ());
- assert (r->year_month () == c->year_month ());
- assert (r->date () == c->date ());
- assert (r->time () == c->time ());
- assert (r->date_time () == c->date_time ());
- assert (r->duration () == c->duration ());
-
- // anySimpleType
- //
- assert (!r->any_simple_type_attr ().text_content ().empty ());
- assert (r->any_simple_type_attr () == c->any_simple_type_attr ());
-
- assert (!r->any_simple_type ().text_content ().empty ());
- assert (r->any_simple_type () == c->any_simple_type ());
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/binary/cdr/makefile b/xsd/tests/cxx/tree/binary/cdr/makefile
deleted file mode 100644
index eb80d35..0000000
--- a/xsd/tests/cxx/tree/binary/cdr/makefile
+++ /dev/null
@@ -1,90 +0,0 @@
-# file : tests/cxx/tree/binary/cdr/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-$(call import,\
- $(scf_root)/import/libace/stub.make,\
- l: ace.l,cpp-options: ace.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l) $(ace.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options) $(ace.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-insertion ACE_OutputCDR \
---generate-extraction ACE_InputCDR --generate-comparison
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml
- $(call message,test $$1,$$1 $(src_base)/test.xml,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/binary/cdr/test.xml b/xsd/tests/cxx/tree/binary/cdr/test.xml
deleted file mode 100644
index 5cedd98..0000000
--- a/xsd/tests/cxx/tree/binary/cdr/test.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd"
- any_simple_type_attr="any simple content">
-
- <list>1 2 3</list>
-
- <union>abc</union>
-
- <enumeration>left</enumeration>
-
- <complex x="1">
- <a>aaa</a>
- </complex>
- <complex x="1" y="2">
- <a>aaa</a>
- <b>bbb</b>
- <c>c</c>
- <c>cc</c>
- <c>ccc</c>
- </complex>
-
-
- <!-- integers -->
- <byte>65</byte>
- <unsigned_byte>66</unsigned_byte>
- <short>-222</short>
- <unsigned_short>57005</unsigned_short>
- <int>-57005</int>
- <unsigned_int>3735928559</unsigned_int>
- <long>-3735928559</long>
- <unsigned_long>16045690984833335023</unsigned_long>
- <integer>-3735928559</integer>
- <non_positive_integer>-3735928559</non_positive_integer>
- <non_negative_integer>3735928559</non_negative_integer>
- <positive_integer>3735928559</positive_integer>
- <negative_integer>-3735928559</negative_integer>
-
-
- <!-- boolean -->
- <boolean>true</boolean>
-
-
- <!-- floats -->
- <float>1234.1234</float>
- <double>12345678.12345678</double>
- <decimal>1234567812345678.1234567812345678</decimal>
-
-
- <!-- strings -->
- <string>string</string>
- <normalized_string>normalized string</normalized_string>
- <token>one two three</token>
- <name>name</name>
- <name_token>name-token</name_token>
- <name_tokens>name tokens</name_tokens>
- <ncname>ncname</ncname>
- <language>en-us</language>
-
- <!-- qualified name -->
- <qname>xsi:schemaLocation</qname>
-
-
- <!-- ID/IDREF -->
- <id>elements1</id>
- <id>elements2</id>
- <id_ref>elements1</id_ref>
- <id_refs>elements1 elements2</id_refs>
-
-
- <!-- URI -->
- <any_uri>http://www.codesynthesis.com</any_uri>
-
-
- <!-- binary -->
- <base64_binary>YmFzZTY0IGJpbmFyeQ==</base64_binary>
- <hex_binary>6865782052696E617279</hex_binary>
-
-
- <!-- date/time -->
- <date>2001-10-26+02:00</date>
- <date_time>2001-10-26T21:32:52+02:00</date_time>
- <duration>P1Y2M3DT5H20M30S</duration>
- <day>---01+02:00</day>
- <month>--11+02:00</month>
- <month_day>--11-02+02:00</month_day>
- <year>2001+02:00</year>
- <year_month>2001-11+02:00</year_month>
- <time>21:32:52+02:00</time>
-
- <any_simple_type>any simple content in element</any_simple_type>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/binary/cdr/test.xsd b/xsd/tests/cxx/tree/binary/cdr/test.xsd
deleted file mode 100644
index 0629e94..0000000
--- a/xsd/tests/cxx/tree/binary/cdr/test.xsd
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:t="test"
- targetNamespace="test">
-
- <simpleType name="list">
- <list itemType="int"/>
- </simpleType>
-
- <simpleType name="union">
- <union memberTypes="int string"/>
- </simpleType>
-
- <simpleType name="enumeration">
- <restriction base="string">
- <enumeration value="top"/>
- <enumeration value="left"/>
- <enumeration value="bottom"/>
- <enumeration value="right"/>
- </restriction>
- </simpleType>
-
- <complexType name="base">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- <attribute name="x" type="int" use="required"/>
- </complexType>
-
- <complexType name="complex">
- <complexContent>
- <extension base="t:base">
- <sequence>
- <element name="b" type="string" minOccurs="0"/>
- <element name="c" type="string" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="y" type="int"/>
- </extension>
- </complexContent>
- </complexType>
-
-
- <complexType name="type">
- <sequence>
- <element name="list" type="t:list"/>
- <element name="union" type="t:union"/>
- <element name="enumeration" type="t:enumeration"/>
- <element name="complex" type="t:complex" maxOccurs="unbounded"/>
-
- <!-- integers -->
- <element name="byte" type="byte"/>
- <element name="unsigned_byte" type="unsignedByte"/>
- <element name="short" type="short"/>
- <element name="unsigned_short" type="unsignedShort"/>
- <element name="int" type="int"/>
- <element name="unsigned_int" type="unsignedInt"/>
- <element name="long" type="long"/>
- <element name="unsigned_long" type="unsignedLong"/>
- <element name="integer" type="integer"/>
- <element name="non_positive_integer" type="nonPositiveInteger"/>
- <element name="non_negative_integer" type="nonNegativeInteger"/>
- <element name="positive_integer" type="positiveInteger"/>
- <element name="negative_integer" type="negativeInteger"/>
-
-
- <!-- boolean -->
- <element name="boolean" type="boolean"/>
-
-
- <!-- floats -->
- <element name="float" type="float"/>
- <element name="double" type="double"/>
- <element name="decimal" type="decimal"/>
-
-
- <!-- strings -->
- <element name="string" type="string"/>
- <element name="normalized_string" type="normalizedString"/>
- <element name="token" type="token"/>
- <element name="name" type="Name"/>
- <element name="name_token" type="NMTOKEN"/>
- <element name="name_tokens" type="NMTOKENS"/>
- <element name="ncname" type="NCName"/>
- <element name="language" type="language"/>
-
- <!-- qualified name -->
- <element name="qname" type="QName"/>
-
-
- <!-- ID/IDREF -->
- <element name="id" maxOccurs="2" type="ID"/>
- <element name="id_ref" type="IDREF"/>
- <element name="id_refs" type="IDREFS"/>
-
-
- <!-- URI -->
- <element name="any_uri" type="anyURI"/>
-
-
- <!-- binary -->
- <element name="base64_binary" type="base64Binary"/>
- <element name="hex_binary" type="hexBinary"/>
-
-
- <!-- date/time -->
- <element name="date" type="date"/>
- <element name="date_time" type="dateTime"/>
- <element name="duration" type="duration"/>
- <element name="day" type="gDay"/>
- <element name="month" type="gMonth"/>
- <element name="month_day" type="gMonthDay"/>
- <element name="year" type="gYear"/>
- <element name="year_month" type="gYearMonth"/>
- <element name="time" type="time"/>
-
- <element name="any_simple_type" type="anySimpleType"/>
- </sequence>
- <attribute name="any_simple_type_attr" type="anySimpleType" use="required"/>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/binary/makefile b/xsd/tests/cxx/tree/binary/makefile
deleted file mode 100644
index 7ec2f6a..0000000
--- a/xsd/tests/cxx/tree/binary/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/binary/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := cdr polymorphic xdr
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/binary/polymorphic/driver.cxx b/xsd/tests/cxx/tree/binary/polymorphic/driver.cxx
deleted file mode 100644
index 8e7256e..0000000
--- a/xsd/tests/cxx/tree/binary/polymorphic/driver.cxx
+++ /dev/null
@@ -1,165 +0,0 @@
-// file : tests/cxx/tree/binary/polymorphic/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test polymorphic binary serialization.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cassert>
-#include <iostream>
-#include <typeinfo>
-
-#include <ace/Log_Msg.h> // ACE_HEX_DUMP
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- // Save to a CDR stream.
- //
- ACE_OutputCDR ace_ocdr;
- xml_schema::ostream<ACE_OutputCDR> ocdr (ace_ocdr);
- ocdr << *r;
-
- /*
- // Print the binary representation.
- //
- cerr << "binary representation size: " << ace_ocdr.total_length () << endl;
-
- for (const ACE_Message_Block* mb = ace_ocdr.begin ();
- mb != 0;
- mb = mb->cont ())
- {
- ACE_HEX_DUMP ((LM_DEBUG, mb->rd_ptr (), mb->length ()));
- }
- */
-
- // Load from a CDR stream.
- //
- ACE_InputCDR ace_icdr (ace_ocdr);
- xml_schema::istream<ACE_InputCDR> icdr (ace_icdr);
- XSD_AUTO_PTR<type> c (new type (icdr));
-
- // Compare the two.
- //
- assert (r->list () == c->list ());
- assert (r->union_ () == c->union_ ());
- assert (r->enumeration () == c->enumeration ());
-
- {
- complex& rc (dynamic_cast<complex&> (r->base ()));
- complex& cc (dynamic_cast<complex&> (c->base ()));
-
- assert (rc.a () == cc.a ());
- if (rc.b ())
- assert (rc.b () == cc.b ());
- assert (rc.c () == cc.c ());
-
- assert (rc.x () == cc.x ());
- if (rc.y ())
- assert (rc.y () == cc.y ());
- }
-
- {
- complex& rc (dynamic_cast<complex&> (r->sbase ()));
- complex& cc (dynamic_cast<complex&> (c->sbase ()));
-
- assert (rc.a () == cc.a ());
- if (rc.b ())
- assert (rc.b () == cc.b ());
- assert (rc.c () == cc.c ());
-
- assert (rc.x () == cc.x ());
- if (rc.y ())
- assert (rc.y () == cc.y ());
- }
-
- // integers
- //
- assert (r->byte () == c->byte ());
- assert (r->unsigned_byte () == c->unsigned_byte ());
- assert (r->short_ () == c->short_ ());
- assert (r->unsigned_short () == c->unsigned_short ());
- assert (r->int_ () == c->int_ ());
- assert (r->unsigned_int () == c->unsigned_int ());
- assert (r->long_ () == c->long_ ());
- assert (r->unsigned_long () == c->unsigned_long ());
- assert (r->integer () == c->integer ());
- assert (r->non_positive_integer () == c->non_positive_integer ());
- assert (r->non_negative_integer () == c->non_negative_integer ());
- assert (r->positive_integer () == c->positive_integer ());
- assert (r->negative_integer () == c->negative_integer ());
-
- // boolean
- //
- assert (r->boolean () == c->boolean ());
-
- // floats
- //
- assert (r->float_ () == c->float_ ());
- assert (r->double_ () == c->double_ ());
- assert (r->decimal () == c->decimal ());
-
- // strings
- //
- assert (r->string () == c->string ());
- assert (r->normalized_string () == c->normalized_string ());
- assert (r->token () == c->token ());
- assert (r->name () == c->name ());
- assert (r->name_token () == c->name_token ());
- assert (r->name_tokens () == c->name_tokens ());
- assert (r->ncname () == c->ncname ());
- assert (r->language () == c->language ());
-
- // qualified name
- //
- assert (r->qname () == c->qname ());
-
- // ID/IDREF
- //
- assert (r->id () == c->id ());
- assert (r->id_ref () == c->id_ref ());
- assert (r->id_refs () == c->id_refs ());
-
- // URI
- //
- assert (r->any_uri () == c->any_uri ());
-
- // binary
- //
- assert (r->base64_binary () == c->base64_binary ());
- assert (r->hex_binary () == c->hex_binary ());
-
- // date/time
- //
- assert (r->date () == c->date ());
- assert (r->date_time () == c->date_time ());
- assert (r->duration () == c->duration ());
- assert (r->day () == c->day ());
- assert (r->month () == c->month ());
- assert (r->month_day () == c->month_day ());
- assert (r->year () == c->year ());
- assert (r->year_month () == c->year_month ());
- assert (r->time () == c->time ());
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/binary/polymorphic/makefile b/xsd/tests/cxx/tree/binary/polymorphic/makefile
deleted file mode 100644
index 05c5186..0000000
--- a/xsd/tests/cxx/tree/binary/polymorphic/makefile
+++ /dev/null
@@ -1,91 +0,0 @@
-# file : tests/cxx/tree/binary/polymorphic/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-$(call import,\
- $(scf_root)/import/libace/stub.make,\
- l: ace.l,cpp-options: ace.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l) $(ace.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options) $(ace.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-polymorphic --root-element-last \
---generate-insertion ACE_OutputCDR --generate-extraction ACE_InputCDR \
- --generate-comparison
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml
- $(call message,test $$1,$$1 $(src_base)/test.xml,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/binary/polymorphic/test.xml b/xsd/tests/cxx/tree/binary/polymorphic/test.xml
deleted file mode 100644
index ad3a403..0000000
--- a/xsd/tests/cxx/tree/binary/polymorphic/test.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <list>1 2 3</list>
-
- <union>abc</union>
-
- <enumeration>left</enumeration>
-
- <base x="1" xsi:type="t:complex">
- <a>aaa</a>
- </base>
-
- <t:scomplex x="1" y="2">
- <a>aaa</a>
- <b>bbb</b>
- <c>c</c>
- <c>cc</c>
- <c>ccc</c>
- </t:scomplex>
-
-
- <!-- integers -->
- <byte>65</byte>
- <unsigned_byte>66</unsigned_byte>
- <short>-222</short>
- <unsigned_short>57005</unsigned_short>
- <int>-57005</int>
- <unsigned_int>3735928559</unsigned_int>
- <long>-3735928559</long>
- <unsigned_long>16045690984833335023</unsigned_long>
- <integer>-3735928559</integer>
- <non_positive_integer>-3735928559</non_positive_integer>
- <non_negative_integer>3735928559</non_negative_integer>
- <positive_integer>3735928559</positive_integer>
- <negative_integer>-3735928559</negative_integer>
-
-
- <!-- boolean -->
- <boolean>true</boolean>
-
-
- <!-- floats -->
- <float>1234.1234</float>
- <double>12345678.12345678</double>
- <decimal>1234567812345678.1234567812345678</decimal>
-
-
- <!-- strings -->
- <string>string</string>
- <normalized_string>normalized string</normalized_string>
- <token>one two three</token>
- <name>name</name>
- <name_token>name-token</name_token>
- <name_tokens>name tokens</name_tokens>
- <ncname>ncname</ncname>
- <language>en-us</language>
-
- <!-- qualified name -->
- <qname>xsi:schemaLocation</qname>
-
-
- <!-- ID/IDREF -->
- <id>elements1</id>
- <id>elements2</id>
- <id_ref>elements1</id_ref>
- <id_refs>elements1 elements2</id_refs>
-
-
- <!-- URI -->
- <any_uri>http://www.codesynthesis.com</any_uri>
-
-
- <!-- binary -->
- <base64_binary>YmFzZTY0IGJpbmFyeQ==</base64_binary>
- <hex_binary>6865782052696E617279</hex_binary>
-
-
- <!-- date/time -->
- <date>2001-10-26+02:00</date>
- <date_time>2001-10-26T21:32:52+02:00</date_time>
- <duration>P1Y2M3DT5H20M30S</duration>
- <day>---01+02:00</day>
- <month>--11+02:00</month>
- <month_day>--11-02+02:00</month_day>
- <year>2001+02:00</year>
- <year_month>2001-11+02:00</year_month>
- <time>21:32:52+02:00</time>
-
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/binary/polymorphic/test.xsd b/xsd/tests/cxx/tree/binary/polymorphic/test.xsd
deleted file mode 100644
index 8c214e5..0000000
--- a/xsd/tests/cxx/tree/binary/polymorphic/test.xsd
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:t="test"
- targetNamespace="test">
-
- <simpleType name="list">
- <list itemType="int"/>
- </simpleType>
-
- <simpleType name="union">
- <union memberTypes="int string"/>
- </simpleType>
-
- <simpleType name="enumeration">
- <restriction base="string">
- <enumeration value="top"/>
- <enumeration value="left"/>
- <enumeration value="bottom"/>
- <enumeration value="right"/>
- </restriction>
- </simpleType>
-
- <complexType name="base">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- <attribute name="x" type="int" use="required"/>
- </complexType>
-
- <element name="sbase" type="t:base"/>
-
- <complexType name="complex">
- <complexContent>
- <extension base="t:base">
- <sequence>
- <element name="b" type="string" minOccurs="0"/>
- <element name="c" type="string" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="y" type="int"/>
- </extension>
- </complexContent>
- </complexType>
-
- <element name="scomplex" type="t:complex" substitutionGroup="t:sbase"/>
-
- <complexType name="type">
- <sequence>
- <element name="list" type="t:list"/>
- <element name="union" type="t:union"/>
- <element name="enumeration" type="t:enumeration"/>
-
- <element name="base" type="t:base"/>
- <element ref="t:sbase"/>
-
- <!-- integers -->
- <element name="byte" type="byte"/>
- <element name="unsigned_byte" type="unsignedByte"/>
- <element name="short" type="short"/>
- <element name="unsigned_short" type="unsignedShort"/>
- <element name="int" type="int"/>
- <element name="unsigned_int" type="unsignedInt"/>
- <element name="long" type="long"/>
- <element name="unsigned_long" type="unsignedLong"/>
- <element name="integer" type="integer"/>
- <element name="non_positive_integer" type="nonPositiveInteger"/>
- <element name="non_negative_integer" type="nonNegativeInteger"/>
- <element name="positive_integer" type="positiveInteger"/>
- <element name="negative_integer" type="negativeInteger"/>
-
-
- <!-- boolean -->
- <element name="boolean" type="boolean"/>
-
-
- <!-- floats -->
- <element name="float" type="float"/>
- <element name="double" type="double"/>
- <element name="decimal" type="decimal"/>
-
-
- <!-- strings -->
- <element name="string" type="string"/>
- <element name="normalized_string" type="normalizedString"/>
- <element name="token" type="token"/>
- <element name="name" type="Name"/>
- <element name="name_token" type="NMTOKEN"/>
- <element name="name_tokens" type="NMTOKENS"/>
- <element name="ncname" type="NCName"/>
- <element name="language" type="language"/>
-
- <!-- qualified name -->
- <element name="qname" type="QName"/>
-
-
- <!-- ID/IDREF -->
- <element name="id" maxOccurs="2" type="ID"/>
- <element name="id_ref" type="IDREF"/>
- <element name="id_refs" type="IDREFS"/>
-
-
- <!-- URI -->
- <element name="any_uri" type="anyURI"/>
-
-
- <!-- binary -->
- <element name="base64_binary" type="base64Binary"/>
- <element name="hex_binary" type="hexBinary"/>
-
-
- <!-- date/time -->
- <element name="date" type="date"/>
- <element name="date_time" type="dateTime"/>
- <element name="duration" type="duration"/>
- <element name="day" type="gDay"/>
- <element name="month" type="gMonth"/>
- <element name="month_day" type="gMonthDay"/>
- <element name="year" type="gYear"/>
- <element name="year_month" type="gYearMonth"/>
- <element name="time" type="time"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/binary/xdr/driver.cxx b/xsd/tests/cxx/tree/binary/xdr/driver.cxx
deleted file mode 100644
index 623a953..0000000
--- a/xsd/tests/cxx/tree/binary/xdr/driver.cxx
+++ /dev/null
@@ -1,188 +0,0 @@
-// file : tests/cxx/tree/binary/xdr/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test non-polymorphic binary serialization to XDR.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cstring> // std::memcpy
-#include <cassert>
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-extern "C" int
-overflow (char* p, char* buf, int in)
-{
- xml_schema::buffer* dst (reinterpret_cast<xml_schema::buffer*> (p));
-
- size_t n (static_cast<size_t> (in)), size (dst->size ());
- dst->size (size + n);
- memcpy (dst->data () + size, buf, n);
-
- return static_cast<int> (n);
-}
-
-struct underflow_info
-{
- xml_schema::buffer* buf;
- std::size_t pos;
-};
-
-extern "C" int
-underflow (char* p, char* buf, int in)
-{
- underflow_info* ui (reinterpret_cast<underflow_info*> (p));
-
- size_t n (static_cast<size_t> (in)), size (ui->buf->size () - ui->pos);
- n = size > n ? n : size;
-
- memcpy (buf, ui->buf->data () + ui->pos, n);
- ui->pos += n;
-
- return static_cast<int> (n);
-}
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- // Save to an XDR stream.
- //
- XDR xdr;
- xml_schema::buffer buf;
- xdrrec_create (&xdr, 0, 0, reinterpret_cast<char*> (&buf), 0, &overflow);
- xdr.x_op = XDR_ENCODE;
- xsd::cxx::tree::ostream<XDR> oxdr (xdr);
- oxdr << *r;
- xdrrec_endofrecord (&xdr, true); // flush the data
- xdr_destroy (&xdr);
-
- // Load from an XDR stream.
- //
- underflow_info ui;
- ui.buf = &buf;
- ui.pos = 0;
- xdrrec_create (&xdr, 0, 0, reinterpret_cast<char*> (&ui), &underflow, 0);
- xdr.x_op = XDR_DECODE;
- xdrrec_skiprecord (&xdr);
- xsd::cxx::tree::istream<XDR> ixdr (xdr);
- XSD_AUTO_PTR<type> c (new type (ixdr));
- xdr_destroy (&xdr);
-
- // Compare the two.
- //
- assert (r->list () == c->list ());
- assert (r->union_ () == c->union_ ());
- assert (r->enumeration () == c->enumeration ());
-
- type::complex_sequence rs (r->complex ()), cs (c->complex ());
-
- for (type::complex_iterator ri (rs.begin ()), ci (cs.begin ());
- ri != rs.end () && ci != rs.end (); ++ri, ++ci)
- {
- assert (ri->a () == ci->a ());
- if (ri->b ())
- assert (ri->b () == ci->b ());
- assert (ri->c () == ci->c ());
-
- assert (ri->x () == ci->x ());
- if (ri->y ())
- assert (ri->y () == ci->y ());
- }
-
- // integers
- //
- assert (r->byte () == c->byte ());
- assert (r->unsigned_byte () == c->unsigned_byte ());
- assert (r->short_ () == c->short_ ());
- assert (r->unsigned_short () == c->unsigned_short ());
- assert (r->int_ () == c->int_ ());
- assert (r->unsigned_int () == c->unsigned_int ());
- assert (r->long_ () == c->long_ ());
- assert (r->unsigned_long () == c->unsigned_long ());
- assert (r->integer () == c->integer ());
- assert (r->non_positive_integer () == c->non_positive_integer ());
- assert (r->non_negative_integer () == c->non_negative_integer ());
- assert (r->positive_integer () == c->positive_integer ());
- assert (r->negative_integer () == c->negative_integer ());
-
- // boolean
- //
- assert (r->boolean () == c->boolean ());
-
- // floats
- //
- assert (r->float_ () == c->float_ ());
- assert (r->double_ () == c->double_ ());
- assert (r->decimal () == c->decimal ());
-
- // strings
- //
- assert (r->string () == c->string ());
- assert (r->normalized_string () == c->normalized_string ());
- assert (r->token () == c->token ());
- assert (r->name () == c->name ());
- assert (r->name_token () == c->name_token ());
- assert (r->name_tokens () == c->name_tokens ());
- assert (r->ncname () == c->ncname ());
- assert (r->language () == c->language ());
-
- // qualified name
- //
- assert (r->qname () == c->qname ());
-
- // ID/IDREF
- //
- assert (r->id () == c->id ());
- assert (r->id_ref () == c->id_ref ());
- assert (r->id_refs () == c->id_refs ());
-
- // URI
- //
- assert (r->any_uri () == c->any_uri ());
-
- // binary
- //
- assert (r->base64_binary () == c->base64_binary ());
- assert (r->hex_binary () == c->hex_binary ());
-
- // date/time
- //
- assert (r->date () == c->date ());
- assert (r->date_time () == c->date_time ());
- assert (r->duration () == c->duration ());
- assert (r->day () == c->day ());
- assert (r->month () == c->month ());
- assert (r->month_day () == c->month_day ());
- assert (r->year () == c->year ());
- assert (r->year_month () == c->year_month ());
- assert (r->time () == c->time ());
-
- // anySimpleType
- //
- assert (!r->any_simple_type_attr ().text_content ().empty ());
- assert (r->any_simple_type_attr () == c->any_simple_type_attr ());
-
- assert (!r->any_simple_type ().text_content ().empty ());
- assert (r->any_simple_type () == c->any_simple_type ());
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/binary/xdr/makefile b/xsd/tests/cxx/tree/binary/xdr/makefile
deleted file mode 100644
index 2994134..0000000
--- a/xsd/tests/cxx/tree/binary/xdr/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/binary/xdr/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-insertion XDR --generate-extraction XDR \
---generate-comparison
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml
- $(call message,test $$1,$$1 $(src_base)/test.xml,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/binary/xdr/test.xml b/xsd/tests/cxx/tree/binary/xdr/test.xml
deleted file mode 100644
index 5cedd98..0000000
--- a/xsd/tests/cxx/tree/binary/xdr/test.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd"
- any_simple_type_attr="any simple content">
-
- <list>1 2 3</list>
-
- <union>abc</union>
-
- <enumeration>left</enumeration>
-
- <complex x="1">
- <a>aaa</a>
- </complex>
- <complex x="1" y="2">
- <a>aaa</a>
- <b>bbb</b>
- <c>c</c>
- <c>cc</c>
- <c>ccc</c>
- </complex>
-
-
- <!-- integers -->
- <byte>65</byte>
- <unsigned_byte>66</unsigned_byte>
- <short>-222</short>
- <unsigned_short>57005</unsigned_short>
- <int>-57005</int>
- <unsigned_int>3735928559</unsigned_int>
- <long>-3735928559</long>
- <unsigned_long>16045690984833335023</unsigned_long>
- <integer>-3735928559</integer>
- <non_positive_integer>-3735928559</non_positive_integer>
- <non_negative_integer>3735928559</non_negative_integer>
- <positive_integer>3735928559</positive_integer>
- <negative_integer>-3735928559</negative_integer>
-
-
- <!-- boolean -->
- <boolean>true</boolean>
-
-
- <!-- floats -->
- <float>1234.1234</float>
- <double>12345678.12345678</double>
- <decimal>1234567812345678.1234567812345678</decimal>
-
-
- <!-- strings -->
- <string>string</string>
- <normalized_string>normalized string</normalized_string>
- <token>one two three</token>
- <name>name</name>
- <name_token>name-token</name_token>
- <name_tokens>name tokens</name_tokens>
- <ncname>ncname</ncname>
- <language>en-us</language>
-
- <!-- qualified name -->
- <qname>xsi:schemaLocation</qname>
-
-
- <!-- ID/IDREF -->
- <id>elements1</id>
- <id>elements2</id>
- <id_ref>elements1</id_ref>
- <id_refs>elements1 elements2</id_refs>
-
-
- <!-- URI -->
- <any_uri>http://www.codesynthesis.com</any_uri>
-
-
- <!-- binary -->
- <base64_binary>YmFzZTY0IGJpbmFyeQ==</base64_binary>
- <hex_binary>6865782052696E617279</hex_binary>
-
-
- <!-- date/time -->
- <date>2001-10-26+02:00</date>
- <date_time>2001-10-26T21:32:52+02:00</date_time>
- <duration>P1Y2M3DT5H20M30S</duration>
- <day>---01+02:00</day>
- <month>--11+02:00</month>
- <month_day>--11-02+02:00</month_day>
- <year>2001+02:00</year>
- <year_month>2001-11+02:00</year_month>
- <time>21:32:52+02:00</time>
-
- <any_simple_type>any simple content in element</any_simple_type>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/binary/xdr/test.xsd b/xsd/tests/cxx/tree/binary/xdr/test.xsd
deleted file mode 100644
index 0629e94..0000000
--- a/xsd/tests/cxx/tree/binary/xdr/test.xsd
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:t="test"
- targetNamespace="test">
-
- <simpleType name="list">
- <list itemType="int"/>
- </simpleType>
-
- <simpleType name="union">
- <union memberTypes="int string"/>
- </simpleType>
-
- <simpleType name="enumeration">
- <restriction base="string">
- <enumeration value="top"/>
- <enumeration value="left"/>
- <enumeration value="bottom"/>
- <enumeration value="right"/>
- </restriction>
- </simpleType>
-
- <complexType name="base">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- <attribute name="x" type="int" use="required"/>
- </complexType>
-
- <complexType name="complex">
- <complexContent>
- <extension base="t:base">
- <sequence>
- <element name="b" type="string" minOccurs="0"/>
- <element name="c" type="string" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="y" type="int"/>
- </extension>
- </complexContent>
- </complexType>
-
-
- <complexType name="type">
- <sequence>
- <element name="list" type="t:list"/>
- <element name="union" type="t:union"/>
- <element name="enumeration" type="t:enumeration"/>
- <element name="complex" type="t:complex" maxOccurs="unbounded"/>
-
- <!-- integers -->
- <element name="byte" type="byte"/>
- <element name="unsigned_byte" type="unsignedByte"/>
- <element name="short" type="short"/>
- <element name="unsigned_short" type="unsignedShort"/>
- <element name="int" type="int"/>
- <element name="unsigned_int" type="unsignedInt"/>
- <element name="long" type="long"/>
- <element name="unsigned_long" type="unsignedLong"/>
- <element name="integer" type="integer"/>
- <element name="non_positive_integer" type="nonPositiveInteger"/>
- <element name="non_negative_integer" type="nonNegativeInteger"/>
- <element name="positive_integer" type="positiveInteger"/>
- <element name="negative_integer" type="negativeInteger"/>
-
-
- <!-- boolean -->
- <element name="boolean" type="boolean"/>
-
-
- <!-- floats -->
- <element name="float" type="float"/>
- <element name="double" type="double"/>
- <element name="decimal" type="decimal"/>
-
-
- <!-- strings -->
- <element name="string" type="string"/>
- <element name="normalized_string" type="normalizedString"/>
- <element name="token" type="token"/>
- <element name="name" type="Name"/>
- <element name="name_token" type="NMTOKEN"/>
- <element name="name_tokens" type="NMTOKENS"/>
- <element name="ncname" type="NCName"/>
- <element name="language" type="language"/>
-
- <!-- qualified name -->
- <element name="qname" type="QName"/>
-
-
- <!-- ID/IDREF -->
- <element name="id" maxOccurs="2" type="ID"/>
- <element name="id_ref" type="IDREF"/>
- <element name="id_refs" type="IDREFS"/>
-
-
- <!-- URI -->
- <element name="any_uri" type="anyURI"/>
-
-
- <!-- binary -->
- <element name="base64_binary" type="base64Binary"/>
- <element name="hex_binary" type="hexBinary"/>
-
-
- <!-- date/time -->
- <element name="date" type="date"/>
- <element name="date_time" type="dateTime"/>
- <element name="duration" type="duration"/>
- <element name="day" type="gDay"/>
- <element name="month" type="gMonth"/>
- <element name="month_day" type="gMonthDay"/>
- <element name="year" type="gYear"/>
- <element name="year_month" type="gYearMonth"/>
- <element name="time" type="time"/>
-
- <element name="any_simple_type" type="anySimpleType"/>
- </sequence>
- <attribute name="any_simple_type_attr" type="anySimpleType" use="required"/>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/built-in/attributes.xml b/xsd/tests/cxx/tree/built-in/attributes.xml
deleted file mode 100644
index 609a757..0000000
--- a/xsd/tests/cxx/tree/built-in/attributes.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<test:attributes
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/xmlns/test types.xsd"
-
-
- byte="65"
- unsigned_byte="66"
- short="-222"
- unsigned_short="57005"
- int="-57005"
- unsigned_int="3735928559"
- long="-3735928559"
- unsigned_long="16045690984833335023"
- integer="-3735928559"
- non_positive_integer="-3735928559"
- non_negative_integer="3735928559"
- positive_integer="3735928559"
- negative_integer="-3735928559"
-
-
-
- boolean="false"
-
-
-
- float="1234.1234"
- double="12345678.12345678"
- decimal="12345678.12345678"
-
-
-
- string="string"
- normalized_string="normalized string"
- token=" one two three "
- name="name"
- name_token="name-token"
- name_tokens="name tokens"
- ncname="ncname"
- language="en-us"
-
-
- qname="xsi:schemaLocation"
-
-
-
- id="attributes"
- id_ref="attributes"
- id_refs="attributes"
-
-
-
- any_uri="http://www.codesynthesis.com"
-
-
-
- base64_binary="YmFzZTY0IGJpbmFyeQ=="
- hex_binary="6865782052696E617279"
-
-
-
- date="2001-10-26+02:00"
- date_time="2001-10-26T21:32:52+02:00"
- duration="P1Y2M3DT5H20M30S"
- day="---01+02:00"
- month="--11+02:00"
- month_day="--11-02+02:00"
- year="2001+02:00"
- year_month="2001-11+02:00"
- time="21:32:52+02:00"
-
-/>
diff --git a/xsd/tests/cxx/tree/built-in/driver.cxx b/xsd/tests/cxx/tree/built-in/driver.cxx
deleted file mode 100644
index f60ac16..0000000
--- a/xsd/tests/cxx/tree/built-in/driver.cxx
+++ /dev/null
@@ -1,94 +0,0 @@
-// file : tests/cxx/tree/built-in/driver.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test built-in type mapping.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <sstream>
-#include <iostream>
-
-
-#include "types.hxx"
-
-using std::cerr;
-using std::endl;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 4)
- {
- cerr << "usage: " << argv[0] << " elements.xml attributes.xml inherited.xml" << endl;
- return 1;
- }
-
- XSD_AUTO_PTR<xmlns::test::Elements> elements (
- xmlns::test::elements (argv[1]));
-
- XSD_AUTO_PTR<xmlns::test::Attributes> attributes (
- xmlns::test::attributes (argv[2]));
-
- XSD_AUTO_PTR<xmlns::test::Inherited> inherited (
- xmlns::test::inherited (argv[3]));
-
- cerr << "elements: " << *elements << endl
- << endl
- << "attributes: " << *attributes << endl
- << endl
- << "inherited: " << *inherited << endl;
-
- // Test parsing/serialization.
- //
-
- xml_schema::namespace_infomap map;
-
- map["test"].name = "http://www.codesynthesis.com/xmlns/test";
- map["test"].schema = "types.xsd";
-
- {
- std::ostringstream ostr;
- xmlns::test::elements (ostr, *elements, map);
-
- std::istringstream istr (ostr.str ());
- XSD_AUTO_PTR<xmlns::test::Elements> elements1 (
- xmlns::test::elements (istr));
-
- std::ostringstream ostr1;
- xmlns::test::elements (ostr1, *elements1, map);
-
- if (ostr.str () != ostr1.str ())
- return 1;
- }
-
- {
- std::ostringstream ostr;
- xmlns::test::attributes (ostr, *attributes, map);
-
- std::istringstream istr (ostr.str ());
- XSD_AUTO_PTR<xmlns::test::Attributes> attributes1 (
- xmlns::test::attributes (istr));
-
- std::ostringstream ostr1;
- xmlns::test::attributes (ostr1, *attributes1, map);
-
- if (ostr.str () != ostr1.str ())
- return 1;
- }
-
- {
- std::ostringstream ostr;
- xmlns::test::inherited (ostr, *inherited, map);
-
- std::istringstream istr (ostr.str ());
- XSD_AUTO_PTR<xmlns::test::Inherited> inherited1 (
- xmlns::test::inherited (istr));
-
- std::ostringstream ostr1;
- xmlns::test::inherited (ostr1, *inherited1, map);
-
- if (ostr.str () != ostr1.str ())
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/built-in/elements.xml b/xsd/tests/cxx/tree/built-in/elements.xml
deleted file mode 100644
index f76f019..0000000
--- a/xsd/tests/cxx/tree/built-in/elements.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<test:elements
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/xmlns/test types.xsd">
-
- <!-- integers -->
- <byte>65</byte>
- <unsigned_byte>66</unsigned_byte>
- <short>-222</short>
- <unsigned_short>57005</unsigned_short>
- <int>-57005</int>
- <unsigned_int>3735928559</unsigned_int>
- <long>-3735928559</long>
- <unsigned_long>16045690984833335023</unsigned_long>
- <integer>-3735928559</integer>
- <non_positive_integer>-3735928559</non_positive_integer>
- <non_negative_integer>3735928559</non_negative_integer>
- <positive_integer>3735928559</positive_integer>
- <negative_integer>-3735928559</negative_integer>
-
-
- <!-- boolean -->
- <boolean>true</boolean>
-
-
- <!-- floats -->
- <float>1234.1234</float>
- <double>12345678.12345678</double>
- <decimal>12345678.12345678</decimal>
-
-
- <!-- strings -->
- <string>string</string>
- <normalized_string>normalized
-string</normalized_string>
- <token>
- one
- two three </token>
- <name>name</name>
- <name_token>name-token</name_token>
- <name_tokens>name tokens</name_tokens>
- <ncname>ncname</ncname>
- <language>en-us</language>
-
- <!-- qualified name -->
- <qname>xsi:schemaLocation</qname>
-
-
- <!-- ID/IDREF -->
- <id>elements1</id>
- <id>elements2</id>
- <id_ref>elements1</id_ref>
- <id_refs>elements1 elements2</id_refs>
-
-
- <!-- URI -->
- <any_uri>http://www.codesynthesis.com</any_uri>
-
-
- <!-- binary -->
- <base64_binary>YmFzZTY0IGJpbmFyeQ==</base64_binary>
- <hex_binary>6865782052696E617279</hex_binary>
-
-
- <!-- date/time -->
- <date>2001-10-26+02:00</date>
- <date_time>2001-10-26T21:32:52+02:00</date_time>
- <duration>P1Y2M3DT5H20M30S</duration>
- <day>---01+02:00</day>
- <month>--11+02:00</month>
- <month_day>--11-02+02:00</month_day>
- <year>2001+02:00</year>
- <year_month>2001-11+02:00</year_month>
- <time>21:32:52+02:00</time>
-
-
- <!-- entity -->
- <!--
- <entity>foo</entity>
- <entities>foo bar</entities>
- -->
-
-</test:elements>
diff --git a/xsd/tests/cxx/tree/built-in/inherited.xml b/xsd/tests/cxx/tree/built-in/inherited.xml
deleted file mode 100644
index 1781a69..0000000
--- a/xsd/tests/cxx/tree/built-in/inherited.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<test:inherited
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/xmlns/test types.xsd">
-
- <!-- integers -->
- <byte>65</byte>
- <unsigned_byte>66</unsigned_byte>
- <short>-222</short>
- <unsigned_short>57005</unsigned_short>
- <int>-57005</int>
- <unsigned_int>3735928559</unsigned_int>
- <long>-3735928559</long>
- <unsigned_long>16045690984833335023</unsigned_long>
- <integer>-3735928559</integer>
- <non_positive_integer>-3735928559</non_positive_integer>
- <non_negative_integer>3735928559</non_negative_integer>
- <positive_integer>3735928559</positive_integer>
- <negative_integer>-3735928559</negative_integer>
-
-
- <!-- boolean -->
- <boolean>true</boolean>
-
-
- <!-- floats -->
- <float>1234.1234</float>
- <double>12345678.12345678</double>
- <decimal>12345678.12345678</decimal>
-
-
- <!-- strings -->
- <string>string</string>
- <normalized_string>normalized
-string</normalized_string>
- <token>
- one
- two three </token>
- <name>name</name>
- <name_token>name-token</name_token>
- <name_tokens>name tokens</name_tokens>
- <ncname>ncname</ncname>
- <language>en-us</language>
-
- <!-- qualified name -->
- <qname>xsi:schemaLocation</qname>
-
-
- <!-- ID/IDREF -->
- <id>elements1</id>
- <id>elements2</id>
- <id_ref>elements1</id_ref>
- <id_refs>elements1 elements2</id_refs>
-
-
- <!-- URI -->
- <any_uri>http://www.codesynthesis.com</any_uri>
-
-
- <!-- binary -->
- <base64_binary>YmFzZTY0IGJpbmFyeQ==</base64_binary>
- <hex_binary>6865782052696E617279</hex_binary>
-
-
- <!-- date/time -->
- <date>2001-10-26+02:00</date>
- <date_time>2001-10-26T21:32:52+02:00</date_time>
- <duration>P1Y2M3DT5H20M30S</duration>
- <day>---01+02:00</day>
- <month>--11+02:00</month>
- <month_day>--11-02+02:00</month_day>
- <year>2001+02:00</year>
- <year_month>2001-11+02:00</year_month>
- <time>21:32:52+02:00</time>
-
-
- <!-- entity -->
- <!--
- <entity>foo</entity>
- <entities>foo bar</entities>
- -->
-
-</test:inherited>
diff --git a/xsd/tests/cxx/tree/built-in/makefile b/xsd/tests/cxx/tree/built-in/makefile
deleted file mode 100644
index 3df37c3..0000000
--- a/xsd/tests/cxx/tree/built-in/makefile
+++ /dev/null
@@ -1,100 +0,0 @@
-# file : tests/cxx/tree/built-in/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := types.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-
-$(gen): xsd_options += \
---char-type char \
---generate-inline \
---generate-ostream \
---generate-serialization \
---generate-default-ctor \
---generate-from-base-ctor \
---root-element-all
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-# We need to cd to src_base in order to have the schema in the working
-# directory.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/elements.xml $(src_base)/attributes.xml \
-$(src_base)/inherited.xml
- cd $(src_base) && $(driver) $(src_base)/elements.xml \
-$(src_base)/attributes.xml $(src_base)/inherited.xml
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/built-in/types.xsd b/xsd/tests/cxx/tree/built-in/types.xsd
deleted file mode 100644
index 22582cb..0000000
--- a/xsd/tests/cxx/tree/built-in/types.xsd
+++ /dev/null
@@ -1,460 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- elements -->
-
- <xsd:complexType name="Elements">
- <xsd:sequence>
-
- <!-- integers -->
- <xsd:element name="byte" type="xsd:byte"/>
- <xsd:element name="unsigned_byte" type="xsd:unsignedByte"/>
- <xsd:element name="short" type="xsd:short"/>
- <xsd:element name="unsigned_short" type="xsd:unsignedShort"/>
- <xsd:element name="int" type="xsd:int"/>
- <xsd:element name="unsigned_int" type="xsd:unsignedInt"/>
- <xsd:element name="long" type="xsd:long"/>
- <xsd:element name="unsigned_long" type="xsd:unsignedLong"/>
- <xsd:element name="integer" type="xsd:integer"/>
- <xsd:element name="non_positive_integer" type="xsd:nonPositiveInteger"/>
- <xsd:element name="non_negative_integer" type="xsd:nonNegativeInteger"/>
- <xsd:element name="positive_integer" type="xsd:positiveInteger"/>
- <xsd:element name="negative_integer" type="xsd:negativeInteger"/>
-
-
- <!-- boolean -->
- <xsd:element name="boolean" type="xsd:boolean"/>
-
-
- <!-- floats -->
- <xsd:element name="float" type="xsd:float"/>
- <xsd:element name="double" type="xsd:double"/>
- <xsd:element name="decimal" type="xsd:decimal"/>
-
-
- <!-- strings -->
- <xsd:element name="string" type="xsd:string"/>
- <xsd:element name="normalized_string" type="xsd:normalizedString"/>
- <xsd:element name="token" type="xsd:token"/>
- <xsd:element name="name" type="xsd:Name"/>
- <xsd:element name="name_token" type="xsd:NMTOKEN"/>
- <xsd:element name="name_tokens" type="xsd:NMTOKENS"/>
- <xsd:element name="ncname" type="xsd:NCName"/>
- <xsd:element name="language" type="xsd:language"/>
-
- <!-- qualified name -->
- <xsd:element name="qname" type="xsd:QName"/>
-
-
- <!-- ID/IDREF -->
- <xsd:element name="id" maxOccurs="2" type="xsd:ID"/>
- <xsd:element name="id_ref" type="xsd:IDREF"/>
- <xsd:element name="id_refs" type="xsd:IDREFS"/>
-
-
- <!-- URI -->
- <xsd:element name="any_uri" type="xsd:anyURI"/>
-
-
- <!-- binary -->
- <xsd:element name="base64_binary" type="xsd:base64Binary"/>
- <xsd:element name="hex_binary" type="xsd:hexBinary"/>
-
-
- <!-- date/time -->
- <xsd:element name="date" type="xsd:date"/>
- <xsd:element name="date_time" type="xsd:dateTime"/>
- <xsd:element name="duration" type="xsd:duration"/>
- <xsd:element name="day" type="xsd:gDay"/>
- <xsd:element name="month" type="xsd:gMonth"/>
- <xsd:element name="month_day" type="xsd:gMonthDay"/>
- <xsd:element name="year" type="xsd:gYear"/>
- <xsd:element name="year_month" type="xsd:gYearMonth"/>
- <xsd:element name="time" type="xsd:time"/>
-
-
- <!-- entity -->
- <!--
- <xsd:element name="entity" type="xsd:ENTITY"/>
- <xsd:element name="entities" type="xsd:ENTITIES"/>
- -->
-
-
- <!-- notation -->
- <!-- xsd:element name="notation" type="xsd:NOTATION"/ -->
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="elements" type="Elements"/>
-
-
-
- <!-- attributes -->
-
- <xsd:complexType name="Attributes">
- <!-- integers -->
- <xsd:attribute name="byte" type="xsd:byte"/>
- <xsd:attribute name="unsigned_byte" type="xsd:unsignedByte"/>
- <xsd:attribute name="short" type="xsd:short"/>
- <xsd:attribute name="unsigned_short" type="xsd:unsignedShort"/>
- <xsd:attribute name="int" type="xsd:int"/>
- <xsd:attribute name="unsigned_int" type="xsd:unsignedInt"/>
- <xsd:attribute name="long" type="xsd:long"/>
- <xsd:attribute name="unsigned_long" type="xsd:unsignedLong"/>
- <xsd:attribute name="integer" type="xsd:integer"/>
- <xsd:attribute name="non_positive_integer" type="xsd:nonPositiveInteger"/>
- <xsd:attribute name="non_negative_integer" type="xsd:nonNegativeInteger"/>
- <xsd:attribute name="positive_integer" type="xsd:positiveInteger"/>
- <xsd:attribute name="negative_integer" type="xsd:negativeInteger"/>
-
-
- <!-- boolean -->
- <xsd:attribute name="boolean" type="xsd:boolean"/>
-
-
- <!-- floats -->
- <xsd:attribute name="float" type="xsd:float"/>
- <xsd:attribute name="double" type="xsd:double"/>
- <xsd:attribute name="decimal" type="xsd:decimal"/>
-
-
- <!-- strings -->
- <xsd:attribute name="string" type="xsd:string"/>
- <xsd:attribute name="normalized_string" type="xsd:normalizedString"/>
- <xsd:attribute name="token" type="xsd:token"/>
- <xsd:attribute name="name" type="xsd:Name"/>
- <xsd:attribute name="name_token" type="xsd:NMTOKEN"/>
- <xsd:attribute name="name_tokens" type="xsd:NMTOKENS"/>
- <xsd:attribute name="ncname" type="xsd:NCName"/>
- <xsd:attribute name="language" type="xsd:language"/>
-
- <!-- qualified name -->
- <xsd:attribute name="qname" type="xsd:QName"/>
-
-
- <!-- ID/IDREF -->
- <xsd:attribute name="id" type="xsd:ID"/>
- <xsd:attribute name="id_ref" type="xsd:IDREF"/>
- <xsd:attribute name="id_refs" type="xsd:IDREFS"/>
-
-
- <!-- URI -->
- <xsd:attribute name="any_uri" type="xsd:anyURI"/>
-
-
- <!-- binary -->
- <xsd:attribute name="base64_binary" type="xsd:base64Binary"/>
- <xsd:attribute name="hex_binary" type="xsd:hexBinary"/>
-
-
- <!-- date/time -->
- <xsd:attribute name="date" type="xsd:date"/>
- <xsd:attribute name="date_time" type="xsd:dateTime"/>
- <xsd:attribute name="duration" type="xsd:duration"/>
- <xsd:attribute name="day" type="xsd:gDay"/>
- <xsd:attribute name="month" type="xsd:gMonth"/>
- <xsd:attribute name="month_day" type="xsd:gMonthDay"/>
- <xsd:attribute name="year" type="xsd:gYear"/>
- <xsd:attribute name="year_month" type="xsd:gYearMonth"/>
- <xsd:attribute name="time" type="xsd:time"/>
-
-
- <!-- entity -->
- <!--
- <xsd:attribute name="entity" type="xsd:ENTITY"/>
- <xsd:attribute name="entities" type="xsd:ENTITIES"/>
- -->
-
-
- <!-- notation -->
- <!-- xsd:element name="notation" type="xsd:NOTATION"/ -->
- </xsd:complexType>
-
- <xsd:element name="attributes" type="Attributes"/>
-
-
- <!-- inheritance -->
-
- <!-- integers -->
- <xsd:simpleType name="Byte">
- <xsd:restriction base="xsd:byte"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="UnsignedByte">
- <xsd:restriction base="xsd:unsignedByte"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Short">
- <xsd:restriction base="xsd:short"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="UnsignedShort">
- <xsd:restriction base="xsd:unsignedShort"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Int">
- <xsd:restriction base="xsd:int"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="UnsignedInt">
- <xsd:restriction base="xsd:unsignedInt"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Long">
- <xsd:restriction base="xsd:long"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="UnsignedLong">
- <xsd:restriction base="xsd:unsignedLong"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Integer">
- <xsd:restriction base="xsd:integer"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="NonPositiveInteger">
- <xsd:restriction base="xsd:nonPositiveInteger"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="NonNegativeInteger">
- <xsd:restriction base="xsd:nonNegativeInteger"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="PositiveInteger">
- <xsd:restriction base="xsd:positiveInteger"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="NegativeInteger">
- <xsd:restriction base="xsd:negativeInteger"/>
- </xsd:simpleType>
-
-
- <!-- boolean -->
- <xsd:simpleType name="Boolean">
- <xsd:restriction base="xsd:boolean"/>
- </xsd:simpleType>
-
-
- <!-- floats -->
- <xsd:simpleType name="Float">
- <xsd:restriction base="xsd:float"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Double">
- <xsd:restriction base="xsd:double"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Decimal">
- <xsd:restriction base="xsd:decimal"/>
- </xsd:simpleType>
-
-
- <!-- strings -->
- <xsd:simpleType name="String">
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="NormalizedString">
- <xsd:restriction base="xsd:normalizedString"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Token">
- <xsd:restriction base="xsd:token"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Name">
- <xsd:restriction base="xsd:Name"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="NameToken">
- <xsd:restriction base="xsd:NMTOKEN"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="NameTokens">
- <xsd:restriction base="xsd:NMTOKENS"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="NCName">
- <xsd:restriction base="xsd:NCName"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Language">
- <xsd:restriction base="xsd:language"/>
- </xsd:simpleType>
-
-
- <!-- qualified name -->
- <xsd:simpleType name="QName">
- <xsd:restriction base="xsd:QName"/>
- </xsd:simpleType>
-
-
- <!-- ID/IDREF -->
- <xsd:simpleType name="Id">
- <xsd:restriction base="xsd:ID"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="IdRef">
- <xsd:restriction base="xsd:IDREF"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="IdRefs">
- <xsd:restriction base="xsd:IDREFS"/>
- </xsd:simpleType>
-
-
- <!-- URI -->
- <xsd:simpleType name="URI">
- <xsd:restriction base="xsd:anyURI"/>
- </xsd:simpleType>
-
-
- <!-- binary -->
- <xsd:simpleType name="Base64Binary">
- <xsd:restriction base="xsd:base64Binary"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="HexBinary">
- <xsd:restriction base="xsd:hexBinary"/>
- </xsd:simpleType>
-
-
- <!-- date/time -->
- <xsd:simpleType name="Date">
- <xsd:restriction base="xsd:date"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="DateTime">
- <xsd:restriction base="xsd:dateTime"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Duration">
- <xsd:restriction base="xsd:duration"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Day">
- <xsd:restriction base="xsd:gDay"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Month">
- <xsd:restriction base="xsd:gMonth"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="MonthDay">
- <xsd:restriction base="xsd:gMonthDay"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Year">
- <xsd:restriction base="xsd:gYear"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="YearMonth">
- <xsd:restriction base="xsd:gYearMonth"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="Time">
- <xsd:restriction base="xsd:time"/>
- </xsd:simpleType>
-
-
- <!-- entity -->
- <!--
- <xsd:element name="entity" type="xsd:ENTITY"/>
- <xsd:element name="entities" type="xsd:ENTITIES"/>
- -->
-
-
- <!-- notation -->
- <!-- xsd:element name="notation" type="xsd:NOTATION"/ -->
-
- <!-- elements -->
-
- <xsd:complexType name="Inherited">
- <xsd:sequence>
-
- <!-- integers -->
- <xsd:element name="byte" type="Byte"/>
- <xsd:element name="unsigned_byte" type="UnsignedByte"/>
- <xsd:element name="short" type="Short"/>
- <xsd:element name="unsigned_short" type="UnsignedShort"/>
- <xsd:element name="int" type="Int"/>
- <xsd:element name="unsigned_int" type="UnsignedInt"/>
- <xsd:element name="long" type="Long"/>
- <xsd:element name="unsigned_long" type="UnsignedLong"/>
- <xsd:element name="integer" type="Integer"/>
- <xsd:element name="non_positive_integer" type="NonPositiveInteger"/>
- <xsd:element name="non_negative_integer" type="NonNegativeInteger"/>
- <xsd:element name="positive_integer" type="PositiveInteger"/>
- <xsd:element name="negative_integer" type="NegativeInteger"/>
-
-
- <!-- boolean -->
- <xsd:element name="boolean" type="Boolean"/>
-
-
- <!-- floats -->
- <xsd:element name="float" type="Float"/>
- <xsd:element name="double" type="Double"/>
- <xsd:element name="decimal" type="Decimal"/>
-
-
- <!-- strings -->
- <xsd:element name="string" type="String"/>
- <xsd:element name="normalized_string" type="NormalizedString"/>
- <xsd:element name="token" type="Token"/>
- <xsd:element name="name" type="Name"/>
- <xsd:element name="name_token" type="NameToken"/>
- <xsd:element name="name_tokens" type="NameTokens"/>
- <xsd:element name="ncname" type="NCName"/>
- <xsd:element name="language" type="Language"/>
-
- <!-- qualified name -->
- <xsd:element name="qname" type="QName"/>
-
-
- <!-- ID/IDREF -->
- <xsd:element name="id" maxOccurs="2" type="Id"/>
- <xsd:element name="id_ref" type="IdRef"/>
- <xsd:element name="id_refs" type="IdRefs"/>
-
-
- <!-- URI -->
- <xsd:element name="any_uri" type="URI"/>
-
-
- <!-- binary -->
- <xsd:element name="base64_binary" type="Base64Binary"/>
- <xsd:element name="hex_binary" type="HexBinary"/>
-
-
- <!-- date/time -->
- <xsd:element name="date" type="Date"/>
- <xsd:element name="date_time" type="DateTime"/>
- <xsd:element name="duration" type="Duration"/>
- <xsd:element name="day" type="Day"/>
- <xsd:element name="month" type="Month"/>
- <xsd:element name="month_day" type="MonthDay"/>
- <xsd:element name="year" type="Year"/>
- <xsd:element name="year_month" type="YearMonth"/>
- <xsd:element name="time" type="Time"/>
-
-
- <!-- entity -->
- <!--
- <xsd:element name="entity" type="xsd:ENTITY"/>
- <xsd:element name="entities" type="xsd:ENTITIES"/>
- -->
-
-
- <!-- notation -->
- <!-- xsd:element name="notation" type="xsd:NOTATION"/ -->
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="inherited" type="Inherited"/>
-
-</xsd:schema>
diff --git a/xsd/tests/cxx/tree/chameleon/driver.cxx b/xsd/tests/cxx/tree/chameleon/driver.cxx
deleted file mode 100644
index 80c67da..0000000
--- a/xsd/tests/cxx/tree/chameleon/driver.cxx
+++ /dev/null
@@ -1,36 +0,0 @@
-// file : tests/cxx/tree/chameleon/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test chameleon inclusion.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "includer.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<root_t> r (root (argv[1]));
-
- cout << *r << endl;
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/chameleon/includee.xsd b/xsd/tests/cxx/tree/chameleon/includee.xsd
deleted file mode 100644
index 531a7d0..0000000
--- a/xsd/tests/cxx/tree/chameleon/includee.xsd
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="root_t">
- <xsd:sequence>
- <xsd:element name="a" type="type"/>
- <xsd:element ref="b"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="root" type="root_t"/>
-
-</xsd:schema>
diff --git a/xsd/tests/cxx/tree/chameleon/includer.xsd b/xsd/tests/cxx/tree/chameleon/includer.xsd
deleted file mode 100644
index a1c850a..0000000
--- a/xsd/tests/cxx/tree/chameleon/includer.xsd
+++ /dev/null
@@ -1,12 +0,0 @@
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns="test" targetNamespace="test">
-
- <xsd:include schemaLocation="includee.xsd"/>
-
- <xsd:simpleType name="type">
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
-
- <xsd:element name="b" type="xsd:string"/>
-
-</xsd:schema>
diff --git a/xsd/tests/cxx/tree/chameleon/makefile b/xsd/tests/cxx/tree/chameleon/makefile
deleted file mode 100644
index 4ae7eb7..0000000
--- a/xsd/tests/cxx/tree/chameleon/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/chameleon/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := includer.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --root-element root --generate-ostream
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/chameleon/output b/xsd/tests/cxx/tree/chameleon/output
deleted file mode 100644
index c40f715..0000000
--- a/xsd/tests/cxx/tree/chameleon/output
+++ /dev/null
@@ -1,3 +0,0 @@
-
-a: a
-b: b
diff --git a/xsd/tests/cxx/tree/chameleon/test.xml b/xsd/tests/cxx/tree/chameleon/test.xml
deleted file mode 100644
index 12ff279..0000000
--- a/xsd/tests/cxx/tree/chameleon/test.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test includer.xsd">
-
- <a>a</a>
- <t:b>b</t:b>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/comparison/driver.cxx b/xsd/tests/cxx/tree/comparison/driver.cxx
deleted file mode 100644
index e685050..0000000
--- a/xsd/tests/cxx/tree/comparison/driver.cxx
+++ /dev/null
@@ -1,39 +0,0 @@
-// file : tests/cxx/tree/comparison/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test generated comparison operators.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- type::complex_sequence s (r->complex ());
-
- assert (s[0] == s[0]);
- assert (s[0] != s[1]);
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/comparison/makefile b/xsd/tests/cxx/tree/comparison/makefile
deleted file mode 100644
index 82cb7b0..0000000
--- a/xsd/tests/cxx/tree/comparison/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/comparison/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-comparison
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml
- $(call message,test $$1,$$1 $(src_base)/test.xml,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/comparison/test.xml b/xsd/tests/cxx/tree/comparison/test.xml
deleted file mode 100644
index b5d8158..0000000
--- a/xsd/tests/cxx/tree/comparison/test.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <complex x="123" y="abc">
- <a>123</a>
- <b>abc</b>
- <c x="123">abc</c>
- <c x="456">def</c>
- </complex>
-
- <complex x="123" y="abc">
- <a>123</a>
- <b>abc</b>
- <c x="123">abc</c>
- <c x="456">xyz</c>
- </complex>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/comparison/test.xsd b/xsd/tests/cxx/tree/comparison/test.xsd
deleted file mode 100644
index c234add..0000000
--- a/xsd/tests/cxx/tree/comparison/test.xsd
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="member">
- <simpleContent>
- <extension base="string">
- <attribute name="x" type="int" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="complex">
- <sequence>
- <element name="a" type="int"/>
- <element name="b" type="string" minOccurs="0"/>
- <element name="c" type="t:member" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="x" type="int"/>
- <attribute name="y" type="string" use="required"/>
- </complexType>
-
- <complexType name="type">
- <sequence>
- <element name="complex" type="t:complex" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/compilation/driver.cxx b/xsd/tests/cxx/tree/compilation/driver.cxx
deleted file mode 100644
index c2e6298..0000000
--- a/xsd/tests/cxx/tree/compilation/driver.cxx
+++ /dev/null
@@ -1,117 +0,0 @@
-// file : tests/cxx/tree/compilation/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Make sure the runtime library compiles by explicitly instantiating
-// all the types.
-//
-
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-template class xsd::cxx::tree::simple_type<char, xml_schema::type>;
-
-// String types.
-//
-template class xsd::cxx::tree::string< char, xml_schema::simple_type >;
-template class xsd::cxx::tree::normalized_string< char, xml_schema::string >;
-template class xsd::cxx::tree::token< char, xml_schema::normalized_string >;
-template class xsd::cxx::tree::name< char, xml_schema::token >;
-template class xsd::cxx::tree::nmtoken< char, xml_schema::token >;
-template class xsd::cxx::tree::nmtokens< char, xml_schema::simple_type, xml_schema::nmtoken >;
-template class xsd::cxx::tree::ncname< char, xml_schema::name >;
-template class xsd::cxx::tree::language< char, xml_schema::token >;
-
-// ID/IDREF.
-//
-template class xsd::cxx::tree::id< char, xml_schema::ncname >;
-template class xsd::cxx::tree::idref< char, xml_schema::ncname, xml_schema::type >;
-template class xsd::cxx::tree::idrefs< char, xml_schema::simple_type, xml_schema::idref >;
-
-// URI.
-//
-template class xsd::cxx::tree::uri< char, xml_schema::simple_type >;
-
-// Qualified name.
-//
-template class xsd::cxx::tree::qname< char, xml_schema::simple_type, xml_schema::uri, xml_schema::ncname >;
-
-// Binary.
-//
-template class xsd::cxx::tree::buffer< char >;
-template class xsd::cxx::tree::base64_binary< char, xml_schema::simple_type >;
-template class xsd::cxx::tree::hex_binary< char, xml_schema::simple_type >;
-
-// Date/time.
-//
-template class xsd::cxx::tree::date< char, xml_schema::simple_type >;
-template class xsd::cxx::tree::date_time< char, xml_schema::simple_type >;
-template class xsd::cxx::tree::duration< char, xml_schema::simple_type >;
-template class xsd::cxx::tree::gday< char, xml_schema::simple_type >;
-template class xsd::cxx::tree::gmonth< char, xml_schema::simple_type >;
-template class xsd::cxx::tree::gmonth_day< char, xml_schema::simple_type >;
-template class xsd::cxx::tree::gyear< char, xml_schema::simple_type >;
-template class xsd::cxx::tree::gyear_month< char, xml_schema::simple_type >;
-template class xsd::cxx::tree::time< char, xml_schema::simple_type >;
-
-// Entity.
-//
-template class xsd::cxx::tree::entity< char, xml_schema::ncname >;
-template class xsd::cxx::tree::entities< char, xml_schema::simple_type, xml_schema::entity >;
-
-// Namespace information and list stream. Used in
-// serialization functions.
-//
-template class xsd::cxx::xml::dom::namespace_info < char >;
-template class xsd::cxx::xml::dom::namespace_infomap < char >;
-template class xsd::cxx::tree::list_stream < char >;
-
-// Flags and properties.
-//
-template class xsd::cxx::tree::properties< char >;
-
-// Exceptions.
-//
-template class xsd::cxx::tree::exception< char >;
-template class xsd::cxx::tree::parsing< char >;
-template class xsd::cxx::tree::expected_element< char >;
-template class xsd::cxx::tree::unexpected_element< char >;
-template class xsd::cxx::tree::expected_attribute< char >;
-template class xsd::cxx::tree::unexpected_enumerator< char >;
-template class xsd::cxx::tree::expected_text_content< char >;
-template class xsd::cxx::tree::no_type_info< char >;
-template class xsd::cxx::tree::not_derived< char >;
-template class xsd::cxx::tree::duplicate_id< char >;
-template class xsd::cxx::tree::serialization< char >;
-template class xsd::cxx::tree::no_prefix_mapping< char >;
-template class xsd::cxx::tree::bounds< char >;
-
-// Parsing/serialization diagnostics.
-//
-template class xsd::cxx::tree::error< char >;
-template class xsd::cxx::tree::diagnostics< char >;
-
-// Error handler interface.
-//
-template class xsd::cxx::xml::error_handler< char >;
-
-
-//
-//
-template class xsd::cxx::tree::fundamental_base<int, char, xml_schema::type>;
-template class xsd::cxx::tree::one<int>;
-template class xsd::cxx::tree::one<xml_schema::string>;
-template class xsd::cxx::tree::optional<int>;
-template class xsd::cxx::tree::optional<xml_schema::string>;
-template class xsd::cxx::tree::sequence<int>;
-template class xsd::cxx::tree::sequence<xml_schema::string>;
-
-
-int
-main ()
-{
-}
diff --git a/xsd/tests/cxx/tree/compilation/makefile b/xsd/tests/cxx/tree/compilation/makefile
deleted file mode 100644
index 16dbb91..0000000
--- a/xsd/tests/cxx/tree/compilation/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/compilation/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/compilation/test.xsd b/xsd/tests/cxx/tree/compilation/test.xsd
deleted file mode 100644
index 07bebc7..0000000
--- a/xsd/tests/cxx/tree/compilation/test.xsd
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="type">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/complex/ctor/driver.cxx b/xsd/tests/cxx/tree/complex/ctor/driver.cxx
deleted file mode 100644
index 8ea8c87..0000000
--- a/xsd/tests/cxx/tree/complex/ctor/driver.cxx
+++ /dev/null
@@ -1,123 +0,0 @@
-// file : tests/cxx/tree/complex/ctor/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test generation of varous complex type constructors.
-//
-
-#include <cassert>
-#include <memory>
-
-#include "test.hxx"
-
-#ifdef XSD_CXX11
-# include <utility> // std::move
-# define XSD_MOVE(x) std::move(x)
-#else
-# define XSD_MOVE(x) x
-#endif
-
-using namespace std;
-using namespace test;
-
-int
-main ()
-{
- // Test case A.
- //
- {
- a_base b1;
- a_base b2 ("abc"); // empty ultimate base + required
- a_base b3 ("abc", "foo"); // ultimate base + required
-
- a_derived a1;
- a_derived a2 ("foo", "bar"); // empty ultimate base + required
- a_derived a3 (b3, "bar"); // base + required
- a_derived a4 ("abc", "foo", "bar"); // ultimate base + required
- }
-
- // Test case B.
- //
- {
- b_simple s ("base");
- b_base b ("base", "foo");
- b_derived d ("base", "foo", "bar");
- b_type t ("base");
- }
-
- // Test case C.
- //
- {
- c_simple s (c_enum::a);
- c_base b (c_enum::a, "foo");
- c_derived d (c_enum::a, "foo", "bar");
- c_type t (c_enum::a);
- }
-
- // Test case D.
- //
- {
- d_simple s (1);
- d_base b (1, "foo");
- d_derived d (1, "foo", "bar");
- d_type t (1);
- }
-
- // Test case E.
- //
- {
- // e_base
- //
- e_base b1 (1, "foo", e_complex_type ("bar"));
-
- XSD_AUTO_PTR<e_complex_type> c2 (new e_complex_type ("bar"));
- e_base b2 (1, "foo", XSD_MOVE (c2));
-
- XSD_AUTO_PTR<e_simple_type> s3 (new e_simple_type ("foo"));
- XSD_AUTO_PTR<e_complex_type> c3 (new e_complex_type ("bar"));
- e_base b3 (1, XSD_MOVE (s3), XSD_MOVE (c3));
-
- assert (b1 == b2);
- assert (b1 == b3);
-
- // e_derived
- //
- e_derived d1 (1, "foo", e_complex_type ("bar"),
- true, "baz", e_complex_type ("biz"));
-
- XSD_AUTO_PTR<e_complex_type> c2a (new e_complex_type ("bar"));
- XSD_AUTO_PTR<e_complex_type> c2b (new e_complex_type ("biz"));
- e_derived d2 (1, "foo", XSD_MOVE (c2a), true, "baz", XSD_MOVE (c2b));
-
- XSD_AUTO_PTR<e_simple_type> s3a (new e_simple_type ("foo"));
- XSD_AUTO_PTR<xml_schema::string> s3b (new xml_schema::string ("baz"));
- XSD_AUTO_PTR<e_complex_type> c3a (new e_complex_type ("bar"));
- XSD_AUTO_PTR<e_complex_type> c3b (new e_complex_type ("biz"));
- e_derived d3 (1,
- XSD_MOVE (s3a),
- XSD_MOVE (c3a),
- true,
- XSD_MOVE (s3b),
- XSD_MOVE (c3b));
-
- assert (d1 == d2);
- assert (d1 == d3);
-
- }
-
- // Test case F.
- //
- {
- f_type f1 (xml_schema::type (), 1, "foo", f_complex_type ("bar"));
-
- XSD_AUTO_PTR<f_complex_type> c2 (new f_complex_type ("bar"));
- f_type f2 (1, "foo", XSD_MOVE (c2));
-
- XSD_AUTO_PTR<f_simple_type> s3 (new f_simple_type ("foo"));
- XSD_AUTO_PTR<f_complex_type> c3 (new f_complex_type ("bar"));
- f_type f3 (1, XSD_MOVE (s3), XSD_MOVE (c3));
-
- assert (f1 == f2);
- assert (f1 == f3);
- }
-}
diff --git a/xsd/tests/cxx/tree/complex/ctor/makefile b/xsd/tests/cxx/tree/complex/ctor/makefile
deleted file mode 100644
index ffc82b0..0000000
--- a/xsd/tests/cxx/tree/complex/ctor/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/complex/ctor/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-default-ctor --generate-from-base-ctor \
---generate-doxygen --generate-polymorphic --polymorphic-type-all \
---generate-comparison
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/complex/ctor/test.xsd b/xsd/tests/cxx/tree/complex/ctor/test.xsd
deleted file mode 100644
index b8dd95e..0000000
--- a/xsd/tests/cxx/tree/complex/ctor/test.xsd
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Test case A: several levels of inheritance with ultimate base. -->
-
- <complexType name="a_base">
- <simpleContent>
- <extension base="string">
- <attribute name="foo" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="a_derived">
- <simpleContent>
- <extension base="t:a_base">
- <attribute name="bar" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <!-- Test case B: string-based c-tors. -->
-
- <simpleType name="b_simple">
- <restriction base="string">
- </restriction>
- </simpleType>
-
- <complexType name="b_base">
- <simpleContent>
- <extension base="t:b_simple">
- <attribute name="foo" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="b_derived">
- <simpleContent>
- <extension base="t:b_base">
- <attribute name="bar" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="b_type">
- <sequence>
- <element name="a" type="t:b_simple"/>
- </sequence>
- </complexType>
-
- <!-- Test case C: enum-based c-tors. -->
-
- <simpleType name="c_enum_base">
- <restriction base="string">
- <enumeration value="a"/>
- <enumeration value="b"/>
- <enumeration value="c"/>
- </restriction>
- </simpleType>
-
- <simpleType name="c_enum">
- <restriction base="t:c_enum_base">
- <enumeration value="a"/>
- <enumeration value="c"/>
- </restriction>
- </simpleType>
-
- <simpleType name="c_simple">
- <restriction base="t:c_enum">
- </restriction>
- </simpleType>
-
- <complexType name="c_base">
- <simpleContent>
- <extension base="t:c_simple">
- <attribute name="foo" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="c_derived">
- <simpleContent>
- <extension base="t:c_base">
- <attribute name="bar" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="c_type">
- <sequence>
- <element name="a" type="t:c_simple"/>
- </sequence>
- </complexType>
-
- <!-- Test case D: fundamental type c-tors. -->
-
- <simpleType name="d_simple">
- <restriction base="int">
- </restriction>
- </simpleType>
-
- <complexType name="d_base">
- <simpleContent>
- <extension base="t:d_simple">
- <attribute name="foo" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="d_derived">
- <simpleContent>
- <extension base="t:d_base">
- <attribute name="bar" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="d_type">
- <sequence>
- <element name="a" type="t:d_simple"/>
- </sequence>
- </complexType>
-
- <!-- Test case E: auto_ptr ctors. -->
-
- <simpleType name="e_simple_type">
- <restriction base="string">
- </restriction>
- </simpleType>
-
- <complexType name="e_complex_type">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- </complexType>
-
- <complexType name="e_base">
- <sequence>
- <element name="fund" type="int"/>
- <element name="simple" type="t:e_simple_type"/>
- <element name="complex" type="t:e_complex_type"/>
- </sequence>
- </complexType>
-
- <complexType name="e_derived">
- <complexContent>
- <extension base="t:e_base">
- <sequence>
- <element name="fund1" type="boolean"/>
- <element name="simple1" type="string"/>
- <element name="complex1" type="t:e_complex_type"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <!-- Test case F: auto_ptr args in c-tor (all-non-optional-members) -->
-
- <simpleType name="f_simple_type">
- <restriction base="string">
- </restriction>
- </simpleType>
-
- <complexType name="f_complex_type">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- </complexType>
-
- <complexType name="f_type">
- <complexContent>
- <restriction base="anyType">
- <sequence>
- <element name="fund" type="int"/>
- <element name="simple" type="t:f_simple_type"/>
- <element name="complex" type="t:f_complex_type"/>
- </sequence>
- </restriction>
- </complexContent>
- </complexType>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/complex/makefile b/xsd/tests/cxx/tree/complex/makefile
deleted file mode 100644
index db6e6a8..0000000
--- a/xsd/tests/cxx/tree/complex/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/complex/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := ctor
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/containment/driver.cxx b/xsd/tests/cxx/tree/containment/driver.cxx
deleted file mode 100644
index f019de8..0000000
--- a/xsd/tests/cxx/tree/containment/driver.cxx
+++ /dev/null
@@ -1,119 +0,0 @@
-// file : tests/cxx/tree/containment/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test tree node containment.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cassert>
-
-#include "test.hxx"
-
-#ifdef XSD_CXX11
-# include <utility> // std::move
-# define XSD_MOVE(x) std::move(x)
-#else
-# define XSD_MOVE(x) x
-#endif
-
-using namespace std;
-using namespace test;
-
-int
-main ()
-{
- // Change of a container in a sub-tree without ID.
- //
- {
- XSD_AUTO_PTR<inner> i (new inner ());
- i->ref ("foo");
-
- outer o;
- o.i (XSD_MOVE (i));
- o.ref ("foo");
-
- assert (o.i ()->ref ()->get () == 0);
- assert (o.ref ()->get () == 0);
- }
-
- // Change of container in a sub-tree with ID inside.
- //
- {
- XSD_AUTO_PTR<inner> i (new inner ());
- inner* p (i.get ());
- i->id ("foo");
- i->ref ("foo");
- assert (i->ref ()->get () == p);
-
- outer o;
- o.i (XSD_MOVE (i));
- o.ref ("foo");
-
- assert (o.i ()->ref ()->get () == p);
- assert (o.ref ()->get () == p);
- }
-
- // Change of a container in ID.
- //
- {
- XSD_AUTO_PTR<xml_schema::id> id (new xml_schema::id ("foo"));
-
- inner i;
- i.id (XSD_MOVE (id));
- i.ref ("foo");
- assert (i.ref ()->get () == &i);
- }
-
- // Change of a container in a type derived from ID with ID inside.
- //
- {
- XSD_AUTO_PTR<id_ex> id (new id_ex ("foo"));
- id_ex* p (id.get ());
- id->id ("bar");
-
- inner i;
- i.id_ex (XSD_MOVE (id));
-
- i.ref ("foo");
- assert (i.ref ()->get () == &i);
-
- i.ref ("bar");
- assert (i.ref ()->get () == p);
- }
-
- // IDREF lists
- //
- {
- id i1 ("a"), i2 ("b");
-
- XSD_AUTO_PTR<ids> ic (new ids);
- ic->id ().push_back (i1);
- ic->id ().push_back (i2);
-
- XSD_AUTO_PTR<xml_schema::idrefs> r1 (new xml_schema::idrefs);
- r1->push_back (xml_schema::idref ("a"));
- r1->push_back (xml_schema::idref ("b"));
-
- XSD_AUTO_PTR<idref_list> r2 (new idref_list);
- r2->push_back (xml_schema::idref ("a"));
- r2->push_back (xml_schema::idref ("b"));
-
- XSD_AUTO_PTR<idrefs1> rc1 (new idrefs1);
- XSD_AUTO_PTR<idrefs2> rc2 (new idrefs2);
-
- rc1->idrefs (XSD_MOVE (r1));
- rc2->idrefs (XSD_MOVE (r2));
-
- model m;
- m.ids (XSD_MOVE (ic));
- m.idrefs1 (XSD_MOVE (rc1));
- m.idrefs2 (XSD_MOVE (rc2));
-
- assert (m.idrefs1 ().idrefs ()[0].get () != 0);
- assert (m.idrefs1 ().idrefs ()[1].get () != 0);
-
- assert (m.idrefs2 ().idrefs ()[0].get () != 0);
- assert (m.idrefs2 ().idrefs ()[1].get () != 0);
- }
-}
diff --git a/xsd/tests/cxx/tree/containment/makefile b/xsd/tests/cxx/tree/containment/makefile
deleted file mode 100644
index d181fb5..0000000
--- a/xsd/tests/cxx/tree/containment/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/containment/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-default-ctor
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/containment/test.xsd b/xsd/tests/cxx/tree/containment/test.xsd
deleted file mode 100644
index 72c9379..0000000
--- a/xsd/tests/cxx/tree/containment/test.xsd
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="id-ex">
- <simpleContent>
- <extension base="ID">
- <attribute name="id" type="ID"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="inner">
- <sequence>
- <element name="id" type="ID" minOccurs="0"/>
- <element name="id-ex" type="t:id-ex" minOccurs="0"/>
- <element name="ref" type="IDREF" minOccurs="0"/>
- </sequence>
- </complexType>
-
- <complexType name="outer">
- <sequence>
- <element name="i" type="t:inner" minOccurs="0"/>
- <element name="ref" type="IDREF" minOccurs="0"/>
- </sequence>
- </complexType>
-
- <!-- IDREF lists -->
-
- <complexType name="id">
- <attribute name="id" type="ID" use="required"/>
- </complexType>
-
- <complexType name="ids">
- <sequence>
- <element name="id" type="t:id" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <complexType name="idrefs1">
- <attribute name="idrefs" type="IDREFS" use="required"/>
- </complexType>
-
- <simpleType name="idref-list">
- <list itemType="IDREF"/>
- </simpleType>
-
- <complexType name="idrefs2">
- <attribute name="idrefs" type="t:idref-list" use="required"/>
- </complexType>
-
- <complexType name="model">
- <sequence>
- <element name="ids" type="t:ids"/>
- <element name="idrefs1" type="t:idrefs1"/>
- <element name="idrefs2" type="t:idrefs2"/>
- </sequence>
- </complexType>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/default/general/driver.cxx b/xsd/tests/cxx/tree/default/general/driver.cxx
deleted file mode 100644
index b0df8ba..0000000
--- a/xsd/tests/cxx/tree/default/general/driver.cxx
+++ /dev/null
@@ -1,38 +0,0 @@
-// file : tests/cxx/tree/default/general/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test default attribute/element values.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1], xml_schema::flags::dont_validate));
-
- xml_schema::namespace_infomap map;
- map["t"].name = "test";
- root (cout, *r, map);
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/default/general/makefile b/xsd/tests/cxx/tree/default/general/makefile
deleted file mode 100644
index 6c2dfe6..0000000
--- a/xsd/tests/cxx/tree/default/general/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/default/general/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-ostream --generate-serialization \
---generate-default-ctor --generate-from-base-ctor
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/default/general/output b/xsd/tests/cxx/tree/default/general/output
deleted file mode 100644
index 396a698..0000000
--- a/xsd/tests/cxx/tree/default/general/output
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<t:root xmlns:t="test" base64_bin1="" base64_bin2="YmFzZTY0IGJpbmFyeQ==&#xA;" bool1="true" bool2="true" bool3="false" bool4="false" byte="-99" decimal1="1.12345" decimal2="-0.456" double1="1.12345" double2="1123.45" double3="-0.00012345" double4="NaN" double5="-INF" fix1="123" fix2="123" fix3="abc" fix4="abc" fix5="aaa bbb ccc" fix6="aaa bbb ccc" float1="1.123" float2="1123" float3="-0.000123" float4="NaN" float5="-INF" hex_bin1="" hex_bin2="6865782052696E617279" id="this" idref="this" idrefs="this" int="-99999" integer="-99999" language="en-us" long="-99999" ncname="abcd" ninteger="-99999" nmtoken="ab:cd" nmtokens1="a:b efg aaa" nmtokens2="abc" nninteger="99999" npinteger="-99999" nstring=" a b " pinteger="99999" qname1="foo" qname2="t:bar" short="-999" string1="" string2=" a b " token="a b" ubyte="99" uint="99999" ulong="99999" uri="http://example.com" ushort="999">
- <union a="abc"/>
- <list a="123 345 678" b="ab cd ef" c="abc" d="abc def"/>
- <simple a="123" b="abc" c="123" d="abc" e="abc" f="abc 123"/>
- <date a="2009-03-31" b="2009-03-31Z" c="2009-03-31Z" d="2009-03-31Z" e="2009-03-31+12:30" f="2009-03-31-12:30" g="2002009-03-31-12:30"/>
- <time a="12:03:45" b="12:03:45.123Z" c="12:03:05.123Z" d="12:03:45.123Z" e="12:03:45.123+12:30" f="12:03:45-12:30"/>
- <date-time a="2009-03-31T12:03:45" b="2009-03-31T12:03:45.123Z" c="2002009-03-31T12:03:05.123-12:30"/>
- <duration a="P100Y" b="P100M" c="P100D" d="PT12H" e="PT12M" f="PT12.123S" g="-P100Y10M20DT12H12M1.123S"/>
- <day a="---02" b="---22Z" c="---22-12:30"/>
- <month a="--02" b="--12Z" c="--12+12:30"/>
- <year a="2009" b="-2002009Z" c="2009-12:30"/>
- <month-day a="--02-02" b="--12-22Z" c="--12-22+12:30"/>
- <year-month a="2009-02" b="-2002009-12Z" c="2009-12-12:30"/>
-</t:root>
diff --git a/xsd/tests/cxx/tree/default/general/test.xml b/xsd/tests/cxx/tree/default/general/test.xml
deleted file mode 100644
index 11bd0a7..0000000
--- a/xsd/tests/cxx/tree/default/general/test.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<t:root xmlns:t="test" id="this" fix2="123" fix4="abc" fix6="aaa bbb ccc">
-
- <union/>
- <list/>
- <simple/>
- <date/>
- <time/>
- <date-time/>
- <duration/>
- <day/>
- <month/>
- <year/>
- <month-day/>
- <year-month/>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/default/general/test.xsd b/xsd/tests/cxx/tree/default/general/test.xsd
deleted file mode 100644
index 9d9cd38..0000000
--- a/xsd/tests/cxx/tree/default/general/test.xsd
+++ /dev/null
@@ -1,241 +0,0 @@
-<?xml version="1.0"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- union -->
-
- <xs:simpleType name="union">
- <xs:union memberTypes="xs:int xs:string"/>
- </xs:simpleType>
-
- <xs:complexType name="union-test">
- <xs:attribute default="abc" name="a" type="t:union"/>
- </xs:complexType>
-
- <!-- list -->
-
- <xs:simpleType name="fix-list">
- <xs:list itemType="xs:int"/>
- </xs:simpleType>
-
- <xs:simpleType name="var-list">
- <xs:list itemType="xs:string"/>
- </xs:simpleType>
-
- <xs:simpleType name="list-item">
- <xs:restriction base="xs:string"/>
- </xs:simpleType>
-
- <xs:simpleType name="usr-list">
- <xs:list itemType="t:list-item"/>
- </xs:simpleType>
-
- <xs:simpleType name="union-list">
- <xs:list itemType="t:union"/>
- </xs:simpleType>
-
- <xs:complexType name="list-test">
- <xs:attribute default="123 345 678" name="a" type="t:fix-list"/>
- <xs:attribute default=" ab cd ef " name="b" type="t:var-list"/>
- <xs:attribute default="abc" name="c" type="t:usr-list"/>
- <xs:attribute default="abc def" name="d" type="t:union-list"/>
- </xs:complexType>
-
- <!-- simple type -->
-
- <xs:simpleType name="int-base">
- <xs:restriction base="xs:int"/>
- </xs:simpleType>
-
- <xs:simpleType name="str-base">
- <xs:restriction base="xs:string"/>
- </xs:simpleType>
-
- <xs:simpleType name="int">
- <xs:restriction base="t:int-base"/>
- </xs:simpleType>
-
- <xs:simpleType name="str">
- <xs:restriction base="t:str-base"/>
- </xs:simpleType>
-
- <xs:simpleType name="union-derived">
- <xs:restriction base="t:union"/>
- </xs:simpleType>
-
- <xs:simpleType name="list-derived">
- <xs:restriction base="t:usr-list"/>
- </xs:simpleType>
-
- <xs:complexType name="simple-test">
- <xs:attribute default="123" name="a" type="t:int-base"/>
- <xs:attribute default="abc" name="b" type="t:str-base"/>
- <xs:attribute default="123" name="c" type="t:int"/>
- <xs:attribute default="abc" name="d" type="t:str"/>
- <xs:attribute default="abc" name="e" type="t:union-derived"/>
- <xs:attribute default="abc 123" name="f" type="t:list-derived"/>
- </xs:complexType>
-
- <!-- date/time types -->
-
- <xs:simpleType name="date-derived">
- <xs:restriction base="xs:date"/>
- </xs:simpleType>
-
- <xs:complexType name="date-test">
- <xs:attribute default="2009-03-31" name="a" type="xs:date"/>
- <xs:attribute default="2009-03-31Z" name="b" type="xs:date"/>
- <xs:attribute default="2009-03-31+00:00" name="c" type="xs:date"/>
- <xs:attribute default="2009-03-31-00:00" name="d" type="xs:date"/>
- <xs:attribute default="2009-03-31+12:30" name="e" type="xs:date"/>
- <xs:attribute default="2009-03-31-12:30" name="f" type="xs:date"/>
- <xs:attribute default="2002009-03-31-12:30" name="g" type="t:date-derived"/>
- </xs:complexType>
-
- <xs:complexType name="time-test">
- <xs:attribute default="12:03:45" name="a" type="xs:time"/>
- <xs:attribute default="12:03:45.123Z" name="b" type="xs:time"/>
- <xs:attribute default="12:03:05.123+00:00" name="c" type="xs:time"/>
- <xs:attribute default="12:03:45.123-00:00" name="d" type="xs:time"/>
- <xs:attribute default="12:03:45.123+12:30" name="e" type="xs:time"/>
- <xs:attribute default="12:03:45-12:30" name="f" type="xs:time"/>
- </xs:complexType>
-
- <xs:complexType name="date-time-test">
- <xs:attribute default="2009-03-31T12:03:45" name="a" type="xs:dateTime"/>
- <xs:attribute default="2009-03-31T12:03:45.123Z" name="b" type="xs:dateTime"/>
- <xs:attribute default="2002009-03-31T12:03:05.123-12:30" name="c" type="xs:dateTime"/>
- </xs:complexType>
-
- <xs:complexType name="duration-test">
- <xs:attribute default="P100Y" name="a" type="xs:duration"/>
- <xs:attribute default="P100M" name="b" type="xs:duration"/>
- <xs:attribute default="P100D" name="c" type="xs:duration"/>
- <xs:attribute default="PT12H" name="d" type="xs:duration"/>
- <xs:attribute default="PT12M" name="e" type="xs:duration"/>
- <xs:attribute default="PT12.123S" name="f" type="xs:duration"/>
- <xs:attribute default="-P100Y10M20DT12H12M1.123S" name="g" type="xs:duration"/>
- </xs:complexType>
-
- <xs:complexType name="day-test">
- <xs:attribute default="---02" name="a" type="xs:gDay"/>
- <xs:attribute default="---22Z" name="b" type="xs:gDay"/>
- <xs:attribute default="---22-12:30" name="c" type="xs:gDay"/>
- </xs:complexType>
-
- <xs:complexType name="month-test">
- <xs:attribute default="--02" name="a" type="xs:gMonth"/>
- <xs:attribute default="--12Z" name="b" type="xs:gMonth"/>
- <xs:attribute default="--12+12:30" name="c" type="xs:gMonth"/>
- </xs:complexType>
-
- <xs:complexType name="year-test">
- <xs:attribute default="2009" name="a" type="xs:gYear"/>
- <xs:attribute default="-2002009Z" name="b" type="xs:gYear"/>
- <xs:attribute default="2009-12:30" name="c" type="xs:gYear"/>
- </xs:complexType>
-
- <xs:complexType name="month-day-test">
- <xs:attribute default="--02-02" name="a" type="xs:gMonthDay"/>
- <xs:attribute default="--12-22Z" name="b" type="xs:gMonthDay"/>
- <xs:attribute default="--12-22+12:30" name="c" type="xs:gMonthDay"/>
- </xs:complexType>
-
- <xs:complexType name="year-month-test">
- <xs:attribute default="2009-02" name="a" type="xs:gYearMonth"/>
- <xs:attribute default="-2002009-12Z" name="b" type="xs:gYearMonth"/>
- <xs:attribute default="2009-12-12:30" name="c" type="xs:gYearMonth"/>
- </xs:complexType>
-
-
- <xs:complexType name="type">
- <xs:sequence>
- <xs:element name="union" type="t:union-test"/>
- <xs:element name="list" type="t:list-test"/>
- <xs:element name="simple" type="t:simple-test"/>
- <xs:element name="date" type="t:date-test"/>
- <xs:element name="time" type="t:time-test"/>
- <xs:element name="date-time" type="t:date-time-test"/>
- <xs:element name="duration" type="t:duration-test"/>
- <xs:element name="day" type="t:day-test"/>
- <xs:element name="month" type="t:month-test"/>
- <xs:element name="year" type="t:year-test"/>
- <xs:element name="month-day" type="t:month-day-test"/>
- <xs:element name="year-month" type="t:year-month-test"/>
- </xs:sequence>
-
-<!--
- <xs:attribute name="any" type="xs:anySimpleType" default=""/>
--->
-
- <xs:attribute name="bool1" type="xs:boolean" default="true"/>
- <xs:attribute name="bool2" type="xs:boolean" default="1"/>
- <xs:attribute name="bool3" type="xs:boolean" default="false"/>
- <xs:attribute name="bool4" type="xs:boolean" default="0"/>
-
- <xs:attribute name="byte" type="xs:byte" default="-99"/>
- <xs:attribute name="ubyte" type="xs:unsignedByte" default="99"/>
- <xs:attribute name="short" type="xs:short" default="-999"/>
- <xs:attribute name="ushort" type="xs:unsignedShort" default="999"/>
- <xs:attribute name="int" type="xs:int" default="-99999"/>
- <xs:attribute name="uint" type="xs:unsignedInt" default="99999"/>
- <xs:attribute name="long" type="xs:long" default="-99999"/>
- <xs:attribute name="ulong" type="xs:unsignedLong" default="99999"/>
-
- <xs:attribute name="integer" type="xs:integer" default="-99999"/>
- <xs:attribute name="npinteger" type="xs:nonPositiveInteger" default="-99999"/>
- <xs:attribute name="nninteger" type="xs:nonNegativeInteger" default="99999"/>
- <xs:attribute name="pinteger" type="xs:positiveInteger" default="99999"/>
- <xs:attribute name="ninteger" type="xs:negativeInteger" default="-99999"/>
-
- <xs:attribute name="float1" type="xs:float" default="1.123"/>
- <xs:attribute name="float2" type="xs:float" default="1.123e3"/>
- <xs:attribute name="float3" type="xs:float" default="-.123E-3"/>
- <xs:attribute name="float4" type="xs:float" default="NaN"/>
- <xs:attribute name="float5" type="xs:float" default="-INF"/>
-
- <xs:attribute name="double1" type="xs:double" default="1.12345"/>
- <xs:attribute name="double2" type="xs:double" default="1.12345e3"/>
- <xs:attribute name="double3" type="xs:double" default="-.12345E-3"/>
- <xs:attribute name="double4" type="xs:double" default="NaN"/>
- <xs:attribute name="double5" type="xs:double" default="-INF"/>
-
- <xs:attribute name="decimal1" type="xs:decimal" default="1.12345"/>
- <xs:attribute name="decimal2" type="xs:decimal" default="-.456"/>
-
- <xs:attribute name="string1" type="xs:string" default=""/>
- <xs:attribute name="string2" type="xs:string" default=" a b "/>
- <xs:attribute name="nstring" type="xs:normalizedString" default=" a b "/>
- <xs:attribute name="token" type="xs:token" default=" a b "/>
- <xs:attribute name="nmtoken" type="xs:NMTOKEN" default="ab:cd"/>
- <xs:attribute name="nmtokens1" type="xs:NMTOKENS" default=" a:b efg aaa "/>
- <xs:attribute name="nmtokens2" type="xs:NMTOKENS" default="abc"/>
- <xs:attribute name="ncname" type="xs:NCName" default=" abcd "/>
- <xs:attribute name="language" type="xs:language" default=" en-us "/>
- <xs:attribute name="id" type="xs:ID"/>
- <xs:attribute name="idref" type="xs:IDREF" default="this"/>
- <xs:attribute name="idrefs" type="xs:IDREFS" default=" this "/>
- <xs:attribute name="uri" type="xs:anyURI" default=" http://example.com "/>
-
- <xs:attribute name="qname1" type="xs:QName" default="foo"/>
- <xs:attribute name="qname2" type="xs:QName" default="t:bar"/>
-
- <xs:attribute name="base64_bin1" type="xs:base64Binary" default=""/>
- <xs:attribute name="base64_bin2" type="xs:base64Binary" default="YmFzZTY0IGJpbmFyeQ=="/>
-
- <xs:attribute name="hex_bin1" type="xs:hexBinary" default=""/>
- <xs:attribute name="hex_bin2" type="xs:hexBinary" default="6865782052696E617279"/>
-
- <!-- fixed -->
-
- <xs:attribute name="fix1" type="xs:int" fixed="123"/>
- <xs:attribute name="fix2" type="xs:int" fixed="123" use="required"/>
- <xs:attribute name="fix3" type="xs:string" fixed="abc"/>
- <xs:attribute name="fix4" type="xs:string" fixed="abc" use="required"/>
- <xs:attribute name="fix5" type="xs:NMTOKENS" fixed="aaa bbb ccc"/>
- <xs:attribute name="fix6" type="xs:NMTOKENS" fixed="aaa bbb ccc" use="required"/>
-
- </xs:complexType>
-
- <xs:element name="root" type="t:type"/>
-
-</xs:schema>
diff --git a/xsd/tests/cxx/tree/default/makefile b/xsd/tests/cxx/tree/default/makefile
deleted file mode 100644
index 56fa53d..0000000
--- a/xsd/tests/cxx/tree/default/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/default/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := general omit
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/default/omit/driver.cxx b/xsd/tests/cxx/tree/default/omit/driver.cxx
deleted file mode 100644
index 6a074c1..0000000
--- a/xsd/tests/cxx/tree/default/omit/driver.cxx
+++ /dev/null
@@ -1,47 +0,0 @@
-// file : tests/cxx/tree/default/omit/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test default attribute omission from the output.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1], xml_schema::flags::dont_validate));
-
- cout << *r << endl
- << "default x: " << derived::x_default_value () << endl
- << "default y: " << derived::y_default_value () << endl
- << "fixed p: " << derived::p_default_value () << endl
- << "fixed q1: " << derived::q1_default_value () << endl
- << "fixed q2: " << derived::q2_default_value () << endl;
-
- // Serialize.
- //
- xml_schema::namespace_infomap map;
- map["t"].name = "test";
- root (cout, *r, map);
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/default/omit/makefile b/xsd/tests/cxx/tree/default/omit/makefile
deleted file mode 100644
index caaec12..0000000
--- a/xsd/tests/cxx/tree/default/omit/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/default/omit/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-ostream --generate-serialization \
---generate-default-ctor --generate-from-base-ctor --omit-default-attributes
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/default/omit/output b/xsd/tests/cxx/tree/default/omit/output
deleted file mode 100644
index 150ad58..0000000
--- a/xsd/tests/cxx/tree/default/omit/output
+++ /dev/null
@@ -1,19 +0,0 @@
-
-derived:
-a: a
-x: foo
-q1: 1
-y: -20
-p: bar
-q2: 2
-default x: foo
-default y: -20
-fixed p: bar
-fixed q1: 1
-fixed q2: 2
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<t:root xmlns:t="test">
- <derived q1="1" q2="2">
- <a>a</a>
- </derived>
-</t:root>
diff --git a/xsd/tests/cxx/tree/default/omit/test.xml b/xsd/tests/cxx/tree/default/omit/test.xml
deleted file mode 100644
index dec39b4..0000000
--- a/xsd/tests/cxx/tree/default/omit/test.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <derived q1="1" q2="2">
- <a>a</a>
- </derived>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/default/omit/test.xsd b/xsd/tests/cxx/tree/default/omit/test.xsd
deleted file mode 100644
index bfc68d4..0000000
--- a/xsd/tests/cxx/tree/default/omit/test.xsd
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="base">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- <attribute name="x" type="string" default="foo"/>
- <attribute name="q1" type="int" fixed="1" use="required"/>
- </complexType>
-
- <complexType name="derived">
- <complexContent>
- <extension base="t:base">
- <attribute name="y" type="int" default="-20"/>
- <attribute name="p" type="string" fixed="bar"/>
- <attribute name="q2" type="int" fixed="2" use="required"/>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="type">
- <sequence>
- <element name="derived" type="t:derived"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/detach/driver.cxx b/xsd/tests/cxx/tree/detach/driver.cxx
deleted file mode 100644
index cabd9ea..0000000
--- a/xsd/tests/cxx/tree/detach/driver.cxx
+++ /dev/null
@@ -1,109 +0,0 @@
-// file : tests/cxx/tree/detach/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the detach functionality.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cassert>
-
-#include "test.hxx"
-
-#ifdef XSD_CXX11
-# include <utility> // std::move
-# define XSD_MOVE(x) std::move(x)
-#else
-# define XSD_MOVE(x) x
-#endif
-
-using namespace std;
-using namespace test;
-
-int
-main ()
-{
- using test::ref;
-
- // Construct the model.
- //
- object o1 ("o1");
- o1.data ().push_back ("1-1");
- o1.data ().push_back ("1-2");
- o1.data ().push_back ("1-3");
-
- object o2 ("o2");
- o1.data ().push_back ("2-1");
- o1.data ().push_back ("2-2");
- o1.data ().push_back ("2-3");
-
- object o3 ("o3");
- o1.data ().push_back ("3-1");
- o1.data ().push_back ("3-2");
- o1.data ().push_back ("3-3");
-
- object o4 ("o4");
- o1.data ().push_back ("4-1");
- o1.data ().push_back ("4-2");
- o1.data ().push_back ("4-3");
-
- subtree s1;
- s1.o ().push_back (o1);
- s1.o ().push_back (o2);
- s1.r ().push_back (ref ("o2"));
- s1.r ().push_back (ref ("o3"));
-
- subtree s2;
- s2.o ().push_back (o3);
- s2.o ().push_back (o4);
- s2.r ().push_back (ref ("o4"));
- s2.r ().push_back (ref ("o1"));
-
- model m;
- m.one (s1);
- m.opt (s2);
-
- // Detach one.
- //
- XSD_AUTO_PTR<subtree> p (m.detach_one ());
- assert (p->_container () == 0);
- assert (p->r ()[0].get () == &p->o ()[1]);
- assert (m.opt ()->r ()[1].get () == 0);
-
- m.one (XSD_MOVE (p));
- assert (m.opt ()->r ()[1].get () == &m.one ().o ()[0]);
- p = m.detach_one ();
-
- model m1;
- m1.one (XSD_MOVE (p));
- m1.opt (s2);
- assert (m1.opt ()->r ()[1].get () == &m1.one ().o ()[0]);
-
- p = m1.detach_one ();
- m.seq ().push_back (XSD_MOVE (p));
-
- // Detach opt.
- //
- p = m.opt ().detach ();
- assert (!m.opt ());
- assert (p->_container () == 0);
- assert (p->r ()[0].get () == &p->o ()[1]);
- assert (m.seq ()[0].r ()[1].get () == 0);
-
- m.seq ().push_back (XSD_MOVE (p));
-
- // Detach seq.
- //
- p = m.seq ().detach_back ();
- assert (p->_container () == 0);
- assert (p->r ()[0].get () == &p->o ()[1]);
- assert (m.seq ()[0].r ()[1].get () == 0);
-
- m.seq ().push_back (XSD_MOVE (p));
- assert (m.seq ()[0].r ()[1].get () == &m.seq ()[1].o ()[0]);
-
- m.seq ().detach (m.seq ().begin (), p);
- assert (p->_container () == 0);
- assert (p->r ()[0].get () == &p->o ()[1]);
- assert (m.seq ()[0].r ()[1].get () == 0);
-}
diff --git a/xsd/tests/cxx/tree/detach/makefile b/xsd/tests/cxx/tree/detach/makefile
deleted file mode 100644
index 64def55..0000000
--- a/xsd/tests/cxx/tree/detach/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/detach/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-detach --generate-default-ctor
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/detach/test.xsd b/xsd/tests/cxx/tree/detach/test.xsd
deleted file mode 100644
index b9f5166..0000000
--- a/xsd/tests/cxx/tree/detach/test.xsd
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="object">
- <sequence>
- <element name="data" type="string" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="id" type="ID" use="required"/>
- </complexType>
-
- <complexType name="ref">
- <simpleContent>
- <extension base="IDREF"/>
- </simpleContent>
- </complexType>
-
- <complexType name="subtree">
- <sequence>
- <element name="o" type="t:object" minOccurs="0" maxOccurs="unbounded"/>
- <element name="r" type="t:ref" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <complexType name="model">
- <sequence>
- <element name="one" type="t:subtree"/>
- <element name="opt" type="t:subtree" minOccurs="0"/>
- <element name="seq" type="t:subtree" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/dom-association/dom-parse.cxx b/xsd/tests/cxx/tree/dom-association/dom-parse.cxx
deleted file mode 100644
index c065d19..0000000
--- a/xsd/tests/cxx/tree/dom-association/dom-parse.cxx
+++ /dev/null
@@ -1,96 +0,0 @@
-// file : tests/cxx/tree/dom-association/dom-parse.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include "dom-parse.hxx"
-
-#include <istream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/XMLUniDefs.hpp> // chLatin_*
-#include <xercesc/framework/Wrapper4InputSource.hpp>
-
-#include <xsd/cxx/xml/sax/std-input-source.hxx>
-#include <xsd/cxx/xml/dom/bits/error-handler-proxy.hxx>
-
-#include <xsd/cxx/tree/exceptions.hxx>
-#include <xsd/cxx/tree/error-handler.hxx>
-
-using namespace xercesc;
-namespace xml = xsd::cxx::xml;
-namespace tree = xsd::cxx::tree;
-
-XSD_DOM_AUTO_PTR<DOMDocument>
-parse (std::istream& is,
- const std::string& id,
- bool validate)
-{
- const XMLCh ls_id [] = {chLatin_L, chLatin_S, chNull};
-
- // Get an implementation of the Load-Store (LS) interface.
- //
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
-
- XSD_DOM_AUTO_PTR<DOMLSParser> parser (
- impl->createLSParser (DOMImplementationLS::MODE_SYNCHRONOUS, 0));
-
- DOMConfiguration* conf (parser->getDomConfig ());
-
- // Discard comment nodes in the document.
- //
- conf->setParameter (XMLUni::fgDOMComments, false);
-
- // Enable datatype normalization.
- //
- conf->setParameter (XMLUni::fgDOMDatatypeNormalization, true);
-
- // Do not create EntityReference nodes in the DOM tree. No
- // EntityReference nodes will be created, only the nodes
- // corresponding to their fully expanded substitution text
- // will be created.
- //
- conf->setParameter (XMLUni::fgDOMEntities, false);
-
- // Perform namespace processing.
- //
- conf->setParameter (XMLUni::fgDOMNamespaces, true);
-
- // Do not include ignorable whitespace in the DOM tree.
- //
- conf->setParameter (XMLUni::fgDOMElementContentWhitespace, false);
-
- // Enable/Disable validation.
- //
- conf->setParameter (XMLUni::fgDOMValidate, validate);
- conf->setParameter (XMLUni::fgXercesSchema, validate);
- conf->setParameter (XMLUni::fgXercesSchemaFullChecking, false);
-
- // Xerces-C++ 3.1.0 is the first version with working multi import
- // support.
- //
-#if _XERCES_VERSION >= 30100
- conf->setParameter (XMLUni::fgXercesHandleMultipleImports, true);
-#endif
-
- // We will release the DOM document ourselves.
- //
- conf->setParameter (XMLUni::fgXercesUserAdoptsDOMDocument, true);
-
- // Set error handler.
- //
- tree::error_handler<char> eh;
- xml::dom::bits::error_handler_proxy<char> ehp (eh);
- conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
-
- // Prepare input stream.
- //
- xml::sax::std_input_source isrc (is, id);
- Wrapper4InputSource wrap (&isrc, false);
-
- XSD_DOM_AUTO_PTR<DOMDocument> doc (parser->parse (&wrap));
-
- eh.throw_if_failed<tree::parsing<char> > ();
-
- return doc;
-}
diff --git a/xsd/tests/cxx/tree/dom-association/dom-parse.hxx b/xsd/tests/cxx/tree/dom-association/dom-parse.hxx
deleted file mode 100644
index 2c3bd3f..0000000
--- a/xsd/tests/cxx/tree/dom-association/dom-parse.hxx
+++ /dev/null
@@ -1,24 +0,0 @@
-// file : tests/cxx/tree/dom-association/dom-parse.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef DOM_PARSE
-#define DOM_PARSE
-
-#include <string>
-#include <iosfwd>
-
-#include <xercesc/dom/DOMDocument.hpp>
-
-#include <xsd/cxx/xml/dom/auto-ptr.hxx>
-
-// Parse an XML document from the standard input stream with an
-// optional resource id. Resource id is used in diagnostics as
-// well as to locate schemas referenced from inside the document.
-//
-XSD_DOM_AUTO_PTR<xercesc::DOMDocument>
-parse (std::istream& is,
- const std::string& id,
- bool validate);
-
-#endif // DOM_PARSE
diff --git a/xsd/tests/cxx/tree/dom-association/driver.cxx b/xsd/tests/cxx/tree/dom-association/driver.cxx
deleted file mode 100644
index edcda50..0000000
--- a/xsd/tests/cxx/tree/dom-association/driver.cxx
+++ /dev/null
@@ -1,72 +0,0 @@
-// file : tests/cxx/tree/dom-association/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test DOM association/ownership.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <fstream>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-
-#include "dom-parse.hxx"
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-using namespace xercesc;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- int r (0);
-
- XMLPlatformUtils::Initialize ();
-
- try
- {
- ifstream ifs;
- ifs.exceptions (ifstream::badbit | ifstream::failbit);
- ifs.open (argv[1]);
-
- DOMDocument* ptr;
-
-#ifdef XSD_CXX11
- xml_schema::dom::unique_ptr<DOMDocument> doc (parse (ifs, argv[1], true));
- ptr = doc.get ();
- unique_ptr<type> r (
- root (std::move (doc),
- xml_schema::flags::keep_dom | xml_schema::flags::own_dom));
-#else
- xml_schema::dom::auto_ptr<DOMDocument> doc (parse (ifs, argv[1], true));
- ptr = doc.get ();
- auto_ptr<type> r (
- root (doc,
- xml_schema::flags::keep_dom | xml_schema::flags::own_dom));
-#endif
-
- assert (doc.get () == 0);
- assert (r->_node ()->getOwnerDocument () == ptr);
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- r = 1;
- }
- catch (const std::ios_base::failure&)
- {
- cerr << argv[1] << ": unable to open or read failure" << endl;
- r = 1;
- }
-
- XMLPlatformUtils::Terminate ();
- return r;
-}
diff --git a/xsd/tests/cxx/tree/dom-association/makefile b/xsd/tests/cxx/tree/dom-association/makefile
deleted file mode 100644
index 4a05d45..0000000
--- a/xsd/tests/cxx/tree/dom-association/makefile
+++ /dev/null
@@ -1,92 +0,0 @@
-# file : tests/cxx/tree/dom-association/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx dom-parse.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-# Define XSD_CXX11 since we include libxsd headers directly.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifeq ($(cxx_standard),c++11)
-$(obj) $(dep): cpp_options += -DXSD_CXX11
-endif
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-ostream
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/dom-association/output b/xsd/tests/cxx/tree/dom-association/output
deleted file mode 100644
index e69de29..0000000
--- a/xsd/tests/cxx/tree/dom-association/output
+++ /dev/null
diff --git a/xsd/tests/cxx/tree/dom-association/test.xml b/xsd/tests/cxx/tree/dom-association/test.xml
deleted file mode 100644
index 624a80c..0000000
--- a/xsd/tests/cxx/tree/dom-association/test.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <a>a</a>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/dom-association/test.xsd b/xsd/tests/cxx/tree/dom-association/test.xsd
deleted file mode 100644
index 07bebc7..0000000
--- a/xsd/tests/cxx/tree/dom-association/test.xsd
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="type">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/encoding/char/iso-8859-1/driver.cxx b/xsd/tests/cxx/tree/encoding/char/iso-8859-1/driver.cxx
deleted file mode 100644
index 6a92ae0..0000000
--- a/xsd/tests/cxx/tree/encoding/char/iso-8859-1/driver.cxx
+++ /dev/null
@@ -1,75 +0,0 @@
-// file : tests/cxx/tree/encoding/char/iso-8859-1/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test ISO-8859-1 encoding.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <fstream>
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- try
- {
- root (argv[1]);
- return 1;
- }
- catch (xsd::cxx::xml::iso8859_1_unrepresentable const&)
- {
- }
-
- xsd::cxx::xml::char_transcoder::unrep_char ('?');
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- {
- type::a_sequence const& s (r->a ());
-
- if (s[0] != "abc" ||
- s[1] != "\xE6" ||
- s[2] != "\xA2\xA3\xA4\xA5" ||
- s[3] != "???")
- {
- cerr << "invalid encoding" << endl;
- return 1;
- }
- }
-
- {
- type::b_sequence const& s (r->b ());
-
- if (s[0] != strenum::abc ||
- s[1] != strenum::a_c ||
- s[2] != strenum::cxx__bc)
- {
- cerr << "invalid encoding" << endl;
- return 1;
- }
- }
-
- xml_schema::namespace_infomap map;
- map["t"].name = "test";
-
- root (std::cout, *r, map, "ISO-8859-1");
- }
- catch (xml_schema::exception const& e)
- {
- cerr << "xml_schema::exception: " << e.what () << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/encoding/char/iso-8859-1/makefile b/xsd/tests/cxx/tree/encoding/char/iso-8859-1/makefile
deleted file mode 100644
index 8a952f7..0000000
--- a/xsd/tests/cxx/tree/encoding/char/iso-8859-1/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/encoding/char/iso-8859-1/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --char-encoding iso8859-1 --generate-serialization \
---generate-doxygen
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/test.std
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/test.std -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.std b/xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.std
deleted file mode 100644
index d26b30f..0000000
--- a/xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.std
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>
-<t:root xmlns:t="test">
- <a>abc</a>
- <a>æ</a>
- <a>¢£¤¥</a>
- <a>???</a>
- <b>abc</b>
- <b>aâc</b>
- <b>âòbc</b>
-</t:root>
diff --git a/xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.xml b/xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.xml
deleted file mode 100644
index 9c9e752..0000000
--- a/xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <a>abc</a>
- <a>&#xE6;</a>
- <a>&#xA2;&#xA3;&#xA4;&#xA5;</a>
- <a>&#x100;&#xAAAA;&#xAAAAA;</a>
-
- <b>abc</b>
- <b>a&#xE2;c</b>
- <b>&#xE2;&#xF2;bc</b>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.xsd b/xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.xsd
deleted file mode 100644
index 31b8901..0000000
--- a/xsd/tests/cxx/tree/encoding/char/iso-8859-1/test.xsd
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="strenum">
-
- <annotation>
- <documentation>
- Test enum. Valid values are:
- abc
- a&#xE2;c
- &#xF2;bc
- </documentation>
- </annotation>
-
- <restriction base="string">
- <enumeration value="abc"/>
- <enumeration value="a&#xE2;c"/>
- <enumeration value="&#xE2;&#xF2;bc"/>
- </restriction>
- </simpleType>
-
- <complexType name="type">
- <sequence>
- <element name="a" type="string" maxOccurs="unbounded"/>
- <element name="b" type="t:strenum" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/encoding/char/lcp/driver.cxx b/xsd/tests/cxx/tree/encoding/char/lcp/driver.cxx
deleted file mode 100644
index d44d0fe..0000000
--- a/xsd/tests/cxx/tree/encoding/char/lcp/driver.cxx
+++ /dev/null
@@ -1,41 +0,0 @@
-// file : tests/cxx/tree/encoding/char/lcp/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test local code page encoding (--char-encoding lcp).
-// The test just makes sure it still compiles and works.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <fstream>
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- xml_schema::namespace_infomap map;
- map["t"].name = "test";
-
- root (std::cout, *r, map);
- }
- catch (xml_schema::exception const& e)
- {
- cerr << "xml_schema::exception: " << e.what () << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/encoding/char/lcp/makefile b/xsd/tests/cxx/tree/encoding/char/lcp/makefile
deleted file mode 100644
index 9dc599d..0000000
--- a/xsd/tests/cxx/tree/encoding/char/lcp/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/encoding/char/lcp/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization --char-encoding lcp
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/test.std
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/test.std -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/encoding/char/lcp/test.std b/xsd/tests/cxx/tree/encoding/char/lcp/test.std
deleted file mode 100644
index 368826d..0000000
--- a/xsd/tests/cxx/tree/encoding/char/lcp/test.std
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<t:root xmlns:t="test">
- <a>abcd</a>
-</t:root>
diff --git a/xsd/tests/cxx/tree/encoding/char/lcp/test.xml b/xsd/tests/cxx/tree/encoding/char/lcp/test.xml
deleted file mode 100644
index 772512e..0000000
--- a/xsd/tests/cxx/tree/encoding/char/lcp/test.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <a>abcd</a>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/encoding/char/lcp/test.xsd b/xsd/tests/cxx/tree/encoding/char/lcp/test.xsd
deleted file mode 100644
index 1e264e3..0000000
--- a/xsd/tests/cxx/tree/encoding/char/lcp/test.xsd
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="type">
- <sequence>
- <element name="a" type="string" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/encoding/char/makefile b/xsd/tests/cxx/tree/encoding/char/makefile
deleted file mode 100644
index 587eeb1..0000000
--- a/xsd/tests/cxx/tree/encoding/char/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/encoding/char/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-tests := lcp utf-8 iso-8859-1
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/encoding/char/utf-8/driver.cxx b/xsd/tests/cxx/tree/encoding/char/utf-8/driver.cxx
deleted file mode 100644
index 9d12659..0000000
--- a/xsd/tests/cxx/tree/encoding/char/utf-8/driver.cxx
+++ /dev/null
@@ -1,66 +0,0 @@
-// file : tests/cxx/tree/encoding/char/utf-8/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test UTF-8 encoding.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <fstream>
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- {
- type::a_sequence const& s (r->a ());
-
- if (s[0] != "abc" ||
- s[1] != "\xD5\x95" ||
- s[2] != "\xEA\xAA\xAA" ||
- s[3] != "\xF2\xAA\xAA\xAA")
- {
- cerr << "invalid encoding" << endl;
- return 1;
- }
- }
-
- {
- type::b_sequence const& s (r->b ());
-
- if (s[0] != strenum::abc ||
- s[1] != strenum::a_c ||
- s[2] != strenum::cxx_bc ||
- s[3] != strenum::ab_)
- {
- cerr << "invalid encoding" << endl;
- return 1;
- }
- }
-
- xml_schema::namespace_infomap map;
- map["t"].name = "test";
-
- root (std::cout, *r, map, "ASCII");
- }
- catch (xml_schema::exception const& e)
- {
- cerr << "xml_schema::exception: " << e.what () << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/encoding/char/utf-8/makefile b/xsd/tests/cxx/tree/encoding/char/utf-8/makefile
deleted file mode 100644
index e2bbdfc..0000000
--- a/xsd/tests/cxx/tree/encoding/char/utf-8/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/encoding/char/utf-8/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization --generate-doxygen
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/test.std
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/test.std -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/encoding/char/utf-8/test.std b/xsd/tests/cxx/tree/encoding/char/utf-8/test.std
deleted file mode 100644
index ffce337..0000000
--- a/xsd/tests/cxx/tree/encoding/char/utf-8/test.std
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="ASCII" standalone="no" ?>
-<t:root xmlns:t="test">
- <a>abc</a>
- <a>&#x555;</a>
- <a>&#xAAAA;</a>
- <a>&#xAAAAA;</a>
- <b>abc</b>
- <b>a&#x555;c</b>
- <b>&#xAAAA;bc</b>
- <b>ab&#xAAAAA;</b>
-</t:root>
diff --git a/xsd/tests/cxx/tree/encoding/char/utf-8/test.xml b/xsd/tests/cxx/tree/encoding/char/utf-8/test.xml
deleted file mode 100644
index a6e5d99..0000000
--- a/xsd/tests/cxx/tree/encoding/char/utf-8/test.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <a>abc</a>
- <a>&#x555;</a>
- <a>&#xAAAA;</a>
- <a>&#xAAAAA;</a>
-
- <b>abc</b>
- <b>a&#x555;c</b>
- <b>&#xAAAA;bc</b>
- <b>ab&#xAAAAA;</b>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/encoding/char/utf-8/test.xsd b/xsd/tests/cxx/tree/encoding/char/utf-8/test.xsd
deleted file mode 100644
index 6c32a32..0000000
--- a/xsd/tests/cxx/tree/encoding/char/utf-8/test.xsd
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="strenum">
-
- <annotation>
- <documentation>
- Test enum. Valid values are:
- abc
- a&#x555;c
- &#xAAAA;bc
- ab&#xAAAAA;
- </documentation>
- </annotation>
-
- <restriction base="string">
- <enumeration value="abc"/>
- <enumeration value="a&#x555;c"/>
- <enumeration value="&#xAAAA;bc"/>
- <enumeration value="ab&#xAAAAA;"/>
- </restriction>
- </simpleType>
-
- <complexType name="type">
- <sequence>
- <element name="a" type="string" maxOccurs="unbounded"/>
- <element name="b" type="t:strenum" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/encoding/makefile b/xsd/tests/cxx/tree/encoding/makefile
deleted file mode 100644
index 2108fa2..0000000
--- a/xsd/tests/cxx/tree/encoding/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/encoding/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := char wchar
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/encoding/wchar/driver.cxx b/xsd/tests/cxx/tree/encoding/wchar/driver.cxx
deleted file mode 100644
index 6b8d51e..0000000
--- a/xsd/tests/cxx/tree/encoding/wchar/driver.cxx
+++ /dev/null
@@ -1,56 +0,0 @@
-// file : tests/cxx/tree/encoding/wchar/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test the wide character mapping.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <fstream>
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- // Use dont_validate because we do not have instance's system id (path).
- //
- std::ifstream ifs (argv[1]);
- XSD_AUTO_PTR<type> r (root (ifs, xml_schema::flags::dont_validate));
-
- {
- type::b_sequence const& s (r->b ());
-
- if (s[0] != strenum::abc ||
- s[1] != strenum::a__c ||
- s[2] != strenum::cxx__bc ||
- s[3] != strenum::ab__)
- {
- cerr << "invalid encoding" << endl;
- return 1;
- }
- }
-
- xml_schema::namespace_infomap map;
- map[L"t"].name = L"test";
-
- root (std::cout, *r, map, L"ASCII");
- }
- catch (xml_schema::exception const& e)
- {
- cerr << "xml_schema::exception: " << e.what () << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/encoding/wchar/makefile b/xsd/tests/cxx/tree/encoding/wchar/makefile
deleted file mode 100644
index e66d3a5..0000000
--- a/xsd/tests/cxx/tree/encoding/wchar/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/encoding/wchar/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization --generate-doxygen \
---char-type wchar_t
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/test.std
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/test.std -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/encoding/wchar/test.std b/xsd/tests/cxx/tree/encoding/wchar/test.std
deleted file mode 100644
index 815ba6c..0000000
--- a/xsd/tests/cxx/tree/encoding/wchar/test.std
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="ASCII" standalone="no" ?>
-<t:root xmlns:t="test">
- <a>abc</a>
- <a>&#x1FFF;&#xD7FF;</a>
- <a>&#x10000;&#x10FFFD;</a>
- <b>abc</b>
- <b>a&#x1FFF;&#xD7FF;c</b>
- <b>&#x10000;&#x10FFFD;bc</b>
- <b>ab&#x10000;&#x10FFFD;</b>
-</t:root>
diff --git a/xsd/tests/cxx/tree/encoding/wchar/test.xml b/xsd/tests/cxx/tree/encoding/wchar/test.xml
deleted file mode 100644
index c6ec850..0000000
--- a/xsd/tests/cxx/tree/encoding/wchar/test.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <a>abc</a>
- <a>&#x1FFF;&#xD7FF;</a>
- <a>&#x10000;&#x10FFFD;</a>
-
- <b>abc</b>
- <b>a&#x1FFF;&#xD7FF;c</b>
- <b>&#x10000;&#x10FFFD;bc</b>
- <b>ab&#x10000;&#x10FFFD;</b>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/encoding/wchar/test.xsd b/xsd/tests/cxx/tree/encoding/wchar/test.xsd
deleted file mode 100644
index 0bf4bdd..0000000
--- a/xsd/tests/cxx/tree/encoding/wchar/test.xsd
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="strenum">
-
- <annotation>
- <documentation>
- Test enum. Valid values are:
- abc
- a&#x1FFF;&#xD7FF;c
- &#x10000;&#x10FFFD;bc
- ab&#x10000;&#x10FFFD;
- </documentation>
- </annotation>
-
- <restriction base="string">
- <enumeration value="abc"/>
- <enumeration value="a&#x1FFF;&#xD7FF;c"/>
- <enumeration value="&#x10000;&#x10FFFD;bc"/>
- <enumeration value="ab&#x10000;&#x10FFFD;"/>
- </restriction>
- </simpleType>
-
- <complexType name="type">
- <sequence>
- <element name="a" type="string" maxOccurs="unbounded"/>
- <element name="b" type="t:strenum" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/enumeration/ctor/driver.cxx b/xsd/tests/cxx/tree/enumeration/ctor/driver.cxx
deleted file mode 100644
index bd2589f..0000000
--- a/xsd/tests/cxx/tree/enumeration/ctor/driver.cxx
+++ /dev/null
@@ -1,31 +0,0 @@
-// file : tests/cxx/tree/enumeration/ctor/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test enumeration constructors.
-//
-#include <string>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main ()
-{
- // Test ctor(const char*).
- //
- {
- string_enum se ("a");
- type t ("a", 1);
- }
-
- // Test ctor(const std::string&)
- //
- {
- string const s ("c");
- string_enum se (s);
- type t (s, 3);
- }
-}
diff --git a/xsd/tests/cxx/tree/enumeration/ctor/makefile b/xsd/tests/cxx/tree/enumeration/ctor/makefile
deleted file mode 100644
index 2fae138..0000000
--- a/xsd/tests/cxx/tree/enumeration/ctor/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/enumeration/ctor/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-default-ctor --generate-from-base-ctor \
---generate-doxygen
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/enumeration/ctor/test.xsd b/xsd/tests/cxx/tree/enumeration/ctor/test.xsd
deleted file mode 100644
index c5d625a..0000000
--- a/xsd/tests/cxx/tree/enumeration/ctor/test.xsd
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="string-enum-base">
- <restriction base="string">
- <enumeration value="a"/>
- <enumeration value="b"/>
- <enumeration value="c"/>
- </restriction>
- </simpleType>
-
- <simpleType name="string-enum">
- <restriction base="t:string-enum-base">
- <enumeration value="a"/>
- <enumeration value="c"/>
- </restriction>
- </simpleType>
-
- <simpleType name="int-enum-base">
- <restriction base="int">
- <enumeration value="1"/>
- <enumeration value="2"/>
- <enumeration value="3"/>
- </restriction>
- </simpleType>
-
- <simpleType name="int-enum">
- <restriction base="t:int-enum-base">
- <enumeration value="1"/>
- <enumeration value="3"/>
- </restriction>
- </simpleType>
-
- <complexType name="type">
- <sequence>
- <element name="a" type="t:string-enum"/>
- <element name="b" type="t:int-enum"/>
- </sequence>
- </complexType>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/enumeration/inheritance/driver.cxx b/xsd/tests/cxx/tree/enumeration/inheritance/driver.cxx
deleted file mode 100644
index 0a6d5d2..0000000
--- a/xsd/tests/cxx/tree/enumeration/inheritance/driver.cxx
+++ /dev/null
@@ -1,54 +0,0 @@
-// file : tests/cxx/tree/enumeration/inheritance/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Insert test description here.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cassert>
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<top_bottom> r (root (argv[1]));
-
- switch (*r)
- {
- case top_bottom::top:
- {
- cout << "top" << endl;
- break;
- }
- case top_bottom::bottom:
- {
- cout << "bottom" << endl;
- break;
- }
- default: // Suppress warning.
- {
- assert (false);
- break;
- }
- }
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/enumeration/inheritance/makefile b/xsd/tests/cxx/tree/enumeration/inheritance/makefile
deleted file mode 100644
index 77df855..0000000
--- a/xsd/tests/cxx/tree/enumeration/inheritance/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/enumeration/inheritance/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-ostream
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/enumeration/inheritance/output b/xsd/tests/cxx/tree/enumeration/inheritance/output
deleted file mode 100644
index fef12e2..0000000
--- a/xsd/tests/cxx/tree/enumeration/inheritance/output
+++ /dev/null
@@ -1 +0,0 @@
-bottom
diff --git a/xsd/tests/cxx/tree/enumeration/inheritance/test.xml b/xsd/tests/cxx/tree/enumeration/inheritance/test.xml
deleted file mode 100644
index 1de9043..0000000
--- a/xsd/tests/cxx/tree/enumeration/inheritance/test.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">bottom</t:root>
diff --git a/xsd/tests/cxx/tree/enumeration/inheritance/test.xsd b/xsd/tests/cxx/tree/enumeration/inheritance/test.xsd
deleted file mode 100644
index cf2eeb1..0000000
--- a/xsd/tests/cxx/tree/enumeration/inheritance/test.xsd
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="side">
- <restriction base="string">
- <enumeration value="top"/>
- <enumeration value="left"/>
- <enumeration value="bottom"/>
- <enumeration value="right"/>
- </restriction>
- </simpleType>
-
- <simpleType name="top-bottom">
- <restriction base="t:side">
- <enumeration value="top"/>
- <enumeration value="bottom"/>
- </restriction>
- </simpleType>
-
- <element name="root" type="t:top-bottom"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/enumeration/makefile b/xsd/tests/cxx/tree/enumeration/makefile
deleted file mode 100644
index 8f55b20..0000000
--- a/xsd/tests/cxx/tree/enumeration/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/enumeration/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := ctor inheritance
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/float/driver.cxx b/xsd/tests/cxx/tree/float/driver.cxx
deleted file mode 100644
index a71d2f3..0000000
--- a/xsd/tests/cxx/tree/float/driver.cxx
+++ /dev/null
@@ -1,54 +0,0 @@
-// file : tests/cxx/tree/float/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test floating point (xsd:{float, double, decimal}) type parsing
-// and serialization.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- r->simple ().push_back (12.129456);
- r->simple ().push_back (123.129456);
- r->simple ().push_back (1234.129456);
-
- r->s (12.129456);
-
- r->complex ().push_back (12.129456);
- r->complex ().push_back (123.129456);
- r->complex ().push_back (1234.129456);
- r->complex ().push_back (-12.12);
- r->complex ().push_back (-123.12);
-
- r->s (12.129456);
-
- xml_schema::namespace_infomap map;
-
- map["t"].name = "test";
- root (cout, *r, map);
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/float/makefile b/xsd/tests/cxx/tree/float/makefile
deleted file mode 100644
index a585afb..0000000
--- a/xsd/tests/cxx/tree/float/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/float/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization --root-element-all
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/test.std
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/test.std -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/float/test.std b/xsd/tests/cxx/tree/float/test.std
deleted file mode 100644
index 399e28c..0000000
--- a/xsd/tests/cxx/tree/float/test.std
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<t:root xmlns:t="test" de="0" do="0" f="0" s="12.13">
- <float>0</float>
- <float>1</float>
- <float>1e+06</float>
- <float>1e-07</float>
- <float-list>0 1 1e+06 1e-07</float-list>
- <double>0</double>
- <double>1</double>
- <double>100000000000000</double>
- <double>1e-15</double>
- <double-list>0 1 100000000000000 1e-15</double-list>
- <decimal>0</decimal>
- <decimal>1</decimal>
- <decimal>10000</decimal>
- <decimal>100000000000000</decimal>
- <decimal>0.000000000000001</decimal>
- <decimal-list>0 1 100000000000000 0.000000000000001</decimal-list>
- <simple>0</simple>
- <simple>1</simple>
- <simple>12.34</simple>
- <simple>0.12</simple>
- <simple>12.13</simple>
- <simple>123.1</simple>
- <simple>1234</simple>
- <complex>0</complex>
- <complex>1</complex>
- <complex>12.34</complex>
- <complex>0.12</complex>
- <complex>12.13</complex>
- <complex>123.1</complex>
- <complex>1234</complex>
- <complex>-12.12</complex>
- <complex>-123.1</complex>
-</t:root>
diff --git a/xsd/tests/cxx/tree/float/test.xml b/xsd/tests/cxx/tree/float/test.xml
deleted file mode 100644
index e5124a4..0000000
--- a/xsd/tests/cxx/tree/float/test.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd"
- f="0.0" do="0.0" de="0.0">
-
- <float>0.0</float>
- <float>1.0</float>
- <float>1000000.0</float>
- <float>0.0000001</float>
- <float-list>0.0 1.0 1000000.0 0.0000001</float-list>
-
- <double>0.0</double>
- <double>1.0</double>
- <double>100000000000000.0</double>
- <double>0.000000000000001</double>
- <double-list>0.0 1.0 100000000000000.0 0.000000000000001</double-list>
-
- <decimal>0.0</decimal>
- <decimal>1.0</decimal>
- <decimal>10000</decimal>
- <decimal>100000000000000.0</decimal>
- <decimal>0.000000000000001</decimal>
- <decimal-list>0.0 1.0 100000000000000.0 0.000000000000001</decimal-list>
-
- <simple>0.0</simple>
- <simple>1.0</simple>
- <simple>12.34</simple>
- <simple>0.12</simple>
-
- <complex>0.0</complex>
- <complex>1.0</complex>
- <complex>12.34</complex>
- <complex>0.12</complex>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/float/test.xsd b/xsd/tests/cxx/tree/float/test.xsd
deleted file mode 100644
index c02678d..0000000
--- a/xsd/tests/cxx/tree/float/test.xsd
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="float-list">
- <list itemType="float"/>
- </simpleType>
-
- <simpleType name="double-list">
- <list itemType="double"/>
- </simpleType>
-
- <simpleType name="decimal-list">
- <list itemType="decimal"/>
- </simpleType>
-
- <!-- decimal facets -->
-
- <simpleType name="simple">
- <restriction base="t:base-simple">
- <fractionDigits value="2"/>
- </restriction>
- </simpleType>
-
- <simpleType name="base-simple">
- <restriction base="decimal">
- <totalDigits value="4"/>
- </restriction>
- </simpleType>
-
- <complexType name="complex">
- <simpleContent>
- <restriction base="t:base-complex">
- <fractionDigits value="2"/>
- <totalDigits value="4"/>
- <attribute name="x" type="int"/>
- </restriction>
- </simpleContent>
- </complexType>
-
- <complexType name="base-complex">
- <simpleContent>
- <extension base="decimal">
- <attribute name="x" type="int"/>
- </extension>
- </simpleContent>
- </complexType>
-
-
- <complexType name="type">
- <sequence>
- <element name="float" type="float" maxOccurs="unbounded"/>
- <element name="float-list" type="t:float-list"/>
- <element name="double" type="double" maxOccurs="unbounded"/>
- <element name="double-list" type="t:double-list"/>
- <element name="decimal" type="decimal" maxOccurs="unbounded"/>
- <element name="decimal-list" type="t:decimal-list"/>
-
- <element name="simple" type="t:simple" maxOccurs="unbounded"/>
- <element name="complex" type="t:complex" maxOccurs="unbounded"/>
-
- </sequence>
- <attribute name="f" type="float" default="12.34"/>
- <attribute name="do" type="double" default="1234.1234"/>
- <attribute name="de" type="decimal" default="1234.1234"/>
-
- <attribute name="s" type="t:simple"/>
- </complexType>
-
- <element name="root" type="t:type"/>
-
- <element name="double" type="double"/>
- <element name="decimal" type="decimal"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/list/ctor/driver.cxx b/xsd/tests/cxx/tree/list/ctor/driver.cxx
deleted file mode 100644
index 784ae01..0000000
--- a/xsd/tests/cxx/tree/list/ctor/driver.cxx
+++ /dev/null
@@ -1,51 +0,0 @@
-// file : tests/cxx/tree/list/ctor/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test list constructors.
-//
-#include <string>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main ()
-{
- // Test ctor()
- //
- {
- string_list sl;
-
- xml_schema::nmtokens nt;
- xml_schema::idrefs id;
- }
-
- // Test ctor(size_type, const X&)
- //
- {
- string_list sl (10, "abc");
- size_type st (10, 123);
-
- xml_schema::nmtokens nt (10, "abc");
- xml_schema::idrefs id (10, "abc");
- }
-
- // Test ctor(const I& begin, const I& end)
- //
- {
- string_list sl1 (10, "abc");
- string_list sl2 (sl1.begin (), sl1.end ());
-
- I i1 (10, 123);
- I i2 (i1.begin (), i1.end ());
-
- xml_schema::nmtokens nt1 (10, "abc");
- xml_schema::nmtokens nt2 (nt1.begin (), nt1.end ());
-
- xml_schema::idrefs id1 (10, "abc");
- xml_schema::idrefs id2 (id1.begin (), id1.end ());
- }
-}
diff --git a/xsd/tests/cxx/tree/list/ctor/makefile b/xsd/tests/cxx/tree/list/ctor/makefile
deleted file mode 100644
index 4115606..0000000
--- a/xsd/tests/cxx/tree/list/ctor/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/list/ctor/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-default-ctor --generate-from-base-ctor \
---generate-doxygen
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/list/ctor/test.xsd b/xsd/tests/cxx/tree/list/ctor/test.xsd
deleted file mode 100644
index f090bb8..0000000
--- a/xsd/tests/cxx/tree/list/ctor/test.xsd
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="string-list">
- <list itemType="string"/>
- </simpleType>
-
- <!-- Test name conflict resolution. -->
-
- <simpleType name="size_type">
- <list itemType="int"/>
- </simpleType>
-
- <simpleType name="I">
- <list itemType="int"/>
- </simpleType>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/list/makefile b/xsd/tests/cxx/tree/list/makefile
deleted file mode 100644
index 4af3e22..0000000
--- a/xsd/tests/cxx/tree/list/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/list/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := ctor
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/makefile b/xsd/tests/cxx/tree/makefile
deleted file mode 100644
index 7fd9f63..0000000
--- a/xsd/tests/cxx/tree/makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-# file : tests/cxx/tree/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := \
-any-type \
-built-in \
-chameleon \
-comparison \
-compilation \
-complex \
-containment \
-default \
-detach \
-dom-association \
-encoding \
-enumeration \
-float \
-list \
-name-clash \
-naming \
-order \
-polymorphism \
-prefix \
-test-template \
-types-only \
-union \
-wildcard
-
-ifeq ($(xsd_with_ace),y)
-tests += binary
-endif
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/name-clash/inheritance/driver.cxx b/xsd/tests/cxx/tree/name-clash/inheritance/driver.cxx
deleted file mode 100644
index 07e0c00..0000000
--- a/xsd/tests/cxx/tree/name-clash/inheritance/driver.cxx
+++ /dev/null
@@ -1,36 +0,0 @@
-// file : tests/cxx/tree/name-clash/inheritance/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test for name clashes across inheritance hierarchy.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<derived> r (root (argv[1]));
-
- cout << *r << endl;
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/name-clash/inheritance/makefile b/xsd/tests/cxx/tree/name-clash/inheritance/makefile
deleted file mode 100644
index ea05693..0000000
--- a/xsd/tests/cxx/tree/name-clash/inheritance/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/name-clash/inheritance/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-ostream
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/name-clash/inheritance/output b/xsd/tests/cxx/tree/name-clash/inheritance/output
deleted file mode 100644
index 54565bb..0000000
--- a/xsd/tests/cxx/tree/name-clash/inheritance/output
+++ /dev/null
@@ -1,3 +0,0 @@
-
-e: e
-e: e1
diff --git a/xsd/tests/cxx/tree/name-clash/inheritance/test.xml b/xsd/tests/cxx/tree/name-clash/inheritance/test.xml
deleted file mode 100644
index 8c17101..0000000
--- a/xsd/tests/cxx/tree/name-clash/inheritance/test.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <e>e</e>
- <e>e1</e>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/name-clash/inheritance/test.xsd b/xsd/tests/cxx/tree/name-clash/inheritance/test.xsd
deleted file mode 100644
index b83d7df..0000000
--- a/xsd/tests/cxx/tree/name-clash/inheritance/test.xsd
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- same member name in base and derived -->
-
- <complexType name="base">
- <sequence>
- <element name="e" type="string"/>
- </sequence>
- </complexType>
-
- <complexType name="derived">
- <complexContent>
- <extension base="t:base">
- <sequence>
- <element name="e" type="string"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <element name="root" type="t:derived"/>
-
- <!-- same c-tor argument names (compilation only) -->
-
- <complexType name="ctor-args">
- <simpleContent>
- <extension base="string">
- <attribute name="string" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
-
- <!-- same c-tor argument names (compilation only) -->
-
- <complexType name="ctor-args-base">
- <simpleContent>
- <extension base="string">
- <attribute name="ctor-args-derived" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="ctor-args-derived">
- <simpleContent>
- <extension base="t:ctor-args-base">
- <attribute name="foo" type="string" use="required"/>
- </extension>
- </simpleContent>
- </complexType>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/name-clash/makefile b/xsd/tests/cxx/tree/name-clash/makefile
deleted file mode 100644
index c9a4d0f..0000000
--- a/xsd/tests/cxx/tree/name-clash/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/name-clash/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := inheritance
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/naming/camel/driver.cxx b/xsd/tests/cxx/tree/naming/camel/driver.cxx
deleted file mode 100644
index 716a544..0000000
--- a/xsd/tests/cxx/tree/naming/camel/driver.cxx
+++ /dev/null
@@ -1,155 +0,0 @@
-// file : tests/cxx/tree/naming/camel/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test camel case (upper for types, lower for functions) naming style.
-//
-
-#include <sstream>
-#include <iostream>
-
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main ()
-{
- xercesc::XMLPlatformUtils::Initialize ();
-
- try
- {
- // Enum 'value' type.
- //
- {
- Gender::Value v;
- v = Gender::female;
- XSD_UNUSED (v);
- }
-
- // Anonymous type.
- //
- {
- Foo f ("a", "b");
-
- if (f.a () != "a" || f.b () != "b")
- return 1;
- }
-
- // Type name and accessors/modifiers.
- //
- {
- Type t ("bar");
-
- // foo
- //
- {
- Type::FooType* p = 0;
- XSD_UNUSED (p);
-
- Type::FooOptional o;
-
- if (t.foo ().present ())
- return 1;
-
- t.foo (o);
- }
-
- // bar
- //
- {
- Type::BarType* p = 0;
- XSD_UNUSED (p);
-
- if (t.bar () != "bar")
- return 1;
-
- t.bar ("barbar");
- }
-
- // baz
- //
- {
- Type::BazType* p = 0;
- XSD_UNUSED (p);
-
- Type::BazSequence s;
- Type::BazIterator i (s.begin ());
- Type::BazConstIterator ci (s.begin ());
- XSD_UNUSED (i);
- XSD_UNUSED (ci);
-
- if (t.baz () != s)
- return 1;
-
- t.baz (s);
- }
-
- // any
- //
- {
- Type::AnySequence s (t.domDocument ());
- Type::AnyIterator i (s.begin ());
- Type::AnyConstIterator ci (s.begin ());
- XSD_UNUSED (i);
- XSD_UNUSED (ci);
-
- if (t.any () != s)
- return 1;
-
- t.any (s);
- }
-
- // foo
- //
- {
- Type::FoxType x = Type::foxDefaultValue ();
-
- if (t.fox () != x)
- return 1;
-
- t.fox ("fox");
- }
-
- // any_attribute
- //
- {
- Type::AnyAttributeSet s (t.domDocument ());
- Type::AnyAttributeIterator i (s.begin ());
- Type::AnyAttributeConstIterator ci (s.begin ());
- XSD_UNUSED (i);
- XSD_UNUSED (ci);
-
- if (t.anyAttribute () != s)
- return 1;
-
- t.anyAttribute (s);
- }
- }
-
- // Parsing/serialization functions.
- //
- {
- istringstream is ("<t:Root xmlns:t='test'>foo</t:Root>");
- root (is, xml_schema::Flags::dont_validate);
- }
-
- {
- ostringstream os;
- xml_schema::NamespaceInfomap m;
- m["t"].name = "test";
-
- root (os, "foo", m);
- }
- }
- catch (xml_schema::Exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-
- xercesc::XMLPlatformUtils::Terminate ();
-}
diff --git a/xsd/tests/cxx/tree/naming/camel/makefile b/xsd/tests/cxx/tree/naming/camel/makefile
deleted file mode 100644
index 6364196..0000000
--- a/xsd/tests/cxx/tree/naming/camel/makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-# file : tests/cxx/tree/naming/camel/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-
-$(gen): xsd_options += \
---type-naming ucc \
---function-naming lcc \
---generate-ostream \
---generate-serialization \
---generate-comparison \
---generate-wildcard
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/naming/camel/test.xsd b/xsd/tests/cxx/tree/naming/camel/test.xsd
deleted file mode 100644
index 7d0a745..0000000
--- a/xsd/tests/cxx/tree/naming/camel/test.xsd
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="gender">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <complexType name="type">
- <sequence>
- <element name="foo" minOccurs="0">
- <complexType>
- <sequence>
- <element name="a" type="string"/>
- <element name="b" type="string"/>
- </sequence>
- </complexType>
- </element>
- <element name="Bar" type="string"/>
- <element name="Baz" type="string" maxOccurs="unbounded"/>
- <any namespace="other" processContents="skip" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="Fox" type="string" default="hello"/>
- <anyAttribute namespace="##other" processContents="skip"/>
- </complexType>
-
- <element name="Root" type="string"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/naming/java/driver.cxx b/xsd/tests/cxx/tree/naming/java/driver.cxx
deleted file mode 100644
index f35607a..0000000
--- a/xsd/tests/cxx/tree/naming/java/driver.cxx
+++ /dev/null
@@ -1,154 +0,0 @@
-// file : tests/cxx/tree/naming/java/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test Java naming style.
-//
-
-#include <sstream>
-#include <iostream>
-
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main ()
-{
- xercesc::XMLPlatformUtils::Initialize ();
-
- try
- {
- // Enum 'value' type.
- //
- {
- Gender::Value v;
- v = Gender::female;
- XSD_UNUSED (v);
- }
-
- // Anonymous type.
- //
- {
- Foo f ("a", "b");
-
- if (f.getA () != "a" || f.getB () != "b")
- return 1;
- }
-
- // Type name and accessors/modifiers.
- //
- {
- Type t ("bar");
-
- // foo
- //
- {
- Type::FooType* p = 0;
- XSD_UNUSED (p);
- Type::FooOptional o;
-
- if (t.getFoo ().present ())
- return 1;
-
- t.setFoo (o);
- }
-
- // bar
- //
- {
- Type::BarType* p = 0;
- XSD_UNUSED (p);
-
- if (t.getBar () != "bar")
- return 1;
-
- t.setBar ("barbar");
- }
-
- // baz
- //
- {
- Type::BazType* p = 0;
- XSD_UNUSED (p);
-
- Type::BazSequence s;
- Type::BazIterator i (s.begin ());
- Type::BazConstIterator ci (s.begin ());
- XSD_UNUSED (i);
- XSD_UNUSED (ci);
-
- if (t.getBaz () != s)
- return 1;
-
- t.setBaz (s);
- }
-
- // any
- //
- {
- Type::AnySequence s (t.getDomDocument ());
- Type::AnyIterator i (s.begin ());
- Type::AnyConstIterator ci (s.begin ());
- XSD_UNUSED (i);
- XSD_UNUSED (ci);
-
- if (t.getAny () != s)
- return 1;
-
- t.setAny (s);
- }
-
- // foo
- //
- {
- Type::FoxType x = Type::getFoxDefaultValue ();
-
- if (t.getFox () != x)
- return 1;
-
- t.setFox ("fox");
- }
-
- // any_attribute
- //
- {
- Type::AnyAttributeSet s (t.getDomDocument ());
- Type::AnyAttributeIterator i (s.begin ());
- Type::AnyAttributeConstIterator ci (s.begin ());
- XSD_UNUSED (i);
- XSD_UNUSED (ci);
-
- if (t.getAnyAttribute () != s)
- return 1;
-
- t.setAnyAttribute (s);
- }
- }
-
- // Parsing/serialization functions.
- //
- {
- istringstream is ("<t:root xmlns:t='test'>foo</t:root>");
- parseRoot (is, xml_schema::Flags::dont_validate);
- }
-
- {
- ostringstream os;
- xml_schema::NamespaceInfomap m;
- m["t"].name = "test";
-
- serializeRoot (os, "foo", m);
- }
- }
- catch (xml_schema::Exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-
- xercesc::XMLPlatformUtils::Terminate ();
-}
diff --git a/xsd/tests/cxx/tree/naming/java/makefile b/xsd/tests/cxx/tree/naming/java/makefile
deleted file mode 100644
index 83d73e1..0000000
--- a/xsd/tests/cxx/tree/naming/java/makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-# file : tests/cxx/tree/naming/java/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-
-$(gen): xsd_options += \
---type-naming java \
---function-naming java \
---generate-ostream \
---generate-serialization \
---generate-comparison \
---generate-wildcard
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/naming/java/test.xsd b/xsd/tests/cxx/tree/naming/java/test.xsd
deleted file mode 100644
index f525534..0000000
--- a/xsd/tests/cxx/tree/naming/java/test.xsd
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="gender">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <complexType name="type">
- <sequence>
- <element name="foo" minOccurs="0">
- <complexType>
- <sequence>
- <element name="a" type="string"/>
- <element name="b" type="string"/>
- </sequence>
- </complexType>
- </element>
- <element name="bar" type="string"/>
- <element name="Baz" type="string" maxOccurs="unbounded"/>
- <any namespace="other" processContents="skip" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="Fox" type="string" default="hello"/>
- <anyAttribute namespace="##other" processContents="skip"/>
- </complexType>
-
- <element name="root" type="string"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/naming/knr/driver.cxx b/xsd/tests/cxx/tree/naming/knr/driver.cxx
deleted file mode 100644
index 5038d7b..0000000
--- a/xsd/tests/cxx/tree/naming/knr/driver.cxx
+++ /dev/null
@@ -1,155 +0,0 @@
-// file : tests/cxx/tree/naming/knr/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test K&R naming style.
-//
-
-#include <sstream>
-#include <iostream>
-
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main ()
-{
- xercesc::XMLPlatformUtils::Initialize ();
-
- try
- {
- // Enum 'value' type.
- //
- {
- gender::value v;
- v = gender::female;
- XSD_UNUSED (v);
- }
-
- // Anonymous type.
- //
- {
- foo f ("a", "b");
-
- if (f.a () != "a" || f.b () != "b")
- return 1;
- }
-
- // Type name and accessors/modifiers.
- //
- {
- type t ("bar");
-
- // foo
- //
- {
- type::foo_type* p = 0;
- XSD_UNUSED (p);
-
- type::foo_optional o;
-
- if (t.foo ().present ())
- return 1;
-
- t.foo (o);
- }
-
- // bar
- //
- {
- type::bar_type* p = 0;
- XSD_UNUSED (p);
-
- if (t.bar () != "bar")
- return 1;
-
- t.bar ("barbar");
- }
-
- // baz
- //
- {
- type::baz_type* p = 0;
- XSD_UNUSED (p);
-
- type::baz_sequence s;
- type::baz_iterator i (s.begin ());
- type::baz_const_iterator ci (s.begin ());
- XSD_UNUSED (i);
- XSD_UNUSED (ci);
-
- if (t.baz () != s)
- return 1;
-
- t.baz (s);
- }
-
- // any
- //
- {
- type::any_sequence s (t.dom_document ());
- type::any_iterator i (s.begin ());
- type::any_const_iterator ci (s.begin ());
- XSD_UNUSED (i);
- XSD_UNUSED (ci);
-
- if (t.any () != s)
- return 1;
-
- t.any (s);
- }
-
- // foo
- //
- {
- type::fox_type x = type::fox_default_value ();
-
- if (t.fox () != x)
- return 1;
-
- t.fox ("fox");
- }
-
- // any_attribute
- //
- {
- type::any_attribute_set s (t.dom_document ());
- type::any_attribute_iterator i (s.begin ());
- type::any_attribute_const_iterator ci (s.begin ());
- XSD_UNUSED (i);
- XSD_UNUSED (ci);
-
- if (t.any_attribute () != s)
- return 1;
-
- t.any_attribute (s);
- }
- }
-
- // Parsing/serialization functions.
- //
- {
- istringstream is ("<t:root xmlns:t='test'>foo</t:root>");
- root (is, xml_schema::flags::dont_validate);
- }
-
- {
- ostringstream os;
- xml_schema::namespace_infomap m;
- m["t"].name = "test";
-
- root (os, "foo", m);
- }
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-
- xercesc::XMLPlatformUtils::Terminate ();
-}
diff --git a/xsd/tests/cxx/tree/naming/knr/makefile b/xsd/tests/cxx/tree/naming/knr/makefile
deleted file mode 100644
index d8ecbab..0000000
--- a/xsd/tests/cxx/tree/naming/knr/makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-# file : tests/cxx/tree/naming/knr/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-
-$(gen): xsd_options += \
---type-naming knr \
---function-naming knr \
---generate-ostream \
---generate-serialization \
---generate-comparison \
---generate-wildcard
-
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/naming/knr/test.xsd b/xsd/tests/cxx/tree/naming/knr/test.xsd
deleted file mode 100644
index 4361544..0000000
--- a/xsd/tests/cxx/tree/naming/knr/test.xsd
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="gender">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <complexType name="type">
- <sequence>
- <element name="foo" minOccurs="0">
- <complexType>
- <sequence>
- <element name="a" type="string"/>
- <element name="b" type="string"/>
- </sequence>
- </complexType>
- </element>
- <element name="bar" type="string"/>
- <element name="baz" type="string" maxOccurs="unbounded"/>
- <any namespace="other" processContents="skip" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="fox" type="string" default="hello"/>
- <anyAttribute namespace="##other" processContents="skip"/>
- </complexType>
-
- <element name="root" type="string"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/naming/makefile b/xsd/tests/cxx/tree/naming/makefile
deleted file mode 100644
index 60ac63b..0000000
--- a/xsd/tests/cxx/tree/naming/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/naming/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := camel java knr
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/order/driver.cxx b/xsd/tests/cxx/tree/order/driver.cxx
deleted file mode 100644
index 01d8d9f..0000000
--- a/xsd/tests/cxx/tree/order/driver.cxx
+++ /dev/null
@@ -1,65 +0,0 @@
-// file : tests/cxx/tree/order/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test ordered type support.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cassert>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-using namespace xercesc;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- XMLPlatformUtils::Initialize ();
-
- try
- {
- XSD_AUTO_PTR<root> r (root_ (argv[1], xml_schema::flags::dont_initialize));
-
- root c (*r);
- assert (c == *r);
-
- for (root::t1_const_iterator j (r->t1 ().begin ());
- j != r->t1 ().end (); ++j)
- {
- const t1_derived& d (*j);
-
- for (t1_derived::content_order_const_iterator i (
- d.content_order ().begin ()); i != d.content_order ().end (); ++i)
- {
- cout << i->id << ' ' << i->index << endl;
- }
- }
-
- xml_schema::namespace_infomap map;
-
- map["t"].name = "test";
- map["t1"].name = "test1";
-
- root_ (cout, *r, map, "UTF-8", xml_schema::flags::dont_initialize);
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-
- XMLPlatformUtils::Terminate ();
-}
diff --git a/xsd/tests/cxx/tree/order/makefile b/xsd/tests/cxx/tree/order/makefile
deleted file mode 100644
index 0dff0f9..0000000
--- a/xsd/tests/cxx/tree/order/makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-# file : tests/cxx/tree/order/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization --generate-wildcard \
---generate-comparison \
---ordered-type t1_base --ordered-type t1_derived \
---ordered-type t2_base --ordered-type t2_derived \
---ordered-type t3_type \
---ordered-type t4_base --ordered-type t4_derived \
---ordered-type t5_base --ordered-type t5_derived \
---ordered-type t6_base --ordered-type t6_derived \
---ordered-type t7_type
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/order/output b/xsd/tests/cxx/tree/order/output
deleted file mode 100644
index 73442fe..0000000
--- a/xsd/tests/cxx/tree/order/output
+++ /dev/null
@@ -1,92 +0,0 @@
-2 0
-1 0
-1 1
-2 1
-3 0
-4 0
-3 1
-4 1
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<t:root xmlns:t="test" xmlns:t1="test1">
- <t1>
- <b>b1</b>
- <a>a1</a>
- <a>a2</a>
- <b>b2</b>
- <c>c1</c>
- <d>d1</d>
- <t1:e>e1</t1:e>
- <d>d2</d>
- <t1:f>f1</t1:f>
- </t1>
- <t2>
- <b>b1</b>
- <a>a1</a>
- <b>b2</b>
- <a>a2</a>
- </t2>
- <t3>
- <a>a1</a>
- <b>b1</b>
- <c>c1</c>
- <c>c2</c>
- </t3>
- <t3>
- <a>a1</a>
- <c>c1</c>
- </t3>
- <t4>
- t1
-
- <b>b1</b>
- t2
-
- <a>a1</a>
- t3
-
- <b>b2</b>
- t4
-
- <a>a2</a>
- t5
-
- <t1:d>d1</t1:d>
- t6
-
- <c>c1</c>
- t7
-
- </t4>
- <t5a>
- t5a
- </t5a>
- <t5b>
- t1
-
- <b>b1</b>
- t2
-
- <a>a1</a>
- t3
-
- <a>a2</a>
- t4
-
- <b>b2</b>
- t5
-
- </t5b>
- <t6>
- t6
- </t6>
- <t7>
- t1
-
- <t1:a>a1</t1:a>
- t2
-
- <t1:b>b1</t1:b>
- t3
-
- </t7>
-</t:root>
diff --git a/xsd/tests/cxx/tree/order/test.xml b/xsd/tests/cxx/tree/order/test.xml
deleted file mode 100644
index cd82936..0000000
--- a/xsd/tests/cxx/tree/order/test.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:t1="test1"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
- <t1>
- <b>b1</b>
- <a>a1</a>
- <a>a2</a>
- <b>b2</b>
- <c>c1</c>
- <d>d1</d>
- <t1:e>e1</t1:e>
- <d>d2</d>
- <t1:f>f1</t1:f>
- </t1>
- <t2>
- <b>b1</b>
- <a>a1</a>
- <b>b2</b>
- <a>a2</a>
- </t2>
- <t3>
- <a>a1</a>
- <b>b1</b>
- <c>c1</c>
- <c>c2</c>
- </t3>
- <t3>
- <a>a1</a>
- <c>c1</c>
- </t3>
- <t4>
- t1
- <b>b1</b>
- t2
- <a>a1</a>
- t3
- <b>b2</b>
- t4
- <a>a2</a>
- t5
- <t1:d>d1</t1:d>
- t6
- <c>c1</c>
- t7
- </t4>
- <t5a>
- t5a
- </t5a>
- <t5b>
- t1
- <b>b1</b>
- t2
- <a>a1</a>
- t3
- <a>a2</a>
- t4
- <b>b2</b>
- t5
- </t5b>
- <t6>
- t6
- </t6>
- <t7>
- t1
- <t1:a>a1</t1:a>
- t2
- <t1:b>b1</t1:b>
- t3
- </t7>
-</t:root>
diff --git a/xsd/tests/cxx/tree/order/test.xsd b/xsd/tests/cxx/tree/order/test.xsd
deleted file mode 100644
index c30c027..0000000
--- a/xsd/tests/cxx/tree/order/test.xsd
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Test 1: general, with non-ordered intermediate. -->
-
- <complexType name="t1_base">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="a" type="string"/>
- <element name="b" type="string"/>
- </choice>
- </complexType>
-
- <complexType name="t1_interm">
- <complexContent>
- <extension base="t:t1_base">
- <sequence>
- <element name="c" type="string" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="t1_derived">
- <complexContent>
- <extension base="t:t1_interm">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="d" type="string"/>
- <any namespace="##other" processContents="lax"/>
- </choice>
- </extension>
- </complexContent>
- </complexType>
-
- <!-- Test 2: empty base. -->
-
- <complexType name="t2_base"/>
-
- <complexType name="t2_derived">
- <complexContent>
- <extension base="t:t2_base">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="a" type="string"/>
- <element name="b" type="string"/>
- </choice>
- </extension>
- </complexContent>
- </complexType>
-
- <!-- Test 3: element cardinalities. -->
-
- <complexType name="t3_type">
- <sequence>
- <element name="a" type="string"/>
- <element name="b" type="string" minOccurs="0"/>
- <element name="c" type="string" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
-
- <!-- Test 4: mixed content, general. -->
-
- <complexType name="t4_base" mixed="true">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="a" type="string"/>
- <element name="b" type="string"/>
- </choice>
- </complexType>
-
- <complexType name="t4_derived">
- <complexContent mixed="true">
- <extension base="t:t4_base">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="c" type="string"/>
- <any namespace="##other" processContents="lax"/>
- </choice>
- </extension>
- </complexContent>
- </complexType>
-
- <!-- Test 5: mixed content, empty base. -->
-
- <complexType name="t5_base" mixed="true"/>
-
- <complexType name="t5_derived">
- <complexContent mixed="true">
- <extension base="t:t5_base">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="a" type="string"/>
- <element name="b" type="string"/>
- </choice>
- </extension>
- </complexContent>
- </complexType>
-
- <!-- Test 6: mixed content, empty base and derived. -->
-
- <complexType name="t6_base" mixed="true"/>
-
- <complexType name="t6_derived">
- <complexContent mixed="true">
- <extension base="t:t6_base"/>
- </complexContent>
- </complexType>
-
- <!-- Test 7: mixed content wildcard only. -->
-
- <complexType name="t7_type" mixed="true">
- <sequence>
- <any namespace="##other" processContents="lax" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <!-- Root -->
-
- <complexType name="root">
- <sequence>
- <element name="t1" type="t:t1_derived" maxOccurs="unbounded"/>
- <element name="t2" type="t:t2_derived" maxOccurs="unbounded"/>
- <element name="t3" type="t:t3_type" maxOccurs="unbounded"/>
- <element name="t4" type="t:t4_derived" maxOccurs="unbounded"/>
- <element name="t5a" type="t:t5_base" maxOccurs="unbounded"/>
- <element name="t5b" type="t:t5_derived" maxOccurs="unbounded"/>
- <element name="t6" type="t:t6_derived" maxOccurs="unbounded"/>
- <element name="t7" type="t:t7_type" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:root"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/polymorphism/comparison/driver.cxx b/xsd/tests/cxx/tree/polymorphism/comparison/driver.cxx
deleted file mode 100644
index 5394991..0000000
--- a/xsd/tests/cxx/tree/polymorphism/comparison/driver.cxx
+++ /dev/null
@@ -1,74 +0,0 @@
-// file : tests/cxx/tree/polymorphism/comparison/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test comparison of polymorphic object models.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- // Equals.
- //
- {
- derived1 d ("a", 1);
- d.b ("b");
- type r1 (d);
-
- assert (*r == r1);
- }
-
- // Values are not equal.
- //
- {
- derived1 d ("a", 1);
- d.b ("c");
- type r1 (d);
-
- assert (*r != r1);
- }
-
- // Values are not equal.
- //
- {
- derived1 d ("a", 2);
- d.b ("b");
- type r1 (d);
-
- assert (*r != r1);
- }
-
- // Different types.
- //
- {
- derived2 d ("a", 1);
- d.c ().push_back ("c");
- type r1 (d);
-
- assert (*r != r1);
- }
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/polymorphism/comparison/makefile b/xsd/tests/cxx/tree/polymorphism/comparison/makefile
deleted file mode 100644
index ef3e70a..0000000
--- a/xsd/tests/cxx/tree/polymorphism/comparison/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/polymorphism/comparison/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-polymorphic --polymorphic-type base \
---generate-comparison
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml
- $(call message,test $$1,$$1 $(src_base)/test.xml,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/polymorphism/comparison/test.xml b/xsd/tests/cxx/tree/polymorphism/comparison/test.xml
deleted file mode 100644
index 0b8c125..0000000
--- a/xsd/tests/cxx/tree/polymorphism/comparison/test.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <base xsi:type="t:derived1"><a>a</a><fund>1</fund><b>b</b></base>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/polymorphism/comparison/test.xsd b/xsd/tests/cxx/tree/polymorphism/comparison/test.xsd
deleted file mode 100644
index 18532f2..0000000
--- a/xsd/tests/cxx/tree/polymorphism/comparison/test.xsd
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="base">
- <sequence>
- <element name="a" type="string"/>
- <element name="fund" type="int"/>
- </sequence>
- </complexType>
-
- <complexType name="derived1">
- <complexContent>
- <extension base="t:base">
- <sequence>
- <element name="b" type="string" minOccurs="0"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="derived2">
- <complexContent>
- <extension base="t:base">
- <sequence>
- <element name="c" type="string" maxOccurs="unbounded"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="type">
- <sequence>
- <element name="base" type="t:base"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/polymorphism/makefile b/xsd/tests/cxx/tree/polymorphism/makefile
deleted file mode 100644
index 9215e44..0000000
--- a/xsd/tests/cxx/tree/polymorphism/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/polymorphism/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := comparison ostream same-type
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/polymorphism/ostream/driver.cxx b/xsd/tests/cxx/tree/polymorphism/ostream/driver.cxx
deleted file mode 100644
index bfbd2d4..0000000
--- a/xsd/tests/cxx/tree/polymorphism/ostream/driver.cxx
+++ /dev/null
@@ -1,35 +0,0 @@
-// file : tests/cxx/tree/polymorphism/ostream/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test printing of polymorphic object models.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
- cout << *r << endl;
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/polymorphism/ostream/makefile b/xsd/tests/cxx/tree/polymorphism/ostream/makefile
deleted file mode 100644
index 76a366f..0000000
--- a/xsd/tests/cxx/tree/polymorphism/ostream/makefile
+++ /dev/null
@@ -1,88 +0,0 @@
-# file : tests/cxx/tree/polymorphism/ostream/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-polymorphic --polymorphic-type-all \
---root-element root --generate-ostream
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/polymorphism/ostream/output b/xsd/tests/cxx/tree/polymorphism/ostream/output
deleted file mode 100644
index e7fbd68..0000000
--- a/xsd/tests/cxx/tree/polymorphism/ostream/output
+++ /dev/null
@@ -1,18 +0,0 @@
-
-base:
-a: a
-fund: 1
-base:
-a: a
-fund: 1
-b: b
-base:
-a: a
-fund: 1
-c: c1
-c: c2
-base:
-a: a
-fund: 1
-d: d1
-d: d2
diff --git a/xsd/tests/cxx/tree/polymorphism/ostream/test.xml b/xsd/tests/cxx/tree/polymorphism/ostream/test.xml
deleted file mode 100644
index 5409d2a..0000000
--- a/xsd/tests/cxx/tree/polymorphism/ostream/test.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<root xmlns="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <base><a>a</a><fund>1</fund></base>
- <base xsi:type="derived1"><a>a</a><fund>1</fund><b>b</b></base>
- <base xsi:type="derived2"><a>a</a><fund>1</fund><c>c1</c><c>c2</c></base>
- <derived3><a>a</a><fund>1</fund><d>d1</d><d>d2</d></derived3>
-
-</root>
diff --git a/xsd/tests/cxx/tree/polymorphism/ostream/test.xsd b/xsd/tests/cxx/tree/polymorphism/ostream/test.xsd
deleted file mode 100644
index ddeaeae..0000000
--- a/xsd/tests/cxx/tree/polymorphism/ostream/test.xsd
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test"
- targetNamespace="test" elementFormDefault="qualified">
-
- <complexType name="base">
- <sequence>
- <element name="a" type="string"/>
- <element name="fund" type="int"/>
- </sequence>
- </complexType>
- <element name="base" type="t:base"/>
-
- <complexType name="derived1">
- <complexContent>
- <extension base="t:base">
- <sequence>
- <element name="b" type="string" minOccurs="0"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="derived2">
- <complexContent>
- <extension base="t:base">
- <sequence>
- <element name="c" type="string" maxOccurs="unbounded"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <element name="derived3" substitutionGroup="t:base">
- <complexType>
- <complexContent>
- <extension base="t:base">
- <sequence>
- <element name="d" type="string" maxOccurs="unbounded"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
- </element>
-
- <complexType name="type">
- <sequence>
- <element ref="t:base" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/polymorphism/same-type/driver.cxx b/xsd/tests/cxx/tree/polymorphism/same-type/driver.cxx
deleted file mode 100644
index 0846b04..0000000
--- a/xsd/tests/cxx/tree/polymorphism/same-type/driver.cxx
+++ /dev/null
@@ -1,36 +0,0 @@
-// file : tests/cxx/tree/polymorphism/same-type/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test substitution group and xsi:type that don't change the type.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- cout << *r << endl;
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/polymorphism/same-type/makefile b/xsd/tests/cxx/tree/polymorphism/same-type/makefile
deleted file mode 100644
index 549f590..0000000
--- a/xsd/tests/cxx/tree/polymorphism/same-type/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/polymorphism/same-type/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-ostream --generate-polymorphic \
---root-element root
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/polymorphism/same-type/output b/xsd/tests/cxx/tree/polymorphism/same-type/output
deleted file mode 100644
index 04b5cbf..0000000
--- a/xsd/tests/cxx/tree/polymorphism/same-type/output
+++ /dev/null
@@ -1,9 +0,0 @@
-
-base:
-a: a1
-base:
-a: a2
-base:
-a: a3
-base:
-a: a4
diff --git a/xsd/tests/cxx/tree/polymorphism/same-type/test.xml b/xsd/tests/cxx/tree/polymorphism/same-type/test.xml
deleted file mode 100644
index f8b6d1e..0000000
--- a/xsd/tests/cxx/tree/polymorphism/same-type/test.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <t:base><a>a1</a></t:base>
- <t:derived><a>a2</a></t:derived>
- <t:base xsi:type="t:base"><a>a3</a></t:base>
- <t:derived xsi:type="t:base"><a>a4</a></t:derived>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/polymorphism/same-type/test.xsd b/xsd/tests/cxx/tree/polymorphism/same-type/test.xsd
deleted file mode 100644
index a4157d3..0000000
--- a/xsd/tests/cxx/tree/polymorphism/same-type/test.xsd
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="base">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- </complexType>
-
- <element name="base" type="t:base"/>
- <element name="derived" type="t:base" substitutionGroup="t:base"/>
-
- <complexType name="type">
- <sequence>
- <element ref="t:base" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/prefix/bar.xsd b/xsd/tests/cxx/tree/prefix/bar.xsd
deleted file mode 100644
index 4e20902..0000000
--- a/xsd/tests/cxx/tree/prefix/bar.xsd
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:f="foo"
- xmlns:b="bar"
- targetNamespace="bar"
- attributeFormDefault="qualified">
-
- <import namespace="foo" schemaLocation="foo.xsd"/>
-
- <attribute name="abar" type="int"/>
-
- <complexType name="derived1">
- <complexContent>
- <extension base="f:base">
- <sequence>
- <element name="y" type="int"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="derived2">
- <complexContent>
- <extension base="f:base">
- <sequence>
- <element name="z" type="int"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
-
- <element name="derived" type="b:derived1" substitutionGroup="f:base"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/prefix/driver.cxx b/xsd/tests/cxx/tree/prefix/driver.cxx
deleted file mode 100644
index 244f815..0000000
--- a/xsd/tests/cxx/tree/prefix/driver.cxx
+++ /dev/null
@@ -1,35 +0,0 @@
-// file : tests/cxx/tree/prefix/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test automatic prefix assignment.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
- root (std::cout, *r);
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/prefix/foo.xsd b/xsd/tests/cxx/tree/prefix/foo.xsd
deleted file mode 100644
index 97a35cf..0000000
--- a/xsd/tests/cxx/tree/prefix/foo.xsd
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:f="foo"
- targetNamespace="foo">
-
- <element name="efoo" type="int"/>
-
- <complexType name="base">
- <sequence>
- <element name="x" type="int"/>
- </sequence>
- </complexType>
-
- <element name="base" type="f:base"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/prefix/makefile b/xsd/tests/cxx/tree/prefix/makefile
deleted file mode 100644
index 688111e..0000000
--- a/xsd/tests/cxx/tree/prefix/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/prefix/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd foo.xsd bar.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-serialization --generate-polymorphic \
---polymorphic-type foo\#base --root-element root
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/prefix/output b/xsd/tests/cxx/tree/prefix/output
deleted file mode 100644
index 9801a23..0000000
--- a/xsd/tests/cxx/tree/prefix/output
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<p1:root xmlns:p1="test">
- <a xmlns:p3="bar" p3:abar="456" xmlns:p2="foo">
- <p2:efoo>123</p2:efoo>
- </a>
- <b xmlns:p2="bar">
- <p2:derived>
- <x>1</x>
- <y>2</y>
- </p2:derived>
- </b>
- <c xmlns:p2="foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <p2:base xmlns:p3="bar" xsi:type="p3:derived2">
- <x>1</x>
- <z>2</z>
- </p2:base>
- </c>
-</p1:root>
diff --git a/xsd/tests/cxx/tree/prefix/test.xml b/xsd/tests/cxx/tree/prefix/test.xml
deleted file mode 100644
index b6d0dd6..0000000
--- a/xsd/tests/cxx/tree/prefix/test.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:f="foo"
- xmlns:b="bar"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <a b:abar="456">
- <f:efoo>123</f:efoo>
- </a>
-
- <b>
- <b:derived><x>1</x><y>2</y></b:derived>
- </b>
-
- <c>
- <f:base xsi:type="b:derived2"><x>1</x><z>2</z></f:base>
- </c>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/prefix/test.xsd b/xsd/tests/cxx/tree/prefix/test.xsd
deleted file mode 100644
index 421fdc0..0000000
--- a/xsd/tests/cxx/tree/prefix/test.xsd
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:f="foo"
- xmlns:b="bar"
- xmlns:t="test"
- targetNamespace="test">
-
- <import namespace="foo" schemaLocation="foo.xsd"/>
- <import namespace="bar" schemaLocation="bar.xsd"/>
-
- <complexType name="a">
- <sequence>
- <element ref="f:efoo"/>
- </sequence>
- <attribute ref="b:abar"/>
- </complexType>
-
- <complexType name="b">
- <sequence>
- <element ref="f:base"/>
- </sequence>
- </complexType>
-
- <complexType name="c">
- <sequence>
- <element ref="f:base"/>
- </sequence>
- </complexType>
-
- <complexType name="type">
- <sequence>
- <element name="a" type="t:a"/>
- <element name="b" type="t:b"/>
- <element name="c" type="t:c"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/test-template/driver.cxx b/xsd/tests/cxx/tree/test-template/driver.cxx
deleted file mode 100644
index f28e501..0000000
--- a/xsd/tests/cxx/tree/test-template/driver.cxx
+++ /dev/null
@@ -1,36 +0,0 @@
-// file : tests/cxx/tree/test-template/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Insert test description here.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- try
- {
- XSD_AUTO_PTR<type> r (root (argv[1]));
-
- cout << *r << endl;
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-}
diff --git a/xsd/tests/cxx/tree/test-template/makefile b/xsd/tests/cxx/tree/test-template/makefile
deleted file mode 100644
index 32af96b..0000000
--- a/xsd/tests/cxx/tree/test-template/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/test-template/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-ostream
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/test-template/output b/xsd/tests/cxx/tree/test-template/output
deleted file mode 100644
index 2a50681..0000000
--- a/xsd/tests/cxx/tree/test-template/output
+++ /dev/null
@@ -1,2 +0,0 @@
-
-a: a
diff --git a/xsd/tests/cxx/tree/test-template/test.xml b/xsd/tests/cxx/tree/test-template/test.xml
deleted file mode 100644
index 624a80c..0000000
--- a/xsd/tests/cxx/tree/test-template/test.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd">
-
- <a>a</a>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/test-template/test.xsd b/xsd/tests/cxx/tree/test-template/test.xsd
deleted file mode 100644
index 07bebc7..0000000
--- a/xsd/tests/cxx/tree/test-template/test.xsd
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="type">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/types-only/driver.cxx b/xsd/tests/cxx/tree/types-only/driver.cxx
deleted file mode 100644
index 8ba7500..0000000
--- a/xsd/tests/cxx/tree/types-only/driver.cxx
+++ /dev/null
@@ -1,31 +0,0 @@
-// file : tests/cxx/tree/types-only/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test that code generated without parsing and serialization functions
-// still compiles.
-//
-
-#include <iostream>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main ()
-{
- color_enum red (color_enum::red);
- red_blue_enum blue (red_blue_enum::blue);
-
- long_string_union num ("123");
-
- string_list list;
- list.push_back ("Hello");
- list.push_back ("World");
-
- complex_type t ("Hello, World!", "foo", color_enum::red);
-
- anon a ("Hello, World!");
-}
diff --git a/xsd/tests/cxx/tree/types-only/makefile b/xsd/tests/cxx/tree/types-only/makefile
deleted file mode 100644
index 25520a4..0000000
--- a/xsd/tests/cxx/tree/types-only/makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# file : tests/cxx/tree/types-only/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --suppress-parsing
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/types-only/test.xsd b/xsd/tests/cxx/tree/types-only/test.xsd
deleted file mode 100644
index 9f02240..0000000
--- a/xsd/tests/cxx/tree/types-only/test.xsd
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="color-enum">
- <restriction base="token">
- <enumeration value="red"/>
- <enumeration value="green"/>
- <enumeration value="blue"/>
- </restriction>
- </simpleType>
-
- <simpleType name="red-blue-enum">
- <restriction base="t:color-enum">
- <enumeration value="red"/>
- <enumeration value="blue"/>
- </restriction>
- </simpleType>
-
- <simpleType name="long-string-union">
- <union memberTypes="long string"/>
- </simpleType>
-
- <simpleType name="string-list">
- <list itemType="string"/>
- </simpleType>
-
- <complexType name="complex-type">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- <attribute name="text" type="string" use="required"/>
- <attribute name="color" type="t:color-enum" use="required"/>
- <attribute name="ftext" type="string" fixed="foo"/>
- <attribute name="dcolor" type="t:color-enum" default="red"/>
- </complexType>
-
- <!-- Test that we do not perform type/element name conflict resolution
- as well as print any warnings. -->
- <element name="type" type="string"/>
-
- <!-- Test that we generate anonymous type for global element. -->
- <element name="anon">
- <complexType>
- <sequence>
- <element name="a" type="string"/>
- </sequence>
- </complexType>
- </element>
-
- <element name="root" type="t:complex-type"/>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/union/ctor/driver.cxx b/xsd/tests/cxx/tree/union/ctor/driver.cxx
deleted file mode 100644
index 14a8565..0000000
--- a/xsd/tests/cxx/tree/union/ctor/driver.cxx
+++ /dev/null
@@ -1,31 +0,0 @@
-// file : tests/cxx/tree/union/ctor/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test union constructors.
-//
-#include <string>
-
-#include "test.hxx"
-
-using namespace std;
-using namespace test;
-
-int
-main ()
-{
- // Test ctor(const std::string&)
- //
- {
- string const s ("123");
- int_string_union u (s);
- type t (s);
- }
-
- // Test ctor(const char*).
- //
- {
- int_string_union u ("123");
- type t ("123");
- }
-}
diff --git a/xsd/tests/cxx/tree/union/ctor/makefile b/xsd/tests/cxx/tree/union/ctor/makefile
deleted file mode 100644
index 1edd762..0000000
--- a/xsd/tests/cxx/tree/union/ctor/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/union/ctor/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-default-ctor --generate-from-base-ctor \
---generate-doxygen
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver)
- $(call message,test $$1,$$1,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/union/ctor/test.xsd b/xsd/tests/cxx/tree/union/ctor/test.xsd
deleted file mode 100644
index 9601093..0000000
--- a/xsd/tests/cxx/tree/union/ctor/test.xsd
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="int-string-union">
- <union memberTypes="int string"/>
- </simpleType>
-
- <complexType name="type">
- <sequence>
- <element name="a" type="t:int-string-union"/>
- </sequence>
- </complexType>
-
-</schema>
diff --git a/xsd/tests/cxx/tree/union/makefile b/xsd/tests/cxx/tree/union/makefile
deleted file mode 100644
index 59abec6..0000000
--- a/xsd/tests/cxx/tree/union/makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# file : tests/cxx/tree/union/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-tests := ctor
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/xsd/tests/cxx/tree/wildcard/driver.cxx b/xsd/tests/cxx/tree/wildcard/driver.cxx
deleted file mode 100644
index e2db827..0000000
--- a/xsd/tests/cxx/tree/wildcard/driver.cxx
+++ /dev/null
@@ -1,204 +0,0 @@
-// file : tests/cxx/tree/wildcard/driver.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-// Test wildcard (any & anyAttribute) mapping.
-//
-
-#include <memory> // std::auto_ptr/unique_ptr
-#include <sstream>
-#include <iostream>
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include "test.hxx" // Get XSD_CXX11 defined.
-
-#include <xsd/cxx/xml/string.hxx>
-
-using namespace std;
-using namespace test;
-using namespace xercesc;
-
-namespace xml = xsd::cxx::xml;
-
-void
-print (type& t)
-{
- if (t.att ())
- cout << *t.att () << endl;
-
- type::any_attribute_set& as (t.any_attribute ());
-
- for (type::any_attribute_iterator i (as.begin ()); i != as.end (); ++i)
- {
- cout << xml::transcode<char> (i->getTextContent ()) << endl;
- }
-
- cout << xml::transcode<char> (t.any ().getTextContent ()) << endl
- << t.foo () << endl;
-
- if (t.any1 ())
- cout << xml::transcode<char> (t.any1 ()->getTextContent ()) << endl;
-
- cout << t.bar () << endl;
-
- type::any2_sequence& es (t.any2 ());
-
- for (type::any2_iterator i (es.begin ()); i != es.end (); ++i)
- {
- cout << xml::transcode<char> (i->getTextContent ()) << endl;
- }
-
- cout << endl;
-}
-
-int
-main (int argc, char* argv[])
-{
- if (argc != 2)
- {
- cerr << "usage: " << argv[0] << " test.xml" << endl;
- return 1;
- }
-
- XMLPlatformUtils::Initialize ();
-
- try
- {
- // Test accessors/modifiers for various cardinalities.
- //
- type t;
-
- DOMDocument& doc (t.dom_document ());
-
- // one
- //
- {
- DOMElement* e (doc.createElement (xml::string ("a").c_str ()));
- t.any (*e);
- e->release ();
- assert (xml::transcode<char> (t.any ().getTagName ()) == "a");
-
- t.any (doc.createElement (xml::string ("b").c_str ()));
- assert (xml::transcode<char> (t.any ().getTagName ()) == "b");
- }
-
- // optional
- //
- {
- assert (!t.any1 ().present ());
-
- DOMElement* e (doc.createElement (xml::string ("a").c_str ()));
- t.any1 (*e);
- e->release ();
- assert (t.any1 ().present ());
- assert (xml::transcode<char> (t.any1 ().get ().getTagName ()) == "a");
-
- t.any1 (doc.createElement (xml::string ("b").c_str ()));
- assert (xml::transcode<char> (t.any1 ()->getTagName ()) == "b");
-
- type::any1_optional c (
- doc.createElement (xml::string ("c").c_str ()), doc);
- t.any1 (c);
- assert (xml::transcode<char> (t.any1 ()->getTagName ()) == "c");
- }
-
-
- // sequence
- //
- {
- type::any2_sequence& s (t.any2 ());
-
- DOMElement* e (doc.createElement (xml::string ("a").c_str ()));
- s.push_back (*e);
- e->release ();
- s.push_back (doc.createElement (xml::string ("b").c_str ()));
- assert (s.size () == 2);
-
- for (type::any2_iterator i (s.begin ()); i != s.end (); ++i)
- {
- if (i == s.begin ())
- assert (xml::transcode<char> (i->getTagName ()) == "a");
- else
- assert (xml::transcode<char> ((*i).getTagName ()) == "b");
- }
-
- // copy c-tor
- type::any2_sequence cs (s, doc);
- assert (cs.size () == 2);
- assert (xml::transcode<char> (cs[0].getTagName ()) == "a");
- assert (xml::transcode<char> (cs[1].getTagName ()) == "b");
-
- // assignment
- t.any2 (cs);
- assert (s.size () == 2);
- assert (xml::transcode<char> (s[0].getTagName ()) == "a");
- assert (xml::transcode<char> (s[1].getTagName ()) == "b");
- }
-
- // anyAttribute
- //
- {
- type::any_attribute_set& s (t.any_attribute ());
-
- DOMAttr* a (doc.createAttribute (xml::string ("a").c_str ()));
- s.insert (*a);
- a->release ();
- s.insert (doc.createAttribute (xml::string ("b").c_str ()));
- assert (s.size () == 2);
-
- assert (s.find ("a") != s.end ());
- assert (s.find ("b") != s.end ());
-
- for (type::any_attribute_iterator i (s.begin ()); i != s.end (); ++i)
- {
- assert (xml::transcode<char> (i->getName ()) == "a" ||
- xml::transcode<char> ((*i).getName ()) == "b");
- }
-
- // copy c-tor
- type::any_attribute_set cs (s, doc);
- assert (cs.size () == 2);
- assert (cs.count ("a"));
- assert (cs.count ("b"));
-
- // assignment
- t.any_attribute (cs);
- assert (s.size () == 2);
- assert (s.count ("a"));
- assert (s.count ("b"));
- }
-
- // Test parsing
- //
- XSD_AUTO_PTR<type> r (root (argv[1]));
- print (*r);
-
- // Test serialization.
- //
- xml_schema::namespace_infomap map;
-
- map["t"].name = "test";
- map["t"].schema = "test.xsd";
- map["o"].name = "other";
-
- stringstream iostr;
- root (iostr, *r, map);
-
- // cout << iostr.str () << endl
- // << endl;
-
- XSD_AUTO_PTR<type> copy (root (iostr, argv[1]));
- assert (*copy == *r);
-
- print (*copy);
- }
- catch (xml_schema::exception const& e)
- {
- cerr << e << endl;
- return 1;
- }
-
- XMLPlatformUtils::Terminate ();
-}
diff --git a/xsd/tests/cxx/tree/wildcard/makefile b/xsd/tests/cxx/tree/wildcard/makefile
deleted file mode 100644
index b86c34a..0000000
--- a/xsd/tests/cxx/tree/wildcard/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : tests/cxx/tree/wildcard/makefile
-# copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-xsd := test.xsd
-cxx := driver.cxx
-
-obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
-dep := $(obj:.o=.o.d)
-
-driver := $(out_base)/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-
-# Build.
-#
-$(driver): $(obj) $(xerces_c.l)
-
-$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
-$(obj) $(dep): $(xerces_c.l.cpp-options)
-
-genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): xsd := $(out_root)/xsd/xsd
-$(gen): xsd_options += --generate-wildcard --generate-default-ctor \
---generate-from-base-ctor --generate-serialization --generate-comparison
-$(gen): $(out_root)/xsd/xsd
-
-$(call include-dep,$(dep),$(obj),$(gen))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-
-# Test.
-#
-$(test): driver := $(driver)
-$(test): $(driver) $(src_base)/test.xml $(src_base)/output
- $(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(obj)) \
- $(addsuffix .cxx.clean,$(dep)) \
- $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(gen): | $(out_base)/.gitignore
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): xsd_options += --std $(cxx_standard)
-$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
-endif
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd/makefile)
diff --git a/xsd/tests/cxx/tree/wildcard/output b/xsd/tests/cxx/tree/wildcard/output
deleted file mode 100644
index b23b488..0000000
--- a/xsd/tests/cxx/tree/wildcard/output
+++ /dev/null
@@ -1,24 +0,0 @@
-att
-any
-o:any
-t:any
-o:one
-foo
-t:bar
-bar
-o:one1
-o:one2
-o:one3
-
-att
-any
-o:any
-t:any
-o:one
-foo
-t:bar
-bar
-o:one1
-o:one2
-o:one3
-
diff --git a/xsd/tests/cxx/tree/wildcard/test.xml b/xsd/tests/cxx/tree/wildcard/test.xml
deleted file mode 100644
index b0c3267..0000000
--- a/xsd/tests/cxx/tree/wildcard/test.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<t:root xmlns:t="test"
- xmlns:o="other"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="test test.xsd"
-
- att="att"
- any="any"
- t:any="t:any"
- o:any="o:any">
-
- <o:one>o:one</o:one>
- <foo>foo</foo>
- <t:bar>t:bar</t:bar>
- <bar>bar</bar>
- <o:seq1>o:one1</o:seq1>
- <o:seq2>o:one2</o:seq2>
- <o:seq3>o:one3</o:seq3>
-
-</t:root>
diff --git a/xsd/tests/cxx/tree/wildcard/test.xsd b/xsd/tests/cxx/tree/wildcard/test.xsd
deleted file mode 100644
index 6c7b308..0000000
--- a/xsd/tests/cxx/tree/wildcard/test.xsd
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <complexType name="type">
- <sequence>
- <any namespace="##other" processContents="skip"/>
- <element name="foo" type="string"/>
- <any namespace="##targetNamespace" minOccurs="0" processContents="skip"/>
- <element name="bar" type="string"/>
- <any namespace="##other" maxOccurs="unbounded" processContents="skip"/>
- </sequence>
- <attribute name="att" type="string"/>
- <anyAttribute namespace="##any" processContents="skip"/>
- </complexType>
-
- <element name="root" type="t:type"/>
-
-</schema>
diff --git a/xsd/tests/failed/test-00.xsd b/xsd/tests/failed/test-00.xsd
deleted file mode 100644
index 5223f82..0000000
--- a/xsd/tests/failed/test-00.xsd
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:element name="foo">
- <xsd:complexType/>
- </xsd:element>
-
-</xsd:schema>
diff --git a/xsd/tests/makefile b/xsd/tests/makefile
deleted file mode 100644
index 661571b..0000000
--- a/xsd/tests/makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# file : tests/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(out_base)/cxx/
-$(test): $(out_base)/cxx/.test
-$(clean): $(out_base)/cxx/.clean
-
-$(call import,$(src_base)/cxx/makefile)
diff --git a/xsd/tests/morphing/anonymous/attribute-group/test.xsd b/xsd/tests/morphing/anonymous/attribute-group/test.xsd
deleted file mode 100644
index 657be8a..0000000
--- a/xsd/tests/morphing/anonymous/attribute-group/test.xsd
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- Attribute Group that names anonymous type. -->
-
- <xsd:attributeGroup name="gfoo-1">
- <xsd:attribute name="afoo-1">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
- </xsd:attribute>
- </xsd:attributeGroup>
-
- <xsd:attributeGroup name="gfoo-2">
- <xsd:attributeGroup ref="gfoo-1"/>
- <xsd:attribute name="afoo-2" type="xsd:string"/>
- </xsd:attributeGroup>
-
- <xsd:complexType name="Foo1">
- <xsd:attributeGroup ref="gfoo-1"/>
- </xsd:complexType>
-
- <xsd:complexType name="Foo2">
- <xsd:attributeGroup ref="gfoo-2"/>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/tests/morphing/anonymous/cyclic-inclusion/includee.xsd b/xsd/tests/morphing/anonymous/cyclic-inclusion/includee.xsd
deleted file mode 100644
index 51f7916..0000000
--- a/xsd/tests/morphing/anonymous/cyclic-inclusion/includee.xsd
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:t="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:include schemaLocation="includer.xsd"/>
-
- <xsd:element name="bar">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="t:foo"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
-</xsd:schema>
diff --git a/xsd/tests/morphing/anonymous/cyclic-inclusion/includer.xsd b/xsd/tests/morphing/anonymous/cyclic-inclusion/includer.xsd
deleted file mode 100644
index 54e6b69..0000000
--- a/xsd/tests/morphing/anonymous/cyclic-inclusion/includer.xsd
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:t="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:include schemaLocation="includee.xsd"/>
-
- <xsd:element name="foo">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
-</xsd:schema>
diff --git a/xsd/tests/morphing/anonymous/group/test.xsd b/xsd/tests/morphing/anonymous/group/test.xsd
deleted file mode 100644
index 73e07af..0000000
--- a/xsd/tests/morphing/anonymous/group/test.xsd
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- Simple case. -->
-
- <xsd:group name="gfoo">
- <xsd:sequence>
- <xsd:element name="foo-1">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
- </xsd:element>
- </xsd:sequence>
- </xsd:group>
-
-
- <xsd:complexType name="Foo">
- <xsd:group ref="gfoo"/>
- </xsd:complexType>
-
- <xsd:complexType name="Bar">
- <xsd:group ref="gfoo"/>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/tests/morphing/anonymous/test-000.xsd b/xsd/tests/morphing/anonymous/test-000.xsd
deleted file mode 100644
index ce930d8..0000000
--- a/xsd/tests/morphing/anonymous/test-000.xsd
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Test xpath for nested anonymous types. -->
-
- <element name="a">
- <complexType>
- <sequence>
- <element name="b">
- <complexType>
- <sequence>
- <element name="c" type="string"/>
- </sequence>
- </complexType>
- </element>
- </sequence>
- </complexType>
- </element>
-
-</schema>
diff --git a/xsd/tests/morphing/anonymous/unstable/includee-1.xsd b/xsd/tests/morphing/anonymous/unstable/includee-1.xsd
deleted file mode 100644
index 916816f..0000000
--- a/xsd/tests/morphing/anonymous/unstable/includee-1.xsd
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:simpleType name="base">
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
-
-</xsd:schema>
diff --git a/xsd/tests/morphing/anonymous/unstable/includee-2.xsd b/xsd/tests/morphing/anonymous/unstable/includee-2.xsd
deleted file mode 100644
index eb8222c..0000000
--- a/xsd/tests/morphing/anonymous/unstable/includee-2.xsd
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:element name="base">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
- </xsd:element>
-
-</xsd:schema>
diff --git a/xsd/tests/morphing/anonymous/unstable/includer.xsd b/xsd/tests/morphing/anonymous/unstable/includer.xsd
deleted file mode 100644
index 4593b5f..0000000
--- a/xsd/tests/morphing/anonymous/unstable/includer.xsd
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:Test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:include schemaLocation="includee-1.xsd"/>
- <xsd:include schemaLocation="includee-2.xsd"/>
-
- <xsd:simpleType name="derived">
- <xsd:restriction base="Test:base"/>
- </xsd:simpleType>
-
- <xsd:element name="element" type="Test:base"/>
- <xsd:attribute name="attribute" type="Test:base"/>
-
-</xsd:schema>
diff --git a/xsd/tests/processing/inheritance/test-000.xsd b/xsd/tests/processing/inheritance/test-000.xsd
deleted file mode 100644
index ef1ef71..0000000
--- a/xsd/tests/processing/inheritance/test-000.xsd
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Type base "depends" on itself via e element -->
-
- <element name="e">
- <complexType>
- <complexContent>
- <extension base="t:base"/>
- </complexContent>
- </complexType>
- </element>
-
- <complexType name="base">
- <sequence>
- <element ref="t:e"/>
- </sequence>
- </complexType>
-
- <element name="root" type="t:base"/>
-
-</schema>
diff --git a/xsd/tests/processing/inheritance/test-001.xsd b/xsd/tests/processing/inheritance/test-001.xsd
deleted file mode 100644
index 5afc997..0000000
--- a/xsd/tests/processing/inheritance/test-001.xsd
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Type base depends on derived which in turn depends on base -->
-
- <complexType name="derived">
- <complexContent>
- <extension base="t:base"/>
- </complexContent>
- </complexType>
-
- <complexType name="base">
- <sequence>
- <element name="e">
- <complexType>
- <complexContent>
- <extension base="t:derived"/>
- </complexContent>
- </complexType>
- </element>
- </sequence>
- </complexType>
-
- <element name="root" type="t:base"/>
-
-</schema>
diff --git a/xsd/tests/schema/anonymous/test.xsd b/xsd/tests/schema/anonymous/test.xsd
deleted file mode 100644
index cba3300..0000000
--- a/xsd/tests/schema/anonymous/test.xsd
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- Test 'type' name escaping. -->
- <xsd:element name="type">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
-
-
- <!-- Anonymous type via global element. -->
- <xsd:element name="global_element">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
-
-
- <!-- Anonymous type via global attribute. -->
- <xsd:attribute name="global_attribute">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
- </xsd:attribute>
-
-
-
- <!-- Anonymous type via local element. -->
- <xsd:complexType name="local_element_type">
- <xsd:sequence>
- <xsd:element name="local_element">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
-
-
-
- <!-- Anonymous type via local attribute. -->
- <xsd:complexType name="local_attribute_type">
- <xsd:attribute name="local_attribute">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
- </xsd:attribute>
- </xsd:complexType>
-
-<!--
-
- Various weird anonymous type combinations (some of them are fruits of a
- really sick imagination).
-
--->
-
- <xsd:element name="tasks">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="test:periodicTask"/>
- <xsd:element ref="test:braindamageTask"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="periodicTask">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="test:tasks"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="braindamageTask">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="test:tasks"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
-
- <xsd:complexType name="PropertySeq">
- <xsd:sequence>
- <xsd:element name="propery">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element name="value">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="typecode">
- <xsd:simpleType>
- <xsd:restriction base="xsd:NCName">
- <xsd:enumeration value="string"/>
- <xsd:enumeration value="integer"/>
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:element>
- <xsd:element name="content" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:element name="periods">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="period" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
-
- <xsd:element name="typecode">
- <xsd:simpleType>
- <xsd:restriction base="xsd:NCName">
- <xsd:enumeration value="string"/>
- <xsd:enumeration value="integer"/>
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:element>
-
-
-</xsd:schema>
diff --git a/xsd/tests/schema/any-attribute/test.xsd b/xsd/tests/schema/any-attribute/test.xsd
deleted file mode 100644
index 55419c4..0000000
--- a/xsd/tests/schema/any-attribute/test.xsd
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
-
- <xsd:complexType name="type">
- <xsd:attribute name="a" type="xsd:string"/>
- <xsd:anyAttribute namespace="##other" processContents="skip"/>
- <xsd:attributeGroup ref="test:agroup"/>
- </xsd:complexType>
-
- <xsd:attributeGroup name="agroup">
- <xsd:attribute name="b" type="xsd:string"/>
- <xsd:anyAttribute namespace="##any" processContents="skip"/>
- </xsd:attributeGroup>
-
- <xsd:element name="root" type="test:type"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/any-type/test.xsd b/xsd/tests/schema/any-type/test.xsd
deleted file mode 100644
index 9e3ff79..0000000
--- a/xsd/tests/schema/any-type/test.xsd
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name"/> <!-- type="anyType" -->
- <xsd:element name="name2" type="xsd:anyType" minOccurs="0"/>
- <xsd:element name="name3" type="xsd:anyType" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="id"/> <!-- type="anySimpleType" -->
- <xsd:attribute name="id2" type="xsd:anySimpleType" use="required"/>
- </xsd:complexType>
-
- <xsd:element name="person" type="test:person"/>
-
- <xsd:element name="name"/> <!-- type="anyType" -->
-
-</xsd:schema>
diff --git a/xsd/tests/schema/any/fail.xsd b/xsd/tests/schema/any/fail.xsd
deleted file mode 100644
index 2eb9513..0000000
--- a/xsd/tests/schema/any/fail.xsd
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:element name="foo" type="xsd:string"/>
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:element ref="test:foo"/>
- <xsd:any namespace="##any" processContents="strict"/>
- <xsd:any namespace="http://www.codesynthesis.com/xmlns/test" processContents="strict"/>
- </xsd:sequence>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/any/test.xsd b/xsd/tests/schema/any/test.xsd
deleted file mode 100644
index ff896fd..0000000
--- a/xsd/tests/schema/any/test.xsd
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- <xsd:any namespace="##other" processContents="strict" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="id" type="xsd:ID"/>
- <xsd:anyAttribute namespace="##other" processContents="strict"/>
- </xsd:complexType>
-
- <xsd:element name="person" type="test:person"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/attribute-group/global.xsd b/xsd/tests/schema/attribute-group/global.xsd
deleted file mode 100644
index 6ee0539..0000000
--- a/xsd/tests/schema/attribute-group/global.xsd
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- Simple case. -->
-
- <xsd:attributeGroup name="gfoo_1">
- <xsd:attribute name="foo_1_1" type="xsd:string"/>
- <xsd:attribute name="foo_1_2" type="xsd:string"/>
- </xsd:attributeGroup>
-
- <xsd:attributeGroup name="gfoo_2">
- <xsd:attributeGroup ref="gfoo_1"/>
- <xsd:attribute name="foo_2_1" type="xsd:string"/>
- <xsd:attribute name="foo_2_2" type="xsd:string"/>
- </xsd:attributeGroup>
-
- <xsd:complexType name="Foo">
- <xsd:attributeGroup ref="gfoo_2"/>
- </xsd:complexType>
-
-
-
- <!-- Forward reference. -->
-
- <xsd:attributeGroup name="gbar_3">
- <xsd:attribute name="bar_3_1" type="xsd:string"/>
- <xsd:attribute name="bar_3_2" type="xsd:string"/>
- <xsd:attributeGroup ref="gbar_1"/>
- </xsd:attributeGroup>
-
- <xsd:complexType name="Bar">
- <xsd:attributeGroup ref="gbar_2"/>
- </xsd:complexType>
-
- <xsd:attributeGroup name="gbar_2">
- <xsd:attributeGroup ref="gbar_3"/>
- <xsd:attribute name="bar_2_1" type="xsd:string"/>
- <xsd:attribute name="bar_2_2" type="xsd:string"/>
- </xsd:attributeGroup>
-
- <xsd:attributeGroup name="gbar_1">
- <xsd:attribute name="bar_1_1" type="xsd:string"/>
- <xsd:attribute name="bar_1_2" type="xsd:string"/>
- </xsd:attributeGroup>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/attribute/global.xsd b/xsd/tests/schema/attribute/global.xsd
deleted file mode 100644
index e2dcc93..0000000
--- a/xsd/tests/schema/attribute/global.xsd
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- Typed with named type. -->
-
- <xsd:attribute name="foo" type="xsd:string"/>
-
-
- <!-- Typed with anonymous type. -->
-
- <xsd:attribute name="bar">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
- </xsd:attribute>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/attribute/local.xsd b/xsd/tests/schema/attribute/local.xsd
deleted file mode 100644
index 7a7a480..0000000
--- a/xsd/tests/schema/attribute/local.xsd
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
-
- <!-- Typed with named type. -->
-
- <xsd:complexType name="Foo">
- <xsd:attribute name="foo" type="xsd:string"/>
- </xsd:complexType>
-
-
- <!-- Forward reference to a yet undeclared type. -->
-
- <xsd:complexType name="Bar">
- <xsd:attribute name="bar" type="Bar2"/>
- </xsd:complexType>
-
- <xsd:simpleType name="Bar2">
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
-
-
- <!-- Typed with anonymous type. -->
-
- <xsd:complexType name="Baz">
- <xsd:attribute name="baz">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
- </xsd:attribute>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/attribute/ref.xsd b/xsd/tests/schema/attribute/ref.xsd
deleted file mode 100644
index f6c3c10..0000000
--- a/xsd/tests/schema/attribute/ref.xsd
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
-
- <!-- Easy case. -->
-
- <xsd:attribute name="foo" type="xsd:string"/>
-
- <xsd:complexType name="Foo">
- <xsd:attribute ref="foo"/>
- </xsd:complexType>
-
-
-
- <!-- Forward reference to a yet undeclared attribute. -->
-
- <xsd:complexType name="Bar">
- <xsd:attribute ref="bar"/>
- </xsd:complexType>
-
- <xsd:attribute name="bar" type="xsd:string"/>
-
-
-
- <!-- Reference to an attribute with a forward reference to a yet
- undeclared type. -->
-
- <xsd:attribute name="baz" type="Baz2"/>
-
- <xsd:complexType name="Baz">
- <xsd:attribute ref="baz"/>
- </xsd:complexType>
-
- <xsd:simpleType name="Baz2">
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/cardinality/test.xsd b/xsd/tests/schema/cardinality/test.xsd
deleted file mode 100644
index b27f923..0000000
--- a/xsd/tests/schema/cardinality/test.xsd
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!--
- This test tries to cover various cardinality cases with
- built-in and user-defined types.
- -->
-
- <xsd:complexType name="Foo">
- <xsd:sequence>
- <xsd:element name="foo" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="Bar">
- <xsd:sequence>
-
- <xsd:element name="one-int" type="xsd:int"/>
- <xsd:element name="opt-int" type="xsd:int" minOccurs="0"/>
- <xsd:element name="seq-int" type="xsd:int" maxOccurs="unbounded"/>
-
- <xsd:element name="one-string" type="xsd:string"/>
- <xsd:element name="opt-string" type="xsd:string" minOccurs="0"/>
- <xsd:element name="seq-string" type="xsd:string" maxOccurs="unbounded"/>
-
- <xsd:element name="one-foo" type="test:Foo"/>
- <xsd:element name="opt-foo" type="test:Foo" minOccurs="0"/>
- <xsd:element name="seq-foo" type="test:Foo" maxOccurs="unbounded"/>
-
- </xsd:sequence>
-
- <xsd:attribute name="one-int-a" type="xsd:int" use="required"/>
- <xsd:attribute name="opt-int-a" type="xsd:int"/>
-
- <xsd:attribute name="one-string-a" type="xsd:string" use="required"/>
- <xsd:attribute name="opt-string-a" type="xsd:string"/>
-
- </xsd:complexType>
-
- <xsd:element name="bar" type="test:Bar"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/chameleon/includer.xsd b/xsd/tests/schema/chameleon/includer.xsd
deleted file mode 100644
index c93ea18..0000000
--- a/xsd/tests/schema/chameleon/includer.xsd
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:Test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:include schemaLocation="schemas/includee.xsd"/>
-
- <xsd:simpleType name="derived">
- <xsd:restriction base="Test:base"/>
- </xsd:simpleType>
-
- <xsd:element name="element" type="Test:base"/>
- <xsd:attribute name="attribute" type="Test:base"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/chameleon/schemas/includee.xsd b/xsd/tests/schema/chameleon/schemas/includee.xsd
deleted file mode 100644
index d89b9c4..0000000
--- a/xsd/tests/schema/chameleon/schemas/includee.xsd
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd">
-
- <xsd:simpleType name="base">
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
-
- <xsd:element name="base_e" type="base"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/enumeration/test.xsd b/xsd/tests/schema/enumeration/test.xsd
deleted file mode 100644
index b8253d9..0000000
--- a/xsd/tests/schema/enumeration/test.xsd
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- string-based -->
-
- <xsd:simpleType name="StringEnum">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="one"/>
- <xsd:enumeration value="two"/>
- <xsd:enumeration value="three"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:simpleType name="StringSimple">
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
-
- <!-- inheritance of a enum from a simple type -->
- <xsd:simpleType name="StringSimpleRestriction">
- <xsd:restriction base="test:StringSimple">
- <xsd:enumeration value="one"/>
- <xsd:enumeration value="two"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <!-- inheritance of a enum from a strig-based enum -->
- <xsd:simpleType name="StringEnumRestriction">
- <xsd:restriction base="test:StringEnum">
- <xsd:enumeration value="one"/>
- <xsd:enumeration value="two"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <!-- inheritance of a complex type from a string-based enum -->
- <xsd:complexType name="StringComplex">
- <xsd:simpleContent>
- <xsd:extension base="test:StringEnumRestriction">
- <xsd:attribute name="lang" type="xsd:language"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
-
-
- <!-- non string-based -->
-
- <xsd:simpleType name="IntEnum">
- <xsd:restriction base="xsd:int">
- <xsd:enumeration value="1"/>
- <xsd:enumeration value="2"/>
- <xsd:enumeration value="3"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:simpleType name="IntSimple">
- <xsd:restriction base="xsd:int"/>
- </xsd:simpleType>
-
- <!-- inheritance of a enum from a simple type -->
- <xsd:simpleType name="IntSimpleRestriction">
- <xsd:restriction base="test:IntSimple">
- <xsd:enumeration value="1"/>
- <xsd:enumeration value="2"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <!-- inheritance of a enum from a enum -->
- <xsd:simpleType name="IntEnumRestriction">
- <xsd:restriction base="test:IntEnum">
- <xsd:enumeration value="1"/>
- <xsd:enumeration value="2"/>
- </xsd:restriction>
- </xsd:simpleType>
-
- <!-- inheritance of a complex type from a enum -->
- <xsd:complexType name="IntComplex">
- <xsd:simpleContent>
- <xsd:extension base="test:IntEnumRestriction">
- <xsd:attribute name="lang" type="xsd:language"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
-
-</xsd:schema>
diff --git a/xsd/tests/schema/forward/test.xsd b/xsd/tests/schema/forward/test.xsd
deleted file mode 100644
index c7cc24e..0000000
--- a/xsd/tests/schema/forward/test.xsd
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
-<!--
-
- Various weird forward reference combinations.
-
--->
-
- <!-- case 1 -->
-
- <xsd:complexType name="Type1A">
- <xsd:complexContent>
- <xsd:extension base="test:Type1B">
- <xsd:sequence>
- <xsd:element name="bar" type="xsd:string"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="Type1B">
- <xsd:sequence>
- <xsd:element name="foo" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/group/global.xsd b/xsd/tests/schema/group/global.xsd
deleted file mode 100644
index 27ccadf..0000000
--- a/xsd/tests/schema/group/global.xsd
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- Simple case. -->
-
- <xsd:group name="gfoo">
- <xsd:sequence>
- <xsd:element name="foo_1" type="xsd:string"/>
- <xsd:element name="foo_2" type="xsd:string"/>
- </xsd:sequence>
- </xsd:group>
-
-
- <xsd:complexType name="Foo">
- <xsd:group ref="gfoo"/>
- </xsd:complexType>
-
-
-
- <!-- Forward reference. -->
-
- <xsd:complexType name="Bar">
- <xsd:group ref="gbar"/>
- </xsd:complexType>
-
- <xsd:group name="gbar">
- <xsd:choice>
- <xsd:element name="bar_1" type="xsd:string"/>
- <xsd:element ref="bar_2"/>
- </xsd:choice>
- </xsd:group>
-
- <xsd:element name="bar_2" type="xsd:string"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/group/test.xsd b/xsd/tests/schema/group/test.xsd
deleted file mode 100644
index 7527cbb..0000000
--- a/xsd/tests/schema/group/test.xsd
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!--
-
- Various weird group combinations.
-
- -->
-
- <!-- case 1 -->
-
- <xsd:group name="g1">
- <xsd:sequence>
- <xsd:element name="e1" type="xsd:string"/>
- <xsd:element name="e2" type="xsd:long"/>
- </xsd:sequence>
- </xsd:group>
-
- <xsd:complexType name="Type1">
- <xsd:sequence>
- <xsd:group ref="test:g1"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <!-- case 2 -->
-
- <xsd:group name="g2">
- <xsd:sequence>
- <xsd:element ref="test:g2e1"/>
- </xsd:sequence>
- </xsd:group>
-
- <xsd:complexType name="TypeTwo">
- <xsd:sequence>
- <xsd:group ref="test:g2"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="g2e1" type="xsd:string"/>
-
- <!-- case 3 -->
-
- <xsd:complexType name="Type3">
- <xsd:sequence>
- <xsd:group ref="test:g3"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:group name="g3">
- <xsd:sequence>
- <xsd:element ref="test:g3e1"/>
- </xsd:sequence>
- </xsd:group>
-
- <xsd:element name="g3e1" type="xsd:string"/>
-
- <!-- case 4 -->
-
- <xsd:complexType name="Type4A">
- <xsd:sequence>
- <xsd:group ref="test:g4" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="Type4B">
- <xsd:sequence minOccurs="0">
- <xsd:group ref="test:g4"/>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:group name="g4">
- <xsd:sequence>
- <xsd:element name="e1" type="xsd:string"/>
- <xsd:element name="e2" type="xsd:long" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:group>
-
- <xsd:complexType name="Type4C">
- <xsd:sequence>
- <xsd:group ref="test:g4" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <!-- case 5 -->
-
- <xsd:group name="g5-1">
- <xsd:choice>
- <xsd:group ref="test:g5-2"/>
- <xsd:element name="e1" type="xsd:string"/>
- </xsd:choice>
- </xsd:group>
-
- <xsd:group name="g5-2">
- <xsd:choice>
- <xsd:group ref="test:g5-3"/>
- <xsd:element name="e2" type="xsd:string"/>
- </xsd:choice>
- </xsd:group>
-
- <xsd:group name="g5-3">
- <xsd:choice>
- <xsd:element name="e3" type="xsd:long"/>
- </xsd:choice>
- </xsd:group>
-
- <xsd:complexType name="Type5">
- <xsd:choice>
- <xsd:group ref="test:g5-1"/>
- </xsd:choice>
- </xsd:complexType>
-
- <!-- case 6 -->
-
- <xsd:group name="g6-3">
- <xsd:choice>
- <xsd:group ref="test:g6-1"/>
- <xsd:element name="e_3_1" type="xsd:string"/>
- <xsd:element name="e_3_2" type="xsd:string"/>
- </xsd:choice>
- </xsd:group>
-
- <xsd:complexType name="Type6">
- <xsd:choice>
- <xsd:group ref="test:g6-2"/>
- </xsd:choice>
- </xsd:complexType>
-
- <xsd:group name="g6-2">
- <xsd:choice>
- <xsd:group ref="test:g6-3"/>
- <xsd:element name="e_2_1" type="xsd:string"/>
- <xsd:element name="e_2_2" type="xsd:string"/>
- </xsd:choice>
- </xsd:group>
-
- <xsd:group name="g6-1">
- <xsd:choice>
- <xsd:element name="e_1_1" type="xsd:string"/>
- <xsd:element name="e_1_2" type="xsd:string"/>
- </xsd:choice>
- </xsd:group>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/import/importer.xsd b/xsd/tests/schema/import/importer.xsd
deleted file mode 100644
index 82fc33c..0000000
--- a/xsd/tests/schema/import/importer.xsd
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:Test="http://www.codesynthesis.com/xmlns/test"
- xmlns:Impl="http://www.codesynthesis.com/xmlns/test/impl"
- targetNamespace="http://www.codesynthesis.com/xmlns/test/impl">
-
- <!-- <xsd::element name="foo" type="xsd:string"/> -->
-
- <xsd:import namespace="http://www.codesynthesis.com/xmlns/test" schemaLocation="schemas/importee.xsd"/>
-
- <xsd:simpleType name="derived">
- <xsd:restriction base="Test:base"/>
- </xsd:simpleType>
-
- <xsd:element name="element" type="Test:base"/>
- <xsd:attribute name="attribute" type="Test:base"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/import/schemas/importee.xsd b/xsd/tests/schema/import/schemas/importee.xsd
deleted file mode 100644
index 9b03315..0000000
--- a/xsd/tests/schema/import/schemas/importee.xsd
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
-
- <xsd:simpleType name="base">
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
-
- <xsd:element name="base_e" type="test:base"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/include/includer.xsd b/xsd/tests/schema/include/includer.xsd
deleted file mode 100644
index c93ea18..0000000
--- a/xsd/tests/schema/include/includer.xsd
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:Test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:include schemaLocation="schemas/includee.xsd"/>
-
- <xsd:simpleType name="derived">
- <xsd:restriction base="Test:base"/>
- </xsd:simpleType>
-
- <xsd:element name="element" type="Test:base"/>
- <xsd:attribute name="attribute" type="Test:base"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/include/schemas/includee.xsd b/xsd/tests/schema/include/schemas/includee.xsd
deleted file mode 100644
index 0a928f5..0000000
--- a/xsd/tests/schema/include/schemas/includee.xsd
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:simpleType name="base">
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
-
- <xsd:element name="base_e" type="test:base"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/inheritance/cycle.xsd b/xsd/tests/schema/inheritance/cycle.xsd
deleted file mode 100644
index c705311..0000000
--- a/xsd/tests/schema/inheritance/cycle.xsd
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:complexType name="Base">
- <xsd:sequence>
- <xsd:element name="e1">
- <xsd:complexType>
- <xsd:complexContent>
- <xsd:extension base="test:Derived">
- <xsd:sequence>
- <xsd:element name="e2" type="xsd:int"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="Derived">
- <xsd:complexContent>
- <xsd:extension base="test:Base">
- <xsd:sequence>
- <xsd:element name="e3" type="xsd:int"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/inheritance/sourced-forward/includee.xsd b/xsd/tests/schema/inheritance/sourced-forward/includee.xsd
deleted file mode 100644
index 531027d..0000000
--- a/xsd/tests/schema/inheritance/sourced-forward/includee.xsd
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd">
-
- <xsd:simpleType name="Derived">
- <xsd:restriction base="Base"/>
- </xsd:simpleType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/inheritance/sourced-forward/includer.xsd b/xsd/tests/schema/inheritance/sourced-forward/includer.xsd
deleted file mode 100644
index 7d18efc..0000000
--- a/xsd/tests/schema/inheritance/sourced-forward/includer.xsd
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:include schemaLocation="includee.xsd"/>
-
- <xsd:simpleType name="Base">
- <xsd:restriction base="xsd:string"/>
- </xsd:simpleType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/list/anonymous/test.xsd b/xsd/tests/schema/list/anonymous/test.xsd
deleted file mode 100644
index 7db39ba..0000000
--- a/xsd/tests/schema/list/anonymous/test.xsd
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:simpleType name="IntList">
- <xsd:list>
- <xsd:simpleType>
- <xsd:restriction base="xsd:int"/>
- </xsd:simpleType>
- </xsd:list>
- </xsd:simpleType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/list/any-simple-type/test.xsd b/xsd/tests/schema/list/any-simple-type/test.xsd
deleted file mode 100644
index 29fe95c..0000000
--- a/xsd/tests/schema/list/any-simple-type/test.xsd
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:simpleType name="any">
- <xsd:list itemType="xsd:anySimpleType"/>
- </xsd:simpleType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/list/driver.cxx b/xsd/tests/schema/list/driver.cxx
deleted file mode 100644
index 7bd46e9..0000000
--- a/xsd/tests/schema/list/driver.cxx
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "test.hxx"
-
-typedef xmlns::test::IntList<void, int> IntListImpl;
-typedef xmlns::test::IntList<void, void> IntListVoidImpl;
-typedef xmlns::test::IntComplex<void, int, char*> IntComplexImpl;
-
-int
-main ()
-{
- IntListImpl int_list_impl;
- IntListVoidImpl int_list_void_impl;
- IntComplexImpl int_complex_impl;
-}
diff --git a/xsd/tests/schema/list/test.xsd b/xsd/tests/schema/list/test.xsd
deleted file mode 100644
index e16a58d..0000000
--- a/xsd/tests/schema/list/test.xsd
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:simpleType name="IntList">
- <xsd:list itemType="xsd:int"/>
- </xsd:simpleType>
-
- <!-- local element with anonymous list inside. -->
-
- <xsd:complexType name="Foo">
- <xsd:sequence>
- <xsd:element name="string-list">
- <xsd:simpleType>
- <xsd:list itemType="xsd:string"/>
- </xsd:simpleType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <!-- global element with anonymous list inside. -->
-
- <xsd:element name="string-list">
- <xsd:simpleType>
- <xsd:list itemType="xsd:string"/>
- </xsd:simpleType>
- </xsd:element>
-
-
-
- <!-- global element and global list with conflicting names -->
-
- <xsd:simpleType name="long-list">
- <xsd:list itemType="xsd:long"/>
- </xsd:simpleType>
-
- <xsd:element name="long-list" type="test:long-list"/>
-
-
- <!-- forward reference -->
-
- <xsd:simpleType name="int-list">
- <xsd:list itemType="test:int"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="int">
- <xsd:restriction base="xsd:int"/>
- </xsd:simpleType>
-
-
- <!-- inheritance from list -->
-
- <xsd:complexType name="IntComplex">
- <xsd:simpleContent>
- <xsd:extension base="test:IntList">
- <xsd:attribute name="foo" type="xsd:string"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:complexType name="IntComplexEmpty">
- <xsd:simpleContent>
- <xsd:extension base="test:IntList">
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/no-namespace/test.xsd b/xsd/tests/schema/no-namespace/test.xsd
deleted file mode 100644
index b426e8a..0000000
--- a/xsd/tests/schema/no-namespace/test.xsd
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd">
-
-
- <xsd:complexType name="Test">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="test" type="Test"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/recursive/test.xsd b/xsd/tests/schema/recursive/test.xsd
deleted file mode 100644
index 6efc7d2..0000000
--- a/xsd/tests/schema/recursive/test.xsd
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:element name="BooleanExpression">
- <xsd:complexType>
- <xsd:choice>
- <xsd:element name="literal" type="xsd:boolean"/>
- <xsd:element ref="test:AND"/>
- <xsd:element ref="test:OR"/>
- <xsd:element ref="test:XOR"/>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="AND">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="test:BooleanExpression" maxOccurs="2"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="OR">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="test:BooleanExpression" maxOccurs="2"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="XOR">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="test:BooleanExpression" maxOccurs="2"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/ref-type/idref.xsd b/xsd/tests/schema/ref-type/idref.xsd
deleted file mode 100644
index 49ebe40..0000000
--- a/xsd/tests/schema/ref-type/idref.xsd
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- attribute -->
-
- <xsd:attribute name="attribute" type="xsd:IDREF" xse:refType="test:a-author"/>
-
- <xsd:complexType name="a-author">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- <xsd:attribute name="recommends" type="xsd:IDREF" xse:refType="test:a-author"/>
- </xsd:complexType>
-
-
- <!-- element -->
-
- <xsd:element name="element" type="xsd:IDREF" xse:refType="test:e-author"/>
-
- <xsd:complexType name="e-author">
- <xsd:sequence>
- <xsd:element name="recommends" type="xsd:IDREF" xse:refType="test:e-author"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <!-- base -->
-
- <xsd:simpleType name="author-ref">
- <xsd:restriction base="xsd:IDREF" xse:refType="test:e-author"/>
- </xsd:simpleType>
-
-
- <!-- itemType -->
-
- <xsd:simpleType name="author-refs">
- <xsd:list itemType="xsd:IDREF" xse:refType="test:e-author"/>
- </xsd:simpleType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/ref-type/idrefs.xsd b/xsd/tests/schema/ref-type/idrefs.xsd
deleted file mode 100644
index b68ed03..0000000
--- a/xsd/tests/schema/ref-type/idrefs.xsd
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- attribute -->
-
- <xsd:attribute name="attribute" type="xsd:IDREFS" xse:refType="test:a-author"/>
-
- <xsd:complexType name="a-author">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string"/>
- </xsd:sequence>
- <xsd:attribute name="recommends" type="xsd:IDREFS" xse:refType="test:a-author"/>
- </xsd:complexType>
-
-
- <!-- element -->
-
- <xsd:element name="element" type="xsd:IDREFS" xse:refType="test:e-author"/>
-
- <xsd:complexType name="e-author">
- <xsd:sequence>
- <xsd:element name="recommends" type="xsd:IDREFS" xse:refType="test:e-author"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <!-- base -->
-
- <xsd:simpleType name="author-refs">
- <xsd:restriction base="xsd:IDREFS" xse:refType="test:e-author"/>
- </xsd:simpleType>
-
-
- <!-- itemType - illegal -->
- <!--
- <xsd:simpleType name="author-refss">
- <xsd:list itemType="xsd:IDREFS" xse:refType="test:e-author"/>
- </xsd:simpleType>
- -->
-
-</xsd:schema>
diff --git a/xsd/tests/schema/ref-type/invalid-0.xsd b/xsd/tests/schema/ref-type/invalid-0.xsd
deleted file mode 100644
index 7ce82ed..0000000
--- a/xsd/tests/schema/ref-type/invalid-0.xsd
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- xmlns:phony="http://www.codesynthesis.com/xmlns/phony"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- unresolvable namespace prefix -->
-
- <xsd:attribute name="attribute1" type="xsd:IDREF" xse:refType="author"/>
- <xsd:attribute name="attribute2" type="xsd:IDREF" xse:refType="t:author"/>
-
- <!-- unresolvable namespace -->
-
- <xsd:attribute name="attribute3" type="xsd:IDREF" xse:refType="phony:author"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/ref-type/invalid-1.xsd b/xsd/tests/schema/ref-type/invalid-1.xsd
deleted file mode 100644
index d989065..0000000
--- a/xsd/tests/schema/ref-type/invalid-1.xsd
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- unresolvable type -->
-
- <xsd:attribute name="attribute" type="xsd:IDREF" xse:refType="test:author"/>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/restriction/test.xsd b/xsd/tests/schema/restriction/test.xsd
deleted file mode 100644
index 331ba78..0000000
--- a/xsd/tests/schema/restriction/test.xsd
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <!-- Simple content. -->
-
- <xsd:complexType name="SimpleBase">
- <xsd:simpleContent>
- <xsd:extension base="xsd:string">
- <xsd:attribute name="lang" type="xsd:language"/>
- <xsd:attribute name="note" type="xsd:string"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <xsd:complexType name="SimpleType">
- <xsd:simpleContent>
- <xsd:restriction base="test:SimpleBase">
- <xsd:maxLength value="255"/>
- <xsd:attribute name="lang">
- <xsd:simpleType>
- <xsd:restriction base="xsd:language">
- <xsd:enumeration value="en"/>
- <xsd:enumeration value="es"/>
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:attribute>
- </xsd:restriction>
- </xsd:simpleContent>
- </xsd:complexType>
-
- <!-- Complex content. -->
-
- <xsd:complexType name="ComplexBase">
- <xsd:sequence>
- <xsd:element name="lang" type="xsd:language"/>
- <xsd:element name="note" type="xsd:string" minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:complexType name="ComplexType">
- <xsd:complexContent>
- <xsd:restriction base="test:ComplexBase">
- <xsd:sequence>
- <xsd:element name="lang" type="xsd:language"/>
- <xsd:element name="note" type="xsd:string"/>
- </xsd:sequence>
- </xsd:restriction>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:complexType name="AnyType">
- <xsd:complexContent>
- <xsd:restriction base="xsd:anyType">
- <xsd:sequence>
- <xsd:element name="lang" type="xsd:language"/>
- <xsd:element name="note" type="xsd:string"/>
- </xsd:sequence>
- </xsd:restriction>
- </xsd:complexContent>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/tests/schema/union/test.xsd b/xsd/tests/schema/union/test.xsd
deleted file mode 100644
index 706f6f2..0000000
--- a/xsd/tests/schema/union/test.xsd
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
- xmlns:test="http://www.codesynthesis.com/xmlns/test"
- targetNamespace="http://www.codesynthesis.com/xmlns/test">
-
- <xsd:simpleType name="IntUnion">
- <xsd:union memberTypes="xsd:int xsd:string"/>
- </xsd:simpleType>
-
- <!-- local element with anonymous union inside. -->
-
- <xsd:complexType name="Foo">
- <xsd:sequence>
- <xsd:element name="string-union">
- <xsd:simpleType>
- <xsd:union memberTypes="xsd:int xsd:string"/>
- </xsd:simpleType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
-
-
- <!-- global element with anonymous union inside. -->
-
- <xsd:element name="string-union">
- <xsd:simpleType>
- <xsd:union memberTypes="xsd:int xsd:string"/>
- </xsd:simpleType>
- </xsd:element>
-
-
-
- <!-- global element and global union with conflicting names -->
-
- <xsd:simpleType name="long-union">
- <xsd:union memberTypes="xsd:long xsd:string"/>
- </xsd:simpleType>
-
- <xsd:element name="long-union" type="test:long-union"/>
-
-
- <!-- forward reference -->
-
- <xsd:simpleType name="int-union">
- <xsd:union memberTypes="test:int xsd:string"/>
- </xsd:simpleType>
-
- <xsd:simpleType name="int">
- <xsd:restriction base="xsd:int"/>
- </xsd:simpleType>
-
-
- <!-- inheritance from union -->
-
- <xsd:complexType name="IntComplex">
- <xsd:simpleContent>
- <xsd:extension base="test:IntUnion">
- <xsd:attribute name="foo" type="xsd:string"/>
- </xsd:extension>
- </xsd:simpleContent>
- </xsd:complexType>
-
-</xsd:schema>
diff --git a/xsd/type-map/lexer.cxx b/xsd/type-map/lexer.cxx
new file mode 100644
index 0000000..ae318d1
--- /dev/null
+++ b/xsd/type-map/lexer.cxx
@@ -0,0 +1,131 @@
+// file : xsd/type-map/lexer.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <iostream>
+
+#include <xsd/type-map/lexer.hxx>
+
+using std::wcerr;
+using std::endl;
+
+namespace TypeMap
+{
+ Lexer::Lexer (std::istream& is, String const& path)
+ : locale_ ("C"), is_ (is), path_ (path), line_ (1), comment_ (false)
+ {
+ is_.exceptions (std::ios_base::badbit);
+ }
+
+ Lexer::Token Lexer::
+ next ()
+ {
+ if (held_lexeme_)
+ {
+ Token t (Token::punct, held_lexeme_, line_);
+ held_lexeme_.clear ();
+ return t;
+ }
+
+ typedef std::char_traits<char> Traits;
+ typedef Traits::char_type CharType;
+ typedef Traits::int_type IntType;
+
+ IntType i;
+ CharType c ('\0');
+ NarrowString lexeme;
+
+ // Skip all whitespaces including comments.
+ //
+ while (!is_.eof ())
+ {
+ i = is_.get ();
+
+ if (i == Traits::eof ())
+ break;
+
+ c = Traits::to_char_type (i);
+
+ if (comment_)
+ {
+ if (c == '\n')
+ comment_ = false;
+ }
+ else
+ {
+ if (!(std::isspace (c, locale_) || c == '#'))
+ break;
+
+ if (c == '#')
+ comment_ = true;
+ }
+
+ if (c == '\n')
+ ++line_;
+ }
+
+ if (is_.eof ())
+ return Token (Token::eos, L"<end-of-stream>", line_);
+
+ bool quote (c == '"');
+
+ if (!quote)
+ lexeme += c;
+
+ if (c != ';' && c != '{' && c != '}')
+ {
+ // Accumulate non-whitespace character sequence.
+ //
+
+ while (!is_.eof ())
+ {
+ i = is_.get ();
+
+ if (i == Traits::eof ())
+ break;
+
+ c = Traits::to_char_type (i);
+
+ if (!quote && c == '#')
+ {
+ comment_ = true;
+ break;
+ }
+
+ if (std::isspace (c, locale_))
+ {
+ if (c == '\n')
+ ++line_;
+
+ if (!quote)
+ break;
+ }
+
+ if (!quote && (c == ';' || c == '{' || c == '}'))
+ {
+ held_lexeme_ += c;
+ break;
+ }
+
+ if (quote && c == '"')
+ break;
+
+ lexeme += c;
+ }
+
+ if (quote && c != '"')
+ {
+ wcerr << path_ << ":" << line_ << ": error: closing '\"' expected"
+ << endl;
+
+ throw Failed ();
+ }
+ }
+
+ if (!quote && (lexeme == ";" || lexeme == "{" || lexeme == "}"))
+ {
+ return Token (Token::punct, lexeme, line_);
+ }
+ else
+ return Token (Token::token, lexeme, line_);
+ }
+}
diff --git a/xsd/type-map/lexer.hxx b/xsd/type-map/lexer.hxx
new file mode 100644
index 0000000..a0e1e44
--- /dev/null
+++ b/xsd/type-map/lexer.hxx
@@ -0,0 +1,74 @@
+// file : xsd/type-map/lexer.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_TYPE_MAP_LEXER_HXX
+#define XSD_TYPE_MAP_LEXER_HXX
+
+#include <locale>
+#include <iosfwd>
+
+#include <xsd/types.hxx>
+
+namespace TypeMap
+{
+ class Lexer
+ {
+ public:
+ class Token
+ {
+ public:
+ enum Type
+ {
+ token,
+ punct,
+ eos
+ };
+
+ Token (Type type, String const& lexeme, size_t line)
+ : type_ (type), lexeme_ (lexeme), line_ (line)
+ {
+ }
+
+ Type
+ type () const
+ {
+ return type_;
+ }
+
+ String const&
+ lexeme () const
+ {
+ return lexeme_;
+ }
+
+ size_t
+ line () const
+ {
+ return line_;
+ }
+
+ private:
+ Type type_;
+ String lexeme_;
+ size_t line_;
+ };
+
+ Lexer (std::istream&, String const& path);
+
+ struct Failed {};
+
+ Token
+ next ();
+
+ private:
+ std::locale locale_;
+ std::istream& is_;
+ String path_;
+ size_t line_;
+ String held_lexeme_;
+ bool comment_;
+ };
+
+}
+
+#endif // XSD_TYPE_MAP_LEXER_HXX
diff --git a/xsd/type-map/parser.cxx b/xsd/type-map/parser.cxx
new file mode 100644
index 0000000..f11fac3
--- /dev/null
+++ b/xsd/type-map/parser.cxx
@@ -0,0 +1,279 @@
+// file : xsd/type-map/parser.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <iostream>
+
+#include <libcutl/re.hxx>
+
+#include <xsd/type-map/parser.hxx>
+
+using std::endl;
+
+namespace TypeMap
+{
+ typedef Lexer::Token Token;
+ typedef cutl::re::wformat Format;
+
+ Parser::Parser (Lexer& lex, String const& path)
+ : lex_ (lex), path_ (path), e (std::wcerr)
+ {
+ }
+
+ bool Parser::
+ parse (Namespaces& ns)
+ {
+ try
+ {
+ Namespace* global = 0;
+
+ for (Token t (lex_.next ()); t.type () != Token::eos; t = lex_.next ())
+ {
+ String l (t.lexeme ());
+
+ if (l == L"namespace")
+ {
+ global = 0;
+
+ if (!namespace_ (ns))
+ return false;
+ }
+ else if (l == L"include")
+ {
+ if (global == 0)
+ {
+ ns.push_back (Namespace (Pattern ()));
+ global = &(*ns.rbegin ());
+ }
+
+ if (!include (*global))
+ return false;
+ }
+ else if (l == L"type" || t.type () == Token::token)
+ {
+ // Type mapping can have 'type' specifier omitted.
+ //
+ if (l == L"type")
+ t = lex_.next ();
+
+ if (global == 0)
+ {
+ ns.push_back (Namespace (Pattern ()));
+ global = &(*ns.rbegin ());
+ }
+
+ if (!type (t, *global))
+ return false;
+ }
+ else
+ {
+ e << path_ << ":" << t.line () << ": unexpected '" << l << "'"
+ << endl;
+
+ return false;
+ }
+ }
+ }
+ catch (Lexer::Failed const&)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ bool Parser::
+ namespace_ (Namespaces& ns)
+ {
+ // First get XML namespace.
+ //
+ Token t (lex_.next ());
+
+ Pattern xsd_name;
+
+ try
+ {
+ xsd_name = t.lexeme ();
+ }
+ catch (Format const& ex)
+ {
+ e << path_ << ":" << t.line () << ": invalid namespace pattern: "
+ << ex.description ().c_str () << endl;
+ return false;
+ }
+
+ if (t.type () != Token::token)
+ {
+ e << path_ << ":" << t.line () << ": expected XML namespace "
+ << "instead of '" << xsd_name << "'" << endl;
+ return false;
+ }
+
+
+ // See if we've got optional C++ mapping.
+ //
+ t = lex_.next ();
+
+ bool has_cxx_name (false);
+ String cxx_name;
+
+ if (t.type () != Token::token)
+ {
+ if (t.lexeme () != L"{")
+ {
+ e << path_ << ":" << t.line () << ": expected C++ namespace or '{' "
+ << "instead of '" << t.lexeme () << "'" << endl;
+ return false;
+ }
+ }
+ else
+ {
+ has_cxx_name = true;
+ cxx_name = t.lexeme ();
+ }
+
+ // Swallow '{' if needed.
+ //
+ if (has_cxx_name)
+ {
+ t = lex_.next ();
+
+ if (t.type () != Token::punct || t.lexeme () != L"{")
+ {
+ e << path_ << ":" << t.line () << ": expected '{' instead of '"
+ << t.lexeme () << "'" << endl;
+ return false;
+ }
+ }
+
+ Namespace n (xsd_name, has_cxx_name, cxx_name);
+
+ // Parse namespace body.
+ //
+ for (t = lex_.next ();; t = lex_.next ())
+ {
+ String l (t.lexeme ());
+
+ if (l == L"include")
+ {
+ if (!include (n))
+ return false;
+ }
+ else if (l == L"type" || t.type () == Token::token)
+ {
+ // Type mapping can have 'type' specifier omitted.
+ //
+ if (l == L"type")
+ t = lex_.next ();
+
+ if (!type (t, n))
+ return false;
+ }
+ else if (t.type () == Token::punct && l == L"}")
+ {
+ break;
+ }
+ else
+ {
+ e << path_ << ":" << t.line () << ": unexpected '" << l << "'"
+ << endl;
+ return false;
+ }
+ }
+
+ if (cxx_name || n.types_begin () != n.types_end () ||
+ n.includes_begin () != n.includes_end ())
+ {
+ ns.push_back (n);
+ }
+
+ return true;
+ }
+
+ bool Parser::
+ include (Namespace& n)
+ {
+ Token t (lex_.next ());
+
+ String path (t.lexeme ());
+
+ if (t.type () != Token::token)
+ {
+ e << path_ << ":" << t.line () << ": expected include path "
+ << "instead of '" << path << "'" << endl;
+ return false;
+ }
+
+ if (path && path[0] == L'<')
+ n.includes_push_back (path);
+ else
+ n.includes_push_back (L'"' + path + L'"');
+
+ t = lex_.next ();
+
+ if (t.type () != Token::punct || t.lexeme () != L";")
+ {
+ e << path_ << ":" << t.line () << ": expected ';' after '"
+ << path << "'" << endl;
+ return false;
+ }
+
+ return true;
+ }
+
+ bool Parser::
+ type (Token t, Namespace& n)
+ {
+ Pattern xsd_name;
+
+ try
+ {
+ xsd_name = t.lexeme ();
+ }
+ catch (Format const& ex)
+ {
+ e << path_ << ":" << t.line () << ": invalid namespace pattern: "
+ << ex.description ().c_str () << endl;
+ return false;
+ }
+
+ if (t.type () != Token::token)
+ {
+ e << path_ << ":" << t.line () << ": expected XML Schema type name "
+ << "instead of '" << xsd_name << "'" << endl;
+ return false;
+ }
+
+ t = lex_.next ();
+ String cxx_ret_name (t.lexeme ());
+
+ if (t.type () != Token::token)
+ {
+ e << path_ << ":" << t.line () << ": expected C++ type name "
+ << "instead of '" << cxx_ret_name << "'" << endl;
+ return false;
+ }
+
+ t = lex_.next ();
+
+ String cxx_arg_name;
+
+ // See if we've got optional argument type.
+ //
+ if (t.type () == Token::token)
+ {
+ cxx_arg_name = t.lexeme ();
+ t = lex_.next ();
+ }
+
+ if (t.type () != Token::punct || t.lexeme () != L";")
+ {
+ e << path_ << ":" << t.line () << ": expected ';' after '"
+ << cxx_arg_name << "'" << endl;
+ return false;
+ }
+
+ n.types_push_back (xsd_name, cxx_ret_name, cxx_arg_name);
+
+ return true;
+ }
+}
diff --git a/xsd/type-map/parser.hxx b/xsd/type-map/parser.hxx
new file mode 100644
index 0000000..ec9ea49
--- /dev/null
+++ b/xsd/type-map/parser.hxx
@@ -0,0 +1,41 @@
+// file : xsd/type-map/parser.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_TYPE_MAP_PARSER_HXX
+#define XSD_TYPE_MAP_PARSER_HXX
+
+#include <xsd/types.hxx>
+
+#include <xsd/type-map/type-map.hxx>
+#include <xsd/type-map/lexer.hxx>
+
+namespace TypeMap
+{
+ class Parser
+ {
+ public:
+ Parser (Lexer&, String const& path);
+
+ // Merge parsed namespaces.
+ //
+ bool
+ parse (Namespaces&);
+
+ private:
+ bool
+ namespace_ (Namespaces&);
+
+ bool
+ include (Namespace&);
+
+ bool
+ type (Lexer::Token, Namespace&);
+
+ private:
+ Lexer& lex_;
+ String path_;
+ std::wostream& e;
+ };
+}
+
+#endif // XSD_TYPE_MAP_PARSER_HXX
diff --git a/xsd/type-map/type-map.hxx b/xsd/type-map/type-map.hxx
new file mode 100644
index 0000000..dd2ec2c
--- /dev/null
+++ b/xsd/type-map/type-map.hxx
@@ -0,0 +1,178 @@
+// file : xsd/type-map/type-map.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_XSD_TYPE_MAP_TYPE_MAP_HXX
+#define XSD_XSD_TYPE_MAP_TYPE_MAP_HXX
+
+#include <vector>
+
+#include <libcutl/re.hxx>
+
+#include <xsd/types.hxx>
+
+namespace TypeMap
+{
+ typedef cutl::re::wregex Pattern;
+
+ class Type
+ {
+ public:
+ Type (String const& xsd_name,
+ String const& cxx_ret_name,
+ String const& cxx_arg_name)
+ : xsd_name_ (xsd_name),
+ cxx_ret_name_ (cxx_ret_name),
+ cxx_arg_name_ (cxx_arg_name)
+ {
+ }
+
+ Type (Pattern const& xsd_name,
+ String const& cxx_ret_name,
+ String const& cxx_arg_name)
+ : xsd_name_ (xsd_name),
+ cxx_ret_name_ (cxx_ret_name),
+ cxx_arg_name_ (cxx_arg_name)
+ {
+ }
+
+ Pattern const&
+ xsd_name () const
+ {
+ return xsd_name_;
+ }
+
+ String const&
+ cxx_ret_name () const
+ {
+ return cxx_ret_name_;
+ }
+
+ String const&
+ cxx_arg_name () const
+ {
+ return cxx_arg_name_;
+ }
+
+ private:
+ Pattern xsd_name_;
+ String cxx_ret_name_;
+ String cxx_arg_name_;
+ };
+
+ class Namespace
+ {
+ public:
+ Namespace (String const& xsd_name)
+ : xsd_name_ (xsd_name), has_cxx_name_ (false)
+ {
+ }
+
+ Namespace (Pattern const& xsd_name)
+ : xsd_name_ (xsd_name), has_cxx_name_ (false)
+ {
+ }
+
+ Namespace (Pattern const& xsd_name, String const& cxx_name)
+ : xsd_name_ (xsd_name), has_cxx_name_ (true), cxx_name_ (cxx_name)
+ {
+ }
+
+ Namespace (Pattern const& xsd_name,
+ bool has_cxx_name,
+ String const& cxx_name)
+ : xsd_name_ (xsd_name),
+ has_cxx_name_ (has_cxx_name),
+ cxx_name_ (cxx_name)
+ {
+ }
+
+ //
+ //
+ typedef std::vector<String> Includes;
+ typedef Includes::const_iterator IncludesIterator;
+
+ IncludesIterator
+ includes_begin () const
+ {
+ return includes_.begin ();
+ }
+
+ IncludesIterator
+ includes_end () const
+ {
+ return includes_.end ();
+ }
+
+ void
+ includes_push_back (String const& i)
+ {
+ includes_.push_back (i);
+ }
+
+ //
+ //
+ typedef std::vector<Type> Types;
+ typedef Types::const_iterator TypesIterator;
+
+ TypesIterator
+ types_begin () const
+ {
+ return types_.begin ();
+ }
+
+ TypesIterator
+ types_end () const
+ {
+ return types_.end ();
+ }
+
+ void
+ types_push_back (String const& xsd_type,
+ String const& cxx_ret_type,
+ String const& cxx_arg_type = L"")
+ {
+ types_.push_back (Type (xsd_type, cxx_ret_type, cxx_arg_type));
+ }
+
+ void
+ types_push_back (Pattern const& xsd_type,
+ String const& cxx_ret_type,
+ String const& cxx_arg_type = L"")
+ {
+ types_.push_back (Type (xsd_type, cxx_ret_type, cxx_arg_type));
+ }
+
+ //
+ //
+ Pattern const&
+ xsd_name () const
+ {
+ return xsd_name_;
+ }
+
+ //
+ //
+ bool
+ has_cxx_name () const
+ {
+ return has_cxx_name_;
+ }
+
+ String const&
+ cxx_name () const
+ {
+ return cxx_name_;
+ }
+
+ private:
+ Includes includes_;
+ Types types_;
+ Pattern xsd_name_;
+ bool has_cxx_name_;
+ String cxx_name_;
+ };
+
+ typedef std::vector<Namespace> Namespaces;
+}
+
+#endif // XSD_XSD_TYPE_MAP_TYPE_MAP_HXX
diff --git a/xsd/types.hxx b/xsd/types.hxx
new file mode 100644
index 0000000..b3306dd
--- /dev/null
+++ b/xsd/types.hxx
@@ -0,0 +1,19 @@
+// file : xsd/types.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_TYPES_HXX
+#define XSD_TYPES_HXX
+
+#include <vector>
+#include <cstddef> // std::size_t
+
+#include <libxsd-frontend/types.hxx>
+
+using std::size_t;
+
+using XSDFrontend::String;
+using XSDFrontend::NarrowString;
+
+typedef std::vector<NarrowString> NarrowStrings;
+
+#endif // XSD_TYPES_HXX
diff --git a/xsd/version b/xsd/version
deleted file mode 100644
index fcdb2e1..0000000
--- a/xsd/version
+++ /dev/null
@@ -1 +0,0 @@
-4.0.0
diff --git a/xsd/version.hxx.in b/xsd/version.hxx.in
new file mode 100644
index 0000000..9bfd8a8
--- /dev/null
+++ b/xsd/version.hxx.in
@@ -0,0 +1,55 @@
+// file : xsd/version.hxx.in
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_VERSION // Note: using the version macro itself.
+
+// The numeric version format is AAAAABBBBBCCCCCDDDE where:
+//
+// AAAAA - major version number
+// BBBBB - minor version number
+// CCCCC - bugfix version number
+// DDD - alpha / beta (DDD + 500) version number
+// E - final (0) / snapshot (1)
+//
+// When DDDE is not 0, 1 is subtracted from AAAAABBBBBCCCCC. For example:
+//
+// Version AAAAABBBBBCCCCCDDDE
+//
+// 0.1.0 0000000001000000000
+// 0.1.2 0000000001000020000
+// 1.2.3 0000100002000030000
+// 2.2.0-a.1 0000200001999990010
+// 3.0.0-b.2 0000299999999995020
+// 2.2.0-a.1.z 0000200001999990011
+//
+#define XSD_VERSION $xsd.version.project_number$ULL
+#define XSD_VERSION_STR "$xsd.version.project$"
+#define XSD_VERSION_ID "$xsd.version.project_id$"
+#define XSD_VERSION_FULL "$xsd.version$"
+
+#define XSD_VERSION_MAJOR $xsd.version.major$
+#define XSD_VERSION_MINOR $xsd.version.minor$
+#define XSD_VERSION_PATCH $xsd.version.patch$
+
+#define XSD_PRE_RELEASE $xsd.version.pre_release$
+
+#define XSD_SNAPSHOT $xsd.version.snapshot_sn$ULL
+#define XSD_SNAPSHOT_ID "$xsd.version.snapshot_id$"
+
+#include <xercesc/util/XercesVersion.hpp>
+
+// Check that we have a compatible Xerces version (3.0.0 or later).
+//
+#if _XERCES_VERSION < 30000
+# error Xerces-C++ 2-series is not supported
+#endif
+
+#include <libcutl/version.hxx>
+
+$libcutl.check(LIBCUTL_VERSION, LIBCUTL_SNAPSHOT)$
+
+#include <libxsd-frontend/version.hxx>
+
+$libxsd_frontend.check(LIBXSD_FRONTEND_VERSION, LIBXSD_FRONTEND_SNAPSHOT)$
+
+#endif // XSD_VERSION
diff --git a/xsd/xsd.cxx b/xsd/xsd.cxx
new file mode 100644
index 0000000..d2b0faf
--- /dev/null
+++ b/xsd/xsd.cxx
@@ -0,0 +1,1157 @@
+// file : xsd/xsd.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <map>
+#include <vector>
+#include <memory> // std::unique_ptr
+#include <cstddef> // std::size_t
+#include <iostream>
+#include <fstream>
+
+#include <xercesc/util/PlatformUtils.hpp>
+
+#include <libcutl/re.hxx>
+
+#include <libxsd-frontend/parser.hxx>
+#include <libxsd-frontend/transformations/anonymous.hxx>
+#include <libxsd-frontend/transformations/enum-synthesis.hxx>
+#include <libxsd-frontend/transformations/restriction.hxx>
+#include <libxsd-frontend/transformations/schema-per-type.hxx>
+#include <libxsd-frontend/transformations/simplifier.hxx>
+
+#include <xsd/version.hxx>
+
+#include <xsd/cxx/tree/options.hxx>
+#include <xsd/cxx/parser/options.hxx>
+
+#include <xsd/cxx/tree/generator.hxx>
+#include <xsd/cxx/parser/generator.hxx>
+
+#include <xsd/processing/cardinality/processor.hxx>
+#include <xsd/processing/inheritance/processor.hxx>
+
+#include <xsd/xsd.hxx>
+#include <xsd/types.hxx>
+#include <xsd/options.hxx>
+
+namespace SemanticGraph = XSDFrontend::SemanticGraph;
+namespace Transformations = XSDFrontend::Transformations;
+
+using namespace std;
+
+//
+//
+struct LocationTranslator: XSDFrontend::LocationTranslator
+{
+ struct Failed {};
+
+ LocationTranslator (NarrowStrings const& map,
+ NarrowStrings const& regex,
+ bool trace);
+
+ virtual NarrowString
+ translate (NarrowString const&);
+
+private:
+ typedef map<NarrowString, NarrowString> Map;
+
+ typedef cutl::re::regexsub Regex;
+ typedef cutl::re::format RegexFormat;
+ typedef vector<Regex> RegexVector;
+
+ typedef map<NarrowString, NarrowString> Cache;
+
+ Map map_;
+ RegexVector regex_;
+ Cache cache_;
+ bool trace_;
+};
+
+//
+//
+struct AnonymousNameTranslator: Transformations::AnonymousNameTranslator
+{
+ struct Failed {};
+
+ AnonymousNameTranslator (NarrowStrings const& regex, bool trace);
+
+ virtual String
+ translate (String const& file,
+ String const& ns,
+ String const& name,
+ String const& xpath);
+
+private:
+ typedef cutl::re::wregexsub Regex;
+ typedef cutl::re::wformat RegexFormat;
+ typedef vector<Regex> RegexVector;
+
+ RegexVector regex_;
+ bool trace_;
+
+};
+
+//
+//
+struct SchemaPerTypeTranslator: Transformations::SchemaPerTypeTranslator
+{
+ struct Failed {};
+
+ SchemaPerTypeTranslator (NarrowStrings const& type_regex,
+ bool type_trace,
+ NarrowStrings const& schema_regex,
+ bool schema_trace);
+
+ virtual String
+ translate_type (String const& ns, String const& name);
+
+ virtual NarrowString
+ translate_schema (NarrowString const& file);
+
+private:
+ typedef cutl::re::wregexsub TypeRegex;
+ typedef cutl::re::wformat TypeRegexFormat;
+ typedef vector<TypeRegex> TypeRegexVector;
+
+ TypeRegexVector type_regex_;
+ bool type_trace_;
+
+ typedef cutl::re::regexsub SchemaRegex;
+ typedef cutl::re::format SchemaRegexFormat;
+ typedef vector<SchemaRegex> SchemaRegexVector;
+
+ SchemaRegexVector schema_regex_;
+ bool schema_trace_;
+};
+
+//
+//
+struct XercesInitializer
+{
+ XercesInitializer ()
+ {
+ xercesc::XMLPlatformUtils::Initialize ();
+ }
+
+ ~XercesInitializer ()
+ {
+ xercesc::XMLPlatformUtils::Terminate ();
+ }
+};
+
+// Expand the \n escape sequence.
+//
+void
+expand_nl (NarrowString& s);
+
+int
+main (int argc, char* argv[])
+{
+ wostream& e (wcerr);
+
+ try
+ {
+ cli::argv_file_scanner args (argc, argv, "--options-file");
+ help_options help_ops (args, cli::unknown_mode::stop);
+
+ // Handle --build2-metadata (see also buildfile).
+ //
+ if (help_ops.build2_metadata_specified ())
+ {
+ wostream& o (wcout);
+
+ // Note that the export.metadata variable should be the first non-
+ // blank/comment line.
+ //
+ o << "# build2 buildfile xsd" << endl
+ << "export.metadata = 1 xsd" << endl
+ << "xsd.name = [string] xsd" << endl
+ << "xsd.version = [string] '" << XSD_VERSION_FULL << '\'' << endl
+ << "xsd.checksum = [string] '" << XSD_VERSION_FULL << '\'' << endl;
+
+ return 0;
+ }
+
+ NarrowString cmd;
+ if (args.more ())
+ cmd = args.next ();
+
+ if (help_ops.version () || cmd == "version")
+ {
+ wostream& o (wcout);
+
+ o << "CodeSynthesis XSD XML Schema to C++ compiler " <<
+ XSD_VERSION_STR << endl
+ << "Copyright (c) " << XSD_COPYRIGHT << "." << endl;
+
+ if (!help_ops.proprietary_license () && cmd == "version")
+ {
+ // Parse the options after the command to detect trailing
+ // --proprietary-license.
+ //
+ help_ops = help_options (args, cli::unknown_mode::stop);
+ }
+
+ if (help_ops.proprietary_license ())
+ {
+ o << "The compiler was invoked in the Proprietary License mode. You "
+ << "should have\nreceived a proprietary license from Code Synthesis "
+ << "that entitles you to\nuse it in this mode." << endl;
+ }
+ else
+ {
+ o << "This is free software; see the source for copying conditions. "
+ << "There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS "
+ << "FOR A PARTICULAR PURPOSE." << endl;
+ }
+
+ return 0;
+ }
+
+ if (help_ops.help () || cmd == "help")
+ {
+ wostream& o (wcout);
+
+ if (cmd == "help" && args.more ())
+ {
+ NarrowString arg (args.next ());
+
+ if (arg == "cxx-tree")
+ {
+ o << "Usage: " << argv[0] << " cxx-tree [options] file [file ...]"
+ << endl
+ << "Options:" << endl;
+
+ CXX::Tree::Generator::usage ();
+ }
+ else if (arg == "cxx-parser")
+ {
+ o << "Usage: " << argv[0] << " cxx-parser [options] file [file ...]"
+ << endl
+ << "Options:" << endl;
+
+ CXX::Parser::Generator::usage ();
+ }
+ else
+ {
+ o << "error: unknown command '" << arg.c_str () << "'" << endl
+ << "info: try '" << argv[0] << " help' for the list of commands"
+ << endl;
+
+ return 1;
+ }
+
+ // Add frontend options at the end.
+ //
+ options::print_usage (o);
+ }
+ else
+ {
+ o << "Usage: " << argv[0] << " <cmd> ..." << endl
+ << "Commands:" << endl;
+
+ o << " help Print usage information and exit. Use\n"
+ << " 'help <cmd>' for command-specific options."
+ << endl;
+
+ o << " version Print version and exit."
+ << endl;
+
+ o << " cxx-tree Generate the C++/Tree mapping."
+ << endl;
+
+ o << " cxx-parser Generate the C++/Parser mapping."
+ << endl;
+ }
+
+ return 0;
+ }
+
+ if (cmd.empty ())
+ {
+ e << "error: no command specified" << endl
+ << "info: try '" << argv[0] << " help' for usage information" << endl;
+
+ return 1;
+ }
+
+ if (cmd != "cxx-tree" && cmd != "cxx-parser")
+ {
+ e << "error: unknown command '" << cmd.c_str () << "'" << endl
+ << "info: try '" << argv[0] << " help' for the list of commands"
+ << endl;
+
+ return 1;
+ }
+
+ // We need to parse command line options before we can get to
+ // the arguments.
+ //
+ unique_ptr<CXX::Tree::options> tree_ops (
+ cmd == "cxx-tree" ? new CXX::Tree::options (args) : 0);
+
+ unique_ptr<CXX::Parser::options> parser_ops (
+ cmd == "cxx-parser" ? new CXX::Parser::options (args) : 0);
+
+ CXX::options& common_ops (
+ cmd == "cxx-tree"
+ ? static_cast<CXX::options&> (*tree_ops)
+ : static_cast<CXX::options&> (*parser_ops));
+
+ // Validate options.
+ //
+ if (common_ops.file_list_only () && !common_ops.file_list_specified ())
+ {
+ e << "error: --file-list-only specified without --file-list" << endl;
+ return 1;
+ }
+
+ // Disabled warnings.
+ //
+ WarningSet disabled_w;
+ {
+ NarrowStrings const& w (common_ops.disable_warning ());
+
+ for (NarrowStrings::const_iterator i (w.begin ()); i != w.end (); ++i)
+ disabled_w.insert (*i);
+ }
+
+ bool disabled_w_all (disabled_w.find ("all") != disabled_w.end ());
+
+ if (common_ops.morph_anonymous () &&
+ !disabled_w_all &&
+ disabled_w.find ("D001") == disabled_w.end ())
+ {
+ e << "warning D001: the --morph-anonymous option is on by default and "
+ << "no longer required"
+ << endl;
+ }
+
+ // Collect all the files to compile in a vector.
+ //
+ NarrowStrings files;
+
+ while (args.more ())
+ files.push_back (args.next ());
+
+ if (files.empty ())
+ {
+ e << "error: no input file specified" << endl;
+ return 1;
+ }
+
+ bool fpt (common_ops.file_per_type ());
+
+ if (cmd == "cxx-tree" || cmd == "cxx-parser")
+ {
+ bool gen (common_ops.generate_xml_schema ());
+ bool use (common_ops.extern_xml_schema ());
+
+ // Things get complicated when we are compiling several schemas at
+ // once (non-file-per-type mode) and use the --generate-xml-schema/
+ // --extern-xml-schema options. The only way we can figure out which
+ // file corresponds to XML Schema is if the --extern-xml-schema option
+ // is also present. So we are going to require it for this case,
+ // especially since it generally makes sense.
+ //
+ if (!fpt)
+ {
+ if (files.size () > 1 && gen && !use)
+ {
+ e << "error: --extern-xml-schema is required when compiling more "
+ << "than one schema and --generate-xml-schema is specified"
+ << endl;
+
+ return 1;
+ }
+
+ if (files.size () == 1 && gen && use)
+ {
+ e << "error: --generate-xml-schema and --extern-xml-schema are "
+ << "mutually exclusive when compiling a single schema" << endl;
+
+ return 1;
+ }
+ }
+ else
+ {
+ // The --file-per-type and --generate-xml-schema options are
+ // incompatible. It also makes sense to use --file-per-type
+ // and --extern-xml-schema.
+ //
+ if (gen)
+ {
+ e << "error: --file-per-type and --generate-xml-schema are "
+ << "incompatible" << endl
+ << "info: use --generate-xml-schema in a separate invocation "
+ << "of the compiler" << endl;
+
+ return 1;
+ }
+
+ if (!use &&
+ !disabled_w_all && disabled_w.find ("D002") == disabled_w.end ())
+ {
+ e << "warning D002: --extern-xml-schema is recommended when "
+ << "--file-per-type is specified to reduce generated code size"
+ << endl;
+ }
+ }
+ }
+
+ //
+ //
+ FileList file_list;
+ AutoUnlinks unlinks;
+ size_t sloc (0);
+
+ LocationTranslator loc_translator (
+ common_ops.location_map (),
+ common_ops.location_regex (),
+ common_ops.location_regex_trace ());
+
+ AnonymousNameTranslator anon_translator (
+ common_ops.anonymous_regex (),
+ common_ops.anonymous_regex_trace ());
+
+ // Load custom string literals, if any.
+ //
+ CXX::StringLiteralMap string_literal_map;
+
+ if (NarrowString file = common_ops.custom_literals ())
+ {
+ XercesInitializer xerces_init;
+
+ if (!CXX::read_literal_map (file, string_literal_map))
+ {
+ // Diagnostics has already been issued.
+ //
+ return 1;
+ }
+ }
+
+ if (!fpt)
+ {
+ // File-per-schema compilation mode.
+ //
+
+ for (size_t i (0); i < files.size (); ++i)
+ {
+ // Parse schema.
+ //
+ SemanticGraph::Path tu;
+
+ try
+ {
+ tu = SemanticGraph::Path (files[i]);
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
+ e << "error: '" << files[i].c_str () << "' is not a valid "
+ << "filesystem path" << endl;
+
+ return 1;
+ }
+
+ XSDFrontend::Parser parser (
+ cmd != "cxx-tree",
+ !common_ops.disable_multi_import (),
+ !common_ops.disable_full_check (),
+ loc_translator,
+ disabled_w);
+
+ unique_ptr<SemanticGraph::Schema> schema;
+
+ if (cmd == "cxx-tree" || cmd == "cxx-parser")
+ {
+ // See if we are generating code for the XML Schema namespace.
+ // We could be compiling several schemas at once in which case
+ // handling of the --generate-xml-schema option gets tricky: we
+ // will need to rely on the presence of the --extern-xml-schema
+ // to tell us which (fake) schema file corresponds to XML Schema.
+ //
+ bool gen_xml_schema (common_ops.generate_xml_schema ());
+
+ if (gen_xml_schema)
+ {
+ if (NarrowString name = common_ops.extern_xml_schema ())
+ {
+ if (tu.string () != name)
+ gen_xml_schema = false;
+ }
+ }
+
+ if (gen_xml_schema)
+ schema = parser.xml_schema (tu);
+ else
+ schema = parser.parse (tu);
+ }
+ else
+ schema = parser.parse (tu);
+
+ // Morph anonymous types.
+ //
+ if (!common_ops.preserve_anonymous ())
+ {
+ try
+ {
+ Transformations::Anonymous trans (anon_translator);
+ trans.transform (*schema, tu, true);
+ }
+ catch (Transformations::Anonymous::Failed const&)
+ {
+ return 1; // Diagnostic has already been issued.
+ }
+ }
+
+ // Synthesize enumerations from unions.
+ //
+ if (cmd == "cxx-tree")
+ {
+ Transformations::EnumSynthesis trans;
+ trans.transform (*schema, tu);
+ }
+
+ // Simplify the schema graph.
+ //
+ if (cmd == "cxx-parser")
+ {
+ Transformations::Simplifier trans;
+ trans.transform (*schema, tu);
+ }
+
+ // Try to rearrange definitions so that there is no forward
+ // inheritance.
+ //
+ try
+ {
+ Processing::Inheritance::Processor proc;
+ proc.process (*schema, tu);
+ }
+ catch (Processing::Inheritance::Processor::Failed const&)
+ {
+ return 1; // Diagnostic has already been issued.
+ }
+
+ // Normalize and annotate complex content restrictions.
+ //
+ if (cmd == "cxx-parser")
+ {
+ try
+ {
+ Transformations::Restriction trans;
+ trans.transform (*schema, tu);
+ }
+ catch (Transformations::Restriction::Failed const&)
+ {
+ return 1; // Diagnostic has already been issued.
+ }
+ }
+
+ // Calculate cardinality.
+ //
+ {
+ Processing::Cardinality::Processor proc;
+ proc.process (*schema, tu);
+ }
+
+ // Generate mapping.
+ //
+ if (cmd == "cxx-tree")
+ {
+ try
+ {
+ sloc += CXX::Tree::Generator::generate (
+ *tree_ops,
+ *schema,
+ tu,
+ false,
+ string_literal_map,
+ disabled_w,
+ file_list,
+ unlinks);
+ }
+ catch (CXX::Tree::Generator::Failed const&)
+ {
+ // Diagnostic has already been issued.
+ //
+ return 1;
+ }
+ }
+ else if (cmd == "cxx-parser")
+ {
+ try
+ {
+ sloc += CXX::Parser::Generator::generate (
+ *parser_ops,
+ *schema,
+ tu,
+ false,
+ string_literal_map,
+ true,
+ disabled_w,
+ file_list,
+ unlinks);
+ }
+ catch (CXX::Parser::Generator::Failed const&)
+ {
+ // Diagnostic has already been issued.
+ //
+ return 1;
+ }
+ }
+ }
+ }
+ else
+ {
+ // File-per-type compilation mode.
+ //
+ SemanticGraph::Paths paths;
+
+ for (size_t i (0); i < files.size (); ++i)
+ {
+ try
+ {
+ paths.push_back (SemanticGraph::Path (files[i]));
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
+ e << "error: '" << files[i].c_str () << "' is not a valid "
+ << "filesystem path" << endl;
+
+ return 1;
+ }
+ }
+
+ if (cmd == "cxx-parser" &&
+ paths.size () > 1 &&
+ parser_ops->generate_test_driver ())
+ {
+ e << "info: generating test driver for the first schema only: '" <<
+ paths[0] << "'" << endl;
+ }
+
+ XSDFrontend::Parser parser (
+ cmd != "cxx-tree",
+ !common_ops.disable_multi_import (),
+ !common_ops.disable_full_check (),
+ loc_translator,
+ disabled_w);
+
+ unique_ptr<SemanticGraph::Schema> schema (parser.parse (paths));
+
+ // Morph anonymous types.
+ //
+ if (!common_ops.preserve_anonymous ())
+ {
+ try
+ {
+ Transformations::Anonymous trans (anon_translator);
+ trans.transform (*schema, SemanticGraph::Path (), false);
+ }
+ catch (Transformations::Anonymous::Failed const&)
+ {
+ return 1; // Diagnostic has already been issued.
+ }
+ }
+
+ // Synthesize enumerations from unions.
+ //
+ if (cmd == "cxx-tree")
+ {
+ Transformations::EnumSynthesis trans;
+ trans.transform (*schema, SemanticGraph::Path ());
+ }
+
+ // Simplify the schema graph.
+ //
+ if (cmd == "cxx-parser")
+ {
+ Transformations::Simplifier trans;
+ trans.transform (*schema, SemanticGraph::Path ());
+ }
+
+ // Normalize and annotate complex content restrictions.
+ //
+ if (cmd == "cxx-parser")
+ {
+ try
+ {
+ Transformations::Restriction trans;
+ trans.transform (*schema, SemanticGraph::Path ());
+ }
+ catch (Transformations::Restriction::Failed const&)
+ {
+ return 1; // Diagnostic has already been issued.
+ }
+ }
+
+ // Calculate cardinality.
+ //
+ {
+ Processing::Cardinality::Processor proc;
+ proc.process (*schema, SemanticGraph::Path ());
+ }
+
+ // Rearrange the graph so that each type is in a seperate
+ // schema file.
+ //
+ typedef vector<SemanticGraph::Schema*> Schemas;
+
+ SchemaPerTypeTranslator type_translator (
+ common_ops.type_file_regex (),
+ common_ops.type_file_regex_trace (),
+ common_ops.schema_file_regex (),
+ common_ops.schema_file_regex_trace ());
+
+ Transformations::SchemaPerType trans (
+ type_translator,
+ common_ops.fat_type_file ());
+
+ Schemas schemas (trans.transform (*schema));
+
+ // Generate code.
+ //
+ for (Schemas::iterator b (schemas.begin ()), i (b), e (schemas.end ());
+ i != e; ++i)
+ {
+ SemanticGraph::Schema& s (**i);
+ SemanticGraph::Path path (
+ s.context ().count ("renamed")
+ ? s.context ().get<SemanticGraph::Path> ("renamed")
+ : s.used_begin ()->path ());
+
+ if (cmd == "cxx-tree")
+ {
+ try
+ {
+ sloc += CXX::Tree::Generator::generate (
+ *tree_ops,
+ s,
+ path,
+ true,
+ string_literal_map,
+ disabled_w,
+ file_list,
+ unlinks);
+ }
+ catch (CXX::Tree::Generator::Failed const&)
+ {
+ // Diagnostic has already been issued.
+ //
+ return 1;
+ }
+ }
+ else if (cmd == "cxx-parser")
+ {
+ try
+ {
+ // Only generate driver for the first schema.
+ //
+ sloc += CXX::Parser::Generator::generate (
+ *parser_ops,
+ s,
+ path,
+ true,
+ string_literal_map,
+ i == b,
+ disabled_w,
+ file_list,
+ unlinks);
+ }
+ catch (CXX::Parser::Generator::Failed const&)
+ {
+ // Diagnostic has already been issued.
+ //
+ return 1;
+ }
+ }
+ }
+ }
+
+ // See if we need to produce the file list.
+ //
+ if (NarrowString fl = common_ops.file_list ())
+ {
+ typedef std::ofstream OutputFileStream;
+
+ try
+ {
+ OutputFileStream ofs;
+ if (fl != "-")
+ {
+ SemanticGraph::Path path (fl);
+
+ ofs.open (path.string ().c_str (), ios_base::out);
+
+ if (!ofs.is_open ())
+ {
+ wcerr << path << ": error: unable to open in write mode" << endl;
+ return 1;
+ }
+ }
+
+ std::ostream& os (ofs.is_open () ? ofs : cout);
+
+ NarrowString d (common_ops.file_list_delim ());
+ expand_nl (d);
+
+ if (NarrowString p = common_ops.file_list_prologue ())
+ {
+ expand_nl (p);
+ os << p;
+ }
+
+ for (FileList::iterator i (file_list.begin ()), e (file_list.end ());
+ i != e;)
+ {
+ os << *i;
+
+ if (++i != e)
+ os << d;
+ }
+
+ if (NarrowString e = common_ops.file_list_epilogue ())
+ {
+ expand_nl (e);
+ os << e;
+ }
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
+ wcerr << "error: '" << fl.c_str () << "' is not a valid "
+ << "filesystem path" << endl;
+ return 1;
+ }
+ }
+
+ if (common_ops.show_sloc ())
+ e << "total: " << sloc << endl;
+
+ if (size_t sloc_limit = common_ops.sloc_limit ())
+ {
+ if (sloc_limit < sloc)
+ {
+ e << "error: SLOC limit of " << sloc_limit
+ << " lines has been exceeded" << endl;
+
+ return 1;
+ }
+ }
+
+ unlinks.cancel ();
+
+ return 0;
+ }
+ catch (LocationTranslator::Failed const&)
+ {
+ // Diagnostic has already been issued.
+ }
+ catch (AnonymousNameTranslator::Failed const&)
+ {
+ // Diagnostic has already been issued.
+ }
+ catch (SchemaPerTypeTranslator::Failed const&)
+ {
+ // Diagnostic has already been issued.
+ }
+ catch (Transformations::SchemaPerType::Failed const&)
+ {
+ // Diagnostic has already been issued.
+ }
+ catch (XSDFrontend::InvalidSchema const&)
+ {
+ // Diagnostic has already been issued.
+ }
+ catch (cli::exception const& ex)
+ {
+ wcerr << ex << endl;
+ wcerr << "try '" << argv[0] << " help' for usage information" << endl;
+ }
+
+ return 1;
+}
+
+// LocationTranslator
+//
+
+LocationTranslator::
+LocationTranslator (NarrowStrings const& map,
+ NarrowStrings const& regex,
+ bool trace)
+ : trace_ (trace)
+{
+ // Map.
+ //
+ for (NarrowStrings::const_iterator i (map.begin ()); i != map.end (); ++i)
+ {
+ // Split the string in two parts at the last '='.
+ //
+ size_t pos (i->rfind ('='));
+
+ if (pos == NarrowString::npos)
+ {
+ wcerr << "error: invalid location map: '" << i->c_str () <<
+ "': delimiter ('=') not found" << endl;
+
+ throw Failed ();
+ }
+
+ map_[NarrowString (*i, 0, pos)] = NarrowString (*i, pos + 1);
+ }
+
+ // Regex.
+ //
+ for (NarrowStrings::const_iterator i (regex.begin ()); i != regex.end (); ++i)
+ {
+ try
+ {
+ regex_.push_back (Regex (*i));
+ }
+ catch (RegexFormat const& e)
+ {
+ wcerr << "error: invalid location regex: '" <<
+ e.regex ().c_str () << "': " <<
+ e.description ().c_str () << endl;
+
+ throw Failed ();
+ }
+ }
+}
+
+NarrowString LocationTranslator::
+translate (NarrowString const& l)
+{
+ // First check the cache.
+ //
+ Cache::const_iterator ci (cache_.find (l));
+
+ if (ci != cache_.end ())
+ return ci->second;
+
+ // Then check the direct map.
+ //
+ Map::const_iterator mi (map_.find (l));
+
+ if (mi != map_.end ())
+ {
+ cache_[l] = mi->second;
+ return mi->second;
+ }
+
+ // Finally try regex.
+ //
+ if (trace_)
+ wcerr << "location: '" << l.c_str () << "'" << endl;
+
+ for (RegexVector::reverse_iterator i (regex_.rbegin ());
+ i != regex_.rend (); ++i)
+ {
+ if (trace_)
+ wcerr << "try: '" << i->regex ().str ().c_str () << "' : ";
+
+ if (i->match (l))
+ {
+ NarrowString r (i->replace (l));
+
+ if (trace_)
+ wcerr << "'" << r.c_str () << "' : +" << endl;
+
+ cache_[l] = r;
+ return r;
+ }
+
+ if (trace_)
+ wcerr << '-' << endl;
+ }
+
+ // No match - return the original location.
+ //
+ cache_[l] = l;
+ return l;
+}
+
+// AnonymousNameTranslator
+//
+
+AnonymousNameTranslator::
+AnonymousNameTranslator (NarrowStrings const& regex, bool trace)
+ : trace_ (trace)
+{
+ for (NarrowStrings::const_iterator i (regex.begin ()); i != regex.end (); ++i)
+ {
+ try
+ {
+ regex_.push_back (Regex (String (*i)));
+ }
+ catch (RegexFormat const& e)
+ {
+ wcerr << "error: invalid anonymous type regex: '" <<
+ e.regex () << "': " << e.description ().c_str () << endl;
+
+ throw Failed ();
+ }
+ }
+}
+
+String AnonymousNameTranslator::
+translate (String const& file,
+ String const& ns,
+ String const& name,
+ String const& xpath)
+{
+ String s (file + L' ' + ns + L' ' + xpath);
+
+ if (trace_)
+ wcerr << "anonymous type: '" << s << "'" << endl;
+
+ for (RegexVector::reverse_iterator i (regex_.rbegin ());
+ i != regex_.rend (); ++i)
+ {
+ if (trace_)
+ wcerr << "try: '" << i->regex () << "' : ";
+
+ if (i->match (s))
+ {
+ String r (i->replace (s));
+
+ if (trace_)
+ wcerr << "'" << r << "' : +" << endl;
+
+ return r;
+ }
+
+ if (trace_)
+ wcerr << '-' << endl;
+ }
+
+ // No match - return the name.
+ //
+ return name;
+}
+
+// SchemaPerTypeTranslator
+//
+
+SchemaPerTypeTranslator::
+SchemaPerTypeTranslator (NarrowStrings const& type_regex,
+ bool type_trace,
+ NarrowStrings const& schema_regex,
+ bool schema_trace)
+ : type_trace_ (type_trace), schema_trace_ (schema_trace)
+{
+ for (NarrowStrings::const_iterator i (type_regex.begin ());
+ i != type_regex.end (); ++i)
+ {
+ try
+ {
+ type_regex_.push_back (TypeRegex (String (*i)));
+ }
+ catch (TypeRegexFormat const& e)
+ {
+ wcerr << "error: invalid type file regex: '" <<
+ e.regex () << "': " << e.description ().c_str () << endl;
+
+ throw Failed ();
+ }
+ }
+
+ for (NarrowStrings::const_iterator i (schema_regex.begin ());
+ i != schema_regex.end (); ++i)
+ {
+ try
+ {
+ schema_regex_.push_back (SchemaRegex (*i));
+ }
+ catch (SchemaRegexFormat const& e)
+ {
+ wcerr << "error: invalid type file regex: '" <<
+ e.regex ().c_str () << "': " << e.description ().c_str () << endl;
+
+ throw Failed ();
+ }
+ }
+}
+
+String SchemaPerTypeTranslator::
+translate_type (String const& ns, String const& name)
+{
+ String s (ns + L' ' + name);
+
+ if (type_trace_)
+ wcerr << "type: '" << s << "'" << endl;
+
+ for (TypeRegexVector::reverse_iterator i (type_regex_.rbegin ());
+ i != type_regex_.rend (); ++i)
+ {
+ if (type_trace_)
+ wcerr << "try: '" << i->regex () << "' : ";
+
+ if (i->match (s))
+ {
+ String r (i->replace (s));
+
+ if (type_trace_)
+ wcerr << "'" << r << "' : +" << endl;
+
+ return r;
+ }
+
+ if (type_trace_)
+ wcerr << '-' << endl;
+ }
+
+ // No match - return empty string.
+ //
+ return L"";
+}
+
+NarrowString SchemaPerTypeTranslator::
+translate_schema (NarrowString const& file)
+{
+ if (schema_trace_)
+ wcerr << "schema: '" << file.c_str () << "'" << endl;
+
+ for (SchemaRegexVector::reverse_iterator i (schema_regex_.rbegin ());
+ i != schema_regex_.rend (); ++i)
+ {
+ if (schema_trace_)
+ wcerr << "try: '" << i->regex ().str ().c_str () << "' : ";
+
+ if (i->match (file))
+ {
+ NarrowString r (i->replace (file));
+
+ if (schema_trace_)
+ wcerr << "'" << r.c_str () << "' : +" << endl;
+
+ return r;
+ }
+
+ if (schema_trace_)
+ wcerr << '-' << endl;
+ }
+
+ // No match - return empty string.
+ //
+ return "";
+}
+
+//
+//
+void
+expand_nl (NarrowString& s)
+{
+ for (size_t i (0); i < s.size ();)
+ {
+ if (s[i] == '\\' && (i + 1) < s.size () && s[i + 1] == 'n')
+ {
+ NarrowString tmp (s, 0, i);
+ tmp += '\n';
+ tmp.append (s.c_str () + i + 2);
+ s = tmp;
+ }
+ else
+ ++i;
+ }
+}
diff --git a/xsd/xsd.hxx b/xsd/xsd.hxx
new file mode 100644
index 0000000..5ce2926
--- /dev/null
+++ b/xsd/xsd.hxx
@@ -0,0 +1,24 @@
+// file : xsd/xsd.hxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSD_XSD_HXX
+#define XSD_XSD_HXX
+
+#include <set>
+#include <vector>
+#include <cstdio> // std::remove
+
+#include <libcutl/shared-ptr.hxx>
+#include <libcutl/fs/auto-remove.hxx>
+
+#include <libxsd-frontend/semantic-graph/elements.hxx> // Path
+
+#include <xsd/types.hxx>
+
+typedef std::set<NarrowString> WarningSet;
+typedef std::vector<NarrowString> FileList;
+
+typedef cutl::fs::auto_remove AutoUnlink;
+typedef cutl::fs::auto_removes AutoUnlinks;
+
+#endif // XSD_XSD_HXX
diff --git a/xsd/xsd/cxx/elements.cxx b/xsd/xsd/cxx/elements.cxx
deleted file mode 100644
index dfa2f38..0000000
--- a/xsd/xsd/cxx/elements.cxx
+++ /dev/null
@@ -1,1320 +0,0 @@
-// file : xsd/cxx/elements.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/elements.hxx>
-
-#include <cctype> // std::toupper
-#include <memory>
-#include <sstream>
-#include <fstream>
-#include <cassert>
-#include <iostream>
-
-using std::wcerr;
-using std::endl;
-
-namespace CXX
-{
- //
- //
- wchar_t
- upcase (wchar_t c)
- {
- return std::toupper (c);
- }
-
- namespace
- {
- wchar_t const* keywords[] = {
- L"NULL",
- L"and",
- L"asm",
- L"auto",
- L"bitand",
- L"bitor",
- L"bool",
- L"break",
- L"case",
- L"catch",
- L"char",
- L"class",
- L"compl",
- L"const",
- L"const_cast",
- L"continue",
- L"default",
- L"delete",
- L"do",
- L"double",
- L"dynamic_cast",
- L"else",
- L"end_eq",
- L"enum",
- L"explicit",
- L"export",
- L"extern",
- L"false",
- L"float",
- L"for",
- L"friend",
- L"goto",
- L"if",
- L"inline",
- L"int",
- L"long",
- L"mutable",
- L"namespace",
- L"new",
- L"not",
- L"not_eq",
- L"operator",
- L"or",
- L"or_eq",
- L"private",
- L"protected",
- L"public",
- L"register",
- L"reinterpret_cast",
- L"return",
- L"short",
- L"signed",
- L"sizeof",
- L"static",
- L"static_cast",
- L"struct",
- L"switch",
- L"template",
- L"this",
- L"throw",
- L"true",
- L"try",
- L"typedef",
- L"typeid",
- L"typename",
- L"union",
- L"unsigned",
- L"using",
- L"virtual",
- L"void",
- L"volatile",
- L"wchar_t",
- L"while",
- L"xor",
- L"xor_eq"
- };
- }
-
- // Context
- //
-
- Context::
- Context (std::wostream& o,
- SemanticGraph::Schema& root,
- SemanticGraph::Path const& path,
- options_type const& ops,
- StringLiteralMap const* string_literal_map_)
- : os (o),
- schema_root (root),
- schema_path (schema_path_),
- options (ops),
- std (ops.std ()),
- char_type (char_type_),
- char_encoding (char_encoding_),
- L (L_),
- string_type (string_type_),
- auto_ptr (auto_ptr_),
- string_literal_map (string_literal_map_),
- type_exp (type_exp_),
- inst_exp (inst_exp_),
- inl (inl_),
- ns_mapping_cache (ns_mapping_cache_),
- schema_path_ (path),
- xs_ns_ (0),
- char_type_ (ops.char_type ()),
- char_encoding_ (ops.char_encoding ()),
- L_ (char_type == L"wchar_t" ? L"L" : L""),
- inl_ (ops.generate_inline () ? L"inline\n" : L""),
- cxx_id_expr_ (L"^(::)?([a-zA-Z_]\\w*)(::[a-zA-Z_]\\w*)*$"),
- cxx_id_expr (cxx_id_expr_),
- urn_mapping_ (L"#^urn.*:([a-zA-Z_].*)$#$1#"),
- urn_mapping (urn_mapping_),
- nsr_mapping (nsr_mapping_),
- nsm_mapping (nsm_mapping_),
- include_mapping (include_mapping_),
- reserved_name_map (reserved_name_map_),
- keyword_set (keyword_set_)
- {
- // Export symbol.
- //
- {
- String es (ops.export_symbol ());
- type_exp_ = es ? es + L" " : es;
- inst_exp_ = es ? es + L"\n" : es;
- }
-
- // Resolve and cache XML Schema namespace.
- //
- {
- SemanticGraph::Nameable* n;
-
- if (schema_root.names_begin ()->name () ==
- L"http://www.w3.org/2001/XMLSchema")
- {
- // schema_root is the XML Schema itself.
- //
- n = &schema_root.names_begin ()->named ();
- }
- else
- {
- // Otherwise, the first used schema is implied XML Schema.
- //
- SemanticGraph::Uses& u = *schema_root.uses_begin ();
- assert (u.is_a<SemanticGraph::Implies> ());
- n = &u.schema ().names_begin ()->named ();
- }
-
- xs_ns_ = dynamic_cast<SemanticGraph::Namespace*> (n);
- }
-
- // String type.
- //
- if (char_type == L"char")
- string_type_ = L"::std::string";
- else if (char_type == L"wchar_t")
- string_type_ = L"::std::wstring";
- else
- string_type_ = L"::std::basic_string< " + char_type + L" >";
-
- // Automatic pointer type.
- //
- auto_ptr_ = std >= cxx_version::cxx11
- ? "::std::unique_ptr"
- : "::std::auto_ptr";
-
- // Default encoding.
- //
- if (!char_encoding)
- {
- if (char_type == L"char")
- char_encoding = L"utf8";
- else
- char_encoding = L"auto";
- }
-
- // Default mapping.
- //
- nsr_mapping_.push_back (
- Regex (L"#^.* (.*?/)??" L"(([a-zA-Z_]\\w*)(/[a-zA-Z_]\\w*)*)/?$#$2#"));
- nsr_mapping_.push_back (
- Regex (L"#^.* http://www\\.w3\\.org/2001/XMLSchema$#xml_schema#"));
-
- // Custom regex mapping.
- //
- for (NarrowStrings::const_iterator i (ops.namespace_regex ().begin ()),
- e (ops.namespace_regex ().end ()); i != e; ++i)
- {
- nsr_mapping_.push_back (Regex (String (*i)));
- }
-
- // Custom direct mapping.
- //
- for (NarrowStrings::const_iterator i (ops.namespace_map ().begin ()),
- e (ops.namespace_map ().end ()); i != e; ++i)
- {
- String s (*i);
-
- // Split the string in two parts at the last '='.
- //
- size_t pos (s.rfind ('='));
-
- if (pos == String::npos)
- throw InvalidNamespaceMapping (s, "delimiter ('=') not found");
-
- // Empty xml_ns designates the no-namespace case.
- //
- String xml_ns (s, 0, pos);
- String cxx_ns (s, pos + 1);
-
- if (!cxx_ns.empty () && !cxx_id_expr.match (cxx_ns))
- throw InvalidNamespaceMapping (s, "invalid C++ identifier");
-
- nsm_mapping_[xml_ns] = cxx_ns;
- }
-
- // Include path regex
- //
- for (NarrowStrings::const_iterator i (ops.include_regex ().begin ()),
- e (ops.include_regex ().end ()); i != e; ++i)
- {
- include_mapping_.push_back (Regex (String (*i)));
- }
-
- // Reserved names.
- //
- for (NarrowStrings::const_iterator i (ops.reserved_name ().begin ()),
- e (ops.reserved_name ().end ()); i != e; ++i)
- {
- String s (*i);
-
- // Split the string in two parts at '='.
- //
- size_t pos (s.find ('='));
-
- if (pos == String::npos)
- reserved_name_map_[s] = L"";
- else
- reserved_name_map_[String (s, 0, pos)] = String (s, pos + 1);
- }
-
- // Populate the keyword set.
- //
- for (size_t i (0); i < sizeof (keywords) / sizeof (char*); ++i)
- keyword_set_.insert (keywords[i]);
- }
-
- String Context::
- ns_name (SemanticGraph::Namespace& ns)
- {
- using SemanticGraph::Schema;
- using SemanticGraph::Includes;
- using SemanticGraph::Imports;
- using SemanticGraph::Implies;
- using SemanticGraph::Sources;
-
- String tmp;
- MapMapping::const_iterator i (nsm_mapping.find (ns.name ()));
-
- if (i != nsm_mapping.end ())
- {
- tmp = i->second;
- }
- else
- {
- SemanticGraph::Path path;
- Schema& schema (dynamic_cast<Schema&> (ns.scope ()));
-
- if (schema.used_p ())
- {
- // Here we need to detect a special multi-schema compilation
- // case where the root schemas are imported into a special
- // schema that doesn't have a namespace.
- //
- SemanticGraph::Uses& u (*schema.used_begin ());
- SemanticGraph::Schema& s (u.user ());
-
- if (s.names_begin () != s.names_end ())
- path = u.path ();
- }
- else
- path = schema_path;
-
- String pair;
-
- if (!path.empty ())
- {
- path.normalize ();
-
- // Try to use the portable representation of the path. If that
- // fails, fall back to the native representation.
- //
- try
- {
- pair = path.posix_string ();
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- pair = path.string ();
- }
- }
-
- pair += L' ' + ns.name ();
-
- // Check cache first
- //
- MappingCache::const_iterator i (ns_mapping_cache.find (pair));
-
- if (i != ns_mapping_cache.end ())
- {
- tmp = i->second;
- }
- else
- {
- bool trace (options.namespace_regex_trace ());
-
- if (trace)
- wcerr << "namespace: '" << pair << "'" << endl;
-
- bool found (false);
- Regex colon (L"#/#::#");
-
- for (RegexMapping::const_reverse_iterator e (nsr_mapping.rbegin ());
- e != nsr_mapping.rend (); ++e)
- {
- if (trace)
- wcerr << "try: '" << e->regex () << "' : ";
-
- if (e->match (pair))
- {
- tmp = e->replace (pair);
- tmp = colon.replace (tmp); // replace `/' with `::'
-
- // Check the result.
- //
- found = cxx_id_expr.match (tmp);
-
- if (trace)
- wcerr << "'" << tmp << "' : ";
- }
-
- if (trace)
- wcerr << (found ? '+' : '-') << endl;
-
- if (found)
- break;
- }
-
- if (!found)
- {
- String const& n (ns.name ());
-
- // Check if the name is valid by itself.
- //
- if (n.empty ())
- {
- // Empty name denotes a no-namespace case.
- //
- tmp = n;
- }
- else
- {
- tmp = colon.replace (n); // replace `/' with `::'
-
- if (!cxx_id_expr.match (tmp))
- {
- // See if this is a urn-style namespace.
- //
- if (urn_mapping.match (n))
- {
- Regex filter (L"#[.:-]#_#");
- tmp = urn_mapping.replace (n);
- tmp = filter.replace (tmp);
-
- if (!cxx_id_expr.match (tmp))
- throw NoNamespaceMapping (
- ns.file (), ns.line (), ns.column (), ns.name ());
- }
- else
- throw NoNamespaceMapping (
- ns.file (), ns.line (), ns.column (), ns.name ());
- }
- }
- }
-
- // Add the mapping to the cache.
- //
- ns_mapping_cache[pair] = tmp;
- }
- }
-
-
- // Parse resulting namespace string and id() each name.
- //
- String r;
- String::size_type b (0), e;
-
- do
- {
- e = tmp.find (L"::", b);
-
- String name (tmp, b, e == tmp.npos ? e : e - b);
-
- if (!name.empty ())
- r += L"::" + escape (name);
-
- b = e;
-
- if (b == tmp.npos)
- break;
-
- b += 2;
-
- } while (true);
-
- return r;
- }
-
- SemanticGraph::Namespace& Context::
- xs_ns ()
- {
- return *xs_ns_;
- }
-
- String Context::
- xs_ns_name ()
- {
- return ns_name (*xs_ns_);
- }
-
- SemanticGraph::Namespace& Context::
- namespace_ (SemanticGraph::Nameable& n)
- {
- // The basic idea goes like this: go up Names edges until you
- // reach Namespace. There are, however, anonymous types which
- // need special handling. In the case of an anonymous type we
- // will go up the first Belongs edge (because the first edge
- // is where the type was defined.
- //
-
- if (n.named_p ())
- {
- SemanticGraph::Scope& s (n.scope ());
-
- SemanticGraph::Namespace* ns (
- dynamic_cast<SemanticGraph::Namespace*> (&n));
-
- return ns ? *ns : namespace_ (s);
- }
- else
- {
- SemanticGraph::Type& t (dynamic_cast<SemanticGraph::Type&> (n));
-
- SemanticGraph::Belongs& b (*t.classifies_begin ());
-
- return namespace_ (b.instance ());
- }
- }
-
- String Context::
- xml_ns_name (SemanticGraph::Nameable& n)
- {
- return namespace_ (n).name ();
- }
-
- String Context::
- fq_name (SemanticGraph::Nameable& n, char const* name_key)
- {
- using namespace SemanticGraph;
-
- String r;
-
- if (dynamic_cast<Schema*> (&n))
- {
- return L""; // Map to global namespace.
- }
- else if (SemanticGraph::Namespace* ns =
- dynamic_cast<SemanticGraph::Namespace*> (&n))
- {
- r = ns_name (*ns);
- }
- else
- {
- r = fq_name (n.scope ());
- r += L"::";
- r += n.context ().get<String> (name_key);
- }
-
- return r;
- }
-
- SemanticGraph::Type& Context::
- ultimate_base (SemanticGraph::Complex& c)
- {
- using namespace SemanticGraph;
-
- Type* b (&c.inherits ().base ());
-
- while (true)
- {
- Complex* cb (dynamic_cast<Complex*> (b));
-
- if (cb != 0 && cb->inherits_p ())
- {
- b = &cb->inherits ().base ();
- continue;
- }
-
- break;
- }
-
- return *b;
- }
-
- String Context::
- escape (String const& name)
- {
- String r;
- size_t n (name.size ());
-
- // In most common cases we will have that many chars.
- //
- r.reserve (n);
-
- for (size_t i (0); i < n; ++i)
- {
- bool first (i == 0);
-
- unsigned int u (unicode_char (name, i)); // May advance i.
-
- if (first)
- {
- if (!((u >= 'a' && u <= 'z') ||
- (u >= 'A' && u <= 'Z') ||
- u == '_'))
- r = (u >= '0' && u <= '9') ? L"cxx_" : L"cxx";
- }
-
- if (!((u >= 'a' && u <= 'z') ||
- (u >= 'A' && u <= 'Z') ||
- (u >= '0' && u <= '9') ||
- u == '_'))
- r.push_back ('_');
- else
- r.push_back (static_cast<wchar_t> (u));
- }
-
- if (r.empty ())
- r = L"cxx";
-
- // Custom reserved words.
- //
- ReservedNameMap::const_iterator i (reserved_name_map.find (r));
-
- if (i != reserved_name_map.end ())
- {
- if (i->second)
- return i->second;
- else
- r += L'_';
- }
-
- // Keywords
- //
- if (keyword_set.find (r) != keyword_set.end ())
- {
- r += L'_';
-
- // Re-run custom words.
- //
- i = reserved_name_map.find (r);
-
- if (i != reserved_name_map.end ())
- {
- if (i->second)
- return i->second;
- else
- r += L'_';
- }
- }
-
- return r;
- }
-
- // String escaping.
- //
-
- String
- charlit (unsigned int u)
- {
- String r ("\\x");
- bool lead (true);
-
- for (int i (7); i >= 0; --i)
- {
- unsigned int x ((u >> (i * 4)) & 0x0F);
-
- if (lead)
- {
- if (x == 0)
- continue;
-
- lead = false;
- }
-
- r += x < 10 ? ('0' + x) : ('A' + x - 10);
- }
-
- return r;
- }
-
- String
- strlit_ascii (String const& str)
- {
- String r;
- size_t n (str.size ());
-
- // In most common cases we will have that many chars.
- //
- r.reserve (n + 2);
-
- r += '"';
-
- bool escape (false);
-
- for (size_t i (0); i < n; ++i)
- {
- unsigned int u (Context::unicode_char (str, i)); // May advance i.
-
- // [128 - ] - unrepresentable
- // 127 - \x7F
- // [32 - 126] - as is
- // [0 - 31] - \X or \xXX
- //
-
- if (u < 32 || u == 127)
- {
- switch (u)
- {
- case L'\n':
- {
- r += L"\\n";
- break;
- }
- case L'\t':
- {
- r += L"\\t";
- break;
- }
- case L'\v':
- {
- r += L"\\v";
- break;
- }
- case L'\b':
- {
- r += L"\\b";
- break;
- }
- case L'\r':
- {
- r += L"\\r";
- break;
- }
- case L'\f':
- {
- r += L"\\f";
- break;
- }
- case L'\a':
- {
- r += L"\\a";
- break;
- }
- default:
- {
- r += charlit (u);
- escape = true;
- break;
- }
- }
- }
- else if (u < 127)
- {
- if (escape)
- {
- // Close and open the string so there are no clashes.
- //
- r += '"';
- r += '"';
-
- escape = false;
- }
-
- switch (u)
- {
- case L'"':
- {
- r += L"\\\"";
- break;
- }
- case L'\\':
- {
- r += L"\\\\";
- break;
- }
- default:
- {
- r += static_cast<wchar_t> (u);
- break;
- }
- }
- }
- else
- {
- // Unrepresentable character.
- //
- throw UnrepresentableCharacter (str, i + 1);
- }
- }
-
- r += '"';
-
- return r;
- }
-
- const unsigned int utf8_first_char_mask[5] =
- {
- 0x00, 0x00, 0xC0, 0xE0, 0xF0
- };
-
- String
- strlit_utf8 (String const& str)
- {
- String r;
- size_t n (str.size ());
-
- // In most common cases we will have that many chars.
- //
- r.reserve (n + 2);
-
- r += '"';
-
- bool escape (false);
-
- for (size_t i (0); i < n; ++i)
- {
- unsigned int u (Context::unicode_char (str, i)); // May advance i.
-
- // [128 - ] - UTF-8
- // 127 - \x7F
- // [32 - 126] - as is
- // [0 - 31] - \X or \xXX
- //
-
- if (u < 32 || u == 127)
- {
- switch (u)
- {
- case L'\n':
- {
- r += L"\\n";
- break;
- }
- case L'\t':
- {
- r += L"\\t";
- break;
- }
- case L'\v':
- {
- r += L"\\v";
- break;
- }
- case L'\b':
- {
- r += L"\\b";
- break;
- }
- case L'\r':
- {
- r += L"\\r";
- break;
- }
- case L'\f':
- {
- r += L"\\f";
- break;
- }
- case L'\a':
- {
- r += L"\\a";
- break;
- }
- default:
- {
- r += charlit (u);
- escape = true;
- break;
- }
- }
- }
- else if (u < 127)
- {
- if (escape)
- {
- // Close and open the string so there are no clashes.
- //
- r += '"';
- r += '"';
-
- escape = false;
- }
-
- switch (u)
- {
- case L'"':
- {
- r += L"\\\"";
- break;
- }
- case L'\\':
- {
- r += L"\\\\";
- break;
- }
- default:
- {
- r += static_cast<wchar_t> (u);
- break;
- }
- }
- }
- else
- {
- unsigned int count (0);
- unsigned int tmp[4];
-
- if (u < 0x800)
- count = 2;
- else if (u < 0x10000)
- count = 3;
- else if (u < 0x110000)
- count = 4;
-
- switch (count)
- {
- case 4:
- {
- tmp[3] = (u | 0x80UL) & 0xBFUL;
- u >>= 6;
- }
- case 3:
- {
- tmp[2] = (u | 0x80UL) & 0xBFUL;
- u >>= 6;
- }
- case 2:
- {
- tmp[1] = (u | 0x80UL) & 0xBFUL;
- u >>= 6;
- }
- case 1:
- {
- tmp[0] = u | utf8_first_char_mask[count];
- break;
- }
- default:
- assert (false);
- }
-
- for (unsigned int j (0); j < count; ++j)
- r += charlit (tmp[j]);
-
- escape = true;
- }
- }
-
- r += '"';
-
- return r;
- }
-
- String
- strlit_iso8859_1 (String const& str)
- {
- String r;
- size_t n (str.size ());
-
- // In most common cases we will have that many chars.
- //
- r.reserve (n + 2);
-
- r += '"';
-
- bool escape (false);
-
- for (size_t i (0); i < n; ++i)
- {
- unsigned int u (Context::unicode_char (str, i)); // May advance i.
-
- // [256 - ] - unrepresentable
- // [127 - 255] - \xXX
- // [32 - 126] - as is
- // [0 - 31] - \X or \xXX
- //
-
- if (u < 32)
- {
- switch (u)
- {
- case L'\n':
- {
- r += L"\\n";
- break;
- }
- case L'\t':
- {
- r += L"\\t";
- break;
- }
- case L'\v':
- {
- r += L"\\v";
- break;
- }
- case L'\b':
- {
- r += L"\\b";
- break;
- }
- case L'\r':
- {
- r += L"\\r";
- break;
- }
- case L'\f':
- {
- r += L"\\f";
- break;
- }
- case L'\a':
- {
- r += L"\\a";
- break;
- }
- default:
- {
- r += charlit (u);
- escape = true;
- break;
- }
- }
- }
- else if (u < 127)
- {
- if (escape)
- {
- // Close and open the string so there are no clashes.
- //
- r += '"';
- r += '"';
-
- escape = false;
- }
-
- switch (u)
- {
- case L'"':
- {
- r += L"\\\"";
- break;
- }
- case L'\\':
- {
- r += L"\\\\";
- break;
- }
- default:
- {
- r += static_cast<wchar_t> (u);
- break;
- }
- }
- }
- else if (u < 256)
- {
- r += charlit (u);
- escape = true;
- }
- else
- {
- // Unrepresentable character.
- //
- throw UnrepresentableCharacter (str, i + 1);
- }
- }
-
- r += '"';
-
- return r;
- }
-
- String
- strlit_utf32 (String const& str)
- {
- String r;
- size_t n (str.size ());
-
- // In most common cases we will have that many chars.
- //
- r.reserve (n + 3);
-
- r += L"L\"";
-
- bool escape (false);
-
- for (size_t i (0); i < n; ++i)
- {
- unsigned int u (Context::unicode_char (str, i)); // May advance i.
-
- // [128 - ] - \xUUUUUUUU
- // 127 - \x7F
- // [32 - 126] - as is
- // [0 - 31] - \X or \xXX
- //
-
- if (u < 32 || u == 127)
- {
- switch (u)
- {
- case L'\n':
- {
- r += L"\\n";
- break;
- }
- case L'\t':
- {
- r += L"\\t";
- break;
- }
- case L'\v':
- {
- r += L"\\v";
- break;
- }
- case L'\b':
- {
- r += L"\\b";
- break;
- }
- case L'\r':
- {
- r += L"\\r";
- break;
- }
- case L'\f':
- {
- r += L"\\f";
- break;
- }
- case L'\a':
- {
- r += L"\\a";
- break;
- }
- default:
- {
- r += charlit (u);
- escape = true;
- break;
- }
- }
- }
- else if (u < 127)
- {
- if (escape)
- {
- // Close and open the string so there are no clashes. C++11
- // requires a space between " and L.
- //
- r += L"\" L\"";
- escape = false;
- }
-
- switch (u)
- {
- case L'"':
- {
- r += L"\\\"";
- break;
- }
- case L'\\':
- {
- r += L"\\\\";
- break;
- }
- default:
- {
- r += static_cast<wchar_t> (u);
- break;
- }
- }
- }
- else
- {
- r += charlit (u);
- escape = true;
- }
- }
-
- r += '"';
-
- return r;
- }
-
- String Context::
- strlit (String const& str)
- {
- // First see if we have a custom mapping.
- //
- assert (string_literal_map != 0);
- StringLiteralMap::const_iterator i (string_literal_map->find (str));
-
- if (i != string_literal_map->end ())
- return i->second;
-
- if (char_type == L"char")
- {
- if (char_encoding == L"utf8")
- return strlit_utf8 (str);
- else if (char_encoding == L"iso8859-1")
- return strlit_iso8859_1 (str);
- else
- {
- // For LCP, custom, and other unknown encodings, use ASCII.
- //
- return strlit_ascii (str);
- }
- }
- else
- return strlit_utf32 (str);
- }
-
- String Context::
- comment (String const& str)
- {
- String r;
-
- wchar_t const* s (str.c_str ());
- size_t size (str.size ());
-
- // In most common cases we will have that many chars.
- //
- r.reserve (size);
-
- for (wchar_t const* p (s); p < s + size; ++p)
- {
- unsigned int u (unicode_char (p)); // May advance p.
-
- // We are going to treat \v, \f and \n as unrepresentable
- // here even though they can be present in C++ source code.
- //
- if (u > 127 || (u < 32 && u != '\t'))
- r += L'?';
- else
- r += static_cast<wchar_t> (u);
- }
-
- return r;
- }
-
- String Context::
- process_include_path (String const& name) const
- {
- String path (String (options.include_prefix ()) + name);
- bool trace (options.include_regex_trace ());
-
- if (trace)
- wcerr << "include: '" << path << "'" << endl;
-
- String r;
- bool found (false);
-
- for (RegexMapping::const_reverse_iterator e (include_mapping.rbegin ());
- e != include_mapping.rend (); ++e)
- {
- if (trace)
- wcerr << "try: '" << e->regex () << "' : ";
-
- if (e->match (path))
- {
- r = e->replace (path);
- found = true;
-
- if (trace)
- wcerr << "'" << r << "' : ";
- }
-
- if (trace)
- wcerr << (found ? '+' : '-') << endl;
-
- if (found)
- break;
- }
-
- if (!found)
- r = path;
-
- if (!r.empty () && r[0] != L'"' && r[0] != L'<')
- {
- wchar_t op (options.include_with_brackets () ? L'<' : L'"');
- wchar_t cl (options.include_with_brackets () ? L'>' : L'"');
- r = op + r + cl;
- }
-
- return r;
- }
-
- // Namespace
- //
-
- void Namespace::
- pre (Type& n)
- {
- String ns (ctx_.ns_name (n));
-
- String::size_type b (0), e;
-
- if (st_)
- st_->enter (n, L"", ns ? false : true);
-
- do
- {
- e = ns.find (L"::", b);
-
- String name (ns, b, e == ns.npos ? e : e - b);
-
- if (!name.empty ())
- {
- if (st_)
- st_->enter (n, name, e == ns.npos);
-
- ctx_.os << "namespace " << name << "{";
- }
-
- b = e;
-
- if (b == ns.npos)
- break;
-
- b += 2;
-
- } while (true);
- }
-
- void Namespace::
- post (Type& n)
- {
- String ns (ctx_.ns_name (n));
-
- String::size_type b (0), e;
-
- do
- {
- e = ns.find (L"::", b);
-
- String name (ns, b, e == ns.npos ? e : e - b);
-
- if (!name.empty ())
- {
- ctx_.os << "}";
-
- if (st_)
- st_->leave ();
- }
-
-
- b = e;
-
- if (b == ns.npos)
- break;
-
- b += 2;
-
- }
- while (true);
-
- if (st_)
- st_->leave ();
- }
-}
diff --git a/xsd/xsd/cxx/elements.hxx b/xsd/xsd/cxx/elements.hxx
deleted file mode 100644
index 4b36da9..0000000
--- a/xsd/xsd/cxx/elements.hxx
+++ /dev/null
@@ -1,627 +0,0 @@
-// file : xsd/cxx/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_ELEMENTS_HXX
-#define CXX_ELEMENTS_HXX
-
-#include <set>
-#include <map>
-#include <vector>
-#include <ostream>
-
-#include <cutl/re.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <types.hxx>
-#include <elements.hxx>
-
-#include <cxx/options.hxx>
-#include <cxx/literal-map.hxx>
-
-namespace CXX
-{
- using std::endl;
-
- // On some platforms std::toupper can be something other than a
- // function with C++ linkage.
- //
- wchar_t
- upcase (wchar_t c);
-
-
- // Exceptions.
- //
-
- struct UnrepresentableCharacter
- {
- UnrepresentableCharacter (String const& str, size_t pos)
- : str_ (str), pos_ (pos)
- {
- }
-
- String const&
- string () const
- {
- return str_;
- }
-
- size_t
- position () const
- {
- return pos_;
- }
-
- private:
- String str_;
- size_t pos_;
- };
-
- struct NoNamespaceMapping
- {
- NoNamespaceMapping (SemanticGraph::Path const& file,
- size_t line,
- size_t column,
- String const& ns)
- : file_ (file),
- line_ (line),
- column_ (column),
- ns_ (ns)
- {
- }
-
-
- SemanticGraph::Path const&
- file () const
- {
- return file_;
- }
-
- size_t
- line () const
- {
- return line_;
- }
-
- size_t
- column () const
- {
- return column_;
- }
-
- String const&
- ns () const
- {
- return ns_;
- }
-
- private:
- SemanticGraph::Path file_;
- size_t line_;
- size_t column_;
- String ns_;
- };
-
- struct InvalidNamespaceMapping
- {
- InvalidNamespaceMapping (String const& mapping,
- String const& reason)
- : mapping_ (mapping), reason_ (reason)
- {
- }
-
- String const&
- mapping () const
- {
- return mapping_;
- }
-
- String const&
- reason () const
- {
- return reason_;
- }
-
- private:
- String mapping_;
- String reason_;
- };
-
- //
- //
- class Context
- {
- public:
- typedef cutl::re::wregex RegexPat;
- typedef cutl::re::wregexsub Regex;
- typedef std::vector<Regex> RegexMapping;
- typedef std::map<String, String> MapMapping;
- typedef std::map<String, String> MappingCache;
-
- typedef std::map<String, String> ReservedNameMap;
- typedef std::set<String> KeywordSet;
-
- typedef CXX::options options_type;
-
- public:
- Context (std::wostream& o,
- SemanticGraph::Schema& root,
- SemanticGraph::Path const& path,
- options_type const& ops,
- StringLiteralMap const* custom_literals_map);
-
- protected:
- Context (Context& c)
- : os (c.os),
- schema_root (c.schema_root),
- schema_path (c.schema_path),
- options (c.options),
- std (c.std),
- char_type (c.char_type),
- char_encoding (c.char_encoding),
- L (c.L),
- string_type (c.string_type),
- auto_ptr (c.auto_ptr),
- string_literal_map (c.string_literal_map),
- type_exp (c.type_exp),
- inst_exp (c.inst_exp),
- inl (c.inl),
- ns_mapping_cache (c.ns_mapping_cache),
- xs_ns_ (c.xs_ns_),
- cxx_id_expr (c.cxx_id_expr),
- urn_mapping (c.urn_mapping),
- nsr_mapping (c.nsr_mapping),
- nsm_mapping (c.nsm_mapping),
- include_mapping (c.include_mapping),
- reserved_name_map (c.reserved_name_map),
- keyword_set (c.keyword_set)
- {
- }
-
- Context (Context& c, std::wostream& o)
- : os (o),
- schema_root (c.schema_root),
- schema_path (c.schema_path),
- options (c.options),
- std (c.std),
- char_type (c.char_type),
- char_encoding (c.char_encoding),
- L (c.L),
- string_type (c.string_type),
- auto_ptr (c.auto_ptr),
- string_literal_map (c.string_literal_map),
- type_exp (c.type_exp),
- inst_exp (c.inst_exp),
- inl (c.inl),
- ns_mapping_cache (c.ns_mapping_cache),
- xs_ns_ (c.xs_ns_),
- cxx_id_expr (c.cxx_id_expr),
- urn_mapping (c.urn_mapping),
- nsr_mapping (c.nsr_mapping),
- nsm_mapping (c.nsm_mapping),
- include_mapping (c.include_mapping),
- reserved_name_map (c.reserved_name_map),
- keyword_set (c.keyword_set)
- {
- }
-
- public:
- static String
- unclash (String const& name, String const& new_name)
- {
- return name == new_name ? (new_name + L'_') : new_name;
- }
-
- public:
- // Return UTF-32 character starting at this position. Position is
- // advanced by 1 if this Unicode character takes more than one
- // underlying character.
- //
- static unsigned int
- unicode_char (String const& str, size_t& pos);
-
- static unsigned int
- unicode_char (wchar_t const*& p);
-
- // Escape C++ keywords and illegal characters.
- //
- String
- escape (String const&);
-
- // Create a string literal so that it can be used in C++ source
- // code. It includes "".
- //
- String
- strlit (String const&);
-
- // Escape the string so that it can be used in C++ comment.
- //
- String
- comment (String const&);
-
- // Translate XML namespace name to a C++ identifier.
- //
- String
- ns_name (SemanticGraph::Namespace&);
-
- // XML Schema namespace.
- //
- SemanticGraph::Namespace&
- xs_ns ();
-
- // C++ namespace for XML Schema.
- //
- String
- xs_ns_name ();
-
- //
- //
- SemanticGraph::Namespace&
- namespace_ (SemanticGraph::Nameable& n);
-
- // Original XML namespace name.
- //
- String
- xml_ns_name (SemanticGraph::Nameable& ns);
-
-
- // Fully-qualified C++ name.
- //
- String
- fq_name (SemanticGraph::Nameable& n, char const* name_key = "name");
-
- public:
- static SemanticGraph::Type&
- ultimate_base (SemanticGraph::Complex&);
-
- public:
- String
- process_include_path (String const&) const;
-
- public:
- static bool
- skip (SemanticGraph::Member& m)
- {
- // "Subsequent" local element.
- //
- return !m.scope ().is_a<SemanticGraph::Namespace> () &&
- m.context ().count ("min") == 0;
- }
-
- static size_t
- min (SemanticGraph::Member const& m)
- {
- return m.context ().get<size_t> ("min");
- }
-
- static size_t
- min (SemanticGraph::Any const& a)
- {
- return a.context ().get<size_t> ("min");
- }
-
- static size_t
- max (SemanticGraph::Member const& m)
- {
- return m.context ().get<size_t> ("max");
- }
-
- static size_t
- max (SemanticGraph::Any const& a)
- {
- return a.context ().get<size_t> ("max");
- }
-
- public:
- // Get escaped name.
- //
- static String const&
- ename (SemanticGraph::Nameable const& n)
- {
- return n.context ().get<String> ("name");
- }
-
- public:
- std::wostream& os;
-
- SemanticGraph::Schema& schema_root;
- SemanticGraph::Path const& schema_path;
-
- options_type const& options;
-
- cxx_version std;
-
- String& char_type;
- String& char_encoding;
- String& L; // string literal prefix
- String& string_type;
- String& auto_ptr;
-
- StringLiteralMap const* string_literal_map;
-
- String& type_exp;
- String& inst_exp;
- String& inl;
-
- public:
- MappingCache& ns_mapping_cache;
-
- private:
- SemanticGraph::Path const schema_path_;
-
- SemanticGraph::Namespace* xs_ns_;
-
- String char_type_;
- String char_encoding_;
- String L_;
- String string_type_;
- String auto_ptr_;
-
- String type_exp_;
- String inst_exp_;
- String inl_;
-
- private:
- RegexPat const cxx_id_expr_;
- RegexPat const& cxx_id_expr;
- Regex urn_mapping_;
- RegexMapping nsr_mapping_;
- MapMapping nsm_mapping_;
- Regex const& urn_mapping;
- RegexMapping const& nsr_mapping;
- MapMapping const& nsm_mapping;
- MappingCache ns_mapping_cache_;
-
- RegexMapping include_mapping_;
- RegexMapping const& include_mapping;
-
- ReservedNameMap const& reserved_name_map;
- ReservedNameMap reserved_name_map_;
-
- KeywordSet const& keyword_set;
- KeywordSet keyword_set_;
- };
-
- inline unsigned int Context::
- unicode_char (String const& str, size_t& pos)
- {
- if (sizeof (wchar_t) == 4)
- {
- return str[pos];
- }
- else if (sizeof (wchar_t) == 2)
- {
- wchar_t x (str[pos]);
-
- if (x < 0xD800 || x > 0xDBFF)
- return x;
- else
- return ((x - 0xD800) << 10) + (str[++pos] - 0xDC00) + 0x10000;
- }
- else
- return 0;
- }
-
- inline unsigned int Context::
- unicode_char (wchar_t const*& p)
- {
- if (sizeof (wchar_t) == 4)
- {
- return *p;
- }
- else if (sizeof (wchar_t) == 2)
- {
- wchar_t x (*p);
-
- if (x < 0xD800 || x > 0xDBFF)
- return x;
- else
- return ((x - 0xD800) << 10) + (*(++p) - 0xDC00) + 0x10000;
- }
- else
- return 0;
- }
-
- // Sources traverser that goes into each schema only once.
- //
- struct Sources: Traversal::Sources
- {
- virtual void
- traverse (SemanticGraph::Sources& s)
- {
- if (schemas_.insert (&s.schema ()).second)
- Traversal::Sources::traverse (s);
- }
-
- private:
- std::set<SemanticGraph::Schema*> schemas_;
- };
-
- // Usual namespace mapping.
- //
- struct Namespace: Traversal::Namespace
- {
- struct ScopeTracker
- {
- // First scope name if always empty (global scope). The last flag
- // signals the last scope.
- //
- virtual void
- enter (Type&, String const& name, bool last) = 0;
-
- virtual void
- leave () = 0;
- };
-
-
- Namespace (Context& c)
- : ctx_ (c), st_ (0)
- {
- }
-
- Namespace (Context& c, ScopeTracker& st)
- : ctx_ (c), st_ (&st)
- {
- }
-
- virtual void
- pre (Type&);
-
- virtual void
- post (Type&);
-
- private:
- Context& ctx_;
- ScopeTracker* st_;
- };
-
- //
- //
- template <typename X>
- struct Has : X
- {
- Has (bool& result)
- : result_ (result)
- {
- }
-
- virtual void
- traverse (typename X::Type&)
- {
- result_ = true;
- }
-
- private:
- bool& result_;
- };
-
- // Checks if scope 'Y' names any of 'X'
- //
- template <typename X, typename Y>
- bool
- has (Y& y)
- {
- using SemanticGraph::Scope;
-
- bool result (false);
- Has<X> t (result);
-
- for (Scope::NamesIterator i (y.names_begin ()), e (y.names_end ());
- !result && i != e; ++i)
- t.dispatch (i->named ());
-
- return result;
- }
-
- // Checks if the compositor has any particle of 'X'
- //
- template <typename X>
- bool
- has_particle (SemanticGraph::Compositor& y)
- {
- using SemanticGraph::Compositor;
-
- bool result (false);
- Has<X> t (result);
-
- for (Compositor::ContainsIterator i (y.contains_begin ()),
- e (y.contains_end ()); !result && i != e; ++i)
- {
- SemanticGraph::Particle& p (i->particle ());
-
- t.dispatch (p);
-
- if (!result && p.is_a<Compositor> ())
- result = has_particle<X> (dynamic_cast<Compositor&> (p));
- }
-
- return result;
- }
-
- // Specialization for Complex
- //
- template <typename X>
- bool
- has_particle (SemanticGraph::Complex& c)
- {
- return c.contains_compositor_p () &&
- has_particle<X> (c.contains_compositor ().compositor ());
- }
-
- // Fundamental type mapping helper.
- //
- struct Fundamental: Traversal::Fundamental::Type,
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Id,
- Traversal::Fundamental::IdRef
- {
- virtual void
- fundamental_type (SemanticGraph::Fundamental::Type& t) = 0;
-
- virtual void
- fundamental_template (SemanticGraph::Fundamental::Type& t) = 0;
-
- virtual void
- traverse (SemanticGraph::Fundamental::Type& t)
- {
- fundamental_type (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::String& t)
- {
- fundamental_template (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString& t)
- {
- fundamental_template (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token& t)
- {
- fundamental_template (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name& t)
- {
- fundamental_template (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken& t)
- {
- fundamental_template (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName& t)
- {
- fundamental_template (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Id& t)
- {
- fundamental_template (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRef& t)
- {
- fundamental_template (t);
- }
- };
-}
-
-#endif // CXX_TREE_ELEMENTS_HXX
diff --git a/xsd/xsd/cxx/literal-map.cxx b/xsd/xsd/cxx/literal-map.cxx
deleted file mode 100644
index 24bfc52..0000000
--- a/xsd/xsd/cxx/literal-map.cxx
+++ /dev/null
@@ -1,262 +0,0 @@
-// file : xsd/cxx/literal-map.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <memory> // std::auto_ptr
-#include <cstddef> // std::size_t
-#include <fstream>
-#include <iostream>
-
-#include <xercesc/util/XMLUni.hpp>
-
-#include <xercesc/framework/LocalFileInputSource.hpp>
-
-#include <xercesc/sax/Locator.hpp>
-#include <xercesc/sax/SAXParseException.hpp>
-#include <xercesc/sax2/DefaultHandler.hpp>
-#include <xercesc/sax2/SAX2XMLReader.hpp>
-#include <xercesc/sax2/XMLReaderFactory.hpp>
-
-#include <xsd-frontend/xml.hxx>
-
-#include <cxx/literal-map.hxx>
-
-using namespace std;
-using namespace xercesc;
-namespace XML = XSDFrontend::XML;
-
-namespace CXX
-{
- class Handler: public DefaultHandler
- {
- public:
- struct Failed {};
-
- Handler (String const& file, StringLiteralMap& map)
- : state_ (s_init), file_ (file), map_ (map)
- {
- }
-
- virtual void
- setDocumentLocator (const Locator* const l)
- {
- locator_ = l;
- }
-
- virtual void
- startElement (const XMLCh* const,
- const XMLCh* const lname,
- const XMLCh* const,
- const xercesc::Attributes&)
- {
- String n (XML::transcode (lname));
-
- if (n == L"string-literal-map" && state_ == s_init)
- state_ = s_map;
- else if (n == L"entry" && state_ == s_map)
- {
- str_seen_ = false;
- lit_seen_ = false;
- state_ = s_entry;
- }
- else if (n == L"string" && state_ == s_entry)
- {
- str_seen_ = true;
- str_.clear ();
- state_ = s_string;
- }
- else if (n == L"literal" && state_ == s_entry)
- {
- lit_seen_ = true;
- lit_.clear ();
- state_ = s_literal;
- }
- else
- {
- wcerr << file_ << ":" << line () << ":" << col () << ": error: "
- << "unexpected element '" << n << "'" << endl;
- throw Failed ();
- }
- }
-
- virtual void
- endElement (const XMLCh* const,
- const XMLCh* const lname,
- const XMLCh* const)
- {
- String n (XML::transcode (lname));
-
- if (n == L"string-literal-map")
- state_ = s_init;
- else if (n == L"entry")
- {
- if (!str_seen_)
- {
- wcerr << file_ << ":" << line () << ":" << col () << ": error: "
- << "expected 'string' element" << endl;
- throw Failed ();
- }
-
- if (!lit_seen_)
- {
- wcerr << file_ << ":" << line () << ":" << col () << ": error: "
- << "expected 'literal' element" << endl;
- throw Failed ();
- }
-
- map_[str_] = lit_;
- state_ = s_map;
- }
- else if (n == L"string")
- state_ = s_entry;
- else if (n == L"literal")
- state_ = s_entry;
- }
-
- virtual void
- characters (const XMLCh* const s, const XMLSize_t length)
- {
- String str (XML::transcode (s, length));
-
- if (state_ == s_string)
- str_ += str;
- else if (state_ == s_literal)
- lit_ += str;
- else
- {
- for (size_t i (0); i < str.size (); ++i)
- {
- wchar_t c (str[i]);
-
- if (c != 0x20 && c != 0x0A && c != 0x0D && c != 0x09)
- {
- wcerr << file_ << ":" << line () << ":" << col () << ": error: "
- << "unexpected character data" << endl;
- throw Failed ();
- }
- }
- }
- }
-
- // Error hanlding.
- //
- enum Severity {s_warning, s_error, s_fatal};
-
- virtual void
- warning (const SAXParseException& e)
- {
- handle (e, s_warning);
- }
-
- virtual void
- error (const SAXParseException& e)
- {
- handle (e, s_error);
- }
-
- virtual void
- fatalError (const SAXParseException& e)
- {
- handle (e, s_fatal);
- }
-
- virtual void
- resetErrors ()
- {
- }
-
- void
- handle (const SAXParseException& e, Severity s)
- {
- String msg (XML::transcode (e.getMessage ()));
-
- wcerr << file_ << ":"
- << e.getLineNumber () << ":" << e.getColumnNumber () << ": "
- << (s == s_warning ? "warning: " : "error: ") << msg << endl;
-
- if (s != s_warning)
- throw Failed ();
- }
-
- size_t
- line () const
- {
- return locator_ != 0
- ? static_cast<size_t> (locator_->getLineNumber ())
- : 0;
- }
-
- size_t
- col () const
- {
- return locator_ != 0
- ? static_cast<size_t> (locator_->getColumnNumber ())
- : 0;
- }
-
- private:
- const Locator* locator_;
-
- enum
- {
- s_init,
- s_map,
- s_entry,
- s_string,
- s_literal
- } state_;
-
- String file_;
- StringLiteralMap& map_;
-
- bool str_seen_;
- bool lit_seen_;
-
- String str_;
- String lit_;
- };
-
- bool
- read_literal_map (NarrowString const& file, StringLiteralMap& map)
- {
- try
- {
- // Try to open the file with fstream. This way we get to
- // report the error in a consistent manner.
- //
- {
- ifstream ifs (file.c_str ());
- if (!ifs.is_open ())
- {
- wcerr << file.c_str () << ": unable to open in read mode" << endl;
- return false;
- }
- }
-
- String wfile (file);
-
- LocalFileInputSource is (XML::XMLChString (wfile).c_str ());
- Handler h (wfile, map);
-
- auto_ptr<SAX2XMLReader> parser (
- XMLReaderFactory::createXMLReader ());
-
- parser->setFeature (XMLUni::fgSAX2CoreNameSpaces, true);
- parser->setFeature (XMLUni::fgSAX2CoreNameSpacePrefixes, true);
- parser->setFeature (XMLUni::fgSAX2CoreValidation, false);
- parser->setFeature (XMLUni::fgXercesSchema, false);
- parser->setFeature (XMLUni::fgXercesSchemaFullChecking, false);
-
- parser->setErrorHandler (&h);
- parser->setContentHandler (&h);
-
- parser->parse (is);
- }
- catch (Handler::Failed const&)
- {
- return false;
- }
-
- return true;
- }
-}
diff --git a/xsd/xsd/cxx/literal-map.hxx b/xsd/xsd/cxx/literal-map.hxx
deleted file mode 100644
index 987a531..0000000
--- a/xsd/xsd/cxx/literal-map.hxx
+++ /dev/null
@@ -1,20 +0,0 @@
-// file : xsd/cxx/literal-map.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_LITERAL_MAP_HXX
-#define CXX_LITERAL_MAP_HXX
-
-#include <map>
-
-#include <types.hxx>
-
-namespace CXX
-{
- typedef std::map<String, String> StringLiteralMap;
-
- bool
- read_literal_map (NarrowString const& file, StringLiteralMap& map);
-}
-
-#endif // CXX_LITERAL_MAP_HXX
diff --git a/xsd/xsd/cxx/option-types.cxx b/xsd/xsd/cxx/option-types.cxx
deleted file mode 100644
index 78424f0..0000000
--- a/xsd/xsd/cxx/option-types.cxx
+++ /dev/null
@@ -1,48 +0,0 @@
-// file : xsd/cxx/option-types.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <istream>
-#include <ostream>
-
-#include <cxx/option-types.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- //
- // cxx_version
- //
-
- static const char* cxx_version_[] =
- {
- "c++98",
- "c++11"
- };
-
- string cxx_version::
- string () const
- {
- return cxx_version_[v_];
- }
-
- istream&
- operator>> (istream& is, cxx_version& v)
- {
- string s;
- is >> s;
-
- if (!is.fail ())
- {
- if (s == "c++98")
- v = cxx_version::cxx98;
- else if (s == "c++11")
- v = cxx_version::cxx11;
- else
- is.setstate (istream::failbit);
- }
-
- return is;
- }
-}
diff --git a/xsd/xsd/cxx/option-types.hxx b/xsd/xsd/cxx/option-types.hxx
deleted file mode 100644
index b2377ba..0000000
--- a/xsd/xsd/cxx/option-types.hxx
+++ /dev/null
@@ -1,35 +0,0 @@
-// file : xsd/cxx/option-types.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_OPTION_TYPES_HXX
-#define XSD_OPTION_TYPES_HXX
-
-#include <iosfwd>
-#include <string>
-
-namespace CXX
-{
- struct cxx_version
- {
- enum value
- {
- cxx98,
- cxx11
- };
-
- cxx_version (value v = value (0)) : v_ (v) {}
- operator value () const {return v_;}
-
- std::string
- string () const;
-
- private:
- value v_;
- };
-
- std::istream&
- operator>> (std::istream&, cxx_version&);
-}
-
-#endif // XSD_OPTION_TYPES_HXX
diff --git a/xsd/xsd/cxx/options.cli b/xsd/xsd/cxx/options.cli
deleted file mode 100644
index 8133b25..0000000
--- a/xsd/xsd/cxx/options.cli
+++ /dev/null
@@ -1,551 +0,0 @@
-// file : xsd/cxx/options.cli
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include <cstddef>; // std::size_t
-
-include <types.hxx>; // NarrowString, NarrowStrings
-
-include <cxx/option-types.hxx>;
-
-include <options.cli>;
-
-namespace CXX
-{
- class options: ::options = 0
- {
- // Language.
- //
- cxx_version --std = cxx_version::cxx98
- {
- "<version>",
- "Specify the C++ standard that the generated code should conform to.
- Valid values are \cb{c++98} (default) and \cb{c++11}.
-
- The C++ standard affects various aspects of the generated code that
- are discussed in more detail in various mapping-specific
- documentation. Overall, when C++11 is selected, the generated
- code relies on the move semantics and uses \cb{std::unique_ptr}
- instead of deprecated \cb{std::auto_ptr}.
-
- When the C++11 mode is selected, you normally don't need to
- perform any extra steps other than enable C++11 in your C++
- compiler, if required. The XSD compiler will automatically
- add the necessary macro defines to the generated header files
- that will switch the header-only XSD runtime library (\cb{libxsd})
- to the C++11 mode. However, if you include any of the XSD runtime
- headers directly in your application (normally you just include
- the generated headers), then you will need to define the
- \cb{XSD_CXX11} macro for your entire project."
- };
-
- // Character type and encoding.
- //
- NarrowString --char-type = "char"
- {
- "<type>",
- "Generate code using the provided character <type> instead of the
- default \cb{char}. Valid values are \cb{char} and \cb{wchar_t}."
- };
-
- NarrowString --char-encoding
- {
- "<enc>",
- "Specify the character encoding that should be used in the generated
- code. Valid values for the \cb{char} character type are \cb{utf8}
- (default), \cb{iso8859-1}, \cb{lcp} (Xerces-C++ local code page),
- and \cb{custom}. If you pass \cb{custom} as the value then you will
- need to include the transcoder implementation header for your
- encoding at the beginning of the generated header files (see the
- \cb{--hxx-prologue} option).
-
- For the \cb{wchar_t} character type the only valid value is \cb{auto}
- and the encoding is automatically selected between UTF-16 and
- UTF-32/UCS-4, depending on the \cb{wchar_t} type size."
- };
-
- // Output options.
- //
- NarrowString --output-dir
- {
- "<dir>",
- "Write generated files to <dir> instead of the current directory."
- };
-
- bool --generate-inline
- {
- "Generate simple functions inline. This option triggers creation of
- the inline file."
- };
-
- // Extern XML Schema.
- //
- bool --generate-xml-schema
- {
- "Generate a C++ header file as if the schema being compiled defines the
- XML Schema namespace. For the C++/Tree mapping, the resulting file will
- contain definitions for all XML Schema built-in types. For the
- C++/Parser mapping, the resulting file will contain definitions for
- all the parser skeletons and implementations corresponding to the
- XML Schema built-in types.
-
- The schema file provided to the compiler need not exist and is only
- used to derive the name of the resulting header file. Use the
- \cb{--extern-xml-schema} option to include this file in the
- generated files for other schemas."
- };
-
- NarrowString --extern-xml-schema
- {
- "<file>",
- "Include a header file derived from <file> instead of generating the
- XML Schema namespace mapping inline. The provided file need not
- exist and is only used to derive the name of the included header
- file. Use the \cb{--generate-xml-schema} option to generate this
- header file."
- };
-
- // Namespace mapping.
- //
- NarrowStrings --namespace-map
- {
- "<xns>=<cns>",
- "Map XML Schema namespace <xns> to C++ namespace <cns>. Repeat
- this option to specify mapping for more than one XML Schema namespace.
- For example, the following option:
-
- \cb{--namespace-map http://example.com/foo/bar=foo::bar}
-
- Will map the \cb{http://example.com/foo/bar} XML Schema namespace to
- the \cb{foo::bar} C++ namespace."
- };
-
- NarrowStrings --namespace-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate XML
- Schema namespace names to C++ namespace names. <regex> is a Perl-like
- regular expression in the form
- \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. Any character can be
- used as a delimiter instead of \cb{/}. Escaping of the delimiter
- character in \ci{pattern} or \ci{replacement} is not supported.
-
- All the regular expressions are pushed into a stack with the last
- specified expression considered first. The first match that
- succeeds is used. Regular expressions are applied to a string in
- the form
-
- \c{\i{filename} \i{namespace}}
-
- For example, if you have file \cb{hello.xsd} with namespace
- \cb{http://example.com/hello} and you run \cb{xsd} on this file,
- then the string in question will be:
-
- \cb{hello.xsd. http://example.com/hello}
-
- For the built-in XML Schema namespace the string is:
-
- \cb{XMLSchema.xsd http://www.w3.org/2001/XMLSchema}
-
- The following three steps are performed for each regular expression
- until the match is found:
-
- 1. The expression is applied and if the result is empty the next
- expression is considered.
-
- 2. All \cb{/} are replaced with \cb{::}.
-
- 3. The result is verified to be a valid C++ scope name (e.g.,
- \cb{foo::bar}). If this test succeeds, the result is used as a
- C++ namespace name.
-
- As an example, the following expression maps XML Schema namespaces
- in the form \cb{http://example.com/foo/bar} to C++ namespaces in the
- form \cb{foo::bar}:
-
- \cb{%.* http://example.com/(.+)%$1%}
-
- See also the REGEX AND SHELL QUOTING section below."
- };
-
- bool --namespace-regex-trace
- {
- "Trace the process of applying regular expressions specified with the
- \cb{--namespace-regex} option. Use this option to find out why your
- regular expressions don't do what you expected them to do."
- };
-
- // Reserved names.
- //
- NarrowStrings --reserved-name
- {
- "<n>[=<r>]",
- "Add name <n> to the list of names that should not be used as
- identifiers. The name can optionally be followed by \cb{=} and the
- replacement name <r> that should be used instead. All the C++ keywords
- are already in this list."
- };
-
- // Include options.
- //
- bool --include-with-brackets
- {
- "Use angle brackets (<>) instead of quotes (\"\") in generated
- \cb{#include} directives."
- };
-
- NarrowString --include-prefix
- {
- "<prefix>",
- "Add <prefix> to generated \cb{#include} directive paths.
-
- For example, if you had the following import element in your schema
-
- \cb{<import namespace=\"...\" schemaLocation=\"base.xsd\"/>}
-
- and compiled this fragment with \cb{--include-prefix schemas/}, then
- the include directive in the generated code would be:
-
- \cb{#include \"schemas/base.hxx\"}"
- };
-
- NarrowStrings --include-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to transform
- \cb{#include} directive paths. <regex> is a Perl-like regular
- expression in the form \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}.
- Any character can be used as a delimiter instead of \cb{/}. Escaping
- of the delimiter character in \ci{pattern} or \ci{replacement} is not
- supported.
-
- All the regular expressions are pushed into a stack with the last
- specified expression considered first. The first match that succeeds
- is used.
-
- As an example, the following expression transforms paths in the form
- \cb{schemas/foo/bar} to paths in the form \cb{generated/foo/bar}:
-
- \cb{%schemas/(.+)%generated/$1%}
-
- See also the REGEX AND SHELL QUOTING section below."
- };
-
- bool --include-regex-trace
- {
- "Trace the process of applying regular expressions specified with the
- \cb{--include-regex} option. Use this option to find out why your
- regular expressions don't do what you expected them to do."
- };
-
- NarrowString --guard-prefix
- {
- "<prefix>",
- "Add <prefix> to generated header inclusion guards. The prefix is
- transformed to upper case and characters that are illegal in a
- preprocessor macro name are replaced with underscores. If this
- option is not specified then the directory part of the input schema
- file is used as a prefix."
- };
-
- // File suffixes.
- //
- NarrowString --hxx-suffix = ".hxx"
- {
- "<suffix>",
- "Use the provided <suffix> instead of the default \cb{.hxx} to
- construct the name of the header file. Note that this suffix is also
- used to construct names of header files corresponding to
- included/imported schemas."
- };
-
- NarrowString --ixx-suffix = ".ixx"
- {
- "<suffix>",
- "Use the provided <suffix> instead of the default \cb{.ixx} to
- construct the name of the inline file."
- };
-
- NarrowString --cxx-suffix = ".cxx"
- {
- "<suffix>",
- "Use the provided <suffix> instead of the default \cb{.cxx} to
- construct the name of the source file."
- };
-
- NarrowString --fwd-suffix = "-fwd.hxx"
- {
- "<suffix>",
- "Use the provided <suffix> instead of the default \cb{-fwd.hxx} to
- construct the name of the forward declaration file."
- };
-
- NarrowString --hxx-regex
- {
- "<regex>",
- "Use the provided expression to construct the name of the header file.
- <regex> is a Perl-like regular expression in the form
- \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}.
- Note that this expression is also used to construct names of header
- files corresponding to included/imported schemas. See also the REGEX
- AND SHELL QUOTING section below."
- };
-
- NarrowString --ixx-regex
- {
- "<regex>",
- "Use the provided expression to construct the name of the inline file.
- <regex> is a Perl-like regular expression in the form
- \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. See also the REGEX AND
- SHELL QUOTING section below."
- };
-
- NarrowString --cxx-regex
- {
- "<regex>",
- "Use the provided expression to construct the name of the source file.
- <regex> is a Perl-like regular expression in the form
- \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. See also the REGEX AND
- SHELL QUOTING section below."
- };
-
- NarrowString --fwd-regex
- {
- "<regex>",
- "Use the provided expression to construct the name of the forward
- declaration file. <regex> is a Perl-like regular expression in the
- form \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. See also the REGEX
- AND SHELL QUOTING section below."
- };
-
- // Prologues/epilogues.
- //
- NarrowStrings --hxx-prologue
- {
- "<text>",
- "Insert <text> at the beginning of the header file."
- };
-
- NarrowStrings --ixx-prologue
- {
- "<text>",
- "Insert <text> at the beginning of the inline file."
- };
-
- NarrowStrings --cxx-prologue
- {
- "<text>",
- "Insert <text> at the beginning of the source file."
- };
-
- NarrowStrings --fwd-prologue
- {
- "<text>",
- "Insert <text> at the beginning of the forward declaration file."
- };
-
- NarrowStrings --prologue
- {
- "<text>",
- "Insert <text> at the beginning of each generated file for which
- there is no file-specific prologue."
- };
-
- NarrowStrings --hxx-epilogue
- {
- "<text>",
- "Insert <text> at the end of the header file."
- };
-
- NarrowStrings --ixx-epilogue
- {
- "<text>",
- "Insert <text> at the end of the inline file."
- };
-
- NarrowStrings --cxx-epilogue
- {
- "<text>",
- "Insert <text> at the end of the source file."
- };
-
- NarrowStrings --fwd-epilogue
- {
- "<text>",
- "Insert <text> at the end of the forward declaration file."
- };
-
- NarrowStrings --epilogue
- {
- "<text>",
- "Insert <text> at the end of each generated file for which there
- is no file-specific epilogue."
- };
-
- NarrowString --hxx-prologue-file
- {
- "<file>",
- "Insert the content of the <file> at the beginning of the header file."
- };
-
- NarrowString --ixx-prologue-file
- {
- "<file>",
- "Insert the content of the <file> at the beginning of the inline file."
- };
-
- NarrowString --cxx-prologue-file
- {
- "<file>",
- "Insert the content of the <file> at the beginning of the source file."
- };
-
- NarrowString --fwd-prologue-file
- {
- "<file>",
- "Insert the content of the <file> at the beginning of the forward
- declaration file."
- };
-
- NarrowString --prologue-file
- {
- "<file>",
- "Insert the content of the <file> at the beginning of each generated
- file for which there is no file-specific prologue file."
- };
-
- NarrowString --hxx-epilogue-file
- {
- "<file>",
- "Insert the content of the <file> at the end of the header file."
- };
-
- NarrowString --ixx-epilogue-file
- {
- "<file>",
- "Insert the content of the <file> at the end of the inline file."
- };
-
- NarrowString --cxx-epilogue-file
- {
- "<file>",
- "Insert the content of the <file> at the end of the source file."
- };
-
- NarrowString --fwd-epilogue-file
- {
- "<file>",
- "Insert the content of the <file> at the end of the forward declaration
- file."
- };
-
- NarrowString --epilogue-file
- {
- "<file>",
- "Insert the content of the <file> at the end of each generated file
- for which there is no file-specific epilogue file."
- };
-
- // Export options.
- //
- NarrowString --export-symbol
- {
- "<symbol>",
- "Insert <symbol> in places where DLL export/import control statements
- (\cb{__declspec(dllexport/dllimport)}) are necessary."
- };
-
- bool --export-xml-schema
- {
- "Export/import types in the XML Schema namespace using the export
- symbol provided with the \cb{--export-symbol} option. The
- \cb{XSD_NO_EXPORT} macro can be used to omit this code during C++
- compilation, which may be useful if you would like to use the same
- generated code across multiple platforms."
- };
-
- bool --export-maps
- {
- "Export polymorphism support maps from a Win32 DLL into which this
- generated code is placed. This is necessary when your type hierarchy
- is split across several DLLs since otherwise each DLL will have its
- own set of maps. In this situation the generated code for the DLL
- which contains base types and/or substitution group heads should be
- compiled with this option and the generated code for all other DLLs
- should be compiled with \cb{--import-maps}. This option is only valid
- together with \cb{--generate-polymorphic}. The \cb{XSD_NO_EXPORT}
- macro can be used to omit this code during C++ compilation, which may
- be useful if you would like to use the same generated code across
- multiple platforms."
- };
-
- bool --import-maps
- {
- "Import polymorphism support maps to a Win32 DLL or executable into
- which this generated code is linked. See the \cb{--export-maps}
- option documentation for details. This options is only valid together
- with \cb{--generate-polymorphic}. The \cb{XSD_NO_EXPORT} macro can be
- used to omit this code during C++ compilation, which may be useful if
- you would like to use the same generated code across multiple
- platforms."
- };
-
- // Make dependency generation.
- //
- bool --generate-dep
- {
- "Generate \cb{make} dependency information. This option triggers the
- creation of the \cb{.d} file containing the dependencies of the
- generated files on the main schema file as well as all the schema
- files that it includes/imports, transitively. This dependency file
- is then normally included into the main \cb{makefile} to implement
- automatic dependency tracking.
-
- Note also that automatic dependency generation is not supported in
- the file-per-type mode (\cb{--file-per-type}). In this case, all
- the generated files are produced with a single compiler invocation
- and depend on all the schemas. As a result, it is easier to establish
- such a dependency manually, perhaps with the help of the
- \cb{--file-list*} options."
- };
-
- bool --generate-dep-only
- {
- "Generate \cb{make} dependency information only."
- };
-
- bool --dep-phony
- {
- "Generate phony targets for included/imported schema files, causing
- each to depend on nothing. Such dummy rules work around \cb{make}
- errors caused by the removal of schema files without also updating
- the dependency file to match."
- };
-
- NarrowStrings --dep-target
- {
- "<target>",
- "Change the target of the dependency rule. By default it contains
- all the generated C++ files as well as the dependency file itself,
- without any directory prefixes. If you require multiple targets,
- then you can specify them as a single, space-separated argument or
- you can repeat this option multiple times."
- };
-
- NarrowString --dep-suffix = ".d"
- {
- "<suffix>",
- "Use the provided <suffix> instead of the default \cb{.d} to
- construct the name of the dependency file."
- };
-
- NarrowString --dep-regex
- {
- "<regex>",
- "Use the provided expression to construct the name of the dependency
- file. <regex> is a Perl-like regular expression in the form
- \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. See also the REGEX
- AND SHELL QUOTING section below."
- };
- };
-}
diff --git a/xsd/xsd/cxx/options.cxx b/xsd/xsd/cxx/options.cxx
deleted file mode 100644
index 1d2e8fd..0000000
--- a/xsd/xsd/cxx/options.cxx
+++ /dev/null
@@ -1,638 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-// Begin prologue.
-//
-#include <options-parser.hxx>
-//
-// End prologue.
-
-#include <cxx/options.hxx>
-
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
-#include <ostream>
-#include <sstream>
-
-namespace cli
-{
- template <typename X>
- struct parser
- {
- static void
- parse (X& x, bool& xs, scanner& s)
- {
- std::string o (s.next ());
-
- if (s.more ())
- {
- std::string v (s.next ());
- std::istringstream is (v);
- if (!(is >> x && is.eof ()))
- throw invalid_value (o, v);
- }
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <>
- struct parser<bool>
- {
- static void
- parse (bool& x, scanner& s)
- {
- s.next ();
- x = true;
- }
- };
-
- template <>
- struct parser<std::string>
- {
- static void
- parse (std::string& x, bool& xs, scanner& s)
- {
- const char* o (s.next ());
-
- if (s.more ())
- x = s.next ();
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <typename X>
- struct parser<std::vector<X> >
- {
- static void
- parse (std::vector<X>& c, bool& xs, scanner& s)
- {
- X x;
- bool dummy;
- parser<X>::parse (x, dummy, s);
- c.push_back (x);
- xs = true;
- }
- };
-
- template <typename X>
- struct parser<std::set<X> >
- {
- static void
- parse (std::set<X>& c, bool& xs, scanner& s)
- {
- X x;
- bool dummy;
- parser<X>::parse (x, dummy, s);
- c.insert (x);
- xs = true;
- }
- };
-
- template <typename K, typename V>
- struct parser<std::map<K, V> >
- {
- static void
- parse (std::map<K, V>& m, bool& xs, scanner& s)
- {
- std::string o (s.next ());
-
- if (s.more ())
- {
- std::string ov (s.next ());
- std::string::size_type p = ov.find ('=');
-
- if (p == std::string::npos)
- {
- K k = K ();
-
- if (!ov.empty ())
- {
- std::istringstream ks (ov);
-
- if (!(ks >> k && ks.eof ()))
- throw invalid_value (o, ov);
- }
-
- m[k] = V ();
- }
- else
- {
- K k = K ();
- V v = V ();
- std::string kstr (ov, 0, p);
- std::string vstr (ov, p + 1);
-
- if (!kstr.empty ())
- {
- std::istringstream ks (kstr);
-
- if (!(ks >> k && ks.eof ()))
- throw invalid_value (o, ov);
- }
-
- if (!vstr.empty ())
- {
- std::istringstream vs (vstr);
-
- if (!(vs >> v && vs.eof ()))
- throw invalid_value (o, ov);
- }
-
- m[k] = v;
- }
- }
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <typename X, typename T, T X::*M>
- void
- thunk (X& x, scanner& s)
- {
- parser<T>::parse (x.*M, s);
- }
-
- template <typename X, typename T, T X::*M, bool X::*S>
- void
- thunk (X& x, scanner& s)
- {
- parser<T>::parse (x.*M, x.*S, s);
- }
-}
-
-#include <map>
-#include <cstring>
-
-namespace CXX
-{
- // options
- //
-
- options::
- options ()
- : std_ (cxx_version::cxx98),
- std_specified_ (false),
- char_type_ ("char"),
- char_type_specified_ (false),
- char_encoding_ (),
- char_encoding_specified_ (false),
- output_dir_ (),
- output_dir_specified_ (false),
- generate_inline_ (),
- generate_xml_schema_ (),
- extern_xml_schema_ (),
- extern_xml_schema_specified_ (false),
- namespace_map_ (),
- namespace_map_specified_ (false),
- namespace_regex_ (),
- namespace_regex_specified_ (false),
- namespace_regex_trace_ (),
- reserved_name_ (),
- reserved_name_specified_ (false),
- include_with_brackets_ (),
- include_prefix_ (),
- include_prefix_specified_ (false),
- include_regex_ (),
- include_regex_specified_ (false),
- include_regex_trace_ (),
- guard_prefix_ (),
- guard_prefix_specified_ (false),
- hxx_suffix_ (".hxx"),
- hxx_suffix_specified_ (false),
- ixx_suffix_ (".ixx"),
- ixx_suffix_specified_ (false),
- cxx_suffix_ (".cxx"),
- cxx_suffix_specified_ (false),
- fwd_suffix_ ("-fwd.hxx"),
- fwd_suffix_specified_ (false),
- hxx_regex_ (),
- hxx_regex_specified_ (false),
- ixx_regex_ (),
- ixx_regex_specified_ (false),
- cxx_regex_ (),
- cxx_regex_specified_ (false),
- fwd_regex_ (),
- fwd_regex_specified_ (false),
- hxx_prologue_ (),
- hxx_prologue_specified_ (false),
- ixx_prologue_ (),
- ixx_prologue_specified_ (false),
- cxx_prologue_ (),
- cxx_prologue_specified_ (false),
- fwd_prologue_ (),
- fwd_prologue_specified_ (false),
- prologue_ (),
- prologue_specified_ (false),
- hxx_epilogue_ (),
- hxx_epilogue_specified_ (false),
- ixx_epilogue_ (),
- ixx_epilogue_specified_ (false),
- cxx_epilogue_ (),
- cxx_epilogue_specified_ (false),
- fwd_epilogue_ (),
- fwd_epilogue_specified_ (false),
- epilogue_ (),
- epilogue_specified_ (false),
- hxx_prologue_file_ (),
- hxx_prologue_file_specified_ (false),
- ixx_prologue_file_ (),
- ixx_prologue_file_specified_ (false),
- cxx_prologue_file_ (),
- cxx_prologue_file_specified_ (false),
- fwd_prologue_file_ (),
- fwd_prologue_file_specified_ (false),
- prologue_file_ (),
- prologue_file_specified_ (false),
- hxx_epilogue_file_ (),
- hxx_epilogue_file_specified_ (false),
- ixx_epilogue_file_ (),
- ixx_epilogue_file_specified_ (false),
- cxx_epilogue_file_ (),
- cxx_epilogue_file_specified_ (false),
- fwd_epilogue_file_ (),
- fwd_epilogue_file_specified_ (false),
- epilogue_file_ (),
- epilogue_file_specified_ (false),
- export_symbol_ (),
- export_symbol_specified_ (false),
- export_xml_schema_ (),
- export_maps_ (),
- import_maps_ (),
- generate_dep_ (),
- generate_dep_only_ (),
- dep_phony_ (),
- dep_target_ (),
- dep_target_specified_ (false),
- dep_suffix_ (".d"),
- dep_suffix_specified_ (false),
- dep_regex_ (),
- dep_regex_specified_ (false)
- {
- }
-
- void options::
- print_usage (::std::wostream& os)
- {
- os << "--std <version> Specify the C++ standard that the generated code" << ::std::endl
- << " should conform to." << ::std::endl;
-
- os << "--char-type <type> Generate code using the provided character <type>" << ::std::endl
- << " instead of the default 'char'." << ::std::endl;
-
- os << "--char-encoding <enc> Specify the character encoding that should be used" << ::std::endl
- << " in the generated code." << ::std::endl;
-
- os << "--output-dir <dir> Write generated files to <dir> instead of the" << ::std::endl
- << " current directory." << ::std::endl;
-
- os << "--generate-inline Generate simple functions inline." << ::std::endl;
-
- os << "--generate-xml-schema Generate a C++ header file as if the schema being" << ::std::endl
- << " compiled defines the XML Schema namespace." << ::std::endl;
-
- os << "--extern-xml-schema <file> Include a header file derived from <file> instead" << ::std::endl
- << " of generating the XML Schema namespace mapping" << ::std::endl
- << " inline." << ::std::endl;
-
- os << "--namespace-map <xns>=<cns> Map XML Schema namespace <xns> to C++ namespace" << ::std::endl
- << " <cns>." << ::std::endl;
-
- os << "--namespace-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema namespace names to" << ::std::endl
- << " C++ namespace names." << ::std::endl;
-
- os << "--namespace-regex-trace Trace the process of applying regular expressions" << ::std::endl
- << " specified with the '--namespace-regex' option." << ::std::endl;
-
- os << "--reserved-name <n>[=<r>] Add name <n> to the list of names that should not" << ::std::endl
- << " be used as identifiers." << ::std::endl;
-
- os << "--include-with-brackets Use angle brackets (<>) instead of quotes (\"\") in" << ::std::endl
- << " generated '#include' directives." << ::std::endl;
-
- os << "--include-prefix <prefix> Add <prefix> to generated '#include' directive" << ::std::endl
- << " paths." << ::std::endl;
-
- os << "--include-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to transform '#include' directive paths." << ::std::endl;
-
- os << "--include-regex-trace Trace the process of applying regular expressions" << ::std::endl
- << " specified with the '--include-regex' option." << ::std::endl;
-
- os << "--guard-prefix <prefix> Add <prefix> to generated header inclusion guards." << ::std::endl;
-
- os << "--hxx-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
- << " '.hxx' to construct the name of the header file." << ::std::endl;
-
- os << "--ixx-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
- << " '.ixx' to construct the name of the inline file." << ::std::endl;
-
- os << "--cxx-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
- << " '.cxx' to construct the name of the source file." << ::std::endl;
-
- os << "--fwd-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
- << " '-fwd.hxx' to construct the name of the forward" << ::std::endl
- << " declaration file." << ::std::endl;
-
- os << "--hxx-regex <regex> Use the provided expression to construct the name" << ::std::endl
- << " of the header file." << ::std::endl;
-
- os << "--ixx-regex <regex> Use the provided expression to construct the name" << ::std::endl
- << " of the inline file." << ::std::endl;
-
- os << "--cxx-regex <regex> Use the provided expression to construct the name" << ::std::endl
- << " of the source file." << ::std::endl;
-
- os << "--fwd-regex <regex> Use the provided expression to construct the name" << ::std::endl
- << " of the forward declaration file." << ::std::endl;
-
- os << "--hxx-prologue <text> Insert <text> at the beginning of the header file." << ::std::endl;
-
- os << "--ixx-prologue <text> Insert <text> at the beginning of the inline file." << ::std::endl;
-
- os << "--cxx-prologue <text> Insert <text> at the beginning of the source file." << ::std::endl;
-
- os << "--fwd-prologue <text> Insert <text> at the beginning of the forward" << ::std::endl
- << " declaration file." << ::std::endl;
-
- os << "--prologue <text> Insert <text> at the beginning of each generated" << ::std::endl
- << " file for which there is no file-specific prologue." << ::std::endl;
-
- os << "--hxx-epilogue <text> Insert <text> at the end of the header file." << ::std::endl;
-
- os << "--ixx-epilogue <text> Insert <text> at the end of the inline file." << ::std::endl;
-
- os << "--cxx-epilogue <text> Insert <text> at the end of the source file." << ::std::endl;
-
- os << "--fwd-epilogue <text> Insert <text> at the end of the forward" << ::std::endl
- << " declaration file." << ::std::endl;
-
- os << "--epilogue <text> Insert <text> at the end of each generated file" << ::std::endl
- << " for which there is no file-specific epilogue." << ::std::endl;
-
- os << "--hxx-prologue-file <file> Insert the content of the <file> at the beginning" << ::std::endl
- << " of the header file." << ::std::endl;
-
- os << "--ixx-prologue-file <file> Insert the content of the <file> at the beginning" << ::std::endl
- << " of the inline file." << ::std::endl;
-
- os << "--cxx-prologue-file <file> Insert the content of the <file> at the beginning" << ::std::endl
- << " of the source file." << ::std::endl;
-
- os << "--fwd-prologue-file <file> Insert the content of the <file> at the beginning" << ::std::endl
- << " of the forward declaration file." << ::std::endl;
-
- os << "--prologue-file <file> Insert the content of the <file> at the beginning" << ::std::endl
- << " of each generated file for which there is no" << ::std::endl
- << " file-specific prologue file." << ::std::endl;
-
- os << "--hxx-epilogue-file <file> Insert the content of the <file> at the end of the" << ::std::endl
- << " header file." << ::std::endl;
-
- os << "--ixx-epilogue-file <file> Insert the content of the <file> at the end of the" << ::std::endl
- << " inline file." << ::std::endl;
-
- os << "--cxx-epilogue-file <file> Insert the content of the <file> at the end of the" << ::std::endl
- << " source file." << ::std::endl;
-
- os << "--fwd-epilogue-file <file> Insert the content of the <file> at the end of the" << ::std::endl
- << " forward declaration file." << ::std::endl;
-
- os << "--epilogue-file <file> Insert the content of the <file> at the end of" << ::std::endl
- << " each generated file for which there is no" << ::std::endl
- << " file-specific epilogue file." << ::std::endl;
-
- os << "--export-symbol <symbol> Insert <symbol> in places where DLL export/import" << ::std::endl
- << " control statements" << ::std::endl
- << " ('__declspec(dllexport/dllimport)') are necessary." << ::std::endl;
-
- os << "--export-xml-schema Export/import types in the XML Schema namespace" << ::std::endl
- << " using the export symbol provided with the" << ::std::endl
- << " '--export-symbol' option." << ::std::endl;
-
- os << "--export-maps Export polymorphism support maps from a Win32 DLL" << ::std::endl
- << " into which this generated code is placed." << ::std::endl;
-
- os << "--import-maps Import polymorphism support maps to a Win32 DLL or" << ::std::endl
- << " executable into which this generated code is" << ::std::endl
- << " linked." << ::std::endl;
-
- os << "--generate-dep Generate 'make' dependency information." << ::std::endl;
-
- os << "--generate-dep-only Generate 'make' dependency information only." << ::std::endl;
-
- os << "--dep-phony Generate phony targets for included/imported" << ::std::endl
- << " schema files, causing each to depend on nothing." << ::std::endl;
-
- os << "--dep-target <target> Change the target of the dependency rule." << ::std::endl;
-
- os << "--dep-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
- << " '.d' to construct the name of the dependency file." << ::std::endl;
-
- os << "--dep-regex <regex> Use the provided expression to construct the name" << ::std::endl
- << " of the dependency file." << ::std::endl;
- }
-
- typedef
- std::map<std::string, void (*) (options&, ::cli::scanner&)>
- _cli_options_map;
-
- static _cli_options_map _cli_options_map_;
-
- struct _cli_options_map_init
- {
- _cli_options_map_init ()
- {
- _cli_options_map_["--std"] =
- &::cli::thunk< options, cxx_version, &options::std_,
- &options::std_specified_ >;
- _cli_options_map_["--char-type"] =
- &::cli::thunk< options, NarrowString, &options::char_type_,
- &options::char_type_specified_ >;
- _cli_options_map_["--char-encoding"] =
- &::cli::thunk< options, NarrowString, &options::char_encoding_,
- &options::char_encoding_specified_ >;
- _cli_options_map_["--output-dir"] =
- &::cli::thunk< options, NarrowString, &options::output_dir_,
- &options::output_dir_specified_ >;
- _cli_options_map_["--generate-inline"] =
- &::cli::thunk< options, bool, &options::generate_inline_ >;
- _cli_options_map_["--generate-xml-schema"] =
- &::cli::thunk< options, bool, &options::generate_xml_schema_ >;
- _cli_options_map_["--extern-xml-schema"] =
- &::cli::thunk< options, NarrowString, &options::extern_xml_schema_,
- &options::extern_xml_schema_specified_ >;
- _cli_options_map_["--namespace-map"] =
- &::cli::thunk< options, NarrowStrings, &options::namespace_map_,
- &options::namespace_map_specified_ >;
- _cli_options_map_["--namespace-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::namespace_regex_,
- &options::namespace_regex_specified_ >;
- _cli_options_map_["--namespace-regex-trace"] =
- &::cli::thunk< options, bool, &options::namespace_regex_trace_ >;
- _cli_options_map_["--reserved-name"] =
- &::cli::thunk< options, NarrowStrings, &options::reserved_name_,
- &options::reserved_name_specified_ >;
- _cli_options_map_["--include-with-brackets"] =
- &::cli::thunk< options, bool, &options::include_with_brackets_ >;
- _cli_options_map_["--include-prefix"] =
- &::cli::thunk< options, NarrowString, &options::include_prefix_,
- &options::include_prefix_specified_ >;
- _cli_options_map_["--include-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::include_regex_,
- &options::include_regex_specified_ >;
- _cli_options_map_["--include-regex-trace"] =
- &::cli::thunk< options, bool, &options::include_regex_trace_ >;
- _cli_options_map_["--guard-prefix"] =
- &::cli::thunk< options, NarrowString, &options::guard_prefix_,
- &options::guard_prefix_specified_ >;
- _cli_options_map_["--hxx-suffix"] =
- &::cli::thunk< options, NarrowString, &options::hxx_suffix_,
- &options::hxx_suffix_specified_ >;
- _cli_options_map_["--ixx-suffix"] =
- &::cli::thunk< options, NarrowString, &options::ixx_suffix_,
- &options::ixx_suffix_specified_ >;
- _cli_options_map_["--cxx-suffix"] =
- &::cli::thunk< options, NarrowString, &options::cxx_suffix_,
- &options::cxx_suffix_specified_ >;
- _cli_options_map_["--fwd-suffix"] =
- &::cli::thunk< options, NarrowString, &options::fwd_suffix_,
- &options::fwd_suffix_specified_ >;
- _cli_options_map_["--hxx-regex"] =
- &::cli::thunk< options, NarrowString, &options::hxx_regex_,
- &options::hxx_regex_specified_ >;
- _cli_options_map_["--ixx-regex"] =
- &::cli::thunk< options, NarrowString, &options::ixx_regex_,
- &options::ixx_regex_specified_ >;
- _cli_options_map_["--cxx-regex"] =
- &::cli::thunk< options, NarrowString, &options::cxx_regex_,
- &options::cxx_regex_specified_ >;
- _cli_options_map_["--fwd-regex"] =
- &::cli::thunk< options, NarrowString, &options::fwd_regex_,
- &options::fwd_regex_specified_ >;
- _cli_options_map_["--hxx-prologue"] =
- &::cli::thunk< options, NarrowStrings, &options::hxx_prologue_,
- &options::hxx_prologue_specified_ >;
- _cli_options_map_["--ixx-prologue"] =
- &::cli::thunk< options, NarrowStrings, &options::ixx_prologue_,
- &options::ixx_prologue_specified_ >;
- _cli_options_map_["--cxx-prologue"] =
- &::cli::thunk< options, NarrowStrings, &options::cxx_prologue_,
- &options::cxx_prologue_specified_ >;
- _cli_options_map_["--fwd-prologue"] =
- &::cli::thunk< options, NarrowStrings, &options::fwd_prologue_,
- &options::fwd_prologue_specified_ >;
- _cli_options_map_["--prologue"] =
- &::cli::thunk< options, NarrowStrings, &options::prologue_,
- &options::prologue_specified_ >;
- _cli_options_map_["--hxx-epilogue"] =
- &::cli::thunk< options, NarrowStrings, &options::hxx_epilogue_,
- &options::hxx_epilogue_specified_ >;
- _cli_options_map_["--ixx-epilogue"] =
- &::cli::thunk< options, NarrowStrings, &options::ixx_epilogue_,
- &options::ixx_epilogue_specified_ >;
- _cli_options_map_["--cxx-epilogue"] =
- &::cli::thunk< options, NarrowStrings, &options::cxx_epilogue_,
- &options::cxx_epilogue_specified_ >;
- _cli_options_map_["--fwd-epilogue"] =
- &::cli::thunk< options, NarrowStrings, &options::fwd_epilogue_,
- &options::fwd_epilogue_specified_ >;
- _cli_options_map_["--epilogue"] =
- &::cli::thunk< options, NarrowStrings, &options::epilogue_,
- &options::epilogue_specified_ >;
- _cli_options_map_["--hxx-prologue-file"] =
- &::cli::thunk< options, NarrowString, &options::hxx_prologue_file_,
- &options::hxx_prologue_file_specified_ >;
- _cli_options_map_["--ixx-prologue-file"] =
- &::cli::thunk< options, NarrowString, &options::ixx_prologue_file_,
- &options::ixx_prologue_file_specified_ >;
- _cli_options_map_["--cxx-prologue-file"] =
- &::cli::thunk< options, NarrowString, &options::cxx_prologue_file_,
- &options::cxx_prologue_file_specified_ >;
- _cli_options_map_["--fwd-prologue-file"] =
- &::cli::thunk< options, NarrowString, &options::fwd_prologue_file_,
- &options::fwd_prologue_file_specified_ >;
- _cli_options_map_["--prologue-file"] =
- &::cli::thunk< options, NarrowString, &options::prologue_file_,
- &options::prologue_file_specified_ >;
- _cli_options_map_["--hxx-epilogue-file"] =
- &::cli::thunk< options, NarrowString, &options::hxx_epilogue_file_,
- &options::hxx_epilogue_file_specified_ >;
- _cli_options_map_["--ixx-epilogue-file"] =
- &::cli::thunk< options, NarrowString, &options::ixx_epilogue_file_,
- &options::ixx_epilogue_file_specified_ >;
- _cli_options_map_["--cxx-epilogue-file"] =
- &::cli::thunk< options, NarrowString, &options::cxx_epilogue_file_,
- &options::cxx_epilogue_file_specified_ >;
- _cli_options_map_["--fwd-epilogue-file"] =
- &::cli::thunk< options, NarrowString, &options::fwd_epilogue_file_,
- &options::fwd_epilogue_file_specified_ >;
- _cli_options_map_["--epilogue-file"] =
- &::cli::thunk< options, NarrowString, &options::epilogue_file_,
- &options::epilogue_file_specified_ >;
- _cli_options_map_["--export-symbol"] =
- &::cli::thunk< options, NarrowString, &options::export_symbol_,
- &options::export_symbol_specified_ >;
- _cli_options_map_["--export-xml-schema"] =
- &::cli::thunk< options, bool, &options::export_xml_schema_ >;
- _cli_options_map_["--export-maps"] =
- &::cli::thunk< options, bool, &options::export_maps_ >;
- _cli_options_map_["--import-maps"] =
- &::cli::thunk< options, bool, &options::import_maps_ >;
- _cli_options_map_["--generate-dep"] =
- &::cli::thunk< options, bool, &options::generate_dep_ >;
- _cli_options_map_["--generate-dep-only"] =
- &::cli::thunk< options, bool, &options::generate_dep_only_ >;
- _cli_options_map_["--dep-phony"] =
- &::cli::thunk< options, bool, &options::dep_phony_ >;
- _cli_options_map_["--dep-target"] =
- &::cli::thunk< options, NarrowStrings, &options::dep_target_,
- &options::dep_target_specified_ >;
- _cli_options_map_["--dep-suffix"] =
- &::cli::thunk< options, NarrowString, &options::dep_suffix_,
- &options::dep_suffix_specified_ >;
- _cli_options_map_["--dep-regex"] =
- &::cli::thunk< options, NarrowString, &options::dep_regex_,
- &options::dep_regex_specified_ >;
- }
- };
-
- static _cli_options_map_init _cli_options_map_init_;
-
- bool options::
- _parse (const char* o, ::cli::scanner& s)
- {
- _cli_options_map::const_iterator i (_cli_options_map_.find (o));
-
- if (i != _cli_options_map_.end ())
- {
- (*(i->second)) (*this, s);
- return true;
- }
-
- // options base
- //
- if (::options::_parse (o, s))
- return true;
-
- return false;
- }
-}
-
-// Begin epilogue.
-//
-//
-// End epilogue.
-
diff --git a/xsd/xsd/cxx/options.hxx b/xsd/xsd/cxx/options.hxx
deleted file mode 100644
index dea93a0..0000000
--- a/xsd/xsd/cxx/options.hxx
+++ /dev/null
@@ -1,440 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-#ifndef CXX_OPTIONS_HXX
-#define CXX_OPTIONS_HXX
-
-// Begin prologue.
-//
-//
-// End prologue.
-
-#include <cstddef>
-
-#include <types.hxx>
-
-#include <cxx/option-types.hxx>
-
-#include <options.hxx>
-
-namespace CXX
-{
- class options: public ::options
- {
- public:
- // Option accessors.
- //
- const cxx_version&
- std () const;
-
- bool
- std_specified () const;
-
- const NarrowString&
- char_type () const;
-
- bool
- char_type_specified () const;
-
- const NarrowString&
- char_encoding () const;
-
- bool
- char_encoding_specified () const;
-
- const NarrowString&
- output_dir () const;
-
- bool
- output_dir_specified () const;
-
- const bool&
- generate_inline () const;
-
- const bool&
- generate_xml_schema () const;
-
- const NarrowString&
- extern_xml_schema () const;
-
- bool
- extern_xml_schema_specified () const;
-
- const NarrowStrings&
- namespace_map () const;
-
- bool
- namespace_map_specified () const;
-
- const NarrowStrings&
- namespace_regex () const;
-
- bool
- namespace_regex_specified () const;
-
- const bool&
- namespace_regex_trace () const;
-
- const NarrowStrings&
- reserved_name () const;
-
- bool
- reserved_name_specified () const;
-
- const bool&
- include_with_brackets () const;
-
- const NarrowString&
- include_prefix () const;
-
- bool
- include_prefix_specified () const;
-
- const NarrowStrings&
- include_regex () const;
-
- bool
- include_regex_specified () const;
-
- const bool&
- include_regex_trace () const;
-
- const NarrowString&
- guard_prefix () const;
-
- bool
- guard_prefix_specified () const;
-
- const NarrowString&
- hxx_suffix () const;
-
- bool
- hxx_suffix_specified () const;
-
- const NarrowString&
- ixx_suffix () const;
-
- bool
- ixx_suffix_specified () const;
-
- const NarrowString&
- cxx_suffix () const;
-
- bool
- cxx_suffix_specified () const;
-
- const NarrowString&
- fwd_suffix () const;
-
- bool
- fwd_suffix_specified () const;
-
- const NarrowString&
- hxx_regex () const;
-
- bool
- hxx_regex_specified () const;
-
- const NarrowString&
- ixx_regex () const;
-
- bool
- ixx_regex_specified () const;
-
- const NarrowString&
- cxx_regex () const;
-
- bool
- cxx_regex_specified () const;
-
- const NarrowString&
- fwd_regex () const;
-
- bool
- fwd_regex_specified () const;
-
- const NarrowStrings&
- hxx_prologue () const;
-
- bool
- hxx_prologue_specified () const;
-
- const NarrowStrings&
- ixx_prologue () const;
-
- bool
- ixx_prologue_specified () const;
-
- const NarrowStrings&
- cxx_prologue () const;
-
- bool
- cxx_prologue_specified () const;
-
- const NarrowStrings&
- fwd_prologue () const;
-
- bool
- fwd_prologue_specified () const;
-
- const NarrowStrings&
- prologue () const;
-
- bool
- prologue_specified () const;
-
- const NarrowStrings&
- hxx_epilogue () const;
-
- bool
- hxx_epilogue_specified () const;
-
- const NarrowStrings&
- ixx_epilogue () const;
-
- bool
- ixx_epilogue_specified () const;
-
- const NarrowStrings&
- cxx_epilogue () const;
-
- bool
- cxx_epilogue_specified () const;
-
- const NarrowStrings&
- fwd_epilogue () const;
-
- bool
- fwd_epilogue_specified () const;
-
- const NarrowStrings&
- epilogue () const;
-
- bool
- epilogue_specified () const;
-
- const NarrowString&
- hxx_prologue_file () const;
-
- bool
- hxx_prologue_file_specified () const;
-
- const NarrowString&
- ixx_prologue_file () const;
-
- bool
- ixx_prologue_file_specified () const;
-
- const NarrowString&
- cxx_prologue_file () const;
-
- bool
- cxx_prologue_file_specified () const;
-
- const NarrowString&
- fwd_prologue_file () const;
-
- bool
- fwd_prologue_file_specified () const;
-
- const NarrowString&
- prologue_file () const;
-
- bool
- prologue_file_specified () const;
-
- const NarrowString&
- hxx_epilogue_file () const;
-
- bool
- hxx_epilogue_file_specified () const;
-
- const NarrowString&
- ixx_epilogue_file () const;
-
- bool
- ixx_epilogue_file_specified () const;
-
- const NarrowString&
- cxx_epilogue_file () const;
-
- bool
- cxx_epilogue_file_specified () const;
-
- const NarrowString&
- fwd_epilogue_file () const;
-
- bool
- fwd_epilogue_file_specified () const;
-
- const NarrowString&
- epilogue_file () const;
-
- bool
- epilogue_file_specified () const;
-
- const NarrowString&
- export_symbol () const;
-
- bool
- export_symbol_specified () const;
-
- const bool&
- export_xml_schema () const;
-
- const bool&
- export_maps () const;
-
- const bool&
- import_maps () const;
-
- const bool&
- generate_dep () const;
-
- const bool&
- generate_dep_only () const;
-
- const bool&
- dep_phony () const;
-
- const NarrowStrings&
- dep_target () const;
-
- bool
- dep_target_specified () const;
-
- const NarrowString&
- dep_suffix () const;
-
- bool
- dep_suffix_specified () const;
-
- const NarrowString&
- dep_regex () const;
-
- bool
- dep_regex_specified () const;
-
- // Print usage information.
- //
- static void
- print_usage (::std::wostream&);
-
- // Implementation details.
- //
- protected:
- options ();
-
- bool
- _parse (const char*, ::cli::scanner&);
-
- public:
- cxx_version std_;
- bool std_specified_;
- NarrowString char_type_;
- bool char_type_specified_;
- NarrowString char_encoding_;
- bool char_encoding_specified_;
- NarrowString output_dir_;
- bool output_dir_specified_;
- bool generate_inline_;
- bool generate_xml_schema_;
- NarrowString extern_xml_schema_;
- bool extern_xml_schema_specified_;
- NarrowStrings namespace_map_;
- bool namespace_map_specified_;
- NarrowStrings namespace_regex_;
- bool namespace_regex_specified_;
- bool namespace_regex_trace_;
- NarrowStrings reserved_name_;
- bool reserved_name_specified_;
- bool include_with_brackets_;
- NarrowString include_prefix_;
- bool include_prefix_specified_;
- NarrowStrings include_regex_;
- bool include_regex_specified_;
- bool include_regex_trace_;
- NarrowString guard_prefix_;
- bool guard_prefix_specified_;
- NarrowString hxx_suffix_;
- bool hxx_suffix_specified_;
- NarrowString ixx_suffix_;
- bool ixx_suffix_specified_;
- NarrowString cxx_suffix_;
- bool cxx_suffix_specified_;
- NarrowString fwd_suffix_;
- bool fwd_suffix_specified_;
- NarrowString hxx_regex_;
- bool hxx_regex_specified_;
- NarrowString ixx_regex_;
- bool ixx_regex_specified_;
- NarrowString cxx_regex_;
- bool cxx_regex_specified_;
- NarrowString fwd_regex_;
- bool fwd_regex_specified_;
- NarrowStrings hxx_prologue_;
- bool hxx_prologue_specified_;
- NarrowStrings ixx_prologue_;
- bool ixx_prologue_specified_;
- NarrowStrings cxx_prologue_;
- bool cxx_prologue_specified_;
- NarrowStrings fwd_prologue_;
- bool fwd_prologue_specified_;
- NarrowStrings prologue_;
- bool prologue_specified_;
- NarrowStrings hxx_epilogue_;
- bool hxx_epilogue_specified_;
- NarrowStrings ixx_epilogue_;
- bool ixx_epilogue_specified_;
- NarrowStrings cxx_epilogue_;
- bool cxx_epilogue_specified_;
- NarrowStrings fwd_epilogue_;
- bool fwd_epilogue_specified_;
- NarrowStrings epilogue_;
- bool epilogue_specified_;
- NarrowString hxx_prologue_file_;
- bool hxx_prologue_file_specified_;
- NarrowString ixx_prologue_file_;
- bool ixx_prologue_file_specified_;
- NarrowString cxx_prologue_file_;
- bool cxx_prologue_file_specified_;
- NarrowString fwd_prologue_file_;
- bool fwd_prologue_file_specified_;
- NarrowString prologue_file_;
- bool prologue_file_specified_;
- NarrowString hxx_epilogue_file_;
- bool hxx_epilogue_file_specified_;
- NarrowString ixx_epilogue_file_;
- bool ixx_epilogue_file_specified_;
- NarrowString cxx_epilogue_file_;
- bool cxx_epilogue_file_specified_;
- NarrowString fwd_epilogue_file_;
- bool fwd_epilogue_file_specified_;
- NarrowString epilogue_file_;
- bool epilogue_file_specified_;
- NarrowString export_symbol_;
- bool export_symbol_specified_;
- bool export_xml_schema_;
- bool export_maps_;
- bool import_maps_;
- bool generate_dep_;
- bool generate_dep_only_;
- bool dep_phony_;
- NarrowStrings dep_target_;
- bool dep_target_specified_;
- NarrowString dep_suffix_;
- bool dep_suffix_specified_;
- NarrowString dep_regex_;
- bool dep_regex_specified_;
- };
-}
-
-#include <cxx/options.ixx>
-
-// Begin epilogue.
-//
-//
-// End epilogue.
-
-#endif // CXX_OPTIONS_HXX
diff --git a/xsd/xsd/cxx/options.ixx b/xsd/xsd/cxx/options.ixx
deleted file mode 100644
index 0a8cafa..0000000
--- a/xsd/xsd/cxx/options.ixx
+++ /dev/null
@@ -1,601 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-// Begin prologue.
-//
-//
-// End prologue.
-
-namespace CXX
-{
- // options
- //
-
- inline const cxx_version& options::
- std () const
- {
- return this->std_;
- }
-
- inline bool options::
- std_specified () const
- {
- return this->std_specified_;
- }
-
- inline const NarrowString& options::
- char_type () const
- {
- return this->char_type_;
- }
-
- inline bool options::
- char_type_specified () const
- {
- return this->char_type_specified_;
- }
-
- inline const NarrowString& options::
- char_encoding () const
- {
- return this->char_encoding_;
- }
-
- inline bool options::
- char_encoding_specified () const
- {
- return this->char_encoding_specified_;
- }
-
- inline const NarrowString& options::
- output_dir () const
- {
- return this->output_dir_;
- }
-
- inline bool options::
- output_dir_specified () const
- {
- return this->output_dir_specified_;
- }
-
- inline const bool& options::
- generate_inline () const
- {
- return this->generate_inline_;
- }
-
- inline const bool& options::
- generate_xml_schema () const
- {
- return this->generate_xml_schema_;
- }
-
- inline const NarrowString& options::
- extern_xml_schema () const
- {
- return this->extern_xml_schema_;
- }
-
- inline bool options::
- extern_xml_schema_specified () const
- {
- return this->extern_xml_schema_specified_;
- }
-
- inline const NarrowStrings& options::
- namespace_map () const
- {
- return this->namespace_map_;
- }
-
- inline bool options::
- namespace_map_specified () const
- {
- return this->namespace_map_specified_;
- }
-
- inline const NarrowStrings& options::
- namespace_regex () const
- {
- return this->namespace_regex_;
- }
-
- inline bool options::
- namespace_regex_specified () const
- {
- return this->namespace_regex_specified_;
- }
-
- inline const bool& options::
- namespace_regex_trace () const
- {
- return this->namespace_regex_trace_;
- }
-
- inline const NarrowStrings& options::
- reserved_name () const
- {
- return this->reserved_name_;
- }
-
- inline bool options::
- reserved_name_specified () const
- {
- return this->reserved_name_specified_;
- }
-
- inline const bool& options::
- include_with_brackets () const
- {
- return this->include_with_brackets_;
- }
-
- inline const NarrowString& options::
- include_prefix () const
- {
- return this->include_prefix_;
- }
-
- inline bool options::
- include_prefix_specified () const
- {
- return this->include_prefix_specified_;
- }
-
- inline const NarrowStrings& options::
- include_regex () const
- {
- return this->include_regex_;
- }
-
- inline bool options::
- include_regex_specified () const
- {
- return this->include_regex_specified_;
- }
-
- inline const bool& options::
- include_regex_trace () const
- {
- return this->include_regex_trace_;
- }
-
- inline const NarrowString& options::
- guard_prefix () const
- {
- return this->guard_prefix_;
- }
-
- inline bool options::
- guard_prefix_specified () const
- {
- return this->guard_prefix_specified_;
- }
-
- inline const NarrowString& options::
- hxx_suffix () const
- {
- return this->hxx_suffix_;
- }
-
- inline bool options::
- hxx_suffix_specified () const
- {
- return this->hxx_suffix_specified_;
- }
-
- inline const NarrowString& options::
- ixx_suffix () const
- {
- return this->ixx_suffix_;
- }
-
- inline bool options::
- ixx_suffix_specified () const
- {
- return this->ixx_suffix_specified_;
- }
-
- inline const NarrowString& options::
- cxx_suffix () const
- {
- return this->cxx_suffix_;
- }
-
- inline bool options::
- cxx_suffix_specified () const
- {
- return this->cxx_suffix_specified_;
- }
-
- inline const NarrowString& options::
- fwd_suffix () const
- {
- return this->fwd_suffix_;
- }
-
- inline bool options::
- fwd_suffix_specified () const
- {
- return this->fwd_suffix_specified_;
- }
-
- inline const NarrowString& options::
- hxx_regex () const
- {
- return this->hxx_regex_;
- }
-
- inline bool options::
- hxx_regex_specified () const
- {
- return this->hxx_regex_specified_;
- }
-
- inline const NarrowString& options::
- ixx_regex () const
- {
- return this->ixx_regex_;
- }
-
- inline bool options::
- ixx_regex_specified () const
- {
- return this->ixx_regex_specified_;
- }
-
- inline const NarrowString& options::
- cxx_regex () const
- {
- return this->cxx_regex_;
- }
-
- inline bool options::
- cxx_regex_specified () const
- {
- return this->cxx_regex_specified_;
- }
-
- inline const NarrowString& options::
- fwd_regex () const
- {
- return this->fwd_regex_;
- }
-
- inline bool options::
- fwd_regex_specified () const
- {
- return this->fwd_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- hxx_prologue () const
- {
- return this->hxx_prologue_;
- }
-
- inline bool options::
- hxx_prologue_specified () const
- {
- return this->hxx_prologue_specified_;
- }
-
- inline const NarrowStrings& options::
- ixx_prologue () const
- {
- return this->ixx_prologue_;
- }
-
- inline bool options::
- ixx_prologue_specified () const
- {
- return this->ixx_prologue_specified_;
- }
-
- inline const NarrowStrings& options::
- cxx_prologue () const
- {
- return this->cxx_prologue_;
- }
-
- inline bool options::
- cxx_prologue_specified () const
- {
- return this->cxx_prologue_specified_;
- }
-
- inline const NarrowStrings& options::
- fwd_prologue () const
- {
- return this->fwd_prologue_;
- }
-
- inline bool options::
- fwd_prologue_specified () const
- {
- return this->fwd_prologue_specified_;
- }
-
- inline const NarrowStrings& options::
- prologue () const
- {
- return this->prologue_;
- }
-
- inline bool options::
- prologue_specified () const
- {
- return this->prologue_specified_;
- }
-
- inline const NarrowStrings& options::
- hxx_epilogue () const
- {
- return this->hxx_epilogue_;
- }
-
- inline bool options::
- hxx_epilogue_specified () const
- {
- return this->hxx_epilogue_specified_;
- }
-
- inline const NarrowStrings& options::
- ixx_epilogue () const
- {
- return this->ixx_epilogue_;
- }
-
- inline bool options::
- ixx_epilogue_specified () const
- {
- return this->ixx_epilogue_specified_;
- }
-
- inline const NarrowStrings& options::
- cxx_epilogue () const
- {
- return this->cxx_epilogue_;
- }
-
- inline bool options::
- cxx_epilogue_specified () const
- {
- return this->cxx_epilogue_specified_;
- }
-
- inline const NarrowStrings& options::
- fwd_epilogue () const
- {
- return this->fwd_epilogue_;
- }
-
- inline bool options::
- fwd_epilogue_specified () const
- {
- return this->fwd_epilogue_specified_;
- }
-
- inline const NarrowStrings& options::
- epilogue () const
- {
- return this->epilogue_;
- }
-
- inline bool options::
- epilogue_specified () const
- {
- return this->epilogue_specified_;
- }
-
- inline const NarrowString& options::
- hxx_prologue_file () const
- {
- return this->hxx_prologue_file_;
- }
-
- inline bool options::
- hxx_prologue_file_specified () const
- {
- return this->hxx_prologue_file_specified_;
- }
-
- inline const NarrowString& options::
- ixx_prologue_file () const
- {
- return this->ixx_prologue_file_;
- }
-
- inline bool options::
- ixx_prologue_file_specified () const
- {
- return this->ixx_prologue_file_specified_;
- }
-
- inline const NarrowString& options::
- cxx_prologue_file () const
- {
- return this->cxx_prologue_file_;
- }
-
- inline bool options::
- cxx_prologue_file_specified () const
- {
- return this->cxx_prologue_file_specified_;
- }
-
- inline const NarrowString& options::
- fwd_prologue_file () const
- {
- return this->fwd_prologue_file_;
- }
-
- inline bool options::
- fwd_prologue_file_specified () const
- {
- return this->fwd_prologue_file_specified_;
- }
-
- inline const NarrowString& options::
- prologue_file () const
- {
- return this->prologue_file_;
- }
-
- inline bool options::
- prologue_file_specified () const
- {
- return this->prologue_file_specified_;
- }
-
- inline const NarrowString& options::
- hxx_epilogue_file () const
- {
- return this->hxx_epilogue_file_;
- }
-
- inline bool options::
- hxx_epilogue_file_specified () const
- {
- return this->hxx_epilogue_file_specified_;
- }
-
- inline const NarrowString& options::
- ixx_epilogue_file () const
- {
- return this->ixx_epilogue_file_;
- }
-
- inline bool options::
- ixx_epilogue_file_specified () const
- {
- return this->ixx_epilogue_file_specified_;
- }
-
- inline const NarrowString& options::
- cxx_epilogue_file () const
- {
- return this->cxx_epilogue_file_;
- }
-
- inline bool options::
- cxx_epilogue_file_specified () const
- {
- return this->cxx_epilogue_file_specified_;
- }
-
- inline const NarrowString& options::
- fwd_epilogue_file () const
- {
- return this->fwd_epilogue_file_;
- }
-
- inline bool options::
- fwd_epilogue_file_specified () const
- {
- return this->fwd_epilogue_file_specified_;
- }
-
- inline const NarrowString& options::
- epilogue_file () const
- {
- return this->epilogue_file_;
- }
-
- inline bool options::
- epilogue_file_specified () const
- {
- return this->epilogue_file_specified_;
- }
-
- inline const NarrowString& options::
- export_symbol () const
- {
- return this->export_symbol_;
- }
-
- inline bool options::
- export_symbol_specified () const
- {
- return this->export_symbol_specified_;
- }
-
- inline const bool& options::
- export_xml_schema () const
- {
- return this->export_xml_schema_;
- }
-
- inline const bool& options::
- export_maps () const
- {
- return this->export_maps_;
- }
-
- inline const bool& options::
- import_maps () const
- {
- return this->import_maps_;
- }
-
- inline const bool& options::
- generate_dep () const
- {
- return this->generate_dep_;
- }
-
- inline const bool& options::
- generate_dep_only () const
- {
- return this->generate_dep_only_;
- }
-
- inline const bool& options::
- dep_phony () const
- {
- return this->dep_phony_;
- }
-
- inline const NarrowStrings& options::
- dep_target () const
- {
- return this->dep_target_;
- }
-
- inline bool options::
- dep_target_specified () const
- {
- return this->dep_target_specified_;
- }
-
- inline const NarrowString& options::
- dep_suffix () const
- {
- return this->dep_suffix_;
- }
-
- inline bool options::
- dep_suffix_specified () const
- {
- return this->dep_suffix_specified_;
- }
-
- inline const NarrowString& options::
- dep_regex () const
- {
- return this->dep_regex_;
- }
-
- inline bool options::
- dep_regex_specified () const
- {
- return this->dep_regex_specified_;
- }
-}
-
-// Begin epilogue.
-//
-//
-// End epilogue.
diff --git a/xsd/xsd/cxx/parser/attribute-validation-source.cxx b/xsd/xsd/cxx/parser/attribute-validation-source.cxx
deleted file mode 100644
index 7ed54e4..0000000
--- a/xsd/xsd/cxx/parser/attribute-validation-source.cxx
+++ /dev/null
@@ -1,413 +0,0 @@
-// file : xsd/cxx/parser/attribute-validation-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/parser/attribute-validation-source.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- struct Test: Traversal::Attribute,
- Traversal::AnyAttribute,
- Context
- {
- Test (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- String const& name (a.name ());
-
- if (a.qualified_p () && a.namespace_ ().name ())
- {
- String const& ns (a.namespace_ ().name ());
-
- os << "n == " << strlit (name) << " &&" << endl
- << "ns == " << strlit (ns);
- }
- else
- os << "n == " << strlit (name) << " && ns.empty ()";
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& ns (a.definition_namespace ().name ());
-
- for (SemanticGraph::AnyAttribute::NamespaceIterator
- i (a.namespace_begin ()), e (a.namespace_end ()); i != e;)
- {
- if (*i == L"##any")
- {
- os << "!n.empty ()";
- }
- else if (*i == L"##other")
- {
- if (ns)
- {
- // Note that here I assume that ##other does not include
- // unqualified names in a schema with target namespace.
- // This is not what the spec says but that seems to be
- // the consensus.
- //
- os << "(!ns.empty () && ns != " << strlit (ns) << ")";
- }
- else
- os << "!ns.empty ()";
- }
- else if (*i == L"##local")
- {
- os << "(ns.empty () && !n.empty ())";
- }
- else if (*i == L"##targetNamespace")
- {
- os << "ns == " << strlit (ns);
- }
- else
- {
- os << "ns == " << strlit (*i);
- }
-
- if (++i != e)
- os << " ||" << endl;
- }
- }
- };
-
- //
- //
- struct PhaseOne: Traversal::Attribute, Context
- {
- PhaseOne (Context& c)
- : Context (c), test_ (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& name (ename (a));
- String const& inst (emember (a));
-
- SemanticGraph::Type& type (a.type ());
- String const& post (post_name (type));
- String const& ret (ret_type (type));
-
- os << "if (";
-
- test_.traverse (a);
-
- os << ")"
- << "{"
- << "if (this->" << inst << ")"
- << "{"
- << "this->" << inst << "->pre ();"
- << "this->" << inst << "->_pre_impl ();"
- << "this->" << inst << "->_characters (s);"
- << "this->" << inst << "->_post_impl ();";
-
- if (ret == L"void")
- os << "this->" << inst << "->" << post << " ();"
- << "this->" << name << " ();";
- else
- {
- // Don't create an lvalue in C++11 (think std::unique_ptr).
- // In C++98 we do it for compatibility with older/broken
- // compilers (e.g., IBM xlC that needs an lvalue to pass
- // std::auto_ptr).
- //
- if (std == cxx_version::cxx98)
- os << arg_type (type) << " tmp (this->" << inst << "->" <<
- post << " ());"
- << "this->" << name << " (tmp);";
- else
- os << "this->" << name << " (this->" << inst << "->" <<
- post << " ());";
- }
-
- os << "}";
-
- if (!a.optional_p ())
- os << "static_cast< v_state_attr_* > (" <<
- "this->v_state_attr_stack_.top ())->" << name << " = true;";
-
- os << "return true;"
- << "}";
- }
-
- private:
- Test test_;
- };
-
-
- //
- //
- struct PhaseTwo: Traversal::AnyAttribute, Context
- {
- PhaseTwo (Context& c)
- : Context (c), test_ (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- os << "if (";
-
- test_.traverse (a);
-
- os << ")" << endl
- << "{"
- << "this->_any_attribute (ns, n, s);"
- << "return true;"
- << "}";
- }
-
- private:
- Test test_;
- };
-
-
- //
- //
- struct AttributeStateInit: Traversal::Attribute, Context
- {
- AttributeStateInit (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- if (!a.optional_p ())
- os << "as." << ename (a) << " = false;";
- }
- };
-
-
- //
- //
- struct AttributeStateCheck: Traversal::Attribute, Context
- {
- AttributeStateCheck (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- if (!a.optional_p ())
- {
- String ns (a.qualified_p () ? a.namespace_ ().name () : String ());
-
- os << "if (!as." << ename (a) << ")" << endl
- << "this->_expected_attribute (" << endl
- << strlit (ns) << ", " << strlit (a.name ()) << ");";
- }
- }
- };
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c),
- phase_one_ (c),
- phase_two_ (c),
- attribute_state_init_ (c),
- attribute_state_check_ (c)
- {
- names_phase_one_ >> phase_one_;
- names_phase_two_ >> phase_two_;
-
- names_attribute_state_init_ >> attribute_state_init_;
- names_attribute_state_check_ >> attribute_state_check_;
- }
-
- virtual void
- traverse (Type& c)
- {
- bool has_att (has<Traversal::Attribute> (c));
- bool has_any (has<Traversal::AnyAttribute> (c));
-
- if (!has_att && !has_any)
- return;
-
- bool has_req_att (false);
- if (has_att)
- {
- RequiredAttributeTest test (has_req_att);
- Traversal::Names names_test (test);
- names (c, names_test);
- }
-
- String const& name (ename (c));
-
- os <<"// Attribute validation and dispatch functions for " <<
- name << "." << endl
- <<"//" << endl;
-
- if (has_att)
- {
- // _attribute_impl_phase_one
- //
- os << "bool " << name << "::" << endl
- << "_attribute_impl_phase_one (const " << string_type <<
- "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "& s)" << endl
- << "{";
-
- names (c, names_phase_one_);
-
- // Nothing matched - call our base (extension) or return false
- // if there is no base (or restriction (even from anyType)).
- //
- os << "return ";
-
- if (c.inherits_p () &&
- !c.inherits ().is_a<SemanticGraph::Restricts> ())
- {
- os << "this->" << fq_name (c.inherits ().base ()) <<
- "::_attribute_impl_phase_one (ns, n, s);";
- }
- else
- os << "false;";
-
- os << "}";
- }
-
-
- if (has_any)
- {
- // _attribute_impl_phase_two
- //
- os << "bool " << name << "::" << endl
- << "_attribute_impl_phase_two (const " << string_type <<
- "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "& s)"
- << "{";
-
- names (c, names_phase_two_);
-
- // Nothing matched - call our base (extension) or return false
- // if there is no base (or restriction (even from anyType)).
- //
- os << "return ";
-
- if (c.inherits_p () &&
- !c.inherits ().is_a<SemanticGraph::Restricts> ())
- {
- os << "this->" << fq_name (c.inherits ().base ()) <<
- "::_attribute_impl_phase_two (ns, n, s);";
- }
- else
- os << "false;";
-
- os << "}";
- }
-
- if (has_req_att)
- {
- // _pre_a_validate
- //
- os << "void " << name << "::" << endl
- << "_pre_a_validate ()"
- << "{"
- << "this->v_state_attr_stack_.push ();"
- << "v_state_attr_& as = *static_cast< v_state_attr_* > (" <<
- "this->v_state_attr_stack_.top ());"
- << endl;
-
- names (c, names_attribute_state_init_);
-
- // Call our base (extension) last.
- //
- if (c.inherits_p () &&
- !c.inherits ().is_a<SemanticGraph::Restricts> ())
- {
- os << "this->" << fq_name (c.inherits ().base ()) <<
- "::_pre_a_validate ();";
- }
-
- os << "}";
-
-
- // _post_a_validate
- //
- os << "void " << name << "::" << endl
- << "_post_a_validate ()"
- << "{";
-
- // Call our base (extension) first.
- //
- if (c.inherits_p () &&
- !c.inherits ().is_a<SemanticGraph::Restricts> ())
- {
- os << "this->" << fq_name (c.inherits ().base ()) <<
- "::_post_a_validate ();"
- << endl;
- }
-
- os << "v_state_attr_& as = *static_cast< v_state_attr_* > (" <<
- "this->v_state_attr_stack_.top ());"
- << endl;
-
- names (c, names_attribute_state_check_);
-
- os << endl
- << "this->v_state_attr_stack_.pop ();"
- << "}";
- }
- }
-
- private:
- PhaseOne phase_one_;
- Traversal::Names names_phase_one_;
-
- PhaseTwo phase_two_;
- Traversal::Names names_phase_two_;
-
- AttributeStateInit attribute_state_init_;
- Traversal::Names names_attribute_state_init_;
-
- AttributeStateCheck attribute_state_check_;
- Traversal::Names names_attribute_state_check_;
- };
- }
-
- void
- generate_attribute_validation_source (Context& ctx)
- {
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names schema_names;
-
- Namespace ns (ctx);
- Traversal::Names names;
-
- schema >> sources >> schema;
- schema >> schema_names >> ns >> names;
-
- Complex complex (ctx);
-
- names >> complex;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/attribute-validation-source.hxx b/xsd/xsd/cxx/parser/attribute-validation-source.hxx
deleted file mode 100644
index 10438fd..0000000
--- a/xsd/xsd/cxx/parser/attribute-validation-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/parser/attribute-validation-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_ATTRIBUTE_VALIDATION_SOURCE_HXX
-#define CXX_PARSER_ATTRIBUTE_VALIDATION_SOURCE_HXX
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- void
- generate_attribute_validation_source (Context&);
- }
-}
-
-#endif // CXX_PARSER_ATTRIBUTE_VALIDATION_SOURCE_HXX
diff --git a/xsd/xsd/cxx/parser/characters-validation-source.cxx b/xsd/xsd/cxx/parser/characters-validation-source.cxx
deleted file mode 100644
index ddecc70..0000000
--- a/xsd/xsd/cxx/parser/characters-validation-source.cxx
+++ /dev/null
@@ -1,74 +0,0 @@
-// file : xsd/cxx/parser/characters-validation-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/parser/characters-validation-source.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- if (!c.mixed_p ())
- return;
-
- String const& name (ename (c));
-
- os <<"// Character validation functions for " << name << "." << endl
- <<"//" << endl;
-
- // _characters_impl
- //
- os << "bool " << name << "::" << endl
- << "_characters_impl (const " << string_type << "& s)"
- << "{"
- << "this->_any_characters (s);"
- << "return true;"
- << "}";
- }
- };
- }
-
- void
- generate_characters_validation_source (Context& ctx)
- {
- //@@ Most of the time there is no mixed content type so
- // we generate an empty namespace which looks ugly. Will
- // need to implement smart namespace to handle this at
- // some point.
- //
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names schema_names;
-
- Namespace ns (ctx);
- Traversal::Names names;
-
- schema >> sources >> schema;
- schema >> schema_names >> ns >> names;
-
- Complex complex (ctx);
-
- names >> complex;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/characters-validation-source.hxx b/xsd/xsd/cxx/parser/characters-validation-source.hxx
deleted file mode 100644
index 219df3e..0000000
--- a/xsd/xsd/cxx/parser/characters-validation-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/parser/characters-validation-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_CHARACTERS_VALIDATION_SOURCE_HXX
-#define CXX_PARSER_CHARACTERS_VALIDATION_SOURCE_HXX
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- void
- generate_characters_validation_source (Context&);
- }
-}
-
-#endif // CXX_PARSER_CHARACTERS_VALIDATION_SOURCE_HXX
diff --git a/xsd/xsd/cxx/parser/driver-source.cxx b/xsd/xsd/cxx/parser/driver-source.cxx
deleted file mode 100644
index 510c965..0000000
--- a/xsd/xsd/cxx/parser/driver-source.cxx
+++ /dev/null
@@ -1,776 +0,0 @@
-// file : xsd/cxx/parser/driver-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <set>
-#include <map>
-#include <sstream>
-
-#include <cxx/parser/driver-source.hxx>
-#include <cxx/parser/print-impl-common.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- typedef map<SemanticGraph::Type*, String> TypeInstanceMap;
- typedef set<String> InstanceSet;
-
- // For base types we only want member's types, but not the
- // base itself.
- //
- struct BaseType: Traversal::Complex,
- Traversal::List,
- Context
- {
- BaseType (Context& c, Traversal::NodeBase& def)
- : Context (c), def_ (def)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- inherits (c);
-
- if (!restriction_p (c))
- names (c);
- }
-
- virtual void
- traverse (SemanticGraph::List& l)
- {
- def_.dispatch (l.argumented ().type ());
- }
-
- private:
- Traversal::NodeBase& def_;
- };
-
- struct ParserDef: Traversal::Type,
- Traversal::List,
- Traversal::Complex,
-
- Traversal::AnyType,
- Traversal::AnySimpleType,
-
- Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal,
-
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Language,
-
- Traversal::Fundamental::QName,
-
- Traversal::Fundamental::Id,
- Traversal::Fundamental::IdRef,
- Traversal::Fundamental::IdRefs,
-
- Traversal::Fundamental::AnyURI,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary,
-
- Traversal::Fundamental::Date,
- Traversal::Fundamental::DateTime,
- Traversal::Fundamental::Duration,
- Traversal::Fundamental::Day,
- Traversal::Fundamental::Month,
- Traversal::Fundamental::MonthDay,
- Traversal::Fundamental::Year,
- Traversal::Fundamental::YearMonth,
- Traversal::Fundamental::Time,
-
- Traversal::Fundamental::Entity,
- Traversal::Fundamental::Entities,
-
- Context
- {
- ParserDef (Context& c, TypeInstanceMap& map, InstanceSet& set)
- : Context (c), map_ (map), set_ (set), base_ (c, *this)
- {
- *this >> inherits_ >> base_ >> inherits_;
-
- *this >> names_;
- base_ >> names_;
-
- names_ >> member_ >> belongs_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- if (map_.find (&t) == map_.end ())
- {
- String inst (find_instance_name (t));
- map_[&t] = inst;
-
- os << fq_name (t, "impl") << " " << inst << ";";
- }
- }
-
- virtual void
- traverse (SemanticGraph::List& l)
- {
- if (map_.find (&l) == map_.end ())
- {
- String inst (find_instance_name (l));
- map_[&l] = inst;
-
- os << fq_name (l, "impl") << " " << inst << ";";
-
- dispatch (l.argumented ().type ());
- }
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- if (map_.find (&c) == map_.end ())
- {
- String inst (find_instance_name (c));
- map_[&c] = inst;
-
- os << fq_name (c, "impl") << " " << inst << ";";
-
- inherits (c);
-
- if (!restriction_p (c))
- names (c);
- }
- }
-
- // anyType & anySimpleType.
- //
- virtual void
- traverse (SemanticGraph::AnyType& t)
- {
- fund_type (t, "any_type");
- }
-
- virtual void
- traverse (SemanticGraph::AnySimpleType& t)
- {
- fund_type (t, "any_simple_type");
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean& t)
- {
- fund_type (t, "boolean");
- }
-
- // Integral types.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte& t)
- {
- fund_type (t, "byte");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte& t)
- {
- fund_type (t, "unsigned_byte");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short& t)
- {
- fund_type (t, "short");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort& t)
- {
- fund_type (t, "unsigned_short");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int& t)
- {
- fund_type (t, "int");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt& t)
- {
- fund_type (t, "unsigned_int");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long& t)
- {
- fund_type (t, "long");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong& t)
- {
- fund_type (t, "unsigned_long");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer& t)
- {
- fund_type (t, "integer");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
- {
- fund_type (t, "non_positive_integer");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
- {
- fund_type (t, "non_negative_integer");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger& t)
- {
- fund_type (t, "positive_integer");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger& t)
- {
- fund_type (t, "negative_integer");
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- fund_type (t, "float");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- fund_type (t, "double");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal& t)
- {
- fund_type (t, "decimal");
- }
-
- // Strings.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::String& t)
- {
- fund_type (t, "string");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString& t)
- {
- fund_type (t, "normalized_string");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token& t)
- {
- fund_type (t, "token");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken& t)
- {
- fund_type (t, "nmtoken");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens& t)
- {
- fund_type (t, "nmtokens");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name& t)
- {
- fund_type (t, "name");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName& t)
- {
- fund_type (t, "ncname");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Language& t)
- {
- fund_type (t, "language");
- }
-
-
- // Qualified name.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::QName& t)
- {
- fund_type (t, "qname");
- }
-
-
- // ID/IDREF.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Id& t)
- {
- fund_type (t, "id");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRef& t)
- {
- fund_type (t, "idref");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs& t)
- {
- fund_type (t, "idrefs");
- }
-
- // URI.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::AnyURI& t)
- {
- fund_type (t, "uri");
- }
-
- // Binary.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary& t)
- {
- fund_type (t, "base64_binary");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary& t)
- {
- fund_type (t, "hex_binary");
- }
-
-
- // Date/time.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Date& t)
- {
- fund_type (t, "date");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::DateTime& t)
- {
- fund_type (t, "date_time");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Duration& t)
- {
- fund_type (t, "duration");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Day& t)
- {
- fund_type (t, "day");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Month& t)
- {
- fund_type (t, "month");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::MonthDay& t)
- {
- fund_type (t, "month_day");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Year& t)
- {
- fund_type (t, "year");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::YearMonth& t)
- {
- fund_type (t, "year_month");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Time& t)
- {
- fund_type (t, "time");
- }
-
- // Entity.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Entity& t)
- {
- fund_type (t, "entity");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Entities& t)
- {
- fund_type (t, "entities");
- }
-
- private:
- virtual void
- fund_type (SemanticGraph::Type& t, String const& name)
- {
- if (map_.find (&t) == map_.end ())
- {
- String inst (find_instance_name (name));
- map_[&t] = inst;
-
- os << fq_name (t, "impl") << " " << inst << ";";
- }
- }
-
- String
- find_instance_name (String const& raw_name)
- {
- String base_name (escape (raw_name + L"_p"));
- String name (base_name);
-
- for (size_t i (1); set_.find (name) != set_.end (); ++i)
- {
- std::wostringstream os;
- os << i;
- name = base_name + os.str ();
- }
-
- set_.insert (name);
- return name;
- }
-
- String
- find_instance_name (SemanticGraph::Type& t)
- {
- return find_instance_name (t.name ());
- }
-
- TypeInstanceMap& map_;
- InstanceSet& set_;
-
- BaseType base_;
- Traversal::Inherits inherits_;
-
- Traversal::Names names_;
- Traversal::Member member_;
- Traversal::Belongs belongs_;
- };
-
- struct ArgList: Traversal::Complex,
- Traversal::List,
- Traversal::Member,
- Context
- {
- ArgList (Context& c, TypeInstanceMap& map)
- : Context (c), map_ (map), first_ (true)
- {
- inherits_ >> *this;
- names_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- inherits (c, inherits_);
-
- if (!restriction_p (c))
- names (c, names_);
- }
-
- virtual void
- traverse (SemanticGraph::List& l)
- {
- if (!first_)
- os << "," << endl;
- else
- first_ = false;
-
- os << map_[&l.argumented ().type ()];
- }
-
- virtual void
- traverse (SemanticGraph::Member& m)
- {
- if (skip (m))
- return;
-
- if (!first_)
- os << "," << endl;
- else
- first_ = false;
-
- os << map_[&m.type ()];
- }
-
- private:
- TypeInstanceMap& map_;
-
- Traversal::Inherits inherits_;
- Traversal::Names names_;
-
- bool first_;
- };
-
- struct ParserConnect: Traversal::List,
- Traversal::Complex,
- Context
- {
- ParserConnect (Context& c, TypeInstanceMap& map)
- : Context (c), map_ (map), base_ (c, *this)
- {
- *this >> inherits_ >> base_ >> inherits_;
-
- *this >> names_;
- base_ >> names_;
-
- names_ >> member_ >> belongs_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::List& l)
- {
- if (type_set_.find (&l) == type_set_.end ())
- {
- os << map_[&l] << ".parsers (" <<
- map_[&l.argumented ().type ()] << ");"
- << endl;
-
- type_set_.insert (&l);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- if (type_set_.find (&c) == type_set_.end ())
- {
- if (has_members (c))
- {
- os << map_[&c] << ".parsers (";
-
- ArgList args (*this, map_);
- args.dispatch (c);
-
- os << ");"
- << endl;
- }
-
- type_set_.insert (&c);
-
- inherits (c);
-
- if (!restriction_p (c))
- names (c);
- }
- }
-
- private:
- bool
- has_members (SemanticGraph::Complex& c)
- {
- using SemanticGraph::Complex;
-
- if (has<Traversal::Member> (c))
- return true;
-
- if (c.inherits_p ())
- {
- SemanticGraph::Type& b (c.inherits ().base ());
-
- if (Complex* cb = dynamic_cast<Complex*> (&b))
- return has_members (*cb);
-
- return b.is_a<SemanticGraph::List> ();
- }
-
- return false;
- }
-
- private:
- TypeInstanceMap& map_;
- set<SemanticGraph::Type*> type_set_;
-
- BaseType base_;
- Traversal::Inherits inherits_;
-
- Traversal::Names names_;
- Traversal::Member member_;
- Traversal::Belongs belongs_;
- };
- }
-
- void
- generate_driver_source (Context& ctx)
- {
- // Figure out the root element. Validator should have made sure
- // it is unique.
- //
- SemanticGraph::Element* root (0);
- {
- Traversal::Schema schema;
- Sources sources;
-
- schema >> sources >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- RootElement root_element (ctx.options, root);
-
- schema >> schema_names >> ns >> ns_names >> root_element;
-
- schema.dispatch (ctx.schema_root);
- }
-
- std::wostream& os (ctx.os);
- String const& L (ctx.L);
- String const& cerr (ctx.cerr_inst);
-
- InstanceSet set;
- TypeInstanceMap map;
- SemanticGraph::Type& root_type (root->type ());
-
- set.insert ("doc_p");
-
- os << "#include <iostream>" << endl
- << endl
- << "int" << endl
- << "main (int argc, char* argv[])"
- << "{"
- << "if (argc != 2)"
- << "{"
- << cerr << " << " << L << "\"usage: \" << argv[0] << " <<
- L << "\" file.xml\" << std::endl;"
- << "return 1;"
- << "}"
- << "try"
- << "{"
- << "// Instantiate individual parsers." << endl
- << "//" << endl;
-
- {
- ParserDef def (ctx, map, set);
- def.dispatch (root_type);
- }
-
- os << endl
- << "// Connect the parsers together." << endl
- << "//" << endl;
-
- {
- ParserConnect connect (ctx, map);
- connect.dispatch (root_type);
- }
-
- String const& root_p (map[&root_type]);
-
- os << "// Parse the XML document." << endl
- << "//" << endl;
-
- if (root->namespace_().name ())
- os << ctx.xs_ns_name () << "::document doc_p (" << endl
- << root_p << "," << endl
- << ctx.strlit (root->namespace_().name ()) << "," << endl
- << ctx.strlit (root->name ()) << ");"
- << endl;
- else
- os << ctx.xs_ns_name () << "::document doc_p (" << root_p << ", " <<
- ctx.strlit (root->name ()) << ");"
- << endl;
-
- os << root_p << ".pre ();"
- << "doc_p.parse (argv[1]);";
-
- String const& ret (Context::ret_type (root_type));
- String const& post (Context::post_name (root_type));
-
- if (ret == L"void")
- os << root_p << "." << post << " ();";
- else
- {
- os << Context::arg_type (root_type) << " v (" <<
- root_p << "." << post << " ());"
- << endl;
-
- if (ctx.options.generate_print_impl ())
- {
- PrintCall t (ctx, root->name (), "v");
- t.dispatch (root_type);
- }
- else
- os << "// TODO" << endl
- << "//" << endl;
- }
-
- os << "}" // try
- << "catch (const " << ctx.xs_ns_name () << "::exception& e)"
- << "{"
- << cerr << " << e << std::endl;"
- << "return 1;"
- << "}"
- << "catch (const std::ios_base::failure&)"
- << "{"
- << cerr << " << argv[1] << " <<
- L << "\": error: io failure\" << std::endl;"
- << "return 1;"
- << "}"
- << "}";
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/driver-source.hxx b/xsd/xsd/cxx/parser/driver-source.hxx
deleted file mode 100644
index 53e19d8..0000000
--- a/xsd/xsd/cxx/parser/driver-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/parser/driver-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_DRIVER_SOURCE_HXX
-#define CXX_PARSER_DRIVER_SOURCE_HXX
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- void
- generate_driver_source (Context&);
- }
-}
-
-#endif // CXX_PARSER_DRIVER_SOURCE_HXX
diff --git a/xsd/xsd/cxx/parser/element-validation-source.cxx b/xsd/xsd/cxx/parser/element-validation-source.cxx
deleted file mode 100644
index b2c244e..0000000
--- a/xsd/xsd/cxx/parser/element-validation-source.cxx
+++ /dev/null
@@ -1,1601 +0,0 @@
-// file : xsd/cxx/parser/element-validation-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <vector>
-
-#include <cxx/parser/element-validation-source.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- typedef vector<SemanticGraph::Particle*> Particles;
-
- //
- //
- struct ParticleTest: Traversal::Compositor,
- Traversal::Element,
- Traversal::Any,
- Context
- {
- ParticleTest (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- String const& name (e.name ());
-
- if (polymorphic && e.global_p ())
- os << "(";
-
- if (e.qualified_p () && e.namespace_ ().name ())
- {
- String const& ns (e.namespace_ ().name ());
-
- os << "n == " << strlit (name) << " &&" << endl
- << "ns == " << strlit (ns);
- }
- else
- os << "n == " << strlit (name) << " && ns.empty ()";
-
-
- // Only a globally-defined element can be a subst-group root.
- //
- if (polymorphic && e.global_p ())
- {
- os << ") ||" << endl
- << "::xsd::cxx::parser::substitution_map_instance< " <<
- char_type << " > ().check (" << endl
- << "ns, n, " << strlit (e.namespace_ ().name ()) <<
- ", " << strlit (name) << ", t)";
- }
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& ns (a.definition_namespace ().name ());
-
- // Note that we need to make sure the "flush" element (both name
- // and namespace are empty) does not match any compositor.
- //
- for (SemanticGraph::Any::NamespaceIterator i (a.namespace_begin ()),
- e (a.namespace_end ()); i != e;)
- {
- if (*i == L"##any")
- {
- os << "!n.empty ()";
- }
- else if (*i == L"##other")
- {
- if (ns)
- {
- // Note that here I assume that ##other does not include
- // unqualified names in a schema with target namespace.
- // This is not what the spec says but that seems to be
- // the consensus.
- //
- os << "(!ns.empty () && ns != " << strlit (ns) << ")";
- }
- else
- os << "!ns.empty ()";
- }
- else if (*i == L"##local")
- {
- os << "(ns.empty () && !n.empty ())";
- }
- else if (*i == L"##targetNamespace")
- {
- os << "ns == " << strlit (ns);
- }
- else
- {
- os << "ns == " << strlit (*i);
- }
-
- if (++i != e)
- os << " ||" << endl;
- }
- }
-
- virtual void
- traverse (SemanticGraph::Compositor& c)
- {
- // This compositor should already have been tested for
- // triviality (empty).
- //
- Particles const& p (c.context ().get<Particles> ("prefixes"));
-
- bool paren (p.size () != 1);
-
- for (Particles::const_iterator i (p.begin ()), e (p.end ());
- i != e;)
- {
- if (paren)
- os << "(";
-
- dispatch (**i);
-
- if (paren)
- os << ")";
-
- if (++i != e)
- os << " ||" << endl;
- }
- }
- };
-
-
- // Generates particle namespace-name pair. Used to generate
- // the _expected_element call.
- //
- struct ParticleName: Traversal::Compositor,
- Traversal::Element,
- Traversal::Any,
- Context
- {
- ParticleName (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- String ns (e.qualified_p () ? e.namespace_ ().name () : String ());
- os << strlit (ns) << ", " << strlit (e.name ());
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& ns (*a.namespace_begin ());
- os << strlit (ns) << ", " << L << "\"*\"";
- }
-
- virtual void
- traverse (SemanticGraph::Compositor& c)
- {
- Particles const& p (c.context ().get<Particles> ("prefixes"));
-
- dispatch (**p.begin ());
- }
- };
-
-
- // Common base for the ParticleIn{All, Choice, Sequence} treversers.
- //
- struct ParticleInCompositor: Context
- {
- protected:
- ParticleInCompositor (Context& c, SemanticGraph::Complex& type)
- : Context (c), type_ (type), particle_test_ (c)
- {
- }
-
-
- // Generate sub-parser setup code as well as the pre/post calls.
- //
- void
- pre_post_calls (SemanticGraph::Particle& p)
- {
- using SemanticGraph::Element;
- using SemanticGraph::Complex;
-
- if (Element* e = dynamic_cast<Element*> (&p))
- {
- SemanticGraph::Type& type (e->type ());
- String const& fq_type (fq_name (type));
- bool poly (polymorphic && !anonymous (type));
-
- String name, inst, def_parser, map;
-
- if (e->context ().count("name"))
- {
- name = ename (*e);
-
- if (poly)
- {
- def_parser = emember (*e);
- map = emember_map (*e);
- inst = "p";
- }
- else
- inst = L"this->" + emember (*e);
- }
- else
- {
- // This is the subsequent mentioning of this element in the
- // content. We need to find the first one in order to get
- // to the escaped names.
- //
- Complex::NamesIteratorPair ip (type_.find (e->name ()));
- assert (ip.first != ip.second);
- Element& fe (dynamic_cast<Element&>(ip.first->named ()));
-
- name = ename (fe);
-
- if (poly)
- {
- def_parser = emember (fe);
- map = emember_map (fe);
- inst = "p";
- }
- else
- inst = L"this->" + emember (fe);
- }
-
- if (poly)
- {
- // For pre-computing length.
- //
- String type_id (type.name ());
-
- if (String type_ns = xml_ns_name (type))
- {
- type_id += L' ';
- type_id += type_ns;
- }
-
- os << fq_type << "* p = 0;"
- << endl
- << "if (t == 0 && this->" << def_parser << " != 0)" << endl
- << inst << " = this->" << def_parser << ";"
- << "else"
- << "{"
- << string_type << " ts (" << fq_name (type) <<
- "::_static_type (), " << type_id.size () << "UL);"
- << endl
- << "if (t == 0)" << endl
- << "t = &ts;"
- << endl
- << "if (this->" << def_parser << " != 0 && *t == ts)" << endl
- << inst << " = this->" << def_parser << ";"
- << "else"
- << "{";
-
- // Check that the types are related by inheritance.
- //
- os << "if (t != &ts &&" << endl
- << "!::xsd::cxx::parser::validating::" <<
- "inheritance_map_instance< " << char_type <<
- " > ().check (" << endl
- << "t->data (), ts))" << endl
- << "throw ::xsd::cxx::parser::dynamic_type< " << char_type <<
- " > (*t);"
- << endl
- << "if (this->" << map << " != 0)" << endl
- << inst << " = dynamic_cast< " << fq_type << "* > (" << endl
- << "this->" << map << "->find (*t));"
- << "}"
- << "}";
- }
-
- os << "this->" << complex_base << "::context_.top ()." <<
- "parser_ = " << inst << ";"
- << endl
- << "if (" << inst << ")" << endl
- << inst << "->pre ();"
- << "}"
- << "else" // start
- << "{";
-
- if (poly)
- os << fq_type << "* p =" << endl
- << "dynamic_cast< " << fq_type << "* > (" << endl
- << "this->" << complex_base << "::context_.top ().parser_);"
- << endl;
-
- os << "if (" << inst << ")"
- << "{";
-
- String const& ret (ret_type (type));
- String const& post (post_name (type));
-
- if (ret == L"void")
- os << inst << "->" << post << " ();"
- << "this->" << name << " ();";
- else
- {
- // Don't create an lvalue in C++11 (think std::unique_ptr).
- // In C++98 we do it for compatibility with older/broken
- // compilers (e.g., IBM xlC that needs an lvalue to pass
- // std::auto_ptr).
- //
- if (std == cxx_version::cxx98)
- os << arg_type (type) << " tmp (" << inst << "->" <<
- post << " ());"
- << "this->" << name << " (tmp);";
- else
- os << "this->" << name << " (" << inst << "->" <<
- post << " ());";
- }
-
- os << "}";
- }
- else
- {
- os << "this->_start_any_element (ns, n, t);"
- << "this->" << complex_base << "::context_.top ().any_ = true;"
- << "}"
- << "else" // start
- << "{"
- << "this->" << complex_base << "::context_.top ().any_ = false;"
- << "this->_end_any_element (ns, n);";
- }
- }
-
- protected:
- SemanticGraph::Complex& type_;
- ParticleTest particle_test_;
- };
-
-
-
- // The 'all' compositor can only contain elements with min={0,1}, max=1.
- //
- struct ParticleInAll: Traversal::Element,
- ParticleInCompositor
- {
- ParticleInAll (Context& c, SemanticGraph::Complex& type)
- : ParticleInCompositor (c, type)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- size_t state (e.context ().get<size_t> ("state"));
-
- if (state != 0)
- os << "else ";
-
- os << "if (";
-
- particle_test_.traverse (e);
-
- os << ")"
- << "{"
- << "if (count[" << state << "UL] == 0)"
- << "{"
- << "if (start)"
- << "{";
-
- pre_post_calls (e);
-
- os << "count[" << state << "UL] = 1;"
- << "}"
- << "}"
- << "else" // count != 0
- << "{"
- << "assert (start);" // Assuming well-formed XML.
-
- // Since there is never more content after 'all', we could have
- // as well thrown here. But instead we will let the code in
- // start_element handle this along with other unexpected
- // elements.
- //
- << "state = ~0UL;"
- << "}"
- << "}";
- }
- };
-
-
- //
- //
- struct ParticleInChoice: Traversal::Particle,
- Traversal::Compositor,
- ParticleInCompositor
- {
- ParticleInChoice (Context& c, SemanticGraph::Complex& type)
- : ParticleInCompositor (c, type), particle_name_ (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Particle& p)
- {
- using SemanticGraph::Element;
-
- size_t state (p.context ().get<size_t> ("state"));
-
- size_t min (p.min ()), max (p.max ());
-
- os << "case " << state << "UL:" << endl
- << "{";
-
- if (max != 1) // We don't need the test if max == 1.
- {
- os << "if (";
-
- particle_test_.dispatch (p);
-
- os << ")"
- << "{";
- }
-
- os << "if (start)"
- << "{";
-
- pre_post_calls (p);
-
- switch (max)
- {
- case 0:
- {
- os << "count++;";
- break;
- }
- case 1:
- {
- // We do not need to increment count because min <= max and
- // we do not generate min check for min <= 1 (see below).
- //
- os << "state = ~0UL;";
- break;
- }
- default:
- {
- os << "if (++count == " << max << "UL)" << endl
- << "state = ~0UL;";
- }
- };
-
- os << "}"; // start
-
- // We've already moved to the final state if max == 1.
- //
- if (max != 1)
- {
- os << "}"
- << "else"
- << "{"
- << "assert (start);"; // Assuming well-formed XML
-
- // Check if min cardinality requirements have been met. Since
- // count is always >= 1, don't generate dead code if min <= 1.
- //
- if (min > 1)
- {
- os << "if (count < " << min << "UL)" << endl
- << "this->_expected_element (" << endl;
-
- particle_name_.dispatch (p);
-
- os << "," << endl
- << "ns, n);";
- }
-
-
- os << "state = ~0UL;"
- << "}";
- }
-
- os << "break;"
- << "}"; // case
- }
-
- virtual void
- traverse (SemanticGraph::Compositor& c)
- {
- using SemanticGraph::Compositor;
-
- size_t max (c.max ());
- size_t min (c.context ().get<size_t> ("effective-min"));
- size_t n (c.context ().get<size_t> ("comp-number"));
- size_t state (c.context ().get<size_t> ("state"));
-
- String func (c.is_a<SemanticGraph::Choice> () ?
- "choice_" : "sequence_");
-
- os << "case " << state << "UL:" << endl
- << "{"
- << "unsigned long s (~0UL);"
- << endl;
-
- bool first (true);
-
- for (Compositor::ContainsIterator ci (c.contains_begin ());
- ci != c.contains_end (); ++ci)
- {
- SemanticGraph::Particle& p (ci->particle ());
-
- if (p.is_a<Compositor> () && !c.context ().count ("comp-number"))
- continue; // Empty compositor.
-
- if (!p.context ().count ("prefix"))
- break;
-
- size_t state (p.context ().get<size_t> ("state"));
-
- if (first)
- first = false;
- else
- os << "else ";
-
- os << "if (";
-
- particle_test_.dispatch (p);
-
- os << ")" << endl
- << "s = " << state << "UL;";
- }
-
- // This compositor.
- //
- os << endl
- << "if (s != ~0UL)"
- << "{"
- << "assert (start);"; // End is handled by the sub-machine.
-
- switch (max)
- {
- case 0:
- {
- os << "count++;";
- break;
- }
- case 1:
- {
- // We do not need to increment count because min <= max and
- // we do not generate min check for min <= 1 (see below).
- //
- os << "state = ~0UL;";
- break;
- }
- default:
- {
- os << "if (++count == " << max << "UL)" << endl
- << "state = ~0UL;";
- }
- };
-
- // Delegate to the sub-machine.
- //
-
- os << endl
- << "v_state_& vs = *static_cast< v_state_* > (" <<
- "this->v_state_stack_.top ());"
- << "v_state_descr_& vd = vs.data[vs.size++];" // push
- << endl
- << "vd.func = &" << ename (type_) << "::" << func << n << ";"
- << "vd.state = s;"
- << "vd.count = 0;"
- << endl
- << "this->" << func << n << " (vd.state, vd.count, ns, n, t, true);"
- << "}";
-
-
- // Not this compositor. We've elready moved to the final state
- // if max == 1.
- //
- if (max != 1)
- {
- os << "else"
- << "{"
- << "assert (start);"; // Assuming well-formed XML
-
- // Check if min cardinality requirements have been met. Since
- // count is always >= 1, don't generate dead code if min <= 1.
- //
- if (min > 1)
- {
- os << "if (count < " << min << "UL)" << endl
- << "this->_expected_element (" << endl;
-
- particle_name_.dispatch (c);
-
- os << "," << endl
- << "ns, n);";
- }
-
- os << "state = ~0UL;"
- << "}";
- }
-
- os << "break;"
- << "}"; // case
- }
-
- private:
- ParticleName particle_name_;
- };
-
-
- //
- //
- struct ParticleInSequence: Traversal::Particle,
- Traversal::Compositor,
- ParticleInCompositor
- {
- ParticleInSequence (Context& c,
- size_t state,
- size_t next_state,
- SemanticGraph::Complex& type)
- : ParticleInCompositor (c, type),
- state_ (state), particle_name_ (c)
- {
- // next_state == 0 indicates the terminal state (~0UL).
- //
- if (next_state != 0)
- {
- std::wostringstream ostr;
- ostr << next_state;
- next_state_ = ostr.str ();
- }
- else
- next_state_ = L"~0";
- }
-
- virtual void
- traverse (SemanticGraph::Particle& p)
- {
- size_t min (p.min ()), max (p.max ());
-
- os << "case " << state_ << "UL:" << endl
- << "{"
- << "if (";
-
- particle_test_.dispatch (p);
-
- os << ")"
- << "{";
-
- // This element.
- //
-
- os << "if (start)"
- << "{";
-
- pre_post_calls (p);
-
- switch (max)
- {
- case 0:
- {
- os << "count++;";
- break;
- }
- case 1:
- {
- os << "count = 0;"
- << "state = " << next_state_ << "UL;";
- break;
- }
- default:
- {
- os << "if (++count == " << max << "UL)"
- << "{"
- << "count = 0;"
- << "state = " << next_state_ << "UL;"
- << "}";
- }
- };
-
- os << "}" // start
- << "break;"
- << "}";
-
- // Not this element.
- //
-
- os << "else"
- << "{"
- << "assert (start);"; // Assuming well-formed XML.
-
- // Check if min cardinality requirements have been met. Since
- // count is always >= 0, don't generate dead code if min == 0.
- //
- if (min != 0)
- {
- os << "if (count < " << min << "UL)" << endl
- << "this->_expected_element (" << endl;
-
- particle_name_.dispatch (p);
-
- os << "," << endl
- << "ns, n);";
- }
-
- os << "count = 0;"
- << "state = " << next_state_ << "UL;"
- << "// Fall through." << endl
- << "}" // else
- << "}"; // case
- }
-
- virtual void
- traverse (SemanticGraph::Compositor& c)
- {
- using SemanticGraph::Compositor;
-
- size_t max (c.max ());
- size_t min (c.context ().get<size_t> ("effective-min"));
- size_t n (c.context ().get<size_t> ("comp-number"));
-
- String func (c.is_a<SemanticGraph::Choice> () ?
- "choice_" : "sequence_");
-
- os << "case " << state_ << "UL:" << endl
- << "{"
- << "unsigned long s (~0UL);"
- << endl;
-
- bool first (true);
-
- for (Compositor::ContainsIterator ci (c.contains_begin ());
- ci != c.contains_end (); ++ci)
- {
- SemanticGraph::Particle& p (ci->particle ());
-
- if (p.is_a<Compositor> () && !c.context ().count ("comp-number"))
- continue; // Empty compositor.
-
- if (!p.context ().count ("prefix"))
- break;
-
- size_t state (p.context ().get<size_t> ("state"));
-
- if (first)
- first = false;
- else
- os << "else ";
-
- os << "if (";
-
- particle_test_.dispatch (p);
-
- os << ")" << endl
- << "s = " << state << "UL;";
- }
-
- // This element.
- //
-
- os << endl
- << "if (s != ~0UL)"
- << "{"
- << "assert (start);"; // End is handled by the sub-machine.
-
- switch (max)
- {
- case 0:
- {
- os << "count++;"
- << endl;
- break;
- }
- case 1:
- {
- os << "count = 0;"
- << "state = " << next_state_ << "UL;"
- << endl;
- break;
- }
- default:
- {
- os << "if (++count == " << max << "UL)"
- << "{"
- << "count = 0;"
- << "state = " << next_state_ << "UL;"
- << "}";
- }
- };
-
- // Delegate to the sub-machine.
- //
-
- os << "v_state_& vs = *static_cast< v_state_* > (" <<
- "this->v_state_stack_.top ());"
- << "v_state_descr_& vd = vs.data[vs.size++];" // push
- << endl
- << "vd.func = &" << ename (type_) << "::" << func << n << ";"
- << "vd.state = s;"
- << "vd.count = 0;"
- << endl
- << "this->" << func << n << " (vd.state, vd.count, ns, n, t, true);"
- << "break;"
- << "}";
-
- // Not this compositor.
- //
-
- os << "else"
- << "{"
- << "assert (start);"; // Assuming well-formed XML
-
- // Check if min cardinality requirements have been met. Since
- // count is always >= 0, don't generate dead code if min == 0.
- //
- if (min != 0)
- {
- os << "if (count < " << min << "UL)" << endl
- << "this->_expected_element (" << endl;
-
- particle_name_.dispatch (c);
-
- os << "," << endl
- << "ns, n);";
- }
-
- os << "count = 0;"
- << "state = " << next_state_ << "UL;"
- << "// Fall through." << endl
- << "}" // else
- << "}"; // case
- }
-
- private:
- size_t state_;
- String next_state_;
-
- ParticleName particle_name_;
- };
-
-
- //
- //
- struct ParticleFunction: Traversal::All,
- Traversal::Choice,
- Traversal::Sequence,
- Context
- {
- ParticleFunction (Context& c, SemanticGraph::Complex& type)
- : Context (c), type_ (type)
- {
- *this >> contains_particle_ >> *this;
- }
-
-
- virtual void
- traverse (SemanticGraph::All& a)
- {
- if (!a.context().count ("comp-number")) // Empty compositor.
- return;
-
- using SemanticGraph::Element;
- using SemanticGraph::Compositor;
-
-
- os << "void " << ename (type_) << "::" << endl
- << "all_0 (unsigned long& state," << endl
- << "unsigned char* count," << endl
- << "const " << string_type << "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "* t," << endl
- << "bool start)"
- << "{"
- << "XSD_UNUSED (t);"
- << endl;
-
- for (Compositor::ContainsIterator ci (a.contains_begin ()),
- ce (a.contains_end ()); ci != ce; ++ci)
- {
- ParticleInAll t (*this, type_);
- t.dispatch (ci->particle ());
- }
-
- // Handle the flush.
- //
- os << "else if (n.empty () && ns.empty ())"
- << "{";
-
- for (Compositor::ContainsIterator ci (a.contains_begin ()),
- ce (a.contains_end ()); ci != ce; ++ci)
- {
- if (ci->min () == 0)
- continue;
-
- Element& e (dynamic_cast<Element&> (ci->particle ()));
- String ns (e.qualified_p () ? e.namespace_ ().name () : String ());
- size_t state (e.context ().get<size_t> ("state"));
-
- os << "if (count[" << state << "UL] == 0)" << endl
- << "this->_expected_element (" << endl
- << strlit (ns) << ", " <<
- strlit (e.name ()) << ");"
- << endl;
- }
-
- os << "state = ~0UL;"
- << "}"
- << "else" << endl
- << "state = ~0UL;"
- << "}";
- }
-
- virtual void
- traverse (SemanticGraph::Choice& c)
- {
- if (!c.context().count ("comp-number")) // Empty compositor.
- return;
-
- using SemanticGraph::Compositor;
-
- size_t n (c.context ().get<size_t> ("comp-number"));
-
- os << "void " << ename (type_) << "::" << endl
- << "choice_" << n << " (unsigned long& state," << endl
- << "unsigned long& count," << endl
- << "const " << string_type << "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "* t," << endl
- << "bool start)"
- << "{"
- << "XSD_UNUSED (count);"
- << "XSD_UNUSED (ns);"
- << "XSD_UNUSED (n);"
- << "XSD_UNUSED (t);"
- << endl
- << "switch (state)"
- << "{";
-
- for (Compositor::ContainsIterator ci (c.contains_begin ()),
- ce (c.contains_end ()); ci != ce; ++ci)
- {
- SemanticGraph::Particle& p (ci->particle ());
-
- if (p.is_a<Compositor> () && !p.context().count ("comp-number"))
- continue; // Empty compositor.
-
- ParticleInChoice t (*this, type_);
- t.dispatch (p);
- }
-
- os << "}" // switch
- << "}";
-
- // Generate nested compositor functions.
- //
- Traversal::Choice::traverse (c);
- }
-
- virtual void
- traverse (SemanticGraph::Sequence& s)
- {
- if (!s.context().count ("comp-number")) // Empty compositor.
- return;
-
- using SemanticGraph::Compositor;
-
- size_t n (s.context ().get<size_t> ("comp-number"));
-
- os << "void " << ename (type_) << "::" << endl
- << "sequence_" << n << " (unsigned long& state," << endl
- << "unsigned long& count," << endl
- << "const " << string_type << "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "* t," << endl
- << "bool start)"
- << "{"
- << "XSD_UNUSED (t);"
- << endl
- << "switch (state)"
- << "{";
-
- size_t state (0);
-
- for (Compositor::ContainsIterator ci (s.contains_begin ()),
- ce (s.contains_end ()); ci != ce;)
- {
- SemanticGraph::Particle& p (ci->particle ());
-
- if (p.is_a<Compositor> () && !p.context().count ("comp-number"))
- {
- // Empty compositor.
- //
- ++ci;
- continue;
- }
-
- // Find the next state.
- //
- do
- ++ci;
- while (ci != ce &&
- ci->particle ().is_a<Compositor> () &&
- !ci->particle ().context().count ("comp-number"));
-
- size_t next (ci == ce ? 0 : state + 1);
-
- ParticleInSequence t (*this, state++, next, type_);
- t.dispatch (p);
- }
-
- os << "case ~0UL:" << endl
- << "break;"
- << "}" // switch
- << "}";
-
- // Generate nested compositor functions.
- //
- Traversal::Sequence::traverse (s);
- }
-
- private:
- SemanticGraph::Complex& type_;
- Traversal::ContainsParticle contains_particle_;
- };
-
-
- //
- //
- struct CompositorPre: Traversal::All,
- Traversal::Compositor,
- Context
- {
- CompositorPre (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::All& a)
- {
- // Clear the counts and push the initial state.
- //
- os << "v_all_count_.push ();"
- << endl;
-
- SemanticGraph::Compositor& c (a);
- traverse (c);
- }
-
- virtual void
- traverse (SemanticGraph::Compositor&) // Choice and sequence.
- {
- os << "v_state_& vs = *static_cast< v_state_* > (" <<
- "this->v_state_stack_.top ());"
- << "v_state_descr_& vd = vs.data[vs.size++];" // push
- << endl
- << "vd.func = 0;"
- << "vd.state = 0;"
- << "vd.count = 0;";
- }
- };
-
-
- //
- //
- struct CompositorStartElement: Traversal::All,
- Traversal::Compositor,
- Context
- {
- CompositorStartElement (Context& c, SemanticGraph::Complex& type)
- : Context (c), type_ (type),
- particle_test_ (c), particle_name_ (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::All&)
- {
- // The 'all' state machine reaches the final state only
- // on an unknown element, in which case we won't get here
- // again (it would be a validation error). Note that 'all'
- // compositor cannot contain nested compositors so we don't
- // need to re-set vd.
- //
- os << "all_0 (vd->state, v_all_count_.top (), ns, n, t, true);"
- << endl
- << "if (vd->state != ~0UL)" << endl
- << "vd->count++;"
- << "else" << endl
- << "return false;" // Let our parent handle this.
- << endl;
- }
-
- virtual void
- traverse (SemanticGraph::Compositor& c) // Choice and sequence.
- {
- using SemanticGraph::Compositor;
-
- size_t max (c.max ());
- size_t min (c.context ().get<size_t> ("effective-min"));
- size_t n (c.context ().get<size_t> ("comp-number"));
-
- String func (c.is_a<SemanticGraph::Choice> () ?
- "choice_" : "sequence_");
-
- // Invoke the current state machine. If it reaches its
- // terminal state, pop it and invoke the next one until
- // we reach the top, which requires special handling.
- //
- os << "while (vd->func != 0)"
- << "{"
- << "(this->*vd->func) (vd->state, vd->count, ns, n, t, true);"
- << endl
- << "vd = vs.data + (vs.size - 1);" // re-acquire
- << endl
- << "if (vd->state == ~0UL)" << endl
- << "vd = vs.data + (--vs.size - 1);" // pop
- << "else" << endl
- << "break;"
- << "}";
-
-
- // Check if we got to the top. This code is pretty much the
- // same as the one found in ParticleInSequence.
- //
- os << "if (vd->func == 0)"
- << "{"
- << "if (vd->state != ~0UL)"
- << "{"
- << "unsigned long s = ~0UL;"
- << endl;
-
- bool first (true);
-
- // Note that we don't need to worry about the compositor
- // being empty - this case is handled by our caller.
- //
- for (Compositor::ContainsIterator ci (c.contains_begin ());
- ci != c.contains_end (); ++ci)
- {
- SemanticGraph::Particle& p (ci->particle ());
-
- if (p.is_a<Compositor> () && !c.context ().count ("comp-number"))
- continue; // Empty compositor.
-
- if (!p.context ().count ("prefix"))
- break;
-
- size_t state (p.context ().get<size_t> ("state"));
-
- if (first)
- first = false;
- else
- os << "else ";
-
- os << "if (";
-
- particle_test_.dispatch (p);
-
- os << ")" << endl
- << "s = " << state << "UL;";
- }
-
- os << endl
- << "if (s != ~0UL)"
- << "{";
-
- // This element is a prefix of the root compositor.
- //
-
- switch (max)
- {
- case 0:
- {
- os << "vd->count++;";
- break;
- }
- case 1:
- {
- os << "vd->count++;"
- << "vd->state = ~0UL;";
- break;
- }
- default:
- {
- os << "if (++vd->count == " << max << "UL)" << endl
- << "vd->state = ~0UL;";
- }
- };
-
- // Delegate to the sub-machine.
- //
-
- os << endl
- << "vd = vs.data + vs.size++;" // push
- << "vd->func = &" << ename (type_) << "::" << func << n << ";"
- << "vd->state = s;"
- << "vd->count = 0;"
- << endl
- << "this->" << func << n << " (vd->state, vd->count, ns, n, t, true);"
- << "}";
-
- // This element is not our prefix.
- //
-
- os << "else"
- << "{";
-
- // Check if min cardinality requirements have been met. Since
- // count is always >= 0, don't generate dead code if min == 0.
- //
- if (min != 0)
- {
- os << "if (vd->count < " << min << "UL)" << endl
- << "this->_expected_element (" << endl;
-
- particle_name_.dispatch (c);
-
- os << "," << endl
- << "ns, n);";
- }
-
- // Return false to indicate that we are not handling this element.
- //
- os << "return false;"
- << "}"
- << "}" // if (state != ~0)
- << "else" << endl
- << "return false;"
- << "}"; // if (function == 0)
- }
-
- private:
- SemanticGraph::Complex& type_;
- ParticleTest particle_test_;
- ParticleName particle_name_;
- };
-
-
- //
- //
- struct CompositorEndElement: Traversal::All,
- Traversal::Compositor,
- Context
- {
- CompositorEndElement (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::All&)
- {
- os << "all_0 (vd.state, v_all_count_.top (), " <<
- "ns, n, 0, false);"
- << endl;
- }
-
- virtual void
- traverse (SemanticGraph::Compositor&) // Choice and sequence.
- {
- os << "assert (vd.func != 0);"
- << "(this->*vd.func) (vd.state, vd.count, ns, n, 0, false);"
- << endl
- << "if (vd.state == ~0UL)" << endl
- << "vs.size--;" // pop
- << endl;
- }
- };
-
-
- //
- //
- struct CompositorPost: Traversal::All,
- Traversal::Compositor,
- Context
- {
- CompositorPost (Context& c)
- : Context (c), particle_name_ (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::All& a)
- {
- using SemanticGraph::Element;
-
- os << "v_state_& vs = *static_cast< v_state_* > (" <<
- "this->v_state_stack_.top ());"
- << "v_state_descr_& vd = vs.data[vs.size - 1];"
- << endl;
-
- // Flush the state machine with the empty element name. This
- // allows us to detect missing content.
- //
- os << "if (vd.count != 0)"
- << "{"
- << string_type << " empty;"
- << "all_0 (vd.state, v_all_count_.top (), empty, empty, 0, true);"
- << "}";
-
- if (a.context ().get<size_t> ("effective-min") != 0)
- {
- os << "else" << endl
- << "this->_expected_element (" << endl;
-
- particle_name_.dispatch (a);
-
- os << ");";
- }
-
- os << endl
- << "vs.size--;" // pop
- << "v_all_count_.pop ();";
- }
-
- virtual void
- traverse (SemanticGraph::Compositor& c) // Choice and sequence.
- {
- size_t min (c.context ().get<size_t> ("effective-min"));
-
- os << "v_state_& vs = *static_cast< v_state_* > (" <<
- "this->v_state_stack_.top ());"
- << "v_state_descr_* vd = vs.data + (vs.size - 1);"
- << endl;
-
-
- // Flush unfinished state machines with the empty element name.
- // This allows us to detect missing content. Note that I am
- // not re-setting vd since no new compositors are pushed on
- // flush.
- //
- os << string_type << " empty;"
- << "while (vd->func != 0)"
- << "{"
- << "(this->*vd->func) (vd->state, vd->count, empty, empty, 0, true);"
- << "assert (vd->state == ~0UL);"
- << "vd = vs.data + (--vs.size - 1);" // pop
- << "}";
-
- // Check if min cardinality requirements have been met. Since
- // count is always >= 0, don't generate dead code if min == 0.
- //
- if (min != 0)
- {
- os << "if (vd->count < " << min << "UL)" << endl
- << "this->_expected_element (" << endl;
-
- particle_name_.dispatch (c);
-
- os << ");";
- }
- }
-
- private:
- ParticleName particle_name_;
- };
-
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- // Nothing to generate if we don't have any elements and wildcards.
- //
- if (!has<Traversal::Element> (c) &&
- !has_particle<Traversal::Any> (c))
- return;
-
- using SemanticGraph::Compositor;
-
- String const& name (ename (c));
- Compositor& comp (c.contains_compositor ().compositor ());
-
- // Don't use restriction_p here since we don't want special
- // treatment of anyType.
- //
- bool restriction (
- c.inherits_p () &&
- c.inherits ().is_a<SemanticGraph::Restricts> ());
-
- os <<"// Element validation and dispatch functions for " <<
- name << "." << endl
- <<"//" << endl;
-
- // _start_element_impl
- //
-
- os << "bool " << name << "::" << endl
- << "_start_element_impl (const " << string_type << "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "* t)"
- << "{"
- << "XSD_UNUSED (t);"
- << endl;
-
- os << "v_state_& vs = *static_cast< v_state_* > (" <<
- "this->v_state_stack_.top ());"
- << "v_state_descr_* vd = vs.data + (vs.size - 1);"
- << endl;
-
- //@@ OPT: I don't really need to call parser_base since it always
- // returns false.
- //
- // In case of an inheritance-by-extension, call our base first.
- // We don't need to generate this code for the 'all' compositor
- // because it can only inherit from the empty content model.
- // States of the root machine for sequence and choice:
- //
- // 0 - calling base
- // 1 - base returned false
- // ~0 - terminal state
- //
- if (!restriction && !comp.is_a<SemanticGraph::All> ())
- {
- os << "if (vd->func == 0 && vd->state == 0)"
- << "{"
- << "if (this->";
-
- if (c.inherits_p ())
- os << fq_name (c.inherits ().base ());
- else
- os << complex_base;
-
-
- os << "::_start_element_impl (ns, n, t))" << endl
- << "return true;"
- << "else" << endl
- << "vd->state = 1;"
- << "}";
- }
-
- {
- CompositorStartElement t (*this, c);
- t.dispatch (comp);
- }
-
- os << "return true;"
- << "}";
-
-
- // _end_element_impl
- //
-
- os << "bool " << name << "::" << endl
- << "_end_element_impl (const " << string_type << "& ns," << endl
- << "const " << string_type << "& n)"
- << "{";
-
- os << "v_state_& vs = *static_cast< v_state_* > (" <<
- "this->v_state_stack_.top ());"
- << "v_state_descr_& vd = vs.data[vs.size - 1];"
- << endl;
-
- //@@ OPT: I don't really need to call parser_base since it always
- // returns false.
- //
- // In case of an inheritance-by-extension, call our base first.
- // We don't need to generate this code for the 'all' compositor
- // because it can only inherit from the empty content model.
- //
- if (!restriction && !comp.is_a<SemanticGraph::All> ())
- {
- os << "if (vd.func == 0 && vd.state == 0)"
- << "{"
- << "if (!";
-
- if (c.inherits_p ())
- os << fq_name (c.inherits ().base ());
- else
- os << complex_base;
-
- os << "::_end_element_impl (ns, n))" << endl
- << "assert (false);" // Start and end should match.
- << "return true;"
- << "}";
- }
-
- {
- CompositorEndElement t (*this);
- t.dispatch (comp);
- }
-
- os << "return true;"
- << "}";
-
-
- // _pre_e_validate
- //
- os << "void " << name << "::" << endl
- << "_pre_e_validate ()"
- << "{"
- << "this->v_state_stack_.push ();"
- << "static_cast< v_state_* > (this->v_state_stack_.top ())->" <<
- "size = 0;"
- << endl;
-
- {
- CompositorPre t (*this);
- t.dispatch (comp);
- }
-
- // In case of an inheritance-by-extension, call our base
- // _pre_e_validate. We don't need to generate this code for the
- // 'all' compositor because it can only inherit from the empty
- // content model.
- //
- if (!restriction && !comp.is_a<SemanticGraph::All> ())
- {
- // We don't need to call parser_base's implementation
- // since it does nothing.
- //
- if (c.inherits_p ())
- {
- os << endl
- << fq_name (c.inherits ().base ()) << "::_pre_e_validate ();";
- }
- }
-
- os << "}";
-
-
- // _post_e_validate
- //
- os << "void " << name << "::" << endl
- << "_post_e_validate ()"
- << "{";
-
- // In case of an inheritance-by-extension, call our base
- // _post_e_validate. We don't need to generate this code for
- // the 'all' compositor because it can only inherit from
- // the empty content model.
- //
- if (!restriction && !comp.is_a<SemanticGraph::All> ())
- {
- // We don't need to call parser_base's implementation
- // since it does nothing.
- //
- if (c.inherits_p ())
- {
- os << fq_name (c.inherits ().base ()) << "::_post_e_validate ();"
- << endl;
- }
- }
-
- {
- CompositorPost t (*this);
- t.dispatch (c.contains_compositor ().compositor ());
- }
-
- os << endl
- << "this->v_state_stack_.pop ();"
- << "}";
-
- //
- //
- ParticleFunction t (*this, c);
- t.dispatch (c.contains_compositor ().compositor ());
- }
- };
- }
-
- void
- generate_element_validation_source (Context& ctx)
- {
- ctx.os << "#include <cassert>" << endl
- << endl;
-
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names schema_names;
-
- Namespace ns (ctx);
- Traversal::Names names;
-
- schema >> sources >> schema;
- schema >> schema_names >> ns >> names;
-
- Complex complex (ctx);
-
- names >> complex;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/element-validation-source.hxx b/xsd/xsd/cxx/parser/element-validation-source.hxx
deleted file mode 100644
index b9bd70b..0000000
--- a/xsd/xsd/cxx/parser/element-validation-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/parser/element-validation-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_ELEMENT_VALIDATION_SOURCE_HXX
-#define CXX_PARSER_ELEMENT_VALIDATION_SOURCE_HXX
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- void
- generate_element_validation_source (Context&);
- }
-}
-
-#endif // CXX_PARSER_ELEMENT_VALIDATION_SOURCE_HXX
diff --git a/xsd/xsd/cxx/parser/elements.cxx b/xsd/xsd/cxx/parser/elements.cxx
deleted file mode 100644
index 889eea4..0000000
--- a/xsd/xsd/cxx/parser/elements.cxx
+++ /dev/null
@@ -1,248 +0,0 @@
-// file : xsd/cxx/parser/elements.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- Context::
- Context (std::wostream& o,
- SemanticGraph::Schema& root,
- SemanticGraph::Path const& path,
- options_type const& ops,
- StringLiteralMap const* map,
- Regex const* he,
- Regex const* ie,
- Regex const* hie)
- : CXX::Context (o, root, path, ops, map),
- options (ops),
- xml_parser (xml_parser_),
- simple_base (simple_base_),
- complex_base (complex_base_),
- list_base (list_base_),
- cout_inst (cout_inst_),
- cerr_inst (cerr_inst_),
- parser_map (parser_map_),
- std_string_type (std_string_type_),
- validation (validation_),
- polymorphic (polymorphic_),
- hxx_expr (he),
- ixx_expr (ie),
- hxx_impl_expr (hie),
- xml_parser_ (ops.xml_parser ()),
- validation_ ((ops.xml_parser () == "expat" ||
- ops.generate_validation ()) &&
- !ops.suppress_validation ()),
- polymorphic_ (ops.generate_polymorphic ())
- {
- if (char_type == L"char")
- std_string_type = L"::std::string";
- else if (char_type == L"wchar_t")
- std_string_type = L"::std::wstring";
- else
- std_string_type = L"::std::basic_string< " + char_type + L" >";
-
- String xs_ns (xs_ns_name ());
-
- string_type = xs_ns + L"::ro_string";
- simple_base = xs_ns + L"::simple_content";
- complex_base = xs_ns + L"::complex_content";
- list_base = xs_ns + L"::list_base";
-
- cout_inst = (char_type == L"char" ? L"std::cout" : L"std::wcout");
- cerr_inst = (char_type == L"char" ? L"std::cerr" : L"std::wcerr");
-
- if (polymorphic)
- parser_map_ = xs_ns + L"::parser_map";
- }
-
- Context::
- Context (Context& c)
- : CXX::Context (c),
- options (c.options),
- xml_parser (c.xml_parser),
- simple_base (c.simple_base),
- complex_base (c.complex_base),
- list_base (c.list_base),
- cout_inst (c.cout_inst),
- cerr_inst (c.cerr_inst),
- parser_map (c.parser_map),
- std_string_type (c.std_string_type),
- validation (c.validation),
- polymorphic (c.polymorphic),
- hxx_expr (c.hxx_expr),
- ixx_expr (c.ixx_expr),
- hxx_impl_expr (c.hxx_impl_expr)
- {
- }
-
- Context::
- Context (Context& c, std::wostream& o)
- : CXX::Context (c, o),
- options (c.options),
- xml_parser (c.xml_parser),
- simple_base (c.simple_base),
- complex_base (c.complex_base),
- list_base (c.list_base),
- cout_inst (c.cout_inst),
- cerr_inst (c.cerr_inst),
- parser_map (c.parser_map),
- std_string_type (c.std_string_type),
- validation (c.validation),
- polymorphic (c.polymorphic),
- hxx_expr (c.hxx_expr),
- ixx_expr (c.ixx_expr),
- hxx_impl_expr (c.hxx_impl_expr)
- {
- }
-
- Content::Value Context::
- content (SemanticGraph::Complex& c)
- {
- using namespace SemanticGraph;
-
- if (c.mixed_p ())
- return Content::mixed;
-
- if (c.inherits_p ())
- {
- Type& base (c.inherits ().base ());
-
- if (Complex* cb = dynamic_cast<Complex*> (&base))
- return content (*cb);
-
- if (base.is_a<AnyType> ())
- return Content::complex;
-
- // Everyhting else (built-in type and AnySimpleType) is simple
- // content.
- //
- return Content::simple;
- }
- else
- return Content::complex;
- }
-
- bool Context::
- anonymous (SemanticGraph::Type& t)
- {
- return t.context ().count ("anonymous");
- }
-
- String const& Context::
- ret_type (SemanticGraph::Type& t)
- {
- return t.context ().get<String> ("ret-type");
- }
-
- String const& Context::
- arg_type (SemanticGraph::Type& t)
- {
- return t.context ().get<String> ("arg-type");
- }
-
- String const& Context::
- post_name (SemanticGraph::Type& t)
- {
- return t.context ().get<String> ("post");
- }
-
- String const& Context::
- eparser (SemanticGraph::Member& m)
- {
- return m.context ().get<String> ("parser");
- }
-
- String const& Context::
- emember (SemanticGraph::Member& m)
- {
- return m.context ().get<String> ("member");
- }
-
- String const& Context::
- emember_map (SemanticGraph::Member& m)
- {
- return m.context ().get<String> ("member-map");
- }
-
- String const& Context::
- eimpl (SemanticGraph::Type& t)
- {
- return t.context ().get<String> ("impl");
- }
-
- // Includes
- //
- void TypeForward::
- traverse (SemanticGraph::Type& t)
- {
- os << "class " << t.context ().get<String> (name_key_) << ";";
- }
-
- void Includes::
- traverse_ (SemanticGraph::Uses& u)
- {
- // Support for weak (forward) inclusion used in the file-per-type
- // compilation model.
- //
- SemanticGraph::Schema& s (u.schema ());
- bool weak (u.context ().count ("weak"));
-
- if (weak && (type_ == header || type_ == impl_header))
- {
- // Generate forward declarations. We don't really need them
- // in the impl files.
- //
- if (type_ == header)
- schema_.dispatch (s);
-
- return;
- }
-
- if (type_ == source && !weak)
- return;
-
- SemanticGraph::Path path (
- s.context ().count ("renamed")
- ? s.context ().get<SemanticGraph::Path> ("renamed")
- : u.path ());
- path.normalize ();
-
- // Try to use the portable representation of the path. If that
- // fails, fall back to the native representation.
- //
- NarrowString path_str;
- try
- {
- path_str = path.posix_string ();
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- path_str = path.string ();
- }
-
- String inc_path;
-
- switch (type_)
- {
- case header:
- case source:
- {
- inc_path = ctx_.hxx_expr->replace (path_str);
- break;
- }
- case impl_header:
- {
- inc_path = ctx_.hxx_impl_expr->replace (path_str);
- break;
- }
- }
-
- ctx_.os << "#include " << ctx_.process_include_path (inc_path) << endl
- << endl;
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/elements.hxx b/xsd/xsd/cxx/parser/elements.hxx
deleted file mode 100644
index 31f5d87..0000000
--- a/xsd/xsd/cxx/parser/elements.hxx
+++ /dev/null
@@ -1,316 +0,0 @@
-// file : xsd/cxx/parser/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_ELEMENTS_HXX
-#define CXX_PARSER_ELEMENTS_HXX
-
-#include <sstream>
-
-#include <cutl/re.hxx>
-
-#include <types.hxx>
-
-#include <cxx/elements.hxx>
-
-#include <cxx/parser/options.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- struct Content
- {
- enum Value
- {
- simple,
- complex,
- mixed
- };
- };
-
- //
- //
- class Context: public CXX::Context
- {
- public:
- typedef cutl::re::regexsub Regex;
-
- typedef Parser::options options_type;
-
- public:
- Context (std::wostream&,
- SemanticGraph::Schema&,
- SemanticGraph::Path const& path,
- options_type const&,
- StringLiteralMap const*,
- Regex const* hxx_expr,
- Regex const* ixx_expr,
- Regex const* hxx_impl_expr);
-
- protected:
- Context (Context& c);
- Context (Context& c, std::wostream& o);
-
- public:
- bool
- restriction_p (SemanticGraph::Complex& c) const
- {
- if (c.inherits_p () &&
- c.inherits ().is_a<SemanticGraph::Restricts> ())
- {
- // Restriction of anyType is a special case.
- //
- return !c.inherits ().base ().is_a<SemanticGraph::AnyType> ();
- }
-
- return false;
- }
-
- public:
- static Content::Value
- content (SemanticGraph::Complex&);
-
- public:
- static bool
- anonymous (SemanticGraph::Type&);
-
- public:
- static String const&
- ret_type (SemanticGraph::Type&);
-
- static String const&
- arg_type (SemanticGraph::Type&);
-
- static String const&
- post_name (SemanticGraph::Type&);
-
- public:
- static String const&
- eparser (SemanticGraph::Member&);
-
- static String const&
- emember (SemanticGraph::Member&);
-
- static String const&
- emember_map (SemanticGraph::Member&);
-
- public:
- static String const&
- eimpl (SemanticGraph::Type&);
-
- public:
- options_type const& options;
- String& xml_parser;
- String& simple_base;
- String& complex_base;
- String& list_base;
- String& cout_inst;
- String& cerr_inst;
- String& parser_map;
- String& std_string_type;
- bool& validation;
- bool& polymorphic;
-
- Regex const* hxx_expr;
- Regex const* ixx_expr;
- Regex const* hxx_impl_expr;
-
- private:
- String xml_parser_;
- String simple_base_;
- String complex_base_;
- String list_base_;
- String cout_inst_;
- String cerr_inst_;
- String parser_map_;
- String std_string_type_;
- bool validation_;
- bool polymorphic_;
- };
-
- //
- //
- struct RequiredAttributeTest: Traversal::Attribute
- {
- RequiredAttributeTest (bool& result)
- : result_ (result)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- if (!result_ && !a.optional_p ())
- result_ = true;
- }
-
- private:
- bool& result_;
- };
-
- //
- //
- struct ParserParamDecl: Traversal::Complex,
- Traversal::List,
- Traversal::Member,
- Context
- {
- ParserParamDecl (Context& c, bool name_arg)
- : Context (c), first_ (true), name_arg_ (name_arg)
- {
- inherits_ >> *this;
- names_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- inherits (c, inherits_);
-
- if (!restriction_p (c))
- names (c, names_);
- }
-
- virtual void
- traverse (SemanticGraph::List& l)
- {
- if (!first_)
- os << "," << endl;
- else
- first_ = false;
-
- os << fq_name (l.argumented ().type ()) << "&";
-
- if (name_arg_)
- os << " " << ename (l) << "_item";
- else
- os << " /* " << comment (l.name ()) << " item */";
- }
-
- virtual void
- traverse (SemanticGraph::Member& m)
- {
- if (skip (m)) return;
-
- if (!first_)
- os << "," << endl;
- else
- first_ = false;
-
- os << fq_name (m.type ()) << "&";
-
- if (name_arg_)
- os << " " << ename (m);
- else
- os << " /* " << comment (m.name ()) << " */";
- }
-
- private:
- Traversal::Inherits inherits_;
- Traversal::Names names_;
-
- bool first_;
- bool name_arg_;
- };
-
-
- //
- //
- struct TypeForward: Traversal::Type, Context
- {
- TypeForward (Context& c, char const* name_key)
- : Context (c), name_key_ (name_key)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type& t);
-
- private:
- char const* name_key_;
- };
-
- struct Includes: Traversal::Imports,
- Traversal::Includes
- {
- enum Type
- {
- header,
- source,
- impl_header
- };
-
- Includes (Context& c, Type t)
- : ctx_ (c),
- type_ (t),
- namespace_ (c),
- type_forward_ (c, t == header ? "name" : "impl")
- {
- schema_ >> schema_names_ >> namespace_ >> names_ >> type_forward_;
- }
-
- virtual void
- traverse (SemanticGraph::Imports& i)
- {
- traverse_ (i);
- }
-
- virtual void
- traverse (SemanticGraph::Includes& i)
- {
- traverse_ (i);
- }
-
- private:
- void
- traverse_ (SemanticGraph::Uses&);
-
- private:
- Context& ctx_;
- Type type_;
-
- Traversal::Schema schema_;
- Traversal::Names schema_names_;
- Namespace namespace_;
- Traversal::Names names_;
- TypeForward type_forward_;
- };
-
- // Find root element for the test driver.
- //
- struct RootElement: Traversal::Element
- {
- typedef Parser::options options_type;
-
- RootElement (options_type const& options,
- SemanticGraph::Element*& element)
- : options_ (options), element_ (element)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (options_.root_element_first ())
- {
- if (element_ == 0)
- element_ = &e;
- }
- else if (String name = options_.root_element ())
- {
- if (e.name () == name)
- element_ = &e;
- }
- else
- element_ = &e; // Cover root-element-last and no option.
- }
-
- private:
- options_type const& options_;
- SemanticGraph::Element*& element_;
- };
- }
-}
-
-#endif // CXX_PARSER_ELEMENTS_HXX
diff --git a/xsd/xsd/cxx/parser/generator.cxx b/xsd/xsd/cxx/parser/generator.cxx
deleted file mode 100644
index e17986b..0000000
--- a/xsd/xsd/cxx/parser/generator.cxx
+++ /dev/null
@@ -1,1100 +0,0 @@
-// file : xsd/cxx/parser/generator.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <algorithm>
-#include <iostream>
-#include <fstream>
-
-#include <cutl/re.hxx>
-
-#include <cutl/compiler/code-stream.hxx>
-#include <cutl/compiler/cxx-indenter.hxx>
-#include <cutl/compiler/sloc-counter.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-
-#include <type-map/lexer.hxx>
-#include <type-map/parser.hxx>
-#include <type-map/type-map.hxx>
-
-#include <cxx/parser/elements.hxx>
-#include <cxx/parser/generator.hxx>
-
-#include <cxx/parser/validator.hxx>
-#include <cxx/parser/name-processor.hxx>
-#include <cxx/parser/state-processor.hxx>
-#include <cxx/parser/type-processor.hxx>
-
-#include <cxx/parser/parser-header.hxx>
-#include <cxx/parser/parser-inline.hxx>
-#include <cxx/parser/parser-source.hxx>
-#include <cxx/parser/parser-forward.hxx>
-
-#include <cxx/parser/impl-header.hxx>
-#include <cxx/parser/impl-source.hxx>
-#include <cxx/parser/driver-source.hxx>
-
-#include <cxx/parser/element-validation-source.hxx>
-#include <cxx/parser/attribute-validation-source.hxx>
-#include <cxx/parser/characters-validation-source.hxx>
-
-#include <cxx/parser/options.hxx>
-
-#include "../../../libxsd/xsd/cxx/version.hxx"
-
-using std::endl;
-using std::wcerr;
-using std::wcout;
-
-using namespace XSDFrontend::SemanticGraph;
-
-//
-//
-typedef std::wifstream WideInputFileStream;
-typedef std::wofstream WideOutputFileStream;
-typedef std::ifstream NarrowInputFileStream;
-
-namespace CXX
-{
- namespace
- {
- char const copyright_gpl[] =
- "// Copyright (c) 2005-2014 Code Synthesis Tools CC\n"
- "//\n"
- "// This program was generated by CodeSynthesis XSD, an XML Schema to\n"
- "// C++ data binding compiler.\n"
- "//\n"
- "// This program is free software; you can redistribute it and/or modify\n"
- "// it under the terms of the GNU General Public License version 2 as\n"
- "// published by the Free Software Foundation.\n"
- "//\n"
- "// This program is distributed in the hope that it will be useful,\n"
- "// but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
- "// GNU General Public License for more details.\n"
- "//\n"
- "// You should have received a copy of the GNU General Public License\n"
- "// along with this program; if not, write to the Free Software\n"
- "// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n"
- "//\n"
- "// In addition, as a special exception, Code Synthesis Tools CC gives\n"
- "// permission to link this program with the Xerces-C++ library (or with\n"
- "// modified versions of Xerces-C++ that use the same license as Xerces-C++),\n"
- "// and distribute linked combinations including the two. You must obey\n"
- "// the GNU General Public License version 2 in all respects for all of\n"
- "// the code used other than Xerces-C++. If you modify this copy of the\n"
- "// program, you may extend this exception to your version of the program,\n"
- "// but you are not obligated to do so. If you do not wish to do so, delete\n"
- "// this exception statement from your version.\n"
- "//\n"
- "// Furthermore, Code Synthesis Tools CC makes a special exception for\n"
- "// the Free/Libre and Open Source Software (FLOSS) which is described\n"
- "// in the accompanying FLOSSE file.\n"
- "//\n\n";
-
- char const copyright_proprietary[] =
- "// Copyright (c) 2005-2014 Code Synthesis Tools CC\n"
- "//\n"
- "// This program was generated by CodeSynthesis XSD, an XML Schema\n"
- "// to C++ data binding compiler, in the Proprietary License mode.\n"
- "// You should have received a proprietary license from Code Synthesis\n"
- "// Tools CC prior to generating this code. See the license text for\n"
- "// conditions.\n"
- "//\n\n";
-
- char const copyright_impl[] =
- "// Not copyrighted - public domain.\n"
- "//\n"
- "// This sample parser implementation was generated by CodeSynthesis XSD,\n"
- "// an XML Schema to C++ data binding compiler. You may use it in your\n"
- "// programs without any restrictions.\n"
- "//\n\n";
- }
-
- void Parser::Generator::
- usage ()
- {
- CXX::Parser::options::print_usage (wcout);
- CXX::options::print_usage (wcout);
- }
-
- namespace
- {
- template <typename S>
- void
- open (S& ifs, NarrowString const& path)
- {
- try
- {
- Path fs_path (path);
- ifs.open (fs_path.string ().c_str (),
- std::ios_base::in | std::ios_base::binary);
-
- if (!ifs.is_open ())
- {
- wcerr << path.c_str () << ": error: unable to open in read mode"
- << endl;
-
- throw Parser::Generator::Failed ();
- }
- }
- catch (InvalidPath const&)
- {
- wcerr << "error: '" << path.c_str () << "' is not a valid "
- << "filesystem path" << endl;
-
- throw Parser::Generator::Failed ();
- }
- }
-
- void
- append (WideOutputFileStream& os,
- NarrowString const& path,
- WideInputFileStream& default_is)
- {
- using std::ios_base;
-
- if (path)
- {
- WideInputFileStream is;
- open (is, path);
- os << is.rdbuf ();
- }
- else if (default_is.is_open ())
- {
- os << default_is.rdbuf ();
- default_is.seekg (0, ios_base::beg);
- }
- }
-
- void
- append (WideOutputFileStream& os,
- NarrowStrings const& primary,
- NarrowStrings const& def)
- {
- NarrowStrings const& v (primary.empty () ? def : primary);
-
- for (NarrowStrings::const_iterator i (v.begin ()), e (v.end ());
- i != e; ++i)
- {
- os << i->c_str () << endl;
- }
- }
- }
-
-
- size_t Parser::Generator::
- generate (Parser::options const& ops,
- Schema& schema,
- Path const& file_path,
- bool fpt,
- StringLiteralMap const& string_literal_map,
- bool gen_driver,
- const WarningSet& disabled_warnings,
- FileList& file_list,
- AutoUnlinks& unlinks)
- {
- using std::ios_base;
-
- typedef cutl::re::regexsub Regex;
-
- try
- {
- bool generate_xml_schema (ops.generate_xml_schema ());
-
- // We could be compiling several schemas at once in which case
- // handling of the --generate-xml-schema option gets tricky: we
- // will need to rely on the presence of the --extern-xml-schema
- // to tell us which (fake) schema file corresponds to XML Schema.
- //
- if (generate_xml_schema)
- {
- if (NarrowString name = ops.extern_xml_schema ())
- {
- if (file_path.string () != name)
- generate_xml_schema = false;
- }
- }
-
- bool impl (!generate_xml_schema &&
- (ops.generate_noop_impl () ||
- ops.generate_print_impl ()));
-
- bool driver (gen_driver && !generate_xml_schema &&
- ops.generate_test_driver ());
-
- // Evaluate the graph for possibility of generating something useful.
- //
- {
- Validator validator;
- if (!validator.validate (
- ops, schema, file_path, driver, disabled_warnings))
- throw Failed ();
- }
-
- // Process names.
- //
- {
- NameProcessor proc;
- proc.process (ops, schema, file_path, string_literal_map);
- }
-
- bool validation ((ops.xml_parser () == "expat" ||
- ops.generate_validation ()) &&
- !ops.suppress_validation ());
-
- // Compute state machine info.
- //
- if (validation)
- {
- StateProcessor proc;
- proc.process (schema, file_path);
- }
-
- // Read-in type maps.
- //
- TypeMap::Namespaces type_map;
- {
- using namespace TypeMap;
-
- NarrowStrings const& files (ops.type_map ());
-
- for (NarrowStrings::const_iterator f (files.begin ());
- f != files.end (); ++f )
- {
- NarrowInputFileStream ifs;
- open (ifs, *f);
-
- Lexer l (ifs, *f);
- TypeMap::Parser p (l, *f);
-
- if (!p.parse (type_map))
- throw Failed ();
- }
-
- // Add the built-in mappings at the end.
- //
-
- // String-based types.
- //
- String char_type (ops.char_type ());
- String string_type;
-
- if (char_type == L"char")
- string_type = L"::std::string";
- else if (char_type == L"wchar_t")
- string_type = L"::std::wstring";
- else
- string_type = L"::std::basic_string< " + char_type + L" >";
-
- String xns;
- String auto_ptr;
- {
- Context ctx (std::wcerr, schema, file_path, ops, 0, 0, 0, 0);
- xns = ctx.xs_ns_name ();
- auto_ptr = ctx.auto_ptr;
- }
-
- String buffer (auto_ptr + L"< " + xns + L"::buffer >");
- TypeMap::Namespace xsd ("http://www\\.w3\\.org/2001/XMLSchema");
-
- xsd.types_push_back ("string", string_type);
- xsd.types_push_back ("normalizedString", string_type);
- xsd.types_push_back ("token", string_type);
- xsd.types_push_back ("Name", string_type);
- xsd.types_push_back ("NMTOKEN", string_type);
- xsd.types_push_back ("NMTOKENS", xns + L"::string_sequence");
- xsd.types_push_back ("NCName", string_type);
-
- xsd.types_push_back ("ID", string_type);
- xsd.types_push_back ("IDREF", string_type);
- xsd.types_push_back ("IDREFS", xns + L"::string_sequence");
-
- xsd.types_push_back ("language", string_type);
- xsd.types_push_back ("anyURI", string_type);
- xsd.types_push_back ("QName", xns + L"::qname");
-
- xsd.types_push_back ("base64Binary", buffer, buffer);
- xsd.types_push_back ("hexBinary", buffer, buffer);
-
- xsd.types_push_back ("gDay", xns + L"::gday");
- xsd.types_push_back ("gMonth", xns + L"::gmonth");
- xsd.types_push_back ("gYear", xns + L"::gyear");
- xsd.types_push_back ("gMonthDay", xns + L"::gmonth_day");
- xsd.types_push_back ("gYearMonth", xns + L"::gyear_month");
- xsd.types_push_back ("date", xns + L"::date");
- xsd.types_push_back ("time", xns + L"::time");
- xsd.types_push_back ("dateTime", xns + L"::date_time");
- xsd.types_push_back ("duration", xns + L"::duration");
-
- // Fundamental C++ types.
- //
- xsd.types_push_back ("boolean", "bool", "bool");
-
- xsd.types_push_back ("byte", "signed char", "signed char");
- xsd.types_push_back ("unsignedByte",
- "unsigned char",
- "unsigned char");
-
- xsd.types_push_back ("short", "short", "short");
- xsd.types_push_back ("unsignedShort",
- "unsigned short",
- "unsigned short");
-
- xsd.types_push_back ("int", "int", "int");
- xsd.types_push_back ("unsignedInt", "unsigned int", "unsigned int");
-
- xsd.types_push_back ("long", "long long", "long long");
- xsd.types_push_back ("unsignedLong",
- "unsigned long long",
- "unsigned long long");
-
- xsd.types_push_back ("integer", "long long", "long long");
-
- xsd.types_push_back ("negativeInteger", "long long", "long long");
- xsd.types_push_back ("nonPositiveInteger", "long long", "long long");
-
- xsd.types_push_back ("positiveInteger",
- "unsigned long long",
- "unsigned long long");
- xsd.types_push_back ("nonNegativeInteger",
- "unsigned long long",
- "unsigned long long");
-
- xsd.types_push_back ("float", "float", "float");
- xsd.types_push_back ("double", "double", "double");
- xsd.types_push_back ("decimal", "double", "double");
-
- type_map.push_back (xsd);
-
- // Everything else maps to void.
- //
- TypeMap::Namespace rest (".*");
- rest.types_push_back (".*", "void", "void");
- type_map.push_back (rest);
- }
-
- // Process types.
- //
- {
- TypeProcessor proc;
- proc.process (ops, schema, gen_driver, type_map);
- }
-
- //
- //
- bool inline_ (ops.generate_inline () && !generate_xml_schema);
- bool source (!generate_xml_schema);
-
- // Generate code.
- //
- NarrowString name (file_path.leaf ().string ());
- NarrowString skel_suffix (ops.skel_file_suffix ());
- NarrowString impl_suffix (ops.impl_file_suffix ());
-
- NarrowString hxx_suffix (ops.hxx_suffix ());
- NarrowString ixx_suffix (ops.ixx_suffix ());
- NarrowString cxx_suffix (ops.cxx_suffix ());
-
- Regex hxx_expr (
- ops.hxx_regex ().empty ()
- ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + skel_suffix + hxx_suffix + "#"
- : ops.hxx_regex ());
-
- Regex ixx_expr (
- ops.ixx_regex ().empty ()
- ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + skel_suffix + ixx_suffix + "#"
- : ops.ixx_regex ());
-
- Regex cxx_expr (
- ops.cxx_regex ().empty ()
- ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + skel_suffix + cxx_suffix + "#"
- : ops.cxx_regex ());
-
-
- Regex hxx_impl_expr;
- Regex cxx_impl_expr;
- Regex cxx_driver_expr;
-
- if (impl || driver)
- {
- hxx_impl_expr =
- "#^(.+?)(\\.[^./\\\\]+)?$#$1" + impl_suffix + hxx_suffix + "#";
-
- cxx_impl_expr =
- "#^(.+?)(\\.[^./\\\\]+)?$#$1" + impl_suffix + cxx_suffix + "#";
-
- cxx_driver_expr =
- "#^(.+?)(\\.[^./\\\\]+)?$#$1-driver" + cxx_suffix + "#";
- }
-
- if (!hxx_expr.match (name))
- {
- wcerr << "error: header expression '" <<
- hxx_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- if (inline_ && !ixx_expr.match (name))
- {
- wcerr << "error: inline expression '" <<
- ixx_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- if (source && !cxx_expr.match (name))
- {
- wcerr << "error: source expression '" <<
- cxx_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- if (impl || driver)
- {
- if (!hxx_impl_expr.match (name))
- {
- wcerr << "error: implementation header expression '" <<
- hxx_impl_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- if (!cxx_impl_expr.match (name))
- {
- wcerr << "error: implementation source expression '" <<
- cxx_impl_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- if (!cxx_driver_expr.match (name))
- {
- wcerr << "error: driver source expression '" <<
- cxx_driver_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
- }
-
- NarrowString hxx_name (hxx_expr.replace (name));
- NarrowString ixx_name (inline_ ? ixx_expr.replace (name) : NarrowString ());
- NarrowString cxx_name (source ? cxx_expr.replace (name) : NarrowString ());
-
- NarrowString hxx_impl_name;
- NarrowString cxx_impl_name;
- NarrowString cxx_driver_name;
-
- if (impl || driver)
- {
- hxx_impl_name = hxx_impl_expr.replace (name);
- cxx_impl_name = cxx_impl_expr.replace (name);
- cxx_driver_name = cxx_driver_expr.replace (name);
- }
-
- Path hxx_path (hxx_name);
- Path ixx_path (ixx_name);
- Path cxx_path (cxx_name);
-
- Path hxx_impl_path;
- Path cxx_impl_path;
- Path cxx_driver_path;
-
- if (impl || driver)
- {
- hxx_impl_path = Path (hxx_impl_name);
- cxx_impl_path = Path (cxx_impl_name);
- cxx_driver_path = Path (cxx_driver_name);
- }
-
- Path out_dir;
-
- if (NarrowString dir = ops.output_dir ())
- {
- try
- {
- out_dir = Path (dir);
- }
- catch (InvalidPath const&)
- {
- wcerr << dir.c_str () << ": error: invalid path" << endl;
- throw Failed ();
- }
- }
-
- if (fpt && !generate_xml_schema)
- {
- // In the file-per-type mode the schema files are always local
- // unless the user added the directory so that we propagate this
- // to the output files.
- //
- Path fpt_dir (file_path.directory ());
-
- if (!fpt_dir.empty ())
- out_dir /= fpt_dir;
- }
-
- if (!out_dir.empty ())
- {
- hxx_path = out_dir / hxx_path;
- ixx_path = out_dir / ixx_path;
- cxx_path = out_dir / cxx_path;
-
- if (impl || driver)
- {
- hxx_impl_path = out_dir / hxx_impl_path;
- cxx_impl_path = out_dir / cxx_impl_path;
- cxx_driver_path = out_dir /cxx_driver_path;
- }
- }
-
- // Open the impl files first so that if open fails, the skel files
- // are not deleted.
- //
- WideOutputFileStream hxx_impl;
- WideOutputFileStream cxx_impl;
- WideOutputFileStream cxx_driver;
-
- if (impl)
- {
- if (!ops.force_overwrite ())
- {
- WideInputFileStream tmp (
- hxx_impl_path.string ().c_str (), ios_base::in);
-
- if (tmp.is_open ())
- {
- wcerr << hxx_impl_path << ": error: cowardly refusing to " <<
- "overwrite an existing file" << endl;
- throw Failed ();
- }
-
- tmp.close ();
- }
-
- hxx_impl.open (hxx_impl_path.string ().c_str (), ios_base::out);
-
- if (!hxx_impl.is_open ())
- {
- wcerr << hxx_impl_path << ": error: unable to open in write mode"
- << endl;
- throw Failed ();
- }
-
- unlinks.add (hxx_impl_path);
- file_list.push_back (hxx_impl_path.string ());
-
- if (!ops.force_overwrite ())
- {
- WideInputFileStream tmp (
- cxx_impl_path.string ().c_str (), ios_base::in);
-
- if (tmp.is_open ())
- {
- wcerr << cxx_impl_path << ": error: cowardly refusing to " <<
- "overwrite an existing file" << endl;
- throw Failed ();
- }
-
- tmp.close ();
- }
-
- cxx_impl.open (cxx_impl_path.string ().c_str (), ios_base::out);
-
- if (!cxx_impl.is_open ())
- {
- wcerr << cxx_impl_path << ": error: unable to open in write mode"
- << endl;
- throw Failed ();
- }
-
- unlinks.add (cxx_impl_path);
- file_list.push_back (cxx_impl_path.string ());
- }
-
- if (driver)
- {
- if (!ops.force_overwrite ())
- {
- WideInputFileStream tmp (
- cxx_driver_path.string ().c_str (), ios_base::in);
-
- if (tmp.is_open ())
- {
- wcerr << cxx_driver_path << ": error: cowardly refusing to " <<
- "overwrite an existing file" << endl;
- throw Failed ();
- }
-
- tmp.close ();
- }
-
- cxx_driver.open (cxx_driver_path.string ().c_str (), ios_base::out);
-
- if (!cxx_driver.is_open ())
- {
- wcerr << cxx_driver_path << ": error: unable to open in write " <<
- "mode" << endl;
- throw Failed ();
- }
-
- unlinks.add (cxx_driver_path);
- file_list.push_back (cxx_driver_path.string ());
- }
-
- // Open the skel files.
- //
- WideOutputFileStream hxx (hxx_path.string ().c_str (), ios_base::out);
- WideOutputFileStream ixx;
- WideOutputFileStream cxx;
-
- if (!hxx.is_open ())
- {
- wcerr << hxx_path << ": error: unable to open in write mode" << endl;
- throw Failed ();
- }
-
- unlinks.add (hxx_path);
- file_list.push_back (hxx_path.string ());
-
- if (inline_)
- {
- ixx.open (ixx_path.string ().c_str (), ios_base::out);
-
- if (!ixx.is_open ())
- {
- wcerr << ixx_path << ": error: unable to open in write mode" << endl;
- throw Failed ();
- }
-
- unlinks.add (ixx_path);
- file_list.push_back (ixx_path.string ());
- }
-
-
- if (source)
- {
- cxx.open (cxx_path.string ().c_str (), ios_base::out);
-
- if (!cxx.is_open ())
- {
- wcerr << cxx_path << ": error: unable to open in write mode" << endl;
- throw Failed ();
- }
-
- unlinks.add (cxx_path);
- file_list.push_back (cxx_path.string ());
- }
-
- // Print copyright and license.
- //
- char const* copyright (
- ops.proprietary_license () ? copyright_proprietary : copyright_gpl);
-
- hxx << copyright;
-
- if (inline_)
- ixx << copyright;
-
- if (source)
- cxx << copyright;
-
- if (impl)
- {
- hxx_impl << copyright_impl;
- cxx_impl << copyright_impl;
- }
-
- if (driver)
- cxx_driver << copyright_impl;
-
- // Prologue.
- //
- WideInputFileStream prologue;
- {
- NarrowString name (ops.prologue_file ());
-
- if (name)
- open (prologue, name);
- }
-
- // Epilogue.
- //
- WideInputFileStream epilogue;
- {
- NarrowString name (ops.epilogue_file ());
-
- if (name)
- open (epilogue, name);
- }
-
- // SLOC counter.
- //
- size_t sloc_total (0);
- bool show_sloc (ops.show_sloc ());
-
- typedef
- compiler::ostream_filter<compiler::cxx_indenter, wchar_t>
- ind_filter;
-
- typedef
- compiler::ostream_filter<compiler::sloc_counter, wchar_t>
- sloc_filter;
-
- //
- //
- Regex guard_expr ("/([a-z])([A-Z])/$1_$2/"); // Split words.
-
- NarrowString guard_prefix (ops.guard_prefix ());
-
- if (!guard_prefix)
- guard_prefix = file_path.directory ().string ();
-
- if (guard_prefix)
- guard_prefix += '_';
-
- // HXX
- //
- {
- Context ctx (hxx,
- schema,
- file_path,
- ops,
- &string_literal_map,
- &hxx_expr,
- &ixx_expr,
- &hxx_impl_expr);
-
- sloc_filter sloc (hxx);
-
- String guard (guard_expr.replace (guard_prefix + hxx_name));
- guard = ctx.escape (guard); // Make it a C++ id.
- std::transform (guard.begin (), guard.end(), guard.begin (), upcase);
-
- hxx << "#ifndef " << guard << endl
- << "#define " << guard << endl
- << endl;
-
- if (ctx.std >= cxx_version::cxx11)
- {
- hxx << "#ifndef XSD_CXX11" << endl
- << "#define XSD_CXX11" << endl
- << "#endif" << endl
- << endl;
- }
-
- // Copy prologue.
- //
- hxx << "// Begin prologue." << endl
- << "//" << endl;
-
- append (hxx, ops.hxx_prologue (), ops.prologue ());
- append (hxx, ops.hxx_prologue_file (), prologue);
-
- hxx << "//" << endl
- << "// End prologue." << endl
- << endl;
-
- // Version check.
- //
- hxx << "#include <xsd/cxx/config.hxx>" << endl
- << endl
- << "#if (XSD_INT_VERSION != " << XSD_INT_VERSION << "L)" << endl
- << "#error XSD runtime version mismatch" << endl
- << "#endif" << endl
- << endl;
-
- hxx << "#include <xsd/cxx/pre.hxx>" << endl
- << endl;
-
- // Generate.
- //
- {
- ind_filter ind (hxx); // We don't want to indent prologues/epilogues.
-
- if (!generate_xml_schema)
- generate_parser_forward (ctx);
-
- generate_parser_header (ctx, generate_xml_schema);
- }
-
- if (inline_)
- hxx << "#include " << ctx.process_include_path (ixx_name) << endl;
-
- hxx << "#include <xsd/cxx/post.hxx>" << endl
- << endl;
-
- // Copy epilogue.
- //
- hxx << "// Begin epilogue." << endl
- << "//" << endl;
-
- append (hxx, ops.hxx_epilogue_file (), epilogue);
- append (hxx, ops.hxx_epilogue (), ops.epilogue ());
-
- hxx << "//" << endl
- << "// End epilogue." << endl
- << endl;
-
- hxx << "#endif // " << guard << endl;
-
- if (show_sloc)
- wcerr << hxx_path << ": " << sloc.stream ().count () << endl;
-
- sloc_total += sloc.stream ().count ();
- }
-
-
- // IXX
- //
- if (inline_)
- {
- Context ctx (ixx,
- schema,
- file_path,
- ops,
- &string_literal_map,
- &hxx_expr,
- &ixx_expr,
- &hxx_impl_expr);
-
- sloc_filter sloc (ixx);
-
- // Copy prologue.
- //
- ixx << "// Begin prologue." << endl
- << "//" << endl;
-
- append (ixx, ops.ixx_prologue (), ops.prologue ());
- append (ixx, ops.ixx_prologue_file (), prologue);
-
- ixx << "//" << endl
- << "// End prologue." << endl
- << endl;
-
- // Generate.
- //
- {
- ind_filter ind (ixx); // We don't want to indent prologues/epilogues.
- generate_parser_inline (ctx);
- }
-
- // Copy epilogue.
- //
- ixx << "// Begin epilogue." << endl
- << "//" << endl;
-
- append (ixx, ops.ixx_epilogue_file (), epilogue);
- append (ixx, ops.ixx_epilogue (), ops.epilogue ());
-
- ixx << "//" << endl
- << "// End epilogue." << endl
- << endl;
-
- if (show_sloc)
- wcerr << ixx_path << ": " << sloc.stream ().count () << endl;
-
- sloc_total += sloc.stream ().count ();
- }
-
-
- // CXX
- //
- if (source)
- {
- Context ctx (cxx,
- schema,
- file_path,
- ops,
- &string_literal_map,
- &hxx_expr,
- &ixx_expr,
- &hxx_impl_expr);
-
- sloc_filter sloc (cxx);
-
- // Copy prologue.
- //
- cxx << "// Begin prologue." << endl
- << "//" << endl;
-
- append (cxx, ops.cxx_prologue (), ops.prologue ());
- append (cxx, ops.cxx_prologue_file (), prologue);
-
- cxx << "//" << endl
- << "// End prologue." << endl
- << endl;
-
- cxx << "#include <xsd/cxx/pre.hxx>" << endl
- << endl;
-
- cxx << "#include " << ctx.process_include_path (hxx_name) << endl
- << endl;
-
- // Generate.
- //
- {
- ind_filter ind (cxx); // We don't want to indent prologues/epilogues.
-
- if (!inline_)
- generate_parser_inline (ctx);
-
- generate_parser_source (ctx);
-
- if (validation)
- {
- generate_element_validation_source (ctx);
- generate_attribute_validation_source (ctx);
- generate_characters_validation_source (ctx);
- }
- }
-
- cxx << "#include <xsd/cxx/post.hxx>" << endl
- << endl;
-
- // Copy epilogue.
- //
- cxx << "// Begin epilogue." << endl
- << "//" << endl;
-
- append (cxx, ops.cxx_epilogue_file (), epilogue);
- append (cxx, ops.cxx_epilogue (), ops.epilogue ());
-
- cxx << "//" << endl
- << "// End epilogue." << endl
- << endl;
-
- if (show_sloc)
- wcerr << cxx_path << ": " << sloc.stream ().count () << endl;
-
- sloc_total += sloc.stream ().count ();
- }
-
- // HXX impl
- //
- if (impl)
- {
- Context ctx (hxx_impl,
- schema,
- file_path,
- ops,
- &string_literal_map,
- &hxx_expr,
- &ixx_expr,
- &hxx_impl_expr);
-
- String guard (guard_expr.replace (guard_prefix + hxx_impl_name));
- guard = ctx.escape (guard); // Make it a C++ id.
- std::transform (guard.begin (), guard.end(), guard.begin (), upcase);
-
- hxx_impl << "#ifndef " << guard << endl
- << "#define " << guard << endl
- << endl;
-
- hxx_impl << "#include " << ctx.process_include_path (hxx_name)
- << endl << endl;
-
- {
- ind_filter ind (hxx_impl);
- generate_impl_header (ctx);
- }
-
- hxx_impl << "#endif // " << guard << endl;
- }
-
- // CXX impl
- //
- if (impl)
- {
- Context ctx (cxx_impl,
- schema,
- file_path,
- ops,
- &string_literal_map,
- &hxx_expr,
- &ixx_expr,
- &hxx_impl_expr);
-
- cxx_impl << "#include " << ctx.process_include_path (hxx_impl_name)
- << endl << endl;
-
- {
- ind_filter ind (cxx_impl);
- generate_impl_source (ctx);
- }
- }
-
- // CXX driver
- //
- if (driver)
- {
- Context ctx (cxx_driver,
- schema,
- file_path,
- ops,
- &string_literal_map,
- &hxx_expr,
- &ixx_expr,
- &hxx_impl_expr);
-
- cxx_driver << "#include " << ctx.process_include_path (hxx_impl_name)
- << endl << endl;
-
- {
- ind_filter ind (cxx_driver);
- generate_driver_source (ctx);
- }
- }
-
- return sloc_total;
- }
- catch (UnrepresentableCharacter const& e)
- {
- wcerr << "error: character at position " << e.position () << " "
- << "in string '" << e.string () << "' is unrepresentable in "
- << "the target encoding" << endl;
-
- wcerr << "info: use the --custom-literals option to provide custom "
- << "string literals mapping" << endl;
-
- throw Failed ();
- }
- catch (NoNamespaceMapping const& e)
- {
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": error: unable to map XML Schema namespace '" << e.ns ()
- << "' to C++ namespace" << endl;
-
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": info: use the --namespace-map or --namespace-regex option "
- << "to provide custom mapping" << endl;
-
- throw Failed ();
- }
- catch (InvalidNamespaceMapping const& e)
- {
- wcerr << "error: invalid XML to C++ namespace mapping specified: "
- << "'" << e.mapping () << "': " << e.reason () << endl;
-
- throw Failed ();
- }
- catch (cutl::re::format const& e)
- {
- wcerr << "error: invalid regex: '" <<
- e.regex ().c_str () << "': " <<
- e.description ().c_str () << endl;
-
- throw Failed ();
- }
- catch (cutl::re::wformat const& e)
- {
- wcerr << "error: invalid regex: '" <<
- e.regex () << "': " << e.description ().c_str () << endl;
-
- throw Failed ();
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/generator.hxx b/xsd/xsd/cxx/parser/generator.hxx
deleted file mode 100644
index 784ca9d..0000000
--- a/xsd/xsd/cxx/parser/generator.hxx
+++ /dev/null
@@ -1,46 +0,0 @@
-// file : xsd/cxx/parser/generator.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_GENERATOR_HXX
-#define CXX_PARSER_GENERATOR_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-#include <xsd.hxx>
-#include <types.hxx>
-
-#include <cxx/literal-map.hxx>
-#include <cxx/parser/options.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- class Generator
- {
- public:
- static void
- usage ();
-
- struct Failed {};
-
- static size_t
- generate (options const&,
- XSDFrontend::SemanticGraph::Schema&,
- XSDFrontend::SemanticGraph::Path const& file,
- bool file_per_type,
- StringLiteralMap const&,
- bool gen_driver,
- const WarningSet& disabled_warnings,
- FileList& file_list,
- AutoUnlinks& unlinks);
-
- private:
- Generator ();
- };
- }
-}
-
-#endif // CXX_PARSER_GENERATOR_HXX
diff --git a/xsd/xsd/cxx/parser/impl-header.cxx b/xsd/xsd/cxx/parser/impl-header.cxx
deleted file mode 100644
index a3d47a4..0000000
--- a/xsd/xsd/cxx/parser/impl-header.cxx
+++ /dev/null
@@ -1,233 +0,0 @@
-// file : xsd/cxx/parser/impl-header.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/parser/impl-header.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- String const& name (eimpl (e));
- String const& ret (ret_type (e));
- SemanticGraph::Type& base (e.inherits ().base ());
-
- os << "class " << type_exp << name << ": " <<
- "public virtual " << ename (e) << "," << endl
- << " public " << fq_name (base, "impl")
- << "{"
- << "public:" << endl
- << "virtual void" << endl
- << "pre ();"
- << endl
- << "virtual " << ret << endl
- << post_name (e) << " ();"
- << "};";
- }
- };
-
- //
- //
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String const& name (eimpl (l));
- SemanticGraph::Type& t (l.argumented ().type ());
-
- String item (unclash (ename (l), "item"));
-
- os << "class " << type_exp << name << ": public virtual " <<
- ename (l)
- << "{"
- << "public:" << endl
- << "virtual void" << endl
- << "pre ();"
- << endl;
-
- // item
- //
- String const& arg (arg_type (t));
-
- os << "virtual void" << endl
- << item;
-
- if (arg == L"void")
- os << " ();";
- else
- os << " (" << arg << ");";
-
- os << endl;
-
- // post
- //
- String const& ret (ret_type (l));
-
- os << "virtual " << ret << endl
- << post_name (l) << " ();"
- << "};";
- }
- };
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String const& name (eimpl (u));
- String const& ret (ret_type (u));
-
- os << "class " << type_exp << name << ": public virtual " <<
- ename (u)
- << "{"
- << "public:" << endl
- << "virtual void" << endl
- << "pre ();"
- << endl
- << "virtual void" << endl
- << "_characters (const " << string_type << "&);"
- << endl
- << "virtual " << ret << endl
- << post_name (u) << " ();"
- << "};";
- }
- };
-
-
- //
- //
- struct ParserCallback: Traversal::Member, Context
- {
- ParserCallback (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- String const& arg (arg_type (m.type ()));
-
- os << "virtual void" << endl
- << ename (m);
-
- if (arg == L"void")
- os << " ();";
- else
- os << " (" << arg << ");";
-
- os << endl;
- }
- };
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c),
- parser_callback_ (c)
- {
- names_parser_callback_ >> parser_callback_;
- }
-
- virtual void
- traverse (Type& c)
- {
- String const& name (eimpl (c));
- String const& ret (ret_type (c));
-
- os << "class " << type_exp << name << ": public virtual " <<
- ename (c);
-
- if (c.inherits_p ())
- os << "," << endl
- << " public " << fq_name (c.inherits ().base (), "impl");
-
- os << "{"
- << "public:" << endl
- << "virtual void" << endl
- << "pre ();"
- << endl;
-
- // In case of an inheritance-by-restriction, we don't need to
- // generate parser callbacks, etc. since they are the same as in
- // the base.
- //
- if (!restriction_p (c))
- {
- names (c, names_parser_callback_);
- }
-
- os << "virtual " << ret << endl
- << post_name (c) << " ();"
- << "};";
- }
-
- private:
- //
- //
- ParserCallback parser_callback_;
- Traversal::Names names_parser_callback_;
- };
- }
-
- void
- generate_impl_header (Context& ctx)
- {
- Traversal::Schema schema;
-
- Sources sources;
- Includes includes (ctx, Includes::impl_header);
- Traversal::Names schema_names;
-
- Namespace ns (ctx);
- Traversal::Names names;
-
- schema >> includes;
- schema >> sources >> schema;
- schema >> schema_names >> ns >> names;
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/impl-header.hxx b/xsd/xsd/cxx/parser/impl-header.hxx
deleted file mode 100644
index 273201b..0000000
--- a/xsd/xsd/cxx/parser/impl-header.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/parser/impl-header.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_IMPL_HEADER_HXX
-#define CXX_PARSER_IMPL_HEADER_HXX
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- void
- generate_impl_header (Context&);
- }
-}
-
-#endif // CXX_PARSER_IMPL_HEADER_HXX
diff --git a/xsd/xsd/cxx/parser/impl-source.cxx b/xsd/xsd/cxx/parser/impl-source.cxx
deleted file mode 100644
index ad85f81..0000000
--- a/xsd/xsd/cxx/parser/impl-source.cxx
+++ /dev/null
@@ -1,385 +0,0 @@
-// file : xsd/cxx/parser/impl-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/parser/impl-source.hxx>
-#include <cxx/parser/print-impl-common.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- String const& name (eimpl (e));
- String const& ret (ret_type (e));
- SemanticGraph::Type& base (e.inherits ().base ());
- String const& base_ret (ret_type (base));
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- // pre
- //
- os << "void " << name << "::" << endl
- << "pre ()"
- << "{"
- << "}";
-
- // post
- //
- os << ret << " " << name << "::" << endl
- << post_name (e) << " ()"
- << "{";
-
- if (ret == base_ret)
- {
- os << (ret != L"void" ? "return " : "") <<
- post_name (base) << " ();";
- }
- else if (ret == L"void")
- {
- os << arg_type (base) << " v (" << post_name (base) << " ());"
- << endl;
-
- if (options.generate_print_impl ())
- {
- PrintCall t (*this, e.name (), "v");
- t.dispatch (base);
- }
- else
- os << "// TODO" << endl
- << "//" << endl;
- }
- else
- {
- if (base_ret == L"void")
- os << post_name (base) << " ();";
- else
- os << arg_type (base) << " v (" << post_name (base) << " ());"
- << endl
- << "// TODO" << endl
- << "//" << endl
- << "// return ... ;" << endl;
- }
-
- os << "}";
- }
- };
-
- //
- //
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String const& name (eimpl (l));
- SemanticGraph::Type& type (l.argumented ().type ());
-
- String item (unclash (ename (l), "item"));
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- // pre
- //
- os << "void " << name << "::" << endl
- << "pre ()"
- << "{"
- << "}";
-
- // item
- //
- String const& arg (arg_type (type));
-
- os << "void " << name << "::" << endl
- << item;
-
- if (arg == L"void")
- os << " ()";
- else
- os << " (" << arg << " " << item << ")";
-
- os << "{";
-
- if (arg != L"void")
- {
- if (options.generate_print_impl ())
- {
- PrintCall t (*this, type.name (), item);
- t.dispatch (type);
- }
- else
- os << "// TODO" << endl
- << "//" << endl;
- }
-
- os << "}";
-
- // post
- //
- String const& ret (ret_type (l));
-
- os << ret << " " << name << "::" << endl
- << post_name (l) << " ()"
- << "{";
-
- if (ret != L"void")
- os << "// TODO" << endl
- << "//" << endl
- << "// return ... ;" << endl;
-
- os << "}";
- }
- };
-
- //
- //
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String const& name (eimpl (u));
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- // pre
- //
- os << "void " << name << "::" << endl
- << "pre ()"
- << "{"
- << "}";
-
- // _characters
- //
- os << "void " << name << "::" << endl
- << "_characters (const " << string_type << "& s)"
- << "{";
-
- if (options.generate_print_impl ())
- os << cout_inst << " << " << strlit (u.name () + L": ") <<
- " << s << std::endl;";
- else
- os << "// TODO" << endl
- << "//" << endl;
-
- os << "}";
-
- // post
- //
- String const& ret (ret_type (u));
-
- os << ret << " " << name << "::" << endl
- << post_name (u) << " ()"
- << "{";
-
- if (ret != L"void")
- os << "// TODO" << endl
- << "//" << endl
- << "// return ... ;" << endl;
-
- os << "}";
- }
- };
-
- //
- //
- struct ParserCallback: Traversal::Member, Context
- {
- ParserCallback (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- String const& name (ename (m));
- String const& arg (arg_type (m.type ()));
-
- os << "void " <<
- eimpl (dynamic_cast<SemanticGraph::Complex&> (m.scope ())) <<
- "::" << endl
- << name;
-
- if (arg == L"void")
- os << " ()";
- else
- os << " (" << arg << " " << name << ")";
-
- os << "{";
-
- if (arg != L"void")
- {
- if (options.generate_print_impl ())
- {
- PrintCall t (*this, m.name (), name);
- t.dispatch (m.type ());
- }
- else
- os << "// TODO" << endl
- << "//" << endl;
- }
-
- os << "}";
- }
- };
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c), parser_callback_ (c)
- {
- names_parser_callback_ >> parser_callback_;
- }
-
- virtual void
- traverse (Type& c)
- {
- String const& name (eimpl (c));
-
- bool restriction (restriction_p (c));
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- // pre
- //
- os << "void " << name << "::" << endl
- << "pre ()"
- << "{"
- << "}";
-
- // Parser callbacks.
- //
- if (!restriction)
- names (c, names_parser_callback_);
-
- // post
- //
- String const& ret (ret_type (c));
-
- os << ret << " " << name << "::" << endl
- << post_name (c) << " ()"
- << "{";
-
- if (c.inherits_p ())
- {
- SemanticGraph::Type& base (c.inherits ().base ());
- String const& base_ret (ret_type (base));
-
- if (ret == base_ret)
- {
- os << (ret != L"void" ? "return " : "") <<
- post_name (base) << " ();";
- }
- else if (ret == L"void")
- {
- os << arg_type (base) << " v (" << post_name (base) << " ());"
- << endl;
-
- if (options.generate_print_impl ())
- {
- PrintCall t (*this, c.name (), "v");
- t.dispatch (base);
- }
- else
- os << "// TODO" << endl
- << "//" << endl;
- }
- else
- {
- if (base_ret == L"void")
- os << post_name (base) << " ();";
- else
- os << arg_type (base) << " v (" << post_name (base) << " ());"
- << endl
- << "// TODO" << endl
- << "//" << endl
- << "// return ... ;" << endl;
- }
- }
- else
- {
- if (ret != L"void")
- os << "// TODO" << endl
- << "//" << endl
- << "// return ... ;" << endl;
- }
-
- os << "}";
- }
-
- private:
- //
- //
- ParserCallback parser_callback_;
- Traversal::Names names_parser_callback_;
- };
- }
-
- void
- generate_impl_source (Context& ctx)
- {
- if (ctx.options.generate_print_impl ())
- ctx.os << "#include <iostream>" << endl
- << endl;
-
- Traversal::Schema schema;
- Sources sources;
- Traversal::Names schema_names;
- Namespace ns (ctx);
- Traversal::Names names;
-
- schema >> sources >> schema;
- schema >> schema_names >> ns >> names;
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/impl-source.hxx b/xsd/xsd/cxx/parser/impl-source.hxx
deleted file mode 100644
index b6f9b3d..0000000
--- a/xsd/xsd/cxx/parser/impl-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/parser/impl-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_IMPL_SOURCE_HXX
-#define CXX_PARSER_IMPL_SOURCE_HXX
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- void
- generate_impl_source (Context&);
- }
-}
-
-#endif // CXX_PARSER_IMPL_SOURCE_HXX
diff --git a/xsd/xsd/cxx/parser/name-processor.cxx b/xsd/xsd/cxx/parser/name-processor.cxx
deleted file mode 100644
index 219a3c9..0000000
--- a/xsd/xsd/cxx/parser/name-processor.cxx
+++ /dev/null
@@ -1,1176 +0,0 @@
-// file : xsd/cxx/parser/name-processor.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <set>
-#include <map>
-#include <sstream>
-#include <iostream>
-
-#include <cxx/parser/name-processor.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-
-using namespace std;
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- //
- //
- typedef set<String> NameSet;
-
- class Context: public CXX::Context
- {
- public:
- Context (Parser::options const& ops,
- SemanticGraph::Schema& root,
- SemanticGraph::Path const& path,
- StringLiteralMap const* map)
- : CXX::Context (std::wcerr, root, path, ops, map),
- skel_suffix_ (ops.skel_type_suffix ()),
- impl_suffix_ (ops.impl_type_suffix ()),
- impl (ops.generate_noop_impl () ||
- ops.generate_print_impl () ||
- ops.generate_test_driver ()),
- skel_suffix (skel_suffix_),
- impl_suffix (impl_suffix_),
- global_type_names (global_type_names_),
- polymorphic (ops.generate_polymorphic ())
- {
- }
-
- protected:
- Context (Context& c)
- : CXX::Context (c),
- impl (c.impl),
- skel_suffix (c.skel_suffix),
- impl_suffix (c.impl_suffix),
- global_type_names (c.global_type_names),
- polymorphic (c.polymorphic)
- {
- }
-
- public:
- String
- find_name (String const& n, NameSet& set)
- {
- String base_name (escape (n));
- String name (base_name);
-
- for (size_t i (1); set.find (name) != set.end (); ++i)
- {
- std::wostringstream os;
- os << i;
- name = base_name + os.str ();
- }
-
- set.insert (name);
- return name;
- }
-
- private:
- String const skel_suffix_;
- String const impl_suffix_;
-
- map<String, NameSet> global_type_names_;
-
- public:
- bool const impl;
- String const& skel_suffix;
- String const& impl_suffix;
-
- map<String, NameSet>& global_type_names;
-
- bool polymorphic;
- };
-
-
- //
- //
- struct PrimaryMember: Traversal::Member, Context
- {
- PrimaryMember (Context& c, NameSet& set)
- : Context (c), set_ (set)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (Parser::Context::skip (m))
- return;
-
- m.context ().set ("name", find_name (m.name (), set_));
- }
-
- private:
- NameSet& set_;
- };
-
- struct DerivedMember: Traversal::Member, Context
- {
- DerivedMember (Context& c, NameSet& set)
- : Context (c), set_ (set)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (Parser::Context::skip (m))
- return;
-
- m.context ().set ("parser",
- find_name (m.name () + L"_parser", set_));
-
- String const& base (m.context ().get<String> ("name"));
- m.context ().set ("member", find_name (base + L"_parser_", set_));
-
- if (polymorphic &&
- m.is_a<SemanticGraph::Element> () &&
- !m.type ().context ().count ("anonymous"))
- {
- m.context ().set (
- "member-map", find_name (base + L"_parser_map_", set_));
-
- m.context ().set (
- "member-map-impl",
- find_name (base + L"_parser_map_impl_", set_));
- }
- }
-
- private:
- NameSet& set_;
- };
-
-
- //
- //
- struct MemberInRestrictionBase: Traversal::Member
- {
- protected:
- MemberInRestrictionBase (NameSet& set, SemanticGraph::Complex& base)
- : set_ (set), base_ (base)
- {
- }
-
- struct NotFound {};
-
- Type&
- find_member (SemanticGraph::Complex& c, Type& m)
- {
- using SemanticGraph::Complex;
-
- Complex::NamesIteratorPair r (c.find (m.name ()));
-
- for (; r.first != r.second; ++r.first)
- {
- if (r.first->named ().is_a<Type> ())
- {
- Type& bm (dynamic_cast<Type&> (r.first->named ()));
-
- if (typeid (bm) != typeid (m))
- continue;
-
- if (m.qualified_p ())
- {
- if (bm.qualified_p () &&
- m.name () == bm.name () &&
- m.namespace_ ().name () == bm.namespace_ ().name ())
- return bm;
- }
- else
- {
- if (!bm.qualified_p () && m.name () == bm.name ())
- return bm;
- }
- }
- }
-
- // If we didn't find anything, try our base.
- //
- if (c.inherits_p ())
- {
- SemanticGraph::Type& base (c.inherits ().base ());
-
- if (base.is_a<Complex> ())
- return find_member (dynamic_cast<Complex&> (base), m);
- }
-
- //std::wcerr << "unable to find member " << m.name () << " in "
- // << c.name () << std::endl;
-
- throw NotFound ();
- }
-
- protected:
- NameSet& set_;
- SemanticGraph::Complex& base_;
- };
-
- struct PrimaryMemberInRestriction: MemberInRestrictionBase, Context
- {
- PrimaryMemberInRestriction (Context& c,
- NameSet& set,
- SemanticGraph::Complex& base)
- : MemberInRestrictionBase (set, base), Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (Parser::Context::skip (m))
- return;
-
- String name;
-
- try
- {
- // Try to find corresponding member in one of our bases.
- // This may fail if we use an element that substitutes
- // one in our base.
- //
- Type& bm (find_member (base_, m));
- name = bm.context ().get<String> ("name");
- }
- catch (NotFound const&)
- {
- // Fall back to the standard name assignment.
- //
- name = find_name (m.name (), set_);
- }
-
- m.context ().set ("name", name);
- }
- };
-
- struct DerivedMemberInRestriction: MemberInRestrictionBase, Context
- {
- DerivedMemberInRestriction (Context& c,
- NameSet& set,
- SemanticGraph::Complex& base)
- : MemberInRestrictionBase (set, base), Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (Parser::Context::skip (m))
- return;
-
- bool poly (polymorphic &&
- m.is_a<SemanticGraph::Element> () &&
- !m.type ().context ().count ("anonymous"));
-
- String parser, member, member_map, member_map_impl;
-
- try
- {
- // Try to find corresponding member in one of our bases.
- // This may fail if we use an element that substitutes
- // one in our base.
- //
- Type& bm (find_member (base_, m));
- parser = bm.context ().get<String> ("parser");
- member = bm.context ().get<String> ("member");
-
- if (poly)
- {
- member_map = bm.context ().get<String> ("member-map");
- member_map_impl = bm.context ().get<String> ("member-map-impl");
- }
- }
- catch (NotFound const&)
- {
- // Fall back to the standard name assignment.
- //
- String const& base (m.context ().get<String> ("name"));
-
- parser = find_name (m.name () + L"_parser", set_);
- member = find_name (base + L"_parser_", set_);
-
- if (poly)
- {
- member_map = find_name (base + L"_parser_map_", set_);
- member_map_impl = find_name (base + L"_parser_map_impl_", set_);
- }
- }
-
- m.context ().set ("parser", parser);
- m.context ().set ("member", member);
-
- if (poly)
- {
- m.context ().set ("member-map", member_map);
- m.context ().set ("member-map-impl", member_map_impl);
- }
- }
- };
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- SemanticGraph::Context& cc (c.context ());
-
- // Use processed name.
- //
- String const& name (cc.get<String> ("name"));
-
- // We leave this set around to allow other mappings to use
- // this information.
- //
- cc.set ("cxx-parser-name-processor-member-set", NameSet ());
- NameSet& member_set (
- cc.get<NameSet> ("cxx-parser-name-processor-member-set"));
-
- member_set.insert (name);
-
- // Add our base's members to the initial list unless we are
- // inheriting by restriction in which case we need to have
- // the same names as our base.
- //
- bool restriction (false);
-
- if (c.inherits_p ())
- {
- // @@ What if this types name is the same as one of base's
- // members?
- //
- SemanticGraph::Type& base (c.inherits ().base ());
-
- if (base.is_a<SemanticGraph::Complex> ())
- {
- if (!base.context ().count (
- "cxx-parser-name-processor-member-set"))
- {
- dispatch (base);
- }
-
- NameSet const& base_set (
- base.context ().get<NameSet> (
- "cxx-parser-name-processor-member-set"));
-
- member_set.insert (base_set.begin (), base_set.end ());
-
- // Inheritance by restriction from anyType is a special case.
- //
- restriction = c.inherits ().is_a<SemanticGraph::Restricts> () &&
- !c.inherits ().base ().is_a<SemanticGraph::AnyType> ();
- }
- }
-
- if (restriction)
- {
- // First assign the "primary" names.
- //
- {
- PrimaryMemberInRestriction member (
- *this,
- member_set,
- dynamic_cast<SemanticGraph::Complex&> (
- c.inherits ().base ()));
-
- Traversal::Names names (member);
-
- Complex::names (c, names);
- }
-
- // Assign "derived" names.
- //
- {
- DerivedMemberInRestriction member (
- *this,
- member_set,
- dynamic_cast<SemanticGraph::Complex&> (
- c.inherits ().base ()));
-
- Traversal::Names names (member);
-
- Complex::names (c, names);
- }
- }
- else
- {
- // First assign the "primary" names.
- //
- {
- PrimaryMember member (*this, member_set);
- Traversal::Names names (member);
-
- Complex::names (c, names);
- }
-
- // Assign "derived" names.
- //
- {
- DerivedMember member (*this, member_set);
- Traversal::Names names (member);
-
- Complex::names (c, names);
- }
- }
- }
- };
-
-
- //
- //
- struct GlobalType: Traversal::Type, Context
- {
- GlobalType (Context& c, NameSet& set)
- : Context (c), set_ (set)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- SemanticGraph::Context& c (t.context ());
- String const& n (t.name ());
-
- String name (find_name (n + skel_suffix, set_));
- c.set ("name", name);
-
- // Assign the post_* name.
- //
- c.set ("post", find_post_name (t));
-
- // Note that we do not add this name to the set so that it
- // does not influence other names.
- //
- if (impl)
- c.set ("impl", escape (n + impl_suffix));
- }
-
- private:
- String
- find_post_name (SemanticGraph::Type& t)
- {
- String const& n (t.name ());
-
- // It is possible that our base has the same type name (just
- // in a different namespaces). Avoid name clash in this case.
- //
- using SemanticGraph::Complex;
-
- Complex* c = dynamic_cast<Complex*> (&t);
-
- if (c == 0 || !c->inherits_p ())
- {
- return escape (L"post_" + n);
- }
- else
- {
- NameSet set;
-
- // Collect all base's post_*. In some mutual inclusion cases it
- // is possible that our base won't have the post name assigned
- // yet. In this situation will will have to figure it out
- // ourselves (we can do it since we use the "raw" type name).
- //
- SemanticGraph::Type* b (&c->inherits ().base ());
-
- while (true)
- {
- if (b->context ().count ("post"))
- set.insert (b->context ().get<String> ("post"));
- else
- set.insert (find_post_name (*b));
-
- Complex* cb (dynamic_cast<Complex*> (b));
-
- if (cb != 0 && cb->inherits_p ())
- {
- b = &cb->inherits ().base ();
- continue;
- }
-
- break;
- }
-
- String base_name (escape (L"post_" + n));
- String post (base_name);
-
- for (size_t i (1); set.find (post) != set.end (); ++i)
- {
- std::wostringstream os;
- os << i;
- post = base_name + os.str ();
- }
-
- return post;
- }
- }
-
- private:
- NameSet& set_;
- };
-
-
- struct Namespace: Traversal::Namespace, Context
- {
- Namespace (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& ns)
- {
- NameSet& type_set (global_type_names[ns.name ()]);
-
- GlobalType type (*this, type_set);
- Traversal::Names names (type);
-
- Traversal::Namespace::names (ns, names);
- }
- };
-
-
- struct FundType: Traversal::AnyType,
- Traversal::AnySimpleType,
-
- Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal,
-
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Language,
-
- Traversal::Fundamental::QName,
-
- Traversal::Fundamental::Id,
- Traversal::Fundamental::IdRef,
- Traversal::Fundamental::IdRefs,
-
- Traversal::Fundamental::AnyURI,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary,
-
- Traversal::Fundamental::Date,
- Traversal::Fundamental::DateTime,
- Traversal::Fundamental::Duration,
- Traversal::Fundamental::Day,
- Traversal::Fundamental::Month,
- Traversal::Fundamental::MonthDay,
- Traversal::Fundamental::Year,
- Traversal::Fundamental::YearMonth,
- Traversal::Fundamental::Time,
-
- Traversal::Fundamental::Entity,
- Traversal::Fundamental::Entities,
-
- Context
- {
- FundType (Context& c)
- : Context (c)
- {
- }
-
- // anyType & anySimpleType.
- //
- virtual void
- traverse (SemanticGraph::AnyType& t)
- {
- t.context ().set ("name", make_skel_name ("any_type"));
- t.context ().set ("impl", make_impl_name ("any_type"));
- t.context ().set ("post", String ("post_any_type"));
- }
-
- virtual void
- traverse (SemanticGraph::AnySimpleType& t)
- {
- t.context ().set ("name", make_skel_name ("any_simple_type"));
- t.context ().set ("impl", make_impl_name ("any_simple_type"));
- t.context ().set ("post", String ("post_any_simple_type"));
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean& t)
- {
- t.context ().set ("name", make_skel_name ("boolean"));
- t.context ().set ("impl", make_impl_name ("boolean"));
- t.context ().set ("post", String ("post_boolean"));
- }
-
- // Integral types.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte& t)
- {
- t.context ().set ("name", make_skel_name ("byte"));
- t.context ().set ("impl", make_impl_name ("byte"));
- t.context ().set ("post", String ("post_byte"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte& t)
- {
- t.context ().set ("name", make_skel_name ("unsigned_byte"));
- t.context ().set ("impl", make_impl_name ("unsigned_byte"));
- t.context ().set ("post", String ("post_unsigned_byte"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short& t)
- {
- t.context ().set ("name", make_skel_name ("short"));
- t.context ().set ("impl", make_impl_name ("short"));
- t.context ().set ("post", String ("post_short"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort& t)
- {
- t.context ().set ("name", make_skel_name ("unsigned_short"));
- t.context ().set ("impl", make_impl_name ("unsigned_short"));
- t.context ().set ("post", String ("post_unsigned_short"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int& t)
- {
- t.context ().set ("name", make_skel_name ("int"));
- t.context ().set ("impl", make_impl_name ("int"));
- t.context ().set ("post", String ("post_int"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt& t)
- {
- t.context ().set ("name", make_skel_name ("unsigned_int"));
- t.context ().set ("impl", make_impl_name ("unsigned_int"));
- t.context ().set ("post", String ("post_unsigned_int"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long& t)
- {
- t.context ().set ("name", make_skel_name ("long"));
- t.context ().set ("impl", make_impl_name ("long"));
- t.context ().set ("post", String ("post_long"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong& t)
- {
- t.context ().set ("name", make_skel_name ("unsigned_long"));
- t.context ().set ("impl", make_impl_name ("unsigned_long"));
- t.context ().set ("post", String ("post_unsigned_long"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer& t)
- {
- t.context ().set ("name", make_skel_name ("integer"));
- t.context ().set ("impl", make_impl_name ("integer"));
- t.context ().set ("post", String ("post_integer"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
- {
- t.context ().set ("name", make_skel_name ("non_positive_integer"));
- t.context ().set ("impl", make_impl_name ("non_positive_integer"));
- t.context ().set ("post", String ("post_non_positive_integer"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
- {
- t.context ().set ("name", make_skel_name ("non_negative_integer"));
- t.context ().set ("impl", make_impl_name ("non_negative_integer"));
- t.context ().set ("post", String ("post_non_negative_integer"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger& t)
- {
- t.context ().set ("name", make_skel_name ("positive_integer"));
- t.context ().set ("impl", make_impl_name ("positive_integer"));
- t.context ().set ("post", String ("post_positive_integer"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger& t)
- {
- t.context ().set ("name", make_skel_name ("negative_integer"));
- t.context ().set ("impl", make_impl_name ("negative_integer"));
- t.context ().set ("post", String ("post_negative_integer"));
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- t.context ().set ("name", make_skel_name ("float"));
- t.context ().set ("impl", make_impl_name ("float"));
- t.context ().set ("post", String ("post_float"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- t.context ().set ("name", make_skel_name ("double"));
- t.context ().set ("impl", make_impl_name ("double"));
- t.context ().set ("post", String ("post_double"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal& t)
- {
- t.context ().set ("name", make_skel_name ("decimal"));
- t.context ().set ("impl", make_impl_name ("decimal"));
- t.context ().set ("post", String ("post_decimal"));
- }
-
- // Strings.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::String& t)
- {
- t.context ().set ("name", make_skel_name ("string"));
- t.context ().set ("impl", make_impl_name ("string"));
- t.context ().set ("post", String ("post_string"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString& t)
- {
- t.context ().set ("name", make_skel_name ("normalized_string"));
- t.context ().set ("impl", make_impl_name ("normalized_string"));
- t.context ().set ("post", String ("post_normalized_string"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token& t)
- {
- t.context ().set ("name", make_skel_name ("token"));
- t.context ().set ("impl", make_impl_name ("token"));
- t.context ().set ("post", String ("post_token"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken& t)
- {
- t.context ().set ("name", make_skel_name ("nmtoken"));
- t.context ().set ("impl", make_impl_name ("nmtoken"));
- t.context ().set ("post", String ("post_nmtoken"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens& t)
- {
- t.context ().set ("name", make_skel_name ("nmtokens"));
- t.context ().set ("impl", make_impl_name ("nmtokens"));
- t.context ().set ("post", String ("post_nmtokens"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name& t)
- {
- t.context ().set ("name", make_skel_name ("name"));
- t.context ().set ("impl", make_impl_name ("name"));
- t.context ().set ("post", String ("post_name"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName& t)
- {
- t.context ().set ("name", make_skel_name ("ncname"));
- t.context ().set ("impl", make_impl_name ("ncname"));
- t.context ().set ("post", String ("post_ncname"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Language& t)
- {
- t.context ().set ("name", make_skel_name ("language"));
- t.context ().set ("impl", make_impl_name ("language"));
- t.context ().set ("post", String ("post_language"));
- }
-
-
- // Qualified name.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::QName& t)
- {
- t.context ().set ("name", make_skel_name ("qname"));
- t.context ().set ("impl", make_impl_name ("qname"));
- t.context ().set ("post", String ("post_qname"));
- }
-
-
- // ID/IDREF.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Id& t)
- {
- t.context ().set ("name", make_skel_name ("id"));
- t.context ().set ("impl", make_impl_name ("id"));
- t.context ().set ("post", String ("post_id"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRef& t)
- {
- t.context ().set ("name", make_skel_name ("idref"));
- t.context ().set ("impl", make_impl_name ("idref"));
- t.context ().set ("post", String ("post_idref"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs& t)
- {
- t.context ().set ("name", make_skel_name ("idrefs"));
- t.context ().set ("impl", make_impl_name ("idrefs"));
- t.context ().set ("post", String ("post_idrefs"));
- }
-
- // URI.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::AnyURI& t)
- {
- t.context ().set ("name", make_skel_name ("uri"));
- t.context ().set ("impl", make_impl_name ("uri"));
- t.context ().set ("post", String ("post_uri"));
- }
-
- // Binary.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary& t)
- {
- t.context ().set ("name", make_skel_name ("base64_binary"));
- t.context ().set ("impl", make_impl_name ("base64_binary"));
- t.context ().set ("post", String ("post_base64_binary"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary& t)
- {
- t.context ().set ("name", make_skel_name ("hex_binary"));
- t.context ().set ("impl", make_impl_name ("hex_binary"));
- t.context ().set ("post", String ("post_hex_binary"));
- }
-
-
- // Date/time.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Date& t)
- {
- t.context ().set ("name", make_skel_name ("date"));
- t.context ().set ("impl", make_impl_name ("date"));
- t.context ().set ("post", String ("post_date"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::DateTime& t)
- {
- t.context ().set ("name", make_skel_name ("date_time"));
- t.context ().set ("impl", make_impl_name ("date_time"));
- t.context ().set ("post", String ("post_date_time"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Duration& t)
- {
- t.context ().set ("name", make_skel_name ("duration"));
- t.context ().set ("impl", make_impl_name ("duration"));
- t.context ().set ("post", String ("post_duration"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Day& t)
- {
- t.context ().set ("name", make_skel_name ("gday"));
- t.context ().set ("impl", make_impl_name ("gday"));
- t.context ().set ("post", String ("post_gday"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Month& t)
- {
- t.context ().set ("name", make_skel_name ("gmonth"));
- t.context ().set ("impl", make_impl_name ("gmonth"));
- t.context ().set ("post", String ("post_gmonth"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::MonthDay& t)
- {
- t.context ().set ("name", make_skel_name ("gmonth_day"));
- t.context ().set ("impl", make_impl_name ("gmonth_day"));
- t.context ().set ("post", String ("post_gmonth_day"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Year& t)
- {
- t.context ().set ("name", make_skel_name ("gyear"));
- t.context ().set ("impl", make_impl_name ("gyear"));
- t.context ().set ("post", String ("post_gyear"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::YearMonth& t)
- {
- t.context ().set ("name", make_skel_name ("gyear_month"));
- t.context ().set ("impl", make_impl_name ("gyear_month"));
- t.context ().set ("post", String ("post_gyear_month"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Time& t)
- {
- t.context ().set ("name", make_skel_name ("time"));
- t.context ().set ("impl", make_impl_name ("time"));
- t.context ().set ("post", String ("post_time"));
- }
-
- // Entity.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Entity& t)
- {
- t.context ().set ("name", make_skel_name ("entity"));
- t.context ().set ("impl", make_impl_name ("entity"));
- t.context ().set ("post", String ("post_entity"));
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Entities& t)
- {
- t.context ().set ("name", make_skel_name ("entities"));
- t.context ().set ("impl", make_impl_name ("entities"));
- t.context ().set ("post", String ("post_entities"));
- }
-
- private:
- String
- make_skel_name (String const& base)
- {
- return escape (base + skel_suffix);
- }
-
- String
- make_impl_name (String const& base)
- {
- return escape (base + impl_suffix);
- }
- };
-
- // Go into sourced/included/imported schemas while making sure
- // we don't process the same stuff more than once.
- //
- struct Uses: Traversal::Sources,
- Traversal::Includes,
- Traversal::Imports
- {
- virtual void
- traverse (SemanticGraph::Sources& sr)
- {
- SemanticGraph::Schema& s (sr.schema ());
-
- if (!s.context ().count ("cxx-parser-name-processor-seen"))
- {
- s.context ().set ("cxx-parser-name-processor-seen", true);
- Traversal::Sources::traverse (sr);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Includes& i)
- {
- SemanticGraph::Schema& s (i.schema ());
-
- if (!s.context ().count ("cxx-parser-name-processor-seen"))
- {
- s.context ().set ("cxx-parser-name-processor-seen", true);
- Traversal::Includes::traverse (i);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Imports& i)
- {
- SemanticGraph::Schema& s (i.schema ());
-
- if (!s.context ().count ("cxx-parser-name-processor-seen"))
- {
- s.context ().set ("cxx-parser-name-processor-seen", true);
- Traversal::Imports::traverse (i);
- }
- }
- };
-
- // Go into implied schemas while making sure we don't process
- // the same stuff more than once.
- //
- struct Implies: Traversal::Implies
- {
- virtual void
- traverse (SemanticGraph::Implies& i)
- {
- SemanticGraph::Schema& s (i.schema ());
-
- if (!s.context ().count ("cxx-parser-name-processor-seen"))
- {
- s.context ().set ("cxx-parser-name-processor-seen", true);
- Traversal::Implies::traverse (i);
- }
- }
- };
-
- void
- process_impl (options const& ops,
- SemanticGraph::Schema& tu,
- SemanticGraph::Path const& file,
- StringLiteralMap const& map)
- {
- Context ctx (ops, tu, file, &map);
-
- if (tu.names_begin ()->named ().name () ==
- L"http://www.w3.org/2001/XMLSchema")
- {
- // XML Schema namespace.
- //
- Traversal::Schema schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- FundType fund_type (ctx);
-
- schema >> schema_names >> ns >> ns_names >> fund_type;
-
- schema.dispatch (tu);
- }
- else
- {
-
- // Pass one - assign names to fundamental types.
- //
- {
- Traversal::Schema schema;
- Implies implies;
- Traversal::Schema xs_schema;
-
- schema >> implies >> xs_schema;
-
- Traversal::Names xs_schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- FundType fund_type (ctx);
-
- xs_schema >> xs_schema_names >> ns >> ns_names >> fund_type;
-
- schema.dispatch (tu);
- }
-
- // Pass two - assign names to global types. This pass cannot
- // be combined with pass three because of possible recursive
- // schema inclusions. Also note that we check first if this
- // schema has already been processed which may happen in the
- // file-per-type compilation mode.
- //
- if (!tu.context ().count ("cxx-parser-name-processor-seen"))
- {
- Traversal::Schema schema;
- Uses uses;
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- Namespace ns (ctx);
-
- schema >> schema_names >> ns;
-
- // Some twisted schemas do recusive self-inclusion.
- //
- tu.context ().set ("cxx-parser-name-processor-seen", true);
-
- schema.dispatch (tu);
- }
-
- // Pass three - assign names inside complex types. Here we don't
- // need to go into included/imported schemas.
- //
- {
- Traversal::Schema schema;
- Sources sources;
-
- schema >> sources >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
-
- schema >> schema_names >> ns >> ns_names;
-
- Complex complex (ctx);
-
- ns_names >> complex;
-
- schema.dispatch (tu);
- }
- }
- }
- }
-
- void NameProcessor::
- process (options const& ops,
- SemanticGraph::Schema& tu,
- SemanticGraph::Path const& file,
- StringLiteralMap const& map)
- {
- process_impl (ops, tu, file, map);
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/name-processor.hxx b/xsd/xsd/cxx/parser/name-processor.hxx
deleted file mode 100644
index 0460ea4..0000000
--- a/xsd/xsd/cxx/parser/name-processor.hxx
+++ /dev/null
@@ -1,31 +0,0 @@
-// file : xsd/cxx/parser/name-processor.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_NAME_PROCESSOR_HXX
-#define CXX_PARSER_NAME_PROCESSOR_HXX
-
-#include <xsd-frontend/semantic-graph.hxx>
-
-#include <types.hxx>
-
-#include <cxx/elements.hxx>
-#include <cxx/parser/options.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- class NameProcessor
- {
- public:
- void
- process (options const&,
- XSDFrontend::SemanticGraph::Schema&,
- XSDFrontend::SemanticGraph::Path const& file,
- StringLiteralMap const& map);
- };
- }
-}
-
-#endif // CXX_PARSER_NAME_PROCESSOR_HXX
diff --git a/xsd/xsd/cxx/parser/options.cli b/xsd/xsd/cxx/parser/options.cli
deleted file mode 100644
index 227bb51..0000000
--- a/xsd/xsd/cxx/parser/options.cli
+++ /dev/null
@@ -1,148 +0,0 @@
-// file : xsd/cxx/parser/options.cli
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include <cstddef>; // std::size_t
-
-include <types.hxx>; // NarrowString, NarrowStrings
-
-include <cxx/options.cli>;
-
-namespace CXX
-{
- namespace Parser
- {
- class options: CXX::options
- {
- NarrowStrings --type-map
- {
- "<mapfile>",
- "Read XML Schema to C++ type mapping information from <mapfile>.
- Repeat this option to specify several type maps. Type maps are
- considered in order of appearance and the first match is used. By
- default all user-defined types are mapped to \cb{void}. See the
- TYPE MAP section below for more information."
- };
-
- NarrowString --xml-parser = "xerces"
- {
- "<parser>",
- "Use <parser> as the underlying XML parser. Valid values are
- \cb{xerces} for Xerces-C++ (default) and \cb{expat} for Expat."
- };
-
- // Features.
- //
- bool --generate-validation
- {
- "Generate validation code. The validation code (\"perfect parser\")
- ensures that instance documents conform to the schema. Validation
- code is generated by default when the selected underlying XML parser
- is non-validating (\cb{expat})."
- };
-
- bool --suppress-validation
- {
- "Suppress the generation of validation code. Validation is suppressed
- by default when the selected underlying XML parser is validating
- (\cb{xerces})."
- };
-
- bool --generate-polymorphic
- {
- "Generate polymorphism-aware code. Specify this option if you use
- substitution groups or \cb{xsi:type}."
- };
-
- bool --generate-noop-impl
- {
- "Generate a sample parser implementation that does nothing (no
- operation). The sample implementation can then be filled with
- the application-specific code. For an input file in the form
- \cb{name.xsd} this option triggers the generation of two
- additional C++ files in the form: \cb{name-pimpl.hxx} (parser
- implementation header file) and \cb{name-pimpl.cxx} (parser
- implementation source file)."
- };
-
- bool --generate-print-impl
- {
- "Generate a sample parser implementation that prints the XML data
- to \c{STDOUT}. For an input file in the form \cb{name.xsd} this
- option triggers the generation of two additional C++ files in the
- form: \cb{name-pimpl.hxx} (parser implementation header file) and
- \cb{name-pimpl.cxx} (parser implementation source file)."
- };
-
- bool --generate-test-driver
- {
- "Generate a test driver for the sample parser implementation. For an
- input file in the form \cb{name.xsd} this option triggers the
- generation of an additional C++ file in the form
- \cb{name-driver.cxx}."
- };
-
- bool --force-overwrite
- {
- "Force overwriting of the existing implementation and test driver
- files. Use this option only if you do not mind loosing the changes
- you have made in the sample implementation or test driver files."
- };
-
- // Root element.
- //
- bool --root-element-first
- {
- "Indicate that the first global element is the document root. This
- information is used to generate the test driver for the sample
- implementation."
- };
-
- bool --root-element-last
- {
- "Indicate that the last global element is the document root. This
- information is used to generate the test driver for the sample
- implementation."
- };
-
- NarrowString --root-element
- {
- "<element>",
- "Indicate that <element> is the document root. This information is
- used to generate the test driver for the sample implementation."
- };
-
- // Suffixes.
- //
- NarrowString --skel-type-suffix = "_pskel"
- {
- "<suffix>",
- "Use the provided <suffix> instead of the default \cb{_pskel} to
- construct the names of the generated parser skeletons."
- };
-
- NarrowString --skel-file-suffix = "-pskel"
- {
- "<suffix>",
- "Use the provided <suffix> instead of the default \cb{-pskel} to
- construct the names of the generated parser skeleton files."
- };
-
- NarrowString --impl-type-suffix = "_pimpl"
- {
- "<suffix>",
- "Use the provided <suffix> instead of the default \cb{_pimpl} to
- construct the names of the parser implementations for the built-in
- XML Schema types as well as sample parser implementations."
- };
-
- NarrowString --impl-file-suffix = "-pimpl"
- {
- "<suffix>",
- "Use the provided <suffix> instead of the default \cb{-pimpl} to
- construct the names of the generated sample parser implementation
- files."
- };
- };
- }
-}
diff --git a/xsd/xsd/cxx/parser/options.cxx b/xsd/xsd/cxx/parser/options.cxx
deleted file mode 100644
index 6f18446..0000000
--- a/xsd/xsd/cxx/parser/options.cxx
+++ /dev/null
@@ -1,581 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-// Begin prologue.
-//
-#include <options-parser.hxx>
-//
-// End prologue.
-
-#include <cxx/parser/options.hxx>
-
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
-#include <ostream>
-#include <sstream>
-
-namespace cli
-{
- template <typename X>
- struct parser
- {
- static void
- parse (X& x, bool& xs, scanner& s)
- {
- std::string o (s.next ());
-
- if (s.more ())
- {
- std::string v (s.next ());
- std::istringstream is (v);
- if (!(is >> x && is.eof ()))
- throw invalid_value (o, v);
- }
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <>
- struct parser<bool>
- {
- static void
- parse (bool& x, scanner& s)
- {
- s.next ();
- x = true;
- }
- };
-
- template <>
- struct parser<std::string>
- {
- static void
- parse (std::string& x, bool& xs, scanner& s)
- {
- const char* o (s.next ());
-
- if (s.more ())
- x = s.next ();
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <typename X>
- struct parser<std::vector<X> >
- {
- static void
- parse (std::vector<X>& c, bool& xs, scanner& s)
- {
- X x;
- bool dummy;
- parser<X>::parse (x, dummy, s);
- c.push_back (x);
- xs = true;
- }
- };
-
- template <typename X>
- struct parser<std::set<X> >
- {
- static void
- parse (std::set<X>& c, bool& xs, scanner& s)
- {
- X x;
- bool dummy;
- parser<X>::parse (x, dummy, s);
- c.insert (x);
- xs = true;
- }
- };
-
- template <typename K, typename V>
- struct parser<std::map<K, V> >
- {
- static void
- parse (std::map<K, V>& m, bool& xs, scanner& s)
- {
- std::string o (s.next ());
-
- if (s.more ())
- {
- std::string ov (s.next ());
- std::string::size_type p = ov.find ('=');
-
- if (p == std::string::npos)
- {
- K k = K ();
-
- if (!ov.empty ())
- {
- std::istringstream ks (ov);
-
- if (!(ks >> k && ks.eof ()))
- throw invalid_value (o, ov);
- }
-
- m[k] = V ();
- }
- else
- {
- K k = K ();
- V v = V ();
- std::string kstr (ov, 0, p);
- std::string vstr (ov, p + 1);
-
- if (!kstr.empty ())
- {
- std::istringstream ks (kstr);
-
- if (!(ks >> k && ks.eof ()))
- throw invalid_value (o, ov);
- }
-
- if (!vstr.empty ())
- {
- std::istringstream vs (vstr);
-
- if (!(vs >> v && vs.eof ()))
- throw invalid_value (o, ov);
- }
-
- m[k] = v;
- }
- }
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <typename X, typename T, T X::*M>
- void
- thunk (X& x, scanner& s)
- {
- parser<T>::parse (x.*M, s);
- }
-
- template <typename X, typename T, T X::*M, bool X::*S>
- void
- thunk (X& x, scanner& s)
- {
- parser<T>::parse (x.*M, x.*S, s);
- }
-}
-
-#include <map>
-#include <cstring>
-
-namespace CXX
-{
- namespace Parser
- {
- // options
- //
-
- options::
- options ()
- : type_map_ (),
- type_map_specified_ (false),
- xml_parser_ ("xerces"),
- xml_parser_specified_ (false),
- generate_validation_ (),
- suppress_validation_ (),
- generate_polymorphic_ (),
- generate_noop_impl_ (),
- generate_print_impl_ (),
- generate_test_driver_ (),
- force_overwrite_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_ (),
- root_element_specified_ (false),
- skel_type_suffix_ ("_pskel"),
- skel_type_suffix_specified_ (false),
- skel_file_suffix_ ("-pskel"),
- skel_file_suffix_specified_ (false),
- impl_type_suffix_ ("_pimpl"),
- impl_type_suffix_specified_ (false),
- impl_file_suffix_ ("-pimpl"),
- impl_file_suffix_specified_ (false)
- {
- }
-
- options::
- options (int& argc,
- char** argv,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
- : type_map_ (),
- type_map_specified_ (false),
- xml_parser_ ("xerces"),
- xml_parser_specified_ (false),
- generate_validation_ (),
- suppress_validation_ (),
- generate_polymorphic_ (),
- generate_noop_impl_ (),
- generate_print_impl_ (),
- generate_test_driver_ (),
- force_overwrite_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_ (),
- root_element_specified_ (false),
- skel_type_suffix_ ("_pskel"),
- skel_type_suffix_specified_ (false),
- skel_file_suffix_ ("-pskel"),
- skel_file_suffix_specified_ (false),
- impl_type_suffix_ ("_pimpl"),
- impl_type_suffix_specified_ (false),
- impl_file_suffix_ ("-pimpl"),
- impl_file_suffix_specified_ (false)
- {
- ::cli::argv_scanner s (argc, argv, erase);
- _parse (s, opt, arg);
- }
-
- options::
- options (int start,
- int& argc,
- char** argv,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
- : type_map_ (),
- type_map_specified_ (false),
- xml_parser_ ("xerces"),
- xml_parser_specified_ (false),
- generate_validation_ (),
- suppress_validation_ (),
- generate_polymorphic_ (),
- generate_noop_impl_ (),
- generate_print_impl_ (),
- generate_test_driver_ (),
- force_overwrite_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_ (),
- root_element_specified_ (false),
- skel_type_suffix_ ("_pskel"),
- skel_type_suffix_specified_ (false),
- skel_file_suffix_ ("-pskel"),
- skel_file_suffix_specified_ (false),
- impl_type_suffix_ ("_pimpl"),
- impl_type_suffix_specified_ (false),
- impl_file_suffix_ ("-pimpl"),
- impl_file_suffix_specified_ (false)
- {
- ::cli::argv_scanner s (start, argc, argv, erase);
- _parse (s, opt, arg);
- }
-
- options::
- options (int& argc,
- char** argv,
- int& end,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
- : type_map_ (),
- type_map_specified_ (false),
- xml_parser_ ("xerces"),
- xml_parser_specified_ (false),
- generate_validation_ (),
- suppress_validation_ (),
- generate_polymorphic_ (),
- generate_noop_impl_ (),
- generate_print_impl_ (),
- generate_test_driver_ (),
- force_overwrite_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_ (),
- root_element_specified_ (false),
- skel_type_suffix_ ("_pskel"),
- skel_type_suffix_specified_ (false),
- skel_file_suffix_ ("-pskel"),
- skel_file_suffix_specified_ (false),
- impl_type_suffix_ ("_pimpl"),
- impl_type_suffix_specified_ (false),
- impl_file_suffix_ ("-pimpl"),
- impl_file_suffix_specified_ (false)
- {
- ::cli::argv_scanner s (argc, argv, erase);
- _parse (s, opt, arg);
- end = s.end ();
- }
-
- options::
- options (int start,
- int& argc,
- char** argv,
- int& end,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
- : type_map_ (),
- type_map_specified_ (false),
- xml_parser_ ("xerces"),
- xml_parser_specified_ (false),
- generate_validation_ (),
- suppress_validation_ (),
- generate_polymorphic_ (),
- generate_noop_impl_ (),
- generate_print_impl_ (),
- generate_test_driver_ (),
- force_overwrite_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_ (),
- root_element_specified_ (false),
- skel_type_suffix_ ("_pskel"),
- skel_type_suffix_specified_ (false),
- skel_file_suffix_ ("-pskel"),
- skel_file_suffix_specified_ (false),
- impl_type_suffix_ ("_pimpl"),
- impl_type_suffix_specified_ (false),
- impl_file_suffix_ ("-pimpl"),
- impl_file_suffix_specified_ (false)
- {
- ::cli::argv_scanner s (start, argc, argv, erase);
- _parse (s, opt, arg);
- end = s.end ();
- }
-
- options::
- options (::cli::scanner& s,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
- : type_map_ (),
- type_map_specified_ (false),
- xml_parser_ ("xerces"),
- xml_parser_specified_ (false),
- generate_validation_ (),
- suppress_validation_ (),
- generate_polymorphic_ (),
- generate_noop_impl_ (),
- generate_print_impl_ (),
- generate_test_driver_ (),
- force_overwrite_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_ (),
- root_element_specified_ (false),
- skel_type_suffix_ ("_pskel"),
- skel_type_suffix_specified_ (false),
- skel_file_suffix_ ("-pskel"),
- skel_file_suffix_specified_ (false),
- impl_type_suffix_ ("_pimpl"),
- impl_type_suffix_specified_ (false),
- impl_file_suffix_ ("-pimpl"),
- impl_file_suffix_specified_ (false)
- {
- _parse (s, opt, arg);
- }
-
- void options::
- print_usage (::std::wostream& os)
- {
- os << "--type-map <mapfile> Read XML Schema to C++ type mapping information" << ::std::endl
- << " from <mapfile>." << ::std::endl;
-
- os << "--xml-parser <parser> Use <parser> as the underlying XML parser." << ::std::endl;
-
- os << "--generate-validation Generate validation code." << ::std::endl;
-
- os << "--suppress-validation Suppress the generation of validation code." << ::std::endl;
-
- os << "--generate-polymorphic Generate polymorphism-aware code." << ::std::endl;
-
- os << "--generate-noop-impl Generate a sample parser implementation that does" << ::std::endl
- << " nothing (no operation)." << ::std::endl;
-
- os << "--generate-print-impl Generate a sample parser implementation that" << ::std::endl
- << " prints the XML data to 'STDOUT'." << ::std::endl;
-
- os << "--generate-test-driver Generate a test driver for the sample parser" << ::std::endl
- << " implementation." << ::std::endl;
-
- os << "--force-overwrite Force overwriting of the existing implementation" << ::std::endl
- << " and test driver files." << ::std::endl;
-
- os << "--root-element-first Indicate that the first global element is the" << ::std::endl
- << " document root." << ::std::endl;
-
- os << "--root-element-last Indicate that the last global element is the" << ::std::endl
- << " document root." << ::std::endl;
-
- os << "--root-element <element> Indicate that <element> is the document root." << ::std::endl;
-
- os << "--skel-type-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
- << " '_pskel' to construct the names of the generated" << ::std::endl
- << " parser skeletons." << ::std::endl;
-
- os << "--skel-file-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
- << " '-pskel' to construct the names of the generated" << ::std::endl
- << " parser skeleton files." << ::std::endl;
-
- os << "--impl-type-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
- << " '_pimpl' to construct the names of the parser" << ::std::endl
- << " implementations for the built-in XML Schema types" << ::std::endl
- << " as well as sample parser implementations." << ::std::endl;
-
- os << "--impl-file-suffix <suffix> Use the provided <suffix> instead of the default" << ::std::endl
- << " '-pimpl' to construct the names of the generated" << ::std::endl
- << " sample parser implementation files." << ::std::endl;
- }
-
- typedef
- std::map<std::string, void (*) (options&, ::cli::scanner&)>
- _cli_options_map;
-
- static _cli_options_map _cli_options_map_;
-
- struct _cli_options_map_init
- {
- _cli_options_map_init ()
- {
- _cli_options_map_["--type-map"] =
- &::cli::thunk< options, NarrowStrings, &options::type_map_,
- &options::type_map_specified_ >;
- _cli_options_map_["--xml-parser"] =
- &::cli::thunk< options, NarrowString, &options::xml_parser_,
- &options::xml_parser_specified_ >;
- _cli_options_map_["--generate-validation"] =
- &::cli::thunk< options, bool, &options::generate_validation_ >;
- _cli_options_map_["--suppress-validation"] =
- &::cli::thunk< options, bool, &options::suppress_validation_ >;
- _cli_options_map_["--generate-polymorphic"] =
- &::cli::thunk< options, bool, &options::generate_polymorphic_ >;
- _cli_options_map_["--generate-noop-impl"] =
- &::cli::thunk< options, bool, &options::generate_noop_impl_ >;
- _cli_options_map_["--generate-print-impl"] =
- &::cli::thunk< options, bool, &options::generate_print_impl_ >;
- _cli_options_map_["--generate-test-driver"] =
- &::cli::thunk< options, bool, &options::generate_test_driver_ >;
- _cli_options_map_["--force-overwrite"] =
- &::cli::thunk< options, bool, &options::force_overwrite_ >;
- _cli_options_map_["--root-element-first"] =
- &::cli::thunk< options, bool, &options::root_element_first_ >;
- _cli_options_map_["--root-element-last"] =
- &::cli::thunk< options, bool, &options::root_element_last_ >;
- _cli_options_map_["--root-element"] =
- &::cli::thunk< options, NarrowString, &options::root_element_,
- &options::root_element_specified_ >;
- _cli_options_map_["--skel-type-suffix"] =
- &::cli::thunk< options, NarrowString, &options::skel_type_suffix_,
- &options::skel_type_suffix_specified_ >;
- _cli_options_map_["--skel-file-suffix"] =
- &::cli::thunk< options, NarrowString, &options::skel_file_suffix_,
- &options::skel_file_suffix_specified_ >;
- _cli_options_map_["--impl-type-suffix"] =
- &::cli::thunk< options, NarrowString, &options::impl_type_suffix_,
- &options::impl_type_suffix_specified_ >;
- _cli_options_map_["--impl-file-suffix"] =
- &::cli::thunk< options, NarrowString, &options::impl_file_suffix_,
- &options::impl_file_suffix_specified_ >;
- }
- };
-
- static _cli_options_map_init _cli_options_map_init_;
-
- bool options::
- _parse (const char* o, ::cli::scanner& s)
- {
- _cli_options_map::const_iterator i (_cli_options_map_.find (o));
-
- if (i != _cli_options_map_.end ())
- {
- (*(i->second)) (*this, s);
- return true;
- }
-
- // options base
- //
- if (::CXX::options::_parse (o, s))
- return true;
-
- return false;
- }
-
- void options::
- _parse (::cli::scanner& s,
- ::cli::unknown_mode opt_mode,
- ::cli::unknown_mode arg_mode)
- {
- bool opt = true;
-
- while (s.more ())
- {
- const char* o = s.peek ();
-
- if (std::strcmp (o, "--") == 0)
- {
- s.skip ();
- opt = false;
- continue;
- }
-
- if (opt && _parse (o, s));
- else if (opt && std::strncmp (o, "-", 1) == 0 && o[1] != '\0')
- {
- switch (opt_mode)
- {
- case ::cli::unknown_mode::skip:
- {
- s.skip ();
- continue;
- }
- case ::cli::unknown_mode::stop:
- {
- break;
- }
- case ::cli::unknown_mode::fail:
- {
- throw ::cli::unknown_option (o);
- }
- }
-
- break;
- }
- else
- {
- switch (arg_mode)
- {
- case ::cli::unknown_mode::skip:
- {
- s.skip ();
- continue;
- }
- case ::cli::unknown_mode::stop:
- {
- break;
- }
- case ::cli::unknown_mode::fail:
- {
- throw ::cli::unknown_argument (o);
- }
- }
-
- break;
- }
- }
- }
- }
-}
-
-// Begin epilogue.
-//
-//
-// End epilogue.
-
diff --git a/xsd/xsd/cxx/parser/options.hxx b/xsd/xsd/cxx/parser/options.hxx
deleted file mode 100644
index 976f93b..0000000
--- a/xsd/xsd/cxx/parser/options.hxx
+++ /dev/null
@@ -1,183 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-#ifndef CXX_PARSER_OPTIONS_HXX
-#define CXX_PARSER_OPTIONS_HXX
-
-// Begin prologue.
-//
-//
-// End prologue.
-
-#include <cstddef>
-
-#include <types.hxx>
-
-#include <cxx/options.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- class options: public ::CXX::options
- {
- public:
- options (int& argc,
- char** argv,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- options (int start,
- int& argc,
- char** argv,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- options (int& argc,
- char** argv,
- int& end,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- options (int start,
- int& argc,
- char** argv,
- int& end,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- options (::cli::scanner&,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- options ();
-
- // Option accessors.
- //
- const NarrowStrings&
- type_map () const;
-
- bool
- type_map_specified () const;
-
- const NarrowString&
- xml_parser () const;
-
- bool
- xml_parser_specified () const;
-
- const bool&
- generate_validation () const;
-
- const bool&
- suppress_validation () const;
-
- const bool&
- generate_polymorphic () const;
-
- const bool&
- generate_noop_impl () const;
-
- const bool&
- generate_print_impl () const;
-
- const bool&
- generate_test_driver () const;
-
- const bool&
- force_overwrite () const;
-
- const bool&
- root_element_first () const;
-
- const bool&
- root_element_last () const;
-
- const NarrowString&
- root_element () const;
-
- bool
- root_element_specified () const;
-
- const NarrowString&
- skel_type_suffix () const;
-
- bool
- skel_type_suffix_specified () const;
-
- const NarrowString&
- skel_file_suffix () const;
-
- bool
- skel_file_suffix_specified () const;
-
- const NarrowString&
- impl_type_suffix () const;
-
- bool
- impl_type_suffix_specified () const;
-
- const NarrowString&
- impl_file_suffix () const;
-
- bool
- impl_file_suffix_specified () const;
-
- // Print usage information.
- //
- static void
- print_usage (::std::wostream&);
-
- // Implementation details.
- //
- protected:
- bool
- _parse (const char*, ::cli::scanner&);
-
- private:
- void
- _parse (::cli::scanner&,
- ::cli::unknown_mode option,
- ::cli::unknown_mode argument);
-
- public:
- NarrowStrings type_map_;
- bool type_map_specified_;
- NarrowString xml_parser_;
- bool xml_parser_specified_;
- bool generate_validation_;
- bool suppress_validation_;
- bool generate_polymorphic_;
- bool generate_noop_impl_;
- bool generate_print_impl_;
- bool generate_test_driver_;
- bool force_overwrite_;
- bool root_element_first_;
- bool root_element_last_;
- NarrowString root_element_;
- bool root_element_specified_;
- NarrowString skel_type_suffix_;
- bool skel_type_suffix_specified_;
- NarrowString skel_file_suffix_;
- bool skel_file_suffix_specified_;
- NarrowString impl_type_suffix_;
- bool impl_type_suffix_specified_;
- NarrowString impl_file_suffix_;
- bool impl_file_suffix_specified_;
- };
- }
-}
-
-#include <cxx/parser/options.ixx>
-
-// Begin epilogue.
-//
-//
-// End epilogue.
-
-#endif // CXX_PARSER_OPTIONS_HXX
diff --git a/xsd/xsd/cxx/parser/options.ixx b/xsd/xsd/cxx/parser/options.ixx
deleted file mode 100644
index 22ab11d..0000000
--- a/xsd/xsd/cxx/parser/options.ixx
+++ /dev/null
@@ -1,160 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-// Begin prologue.
-//
-//
-// End prologue.
-
-namespace CXX
-{
- namespace Parser
- {
- // options
- //
-
- inline const NarrowStrings& options::
- type_map () const
- {
- return this->type_map_;
- }
-
- inline bool options::
- type_map_specified () const
- {
- return this->type_map_specified_;
- }
-
- inline const NarrowString& options::
- xml_parser () const
- {
- return this->xml_parser_;
- }
-
- inline bool options::
- xml_parser_specified () const
- {
- return this->xml_parser_specified_;
- }
-
- inline const bool& options::
- generate_validation () const
- {
- return this->generate_validation_;
- }
-
- inline const bool& options::
- suppress_validation () const
- {
- return this->suppress_validation_;
- }
-
- inline const bool& options::
- generate_polymorphic () const
- {
- return this->generate_polymorphic_;
- }
-
- inline const bool& options::
- generate_noop_impl () const
- {
- return this->generate_noop_impl_;
- }
-
- inline const bool& options::
- generate_print_impl () const
- {
- return this->generate_print_impl_;
- }
-
- inline const bool& options::
- generate_test_driver () const
- {
- return this->generate_test_driver_;
- }
-
- inline const bool& options::
- force_overwrite () const
- {
- return this->force_overwrite_;
- }
-
- inline const bool& options::
- root_element_first () const
- {
- return this->root_element_first_;
- }
-
- inline const bool& options::
- root_element_last () const
- {
- return this->root_element_last_;
- }
-
- inline const NarrowString& options::
- root_element () const
- {
- return this->root_element_;
- }
-
- inline bool options::
- root_element_specified () const
- {
- return this->root_element_specified_;
- }
-
- inline const NarrowString& options::
- skel_type_suffix () const
- {
- return this->skel_type_suffix_;
- }
-
- inline bool options::
- skel_type_suffix_specified () const
- {
- return this->skel_type_suffix_specified_;
- }
-
- inline const NarrowString& options::
- skel_file_suffix () const
- {
- return this->skel_file_suffix_;
- }
-
- inline bool options::
- skel_file_suffix_specified () const
- {
- return this->skel_file_suffix_specified_;
- }
-
- inline const NarrowString& options::
- impl_type_suffix () const
- {
- return this->impl_type_suffix_;
- }
-
- inline bool options::
- impl_type_suffix_specified () const
- {
- return this->impl_type_suffix_specified_;
- }
-
- inline const NarrowString& options::
- impl_file_suffix () const
- {
- return this->impl_file_suffix_;
- }
-
- inline bool options::
- impl_file_suffix_specified () const
- {
- return this->impl_file_suffix_specified_;
- }
- }
-}
-
-// Begin epilogue.
-//
-//
-// End epilogue.
diff --git a/xsd/xsd/cxx/parser/parser-forward.cxx b/xsd/xsd/cxx/parser/parser-forward.cxx
deleted file mode 100644
index faf427a..0000000
--- a/xsd/xsd/cxx/parser/parser-forward.cxx
+++ /dev/null
@@ -1,111 +0,0 @@
-// file : xsd/cxx/parser/parser-forward.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/parser/parser-forward.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- os << "class " << ename (e) << ";";
- }
- };
-
- //
- //
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- os << "class " << ename (l) << ";";
- }
- };
-
- //
- //
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- os << "class " << ename (u) << ";";
- }
- };
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- os << "class " << ename (c) << ";";
- }
- };
- }
-
- void
- generate_parser_forward (Context& ctx)
- {
- ctx.os << "// Forward declarations" << endl
- << "//" << endl;
-
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names schema_names;
-
- Namespace ns (ctx);
- Traversal::Names names;
-
- schema >> sources >> schema;
- schema >> schema_names >> ns >> names;
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- schema.dispatch (ctx.schema_root);
-
- ctx.os << endl;
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/parser-forward.hxx b/xsd/xsd/cxx/parser/parser-forward.hxx
deleted file mode 100644
index 53c7049..0000000
--- a/xsd/xsd/cxx/parser/parser-forward.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/parser/parser-forward.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_PARSER_FORWARD_HXX
-#define CXX_PARSER_PARSER_FORWARD_HXX
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- void
- generate_parser_forward (Context&);
- }
-}
-
-#endif // CXX_PARSER_PARSER_FORWARD_HXX
diff --git a/xsd/xsd/cxx/parser/parser-header.cxx b/xsd/xsd/cxx/parser/parser-header.cxx
deleted file mode 100644
index 800a4b9..0000000
--- a/xsd/xsd/cxx/parser/parser-header.cxx
+++ /dev/null
@@ -1,1441 +0,0 @@
-// file : xsd/cxx/parser/parser-header.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <set>
-
-#include <cxx/parser/parser-header.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- String const& name (ename (e));
- SemanticGraph::Type& base (e.inherits ().base ());
-
- os << "class " << type_exp << name << ": public virtual " <<
- fq_name (base)
- << "{"
- << "public:" << endl
- << "// Parser callbacks. Override them in your " <<
- "implementation." << endl
- << "//" << endl;
-
- os << "// virtual void" << endl
- << "// pre ();" << endl
- << endl;
-
- String const& ret (ret_type (e));
-
- bool same (ret == ret_type (base));
-
- os << "virtual " << ret << endl
- << post_name (e) << " ()" <<
- (same || ret == L"void" ? ";" : " = 0;");
-
- if (polymorphic)
- {
- os << endl
- << "public:" << endl
- << "static const " << char_type << "*" << endl
- << "_static_type ();"
- << endl
- << "virtual const " << char_type << "*" << endl
- << "_dynamic_type () const;";
- }
-
- os << "};";
- }
- };
-
- //
- //
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String const& name (ename (l));
- SemanticGraph::Type& t (l.argumented ().type ());
-
- String item (unclash (name, "item"));
-
- os << "class " << type_exp << name << ": public " << list_base
- << "{"
- << "public:" << endl
- << "// Parser callbacks. Override them in your " <<
- "implementation." << endl
- << "//" << endl;
-
- // pre
- //
- os << "// virtual void" << endl
- << "// pre ();" << endl
- << endl;
-
- // item
- //
- String const& arg (arg_type (t));
-
- os << "virtual void" << endl
- << item;
-
- if (arg == L"void")
- os << " ();";
- else
- os << " (" << arg << ");";
-
- os << endl;
-
- // post
- //
- String const& ret (ret_type (l));
-
- os << "virtual " << ret << endl
- << post_name (l) << " ()" << (ret == L"void" ? ";" : " = 0;")
- << endl;
-
- //
- //
- os << "// Parser construction API." << endl
- << "//" << endl;
-
- // item_parser
- //
- os << "void" << endl
- << unclash (name, "item_parser") << " (" << fq_name (t) << "&);"
- << endl;
-
- // parsers
- //
- os << "void" << endl
- << "parsers (" << fq_name (t) << "& /* item */);"
- << endl;
-
- // c-tor
- //
- os << "// Constructor." << endl
- << "//" << endl
- << name << " ();"
- << endl;
-
-
- if (polymorphic)
- {
- os << "public:" << endl
- << "static const " << char_type << "*" << endl
- << "_static_type ();"
- << endl
- << "virtual const " << char_type << "*" << endl
- << "_dynamic_type () const;"
- << endl;
- }
-
- //
- //
- os << "// Implementation." << endl
- << "//" << endl
- << "protected:" << endl;
-
- os << "virtual void" << endl
- << "_xsd_parse_item (const " << string_type << "&);"
- << endl;
-
- os << "protected:" << endl
- << fq_name (t) << "* _xsd_" << item << "_;"
- << "};";
- }
- };
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String const& name (ename (u));
-
- os << "class " << type_exp << name << ": public " << simple_base
- << "{"
- << "public:" << endl
- << "// Parser callbacks. Override them in your " <<
- "implementation." << endl
- << "//" << endl;
-
- os << "// virtual void" << endl
- << "// pre ();" << endl
- << "//" << endl
- << "// virtual void" << endl
- << "// _characters (const " << string_type << "&);" << endl
- << endl;
-
- String const& ret (ret_type (u));
-
- os << "virtual " << ret << endl
- << post_name (u) << " ()" << (ret == L"void" ? ";" : " = 0;");
-
- if (polymorphic)
- {
- os << endl
- << "public:" << endl
- << "static const " << char_type << "*" << endl
- << "_static_type ();"
- << endl
- << "virtual const " << char_type << "*" << endl
- << "_dynamic_type () const;";
- }
-
- os << "};";
- }
- };
-
-
- //
- //
- struct ParserCallback: Traversal::Member, Context
- {
- ParserCallback (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m)) return;
-
- String const& arg (arg_type (m.type ()));
-
- os << "virtual void" << endl
- << ename (m);
-
- if (arg == L"void")
- os << " ();";
- else
- os << " (" << arg << ");";
-
- os << endl;
- }
- };
-
-
- //
- //
- struct ParserModifier: Traversal::Member, Context
- {
- ParserModifier (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- os << "void" << endl
- << eparser (m) << " (" << fq_name (m.type ()) << "&);"
- << endl;
-
- if (polymorphic &&
- m.is_a<SemanticGraph::Element> () &&
- !anonymous (m.type ()))
- {
- os << "void" << endl
- << eparser (m) << " (const " << parser_map << "&);"
- << endl;
- }
- }
- };
-
- //
- //
- struct ParserMember: Traversal::Member, Context
- {
- ParserMember (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- String type (fq_name (m.type ()));
-
- os << type << "* " << emember (m) << ";";
-
- if (polymorphic &&
- m.is_a<SemanticGraph::Element> () &&
- !anonymous (m.type ()))
- {
- os << "const " << parser_map << "* " << emember_map (m) << ";"
- << endl;
- }
- }
- };
-
- //
- //
- struct Particle: Traversal::All,
- Traversal::Choice,
- Traversal::Sequence,
- Context
- {
- Particle (Context& c)
- : Context (c)
- {
- *this >> contains_particle_ >> *this;
- }
-
-
- virtual void
- traverse (SemanticGraph::All& a)
- {
- if (!a.context().count ("comp-number"))
- return;
-
- size_t state_count (a.context().get<size_t> ("state-count"));
-
- os << "void" << endl
- << "all_0 (unsigned long& state," << endl
- << "unsigned char* count," << endl
- << "const " << string_type << "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "* t," << endl
- << "bool start);"
- << endl
- << "unsigned char v_all_first_[" << state_count << "UL];"
- << "::xsd::cxx::parser::validating::all_stack v_all_count_;"
- << endl;
- }
-
- virtual void
- traverse (SemanticGraph::Choice& c)
- {
- if (!c.context().count ("comp-number"))
- return;
-
- size_t n (c.context ().get<size_t> ("comp-number"));
-
- os << "void" << endl
- << "choice_" << n << " (unsigned long& state," << endl
- << "unsigned long& count," << endl
- << "const " << string_type << "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "* t," << endl
- << "bool start);"
- << endl;
-
- Traversal::Choice::traverse (c);
- }
-
- virtual void
- traverse (SemanticGraph::Sequence& s)
- {
- if (!s.context().count ("comp-number"))
- return;
-
- size_t n (s.context ().get<size_t> ("comp-number"));
-
- os << "void" << endl
- << "sequence_" << n << " (unsigned long& state," << endl
- << "unsigned long& count," << endl
- << "const " << string_type << "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "* t," << endl
- << "bool start);"
- << endl;
-
- Traversal::Sequence::traverse (s);
- }
-
- private:
- Traversal::ContainsParticle contains_particle_;
- };
-
-
- //
- //
- struct AttributeValidationState: Traversal::Attribute, Context
- {
- AttributeValidationState (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- if (!a.optional_p ())
- {
- os << "bool " << ename (a) << ";";
- }
- }
- };
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c),
- parser_callback_ (c),
- parser_member_ (c),
- parser_modifier_ (c),
- attribute_validation_state_ (c)
- {
- names_parser_callback_ >> parser_callback_;
- names_parser_member_ >> parser_member_;
- names_parser_modifier_ >> parser_modifier_;
- names_attribute_validation_state_ >> attribute_validation_state_;
- }
-
- virtual void
- traverse (Type& c)
- {
- String const& name (ename (c));
-
- // In case of an inheritance-by-restriction, we don't need to
- // generate parser callbacks, etc. since they are the same as in
- // the base. We only need the parsing/validation code.
- //
- bool restriction (restriction_p (c));
-
- bool he (has<Traversal::Element> (c));
- bool ha (has<Traversal::Attribute> (c));
-
- bool hae (has_particle<Traversal::Any> (c));
- bool haa (has<Traversal::AnyAttribute> (c));
-
- bool hra (false); // Has required attribute.
- if (ha)
- {
- RequiredAttributeTest test (hra);
- Traversal::Names names_test (test);
- names (c, names_test);
- }
-
-
- //
- //
- os << "class " << type_exp << name << ": public ";
-
- if (c.inherits_p ())
- os << "virtual " << fq_name (c.inherits ().base ());
- else
- os << complex_base;
-
- os << "{"
- << "public:" << endl
- << "// Parser callbacks. Override them in your " <<
- "implementation." << endl
- << "//" << endl;
-
- os << "// virtual void" << endl
- << "// pre ();" << endl
- << endl;
-
-
- if (!restriction && (ha || he))
- {
- names (c, names_parser_callback_);
- }
-
- String const& ret (ret_type (c));
-
- bool same (c.inherits_p () &&
- ret == ret_type (c.inherits ().base ()));
-
- os << "virtual " << ret << endl
- << post_name (c) << " ()" <<
- (same || ret == L"void" ? ";" : " = 0;")
- << endl;
-
- //
- //
- if (!restriction && (he || ha))
- {
- os << "// Parser construction API." << endl
- << "//" << endl;
-
- names (c, names_parser_modifier_);
-
- os << "void" << endl
- << "parsers (";
-
- {
- ParserParamDecl decl (*this, false);
- decl.traverse (c);
- }
-
- os << ");"
- << endl;
- }
-
- // Default c-tor.
- //
- if ((!restriction && (he || ha)) ||
- (validation && (he || hae || hra)))
- {
- os << "// Constructor." << endl
- << "//" << endl
- << name << " ();"
- << endl;
- }
-
- if (polymorphic)
- {
- os << "public:" << endl
- << "static const " << char_type << "*" << endl
- << "_static_type ();"
- << endl
- << "virtual const " << char_type << "*" << endl
- << "_dynamic_type () const;"
- << endl;
- }
-
- // Implementation.
- //
- if (he || ha || (validation && (hae || haa)))
- {
- os << "// Implementation." << endl
- << "//" << endl
- << "protected:" << endl;
- }
-
- // element
- //
- if (he || (validation && hae))
- {
- // _start_element_impl
- //
- os << "virtual bool" << endl
- << "_start_element_impl (const " << string_type << "&," << endl
- << "const " << string_type << "&," << endl
- << "const " << string_type << "*);"
- << endl;
-
- // end_element
- //
- os << "virtual bool" << endl
- << "_end_element_impl (const " << string_type << "&," << endl
- << "const " << string_type << "&);"
- << endl;
- }
-
- // attribute
- //
- if (validation)
- {
- if (ha)
- {
- os << "virtual bool" << endl
- << "_attribute_impl_phase_one (const " << string_type <<
- "&," << endl
- << "const " << string_type << "&," << endl
- << "const " << string_type << "&);" << endl
- << endl;
- }
-
- if (haa)
- {
- os << "virtual bool" << endl
- << "_attribute_impl_phase_two (const " << string_type <<
- "&," << endl
- << "const " << string_type << "&," << endl
- << "const " << string_type << "&);"
- << endl;
- }
- }
- else
- {
- if (ha)
- {
- os << "virtual bool" << endl
- << "_attribute_impl (const " << string_type << "&," << endl
- << "const " << string_type << "&," << endl
- << "const " << string_type << "&);"
- << endl;
- }
- }
-
- // characters
- //
- if (validation && c.mixed_p ())
- {
- os << "virtual bool" << endl
- << "_characters_impl (const " << string_type << "&);"
- << endl;
- }
-
- if (!restriction && (he || ha))
- {
- os << "protected:" << endl;
- names (c, names_parser_member_);
- os << endl;
- }
-
- if (validation && (he || hae))
- {
- size_t depth (c.context ().get<size_t> ("depth"));
-
- os << "protected:" << endl;
-
- os << "struct v_state_descr_"
- << "{"
- << "void (" << fq_name (c) << "::*func) (" << endl
- << "unsigned long&," << endl
- << "unsigned long&," << endl
- << "const " << string_type << "&," << endl
- << "const " << string_type << "&," << endl
- << "const " << string_type << "*," << endl
- << "bool);"
- << "unsigned long state;"
- << "unsigned long count;"
- << "};";
-
- // Allocate one extra slot for the special state.
- //
- os << "struct v_state_"
- << "{"
- << "v_state_descr_ data[" << depth + 1 << "UL];"
- << "unsigned long size;"
- << "};";
-
- os << "v_state_ v_state_first_;"
- << "::xsd::cxx::parser::pod_stack v_state_stack_;"
- << endl;
-
- os << "virtual void" << endl
- << "_pre_e_validate ();"
- << endl;
-
- os << "virtual void" << endl
- << "_post_e_validate ();"
- << endl;
-
- Particle t (*this);
- t.dispatch (c.contains_compositor ().compositor ());
- }
-
- if (validation && hra)
- {
- os << "protected:" << endl;
-
- os << "struct v_state_attr_"
- << "{";
-
- names (c, names_attribute_validation_state_);
-
- os << "};";
-
- os << "v_state_attr_ v_state_attr_first_;"
- << "::xsd::cxx::parser::pod_stack v_state_attr_stack_;"
- << endl;
-
- os << "virtual void" << endl
- << "_pre_a_validate ();"
- << endl;
-
- os << "virtual void" << endl
- << "_post_a_validate ();"
- << endl;
- }
-
- os << "};";
- }
-
- private:
- //
- //
- ParserCallback parser_callback_;
- Traversal::Names names_parser_callback_;
-
- //
- //
- ParserMember parser_member_;
- Traversal::Names names_parser_member_;
-
- //
- //
- ParserModifier parser_modifier_;
- Traversal::Names names_parser_modifier_;
-
- //
- //
- AttributeValidationState attribute_validation_state_;
- Traversal::Names names_attribute_validation_state_;
- };
-
- struct FundType : Context,
-
- Traversal::AnyType,
- Traversal::AnySimpleType,
-
- Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal,
-
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Language,
-
- Traversal::Fundamental::QName,
-
- Traversal::Fundamental::Id,
- Traversal::Fundamental::IdRef,
- Traversal::Fundamental::IdRefs,
-
- Traversal::Fundamental::AnyURI,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary,
-
- Traversal::Fundamental::Date,
- Traversal::Fundamental::DateTime,
- Traversal::Fundamental::Duration,
- Traversal::Fundamental::Day,
- Traversal::Fundamental::Month,
- Traversal::Fundamental::MonthDay,
- Traversal::Fundamental::Year,
- Traversal::Fundamental::YearMonth,
- Traversal::Fundamental::Time,
-
- Traversal::Fundamental::Entity,
- Traversal::Fundamental::Entities
- {
- FundType (Context& c)
- : Context (c), xs_ns_ (xs_ns_name ())
- {
- impl_ns_ = "::xsd::cxx::parser::";
- impl_ns_ += (validation ? L"validating" : L"non_validating");
-
- if (char_type == L"char")
- string_type_ = L"::std::string";
- else if (char_type == L"wchar_t")
- string_type_ = L"::std::wstring";
- else
- string_type_ = L"::std::basic_string< " + char_type + L" >";
- }
-
- // anyType & anySimpleType.
- //
- virtual void
- traverse (SemanticGraph::AnyType& t)
- {
- gen_typedef (t, "void", "any_type_pskel", "any_type_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::AnySimpleType& t)
- {
- gen_typedef (t, "void",
- "any_simple_type_pskel", "any_simple_type_pimpl");
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean& t)
- {
- gen_typedef (t, "bool", "boolean_pskel", "boolean_pimpl");
- }
-
- // Integral types.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte& t)
- {
- gen_typedef (t, "signed char", "byte_pskel", "byte_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte& t)
- {
- gen_typedef (t, "unsigned char",
- "unsigned_byte_pskel", "unsigned_byte_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short& t)
- {
- gen_typedef (t, "short", "short_pskel", "short_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort& t)
- {
- gen_typedef (t, "unsigned short",
- "unsigned_short_pskel", "unsigned_short_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int& t)
- {
- gen_typedef (t, "int", "int_pskel", "int_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt& t)
- {
- gen_typedef (t, "unsigned int",
- "unsigned_int_pskel", "unsigned_int_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long& t)
- {
- gen_typedef (t, "long long", "long_pskel", "long_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong& t)
- {
- gen_typedef (t, "unsigned long long",
- "unsigned_long_pskel", "unsigned_long_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer& t)
- {
- gen_typedef (t, "long long", "integer_pskel", "integer_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger& t)
- {
- gen_typedef (t, "long long",
- "negative_integer_pskel", "negative_integer_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
- {
- gen_typedef (t, "long long",
- "non_positive_integer_pskel",
- "non_positive_integer_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger& t)
- {
- gen_typedef (t, "unsigned long long",
- "positive_integer_pskel", "positive_integer_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
- {
- gen_typedef (t, "unsigned long long",
- "non_negative_integer_pskel",
- "non_negative_integer_pimpl");
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- gen_typedef (t, "float", "float_pskel", "float_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- gen_typedef (t, "double", "double_pskel", "double_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal& t)
- {
- gen_typedef (t, "double", "decimal_pskel", "decimal_pimpl");
- }
-
- // Strings.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::String& t)
- {
- gen_typedef (t, string_type_, "string_pskel", "string_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString& t)
- {
- gen_typedef (t, string_type_,
- "normalized_string_pskel", "normalized_string_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token& t)
- {
- gen_typedef (t, string_type_, "token_pskel", "token_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken& t)
- {
- nmtoken_ = gen_typedef (t, string_type_,
- "nmtoken_pskel", "nmtoken_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens& t)
- {
- // NMTOKENS uses NMTOKEN implementation to parse individual items.
- // As a result, we don't generate NMTOKENS if we didn't generate
- // NMTOKEN. Here we assume NMTOKEN is handled before NMTOKENS.
- //
- if(nmtoken_)
- gen_typedef (t, xs_ns_ + L"::string_sequence",
- "nmtokens_pskel", "nmtokens_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name& t)
- {
- gen_typedef (t, string_type_, "name_pskel", "name_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName& t)
- {
- gen_typedef (t, string_type_, "ncname_pskel", "ncname_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Language& t)
- {
- gen_typedef (t, string_type_, "language_pskel", "language_pimpl");
- }
-
- // Qualified name.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::QName& t)
- {
- gen_typedef (t, xs_ns_ + L"::qname", "qname_pskel", "qname_pimpl");
- }
-
- // ID/IDREF.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Id& t)
- {
- gen_typedef (t, string_type_, "id_pskel", "id_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRef& t)
- {
- idref_ = gen_typedef (t, string_type_, "idref_pskel", "idref_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs& t)
- {
- // IDREFS uses IDREF implementation to parse individual items.
- // As a result, we don't generate IDREFS if we didn't generate
- // IDREF. Here we assume IDREF is handled before IDREFS.
- //
- if (idref_)
- gen_typedef (t, xs_ns_ + L"::string_sequence",
- "idrefs_pskel", "idrefs_pimpl");
- }
-
- // URI.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::AnyURI& t)
- {
- gen_typedef (t, string_type_, "uri_pskel", "uri_pimpl");
- }
-
- // Binary.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary& t)
- {
- String buffer (auto_ptr + L"< " + xs_ns_ + L"::buffer >");
- gen_typedef (t, buffer,
- "base64_binary_pskel", "base64_binary_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary& t)
- {
- String buffer (auto_ptr + L"< " + xs_ns_ + L"::buffer >");
- gen_typedef (t, buffer, "hex_binary_pskel", "hex_binary_pimpl");
- }
-
-
- // Date/time.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Date& t)
- {
- gen_typedef (t, xs_ns_ + L"::date", "date_pskel", "date_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::DateTime& t)
- {
- gen_typedef (t, xs_ns_ + L"::date_time",
- "date_time_pskel", "date_time_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Duration& t)
- {
- gen_typedef (t, xs_ns_ + L"::duration",
- "duration_pskel", "duration_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Day& t)
- {
- gen_typedef (t, xs_ns_ + L"::gday", "gday_pskel", "gday_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Month& t)
- {
- gen_typedef (t, xs_ns_ + L"::gmonth",
- "gmonth_pskel", "gmonth_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::MonthDay& t)
- {
- gen_typedef (t, xs_ns_ + L"::gmonth_day",
- "gmonth_day_pskel", "gmonth_day_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Year& t)
- {
- gen_typedef (t, xs_ns_ + L"::gyear", "gyear_pskel", "gyear_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::YearMonth& t)
- {
- gen_typedef (t, xs_ns_ + L"::gyear_month",
- "gyear_month_pskel", "gyear_month_pimpl");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Time& t)
- {
- gen_typedef (t, xs_ns_ + L"::time", "time_pskel", "time_pimpl");
- }
-
- // Entity.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Entity&)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Entities&)
- {
- }
-
- private:
- bool
- gen_typedef (SemanticGraph::Type& t,
- String const& type,
- String const& pskel,
- String const& pimpl)
- {
- if (ret_type (t) == type)
- {
- os << "typedef " << impl_ns_ << "::" << pskel << "< " <<
- char_type << " > " << ename (t) << ";";
-
- String const& pimpl_name (t.context ().get<String> ("impl"));
-
- os << "typedef " << impl_ns_ << "::" << pimpl << "< " <<
- char_type << " > " << pimpl_name << ";"
- << endl;
-
- return true;
- }
-
- return false;
- }
-
- String xs_ns_;
- String impl_ns_;
- String string_type_;
-
- bool idref_;
- bool nmtoken_;
- };
-
- struct FundNamespace: Namespace, Context
- {
- FundNamespace (Context& c)
- : Namespace (c), Context (c)
- {
- }
-
- void
- traverse (Type& ns)
- {
- pre (ns);
-
- String impl ("::xsd::cxx::parser::");
- impl += (validation ? L"validating" : L"non_validating");
-
- String const c (char_type);
-
- os << "// Built-in XML Schema types mapping." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::parser::string_sequence< " << c <<
- " > string_sequence;"
- << "typedef ::xsd::cxx::parser::qname< " << c << " > qname;"
- << "typedef ::xsd::cxx::parser::buffer buffer;"
- << "typedef ::xsd::cxx::parser::time_zone time_zone;"
- << "typedef ::xsd::cxx::parser::gday gday;"
- << "typedef ::xsd::cxx::parser::gmonth gmonth;"
- << "typedef ::xsd::cxx::parser::gyear gyear;"
- << "typedef ::xsd::cxx::parser::gmonth_day gmonth_day;"
- << "typedef ::xsd::cxx::parser::gyear_month gyear_month;"
- << "typedef ::xsd::cxx::parser::date date;"
- << "typedef ::xsd::cxx::parser::time time;"
- << "typedef ::xsd::cxx::parser::date_time date_time;"
- << "typedef ::xsd::cxx::parser::duration duration;"
- << endl;
-
- os << "// Base parser skeletons." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::parser::parser_base< " << c <<
- " > parser_base;"
- << "typedef " << impl << "::empty_content< " << c <<
- " > empty_content;"
- << "typedef " << impl << "::simple_content< " << c <<
- " > simple_content;"
- << "typedef " << impl << "::complex_content< " << c <<
- " > complex_content;"
- << "typedef " << impl << "::list_base< " << c << " > list_base;"
- << endl;
-
- if (polymorphic)
- {
- os << "// Parser map interface and default implementation." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::parser::parser_map< " << c <<
- " > parser_map;"
- << "typedef ::xsd::cxx::parser::parser_map_impl< " << c <<
- " > parser_map_impl;"
- << endl;
- }
-
- os << "// Parser skeletons and implementations for the XML Schema" << endl
- << "// built-in types." << endl
- << "//" << endl;
-
- names (ns);
-
- os << "// Exceptions. See libxsd/xsd/cxx/parser/exceptions.hxx " <<
- "for details." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::parser::exception< " <<
- char_type << " > exception;"
- << endl
- << "// Parsing diagnostics." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::parser::severity severity;"
- << "typedef ::xsd::cxx::parser::error< " << c << " > error;"
- << "typedef ::xsd::cxx::parser::diagnostics< " << c <<
- " > diagnostics;"
- << "typedef ::xsd::cxx::parser::parsing< " << c << " > parsing;"
- << endl;
-
- os << "// Error handler. See " <<
- "libxsd/xsd/cxx/xml/error-handler.hxx for details." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::xml::error_handler< " << c <<
- " > error_handler;"
- << endl;
-
- os << "// Read-only string." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::ro_string< " << c << " > ro_string;"
- << endl;
-
- if (xml_parser == L"xerces")
- {
- os << "// Parsing flags. See " <<
- "libxsd/xsd/cxx/parser/xerces/elements.hxx" << endl
- << "// for details." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::parser::xerces::flags flags;"
- << endl;
-
- os << "// Parsing properties. See " <<
- "libxsd/xsd/cxx/parser/xerces/elements.hxx" << endl
- << "// for details." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::parser::xerces::properties< " << c <<
- " > properties;"
- << endl;
-
- os << "// Document type. See " <<
- "libxsd/xsd/cxx/parser/xerces/elements.hxx" << endl
- << "// for details." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::parser::xerces::document< " << c <<
- " > document;"
- << endl;
-
- }
- else if (xml_parser == L"expat")
- {
- os << "// Document type. See " <<
- "libxsd/xsd/cxx/parser/expat/elements.hxx" << endl
- << "// for details." << endl
- << "//" << endl
- << "typedef ::xsd::cxx::parser::expat::document< " << c <<
- " > document;"
- << endl;
- }
-
- post (ns);
- }
- };
- }
-
- void
- generate_parser_header (Context& ctx, bool generate_xml_schema)
- {
- String c (ctx.char_type);
-
- //
- //
- if (c == L"char")
- {
- ctx.os << "#ifndef XSD_USE_CHAR" << endl
- << "#define XSD_USE_CHAR" << endl
- << "#endif" << endl
- << endl;
-
- ctx.os << "#ifndef XSD_CXX_PARSER_USE_CHAR" << endl
- << "#define XSD_CXX_PARSER_USE_CHAR" << endl
- << "#endif" << endl
- << endl;
- }
- else if (c == L"wchar_t")
- {
- ctx.os << "#ifndef XSD_USE_WCHAR" << endl
- << "#define XSD_USE_WCHAR" << endl
- << "#endif" << endl
- << endl;
-
- ctx.os << "#ifndef XSD_CXX_PARSER_USE_WCHAR" << endl
- << "#define XSD_CXX_PARSER_USE_WCHAR" << endl
- << "#endif" << endl
- << endl;
- }
-
- //
- //
- NarrowString extern_xml_schema;
-
- if (!generate_xml_schema)
- extern_xml_schema = ctx.options.extern_xml_schema ();
-
- if (extern_xml_schema)
- {
- String name (ctx.hxx_expr->replace (extern_xml_schema));
-
- ctx.os << "#include " << ctx.process_include_path (name) << endl
- << endl;
-
- // Generate includes that came from the type map.
- //
- if (ctx.schema_root.context ().count ("includes"))
- {
- typedef set<String> Includes;
-
- Includes const& is (
- ctx.schema_root.context ().get<Includes> ("includes"));
-
- for (Includes::const_reverse_iterator i (is.rbegin ());
- i != is.rend (); ++i)
- {
- ctx.os << "#include " << *i << endl;
- }
-
- ctx.os << endl;
- }
- }
- else
- {
- if (ctx.char_type == L"char" &&
- ctx.xml_parser == L"xerces" &&
- ctx.char_encoding != L"custom")
- {
- ctx.os << "#include <xsd/cxx/xml/char-" << ctx.char_encoding << ".hxx>" << endl;
- }
-
- ctx.os << "#include <xsd/cxx/xml/error-handler.hxx>" << endl
- << "#include <xsd/cxx/parser/exceptions.hxx>" << endl
- << "#include <xsd/cxx/parser/elements.hxx>" << endl
- << "#include <xsd/cxx/parser/xml-schema.hxx>" << endl;
-
- if (ctx.polymorphic)
- ctx.os << "#include <xsd/cxx/parser/map.hxx>" << endl;
-
- if (ctx.validation)
- ctx.os << "#include <xsd/cxx/parser/validating/parser.hxx>" << endl
- << "#include <xsd/cxx/parser/validating/exceptions.hxx>" << endl
- << "#include <xsd/cxx/parser/validating/xml-schema-pskel.hxx>" << endl
- << "#include <xsd/cxx/parser/validating/xml-schema-pimpl.hxx>" << endl;
- else
- ctx.os << "#include <xsd/cxx/parser/non-validating/parser.hxx>" << endl
- << "#include <xsd/cxx/parser/non-validating/xml-schema-pskel.hxx>" << endl
- << "#include <xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx>" << endl;
-
- ctx.os << "#include <xsd/cxx/parser/" << ctx.xml_parser <<
- "/elements.hxx>" << endl
- << endl;
-
- // Generate includes that came from the type map.
- //
- if (ctx.schema_root.context ().count ("includes"))
- {
- typedef set<String> Includes;
-
- Includes const& is (
- ctx.schema_root.context ().get<Includes> ("includes"));
-
- for (Includes::const_reverse_iterator i (is.rbegin ());
- i != is.rend (); ++i)
- {
- ctx.os << "#include " << *i << endl;
- }
-
- ctx.os << endl;
- }
-
- // Generate fundamental types.
- //
- if (generate_xml_schema)
- {
- Traversal::Schema schema;
- Traversal::Names names;
- FundNamespace ns (ctx);
-
- schema >> names >> ns;
-
- Traversal::Names ns_names;
- FundType type (ctx);
-
- ns >> ns_names >> type;
-
- schema.dispatch (ctx.schema_root);
- }
- else
- {
- Traversal::Schema schema, xsd;
- Traversal::Implies implies;
- Traversal::Names names;
- FundNamespace ns (ctx);
-
- schema >> implies >> xsd >> names >> ns;
-
- Traversal::Names ns_names;
- FundType type (ctx);
-
- ns >> ns_names >> type;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-
- // Generate user type mapping.
- //
- if (!generate_xml_schema)
- {
- Traversal::Schema schema;
-
- Sources sources;
- Includes includes (ctx, Includes::header);
- Traversal::Names schema_names;
-
- Namespace ns (ctx);
- Traversal::Names names;
-
- schema >> includes;
- schema >> sources >> schema;
- schema >> schema_names >> ns >> names;
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- schema.dispatch (ctx.schema_root);
- }
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/parser-header.hxx b/xsd/xsd/cxx/parser/parser-header.hxx
deleted file mode 100644
index 467dcb5..0000000
--- a/xsd/xsd/cxx/parser/parser-header.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/parser/parser-header.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_PARSER_HEADER_HXX
-#define CXX_PARSER_PARSER_HEADER_HXX
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- void
- generate_parser_header (Context&, bool generate_xml_schema);
- }
-}
-
-#endif // CXX_PARSER_PARSER_HEADER_HXX
diff --git a/xsd/xsd/cxx/parser/parser-inline.cxx b/xsd/xsd/cxx/parser/parser-inline.cxx
deleted file mode 100644
index 87ba92c..0000000
--- a/xsd/xsd/cxx/parser/parser-inline.cxx
+++ /dev/null
@@ -1,400 +0,0 @@
-// file : xsd/cxx/parser/parser-inline.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/parser/parser-inline.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- //
- //
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String const& name (ename (l));
- SemanticGraph::Type& t (l.argumented ().type ());
-
- String item (unclash (name, "item"));
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- // item_parser
- //
- os << inl
- << "void " << name << "::" << endl
- << unclash (name, "item_parser") << " (" <<
- fq_name (t) << "& " << item << ")"
- << "{"
- << "this->_xsd_" << item << "_ = &" << item << ";"
- << "}";
-
- // parsers
- //
- os << inl
- << "void " << name << "::" << endl
- << "parsers (" << fq_name (t) << "& " << item << ")"
- << "{"
- << "this->_xsd_" << item << "_ = &" << item << ";"
- << "}";
-
- // c-tor
- //
- os << inl
- << name << "::" << endl
- << name << " ()" << endl
- << ": _xsd_" << item << "_ (0)"
- << "{"
- << "}";
- }
- };
-
-
- //
- //
- struct ParserModifier: Traversal::Member, Context
- {
- ParserModifier (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- String const& scope (ename (m.scope ()));
- String const& parser (eparser (m));
-
- bool poly (polymorphic &&
- m.is_a<SemanticGraph::Element> () &&
- !anonymous (m.type ()));
-
- os << inl
- << "void " << scope << "::" << endl
- << parser << " (" << fq_name (m.type ()) << "& p)"
- << "{"
- << "this->" << emember (m) << " = &p;"
- << "}";
-
- if (poly)
- {
- os << inl
- << "void " << scope << "::" << endl
- << parser << " (const " << parser_map << "& m)"
- << "{"
- << "this->" << emember_map (m) << " = &m;"
- << "}";
- }
- }
- };
-
-
- //
- //
- struct ParserMemberSet: Traversal::Member, Context
- {
- ParserMemberSet (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m)) return;
-
- String const& name (ename (m));
-
- os << "this->" << emember (m) << " = &" << name << ";";
- }
- };
-
-
- //
- //
- struct ParserMemberInit: Traversal::Member, Context
- {
- ParserMemberInit (Context& c)
- : Context (c), first_ (true)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m)) return;
-
- if (first_)
- first_ = false;
- else
- os << "," << endl << " ";
-
- os << emember (m) << " (0)";
-
- if (polymorphic &&
- m.is_a<SemanticGraph::Element> () &&
- !anonymous (m.type ()))
- {
- os << "," << endl
- << " " << emember_map (m) << " (0)";
- }
- }
-
- bool
- comma () const
- {
- return !first_;
- }
-
- private:
- bool first_;
- };
-
- struct ParserBaseSet: Traversal::Complex,
- Traversal::List,
- Context
- {
- ParserBaseSet (Context& c)
- : Context (c), member_ (c)
- {
- inherits_ >> *this;
- names_ >> member_;
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- inherits (c, inherits_);
-
- if (!restriction_p (c))
- names (c, names_);
- }
-
- virtual void
- traverse (SemanticGraph::List& l)
- {
- String const& name (ename (l));
- String item (unclash (name, "item"));
-
- os << "this->_xsd_" << item << "_ = &" << name << "_item;";
- }
-
- private:
- Traversal::Inherits inherits_;
-
- ParserMemberSet member_;
- Traversal::Names names_;
- };
-
- struct Particle: Traversal::All, Context
- {
- Particle (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::All& a)
- {
- if (!a.context().count ("comp-number"))
- return;
-
- size_t state_count (a.context().get<size_t> ("state-count"));
-
- os << "," << endl
- << " v_all_count_ (" << state_count << "UL, v_all_first_)";
- }
- };
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c),
- parser_modifier_ (c),
- parser_base_set_ (c),
- parser_member_set_ (c),
- particle_ (c)
- {
- names_parser_modifier_ >> parser_modifier_;
- inherits_parser_base_set_ >> parser_base_set_;
- names_parser_member_set_ >> parser_member_set_;
- }
-
- virtual void
- traverse (Type& c)
- {
- bool he (has<Traversal::Element> (c));
- bool ha (has<Traversal::Attribute> (c));
-
- bool hae (has_particle<Traversal::Any> (c));
-
- bool hra (false); // Has required attribute.
- if (ha)
- {
- RequiredAttributeTest test (hra);
- Traversal::Names names_test (test);
- names (c, names_test);
- }
-
- bool restriction (restriction_p (c));
-
- if (!((!restriction && (he || ha)) ||
- (validation && (he || hae || hra))))
- return;
-
- String const& name (ename (c));
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- if (!restriction && (he || ha))
- {
- // <name>_parser ()
- //
- names (c, names_parser_modifier_);
-
-
- // parsers ()
- //
-
- os << inl
- << "void " << name << "::" << endl
- << "parsers (";
-
- {
- ParserParamDecl decl (*this, true);
- decl.traverse (c);
- }
-
- os << ")"
- << "{";
-
- inherits (c, inherits_parser_base_set_);
- names (c, names_parser_member_set_);
-
- os << "}";
- }
-
- // Default c-tor.
- //
- os << inl
- << name << "::" << endl
- << name << " ()" << endl
- << ": ";
-
- bool comma (false);
-
- if (!restriction && (he || ha))
- {
- ParserMemberInit member_init (*this);
- Traversal::Names names_member_init (member_init);
-
- names (c, names_member_init);
-
- comma = member_init.comma ();
- }
-
- if (validation && (he || hae))
- {
- if (comma)
- os << "," << endl << " ";
-
- os << "v_state_stack_ (sizeof (v_state_), &v_state_first_)";
-
- particle_.dispatch (c.contains_compositor ().compositor ());
-
- comma = true;
- }
-
- if (validation && (hra))
- {
- if (comma)
- os << "," << endl << " ";
-
- os << "v_state_attr_stack_ (sizeof (v_state_attr_), " <<
- "&v_state_attr_first_)";
- }
-
- os << "{"
- << "}";
- }
-
- private:
- //
- //
- ParserModifier parser_modifier_;
- Traversal::Names names_parser_modifier_;
-
- //
- //
- ParserBaseSet parser_base_set_;
- Traversal::Inherits inherits_parser_base_set_;
-
- //
- //
- ParserMemberSet parser_member_set_;
- Traversal::Names names_parser_member_set_;
-
- //
- //
- Particle particle_;
- };
- }
-
- void
- generate_parser_inline (Context& ctx)
- {
- // Emit "weak" header includes that are used in the file-per-type
- // compilation model.
- //
- if (!ctx.options.generate_inline ())
- {
- Traversal::Schema schema;
- Includes includes (ctx, Includes::source);
-
- schema >> includes;
- schema.dispatch (ctx.schema_root);
- }
-
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names schema_names;
-
- Namespace ns (ctx);
- Traversal::Names names;
-
- schema >> sources >> schema;
- schema >> schema_names >> ns >> names;
-
- List list (ctx);
- Complex complex (ctx);
-
- names >> list;
- names >> complex;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/parser-inline.hxx b/xsd/xsd/cxx/parser/parser-inline.hxx
deleted file mode 100644
index aff2ad2..0000000
--- a/xsd/xsd/cxx/parser/parser-inline.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/parser/parser-inline.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_PARSER_INLINE_HXX
-#define CXX_PARSER_PARSER_INLINE_HXX
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- void
- generate_parser_inline (Context&);
- }
-}
-
-#endif // CXX_PARSER_PARSER_INLINE_HXX
diff --git a/xsd/xsd/cxx/parser/parser-source.cxx b/xsd/xsd/cxx/parser/parser-source.cxx
deleted file mode 100644
index 2ee5273..0000000
--- a/xsd/xsd/cxx/parser/parser-source.cxx
+++ /dev/null
@@ -1,958 +0,0 @@
-// file : xsd/cxx/parser/parser-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/parser/parser-source.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- String const& name (ename (e));
- String const& ret (ret_type (e));
-
- SemanticGraph::Type& base (e.inherits ().base ());
-
- bool same (ret == ret_type (base));
-
- if (same || ret == L"void" || polymorphic)
- {
- os << "// " << name << endl
- << "//" << endl
- << endl;
- }
-
- if (same || ret == L"void")
- {
- os << ret << " " << name << "::" << endl
- << post_name (e) << " ()"
- << "{";
-
- if (same)
- {
- if (ret == L"void")
- os << post_name (base) << " ();";
- else
- os << "return " << post_name (base) << " ();";
- }
-
- os << "}";
- }
-
- if (polymorphic)
- {
- String id (e.name ());
-
- if (String ns = xml_ns_name (e))
- {
- id += L' ';
- id += ns;
- }
-
- os << "const " << char_type << "* " << name << "::" << endl
- << "_static_type ()"
- << "{"
- << "return " << strlit (id) << ";"
- << "}";
-
- os << "const " << char_type << "* " << name << "::" << endl
- << "_dynamic_type () const"
- << "{"
- << "return _static_type ();"
- << "}";
-
- if (validation)
- {
- bool gen (!anonymous (e));
-
- // We normally don't need to enter anonymous types into
- // the inheritance map. The only exception is when an
- // anonymous types is defined inside an element that
- // is a member of a substitution group.
- //
- if (!gen)
- {
- // The first instance that this anonymous type classifies
- // is the prototype for others if any. If this type does
- // not classify anything (e.g., it is a base), then we
- // don't need to do anything.
- //
- if (e.classifies_begin () != e.classifies_end ())
- {
- SemanticGraph::Instance& i (
- e.classifies_begin ()->instance ());
-
- if (SemanticGraph::Element* e =
- dynamic_cast<SemanticGraph::Element*> (&i))
- {
- if (e->substitutes_p ())
- gen = true;
- }
- }
- }
-
- if (gen)
- {
- os << "static" << endl
- << "const ::xsd::cxx::parser::validating::inheritance_map_entry< " <<
- char_type << " >" << endl
- << "_xsd_" << name << "_inheritance_map_entry_ (" << endl
- << name << "::_static_type ()," << endl
- << fq_name (base) << "::_static_type ());"
- << endl;
- }
- }
- }
- }
- };
-
- //
- //
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String const& name (ename (l));
- SemanticGraph::Type& t (l.argumented ().type ());
-
- String item (unclash (name, "item"));
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- // item
- //
- String const& arg (arg_type (t));
-
- os << "void " << name << "::" << endl
- << item;
-
- if (arg == L"void")
- os << " ()";
- else
- os << " (" << arg << ")";
-
- os << "{"
- << "}";
-
- // post
- //
- if (ret_type (l) == L"void")
- os << "void " << name << "::" << endl
- << post_name (l) << " ()"
- << "{"
- << "}";
-
- // parse_item
- //
- String inst (L"_xsd_" + item + L"_");
- String const& post (post_name (t));
-
- os << "void " << name << "::" << endl
- << "_xsd_parse_item (const " << string_type << "& v)"
- << "{"
- << "if (this->" << inst << ")"
- << "{"
- << "this->" << inst << "->pre ();"
- << "this->" << inst << "->_pre_impl ();"
- << "this->" << inst << "->_characters (v);"
- << "this->" << inst << "->_post_impl ();";
-
- if (ret_type (t) == L"void")
- os << "this->" << inst << "->" << post << " ();"
- << "this->" << item << " ();";
- else
- os << "this->" << item << " (this->" << inst << "->" <<
- post << " ());";
-
- os << "}"
- << "}";
-
- //
- //
- if (polymorphic)
- {
- String id (l.name ());
-
- if (String ns = xml_ns_name (l))
- {
- id += L' ';
- id += ns;
- }
-
- os << "const " << char_type << "* " << name << "::" << endl
- << "_static_type ()"
- << "{"
- << "return " << strlit (id) << ";"
- << "}";
-
- os << "const " << char_type << "* " << name << "::" << endl
- << "_dynamic_type () const"
- << "{"
- << "return _static_type ();"
- << "}";
- }
- }
- };
-
- //
- //
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String const& name (ename (u));
- String const& ret (ret_type (u));
-
- if (ret == L"void" || polymorphic)
- {
- os << "// " << name << endl
- << "//" << endl
- << endl;
- }
-
- if (ret == L"void")
- {
- os << "void " << name << "::" << endl
- << post_name (u) << " ()"
- << "{"
- << "}";
- }
-
- if (polymorphic)
- {
- String id (u.name ());
-
- if (String ns = xml_ns_name (u))
- {
- id += L' ';
- id += ns;
- }
-
- os << "const " << char_type << "* " << name << "::" << endl
- << "_static_type ()"
- << "{"
- << "return " << strlit (id) << ";"
- << "}";
-
- os << "const " << char_type << "* " << name << "::" << endl
- << "_dynamic_type () const"
- << "{"
- << "return _static_type ();"
- << "}";
- }
- }
- };
-
- //
- //
- struct StartElement: Traversal::Element, Context
- {
- StartElement (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (skip (e))
- return;
-
- bool poly (polymorphic && !anonymous (e.type ()));
-
- os << "if (";
-
- if (poly && e.global_p ())
- os << "(";
-
- if (e.qualified_p () && e.namespace_ ().name ())
- {
- os << "n == " << strlit (e.name ()) << " && " <<
- "ns == " << strlit (e.namespace_ ().name ());
- }
- else
- {
- os << "n == " << strlit (e.name ()) << " && ns.empty ()";
- }
-
- // Only a globally-defined element can be a subst-group root.
- //
- if (poly && e.global_p ())
- {
- os << ") ||" << endl
- << "::xsd::cxx::parser::substitution_map_instance< " <<
- char_type << " > ().check (" << endl
- << "ns, n, " << strlit (e.namespace_ ().name ()) <<
- ", " << strlit (e.name ()) << ", t)";
- }
-
- os << ")"
- << "{";
-
- String inst;
-
- if (poly)
- {
- SemanticGraph::Type& t (e.type ());
- inst = "p";
-
- // For pre-computing length.
- //
- String type_id (t.name ());
-
- if (String type_ns = xml_ns_name (t))
- {
- type_id += L' ';
- type_id += type_ns;
- }
-
- String fq_type (fq_name (t));
- String const& member (emember (e));
- String const& member_map (emember_map (e));
-
- os << fq_type << "* p = 0;"
- << endl
- << "if (t == 0 && this->" << member << " != 0)" << endl
- << inst << " = this->" << member << ";"
- << "else"
- << "{"
- << string_type << " ts (" << fq_type <<
- "::_static_type (), " << type_id.size () << "UL);"
- << endl
- << "if (t == 0)" << endl
- << "t = &ts;"
- << endl
- << "if (this->" << member << " != 0 && *t == ts)" << endl
- << inst << " = this->" << member << ";"
- << "else if (this->" << member_map << " != 0)" << endl
- << inst << " = dynamic_cast< " << fq_type <<
- "* > (" << endl
- << "this->" << member_map << "->find (*t));"
- << "}";
- }
- else
- inst = L"this->" + emember (e);
-
- os << "this->" << complex_base << "::context_.top ().parser_ = " <<
- inst << ";"
- << endl
- << "if (" << inst << ")" << endl
- << inst << "->pre ();" // _start_element calls _pre
- << endl
- << "return true;"
- << "}";
- }
- };
-
-
- //
- //
- struct EndElement: Traversal::Element, Context
- {
- EndElement (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (skip (e))
- return;
-
- bool poly (polymorphic && !anonymous (e.type ()));
- String const& name (ename (e));
-
- os << "if (";
-
- if (poly && e.global_p ())
- os << "(";
-
- if (e.qualified_p () && e.namespace_ ().name ())
- {
- os << "n == " << strlit (e.name ()) << " && " <<
- "ns == " << strlit (e.namespace_ ().name ());
- }
- else
- {
- os << "n == " << strlit (e.name ()) << " && ns.empty ()";
- }
-
- // Only a globally-defined element can be a subst-group root.
- //
- if (poly && e.global_p ())
- {
- os << ") ||" << endl
- << "::xsd::cxx::parser::substitution_map_instance< " <<
- char_type << " > ().check (" << endl
- << "ns, n, " << strlit (e.namespace_ ().name ()) <<
- ", " << strlit (e.name ()) << ")";
- }
-
- os << ")"
- << "{";
-
- // _end_element calls post
- //
-
- SemanticGraph::Type& type (e.type ());
- String const& post (post_name (type));
- String inst;
-
- if (poly)
- {
- String const& fq_type (fq_name (type));
- inst = "p";
-
- os << fq_type << "* p =" << endl
- << "dynamic_cast< " << fq_type << "* > (" << endl
- << "this->" << complex_base << "::context_.top ().parser_);"
- << endl;
- }
- else
- inst = L"this->" + emember (e);
-
- os << "if (" << inst << ")";
-
- if (ret_type (type) == L"void")
- os << "{"
- << inst << "->" << post << " ();"
- << "this->" << name << " ();"
- << "}";
- else
- os << endl
- << "this->" << name << " (" << inst << "->" << post << " ());"
- << endl;
-
- os << "return true;"
- << "}";
- }
- };
-
- //
- //
- struct Attribute: Traversal::Attribute, Context
- {
- Attribute (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& name (ename (a));
- String const& inst (emember (a));
-
- if (a.qualified_p () && a.namespace_ ().name ())
- {
- os << "if (n == " << strlit (a.name ()) << " && " <<
- "ns == " << strlit (a.namespace_ ().name ()) << ")"
- << "{";
- }
- else
- {
- os << "if (n == " << strlit (a.name ()) << " && ns.empty ())"
- << "{";
- }
-
- SemanticGraph::Type& type (a.type ());
- String const& post (post_name (type));
- String const& ret (ret_type (type));
-
- os << "if (this->" << inst << ")"
- << "{"
- << "this->" << inst << "->pre ();"
- << "this->" << inst << "->_pre_impl ();"
- << "this->" << inst << "->_characters (v);"
- << "this->" << inst << "->_post_impl ();";
-
- if (ret == L"void")
- os << "this->" << inst << "->" << post << " ();"
- << "this->" << name << " ();";
- else
- os << "this->" << name << " (this->" << inst << "->" <<
- post << " ());";
-
- os << "}"
- << "return true;"
- << "}";
- }
- };
-
- //
- //
- struct ParserCallback: Traversal::Member, Context
- {
- ParserCallback (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- String const& arg (arg_type (m.type ()));
-
- os << "void " << ename (m.scope ()) << "::" << endl
- << ename (m);
-
- if (arg == L"void")
- os << " ()";
- else
- os << " (" << arg << ")";
-
- os << "{"
- << "}";
- }
- };
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c),
- parser_callback_ (c),
- start_element_ (c),
- end_element_ (c),
- attribute_ (c)
- {
- names_parser_callback_ >> parser_callback_;
- names_start_element_ >> start_element_;
- names_end_element_ >> end_element_;
- names_attribute_ >> attribute_;
- }
-
- virtual void
- traverse (Type& c)
- {
- bool he (has<Traversal::Element> (c));
- bool ha (has<Traversal::Attribute> (c));
-
- String const& ret (ret_type (c));
- bool same (c.inherits_p () &&
- ret == ret_type (c.inherits ().base ()));
-
- String const& name (ename (c));
-
- if ((he || ha || same || ret == L"void") || polymorphic)
- {
- os << "// " << name << endl
- << "//" << endl
- << endl;
- }
-
- if (polymorphic)
- {
- String id (c.name ());
-
- if (String ns = xml_ns_name (c))
- {
- id += L' ';
- id += ns;
- }
-
- os << "const " << char_type << "* " << name << "::" << endl
- << "_static_type ()"
- << "{"
- << "return " << strlit (id) << ";"
- << "}";
-
- os << "const " << char_type << "* " << name << "::" << endl
- << "_dynamic_type () const"
- << "{"
- << "return _static_type ();"
- << "}";
-
- if (c.inherits_p () && validation)
- {
- bool gen (!anonymous (c));
-
- // We normally don't need to enter anonymous types into
- // the inheritance map. The only exception is when an
- // anonymous types is defined inside an element that
- // is a member of a substitution group.
- //
- if (!gen)
- {
- // The first instance that this anonymous type classifies
- // is the prototype for others if any. If this type does
- // not classify anything (e.g., it is a base), then we
- // don't need to do anything.
- //
- if (c.classifies_begin () != c.classifies_end ())
- {
- SemanticGraph::Instance& i (
- c.classifies_begin ()->instance ());
-
- if (SemanticGraph::Element* e =
- dynamic_cast<SemanticGraph::Element*> (&i))
- {
- if (e->substitutes_p ())
- gen = true;
- }
- }
- }
-
- if (gen)
- {
- SemanticGraph::Type& base (c.inherits ().base ());
-
- os << "static" << endl
- << "const ::xsd::cxx::parser::validating::inheritance_map_entry< " <<
- char_type << " >" << endl
- << "_xsd_" << name << "_inheritance_map_entry_ (" << endl
- << name << "::_static_type ()," << endl
- << fq_name (base) << "::_static_type ());"
- << endl;
- }
- }
- }
-
- if (!(he || ha || same || ret == L"void"))
- return;
-
- // Parser callbacks.
- //
- if (!restriction_p (c))
- names (c, names_parser_callback_);
-
- if (same || ret == L"void")
- {
- os << ret << " " << name << "::" << endl
- << post_name (c) << " ()"
- << "{";
-
- if (same)
- {
- SemanticGraph::Type& base (c.inherits ().base ());
-
- if (ret == L"void")
- os << post_name (base) << " ();";
- else
- os << "return " << post_name (base) << " ();";
- }
-
- os << "}";
- }
-
- // The rest is parsing/validation code which is generated in
- // *-validation-source.cxx.
- //
- if (validation)
- return;
-
- // Don't use restriction_p here since we don't want special
- // treatment of anyType.
- //
- bool restriction (
- c.inherits_p () &&
- c.inherits ().is_a<SemanticGraph::Restricts> ());
-
- // _start_element_impl & _end_element_impl
- //
- if (he)
- {
- os << "bool " << name << "::" << endl
- << "_start_element_impl (const " << string_type << "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "* t)"
- << "{"
- << "XSD_UNUSED (t);"
- << endl;
-
- if (!restriction)
- {
- os << "if (this->";
-
- if (c.inherits_p ())
- os << fq_name (c.inherits ().base ());
- else
- os << complex_base;
-
- os << "::_start_element_impl (ns, n, t))" << endl
- << "return true;"
- << endl;
- }
-
- names (c, names_start_element_);
-
- os << "return false;"
- << "}";
-
-
- // _end_element_impl
- //
- os << "bool " << name << "::" << endl
- << "_end_element_impl (const " << string_type << "& ns," << endl
- << "const " << string_type << "& n)"
- << "{";
-
- if (!restriction)
- {
- os << "if (this->";
-
- if (c.inherits_p () && !restriction)
- os << fq_name (c.inherits ().base ());
- else
- os << complex_base;
-
- os << "::_end_element_impl (ns, n))" << endl
- << "return true;"
- << endl;
- }
-
- names (c, names_end_element_);
-
- os << "return false;"
- << "}";
- }
-
-
- if (ha)
- {
- // _attribute_impl
- //
- os << "bool " << name << "::" << endl
- << "_attribute_impl (const " << string_type << "& ns," << endl
- << "const " << string_type << "& n," << endl
- << "const " << string_type << "& v)"
- << "{";
-
- if (!restriction)
- {
- os << "if (this->";
-
- if (c.inherits_p ())
- os << fq_name (c.inherits ().base ());
- else
- os << complex_base;
-
- os << "::_attribute_impl (ns, n, v))" << endl
- << "return true;"
- << endl;
- }
-
- names (c, names_attribute_);
-
- os << "return false;"
- << "}";
- }
- }
-
- private:
- //
- //
- ParserCallback parser_callback_;
- Traversal::Names names_parser_callback_;
-
- //
- //
- StartElement start_element_;
- Traversal::Names names_start_element_;
-
- //
- //
- EndElement end_element_;
- Traversal::Names names_end_element_;
-
- //
- //
- Attribute attribute_;
- Traversal::Names names_attribute_;
- };
-
-
- // Generate substitution group map entries.
- //
- struct GlobalElement: Traversal::Element, Context
- {
- GlobalElement (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (e.substitutes_p ())
- {
- String name (escape (e.name ()));
- Type& r (e.substitutes ().root ());
-
- SemanticGraph::Type& type (e.type ());
-
- os << "// Substitution map entry for " << comment (e.name ()) << "." << endl
- << "//" << endl
- << "static" << endl
- << "const ::xsd::cxx::parser::substitution_map_entry< " <<
- char_type << " >" << endl
- << "_xsd_" << name << "_substitution_map_entry_ (" << endl
- << strlit (e.namespace_ ().name ()) << "," << endl
- << strlit (e.name ()) << "," << endl
- << strlit (r.namespace_ ().name ()) << "," << endl
- << strlit (r.name ()) << "," << endl
- << fq_name (type) << "::_static_type ());"
- << endl;
- }
- }
- };
- }
-
- void
- generate_parser_source (Context& ctx)
- {
- if (ctx.polymorphic)
- {
- ctx.os << "#include <xsd/cxx/parser/substitution-map.hxx>" << endl;
-
- if (ctx.validation)
- ctx.os << "#include <xsd/cxx/parser/validating/inheritance-map.hxx>" << endl
- << endl;
- else
- ctx.os << endl;
-
- bool import_maps (ctx.options.import_maps ());
- bool export_maps (ctx.options.export_maps ());
-
- if (import_maps || export_maps)
- {
- ctx.os << "#ifndef XSD_NO_EXPORT" << endl
- << endl
- << "namespace xsd"
- << "{"
- << "namespace cxx"
- << "{"
- << "namespace parser"
- << "{"
- << "#ifdef _MSC_VER" << endl;
-
- if (export_maps)
- ctx.os << "template struct __declspec (dllexport) " <<
- "substitution_map_init< " << ctx.char_type << " >;";
-
- if (import_maps)
- ctx.os << "template struct __declspec (dllimport) " <<
- "substitution_map_init< " << ctx.char_type << " >;";
-
- if (ctx.validation && export_maps)
- ctx.os << "template struct __declspec (dllexport) " <<
- "inheritance_map_init< " << ctx.char_type << " >;";
-
- if (ctx.validation && import_maps)
- ctx.os << "template struct __declspec (dllimport) " <<
- "inheritance_map_init< " << ctx.char_type << " >;";
-
- ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl
- << "template struct __attribute__ ((visibility(\"default\"))) " <<
- "substitution_map_init< " << ctx.char_type << " >;";
-
- if (ctx.validation)
- ctx.os << "template struct __attribute__ ((visibility(\"default\"))) " <<
- "inheritance_map_init< " << ctx.char_type << " >;";
-
- ctx.os << "#elif defined(XSD_MAP_VISIBILITY)" << endl
- << "template struct XSD_MAP_VISIBILITY " <<
- "substitution_map_init< " << ctx.char_type << " >;";
-
- if (ctx.validation)
- ctx.os << "template struct XSD_MAP_VISIBILITY " <<
- "inheritance_map_init< " << ctx.char_type << " >;";
-
- ctx.os << "#endif" << endl
- << "}" // parser
- << "}" // cxx
- << "}" // xsd
- << "#endif // XSD_NO_EXPORT" << endl
- << endl;
- }
-
- ctx.os << "static" << endl
- << "const ::xsd::cxx::parser::substitution_map_init< " <<
- ctx.char_type << " >" << endl
- << "_xsd_substitution_map_init_;"
- << endl;
-
- if (ctx.validation)
- {
- ctx.os << "static" << endl
- << "const ::xsd::cxx::parser::validating::inheritance_map_init< " <<
- ctx.char_type << " >" << endl
- << "_xsd_inheritance_map_init_;"
- << endl;
- }
- }
-
- // Emit "weak" header includes that are used in the file-per-type
- // compilation model.
- //
- if (ctx.options.generate_inline ())
- {
- Traversal::Schema schema;
- Includes includes (ctx, Includes::source);
-
- schema >> includes;
- schema.dispatch (ctx.schema_root);
- }
-
- Traversal::Schema schema;
- Sources sources;
- Traversal::Names schema_names;
-
- Namespace ns (ctx);
- Traversal::Names names;
-
- schema >> sources >> schema;
- schema >> schema_names >> ns >> names;
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
- GlobalElement global_element (ctx);
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- if (ctx.polymorphic)
- names >> global_element;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/parser-source.hxx b/xsd/xsd/cxx/parser/parser-source.hxx
deleted file mode 100644
index 6e206b4..0000000
--- a/xsd/xsd/cxx/parser/parser-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/parser/parser-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_PARSER_SOURCE_HXX
-#define CXX_PARSER_PARSER_SOURCE_HXX
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- void
- generate_parser_source (Context&);
- }
-}
-
-#endif // CXX_PARSER_PARSER_SOURCE_HXX
diff --git a/xsd/xsd/cxx/parser/print-impl-common.hxx b/xsd/xsd/cxx/parser/print-impl-common.hxx
deleted file mode 100644
index 516273a..0000000
--- a/xsd/xsd/cxx/parser/print-impl-common.hxx
+++ /dev/null
@@ -1,642 +0,0 @@
-// file : xsd/cxx/parser/print-impl-common.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_PRINT_IMPL_COMMON_HXX
-#define CXX_PARSER_PRINT_IMPL_COMMON_HXX
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <cxx/parser/elements.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- struct PrintCall: Traversal::Type,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal,
-
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Language,
-
- Traversal::Fundamental::QName,
-
- Traversal::Fundamental::Id,
- Traversal::Fundamental::IdRef,
- Traversal::Fundamental::IdRefs,
-
- Traversal::Fundamental::AnyURI,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary,
-
- Traversal::Fundamental::Date,
- Traversal::Fundamental::DateTime,
- Traversal::Fundamental::Duration,
- Traversal::Fundamental::Day,
- Traversal::Fundamental::Month,
- Traversal::Fundamental::MonthDay,
- Traversal::Fundamental::Year,
- Traversal::Fundamental::YearMonth,
- Traversal::Fundamental::Time,
-
- Context
- {
- PrintCall (Context& c, String const& tag, String const& arg)
- : Context (c), tag_ (tag), arg_ (arg)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type&)
- {
- gen_user_type ();
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean& t)
- {
- if (default_type (t, "bool"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- // Integral types.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte& t)
- {
- if (default_type (t, "signed char"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") <<
- " << static_cast<short> (" << arg_ << ") << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte& t)
- {
- if (default_type (t, "unsigned char"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") <<
- " << static_cast<unsigned short> (" << arg_ << ") << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short& t)
- {
- if (default_type (t, "short"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort& t)
- {
- if (default_type (t, "unsigned short"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int& t)
- {
- if (default_type (t, "int"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt& t)
- {
- if (default_type (t, "unsigned int"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long& t)
- {
- if (default_type (t, "long long"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong& t)
- {
- if (default_type (t, "unsigned long long"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer& t)
- {
- if (default_type (t, "long long"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger& t)
- {
- if (default_type (t, "long long"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
- {
- if (default_type (t, "long long"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger& t)
- {
- if (default_type (t, "unsigned long long"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
- {
- if (default_type (t, "unsigned long long"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- if (default_type (t, "float"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- if (default_type (t, "double"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal& t)
- {
- if (default_type (t, "double"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- // Strings.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::String& t)
- {
- gen_string (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString& t)
- {
- gen_string (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token& t)
- {
- gen_string (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken& t)
- {
- gen_string (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name& t)
- {
- gen_string (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName& t)
- {
- gen_string (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Language& t)
- {
- gen_string (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Id& t)
- {
- gen_string (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRef& t)
- {
- gen_string (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::AnyURI& t)
- {
- gen_string (t);
- }
-
- // String sequences.
- //
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens& t)
- {
- gen_sequence (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs& t)
- {
- gen_sequence (t);
- }
-
- // QName
- //
-
- virtual void
- traverse (SemanticGraph::Fundamental::QName& t)
- {
- if (default_type (t, xs_ns_name () + L"::qname"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << ";"
- << endl
- << "if (" << arg_ << ".prefix ().empty ())" << endl
- << cout_inst << " << " << arg_ << ".name ();"
- << "else" << endl
- << cout_inst << " << " << arg_ << ".prefix () << " << L <<
- "':' << " << arg_ << ".name ();"
- << endl
- << cout_inst << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- // Binary.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary& t)
- {
- gen_buffer (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary& t)
- {
- gen_buffer (t);
- }
-
- // Date/time.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Date& t)
- {
- if (default_type (t, xs_ns_name () + L"::date"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << endl
- << " << " << arg_ << ".year () << '-'" << endl
- << " << " << arg_ << ".month () << '-'" << endl
- << " << " << arg_ << ".day ();";
-
- gen_time_zone ();
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::DateTime& t)
- {
- if (default_type (t, xs_ns_name () + L"::date_time"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << endl
- << " << " << arg_ << ".year () << '-'" << endl
- << " << " << arg_ << ".month () << '-'" << endl
- << " << " << arg_ << ".day () << 'T'" << endl
- << " << " << arg_ << ".hours () << ':'" << endl
- << " << " << arg_ << ".minutes () << ':'" << endl
- << " << " << arg_ << ".seconds ();";
-
- gen_time_zone ();
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Duration& t)
- {
- if (default_type (t, xs_ns_name () + L"::duration"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << ";"
- << endl
- << "if (" << arg_ << ".negative ())" << endl
- << cout_inst << " << '-';"
- << endl
- << cout_inst << " << 'P'" << endl
- << " << " << arg_ << ".years () << 'Y'" << endl
- << " << " << arg_ << ".months () << 'M'" << endl
- << " << " << arg_ << ".days () << " << L << "\"DT\"" << endl
- << " << " << arg_ << ".hours () << 'H'" << endl
- << " << " << arg_ << ".minutes () << 'M'" << endl
- << " << " << arg_ << ".seconds () << 'S'"
- << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Day& t)
- {
- if (default_type (t, xs_ns_name () + L"::gday"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ---") <<
- " << " << arg_ << ".day ();";
-
- gen_time_zone ();
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Month& t)
- {
- if (default_type (t, xs_ns_name () + L"::gmonth"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": --") <<
- " << " << arg_ << ".month ();";
-
- gen_time_zone ();
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::MonthDay& t)
- {
- if (default_type (t, xs_ns_name () + L"::gmonth_day"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": --") << endl
- << " << " << arg_ << ".month () << '-'" << endl
- << " << " << arg_ << ".day ();";
-
- gen_time_zone ();
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Year& t)
- {
- if (default_type (t, xs_ns_name () + L"::gyear"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << ".year ();";
-
- gen_time_zone ();
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::YearMonth& t)
- {
- if (default_type (t, xs_ns_name () + L"::gyear_month"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << endl
- << " << " << arg_ << ".year () << '-'" << endl
- << " << " << arg_ << ".month ();";
-
- gen_time_zone ();
- }
- else
- gen_user_type ();
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Time& t)
- {
- if (default_type (t, xs_ns_name () + L"::time"))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << endl
- << " << " << arg_ << ".hours () << ':'" << endl
- << " << " << arg_ << ".minutes () << ':'" << endl
- << " << " << arg_ << ".seconds ();";
-
- gen_time_zone ();
- }
- else
- gen_user_type ();
- }
-
- private:
- bool
- default_type (SemanticGraph::Type& t, String const& def_type)
- {
- return ret_type (t) == def_type;
- }
-
- void
- gen_user_type ()
- {
- os << "// TODO" << endl
- << "//" << endl;
- }
-
- void
- gen_string (SemanticGraph::Type& t)
- {
- if ((char_type == L"char" && default_type (t, "::std::string")) ||
- (char_type == L"wchar_t" && default_type (t, "::std::wstring")))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << " <<
- arg_ << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- void
- gen_sequence (SemanticGraph::Type& t)
- {
- String type (xs_ns_name () + L"::string_sequence");
-
- if (default_type (t, type))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << ";"
- << endl;
-
- os << "for (" << type << "::const_iterator i (" << arg_ <<
- ".begin ()), e (" << arg_ << ".end ());" << endl
- << "i != e;)"
- << "{"
- << cout_inst << " << *i++;"
- << "if (i != e)" << endl
- << cout_inst << " << ' ';"
- << "}"
- << cout_inst << " << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- void
- gen_buffer (SemanticGraph::Type& t)
- {
- String type (auto_ptr + L"< " + xs_ns_name () + L"::buffer >");
-
- if (default_type (t, type))
- {
- os << cout_inst << " << " << strlit (tag_ + L": ") << " << "
- << arg_ << "->size () << " << L << "\" bytes\" << std::endl;";
- }
- else
- gen_user_type ();
- }
-
- void
- gen_time_zone ()
- {
- os << endl
- << "if (" << arg_ << ".zone_present ())"
- << "{"
- << "if (" << arg_ << ".zone_hours () < 0)" << endl
- << cout_inst << " << " << arg_ << ".zone_hours () << ':' << -" <<
- arg_ << ".zone_minutes ();"
- << "else" << endl
- << cout_inst << " << '+' << " << arg_ << ".zone_hours () << " <<
- "':' << " << arg_ << ".zone_minutes ();";
-
- os << "}"
- << cout_inst << " << std::endl;";
- }
-
- private:
- String tag_;
- String arg_;
- };
- }
-}
-
-#endif // CXX_PARSER_PRINT_IMPL_COMMON_HXX
diff --git a/xsd/xsd/cxx/parser/state-processor.cxx b/xsd/xsd/cxx/parser/state-processor.cxx
deleted file mode 100644
index 86f97ce..0000000
--- a/xsd/xsd/cxx/parser/state-processor.cxx
+++ /dev/null
@@ -1,320 +0,0 @@
-// file : xsd/cxx/parser/state-processor.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <vector>
-#include <iostream>
-
-#include <cxx/parser/state-processor.hxx>
-
-#include <cxx/parser/elements.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- typedef vector<SemanticGraph::Particle*> Particles;
-
- /*
- void
- print (Particles const& p)
- {
- using std::wcerr;
- using std::endl;
-
- wcerr << "prefixes: " << endl;
-
- for (Particles::const_iterator i (p.begin ()); i != p.end (); ++i)
- {
- if (SemanticGraph::Element* e =
- dynamic_cast<SemanticGraph::Element*> (*i))
- {
- wcerr << e->name () << endl;
- }
- else
- {
- wcerr << "<any>" << endl;
- }
- }
-
- wcerr << endl;
- }
- */
-
- //
- //
- struct Particle: Traversal::All,
- Traversal::Choice,
- Traversal::Sequence
- {
- Particle (size_t& all,
- size_t& choice,
- size_t& sequence,
- size_t& depth)
- : all_ (all),
- choice_ (choice),
- sequence_ (sequence),
- depth_ (depth)
- {
- }
-
- virtual void
- traverse (SemanticGraph::All& a)
- {
- using SemanticGraph::Compositor;
-
- // Go over particles, collecting "prefix" particles in prefixes_,
- // assigning state numbers and calculating effective minOccurs.
- // If all prefixes of this compositor have minOccurs = 0, then
- // the compositor itself effectively has minOccurs = 0 regardless
- // of the actual value specified in the schema.
- //
- // Note that we don't need to care about depth since the 'all'
- // compositor cannot contain any nested compositors.
- //
-
- size_t state (0);
- size_t min (0);
-
- for (Compositor::ContainsIterator ci (a.contains_begin ());
- ci != a.contains_end (); ++ci)
- {
- SemanticGraph::Particle& p (ci->particle ());
-
- // The 'all' compositor can only include elements.
- //
- prefixes_.push_back (&p);
-
- if (min == 0 && ci->min () != 0)
- min = 1;
-
- p.context ().set ("prefix", true);
- p.context ().set ("state", state++);
- }
-
- if (!prefixes_.empty ())
- {
- a.context ().set ("comp-number", choice_++);
- a.context ().set ("prefixes", prefixes_);
- a.context ().set ("state-count", size_t (prefixes_.size ()));
-
- // effective-min = min * actual-min
- //
- if (min == 1)
- min = a.min ();
-
- a.context ().set ("effective-min", min);
-
- // print (prefixes_);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Choice& c)
- {
- using SemanticGraph::Compositor;
-
- // Go over particles, collecting "prefix" particles in prefixes_,
- // assigning state numbers and calculating effective minOccurs.
- // If any prefix of this compositor have minOccurs = 0, then the
- // compositor itself effectively has minOccurs = 0 regardless of
- // the actual value specified in the schema.
- //
-
- size_t state (0);
- size_t min (1);
-
- for (Compositor::ContainsIterator ci (c.contains_begin ());
- ci != c.contains_end (); ++ci)
- {
- SemanticGraph::Particle& p (ci->particle ());
-
- if (p.is_a<SemanticGraph::Element> () ||
- p.is_a<SemanticGraph::Any> ())
- {
- prefixes_.push_back (&p);
-
- if (min == 1 && ci->min () == 0)
- min = 0;
- }
- else
- {
- size_t depth (0);
- Particle t (all_, choice_, sequence_, depth);
- t.dispatch (p);
-
- if (t.prefixes_.empty ())
- continue; // Skip empty compositors.
-
- if (++depth > depth_) // One for this compositor.
- depth_ = depth;
-
- prefixes_.insert (prefixes_.end (),
- t.prefixes_.begin ().base (),
- t.prefixes_.end ().base ());
-
- if (min == 1 &&
- p.context ().get<size_t> ("effective-min") == 0)
- min = 0;
- }
-
- p.context ().set ("prefix", true);
- p.context ().set ("state", state++);
- }
-
- if (!prefixes_.empty ())
- {
- c.context ().set ("comp-number", choice_++);
- c.context ().set ("prefixes", prefixes_);
-
- // effective-min = min * actual-min
- //
- if (min == 1)
- min = c.min ();
-
- c.context ().set ("effective-min", min);
-
- // print (prefixes_);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Sequence& s)
- {
- using SemanticGraph::Compositor;
-
- // Go over particles, collecting "prefix" particles in prefixes_,
- // assigning state numbers and calculating effective minOccurs.
- // If all prefixes of this compositor have minOccurs = 0, then
- // the compositor itself effectively has minOccurs = 0 regardless
- // of the actual value specified in the schema.
- //
-
- bool prefix (true);
- size_t state (0);
- size_t min (0);
-
- for (Compositor::ContainsIterator ci (s.contains_begin ());
- ci != s.contains_end (); ++ci)
- {
- SemanticGraph::Particle& p (ci->particle ());
-
- if (p.is_a<SemanticGraph::Element> () ||
- p.is_a<SemanticGraph::Any> ())
- {
- if (prefix)
- {
- prefixes_.push_back (&p);
-
- if (ci->min () != 0)
- min = 1;
- }
- }
- else
- {
- size_t depth (0);
- Particle t (all_, choice_, sequence_, depth);
- t.dispatch (p);
-
- if (t.prefixes_.empty ())
- continue; // Skip empty compositors.
-
- if (++depth > depth_) // One for this compositor.
- depth_ = depth;
-
- if (prefix)
- {
- prefixes_.insert (prefixes_.end (),
- t.prefixes_.begin ().base (),
- t.prefixes_.end ().base ());
-
- if (p.context ().get<size_t> ("effective-min") != 0)
- min = 1;
- }
- }
-
- p.context ().set ("state", state++);
-
- if (prefix)
- p.context ().set ("prefix", true);
-
- if (prefix && min != 0)
- prefix = false;
- }
-
- if (!prefixes_.empty ())
- {
- s.context ().set ("comp-number", sequence_++);
- s.context ().set ("prefixes", prefixes_);
-
- // effective-min = min * actual-min
- //
- if (min == 1)
- min = s.min ();
-
- s.context ().set ("effective-min", min);
-
- // print (prefixes_);
- }
- }
-
- private:
- Particles prefixes_;
-
- size_t& all_;
- size_t& choice_;
- size_t& sequence_;
-
- size_t& depth_;
- };
-
-
- //
- //
- struct Complex: Traversal::Complex
- {
- virtual void
- traverse (Type& c)
- {
- if (c.contains_compositor_p ())
- {
- size_t all (0), choice (0), sequence (0), depth (0);
- Particle t (all, choice, sequence, depth);
- t.dispatch (c.contains_compositor ().compositor ());
-
- // Set the maximum stack depth for this type. Used to
- // allocate fixed-size state stack.
- //
- c.context ().set ("depth", depth + 1);
- }
- }
- };
- }
-
- void StateProcessor::
- process (SemanticGraph::Schema& tu, SemanticGraph::Path const&)
- {
- Traversal::Schema schema;
- Sources sources;
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
-
- schema >> sources >> schema;
- schema >> schema_names >> ns >> ns_names;
-
- Complex complex_type;
-
- ns_names >> complex_type;
-
- schema.dispatch (tu);
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/state-processor.hxx b/xsd/xsd/cxx/parser/state-processor.hxx
deleted file mode 100644
index de5af69..0000000
--- a/xsd/xsd/cxx/parser/state-processor.hxx
+++ /dev/null
@@ -1,26 +0,0 @@
-// file : xsd/cxx/parser/state-processor.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_STATE_PROCESSOR_HXX
-#define CXX_PARSER_STATE_PROCESSOR_HXX
-
-#include <xsd-frontend/semantic-graph.hxx>
-
-#include <types.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- class StateProcessor
- {
- public:
- void
- process (XSDFrontend::SemanticGraph::Schema&,
- XSDFrontend::SemanticGraph::Path const& file);
- };
- }
-}
-
-#endif // CXX_PARSER_STATE_PROCESSOR_HXX
diff --git a/xsd/xsd/cxx/parser/type-processor.cxx b/xsd/xsd/cxx/parser/type-processor.cxx
deleted file mode 100644
index 2f1132c..0000000
--- a/xsd/xsd/cxx/parser/type-processor.cxx
+++ /dev/null
@@ -1,348 +0,0 @@
-// file : xsd/cxx/parser/type-processor.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <set>
-
-#include <cxx/parser/elements.hxx>
-#include <cxx/parser/type-processor.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- //
- //
- struct Type: Traversal::Type
- {
- Type (SemanticGraph::Schema& schema,
- TypeMap::Namespaces& type_map,
- bool add_includes)
- : schema_ (schema),
- type_map_ (type_map),
- add_includes_ (add_includes)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type& type)
- {
- using TypeMap::Namespace;
- using TypeMap::Namespaces;
-
- SemanticGraph::Context& tc (type.context ());
-
- // There are two situations where we may try to process the
- // same type more than once. The first is when the type is
- // used in several element declarations in the same schema.
- // The second situation only occurs when we are in the file-
- // per-type mode. In this case the type was processed as part
- // of another root schema. In the second case, while the ret
- // and arg types are assumed to be the same, we need to re-
- // match the type in order to add include directives to the
- // new root schema.
- //
- bool set (true);
-
- if (tc.count ("ret-type"))
- {
- SemanticGraph::Schema* s (
- tc.get<SemanticGraph::Schema*> ("root-schema"));
-
- if (&schema_ == s)
- return;
-
- set = false;
- }
-
- SemanticGraph::Namespace& ns (
- dynamic_cast<SemanticGraph::Namespace&> (type.scope ()));
-
- String ns_name (ns.name ());
- String t_name (type.name ());
-
- //std::wcerr << "traversing: " << ns_name << "#" << t_name << endl;
-
- for (Namespaces::const_iterator n (type_map_.begin ());
- n != type_map_.end (); ++n)
- {
- // Check if the namespace matches.
- //
- bool ns_match;
-
- if (!n->xsd_name ().empty ())
- {
- ns_match = n->xsd_name ().match (ns_name);
- }
- else
- ns_match = ns_name.empty ();
-
- //std::wcerr << "considering ns expr: " << n->xsd_name ()
- // << " for " << ns_name
- // << ": " << (ns_match ? "+" : "-") << endl;
-
- if (ns_match)
- {
- // Namespace matched. See if there is a type that matches.
- //
- for (Namespace::TypesIterator t (n->types_begin ());
- t != n->types_end (); ++t)
- {
- if (t->xsd_name ().match (t_name))
- {
- if (set)
- {
- // Got a match. See if the namespace has the C++
- // namespace mapping.
- //
- String cxx_ns;
-
- if (n->has_cxx_name ())
- {
- if (!n->xsd_name ().empty ())
- {
- cxx_ns = n->xsd_name ().replace (
- ns_name, n->cxx_name (), true);
- }
- else
- cxx_ns = n->cxx_name ();
-
- cxx_ns += L"::";
- }
-
- // Figure out ret and arg type names.
- //
- String ret_type (cxx_ns);
-
- ret_type += t->xsd_name ().replace (
- t_name, t->cxx_ret_name (), true);
-
- String arg_type;
-
- if (t->cxx_arg_name ())
- {
- arg_type = cxx_ns;
- arg_type += t->xsd_name ().replace (
- t_name, t->cxx_arg_name (), true);
- }
- else
- {
- if (ret_type == L"void")
- arg_type = ret_type;
- else
- {
- wchar_t last (ret_type[ret_type.size () - 1]);
-
- // If it is already a pointer or reference then use
- // it as is.
- //
- if (last == L'*' || last == L'&')
- arg_type = ret_type;
- else
- arg_type = L"const " + ret_type + L"&";
- }
- }
-
- tc.set ("ret-type", ret_type);
- tc.set ("arg-type", arg_type);
-
- //std::wcerr << t_name << " -> " << ret_type << endl;
- }
-
- tc.set ("root-schema", &schema_);
-
- // See of we need to add any includes to the translations
- // unit.
- //
- if (add_includes_)
- {
- if (n->includes_begin () != n->includes_end ())
- {
- typedef std::set<String> Includes;
-
- if (!schema_.context ().count ("includes"))
- schema_.context ().set ("includes", Includes ());
-
- Includes& is (
- schema_.context ().get<Includes> ("includes"));
-
- for (Namespace::IncludesIterator i (n->includes_begin ());
- i != n->includes_end (); ++i)
- {
- is.insert (*i);
- }
- }
- }
-
- return;
- }
- }
- }
- }
- }
-
- private:
- SemanticGraph::Schema& schema_;
- TypeMap::Namespaces& type_map_;
- bool add_includes_;
- };
-
-
- //
- //
- struct GlobalType: Traversal::Type,
- Traversal::List,
- Traversal::Complex,
- Traversal::Enumeration
- {
- GlobalType (SemanticGraph::Schema& schema,
- TypeMap::Namespaces& type_map,
- bool add_includes)
- : type_ (schema, type_map, add_includes)
- {
- inherits_ >> type_;
- names_ >> instance_ >> belongs_ >> type_;
- argumented_ >> type_;
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- type_.traverse (t);
- }
-
- virtual void
- traverse (SemanticGraph::List& l)
- {
- type_.traverse (l);
- Traversal::List::argumented (l, argumented_);
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- type_.traverse (c);
- Complex::inherits (c, inherits_);
- Complex::names (c, names_);
- }
-
- virtual void
- traverse (SemanticGraph::Enumeration& e)
- {
- type_.traverse (e);
- Complex::inherits (e, inherits_);
- }
-
- private:
- Parser::Type type_;
- Traversal::Names names_;
- Traversal::Instance instance_;
- Traversal::Inherits inherits_;
- Traversal::Belongs belongs_;
- Traversal::Argumented argumented_;
- };
-
- void
- process_impl (options const& ops,
- XSDFrontend::SemanticGraph::Schema& tu,
- bool gen_driver,
- TypeMap::Namespaces& type_map)
- {
- if (tu.names_begin ()->named ().name () ==
- L"http://www.w3.org/2001/XMLSchema")
- {
- // XML Schema namespace.
- //
- Traversal::Schema schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- GlobalType global_type (tu, type_map, true);
-
- schema >> schema_names >> ns >> ns_names >> global_type;
-
- schema.dispatch (tu);
- }
- else
- {
- // If --extern-xml-schema is specified, then we don't want
- // includes from the XML Schema type map.
- //
- bool extern_xml_schema (ops.extern_xml_schema ());
-
- //
- //
- Traversal::Schema schema;
- Traversal::Schema xs_schema;
- Sources sources;
- Traversal::Implies implies;
-
- schema >> sources >> schema;
- schema >> implies >> xs_schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- GlobalType global_type (tu, type_map, true);
-
- schema >> schema_names >> ns >> ns_names >> global_type;
-
- Traversal::Names xs_schema_names;
- Traversal::Namespace xs_ns;
- Traversal::Names xs_ns_names;
- GlobalType xs_global_type (tu, type_map, !extern_xml_schema);
-
- xs_schema >> xs_schema_names >> xs_ns >> xs_ns_names >>
- xs_global_type;
-
- schema.dispatch (tu);
-
- // If we are generating the test driver, make sure the root
- // element type is processed.
- //
- if (gen_driver && ops.generate_test_driver ())
- {
- // Figure out the root element. Validator should have made sure
- // it is unique.
- //
- SemanticGraph::Element* root (0);
- {
- Traversal::Schema schema;
- Sources sources;
-
- schema >> sources >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- RootElement root_element (ops, root);
-
- schema >> schema_names >> ns >> ns_names >> root_element;
-
- schema.dispatch (tu);
- }
-
- global_type.dispatch (root->type ());
- }
- }
- }
- }
-
- void TypeProcessor::
- process (options const& ops,
- XSDFrontend::SemanticGraph::Schema& s,
- bool gen_driver,
- TypeMap::Namespaces& tm)
- {
- process_impl (ops, s, gen_driver, tm);
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/type-processor.hxx b/xsd/xsd/cxx/parser/type-processor.hxx
deleted file mode 100644
index 634bc14..0000000
--- a/xsd/xsd/cxx/parser/type-processor.hxx
+++ /dev/null
@@ -1,32 +0,0 @@
-// file : xsd/cxx/parser/type-processor.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_TYPE_PROCESSOR_HXX
-#define CXX_PARSER_TYPE_PROCESSOR_HXX
-
-#include <xsd-frontend/semantic-graph.hxx>
-
-#include <types.hxx>
-
-#include <type-map/type-map.hxx>
-
-#include <cxx/parser/options.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- class TypeProcessor
- {
- public:
- void
- process (options const&,
- XSDFrontend::SemanticGraph::Schema&,
- bool gen_driver,
- TypeMap::Namespaces&);
- };
- }
-}
-
-#endif // CXX_PARSER_TYPE_PROCESSOR_HXX
diff --git a/xsd/xsd/cxx/parser/validator.cxx b/xsd/xsd/cxx/parser/validator.cxx
deleted file mode 100644
index da9f8b0..0000000
--- a/xsd/xsd/cxx/parser/validator.cxx
+++ /dev/null
@@ -1,719 +0,0 @@
-// file : xsd/cxx/parser/validator.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <set>
-#include <iostream>
-
-#include <cxx/parser/validator.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <cxx/parser/elements.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Parser
- {
- namespace
- {
- class ValidationContext: public Context
- {
- public:
- ValidationContext (SemanticGraph::Schema& root,
- SemanticGraph::Path const& path,
- Parser::options const& ops,
- const WarningSet& disabled_warnings,
- bool& valid_)
- : Context (std::wcerr, root, path, ops, 0, 0, 0, 0),
- disabled_warnings_ (disabled_warnings),
- disabled_warnings_all_ (false),
- valid (valid_),
- subst_group_warning_issued (subst_group_warning_issued_),
- subst_group_warning_issued_ (false)
- {
- }
-
- public:
- bool
- is_disabled (char const* w)
- {
- return disabled_warnings_all_ ||
- disabled_warnings_.find (w) != disabled_warnings_.end ();
- }
-
- public:
- String
- xpath (SemanticGraph::Nameable& n)
- {
- if (n.is_a<SemanticGraph::Namespace> ())
- return L"<namespace-level>"; // There is a bug if you see this.
-
- assert (n.named_p ());
-
- SemanticGraph::Scope& scope (n.scope ());
-
- if (scope.is_a<SemanticGraph::Namespace> ())
- return n.name ();
-
- return xpath (scope) + L"/" + n.name ();
- }
-
- protected:
- ValidationContext (ValidationContext& c)
- : Context (c),
- disabled_warnings_ (c.disabled_warnings_),
- disabled_warnings_all_ (c.disabled_warnings_all_),
- valid (c.valid),
- subst_group_warning_issued (c.subst_group_warning_issued)
- {
- }
-
- protected:
- const WarningSet& disabled_warnings_;
- bool disabled_warnings_all_;
- bool& valid;
- bool& subst_group_warning_issued;
- bool subst_group_warning_issued_;
- };
-
- //
- //
- struct Any: Traversal::Any, ValidationContext
- {
- Any (ValidationContext& c)
- : ValidationContext (c)
- {
- }
-
- struct Element: Traversal::Element, ValidationContext
- {
- Element (ValidationContext& c, SemanticGraph::Any& any)
- : ValidationContext (c),
- any_ (any),
- ns_ (any.definition_namespace ().name ())
- {
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (skip (e)) return;
-
- using SemanticGraph::Any;
-
- bool q (e.qualified_p ());
- String ns (q ? e.namespace_ ().name () : "");
-
- for (Any::NamespaceIterator i (any_.namespace_begin ());
- i != any_.namespace_end (); ++i)
- {
- bool failed (false);
-
- if (*i == L"##any")
- {
- failed = true;
- }
- else if (*i == L"##other")
- {
- if (ns_)
- {
- // Note that here I assume that ##other does not
- // include names without target namespace. This
- // is not what the spec says but that seems to be
- // the consensus.
- //
- failed = q && ns != ns_;
- }
- else
- {
- // No target namespace.
- //
- failed = q && ns != L"";
- }
- }
- else if (*i == L"##local")
- {
- failed = !q || ns == L"";
- }
- else if (*i == L"##targetNamespace")
- {
- failed = (q && ns_ == ns) || (!q && ns_ == L"");
- }
- else
- {
- failed = q && *i == ns;
- }
-
- if (failed)
- {
- Any& a (any_);
-
- os << a.file () << ":" << a.line () << ":" << a.column ()
- << ": warning P001: namespace '" << *i << "' allows for "
- << "element '" << e.name () << "'" << endl;
-
- os << a.file () << ":" << a.line () << ":" << a.column ()
- << ": warning P001: generated code may not associate element '"
- << e.name () << "' correctly if it appears in place of "
- << "this wildcard" << endl;
-
- os << e.file () << ":" << e.line () << ":" << e.column ()
- << ": info: element '" << e.name () << "' is defined "
- << "here" << endl;
-
- os << a.file () << ":" << a.line () << ":" << a.column ()
- << ": info: turn on validation to ensure correct "
- << "association" << endl;
- }
- }
- }
-
- private:
- SemanticGraph::Any& any_;
- String ns_;
- };
-
- struct Complex: Traversal::Complex
- {
- Complex ()
- : up_ (true), down_ (true)
- {
- }
-
- virtual void
- post (Type& c)
- {
- // Go down the inheritance hierarchy.
- //
- if (down_)
- {
- bool up = up_;
- up_ = false;
-
- if (c.inherits_p ())
- dispatch (c.inherits ().base ());
-
- up_ = up;
- }
-
- // Go up the inheritance hierarchy.
- //
- if (up_)
- {
- bool down = down_;
- down_ = false;
-
- for (Type::BegetsIterator i (c.begets_begin ());
- i != c.begets_end (); ++i)
- {
- dispatch (i->derived ());
- }
-
- down_ = down;
- }
- }
-
- private:
- bool up_, down_;
- };
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- using SemanticGraph::Compositor;
-
- // Find our complex type.
- //
- Compositor* c (&a.contained_particle ().compositor ());
-
- while(!c->contained_compositor_p ())
- c = &c->contained_particle ().compositor ();
-
- SemanticGraph::Complex& type (
- dynamic_cast<SemanticGraph::Complex&> (
- c->contained_compositor ().container ()));
-
- Complex complex;
- Traversal::Names names;
- Element element (*this, a);
-
- complex >> names >> element;
-
- complex.dispatch (type);
- }
- };
-
-
- //
- //
- struct Traverser: Traversal::Schema,
- Traversal::Complex,
- Traversal::Type,
- Traversal::Element,
- ValidationContext
- {
- Traverser (ValidationContext& c)
- : ValidationContext (c),
- any_ (c)
- {
- *this >> sources_ >> *this;
- *this >> schema_names_ >> ns_ >> names_ >> *this;
-
- // Any
- //
- if (!validation && !is_disabled ("P001"))
- {
- *this >> contains_compositor_ >> compositor_ >> contains_particle_;
- contains_particle_ >> compositor_;
- contains_particle_ >> any_;
- }
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- using SemanticGraph::Schema;
-
- traverse (static_cast<SemanticGraph::Type&> (c));
-
- if (c.inherits_p ())
- {
- SemanticGraph::Type& t (c.inherits ().base ());
-
- if (t.named_p () &&
- types_.find (
- t.scope ().name () + L"#" + t.name ()) == types_.end ())
- {
- // Don't worry about types that are in included/imported
- // schemas.
- //
- Schema& s (dynamic_cast<Schema&> (t.scope ().scope ()));
-
- if (&s == &schema_root || sources_p (schema_root, s))
- {
- valid = false;
-
- wcerr << c.file () << ":" << c.line () << ":" << c.column ()
- << ": error: type '" << xpath (c) << "' inherits from "
- << "yet undefined type '" << xpath (t) << "'" << endl;
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << ": info: '" << xpath (t) << "' is defined here"
- << endl;
-
- wcerr << c.file () << ":" << c.line () << ":" << c.column ()
- << ": info: inheritance from a yet-undefined type is "
- << "not supported" << endl;
-
- wcerr << c.file () << ":" << c.line () << ":" << c.column ()
- << ": info: re-arrange your schema and try again"
- << endl;
- }
- }
- }
-
- Complex::traverse (c);
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- if (t.named_p ())
- {
- types_.insert (t.scope ().name () + L"#" + t.name ());
- }
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (is_disabled ("P002"))
- return;
-
- if (e.substitutes_p () &&
- !options.generate_polymorphic () &&
- !subst_group_warning_issued)
- {
- subst_group_warning_issued = true;
-
- os << e.file () << ":" << e.line () << ":" << e.column ()
- << ": warning P002: substitution groups are used but "
- << "--generate-polymorphic was not specified" << endl;
-
- os << e.file () << ":" << e.line () << ":" << e.column ()
- << ": info: generated code may not be able to parse "
- << "some conforming instances" << endl;
- }
- }
-
- // Return true if root sources s.
- //
- bool
- sources_p (SemanticGraph::Schema& root, SemanticGraph::Schema& s)
- {
- using SemanticGraph::Schema;
- using SemanticGraph::Sources;
-
- for (Schema::UsesIterator i (root.uses_begin ());
- i != root.uses_end (); ++i)
- {
- if (i->is_a<Sources> ())
- {
- if (&i->schema () == &s || sources_p (i->schema (), s))
- return true;
- }
- }
-
- return false;
- }
-
- private:
- set<String> types_;
-
- Sources sources_;
-
- Traversal::Names schema_names_;
- Traversal::Namespace ns_;
-
- Traversal::Names names_;
-
- // Any.
- //
- Any any_;
- Traversal::Compositor compositor_;
- Traversal::ContainsParticle contains_particle_;
- Traversal::ContainsCompositor contains_compositor_;
- };
-
-
- struct AnonymousType: Traversal::Schema,
- Traversal::Complex,
- Traversal::Element,
- Traversal::Attribute,
- ValidationContext
- {
- AnonymousType (ValidationContext& c)
- : ValidationContext (c),
- anonymous_error_issued_ (false)
- {
- *this >> sources_ >> *this;
- *this >> schema_names_ >> ns_ >> names_ >> *this;
- *this >> names_;
- }
-
- bool
- traverse_common (SemanticGraph::Member& m)
- {
- SemanticGraph::Type& t (m.type ());
-
- if (!t.named_p ()
- && !t.is_a<SemanticGraph::Fundamental::IdRef> ()
- && !t.is_a<SemanticGraph::Fundamental::IdRefs> ())
- {
- if (!anonymous_error_issued_)
- {
- valid = false;
- anonymous_error_issued_ = true;
-
- wcerr << t.file ()
- << ": error: anonymous types detected"
- << endl;
-
- wcerr << t.file ()
- << ": info: "
- << "anonymous types are not supported in this mapping"
- << endl;
-
- wcerr << t.file ()
- << ": info: consider explicitly naming these types or "
- << "remove the --preserve-anonymous option to "
- << "automatically name them"
- << endl;
-
- if (!options.show_anonymous ())
- wcerr << t.file ()
- << ": info: use --show-anonymous option to see these "
- << "types" << endl;
- }
-
- return true;
- }
-
- return false;
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (skip (e)) return;
-
- if (traverse_common (e))
- {
- if (options.show_anonymous ())
- {
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": error: element '" << xpath (e) << "' "
- << "is of anonymous type" << endl;
- }
- }
- else
- Traversal::Element::traverse (e);
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- if (traverse_common (a))
- {
- if (options.show_anonymous ())
- {
- wcerr << a.file () << ":" << a.line () << ":" << a.column ()
- << ": error: attribute '" << xpath (a) << "' "
- << "is of anonymous type" << endl;
- }
- }
- else
- Traversal::Attribute::traverse (a);
- }
-
- private:
- bool anonymous_error_issued_;
-
- set<String> types_;
-
- Sources sources_;
-
- Traversal::Names schema_names_;
- Traversal::Namespace ns_;
-
- Traversal::Names names_;
- };
-
- struct GlobalElement: Traversal::Element, ValidationContext
- {
- GlobalElement (ValidationContext& c, SemanticGraph::Element*& element)
- : ValidationContext (c), element_ (element)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (!valid)
- return;
-
- if (options.root_element_first ())
- {
- if (element_ == 0)
- element_ = &e;
- }
- else if (options.root_element_last ())
- {
- element_ = &e;
- }
- else if (String name = options.root_element ())
- {
- if (e.name () == name)
- element_ = &e;
- }
- else
- {
- if (element_ == 0)
- element_ = &e;
- else
- {
- wcerr << schema_root.file () << ": error: unable to generate "
- << "the test driver without a unique document root"
- << endl;
-
- wcerr << schema_root.file () << ": info: use --root-element-* "
- << "options to specify the document root" << endl;
-
- valid = false;
- }
- }
- }
-
- private:
- SemanticGraph::Element*& element_;
- };
-
- }
-
- bool Validator::
- validate (options const& ops,
- SemanticGraph::Schema& root,
- SemanticGraph::Path const& path,
- bool gen_driver,
- const WarningSet& disabled_warnings)
- {
- bool valid (true);
- ValidationContext ctx (root, path, ops, disabled_warnings, valid);
-
- //
- //
- if (ops.char_type () != "char" &&
- ops.char_type () != "wchar_t" &&
- !ctx.is_disabled ("P003"))
- {
- wcerr << "warning P003: unknown base character type '" <<
- ops.char_type ().c_str () << "'" << endl;
- }
-
- //
- //
- if (ops.xml_parser () != "xerces" &&
- ops.xml_parser () != "expat" &&
- !ctx.is_disabled ("P004"))
- {
- wcerr << "warning P004: unknown underlying XML parser '" <<
- ops.xml_parser ().c_str () << "'" << endl;
- }
-
- //
- //
- if (ops.xml_parser () == "expat" &&
- ops.char_type () == "wchar_t")
- {
- wcerr << "error: using expat with wchar_t is not supported"
- << endl;
-
- return false;
- }
-
- //
- //
- if (ops.xml_parser () == "expat" &&
- !ops.char_encoding ().empty () &&
- ops.char_encoding () != "utf8")
- {
- wcerr << "error: using expat with character encoding other than "
- << "utf8 is not supported"
- << endl;
-
- return false;
- }
-
- //
- //
- if (ops.generate_validation () && ops.suppress_validation ())
- {
- wcerr << "error: mutually exclusive options specified: "
- << "--generate-validation and --suppress-validation"
- << endl;
-
- return false;
- }
-
- //
- //
- if (ops.generate_noop_impl () && ops.generate_print_impl ())
- {
- wcerr << "error: mutually exclusive options specified: "
- << "--generate-noop-impl and --generate-print-impl"
- << endl;
-
- return false;
- }
-
- //
- //
- {
- bool ref (ops.root_element_first ());
- bool rel (ops.root_element_last ());
- bool re (ops.root_element ());
-
- if ((ref && rel) || (ref && re) || (rel && re))
- {
- wcerr << "error: mutually exclusive options specified: "
- << "--root-element-last, --root-element-first, and "
- << "--root-element"
- << endl;
-
- return false;
- }
- }
-
- //
- //
- bool import_maps (ops.import_maps ());
- bool export_maps (ops.export_maps ());
-
- if (import_maps && export_maps)
- {
- wcerr << "error: --import-maps and --export-maps are "
- << "mutually exclusive" << endl;
-
- return false;
- }
-
- if (import_maps && !ctx.polymorphic)
- {
- wcerr << "error: --import-maps can only be specified together with "
- << "--generate-polymorphic" << endl;
-
- return false;
- }
-
- if (export_maps && !ctx.polymorphic)
- {
- wcerr << "error: --export-maps can only be specified together with "
- << "--generate-polymorphic" << endl;
-
- return false;
- }
-
- // Test for anonymout types.
- //
- {
- AnonymousType traverser (ctx);
- traverser.dispatch (root);
- }
-
-
- // Test the rest.
- //
- if (valid)
- {
- Traverser traverser (ctx);
- traverser.dispatch (root);
- }
-
- // Test that the document root is unique.
- //
- if (valid && gen_driver)
- {
- SemanticGraph::Element* element (0);
-
- Traversal::Schema schema;
- Sources sources;
-
- schema >> sources >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- GlobalElement global_element (ctx, element);
-
- schema >> schema_names >> ns >> ns_names >> global_element;
-
- schema.dispatch (root);
-
- if (valid && element == 0)
- {
- wcerr << root.file () << ": error: unable to generate the "
- << "test driver without a global element (document root)"
- << endl;
-
- valid = false;
- }
- }
-
- return valid;
- }
- }
-}
diff --git a/xsd/xsd/cxx/parser/validator.hxx b/xsd/xsd/cxx/parser/validator.hxx
deleted file mode 100644
index c67cced..0000000
--- a/xsd/xsd/cxx/parser/validator.hxx
+++ /dev/null
@@ -1,31 +0,0 @@
-// file : xsd/cxx/parser/validator.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_PARSER_VALIDATOR_HXX
-#define CXX_PARSER_VALIDATOR_HXX
-
-#include <xsd.hxx>
-#include <types.hxx>
-
-#include <cxx/parser/elements.hxx>
-#include <cxx/parser/options.hxx>
-
-namespace CXX
-{
- namespace Parser
- {
- class Validator
- {
- public:
- bool
- validate (options const&,
- SemanticGraph::Schema&,
- SemanticGraph::Path const& tu,
- bool gen_driver,
- const WarningSet& disabled_warnings);
- };
- }
-}
-
-#endif // CXX_PARSER_VALIDATOR_HXX
diff --git a/xsd/xsd/cxx/tree/counter.cxx b/xsd/xsd/cxx/tree/counter.cxx
deleted file mode 100644
index 23fc221..0000000
--- a/xsd/xsd/cxx/tree/counter.cxx
+++ /dev/null
@@ -1,261 +0,0 @@
-// file : xsd/cxx/tree/counter.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/counter.hxx>
-
-#include <iostream>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct Member: Traversal::Member
- {
- Member (size_t& complexity)
- : complexity_ (complexity)
- {
- }
-
- virtual void
- traverse (Type&)
- {
- complexity_++;
- }
-
- size_t& complexity_;
- };
-
- struct Any: Traversal::Any, Traversal::AnyAttribute
- {
- Any (size_t& complexity)
- : complexity_ (complexity)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any&)
- {
- complexity_++;
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute&)
- {
- complexity_++;
- }
-
- size_t& complexity_;
- };
-
- struct TypeBase: Traversal::List,
- Traversal::Union,
- Traversal::Enumeration,
- Traversal::Complex,
- Context
- {
- TypeBase (Context& c, size_t& complexity)
- : Context (c), complexity_ (complexity)
- {
- }
-
- virtual void
- traverse (SemanticGraph::List&)
- {
- complexity_++;
- }
-
- virtual void
- traverse (SemanticGraph::Union&)
- {
- complexity_++;
- }
-
- virtual void
- traverse (SemanticGraph::Enumeration& e)
- {
- bool string_based (false);
- {
- IsStringBasedType t (string_based);
- t.dispatch (e);
- }
-
- complexity_ += (string_based ? 1 : 2);
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- complexity_++; // One for the type itself.
-
- // Plus some for each member.
- //
- Any any (complexity_);
- Member member (complexity_);
- Traversal::Names names;
-
- names >> member;
-
- if (options.generate_wildcard ())
- names >> any;
-
- Complex::names (c, names);
- }
-
- private:
- size_t& complexity_;
- };
-
-
- //
- //
- struct GlobalType: Traversal::Type, Context
-
- {
- GlobalType (Context& c, Counts& counts)
- : Context (c), counts_ (counts)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- counts_.global_types++;
-
- size_t complexity (0);
- TypeBase type (*this, complexity);
- type.dispatch (t);
-
- counts_.complexity_total += complexity;
- counts_.complexity.push_back (complexity);
- }
-
- private:
- Counts& counts_;
- };
-
- //
- //
- struct GlobalElement: Traversal::Element,
- GlobalElementBase,
- Context
- {
- GlobalElement (Context& c, Counts& counts)
- : GlobalElementBase (c),
- Context (c),
- counts_ (counts),
- last_ (0)
- {
- }
-
- ~GlobalElement ()
- {
- if (last_ != 0)
- {
- last_->context ().set ("last", true);
- count_last ();
- }
- }
-
- virtual void
- traverse (Type& e)
- {
- // Check if the previous element we saw needs to be generated.
- //
- if (last_ != 0)
- count_last ();
-
- last_ = &e;
-
- if (counts_.global_elements == 0)
- e.context ().set ("first", true);
-
- counts_.global_elements++;
- }
-
- private:
- void
- count_last ()
- {
- if (generate_p (*last_))
- {
- counts_.generated_global_elements++;
-
- size_t complexity (0);
-
- if (doc_root_p (*last_))
- {
- if (options.generate_element_type ())
- {
- complexity += 1; // For c-tors and d-tor.
-
- if (!options.suppress_parsing ())
- complexity += 1;
-
- if (options.generate_serialization ())
- complexity += 1;
- }
- else
- {
- if (!options.suppress_parsing ())
- complexity += 6; // 13 parsing functions.
-
- if (options.generate_serialization ())
- complexity += 4; // 8 serialization functions.
- }
- }
-
- if (complexity == 0)
- {
- // This element must be a substitution group members. For
- // such elements we are only generating an entry in a map.
- // We will assign it a complexity of 1 so that we don't
- // end up with the total complexity that is less than the
- // number of elements and types.
- //
- complexity = 1;
- }
-
- counts_.complexity_total += complexity;
- counts_.complexity.push_back (complexity);
- }
- }
-
- private:
- Counts& counts_;
- SemanticGraph::Element* last_;
- };
- }
-
- Counts Counter::
- count (options const& ops,
- SemanticGraph::Schema& tu,
- SemanticGraph::Path const& path)
- {
- Counts counts;
- Context ctx (std::wcerr, tu, path, ops, counts, false, 0, 0, 0, 0);
-
- Traversal::Schema schema;
- Sources sources;
-
- schema >> sources >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- GlobalType global_type (ctx, counts);
- GlobalElement global_element (ctx, counts);
-
- schema >> schema_names >> ns >> ns_names;
-
- ns_names >> global_element;
- ns_names >> global_type;
-
- schema.dispatch (tu);
-
- return counts;
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/counter.hxx b/xsd/xsd/cxx/tree/counter.hxx
deleted file mode 100644
index ea1a3c3..0000000
--- a/xsd/xsd/cxx/tree/counter.hxx
+++ /dev/null
@@ -1,26 +0,0 @@
-// file : xsd/cxx/tree/counter.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_COUNTER_HXX
-#define CXX_TREE_COUNTER_HXX
-
-#include <cxx/tree/elements.hxx>
-#include <cxx/tree/options.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- class Counter
- {
- public:
- Counts
- count (options const&,
- SemanticGraph::Schema&,
- SemanticGraph::Path const&);
- };
- }
-}
-
-#endif // CXX_TREE_COUNTER_HXX
diff --git a/xsd/xsd/cxx/tree/default-value.cxx b/xsd/xsd/cxx/tree/default-value.cxx
deleted file mode 100644
index 4f27d7f..0000000
--- a/xsd/xsd/cxx/tree/default-value.cxx
+++ /dev/null
@@ -1,1274 +0,0 @@
-// file : xsd/cxx/tree/default-value.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/default-value.hxx>
-
-using std::hex;
-using std::dec;
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- void
- normalize (String& s)
- {
- size_t n (s.size ());
-
- for (size_t i (0); i < n; ++i)
- {
- wchar_t& c (s[i]);
-
- if (c == 0x0D || // carriage return
- c == 0x09 || // tab
- c == 0x0A)
- c = 0x20;
- }
- }
-
- void
- collapse (String& s)
- {
- size_t n (s.size ()), j (0);
- bool subs (false), trim (true);
-
- for (size_t i (0); i < n; ++i)
- {
- wchar_t c (s[i]);
-
- if (c == 0x20 || c == 0x09 || c == 0x0A)
- subs = true;
- else
- {
- if (subs)
- {
- subs = false;
-
- if (!trim)
- s[j++] = 0x20;
- }
-
- if (trim)
- trim = false;
-
- s[j++] = c;
- }
- }
-
- s.resize (j);
- }
-
- void
- strip_zeros (String& s)
- {
- size_t n (s.size ()), i (0);
-
- if (n > 0 && (s[i] == '-' || s[i] == '+'))
- i++;
-
- size_t j (i);
-
- bool strip (true);
-
- for (; i < n; ++i)
- {
- wchar_t c (s[i]);
-
- if (c == '0')
- {
- if (!strip)
- s[j++] = c;
- }
- else
- {
- s[j++] = c;
-
- if (strip)
- strip = false;
- }
- }
-
- if (strip && j < n)
- s[j++] = '0'; // There was nothing except zeros so add one back.
-
- s.resize (j);
- }
-
- void
- make_float (String& s)
- {
- if (s.find ('.') == String::npos &&
- s.find ('e') == String::npos &&
- s.find ('E') == String::npos)
- s += L".0";
- }
- }
-
- //
- // IsLiteralValue
- //
-
- IsLiteralValue::
- IsLiteralValue (bool& r)
- : IsFundamentalType (r)
- {
- *this >> inherits_ >> *this;
- }
-
- void IsLiteralValue::
- traverse (SemanticGraph::Complex& c)
- {
- inherits (c);
- }
-
- //
- // LiteralValue
- //
-
- LiteralValue::
- LiteralValue (Context& c)
- : Context (c)
- {
- *this >> inherits_ >> *this;
- }
-
- String LiteralValue::
- dispatch (SemanticGraph::Node& type, String const& value)
- {
- literal_.clear ();
- value_ = value;
- Traversal::NodeBase::dispatch (type);
- return literal_;
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Complex& c)
- {
- inherits (c);
- }
-
- // Boolean.
- //
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::Boolean&)
- {
- collapse (value_);
- literal_ = (value_ == L"true" || value_ == L"1") ? L"true" : L"false";
- }
-
- // Integral types.
- //
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::Byte&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_;
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::UnsignedByte&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_ + L"U";
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::Short&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_;
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::UnsignedShort&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_ + L"U";
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::Int&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_;
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::UnsignedInt&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_ + L"U";
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::Long&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_;
- literal_ += L"LL";
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::UnsignedLong&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_;
- literal_ += L"ULL";
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::Integer&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_ + L"LL";
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::NonPositiveInteger&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_ + L"LL";
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::NonNegativeInteger&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_ + L"ULL";
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::PositiveInteger&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_ + L"ULL";
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::NegativeInteger&)
- {
- collapse (value_);
- strip_zeros (value_);
- literal_ = value_ + L"LL";
- }
-
- // Floats.
- //
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- collapse (value_);
-
- if (value_ == L"NaN")
- {
- literal_ = L"::std::numeric_limits< " + fq_name (t) +
- L" >::quiet_NaN ()";
- }
- else if (value_ == L"INF")
- {
- literal_ = L"::std::numeric_limits< " + fq_name (t) +
- L" >::infinity ()";
- }
- else if (value_ == L"-INF")
- {
- literal_ = L"- ::std::numeric_limits< " + fq_name (t) +
- L" >::infinity ()";
- }
- else
- {
- strip_zeros (value_);
- make_float (value_);
- literal_ = value_ + L"F";
- }
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- collapse (value_);
-
- if (value_ == L"NaN")
- {
- literal_ = L"::std::numeric_limits< " + fq_name (t) +
- L" >::quiet_NaN ()";
- }
- else if (value_ == L"INF")
- {
- literal_ = L"::std::numeric_limits< " + fq_name (t) +
- L" >::infinity ()";
- }
- else if (value_ == L"-INF")
- {
- literal_ = L"- ::std::numeric_limits< " + fq_name (t) +
- L" >::infinity ()";
- }
- else
- {
- strip_zeros (value_);
- make_float (value_);
- literal_ = value_;
- }
- }
-
- void LiteralValue::
- traverse (SemanticGraph::Fundamental::Decimal&)
- {
- collapse (value_);
- strip_zeros (value_);
- make_float (value_);
- literal_ = value_;
- }
-
- //
- // InitKind
- //
-
- InitKind::
- InitKind (Kind& r)
- : r_ (r)
- {
- *this >> inherits_ >> *this;
- }
-
- void InitKind::
- traverse (SemanticGraph::List&)
- {
- r_ = function;
- }
-
- void InitKind::
- traverse (SemanticGraph::Complex& c)
- {
- inherits (c);
- }
-
- void InitKind::
- traverse (SemanticGraph::Fundamental::Base64Binary&)
- {
- r_ = data;
- }
-
- void InitKind::
- traverse (SemanticGraph::Fundamental::HexBinary&)
- {
- r_ = data;
- }
-
- void InitKind::
- traverse (SemanticGraph::Fundamental::NameTokens&)
- {
- r_ = function;
- }
-
- void InitKind::
- traverse (SemanticGraph::Fundamental::IdRefs&)
- {
- r_ = function;
- }
-
- void InitKind::
- traverse (SemanticGraph::Fundamental::Entities&)
- {
- r_ = function;
- }
-
- //
- // InitValue
- //
-
- InitValue::
- InitValue (Context& c)
- : Context (c), type_name_ (c), literal_value_ (c)
- {
- }
-
- void InitValue::
- dispatch (SemanticGraph::Node& type, String const& value)
- {
- value_ = value;
- Traversal::NodeBase::dispatch (type);
- }
-
- void InitValue::
- traverse (SemanticGraph::List& l)
- {
- collapse (value_);
-
- if (!value_)
- return;
-
- SemanticGraph::Type& t (l.argumented ().type ());
-
- String ov (value_);
- size_t b (0);
-
- for (size_t e (ov.find (' ')); ; e = ov.find (' ', b))
- {
- String v (ov, b, e != String::npos ? e - b : e);
-
- os << "{";
- type_name_.dispatch (t);
- os << " tmp (";
-
- String lit (literal_value_.dispatch (t, v));
-
- if (lit)
- os << lit;
- else
- {
- value_ = v;
- Traversal::NodeBase::dispatch (t);
- }
-
- os << ");"
- << "r.push_back (tmp);"
- << "}";
-
- if (e == String::npos)
- break;
-
- b = e + 1;
- }
-
- value_ = ov;
- }
-
- void InitValue::
- traverse (SemanticGraph::Union&)
- {
- os << strlit (value_);
- }
-
- void InitValue::
- traverse (SemanticGraph::Complex& c)
- {
- Traversal::NodeBase::dispatch (ultimate_base (c));
- }
-
- // anyType & anySimpleType.
- //
- void InitValue::
- traverse (SemanticGraph::AnyType& t)
- {
- os << fq_name (t) << " (" << strlit (value_) << ")";
- }
-
- void InitValue::
- traverse (SemanticGraph::AnySimpleType& t)
- {
- os << fq_name (t) << " (" << strlit (value_) << ")";
- }
-
- // Strings.
- //
- void InitValue::
- traverse (SemanticGraph::Fundamental::String&)
- {
- os << strlit (value_);
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::NormalizedString&)
- {
- normalize (value_);
- os << strlit (value_);
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::Token&)
- {
- collapse (value_);
- os << strlit (value_);
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::NameToken&)
- {
- collapse (value_);
- os << strlit (value_);
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::NameTokens&)
- {
- string_sequence_type (
- dynamic_cast<SemanticGraph::Type&> (
- xs_ns ().find ("NMTOKEN").first->named ()));
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::Name&)
- {
- collapse (value_);
- os << strlit (value_);
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::NCName&)
- {
- collapse (value_);
- os << strlit (value_);
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::Language&)
- {
- collapse (value_);
- os << strlit (value_);
- }
-
- // Qualified name.
- //
- void InitValue::
- traverse (SemanticGraph::Fundamental::QName& t)
- {
- size_t p (value_.rfind ('#'));
-
- if (p != String::npos)
- {
- String ns (value_, 0, p);
- String qname (value_, p + 1, String::npos);
-
- collapse (ns);
- collapse (qname);
-
- p = qname.find (':');
-
- String name;
- if (p != String::npos)
- name.assign (qname, p + 1, String::npos);
- else
- name = qname;
-
- os << fq_name (t) << " (" << strlit (ns) << ", " <<
- strlit (name) << ")";
- }
- else
- {
- // Unqualified name.
- //
- collapse (value_);
- os << fq_name (t) << " (" << strlit (value_) << ")";
- }
- }
-
- // ID/IDREF.
- //
- void InitValue::
- traverse (SemanticGraph::Fundamental::Id&)
- {
- collapse (value_);
- os << strlit (value_);
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::IdRef&)
- {
- collapse (value_);
- os << strlit (value_);
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::IdRefs&)
- {
- string_sequence_type (
- dynamic_cast<SemanticGraph::Type&> (
- xs_ns ().find ("IDREF").first->named ()));
- }
-
- // URI.
- //
- void InitValue::
- traverse (SemanticGraph::Fundamental::AnyURI&)
- {
- collapse (value_);
- os << strlit (value_);
- }
-
- // Binary.
- //
- static unsigned char
- base64_decode (unsigned char c)
- {
- unsigned char r = 0xFF;
-
- if (c >= 'A' && c <= 'Z')
- r = static_cast<unsigned char> (c - 'A');
- else if (c >= 'a' && c <= 'z')
- r = static_cast<unsigned char> (c - 'a' + 26);
- else if (c >= '0' && c <= '9')
- r = static_cast<unsigned char> (c - '0' + 52);
- else if (c == '+')
- r = 62;
- else if (c == '/')
- r = 63;
-
- return r;
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::Base64Binary& t)
- {
- collapse (value_);
-
- if (dispatch_count_++ == 0)
- {
- if (value_)
- {
- os << "unsigned char " << data_ << "[] = {";
-
- // Decode.
- //
- size_t size (value_.size ());
-
- // Remove all whitespaces.
- //
- {
- size_t j (0);
- bool subs (false);
-
- for (size_t i (0); i < size; ++i)
- {
- wchar_t c (value_[i]);
-
- if (c == 0x20 || c == 0x0A || c == 0x0D || c == 0x09)
- subs = true;
- else
- {
- if (subs)
- subs = false;
-
- value_[j++] = c;
- }
- }
-
- size = j;
- value_.resize (size, '\0');
- }
-
- // Our length should be a multiple of four.
- //
- size_t quad_count (size / 4);
-
- // Source and destination indexes.
- //
- size_t si (0), di (0);
-
- // Process all quads except the last one.
- //
- unsigned short v;
- unsigned char b1, b2, b3, b4;
-
- wchar_t prev_fill (os.fill ('0'));
-
- for (size_t q (0); q < quad_count - 1; ++q)
- {
- b1 = base64_decode (value_[si++]);
- b2 = base64_decode (value_[si++]);
- b3 = base64_decode (value_[si++]);
- b4 = base64_decode (value_[si++]);
-
- if (q != 0)
- os << ", ";
-
- if (di % 9 == 0)
- os << endl;
-
- os << hex;
-
- v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
- os.width (2);
- os << "0x" << v;
-
- v = static_cast<unsigned char> ((b2 << 4) | (b3 >> 2));
- os.width (2);
- os << ", 0x" << v;
-
- v = static_cast<unsigned char> ((b3 << 6) | b4);
- os.width (2);
- os << ", 0x" << v;
-
- os << dec;
-
- di += 3;
- }
-
- // Process the last quad. The first two octets are always there.
- //
- b1 = base64_decode (value_[si++]);
- b2 = base64_decode (value_[si++]);
-
- wchar_t e3 (value_[si++]), e4 (value_[si++]);
-
- if (quad_count != 1)
- os << ", ";
-
- if (di % 9 == 0)
- os << endl;
-
- if (e4 == '=')
- {
- if (e3 == '=')
- {
- // Two pads. Last 4 bits in b2 should be zero.
- //
- v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
- os << "0x" << hex << v << dec;
- di++;
- }
- else
- {
- // One pad. Last 2 bits in b3 should be zero.
- //
- b3 = base64_decode (e3);
-
- os << hex;
-
- v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
- os.width (2);
- os << "0x" << v;
-
- v = static_cast<unsigned char> ((b2 << 4) | (b3 >> 2));
- os.width (2);
- os << ", 0x" << v;
-
- os << dec;
-
- di += 2;
- }
- }
- else
- {
- // No pads.
- //
- b3 = base64_decode (e3);
- b4 = base64_decode (e4);
-
- os << hex;
-
- v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
- os.width (2);
- os << "0x" << v;
-
- v = static_cast<unsigned char> ((b2 << 4) | (b3 >> 2));
- os.width (2);
- os << ", 0x" << v;
-
- v = static_cast<unsigned char> ((b3 << 6) | b4);
- os.width (2);
- os << ", 0x" << v;
-
- os << dec;
-
- di += 3;
- }
-
- os.fill (prev_fill);
-
- os << "};";
- }
- }
- else
- {
- os << fq_name (t) << " (";
-
- if (value_)
- os << data_ << "," << endl
- << "sizeof (" << data_ << ")," << endl
- << "sizeof (" << data_ << ")," << endl
- << "false";
- else
- os << "0";
-
-
- os << ")";
- }
- }
-
- static unsigned char
- hex_decode (unsigned char c)
- {
- unsigned char r = 0xFF;
-
- if (c >= '0' && c <= '9')
- r = static_cast<unsigned char> (c - '0');
- else if (c >= 'A' && c <= 'F')
- r = static_cast<unsigned char> (10 + (c - 'A'));
- else if (c >= 'a' && c <= 'f')
- r = static_cast<unsigned char> (10 + (c - 'a'));
-
- return r;
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::HexBinary& t)
- {
- collapse (value_);
-
- if (dispatch_count_++ == 0)
- {
- if (value_)
- {
- os << "unsigned char " << data_ << "[] = {";
-
- // Decode.
- //
- size_t n (value_.size () / 2);
- wchar_t prev_fill (os.fill ('0'));
-
- for (size_t i (0); i < n; ++i)
- {
- unsigned char h (hex_decode (value_[2 * i]));
- unsigned char l (hex_decode (value_[2 * i + 1]));
-
- if (h == 0xFF || l == 0xFF)
- break;
-
- if (i != 0)
- os << ", ";
-
- if (i % 9 == 0)
- os << endl;
-
- unsigned short v = static_cast<unsigned char> ((h << 4) | l);
- os.width (2);
- os << "0x" << hex << v << dec;
- }
-
- os.fill (prev_fill);
-
- os << "};";
- }
- }
- else
- {
- os << fq_name (t) << " (";
-
- if (value_)
- os << data_ << "," << endl
- << "sizeof (" << data_ << ")," << endl
- << "sizeof (" << data_ << ")," << endl
- << "false";
- else
- os << "0";
-
-
- os << ")";
- }
- }
-
- // Date/time.
- //
- void InitValue::
- traverse (SemanticGraph::Fundamental::Date& t)
- {
- // date := [-]CCYY[N]*-MM-DD[Z|(+|-)HH:MM]
- //
- collapse (value_);
-
- size_t b (0);
- size_t e (value_.find ('-', value_[0] == '-' ? 5 : 4));
- String year (value_, 0, e);
-
- b = e + 1;
- String month (value_, b, 2);
-
- b += 3;
- String day (value_, b, 2);
-
- strip_zeros (year);
- strip_zeros (month);
- strip_zeros (day);
-
- os << fq_name (t) << " (" << year << ", " << month << ", " << day;
- time_zone (b + 2);
- os << ")";
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::DateTime& t)
- {
- // date_time := [-]CCYY[N]*-MM-DDTHH:MM:SS[.S+][Z|(+|-)HH:MM]
- //
- collapse (value_);
-
- size_t b (0);
- size_t e (value_.find ('-', value_[0] == '-' ? 5 : 4));
- String year (value_, 0, e);
- b = e + 1;
-
- String month (value_, b, 2);
- b += 3;
-
- String day (value_, b, 2);
- b += 3;
-
- String hours (value_, b, 2);
- b += 3;
-
- String minutes (value_, b, 2);
- b += 3;
-
- e = b + 2;
- for (; e < value_.size (); ++e)
- {
- wchar_t c (value_[e]);
-
- if (c == 'Z' || c == '+' || c == '-')
- break;
- }
-
- String seconds (value_, b, e - b);
-
- strip_zeros (year);
- strip_zeros (month);
- strip_zeros (day);
- strip_zeros (hours);
- strip_zeros (minutes);
- strip_zeros (seconds);
- make_float (seconds);
-
- os << fq_name (t) << " ("
- << year << ", " << month << ", " << day << ", "
- << hours << ", " << minutes << ", " << seconds;
- time_zone (e);
- os << ")";
- }
-
- namespace
- {
- size_t
- find_delim (String const& s, size_t pos)
- {
- for (; pos < s.size (); ++pos)
- {
- wchar_t c (s[pos]);
-
- if (c == 'Y' || c == 'D' || c == 'M' || c == 'H' ||
- c == 'M' || c == 'S' || c == 'T')
- break;
- }
-
- return pos;
- }
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::Duration& t)
- {
- // duration := [-]P[nY][nM][nD][TnHnMn[.n+]S]
- //
- collapse (value_);
-
- size_t b (1), e, n (value_.size ());
-
- os << fq_name (t) << " (";
-
- if (value_[0] == '-')
- {
- os << "true, ";
- b++;
- }
- else
- os << "false, ";
-
- e = find_delim (value_, b);
-
- if (e < n && value_[e] == 'Y')
- {
- String v (value_, b, e - b);
- strip_zeros (v);
- os << v << ", ";
-
- b = e + 1;
- e = find_delim (value_, b);
- }
- else
- os << "0, ";
-
- if (e < n && value_[e] == 'M')
- {
- String v (value_, b, e - b);
- strip_zeros (v);
- os << v << ", ";
-
- b = e + 1;
- e = find_delim (value_, b);
- }
- else
- os << "0, ";
-
- if (e < n && value_[e] == 'D')
- {
- String v (value_, b, e - b);
- strip_zeros (v);
- os << v << ", ";
-
- b = e + 1;
- e = find_delim (value_, b);
- }
- else
- os << "0, ";
-
- if (e < n && value_[e] == 'T')
- {
- b = e + 1;
- e = find_delim (value_, b);
- }
-
- if (e < n && value_[e] == 'H')
- {
- String v (value_, b, e - b);
- strip_zeros (v);
- os << v << ", ";
-
- b = e + 1;
- e = find_delim (value_, b);
- }
- else
- os << "0, ";
-
- if (e < n && value_[e] == 'M')
- {
- String v (value_, b, e - b);
- strip_zeros (v);
- os << v << ", ";
-
- b = e + 1;
- e = find_delim (value_, b);
- }
- else
- os << "0, ";
-
- if (e < n && value_[e] == 'S')
- {
- String v (value_, b, e - b);
- strip_zeros (v);
- make_float (v);
- os << v;
-
- b = e + 1;
- e = find_delim (value_, b);
- }
- else
- os << "0.0";
-
- os << ")";
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::Day& t)
- {
- // gday := ---DD[Z|(+|-)HH:MM]
- //
- collapse (value_);
-
- String day (value_, 3, 2);
- strip_zeros (day);
-
- os << fq_name (t) << " (" << day;
- time_zone (5);
- os << ")";
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::Month& t)
- {
- // gmonth := --MM[Z|(+|-)HH:MM]
- //
- collapse (value_);
-
- String month (value_, 2, 2);
- strip_zeros (month);
-
- os << fq_name (t) << " (" << month;
- time_zone (4);
- os << ")";
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::MonthDay& t)
- {
- // gmonth_day := --MM-DD[Z|(+|-)HH:MM]
- //
- collapse (value_);
-
- String month (value_, 2, 2);
- String day (value_, 5, 2);
-
- strip_zeros (month);
- strip_zeros (day);
-
- os << fq_name (t) << " (" << month << ", " << day;
- time_zone (7);
- os << ")";
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::Year& t)
- {
- // gyear := [-]CCYY[N]*[Z|(+|-)HH:MM]
- //
- collapse (value_);
-
- size_t pos (value_[0] == '-' ? 5 : 4);
- for (; pos < value_.size (); ++pos)
- {
- wchar_t c (value_[pos]);
-
- if (c == 'Z' || c == '+' || c == '-')
- break;
- }
-
- String year (value_, 0, pos);
- strip_zeros (year);
-
- os << fq_name (t) << " (" << year;
- time_zone (pos);
- os << ")";
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::YearMonth& t)
- {
- // gyear_month := [-]CCYY[N]*-MM[Z|(+|-)HH:MM]
- //
- collapse (value_);
-
- size_t pos (value_.find ('-', value_[0] == '-' ? 5 : 4));
-
- String year (value_, 0, pos);
- String month (value_, pos + 1, 2);
-
- strip_zeros (year);
- strip_zeros (month);
-
- os << fq_name (t) << " (" << year << ", " << month;
- time_zone (pos + 3);
- os << ")";
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::Time& t)
- {
- // time := HH:MM:SS[.S+][Z|(+|-)HH:MM]
- //
- collapse (value_);
-
- String hours (value_, 0, 2);
- String minutes (value_, 3, 2);
-
- size_t e (8);
- for (; e < value_.size (); ++e)
- {
- wchar_t c (value_[e]);
-
- if (c == 'Z' || c == '+' || c == '-')
- break;
- }
-
- String seconds (value_, 6, e - 6);
-
- strip_zeros (hours);
- strip_zeros (minutes);
- strip_zeros (seconds);
- make_float (seconds);
-
- os << fq_name (t) << " (" << hours << ", " << minutes << ", " << seconds;
- time_zone (e);
- os << ")";
- }
-
- void InitValue::
- time_zone (size_t pos)
- {
- // time_zone := Z|(+|-)HH:MM
- //
- if (pos < value_.size ())
- {
- String h, m;
-
- if (value_[pos] == 'Z')
- {
- h = "0";
- m = "0";
- }
- else
- {
- if (value_[pos] == '-')
- {
- h = "-";
- m = "-";
- }
-
- h.append (value_, pos + 1, 2);
- m.append (value_, pos + 4, 2);
-
- strip_zeros (h);
- strip_zeros (m);
- }
-
- os << ", " << h << ", " << m;
- }
- }
-
- // Entity.
- //
- void InitValue::
- traverse (SemanticGraph::Fundamental::Entity&)
- {
- collapse (value_);
- os << strlit (value_);
- }
-
- void InitValue::
- traverse (SemanticGraph::Fundamental::Entities&)
- {
- string_sequence_type (
- dynamic_cast<SemanticGraph::Type&> (
- xs_ns ().find ("ENTITY").first->named ()));
- }
-
- void InitValue::
- string_sequence_type (SemanticGraph::Type& t)
- {
- collapse (value_);
-
- if (!value_)
- return;
-
- size_t b (0);
-
- for (size_t e (value_.find (' ')); ; e = value_.find (' ', b))
- {
- String v (value_, b, e != String::npos ? e - b : e);
-
- os << "{";
- type_name_.dispatch (t);
- os << " tmp (" << strlit (v) << ");"
- << "r.push_back (tmp);"
- << "}";
-
- if (e == String::npos)
- break;
-
- b = e + 1;
- }
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/default-value.hxx b/xsd/xsd/cxx/tree/default-value.hxx
deleted file mode 100644
index eb91a8c..0000000
--- a/xsd/xsd/cxx/tree/default-value.hxx
+++ /dev/null
@@ -1,356 +0,0 @@
-// file : xsd/cxx/tree/default-value.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_DEFAULT_VALUE_HXX
-#define CXX_TREE_DEFAULT_VALUE_HXX
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- struct IsLiteralValue: IsFundamentalType, Traversal::Complex
- {
- IsLiteralValue (bool& r);
-
- virtual void
- traverse (SemanticGraph::Complex&);
-
- private:
- Traversal::Inherits inherits_;
- };
-
- struct LiteralValue: Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal,
-
- Traversal::Complex,
-
- Context
- {
- LiteralValue (Context&);
-
- String
- dispatch (SemanticGraph::Node& type, String const& value);
-
- // Handle inheritance.
- //
- virtual void
- traverse (SemanticGraph::Complex&);
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean&);
-
- // Integral types.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger&);
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal&);
-
- private:
- String value_;
- String literal_;
-
- Traversal::Inherits inherits_;
- };
-
- // Some initialization (e.g., list) need a function body while others
- // (e.g., *binary) require extra data.
- //
- struct InitKind: Traversal::List,
- Traversal::Complex,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary,
-
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::IdRefs,
- Traversal::Fundamental::Entities
- {
- enum Kind
- {
- simple,
- data,
- function
- };
-
- // Should be simple initially.
- //
- InitKind (Kind& r);
-
- virtual void
- traverse (SemanticGraph::List&);
-
- virtual void
- traverse (SemanticGraph::Complex&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Entities&);
-
- private:
- Kind& r_;
- Traversal::Inherits inherits_;
- };
-
- struct InitValue: Traversal::List,
- Traversal::Union,
- Traversal::Complex,
-
- Traversal::AnyType,
- Traversal::AnySimpleType,
-
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Language,
-
- Traversal::Fundamental::QName,
-
- Traversal::Fundamental::Id,
- Traversal::Fundamental::IdRef,
- Traversal::Fundamental::IdRefs,
-
- Traversal::Fundamental::AnyURI,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary,
-
- Traversal::Fundamental::Date,
- Traversal::Fundamental::DateTime,
- Traversal::Fundamental::Duration,
- Traversal::Fundamental::Day,
- Traversal::Fundamental::Month,
- Traversal::Fundamental::MonthDay,
- Traversal::Fundamental::Year,
- Traversal::Fundamental::YearMonth,
- Traversal::Fundamental::Time,
-
- Traversal::Fundamental::Entity,
- Traversal::Fundamental::Entities,
-
- Context
- {
- InitValue (Context&);
-
- void
- data (String const& data)
- {
- data_ = data;
- dispatch_count_ = 0;
- }
-
- void
- dispatch (SemanticGraph::Node& type, String const& value);
-
- virtual void
- traverse (SemanticGraph::List&);
-
- virtual void
- traverse (SemanticGraph::Union&);
-
- virtual void
- traverse (SemanticGraph::Complex&);
-
- // anyType & anySimpleType.
- //
- virtual void
- traverse (SemanticGraph::AnyType&);
-
- virtual void
- traverse (SemanticGraph::AnySimpleType&);
-
- // Strings.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::String&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Language&);
-
- // Qualified name.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::QName&);
-
- // ID/IDREF.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Id&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRef&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs&);
-
- // URI.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::AnyURI&);
-
- // Binary.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary&);
-
- // Date/time.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Date&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::DateTime&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Duration&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Day&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Month&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::MonthDay&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Year&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::YearMonth&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Time&);
-
- // Entity.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Entity&);
-
- virtual void
- traverse (SemanticGraph::Fundamental::Entities&);
-
- private:
- void
- string_sequence_type (SemanticGraph::Type& element_type);
-
- void
- time_zone (size_t pos);
-
- private:
- String value_;
- String data_;
- size_t dispatch_count_;
- MemberTypeName type_name_;
- LiteralValue literal_value_;
- };
- }
-}
-
-#endif // CXX_TREE_DEFAULT_VALUE_HXX
diff --git a/xsd/xsd/cxx/tree/elements.cxx b/xsd/xsd/cxx/tree/elements.cxx
deleted file mode 100644
index 202ab62..0000000
--- a/xsd/xsd/cxx/tree/elements.cxx
+++ /dev/null
@@ -1,1379 +0,0 @@
-// file : xsd/cxx/tree/elements.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- // Context
- //
- Context::
- Context (std::wostream& o,
- SemanticGraph::Schema& root,
- SemanticGraph::Path const& path,
- options_type const& ops,
- Counts const& counts_,
- bool generate_xml_schema__,
- StringLiteralMap const* map,
- Regex const* fe,
- Regex const* he,
- Regex const* ie)
- : CXX::Context (o, root, path, ops, map),
- options (ops),
- counts (counts_),
- any_type (any_type_),
- any_simple_type (any_simple_type_),
- element_type (element_type_),
- container (container_),
- flags_type (flags_type_),
- qname_type (qname_type_),
- xs_string_type (xs_string_type_),
- properties_type (properties_type_),
- error_handler_type (error_handler_type_),
- list_stream_type (list_stream_type_),
- namespace_infomap_type (namespace_infomap_type_),
- parser_type (parser_type_),
- std_ostream_type (std_ostream_type_),
- ostream_type (ostream_type_),
- istream_type (istream_type_),
- xerces_ns (xerces_ns_),
- dom_auto_ptr (dom_auto_ptr_),
- dom_node_key (dom_node_key_),
- as_double_type (as_double_type_),
- as_decimal_type (as_decimal_type_),
- generate_xml_schema (generate_xml_schema_),
- doxygen (doxygen_),
- polymorphic (ops.generate_polymorphic ()),
- polymorphic_all (ops.polymorphic_type_all ()),
- poly_plate (ops.polymorphic_plate ()),
- detach (ops.generate_detach ()),
- fwd_expr (fe),
- hxx_expr (he),
- ixx_expr (ie),
- ns_scope (ns_scope_),
- regex_custom_type_map (regex_custom_type_map_),
- direct_custom_type_map (direct_custom_type_map_),
- qname_type_ (L"::xsd::cxx::xml::qualified_name< " + char_type + L" >"),
- parser_type_ (L"::xsd::cxx::xml::dom::parser< " + char_type + L" >"),
- generate_xml_schema_ (generate_xml_schema__),
- doxygen_ (ops.generate_doxygen ()),
- ns_scope_stack (ns_scope_stack_),
- cxx_uq_id_expr_ (L"^[a-zA-Z_]\\w*$"),
- cxx_uq_id_expr (cxx_uq_id_expr_)
- {
- SemanticGraph::Namespace& xs (xs_ns ());
- SemanticGraph::Context& xsc (xs.context ());
-
- // Cache some often-used names from the XML Schema namespace
- // if names have already been processed.
- //
- if (xsc.count ("container"))
- {
- String xs_name (ns_name (xs));
-
- any_type = fq_name (xs.find ("anyType").first->named ());
- any_simple_type = fq_name (xs.find ("anySimpleType").first->named ());
- xs_string_type = fq_name (xs.find ("string").first->named ());
-
- container = xs_name + L"::" + xsc.get<String> ("container");
- flags_type = xs_name + L"::" + xsc.get<String> ("flags");
-
- if (ops.generate_element_type ())
- element_type = xs_name + L"::" + xsc.get<String> ("element-type");
-
- properties_type = xs_name + L"::" + xsc.get<String> ("properties");
-
- if (!ops.suppress_parsing () || ops.generate_serialization ())
- {
- error_handler_type = xs_name + L"::" +
- xsc.get<String> ("error-handler");
- }
-
- dom_auto_ptr_ = xs_name + (std >= cxx_version::cxx11
- ? L"::dom::unique_ptr"
- : L"::dom::auto_ptr");
-
- dom_node_key_ = xs_name + L"::dom::" +
- xsc.get<String> ("tree-node-key");
-
- if (ops.generate_serialization ())
- {
- as_double_type_ = xs_name + L"::" +
- xsc.get<String> ("as-double");
-
- as_decimal_type_ = xs_name + L"::" +
- xsc.get<String> ("as-decimal");
-
- list_stream_type = xs_name + L"::" +
- xsc.get<String> ("list-stream");
-
- namespace_infomap_type = xs_name + L"::" +
- xsc.get<String> ("namespace-infomap");
- }
-
- // istream and ostream are templates and for now use the same
- // names regardless of the naming convention.
- //
- if (!ops.generate_extraction ().empty ())
- istream_type = xs_name + L"::istream";
-
- if (!ops.generate_insertion ().empty ())
- ostream_type = xs_name + L"::ostream";
- }
-
- // Xerces-C++ namespace. IntelliSense for some reason does not like
- // it fully-qualified (maybe because it's a namespace alias).
- //
- if (ops.generate_intellisense ())
- xerces_ns = "xercesc";
- else
- xerces_ns = "::xercesc";
-
- //
- //
- if (char_type == L"char")
- std_ostream_type_ = L"::std::ostream";
- else if (char_type == L"wchar_t")
- std_ostream_type_ = L"::std::wostream";
- else
- std_ostream_type_ = L"::std::basic_ostream< " + char_type + L" >";
-
- // Custom type mapping.
- //
-
- // Direct custom type mapping.
- //
- {
- NarrowStrings const& v (ops.custom_type ());
-
- for (NarrowStrings::const_iterator i (v.begin ()),
- e (v.end ()); i != e; ++i)
- {
- String s (*i);
-
- if (s.empty ())
- throw InvalidCustomTypeMapping (s, "mapping string is empty");
-
- // Split the string in two parts at the last '='.
- //
- size_t pos (s.rfind ('='));
-
- // If no delimiter found then both type and base are empty.
- //
- if (pos == String::npos)
- {
- direct_custom_type_map[s].type.clear ();
- direct_custom_type_map[s].base.clear ();
- continue;
- }
-
- String name (s, 0, pos);
- String rest (s, pos + 1);
-
- // See if we've got the base part after '/'.
- //
- pos = rest.rfind ('/');
-
- String type, base;
-
- if (pos != String::npos)
- {
- type.assign (rest, 0, pos);
- base.assign (rest, pos + 1, String::npos);
- }
- else
- type = rest;
-
- // type can be a potentially-qualified template-id. base is
- // an unqualified C++ name.
- //
-
- if (!base.empty () && !cxx_uq_id_expr.match (base))
- throw InvalidCustomTypeMapping (s, "invalid C++ identifier");
-
- direct_custom_type_map[name].type = type;
- direct_custom_type_map[name].base = base;
- }
- }
-
- // Regex custom type mapping.
- //
- {
- NarrowStrings const& v (ops.custom_type_regex ());
-
- for (NarrowStrings::const_iterator i (v.begin ()),
- e (v.end ()); i != e; ++i)
- {
- String s (*i);
-
- if (s.empty ())
- throw InvalidCustomTypeMapping (s, "mapping string is empty");
-
- wchar_t delimiter (s[0]);
-
- // First get pattern.
- //
- size_t pos (s.find (delimiter, 1));
-
- if (pos == String::npos)
- throw InvalidCustomTypeMapping (
- s, "missing pattern-substitution separator");
-
- String pat (s, 1, pos - 1);
- String rest (s, pos + 1);
-
- String type, base;
-
- // See if we've got type and base.
- //
- if (!rest.empty ())
- {
- pos = rest.find (delimiter);
-
- if (pos == String::npos)
- throw InvalidCustomTypeMapping (
- s, "missing pattern-substitution separator");
-
- type.assign (rest, 0, pos);
- rest = String (rest, pos + 1);
-
- if (!rest.empty ())
- {
- pos = rest.find (delimiter);
-
- if (pos == String::npos)
- throw InvalidCustomTypeMapping (
- s, "missing pattern-substitution separator");
-
- base.assign (rest, 0, pos);
- rest = String (rest, pos + 1);
-
- if (!rest.empty ())
- throw InvalidCustomTypeMapping (s, "invalid format");
- }
- }
-
- regex_custom_type_map.push_back (
- RegexCustomTypeMapInfo (WideRegexPat (pat), type, base));
- }
- }
- }
-
- Context::
- Context (Context& c)
- : CXX::Context (c),
- options (c.options),
- counts (c.counts),
- any_type (c.any_type),
- any_simple_type (c.any_simple_type),
- element_type (c.element_type),
- container (c.container),
- flags_type (c.flags_type),
- qname_type (c.qname_type),
- xs_string_type (c.xs_string_type),
- properties_type (c.properties_type),
- error_handler_type (c.error_handler_type),
- list_stream_type (c.list_stream_type),
- namespace_infomap_type (c.namespace_infomap_type),
- parser_type (c.parser_type),
- std_ostream_type (c.std_ostream_type),
- ostream_type (c.ostream_type),
- istream_type (c.istream_type),
- xerces_ns (c.xerces_ns),
- dom_auto_ptr (c.dom_auto_ptr),
- dom_node_key (c.dom_node_key),
- as_double_type (c.as_double_type),
- as_decimal_type (c.as_decimal_type),
- generate_xml_schema (c.generate_xml_schema),
- doxygen (c.doxygen),
- polymorphic (c.polymorphic),
- polymorphic_all (c.polymorphic_all),
- poly_plate (c.poly_plate),
- detach (c.detach),
- fwd_expr (c.fwd_expr),
- hxx_expr (c.hxx_expr),
- ixx_expr (c.ixx_expr),
- ns_scope (c.ns_scope),
- regex_custom_type_map (c.regex_custom_type_map),
- direct_custom_type_map (c.direct_custom_type_map),
- ns_scope_stack (c.ns_scope_stack),
- cxx_uq_id_expr (c.cxx_uq_id_expr)
- {
- }
-
- Context::
- Context (Context& c, std::wostream& o)
- : CXX::Context (c, o),
- options (c.options),
- counts (c.counts),
- any_type (c.any_type),
- any_simple_type (c.any_simple_type),
- element_type (c.element_type),
- container (c.container),
- flags_type (c.flags_type),
- qname_type (c.qname_type),
- xs_string_type (c.xs_string_type),
- properties_type (c.properties_type),
- error_handler_type (c.error_handler_type),
- list_stream_type (c.list_stream_type),
- namespace_infomap_type (c.namespace_infomap_type),
- parser_type (c.parser_type),
- std_ostream_type (c.std_ostream_type),
- ostream_type (c.ostream_type),
- istream_type (c.istream_type),
- xerces_ns (c.xerces_ns),
- dom_auto_ptr (c.dom_auto_ptr),
- dom_node_key (c.dom_node_key),
- as_double_type (c.as_double_type),
- as_decimal_type (c.as_decimal_type),
- generate_xml_schema (c.generate_xml_schema),
- doxygen (c.doxygen),
- polymorphic (c.polymorphic),
- polymorphic_all (c.polymorphic_all),
- poly_plate (c.poly_plate),
- detach (c.detach),
- fwd_expr (c.fwd_expr),
- hxx_expr (c.hxx_expr),
- ixx_expr (c.ixx_expr),
- ns_scope (c.ns_scope),
- regex_custom_type_map (c.regex_custom_type_map),
- direct_custom_type_map (c.direct_custom_type_map),
- ns_scope_stack (c.ns_scope_stack),
- cxx_uq_id_expr (c.cxx_uq_id_expr)
- {
- }
-
- void Context::
- update_ns_scope ()
- {
- ns_scope.clear ();
-
- bool first (true);
-
- for (NamespaceStack::iterator i (ns_scope_stack.begin ());
- i != ns_scope_stack.end ();
- ++i)
- {
- // We only qualify names until the namespace level.
- //
- if (first)
- first = false;
- else
- ns_scope += L"::";
-
- ns_scope += *i;
- }
- }
-
- bool Context::
- custom_type (SemanticGraph::Type const& t, String& r) const
- {
- String const& name (t.name ());
-
- // First search the direct mapping.
- //
- {
- DirectCustomTypeMap::const_iterator i (
- direct_custom_type_map.find (name));
-
- if (i != direct_custom_type_map.end ())
- {
- r = i->second.type;
- return true;
- }
- }
-
-
- // Second search the regex mapping.
- //
- for (RegexCustomTypeMap::const_iterator
- i (regex_custom_type_map.begin ()),
- e (regex_custom_type_map.end ());
- i != e; ++i)
- {
- if (i->pat.match (name))
- {
- // Empty type sub tells us to use the original name.
- //
- if (i->type_sub.empty ())
- {
- r.clear ();
- return true;
- }
-
- r = i->pat.replace (name, i->type_sub);
- return true;
- }
- }
-
- return false;
- }
-
- String Context::
- custom_type (SemanticGraph::Type const& t) const
- {
- String r;
- if (custom_type (t, r))
- {
- // Empty type name tells us to use the original name.
- //
- if (r.empty ())
- r = ename (t);
- }
-
- return r;
- }
-
- bool Context::
- renamed_type (SemanticGraph::Type const& t, String& r) const
- {
- String const& name (t.name ());
-
- // First search the direct mapping.
- //
- {
- DirectCustomTypeMap::const_iterator i (
- direct_custom_type_map.find (name));
-
- if (i != direct_custom_type_map.end ())
- {
- r = i->second.base;
- return true;
- }
- }
-
-
- // Second search the regex mapping.
- //
- for (RegexCustomTypeMap::const_iterator
- i (regex_custom_type_map.begin ()),
- e (regex_custom_type_map.end ());
- i != e; ++i)
- {
- if (i->pat.match (name))
- {
- if (!i->base_sub.empty ())
- {
- r = i->pat.replace (name, i->base_sub);
- }
- else
- r.clear ();
-
- return true;
- }
- }
-
- return false;
- }
-
- void Context::
- write_annotation (SemanticGraph::Annotation& a)
- {
- String const& doc (a.documentation ());
- wchar_t const* s (doc.c_str ());
- size_t size (doc.size ());
-
- // Remove leading and trailing whitespaces.
- //
- while (*s == wchar_t (0x20) || *s == wchar_t (0x0A) ||
- *s == wchar_t (0x0D) || *s == wchar_t (0x09))
- {
- s++;
- size--;
- }
-
- if (size != 0)
- {
- wchar_t const* e (s + size - 1);
-
- while (e > s &&
- (*e == wchar_t (0x20) || *e == wchar_t (0x0A) ||
- *e == wchar_t (0x0D) || *e == wchar_t (0x09)))
- --e;
-
- size = s <= e ? e - s + 1 : 0;
- }
-
- if (size != 0)
- {
- os << " * ";
-
- // Go over the data, forcing newline after 80 chars and adding
- // ' * ' after each new line.
- //
- wchar_t const* last_space (0);
- wchar_t const* b (s);
- wchar_t const* e (s);
- bool after_newline (false);
- bool rogue (false);
-
- for (; e < s + size; ++e)
- {
- unsigned int u (unicode_char (e)); // May advance e.
-
- // We are going to treat \v and \f as rogue here even though
- // they can be present in C++ source code.
- //
- if (u > 127 || (u < 32 && u != '\t' && u != '\n'))
- rogue = true;
-
- if (u == ' ' || u == '\t')
- {
- if (after_newline)
- {
- if (e == b)
- b++; // Skip leading spaces after newline.
-
- continue;
- }
- else
- last_space = e;
- }
- else if (after_newline)
- {
- os << " * ";
- after_newline = false;
- }
-
- if (u == '\n')
- {
- write_rogue_text (b, e - b + 1, rogue);
-
- b = e + 1;
- last_space = 0;
- after_newline = true;
- rogue = false;
- continue;
- }
-
- if (e - b >= 70 && last_space != 0)
- {
- write_rogue_text (b, last_space - b, rogue);
- os << endl;
-
- b = last_space + 1;
- last_space = 0;
- after_newline = true;
- // Cannot reset rogue since we don't output the whole string.
- }
- }
-
- if (e != b)
- write_rogue_text (b, e - b, rogue);
-
- if (!after_newline)
- os << endl;
- }
- }
-
- void Context::
- write_rogue_text (wchar_t const* s, size_t size, bool rogue)
- {
- if (!rogue)
- os.write (s, size);
- else
- {
- for (wchar_t const* p (s); p < s + size; ++p)
- {
- unsigned int u (unicode_char (p)); // May advance p.
-
- // We are going to treat \v and \f as rogue here even though
- // they can be present in C++ source code.
- //
- if (u > 127 || (u < 32 && u != '\t' && u != '\n'))
- os.put ('?');
- else
- os.put (static_cast<wchar_t> (u));
- }
- }
- }
-
- bool Context::
- polymorphic_p (SemanticGraph::Type& t)
- {
- // IDREF templates cannot be polymorphic.
- //
- if (!t.named_p () &&
- (t.is_a<SemanticGraph::Fundamental::IdRef> () ||
- t.is_a<SemanticGraph::Fundamental::IdRefs> ()))
- return false;
-
- if (polymorphic_all)
- {
- bool fund (false);
- IsFundamentalType test (fund);
- test.dispatch (t);
- return !fund;
- }
- else
- return t.context ().get<bool> ("polymorphic");
- }
-
- bool Context::
- anonymous_substitutes_p (SemanticGraph::Type& t)
- {
- // IDREF templates cannot match.
- //
- if (!t.named_p () &&
- (t.is_a<SemanticGraph::Fundamental::IdRef> () ||
- t.is_a<SemanticGraph::Fundamental::IdRefs> ()))
- return false;
-
- // See which elements this type classifies.
- //
- for (SemanticGraph::Type::ClassifiesIterator i (t.classifies_begin ()),
- e (t.classifies_end ()); i != e; ++i)
- {
- if (SemanticGraph::Element* e =
- dynamic_cast<SemanticGraph::Element*> (&i->instance ()))
- {
- if (e->substitutes_p ())
- return true;
- }
- }
-
- return false;
- }
-
- // GenerateDefautCtor
- //
- GenerateDefaultCtor::
- GenerateDefaultCtor (Context& c, bool& generate, bool no_base)
- : Context (c), generate_ (generate), no_base_ (no_base)
- {
- *this >> inherits_ >> *this;
- *this >> names_ >> *this;
- }
-
- void GenerateDefaultCtor::
- traverse (SemanticGraph::Complex& c)
- {
- // Make sure we figure out if we have any required members before
- // we base our decision on the base type.
- //
- Complex::names (c, names_);
-
- if (!generate_)
- Complex::inherits (c, inherits_);
- }
-
- void GenerateDefaultCtor::
- traverse (SemanticGraph::Type&)
- {
- if (!no_base_)
- generate_ = true;
- }
-
- void GenerateDefaultCtor::
- traverse (SemanticGraph::Enumeration&)
- {
- if (!no_base_)
- generate_ = true;
- }
-
- void GenerateDefaultCtor::
- traverse (SemanticGraph::Element& e)
- {
- if (!skip (e) && min (e) == 1 && max (e) == 1)
- generate_ = true;
- }
-
- void GenerateDefaultCtor::
- traverse (SemanticGraph::Attribute& a)
- {
- if (min (a) == 1 && !a.fixed_p ())
- generate_ = true;
- }
-
- void GenerateDefaultCtor::
- traverse (SemanticGraph::Any& a)
- {
- if (options.generate_wildcard () &&
- min (a) == 1 && max (a) == 1)
- generate_ = true;
- }
-
-
- // GenerateFromBaseCtor
- //
- GenerateFromBaseCtor::
- GenerateFromBaseCtor (Context& c, bool& generate)
- : generate_ (generate),
- custom_ (false),
- traverser_ (c, generate, custom_)
- {
- inherits_ >> traverser_;
- }
-
- void GenerateFromBaseCtor::
- traverse (SemanticGraph::Complex& c)
- {
- inherits (c, inherits_);
-
- if (!generate_ && custom_)
- {
- // We have a customized type in the hierarchy. In this case we
- // want to generate the c-tor unless base and ultimate-base are
- // the same (see CtorArgs).
- //
- SemanticGraph::Type& b (c.inherits ().base ());
- generate_ = b.is_a<SemanticGraph::Complex> () &&
- !b.is_a<SemanticGraph::Enumeration> ();
- }
- }
-
- GenerateFromBaseCtor::Traverser::
- Traverser (Context& c, bool& generate, bool& custom)
- : Context (c), generate_ (generate), custom_ (custom)
- {
- *this >> inherits_ >> *this;
- *this >> names_ >> *this;
- }
-
- void GenerateFromBaseCtor::Traverser::
- traverse (SemanticGraph::Type& t)
- {
- if (!custom_)
- {
- String tmp;
- custom_ = custom_type (t, tmp);
- }
- }
-
- void GenerateFromBaseCtor::Traverser::
- traverse (SemanticGraph::Complex& c)
- {
- names (c, names_);
-
- if (!generate_)
- inherits (c, inherits_);
-
- if (!generate_)
- traverse (static_cast<SemanticGraph::Type&> (c));
- }
-
- void GenerateFromBaseCtor::Traverser::
- traverse (SemanticGraph::Element& e)
- {
- if (!skip (e) && min (e) == 1 && max (e) == 1)
- generate_ = true;
- }
-
- void GenerateFromBaseCtor::Traverser::
- traverse (SemanticGraph::Attribute& a)
- {
- if (min (a) == 1 && !a.fixed_p ())
- generate_ = true;
- }
-
- void GenerateFromBaseCtor::Traverser::
- traverse (SemanticGraph::Any& a)
- {
- if (options.generate_wildcard () &&
- min (a) == 1 && max (a) == 1)
- generate_ = true;
- }
-
- // HasComplexNonOptArgs
- //
- HasComplexPolyNonOptArgs::
- HasComplexPolyNonOptArgs (Context& c,
- bool base,
- bool& complex,
- bool& poly,
- bool& clash)
- : Context (c),
- complex_ (complex),
- poly_ (poly),
- clash_ (clash)
- {
- if (base)
- *this >> inherits_ >> *this;
-
- *this >> names_ >> *this;
- }
-
- void HasComplexPolyNonOptArgs::
- traverse (SemanticGraph::Complex& c)
- {
- // No optimizations: need to check every arg for clashes.
- //
- inherits (c, inherits_);
- names (c, names_);
- }
-
- void HasComplexPolyNonOptArgs::
- traverse (SemanticGraph::Element& e)
- {
- if (!skip (e) && min (e) == 1 && max (e) == 1)
- {
- bool poly (polymorphic && polymorphic_p (e.type ()));
-
- bool simple (true);
- IsSimpleType t (simple);
- t.dispatch (e.type ());
-
- if (poly)
- poly_ = true;
-
- if (!simple)
- complex_ = true;
-
- if (poly && simple)
- clash_ = false;
- }
- }
-
- // FromBaseCtorArg
- //
- FromBaseCtorArg::
- FromBaseCtorArg (Context& c, CtorArgType at, bool arg)
- : Context (c), arg_type_ (at), arg_ (arg)
- {
- }
-
- void FromBaseCtorArg::
- traverse (SemanticGraph::Any& a)
- {
- if (!options.generate_wildcard ())
- return;
-
- if (min (a) == 1 && max (a) == 1)
- {
- String const& name (ename (a));
-
- os << "," << endl
- << "const " << xerces_ns << "::DOMElement&";
-
- if (arg_)
- os << " " << name;
- }
- }
-
- void FromBaseCtorArg::
- traverse (SemanticGraph::Element& e)
- {
- if (skip (e))
- return;
-
- if (min (e) == 1 && max (e) == 1)
- {
- String const& name (ename (e));
-
- os << "," << endl;
-
- bool ptr (false);
-
- switch (arg_type_)
- {
- case CtorArgType::complex_auto_ptr:
- {
- bool simple (true);
- IsSimpleType t (simple);
- t.dispatch (e.type ());
- ptr = !simple;
- break;
- }
- case CtorArgType::poly_auto_ptr:
- {
- ptr = polymorphic && polymorphic_p (e.type ());
- break;
- }
- case CtorArgType::type:
- break;
- }
-
- if (ptr)
- os << auto_ptr << "< " << etype (e) << " >";
- else
- os << "const " << etype (e) << "&";
-
- if (arg_)
- os << " " << name;
- }
- }
-
- void FromBaseCtorArg::
- traverse (SemanticGraph::Attribute& a)
- {
- // Note that we are not going to include attributes with
- // default or required fixed values here. Instead we are
- // going to default-initialize them.
- //
- if (min (a) == 1 && !a.fixed_p ())
- {
- String const& name (ename (a));
-
- os << "," << endl
- << "const " << etype (a) << "&";
-
- if (arg_)
- os << " " << name;
- }
- }
-
- // CtorArgs
- //
- CtorArgs::
- CtorArgs (Context& c, CtorArgType at)
- : Context (c),
- arg_type_ (at),
- base_arg_ (0),
- first_ (true),
- member_name_ (c)
- {
- *this >> inherits_ >> *this;
- *this >> names_ >> *this;
- }
-
- CtorArgs::
- CtorArgs (Context& c, CtorArgType at, String& base_arg)
- : Context (c),
- arg_type_ (at),
- base_arg_ (&base_arg),
- first_ (true),
- member_name_ (c)
- {
- *this >> inherits_ >> *this;
- *this >> names_ >> *this;
- }
-
- void CtorArgs::
- traverse (SemanticGraph::Type& t)
- {
- os << comma () << "const ";
-
- member_name_.dispatch (t);
-
- os << "&";
-
- if (base_arg_ != 0)
- {
- // IDREF templates don't have a name.
- //
- *base_arg_ = t.named_p ()
- ? (L"_xsd_" + ename (t) + L"_base")
- : L"_xsd_base";
-
- os << " " << *base_arg_;
- }
- }
-
- void CtorArgs::
- traverse (SemanticGraph::Enumeration& e)
- {
- os << comma () << "const ";
-
- member_name_.traverse (e);
-
- os << "&";
-
- if (base_arg_ != 0)
- {
- *base_arg_ = L"_xsd_" + ename (e) + L"_base";
-
- os << " " << *base_arg_;
- }
- }
-
- void CtorArgs::
- traverse (SemanticGraph::Any& a)
- {
- if (!options.generate_wildcard ())
- return;
-
- if (min (a) == 1 && max (a) == 1)
- {
- os << comma () << "const " << xerces_ns << "::DOMElement&";
-
- if (base_arg_ != 0)
- os << " " << ename (a);
- }
- }
-
- void CtorArgs::
- traverse (SemanticGraph::Element& e)
- {
- if (skip (e))
- return;
-
- if (min (e) == 1 && max (e) == 1)
- {
- bool ptr (false);
-
- switch (arg_type_)
- {
- case CtorArgType::complex_auto_ptr:
- {
- bool simple (true);
- IsSimpleType t (simple);
- t.dispatch (e.type ());
- ptr = !simple;
- break;
- }
- case CtorArgType::poly_auto_ptr:
- {
- ptr = polymorphic && polymorphic_p (e.type ());
- break;
- }
- case CtorArgType::type:
- break;
- }
-
- if (ptr)
- os << comma () << auto_ptr << "< " << etype (e) << " >";
- else
- os << comma () << "const " << etype (e) << "&";
-
- if (base_arg_ != 0)
- os << " " << ename (e);
- }
- }
-
- void CtorArgs::
- traverse (SemanticGraph::Attribute& a)
- {
- // Note that we are not going to include attributes with
- // default or required fixed values here. Instead we are
- // going to default-initialize them.
- //
- if (min (a) == 1 && !a.fixed_p ())
- {
- os << comma () << "const " << etype (a) << "&";
-
- if (base_arg_ != 0)
- os << " " << ename (a);
- }
- }
-
- String CtorArgs::
- comma ()
- {
- bool tmp (first_);
- first_ = false;
- return tmp ? "" : ",\n";
- }
-
-
- // CtorArgsWithoutBase
- //
- CtorArgsWithoutBase::
- CtorArgsWithoutBase (Context& c, CtorArgType at, bool arg, bool first)
- : Context (c), arg_type_ (at), arg_ (arg), first_ (first)
- {
- *this >> inherits_ >> *this;
- *this >> names_ >> *this;
- }
-
- void CtorArgsWithoutBase::
- traverse (SemanticGraph::Any& a)
- {
- if (!options.generate_wildcard ())
- return;
-
- if (min (a) == 1 && max (a) == 1)
- {
- os << comma () << "const " << xerces_ns << "::DOMElement&";
-
- if (arg_)
- os << " " << ename (a);
- }
- }
-
- void CtorArgsWithoutBase::
- traverse (SemanticGraph::Element& e)
- {
- if (skip (e))
- return;
-
- if (min (e) == 1 && max (e) == 1)
- {
- bool ptr (false);
-
- switch (arg_type_)
- {
- case CtorArgType::complex_auto_ptr:
- {
- bool simple (true);
- IsSimpleType t (simple);
- t.dispatch (e.type ());
- ptr = !simple;
- break;
- }
- case CtorArgType::poly_auto_ptr:
- {
- ptr = polymorphic && polymorphic_p (e.type ());
- break;
- }
- case CtorArgType::type:
- break;
- }
-
- if (ptr)
- os << comma () << auto_ptr << "< " << etype (e) << " >";
- else
- os << comma () << "const " << etype (e) << "&";
-
- if (arg_)
- os << " " << ename (e);
- }
- }
-
- void CtorArgsWithoutBase::
- traverse (SemanticGraph::Attribute& a)
- {
- // Note that we are not going to include attributes with
- // default or required fixed values here. Instead we are
- // going to default-initialize them.
- //
- if (min (a) == 1 && !a.fixed_p ())
- {
- os << comma () << "const " << etype (a) << "&";
-
- if (arg_)
- os << " " << ename (a);
- }
- }
-
- String CtorArgsWithoutBase::
- comma ()
- {
- bool tmp (first_);
- first_ = false;
- return tmp ? "" : ",\n";
- }
-
- // GlobalElementBase
- //
- bool GlobalElementBase::
- generate_p (SemanticGraph::Element& e)
- {
- if (e.substitutes_p () && ctx_.polymorphic)
- return true;
-
- if (!doc_root_p (e))
- return false;
-
- // If we are not generating element types nor parsing/serialization
- // code then we won't generate anything from it.
- //
- if (!ctx_.options.generate_element_type () &&
- ctx_.options.suppress_parsing () &&
- !ctx_.options.generate_serialization ())
- return false;
-
- return true;
- }
-
- bool GlobalElementBase::
- doc_root_p (SemanticGraph::Element& e)
- {
- if (!ctx_.options.root_element_first () &&
- !ctx_.options.root_element_last () &&
- !ctx_.options.root_element_all () &&
- !ctx_.options.root_element_none () &&
- ctx_.options.root_element ().empty ())
- return true; // By default treat them all.
-
- if (ctx_.options.root_element_none ())
- return false;
-
- if (ctx_.options.root_element_all ())
- return true;
-
- if (ctx_.options.root_element_first () &&
- e.context ().count ("first") != 0)
- return true;
-
- if (ctx_.options.root_element_last () &&
- e.context ().count ("last") != 0)
- return true;
-
- NarrowStrings const& names (ctx_.options.root_element ());
-
- // Hopefully nobody will specify more than a handful of names ;-).
- //
- for (NarrowStrings::const_iterator i (names.begin ());
- i != names.end (); ++i)
- {
- String name (*i);
-
- if (e.name () == name)
- return true;
- }
-
- return false;
- }
-
- // Namespace
- //
- Namespace::
- Namespace (Context& c,
- size_t first,
- size_t last)
- : CXX::Namespace (c, *this),
- GlobalElementBase (c),
- ctx_ (c),
- first_ (first),
- last_ (last),
- count_ (0)
- {
- }
-
- void Namespace::
- traverse (Type& ns)
- {
- using SemanticGraph::Element;
-
- if (first_ > last_)
- CXX::Namespace::traverse (ns);
- else
- {
- bool opened (false);
-
- for (Type::NamesIterator i (ns.names_begin ());
- i != ns.names_end (); ++i)
- {
- SemanticGraph::Nameable& n (i->named ());
-
- if (n.is_a<SemanticGraph::Type> () ||
- (n.is_a<Element> () && generate_p (dynamic_cast<Element&> (n))))
- {
- if (count_ >= first_ && count_ <= last_)
- {
- if (!opened)
- {
- opened = true;
- pre (ns);
- }
-
- edge_traverser ().dispatch (*i);
- }
-
- ++count_;
- }
- }
-
- if (opened)
- post (ns);
- }
- }
-
- void Namespace::
- enter (Type&, String const& name, bool)
- {
- ctx_.enter_ns_scope (name);
- }
-
- void Namespace::
- leave ()
- {
- ctx_.leave_ns_scope ();
- }
-
- // Includes
- //
- void TypeForward::
- traverse (SemanticGraph::Type& t)
- {
- String const& name (ename (t));
-
- if (String custom = custom_type (t))
- {
- String new_name;
- renamed_type (t, new_name);
-
- if (new_name)
- os << "class " << new_name << ";";
-
- if (custom == name)
- os << "class " << name << ";";
- else
- os << "typedef " << custom << " " << name << ";";
- }
- else
- os << "class " << name << ";";
- }
-
- void Includes::
- traverse_ (SemanticGraph::Uses& u)
- {
- // Support for weak (forward) inclusion used in the file-per-type
- // compilation model.
- //
- Type t (type_);
- bool weak (u.context ().count ("weak"));
- SemanticGraph::Schema& s (u.schema ());
-
- if (weak && t == header)
- {
- // Generate forward declarations.
- //
- if (forward_)
- t = forward;
- else
- {
- schema_.dispatch (s);
- return;
- }
- }
-
- if (t == source && !weak)
- return;
-
- SemanticGraph::Path path (
- s.context ().count ("renamed")
- ? s.context ().get<SemanticGraph::Path> ("renamed")
- : u.path ());
- path.normalize ();
-
- // Try to use the portable representation of the path. If that
- // fails, fall back to the native representation.
- //
- NarrowString path_str;
- try
- {
- path_str = path.posix_string ();
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- path_str = path.string ();
- }
-
- String inc_path;
-
- switch (t)
- {
- case forward:
- {
- inc_path = ctx_.fwd_expr->replace (path_str);
- break;
- }
- case header:
- case source:
- {
- inc_path = ctx_.hxx_expr->replace (path_str);
- break;
- }
- case inline_:
- {
- if (weak)
- {
- inc_path = ctx_.hxx_expr->replace (path_str);
- ctx_.os << "#include " << ctx_.process_include_path (inc_path)
- << endl;
- }
-
- inc_path = ctx_.ixx_expr->replace (path_str);
- break;
- }
- }
-
- ctx_.os << "#include " << ctx_.process_include_path (inc_path) << endl
- << endl;
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/elements.hxx b/xsd/xsd/cxx/tree/elements.hxx
deleted file mode 100644
index 6874e6a..0000000
--- a/xsd/xsd/cxx/tree/elements.hxx
+++ /dev/null
@@ -1,2119 +0,0 @@
-// file : xsd/cxx/tree/elements.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_ELEMENTS_HXX
-#define CXX_TREE_ELEMENTS_HXX
-
-#include <map>
-#include <set>
-#include <deque>
-#include <vector>
-#include <sstream>
-
-#include <cutl/re.hxx>
-
-#include <types.hxx>
-
-#include <cxx/elements.hxx>
-
-#include <cxx/tree/options.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- struct Counts
- {
- Counts ()
- : global_types (0),
- global_elements (0),
- generated_global_elements (0),
- complexity_total (0)
- {
- }
-
- size_t global_types;
- size_t global_elements;
- size_t generated_global_elements;
-
- // Complexity value for each global type and generated global
- // element, in order.
- //
- std::vector<size_t> complexity;
- size_t complexity_total;
- };
-
- struct InvalidCustomTypeMapping
- {
- InvalidCustomTypeMapping (String const& mapping,
- String const& reason)
- : mapping_ (mapping), reason_ (reason)
- {
- }
-
- String const&
- mapping () const
- {
- return mapping_;
- }
-
- String const&
- reason () const
- {
- return reason_;
- }
-
- private:
- String mapping_;
- String reason_;
- };
-
- // A set of potentially qualified XML Schema type names.
- //
- struct TypeNameSet
- {
- template <typename I>
- TypeNameSet (I begin, I end)
- {
- for (; begin != end; ++begin)
- insert (*begin);
- }
-
- void
- insert (String const& name)
- {
- size_t p (name.rfind ('#'));
-
- if (p == String::npos)
- unames_.insert (name);
- else
- qnames_.insert (name);
- }
-
- bool
- find (SemanticGraph::Type& t)
- {
- if (!unames_.empty ())
- {
- if (unames_.find (t.name ()) != unames_.end ())
- return true;
- }
-
- if (!qnames_.empty ())
- {
- if (qnames_.find (t.scope ().name () + L"#" + t.name ()) !=
- qnames_.end ())
- return true;
- }
-
- return false;
- }
-
- private:
- typedef std::set<String> StringSet;
-
- StringSet unames_;
- StringSet qnames_;
- };
-
- //
- //
- class Context: public CXX::Context
- {
- public:
- typedef cutl::re::regexsub Regex;
- typedef cutl::re::wregex WideRegexPat;
-
- typedef Tree::options options_type;
-
- struct DirectCustomTypeMapInfo
- {
- DirectCustomTypeMapInfo (String const& t = L"",
- String const& b = L"")
- : type (t), base (b)
- {
- }
-
- String type;
- String base;
- };
-
- struct RegexCustomTypeMapInfo
- {
- RegexCustomTypeMapInfo (WideRegexPat const& p,
- String const& t,
- String const& b)
- : pat (p), type_sub (t), base_sub (b)
- {
- }
-
- WideRegexPat pat;
- String type_sub;
- String base_sub;
- };
-
- typedef std::vector<RegexCustomTypeMapInfo> RegexCustomTypeMap;
- typedef std::map<String, DirectCustomTypeMapInfo> DirectCustomTypeMap;
-
- public:
- Context (std::wostream& o,
- SemanticGraph::Schema& root,
- SemanticGraph::Path const& path,
- options_type const& ops,
- Counts const& counts_,
- bool generate_xml_schema,
- StringLiteralMap const*,
- Regex const* fwd_expr,
- Regex const* hxx_expr,
- Regex const* ixx_expr);
-
- protected:
- Context (Context& c);
- Context (Context& c, std::wostream& o);
-
- // Custom type mapping.
- //
- public:
- // Returns empty string if custom mapping is not required.
- //
- String
- custom_type (SemanticGraph::Type const&) const;
-
- // Returns true if custom mapping is required. name is
- // populated with the custom type name or empty if the
- // original name should be used.
- //
- bool
- custom_type (SemanticGraph::Type const&, String& name) const;
-
- // Returns true if this type has been renamed as part of the
- // customization process. If the function returns true, the
- // name string is populated with the new name or empty if
- // the type should not be generated at all.
- //
- bool
- renamed_type (SemanticGraph::Type const&, String& name) const;
-
- public:
- // Performs a number of processing steps, including forcing a new
- // line after 80 characters as well as "commentizing" the text by
- // adding '* ' after each newline.
- //
- void
- write_annotation (SemanticGraph::Annotation&);
-
- //
- //
- public:
- static bool
- ordered_p (SemanticGraph::Type const& t)
- {
- return t.context ().count ("ordered") &&
- t.context ().get<bool> ("ordered");
- }
-
- // Check if we are generating mixed support for this type. We only
- // do it for ordered types.
- //
- static bool
- mixed_p (SemanticGraph::Complex const& c)
- {
- return c.mixed_p () && ordered_p (c);
- }
-
- bool
- polymorphic_p (SemanticGraph::Type&);
-
- bool
- anonymous_p (SemanticGraph::Type const& t)
- {
- return t.context ().count ("anonymous");
- }
-
- // Return true if this anonymous type is defined in an element
- // that belongs to a substitution group.
- //
- bool
- anonymous_substitutes_p (SemanticGraph::Type&);
-
- // Escaped names.
- //
- public:
- // Accessor name.
- //
- static String const&
- eaname (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("aname");
- }
-
- static String const&
- eaname (SemanticGraph::Any const& a)
- {
- return a.context ().get<String> ("aname");
- }
-
- static String const&
- eaname (SemanticGraph::AnyAttribute const& a)
- {
- return a.context ().get<String> ("aname");
- }
-
- // Modifier name.
- //
- static String const&
- emname (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("mname");
- }
-
- static String const&
- emname (SemanticGraph::Any const& a)
- {
- return a.context ().get<String> ("mname");
- }
-
- static String const&
- emname (SemanticGraph::AnyAttribute const& a)
- {
- return a.context ().get<String> ("mname");
- }
-
- // Detach name.
- //
- static String const&
- edname (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("dname");
- }
-
- //
- //
- static String const&
- etype (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("type");
- }
-
- static String const&
- etraits (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("traits");
- }
-
- static String const&
- econtainer (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("container");
- }
-
- static String const&
- econtainer (SemanticGraph::Any const& a)
- {
- return a.context ().get<String> ("container");
- }
-
- static String const&
- econtainer (SemanticGraph::AnyAttribute const& a)
- {
- return a.context ().get<String> ("container");
- }
-
- static String const&
- eiterator (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("iterator");
- }
-
- static String const&
- eiterator (SemanticGraph::Any const& a)
- {
- return a.context ().get<String> ("iterator");
- }
-
- static String const&
- eiterator (SemanticGraph::AnyAttribute const& a)
- {
- return a.context ().get<String> ("iterator");
- }
-
- static String const&
- econst_iterator (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("const-iterator");
- }
-
- static String const&
- econst_iterator (SemanticGraph::Any const& a)
- {
- return a.context ().get<String> ("const-iterator");
- }
-
- static String const&
- econst_iterator (SemanticGraph::AnyAttribute const& a)
- {
- return a.context ().get<String> ("const-iterator");
- }
-
- static String const&
- emember (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("member");
- }
-
- static String const&
- emember (SemanticGraph::Any const& a)
- {
- return a.context ().get<String> ("member");
- }
-
- static String const&
- emember (SemanticGraph::AnyAttribute const& a)
- {
- return a.context ().get<String> ("member");
- }
-
- static String const&
- edefault_value (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("default-value");
- }
-
- static String const&
- edefault_value_member (SemanticGraph::Member const& m)
- {
- return m.context ().get<String> ("default-value-member");
- }
-
- // Underlying enum value type.
- //
- static String const&
- evalue (SemanticGraph::Enumeration const& e)
- {
- return e.context ().get<String> ("value");
- }
-
- // dom_document
- //
- static bool
- edom_document_p (SemanticGraph::Complex const& c)
- {
- return c.context ().count ("dom-document");
- }
-
- static String const&
- edom_document (SemanticGraph::Complex const& c)
- {
- return c.context ().get<String> ("dom-document");
- }
-
- static bool
- edom_document_member_p (SemanticGraph::Complex const& c)
- {
- return c.context ().count ("dom-document-member");
- }
-
- static String const&
- edom_document_member (SemanticGraph::Complex const& c)
- {
- return c.context ().get<String> ("dom-document-member");
- }
-
- // Parsing and serialization function names.
- //
- static String const&
- eparser (SemanticGraph::Element const& e)
- {
- return e.context ().get<String> ("parser");
- }
-
- static String const&
- eserializer (SemanticGraph::Element const& e)
- {
- return e.context ().get<String> ("serializer");
- }
-
- public:
- void
- enter_ns_scope (String const& name)
- {
- ns_scope_stack.push_back (name);
- update_ns_scope ();
- }
-
- void
- leave_ns_scope ()
- {
- ns_scope_stack.pop_back ();
- update_ns_scope ();
- }
-
- private:
- void
- update_ns_scope ();
-
- private:
- // Write text that may contain characters that we will have
- // to escape (indicated by the rogue flag).
- //
- void
- write_rogue_text (wchar_t const* s, size_t size, bool rogue);
-
- public:
- options_type const& options;
- Counts const& counts;
- String& any_type;
- String& any_simple_type;
- String& element_type;
- String& container;
- String& flags_type;
- String& qname_type;
- String& xs_string_type;
- String& properties_type;
- String& error_handler_type;
- String& list_stream_type;
- String& namespace_infomap_type;
- String& parser_type;
- String& std_ostream_type;
- String& ostream_type;
- String& istream_type;
- String& xerces_ns;
- String& dom_auto_ptr;
- String& dom_node_key;
- String& as_double_type;
- String& as_decimal_type;
-
- bool& generate_xml_schema;
- bool& doxygen;
- bool polymorphic;
- bool polymorphic_all;
- unsigned long poly_plate;
- bool detach;
-
- Regex const* fwd_expr;
- Regex const* hxx_expr;
- Regex const* ixx_expr;
-
- String& ns_scope;
-
- RegexCustomTypeMap& regex_custom_type_map;
- DirectCustomTypeMap& direct_custom_type_map;
-
- private:
- String any_type_;
- String any_simple_type_;
- String element_type_;
- String container_;
- String flags_type_;
- String qname_type_;
- String xs_string_type_;
- String properties_type_;
- String error_handler_type_;
- String list_stream_type_;
- String namespace_infomap_type_;
- String parser_type_;
- String std_ostream_type_;
- String ostream_type_;
- String istream_type_;
- String xerces_ns_;
- String dom_auto_ptr_;
- String dom_node_key_;
- String as_double_type_;
- String as_decimal_type_;
-
- bool generate_xml_schema_;
- bool doxygen_;
-
- typedef std::deque<String> NamespaceStack;
- typedef std::deque<String> ScopeStack;
-
- String ns_scope_;
-
- NamespaceStack& ns_scope_stack;
- NamespaceStack ns_scope_stack_;
-
- RegexCustomTypeMap regex_custom_type_map_;
- DirectCustomTypeMap direct_custom_type_map_;
-
- private:
- WideRegexPat const cxx_uq_id_expr_;
- WideRegexPat const& cxx_uq_id_expr;
- };
-
- // Check whether this Schema type maps to a fundamental C++ type.
- //
- struct IsFundamentalType: Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal
-
- {
- IsFundamentalType (bool& r)
- : r_ (r)
- {
- }
-
- // Integral types.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger&)
- {
- r_ = true;
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean&)
- {
- r_ = true;
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal&)
- {
- r_ = true;
- }
-
- private:
- bool& r_;
- };
-
- // Check whether this is a string-based type.
- //
- struct IsStringBasedType: Traversal::Complex,
- Traversal::Union,
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Language
- {
- IsStringBasedType (bool& r)
- : r_ (r)
- {
- *this >> inherits_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- inherits (c, inherits_);
- }
-
- virtual void
- traverse (SemanticGraph::Union&)
- {
- // Current mapping of union is string-based.
- //
- r_ = true;
- }
-
- // Strings.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::String&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName&)
- {
- r_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Language&)
- {
- r_ = true;
- }
-
- private:
- bool& r_;
- Traversal::Inherits inherits_;
- };
-
-
- // Check whether this is a enumeration-based type.
- //
- struct IsEnumBasedType: Traversal::Complex
- {
- IsEnumBasedType (SemanticGraph::Enumeration*& e)
- : enum_ (e)
- {
- *this >> inherits_;
-
- inherits_ >> *this;
- inherits_ >> enum_;
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- inherits (c, inherits_);
- }
-
- private:
- struct Enumeration: Traversal::Enumeration
- {
- Enumeration (SemanticGraph::Enumeration*& e)
- : e_ (e)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (e_ == 0)
- e_ = &e;
- }
-
- private:
- SemanticGraph::Enumeration*& e_;
- };
-
-
- private:
- Enumeration enum_;
- Traversal::Inherits inherits_;
- };
-
-
- //
- //
- struct MemberTypeName : Context,
- Traversal::Type,
- Traversal::List,
- Traversal::Union,
- Traversal::Complex,
-
- Traversal::AnyType,
- Traversal::AnySimpleType,
-
- Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal,
-
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Language,
-
- Traversal::Fundamental::QName,
-
- Traversal::Fundamental::Id,
- Traversal::Fundamental::IdRef,
- Traversal::Fundamental::IdRefs,
-
- Traversal::Fundamental::AnyURI,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary,
-
- Traversal::Fundamental::Date,
- Traversal::Fundamental::DateTime,
- Traversal::Fundamental::Duration,
- Traversal::Fundamental::Day,
- Traversal::Fundamental::Month,
- Traversal::Fundamental::MonthDay,
- Traversal::Fundamental::Year,
- Traversal::Fundamental::YearMonth,
- Traversal::Fundamental::Time,
-
- Traversal::Fundamental::Entity,
- Traversal::Fundamental::Entities
-
- {
- MemberTypeName (Context& c)
- : Context (c)
- {
- }
-
- MemberTypeName (Context& c, std::wostream& o)
- : Context (c, o)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type&)
- {
- abort ();
- }
-
- virtual void
- traverse (SemanticGraph::List& l)
- {
- os << fq_name (l);
- }
-
- virtual void
- traverse (SemanticGraph::Union& u)
- {
- os << fq_name (u);
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- os << fq_name (c);
- }
-
- // anyType & anySimpleType.
- //
- virtual void
- traverse (SemanticGraph::AnyType& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::AnySimpleType& t)
- {
- os << fq_name (t);
- }
-
- // Integral types.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger& t)
- {
- os << fq_name (t);
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean& t)
- {
- os << fq_name (t);
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal& t)
- {
- os << fq_name (t);
- }
-
- // Strings.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::String& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Language& t)
- {
- os << fq_name (t);
- }
-
-
- // Qualified name.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::QName& t)
- {
- os << fq_name (t);
- }
-
-
- // ID/IDREF.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Id& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRef& t)
- {
- if (t.named_p ())
- {
- // IDREF<anyType>
- //
- os << fq_name (t);
- }
- else
- {
- SemanticGraph::Nameable& ncname (
- xs_ns ().find ("NCName").first->named ());
-
- os << "::xsd::cxx::tree::idref< " << char_type << ", " <<
- fq_name (ncname) << ", " <<
- type_name (t.argumented ().type ()) << " >";
- }
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs& t)
- {
- if (t.named_p ())
- {
- // IDREFS<anyType>
- //
- os << fq_name (t);
- }
- else
- {
- SemanticGraph::Nameable& ncname (
- xs_ns ().find ("NCName").first->named ());
-
- os << "::xsd::cxx::tree::idrefs< " << char_type << ", " <<
- any_simple_type << ", ::xsd::cxx::tree::idref< " <<
- char_type << ", " << fq_name (ncname) << ", " <<
- type_name (t.argumented ().type ()) << " > >";
- }
- }
-
- // URI.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::AnyURI& t)
- {
- os << fq_name (t);
- }
-
- // Binary.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary& t)
- {
- os << fq_name (t);
- }
-
-
- // Date/time.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Date& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::DateTime& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Duration& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Day& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Month& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::MonthDay& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Year& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::YearMonth& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Time& t)
- {
- os << fq_name (t);
- }
-
- // Entity.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Entity& t)
- {
- os << fq_name (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Entities& t)
- {
- os << fq_name (t);
- }
-
- private:
- // For idref/idrefs
- //
- String
- type_name (SemanticGraph::Type& t)
- {
- // This type is always named.
- //
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (t);
-
- return o.str ();
- }
- };
-
-
- //
- //
- struct BaseTypeName : MemberTypeName
- {
- BaseTypeName (Context& c)
- : MemberTypeName (c)
- {
- }
-
- BaseTypeName (Context& c, std::wostream& o)
- : MemberTypeName (c, o)
- {
- }
-
- virtual void
- fundamental_base (SemanticGraph::Type& t)
- {
- os << "::xsd::cxx::tree::fundamental_base< " <<
- fq_name (t) << ", " << char_type << ", " <<
- any_simple_type << " >";
- }
-
- // Integrals.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger& t)
- {
- fundamental_base (t);
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean& t)
- {
- fundamental_base (t);
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- fundamental_base (t);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- os << "::xsd::cxx::tree::fundamental_base< " <<
- fq_name (t) << ", " << char_type << ", " <<
- any_simple_type << ", " <<
- "::xsd::cxx::tree::schema_type::double_ >";
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal& t)
- {
- os << "::xsd::cxx::tree::fundamental_base< " <<
- fq_name (t) << ", " << char_type << ", " <<
- any_simple_type << ", " <<
- "::xsd::cxx::tree::schema_type::decimal >";
- }
- };
-
- // Initial value should be true.
- //
- struct IsSimpleType: Traversal::Complex,
- Traversal::Member,
- Traversal::Any,
- Traversal::AnyAttribute
- {
- IsSimpleType (bool& v)
- : v_ (v)
- {
- *this >> names_ >> *this;
- *this >> inherits_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- if (c.mixed_p ())
- v_ = false;
-
- if (v_)
- names (c, names_);
-
- if (v_)
- inherits (c, inherits_);
- }
-
- virtual void
- traverse (SemanticGraph::Member&)
- {
- v_ = false;
- }
-
- virtual void
- traverse (SemanticGraph::Any&)
- {
- v_ = false;
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute&)
- {
- v_ = false;
- }
-
- private:
- bool& v_;
- Traversal::Names names_;
- Traversal::Inherits inherits_;
- };
-
- // Test whether we need to generate default c-tor. Note that we are not
- // interested in anyAttribute since it is always mapped to a sequence.
- //
- struct GenerateDefaultCtor: Traversal::Complex,
- Traversal::Enumeration,
- Traversal::Type,
- Traversal::Element,
- Traversal::Attribute,
- Traversal::Any,
- Context
- {
- // generate should initially be false.
- //
- GenerateDefaultCtor (Context&, bool& generate, bool no_base);
-
- virtual void
- traverse (SemanticGraph::Complex&);
-
- virtual void
- traverse (SemanticGraph::Type&);
-
- virtual void
- traverse (SemanticGraph::Enumeration&);
-
- virtual void
- traverse (SemanticGraph::Element&);
-
- virtual void
- traverse (SemanticGraph::Attribute&);
-
- virtual void
- traverse (SemanticGraph::Any&);
-
- private:
- bool& generate_;
- bool no_base_;
-
- private:
- Traversal::Inherits inherits_;
- Traversal::Names names_;
- };
-
- // Test whether we need to generate from-base c-tor.
- //
- struct GenerateFromBaseCtor: Traversal::Complex
- {
- // generate should initially be false.
- //
- GenerateFromBaseCtor (Context& c, bool& generate);
-
- virtual void
- traverse (SemanticGraph::Complex& c);
-
- private:
- bool& generate_;
- bool custom_;
-
- // Note that we are not interested in anyAttribute since it is always
- // mapped to a sequence.
- //
- struct Traverser: Traversal::Type,
- Traversal::Complex,
- Traversal::Element,
- Traversal::Attribute,
- Traversal::Any,
- Context
- {
- Traverser (Context& c, bool& generate, bool& custom);
-
- virtual void
- traverse (SemanticGraph::Type&);
-
- virtual void
- traverse (SemanticGraph::Complex&);
-
- virtual void
- traverse (SemanticGraph::Attribute&);
-
- virtual void
- traverse (SemanticGraph::Element&);
-
- virtual void
- traverse (SemanticGraph::Any&);
-
- private:
- bool& generate_;
- bool& custom_;
-
- private:
- Traversal::Inherits inherits_;
- Traversal::Names names_;
- } traverser_;
-
- Traversal::Inherits inherits_;
- };
-
- // Test whether the type has any non-optional element of complex
- // (has attributes/elements) and polymorpjic types.
- //
- struct HasComplexPolyNonOptArgs: Traversal::Complex,
- Traversal::Element,
- Context
- {
- // complex and poly should initially be false. clash
- // should initially be true.
- //
- HasComplexPolyNonOptArgs (Context& c,
- bool including_base,
- bool& complex,
- bool& poly,
- bool& clash);
-
- virtual void
- traverse (SemanticGraph::Complex&);
-
- virtual void
- traverse (SemanticGraph::Element&);
-
- private:
- bool& complex_;
- bool& poly_;
- bool& clash_;
-
- Traversal::Inherits inherits_;
- Traversal::Names names_;
- };
-
- // Contructor argument types.
- //
- struct CtorArgType
- {
- enum Value
- {
- type,
- complex_auto_ptr,
- poly_auto_ptr
- };
-
- CtorArgType (Value v = Value (0)) : v_ (v) {}
- operator Value () const {return v_;}
-
- private:
- Value v_;
- };
-
- // Immediate non-optional member. Note that AnyAttribute is always
- // mapped to a sequence.
- //
- struct FromBaseCtorArg: Traversal::Any,
- Traversal::Element,
- Traversal::Attribute,
- Context
- {
- FromBaseCtorArg (Context& c, CtorArgType, bool arg);
-
- virtual void
- traverse (SemanticGraph::Any&);
-
- virtual void
- traverse (SemanticGraph::Attribute&);
-
- virtual void
- traverse (SemanticGraph::Element&);
-
- private:
- CtorArgType arg_type_;
- bool arg_;
- };
-
- // List of all non-optional members and a simple base. Note that
- // AnyAttribute is always mapped to a sequence.
- //
- struct CtorArgs: Traversal::Complex,
- Traversal::Enumeration,
- Traversal::Type,
- Traversal::Any,
- Traversal::Element,
- Traversal::Attribute,
- Context
- {
- // The second version outputs the argument name and stores
- // in in the base_arg string.
- //
- CtorArgs (Context&, CtorArgType);
- CtorArgs (Context&, CtorArgType, String& base_arg);
-
- virtual void
- traverse (SemanticGraph::Type&);
-
- virtual void
- traverse (SemanticGraph::Enumeration&);
-
- virtual void
- traverse (SemanticGraph::Any&);
-
- virtual void
- traverse (SemanticGraph::Attribute&);
-
- virtual void
- traverse (SemanticGraph::Element&);
-
- private:
- String
- comma ();
-
- private:
- CtorArgType arg_type_;
- String base_;
- String* base_arg_;
- bool first_;
-
- private:
- Traversal::Inherits inherits_;
- Traversal::Names names_;
-
- MemberTypeName member_name_;
- };
-
-
- // Check whether we need to generate c-tor without the base argument.
- //
- struct GenerateWithoutBaseCtor: Traversal::List,
- Traversal::Union,
- Traversal::Complex,
- Traversal::Enumeration,
-
- Traversal::AnyType,
- Traversal::AnySimpleType,
-
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
-
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::IdRefs,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary
- {
- // generate should initially be false.
- //
- GenerateWithoutBaseCtor (bool& generate)
- : generate_ (generate)
- {
- *this >> inherits_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::List&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Union&)
- {
- // No default initialization.
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- Complex::inherits (c);
- }
-
- virtual void
- traverse (SemanticGraph::Enumeration&)
- {
- // No default initialization.
- }
-
- virtual void
- traverse (SemanticGraph::AnyType&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::AnySimpleType&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::String&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary&)
- {
- generate_ = true;
- }
-
- private:
- bool& generate_;
- Traversal::Inherits inherits_;
- };
-
-
- // List of all non-optional members sans simple base. Note that
- // AnyAttribute is always mapped to a sequence.
- //
- struct CtorArgsWithoutBase: Traversal::Complex,
- Traversal::Any,
- Traversal::Element,
- Traversal::Attribute,
- Context
- {
- CtorArgsWithoutBase (Context& c, CtorArgType, bool arg, bool first);
-
- virtual void
- traverse (SemanticGraph::Any&);
-
- virtual void
- traverse (SemanticGraph::Element&);
-
- virtual void
- traverse (SemanticGraph::Attribute&);
-
- private:
- String
- comma ();
-
- private:
- CtorArgType arg_type_;
- bool arg_;
- bool first_;
-
- private:
- Traversal::Inherits inherits_;
- Traversal::Names names_;
- };
-
- //
- //
- struct GlobalElementBase
- {
- GlobalElementBase (Context& c)
- : ctx_ (c)
- {
- }
-
- bool
- generate_p (SemanticGraph::Element&);
-
- bool
- doc_root_p (SemanticGraph::Element&);
-
- private:
- Context& ctx_;
- };
-
-
- //
- //
- struct Namespace: CXX::Namespace,
- GlobalElementBase,
- CXX::Namespace::ScopeTracker
- {
- Namespace (Context&,
- size_t first = 1,
- size_t last = 0);
-
- virtual void
- traverse (Type&);
-
- protected:
- virtual void
- enter (Type&, String const& name, bool last);
-
- virtual void
- leave ();
-
- protected:
- Context& ctx_;
-
- private:
- size_t first_;
- size_t last_;
- size_t count_;
- };
-
- //
- //
- struct DocumentedNamespace: Namespace
- {
- DocumentedNamespace (Context& c)
- : Namespace (c)
- {
- }
-
- virtual void
- enter (Type& ns, String const& name, bool last)
- {
- Namespace::enter (ns, name, last);
-
- // Only add documentation to the innermost namespace.
- //
- if (ctx_.doxygen && name && last)
- {
- ctx_.os << "/**" << endl
- << " * @brief C++ namespace for the %" <<
- ctx_.comment (ns.name ()) << endl
- << " * schema namespace." << endl
- << " */" << endl;
- }
- }
- };
-
- //
- //
- struct TypeForward: Traversal::Type, Context
- {
- TypeForward (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type& t);
- };
-
- struct Includes: Traversal::Imports,
- Traversal::Includes
- {
- enum Type
- {
- forward,
- header,
- inline_,
- source
- };
-
- Includes (Context& c, Type type)
- : ctx_ (c),
- type_ (type),
- forward_ (c.options.generate_forward ()),
- namespace_ (c),
- type_forward_ (c)
- {
- schema_ >> schema_names_ >> namespace_ >> names_ >> type_forward_;
- }
-
- virtual void
- traverse (SemanticGraph::Imports& i)
- {
- traverse_ (i);
- }
-
- virtual void
- traverse (SemanticGraph::Includes& i)
- {
- traverse_ (i);
- }
-
- private:
- void
- traverse_ (SemanticGraph::Uses&);
-
- private:
- Context& ctx_;
- Type type_;
- bool forward_;
-
- Traversal::Schema schema_;
- Traversal::Names schema_names_;
- Namespace namespace_;
- Traversal::Names names_;
- TypeForward type_forward_;
- };
-
- //
- //
- struct FundIncludes: Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal,
- Context
- {
- FundIncludes (Context& c, String const& prefix)
- : Context (c), prefix_ (prefix),
- long_ (false), unsigned_long_ (false)
- {
- }
-
- // Integral types.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte& t)
- {
- gen_include (t, "byte.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte& t)
- {
- gen_include (t, "unsigned-byte.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short& t)
- {
- gen_include (t, "short.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort& t)
- {
- gen_include (t, "unsigned-short.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int& t)
- {
- gen_include (t, "int.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt& t)
- {
- gen_include (t, "unsigned-int.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long& t)
- {
- if (!long_)
- long_ = gen_include (t, "long.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong& t)
- {
- if (!unsigned_long_)
- unsigned_long_ = gen_include (t, "unsigned-long.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer& t)
- {
- if (!long_)
- long_ = gen_include (t, "long.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
- {
- if (!long_)
- long_ = gen_include (t, "long.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
- {
- if (!unsigned_long_)
- unsigned_long_ = gen_include (t, "unsigned-long.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger& t)
- {
- if (!unsigned_long_)
- unsigned_long_ = gen_include (t, "unsigned-long.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger& t)
- {
- if (!long_)
- long_ = gen_include (t, "long.hxx");
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean& t)
- {
- gen_include (t, "boolean.hxx");
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- gen_include (t, "float.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- gen_include (t, "double.hxx");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal& t)
- {
- gen_include (t, "decimal.hxx");
- }
-
- private:
- bool
- gen_include (SemanticGraph::Type& t, String const& file)
- {
- String custom;
-
- // XML Schema built-in type customization is only possible when
- // we are generating separate header.
- //
- if (generate_xml_schema && custom_type (t, custom))
- {
- String new_name;
- renamed_type (t, new_name);
-
- if (!new_name)
- return false;
- }
-
- os << "#include <xsd/cxx/tree/" << prefix_ << "/" << file << ">"
- << endl;
-
- return true;
- }
-
- private:
- String prefix_;
- bool long_;
- bool unsigned_long_;
- };
- }
-}
-
-#endif // CXX_TREE_ELEMENTS_HXX
diff --git a/xsd/xsd/cxx/tree/fundamental-header.hxx b/xsd/xsd/cxx/tree/fundamental-header.hxx
deleted file mode 100644
index 925d65e..0000000
--- a/xsd/xsd/cxx/tree/fundamental-header.hxx
+++ /dev/null
@@ -1,1336 +0,0 @@
-// file : xsd/cxx/tree/fundamental-header.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_FUNDAMENTAL_HEADER_HXX
-#define CXX_TREE_FUNDAMENTAL_HEADER_HXX
-
-#include <set>
-#include <vector>
-#include <algorithm>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- struct FundamentalNamespace : DocumentedNamespace,
-
- Traversal::AnyType,
- Traversal::AnySimpleType,
-
- Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal,
-
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Language,
-
- Traversal::Fundamental::Id,
- Traversal::Fundamental::IdRef,
- Traversal::Fundamental::IdRefs,
-
- Traversal::Fundamental::AnyURI,
-
- Traversal::Fundamental::QName,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary,
-
- Traversal::Fundamental::Date,
- Traversal::Fundamental::DateTime,
- Traversal::Fundamental::Duration,
- Traversal::Fundamental::Day,
- Traversal::Fundamental::Month,
- Traversal::Fundamental::MonthDay,
- Traversal::Fundamental::Year,
- Traversal::Fundamental::YearMonth,
- Traversal::Fundamental::Time,
-
- Traversal::Fundamental::Entity,
- Traversal::Fundamental::Entities,
- Context
- {
- FundamentalNamespace (Context& c)
- : DocumentedNamespace (c),
- Context (c),
- export_ (c.options.export_xml_schema () && type_exp)
- {
- *this >> names_ >> *this;
-
- if (export_)
- xs_ns_ = ns_name (xs_ns ());
- }
-
- void
- gen_typedef (String const& name,
- String const& type,
- String const& arg1 = L"",
- String const& arg2 = L"",
- String const& arg3 = L"",
- bool export_type = true)
- {
- os << "typedef " << type;
-
- // Use unqualified arguments since we are in the same
- // namespace.
- //
- if (arg1)
- {
- os << arg1;
-
- if (arg2)
- {
- os << ", " << arg2;
-
- if (arg3)
- os << ", " << arg3;
- }
-
- os << " >";
- }
-
- os << " " << name << ";";
-
- if (export_type && export_ && type.find (L'<') != String::npos)
- {
- String s (type);
-
- // Use qualified arguments.
- //
- if (arg1)
- {
- s += xs_ns_;
- s += L"::";
- s += arg1;
-
- if (arg2)
- {
- s += L", ";
- s += xs_ns_;
- s += L"::";
- s += arg2;
-
- if (arg3)
- {
- s += L", ";
- s += xs_ns_;
- s += L"::";
- s += arg3;
- }
- }
-
- s += " >";
- }
-
- if (exports_set_.count (s) == 0)
- {
- exports_.push_back (s);
- exports_set_.insert (s);
- }
- }
- }
-
- String
- built_in_type (SemanticGraph::Type& t,
- String const& type,
- String const& arg1 = L"",
- String const& arg2 = L"",
- String const& arg3 = L"")
- {
- String custom;
-
- String name (ename (t));
-
- // XML Schema built-in type customization is only possible when
- // we are generating separate header.
- //
- if (generate_xml_schema && custom_type (t, custom))
- {
- if (custom.empty ())
- custom = name;
-
- String new_name;
- renamed_type (t, new_name);
-
- if (new_name)
- {
- gen_typedef (new_name, type, arg1, arg2, arg3);
-
- if (doxygen)
- os << endl;
- }
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief C++ type corresponding to the " <<
- comment (t.name ()) << " XML Schema" << endl
- << " * built-in type." << endl
- << " */" << endl;
-
- if (custom == name)
- os << "class " << name << ";";
- else
- os << "typedef " << custom << " " << name << ";";
-
- if (doxygen)
- os << endl;
- }
- else
- {
- // Otherwise generate simple typedef.
- //
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief C++ type corresponding to the " <<
- comment (t.name ()) << " XML Schema" << endl
- << " * built-in type." << endl
- << " */" << endl;
-
- gen_typedef (name, type, arg1, arg2, arg3);
-
- if (doxygen)
- os << endl;
- }
-
- return name;
- }
-
- // anyType and anySimpleType
- //
- virtual void
- traverse (SemanticGraph::AnyType& t)
- {
- os << "// anyType and anySimpleType." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- type_ = built_in_type (t, "::xsd::cxx::tree::type");
- }
-
- virtual void
- traverse (SemanticGraph::AnySimpleType& t)
- {
- simple_type_ = built_in_type (
- t, L"::xsd::cxx::tree::simple_type< " + char_type + L", ", type_);
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief Alias for the anyType type." << endl
- << " */" << endl;
-
- gen_typedef (xs_ns ().context().get<String> ("container"),
- "::xsd::cxx::tree::type");
-
- os << endl;
-
- if (doxygen)
- os << endl;
- }
-
- // Integrals.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte& t)
- {
- os << "// 8-bit" << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- built_in_type (t, "signed char");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte& t)
- {
- built_in_type (t, "unsigned char");
- os << endl;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short& t)
- {
- os << "// 16-bit" << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- built_in_type (t, "short");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort& t)
- {
- built_in_type (t, "unsigned short");
- os << endl;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int& t)
- {
- os << "// 32-bit" << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- built_in_type (t, "int");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt& t)
- {
- built_in_type (t, "unsigned int");
- os << endl;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long& t)
- {
- os << "// 64-bit" << endl
- << "//" <<endl;
-
- if (doxygen)
- os << endl;
-
- built_in_type (t, "long long");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong& t)
- {
- built_in_type (t, "unsigned long long");
- os << endl;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer& t)
- {
- os << "// Supposed to be arbitrary-length integral types." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- built_in_type (t, "long long");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
- {
- built_in_type (t, "long long");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
- {
- built_in_type (t, "unsigned long long");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger& t)
- {
- built_in_type (t, "unsigned long long");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger& t)
- {
- built_in_type (t, "long long");
- os << endl;
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean& t)
- {
- os << "// Boolean." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- built_in_type (t, "bool");
-
- os << endl;
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- os << "// Floating-point types." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- built_in_type (t, "float");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- double_ = built_in_type (t, "double");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal& t)
- {
- decimal_ = built_in_type (t, "double");
- os << endl;
- }
-
-
- // Strings.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::String& t)
- {
- os << "// String types." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- string_ = built_in_type (
- t, L"::xsd::cxx::tree::string< " + char_type + L", ", simple_type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString& t)
- {
- norm_string_ = built_in_type (
- t,
- L"::xsd::cxx::tree::normalized_string< " + char_type + L", ",
- string_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token& t)
- {
- token_ = built_in_type (
- t, L"::xsd::cxx::tree::token< " + char_type + L", ", norm_string_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken& t)
- {
- nmtoken_ = built_in_type (
- t, L"::xsd::cxx::tree::nmtoken< " + char_type + L", ", token_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens& t)
- {
- built_in_type (
- t,
- L"::xsd::cxx::tree::nmtokens< " + char_type + L", ",
- simple_type_,
- nmtoken_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name& t)
- {
- name_ = built_in_type (
- t, L"::xsd::cxx::tree::name< " + char_type + L", ", token_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName& t)
- {
- ncname_ = built_in_type (
- t, L"::xsd::cxx::tree::ncname< " + char_type + L", ", name_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Language& t)
- {
- built_in_type (
- t, L"::xsd::cxx::tree::language< " + char_type + L", ", token_);
-
- os << endl;
- }
-
- // ID/IDREF.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Id& t)
- {
- os << "// ID/IDREF." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- built_in_type (
- t, L"::xsd::cxx::tree::id< " + char_type + L", ", ncname_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRef& t)
- {
- idref_ = built_in_type (
- t, L"::xsd::cxx::tree::idref< " + char_type + L", ", ncname_, type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs& t)
- {
- built_in_type (
- t,
- L"::xsd::cxx::tree::idrefs< " + char_type + L", ",
- simple_type_,
- idref_);
-
- os << endl;
- }
-
-
- // URI.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::AnyURI& t)
- {
- os << "// URI." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- uri_ = built_in_type (
- t, L"::xsd::cxx::tree::uri< " + char_type + L", ", simple_type_);
-
- os << endl;
- }
-
- // Qualified name.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::QName& t)
- {
- os << "// Qualified name." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- built_in_type (
- t,
- L"::xsd::cxx::tree::qname< " + char_type + L", ",
- simple_type_,
- uri_,
- ncname_);
-
- os << endl;
- }
-
- // Binary.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary& t)
- {
- os << "// Binary." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Binary buffer type." << endl
- << " */" << endl;
-
- gen_typedef (xs_ns ().context().get<String> ("buffer"),
- L"::xsd::cxx::tree::buffer< " + char_type + L" >");
-
- if (doxygen)
- os << endl;
-
- built_in_type (
- t,
- L"::xsd::cxx::tree::base64_binary< " + char_type + L", ",
- simple_type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary& t)
- {
- built_in_type (
- t,
- L"::xsd::cxx::tree::hex_binary< " + char_type + L", ",
- simple_type_);
-
- os << endl;
- }
-
-
- // Date/time.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Date& t)
- {
- os << "// Date/time." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Time zone type." << endl
- << " */" << endl;
-
- gen_typedef (xs_ns ().context().get<String> ("time-zone"),
- "::xsd::cxx::tree::time_zone");
-
- if (doxygen)
- os << endl;
-
- built_in_type (
- t, L"::xsd::cxx::tree::date< " + char_type + L", ", simple_type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::DateTime& t)
- {
- built_in_type (
- t,
- L"::xsd::cxx::tree::date_time< " + char_type + L", ",
- simple_type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Duration& t)
- {
- built_in_type (
- t,
- L"::xsd::cxx::tree::duration< " + char_type + L", ",
- simple_type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Day& t)
- {
- built_in_type (
- t, L"::xsd::cxx::tree::gday< " + char_type + L", ", simple_type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Month& t)
- {
- built_in_type (
- t, L"::xsd::cxx::tree::gmonth< " + char_type + L", ", simple_type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::MonthDay& t)
- {
- built_in_type (
- t,
- L"::xsd::cxx::tree::gmonth_day< " + char_type + L", ",
- simple_type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Year& t)
- {
- built_in_type (
- t, L"::xsd::cxx::tree::gyear< " + char_type + L", ", simple_type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::YearMonth& t)
- {
- built_in_type (
- t,
- L"::xsd::cxx::tree::gyear_month< " + char_type + L", ",
- simple_type_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Time& t)
- {
- built_in_type (
- t, L"::xsd::cxx::tree::time< " + char_type + L", ", simple_type_);
-
- os << endl;
- }
-
- // Entity.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Entity& t)
- {
- os << "// Entity." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl;
-
- entity_ = built_in_type (
- t, L"::xsd::cxx::tree::entity< " + char_type + L", ", ncname_);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Entities& t)
- {
- built_in_type (
- t,
- L"::xsd::cxx::tree::entities< " + char_type + L", ",
- simple_type_,
- entity_);
-
- os << endl;
- }
-
- virtual void
- post (SemanticGraph::Namespace& n)
- {
- SemanticGraph::Context& c (xs_ns ().context());
-
- bool parsing (!options.suppress_parsing ());
- bool serialization (options.generate_serialization ());
- bool element_map (options.generate_element_map ());
-
- {
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Content order sequence entry." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("content-order"),
- "::xsd::cxx::tree::content_order");
- }
-
- if (options.generate_element_type ())
- {
- if (doxygen)
- os << "/**" << endl
- << " * @brief Base class for element types." << endl
- << " */" << endl;
- else
- os << "// Base class for element types." << endl
- << "//" << endl;
-
- gen_typedef (
- c.get<String> ("element-type"),
- L"::xsd::cxx::tree::element_type< " + char_type + L", ",
- type_);
-
- os << endl;
- }
-
- if (element_map)
- {
- if (doxygen)
- os << "/**" << endl
- << " * @brief Root element map." << endl
- << " */" << endl;
- else
- os << "// Root element map." << endl
- << "//" << endl;
-
- gen_typedef (
- c.get<String> ("element-map"),
- L"::xsd::cxx::tree::element_map< " + char_type + L", ",
- type_);
-
- os << endl;
- }
-
- if (serialization)
- {
- os << "// Namespace information and list stream. Used in" << endl
- << "// serialization functions." << endl
- << "//" << endl;
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief Namespace serialization information." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("namespace-info"),
- L"::xsd::cxx::xml::dom::namespace_info< " + char_type + L" >");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Namespace serialization information map." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("namespace-infomap"),
- L"::xsd::cxx::xml::dom::namespace_infomap< " +
- char_type + L" >");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief List serialization stream." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("list-stream"),
- L"::xsd::cxx::tree::list_stream< " + char_type + L" >");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Serialization wrapper for the %double type." << endl
- << " */" << endl;
-
- // Do not export as_double and as_decimal since they are already
- // instantiated.
- //
- gen_typedef (c.get<String> ("as-double"),
- L"::xsd::cxx::tree::as_double< ",
- double_,
- "",
- "",
- false);
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Serialization wrapper for the %decimal type." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("as-decimal"),
- L"::xsd::cxx::tree::as_decimal< ",
- decimal_,
- "",
- "",
- false);
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Simple type facet." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("facet"), "::xsd::cxx::tree::facet");
-
- os << endl;
- }
-
- //@@ Can't change names of ostream/istream since they are
- // templates.
- //
- if (!options.generate_insertion ().empty ())
- {
- if (doxygen)
- os << "/**" << endl
- << " * @brief Data representation output stream template." << endl
- << " */" << endl;
- else
- os << "// Data representation output stream template." << endl
- << "//" << endl;
-
- os << "using ::xsd::cxx::tree::ostream;"
- << endl;
- }
-
- if (!options.generate_extraction ().empty ())
- {
- if (doxygen)
- os << "/**" << endl
- << " * @brief Data representation input stream template." << endl
- << " */" << endl;
- else
- os << "// Data representation input stream template." << endl
- << "//" << endl;
-
- os << "using ::xsd::cxx::tree::istream;"
- << endl;
- }
-
- os << "// Flags and properties." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Parsing and serialization flags." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("flags"), "::xsd::cxx::tree::flags");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Parsing properties." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("properties"),
- L"::xsd::cxx::tree::properties< " + char_type + L" >");
- os << endl;
-
-
- //
- //
- if (parsing || serialization)
- {
- os << "// Parsing/serialization diagnostics." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Error severity." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("severity"),
- "::xsd::cxx::tree::severity");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Error condition." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("error"),
- L"::xsd::cxx::tree::error< " + char_type + L" >");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief List of %error conditions." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("diagnostics"),
- L"::xsd::cxx::tree::diagnostics< " + char_type + L" >");
- os << endl;
- }
-
- //
- //
- os << "// Exceptions." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Root of the C++/Tree %exception hierarchy." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("exception"),
- L"::xsd::cxx::tree::exception< " + char_type + L" >");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that the size argument exceeds" <<
- endl
- << " * the capacity argument." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("bounds"),
- L"::xsd::cxx::tree::bounds< " + char_type + L" >");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that a duplicate ID value" <<
- endl
- << " * was encountered in the object model." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("duplicate-id"),
- L"::xsd::cxx::tree::duplicate_id< " + char_type + L" >");
-
- if (parsing)
- {
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating a parsing failure." << endl
- << " */" << endl;
-
- gen_typedef (c.get<String> ("parsing"),
- L"::xsd::cxx::tree::parsing< " + char_type + L" >");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that an expected element" <<
- endl
- << " * was not encountered." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("expected-element"),
- L"::xsd::cxx::tree::expected_element< " + char_type + L" >");
- }
-
- if (parsing || serialization)
- {
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that an unexpected " <<
- "element" << endl
- << " * was encountered." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("unexpected-element"),
- L"::xsd::cxx::tree::unexpected_element< " + char_type + L" >");
- }
-
- if (parsing)
- {
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that an expected " <<
- "attribute" << endl
- << " * was not encountered." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("expected-attribute"),
- L"::xsd::cxx::tree::expected_attribute< " + char_type + L" >");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that an unexpected " <<
- "enumerator" << endl
- << " * was encountered." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("unexpected-enumerator"),
- L"::xsd::cxx::tree::unexpected_enumerator< " + char_type + L" >");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that the text content " <<
- "was" << endl
- << " * expected for an element." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("expected-text-content"),
- L"::xsd::cxx::tree::expected_text_content< " + char_type + L" >");
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that a prefix-namespace" <<
- endl
- << " * mapping was not provided." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("no-prefix-mapping"),
- L"::xsd::cxx::tree::no_prefix_mapping< " + char_type + L" >");
- }
-
- if (options.generate_polymorphic ())
- {
- if (parsing || serialization)
- {
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that the type " <<
- "information" << endl
- << " * is not available for a type." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("no-type-info"),
- L"::xsd::cxx::tree::no_type_info< " + char_type + L" >");
- }
-
- if (parsing)
- {
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that the types are not" <<
- endl
- << " * related by inheritance." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("not-derived"),
- L"::xsd::cxx::tree::not_derived< " + char_type + L" >");
- }
- }
-
- if (element_map)
- {
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating that parsing or " <<
- "serialization" << endl
- << " * information is not available for an element." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("no-element-info"),
- L"::xsd::cxx::tree::no_element_info< " + char_type + L" >");
- }
-
- if (serialization)
- {
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Exception indicating a serialization " <<
- "failure." << endl
- << " */" << endl;
-
- gen_typedef (
- c.get<String> ("serialization"),
- L"::xsd::cxx::tree::serialization< " + char_type + L" >");
- }
-
- os << endl;
-
- if (parsing || serialization)
- {
- if (doxygen)
- os << "/**" << endl
- << " * @brief Error handler callback interface." << endl
- << " */" << endl;
- else
- os << "// Error handler callback interface." << endl
- << "//" << endl;
-
- gen_typedef (
- c.get<String> ("error-handler"),
- L"::xsd::cxx::xml::error_handler< " + char_type + L" >");
-
- os << endl;
- }
-
- if (parsing || serialization)
- {
- if (doxygen)
- os << "/**" << endl
- << " * @brief DOM interaction." << endl
- << " */" << endl;
- else
- os << "// DOM interaction." << endl
- << "//" << endl;
-
- os << "namespace dom"
- << "{";
-
- // @@ Disregarding current naming convention by using the
- // fixed name (even in C++11, template alias is not yet
- // widely supported).
- //
- if (doxygen)
- os << "/**" << endl
- << " * @brief Automatic pointer for DOMDocument." << endl
- << " */" << endl;
- else
- os << "// Automatic pointer for DOMDocument." << endl
- << "//" << endl;
-
- if (std >= cxx_version::cxx11)
- os << "using ::xsd::cxx::xml::dom::unique_ptr;";
- else
- os << "using ::xsd::cxx::xml::dom::auto_ptr;";
-
- os << endl;
-
- if (parsing)
- {
- if (!generate_xml_schema)
- {
- String g (L"XSD_CXX_TREE_TREE_NODE_KEY" + ns_name (n));
-
- std::transform (g.begin (), g.end(), g.begin (), upcase);
- g = escape (g); // Make it a C++ id.
-
- os << "#ifndef " << g << endl
- << "#define " << g << endl;
- }
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief DOM user data key for back pointers to " <<
- "tree nodes." << endl
- << " */" << endl;
- else
- os << "// DOM user data key for back pointers to tree nodes." << endl
- << "//" << endl;
-
- os << "const XMLCh* const " << c.get<String> ("tree-node-key") <<
- " = ::xsd::cxx::tree::user_data_keys::node;";
-
- if (!generate_xml_schema)
- os << "#endif" << endl;
- }
-
- os << "}"; // namespace dom
- }
-
- if (element_map)
- {
- if (doxygen)
- os << "//@cond" << endl
- << endl;
-
- if (!generate_xml_schema)
- {
- String g (L"XSD_CXX_TREE_ELEMENT_MAP_INIT" + ns_name (n));
-
- std::transform (g.begin (), g.end(), g.begin (), upcase);
- g = escape (g); // Make it a C++ id.
-
- os << "#ifndef " << g << endl
- << "#define " << g << endl;
- }
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::element_map_init< " <<
- char_type << ", " << type_ << " >" << endl
- << "_xsd_element_map_init;";
-
- if (!generate_xml_schema)
- os << "#endif" << endl;
-
- if (doxygen)
- os << endl
- << "//@endcond" << endl;
- }
-
- Namespace::post (n);
-
- // Generate exports.
- //
- if (export_)
- {
- StringSet ns_set;
-
- for (StringList::const_iterator i (exports_.begin ());
- i != exports_.end (); ++i)
- {
- String const& e (*i);
-
- // 12 is to skip ::xsd::cxx::
- //
- ns_set.insert (String (e, 12, e.rfind (':', e.find ('<')) - 13));
- }
-
- os << "#ifndef XSD_NO_EXPORT" << endl
- << endl
- << "namespace xsd"
- << "{"
- << "namespace cxx"
- << "{";
-
- for (StringSet::const_iterator i (ns_set.begin ());
- i != ns_set.end (); ++i)
- {
- String const& ns (*i);
- String prefix (L"::xsd::cxx::" + ns);
-
- size_t n (1);
- for (size_t b (0), e (ns.find (':')); ; n++)
- {
- os << "namespace " << String (ns, b, e)
- << "{";
-
- if (e == String::npos)
- break;
-
- b = e + 2;
- e = ns.find (':', b);
- }
-
- for (StringList::const_iterator i (exports_.begin ());
- i != exports_.end (); ++i)
- {
- String const& e (*i);
- String ens (e, 12, e.rfind (':', e.find ('<')) - 13);
-
- if (ns == ens)
- {
- String type (e, e.rfind (':', e.find ('<')) + 1);
- os << "template class " << type_exp << type << ";";
- }
- }
-
- while (n--)
- os << "}";
- }
-
- os << "}" // cxx
- << "}" // xsd
- << "#endif // XSD_NO_EXPORT" << endl
- << endl;
- }
- }
-
- private:
- typedef std::set<String> StringSet;
- typedef std::vector<String> StringList;
-
- bool export_;
- StringList exports_;
- StringSet exports_set_;
- String xs_ns_;
-
- Traversal::Names names_;
-
- String type_;
- String simple_type_;
- String string_;
- String norm_string_;
- String token_;
- String nmtoken_;
- String name_;
- String ncname_;
- String idref_;
- String uri_;
- String entity_;
-
- String double_;
- String decimal_;
- };
- }
-}
-
-#endif // CXX_TREE_FUNDAMENTAL_HEADER_HXX
diff --git a/xsd/xsd/cxx/tree/generator.cxx b/xsd/xsd/cxx/tree/generator.cxx
deleted file mode 100644
index 7a413bd..0000000
--- a/xsd/xsd/cxx/tree/generator.cxx
+++ /dev/null
@@ -1,1228 +0,0 @@
-// file : xsd/cxx/tree/generator.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <vector>
-#include <algorithm>
-#include <iostream>
-#include <fstream>
-
-#include <cutl/re.hxx>
-#include <cutl/shared-ptr.hxx>
-
-#include <cutl/compiler/code-stream.hxx>
-#include <cutl/compiler/cxx-indenter.hxx>
-#include <cutl/compiler/sloc-counter.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/generators/dependencies.hxx>
-
-#include <cxx/tree/generator.hxx>
-
-#include <cxx/tree/elements.hxx>
-
-#include <cxx/tree/counter.hxx>
-#include <cxx/tree/validator.hxx>
-#include <cxx/tree/name-processor.hxx>
-#include <cxx/tree/order-processor.hxx>
-#include <cxx/tree/polymorphism-processor.hxx>
-
-#include <cxx/tree/tree-forward.hxx>
-#include <cxx/tree/tree-header.hxx>
-#include <cxx/tree/tree-inline.hxx>
-#include <cxx/tree/tree-source.hxx>
-
-#include <cxx/tree/parser-header.hxx>
-#include <cxx/tree/parser-source.hxx>
-
-#include <cxx/tree/stream-header.hxx>
-#include <cxx/tree/stream-source.hxx>
-
-#include <cxx/tree/serialization-header.hxx>
-#include <cxx/tree/serialization-source.hxx>
-
-#include <cxx/tree/stream-insertion-header.hxx>
-#include <cxx/tree/stream-insertion-source.hxx>
-#include <cxx/tree/stream-extraction-source.hxx>
-
-#include <cxx/tree/options.hxx>
-
-#include "../../../libxsd/xsd/cxx/version.hxx"
-
-using namespace std;
-using namespace cutl;
-using namespace XSDFrontend::SemanticGraph;
-
-//
-//
-typedef std::wifstream WideInputFileStream;
-typedef std::wofstream WideOutputFileStream;
-
-namespace CXX
-{
- namespace
- {
- char const copyright_gpl[] =
- "// Copyright (c) 2005-2014 Code Synthesis Tools CC\n"
- "//\n"
- "// This program was generated by CodeSynthesis XSD, an XML Schema to\n"
- "// C++ data binding compiler.\n"
- "//\n"
- "// This program is free software; you can redistribute it and/or modify\n"
- "// it under the terms of the GNU General Public License version 2 as\n"
- "// published by the Free Software Foundation.\n"
- "//\n"
- "// This program is distributed in the hope that it will be useful,\n"
- "// but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
- "// GNU General Public License for more details.\n"
- "//\n"
- "// You should have received a copy of the GNU General Public License\n"
- "// along with this program; if not, write to the Free Software\n"
- "// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n"
- "//\n"
- "// In addition, as a special exception, Code Synthesis Tools CC gives\n"
- "// permission to link this program with the Xerces-C++ library (or with\n"
- "// modified versions of Xerces-C++ that use the same license as Xerces-C++),\n"
- "// and distribute linked combinations including the two. You must obey\n"
- "// the GNU General Public License version 2 in all respects for all of\n"
- "// the code used other than Xerces-C++. If you modify this copy of the\n"
- "// program, you may extend this exception to your version of the program,\n"
- "// but you are not obligated to do so. If you do not wish to do so, delete\n"
- "// this exception statement from your version.\n"
- "//\n"
- "// Furthermore, Code Synthesis Tools CC makes a special exception for\n"
- "// the Free/Libre and Open Source Software (FLOSS) which is described\n"
- "// in the accompanying FLOSSE file.\n"
- "//\n\n";
-
- char const copyright_proprietary[] =
- "// Copyright (c) 2005-2014 Code Synthesis Tools CC\n"
- "//\n"
- "// This program was generated by CodeSynthesis XSD, an XML Schema\n"
- "// to C++ data binding compiler, in the Proprietary License mode.\n"
- "// You should have received a proprietary license from Code Synthesis\n"
- "// Tools CC prior to generating this code. See the license text for\n"
- "// conditions.\n"
- "//\n\n";
- }
-
- void Tree::Generator::
- usage ()
- {
- CXX::Tree::options::print_usage (wcout);
- CXX::options::print_usage (wcout);
- }
-
- namespace
- {
- void
- open (WideInputFileStream& ifs, NarrowString const& path)
- {
- try
- {
- Path fs_path (path);
- ifs.open (fs_path.string ().c_str (),
- std::ios_base::in | std::ios_base::binary);
-
- if (!ifs.is_open ())
- {
- wcerr << path.c_str () << ": error: unable to open in read mode"
- << endl;
-
- throw Tree::Generator::Failed ();
- }
- }
- catch (InvalidPath const&)
- {
- wcerr << "error: '" << path.c_str () << "' is not a valid "
- << "filesystem path" << endl;
-
- throw Tree::Generator::Failed ();
- }
- }
-
- void
- append (WideOutputFileStream& os,
- NarrowString const& path,
- WideInputFileStream& default_is)
- {
- using std::ios_base;
-
- if (path)
- {
- WideInputFileStream is;
- open (is, path);
- os << is.rdbuf ();
- }
- else if (default_is.is_open ())
- {
- os << default_is.rdbuf ();
- default_is.seekg (0, ios_base::beg);
- }
- }
-
- void
- append (WideOutputFileStream& os,
- NarrowStrings const& primary,
- NarrowStrings const& def)
- {
- NarrowStrings const& v (primary.empty () ? def : primary);
-
- for (NarrowStrings::const_iterator i (v.begin ()), e (v.end ());
- i != e; ++i)
- {
- os << i->c_str () << endl;
- }
- }
- }
-
-
- size_t Tree::Generator::
- generate (Tree::options const& ops,
- Schema& schema,
- Path const& file_path,
- bool fpt,
- StringLiteralMap const& string_literal_map,
- const WarningSet& disabled_warnings,
- FileList& file_list,
- AutoUnlinks& unlinks)
- {
- using cutl::shared_ptr;
- typedef cutl::re::regexsub Regex;
-
- typedef vector<Path> Paths;
- typedef vector<shared_ptr<WideOutputFileStream> > WideOutputFileStreams;
-
- try
- {
- // Do option validation.
- //
- if (ops.parts () < 1)
- {
- wcerr << "error: invalid value for option --parts: " <<
- ops.parts () << endl;
- throw Failed ();
- }
-
- // Get counts.
- //
- Counts counts;
- {
- Counter counter;
- counts = counter.count (ops, schema, file_path);
-
- /*
- wcerr << "global type count: " << counts.global_types << endl;
- wcerr << "global element count: " << counts.global_elements << endl;
- wcerr << "generated global element count: " <<
- counts.generated_global_elements << endl;
-
- wcerr << "total complexity: " << counts.complexity_total << endl;
- wcerr << "complexity vector size: " << counts.complexity.size ()
- << endl;
- */
- }
-
- // Evaluate the graph for possibility of generating something useful.
- //
- {
- Validator validator;
- if (!validator.validate (
- ops, schema, file_path, disabled_warnings, counts))
- throw Failed ();
- }
-
- bool gen_cxx (!ops.generate_dep_only ());
-
- // Process ordered types.
- //
- if (gen_cxx)
- {
- OrderProcessor proc;
- if (!proc.process (ops, schema, file_path))
- throw Failed ();
- }
-
- // Process names.
- //
- if (gen_cxx)
- {
- NameProcessor proc;
- if (!proc.process (ops, schema, file_path, string_literal_map))
- throw Failed ();
- }
-
- // Process polymorphic types.
- //
- if (gen_cxx &&
- ops.generate_polymorphic () &&
- !ops.polymorphic_type_all ())
- {
- PolymorphismProcessor proc;
- if (!proc.process (ops, schema, file_path, disabled_warnings))
- throw Failed ();
- }
-
- // Parts.
- //
- size_t parts (ops.parts ());
- size_t units (counts.global_types + counts.generated_global_elements);
- size_t units_per_part (units / parts);
-
- if (parts != 1 && units_per_part < 1)
- {
- wcerr << "error: too many parts specified: " << parts << endl;
- throw Failed ();
- }
-
- size_t complexity_per_part (counts.complexity_total / parts);
-
-
- NarrowString parts_suffix (ops.parts_suffix ());
-
- //
- //
- bool generate_xml_schema (ops.generate_xml_schema ());
-
- // We could be compiling several schemas at once in which case
- // handling of the --generate-xml-schema option gets tricky: we
- // will need to rely on the presence of the --extern-xml-schema
- // to tell us which (fake) schema file corresponds to XML Schema.
- //
- if (generate_xml_schema)
- {
- if (NarrowString name = ops.extern_xml_schema ())
- {
- if (file_path.string () != name)
- generate_xml_schema = false;
- }
- }
-
- bool header (true);
- bool inline_ (ops.generate_inline () && !generate_xml_schema);
- bool forward (ops.generate_forward () && !generate_xml_schema);
- bool source (!generate_xml_schema);
- bool gen_dep ((ops.generate_dep () || ops.generate_dep_only ()) &&
- !generate_xml_schema);
-
- if (ops.generate_dep_only () && generate_xml_schema)
- {
- wcerr << "error: no dependency information can be generated for "
- "XML Schema header" << endl;
- throw Failed ();
- }
-
- if (gen_dep && fpt)
- {
- wcerr << "error: dependency generation not support in the " <<
- "file-per-type mode" << endl;
- throw Failed ();
- }
-
- // Generate code.
- //
- NarrowString name (file_path.leaf ().string ());
-
- NarrowString hxx_suffix (ops.hxx_suffix ());
- NarrowString ixx_suffix (ops.ixx_suffix ());
- NarrowString cxx_suffix (ops.cxx_suffix ());
- NarrowString fwd_suffix (ops.fwd_suffix ());
- NarrowString dep_suffix (ops.dep_suffix ());
-
- Regex hxx_expr (ops.hxx_regex ().empty ()
- ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + hxx_suffix + "#"
- : ops.hxx_regex ());
-
- Regex ixx_expr (ops.ixx_regex ().empty ()
- ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + ixx_suffix + "#"
- : ops.ixx_regex ());
-
- Regex cxx_expr (ops.cxx_regex ().empty ()
- ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + cxx_suffix + "#"
- : ops.cxx_regex ());
-
- Regex fwd_expr (ops.fwd_regex ().empty ()
- ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + fwd_suffix + "#"
- : ops.fwd_regex ());
-
- Regex dep_expr (ops.dep_regex ().empty ()
- ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + dep_suffix + "#"
- : ops.dep_regex ());
-
- if (header && !hxx_expr.match (name))
- {
- wcerr << "error: header expression '" <<
- hxx_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- if (inline_ && !ixx_expr.match (name))
- {
- wcerr << "error: inline expression '" <<
- ixx_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- if (source && parts == 1 && !cxx_expr.match (name))
- {
- wcerr << "error: source expression '" <<
- cxx_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- if (forward && !fwd_expr.match (name))
- {
- wcerr << "error: forward expression '" <<
- fwd_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- if (gen_dep && !dep_expr.match (name))
- {
- wcerr << "error: dependency expression '" <<
- dep_expr.regex ().str ().c_str () << "' does not match '" <<
- name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- NarrowString hxx_name (header ? hxx_expr.replace (name) : NarrowString ());
- NarrowString ixx_name (inline_ ? ixx_expr.replace (name) : NarrowString ());
- NarrowString fwd_name (forward ? fwd_expr.replace (name) : NarrowString ());
- NarrowString dep_name (gen_dep ? dep_expr.replace (name) : NarrowString ());
-
- Path hxx_path (hxx_name);
- Path ixx_path (ixx_name);
- Path fwd_path (fwd_name);
- Path dep_path (dep_name);
- Paths cxx_paths;
-
- if (source)
- {
- if (parts > 1)
- {
- for (size_t i (0); i < parts; ++i)
- {
- std::ostringstream os;
- os << i;
-
- Regex expr (
- "#^(.+?)(\\.[^./\\\\]+)?$#$1" + parts_suffix + os.str () + "$2#");
-
- NarrowString part_name (expr.replace (name));
-
- if (!cxx_expr.match (part_name))
- {
- wcerr << "error: source expression '" <<
- cxx_expr.regex ().str ().c_str () << "' does not match '" <<
- part_name.c_str () << "'" << endl;
- throw Failed ();
- }
-
- cxx_paths.push_back (Path (cxx_expr.replace (part_name)));
- }
- }
- else
- cxx_paths.push_back (Path (cxx_expr.replace (name)));
- }
-
- Path out_dir;
-
- if (NarrowString dir = ops.output_dir ())
- {
- try
- {
- out_dir = Path (dir);
- }
- catch (InvalidPath const&)
- {
- wcerr << dir.c_str () << ": error: invalid path" << endl;
- throw Failed ();
- }
- }
-
- if (fpt && !generate_xml_schema)
- {
- // In the file-per-type mode the schema files are always local
- // unless the user added the directory so that we propagate this
- // to the output files.
- //
- Path fpt_dir (file_path.directory ());
-
- if (!fpt_dir.empty ())
- out_dir /= fpt_dir;
- }
-
- if (!out_dir.empty ())
- {
- hxx_path = out_dir / hxx_path;
- ixx_path = out_dir / ixx_path;
- fwd_path = out_dir / fwd_path;
- dep_path = out_dir / dep_path;
-
- for (Paths::iterator i (cxx_paths.begin ());
- i != cxx_paths.end (); ++i)
- *i = out_dir / *i;
- }
-
- //
- //
- WideOutputFileStream hxx;
- WideOutputFileStream ixx;
- WideOutputFileStream fwd;
- WideOutputFileStream dep;
- WideOutputFileStreams cxx;
-
- // DEP
- //
- if (gen_dep)
- {
- dep.open (dep_path.string ().c_str (), ios_base::out);
-
- if (!dep.is_open ())
- {
- wcerr << dep_path << ": error: unable to open in write mode" << endl;
- throw Failed ();
- }
-
- unlinks.add (dep_path);
- file_list.push_back (dep_path.string ());
- }
-
- // FWD
- //
- if (gen_cxx && forward)
- {
- fwd.open (fwd_path.string ().c_str (), ios_base::out);
-
- if (!fwd.is_open ())
- {
- wcerr << fwd_path << ": error: unable to open in write mode" << endl;
- throw Failed ();
- }
-
- unlinks.add (fwd_path);
- file_list.push_back (fwd_path.string ());
- }
-
- // HXX
- //
- if (gen_cxx && header)
- {
- hxx.open (hxx_path.string ().c_str (), ios_base::out);
-
- if (!hxx.is_open ())
- {
- wcerr << hxx_path << ": error: unable to open in write mode" << endl;
- throw Failed ();
- }
-
- unlinks.add (hxx_path);
- file_list.push_back (hxx_path.string ());
- }
-
- // IXX
- //
- if (gen_cxx && inline_)
- {
- ixx.open (ixx_path.string ().c_str (), ios_base::out);
-
- if (!ixx.is_open ())
- {
- wcerr << ixx_path << ": error: unable to open in write mode" << endl;
- throw Failed ();
- }
-
- unlinks.add (ixx_path);
- file_list.push_back (ixx_path.string ());
- }
-
- // CXX
- //
- if (gen_cxx && source)
- {
- for (Paths::iterator i (cxx_paths.begin ());
- i != cxx_paths.end (); ++i)
- {
- shared_ptr<WideOutputFileStream> s (
- new (shared) WideOutputFileStream (
- i->string ().c_str (), ios_base::out));
-
- if (!s->is_open ())
- {
- wcerr << *i << ": error: unable to open in write mode" << endl;
- throw Failed ();
- }
-
- unlinks.add (*i);
- file_list.push_back (i->string ());
- cxx.push_back (s);
- }
- }
-
- // Print copyright and license.
- //
- char const* copyright (
- ops.proprietary_license () ? copyright_proprietary : copyright_gpl);
-
- if (gen_cxx && header)
- hxx << copyright;
-
- if (gen_cxx && forward)
- fwd << copyright;
-
- if (ops.generate_doxygen ())
- {
- // Use native path format.
- //
- hxx << "/**" << endl
- << " * @file" << endl
- << " * @brief Generated from " << name.c_str () << "." << endl
- << " */" << endl
- << endl;
-
- }
-
- if (gen_cxx && inline_)
- ixx << copyright;
-
- if (gen_cxx && source)
- {
- for (WideOutputFileStreams::iterator i (cxx.begin ());
- i != cxx.end (); ++i)
- **i << copyright;
- }
-
-
- // Prologue.
- //
- WideInputFileStream prologue;
- {
- NarrowString name (ops.prologue_file ());
-
- if (name)
- open (prologue, name);
- }
-
- // Epilogue.
- //
- WideInputFileStream epilogue;
- {
- NarrowString name (ops.epilogue_file ());
-
- if (name)
- open (epilogue, name);
- }
-
- // SLOC counter.
- //
- size_t sloc_total (0);
- bool show_sloc (ops.show_sloc ());
-
- typedef
- compiler::ostream_filter<compiler::cxx_indenter, wchar_t>
- ind_filter;
-
- typedef
- compiler::ostream_filter<compiler::sloc_counter, wchar_t>
- sloc_filter;
-
- //
- //
- Regex guard_expr ("/([a-z])([A-Z])/$1_$2/"); // Split words.
- NarrowString guard_prefix (ops.guard_prefix ());
-
- if (!guard_prefix)
- guard_prefix = file_path.directory ().string ();
-
- if (guard_prefix)
- guard_prefix += '_';
-
- // DEP
- //
- if (gen_dep)
- {
- NarrowString target;
- NarrowStrings const& ts (ops.dep_target ());
-
- if (!ts.empty ())
- {
- for (NarrowStrings::const_iterator i (ts.begin ());
- i != ts.end (); ++i)
- target += (target.empty () ? "" : " \\\n") + *i;
- }
- else
- {
- target = hxx_path.string ();
-
- if (forward)
- target += " \\\n" + fwd_path.string ();
-
- if (inline_)
- target += " \\\n" + ixx_path.string ();
-
- for (Paths::iterator i (cxx_paths.begin ());
- i != cxx_paths.end (); ++i)
- target += " \\\n" + i->string ();
-
- target += " \\\n" + dep_path.string ();
- }
-
- dep << target.c_str () << ':';
-
- XSDFrontend::Generators::Dependencies gen;
- Paths prq (gen.generate (schema, file_path));
-
- for (Paths::iterator i (prq.begin ()); i != prq.end (); ++i)
- dep << " \\" << endl
- << " " << *i;
-
- dep << endl;
-
- // If requested, generate phony rules for included/imported schemas
- // but not the main file which is the first in the list.
- //
- if (ops.dep_phony () && prq.size () > 1)
- {
- for (Paths::iterator i (prq.begin () + 1); i != prq.end (); ++i)
- dep << endl
- << *i << ':' << endl;
- }
- }
-
- // FWD
- //
- if (gen_cxx && forward)
- {
- Context ctx (fwd,
- schema,
- file_path,
- ops,
- counts,
- generate_xml_schema,
- &string_literal_map,
- &fwd_expr,
- &hxx_expr,
- &ixx_expr);
-
- sloc_filter sloc (fwd);
-
- // Guard
- //
- String guard (guard_expr.replace (guard_prefix + fwd_name));
- guard = ctx.escape (guard); // make a c++ id
- std::transform (guard.begin (), guard.end(), guard.begin (), upcase);
-
- fwd << "#ifndef " << guard << endl
- << "#define " << guard << endl
- << endl;
-
- if (ctx.std >= cxx_version::cxx11)
- {
- fwd << "#ifndef XSD_CXX11" << endl
- << "#define XSD_CXX11" << endl
- << "#endif" << endl
- << endl;
- }
-
- if (ctx.char_type == L"char")
- {
- fwd << "#ifndef XSD_USE_CHAR" << endl
- << "#define XSD_USE_CHAR" << endl
- << "#endif" << endl
- << endl;
-
- fwd << "#ifndef XSD_CXX_TREE_USE_CHAR" << endl
- << "#define XSD_CXX_TREE_USE_CHAR" << endl
- << "#endif" << endl
- << endl;
- }
- else if (ctx.char_type == L"wchar_t")
- {
- fwd << "#ifndef XSD_USE_WCHAR" << endl
- << "#define XSD_USE_WCHAR" << endl
- << "#endif" << endl
- << endl;
-
- fwd << "#ifndef XSD_CXX_TREE_USE_WCHAR" << endl
- << "#define XSD_CXX_TREE_USE_WCHAR" << endl
- << "#endif" << endl
- << endl;
- }
-
- // Copy prologue.
- //
- fwd << "// Begin prologue." << endl
- << "//" << endl;
-
- append (fwd, ops.fwd_prologue (), ops.prologue ());
- append (fwd, ops.fwd_prologue_file (), prologue);
-
- fwd << "//" << endl
- << "// End prologue." << endl
- << endl;
-
- // Version check.
- //
- fwd << "#include <xsd/cxx/version.hxx>" << endl
- << endl
- << "#if (XSD_INT_VERSION != " << XSD_INT_VERSION << "L)" << endl
- << "#error XSD runtime version mismatch" << endl
- << "#endif" << endl
- << endl;
-
- fwd << "#include <xsd/cxx/pre.hxx>" << endl
- << endl;
-
- // Generate.
- //
- {
- ind_filter ind (fwd); // We don't want to indent prologues/epilogues.
- generate_forward (ctx);
- }
-
- fwd << "#include <xsd/cxx/post.hxx>" << endl
- << endl;
-
- // Copy epilogue.
- //
- fwd << "// Begin epilogue." << endl
- << "//" << endl;
-
- append (fwd, ops.fwd_epilogue_file (), epilogue);
- append (fwd, ops.fwd_epilogue (), ops.epilogue ());
-
- fwd << "//" << endl
- << "// End epilogue." << endl
- << endl;
-
- fwd << "#endif // " << guard << endl;
-
- if (show_sloc)
- wcerr << fwd_path << ": " << sloc.stream ().count () << endl;
-
- sloc_total += sloc.stream ().count ();
- }
-
- // HXX
- //
- if (gen_cxx && header)
- {
- Context ctx (hxx,
- schema,
- file_path,
- ops,
- counts,
- generate_xml_schema,
- &string_literal_map,
- &fwd_expr,
- &hxx_expr,
- &ixx_expr);
-
- sloc_filter sloc (hxx);
-
- // Guard
- //
- String guard (guard_expr.replace (guard_prefix + hxx_name));
- guard = ctx.escape (guard); // make a c++ id
- std::transform (guard.begin (), guard.end(), guard.begin (), upcase);
-
- hxx << "#ifndef " << guard << endl
- << "#define " << guard << endl
- << endl;
-
- if (!forward)
- {
- if (ctx.std >= cxx_version::cxx11)
- {
- hxx << "#ifndef XSD_CXX11" << endl
- << "#define XSD_CXX11" << endl
- << "#endif" << endl
- << endl;
- }
-
- if (ctx.char_type == L"char")
- {
- hxx << "#ifndef XSD_USE_CHAR" << endl
- << "#define XSD_USE_CHAR" << endl
- << "#endif" << endl
- << endl;
-
- hxx << "#ifndef XSD_CXX_TREE_USE_CHAR" << endl
- << "#define XSD_CXX_TREE_USE_CHAR" << endl
- << "#endif" << endl
- << endl;
- }
- else if (ctx.char_type == L"wchar_t")
- {
- hxx << "#ifndef XSD_USE_WCHAR" << endl
- << "#define XSD_USE_WCHAR" << endl
- << "#endif" << endl
- << endl;
-
- hxx << "#ifndef XSD_CXX_TREE_USE_WCHAR" << endl
- << "#define XSD_CXX_TREE_USE_WCHAR" << endl
- << "#endif" << endl
- << endl;
- }
- }
- else if (!generate_xml_schema)
- {
- // Generate it before the prologue so that we get the above
- // defines.
- //
- hxx << "#include " << ctx.process_include_path (fwd_name)
- << endl << endl;
- }
-
- // Copy prologue.
- //
- hxx << "// Begin prologue." << endl
- << "//" << endl;
-
- append (hxx, ops.hxx_prologue (), ops.prologue ());
- append (hxx, ops.hxx_prologue_file (), prologue);
-
- hxx << "//" << endl
- << "// End prologue." << endl
- << endl;
-
- // Version check.
- //
- hxx << "#include <xsd/cxx/config.hxx>" << endl
- << endl
- << "#if (XSD_INT_VERSION != " << XSD_INT_VERSION << "L)" << endl
- << "#error XSD runtime version mismatch" << endl
- << "#endif" << endl
- << endl;
-
- hxx << "#include <xsd/cxx/pre.hxx>" << endl
- << endl;
-
- // Generate.
- //
- {
- ind_filter ind (hxx); // We don't want to indent prologues/epilogues.
-
- if (!generate_xml_schema && !forward)
- generate_forward (ctx);
-
- generate_tree_header (ctx);
-
- if (!generate_xml_schema)
- {
- if (ops.generate_ostream ())
- generate_stream_header (ctx);
-
- if (!ops.generate_element_type () && !ops.suppress_parsing ())
- generate_parser_header (ctx);
-
- if (ops.generate_serialization ())
- generate_serialization_header (ctx);
-
- if (!ops.generate_insertion ().empty ())
- generate_stream_insertion_header (ctx);
- }
- }
-
- if (inline_)
- {
- hxx << "#ifndef XSD_DONT_INCLUDE_INLINE" << endl
- << "#include " << ctx.process_include_path (ixx_name) << endl
- << "#endif // XSD_DONT_INCLUDE_INLINE" << endl
- << endl;
- }
-
- hxx << "#include <xsd/cxx/post.hxx>" << endl
- << endl;
-
- // Copy epilogue.
- //
- hxx << "// Begin epilogue." << endl
- << "//" << endl;
-
- append (hxx, ops.hxx_epilogue_file (), epilogue);
- append (hxx, ops.hxx_epilogue (), ops.epilogue ());
-
- hxx << "//" << endl
- << "// End epilogue." << endl
- << endl;
-
- hxx << "#endif // " << guard << endl;
-
- if (show_sloc)
- wcerr << hxx_path << ": " << sloc.stream ().count () << endl;
-
- sloc_total += sloc.stream ().count ();
- }
-
-
- // IXX
- //
- if (gen_cxx && inline_)
- {
- Context ctx (ixx,
- schema,
- file_path,
- ops,
- counts,
- generate_xml_schema,
- &string_literal_map,
- &fwd_expr,
- &hxx_expr,
- &ixx_expr);
-
- sloc_filter sloc (ixx);
-
- // Guard
- //
- String guard (guard_expr.replace (guard_prefix + ixx_name));
- guard = ctx.escape (guard); // make a c++ id
- std::transform (guard.begin (), guard.end(), guard.begin (), upcase);
-
- ixx << "#ifndef " << guard.c_str () << endl
- << "#define " << guard.c_str () << endl
- << endl;
-
- // Copy prologue.
- //
- ixx << "// Begin prologue." << endl
- << "//" << endl;
-
- append (ixx, ops.ixx_prologue (), ops.prologue ());
- append (ixx, ops.ixx_prologue_file (), prologue);
-
- ixx << "//" << endl
- << "// End prologue." << endl
- << endl;
-
- // Generate.
- //
- {
- ind_filter ind (ixx); // We don't want to indent prologues/epilogues.
- generate_tree_inline (ctx, 1, 0);
- }
-
- // Copy epilogue.
- //
- ixx << "// Begin epilogue." << endl
- << "//" << endl;
-
- append (ixx, ops.ixx_epilogue_file (), epilogue);
- append (ixx, ops.ixx_epilogue (), ops.epilogue ());
-
- ixx << "//" << endl
- << "// End epilogue." << endl
- << endl;
-
- ixx << "#endif // " << guard.c_str () << endl;
-
- if (show_sloc)
- wcerr << ixx_path << ": " << sloc.stream ().count () << endl;
-
- sloc_total += sloc.stream ().count ();
- }
-
- // CXX
- //
- if (gen_cxx && source)
- {
- size_t first_unit (0); // First unit in the current part.
-
- for (size_t part (0); part < parts; ++part)
- {
- // Figure out the range of units for this part.
- //
- size_t last_unit (first_unit);
-
- if (units != 0)
- {
- size_t complexity (counts.complexity[last_unit]);
-
- while (complexity < complexity_per_part)
- {
- // Make sure there will be at least one unit for each part left.
- //
- if ((last_unit + 1) >= units ||
- (units - (last_unit + 1) - 1) < (parts - part - 1))
- break;
-
- // Check if the increase in complexity should be kept in this
- // part or moved to the next.
- //
- size_t new_complexity (
- complexity + counts.complexity[last_unit + 1]);
-
- if (new_complexity > complexity_per_part)
- {
- if ((new_complexity - complexity_per_part) >
- (counts.complexity[last_unit + 1] / 2))
- break;
- }
-
- last_unit++;
- complexity = new_complexity;
- }
-
- if (part + 1 == parts)
- {
- // Last part.
- //
- last_unit = units - 1;
- }
- }
-
- //
- //
- size_t first (first_unit);
- size_t last (last_unit);
-
- first_unit = last_unit + 1;
-
- //wcerr << "[" << first << ", " << last << "]: " << complexity
- // << endl;
-
- WideOutputFileStream& os (*cxx[part]);
-
- Context ctx (os,
- schema,
- file_path,
- ops,
- counts,
- generate_xml_schema,
- &string_literal_map,
- &fwd_expr,
- &hxx_expr,
- &ixx_expr);
-
- sloc_filter sloc (os);
-
- // Copy prologue.
- //
- os << "// Begin prologue." << endl
- << "//" << endl;
-
- append (os, ops.cxx_prologue (), ops.prologue ());
- append (os, ops.cxx_prologue_file (), prologue);
-
- os << "//" << endl
- << "// End prologue." << endl
- << endl;
-
- os << "#include <xsd/cxx/pre.hxx>" << endl
- << endl;
-
- os << "#include " << ctx.process_include_path (hxx_name) << endl
- << endl;
-
- // Generate.
- //
- {
- // We don't want to indent prologues/epilogues.
- //
- ind_filter ind (os);
-
- if (!inline_)
- generate_tree_inline (ctx, first, last);
-
- generate_tree_source (ctx, first, last);
-
- if (ops.generate_ostream ())
- generate_stream_source (ctx, first, last);
-
- if (!ops.generate_element_type () && !ops.suppress_parsing ())
- generate_parser_source (ctx, first, last);
-
- if (ops.generate_serialization ())
- generate_serialization_source (ctx, first, last);
-
- if (!ops.generate_extraction ().empty ())
- generate_stream_extraction_source (ctx);
-
- if (!ops.generate_insertion ().empty ())
- generate_stream_insertion_source (ctx);
- }
-
- os << "#include <xsd/cxx/post.hxx>" << endl
- << endl;
-
- // Copy epilogue.
- //
- os << "// Begin epilogue." << endl
- << "//" << endl;
-
- append (os, ops.cxx_epilogue_file (), epilogue);
- append (os, ops.cxx_epilogue (), ops.epilogue ());
-
- os << "//" << endl
- << "// End epilogue." << endl
- << endl;
-
- if (show_sloc)
- wcerr << cxx_paths[part] << ": " << sloc.stream ().count ()
- << endl;
-
- sloc_total += sloc.stream ().count ();
- }
- }
-
- return sloc_total;
- }
- catch (UnrepresentableCharacter const& e)
- {
- wcerr << "error: character at position " << e.position () << " "
- << "in string '" << e.string () << "' is unrepresentable in "
- << "the target encoding" << endl;
-
- wcerr << "info: use the --custom-literals option to provide custom "
- << "string literals mapping" << endl;
-
- throw Failed ();
- }
- catch (NoNamespaceMapping const& e)
- {
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": error: unable to map XML Schema namespace '" << e.ns ()
- << "' to C++ namespace" << endl;
-
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": info: use the --namespace-map or --namespace-regex option "
- << "to provide custom mapping" << endl;
-
- throw Failed ();
- }
- catch (InvalidNamespaceMapping const& e)
- {
- wcerr << "error: invalid XML to C++ namespace mapping specified: "
- << "'" << e.mapping () << "': " << e.reason () << endl;
-
- throw Failed ();
- }
- catch (InvalidCustomTypeMapping const& e)
- {
- wcerr << "error: invalid custom type mapping specified: "
- << "'" << e.mapping () << "': " << e.reason () << endl;
-
- throw Failed ();
- }
- catch (cutl::re::format const& e)
- {
- wcerr << "error: invalid regex: '" <<
- e.regex ().c_str () << "': " <<
- e.description ().c_str () << endl;
-
- throw Failed ();
- }
- catch (cutl::re::wformat const& e)
- {
- wcerr << "error: invalid regex: '" <<
- e.regex () << "': " << e.description ().c_str () << endl;
-
- throw Failed ();
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/generator.hxx b/xsd/xsd/cxx/tree/generator.hxx
deleted file mode 100644
index f81f8e3..0000000
--- a/xsd/xsd/cxx/tree/generator.hxx
+++ /dev/null
@@ -1,45 +0,0 @@
-// file : xsd/cxx/tree/generator.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_GENERATOR_HXX
-#define CXX_TREE_GENERATOR_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-#include <xsd.hxx>
-#include <types.hxx>
-
-#include <cxx/literal-map.hxx>
-#include <cxx/tree/options.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- class Generator
- {
- public:
- static void
- usage ();
-
- struct Failed {};
-
- static size_t
- generate (options const&,
- XSDFrontend::SemanticGraph::Schema&,
- XSDFrontend::SemanticGraph::Path const& file,
- bool file_per_type,
- StringLiteralMap const&,
- const WarningSet& disabled_warnings,
- FileList& file_list,
- AutoUnlinks& unlinks);
-
- private:
- Generator ();
- };
- }
-}
-
-#endif // CXX_TREE_GENERATOR_HXX
diff --git a/xsd/xsd/cxx/tree/name-processor.cxx b/xsd/xsd/cxx/tree/name-processor.cxx
deleted file mode 100644
index 1f3844b..0000000
--- a/xsd/xsd/cxx/tree/name-processor.cxx
+++ /dev/null
@@ -1,2400 +0,0 @@
-// file : xsd/cxx/tree/name-processor.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <set>
-#include <map>
-#include <vector>
-#include <sstream>
-#include <iostream>
-
-#include <cutl/re.hxx>
-
-#include <cxx/tree/default-value.hxx>
-#include <cxx/tree/name-processor.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- //
- //
- typedef set<String> NameSet;
-
- class Context: public Tree::Context
- {
- public:
- struct Failed {};
-
- Context (Tree::options const& ops,
- Counts const& counts,
- bool generate_xml_schema,
- SemanticGraph::Schema& root,
- SemanticGraph::Path const& path,
- StringLiteralMap const& map)
- : Tree::Context (std::wcerr,
- root,
- path,
- ops,
- counts,
- generate_xml_schema,
- &map,
- 0,
- 0,
- 0),
- global_type_names (global_type_names_),
- global_element_names (global_element_names_),
- detach (ops.generate_detach ()),
- type_regex (type_regex_),
- accessor_regex (accessor_regex_),
- one_accessor_regex (one_accessor_regex_),
- opt_accessor_regex (opt_accessor_regex_),
- seq_accessor_regex (seq_accessor_regex_),
- modifier_regex (modifier_regex_),
- one_modifier_regex (one_modifier_regex_),
- opt_modifier_regex (opt_modifier_regex_),
- seq_modifier_regex (seq_modifier_regex_),
- parser_regex (parser_regex_),
- serializer_regex (serializer_regex_),
- const_regex (const_regex_),
- enumerator_regex (enumerator_regex_),
- element_type_regex (element_type_regex_)
- {
- NarrowString tn (options.type_naming ());
- NarrowString fn (options.function_naming ());
-
- // Type name regex.
- //
- {
- // Predefined rules. The most frequently used come last: global
- // names, two components (<name>,type), three components
- // (<name>,const,iterator), and one component (value in enum).
- //
- if (tn == "knr")
- {
- type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/$1_$2_$3_$4/");
- type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/$1_$2_$3/");
- type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+)/$1_$2/");
- type_regex.push_back ("/(?:[^ ]* )?([^,]+)/$1/");
-
- /*
- type_regex.push_back ("/([^,]+)/$1/");
- type_regex.push_back ("/([^,]+),([^,]+),([^,]+),([^,]+)/$1_$2_$3_$4/");
- type_regex.push_back ("/([^,]+),([^,]+),([^,]+)/$1_$2_$3/");
- type_regex.push_back ("/([^,]+),([^,]+)/$1_$2/");
- type_regex.push_back ("/[^ ]* (.+)/$1/");
- */
- }
- else
- {
- // Upper camel case or Java.
- //
- type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\\u$1\\u$2\\u$3\\u$4/");
- type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\\u$1\\u$2\\u$3/");
- type_regex.push_back ("/(?:[^ ]* )?([^,]+),([^,]+)/\\u$1\\u$2/");
- type_regex.push_back ("/(?:[^ ]* )?([^,]+)/\\u$1/");
-
- /*
- type_regex.push_back ("/([^,]+)/\\u$1/");
- type_regex.push_back ("/([^,]+),([^,]+),([^,]+),([^,]+)/\\u$1\\u$2\\u$3\\u$4/");
- type_regex.push_back ("/([^,]+),([^,]+),([^,]+)/\\u$1\\u$2\\u$3/");
- type_regex.push_back ("/([^,]+),([^,]+)/\\u$1\\u$2/");
- type_regex.push_back ("/[^ ]* (.+)/\\u$1/");
- */
-
- }
-
- compile_regex (options.type_regex (), type_regex, "type");
- }
-
- // Accessor name regex.
- //
- {
- // Predefined rules. The most frequently used come last: one
- // component, three components (<name>,default,value) and two
- // component (dom,document).
- //
- if (fn == "knr")
- {
- accessor_regex.push_back ("/([^,]+),([^,]+)/$1_$2/");
- accessor_regex.push_back ("/([^,]+),([^,]+),([^,]+)/$1_$2_$3/");
- accessor_regex.push_back ("/([^,]+)/$1/");
- }
- else if (fn == "lcc")
- {
- accessor_regex.push_back ("/([^,]+),([^,]+)/\\l$1\\u$2/");
- accessor_regex.push_back ("/([^,]+),([^,]+),([^,]+)/\\l$1\\u$2\\u$3/");
- accessor_regex.push_back ("/([^,]+)/\\l$1/");
- }
- else
- {
- // Java: add get.
- //
- accessor_regex.push_back ("/([^,]+),([^,]+)/get\\u$1\\u$2/");
- accessor_regex.push_back ("/([^,]+),([^,]+),([^,]+)/get\\u$1\\u$2\\u$3/");
- accessor_regex.push_back ("/([^,]+)/get\\u$1/");
- }
-
- compile_regex (options.accessor_regex (),
- accessor_regex,
- "accessor");
-
- compile_regex (options.one_accessor_regex (),
- one_accessor_regex,
- "one accessor");
-
- compile_regex (options.opt_accessor_regex (),
- opt_accessor_regex,
- "optional accessor");
-
- compile_regex (options.seq_accessor_regex (),
- seq_accessor_regex,
- "sequence accessor");
- }
-
- // Modifier name regex.
- //
- {
- if (fn == "knr")
- {
- // any,attribute
- //
- modifier_regex.push_back ("/([^,]+),([^,]+)/$1_$2/");
- }
- else if (fn == "lcc")
- {
- modifier_regex.push_back ("/([^,]+),([^,]+)/\\l$1\\u$2/");
- modifier_regex.push_back ("/([^,]+)/\\l$1/");
- }
- else
- {
- // Java: add set.
- //
- modifier_regex.push_back ("/([^,]+),([^,]+)/set\\u$1\\u$2/");
- modifier_regex.push_back ("/([^,]+)/set\\u$1/");
- modifier_regex.push_back ("/detach,([^,]+)/detach\\u$1/");
- }
-
- compile_regex (options.modifier_regex (),
- modifier_regex,
- "modifier");
-
- compile_regex (options.one_modifier_regex (),
- one_modifier_regex,
- "one modifier");
-
- compile_regex (options.opt_modifier_regex (),
- opt_modifier_regex,
- "optional modifier");
-
- compile_regex (options.seq_modifier_regex (),
- seq_modifier_regex,
- "sequence modifier");
- }
-
- // Parser name regex.
- //
- {
- if (fn == "lcc")
- {
- parser_regex.push_back ("/(.+)/\\l$1/");
- }
- else if (fn == "java")
- {
- // Java: add parse.
- //
- parser_regex.push_back ("/(.+)/parse\\u$1/");
- }
-
- compile_regex (options.parser_regex (), parser_regex, "parser");
- }
-
- // Serializer name regex.
- //
- {
- if (fn == "lcc")
- {
- serializer_regex.push_back ("/(.+)/\\l$1/");
- }
- else if (fn == "java")
- {
- // Java: add serialize.
- //
- serializer_regex.push_back ("/(.+)/serialize\\u$1/");
- }
-
- compile_regex (options.serializer_regex (),
- serializer_regex,
- "serializer");
- }
-
- // Const regex.
- //
- {
- if (fn == "knr")
- {
- const_regex.push_back ("/([^,]+),([^,]+),([^,]+)/$1_$2_$3/");
- const_regex.push_back ("/([^,]+),([^,]+)/$1_$2/");
- }
- else if (fn == "lcc")
- {
- const_regex.push_back ("/([^,]+),([^,]+),([^,]+)/\\l$1_\\u$2_\\u$3/");
- const_regex.push_back ("/([^,]+),([^,]+)/\\l$1\\u$2/");
- }
- else
- {
- // Java: all uppercase.
- //
- const_regex.push_back ("/([^,]+),([^,]+),([^,]+)/\\U$1_$2_$3/");
- const_regex.push_back ("/([^,]+),([^,]+)/\\U$1_$2/");
- }
-
- compile_regex (options.const_regex (), const_regex, "const");
- }
-
- // Enumerator name regex.
- //
- {
- // By default map an empty enumerator to the 'empty' word.
- //
- enumerator_regex.push_back ("/^$/empty/");
-
- compile_regex (options.enumerator_regex (),
- enumerator_regex,
- "enumerator");
- }
-
- // Element type regex.
- //
- compile_regex (options.element_type_regex (),
- element_type_regex,
- "element_type");
- }
-
- protected:
- Context (Context& c)
- : Tree::Context (c),
- global_type_names (c.global_type_names),
- global_element_names (c.global_element_names),
- detach (c.detach),
- type_regex (c.type_regex),
- accessor_regex (c.accessor_regex),
- one_accessor_regex (c.one_accessor_regex),
- opt_accessor_regex (c.opt_accessor_regex),
- seq_accessor_regex (c.seq_accessor_regex),
- modifier_regex (c.modifier_regex),
- one_modifier_regex (c.one_modifier_regex),
- opt_modifier_regex (c.opt_modifier_regex),
- seq_modifier_regex (c.seq_modifier_regex),
- parser_regex (c.parser_regex),
- serializer_regex (c.serializer_regex),
- const_regex (c.const_regex),
- enumerator_regex (c.enumerator_regex),
- element_type_regex (c.element_type_regex)
- {
- }
-
- public:
- typedef cutl::re::wregexsub Regex;
- typedef cutl::re::wformat RegexFormat;
-
- struct RegexVector: vector<Regex>
- {
- void
- push_back (String const& r)
- {
- vector<Regex>::push_back (Regex (r));
- }
- };
-
- String
- process_regex (String const& name,
- RegexVector const& rv,
- String const& id)
- {
- bool trace (options.name_regex_trace ());
-
- if (trace)
- os << id << " name: '" << name << "'" << endl;
-
- for (RegexVector::const_reverse_iterator i (rv.rbegin ());
- i != rv.rend (); ++i)
- {
- if (trace)
- os << "try: '" << i->regex () << "' : ";
-
- if (i->match (name))
- {
- String r (i->replace (name));
-
- if (trace)
- os << "'" << r << "' : +" << endl;
-
- return r;
- }
-
- if (trace)
- os << '-' << endl;
- }
-
- return name;
- }
-
- String
- process_regex (String const& name,
- RegexVector const& primary,
- RegexVector const& backup,
- String const& id)
- {
- bool trace (options.name_regex_trace ());
-
- if (trace)
- os << id << " name: '" << name << "'" << endl;
-
- for (RegexVector::const_reverse_iterator i (primary.rbegin ());
- i != primary.rend (); ++i)
- {
- if (trace)
- os << "try: '" << i->regex () << "' : ";
-
- if (i->match (name))
- {
- String r (i->replace (name));
-
- if (trace)
- os << "'" << r << "' : +" << endl;
-
- return r;
- }
-
- if (trace)
- os << '-' << endl;
- }
-
- for (RegexVector::const_reverse_iterator i (backup.rbegin ());
- i != backup.rend (); ++i)
- {
- if (trace)
- os << "try: '" << i->regex () << "' : ";
-
- if (i->match (name))
- {
- String r (i->replace (name));
-
- if (trace)
- os << "'" << r << "' : +" << endl;
-
- return r;
- }
-
- if (trace)
- os << '-' << endl;
- }
-
- return name;
- }
-
- String
- process_regex (String const& ns,
- String const& name,
- RegexVector const& rv,
- String const& id)
- {
- String s (ns + L' ' + name);
- bool trace (options.name_regex_trace ());
-
- if (trace)
- os << id << " name: '" << s << "'" << endl;
-
- for (RegexVector::const_reverse_iterator i (rv.rbegin ());
- i != rv.rend (); ++i)
- {
- if (trace)
- os << "try: '" << i->regex () << "' : ";
-
- if (i->match (s))
- {
- String r (i->replace (s));
-
- if (trace)
- os << "'" << r << "' : +" << endl;
-
- return r;
- }
-
- if (trace)
- os << '-' << endl;
- }
-
- return name;
- }
-
- String
- process_regex (String const& ns,
- String const& name,
- RegexVector const& primary,
- RegexVector const& backup,
- String const& id)
- {
- String s (ns + L' ' + name);
- bool trace (options.name_regex_trace ());
-
- if (trace)
- os << id << " name: '" << s << "'" << endl;
-
- for (RegexVector::const_reverse_iterator i (primary.rbegin ());
- i != primary.rend (); ++i)
- {
- if (trace)
- os << "try: '" << i->regex () << "' : ";
-
- if (i->match (s))
- {
- String r (i->replace (s));
-
- if (trace)
- os << "'" << r << "' : +" << endl;
-
- return r;
- }
-
- if (trace)
- os << '-' << endl;
- }
-
- for (RegexVector::const_reverse_iterator i (backup.rbegin ());
- i != backup.rend (); ++i)
- {
- if (trace)
- os << "try: '" << i->regex () << "' : ";
-
- if (i->match (s))
- {
- String r (i->replace (s));
-
- if (trace)
- os << "'" << r << "' : +" << endl;
-
- return r;
- }
-
- if (trace)
- os << '-' << endl;
- }
-
- return name;
- }
-
- public:
- String
- find_name (String const& base_name,
- NameSet& set,
- bool insert = true)
- {
- String name (base_name);
-
- for (size_t i (1); set.find (name) != set.end (); ++i)
- {
- std::wostringstream os;
- os << i;
- name = base_name + os.str ();
- }
-
- if (insert)
- set.insert (name);
-
- return name;
- }
-
- private:
- void
- compile_regex (NarrowStrings const& sv,
- RegexVector& rv,
- String const& id)
- {
- for (NarrowStrings::const_iterator i (sv.begin ()); i != sv.end ();
- ++i)
- {
- try
- {
- rv.push_back (*i);
- }
- catch (RegexFormat const& e)
- {
- os << "error: invalid " << id << " name regex: '" <<
- e.regex () << "': " << e.description ().c_str () << endl;
-
- throw Failed ();
- }
- }
- }
-
- private:
- map<String, NameSet> global_type_names_;
- map<String, NameSet> global_element_names_;
-
- RegexVector type_regex_;
- RegexVector accessor_regex_;
- RegexVector one_accessor_regex_;
- RegexVector opt_accessor_regex_;
- RegexVector seq_accessor_regex_;
- RegexVector modifier_regex_;
- RegexVector one_modifier_regex_;
- RegexVector opt_modifier_regex_;
- RegexVector seq_modifier_regex_;
- RegexVector parser_regex_;
- RegexVector serializer_regex_;
- RegexVector const_regex_;
- RegexVector enumerator_regex_;
- RegexVector element_type_regex_;
-
- public:
- map<String, NameSet>& global_type_names;
- map<String, NameSet>& global_element_names;
-
- bool detach;
-
- RegexVector& type_regex;
- RegexVector& accessor_regex;
- RegexVector& one_accessor_regex;
- RegexVector& opt_accessor_regex;
- RegexVector& seq_accessor_regex;
- RegexVector& modifier_regex;
- RegexVector& one_modifier_regex;
- RegexVector& opt_modifier_regex;
- RegexVector& seq_modifier_regex;
- RegexVector& parser_regex;
- RegexVector& serializer_regex;
- RegexVector& const_regex;
- RegexVector& enumerator_regex;
- RegexVector& element_type_regex;
- };
-
- //
- //
- struct Enumerator: Traversal::Enumerator, Context
- {
- Enumerator (Context& c, NameSet& set)
- : Context (c), set_ (set)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- // Process the name with enumerator name regex.
- //
- String name (
- process_regex (e.name (), enumerator_regex, L"enumerator"));
-
- // Escape and unclash.
- //
- name = find_name (escape (name), set_);
- e.context ().set ("name", name);
- }
-
- private:
- NameSet& set_;
- };
-
- //
- //
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- // Use processed name.
- //
- String name (e.context ().get<String> ("name"));
-
- // If renamed name is empty then we are not generating
- // anything for this type and name processing is not
- // required.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- NameSet enum_set;
- enum_set.insert (name);
-
- Enumerator enumerator (*this, enum_set);
- Traversal::Names names (enumerator);
-
- Traversal::Enumeration::names (e, names);
-
- // Assign name to the value type. First process the name
- // with type name regex.
- //
- String value_name (
- escape (process_regex ("value", type_regex, L"type")));
- e.context ().set ("value", find_name (value_name, enum_set));
- }
- };
-
- //
- //
- struct PrimaryMember: Traversal::Member, Context
- {
- PrimaryMember (Context& c, NameSet& name_set, NameSet& stem_set)
- : Context (c), name_set_ (name_set), stem_set_ (stem_set)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (Tree::Context::skip (m))
- return;
-
- String stem (find_name (m.name (), stem_set_));
-
- m.context ().set ("stem", stem);
- m.context ().set ("name",
- find_name (escape (stem), name_set_, false));
- }
-
- private:
- NameSet& name_set_;
- NameSet& stem_set_;
- };
-
- //
- //
- struct DerivedMember: Traversal::Member, Context
- {
- DerivedMember (Context& c, NameSet& name_set)
- : Context (c), name_set_ (name_set)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (Tree::Context::skip (m))
- return;
-
- SemanticGraph::Complex& c (
- dynamic_cast<SemanticGraph::Complex&> (m.scope ()));
-
- size_t max (Tree::Context::max (m));
- size_t min (Tree::Context::min (m));
-
- String const& s (m.context ().get<String> ("stem"));
- String const& b (m.context ().get<String> ("name"));
-
- bool def_attr (m.default_p () &&
- m.is_a<SemanticGraph::Attribute> ());
-
- // Accessors/modifiers. Note that we postpone inserting
- // the names into the name_set to avoid over-escaping.
- //
- String an, mn;
-
- if (max != 1)
- {
- an = find_name (
- escape (process_regex (s,
- seq_accessor_regex,
- accessor_regex,
- L"sequence accessor")),
- name_set_,
- false);
-
- mn = find_name (
- escape (process_regex (s,
- seq_modifier_regex,
- modifier_regex,
- L"sequence modifier")),
- name_set_,
- false);
- }
- else if (min == 0 && !def_attr)
- {
- an = find_name (
- escape (process_regex (s,
- opt_accessor_regex,
- accessor_regex,
- L"optional accessor")),
- name_set_,
- false);
-
- mn = find_name (
- escape (process_regex (s,
- opt_modifier_regex,
- modifier_regex,
- L"optional modifier")),
- name_set_,
- false);
- }
- else
- {
- an = find_name (
- escape (process_regex (s,
- one_accessor_regex,
- accessor_regex,
- L"one accessor")),
- name_set_,
- false);
-
- mn = find_name (
- escape (process_regex (s,
- one_modifier_regex,
- modifier_regex,
- L"one modifier")),
- name_set_,
- false);
- }
-
- m.context ().set ("aname", an);
- m.context ().set ("mname", mn);
-
- name_set_.insert (b);
-
- if (an != b)
- name_set_.insert (an);
-
- if (mn != b && mn != an)
- name_set_.insert (mn);
-
- // Detach.
- //
- if (detach && max == 1 && (min == 1 || def_attr))
- {
- String dn (find_name (
- escape (process_regex (L"detach," + s,
- one_modifier_regex,
- modifier_regex,
- L"one modifier")),
- name_set_));
-
- m.context ().set ("dname", dn);
- }
-
- // Types.
- //
- m.context ().set (
- "type",
- find_name (
- escape (process_regex (s + L",type", type_regex, L"type")),
- name_set_));
-
- m.context ().set (
- "traits",
- find_name (
- escape (process_regex (s + L",traits", type_regex, L"type")),
- name_set_));
-
- if (max != 1)
- {
- m.context ().set (
- "container",
- find_name (
- escape (process_regex (s + L",sequence", type_regex, L"type")),
- name_set_));
-
- m.context ().set (
- "iterator",
- find_name (
- escape (process_regex (s + L",iterator", type_regex, L"type")),
- name_set_));
-
- m.context ().set (
- "const-iterator",
- find_name (
- escape (
- process_regex (s + L",const,iterator", type_regex, L"type")),
- name_set_));
- }
- else if (min == 0 && !def_attr)
- {
- m.context ().set (
- "container",
- find_name (
- escape (process_regex (s + L",optional", type_regex, L"type")),
- name_set_));
- }
-
- // Data member.
- //
- m.context ().set ("member", find_name (b + L"_", name_set_));
-
- // Default value.
- //
- if (m.default_p ())
- {
- bool simple (true);
-
- if (m.is_a<SemanticGraph::Element> ())
- {
- IsSimpleType test (simple);
- test.dispatch (m.type ());
- }
-
- if (simple)
- {
- String an (
- escape (
- process_regex (
- s + L",default,value", accessor_regex, L"accessor")));
-
- m.context ().set ("default-value", find_name (an, name_set_));
-
- bool lit (false);
- {
- IsLiteralValue test (lit);
- test.dispatch (m.type ());
- }
-
- if (!lit)
- {
- m.context ().set (
- "default-value-member",
- find_name (b + L"_default_value_", name_set_));
- }
- }
- }
-
- // Element id.
- //
- if (m.is_a<SemanticGraph::Element> () && ordered_p (c))
- {
- String id (
- escape (
- process_regex (
- s + L",id", const_regex, L"const")));
-
- m.context ().set ("ordered-id-name", find_name (id, name_set_));
- }
- }
-
- private:
- NameSet& name_set_;
- };
-
-
- //
- //
- struct Any: Traversal::Any, Traversal::AnyAttribute, Context
- {
- Any (Context& c,
- NameSet& name_set,
- NameSet& stem_set,
- bool& has_wildcard)
- : Context (c),
- name_set_ (name_set),
- stem_set_ (stem_set),
- has_wildcard_ (has_wildcard)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- SemanticGraph::Complex& c (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ()));
-
- size_t max (Tree::Context::max (a));
- size_t min (Tree::Context::min (a));
-
- String s (find_name (L"any", stem_set_));
-
- String b (find_name (escape (s), name_set_, false));
- a.context ().set ("name", b);
-
- // Accessors/modifiers. Note that we postpone inserting the
- // names into the name_set to avoid over-escaping.
- //
- String an, mn;
-
- if (max != 1)
- {
- an = find_name (
- escape (process_regex (s,
- seq_accessor_regex,
- accessor_regex,
- L"sequence accessor")),
- name_set_,
- false);
-
- mn = find_name (
- escape (process_regex (s,
- seq_modifier_regex,
- modifier_regex,
- L"sequence modifier")),
- name_set_,
- false);
- }
- else if (min == 0)
- {
- an = find_name (
- escape (process_regex (s,
- opt_accessor_regex,
- accessor_regex,
- L"optional accessor")),
- name_set_,
- false);
-
- mn = find_name (
- escape (process_regex (s,
- opt_modifier_regex,
- modifier_regex,
- L"optional modifier")),
- name_set_,
- false);
- }
- else
- {
- an = find_name (
- escape (process_regex (s,
- one_accessor_regex,
- accessor_regex,
- L"one accessor")),
- name_set_,
- false);
-
- mn = find_name (
- escape (process_regex (s,
- one_modifier_regex,
- modifier_regex,
- L"one modifier")),
- name_set_,
- false);
- }
-
- a.context ().set ("aname", an);
- a.context ().set ("mname", mn);
-
- name_set_.insert (b);
-
- if (an != b)
- name_set_.insert (an);
-
- if (mn != b && mn != an)
- name_set_.insert (mn);
-
- // Types
- //
- if (max != 1)
- {
- a.context ().set (
- "container",
- find_name (
- escape (process_regex (s + L",sequence", type_regex, L"type")),
- name_set_));
-
- a.context ().set (
- "iterator",
- find_name (
- escape (process_regex (s + L",iterator", type_regex, L"type")),
- name_set_));
-
- a.context ().set (
- "const-iterator",
- find_name (
- escape (
- process_regex (s + L",const,iterator", type_regex, L"type")),
- name_set_));
- }
- else if (min == 0)
- {
- a.context ().set (
- "container",
- find_name (
- escape (process_regex (s + L",optional", type_regex, L"type")),
- name_set_));
- }
-
- // Data member.
- //
- a.context ().set ("member", find_name (b + L"_", name_set_));
-
- // Wildcard id.
- //
- if (ordered_p (c))
- {
- String id (
- escape (
- process_regex (
- s + L",id", const_regex, L"const")));
-
- a.context ().set ("ordered-id-name", find_name (id, name_set_));
- }
-
- if (!has_wildcard_)
- has_wildcard_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String s (find_name (L"any,attribute", stem_set_));
-
- String b (find_name (escape (s), name_set_, false));
- a.context ().set ("name", b);
-
- // Accessors/modifiers. Note that we postpone inserting the
- // names into the name_set to avoid over-escaping.
- //
- String an (
- find_name (
- escape (process_regex (s, accessor_regex, L"accessor")),
- name_set_,
- false));
-
- String mn (
- find_name (
- escape (process_regex (s, modifier_regex, L"modifier")),
- name_set_,
- false));
-
- a.context ().set ("aname", an);
- a.context ().set ("mname", mn);
-
- name_set_.insert (b);
-
- if (an != b)
- name_set_.insert (an);
-
- if (mn != b && mn != an)
- name_set_.insert (mn);
-
- // Types
- //
- a.context ().set (
- "container",
- find_name (
- escape (process_regex (s + L",set", type_regex, L"type")),
- name_set_));
-
- a.context ().set (
- "iterator",
- find_name (
- escape (process_regex (s + L",iterator", type_regex, L"type")),
- name_set_));
-
- a.context ().set (
- "const-iterator",
- find_name (
- escape (
- process_regex (s + L",const,iterator", type_regex, L"type")),
- name_set_));
-
- // Data member.
- //
- a.context ().set ("member", find_name (b + L"_", name_set_));
-
- if (!has_wildcard_)
- has_wildcard_ = true;
- }
-
- private:
- NameSet& name_set_;
- NameSet& stem_set_;
- bool& has_wildcard_;
- };
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- SemanticGraph::Context& ctx (c.context ());
-
- // We leave this set around to allow other mappings to use
- // this information.
- //
- ctx.set ("cxx-tree-name-processor-stem-set", NameSet ());
- ctx.set ("cxx-tree-name-processor-member-set", NameSet ());
-
- // Use processed name.
- //
- String name (ctx.get<String> ("name"));
-
- // If renamed name is empty then we are not generating
- // anything for this type and name processing is not
- // required.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- NameSet& stem_set (
- ctx.get<NameSet> ("cxx-tree-name-processor-stem-set"));
-
- NameSet& member_set (
- ctx.get<NameSet> ("cxx-tree-name-processor-member-set"));
-
- stem_set.insert (c.name ());
- member_set.insert (name);
-
- // Add our base's stems and members to the initial list.
- //
- if (c.inherits_p ())
- {
- // @@ What if this types name is the same as one of base's
- // members?
- //
- SemanticGraph::Type& base (c.inherits ().base ());
-
- if (base.is_a<SemanticGraph::Complex> () &&
- !base.is_a<SemanticGraph::Enumeration> ())
- {
- if (!base.context ().count (
- "cxx-tree-name-processor-member-set"))
- {
- dispatch (base);
- }
-
- NameSet const& base_stem_set (
- base.context ().get<NameSet> (
- "cxx-tree-name-processor-stem-set"));
-
- stem_set.insert (base_stem_set.begin (), base_stem_set.end ());
-
- NameSet const& base_member_set (
- base.context ().get<NameSet> (
- "cxx-tree-name-processor-member-set"));
-
- member_set.insert (base_member_set.begin (),
- base_member_set.end ());
- }
- }
-
- // First assign the "primary" names.
- //
- {
- PrimaryMember member (*this, member_set, stem_set);
- Traversal::Names names (member);
-
- Complex::names (c, names);
- }
-
- // Derived names for members.
- //
- {
- DerivedMember member (*this, member_set);
- Traversal::Names names (member);
-
- Complex::names (c, names);
- }
-
- // Names for the mixed content.
- //
- if (mixed_p (c))
- {
- // Check if we already have the mixed content down inheritance
- // hierarchy.
- //
- using SemanticGraph::Complex;
-
- for (Complex* p (&c); p->inherits_p ();)
- {
- if (Complex* b = dynamic_cast<Complex*> (
- &p->inherits ().base ()))
- {
- if (mixed_p (*b))
- {
- SemanticGraph::Context& bctx (b->context ());
- ctx.set ("mixed-type", bctx.get<String> ("mixed-type"));
- ctx.set ("mixed-const-iterator",
- bctx.get<String> ("mixed-const-iterator"));
- ctx.set ("mixed-ordered-id-name",
- bctx.get<String> ("mixed-ordered-id-name"));
- ctx.set ("mixed-aname", bctx.get<String> ("mixed-aname"));
- ctx.set ("mixed-member", bctx.get<String> ("mixed-member"));
- ctx.set ("mixed-in-base", true);
- break;
- }
-
- p = b;
- }
- else
- break;
- }
-
- // If not, set up the names.
- //
- if (!ctx.count ("mixed-in-base"))
- {
- String s (find_name (L"text,content", stem_set));
- String n (find_name (escape (s), member_set, false));
-
- String an (find_name (
- escape (process_regex (s,
- seq_accessor_regex,
- accessor_regex,
- L"sequence accessor")),
- member_set,
- false));
-
- String mn (find_name (
- escape (process_regex (s,
- seq_modifier_regex,
- modifier_regex,
- L"sequence modifier")),
- member_set,
- false));
-
- ctx.set ("mixed-aname", an);
- ctx.set ("mixed-mname", mn);
-
- member_set.insert (name);
-
- if (an != n)
- member_set.insert (an);
-
- if (mn != n && mn != an)
- member_set.insert (mn);
-
- // Types.
- //
- ctx.set (
- "mixed-type",
- find_name (
- escape (process_regex (s + L",type", type_regex, L"type")),
- member_set));
-
- ctx.set (
- "mixed-container",
- find_name (
- escape (process_regex (s + L",sequence", type_regex, L"type")),
- member_set));
-
- ctx.set (
- "mixed-iterator",
- find_name (
- escape (process_regex (s + L",iterator", type_regex, L"type")),
- member_set));
-
- ctx.set (
- "mixed-const-iterator",
- find_name (
- escape (
- process_regex (s + L",const,iterator", type_regex, L"type")),
- member_set));
-
- // Text content id.
- //
- ctx.set (
- "mixed-ordered-id-name",
- find_name (
- escape (
- process_regex (s + L",id", const_regex, L"const")),
- member_set));
-
- // Data member.
- //
- ctx.set ("mixed-member", find_name (n + L"_", member_set));
- }
- }
-
- // Names for wildcards.
- //
- if (options.generate_wildcard ())
- {
- bool has_wildcard (false);
- Any any (*this, member_set, stem_set, has_wildcard);
- Traversal::Names names (any);
- Complex::names (c, names);
-
- // Assign names for dom_document.
- //
- if (has_wildcard)
- {
- // Check if we already have dom_document down inheritance
- // hierarchy.
- //
- for (SemanticGraph::Complex* p (&c); p->inherits_p ();)
- {
- if (SemanticGraph::Complex* base =
- dynamic_cast<SemanticGraph::Complex*> (
- &p->inherits ().base ()))
- {
- if (base->context ().count ("dom-document"))
- {
- c.context ().set (
- "dom-document",
- base->context ().get<String> ("dom-document"));
- break;
- }
-
- p = base;
- }
- else
- break;
- }
-
- // If not, set up the names.
- //
- if (!c.context ().count ("dom-document"))
- {
- String stem (find_name (L"dom,document", stem_set));
-
- String an (
- escape (
- process_regex (stem, accessor_regex, L"accessor")));
-
- c.context ().set ("dom-document", find_name (an, member_set));
-
- c.context ().set (
- "dom-document-member",
- find_name (escape (stem + L"_"), member_set));
- }
- }
- }
-
- // Names for the order container.
- //
- if (ordered_p (c))
- {
- // Check if we already have the order container down
- // inheritance hierarchy.
- //
- using SemanticGraph::Complex;
-
- for (Complex* p (&c); p->inherits_p ();)
- {
- if (Complex* b = dynamic_cast<Complex*> (
- &p->inherits ().base ()))
- {
- if (ordered_p (*b))
- {
- SemanticGraph::Context& bctx (b->context ());
- ctx.set ("order-type", bctx.get<String> ("order-type"));
- ctx.set ("order-const-iterator",
- bctx.get<String> ("order-const-iterator"));
- ctx.set ("order-aname", bctx.get<String> ("order-aname"));
- ctx.set ("order-member", bctx.get<String> ("order-member"));
- ctx.set ("order-in-base", true);
- break;
- }
-
- p = b;
- }
- else
- break;
- }
-
- // If not, set up the names.
- //
- if (!ctx.count ("order-in-base"))
- {
- String s (find_name (L"content,order", stem_set));
- String n (find_name (escape (s), member_set, false));
-
- String an (find_name (
- escape (process_regex (s,
- seq_accessor_regex,
- accessor_regex,
- L"sequence accessor")),
- member_set,
- false));
-
- String mn (find_name (
- escape (process_regex (s,
- seq_modifier_regex,
- modifier_regex,
- L"sequence modifier")),
- member_set,
- false));
-
- ctx.set ("order-aname", an);
- ctx.set ("order-mname", mn);
-
- member_set.insert (name);
-
- if (an != n)
- member_set.insert (an);
-
- if (mn != n && mn != an)
- member_set.insert (mn);
-
- // Types.
- //
- ctx.set (
- "order-type",
- find_name (
- escape (process_regex (s + L",type", type_regex, L"type")),
- member_set));
-
- ctx.set (
- "order-container",
- find_name (
- escape (process_regex (s + L",sequence", type_regex, L"type")),
- member_set));
-
- ctx.set (
- "order-iterator",
- find_name (
- escape (process_regex (s + L",iterator", type_regex, L"type")),
- member_set));
-
- ctx.set (
- "order-const-iterator",
- find_name (
- escape (
- process_regex (s + L",const,iterator", type_regex, L"type")),
- member_set));
-
- // Data member.
- //
- ctx.set ("order-member", find_name (n + L"_", member_set));
- }
- }
- }
- };
-
-
- //
- //
- struct GlobalType: Traversal::Type, Context
- {
- GlobalType (Context& c, NameSet& set)
- : Context (c), set_ (set)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- // Process the name with type name regex.
- //
- String name (process_regex (
- namespace_ (t).name (),
- t.name (),
- type_regex,
- L"type"));
-
- // Escape and unclash.
- //
- name = find_name (escape (name), set_);
- t.context ().set ("name", name);
-
- // Also add renamed name if any.
- //
- if (renamed_type (t, name) && name)
- set_.insert (name);
- }
-
- private:
- NameSet& set_;
- };
-
-
- //
- //
- struct GlobalElement: Traversal::Element,
- GlobalElementBase,
- Context
- {
- GlobalElement (Context& c,
- NameSet const& type_set,
- NameSet& element_set)
- : GlobalElementBase (c),
- Context (c),
- type_set_ (type_set),
- element_set_ (element_set)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- // First we need to figure out if we need to process this
- // global element.
- //
- if (!generate_p (e))
- return;
-
- if (options.generate_element_type ())
- {
- SemanticGraph::Context& ec (e.context ());
-
- String name;
-
- if (doc_root_p (e))
- {
- name = find_name (
- escape (
- process_regex (
- namespace_ (e).name (),
- e.name (),
- element_type_regex,
- type_regex,
- L"element type")));
-
- // Assign inner names.
- //
- NameSet set;
- set.insert (name);
-
- ec.set (
- "type",
- Context::find_name (
- escape (process_regex (L"value,type", type_regex, L"type")),
- set));
-
- ec.set (
- "traits",
- Context::find_name (
- escape (process_regex (L"value,traits", type_regex, L"type")),
- set));
-
- String an (Context::find_name (
- escape (process_regex ("value",
- one_accessor_regex,
- accessor_regex,
- L"one accessor")),
- set,
- false));
-
- String mn (Context::find_name (
- escape (process_regex ("value",
- one_modifier_regex,
- modifier_regex,
- L"one modifier")),
- set,
- false));
-
- ec.set ("aname", an);
- ec.set ("mname", mn);
-
- set.insert (an);
-
- if (an != mn)
- set.insert (mn);
-
- // Detach.
- //
- if (detach)
- {
- String dn (Context::find_name (
- escape (process_regex (L"detach,value",
- one_modifier_regex,
- modifier_regex,
- L"one modifier")),
- set));
-
- ec.set ("dname", dn);
- }
-
- // Assign name() and namespace_() names.
- //
- ec.set (
- "element-name",
- Context::find_name (
- escape (
- process_regex ("name", accessor_regex, L"modifier")),
- set));
-
- ec.set (
- "element-ns",
- Context::find_name (
- escape (
- process_regex ("namespace", accessor_regex, L"modifier")),
- set));
-
- // Data members.
- //
- ec.set ("member", Context::find_name ("value_", set));
- ec.set ("element-name-member",
- Context::find_name ("name_", set));
- ec.set ("element-ns-member",
- Context::find_name ("namespace__", set));
- }
- else
- name = find_name (escape (e.name ()));
-
- ec.set ("name", name);
- element_set_.insert (name);
- }
- else
- {
- // Make sure the name is unique among global elements and
- // does not collide with a global type name.
- //
- String base (find_name (escape (e.name ())));
- e.context ().set ("name", base);
-
- String n (e.name ());
-
- // Assign the parsing function name.
- //
- String p;
-
- if (!options.suppress_parsing () && doc_root_p (e))
- {
- p = find_name (
- escape (
- process_regex (n, parser_regex, L"parsing function")));
-
- e.context ().set ("parser", p);
- }
-
- // Assign the serialization function name.
- //
- String s;
-
- if (options.generate_serialization () && doc_root_p (e))
- {
- s = find_name (
- escape (
- process_regex (
- n, serializer_regex, L"serialization function")));
-
- e.context ().set ("serializer", s);
- }
-
- // Add the names to the set only after processing parsing and
- // serialization function names so that we do not over-escape
- // them.
- //
- element_set_.insert (base);
-
- if (p && p != base)
- element_set_.insert (p);
-
- if (s && s != base && s != p)
- element_set_.insert (s);
- }
- }
-
- private:
- String
- find_name (String const& name)
- {
- String r (name);
-
- // If we are conflicting with a type name let's first try to
- // simply append an underscore and only resort to ugly names
- // like name1, etc., if this fails.
- //
- if (type_set_.find (r) != type_set_.end ())
- r += L"_";
-
- for (size_t i (1);
- element_set_.find (r) != element_set_.end () ||
- type_set_.find (r) != type_set_.end (); ++i)
- {
- std::wostringstream os;
- os << i;
- r = name + os.str ();
- }
-
- return r;
- }
-
- private:
- NameSet const& type_set_;
- NameSet& element_set_;
- };
-
- struct NamespacePassOne: Traversal::Namespace, Context
- {
- NamespacePassOne (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& ns)
- {
- NameSet& type_set (global_type_names[ns.name ()]);
-
- GlobalType type (*this, type_set);
- Traversal::Names names (type);
-
- Traversal::Namespace::names (ns, names);
- Traversal::Namespace::names (ns);
- }
- };
-
-
- struct NamespacePassThree: Traversal::Namespace, Context
- {
- NamespacePassThree (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& ns)
- {
- String const& name (ns.name ());
-
- NameSet const& type_set (global_type_names[name]);
- NameSet& element_set (global_element_names[name]);
-
- GlobalElement element (*this, type_set, element_set);
- Traversal::Names names (element);
-
- Traversal::Namespace::names (ns, names);
- }
- };
-
-
- struct FundamentalNamespace: Traversal::Namespace,
-
- Traversal::AnyType,
- Traversal::AnySimpleType,
-
- Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal,
-
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Language,
-
- Traversal::Fundamental::Id,
- Traversal::Fundamental::IdRef,
- Traversal::Fundamental::IdRefs,
-
- Traversal::Fundamental::AnyURI,
-
- Traversal::Fundamental::QName,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary,
-
- Traversal::Fundamental::Date,
- Traversal::Fundamental::DateTime,
- Traversal::Fundamental::Duration,
- Traversal::Fundamental::Day,
- Traversal::Fundamental::Month,
- Traversal::Fundamental::MonthDay,
- Traversal::Fundamental::Year,
- Traversal::Fundamental::YearMonth,
- Traversal::Fundamental::Time,
-
- Traversal::Fundamental::Entity,
- Traversal::Fundamental::Entities,
-
- Context
- {
- FundamentalNamespace (Context& c)
- : Context (c)
- {
- *this >> names_ >> *this;
- }
-
- void
- process_name (SemanticGraph::Type& t, String const& name)
- {
- String r (
- process_regex (
- namespace_ (t).name (), name, type_regex, L"type"));
-
- t.context ().set ("name", escape (r));
- }
-
- void
- process_name (SemanticGraph::Namespace& n,
- String const& name,
- char const* key)
- {
- String r (process_regex (name, type_regex, L"type"));
- n.context ().set (key, escape (r));
- }
-
- // anyType and anySimpleType
- //
- virtual void
- traverse (SemanticGraph::AnyType& t)
- {
- process_name (t, "type");
- }
-
- virtual void
- traverse (SemanticGraph::AnySimpleType& t)
- {
- process_name (t, "simple,type");
- }
-
- // Integrals.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte& t)
- {
- process_name (t, "byte");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte& t)
- {
- process_name (t, "unsigned,byte");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short& t)
- {
- process_name (t, "short");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort& t)
- {
- process_name (t, "unsigned,short");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int& t)
- {
- process_name (t, "int");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt& t)
- {
- process_name (t, "unsigned,int");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long& t)
- {
- process_name (t, "long");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong& t)
- {
- process_name (t, "unsigned,long");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer& t)
- {
- process_name (t, "integer");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
- {
- process_name (t, "non,positive,integer");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
- {
- process_name (t, "non,negative,integer");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger& t)
- {
- process_name (t, "positive,integer");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger& t)
- {
- process_name (t, "negative,integer");
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean& t)
- {
- process_name (t, "boolean");
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- process_name (t, "float");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- process_name (t, "double");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal& t)
- {
- process_name (t, "decimal");
- }
-
- // Strings.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::String& t)
- {
- process_name (t, "string");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString& t)
- {
- process_name (t, "normalized,string");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token& t)
- {
- process_name (t, "token");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken& t)
- {
- process_name (t, "nmtoken");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens& t)
- {
- process_name (t, "nmtokens");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name& t)
- {
- process_name (t, "name");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName& t)
- {
- process_name (t, "ncname");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Language& t)
- {
- process_name (t, "language");
- }
-
- // ID/IDREF.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Id& t)
- {
- process_name (t, "id");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRef& t)
- {
- process_name (t, "idref");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs& t)
- {
- process_name (t, "idrefs");
- }
-
-
- // URI.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::AnyURI& t)
- {
- process_name (t, "uri");
- }
-
- // Qualified name.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::QName& t)
- {
- process_name (t, "qname");
- }
-
- // Binary.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary& t)
- {
- process_name (t, "base64,binary");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary& t)
- {
- process_name (t, "hex,binary");
- }
-
-
- // Date/time.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Date& t)
- {
- process_name (t, "date");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::DateTime& t)
- {
- process_name (t, "date,time");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Duration& t)
- {
- process_name (t, "duration");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Day& t)
- {
- process_name (t, "gday");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Month& t)
- {
- process_name (t, "gmonth");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::MonthDay& t)
- {
- process_name (t, "gmonth,day");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Year& t)
- {
- process_name (t, "gyear");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::YearMonth& t)
- {
- process_name (t, "gyear,month");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Time& t)
- {
- process_name (t, "time");
- }
-
- // Entity.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Entity& t)
- {
- process_name (t, "entity");
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Entities& t)
- {
- process_name (t, "entities");
- }
-
- virtual void
- post (SemanticGraph::Namespace& n)
- {
- // Assign names to extra stuff in the XML Schema namespace.
- //
- process_name (n, "container", "container");
- process_name (n, "buffer", "buffer");
- process_name (n, "time,zone", "time-zone");
-
- process_name (n, "content,order", "content-order");
-
- if (options.generate_element_type ())
- process_name (n, "element,type", "element-type");
-
- if (options.generate_element_map ())
- process_name (n, "element,map", "element-map");
-
- if (options.generate_serialization ())
- {
- process_name (n, "namespace,info", "namespace-info");
- process_name (n, "namespace,infomap", "namespace-infomap");
- process_name (n, "list,stream", "list-stream");
- process_name (n, "as,double", "as-double");
- process_name (n, "as,decimal", "as-decimal");
- process_name (n, "facet", "facet");
- }
-
- if (!options.generate_insertion ().empty ())
- {
- process_name (n, "ostream", "ostream");
- }
-
- if (!options.generate_extraction ().empty ())
- {
- process_name (n, "istream", "istream");
- }
-
- process_name (n, "flags", "flags");
- process_name (n, "properties", "properties");
-
- NarrowString fn (options.function_naming ());
-
- if (fn == "knr")
- n.context ().set ("tree-node-key", String ("tree_node_key"));
- else
- n.context ().set ("tree-node-key", String ("treeNodeKey"));
-
- process_name (n, "exception", "exception");
- process_name (n, "parsing", "parsing");
- process_name (n, "expected,element", "expected-element");
- process_name (n, "unexpected,element", "unexpected-element");
- process_name (n, "expected,attribute", "expected-attribute");
- process_name (n, "unexpected,enumerator", "unexpected-enumerator");
- process_name (n, "expected,text,content", "expected-text-content");
- process_name (n, "no,type,info", "no-type-info");
- process_name (n, "no,element,info", "no-element-info");
- process_name (n, "not,derived", "not-derived");
- process_name (n, "duplicate,id", "duplicate-id");
- process_name (n, "serialization", "serialization");
- process_name (n, "no,namespace,mapping", "no-namespace-mapping");
- process_name (n, "no,prefix,mapping", "no-prefix-mapping");
- process_name (n, "xsi,already,in,use", "xsi-already-in-use");
- process_name (n, "bounds", "bounds");
-
- process_name (n, "severity", "severity");
- process_name (n, "error", "error");
- process_name (n, "diagnostics", "diagnostics");
-
- if (!options.suppress_parsing () ||
- options.generate_serialization ())
- {
- process_name (n, "error,handler", "error-handler");
- }
-
- Namespace::post (n);
- }
-
- private:
- Traversal::Names names_;
- };
-
-
- // Go into sourced/included/imported schemas while making sure
- // we don't process the same stuff more than once.
- //
- struct UsesPassOne: Traversal::Uses
- {
- virtual void
- traverse (Type& u)
- {
- SemanticGraph::Schema& s (u.schema ());
-
- if (!s.context ().count ("cxx-tree-name-processor-pass-1"))
- {
- s.context ().set ("cxx-tree-name-processor-pass-1", true);
- Traversal::Uses::traverse (u);
- }
- }
- };
-
- struct UsesPassThree: Traversal::Uses
- {
- virtual void
- traverse (Type& u)
- {
- SemanticGraph::Schema& s (u.schema ());
-
- if (!s.context ().count ("cxx-tree-name-processor-pass-3"))
- {
- s.context ().set ("cxx-tree-name-processor-pass-3", true);
- Traversal::Uses::traverse (u);
- }
- }
- };
-
- // Go into implied schemas while making sure we don't process
- // the same stuff more than once.
- //
- struct Implies: Traversal::Implies
- {
- virtual void
- traverse (SemanticGraph::Implies& i)
- {
- SemanticGraph::Schema& s (i.schema ());
-
- if (!s.context ().count ("cxx-tree-name-processor-seen"))
- {
- s.context ().set ("cxx-tree-name-processor-seen", true);
- Traversal::Implies::traverse (i);
- }
- }
- };
-
- bool
- process_impl (options const& ops,
- SemanticGraph::Schema& tu,
- SemanticGraph::Path const& file,
- StringLiteralMap const& map)
- {
- try
- {
- Counts counts;
- Context ctx (ops, counts, false, tu, file, map);
-
- if (tu.names_begin ()->named ().name () ==
- L"http://www.w3.org/2001/XMLSchema")
- {
- // XML Schema namespace.
- //
- Traversal::Schema xs_schema;
- Traversal::Names xs_schema_names;
- FundamentalNamespace xs_ns (ctx);
-
- xs_schema >> xs_schema_names >> xs_ns;
-
- xs_schema.dispatch (tu);
- }
- else
- {
-
- // Pass one - assign names to global types. This pass cannot
- // be combined with pass two because of possible recursive
- // schema inclusions. Also note that we check first if this
- // schema has already been processed which may happen in the
- // file-per-type compilation mode.
- //
- if (!tu.context ().count ("cxx-tree-name-processor-pass-1"))
- {
- Traversal::Schema schema;
- Traversal::Schema xs_schema;
- UsesPassOne uses;
- Implies implies;
-
- schema >> uses >> schema;
- schema >> implies >> xs_schema;
-
- Traversal::Names schema_names;
- Traversal::Names xs_schema_names;
- NamespacePassOne ns (ctx);
- FundamentalNamespace xs_ns (ctx);
-
- schema >> schema_names >> ns;
- xs_schema >> xs_schema_names >> xs_ns;
-
- // Some twisted schemas do recusive self-inclusion.
- //
- tu.context ().set ("cxx-tree-name-processor-pass-1", true);
-
- schema.dispatch (tu);
- }
-
- // Pass two - assign names inside complex types. Here
- // we don't need to go into included/imported schemas.
- //
- {
- Traversal::Schema schema;
- Sources sources;
-
- schema >> sources >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
-
- schema >> schema_names >> ns >> ns_names;
-
- Complex complex (ctx);
- Traversal::Enumeration enumeration; // Avoid fallback on complex.
-
- ns_names >> complex;
- ns_names >> enumeration;
-
- schema.dispatch (tu);
- }
-
- // Pass three - assign names to global elements as well as
- // inside enums. Also note that we check first if this schema
- // has already been processed which may happen in the file-per-
- // type compilation mode.
- //
- if (!tu.context ().count ("cxx-tree-name-processor-pass-3"))
- {
- Traversal::Schema schema;
- UsesPassThree uses;
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- NamespacePassThree ns (ctx);
- Traversal::Namespace ns_enum;
-
- schema >> schema_names;
-
- schema_names >> ns;
- schema_names >> ns_enum;
-
- Traversal::Names ns_names;
- Enumeration enumeration (ctx);
-
- ns_enum >> ns_names >> enumeration;
-
- // Some twisted schemas do recusive self-inclusion.
- //
- tu.context ().set ("cxx-tree-name-processor-pass-3", true);
-
- schema.dispatch (tu);
- }
- }
- }
- catch (Context::Failed const&)
- {
- // Diagnostics has already been issued.
- //
- return false;
- }
-
- return true;
- }
- }
-
- bool NameProcessor::
- process (options const& ops,
- SemanticGraph::Schema& tu,
- SemanticGraph::Path const& file,
- StringLiteralMap const& map)
- {
- return process_impl (ops, tu, file, map);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/name-processor.hxx b/xsd/xsd/cxx/tree/name-processor.hxx
deleted file mode 100644
index 46ea883..0000000
--- a/xsd/xsd/cxx/tree/name-processor.hxx
+++ /dev/null
@@ -1,29 +0,0 @@
-// file : xsd/cxx/tree/name-processor.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_NAME_PROCESSOR_HXX
-#define CXX_TREE_NAME_PROCESSOR_HXX
-
-#include <types.hxx>
-
-#include <cxx/tree/elements.hxx>
-#include <cxx/tree/options.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- class NameProcessor
- {
- public:
- bool
- process (options const&,
- XSDFrontend::SemanticGraph::Schema&,
- XSDFrontend::SemanticGraph::Path const& file,
- StringLiteralMap const&);
- };
- }
-}
-
-#endif // CXX_TREE_NAME_PROCESSOR_HXX
diff --git a/xsd/xsd/cxx/tree/options.cli b/xsd/xsd/cxx/tree/options.cli
deleted file mode 100644
index f1b343a..0000000
--- a/xsd/xsd/cxx/tree/options.cli
+++ /dev/null
@@ -1,480 +0,0 @@
-// file : xsd/cxx/tree/options.cli
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include <cstddef>; // std::size_t
-
-include <types.hxx>; // NarrowString, NarrowStrings
-
-include <cxx/options.cli>;
-
-namespace CXX
-{
- namespace Tree
- {
- class options: CXX::options
- {
- // Polymorphism.
- //
- bool --generate-polymorphic
- {
- "Generate polymorphism-aware code. Specify this option if you use
- substitution groups or \cb{xsi:type}. Use the \cb{--polymorphic-type}
- or \cb{--polymorphic-type-all} option to specify which type
- hierarchies are polymorphic."
- };
-
- NarrowStrings --polymorphic-type
- {
- "<type>",
- "Indicate that <type> is a root of a polymorphic type hierarchy. The
- compiler can often automatically determine which types are
- polymorphic based on the substitution group declarations. However,
- you may need to use this option if you are not using substitution
- groups or if substitution groups are defined in another schema. You
- need to specify this option when compiling every schema file that
- references <type>. The <type> argument is an XML Schema type name
- that can be optionally qualified with a namespace in the
- \c{\i{namespace}\b{#}\i{name}} form."
- };
-
- bool --polymorphic-type-all
- {
- "Indicate that all types should be treated as polymorphic."
- };
-
- unsigned long --polymorphic-plate = 0
- {
- "<num>",
- "Specify the polymorphic map plate the generated code should register
- on. This functionality is primarily useful to segregate multiple
- schemas that define the same polymorphic types."
- };
-
- // Ordered content.
- //
- NarrowStrings --ordered-type
- {
- "<type>",
- "Indicate that element order in <type> is significant. An example
- would be a complex type with unbounded choice as a content model
- where the element order in XML has application-specific semantics.
- For ordered types the compiler generates a special container data
- member and a corresponding set of accessors and modifiers that are
- used to capture the order of elements and, for mixed content, of
- text.
-
- The <type> argument is an XML Schema type name that can be optionally
- qualified with a namespace in the \c{\i{namespace}\b{#}\i{name}} form.
- Note also that you will need to specify this option when compiling
- every schema file that has other ordered types derived from this
- type."
- };
-
- bool --ordered-type-derived
- {
- "Automatically treat types derived from ordered bases as also
- ordered. This is primarily useful if you would like to be able
- to iterate over the complete content using the content order
- container."
- };
-
- bool --ordered-type-mixed
- {
- "Automatically treat complex types with mixed content as ordered."
- };
-
- bool --ordered-type-all
- {
- "Indicate that element order in all types is significant."
- };
-
- NarrowString --order-container
- {
- "<type>",
- "Specify a custom class template that should be used as a container
- for the content order in ordered types instead of the default
- \cb{std::vector}. See \cb{--ordered-type} for more information on
- ordered type. This option is primarily useful if you need to
- perform more complex lookups in the content order container, for
- example by element id. In this case, a container like Boost
- multi-index may be more convenient. Note that if using a custom
- container, you will also most likely need to include the relevant
- headers using the \cb{--hxx-prologue*} options."
- };
-
- // Features.
- //
- bool --generate-serialization
- {
- "Generate serialization functions. Serialization functions convert
- the object model back to XML."
- };
-
- bool --generate-ostream
- {
- "Generate ostream insertion operators (\cb{operator<<}) for generated
- types. This allows one to easily print a fragment or the whole object
- model for debugging or logging."
- };
-
- bool --generate-doxygen
- {
- "Generate documentation comments suitable for extraction by the
- Doxygen documentation system. Documentation from annotations is
- added to the comments if present in the schema."
- };
-
- bool --generate-comparison
- {
- "Generate comparison operators (\cb{operator==} and \cb{operator!=})
- for complex types. Comparison is performed member-wise."
- };
-
- bool --generate-default-ctor
- {
- "Generate default constructors even for types that have required
- members. Required members of an instance constructed using such a
- constructor are not initialized and accessing them results in
- undefined behavior."
- };
-
- bool --generate-from-base-ctor
- {
- "Generate constructors that expect an instance of a base type
- followed by all required members."
- };
-
- bool --suppress-assignment
- {
- "Suppress the generation of copy assignment operators for complex
- types. If this option is specified, the copy assignment operators
- for such types are declared private and left unimplemented."
- };
-
- bool --generate-detach
- {
- "Generate detach functions for required elements and attributes.
- Detach functions for optional and sequence cardinalities are
- provided by the respective containers. These functions, for
- example, allow you to move sub-trees in the object model either
- within the same tree or between different trees."
- };
-
- bool --generate-wildcard
- {
- "Generate accessors and modifiers as well as parsing and serialization
- code for XML Schema wildcards (\cb{any} and \cb{anyAttribute}). XML
- content matched by wildcards is presented as DOM fragments. Note
- that you need to initialize the Xerces-C++ runtime if you are using
- this option."
- };
-
- bool --generate-any-type
- {
- "Extract and store content of the XML Schema \cb{anyType} type as a
- DOM fragment. Note that you need to initialize the Xerces-C++ runtime
- if you are using this option."
- };
-
- NarrowStrings --generate-insertion
- {
- "<os>",
- "Generate data representation stream insertion operators for the <os>
- output stream type. Repeat this option to specify more than one
- stream type. The ACE CDR stream (\cb{ACE_OutputCDR}) and RPC XDR
- are recognized by the compiler and the necessary \cb{#include}
- directives are automatically generated. For custom stream types use
- the \cb{--hxx-prologue*} options to provide the necessary
- declarations."
- };
-
- NarrowStrings --generate-extraction
- {
- "<is>",
- "Generate data representation stream extraction constructors for the
- <is> input stream type. Repeat this option to specify more than one
- stream type. The ACE CDR stream (\cb{ACE_InputCDR}) and RPC XDR are
- recognized by the compiler and the necessary \cb{#include} directives
- are automatically generated. For custom stream types use the
- \cb{--hxx-prologue*} options to provide the necessary declarations."
- };
-
- bool --generate-forward
- {
- "Generate a separate header file with forward declarations for the
- types being generated."
- };
-
- bool --suppress-parsing
- {
- "Suppress the generation of the parsing functions and constructors.
- Use this option to reduce the generated code size when parsing from
- XML is not needed."
- };
-
- bool --generate-element-type
- {
- "Generate types instead of parsing and serialization functions for
- root elements. This is primarily useful to distinguish object models
- with the same root type but with different root elements."
- };
-
- bool --generate-element-map
- {
- "Generate a root element map that allows uniform parsing and
- serialization of multiple root elements. This option is only valid
- together with \cb{--generate-element-type}."
- };
-
- bool --generate-intellisense
- {
- "Generate workarounds for IntelliSense bugs in Visual Studio 2005
- (8.0). When this option is used, the resulting code is slightly
- more verbose. IntelliSense in Visual Studio 2008 (9.0) and later
- does not require these workarounds. Support for IntelliSense in
- Visual Studio 2003 (7.1) is improved with this option but is
- still incomplete."
- };
-
- bool --omit-default-attributes
- {
- "Omit attributes with default and fixed values from serialized XML
- documents."
- };
-
- // Naming.
- //
- NarrowString --type-naming = "knr"
- {
- "<style>",
- "Specify the type naming convention that should be used in the
- generated code. Valid styles are \cb{knr} (default), \cb{ucc},
- and \cb{java}. See the NAMING CONVENTION section below for more
- information."
- };
-
- NarrowString --function-naming = "knr"
- {
- "<style>",
- "Specify the function naming convention that should be used in the
- generated code. Valid styles are \cb{knr} (default), \cb{lcc}, and
- \cb{java}. See the NAMING CONVENTION section below for more
- information."
- };
-
- NarrowStrings --type-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema type names to C++ type names. See the NAMING CONVENTION
- section below for more information."
- };
-
- NarrowStrings --accessor-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema names of elements/attributes to C++ accessor function
- names. See the NAMING CONVENTION section below for more information."
- };
-
- NarrowStrings --one-accessor-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema names of elements/attributes with cardinality one to
- C++ accessor function names. See the NAMING CONVENTION section
- below for more information."
- };
-
- NarrowStrings --opt-accessor-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema names of elements/attributes with cardinality optional
- to C++ accessor function names. See the NAMING CONVENTION section
- below for more information."
- };
-
- NarrowStrings --seq-accessor-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema names of elements/attributes with cardinality sequence
- to C++ accessor function names. See the NAMING CONVENTION section
- below for more information."
- };
-
- NarrowStrings --modifier-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema names of elements/attributes to C++ modifier function
- names. See the NAMING CONVENTION section below for more information."
- };
-
- NarrowStrings --one-modifier-regex
-
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema names of elements/attributes with cardinality one to C++
- modifier function names. See the NAMING CONVENTION section below
- for more information."
- };
-
- NarrowStrings --opt-modifier-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema names of elements/attributes with cardinality optional
- to C++ modifier function names. See the NAMING CONVENTION section
- below for more information."
- };
-
- NarrowStrings --seq-modifier-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema names of elements/attributes with cardinality sequence
- to C++ modifier function names. See the NAMING CONVENTION section
- below for more information."
- };
-
- NarrowStrings --parser-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema element names to C++ parsing function names. See the
- NAMING CONVENTION section below for more information."
- };
-
- NarrowStrings --serializer-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema element names to C++ serialization function names. See
- the NAMING CONVENTION section below for more information."
- };
-
- NarrowStrings --const-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema-derived names to C++ constant names. See the NAMING
- CONVENTION section below for more information."
- };
-
- NarrowStrings --enumerator-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema enumeration values to C++ enumerator names. See the
- NAMING CONVENTION section below for more information."
- };
-
- NarrowStrings --element-type-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate
- XML Schema element names to C++ element type names. See the NAMING
- CONVENTION section below for more information."
- };
-
- bool --name-regex-trace
- {
- "Trace the process of applying regular expressions specified with
- the name transformation options. Use this option to find out why
- your regular expressions don't do what you expected them to do."
- };
-
- // Root element.
- //
- bool --root-element-first
- {
- "Treat only the first global element as a document root. By default
- all global elements are considered document roots."
- };
-
- bool --root-element-last
- {
- "Treat only the last global element as a document root. By default
- all global elements are considered document roots."
- };
-
- bool --root-element-all
- {
- "Treat all global elements as document roots. This is the default
- behavior. By explicitly specifying this option you can suppress
- the warning that is issued if more than one global element is
- defined."
- };
-
- bool --root-element-none
- {
- "Do not treat any global elements as document roots. By default all
- global elements are considered document roots."
- };
-
- NarrowStrings --root-element
- {
- "<element>",
- "Treat only <element> as a document root. Repeat this option to
- specify more than one root element."
- };
-
- // Custom type.
- //
- NarrowStrings --custom-type
- {
- "<map>",
- "Use a custom C++ type instead of the generated class. The <map>
- argument is in the form \c{\i{name}[\b{=}\i{type}[\b{/}\i{base}]]},
- where \i{name} is a type name as defined in XML Schema and \i{type}
- is a C++ type name that should be used instead. If \i{type} is not
- present or empty then the custom type is assumed to have the same
- name and be defined in the same namespace as the generated class
- would have. If \i{base} is specified then the generated class is
- still generated but with that name."
- };
-
- NarrowStrings --custom-type-regex
- {
- "<regex>",
- "Use custom C++ types instead of the generated classes. The <regex>
- argument is in the form
- \c{\b{/}\i{name-pat}\b{/}[\i{type-sub}\b{/}[\i{base-sub}\b{/}]]},
- where \i{name-pat} is a regex pattern that will be matched against
- type names as defined in XML Schema and \i{type-sub} is a C++ type
- name substitution that should be used instead. If \i{type-sub} is
- not present or its substitution results in an empty string then
- the custom type is assumed to have the same name and be defined
- in the same namespace as the generated class would have. If
- \i{base-sub} is present and its substitution results in a
- non-empty string then the generated class is still generated
- but with the result of this substitution as its name. The pattern
- and substitutions are in the Perl regular expression format.
- See also the REGEX AND SHELL QUOTING section below."
- };
-
- // Parts.
- //
- std::size_t --parts = 1
- {
- "<num>",
- "Split generated source code into <num> parts. This is useful when
- translating large, monolithic schemas and a C++ compiler is not
- able to compile the resulting source code at once (usually due
- to insufficient memory)."
- };
-
- NarrowString --parts-suffix = "-"
- {
- "<suffix>",
- "Use <suffix> instead of the default '\cb{-}' to separate the file
- name from the part number."
- };
- };
- }
-}
diff --git a/xsd/xsd/cxx/tree/options.cxx b/xsd/xsd/cxx/tree/options.cxx
deleted file mode 100644
index 820ebac..0000000
--- a/xsd/xsd/cxx/tree/options.cxx
+++ /dev/null
@@ -1,1149 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-// Begin prologue.
-//
-#include <options-parser.hxx>
-//
-// End prologue.
-
-#include <cxx/tree/options.hxx>
-
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
-#include <ostream>
-#include <sstream>
-
-namespace cli
-{
- template <typename X>
- struct parser
- {
- static void
- parse (X& x, bool& xs, scanner& s)
- {
- std::string o (s.next ());
-
- if (s.more ())
- {
- std::string v (s.next ());
- std::istringstream is (v);
- if (!(is >> x && is.eof ()))
- throw invalid_value (o, v);
- }
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <>
- struct parser<bool>
- {
- static void
- parse (bool& x, scanner& s)
- {
- s.next ();
- x = true;
- }
- };
-
- template <>
- struct parser<std::string>
- {
- static void
- parse (std::string& x, bool& xs, scanner& s)
- {
- const char* o (s.next ());
-
- if (s.more ())
- x = s.next ();
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <typename X>
- struct parser<std::vector<X> >
- {
- static void
- parse (std::vector<X>& c, bool& xs, scanner& s)
- {
- X x;
- bool dummy;
- parser<X>::parse (x, dummy, s);
- c.push_back (x);
- xs = true;
- }
- };
-
- template <typename X>
- struct parser<std::set<X> >
- {
- static void
- parse (std::set<X>& c, bool& xs, scanner& s)
- {
- X x;
- bool dummy;
- parser<X>::parse (x, dummy, s);
- c.insert (x);
- xs = true;
- }
- };
-
- template <typename K, typename V>
- struct parser<std::map<K, V> >
- {
- static void
- parse (std::map<K, V>& m, bool& xs, scanner& s)
- {
- std::string o (s.next ());
-
- if (s.more ())
- {
- std::string ov (s.next ());
- std::string::size_type p = ov.find ('=');
-
- if (p == std::string::npos)
- {
- K k = K ();
-
- if (!ov.empty ())
- {
- std::istringstream ks (ov);
-
- if (!(ks >> k && ks.eof ()))
- throw invalid_value (o, ov);
- }
-
- m[k] = V ();
- }
- else
- {
- K k = K ();
- V v = V ();
- std::string kstr (ov, 0, p);
- std::string vstr (ov, p + 1);
-
- if (!kstr.empty ())
- {
- std::istringstream ks (kstr);
-
- if (!(ks >> k && ks.eof ()))
- throw invalid_value (o, ov);
- }
-
- if (!vstr.empty ())
- {
- std::istringstream vs (vstr);
-
- if (!(vs >> v && vs.eof ()))
- throw invalid_value (o, ov);
- }
-
- m[k] = v;
- }
- }
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <typename X, typename T, T X::*M>
- void
- thunk (X& x, scanner& s)
- {
- parser<T>::parse (x.*M, s);
- }
-
- template <typename X, typename T, T X::*M, bool X::*S>
- void
- thunk (X& x, scanner& s)
- {
- parser<T>::parse (x.*M, x.*S, s);
- }
-}
-
-#include <map>
-#include <cstring>
-
-namespace CXX
-{
- namespace Tree
- {
- // options
- //
-
- options::
- options ()
- : generate_polymorphic_ (),
- polymorphic_type_ (),
- polymorphic_type_specified_ (false),
- polymorphic_type_all_ (),
- polymorphic_plate_ (0),
- polymorphic_plate_specified_ (false),
- ordered_type_ (),
- ordered_type_specified_ (false),
- ordered_type_derived_ (),
- ordered_type_mixed_ (),
- ordered_type_all_ (),
- order_container_ (),
- order_container_specified_ (false),
- generate_serialization_ (),
- generate_ostream_ (),
- generate_doxygen_ (),
- generate_comparison_ (),
- generate_default_ctor_ (),
- generate_from_base_ctor_ (),
- suppress_assignment_ (),
- generate_detach_ (),
- generate_wildcard_ (),
- generate_any_type_ (),
- generate_insertion_ (),
- generate_insertion_specified_ (false),
- generate_extraction_ (),
- generate_extraction_specified_ (false),
- generate_forward_ (),
- suppress_parsing_ (),
- generate_element_type_ (),
- generate_element_map_ (),
- generate_intellisense_ (),
- omit_default_attributes_ (),
- type_naming_ ("knr"),
- type_naming_specified_ (false),
- function_naming_ ("knr"),
- function_naming_specified_ (false),
- type_regex_ (),
- type_regex_specified_ (false),
- accessor_regex_ (),
- accessor_regex_specified_ (false),
- one_accessor_regex_ (),
- one_accessor_regex_specified_ (false),
- opt_accessor_regex_ (),
- opt_accessor_regex_specified_ (false),
- seq_accessor_regex_ (),
- seq_accessor_regex_specified_ (false),
- modifier_regex_ (),
- modifier_regex_specified_ (false),
- one_modifier_regex_ (),
- one_modifier_regex_specified_ (false),
- opt_modifier_regex_ (),
- opt_modifier_regex_specified_ (false),
- seq_modifier_regex_ (),
- seq_modifier_regex_specified_ (false),
- parser_regex_ (),
- parser_regex_specified_ (false),
- serializer_regex_ (),
- serializer_regex_specified_ (false),
- const_regex_ (),
- const_regex_specified_ (false),
- enumerator_regex_ (),
- enumerator_regex_specified_ (false),
- element_type_regex_ (),
- element_type_regex_specified_ (false),
- name_regex_trace_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_all_ (),
- root_element_none_ (),
- root_element_ (),
- root_element_specified_ (false),
- custom_type_ (),
- custom_type_specified_ (false),
- custom_type_regex_ (),
- custom_type_regex_specified_ (false),
- parts_ (1),
- parts_specified_ (false),
- parts_suffix_ ("-"),
- parts_suffix_specified_ (false)
- {
- }
-
- options::
- options (int& argc,
- char** argv,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
- : generate_polymorphic_ (),
- polymorphic_type_ (),
- polymorphic_type_specified_ (false),
- polymorphic_type_all_ (),
- polymorphic_plate_ (0),
- polymorphic_plate_specified_ (false),
- ordered_type_ (),
- ordered_type_specified_ (false),
- ordered_type_derived_ (),
- ordered_type_mixed_ (),
- ordered_type_all_ (),
- order_container_ (),
- order_container_specified_ (false),
- generate_serialization_ (),
- generate_ostream_ (),
- generate_doxygen_ (),
- generate_comparison_ (),
- generate_default_ctor_ (),
- generate_from_base_ctor_ (),
- suppress_assignment_ (),
- generate_detach_ (),
- generate_wildcard_ (),
- generate_any_type_ (),
- generate_insertion_ (),
- generate_insertion_specified_ (false),
- generate_extraction_ (),
- generate_extraction_specified_ (false),
- generate_forward_ (),
- suppress_parsing_ (),
- generate_element_type_ (),
- generate_element_map_ (),
- generate_intellisense_ (),
- omit_default_attributes_ (),
- type_naming_ ("knr"),
- type_naming_specified_ (false),
- function_naming_ ("knr"),
- function_naming_specified_ (false),
- type_regex_ (),
- type_regex_specified_ (false),
- accessor_regex_ (),
- accessor_regex_specified_ (false),
- one_accessor_regex_ (),
- one_accessor_regex_specified_ (false),
- opt_accessor_regex_ (),
- opt_accessor_regex_specified_ (false),
- seq_accessor_regex_ (),
- seq_accessor_regex_specified_ (false),
- modifier_regex_ (),
- modifier_regex_specified_ (false),
- one_modifier_regex_ (),
- one_modifier_regex_specified_ (false),
- opt_modifier_regex_ (),
- opt_modifier_regex_specified_ (false),
- seq_modifier_regex_ (),
- seq_modifier_regex_specified_ (false),
- parser_regex_ (),
- parser_regex_specified_ (false),
- serializer_regex_ (),
- serializer_regex_specified_ (false),
- const_regex_ (),
- const_regex_specified_ (false),
- enumerator_regex_ (),
- enumerator_regex_specified_ (false),
- element_type_regex_ (),
- element_type_regex_specified_ (false),
- name_regex_trace_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_all_ (),
- root_element_none_ (),
- root_element_ (),
- root_element_specified_ (false),
- custom_type_ (),
- custom_type_specified_ (false),
- custom_type_regex_ (),
- custom_type_regex_specified_ (false),
- parts_ (1),
- parts_specified_ (false),
- parts_suffix_ ("-"),
- parts_suffix_specified_ (false)
- {
- ::cli::argv_scanner s (argc, argv, erase);
- _parse (s, opt, arg);
- }
-
- options::
- options (int start,
- int& argc,
- char** argv,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
- : generate_polymorphic_ (),
- polymorphic_type_ (),
- polymorphic_type_specified_ (false),
- polymorphic_type_all_ (),
- polymorphic_plate_ (0),
- polymorphic_plate_specified_ (false),
- ordered_type_ (),
- ordered_type_specified_ (false),
- ordered_type_derived_ (),
- ordered_type_mixed_ (),
- ordered_type_all_ (),
- order_container_ (),
- order_container_specified_ (false),
- generate_serialization_ (),
- generate_ostream_ (),
- generate_doxygen_ (),
- generate_comparison_ (),
- generate_default_ctor_ (),
- generate_from_base_ctor_ (),
- suppress_assignment_ (),
- generate_detach_ (),
- generate_wildcard_ (),
- generate_any_type_ (),
- generate_insertion_ (),
- generate_insertion_specified_ (false),
- generate_extraction_ (),
- generate_extraction_specified_ (false),
- generate_forward_ (),
- suppress_parsing_ (),
- generate_element_type_ (),
- generate_element_map_ (),
- generate_intellisense_ (),
- omit_default_attributes_ (),
- type_naming_ ("knr"),
- type_naming_specified_ (false),
- function_naming_ ("knr"),
- function_naming_specified_ (false),
- type_regex_ (),
- type_regex_specified_ (false),
- accessor_regex_ (),
- accessor_regex_specified_ (false),
- one_accessor_regex_ (),
- one_accessor_regex_specified_ (false),
- opt_accessor_regex_ (),
- opt_accessor_regex_specified_ (false),
- seq_accessor_regex_ (),
- seq_accessor_regex_specified_ (false),
- modifier_regex_ (),
- modifier_regex_specified_ (false),
- one_modifier_regex_ (),
- one_modifier_regex_specified_ (false),
- opt_modifier_regex_ (),
- opt_modifier_regex_specified_ (false),
- seq_modifier_regex_ (),
- seq_modifier_regex_specified_ (false),
- parser_regex_ (),
- parser_regex_specified_ (false),
- serializer_regex_ (),
- serializer_regex_specified_ (false),
- const_regex_ (),
- const_regex_specified_ (false),
- enumerator_regex_ (),
- enumerator_regex_specified_ (false),
- element_type_regex_ (),
- element_type_regex_specified_ (false),
- name_regex_trace_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_all_ (),
- root_element_none_ (),
- root_element_ (),
- root_element_specified_ (false),
- custom_type_ (),
- custom_type_specified_ (false),
- custom_type_regex_ (),
- custom_type_regex_specified_ (false),
- parts_ (1),
- parts_specified_ (false),
- parts_suffix_ ("-"),
- parts_suffix_specified_ (false)
- {
- ::cli::argv_scanner s (start, argc, argv, erase);
- _parse (s, opt, arg);
- }
-
- options::
- options (int& argc,
- char** argv,
- int& end,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
- : generate_polymorphic_ (),
- polymorphic_type_ (),
- polymorphic_type_specified_ (false),
- polymorphic_type_all_ (),
- polymorphic_plate_ (0),
- polymorphic_plate_specified_ (false),
- ordered_type_ (),
- ordered_type_specified_ (false),
- ordered_type_derived_ (),
- ordered_type_mixed_ (),
- ordered_type_all_ (),
- order_container_ (),
- order_container_specified_ (false),
- generate_serialization_ (),
- generate_ostream_ (),
- generate_doxygen_ (),
- generate_comparison_ (),
- generate_default_ctor_ (),
- generate_from_base_ctor_ (),
- suppress_assignment_ (),
- generate_detach_ (),
- generate_wildcard_ (),
- generate_any_type_ (),
- generate_insertion_ (),
- generate_insertion_specified_ (false),
- generate_extraction_ (),
- generate_extraction_specified_ (false),
- generate_forward_ (),
- suppress_parsing_ (),
- generate_element_type_ (),
- generate_element_map_ (),
- generate_intellisense_ (),
- omit_default_attributes_ (),
- type_naming_ ("knr"),
- type_naming_specified_ (false),
- function_naming_ ("knr"),
- function_naming_specified_ (false),
- type_regex_ (),
- type_regex_specified_ (false),
- accessor_regex_ (),
- accessor_regex_specified_ (false),
- one_accessor_regex_ (),
- one_accessor_regex_specified_ (false),
- opt_accessor_regex_ (),
- opt_accessor_regex_specified_ (false),
- seq_accessor_regex_ (),
- seq_accessor_regex_specified_ (false),
- modifier_regex_ (),
- modifier_regex_specified_ (false),
- one_modifier_regex_ (),
- one_modifier_regex_specified_ (false),
- opt_modifier_regex_ (),
- opt_modifier_regex_specified_ (false),
- seq_modifier_regex_ (),
- seq_modifier_regex_specified_ (false),
- parser_regex_ (),
- parser_regex_specified_ (false),
- serializer_regex_ (),
- serializer_regex_specified_ (false),
- const_regex_ (),
- const_regex_specified_ (false),
- enumerator_regex_ (),
- enumerator_regex_specified_ (false),
- element_type_regex_ (),
- element_type_regex_specified_ (false),
- name_regex_trace_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_all_ (),
- root_element_none_ (),
- root_element_ (),
- root_element_specified_ (false),
- custom_type_ (),
- custom_type_specified_ (false),
- custom_type_regex_ (),
- custom_type_regex_specified_ (false),
- parts_ (1),
- parts_specified_ (false),
- parts_suffix_ ("-"),
- parts_suffix_specified_ (false)
- {
- ::cli::argv_scanner s (argc, argv, erase);
- _parse (s, opt, arg);
- end = s.end ();
- }
-
- options::
- options (int start,
- int& argc,
- char** argv,
- int& end,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
- : generate_polymorphic_ (),
- polymorphic_type_ (),
- polymorphic_type_specified_ (false),
- polymorphic_type_all_ (),
- polymorphic_plate_ (0),
- polymorphic_plate_specified_ (false),
- ordered_type_ (),
- ordered_type_specified_ (false),
- ordered_type_derived_ (),
- ordered_type_mixed_ (),
- ordered_type_all_ (),
- order_container_ (),
- order_container_specified_ (false),
- generate_serialization_ (),
- generate_ostream_ (),
- generate_doxygen_ (),
- generate_comparison_ (),
- generate_default_ctor_ (),
- generate_from_base_ctor_ (),
- suppress_assignment_ (),
- generate_detach_ (),
- generate_wildcard_ (),
- generate_any_type_ (),
- generate_insertion_ (),
- generate_insertion_specified_ (false),
- generate_extraction_ (),
- generate_extraction_specified_ (false),
- generate_forward_ (),
- suppress_parsing_ (),
- generate_element_type_ (),
- generate_element_map_ (),
- generate_intellisense_ (),
- omit_default_attributes_ (),
- type_naming_ ("knr"),
- type_naming_specified_ (false),
- function_naming_ ("knr"),
- function_naming_specified_ (false),
- type_regex_ (),
- type_regex_specified_ (false),
- accessor_regex_ (),
- accessor_regex_specified_ (false),
- one_accessor_regex_ (),
- one_accessor_regex_specified_ (false),
- opt_accessor_regex_ (),
- opt_accessor_regex_specified_ (false),
- seq_accessor_regex_ (),
- seq_accessor_regex_specified_ (false),
- modifier_regex_ (),
- modifier_regex_specified_ (false),
- one_modifier_regex_ (),
- one_modifier_regex_specified_ (false),
- opt_modifier_regex_ (),
- opt_modifier_regex_specified_ (false),
- seq_modifier_regex_ (),
- seq_modifier_regex_specified_ (false),
- parser_regex_ (),
- parser_regex_specified_ (false),
- serializer_regex_ (),
- serializer_regex_specified_ (false),
- const_regex_ (),
- const_regex_specified_ (false),
- enumerator_regex_ (),
- enumerator_regex_specified_ (false),
- element_type_regex_ (),
- element_type_regex_specified_ (false),
- name_regex_trace_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_all_ (),
- root_element_none_ (),
- root_element_ (),
- root_element_specified_ (false),
- custom_type_ (),
- custom_type_specified_ (false),
- custom_type_regex_ (),
- custom_type_regex_specified_ (false),
- parts_ (1),
- parts_specified_ (false),
- parts_suffix_ ("-"),
- parts_suffix_specified_ (false)
- {
- ::cli::argv_scanner s (start, argc, argv, erase);
- _parse (s, opt, arg);
- end = s.end ();
- }
-
- options::
- options (::cli::scanner& s,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
- : generate_polymorphic_ (),
- polymorphic_type_ (),
- polymorphic_type_specified_ (false),
- polymorphic_type_all_ (),
- polymorphic_plate_ (0),
- polymorphic_plate_specified_ (false),
- ordered_type_ (),
- ordered_type_specified_ (false),
- ordered_type_derived_ (),
- ordered_type_mixed_ (),
- ordered_type_all_ (),
- order_container_ (),
- order_container_specified_ (false),
- generate_serialization_ (),
- generate_ostream_ (),
- generate_doxygen_ (),
- generate_comparison_ (),
- generate_default_ctor_ (),
- generate_from_base_ctor_ (),
- suppress_assignment_ (),
- generate_detach_ (),
- generate_wildcard_ (),
- generate_any_type_ (),
- generate_insertion_ (),
- generate_insertion_specified_ (false),
- generate_extraction_ (),
- generate_extraction_specified_ (false),
- generate_forward_ (),
- suppress_parsing_ (),
- generate_element_type_ (),
- generate_element_map_ (),
- generate_intellisense_ (),
- omit_default_attributes_ (),
- type_naming_ ("knr"),
- type_naming_specified_ (false),
- function_naming_ ("knr"),
- function_naming_specified_ (false),
- type_regex_ (),
- type_regex_specified_ (false),
- accessor_regex_ (),
- accessor_regex_specified_ (false),
- one_accessor_regex_ (),
- one_accessor_regex_specified_ (false),
- opt_accessor_regex_ (),
- opt_accessor_regex_specified_ (false),
- seq_accessor_regex_ (),
- seq_accessor_regex_specified_ (false),
- modifier_regex_ (),
- modifier_regex_specified_ (false),
- one_modifier_regex_ (),
- one_modifier_regex_specified_ (false),
- opt_modifier_regex_ (),
- opt_modifier_regex_specified_ (false),
- seq_modifier_regex_ (),
- seq_modifier_regex_specified_ (false),
- parser_regex_ (),
- parser_regex_specified_ (false),
- serializer_regex_ (),
- serializer_regex_specified_ (false),
- const_regex_ (),
- const_regex_specified_ (false),
- enumerator_regex_ (),
- enumerator_regex_specified_ (false),
- element_type_regex_ (),
- element_type_regex_specified_ (false),
- name_regex_trace_ (),
- root_element_first_ (),
- root_element_last_ (),
- root_element_all_ (),
- root_element_none_ (),
- root_element_ (),
- root_element_specified_ (false),
- custom_type_ (),
- custom_type_specified_ (false),
- custom_type_regex_ (),
- custom_type_regex_specified_ (false),
- parts_ (1),
- parts_specified_ (false),
- parts_suffix_ ("-"),
- parts_suffix_specified_ (false)
- {
- _parse (s, opt, arg);
- }
-
- void options::
- print_usage (::std::wostream& os)
- {
- os << "--generate-polymorphic Generate polymorphism-aware code." << ::std::endl;
-
- os << "--polymorphic-type <type> Indicate that <type> is a root of a polymorphic" << ::std::endl
- << " type hierarchy." << ::std::endl;
-
- os << "--polymorphic-type-all Indicate that all types should be treated as" << ::std::endl
- << " polymorphic." << ::std::endl;
-
- os << "--polymorphic-plate <num> Specify the polymorphic map plate the generated" << ::std::endl
- << " code should register on." << ::std::endl;
-
- os << "--ordered-type <type> Indicate that element order in <type> is" << ::std::endl
- << " significant." << ::std::endl;
-
- os << "--ordered-type-derived Automatically treat types derived from ordered" << ::std::endl
- << " bases as also ordered." << ::std::endl;
-
- os << "--ordered-type-mixed Automatically treat complex types with mixed" << ::std::endl
- << " content as ordered." << ::std::endl;
-
- os << "--ordered-type-all Indicate that element order in all types is" << ::std::endl
- << " significant." << ::std::endl;
-
- os << "--order-container <type> Specify a custom class template that should be" << ::std::endl
- << " used as a container for the content order in" << ::std::endl
- << " ordered types instead of the default" << ::std::endl
- << " 'std::vector'." << ::std::endl;
-
- os << "--generate-serialization Generate serialization functions." << ::std::endl;
-
- os << "--generate-ostream Generate ostream insertion operators" << ::std::endl
- << " ('operator<<') for generated types." << ::std::endl;
-
- os << "--generate-doxygen Generate documentation comments suitable for" << ::std::endl
- << " extraction by the Doxygen documentation system." << ::std::endl;
-
- os << "--generate-comparison Generate comparison operators ('operator==' and" << ::std::endl
- << " 'operator!=') for complex types." << ::std::endl;
-
- os << "--generate-default-ctor Generate default constructors even for types that" << ::std::endl
- << " have required members." << ::std::endl;
-
- os << "--generate-from-base-ctor Generate constructors that expect an instance of a" << ::std::endl
- << " base type followed by all required members." << ::std::endl;
-
- os << "--suppress-assignment Suppress the generation of copy assignment" << ::std::endl
- << " operators for complex types." << ::std::endl;
-
- os << "--generate-detach Generate detach functions for required elements" << ::std::endl
- << " and attributes." << ::std::endl;
-
- os << "--generate-wildcard Generate accessors and modifiers as well as" << ::std::endl
- << " parsing and serialization code for XML Schema" << ::std::endl
- << " wildcards ('any' and 'anyAttribute')." << ::std::endl;
-
- os << "--generate-any-type Extract and store content of the XML Schema" << ::std::endl
- << " 'anyType' type as a DOM fragment." << ::std::endl;
-
- os << "--generate-insertion <os> Generate data representation stream insertion" << ::std::endl
- << " operators for the <os> output stream type." << ::std::endl;
-
- os << "--generate-extraction <is> Generate data representation stream extraction" << ::std::endl
- << " constructors for the <is> input stream type." << ::std::endl;
-
- os << "--generate-forward Generate a separate header file with forward" << ::std::endl
- << " declarations for the types being generated." << ::std::endl;
-
- os << "--suppress-parsing Suppress the generation of the parsing functions" << ::std::endl
- << " and constructors." << ::std::endl;
-
- os << "--generate-element-type Generate types instead of parsing and" << ::std::endl
- << " serialization functions for root elements." << ::std::endl;
-
- os << "--generate-element-map Generate a root element map that allows uniform" << ::std::endl
- << " parsing and serialization of multiple root" << ::std::endl
- << " elements." << ::std::endl;
-
- os << "--generate-intellisense Generate workarounds for IntelliSense bugs in" << ::std::endl
- << " Visual Studio 2005 (8.0)." << ::std::endl;
-
- os << "--omit-default-attributes Omit attributes with default and fixed values from" << ::std::endl
- << " serialized XML documents." << ::std::endl;
-
- os << "--type-naming <style> Specify the type naming convention that should be" << ::std::endl
- << " used in the generated code." << ::std::endl;
-
- os << "--function-naming <style> Specify the function naming convention that should" << ::std::endl
- << " be used in the generated code." << ::std::endl;
-
- os << "--type-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema type names to C++" << ::std::endl
- << " type names." << ::std::endl;
-
- os << "--accessor-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema names of" << ::std::endl
- << " elements/attributes to C++ accessor function" << ::std::endl
- << " names." << ::std::endl;
-
- os << "--one-accessor-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema names of" << ::std::endl
- << " elements/attributes with cardinality one to C++" << ::std::endl
- << " accessor function names." << ::std::endl;
-
- os << "--opt-accessor-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema names of" << ::std::endl
- << " elements/attributes with cardinality optional to" << ::std::endl
- << " C++ accessor function names." << ::std::endl;
-
- os << "--seq-accessor-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema names of" << ::std::endl
- << " elements/attributes with cardinality sequence to" << ::std::endl
- << " C++ accessor function names." << ::std::endl;
-
- os << "--modifier-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema names of" << ::std::endl
- << " elements/attributes to C++ modifier function" << ::std::endl
- << " names." << ::std::endl;
-
- os << "--one-modifier-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema names of" << ::std::endl
- << " elements/attributes with cardinality one to C++" << ::std::endl
- << " modifier function names." << ::std::endl;
-
- os << "--opt-modifier-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema names of" << ::std::endl
- << " elements/attributes with cardinality optional to" << ::std::endl
- << " C++ modifier function names." << ::std::endl;
-
- os << "--seq-modifier-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema names of" << ::std::endl
- << " elements/attributes with cardinality sequence to" << ::std::endl
- << " C++ modifier function names." << ::std::endl;
-
- os << "--parser-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema element names to C++" << ::std::endl
- << " parsing function names." << ::std::endl;
-
- os << "--serializer-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema element names to C++" << ::std::endl
- << " serialization function names." << ::std::endl;
-
- os << "--const-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema-derived names to C++" << ::std::endl
- << " constant names." << ::std::endl;
-
- os << "--enumerator-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema enumeration values to" << ::std::endl
- << " C++ enumerator names." << ::std::endl;
-
- os << "--element-type-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate XML Schema element names to C++" << ::std::endl
- << " element type names." << ::std::endl;
-
- os << "--name-regex-trace Trace the process of applying regular expressions" << ::std::endl
- << " specified with the name transformation options." << ::std::endl;
-
- os << "--root-element-first Treat only the first global element as a document" << ::std::endl
- << " root." << ::std::endl;
-
- os << "--root-element-last Treat only the last global element as a document" << ::std::endl
- << " root." << ::std::endl;
-
- os << "--root-element-all Treat all global elements as document roots." << ::std::endl;
-
- os << "--root-element-none Do not treat any global elements as document" << ::std::endl
- << " roots." << ::std::endl;
-
- os << "--root-element <element> Treat only <element> as a document root." << ::std::endl;
-
- os << "--custom-type <map> Use a custom C++ type instead of the generated" << ::std::endl
- << " class." << ::std::endl;
-
- os << "--custom-type-regex <regex> Use custom C++ types instead of the generated" << ::std::endl
- << " classes." << ::std::endl;
-
- os << "--parts <num> Split generated source code into <num> parts." << ::std::endl;
-
- os << "--parts-suffix <suffix> Use <suffix> instead of the default ''-'' to" << ::std::endl
- << " separate the file name from the part number." << ::std::endl;
- }
-
- typedef
- std::map<std::string, void (*) (options&, ::cli::scanner&)>
- _cli_options_map;
-
- static _cli_options_map _cli_options_map_;
-
- struct _cli_options_map_init
- {
- _cli_options_map_init ()
- {
- _cli_options_map_["--generate-polymorphic"] =
- &::cli::thunk< options, bool, &options::generate_polymorphic_ >;
- _cli_options_map_["--polymorphic-type"] =
- &::cli::thunk< options, NarrowStrings, &options::polymorphic_type_,
- &options::polymorphic_type_specified_ >;
- _cli_options_map_["--polymorphic-type-all"] =
- &::cli::thunk< options, bool, &options::polymorphic_type_all_ >;
- _cli_options_map_["--polymorphic-plate"] =
- &::cli::thunk< options, unsigned long, &options::polymorphic_plate_,
- &options::polymorphic_plate_specified_ >;
- _cli_options_map_["--ordered-type"] =
- &::cli::thunk< options, NarrowStrings, &options::ordered_type_,
- &options::ordered_type_specified_ >;
- _cli_options_map_["--ordered-type-derived"] =
- &::cli::thunk< options, bool, &options::ordered_type_derived_ >;
- _cli_options_map_["--ordered-type-mixed"] =
- &::cli::thunk< options, bool, &options::ordered_type_mixed_ >;
- _cli_options_map_["--ordered-type-all"] =
- &::cli::thunk< options, bool, &options::ordered_type_all_ >;
- _cli_options_map_["--order-container"] =
- &::cli::thunk< options, NarrowString, &options::order_container_,
- &options::order_container_specified_ >;
- _cli_options_map_["--generate-serialization"] =
- &::cli::thunk< options, bool, &options::generate_serialization_ >;
- _cli_options_map_["--generate-ostream"] =
- &::cli::thunk< options, bool, &options::generate_ostream_ >;
- _cli_options_map_["--generate-doxygen"] =
- &::cli::thunk< options, bool, &options::generate_doxygen_ >;
- _cli_options_map_["--generate-comparison"] =
- &::cli::thunk< options, bool, &options::generate_comparison_ >;
- _cli_options_map_["--generate-default-ctor"] =
- &::cli::thunk< options, bool, &options::generate_default_ctor_ >;
- _cli_options_map_["--generate-from-base-ctor"] =
- &::cli::thunk< options, bool, &options::generate_from_base_ctor_ >;
- _cli_options_map_["--suppress-assignment"] =
- &::cli::thunk< options, bool, &options::suppress_assignment_ >;
- _cli_options_map_["--generate-detach"] =
- &::cli::thunk< options, bool, &options::generate_detach_ >;
- _cli_options_map_["--generate-wildcard"] =
- &::cli::thunk< options, bool, &options::generate_wildcard_ >;
- _cli_options_map_["--generate-any-type"] =
- &::cli::thunk< options, bool, &options::generate_any_type_ >;
- _cli_options_map_["--generate-insertion"] =
- &::cli::thunk< options, NarrowStrings, &options::generate_insertion_,
- &options::generate_insertion_specified_ >;
- _cli_options_map_["--generate-extraction"] =
- &::cli::thunk< options, NarrowStrings, &options::generate_extraction_,
- &options::generate_extraction_specified_ >;
- _cli_options_map_["--generate-forward"] =
- &::cli::thunk< options, bool, &options::generate_forward_ >;
- _cli_options_map_["--suppress-parsing"] =
- &::cli::thunk< options, bool, &options::suppress_parsing_ >;
- _cli_options_map_["--generate-element-type"] =
- &::cli::thunk< options, bool, &options::generate_element_type_ >;
- _cli_options_map_["--generate-element-map"] =
- &::cli::thunk< options, bool, &options::generate_element_map_ >;
- _cli_options_map_["--generate-intellisense"] =
- &::cli::thunk< options, bool, &options::generate_intellisense_ >;
- _cli_options_map_["--omit-default-attributes"] =
- &::cli::thunk< options, bool, &options::omit_default_attributes_ >;
- _cli_options_map_["--type-naming"] =
- &::cli::thunk< options, NarrowString, &options::type_naming_,
- &options::type_naming_specified_ >;
- _cli_options_map_["--function-naming"] =
- &::cli::thunk< options, NarrowString, &options::function_naming_,
- &options::function_naming_specified_ >;
- _cli_options_map_["--type-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::type_regex_,
- &options::type_regex_specified_ >;
- _cli_options_map_["--accessor-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::accessor_regex_,
- &options::accessor_regex_specified_ >;
- _cli_options_map_["--one-accessor-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::one_accessor_regex_,
- &options::one_accessor_regex_specified_ >;
- _cli_options_map_["--opt-accessor-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::opt_accessor_regex_,
- &options::opt_accessor_regex_specified_ >;
- _cli_options_map_["--seq-accessor-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::seq_accessor_regex_,
- &options::seq_accessor_regex_specified_ >;
- _cli_options_map_["--modifier-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::modifier_regex_,
- &options::modifier_regex_specified_ >;
- _cli_options_map_["--one-modifier-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::one_modifier_regex_,
- &options::one_modifier_regex_specified_ >;
- _cli_options_map_["--opt-modifier-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::opt_modifier_regex_,
- &options::opt_modifier_regex_specified_ >;
- _cli_options_map_["--seq-modifier-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::seq_modifier_regex_,
- &options::seq_modifier_regex_specified_ >;
- _cli_options_map_["--parser-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::parser_regex_,
- &options::parser_regex_specified_ >;
- _cli_options_map_["--serializer-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::serializer_regex_,
- &options::serializer_regex_specified_ >;
- _cli_options_map_["--const-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::const_regex_,
- &options::const_regex_specified_ >;
- _cli_options_map_["--enumerator-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::enumerator_regex_,
- &options::enumerator_regex_specified_ >;
- _cli_options_map_["--element-type-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::element_type_regex_,
- &options::element_type_regex_specified_ >;
- _cli_options_map_["--name-regex-trace"] =
- &::cli::thunk< options, bool, &options::name_regex_trace_ >;
- _cli_options_map_["--root-element-first"] =
- &::cli::thunk< options, bool, &options::root_element_first_ >;
- _cli_options_map_["--root-element-last"] =
- &::cli::thunk< options, bool, &options::root_element_last_ >;
- _cli_options_map_["--root-element-all"] =
- &::cli::thunk< options, bool, &options::root_element_all_ >;
- _cli_options_map_["--root-element-none"] =
- &::cli::thunk< options, bool, &options::root_element_none_ >;
- _cli_options_map_["--root-element"] =
- &::cli::thunk< options, NarrowStrings, &options::root_element_,
- &options::root_element_specified_ >;
- _cli_options_map_["--custom-type"] =
- &::cli::thunk< options, NarrowStrings, &options::custom_type_,
- &options::custom_type_specified_ >;
- _cli_options_map_["--custom-type-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::custom_type_regex_,
- &options::custom_type_regex_specified_ >;
- _cli_options_map_["--parts"] =
- &::cli::thunk< options, std::size_t, &options::parts_,
- &options::parts_specified_ >;
- _cli_options_map_["--parts-suffix"] =
- &::cli::thunk< options, NarrowString, &options::parts_suffix_,
- &options::parts_suffix_specified_ >;
- }
- };
-
- static _cli_options_map_init _cli_options_map_init_;
-
- bool options::
- _parse (const char* o, ::cli::scanner& s)
- {
- _cli_options_map::const_iterator i (_cli_options_map_.find (o));
-
- if (i != _cli_options_map_.end ())
- {
- (*(i->second)) (*this, s);
- return true;
- }
-
- // options base
- //
- if (::CXX::options::_parse (o, s))
- return true;
-
- return false;
- }
-
- void options::
- _parse (::cli::scanner& s,
- ::cli::unknown_mode opt_mode,
- ::cli::unknown_mode arg_mode)
- {
- bool opt = true;
-
- while (s.more ())
- {
- const char* o = s.peek ();
-
- if (std::strcmp (o, "--") == 0)
- {
- s.skip ();
- opt = false;
- continue;
- }
-
- if (opt && _parse (o, s));
- else if (opt && std::strncmp (o, "-", 1) == 0 && o[1] != '\0')
- {
- switch (opt_mode)
- {
- case ::cli::unknown_mode::skip:
- {
- s.skip ();
- continue;
- }
- case ::cli::unknown_mode::stop:
- {
- break;
- }
- case ::cli::unknown_mode::fail:
- {
- throw ::cli::unknown_option (o);
- }
- }
-
- break;
- }
- else
- {
- switch (arg_mode)
- {
- case ::cli::unknown_mode::skip:
- {
- s.skip ();
- continue;
- }
- case ::cli::unknown_mode::stop:
- {
- break;
- }
- case ::cli::unknown_mode::fail:
- {
- throw ::cli::unknown_argument (o);
- }
- }
-
- break;
- }
- }
- }
- }
-}
-
-// Begin epilogue.
-//
-//
-// End epilogue.
-
diff --git a/xsd/xsd/cxx/tree/options.hxx b/xsd/xsd/cxx/tree/options.hxx
deleted file mode 100644
index b190dc5..0000000
--- a/xsd/xsd/cxx/tree/options.hxx
+++ /dev/null
@@ -1,411 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-#ifndef CXX_TREE_OPTIONS_HXX
-#define CXX_TREE_OPTIONS_HXX
-
-// Begin prologue.
-//
-//
-// End prologue.
-
-#include <cstddef>
-
-#include <types.hxx>
-
-#include <cxx/options.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- class options: public ::CXX::options
- {
- public:
- options (int& argc,
- char** argv,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- options (int start,
- int& argc,
- char** argv,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- options (int& argc,
- char** argv,
- int& end,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- options (int start,
- int& argc,
- char** argv,
- int& end,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- options (::cli::scanner&,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- options ();
-
- // Option accessors.
- //
- const bool&
- generate_polymorphic () const;
-
- const NarrowStrings&
- polymorphic_type () const;
-
- bool
- polymorphic_type_specified () const;
-
- const bool&
- polymorphic_type_all () const;
-
- const unsigned long&
- polymorphic_plate () const;
-
- bool
- polymorphic_plate_specified () const;
-
- const NarrowStrings&
- ordered_type () const;
-
- bool
- ordered_type_specified () const;
-
- const bool&
- ordered_type_derived () const;
-
- const bool&
- ordered_type_mixed () const;
-
- const bool&
- ordered_type_all () const;
-
- const NarrowString&
- order_container () const;
-
- bool
- order_container_specified () const;
-
- const bool&
- generate_serialization () const;
-
- const bool&
- generate_ostream () const;
-
- const bool&
- generate_doxygen () const;
-
- const bool&
- generate_comparison () const;
-
- const bool&
- generate_default_ctor () const;
-
- const bool&
- generate_from_base_ctor () const;
-
- const bool&
- suppress_assignment () const;
-
- const bool&
- generate_detach () const;
-
- const bool&
- generate_wildcard () const;
-
- const bool&
- generate_any_type () const;
-
- const NarrowStrings&
- generate_insertion () const;
-
- bool
- generate_insertion_specified () const;
-
- const NarrowStrings&
- generate_extraction () const;
-
- bool
- generate_extraction_specified () const;
-
- const bool&
- generate_forward () const;
-
- const bool&
- suppress_parsing () const;
-
- const bool&
- generate_element_type () const;
-
- const bool&
- generate_element_map () const;
-
- const bool&
- generate_intellisense () const;
-
- const bool&
- omit_default_attributes () const;
-
- const NarrowString&
- type_naming () const;
-
- bool
- type_naming_specified () const;
-
- const NarrowString&
- function_naming () const;
-
- bool
- function_naming_specified () const;
-
- const NarrowStrings&
- type_regex () const;
-
- bool
- type_regex_specified () const;
-
- const NarrowStrings&
- accessor_regex () const;
-
- bool
- accessor_regex_specified () const;
-
- const NarrowStrings&
- one_accessor_regex () const;
-
- bool
- one_accessor_regex_specified () const;
-
- const NarrowStrings&
- opt_accessor_regex () const;
-
- bool
- opt_accessor_regex_specified () const;
-
- const NarrowStrings&
- seq_accessor_regex () const;
-
- bool
- seq_accessor_regex_specified () const;
-
- const NarrowStrings&
- modifier_regex () const;
-
- bool
- modifier_regex_specified () const;
-
- const NarrowStrings&
- one_modifier_regex () const;
-
- bool
- one_modifier_regex_specified () const;
-
- const NarrowStrings&
- opt_modifier_regex () const;
-
- bool
- opt_modifier_regex_specified () const;
-
- const NarrowStrings&
- seq_modifier_regex () const;
-
- bool
- seq_modifier_regex_specified () const;
-
- const NarrowStrings&
- parser_regex () const;
-
- bool
- parser_regex_specified () const;
-
- const NarrowStrings&
- serializer_regex () const;
-
- bool
- serializer_regex_specified () const;
-
- const NarrowStrings&
- const_regex () const;
-
- bool
- const_regex_specified () const;
-
- const NarrowStrings&
- enumerator_regex () const;
-
- bool
- enumerator_regex_specified () const;
-
- const NarrowStrings&
- element_type_regex () const;
-
- bool
- element_type_regex_specified () const;
-
- const bool&
- name_regex_trace () const;
-
- const bool&
- root_element_first () const;
-
- const bool&
- root_element_last () const;
-
- const bool&
- root_element_all () const;
-
- const bool&
- root_element_none () const;
-
- const NarrowStrings&
- root_element () const;
-
- bool
- root_element_specified () const;
-
- const NarrowStrings&
- custom_type () const;
-
- bool
- custom_type_specified () const;
-
- const NarrowStrings&
- custom_type_regex () const;
-
- bool
- custom_type_regex_specified () const;
-
- const std::size_t&
- parts () const;
-
- bool
- parts_specified () const;
-
- const NarrowString&
- parts_suffix () const;
-
- bool
- parts_suffix_specified () const;
-
- // Print usage information.
- //
- static void
- print_usage (::std::wostream&);
-
- // Implementation details.
- //
- protected:
- bool
- _parse (const char*, ::cli::scanner&);
-
- private:
- void
- _parse (::cli::scanner&,
- ::cli::unknown_mode option,
- ::cli::unknown_mode argument);
-
- public:
- bool generate_polymorphic_;
- NarrowStrings polymorphic_type_;
- bool polymorphic_type_specified_;
- bool polymorphic_type_all_;
- unsigned long polymorphic_plate_;
- bool polymorphic_plate_specified_;
- NarrowStrings ordered_type_;
- bool ordered_type_specified_;
- bool ordered_type_derived_;
- bool ordered_type_mixed_;
- bool ordered_type_all_;
- NarrowString order_container_;
- bool order_container_specified_;
- bool generate_serialization_;
- bool generate_ostream_;
- bool generate_doxygen_;
- bool generate_comparison_;
- bool generate_default_ctor_;
- bool generate_from_base_ctor_;
- bool suppress_assignment_;
- bool generate_detach_;
- bool generate_wildcard_;
- bool generate_any_type_;
- NarrowStrings generate_insertion_;
- bool generate_insertion_specified_;
- NarrowStrings generate_extraction_;
- bool generate_extraction_specified_;
- bool generate_forward_;
- bool suppress_parsing_;
- bool generate_element_type_;
- bool generate_element_map_;
- bool generate_intellisense_;
- bool omit_default_attributes_;
- NarrowString type_naming_;
- bool type_naming_specified_;
- NarrowString function_naming_;
- bool function_naming_specified_;
- NarrowStrings type_regex_;
- bool type_regex_specified_;
- NarrowStrings accessor_regex_;
- bool accessor_regex_specified_;
- NarrowStrings one_accessor_regex_;
- bool one_accessor_regex_specified_;
- NarrowStrings opt_accessor_regex_;
- bool opt_accessor_regex_specified_;
- NarrowStrings seq_accessor_regex_;
- bool seq_accessor_regex_specified_;
- NarrowStrings modifier_regex_;
- bool modifier_regex_specified_;
- NarrowStrings one_modifier_regex_;
- bool one_modifier_regex_specified_;
- NarrowStrings opt_modifier_regex_;
- bool opt_modifier_regex_specified_;
- NarrowStrings seq_modifier_regex_;
- bool seq_modifier_regex_specified_;
- NarrowStrings parser_regex_;
- bool parser_regex_specified_;
- NarrowStrings serializer_regex_;
- bool serializer_regex_specified_;
- NarrowStrings const_regex_;
- bool const_regex_specified_;
- NarrowStrings enumerator_regex_;
- bool enumerator_regex_specified_;
- NarrowStrings element_type_regex_;
- bool element_type_regex_specified_;
- bool name_regex_trace_;
- bool root_element_first_;
- bool root_element_last_;
- bool root_element_all_;
- bool root_element_none_;
- NarrowStrings root_element_;
- bool root_element_specified_;
- NarrowStrings custom_type_;
- bool custom_type_specified_;
- NarrowStrings custom_type_regex_;
- bool custom_type_regex_specified_;
- std::size_t parts_;
- bool parts_specified_;
- NarrowString parts_suffix_;
- bool parts_suffix_specified_;
- };
- }
-}
-
-#include <cxx/tree/options.ixx>
-
-// Begin epilogue.
-//
-//
-// End epilogue.
-
-#endif // CXX_TREE_OPTIONS_HXX
diff --git a/xsd/xsd/cxx/tree/options.ixx b/xsd/xsd/cxx/tree/options.ixx
deleted file mode 100644
index 824fbee..0000000
--- a/xsd/xsd/cxx/tree/options.ixx
+++ /dev/null
@@ -1,502 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-// Begin prologue.
-//
-//
-// End prologue.
-
-namespace CXX
-{
- namespace Tree
- {
- // options
- //
-
- inline const bool& options::
- generate_polymorphic () const
- {
- return this->generate_polymorphic_;
- }
-
- inline const NarrowStrings& options::
- polymorphic_type () const
- {
- return this->polymorphic_type_;
- }
-
- inline bool options::
- polymorphic_type_specified () const
- {
- return this->polymorphic_type_specified_;
- }
-
- inline const bool& options::
- polymorphic_type_all () const
- {
- return this->polymorphic_type_all_;
- }
-
- inline const unsigned long& options::
- polymorphic_plate () const
- {
- return this->polymorphic_plate_;
- }
-
- inline bool options::
- polymorphic_plate_specified () const
- {
- return this->polymorphic_plate_specified_;
- }
-
- inline const NarrowStrings& options::
- ordered_type () const
- {
- return this->ordered_type_;
- }
-
- inline bool options::
- ordered_type_specified () const
- {
- return this->ordered_type_specified_;
- }
-
- inline const bool& options::
- ordered_type_derived () const
- {
- return this->ordered_type_derived_;
- }
-
- inline const bool& options::
- ordered_type_mixed () const
- {
- return this->ordered_type_mixed_;
- }
-
- inline const bool& options::
- ordered_type_all () const
- {
- return this->ordered_type_all_;
- }
-
- inline const NarrowString& options::
- order_container () const
- {
- return this->order_container_;
- }
-
- inline bool options::
- order_container_specified () const
- {
- return this->order_container_specified_;
- }
-
- inline const bool& options::
- generate_serialization () const
- {
- return this->generate_serialization_;
- }
-
- inline const bool& options::
- generate_ostream () const
- {
- return this->generate_ostream_;
- }
-
- inline const bool& options::
- generate_doxygen () const
- {
- return this->generate_doxygen_;
- }
-
- inline const bool& options::
- generate_comparison () const
- {
- return this->generate_comparison_;
- }
-
- inline const bool& options::
- generate_default_ctor () const
- {
- return this->generate_default_ctor_;
- }
-
- inline const bool& options::
- generate_from_base_ctor () const
- {
- return this->generate_from_base_ctor_;
- }
-
- inline const bool& options::
- suppress_assignment () const
- {
- return this->suppress_assignment_;
- }
-
- inline const bool& options::
- generate_detach () const
- {
- return this->generate_detach_;
- }
-
- inline const bool& options::
- generate_wildcard () const
- {
- return this->generate_wildcard_;
- }
-
- inline const bool& options::
- generate_any_type () const
- {
- return this->generate_any_type_;
- }
-
- inline const NarrowStrings& options::
- generate_insertion () const
- {
- return this->generate_insertion_;
- }
-
- inline bool options::
- generate_insertion_specified () const
- {
- return this->generate_insertion_specified_;
- }
-
- inline const NarrowStrings& options::
- generate_extraction () const
- {
- return this->generate_extraction_;
- }
-
- inline bool options::
- generate_extraction_specified () const
- {
- return this->generate_extraction_specified_;
- }
-
- inline const bool& options::
- generate_forward () const
- {
- return this->generate_forward_;
- }
-
- inline const bool& options::
- suppress_parsing () const
- {
- return this->suppress_parsing_;
- }
-
- inline const bool& options::
- generate_element_type () const
- {
- return this->generate_element_type_;
- }
-
- inline const bool& options::
- generate_element_map () const
- {
- return this->generate_element_map_;
- }
-
- inline const bool& options::
- generate_intellisense () const
- {
- return this->generate_intellisense_;
- }
-
- inline const bool& options::
- omit_default_attributes () const
- {
- return this->omit_default_attributes_;
- }
-
- inline const NarrowString& options::
- type_naming () const
- {
- return this->type_naming_;
- }
-
- inline bool options::
- type_naming_specified () const
- {
- return this->type_naming_specified_;
- }
-
- inline const NarrowString& options::
- function_naming () const
- {
- return this->function_naming_;
- }
-
- inline bool options::
- function_naming_specified () const
- {
- return this->function_naming_specified_;
- }
-
- inline const NarrowStrings& options::
- type_regex () const
- {
- return this->type_regex_;
- }
-
- inline bool options::
- type_regex_specified () const
- {
- return this->type_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- accessor_regex () const
- {
- return this->accessor_regex_;
- }
-
- inline bool options::
- accessor_regex_specified () const
- {
- return this->accessor_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- one_accessor_regex () const
- {
- return this->one_accessor_regex_;
- }
-
- inline bool options::
- one_accessor_regex_specified () const
- {
- return this->one_accessor_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- opt_accessor_regex () const
- {
- return this->opt_accessor_regex_;
- }
-
- inline bool options::
- opt_accessor_regex_specified () const
- {
- return this->opt_accessor_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- seq_accessor_regex () const
- {
- return this->seq_accessor_regex_;
- }
-
- inline bool options::
- seq_accessor_regex_specified () const
- {
- return this->seq_accessor_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- modifier_regex () const
- {
- return this->modifier_regex_;
- }
-
- inline bool options::
- modifier_regex_specified () const
- {
- return this->modifier_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- one_modifier_regex () const
- {
- return this->one_modifier_regex_;
- }
-
- inline bool options::
- one_modifier_regex_specified () const
- {
- return this->one_modifier_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- opt_modifier_regex () const
- {
- return this->opt_modifier_regex_;
- }
-
- inline bool options::
- opt_modifier_regex_specified () const
- {
- return this->opt_modifier_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- seq_modifier_regex () const
- {
- return this->seq_modifier_regex_;
- }
-
- inline bool options::
- seq_modifier_regex_specified () const
- {
- return this->seq_modifier_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- parser_regex () const
- {
- return this->parser_regex_;
- }
-
- inline bool options::
- parser_regex_specified () const
- {
- return this->parser_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- serializer_regex () const
- {
- return this->serializer_regex_;
- }
-
- inline bool options::
- serializer_regex_specified () const
- {
- return this->serializer_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- const_regex () const
- {
- return this->const_regex_;
- }
-
- inline bool options::
- const_regex_specified () const
- {
- return this->const_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- enumerator_regex () const
- {
- return this->enumerator_regex_;
- }
-
- inline bool options::
- enumerator_regex_specified () const
- {
- return this->enumerator_regex_specified_;
- }
-
- inline const NarrowStrings& options::
- element_type_regex () const
- {
- return this->element_type_regex_;
- }
-
- inline bool options::
- element_type_regex_specified () const
- {
- return this->element_type_regex_specified_;
- }
-
- inline const bool& options::
- name_regex_trace () const
- {
- return this->name_regex_trace_;
- }
-
- inline const bool& options::
- root_element_first () const
- {
- return this->root_element_first_;
- }
-
- inline const bool& options::
- root_element_last () const
- {
- return this->root_element_last_;
- }
-
- inline const bool& options::
- root_element_all () const
- {
- return this->root_element_all_;
- }
-
- inline const bool& options::
- root_element_none () const
- {
- return this->root_element_none_;
- }
-
- inline const NarrowStrings& options::
- root_element () const
- {
- return this->root_element_;
- }
-
- inline bool options::
- root_element_specified () const
- {
- return this->root_element_specified_;
- }
-
- inline const NarrowStrings& options::
- custom_type () const
- {
- return this->custom_type_;
- }
-
- inline bool options::
- custom_type_specified () const
- {
- return this->custom_type_specified_;
- }
-
- inline const NarrowStrings& options::
- custom_type_regex () const
- {
- return this->custom_type_regex_;
- }
-
- inline bool options::
- custom_type_regex_specified () const
- {
- return this->custom_type_regex_specified_;
- }
-
- inline const std::size_t& options::
- parts () const
- {
- return this->parts_;
- }
-
- inline bool options::
- parts_specified () const
- {
- return this->parts_specified_;
- }
-
- inline const NarrowString& options::
- parts_suffix () const
- {
- return this->parts_suffix_;
- }
-
- inline bool options::
- parts_suffix_specified () const
- {
- return this->parts_suffix_specified_;
- }
- }
-}
-
-// Begin epilogue.
-//
-//
-// End epilogue.
diff --git a/xsd/xsd/cxx/tree/order-processor.cxx b/xsd/xsd/cxx/tree/order-processor.cxx
deleted file mode 100644
index 68eee8c..0000000
--- a/xsd/xsd/cxx/tree/order-processor.cxx
+++ /dev/null
@@ -1,244 +0,0 @@
-// file : xsde/cxx/tree/order-processor.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <iostream>
-
-#include <cxx/tree/elements.hxx>
-#include <cxx/tree/order-processor.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct Member: Traversal::Element, Traversal::Any
- {
- Member (size_t count): count_ (count) {}
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (Context::skip (e))
- return;
-
- e.context ().set ("ordered-id", count_++);
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- a.context ().set ("ordered-id", count_++);
- }
-
- size_t count_;
- };
-
- //
- //
- struct Type: Traversal::Complex
- {
- Type (TypeNameSet& ordered_types, bool derived, bool mixed, bool all)
- : ordered_types_ (ordered_types),
- derived_ (derived),
- mixed_ (mixed),
- all_ (all)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- SemanticGraph::Context& ctx (c.context ());
-
- if (!ctx.count ("ordered"))
- {
- // First process our base.
- //
- if (c.inherits_p ())
- {
- SemanticGraph::Type& b (c.inherits ().base ());
-
- if (!b.context ().count ("ordered"))
- dispatch (b);
- }
-
- // See if our base (not necessarily immediate) is ordered.
- //
- using SemanticGraph::Complex;
-
- Complex* b (0);
-
- for (Complex* p (&c); p->inherits_p ();)
- {
- if ((b = dynamic_cast<Complex*> (&p->inherits ().base ())))
- {
- if (Context::ordered_p (*b))
- break;
-
- p = b;
- }
- else
- break;
- }
-
- bool o (all_ ||
- (derived_ && b != 0 && Context::ordered_p (*b)) ||
- (mixed_ && c.mixed_p ()) ||
- ordered_types_.find (c));
- ctx.set ("ordered", o);
-
- // Assign ids to elements and wildcards, calculate total count.
- //
- if (o)
- {
- size_t count (
- b != 0 && Context::ordered_p (*b)
- ? b->context ().get<size_t> ("ordered-count")
- : 1);
-
- ctx.set ("ordered-start", count);
-
- Member m (count);
- Traversal::Names n (m);
- names (c, n);
-
- // Assign content id for mixed text.
- //
- if (Context::mixed_p (c) && count == 1)
- ctx.set ("mixed-ordered-id", m.count_++);
-
- ctx.set ("ordered-count", m.count_);
- }
- }
- }
-
- private:
- TypeNameSet& ordered_types_;
- bool derived_;
- bool mixed_;
- bool all_;
- };
-
- // Go into sourced/included/imported schemas while making sure
- // we don't process the same stuff more than once.
- //
- struct Uses: Traversal::Sources,
- Traversal::Includes,
- Traversal::Imports
- {
- Uses (char const* seen_key)
- : seen_key_ (seen_key)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Sources& sr)
- {
- SemanticGraph::Schema& s (sr.schema ());
-
- if (!s.context ().count (seen_key_))
- {
- s.context ().set (seen_key_, true);
- Traversal::Sources::traverse (sr);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Includes& i)
- {
- SemanticGraph::Schema& s (i.schema ());
-
- if (!s.context ().count (seen_key_))
- {
- s.context ().set (seen_key_, true);
- Traversal::Includes::traverse (i);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Imports& i)
- {
- SemanticGraph::Schema& s (i.schema ());
-
- if (!s.context ().count (seen_key_))
- {
- s.context ().set (seen_key_, true);
- Traversal::Imports::traverse (i);
- }
- }
-
- private:
- char const* seen_key_;
- };
-
- char const* seen_key = "cxx-tree-order-processor-seen";
-
- bool
- process_impl (options const& ops,
- SemanticGraph::Schema& tu,
- SemanticGraph::Path const&)
- {
- // Prepare a set of ordered types.
- //
- TypeNameSet ordered_types (ops.ordered_type ().begin (),
- ops.ordered_type ().end ());
-
- // Root schema in the file-per-type mode is just a bunch
- // of includes without a namespace.
- //
- SemanticGraph::Schema::NamesIterator i (tu.names_begin ());
-
- // Nothing to do if this is the XML Schema namespace.
- //
- if (i == tu.names_end () ||
- i->named ().name () != L"http://www.w3.org/2001/XMLSchema")
- {
- // Note that we check first if this schema has already been
- // processed which may happen in the file-per-type compilation
- // mode.
- //
- if (!tu.context ().count (seen_key))
- {
- Traversal::Schema schema;
- Uses uses (seen_key);
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- Type type (ordered_types,
- ops.ordered_type_derived (),
- ops.ordered_type_mixed (),
- ops.ordered_type_all ());
-
- schema >> schema_names >> ns >> ns_names >> type;
-
- // Some twisted schemas do recusive self-inclusion.
- //
- tu.context ().set (seen_key, true);
-
- schema.dispatch (tu);
- }
- }
-
- return true;
- }
- }
-
- bool OrderProcessor::
- process (options const& ops,
- SemanticGraph::Schema& tu,
- SemanticGraph::Path const& file)
- {
- return process_impl (ops, tu, file);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/order-processor.hxx b/xsd/xsd/cxx/tree/order-processor.hxx
deleted file mode 100644
index fa68d21..0000000
--- a/xsd/xsd/cxx/tree/order-processor.hxx
+++ /dev/null
@@ -1,30 +0,0 @@
-// file : xsde/cxx/tree/order-processor.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_ORDER_PROCESSOR_HXX
-#define CXX_TREE_ORDER_PROCESSOR_HXX
-
-#include <xsd-frontend/semantic-graph.hxx>
-
-#include <xsd.hxx>
-#include <types.hxx>
-
-#include <cxx/tree/options.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- class OrderProcessor
- {
- public:
- bool
- process (options const&,
- XSDFrontend::SemanticGraph::Schema&,
- XSDFrontend::SemanticGraph::Path const& file);
- };
- }
-}
-
-#endif // CXX_TREE_ORDER_PROCESSOR_HXX
diff --git a/xsd/xsd/cxx/tree/parser-header.cxx b/xsd/xsd/cxx/tree/parser-header.cxx
deleted file mode 100644
index 8aff44f..0000000
--- a/xsd/xsd/cxx/tree/parser-header.cxx
+++ /dev/null
@@ -1,473 +0,0 @@
-// file : xsd/cxx/tree/parser-header.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/parser-header.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct ElementFunction: Traversal::Element,
- GlobalElementBase,
- Context
- {
- ElementFunction (Context& c)
- : GlobalElementBase (c), Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (!doc_root_p (e))
- return;
-
- String const& name (eparser (e));
- String const& error_handler (error_handler_type);
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @name Parsing functions for the %" <<
- comment (e.name ()) << " document root." << endl;
-
- if (e.annotated_p ())
- {
- os << " *" << endl;
- write_annotation (e.annotation ());
- }
-
- os << " */" << endl
- << "//@{" << endl
- << endl;
- }
-
- if (!doxygen)
- {
- os << "// Parse a URI or a local file." << endl
- << "//" << endl
- << endl;
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a URI or a local file." << endl
- << " *" << endl
- << " * @param uri A URI or a local file name." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * This function uses exceptions to report parsing errors." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (const " << string_type << "& uri," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a URI or a local file with an error handler." << endl
- << " *" << endl
- << " * @param uri A URI or a local file name." << endl
- << " * @param eh An error handler." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * This function reports parsing errors by calling the " <<
- "error handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (const " << string_type << "& uri," << endl
- << error_handler << "& eh," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a URI or a local file with a Xerces-C++ " <<
- "DOM error" << endl
- << " * handler." << endl
- << " *" << endl
- << " * @param uri A URI or a local file name." << endl
- << " * @param eh A Xerces-C++ DOM error handler." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * This function reports parsing errors by calling the " <<
- "error handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (const " << string_type << "& uri," << endl
- << xerces_ns << "::DOMErrorHandler& eh," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (!doxygen)
- {
- os << "// Parse std::istream." << endl
- << "//" << endl
- << endl;
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a standard input stream." << endl
- << " *" << endl
- << " * @param is A standrad input stream." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * This function uses exceptions to report parsing errors." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (::std::istream& is," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a standard input stream with an error handler." << endl
- << " *" << endl
- << " * @param is A standrad input stream." << endl
- << " * @param eh An error handler." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * This function reports parsing errors by calling the " <<
- "error handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (::std::istream& is," << endl
- << error_handler << "& eh," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a standard input stream with a " <<
- "Xerces-C++ DOM error" << endl
- << " * handler." << endl
- << " *" << endl
- << " * @param is A standrad input stream." << endl
- << " * @param eh A Xerces-C++ DOM error handler." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * This function reports parsing errors by calling the " <<
- "error handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (::std::istream& is," << endl
- << xerces_ns << "::DOMErrorHandler& eh," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a standard input stream with a resource id." << endl
- << " *" << endl
- << " * @param is A standrad input stream." << endl
- << " * @param id A resource id." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * The resource id is used to identify the document " <<
- "being parsed in" << endl
- << " * diagnostics as well as to resolve relative paths." << endl
- << " *" << endl
- << " * This function uses exceptions to report parsing errors." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (::std::istream& is," << endl
- << "const " << string_type << "& id," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a standard input stream with a resource " <<
- "id and an" << endl
- << " * error handler." << endl
- << " *" << endl
- << " * @param is A standrad input stream." << endl
- << " * @param id A resource id." << endl
- << " * @param eh An error handler." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * The resource id is used to identify the document " <<
- "being parsed in" << endl
- << " * diagnostics as well as to resolve relative paths." << endl
- << " *" << endl
- << " * This function reports parsing errors by calling the " <<
- "error handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (::std::istream& is," << endl
- << "const " << string_type << "& id," << endl
- << error_handler << "& eh," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a standard input stream with a resource " <<
- "id and a" << endl
- << " * Xerces-C++ DOM error handler." << endl
- << " *" << endl
- << " * @param is A standrad input stream." << endl
- << " * @param id A resource id." << endl
- << " * @param eh A Xerces-C++ DOM error handler." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * The resource id is used to identify the document " <<
- "being parsed in" << endl
- << " * diagnostics as well as to resolve relative paths." << endl
- << " *" << endl
- << " * This function reports parsing errors by calling the " <<
- "error handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (::std::istream& is," << endl
- << "const " << string_type << "& id," << endl
- << xerces_ns << "::DOMErrorHandler& eh," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (!doxygen)
- {
- os << "// Parse xercesc::InputSource." << endl
- << "//" << endl
- << endl;
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a Xerces-C++ input source." << endl
- << " *" << endl
- << " * @param is A Xerces-C++ input source." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * This function uses exceptions to report parsing errors." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (" << xerces_ns << "::InputSource& is," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a Xerces-C++ input source with an " <<
- "error handler." << endl
- << " *" << endl
- << " * @param is A Xerces-C++ input source." << endl
- << " * @param eh An error handler." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * This function reports parsing errors by calling the " <<
- "error handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (" << xerces_ns << "::InputSource& is," << endl
- << error_handler << "& eh," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a Xerces-C++ input source with a " <<
- "Xerces-C++ DOM" << endl
- << " * error handler." << endl
- << " *" << endl
- << " * @param is A Xerces-C++ input source." << endl
- << " * @param eh A Xerces-C++ DOM error handler." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * This function reports parsing errors by calling the " <<
- "error handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (" << xerces_ns << "::InputSource& is," << endl
- << xerces_ns << "::DOMErrorHandler& eh," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (!doxygen)
- {
- os << "// Parse xercesc::DOMDocument." << endl
- << "//" << endl
- << endl;
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a Xerces-C++ DOM document." << endl
- << " *" << endl
- << " * @param d A Xerces-C++ DOM document." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (const " << xerces_ns << "::DOMDocument& d," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Parse a Xerces-C++ DOM document." << endl
- << " *" << endl
- << " * @param d A pointer to the Xerces-C++ DOM document." << endl
- << " * @param f Parsing flags." << endl
- << " * @param p Parsing properties. " << endl
- << " * @return A pointer to the root of the object model." << endl
- << " *" << endl
- << " * This function is normally used together with the " <<
- "keep_dom and" << endl
- << " * own_dom parsing flags to assign ownership of the DOM " <<
- "document" << endl
- << " * to the object model." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << auto_ptr << "< " << type_name (e) << " >" << endl
- << name << " (" << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d," << endl
- << flags_type << " f = 0," << endl
- << "const " << properties_type << "& p = " << properties_type << " ());"
- << endl;
-
- if (doxygen)
- {
- os << "//@}" << endl
- << endl;
- }
- }
-
- private:
- String
- type_name (Type& e)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (e.type ());
-
- return o.str ();
- }
- };
- }
-
-
- void
- generate_parser_header (Context& ctx)
- {
- ctx.os << "#include <iosfwd>" << endl
- << endl
- << "#include <xercesc/sax/InputSource.hpp>" << endl
- << "#include <xercesc/dom/DOMDocument.hpp>" << endl
- << "#include <xercesc/dom/DOMErrorHandler.hpp>" << endl
- << endl;
-
- Traversal::Schema schema;
- Sources sources;
- Traversal::Names names_ns, names;
- Namespace ns (ctx);
- ElementFunction element (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names >> element;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/parser-header.hxx b/xsd/xsd/cxx/tree/parser-header.hxx
deleted file mode 100644
index dfe7843..0000000
--- a/xsd/xsd/cxx/tree/parser-header.hxx
+++ /dev/null
@@ -1,20 +0,0 @@
-// file : xsd/cxx/tree/parser-header.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_PARSER_HEADER_HXX
-#define CXX_TREE_PARSER_HEADER_HXX
-
-#include <cxx/tree/elements.hxx>
-
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_parser_header (Context&);
- }
-}
-
-#endif // CXX_TREE_PARSER_HEADER_HXX
diff --git a/xsd/xsd/cxx/tree/parser-source.cxx b/xsd/xsd/cxx/tree/parser-source.cxx
deleted file mode 100644
index c93368c..0000000
--- a/xsd/xsd/cxx/tree/parser-source.cxx
+++ /dev/null
@@ -1,515 +0,0 @@
-// file : xsd/cxx/tree/parser-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/parser-source.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct ElementFunction: Traversal::Element,
- GlobalElementBase,
- Context
- {
- ElementFunction (Context& c)
- : GlobalElementBase (c), Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (!doc_root_p (e))
- return;
-
- String const& name (eparser (e));
- SemanticGraph::Type& t (e.type ());
- String type (type_name (e));
- String const& error_handler (error_handler_type);
-
- // Note that I am using fq-name in function calls because g++ gets
- // confused if the name is 'type'. (see tests/schema/anonymous)
- //
-
- char const* d (std >= cxx_version::cxx11 ? "std::move (d)" : "d");
-
- // URI.
- //
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (const " << string_type << "& u," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << "::xsd::cxx::xml::auto_initializer i (" << endl
- << "(f & " << flags_type << "::dont_initialize) == 0," << endl
- << "(f & " << flags_type << "::keep_dom) == 0);"
- << endl
- << "::xsd::cxx::tree::error_handler< " << char_type << " > h;"
- << endl
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
- << "u, h, p, f";
-
- if (options.disable_multi_import ())
- os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
-
- os << "));"
- << endl
- << "h.throw_if_failed< ::xsd::cxx::tree::parsing< " <<
- char_type << " > > ();"
- << endl
- << "return " << auto_ptr << "< " << type << " > (" << endl
- << fq_name (e, "parser") << " (" << endl
- << d << ", f | " << flags_type << "::own_dom, p));"
- << "}";
-
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (const " << string_type << "& u," << endl
- << error_handler << "& h," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << "::xsd::cxx::xml::auto_initializer i (" << endl
- << "(f & " << flags_type << "::dont_initialize) == 0," << endl
- << "(f & " << flags_type << "::keep_dom) == 0);"
- << endl
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
- << "u, h, p, f";
-
- if (options.disable_multi_import ())
- os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
-
- os << "));"
- << endl
- << "if (!d.get ())" << endl
- << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();"
- << endl
- << "return " << auto_ptr << "< " << type << " > (" << endl
- << fq_name (e, "parser") << " (" << endl
- << d << ", f | " << flags_type << "::own_dom, p));"
- << "}";
-
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (const " << string_type << "& u," << endl
- << xerces_ns << "::DOMErrorHandler& h," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
- << "u, h, p, f";
-
- if (options.disable_multi_import ())
- os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
-
- os << "));"
- << endl
- << "if (!d.get ())" << endl
- << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();"
- << endl
- << "return " << auto_ptr << "< " << type << " > (" << endl
- << fq_name (e, "parser") << " (" << endl
- << d << ", f | " << flags_type << "::own_dom, p));"
- << "}";
-
-
- // istream
- //
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (::std::istream& is," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << "::xsd::cxx::xml::auto_initializer i (" << endl
- << "(f & " << flags_type << "::dont_initialize) == 0," << endl
- << "(f & " << flags_type << "::keep_dom) == 0);"
- << endl
- << "::xsd::cxx::xml::sax::std_input_source isrc (is);"
- << "return " << fq_name (e, "parser") << " (isrc, f, p);"
- << "}";
-
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (::std::istream& is," << endl
- << error_handler << "& h," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << "::xsd::cxx::xml::auto_initializer i (" << endl
- << "(f & " << flags_type << "::dont_initialize) == 0," << endl
- << "(f & " << flags_type << "::keep_dom) == 0);"
- << endl
- << "::xsd::cxx::xml::sax::std_input_source isrc (is);"
- << "return " << fq_name (e, "parser") << " (isrc, h, f, p);"
- << "}";
-
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (::std::istream& is," << endl
- << xerces_ns << "::DOMErrorHandler& h," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << "::xsd::cxx::xml::sax::std_input_source isrc (is);"
- << "return " << fq_name (e, "parser") << " (isrc, h, f, p);"
- << "}";
-
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (::std::istream& is," << endl
- << "const " << string_type << "& sid," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << "::xsd::cxx::xml::auto_initializer i (" << endl
- << "(f & " << flags_type << "::dont_initialize) == 0," << endl
- << "(f & " << flags_type << "::keep_dom) == 0);"
- << endl
- << "::xsd::cxx::xml::sax::std_input_source isrc (is, sid);"
- << "return " << fq_name (e, "parser") << " (isrc, f, p);"
- << "}";
-
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (::std::istream& is," << endl
- << "const " << string_type << "& sid," << endl
- << error_handler << "& h," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << "::xsd::cxx::xml::auto_initializer i (" << endl
- << "(f & " << flags_type << "::dont_initialize) == 0," << endl
- << "(f & " << flags_type << "::keep_dom) == 0);"
- << endl
- << "::xsd::cxx::xml::sax::std_input_source isrc (is, sid);"
- << "return " << fq_name (e, "parser") << " (isrc, h, f, p);"
- << "}";
-
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (::std::istream& is," << endl
- << "const " << string_type << "& sid," << endl
- << xerces_ns << "::DOMErrorHandler& h," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << "::xsd::cxx::xml::sax::std_input_source isrc (is, sid);"
- << "return " << fq_name (e, "parser") << " (isrc, h, f, p);"
- << "}";
-
-
- // InputSource.
- //
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (" << xerces_ns << "::InputSource& i," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << "::xsd::cxx::tree::error_handler< " << char_type << " > h;"
- << endl
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
- << "i, h, p, f";
-
- if (options.disable_multi_import ())
- os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
-
- os << "));"
- << endl
- << "h.throw_if_failed< ::xsd::cxx::tree::parsing< " <<
- char_type << " > > ();"
- << endl
- << "return " << auto_ptr << "< " << type << " > (" << endl
- << fq_name (e, "parser") << " (" << endl
- << d << ", f | " << flags_type << "::own_dom, p));"
- << "}";
-
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (" << xerces_ns << "::InputSource& i," << endl
- << error_handler << "& h," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
- << "i, h, p, f";
-
- if (options.disable_multi_import ())
- os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
-
- os << "));"
- << endl
- << "if (!d.get ())" << endl
- << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();"
- << endl
- << "return " << auto_ptr << "< " << type << " > (" << endl
- << fq_name (e, "parser") << " (" << endl
- << d << ", f | " << flags_type << "::own_dom, p));"
- << "}";
-
-
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (" << xerces_ns << "::InputSource& i," << endl
- << xerces_ns << "::DOMErrorHandler& h," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl
- << "i, h, p, f";
-
- if (options.disable_multi_import ())
- os << " | ::xsd::cxx::xml::dom::no_muliple_imports";
-
- os << "));"
- << endl
- << "if (!d.get ())" << endl
- << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();"
- << endl
- << "return " << auto_ptr << "< " << type << " > (" << endl
- << fq_name (e, "parser") << " (" << endl
- << d << ", f | " << flags_type << "::own_dom, p));"
- << "}";
-
-
- // DOM.
- //
-
- bool fund (false);
- {
- IsFundamentalType test (fund);
- test.dispatch (t);
- }
-
- // Check if we need to handle xsi:type and substitution groups.
- // If this element's type is anonymous then we don't need to do
- // anything.
- //
- bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
-
- // const DOMDocument&
- //
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (const " << xerces_ns << "::DOMDocument& doc," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "& p)"
- << "{"
- << "if (f & " << flags_type << "::keep_dom)"
- << "{"
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << "static_cast< " << xerces_ns <<
- "::DOMDocument* > (doc.cloneNode (true)));"
- << endl
- << "return " << auto_ptr << "< " << type << " > (" << endl
- << fq_name (e, "parser") << " (" << endl
- << d << ", f | " << flags_type << "::own_dom, p));"
- << "}"
- << "const " << xerces_ns << "::DOMElement& e (*doc.getDocumentElement ());"
- << "const " << qname_type << " n (" << endl
- << "::xsd::cxx::xml::dom::name< " << char_type << " > (e));"
- << endl;
-
- if (poly)
- {
- os << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
- << "::xsd::cxx::tree::type_factory_map_instance< " <<
- poly_plate << ", " << char_type << " > ().create (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (e.namespace_().name ()) << "," << endl
- << "&::xsd::cxx::tree::factory_impl< " << type << " >," << endl
- << "true, true, e, n, f, 0));"
- << endl
- << "if (tmp.get () != 0)"
- << "{"
- << auto_ptr << "< " << type << " > r (" << endl
- << "dynamic_cast< " << type << "* > (tmp.get ()));"
- << endl
- << "if (r.get ())" << endl
- << "tmp.release ();"
- << "else" << endl
- << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
- " > ();"
- << endl;
- }
- else
- {
- os << "if (n.name () == " << strlit (e.name ()) << " &&" << endl
- << "n.namespace_ () == " << strlit (e.namespace_().name ()) << ")"
- << "{";
-
- if (fund)
- {
- os << auto_ptr << "< " << type << " > r (" << endl
- << "new " << type << " (" << endl
- << "::xsd::cxx::tree::traits< " << type << ", " <<
- char_type;
-
- if (t.is_a<SemanticGraph::Fundamental::Double> ())
- os << ", ::xsd::cxx::tree::schema_type::double_";
- else if (t.is_a<SemanticGraph::Fundamental::Decimal> ())
- os << ", ::xsd::cxx::tree::schema_type::decimal";
-
- os << " >::create (" << endl
- << "e, f, 0)));";
- }
- else
- {
- os << auto_ptr << "< " << type << " > r (" << endl
- << "::xsd::cxx::tree::traits< " << type << ", " <<
- char_type << " >::create (" << endl
- << "e, f, 0));";
- }
- }
-
- os << "return r;"
- << "}"
- << "throw ::xsd::cxx::tree::unexpected_element < " <<
- char_type << " > (" << endl
- << "n.name ()," << endl
- << "n.namespace_ ()," << endl
- << strlit (e.name ()) << "," << endl
- << strlit (e.namespace_().name ()) << ");"
- << "}";
-
-
- // dom::auto_ptr/unique_ptr<DOMDocument>
- //
- os << auto_ptr << "< " << type << " >" << endl
- << name << " (" << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d," << endl
- << flags_type << " f," << endl
- << "const " << properties_type << "&)"
- << "{"
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > c (" << endl
- << "((f & " << flags_type << "::keep_dom) &&" << endl
- << "!(f & " << flags_type << "::own_dom))" << endl
- << "? static_cast< " << xerces_ns << "::DOMDocument* > (" <<
- "d->cloneNode (true))" << endl
- << ": 0);"
- << endl
- << xerces_ns << "::DOMDocument& doc (c.get () ? *c : *d);"
- << "const " << xerces_ns << "::DOMElement& e (" <<
- "*doc.getDocumentElement ());"
- << endl
- << "const " << qname_type << " n (" << endl
- << "::xsd::cxx::xml::dom::name< " << char_type << " > (e));"
- << endl
- << "if (f & " << flags_type << "::keep_dom)" << endl
- << "doc.setUserData (" << dom_node_key << "," << endl
- << "(c.get () ? &c : &d)," << endl
- << "0);"
- << endl;
-
- if (poly)
- {
- os << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
- << "::xsd::cxx::tree::type_factory_map_instance< " <<
- poly_plate << ", " << char_type << " > ().create (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (e.namespace_().name ()) << "," << endl
- << "&::xsd::cxx::tree::factory_impl< " << type << " >," << endl
- << "true, true, e, n, f, 0));"
- << endl
- << "if (tmp.get () != 0)"
- << "{";
- }
- else
- {
- os << "if (n.name () == " << strlit (e.name ()) << " &&" << endl
- << "n.namespace_ () == " << strlit (e.namespace_().name ()) << ")"
- << "{";
-
- if (fund)
- {
- os << auto_ptr << "< " << type << " > r (" << endl
- << "new " << type << " (" << endl
- << "::xsd::cxx::tree::traits< " << type << ", " <<
- char_type;
-
- if (t.is_a<SemanticGraph::Fundamental::Double> ())
- os << ", ::xsd::cxx::tree::schema_type::double_";
- else if (t.is_a<SemanticGraph::Fundamental::Decimal> ())
- os << ", ::xsd::cxx::tree::schema_type::decimal";
-
- os << " >::create (" << endl
- << "e, f, 0)));";
- }
- else
- {
- os << auto_ptr << "< " << type << " > r (" << endl
- << "::xsd::cxx::tree::traits< " << type << ", " <<
- char_type << " >::create (" << endl
- << "e, f, 0));";
- }
- }
-
- if (poly)
- {
- os << endl
- << auto_ptr << "< " << type << " > r (" << endl
- << "dynamic_cast< " << type << "* > (tmp.get ()));"
- << endl
- << "if (r.get ())" << endl
- << "tmp.release ();"
- << "else" << endl
- << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
- " > ();"
- << endl;
- }
-
- os << "return r;"
- << "}"
- << "throw ::xsd::cxx::tree::unexpected_element < " <<
- char_type << " > (" << endl
- << "n.name ()," << endl
- << "n.namespace_ ()," << endl
- << strlit (e.name ()) << "," << endl
- << strlit (e.namespace_().name ()) << ");"
- << "}";
- }
-
- private:
- String
- type_name (Type& e)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (e.type ());
-
- return o.str ();
- }
- };
- }
-
- void
- generate_parser_source (Context& ctx, size_t first, size_t last)
- {
- ctx.os << "#include <istream>" << endl
- << "#include <xsd/cxx/xml/sax/std-input-source.hxx>" << endl
- << "#include <xsd/cxx/tree/error-handler.hxx>" << endl
- << endl;
-
- Traversal::Schema schema;
- Sources sources;
- Traversal::Names names_ns, names;
- Namespace ns (ctx, first, last);
- ElementFunction element (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names >> element;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/parser-source.hxx b/xsd/xsd/cxx/tree/parser-source.hxx
deleted file mode 100644
index a5cd597..0000000
--- a/xsd/xsd/cxx/tree/parser-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/parser-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_PARSER_SOURCE_HXX
-#define CXX_TREE_PARSER_SOURCE_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_parser_source (Context&, size_t first, size_t last);
- }
-}
-
-#endif // CXX_TREE_PARSER_SOURCE_HXX
diff --git a/xsd/xsd/cxx/tree/polymorphism-processor.cxx b/xsd/xsd/cxx/tree/polymorphism-processor.cxx
deleted file mode 100644
index cbd2471..0000000
--- a/xsd/xsd/cxx/tree/polymorphism-processor.cxx
+++ /dev/null
@@ -1,741 +0,0 @@
-// file : xsde/cxx/tree/polymorphism-processor.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <iostream>
-
-#include <cxx/tree/elements.hxx>
-#include <cxx/tree/polymorphism-processor.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- //
- //
- struct Type: Traversal::Type,
- Traversal::Complex
- {
- Type (TypeNameSet& poly_types)
- : poly_types_ (poly_types)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- SemanticGraph::Context& ctx (t.context ());
-
- if (!ctx.count ("polymorphic"))
- ctx.set ("polymorphic", poly_types_.find (t));
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- SemanticGraph::Context& ctx (c.context ());
-
- if (!ctx.count ("polymorphic"))
- {
- // First check our base.
- //
- bool pb (false);
- if (c.inherits_p ())
- {
- SemanticGraph::Type& b (c.inherits ().base ());
-
- if (!b.context ().count ("polymorphic"))
- dispatch (b);
-
- pb = b.context ().get<bool> ("polymorphic");
- }
-
- ctx.set ("polymorphic", pb || poly_types_.find (c));
- }
- }
-
- private:
- TypeNameSet& poly_types_;
- };
-
- struct FundType: Traversal::AnyType,
- Traversal::AnySimpleType,
-
- Traversal::Fundamental::Byte,
- Traversal::Fundamental::UnsignedByte,
- Traversal::Fundamental::Short,
- Traversal::Fundamental::UnsignedShort,
- Traversal::Fundamental::Int,
- Traversal::Fundamental::UnsignedInt,
- Traversal::Fundamental::Long,
- Traversal::Fundamental::UnsignedLong,
- Traversal::Fundamental::Integer,
- Traversal::Fundamental::NonPositiveInteger,
- Traversal::Fundamental::NonNegativeInteger,
- Traversal::Fundamental::PositiveInteger,
- Traversal::Fundamental::NegativeInteger,
-
- Traversal::Fundamental::Boolean,
-
- Traversal::Fundamental::Float,
- Traversal::Fundamental::Double,
- Traversal::Fundamental::Decimal,
-
- Traversal::Fundamental::String,
- Traversal::Fundamental::NormalizedString,
- Traversal::Fundamental::Token,
- Traversal::Fundamental::Name,
- Traversal::Fundamental::NameToken,
- Traversal::Fundamental::NameTokens,
- Traversal::Fundamental::NCName,
- Traversal::Fundamental::Language,
-
- Traversal::Fundamental::QName,
-
- Traversal::Fundamental::Id,
- Traversal::Fundamental::IdRef,
- Traversal::Fundamental::IdRefs,
-
- Traversal::Fundamental::AnyURI,
-
- Traversal::Fundamental::Base64Binary,
- Traversal::Fundamental::HexBinary,
-
- Traversal::Fundamental::Date,
- Traversal::Fundamental::DateTime,
- Traversal::Fundamental::Duration,
- Traversal::Fundamental::Day,
- Traversal::Fundamental::Month,
- Traversal::Fundamental::MonthDay,
- Traversal::Fundamental::Year,
- Traversal::Fundamental::YearMonth,
- Traversal::Fundamental::Time,
-
- Traversal::Fundamental::Entity,
- Traversal::Fundamental::Entities
- {
- FundType (TypeNameSet& poly_types, bool& valid)
- : poly_types_ (poly_types), valid_ (valid)
- {
- }
-
- void
- check (SemanticGraph::Type& t, bool fund)
- {
- SemanticGraph::Context& ctx (t.context ());
-
- if (poly_types_.find (t))
- {
- if (!fund)
- ctx.set ("polymorphic", true);
- else
- {
- wcerr << "error: built-in type '" << t.name () << "' cannot "
- << "be polymorphic because it is mapped to a fundamental "
- << "C++ type"
- << endl;
-
- valid_ = false;
- }
- }
- else
- ctx.set ("polymorphic", false);
- }
-
- // anyType & anySimpleType.
- //
- virtual void
- traverse (SemanticGraph::AnyType& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::AnySimpleType& t)
- {
- check (t, false);
- }
-
- // Boolean.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Boolean& t)
- {
- check (t, true);
- }
-
- // Integral types.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Byte& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedByte& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Short& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedShort& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Int& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedInt& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Long& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::UnsignedLong& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Integer& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonPositiveInteger& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NonNegativeInteger& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::PositiveInteger& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NegativeInteger& t)
- {
- check (t, true);
- }
-
- // Floats.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Float& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Double& t)
- {
- check (t, true);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Decimal& t)
- {
- check (t, true);
- }
-
- // Strings.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::String& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NormalizedString& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Token& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameToken& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NameTokens& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Name& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::NCName& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Language& t)
- {
- check (t, false);
- }
-
-
- // Qualified name.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::QName& t)
- {
- check (t, false);
- }
-
-
- // ID/IDREF.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Id& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRef& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::IdRefs& t)
- {
- check (t, false);
- }
-
- // URI.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::AnyURI& t)
- {
- check (t, false);
- }
-
- // Binary.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Base64Binary& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::HexBinary& t)
- {
- check (t, false);
- }
-
-
- // Date/time.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Date& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::DateTime& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Duration& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Day& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Month& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::MonthDay& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Year& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::YearMonth& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Time& t)
- {
- check (t, false);
- }
-
- // Entity.
- //
- virtual void
- traverse (SemanticGraph::Fundamental::Entity& t)
- {
- check (t, false);
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Entities& t)
- {
- check (t, false);
- }
-
- private:
- TypeNameSet& poly_types_;
- bool& valid_;
- };
-
- struct GlobalElement: Traversal::Element
- {
- GlobalElement (TypeNameSet& poly_types,
- bool& valid,
- const WarningSet& disabled_warnings)
- : poly_types_ (poly_types), valid_ (valid), warning_ (true)
- {
- if (disabled_warnings.find ("all") != disabled_warnings.end () ||
- disabled_warnings.find ("T005") != disabled_warnings.end ())
- warning_ = false;
- }
-
- virtual void
- traverse (Type& e)
- {
- using SemanticGraph::Schema;
-
- if (!e.substitutes_p ())
- return;
-
- // If we are a substitution for some element, then mark
- // that element's type as polymorphic.
- //
- Type& r (e.substitutes ().root ());
- SemanticGraph::Type& rt (r.type ());
- SemanticGraph::Context& ctx (rt.context ());
-
- // We may need to override the previous value.
- //
- if (ctx.count ("polymorphic") && ctx.get<bool> ("polymorphic"))
- return;
-
- // Built-in types that are mapped to fundamental types cannot
- // be declared polymorphic.
- //
- bool fund (false);
- IsFundamentalType test (fund);
- test.dispatch (rt);
-
- if (fund)
- {
- wcerr << r.file () << ":" << r.line () << ":" << r.column ()
- << ": error: built-in type '" << rt.name () << "' "
- << "is mapped to a fundamental C++ type and is expected "
- << "to be polymorphic" << endl;
-
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": info: because type '" << rt.name () << "' is "
- << "used in a substitution group declared here" << endl;
-
- valid_ = false;
- return;
- }
-
- ctx.set ("polymorphic", true);
-
- if (!warning_)
- return;
-
- Schema& es (dynamic_cast<Schema&> (e.scope ().scope ()));
- Schema& rts (dynamic_cast<Schema&> (rt.scope ().scope ()));
-
- // If the root type and this element are in different schemas
- // and the root type is not explicitly marked as polymorphic,
- // then issue a warning.
- //
- if (&es != &rts && !sources_p (es, rts) && !poly_types_.find (rt))
- {
- wcerr << rt.file () << ":" << rt.line () << ":" << rt.column ()
- << ": warning T005: assuming type '" << rt.name () << "' "
- << "is polymorphic" << endl;
-
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": info: because type '" << rt.name () << "' is "
- << "used in a substitution group declared here" << endl;
-
- wcerr << rt.file () << ":" << rt.line () << ":" << rt.column ()
- << ": info: use --polymorphic-type to indicate this type "
- << "is polymorphic when compiling schemas that "
- << "reference it" << endl;
- }
- }
-
- private:
- // Return true if root sources s.
- //
- bool
- sources_p (SemanticGraph::Schema& root, SemanticGraph::Schema& s)
- {
- using SemanticGraph::Schema;
- using SemanticGraph::Sources;
-
- for (Schema::UsesIterator i (root.uses_begin ());
- i != root.uses_end (); ++i)
- {
- if (i->is_a<Sources> ())
- {
- if (&i->schema () == &s || sources_p (i->schema (), s))
- return true;
- }
- }
-
- return false;
- }
-
- private:
- TypeNameSet& poly_types_;
- bool& valid_;
- bool warning_;
- };
-
- // Go into sourced/included/imported schemas while making sure
- // we don't process the same stuff more than once.
- //
- struct Uses: Traversal::Sources,
- Traversal::Includes,
- Traversal::Imports
- {
- Uses (char const* seen_key)
- : seen_key_ (seen_key)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Sources& sr)
- {
- SemanticGraph::Schema& s (sr.schema ());
-
- if (!s.context ().count (seen_key_))
- {
- s.context ().set (seen_key_, true);
- Traversal::Sources::traverse (sr);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Includes& i)
- {
- SemanticGraph::Schema& s (i.schema ());
-
- if (!s.context ().count (seen_key_))
- {
- s.context ().set (seen_key_, true);
- Traversal::Includes::traverse (i);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Imports& i)
- {
- SemanticGraph::Schema& s (i.schema ());
-
- if (!s.context ().count (seen_key_))
- {
- s.context ().set (seen_key_, true);
- Traversal::Imports::traverse (i);
- }
- }
-
- private:
- char const* seen_key_;
- };
-
- char const* pass_one_key = "cxx-tree-polymorphism-processor-seen-one";
- char const* pass_two_key = "cxx-tree-polymorphism-processor-seen-two";
-
- bool
- process_impl (options const& ops,
- SemanticGraph::Schema& tu,
- SemanticGraph::Path const&,
- const WarningSet& disabled_warnings)
- {
- bool valid (true);
-
- // Prepare a set of polymorphic types.
- //
-
- TypeNameSet poly_types (ops.polymorphic_type ().begin (),
- ops.polymorphic_type ().end ());
-
- // Root schema in the file-per-type mode is just a bunch
- // of includes without a namespace.
- //
- SemanticGraph::Schema::NamesIterator i (tu.names_begin ());
-
- if (i != tu.names_end () &&
- i->named ().name () == L"http://www.w3.org/2001/XMLSchema")
- {
- // XML Schema namespace.
- //
- Traversal::Schema schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- FundType fund_type (poly_types, valid);
-
- schema >> schema_names >> ns >> ns_names >> fund_type;
-
- schema.dispatch (tu);
- }
- else
- {
- // First handle fundamental types.
- //
- {
- Traversal::Schema schema;
- Traversal::Implies implies;
- Traversal::Schema xs_schema;
-
- schema >> implies >> xs_schema;
-
- Traversal::Names xs_schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- FundType fund_type (poly_types, valid);
-
- xs_schema >> xs_schema_names >> ns >> ns_names >> fund_type;
-
- schema.dispatch (tu);
- }
-
- // Note that we check first if this schema has already been
- // processed which may happen in the file-per-type compilation
- // mode.
- //
- if (!tu.context ().count (pass_two_key))
- {
- // Pass one - check substitution groups.
- //
- if (valid)
- {
- Traversal::Schema schema;
- Uses uses (pass_one_key);
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- GlobalElement element (poly_types, valid, disabled_warnings);
-
- schema >> schema_names >> ns >> ns_names >> element;
-
- // Some twisted schemas do recusive self-inclusion.
- //
- tu.context ().set (pass_one_key, true);
-
- schema.dispatch (tu);
- }
-
- // Pass two - process types.
- //
- if (valid)
- {
- Traversal::Schema schema;
- Uses uses (pass_two_key);
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- Type type (poly_types);
-
- schema >> schema_names >> ns >> ns_names >> type;
-
- // Some twisted schemas do recusive self-inclusion.
- //
- tu.context ().set (pass_two_key, true);
-
- schema.dispatch (tu);
- }
- }
- }
-
- return valid;
- }
- }
-
- bool PolymorphismProcessor::
- process (options const& ops,
- SemanticGraph::Schema& tu,
- SemanticGraph::Path const& file,
- const WarningSet& disabled_warnings)
- {
- return process_impl (ops, tu, file, disabled_warnings);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/polymorphism-processor.hxx b/xsd/xsd/cxx/tree/polymorphism-processor.hxx
deleted file mode 100644
index 7338790..0000000
--- a/xsd/xsd/cxx/tree/polymorphism-processor.hxx
+++ /dev/null
@@ -1,31 +0,0 @@
-// file : xsde/cxx/tree/polymorphism-processor.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_POLYMORPHISM_PROCESSOR_HXX
-#define CXX_TREE_POLYMORPHISM_PROCESSOR_HXX
-
-#include <xsd-frontend/semantic-graph.hxx>
-
-#include <xsd.hxx>
-#include <types.hxx>
-
-#include <cxx/tree/options.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- class PolymorphismProcessor
- {
- public:
- bool
- process (options const&,
- XSDFrontend::SemanticGraph::Schema&,
- XSDFrontend::SemanticGraph::Path const& file,
- const WarningSet& disabled_warnings);
- };
- }
-}
-
-#endif // CXX_TREE_POLYMORPHISM_PROCESSOR_HXX
diff --git a/xsd/xsd/cxx/tree/serialization-header.cxx b/xsd/xsd/cxx/tree/serialization-header.cxx
deleted file mode 100644
index 67da857..0000000
--- a/xsd/xsd/cxx/tree/serialization-header.cxx
+++ /dev/null
@@ -1,580 +0,0 @@
-// file : xsd/cxx/tree/serialization-header.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/serialization-header.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String name (ename (l));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (l, name) && !name)
- return;
-
- // operator<< (xercesc::DOMElement)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMElement&, " <<
- "const " << name << "&);"
- << endl;
-
- // operator<< (xercesc::DOMAttr)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMAttr&, " <<
- "const " << name << "&);"
- << endl;
-
- // operator<< (list_stream)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << list_stream_type << "&," << endl
- << "const " << name << "&);"
- << endl;
-
- }
- };
-
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String name (ename (u));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (u, name) && !name)
- return;
-
- // operator<< (xercesc::DOMElement)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMElement&, " <<
- "const " << name << "&);"
- << endl;
-
- // operator<< (xercesc::DOMAttr)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMAttr&, " <<
- "const " << name << "&);"
- << endl;
-
- // operator<< (list_stream)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << list_stream_type << "&," << endl
- << "const " << name << "&);"
- << endl;
- }
- };
-
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- String name (ename (e));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- // operator<< (xercesc::DOMElement)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMElement&, " <<
- "const " << name << "&);"
- << endl;
-
- // operator<< (xercesc::DOMAttr)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMAttr&, " <<
- "const " << name << "&);"
- << endl;
-
- // operator<< (list_stream)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << list_stream_type << "&," << endl
- << "const " << name << "&);"
- << endl;
- }
- };
-
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- String name (ename (c));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- // operator<< (xercesc::DOMElement)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMElement&, " <<
- "const " << name << "&);"
- << endl;
-
- bool simple (true);
- {
- IsSimpleType t (simple);
- t.dispatch (c);
- }
-
- if (simple)
- {
- // operator<< (xercesc::DOMAttr)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMAttr&, " <<
- "const " << name << "&);"
- << endl;
-
- // operator<< (list_stream)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << list_stream_type << "&," << endl
- << "const " << name << "&);"
- << endl;
- }
- }
- };
-
- struct ElementType: Traversal::Element,
- GlobalElementBase,
- Context
- {
- ElementType (Context& c)
- : GlobalElementBase (c), Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (doc_root_p (e))
- {
- // operator<< (xercesc::DOMElement)
- //
- os << inst_exp
- << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMElement&, " <<
- "const " << ename (e) << "&);"
- << endl;
- }
- }
- };
-
- struct ElementFunction: Traversal::Element,
- GlobalElementBase,
- Context
- {
- ElementFunction (Context& c)
- : GlobalElementBase (c), Context (c)
- {
- }
-
-
- virtual void
- traverse (Type& e)
- {
- if (!doc_root_p (e))
- return;
-
- String const& name (eserializer (e));
- String const& error_handler (error_handler_type);
- String const& namespace_infomap (namespace_infomap_type);
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @name Serialization functions for the %" <<
- comment (e.name ()) << " document root." << endl;
-
- if (e.annotated_p ())
- {
- os << " *" << endl;
- write_annotation (e.annotation ());
- }
-
- os << " */" << endl
- << "//@{" << endl
- << endl;
- }
-
- if (!doxygen)
- {
- os << "// Serialize to std::ostream." << endl
- << "//" << endl
- << endl;
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Serialize to a standard output stream." << endl
- << " *" << endl
- << " * @param os A standrad output stream." << endl
- << " * @param x An object model to serialize." << endl
- << " * @param m A namespace information map." << endl
- << " * @param e A character encoding to produce XML in." << endl
- << " * @param f Serialization flags." << endl
- << " *" << endl
- << " * This function uses exceptions to report " <<
- "serialization errors." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << "void" << endl
- << name << " (::std::ostream& os," << endl
- << "const " << type_name (e) << "& x, " << endl
- << "const " << namespace_infomap << "& m = " <<
- namespace_infomap << " ()," << endl
- << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
- << flags_type << " f = 0);"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Serialize to a standard output stream with an " <<
- "error handler." << endl
- << " *" << endl
- << " * @param os A standrad output stream." << endl
- << " * @param x An object model to serialize." << endl
- << " * @param eh An error handler." << endl
- << " * @param m A namespace information map." << endl
- << " * @param e A character encoding to produce XML in." << endl
- << " * @param f Serialization flags." << endl
- << " *" << endl
- << " * This function reports serialization errors by " <<
- "calling the error" << endl
- << " * handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << "void" << endl
- << name << " (::std::ostream& os," << endl
- << "const " << type_name (e) << "& x, " << endl
- << error_handler << "& eh," << endl
- << "const " << namespace_infomap << "& m = " <<
- namespace_infomap << " ()," << endl
- << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
- << flags_type << " f = 0);"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Serialize to a standard output stream with a " <<
- "Xerces-C++ DOM" << endl
- << " * error handler." << endl
- << " *" << endl
- << " * @param os A standrad output stream." << endl
- << " * @param x An object model to serialize." << endl
- << " * @param eh A Xerces-C++ DOM error handler." << endl
- << " * @param m A namespace information map." << endl
- << " * @param e A character encoding to produce XML in." << endl
- << " * @param f Serialization flags." << endl
- << " *" << endl
- << " * This function reports serialization errors by " <<
- "calling the error" << endl
- << " * handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << "void" << endl
- << name << " (::std::ostream& os," << endl
- << "const " << type_name (e) << "& x, " << endl
- << xerces_ns << "::DOMErrorHandler& eh," << endl
- << "const " << namespace_infomap << "& m = " <<
- namespace_infomap << " ()," << endl
- << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
- << flags_type << " f = 0);"
- << endl;
-
- if (!doxygen)
- {
- os << "// Serialize to xercesc::XMLFormatTarget." << endl
- << "//" << endl
- << endl;
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Serialize to a Xerces-C++ XML format target." << endl
- << " *" << endl
- << " * @param ft A Xerces-C++ XML format target." << endl
- << " * @param x An object model to serialize." << endl
- << " * @param m A namespace information map." << endl
- << " * @param e A character encoding to produce XML in." << endl
- << " * @param f Serialization flags." << endl
- << " *" << endl
- << " * This function uses exceptions to report " <<
- "serialization errors." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << "void" << endl
- << name << " (" << xerces_ns << "::XMLFormatTarget& ft," << endl
- << "const " << type_name (e) << "& x, " << endl
- << "const " << namespace_infomap << "& m = " <<
- namespace_infomap << " ()," << endl
- << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
- << flags_type << " f = 0);"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Serialize to a Xerces-C++ XML format target " <<
- "with an error" << endl
- << " * handler." << endl
- << " *" << endl
- << " * @param ft A Xerces-C++ XML format target." << endl
- << " * @param x An object model to serialize." << endl
- << " * @param eh An error handler." << endl
- << " * @param m A namespace information map." << endl
- << " * @param e A character encoding to produce XML in." << endl
- << " * @param f Serialization flags." << endl
- << " *" << endl
- << " * This function reports serialization errors by " <<
- "calling the error" << endl
- << " * handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << "void" << endl
- << name << " (" << xerces_ns << "::XMLFormatTarget& ft," << endl
- << "const " << type_name (e) << "& x, " << endl
- << error_handler << "& eh," << endl
- << "const " << namespace_infomap << "& m = " <<
- namespace_infomap << " ()," << endl
- << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
- << flags_type << " f = 0);"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Serialize to a Xerces-C++ XML format target " <<
- "with a" << endl
- << " * Xerces-C++ DOM error handler." << endl
- << " *" << endl
- << " * @param ft A Xerces-C++ XML format target." << endl
- << " * @param x An object model to serialize." << endl
- << " * @param eh A Xerces-C++ DOM error handler." << endl
- << " * @param m A namespace information map." << endl
- << " * @param e A character encoding to produce XML in." << endl
- << " * @param f Serialization flags." << endl
- << " *" << endl
- << " * This function reports serialization errors by " <<
- "calling the error" << endl
- << " * handler." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << "void" << endl
- << name << " (" << xerces_ns << "::XMLFormatTarget& ft," << endl
- << "const " << type_name (e) << "& x, " << endl
- << xerces_ns << "::DOMErrorHandler& eh," << endl
- << "const " << namespace_infomap << "& m = " <<
- namespace_infomap << " ()," << endl
- << "const " << string_type << "& e = " << L << "\"UTF-8\"," << endl
- << flags_type << " f = 0);"
- << endl;
-
- if (!doxygen)
- {
- os << "// Serialize to an existing xercesc::DOMDocument." << endl
- << "//" << endl
- << endl;
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Serialize to an existing Xerces-C++ DOM document." << endl
- << " *" << endl
- << " * @param d A Xerces-C++ DOM document." << endl
- << " * @param x An object model to serialize." << endl
- << " * @param f Serialization flags." << endl
- << " *" << endl
- << " * Note that it is your responsibility to create the " <<
- "DOM document" << endl
- << " * with the correct root element as well as set the " <<
- "necessary" << endl
- << " * namespace mapping attributes." << endl
- << " */" << endl;
- }
- os << inst_exp
- << "void" << endl
- << name << " (" << xerces_ns << "::DOMDocument& d," << endl
- << "const " << type_name (e) << "& x," << endl
- << flags_type << " f = 0);"
- << endl;
-
- if (!doxygen)
- {
- os << "// Serialize to a new xercesc::DOMDocument." << endl
- << "//" << endl
- << endl;
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Serialize to a new Xerces-C++ DOM document." << endl
- << " *" << endl
- << " * @param x An object model to serialize." << endl
- << " * @param m A namespace information map." << endl
- << " * @param f Serialization flags." << endl
- << " * @return A pointer to the new Xerces-C++ DOM document." << endl
- << " */" << endl;
- }
-
- os << inst_exp
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument >" << endl
- << name << " (const " << type_name (e) << "& x, " << endl
- << "const " << namespace_infomap << "& m = " <<
- namespace_infomap << " ()," << endl
- << flags_type << " f = 0);"
- << endl;
-
- if (doxygen)
- {
- os << "//@}" << endl
- << endl;
- }
- }
-
- private:
- String
- type_name (Type& e)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (e.type ());
-
- return o.str ();
- }
- };
-
- }
-
- void
- generate_serialization_header (Context& ctx)
- {
- bool elemen_type (ctx.options.generate_element_type ());
-
- if (!elemen_type)
- ctx.os << "#include <iosfwd>" << endl
- << endl
- << "#include <xercesc/dom/DOMDocument.hpp>" << endl
- << "#include <xercesc/dom/DOMErrorHandler.hpp>" << endl
- << "#include <xercesc/framework/XMLFormatter.hpp>" << endl
- << endl
- << "#include <xsd/cxx/xml/dom/auto-ptr.hxx>" << endl
- << endl;
-
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names names_ns, names;
-
- Namespace ns (ctx);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
- ElementType element_type (ctx);
- ElementFunction element_function (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- if (elemen_type)
- names >> element_type;
- else
- names >> element_function;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/serialization-header.hxx b/xsd/xsd/cxx/tree/serialization-header.hxx
deleted file mode 100644
index 979bb2e..0000000
--- a/xsd/xsd/cxx/tree/serialization-header.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/serialization-header.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_SERIALIZATION_HEADER_HXX
-#define CXX_TREE_SERIALIZATION_HEADER_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_serialization_header (Context&);
- }
-}
-
-#endif // CXX_TREE_SERIALIZATION_HEADER_HXX
diff --git a/xsd/xsd/cxx/tree/serialization-source.cxx b/xsd/xsd/cxx/tree/serialization-source.cxx
deleted file mode 100644
index 559a3cf..0000000
--- a/xsd/xsd/cxx/tree/serialization-source.cxx
+++ /dev/null
@@ -1,1466 +0,0 @@
-// file : xsd/cxx/tree/serialization-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/serialization-source.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- enum schema_type
- {
- st_other,
- st_double,
- st_decimal
- };
-
- enum schema_type
- schema_type (SemanticGraph::Type& t)
- {
- if (t.is_a<SemanticGraph::Fundamental::Double> ())
- return st_double;
- else if (t.is_a<SemanticGraph::Fundamental::Decimal> ())
- return st_decimal;
- else
- return st_other;
- }
-
-
- //
- //
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String name (ename (l));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (l, name) && !name)
- return;
-
- SemanticGraph::Type& item_type (l.argumented ().type ());
- String base (L"::xsd::cxx::tree::list< " +
- item_type_name (item_type) + L", " + char_type);
-
- if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
- base += L", ::xsd::cxx::tree::schema_type::double_";
- else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
- base += L", ::xsd::cxx::tree::schema_type::decimal";
-
- base += L" >";
-
- // operator<< (xercesc::DOMElement)
- //
- os << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMElement& e, " <<
- "const " << name << "& i)"
- << "{"
- << "e << static_cast< const " << base << "& > (i);"
- << "}";
-
- // operator<< (xercesc::DOMAttr)
- //
- os << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMAttr& a, " <<
- "const " << name << "& i)"
- << "{"
- << "a << static_cast< const " << base << "& > (i);"
- << "}";
-
- // operator<< (list_stream)
- //
- os << "void" << endl
- << "operator<< (" << list_stream_type << "& l," << endl
- << "const " << name << "& i)"
- << "{"
- << "l << static_cast< const " << base << "& > (i);"
- << "}";
-
- // Register with type factory map. If this type is anonymous
- // but substitutes, then it will be registered as part of the
- // substitution registration.
- //
- if (polymorphic && polymorphic_p (l) && !anonymous_p (l))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (l));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::type_serializer_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_type_serializer_init (" << endl
- << strlit (l.name ()) << "," << endl
- << strlit (xml_ns_name (l)) << ");"
- << endl
- << endl;
- }
- }
-
- private:
- String
- item_type_name (SemanticGraph::Type& t)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (t);
-
- return o.str ();
- }
- };
-
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String name (ename (u));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (u, name) && !name)
- return;
-
- String const& base (xs_string_type);
-
- // operator<< (xercesc::DOMElement)
- //
- os << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMElement& e, " <<
- "const " << name << "& i)"
- << "{"
- << "e << static_cast< const " << base << "& > (i);"
- << "}";
-
- // operator<< (xercesc::DOMAttr)
- //
- os << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMAttr& a, " <<
- "const " << name << "& i)"
- << "{"
- << "a << static_cast< const " << base << "& > (i);"
- << "}";
-
- // operator<< (list_stream)
- //
- os << "void" << endl
- << "operator<< (" << list_stream_type << "& l," << endl
- << "const " << name << "& i)"
- << "{"
- << "l << static_cast< const " << base << "& > (i);"
- << "}";
-
- // Register with type factory map. If this type is anonymous
- // but substitutes, then it will be registered as part of the
- // substitution registration.
- //
- if (polymorphic && polymorphic_p (u) && !anonymous_p (u))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (u));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::type_serializer_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_type_serializer_init (" << endl
- << strlit (u.name ()) << "," << endl
- << strlit (xml_ns_name (u)) << ");"
- << endl
- << endl;
- }
- }
- };
-
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c), base_ (c)
- {
- inherits_base_ >> base_;
- }
-
- virtual void
- traverse (Type& e)
- {
- String name (ename (e));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- // operator<< (xercesc::DOMElement)
- //
- os << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMElement& e, " <<
- "const " << name << "& i)"
- << "{"
- << "e << static_cast< const ";
-
- inherits (e, inherits_base_);
-
- os << "& > (i);"
- << "}";
-
-
- // operator<< (xercesc::DOMAttr)
- //
- os << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMAttr& a, " <<
- "const " << name << "& i)"
- << "{"
- << "a << static_cast< const ";
-
- inherits (e, inherits_base_);
-
- os << "& > (i);"
- << "}";
-
-
- // operator<< (list_stream)
- //
- os << "void" << endl
- << "operator<< (" << list_stream_type << "& l," << endl
- << "const " << name << "& i)"
- << "{"
- << "l << static_cast< const ";
-
- inherits (e, inherits_base_);
-
- os << "& > (i);"
- << "}";
-
-
- // Register with type factory map. If this type is anonymous
- // but substitutes, then it will be registered as part of the
- // substitution registration.
- //
- if (polymorphic && polymorphic_p (e) && !anonymous_p (e))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (e));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::type_serializer_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_type_serializer_init (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (xml_ns_name (e)) << ");"
- << endl
- << endl;
- }
- }
-
- private:
- Traversal::Inherits inherits_base_;
- BaseTypeName base_;
- };
-
- struct Element: Traversal::Element, Context
- {
- Element (Context& c, String const& scope_)
- : Context (c), scope (scope_)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (skip (e))
- return;
-
- SemanticGraph::Complex& c (
- dynamic_cast<SemanticGraph::Complex&> (e.scope ()));
-
- bool ordered (ordered_p (c));
-
- String const& aname (eaname (e));
- String ns (e.qualified_p () ? e.namespace_ ().name () : "");
- String type (scope + L"::" + etype (e));
-
- // Check if we need to handle xsi:type and substitution groups.
- // If this element's type is anonymous then we don't need to do
- // anything. Note that if the type is anonymous then it can't be
- // derived from which makes it impossible to substitute or
- // dynamically-type with xsi:type.
- //
- SemanticGraph::Type& t (e.type ());
- bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
-
- os << "// " << comment (e.name ()) << endl
- << "//" << endl;
-
- if (ordered)
- os << "case " << scope << "::" <<
- e.context ().get<String> ("ordered-id-name") << ":"
- << "{";
-
- if (poly)
- {
- os << (ordered ? "" : "{")
- << "::xsd::cxx::tree::type_serializer_map< " << char_type
- << " >& tsm (" << endl
- << "::xsd::cxx::tree::type_serializer_map_instance< " <<
- poly_plate << ", " << char_type << " > ());"
- << endl;
- }
-
- if (max (e) != 1)
- {
- // sequence
- //
- if (ordered)
- os << "const " << type << "& x (i." << aname <<
- " ()[b->index]);"
- << endl;
- else
- os << "for (" << scope << "::" << econst_iterator (e) << endl
- << "b (i." << aname << " ().begin ()), " <<
- "n (i." << aname << " ().end ());" << endl
- << "b != n; ++b)"
- << "{";
-
- char const* x (ordered ? "x" : "*b");
-
- if (poly)
- {
- os << "if (typeid (" << type << ") == typeid (" << x << "))"
- << "{"
- << xerces_ns << "::DOMElement& s (" << endl
- << "::xsd::cxx::xml::dom::create_element (" << endl
- << strlit (e.name ()) << "," << endl
- << (ns ? strlit (ns) + L",\n" : L"")
- << "e));"
- << endl
- << "s << " << x << ";"
- << "}"
- << "else" << endl
- << "tsm.serialize (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (ns) << "," << endl
- << (e.global_p () ? "true" : "false") << ", " <<
- (e.qualified_p () ? "true" : "false") << ", e, " << x << ");";
- }
- else
- {
- os << xerces_ns << "::DOMElement& s (" << endl
- << "::xsd::cxx::xml::dom::create_element (" << endl
- << strlit (e.name ()) << "," << endl
- << (ns ? strlit (ns) + L",\n" : L"")
- << "e));"
- << endl;
-
- switch (schema_type (t))
- {
- case st_other:
- {
- os << "s << " << x << ";";
- break;
- }
- case st_double:
- {
- os << "s << " << as_double_type << " (" << x << ");";
- break;
- }
- case st_decimal:
- {
- os << "s << " << as_decimal_type << " (" << x << ");";
- break;
- }
- }
- }
- }
- else if (min (e) == 0)
- {
- // optional
- //
- if (!ordered)
- os << "if (i." << aname << " ())"
- << "{";
-
- if (poly)
- {
- os << "const " << type << "& x (*i." << aname << " ());"
- << "if (typeid (" << type << ") == typeid (x))"
- << "{"
- << xerces_ns << "::DOMElement& s (" << endl
- << "::xsd::cxx::xml::dom::create_element (" << endl
- << strlit (e.name ()) << "," << endl
- << (ns ? strlit (ns) + L",\n" : L"")
- << "e));"
- << endl
- << "s << x;"
- << "}"
- << "else" << endl
- << "tsm.serialize (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (ns) << "," << endl
- << (e.global_p () ? "true" : "false") << ", " <<
- (e.qualified_p () ? "true" : "false") << ", e, x);";
- }
- else
- {
- os << xerces_ns << "::DOMElement& s (" << endl
- << "::xsd::cxx::xml::dom::create_element (" << endl
- << strlit (e.name ()) << "," << endl
- << (ns ? strlit (ns) + L",\n" : L"")
- << "e));"
- << endl;
-
- switch (schema_type (t))
- {
- case st_other:
- {
- os << "s << *i." << aname << " ();";
- break;
- }
- case st_double:
- {
- os << "s << " << as_double_type << "(*i." << aname << " ());";
- break;
- }
- case st_decimal:
- {
- os << "s << " << as_decimal_type << "(*i." << aname << " ());";
- break;
- }
- }
- }
- }
- else
- {
- // one
- //
- if (poly)
- {
- os << "const " << type << "& x (i." << aname << " ());"
- << "if (typeid (" << type << ") == typeid (x))"
- << "{"
- << xerces_ns << "::DOMElement& s (" << endl
- << "::xsd::cxx::xml::dom::create_element (" << endl
- << strlit (e.name ()) << "," << endl
- << (ns ? strlit (ns) + L",\n" : L"")
- << "e));"
- << endl
- << "s << x;"
- << "}"
- << "else" << endl
- << "tsm.serialize (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (ns) << "," << endl
- << (e.global_p () ? "true" : "false") << ", " <<
- (e.qualified_p () ? "true" : "false") << ", e, x);";
- }
- else
- {
- if (!ordered)
- os << "{";
-
- os << xerces_ns << "::DOMElement& s (" << endl
- << "::xsd::cxx::xml::dom::create_element (" << endl
- << strlit (e.name ()) << "," << endl
- << (ns ? strlit (ns) + L",\n" : L"")
- << "e));"
- << endl;
-
- switch (schema_type (t))
- {
- case st_other:
- {
- os << "s << i." << aname << " ();";
- break;
- }
- case st_double:
- {
- os << "s << " << as_double_type << "(i." << aname << " ());";
- break;
- }
- case st_decimal:
- {
- os << "s << " << as_decimal_type << "(i." << aname << " ());";
- break;
- }
- }
- }
- }
-
- if (ordered)
- {
- // See comment for bool text (false); below.
- //
- if (mixed_p (c) && c.context ().get<size_t> ("ordered-start") != 1)
- os << "text = true;";
-
- os << "continue;"
- << "}";
- }
- else
- {
- os << "}";
-
- if (poly && (max (e) != 1 || min (e) == 0))
- os << "}"; // There is no extra block for poly one.
- }
- }
-
- private:
- String scope;
- };
-
- struct Any: Traversal::Any, Context
- {
- Any (Context& c, String const& scope_)
- : Context (c), scope (scope_)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- SemanticGraph::Complex& c (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ()));
-
- bool ordered (ordered_p (c));
-
- String const& aname (eaname (a));
-
- os << "// " << ename (a) << endl
- << "//" << endl;
-
- if (ordered)
- os << "case " << scope << "::" <<
- a.context ().get<String> ("ordered-id-name") << ":";
-
- if (max (a) != 1)
- {
- // sequence
- //
- if (!ordered)
- os << "for (" << scope << "::" << econst_iterator (a) << endl
- << "b (i." << aname << " ().begin ()), " <<
- "n (i." << aname << " ().end ());" << endl
- << "b != n; ++b)";
-
- os << "{"
- << "e.appendChild (" << endl
- << "e.getOwnerDocument ()->importNode (" << endl
- << "const_cast< " << xerces_ns <<
- "::DOMElement* > (&(" <<
- (ordered ? (L"i." + aname + L" ()[b->index]") : L"*b") <<
- ")), true));";
- }
- else if (min (a) == 0)
- {
- // optional
- //
- if (!ordered)
- os << "if (i." << aname << " ())";
-
- os << "{"
- << "e.appendChild (" << endl
- << "e.getOwnerDocument ()->importNode (" << endl
- << "const_cast< " << xerces_ns << "::DOMElement* > (&(*i." <<
- aname << " ())), true));";
- }
- else
- {
- // one
- //
- if (ordered)
- os << "{";
-
- os << "e.appendChild (" << endl
- << "e.getOwnerDocument ()->importNode (" << endl
- << "const_cast< " << xerces_ns << "::DOMElement* > (&(i." <<
- aname << " ())), true));"
- << endl;
- }
-
- if (ordered)
- {
- // See comment for bool text (false); below.
- //
- if (mixed_p (c) && c.context ().get<size_t> ("ordered-start") != 1)
- os << "text = true;";
-
- os << "continue;";
- }
-
- if (ordered || max (a) != 1 || min (a) == 0)
- os << "}";
- }
-
- private:
- String scope;
- };
-
- struct Attribute: Traversal::Attribute, Context
- {
- Attribute (Context& c, String const& scope_)
- : Context (c), scope (scope_)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& aname (eaname (a));
- String ns (a.qualified_p () ? a.namespace_ ().name () : "");
-
- os << "// " << comment (a.name ()) << endl
- << "//" << endl;
-
- if (a.optional_p () && !a.default_p ())
- {
- os << "if (i." << aname << " ())"
- << "{"
- << xerces_ns << "::DOMAttr& a (" << endl
- << "::xsd::cxx::xml::dom::create_attribute (" << endl
- << strlit (a.name ()) << "," << endl
- << (ns ? strlit (ns) + L",\n" : L"")
- << "e));"
- << endl;
-
- switch (schema_type (a.type ()))
- {
- case st_other:
- {
- os << "a << *i." << aname << " ();";
- break;
- }
- case st_double:
- {
- os << "a << " << as_double_type << "(*i." << aname << " ());";
- break;
- }
- case st_decimal:
- {
- os << "a << " << as_decimal_type << "(*i." << aname << " ());";
- break;
- }
- }
-
- os << "}";
- }
- else
- {
- // Make sure we serialize required fixed attributes.
- //
- if (a.optional_p () && options.omit_default_attributes ())
- {
- os << "if (i." << aname << " () != " << scope <<
- "::" << edefault_value (a) << " ())";
- }
-
- os << "{"
- << xerces_ns << "::DOMAttr& a (" << endl
- << "::xsd::cxx::xml::dom::create_attribute (" << endl
- << strlit (a.name ()) << "," << endl
- << (ns ? strlit (ns) + L",\n" : L"")
- << "e));"
- << endl;
-
- switch (schema_type (a.type ()))
- {
- case st_other:
- {
- os << "a << i." << aname << " ();";
- break;
- }
- case st_double:
- {
- os << "a << " << as_double_type << "(i." << aname << " ());";
- break;
- }
- case st_decimal:
- {
- os << "a << " << as_decimal_type << "(i." << aname << " ());";
- break;
- }
- }
-
- os << "}";
- }
- }
-
- private:
- String scope;
- };
-
- struct AnyAttribute: Traversal::AnyAttribute, Context
- {
- AnyAttribute (Context& c, String const& scope_)
- : Context (c), scope (scope_)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& aname (eaname (a));
-
- os << "// " << ename (a) << endl
- << "//" << endl;
-
- os << "for (" << scope << "::" << econst_iterator (a) << endl
- << "b (i." << aname << " ().begin ()), " <<
- "n (i." << aname << " ().end ());" << endl
- << "b != n; ++b)"
- << "{"
- << xerces_ns << "::DOMAttr* a (" << endl
- << "static_cast< " << xerces_ns << "::DOMAttr* > (" << endl
- << "e.getOwnerDocument ()->importNode (" << endl
- << "const_cast< " << xerces_ns << "::DOMAttr* > (&(*b)), true)));"
- << endl
- << "if (a->getLocalName () == 0)" << endl
- << "e.setAttributeNode (a);"
- << "else" << endl
- << "e.setAttributeNodeNS (a);"
- << "}";
- }
-
- private:
- String scope;
- };
-
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c), base_ (c)
- {
- inherits_ >> base_;
- }
-
- virtual void
- traverse (Type& c)
- {
- SemanticGraph::Context& ctx (c.context ());
-
- String name (ename (c));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- // operator<< (xercesc::DOMElement)
- //
- os << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMElement& e, " <<
- "const " << name << "& i)"
- << "{";
-
- if (c.inherits_p ())
- {
- os << "e << static_cast< const ";
- inherits (c, inherits_);
- os << "& > (i);"
- << endl;
- }
- else
- os << "e << static_cast< const " << any_type << "& > (i);"
- << endl;
-
- // Serialize anyAttribute content first so that is gets
- // overriden by schema-defined attributes.
- //
- if (options.generate_wildcard ())
- {
- AnyAttribute any_attribute (*this, name);
- Traversal::Names names (any_attribute);
-
- Complex::names (c, names);
- }
-
- {
- bool o (ordered_p (c));
- size_t start, count;
-
- if (o)
- {
- start = ctx.get<size_t> ("ordered-start");
- count = ctx.get<size_t> ("ordered-count");
-
- if (start != count)
- {
- String const& ci (ctx.get<String> ("order-const-iterator"));
- String const& an (ctx.get<String> ("order-aname"));
-
- // If we have mixed content and a base, then we have to
- // skip the text content until we serialize one of "our"
- // elements.
- //
- if (mixed_p (c) && start != 1)
- os << "bool text (false);"
- << endl;
-
- os << "for (" << name << "::" << ci << endl
- << "b (i." << an << " ().begin ()), n (i." << an <<
- " ().end ());" << endl
- << "b != n; ++b)"
- << "{"
- << "switch (b->id)"
- << "{";
- }
- }
-
- Traversal::Names names;
- Any any (*this, name);
- Element element (*this, name);
-
- names >> element;
-
- if (options.generate_wildcard ())
- names >> any;
-
- Complex::names (c, names);
-
- if (o)
- {
- if (start != count)
- {
- if (mixed_p (c))
- {
- //@@ propagate mixed-ordered-id to derived
-
- os << "// text_content" << endl
- << "//" << endl
- << "case " << name << "::" <<
- ctx.get<String> ("mixed-ordered-id-name") << ":"
- << "{";
-
- // See the comment above.
- //
- if (start != 1)
- os << "if (text)" << endl;
-
- os << "e.appendChild (" << endl
- << "e.getOwnerDocument ()->createTextNode (" << endl
- << "::xsd::cxx::xml::string (" << endl
- << "i." << ctx.get<String> ("mixed-aname") <<
- " ()[b->index].c_str ()).c_str ()));";
-
- // os << "e << i." << ctx.get<String> ("mixed-aname") <<
- // " ()[b->index];";
-
- os << "continue;"
- << "}";
- }
-
- // Ignore content before our id range and stop serializing
- // if we see anything past. This handles inheritance.
- //
- os << "default:"
- << "{";
-
- if (start != 1)
- os << "if (b->id < " << start << "UL)" << endl
- << "continue;";
-
- os << "break;" // Stop (see break below).
- << "}";
-
- os << "}" // switch
- << "break;" // Unknown element past our elements.
- << "}"; // for
- }
- }
- }
-
- {
- Attribute attribute (*this, name);
- Traversal::Names names (attribute);
- Complex::names (c, names);
- }
-
- os << "}";
-
- bool simple (true);
- {
- IsSimpleType t (simple);
- t.dispatch (c);
- }
-
- if (simple)
- {
- bool hb (c.inherits_p ());
-
- // operator<< (xercesc::DOMAttr)
- //
- os << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMAttr&" <<
- (hb ? " a" : "") << ", " <<
- "const " << name << "&" << (hb ? " i" : "") << ")"
- << "{";
-
- if (hb)
- {
- os << "a << static_cast< const ";
-
- inherits (c, inherits_);
-
- os << "& > (i);";
- }
-
- os << "}";
-
-
- // operator<< (list_stream)
- //
- os << "void" << endl
- << "operator<< (" << list_stream_type << "&" <<
- (hb ? " l" : "") << "," << endl
- << "const " << name << "&" << (hb ? " i" : "") << ")"
- << "{";
-
- if (hb)
- {
- os << "l << static_cast< const ";
-
- inherits (c, inherits_);
-
- os << "& > (i);";
- }
-
- os << "}";
- }
-
- // Register with type factory map. If this type is anonymous
- // but substitutes, then it will be registered as part of the
- // substitution registration.
- //
- if (polymorphic && polymorphic_p (c) && !anonymous_p (c))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (c));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::type_serializer_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_type_serializer_init (" << endl
- << strlit (c.name ()) << "," << endl
- << strlit (xml_ns_name (c)) << ");"
- << endl
- << endl;
- }
- }
-
- private:
- Traversal::Inherits inherits_;
- BaseTypeName base_;
- };
-
-
- // Generate substitution group map entry.
- //
- struct GlobalElement: Traversal::Element,
- GlobalElementBase,
- Context
- {
- GlobalElement (Context& c)
- : GlobalElementBase (c), Context (c), type_name_ (c)
- {
- belongs_ >> type_name_;
- }
-
- virtual void
- traverse (Type& e)
- {
- if (polymorphic && e.substitutes_p ())
- {
- Type& r (e.substitutes ().root ());
-
- String const& name (ename (e));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::element_serializer_initializer< " <<
- poly_plate << ", " << char_type << ", ";
-
- belongs (e, belongs_);
-
- os << " >" << endl
- << "_xsd_" << name << "_element_serializer_init (" << endl
- << strlit (r.name ()) << "," << endl
- << strlit (r.namespace_ ().name ()) << "," << endl
- << strlit (e.name ()) << "," << endl
- << strlit (e.namespace_ ().name ()) << ");"
- << endl
- << endl;
- }
- }
-
- private:
- Traversal::Belongs belongs_;
- MemberTypeName type_name_;
-
- };
-
- struct ElementType: Traversal::Element,
- GlobalElementBase,
- Context
- {
- ElementType (Context& c)
- : GlobalElementBase (c),
- Context (c),
- element_map_ (c.options.generate_element_map ())
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (doc_root_p (e))
- {
- String const& name (ename (e));
-
- // operator<< (xercesc::DOMElement)
- //
- os << "void" << endl
- << "operator<< (" << xerces_ns << "::DOMElement& e, " <<
- "const " << name << "& i)"
- << "{"
- << "e << i." << eaname (e) << " ();"
- << "}";
-
- // Element map registration.
- //
- if (element_map_)
- {
- SemanticGraph::Context& ec (e.context ());
- String const& aname (ec.get<String> ("element-name"));
- String const& ans (ec.get<String> ("element-ns"));
-
- os << "static " << endl
- << "const ::xsd::cxx::tree::serializer_init< " <<
- name << ", " << char_type << ", " << any_type << " >" << endl
- << "_xsd_" << name << "_serializer_init (" <<
- name << "::" << aname << " (), " <<
- name << "::" << ans << " ());"
- << endl;
- }
- }
- }
-
- private:
- bool element_map_;
- };
-
- struct ElementFunction: Traversal::Element,
- GlobalElementBase,
- Context
- {
- ElementFunction (Context& c)
- : GlobalElementBase (c), Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (!doc_root_p (e))
- return;
-
- String const& name (eserializer (e));
- String ns (e.namespace_ ().name ());
- String const& error_handler (error_handler_type);
- String const& namespace_infomap (namespace_infomap_type);
-
- SemanticGraph::Type& type (e.type ());
-
- // Note that I am using fq-name in function calls because g++ gets
- // confused if the name is 'type'. (see tests/schema/anonymous)
- //
-
- // Check if we need to handle xsi:type and substitution groups.
- // If this element's type is anonymous then we don't need to do
- // anything.
- //
- bool poly (polymorphic &&
- polymorphic_p (type) &&
- !anonymous_p (type));
-
- // To std::ostream.
- //
- os << "void" << endl
- << name << " (::std::ostream& o," << endl
- << "const " << type_name (e) << "& s," << endl
- << "const " << namespace_infomap << "& m," << endl
- << "const " << string_type << "& e," << endl
- << flags_type << " f)"
- << "{"
- << "::xsd::cxx::xml::auto_initializer i (" << endl
- << "(f & " << flags_type << "::dont_initialize) == 0);"
- << endl
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << fq_name (e, "serializer") << " (s, m, f));"
- << endl
- << "::xsd::cxx::tree::error_handler< " << char_type << " > h;"
- << endl
- << "::xsd::cxx::xml::dom::ostream_format_target t (o);"
- << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
- << "{"
- << "h.throw_if_failed< ::xsd::cxx::tree::serialization< " <<
- char_type << " > > ();"
- << "}"
- << "}";
-
- os << "void" << endl
- << name << " (::std::ostream& o," << endl
- << "const " << type_name (e) << "& s," << endl
- << error_handler << "& h," << endl
- << "const " << namespace_infomap << "& m," << endl
- << "const " << string_type << "& e," << endl
- << flags_type << " f)"
- << "{"
- << "::xsd::cxx::xml::auto_initializer i (" << endl
- << "(f & " << flags_type << "::dont_initialize) == 0);"
- << endl
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << fq_name (e, "serializer") << " (s, m, f));"
- << "::xsd::cxx::xml::dom::ostream_format_target t (o);"
- << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
- << "{"
- << "throw ::xsd::cxx::tree::serialization< " <<
- char_type << " > ();"
- << "}"
- << "}";
-
- os << "void" << endl
- << name << " (::std::ostream& o," << endl
- << "const " << type_name (e) << "& s," << endl
- << xerces_ns << "::DOMErrorHandler& h," << endl
- << "const " << namespace_infomap << "& m," << endl
- << "const " << string_type << "& e," << endl
- << flags_type << " f)"
- << "{"
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << fq_name (e, "serializer") << " (s, m, f));"
- << "::xsd::cxx::xml::dom::ostream_format_target t (o);"
- << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
- << "{"
- << "throw ::xsd::cxx::tree::serialization< " <<
- char_type << " > ();"
- << "}"
- << "}";
-
- // To XMLFormatTarget.
- //
- os << "void" << endl
- << name << " (" << xerces_ns << "::XMLFormatTarget& t," << endl
- << "const " << type_name (e) << "& s," << endl
- << "const " << namespace_infomap << "& m," << endl
- << "const " << string_type << "& e," << endl
- << flags_type << " f)"
- << "{"
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << fq_name (e, "serializer") << " (s, m, f));"
- << endl
- << "::xsd::cxx::tree::error_handler< " << char_type << " > h;"
- << endl
- << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
- << "{"
- << "h.throw_if_failed< ::xsd::cxx::tree::serialization< " <<
- char_type << " > > ();"
- << "}"
- << "}";
-
- os << "void" << endl
- << name << " (" << xerces_ns << "::XMLFormatTarget& t," << endl
- << "const " << type_name (e) << "& s," << endl
- << error_handler << "& h," << endl
- << "const " << namespace_infomap << "& m," << endl
- << "const " << string_type << "& e," << endl
- << flags_type << " f)"
- << "{"
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << fq_name (e, "serializer") << " (s, m, f));"
- << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
- << "{"
- << "throw ::xsd::cxx::tree::serialization< " <<
- char_type << " > ();"
- << "}"
- << "}";
-
- os << "void" << endl
- << name << " (" << xerces_ns << "::XMLFormatTarget& t," << endl
- << "const " << type_name (e) << "& s," << endl
- << xerces_ns << "::DOMErrorHandler& h," << endl
- << "const " << namespace_infomap << "& m," << endl
- << "const " << string_type << "& e," << endl
- << flags_type << " f)"
- << "{"
- << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << fq_name (e, "serializer") << " (s, m, f));"
- << "if (!::xsd::cxx::xml::dom::serialize (t, *d, e, h, f))"
- << "{"
- << "throw ::xsd::cxx::tree::serialization< " <<
- char_type << " > ();"
- << "}"
- << "}";
-
- // To an existing DOM instance.
- //
- os << "void" << endl
- << name << " (" << xerces_ns << "::DOMDocument& d," << endl
- << "const " << type_name (e) << "& s," << endl
- << flags_type << ")"
- << "{"
- << xerces_ns << "::DOMElement& e (*d.getDocumentElement ());"
- << "const " << qname_type << " n (" << endl
- << "::xsd::cxx::xml::dom::name< " << char_type << " > (e));"
- << endl;
-
- if (poly)
- {
- os << "if (typeid (" << type_name (e) << ") == typeid (s))"
- << "{";
- }
-
- os << "if (n.name () == " << strlit (e.name ()) << " &&" << endl
- << "n.namespace_ () == " << strlit (ns) << ")"
- << "{";
-
- switch (schema_type (type))
- {
- case st_other:
- {
- os << "e << s;";
- break;
- }
- case st_double:
- {
- os << "e << " << as_double_type << "(s);";
- break;
- }
- case st_decimal:
- {
- os << "e << " << as_decimal_type << "(s);";
- break;
- }
- }
-
- os << "}"
- << "else"
- << "{"
- << "throw ::xsd::cxx::tree::unexpected_element < " <<
- char_type << " > (" << endl
- << "n.name ()," << endl
- << "n.namespace_ ()," << endl
- << strlit (e.name ()) << "," << endl
- << strlit (ns) << ");"
- << "}";
-
- if (poly)
- {
- os << "}"
- << "else"
- << "{"
- << "::xsd::cxx::tree::type_serializer_map_instance< " <<
- poly_plate << ", " << char_type << " > ().serialize (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (e.namespace_().name ()) << "," << endl
- << "e, n, s);"
- << "}";
- }
-
- os << "}";
-
-
- // To a new DOM instance.
- //
- os << dom_auto_ptr << "< " << xerces_ns << "::DOMDocument >" << endl
- << name << " (const " << type_name (e) << "& s," << endl
- << "const " << namespace_infomap << "& m," << endl
- << flags_type << " f)"
- << "{";
-
- if (poly)
- {
- os << dom_auto_ptr << "< " << xerces_ns << "::DOMDocument > d;"
- << endl
- << "if (typeid (" << type_name (e) << ") == typeid (s))"
- << "{"
- << "d = ::xsd::cxx::xml::dom::serialize< " <<
- char_type << " > (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (ns) << "," << endl
- << "m, f);"
- << "}"
- << "else"
- << "{"
- << "d = ::xsd::cxx::tree::type_serializer_map_instance< " <<
- poly_plate << ", " << char_type << " > ().serialize (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (e.namespace_().name ()) << "," << endl
- << "m, s, f);"
- << "}";
- }
- else
- {
- os << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > d (" << endl
- << "::xsd::cxx::xml::dom::serialize< " <<
- char_type << " > (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (ns) << "," << endl
- << "m, f));"
- << endl;
- }
-
- os << fq_name (e, "serializer") << " (*d, s, f);"
- << "return d;"
- << "}";
-
- }
-
- private:
- String
- type_name (Type& e)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (e.type ());
-
- return o.str ();
- }
- };
- }
-
- void
- generate_serialization_source (Context& ctx, size_t first, size_t last)
- {
- bool elemen_type (ctx.options.generate_element_type ());
-
- if (!elemen_type)
- ctx.os << "#include <ostream>" << endl
- << "#include <xsd/cxx/tree/error-handler.hxx>" << endl;
-
- ctx.os << "#include <xsd/cxx/xml/dom/serialization-source.hxx>" << endl
- << endl;
-
- if (ctx.polymorphic)
- {
- ctx.os << "#include <xsd/cxx/tree/type-serializer-map.hxx>" << endl
- << endl;
-
- bool import_maps (ctx.options.import_maps ());
- bool export_maps (ctx.options.export_maps ());
-
- if (import_maps || export_maps)
- {
- ctx.os << "#ifndef XSD_NO_EXPORT" << endl
- << endl
- << "namespace xsd"
- << "{"
- << "namespace cxx"
- << "{"
- << "namespace tree"
- << "{"
- << "#ifdef _MSC_VER" << endl;
-
- if (export_maps)
- ctx.os << "template struct __declspec (dllexport) " <<
- "type_serializer_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- if (import_maps)
- ctx.os << "template struct __declspec (dllimport) " <<
- "type_serializer_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl
- << "template struct __attribute__ ((visibility(\"default\"))) " <<
- "type_serializer_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- ctx.os << "#elif defined(XSD_MAP_VISIBILITY)" << endl
- << "template struct XSD_MAP_VISIBILITY " <<
- "type_serializer_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- ctx.os << "#endif" << endl
- << "}" // tree
- << "}" // cxx
- << "}" // xsd
- << "#endif // XSD_NO_EXPORT" << endl
- << endl;
- }
-
- ctx.os << "namespace _xsd"
- << "{"
- << "static" << endl
- << "const ::xsd::cxx::tree::type_serializer_plate< " <<
- ctx.poly_plate << ", " << ctx.char_type << " >" << endl
- << "type_serializer_plate_init;"
- << "}";
- }
-
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names names_ns, names;
-
- Namespace ns (ctx, first, last);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
- GlobalElement element (ctx);
- ElementType element_type (ctx);
- ElementFunction element_function (ctx);
-
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
- names >> element;
-
- if (elemen_type)
- names >> element_type;
- else
- names >> element_function;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/serialization-source.hxx b/xsd/xsd/cxx/tree/serialization-source.hxx
deleted file mode 100644
index 1a74126..0000000
--- a/xsd/xsd/cxx/tree/serialization-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/serialization-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_SERIALIZATION_SOURCE_HXX
-#define CXX_TREE_SERIALIZATION_SOURCE_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_serialization_source (Context&, size_t first, size_t last);
- }
-}
-
-#endif // CXX_TREE_SERIALIZATION_SOURCE_HXX
diff --git a/xsd/xsd/cxx/tree/stream-extraction-source.cxx b/xsd/xsd/cxx/tree/stream-extraction-source.cxx
deleted file mode 100644
index ceb56c1..0000000
--- a/xsd/xsd/cxx/tree/stream-extraction-source.cxx
+++ /dev/null
@@ -1,808 +0,0 @@
-// file : xsd/cxx/tree/stream-extraction-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/stream-extraction-source.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String name (ename (l));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (l, name) && !name)
- return;
-
- SemanticGraph::Type& item_type (l.argumented ().type ());
- String base (L"::xsd::cxx::tree::list< " +
- item_type_name (item_type) + L", " + char_type);
-
- if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
- base += L", ::xsd::cxx::tree::schema_type::double_";
- else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
- base += L", ::xsd::cxx::tree::schema_type::decimal";
-
- base += L" >";
-
- size_t n (0);
- NarrowStrings const& st (options.generate_extraction ());
- for (NarrowStrings::const_iterator i (st.begin ());
- i != st.end (); ++i)
- {
- os << name << "::" << endl
- << name << " (" << istream_type << "< " <<
- i->c_str () << " >& s," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << any_simple_type << " (s, f, c)," << endl
- << " " << base << " (s, f, this)"
- << "{"
- << "}";
-
- // Register with type map.
- //
- if (polymorphic &&
- polymorphic_p (l) &&
- (!anonymous_p (l) || anonymous_substitutes_p (l)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (l));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::stream_extraction_initializer< " <<
- poly_plate << ", " << i->c_str () << ", " << char_type <<
- ", " << name << " >" << endl
- << "_xsd_" << name << "_stream_extraction_init_" <<
- n++ << " (" << endl
- << strlit (l.name ()) << "," << endl
- << strlit (xml_ns_name (l)) << ");"
- << endl;
- }
- }
- }
-
- private:
- String
- item_type_name (SemanticGraph::Type& t)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (t);
-
- return o.str ();
- }
- };
-
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String name (ename (u));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (u, name) && !name)
- return;
-
- String const& base (xs_string_type);
-
- size_t n (0);
- NarrowStrings const& st (options.generate_extraction ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- os << name << "::" << endl
- << name << " (" << istream_type << "< " <<
- i->c_str () << " >& s," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (s, f, c)"
- << "{"
- << "}";
-
- // Register with type map.
- //
- if (polymorphic &&
- polymorphic_p (u) &&
- (!anonymous_p (u) || anonymous_substitutes_p (u)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (u));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::stream_extraction_initializer< " <<
- poly_plate << ", " << i->c_str () << ", " << char_type <<
- ", " << name << " >" << endl
- << "_xsd_" << name << "_stream_extraction_init_" <<
- n++ << " (" << endl
- << strlit (u.name ()) << "," << endl
- << strlit (xml_ns_name (u)) << ");"
- << endl;
- }
- }
- }
- };
-
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c), base_ (c)
- {
- inherits_base_ >> base_;
- }
-
- virtual void
- traverse (Type& e)
- {
- String name (ename (e));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- bool string_based (false);
- {
- IsStringBasedType t (string_based);
- t.dispatch (e);
- }
-
- bool enum_based (false);
- if (string_based)
- {
- SemanticGraph::Enumeration* base_enum (0);
- IsEnumBasedType t (base_enum);
- t.dispatch (e);
-
- enum_based = (base_enum != 0);
- }
-
- String value;
- if (string_based)
- value = evalue (e);
-
- size_t n (0);
- NarrowStrings const& st (options.generate_extraction ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- os << name << "::" << endl
- << name << " (" << istream_type << "< " <<
- i->c_str () << " >& s," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": ";
-
- inherits (e, inherits_base_);
-
- if (string_based && !enum_based)
- {
- // Use copy c-tor to pass the flags and container.
- //
- os << " (" << endl;
- inherits (e, inherits_base_);
- os << " (_xsd_" << name << "_literals_[s.read_uint ()]), f, c)";
- }
- else
- os << " (s, f, c)";
-
- os << "{";
-
- if (string_based)
- os << "_xsd_" << name << "_convert ();";
-
- os << "}";
-
- // Register with type map.
- //
- if (polymorphic &&
- polymorphic_p (e) &&
- (!anonymous_p (e) || anonymous_substitutes_p (e)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (e));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::stream_extraction_initializer< " <<
- poly_plate << ", " << i->c_str () << ", " << char_type <<
- ", " << name << " >" << endl
- << "_xsd_" << name << "_stream_extraction_init_" <<
- n++ << " (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (xml_ns_name (e)) << ");"
- << endl;
- }
- }
- }
-
- private:
- Traversal::Inherits inherits_base_;
- BaseTypeName base_;
- };
-
- struct CtorMember: Traversal::Member, Context
- {
- CtorMember (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Member& m)
- {
- if (skip (m))
- return;
-
- os << "," << endl
- << " " << emember (m) << " (this)";
- }
- };
-
- struct CtorAny: Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- CtorAny (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& member (emember (a));
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- os << "," << endl
- << " " << member << " (this->" << dom_doc << " ())";
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& member (emember (a));
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- os << "," << endl
- << " " << member << " (this->" << dom_doc << " ())";
- }
- };
-
- struct Element: Traversal::Element, Context
- {
- Element (Context& c, String const& stream_)
- : Context (c), stream (stream_)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (skip (e))
- return;
-
- String const& member (emember (e));
-
- SemanticGraph::Type& t (e.type ());
- String type (etype (e));
- String tr (etraits (e)); // traits type name
-
- bool fund (false);
- {
- IsFundamentalType traverser (fund);
- traverser.dispatch (t);
- }
-
- // Figure out if we need to generate polymorphic code. If this
- // elemen's type is anonymous then we don't need to do anything.
- // Note that if the type is anonymous then it can't be derived
- // from which makes it impossible to substitute or dynamically-
- // type with xsi:type.
- //
- bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
-
- char const* r (
- (poly || !fund) && std >= cxx_version::cxx11
- ? "::std::move (r)"
- : "r");
-
- if (max (e) != 1)
- {
- // sequence
- //
- String container (econtainer (e));
-
- os << "{"
- << "::std::size_t n;"
- << "::xsd::cxx::tree::istream_common::as_size< " <<
- "::std::size_t > as (n);"
- << "s >> as;"
- << "if (n > 0)"
- << "{"
- << container << "& c (this->" << member << ");"
- << "c.reserve (n);"
- << "while (n--)"
- << "{";
-
- if (poly)
- {
- os << "bool d;"
- << auto_ptr << "< " << type << " > r;"
- << "s >> d;"
- << endl
- << "if (!d)" << endl
- << "r.reset (new " << type << " (s, f, this));"
- << "else"
- << "{"
- << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
- << "::xsd::cxx::tree::stream_extraction_map_instance< " <<
- poly_plate << ", " << stream << ", " << char_type <<
- " > ().extract (" << endl
- << "s, f, this));"
- << "r.reset (dynamic_cast< " << type << "* > (tmp.get ()));"
- << "if (r.get ())" << endl
- << "tmp.release ();"
- << "else" << endl
- << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
- " > ();"
- << "}";
- }
- else if (fund)
- {
- os << type << " r;"
- << "s >> r;";
- }
- else
- {
- os << auto_ptr << "< " << type << " > r (" << endl
- << tr << "::create (s, f, this));";
- }
-
- os << "c.push_back (" << r << ");"
- << "}" // while
- << "}" // if
- << "}";
- }
- else if (min (e) == 0)
- {
- // optional
- //
- os << "{"
- << "bool p;"
- << "s >> p;"
- << "if (p)"
- << "{";
-
- if (poly)
- {
- os << "bool d;"
- << auto_ptr << "< " << type << " > r;"
- << "s >> d;"
- << endl
- << "if (!d)" << endl
- << "r.reset (new " << type << " (s, f, this));"
- << "else"
- << "{"
- << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
- << "::xsd::cxx::tree::stream_extraction_map_instance< " <<
- poly_plate << ", " << stream << ", " << char_type <<
- " > ().extract (" << endl
- << "s, f, this));"
- << "r.reset (dynamic_cast< " << type << "* > (tmp.get ()));"
- << "if (r.get ())" << endl
- << "tmp.release ();"
- << "else" << endl
- << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
- " > ();"
- << "}";
- }
- else if (fund)
- {
- os << type << " r;"
- << "s >> r;";
- }
- else
- {
- os << auto_ptr << "< " << type << " > r (" << endl
- << tr << "::create (s, f, this));";
- }
-
- os << "this->" << member << ".set (" << r << ");"
- << "}" // if (p)
- << "}";
- }
- else
- {
- // one
- //
- os << "{";
-
- if (poly)
- {
- os << "bool d;"
- << auto_ptr << "< " << type << " > r;"
- << "s >> d;"
- << endl
- << "if (!d)" << endl
- << "r.reset (new " << type << " (s, f, this));"
- << "else"
- << "{"
- << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
- << "::xsd::cxx::tree::stream_extraction_map_instance< " <<
- poly_plate << ", " << stream << ", " << char_type <<
- " > ().extract (" << endl
- << "s, f, this));"
- << "r.reset (dynamic_cast< " << type << "* > (tmp.get ()));"
- << "if (r.get ())" << endl
- << "tmp.release ();"
- << "else" << endl
- << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
- " > ();"
- << "}";
- }
- else if (fund)
- {
- os << type << " r;"
- << "s >> r;";
- }
- else
- {
- os << auto_ptr << "< " << type << " > r (" << endl
- << tr << "::create (s, f, this));";
- }
-
- os << "this->" << member << ".set (" << r << ");"
- << "}";
- }
- }
-
- private:
- String stream;
- };
-
- struct Attribute: Traversal::Attribute, Context
- {
- Attribute (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& member (emember (a));
- String type (etype (a));
- String tr (etraits (a)); // traits type name
-
- bool fund (false);
- {
- IsFundamentalType traverser (fund);
- traverser.dispatch (a.type ());
- }
-
- if (a.optional_p () && !a.default_p ())
- {
- os << "{"
- << "bool p;"
- << "s >> p;"
- << "if (p)"
- << "{";
-
- if (fund)
- {
- os << type << " r;"
- << "s >> r;"
- << "this->" << member << ".set (r);";
- }
- else
- {
- os << "this->" << member << ".set (" << tr <<
- "::create (s, f, this));";
- }
-
- os << "}" // if (p)
- << "}";
- }
- else
- {
- os << "{";
-
- if (fund)
- {
- os << type << " r;"
- << "s >> r;"
- << "this->" << member << ".set (r);";
- }
- else
- {
- os << "this->" << member << ".set (" << tr <<
- "::create (s, f, this));";
- }
-
- os << "}";
- }
- }
- };
-
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c), base_ (c), ctor_any_ (c), ctor_member_ (c)
- {
- inherits_ >> base_;
- names_ctor_member_ >> ctor_member_;
-
- if (options.generate_wildcard ())
- names_ctor_member_ >> ctor_any_;
- }
-
- virtual void
- traverse (Type& c)
- {
- String name (ename (c));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- bool has_members (has<Traversal::Member> (c));
-
- bool facets (false);
- if (c.inherits_p ())
- {
- // See if we have any facets that we need to handle.
- //
- using SemanticGraph::Restricts;
- using SemanticGraph::Fundamental::Decimal;
-
- if (Restricts* r = dynamic_cast<Restricts*> (&c.inherits ()))
- {
- if (!r->facet_empty () &&
- (r->facet_find ("fractionDigits") != r->facet_end () ||
- r->facet_find ("totalDigits") != r->facet_end ()) &&
- ultimate_base (c).is_a<Decimal> ())
- facets = true;
- }
- }
-
- size_t n (0);
- NarrowStrings const& st (options.generate_extraction ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
-
- os << name << "::" << endl
- << name << " (" << istream_type << "< " <<
- i->c_str () << " >& s," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": ";
-
- if (c.inherits_p ())
- inherits (c, inherits_);
- else
- os << any_type;
-
- os << " (s, f, c)";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- names (c, names_ctor_member_);
-
- os << "{";
-
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);"
- << endl;
-
- if (has_members)
- os << "this->" << unclash (name, "parse") << " (s, f);";
-
- os << "}";
-
- // Parse
- //
- if (has_members)
- {
- os << "void " << name << "::" << endl
- << unclash (name, "parse") << " (" <<
- istream_type << "< " << i->c_str () << " >& s," << endl
- << flags_type << " f)"
- << "{"
- << "XSD_UNUSED (f);"; // Can be unused.
- {
- Element element (*this, *i);
- Attribute attribute (*this);
- Traversal::Names names_;
-
- names_ >> element;
- names_ >> attribute;
-
- names (c, names_);
- }
-
- os << "}";
- }
-
-
- // Register with type map.
- //
- if (polymorphic &&
- polymorphic_p (c) &&
- (!anonymous_p (c) || anonymous_substitutes_p (c)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (c));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::stream_extraction_initializer< " <<
- poly_plate << ", " << i->c_str () << ", " << char_type <<
- ", " << name << " >" << endl
- << "_xsd_" << name << "_stream_extraction_init_" <<
- n++ << " (" << endl
- << strlit (c.name ()) << "," << endl
- << strlit (xml_ns_name (c)) << ");"
- << endl;
- }
- }
- }
-
- private:
- Traversal::Inherits inherits_;
- BaseTypeName base_;
-
- CtorAny ctor_any_;
- CtorMember ctor_member_;
-
- Traversal::Names names_ctor_member_;
- };
- }
-
- void
- generate_stream_extraction_source (Context& ctx)
- {
- if (ctx.polymorphic)
- {
- NarrowStrings const& st (ctx.options.generate_extraction ());
-
- ctx.os << "#include <xsd/cxx/tree/stream-extraction-map.hxx>" << endl
- << endl;
-
- bool import_maps (ctx.options.import_maps ());
- bool export_maps (ctx.options.export_maps ());
-
- if (import_maps || export_maps)
- {
- ctx.os << "#ifndef XSD_NO_EXPORT" << endl
- << endl
- << "namespace xsd"
- << "{"
- << "namespace cxx"
- << "{"
- << "namespace tree"
- << "{";
-
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream (*i);
-
- ctx.os << "#ifdef _MSC_VER" << endl;
-
- if (export_maps)
- ctx.os << "template struct __declspec (dllexport) " <<
- "stream_extraction_plate< " << ctx.poly_plate << ", " <<
- stream << ", " << ctx.char_type << " >;";
-
- if (import_maps)
- ctx.os << "template struct __declspec (dllimport) " <<
- "stream_extraction_plate< " << ctx.poly_plate << ", " <<
- stream << ", " << ctx.char_type << " >;";
-
- ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl
- << "template struct __attribute__ ((visibility(\"default\"))) " <<
- "stream_extraction_plate< " << ctx.poly_plate << ", " <<
- stream << ", " << ctx.char_type << " >;"
- << "#elif defined(XSD_MAP_VISIBILITY)" << endl
- << "template struct XSD_MAP_VISIBILITY " <<
- "stream_extraction_plate< " << ctx.poly_plate << ", " <<
- stream << ", " << ctx.char_type << " >;"
- << "#endif" << endl;
- }
-
- ctx.os << "}" // tree
- << "}" // cxx
- << "}" // xsd
- << "#endif // XSD_NO_EXPORT" << endl
- << endl;
-
- }
-
- ctx.os << "namespace _xsd"
- << "{";
-
- size_t n (0);
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream (*i);
-
- ctx.os << "static" << endl
- << "const ::xsd::cxx::tree::stream_extraction_plate< " <<
- ctx.poly_plate << ", " << stream << ", " << ctx.char_type <<
- " >" << endl
- << "stream_extraction_plate_init_" << n++ << ";";
- }
-
- ctx.os << "}";
- }
-
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names names_ns, names;
-
- Namespace ns (ctx);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/stream-extraction-source.hxx b/xsd/xsd/cxx/tree/stream-extraction-source.hxx
deleted file mode 100644
index 9104281..0000000
--- a/xsd/xsd/cxx/tree/stream-extraction-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/stream-extraction-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_EXTRACTION_SOURCE_HXX
-#define CXX_TREE_EXTRACTION_SOURCE_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_stream_extraction_source (Context&);
- }
-}
-
-#endif // CXX_TREE_EXTRACTION_SOURCE_HXX
diff --git a/xsd/xsd/cxx/tree/stream-header.cxx b/xsd/xsd/cxx/tree/stream-header.cxx
deleted file mode 100644
index 9ba9b3b..0000000
--- a/xsd/xsd/cxx/tree/stream-header.cxx
+++ /dev/null
@@ -1,182 +0,0 @@
-// file : xsd/cxx/tree/stream-header.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/stream-header.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String name (ename (l));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (l, name) && !name)
- return;
-
- os << inst_exp
- << std_ostream_type << "&" << endl
- << "operator<< (" << std_ostream_type << "&, const " <<
- name << "&);"
- << endl;
- }
- };
-
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String name (ename (u));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (u, name) && !name)
- return;
-
- os << inst_exp
- << std_ostream_type << "&" << endl
- << "operator<< (" << std_ostream_type << "&, const " <<
- name << "&);"
- << endl;
- }
- };
-
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- String name (ename (e));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- bool string_based (false);
- {
- IsStringBasedType t (string_based);
- t.dispatch (e);
- }
-
- bool enum_based (false);
- if (string_based)
- {
- SemanticGraph::Enumeration* be (0);
- IsEnumBasedType t (be);
- t.dispatch (e);
-
- enum_based = (be != 0);
- }
-
- // If we are based on an enum then the value type is just an
- // alias and we don't need to generate this operator again.
- //
- if (string_based && !enum_based)
- {
- os << inst_exp
- << std_ostream_type << "&" << endl
- << "operator<< (" << std_ostream_type << "&, " <<
- name << "::" << evalue (e) << ");"
- << endl;
- }
-
- os << inst_exp
- << std_ostream_type << "&" << endl
- << "operator<< (" << std_ostream_type << "&, const " <<
- name << "&);"
- << endl;
- }
- };
-
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- String name (ename (c));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- os << inst_exp
- << std_ostream_type << "&" << endl
- << "operator<< (" << std_ostream_type << "&, const " <<
- name << "&);"
- << endl;
- }
- };
- }
-
- void
- generate_stream_header (Context& ctx)
- {
- String c (ctx.char_type);
-
- ctx.os << "#include <iosfwd>" << endl
- << endl;
-
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names names_ns, names;
-
- Namespace ns (ctx);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/stream-header.hxx b/xsd/xsd/cxx/tree/stream-header.hxx
deleted file mode 100644
index 36eea87..0000000
--- a/xsd/xsd/cxx/tree/stream-header.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/stream-header.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_STREAM_HEADER_HXX
-#define CXX_TREE_STREAM_HEADER_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_stream_header (Context&);
- }
-}
-
-#endif // CXX_TREE_STREAM_HEADER_HXX
diff --git a/xsd/xsd/cxx/tree/stream-insertion-header.cxx b/xsd/xsd/cxx/tree/stream-insertion-header.cxx
deleted file mode 100644
index e9ee438..0000000
--- a/xsd/xsd/cxx/tree/stream-insertion-header.cxx
+++ /dev/null
@@ -1,179 +0,0 @@
-// file : xsd/cxx/tree/stream-insertion-header.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/stream-insertion-header.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String name (ename (l));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (l, name) && !name)
- return;
-
- NarrowStrings const& st (options.generate_insertion ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream_type (ostream_type + L"< " + String (*i) + L" >");
-
- os << inst_exp
- << stream_type << "&" << endl
- << "operator<< (" << stream_type << "&," << endl
- << "const " << name << "&);"
- << endl;
- }
- }
- };
-
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String name (ename (u));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (u, name) && !name)
- return;
-
- NarrowStrings const& st (options.generate_insertion ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream_type (ostream_type + L"< " + String (*i) + L" >");
-
- os << inst_exp
- << stream_type << "&" << endl
- << "operator<< (" << stream_type << "&," << endl
- << "const " << name << "&);"
- << endl;
- }
- }
- };
-
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- String name (ename (e));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- NarrowStrings const& st (options.generate_insertion ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream_type (ostream_type + L"< " + String (*i) + L" >");
-
- os << inst_exp
- << stream_type << "&" << endl
- << "operator<< (" << stream_type << "&," << endl
- << "const " << name << "&);"
- << endl;
- }
- }
- };
-
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- String name (ename (c));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- NarrowStrings const& st (options.generate_insertion ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream_type (ostream_type + L"< " + String (*i) + L" >");
-
- os << inst_exp
- << stream_type << "&" << endl
- << "operator<< (" << stream_type << "&," << endl
- << "const " << name << "&);"
- << endl;
- }
- }
- };
- }
-
- void
- generate_stream_insertion_header (Context& ctx)
- {
- String c (ctx.char_type);
-
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names names_ns, names;
-
- Namespace ns (ctx);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/stream-insertion-header.hxx b/xsd/xsd/cxx/tree/stream-insertion-header.hxx
deleted file mode 100644
index 31b6328..0000000
--- a/xsd/xsd/cxx/tree/stream-insertion-header.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/stream-insertion-header.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_STREAM_INSERTION_HEADER_HXX
-#define CXX_TREE_STREAM_INSERTION_HEADER_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_stream_insertion_header (Context&);
- }
-}
-
-#endif // CXX_TREE_STREAM_INSERTION_HEADER_HXX
diff --git a/xsd/xsd/cxx/tree/stream-insertion-source.cxx b/xsd/xsd/cxx/tree/stream-insertion-source.cxx
deleted file mode 100644
index 2c82cfd..0000000
--- a/xsd/xsd/cxx/tree/stream-insertion-source.cxx
+++ /dev/null
@@ -1,577 +0,0 @@
-// file : xsd/cxx/tree/stream-insertion-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/stream-insertion-source.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String name (ename (l));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (l, name) && !name)
- return;
-
- SemanticGraph::Type& item_type (l.argumented ().type ());
- String base (L"::xsd::cxx::tree::list< " +
- item_type_name (item_type) + L", " + char_type);
-
- if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
- base += L", ::xsd::cxx::tree::schema_type::double_";
- else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
- base += L", ::xsd::cxx::tree::schema_type::decimal";
-
- base += L" >";
-
- size_t n (0);
- NarrowStrings const& st (options.generate_insertion ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream_type ("::xsd::cxx::tree::ostream< " + *i + " >");
-
- os << stream_type << "&" << endl
- << "operator<< (" << stream_type << "& s," << endl
- << "const " << name << "& x)"
- << "{"
- << "return s << static_cast< const " << base << "& > (x);"
- << "}";
-
- // Register with type map.
- //
- if (polymorphic &&
- polymorphic_p (l) &&
- (!anonymous_p (l) || anonymous_substitutes_p (l)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (l));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::stream_insertion_initializer< " <<
- poly_plate << ", " << i->c_str () << ", " << char_type <<
- ", " << name << " >" << endl
- << "_xsd_" << name << "_stream_insertion_init_" <<
- n++ << " (" << endl
- << strlit (l.name ()) << "," << endl
- << strlit (xml_ns_name (l)) << ");"
- << endl;
- }
- }
- }
-
- private:
- String
- item_type_name (SemanticGraph::Type& t)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (t);
-
- return o.str ();
- }
- };
-
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String name (ename (u));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (u, name) && !name)
- return;
-
- String const& base (xs_string_type);
-
- size_t n (0);
- NarrowStrings const& st (options.generate_insertion ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream_type ("::xsd::cxx::tree::ostream< " + *i + " >");
-
- os << stream_type << "&" << endl
- << "operator<< (" << stream_type << "& s," << endl
- << "const " << name << "& x)"
- << "{"
- << "return s << static_cast< const " << base << "& > (x);"
- << "}";
-
- // Register with type map.
- //
- if (polymorphic &&
- polymorphic_p (u) &&
- (!anonymous_p (u) || anonymous_substitutes_p (u)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (u));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::stream_insertion_initializer< " <<
- poly_plate << ", " << i->c_str () << ", " << char_type <<
- ", " << name << " >" << endl
- << "_xsd_" << name << "_stream_insertion_init_" <<
- n++ << " (" << endl
- << strlit (u.name ()) << "," << endl
- << strlit (xml_ns_name (u)) << ");"
- << endl;
- }
- }
- }
- };
-
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c), base_ (c)
- {
- inherits_base_ >> base_;
- }
-
- virtual void
- traverse (Type& e)
- {
- String name (ename (e));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- bool string_based (false);
- {
- IsStringBasedType t (string_based);
- t.dispatch (e);
- }
-
- bool enum_based (false);
- if (string_based)
- {
- SemanticGraph::Enumeration* base_enum (0);
- IsEnumBasedType t (base_enum);
- t.dispatch (e);
-
- enum_based = (base_enum != 0);
- }
-
- String value;
- if (string_based)
- value = evalue (e);
-
- size_t n (0);
- NarrowStrings const& st (options.generate_insertion ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream_type ("::xsd::cxx::tree::ostream< " + *i + " >");
-
- os << stream_type << "&" << endl
- << "operator<< (" << stream_type << "& s," << endl
- << "const " << name << "& x)"
- << "{";
-
- if (!string_based || enum_based)
- {
- os << "return s << static_cast< const ";
- inherits (e, inherits_base_);
- os << "& > (x);";
- }
- else
- {
- os << name << "::" << value << " v (x);"
- << "return s << static_cast< unsigned int > (v);";
- }
-
- os << "}";
-
- // Register with type map.
- //
- if (polymorphic &&
- polymorphic_p (e) &&
- (!anonymous_p (e) || anonymous_substitutes_p (e)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (e));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::stream_insertion_initializer< " <<
- poly_plate << ", " << i->c_str () << ", " << char_type <<
- ", " << name << " >" << endl
- << "_xsd_" << name << "_stream_insertion_init_" <<
- n++ << " (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (xml_ns_name (e)) << ");"
- << endl;
- }
- }
- }
-
- private:
- Traversal::Inherits inherits_base_;
- BaseTypeName base_;
- };
-
- struct Element: Traversal::Element, Context
- {
- Element (Context& c, String const& scope_, String const& stream_)
- : Context (c), scope (scope_), stream (stream_)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (skip (e)) return;
-
- String const& aname (eaname (e));
- SemanticGraph::Type& t (e.type ());
- String type (scope + L"::" + etype (e));
-
- // Figure out if we need to generate polymorphic code. If this
- // elemen's type is anonymous then we don't need to do anything.
- // Note that if the type is anonymous then it can't be derived
- // from which makes it impossible to substitute or dynamically-
- // type with xsi:type.
- //
- bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
-
- if (max (e) != 1)
- {
- // sequence
- //
- os << "{"
- << "const " << scope << "::" << econtainer (e) << "& c (" <<
- "x." << aname << " ());"
- << "s << ::xsd::cxx::tree::ostream_common::as_size< " <<
- "::std::size_t > (c.size ());";
-
- os << "for (" << scope << "::" << econst_iterator (e) << endl
- << "i (c.begin ()), e (c.end ());" << endl
- << "i != e; ++i)"
- << "{";
-
- if (poly)
- {
- os << "bool d (typeid (" << type << ") != typeid (*i));"
- << "s << d;"
- << "if (!d)" << endl
- << "s << *i;"
- << "else" << endl
- << "::xsd::cxx::tree::stream_insertion_map_instance< " <<
- poly_plate << ", " << stream << ", " << char_type <<
- " > ().insert (s, *i);";
- }
- else
- os << "s << *i;";
-
- os << "}" // for
- << "}";
- }
- else if (min (e) == 0)
- {
- // optional
- //
- os << "{"
- << "bool p (x." << aname << " ());"
- << "s << p;"
- << "if (p)";
-
- if (poly)
- {
- os << "{"
- << "const " << type << "& i (*x." << aname << " ());"
- << "bool d (typeid (" << type << ") != typeid (i));"
- << "s << d;"
- << "if (!d)" << endl
- << "s << i;"
- << "else" << endl
- << "::xsd::cxx::tree::stream_insertion_map_instance< " <<
- poly_plate << ", " << stream << ", " << char_type <<
- " > ().insert (s, i);"
- << "}";
- }
- else
- os << endl
- << "s << *x." << aname << " ();";
-
- os << "}";
- }
- else
- {
- // one
- //
- if (poly)
- {
- os << "{"
- << "const " << type << "& i (x." << aname << " ());"
- << "bool d (typeid (" << type << ") != typeid (i));"
- << "s << d;"
- << "if (!d)" << endl
- << "s << i;"
- << "else" << endl
- << "::xsd::cxx::tree::stream_insertion_map_instance< " <<
- poly_plate << ", " << stream << ", " << char_type <<
- " > ().insert (s, i);"
- << "}";
- }
- else
- os << "s << x." << aname << " ();";
- }
- }
-
- private:
- String scope;
- String stream;
- };
-
- struct Attribute: Traversal::Attribute, Context
- {
- Attribute (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& aname (eaname (a));
-
- if (a.optional_p () && !a.default_p ())
- {
- os << "{"
- << "bool p (x." << aname << " ());"
- << "s << p;"
- << "if (p)" << endl
- << "s << *x." << aname << " ();"
- << "}";
- }
- else
- {
- os << "s << x." << aname << " ();";
- }
- }
- };
-
-
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c), base_ (c)
- {
- inherits_ >> base_;
- }
-
- virtual void
- traverse (Type& c)
- {
- String name (ename (c));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- bool has_body (has<Traversal::Member> (c) || c.inherits_p ());
-
- size_t n (0);
- NarrowStrings const& st (options.generate_insertion ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream_type ("::xsd::cxx::tree::ostream< " + *i + " >");
-
- os << stream_type << "&" << endl
- << "operator<< (" << stream_type << "& s," << endl
- << "const " << name << "&" << (has_body ? " x" : "") << ")"
- << "{";
-
- if (c.inherits_p ())
- {
- os << "s << static_cast< const ";
-
- inherits (c, inherits_);
-
- os << "& > (x);";
- }
-
- {
- Traversal::Names names_member;
- Element element (*this, name, *i);
- Attribute attribute (*this);
-
- names_member >> element;
- names_member >> attribute;
-
- names (c, names_member);
- }
-
- os << "return s;"
- << "}";
-
-
- // Register with type map.
- //
- if (polymorphic &&
- polymorphic_p (c) &&
- (!anonymous_p (c) || anonymous_substitutes_p (c)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (c));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::stream_insertion_initializer< " <<
- poly_plate << ", " << i->c_str () << ", " << char_type <<
- ", " << name << " >" << endl
- << "_xsd_" << name << "_stream_insertion_init_" <<
- n++ << " (" << endl
- << strlit (c.name ()) << "," << endl
- << strlit (xml_ns_name (c)) << ");"
- << endl;
- }
- }
- }
-
- private:
- Traversal::Inherits inherits_;
- BaseTypeName base_;
- };
- }
-
- void
- generate_stream_insertion_source (Context& ctx)
- {
- if (ctx.polymorphic)
- {
- NarrowStrings const& st (ctx.options.generate_insertion ());
-
- ctx.os << "#include <xsd/cxx/tree/stream-insertion-map.hxx>" << endl
- << endl;
-
- bool import_maps (ctx.options.import_maps ());
- bool export_maps (ctx.options.export_maps ());
-
- if (import_maps || export_maps)
- {
- ctx.os << "#ifndef XSD_NO_EXPORT" << endl
- << endl
- << "namespace xsd"
- << "{"
- << "namespace cxx"
- << "{"
- << "namespace tree"
- << "{";
-
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream (*i);
-
- ctx.os << "#ifdef _MSC_VER" << endl;
-
- if (export_maps)
- ctx.os << "template struct __declspec (dllexport) " <<
- "stream_insertion_plate< " << ctx.poly_plate << ", " <<
- stream << ", " << ctx.char_type << " >;";
-
- if (import_maps)
- ctx.os << "template struct __declspec (dllimport) " <<
- "stream_insertion_plate< " << ctx.poly_plate << ", " <<
- stream << ", " << ctx.char_type << " >;";
-
- ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl
- << "template struct __attribute__ ((visibility(\"default\"))) " <<
- "stream_insertion_plate< " << ctx.poly_plate << ", " <<
- stream << ", " << ctx.char_type << " >;"
- << "#elif defined(XSD_MAP_VISIBILITY)" << endl
- << "template struct XSD_MAP_VISIBILITY " <<
- "stream_insertion_plate< " << ctx.poly_plate << ", " <<
- stream << ", " << ctx.char_type << " >;"
- << "#endif" << endl;
- }
-
- ctx.os << "}" // tree
- << "}" // cxx
- << "}" // xsd
- << "#endif // XSD_NO_EXPORT" << endl
- << endl;
- }
-
- ctx.os << "namespace _xsd"
- << "{";
-
- size_t n (0);
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- String stream (*i);
-
- ctx.os << "static" << endl
- << "const ::xsd::cxx::tree::stream_insertion_plate< " <<
- ctx.poly_plate << ", " << stream << ", " << ctx.char_type <<
- " >" << endl
- << "stream_insertion_plate_init_" << n++ << ";";
- }
-
- ctx.os << "}";
- }
-
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names names_ns, names;
-
- Namespace ns (ctx);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/stream-insertion-source.hxx b/xsd/xsd/cxx/tree/stream-insertion-source.hxx
deleted file mode 100644
index d2d5534..0000000
--- a/xsd/xsd/cxx/tree/stream-insertion-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/stream-insertion-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_INSERTION_SOURCE_HXX
-#define CXX_TREE_INSERTION_SOURCE_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_stream_insertion_source (Context&);
- }
-}
-
-#endif // CXX_TREE_INSERTION_SOURCE_HXX
diff --git a/xsd/xsd/cxx/tree/stream-source.cxx b/xsd/xsd/cxx/tree/stream-source.cxx
deleted file mode 100644
index 935ad40..0000000
--- a/xsd/xsd/cxx/tree/stream-source.cxx
+++ /dev/null
@@ -1,496 +0,0 @@
-// file : xsd/cxx/tree/stream-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/stream-source.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String name (ename (l));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (l, name) && !name)
- return;
-
- SemanticGraph::Type& item_type (l.argumented ().type ());
- String base (L"::xsd::cxx::tree::list< " +
- item_type_name (item_type) + L", " + char_type);
-
- if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
- base += L", ::xsd::cxx::tree::schema_type::double_";
- else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
- base += L", ::xsd::cxx::tree::schema_type::decimal";
-
- base += L" >";
-
- os << std_ostream_type << "&" << endl
- << "operator<< (" << std_ostream_type << "& o, " <<
- "const " << name << "& i)"
- << "{"
- << "return o << static_cast< const " << base << "& > (i);"
- << "}";
-
- // Register with ostream map.
- //
- if (polymorphic &&
- polymorphic_p (l) &&
- (!anonymous_p (l) || anonymous_substitutes_p (l)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (l));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::std_ostream_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_std_ostream_init;"
- << endl;
- }
- }
-
- private:
- String
- item_type_name (SemanticGraph::Type& t)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (t);
-
- return o.str ();
- }
- };
-
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String name (ename (u));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (u, name) && !name)
- return;
-
- os << std_ostream_type << "&" << endl
- << "operator<< (" << std_ostream_type << "& o, " <<
- "const " << name << "& i)"
- << "{"
- << "return o << static_cast< const " << xs_string_type << "& > (i);"
- << "}";
-
- // Register with ostream map.
- //
- if (polymorphic &&
- polymorphic_p (u) &&
- (!anonymous_p (u) || anonymous_substitutes_p (u)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (u));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::std_ostream_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_std_ostream_init;"
- << endl;
- }
- }
- };
-
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c), base_ (c)
- {
- inherits_base_ >> base_;
- }
-
- virtual void
- traverse (Type& e)
- {
- String name (ename (e));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- bool string_based (false);
- {
- IsStringBasedType t (string_based);
- t.dispatch (e);
- }
-
- bool enum_based (false);
- if (string_based)
- {
- SemanticGraph::Enumeration* be (0);
- IsEnumBasedType t (be);
- t.dispatch (e);
-
- enum_based = (be != 0);
- }
-
- // If we are based on an enum then the value type is just an
- // alias and we don't need to generate this operator again.
- //
- if (string_based && !enum_based)
- {
- os << std_ostream_type << "&" << endl
- << "operator<< (" << std_ostream_type << "& o, " <<
- name << "::" << evalue (e) << " i)"
- << "{"
- << "return o << " << name << "::_xsd_" << name <<
- "_literals_[i];"
- << "}";
- }
-
- os << std_ostream_type << "&" << endl
- << "operator<< (" << std_ostream_type << "& o, " <<
- "const " << name << "& i)"
- << "{"
- << "return o << static_cast< const ";
-
- inherits (e, inherits_base_);
-
- os << "& > (i);"
- << "}";
-
- // Register with ostream map.
- //
- if (polymorphic &&
- polymorphic_p (e) &&
- (!anonymous_p (e) || anonymous_substitutes_p (e)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (e));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::std_ostream_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_std_ostream_init;"
- << endl;
- }
- }
-
- private:
- Traversal::Inherits inherits_base_;
- BaseTypeName base_;
- };
-
- struct Element: Traversal::Element, Context
- {
- Element (Context& c, String const& scope_)
- : Context (c), scope (scope_)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (skip (e))
- return;
-
- String const& aname (eaname (e));
-
- // Check if we need to handle xsi:type and substitution groups.
- // If this element's type is anonymous then we don't need to do
- // anything. Note that if the type is anonymous then it can't be
- // derived from which makes it impossible to substitute or
- // dynamically-type with xsi:type.
- //
- SemanticGraph::Type& t (e.type ());
- bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
-
- if (poly)
- {
- os << "{"
- << "::xsd::cxx::tree::std_ostream_map< " << char_type
- << " >& om (" << endl
- << "::xsd::cxx::tree::std_ostream_map_instance< " <<
- poly_plate << ", " << char_type << " > ());"
- << endl;
- }
-
- if (max (e) != 1)
- {
- // sequence
- //
- os << "for (" << scope << "::" << econst_iterator (e) << endl
- << "b (i." << aname << " ().begin ()), " <<
- "e (i." << aname << " ().end ());" << endl
- << "b != e; ++b)"
- << "{"
- << "o << ::std::endl << " << strlit (e.name () + L": ");
-
- if (!poly)
- os << " << *b;";
- else
- os << ";"
- << "om.insert (o, *b);";
-
- os << "}";
- }
- else if (min (e) == 0)
- {
- // optional
- //
-
- os << "if (i." << aname << " ())"
- << "{"
- << "o << ::std::endl << " << strlit (e.name () + L": ");
-
- if (!poly)
- os << " << *i." << aname << " ();";
- else
- os << ";"
- << "om.insert (o, *i." << aname << " ());";
-
- os << "}";
- }
- else
- {
- // one
- //
- os << "o << ::std::endl << " << strlit (e.name () + L": ");
-
- if (!poly)
- os << " << i." << aname << " ();";
- else
- os << ";"
- << "om.insert (o, i." << aname << " ());";
- }
-
- if (poly)
- os << "}";
- }
-
- private:
- String scope;
- };
-
- struct Attribute: Traversal::Attribute, Context
- {
- Attribute (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& aname (eaname (a));
-
- if (a.optional_p () && !a.default_p ())
- {
- os << "if (i." << aname << " ())"
- << "{"
- << "o << ::std::endl << " << strlit (a.name () + L": ") <<
- " << *i." << aname << " ();"
- << "}";
- }
- else
- {
- os << "o << ::std::endl << " << strlit (a.name () + L": ") <<
- " << i." << aname << " ();";
- }
- }
- };
-
-
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c), base_ (c)
- {
- inherits_ >> base_;
- }
-
- virtual void
- traverse (Type& c)
- {
- String name (ename (c));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- //
- //
- bool has_body (has<Traversal::Member> (c) || c.inherits_p ());
-
- os << std_ostream_type << "&" << endl
- << "operator<< (" << std_ostream_type << "& o, " <<
- "const " << name << "&" << (has_body ? " i" : "") << ")"
- << "{";
-
- if (c.inherits_p ())
- {
- os << "o << static_cast< const ";
-
- inherits (c, inherits_);
-
- os << "& > (i);"
- << endl;
- }
-
- {
- Traversal::Names names_member;
- Element element (*this, name);
- Attribute attribute (*this);
-
- names_member >> element;
- names_member >> attribute;
-
- names (c, names_member);
- }
-
- os << "return o;"
- << "}";
-
- // Register with ostream map.
- //
- if (polymorphic &&
- polymorphic_p (c) &&
- (!anonymous_p (c) || anonymous_substitutes_p (c)))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (c));
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::std_ostream_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_std_ostream_init;"
- << endl;
- }
- }
-
- private:
- Traversal::Inherits inherits_;
- BaseTypeName base_;
- };
- }
-
- void
- generate_stream_source (Context& ctx, size_t first, size_t last)
- {
- String c (ctx.char_type);
-
- ctx.os << "#include <ostream>" << endl
- << endl;
-
- if (ctx.polymorphic)
- {
- ctx.os << "#include <xsd/cxx/tree/std-ostream-map.hxx>" << endl
- << endl;
-
- bool import_maps (ctx.options.import_maps ());
- bool export_maps (ctx.options.export_maps ());
-
- if (import_maps || export_maps)
- {
- ctx.os << "#ifndef XSD_NO_EXPORT" << endl
- << endl
- << "namespace xsd"
- << "{"
- << "namespace cxx"
- << "{"
- << "namespace tree"
- << "{"
- << "#ifdef _MSC_VER" << endl;
-
- if (export_maps)
- ctx.os << "template struct __declspec (dllexport) " <<
- "std_ostream_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- if (import_maps)
- ctx.os << "template struct __declspec (dllimport) " <<
- "std_ostream_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl
- << "template struct __attribute__ ((visibility(\"default\"))) " <<
- "std_ostream_plate< " << ctx.poly_plate << ", " << ctx.char_type <<
- " >;";
-
- ctx.os << "#elif defined(XSD_MAP_VISIBILITY)" << endl
- << "template struct XSD_MAP_VISIBILITY " <<
- "std_ostream_plate< " << ctx.poly_plate << ", " << ctx.char_type <<
- " >;";
-
- ctx.os << "#endif" << endl
- << "}" // tree
- << "}" // cxx
- << "}" // xsd
- << "#endif // XSD_NO_EXPORT" << endl
- << endl;
- }
-
- ctx.os << "namespace _xsd"
- << "{"
- << "static" << endl
- << "const ::xsd::cxx::tree::std_ostream_plate< " <<
- ctx.poly_plate << ", " << ctx.char_type << " >" << endl
- << "std_ostream_plate_init;"
- << "}";
- }
-
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names names_ns, names;
-
- Namespace ns (ctx, first, last);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/stream-source.hxx b/xsd/xsd/cxx/tree/stream-source.hxx
deleted file mode 100644
index f13a23e..0000000
--- a/xsd/xsd/cxx/tree/stream-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/stream-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_STREAM_SOURCE_HXX
-#define CXX_TREE_STREAM_SOURCE_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_stream_source (Context&, size_t first, size_t last);
- }
-}
-
-#endif // CXX_TREE_STREAM_SOURCE_HXX
diff --git a/xsd/xsd/cxx/tree/tree-forward.cxx b/xsd/xsd/cxx/tree/tree-forward.cxx
deleted file mode 100644
index 5afae3c..0000000
--- a/xsd/xsd/cxx/tree/tree-forward.cxx
+++ /dev/null
@@ -1,326 +0,0 @@
-// file : xsd/cxx/tree/tree-forward.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cxx/tree/tree-forward.hxx>
-#include <cxx/tree/fundamental-header.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String const& name (ename (l));
-
- if (String custom = custom_type (l))
- {
- String new_name;
- renamed_type (l, new_name);
-
- if (new_name)
- os << "class " << new_name << ";";
-
- if (custom == name)
- os << "class " << name << ";";
- else
- os << "typedef " << custom << " " << name << ";";
- }
- else
- os << "class " << name << ";";
- }
- };
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String const& name (ename (u));
-
- if (String custom = custom_type (u))
- {
- String new_name;
- renamed_type (u, new_name);
-
- if (new_name)
- os << "class " << new_name << ";";
-
- if (custom == name)
- os << "class " << name << ";";
- else
- os << "typedef " << custom << " " << name << ";";
- }
- else
- os << "class " << name << ";";
- }
- };
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- String const& name (ename (e));
-
- if (String custom = custom_type (e))
- {
- String new_name;
- renamed_type (e, new_name);
-
- if (new_name)
- os << "class " << new_name << ";";
-
- if (custom == name)
- os << "class " << name << ";";
- else
- os << "typedef " << custom << " " << name << ";";
- }
- else
- os << "class " << name << ";";
- }
- };
-
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- String const& name (ename (c));
-
- if (String custom = custom_type (c))
- {
- String new_name;
- renamed_type (c, new_name);
-
- if (new_name)
- os << "class " << new_name << ";";
-
- if (custom == name)
- os << "class " << name << ";";
- else
- os << "typedef " << custom << " " << name << ";";
- }
- else
- os << "class " << name << ";";
- }
- };
- }
-
- void
- generate_forward (Context& ctx)
- {
- NarrowString xml_schema (ctx.options.extern_xml_schema ());
-
- // Inlcude or Emit fundamental types.
- //
- if (xml_schema)
- {
- String name (ctx.hxx_expr->replace (xml_schema));
-
- ctx.os << "#include " << ctx.process_include_path (name) << endl
- << endl;
- }
- else
- {
- if (ctx.char_type == L"char" && ctx.char_encoding != L"custom")
- {
- ctx.os << "#include <xsd/cxx/xml/char-" << ctx.char_encoding <<
- ".hxx>" << endl
- << endl;
- }
-
- ctx.os << "#include <xsd/cxx/tree/exceptions.hxx>" << endl
- << "#include <xsd/cxx/tree/elements.hxx>" << endl
- << "#include <xsd/cxx/tree/types.hxx>" << endl
- << endl;
-
- if (!ctx.options.suppress_parsing () ||
- ctx.options.generate_serialization ())
- {
- ctx.os << "#include <xsd/cxx/xml/error-handler.hxx>" << endl
- << endl;
- }
-
- if (!ctx.options.suppress_parsing () ||
- ctx.options.generate_serialization ())
- {
- ctx.os << "#include <xsd/cxx/xml/dom/auto-ptr.hxx>" << endl
- << endl;
- }
-
- bool element_map (ctx.options.generate_element_map ());
-
- if (element_map)
- ctx.os << "#include <xsd/cxx/tree/element-map.hxx>" << endl
- << endl;
-
- // I need to include all the "optional" headers here (instead of
- // later in the individual generators for each feature because
- // those headers provide implementation for the fundamental types.
- //
- if (!ctx.options.suppress_parsing ())
- {
- ctx.os << "#include <xsd/cxx/tree/parsing.hxx>" << endl;
-
- Traversal::Schema schema, xsd;
- Traversal::Implies implies;
- Traversal::Names names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- FundIncludes type (ctx, "parsing");
-
- schema >> implies >> xsd >> names >> ns >> ns_names >> type;
-
- schema.dispatch (ctx.schema_root);
-
- if (element_map)
- ctx.os << "#include <xsd/cxx/tree/parsing/element-map.txx>" <<
- endl;
-
- ctx.os << endl;
- }
-
- if (ctx.options.generate_serialization ())
- {
- ctx.os << "#include <xsd/cxx/xml/dom/serialization-header.hxx>" << endl
- << "#include <xsd/cxx/tree/serialization.hxx>" << endl;
-
- Traversal::Schema schema, xsd;
- Traversal::Implies implies;
- Traversal::Names names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- FundIncludes type (ctx, "serialization");
-
- schema >> implies >> xsd >> names >> ns >> ns_names >> type;
-
- schema.dispatch (ctx.schema_root);
-
- if (element_map)
- ctx.os << "#include <xsd/cxx/tree/serialization/element-map.txx>" <<
- endl;
-
- ctx.os << endl;
- }
-
- if (ctx.options.generate_ostream ())
- {
- ctx.os << "#include <xsd/cxx/tree/std-ostream-operators.hxx>" << endl
- << endl;
- }
-
- NarrowStrings const& ist (ctx.options.generate_insertion ());
- if (!ist.empty ())
- {
- for (NarrowStrings::const_iterator i (ist.begin ()); i != ist.end ();
- ++i)
- {
- if (*i == "ACE_OutputCDR")
- ctx.os << "#include <xsd/cxx/tree/ace-cdr-stream-insertion.hxx>"
- << endl;
- else if (*i == "XDR")
- ctx.os << "#include <xsd/cxx/tree/xdr-stream-insertion.hxx>"
- << endl;
- }
-
- ctx.os << "#include <xsd/cxx/tree/stream-insertion.hxx>" << endl
- << endl;
- }
-
- NarrowStrings const& est (ctx.options.generate_extraction ());
- if (!est.empty ())
- {
- for (NarrowStrings::const_iterator i (est.begin ()); i != est.end ();
- ++i)
- {
- if (*i == "ACE_InputCDR")
- ctx.os << "#include <xsd/cxx/tree/ace-cdr-stream-extraction.hxx>"
- << endl;
- else if (*i == "XDR")
- ctx.os << "#include <xsd/cxx/tree/xdr-stream-extraction.hxx>"
- << endl;
- }
-
- ctx.os << "#include <xsd/cxx/tree/stream-extraction.hxx>" << endl
- << endl;
- }
-
-
- Traversal::Schema schema, xsd;
- Traversal::Implies implies;
- Traversal::Names names;
- FundamentalNamespace ns (ctx);
-
- schema >> implies >> xsd >> names >> ns;
-
- schema.dispatch (ctx.schema_root);
- }
-
- // First emit header includes.
- //
- if (ctx.options.generate_forward ())
- {
- Traversal::Schema schema;
- Includes includes (ctx, Includes::forward);
-
- schema >> includes;
-
- schema.dispatch (ctx.schema_root);
- }
-
- ctx.os << "// Forward declarations." << endl
- << "//" << endl;
-
- Traversal::Schema schema;
- Sources sources;
- Traversal::Names names_ns, names;
- Namespace ns (ctx);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- schema.dispatch (ctx.schema_root);
-
- ctx.os << endl;
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/tree-forward.hxx b/xsd/xsd/cxx/tree/tree-forward.hxx
deleted file mode 100644
index 5b08a10..0000000
--- a/xsd/xsd/cxx/tree/tree-forward.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/tree-forward.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_TREE_FORWARD_HXX
-#define CXX_TREE_TREE_FORWARD_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_forward (Context&);
- }
-}
-
-#endif // CXX_TREE_TREE_FORWARD_HXX
diff --git a/xsd/xsd/cxx/tree/tree-header.cxx b/xsd/xsd/cxx/tree/tree-header.cxx
deleted file mode 100644
index f0c3560..0000000
--- a/xsd/xsd/cxx/tree/tree-header.cxx
+++ /dev/null
@@ -1,4282 +0,0 @@
-// file : xsd/cxx/tree/tree-header.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <cxx/tree/tree-header.hxx>
-#include <cxx/tree/default-value.hxx>
-#include <cxx/tree/fundamental-header.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- // List mapping.
- //
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String name (ename (l));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (l, name) && !name)
- return;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief List class corresponding to the %" <<
- comment (l.name ()) << endl
- << " * schema type." << endl
- << " *" << endl
- << " * This class has an interface of a standard C++ " <<
- "sequence (e.g.," << endl
- << " * std::vector)." << endl;
-
- if (l.annotated_p ())
- {
- os << " *" << endl;
- write_annotation (l.annotation ());
- }
-
- os << " */" << endl;
- }
-
- SemanticGraph::Type& item_type (l.argumented ().type ());
- String item_name (item_type_name (item_type));
- String base_type (L"::xsd::cxx::tree::list< " + item_name + L", " +
- char_type);
-
- if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
- base_type += L", ::xsd::cxx::tree::schema_type::double_";
- else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
- base_type += L", ::xsd::cxx::tree::schema_type::decimal";
-
- base_type += L" >";
-
- os << "class " << type_exp << name <<
- ": public " << any_simple_type << "," << endl
- << " public " << base_type
- << "{"
- << "public:" << endl;
-
- // c-tor ()
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Default constructor." << endl
- << " *" << endl
- << " * Creates an empty list." << endl
- << " */" << endl;
- }
- os << name << " ();"
- << endl;
-
- // c-tor (size_type, const X& x)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create a list with copies of the specified " <<
- "element." << endl
- << " *" << endl
- << " * @param n A number of elements to copy." << endl
- << " * @param x An element to copy." << endl
- << " *" << endl
- << " * This constructor creates a list with @a n copies " <<
- "of @a x." << endl
- << " */" << endl;
- }
-
- String size_type (name != L"size_type"
- ? String (L"size_type")
- : base_type + L"::size_type");
-
- os << name << " (" << size_type << " n, const " << item_name <<
- "& x);"
- << endl;
-
- // c-tor (const I& begin, const I& end)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create a list from an iterator range." << endl
- << " *" << endl
- << " * @param begin An iterator pointing to the first " <<
- "element." << endl
- << " * @param end An iterator pointing to the one past " <<
- "the last element." << endl
- << " *" << endl
- << " * This constructor creates a list consisting of " <<
- "copies of the" << endl
- << " * elements in the range [begin,end)." << endl
- << " */" << endl;
- }
-
- String iter_type (unclash (name, "I"));
-
- os << "template < typename " << iter_type << " >" << endl
- << name << " (const " << iter_type << "& begin, const " <<
- iter_type << "& end)" << endl
- << ": " << base_type << " (begin, end, this)"
- << "{"
- << "}";
-
- // c-tor (istream&)
- //
- NarrowStrings const& st (options.generate_extraction ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a data " <<
- "representation" << endl
- << " * stream." << endl
- << " *" << endl
- << " * @param s A stream to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (" << istream_type << "< " << i->c_str () <<
- " >& s," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
- }
-
- if (!options.suppress_parsing ())
- {
- // c-tor (xercesc::DOMElement)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a DOM element." << endl
- << " *" << endl
- << " * @param e A DOM element to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << xerces_ns << "::DOMElement& e," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // c-tor (xercesc::DOMAttr)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a DOM attribute." << endl
- << " *" << endl
- << " * @param a A DOM attribute to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // c-tor (std::basic_string const&, xercesc::DOMElement)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a string fragment." << endl
- << " *" << endl
- << " * @param s A string fragment to extract the data from." << endl
- << " * @param e A pointer to DOM element containing the " <<
- "string fragment." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << string_type << "& s," << endl
- << "const " << xerces_ns << "::DOMElement* e," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
- }
-
- // copy c-tor ()
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy constructor." << endl
- << " *" << endl
- << " * @param x An instance to make a copy of." << endl
- << " * @param f Flags to create the copy with." << endl
- << " * @param c A pointer to the object that will contain " <<
- "the copy." << endl
- << " *" << endl
- << " * For polymorphic object models use the @c _clone " <<
- "function instead." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << name << "& x," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // clone
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy the instance polymorphically." << endl
- << " *" << endl
- << " * @param f Flags to create the copy with." << endl
- << " * @param c A pointer to the object that will contain " <<
- "the copy." << endl
- << " * @return A pointer to the dynamically allocated copy." << endl
- << " *" << endl
- << " * This function ensures that the dynamic type of the " <<
- "instance is" << endl
- << " * used for copying and should be used for polymorphic " <<
- "object" << endl
- << " * models instead of the copy constructor." << endl
- << " */" << endl;
- }
-
- os << "virtual " << name << "*" << endl
- << "_clone (" << flags_type << " f = 0," << endl
- << container << "* c = 0) const;"
- << endl;
-
- // d-tor
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Destructor." << endl
- << " */" << endl;
- }
-
- os << "virtual " << endl
- << "~" << name << " ();";
-
- os << "};";
-
- // Comparison operators.
- //
- if (options.generate_comparison ())
- {
- os << inst_exp
- << "bool" << endl
- << "operator== (const " << name << "&, const " << name << "&);"
- << endl;
-
- os << inst_exp
- << "bool" << endl
- << "operator!= (const " << name << "&, const " << name << "&);"
- << endl
- << endl;
- }
- }
-
- private:
- String
- item_type_name (SemanticGraph::Type& t)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (t);
-
- return o.str ();
- }
- };
-
-
- // Union mapping.
- //
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String name (ename (u));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (u, name) && !name)
- return;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Union class corresponding to the %" <<
- comment (u.name ()) << endl
- << " * schema type." << endl
- << " *" << endl
- << " * The mapping represents unions as strings." << endl;
-
- if (u.annotated_p ())
- {
- os << " *" << endl;
- write_annotation (u.annotation ());
- }
-
- os << " */" << endl;
- }
-
- os << "class " << type_exp << name <<
- ": public " << xs_string_type
- << "{"
- << "public:" << endl
- << endl;
-
- if (options.generate_default_ctor ())
- {
- // c-tor ()
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Default constructor." << endl
- << " *" << endl
- << " * Note that this constructor may leave the " <<
- "instance in an" << endl
- << " * invalid state." << endl
- << " */" << endl;
- }
-
- os << name << " ();"
- << endl;
- }
-
- // c-tor (const char*)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a C string." << endl
- << " *" << endl
- << " * @param v A string value." << endl
- << " */" << endl;
- }
- os << name << " (const " << char_type << "* v);"
- << endl;
-
- // c-tor (string const&)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a string." << endl
- << " *" << endl
- << " * @param v A string value." << endl
- << " */" << endl;
- }
- os << name << " (const " << string_type << "& v);"
- << endl;
-
- // c-tor (istream&)
- //
- NarrowStrings const& st (options.generate_extraction ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a data " <<
- "representation" << endl
- << " * stream." << endl
- << " *" << endl
- << " * @param s A stream to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (" << istream_type << "< " << i->c_str () <<
- " >& s," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
- }
-
- if (!options.suppress_parsing ())
- {
- // c-tor (xercesc::DOMElement)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a DOM element." << endl
- << " *" << endl
- << " * @param e A DOM element to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << xerces_ns << "::DOMElement& e," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // c-tor (xercesc::DOMAttr)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a DOM attribute." << endl
- << " *" << endl
- << " * @param a A DOM attribute to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // c-tor (std::basic_string const&, xercesc::DOMElement)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a string fragment." << endl
- << " *" << endl
- << " * @param s A string fragment to extract the data from." << endl
- << " * @param e A pointer to DOM element containing the " <<
- "string fragment." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << string_type << "& s," << endl
- << "const " << xerces_ns << "::DOMElement* e," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
- }
-
- // copy c-tor ()
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy constructor." << endl
- << " *" << endl
- << " * @param x An instance to make a copy of." << endl
- << " * @param f Flags to create the copy with." << endl
- << " * @param c A pointer to the object that will contain " <<
- "the copy." << endl
- << " *" << endl
- << " * For polymorphic object models use the @c _clone " <<
- "function instead." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << name << "& x," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // clone
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy the instance polymorphically." << endl
- << " *" << endl
- << " * @param f Flags to create the copy with." << endl
- << " * @param c A pointer to the object that will contain " <<
- "the copy." << endl
- << " * @return A pointer to the dynamically allocated copy." << endl
- << " *" << endl
- << " * This function ensures that the dynamic type of the " <<
- "instance is" << endl
- << " * used for copying and should be used for polymorphic " <<
- "object" << endl
- << " * models instead of the copy constructor." << endl
- << " */" << endl;
- }
-
- os << "virtual " << name << "*" << endl
- << "_clone (" << flags_type << " f = 0," << endl
- << container << "* c = 0) const;"
- << endl;
-
- os << "};";
- }
- };
-
- // Enum mapping.
- //
- struct Enumerator: Traversal::Enumerator, Context
- {
- Enumerator (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (doxygen && e.annotated_p ())
- {
- os << "/**" << endl;
- write_annotation (e.annotation ());
- os << " */" << endl;
- }
-
- os << ename (e);
- }
- };
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c),
- base_ (c),
- member_ (c),
- enumerator_ (c)
- {
- inherits_base_ >> base_;
- inherits_member_ >> member_;
-
- names_ >> enumerator_;
- }
-
- virtual void
- traverse (Type& e)
- {
- String name (ename (e));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- bool string_based (false);
- {
- IsStringBasedType t (string_based);
- t.dispatch (e);
- }
-
- bool enum_based (false);
- SemanticGraph::Enumeration* base_enum (0);
-
- if (string_based)
- {
- IsEnumBasedType t (base_enum);
- t.dispatch (e);
-
- if (base_enum != 0)
- enum_based = true;
- }
-
- String value;
- if (string_based)
- value = evalue (e);
-
- // Get to the ultimate base and see if is a fundamental type.
- //
- bool fund_based (false);
- SemanticGraph::Type& ult_base (ultimate_base (e));
- {
- IsFundamentalType t (fund_based);
- t.dispatch (ult_base);
- }
-
- // Count enumerators.
- //
- size_t enum_count (0);
-
- for (Type::NamesIterator i (e.names_begin ()), end (e.names_end ());
- i != end; ++i)
- ++enum_count;
-
- //
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Enumeration class corresponding to the %" <<
- comment (e.name ()) << endl
- << " * schema type." << endl;
-
- if (e.annotated_p ())
- {
- os << " *" << endl;
- write_annotation (e.annotation ());
- }
-
- os << " */" << endl;
- }
-
- os << "class " << type_exp << name << ": public ";
-
- // Enumeration always has a base.
- //
- inherits (e, inherits_base_);
-
- os << "{"
- << "public:" << endl;
-
- if (string_based)
- {
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief Underlying enum type." << endl
- << " */" << endl;
- }
-
- if (enum_based)
- {
- os << "typedef ";
-
- inherits (e, inherits_base_);
-
- os << "::" << evalue (*base_enum) << " " << value << ";"
- << endl;
- }
- else
- {
- os << "enum " << value
- << "{";
-
- names<Enumeration> (e, names_, 0, 0, 0, &Enumeration::comma);
-
- os << "};";
- }
- }
-
- // default c-tor
- //
- if (options.generate_default_ctor ())
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Default constructor." << endl
- << " *" << endl
- << " * Note that this constructor may leave the " <<
- "instance in an" << endl
- << " * invalid state." << endl
- << " */" << endl;
- }
-
- os << name << " ();"
- << endl;
- }
-
- // c-tor (value)
- //
- if (string_based)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from the " <<
- "underlying enum value." << endl
- << " *" << endl
- << " * @param v A enum value." << endl
- << " */" << endl;
- }
-
- os << name << " (" << value << " v);"
- << endl;
- }
-
- // c-tor (const char*)
- //
- if (string_based)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a C string." << endl
- << " *" << endl
- << " * @param v A string value." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << char_type << "* v);"
- << endl;
- }
-
- // c-tor (const std::string&)
- //
- if (string_based)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a string." << endl
- << " *" << endl
- << " * @param v A string value." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << string_type << "& v);"
- << endl;
- }
-
- // c-tor (fundamental)
- //
- if (fund_based)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a fundamental " <<
- "type value." << endl
- << " *" << endl
- << " * @param v A fundamental type value." << endl
- << " */" << endl;
- }
-
- os << name << " (";
-
- member_.dispatch (ult_base);
-
- os << " v);"
- << endl;
- }
-
- // c-tor (base)
- //
- // If the ultimate is also our immediate base and it is a
- // fundamental type then this c-tor clashes with c-tor
- // (fundamental) above.
- //
- if (!fund_based || &ult_base != &e.inherits ().base ())
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from the " <<
- "base value." << endl
- << " *" << endl
- << " * @param v A base value." << endl
- << " */" << endl;
- }
-
- os << name << " (const ";
-
- inherits (e, inherits_member_);
-
- os << "& v);"
- << endl;
- }
-
-
- // c-tor (istream&)
- //
- NarrowStrings const& st (options.generate_extraction ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a data " <<
- "representation" << endl
- << " * stream." << endl
- << " *" << endl
- << " * @param s A stream to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (" << istream_type << "< " << i->c_str () <<
- " >& s," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
- }
-
- if (!options.suppress_parsing ())
- {
- // c-tor (xercesc::DOMElement)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a DOM element." << endl
- << " *" << endl
- << " * @param e A DOM element to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << xerces_ns << "::DOMElement& e," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // c-tor (xercesc::DOMAttr)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a DOM attribute." << endl
- << " *" << endl
- << " * @param a A DOM attribute to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // c-tor (std::basic_string const&, xercesc::DOMElement)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a string fragment." << endl
- << " *" << endl
- << " * @param s A string fragment to extract the data from." << endl
- << " * @param e A pointer to DOM element containing the " <<
- "string fragment." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << string_type << "& s," << endl
- << "const " << xerces_ns << "::DOMElement* e," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
- }
-
- // copy c-tor
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy constructor." << endl
- << " *" << endl
- << " * @param x An instance to make a copy of." << endl
- << " * @param f Flags to create the copy with." << endl
- << " * @param c A pointer to the object that will contain " <<
- "the copy." << endl
- << " *" << endl
- << " * For polymorphic object models use the @c _clone " <<
- "function instead." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << name << "& x," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // clone
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy the instance polymorphically." << endl
- << " *" << endl
- << " * @param f Flags to create the copy with." << endl
- << " * @param c A pointer to the object that will contain " <<
- "the copy." << endl
- << " * @return A pointer to the dynamically allocated copy." << endl
- << " *" << endl
- << " * This function ensures that the dynamic type of the " <<
- "instance is" << endl
- << " * used for copying and should be used for polymorphic " <<
- "object" << endl
- << " * models instead of the copy constructor." << endl
- << " */" << endl;
- }
-
- os << "virtual " << name << "*" << endl
- << "_clone (" << flags_type << " f = 0," << endl
- << container << "* c = 0) const;"
- << endl;
-
- // operator= (value)
- //
- if (string_based)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Assign the underlying enum value." << endl
- << " *" << endl
- << " * @param v A enum value." << endl
- << " * @return A refernce to the instance." << endl
- << " */" << endl;
- }
-
- os << name << "&" << endl
- << "operator= (" << value << " v);"
- << endl;
- }
-
- // operator value ()
- //
- // Name lookup differences in various compilers make generation
- // of this operator outside of the class a really hard task. So
- // we are going to make it "always inline".
- //
- if (string_based)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Implicit conversion operator to the " <<
- "underlying" << endl
- << " * enum value." << endl
- << " *" << endl
- << " * @return A enum value." << endl
- << " */" << endl;
- }
-
- os << "virtual" << endl
- << "operator " << value << " () const"
- << "{"
- << "return _xsd_" << name << "_convert ();"
- << "}";
- }
-
- //
- //
- if (string_based)
- {
- if (doxygen)
- os << "//@cond" << endl
- << endl;
-
- os << "protected:" << endl
- << value << endl
- << "_xsd_" << name << "_convert () const;"
- << endl;
-
- os << "public:" << endl;
-
- if (enum_based)
- {
- // We are going to reuse our base's literals.
- //
- os << "static const " << char_type << "* const* " <<
- "_xsd_" << name << "_literals_;";
- }
- else
- {
- os << "static const " << char_type << "* const " <<
- "_xsd_" << name << "_literals_[" << enum_count << "];";
- }
-
- os << "static const " << value <<
- " _xsd_" << name << "_indexes_[" << enum_count << "];";
-
- if (doxygen)
- os << endl
- << "//@endcond" << endl
- << endl;
- }
-
- os << "};";
- }
-
- virtual void
- comma (Type&)
- {
- os << "," << endl;
- }
-
- private:
- Traversal::Inherits inherits_base_;
- BaseTypeName base_;
-
- Traversal::Inherits inherits_member_;
- MemberTypeName member_;
-
- Traversal::Names names_;
- Enumerator enumerator_;
- };
-
-
- //
- //
- struct MemberFunction: Traversal::Member, Context
- {
- MemberFunction (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- String const& aname (eaname (m));
- String const& mname (emname (m));
- String kind (m.is_a<SemanticGraph::Element> ()
- ? "element" : "attribute");
-
- bool fund (false);
- {
- IsFundamentalType t (fund);
- t.dispatch (m.type ());
- }
-
- bool def_attr (m.default_p () &&
- m.is_a<SemanticGraph::Attribute> ());
-
- if (max (m) != 1)
- {
- // sequence
- //
- String container (econtainer (m));
-
- // container const&
- // name () const;
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the element" << endl
- << " * sequence." << endl
- << " *" << endl
- << " * @return A constant reference to the sequence " <<
- "container." << endl
- << " */" << endl;
- }
-
- os << "const " << container << "&" << endl
- << aname << " () const;"
- << endl;
-
- // container&
- // name ();
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-write reference to the " <<
- "element sequence." << endl
- << " *" << endl
- << " * @return A reference to the sequence container." << endl
- << " */" << endl;
- }
-
- os << container << "&" << endl
- << aname << " ();"
- << endl;
-
- // void
- // name (container const&);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy elements from a given sequence." << endl
- << " *" << endl
- << " * @param s A sequence to copy elements from." << endl
- << " *" << endl
- << " * For each element in @a s this function " <<
- "makes a copy and adds it " << endl
- << " * to the sequence. Note that this operation " <<
- "completely changes the " << endl
- << " * sequence and all old elements will be lost." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (const " << container << "& s);"
- << endl;
- }
- else if (min (m) == 0 && !def_attr)
- {
- // optional
- //
- String const& type (etype (m));
- String container (econtainer (m));
-
- // container const&
- // name () const;
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the " << kind << endl
- << " * container." << endl
- << " *" << endl
- << " * @return A constant reference to the optional " <<
- "container." << endl
- << " */" << endl;
- }
-
- os << "const " << container << "&" << endl
- << aname << " () const;"
- << endl;
-
- // container&
- // name ();
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-write reference to the " <<
- kind << " container." << endl
- << " *" << endl
- << " * @return A reference to the optional container." << endl
- << " */" << endl;
- }
-
- os << container << "&" << endl
- << aname << " ();"
- << endl;
-
- // void
- // name (type const&);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the " << kind << " value." << endl
- << " *" << endl
- << " * @param x A new value to set." << endl
- << " *" << endl
- << " * This function makes a copy of its argument " <<
- "and sets it as" << endl
- << " * the new value of the " << kind << "." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (const " << type << "& x);"
- << endl;
-
- // void
- // name (container const&);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the " << kind << " value." << endl
- << " *" << endl
- << " * @param x An optional container with the new value " <<
- "to set." << endl
- << " *" << endl
- << " * If the value is present in @a x then this function " <<
- "makes a copy " << endl
- << " * of this value and sets it as the new value of the " <<
- kind << "." << endl
- << " * Otherwise the " << kind << " container is set " <<
- "the 'not present' state." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (const " << container << "& x);"
- << endl;
-
- // void
- // name (auto_ptr<type>);
- //
- if (!fund)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the " << kind << " value without " <<
- "copying." << endl
- << " *" << endl
- << " * @param p A new value to use." << endl
- << " *" << endl
- << " * This function will try to use the passed value " <<
- "directly instead" << endl
- << " * of making a copy." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (" << auto_ptr << "< " << type << " > p);"
- << endl;
- }
- }
- else
- {
- // one
- //
- String const& type (etype (m));
-
- // type const&
- // name () const;
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the " << kind << "." << endl
- << " *" << endl
- << " * @return A constant reference to the " << kind <<
- "." << endl
- << " */" << endl;
- }
-
- os << "const " << type << "&" << endl
- << aname << " () const;"
- << endl;
-
- // Do not generate modifiers for fixed attributes.
- //
- if (!(def_attr && m.fixed_p ()))
- {
- // type&
- // name ();
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-write reference to the " <<
- kind << "." << endl
- << " *" << endl
- << " * @return A reference to the " << kind << "." << endl
- << " */" << endl;
- }
-
- os << type << "&" << endl
- << aname << " ();"
- << endl;
-
- // void
- // name (type const&);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the " << kind << " value." << endl
- << " *" << endl
- << " * @param x A new value to set." << endl
- << " *" << endl
- << " * This function makes a copy of its argument " <<
- "and sets it as" << endl
- << " * the new value of the " << kind << "." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (const " << type << "& x);"
- << endl;
-
- // void
- // name (auto_ptr<type>);
- //
- if (!fund)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the " << kind << " value without " <<
- "copying." << endl
- << " *" << endl
- << " * @param p A new value to use." << endl
- << " *" << endl
- << " * This function will try to use the passed value " <<
- "directly" << endl
- << " * instead of making a copy." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (" << auto_ptr << "< " << type << " > p);"
- << endl;
-
- }
-
- // auto_ptr<type>
- // detach_name ();
- //
- if (detach && !fund)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Detach the " << kind << " value from " <<
- "the object model." << endl
- << " *" << endl
- << " * @return A pointer to the " << kind << " value." << endl
- << " *" << endl
- << " * Note that this function leaves the required " <<
- kind << " in " << endl
- << " * the original object model uninitialized." << endl
- << " */" << endl;
- }
-
- os << auto_ptr << "< " << type << " >" << endl
- << edname (m) << " ();"
- << endl;
- }
- }
- }
-
- // default_value
- //
- if (m.default_p ())
- {
- bool simple (true);
-
- if (m.is_a<SemanticGraph::Element> ())
- {
- IsSimpleType test (simple);
- test.dispatch (m.type ());
- }
-
- if (simple)
- {
- bool lit (false);
- {
- IsLiteralValue test (lit);
- test.dispatch (m.type ());
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return the default value for the " <<
- kind << "." << endl
- << " *" << endl;
-
- if (lit)
- os << " * @return The " << kind << "'s default value." << endl;
- else
- os << " * @return A read-only (constant) reference to the "
- << kind << "'s" << endl
- << " * default value." << endl;
-
- os << " */" << endl;
- }
-
- if (lit)
- os << "static " << etype (m) << endl;
- else
- os << "static const " << etype (m) << "&" << endl;
-
- os << edefault_value (m) << " ();"
- << endl;
- }
- }
- }
- };
-
- struct AnyFunction: Traversal::Any, Context
- {
- AnyFunction (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& aname (eaname (a));
- String const& mname (emname (a));
-
- SemanticGraph::Complex& c (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ()));
-
- if (max (a) != 1)
- {
- // sequence
- //
- String container (econtainer (a));
-
- // container const&
- // name () const;
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the wildcard" << endl
- << " * element sequence." << endl
- << " *" << endl
- << " * @return A constant reference to the sequence " <<
- "container." << endl
- << " */" << endl;
- }
-
- os << "const " << container << "&" << endl
- << aname << " () const;"
- << endl;
-
- // container&
- // name ();
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-write reference to the " <<
- "wildcard element" << endl
- << " * sequence." << endl
- << " *" << endl
- << " * @return A reference to the sequence container." << endl
- << " */" << endl;
- }
-
- os << container << "&" << endl
- << aname << " ();"
- << endl;
-
- // void
- // name (container const&);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy elements from a given sequence." << endl
- << " *" << endl
- << " * @param s A sequence to copy elements from." << endl
- << " *" << endl
- << " * For each element in @a s this function " <<
- "makes a copy and adds" << endl
- << " * it to the wildcard element sequence. Note that " <<
- "this operation" << endl
- << " * completely changes the sequence and all old " <<
- "elements will be" << endl
- << " * lost." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (const " << container << "& s);"
- << endl;
- }
- else if (min (a) == 0)
- {
- // optional
- //
- String container (econtainer (a));
-
- // container const&
- // name () const;
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the wildcard" << endl
- << " * element container." << endl
- << " *" << endl
- << " * @return A constant reference to the optional " <<
- "container." << endl
- << " */" << endl;
- }
-
- os << "const " << container << "&" << endl
- << aname << " () const;"
- << endl;
-
- // container&
- // name ();
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-write reference to the " <<
- "wildcard element" << endl
- << " * container." << endl
- << " *" << endl
- << " * @return A reference to the optional container." << endl
- << " */" << endl;
- }
-
- os << container << "&" << endl
- << aname << " ();"
- << endl;
-
- // void
- // name (type const&);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the wildcard content." << endl
- << " *" << endl
- << " * @param e A new element to set." << endl
- << " *" << endl
- << " * This function makes a copy of its argument " <<
- "and sets it as" << endl
- << " * the new wildcard content." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (const " << xerces_ns << "::DOMElement& e);"
- << endl;
-
- // void
- // name (type*);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the wildcard content without copying." << endl
- << " *" << endl
- << " * @param p A new element to use." << endl
- << " *" << endl
- << " * This function will use the passed element " <<
- "directly instead" << endl
- << " * of making a copy. For this to work the element " <<
- "should belong" << endl
- << " * to the DOM document associated with this instance." << endl
- << " *" << endl
- << " * @see " << edom_document (c) << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (" << xerces_ns << "::DOMElement* p);"
- << endl;
-
- // void
- // name (container const&);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the wildcard content." << endl
- << " *" << endl
- << " * @param x An optional container with the new " <<
- "element to set." << endl
- << " *" << endl
- << " * If the element is present in @a x then this function " <<
- "makes a " << endl
- << " * copy of this element and sets it as the new wildcard " <<
- "content." << endl
- << " * Otherwise the element container is set the 'not " <<
- "present' state." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (const " << container << "& x);"
- << endl;
- }
- else
- {
- // one
- //
-
- // type const&
- // name () const;
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the wildcard" << endl
- << " * element." << endl
- << " *" << endl
- << " * @return A constant reference to the DOM element." << endl
- << " */" << endl;
- }
-
- os << "const " << xerces_ns << "::DOMElement&" << endl
- << aname << " () const;"
- << endl;
-
- // type&
- // name ();
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-write reference to the " <<
- "wildcard element." << endl
- << " *" << endl
- << " * @return A reference to the DOM element." << endl
- << " */" << endl;
- }
-
- os << xerces_ns << "::DOMElement&" << endl
- << aname << " ();"
- << endl;
-
- // void
- // name (type const&);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the wildcard content." << endl
- << " *" << endl
- << " * @param e A new element to set." << endl
- << " *" << endl
- << " * This function makes a copy of its argument " <<
- "and sets it as" << endl
- << " * the new wildcard content." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (const " << xerces_ns << "::DOMElement& e);"
- << endl;
-
- // void
- // name (const*);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the wildcard content without copying." << endl
- << " *" << endl
- << " * @param p A new element to use." << endl
- << " *" << endl
- << " * This function will use the passed element " <<
- "directly instead" << endl
- << " * of making a copy. For this to work the element " <<
- "should belong" << endl
- << " * to the DOM document associated with this instance." << endl
- << " *" << endl
- << " * @see " << edom_document (c) << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (" << xerces_ns << "::DOMElement* p);"
- << endl;
- }
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& aname (eaname (a));
- String const& mname (emname (a));
-
- String container (econtainer (a));
-
- // container const&
- // name () const;
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the" << endl
- << " * attribute set." << endl
- << " *" << endl
- << " * @return A constant reference to the set " <<
- "container." << endl
- << " */" << endl;
- }
-
- os << "const " << container << "&" << endl
- << aname << " () const;"
- << endl;
-
- // container&
- // name ();
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-write reference to the " <<
- "attribute set." << endl
- << " *" << endl
- << " * @return A reference to the set container." << endl
- << " */" << endl;
- }
-
- os << container << "&" << endl
- << aname << " ();"
- << endl;
-
- // void
- // name (container const&);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy attributes from a given set." << endl
- << " *" << endl
- << " * @param s A set to copy elements from." << endl
- << " *" << endl
- << " * For each attribute in @a s this function " <<
- "makes a copy and adds" << endl
- << " * it to the set. Note that this operation " <<
- "completely changes the " << endl
- << " * set and all old attributes will be lost." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (const " << container << "& s);"
- << endl;
- }
- };
-
- //
- //
- struct Member: Traversal::Member, Context
- {
- Member (Context& c)
- : Context (c),
- type_name_ (c),
- member_function_ (c)
- {
- belongs_ >> type_name_;
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- SemanticGraph::Complex& c (
- dynamic_cast<SemanticGraph::Complex&> (m.scope ()));
-
- String const& type (etype (m));
- bool el (m.is_a<SemanticGraph::Element> ());
-
- bool def_attr (m.default_p () && !el);
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @name " << comment (m.name ()) << endl
- << " *" << endl
- << " * @brief Accessor and modifier functions for the %" <<
- comment (m.name ()) << endl
- << " * ";
-
- if (max (m) != 1)
- {
- os << "sequence element." << endl;
- }
- else if (min (m) == 0)
- {
- if (def_attr)
- os << "optional attribute with a default value." << endl;
- else
- os << "optional " << (el ? "element." : "attribute.") << endl;
- }
- else
- {
- os << "required " << (el ? "element." : "attribute.") << endl;
- }
-
- if (m.annotated_p ())
- {
- os << " *" << endl;
- write_annotation (m.annotation ());
- }
-
- os << " */" << endl
- << "//@{" << endl;
- }
- else
- {
- os << "// " << comment (m.name ()) << endl
- << "//" << endl;
- }
-
- // Typedefs.
- //
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief " << (el ? "Element" : "Attribute") <<
- " type." << endl
- << " */" << endl;
- }
-
- os << "typedef ";
-
- belongs (m, belongs_);
-
- os << " " << type << ";";
-
- if (max (m) != 1)
- {
- String const& container (econtainer (m));
- bool isense (options.generate_intellisense ());
-
- // sequence
- //
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief Element sequence container type." << endl
- << " */" << endl;
- }
-
- os << "typedef ::xsd::cxx::tree::sequence< " << type << " > " <<
- container << ";";
-
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief Element iterator type." << endl
- << " */" << endl;
- }
-
- // IntelliSense does not like aliases and fully-qualified
- // names here.
- //
- if (!isense)
- os << "typedef " << container << "::iterator " <<
- eiterator (m) << ";";
- else
- os << "typedef xsd::cxx::tree::sequence< " << type <<
- " >::iterator " << eiterator (m) << ";";
-
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief Element constant iterator type." << endl
- << " */" << endl;
- }
-
- if (!isense)
- os << "typedef " << container << "::const_iterator " <<
- econst_iterator (m) << ";";
- else
- os << "typedef xsd::cxx::tree::sequence< " << type <<
- " >::const_iterator " << econst_iterator (m) << ";";
-
- }
- else if (min (m) == 0 && !def_attr)
- {
- // optional
- //
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief " << (el ? "Element" : "Attribute") <<
- " optional container type." << endl
- << " */" << endl;
- }
-
- os << "typedef ::xsd::cxx::tree::optional< " << type << " > " <<
- econtainer (m) << ";";
- }
- else
- {
- // one
- //
- }
-
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief " << (el ? "Element" : "Attribute") <<
- " traits type." << endl
- << " */" << endl;
- }
- os << "typedef ::xsd::cxx::tree::traits< " << type << ", " <<
- char_type;
-
- SemanticGraph::Type& t (m.type ());
-
- if (t.is_a<SemanticGraph::Fundamental::Double> ())
- os << ", ::xsd::cxx::tree::schema_type::double_";
- else if (t.is_a<SemanticGraph::Fundamental::Decimal> ())
- os << ", ::xsd::cxx::tree::schema_type::decimal";
-
- os << " > " << etraits (m) << ";"
- << endl;
-
-
- // Element id.
- //
- if (el && ordered_p (c))
- {
- if (doxygen)
- os << "/**" << endl
- << " * @brief Element id used for capturing content " <<
- "order." << endl
- << " */" << endl;
-
- SemanticGraph::Context& ctx (m.context ());
-
- os << "static const ::std::size_t " <<
- ctx.get<String> ("ordered-id-name") << " = " <<
- ctx.get<size_t> ("ordered-id") << "UL;" << endl;
- }
-
- member_function_.traverse (m);
-
- if (doxygen)
- {
- os << "//@}" << endl
- << endl;
- }
- }
-
- private:
- MemberTypeName type_name_;
- Traversal::Belongs belongs_;
-
- MemberFunction member_function_;
- };
-
-
- struct Any: Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- Any (Context& c)
- : Context (c), any_function_ (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- SemanticGraph::Complex& c (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ()));
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @name " << ename (a) << endl
- << " *" << endl
- << " * @brief Accessor and modifier functions for the " <<
- "any wildcard." << endl;
-
- if (a.annotated_p ())
- {
- os << " *" << endl;
- write_annotation (a.annotation ());
- }
-
- os << " */" << endl
- << "//@{" << endl;
- }
- else
- {
- os << "// " << ename (a) << endl
- << "//" << endl;
- }
-
- // Typedefs.
- //
- if (max (a) != 1)
- {
- String const& container (econtainer (a));
-
- // sequence
- //
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief DOM element sequence container type." << endl
- << " */" << endl;
- }
-
- os << "typedef ::xsd::cxx::tree::element_sequence " <<
- container << ";";
-
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief DOM element iterator type." << endl
- << " */" << endl;
- }
-
- os << "typedef " << container << "::iterator " <<
- eiterator (a) << ";";
-
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief DOM element constant iterator type." << endl
- << " */" << endl;
- }
-
- os << "typedef " << container << "::const_iterator " <<
- econst_iterator (a) << ";"
- << endl;
-
- }
- else if (min (a) == 0)
- {
- // optional
- //
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief DOM element optional container type." << endl
- << " */" << endl;
- }
-
- os << "typedef ::xsd::cxx::tree::element_optional " <<
- econtainer (a) << ";"
- << endl;
- }
- else
- {
- // one
- //
- if (doxygen)
- os << endl;
- }
-
- // Wildcard id.
- //
- if (ordered_p (c))
- {
- if (doxygen)
- os << "/**" << endl
- << " * @brief Wildcard id used for capturing content " <<
- "order." << endl
- << " */" << endl;
-
- SemanticGraph::Context& ctx (a.context ());
-
- os << "static const ::std::size_t " <<
- ctx.get<String> ("ordered-id-name") << " = " <<
- ctx.get<size_t> ("ordered-id") << "UL;" << endl;
- }
-
- any_function_.traverse (a);
-
- if (doxygen)
- {
- os << "//@}" << endl
- << endl;
- }
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& container (econtainer (a));
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @name " << ename (a) << endl
- << " *" << endl
- << " * @brief Accessor and modifier functions for the " <<
- "anyAttribute" << endl
- << " * wildcard." << endl;
-
- if (a.annotated_p ())
- {
- os << " *" << endl;
- write_annotation (a.annotation ());
- }
-
- os << " */" << endl
- << "//@{" << endl;
- }
- else
- {
- os << "// " << ename (a) << endl
- << "//" << endl;
- }
-
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief DOM attribute set container type." << endl
- << " */" << endl;
- }
-
- os << "typedef ::xsd::cxx::tree::attribute_set< " << char_type <<
- " > " << container << ";";
-
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief DOM attribute iterator type." << endl
- << " */" << endl;
- }
-
- os << "typedef " << container << "::iterator " <<
- eiterator (a) << ";";
-
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief DOM attribute constant iterator type." << endl
- << " */" << endl;
- }
-
- os << "typedef " << container << "::const_iterator " <<
- econst_iterator (a) << ";"
- << endl;
-
- any_function_.traverse (a);
-
- if (doxygen)
- {
- os << "//@}" << endl
- << endl;
- }
- }
-
- private:
- AnyFunction any_function_;
- };
-
- struct DataMember: Traversal::Member, Context
- {
- DataMember (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m)) return;
-
- String const& member (emember (m));
-
- bool def_attr (m.default_p () &&
- m.is_a<SemanticGraph::Attribute> ());
-
- if (max (m) != 1)
- {
- // sequence
- //
- os << econtainer (m) << " " << member << ";";
- }
- else if (min (m) == 0 && !def_attr)
- {
- // optional
- //
- os << econtainer (m) << " " << member << ";";
- }
- else
- {
- // one
- //
- os << "::xsd::cxx::tree::one< " << etype (m) << " > " <<
- member << ";";
- }
-
- // default_value
- //
- if (m.default_p ())
- {
- bool simple (true);
-
- if (m.is_a<SemanticGraph::Element> ())
- {
- IsSimpleType test (simple);
- test.dispatch (m.type ());
- }
-
- if (simple)
- {
- bool lit (false);
- {
- IsLiteralValue test (lit);
- test.dispatch (m.type ());
- }
-
- if (!lit)
- {
- os << "static const " << etype (m) << " " <<
- edefault_value_member (m) << ";";
- }
- }
- }
- }
- };
-
- struct DataAny: Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- DataAny (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& member (emember (a));
-
- if (max (a) != 1)
- {
- // sequence
- //
- os << econtainer (a) << " " << member << ";";
- }
- else if (min (a) == 0)
- {
- // optional
- //
- os << econtainer (a) << " " << member << ";";
- }
- else
- {
- // one
- //
- os << "::xsd::cxx::tree::element_one " << member << ";";
- }
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- os << econtainer (a) << " " << emember (a) << ";";
- }
- };
-
-
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c),
- base_name_ (c),
- member_name_ (c),
- any_ (c),
- member_ (c),
- data_any_ (c),
- data_member_ (c)
- {
- inherits_base_ >> base_name_;
- inherits_member_ >> member_name_;
-
- names_ >> member_;
- if (options.generate_wildcard ())
- names_ >> any_;
-
- names_data_ >> data_member_;
- if (options.generate_wildcard ())
- names_data_ >> data_any_;
- }
-
- virtual void
- traverse (Type& c)
- {
- String name (ename (c));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- SemanticGraph::Context& ctx (c.context ());
-
- bool has_members (has<Traversal::Member> (c));
-
- bool hae (has<Traversal::Any> (c));
- bool haa (has<Traversal::AnyAttribute> (c));
-
- bool gen_wildcard (options.generate_wildcard ());
-
- bool mixed (mixed_p (c) && !ctx.count ("mixed-in-base"));
- bool ordered (ordered_p (c) && !ctx.count ("order-in-base"));
-
- bool simple (true);
- {
- IsSimpleType t (simple);
- t.dispatch (c);
- }
-
- bool string_based (false);
- {
- IsStringBasedType t (string_based);
- t.dispatch (c);
- }
-
- SemanticGraph::Enumeration* enum_base (0);
- {
- IsEnumBasedType t (enum_base);
- t.dispatch (c);
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Class corresponding to the %" <<
- comment (c.name ()) << " schema type." << endl;
-
- if (c.annotated_p ())
- {
- os << " *" << endl;
- write_annotation (c.annotation ());
- }
-
- os << " *" << endl
- << " * @nosubgrouping" << endl
- << " */" << endl;
- }
-
- os << "class " << type_exp << name << ": public ";
-
- if (c.inherits_p ())
- inherits (c, inherits_base_);
- else
- os << any_type;
-
- os << "{"
- << "public:" << endl;
-
- // Members.
- //
- names (c, names_);
-
- // Mixed content.
- //
- if (mixed)
- {
- String const& type (ctx.get<String> ("mixed-type"));
- String const& cont (ctx.get<String> ("mixed-container"));
- String const& iter (ctx.get<String> ("mixed-iterator"));
- String const& citer (ctx.get<String> ("mixed-const-iterator"));
-
- if (doxygen)
- os << "/**" << endl
- << " * @name " << comment ("text_content") << endl
- << " *" << endl
- << " * @brief Accessor and modifier functions for text " <<
- "content." << endl
- << " */" << endl
- << "//@{" << endl;
- else
- os << "// text_content" << endl
- << "//" << endl;
-
- // Typedefs.
- //
- bool isense (options.generate_intellisense ());
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Text content type." << endl
- << " */" << endl;
-
- os << "typedef " << xs_string_type << " " << type << ";";
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Text content sequence container type." << endl
- << " */" << endl;
-
- os << "typedef ::xsd::cxx::tree::sequence< " << type <<
- " > " << cont << ";";
-
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Text content iterator type." << endl
- << " */" << endl;
-
- // IntelliSense does not like aliases and fully-qualified
- // names here.
- //
- if (!isense)
- os << "typedef " << cont << "::iterator " << iter<< ";";
- else
- os << "typedef ::xsd::cxx::tree::sequence< " << type <<
- " >::iterator " << iter << ";";
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Text content constant iterator type." << endl
- << " */" << endl;
-
- if (!isense)
- os << "typedef " << cont << "::const_iterator " << citer<< ";";
- else
- os << "typedef ::xsd::cxx::tree::sequence< " << type <<
- " >::const_iterator " << citer << ";";
-
- os << endl;
-
- // Content id.
- //
- if (doxygen)
- os << "/**" << endl
- << " * @brief Text content id used for capturing content " <<
- "order." << endl
- << " */" << endl;
-
- os << "static const ::std::size_t " <<
- ctx.get<String> ("mixed-ordered-id-name") << " = " <<
- ctx.get<size_t> ("mixed-ordered-id") << "UL;" << endl;
-
- // Accessors and modifiers.
- //
- String const& aname (ctx.get<String> ("mixed-aname"));
- String const& mname (ctx.get<String> ("mixed-mname"));
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the text" << endl
- << " * content sequence." << endl
- << " *" << endl
- << " * @return A constant reference to the sequence " <<
- "container." << endl
- << " */" << endl;
-
- os << "const " << cont << "&" << endl
- << aname << " () const;"
- << endl;
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief Return a read-write reference to the " <<
- "text content" << endl
- << " * sequence." << endl
- << " *" << endl
- << " * @return A reference to the sequence container." << endl
- << " */" << endl;
-
- os << cont << "&" << endl
- << aname << " ();"
- << endl;
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief Copy elements from a given sequence." << endl
- << " *" << endl
- << " * @param s A sequence to copy entries from." << endl
- << " *" << endl
- << " * For each element in @a s this function " <<
- "add it to the sequence." << endl
- << " * Note that this operation " <<
- "completely changes the sequence and" << endl
- << " * all old elements will be lost." << endl
- << " */" << endl;
-
- os << "void" << endl
- << mname << " (const " << cont << "& s);"
- << endl;
-
- if (doxygen)
- os << "//@}" << endl
- << endl;
- }
-
- // dom_document accessors.
- //
- if (edom_document_member_p (c))
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the DOM" << endl
- << " * document associated with this instance." << endl
- << " *" << endl
- << " * @return A constant reference to the DOM document." << endl
- << " *" << endl
- << " * The DOM document returned by this function is " <<
- "used to store" << endl
- << " * the raw XML content corresponding to wildcards." << endl
- << " */" << endl;
- }
- else
- os << "// DOMDocument for wildcard content." << endl
- << "//" << endl;
-
- os << "const " << xerces_ns << "::DOMDocument&" << endl
- << edom_document (c) << " () const;"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-write reference to the DOM " <<
- "document" << endl
- << " * associated with this instance." << endl
- << " *" << endl
- << " * @return A reference to the DOM document." << endl
- << " *" << endl
- << " * The DOM document returned by this function is " <<
- "used to store" << endl
- << " * the raw XML content corresponding to wildcards." << endl
- << " */" << endl;
- }
- os << xerces_ns << "::DOMDocument&" << endl
- << edom_document (c) << " ();"
- << endl;
- }
-
- // Order container.
- //
- if (ordered)
- {
- String const& type (ctx.get<String> ("order-type"));
- String const& cont (ctx.get<String> ("order-container"));
- String const& iter (ctx.get<String> ("order-iterator"));
- String const& citer (ctx.get<String> ("order-const-iterator"));
-
- String const ct (options.order_container_specified ()
- ? options.order_container ()
- : "::std::vector");
-
- if (doxygen)
- os << "/**" << endl
- << " * @name " << comment ("content_order") << endl
- << " *" << endl
- << " * @brief Accessor and modifier functions for content " <<
- "order." << endl
- << " */" << endl
- << "//@{" << endl;
- else
- os << "// content_order" << endl
- << "//" << endl;
-
- // Typedefs.
- //
- bool isense (options.generate_intellisense ());
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Content order entry type." << endl
- << " */" << endl;
-
- os << "typedef " << ns_name (xs_ns ()) << "::" <<
- xs_ns ().context ().get<String> ("content-order") << " " <<
- type << ";";
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Content order sequence container type." << endl
- << " */" << endl;
-
- os << "typedef " << ct << "< " << type << " > " << cont << ";";
-
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Content order iterator type." << endl
- << " */" << endl;
-
- // IntelliSense does not like aliases and fully-qualified
- // names here.
- //
- if (!isense)
- os << "typedef " << cont << "::iterator " << iter<< ";";
- else
- os << "typedef " << ct << "< " << type << " >::iterator " <<
- iter << ";";
-
- if (doxygen)
- os << endl
- << "/**" << endl
- << " * @brief Content order constant iterator type." << endl
- << " */" << endl;
-
- if (!isense)
- os << "typedef " << cont << "::const_iterator " << citer<< ";";
- else
- os << "typedef " << ct << "< " << type <<
- " >::const_iterator " << citer << ";";
-
- os << endl;
-
- // Accessors and modifiers.
- //
- String const& aname (ctx.get<String> ("order-aname"));
- String const& mname (ctx.get<String> ("order-mname"));
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the content" << endl
- << " * order sequence." << endl
- << " *" << endl
- << " * @return A constant reference to the sequence " <<
- "container." << endl
- << " */" << endl;
-
- os << "const " << cont << "&" << endl
- << aname << " () const;"
- << endl;
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief Return a read-write reference to the " <<
- "content order" << endl
- << " * sequence." << endl
- << " *" << endl
- << " * @return A reference to the sequence container." << endl
- << " */" << endl;
-
- os << cont << "&" << endl
- << aname << " ();"
- << endl;
-
- if (doxygen)
- os << "/**" << endl
- << " * @brief Copy elements from a given sequence." << endl
- << " *" << endl
- << " * @param s A sequence to copy entries from." << endl
- << " *" << endl
- << " * For each element in @a s this function " <<
- "add it to the sequence." << endl
- << " * Note that this operation " <<
- "completely changes the sequence and" << endl
- << " * all old elements will be lost." << endl
- << " */" << endl;
-
- os << "void" << endl
- << mname << " (const " << cont << "& s);"
- << endl;
-
- if (doxygen)
- os << "//@}" << endl
- << endl;
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @name Constructors" << endl
- << " */" << endl
- << "//@{" << endl
- << endl;
- }
- else
- {
- os << "// Constructors." << endl
- << "//" << endl;
- }
-
- bool generate_no_base_ctor (false);
- {
- GenerateWithoutBaseCtor t (generate_no_base_ctor);
- t.traverse (c);
- }
-
- bool has_complex_non_op_args (false);
- bool has_poly_non_op_args (false);
- bool complex_poly_args_clash (true);
- {
- HasComplexPolyNonOptArgs t (*this, true,
- has_complex_non_op_args,
- has_poly_non_op_args,
- complex_poly_args_clash);
- t.traverse (c);
- }
-
- // default c-tor
- //
- if (options.generate_default_ctor ())
- {
- // c-tor (ultimate-base, all-non-optional-members) will become
- // default c-tor if our inheritance hierarchy has no required
- // members and no simple base. We can also collide with
- // c-tor (all-non-optional-members) if we have no required
- // members.
- //
- bool generate (false);
- {
- GenerateDefaultCtor t (*this, generate, generate_no_base_ctor);
- t.traverse (c);
- }
-
- if (generate)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Default constructor." << endl
- << " *" << endl
- << " * Note that this constructor leaves required " <<
- "elements and" << endl
- << " * attributes uninitialized." << endl
- << " */" << endl;
- }
-
- os << name << " ();"
- << endl;
- }
- }
-
- // c-tor (base, all-non-optional-members)
- //
- if (options.generate_from_base_ctor ())
- {
- // c-tor (base, all-non-optional-members) will be equivalent to
- // c-tor (ultimate-base, all-non-optional-members) unless our
- // immediate base's hierarchy has some non-optional members.
- // We also need to generate this c-tor when one of the types
- // in our inheritance hierarchy was customized since the
- // customized version may not necessarily be convertible to
- // the base without loss of information.
- //
- bool generate (false);
- {
- GenerateFromBaseCtor t (*this, generate);
- t.traverse (c);
- }
-
- if (generate)
- {
- bool has_complex_non_op_args (false);
- bool has_poly_non_op_args (false);
- bool complex_poly_args_clash (true);
- {
- HasComplexPolyNonOptArgs t (*this, false,
- has_complex_non_op_args,
- has_poly_non_op_args,
- complex_poly_args_clash);
- t.traverse (c);
- }
-
- //
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from the immediate "
- "base and" << endl
- << " * initializers for required elements and "
- << "attributes." << endl
- << " */" << endl;
- }
-
- os << name << " (const ";
- inherits (c, inherits_member_);
- os << "&";
- {
- FromBaseCtorArg args (*this, CtorArgType::type, false);
- Traversal::Names args_names (args);
- names (c, args_names);
- }
- os << ");"
- << endl;
-
- // If we have any complex arguments in the previous c-tor
- // then also generate the auto_ptr version.
- //
- if (has_complex_non_op_args)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from the immediate "
- "base and" << endl
- << " * initializers for required elements and "
- << "attributes" << endl
- << " * (" << auto_ptr << " version)." << endl
- << " *" << endl
- << " * This constructor will try to use the passed " <<
- "values directly" << endl
- << " * instead of making copies." << endl
- << " */" << endl;
- }
-
- os << name << " (const ";
- inherits (c, inherits_member_);
- os << "&";
- {
- FromBaseCtorArg args (
- *this, CtorArgType::complex_auto_ptr, false);
- Traversal::Names args_names (args);
- names (c, args_names);
- }
- os << ");"
- << endl;
- }
-
- // If we are generating polymorphic code then we also need to
- // provide auto_ptr version for every polymorphic type.
- //
- if (polymorphic &&
- has_poly_non_op_args && !complex_poly_args_clash)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from the immediate "
- "base and" << endl
- << " * initializers for required elements and "
- << "attributes" << endl
- << " * (" << auto_ptr << " version)." << endl
- << " *" << endl
- << " * This constructor will try to use the passed " <<
- "values directly" << endl
- << " * instead of making copies." << endl
- << " */" << endl;
- }
-
- os << name << " (const ";
- inherits (c, inherits_member_);
- os << "&";
- {
- FromBaseCtorArg args (
- *this, CtorArgType::poly_auto_ptr, false);
- Traversal::Names args_names (args);
- names (c, args_names);
- }
- os << ");"
- << endl;
- }
- }
- }
-
- // c-tor (all-non-optional-members)
- //
- if (generate_no_base_ctor)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from initializers " <<
- "for required " << endl
- << " * elements and attributes." << endl
- << " */" << endl;
- }
-
- os << name << " (";
- {
- CtorArgsWithoutBase ctor_args (
- *this, CtorArgType::type, false, true);
- ctor_args.dispatch (c);
- }
- os << ");"
- << endl;
-
-
- // If we have any complex arguments in the previous c-tor
- // then also generate the auto_ptr version. One case where
- // this c-tor will be generated is restriction of anyType.
- //
- if (has_complex_non_op_args)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from initializers " <<
- "for required " << endl
- << " * elements and attributes (" << auto_ptr <<
- " version)." << endl
- << " *" << endl
- << " * This constructor will try to use the passed " <<
- "values directly" << endl
- << " * instead of making copies." << endl
- << " */" << endl;
- }
-
- os << name << " (";
- {
- CtorArgsWithoutBase ctor_args (
- *this, CtorArgType::complex_auto_ptr, false, true);
- ctor_args.dispatch (c);
- }
- os << ");"
- << endl;
- }
-
- // If we are generating polymorphic code then we also need to
- // provide auto_ptr version for every polymorphic type.
- //
- if (polymorphic &&
- has_poly_non_op_args && !complex_poly_args_clash)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from initializers " <<
- "for required " << endl
- << " * elements and attributes (" << auto_ptr <<
- " version)." << endl
- << " *" << endl
- << " * This constructor will try to use the passed " <<
- "values directly" << endl
- << " * instead of making copies." << endl
- << " */" << endl;
- }
-
- os << name << " (";
- {
- CtorArgsWithoutBase ctor_args (
- *this, CtorArgType::poly_auto_ptr, false, true);
- ctor_args.dispatch (c);
- }
- os << ");"
- << endl;
- }
- }
-
- if (string_based)
- {
- // We might not have the value type if this enum is customized.
- //
- if (enum_base != 0 && enum_base->context ().count ("value"))
- {
- // c-tor (enum-value, all-non-optional-members)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from the " <<
- "underlying enum value" << endl
- << " * and initializers for required elements and " <<
- "attributes." << endl
- << " */" << endl;
- }
-
- os << name << " (" << fq_name (*enum_base) << "::" <<
- evalue (*enum_base);
-
- {
- CtorArgsWithoutBase ctor_args (
- *this, CtorArgType::type, false, false);
- ctor_args.dispatch (c);
- }
-
- os << ");"
- << endl;
- }
-
- // c-tor (const char*, all-non-optional-members)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a C string and " <<
- "initializers" << endl
- << " * for required elements and attributes." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << char_type << "*";
-
- {
- CtorArgsWithoutBase ctor_args (
- *this, CtorArgType::type, false, false);
- ctor_args.dispatch (c);
- }
-
- os << ");"
- << endl;
-
- // c-tor (const std::string&, all-non-optional-members)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a string and" <<
- "initializers" << endl
- << " * for required elements and attributes." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << string_type << "&";
-
- {
- CtorArgsWithoutBase ctor_args (
- *this, CtorArgType::type, false, false);
- ctor_args.dispatch (c);
- }
-
- os << ");"
- << endl;
- }
-
- // c-tor (ultimate-base, all-non-optional-members)
- //
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from the ultimate "
- "base and" << endl
- << " * initializers for required elements and " <<
- "attributes." << endl
- << " */" << endl;
- }
-
- os << name << " (";
-
- {
- CtorArgs ctor_args (*this, CtorArgType::type);
- ctor_args.dispatch (c);
- }
-
- os << ");"
- << endl;
-
- // If we have any complex arguments in the previous c-tor
- // then also generate the auto_ptr version.
- //
- if (has_complex_non_op_args)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from the ultimate "
- "base and" << endl
- << " * initializers for required elements and " <<
- "attributes" << endl
- << " * (" << auto_ptr << " version)." << endl
- << " *" << endl
- << " * This constructor will try to use the passed " <<
- "values directly" << endl
- << " * instead of making copies." << endl
- << " */" << endl;
- }
-
- os << name << " (";
-
- {
- CtorArgs ctor_args (*this, CtorArgType::complex_auto_ptr);
- ctor_args.dispatch (c);
- }
-
- os << ");"
- << endl;
- }
-
- // If we are generating polymorphic code then we also need to
- // provide auto_ptr version for every polymorphic type.
- //
- if (polymorphic && has_poly_non_op_args && !complex_poly_args_clash)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from the ultimate "
- "base and" << endl
- << " * initializers for required elements and " <<
- "attributes" << endl
- << " * (" << auto_ptr << " version)." << endl
- << " *" << endl
- << " * This constructor will try to use the passed " <<
- "values directly" << endl
- << " * instead of making copies." << endl
- << " */" << endl;
- }
-
- os << name << " (";
-
- {
- CtorArgs ctor_args (*this, CtorArgType::poly_auto_ptr);
- ctor_args.dispatch (c);
- }
-
- os << ");"
- << endl;
- }
-
- // c-tor (istream&)
- //
- NarrowStrings const& st (options.generate_extraction ());
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a data " <<
- "representation" << endl
- << " * stream." << endl
- << " *" << endl
- << " * @param s A stream to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (" << istream_type << "< " << i->c_str () <<
- " >& s," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
- }
-
-
- if (!options.suppress_parsing ())
- {
- // c-tor (xercesc::DOMElement)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a DOM element." << endl
- << " *" << endl
- << " * @param e A DOM element to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << xerces_ns << "::DOMElement& e," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
-
- if (simple)
- {
- // c-tor (xercesc::DOMAttr)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a DOM attribute." << endl
- << " *" << endl
- << " * @param a A DOM attribute to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // c-tor (std::basic_string const&, xercesc::DOMElement)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a string fragment." << endl
- << " *" << endl
- << " * @param s A string fragment to extract the data from." << endl
- << " * @param e A pointer to DOM element containing the " <<
- "string fragment." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " * @param c A pointer to the object that will " <<
- "contain the new" << endl
- << " * instance." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << string_type << "& s," << endl
- << "const " << xerces_ns << "::DOMElement* e," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
- }
- }
-
- // copy c-tor
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy constructor." << endl
- << " *" << endl
- << " * @param x An instance to make a copy of." << endl
- << " * @param f Flags to create the copy with." << endl
- << " * @param c A pointer to the object that will contain " <<
- "the copy." << endl
- << " *" << endl
- << " * For polymorphic object models use the @c _clone " <<
- "function instead." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << name << "& x," << endl
- << flags_type << " f = 0," << endl
- << container << "* c = 0);"
- << endl;
-
- // clone
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy the instance polymorphically." << endl
- << " *" << endl
- << " * @param f Flags to create the copy with." << endl
- << " * @param c A pointer to the object that will contain " <<
- "the copy." << endl
- << " * @return A pointer to the dynamically allocated copy." << endl
- << " *" << endl
- << " * This function ensures that the dynamic type of the " <<
- "instance is" << endl
- << " * used for copying and should be used for polymorphic " <<
- "object" << endl
- << " * models instead of the copy constructor." << endl
- << " */" << endl;
- }
-
- os << "virtual " << name << "*" << endl
- << "_clone (" << flags_type << " f = 0," << endl
- << container << "* c = 0) const;"
- << endl;
-
- // operator=
- //
- bool priv (false);
-
- if (!simple)
- {
- if (options.suppress_assignment ())
- {
- priv = true;
- os << "private:" << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Disabled copy assignment operator." << endl
- << " *" << endl
- << " * @param x An instance to make a copy of." << endl
- << " * @return A reference to itself." << endl
- << " */" << endl;
- }
-
- os << name << "&" << endl
- << "operator= (const " << name << "& x);"
- << endl;
- }
- else if (has_members || (gen_wildcard && (hae || haa)))
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy assignment operator." << endl
- << " *" << endl
- << " * @param x An instance to make a copy of." << endl
- << " * @return A reference to itself." << endl
- << " *" << endl
- << " * For polymorphic object models use the @c _clone " <<
- "function instead." << endl
- << " */" << endl;
- }
-
- os << name << "&" << endl
- << "operator= (const " << name << "& x);"
- << endl;
- }
- }
-
- if (doxygen)
- {
- os << "//@}" << endl
- << endl;
- }
-
- if (priv)
- os << "public:" << endl;
-
- // d-tor
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Destructor." << endl
- << " */" << endl;
- }
-
- os << "virtual " << endl
- << "~" << name << " ();"
- << endl;
-
- // Data members and implementation functions.
- //
- if (has_members || hae || (haa && gen_wildcard) || ordered || mixed)
- {
- os << "// Implementation." << endl
- << "//" << endl;
-
- if (doxygen)
- os << endl
- << "//@cond" << endl
- << endl;
-
- if (!options.suppress_parsing () &&
- (has_members || hae || (haa && gen_wildcard) || mixed))
- {
- // parse ()
- //
- os << "protected:" << endl
- << "void" << endl
- << unclash (name, "parse") << " (" <<
- parser_type << "&," << endl
- << flags_type << ");"
- << endl;
- }
-
- os << "protected:"
- << endl;
-
- // parse (istream)
- //
- if (has_members)
- {
- for (NarrowStrings::const_iterator i (st.begin ()); i != st.end ();
- ++i)
- {
- os << "void" << endl
- << unclash (name, "parse") << " (" <<
- istream_type << "< " << i->c_str () << " >&," << endl
- << flags_type << ");"
- << endl;
- }
- }
-
- // DOM document.
- //
- if (edom_document_member_p (c))
- {
- os << dom_auto_ptr << "< " << xerces_ns <<
- "::DOMDocument > " << edom_document_member (c) << ";"
- << endl;
- }
-
- // Mixed text content.
- //
- if (mixed)
- {
- os << ctx.get<String> ("mixed-container") << " " <<
- ctx.get<String> ("mixed-member") << ";"
- << endl;
- }
-
- // Order container.
- //
- if (ordered)
- {
- os << ctx.get<String> ("order-container") << " " <<
- ctx.get<String> ("order-member") << ";"
- << endl;
- }
-
- //
- //
- names (c, names_data_);
-
- if (doxygen)
- os << endl
- << "//@endcond" << endl;
- }
-
- os << "};";
-
- // Comparison operators.
- //
- if (options.generate_comparison () &&
- (has_members || !c.inherits_p () ||
- ((hae || haa) && gen_wildcard)))
- {
- os << inst_exp
- << "bool" << endl
- << "operator== (const " << name << "&, const " << name << "&);"
- << endl;
-
- os << inst_exp
- << "bool" << endl
- << "operator!= (const " << name << "&, const " << name << "&);"
- << endl
- << endl;
- }
- }
-
- private:
- Traversal::Inherits inherits_base_;
- BaseTypeName base_name_;
-
- Traversal::Inherits inherits_member_;
- MemberTypeName member_name_;
-
- Traversal::Names names_;
- Any any_;
- Member member_;
-
- Traversal::Names names_data_;
- DataAny data_any_;
- DataMember data_member_;
- };
-
-
- struct GlobalElement: Traversal::Element,
- GlobalElementBase,
- Context
- {
- GlobalElement (Context& c)
- : GlobalElementBase (c), Context (c), type_name_ (c)
- {
- belongs_ >> type_name_;
- }
-
- virtual void
- traverse (Type& e)
- {
- if (!doc_root_p (e))
- return;
-
- SemanticGraph::Type& t (e.type ());
-
- bool fund (false);
- {
- IsFundamentalType test (fund);
- test.dispatch (t);
- }
-
- bool simple (true);
- if (!fund)
- {
- IsSimpleType test (simple);
- test.dispatch (t);
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Class corresponding to the %" <<
- comment (e.name ()) << " root element." << endl;
-
- if (e.annotated_p ())
- {
- os << " *" << endl;
- write_annotation (e.annotation ());
- }
-
- os << " *" << endl
- << " * @nosubgrouping" << endl
- << " */" << endl;
- }
-
- String const& name (ename (e));
-
- os << "class " << type_exp << name << ": public " << element_type
- << "{"
- << "public:" << endl
- << endl;
-
- String const& type (etype (e));
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @name Element value" << endl
- << " *" << endl
- << " * @brief Accessor and modifier functions for the " <<
- "element value." << endl
- << " */" << endl
- << "//@{" << endl
- << endl;
- }
- else
- {
- os << "// Element value." << endl
- << "//" << endl;
- }
-
- // Typedefs.
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Element value type." << endl
- << " */" << endl;
- }
-
- os << "typedef ";
-
- belongs (e, belongs_);
-
- os << " " << type << ";";
-
- if (doxygen)
- {
- os << endl
- << "/**" << endl
- << " * @brief Element value traits type." << endl
- << " */" << endl;
- }
-
- os << "typedef ::xsd::cxx::tree::traits< " << type << ", " <<
- char_type;
-
- if (t.is_a<SemanticGraph::Fundamental::Double> ())
- os << ", ::xsd::cxx::tree::schema_type::double_";
- else if (t.is_a<SemanticGraph::Fundamental::Decimal> ())
- os << ", ::xsd::cxx::tree::schema_type::decimal";
-
- os << " > " << etraits (e) << ";"
- << endl;
-
- // Accessors/modifiers.
- //
- String const& aname (eaname (e));
- String const& mname (emname (e));
-
- // type const&
- // name () const;
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-only (constant) reference " <<
- "to the element" << endl
- << " * value." << endl
- << " *" << endl
- << " * @return A constant reference to the element value." <<
- endl
- << " */" << endl;
- }
-
- os << "const " << type << "&" << endl
- << aname << " () const;"
- << endl;
-
- // type&
- // name ();
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-write reference to the " <<
- "element value." << endl
- << " *" << endl
- << " * @return A reference to the element value." << endl
- << " */" << endl;
- }
-
- os << type << "&" << endl
- << aname << " ();"
- << endl;
-
- // void
- // name (type const&);
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the element value." << endl
- << " *" << endl
- << " * @param x A new value to set." << endl
- << " *" << endl
- << " * This function makes a copy of its argument " <<
- "and sets it as" << endl
- << " * the new value of the element." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (const " << type << "& x);"
- << endl;
-
- // void
- // name (auto_ptr<type>);
- //
- if (!fund)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Set the element value without " <<
- "copying." << endl
- << " *" << endl
- << " * @param p A new value to use." << endl
- << " *" << endl
- << " * This function will try to use the passed value " <<
- "directly" << endl
- << " * instead of making a copy." << endl
- << " */" << endl;
- }
-
- os << "void" << endl
- << mname << " (" << auto_ptr << "< " << type << " > p);"
- << endl;
- }
-
- // auto_ptr<type>
- // detach_name ();
- //
- if (detach && !fund)
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Detach the element value from " <<
- "the object." << endl
- << " *" << endl
- << " * @return A pointer to the element value." << endl
- << " *" << endl
- << " * Note that this function leaves the element " <<
- "object uninitialized." << endl
- << " */" << endl;
- }
-
- os << auto_ptr << "< " << type << " >" << endl
- << edname (e) << " ();"
- << endl;
- }
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a read-only (constant) pointer " <<
- "to the element" << endl
- << " * value." << endl
- << " *" << endl
- << " * @return A constant pointer to the element value " <<
- "or 0 if this" << endl
- << " * element is of a fundamental type." << endl
- << " */" << endl;
- }
-
- os << "virtual const " << any_type << "*" << endl
- << "_value () const;"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return a pointer to the element value." << endl
- << " *" << endl
- << " * @return A pointer to the element value or 0 if this " <<
- "element is" << endl
- << " * of a fundamental type." << endl
- << " */" << endl;
- }
- os << "virtual " << any_type << "*" << endl
- << "_value ();"
- << endl;
-
- if (doxygen)
- {
- os << "//@}" << endl
- << endl;
- }
-
- // Constructor.
- //
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @name Constructors" << endl
- << " */" << endl
- << "//@{" << endl
- << endl;
- }
- else
- {
- os << "// Constructors." << endl
- << "//" << endl;
- }
-
- // default c-tor
- //
- if (options.generate_default_ctor ())
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Default constructor." << endl
- << " *" << endl
- << " * Note that this constructor leaves the element " <<
- "value" << endl
- << " * uninitialized." << endl
- << " */" << endl;
- }
-
- os << name << " ();"
- << endl;
- }
-
- // c-tor (value)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from an initializer " <<
- "for the element" << endl
- << " * value." << endl
- << " *" << endl
- << " * @param x Element value." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << type << "& x);"
- << endl;
-
-
- // If the element value is a complex type (has elements,
- // attributes, or wildcards) then also generate the auto_ptr
- // version. If we are generating polymorphic code then we
- // also need to provide auto_ptr version for simple types.
- //
- if (!simple || (polymorphic && polymorphic_p (t)))
- {
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from an initializer " <<
- "for" << endl
- << " * the element value (" << auto_ptr <<
- " version)." << endl
- << " *" << endl
- << " * @param p Element value to use." << endl
- << " *" << endl
- << " * This constructor will try to use the passed " <<
- "value directly" << endl
- << " * instead of making a copy." << endl
- << " */" << endl;
- }
-
- os << name << " (" << auto_ptr << "< " << type << " > p);"
- << endl;
- }
-
- if (!options.suppress_parsing ())
- {
- // c-tor (xercesc::DOMElement)
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Create an instance from a DOM element." << endl
- << " *" << endl
- << " * @param e A DOM element to extract the data from." << endl
- << " * @param f Flags to create the new instance with." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << xerces_ns << "::DOMElement& e, " <<
- flags_type << " f = 0);"
- << endl;
- }
-
- // copy c-tor
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy constructor." << endl
- << " *" << endl
- << " * @param x An instance to make a copy of." << endl
- << " * @param f Flags to create the copy with." << endl
- << " *" << endl
- << " * For polymorphic object models use the @c _clone " <<
- "function instead." << endl
- << " */" << endl;
- }
-
- os << name << " (const " << name << "& x, " <<
- flags_type << " f = 0);"
- << endl;
-
- // _clone
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Copy the instance polymorphically." << endl
- << " *" << endl
- << " * @param f Flags to create the copy with." << endl
- << " * @return A pointer to the dynamically allocated copy." << endl
- << " *" << endl
- << " * This function ensures that the dynamic type of the " <<
- "instance is" << endl
- << " * used for copying and should be used for polymorphic " <<
- "object" << endl
- << " * models instead of the copy constructor." << endl
- << " */" << endl;
- }
-
- os << "virtual " << name << "*" << endl
- << "_clone (" << flags_type << " f = 0) const;"
- << endl;
-
- if (doxygen)
- {
- os << "//@}" << endl
- << endl;
- }
-
- // Element name and namespace accessors.
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @name Element name and namespace" << endl
- << " *" << endl
- << " * @brief Accessor functions for the element name " <<
- "and namespace." << endl
- << " */" << endl
- << "//@{" << endl
- << endl;
- }
- else
- {
- os << "// Element name and namespace." << endl
- << "//" << endl;
- }
-
- SemanticGraph::Context& ec (e.context ());
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return the element name (static function)." << endl
- << " *" << endl
- << " * @return A read-only string reference containing " <<
- "the element" << endl
- << " * name." << endl
- << " */" << endl;
- }
- os << "static const " << string_type << "&" << endl
- << ec.get<String> ("element-name") << " ();"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return the element namespace (static " <<
- "function)." << endl
- << " *" << endl
- << " * @return A read-only string reference containing " <<
- "the element" << endl
- << " * namespace." << endl
- << " */" << endl;
- }
- os << "static const " << string_type << "&" << endl
- << ec.get<String> ("element-ns") << " ();"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return the element name." << endl
- << " *" << endl
- << " * @return A read-only string reference containing " <<
- "the element" << endl
- << " * name." << endl
- << " */" << endl;
- }
- os << "virtual const " << string_type << "&" << endl
- << "_name () const;"
- << endl;
-
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Return the element namespace." << endl
- << " *" << endl
- << " * @return A read-only string reference containing " <<
- "the element" << endl
- << " * namespace." << endl
- << " */" << endl;
- }
- os << "virtual const " << string_type << "&" << endl
- << "_namespace () const;"
- << endl;
-
- if (doxygen)
- {
- os << "//@}" << endl
- << endl;
- }
-
- // d-tor
- //
- if (doxygen)
- {
- os << "/**" << endl
- << " * @brief Destructor." << endl
- << " */" << endl;
- }
-
- os << "virtual " << endl
- << "~" << name << " ();"
- << endl;
-
- // Data member.
- //
-
- if (doxygen)
- os << "//@cond" << endl
- << endl;
-
- os << "protected:" << endl
- << "::xsd::cxx::tree::one< " << type << " > " <<
- emember (e) << ";"
- << "static const " << string_type << " " <<
- ec.get<String> ("element-name-member") << ";"
- << "static const " << string_type << " " <<
- ec.get<String> ("element-ns-member") << ";";
-
- if (doxygen)
- os << endl
- << "//@endcond" << endl;
-
- os << "};";
- }
-
- private:
- Traversal::Belongs belongs_;
- MemberTypeName type_name_;
- };
- }
-
- void
- generate_tree_header (Context& ctx)
- {
- if (ctx.generate_xml_schema)
- {
- if (ctx.char_type == L"char" && ctx.char_encoding != L"custom")
- {
- ctx.os << "#include <xsd/cxx/xml/char-" << ctx.char_encoding <<
- ".hxx>" << endl
- << endl;
- }
-
- ctx.os << "#include <xsd/cxx/tree/exceptions.hxx>" << endl
- << "#include <xsd/cxx/tree/elements.hxx>" << endl
- << "#include <xsd/cxx/tree/types.hxx>" << endl
- << endl;
-
- if (!ctx.options.suppress_parsing () ||
- ctx.options.generate_serialization ())
- {
- ctx.os << "#include <xsd/cxx/xml/error-handler.hxx>" << endl
- << endl;
- }
-
- if (!ctx.options.suppress_parsing () ||
- ctx.options.generate_serialization ())
- {
- ctx.os << "#include <xsd/cxx/xml/dom/auto-ptr.hxx>" << endl
- << endl;
- }
-
- bool element_map (ctx.options.generate_element_map ());
-
- if (element_map)
- ctx.os << "#include <xsd/cxx/tree/element-map.hxx>" << endl
- << endl;
-
- // I need to include all the "optional" headers here (instead of
- // later in the individual generators for each feature because
- // those headers provide implementation for the fundamental types.
- //
- if (!ctx.options.suppress_parsing ())
- {
- ctx.os << "#include <xsd/cxx/tree/parsing.hxx>" << endl;
-
- Traversal::Schema schema;
- Traversal::Names names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- FundIncludes type (ctx, "parsing");
-
- schema >> names >> ns >> ns_names >> type;
-
- schema.dispatch (ctx.schema_root);
-
- if (element_map)
- ctx.os << "#include <xsd/cxx/tree/parsing/element-map.txx>" <<
- endl;
-
- ctx.os << endl;
- }
-
- if (ctx.options.generate_serialization ())
- {
- ctx.os << "#include <xsd/cxx/xml/dom/serialization-header.hxx>" << endl
- << "#include <xsd/cxx/tree/serialization.hxx>" << endl;
-
- Traversal::Schema schema;
- Traversal::Names names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
- FundIncludes type (ctx, "serialization");
-
- schema >> names >> ns >> ns_names >> type;
-
- schema.dispatch (ctx.schema_root);
-
- if (element_map)
- ctx.os << "#include <xsd/cxx/tree/serialization/element-map.txx>" <<
- endl;
-
- ctx.os << endl;
- }
-
- if (ctx.options.generate_ostream ())
- {
- ctx.os << "#include <xsd/cxx/tree/std-ostream-operators.hxx>" << endl
- << endl;
- }
-
- NarrowStrings const& ist (ctx.options.generate_insertion ());
- if (!ist.empty ())
- {
- for (NarrowStrings::const_iterator i (ist.begin ()); i != ist.end ();
- ++i)
- {
- if (*i == "ACE_OutputCDR")
- ctx.os << "#include <xsd/cxx/tree/ace-cdr-stream-insertion.hxx>"
- << endl;
- else if (*i == "XDR")
- ctx.os << "#include <xsd/cxx/tree/xdr-stream-insertion.hxx>"
- << endl;
- }
-
- ctx.os << "#include <xsd/cxx/tree/stream-insertion.hxx>" << endl
- << endl;
- }
-
- NarrowStrings const& est (ctx.options.generate_extraction ());
- if (!est.empty ())
- {
- for (NarrowStrings::const_iterator i (est.begin ()); i != est.end ();
- ++i)
- {
- if (*i == "ACE_InputCDR")
- ctx.os << "#include <xsd/cxx/tree/ace-cdr-stream-extraction.hxx>"
- << endl;
- else if (*i == "XDR")
- ctx.os << "#include <xsd/cxx/tree/xdr-stream-extraction.hxx>"
- << endl;
- }
-
- ctx.os << "#include <xsd/cxx/tree/stream-extraction.hxx>" << endl
- << endl;
- }
-
- // Emit fundamental types.
- //
- {
- Traversal::Schema schema;
- Traversal::Names names;
- FundamentalNamespace ns (ctx);
-
- schema >> names >> ns;
-
- schema.dispatch (ctx.schema_root);
- }
- }
- else
- {
- bool inline_ (ctx.options.generate_inline ());
-
- ctx.os << "#include <memory> // " << ctx.auto_ptr << endl
- << "#include <limits> // std::numeric_limits" << endl
- << "#include <algorithm> // std::binary_search" << endl;
-
- if (ctx.std >= cxx_version::cxx11)
- ctx.os << "#include <utility> // std::move" << endl;
-
- if (!ctx.options.ordered_type ().empty () ||
- ctx.options.ordered_type_all ())
- {
- ctx.os << "#include <cstddef> // std::size_t" << endl;
-
- if (!ctx.options.order_container_specified ())
- ctx.os << "#include <vector>" << endl;
- }
-
- ctx.os << endl;
-
- if (ctx.char_type == L"char" && ctx.char_encoding != L"custom")
- {
- ctx.os << "#include <xsd/cxx/xml/char-" << ctx.char_encoding <<
- ".hxx>" << endl
- << endl;
- }
-
- ctx.os << "#include <xsd/cxx/tree/exceptions.hxx>" << endl
- << "#include <xsd/cxx/tree/elements.hxx>" << endl
- << "#include <xsd/cxx/tree/containers.hxx>" << endl
- << "#include <xsd/cxx/tree/list.hxx>" << endl
- << endl;
-
- if (!ctx.options.suppress_parsing ())
- {
- ctx.os << "#include <xsd/cxx/xml/dom/parsing-header.hxx>" << endl
- << endl;
- }
-
- if (ctx.options.generate_wildcard ())
- {
- if (ctx.options.suppress_parsing () ||
- !ctx.options.generate_serialization ())
- ctx.os << "#include <xsd/cxx/xml/dom/auto-ptr.hxx>" << endl;
-
- ctx.os << "#include <xsd/cxx/tree/containers-wildcard.hxx>" << endl
- << endl;
- }
-
- if (!ctx.options.generate_extraction ().empty ())
- ctx.os << "#include <xsd/cxx/tree/istream-fwd.hxx>" << endl
- << endl;
-
- // Emit header includes.
- //
- {
- if (inline_)
- {
- ctx.os << "#ifndef XSD_DONT_INCLUDE_INLINE" << endl
- << "#define XSD_DONT_INCLUDE_INLINE" << endl
- << endl;
- }
-
- Traversal::Schema schema;
- Includes includes (ctx, Includes::header);
-
- schema >> includes;
-
- schema.dispatch (ctx.schema_root);
-
- if (inline_)
- {
- ctx.os << "#undef XSD_DONT_INCLUDE_INLINE" << endl
- << "#else" << endl
- << endl;
-
- schema.dispatch (ctx.schema_root);
-
- ctx.os << "#endif // XSD_DONT_INCLUDE_INLINE" << endl
- << endl;
- }
- }
-
-
- {
- Traversal::Schema schema;
-
- Sources sources;
- Traversal::Names names_ns, names;
-
- DocumentedNamespace ns (ctx);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
- GlobalElement element (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- if (ctx.options.generate_element_type ())
- names >> element;
-
- schema.dispatch (ctx.schema_root);
- }
-
- // Emit inline includes.
- //
- if (inline_)
- {
- ctx.os << "#ifndef XSD_DONT_INCLUDE_INLINE" << endl
- << endl;
-
- Traversal::Schema schema;
- Includes ixx_includes (ctx, Includes::inline_);
- schema >> ixx_includes;
-
- schema.dispatch (ctx.schema_root);
-
- ctx.os << "#endif // XSD_DONT_INCLUDE_INLINE" << endl
- << endl;
- }
- }
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/tree-header.hxx b/xsd/xsd/cxx/tree/tree-header.hxx
deleted file mode 100644
index 7c97364..0000000
--- a/xsd/xsd/cxx/tree/tree-header.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/tree-header.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_TREE_HEADER_HXX
-#define CXX_TREE_TREE_HEADER_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_tree_header (Context&);
- }
-}
-
-#endif // CXX_TREE_TREE_HEADER_HXX
diff --git a/xsd/xsd/cxx/tree/tree-inline.cxx b/xsd/xsd/cxx/tree/tree-inline.cxx
deleted file mode 100644
index 500ee73..0000000
--- a/xsd/xsd/cxx/tree/tree-inline.cxx
+++ /dev/null
@@ -1,1156 +0,0 @@
-// file : xsd/cxx/tree/tree-inline.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <cxx/tree/tree-inline.hxx>
-#include <cxx/tree/default-value.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String name (ename (l));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (l, name) && !name)
- return;
-
- SemanticGraph::Type& item_type (l.argumented ().type ());
- String item_name (item_type_name (item_type));
- String base_type (L"::xsd::cxx::tree::list< " + item_name +
- L", " + char_type);
-
- if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
- base_type += L", ::xsd::cxx::tree::schema_type::double_";
- else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
- base_type += L", ::xsd::cxx::tree::schema_type::decimal";
-
- base_type += L" >";
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- // c-tor ()
- //
- os << inl
- << name << "::" << endl
- << name << " ()" << endl
- << ": " << base_type << " (this)"
- << "{"
- << "}";
-
- // c-tor (size_type, const X& x)
- //
- String size_type (name != L"size_type"
- ? String (L"size_type")
- : base_type + L"::size_type");
-
- os << inl
- << name << "::" << endl
- << name << " (" << size_type << " n, const " << item_name <<
- "& x)" << endl
- << ": " << base_type << " (n, x, this)"
- << "{"
- << "}";
-
- // copy c-tor ()
- //
- os << inl
- << name << "::" << endl
- << name << " (const " << name << "& o," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << any_simple_type << " (o, f, c)," << endl
- << " " << base_type << " (o, f, this)"
- << "{"
- << "}";
-
- // Comparison operators.
- //
- if (options.generate_comparison ())
- {
- os << inl
- << "bool" << endl
- << "operator== (const " << name << "& x, " <<
- "const " << name << "& y)"
- << "{"
- << "const " << base_type << "& bx (x);"
- << "return bx == y;"
- << "}";
-
- os << inl
- << "bool" << endl
- << "operator!= (const " << name << "& x, " <<
- "const " << name << "& y)"
- << "{"
- << "return !(x == y);"
- << "}";
- }
- }
-
- private:
- String
- item_type_name (SemanticGraph::Type& t)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (t);
-
- return o.str ();
- }
- };
-
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String name (ename (u));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (u, name) && !name)
- return;
-
- String const& base (xs_string_type);
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- if (options.generate_default_ctor ())
- {
- // c-tor ()
- //
- os << inl
- << name << "::" << endl
- << name << " ()" << endl
- << ": " << base << " ()"
- << "{"
- << "}";
- }
-
- // c-tor (const char*)
- //
- os << inl
- << name << "::" << endl
- << name << " (const " << char_type << "* s)" << endl
- << ": " << base << " (s)"
- << "{"
- << "}";
-
- // c-tor (string const&)
- //
- os << inl
- << name << "::" << endl
- << name << " (const " << string_type << "& s)" << endl
- << ": " << base << " (s)"
- << "{"
- << "}";
-
- // copy c-tor ()
- //
- os << inl
- << name << "::" << endl
- << name << " (const " << name << "& o," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (o, f, c)"
- << "{"
- << "}";
- }
- };
-
- // Enumeration
- //
-
- // Generate a sequence of explicit c-tor calls until we reach
- // one of the fundamental string types that can be constructed
- // from char literals.
- //
- struct CtorCallSequence: Traversal::Complex,
- Traversal::Fundamental::Type,
- Context
- {
- CtorCallSequence (Context& c, String const& arg)
- : Context (c), arg_ (arg), base_type_name_ (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- // This type should be ultimately string based.
- //
- assert (c.inherits_p ());
-
- os << ename (c) << " (" << endl;
-
- dispatch (c.inherits ().base ());
-
- os << ")";
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Type& t)
- {
- base_type_name_.dispatch (t);
-
- os << " (" << arg_ << ")";
- }
-
- private:
- String arg_;
- BaseTypeName base_type_name_;
- };
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c), member_ (c)
- {
- inherits_member_ >> member_;
- }
-
- virtual void
- traverse (Type& e)
- {
- String name (ename (e));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- bool string_based (false);
- {
- IsStringBasedType t (string_based);
- t.dispatch (e);
- }
-
- bool enum_based (false);
- if (string_based)
- {
- SemanticGraph::Enumeration* be (0);
- IsEnumBasedType t (be);
- t.dispatch (e);
-
- enum_based = (be != 0);
- }
-
- String value;
- if (string_based)
- value = evalue (e);
-
- // Get to the ultimate base and see if is a fundamental type.
- //
- bool fund_based (false);
- SemanticGraph::Type& ult_base (ultimate_base (e));
- {
- IsFundamentalType t (fund_based);
- t.dispatch (ult_base);
- }
-
- //
- //
- String base; // base type name
- {
- std::wostringstream o;
-
- BaseTypeName base_type (*this, o);
- Traversal::Inherits inherits_type (base_type);
-
- inherits (e, inherits_type);
- base = o.str ();
- }
-
- os << "// " << name << endl
- << "// " << endl
- << endl;
-
- // default c-tor
- //
- if (options.generate_default_ctor ())
- {
- os << inl
- << name << "::" << endl
- << name << " ()" << endl
- << ": " << base << " ()"
- << "{"
- << "}";
- }
-
- // c-tor (value)
- //
- if (string_based)
- {
- os << inl
- << name << "::" << endl
- << name << " (" << value << " v)" << endl
- << ": ";
-
- // If we are enum-based then we can just use the corresponding
- // base c-tor directly. Otherwise we will use the from-string
- // c-tor.
- //
- if (enum_based)
- os << base << " (v)";
- else
- {
- CtorCallSequence t (*this, L"_xsd_" + name + L"_literals_[v]");
- t.dispatch (e.inherits ().base ());
- }
-
- os << "{"
- << "}";
- }
-
- // c-tor (const char*)
- //
- if (string_based)
- {
- os << inl
- << name << "::" << endl
- << name << " (const " << char_type << "* v)" << endl
- << ": " << base << " (v)"
- << "{"
- << "}";
- }
-
- // c-tor (const std::string&)
- //
- if (string_based)
- {
- os << inl
- << name << "::" << endl
- << name << " (const " << string_type << "& v)" << endl
- << ": " << base << " (v)"
- << "{"
- << "}";
- }
-
- // c-tor (fundamental)
- //
- if (fund_based)
- {
- os << inl
- << name << "::" << endl
- << name << " (";
-
- member_.dispatch (ult_base);
-
- os << " v)"
- << ": " << base << " (v)"
- << "{"
- << "}";
- }
-
- // c-tor (base)
- //
- // If the ultimate is also our immediate base and it is a
- // fundamental type then this c-tor clashes with c-tor
- // (fundamental) above.
- //
- if (!fund_based || &ult_base != &e.inherits ().base ())
- {
- os << inl
- << name << "::" << endl
- << name << " (const ";
-
- inherits (e, inherits_member_);
-
- os << "& v)" << endl
- << ": " << base << " (v)"
- << "{"
- << "}";
- }
-
- // copy c-tor
- //
- os << inl
- << name << "::" << endl
- << name << " (const " << name << "& v," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (v, f, c)"
- << "{"
- << "}";
-
- // operato= (value)
- //
- if (string_based)
- {
- os << inl
- << name << "& " << name << "::" << endl
- << "operator= (" << value << " v)"
- << "{"
- << "static_cast< " << base << "& > (*this) = ";
-
- // If we are enum-based then we can just use the corresponding
- // base assignment directly. Otherwise we will use the from-
- // base assignment and a from-string base c-tor.
- //
- if (enum_based)
- os << "v";
- else
- {
- os << endl;
-
- CtorCallSequence t (*this, L"_xsd_" + name + L"_literals_[v]");
- t.dispatch (e.inherits ().base ());
- }
-
- os << ";"
- << endl
- << "return *this;"
- << "}";
- }
-
- os << endl;
- }
-
- private:
- Traversal::Inherits inherits_member_;
- MemberTypeName member_;
- };
-
- struct Member: Traversal::Member, Context
- {
- Member (Context& c, String const& scope)
- : Context (c), scope_ (scope), lit_value_ (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- String const& aname (eaname (m));
- String const& mname (emname (m));
- String const& member (emember (m));
-
- bool fund (false);
- {
- IsFundamentalType t (fund);
- t.dispatch (m.type ());
- }
-
- bool def_attr (m.default_p () &&
- m.is_a<SemanticGraph::Attribute> ());
-
- if (max (m) != 1)
- {
- // sequence
- //
- String container (econtainer (m));
- String q_container (scope_ + L"::" + container);
-
- // container const&
- // name () const;
- //
- os << inl
- << "const " << q_container << "& " << scope_ << "::" << endl
- << aname << " () const"
- << "{"
- << "return this->" << member << ";"
- << "}";
-
- // container&
- // name ();
- //
- os << inl
- << q_container << "& " << scope_ << "::" << endl
- << aname << " ()"
- << "{"
- << "return this->" << member << ";"
- << "}";
-
- // void
- // name (container const&);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (const " << container << "& s)"
- << "{"
- << "this->" << member << " = s;"
- << "}";
- }
- else if (min (m) == 0 && !def_attr)
- {
- // optional
- //
- String type (etype (m));
- String container (econtainer (m));
- String q_container (scope_ + L"::" + container);
-
- // container const&
- // name () const;
- //
- os << inl
- << "const " << q_container << "& " << scope_ << "::" << endl
- << aname << " () const"
- << "{"
- << "return this->" << member << ";"
- << "}";
-
- // container&
- // name ();
- //
- os << inl
- << q_container << "& " << scope_ << "::" << endl
- << aname << " ()"
- << "{"
- << "return this->" << member << ";"
- << "}";
-
- // void
- // name (type const&);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (const " << type << "& x)"
- << "{"
- << "this->" << member << ".set (x);"
- << "}";
-
- // void
- // name (container const&);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (const " << container << "& x)"
- << "{"
- << "this->" << member << " = x;"
- << "}";
-
- // void
- // name (auto_ptr<type>);
- //
- if (!fund)
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (" << auto_ptr << "< " << type << " > x)"
- << "{"
- << "this->" << member << ".set (" <<
- (std >= cxx_version::cxx11 ? "std::move (x)" : "x") << ");"
- << "}";
- }
- else
- {
- // one
- //
- String type (etype (m));
- String q_type (scope_ + L"::" + type);
-
- // type const&
- // name () const;
- //
- os << inl
- << "const " << q_type << "& " << scope_ << "::" << endl
- << aname << " () const"
- << "{"
- << "return this->" << member << ".get ();"
- << "}";
-
- // Do not generate modifiers for fixed attributes.
- //
- if (!(def_attr && m.fixed_p ()))
- {
- // type&
- // name ();
- //
- os << inl
- << q_type << "& " << scope_ << "::" << endl
- << aname << " ()"
- << "{"
- << "return this->" << member << ".get ();"
- << "}";
-
- // void
- // name (type const&);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (const " << type << "& x)"
- << "{"
- << "this->" << member << ".set (x);"
- << "}";
-
- // void
- // name (auto_ptr<type>);
- //
- if (!fund)
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (" << auto_ptr << "< " << type << " > x)"
- << "{"
- << "this->" << member << ".set (" <<
- (std >= cxx_version::cxx11 ? "std::move (x)" : "x") << ");"
- << "}";
-
- // auto_ptr<type>
- // detach_name ();
- //
- if (detach && !fund)
- os << inl
- << auto_ptr << "< " << q_type << " > " <<
- scope_ << "::" << endl
- << edname (m) << " ()"
- << "{"
- << "return this->" << member << ".detach ();"
- << "}";
- }
- }
-
-
- // default_value
- //
- if (m.default_p ())
- {
- bool simple (true);
-
- if (m.is_a<SemanticGraph::Element> ())
- {
- IsSimpleType test (simple);
- test.dispatch (m.type ());
- }
-
- if (simple)
- {
- String lit (lit_value_.dispatch (m.type (), m.value ()));
-
- os << inl;
-
- if (lit)
- os << scope_ << "::" << etype (m) << " ";
- else
- os << "const " << scope_ << "::" << etype (m) << "& ";
-
- os << scope_ << "::" << endl
- << edefault_value (m) << " ()"
- << "{";
-
- if (lit)
- os << "return " << etype (m) << " (" << lit << ");";
- else
- os << "return " << edefault_value_member (m) << ";";
-
- os << "}";
- }
- }
- }
-
- private:
- String scope_;
- LiteralValue lit_value_;
- };
-
- struct Any: Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- Any (Context& c, String const& scope)
- : Context (c), scope_ (scope)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& aname (eaname (a));
- String const& mname (emname (a));
-
- String const& member (emember (a));
-
- if (max (a) != 1)
- {
- // sequence
- //
- String container (econtainer (a));
- String q_container (scope_ + L"::" + container);
-
- // container const&
- // name () const;
- //
- os << inl
- << "const " << q_container << "& " << scope_ << "::" << endl
- << aname << " () const"
- << "{"
- << "return this->" << member << ";"
- << "}";
-
- // container&
- // name ();
- //
- os << inl
- << q_container << "& " << scope_ << "::" << endl
- << aname << " ()"
- << "{"
- << "return this->" << member << ";"
- << "}";
-
- // void
- // name (container const&);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (const " << container << "& s)"
- << "{"
- << "this->" << member << " = s;"
- << "}";
- }
- else if (min (a) == 0)
- {
- // optional
- //
- String container (econtainer (a));
- String q_container (scope_ + L"::" + container);
-
- // container const&
- // name () const;
- //
- os << inl
- << "const " << q_container << "& " << scope_ << "::" << endl
- << aname << " () const"
- << "{"
- << "return this->" << member << ";"
- << "}";
-
- // container&
- // name ();
- //
- os << inl
- << q_container << "& " << scope_ << "::" << endl
- << aname << " ()"
- << "{"
- << "return this->" << member << ";"
- << "}";
-
- // void
- // name (type const&);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (const " << xerces_ns << "::DOMElement& e)"
- << "{"
- << "this->" << member << ".set (e);"
- << "}";
-
- // void
- // name (type*);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (" << xerces_ns << "::DOMElement* e)"
- << "{"
- << "this->" << member << ".set (e);"
- << "}";
-
- // void
- // name (container const&);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (const " << container << "& x)"
- << "{"
- << "this->" << member << " = x;"
- << "}";
- }
- else
- {
- // one
- //
-
- // type const&
- // name () const;
- //
- os << inl
- << "const " << xerces_ns << "::DOMElement& " <<
- scope_ << "::" << endl
- << aname << " () const"
- << "{"
- << "return this->" << member << ".get ();"
- << "}";
-
- // type&
- // name ();
- //
- os << inl
- << xerces_ns << "::DOMElement& " << scope_ << "::" << endl
- << aname << " ()"
- << "{"
- << "return this->" << member << ".get ();"
- << "}";
-
- // void
- // name (type const&);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (const " << xerces_ns << "::DOMElement& e)"
- << "{"
- << "this->" << member << ".set (e);"
- << "}";
-
- // void
- // name (type*);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (" << xerces_ns << "::DOMElement* e)"
- << "{"
- << "this->" << member << ".set (e);"
- << "}";
- }
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& aname (eaname (a));
- String const& mname (emname (a));
-
- String const& member (emember (a));
- String container (econtainer (a));
- String q_container (scope_ + L"::" + container);
-
- // container const&
- // name () const;
- //
- os << inl
- << "const " << q_container << "& " << scope_ << "::" << endl
- << aname << " () const"
- << "{"
- << "return this->" << member << ";"
- << "}";
-
- // container&
- // name ();
- //
- os << inl
- << q_container << "& " << scope_ << "::" << endl
- << aname << " ()"
- << "{"
- << "return this->" << member << ";"
- << "}";
-
- // void
- // name (container const&);
- //
- os << inl
- << "void " << scope_ << "::" << endl
- << mname << " (const " << container << "& s)"
- << "{"
- << "this->" << member << " = s;"
- << "}";
- }
-
- private:
- String scope_;
- };
-
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- String name (ename (c));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- os << "// " << name << endl
- << "// " << endl
- << endl;
-
- // Generate accessors and modifiers.
- //
- Any any (*this, name);
- Member member (*this, name);
- Traversal::Names names;
-
- if (options.generate_wildcard ())
- names >> any;
-
- names >> member;
-
- Complex::names (c, names);
-
- // Mixed text content.
- //
- if (mixed_p (c) && !c.context ().count ("mixed-in-base"))
- {
- SemanticGraph::Context& ctx (c.context ());
-
- String const& cont (ctx.get<String> ("mixed-container"));
- String const& memb (ctx.get<String> ("mixed-member"));
-
- String const& aname (ctx.get<String> ("mixed-aname"));
- String const& mname (ctx.get<String> ("mixed-mname"));
-
- os << inl
- << "const " << name << "::" << cont << "& " <<
- name << "::" << endl
- << aname << " () const"
- << "{"
- << "return this->" << memb << ";"
- << "}";
-
- os << inl
- << name << "::" << cont << "& " << name << "::" << endl
- << aname << " ()"
- << "{"
- << "return this->" << memb << ";"
- << "}";
-
- os << inl
- << "void " << name << "::" << endl
- << mname << " (const " << cont << "& s)"
- << "{"
- << "this->" << memb << " = s;"
- << "}";
- }
-
- // dom_document accessors.
- //
- if (edom_document_member_p (c))
- {
- os << inl
- << "const " << xerces_ns << "::DOMDocument& " <<
- name << "::" << endl
- << edom_document (c) << " () const"
- << "{"
- << "return *this->" << edom_document_member (c) << ";"
- << "}";
-
- os << inl
- << xerces_ns << "::DOMDocument& " << name << "::" << endl
- << edom_document (c) << " ()"
- << "{"
- << "return *this->" << edom_document_member (c) << ";"
- << "}";
- }
-
- // Order container.
- //
- if (ordered_p (c) && !c.context ().count ("order-in-base"))
- {
- SemanticGraph::Context& ctx (c.context ());
-
- String const& cont (ctx.get<String> ("order-container"));
- String const& memb (ctx.get<String> ("order-member"));
-
- String const& aname (ctx.get<String> ("order-aname"));
- String const& mname (ctx.get<String> ("order-mname"));
-
- os << inl
- << "const " << name << "::" << cont << "& " <<
- name << "::" << endl
- << aname << " () const"
- << "{"
- << "return this->" << memb << ";"
- << "}";
-
- os << inl
- << name << "::" << cont << "& " << name << "::" << endl
- << aname << " ()"
- << "{"
- << "return this->" << memb << ";"
- << "}";
-
- os << inl
- << "void " << name << "::" << endl
- << mname << " (const " << cont << "& s)"
- << "{"
- << "this->" << memb << " = s;"
- << "}";
- }
-
- os << endl;
- }
- };
-
-
- struct GlobalElement: Traversal::Element,
- GlobalElementBase,
- Context
- {
- GlobalElement (Context& c)
- : GlobalElementBase (c), Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (!doc_root_p (e))
- return;
-
- bool fund (false);
- {
- IsFundamentalType test (fund);
- test.dispatch (e.type ());
- }
-
- String const& name (ename (e));
-
- os << "// " << name << endl
- << "// " << endl
- << endl;
-
- // Accessors/modifiers.
- //
- String const& type (etype (e));
- String const& aname (eaname (e));
- String const& mname (emname (e));
- String const& member (emember (e));
-
- // type const&
- // name () const;
- //
- os << inl
- << "const " << name << "::" << type << "& " << name << "::" << endl
- << aname << " () const"
- << "{"
- << "return this->" << member << ".get ();"
- << "}";
-
- // type&
- // name ();
- //
- os << inl
- << name << "::" << type << "& " << name << "::" << endl
- << aname << " ()"
- << "{"
- << "return this->" << member << ".get ();"
- << "}";
-
- // void
- // name (type const&);
- //
- os << inl
- << "void " << name << "::" << endl
- << mname << " (const " << type << "& x)"
- << "{"
- << "this->" << member << ".set (x);"
- << "}";
-
- // void
- // name (auto_ptr<type>);
- //
- if (!fund)
- {
- os << inl
- << "void " << name << "::" << endl
- << mname << " (" << auto_ptr << "< " << type << " > x)"
- << "{"
- << "this->" << member << ".set (" <<
- (std >= cxx_version::cxx11 ? "std::move (x)" : "x") << ");"
- << "}";
- }
-
- // auto_ptr<type>
- // detach_name ();
- //
- if (detach && !fund)
- os << inl
- << auto_ptr << "< " << name << "::" << type << " > " <<
- name << "::" << endl
- << edname (e) << " ()"
- << "{"
- << "return this->" << member << ".detach ();"
- << "}";
- }
- };
- }
-
- void
- generate_tree_inline (Context& ctx, size_t first, size_t last)
- {
- // Generate includes.
- //
- if (ctx.options.generate_inline ())
- {
- Traversal::Schema schema;
- Includes includes (ctx, Includes::inline_);
-
- schema >> includes;
-
- schema.dispatch (ctx.schema_root);
- }
- else
- {
- // Emit "weak" header includes that are used in the file-per-type
- // compilation model.
- //
- Traversal::Schema schema;
- Includes includes (ctx, Includes::source);
-
- schema >> includes;
-
- schema.dispatch (ctx.schema_root);
- }
-
- Traversal::Schema schema;
- Sources sources;
- Traversal::Names names_ns, names;
- Namespace ns (ctx, first, last);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
- GlobalElement element (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
-
- if (ctx.options.generate_element_type ())
- names >> element;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/tree-inline.hxx b/xsd/xsd/cxx/tree/tree-inline.hxx
deleted file mode 100644
index 351ab38..0000000
--- a/xsd/xsd/cxx/tree/tree-inline.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/tree-inline.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_TREE_INLINE_HXX
-#define CXX_TREE_TREE_INLINE_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_tree_inline (Context&, size_t first, size_t last);
- }
-}
-
-#endif // CXX_TREE_TREE_INLINE_HXX
diff --git a/xsd/xsd/cxx/tree/tree-source.cxx b/xsd/xsd/cxx/tree/tree-source.cxx
deleted file mode 100644
index 8a01c5a..0000000
--- a/xsd/xsd/cxx/tree/tree-source.cxx
+++ /dev/null
@@ -1,3880 +0,0 @@
-// file : xsd/cxx/tree/tree-source.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <map>
-#include <list>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <cxx/tree/tree-source.hxx>
-#include <cxx/tree/default-value.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- struct List: Traversal::List, Context
- {
- List (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& l)
- {
- String name (ename (l));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (l, name) && !name)
- return;
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- if (!options.suppress_parsing ())
- {
- SemanticGraph::Type& item_type (l.argumented ().type ());
- String base (L"::xsd::cxx::tree::list< " +
- item_type_name (item_type) + L", " + char_type);
-
- if (item_type.is_a<SemanticGraph::Fundamental::Double> ())
- base += L", ::xsd::cxx::tree::schema_type::double_";
- else if (item_type.is_a<SemanticGraph::Fundamental::Decimal> ())
- base += L", ::xsd::cxx::tree::schema_type::decimal";
-
- base += L" >";
-
- // c-tor (xercesc::DOMElement)
- //
- os << name << "::" << endl
- << name << " (const " << xerces_ns << "::DOMElement& e," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << any_simple_type << " (e, f, c)," << endl
- << " " << base << " (e, f, this)"
- << "{"
- << "}";
-
- // c-tor (xercesc::DOMAttr)
- //
- os << name << "::" << endl
- << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << any_simple_type << " (a, f, c)," << endl
- << " " << base << " (a, f, this)"
- << "{"
- << "}";
-
- // c-tor (string const&, xercesc::DOMElement)
- //
- os << name << "::" << endl
- << name << " (const " << string_type << "& s," << endl
- << "const " << xerces_ns << "::DOMElement* e," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << any_simple_type << " (s, e, f, c)," << endl
- << " " << base << " (s, e, f, this)"
- << "{"
- << "}";
- }
-
- // _clone
- //
- os << name << "* " << name << "::" << endl
- << "_clone (" << flags_type << " f," << endl
- << container << "* c) const"
- << "{"
- << "return new class " << name << " (*this, f, c);"
- << "}";
-
- // d-tor
- //
- os << name << "::" << endl
- << "~" << name << " ()"
- << "{"
- << "}";
-
- // Register with type factory map.
- //
- if (polymorphic && polymorphic_p (l))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (l));
-
- // If this type is anonymous but substitutes, then it will
- // be registered as part of the substitution registration.
- //
- if (!anonymous_p (l) && !options.suppress_parsing ())
- {
- os << "static" << endl
- << "const ::xsd::cxx::tree::type_factory_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_type_factory_init (" << endl
- << strlit (l.name ()) << "," << endl
- << strlit (xml_ns_name (l)) << ");"
- << endl;
- }
-
- if ((!anonymous_p (l) || anonymous_substitutes_p (l)) &&
- options.generate_comparison ())
- {
- os << "static" << endl
- << "const ::xsd::cxx::tree::comparison_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_comparison_init;"
- << endl;
- }
- }
- }
-
- private:
- String
- item_type_name (SemanticGraph::Type& t)
- {
- std::wostringstream o;
-
- MemberTypeName type (*this, o);
- type.dispatch (t);
-
- return o.str ();
- }
- };
-
-
- struct Union: Traversal::Union, Context
- {
- Union (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& u)
- {
- String name (ename (u));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (u, name) && !name)
- return;
-
- String const& base (xs_string_type);
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- if (!options.suppress_parsing ())
- {
- // c-tor (xercesc::DOMElement)
- //
- os << name << "::" << endl
- << name << " (const " << xerces_ns << "::DOMElement& e," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (e, f, c)"
- << "{"
- << "}";
-
- // c-tor (xercesc::DOMAttr)
- //
- os << name << "::" << endl
- << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (a, f, c)"
- << "{"
- << "}";
-
- // c-tor (string const&, xercesc::DOMElement)
- //
- os << name << "::" << endl
- << name << " (const " << string_type << "& s," << endl
- << "const " << xerces_ns << "::DOMElement* e," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (s, e, f, c)"
- << "{"
- << "}";
- }
-
- // _clone
- //
- os << name << "* " << name << "::" << endl
- << "_clone (" << flags_type << " f," << endl
- << container << "* c) const"
- << "{"
- << "return new class " << name << " (*this, f, c);"
- << "}";
-
- // Register with type factory map.
- //
- if (polymorphic && polymorphic_p (u))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (u));
-
- // If this type is anonymous but substitutes, then it will
- // be registered as part of the substitution registration.
- //
- if (!anonymous_p (u) && !options.suppress_parsing ())
- {
- os << "static" << endl
- << "const ::xsd::cxx::tree::type_factory_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_type_factory_init (" << endl
- << strlit (u.name ()) << "," << endl
- << strlit (xml_ns_name (u)) << ");"
- << endl;
- }
-
- if ((!anonymous_p (u) || anonymous_substitutes_p (u)) &&
- options.generate_comparison ())
- {
- os << "static" << endl
- << "const ::xsd::cxx::tree::comparison_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_comparison_init;"
- << endl;
- }
- }
- }
- };
-
-
- // Enumeration mapping.
- //
-
- struct EnumeratorLiteral: Traversal::Enumerator, Context
- {
- EnumeratorLiteral (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- os << strlit (e.name ());
- }
- };
-
-
- //
- //
- struct LiteralInfo
- {
- LiteralInfo (String const& value, String const& name)
- : value_ (value), name_ (name)
- {
- }
-
- String value_;
- String name_;
- };
-
- bool
- operator< (LiteralInfo const& x, LiteralInfo const& y)
- {
- return x.value_ < y.value_;
- }
-
- typedef list<LiteralInfo> LiteralInfoList;
-
-
- // Populate LiteralInfoList
- //
- struct EnumeratorLiteralInfo: Traversal::Enumerator, Context
-
- {
- EnumeratorLiteralInfo (Context& c, LiteralInfoList& list)
- : Context (c), list_ (list)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- list_.push_back (LiteralInfo (e.name (), ename (e)));
- }
-
- private:
- LiteralInfoList& list_;
- };
-
-
- struct Enumeration: Traversal::Enumeration, Context
- {
- Enumeration (Context& c)
- : Context (c), enumerator_literal_ (c)
- {
- names_enumerator_literal_ >> enumerator_literal_;
- }
-
- virtual void
- traverse (Type& e)
- {
- String name (ename (e));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (e, name) && !name)
- return;
-
- bool string_based (false);
- {
- IsStringBasedType t (string_based);
- t.dispatch (e);
- }
-
- SemanticGraph::Enumeration* be (0);
- bool enum_based (false);
- if (string_based)
- {
- IsEnumBasedType t (be);
- t.dispatch (e);
-
- enum_based = (be != 0);
- }
-
- String value;
- if (string_based)
- value = evalue (e);
-
- size_t enum_count (0);
-
- for (Type::NamesIterator i (e.names_begin ()), end (e.names_end ());
- i != end; ++i)
- ++enum_count;
-
- String base; // base type name
- {
- std::wostringstream o;
-
- BaseTypeName base_type (*this, o);
- Traversal::Inherits inherits_type (base_type);
-
- inherits (e, inherits_type);
- base = o.str ();
- }
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- if (!options.suppress_parsing ())
- {
- // c-tor (xercesc::DOMElement)
- //
- os << name << "::" << endl
- << name << " (const " << xerces_ns << "::DOMElement& e," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (e, f, c)"
- << "{";
-
- if (string_based)
- os << "_xsd_" << name << "_convert ();";
-
- os << "}";
-
-
- // c-tor (xercesc::DOMAttr)
- //
- os << name << "::" << endl
- << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (a, f, c)"
- << "{";
-
- if (string_based)
- {
- os << "_xsd_" << name << "_convert ();";
- }
-
- os << "}";
-
-
- // c-tor (string const&, xercesc::DOMElement)
- //
- os << name << "::" << endl
- << name << " (const " << string_type << "& s," << endl
- << "const " << xerces_ns << "::DOMElement* e," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (s, e, f, c)"
- << "{";
-
- if (string_based)
- {
- os << "_xsd_" << name << "_convert ();";
- }
-
- os << "}";
- }
-
- // _clone
- //
- os << name << "* " << name << "::" << endl
- << "_clone (" << flags_type << " f," << endl
- << container << "* c) const"
- << "{"
- << "return new class " << name << " (*this, f, c);"
- << "}";
-
- // convert
- //
- // @@ TODO: expected list
- //
- if (string_based)
- {
- String i_name (L"_xsd_" + name + L"_indexes_");
-
- os << name << "::" << value << " " <<
- name << "::" << endl
- << "_xsd_" << name << "_convert () const"
- << "{"
- << "::xsd::cxx::tree::enum_comparator< " << char_type <<
- " > c (_xsd_" << name << "_literals_);"
- << "const " << value << "* i (::std::lower_bound (" << endl
- << i_name << "," << endl
- << i_name << " + " << enum_count << "," << endl
- << "*this," << endl
- << "c));"
- << endl
- << "if (i == " << i_name << " + " << enum_count << " || " <<
- "_xsd_" << name << "_literals_[*i] != *this)"
- << "{"
- << "throw ::xsd::cxx::tree::unexpected_enumerator < " <<
- char_type << " > (*this);"
- << "}"
- << "return *i;"
- << "}";
- }
-
- // literals and indexes
- //
- if (string_based)
- {
- if (enum_based)
- {
- os << "const " << char_type << "* const* " << name << "::" << endl
- << "_xsd_" << name << "_literals_ = " <<
- fq_name (*be) << "::_xsd_" << ename (*be) << "_literals_;"
- << endl;
- }
- else
- {
- os << "const " << char_type << "* const " << name << "::" << endl
- << "_xsd_" << name << "_literals_[" << enum_count << "] ="
- << "{";
-
- names<Enumeration> (
- e, names_enumerator_literal_, 0, 0, 0, &Enumeration::comma);
-
- os << "};";
- }
-
-
- LiteralInfoList l;
- {
- EnumeratorLiteralInfo enumerator (*this, l);
- Traversal::Names names_enumerator (enumerator);
- names (e, names_enumerator);
- }
-
- l.sort ();
-
- os << "const " << name << "::" << value << " " <<
- name << "::" << endl
- << "_xsd_" << name << "_indexes_[" << enum_count << "] ="
- << "{";
-
- String fq_name (ns_scope + L"::" + name);
-
- for (LiteralInfoList::iterator
- b (l.begin ()), i (b), end (l.end ()); i != end; ++i)
- {
- if (i != b)
- os << "," << endl;
-
- os << fq_name << "::" << i->name_;
- }
-
- os << "};";
- }
-
- // Register with type factory map.
- //
- if (polymorphic && polymorphic_p (e))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (e));
-
- // If this type is anonymous but substitutes, then it will
- // be registered as part of the substitution registration.
- //
- if (!anonymous_p (e) && !options.suppress_parsing ())
- {
- os << "static" << endl
- << "const ::xsd::cxx::tree::type_factory_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_type_factory_init (" << endl
- << strlit (e.name ()) << "," << endl
- << strlit (xml_ns_name (e)) << ");"
- << endl;
- }
-
- if ((!anonymous_p (e) || anonymous_substitutes_p (e)) &&
- options.generate_comparison ())
- {
- os << "static" << endl
- << "const ::xsd::cxx::tree::comparison_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_comparison_init;"
- << endl;
- }
- }
- }
-
- virtual void
- comma (Type&)
- {
- os << "," << endl;
- }
-
- private:
- Traversal::Names names_enumerator_literal_;
- EnumeratorLiteral enumerator_literal_;
-
- };
-
- //
- //
- struct Member: Traversal::Member, Context
- {
- Member (Context& c, String const& scope)
- : Context (c), scope_ (scope), init_value_ (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- // default_value
- //
- if (m.default_p ())
- {
- SemanticGraph::Type& t (m.type ());
- bool simple (true);
-
- if (m.is_a<SemanticGraph::Element> ())
- {
- IsSimpleType test (simple);
- test.dispatch (t);
- }
-
- if (simple)
- {
- bool lit (false);
- {
- IsLiteralValue test (lit);
- test.dispatch (t);
- }
-
- if (!lit)
- {
- InitKind::Kind kind (InitKind::simple);
- {
- InitKind test (kind);
- test.dispatch (t);
- }
-
- String const& member (edefault_value_member (m));
-
- String init_name;
-
- switch (kind)
- {
- case InitKind::data:
- {
- init_name = escape (L"_xsd_" + scope_ + member + L"data");
- init_value_.data (init_name);
- init_value_.dispatch (t, m.value ());
- break;
- }
- case InitKind::function:
- {
- init_name = escape (L"_xsd_" + scope_ + member + L"init");
-
- os << "static " << scope_ << "::" << etype (m) << endl
- << init_name << " ()"
- << "{"
- << scope_ << "::" << etype (m) << " r;"
- << endl;
-
- init_value_.dispatch (t, m.value ());
-
- os << "return r;"
- << "};";
- break;
- }
- case InitKind::simple:
- break;
- }
-
- os << "const " << scope_ << "::" << etype (m) << " " <<
- scope_ << "::" << member << " (" << endl;
-
- switch (kind)
- {
- case InitKind::data:
- {
- // Second dispatch.
- //
- init_value_.dispatch (t, m.value ());
- break;
- }
- case InitKind::function:
- {
- os << init_name << " ()";
- break;
- }
- case InitKind::simple:
- {
- init_value_.dispatch (t, m.value ());
- break;
- }
- }
-
- os << ");"
- << endl;
- }
- }
- }
- }
-
- private:
- String scope_;
- InitValue init_value_;
- };
-
-
- struct Element: Traversal::Element, Context
- {
- Element (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (skip (e))
- return;
-
- SemanticGraph::Complex& c (
- dynamic_cast<SemanticGraph::Complex&> (e.scope ()));
-
- String const& member (emember (e));
-
- String tr (etraits (e)); // traits type name
- String type (etype (e));
-
- SemanticGraph::Type& t (e.type ());
-
- bool fund (false);
- {
- IsFundamentalType traverser (fund);
- traverser.dispatch (t);
- }
-
- // Check if we need to handle xsi:type and substitution groups.
- // If this element's type is anonymous then we don't need to do
- // anything. Note that if the type is anonymous then it can't be
- // derived from which makes it impossible to substitute or
- // dynamically-type with xsi:type.
- //
- bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
-
- os << "// " << comment (e.name ()) << endl
- << "//" << endl;
-
- if (poly)
- {
- os << "{"
- << auto_ptr << "< ::xsd::cxx::tree::type > tmp (" << endl
- << "::xsd::cxx::tree::type_factory_map_instance< " <<
- poly_plate << ", " << char_type << " > ().create (" << endl
- << strlit (e.name ()) << "," << endl
- << (e.qualified_p ()
- ? strlit (e.namespace_ ().name ())
- : L + String ("\"\"")) << "," << endl
- << "&::xsd::cxx::tree::factory_impl< " << type << " >," << endl
- << (e.global_p () ? "true" : "false") << ", " <<
- (e.qualified_p () ? "true" : "false") << ", " <<
- "i, n, f, this));"
- << endl
- << "if (tmp.get () != 0)"
- << "{";
- }
- else
- {
- if (e.qualified_p () && e.namespace_ ().name ())
- {
- os << "if (n.name () == " << strlit (e.name ()) << " && " <<
- "n.namespace_ () == " << strlit (e.namespace_ ().name ()) << ")"
- << "{";
- }
- else
- {
- os << "if (n.name () == " << strlit (e.name ()) << " && " <<
- "n.namespace_ ().empty ())"
- << "{";
- }
-
- if (!fund)
- {
- os << auto_ptr << "< " << type << " > r (" << endl
- << tr << "::create (i, f";
-
- if (t.is_a<SemanticGraph::AnyType> () &&
- options.generate_any_type ())
- os << " | " << flags_type << "::extract_content";
-
- os << ", this));"
- << endl;
- }
- }
-
-
- // Checks. Disabled at the moment since they make it impossible to
- // parse valid instances where the same element is used in both
- // base and derived types. See the cxx/tree/name-clash/inheritance
- // test for details.
- //
- //
- if (max (e) != 1)
- {
- // sequence
- //
- }
- else if (min (e) == 0)
- {
- // optional
- //
- os << "if (!this->" << member << ")"
- << "{";
- }
- else
- {
- // one
- //
- os << "if (!" << member << ".present ())"
- << "{";
- }
-
-
- if (poly || !fund)
- {
- if (poly)
- {
- // Cast to static type.
- //
- os << auto_ptr << "< " << type << " > r (" << endl
- << "dynamic_cast< " << type << "* > (tmp.get ()));"
- << endl
- << "if (r.get ())" << endl
- << "tmp.release ();"
- << "else" << endl
- << "throw ::xsd::cxx::tree::not_derived< " << char_type <<
- " > ();"
- << endl;
- }
-
- char const* r (std >= cxx_version::cxx11 ? "::std::move (r)" : "r");
-
- if (max (e) != 1)
- {
- // sequence
- //
- os << "this->" << member << ".push_back (" << r << ");";
- }
- else if (min (e) == 0)
- {
- // optional
- //
- os << "this->" << member << ".set (" << r << ");";
- }
- else
- {
- // one
- //
- os << "this->" << member << ".set (" << r << ");";
- }
- }
- else
- {
- if (max (e) != 1)
- {
- // sequence
- //
- os << "this->" << member << ".push_back (" << tr <<
- "::create (i, f, this));";
- }
- else if (min (e) == 0)
- {
- // optional
- //
- os << "this->" << member << ".set (" << tr <<
- "::create (i, f, this));";
- }
- else
- {
- // one
- //
- os << "this->" << member << ".set (" << tr <<
- "::create (i, f, this));";
- }
- }
-
- // Capture order.
- //
- if (ordered_p (c))
- {
- SemanticGraph::Context& ctx (c.context ());
-
- String const& t (ctx.get<String> ("order-type"));
- String const& m (ctx.get<String> ("order-member"));
-
- os << "this->" << m << ".push_back (" << endl
- << t << " (" <<
- e.context ().get<String> ("ordered-id-name");
-
- // sequence
- //
- if (max (e) != 1)
- os << ", " << "this->" << member << ".size () - 1";
-
- os << "));";
- }
-
- os << "continue;";
-
- // End of check block.
- //
- if (max (e) != 1)
- {
- // sequence
- //
- }
- else if (min (e) == 0)
- {
- // optional
- //
- os << "}";
- }
- else
- {
- // one
- //
- os << "}";
- }
-
- os << "}"; // if block
-
- if (poly)
- os << "}";
- }
- };
-
- struct ElementTest: Traversal::Element, Context
- {
- ElementTest (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& e)
- {
- if (skip (e))
- return;
-
- if (max (e) == 1 && min (e) == 1)
- {
- // one
- //
- os << "if (!" << emember (e) << ".present ())"
- << "{"
- << "throw ::xsd::cxx::tree::expected_element< " <<
- char_type << " > (" << endl
- << strlit (e.name ()) << "," << endl
- << (e.qualified_p ()
- ? strlit (e.namespace_ ().name ())
- : L + String ("\"\"")) << ");"
- << "}";
- }
- }
- };
-
- struct Any: Traversal::Any, Context
- {
- Any (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& member (emember (a));
-
- SemanticGraph::Complex& c (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ()));
-
- String const& ns (a.definition_namespace ().name ());
- String const& dom_doc (edom_document (c));
-
- os << "// " << ename (a) << endl
- << "//" << endl
- << "if (";
-
- for (SemanticGraph::Any::NamespaceIterator i (a.namespace_begin ()),
- e (a.namespace_end ()); i != e;)
- {
- if (*i == L"##any")
- {
- os << "true";
- }
- else if (*i == L"##other")
- {
- if (ns)
- {
- // Note that here I assume that ##other does not include
- // unqualified names in a schema with target namespace.
- // This is not what the spec says but that seems to be
- // the consensus.
- //
- os << "(!n.namespace_ ().empty () && " <<
- "n.namespace_ () != " << strlit (ns) << ")";
- }
- else
- os << "!n.namespace_ ().empty ()";
- }
- else if (*i == L"##local")
- {
- os << "n.namespace_ ().empty ()";
- }
- else if (*i == L"##targetNamespace")
- {
- os << "n.namespace_ () == " << strlit (ns);
- }
- else
- {
- os << "n.namespace_ () == " << strlit (*i);
- }
-
- if (++i != e)
- os << " ||" << endl;
- }
-
- os << ")"
- << "{";
-
-
- // Checks.
- //
- //
- if (max (a) != 1)
- {
- // sequence
- //
- }
- else if (min (a) == 0)
- {
- // optional
- //
- os << "if (!this->" << member << ")"
- << "{";
- }
- else
- {
- // one
- //
- os << "if (!" << member << ".present ())"
- << "{";
- }
-
- os << xerces_ns << "::DOMElement* r (" << endl
- << "static_cast< " << xerces_ns << "::DOMElement* > (" << endl
- << "this->" << dom_doc << " ().importNode (" << endl
- << "const_cast< " << xerces_ns << "::DOMElement* > (&i), true)));";
-
- if (max (a) != 1)
- {
- // sequence
- //
- os << "this->" << member << ".push_back (r);";
- }
- else if (min (a) == 0)
- {
- // optional
- //
- os << "this->" << member << ".set (r);";
- }
- else
- {
- // one
- //
- os << "this->" << member << ".set (r);";
- }
-
- // Capture order.
- //
- if (ordered_p (c))
- {
- SemanticGraph::Context& ctx (c.context ());
-
- String const& t (ctx.get<String> ("order-type"));
- String const& m (ctx.get<String> ("order-member"));
-
- os << "this->" << m << ".push_back (" << endl
- << t << " (" <<
- a.context ().get<String> ("ordered-id-name") << ", ";
-
- if (max (a) != 1)
- // sequence
- //
- os << "this->" << member << ".size () - 1";
- else
- // optional & one
- //
- os << "0";
-
- os << "));";
- }
-
- os << "continue;";
-
- // End of check block.
- //
- if (max (a) != 1)
- {
- // sequence
- //
- }
- else if (min (a) == 0)
- {
- // optional
- //
- os << "}";
- }
- else
- {
- // one
- //
- os << "}";
- }
-
- os << "}"; // if block
- }
- };
-
- struct AnyTest: Traversal::Any, Context
- {
- AnyTest (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- if (max (a) == 1 && min (a) == 1)
- {
- // one
- //
- os << "if (!" << emember (a) << ".present ())"
- << "{"
- << "throw ::xsd::cxx::tree::expected_element< " <<
- char_type << " > (" << endl
- << L << "\"*\"," << endl
- << strlit (*a.namespace_begin ()) << ");"
- << "}";
- }
- }
- };
-
- struct Attribute: Traversal::Attribute, Context
- {
- Attribute (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& member (emember (a));
-
- String const& tr (etraits (a)); // traits type name
-
- if (a.qualified_p () && a.namespace_ ().name ())
- {
- os << "if (n.name () == " << strlit (a.name ()) << " && " <<
- "n.namespace_ () == " << strlit (a.namespace_ ().name ()) << ")"
- << "{";
- }
- else
- {
- os << "if (n.name () == " << strlit (a.name ()) << " && " <<
- "n.namespace_ ().empty ())"
- << "{";
- }
-
- os << "this->" << member << ".set (" << tr <<
- "::create (i, f, this));";
-
- os << "continue;"
- << "}";
-
- }
- };
-
- struct AnyAttribute: Traversal::AnyAttribute, Context
- {
- AnyAttribute (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& member (emember (a));
-
- String const& ns (a.definition_namespace ().name ());
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- os << "// " << ename (a) << endl
- << "//" << endl
- << "if (";
-
- // Note that we need to filter out namespaces for xmlns and
- // xsi.
- //
- for (SemanticGraph::Any::NamespaceIterator i (a.namespace_begin ()),
- e (a.namespace_end ()); i != e;)
- {
- if (*i == L"##any")
- {
- os << "(n.namespace_ () != " <<
- "::xsd::cxx::xml::bits::xmlns_namespace< " << char_type <<
- " > () &&" << endl
- << "n.namespace_ () != " <<
- "::xsd::cxx::xml::bits::xsi_namespace< " << char_type <<
- " > ())";
- }
- else if (*i == L"##other")
- {
- if (ns)
- {
- // Note that here I assume that ##other does not include
- // unqualified names in a schema with target namespace.
- // This is not what the spec says but that seems to be
- // the consensus.
- //
- os << "(!n.namespace_ ().empty () &&" << endl
- << "n.namespace_ () != " << strlit (ns) << " &&" <<endl
- << "n.namespace_ () != " <<
- "::xsd::cxx::xml::bits::xmlns_namespace< " << char_type <<
- " > () &&" << endl
- << "n.namespace_ () != " <<
- "::xsd::cxx::xml::bits::xsi_namespace< " << char_type <<
- " > ())";
- }
- else
- os << "(!n.namespace_ ().empty () &&" << endl
- << "n.namespace_ () != " <<
- "::xsd::cxx::xml::bits::xmlns_namespace< " << char_type <<
- " > () &&" << endl
- << "n.namespace_ () != " <<
- "::xsd::cxx::xml::bits::xsi_namespace< " << char_type <<
- " > ())";
- }
- else if (*i == L"##local")
- {
- os << "n.namespace_ ().empty ()";
- }
- else if (*i == L"##targetNamespace")
- {
- os << "n.namespace_ () == " << strlit (ns);
- }
- else
- {
- os << "n.namespace_ () == " << strlit (*i);
- }
-
- if (++i != e)
- os << " ||" << endl;
- }
-
- os << ")"
- << "{"
- << xerces_ns << "::DOMAttr* r (" << endl
- << "static_cast< " << xerces_ns << "::DOMAttr* > (" << endl
- << "this->" << dom_doc << " ().importNode (" << endl
- << "const_cast< " << xerces_ns << "::DOMAttr* > (&i), true)));"
- << "this->" << member << " .insert (r);"
- << "continue;"
- << "}";
- }
- };
-
-
- struct AttributeTest: Traversal::Attribute, Context
- {
- AttributeTest (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& a)
- {
- String const& member (emember (a));
-
- if (!a.optional_p () || a.default_p ())
- {
- os << "if (!" << member << ".present ())"
- << "{";
-
- if (a.default_p ())
- {
- os << "this->" << member << ".set (" <<
- edefault_value (a) << " ());";
- }
- else
- os << "throw ::xsd::cxx::tree::expected_attribute< " <<
- char_type << " > (" << endl
- << strlit (a.name ()) << "," << endl
- << (a.qualified_p ()
- ? strlit (a.namespace_ ().name ())
- : L + String ("\"\"")) << ");";
-
- os << "}";
- }
- }
- };
-
-
- //
- //
- struct CtorBase: Traversal::Complex,
- Traversal::Enumeration,
- Traversal::Type,
- Context
- {
- // If base_arg is empty then no base argument is generated.
- //
- CtorBase (Context& c, CtorArgType at, String const& base_arg)
- : Context (c), args_ (c, at, base_arg)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type&)
- {
- if (args_.base_arg_)
- os << args_.base_arg_;
- }
-
- virtual void
- traverse (SemanticGraph::Enumeration&)
- {
- if (args_.base_arg_)
- os << args_.base_arg_;
- }
-
- void
- traverse (SemanticGraph::Complex& c)
- {
- args_.traverse (c);
- }
-
- private:
- // No need to traverse AnyAttribute since it is always mapped
- // to a sequence.
- //
- struct Args: Traversal::Complex,
- Traversal::Enumeration,
- Traversal::Type,
- Traversal::Any,
- Traversal::Element,
- Traversal::Attribute,
- Context
- {
- Args (Context& c, CtorArgType at, String const& base_arg)
- : Context (c),
- arg_type_ (at), base_arg_ (base_arg), first_ (true)
- {
- *this >> inherits_ >> *this;
- *this >> names_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::Type&)
- {
- if (base_arg_)
- os << comma () << base_arg_;
- }
-
- virtual void
- traverse (SemanticGraph::Enumeration&)
- {
- if (base_arg_)
- os << comma () << base_arg_;
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- if (!options.generate_wildcard ())
- return;
-
- if (min (a) == 1 && max (a) == 1)
- {
- // one
- //
- os << comma () << ename (a);
- }
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (!skip (e) && min (e) == 1 && max (e) == 1)
- {
- // one
- //
- bool move (false);
-
- if (std >= cxx_version::cxx11)
- {
- switch (arg_type_)
- {
- case CtorArgType::complex_auto_ptr:
- {
- bool simple (true);
- IsSimpleType t (simple);
- t.dispatch (e.type ());
- move = !simple;
- break;
- }
- case CtorArgType::poly_auto_ptr:
- {
- move = polymorphic && polymorphic_p (e.type ());
- break;
- }
- case CtorArgType::type:
- break;
- }
- }
-
- os << comma () << (move ? "std::move (" : "") << ename (e) <<
- (move ? ")" : "");
- }
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- // Note that we are not including attributes with default
- // or required fixed values here.
- //
- if (min (a) == 1 && !a.fixed_p ())
- {
- // one
- //
- os << comma () << ename (a);
- }
- }
-
- using Complex::traverse;
-
- private:
- String
- comma ()
- {
- bool tmp (first_);
- first_ = false;
- return tmp ? "" : ",\n";
- }
-
- public:
- CtorArgType arg_type_;
- String base_arg_;
-
- private:
- bool first_;
-
- Traversal::Inherits inherits_;
- Traversal::Names names_;
- };
-
- Args args_;
- };
-
-
- struct CtorMember: Traversal::Element,
- Traversal::Attribute,
- Context
- {
- CtorMember (Context& c, CtorArgType at)
- : Context (c), arg_type_ (at)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (skip (e))
- return;
-
- String const& member (emember (e));
-
- if (max (e) != 1)
- {
- // sequence
- //
- os << "," << endl
- << " " << member << " (this)";
- }
- else if (min (e) == 0)
- {
- // optional
- //
- os << "," << endl
- << " " << member << " (this)";
- }
- else
- {
- // one
- //
- bool move (false);
-
- if (std >= cxx_version::cxx11)
- {
- switch (arg_type_)
- {
- case CtorArgType::complex_auto_ptr:
- {
- bool simple (true);
- IsSimpleType t (simple);
- t.dispatch (e.type ());
- move = !simple;
- break;
- }
- case CtorArgType::poly_auto_ptr:
- {
- move = polymorphic && polymorphic_p (e.type ());
- break;
- }
- case CtorArgType::type:
- break;
- }
- }
-
- os << "," << endl
- << " " << member << " (" << (move ? "std::move (" : "") <<
- ename (e) << (move ? ")" : "") << ", this)";
- }
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- String const& member (emember (a));
-
- bool def (a.default_p ());
-
- if (min (a) == 0 && !def)
- {
- // optional
- //
- os << "," << endl
- << " " << member << " (this)";
- }
- else
- {
- // one
- //
-
- if (def)
- {
- // This is an attribute with default or fixed value. We are
- // going to initialize it to its default value.
- //
- os << "," << endl
- << " " << member << " (" <<
- edefault_value (a) << " (), this)";
- }
- else
- {
- os << "," << endl
- << " " << member << " (" << ename (a) << ", this)";
- }
- }
- }
-
- private:
- CtorArgType arg_type_;
- };
-
- struct CtorAny: Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- CtorAny (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& member (emember (a));
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- if (max (a) != 1)
- {
- // sequence
- //
- os << "," << endl
- << " " << member << " (this->" << dom_doc << " ())";
- }
- else if (min (a) == 0)
- {
- // optional
- //
- os << "," << endl
- << " " << member << " (this->" << dom_doc << " ())";
- }
- else
- {
- // one
- //
- os << "," << endl
- << " " << member << " (" << ename (a) << ", this->" <<
- dom_doc << " ())";
- }
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- os << "," << endl
- << " " << emember (a) << " (this->" << dom_doc << " ())";
- }
- };
-
-
- struct CopyMember: Traversal::Member, Context
- {
- CopyMember (Context& c, String const& arg_name_)
- : Context (c), arg_name (arg_name_)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Member& m)
- {
- if (skip (m))
- return;
-
- String const& member (emember (m));
-
- os << "," << endl
- << " " << member << " (" <<
- arg_name << "." << member << ", f, this)";
- }
-
- private:
- String arg_name;
- };
-
- struct CopyAny: Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- CopyAny (Context& c, String const& arg_name_)
- : Context (c), arg_name (arg_name_)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& member (emember (a));
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- os << "," << endl
- << " " << member << " (" <<
- arg_name << "." << member << ", this->" << dom_doc << " ())";
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& member (emember (a));
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- os << "," << endl
- << " " << member << " (" <<
- arg_name << "." << member << ", this->" << dom_doc << " ())";
- }
-
- private:
- String arg_name;
- };
-
- struct AssignMember: Traversal::Member, Context
- {
- AssignMember (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Member& m)
- {
- if (skip (m))
- return;
-
- String const& member (emember (m));
- os << "this->" << member << " = x." << member << ";";
- }
- };
-
- struct AssignAny: Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- AssignAny (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& member (emember (a));
- os << "this->" << member << " = x." << member << ";";
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& member (emember (a));
- os << "this->" << member << " = x." << member << ";";
- }
- };
-
-
- // Element parsing c-tor initializers.
- //
- struct ElementCtorMember: Traversal::Member, Context
- {
- ElementCtorMember (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& m)
- {
- if (skip (m))
- return;
-
- String const& member (emember (m));
-
- os << "," << endl
- << " " << member << " (this)";
- }
- };
-
- struct ElementCtorAny: Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- ElementCtorAny (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& member (emember (a));
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- os << "," << endl
- << " " << member << " (this->" << dom_doc << " ())";
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& member (emember (a));
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- os << "," << endl
- << " " << member << " (this->" << dom_doc << " ())";
- }
- };
-
-
- // Default c-tor member initializer.
- //
- struct DefaultCtorMemberInit: Traversal::Element,
- Traversal::Attribute,
- Context
- {
- DefaultCtorMemberInit (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (skip (e))
- return;
-
- String const& member (emember (e));
-
- os << "," << endl
- << " " << member << " (this)";
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- String const& member (emember (a));
-
- if (a.default_p ())
- {
- // This is an attribute with default or fixed value. We are
- // going to initialize it to its default value.
- //
- os << "," << endl
- << " " << member << " (" <<
- edefault_value (a) << " (), this)";
- }
- else
- os << "," << endl
- << " " << member << " (this)";
- }
- };
-
- struct DefaultCtorAnyInit: Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- DefaultCtorAnyInit (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& member (emember (a));
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- os << "," << endl
- << " " << member << " (this->" << dom_doc << " ())";
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& member (emember (a));
- String const& dom_doc (
- edom_document (
- dynamic_cast<SemanticGraph::Complex&> (a.scope ())));
-
- os << "," << endl
- << " " << member << " (this->" << dom_doc << " ())";
- }
- };
-
- // Test whether the base has comparison operators.
- //
- struct HasComparisonOperator: Traversal::Fundamental::Type,
- Traversal::List,
- Traversal::Union,
- Traversal::Complex,
- Traversal::Enumeration,
- Traversal::Member,
- Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- // generate should initially be false.
- //
- HasComparisonOperator (Context& c, bool& generate)
- : Context (c), generate_ (generate)
- {
- *this >> inherits_ >> *this;
- *this >> names_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::Fundamental::Type&)
- {
- // All built-in types are comparable.
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::List&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Union&)
- {
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Enumeration& e)
- {
- Traversal::Enumeration::inherits (e);
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- Complex::names (c);
-
- if (!generate_)
- Complex::inherits (c);
- }
-
- virtual void
- traverse (SemanticGraph::Member& m)
- {
- if (!skip (m))
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Any&)
- {
- if (options.generate_wildcard ())
- generate_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute&)
- {
- if (options.generate_wildcard ())
- generate_ = true;
- }
-
- private:
- bool& generate_;
-
- Traversal::Inherits inherits_;
- Traversal::Names names_;
- };
-
- //
- //
- struct MemberComparison: Traversal::Element,
- Traversal::Attribute,
- Context
- {
- MemberComparison (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (skip (e))
- return;
-
- String const& aname (eaname (e));
-
- // Check if we need to handle xsi:type and substitution groups.
- // If this element's type is anonymous then we don't need to do
- // anything. Note that if the type is anonymous then it can't be
- // derived from which makes it impossible to substitute or
- // dynamically-type with xsi:type.
- //
- SemanticGraph::Type& t (e.type ());
- bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t));
-
- if (!poly)
- {
- os << "if (!(x." << aname << " () == y." << aname << " ()))" << endl
- << "return false;"
- << endl;
- }
- else
- {
- os << "{"
- << "::xsd::cxx::tree::comparison_map< " << char_type
- << " >& cm (" << endl
- << "::xsd::cxx::tree::comparison_map_instance< " <<
- poly_plate << ", " << char_type << " > ());"
- << endl;
-
- if (max (e) != 1)
- {
- // sequence
- //
- String const& scope (ename (e.scope ()));
-
- os << scope << "::" << econtainer (e) <<
- " a (x." << aname << " ()), b (y." << aname << " ());"
- << endl;
-
- os << "if (a.size () != b.size ())" << endl
- << "return false;"
- << endl;
-
- os << "for (" << scope << "::" << econst_iterator (e) << endl
- << "ai (a.begin ()), bi (b.begin ()), " <<
- "ae (a.end ()), be (b.end ());" << endl
- << "ai != ae; ++ai, ++bi)"
- << "{"
- << "if (!cm.compare (*ai, *bi))" << endl
- << "return false;"
- << "}";
- }
- else if (min (e) == 0)
- {
- // optional
- //
- String const& scope (ename (e.scope ()));
-
- os << scope << "::" << econtainer (e) <<
- " a (x." << aname << " ()), b (y." << aname << " ());"
- << endl;
-
- os << "if (!a || !b)"
- << "{"
- << "if (a.present () != b.present ())" << endl
- << "return false;"
- << "}"
- << "else"
- << "{"
- << "if (!cm.compare (*a, *b))" << endl
- << "return false;"
- << "}";
- }
- else
- {
- // one
- //
- os << "if (!cm.compare (x." << aname << " (), y." <<
- aname << " ()))" << endl
- << "return false;";
- }
-
- os << "}";
- }
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- String const& aname (eaname (a));
-
- os << "if (!(x." << aname << " () == y." << aname << " ()))" << endl
- << "return false;"
- << endl;
- }
- };
-
- struct AnyComparison: Traversal::Any,
- Traversal::AnyAttribute,
- Context
- {
- AnyComparison (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- String const& aname (eaname (a));
-
- if (max (a) == 1 && min (a) == 1)
- os << "if (!x." << aname << " ().isEqualNode (&y." <<
- aname << " ()))";
- else
- os << "if (!(x." << aname << " () == y." << aname << " ()))";
-
- os << endl
- << "return false;"
- << endl;
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute& a)
- {
- String const& aname (eaname (a));
-
- os << "if (!(x." << aname << " () == y." << aname << " ()))" << endl
- << "return false;"
- << endl;
- }
- };
-
- // Check whether a type has a parse() function (i.e., has any
- // members, recursively).
- //
- struct HasParseFunction: Traversal::Complex,
- Traversal::Element,
- Traversal::Any,
- Traversal::Attribute,
- Traversal::AnyAttribute,
- Context
- {
- HasParseFunction (Context& c, bool& has_el, bool& has_at)
- : Context (c), has_el_ (has_el), has_at_ (has_at)
- {
- *this >> names_ >> *this;
- *this >> inherits_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- if (mixed_p (c) && !c.context ().count ("mixed-in-base"))
- has_el_ = true;
-
- names (c);
-
- if (!(has_el_ && has_at_))
- inherits (c);
- }
-
- virtual void
- traverse (SemanticGraph::Element&)
- {
- has_el_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Any&)
- {
- has_el_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::Attribute&)
- {
- has_at_ = true;
- }
-
- virtual void
- traverse (SemanticGraph::AnyAttribute&)
- {
- if (options.generate_wildcard ())
- has_at_ = true;
- }
-
- private:
- bool& has_el_;
- bool& has_at_;
-
- Traversal::Names names_;
- Traversal::Inherits inherits_;
- };
-
- //
- //
- struct FacetArray: Traversal::Complex, Context
- {
- FacetArray (Context& c)
- : Context (c)
- {
- }
-
- virtual void
- traverse (Type& c)
- {
- Facets f;
- FacetCollector col (f);
- col.traverse (c);
-
- for (Facets::const_iterator i (f.begin ()); i != f.end (); ++i)
- {
- if (i->first == L"fractionDigits")
- os << "{::xsd::cxx::tree::facet::fraction_digits, " <<
- i->second << "UL}," << endl;
- else if (i->first == L"totalDigits")
- os << "{::xsd::cxx::tree::facet::total_digits, " <<
- i->second << "UL}," << endl;
- }
- }
-
- private:
- typedef map<String, String> Facets;
-
- struct FacetCollector: Traversal::Complex
- {
- FacetCollector (Facets& facets)
- : facets_ (facets)
- {
- *this >> inherits_ >> *this;
- }
-
- virtual void
- traverse (Type& c)
- {
- if (c.inherits_p ())
- {
- // First collect our base so that we can override its
- // facets.
- //
- inherits (c);
-
- using SemanticGraph::Restricts;
-
- if (Restricts* r = dynamic_cast<Restricts*> (&c.inherits ()))
- {
- if (!r->facet_empty ())
- {
- Restricts::FacetIterator i (r->facet_find ("totalDigits"));
-
- if (i != r->facet_end ())
- facets_[i->first] = i->second;
-
- i = r->facet_find ("fractionDigits");
-
- if (i != r->facet_end ())
- facets_[i->first] = i->second;
- }
- }
- }
- }
-
- private:
- Traversal::Inherits inherits_;
- Facets& facets_;
- };
- };
-
- //
- //
- struct Complex: Traversal::Complex, Context
- {
- Complex (Context& c)
- : Context (c),
- member_name_ (c),
- any_ (c),
- element_ (c),
- any_test_ (c),
- element_test_ (c),
- attribute_ (c),
- attribute_test_ (c),
- any_attribute_ (c),
- default_ctor_any_init_ (c),
- default_ctor_member_init_ (c),
- ctor_any_ (c),
- ctor_member_ (c, CtorArgType::type),
- element_ctor_any_ (c),
- element_ctor_member_ (c),
- assign_any_ (c),
- assign_member_ (c),
- comparison_any_ (c),
- comparison_member_ (c),
- facet_array_ (c)
- {
- bool gen_wildcard (options.generate_wildcard ());
-
- inherits_member_ >> member_name_;
-
- names_element_ >> element_;
- if (gen_wildcard)
- names_element_ >> any_;
-
- names_element_test_ >> element_test_;
- if (gen_wildcard)
- names_element_test_ >> any_test_;
-
- names_attribute_ >> attribute_;
- names_attribute_test_ >> attribute_test_;
- names_any_attribute_ >> any_attribute_;
-
- default_ctor_init_names_ >> default_ctor_member_init_;
- if (gen_wildcard)
- default_ctor_init_names_ >> default_ctor_any_init_;
-
- ctor_names_ >> ctor_member_;
- if (gen_wildcard)
- ctor_names_ >> ctor_any_;
-
- element_ctor_names_ >> element_ctor_member_;
- if (gen_wildcard)
- element_ctor_names_ >> element_ctor_any_;
-
- assign_names_ >> assign_member_;
- if (gen_wildcard)
- assign_names_ >> assign_any_;
-
- comparison_names_ >> comparison_member_;
- if (gen_wildcard)
- comparison_names_ >> comparison_any_;
- }
-
-
- virtual void
- traverse (Type& c)
- {
- bool gen_wildcard (options.generate_wildcard ());
-
- String name (ename (c));
-
- // If renamed name is empty then we do not need to generate
- // anything for this type.
- //
- if (renamed_type (c, name) && !name)
- return;
-
- SemanticGraph::Context& ctx (c.context ());
-
- bool mixed (mixed_p (c) && !ctx.count ("mixed-in-base"));
- bool ordered (ordered_p (c) && !ctx.count ("order-in-base"));
-
- bool string_based (false);
- {
- IsStringBasedType t (string_based);
- t.dispatch (c);
- }
-
- SemanticGraph::Enumeration* enum_base (0);
- {
- IsEnumBasedType t (enum_base);
- t.dispatch (c);
- }
-
- bool facets (false);
- String base; // base type name
- if (c.inherits_p ())
- {
- // Get base name.
- //
- std::wostringstream o;
-
- BaseTypeName base_type (*this, o);
- Traversal::Inherits inherits_type (base_type);
-
- // Cannot use inherits_none here because need the
- // result in a string.
- //
- inherits (c, inherits_type);
-
- base = o.str ();
-
- // See if we have any facets that we need to handle.
- //
- using SemanticGraph::Restricts;
- using SemanticGraph::Fundamental::Decimal;
-
- if (Restricts* r = dynamic_cast<Restricts*> (&c.inherits ()))
- {
- if (!r->facet_empty () &&
- (r->facet_find ("fractionDigits") != r->facet_end () ||
- r->facet_find ("totalDigits") != r->facet_end ()) &&
- ultimate_base (c).is_a<Decimal> ())
- facets = true;
- }
- }
- else
- base = any_type;
-
- os << "// " << name << endl
- << "//" << endl
- << endl;
-
- //
- //
- {
- Member member (*this, name);
- Traversal::Names names_member (member);
- names (c, names_member);
- }
-
- // facets
- //
- if (facets)
- {
- os << "static const ::xsd::cxx::tree::facet _xsd_" << name <<
- "_facet_table[] = "
- << "{";
-
- facet_array_.traverse (c);
-
- os << "{::xsd::cxx::tree::facet::none, 0UL}"
- << "};";
- }
-
- // c-tors
- //
- bool generate_no_base_ctor (false);
- {
- GenerateWithoutBaseCtor t (generate_no_base_ctor);
- t.traverse (c);
- }
-
- bool has_complex_non_op_args (false);
- bool has_poly_non_op_args (false);
- bool complex_poly_args_clash (true);
- {
- HasComplexPolyNonOptArgs t (*this, true,
- has_complex_non_op_args,
- has_poly_non_op_args,
- complex_poly_args_clash);
- t.traverse (c);
- }
-
- // default c-tor
- //
- if (options.generate_default_ctor ())
- {
- bool generate (false);
- {
- GenerateDefaultCtor t (*this, generate, generate_no_base_ctor);
- t.traverse (c);
- }
-
- if (generate)
- {
- os << name << "::" << endl
- << name << " ()" << endl
- << ": " << base << " ()";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- names (c, default_ctor_init_names_);
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
- }
- }
-
- // c-tor (base, all-non-optional-members)
- //
- if (options.generate_from_base_ctor ())
- {
- bool generate (false);
- {
- GenerateFromBaseCtor t (*this, generate);
- t.traverse (c);
- }
-
- if (generate)
- {
- bool has_complex_non_op_args (false);
- bool has_poly_non_op_args (false);
- bool complex_poly_args_clash (true);
- {
- HasComplexPolyNonOptArgs t (*this, false,
- has_complex_non_op_args,
- has_poly_non_op_args,
- complex_poly_args_clash);
- t.traverse (c);
- }
-
- String base_arg (
- L"_xsd_" + ename (c.inherits ().base ()) + L"_base");
-
- os << name << "::" << endl
- << name << " (const ";
- inherits (c, inherits_member_);
- os << "& " << base_arg;
- {
- FromBaseCtorArg args (*this, CtorArgType::type, true);
- Traversal::Names args_names (args);
- names (c, args_names);
- }
- os << ")" << endl
- << ": " << base << " (" << base_arg << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- names (c, ctor_names_);
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
-
- // If we have any complex arguments in the previous c-tor
- // then also generate the auto_ptr version.
- //
- if (has_complex_non_op_args)
- {
- CtorArgType const at (CtorArgType::complex_auto_ptr);
-
- os << name << "::" << endl
- << name << " (const ";
- inherits (c, inherits_member_);
- os << "& " << base_arg;
- {
- FromBaseCtorArg args (*this, at, true);
- Traversal::Names args_names (args);
- names (c, args_names);
- }
- os << ")" << endl
- << ": " << base << " (" << base_arg << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- {
- CtorMember t (*this, at);
- Traversal::Names n (t);
-
- if (gen_wildcard)
- n >> ctor_any_;
-
- names (c, n);
- }
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
- }
-
- // If we are generating polymorphic code then we also need to
- // provide auto_ptr version for every polymorphic type.
- //
- if (polymorphic &&
- has_poly_non_op_args && !complex_poly_args_clash)
- {
- CtorArgType const at (CtorArgType::poly_auto_ptr);
-
- os << name << "::" << endl
- << name << " (const ";
- inherits (c, inherits_member_);
- os << "& " << base_arg;
- {
- FromBaseCtorArg args (*this, at, true);
- Traversal::Names args_names (args);
- names (c, args_names);
- }
- os << ")" << endl
- << ": " << base << " (" << base_arg << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- {
- CtorMember t (*this, at);
- Traversal::Names n (t);
-
- if (gen_wildcard)
- n >> ctor_any_;
-
- names (c, n);
- }
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
- }
- }
- }
-
- // c-tor (all-non-optional-members)
- //
- if (generate_no_base_ctor)
- {
- CtorArgType const at (CtorArgType::type);
-
- os << name << "::" << endl
- << name << " (";
- {
- CtorArgsWithoutBase ctor_args (*this, at, true, true);
- ctor_args.dispatch (c);
- }
- os << ")" << endl
- << ": " << base << " (";
- {
- CtorBase base (*this, at, "");
- Traversal::Inherits inherits_base (base);
-
- inherits (c, inherits_base);
- }
- os << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- names (c, ctor_names_);
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
-
- // If we have any complex arguments in the previous c-tor
- // then also generate the auto_ptr version. One case where
- // this c-tor will be generated is restriction of anyType.
- //
- if (has_complex_non_op_args)
- {
- CtorArgType const at (CtorArgType::complex_auto_ptr);
-
- os << name << "::" << endl
- << name << " (";
- {
- CtorArgsWithoutBase ctor_args (*this, at, true, true);
- ctor_args.dispatch (c);
- }
- os << ")" << endl
- << ": " << base << " (";
- {
- CtorBase base (*this, at, "");
- Traversal::Inherits inherits_base (base);
-
- inherits (c, inherits_base);
- }
- os << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- {
- CtorMember t (*this, at);
- Traversal::Names n (t);
-
- if (gen_wildcard)
- n >> ctor_any_;
-
- names (c, n);
- }
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
- }
-
- // If we are generating polymorphic code then we also need to
- // provide auto_ptr version for every polymorphic type.
- //
- if (polymorphic &&
- has_poly_non_op_args && !complex_poly_args_clash)
- {
- CtorArgType const at (CtorArgType::poly_auto_ptr);
-
- os << name << "::" << endl
- << name << " (";
- {
- CtorArgsWithoutBase ctor_args (*this, at, true, true);
- ctor_args.dispatch (c);
- }
- os << ")" << endl
- << ": " << base << " (";
- {
- CtorBase base (*this, at, "");
- Traversal::Inherits inherits_base (base);
-
- inherits (c, inherits_base);
- }
- os << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- {
- CtorMember t (*this, at);
- Traversal::Names n (t);
-
- if (gen_wildcard)
- n >> ctor_any_;
-
- names (c, n);
- }
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
- }
- }
-
- if (string_based)
- {
- // We might not have the value type if this enum is customized.
- //
- if (enum_base != 0 && enum_base->context ().count ("value"))
- {
- // c-tor (enum-value, all-non-optional-members)
- //
- CtorArgType const at (CtorArgType::type);
- String base_arg (L"_xsd_" + ename (*enum_base) + L"_base");
-
- os << name << "::" << endl
- << name << " (" << fq_name (*enum_base) << "::" <<
- evalue (*enum_base) << " " << base_arg;
-
- {
- CtorArgsWithoutBase ctor_args (*this, at, true, false);
- ctor_args.dispatch (c);
- }
-
- os << ")" << endl
- << ": " << base << " (";
-
- {
- CtorBase base (*this, at, base_arg);
- Traversal::Inherits inherits_base (base);
-
- inherits (c, inherits_base);
- }
-
- os << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- // Cannot be mixed.
-
- names (c, ctor_names_);
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
- }
-
- CtorArgType const at (CtorArgType::type);
- String base_arg (L"_xsd_" + ename (ultimate_base (c)) + L"_base");
-
- // c-tor (const char*, all-non-optional-members)
- //
- os << name << "::" << endl
- << name << " (const " << char_type << "* " << base_arg;
-
- {
- CtorArgsWithoutBase ctor_args (*this, at, true, false);
- ctor_args.dispatch (c);
- }
-
- os << ")" << endl
- << ": " << base << " (";
-
- {
- CtorBase base (*this, at, base_arg);
- Traversal::Inherits inherits_base (base);
-
- inherits (c, inherits_base);
- }
-
- os << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- // Cannot be mixed.
-
- names (c, ctor_names_);
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
-
-
- // c-tor (const std::string&, all-non-optional-members)
- //
- os << name << "::" << endl
- << name << " (const " << string_type << "& " << base_arg;
-
- {
- CtorArgsWithoutBase ctor_args (*this, at, true, false);
- ctor_args.dispatch (c);
- }
-
- os << ")" << endl
- << ": " << base << " (";
-
- {
- CtorBase base (*this, at, base_arg);
- Traversal::Inherits inherits_base (base);
-
- inherits (c, inherits_base);
- }
-
- os << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- // Cannot be mixed.
-
- names (c, ctor_names_);
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
- }
-
- // c-tor (ultimate-base, all-non-optional-members)
- //
- {
- CtorArgType const at (CtorArgType::type);
-
- os << name << "::" << endl
- << name << " (";
-
- String base_arg;
-
- {
- CtorArgs ctor_args (*this, at, base_arg);
- ctor_args.dispatch (c);
- }
-
- os << ")" << endl
- << ": " << base << " (";
-
- {
- CtorBase base (*this, at, base_arg);
- Traversal::Inherits inherits_base (base);
-
- inherits (c, inherits_base);
- }
-
- os << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- names (c, ctor_names_);
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
- }
-
- // If we have any complex arguments in the previous c-tor
- // then also generate the auto_ptr version.
- //
- if (has_complex_non_op_args)
- {
- CtorArgType const at (CtorArgType::complex_auto_ptr);
- String base_arg;
-
- os << name << "::" << endl
- << name << " (";
-
- {
- CtorArgs ctor_args (*this, at, base_arg);
- ctor_args.dispatch (c);
- }
-
- os << ")" << endl
- << ": " << base << " (";
-
- {
- CtorBase base (*this, at, base_arg);
- Traversal::Inherits inherits_base (base);
-
- inherits (c, inherits_base);
- }
-
- os << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- {
- CtorMember t (*this, at);
- Traversal::Names n (t);
-
- if (gen_wildcard)
- n >> ctor_any_;
-
- names (c, n);
- }
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
- }
-
- // If we are generating polymorphic code then we also need to
- // provide auto_ptr version for every polymorphic type.
- //
- if (polymorphic &&
- has_poly_non_op_args && !complex_poly_args_clash)
- {
- CtorArgType const at (CtorArgType::poly_auto_ptr);
- String base_arg;
-
- os << name << "::" << endl
- << name << " (";
-
- {
- CtorArgs ctor_args (*this, at, base_arg);
- ctor_args.dispatch (c);
- }
-
- os << ")" << endl
- << ": " << base << " (";
-
- {
- CtorBase base (*this, at, base_arg);
- Traversal::Inherits inherits_base (base);
-
- inherits (c, inherits_base);
- }
-
- os << ")";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- {
- CtorMember t (*this, at);
- Traversal::Names n (t);
-
- if (gen_wildcard)
- n >> ctor_any_;
-
- names (c, n);
- }
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
- }
-
-
- // copy c-tor
- //
-
- os << name << "::" << endl
- << name << " (const " << name << "& x," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (x, f, c)";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- String const& m (ctx.get<String> ("mixed-member"));
- os << "," << endl
- << " " << m << " (x." << m << ", f, this)";
- }
-
- if (ordered)
- {
- String const& m (ctx.get<String> ("order-member"));
- os << "," << endl
- << " " << m << " (x." << m << ")";
- }
-
- {
- CopyAny copy_any (*this, "x");
- CopyMember copy_member (*this, "x");
- Traversal::Names names;
-
- names >> copy_member;
-
- if (gen_wildcard)
- names >> copy_any;
-
- Complex::names (c, names);
- }
-
- os << "{";
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
- os << "}";
-
- //
- //
- bool he (has<Traversal::Element> (c));
- bool hae (has<Traversal::Any> (c));
-
- bool ha (has<Traversal::Attribute> (c));
- bool haa (has<Traversal::AnyAttribute> (c));
-
- //
- //
- if (!options.suppress_parsing ())
- {
- // c-tor (xercesc::DOMElement)
- //
- os << name << "::" << endl
- << name << " (const " << xerces_ns << "::DOMElement& e," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (e, f";
-
- if (he || ha || hae || (haa && gen_wildcard) || mixed)
- os << " | " << flags_type << "::base";
-
- os << ", c)";
-
- if (edom_document_member_p (c))
- {
- os << "," << endl
- << " " << edom_document_member (c) << " (" <<
- "::xsd::cxx::xml::dom::create_document< " << char_type <<
- " > ())";
- }
-
- if (mixed)
- {
- os << "," << endl
- << " " << ctx.get<String> ("mixed-member") << " (this)";
- }
-
- names (c, element_ctor_names_);
-
- os << "{";
-
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);"
- << endl;
-
- bool base_has_el (false), base_has_at (false);
-
- // We are only interested in this information if we are
- // generating our own parse().
- //
- if (he || ha || hae || (haa && gen_wildcard) || mixed)
- {
- if (c.inherits_p ())
- {
- HasParseFunction test (*this, base_has_el, base_has_at);
- test.dispatch (c.inherits ().base ());
- }
- }
-
- //@@ Throw if p is not exhausted at the end.
- //
- if (he || ha || hae || (haa && gen_wildcard) || mixed)
- os << "if ((f & " << flags_type << "::base) == 0)"
- << "{"
- << parser_type << " p (e, " <<
- (he || hae || base_has_el || mixed_p (c) ? "true, " : "false, ") <<
- (mixed_p (c) ? "true, " : "false, ") <<
- (ha || (haa && gen_wildcard) || base_has_at ? "true" : "false")
- << ");"
- << "this->" << unclash (name, "parse") << " (p, f);"
- << "}";
-
- os << "}";
-
- bool simple (true);
- {
- IsSimpleType t (simple);
- t.dispatch (c);
- }
-
- if (simple)
- {
- // c-tor (xercesc::DOMAttr)
- //
- os << name << "::" << endl
- << name << " (const " << xerces_ns << "::DOMAttr& a," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (a, f, c)"
- << "{";
-
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
-
- os << "}";
-
- // c-tor (string const&, xercesc::DOMElement)
- //
- os << name << "::" << endl
- << name << " (const " << string_type << "& s," << endl
- << "const " << xerces_ns << "::DOMElement* e," << endl
- << flags_type << " f," << endl
- << container << "* c)" << endl
- << ": " << base << " (s, e, f, c)"
- << "{";
-
- if (facets)
- os << "this->_facet_table (_xsd_" << name << "_facet_table);";
-
- os << "}";
- }
-
- if (he || ha || hae || (haa && gen_wildcard) || mixed)
- {
- os << "void " << name << "::" << endl
- << unclash (name, "parse") << " (" <<
- parser_type << "& p," << endl
- << flags_type <<
- (he || ha || base_has_el || base_has_at ? " f" : "") << ")"
- << "{";
-
- // Allow the base to parse its part.
- //
- if (base_has_el || base_has_at)
- os << "this->" << base << "::parse (p, f);"
- << endl;
-
- if (he || hae || mixed_p (c))
- {
- bool m (mixed_p (c));
-
- os << "for (; p.more_content (); p.next_content (" <<
- (m ? "true" : "false") << "))"
- << "{";
-
- if (m)
- {
- String const& ma (ctx.get<String> ("mixed-aname"));
- String const& mi (ctx.get<String> ("mixed-ordered-id-name"));
- String const& oa (ctx.get<String> ("order-aname"));
- String const& ot (ctx.get<String> ("order-type"));
-
- os << "if (p.cur_is_text ())"
- << "{"
- << "const " << xerces_ns << "::DOMText& t (" <<
- "p.cur_text ());"
- << "this->" << ma << " ().push_back (" << endl
- << "::xsd::cxx::xml::transcode< " << char_type << " > (" <<
- "t.getData (), t.getLength ()));"
- << "this->" << oa << " ().push_back (" << endl
- << ot << " (" << mi << "," << endl
- << "this->" << ma << " ().size () - 1));"
- << "continue;"
- << "}";
- }
-
- if (he || hae)
- {
- os << "const " << xerces_ns << "::DOMElement& i (" <<
- "p.cur_element ());"
- << "const " << qname_type << " n (" << endl
- << "::xsd::cxx::xml::dom::name< " << char_type << " > (i));"
- << endl;
-
- names (c, names_element_);
- }
-
- os << "break;"
- << "}";
-
- // Make sure all non-optional elements are set.
- //
- names (c, names_element_test_);
- }
-
- if (ha || (haa && gen_wildcard))
- {
- if (base_has_at)
- os << "p.reset_attributes ();"
- << endl;
-
- os << "while (p.more_attributes ())"
- << "{"
- << "const " << xerces_ns << "::DOMAttr& i (" <<
- "p.next_attribute ());"
- << "const " << qname_type << " n (" << endl
- << "::xsd::cxx::xml::dom::name< " << char_type << " > (i));"
- << endl;
-
- names (c, names_attribute_);
-
- // Generate anyAttribute code after all the attributes.
- //
- if (gen_wildcard)
- names (c, names_any_attribute_);
-
-
- // os << "{" // else block
- // @@
- // This doesn't play well with inheritance because we
- // don't expect base's attributes. Also there are other
- // "special" attributes such as xmlns, etc.
- //
- // << "throw ::xsd::cxx::tree::unexpected_attribute ... "
- // << "}";
-
- os << "}"; // while loop
-
- // Make sure all non-optional attributes are set.
- //
- names (c, names_attribute_test_);
- }
-
- os << "}";
- }
- }
-
- // _clone
- //
- os << name << "* " << name << "::" << endl
- << "_clone (" << flags_type << " f," << endl
- << container << "* c) const"
- << "{"
- << "return new class " << name << " (*this, f, c);"
- << "}";
-
- // operator=
- //
- if (!options.suppress_assignment () &&
- (he || ha || (gen_wildcard && (hae || haa))))
- {
- os << name << "& " << name << "::" << endl
- << "operator= (const " << name << "& x)"
- << "{"
- << "if (this != &x)"
- << "{"
- << "static_cast< " << base << "& > (*this) = x;";
-
- // Note that here we don't assign the DOMDocument that is
- // used to hold wildcard fragments. Each document has its
- // own copy.
-
- // Mixed text content.
- //
- if (mixed)
- {
- String const& m (ctx.get<String> ("mixed-member"));
- os << "this->" << m << " = x." << m << ";";
- }
-
- // Order container.
- //
- if (ordered)
- {
- String const& m (ctx.get<String> ("order-member"));
- os << "this->" << m << " = x." << m << ";";
- }
-
- names (c, assign_names_);
-
- os << "}"
- << "return *this;"
- << "}";
- }
-
- // d-tor
- //
- os << name << "::" << endl
- << "~" << name << " ()"
- << "{"
- << "}";
-
- // Register with type factory map.
- //
- if (polymorphic && polymorphic_p (c))
- {
- // Note that we are using the original type name.
- //
- String const& name (ename (c));
-
- // If this type is anonymous but substitutes, then it will
- // be registered as part of the substitution registration.
- //
- if (!anonymous_p (c) && !options.suppress_parsing ())
- {
- os << "static" << endl
- << "const ::xsd::cxx::tree::type_factory_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_type_factory_init (" << endl
- << strlit (c.name ()) << "," << endl
- << strlit (xml_ns_name (c)) << ");"
- << endl;
- }
-
- if ((!anonymous_p (c) || anonymous_substitutes_p (c)) &&
- options.generate_comparison ())
- {
- os << "static" << endl
- << "const ::xsd::cxx::tree::comparison_initializer< " <<
- poly_plate << ", " << char_type << ", " << name << " >" << endl
- << "_xsd_" << name << "_comparison_init;"
- << endl;
- }
- }
-
- // Comparison operators.
- //
- if (options.generate_comparison () &&
- (he || ha || mixed || ordered || !c.inherits_p () ||
- ((hae || haa) && gen_wildcard)))
- {
- bool base_comp (false);
-
- if (c.inherits_p ())
- {
- HasComparisonOperator test (*this, base_comp);
- test.dispatch (c.inherits ().base ());
- }
-
- bool has_body (he || ha || ordered || mixed || base_comp ||
- ((hae || haa) && gen_wildcard));
-
- os << "bool" << endl
- << "operator== (const " << name << "&" <<
- (has_body ? " x" : "") << ", " <<
- "const " << name << "&" << (has_body ? " y" : "") << ")"
- << "{";
-
- if (base_comp)
- os << "if (!(static_cast< const " << base << "& > (x) ==" << endl
- << "static_cast< const " << base << "& > (y)))" << endl
- << "return false;"
- << endl;
-
- {
- Complex::names (c, comparison_names_);
- }
-
- if (mixed)
- {
- String const& an (ctx.get<String> ("mixed-aname"));
- os << "if (!(x." << an << " () == y." << an << " ()))" << endl
- << "return false;"
- << endl;
- }
-
- if (ordered)
- {
- String const& an (ctx.get<String> ("order-aname"));
- os << "if (!(x." << an << " () == y." << an << " ()))" << endl
- << "return false;"
- << endl;
- }
-
- os << "return true;"
- << "}";
-
- os << "bool" << endl
- << "operator!= (const " << name << "& x, " <<
- "const " << name << "& y)"
- << "{"
- << "return !(x == y);"
- << "}";
- }
- }
-
- private:
- Traversal::Inherits inherits_member_;
- MemberTypeName member_name_;
-
- Traversal::Names names_element_;
- Traversal::Names names_element_test_;
-
- Traversal::Names names_attribute_;
- Traversal::Names names_any_attribute_;
- Traversal::Names names_attribute_test_;
-
- Any any_;
- Element element_;
-
- AnyTest any_test_;
- ElementTest element_test_;
-
- Attribute attribute_;
- AttributeTest attribute_test_;
-
- AnyAttribute any_attribute_;
-
- DefaultCtorAnyInit default_ctor_any_init_;
- DefaultCtorMemberInit default_ctor_member_init_;
- Traversal::Names default_ctor_init_names_;
-
- CtorAny ctor_any_;
- CtorMember ctor_member_;
- Traversal::Names ctor_names_;
-
- ElementCtorAny element_ctor_any_;
- ElementCtorMember element_ctor_member_;
- Traversal::Names element_ctor_names_;
-
- AssignAny assign_any_;
- AssignMember assign_member_;
- Traversal::Names assign_names_;
-
- AnyComparison comparison_any_;
- MemberComparison comparison_member_;
- Traversal::Names comparison_names_;
-
- FacetArray facet_array_;
- };
-
-
- // Generate element types and substitution group map entries.
- //
- struct GlobalElement: Traversal::Element,
- GlobalElementBase,
- Context
- {
- GlobalElement (Context& c)
- : GlobalElementBase (c),
- Context (c),
- element_type_ (c.options.generate_element_type ()),
- element_map_ (c.options.generate_element_map ()),
- type_name_ (c)
- {
- belongs_ >> type_name_;
- }
-
- virtual void
- traverse (Type& e)
- {
- if (element_type_ && doc_root_p (e))
- {
- SemanticGraph::Type& t (e.type ());
-
- bool fund (false);
- {
- IsFundamentalType test (fund);
- test.dispatch (t);
- }
-
- bool simple (true);
- if (!fund)
- {
- IsSimpleType test (simple);
- test.dispatch (t);
- }
-
- String const& name (ename (e));
- String const& type (etype (e));
- String const& member (emember (e));
-
- os << "// " << name << endl
- << "// " << endl
- << endl;
-
- // Virtual accessors.
- //
- os << "const " << any_type << "* " << name << "::" << endl
- << "_value () const"
- << "{";
-
- if (fund)
- os << "return 0;";
- else
- os << "return &this->" << member << ".get ();";
-
- os << "}";
-
- os << any_type << "* " << name << "::" << endl
- << "_value ()"
- << "{";
-
- if (fund)
- os << "return 0;";
- else
- os << "return &this->" << member << ".get ();";
-
- os << "}";
-
- // default c-tor
- //
- if (options.generate_default_ctor ())
- {
- os << name << "::" << endl
- << name << " ()" << endl
- << ": " << member << " (0)"
- << "{"
- << "}";
- }
-
- // c-tor (value)
- //
- os << name << "::" << endl
- << name << " (const " << type << "& x)" << endl
- << ": " << member << " (x, 0)"
- << "{"
- << "}";
-
-
- // c-tor (auto_ptr<value>)
- //
- if (!simple || (polymorphic && polymorphic_p (t)))
- {
- os << name << "::" << endl
- << name << " (" << auto_ptr << "< " << type << " > p)" << endl
- << ": " << member << " (p, 0)"
- << "{"
- << "}";
- }
-
- // c-tor (xercesc::DOMElement)
- //
- SemanticGraph::Context& ec (e.context ());
- String const& name_member (ec.get<String> ("element-name-member"));
- String const& ns_member (ec.get<String> ("element-ns-member"));
-
- bool parsing (!options.suppress_parsing ());
- if (parsing)
- {
- String const& tr (etraits (e));
-
- os << name << "::" << endl
- << name << " (const " << xerces_ns << "::DOMElement& e, " <<
- flags_type << " f)" << endl
- << ": " << member << " (0)"
- << "{"
- << "const " << qname_type << " n (" << endl
- << "::xsd::cxx::xml::dom::name< " << char_type << " > (e));"
- << endl
- << "if (n.name () == " << name_member << " && " <<
- "n.namespace_ () == " << ns_member << ")" << endl
- << "this->" << member << ".set (" << tr <<
- "::create (e, f, 0));"
- << "else" << endl
- << "throw ::xsd::cxx::tree::unexpected_element < " <<
- char_type << " > (" << endl
- << "n.name (), n.namespace_ ()," << endl
- << name_member << ", " << ns_member << ");"
- << "}";
- }
-
- // copy c-tor
- //
- os << name << "::" << endl
- << name << " (const " << name << "& x, " <<
- flags_type << " f)" << endl
- << ": " << element_type << " ()," << endl
- << " " << member << " (x." << member << ", f, 0)"
- << "{"
- << "}";
-
- // _clone
- //
- os << name << "* " << name << "::" << endl
- << "_clone (" << flags_type << " f) const"
- << "{"
- << "return new class " << name << " (*this, f);"
- << "}";
-
- // Element name and namespace accessors.
- //
- String const& aname (ec.get<String> ("element-name"));
- String const& ans (ec.get<String> ("element-ns"));
-
- os << "const " << string_type << "& " << name << "::" << endl
- << aname << " ()"
- << "{"
- << "return " << name_member << ";"
- << "}";
-
- os << "const " << string_type << "& " << name << "::" << endl
- << ans << " ()"
- << "{"
- << "return " << ns_member << ";"
- << "}";
-
- os << "const " << string_type << "& " << name << "::" << endl
- << "_name () const"
- << "{"
- << "return " << name_member << ";"
- << "}";
-
- os << "const " << string_type << "& " << name << "::" << endl
- << "_namespace () const"
- << "{"
- << "return " << ns_member << ";"
- << "}";
-
- os << "const " << string_type << " " << name << "::" << endl
- << name_member << " (" << strlit (e.name ()) << ");"
- << endl
- << "const " << string_type << " " << name << "::" << endl
- << ns_member << " (" << strlit (e.namespace_ ().name ()) << ");"
- << endl;
-
- // d-tor
- //
- os << name << "::" << endl
- << "~" << name << " ()"
- << "{"
- << "}";
-
- // Element map registration.
- //
- if (element_map_ && parsing)
- {
- os << "static " << endl
- << "const ::xsd::cxx::tree::parser_init< " << name << ", " <<
- char_type << ", " << any_type << " >" << endl
- << "_xsd_" << name << "_parser_init (" <<
- name << "::" << aname << " (), " <<
- name << "::" << ans << " ());"
- << endl;
- }
- }
-
- if (polymorphic && e.substitutes_p () &&
- !options.suppress_parsing ())
- {
- String const& name (ename (e));
- Type& r (e.substitutes ().root ());
-
- os << "static" << endl
- << "const ::xsd::cxx::tree::element_factory_initializer< " <<
- poly_plate << ", " << char_type << ", ";
-
- belongs (e, belongs_);
-
- os << " >" << endl
- << "_xsd_" << name << "_element_factory_init (" << endl
- << strlit (r.name ()) << "," << endl
- << strlit (r.namespace_ ().name ()) << "," << endl
- << strlit (e.name ()) << "," << endl
- << strlit (e.namespace_ ().name ()) << ");"
- << endl
- << endl;
- }
- }
-
- private:
- bool element_type_;
- bool element_map_;
- Traversal::Belongs belongs_;
- MemberTypeName type_name_;
- };
- }
-
- void
- generate_tree_source (Context& ctx, size_t first, size_t last)
- {
- if (ctx.options.generate_wildcard ())
- {
- ctx.os << "#include <xsd/cxx/xml/dom/wildcard-source.hxx>" << endl
- << endl;
- }
-
- if (!ctx.options.suppress_parsing ())
- ctx.os << "#include <xsd/cxx/xml/dom/parsing-source.hxx>" << endl
- << endl;
-
- if (ctx.polymorphic)
- {
- bool parsing (!ctx.options.suppress_parsing ());
- bool comparison (ctx.options.generate_comparison ());
-
- if (parsing)
- ctx.os << "#include <xsd/cxx/tree/type-factory-map.hxx>" << endl
- << endl;
-
- if (comparison)
- ctx.os << "#include <xsd/cxx/tree/comparison-map.hxx>" << endl
- << endl;
-
- if (parsing || comparison)
- {
- bool import_maps (ctx.options.import_maps ());
- bool export_maps (ctx.options.export_maps ());
-
- if (import_maps || export_maps)
- {
- ctx.os << "#ifndef XSD_NO_EXPORT" << endl
- << endl
- << "namespace xsd"
- << "{"
- << "namespace cxx"
- << "{"
- << "namespace tree"
- << "{"
- << "#ifdef _MSC_VER" << endl;
-
- if (parsing && export_maps)
- ctx.os << "template struct __declspec (dllexport) " <<
- "type_factory_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- if (parsing && import_maps)
- ctx.os << "template struct __declspec (dllimport) " <<
- "type_factory_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- if (comparison && export_maps)
- ctx.os << "template struct __declspec (dllexport) " <<
- "comparison_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- if (comparison && import_maps)
- ctx.os << "template struct __declspec (dllimport) " <<
- "comparison_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- ctx.os << "#elif defined(__GNUC__) && __GNUC__ >= 4" << endl;
-
- if (parsing)
- ctx.os << "template struct __attribute__ ((visibility(\"default\"))) " <<
- "type_factory_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- if (comparison)
- ctx.os << "template struct __attribute__ ((visibility(\"default\"))) " <<
- "comparison_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- ctx.os << "#elif defined(XSD_MAP_VISIBILITY)" << endl;
-
- if (parsing)
- ctx.os << "template struct XSD_MAP_VISIBILITY " <<
- "type_factory_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- if (comparison)
- ctx.os << "template struct XSD_MAP_VISIBILITY " <<
- "comparison_plate< " << ctx.poly_plate << ", " <<
- ctx.char_type << " >;";
-
- ctx.os << "#endif" << endl
- << "}" // tree
- << "}" // cxx
- << "}" // xsd
- << "#endif // XSD_NO_EXPORT" << endl
- << endl;
- }
-
- ctx.os << "namespace _xsd"
- << "{";
-
- if (parsing)
- ctx.os << "static" << endl
- << "const ::xsd::cxx::tree::type_factory_plate< " <<
- ctx.poly_plate << ", " << ctx.char_type << " >" << endl
- << "type_factory_plate_init;"
- << endl;
-
- if (comparison)
- ctx.os << "static" << endl
- << "const ::xsd::cxx::tree::comparison_plate< " <<
- ctx.poly_plate << ", " << ctx.char_type << " >" << endl
- << "comparison_plate_init;"
- << endl;
-
- ctx.os << "}";
- }
- }
-
- Traversal::Schema schema;
- Sources sources;
- Traversal::Names names_ns, names;
- Namespace ns (ctx, first, last);
-
- List list (ctx);
- Union union_ (ctx);
- Complex complex (ctx);
- Enumeration enumeration (ctx);
- GlobalElement element (ctx);
-
- schema >> sources >> schema;
- schema >> names_ns >> ns >> names;
-
- names >> list;
- names >> union_;
- names >> complex;
- names >> enumeration;
- names >> element;
-
- schema.dispatch (ctx.schema_root);
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/tree-source.hxx b/xsd/xsd/cxx/tree/tree-source.hxx
deleted file mode 100644
index b2d96f7..0000000
--- a/xsd/xsd/cxx/tree/tree-source.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-// file : xsd/cxx/tree/tree-source.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_TREE_SOURCE_HXX
-#define CXX_TREE_TREE_SOURCE_HXX
-
-#include <cxx/tree/elements.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- void
- generate_tree_source (Context&, size_t first, size_t last);
- }
-}
-
-#endif // CXX_TREE_TREE_SOURCE_HXX
diff --git a/xsd/xsd/cxx/tree/validator.cxx b/xsd/xsd/cxx/tree/validator.cxx
deleted file mode 100644
index ce3dcd8..0000000
--- a/xsd/xsd/cxx/tree/validator.cxx
+++ /dev/null
@@ -1,672 +0,0 @@
-// file : xsd/cxx/tree/validator.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <set>
-#include <iostream>
-
-#include <cxx/tree/validator.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <cxx/tree/elements.hxx>
-
-using namespace std;
-
-namespace CXX
-{
- namespace Tree
- {
- namespace
- {
- class ValidationContext: public Context
- {
- public:
- ValidationContext (SemanticGraph::Schema& root,
- SemanticGraph::Path const& path,
- Tree::options const& ops,
- const WarningSet& disabled_warnings,
- Counts const& counts,
- bool generate_xml_schema,
- bool& valid_)
- : Context (std::wcerr,
- root,
- path,
- ops,
- counts,
- generate_xml_schema,
- 0,
- 0,
- 0,
- 0),
- disabled_warnings_ (disabled_warnings),
- disabled_warnings_all_ (false),
- valid (valid_),
- subst_group_warning_issued (subst_group_warning_issued_),
- subst_group_warning_issued_ (false)
- {
- if (disabled_warnings_.find ("all") != disabled_warnings_.end ())
- disabled_warnings_all_ = true;
- }
-
- public:
- bool
- is_disabled (char const* w)
- {
- return disabled_warnings_all_ ||
- disabled_warnings_.find (w) != disabled_warnings_.end ();
- }
-
- public:
- String
- xpath (SemanticGraph::Nameable& n)
- {
- if (n.is_a<SemanticGraph::Namespace> ())
- return L"<namespace-level>"; // There is a bug if you see this.
-
- if (n.named_p ())
- {
- SemanticGraph::Scope& scope (n.scope ());
-
- if (scope.is_a<SemanticGraph::Namespace> ())
- return n.name ();
-
- return xpath (scope) + L"/" + n.name ();
- }
- else
- {
- return L"(anonymous type for " +
- n.context ().get<String> ("instance-name") + L")";
- }
- }
-
- protected:
- ValidationContext (ValidationContext& c)
- : Context (c),
- disabled_warnings_ (c.disabled_warnings_),
- disabled_warnings_all_ (c.disabled_warnings_all_),
- valid (c.valid),
- subst_group_warning_issued (c.subst_group_warning_issued)
- {
- }
-
- protected:
- const WarningSet& disabled_warnings_;
- bool disabled_warnings_all_;
-
- bool& valid;
-
- bool& subst_group_warning_issued;
- bool subst_group_warning_issued_;
- };
-
-
- //
- //
- struct Any: Traversal::Any, ValidationContext
- {
- Any (ValidationContext& c)
- : ValidationContext (c)
- {
- }
-
- struct Element: Traversal::Element, ValidationContext
- {
- Element (ValidationContext& c, SemanticGraph::Any& any)
- : ValidationContext (c),
- any_ (any),
- ns_ (any.definition_namespace ().name ())
- {
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (skip (e))
- return;
-
- using SemanticGraph::Any;
-
- bool q (e.qualified_p ());
- String ns (q ? e.namespace_ ().name () : "");
-
- for (Any::NamespaceIterator i (any_.namespace_begin ());
- i != any_.namespace_end (); ++i)
- {
- bool failed (false);
-
- if (*i == L"##any")
- {
- failed = true;
- }
- else if (*i == L"##other")
- {
- if (ns_)
- {
- // Note that here I assume that ##other does not
- // include names without target namespace. This
- // is not what the spec says but that seems to be
- // the consensus.
- //
- failed = q && ns != ns_;
- }
- else
- {
- // No target namespace.
- //
- failed = q && ns != L"";
- }
- }
- else if (*i == L"##local")
- {
- failed = !q || ns == L"";
- }
- else if (*i == L"##targetNamespace")
- {
- failed = (q && ns_ == ns) || (!q && ns_ == L"");
- }
- else
- {
- failed = q && *i == ns;
- }
-
- if (failed)
- {
- Any& a (any_);
-
- os << a.file () << ":" << a.line () << ":" << a.column ()
- << ": warning T001: namespace '" << *i << "' allows for "
- << "element '" << e.name () << "'" << endl;
-
- os << a.file () << ":" << a.line () << ":" << a.column ()
- << ": warning T001: generated code may not associate element '"
- << e.name () << "' correctly if it appears in place of "
- << "this wildcard" << endl;
-
- os << e.file () << ":" << e.line () << ":" << e.column ()
- << ": info: element '" << e.name () << "' is defined "
- << "here" << endl;
- }
- }
- }
-
- private:
- SemanticGraph::Any& any_;
- String ns_;
- };
-
- struct Complex: Traversal::Complex
- {
- Complex ()
- : up_ (true), down_ (true)
- {
- }
-
- virtual void
- post (Type& c)
- {
- // Go down the inheritance hierarchy.
- //
- if (down_)
- {
- bool up = up_;
- up_ = false;
-
- if (c.inherits_p ())
- dispatch (c.inherits ().base ());
-
- up_ = up;
- }
-
- // Go up the inheritance hierarchy.
- //
- if (up_)
- {
- bool down = down_;
- down_ = false;
-
- for (Type::BegetsIterator i (c.begets_begin ());
- i != c.begets_end (); ++i)
- {
- dispatch (i->derived ());
- }
-
- down_ = down;
- }
- }
-
- private:
- bool up_, down_;
- };
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- using SemanticGraph::Compositor;
-
- // Find our complex type.
- //
- Compositor* c (&a.contained_particle ().compositor ());
-
- while(!c->contained_compositor_p ())
- c = &c->contained_particle ().compositor ();
-
- SemanticGraph::Complex& type (
- dynamic_cast<SemanticGraph::Complex&> (
- c->contained_compositor ().container ()));
-
- Complex complex;
- Traversal::Names names;
- Element element (*this, a);
-
- complex >> names >> element;
-
- complex.dispatch (type);
- }
- };
-
-
- //
- //
- struct Traverser: Traversal::Schema,
- Traversal::Complex,
- Traversal::Type,
- Traversal::Element,
- ValidationContext
- {
- Traverser (ValidationContext& c)
- : ValidationContext (c), any_ (c)
- {
- *this >> sources_ >> *this;
- *this >> schema_names_ >> ns_ >> names_;
-
- names_ >> *this >> names_;
-
- // Any
- //
- if (!is_disabled ("T001"))
- {
- *this >> contains_compositor_ >> compositor_ >> contains_particle_;
- contains_particle_ >> compositor_;
- contains_particle_ >> any_;
- }
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- using SemanticGraph::Schema;
-
- traverse (static_cast<SemanticGraph::Type&> (c));
-
- if (c.inherits_p ())
- {
- SemanticGraph::Type& t (c.inherits ().base ());
-
- if (t.named_p () &&
- types_.find (
- t.scope ().name () + L"#" + t.name ()) == types_.end ())
- {
- // Don't worry about types that are in included/imported
- // schemas.
- //
- Schema& s (dynamic_cast<Schema&> (t.scope ().scope ()));
-
- if (&s == &schema_root || sources_p (schema_root, s))
- {
- valid = false;
-
- os << c.file () << ":" << c.line () << ":" << c.column ()
- << ": error: type '" << xpath (c) << "' inherits from "
- << "yet undefined type '" << xpath (t) << "'" << endl;
-
- os << t.file () << ":" << t.line () << ":" << t.column ()
- << ": info: '" << xpath (t) << "' is defined here"
- << endl;
-
- os << c.file () << ":" << c.line () << ":" << c.column ()
- << ": info: inheritance from a yet-undefined type is "
- << "not supported" << endl;
-
- os << c.file () << ":" << c.line () << ":" << c.column ()
- << ": info: re-arrange your schema and try again"
- << endl;
- }
- }
- }
-
- Complex::traverse (c);
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- // This is also used to traverse Complex.
- //
- if (t.named_p ())
- {
- types_.insert (t.scope ().name () + L"#" + t.name ());
- }
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (is_disabled ("T002"))
- return;
-
- // Note that there is no test for generate_p since we want
- // to catch cases when things are not being generated but
- // most likely should have been.
- //
- if (e.substitutes_p () && !polymorphic &&
- !subst_group_warning_issued)
- {
- subst_group_warning_issued = true;
-
- os << e.file () << ":" << e.line () << ":" << e.column ()
- << ": warning T002: substitution groups are used but "
- << "--generate-polymorphic was not specified" << endl;
-
- os << e.file () << ":" << e.line () << ":" << e.column ()
- << ": info: generated code may not be able to handle "
- << "some conforming instances" << endl;
- }
- }
-
- // Return true if root sources s.
- //
- bool
- sources_p (SemanticGraph::Schema& root, SemanticGraph::Schema& s)
- {
- using SemanticGraph::Schema;
- using SemanticGraph::Sources;
-
- for (Schema::UsesIterator i (root.uses_begin ());
- i != root.uses_end (); ++i)
- {
- if (i->is_a<Sources> ())
- {
- if (&i->schema () == &s || sources_p (i->schema (), s))
- return true;
- }
- }
-
- return false;
- }
-
- private:
- set<String> types_;
-
- Sources sources_;
-
- Traversal::Names schema_names_;
- Traversal::Namespace ns_;
-
- Traversal::Names names_;
-
- // Any.
- //
- Any any_;
- Traversal::Compositor compositor_;
- Traversal::ContainsParticle contains_particle_;
- Traversal::ContainsCompositor contains_compositor_;
- };
-
-
- struct AnonymousType: Traversal::Schema,
- Traversal::Complex,
- Traversal::Element,
- Traversal::Attribute,
- ValidationContext
- {
- AnonymousType (ValidationContext& c)
- : ValidationContext (c),
- anonymous_error_issued_ (false)
- {
- *this >> sources_ >> *this;
- *this >> schema_names_ >> ns_ >> names_ >> *this;
- *this >> names_;
- }
-
- bool
- traverse_common (SemanticGraph::Member& m)
- {
- SemanticGraph::Type& t (m.type ());
-
- if (!t.named_p ()
- && !t.is_a<SemanticGraph::Fundamental::IdRef> ()
- && !t.is_a<SemanticGraph::Fundamental::IdRefs> ())
- {
- if (!anonymous_error_issued_)
- {
- valid = false;
- anonymous_error_issued_ = true;
-
- wcerr << t.file ()
- << ": error: anonymous types detected"
- << endl;
-
- wcerr << t.file ()
- << ": info: "
- << "anonymous types are not supported in this mapping"
- << endl;
-
- wcerr << t.file ()
- << ": info: consider explicitly naming these types or "
- << "remove the --preserve-anonymous option to "
- << "automatically name them"
- << endl;
-
- if (!options.show_anonymous ())
- wcerr << t.file ()
- << ": info: use --show-anonymous option to see these "
- << "types" << endl;
- }
-
- return true;
- }
-
- return false;
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- if (skip (e)) return;
-
- if (traverse_common (e))
- {
- if (options.show_anonymous ())
- {
- wcerr << e.file () << ":" << e.line () << ":" << e.column ()
- << ": error: element '" << xpath (e) << "' "
- << "is of anonymous type" << endl;
- }
- }
- else
- Traversal::Element::traverse (e);
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- if (traverse_common (a))
- {
- if (options.show_anonymous ())
- {
- wcerr << a.file () << ":" << a.line () << ":" << a.column ()
- << ": error: attribute '" << xpath (a) << "' "
- << "is of anonymous type" << endl;
- }
- }
- else
- Traversal::Attribute::traverse (a);
- }
-
- private:
- bool anonymous_error_issued_;
-
- set<String> types_;
-
- Sources sources_;
-
- Traversal::Names schema_names_;
- Traversal::Namespace ns_;
-
- Traversal::Names names_;
- };
- }
-
- bool Validator::
- validate (options const& ops,
- SemanticGraph::Schema& schema,
- SemanticGraph::Path const& path,
- const WarningSet& disabled_warnings,
- Counts const& counts)
- {
- bool valid (true);
- ValidationContext ctx (
- schema, path, ops, disabled_warnings, counts, false, valid);
-
- //
- //
- bool import_maps (ops.import_maps ());
- bool export_maps (ops.export_maps ());
-
- if (import_maps && export_maps)
- {
- wcerr << "error: --import-maps and --export-maps are "
- << "mutually exclusive" << endl;
-
- return false;
- }
-
- if (import_maps && !ctx.polymorphic)
- {
- wcerr << "error: --import-maps can only be specified together with "
- << "--generate-polymorphic" << endl;
-
- return false;
- }
-
- if (export_maps && !ctx.polymorphic)
- {
- wcerr << "error: --export-maps can only be specified together " <<
- "with --generate-polymorphic" << endl;
-
- return false;
- }
-
- //
- //
- if (ops.char_type () != "char" &&
- ops.char_type () != "wchar_t" &&
- !ctx.is_disabled ("T003"))
- {
- wcerr << "warning T003: unknown base character type '" <<
- ops.char_type ().c_str () << "'" << endl;
- }
-
- //
- //
- NarrowString tn (ops.type_naming ());
-
- if (tn != "knr" && tn != "ucc" && tn != "java")
- {
- wcerr << "error: unknown type naming style specified: '" <<
- tn.c_str () << "'" << endl;
-
- return false;
- }
-
- NarrowString fn (ops.function_naming ());
-
- if (fn != "knr" && fn != "lcc" && fn != "java")
- {
- wcerr << "error: unknown function naming style specified: '" <<
- fn.c_str () << "'" << endl;
-
- return false;
- }
-
- //
- //
- bool element_type (ops.generate_element_type ());
- bool par (!ops.suppress_parsing ());
- bool ser (ops.generate_serialization ());
-
- if (ops.generate_element_map ())
- {
- if (!element_type)
- {
- wcerr << "error: --generate-element-map can only be specified " <<
- "together with --generate-element-type" << endl;
-
- return false;
- }
-
- if (!(par || ser))
- {
- wcerr << "error: --generate-element-map is specified but " <<
- "neither parsing nor serialization code is generated" << endl;
-
- return false;
- }
- }
-
- // Issue a warning if there are more than one global element
- // and we are generating parsing/serialization functions or
- // element types for all of them by default.
- //
-
- if (counts.global_elements > 1 &&
- (element_type || par || ser) &&
- !ops.root_element_first () &&
- !ops.root_element_last () &&
- !ops.root_element_all () &&
- !ops.root_element_none () &&
- ops.root_element ().empty () &&
- !ctx.is_disabled ("T004"))
- {
- wcerr << schema.file () << ": warning T004: generating ";
-
- if (element_type)
- wcerr << "element types";
- else
- {
- wcerr << (par ? "parsing " : "") <<
- (ser ? (par ? "and serialization " : "serialization ") : "") <<
- "functions";
- }
- wcerr << " for " << counts.global_elements << " global elements" <<
- endl;
-
- wcerr << schema.file () << ": info: use --root-element-* options "
- << "to specify document root(s)" << endl;
- }
-
-
- // Test for anonymout types.
- //
- {
- AnonymousType traverser (ctx);
- traverser.dispatch (schema);
- }
-
- // Test the rest.
- //
- if (valid)
- {
- Traverser traverser (ctx);
- traverser.dispatch (schema);
- }
-
- return valid;
-
- // T005 is used in polymorphism-processor.cxx.
- //
- }
- }
-}
diff --git a/xsd/xsd/cxx/tree/validator.hxx b/xsd/xsd/cxx/tree/validator.hxx
deleted file mode 100644
index 58ec85e..0000000
--- a/xsd/xsd/cxx/tree/validator.hxx
+++ /dev/null
@@ -1,30 +0,0 @@
-// file : xsd/cxx/tree/validator.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef CXX_TREE_VALIDATOR_HXX
-#define CXX_TREE_VALIDATOR_HXX
-
-#include <cxx/tree/elements.hxx>
-#include <cxx/tree/options.hxx>
-
-#include <xsd.hxx>
-
-namespace CXX
-{
- namespace Tree
- {
- class Validator
- {
- public:
- bool
- validate (options const&,
- SemanticGraph::Schema&,
- SemanticGraph::Path const& tu,
- const WarningSet& disabled_warnings,
- Counts const& counts);
- };
- }
-}
-
-#endif // CXX_TREE_VALIDATOR_HXX
diff --git a/xsd/xsd/elements.hxx b/xsd/xsd/elements.hxx
deleted file mode 100644
index b09803f..0000000
--- a/xsd/xsd/elements.hxx
+++ /dev/null
@@ -1,126 +0,0 @@
-// file : xsd/elements.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef ELEMENTS_HXX
-#define ELEMENTS_HXX
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <types.hxx>
-
-namespace SemanticGraph = XSDFrontend::SemanticGraph;
-namespace Traversal = XSDFrontend::Traversal;
-
-// Anonymous feedback via belongs edge.
-//
-struct AnonymousBase : Traversal::Element, Traversal::Attribute
-{
- AnonymousBase (Traversal::NodeDispatcher& d1)
- : complex_ (&d1, 0)
- {
- edge_traverser (belongs_);
- belongs_.node_traverser (complex_);
- }
-
- AnonymousBase (Traversal::NodeDispatcher& d1, Traversal::NodeDispatcher& d2)
- : complex_ (&d1, &d2)
- {
- edge_traverser (belongs_);
- belongs_.node_traverser (complex_);
- }
-
- // Hooks.
- //
-public:
- virtual void
- member_pre (SemanticGraph::Member&)
- {
- }
-
- virtual void
- member_post (SemanticGraph::Member&)
- {
- }
-
- /*
- virtual void
- type_pre (SemanticGraph::Type& t)
- {
- }
-
- virtual void
- type_post (SemanticGraph::Type& t)
- {
- }
- */
-
-public:
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- SemanticGraph::Type& t (e.type ());
-
- if (!t.named_p () && !t.context ().count ("seen"))
- {
- t.context ().set ("seen", true);
-
- member_pre (e);
-
- Element::belongs (e, belongs_);
-
- member_post (e);
-
- t.context ().remove ("seen");
- }
- }
-
- virtual void
- traverse (SemanticGraph::Attribute& a)
- {
- SemanticGraph::Type& t (a.type ());
-
- if (!t.named_p () && !t.context ().count ("seen"))
- {
- t.context ().set ("seen", true);
-
- member_pre (a);
-
- Attribute::belongs (a, belongs_);
-
- member_post (a);
-
- t.context ().remove ("seen");
- }
- }
-
-private:
- struct Complex : Traversal::Complex
- {
- Complex (Traversal::NodeDispatcher* d1, Traversal::NodeDispatcher* d2)
- : d1_ (d1), d2_ (d2)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- if (d1_)
- d1_->dispatch (c);
-
- if (d2_)
- d2_->dispatch (c);
- }
-
- private:
- Traversal::NodeDispatcher* d1_;
- Traversal::NodeDispatcher* d2_;
-
- } complex_;
-
- Traversal::Belongs belongs_;
-};
-
-#endif // ELEMENTS_HXX
diff --git a/xsd/xsd/makefile b/xsd/xsd/makefile
deleted file mode 100644
index d57022d..0000000
--- a/xsd/xsd/makefile
+++ /dev/null
@@ -1,191 +0,0 @@
-# file : xsd/makefile
-# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-cxx_tun := xsd.cxx
-
-cxx_tun += cxx/elements.cxx \
- cxx/literal-map.cxx \
- cxx/option-types.cxx
-
-cxx_tun += cxx/parser/elements.cxx \
- cxx/parser/validator.cxx \
- cxx/parser/name-processor.cxx \
- cxx/parser/type-processor.cxx \
- cxx/parser/state-processor.cxx \
- cxx/parser/generator.cxx \
- cxx/parser/parser-header.cxx \
- cxx/parser/parser-inline.cxx \
- cxx/parser/parser-source.cxx \
- cxx/parser/parser-forward.cxx \
- cxx/parser/impl-header.cxx \
- cxx/parser/impl-source.cxx \
- cxx/parser/driver-source.cxx \
- cxx/parser/element-validation-source.cxx \
- cxx/parser/attribute-validation-source.cxx \
- cxx/parser/characters-validation-source.cxx
-
-cxx_tun += cxx/tree/elements.cxx \
- cxx/tree/validator.cxx \
- cxx/tree/counter.cxx \
- cxx/tree/name-processor.cxx \
- cxx/tree/order-processor.cxx \
- cxx/tree/polymorphism-processor.cxx \
- cxx/tree/default-value.cxx \
- cxx/tree/generator.cxx \
- cxx/tree/tree-forward.cxx \
- cxx/tree/tree-header.cxx \
- cxx/tree/tree-inline.cxx \
- cxx/tree/tree-source.cxx \
- cxx/tree/parser-header.cxx \
- cxx/tree/parser-source.cxx \
- cxx/tree/stream-header.cxx \
- cxx/tree/stream-source.cxx \
- cxx/tree/serialization-header.cxx \
- cxx/tree/serialization-source.cxx \
- cxx/tree/stream-insertion-header.cxx \
- cxx/tree/stream-insertion-source.cxx \
- cxx/tree/stream-extraction-source.cxx
-
-
-# Type map.
-#
-cxx_tun += type-map/lexer.cxx \
- type-map/parser.cxx
-
-# Processing.
-#
-cxx_tun += processing/cardinality/processor.cxx \
- processing/inheritance/processor.cxx
-
-# Options file.
-#
-cli_tun := options.cli \
- cxx/options.cli \
- cxx/tree/options.cli \
- cxx/parser/options.cli
-
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o) $(cli_tun:.cli=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-xsd := $(out_base)/xsd
-install := $(out_base)/.install
-dist := $(out_base)/.dist
-dist-win := $(out_base)/.dist-win
-clean := $(out_base)/.clean
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/cli/stub.make,\
- cli: cli,cli-rules: cli_rules)
-
-$(call import,\
- $(scf_root)/import/libcutl/stub.make,\
- l: cutl.l,cpp-options: cutl.l.cpp-options)
-
-$(call import,\
- $(scf_root)/import/libxsd-frontend/stub.make,\
- l: xsd_fe.l,cpp-options: xsd_fe.l.cpp-options)
-
-$(call import,\
- $(scf_root)/import/libxerces-c/stub.make,\
- l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
-
-# Build.
-#
-$(xsd): $(cxx_obj) $(xsd_fe.l) $(cutl.l) $(xerces_c.l)
-
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): \
- $(xsd_fe.l.cpp-options) \
- $(cutl.l.cpp-options) \
- $(xerces_c.l.cpp-options)
-
-genf := $(cli_tun:.cli=.hxx) $(cli_tun:.cli=.ixx) $(cli_tun:.cli=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-# Don't depend on installed executable since it may not exist.
-#
-ifneq ($(cli),cli)
-$(gen): $(cli)
-endif
-$(gen): cli := $(cli)
-$(gen): cli_options += \
--I $(src_base) \
---generate-specifier \
---ostream-type ::std::wostream \
---exclude-base \
---suppress-undocumented \
---generate-file-scanner \
---include-with-brackets \
---option-length 28 \
---cxx-prologue '\#include <options-parser.hxx>'
-
-#--include-prefix xsd
-#--guard-prefix XSD
-
-$(addprefix $(out_base)/cxx/options,.hxx .ixx .cxx): $(src_base)/options.cli
-$(addprefix $(out_base)/cxx/options,.hxx .ixx .cxx): cli_options += \
---include-prefix cxx --guard-prefix CXX
-
-$(addprefix $(out_base)/cxx/tree/options,.hxx .ixx .cxx): \
-$(src_base)/options.cli $(src_base)/cxx/options.cli
-$(addprefix $(out_base)/cxx/tree/options,.hxx .ixx .cxx): cli_options += \
---include-prefix cxx/tree --guard-prefix CXX_TREE
-
-$(addprefix $(out_base)/cxx/parser/options,.hxx .ixx .cxx): \
-$(src_base)/options.cli $(src_base)/cxx/options.cli
-$(addprefix $(out_base)/cxx/parser/options,.hxx .ixx .cxx): cli_options += \
---include-prefix cxx/parser --guard-prefix CXX_PARSER
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(xsd)
-
-# Install
-#
-$(install): $(xsd)
- $(call install-exec,$<,$(install_bin_dir)/xsd)
-
-# Dist.
-#
-$(dist): $(xsd)
- $(call install-exec,$<,$(dist_prefix)/bin/xsd)
-
-$(dist-win): $(xsd)
- $(call install-exec,$<,$(dist_prefix)/bin/xsd.exe)
-
-# Clean.
-#
-$(clean): \
- $(xsd).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-ifneq ($(xsd_clean_gen),n)
-$(clean): $(addprefix $(out_base)/,$(cli_tun:.cli=.cxx.cli.clean))
-endif
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(xsd): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := xsd $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(cli_rules))
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/install.make)
diff --git a/xsd/xsd/options-parser.hxx b/xsd/xsd/options-parser.hxx
deleted file mode 100644
index 0f370cd..0000000
--- a/xsd/xsd/options-parser.hxx
+++ /dev/null
@@ -1,30 +0,0 @@
-// file : xsd/options-parser.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef OPTIONS_PARSER_HXX
-#define OPTIONS_PARSER_HXX
-
-#include <types.hxx>
-#include <options.hxx>
-
-namespace cli
-{
- template <>
- struct parser<NarrowString>
- {
- static void
- parse (NarrowString& x, bool& xs, scanner& s)
- {
- xs = true;
- const char* o (s.next ());
-
- if (s.more ())
- x = s.next ();
- else
- throw missing_value (o);
- }
- };
-}
-
-#endif // OPTIONS_PARSER_HXX
diff --git a/xsd/xsd/options.cli b/xsd/xsd/options.cli
deleted file mode 100644
index 1ebb38e..0000000
--- a/xsd/xsd/options.cli
+++ /dev/null
@@ -1,313 +0,0 @@
-// file : xsd/options.cli
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include <cstddef>; // std::size_t
-
-include <types.hxx>; // NarrowString, NarrowStrings
-
-class help_options
-{
- // These are all documented elsewhere.
- //
- bool --help;
- bool --version;
- bool --proprietary-license;
-};
-
-class options = 0
-{
- NarrowStrings --disable-warning
- {
- "<warn>",
- "Disable printing warning with id <warn>. If \cb{all} is specified for
- the warning id then all warnings are disabled."
- };
-
- // The following option is "fake" in that it is actually handled by
- // argv_file_scanner. We have it here to get the documentation.
- //
- std::string --options-file
- {
- "<file>",
- "Read additional options from <file>. Each option should appearing on a
- separate line optionally followed by space and an option value. Empty
- lines and lines starting with \cb{#} are ignored. Option values can
- be enclosed in double (\cb{\"}) or single (\cb{'}) quotes to preserve
- leading and trailing whitespaces as well as to specify empty values.
- If the value itself contains trailing or leading quotes, enclose it
- with an extra pair of quotes, for example \cb{'\"x\"'}. Non-leading
- and non-trailing quotes are interpreted as being part of the option
- value.
-
- The semantics of providing options in a file is equivalent to providing
- the same set of options in the same order on the command line at the
- point where the \cb{--options-file} option is specified except that
- the shell escaping and quoting is not required. You can repeat this
- option to specify more than one options file."
- };
-
- // SLOC/license options.
- //
- bool --show-sloc
- {
- "Show the number of generated physical source lines of code (SLOC)."
- };
-
- std::size_t --sloc-limit
- {
- "<num>",
- "Check that the number of generated physical source lines of code (SLOC)
- does not exceed <num>."
- };
-
- bool --proprietary-license
- {
- "Indicate that the generated code is licensed under a proprietary
- license instead of the GPL."
- };
-
- NarrowString --custom-literals
- {
- "<file>",
- "Load custom XML string to C++ literal mappings from <file>. This
- mechanism can be useful if you are using a custom character encoding
- and some of the strings in your schemas, for example element/attribute
- names or enumeration values, contain non-ASCII characters. In this
- case you will need to provide a custom mapping to C++ literals for
- such strings. The format of this file is specified in the
- \cb{custom-literals.xsd} XML Schema file that can be found in the
- documentation directory."
- };
-
- // Anonymous type morphing.
- //
- bool --preserve-anonymous
- {
- "Preserve anonymous types. By default anonymous types are automatically
- named with names derived from the enclosing elements/attributes. Because
- mappings implemented by this compiler require all types to be named,
- this option is only useful if you want to make sure your schemas don't
- have anonymous types."
- };
-
- bool --show-anonymous
- {
- "Show elements and attributes that are of anonymous types. This option
- only makes sense together with the \cb{--preserve-anonymous} option."
- };
-
- NarrowStrings --anonymous-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to derive names for
- anonymous types from the enclosing attributes/elements. <regex> is a
- Perl-like regular expression in the form
- \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}.
- Any character can be used as a delimiter instead of \cb{/}. Escaping of
- the delimiter character in \ci{pattern} or \ci{replacement} is not
- supported.
-
- All the regular expressions are pushed into a stack with the last
- specified expression considered first. The first match that succeeds is
- used. Regular expressions are applied to a string in the form
-
- \c{\i{filename} \i{namespace} \i{xpath}}
-
- For instance:
-
- \cb{hello.xsd http://example.com/hello element}
-
- \cb{hello.xsd http://example.com/hello type/element}
-
- As an example, the following expression makes all the derived names
- start with capital letters. This could be useful when your naming
- convention requires type names to start with capital letters:
-
- \cb{%.* .* (.+/)*(.+)%\\u$2%}
-
- See also the REGEX AND SHELL QUOTING section below."
- };
-
- bool --anonymous-regex-trace
- {
- "Trace the process of applying regular expressions specified with the
- \cb{--anonymous-regex} option. Use this option to find out why your
- regular expressions don't do what you expected them to do."
- };
-
- bool --morph-anonymous; // Deprecated and therefore undocumented.
-
- // Location options.
- //
- NarrowStrings --location-map
- {
- "<ol>=<nl>",
- "Map the original schema location <ol> that is specified in the XML
- Schema include or import elements to new schema location <nl>. Repeat
- this option to map more than one schema location. For example, the
- following option maps the \cb{http://example.com/foo.xsd} URL to the
- \cb{foo.xsd} local file.
-
- \cb{--location-map http://example.com/foo.xsd=foo.xsd}"
- };
-
- NarrowStrings --location-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to map schema
- locations that are specified in the XML Schema include or import
- elements. <regex> is a Perl-like regular expression in the form
- \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. Any character can
- be used as a delimiter instead of \cb{/}. Escaping of the delimiter
- character in \ci{pattern} or \ci{replacement} is not supported. All
- the regular expressions are pushed into a stack with the last specified
- expression considered first. The first match that succeeds is used.
-
- For example, the following expression maps URL locations in the form
- \cb{http://example.com/foo/bar.xsd} to local files in the form
- \cb{bar.xsd}:
-
- \cb{%http://.+/(.+)%$1%}
-
- See also the REGEX AND SHELL QUOTING section below."
- };
-
- bool --location-regex-trace
- {
- "Trace the process of applying regular expressions specified with the
- \cb{--location-regex} option. Use this option to find out why your
- regular expressions don't do what you expected them to do."
- };
-
- // File-per-type option.
- //
- bool --file-per-type
- {
- "Generate a separate set of C++ files for each type defined in XML
- Schema. Note that in this mode you only need to compile the root
- schema(s) and the code will be generated for all included and
- imported schemas. This compilation mode is primarily useful when
- some of your schemas cannot be compiled separately or have cyclic
- dependencies which involve type inheritance. Other options related
- to this mode are: \cb{--type-file-regex}, \cb{--schema-file-regex},
- \cb{--fat-type-file}, and \cb{--file-list}."
- };
-
- NarrowStrings --type-file-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate type
- names to file names when the \cb{--file-per-type} option is specified.
- <regex> is a Perl-like regular expression in the form
- \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. Any character can be
- used as a delimiter instead of \cb{/}. Escaping of the delimiter
- character in \ci{pattern} or \ci{replacement} is not supported. All
- the regular expressions are pushed into a stack with the last specified
- expression considered first. The first match that succeeds is used.
- Regular expressions are applied to a string in the form
-
- \c{\i{namespace} \i{type-name}}
-
- For example, the following expression maps type \cb{foo} that is
- defined in the \cb{http://example.com/bar} namespace to file name
- \cb{bar-foo}:
-
- \cb{%http://example.com/(.+) (.+)%$1-$2%}
-
- See also the REGEX AND SHELL QUOTING section below."
- };
-
- bool --type-file-regex-trace
- {
- "Trace the process of applying regular expressions specified with the
- \cb{--type-file-regex} option. Use this option to find out why your
- regular expressions don't do what you expected them to do."
- };
-
- NarrowStrings --schema-file-regex
- {
- "<regex>",
- "Add <regex> to the list of regular expressions used to translate schema
- file names when the \cb{--file-per-type} option is specified. <regex> is
- a Perl-like regular expression in the form
- \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. Any character can be used
- as a delimiter instead of \cb{/}. Escaping of the delimiter character in
- \ci{pattern} or \ci{replacement} is not supported. All the regular
- expressions are pushed into a stack with the last specified expression
- considered first. The first match that succeeds is used. Regular
- Expressions are applied to the absolute filesystem path of a schema file
- and the result, including the directory part, if any, is used to derive
- the \cb{#include} directive paths as well as the generated C++ file
- paths. This option, along with \cb{--type-file-regex} are primarily
- useful to place the generated files into subdirectories or to resolve
- file name conflicts.
-
- For example, the following expression maps schema files in the
- \cb{foo/1.0.0/} subdirectory to the files in the \cb{foo/} subdirectory.
- As a result, the \cb{#include} directive paths for such schemas will be
- in the \cb{foo/schema.hxx} form and the generated C++ files will be
- placed into the \cb{foo/} subdirectory:
-
- \cb{%.*/foo/1.0.0/(.+)%foo/$1%}
-
- See also the REGEX AND SHELL QUOTING section below."
- };
-
- bool --schema-file-regex-trace
- {
- "Trace the process of applying regular expressions specified with the
- \cb{--schema-file-regex} option. Use this option to find out why your
- regular expressions don't do what you expected them to do."
- };
-
- bool --fat-type-file
- {
- "Generate code corresponding to global elements into type files instead
- of schema files when the \cb{--type-file-regex} option is specified.
- This option is primarily useful when trying to minimize the amount of
- object code that is linked to an executable by packaging compiled
- generated code into a static (archive) library."
- };
-
- // File list options.
- //
- NarrowString --file-list
- {
- "<file>",
- "Write a list of generated C++ files to <file>. This option is primarily
- useful in the file-per-type compilation mode (\cb{--file-per-type}) to
- create a list of generated C++ files, for example, as a makefile
- fragment."
- };
-
- NarrowString --file-list-prologue
- {
- "<text>",
- "Insert <text> at the beginning of the file list. As a convenience, all
- occurrences of the \cb{\\n} character sequence in <text> are replaced
- with new lines. This option can, for example, be used to assign the
- generated file list to a makefile variable."
- };
-
- NarrowString --file-list-epilogue
- {
- "<text>",
- "Insert <text> at the end of the file list. As a convenience, all
- occurrences of the \cb{\\n} character sequence in <text> are replaced
- with new lines."
- };
-
- NarrowString --file-list-delim = "\n"
- {
- "<text>",
- "Delimit file names written to the file list with <text> instead of new
- lines. As a convenience, all occurrences of the \cb{\\n} character
- sequence in <text> are replaced with new lines."
- };
-
- // Undocumented.
- //
- bool --disable-multi-import;
- bool --disable-full-check;
-};
diff --git a/xsd/xsd/options.cxx b/xsd/xsd/options.cxx
deleted file mode 100644
index 3af99f2..0000000
--- a/xsd/xsd/options.cxx
+++ /dev/null
@@ -1,976 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-// Begin prologue.
-//
-#include <options-parser.hxx>
-//
-// End prologue.
-
-#include <options.hxx>
-
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
-#include <ostream>
-#include <sstream>
-#include <cstring>
-#include <fstream>
-
-namespace cli
-{
- // unknown_option
- //
- unknown_option::
- ~unknown_option () throw ()
- {
- }
-
- void unknown_option::
- print (::std::wostream& os) const
- {
- os << "unknown option '" << option ().c_str () << "'";
- }
-
- const char* unknown_option::
- what () const throw ()
- {
- return "unknown option";
- }
-
- // unknown_argument
- //
- unknown_argument::
- ~unknown_argument () throw ()
- {
- }
-
- void unknown_argument::
- print (::std::wostream& os) const
- {
- os << "unknown argument '" << argument ().c_str () << "'";
- }
-
- const char* unknown_argument::
- what () const throw ()
- {
- return "unknown argument";
- }
-
- // missing_value
- //
- missing_value::
- ~missing_value () throw ()
- {
- }
-
- void missing_value::
- print (::std::wostream& os) const
- {
- os << "missing value for option '" << option ().c_str () << "'";
- }
-
- const char* missing_value::
- what () const throw ()
- {
- return "missing option value";
- }
-
- // invalid_value
- //
- invalid_value::
- ~invalid_value () throw ()
- {
- }
-
- void invalid_value::
- print (::std::wostream& os) const
- {
- os << "invalid value '" << value ().c_str () << "' for option '"
- << option ().c_str () << "'";
- }
-
- const char* invalid_value::
- what () const throw ()
- {
- return "invalid option value";
- }
-
- // eos_reached
- //
- void eos_reached::
- print (::std::wostream& os) const
- {
- os << what ();
- }
-
- const char* eos_reached::
- what () const throw ()
- {
- return "end of argument stream reached";
- }
-
- // file_io_failure
- //
- file_io_failure::
- ~file_io_failure () throw ()
- {
- }
-
- void file_io_failure::
- print (::std::wostream& os) const
- {
- os << "unable to open file '" << file ().c_str () << "' or read failure";
- }
-
- const char* file_io_failure::
- what () const throw ()
- {
- return "unable to open file or read failure";
- }
-
- // unmatched_quote
- //
- unmatched_quote::
- ~unmatched_quote () throw ()
- {
- }
-
- void unmatched_quote::
- print (::std::wostream& os) const
- {
- os << "unmatched quote in argument '" << argument ().c_str () << "'";
- }
-
- const char* unmatched_quote::
- what () const throw ()
- {
- return "unmatched quote";
- }
-
- // scanner
- //
- scanner::
- ~scanner ()
- {
- }
-
- // argv_scanner
- //
- bool argv_scanner::
- more ()
- {
- return i_ < argc_;
- }
-
- const char* argv_scanner::
- peek ()
- {
- if (i_ < argc_)
- return argv_[i_];
- else
- throw eos_reached ();
- }
-
- const char* argv_scanner::
- next ()
- {
- if (i_ < argc_)
- {
- const char* r (argv_[i_]);
-
- if (erase_)
- {
- for (int i (i_ + 1); i < argc_; ++i)
- argv_[i - 1] = argv_[i];
-
- --argc_;
- argv_[argc_] = 0;
- }
- else
- ++i_;
-
- return r;
- }
- else
- throw eos_reached ();
- }
-
- void argv_scanner::
- skip ()
- {
- if (i_ < argc_)
- ++i_;
- else
- throw eos_reached ();
- }
-
- // argv_file_scanner
- //
- bool argv_file_scanner::
- more ()
- {
- if (!args_.empty ())
- return true;
-
- while (base::more ())
- {
- // See if the next argument is the file option.
- //
- const char* a (base::peek ());
- const option_info* oi;
-
- if (!skip_ && (oi = find (a)))
- {
- base::next ();
-
- if (!base::more ())
- throw missing_value (oi->option);
-
- if (oi->search_func != 0)
- {
- std::string f (oi->search_func (base::next (), oi->arg));
-
- if (!f.empty ())
- load (f);
- }
- else
- load (base::next ());
-
- if (!args_.empty ())
- return true;
- }
- else
- {
- if (!skip_)
- skip_ = (std::strcmp (a, "--") == 0);
-
- return true;
- }
- }
-
- return false;
- }
-
- const char* argv_file_scanner::
- peek ()
- {
- if (!more ())
- throw eos_reached ();
-
- return args_.empty () ? base::peek () : args_.front ().c_str ();
- }
-
- const char* argv_file_scanner::
- next ()
- {
- if (!more ())
- throw eos_reached ();
-
- if (args_.empty ())
- return base::next ();
- else
- {
- hold_.swap (args_.front ());
- args_.pop_front ();
- return hold_.c_str ();
- }
- }
-
- void argv_file_scanner::
- skip ()
- {
- if (!more ())
- throw eos_reached ();
-
- if (args_.empty ())
- return base::skip ();
- else
- args_.pop_front ();
- }
-
- const argv_file_scanner::option_info* argv_file_scanner::
- find (const char* a) const
- {
- for (std::size_t i (0); i < options_count_; ++i)
- if (std::strcmp (a, options_[i].option) == 0)
- return &options_[i];
-
- return 0;
- }
-
- void argv_file_scanner::
- load (const std::string& file)
- {
- using namespace std;
-
- ifstream is (file.c_str ());
-
- if (!is.is_open ())
- throw file_io_failure (file);
-
- while (!is.eof ())
- {
- string line;
- getline (is, line);
-
- if (is.fail () && !is.eof ())
- throw file_io_failure (file);
-
- string::size_type n (line.size ());
-
- // Trim the line from leading and trailing whitespaces.
- //
- if (n != 0)
- {
- const char* f (line.c_str ());
- const char* l (f + n);
-
- const char* of (f);
- while (f < l && (*f == ' ' || *f == '\t' || *f == '\r'))
- ++f;
-
- --l;
-
- const char* ol (l);
- while (l > f && (*l == ' ' || *l == '\t' || *l == '\r'))
- --l;
-
- if (f != of || l != ol)
- line = f <= l ? string (f, l - f + 1) : string ();
- }
-
- // Ignore empty lines, those that start with #.
- //
- if (line.empty () || line[0] == '#')
- continue;
-
- string::size_type p (line.find (' '));
-
- if (p == string::npos)
- {
- if (!skip_)
- skip_ = (line == "--");
-
- args_.push_back (line);
- }
- else
- {
- string s1 (line, 0, p);
-
- // Skip leading whitespaces in the argument.
- //
- n = line.size ();
- for (++p; p < n; ++p)
- {
- char c (line[p]);
-
- if (c != ' ' && c != '\t' && c != '\r')
- break;
- }
-
- string s2 (line, p);
-
- // If the string is wrapped in quotes, remove them.
- //
- n = s2.size ();
- char cf (s2[0]), cl (s2[n - 1]);
-
- if (cf == '"' || cf == '\'' || cl == '"' || cl == '\'')
- {
- if (n == 1 || cf != cl)
- throw unmatched_quote (s2);
-
- s2 = string (s2, 1, n - 2);
- }
-
- const option_info* oi;
- if (!skip_ && (oi = find (s1.c_str ())))
- {
- if (s2.empty ())
- throw missing_value (oi->option);
-
- if (oi->search_func != 0)
- {
- std::string f (oi->search_func (s2.c_str (), oi->arg));
-
- if (!f.empty ())
- load (f);
- }
- else
- load (s2);
- }
- else
- {
- args_.push_back (s1);
- args_.push_back (s2);
- }
- }
- }
- }
-
- template <typename X>
- struct parser
- {
- static void
- parse (X& x, bool& xs, scanner& s)
- {
- std::string o (s.next ());
-
- if (s.more ())
- {
- std::string v (s.next ());
- std::istringstream is (v);
- if (!(is >> x && is.eof ()))
- throw invalid_value (o, v);
- }
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <>
- struct parser<bool>
- {
- static void
- parse (bool& x, scanner& s)
- {
- s.next ();
- x = true;
- }
- };
-
- template <>
- struct parser<std::string>
- {
- static void
- parse (std::string& x, bool& xs, scanner& s)
- {
- const char* o (s.next ());
-
- if (s.more ())
- x = s.next ();
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <typename X>
- struct parser<std::vector<X> >
- {
- static void
- parse (std::vector<X>& c, bool& xs, scanner& s)
- {
- X x;
- bool dummy;
- parser<X>::parse (x, dummy, s);
- c.push_back (x);
- xs = true;
- }
- };
-
- template <typename X>
- struct parser<std::set<X> >
- {
- static void
- parse (std::set<X>& c, bool& xs, scanner& s)
- {
- X x;
- bool dummy;
- parser<X>::parse (x, dummy, s);
- c.insert (x);
- xs = true;
- }
- };
-
- template <typename K, typename V>
- struct parser<std::map<K, V> >
- {
- static void
- parse (std::map<K, V>& m, bool& xs, scanner& s)
- {
- std::string o (s.next ());
-
- if (s.more ())
- {
- std::string ov (s.next ());
- std::string::size_type p = ov.find ('=');
-
- if (p == std::string::npos)
- {
- K k = K ();
-
- if (!ov.empty ())
- {
- std::istringstream ks (ov);
-
- if (!(ks >> k && ks.eof ()))
- throw invalid_value (o, ov);
- }
-
- m[k] = V ();
- }
- else
- {
- K k = K ();
- V v = V ();
- std::string kstr (ov, 0, p);
- std::string vstr (ov, p + 1);
-
- if (!kstr.empty ())
- {
- std::istringstream ks (kstr);
-
- if (!(ks >> k && ks.eof ()))
- throw invalid_value (o, ov);
- }
-
- if (!vstr.empty ())
- {
- std::istringstream vs (vstr);
-
- if (!(vs >> v && vs.eof ()))
- throw invalid_value (o, ov);
- }
-
- m[k] = v;
- }
- }
- else
- throw missing_value (o);
-
- xs = true;
- }
- };
-
- template <typename X, typename T, T X::*M>
- void
- thunk (X& x, scanner& s)
- {
- parser<T>::parse (x.*M, s);
- }
-
- template <typename X, typename T, T X::*M, bool X::*S>
- void
- thunk (X& x, scanner& s)
- {
- parser<T>::parse (x.*M, x.*S, s);
- }
-}
-
-#include <map>
-#include <cstring>
-
-// help_options
-//
-
-help_options::
-help_options ()
-: help_ (),
- version_ (),
- proprietary_license_ ()
-{
-}
-
-help_options::
-help_options (int& argc,
- char** argv,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
-: help_ (),
- version_ (),
- proprietary_license_ ()
-{
- ::cli::argv_scanner s (argc, argv, erase);
- _parse (s, opt, arg);
-}
-
-help_options::
-help_options (int start,
- int& argc,
- char** argv,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
-: help_ (),
- version_ (),
- proprietary_license_ ()
-{
- ::cli::argv_scanner s (start, argc, argv, erase);
- _parse (s, opt, arg);
-}
-
-help_options::
-help_options (int& argc,
- char** argv,
- int& end,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
-: help_ (),
- version_ (),
- proprietary_license_ ()
-{
- ::cli::argv_scanner s (argc, argv, erase);
- _parse (s, opt, arg);
- end = s.end ();
-}
-
-help_options::
-help_options (int start,
- int& argc,
- char** argv,
- int& end,
- bool erase,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
-: help_ (),
- version_ (),
- proprietary_license_ ()
-{
- ::cli::argv_scanner s (start, argc, argv, erase);
- _parse (s, opt, arg);
- end = s.end ();
-}
-
-help_options::
-help_options (::cli::scanner& s,
- ::cli::unknown_mode opt,
- ::cli::unknown_mode arg)
-: help_ (),
- version_ (),
- proprietary_license_ ()
-{
- _parse (s, opt, arg);
-}
-
-void help_options::
-print_usage (::std::wostream&)
-{
-}
-
-typedef
-std::map<std::string, void (*) (help_options&, ::cli::scanner&)>
-_cli_help_options_map;
-
-static _cli_help_options_map _cli_help_options_map_;
-
-struct _cli_help_options_map_init
-{
- _cli_help_options_map_init ()
- {
- _cli_help_options_map_["--help"] =
- &::cli::thunk< help_options, bool, &help_options::help_ >;
- _cli_help_options_map_["--version"] =
- &::cli::thunk< help_options, bool, &help_options::version_ >;
- _cli_help_options_map_["--proprietary-license"] =
- &::cli::thunk< help_options, bool, &help_options::proprietary_license_ >;
- }
-};
-
-static _cli_help_options_map_init _cli_help_options_map_init_;
-
-bool help_options::
-_parse (const char* o, ::cli::scanner& s)
-{
- _cli_help_options_map::const_iterator i (_cli_help_options_map_.find (o));
-
- if (i != _cli_help_options_map_.end ())
- {
- (*(i->second)) (*this, s);
- return true;
- }
-
- return false;
-}
-
-void help_options::
-_parse (::cli::scanner& s,
- ::cli::unknown_mode opt_mode,
- ::cli::unknown_mode arg_mode)
-{
- bool opt = true;
-
- while (s.more ())
- {
- const char* o = s.peek ();
-
- if (std::strcmp (o, "--") == 0)
- {
- s.skip ();
- opt = false;
- continue;
- }
-
- if (opt && _parse (o, s));
- else if (opt && std::strncmp (o, "-", 1) == 0 && o[1] != '\0')
- {
- switch (opt_mode)
- {
- case ::cli::unknown_mode::skip:
- {
- s.skip ();
- continue;
- }
- case ::cli::unknown_mode::stop:
- {
- break;
- }
- case ::cli::unknown_mode::fail:
- {
- throw ::cli::unknown_option (o);
- }
- }
-
- break;
- }
- else
- {
- switch (arg_mode)
- {
- case ::cli::unknown_mode::skip:
- {
- s.skip ();
- continue;
- }
- case ::cli::unknown_mode::stop:
- {
- break;
- }
- case ::cli::unknown_mode::fail:
- {
- throw ::cli::unknown_argument (o);
- }
- }
-
- break;
- }
- }
-}
-
-// options
-//
-
-options::
-options ()
-: disable_warning_ (),
- disable_warning_specified_ (false),
- options_file_ (),
- options_file_specified_ (false),
- show_sloc_ (),
- sloc_limit_ (),
- sloc_limit_specified_ (false),
- proprietary_license_ (),
- custom_literals_ (),
- custom_literals_specified_ (false),
- preserve_anonymous_ (),
- show_anonymous_ (),
- anonymous_regex_ (),
- anonymous_regex_specified_ (false),
- anonymous_regex_trace_ (),
- morph_anonymous_ (),
- location_map_ (),
- location_map_specified_ (false),
- location_regex_ (),
- location_regex_specified_ (false),
- location_regex_trace_ (),
- file_per_type_ (),
- type_file_regex_ (),
- type_file_regex_specified_ (false),
- type_file_regex_trace_ (),
- schema_file_regex_ (),
- schema_file_regex_specified_ (false),
- schema_file_regex_trace_ (),
- fat_type_file_ (),
- file_list_ (),
- file_list_specified_ (false),
- file_list_prologue_ (),
- file_list_prologue_specified_ (false),
- file_list_epilogue_ (),
- file_list_epilogue_specified_ (false),
- file_list_delim_ ("\n"),
- file_list_delim_specified_ (false),
- disable_multi_import_ (),
- disable_full_check_ ()
-{
-}
-
-void options::
-print_usage (::std::wostream& os)
-{
- os << "--disable-warning <warn> Disable printing warning with id <warn>." << ::std::endl;
-
- os << "--options-file <file> Read additional options from <file>." << ::std::endl;
-
- os << "--show-sloc Show the number of generated physical source lines" << ::std::endl
- << " of code (SLOC)." << ::std::endl;
-
- os << "--sloc-limit <num> Check that the number of generated physical source" << ::std::endl
- << " lines of code (SLOC) does not exceed <num>." << ::std::endl;
-
- os << "--proprietary-license Indicate that the generated code is licensed under" << ::std::endl
- << " a proprietary license instead of the GPL." << ::std::endl;
-
- os << "--custom-literals <file> Load custom XML string to C++ literal mappings" << ::std::endl
- << " from <file>." << ::std::endl;
-
- os << "--preserve-anonymous Preserve anonymous types." << ::std::endl;
-
- os << "--show-anonymous Show elements and attributes that are of anonymous" << ::std::endl
- << " types." << ::std::endl;
-
- os << "--anonymous-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to derive names for anonymous types from the" << ::std::endl
- << " enclosing attributes/elements." << ::std::endl;
-
- os << "--anonymous-regex-trace Trace the process of applying regular expressions" << ::std::endl
- << " specified with the '--anonymous-regex' option." << ::std::endl;
-
- os << "--location-map <ol>=<nl> Map the original schema location <ol> that is" << ::std::endl
- << " specified in the XML Schema include or import" << ::std::endl
- << " elements to new schema location <nl>." << ::std::endl;
-
- os << "--location-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to map schema locations that are specified in" << ::std::endl
- << " the XML Schema include or import elements." << ::std::endl;
-
- os << "--location-regex-trace Trace the process of applying regular expressions" << ::std::endl
- << " specified with the '--location-regex' option." << ::std::endl;
-
- os << "--file-per-type Generate a separate set of C++ files for each type" << ::std::endl
- << " defined in XML Schema." << ::std::endl;
-
- os << "--type-file-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate type names to file names when" << ::std::endl
- << " the '--file-per-type' option is specified." << ::std::endl;
-
- os << "--type-file-regex-trace Trace the process of applying regular expressions" << ::std::endl
- << " specified with the '--type-file-regex' option." << ::std::endl;
-
- os << "--schema-file-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
- << " used to translate schema file names when the" << ::std::endl
- << " '--file-per-type' option is specified." << ::std::endl;
-
- os << "--schema-file-regex-trace Trace the process of applying regular expressions" << ::std::endl
- << " specified with the '--schema-file-regex' option." << ::std::endl;
-
- os << "--fat-type-file Generate code corresponding to global elements" << ::std::endl
- << " into type files instead of schema files when the" << ::std::endl
- << " '--type-file-regex' option is specified." << ::std::endl;
-
- os << "--file-list <file> Write a list of generated C++ files to <file>." << ::std::endl;
-
- os << "--file-list-prologue <text> Insert <text> at the beginning of the file list." << ::std::endl;
-
- os << "--file-list-epilogue <text> Insert <text> at the end of the file list." << ::std::endl;
-
- os << "--file-list-delim <text> Delimit file names written to the file list with" << ::std::endl
- << " <text> instead of new lines." << ::std::endl;
-}
-
-typedef
-std::map<std::string, void (*) (options&, ::cli::scanner&)>
-_cli_options_map;
-
-static _cli_options_map _cli_options_map_;
-
-struct _cli_options_map_init
-{
- _cli_options_map_init ()
- {
- _cli_options_map_["--disable-warning"] =
- &::cli::thunk< options, NarrowStrings, &options::disable_warning_,
- &options::disable_warning_specified_ >;
- _cli_options_map_["--options-file"] =
- &::cli::thunk< options, std::string, &options::options_file_,
- &options::options_file_specified_ >;
- _cli_options_map_["--show-sloc"] =
- &::cli::thunk< options, bool, &options::show_sloc_ >;
- _cli_options_map_["--sloc-limit"] =
- &::cli::thunk< options, std::size_t, &options::sloc_limit_,
- &options::sloc_limit_specified_ >;
- _cli_options_map_["--proprietary-license"] =
- &::cli::thunk< options, bool, &options::proprietary_license_ >;
- _cli_options_map_["--custom-literals"] =
- &::cli::thunk< options, NarrowString, &options::custom_literals_,
- &options::custom_literals_specified_ >;
- _cli_options_map_["--preserve-anonymous"] =
- &::cli::thunk< options, bool, &options::preserve_anonymous_ >;
- _cli_options_map_["--show-anonymous"] =
- &::cli::thunk< options, bool, &options::show_anonymous_ >;
- _cli_options_map_["--anonymous-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::anonymous_regex_,
- &options::anonymous_regex_specified_ >;
- _cli_options_map_["--anonymous-regex-trace"] =
- &::cli::thunk< options, bool, &options::anonymous_regex_trace_ >;
- _cli_options_map_["--morph-anonymous"] =
- &::cli::thunk< options, bool, &options::morph_anonymous_ >;
- _cli_options_map_["--location-map"] =
- &::cli::thunk< options, NarrowStrings, &options::location_map_,
- &options::location_map_specified_ >;
- _cli_options_map_["--location-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::location_regex_,
- &options::location_regex_specified_ >;
- _cli_options_map_["--location-regex-trace"] =
- &::cli::thunk< options, bool, &options::location_regex_trace_ >;
- _cli_options_map_["--file-per-type"] =
- &::cli::thunk< options, bool, &options::file_per_type_ >;
- _cli_options_map_["--type-file-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::type_file_regex_,
- &options::type_file_regex_specified_ >;
- _cli_options_map_["--type-file-regex-trace"] =
- &::cli::thunk< options, bool, &options::type_file_regex_trace_ >;
- _cli_options_map_["--schema-file-regex"] =
- &::cli::thunk< options, NarrowStrings, &options::schema_file_regex_,
- &options::schema_file_regex_specified_ >;
- _cli_options_map_["--schema-file-regex-trace"] =
- &::cli::thunk< options, bool, &options::schema_file_regex_trace_ >;
- _cli_options_map_["--fat-type-file"] =
- &::cli::thunk< options, bool, &options::fat_type_file_ >;
- _cli_options_map_["--file-list"] =
- &::cli::thunk< options, NarrowString, &options::file_list_,
- &options::file_list_specified_ >;
- _cli_options_map_["--file-list-prologue"] =
- &::cli::thunk< options, NarrowString, &options::file_list_prologue_,
- &options::file_list_prologue_specified_ >;
- _cli_options_map_["--file-list-epilogue"] =
- &::cli::thunk< options, NarrowString, &options::file_list_epilogue_,
- &options::file_list_epilogue_specified_ >;
- _cli_options_map_["--file-list-delim"] =
- &::cli::thunk< options, NarrowString, &options::file_list_delim_,
- &options::file_list_delim_specified_ >;
- _cli_options_map_["--disable-multi-import"] =
- &::cli::thunk< options, bool, &options::disable_multi_import_ >;
- _cli_options_map_["--disable-full-check"] =
- &::cli::thunk< options, bool, &options::disable_full_check_ >;
- }
-};
-
-static _cli_options_map_init _cli_options_map_init_;
-
-bool options::
-_parse (const char* o, ::cli::scanner& s)
-{
- _cli_options_map::const_iterator i (_cli_options_map_.find (o));
-
- if (i != _cli_options_map_.end ())
- {
- (*(i->second)) (*this, s);
- return true;
- }
-
- return false;
-}
-
-// Begin epilogue.
-//
-//
-// End epilogue.
-
diff --git a/xsd/xsd/options.hxx b/xsd/xsd/options.hxx
deleted file mode 100644
index ed243bc..0000000
--- a/xsd/xsd/options.hxx
+++ /dev/null
@@ -1,575 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-#ifndef OPTIONS_HXX
-#define OPTIONS_HXX
-
-// Begin prologue.
-//
-//
-// End prologue.
-
-#include <deque>
-#include <iosfwd>
-#include <string>
-#include <cstddef>
-#include <exception>
-
-namespace cli
-{
- class unknown_mode
- {
- public:
- enum value
- {
- skip,
- stop,
- fail
- };
-
- unknown_mode (value v);
-
- operator value () const
- {
- return v_;
- }
-
- private:
- value v_;
- };
-
- // Exceptions.
- //
-
- class exception: public std::exception
- {
- public:
- virtual void
- print (::std::wostream&) const = 0;
- };
-
- ::std::wostream&
- operator<< (::std::wostream&, const exception&);
-
- class unknown_option: public exception
- {
- public:
- virtual
- ~unknown_option () throw ();
-
- unknown_option (const std::string& option);
-
- const std::string&
- option () const;
-
- virtual void
- print (::std::wostream&) const;
-
- virtual const char*
- what () const throw ();
-
- private:
- std::string option_;
- };
-
- class unknown_argument: public exception
- {
- public:
- virtual
- ~unknown_argument () throw ();
-
- unknown_argument (const std::string& argument);
-
- const std::string&
- argument () const;
-
- virtual void
- print (::std::wostream&) const;
-
- virtual const char*
- what () const throw ();
-
- private:
- std::string argument_;
- };
-
- class missing_value: public exception
- {
- public:
- virtual
- ~missing_value () throw ();
-
- missing_value (const std::string& option);
-
- const std::string&
- option () const;
-
- virtual void
- print (::std::wostream&) const;
-
- virtual const char*
- what () const throw ();
-
- private:
- std::string option_;
- };
-
- class invalid_value: public exception
- {
- public:
- virtual
- ~invalid_value () throw ();
-
- invalid_value (const std::string& option,
- const std::string& value);
-
- const std::string&
- option () const;
-
- const std::string&
- value () const;
-
- virtual void
- print (::std::wostream&) const;
-
- virtual const char*
- what () const throw ();
-
- private:
- std::string option_;
- std::string value_;
- };
-
- class eos_reached: public exception
- {
- public:
- virtual void
- print (::std::wostream&) const;
-
- virtual const char*
- what () const throw ();
- };
-
- class file_io_failure: public exception
- {
- public:
- virtual
- ~file_io_failure () throw ();
-
- file_io_failure (const std::string& file);
-
- const std::string&
- file () const;
-
- virtual void
- print (::std::wostream&) const;
-
- virtual const char*
- what () const throw ();
-
- private:
- std::string file_;
- };
-
- class unmatched_quote: public exception
- {
- public:
- virtual
- ~unmatched_quote () throw ();
-
- unmatched_quote (const std::string& argument);
-
- const std::string&
- argument () const;
-
- virtual void
- print (::std::wostream&) const;
-
- virtual const char*
- what () const throw ();
-
- private:
- std::string argument_;
- };
-
- class scanner
- {
- public:
- virtual
- ~scanner ();
-
- virtual bool
- more () = 0;
-
- virtual const char*
- peek () = 0;
-
- virtual const char*
- next () = 0;
-
- virtual void
- skip () = 0;
- };
-
- class argv_scanner: public scanner
- {
- public:
- argv_scanner (int& argc, char** argv, bool erase = false);
- argv_scanner (int start, int& argc, char** argv, bool erase = false);
-
- int
- end () const;
-
- virtual bool
- more ();
-
- virtual const char*
- peek ();
-
- virtual const char*
- next ();
-
- virtual void
- skip ();
-
- private:
- int i_;
- int& argc_;
- char** argv_;
- bool erase_;
- };
-
- class argv_file_scanner: public argv_scanner
- {
- public:
- argv_file_scanner (int& argc,
- char** argv,
- const std::string& option,
- bool erase = false);
-
- argv_file_scanner (int start,
- int& argc,
- char** argv,
- const std::string& option,
- bool erase = false);
-
- struct option_info
- {
- // If search_func is not NULL, it is called, with the arg
- // value as the second argument, to locate the options file.
- // If it returns an empty string, then the file is ignored.
- //
- const char* option;
- std::string (*search_func) (const char*, void* arg);
- void* arg;
- };
-
- argv_file_scanner (int& argc,
- char** argv,
- const option_info* options,
- std::size_t options_count,
- bool erase = false);
-
- argv_file_scanner (int start,
- int& argc,
- char** argv,
- const option_info* options,
- std::size_t options_count,
- bool erase = false);
-
- virtual bool
- more ();
-
- virtual const char*
- peek ();
-
- virtual const char*
- next ();
-
- virtual void
- skip ();
-
- private:
- const option_info*
- find (const char*) const;
-
- void
- load (const std::string& file);
-
- typedef argv_scanner base;
-
- const std::string option_;
- option_info option_info_;
- const option_info* options_;
- std::size_t options_count_;
-
- std::string hold_;
- std::deque<std::string> args_;
- bool skip_;
- };
-
- template <typename X>
- struct parser;
-}
-
-#include <cstddef>
-
-#include <types.hxx>
-
-class help_options
-{
- public:
- help_options (int& argc,
- char** argv,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- help_options (int start,
- int& argc,
- char** argv,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- help_options (int& argc,
- char** argv,
- int& end,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- help_options (int start,
- int& argc,
- char** argv,
- int& end,
- bool erase = false,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- help_options (::cli::scanner&,
- ::cli::unknown_mode option = ::cli::unknown_mode::fail,
- ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
-
- help_options ();
-
- // Option accessors.
- //
- const bool&
- help () const;
-
- const bool&
- version () const;
-
- const bool&
- proprietary_license () const;
-
- // Print usage information.
- //
- static void
- print_usage (::std::wostream&);
-
- // Implementation details.
- //
- protected:
- bool
- _parse (const char*, ::cli::scanner&);
-
- private:
- void
- _parse (::cli::scanner&,
- ::cli::unknown_mode option,
- ::cli::unknown_mode argument);
-
- public:
- bool help_;
- bool version_;
- bool proprietary_license_;
-};
-
-class options
-{
- public:
- // Option accessors.
- //
- const NarrowStrings&
- disable_warning () const;
-
- bool
- disable_warning_specified () const;
-
- const std::string&
- options_file () const;
-
- bool
- options_file_specified () const;
-
- const bool&
- show_sloc () const;
-
- const std::size_t&
- sloc_limit () const;
-
- bool
- sloc_limit_specified () const;
-
- const bool&
- proprietary_license () const;
-
- const NarrowString&
- custom_literals () const;
-
- bool
- custom_literals_specified () const;
-
- const bool&
- preserve_anonymous () const;
-
- const bool&
- show_anonymous () const;
-
- const NarrowStrings&
- anonymous_regex () const;
-
- bool
- anonymous_regex_specified () const;
-
- const bool&
- anonymous_regex_trace () const;
-
- const bool&
- morph_anonymous () const;
-
- const NarrowStrings&
- location_map () const;
-
- bool
- location_map_specified () const;
-
- const NarrowStrings&
- location_regex () const;
-
- bool
- location_regex_specified () const;
-
- const bool&
- location_regex_trace () const;
-
- const bool&
- file_per_type () const;
-
- const NarrowStrings&
- type_file_regex () const;
-
- bool
- type_file_regex_specified () const;
-
- const bool&
- type_file_regex_trace () const;
-
- const NarrowStrings&
- schema_file_regex () const;
-
- bool
- schema_file_regex_specified () const;
-
- const bool&
- schema_file_regex_trace () const;
-
- const bool&
- fat_type_file () const;
-
- const NarrowString&
- file_list () const;
-
- bool
- file_list_specified () const;
-
- const NarrowString&
- file_list_prologue () const;
-
- bool
- file_list_prologue_specified () const;
-
- const NarrowString&
- file_list_epilogue () const;
-
- bool
- file_list_epilogue_specified () const;
-
- const NarrowString&
- file_list_delim () const;
-
- bool
- file_list_delim_specified () const;
-
- const bool&
- disable_multi_import () const;
-
- const bool&
- disable_full_check () const;
-
- // Print usage information.
- //
- static void
- print_usage (::std::wostream&);
-
- // Implementation details.
- //
- protected:
- options ();
-
- bool
- _parse (const char*, ::cli::scanner&);
-
- public:
- NarrowStrings disable_warning_;
- bool disable_warning_specified_;
- std::string options_file_;
- bool options_file_specified_;
- bool show_sloc_;
- std::size_t sloc_limit_;
- bool sloc_limit_specified_;
- bool proprietary_license_;
- NarrowString custom_literals_;
- bool custom_literals_specified_;
- bool preserve_anonymous_;
- bool show_anonymous_;
- NarrowStrings anonymous_regex_;
- bool anonymous_regex_specified_;
- bool anonymous_regex_trace_;
- bool morph_anonymous_;
- NarrowStrings location_map_;
- bool location_map_specified_;
- NarrowStrings location_regex_;
- bool location_regex_specified_;
- bool location_regex_trace_;
- bool file_per_type_;
- NarrowStrings type_file_regex_;
- bool type_file_regex_specified_;
- bool type_file_regex_trace_;
- NarrowStrings schema_file_regex_;
- bool schema_file_regex_specified_;
- bool schema_file_regex_trace_;
- bool fat_type_file_;
- NarrowString file_list_;
- bool file_list_specified_;
- NarrowString file_list_prologue_;
- bool file_list_prologue_specified_;
- NarrowString file_list_epilogue_;
- bool file_list_epilogue_specified_;
- NarrowString file_list_delim_;
- bool file_list_delim_specified_;
- bool disable_multi_import_;
- bool disable_full_check_;
-};
-
-#include <options.ixx>
-
-// Begin epilogue.
-//
-//
-// End epilogue.
-
-#endif // OPTIONS_HXX
diff --git a/xsd/xsd/options.ixx b/xsd/xsd/options.ixx
deleted file mode 100644
index f30c651..0000000
--- a/xsd/xsd/options.ixx
+++ /dev/null
@@ -1,462 +0,0 @@
-// This code was generated by CLI, a command line interface
-// compiler for C++.
-//
-
-// Begin prologue.
-//
-//
-// End prologue.
-
-namespace cli
-{
- // unknown_mode
- //
- inline unknown_mode::
- unknown_mode (value v)
- : v_ (v)
- {
- }
-
- // exception
- //
- inline ::std::wostream&
- operator<< (::std::wostream& os, const exception& e)
- {
- e.print (os);
- return os;
- }
-
- // unknown_option
- //
- inline unknown_option::
- unknown_option (const std::string& option)
- : option_ (option)
- {
- }
-
- inline const std::string& unknown_option::
- option () const
- {
- return option_;
- }
-
- // unknown_argument
- //
- inline unknown_argument::
- unknown_argument (const std::string& argument)
- : argument_ (argument)
- {
- }
-
- inline const std::string& unknown_argument::
- argument () const
- {
- return argument_;
- }
-
- // missing_value
- //
- inline missing_value::
- missing_value (const std::string& option)
- : option_ (option)
- {
- }
-
- inline const std::string& missing_value::
- option () const
- {
- return option_;
- }
-
- // invalid_value
- //
- inline invalid_value::
- invalid_value (const std::string& option,
- const std::string& value)
- : option_ (option), value_ (value)
- {
- }
-
- inline const std::string& invalid_value::
- option () const
- {
- return option_;
- }
-
- inline const std::string& invalid_value::
- value () const
- {
- return value_;
- }
-
- // file_io_failure
- //
- inline file_io_failure::
- file_io_failure (const std::string& file)
- : file_ (file)
- {
- }
-
- inline const std::string& file_io_failure::
- file () const
- {
- return file_;
- }
-
- // unmatched_quote
- //
- inline unmatched_quote::
- unmatched_quote (const std::string& argument)
- : argument_ (argument)
- {
- }
-
- inline const std::string& unmatched_quote::
- argument () const
- {
- return argument_;
- }
-
- // argv_scanner
- //
- inline argv_scanner::
- argv_scanner (int& argc, char** argv, bool erase)
- : i_ (1), argc_ (argc), argv_ (argv), erase_ (erase)
- {
- }
-
- inline argv_scanner::
- argv_scanner (int start, int& argc, char** argv, bool erase)
- : i_ (start), argc_ (argc), argv_ (argv), erase_ (erase)
- {
- }
-
- inline int argv_scanner::
- end () const
- {
- return i_;
- }
-
- // argv_file_scanner
- //
- inline argv_file_scanner::
- argv_file_scanner (int& argc,
- char** argv,
- const std::string& option,
- bool erase)
- : argv_scanner (argc, argv, erase),
- option_ (option),
- options_ (&option_info_),
- options_count_ (1),
- skip_ (false)
- {
- option_info_.option = option_.c_str ();
- option_info_.search_func = 0;
- }
-
- inline argv_file_scanner::
- argv_file_scanner (int start,
- int& argc,
- char** argv,
- const std::string& option,
- bool erase)
- : argv_scanner (start, argc, argv, erase),
- option_ (option),
- options_ (&option_info_),
- options_count_ (1),
- skip_ (false)
- {
- option_info_.option = option_.c_str ();
- option_info_.search_func = 0;
- }
-
- inline argv_file_scanner::
- argv_file_scanner (int& argc,
- char** argv,
- const option_info* options,
- std::size_t options_count,
- bool erase)
- : argv_scanner (argc, argv, erase),
- options_ (options),
- options_count_ (options_count),
- skip_ (false)
- {
- }
-
- inline argv_file_scanner::
- argv_file_scanner (int start,
- int& argc,
- char** argv,
- const option_info* options,
- std::size_t options_count,
- bool erase)
- : argv_scanner (start, argc, argv, erase),
- options_ (options),
- options_count_ (options_count),
- skip_ (false)
- {
- }
-}
-
-// help_options
-//
-
-inline const bool& help_options::
-help () const
-{
- return this->help_;
-}
-
-inline const bool& help_options::
-version () const
-{
- return this->version_;
-}
-
-inline const bool& help_options::
-proprietary_license () const
-{
- return this->proprietary_license_;
-}
-
-// options
-//
-
-inline const NarrowStrings& options::
-disable_warning () const
-{
- return this->disable_warning_;
-}
-
-inline bool options::
-disable_warning_specified () const
-{
- return this->disable_warning_specified_;
-}
-
-inline const std::string& options::
-options_file () const
-{
- return this->options_file_;
-}
-
-inline bool options::
-options_file_specified () const
-{
- return this->options_file_specified_;
-}
-
-inline const bool& options::
-show_sloc () const
-{
- return this->show_sloc_;
-}
-
-inline const std::size_t& options::
-sloc_limit () const
-{
- return this->sloc_limit_;
-}
-
-inline bool options::
-sloc_limit_specified () const
-{
- return this->sloc_limit_specified_;
-}
-
-inline const bool& options::
-proprietary_license () const
-{
- return this->proprietary_license_;
-}
-
-inline const NarrowString& options::
-custom_literals () const
-{
- return this->custom_literals_;
-}
-
-inline bool options::
-custom_literals_specified () const
-{
- return this->custom_literals_specified_;
-}
-
-inline const bool& options::
-preserve_anonymous () const
-{
- return this->preserve_anonymous_;
-}
-
-inline const bool& options::
-show_anonymous () const
-{
- return this->show_anonymous_;
-}
-
-inline const NarrowStrings& options::
-anonymous_regex () const
-{
- return this->anonymous_regex_;
-}
-
-inline bool options::
-anonymous_regex_specified () const
-{
- return this->anonymous_regex_specified_;
-}
-
-inline const bool& options::
-anonymous_regex_trace () const
-{
- return this->anonymous_regex_trace_;
-}
-
-inline const bool& options::
-morph_anonymous () const
-{
- return this->morph_anonymous_;
-}
-
-inline const NarrowStrings& options::
-location_map () const
-{
- return this->location_map_;
-}
-
-inline bool options::
-location_map_specified () const
-{
- return this->location_map_specified_;
-}
-
-inline const NarrowStrings& options::
-location_regex () const
-{
- return this->location_regex_;
-}
-
-inline bool options::
-location_regex_specified () const
-{
- return this->location_regex_specified_;
-}
-
-inline const bool& options::
-location_regex_trace () const
-{
- return this->location_regex_trace_;
-}
-
-inline const bool& options::
-file_per_type () const
-{
- return this->file_per_type_;
-}
-
-inline const NarrowStrings& options::
-type_file_regex () const
-{
- return this->type_file_regex_;
-}
-
-inline bool options::
-type_file_regex_specified () const
-{
- return this->type_file_regex_specified_;
-}
-
-inline const bool& options::
-type_file_regex_trace () const
-{
- return this->type_file_regex_trace_;
-}
-
-inline const NarrowStrings& options::
-schema_file_regex () const
-{
- return this->schema_file_regex_;
-}
-
-inline bool options::
-schema_file_regex_specified () const
-{
- return this->schema_file_regex_specified_;
-}
-
-inline const bool& options::
-schema_file_regex_trace () const
-{
- return this->schema_file_regex_trace_;
-}
-
-inline const bool& options::
-fat_type_file () const
-{
- return this->fat_type_file_;
-}
-
-inline const NarrowString& options::
-file_list () const
-{
- return this->file_list_;
-}
-
-inline bool options::
-file_list_specified () const
-{
- return this->file_list_specified_;
-}
-
-inline const NarrowString& options::
-file_list_prologue () const
-{
- return this->file_list_prologue_;
-}
-
-inline bool options::
-file_list_prologue_specified () const
-{
- return this->file_list_prologue_specified_;
-}
-
-inline const NarrowString& options::
-file_list_epilogue () const
-{
- return this->file_list_epilogue_;
-}
-
-inline bool options::
-file_list_epilogue_specified () const
-{
- return this->file_list_epilogue_specified_;
-}
-
-inline const NarrowString& options::
-file_list_delim () const
-{
- return this->file_list_delim_;
-}
-
-inline bool options::
-file_list_delim_specified () const
-{
- return this->file_list_delim_specified_;
-}
-
-inline const bool& options::
-disable_multi_import () const
-{
- return this->disable_multi_import_;
-}
-
-inline const bool& options::
-disable_full_check () const
-{
- return this->disable_full_check_;
-}
-
-// Begin epilogue.
-//
-//
-// End epilogue.
diff --git a/xsd/xsd/processing/cardinality/processor.cxx b/xsd/xsd/processing/cardinality/processor.cxx
deleted file mode 100644
index f43395a..0000000
--- a/xsd/xsd/processing/cardinality/processor.cxx
+++ /dev/null
@@ -1,408 +0,0 @@
-// file : processing/cardinality/processor.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <map>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-#include <elements.hxx>
-
-#include <processing/cardinality/processor.hxx>
-
-using namespace std;
-
-namespace Processing
-{
- namespace SemanticGraph = XSDFrontend::SemanticGraph;
- namespace Traversal = XSDFrontend::Traversal;
-
- namespace Cardinality
- {
- namespace
- {
- //
- //
- struct ElementInfo
- {
- ElementInfo ()
- : min (0), max (0), e_ (0)
- {
- }
-
- ElementInfo (SemanticGraph::Element& e)
- : min (1), max (1), e_ (&e)
- {
- }
-
- ElementInfo (SemanticGraph::Element& e, size_t min_, size_t max_)
- : min (min_), max (max_), e_ (&e)
- {
- }
-
- SemanticGraph::Element&
- element ()
- {
- assert (e_ != 0);
- return *e_;
- }
-
- public:
- size_t min, max;
-
- private:
- SemanticGraph::Element* e_;
- };
-
- typedef map<String, ElementInfo> ElementInfoMap;
-
- //
- //
- struct AnyInfo
- {
- AnyInfo ()
- : min (0), max (0), a_ (0)
- {
- }
-
- AnyInfo (SemanticGraph::Any& a)
- : min (1), max (1), a_ (&a)
- {
- }
-
- AnyInfo (SemanticGraph::Any& a, size_t min_, size_t max_)
- : min (min_), max (max_), a_ (&a)
- {
- }
-
- SemanticGraph::Any&
- any ()
- {
- assert (a_ != 0);
- return *a_;
- }
-
- public:
- size_t min, max;
-
- private:
- SemanticGraph::Any* a_;
- };
-
- typedef map<String, AnyInfo> AnyInfoMap;
-
- //
- //
- struct Particle: Traversal::All,
- Traversal::Choice,
- Traversal::Sequence,
- Traversal::Element,
- Traversal::Any
- {
- virtual void
- traverse (SemanticGraph::All& a)
- {
- traverse_sequence (a);
- }
-
- virtual void
- traverse (SemanticGraph::Choice& c)
- {
- using SemanticGraph::Compositor;
-
- // Go over all particles we contain and add them to the map.
- //
- for (Compositor::ContainsIterator ci (c.contains_begin ());
- ci != c.contains_end (); ++ci)
- {
- Particle t;
- t.dispatch (ci->particle ());
-
- // Handle elements.
- //
- if (ci == c.contains_begin ())
- el_map = t.el_map; // First arm.
- else
- {
- // For elements that are in the map but not in this
- // arm of choice, we need to set min to 0 while for
- // those that are we need to choose minimum between
- // the two for min and maximum for max.
- //
- for (ElementInfoMap::iterator i (el_map.begin ());
- i != el_map.end (); ++i)
- {
- String const& name (i->first);
- ElementInfo& ei (i->second);
-
- ElementInfoMap::iterator j (t.el_map.find (name));
-
- if (j == t.el_map.end ())
- ei.min = 0;
- else
- {
- ei.min = j->second.min < ei.min ? j->second.min : ei.min;
-
- // Unbounded is encoded as 0.
- //
- if (j->second.max == 0 || ei.max == 0)
- ei.max = 0;
- else
- ei.max = j->second.max > ei.max ? j->second.max : ei.max;
- }
- }
-
- // Now elements that are in this arm of choice but are
- // not in the map, we need to add to the map and set their
- // min to 0.
- //
- for (ElementInfoMap::iterator i (t.el_map.begin ());
- i != t.el_map.end (); ++i)
- {
- String const& name (i->first);
- ElementInfo& ei (i->second);
-
- ElementInfoMap::iterator j (el_map.find (name));
-
- if (j == el_map.end ())
- el_map[name] = ElementInfo (ei.element (), 0, ei.max);
- }
- }
-
- // Handle wildcards. Since each wildcard is treated as unique,
- // we need to copy them from each arm of choice and set min to
- // 0.
- //
- for (AnyInfoMap::iterator i (t.any_map.begin ());
- i != t.any_map.end (); ++i)
- {
- String const& name (i->first);
- AnyInfo& ai (i->second);
-
- assert (any_map.find (name) == any_map.end ());
-
- any_map[name] = AnyInfo (ai.any (), 0, ai.max);
- }
- }
-
- // Choice's min and max.
- //
- size_t cmin (c.min ()), cmax (c.max ());
-
- // Iterate over elements and wildcards in the maps and multiply
- // their cardinality by cmin and cmax.
- //
- for (ElementInfoMap::iterator i (el_map.begin ());
- i != el_map.end (); ++i)
- {
- i->second.min *= cmin;
- i->second.max *= cmax;
- }
-
- for (AnyInfoMap::iterator i (any_map.begin ());
- i != any_map.end (); ++i)
- {
- i->second.min *= cmin; // Not really necessary since min == 0.
- i->second.max *= cmax;
- }
- }
-
- virtual void
- traverse (SemanticGraph::Sequence& s)
- {
- traverse_sequence (s);
- }
-
- void
- traverse_sequence (SemanticGraph::Compositor& c)
- {
- using SemanticGraph::Compositor;
-
- // Sequence's min and max.
- //
- size_t smin (c.min ()), smax (c.max ());
-
- // Go over all particles we contain and add them to the map.
- //
- for (Compositor::ContainsIterator ci (c.contains_begin ());
- ci != c.contains_end (); ++ci)
- {
- Particle t;
- t.dispatch (ci->particle ());
-
- // Handle elements.
- //
- for (ElementInfoMap::iterator i (t.el_map.begin ());
- i != t.el_map.end (); ++i)
- {
- String const& name (i->first);
- ElementInfo& ei (i->second);
- size_t min (ei.min * smin);
- size_t max (ei.max * smax);
- ElementInfoMap::iterator j (el_map.find (name));
-
- if (j != el_map.end ())
- {
- // Add i's cardinality to j
- //
- j->second.min += min;
- j->second.max = (j->second.max == 0 || max == 0) ?
- 0 : (j->second.max + max);
- }
- else
- el_map[name] = ElementInfo (ei.element (), min, max);
- }
-
- // Handle wildcards.
- //
- for (AnyInfoMap::iterator i (t.any_map.begin ());
- i != t.any_map.end (); ++i)
- {
- String const& name (i->first);
- AnyInfo& ai (i->second);
- size_t min (ai.min * smin);
- size_t max (ai.max * smax);
-
- assert (any_map.find (name) == any_map.end ());
-
- any_map[name] = AnyInfo (ai.any (), min, max);
- }
- }
- }
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- SemanticGraph::ContainsParticle& cp (e.contained_particle ());
-
- String name (e.qualified_p ()
- ? e.namespace_ ().name () + L" " + e.name ()
- : e.name ());
-
- el_map[name] = ElementInfo (e, cp.min (), cp.max ());
- }
-
- virtual void
- traverse (SemanticGraph::Any& a)
- {
- SemanticGraph::ContainsParticle& cp (a.contained_particle ());
-
- any_map[a.name ()] = AnyInfo (a, cp.min (), cp.max ());
- }
-
- public:
- AnyInfoMap any_map;
- ElementInfoMap el_map;
- };
-
-
- //
- //
- struct Complex: Traversal::Complex
- {
- virtual void
- traverse (Type& c)
- {
- if (c.contains_compositor_p ())
- {
- Particle t;
- t.dispatch (c.contains_compositor ().compositor ());
-
- for (ElementInfoMap::iterator i (t.el_map.begin ());
- i != t.el_map.end (); ++i)
- {
- ElementInfo& ei (i->second);
- SemanticGraph::Context& ctx (ei.element ().context ());
-
- ctx.set ("min", ei.min);
- ctx.set ("max", ei.max);
- }
-
- for (AnyInfoMap::iterator i (t.any_map.begin ());
- i != t.any_map.end (); ++i)
- {
- AnyInfo& ai (i->second);
- SemanticGraph::Context& ctx (ai.any ().context ());
-
- ctx.set ("min", ai.min);
- ctx.set ("max", ai.max);
- }
- }
-
- // Traverse attributes and anonymous types (via elements).
- //
- Complex::names (c);
- }
- };
-
-
- //
- //
- struct Attribute: Traversal::Attribute
- {
- virtual void
- traverse (Type& a)
- {
- SemanticGraph::Context& ctx (a.context ());
-
- ctx.set ("min", size_t (a.optional_p () ? 0 : 1));
- ctx.set ("max", size_t (1));
- }
- };
-
- // Go into implied/included/imported schemas while making sure
- // we don't process the same stuff more than once.
- //
- struct Uses: Traversal::Uses
- {
- virtual void
- traverse (Type& u)
- {
- SemanticGraph::Schema& s (u.schema ());
-
- if (!s.context ().count ("processing-cardinality-seen"))
- {
- s.context ().set ("processing-cardinality-seen", true);
- Traversal::Uses::traverse (u);
- }
- }
- };
- }
-
- void Processor::
- process (SemanticGraph::Schema& tu, SemanticGraph::Path const&)
- {
- Traversal::Schema schema;
- Uses uses;
-
- schema >> uses >> schema;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
-
- schema >> schema_names >> ns >> ns_names;
-
- Complex complex_type;
- AnonymousBase anonymous (complex_type);
-
- ns_names >> complex_type;
- ns_names >> anonymous;
-
- Attribute attribute;
- Traversal::Names names;
-
- complex_type >> names;
-
- names >> attribute;
- names >> anonymous;
-
- // Some twisted schemas do recusive inclusions.
- //
- tu.context ().set ("processing-cardinality-seen", true);
-
- schema.dispatch (tu);
- }
- }
-}
diff --git a/xsd/xsd/processing/cardinality/processor.hxx b/xsd/xsd/processing/cardinality/processor.hxx
deleted file mode 100644
index 2b4ebe0..0000000
--- a/xsd/xsd/processing/cardinality/processor.hxx
+++ /dev/null
@@ -1,29 +0,0 @@
-// file : processing/cardinality/processor.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef PROCESSING_CARDINALITY_PROCESSOR_HXX
-#define PROCESSING_CARDINALITY_PROCESSOR_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-#include <types.hxx>
-
-namespace Processing
-{
- namespace Cardinality
- {
- class Processor
- {
- public:
- struct Failed {};
-
- void
- process (XSDFrontend::SemanticGraph::Schema&,
- XSDFrontend::SemanticGraph::Path const& file);
- };
- }
-}
-
-#endif // PROCESSING_CARDINALITY_PROCESSOR_HXX
diff --git a/xsd/xsd/processing/inheritance/processor.cxx b/xsd/xsd/processing/inheritance/processor.cxx
deleted file mode 100644
index 6680a39..0000000
--- a/xsd/xsd/processing/inheritance/processor.cxx
+++ /dev/null
@@ -1,493 +0,0 @@
-// file : processing/inheritance/processor.cxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <set>
-#include <iostream>
-
-#include <processing/inheritance/processor.hxx>
-
-#include <elements.hxx>
-
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
-
-using namespace std;
-
-namespace Processing
-{
- namespace SemanticGraph = XSDFrontend::SemanticGraph;
- namespace Traversal = XSDFrontend::Traversal;
-
- namespace Inheritance
- {
- namespace
- {
- struct Dep
- {
- Dep (SemanticGraph::Type& t,
- SemanticGraph::Member* m = 0,
- String const& xpath = L"")
- : type (t), member (m), member_xpath (xpath)
- {
- }
-
- SemanticGraph::Type& type;
- SemanticGraph::Member* member; // Member if type is anonymous.
- String member_xpath;
- };
-
- inline bool
- operator< (Dep const& a, Dep const& b)
- {
- return &a.type < &b.type;
- }
-
- typedef set<Dep> DepSet;
- typedef set<SemanticGraph::Type*> TypeSet;
-
- String
- xpath (SemanticGraph::Nameable& n)
- {
- if (dynamic_cast<SemanticGraph::Namespace*> (&n) != 0)
- return L"<namespace-level>"; // There is a bug if you see this.
-
- if (n.named_p ())
- {
- SemanticGraph::Scope& scope (n.scope ());
-
- if (dynamic_cast<SemanticGraph::Namespace*> (&scope) != 0)
- return n.name ();
-
- return xpath (scope) + L"/" + n.name ();
- }
- else
- {
- return L"(anonymous type for " +
- n.context ().get<String> ("instance-name") + L")";
- }
- }
-
-
- // Calculate the list of dependencies for this complex
- // type.
- //
- struct ComplexType: Traversal::Complex,
- Traversal::Member
- {
- ComplexType (DepSet& dep_set)
- : dep_set_ (dep_set), last_ (0)
- {
- *this >> names_ >> *this;
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- using SemanticGraph::Complex;
-
- if (c.inherits_p ())
- dep_set_.insert (Dep (c.inherits ().base (), last_, last_xpath_));
-
- types_seen_.insert (&c);
-
- // Go after anonymous types.
- //
- names (c);
- }
-
- virtual void
- traverse (SemanticGraph::Member& m)
- {
- SemanticGraph::Type& t (m.type ());
-
- if (!t.named_p () && types_seen_.find (&t) == types_seen_.end ())
- {
- SemanticGraph::Context& ctx (t.context ());
-
- last_xpath_ = xpath (m);
-
- String prev_xpath;
-
- if (ctx.count ("instance-name"))
- prev_xpath = ctx.get<String> ("instance-name");
-
- ctx.set ("instance-name", last_xpath_);
-
- last_ = &m;
- dispatch (t);
-
- if (prev_xpath)
- ctx.set ("instance-name", prev_xpath);
- else
- ctx.remove ("instance-name");
- }
- }
-
- private:
- DepSet& dep_set_;
- TypeSet types_seen_;
-
- SemanticGraph::Member* last_;
- String last_xpath_;
-
- Traversal::Names names_;
- };
-
-
- //
- //
- template <typename N, typename A>
- struct NodeArgs
- {
- NodeArgs (N& node, A arg)
- : node_ (node), arg_ (arg)
- {
- }
-
- operator N& () const
- {
- return node_;
- }
-
- template <typename E>
- void
- add_edge_left (E& e)
- {
- node_.add_edge_left (e, arg_);
- }
-
- template <typename E>
- void
- add_edge_right (E& e)
- {
- node_.add_edge_right (e, arg_);
- }
-
- private:
- N& node_;
- A arg_;
- };
-
-
- //
- //
- struct Global: Traversal::Type,
- Traversal::Complex,
- Traversal::Element
- {
- Global (SemanticGraph::Schema& root,
- SemanticGraph::Schema& schema,
- bool& failed)
- : root_ (root), schema_ (schema), failed_ (failed)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Type& t)
- {
- if (t.named_p ())
- types_seen_.insert (&t);
- }
-
- virtual void
- traverse (SemanticGraph::Complex& c)
- {
- check_dep (c, c);
- types_seen_.insert (&c);
- };
-
- virtual void
- traverse (SemanticGraph::Element& e)
- {
- SemanticGraph::Type& t (e.type ());
-
- if (!t.named_p ())
- {
- t.context ().set ("instance-name", xpath (e));
- check_dep (e, t);
- t.context ().remove ("instance-name");
- }
- };
-
- private:
- void
- check_dep (SemanticGraph::Nameable& global,
- SemanticGraph::Type& type)
- {
- using SemanticGraph::Type;
- using SemanticGraph::Scope;
- using SemanticGraph::Names;
- using SemanticGraph::Schema;
-
- DepSet prereqs;
-
- // Calculate our prerequisistes.
- //
- {
- ComplexType complex (prereqs);
- complex.dispatch (type);
- }
-
- for (DepSet::const_iterator i (prereqs.begin ());
- i != prereqs.end (); ++i)
- {
- Dep const& dep (*i);
- Type& t (dep.type);
-
- // Ignore IDREF templates.
- //
- if (!t.named_p () &&
- (t.is_a<SemanticGraph::Fundamental::IdRef> () ||
- t.is_a<SemanticGraph::Fundamental::IdRefs> ()))
- continue;
-
- // We won't be able to generate compilable code in case of a
- // dependency on ourselves (e.g., a member element with
- // anonymous type that inherits from us).
- //
- if (&t == &type)
- {
- assert (dep.member != 0);
-
- SemanticGraph::Member& m (*dep.member);
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << " error: nested anonymous type for '"
- << dep.member_xpath << "' cyclicly inherits from '"
- << t.name () << "'" << endl;
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << " error: unable to generate valid code for such "
- << "cyclic inheritance" << endl;
-
- wcerr << m.file () << ":" << m.line () << ":" << m.column ()
- << " info: '" << m.name () << "' element is declared here"
- << endl;
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << ": info: consider explicitly naming this type "
- << "or remove the --preserve-anonymous option"
- << endl;
-
- failed_ = true;
- continue;
- }
-
- if (types_seen_.find (&t) == types_seen_.end ())
- {
- Scope& scope (t.scope ());
- Schema& schema (dynamic_cast<Schema&> (scope.scope ()));
-
- // Don't worry about types that are in included/imported
- // schemas.
- //
- if (&schema != &schema_ && !sources_p (schema_, schema))
- continue;
-
- if (t.context ().count ("seen"))
- {
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << " error: nested anonymous type in '" << t.name ()
- << "' or '" << type.name () << "' inherits from one of "
- << "these types and makes them mutually dependant"
- << endl;
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << " error: unable to generate valid code for such "
- << "cyclic dependency" << endl;
-
- wcerr << type.file () << ":" << type.line () << ":"
- << type.column () << " info: '" << type.name ()
- << "' type is defined here"
- << endl;
-
- wcerr << t.file () << ":" << t.line () << ":" << t.column ()
- << ": info: consider explicitly naming the anonymous "
- << "type or remove the --preserve-anonymous option"
- << endl;
-
- failed_ = true;
- continue;
- }
-
- //wcerr << "type '" << t.name () << "' needs to be moved " <<
- // "before " << (global.is_a<Type> () ? "type" : "element") <<
- // " '" << global.name () << "'" << endl;
-
-
- // Delete current Names edge.
- //
- String name (t.name ());
- {
- Names& n (t.named ());
- root_.delete_edge (scope, t, n);
- }
-
- // Insert a new Names edge before global.
- //
- {
- // t.scope () and global.scope () can be different in
- // case of the chameleon inclusion.
- //
- Scope& scope (global.scope ());
-
- // Convert to the insert-after call.
- //
- Scope::NamesIterator i (scope.find (global.named ()));
-
- if (i == scope.names_begin ())
- i = scope.names_end ();
- else
- --i;
-
- NodeArgs<Scope, Scope::NamesIterator> na (scope, i);
- root_.new_edge<Names> (na, t, name);
- }
-
- // Recursively process the moved type.
- //
- global.context ().set ("seen", true);
- dispatch (t);
- global.context ().remove ("seen");
- }
- }
- }
-
- private:
- // Return true if root sources s.
- //
- bool
- sources_p (SemanticGraph::Schema& root, SemanticGraph::Schema& s)
- {
- using SemanticGraph::Schema;
- using SemanticGraph::Sources;
-
- for (Schema::UsesIterator i (root.uses_begin ());
- i != root.uses_end (); ++i)
- {
- if (i->is_a<Sources> ())
- {
- if (&i->schema () == &s || sources_p (i->schema (), s))
- return true;
- }
- }
-
- return false;
- }
-
- private:
- SemanticGraph::Schema& root_;
- SemanticGraph::Schema& schema_;
- TypeSet types_seen_;
- bool& failed_;
- };
-
-
- // Sources traverser that goes into each schema only once.
- //
- struct Sources: Traversal::Sources
- {
- virtual void
- traverse (SemanticGraph::Sources& s)
- {
- if (schemas_.insert (&s.schema ()).second)
- Traversal::Sources::traverse (s);
- }
-
- private:
- set<SemanticGraph::Schema*> schemas_;
- };
-
- // Go into included/imported schemas while making sure we don't
- // process the same stuff more than once.
- //
- struct Uses: Traversal::Includes, Traversal::Imports
- {
- Uses (SemanticGraph::Schema& root, bool& failed)
- : root_ (root), failed_ (failed)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Includes& i)
- {
- traverse (i.schema ());
- }
-
- virtual void
- traverse (SemanticGraph::Imports& i)
- {
- traverse (i.schema ());
- }
-
- private:
- void
- traverse (SemanticGraph::Schema& s)
- {
- if (!s.context ().count ("processing-inheritance-seen"))
- {
- Traversal::Schema schema;
- Sources sources;
-
- schema >> sources >> schema;
- schema >> *this;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
-
- schema >> schema_names >> ns >> ns_names;
-
- Global global (root_, s, failed_);
-
- ns_names >> global;
-
- s.context ().set ("processing-inheritance-seen", true);
- schema.dispatch (s);
- }
- }
-
- private:
- SemanticGraph::Schema& root_;
- bool& failed_;
- };
- }
-
- void Processor::
- process (SemanticGraph::Schema& tu, SemanticGraph::Path const&)
- {
- bool failed (false);
-
- // We need to process include/imported schemas since other
- // parts of the process, for example, name processors can
- // rely on the order of types in the schema.
- //
- Traversal::Schema schema;
- Sources sources;
- Uses uses (tu, failed);
-
- schema >> sources >> schema;
- schema >> uses;
-
- Traversal::Names schema_names;
- Traversal::Namespace ns;
- Traversal::Names ns_names;
-
- schema >> schema_names >> ns >> ns_names;
-
- Global global (tu, tu, failed);
-
- ns_names >> global;
-
- // Some twisted schemas do recusive self-inclusion.
- //
- tu.context ().set ("processing-inheritance-seen", true);
-
- schema.dispatch (tu);
-
- if (failed)
- throw Failed ();
- }
- }
-}
diff --git a/xsd/xsd/processing/inheritance/processor.hxx b/xsd/xsd/processing/inheritance/processor.hxx
deleted file mode 100644
index 46a33c7..0000000
--- a/xsd/xsd/processing/inheritance/processor.hxx
+++ /dev/null
@@ -1,29 +0,0 @@
-// file : processing/inheritance/processor.hxx
-// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef PROCESSING_INHERITANCE_PROCESSOR_HXX
-#define PROCESSING_INHERITANCE_PROCESSOR_HXX
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-#include <xsd-frontend/semantic-graph/schema.hxx>
-
-#include <types.hxx>
-
-namespace Processing
-{
- namespace Inheritance
- {
- class Processor
- {
- public:
- struct Failed {};
-
- void
- process (XSDFrontend::SemanticGraph::Schema&,
- XSDFrontend::SemanticGraph::Path const& file);
- };
- }
-}
-
-#endif // PROCESSING_INHERITANCE_PROCESSOR_HXX
diff --git a/xsd/xsd/type-map/lexer.cxx b/xsd/xsd/type-map/lexer.cxx
deleted file mode 100644
index fe7ecfc..0000000
--- a/xsd/xsd/type-map/lexer.cxx
+++ /dev/null
@@ -1,132 +0,0 @@
-// file : xsd/type-map/lexer.cxx
-// copyright : Copyright (c) 2007-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <iostream>
-
-#include <type-map/lexer.hxx>
-
-using std::wcerr;
-using std::endl;
-
-namespace TypeMap
-{
- Lexer::Lexer (std::istream& is, String const& path)
- : locale_ ("C"), is_ (is), path_ (path), line_ (1), comment_ (false)
- {
- is_.exceptions (std::ios_base::badbit);
- }
-
- Lexer::Token Lexer::
- next ()
- {
- if (held_lexeme_)
- {
- Token t (Token::punct, held_lexeme_, line_);
- held_lexeme_.clear ();
- return t;
- }
-
- typedef std::char_traits<char> Traits;
- typedef Traits::char_type CharType;
- typedef Traits::int_type IntType;
-
- IntType i;
- CharType c ('\0');
- NarrowString lexeme;
-
- // Skip all whitespaces including comments.
- //
- while (!is_.eof ())
- {
- i = is_.get ();
-
- if (i == Traits::eof ())
- break;
-
- c = Traits::to_char_type (i);
-
- if (comment_)
- {
- if (c == '\n')
- comment_ = false;
- }
- else
- {
- if (!(std::isspace (c, locale_) || c == '#'))
- break;
-
- if (c == '#')
- comment_ = true;
- }
-
- if (c == '\n')
- ++line_;
- }
-
- if (is_.eof ())
- return Token (Token::eos, L"<end-of-stream>", line_);
-
- bool quote (c == '"');
-
- if (!quote)
- lexeme += c;
-
- if (c != ';' && c != '{' && c != '}')
- {
- // Accumulate non-whitespace character sequence.
- //
-
- while (!is_.eof ())
- {
- i = is_.get ();
-
- if (i == Traits::eof ())
- break;
-
- c = Traits::to_char_type (i);
-
- if (!quote && c == '#')
- {
- comment_ = true;
- break;
- }
-
- if (std::isspace (c, locale_))
- {
- if (c == '\n')
- ++line_;
-
- if (!quote)
- break;
- }
-
- if (!quote && (c == ';' || c == '{' || c == '}'))
- {
- held_lexeme_ += c;
- break;
- }
-
- if (quote && c == '"')
- break;
-
- lexeme += c;
- }
-
- if (quote && c != '"')
- {
- wcerr << path_ << ":" << line_ << ": error: closing '\"' expected"
- << endl;
-
- throw Failed ();
- }
- }
-
- if (!quote && (lexeme == ";" || lexeme == "{" || lexeme == "}"))
- {
- return Token (Token::punct, lexeme, line_);
- }
- else
- return Token (Token::token, lexeme, line_);
- }
-}
diff --git a/xsd/xsd/type-map/lexer.hxx b/xsd/xsd/type-map/lexer.hxx
deleted file mode 100644
index 0d3af42..0000000
--- a/xsd/xsd/type-map/lexer.hxx
+++ /dev/null
@@ -1,75 +0,0 @@
-// file : xsd/type-map/lexer.hxx
-// copyright : Copyright (c) 2007-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_TYPE_MAP_LEXER_HXX
-#define XSD_TYPE_MAP_LEXER_HXX
-
-#include <locale>
-#include <iosfwd>
-
-#include <types.hxx>
-
-namespace TypeMap
-{
- class Lexer
- {
- public:
- class Token
- {
- public:
- enum Type
- {
- token,
- punct,
- eos
- };
-
- Token (Type type, String const& lexeme, size_t line)
- : type_ (type), lexeme_ (lexeme), line_ (line)
- {
- }
-
- Type
- type () const
- {
- return type_;
- }
-
- String const&
- lexeme () const
- {
- return lexeme_;
- }
-
- size_t
- line () const
- {
- return line_;
- }
-
- private:
- Type type_;
- String lexeme_;
- size_t line_;
- };
-
- Lexer (std::istream&, String const& path);
-
- struct Failed {};
-
- Token
- next ();
-
- private:
- std::locale locale_;
- std::istream& is_;
- String path_;
- size_t line_;
- String held_lexeme_;
- bool comment_;
- };
-
-}
-
-#endif // XSD_TYPE_MAP_LEXER_HXX
diff --git a/xsd/xsd/type-map/parser.cxx b/xsd/xsd/type-map/parser.cxx
deleted file mode 100644
index e391cf7..0000000
--- a/xsd/xsd/type-map/parser.cxx
+++ /dev/null
@@ -1,280 +0,0 @@
-// file : xsd/type-map/parser.cxx
-// copyright : Copyright (c) 2007-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <iostream>
-
-#include <cutl/re.hxx>
-
-#include <type-map/parser.hxx>
-
-using std::endl;
-
-namespace TypeMap
-{
- typedef Lexer::Token Token;
- typedef cutl::re::wformat Format;
-
- Parser::Parser (Lexer& lex, String const& path)
- : lex_ (lex), path_ (path), e (std::wcerr)
- {
- }
-
- bool Parser::
- parse (Namespaces& ns)
- {
- try
- {
- Namespace* global = 0;
-
- for (Token t (lex_.next ()); t.type () != Token::eos; t = lex_.next ())
- {
- String l (t.lexeme ());
-
- if (l == L"namespace")
- {
- global = 0;
-
- if (!namespace_ (ns))
- return false;
- }
- else if (l == L"include")
- {
- if (global == 0)
- {
- ns.push_back (Namespace (Pattern ()));
- global = &(*ns.rbegin ());
- }
-
- if (!include (*global))
- return false;
- }
- else if (l == L"type" || t.type () == Token::token)
- {
- // Type mapping can have 'type' specifier omitted.
- //
- if (l == L"type")
- t = lex_.next ();
-
- if (global == 0)
- {
- ns.push_back (Namespace (Pattern ()));
- global = &(*ns.rbegin ());
- }
-
- if (!type (t, *global))
- return false;
- }
- else
- {
- e << path_ << ":" << t.line () << ": unexpected '" << l << "'"
- << endl;
-
- return false;
- }
- }
- }
- catch (Lexer::Failed const&)
- {
- return false;
- }
-
- return true;
- }
-
- bool Parser::
- namespace_ (Namespaces& ns)
- {
- // First get XML namespace.
- //
- Token t (lex_.next ());
-
- Pattern xsd_name;
-
- try
- {
- xsd_name = t.lexeme ();
- }
- catch (Format const& ex)
- {
- e << path_ << ":" << t.line () << ": invalid namespace pattern: "
- << ex.description ().c_str () << endl;
- return false;
- }
-
- if (t.type () != Token::token)
- {
- e << path_ << ":" << t.line () << ": expected XML namespace "
- << "instead of '" << xsd_name << "'" << endl;
- return false;
- }
-
-
- // See if we've got optional C++ mapping.
- //
- t = lex_.next ();
-
- bool has_cxx_name (false);
- String cxx_name;
-
- if (t.type () != Token::token)
- {
- if (t.lexeme () != L"{")
- {
- e << path_ << ":" << t.line () << ": expected C++ namespace or '{' "
- << "instead of '" << t.lexeme () << "'" << endl;
- return false;
- }
- }
- else
- {
- has_cxx_name = true;
- cxx_name = t.lexeme ();
- }
-
- // Swallow '{' if needed.
- //
- if (has_cxx_name)
- {
- t = lex_.next ();
-
- if (t.type () != Token::punct || t.lexeme () != L"{")
- {
- e << path_ << ":" << t.line () << ": expected '{' instead of '"
- << t.lexeme () << "'" << endl;
- return false;
- }
- }
-
- Namespace n (xsd_name, has_cxx_name, cxx_name);
-
- // Parse namespace body.
- //
- for (t = lex_.next ();; t = lex_.next ())
- {
- String l (t.lexeme ());
-
- if (l == L"include")
- {
- if (!include (n))
- return false;
- }
- else if (l == L"type" || t.type () == Token::token)
- {
- // Type mapping can have 'type' specifier omitted.
- //
- if (l == L"type")
- t = lex_.next ();
-
- if (!type (t, n))
- return false;
- }
- else if (t.type () == Token::punct && l == L"}")
- {
- break;
- }
- else
- {
- e << path_ << ":" << t.line () << ": unexpected '" << l << "'"
- << endl;
- return false;
- }
- }
-
- if (cxx_name || n.types_begin () != n.types_end () ||
- n.includes_begin () != n.includes_end ())
- {
- ns.push_back (n);
- }
-
- return true;
- }
-
- bool Parser::
- include (Namespace& n)
- {
- Token t (lex_.next ());
-
- String path (t.lexeme ());
-
- if (t.type () != Token::token)
- {
- e << path_ << ":" << t.line () << ": expected include path "
- << "instead of '" << path << "'" << endl;
- return false;
- }
-
- if (path && path[0] == L'<')
- n.includes_push_back (path);
- else
- n.includes_push_back (L'"' + path + L'"');
-
- t = lex_.next ();
-
- if (t.type () != Token::punct || t.lexeme () != L";")
- {
- e << path_ << ":" << t.line () << ": expected ';' after '"
- << path << "'" << endl;
- return false;
- }
-
- return true;
- }
-
- bool Parser::
- type (Token t, Namespace& n)
- {
- Pattern xsd_name;
-
- try
- {
- xsd_name = t.lexeme ();
- }
- catch (Format const& ex)
- {
- e << path_ << ":" << t.line () << ": invalid namespace pattern: "
- << ex.description ().c_str () << endl;
- return false;
- }
-
- if (t.type () != Token::token)
- {
- e << path_ << ":" << t.line () << ": expected XML Schema type name "
- << "instead of '" << xsd_name << "'" << endl;
- return false;
- }
-
- t = lex_.next ();
- String cxx_ret_name (t.lexeme ());
-
- if (t.type () != Token::token)
- {
- e << path_ << ":" << t.line () << ": expected C++ type name "
- << "instead of '" << cxx_ret_name << "'" << endl;
- return false;
- }
-
- t = lex_.next ();
-
- String cxx_arg_name;
-
- // See if we've got optional argument type.
- //
- if (t.type () == Token::token)
- {
- cxx_arg_name = t.lexeme ();
- t = lex_.next ();
- }
-
- if (t.type () != Token::punct || t.lexeme () != L";")
- {
- e << path_ << ":" << t.line () << ": expected ';' after '"
- << cxx_arg_name << "'" << endl;
- return false;
- }
-
- n.types_push_back (xsd_name, cxx_ret_name, cxx_arg_name);
-
- return true;
- }
-}
diff --git a/xsd/xsd/type-map/parser.hxx b/xsd/xsd/type-map/parser.hxx
deleted file mode 100644
index c91bb12..0000000
--- a/xsd/xsd/type-map/parser.hxx
+++ /dev/null
@@ -1,42 +0,0 @@
-// file : xsd/type-map/parser.hxx
-// copyright : Copyright (c) 2007-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_TYPE_MAP_PARSER_HXX
-#define XSD_TYPE_MAP_PARSER_HXX
-
-#include <types.hxx>
-
-#include <type-map/type-map.hxx>
-#include <type-map/lexer.hxx>
-
-namespace TypeMap
-{
- class Parser
- {
- public:
- Parser (Lexer&, String const& path);
-
- // Merge parsed namespaces.
- //
- bool
- parse (Namespaces&);
-
- private:
- bool
- namespace_ (Namespaces&);
-
- bool
- include (Namespace&);
-
- bool
- type (Lexer::Token, Namespace&);
-
- private:
- Lexer& lex_;
- String path_;
- std::wostream& e;
- };
-}
-
-#endif // XSD_TYPE_MAP_PARSER_HXX
diff --git a/xsd/xsd/type-map/type-map.hxx b/xsd/xsd/type-map/type-map.hxx
deleted file mode 100644
index cdb8a0c..0000000
--- a/xsd/xsd/type-map/type-map.hxx
+++ /dev/null
@@ -1,179 +0,0 @@
-// file : xsd/type-map/type-map.hxx
-// copyright : Copyright (c) 2007-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_TYPE_MAP_TYPE_MAP_HXX
-#define XSD_TYPE_MAP_TYPE_MAP_HXX
-
-#include <vector>
-
-#include <cutl/re.hxx>
-
-#include <types.hxx>
-
-namespace TypeMap
-{
- typedef cutl::re::wregex Pattern;
-
- class Type
- {
- public:
- Type (String const& xsd_name,
- String const& cxx_ret_name,
- String const& cxx_arg_name)
- : xsd_name_ (xsd_name),
- cxx_ret_name_ (cxx_ret_name),
- cxx_arg_name_ (cxx_arg_name)
- {
- }
-
- Type (Pattern const& xsd_name,
- String const& cxx_ret_name,
- String const& cxx_arg_name)
- : xsd_name_ (xsd_name),
- cxx_ret_name_ (cxx_ret_name),
- cxx_arg_name_ (cxx_arg_name)
- {
- }
-
- Pattern const&
- xsd_name () const
- {
- return xsd_name_;
- }
-
- String const&
- cxx_ret_name () const
- {
- return cxx_ret_name_;
- }
-
- String const&
- cxx_arg_name () const
- {
- return cxx_arg_name_;
- }
-
- private:
- Pattern xsd_name_;
- String cxx_ret_name_;
- String cxx_arg_name_;
- };
-
- class Namespace
- {
- public:
- Namespace (String const& xsd_name)
- : xsd_name_ (xsd_name), has_cxx_name_ (false)
- {
- }
-
- Namespace (Pattern const& xsd_name)
- : xsd_name_ (xsd_name), has_cxx_name_ (false)
- {
- }
-
- Namespace (Pattern const& xsd_name, String const& cxx_name)
- : xsd_name_ (xsd_name), has_cxx_name_ (true), cxx_name_ (cxx_name)
- {
- }
-
- Namespace (Pattern const& xsd_name,
- bool has_cxx_name,
- String const& cxx_name)
- : xsd_name_ (xsd_name),
- has_cxx_name_ (has_cxx_name),
- cxx_name_ (cxx_name)
- {
- }
-
- //
- //
- typedef std::vector<String> Includes;
- typedef Includes::const_iterator IncludesIterator;
-
- IncludesIterator
- includes_begin () const
- {
- return includes_.begin ();
- }
-
- IncludesIterator
- includes_end () const
- {
- return includes_.end ();
- }
-
- void
- includes_push_back (String const& i)
- {
- includes_.push_back (i);
- }
-
- //
- //
- typedef std::vector<Type> Types;
- typedef Types::const_iterator TypesIterator;
-
- TypesIterator
- types_begin () const
- {
- return types_.begin ();
- }
-
- TypesIterator
- types_end () const
- {
- return types_.end ();
- }
-
- void
- types_push_back (String const& xsd_type,
- String const& cxx_ret_type,
- String const& cxx_arg_type = L"")
- {
- types_.push_back (Type (xsd_type, cxx_ret_type, cxx_arg_type));
- }
-
- void
- types_push_back (Pattern const& xsd_type,
- String const& cxx_ret_type,
- String const& cxx_arg_type = L"")
- {
- types_.push_back (Type (xsd_type, cxx_ret_type, cxx_arg_type));
- }
-
- //
- //
- Pattern const&
- xsd_name () const
- {
- return xsd_name_;
- }
-
- //
- //
- bool
- has_cxx_name () const
- {
- return has_cxx_name_;
- }
-
- String const&
- cxx_name () const
- {
- return cxx_name_;
- }
-
- private:
- Includes includes_;
- Types types_;
- Pattern xsd_name_;
- bool has_cxx_name_;
- String cxx_name_;
- };
-
- typedef std::vector<Namespace> Namespaces;
-}
-
-#endif // XSD_TYPE_MAP_TYPE_MAP_HXX
diff --git a/xsd/xsd/types.hxx b/xsd/xsd/types.hxx
deleted file mode 100644
index 6850b42..0000000
--- a/xsd/xsd/types.hxx
+++ /dev/null
@@ -1,20 +0,0 @@
-// file : xsd/types.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef TYPES_HXX
-#define TYPES_HXX
-
-#include <vector>
-#include <cstddef> // std::size_t
-
-#include <xsd-frontend/types.hxx>
-
-using std::size_t;
-
-using XSDFrontend::String;
-using XSDFrontend::NarrowString;
-
-typedef std::vector<NarrowString> NarrowStrings;
-
-#endif // TYPES_HXX
diff --git a/xsd/xsd/xsd.cxx b/xsd/xsd/xsd.cxx
deleted file mode 100644
index f333d76..0000000
--- a/xsd/xsd/xsd.cxx
+++ /dev/null
@@ -1,1127 +0,0 @@
-// file : xsd/xsd.cxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <map>
-#include <vector>
-#include <memory> // std::auto_ptr
-#include <cstddef> // std::size_t
-#include <iostream>
-#include <fstream>
-
-#include <xercesc/util/PlatformUtils.hpp>
-
-#include <cutl/re.hxx>
-
-#include <xsd-frontend/parser.hxx>
-#include <xsd-frontend/transformations/anonymous.hxx>
-#include <xsd-frontend/transformations/enum-synthesis.cxx>
-#include <xsd-frontend/transformations/restriction.hxx>
-#include <xsd-frontend/transformations/schema-per-type.hxx>
-#include <xsd-frontend/transformations/simplifier.hxx>
-
-#include <cxx/tree/options.hxx>
-#include <cxx/parser/options.hxx>
-
-#include <cxx/tree/generator.hxx>
-#include <cxx/parser/generator.hxx>
-
-#include <processing/cardinality/processor.hxx>
-#include <processing/inheritance/processor.hxx>
-
-#include <xsd.hxx>
-#include <types.hxx>
-#include <options.hxx>
-
-#include "../libxsd/xsd/cxx/version.hxx"
-
-namespace SemanticGraph = XSDFrontend::SemanticGraph;
-namespace Transformations = XSDFrontend::Transformations;
-
-using namespace std;
-
-//
-//
-struct LocationTranslator: XSDFrontend::LocationTranslator
-{
- struct Failed {};
-
- LocationTranslator (NarrowStrings const& map,
- NarrowStrings const& regex,
- bool trace);
-
- virtual NarrowString
- translate (NarrowString const&);
-
-private:
- typedef map<NarrowString, NarrowString> Map;
-
- typedef cutl::re::regexsub Regex;
- typedef cutl::re::format RegexFormat;
- typedef vector<Regex> RegexVector;
-
- typedef map<NarrowString, NarrowString> Cache;
-
- Map map_;
- RegexVector regex_;
- Cache cache_;
- bool trace_;
-};
-
-//
-//
-struct AnonymousNameTranslator: Transformations::AnonymousNameTranslator
-{
- struct Failed {};
-
- AnonymousNameTranslator (NarrowStrings const& regex, bool trace);
-
- virtual String
- translate (String const& file,
- String const& ns,
- String const& name,
- String const& xpath);
-
-private:
- typedef cutl::re::wregexsub Regex;
- typedef cutl::re::wformat RegexFormat;
- typedef vector<Regex> RegexVector;
-
- RegexVector regex_;
- bool trace_;
-
-};
-
-//
-//
-struct SchemaPerTypeTranslator: Transformations::SchemaPerTypeTranslator
-{
- struct Failed {};
-
- SchemaPerTypeTranslator (NarrowStrings const& type_regex,
- bool type_trace,
- NarrowStrings const& schema_regex,
- bool schema_trace);
-
- virtual String
- translate_type (String const& ns, String const& name);
-
- virtual NarrowString
- translate_schema (NarrowString const& file);
-
-private:
- typedef cutl::re::wregexsub TypeRegex;
- typedef cutl::re::wformat TypeRegexFormat;
- typedef vector<TypeRegex> TypeRegexVector;
-
- TypeRegexVector type_regex_;
- bool type_trace_;
-
- typedef cutl::re::regexsub SchemaRegex;
- typedef cutl::re::format SchemaRegexFormat;
- typedef vector<SchemaRegex> SchemaRegexVector;
-
- SchemaRegexVector schema_regex_;
- bool schema_trace_;
-};
-
-//
-//
-struct XercesInitializer
-{
- XercesInitializer ()
- {
- xercesc::XMLPlatformUtils::Initialize ();
- }
-
- ~XercesInitializer ()
- {
- xercesc::XMLPlatformUtils::Terminate ();
- }
-};
-
-// Expand the \n escape sequence.
-//
-void
-expand_nl (NarrowString& s);
-
-int
-main (int argc, char* argv[])
-{
- wostream& e (wcerr);
-
- try
- {
- cli::argv_file_scanner args (argc, argv, "--options-file");
- help_options help_ops (args, cli::unknown_mode::stop);
-
- NarrowString cmd;
- if (args.more ())
- cmd = args.next ();
-
- if (help_ops.version () || cmd == "version")
- {
- wostream& o (wcout);
-
- o << "CodeSynthesis XSD XML Schema to C++ compiler " <<
- XSD_STR_VERSION << endl
- << "Copyright (c) 2005-2014 Code Synthesis Tools CC" << endl;
-
- if (!help_ops.proprietary_license () && cmd == "version")
- {
- // Parse the options after the command to detect trailing
- // --proprietary-license.
- //
- help_ops = help_options (args, cli::unknown_mode::stop);
- }
-
- if (help_ops.proprietary_license ())
- {
- o << "The compiler was invoked in the Proprietary License mode. You "
- << "should have\nreceived a proprietary license from Code Synthesis "
- << "Tools CC that entitles\nyou to use it in this mode." << endl;
- }
- else
- {
- o << "This is free software; see the source for copying conditions. "
- << "There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS "
- << "FOR A PARTICULAR PURPOSE." << endl;
- }
-
- return 0;
- }
-
- if (help_ops.help () || cmd == "help")
- {
- wostream& o (wcout);
-
- if (cmd == "help" && args.more ())
- {
- NarrowString arg (args.next ());
-
- if (arg == "cxx-tree")
- {
- o << "Usage: " << argv[0] << " cxx-tree [options] file [file ...]"
- << endl
- << "Options:" << endl;
-
- CXX::Tree::Generator::usage ();
- }
- else if (arg == "cxx-parser")
- {
- o << "Usage: " << argv[0] << " cxx-parser [options] file [file ...]"
- << endl
- << "Options:" << endl;
-
- CXX::Parser::Generator::usage ();
- }
- else
- {
- o << "error: unknown command '" << arg.c_str () << "'" << endl
- << "info: try '" << argv[0] << " help' for the list of commands"
- << endl;
-
- return 1;
- }
-
- // Add frontend options at the end.
- //
- options::print_usage (o);
- }
- else
- {
- o << "Usage: " << argv[0] << " <cmd> ..." << endl
- << "Commands:" << endl;
-
- o << " help Print usage information and exit. Use\n"
- << " 'help <cmd>' for command-specific options."
- << endl;
-
- o << " version Print version and exit."
- << endl;
-
- o << " cxx-tree Generate the C++/Tree mapping."
- << endl;
-
- o << " cxx-parser Generate the C++/Parser mapping."
- << endl;
- }
-
- return 0;
- }
-
- if (cmd.empty ())
- {
- e << "error: no command specified" << endl
- << "info: try '" << argv[0] << " help' for usage information" << endl;
-
- return 1;
- }
-
- if (cmd != "cxx-tree" && cmd != "cxx-parser")
- {
- e << "error: unknown command '" << cmd.c_str () << "'" << endl
- << "info: try '" << argv[0] << " help' for the list of commands"
- << endl;
-
- return 1;
- }
-
- // We need to parse command line options before we can get to
- // the arguments.
- //
- auto_ptr<CXX::Tree::options> tree_ops (
- cmd == "cxx-tree" ? new CXX::Tree::options (args) : 0);
-
- auto_ptr<CXX::Parser::options> parser_ops (
- cmd == "cxx-parser" ? new CXX::Parser::options (args) : 0);
-
- CXX::options& common_ops (
- cmd == "cxx-tree"
- ? static_cast<CXX::options&> (*tree_ops)
- : static_cast<CXX::options&> (*parser_ops));
-
- // Disabled warnings.
- //
- WarningSet disabled_w;
- {
- NarrowStrings const& w (common_ops.disable_warning ());
-
- for (NarrowStrings::const_iterator i (w.begin ()); i != w.end (); ++i)
- disabled_w.insert (*i);
- }
-
- bool disabled_w_all (disabled_w.find ("all") != disabled_w.end ());
-
- if (common_ops.morph_anonymous () &&
- !disabled_w_all &&
- disabled_w.find ("D001") == disabled_w.end ())
- {
- e << "warning D001: the --morph-anonymous option is on by default and "
- << "no longer required"
- << endl;
- }
-
- // Collect all the files to compile in a vector.
- //
- NarrowStrings files;
-
- while (args.more ())
- files.push_back (args.next ());
-
- if (files.empty ())
- {
- e << "error: no input file specified" << endl;
- return 1;
- }
-
- bool fpt (common_ops.file_per_type ());
-
- if (cmd == "cxx-tree" || cmd == "cxx-parser")
- {
- bool gen (common_ops.generate_xml_schema ());
- bool use (common_ops.extern_xml_schema ());
-
- // Things get complicated when we are compiling several schemas at
- // once (non-file-per-type mode) and use the --generate-xml-schema/
- // --extern-xml-schema options. The only way we can figure out which
- // file corresponds to XML Schema is if the --extern-xml-schema option
- // is also present. So we are going to require it for this case,
- // especially since it generally makes sense.
- //
- if (!fpt)
- {
- if (files.size () > 1 && gen && !use)
- {
- e << "error: --extern-xml-schema is required when compiling more "
- << "than one schema and --generate-xml-schema is specified"
- << endl;
-
- return 1;
- }
-
- if (files.size () == 1 && gen && use)
- {
- e << "error: --generate-xml-schema and --extern-xml-schema are "
- << "mutually exclusive when compiling a single schema" << endl;
-
- return 1;
- }
- }
- else
- {
- // The --file-per-type and --generate-xml-schema options are
- // incompatible. It also makes sense to use --file-per-type
- // and --extern-xml-schema.
- //
- if (gen)
- {
- e << "error: --file-per-type and --generate-xml-schema are "
- << "incompatible" << endl
- << "info: use --generate-xml-schema in a separate invocation "
- << "of the compiler" << endl;
-
- return 1;
- }
-
- if (!use &&
- !disabled_w_all && disabled_w.find ("D002") == disabled_w.end ())
- {
- e << "warning D002: --extern-xml-schema is recommended when "
- << "--file-per-type is specified to reduce generated code size"
- << endl;
- }
- }
- }
-
- //
- //
- FileList file_list;
- AutoUnlinks unlinks;
- size_t sloc (0);
-
- LocationTranslator loc_translator (
- common_ops.location_map (),
- common_ops.location_regex (),
- common_ops.location_regex_trace ());
-
- AnonymousNameTranslator anon_translator (
- common_ops.anonymous_regex (),
- common_ops.anonymous_regex_trace ());
-
- // Load custom string literals, if any.
- //
- CXX::StringLiteralMap string_literal_map;
-
- if (NarrowString file = common_ops.custom_literals ())
- {
- XercesInitializer xerces_init;
-
- if (!CXX::read_literal_map (file, string_literal_map))
- {
- // Diagnostics has already been issued.
- //
- return 1;
- }
- }
-
- if (!fpt)
- {
- // File-per-schema compilation mode.
- //
-
- for (size_t i (0); i < files.size (); ++i)
- {
- // Parse schema.
- //
- SemanticGraph::Path tu;
-
- try
- {
- tu = SemanticGraph::Path (files[i]);
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- e << "error: '" << files[i].c_str () << "' is not a valid "
- << "filesystem path" << endl;
-
- return 1;
- }
-
- XSDFrontend::Parser parser (
- cmd != "cxx-tree",
- !common_ops.disable_multi_import (),
- !common_ops.disable_full_check (),
- loc_translator,
- disabled_w);
-
- auto_ptr<SemanticGraph::Schema> schema;
-
- if (cmd == "cxx-tree" || cmd == "cxx-parser")
- {
- // See if we are generating code for the XML Schema namespace.
- // We could be compiling several schemas at once in which case
- // handling of the --generate-xml-schema option gets tricky: we
- // will need to rely on the presence of the --extern-xml-schema
- // to tell us which (fake) schema file corresponds to XML Schema.
- //
- bool gen_xml_schema (common_ops.generate_xml_schema ());
-
- if (gen_xml_schema)
- {
- if (NarrowString name = common_ops.extern_xml_schema ())
- {
- if (tu.string () != name)
- gen_xml_schema = false;
- }
- }
-
- if (gen_xml_schema)
- schema = parser.xml_schema (tu);
- else
- schema = parser.parse (tu);
- }
- else
- schema = parser.parse (tu);
-
- // Morph anonymous types.
- //
- if (!common_ops.preserve_anonymous ())
- {
- try
- {
- Transformations::Anonymous trans (anon_translator);
- trans.transform (*schema, tu, true);
- }
- catch (Transformations::Anonymous::Failed const&)
- {
- return 1; // Diagnostic has already been issued.
- }
- }
-
- // Synthesize enumerations from unions.
- //
- if (cmd == "cxx-tree")
- {
- Transformations::EnumSynthesis trans;
- trans.transform (*schema, tu);
- }
-
- // Simplify the schema graph.
- //
- if (cmd == "cxx-parser")
- {
- Transformations::Simplifier trans;
- trans.transform (*schema, tu);
- }
-
- // Try to rearrange definitions so that there is no forward
- // inheritance.
- //
- try
- {
- Processing::Inheritance::Processor proc;
- proc.process (*schema, tu);
- }
- catch (Processing::Inheritance::Processor::Failed const&)
- {
- return 1; // Diagnostic has already been issued.
- }
-
- // Normalize and annotate complex content restrictions.
- //
- if (cmd == "cxx-parser")
- {
- try
- {
- Transformations::Restriction trans;
- trans.transform (*schema, tu);
- }
- catch (Transformations::Restriction::Failed const&)
- {
- return 1; // Diagnostic has already been issued.
- }
- }
-
- // Calculate cardinality.
- //
- {
- Processing::Cardinality::Processor proc;
- proc.process (*schema, tu);
- }
-
- // Generate mapping.
- //
- if (cmd == "cxx-tree")
- {
- try
- {
- sloc += CXX::Tree::Generator::generate (
- *tree_ops,
- *schema,
- tu,
- false,
- string_literal_map,
- disabled_w,
- file_list,
- unlinks);
- }
- catch (CXX::Tree::Generator::Failed const&)
- {
- // Diagnostic has already been issued.
- //
- return 1;
- }
- }
- else if (cmd == "cxx-parser")
- {
- try
- {
- sloc += CXX::Parser::Generator::generate (
- *parser_ops,
- *schema,
- tu,
- false,
- string_literal_map,
- true,
- disabled_w,
- file_list,
- unlinks);
- }
- catch (CXX::Parser::Generator::Failed const&)
- {
- // Diagnostic has already been issued.
- //
- return 1;
- }
- }
- }
- }
- else
- {
- // File-per-type compilation mode.
- //
- SemanticGraph::Paths paths;
-
- for (size_t i (0); i < files.size (); ++i)
- {
- try
- {
- paths.push_back (SemanticGraph::Path (files[i]));
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- e << "error: '" << files[i].c_str () << "' is not a valid "
- << "filesystem path" << endl;
-
- return 1;
- }
- }
-
- if (cmd == "cxx-parser" &&
- paths.size () > 1 &&
- parser_ops->generate_test_driver ())
- {
- e << "info: generating test driver for the first schema only: '" <<
- paths[0] << "'" << endl;
- }
-
- XSDFrontend::Parser parser (
- cmd != "cxx-tree",
- !common_ops.disable_multi_import (),
- !common_ops.disable_full_check (),
- loc_translator,
- disabled_w);
-
- auto_ptr<SemanticGraph::Schema> schema (parser.parse (paths));
-
- // Morph anonymous types.
- //
- if (!common_ops.preserve_anonymous ())
- {
- try
- {
- Transformations::Anonymous trans (anon_translator);
- trans.transform (*schema, SemanticGraph::Path (), false);
- }
- catch (Transformations::Anonymous::Failed const&)
- {
- return 1; // Diagnostic has already been issued.
- }
- }
-
- // Synthesize enumerations from unions.
- //
- if (cmd == "cxx-tree")
- {
- Transformations::EnumSynthesis trans;
- trans.transform (*schema, SemanticGraph::Path ());
- }
-
- // Simplify the schema graph.
- //
- if (cmd == "cxx-parser")
- {
- Transformations::Simplifier trans;
- trans.transform (*schema, SemanticGraph::Path ());
- }
-
- // Normalize and annotate complex content restrictions.
- //
- if (cmd == "cxx-parser")
- {
- try
- {
- Transformations::Restriction trans;
- trans.transform (*schema, SemanticGraph::Path ());
- }
- catch (Transformations::Restriction::Failed const&)
- {
- return 1; // Diagnostic has already been issued.
- }
- }
-
- // Calculate cardinality.
- //
- {
- Processing::Cardinality::Processor proc;
- proc.process (*schema, SemanticGraph::Path ());
- }
-
- // Rearrange the graph so that each type is in a seperate
- // schema file.
- //
- typedef vector<SemanticGraph::Schema*> Schemas;
-
- SchemaPerTypeTranslator type_translator (
- common_ops.type_file_regex (),
- common_ops.type_file_regex_trace (),
- common_ops.schema_file_regex (),
- common_ops.schema_file_regex_trace ());
-
- Transformations::SchemaPerType trans (
- type_translator,
- common_ops.fat_type_file ());
-
- Schemas schemas (trans.transform (*schema));
-
- // Generate code.
- //
- for (Schemas::iterator b (schemas.begin ()), i (b), e (schemas.end ());
- i != e; ++i)
- {
- SemanticGraph::Schema& s (**i);
- SemanticGraph::Path path (
- s.context ().count ("renamed")
- ? s.context ().get<SemanticGraph::Path> ("renamed")
- : s.used_begin ()->path ());
-
- if (cmd == "cxx-tree")
- {
- try
- {
- sloc += CXX::Tree::Generator::generate (
- *tree_ops,
- s,
- path,
- true,
- string_literal_map,
- disabled_w,
- file_list,
- unlinks);
- }
- catch (CXX::Tree::Generator::Failed const&)
- {
- // Diagnostic has already been issued.
- //
- return 1;
- }
- }
- else if (cmd == "cxx-parser")
- {
- try
- {
- // Only generate driver for the first schema.
- //
- sloc += CXX::Parser::Generator::generate (
- *parser_ops,
- s,
- path,
- true,
- string_literal_map,
- i == b,
- disabled_w,
- file_list,
- unlinks);
- }
- catch (CXX::Parser::Generator::Failed const&)
- {
- // Diagnostic has already been issued.
- //
- return 1;
- }
- }
- }
- }
-
- // See if we need to produce the file list.
- //
- if (NarrowString fl = common_ops.file_list ())
- {
- typedef std::ofstream OutputFileStream;
-
- try
- {
- OutputFileStream ofs;
- SemanticGraph::Path path (fl);
-
- ofs.open (path.string ().c_str (), ios_base::out);
-
- if (!ofs.is_open ())
- {
- wcerr << path << ": error: unable to open in write mode" << endl;
- return 1;
- }
-
- NarrowString d (common_ops.file_list_delim ());
- expand_nl (d);
-
- if (NarrowString p = common_ops.file_list_prologue ())
- {
- expand_nl (p);
- ofs << p;
- }
-
- for (FileList::iterator i (file_list.begin ()), e (file_list.end ());
- i != e;)
- {
- ofs << *i;
-
- if (++i != e)
- ofs << d;
- }
-
- if (NarrowString e = common_ops.file_list_epilogue ())
- {
- expand_nl (e);
- ofs << e;
- }
- }
- catch (SemanticGraph::InvalidPath const&)
- {
- wcerr << "error: '" << fl.c_str () << "' is not a valid "
- << "filesystem path" << endl;
- return 1;
- }
- }
-
- if (common_ops.show_sloc ())
- e << "total: " << sloc << endl;
-
- if (size_t sloc_limit = common_ops.sloc_limit ())
- {
- if (sloc_limit < sloc)
- {
- e << "error: SLOC limit of " << sloc_limit
- << " lines has been exceeded" << endl;
-
- return 1;
- }
- }
-
- unlinks.cancel ();
-
- return 0;
- }
- catch (LocationTranslator::Failed const&)
- {
- // Diagnostic has already been issued.
- }
- catch (AnonymousNameTranslator::Failed const&)
- {
- // Diagnostic has already been issued.
- }
- catch (SchemaPerTypeTranslator::Failed const&)
- {
- // Diagnostic has already been issued.
- }
- catch (Transformations::SchemaPerType::Failed const&)
- {
- // Diagnostic has already been issued.
- }
- catch (XSDFrontend::InvalidSchema const&)
- {
- // Diagnostic has already been issued.
- }
- catch (cli::exception const& ex)
- {
- wcerr << ex << endl;
- wcerr << "try '" << argv[0] << " help' for usage information" << endl;
- }
-
- return 1;
-}
-
-// LocationTranslator
-//
-
-LocationTranslator::
-LocationTranslator (NarrowStrings const& map,
- NarrowStrings const& regex,
- bool trace)
- : trace_ (trace)
-{
- // Map.
- //
- for (NarrowStrings::const_iterator i (map.begin ()); i != map.end (); ++i)
- {
- // Split the string in two parts at the last '='.
- //
- size_t pos (i->rfind ('='));
-
- if (pos == NarrowString::npos)
- {
- wcerr << "error: invalid location map: '" << i->c_str () <<
- "': delimiter ('=') not found" << endl;
-
- throw Failed ();
- }
-
- map_[NarrowString (*i, 0, pos)] = NarrowString (*i, pos + 1);
- }
-
- // Regex.
- //
- for (NarrowStrings::const_iterator i (regex.begin ()); i != regex.end (); ++i)
- {
- try
- {
- regex_.push_back (Regex (*i));
- }
- catch (RegexFormat const& e)
- {
- wcerr << "error: invalid location regex: '" <<
- e.regex ().c_str () << "': " <<
- e.description ().c_str () << endl;
-
- throw Failed ();
- }
- }
-}
-
-NarrowString LocationTranslator::
-translate (NarrowString const& l)
-{
- // First check the cache.
- //
- Cache::const_iterator ci (cache_.find (l));
-
- if (ci != cache_.end ())
- return ci->second;
-
- // Then check the direct map.
- //
- Map::const_iterator mi (map_.find (l));
-
- if (mi != map_.end ())
- {
- cache_[l] = mi->second;
- return mi->second;
- }
-
- // Finally try regex.
- //
- if (trace_)
- wcerr << "location: '" << l.c_str () << "'" << endl;
-
- for (RegexVector::reverse_iterator i (regex_.rbegin ());
- i != regex_.rend (); ++i)
- {
- if (trace_)
- wcerr << "try: '" << i->regex ().str ().c_str () << "' : ";
-
- if (i->match (l))
- {
- NarrowString r (i->replace (l));
-
- if (trace_)
- wcerr << "'" << r.c_str () << "' : +" << endl;
-
- cache_[l] = r;
- return r;
- }
-
- if (trace_)
- wcerr << '-' << endl;
- }
-
- // No match - return the original location.
- //
- cache_[l] = l;
- return l;
-}
-
-// AnonymousNameTranslator
-//
-
-AnonymousNameTranslator::
-AnonymousNameTranslator (NarrowStrings const& regex, bool trace)
- : trace_ (trace)
-{
- for (NarrowStrings::const_iterator i (regex.begin ()); i != regex.end (); ++i)
- {
- try
- {
- regex_.push_back (Regex (String (*i)));
- }
- catch (RegexFormat const& e)
- {
- wcerr << "error: invalid anonymous type regex: '" <<
- e.regex () << "': " << e.description ().c_str () << endl;
-
- throw Failed ();
- }
- }
-}
-
-String AnonymousNameTranslator::
-translate (String const& file,
- String const& ns,
- String const& name,
- String const& xpath)
-{
- String s (file + L' ' + ns + L' ' + xpath);
-
- if (trace_)
- wcerr << "anonymous type: '" << s << "'" << endl;
-
- for (RegexVector::reverse_iterator i (regex_.rbegin ());
- i != regex_.rend (); ++i)
- {
- if (trace_)
- wcerr << "try: '" << i->regex () << "' : ";
-
- if (i->match (s))
- {
- String r (i->replace (s));
-
- if (trace_)
- wcerr << "'" << r << "' : +" << endl;
-
- return r;
- }
-
- if (trace_)
- wcerr << '-' << endl;
- }
-
- // No match - return the name.
- //
- return name;
-}
-
-// SchemaPerTypeTranslator
-//
-
-SchemaPerTypeTranslator::
-SchemaPerTypeTranslator (NarrowStrings const& type_regex,
- bool type_trace,
- NarrowStrings const& schema_regex,
- bool schema_trace)
- : type_trace_ (type_trace), schema_trace_ (schema_trace)
-{
- for (NarrowStrings::const_iterator i (type_regex.begin ());
- i != type_regex.end (); ++i)
- {
- try
- {
- type_regex_.push_back (TypeRegex (String (*i)));
- }
- catch (TypeRegexFormat const& e)
- {
- wcerr << "error: invalid type file regex: '" <<
- e.regex () << "': " << e.description ().c_str () << endl;
-
- throw Failed ();
- }
- }
-
- for (NarrowStrings::const_iterator i (schema_regex.begin ());
- i != schema_regex.end (); ++i)
- {
- try
- {
- schema_regex_.push_back (SchemaRegex (*i));
- }
- catch (SchemaRegexFormat const& e)
- {
- wcerr << "error: invalid type file regex: '" <<
- e.regex ().c_str () << "': " << e.description ().c_str () << endl;
-
- throw Failed ();
- }
- }
-}
-
-String SchemaPerTypeTranslator::
-translate_type (String const& ns, String const& name)
-{
- String s (ns + L' ' + name);
-
- if (type_trace_)
- wcerr << "type: '" << s << "'" << endl;
-
- for (TypeRegexVector::reverse_iterator i (type_regex_.rbegin ());
- i != type_regex_.rend (); ++i)
- {
- if (type_trace_)
- wcerr << "try: '" << i->regex () << "' : ";
-
- if (i->match (s))
- {
- String r (i->replace (s));
-
- if (type_trace_)
- wcerr << "'" << r << "' : +" << endl;
-
- return r;
- }
-
- if (type_trace_)
- wcerr << '-' << endl;
- }
-
- // No match - return empty string.
- //
- return L"";
-}
-
-NarrowString SchemaPerTypeTranslator::
-translate_schema (NarrowString const& file)
-{
- if (schema_trace_)
- wcerr << "schema: '" << file.c_str () << "'" << endl;
-
- for (SchemaRegexVector::reverse_iterator i (schema_regex_.rbegin ());
- i != schema_regex_.rend (); ++i)
- {
- if (schema_trace_)
- wcerr << "try: '" << i->regex ().str ().c_str () << "' : ";
-
- if (i->match (file))
- {
- NarrowString r (i->replace (file));
-
- if (schema_trace_)
- wcerr << "'" << r.c_str () << "' : +" << endl;
-
- return r;
- }
-
- if (schema_trace_)
- wcerr << '-' << endl;
- }
-
- // No match - return empty string.
- //
- return "";
-}
-
-//
-//
-void
-expand_nl (NarrowString& s)
-{
- for (size_t i (0); i < s.size ();)
- {
- if (s[i] == '\\' && (i + 1) < s.size () && s[i + 1] == 'n')
- {
- NarrowString tmp (s, 0, i);
- tmp += '\n';
- tmp.append (s.c_str () + i + 2);
- s = tmp;
- }
- else
- ++i;
- }
-}
diff --git a/xsd/xsd/xsd.hxx b/xsd/xsd/xsd.hxx
deleted file mode 100644
index 8b9d6fe..0000000
--- a/xsd/xsd/xsd.hxx
+++ /dev/null
@@ -1,25 +0,0 @@
-// file : xsd/xsd.hxx
-// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_HXX
-#define XSD_HXX
-
-#include <set>
-#include <vector>
-#include <cstdio> // std::remove
-
-#include <cutl/shared-ptr.hxx>
-#include <cutl/fs/auto-remove.hxx>
-
-#include <xsd-frontend/semantic-graph/elements.hxx> // Path
-
-#include <types.hxx>
-
-typedef std::set<NarrowString> WarningSet;
-typedef std::vector<NarrowString> FileList;
-
-typedef cutl::fs::auto_remove AutoUnlink;
-typedef cutl::fs::auto_removes AutoUnlinks;
-
-#endif // XSD_HXX